pax_global_header00006660000000000000000000000064147476704750014537gustar00rootroot0000000000000052 comment=1331e880bc7e2efc830acb4084bacce692aa9032 hardinfo2-hardinfo2-1331e88/000077500000000000000000000000001474767047500155435ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/.github/000077500000000000000000000000001474767047500171035ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/.github/workflows/000077500000000000000000000000001474767047500211405ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/.github/workflows/codeql.yml000066400000000000000000000072411474767047500231360ustar00rootroot00000000000000# For most projects, this workflow file will not need changing; you simply need # to commit it to your repository. # # You may wish to alter this file to override the set of languages analyzed, # or to provide custom queries or build logic. # # ******** NOTE ******** # We have attempted to detect the languages in your repository. Please check # the `language` matrix defined below to confirm you have the correct set of # supported CodeQL languages. # name: "CodeQL" on: push: branches: [ "master" ] pull_request: branches: [ "master" ] schedule: - cron: '23 9 * * 4' jobs: analyze: name: Analyze # Runner size impacts CodeQL analysis time. To learn more, please see: # - https://gh.io/recommended-hardware-resources-for-running-codeql # - https://gh.io/supported-runners-and-hardware-resources # - https://gh.io/using-larger-runners # Consider using larger runners for possible analysis time improvements. runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }} timeout-minutes: ${{ (matrix.language == 'swift' && 120) || 360 }} permissions: # required for all workflows security-events: write # only required for workflows in private repositories # actions: read # contents: read strategy: fail-fast: false matrix: language: [ 'c-cpp' ] # CodeQL supports [ 'c-cpp', 'csharp', 'go', 'java-kotlin', 'javascript-typescript', 'python', 'ruby', 'swift' ] # Use only 'java-kotlin' to analyze code written in Java, Kotlin or both # Use only 'javascript-typescript' to analyze code written in JavaScript, TypeScript or both # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support steps: - name: Checkout repository uses: actions/checkout@v4 - name: Install system dependencies run: | sudo apt update sudo apt install -y libjson-glib-dev zlib1g-dev libsoup2.4-dev libsoup-3.0-dev libgtk-3-dev libglib2.0-dev libqt5opengl5-dev qtbase5-dev gettext # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL uses: github/codeql-action/init@v3 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. # Prefix the list here with "+" to use these queries and those in the config file. # For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs # queries: security-extended,security-and-quality # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild uses: github/codeql-action/autobuild@v3 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun # If the Autobuild fails above, remove it and uncomment the following three lines. # modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance. # - run: | # echo "Run, Build Application using script" # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v3 with: category: "/language:${{matrix.language}}" hardinfo2-hardinfo2-1331e88/.github/workflows/test.yml000066400000000000000000000035521474767047500226470ustar00rootroot00000000000000# This starter workflow is for a CMake project running on a single platform. There is a different starter workflow if you need cross-platform coverage. # See: https://github.com/actions/starter-workflows/blob/main/ci/cmake-multi-platform.yml name: Build on: push: branches: [ "master" ] pull_request: branches: [ "master" ] env: # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) BUILD_TYPE: Release jobs: build: # The CMake configure and build commands are platform agnostic and should work equally well on Windows or Mac. # You can convert this to a matrix build if you need cross-platform coverage. # See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Install system dependencies run: | sudo apt update sudo apt install -y libjson-glib-dev zlib1g-dev libsoup2.4-dev libsoup-3.0-dev libgtk-3-dev libglib2.0-dev libqt5opengl5-dev qtbase5-dev gettext - name: Configure CMake # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} - name: Build # Build your program with the given configuration run: cmake --build ${{github.workspace}}/build #--config ${{env.BUILD_TYPE}} # - name: Test # working-directory: ${{github.workspace}}/build # # Execute tests defined by the CMake configuration. # # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail # run: ctest -C ${{env.BUILD_TYPE}} hardinfo2-hardinfo2-1331e88/.gitignore000066400000000000000000000002201474767047500175250ustar00rootroot00000000000000Makefile config.h *.so *.o *~ arch/this build/ build-*/ test/build-* po/*.old po/*.mo deps/qgears2/moc_qgears.cpp deps/qgears2/moc_qglgears.cpp hardinfo2-hardinfo2-1331e88/.gitmodules000066400000000000000000000000001474767047500177060ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/CMakeLists.txt000066400000000000000000000713151474767047500203120ustar00rootroot00000000000000#hardinfo2 supports CMake version 3.0.2-> if(${CMAKE_VERSION} VERSION_GREATER "3.30.99") cmake_minimum_required(VERSION 3.10.0) cmake_policy(VERSION 3.10.0) SET(CMAKE_EXECUTABLE_ENABLE_EXPORTS 1) else() if(${CMAKE_VERSION} VERSION_GREATER "3.26.99") cmake_minimum_required(VERSION 3.5.0) cmake_policy(VERSION 3.5.0) SET(CMAKE_EXECUTABLE_ENABLE_EXPORTS 1) else() cmake_minimum_required(VERSION 3.0.2) cmake_policy(VERSION 3.0.2) endif() endif() project(hardinfo2) set(HARDINFO2_VERSION "2.2.7") option(HARDINFO2_SERVICE "Build with service support" 1) option(HARDINFO2_GTK3 "Build for GTK3 (0/off for GTK2)" 1) option(HARDINFO2_LIBSOUP3 "Build for libsoup-3.0 (0/off for libsoup-2.4)" 1) option(HARDINFO2_QT5 "Build opengl benchmark for QT5 " 1) SET(CMAKE_INSTALL_PREFIX "/usr") SET(HARDINFO2_SYSTEMV 0) SET(HARDINFO2_RUNIT 0) file(READ "${CMAKE_CURRENT_SOURCE_DIR}/tools/org.hardinfo2.hardinfo2.metainfo.xml" METAINFO_CONTENT) SET(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") include(GNUInstallDirs) if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") set(HARDINFO2_OS "linux") else() message(FATAL_ERROR "Unsupported operating system: ${CMAKE_SYSTEM_NAME}") endif() if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "i[3-6]86") set(HARDINFO2_ARCH "x86") elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "x86_64") set(HARDINFO2_ARCH "x86") elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "(ppc|ppc32|ppc64|ppc64le)") set(HARDINFO2_ARCH "ppc") elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "(mips|mips64el)") set(HARDINFO2_ARCH "mips") elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "parisc.*") set(HARDINFO2_ARCH "parisc") elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "sparc{32,64}") set(HARDINFO2_ARCH "sparc") elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm.*") set(HARDINFO2_ARCH "arm") elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch64.*") set(HARDINFO2_ARCH "arm") elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "ia64") set(HARDINFO2_ARCH "ia64") elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "(loongarch64|loong64)") set(HARDINFO2_ARCH "loongarch64") elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "alpha") set(HARDINFO2_ARCH "alpha") elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "s390.*") set(HARDINFO2_ARCH "s390") elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "m68k") set(HARDINFO2_ARCH "m68k") elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "sh[3-5]") set(HARDINFO2_ARCH "sh") elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "(riscv|riscv32|riscv64)") set(HARDINFO2_ARCH "riscv") elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "e2k") set(HARDINFO2_ARCH "e2k") else() message(FATAL_ERROR "Unsupported architecture: ${CMAKE_SYSTEM_PROCESSOR}") endif() add_definitions(-DLOCALEDIR="${CMAKE_INSTALL_FULL_LOCALEDIR}") message(STATUS "LOCALEDIR = ${CMAKE_INSTALL_FULL_LOCALEDIR}") message(STATUS "Building HardInfo2 for architecture: ${HARDINFO2_OS}-${HARDINFO2_ARCH}") #add_definitions("-std=gnu89") #add_definitions("-fanalyzer") add_definitions("-Wextra") add_definitions("-Wno-missing-field-initializers") add_definitions("-Wformat") add_definitions("-Wformat-security") set(PACKAGE_LIBSOUP2_MINVERSION 2.42) set(PACKAGE_LIBGLIB2_MINVERSION 2.24) SET(RPM_REQ "sysbench, udisks2, glx-utils, lm_sensors, xdg-utils, iperf3, fwupd, xrandr, vulkan-tools, gawk") SET(DEB_REQ "sysbench, udisks2, mesa-utils, lm-sensors, xdg-utils, iperf3, fwupd, x11-xserver-utils, vulkan-tools, gawk") #########################CPack PACKAGING SETUP############################### if(EXISTS "/etc/os-release") file(STRINGS /etc/os-release distro REGEX "^NAME=") file(STRINGS /etc/os-release disversion REGEX "^VERSION_ID=") file(STRINGS /etc/os-release disversioncode REGEX "^VERSION_CODENAME=") else() set(distro "Linux") set(disversion "99") set(disversioncode "Linux") endif() set(RPM 0) set(TGZ 0) string(REGEX REPLACE "NAME=" "" distro "${distro}") string(REGEX REPLACE "\"" "" distro "${distro}") string(REGEX REPLACE "/" "" distro "${distro}") string(REGEX REPLACE " " "" distro "${distro}") string(REGEX REPLACE "VERSION_ID=" "" disversion "${disversion}") string(COMPARE EQUAL "${disversion}" "" result) if(result) #sid/rawhide with no version - use project name message("-- Found no distro version - Using codename") string(REGEX REPLACE "VERSION_CODENAME=" "" disversion "99_${disversioncode}") endif() string(REGEX REPLACE "\"" "" disversion "${disversion}") string(REGEX REPLACE "/" "" disversion "${disversion}") string(REGEX REPLACE " " "" disversion "${disversion}") #RPM Distro's if(${distro} MATCHES "Alma*" OR ${distro} MATCHES "Rocky*" OR ${distro} MATCHES "Fedora*" OR ${distro} MATCHES "RedHat*" OR ${distro} MATCHES "CentOS*" OR ${distro} MATCHES "Oracle*" OR ${distro} MATCHES "openSUSE*" OR ${distro} MATCHES "SUSE*" OR ${distro} MATCHES "PCLinuxOS*" OR ${distro} MATCHES "Ultramarine*" OR ${distro} MATCHES "Nobara*" OR ${distro} MATCHES "OpenMandriva*") set(RPM 1) endif() #Arch Distro's (tgz) if(${distro} MATCHES "Arch*" OR ${distro} MATCHES "Endeavour*" OR ${distro} MATCHES "Garuda*" OR ${distro} MATCHES "Reborn*" OR ${distro} MATCHES "SystemRescue*" OR ${distro} MATCHES "Artix*" OR ${distro} MATCHES "Manjaro*") set(TGZ 1) endif() #Package architecture if(${RPM}) set(PACKAGE_DELIMITER "-") set(PACKAGE_ARCHITECTURE ".${CMAKE_SYSTEM_PROCESSOR}") else() set(PACKAGE_DELIMITER "_") set(PACKAGE_ARCHITECTURE "_${CMAKE_SYSTEM_PROCESSOR}") if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "x86_64") set(PACKAGE_ARCHITECTURE "_amd64") endif() endif() set(PACKAGE_DISTRO ${HARDINFO2_VERSION}-${distro}-${disversion}${CPACK_SYSTEM_NAME}) SET(CPACK_PACKAGE_VERSION ${HARDINFO2_VERSION}) #Put it together string(REPLACE " " "${PACKAGE_DELIMITER}" CPACK_PACKAGE_FILE_NAME "hardinfo2${PACKAGE_DELIMITER}${PACKAGE_DISTRO}${PACKAGE_ARCHITECTURE}") string(REPLACE " " "${PACKAGE_DELIMITER}" CPACK_SOURCE_PACKAGE_FILE_NAME "hardinfo2${PACKAGE_DELIMITER}${PACKAGE_DISTRO}${PACKAGE_ARCHITECTURE}") message("-- Found Package Version ${CPACK_PACKAGE_VERSION}") message("-- Found distro description ${distro}${disversion}") #flavour output set(HARDINFO2_OS ${distro}) #fedora ->35 if(${disversion} LESS 35.99) if(${distro} MATCHES "Fedora*") message("Fedora ->35 - LS24") set(HARDINFO2_LIBSOUP3 0) endif() endif() #centos/redhat/oracle ->9 if(${disversion} LESS 9.99) if(${distro} MATCHES "Red*" OR ${distro} MATCHES "CentOS*" OR ${distro} MATCHES "Oracle*" OR ${distro} MATCHES "Alma*" OR ${distro} MATCHES "Rocky*") message("Centos/Redhat/oracle/rocky/alma ->9 - LS24") set(HARDINFO2_LIBSOUP3 0) endif() endif() #centos/redhat/oracle/opensuse/suse ->8 if(${disversion} LESS 8.99) if(${distro} MATCHES "Red*" OR ${distro} MATCHES "CentOS*" OR ${distro} MATCHES "Oracle*" OR ${distro} MATCHES "openSUSE*" OR ${distro} MATCHES "Alma*" OR ${distro} MATCHES "Rocky*") message("Centos/Redhat/oracle/opensuse/suse/rocky/alma ->8 - Old Appstream metainfo") string(REPLACE "https://github.com/hardinfo2/hardinfo2/discussions" "" METAINFO_CONTENT "${METAINFO_CONTENT}" ) endif() endif() #centos/redhat/oracle 10 if((${disversion} GREATER_EQUAL 10) AND (${disversion} LESS 10.99)) if(${distro} MATCHES "Red*" OR ${distro} MATCHES "CentOS*" OR ${distro} MATCHES "Oracle*" OR ${distro} MATCHES "Alma*" OR ${distro} MATCHES "Rocky*") message("Centos/Redhat/oracle/rocky/alma 10 - Missing xrandr+sysbench!!!") SET(RPM_REQ "udisks2, glx-utils, lm_sensors, xdg-utils, iperf3, fwupd, vulkan-tools, gawk") #miss sysbench, xrandr endif() endif() #centos/redhat/oracle/opensuse/suse 7 if(${disversion} LESS 7.99) if((${distro} MATCHES "Red*" OR ${distro} MATCHES "CentOS*" OR ${distro} MATCHES "Oracle*" OR ${distro} MATCHES "openSUSE*" OR ${distro} MATCHES "SUSE*")) SET(RPM_REQ "sysbench, udisks2, glx-utils, lm_sensors, xdg-utils, iperf3, fwupd, xrandr, gawk") #miss vulkan-tools endif() endif() #centos/redhat/oracle/opensuse/suse 6 if(${disversion} LESS 6.99) if((${distro} MATCHES "Red*" OR ${distro} MATCHES "CentOS*" OR ${distro} MATCHES "Oracle*" OR ${distro} MATCHES "openSUSE*" OR ${distro} MATCHES "SUSE*")) message("RPM EL6 - Too old to have run directory - creating at install") #create run directory owned by root install(DIRECTORY DESTINATION /run) message("RPM EL6 - GTK2 - deprecated - support will end at any time") set(HARDINFO2_GTK3 0) message("RPM EL6 - LS24 - deprecated version 2.34.3 - but ok") set(PACKAGE_LIBSOUP2_MINVERSION 2.34.3) set(HARDINFO2_SYSTEMV 1) message("RPM EL6 - no QT5 - Disabling opengl benchmarks") set(HARDINFO2_QT5 0) SET(RPM_REQ "sysbench, glx-utils, lm_sensors, xdg-utils, xrandr, gawk") #miss vulkan-tools, udisks2, fwupd, iperf3 endif() endif() #opensuse tumbeweed if(${disversion} GREATER 20000101) if(${distro} MATCHES "openSUSE*") SET(RPM_REQ "sysbench, udisks2, xdg-utils, fwupd, xrandr,vulkan-tools, Mesa-demo-x, iperf, sensors, gawk") endif() endif() #Fedora 23 if(${distro}${disversion} MATCHES "Fedora23") message("FC23 - no QT5 - Disabling opengl benchmarks") set(HARDINFO2_QT5 0) SET(RPM_REQ "sysbench, udisks2, glx-utils, lm_sensors, xdg-utils, iperf3, fwupd, xrandr, gawk") #miss vulkan-tools message("Fedora 23 - Too Old for Appstream metainfo") string(REPLACE "" "" METAINFO_CONTENT "${METAINFO_CONTENT}" ) string(REPLACE "https://github.com/hardinfo2/hardinfo2/discussions" "" METAINFO_CONTENT "${METAINFO_CONTENT}" ) string(REPLACE "https://github.com/hardinfo2/hardinfo2/discussions" "" METAINFO_CONTENT "${METAINFO_CONTENT}" ) string(REPLACE "https://github.com/hardinfo2/hardinfo2/tree/master/po" "" METAINFO_CONTENT "${METAINFO_CONTENT}" ) endif() #debian 7 if(${distro}${disversion} MATCHES "DebianGNULinux7") message("DEB 7 - GTK2 to avoid c11 for ubergraph - deprecated - support will end at any time") message("DEB 7 - LS24 - deprecated version 2.34.3 - but ok") message("DEB 7 - no QT5 - Disabling opengl benchmarks") set(HARDINFO2_GTK3 0) set(PACKAGE_LIBSOUP2_MINVERSION 2.34.3) set(HARDINFO2_SYSTEMV 1) set(HARDINFO2_QT5 0) SET(DEB_REQ "sysbench, mesa-utils, lm-sensors, xdg-utils, x11-xserver-utils, libsigsegv2, gawk") #miss vulkan-tools,fwupd, udisks2, iperf3 +libsigsegv2 for gawk endif() #debian 8 if(${distro}${disversion} MATCHES "DebianGNULinux8") message("DEB 8 - GTK3 version 3.14.5 is low - Themes disabled") message("DEB 8 - no QT5 - Disabling opengl benchmarks") set(HARDINFO2_QT5 0) SET(DEB_REQ "sysbench, udisks2, mesa-utils, lm-sensors, xdg-utils, iperf3, x11-xserver-utils, libsigsegv2, gawk") #miss vulkan-tools,fwupd +libsigsegv2 for gawk endif() #debian 9 if(${distro}${disversion} MATCHES "DebianGNULinux99") else() if(${distro}${disversion} MATCHES "DebianGNULinux9") message("DEB 9 - QT5 too low - Disabling opengl benchmarks") set(HARDINFO2_QT5 0) SET(DEB_REQ "sysbench, udisks2, mesa-utils, lm-sensors, xdg-utils, iperf3, fwupd, x11-xserver-utils, gawk") #miss vulkan-tools endif() endif() #debian 10 if(${distro}${disversion} MATCHES "DebianGNULinux10") SET(DEB_REQ "udisks2, mesa-utils, lm-sensors, xdg-utils, iperf3, fwupd, x11-xserver-utils, vulkan-tools, gawk") #miss sysbench endif() #debian ->11 if(${disversion} LESS 11.99) if(${distro} MATCHES "DebianGNULinux") message("DEB ->11 - LS24") set(HARDINFO2_LIBSOUP3 0) endif() if(${distro} MATCHES "RaspbianGNULinux") message("DEB ->11 - LS24") set(HARDINFO2_LIBSOUP3 0) endif() endif() #pureos ->10 (debian 11 or less) if(${disversion} LESS 10.99) if(${distro} MATCHES "PureOS") message("PureOS ->10 - LS24") set(HARDINFO2_LIBSOUP3 0) endif() endif() #ubuntu 16 if(${distro}${disversion} MATCHES "Ubuntu16") message("Ubuntu 16 - no QT5 - Disabling opengl benchmarks") set(HARDINFO2_QT5 0) SET(DEB_REQ "sysbench, udisks2, mesa-utils, lm-sensors, xdg-utils, iperf3, fwupd, x11-xserver-utils, gawk") #miss vulkan-tools message("ubuntu 16 - Old Appstream metainfo") string(REPLACE "https://github.com/hardinfo2/hardinfo2/discussions" "" METAINFO_CONTENT "${METAINFO_CONTENT}" ) string(REPLACE "https://github.com/hardinfo2/hardinfo2/tree/master/po" "" METAINFO_CONTENT "${METAINFO_CONTENT}" ) endif() #ubuntu 18 if(${distro}${disversion} MATCHES "Ubuntu18") SET(DEB_REQ "sysbench, udisks2, mesa-utils, lm-sensors, xdg-utils, iperf3, fwupd, x11-xserver-utils, gawk") #miss vulkan-tools message("ubuntu 18 - Old Appstream metainfo") string(REPLACE "https://github.com/hardinfo2/hardinfo2/discussions" "" METAINFO_CONTENT "${METAINFO_CONTENT}" ) endif() #ubuntu ->20.xx if(${disversion} LESS 20.99) if(${distro} MATCHES "Ubuntu") message("Ubuntu ->20.xx - LS24") set(HARDINFO2_LIBSOUP3 0) endif() endif() #slackware if(${distro} MATCHES "Slackware") message("Slackware - LS24") set(HARDINFO2_LIBSOUP3 0) endif() #OpenMandriva if(${distro} MATCHES "OpenMandriva") SET(RPM_REQ "udisks2, sysbench, fwupd, lm_sensors, xdg-utils, xrandr, vulkan-tools, glxinfo, iperf, gawk") endif() #PCLinuxOS if(${distro} MATCHES "PCLinux") SET(RPM_REQ "udisks2, lm_sensors, xdg-utils, xrandr, vulkan-tools, glxinfo, iperf, gawk") #miss sysbench,fwupd set(HARDINFO2_SYSTEMV 1) endif() #Devuan if(${distro} MATCHES "Devuan") set(HARDINFO2_SYSTEMV 1) endif() #MX if(${distro} MATCHES "DebianGNULinux") if(EXISTS "/etc/initrd_release") file(STRINGS /etc/initrd_release mxdistro REGEX "^NAME=") if(${mxdistro} MATCHES "MX") message("-- Found MX") set(HARDINFO2_SYSTEMV 1) set(distro "MXLinux") set(HARDINFO2_OS ${distro}) endif() endif() endif() #Void if(${distro} MATCHES "Void") set(HARDINFO2_RUNIT 1) endif() if(${distro} MATCHES "Alpine") set(HARDINFO2_SYSTEMV 1) endif() if(${distro} MATCHES "Puppy") set(HARDINFO2_SYSTEMV 1) endif() if(${distro} MATCHES "Artix") set(HARDINFO2_SYSTEMV 1) endif() #RiscV if(${HARDINFO2_ARCH} MATCHES "riscv") SET(DEB_REQ "udisks2, mesa-utils, lm-sensors, xdg-utils, iperf3, fwupd, x11-xserver-utils, vulkan-tools, gawk") #miss sysbench endif() #E2K - was probably code error in proxy libsoup3 handling #if(${HARDINFO2_ARCH} MATCHES "e2k") # message("Arch E2K - Using too old GCC for libsoup3 - LS24") # set(HARDINFO2_LIBSOUP3 0) #endif() #WSL 1/2 if(EXISTS "/bin/wslinfo") message("WSL Detected") endif() #Fedora 39 - bug with man pages - upgrade cmake to 3.28.x ################################################################################ if(${CMAKE_BUILD_TYPE} MATCHES [Dd]ebug) set(HARDINFO2_DEBUG 1) if(${distro}${disversion} MATCHES "DebianGNULinux7") else() set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address") endif() endif() add_subdirectory(po) if(HARDINFO2_QT5) add_subdirectory(deps/qgears2) endif() include(FindPkgConfig) if (HARDINFO2_GTK3) message(STATUS "Building for GTK3") pkg_check_modules(GTK REQUIRED gtk+-3.0>=3.0 cairo>=1.0 cairo-png>=1.0 gthread-2.0>=2.10 gmodule-export-2.0>=2.10) add_definitions(-DGTK_DISABLE_SINGLE_INCLUDES) else() message(STATUS "Building for GTK2 - (Deprecated - Please update your distro!!)") pkg_check_modules(GTK REQUIRED gtk+-2.0>=2.10 gthread-2.0>=2.10 gmodule-export-2.0>=2.10) endif() if (${HARDINFO2_LIBSOUP3}) pkg_check_modules(LIBSOUP REQUIRED libsoup-3.0>=3.00) else() pkg_check_modules(LIBSOUP REQUIRED libsoup-2.4>=${PACKAGE_LIBSOUP2_MINVERSION}) endif() pkg_check_modules(GLIB2 REQUIRED glib-2.0>=${PACKAGE_LIBGLIB2_MINVERSION}) pkg_check_modules(JSON_GLIB REQUIRED json-glib-1.0>=0.14.2) pkg_check_modules(X11 REQUIRED x11) include(FindZLIB REQUIRED) include_directories( ${CMAKE_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/includes ${CMAKE_SOURCE_DIR}/includes/${HARDINFO2_ARCH} ${CMAKE_SOURCE_DIR}/deps/uber-graph ${CMAKE_SOURCE_DIR}/deps/sysobj_early/include ${CMAKE_SOURCE_DIR}/deps/sysobj_early/gui ${CMAKE_BINARY_DIR} ${GTK_INCLUDE_DIRS} ${LIBSOUP_INCLUDE_DIRS} ${ZLIB_INCLUDE_DIRS} ${X11_INCLUDE_DIRS} ${JSON_GLIB_INCLUDE_DIRS} ) link_directories( ${GTK_LIBRARY_DIRS} ${LIBSOUP_LIBRARY_DIRS} ${X11_LIBRARY_DIRS} ${JSON_GLIB_LIBRARY_DIRS} ) set(HARDINFO2_MODULES computer devices benchmark network ) set(HARDINFO2_RESOURCES "data/benchmark.data" "data/benchmark.json" "data/blobs-update-version.json" "data/vendor.ids" "data/sdcard.ids" "data/usb.ids" "data/arm.ids" "data/edid.ids" "data/ieee_oui.ids" "data/pci.ids" "data/kernel-module-icons.json" ) set(HARDINFO2_MANPAGES "hardinfo2.1" ) set(MODULE_computer_SOURCES modules/computer.c modules/computer/alsa.c modules/computer/boots.c modules/computer/display.c modules/computer/environment.c modules/computer/filesystem.c modules/computer/languages.c modules/computer/loadavg.c modules/computer/memory.c modules/computer/memory_usage.c modules/computer/modules.c modules/computer/os.c modules/computer/uptime.c modules/computer/users.c modules/computer/groups.c ) set(MODULE_devices_SOURCES modules/devices.c modules/devices/${HARDINFO2_ARCH}/processor.c modules/devices/gpu.c modules/devices/monitors.c modules/devices/battery.c modules/devices/dmi.c modules/devices/dmi_memory.c modules/devices/firmware.c modules/devices/devicetree.c modules/devices/inputdevices.c modules/devices/spd-decode.c modules/devices/pci.c modules/devices/printers.c modules/devices/resources.c modules/devices/sensors.c modules/devices/storage.c modules/devices/usb.c ) set(MODULE_network_SOURCES modules/network.c modules/network/net.c modules/network/nfs.c modules/network/samba.c ) if(HARDINFO2_QT5) set(MODULE_benchmark_SOURCES modules/benchmark.c modules/benchmark/bench_util.c modules/benchmark/blowfish.c modules/benchmark/blowfish2.c modules/benchmark/cryptohash.c modules/benchmark/fbench.c modules/benchmark/fftbench.c modules/benchmark/fft.c modules/benchmark/fib.c modules/benchmark/md5.c modules/benchmark/nqueens.c modules/benchmark/raytrace.c modules/benchmark/sha1.c modules/benchmark/zlib.c modules/benchmark/sysbench.c modules/benchmark/iperf3.c modules/benchmark/opengl.c modules/benchmark/storage.c modules/benchmark/cachemem.c modules/benchmark/drawing.c modules/benchmark/guibench.c ) else() set(MODULE_benchmark_SOURCES modules/benchmark.c modules/benchmark/bench_util.c modules/benchmark/blowfish.c modules/benchmark/blowfish2.c modules/benchmark/cryptohash.c modules/benchmark/fbench.c modules/benchmark/fftbench.c modules/benchmark/fft.c modules/benchmark/fib.c modules/benchmark/md5.c modules/benchmark/nqueens.c modules/benchmark/raytrace.c modules/benchmark/sha1.c modules/benchmark/zlib.c modules/benchmark/sysbench.c modules/benchmark/iperf3.c modules/benchmark/storage.c modules/benchmark/cachemem.c modules/benchmark/drawing.c modules/benchmark/guibench.c ) endif() set_source_files_properties( modules/benchmark/blowfish.c modules/benchmark/fftbench.c modules/benchmark/md5.c modules/benchmark/sha1.c PROPERTIES COMPILE_FLAGS "-O0 -Wall -Wextra -Werror=implicit-function-declaration" ) set_source_files_properties( modules/devices/monitors.c modules/devices/dmi_memory.c hardinfo2/problem_marker.c hardinfo2/hinote_util.c PROPERTIES COMPILE_FLAGS "-std=c99 -Wall -Wextra -Wno-switch -Werror=implicit-function-declaration" ) foreach (_module ${HARDINFO2_MODULES}) add_library(${_module} MODULE ${MODULE_${_module}_SOURCES}) set_target_properties(${_module} PROPERTIES PREFIX "") set_target_properties(${_module} PROPERTIES COMPILE_FLAGS "-Wall -Wextra -Wno-unused-parameter -Wno-missing-braces -Wno-switch -Werror=implicit-function-declaration") target_link_libraries(${_module} ${JSON_GLIB_LIBRARIES}) endforeach() find_library(LIBSENSORS_LIBRARY NAMES libsensors.so) if (LIBSENSORS_LIBRARY) set(HAS_LIBSENSORS 1) target_link_libraries(devices ${LIBSENSORS_LIBRARY}) endif () add_library(sysobj_early STATIC deps/sysobj_early/src/gg_slist.c deps/sysobj_early/src/strstr_word.c deps/sysobj_early/src/auto_free.c deps/sysobj_early/src/util_ids.c deps/sysobj_early/src/util_sysobj.c deps/sysobj_early/src/appf.c deps/sysobj_early/src/nice_name.c deps/sysobj_early/gui/uri_handler.c deps/sysobj_early/src/util_edid.c deps/sysobj_early/src/format_early.c deps/sysobj_early/src/cpubits.c ) set_target_properties(sysobj_early PROPERTIES COMPILE_FLAGS "-std=c99 -Wall -Wextra -Wno-parentheses -Werror=implicit-function-declaration") target_link_libraries(sysobj_early m) if (HARDINFO2_GTK3) add_library(uber-graph STATIC deps/uber-graph/g-ring.c deps/uber-graph/uber-frame-source.c deps/uber-graph/uber-graph.c deps/uber-graph/uber-heat-map.c deps/uber-graph/uber-label.c deps/uber-graph/uber-line-graph.c deps/uber-graph/uber-range.c deps/uber-graph/uber-scale.c deps/uber-graph/uber-scatter.c deps/uber-graph/uber-timeout-interval.c deps/uber-graph/uber-window.c ) set_target_properties(uber-graph PROPERTIES COMPILE_FLAGS "-Wall -Wextra -Wno-deprecated-declarations -Wno-unused-parameter -Werror=implicit-function-declaration") endif() set_source_files_properties( hardinfo2/usb_util.c hardinfo2/pci_util.c hardinfo2/gpu_util.c hardinfo2/cpu_util.c hardinfo2/x_util.c hardinfo2/dt_util.c PROPERTIES COMPILE_FLAGS "-Wall -Wextra -Wno-parentheses -Werror=implicit-function-declaration" ) if (HARDINFO2_GTK3) add_executable(hardinfo2 hardinfo2/usb_util.c hardinfo2/pci_util.c hardinfo2/expr.c hardinfo2/hardinfo.c hardinfo2/socket.c hardinfo2/util.c hardinfo2/gg_key_file_parse_string_as_value.c hardinfo2/gg_strescape.c hardinfo2/problem_marker.c hardinfo2/hinote_util.c hardinfo2/vendor.c hardinfo2/info.c hardinfo2/cpu_util.c hardinfo2/dmi_util.c hardinfo2/dt_util.c hardinfo2/x_util.c hardinfo2/gpu_util.c hardinfo2/udisks2_util.c hardinfo2/storage_util.c shell/callbacks.c shell/iconcache.c shell/menu.c shell/report.c shell/shell.c shell/stock.c shell/syncmanager.c shell/loadgraph-uber.c ) target_link_libraries(hardinfo2 -Wl,-whole-archive sysobj_early -Wl,-no-whole-archive uber-graph ${GTK_LIBRARIES} ${LIBSOUP_LIBRARIES} m ${ZLIB_LIBRARIES} ${X11_LIBRARIES} ${JSON_GLIB_LIBRARIES} ) set_target_properties(hardinfo2 PROPERTIES COMPILE_FLAGS "-Wno-deprecated-declarations -Werror=implicit-function-declaration") else() add_executable(hardinfo2 hardinfo2/usb_util.c hardinfo2/pci_util.c hardinfo2/expr.c hardinfo2/hardinfo.c hardinfo2/socket.c hardinfo2/util.c hardinfo2/gg_key_file_parse_string_as_value.c hardinfo2/gg_strescape.c hardinfo2/problem_marker.c hardinfo2/hinote_util.c hardinfo2/vendor.c hardinfo2/info.c hardinfo2/cpu_util.c hardinfo2/dmi_util.c hardinfo2/dt_util.c hardinfo2/x_util.c hardinfo2/gpu_util.c hardinfo2/udisks2_util.c hardinfo2/storage_util.c shell/callbacks.c shell/iconcache.c shell/menu.c shell/report.c shell/shell.c shell/stock.c shell/syncmanager.c shell/loadgraph.c ) target_link_libraries(hardinfo2 -Wl,-whole-archive sysobj_early -Wl,-no-whole-archive ${GTK_LIBRARIES} ${LIBSOUP_LIBRARIES} m ${ZLIB_LIBRARIES} ${X11_LIBRARIES} ${JSON_GLIB_LIBRARIES} ) endif() configure_file(config.h.cmake ${CMAKE_BINARY_DIR}/config.h @ONLY) configure_file(hardinfo2.desktop.cmake ${CMAKE_BINARY_DIR}/hardinfo2.desktop @ONLY) if(HARDINFO2_SERVICE) #cannot use CMAKE_INSTALL_LIBDIR due to distros with dual lib (arch)-gnu-linux,lib64 set(CMAKE_INSTALL_SERVICEDIR "/usr/lib" CACHE PATH "Path where the systemd service file gets installed") message("ServiceDir=" ${CMAKE_INSTALL_SERVICEDIR}) if(${HARDINFO2_RUNIT}) install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/tools/run DESTINATION /etc/sv/hardinfo2/ PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) elseif(${HARDINFO2_SYSTEMV}) install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/tools/hardinfo2 DESTINATION /etc/init.d/ PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) else() install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/tools/hardinfo2.service DESTINATION ${CMAKE_INSTALL_SERVICEDIR}/systemd/system/) endif() configure_file(${CMAKE_CURRENT_SOURCE_DIR}/tools/postinst ${CMAKE_CURRENT_BINARY_DIR}/packaging/postinst) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/tools/prerm ${CMAKE_CURRENT_BINARY_DIR}/packaging/prerm) endif() #AppStream MetaInfo file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/org.hardinfo2.hardinfo2.metainfo.xml" "${METAINFO_CONTENT}") install(FILES ${CMAKE_CURRENT_BINARY_DIR}/org.hardinfo2.hardinfo2.metainfo.xml DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/metainfo/) execute_process(COMMAND appstream-util validate-relax --nonet ${CMAKE_CURRENT_BINARY_DIR}/org.hardinfo2.hardinfo2.metainfo.xml) execute_process(COMMAND appstreamcli validate ${CMAKE_CURRENT_BINARY_DIR}/org.hardinfo2.hardinfo2.metainfo.xml) install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/tools/hwinfo2_fetch_sysdata DESTINATION ${CMAKE_INSTALL_BINDIR} PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) install(TARGETS hardinfo2 ${HARDINFO2_MODULES} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}/hardinfo2/modules PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE ) install(FILES ${CMAKE_BINARY_DIR}/hardinfo2.desktop DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/applications PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ ) install(FILES ${HARDINFO2_RESOURCES} DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/hardinfo2 PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ ) install(DIRECTORY pixmaps DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/hardinfo2 PATTERN "*.{png,svg,jpg}" PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ ) install(FILES ${HARDINFO2_MANPAGES} DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ ) install(FILES pixmaps/hardinfo2.svg DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/scalable/apps PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ ) ########################CPack PACKAGE BUILDING########################### SET(CPACK_PACKAGE_HOMEPAGE_URL "https://www.hardinfo2.org") if(${TGZ}) SET(CPACK_PACKAGING_INSTALL_PREFIX "/usr") SET(CPACK_SOURCE_IGNORE_FILES "/build/;/.git/;/.github/;.gitignore;.gitmodules;*.po.old;*~;*.mo;") SET(CPACK_SOURCE_GENERATOR "TGZ") SET(CPACK_GENERATOR "External") SET(CPACK_EXTERNAL_PACKAGE_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/tools/archcpack") elseif(${RPM}) set(CPACK_PACKAGING_INSTALL_PREFIX "/usr") SET(CPACK_SOURCE_IGNORE_FILES "/build/;/.git/;/.github/;.gitignore;.gitmodules;*.po.old;*~;*.mo;") SET(CPACK_SOURCE_GENERATOR "RPM;TGZ") SET(CPACK_GENERATOR "RPM") SET(PACKAGE_GTK2 "libgtk-2-0") else() SET(CPACK_SOURCE_IGNORE_FILES "/build/;/.git/;/.github/;.gitignore;.gitmodules;*.po.old;*~;*.mo") SET(CPACK_SOURCE_GENERATOR "DEB;TGZ") SET(CPACK_GENERATOR "DEB") SET(PACKAGE_GTK2 "libgtk2.0-0") endif() #TGZ SET(CPACK_ARCHIVE_hardinfo2_FILE_NAME "hardinfo2") #RPM SET(CPACK_RPM_PACKAGE_OBSOLETES "hardinfo") SET(CPACK_RPM_PACKAGE_MAINTAINER "hwspeedy ") SET(CPACK_RPM_PACKAGE_DESCRIPTION "Hardinfo2 - System Information and Benchmark") SET(CPACK_RPM_PACKAGE_REQUIRES ${RPM_REQ}) SET(CPACK_RPM_PACKAGE_LICENSE "GPL2+") SET(CPACK_RPM_PACKAGE_HOMEPAGE "https://github.com/hardinfo2/hardinfo2") SET(CPACK_RPM_PACKAGE_URL "https://www.hardinfo2.org") if(${HARDINFO2_LIBSOUP3}) SET(PACKAGE_LS "libsoup (>=3.0)") else() SET(PACKAGE_LS "libsoup (>=${PACKAGE_LIBSOUP2_MINVERSION})") endif() if(HARDINFO2_GTK3) SET(PACKAGE_GTK "libgtk-3-0 (>=3.0)") else() SET(PACKAGE_GTK "${PACKAGE_GTK2} (>=2.20)") endif() SET(CPACK_RPM_PACKAGE_DEPENDS "libjson-glib-1.0-0, zlib, ${PACKAGE_LS}, ${PACKAGE_GTK}, libglib2.0-0 (>=2.10)") #RPM-SERVICE if(HARDINFO2_SERVICE) SET(CPACK_RPM_POST_INSTALL_SCRIPT_FILE "${CMAKE_CURRENT_BINARY_DIR}/packaging/postinst") SET(CPACK_RPM_PRE_UNINSTALL_SCRIPT_FILE "${CMAKE_CURRENT_BINARY_DIR}/packaging/prerm") endif() #DEB SET(CPACK_DEBIAN_PACKAGE_REPLACES "hardinfo") SET(CPACK_DEBIAN_PACKAGE_BREAKS "hardinfo") SET(CPACK_DEBIAN_PACKAGE_MAINTAINER "hwspeedy ") SET(CPACK_DEBIAN_PACKAGE_DESCRIPTION "Hardinfo2 - System Information and Benchmark") SET(CPACK_DEBIAN_PACKAGE_HOMEPAGE "https://github.com/hardinfo2/hardinfo2") if(${HARDINFO2_LIBSOUP3}) SET(PACKAGE_LS "libsoup-3.0-0 (>=3.0)") else() SET(PACKAGE_LS "libsoup2.4-1 (>=${PACKAGE_LIBSOUP2_MINVERSION})") endif() if(HARDINFO2_GTK3) SET(PACKAGE_GTK "libgtk-3-0 (>=3.0)") else() SET(PACKAGE_GTK "${PACKAGE_GTK2} (>=2.20)") endif() SET(CPACK_DEBIAN_PACKAGE_DEPENDS "${DEB_REQ}, libjson-glib-1.0-0, zlib1g, ${PACKAGE_LS}, ${PACKAGE_GTK}") #DEB-SERVICE if(HARDINFO2_SERVICE) SET(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_CURRENT_BINARY_DIR}/packaging/postinst;${CMAKE_CURRENT_BINARY_DIR}/packaging/prerm") endif() INCLUDE(CPack) hardinfo2-hardinfo2-1331e88/LICENSE000066400000000000000000000431501474767047500165530ustar00rootroot00000000000000GPL2+ GNU GENERAL PUBLIC LICENSE Version 2 or Later Copyright (C) 1989, 1991 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 19yy This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) 19yy name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. hardinfo2-hardinfo2-1331e88/LICENSE.1000066400000000000000000001045241474767047500167150ustar00rootroot00000000000000 GNU GENERAL PUBLIC LICENSE Version 3 or Later, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . hardinfo2-hardinfo2-1331e88/LICENSE.2000066400000000000000000000635751474767047500167300ustar00rootroot00000000000000GNU LESSER GENERAL PUBLIC LICENSE Version 2.1 or Later, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice hardinfo2-hardinfo2-1331e88/README.md000066400000000000000000000151241474767047500170250ustar00rootroot00000000000000[![Test](https://github.com/hardinfo2/hardinfo2/actions/workflows/test.yml/badge.svg)](https://github.com/hardinfo2/hardinfo2/actions/workflows/test.yml) [![GitHub release](https://img.shields.io/github/v/release/hardinfo2/hardinfo2?display_name=release)](https://hardinfo2.org/github?latest_release) [![GitHub release](https://img.shields.io/github/v/release/hardinfo2/hardinfo2?include_prereleases&label=PreRelease&color=blue&display_name=release)](https://hardinfo2.org/github?latest_prerelease) HARDINFO2 ========= Hardinfo2 is based on hardinfo, which has not been released >10 years. Hardinfo2 is the reboot that was needed. Hardinfo2 offers System Information and Benchmark for Linux Systems. It is able to obtain information from both hardware and basic software. It can benchmark your system and compare to other machines online. Features include: - Report generation (in either HTML or plain text) - Online Benchmarking - compare your machine against other machines Status ------ - Capabilities: Hardinfo2 currently detects most software and hardware detected by the OS. - Features: Online database for exchanging benchmark results. - Development: Currently done by community, hwspeedy maintains Latest Release News: [https://hardinfo2.org/news](https://hardinfo2.org/news) Server code can be found here: [https://github.com/hardinfo2/server](https://github.com/hardinfo2/server) Packaging status -------------- [![Packaging status](https://hardinfo2.org/repology.svg)](https://hardinfo2.org/repology.svg) Prebuilds: [Downloads](https://hardinfo2.org/github?latest_prerelease) Dependencies ------------ - GTK3 >=3.00 or GTK2+ >=2.20 - (GTK2+ DEPRECATED: cmake -DHARDINFO2_GTK3=0 ..) - GLib >=2.24 - Zlib - glib JSON - Libsoup3 >=3.00 or Libsoup24 >=2.42 (LS24: cmake -DHARDINFO2_LIBSOUP3=0 ..) - Qt5 >=5.10 (disable QT5/OpenGL: cmake -DHARDINFO2_QT5=0 ..) Building and installing ----------------------- **Debian/Ubuntu/Mint/PopOS** - sudo apt install git cmake build-essential gettext curl - sudo apt install libjson-glib-dev zlib1g-dev libsoup2.4-dev libgtk-3-dev libglib2.0-dev libqt5opengl5-dev qtbase5-dev - sudo apt install libsoup-3.0-dev (might fail if not available on distro - OK) - git clone https://github.com/hardinfo2/hardinfo2 - cd hardinfo2 - ./tools/git_latest_release.sh (Switch to latest stable release, tools/git_unstable_master.sh for developers) - mkdir build - cd build - cmake .. - make package -j (Creates package so you do not pollute your distro and it can be updated by distro releases) - sudo apt install ./hardinfo2_* (Use reinstall instead of install if already installed) - sudo apt install lm-sensors sysbench mesa-utils dmidecode udisks2 xdg-utils iperf3 fwupd x11-xserver-utils vulkan-tools gawk - hardinfo2 **Fedora/CentOS/RedHat/Rocky/Alma/Oracle** * NOTE: CentOS 7 needs epel-release and cmake3 instead of cmake - use cmake3 instead of cmake - sudo yum install epel-release (only CentOS 7) - sudo yum install git cmake gcc gcc-c++ gettext rpmdevtools curl - sudo yum install json-glib-devel zlib-devel libsoup-devel gtk3-devel qt5-qtbase-devel - sudo yum install libsoup3-devel (might fail if not available on distro - OK) - git clone https://github.com/hardinfo2/hardinfo2 - cd hardinfo2 - ./tools/git_latest_release.sh (Switch to latest stable release, tools/git_unstable_master.sh for developers) - mkdir build - cd build - cmake .. - make package -j (Creates package so you do not pollute your distro and it can be updated by distro releases) - sudo yum install ./hardinfo2-* (Use reinstall instead of install if already installed) - sudo yum install lm_sensors sysbench glx-utils dmidecode udisks2 xdg-utils iperf3 fwupd xrandr vulkan-tools gawk - hardinfo2 **openSUSE**: use zypper instead of yum, zypper --no-gpg-checks install ./hardinfo2-* libqt5-qtbase-devel instead of qt5-qtbase-devel **ArchLinux/Garuda/Manjaro/Endeavour - AUR Package** - git clone https://aur.archlinux.org/hardinfo2 - cd hardinfo2 - makepkg -cis - hardinfo2 Setting up addition tools --------------------------- Most hardware is detected automatically by Hardinfo2, but some might need manual set up. **Package installs these** - **sysbench**: is needed to run standard sysbench benchmarks.
RiscV: The package is not ready yet - build by using the ./tools/build_and_install_sysbench_riscv.sh script from building hardinfo2. - **udisks2**: is needed to provide NVME++ informations. - **dmi-decode**: is needed to provide DMI informations. - **mesa-utils**: is needed to provide opengl and run standard sysbench benchmarks. - **lm-sensors**: is needed to provide sensors values. - **xdg-utils**: xdg_open is used to open your browser for bugs, homepage & links. - **iperf3**: iperf3 is used to benchmark internal network speed. - **fwupd**: fwupd is used to read and display information about firmware in system. - **Service**: Service loads SPD modules (at24/ee1004/spd5118) to display SPD info for your DIMMs memory. Show addresses for iomem+ioports. - **xrandr/x11-xserver-utils**: xrandr is used to read monitor setup - **vulkan-tools**: vulkaninfo is used to display vulcan information. - **gawk**: Used by hardinfo2 service to determine System Type **User can install/setup these depending on hardware** - **hddtemp**: To obtain the hard disk drive temperature, be sure to run hddtemp in daemon mode, using the default port. - **apcaccess**: apcaccess is used for battery information. - **pciutils/usbutils**: is only used on old kernels without sysfs. License ------ The Project License has been changed in 2024 from GPL2 to **GPL2 or later** Because we use LGPL2.1+ and GPL3+ code. To future proof the project, lpereira and other developers have agreed to change license of source code also to GPL2+. [530](https://github.com/hardinfo2/hardinfo2/blob/master/tools/LICENSES/github_com_lpereira_hardinfo_issues_530.pdf) [707](https://github.com/hardinfo2/hardinfo2/blob/master/tools/LICENSES/github_com_lpereira_hardinfo_issues_707.pdf). It is all about open source and creating together - Read more about GPL license here: https://www.gnu.org/licenses/gpl-faq.html#AllCompatibility Privacy Policy --------------- When using the Synchronize feature in Hardinfo2, some information may be stored indefinitely in our servers. This information is completely anonymous, and is comprised solely from the machine configuration (e.g. CPU manufacturer and model, number of cores, maximum frequency of cores, GPU manufacturer and model, etc.), version of benchmarking tools used, etc. You can opt out by unticking the "Send benchmark results" entry in the Synchronize window. Both the Hardinfo2 client and its server components are open source GPL2 or Later and can be audited. hardinfo2-hardinfo2-1331e88/cmake/000077500000000000000000000000001474767047500166235ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/cmake/Translations.cmake000066400000000000000000000032561474767047500223140ustar00rootroot00000000000000# Translations.cmake, CMake macros written for Marlin, feel free to re-use them macro(add_translations_directory NLS_PACKAGE) add_custom_target (i18n ALL COMMENT “Building i18n messages.”) find_program (MSGFMT_EXECUTABLE msgfmt) file (GLOB PO_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.po) foreach (PO_INPUT ${PO_FILES}) get_filename_component (PO_INPUT_BASE ${PO_INPUT} NAME_WE) set (MO_OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${PO_INPUT_BASE}.mo) add_custom_command (TARGET i18n POST_BUILD COMMAND ${MSGFMT_EXECUTABLE} -o ${MO_OUTPUT} ${PO_INPUT}) install (FILES ${MO_OUTPUT} DESTINATION ${CMAKE_INSTALL_LOCALEDIR}/${PO_INPUT_BASE}/LC_MESSAGES RENAME ${NLS_PACKAGE}.mo) endforeach (PO_INPUT ${PO_FILES}) endmacro(add_translations_directory) macro(add_translations_catalog NLS_PACKAGE) add_custom_target (pot COMMENT “Building translation catalog.”) find_program (XGETTEXT_EXECUTABLE xgettext) set(C_SOURCE "") foreach(FILES_INPUT ${ARGN}) file (GLOB_RECURSE SOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/${FILES_INPUT}/*.c) foreach(C_FILE ${SOURCE_FILES}) set(C_SOURCE ${C_SOURCE} ${C_FILE}) endforeach() file (GLOB_RECURSE SOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/${FILES_INPUT}/*.vala) foreach(C_FILE ${SOURCE_FILES}) set(C_SOURCE ${C_SOURCE} ${C_FILE}) endforeach() endforeach() add_custom_command (TARGET pot POST_BUILD COMMAND ${XGETTEXT_EXECUTABLE} -d ${NLS_PACKAGE} -o ${CMAKE_CURRENT_SOURCE_DIR}/${NLS_PACKAGE}.pot ${VALA_SOURCE} ${C_SOURCE} -k_ -kN_ -kC_:1c,2 -kNC_:1c,2 -c/ --from-code=UTF-8 ) endmacro() hardinfo2-hardinfo2-1331e88/config.h.cmake000066400000000000000000000024011474767047500202350ustar00rootroot00000000000000#ifndef __CONFIG_H__ #define __CONFIG_H__ #define VERSION "@HARDINFO2_VERSION@" #define ARCH "ARCH_@HARDINFO2_ARCH@" #define OS "@HARDINFO2_OS@" #define PLATFORM OS "-" ARCH #define KERNEL "" #define HOSTNAME "" #define ARCH_@HARDINFO2_ARCH@ #define LIBDIR "@CMAKE_INSTALL_LIBDIR@" #define LIBPREFIX "@CMAKE_INSTALL_FULL_LIBDIR@/hardinfo2" #define PREFIX "@CMAKE_INSTALL_FULL_DATAROOTDIR@/hardinfo2" #cmakedefine HARDINFO2_DEBUG @HARDINFO2_DEBUG@ #cmakedefine CMAKE_BUILD_TYPE @CMAKE_BUILD_TYPE@ #cmakedefine HARDINFO2_LIBSOUP3 @HARDINFO2_LIBSOUP3@ #cmakedefine HARDINFO2_QT5 @HARDINFO2_QT5@ #define Release 1 #define ON 1 #define OFF 0 #if !defined(HARDINFO2_LIBSOUP3) #define HARDINFO2_LIBSOUP3 0 #endif #if !defined(HARDINFO2_QT5) #define HARDINFO2_QT5 0 #endif #if defined(HARDINFO2_DEBUG) && (HARDINFO2_DEBUG==1) #define DEBUG(msg,...) fprintf(stderr, "*** %s:%d (%s) *** " msg "\n", \ __FILE__, __LINE__, __FUNCTION__, ##__VA_ARGS__) #define RELEASE -1 #else #define DEBUG(msg,...) #if defined(CMAKE_BUILD_TYPE) && (CMAKE_BUILD_TYPE==Release) #define RELEASE 1 #else #define RELEASE 0 #endif #endif /* HARDINFO2_DEBUG */ #define HAS_LINUX_WE 1 #cmakedefine01 HAS_LIBSENSORS #endif /* __CONFIG_H__ */ hardinfo2-hardinfo2-1331e88/data/000077500000000000000000000000001474767047500164545ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/data/arm.ids000066400000000000000000000064021474767047500177360ustar00rootroot00000000000000# # List of ARM CPU IDs # in a format similar to pci.ids/usb.ids. # # Syntax: # implementer implementer_name # part part_name <-- single tab # # is two hex digits, is three hex digits, keep in order. # Comments start with '#'. # # This file can be distributed under the GNU General Public License # (version 2 or higher). # # Based on lscpu-arm.c by Riku Voipio # # The information here is gathered from # - https://github.com/util-linux/util-linux/blob/master/sys-utils/lscpu-arm.c # - ARM manuals # - Linux kernel: arch/armX/include/asm/cputype.h # - GCC sources: config/arch/arch-cores.def # - Ancient wisdom # 41 ARM 810 ARM810 920 ARM920 922 ARM922 926 ARM926 940 ARM940 946 ARM946 966 ARM966 a20 ARM1020 a22 ARM1022 a26 ARM1026 b02 ARM11 MPCore b36 ARM1136 b56 ARM1156 b76 ARM1176 c05 Cortex-A5 c07 Cortex-A7 c08 Cortex-A8 c09 Cortex-A9 c0d Cortex-A17 # Originally A12 c0e Cortex-A17 c0f Cortex-A15 c14 Cortex-R4 c15 Cortex-R5 c17 Cortex-R7 c18 Cortex-R8 c20 Cortex-M0 c21 Cortex-M1 c23 Cortex-M3 c24 Cortex-M4 c27 Cortex-M7 c60 Cortex-M0+ d01 Cortex-A32 d03 Cortex-A53 d04 Cortex-A35 d05 Cortex-A55 d07 Cortex-A57 d08 Cortex-A72 d09 Cortex-A73 d0a Cortex-A75 d0b Cortex-A76 d0c Neoverse-N1 d0d Cortex-A77 d13 Cortex-R52 d20 Cortex-M23 d21 Cortex-M33 d40 Neoverse-V1 d41 Cortex-A78 d42 Cortex-A78AE d44 Cortex-X1 d46 Cortex-A510 d47 Cortex-A710 d48 Cortex-X2 d49 Neoverse-N2 d4a Neoverse-E1 d4b Cortex-A78C d4c Cortex-X1C d4d Cortex-A715 d4e Cortex-X3 d4f Neoverse-V2 d80 Cortex-A520 d81 Cortex-A720 d82 Cortex-X4 d84 Neoverse-C4 d85 Cortex-X925 d87 Cortex-A725 d8e Neoverse-N3 42 Broadcom 00f Brahma B15 100 Brahma B53 516 ThunderX2 43 Cavium 0a0 ThunderX 0a1 ThunderX 88XX 0a2 ThunderX 81XX 0a3 ThunderX 83XX 0af ThunderX2 99xx 44 DEC a10 SA110 a11 SA1100 4e nVidia 000 Denver 003 Denver 2 004 Carmel 50 APM 000 X-Gene 51 Qualcomm 00f Scorpion 02d Scorpion 04d Krait 06f Krait 201 Kryo 205 Kryo 211 Kryo 800 Falkor V1/Kryo 801 Kryo V2 802 Kryo 3xx gold 803 Kryo 3xx silver 805 Kryo 5xx silver 804 Kryo 4xx/5xx gold 805 Kryo 4xx/5xx silver c00 Falkor c01 Saphira 53 Samsung 001 exynos-m1 54 Texas Instruments 56 Marvell 131 Feroceon 88FR131 581 PJ4/PJ4b 584 PJ4B-MP 61 Apple 000 Swift 001 Cyclone 002 Typhone 003 Typhone/Capri 004 Twister 005 Twister/Elba/Malta 006 Huricane 007 Hurrican/Myst 008 Monsoon 009 Mistral 00b Vortex 00c Tempest 00f Tempest-M9 010 Vortex/Aruba 011 Tempest/Aruba 012 Lightning 013 Thunder 020 Icestorm-A14 021 Firestorm-A14 022 Icestorm-M1 023 Firestorm-M1 024 Icestorm-M1-Pro 025 Firestorm-M1-Pro 026 Thunder-M10 028 Icestorm-M1-Max 029 Firestorm-M1-Max 030 Blizzard-A15 031 Avalanche-A15 032 Blizzard-M2 033 Avalanche-M2 034 Blizzard-M2 035 Avalanche-M2 036 Sawtooth-A16 037 Everest-A16 038 Blizzard-M2-Max 039 Avalanche-M2-Max 66 Faraday 526 FA526 626 FA626 69 Intel 200 i80200 210 PXA250A 212 PXA210A 242 i80321-400 243 i80321-600 290 PXA250B/PXA26x 292 PXA210B 2c2 i80321-400-B0 2c3 i80321-600-B0 2d0 PXA250C/PXA255/PXA26x 2d2 PXA210C 2e3 i80219 411 PXA27x 41c IPX425-533 41d IPX425-400 41f IPX425-266 682 PXA32x 683 PXA930/PXA935 688 PXA30x 689 PXA31x b11 SA1110 c12 IPX1200 hardinfo2-hardinfo2-1331e88/data/benchmark.data000066400000000000000000002000001474767047500212310ustar00rootroot00000000000000vUf0 Q%k0%A31)΃D:H6OUc`n ̡f}wV?,T ~^ùD' !iCo\W LFtx*V" 5}#UsQVJEKHz$6dMǩсQֺX.=~u&~xY7?&O@CCp]~#e^Q{?cB?𨂦գ~@~y{߫W҂a :_8y]PQ3CC]V"*px:P9 "V5"f85/ &b`gc| Rj 6P)vӢOǖzJ@C曹y[Rozn'j0V` +~z@X8UlUzR%@jTP<%ˣyidJ/J]y%9$6%sCX:N8q~>bC}䱶:Bni;kkoݐSyĔ 8YֿSep:XM3thdj%\29+V=BZlgķ%Q\0zh[w6hw0(V;f+5OCLM 0D<^q0n$=۴ ~-`6">QWӤA'-CVE#qfBf_?T 4C(9c(=v%5!ؗꇸB_57S2AkҞoUXkNP٬u7w(xM" >{)yjeH#t:Pc͔+֟Uo ҈{)v u%~Q__L}9B+^=m/y˗bD9͇N':#^ =lۧ87޾KJ8 vvxWᶂӻ!SYiXH" Tz:F/5toȑʛl@`vBf'ٖY}d [~Xk=tu%psrwF) p)ږGa4ԧPαdl3~P(k~ZB|\X'k\]gj~-t5bo* ܢ3JAKg AŅ^6r㱡Fb U=#*0Xܞq5'"5ojs$y.[4Tu%+I/NO &JNɔ?G]-_:[ۼn$!0ampya ;<L ء/3/BR wdIݐ|}D6'üJҿkbDX\o_ȥ+$, dɠ'y3 ȠMW:ZbEx^IM3# rqO<巢pXǎ[&7BIt[rImM@K=FRZ# >=c浸^|hk:g;#'(! 0!>d\WI}-ĀDylg ScYM]:aұ=8kY YUù}u!?j}7$ fW`4E[Vݏȷ'1ZL-֎0ܨplȏU?w̰荖"k[G["5- {B6%Ogv;&ۅVzdB]v^:6GF/mgw-X^ZH^[L!}ð,LUiAU3&?4$,#;VgĒǰO$蚡jͿ)Yb0_[&h K`OZ_썃:L>nR0Y;Go%YpW ptꓻɒCH\N]¬k[cf/H{RU&J8v6zdr}CZ㞁fg`ӞkPͫCa SZ3/5y'Su(OZup FwH=-$˞ :-uږBR63H K[P0W?/ 7rBl He}7\JvaYW^1#`NW֣4.#Z[ dp䣌XprXSfxĂ6' $pco{tt/ۜa!f-9}[g:ʹ"Ho> \V""u n~:^&FJhΟi"">nhL&-je"`Mr tQc[u6ՉnJ,\?K:="9SC&K!pjHӒ(`gߛW<㳝auQ e=aI)ak4W*i._Tk<5jk$Y34kr *ԓOZ7*p^az$촻rߌqm|иq 7LT*ڸJJg8tY?GNi{*+,sa7F͇2E76O߰K%T2b %"`wA~I6/oQ*miZDgyJs7Z)_M*</klYlh򪊞bq4E%dSO@ox[l(!7,Cga96F0\KG6^n$`_ lA0 p$TkmE?y N1g!Q,//,O판i6*ha1Sܝi8НaG_ϺNAᐉY.}8Y:[iNOc ZT']I]pd!F9Qd5O"#4_@yLW#spB9gM26K1æf:oZ&O!m4!ou`oI0"976ZU >&2WObxQj7J|}ݳre ~meb)C48<D$kw L!9\K/|ommѸ%esly\I܆ T!3/LZjDwAs`X[A!*Jsg_f QX-EI֍d4Nlc9 i:9Cw52 Ǔ5y4EX+x& ڽljuP> 6*Q:˻BT $eu;NIIt4D3'u>5,皨J5k-ZHfa%+v*j]xR?^sLzn J xgQYd4k 3{XZuAv@B3|rqDi#t) _t)Lv{gLդGql:"S[7#Ū?ѵ9ku;)5u0A#2Mڡ d]? {<(^2ck[ z` c{  K-lV3Kr02k4Ƌ|\I'L۔ʗݝ7{2n`.jKR/Jvt%Jϕ)tScRƷz.#g8sy2ɽ]0F|墎#JЃmps=!2YJݓ._ϗQPOȔSK|#N^9{ߝ<>AC5G2Q~kd` UwM{_N] ;XO@g4[ecM_& ~+ ݺ~~ PB)^@ѝ {3O(Ra[,S`?r@R` M1Bҗ2̌ʿ$mևi;7e>5`_.\zMS֘̕YFGG鐒͸a&.ӁxCwgT0XLD`.T$+"nC% 5(!vp,{)+w"BL:w&pj*Qu3DEo̎X$u#pD.S76wRb20z練)VZm(Y'.W$}6n mP fQf?.W#́m7B [Ы}KoiIBIƀ\ZT\dPZ6R^xޟ̇ofR~j x/fʋel钜8f-Lqnʴwc[Q`;2Fob2jU_Zj]xq􄄽(.AՋG`qGC4ɫum[z2b1 o^)qWK߆3!`6eи5.>~B\Jx`ş[1O99c< Wbh)7A3KtAw!}ێe! g֮.6 l6^%1cުhDRYqXwJC\N A!$Y.xOB4r6 kQQlyUG%j LgSeQdM ^j\K0^*EB qle -QnCƤ3STjrYކ7_mxyRׂm-anTLVsdct-jnj?)9o;gfaLO4`XaJT^OzرLKk^lMjW?[{h8劬4!jQ.R2zF:^wxh5n (]mxlI" QK º$Iޖ'%L?7ALo}^rhXZ'R\{5 Jyoq!nΏ) l)iY +7zb?JQT;ˏ.kVw?n9a٬"|SӠA+`V 4`%eޖޞ5*G'JHB#:xZѻ )2ֱYʘyņFf[ƺw{89Do)iwpbT彜a#W9 FlW5Jw5;r}+!JZOݳcx iݙh%bu@n ?~£1a^OrכɚHmtZ C=wWW2ɗI"6qi脎 {xAϺ$'~G^n)[CY-!ϡgQms"gtd$܌v{GR¾w l@1 <>84=WI@KSUC5|c#>W{r[\D}*)W$#{; eh04gv׺IC6&@Ԟ2#Nә,v}qKL_ eIEdPjwbV2Ϯvl5'Psn1ŀmuqỵOBRv-nCNlT2V!_iqwia c͍>*! Q|-A&Mf|htPm׋`hJ %c{T.i\}O)!7Q#K9^(8p!qR HP1!޳ hWX*SѝӝV% nɊ?MUnK1DZ^jՙj0K,ʡ DmP2򱯊nA?wTOi6w'Ob؟:‚˴?* " l_Dia(e^7 PlGAxo5_ݴPhPVB=f4$El <7"ڳ`EX0Ѳ{.G~ )7BG5K:G/\H"!Yh>2ԓ"BfVxGF.h1x4B@;#G?mTrۊp |GtKvL}6n?UËMDmg/J&\D-qtԎ_8Jxsώ3KL側XH塋@⃾.ɲB>Q:M/?7jŊPh9W ֙|f`,>]$tQW 4[ y]Ź.WȐ]W [rysnոu[fnvj@Nq3׾yUw ?(uE-|pRtVFu>DHE2[7'_鑊/@`<]Q&ğ"cR1^%"kIWU0}%Dž_#D:u@13H3}cײjT2˃j.sTRX:N0)|hgڌrpqB| F=Т'(jL1 xƖJ"-ϯ(v&njlD "u:܉2GAGGQxӯ醉·E/8.Lw^ HTmP=M݅AoqYFkP؏Dqlγy9+Wz~5N!\!8Y2sNJ_/zp1mрWaFa aF"MK[=r~vfXI4$d2 kiۈK+ tym~`$ϸ^(S1M=0ZzV'.Ѭ@`oh4Zbjy'&fݿ p@8@`z7/ -XW G45D0D'Qk:_k@w>tUbBʓ|t{f/3-2Z 9Z%9:(4WYmlq}GSr9xNl?QLP4b-!d"8ط;%G9Wύ(,ՙr8TZΓ[=>[{M4Y$Җ;*rͫauu?uP&.qp1@k_qt5dw[3@Di8S')>3U3, 3 AGGq!Fu$!<~H*(5ӪҦDexs#.%tk+/b _F+bK ك둿nTY b҉2 7Xt^Ǧ`w).oԯ8WpȓaK$ lmC]Rj!Y ;zQx'`W 'QqOephs x1j<>V8tnW l3ҳ2s/Jߨa>?sc&d!MZ E0eE}5s;n*u~;EF=0'-f`}) 6Kz6A ĥ$$YB!5 K g_`~V3r*@p?.O$xї8ktwGЍ}x\>8c Cw J a8q)Xߒw>?cU "of5r0v Ȗt`ThyqAA^y/w*.@RNB,V:iI"KM:='BTI#wkn)a.ƄW Jb˸ACO{$ɸua[L]ZUFo8D\@Sٕ@qsjWWg mtJ=[a5.N rXh~WmWJ?nk4|>yݛ1A[:Eq@GZ(,vy=7bocx[3d ǰW׮?Wqb뀩z)W jPꢃG҇m.u8D30@@Hgb DMiIJ i,W`ƨuB*L{t :V%V]PHZz=~K`]lGb$I˶/Ek .5og8CX}f1gZgi3s!U{GM<=yVӧ.*Y0eF> V(֔{'K=% =Lwm)*+0K|b"Q2! 4y_Z~xGZ;?;/pOhKxwjj2ϻAqX@v#}9W+In]E'UP@),@Y$, ?Pk#e2-con=9Ys[_F??bJR}]>m_8O3F_u2s}z}ߵ&;cS=Ot &r&.mp F҄)b.^ !а'"et>j+!4,  u̥4LcrAY Y_W,r@;`[+cS!l||1:#Q)' M-^ƣ{bݚW<{L"\_~[}\h ^ju'92|pw{~ ōh&B"1$0>kr۱_{r9s|262}]*B>lΝ\F-봷ma|U~]{Htw-Rc4lji#E3ohp3Q\VKFgGP1+&ܩˡmm,%( ^iqW lҟĩs u/$0?S*N[o 02wX9v:}Z҄䦜S}#SGz& 59H\TR8Ȱ}^r4{ .N ct1*rf R^(jS\$N ҥ|z&DJW {a"J8n'Y8VlAn .8hTg '4s&D`@ T\%[nnͶ'5 /׭Mp}q'*S@p4*|aZun=p]4 pNp5w?≡r)l,AyO]x,$ˑ ˗"VnaG,KV% *(6@t=HF,]FHf=C_?C'%U7e@ ]}:ԑ ޷8:Ϳ%Ñ0b޳ܶx<%/]!f lܞ.3ڇ2v ;3{~S_ҡhd0Q kTQ v+< ӻaަ)4MmsPA"yetٴbA0m 7*גLŸL,ɋ=#emJbOUii u1PѢx< BiS',j3/⮴%!Kֿ fҔ OO䵎$`lc.xʎWM'PgT  =jȿ|ގ] =6^Z!_p~LNRCM.Pp7wLI#AGhkd-˭Ӽj<ِ& N!"e$QV&:Y7h u5(A nOVxX'7=pVY hn c#H\k'Hޮ [<`e e 4lbLP Z29cխ9%^QShL=zX=EQ?Bu56x%1jLQ#+Lv{k'F> *r 3v/"-UHrprۊm099: |qo(a)OWd7J"]Tx@ UDJ6o޹f9IguT2}k|@V IRM|mލ}z^3VR0 \. u&8h#Q/(ݡz`T&i ٠ 7+3]҉m.u̡:ZhS0Uᑂ$)Wa㋱;rf9̈@Β$agxGZ?IV{Af]|ĥ, ch>ߍ.:ܼ1/fPN^QMd/;M .-mqUSz?/Vo< TE&EO+{V 1m-Hv;eЈ 8t8){*/\HzcV\ZYXmlB=qGT~LX -"`yQn_(/yPGgp"!KΌ tdѵOEi|^l3x/(ޚK0ÇH^Yy)BoN؝k8od>%K#lRs<.X啦AKAE-zZ|[$ ƿ'fuih(Oe%lRYoY+Vorχ[U1U,GKrˡ=tB|eRԆGXX}.hgIxߌebn,}SK-++4؎ @m$.@pa:鞏ZseRc'q`T6b0֕k7ssF˟|m 9l8e\g{+<g5MMwJ]# ^wh,ÿ<ŋ{G<:Tq ~ՈR];*OrH|;vߘNJM`h >Em ⷋA| F|;T^9Zi}.b&p@3Tݢu?Bp̲v!tRhhd*mѬT`'=k bnc4*4w171%VuS51a=a'ns+r}a$C貵I0iw.AhΊþ dA8;`e J Z"#35kuꦇban9{ne-TCj7 :AbU9B]au7#YQal],nw3_^njwġ#[@H]"H;(G=`L/ЖUm^@/^j/ U¼}|'d$P=t{4m^8L3cVh!dE|sF6=Pgĥ kMtBeb0;|{8%!)d VV kSqbKI_%\ @);#>gE>LA\CPC}4$[khACN/QgK'O)`S#;vō55;u``%?3JS+*G̿.tm<u ?YpVENd'ˠʳw&ylOo>w>nKHb9] VQ(2\`F{ĥ/0[ca򇼦u}I:HI ;}E~Y*& 2N}]oC9c΃lm jF*wQ!!\Jo唣7a'y=_X^ bw)v;}xSe.Dh2%bm!&zݫWF)h|@;2V׭ i=&omi:V(kӊOR%>2!_, ٌOith h܈<2&Y2?Jӑ|MW>%;j*Vv` "ϸ3;I+X;joݕ8 |=`D{>T'vy93c9yZ;.%{gXǿDXBM [Ô*؏}XoL{!ӌZV09m~mo,#ʜ8G'Pc[~`gLN2pF4M?K/V\RY &dQvS]SDw(ŽoT u>z{ioojdDq@H&Nߑ#Dxy|Q=P)ClԺUl2^s0oǵN~f~/DU ^csVq=s$Pn?i"NEr'sF 2X%}IAAa&0FjcjQ0Nݝy9ILnP:mՂ٣7+NOڵX6"kV |T Uv.cJ*{/Foo@k#@eg:.cwUVL{)Z9,:|:o ߔMK_dމVkzX&km`f} 1 w]y` ̃0\+%{V^akGf<Ϭlv[屔ci^Wx* JY VU$$k"-J.lӻ2$VDliQ*mcW'emv%y ;bFZ|7'[Ҷ2+ks^k½jc$fm(ҟ|0YXa7R2mbYA0k3dvMMYyƩk'߅f-$]g;(0DS#8BVTai}NTh'bf#ѮlE)Zu!d?1ië& %A=frƢ~-|d6abcd~g+vcdrWd:dQ~zzчH GXp++B#ȩj`-߄^x9l.0ᜂSn_.ᄟN5X `#թ]!UZӔ":yj^sA]M&ېi'n38qƬNOYA,ƒ'TU| ?xMy6O:)aہJZʋ uu]6e`gNЦJEIuiW Z$ijaڻV`<|>Qa4KHRh+LLTY!i<ۤm^S<|M@X5kW[f|G6DwΉj j2%fbԧ{J-۪ZOҫNq8 ~MZRDٛ82l?6ore愲y)xR+4 b\]Ŧ >nI"M;# ـ p|穁hXe{ =oj_U(gR'H 쌤hWHMrD r]4锶{nZ$کy"+*(|Bh?Th6i: EJҎL2V#ګVB}6nVU3΀fMϔCV*1jP%r3^<ަ?gaEZ C~?U\!%h튕UfHL] _r1 z!84 %UsrVBּ8ώE?t" ng$FoU24M6By`V $3s>4{~$ Y k?*MqCCh~0]fI(JӐ?aB1^UKL?v?۲s_t1-e-9zyx^d1ck#f5|Zgm}kJNitO3/z=-?~nR[iF8ƽYT 4#t 84etiËmH >H'v̲-v+i٣$ǪA/lFqHXϷ6]\ C^zbȱT + B}a&ǘ-HeYb"bR(v7?qvMvH6 }^\Z |h}oE_\DQEdk"b `K,؜&O9?ȴgHQJPA/ay<闦vc,LҚQ*w\X؉y[KoMe^"c֯u*32d~n6Z"`$_;IRH=#va^cwd\+ 0VㄌweyJyF/ڏ쾷5YcDnd ]5R.e;fFيԆgiJqEGz!0ȆWv6f+ؿg=e'@9 $/5Vkj"557U Ѭkv67Q$*OiciՙD#)J76vqI_T@ۖ_yuƫ&„aP yJ80R߼XKwiHRƪDb N:˨`Q*EV\yK<6MhK9)=m/īLhʮ4Kp) wLǁb%.:_ ȳx`s!ڳ@!2jT5Nm!}ȁ-X 1ek2.蟗2gXT)6:"PmUƻ_/Vy<q4}ı5=bH]6D@rcJ!LHh" :hG\Wv8sΚ`vnj.N4_\J2&2Do5X w^)p=| ++qh3_F>iuU6|8L/c?kT^ajd)B,z2a*"_^aݾx^>TuW  =y`1_/hDѣmT-q;8bT7*GldKtBܣ_E] P5ez𗩆5*X{gdZB4rzerF[ nJLы2&&P,þrh1h;fc_zw2Sy~,Gk䟕 W5O 1OZ9h<`~ִ2 =?(4=Zx] ,MW|tĦ˯ gSNc}͈FGɍKxVft_,jaYq#Mtdt\"Ђ*~Eit_M35ǬǑI$|"HB`2*+6ric̊B1,4 ]|cz(4a|C"`Dz"x I<!mom43My%3?M,1* n P\R/gٮi{W22P}qCbas[DfON?\}lsP$MnVjRBɇv8>V,m֕'ޙ\\'b1d*m2'>` S/OBc&=yC)O1ܔLH;5C٭ 0k}"y:Vͼppgt -%lʹt֩( e\4:vp8V)vk8+atcjzHFb=*iFFhHP x Y$ik@yNމQGil%_Glm§*7QCfi O7esЅ.Ӯ`K;qcY`EЉǨDžcj?љz$So1 'z7S|^v6q6@qd;>SEI$YjR]_PrU tHYO!ijHj3 D%&Nu5]P{\. -)藅uQHWSD>sӷK(%!.lX[6Coja7]@,;"Q3 8 f7慎p|d_ &p|$ y2AgJŽud6|EgkMpZ΋?sT526f}1 ej$u3k^SARX1rHDD+A"w(8SjDLZRc-X?{e"i׉e$>eO5Űyw6TVՏCy%47_%ӷ :4c/F5q@(x~R(t3AW帓A" dh#`!B5 5nu^$+7㱗Y![Ƅ(MI; h-؄v[OG+ǝ|*l)|"rE'dU*Ta C,13B}9ᑛ57 ~aBD`A "Zuƶh> 7Y7Y[i>>~U-JB[HslC[,M_6oj P"'])HZ'E*vR ZSH돟=[^䕝a d0g[[~1w/yrbђHm(UGv) 2{MOOFWnAXs G5{@ =rv{Y \9#@EV/Gwryk1k6^ngG@N~z+46.=R)"GjwΟZȺk(M=FmHπk2Za-L:Fۉ9XoɻTqgI;ݔ̎Ӄ?*#Q jcdĔ>bdWWrF:h !>qs@D (˹ۉBDC@!|V;DQ !0 $o%v;2ւ?0ś^'͚Nd BfE=*FIJV񥭼|,&S l7+J(Dt8 W'n?U\(yʫWD8!$N\,81puy^\::ր(҂l<h9unzB0øɥ`_ǃmm {v yEnzrوFwF+ ԏPS&릻OM.;" m<=;-[CTE޵^ULTLv4{ljqaOzJ<АY^mbUx8 'L۝SypVISU:WFI#va{z z.܃Hg3NeR8H#lje_^Z}ɟQaPS/c_r{.fHSœ6; Wɂd>&}Tr,}/QBn7X~MG+O4% ݋sSt}'萲xHjF_7`;x3|j ge!(9&?ܡU4ɲUTEsNlA>ۇ$Eے`(t3\\|])|PmC! 3e9kOzNb3o\jfyZOJ1$HI2.+Z/^-àZ*|ɴn,2toh>> _{kfe_D[YcԻAx1V25"gL][`j4;+{=Y$!2c)o"L{/iyOͅN?ZafN$@5EטhV1ggIhEI/~gȊ ǿt;s<ޯ{)j{]$D@ iF?q"lRƏR Rj">i+Tb\ y*sɬ#=#`>6E''pd\<+}YJnK.-u\ְhb^]|ʒ?-. Fyz10[b:g픑\L^l>F9[1 XFFDtJDj.x >d$WCff*I(cR@V,9LWϹ%mϴeP }I(O97]GxѦ&/Gލ4:fN*) Nd *Uq" |b[G7VuhHJ:-9f:It@ɱ)MJucȌNkoAbӟq ȴGP` ' J9i. Ĩ6 T U'(2Ҵe ?rlѴˡLݴ*ߕ!!õqKN)`ݍ>D+RL(w&` @yE8?9by(Fy˶k6eF~*8_-jĸG>jd>a!V - ;iyʼF_~wc}\Hɐ\ OxE(&4=]YhUrA!8ێMԹbL.\͓%DQhX16N o*h/?c7?oplWrFݾ{iUpB!{R!jB}-[sX"ِiЃX두0zp]iA,9>kM%-$snٳW'B<* vr+aD\%FMPI+)Dndb^$8\ \L?DȌmwշ:&nݙ@vOYTvЏݵD=<1eEw+E9D2fHmeh^WV_W)O0{p #KlY#Lyp|Ynr Cખg}s3IS ݨH}^9dt7>wst&la t$8M癟6`*@BBeAh_ZW5T "Gn0XH[/697*2ȏj\CjfEm;^jUa(4pk !Uau >'#/^}R6 dPjZrM})_3ߞ Gb2X,yk^bYaʴyؿP6-YM?Vf>mr'`3[@PfءY,IJNe %.~bFpXz؇>*S=فGl>Ŷ܌nGs!4w`Sr~cJղwӮ$bjF9~pUl W] D8&IY %+&#[h1\\x]V@V[d{&DE Pi<IZoIbt8bBw3kGZmqD=o@Պ-ِh{bVezjHblϘf@$Muƻk,|.=͑hGW5Q4][\RǑfX[$@&dMGu`[m=/e5:!.&w kӜrnK[LNTm Ğ[-`LD!Us!_6WcIZ\RCYkbpg!g2 >܇Fﳾ. '&Q=Sb'J\ߠU,=]:JJ0ʊ7IZ2o DuUF^4ŤOHS,~)\r;29mNwR bduLJ HK?"0 $K%*sS[\WZllRaQ~9GA)dPvt7_־m=tGjz@ Ue=r4޳5xΨ(!#_VD$хWZ3Kx|ba(8.?aLS+1/ĘBD89s8`QJNփB~hǿU0-e;H0]Fĝq.=rT=ݷGqz pIs\a{jxޓKĿxA;[,T%}x`4gzsYbIo}9.o_`o(RR8Q9%^ vA)P7 \1\{Vqx uaԳeg$R-nnGI)7xj 3ւQ+05+쎏p1KdƱC݃M=G??cWf>O“~ Qf{ %MtvGrL2kȯn#H}j"jS@ʊ㒉?Ȩar\A[ܻ=E]۞/bbܓlht9-*Wrѫ8bAb*Ob8|oILmAnW"uC }|S!Tz?%tl"D^[ d.!%@Sɽւ@8veleo KG㱐q- 1yck4?)?$r.:ڛUY~BsA/ rѯ\ !'|̔_ٰ`Y0j};rȖonRDؚt krtf6N'8w̿)z\w@4>D6A:cV.q`^:V 0nRb' YCJXVM@m ++ph{2+%?BW {D2 E׮zܫL NñD>C.Ԕa3Pv,:c. M$G!xLߩm3ӹCT@eCkuhzVr'43#M^Ԕ-x4#2>DJ$gI[&W~'βw4+̆b!KlJ6bK&đxWZ^%laOXlU׵@7`@ra&F=%@G$GhX=r23(G8O֢n}[- X4L!)հ6 ڠ=tᗑ{HkoPBSјӼt^ϸ OFq;*= \0uK8Io6݇p2cpő!'6c3$AD]bYW+I ۹-BxB >5K㾘vЕXs H0%yqymfxdDQr 6gl \4 G Fzg{+ ̊XW=㵳4@Ra&*x[¡v:,0ci7[TkZR/*2#J`a?Mu*r)k;N=E~9[t7._8? 3d kwoL@ h څk6x;8m/,߈_܊o~lbܒu@QX BJI2ђ]{Mt&\}QN :L&Wt#@'x_bG;c=ȽB=6UD5!Jңa΁:ykp42a}Td nWtDӾ7̙K3xnF^K`.hHm$:K@}<,;LrDw# B](oaa(/oF&탭XVzK%ul@3{Cy@Q*C͈.ihU<إkuXqKh(Zzulrkә0OUq\%6ox'0jާB鿄ZǍQZrn=b?5\^YtKs+Ur!bOJ뢐LEkKIeTi#ǚeӀĤ<~8ae`aN@,'c}@M]Y>EҵeBj)8NCīN٩7I0KH2YOţ5|!){q" "[%V"9ZiW_X0f(!j0lx#Iarp=s?3a(Pl(j>ml WSW7C~sΕ415Ho0=r(J,ܿ'r( ƯӃܽzݾk7 wlLV]ok$߭3){H{bV1?A ࿗!x{*R"qP[fPěs 1$j81P}B/Hlޫ 3%i (f~Q{>;xrD4 C,iۍˏBI6jNTS֖ЬWmn1 3nϑr;SPd8'&`pvGzuXA 71Ⲵ#œłC#! -\5n^މ![P/Wo\y.bJGn`296(&2Y" +̮( +Mhj%ٱygmy cyTgZ+((zxWNBt_X})U|eZMH"]TYX67P>%N[ 7q4!|)G \ipgɐy²°lXuYU㩵SAEh; q`eE7m|/ylͣ½iJJI6&8{%5~ JYR[mkKyTKucσ4\YTVoXMNV y̆$!<7h&t;*!~nRhXD [ّUT((TeKvI]Gr{#c'Yn@u>\k h[͋'r;d|sBaI-:l+'[iH}ģH`Mʙ"(I`<#qCJ\3kC&%ʑG}weE@9Bmfc63zoc[?brVrAr'V<SvיouΩ.WW 'ʙ??0_!,N$s`H,a]溼J;t>0Zu9^k (a8tTDPÿg޿>Xn><ɶVHMiO;TS%P4]r{+!4/KME 7K)l8ر[zM_N/vXA(j0>%xh:+RNpgFSn`_BLpt yÓzɍ~_T r+op.N. Уj gdMKI!WbjkšZyܺ&2/1 6` ~X@ )om6!Ejir \vB9:(1{`hΝ|@P^s+S(>!%8΃\o8KmI֞ǃ-RRm{]yn"(nQhw/-]ŸA$z8~'> |OL{Vuͣy^|;p:V2ڗHE^$A@r!R4\yZAl4m_xS{X&!7 @LLQ ;Ah8 oZ > P Z.od+B#Ϡcn(y%l 9wOת%Z |\tFF_灀u#] _{QrQ[vC4_r`6 U8M8+&49Bl(a);Y6$篥X[-``Ke/(Nfܓ/%9C#+ٔю*8춻h$:aˤN.i3wPa)%6&-M=^,u–XŨx5pR??/4v$5A܁!BݛLrR6 >~8ov"i^Jq"׌X@' 1 J'P^y ~ಔD"~e H)F& Tч,41h(*V^N$$ǖB:1,x˙fY]!4|XL67kȱS,$~kɉ}1*DfO}F W;$fCvwP$\*. tj |&k\:;؄(>Ўpp>Ade@.a9k2a ;ilb>ΑȁuJ=ǿQi: uucBD^^/[bj^4 L/]7`T`Ltܛjvob*MJF$|TD.6ϻ&.9Wc-~d:'QdiZ+'׽(ăpS*:2ocZfmFO#Zxp>q #(=0rKIDjϢotolG[A||7szjZHQFo j5hj&73'Ԥ5e@4Ow";T^BLǪ֪SZ_ -ة|\6ԇ&XC`Rw[]3U/'EJB= ~GU<@YSP`6af4c5%^ na?ol"gP Zkk^*%H3fPveOhdsˤU D x p6Zobj)D uqM5sy&6b bJ]߁5ɤ_6%u<|] ͷK,LVo@5 (.TCvcqjzorJ)gZX}, 7{4YJ־r&6T1Yگ -nhQ n. H,E_ҡ5E 6"z WIgQJg) ]h)1K [xM~&"@FxuzuR,3:Bw?M`2Wo _ yj_l%! ^f@.X㙠QjKL-8]-J/HTŦ9f"'F ԅ=>x{H[ou:ǹh Ņb'hֵo}E-[7߷!; ʝxmbMzvtfz;Oj2xOo>;[,d5HX&{4# s[Dر9}fd"q|xa1/U-܊RXn9 MgFEkm2^W Tj?rpٺ:o9c8ֺ/JhJ-7@@{|&7^a =?! gs 6):"f)'>Q6rU^(&3̐Dቕ7ʹN>*XihlXWhL  X%;U$cXcYw) ]ڸ%hyӍ9_c:8P1n4L<_zrUJj2e5҆S+g0gWL̲ٙD` [6DKUEةZ;2U< 餸3oWvoA*}/^{ e: 5%6q99f?z2Wˋ'*/5=A+Tƕ] -/~yfucf;?c]ʝ@܄i"4ԍm%@q({LOE!ܗpYɬ 띂ǀm+3z<iX4Cw @ \r9R3Q:ݻ_i3{f%sG]zPhM=`+kڵBZudM20wdjZoFY2#пnۘ#g9` 'qÐaQM%ם5]gT{BDw{nr(Pq@PHrrSugA8[Չa*d)fY:eh1_GunI4,A *vWc"NJ&"J#eOFb7<W갥IPz<l-a I&͊)IdJA$d٤?OsבHb'3ktuXm6{ rb;egǹ_K~Z_ BmޑZI~0f'rH9l+QW|GA΅ 6ez,ӎ{\lkNaQ#;'Z|٤љ`InݳZQ+R!d)Ja*$)/s MaUXAcvlޤ}2 Hrbw9sJ1Kr`=z? 1 D(Mhz\6"2F rDqՅQ'T)J,6TJ}j&BvT|f.Z< *n cEH`f}M0:\8l\=#n(7KgJ20*G~4b^AԇPޯM?QEfMcOJ,#+rսiiPխpþI]%!6`/֪vw~N `_׎ A*A;įԏ3 j$3m[Dp=pU,.0(c.˩m!V'g4l9Ym'*X^W or[ u @n<ߣݾo'U ^\sǛG >jJjmj!JT:+`˔pKԟpLW? ϴ>V|]$cAU0q-X x &A*UnYjlsN4CkҺ|3g =2B2eiTꌈOn9[rp4J_ڲY˝*m3 Z n#JW(11tM8c c /:l5<{Gx5d1~N:Qf6' gftsc_7p4.T6<ҭӴ[0=jlbY0'E9 M"X+% )S:yeFHPju|l@Oꐉ\MMe"G@S5Wr"Yv ֛ēܰAR FF-ւ3&8e XTq@pO0@Υ_cq 9nfF~EAg@A}6FK'B` dC.ѵ-zv͋st<,6َN8xꗢSX>113 p(ղS7<>[%3u9{{@AUsՄ4ުA{MӮnx 5s#[p6aCzZ t&җ(KFc} {<F;q)(c/A^'`.*H P(=Ή~-p fiVŻ3c4m5q#yJ $̻| nAdQ+ Y^F֯}EIS1䶰顇7ƶQ+Ҽ.?L.xR7掎'n}T}h9*qIE 5?qiۻ`bLž3i=&sH;+ܙ%xFQuS>!U5䙮/'3/Jά~04>@C{ˎjO] 5iAn!ŲH:SnW^;)F:RUϟx,_D>Kvn(Pzt{7ɅR4gC'1 c:3 4%DΰXKo [8ǼZ1@-( q;ucLاmqסݾuqA\UYJ: %kZ-3Fe eS4̿=17Ig7݈4bs T Urਭx8ַh0m-E\CߺFwjT \vLD>\@]|\2@JHys!n3HGċҨqxa3i|d7kէ1ےfuVD*b(?gcGB@| uI=R!ߋ0nAk7jOAAh 8J뛨QPXD vaʱ-u̴ 6F}t ߿n0s:sWaN;ÙoϗI"-&W&8`bj x߰BSph:4b /PىP@s'2Ec?s6bF݄uYφK3g;B:N ULxևljՠwߢJ+DB5#'+FUKyD0Z֓/ǫDG&:_t~tқj6G>}zV~^Oxs9~FtnolU%;m|Sup8&5gt8!rleZRx;4)hZw/- ~kWqxEZܫh cuy=DPn<܈\lc{5zYiY"ns*Bײʷf6'/7ʦ+چ~\r}5nVGk>I z֥+>Lt$CNNsj:QQ A(RW)˥@b5W<DAE= :z%nܜ )zgߥ vm p% BH͵f>ZnJsoed툘;fD5cdTX1` N{,`^EIrս|#vQM$,]o%[Kucg'Z=6MO|A.=K@=r HyGZ=f’dÆi# vqQq fh}jY%9!ˠbx ?¡UR cKl{O~ %T'y{pNqP0oQzaN5s#s?Q %iQ~ oQpZU+TB@mՙm2u𽆹/4$+$Z1޼sB;*v@#ndi-/f}yi#α2.*o߲GEG$EhJc/p4hfWA h }s-N)\ִ( =7]wo@Q:`4̀~@ԇQ7L١4ҋtDd|raͬmZE-6FI"7!L ]Twfn-y El/7zlE]eӢ}Ğ$>0 gsO:L _G}`~5`Ap$tJ+t=W?G5 o mǏWD$!iXK+-٦tcۃn F˧ ?Il,QD"y?5],DQ𒬟nVDf<˵,pZ2 A@W1G5wm9P[ֳ=Q/+ΉuPb.M ׵#& ș83CUlϟLDUj) Ŕh2eD7ݲ^X]=!Ԁېz@ݷ=+W+(lկЖEfH6+TC;%G R9?2f`|(+K\tTvY=gAu0xOἕZ5#vGt^" œ*LAar@ԝb 3)} |j( #LHQVR`*Mٓ[kryC /4hbFˬ~ AyAFT̷T/W >2UR.:JWGXL\Mh&l\{>E#:̎wK+V2㮇_hEwI8QA^M1GbB6dҪ]Jgd XVΣPvQy)!8K#smS Zfx}߅nb%t<2SCcU  `ƱT@hҮvJl˾5q "lc݈+a 89At%,0,Gșڰ y!K _]-hC1;x-9 ukhH"ǵ0-s1|&7 AF`Q < 6`$: @^=kBs.D{_E(_-i+gy5:@fY51G!Ycj-Jm݄I~Gmer%em->;ӜwЩ5w?|>>Ӧi'|*;z{0hh>"9y/[~b= ˶;Ҥް7UE5z]; x3<q9M *GMkKHWq817*Zp}ImBvOJjzŘ헍fb.{\#s ,ڣ>(VFh8m>Ũ` 9?9{UzN5A(w?nͧJ,{цSt<8| ? 3ʶd`lҎQ߸%iCPk}}&̓0a.48\UfPUj(erۘ{4}db<}'ȤP6@;dr6p7˛dA*.ĀRlk^ =6})}bOEIu=H=9g³b;$pȴ8|Jc"iDy4^ M.L,Oj4 ByTOuxw9t/eKCӱ6Yw5ciC^V!+'xmht*.:AUc-*]hge˿U" V; ڊAKZSS]8Oʫh/fpw͝7k7 9ݑ}5z)e+%vv ,c;cUHW LiO_`ٖ{j?y ,z\}KA0` ʡ bltA2fFFgbh%QPȑzvG /LR@럋l6_Z/m_-Lv??PKmhI)u:e&B:X+'(hqOACrtAK @Ґu삫v,;Ҙu WmwbA4C.tQB?w\Ha=2$dF )Gw/b;?{[ ab- )>Y?W4n-?Uynx+m[]ԎFp*oti5S f yi ;n+D3fy~lDQ'r4+;X1Y]قڗ?R|z~Xq%^=etTYSglby7%v,?6(~f!y;HWY*~K,@]u1+T-i/'? WC(Dv3c+٬ͪz#NodVSyO {F|"l͑^? 5+PKU1Y+ǹe úK~ '^Cy|[gND'4WY^Æ4EA8vi" j\7d8Zz7U8qLw *L-;$Q/cuT&%C+\6bnPB#ZBcBv`:[?HQy^wAl3F^=/l@%me7$ODŽ-k4 QDyW0Ze|n^Më3FF BzB @%esJaObq%ÕjЇrӣ̖g?hϬMZ%”:56R/6'—NΤ)to_*WC7{nœyWj|~gAl(;zL`TkSV&ڑv b:%M|dIrKzu 94LHZ߰-~_Oߞc1x`I"8Ԥ9zytFo0yg$ԡ{^C"K験?]S1-ߞGdsdBxGɽm d4FQv}.~HGKJظУQi‹8<1*Uĭ}2̴zb@V<M{$:Yp@ٔYhHq2{\E@VaO *#"kl]k;FiXXuR_?'TYM y^ychDwm߉KQ/|XJ(ۧwͫ ,.,gK>n:ګu Bv8X7Et49azT1_+]6{fo.]aZpW#_9S^rR<,2<ؽ~7~5']5#9iՠᄔ\̰" s igZ *n?U"}¢e$vh7$ȩyukTtn?Ȃmuro4" r-]cTpꊗC4l&`.l)zOY-)(l.<7zd@xTծNk$u<杓Ѿ#ƣzSf"|1^2Ɗ)j*0 SZ}a'S6 Div tr/Aহ/G_7A"d[mGS@Šo?6QVdDį|ǁ6Zu>,i >h!VHx&!v boK=P&ʮπ&C&4ϚߗW`Z?^P%7rv/n(dsoetv\]gqr #r^%!Y}OW|?X* =ި@|OP/4z6-hkoQ$<2љRf!Kg )B}&RMQ[򱹸cQۓfN%j bPwEa|XKf"FXH4VcPF9y,{-' ~ xB@_>RUI,%۝ʭkJlZ!}9JU"E2 ">2V] UΙS;_ԺGOжs ;txa̤Y.TQ Pa8Uh~)uwapUZ'~?_JOI!h@G}#,F:zN%gs "ioLYN`=`ۜX[iEsةt'|j8X?VKs-Xf_ 2s(W=1)\kK2loq[Dzjغ0>QjN+r@*{$%/+ X\BrN|cb7s Ny~Xv ܪxu0A5H$$v/ݨA2îx*b>-lȰբZ̈SQqwR] <"X3Ro<_*Ś{P(Kg.pœ1,© ^Q>C08qx Y9Ճ8zC'R&Ju`>>{v" ڠl.FVg sbE,ƒ*%9ob:OEbtArѯOn@~\<|{)?q0TaG'}LJJkl#xNVr4g8;[+I# -wѶ 3.ىyNZp(ts:çGr]=fo;SB/ |s̽;K;&\!ͪ>d1dWypq7ug> `1P穸vH+]`~!tWwx ƈAw4PU;t?Цyυ3!ZBIgfhV ~BH=Nނ&ʉ& Ek6 [+-0*֘ѣ. Y~:'U>~sc*3OVtP2[G T%4K^[M<I9dO:q~ dDcQ;xlc-r߸s,Qy v[ +;SDZvqOPmL.{MBĂ_y `.ut.cؐ}T+JN8cx``}TH4@ح'Hd$`!+ .3ʥX>ѧsH^@|B5?y2302s&|H,]zmanp*ӕ%r] _A$6n`t*_?#"rx}>&3E%,SξWC84$vM 9ZO2X:G]T) mK{ho*LY4:q0BV}Fi:l_/a8|k(g:4mH%66Uww_rNEP~]XD4u[|%_þ3͖R\&:M1a/a-I8dNɒmgTg7GqY:!JM7c`׼e1j-"&?D`@=~:ٵ4.vZ/ENw!I{ Yr4"{7(Zde*d zZb [n >&5>lMA{3 z]ra= WU4T]Cl%ƐM =LW>lT)\X(4f+?~="h. +;JdI7t{;;- 0N}d5^b`bo(Äd↝"zᛧp}|r9: u\ ̯FswU,>Prp:fNP#x9# o挐qF. S?%dyH.ʍ IEƂf4%mKS:/&@lʍs[(כ0tT4K6$ω[M{R,JnD0iS+2R4xB @ m(u{/|\[ie;;o=Dm lP۠aZ[/N(=g?Lil"2RPakHҨZL}fUU *0`xӯ^YP6ct+a/ dV~UW38uPuTWPhCMhw3,)paAŮFUۇvxM S+@mr}ޣ4} }xǠO80}F픢`cˆ$oj8 .c^;T;,39C `dJdf|xlnZdpqbegC򞞝 pJ-&ռPAnSQlzy` 0 eP͒.q> | 13uڰ*X֟D|sq@: D p+">StOu7K@M&ħn႖!̕\8nZ=*q,}J~zpCӳ͠'-StO"wd1:~Ɩ)"rW`WX6G|~'9/=3iK;ѰlBNLѸ[0Y:s#eYEzFL>գh8ȅO,VNS|jzm+5Pm¢"I7,x{*OוkYCJ֛4ҞoAjinXay%8Pt_oD![? ;= A0wy^l~Az{R:'aHG1op[*;CTxTkg.}kŮ6TAEIIH 4Ӫ};y-NEN <`݇ˆv^#pp^Ĭ"PwSdYTmw>W;dkVnp+z6j|+!S"tjf!C1&H&Ajp0N'T:,Ǫ?1Vx Q:#-#{h Y)3h ]/ fgYr+S f/T}/90n'WX A'`cQy(Jd,|j_uw)V=5GhP9t=[㬤m_;+޼}dh:3

m4N5;/ʮiiѵJMřRDzJ#rh|1|Tu i}j:\cwz8q-Qp䅏Aǐγ,ő6{*ёU[Aާ>G;# s b{vkw`3FQ>^57CD{khwt[^}5 >G|\&C>]FlWh |Pj%f3$7ފY 'B%kœx# La!%TGLofr2"I$eb8nkG7V6-7UdH*:)"TGqMlލXh!]HG]qFB4 C t笐v*p><[F32OyC[7~^ ›띕j#Mit²C|]d;MA{},Ch^4Na-')\Ʒk0#Q>_B.=B9*$.$Ʈ}㛤to>Rt Goi>T{R$ Gd)ˎ/Ż.K\%/Lf>#h4c >LjzI*T[nΤKc ' }s;$=u;ͅGX6Y֒8~$z\o󞎠BwoOEwu?IYXڕ-gFȓr]jgŤ3iГe~;_GrOvSy#gcZXO{ٜkf*SIˮVQPzM~+sBw=9qͽ>Њ_wg.6ʱ俊b9W2'JʧCO`"(]$gDQqqo#=X*/\ޭ0guSw;kְ5Yp؈n{!LEtRk9 y$ mH]LX[_"5]AU4z +Fs=Ϳ'c&MTla5^ &}σ}}Bnձ 78{0[T6)+m; $=%eH!?tv R]=xȒѼIVxQ)u*(G_o .+xvw MͲ)11IX7^KS_Ic_I9Z.-բ)aAK ՜ζ &MHy ZZ[ܷ֨bPRrH&tR a^'ܝf4H.,_PK#ȲC ]n@/~ ~ rX j|v;KBZ$N`5A٤J֮_R] ]y߿ގ)ġzEς``OA q*9A:vm@a_zl@>DA mS`jg8g:gaSAvDXS=E*U0oI^-o*{7{;5njTIZx_XcV ono ׎ÉQ.F|Kikg >L1^/y]b5_eCЂ^{8  /o9WFuT[KHΜLk:,i5WF[x5YCPٞc[r[s' axL?TvDq[bN W͢Ggٓ6Fi6Ӏ+eK۬/0ԃ0V`HH]:AQ>y!ה [4z펻LW6 w[xv~0e==0bZ+9;Z/؍azeǁ^Y &T|퉏_J:3{rk^}TM*Ko.QMdnk:V _ IC:9B~":wtp;/gkPToCS6"2LI˷XJIZ6ynqG ./y)BB۰ %:LjSkisHa!Jd(Zm qt)p̝$WHP@B81N0UbBJq?WRrvaNlsøX:>6#E\;E\(:"5{z.ɣ4z-?,E ;CD"-سLkQ"3K-bLTGā~ioG,VPϻQT[|h.FN/mO뀫 -nK}`K5 ]-x|L)?$xș:قT&%ݵ c,dޮ/ƝpZ'6N =D[4!B` Zj`+kIBAu&ޗKdؼsc1" C>q5pnHzf}VV)ut'Ӑ: WD n$2n W  |[n åS7 E)'Mz,PI9\nENgz +6yl<3X+YR{\Y<ř@5ޡ54ƅ(i7qVٮvNӭ 2M(*|p|5dn-6(62њ=sP顑PJxf9^F:z-U2>11,h Y3e-EGR_36Ҥ3FvY__ 7رJ}Rй*D O!p+(gwpA afÒK^fj`"zP,zU oז$όJV2Nv7d[lOc\ۣ.Ah|\Jy} [D9gx4lmB+*ˏr3m\I2F08!+J$,]hO)%hJ+%Y%xx E~ X/|جaGۈ*~e*&Q*ٶ3-z5dV8,XZC,H# E*ȼ"MUG*hZ%7ZxUYWQU[\UM%01y#w+xw2W[dejQ@>GV ms=jvYceSJO; .(zOS[|0>u JIU<^kISqK5;$u KGhڏK+(HH&orPS5dis}B@`ϋ phJóvTJx`12$rQjg$`)HAU!܏DŽH{Y5cOeȀb!24K\\s">Tg:@9 ̀Eg}]w^ 1CV(-1 5d]ewƝ?lG5xhXڏC!_MO[ݸf*Hc%~m3Wuw(4BJ~ L]%J~ra˄^E ;k`xnS:*^lKv,V_fIsi/kwCJk[WH6-^oPBNwS7D%>.N\3e(QIKGu_B΢d46ِ(Baڃ=N^ (2scX611>RRH㌐(k%SN |+RWGYckI c#WL]_h AJPM8x |xK\[t޶B4aplG>}\U[5CڒY0K9/{DKE8^i;ٚ;*K7ÿ=%B1Na.J 3oK#%D0jxVl%Wy1wO T5> Wqzc/9RG1t^r0D6*(رXa9V:"_M ]crgnڝ1T0 }'z\NHɢp:T}.QCIdlDWDWWA m ̉K`R}"<ޕ&+$<|t;;+Yԥ.^S\rh`\gעmB"hͳG!\ iEAld`E$E1Ji:[%BίRƓmIR2bhg24x =Ѯnpiyfh޳O{ri?3<A1c c\d1sh-[YyVA:&c3Xw,Lۛ á f*M^gJgn,PG VP}) @x9 Ixx?f7pf,fNx3"Yk/ ,*Ё ]ߝڪXw]Qs#vHuwR-(;goSzQ l ydݾEigl>s8N2Л*)_ H&T@v-D~3rR^(bF2 - Lg޿P *r6縞p(+a8};hT:56D%OmGXlXͭzĝۄܳ)mɃ }"aWn+k^L\ ı3FLlna'.- `-wUg@Ր](⼰3lS fW@oJt7gQ%!t 'd., PŸ0cw$~]Veo&9YË*mY/&MȜ<'ē_aʉWg`y*Bo,7DOיEgR(yn$8 CqLkХ |AO32?TD)i|Ɋ*ZV @O!a D{Q#!1lCWpp|`*z=!Hq`V9oQ%Y*,e( lՉ#d5g|^^[gC?lVMQd1%RĴA 99 C8 : 0LX epٛZ?f^ ܌@$?V8yf5)+cƴٌ.2vPPB^4j3)\kk-#z@;=,ڿRi㍌dC `S 1F玌d_F wb7A/fkG"eTmBڗ" `5lm0%HL!'$'_{gWRi$S# /=jy0U81hy⽁qu4OKr*w^J-`8C5C4s%~G{G*x )hm+t+[|洓T_x]bp8Xq L%̚zаXՍUxL9۠5C2 'ऌE)zghfOȫ^J{j@Bi'4 ˴ ;Y*1$G1٪':sAR!{ B`vEv_ r{F1UF>`{uF"s\T{#ƌ:=S}1FCo Mܚ#Yk|.(c̓Bb/RB A]{H=,eq2}l>9f{f G| 5@o c͸޵sz^qޟ囂֦9Y3qj`sG"Dc&4hURLdQ 6$} B*䯉Pmns.$; IlFkdL^fcZCG6lSlʿ MGȹ6e0/WQww<+##(P9`: l|sH.T7|xkFL)u0EYi/r(> %(W!"|5f^ʲ*:#Xmv MH2q/3/Ue?0'3k:d>y!PU6TR&sˎ!D1QU72*8CG{<(hQ٭SNd䌔5j C:\F>jX?_}~"kkUf.%VYҡܗUsl>zu,8CFЛ0b١w6/f<;03Ӳ 0ꔮ]~UxCޢ)}X{8lq?_N,E  +[BP2(uJI!i 5]HaZ턎JPSZW6%vx9pʹlF1{ TbTk]!jk+FI}ӶÚ8;pw;`!G\)$\Y/P9veasQ[X*S,CRG9jpaH<pQ4^wmH.DGR!T%7tvnF_G_okXvWmrI-{@Ga*])7Im\=믯![?hƕ_{[=sڡIǸ=Ipo vc"C1E ص 見aC^Q{ͱs &C?|Q[⨚V͛'$clué"lWX'|a}1f9OHw7ve$o5M]QmfmgyX 6{>T:ЋZ8W$%.`(P&[f%m|:ܰr `"նO$1Jcq3 6Ozdɧ[h'{O"TA'/$b y 6Ts`HVvՓ +<;ǏYH\D-Ңd} r@D^w.}O#FI2u (f>`"ӱS'8bhg#hY+;Xc/m4jՄodLB${ ܗL)dd%Xj7BM١pUP5x7w6۟A'ǰb_g!} w3q:6%m Ȼ/_P/-̧fNS:Oh+m*9I !l[g1:`#2RPT% H?f{\.أjVG19SR8weۖ <^S%VmR(#,?2<2vfdWϳ$ P-֣dbQsBr,o R5 W{;~Q-Y;dEOnT q6SCB~Z>Y^`%l)1 9bayds%o/UqRN8]91L9W6.gZAK_:~"Еh#owT=vRnA^mo?Mҳh WQxs!|Lf!{~..J:Vb#Y?SCD`t%YP m޴RtVeR1yzz-p%+ Ş & kMRQٿ`A7\U(]c 1ugkѾˆCt7 _2X5ohz+'d `Nv?=B{Tݞ*y" ^і ZlXTEƹ IOBus Bridge 10b5 9030 Digium Tormenta 2 T400P-SS7 or E400P-SS7 Quad T1 or E1 PCI card 1000 PCI9030 32-bit 33MHz PCI <-> IOBus Bridge 10b5 9030 ATCOM AT400P Quad T1 PCI card 1024 Acromag, Inc. IndustryPack Carrier Card 1042 Brandywine / jxi2, Inc. - PMC-SyncClock32, IRIG A & B, Nasa 36 106a Dual OX16C952 4 port serial adapter [Megawolf Romulus/4] 1076 VScom 800 8 port serial adaptor 1077 VScom 400 4 port serial adaptor 1078 VScom 210 2 port serial and 1 port parallel adaptor 1103 VScom 200 2 port serial adaptor 1146 VScom 010 1 port parallel adaptor 1147 VScom 020 2 port parallel adaptor 2000 PCI9030 32-bit 33MHz PCI <-> IOBus Bridge 10b5 9030 ATCOM AE400P Quad E1 PCI card 2300 Euresys DOMINO Gamma 2374 Euresys DOMINO Alpha 2491 Euresys GRABLINK Value 2493 Euresys GRABLINK Expert 2540 IXXAT CAN-Interface PC-I 04/PCI 2724 Thales PCSM Security Card 3376 Cosateq 4 Port CAN Card 4000 PCI9030 32-bit 33MHz PCI <-> IOBus Bridge 10b5 9030 Tormenta 3 Varion V400P/ATCOM TE400P Quad E1/T1/J1 PCI card 4001 PCI9030 32-bit 33MHz PCI <-> IOBus Bridge 10b5 9030 ATCOM A400PE Quad E1 PCI card 4002 PCI9030 32-bit 33MHz PCI <-> IOBus Bridge 10b5 9030 ATCOM A400PT Quad T1 PCI card 6140 PCI6140 32-bit 33MHz PCI-to-PCI Bridge 6150 PCI6150 32-bit 33MHz PCI-to-PCI Bridge 6152 PCI6152 32-bit 66MHz PCI-to-PCI Bridge 6154 PCI6154 64-bit 66MHz PCI-to-PCI Bridge 6254 PCI6254 64-bit 66MHz PCI-to-PCI Bridge 6466 PCI6466 64-bit 66MHz PCI-to-PCI Bridge 6520 PCI6520 64-bit 133MHz PCI-X-to-PCI-X Bridge 6540 PCI6540 64-bit 133MHz PCI-X-to-PCI-X Bridge 1775 1100 CR11 Single Board Computer 4c53 10e0 PSL09 PrPMC 6541 PCI6540/6466 PCI-PCI bridge (non-transparent mode, primary side) 1775 1100 CR11 Single Board Computer 4c53 10e0 PSL09 PrPMC 6542 PCI6540/6466 PCI-PCI bridge (non-transparent mode, secondary side) 1775 1100 CR11 Single Board Computer 4c53 10e0 PSL09 PrPMC 8111 PEX 8111 PCI Express-to-PCI Bridge 8112 PEX8112 x1 Lane PCI Express-to-PCI Bridge 8114 PEX 8114 PCI Express-to-PCI/PCI-X Bridge 8311 PEX8311 x1 Lane PCI Express-to-Generic Local Bus Bridge 8505 PEX 8505 5-lane, 5-port PCI Express Switch 8508 PEX 8508 8-lane, 5-port PCI Express Switch 8509 PEX 8509 8-lane, 8-port PCI Express Switch 8512 PEX 8512 12-lane, 5-port PCI Express Switch 8516 PEX 8516 Versatile PCI Express Switch 8517 PEX 8517 16-lane, 5-port PCI Express Switch 8518 PEX 8518 16-lane, 5-port PCI Express Switch 8524 PEX 8524 24-lane, 6-port PCI Express Switch 8525 PEX 8525 24-lane, 5-port PCI Express Switch 8532 PEX 8532 Versatile PCI Express Switch 8533 PEX 8533 32-lane, 6-port PCI Express Switch 8547 PEX 8547 48-lane, 3-port PCI Express Switch 8548 PEX 8548 48-lane, 9-port PCI Express Switch 8603 PEX 8603 3-lane, 3-Port PCI Express Gen 2 (5.0 GT/s) Switch 8604 PEX 8604 4-lane, 4-Port PCI Express Gen 2 (5.0 GT/s) Switch 8605 PEX 8605 PCI Express 4-port Gen2 Switch 8606 PEX 8606 6 Lane, 6 Port PCI Express Gen 2 (5.0 GT/s) Switch 8608 PEX 8608 8-lane, 8-Port PCI Express Gen 2 (5.0 GT/s) Switch 8609 PEX 8609 8-lane, 8-Port PCI Express Gen 2 (5.0 GT/s) Switch with DMA 8612 PEX 8612 12-lane, 4-Port PCI Express Gen 2 (5.0 GT/s) Switch 8613 PEX 8613 12-lane, 3-Port PCI Express Gen 2 (5.0 GT/s) Switch 8614 PEX 8614 12-lane, 12-Port PCI Express Gen 2 (5.0 GT/s) Switch 8615 PEX 8615 12-lane, 12-Port PCI Express Gen 2 (5.0 GT/s) Switch with DMA 8616 PEX 8616 16-lane, 4-Port PCI Express Gen 2 (5.0 GT/s) Switch 8617 PEX 8617 16-lane, 4-Port PCI Express Gen 2 (5.0 GT/s) Switch with P2P 8618 PEX 8618 16-lane, 16-Port PCI Express Gen 2 (5.0 GT/s) Switch 8619 PEX 8619 16-lane, 16-Port PCI Express Gen 2 (5.0 GT/s) Switch with DMA 8624 PEX 8624 24-lane, 6-Port PCI Express Gen 2 (5.0 GT/s) Switch [ExpressLane] 13a3 1845 DX1845 Acceleration Card 8625 PEX 8625 24-lane, 24-Port PCI Express Gen 2 (5.0 GT/s) Switch 8632 PEX 8632 32-lane, 12-Port PCI Express Gen 2 (5.0 GT/s) Switch 8636 PEX 8636 36-lane, 24-Port PCI Express Gen 2 (5.0 GT/s) Switch 8647 PEX 8647 48-Lane, 3-Port PCI Express Gen 2 (5.0 GT/s) Switch 8648 PEX 8648 48-lane, 12-Port PCI Express Gen 2 (5.0 GT/s) Switch 8649 PEX 8649 48-lane, 12-Port PCI Express Gen 2 (5.0 GT/s) Switch 8664 PEX 8664 64-lane, 16-Port PCI Express Gen 2 (5.0 GT/s) Switch 8680 PEX 8680 80-lane, 20-Port PCI Express Gen 2 (5.0 GT/s) Multi-Root Switch 8696 PEX 8696 96-lane, 24-Port PCI Express Gen 2 (5.0 GT/s) Multi-Root Switch 8717 PEX 8717 16-lane, 8-Port PCI Express Gen 3 (8.0 GT/s) Switch with DMA 8718 PEX 8718 16-Lane, 5-Port PCI Express Gen 3 (8.0 GT/s) Switch 8724 PEX 8724 24-Lane, 6-Port PCI Express Gen 3 (8 GT/s) Switch, 19 x 19mm FCBGA 4c52 9234 LRNV9324 2-port Built-in 8643 NVMe Exchange Adapter 4c52 9524 LRNV9524 2-port M.2 NVMe SSD Exchange Adapter 8725 PEX 8725 24-Lane, 10-Port PCI Express Gen 3 (8.0 GT/s) Multi-Root Switch with DMA 8732 PEX 8732 32-lane, 8-Port PCI Express Gen 3 (8.0 GT/s) Switch 8734 PEX 8734 32-lane, 8-Port PCI Express Gen 3 (8.0GT/s) Switch 8747 PEX 8747 48-Lane, 5-Port PCI Express Gen 3 (8.0 GT/s) Switch 4c52 9347 LRNV9347L 2-port Built-in 8643 NVMe Switching Adapter 4c52 9547 LRNV9547 4-port M.2 NVMe SSD Exchange Adapter 8748 PEX 8748 48-Lane, 12-Port PCI Express Gen 3 (8 GT/s) Switch, 27 x 27mm FCBGA 8749 PEX 8749 48-Lane, 18-Port PCI Express Gen 3 (8.0 GT/s) Multi-Root Switch with DMA 4c52 9349 LRNV9349 8-port SFF-8643 NVMe SSD Exchange Adapter 87a0 PEX PCI Express Switch NT0 Port Link Interface 87a1 PEX PCI Express Switch NT1 Port Link Interface 87b0 PEX PCI Express Switch NT0 Port Virtual Interface 1093 7761 PXIe-8830mc 87b1 PEX PCI Express Switch NT1 Port Virtual Interface 87d0 PEX PCI Express Switch DMA interface 9016 PLX 9016 8-port serial controller 9030 PCI9030 32-bit 33MHz PCI <-> IOBus Bridge 10b5 1205 Becker & Hickl MSA-1000 10b5 2695 Hilscher CIF50-PB/DPS Profibus 10b5 2862 Alpermann+Velte PCL PCI LV (3V/5V): Timecode Reader Board 10b5 2906 Alpermann+Velte PCI TS (3V/5V): Time Synchronisation Board 10b5 2940 Alpermann+Velte PCL PCI D (3V/5V): Timecode Reader Board 10b5 2977 IXXAT iPC-I XC16/PCI CAN Board 10b5 2978 SH ARC-PCIu/SH ARC-PCI104/SH ARC-PCIe SOHARD ARCNET card 10b5 3025 Alpermann+Velte PCL PCI L (3V/5V): Timecode Reader Board 10b5 3068 Alpermann+Velte PCL PCI HD (3V/5V): Timecode Reader Board 10b5 3463 Alpermann+Velte PCL PCI D (v2) (3V/5V): Timecode Reader Board 10b5 3591 PLURA PCL PCI L (v2) (3.3V/5V): Time Code Reader Board 12fe 0111 CPCI-ASIO4 (ESD 4-port Serial Interface Board) 1369 9c01 VX222v2 1369 9d01 VX222-Mic 1369 9d02 VX222-Mic 1369 9e01 PCX924v2 1369 9f01 PCX924-Mic 1369 9f02 PCX924-Mic 1369 a001 PCX22v2 1369 a701 LCM220v2 1369 a801 LCM200 1397 3136 4xS0-ISDN PCI Adapter 1397 3137 S2M-E1-ISDN PCI Adapter 1518 0200 ThinkIO-C 15ed 1002 MCCS 8-port Serial Hot Swap 15ed 1003 MCCS 16-port Serial Hot Swap # MIL-STD-1553B Board e1c5 0001 TE1-PCI e1c5 0005 TA1-PCI e1c5 0006 TA1-PCI4 9036 9036 9050 PCI <-> IOBus Bridge 103c 10b0 82350 PCI GPIB 10b5 1067 IXXAT CAN i165 10b5 114e Wasco WITIO PCI168extended 10b5 1169 Wasco OPTOIO32standard 32 digital in, 32 digital out 10b5 1171 Becker & Hickl PMS-400 10b5 1172 IK220 (Heidenhain) 10b5 1201 Becker & Hickl SPC-6x0 10b5 1202 Becker & Hickl SPC-7x0 10b5 1203 Becker & Hickl MSA-300 10b5 1206 Becker & Hickl DCC-100 10b5 120a Becker & Hickl STP-340 10b5 2036 SatPak GPS 10b5 2221 Alpermann+Velte PCL PCI LV: Timecode Reader Board 10b5 2273 SH ARC-PCI SOHARD ARCNET card 10b5 2431 Alpermann+Velte PCL PCI D: Timecode Reader Board 10b5 2905 Alpermann+Velte PCI TS: Time Synchronisation Board 10b5 3196 Goramo PLX200SYN sync serial card 10b5 9050 PCI-I04 PCI Passive PC/CAN Interface 11a9 5334 PDS4 12fe 0001 CAN-PCI/331 CAN bus controller 1369 8901 PCX11+ PCI 1369 8f01 VX222 1369 9401 PCX924 1369 9501 PCX22 1498 0362 TPMC866 8 Channel Serial Card 1522 0001 RockForce 4 Port V.90 Data/Fax/Voice Modem 1522 0002 RockForce 2 Port V.90 Data/Fax/Voice Modem 1522 0003 RockForce 6 Port V.90 Data/Fax/Voice Modem 1522 0004 RockForce 8 Port V.90 Data/Fax/Voice Modem 1522 0010 RockForce2000 4 Port V.90 Data/Fax/Voice Modem 1522 0020 RockForce2000 2 Port V.90 Data/Fax/Voice Modem 15ed 1000 Macrolink MCCS 8-port Serial 15ed 1001 Macrolink MCCS 16-port Serial 15ed 1002 Macrolink MCCS 8-port Serial Hot Swap 15ed 1003 Macrolink MCCS 16-port Serial Hot Swap 5654 2036 OpenSwitch 6 Telephony card 5654 3132 OpenSwitch 12 Telephony card 5654 5634 OpenLine4 Telephony Card d531 c002 PCIntelliCAN 2xSJA1000 CAN bus d84d 4006 EX-4006 1P d84d 4008 EX-4008 1P EPP/ECP d84d 4014 EX-4014 2P d84d 4018 EX-4018 3P EPP/ECP d84d 4025 EX-4025 1S(16C550) RS-232 d84d 4027 EX-4027 1S(16C650) RS-232 d84d 4028 EX-4028 1S(16C850) RS-232 d84d 4036 EX-4036 2S(16C650) RS-232 d84d 4037 EX-4037 2S(16C650) RS-232 d84d 4038 EX-4038 2S(16C850) RS-232 d84d 4052 EX-4052 1S(16C550) RS-422/485 d84d 4053 EX-4053 2S(16C550) RS-422/485 d84d 4055 EX-4055 4S(16C550) RS-232 d84d 4058 EX-4055 4S(16C650) RS-232 d84d 4065 EX-4065 8S(16C550) RS-232 d84d 4068 EX-4068 8S(16C650) RS-232 d84d 4078 EX-4078 2S(16C552) RS-232+1P 9052 PCI9052 PCI <-> IOBus Bridge 9054 PCI9054 32-bit 33MHz PCI <-> IOBus Bridge 10b5 1171 Becker & Hickl PMS-400A 10b5 1208 Becker & Hickl SPC-830 10b5 120e Becker & Hickl SPC-930 10b5 120f Becker & Hickl SPC-150 10b5 1210 Becker & Hickl DPC-230 10b5 2455 Wessex Techology PHIL-PCI 10b5 2696 Innes Corp AM Radcap card 10b5 2717 Innes Corp Auricon card 10b5 2844 Innes Corp TVS Encoder card 12c7 4001 Intel Dialogic DM/V960-4T1 PCI 12d9 0002 PCI Prosody Card rev 1.5 14b4 d100 Dektec DTA-100 14b4 d114 Dektec DTA-120 16df 0011 PIKA PrimeNet MM PCI 16df 0012 PIKA PrimeNet MM cPCI 8 16df 0013 PIKA PrimeNet MM cPCI 8 (without CAS Signaling) 16df 0014 PIKA PrimeNet MM cPCI 4 16df 0015 PIKA Daytona MM 16df 0016 PIKA InLine MM 9056 PCI9056 32-bit 66MHz PCI <-> IOBus Bridge 10b5 2979 CellinkBlade 11 - CPCI board VoATM AAL1 10b5 3268 IXXAT iPC-I XC16/PCIe CAN Board 10b5 3334 Cambridge Pixel HPx Radar Input Card 10b5 3352 Alpermann+Velte PCL PCIe HD: Timecode Reader Board 10b5 3353 Alpermann+Velte PCL PCIe D: Timecode Reader Board 10b5 3354 Plura PCL PCIe LV: Timecode Reader Board 10b5 3355 Plura PCL PCIe L: Timecode Reader Board 10b5 3415 Plura PCIe TS: Time Synchronisation Board 10b5 3493 Plura PCL PCIe 3G: Timecode Reader Board 10b5 3565 Cambridge Pixel HPx Radar Output Card 1369 c001 LX6464ES 1369 c201 LX1616ES 14b4 d10a DekTec DTA-110T 14b4 d128 Dektec DTA-140 14b4 d140 Dektec DTA-140 1a0e 006f Dektec DTA-111 9060 PCI9060 32-bit 33MHz PCI <-> IOBus Bridge 906d 9060SD 125c 0640 Aries 16000P 906e 9060ES 9080 PCI9080 32-bit; 33MHz PCI <-> IOBus Bridge 103c 10eb (Agilent) E2777B 83K Series Optical Communication Interface 103c 10ec (Agilent) E6978-66442 PCI CIC 10b5 1123 Sectra KK631 encryption board 10b5 9080 9080 [real subsystem ID not set] 12d9 0002 PCI Prosody Card 12df 4422 4422PCI ["Do-All" Telemetry Data Acquisition System] 1369 9601 PCX822np 1369 a102 PCX822v2 1369 a201 PCX442 1369 a301 LCM440v2 1369 a401 VX822 1369 a402 VX822v2 1369 a901 LCM420 1369 aa01 VX820v2 1517 000b ECSG-1R3ADC-PMC Clock synthesizer 9656 PCI9656 PCI <-> IOBus Bridge 1517 000f ECDR-GC314-PMC Receiver 1885 0700 Tsunami FPGA PMC with Altera Stratix S40 1885 0701 Tsunami FPGA PMC with Altera Stratix S30 9733 PEX 9733 33-lane, 9-port PCI Express Gen 3 (8.0 GT/s) Switch 1d49 0001 ThinkSystem 1610-4P NVMe Switch Adapter 1d49 0002 ThinkSystem 810-4P NVMe Switch Adapter 9749 PEX 9749 49-lane, 13-port PCI Express Gen 3 (8.0 GT/s) Switch 1d49 0004 ThinkSystem 1610-8P NVMe Switch Adapter a100 Blackmagic Design DeckLink bb04 B&B 3PCIOSD1A Isolated PCI Serial c001 CronyxOmega-PCI (8-port RS232) d00d PCI9030 32-bit 33MHz PCI <-> IOBus Bridge 10b5 9030 Digium Tormenta 2 T400P or E400P Quad T1 or E1 PCI card d33d PCI9030 32-bit 33MHz PCI <-> IOBus Bridge 10b5 9030 Tormenta 3 Varion V401PT Quad T1/J1 PCI card d44d PCI9030 32-bit 33MHz PCI <-> IOBus Bridge 10b5 17f6 Allo CP100P/E 1-port E1/T1/J1 PCI/PCIe card 10b5 17f7 Allo CP400P/E 4-port E1/T1/J1 PCI/PCIe card 10b5 17f8 Allo CP200P/E 2-port E1/T1/J1 PCI/PCIe card 10b5 9030 Tormenta 3 Varion V401PE Quad E1 PCI card 10b6 Madge Networks 0001 Smart 16/4 PCI Ringnode 0002 Smart 16/4 PCI Ringnode Mk2 10b6 0002 Smart 16/4 PCI Ringnode Mk2 10b6 0006 16/4 CardBus Adapter 0003 Smart 16/4 PCI Ringnode Mk3 0e11 b0fd Compaq NC4621 PCI, 4/16, WOL 10b6 0003 Smart 16/4 PCI Ringnode Mk3 10b6 0007 Presto PCI Plus Adapter 0004 Smart 16/4 PCI Ringnode Mk1 0006 16/4 Cardbus Adapter 10b6 0006 16/4 CardBus Adapter 0007 Presto PCI Adapter 10b6 0007 Presto PCI 0009 Smart 100/16/4 PCI-HS Ringnode 10b6 0009 Smart 100/16/4 PCI-HS Ringnode 000a Token Ring 100/16/4 Ringnode/Ringrunner 10b6 000a Token Ring 100/16/4 Ringnode/Ringrunner 000b 16/4 CardBus Adapter Mk2 10b6 0008 16/4 CardBus Adapter Mk2 10b6 000b 16/4 Cardbus Adapter Mk2 000c RapidFire 3140V2 16/4 TR Adapter 10b6 000c RapidFire 3140V2 16/4 TR Adapter 1000 Collage 25/155 ATM Client Adapter 1001 Collage 155 ATM Server Adapter 10b7 3Com Corporation 0001 3c985 1000BaseSX (SX/TX) # wrong ID? 9850 0001 3c985B-SX 0013 AR5212 802.11abg NIC (3CRDAG675) 10b7 2031 3CRDAG675 11a/b/g Wireless PCI Adapter 0910 3C910-A01 1006 MINI PCI type 3B Data Fax Modem 1007 Mini PCI 56k Winmodem 10b7 615b Mini PCI 56K Modem 10b7 615c Mini PCI 56K Modem 1201 3c982-TXM 10/100baseTX Dual Port A [Hydra] 1202 3c982-TXM 10/100baseTX Dual Port B [Hydra] 1700 3c940 10/100/1000Base-T [Marvell] 1043 80eb A7V600/P4P800/K8V motherboard 10b7 0010 3C940 Gigabit LOM Ethernet Adapter 10b7 0020 3C941 Gigabit LOM Ethernet Adapter 147b 1407 KV8-MAX3 motherboard 3390 3c339 TokenLink Velocity 3590 3c359 TokenLink Velocity XL 10b7 3590 TokenLink Velocity XL Adapter (3C359/359B) 4500 3c450 HomePNA [Tornado] 5055 3c555 Laptop Hurricane 5057 3c575 Megahertz 10/100 LAN CardBus [Boomerang] 10b7 5a57 3C575 Megahertz 10/100 LAN Cardbus PC Card 5157 3cCFE575BT Megahertz 10/100 LAN CardBus [Cyclone] 10b7 5b57 3C575 Megahertz 10/100 LAN Cardbus PC Card 5257 3cCFE575CT CardBus [Cyclone] 10b7 5c57 FE575C-3Com 10/100 LAN CardBus-Fast Ethernet 5900 3c590 10BaseT [Vortex] 5920 3c592 EISA 10mbps Demon/Vortex 5950 3c595 100BaseTX [Vortex] 5951 3c595 100BaseT4 [Vortex] 5952 3c595 100Base-MII [Vortex] 5970 3c597 EISA Fast Demon/Vortex 5b57 3c595 Megahertz 10/100 LAN CardBus [Boomerang] 10b7 5b57 3C575 Megahertz 10/100 LAN Cardbus PC Card 6000 3CRSHPW796 [OfficeConnect Wireless CardBus] 6001 3com 3CRWE154G72 [Office Connect Wireless LAN Adapter] 6055 3c556 Hurricane CardBus [Cyclone] 6056 3c556B CardBus [Tornado] 10b7 6556 10/100 Mini PCI Ethernet Adapter 6560 3cCFE656 CardBus [Cyclone] 10b7 656a 3CCFEM656 10/100 LAN+56K Modem CardBus 6561 3cCFEM656 10/100 LAN+56K Modem CardBus 10b7 656b 3CCFEM656 10/100 LAN+56K Modem CardBus 6562 3cCFEM656B 10/100 LAN+Winmodem CardBus [Cyclone] 10b7 656b 3CCFEM656B 10/100 LAN+56K Modem CardBus 6563 3cCFEM656B 10/100 LAN+56K Modem CardBus 10b7 656b 3CCFEM656 10/100 LAN+56K Modem CardBus 6564 3cXFEM656C 10/100 LAN+Winmodem CardBus [Tornado] 7646 3cSOHO100-TX Hurricane 7770 3CRWE777 PCI Wireless Adapter [Airconnect] 7940 3c803 FDDILink UTP Controller 7980 3c804 FDDILink SAS Controller 7990 3c805 FDDILink DAS Controller 80eb 3c940B 10/100/1000Base-T 8811 Token ring 9000 3c900 10BaseT [Boomerang] 9001 3c900 10Mbps Combo [Boomerang] 9004 3c900B-TPO Etherlink XL [Cyclone] 10b7 9004 3C900B-TPO Etherlink XL TPO 10Mb 9005 3c900B-Combo Etherlink XL [Cyclone] 10b7 9005 3C900B-Combo Etherlink XL Combo 9006 3c900B-TPC Etherlink XL [Cyclone] 900a 3c900B-FL 10base-FL [Cyclone] 9050 3c905 100BaseTX [Boomerang] 9051 3c905 100BaseT4 [Boomerang] 9054 3C905B-TX Fast Etherlink XL PCI 10b7 9054 3C905B-TX Fast Etherlink XL PCI 9055 3c905B 100BaseTX [Cyclone] 1028 0080 3C905B Fast Etherlink XL 10/100 1028 0081 3C905B Fast Etherlink XL 10/100 1028 0082 3C905B Fast Etherlink XL 10/100 1028 0083 3C905B Fast Etherlink XL 10/100 1028 0084 3C905B Fast Etherlink XL 10/100 1028 0085 3C905B Fast Etherlink XL 10/100 1028 0086 3C905B Fast Etherlink XL 10/100 1028 0087 3C905B Fast Etherlink XL 10/100 1028 0088 3C905B Fast Etherlink XL 10/100 1028 0089 3C905B Fast Etherlink XL 10/100 1028 0090 3C905B Fast Etherlink XL 10/100 1028 0091 3C905B Fast Etherlink XL 10/100 1028 0092 3C905B Fast Etherlink XL 10/100 1028 0093 3C905B Fast Etherlink XL 10/100 1028 0094 3C905B Fast Etherlink XL 10/100 1028 0095 3C905B Fast Etherlink XL 10/100 1028 0096 3C905B Fast Etherlink XL 10/100 1028 0097 3C905B Fast Etherlink XL 10/100 1028 0098 3C905B Fast Etherlink XL 10/100 1028 0099 3C905B Fast Etherlink XL 10/100 10b7 9055 3C905B Fast Etherlink XL 10/100 9056 3c905B-T4 Fast EtherLink XL [Cyclone] 9058 3c905B Deluxe Etherlink 10/100/BNC [Cyclone] 905a 3c905B-FX Fast Etherlink XL FX 100baseFx [Cyclone] 9200 3c905C-TX/TX-M [Tornado] 1028 0095 3C920 Integrated Fast Ethernet Controller 1028 0097 3C920 Integrated Fast Ethernet Controller 1028 00b4 OptiPlex GX110 1028 00d8 Precision 530 1028 00fe Optiplex GX240 1028 012a 3C920 Integrated Fast Ethernet Controller [Latitude C640] 10b7 1000 3C905CX-TX/TX-M Fast Etherlink for PC Management NIC 10b7 7000 10/100 Mini PCI Ethernet Adapter 10f1 2466 Tiger MPX S2466 (3C920 Integrated Fast Ethernet Controller) 144d c005 X10 Laptop 9201 3C920B-EMB Integrated Fast Ethernet Controller [Tornado] 1043 80ab A7N8X Deluxe onboard 3C920B-EMB Integrated Fast Ethernet Controller 9202 3Com 3C920B-EMB-WNM Integrated Fast Ethernet Controller 9210 3C920B-EMB-WNM Integrated Fast Ethernet Controller 9300 3CSOHO100B-TX 910-A01 [tulip] 9800 3c980-TX Fast Etherlink XL Server Adapter [Cyclone] 10b7 9800 3c980-TX Fast Etherlink XL Server Adapter 9805 3c980-C 10/100baseTX NIC [Python-T] 10b7 1201 EtherLink Server 10/100 Dual Port A 10b7 1202 EtherLink Server 10/100 Dual Port B 10b7 9805 3c980 10/100baseTX NIC [Python-T] 10f1 2462 Thunder K7 S2462 9900 3C990-TX [Typhoon] 9902 3CR990-TX-95 [Typhoon 56-bit] 9903 3CR990-TX-97 [Typhoon 168-bit] 9904 3C990B-TX-M/3C990BSVR [Typhoon2] 10b7 1000 3CR990B-TX-M [Typhoon2] 10b7 2000 3CR990BSVR [Typhoon2 Server] 9905 3CR990-FX-95/97/95 [Typhon Fiber] 10b7 1101 3CR990-FX-95 [Typhoon Fiber 56-bit] 10b7 1102 3CR990-FX-97 [Typhoon Fiber 168-bit] 10b7 2101 3CR990-FX-95 Server [Typhoon Fiber 56-bit] 10b7 2102 3CR990-FX-97 Server [Typhoon Fiber 168-bit] 9908 3CR990SVR95 [Typhoon Server 56-bit] 9909 3CR990SVR97 [Typhoon Server 168-bit] 990a 3C990SVR [Typhoon Server] 990b 3C990SVR [Typhoon Server] 10b8 Standard Microsystems Corp [SMC] 0005 83c170 EPIC/100 Fast Ethernet Adapter 1055 e000 LANEPIC 10/100 [EVB171Q-PCI] 1055 e002 LANEPIC 10/100 [EVB171G-PCI] 10b8 a011 EtherPower II 10/100 10b8 a014 EtherPower II 10/100 10b8 a015 EtherPower II 10/100 10b8 a016 EtherPower II 10/100 10b8 a017 EtherPower II 10/100 0006 83c175 EPIC/100 Fast Ethernet Adapter 1055 e100 LANEPIC Cardbus Fast Ethernet Adapter 1055 e102 LANEPIC Cardbus Fast Ethernet Adapter 1055 e300 LANEPIC Cardbus Fast Ethernet Adapter 1055 e302 LANEPIC Cardbus Fast Ethernet Adapter 10b8 a012 LANEPIC Cardbus Fast Ethernet Adapter 13a2 8002 LANEPIC Cardbus Fast Ethernet Adapter 13a2 8006 LANEPIC Cardbus Fast Ethernet Adapter 1000 FDC 37c665 1001 FDC 37C922 a011 83C170QF b106 SMC34C90 # Split off ALi Corporation in 2003 10b9 ULi Electronics Inc. 0101 CMI8338/C3DX PCI Audio Device 0111 C-Media CMI8738/C3DX Audio Device (OEM) 10b9 0111 C-Media CMI8738/C3DX Audio Device (OEM) 0780 Multi-IO Card 0782 Multi-IO Card 1435 M1435 1445 M1445 1449 M1449 1451 M1451 1461 M1461 1489 M1489 Cache-Memory PCI Controller (CMP) [FinALi 486] CPU to PCI bridge 1511 M1511 [Aladdin] 1512 M1512 [Aladdin] 1513 M1513 [Aladdin] 1521 M1521 [Aladdin III] 10b9 1521 ALI M1521 Aladdin III CPU Bridge 1523 M1523 10b9 1523 ALI M1523 ISA Bridge 1531 M1531 [Aladdin IV] 1533 M1533/M1535/M1543 PCI to ISA Bridge [Aladdin IV/V/V+] 1014 053b ThinkPad R40e 10b9 1533 ALi M1533 Aladdin IV/V ISA Bridge 1541 M1541 10b9 1541 ALI M1541 Aladdin V/V+ AGP System Controller 1543 M1543 1563 M1563 HyperTransport South Bridge 10b9 1563 ASRock 939Dual-SATA2 Motherboard 1849 1563 ASRock 939Dual-SATA2 Motherboard 1573 PCI to LPC Controller 1575 M1575 South Bridge 1621 M1621 1631 ALI M1631 PCI North Bridge Aladdin Pro III 1632 M1632M Northbridge+Trident 1641 ALI M1641 PCI North Bridge Aladdin Pro IV 1644 M1644/M1644T Northbridge+Trident 1646 M1646 Northbridge+Trident 1647 M1647 Northbridge [MAGiK 1 / MobileMAGiK 1] 1651 M1651/M1651T Northbridge [Aladdin-Pro 5/5M,Aladdin-Pro 5T/5TM] 1671 M1671 Super P4 Northbridge [AGP4X,PCI and SDR/DDR] 1672 M1672 Northbridge [CyberALADDiN-P4] 1681 M1681 P4 Northbridge [AGP8X,HyperTransport and SDR/DDR] 1687 M1687 K8 Northbridge [AGP8X and HyperTransport] 1689 M1689 K8 Northbridge [Super K8 Single Chip] 1695 M1695 Host Bridge 1697 M1697 HTT Host Bridge 3141 M3141 3143 M3143 3145 M3145 3147 M3147 3149 M3149 3151 M3151 3307 M3307 3309 M3309 3323 M3325 Video/Audio Decoder 5212 M4803 5215 MS4803 5217 M5217H 5219 M5219 5225 M5225 5228 M5228 ALi ATA/RAID Controller 5229 M5229 IDE 1014 050f ThinkPad R30 1014 053d ThinkPad R40e 103c 0024 Pavilion ze4400 builtin IDE 103c 0025 XE4500 Notebook 1043 8053 A7A266 Motherboard IDE 1849 5229 ASRock 939Dual-SATA2 Motherboard IDE (PATA) 5235 M5225 5237 USB 1.1 Controller 1014 0540 ThinkPad R40e 103c 0024 Pavilion ze4400 builtin USB 103c 0025 XE4500 Notebook 104d 810f VAIO PCG-U1 USB/OHCI Revision 1.0 10b9 5237 M5273 USB OHCI PCI adapter 1849 5237 ASRock 939Dual-SATA2 Motherboard 5239 USB 2.0 Controller 10b9 5239 M5273 USB PCI adapter 1849 5239 ASRock 939Dual-SATA2 Motherboard 5243 M1541 PCI to AGP Controller 5246 AGP8X Controller 5247 PCI to AGP Controller 5249 M5249 HTT to PCI Bridge 524b PCI Express Root Port 524c PCI Express Root Port 524d PCI Express Root Port 524e PCI Express Root Port 5251 M5251 P1394 OHCI 1.0 Controller 5253 M5253 P1394 OHCI 1.1 Controller 5261 M5261 Ethernet Controller 5263 ULi 1689,1573 integrated ethernet. 5281 ALi M5281 Serial ATA / RAID Host Controller 5287 ULi 5287 SATA 5288 ULi M5288 SATA 1043 8056 A8R-MVP Mainboard 5289 ULi 5289 SATA 5450 Lucent Technologies Soft Modem AMR 5451 M5451 PCI AC-Link Controller Audio Device 1014 0506 ThinkPad R30 1014 053e ThinkPad R40e 103c 0024 Pavilion ze4400 builtin Audio 103c 0025 XE4500 Notebook 5453 M5453 PCI AC-Link Controller Modem Device 5455 M5455 PCI AC-Link Controller Audio Device 10b9 5455 ASRock 939Dual-SATA2 Motherboard 1849 0850 ASRock 939Dual-SATA2 Motherboard 5457 M5457 AC'97 Modem Controller 1014 0535 ThinkPad R40e 103c 0024 Pavilion ze4400 builtin Modem Device 103c 0025 XE4500 Notebook 5459 SmartLink SmartPCI561 56K Modem 545a SmartLink SmartPCI563 56K Modem 5461 HD Audio Controller 5471 M5471 Memory Stick Controller 5473 M5473 SD-MMC Controller 7101 M7101 Power Management Controller [PMU] 1014 0510 ThinkPad R30 1014 053c ThinkPad R40e 103c 0024 Pavilion ze4400 103c 0025 XE4500 Notebook 1849 7101 ASRock 939Dual-SATA2 Motherboard 10ba Mitsubishi Electric Corp. 0301 AccelGraphics AccelECLIPSE 0304 AccelGALAXY A2100 [OEM Evans & Sutherland] 0308 Tornado 3000 [OEM Evans & Sutherland] 10dd 0024 Tornado 3000 1002 VG500 [VolumePro Volume Rendering Accelerator] 10bb Dapha Electronics Corporation 10bc Advanced Logic Research 10bd Surecom Technology 0e34 NE-34 10be Tseng Labs International Co. 10bf Most Inc 10c0 Boca Research Inc. 9135 iX3D Ultimate Rez 10c1 ICM Co., Ltd. 10c2 Auspex Systems Inc. 10c3 Samsung Semiconductors, Inc. 10c4 Award Software International Inc. 10c5 Xerox Corporation 10c6 Rambus Inc. 10c7 Media Vision 10c8 Neomagic Corporation 0001 NM2070 [MagicGraph 128] 0002 NM2090 [MagicGraph 128V] 0003 NM2093 [MagicGraph 128ZV] 0004 NM2160 [MagicGraph 128XD] 1014 00ba MagicGraph 128XD 1025 1007 MagicGraph 128XD 1028 0074 MagicGraph 128XD 1028 0075 MagicGraph 128XD 1028 007d MagicGraph 128XD 1028 007e MagicGraph 128XD 1033 802f MagicGraph 128XD 104d 801b MagicGraph 128XD 104d 802f MagicGraph 128XD 104d 830b MagicGraph 128XD 10ba 0e00 MagicGraph 128XD 10c8 0004 MagicGraph 128XD 10cf 1029 MagicGraph 128XD 10f7 8308 MagicGraph 128XD 10f7 8309 MagicGraph 128XD 10f7 830b MagicGraph 128XD 10f7 830d MagicGraph 128XD 10f7 8312 MagicGraph 128XD 0005 NM2200 [MagicGraph 256AV] 1014 00dd ThinkPad 570 1028 0088 Latitude CPi A 0006 NM2360 [MagicMedia 256ZX] 1014 0152 ThinkPad 600X 0016 NM2380 [MagicMedia 256XL+] 10c8 0016 MagicMedia 256XL+ 0025 NM2230 [MagicGraph 256AV+] 0083 NM2093 [MagicGraph 128ZV+] 8005 NM2200 [MagicMedia 256AV Audio] 0e11 b0d1 MagicMedia 256AV Audio Device on Discovery 0e11 b126 MagicMedia 256AV Audio Device on Durango 1014 00dd ThinkPad 390/i1720/i1721 1025 1003 MagicMedia 256AV Audio Device on TravelMate 720 1028 0088 Latitude CPi A 1028 008f MagicMedia 256AV Audio Device on Colorado Inspiron 103c 0007 MagicMedia 256AV Audio Device on Voyager II 103c 0008 MagicMedia 256AV Audio Device on Voyager III 103c 000d MagicMedia 256AV Audio Device on Omnibook 900 10c8 8005 MagicMedia 256AV Audio Device on FireAnt 110a 8005 MagicMedia 256AV Audio Device 14c0 0004 MagicMedia 256AV Audio Device 8006 NM2360 [MagicMedia 256ZX Audio] 8016 NM2380 [MagicMedia 256XL+ Audio] 10c9 Dataexpert Corporation 10ca Fujitsu Microelectr., Inc. 10cb Omron Corporation # nee Mentor ARC Inc 10cc Mai Logic Incorporated 0660 Articia S Host Bridge 0661 Articia S PCI Bridge 10cd Advanced System Products, Inc 1100 ASC1100 1200 ASC1200 [(abp940) Fast SCSI-II] 1300 ASC1300 / ASC3030 [ABP940-U / ABP960-U / ABP3925] 10cd 1310 ASC1300/3030 SCSI adapter 1195 1320 Ultra-SCSI CardBus PC Card REX CB31 2300 ABP940-UW 2500 ABP940-U2W 2700 ABP3950-U3W 10ce Radius # nee Citicorp TTI 10cf Fujitsu Limited. 01ef PCEA4 PCI-Express Dual Port ESCON Adapter 1414 On-board USB 1.1 companion controller 1415 On-board USB 2.0 EHCI controller 1422 E8410 nVidia graphics adapter 142d HD audio (Realtek ALC262) 1430 82566MM Intel 1Gb copper LAN interface 1623 PCEA4 PCI-Express Dual Port ESCON Adapter 2001 mb86605 200c MB86613L IEEE1394 OHCI 1.0 Controller 2010 MB86613S IEEE1394 OHCI 1.1 Controller 2019 MB86295S [CORAL P] 201e MB86296S [CORAL PA] 202b MB86297A [Carmine Graphics Controller] 10d1 FuturePlus Systems Corp. 10d2 Molex Incorporated 10d3 Jabil Circuit Inc 10d4 Hualon Microelectronics 10d5 Autologic Inc. 10d6 Cetia 10d7 BCM Advanced Research 10d8 Advanced Peripherals Labs 10d9 Macronix, Inc. [MXIC] 0431 MX98715 0512 MX98713 0531 MX987x5 1186 1200 DFE-540TX ProFAST 10/100 Adapter 8625 MX86250 8626 Macronix MX86251 + 3Dfx Voodoo Rush 8888 MX86200 10da Compaq IPG-Austin 0508 TC4048 Token Ring 4/16 3390 Tl3c3x9 10db Rohm LSI Systems, Inc. 10dc CERN/ECP/EDU 0001 STAR/RD24 SCI-PCI (PMC) 0002 TAR/RD24 SCI-PCI (PMC) 0021 HIPPI destination 0022 HIPPI source 10dc ATT2C15-3 FPGA 10dd Evans & Sutherland 0100 Lightning 1200 10dd 0023 Lightning 1200 15+16M 10de NVIDIA Corporation 0008 NV1 [STG2000X-B Series] 0009 NV1 [NV1 Series] 0018 NV3 [Riva 128] 0019 NV3 [Riva 128ZX] 0020 NV4 [Riva TNT] 1043 0200 V3400 TNT 1048 0c18 Erazor II SGRAM 1048 0c19 Erazor II 1048 0c1b Erazor II 1048 0c1c Erazor II 1092 0550 Viper V550 1092 0552 Viper V550 1092 4804 Viper V550 1092 4808 Viper V550 1092 4810 Viper V550 1092 4812 Viper V550 1092 4815 Viper V550 1092 4820 Viper V550 with TV out 1092 4822 Viper V550 1092 4904 Viper V550 1092 4914 Viper V550 1092 8225 Viper V550 10b4 273d Velocity 4400 10b4 273e Velocity 4400 10b4 2740 Velocity 4400 10de 0020 Riva TNT 1102 1015 Graphics Blaster CT6710 1102 1016 Graphics Blaster RIVA TNT 0028 NV5 [Riva TNT2 / TNT2 Pro] 1043 0200 AGP-V3800 SGRAM 1043 0201 AGP-V3800 SDRAM 1043 0205 PCI-V3800 1043 4000 AGP-V3800PRO 1048 0c21 Synergy II 1048 0c28 Erazor III 1048 0c29 Erazor III 1048 0c2a Erazor III 1048 0c2b Erazor III 1048 0c31 Erazor III Pro 1048 0c32 Erazor III Pro 1048 0c33 Erazor III Pro 1048 0c34 Erazor III Pro 107d 2134 WinFast 3D S320 II + TV-Out 1092 4804 Viper V770 1092 4a00 Viper V770 1092 4a02 Viper V770 Ultra 1092 5a00 RIVA TNT2/TNT2 Pro 1092 5a40 Viper V770D AGP 1092 6a02 Viper V770 Ultra 1092 7a02 Viper V770 Ultra 10de 0005 RIVA TNT2 Pro 10de 000f Compaq NVIDIA TNT2 Pro 1102 1020 3D Blaster RIVA TNT2 1102 1026 3D Blaster RIVA TNT2 Digital 1462 8806 MS-8806 AGPhantom Graphics Card 14af 5810 Maxi Gamer Xentor 0029 NV5 [Riva TNT2 Ultra] 1043 0200 AGP-V3800 Deluxe 1043 0201 AGP-V3800 Ultra SDRAM 1043 0205 PCI-V3800 Ultra 1048 0c2e Erazor III Ultra 1048 0c2f Erazor III Ultra 1048 0c30 Erazor III Ultra 1102 1021 3D Blaster RIVA TNT2 Ultra 1102 1029 3D Blaster RIVA TNT2 Ultra 1102 102f 3D Blaster RIVA TNT2 Ultra 14af 5820 Maxi Gamer Xentor 32 4843 4f34 Dynamite 002a NV5 [Riva TNT2] 002b NV5 [Riva TNT2] 002c NV5 [Vanta / Vanta LT] 1043 0200 AGP-V3800 Combat SDRAM 1043 0201 AGP-V3800 Combat 1048 0c20 TNT2 Vanta 1048 0c21 TNT2 Vanta 1048 0c25 TNT2 Vanta 16MB 1092 6820 Viper V730 1102 1031 CT6938 VANTA 8MB 1102 1034 CT6894 VANTA 16MB 14af 5008 Maxi Gamer Phoenix 2 002d NV5 [Riva TNT2 Model 64 / Model 64 Pro] 1043 0200 AGP-V3800M 1043 0201 AGP-V3800M 1048 0c3a Erazor III LT 1048 0c3b Erazor III LT 107d 2137 WinFast 3D S325 10de 0006 RIVA TNT2 Model 64/Model 64 Pro 10de 001e M64 AGP4x 1102 1023 CT6892 RIVA TNT2 Value 1102 1024 CT6932 RIVA TNT2 Value 32Mb 1102 102c CT6931 RIVA TNT2 Value [Jumper] 1102 1030 CT6931 RIVA TNT2 Value # S26361-D1243-V116 110a 006f GM1000-16 # S26361-D1243-V216 110a 0081 GM1000-16 1462 8808 MSI-8808 14af 5620 Gamer Cougar Video Edition 1554 1041 Pixelview RIVA TNT2 M64 1569 002d Palit Microsystems Daytona TNT2 M64 0034 MCP04 SMBus 0035 MCP04 IDE 0036 MCP04 Serial ATA Controller 0037 MCP04 Ethernet Controller 0038 MCP04 Ethernet Controller 003a MCP04 AC'97 Audio Controller 003b MCP04 USB Controller 003c MCP04 USB Controller 003d MCP04 PCI Bridge 003e MCP04 Serial ATA Controller 0040 NV40 [GeForce 6800 Ultra] 0041 NV40 [GeForce 6800] 1043 817b V9999 Gamer Edition 107d 2992 WinFast A400 1458 310f Geforce 6800 GV-N6812 0042 NV40 [GeForce 6800 LE] 107d 299b WinFast A400 LE 0043 NV40 [GeForce 6800 XE] 0044 NV40 [GeForce 6800 XT] 0045 NV40 [GeForce 6800 GT] 1043 817d V9999GT 1458 3140 GV-N68T256D 0047 NV40 [GeForce 6800 GS] 1682 2109 GeForce 6800 GS 0048 NV40 [GeForce 6800 XT] 004e NV40GL [Quadro FX 4000] 0050 CK804 ISA Bridge 1043 815a K8N4/A8N Series Mainboard 10f1 2865 Tomcat K8E (S2865) 1458 0c11 GA-K8N Ultra-9 Mainboard 1462 7100 MSI K8N Diamond 1462 7125 K8N Neo4-F mainboard 147b 1c1a KN8-Ultra Mainboard 1565 3402 NF4 AM2L Mainboard 0051 CK804 ISA Bridge 1028 0225 PowerEdge T105 ISA Bridge 0052 CK804 SMBus 1028 0225 PowerEdge T105 SMBus 1043 815a K8N4/A8N Series Mainboard 10f1 2865 Tomcat K8E (S2865) 1458 0c11 GA-K8N Ultra-9 Mainboard 1462 7100 MSI K8N Diamond 1462 7125 K8N Neo4-F mainboard 147b 1c1a KN8-Ultra Mainboard 1565 3402 NF4 AM2L Mainboard 0053 CK804 IDE 1043 815a K8N4/A8N Series Mainboard 10f1 2865 Tomcat K8E (S2865) 1458 5002 GA-K8N Ultra-9 Mainboard 1462 7100 MSI K8N Diamond 1462 7125 K8N Neo4-F mainboard 147b 1c1a KN8-Ultra Mainboard 1565 3402 NF4 AM2L Mainboard 0054 CK804 Serial ATA Controller 1028 0225 PowerEdge T105 Serial ATA 1043 815a A8N Series Mainboard 10f1 2865 Tomcat K8E (S2865) 1458 b003 GA-K8N Ultra-9 Mainboard 1462 7100 MSI K8N Diamond 1462 7125 K8N Neo4-F mainboard 147b 1c1a KN8-Ultra Mainboard 1565 5401 NF4 AM2L Mainboard 0055 CK804 Serial ATA Controller 1028 0225 PowerEdge T105 Serial ATA 1043 815a K8N4/A8N Series Mainboard 10f1 2865 Tomcat K8E (S2865) 1458 b003 GA-K8N Ultra-9 Mainboard 1462 7125 K8N Neo4-F mainboard 147b 1c1a KN8-Ultra Mainboard 1565 5401 NF4 AM2L Mainboard 0056 CK804 Ethernet Controller 0057 CK804 Ethernet Controller 1043 8141 K8N4/A8N Series Mainboard 10de cb84 NF4 Lanparty 10f1 2865 Tomcat K8E (S2865) 1458 e000 GA-K8N Ultra-9 Mainboard 1462 7100 MSI K8N Diamond 1462 7125 K8N Neo4-F mainboard 147b 1c1a KN8-Ultra Mainboard 1565 2501 NF4 AM2L Mainboard 0058 CK804 AC'97 Modem 0059 CK804 AC'97 Audio Controller 1043 812a K8N4/A8N Series Mainboard 10f1 2865 Tomcat K8E (S2865) 1462 7585 K8N Neo4-F mainboard 147b 1c1a KN8-Ultra Mainboard 1565 8211 NF4 AM2L Mainboard 005a CK804 USB Controller 1028 0225 PowerEdge T105 onboard USB 1043 815a K8N4/A8N Series Mainboard 10f1 2865 Tomcat K8E (S2865) 1458 5004 GA-K8N Ultra-9 Mainboard 1462 7100 MSI K8N Diamond 1462 7125 K8N Neo4-F mainboard 147b 1c1a KN8-Ultra Mainboard 1565 3402 NF4 AM2L Mainboard 005b CK804 USB Controller 1028 0225 PowerEdge T105 onboard USB 1043 815a K8N4/A8N Series Mainboard 10f1 2865 Tomcat K8E (S2865) 1458 5004 GA-K8N Ultra-9 Mainboard 1462 7100 MSI K8N Diamond 1462 7125 K8N Neo4-F mainboard 147b 1c1a KN8-Ultra Mainboard 1565 3402 NF4 AM2L Mainboard 005c CK804 PCI Bridge 005d CK804 PCIE Bridge 005e CK804 Memory Controller 1028 0225 PowerEdge T105 Memory Controller 1043 815a A8N Series Mainboard 10de 005e ECS Elitegroup NFORCE3-A939 motherboard. 10f1 2865 Tomcat K8E (S2865) 10f1 2891 Thunder K8SRE Mainboard 1458 5000 GA-K8N Ultra-9 Mainboard 1462 7100 K8N Diamond Mainboard 1462 7125 K8N Neo4-F Mainboard 147b 1c1a KN8-Ultra Mainboard 1565 3402 NF4 AM2L Mainboard 005f CK804 Memory Controller 0060 nForce2 ISA Bridge 1043 80ad A7N8X Mainboard 147b 1c02 NF7-S/NF7 (nVidia-nForce2) 2.X a0a0 03ba UK79G-1394 motherboard 0064 nForce2 SMBus (MCP) 147b 1c02 NF7-S/NF7 (nVidia-nForce2) 2.X a0a0 03bb UK79G-1394 motherboard 0065 nForce2 IDE 10de 0c11 nForce 2 EIDE Controller a0a0 03b2 UK79G-1394 motherboard 0066 nForce2 Ethernet Controller 1043 80a7 A7N8X Mainboard onboard nForce2 Ethernet 10de 0c11 nForce MCP-T Networking Adapter a0a0 03b3 UK79G-1394 motherboard 0067 nForce2 USB Controller 1043 0c11 A7N8X Mainboard a0a0 03b4 UK79G-1394 motherboard 0068 nForce2 USB Controller 1043 0c11 A7N8X Mainboard a0a0 03b4 UK79G-1394 motherboard 006a nForce2 AC97 Audio Controler (MCP) 1043 8095 nForce2 AC97 Audio Controller (MCP) a0a0 0304 UK79G-1394 motherboard 006b nForce Audio Processing Unit 10de 006b nForce2 MCP Audio Processing Unit a0a0 0304 UK79G-1394 motherboard 006c nForce2 External PCI Bridge 006d nForce2 PCI Bridge 006e nForce2 FireWire (IEEE 1394) Controller a0a0 0306 UK79G-1394 motherboard 0080 MCP2A ISA bridge 147b 1c09 NV7 Motherboard 0084 MCP2A SMBus 147b 1c09 NV7 Motherboard 0085 MCP2A IDE 147b 1c09 NV7 Motherboard 0086 MCP2A Ethernet Controller 0087 MCP2A USB Controller 147b 1c09 NV7 Motherboard 0088 MCP2A USB Controller 147b 1c09 NV7 Motherboard 008a MCP2S AC'97 Audio Controller 147b 1c09 NV7 Motherboard 008b MCP2A PCI Bridge 008c MCP2A Ethernet Controller 008e nForce2 Serial ATA Controller 0090 G70 [GeForce 7800 GTX] 0091 G70 [GeForce 7800 GTX] 0092 G70 [GeForce 7800 GT] 0093 G70 [GeForce 7800 GS] 0094 High Definition Audio 0095 G70 [GeForce 7800 SLI] 0097 G70 [GeForce GTS 250] 0098 G70M [GeForce Go 7800] 0099 G70M [GeForce Go 7800 GTX] 009d G70GL [Quadro FX 4500] 00a0 NV0A [Aladdin TNT2 IGP] 14af 5810 Maxi Gamer Xentor 00c0 NV41 [GeForce 6800 GS] 00c1 NV41 [GeForce 6800] 00c2 NV41 [GeForce 6800 LE] 00c3 NV41 [GeForce 6800 XT] 00c5 NV41 00c6 NV41 00c7 NV41 00c8 NV41M [GeForce Go 6800] 00c9 NV41M [GeForce Go 6800 Ultra] 00cc NV41GLM [Quadro FX Go1400] 00cd NV42GL [Quadro FX 3450/4000 SDI] 10de 029b Quadro FX 3450 00ce NV41GL [Quadro FX 1400] 00cf NV41 00d0 nForce3 LPC Bridge 00d1 nForce3 Host Bridge 00d2 nForce3 AGP Bridge 00d3 CK804 Memory Controller 00d4 nForce3 SMBus 00d5 nForce3 IDE 00d6 nForce3 Ethernet 00d7 nForce3 USB 1.1 00d8 nForce3 USB 2.0 00d9 nForce3 Audio 00da nForce3 Audio 00dd nForce3 PCI Bridge 00df CK8S Ethernet Controller 1043 80a7 K8N-E 105b 0c43 Winfast NF3250K8AA 147b 1c0b NF8 Mainboard 00e0 nForce3 250Gb LPC Bridge 1043 813f K8N-E 10de 0c11 Winfast NF3250K8AA 1462 7030 K8N Neo-FSR v2.0 147b 1c0b NF8 Mainboard 1849 00e0 Motherboard (one of many) 00e1 nForce3 250Gb Host Bridge 1043 813f K8N-E 1462 7030 K8N Neo-FSR v2.0 147b 1c0b NF8 Mainboard 1849 00e1 Motherboard (one of many) 00e2 nForce3 250Gb AGP Host to PCI Bridge 00e3 nForce3 Serial ATA Controller 1043 813f K8N-E 105b 0c43 Winfast NF3250K8AA 147b 1c0b NF8 Mainboard 1849 00e3 Motherboard (one of many) 00e4 nForce 250Gb PCI System Management 1043 813f K8N-E 105b 0c43 Winfast NF3250K8AA 1462 7030 K8N Neo-FSR v2.0 147b 1c0b NF8 Mainboard 1849 00e4 Motherboard (one of many) 00e5 CK8S Parallel ATA Controller (v2.5) 1043 813f K8N-E 105b 0c43 Winfast NF3250K8AA 1462 7030 K8N Neo-FSR v2.0 147b 1c0b NF8 Mainboard 1849 00e5 Motherboard (one of many) f849 00e5 Motherboard (one of many) 00e6 CK8S Ethernet Controller 00e7 CK8S USB Controller 1043 813f K8N-E 105b 0c43 Winfast NF3250K8AA 1462 7030 K8N Neo-FSR v2.0 147b 1c0b NF8 Mainboard 1849 00e7 Motherboard (one of many) 00e8 nForce3 EHCI USB 2.0 Controller 1043 813f K8N-E 105b 0c43 Winfast NF3250K8AA 1462 7030 K8N Neo-FSR v2.0 147b 1c0b NF8 Mainboard 1849 00e8 Motherboard (one of many) 00ea nForce3 250Gb AC'97 Audio Controller 1043 819d K8N-E 105b 0c43 Winfast NF3250K8AA 1462 b010 K8N Neo-FSR v2.0 147b 1c0b NF8 Mainboard 00ed nForce3 250Gb PCI-to-PCI Bridge 00ee nForce3 Serial ATA Controller 2 00f1 NV43 [GeForce 6600 GT] 1043 81a6 N6600GT TD 128M AGP 1043 81c6 N6600GT TD 128M AGP 1458 3150 GV-N66T128VP 1554 1191 PixelView PV-N43UA (128KD) 1682 2119 GeForce 6600 GT AGP 00f2 NV43 [GeForce 6600] 1554 1194 PixelView PV-N43AT (256KD) 1682 211c GeForce 6600 256MB DDR DUAL DVI TV 00f3 NV43 [GeForce 6200] 00f4 NV43 [GeForce 6600 LE] 00f5 G70/G71 [GeForce 7800 GS AGP] 00f6 NV43 [GeForce 6800 GS/XT] 1682 217e XFX GeForce 6800 XTreme 256MB DDR3 AGP 00f8 NV45GL [Quadro FX 3400/4400] 00f9 NV40 [GeForce 6800 GT/GTO/Ultra] 10de 00f9 NV40 [GeForce 6800 GT] 1682 2120 GEFORCE 6800 GT PCI-E 00fa NV39 [GeForce PCX 5750] 00fb NV35 [GeForce PCX 5900] 00fc NV37GL [Quadro FX 330/GeForce PCX 5300] 00fd NV37GL [Quadro PCI-E Series] 00fe NV38GL [Quadro FX 1300] 00ff NV19 [GeForce PCX 4300] 0100 NV10 [GeForce 256 SDR] 1043 0200 AGP-V6600 SGRAM 1043 0201 AGP-V6600 SDRAM 1043 4008 AGP-V6600 SGRAM 1043 4009 AGP-V6600 SDRAM 1048 0c41 Erazor X 1048 0c43 ERAZOR X PCI 1048 0c48 Synergy Force 1102 102d CT6941 GeForce 256 14af 5022 3D Prophet SE 0101 NV10 [GeForce 256 DDR] 1043 0202 AGP-V6800 DDR 1043 400a AGP-V6800 DDR SGRAM 1043 400b AGP-V6800 DDR SDRAM 1048 0c42 Erazor X 107d 2822 WinFast GeForce 256 1102 102e CT6970/CT6971 14af 5021 3D Prophet DDR-DVI 0103 NV10GL [Quadro] 1048 0c40 GLoria II-64 1048 0c44 GLoria II 1048 0c45 GLoria II 1048 0c4a GLoria II-64 Pro 1048 0c4b GLoria II-64 Pro DVII 10a9 9002 VPro VR3 0110 NV11 [GeForce2 MX/MX 400] 1043 4015 AGP-V7100 Pro 1043 4021 V7100 Deluxe Combo 1043 4031 V7100 Pro with TV output 1048 0c60 Gladiac MX 1048 0c61 Gladiac 511PCI 1048 0c63 Gladiac 511TV-OUT 32MB 1048 0c64 Gladiac 511TV-OUT 64MB 1048 0c65 Gladiac 511TWIN 1048 0c66 Gladiac 311 10b0 0001 GeForce2 MX Jumbo TV 10de 0091 Dell OEM GeForce 2 MX 400 10de 00a1 Apple OEM GeForce2 MX 1462 8523 MS-8852 1462 8817 MSI GeForce2 MX400 Pro32S [MS-8817] 14af 7102 3D Prophet II MX 14af 7103 3D Prophet II MX Dual-Display 1545 0023 Xtasy Rev. B2 1554 1081 MVGA-NVG11AM(400) 0111 NV11 [GeForce2 MX200] 0112 NV11M [GeForce2 Go] 0113 NV11GL [Quadro2 MXR/EX/Go] 1028 00e5 Quadro2 Go 0140 NV43 [GeForce 6600 GT] 1458 3125 GV-NX66T128D 1458 3126 GV-NX66T256DE 1462 8939 MS-8983 0141 NV43 [GeForce 6600] 1043 81b0 EN6600 Silencer 107d 593a LR2A22 128MB TV OUT 107d 597b WINFAST PX6600 1458 3124 GV-NX66128DP Turbo Force Edition 0142 NV43 [GeForce 6600 LE] 0143 NV43 [GeForce 6600 VE] 0144 NV43M [GeForce Go 6600] 0145 NV43 [GeForce 6610 XL] 0146 NV43M [GeForce Go6200 TE / 6600 TE] 0147 NV43 [GeForce 6700 XL] 0148 NV43M [GeForce Go 6600] 0149 NV43M [GeForce Go 6600 GT] 014a NV43 [Quadro NVS 440] 014b NV43 014d NV43GL [Quadro FX 550] 014e NV43GL [Quadro FX 540] 014f NV43 [GeForce 6200] 0150 NV15 [GeForce2 GTS/Pro] 1043 4016 V7700 AGP Video Card 1043 402a AGP-V7700 1048 0c50 Gladiac 1048 0c52 Gladiac-64 107d 2840 WinFast GeForce2 GTS with TV output 107d 2842 WinFast GeForce 2 Pro 10de 002e GeForce2 GTS 1462 815a MS-8815 1462 8831 Creative GeForce2 Pro 0151 NV15 [GeForce2 Ti] 1043 405f V7700Ti 1462 5506 Creative 3D Blaster GeForce2 Titanium 1462 8364 MS-8836 0152 NV15 [GeForce2 Ultra] 1048 0c56 GLADIAC Ultra 0153 NV15GL [Quadro2 Pro] 0160 NV44 [GeForce 6500] 0161 NV44 [GeForce 6200 TurboCache] 0162 NV44 [GeForce 6200 SE TurboCache] 0163 NV44 [GeForce 6200 LE] 0164 NV44M [GeForce Go 6200] 0165 NV44 [Quadro NVS 285] 0166 NV44M [GeForce Go 6400] 0167 NV44M [GeForce Go 6200] 0168 NV44M [GeForce Go 6400] 0169 NV44 [GeForce 6250] 016a NV44 [GeForce 7100 GS] 016d NV44 016e NV44 016f NV44 0170 NV17 [GeForce4 MX 460] 1462 8630 MS-8863 0171 NV17 [GeForce4 MX 440] 10b0 0002 Gainward Pro/600 TV 10de 0008 Apple OEM GeForce4 MX 440 1462 8661 G4MX440-VTP 1462 8730 MX440SES-T (MS-8873) 1462 8743 MS-8874 1462 8852 GeForce4 MX440 PCI 147b 8f00 Abit Siluro GeForce4MX440 0172 NV17 [GeForce4 MX 420] 1462 8730 MS-8873 1462 8784 MS-8878 0173 NV17 [GeForce4 MX 440-SE] 0174 NV17M [GeForce4 440 Go] 0175 NV17M [GeForce4 420 Go] 0176 NV17M [GeForce4 420 Go 32M] 103c 08b0 tc1100 tablet 144d c005 X10 Laptop 4c53 1090 Cx9 / Vx9 mainboard 0177 NV17M [GeForce4 460 Go] 0178 NV17GL [Quadro4 550 XGL] 0179 NV17M [GeForce4 440 Go 64M] 10de 0179 GeForce4 MX (Mac) 017a NV17GL [Quadro NVS] 017b NV17GL [Quadro4 550 XGL] 017c NV17GL [Quadro4 500 GoGL] 017f NV17 0181 NV18 [GeForce4 MX 440 AGP 8x] 1043 8063 GeForce4 MX 440 AGP 8X 1043 806f V9180 Magic 1462 8880 MS-StarForce GeForce4 MX 440 with AGP8X 1462 8900 MS-8890 GeForce 4 MX440 AGP8X 1462 9350 MSI GeForce4 MX T8X with AGP8X 147b 8f0d Siluro GF4 MX-8X 1554 1111 PixelView MVGA-NVG18A 0182 NV18 [GeForce4 MX 440SE AGP 8x] 0183 NV18 [GeForce4 MX 420 AGP 8x] 0184 NV18 [GeForce4 MX] 0185 NV18 [GeForce4 MX 4000] 0186 NV18M [GeForce4 448 Go] 0187 NV18M [GeForce4 488 Go] 0188 NV18GL [Quadro4 580 XGL] 0189 NV18 [GeForce4 MX with AGP8X (Mac)] 018a NV18GL [Quadro NVS 280 SD] 018b NV18GL [Quadro4 380 XGL] 018c NV18GL [Quadro NVS 50 PCI] 018d NV18M [GeForce4 448 Go] 0190 G80 [GeForce 8800 GTS / 8800 GTX] 0191 G80 [GeForce 8800 GTX] 0192 G80 [GeForce 8800 GTS] 0193 G80 [GeForce 8800 GTS] 107d 20bd WinFast PX 8800 GTS TDH 0194 G80 [GeForce 8800 Ultra] 0197 G80GL [Tesla C870] 019d G80GL [Quadro FX 5600] 019e G80GL [Quadro FX 4600] 01a0 nForce 220/420 NV1A [GeForce2 MX] 01a4 nForce CPU bridge 01ab nForce 420 Memory Controller (DDR) 01ac nForce 220/420 Memory Controller 01ad nForce 220/420 Memory Controller 01b0 nForce Audio Processing Unit 01b1 nForce AC'97 Audio Controller 01b2 nForce ISA Bridge 01b4 nForce PCI System Management 01b7 nForce AGP to PCI Bridge 01b8 nForce PCI-to-PCI bridge 01bc nForce IDE 01c1 nForce AC'97 Modem Controller 01c2 nForce USB Controller 01c3 nForce Ethernet Controller 01d0 G72 [GeForce 7350 LE] 01d1 G72 [GeForce 7300 LE] 107d 5efa WinFast PX7300LE-TD128 107d 5efb WinFast PX7300LE-TD256 1462 0345 7300LE PCI Express Graphics Adapter 01d2 G72 [GeForce 7550 LE] 01d3 G72 [GeForce 7200 GS / 7300 SE] 1043 8203 EN7300SE 1043 8250 EN7200GS 01d5 G72 01d6 G72M [GeForce Go 7200] 01d7 G72M [Quadro NVS 110M/GeForce Go 7300] 01d8 G72M [GeForce Go 7400] 1028 01d7 XPS M1210 01d9 G72M [GeForce Go 7450] 01da G72M [Quadro NVS 110M] 01db G72M [Quadro NVS 120M] 01dc G72GLM [Quadro FX 350M] 01dd G72 [GeForce 7500 LE] 01de G72GL [Quadro FX 350] 10de 01dc Quadro FX Go350M 01df G72 [GeForce 7300 GS] 01e0 nForce2 IGP2 147b 1c09 NV7 Motherboard 01e8 nForce2 AGP 01ea nForce2 Memory Controller 0 a0a0 03b9 UK79G-1394 motherboard 01eb nForce2 Memory Controller 1 a0a0 03b9 UK79G-1394 motherboard 01ec nForce2 Memory Controller 2 a0a0 03b9 UK79G-1394 motherboard 01ed nForce2 Memory Controller 3 a0a0 03b9 UK79G-1394 motherboard 01ee nForce2 Memory Controller 4 10de 01ee MSI Delta-L nForce2 memory controller a0a0 03b9 UK79G-1394 motherboard 01ef nForce2 Memory Controller 5 a0a0 03b9 UK79G-1394 motherboard 01f0 NV1F C17 [GeForce4 MX IGP] a0a0 03b5 UK79G-1394 motherboard 0200 NV20 [GeForce3] 1043 402f AGP-V8200 DDR 1048 0c70 GLADIAC 920 0201 NV20 [GeForce3 Ti 200] 1462 8503 G3Ti200 Pro VT128 0202 NV20 [GeForce3 Ti 500] 1043 405b V8200 T5 1545 002f Xtasy 6964 0203 NV20GL [Quadro DCC] 0211 NV48 [GeForce 6800] 0212 NV48 [GeForce 6800 LE] 0215 NV48 [GeForce 6800 GT] 0218 NV48 [GeForce 6800 XT] 0221 NV44A [GeForce 6200] 1043 81e1 N6200/TD/256M/A 3842 a341 256A8N341DX 0222 NV44 [GeForce 6200 A-LE] 0224 NV44 0240 C51PV [GeForce 6150] 1043 81cd A8N-VM CSM 1462 7207 K8NGM2 series 0241 C51 [GeForce 6150 LE] 0242 C51G [GeForce 6100] 105b 0cad Winfast 6100K8MB 0243 C51 PCI Express Bridge 0244 C51 [GeForce Go 6150] 103c 30b5 Presario V3242AU 103c 30b7 Presario V6133CL 10de 0244 GeForce Go 6150 0245 C51 [Quadro NVS 210S/GeForce 6150LE] 0246 C51 PCI Express Bridge 0247 C51 [GeForce Go 6100] 1043 1382 MCP51 PCI-X GeForce Go 6100 0248 C51 PCI Express Bridge 0249 C51 PCI Express Bridge 024a C51 PCI Express Bridge 024b C51 PCI Express Bridge 024c C51 PCI Express Bridge 024d C51 PCI Express Bridge 024e C51 PCI Express Bridge 024f C51 PCI Express Bridge 0250 NV25 [GeForce4 Ti 4600] 0251 NV25 [GeForce4 Ti 4400] 1043 8023 v8440 GeForce 4 Ti4400 10de 0251 PNY GeForce4 Ti 4400 1462 8710 PNY GeForce4 Ti 4400 0252 NV25 [GeForce4 Ti] 0253 NV25 [GeForce4 Ti 4200] 107d 2896 WinFast A250 LE TD (Dual VGA/TV-out/DVI) 147b 8f09 Siluro (Dual VGA/TV-out/DVI) 0258 NV25GL [Quadro4 900 XGL] 0259 NV25GL [Quadro4 750 XGL] 025b NV25GL [Quadro4 700 XGL] 0260 MCP51 LPC Bridge 103c 2a34 Pavilion a1677c 103c 30b7 Presario V6133CL 1043 81bc A8N-VM CSM Mainboard 1458 5001 GA-M55plus-S3G 1462 7207 K8NGM2 series 0261 MCP51 LPC Bridge 105b 0cad Winfast 6100K8MB 0262 MCP51 LPC Bridge 0263 MCP51 LPC Bridge 0264 MCP51 SMBus 103c 2a34 Pavilion a1677c 103c 30b7 Presario V6133CL 1043 81bc A8N-VM CSM Mainboard 105b 0cad Winfast 6100K8MB 1462 7207 K8NGM2 series 0265 MCP51 IDE 103c 2a34 Pavilion a1677c 103c 30b7 Presario V6133CL 1043 81bc A8N-VM CSM Mainboard 1462 7207 K8NGM2 series # Foxconn has used a wrong vendor ID for this one f05b 0cad Winfast 6100K8MB 0266 MCP51 Serial ATA Controller 103c 2a34 Pavilion a1677c 103c 30b7 Presario V6133CL 1043 81bc A8N-VM CSM Mainboard 1462 7207 K8NGM2 series 0267 MCP51 Serial ATA Controller 103c 2a34 Pavilion a1677c 1043 81bc A8N-VM CSM Mainboard 1462 7207 K8NGM2 series 0268 MCP51 Ethernet Controller 0269 MCP51 Ethernet Controller 103c 2a34 Pavilion a1677c 103c 30b7 Presario V6133CL 1043 8141 A8N-VM CSM Mainboard 1462 7207 K8NGM2 series 026a MCP51 MCI 026b MCP51 AC97 Audio Controller 105b 0cad Winfast 6100K8MB 026c MCP51 High Definition Audio 103c 2a34 Pavilion a1677c 103c 30b5 Presario V3242AU 103c 30b7 Presario V6133CL 10de cb84 ASUSTeK Computer Inc. A8N-VM CSM Mainboard 1462 7207 K8NGM2 series 026d MCP51 USB Controller 103c 2a34 Pavilion a1677c 103c 30b7 Presario V6133CL 1043 81bc A8N-VM CSM Mainboard 105b 0cad Winfast 6100K8MB 1462 7207 K8NGM2 series 026e MCP51 USB Controller 103c 2a34 Pavilion a1677c 103c 30b7 Presario V6133CL 1043 81bc A8N-VM CSM Mainboard 105b 0cad Winfast 6100K8MB 1462 7207 K8NGM2 series 026f MCP51 PCI Bridge 103c 30b7 Presario V6133CL 0270 MCP51 Host Bridge 103c 2a34 Pavilion a1677c 103c 30b7 Presario V6133CL 1043 81bc A8N-VM CSM Mainboard 105b 0cad Winfast 6100K8MB 1458 5001 GA-M55plus-S3G 1462 7207 K8NGM2 series 0271 MCP51 PMU 103c 30b5 Presario V3242AU 103c 30b7 Presario V6133CL 0272 MCP51 Memory Controller 0 103c 2a34 Pavilion a1677c 105b 0cad Winfast 6100K8MB 027e C51 Memory Controller 2 103c 2a34 Pavilion a1677c 103c 30b7 Presario V6133CL 1043 81cd A8N-VM CSM Mainboard 1458 5000 GA-M55plus-S3G 1462 7207 K8NGM2 series 027f C51 Memory Controller 3 103c 2a34 Pavilion a1677c 103c 30b7 Presario V6133CL 1043 81cd A8N-VM CSM Mainboard 1458 5000 GA-M55plus-S3G 1462 7207 K8NGM2 series 0280 NV28 [GeForce4 Ti 4800] 0281 NV28 [GeForce4 Ti 4200 AGP 8x] 0282 NV28 [GeForce4 Ti 4800 SE] 0286 NV28M [GeForce4 Ti 4200 Go AGP 8x] 0288 NV28GL [Quadro4 980 XGL] 0289 NV28GL [Quadro4 780 XGL] 028c NV28GLM [Quadro4 Go700] 0290 G71 [GeForce 7900 GTX] 0291 G71 [GeForce 7900 GT/GTO] 10de 042b NX7900GTO-T2D512E [7900 GTO] 0292 G71 [GeForce 7900 GS] 0293 G71 [GeForce 7900 GX2] 0294 G71 [GeForce 7950 GX2] 0295 G71 [GeForce 7950 GT] 1043 8225 GeForce 7950 GT 107d 2a68 WinFast PX7950GT TDH 1462 0663 NX7950GT-VT2D512EZ-HD 0297 G71M [GeForce Go 7950 GTX] 0298 G71M [GeForce Go 7900 GS] 0299 G71M [GeForce Go 7900 GTX] 029a G71GLM [Quadro FX 2500M] 029b G71GLM [Quadro FX 1500M] 029c G71GL [Quadro FX 5500] 029d G71GL [Quadro FX 3500] 1028 019b G71GLM [Quadro FX 3500M] 029e G71GL [Quadro FX 1500] 029f G71GL [Quadro FX 4500 X2] # Xbox Graphics Processing Unit (Integrated). GeForce3 derivative (NV20 < NV2A < NV25). 02a0 NV2A [XGPU] 02a5 MCPX CPU Bridge 02a6 MCPX Memory Controller 02e0 G73 [GeForce 7600 GT AGP] 02e0 2249 GF 7600GT 560M 256MB DDR3 DUAL DVI TV 02e1 G73 [GeForce 7600 GS AGP] 1682 222b PV-T73K-UAL3 (256MB) 1682 2247 GF 7600GS 512MB DDR2 02e2 G73 [GeForce 7300 GT AGP] 02e3 G71 [GeForce 7900 GS AGP] 02e4 G71 [GeForce 7950 GT AGP] 1682 2271 PV-T71A-YDF7 (512MB) 02e5 G71 [GeForce 7600 GS AGP] 02f0 C51 Host Bridge 103c 2a34 Pavilion a1677c 103c 30b7 Presario V6133CL 1043 81cd A8N-VM CSM Mainboard 1462 7207 K8NGM2 series 02f1 C51 Host Bridge 1458 5000 GA-M55plus-S3G 02f2 C51 Host Bridge 02f3 C51 Host Bridge 02f4 C51 Host Bridge 02f5 C51 Host Bridge 02f6 C51 Host Bridge 02f7 C51 Host Bridge 02f8 C51 Memory Controller 5 103c 2a34 Pavilion a1677c 103c 30b7 Presario V6133CL 1043 81cd A8N-VM CSM Mainboard 1458 5000 GA-M55plus-S3G 1462 7207 K8NGM2 series 02f9 C51 Memory Controller 4 103c 2a34 Pavilion a1677c 103c 30b7 Presario V6133CL 1043 81cd A8N-VM CSM Mainboard 1458 5000 GA-M55plus-S3G 1462 7207 K8NGM2 series 02fa C51 Memory Controller 0 103c 2a34 Pavilion a1677c 103c 30b7 Presario V6133CL 1043 81cd A8N-VM CSM Mainboard 1458 5000 GA-M55plus-S3G 1462 7207 K8NGM2 series 02fb C51 PCI Express Bridge 02fc C51 PCI Express Bridge 103c 30b7 Presario V6133CL 02fd C51 PCI Express Bridge 103c 30b7 Presario V6133CL 02fe C51 Memory Controller 1 103c 2a34 Pavilion a1677c 103c 30b7 Presario V6133CL 1043 81cd A8N-VM CSM Mainboard 1458 5000 GA-M55plus-S3G 1462 7207 K8NGM2 series 02ff C51 Host Bridge 103c 2a34 Pavilion a1677c 103c 30b7 Presario V6133CL 1043 81cd A8N-VM CSM Mainboard 1458 5000 GA-M55plus-S3G 1462 7207 K8NGM2 series 0300 NV30 [GeForce FX] 0301 NV30 [GeForce FX 5800 Ultra] 0302 NV30 [GeForce FX 5800] 0308 NV30GL [Quadro FX 2000] 0309 NV30GL [Quadro FX 1000] 0311 NV31 [GeForce FX 5600 Ultra] 0312 NV31 [GeForce FX 5600] 0314 NV31 [GeForce FX 5600XT] 1043 814a V9560XT/TD 0316 NV31M 0318 NV31GL 031a NV31M [GeForce FX Go5600] 031b NV31M [GeForce FX Go5650] 031c NV31GLM [Quadro FX Go700] 0320 NV34 [GeForce FX 5200] 0321 NV34 [GeForce FX 5200 Ultra] 0322 NV34 [GeForce FX 5200] 1043 02fb V9250 Magic 1043 8180 V9520-X/TD/128M 107d 2967 WinFast A340T 128MB 1462 9110 MS-8911 (FX5200-TD128) 1462 9171 MS-8917 (FX5200-T128) 1462 9360 MS-8936 (FX5200-T128) 1682 1351 GeForce FX 5200 0323 NV34 [GeForce FX 5200LE] 0324 NV34M [GeForce FX Go5200 64M] 1028 0196 Inspiron 5160 103c 006a Pavilion ZD7000 laptop 1071 8160 MIM2000 0325 NV34M [GeForce FX Go5250] 0326 NV34 [GeForce FX 5500] 1458 310d GeForce FX 5500 128 MB 1682 2034 GeForce 5500 256 MB 0327 NV34 [GeForce FX 5100] 0328 NV34M [GeForce FX Go5200 32M/64M] 0329 NV34M [GeForce FX Go5200] 10de 0010 Powerbook G4 032a NV34GL [Quadro NVS 280 PCI] 032b NV34GL [Quadro FX 500/600 PCI] 032c NV34M [GeForce FX Go5300 / Go5350] 032d NV34M [GeForce FX Go5100] 032e NV34 032f NV34 [GeForce FX 5200] 0330 NV35 [GeForce FX 5900 Ultra] 1043 8137 V9950 Ultra / 256 MB 0331 NV35 [GeForce FX 5900] 1043 8145 V9950GE 0332 NV35 [GeForce FX 5900XT] 0333 NV38 [GeForce FX 5950 Ultra] 0334 NV35 [GeForce FX 5900ZT] 1462 9373 FX5900ZT-VTD128 (MS-8937) 0338 NV35GL [Quadro FX 3000] 033f NV35GL [Quadro FX 700] 0341 NV36 [GeForce FX 5700 Ultra] 1462 9380 MS-8938 (FX5700U-TD128) 0342 NV36 [GeForce FX 5700] 0343 NV36 [GeForce FX 5700LE] 0344 NV36 [GeForce FX 5700VE] 0347 NV36M [GeForce FX Go5700] 103c 006a NX9500 0348 NV36M [GeForce FX Go5700] 034c NV36 [Quadro FX Go1000] 034d NV36 034e NV36GL [Quadro FX 1100] 0360 MCP55 LPC Bridge 0361 MCP55 LPC Bridge 1028 0221 PowerEdge R805 MCP55 LPC Bridge 0362 MCP55 LPC Bridge 147b 1c24 KN9 series mainboard 0363 MCP55 LPC Bridge 0364 MCP55 LPC Bridge 1028 0221 PowerEdge R805 MCP55 LPC Bridge 0365 MCP55 LPC Bridge 0366 MCP55 LPC Bridge 0367 MCP55 LPC Bridge 0368 MCP55 SMBus Controller 1028 020c PowerEdge M605 MCP55 SMBus 1028 0221 PowerEdge R805 MCP55 SMBus 147b 1c24 KN9 series mainboard 0369 MCP55 Memory Controller 147b 1c24 KN9 series mainboard 036a MCP55 Memory Controller 036b MCP55 SMU 036c MCP55 USB Controller 1028 020c PowerEdge M605 MCP55 USB Controller 1028 0221 PowerEdge R805 MCP55 USB Controller 147b 1c24 KN9 series mainboard 036d MCP55 USB Controller 1028 020c PowerEdge M605 MCP55 USB Controller 1028 0221 PowerEdge R805 MCP55 USB Controller 147b 1c24 KN9 series mainboard 036e MCP55 IDE 147b 1c24 KN9 series mainboard 0370 MCP55 PCI bridge 0371 MCP55 High Definition Audio 147b 1c24 KN9 series mainboard 0372 MCP55 Ethernet 0373 MCP55 Ethernet 147b 1c24 KN9 series mainboard 0374 MCP55 PCI Express bridge 0375 MCP55 PCI Express bridge 0376 MCP55 PCI Express bridge 0377 MCP55 PCI Express bridge 0378 MCP55 PCI Express bridge 037a MCP55 Memory Controller 037e MCP55 SATA Controller 037f MCP55 SATA Controller 1028 0221 PowerEdge R805 MCP55 SATA Controller 147b 1c24 KN9 series mainboard 038b G73 [GeForce 7650 GS] 0390 G73 [GeForce 7650 GS] 0391 G73 [GeForce 7600 GT] 1458 3427 GV-NX76T128D-RH 1462 0452 NX7600GT-VT2D256E 0392 G73 [GeForce 7600 GS] 1462 0622 NX7600GS-T2D256EH 0393 G73 [GeForce 7300 GT] 10de 0412 NX7300GT-TD256EH 1462 0412 NX7300GT-TD256EH 0394 G73 [GeForce 7600 LE] 0395 G73 [GeForce 7300 GT] 0396 G73 0397 G73M [GeForce Go 7700] 0398 G73M [GeForce Go 7600] 1025 006c Aspire 9814WKMi 0399 G73M [GeForce Go 7600 GT] 039a G73M [Quadro NVS 300M] 039b G73M [GeForce Go 7900 SE] 039c G73GLM [Quadro FX 550M] 10de 039c Quadro FX 560M 039d G73 039e G73GL [Quadro FX 560] 039f G73 03a0 C55 Host Bridge 03a1 C55 Host Bridge 03a2 C55 Host Bridge 03a3 C55 Host Bridge 03a4 C55 Host Bridge 03a5 C55 Host Bridge 03a6 C55 Host Bridge 03a7 C55 Host Bridge 03a8 C55 Memory Controller 03a9 C55 Memory Controller 03aa C55 Memory Controller 03ab C55 Memory Controller 03ac C55 Memory Controller 03ad C55 Memory Controller 03ae C55 Memory Controller 03af C55 Memory Controller 03b0 C55 Memory Controller 03b1 C55 Memory Controller 03b2 C55 Memory Controller 03b3 C55 Memory Controller 03b4 C55 Memory Controller 03b5 C55 Memory Controller 03b6 C55 Memory Controller 03b7 C55 PCI Express bridge 03b8 C55 PCI Express bridge 03b9 C55 PCI Express bridge 03ba C55 Memory Controller 03bb C55 PCI Express bridge 03bc C55 Memory Controller 03d0 C61 [GeForce 6150SE nForce 430] 1028 020e Inspiron 531 03d1 C61 [GeForce 6100 nForce 405] 03d2 C61 [GeForce 6100 nForce 400] 03d5 C61 [GeForce 6100 nForce 420] 03d6 C61 [GeForce 7025 / nForce 630a] 03e0 MCP61 LPC Bridge 1028 020e Inspiron 531 1849 03e0 939NF6G-VSTA Board 03e1 MCP61 LPC Bridge 1043 83a4 M4N68T series motherboard 03e2 MCP61 Host Bridge 1043 83a4 M4N68T series motherboard 03e3 MCP61 LPC Bridge 03e4 MCP61 High Definition Audio 03e5 MCP61 Ethernet 03e6 MCP61 Ethernet 03e7 MCP61 SATA Controller 03e8 MCP61 PCI Express bridge 1028 020e Inspiron 531 1849 03e8 939NF6G-VSTA Board 03e9 MCP61 PCI Express bridge 1028 020e Inspiron 531 1849 03e9 939NF6G-VSTA Board 03ea MCP61 Memory Controller 1028 020e Inspiron 531 1849 03ea 939NF6G-VSTA Board 03eb MCP61 SMBus 1028 020e Inspiron 531 1043 83a4 M4N68T series motherboard 1849 03eb 939NF6G-VSTA Board 03ec MCP61 IDE 1025 0392 ET1350 1028 020e Inspiron 531 1043 83a4 M4N68T series motherboard 1849 03ec 939NF6G-VSTA Board 03ee MCP61 Ethernet 03ef MCP61 Ethernet 1025 8000 ET1350 1028 020e Inspiron 531 1043 83a4 M4N68T series motherboard 1849 03ef 939NF6G-VSTA Board 03f0 MCP61 High Definition Audio 1028 020e Inspiron 531 1043 8415 M4N68T series motherboard 1849 0888 939NF6G-VSTA Board 03f1 MCP61 USB 1.1 Controller 1028 020e Inspiron 531 1043 83a4 M4N68T series motherboard 1849 03f1 939NF6G-VSTA Board 03f2 MCP61 USB 2.0 Controller 1028 020e Inspiron 531 1043 83a4 M4N68T series motherboard 1849 03f2 939NF6G-VSTA Board 03f3 MCP61 PCI bridge 1028 020e Inspiron 531 1849 03f3 939NF6G-VSTA Board 03f4 MCP61 SMU 03f5 MCP61 Memory Controller 1028 020e Inspiron 531 1043 83a4 M4N68T series motherboard 1849 03eb 939NF6G-VSTA Board 03f6 MCP61 SATA Controller 1028 020e Inspiron 531 1043 83a4 M4N68T series motherboard 1849 03f6 939NF6G-VSTA Board 03f7 MCP61 SATA Controller 0400 G84 [GeForce 8600 GTS] 1043 8241 EN8600GTS 0401 G84 [GeForce 8600 GT] 0402 G84 [GeForce 8600 GT] 1458 3455 GV-NX86T512H 1462 0910 NX8600GT-T2D256EZ 0403 G84 [GeForce 8600 GS] 0404 G84 [GeForce 8400 GS] 1462 1230 NX8400GS-TD256E 0405 G84M [GeForce 9500M GS] 0406 G84 [GeForce 8300 GS] 0407 G84M [GeForce 8600M GT] 0408 G84M [GeForce 9650M GS] 0409 G84M [GeForce 8700M GT] 040a G84GL [Quadro FX 370] 040b G84GLM [Quadro NVS 320M] 040c G84GLM [Quadro FX 570M] 17aa 20d9 ThinkPad T61p 040d G84GLM [Quadro FX 1600M] 040e G84GL [Quadro FX 570] 040f G84GL [Quadro FX 1700] 0410 G92 [GeForce GT 330] 0414 G92 [GeForce 9800 GT] 0418 G92 [GeForce GT 330 OEM] 0420 G86 [GeForce 8400 SE] 0421 G86 [GeForce 8500 GT] 1462 0960 NX8500GT-TD512EH/M2 0422 G86 [GeForce 8400 GS] 0423 G86 [GeForce 8300 GS] 0424 G86 [GeForce 8400 GS] 0425 G86M [GeForce 8600M GS] 1025 0121 Aspire 5920G 1043 1514 F3SV 0426 G86M [GeForce 8400M GT] 0427 G86M [GeForce 8400M GS] 103c 30cc Pavilion dv6700 103c 30cf Pavilion dv9668eg Laptop 0428 G86M [GeForce 8400M G] 0429 G86M [Quadro NVS 140M] 17aa 20d8 ThinkPad T61 042a G86M [Quadro NVS 130M] 042b G86M [Quadro NVS 135M] 042c G86 [GeForce 9400 GT] 042d G86GLM [Quadro FX 360M] 042e G86M [GeForce 9300M G] 042f G86 [Quadro NVS 290] 0440 MCP65 LPC Bridge 0441 MCP65 LPC Bridge 0442 MCP65 LPC Bridge 103c 30cf Pavilion dv9668eg Laptop 0443 MCP65 LPC Bridge 0444 MCP65 Memory Controller 103c 30cf Pavilion dv9668eg Laptop 0445 MCP65 Memory Controller 0446 MCP65 SMBus 103c 30cf Pavilion dv9668eg Laptop 0447 MCP65 SMU 103c 30cf Pavilion dv9500/9600/9700 series 0448 MCP65 IDE 103c 30cf Pavilion dv9668eg Laptop 0449 MCP65 PCI bridge 10de cb84 HP Pavilion dv9668eg Laptop 044a MCP65 High Definition Audio 103c 30cf Pavilion dv9668eg Laptop 044b MCP65 High Definition Audio 044c MCP65 AHCI Controller 044d MCP65 AHCI Controller 044e MCP65 AHCI Controller 044f MCP65 AHCI Controller 0450 MCP65 Ethernet 103c 30cf Pavilion dv9668eg Laptop 0451 MCP65 Ethernet 0452 MCP65 Ethernet 0453 MCP65 Ethernet 0454 MCP65 USB 1.1 OHCI Controller 103c 30cf Pavilion dv9668eg Laptop 0455 MCP65 USB 2.0 EHCI Controller 103c 30cf Pavilion dv9668eg Laptop 0456 MCP65 USB Controller 0457 MCP65 USB Controller 0458 MCP65 PCI Express bridge 10de 0000 MCP65 PCI Express bridge 0459 MCP65 PCI Express bridge 10de 0000 MCP65 PCI Express bridge 045a MCP65 PCI Express bridge 10de 0000 MCP65 PCI Express bridge 045b MCP65 PCI Express bridge 10de 0000 MCP65 PCI Express bridge 045c MCP65 SATA Controller 045d MCP65 SATA Controller 103c 30cf Pavilion dv9668eg Laptop 045e MCP65 SATA Controller 045f MCP65 SATA Controller 0531 C67 [GeForce 7150M / nForce 630M] 0533 C67 [GeForce 7000M / nForce 610M] 053a C68 [GeForce 7050 PV / nForce 630a] 053b C68 [GeForce 7050 PV / nForce 630a] 1043 8308 M2N68-AM Motherboard 053e C68 [GeForce 7025 / nForce 630a] 0541 MCP67 Memory Controller 0542 MCP67 SMBus 1043 8308 M2N68-AM Motherboard 0543 MCP67 Co-processor 0547 MCP67 Memory Controller 1043 8308 M2N68-AM Motherboard 1849 0547 ALiveNF7G-HDready 0548 MCP67 ISA Bridge 1043 8308 M2N68-AM Motherboard 054c MCP67 Ethernet 1043 8308 M2N68-AM Motherboard 1849 054c ALiveNF7G-HDready, MCP67 Gigabit Ethernet 054d MCP67 Ethernet 054e MCP67 Ethernet 054f MCP67 Ethernet 0550 MCP67 AHCI Controller 1043 8308 M2N68-AM Motherboard 0554 MCP67 AHCI Controller 1043 8308 M2N68-AM Motherboard 0555 MCP67 SATA Controller 1043 8308 M2N68-AM Motherboard 055c MCP67 High Definition Audio 1043 8290 M2N68-AM Motherboard 055d MCP67 High Definition Audio 055e MCP67 OHCI USB 1.1 Controller 1043 8308 M2N68-AM Motherboard 055f MCP67 EHCI USB 2.0 Controller 1043 8308 M2N68-AM Motherboard 0560 MCP67 IDE Controller f043 8308 M2N68-AM Motherboard 0561 MCP67 PCI Bridge 0562 MCP67 PCI Express Bridge 1849 0562 ALiveNF7G-HDready 0563 MCP67 PCI Express Bridge 0568 MCP78S [GeForce 8200] Memory Controller 103c 2a9e Pavilion p6310f 1043 82e8 M3N72-D 1462 7508 K9N2GM-FIH 1849 0568 K10N78FullHD-hSLI R3.0 Memory Controller 0569 MCP78S [GeForce 8200] PCI Express Bridge 103c 2a9e Pavilion p6310f 1043 82e8 M3N72-D 1462 7508 K9N2GM-FIH 1849 0569 K10N78FullHD-hSLI R3.0 PCI Express Bridge 056a MCP73 [nForce 630i] USB 2.0 Controller (EHCI) 1019 297a MCP73PVT-SM 147b 1c3e I-N73V motherboard 056c MCP73 IDE Controller 1019 297a MCP73PVT-SM 147b 1c3e I-N73V motherboard 1afa 7150 JW-IN7150-HD 056d MCP73 PCI Express bridge 1019 297a MCP73PVT-SM 10de cb73 MCP73 PCI Bridge 056e MCP73 PCI Express bridge 1019 297a MCP73PVT-SM 10de 0000 MCP73 PCIe x16 port 056f MCP73 PCI Express bridge 1019 297a MCP73PVT-SM 10de 0000 MCP73 PCIe x1 port 05b1 NF200 PCIe 2.0 switch 05b8 NF200 PCIe 2.0 switch for GTX 295 05be NF200 PCIe 2.0 switch for Quadro Plex S4 / Tesla S870 / Tesla S1070 / Tesla S2050 05e0 GT200b [GeForce GTX 295] 05e1 GT200 [GeForce GTX 280] 05e2 GT200 [GeForce GTX 260] 05e3 GT200b [GeForce GTX 285] 1682 2490 GX-285N-ZDF 05e6 GT200b [GeForce GTX 275] 05e7 GT200GL [Tesla C1060 / M1060] 10de 0595 Tesla T10 Processor 10de 068f Tesla T10 Processor 10de 0697 Tesla M1060 10de 0714 Tesla M1060 10de 0743 Tesla M1060 05ea GT200 [GeForce GTX 260] 05eb GT200 [GeForce GTX 295] 05ed GT200GL [Quadro Plex 2200 D2] 05f1 GT200 [GeForce GTX 280] 05f2 GT200 [GeForce GTX 260] 05f8 GT200GL [Quadro Plex 2200 S4] 05f9 GT200GL [Quadro CX] 05fd GT200GL [Quadro FX 5800] 05fe GT200GL [Quadro FX 4800] 05ff GT200GL [Quadro FX 3800] 0600 G92 [GeForce 8800 GTS 512] 0601 G92 [GeForce 9800 GT] 0602 G92 [GeForce 8800 GT] 0603 G92 [GeForce GT 230 OEM] 0604 G92 [GeForce 9800 GX2] 0605 G92 [GeForce 9800 GT] 0606 G92 [GeForce 8800 GS] 0607 G92 [GeForce GTS 240] 0608 G92M [GeForce 9800M GTX] 0609 G92M [GeForce 8800M GTS] 106b 00a7 GeForce 8800 GS 060a G92M [GeForce GTX 280M] 060b G92M [GeForce 9800M GT] 060c G92M [GeForce 8800M GTX] 060d G92 [GeForce 8800 GS] 060f G92M [GeForce GTX 285M] 0610 G92 [GeForce 9600 GSO] 1682 2385 GeForce 9600 GSO 768mb 0611 G92 [GeForce 8800 GT] 107d 2ab0 Winfast PX8800 GT PCI-E 1462 1170 NX8800GT series model V117 2xDVI+TV 19da 1040 ZT-88TES2P-FSP 0612 G92 [GeForce 9800 GTX / 9800 GTX+] 0613 G92 [GeForce 9800 GTX+] 0614 G92 [GeForce 9800 GT] 107d 2ab3 WinFast PX9800 GT (S-Fanpipe) 0615 G92 [GeForce GTS 250] 3842 1150 GeForce GTS 250 P/N 512-P3-1150-TR # Overclocked 3842 1151 GeForce GTS 250 P/N 512-P3-1151-TR 3842 1155 GeForce GTS 250 P/N 01G-P3-1155-TR # Overclocked 3842 1156 GeForce GTS 250 P/N 01G-P3-1156-TR 0617 G92M [GeForce 9800M GTX] 0618 G92M [GeForce GTX 260M] 0619 G92GL [Quadro FX 4700 X2] 061a G92GL [Quadro FX 3700] 061b G92GL [Quadro VX 200] 061c G92GLM [Quadro FX 3600M] 061d G92GLM [Quadro FX 2800M] 061e G92GLM [Quadro FX 3700M] 061f G92GLM [Quadro FX 3800M] 0620 G94 [GeForce 9800 GT] 0621 G94 [GeForce GT 230] 0622 G94 [GeForce 9600 GT] 107d 2ac1 WinFast PX9600GT 1024MB 1458 3481 GV-NX96T512HP 0623 G94 [GeForce 9600 GS] 0624 G94 [GeForce 9600 GT Green Edition] 0625 G94 [GeForce 9600 GSO 512] 0626 G94 [GeForce GT 130] 0627 G94 [GeForce GT 140] 0628 G94M [GeForce 9800M GTS] 062a G94M [GeForce 9700M GTS] 062b G94M [GeForce 9800M GS] 062c G94M [GeForce 9800M GTS] 062d G94 [GeForce 9600 GT] 062e G94 [GeForce 9600 GT] 106b 0605 GeForce GT 130 062f G94 [GeForce 9800 S] 0630 G94 [GeForce 9600 GT] 0631 G94M [GeForce GTS 160M] 0632 G94M [GeForce GTS 150M] 0633 G94 [GeForce GT 220] 0635 G94 [GeForce 9600 GSO] 0637 G94 [GeForce 9600 GT] 0638 G94GL [Quadro FX 1800] 063a G94GLM [Quadro FX 2700M] 063f G94 [GeForce 9600 GE] 0640 G96C [GeForce 9500 GT] 0641 G96C [GeForce 9400 GT] 1682 4009 PV-T94G-ZAFG 0642 G96 [D9M-10] 0643 G96 [GeForce 9500 GT] 0644 G96 [GeForce 9500 GS] 174b 9600 Geforce 9500GS 512M DDR2 V/D/HDMI 0645 G96C [GeForce 9500 GS] 0646 G96C [GeForce GT 120] 0647 G96CM [GeForce 9600M GT] 0648 G96CM [GeForce 9600M GS] 0649 G96CM [GeForce 9600M GT] 1043 202d GeForce GT 220M 064a G96M [GeForce 9700M GT] 064b G96M [GeForce 9500M G] 064c G96CM [GeForce 9650M GT] 064e G96C [GeForce 9600 GSO / 9800 GT] 0651 G96CM [GeForce G 110M] 0652 G96CM [GeForce GT 130M] 152d 0850 GeForce GT 240M LE 0653 G96CM [GeForce GT 120M] 0654 G96CM [GeForce GT 220M] 1043 14a2 GeForce GT 320M 1043 14d2 GeForce GT 320M 0655 G96 [GeForce GT 120 Mac Edition] 0656 G96 [GeForce GT 120 Mac Edition] 0658 G96GL [Quadro FX 380] 0659 G96CGL [Quadro FX 580] 065a G96GLM [Quadro FX 1700M] 065b G96C [GeForce 9400 GT] 065c G96GLM [Quadro FX 770M] 065d G96 [GeForce 9500 GA / 9600 GT / GTS 250] 065f G96C [GeForce G210] 06c0 GF100 [GeForce GTX 480] 06c4 GF100 [GeForce GTX 465] 06ca GF100M [GeForce GTX 480M] 06cb GF100 [GeForce GTX 480] 06cd GF100 [GeForce GTX 470] 06d0 GF100GL 06d1 GF100GL [Tesla C2050 / C2070] 10de 0771 Tesla C2050 10de 0772 Tesla C2070 06d2 GF100GL [Tesla M2070] 10de 0774 Tesla M2070 10de 0830 Tesla M2070 10de 0842 Tesla M2070 10de 088f Tesla X2070 10de 0908 Tesla M2070 06d8 GF100GL [Quadro 6000] 06d9 GF100GL [Quadro 5000] 06da GF100GLM [Quadro 5000M] 06dc GF100GL [Quadro 6000] 06dd GF100GL [Quadro 4000] 06de GF100GL [Tesla T20 Processor] 10de 0773 Tesla S2050 10de 082f Tesla M2050 10de 0840 Tesla X2070 10de 0842 Tesla M2050 10de 0846 Tesla M2050 10de 0866 Tesla M2050 10de 0907 Tesla M2050 10de 091e Tesla M2050 06df GF100GL [Tesla M2070-Q] 10de 084d Tesla M2070-Q 10de 087f Tesla M2070-Q 06e0 G98 [GeForce 9300 GE] 107d 5a96 Geforce 9300GE 06e1 G98 [GeForce 9300 GS] 06e2 G98 [GeForce 8400] 06e3 G98 [GeForce 8300 GS] 06e4 G98 [GeForce 8400 GS Rev. 2] 1458 3475 GV-NX84S256HE [GeForce 8400 GS] 06e5 G98M [GeForce 9300M GS] 06e6 G98 [GeForce G 100] 06e7 G98 [GeForce 9300 SE] 06e8 G98M [GeForce 9200M GS] 103c 360b GeForce 9200M GE 06e9 G98M [GeForce 9300M GS] 1043 19b2 U6V laptop 06ea G98M [Quadro NVS 150M] 06eb G98M [Quadro NVS 160M] 06ec G98M [GeForce G 105M] 06ed G98 [GeForce 9600 GT / 9800 GT] 06ee G98 [GeForce 9600 GT / 9800 GT / GT 240] 06ef G98M [GeForce G 103M] 06f1 G98M [GeForce G 105M] 06f8 G98 [Quadro NVS 420] 06f9 G98GL [Quadro FX 370 LP] 06fa G98 [Quadro NVS 450] 06fb G98GLM [Quadro FX 370M] 06fd G98 [Quadro NVS 295] 06ff G98 [HICx16 + Graphics] 10de 0711 HICx8 + Graphics 0751 MCP78S [GeForce 8200] Memory Controller 103c 2a9e Pavilion p6310f 1043 82e8 M3N72-D 1462 7508 K9N2GM-FIH 1849 0751 K10N78FullHD-hSLI R3.0 Memory Controller 0752 MCP78S [GeForce 8200] SMBus 103c 2a9e Pavilion p6310f 1043 82e8 M3N72-D 1462 7508 K9N2GM-FIH 1849 0752 K10N78FullHD-hSLI R3.0 SMBus 0753 MCP78S [GeForce 8200] Co-Processor 103c 2a9e Pavilion p6310f 1043 82e8 M3N72-D 1462 7508 K9N2GM-FIH 1849 0753 K10N78FullHD-hSLI R3.0 Co-Processor 0754 MCP78S [GeForce 8200] Memory Controller 103c 2a9e Pavilion p6310f 1043 82e8 M3N72-D 1462 7508 K9N2GM-FIH 1849 0754 K10N78FullHD-hSLI R3.0 Memory Controller 0759 MCP78S [GeForce 8200] IDE 1043 82e8 M3N72-D 1462 7508 K9N2GM-FIH 1849 0759 K10N78FullHD-hSLI R3.0 IDE 075a MCP78S [GeForce 8200] PCI Bridge 103c 2a9e Pavilion p6310f 1043 82e8 M3N72-D 1849 075a K10N78FullHD-hSLI R3.0 PCI Bridge 075b MCP78S [GeForce 8200] PCI Express Bridge 103c 2a9e Pavilion p6310f 1043 82e8 M3N72-D 1462 7508 K9N2GM-FIH 1849 075b K10N78FullHD-hSLI R3.0 PCI Express Bridge 075c MCP78S [GeForce 8200] LPC Bridge 103c 2a9e Pavilion p6310f 1462 7508 K9N2GM-FIH 1849 075c K10N78FullHD-hSLI R3.0 LPC Bridge 075d MCP78S [GeForce 8200] LPC Bridge 1043 82e8 M3N72-D 0760 MCP77 Ethernet 103c 2a9e Pavilion p6310f 1043 82e8 M3N72-D 1462 7508 K9N2GM-FIH 1849 0760 K10N78FullHD-hSLI R3.0 Ethernet 0761 MCP77 Ethernet 0762 MCP77 Ethernet 0763 MCP77 Ethernet 0774 MCP72XE/MCP72P/MCP78U/MCP78S High Definition Audio 103c 2a9e Pavilion p6310f # has a Realtek ALC1200 HDAudio Codec 1043 82fe M3N72-D 1462 7508 K9N2GM-FIH 1849 3662 K10N78FullHD-hSLI R3.0 High Definition Audio 0778 MCP78S [GeForce 8200] PCI Express Bridge 103c 2a9e Pavilion p6310f 1043 82e8 M3N72-D 1462 7508 K9N2GM-FIH 1849 0778 K10N78FullHD-hSLI R3.0 PCI Express Bridge 077a MCP78S [GeForce 8200] PCI Bridge 103c 2a9e Pavilion p6310f 1043 82e8 M3N72-D 1462 7508 K9N2GM-FIH 1849 077a K10N78FullHD-hSLI R3.0 PCI Bridge 077b MCP78S [GeForce 8200] OHCI USB 1.1 Controller 103c 2a9e Pavilion p6310f 1043 82e8 M3N72-D 1462 7508 K9N2GM-FIH 1849 077b K10N78FullHD-hSLI R3.0 OHCI USB 1.1 Controller 077c MCP78S [GeForce 8200] EHCI USB 2.0 Controller 103c 2a9e Pavilion p6310f 1043 82e8 M3N72-D 1462 7508 K9N2GM-FIH 1849 077c K10N78FullHD-hSLI R3.0 EHCI USB 2.0 Controller 077d MCP78S [GeForce 8200] OHCI USB 1.1 Controller 103c 2a9e Pavilion p6310f 1043 82e8 M3N72-D 1462 7508 K9N2GM-FIH 1849 077d K10N78FullHD-hSLI R3.0 OHCI USB 1.1 Controller 077e MCP78S [GeForce 8200] EHCI USB 2.0 Controller 103c 2a9e Pavilion p6310f 1043 82e8 M3N72-D 1462 7508 K9N2GM-FIH 1849 077e K10N78FullHD-hSLI R3.0 EHCI USB 2.0 Controller 07c0 MCP73 Host Bridge 1afa 7150 JW-IN7150-HD 07c1 MCP73 Host Bridge 1019 297a MCP73PVT-SM 07c2 MCP73 Host Bridge 07c3 MCP73 Host Bridge 147b 1c3e I-N73V motherboard 07c5 MCP73 Host Bridge 07c8 MCP73 Memory Controller 1019 297a MCP73PVT-SM 147b 1c3e I-N73V motherboard 1afa 7150 JW-IN7150-HD 07cb nForce 610i/630i memory controller 1019 297a MCP73PVT-SM 147b 1c3e I-N73V motherboard 1afa 7150 JW-IN7150-HD 07cd nForce 610i/630i memory controller 1019 297a MCP73PVT-SM 147b 1c3e I-N73V motherboard 1afa 7150 JW-IN7150-HD 07ce nForce 610i/630i memory controller 1019 297a MCP73PVT-SM 147b 1c3e I-N73V motherboard 1afa 7150 JW-IN7150-HD 07cf nForce 610i/630i memory controller 1019 297a MCP73PVT-SM 147b 1c3e I-N73V motherboard 1afa 7150 JW-IN7150-HD 07d0 nForce 610i/630i memory controller 1019 297a MCP73PVT-SM 147b 1c3e I-N73V motherboard 1afa 7150 JW-IN7150-HD 07d1 nForce 610i/630i memory controller 1019 297a MCP73PVT-SM 147b 1c3e I-N73V motherboard 1afa 7150 JW-IN7150-HD 07d2 nForce 610i/630i memory controller 1019 297a MCP73PVT-SM 147b 1c3e I-N73V motherboard 1afa 7150 JW-IN7150-HD 07d3 nForce 610i/630i memory controller 1019 297a MCP73PVT-SM 147b 1c3e I-N73V motherboard 1afa 7150 JW-IN7150-HD 07d6 nForce 610i/630i memory controller 1019 297a MCP73PVT-SM 147b 1c3e I-N73V motherboard 1afa 7150 JW-IN7150-HD 07d7 MCP73 LPC Bridge 1019 297a MCP73PVT-SM 147b 1c3e I-N73V motherboard 1afa 7150 JW-IN7150-HD 07d8 MCP73 SMBus 1019 297a MCP73PVT-SM 147b 1c3e I-N73V motherboard 1afa 7150 JW-IN7150-HD 07d9 MCP73 Memory Controller 1019 297a MCP73PVT-SM 147b 1c3e I-N73V motherboard 1afa 7150 JW-IN7150-HD 07da MCP73 Co-processor 1afa 7150 JW-IN7150-HD 07dc MCP73 Ethernet 147b 1c3e I-N73V motherboard 07dd MCP73 Ethernet 07de MCP73 Ethernet 07df MCP73 Ethernet 07e0 C73 [GeForce 7150 / nForce 630i] 1afa 7150 JW-IN7150-HD 07e1 C73 [GeForce 7100 / nForce 630i] 1019 297a MCP73PVT-SM 07e2 C73 [GeForce 7050 / nForce 630i] 07e3 C73 [GeForce 7050 / nForce 610i] 147b 1c3e I-N73V motherboard 07e5 C73 [GeForce 7100 / nForce 620i] 07f0 MCP73 SATA Controller (IDE mode) 147b 1c3e I-N73V motherboard 07f4 GeForce 7100/nForce 630i SATA 1019 297a MCP73PVT-SM 147b 1c3e I-N73V motherboard 07f8 MCP73 SATA RAID Controller 147b 1c3e I-N73V motherboard 07fc MCP73 High Definition Audio 1019 297a MCP73PVT-SM 10de 07fc MCP73 High Definition Audio 147b 1c3e I-N73V motherboard 07fe MCP73 OHCI USB 1.1 Controller 1019 297a MCP73PVT-SM 147b 1c3e I-N73V motherboard 1afa 7150 JW-IN7150-HD 0840 C77 [GeForce 8200M] 0844 C77 [GeForce 9100M G] 0845 C77 [GeForce 8200M G] 0846 C77 [GeForce 9200] 0847 C78 [GeForce 9100] 103c 2a9e Pavilion p6310f 0848 C77 [GeForce 8300] 0849 C77 [GeForce 8200] 1462 7508 K9N2GM-FIH 1849 0849 K10N78FullHD-hSLI R3.0 GeForce 8200 084a C77 [nForce 730a] 084b C77 [GeForce 8200] 084c C77 [nForce 780a/980a SLI] 084d C77 [nForce 750a SLI] 1043 82e8 M3N72-D mGPU 084f C77 [GeForce 8100 / nForce 720a] 0860 C79 [GeForce 9300] 0861 C79 [GeForce 9400] 0862 C79 [GeForce 9400M G] 0863 C79 [GeForce 9400M] 106b 00aa MacBook5,1 0864 C79 [GeForce 9300] 0865 C79 [GeForce 9300 / ION] 0866 C79 [GeForce 9400M G] 106b 00b1 GeForce 9400M 0867 C79 [GeForce 9400] 106b 00ad iMac 9,1 0868 C79 [nForce 760i SLI] 0869 MCP7A [GeForce 9400] 086a C79 [GeForce 9400] 086c C79 [GeForce 9300 / nForce 730i] 086d C79 [GeForce 9200] 086e C79 [GeForce 9100M G] 086f MCP79 [GeForce 8200M G] 1043 16b2 F5GL Notebook 0870 C79 [GeForce 9400M] 0871 C79 [GeForce 9200] 0872 C79 [GeForce G102M] 1043 19b4 GeForce G102M 1043 1aa2 GeForce G102M 1043 1c02 GeForce G102M 1043 1c42 GeForce G205M 0873 C79 [GeForce G102M] 1043 19b4 GeForce G102M 1043 1c12 GeForce G102M 1043 1c52 GeForce G205M 0874 C79 [ION] 0876 C79 [GeForce 9400M / ION] 087a C79 [GeForce 9400] 087d C79 [ION] 19da a123 IONITX-F-E 087e C79 [ION LE] 087f C79 [ION LE] 08a0 MCP89 [GeForce 320M] 08a2 MCP89 [GeForce 320M] 08a3 MCP89 [GeForce 320M] 08a4 MCP89 [GeForce 320M] 08a5 MCP89 [GeForce 320M] 0a20 GT216 [GeForce GT 220] 1043 8311 ENGT220/DI/1GD3(LP)/V2 0a21 GT216M [GeForce GT 330M] 0a22 GT216 [GeForce 315] 0a23 GT216 [GeForce 210] 0a24 GT216 [GeForce 405] 0a26 GT216 [GeForce 405] 0a27 GT216 [GeForce 405] 0a28 GT216M [GeForce GT 230M] 0a29 GT216M [GeForce GT 330M] 0a2a GT216M [GeForce GT 230M] 0a2b GT216M [GeForce GT 330M] 0a2c GT216M [NVS 5100M] 0a2d GT216M [GeForce GT 320M] 0a30 GT216 [GeForce 505] 0a32 GT216 [GeForce GT 415] 0a34 GT216M [GeForce GT 240M] 0a35 GT216M [GeForce GT 325M] 0a38 GT216GL [Quadro 400] 0a3c GT216GLM [Quadro FX 880M] 0a60 GT218 [GeForce G210] 0a62 GT218 [GeForce 205] 0a63 GT218 [GeForce 310] 0a64 GT218 [ION] 0a65 GT218 [GeForce 210] 1043 8334 EN210 SILENT 1458 36a9 GV-N210D3-1GI (rev. 6.0/6.1) 1462 8094 N210 [Geforce 210] PCIe graphics adapter 19da 7222 GeForce 210 1GB [Synergy Edition] 0a66 GT218 [GeForce 310] 0a67 GT218 [GeForce 315] 0a68 GT218M [GeForce G 105M] 0a69 GT218M [GeForce G 105M] 0a6a GT218M [NVS 2100M] 0a6c GT218M [NVS 3100M] 1028 040b Latitude E6510 17aa 2142 ThinkPad T410 0a6e GT218M [GeForce 305M] 0a6f GT218M [ION] 0a70 GT218M [GeForce 310M] 0a71 GT218M [GeForce 305M] 0a72 GT218M [GeForce 310M] 0a73 GT218M [GeForce 305M] 0a74 GT218M [GeForce G210M] 1b0a 903a GeForce G210 0a75 GT218M [GeForce 310M] 0a76 GT218M [ION 2] 0a78 GT218GL [Quadro FX 380 LP] 0a7a GT218M [GeForce 315M] 104d 907e GeForce 315M 1179 fc50 GeForce 315M 1179 fc61 GeForce 315M 1179 fc71 GeForce 315M 1179 fc90 GeForce 315M 1179 fcc0 GeForce 315M 1179 fcd0 GeForce 315M 1179 fce2 GeForce 315M 1179 fcf2 GeForce 315M 1179 fd16 GeForce 315M 1179 fd40 GeForce 315M 1179 fd50 GeForce 315M 1179 fd52 GeForce 315M 1179 fd61 GeForce 315M 1179 fd71 GeForce 315M 1179 fd92 GeForce 315M 1179 fd96 GeForce 315M 1179 fdd0 GeForce 315M 1179 fdd2 GeForce 315M 1179 fdfe GeForce 315M 144d c0a2 GeForce 315M 144d c0b2 GeForce 315M 144d c581 GeForce 315M 144d c587 GeForce 315M 144d c588 GeForce 315M 144d c597 GeForce 315M 144d c606 GeForce 315M 1462 aa51 GeForce 405 1462 aa58 GeForce 405 1462 ac71 GeForce 405 1462 ac81 GeForce 315M 1462 ac82 GeForce 405 1462 ae33 GeForce 405 1642 3980 GeForce 405 17aa 3950 GeForce 405M 17aa 397d GeForce 405M 1b0a 2091 GeForce 315M 1b0a 90b4 GeForce 405 1bfd 0003 GeForce 405 1bfd 8006 GeForce 405 1bfd 8007 GeForce 315M 0a7b GT218 [GeForce 505] 0a7c GT218GLM [Quadro FX 380M] 0a80 MCP79 Host Bridge 0a81 MCP79 Host Bridge 0a82 MCP79 Host Bridge 0a83 MCP79 Host Bridge 0a84 MCP79 Host Bridge 0a85 MCP79 Host Bridge 0a86 MCP79 Host Bridge 0a87 MCP79 Host Bridge 0a88 MCP79 Memory Controller 0a89 MCP79 Memory Controller 0a98 MCP79 Memory Controller 1043 1a87 F5GL Notebook 10de cb79 iMac 9,1 0aa0 MCP79 PCI Express Bridge 1043 1a87 F5GL Notebook 10de cb79 Apple iMac 9,1 0aa2 MCP79 SMBus 1043 1a87 F5GL Notebook 10de cb79 Apple iMac 9,1 19da a123 IONITX-F-E 0aa3 MCP79 Co-processor 1043 1a87 F5GL Notebook 10de cb79 Apple iMac 9,1 19da a123 IONITX-F-E 0aa4 MCP79 Memory Controller 1043 1a87 F5GL Notebook 19da a123 IONITX-F-E 0aa5 MCP79 OHCI USB 1.1 Controller 1043 1a87 F5GL Notebook 10de cb79 Apple iMac 9,1 19da a123 IONITX-F-E 0aa6 MCP79 EHCI USB 2.0 Controller 1043 1a87 F5GL Notebook 10de cb79 Apple iMac 9,1 19da a123 IONITX-F-E 0aa7 MCP79 OHCI USB 1.1 Controller 10de cb79 Apple iMac 9,1 19da a123 IONITX-F-E 0aa8 MCP79 OHCI USB 1.1 Controller 0aa9 MCP79 EHCI USB 2.0 Controller 10de cb79 Apple iMac 9,1 19da a123 IONITX-F-E 0aaa MCP79 EHCI USB 2.0 Controller 0aab MCP79 PCI Bridge 1043 1a87 F5GL Notebook 10de cb79 Apple iMac 9,1 0aac MCP79 LPC Bridge 0aad MCP79 LPC Bridge 19da a123 IONITX-F-E 0aae MCP79 LPC Bridge 1043 1a87 F5GL Notebook 10de cb79 Apple iMac 9,1 0aaf MCP79 LPC Bridge 0ab0 MCP79 Ethernet 1043 1215 F5GL Notebook 10de cb79 Apple iMac 9,1 19da a123 IONITX-F-E 0ab1 MCP79 Ethernet 0ab2 MCP79 Ethernet 0ab3 MCP79 Ethernet 0ab4 MCP79 SATA Controller 19da a123 IONITX-F-E 0ab5 MCP79 SATA Controller 0ab6 MCP79 SATA Controller 0ab7 MCP79 SATA Controller 0ab8 MCP79 AHCI Controller 1043 1a87 F5GL Notebook 0ab9 MCP79 AHCI Controller 10de cb79 Apple iMac 9,1 0aba MCP79 AHCI Controller 0abb MCP79 AHCI Controller 0abc MCP79 RAID Controller 0abd MCP79 RAID Controller 0abe MCP79 RAID Controller 0abf MCP79 RAID Controller 0ac0 MCP79 High Definition Audio 1043 1903 F5GL Notebook 10de cb79 Apple iMac 9,1 0ac1 MCP79 High Definition Audio 0ac2 MCP79 High Definition Audio 0ac3 MCP79 High Definition Audio 0ac4 MCP79 PCI Express Bridge 10de cb79 Apple iMac 9,1 0ac5 MCP79 PCI Express Bridge 0ac6 MCP79 PCI Express Bridge 1043 1a87 F5GL Notebook 10de cb79 Apple iMac 9,1 0ac7 MCP79 PCI Express Bridge 1043 1a87 F5GL Notebook 10de cb79 Apple iMac 9,1 0ac8 MCP79 PCI Express Bridge 0ad0 MCP78S [GeForce 8200] SATA Controller (non-AHCI mode) 1462 7508 K9N2GM-FIH 1849 0ad0 K10N78FullHD-hSLI R3.0 IDE 0ad4 MCP78S [GeForce 8200] AHCI Controller 103c 2a9e Pavilion p6310f 1043 82e8 M3N72-D 1849 0ad4 K10N78FullHD-hSLI R3.0 AHCI Controller 0ad8 MCP78S [GeForce 8200] SATA Controller (RAID mode) 0be2 GT216 HDMI Audio Controller 1043 8311 ENGT220/DI/1GD3(LP)/V2 0be3 High Definition Audio Controller 1028 040b Latitude E6510 10de 066d G98 [GeForce 8400GS] 1462 8094 N210 [Geforce 210] PCIe graphics adapter 0be4 High Definition Audio Controller 0be5 GF100 High Definition Audio Controller 0be9 GF106 High Definition Audio Controller 1558 8687 CLEVO/KAPOK W860CU 3842 1452 GeForce GTS 450 0bea GF108 High Definition Audio Controller 3842 1430 GeForce GT 430 0beb GF104 High Definition Audio Controller 1462 2322 N460GTX Cyclone 1GD5/OC 0bee GF116 High Definition Audio Controller 0bf0 Tegra2 PCIe x4 Bridge 0bf1 Tegra2 PCIe x2 Bridge 0ca0 GT215 [GeForce GT 330] 0ca2 GT215 [GeForce GT 320] 0ca3 GT215 [GeForce GT 240] 0ca4 GT215 [GeForce GT 340] 0ca5 GT215 [GeForce GT 220] 0ca7 GT215 [GeForce GT 330] 0ca8 GT215M [GeForce GTS 260M] 0ca9 GT215M [GeForce GTS 250M] 0cac GT215 [GeForce GT 220/315] 0caf GT215M [GeForce GT 335M] 0cb0 GT215M [GeForce GTS 350M] 0cb1 GT215M [GeForce GTS 360M] 0cbc GT215GLM [Quadro FX 1800M] 0d60 MCP89 HOST Bridge 0d68 MCP89 Memory Controller 0d69 MCP89 Memory Controller 0d76 MCP89 PCI Express Bridge 0d79 MCP89 SMBus 0d7a MCP89 Co-Processor 0d7b MCP89 Memory Controller 0d7d MCP89 Ethernet 0d80 MCP89 LPC Bridge 0d85 MCP89 SATA Controller 0d88 MCP89 SATA Controller (AHCI mode) 0d89 MCP89 SATA Controller (AHCI mode) 0d8d MCP89 SATA Controller (RAID mode) 0d94 MCP89 High Definition Audio 0d9c MCP89 OHCI USB 1.1 Controller 0d9d MCP89 EHCI USB 2.0 Controller 0dc0 GF106 [GeForce GT 440] 0dc4 GF106 [GeForce GTS 450] 0dc5 GF106 [GeForce GTS 450 OEM] 0dc6 GF106 [GeForce GTS 450 OEM] 0dcd GF106M [GeForce GT 555M] 0dce GF106M [GeForce GT 555M] 0dd1 GF106M [GeForce GTX 460M] 1558 8687 CLEVO/KAPOK W860CU 0dd2 GF106M [GeForce GT 445M] 0dd3 GF106M [GeForce GT 435M] 0dd6 GF106M [GeForce GT 550M] 0dd8 GF106GL [Quadro 2000] 10de 0914 Quadro 2000D 0dda GF106GLM [Quadro 2000M] 0de0 GF108 [GeForce GT 440] 0de1 GF108 [GeForce GT 430] 3842 1430 GeForce GT 430 0de2 GF108 [GeForce GT 420] 0de3 GF108M [GeForce GT 635M] 0de4 GF108 [GeForce GT 520] 0de5 GF108 [GeForce GT 530] 0de7 GF108 [GeForce GT 610] 0de8 GF108M [GeForce GT 620M] 0de9 GF108M [GeForce GT 620M/630M/635M/640M LE] 1025 0692 GeForce GT 620M 1025 0725 GeForce GT 620M 1025 0728 GeForce GT 620M 1025 072b GeForce GT 620M 1025 072e GeForce GT 620M 1025 0753 GeForce GT 620M 1025 0754 GeForce GT 620M 17aa 3977 GeForce GT 640M LE 1b0a 20c6 GeForce GT 630M 1b0a 2210 GeForce GT 635M 0dea GF108M [GeForce 610M] 17aa 365a GeForce 615 17aa 365b GeForce 615 17aa 365e GeForce 615 17aa 3660 GeForce 615 17aa 366c GeForce 615 0deb GF108M [GeForce GT 555M] 0dec GF108M [GeForce GT 525M] 0ded GF108M [GeForce GT 520M] 0dee GF108M [GeForce GT 415M] 0def GF108M [NVS 5400M] 0df0 GF108M [GeForce GT 425M] 0df1 GF108M [GeForce GT 420M] 0df2 GF108M [GeForce GT 435M] 0df3 GF108M [GeForce GT 420M] 0df4 GF108M [GeForce GT 540M] 152d 0952 GeForce GT 630M 152d 0953 GeForce GT 630M 0df5 GF108M [GeForce GT 525M] 0df6 GF108M [GeForce GT 550M] 0df7 GF108M [GeForce GT 520M] 0df8 GF108GL [Quadro 600] 0df9 GF108GLM [Quadro 500M] 0dfa GF108GLM [Quadro 1000M] 0dfc GF108GLM [NVS 5200M] 0e08 GF119 HDMI Audio Controller 1043 83a0 ENGT520 SILENT # 1024MB with passive cooling (heatsink) 10b0 104a Gainward GeForce GT 610 0e09 GF110 High Definition Audio Controller 0e0a GK104 HDMI Audio Controller 0e0b GK106 HDMI Audio Controller 0e0c GF114 HDMI Audio Controller 0e0f GK208 HDMI/DP Audio Controller 0e12 TegraK1 PCIe x4 Bridge 0e13 TegraK1 PCIe x1 Bridge 0e1a GK110 High Definition Audio Controller 0e1b GK107 HDMI Audio Controller 103c 197b ZBook 15 1043 8428 GTX650-DC-1GD5 0e1c Tegra3+ PCIe x4 Bridge 0e1d Tegra3+ PCIe x2 Bridge 0e22 GF104 [GeForce GTX 460] 1462 2322 N460GTX Cyclone 1GD5/OC 0e23 GF104 [GeForce GTX 460 SE] 0e24 GF104 [GeForce GTX 460 OEM] 0e30 GF104M [GeForce GTX 470M] 0e31 GF104M [GeForce GTX 485M] 0e3a GF104GLM [Quadro 3000M] 0e3b GF104GLM [Quadro 4000M] 0f00 GF108 [GeForce GT 630] 0f01 GF108 [GeForce GT 620] 0f02 GF108 [GeForce GT 730] 0f03 GF108 [GeForce GT 610] 0f06 GF108 [GeForce GT 730] 0fa0 GK11x [GK11x_FPGA] 0fa5 GK11x 0fa7 GK11x [Tegra on x86 (PEATRANS)] 0fb0 GM200 High Definition Audio 0fb8 GP108 High Definition Audio Controller 0fb9 GP107GL High Definition Audio Controller 0fba GM206 High Definition Audio Controller 0fbb GM204 High Definition Audio Controller 0fbc GM107 High Definition Audio Controller [GeForce 940MX] 0fc0 GK107 [GeForce GT 640 OEM] 0fc1 GK107 [GeForce GT 640] 0fc2 GK107 [GeForce GT 630 OEM] 0fc4 GK107 [D14P1-15] 0fc5 GK107 [GeForce GT 1030] 0fc6 GK107 [GeForce GTX 650] 1043 8428 GTX650-DC-1GD5 0fc8 GK107 [GeForce GT 740] 0fc9 GK107 [GeForce GT 730] 0fcb GK107 [EXK107] 0fcc GK107 [GeForce GT 720] 0fcd GK107M [GeForce GT 755M] 0fce GK107M [GeForce GT 640M LE] 0fcf GK107 [GEN3 ESI] 0fd0 GK107 [NB1G] 0fd1 GK107M [GeForce GT 650M] 1043 1597 GeForce GT 650M 1043 15a7 GeForce GT 650M 1043 2103 N56VZ 1043 2105 GeForce GT 650M 1043 2141 GeForce GT 650M 0fd2 GK107M [GeForce GT 640M] 1028 054f GeForce GT 640M 1028 055f GeForce GT 640M 1028 0595 GeForce GT 640M LE 1028 05b2 GeForce GT 640M LE 0fd3 GK107M [GeForce GT 640M LE] 0fd4 GK107M [GeForce GTX 660M] 0fd5 GK107M [GeForce GT 650M Mac Edition] 0fd6 GK107M [N13P-GS-W] 0fd7 GK107 [GK107-GTX] 0fd8 GK107M [GeForce GT 640M Mac Edition] 0fd9 GK107M [GeForce GT 645M] 0fda GK107 [GK107-ES-A1] 0fdb GK107 [GK107-ESP-A1] 0fdc GK107 [GK107-INT22-A1] 0fdd GK107 [GK107-INT11-A1] 0fde GK107 [GK107-ES-KA-E1] 0fdf GK107M [GeForce GT 740M] 0fe0 GK107M [GeForce GTX 660M Mac Edition] 0fe1 GK107M [GeForce GT 730M] 0fe2 GK107M [GeForce GT 745M] 0fe3 GK107M [GeForce GT 745M] 103c 2b16 GeForce GT 745A 17aa 3675 GeForce GT 745A 0fe4 GK107M [GeForce GT 750M] 0fe5 GK107 [GeForce K340 USM] 0fe6 GK107 [GRID K1 NVS USM] # GRID K1 USM 0fe7 GK107GL [GRID K100 vGPU] 10de 101e GRID K100 0fe8 GK107M [N14P-GS] 0fe9 GK107M [GeForce GT 750M Mac Edition] 0fea GK107M [GeForce GT 755M Mac Edition] 0fec GK107M [GeForce 710A] 0fed GK107M [GeForce 820M] 0fee GK107M [GeForce 810M] 0fef GK107GL [GRID K340] 0ff0 GK107 [NB1Q] 0ff1 GK107 [NVS 1000] 0ff2 GK107GL [GRID K1] 0ff3 GK107GL [Quadro K420] 0ff5 GK107GL [GRID K1 Tesla USM] 0ff6 GK107GLM [Quadro K1100M] 103c 197b ZBook 15 # GRID K1 Quadro USM 0ff7 GK107GL [GRID K140Q vGPU] 10de 1037 GRID K140Q 0ff8 GK107GLM [Quadro K500M] 0ff9 GK107GL [Quadro K2000D] 0ffa GK107GL [Quadro K600] 0ffb GK107GLM [Quadro K2000M] 0ffc GK107GLM [Quadro K1000M] 0ffd GK107 [NVS 510] 0ffe GK107GL [Quadro K2000] 0fff GK107GL [Quadro 410] 1001 GK110B [GeForce GTX TITAN Z] 1003 GK110 [GeForce GTX Titan LE] 1004 GK110 [GeForce GTX 780] 3842 0784 GK110B [GeForce GTX 780 SC w/ ACX Cooler] 3842 1784 GK110B [GeForce GTX 780 Dual FTW w/ ACX Cooler] 3842 1788 GK110B [GeForce GTX 780 Dual Classified w/ ACX Cooler] 1005 GK110 [GeForce GTX TITAN] 1043 8451 GTXTITAN-6GD5 # Reference Model 10de 1035 GeForce GTX Titan # 06G-P4-2790-KR 3842 2790 GeForce GTX Titan # 06G-P4-2791-KR 3842 2791 GeForce GTX Titan SC # 06G-P4-2793-KR 3842 2793 GeForce GTX Titan SC Signature # 06G-P4-2794-KR 3842 2794 GeForce GTX Titan SC Hydro Copper # 06G-P4-2795-KR 3842 2795 GeForce GTX Titan SC Hydro Copper Signature 1007 GK110 [GeForce GTX 780 Rev. 2] 1008 GK110 [GeForce GTX 780 Ti 6GB] 100a GK110B [GeForce GTX 780 Ti] 100c GK110B [GeForce GTX TITAN Black] 101e GK110GL [Tesla K20X] 101f GK110GL [Tesla K20] 1020 GK110GL [Tesla K20X] 1021 GK110GL [Tesla K20Xm] 1022 GK110GL [Tesla K20c] 1023 GK110BGL [Tesla K40m] 10de 097e 12GB Computational Accelerator 1024 GK180GL [Tesla K40c] 1026 GK110GL [Tesla K20s] 1027 GK110BGL [Tesla K40st] 1028 GK110GL [Tesla K20m] 1029 GK110BGL [Tesla K40s] 102a GK110BGL [Tesla K40t] 102d GK210GL [Tesla K80] 102e GK110BGL [Tesla K40d] 102f GK110BGL [Tesla Stella Solo] 103a GK110GL [Quadro K6000] 103c GK110GL [Quadro K5200] 103f GK110BGL [Tesla Stella SXM] 1040 GF119 [GeForce GT 520] 1043 83a0 ENGT520 SILENT 1042 GF119 [GeForce 510] 1045 GF119 1048 GF119 [GeForce 605] 1049 GF119 [GeForce GT 620 OEM] 104a GF119 [GeForce GT 610] # 1024MB with passive cooling (heatsink) 10b0 104a Gainward GeForce GT 610 104b GF119 [GeForce GT 625 OEM] 104c GF119 [GeForce GT 705] 104d GF119 [GeForce GT 710] 1050 GF119M [GeForce GT 520M] 1051 GF119M [GeForce GT 520MX] 1052 GF119M [GeForce GT 520M] 1054 GF119M [GeForce 410M] 1055 GF119M [GeForce 410M] 1056 GF119M [NVS 4200M] 1057 GF119M [Quadro NVS 4200M] 1058 GF119M [GeForce 610M] 103c 2aed GeForce 610 103c 2af1 GeForce 610 1043 10ac GeForce GT 610M 1043 10bc GeForce GT 610M 1043 1652 GeForce GT 610M 17aa 367a GeForce 610M 17aa 3682 GeForce 800A 17aa 3687 GeForce 800A 17aa 3692 GeForce 705A 17aa 3695 GeForce 800A 17aa a117 GeForce 610M 1059 GF119M [GeForce 610M] 105a GF119M [GeForce 610M] 1043 2111 GeForce GT 610M 1043 2112 GeForce GT 610M 105b GF119M [GeForce 705M] 103c 2afb GeForce 705A 17aa 309d GeForce 705A 17aa 30b1 GeForce 800A 17aa 30f3 GeForce 705A 17aa 36a1 GeForce 800A 107c GF119 [NVS 315] 107d GF119 [NVS 310] 1080 GF110 [GeForce GTX 580] 1081 GF110 [GeForce GTX 570] 10de 087e Leadtek WinFast GTX 570 1082 GF110 [GeForce GTX 560 Ti OEM] 1084 GF110 [GeForce GTX 560 OEM] 1086 GF110 [GeForce GTX 570 Rev. 2] 1087 GF110 [GeForce GTX 560 Ti 448 Cores] 1088 GF110 [GeForce GTX 590] 1089 GF110 [GeForce GTX 580 Rev. 2] 108b GF110 [GeForce GTX 580] 108e GF110GL [Tesla C2090] 1091 GF110GL [Tesla M2090] 10de 088e Tesla X2090 10de 0891 Tesla X2090 10de 0974 Tesla X2090 10de 098d Tesla X2090 1094 GF110GL [Tesla M2075] 10de 0888 Tesla M2075 1096 GF110GL [Tesla C2050 / C2075] 10de 0910 Tesla C2075 10de 0911 Tesla C2050 109a GF100GLM [Quadro 5010M] 109b GF100GL [Quadro 7000] 10de 0918 Quadro 7000 10c0 GT218 [GeForce 9300 GS Rev. 2] 10c3 GT218 [GeForce 8400 GS Rev. 3] 10c5 GT218 [GeForce 405] 10d8 GT218 [NVS 300] 10ef GP102 HDMI Audio Controller 10f0 GP104 High Definition Audio Controller 10f1 GP106 High Definition Audio Controller 1043 85b6 DUAL-GTX1060-O6G [GeForce GTX 1060 6GB Dual] 10f7 TU102 High Definition Audio Controller 10f8 TU104 HD Audio Controller 10f9 TU106 High Definition Audio Controller 1043 8673 TURBO-RTX2070-8G 1140 GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] 1019 0799 GeForce 820M 1019 999f GeForce GT 720M 1025 0600 GeForce GT 620M 1025 0606 GeForce GT 620M 1025 064a GeForce GT 620M 1025 064c GeForce GT 620M 1025 067a GeForce GT 620M 1025 0680 GeForce GT 620M 1025 0686 GeForce 710M 1025 0689 GeForce 710M 1025 068b GeForce 710M 1025 068d GeForce 710M 1025 068e GeForce 710M 1025 0691 GeForce 710M 1025 0692 GeForce GT 620M 1025 0694 GeForce GT 620M 1025 0702 GeForce GT 620M 1025 0719 GeForce GT 620M 1025 0725 GeForce GT 620M 1025 0728 GeForce GT 620M 1025 072b GeForce GT 620M 1025 072e GeForce GT 620M 1025 0732 GeForce GT 620M 1025 0763 GeForce GT 720M 1025 0773 GeForce 710M 1025 0774 GeForce 710M 1025 0776 GeForce GT 720M 1025 077a GeForce 710M 1025 077b GeForce 710M 1025 077c GeForce 710M 1025 077d GeForce 710M 1025 077e GeForce 710M 1025 077f GeForce 710M 1025 0781 GeForce GT 720M 1025 0798 GeForce GT 720M 1025 0799 GeForce GT 720M 1025 079b GeForce GT 720M 1025 079c GeForce GT 720M 1025 0807 GeForce GT 720M 1025 0821 GeForce GT 720M 1025 0823 GeForce GT 720M 1025 0830 GeForce GT 720M 1025 0833 GeForce GT 720M 1025 0837 GeForce GT 720M 1025 083e GeForce 820M 1025 0841 GeForce 710M 1025 0854 GeForce 820M 1025 0855 GeForce 820M 1025 0856 GeForce 820M 1025 0857 GeForce 820M 1025 0858 GeForce 820M 1025 0863 GeForce 820M 1025 0868 GeForce 820M 1025 0869 GeForce 810M 1025 0873 GeForce 820M 1025 0878 GeForce 820M 1025 087b GeForce 820M 1025 087c GeForce 810M 1025 0881 GeForce 820M 1025 088a GeForce 820M 1025 089b GeForce 820M 1025 090f GeForce 820M 1025 0921 GeForce 820M 1025 092e GeForce 810M 1025 092f GeForce 820M 1025 0932 GeForce 820M 1025 093a GeForce 820M 1025 093c GeForce 820M 1025 093f GeForce 820M 1025 0941 GeForce 820M 1025 0945 GeForce 820M 1025 0954 GeForce 820M 1025 0965 GeForce 820M 1028 054d GeForce GT 630M 1028 054e GeForce GT 630M 1028 0554 GeForce GT 620M 1028 0557 GeForce GT 620M 1028 0562 GeForce GT 625M 1028 0565 GeForce GT 630M 1028 0568 GeForce GT 630M 1028 0590 GeForce GT 630M 1028 0592 GeForce GT 625M 1028 0594 GeForce GT 625M 1028 0595 GeForce GT 625M 1028 05a2 GeForce GT 625M 1028 05b1 GeForce GT 625M 1028 05b3 GeForce GT 625M 1028 05da GeForce GT 630M 1028 05de GeForce GT 720M 1028 05e0 GeForce GT 720M 1028 05e8 GeForce GT 630M 1028 05f4 GeForce GT 720M 1028 060f GeForce GT 720M 1028 064e GeForce 820M 1028 0652 GeForce 820M 1028 0653 GeForce 820M 1028 0655 GeForce 820M 1028 065e GeForce 820M 1028 0662 GeForce 820M 1028 068d GeForce 820M 1028 06ad GeForce 820M 1028 06ae GeForce 820M 1028 06af GeForce 820M 1028 06b0 GeForce 820M 1028 06c0 GeForce 820M 1028 06c1 GeForce 820M 103c 18ef GeForce GT 630M 103c 18f9 GeForce GT 630M 103c 18fb GeForce GT 630M 103c 18fd GeForce GT 630M 103c 18ff GeForce GT 630M 103c 218a GeForce 820M 103c 21bb GeForce 820M 103c 21bc GeForce 820M 103c 220e GeForce 820M 103c 2210 GeForce 820M 103c 2212 GeForce 820M 103c 2214 GeForce 820M 103c 2218 GeForce 820M 103c 225b GeForce 820M 103c 225d GeForce 820M 103c 226d GeForce 820M 103c 226f GeForce 820M 103c 22d2 GeForce 820M 103c 22d9 GeForce 820M 103c 2335 GeForce 820M 103c 2337 GeForce 820M 103c 2aef GeForce GT 720A 103c 2af9 GeForce 710A 1043 10dd NVS 5200M 1043 10ed NVS 5200M 1043 11fd GeForce GT 720M 1043 124d GeForce GT 720M 1043 126d GeForce GT 720M 1043 131d GeForce GT 720M 1043 13fd GeForce GT 720M 1043 14c7 GeForce GT 720M 1043 1507 GeForce GT 620M 1043 15ad GeForce 820M 1043 15ed GeForce 820M 1043 160d GeForce 820M 1043 163d GeForce 820M 1043 166d GeForce 820M 1043 16cd GeForce 820M 1043 16dd GeForce 820M 1043 170d GeForce 820M 1043 176d GeForce 820M 1043 178d GeForce 820M 1043 179d GeForce 820M 1043 17dd GeForce 820M 1043 2132 GeForce GT 620M 1043 2136 NVS 5200M 1043 21ba GeForce GT 720M 1043 21fa GeForce GT 720M 1043 220a GeForce GT 720M 1043 221a GeForce GT 720M 1043 223a GeForce GT 710M 1043 224a GeForce GT 710M 1043 227a GeForce 820M 1043 228a GeForce 820M 1043 232a GeForce 820M 1043 233a GeForce 820M 1043 235a GeForce 820M 1043 236a GeForce 820M 1043 238a GeForce 820M 1043 8595 GeForce GT 720M 1043 85ea GeForce GT 720M 1043 85eb GeForce 820M 1043 85ec GeForce 820M 1043 85ee GeForce GT 720M 1043 85f3 GeForce 820M 1043 860e GeForce 820M 1043 861a GeForce 820M 1043 861b GeForce 820M 1043 8628 GeForce 820M 1043 8643 GeForce 820M 1043 864c GeForce 820M 1043 8652 GeForce 820M 1043 8660 GeForce 820M 1043 8661 GeForce 820M 105b 0dac GeForce GT 720M 105b 0dad GeForce GT 720M 105b 0ef3 GeForce GT 720M 1072 152d GeForce GT 720M 10cf 17f5 GeForce GT 720M 1179 fa01 GeForce 710M 1179 fa02 GeForce 710M 1179 fa03 GeForce 710M 1179 fa05 GeForce 710M 1179 fa11 GeForce 710M 1179 fa13 GeForce 710M 1179 fa18 GeForce 710M 1179 fa19 GeForce 710M 1179 fa21 GeForce 710M 1179 fa23 GeForce 710M 1179 fa2a GeForce 710M 1179 fa32 GeForce 710M 1179 fa33 GeForce 710M 1179 fa36 GeForce 710M 1179 fa38 GeForce 710M 1179 fa42 GeForce 710M 1179 fa43 GeForce 710M 1179 fa45 GeForce 710M 1179 fa47 GeForce 710M 1179 fa49 GeForce 710M 1179 fa58 GeForce 710M 1179 fa59 GeForce 710M 1179 fa88 GeForce 710M 1179 fa89 GeForce 710M 144d b092 GeForce GT 620M 144d c0d5 GeForce GT 630M 144d c0d7 GeForce GT 620M 144d c0e2 NVS 5200M 144d c0e3 NVS 5200M 144d c0e4 NVS 5200M 144d c10d GeForce 820M 144d c652 GeForce GT 620M on NP300E5C series laptop 144d c709 GeForce 710M 144d c711 GeForce 710M 144d c736 GeForce 710M 144d c737 GeForce 710M 144d c745 GeForce 820M 144d c750 GeForce 820M 1462 10b8 GeForce GT 710M 1462 10e9 GeForce GT 720M 1462 1116 GeForce 820M 1462 aa33 GeForce 720M 1462 aaa2 GeForce GT 720M 1462 aaa3 GeForce 820M 1462 acb2 GeForce GT 720M 1462 acc1 GeForce GT 720M 1462 ae61 GeForce 720M 1462 ae65 GeForce GT 720M 1462 ae6a GeForce 820M 1462 ae71 GeForce GT 720M 14c0 0083 GeForce 820M 152d 0926 GeForce 620M 152d 0982 GeForce GT 630M 152d 0983 GeForce GT 630M 152d 1005 GeForce GT 820M 152d 1012 GeForce 710M 152d 1019 GeForce 820M 152d 1030 GeForce GT 630M 152d 1055 GeForce 710M 152d 1067 GeForce GT 720M 152d 1072 GeForce GT 720M 152d 1086 GeForce 820M 152d 1092 GeForce 820M 17aa 2200 NVS 5200M 17aa 2213 GeForce GT 720M 17aa 2220 GeForce GT 720M 17aa 309c GeForce GT 720A 17aa 30b4 GeForce 820A 17aa 30b7 GeForce 720A 17aa 30e4 GeForce 820A 17aa 361b GeForce 820A 17aa 361c GeForce 820A 17aa 361d GeForce 820A 17aa 3656 GeForce GT 620M 17aa 365a GeForce 705M 17aa 365e GeForce 800M 17aa 3661 GeForce 820A 17aa 366c GeForce 800M 17aa 3685 GeForce 800M 17aa 3686 GeForce 800M 17aa 3687 GeForce 705A 17aa 3696 GeForce 820A 17aa 369b GeForce 820A 17aa 369c GeForce 820A 17aa 369d GeForce 820A 17aa 369e GeForce 820A 17aa 36a9 GeForce 820A 17aa 36af GeForce 820A 17aa 36b0 GeForce 820A 17aa 36b6 GeForce 820A 17aa 3800 GeForce GT 720M 17aa 3801 GeForce GT 720M 17aa 3802 GeForce GT 720M 17aa 3803 GeForce GT 720M 17aa 3804 GeForce GT 720M 17aa 3806 GeForce GT 720M 17aa 3808 GeForce GT 720M 17aa 380d GeForce 820M 17aa 380e GeForce 820M 17aa 380f GeForce 820M 17aa 3811 GeForce 820M 17aa 3812 GeForce 820M 17aa 3813 GeForce 820M 17aa 3816 GeForce 820M 17aa 3818 GeForce 820M 17aa 381a GeForce 820M 17aa 381c GeForce 820M 17aa 3901 GeForce 610M / GT 620M 17aa 3902 GeForce 710M 17aa 3903 GeForce 610M/710M 17aa 3904 GeForce GT 620M/625M 17aa 3905 GeForce GT 720M 17aa 3907 GeForce 820M 17aa 3910 GeForce 720M 17aa 3912 GeForce 720M 17aa 3913 GeForce 820M 17aa 3915 GeForce 820M 17aa 3977 GeForce GT 720M 17aa 3983 GeForce 610M 17aa 5001 GeForce 610M 17aa 5003 GeForce GT 720M 17aa 5005 GeForce 705M 17aa 500d GeForce GT 620M 17aa 5014 GeForce 710M 17aa 5017 GeForce 710M 17aa 5019 GeForce 710M 17aa 501a GeForce 710M 17aa 501f GeForce GT 720M 17aa 5025 GeForce 710M 17aa 5027 GeForce 710M 17aa 502a GeForce 710M 17aa 502b GeForce GT 720M 17aa 502d GeForce 710M 17aa 502e GeForce GT 720M 17aa 502f GeForce GT 720M 17aa 5030 GeForce 705M 17aa 5031 GeForce 705M 17aa 5032 GeForce 820M 17aa 5033 GeForce 820M 17aa 503e GeForce 710M 17aa 503f GeForce 820M 17aa 5040 GeForce 820M 1854 0177 GeForce 710M 1854 0180 GeForce 710M 1854 0190 GeForce GT 720M 1854 0192 GeForce GT 720M 1854 0224 GeForce 820M 1b0a 01c0 GeForce 820M 1b0a 20dd GeForce GT 620M 1b0a 20df GeForce GT 620M 1b0a 210e GeForce 820M 1b0a 2202 GeForce GT 720M 1b0a 90d7 GeForce 820M 1b0a 90dd GeForce 820M 1b50 5530 GeForce 820M 1b6c 5531 GeForce GT 720M 1bab 0106 GeForce 820M 1d05 1013 GeForce 810M 1180 GK104 [GeForce GTX 680] 1043 83f1 GTX680-DC2-2GD5 3842 3682 GeForce GTX 680 Mac Edition 1182 GK104 [GeForce GTX 760 Ti] 1183 GK104 [GeForce GTX 660 Ti] 1184 GK104 [GeForce GTX 770] 1185 GK104 [GeForce GTX 660 OEM] 10de 106f GK104 [GeForce GTX 760 OEM] 1186 GK104 [GeForce GTX 660 Ti] 1187 GK104 [GeForce GTX 760] 1188 GK104 [GeForce GTX 690] 1189 GK104 [GeForce GTX 670] 10de 1074 GK104 [GeForce GTX 760 Ti OEM] 118a GK104GL [GRID K520] 118b GK104GL [GRID K2 GeForce USM] 118c GK104 [GRID K2 NVS USM] # GRID K2 USM 118d GK104GL [GRID K200 vGPU] 10de 101d GRID K200 118e GK104 [GeForce GTX 760 OEM] 118f GK104GL [Tesla K10] 1191 GK104 [GeForce GTX 760 Rev. 2] 1193 GK104 [GeForce GTX 760 Ti OEM] 1194 GK104GL [Tesla K8] 1195 GK104 [GeForce GTX 660 Rev. 2] 1198 GK104M [GeForce GTX 880M] 1199 GK104M [GeForce GTX 870M] 119a GK104M [GeForce GTX 860M] 119d GK104M [GeForce GTX 775M Mac Edition] 119e GK104M [GeForce GTX 780M Mac Edition] 119f GK104M [GeForce GTX 780M] 11a0 GK104M [GeForce GTX 680M] 11a1 GK104M [GeForce GTX 670MX] 11a2 GK104M [GeForce GTX 675MX Mac Edition] 11a3 GK104M [GeForce GTX 680MX] 106b 010d iMac 13,2 11a4 GK104 [GK104-ESA] 11a5 GK104 [GK104-ESA] 11a7 GK104M [GeForce GTX 675MX] 11a8 GK104GLM [Quadro K5100M] 11a9 GK104M [GeForce GTX 870M] 11aa GK104 [GK104-INT] 11ac GK104 [GK104-CS] 11af GK104GLM [GRID IceCube] 11b0 GK104GL [GRID K240Q / K260Q vGPU] 10de 101a GRID K240Q 10de 101b GRID K260Q 11b1 GK104GL [GRID K2 Tesla USM] 11b4 GK104GL [Quadro K4200] 11b6 GK104GLM [Quadro K3100M] 11b7 GK104GLM [Quadro K4100M] 11b8 GK104GLM [Quadro K5100M] 11b9 GK104GLM 11ba GK104GL [Quadro K5000] 11bb GK104GL [Quadro 4100] 11bc GK104GLM [Quadro K5000M] 11bd GK104GLM [Quadro K4000M] 11be GK104GLM [Quadro K3000M] 11bf GK104GL [GRID K2] 11c0 GK106 [GeForce GTX 660] 11c1 GK106 [D14P2-30] 11c2 GK106 [GeForce GTX 650 Ti Boost] 1043 845b GeForce GTX 650 Ti Boost DirectCU II OC 1462 2874 GeForce GTX 650 Ti Boost TwinFrozr II OC 1569 11c2 GeForce GTX 650 Ti Boost OC 19da 1281 GeForce GTX 650 Ti Boost OC 3842 3657 GeForce GTX 650 Ti Boost 3842 3658 GeForce GTX 650 Ti Boost Superclocked 11c3 GK106 [GeForce GTX 650 Ti OEM] 10de 1030 GeForce GTX 650 Ti OEM 11c4 GK106 [GeForce GTX 645 OEM] 11c5 GK106 [GeForce GT 740] 11c6 GK106 [GeForce GTX 650 Ti] 11c7 GK106 [GeForce GTX 750 Ti] 11c8 GK106 [GeForce GTX 650 OEM] 11cb GK106 [GeForce GT 740] 11d0 GK106 [GK106-INT353] 11d1 GK106 [GK106-INT343] 11d2 GK106 [GK106-INT232] 11d3 GK106 [GK106-ES] 11e0 GK106M [GeForce GTX 770M] 11e1 GK106M [GeForce GTX 765M] 11e2 GK106M [GeForce GTX 765M] 11e3 GK106M [GeForce GTX 760M] 17aa 3683 GeForce GTX 760A 11e7 GK106M 11fa GK106GL [Quadro K4000] 11fc GK106GLM [Quadro K2100M] 11ff GK106 [NB1Q] 1200 GF114 [GeForce GTX 560 Ti] 1201 GF114 [GeForce GTX 560] 1202 GF114 [GeForce GTX 560 Ti OEM] 1203 GF114 [GeForce GTX 460 SE v2] 1205 GF114 [GeForce GTX 460 v2] 1206 GF114 [GeForce GTX 555] 1207 GF114 [GeForce GT 645 OEM] 1208 GF114 [GeForce GTX 560 SE] 1210 GF114M [GeForce GTX 570M] 1211 GF114M [GeForce GTX 580M] 1212 GF114M [GeForce GTX 675M] 1213 GF114M [GeForce GTX 670M] 1241 GF116 [GeForce GT 545 OEM] 1243 GF116 [GeForce GT 545] 1244 GF116 [GeForce GTX 550 Ti] 1245 GF116 [GeForce GTS 450 Rev. 2] 1246 GF116M [GeForce GT 550M] 1247 GF116M [GeForce GT 555M/635M] 1043 1752 GeForce GT 555M 1043 2050 GeForce GT 555M 1043 2051 GeForce GT 555M 1043 212a GeForce GT 635M 1043 212b GeForce GT 635M 1043 212c GeForce GT 635M 152d 0930 GeForce GT 635M 1248 GF116M [GeForce GT 555M/635M] 152d 0930 GeForce GT 635M 17c0 10e7 GeForce GT 555M 17c0 10e8 GeForce GT 555M 17c0 10ea GeForce GT 555M 1854 0890 GeForce GT 555M 1854 0891 GeForce GT 555M 1854 1795 GeForce GT 555M 1854 1796 GeForce GT 555M 1854 3005 GeForce GT 555M 1249 GF116 [GeForce GTS 450 Rev. 3] 124b GF116 [GeForce GT 640 OEM] 124d GF116M [GeForce GT 555M/635M] 1028 0491 GeForce GT 555M 1028 0570 GeForce GT 555M 1028 0571 GeForce GT 555M 1462 108d GeForce GT 555M 1462 10cc GeForce GT 635M 1251 GF116M [GeForce GT 560M] 1280 GK208 [GeForce GT 635] 1281 GK208 [GeForce GT 710] 1282 GK208 [GeForce GT 640 Rev. 2] 1283 GK208 [D15M2-10] 1284 GK208 [GeForce GT 630 Rev. 2] 1285 GK208 [GK208-100] 1286 GK208 [GeForce GT 720] 1287 GK208B [GeForce GT 730] 1288 GK208B [GeForce GT 720] 1289 GK208 [GeForce GT 710] 128a GK208B 128b GK208B [GeForce GT 710] 1043 85f7 GT710-SL-1GD5 1043 8770 GT710-4H-SL-2GD5 128c GK208B 1290 GK208M [GeForce GT 730M] 103c 2afa GeForce GT 730A 103c 2b04 GeForce GT 730A 1043 13ad GeForce GT 730M 1043 13cd GeForce GT 730M 1291 GK208M [GeForce GT 735M] 1292 GK208M [GeForce GT 740M] 17aa 3675 GeForce GT 740A 17aa 367c GeForce GT 740A 17aa 3684 GeForce GT 740A 1293 GK208M [GeForce GT 730M] 1294 GK208M [GeForce GT 740M] 1295 GK208M [GeForce 710M] 103c 2b0d GeForce 710A 103c 2b0f GeForce 710A 103c 2b11 GeForce 710A 103c 2b20 GeForce 810A 103c 2b21 GeForce 810A 103c 2b22 GeForce 810A 17aa 367a GeForce 805A 17aa 367c GeForce 710A 1296 GK208M [GeForce 825M] 1298 GK208M [GeForce GT 720M] 1299 GK208BM [GeForce 920M] 17aa 30bb GeForce 920A 17aa 30df GeForce 920A 17aa 36a7 GeForce 920A 17aa 36af GeForce 920M 129a GK208BM [GeForce 910M] 12a0 GK208 12ad GK208 [GK208-ES] 12ae GK208 [GK208-CS1-C] 12af GK208 [GK208-INT] 12b0 GK208 [GK208-CS-Q] 12b1 GK208 [GK208 INT] 12b9 GK208GLM [Quadro K610M] 12ba GK208GLM [Quadro K510M] 130b GK110 [Q12U-1] 1340 GM108M [GeForce 830M] 103c 2b2b GeForce 830A 1341 GM108M [GeForce 840M] 17aa 3697 GeForce 840A 17aa 3699 GeForce 840A 17aa 369c GeForce 840A 1344 GM108M [GeForce 845M] 1346 GM108M [GeForce 930M] 1347 GM108M [GeForce 940M] 1348 GM108M [GeForce 945M / 945A] 1349 GM108M [GeForce 930M] 134b GM108M [GeForce 940MX] 134d GM108M [GeForce 940MX] 17aa 2248 ThinkPad T570 134e GM108M [GeForce 930MX] 134f GM108M [GeForce 920MX] 137a GM108GLM [Quadro K620M / Quadro M500M] 17aa 505a Quadro M500M 137b GM108GLM [Quadro M520 Mobile] 137d GM108M [GeForce 940A] 1380 GM107 [GeForce GTX 750 Ti] 1381 GM107 [GeForce GTX 750] 1382 GM107 [GeForce GTX 745] 1389 GM107GL [GRID M30] 1390 GM107M [GeForce 845M] 1391 GM107M [GeForce GTX 850M] 17aa 3697 GeForce GTX 850A 17aa a125 GeForce GTX 850A 1392 GM107M [GeForce GTX 860M] 1393 GM107M [GeForce 840M] 1398 GM107M [GeForce 845M] 1399 GM107M [GeForce 945M] 139a GM107M [GeForce GTX 950M] 17aa 362c GeForce GTX 950A 17aa 362f GeForce GTX 950A 17aa 363f GeForce GTX 950A 17aa 3640 GeForce GTX 950A 17aa 3647 GeForce GTX 950A 17aa 36b9 GeForce GTX 950A 139b GM107M [GeForce GTX 960M] 1028 06e4 XPS 15 9550 103c 2b4c GeForce GTX 960A 139c GM107M [GeForce 940M] 139d GM107M [GeForce GTX 750 Ti] 13ad GM204 [GM107 INT52] 13ae GM204 [GM107 CS1] 13b0 GM107GLM [Quadro M2000M] 13b1 GM107GLM [Quadro M1000M] 13b2 GM107GLM [Quadro M600M] 13b3 GM107GLM [Quadro K2200M] 13b4 GM107GLM [Quadro M620 Mobile] 13b6 GM107GLM [Quadro M1200 Mobile] 13b9 GM107GL [NVS 810] 13ba GM107GL [Quadro K2200] 13bb GM107GL [Quadro K620] 13bc GM107GL [Quadro K1200] 13bd GM107GL [Tesla M10] 10de 110a GRID M40 10de 1160 Tesla M10 10de 11d2 GRID M10-8Q 13be GM204 [GM107 CS1] 13bf GM204 [GM107 INT52] 13c0 GM204 [GeForce GTX 980] 1043 8504 GTX980-4GD5 13c1 GM204 13c2 GM204 [GeForce GTX 970] 13c3 GM204 13c4 GM204 [D17U-20] 13d7 GM204M [GeForce GTX 980M] 13d8 GM204M [GeForce GTX 960 OEM / 970M] 13d9 GM204M [GeForce GTX 965M] 13da GM204M [GeForce GTX 980 Mobile] 13e4 GM204 [Graphics Device ES-A] 13e7 GM204GL [GeForce GTX 980 Engineering Sample] 13f0 GM204GL [Quadro M5000] 13f1 GM204GL [Quadro M4000] 13f2 GM204GL [Tesla M60] 10de 114d GRID M60-1Q 10de 114e GRID M60-2Q 10de 1150 GRID M60-8Q 10de 11b0 GRID M60-4A 13f3 GM204GL [Tesla M6] 10de 1184 GRID M6-8Q 13f8 GM204GLM [Quadro M5000M / M5000 SE] 13f9 GM204GLM [Quadro M4000M] 13fa GM204GLM [Quadro M3000M] 10de 11c9 Quadro M3000 SE 13fb GM204GLM [Quadro M5500] 1401 GM206 [GeForce GTX 960] 1402 GM206 [GeForce GTX 950] 1404 GM206 [GeForce GTX 960 FAKE] 1406 GM206 [GeForce GTX 960 OEM] 1407 GM206 [GeForce GTX 750 v2] 1427 GM206M [GeForce GTX 965M] 103c 825b OMEN-17-w001nv 1430 GM206GL [Quadro M2000] 1431 GM206GL [Tesla M4] 1436 GM206GLM [Quadro M2200 Mobile] 15c2 GP100 [CMP 100-100] 15f0 GP100GL [Quadro GP100] 15f1 GP100GL 15f7 GP100GL [Tesla P100 PCIe 12GB] 15f8 GP100GL [Tesla P100 PCIe 16GB] 15f9 GP100GL [Tesla P100 SXM2 16GB] 15fa GP100GL [DGX Station / PH402 SKU 200] 15fb GP100GL [GP100 SKU 200] 15fc GP100GL [Tesla P100-DGXS-16GB] 15ff GP100GL [GP100 SKU 15ff] 1617 GM204M [GeForce GTX 980M] 1618 GM204M [GeForce GTX 970M] 1619 GM204M [GeForce GTX 965M] 161a GM204M [GeForce GTX 980 Mobile] 1667 GM204M [GeForce GTX 965M] 1725 GP100 172e GP100 172f GP100 174d GM108M [GeForce MX130] 174e GM108M [GeForce MX110] 1789 GM107GL [GRID M3-3020] 179c GM107 [GeForce 940MX] 1025 1094 Acer Aspire E5-575G 17c2 GM200 [GeForce GTX TITAN X] 17c8 GM200 [GeForce GTX 980 Ti] 17f0 GM200GL [Quadro M6000] 10de 1141 VCA 6000 17f1 GM200GL [Quadro M6000 24GB] 17fd GM200GL [Tesla M40] 1ad0 Tegra PCIe x8 Endpoint 1ad1 Tegra PCIe x4/x8 Endpoint/Root Complex 1ad2 Tegra PCIe x1 Root Complex 1ad3 Xavier SATA Controller 1ad6 TU102 USB 3.1 Host Controller 1ad7 TU102 USB Type-C UCSI Controller 1ad8 TU104 USB 3.1 Host Controller 1ad9 TU104 USB Type-C UCSI Controller 1ada TU106 USB 3.1 Host Controller 1043 8673 TURBO-RTX2070-8G 1adb TU106 USB Type-C UCSI Controller 1043 8673 TURBO-RTX2070-8G 1aeb TU116 High Definition Audio Controller 1aec TU116 USB 3.1 Host Controller 1aed TU116 USB Type-C UCSI Controller 1aef GA102 High Definition Audio Controller 1af1 GA100 [A100 NVSwitch] 1b00 GP102 [TITAN X] 1b01 GP102 [GeForce GTX 1080 Ti 10GB] 1b02 GP102 [TITAN Xp] 1b04 GP102 1b06 GP102 [GeForce GTX 1080 Ti] 1b07 GP102 [P102-100] 1b30 GP102GL [Quadro P6000] 1b38 GP102GL [Tesla P40] 1b39 GP102GL [Tesla P10] 1b70 GP102GL 1b78 GP102GL 1b80 GP104 [GeForce GTX 1080] 1b81 GP104 [GeForce GTX 1070] 1b82 GP104 [GeForce GTX 1070 Ti] 1b83 GP104 [GeForce GTX 1060 6GB] 1b84 GP104 [GeForce GTX 1060 3GB] 1b87 GP104 [P104-100] 1ba0 GP104M [GeForce GTX 1080 Mobile] 1ba1 GP104M [GeForce GTX 1070 Mobile] 1458 1651 GeForce GTX 1070 Max-Q 1462 11e8 GeForce GTX 1070 Max-Q 1462 11e9 GeForce GTX 1070 Max-Q 1558 9501 GeForce GTX 1070 Max-Q 1ba2 GP104M [GeForce GTX 1070 Mobile] 1ba9 GP104M 1baa GP104M 1bad GP104 [GeForce GTX 1070 Engineering Sample] 1bb0 GP104GL [Quadro P5000] 1bb1 GP104GL [Quadro P4000] 1bb3 GP104GL [Tesla P4] 1bb4 GP104GL [Tesla P6] 1bb5 GP104GLM [Quadro P5200 Mobile] 103c 842f P5200 [Zbook 17 G5 mobile workstation] 1bb6 GP104GLM [Quadro P5000 Mobile] 1bb7 GP104GLM [Quadro P4000 Mobile] 1462 11e9 Quadro P4000 Max-Q 1bb8 GP104GLM [Quadro P3000 Mobile] 1bb9 GP104GLM [Quadro P4200 Mobile] 103c 842f P4200 [Zbook 17 G5 mobile workstation] 1bbb GP104GLM [Quadro P3200 Mobile] 103c 842f P3200 [Zbook 17 G5 moble workstation] 1bc7 GP104 [P104-101] 1be0 GP104BM [GeForce GTX 1080 Mobile] 1028 07c0 GeForce GTX 1080 Max-Q 1458 355b GeForce GTX 1080 Max-Q 1be1 GP104BM [GeForce GTX 1070 Mobile] 1c00 GP106 1c01 GP106 1c02 GP106 [GeForce GTX 1060 3GB] 1c03 GP106 [GeForce GTX 1060 6GB] 1043 85b6 DUAL-GTX1060-O6G [GeForce GTX 1060 6GB Dual] 1c04 GP106 [GeForce GTX 1060 5GB] 1c06 GP106 [GeForce GTX 1060 6GB Rev. 2] 1c07 GP106 [P106-100] 1c09 GP106 [P106-090] 1c20 GP106M [GeForce GTX 1060 Mobile] 17aa 39b9 GeForce GTX 1060 Max-Q 3GB 1c21 GP106M [GeForce GTX 1050 Ti Mobile] 1c22 GP106M [GeForce GTX 1050 Mobile] 1c23 GP106M [GeForce GTX 1060 Mobile Rev. 2] 1414 0020 GTX 1060 Mobile 1c2d GP106M 1c30 GP106GL [Quadro P2000] 1c31 GP106GL [Quadro P2200] 1c35 GP106M [Quadro P2000 Mobile / DRIVE PX 2 AutoChauffeur] 1c36 GP106 [P106M] 1c60 GP106BM [GeForce GTX 1060 Mobile 6GB] 103c 8390 GeForce GTX 1060 Max-Q 6GB 1c61 GP106BM [GeForce GTX 1050 Ti Mobile] 1c62 GP106BM [GeForce GTX 1050 Mobile] 1c70 GP106GL 1c81 GP107 [GeForce GTX 1050] 1c82 GP107 [GeForce GTX 1050 Ti] 1043 8613 PH-GTX1050TI-4G 1458 3763 GV-N105TOC-4GD 1c83 GP107 [GeForce GTX 1050 3GB] 1c8c GP107M [GeForce GTX 1050 Ti Mobile] 1c8d GP107M [GeForce GTX 1050 Mobile] 1c8e GP107M 1c8f GP107M [GeForce GTX 1050 Ti Max-Q] 1c90 GP107M [GeForce MX150] 1c91 GP107M [GeForce GTX 1050 3 GB Max-Q] 1c92 GP107M [GeForce GTX 1050 Mobile] 1c94 GP107M [GeForce MX350] 1c96 GP107M [GeForce MX350] 1ca7 GP107GL 1ca8 GP107GL 1caa GP107GL 1cb1 GP107GL [Quadro P1000] 1cb2 GP107GL [Quadro P600] 1cb3 GP107GL [Quadro P400] 1cb6 GP107GL [Quadro P620] 1cba GP107GLM [Quadro P2000 Mobile] 103c 842c P2000 [Zbook 15 G5 mobile workstation] 103c 842f P2000 [Zbook 17 G5 mobile workstation] 1cbb GP107GLM [Quadro P1000 Mobile] 103c 8429 P1000 [Zbook Studio G5 mobile workstation] 103c 842c P1000 [Zbook 15 G5 mobile workstation] 103c 842f P1000 [Zbook 17 G5 mobile workstation] 103c 8451 P1000 [Zbook Studio x360 G5 mobile workstation] 1cbc GP107GLM [Quadro P600 Mobile] 1cbd GP107GLM [Quadro P620] 1ccc GP107BM [GeForce GTX 1050 Ti Mobile] 1ccd GP107BM [GeForce GTX 1050 Mobile] 1cfa GP107GL [Quadro P2000] 1cfb GP107GL [Quadro P1000] 1d01 GP108 [GeForce GT 1030] 1d02 GP108 [GeForce GT 1010] 1d10 GP108M [GeForce MX150] 17aa 225e ThinkPad T480 1d11 GP108M [GeForce MX230] 1d12 GP108M [GeForce MX150] 1d72 1701 Mi Notebook Pro [GeForce MX150] 1d13 GP108M [GeForce MX250] 1d16 GP108M [GeForce MX330] 1d33 GP108GLM [Quadro P500 Mobile] 1d34 GP108GLM [Quadro P520] 1d52 GP108BM [GeForce MX250] 1d56 GP108BM [GeForce MX330] 1d81 GV100 [TITAN V] 1d83 GV100 [CMP 100-200] 1d84 GV100 [CMP 100-210] 1db0 GV100GL [Tesla GV100 SXM2-16GB SKU 890] 1db1 GV100GL [Tesla V100 SXM2 16GB] 1db2 GV100GL [Tesla V100 DGXS 16GB] 1db3 GV100GL [Tesla V100 FHHL 16GB] 1db4 GV100GL [Tesla V100 PCIe 16GB] 1db5 GV100GL [Tesla V100 SXM2 32GB] 1db6 GV100GL [Tesla V100 PCIe 32GB] 1db7 GV100GL [Tesla V100 DGXS 32GB] 1db8 GV100GL [Tesla V100 SXM3 32GB] 10de 131d Tesla V100-SXM3-32GB-H 1dba GV100GL [Quadro GV100] 10de 12eb TITAN V CEO Edition 1dbd GV100GL [Tesla GV100 DGX1-V] 1dbe GV100 Engineering Sample 1dc1 GV100 [CMP 100-200] 1df0 GV100GL [Tesla PG500-216] 1df2 GV100GL [Tesla PG503-216] 1df4 GV100 [CMP 100-210] 1df5 GV100GL [Tesla V100 SXM2 16GB] 1df6 GV100GL [Tesla V100S PCIe 32GB] 1e02 TU102 [TITAN RTX] 1e03 TU102 [GeForce RTX 2080 Ti 12GB] 1e04 TU102 [GeForce RTX 2080 Ti] 1e07 TU102 [GeForce RTX 2080 Ti Rev. A] 1462 3715 RTX 2080 Ti GAMING X TRIO 1e09 TU102 [CMP 50HX] 1e2d TU102 [GeForce RTX 2080 Ti Engineering Sample] 1e2e TU102 [GeForce RTX 2080 Ti 12GB Engineering Sample] 1e30 TU102GL [Quadro RTX 6000/8000] 10de 129e Quadro RTX 8000 10de 12ba Quadro RTX 6000 1e35 TU102GL [Tesla T10] 1e36 TU102GL [Quadro RTX 6000] 1e37 TU102GL [Tesla T10 16GB / GRID RTX T10-2/T10-4/T10-8] 10de 1304 Tesla T10 16GB 10de 1347 GRID RTX T10-8 10de 1348 GRID RTX T10-4 10de 1349 GRID RTX T10-2 10de 1370 Tesla T10 16GB 10de 13a5 GRID RTX T10-8 1e38 TU102GL [Tesla T40 24GB] 1e3c TU102GL 1e3d TU102GL 1e3e TU102GL 1e78 TU102GL [Quadro RTX 6000/8000] 10de 13d8 Quadro RTX 8000 10de 13d9 Quadro RTX 6000 1e81 TU104 [GeForce RTX 2080 SUPER] 1e82 TU104 [GeForce RTX 2080] 1e84 TU104 [GeForce RTX 2070 SUPER] 1e87 TU104 [GeForce RTX 2080 Rev. A] 1e89 TU104 [GeForce RTX 2060] 1e90 TU104M [GeForce RTX 2080 Mobile] 1e91 TU104M [GeForce RTX 2070 SUPER Mobile / Max-Q] 1e93 TU104M [GeForce RTX 2080 SUPER Mobile / Max-Q] 1eab TU104M 1eae TU104M [GeForce GTX 2080 Engineering Sample] 1eb0 TU104GL [Quadro RTX 5000] 1eb1 TU104GL [Quadro RTX 4000] 1eb4 TU104GL [T4G] 1eb5 TU104GLM [Quadro RTX 5000 Mobile / Max-Q] 1eb6 TU104GLM [Quadro RTX 4000 Mobile / Max-Q] 1eb8 TU104GL [Tesla T4] 1eb9 TU104GL 1eba TU104GL [PG189 SKU600] 1ebe TU104GL 1ec2 TU104 [GeForce RTX 2070 SUPER] 1ec7 TU104 [GeForce RTX 2070 SUPER] 1ed0 TU104BM [GeForce RTX 2080 Mobile] 1ed1 TU104BM [GeForce RTX 2070 SUPER Mobile / Max-Q] 1ed3 TU104BM [GeForce RTX 2080 SUPER Mobile / Max-Q] 1ef5 TU104GLM [Quadro RTX 5000 Mobile Refresh] 1f02 TU106 [GeForce RTX 2070] 1043 8673 TURBO RTX 2070 1f03 TU106 [GeForce RTX 2060 12GB] 1f04 TU106 1f06 TU106 [GeForce RTX 2060 SUPER] 1f07 TU106 [GeForce RTX 2070 Rev. A] 1f08 TU106 [GeForce RTX 2060 Rev. A] 1f09 TU106 [GeForce GTX 1660 SUPER] 1f0a TU106 [GeForce GTX 1650] 1f0b TU106 [CMP 40HX] 1f10 TU106M [GeForce RTX 2070 Mobile] 1f11 TU106M [GeForce RTX 2060 Mobile] 1f12 TU106M [GeForce RTX 2060 Max-Q] 1f14 TU106M [GeForce RTX 2070 Mobile / Max-Q Refresh] 1f15 TU106M [GeForce RTX 2060 Mobile] 1f2e TU106M 1f36 TU106GLM [Quadro RTX 3000 Mobile / Max-Q] 1f42 TU106 [GeForce RTX 2060 SUPER] 1f47 TU106 [GeForce RTX 2060 SUPER] 1f50 TU106BM [GeForce RTX 2070 Mobile / Max-Q] 1f51 TU106BM [GeForce RTX 2060 Mobile] 1f54 TU106BM [GeForce RTX 2070 Mobile] 1f55 TU106BM [GeForce RTX 2060 Mobile] 1f76 TU106GLM [Quadro RTX 3000 Mobile Refresh] 1f81 TU117 1f82 TU117 [GeForce GTX 1650] 1f83 TU117 [GeForce GTX 1630] 1f91 TU117M [GeForce GTX 1650 Mobile / Max-Q] 1f92 TU117M [GeForce GTX 1650 Mobile] 1f94 TU117M [GeForce GTX 1650 Mobile] 1f95 TU117M [GeForce GTX 1650 Ti Mobile] 1f96 TU117M [GeForce GTX 1650 Mobile / Max-Q] 1f97 TU117M [GeForce MX450] 1f98 TU117M [GeForce MX450] 1f99 TU117M [GeForce GTX 1650 Mobile / Max-Q] 1f9c TU117M [GeForce MX450] 1f9d TU117M [GeForce GTX 1650 Mobile / Max-Q] # via Lenovo 496.90 1f9f TU117M [GeForce MX550] 1fa0 TU117M [GeForce MX550] 1fa1 TU117M 1fae TU117GL 1fb0 TU117GLM [Quadro T1000 Mobile] 1fb1 TU117GL [T600] 1fb2 TU117GLM [Quadro T400 Mobile] 1fb6 TU117GLM [T600 Laptop GPU] 1028 0b10 Precision 3571 1fb7 TU117GLM [T550 Laptop GPU] 1fb8 TU117GLM [Quadro T2000 Mobile / Max-Q] 1fb9 TU117GLM [Quadro T1000 Mobile] 1fba TU117GLM [T600 Mobile] 1fbb TU117GLM [Quadro T500 Mobile] 1fbc TU117GLM [T1200 Laptop GPU] 1fbf TU117GL 1fd9 TU117BM [GeForce GTX 1650 Mobile Refresh] 1fdd TU117BM [GeForce GTX 1650 Mobile Refresh] 1ff0 TU117GL [T1000 8GB] 1ff2 TU117GL [T400 4GB / T400E] 1ff9 TU117GLM [Quadro T1000 Mobile] 2080 GA100 2081 GA100 2082 GA100 [CMP 170HX] 20b0 GA100 [A100 SXM4 40GB] 20b1 GA100 [A100 PCIe 40GB] 20b2 GA100 [A100 SXM4 80GB] 20b3 GA100 [A100-SXM-64GB] 20b4 GA100 20b5 GA100 [A100 PCIe 80GB] 20b6 GA100GL [PG506-232] 20b7 GA100GL [A30 PCIe] 20b8 GA100 [A100X] 20b9 GA100 [A30X] 20bb GA100 [DRIVE A100 PROD] 20bd GA100 [A800 SXM4 40GB] 20be GA100 [GRID A100A] 20bf GA100 [GRID A100B] 20c0 GA100 [Initial DevID] 20c2 GA100 [CMP 170HX] 20f0 GA100 [A100-PG506-207] 20f1 GA100 [A100 PCIe 40GB] 20f2 GA100 [A100-PG506-217] 20f3 GA100 [A800-SXM4-80GB] 20f5 GA100 [A800 80GB PCIe] 20f6 GA100 [A800 40GB PCIe] 20fd GA100 [AX800 Converged Accelerator] 20fe GA100 [INT SKU] 20ff GA100 2182 TU116 [GeForce GTX 1660 Ti] 2183 TU116 2184 TU116 [GeForce GTX 1660] 2187 TU116 [GeForce GTX 1660 SUPER] 2188 TU116 [GeForce GTX 1650] 2189 TU116 [CMP 30HX] 2191 TU116M [GeForce GTX 1660 Ti Mobile] 2192 TU116M [GeForce GTX 1650 Ti Mobile] 21ae TU116GL 21bf TU116GL 21c2 TU116 21c3 TU116 21c4 TU116 [GeForce GTX 1660 SUPER] 21d1 TU116BM [GeForce GTX 1660 Ti Mobile] 2200 GA102 2203 GA102 [GeForce RTX 3090 Ti] 2204 GA102 [GeForce RTX 3090] 147d 10de NVIDIA Geforce RTX 3090 Founders Edition 2205 GA102 [GeForce RTX 3080 Ti 20GB] 2206 GA102 [GeForce RTX 3080] 10de 1467 GA102 [GeForce RTX 3080] 10de 146d GA102 [GeForce RTX 3080 20GB] 1462 3892 RTX 3080 10GB GAMING X TRIO 2207 GA102 [GeForce RTX 3070 Ti] 2208 GA102 [GeForce RTX 3080 Ti] 220a GA102 [GeForce RTX 3080 12GB] 220d GA102 [CMP 90HX] 2216 GA102 [GeForce RTX 3080 Lite Hash Rate] 222b GA102 [GeForce RTX 3090 Engineering Sample] 222f GA102 [GeForce RTX 3080 11GB / 12GB Engineering Sample] 2230 GA102GL [RTX A6000] 2231 GA102GL [RTX A5000] 2232 GA102GL [RTX A4500] 2233 GA102GL [RTX A5500] 2235 GA102GL [A40] 2236 GA102GL [A10] 2237 GA102GL [A10G] 2238 GA102GL [A10M] 223f GA102GL 228b GA104 High Definition Audio Controller 228e GA106 High Definition Audio Controller 2296 Tegra PCIe Endpoint Virtual Network 22a3 GH100 [H100 NVSwitch] 22ba AD102 High Definition Audio Controller 22bc AD104 High Definition Audio Controller 22bd AD106M High Definition Audio Controller 22be AD107 High Definition Audio Controller 2302 GH100 2313 GH100 [H100 CNX] 2321 GH100 [H100L 94GB] 2322 GH100 [H800 PCIe] 2324 GH100 [H800] 2329 GH100 [H20] 2330 GH100 [H100 SXM5 80GB] 2331 GH100 [H100 PCIe] 2335 GH100 [H200 SXM 141GB] 2336 GH100 [H100] 2337 GH100 [H100 SXM5 64GB] 2338 GH100 [H100 SXM5 96GB] 2339 GH100 [H100 SXM5 94GB] 233a GH100 [H800L 94GB] 233b GH100 [H200 NVL] 233d GH100 [H100 96GB] 2342 GH100 [GH200 120GB / 480GB] 2343 GH100 2345 GH100 [GH100-88K-A1] 237f GH100 [Skinny Joe] 23b0 GH100 23f0 GH100 2414 GA103 [GeForce RTX 3060 Ti] 2420 GA103M [GeForce RTX 3080 Ti Mobile] 2438 GA103GLM [RTX A5500 Laptop GPU] 2460 GA103M [GeForce RTX 3080 Ti Laptop GPU] 2480 GA104 [Reserved Dev ID A] 2482 GA104 [GeForce RTX 3070 Ti] 2483 GA104 2484 GA104 [GeForce RTX 3070] 10de 146b GA104 [GeForce RTX 3070] 10de 14ae GA104 [GeForce RTX 3070 16GB] 2486 GA104 [GeForce RTX 3060 Ti] 19da 6630 ZT-A30610H-10M [RTX 3060 Ti Twin Edge OC] 2487 GA104 [GeForce RTX 3060] 2488 GA104 [GeForce RTX 3070 Lite Hash Rate] 2489 GA104 [GeForce RTX 3060 Ti Lite Hash Rate] 248a GA104 [CMP 70HX] 248c GA104 [GeForce RTX 3070 Ti] 248d GA104 [GeForce RTX 3070] 248e GA104 [GeForce RTX 3060 Ti] 249c GA104M [GeForce RTX 3080 Mobile / Max-Q 8GB/16GB] 249d GA104M [GeForce RTX 3070 Mobile / Max-Q] 249f GA104M 24a0 GA104 [Geforce RTX 3070 Ti Laptop GPU] 24a4 GA104M 24ac GA104 [GeForce RTX 30x0 Engineering Sample] 24ad GA104 [GeForce RTX 3060 Engineering Sample] 24af GA104 [GeForce RTX 3070 Engineering Sample] 24b0 GA104GL [RTX A4000] 24b1 GA104GL [RTX A4000H] 24b6 GA104GLM [RTX A5000 Mobile] 24b7 GA104GLM [RTX A4000 Mobile] 24b8 GA104GLM [RTX A3000 Mobile] 24b9 GA104GLM [RTX A3000 12GB Laptop GPU] 24ba GA104GLM [RTX A4500 Laptop GPU] 24bb GA104GLM [RTX A3000 Laptop GPU] 24bf GA104 [GeForce RTX 3070 Engineering Sample] 24c0 GA104 [Initial Dev ID B] 24c7 GA104 [GeForce RTX 3060 8GB] 24c8 GA104 [GeForce RTX 3070 GDDR6X] 24c9 GA104 [GeForce RTX 3060 Ti GDDR6X] 24dc GA104M [GeForce RTX 3080 Mobile / Max-Q 8GB/16GB] 24dd GA104M [GeForce RTX 3070 Mobile / Max-Q] 24df GA104M 24e0 GA104M [Geforce RTX 3070 Ti Laptop GPU] 24fa GA104 [RTX A4500 Embedded GPU ] 2501 GA106 [GeForce RTX 3060] 2503 GA106 [GeForce RTX 3060] 2504 GA106 [GeForce RTX 3060 Lite Hash Rate] 2505 GA106 2507 GA106 [Geforce RTX 3050] 2508 GA106 [GeForce RTX 3050 OEM] 2509 GA106 [GeForce RTX 3060 12GB Rev. 2] 2520 GA106M [GeForce RTX 3060 Mobile / Max-Q] 2521 GA106M [GeForce RTX 3060 Laptop GPU] 2523 GA106M [GeForce RTX 3050 Ti Mobile / Max-Q] 252f GA106 [GeForce RTX 3060 Engineering Sample] 2531 GA106 [RTX A2000] 2544 GA106 [GeForce RTX 3060] 2560 GA106M [GeForce RTX 3060 Mobile / Max-Q] 2561 GA106M [GeForce RTX 3060 Laptop GPU] 2563 GA106M [GeForce RTX 3050 Ti Mobile / Max-Q] 2571 GA106 [RTX A2000 12GB] 2582 GA107 [GeForce RTX 3050 8GB] 2583 GA107 [GeForce RTX 3050 4GB] 2584 GA107 [GeForce RTX 3050 6GB] 25a0 GA107M [GeForce RTX 3050 Ti Mobile] 25a2 GA107M [GeForce RTX 3050 Mobile] 25a3 GA107 25a4 GA107 25a5 GA107M [GeForce RTX 3050 Mobile] 25a6 GA107M [GeForce MX570] 25a7 GA107M [GeForce MX570] 25a9 GA107M [GeForce RTX 2050] 25aa GA107M [GeForce MX570 A] 25ab GA107M [GeForce RTX 3050 4GB Laptop GPU] 25ac GN20-P0-R-K2 [GeForce RTX 3050 6GB Laptop GPU] 25ad GA107 [GeForce RTX 2050] 25af GA107 [GeForce RTX 3050 Engineering Sample] 25b0 GA107GL [RTX A1000] 25b2 GA107GL [RTX A400] 25b5 GA107GLM [RTX A4 Mobile] # A16 - 25B6 10DE 14A9 / A2 - 25B6 10DE 157E 25b6 GA107GL [A2 / A16] 25b8 GA107GLM [RTX A2000 Mobile] 25b9 GA107GLM [RTX A1000 Laptop GPU] 25ba GA107GLM [RTX A2000 8GB Laptop GPU] 25bb GA107GLM [RTX A500 Laptop GPU] 25bc GA107GLM [RTX A1000 6GB Laptop GPU] 25bd GA107GLM [RTX A500 Laptop GPU] 25e0 GA107BM [GeForce RTX 3050 Ti Mobile] 25e2 GA107BM [GeForce RTX 3050 Mobile] 25e5 GA107BM [GeForce RTX 3050 Mobile] 25ec GN20-P0-R-K2 [GeForce RTX 3050 6GB Laptop GPU] 25ed GA107 [GeForce RTX 2050] 25f9 GA107 [RTX A1000 Embedded GPU ] 25fa GA107 [RTX A2000 Embedded GPU] 25fb GA107 [RTX A500 Embedded GPU] 2681 AD102 [RTX TITAN Ada] 2684 AD102 [GeForce RTX 4090] 2685 AD102 [GeForce RTX 4090 D] 2689 AD102 [GeForce RTX 4070 Ti SUPER] 26b1 AD102GL [RTX 6000 Ada Generation] 26b2 AD102GL [RTX 5000 Ada Generation] 26b3 AD102GL [RTX 5880 Ada Generation] 26b5 AD102GL [L40] 26b7 AD102GL [L20] 26b8 AD102GL [L40G] 26b9 AD102GL [L40S] 26ba AD102GL [L20] 26f5 AD102GL [L40 CNX] 2702 AD103 [GeForce RTX 4080 SUPER] 2703 AD103 [GeForce RTX 4080 SUPER] 2704 AD103 [GeForce RTX 4080] 2705 AD103 [GeForce RTX 4070 Ti SUPER] 2709 AD103 [GeForce RTX 4070] 2717 GN21-X11 [GeForce RTX 4090 Laptop GPU] 2730 AD103GLM [RTX 5000 Ada Generation Laptop GPU] 2757 GN21-X11 [GeForce RTX 4090 Laptop GPU] 2770 AD103GLM [RTX 5000 Ada Generation Embedded GPU] 2782 AD104 [GeForce RTX 4070 Ti] 2783 AD104 [GeForce RTX 4070 SUPER] 2785 AD104 [AC AD104 20GB] 2786 AD104 [GeForce RTX 4070] 2788 AD104 [GeForce RTX 4060 Ti] 27a0 AD104M [GeForce RTX 4080 Max-Q / Mobile] 27b0 AD104GL [RTX 4000 SFF Ada Generation] 27b1 AD104GL [RTX 4500 Ada Generation] 27b2 AD104GL [RTX 4000 Ada Generation] 27b6 AD104GL [L2] 27b7 AD104GL [L16] 27b8 AD104GL [L4] 27ba AD104GLM [RTX 4000 Ada Generation Laptop GPU] 27bb AD104GLM [RTX 3500 Ada Generation Laptop GPU] 27e0 AD104M [GeForce RTX 4080 Max-Q / Mobile] 27fa AD104GLM [RTX 4000 Ada Generation Embedded GPU] 27fb AD104GLM [RTX 3500 Ada Generation Embedded GPU] 2803 AD106 [GeForce RTX 4060 Ti] 2805 AD106 [GeForce RTX 4060 Ti 16GB] 2808 AD106 [GeForce RTX 4060] 2820 AD106M [GeForce RTX 4070 Max-Q / Mobile] 2822 AD106M [GeForce RTX 3050 A Laptop GPU] 2838 AD106GLM [RTX 3000 Ada Generation Laptop GPU] 2860 AD106M [GeForce RTX 4070 Max-Q / Mobile] 2878 AD106GLM [RTX 3000 Ada Generation Embedded GPU] 2882 AD107 [GeForce RTX 4060] 28a0 AD107M [GeForce RTX 4060 Max-Q / Mobile] 28a1 AD107M [GeForce RTX 4050 Max-Q / Mobile] 28b0 AD107GL [RTX 2000 / 2000E Ada Generation] 28b8 AD107GLM [RTX 2000 Ada Generation Laptop GPU] 28b9 AD107GLM [RTX 1000 Ada Generation Laptop GPU] 28ba AD107GLM [RTX 500 Ada Generation Laptop GPU] 28bb AD107GLM [RTX 500 Ada Generation Laptop GPU] 28e0 AD107M [GeForce RTX 4060 Max-Q / Mobile] 28e1 AD107M [GeForce RTX 4050 Max-Q / Mobile] 28f8 AD107GLM [RTX 2000 Ada Generation Embedded GPU] 2900 GB100 2940 GB100 10df Emulex Corporation 0720 OneConnect NIC (Skyhawk) 103c 1934 FlexFabric 20Gb 2-port 650M Adapter 103c 1935 FlexFabric 20Gb 2-port 650FLB Adapter 103c 21d4 StoreFabric CN1200E 10Gb Converged Network Adapter 103c 220a FlexFabric 10Gb 2-port 556FLR-SFP+ Adapter 103c 803f Ethernet 10Gb 2-port 557SFP+ Adapter 103c 8144 FlexFabric 10GB 2-port 556FLR-T Adapter 17aa 1056 ThinkServer OCm14102-UX-L AnyFabric 17aa 1057 ThinkServer OCm14104-UX-L AnyFabric 17aa 1059 ThinkServer OCm14104-UT-L AnyFabric 17aa 4014 ThinkServer OCm14102-NX-L AnyFabric 0722 OneConnect iSCSI Initiator (Skyhawk) 0723 OneConnect iSCSI Initiator + Target (Skyhawk) 0724 OneConnect FCoE Initiator (Skyhawk) 0728 OneConnect NIC (Skyhawk-VF) 072a OneConnect iSCSI Initiator (Skyhawk-VF) 072b OneConnect iSCSI Initiator + Target (Skyhawk-VF) 072c OneConnect FCoE Initiator (Skyhawk-VF) 1ae5 LP6000 Fibre Channel Host Adapter e100 Proteus-X: LightPulse IOV Fibre Channel Host Adapter e131 LightPulse 8Gb/s PCIe Shared I/O Fibre Channel Adapter e180 Proteus-X: LightPulse IOV Fibre Channel Host Adapter e200 LPe15000/LPe16000 Series 8Gb/16Gb Fibre Channel Adapter 1014 03f1 PCIe2 2-Port 16Gb Fibre Channel Adapter for POWER (FC EL5B; CCIN 577F) 1014 04e3 PCIe3 4-Port 10GbE SR Adapter for POWER (FC EN15/EN16; CCIN 2CE3) 1014 04e4 PCIe3 4-Port 10GbE SFP+ Adapter for POWER (FC EN18; CCIN 2CE4) 10df e280 LPe16002B-M6 2-Port 16Gb Fibre Channel Adapter 10df e281 LPe16000B-M6 1-Port 16Gb Fibre Channel Adapter 10df e282 Flex System FC5054 4-port 16Gb FC Adapter e208 LightPulse 16Gb Fibre Channel Host Adapter (Lancer-VF) e220 OneConnect NIC (Lancer) 17aa 1054 ThinkServer LPm16002B-M6-L AnyFabric 17aa 1055 ThinkServer LPm16004B-M8-L AnyFabric e240 OneConnect iSCSI Initiator (Lancer) e260 OneConnect FCoE Initiator (Lancer) e268 OneConnect 10Gb FCoE Converged Network Adapter (Lancer-VF) e300 LPe31000/LPe32000 Series 16Gb/32Gb Fibre Channel Adapter 1014 0614 PCIe3 4-Port 16Gb Fibre Channel Adapter for POWER (FC EN1C/EN1D; CCIN 578E) 1014 0615 PCIe3 2-Port 32Gb Fibre Channel Adapter for POWER (FC EN1A/EN1B; CCIN 578F) 1014 06a0 PCIe3 2-Port 16Gb Fibre Channel Adapter for POWER (FC EN1L/EN1M; CCIN 2CFC) 10df e300 LPe32002-M2 2-Port 32Gb Fibre Channel Adapter 10df e301 LPe32000-M2 1-Port 32Gb Fibre Channel Adapter 10df e310 LPe31002-M6 2-Port 16Gb Fibre Channel Adapter 10df e311 LPe31000-M6 1-Port 16Gb Fibre Channel Adapter 10df e312 LPe31004-M6 4-Port 16Gb Fibre Channel Adapter 10df e320 LPe32002-M2-D 2-Port 32Gb Fibre Channel Adapter 10df e321 LPe32000-M2-D 1-Port 32Gb Fibre Channel Adapter 10df e322 LPe31002-M6-D 2-Port 16Gb Fibre Channel Adapter 10df e323 LPe31000-M6-D 1-Port 16Gb Fibre Channel Adapter 10df e324 LPm32002-D 2-Port 32Gb Fibre Channel Mezz Card 10df e325 LPm31002-D 2-Port 16Gb Fibre Channel Mezz Card 10df e330 LPe32002-M2-L 2-Port 32Gb PCIe Fibre Channel Adapter 10df e331 LPe32000-M2-L 1-Port 32Gb PCIe Fibre Channel Adapter 10df e332 LPe31002-M6-L 2-Port 16Gb PCIe Fibre Channel Adapter 10df e333 LPe31000-M6-L 1-Port 16Gb PCIe Fibre Channel Adapter 1590 0201 StoreFabric SN1600E 1-Port 32Gb Fibre Channel Adapter 1590 0202 StoreFabric SN1600E 2-Port 32Gb Fibre Channel Adapter 1590 0213 StoreFabric SN1200E 1-Port 16Gb Fibre Channel Adapter 1590 0214 StoreFabric SN1200E 2-Port 16Gb Fibre Channel Adapter 1590 022e Synergy 5330C 2-Port 32Gb Fibre Channel Mezz Card 193d 1060 NIC-FC730i-Mb-2P f011 Saturn: LightPulse Fibre Channel Host Adapter f015 Saturn: LightPulse Fibre Channel Host Adapter f085 LP850 Fibre Channel Host Adapter f095 LP952 Fibre Channel Host Adapter f098 LP982 Fibre Channel Host Adapter f0a1 Thor LightPulse Fibre Channel Host Adapter f0a5 Thor LightPulse Fibre Channel Host Adapter f0b5 Viper LightPulse Fibre Channel Host Adapter f0d1 Helios LightPulse Fibre Channel Host Adapter f0d5 Helios LightPulse Fibre Channel Host Adapter f0e1 Zephyr LightPulse Fibre Channel Host Adapter f0e5 Zephyr LightPulse Fibre Channel Host Adapter f0f5 Neptune LightPulse Fibre Channel Host Adapter f100 LPe12000 Series 8Gb Fibre Channel Adapter 1014 038a 8Gb PCI Express Dual Port FC Adapter for POWER 103c 3282 8Gb Dual-port PCI-e FC HBA 10df f140 LPe12000-M8-L 1-Port 8Gb PCIe Fibre Channel Adapter 10df f141 LPe12002-M8-L 2-Port 8Gb PCIe Fibre Channel Adapter f111 Saturn-X LightPulse Fibre Channel Host Adapter f112 Saturn-X LightPulse Fibre Channel Host Adapter f180 LPSe12002 EmulexSecure Fibre Channel Adapter f400 LPe35000/LPe36000 Series 32Gb/64Gb Fibre Channel Adapter 10df f401 LPe35000-M2 1-Port 32Gb Fibre Channel Adapter 10df f402 LPe35002-M2 2-Port 32Gb Fibre Channel Adapter 10df f403 LPe36000-M64 1-Port 64Gb Fibre Channel Adapter 10df f404 LPe36002-M64 2-Port 64Gb Fibre Channel Adapter 10df f405 LPe35004-M2 4-Port 32Gb Fibre Channel Adapter 10df f406 LPe35004-X6 4-Port Fibre Channel Adapter 10df f410 LPe35002-M2-D 2-Port 32Gb Fibre Channel Adapter 10df f411 LPe35000-M2-D 1-Port 32Gb Fibre Channel Adapter 10df f418 LPe35000-M2-L 1-Port 32Gb PCIe Fibre Channel Adapter 10df f419 LPe35002-M2-L 2-Port 32Gb PCIe Fibre Channel Adapter 10df f421 LPe36002-M2-L 2-Port 64Gb PCIe Fibre Channel Adapter 10df f422 LPe36002-M64-D 2-Port 64Gb Fibre Channel Adapter 1590 02d5 StoreFabric SN1610E 1-Port 32Gb Fibre Channel Adapter 1590 02d6 StoreFabric SN1610E 2-Port 32Gb Fibre Channel Adapter f500 LPe37000/LPe38000 Series 32Gb/64Gb Fibre Channel Adapter 1014 06c1 PCIe4 4-Port 32Gb Fibre Channel Adapter for POWER (FC EN1L/EN1M; CCIN 2CFC) 1014 06c2 PCIe4 2-Port 64Gb Fibre Channel Adapter for POWER (FC EN1N/EN1P; CCIN 2CFD) f700 LP7000 Fibre Channel Host Adapter f701 LP7000 Fibre Channel Host Adapter Alternate ID (JX1:2-3, JX2:1-2) f800 LP8000 Fibre Channel Host Adapter f801 LP8000 Fibre Channel Host Adapter Alternate ID (JX1:2-3, JX2:1-2) f900 LP9000 Fibre Channel Host Adapter f901 LP9000 Fibre Channel Host Adapter Alternate ID (JX1:2-3, JX2:1-2) f980 LP9802 Fibre Channel Host Adapter f981 LP9802 Fibre Channel Host Adapter Alternate ID f982 LP9802 Fibre Channel Host Adapter Alternate ID fa00 Thor-X LightPulse Fibre Channel Host Adapter fb00 Viper LightPulse Fibre Channel Host Adapter fc00 Thor-X LightPulse Fibre Channel Host Adapter 10df fc00 LP10000 LightPulse Fibre Channel Host Adapter fc10 Helios-X LightPulse Fibre Channel Host Adapter fc20 Zephyr-X LightPulse Fibre Channel Host Adapter fc40 Saturn-X: LightPulse Fibre Channel Host Adapter fc50 Proteus-X: LightPulse IOV Fibre Channel Host Adapter fd00 Helios-X LightPulse Fibre Channel Host Adapter # Also IBM FC 5759 / FC 1910 for POWER 10df fd02 LightPulse LP11002 Dual-port 4Gigabit PCI Fibre Channel Adapter fd11 Helios-X LightPulse Fibre Channel Host Adapter fd12 Helios-X LightPulse Fibre Channel Host Adapter fe00 Zephyr-X LightPulse Fibre Channel Host Adapter fe05 Zephyr-X: LightPulse FCoE Adapter fe11 Zephyr-X LightPulse Fibre Channel Host Adapter fe12 Zephyr-X LightPulse FCoE Adapter ff00 Neptune LightPulse Fibre Channel Host Adapter 10e0 Integrated Micro Solutions Inc. 5026 IMS5026/27/28 5027 IMS5027 5028 IMS5028 8849 IMS8849 8853 IMS8853 9128 IMS9128 [Twin turbo 128] 10e1 Tekram Technology Co.,Ltd. 0391 TRM-S1040 10e1 0391 DC-315U SCSI-3 Host Adapter 690c DC-690c dc29 DC-290 10e2 Aptix Corporation 10e3 Tundra Semiconductor Corp. 0000 CA91C042 [Universe] 0108 Tsi108 Host Bridge for Single PowerPC 0148 Tsi148 [Tempe] 1775 1100 VR11 Single Board Computer 0860 CA91C860 [QSpan] 0862 CA91C862A [QSpan-II] 8111 Tsi381 PCIe to PCI Bridge 8260 CA91L8200B [Dual PCI PowerSpan II] 8261 CA91L8260B [Single PCI PowerSpan II] a108 Tsi109 Host Bridge for Dual PowerPC 10e4 Tandem Computers 8029 Realtek 8029 Network Card 10e5 Micro Industries Corporation 10e6 Gainbery Computer Products Inc. 10e7 Vadem 10e8 Applied Micro Circuits Corp. 1072 INES GPIB-PCI (AMCC5920 based) 2011 Q-Motion Video Capture/Edit board 4750 S5930 [Matchmaker] 5920 S5920 801d Roper Scientific PCI TAXI interface 8043 LANai4.x [Myrinet LANai interface chip] 8062 S5933_PARASTATION 807d S5933 [Matchmaker] 8081 GPIB interface card [IOtech Inc. PCI488] 8088 Kongsberg Spacetec Format Synchronizer 8089 Kongsberg Spacetec Serial Output Board 809c S5933_HEPC3 80b9 Harmonix Hi-Card P8 (4x active ISDN BRI) 80d7 PCI-9112 80d8 PCI-7200 80d9 PCI-9118 80da PCI-9812 80fc APCI1500 Signal processing controller (16 dig. inputs + 16 dig. outputs) 811a PCI-IEEE1355-DS-DE Interface 814c Fastcom ESCC-PCI (Commtech, Inc.) 8170 S5933 [Matchmaker] (Chipset Development Tool) 81e6 Multimedia video controller 828d APCI3001 Signal processing controller (up to 16 analog inputs) 8291 Fastcom 232/8-PCI (Commtech, Inc.) 82c4 Fastcom 422/4-PCI (Commtech, Inc.) 82c5 Fastcom 422/2-PCI (Commtech, Inc.) 82c6 Fastcom IG422/1-PCI (Commtech, Inc.) 82c7 Fastcom IG232/2-PCI (Commtech, Inc.) 82ca Fastcom 232/4-PCI (Commtech, Inc.) 82db AJA HDNTV HD SDI Framestore 82e2 Fastcom DIO24H-PCI (Commtech, Inc.) 8406 PCIcanx/PCIcan CAN interface [Kvaser AB] 8407 PCIcan II CAN interface (A1021, PCB-07, PCB-08) [Kvaser AB] 8851 S5933 on Innes Corp FM Radio Capture card e004 X-Gene PCIe bridge 10e9 Alps Electric Co., Ltd. 10ea Integraphics 1680 IGA-1680 1682 IGA-1682 1683 IGA-1683 2000 CyberPro 2000 2010 CyberPro 2000A 5000 CyberPro 5000 5050 CyberPro 5050 5202 CyberPro 5202 # CyberPro5202 Audio Function 5252 CyberPro5252 10eb Artists Graphics 0101 3GA 8111 Twist3 Frame Grabber 10ec Realtek Semiconductor Co., Ltd. 0139 RTL-8139/8139C/8139C+ Ethernet Controller 2600 Killer E2600 GbE Controller 3000 Killer E3000 2.5GbE Controller 4321 RTL8852BE 802.11ax PCIe Wireless Network Adapter 5208 RTS5208 PCI Express Card Reader 5209 RTS5209 PCI Express Card Reader 5227 RTS5227 PCI Express Card Reader 17aa 220e ThinkPad T440p 17aa 2214 ThinkPad X240 5229 RTS5229 PCI Express Card Reader 1025 0813 Aspire R7-571 103c 194e ProBook 455 G1 Notebook 103c 1985 Pavilion 17-e163sg Notebook PC 17aa 3832 Yoga 520 522a RTS522A PCI Express Card Reader 103c 8079 EliteBook 840 G3 103c 825b OMEN-17-w001nv 17aa 5124 ThinkPad E595 5249 RTS5249 PCI Express Card Reader 103c 1909 ZBook 15 524a RTS524A PCI Express Card Reader 5250 RTS5250 PCI Express Card Reader 525a RTS525A PCI Express Card Reader 1028 06d6 Latitude 7275 tablet 1028 06dc Latitude E7470 1028 06e4 XPS 15 9550 1028 06e6 Latitude 11 5175 2-in-1 1028 09be Latitude 7410 1028 0b10 Precision 3571 1028 0c06 Precision 3580 17aa 224f ThinkPad X1 Carbon 5th Gen 5260 RTS5260 PCI Express Card Reader 5261 RTS5261 PCI Express Card Reader 5286 RTS5286 PCI Express Card Reader 5287 RTL8411B PCI Express Card Reader 1025 1094 Acer Aspire E5-575G 5288 RTS5288 PCI Express Card Reader 5289 RTL8411 PCI Express Card Reader 1043 1457 K55A Laptop 5760 RTS5763DL x2 NVMe SSD Controller 5762 RTS5762 NVMe SSD Controller 5763 RTS5763DL NVMe SSD Controller (DRAM-less) 5765 RTS5765DL NVMe SSD Controller (DRAM-less) 5770 RTS5770DL NVMe SSD Controller (DRAM-less) 5772 RTS5772DL NVMe SSD Controller (DRAM-less) 8029 RTL-8029(AS) 10b8 2011 EZ-Card (SMC1208) 10ec 8029 RTL-8029(AS) 1113 1208 EN1208 1186 0300 DE-528 1259 2400 AT-2400 1af4 1100 QEMU Virtual Machine 8125 RTL8125 2.5GbE Controller 4c52 2022 LRES2022PT Single-port 2.5Gb Ethernet Network Adapter 8129 RTL-8129 10ec 8129 RT8129 Fast Ethernet Adapter 11ec 8129 RTL8111/8168 PCIe Gigabit Ethernet (misconfigured) 8136 RTL810xE PCI Express Fast Ethernet controller 103c 1985 RTL8106E on Pavilion 17-e163sg Notebook PC 103c 2a8c Compaq 500B Microtower 103c 2ab1 Pavilion p6774 103c 30cc Pavilion dv6700 1179 ff64 RTL8102E PCI-E Fast Ethernet NIC 17c0 1053 RTL8101e Medion WIM 2210 Notebook PC [MD96850] 8137 RTL8104E PCIe Fast Ethernet Controller 8138 RT8139 (B/C) Cardbus Fast Ethernet Adapter 10ec 8138 RT8139 (B/C) Fast Ethernet Adapter 8139 RTL-8100/8101L/8139 PCI Fast Ethernet Adapter 0357 000a TTP-Monitoring Card V2.0 1025 005a TravelMate 290 1025 8920 ALN-325 1025 8921 ALN-325 103c 006a NX9500 103c 2a20 Pavilion t3030.de Desktop PC 103c 30d9 Presario C700 1043 1045 L8400B, L3C/S, X58LE notebook 1043 8109 P5P800-MX Mainboard 1071 8160 MIM2000 10bd 0320 EP-320X-R 10ec 8139 RTL-8100/8101L/8139 PCI Fast Ethernet Adapter 10f7 8338 Panasonic CF-Y5 laptop 1113 ec01 LevelOne FNC-0107TX/FNC-0109TX 1186 1104 DFE-520TX Fast Ethernet PCI Adapter (rev. D1) 1186 1300 DFE-538TX 1186 1320 SN5200 1186 8139 DRN-32TX 11f6 8139 FN22-3(A) LinxPRO Ethernet Adapter 1259 2500 AT-2500TX 1259 2503 AT-2500TX/ACPI 1385 f31d FA311 v2 1395 2100 AMB2100 1429 d010 ND010/ND012 1432 9130 EN-9130TX 1436 8139 RT8139 144d c00c P30/P35 notebook 1458 e000 GA-7VM400M/7VT600 Motherboard 1462 0131 MS-1013 Notebook 1462 217c Aspire L250 1462 788c 865PE Neo2-V Mainboard 146c 1439 FE-1439TX 1489 6001 GF100TXRII 1489 6002 GF100TXRA 149c 139a LFE-8139ATX 149c 8139 LFE-8139TX 14cb 0200 LNR-100 Family 10/100 Base-TX Ethernet 1565 2300 P4TSV Onboard LAN (RTL8100B) 1631 7003 Onboard RTL8111 on GA-8SIML Rev1.0 Mainboard 1695 9001 Onboard RTL8101L 10/100 MBit 16ec 00ff USR997900A 1799 5000 F5D5000 PCI Card/Desktop Network PCI Card 1799 5010 F5D5010 CardBus Notebook Network Card 187e 3303 FN312 1904 8139 RTL8139D Fast Ethernet Adapter 1af4 1100 QEMU Virtual Machine 2646 0001 KNE120TX 8e2e 7000 KF-230TX 8e2e 7100 KF-230TX/2 a0a0 0007 ALN-325C 8161 RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller 10ec 8168 TP-Link TG-3468 v4.0 Gigabit PCI Express Network Adapter 8167 RTL-8110SC/8169SC Gigabit Ethernet 105b 0e10 RTL-8110SC-GR on a N15235/A74MX mainboard 1458 e000 GA-MA69G-S3H Motherboard 1462 235c P965 Neo MS-7235 mainboard 1462 236c 945P Neo3-F motherboard 8168 RTL8111/8168/8211/8411 PCI Express Gigabit Ethernet Controller 1019 8168 RTL8111/8168 PCI Express Gigabit Ethernet controller 1025 1094 Acer Aspire E5-575G 1028 0283 Vostro 220 1028 04b2 Vostro 3350 1028 04da Vostro 3750 1028 05d7 Alienware X51 R2 1028 06f2 Latitude 3470 1028 06f3 Latitude 3570 1028 0869 Vostro 3470 103c 1611 Pavilion DM1Z-3000 103c 1950 ProBook 450/455 103c 2a6f Asus IPIBL-LB Motherboard 103c 825b OMEN-17-w001nv 103c 8615 Pavilion Laptop 15-cw1xxx 103c 86d4 Pavilion Laptop 15-ec0xxx # Rev 29, uses r8169 Driver on Linux 103c 8882 HP ProDesk 405 G8 Desktop Mini PC 103c 8b17 ProBook 445 G9/455 G9 [RTL8111HSH-CG GbE Controller] 1043 11f5 Notebook motherboard (one of many models) 1043 16d5 U6V/U31J laptop 1043 81aa P5B 1043 82c6 M3A78 Series Motherboard 1043 83a3 M4A785/P7P55/AT3IONT-I Motherboard 1043 8432 P8P67 and other motherboards 1043 8505 P8 series motherboard 1043 8554 H81M-C Motherboard 1043 859e AM1I-A Motherboard 1043 8677 Onboard RTL8111H Ethernet 105b 0d7c D270S/D250S Motherboard 10ec 8168 RTL8111/8168 PCI Express Gigabit Ethernet controller 144d c652 RTL8168 on a NP300E5C series laptop 1458 e000 Onboard Ethernet 1462 238c Onboard RTL8111b on MSI P965 Platinum Mainboard 1462 345c RTL8111B on MS-7345 Motherboard 1462 368c K9AG Neo2 1462 4180 Wind PC MS-7418 1462 7522 X58 Pro-E 1462 7c37 X570-A PRO motherboard 1734 11c0 RTL8211DN on Esprimo P510 D3171 motherboard 1775 11cc CC11/CL11 17aa 3098 ThinkCentre E73 17aa 3814 Z50-75 17aa 3823 Lenovo V130-15IGM Laptop - Type 81HL 17aa 5068 Thinkpad E480/E580 17aa 5124 ThinkPad E595 1849 8168 Motherboard (one of many) 7470 3468 TG-3468 Gigabit PCI Express Network Adapter 8086 2055 NUC Kit DN2820FYKH 8086 d615 Desktop Board D510MO/D525MW ea50 ce19 mCOM10-L1900 8169 RTL8169 PCI Gigabit Ethernet Controller 1025 0079 Aspire 5024WLMi 10bd 3202 EP-320G-TX1 32-bit PCI Gigabit Ethernet Adapter 10ec 8169 RTL8169/8110 Family PCI Gigabit Ethernet NIC 1259 c107 CG-LAPCIGT 1371 434e ProG-2000L 1385 311a GA311 1385 5200 GA511 Gigabit PC Card 1458 e000 GA-8I915ME-G Mainboard 1462 030c K8N Neo-FSR v2.0 mainboard 1462 065c Hetis 865GV-E (MS-7065) 1462 702c K8T NEO 2 motherboard 1462 7094 K8T Neo2-F V2.0 16ec 011f USR997903 1734 1091 D2030-A1 a0a0 0449 AK86-L motherboard 816a RTL8111xP UART #1 ea50 ce19 mCOM10-L1900 816b RTL8111xP UART #2 ea50 ce19 mCOM10-L1900 816c RTL8111xP IPMI interface ea50 ce19 mCOM10-L1900 816d RTL811x EHCI host controller ea50 ce19 mCOM10-L1900 816e Realtek RealManage BMC 8171 RTL8191SEvA Wireless LAN Controller 8172 RTL8191SEvB Wireless LAN Controller 8173 RTL8192SE Wireless LAN Controller 8174 RTL8192SE Wireless LAN Controller 8176 RTL8188CE 802.11b/g/n WiFi Adapter 1043 84b5 PCE-N10 1a3b 1139 AW-NE139H Half-size Mini PCIe Card 8177 RTL8191CE PCIe Wireless Network Adapter 8178 RTL8192CE PCIe Wireless Network Adapter 8179 RTL8188EE Wireless Network Adapter 103c 197d RTL8188EE mini-PCIe card 8180 RTL8180L 802.11b MAC 1385 4700 MA521 802.11b Wireless PC Card 1737 0019 WPC11v4 802.11b Wireless-B Notebook Adapter 8185 RTL-8185 IEEE 802.11a/b/g Wireless LAN Controller 818b RTL8192EE PCIe Wireless Network Adapter 8190 RTL8190 802.11n PCI Wireless Network Adapter 8191 RTL8192CE PCIe Wireless Network Adapter 8192 RTL8192E/RTL8192SE Wireless LAN Controller 8193 RTL8192DE Wireless LAN Controller 8196 RTL8196 Integrated PCI-e Bridge 8197 SmartLAN56 56K Modem 8199 RTL8187SE Wireless LAN Controller 1462 6894 MN54G2 / MS-6894 Wireless Mini PCIe Card 8723 RTL8723AE PCIe Wireless Network Adapter 8812 RTL8812AE 802.11ac PCIe Wireless Network Adapter 8813 RTL8813AE 802.11ac PCIe Wireless Network Adapter 8821 RTL8821AE 802.11ac PCIe Wireless Network Adapter 8852 RTL8852AE 802.11ax PCIe Wireless Network Adapter a85a RTL8852AE WiFi 6 802.11ax PCIe Adapter b520 RTL8852BE-VT PCIe 802.11ax Wireless Network Controller b723 RTL8723BE PCIe Wireless Network Adapter 10ec 8739 Dell Wireless 1801 17aa b736 Z50-75 b821 RTL8821CE PCIe 802.11ac Wireless Network Controller b822 RTL8822BE 802.11a/b/g/n/ac WiFi adapter 103c 831b Realtek RTL8822BE 802.11ac 2x2 Wi-Fi + Bluetooth 4.2 Combo Adapter (MU-MIMO supported) 17aa 5124 ThinkPad E595 17aa b023 ThinkPad E595 b852 RTL8852BE PCIe 802.11ax Wireless Network Controller b85b RTL8852BE PCIe 802.11ax Wireless Network Controller [1T1R] c821 RTL8821CE 802.11ac PCIe Wireless Network Adapter c822 RTL8822CE 802.11ac PCIe Wireless Network Adapter c82f RTL8822CE 802.11ac PCIe Wireless Network Adapter c852 RTL8852CE PCIe 802.11ax Wireless Network Controller d723 RTL8723DE 802.11b/g/n PCIe Adapter 10ed Ascii Corporation 7310 V7310 10ee Xilinx Corporation 0001 EUROCOM for PCI (ECOMP) 0002 Octal E1/T1 for PCI ETP Card 0007 Default PCIe endpoint ID 0205 Wildcard TE205P 0210 Wildcard TE210P 0300 Spartan 3 Designs (Xilinx IP) 0314 Wildcard TE405P/TE410P (1st Gen) 0405 Wildcard TE405P (2nd Gen) 0410 Wildcard TE410P (2nd Gen) 0600 Xilinx 6 Designs (Xilinx IP) 3fc0 RME Digi96 3fc1 RME Digi96/8 3fc2 RME Digi96/8 Pro 3fc3 RME Digi96/8 Pad 3fc4 RME Digi9652 (Hammerfall) 3fc5 RME Hammerfall DSP 3fc6 RME Hammerfall DSP MADI 5000 Alveo U200 XDMA Platform 10ee 000e Alveo card 5004 Alveo U250 XDMA Platform 10ee 000e Alveo card 5005 Alveo U250 500c Alveo U280 XDMA Platform 10ee 000e Alveo card 5020 Alveo U50 XMDA Platform 10ee 000e Alveo card 505c Alveo U55C 10ee 000e Alveo card 5074 Alveo X3522, Quad Port, 10/25GbE Adaptable Accelerator Card 5084 Alveo X3522, Quad Port, 10/25GbE Low Latency Network Adapter 6987 SmartSSD 6988 SmartSSD 7011 7-Series FPGA Hard PCIe block (AXI/debug) 7038 FPGA Card XC7VX690T 17aa 402f FPGA XC7VX690T-3FFG1157E 8019 Memory controller 1eec 0201 VSEC10232X Dual-port 100Gb/s Etherent PCIe 8380 Ellips ProfiXpress Profibus Master 8381 Ellips Santos Frame Grabber 9134 SmartSSD 9234 SmartSSD 9434 SmartSSD d000 Alveo U200 Golden Image 10ee 000e Alveo card d004 Alveo U250 Golden Image 10ee 000e Alveo card d00c Alveo U280 Golden Image 10ee 000e Alveo card d020 Alveo U50 Golden Image 10ee 000e Alveo card d154 Copley Controls CAN card (PCI-CAN-02) # SED is assigned Xilinx PCI device IDs ebf0 through ebff ebf0 SED Systems Modulator/Demodulator ebf1 SED Systems Audio Interface Card ebf2 SED Systems Common PCI Interface ebf3 SED Systems PCIe-AXI Bridge 10ef Racore Computer Products, Inc. 8154 M815x Token Ring Adapter 10f0 Peritek Corporation 10f1 Tyan Computer 2865 Tyan Thunder K8E S2865 5300 Tyan S5380 Mainboard 10f2 Achme Computer, Inc. 10f3 Alaris, Inc. 10f4 S-MOS Systems, Inc. 10f5 NKK Corporation a001 NDR4000 [NR4600 Bridge] 10f6 Creative Electronic Systems SA 10f7 Matsushita Electric Industrial Co., Ltd. 10f8 Altos India Ltd 10f9 PC Direct 10fa Truevision 000c TARGA 1000 10fb Thesys Gesellschaft fuer Mikroelektronik mbH 186f TH 6255 10fc I-O Data Device, Inc. # What's in the cardbus end of a Sony ACR-A01 card, comes with newer Vaio CD-RW drives 0003 Cardbus IDE Controller 0005 Cardbus SCSI CBSC II 10fd Soyo Computer, Inc 10fe Fast Multimedia AG 10ff NCube 1100 Jazz Multimedia 1101 Initio Corporation 0002 INI-920 Ultra SCSI Adapter 1060 INI-A100U2W 1622 INI-1623 PCI SATA-II Controller 9100 INI-9100/9100W 9400 INI-940 Fast Wide SCSI Adapter 9401 INI-935 Fast Wide SCSI Adapter 9500 INI-950 SCSI Adapter 9502 INI-950P Ultra Wide SCSI Adapter 1102 Creative Labs 0002 EMU10k1 [Sound Blaster Live! Series] 100a 1102 SB Live! 5.1 Digital OEM SB0220 EMU10K1-JFF 1102 0020 CT4670/4850 SBLive! Value 1102 0021 CT4620 SBLive! 1102 002f M002/M003 Integrated SBLive! 1102 100a SB0220/0229 SBLive! 5.1 Digital OEM 1102 4001 E-mu APS 1102 8022 CT4780 SBLive! Value 1102 8023 CT4790 SoundBlaster PCI512 1102 8024 CT4760 SBLive! 1102 8025 CT1140/SB0040 Integrated SBLive! 1102 8026 CT4830 SBLive! Value 1102 8027 CT4832 SBLive! Value 1102 8028 CT4870 SBLive! Value 1102 8029 CT4872 SBLive! Value 1102 802a CT4890 SoundBlaster PCI256 1102 802b CT4891 SoundBlaster PCI256 1102 8031 CT4831 SBLive! Value 1102 8032 CT4871 SBLive! Value 1102 8033 CT4893 SoundBlaster PCI256 1102 8035 CT0060 SBLive! 1102 8040 CT4760 SBLive! 1102 8050 CT4750 SoundBlaster PCI512 1102 8051 CT4850 SBLive! Value 1102 8061 SB060 SBLive! Player 5.1 1102 8062 SB0100 SBLive! 5.1 1102 8063 DXW Integrated SBLive! 5.1 1102 8064 SB0100/SB0102 SBLive! 5.1 1102 8065 SB0220/0222 SBLive! 5.1 Digital 1102 8066 SB0228 SBLive! 5.1 Digital 1102 8067 SB0220 SBLive! 5.1 1102 8068 CT0061 SBLive! 1102 8069 SB0101 SBLive! 5.1 Value 1102 806a SB0103 SBLive! 5.1 1102 806b SB0105 SBLive! 5.1 1102 806c SB0221 SBLive! 5.1 1102 8071 SB0150 SoundBlaster PCI512 # EMU8008 PCI version of emu8000 chip 0003 SB AWE64(D) 1102 0010 CT4600 AWE64D 1102 0030 CT4650 AWE64D 1102 0031 CT4655 AWE64D 0004 EMU10k2/CA0100/CA0102/CA10200 [Sound Blaster Audigy Series] 1102 0040 SB0090 Audigy Player # Probably an early engineering sample 1102 0041 CT4820 SBLive!2 1102 0042 CT0070 Audigy 1102 0043 CT0072 Audigy 1102 0051 SB0090 Audigy Player/Platinum (EX) 1102 0052 SB0162 Audigy ES 1102 0053 CT0090/SB0092 Audigy Player/OEM 1102 0054 SB0161 Audigy ES 1102 0055 SB0192 Audigy 1102 0056 SB0191 Audigy 1102 0057 SB0091 Audigy 1102 0058 SB0095 Audigy Player/OEM 1102 0059 SB0230 Audigy 1102 005a SB0231 Audigy 1102 005b SB0232 Audigy 1102 005c SB0238 Audigy 1102 1002 SB0240 Audigy 2 Platinum 6.1 1102 1003 SB0350 Audigy 2 / SB0243 Audigy 2 OEM 1102 1004 SB0242 Audigy 2 1102 1005 SB0280 Audigy 2 Platinum Ex 1102 1006 SB0245 Audigy 2 OEM 1102 1007 SB0240/SB0244 Audigy 2 Platinum 1102 1008 SB0320 Audigy 2 1102 1009 SB0249 Audigy 2 OEM 1102 100a SB0246 Audigy 2 1102 2001 SB0360 Audigy 2 ZS Platinum Pro 1102 2002 SB0350 Audigy 2 ZS 1102 2003 SB0352 Audigy 2 ZS 1102 2004 SB0355 Audigy 2 ZS 1102 2005 SB0359 Audigy 2 ZS 1102 2006 SB035x Audigy 2 OEM 1102 2007 SB0380 Audigy 4 Pro 1102 4001 E-MU 1010 [MAEM8810] 1102 4002 E-MU 0404 1102 4003 E-MU 1010 0005 EMU20k1 [Sound Blaster X-Fi Series] 1102 0021 X-Fi Platinum 1102 002c X-Fi XtremeGamer FATAL1TY PRO 1102 1003 X-Fi XtremeMusic # This chip is also known as CA0103 on Sound Blaster 5.1 SB0680 card. 0006 EMU10k1X / CA0103 [SB Live! OEM / SB 5.1 / Ectiva 5.1] 1102 1001 SB0680 Sound Blaster 5.1 1102 1003 SB0203 SB Live! 5.1 (Dell) 1102 1004 TP0033 Ectiva Audio 5.1 0007 CA0106/CA0111 [SB Live!/Audigy/X-Fi Series] 1102 0007 SBLive! 24bit 1102 1001 SB0310 Audigy LS 1102 1002 SB0312 Audigy LS 1102 1006 SB0410 SBLive! 24-bit 1102 100a SB0570 [SB Audigy SE] 1102 1012 SB0790 X-Fi XA 1102 1013 Soundblaster X-Fi Xtreme Audio 1462 1009 K8N Diamond 0008 CA0108/CA10300 [Sound Blaster Audigy Series] 1102 0008 EMU0404 Digital Audio System 1102 1001 SB0400 Audigy 2 Value 1102 1021 SB0610 Audigy 4 Value 1102 1022 SBxxx Audigy 2/4 Value 1102 1023 SB0612 Audigy 2 LS 1102 1024 SB1550 Audigy 5/Rx 1102 1101 SBxxxx Audigy 2 SA 1102 2001 SB0530 Audigy 2 ZS Notebook 1102 2021 SBxxxx Audigy 4 Notebook 1102 4002 E-MU 0404 1102 4003 E-MU 1010 1102 4004 EMU1010 Digital Audio System [MAEM8960] 1102 4005 E-MU 0404 [MAEM8984] 1102 4007 E-MU 1010 [MAEM8982] 1102 4201 E-MU 0202 [MAEM8950] 0009 CA0110 [Sound Blaster X-Fi Xtreme Audio] 1102 0010 MB0820 Integrated 1102 0018 SB1040 PCI Express 000b EMU20k2 [Sound Blaster X-Fi Titanium Series] 1102 0041 SB0880 [SoundBlaster X-Fi Titanium PCI-e] 1102 0062 SB1270 [SoundBlaster X-Fi Titanium HD] 0012 CA0132 Sound Core3D [Sound Blaster Recon3D / Z-Series / Sound BlasterX AE-5 Plus] 1102 0010 SB1570 SB Audigy Fx 1102 0191 CA0132 Sound Core3D - CA0113 [ Sound BlasterX AE-5 Plus] 4001 SB Audigy FireWire Port 1102 0010 SB Audigy FireWire Port 7002 SB Live! Game Port 1102 0020 Gameport Joystick 7003 SB Audigy Game Port 1102 0040 SB Audigy Game Port 1102 0060 SB Audigy2 MIDI/Game Port 7004 [SB Live! Value] Input device controller 7005 SB Audigy LS Game Port 1102 1001 SB0310 Audigy LS MIDI/Game port 1102 1002 SB0312 Audigy LS MIDI/Game port 7006 [SB X-Fi Xtreme Audio] CA0110-IBG PCIe to PCI Bridge 8938 Ectiva EV1938 1033 80e5 SlimTower-Jim (NEC) 1071 7150 Mitac 7150 110a 5938 Siemens Scenic Mobile 510PIII 13bd 100c Ceres-C (Sharp, Intel BX) 13bd 100d Sharp, Intel Banister 13bd 100e TwinHead P09S/P09S3 (Sharp) 13bd f6f1 Marlin (Sharp) 14ff 0e70 P88TE (TWINHEAD INTERNATIONAL Corp) 14ff c401 Notebook 9100/9200/2000 (TWINHEAD INTERNATIONAL Corp) 156d b400 G400 - Geo (AlphaTop (Taiwan)) 156d b550 G560 (AlphaTop (Taiwan)) 156d b560 G560 (AlphaTop (Taiwan)) 156d b700 G700/U700 (AlphaTop (Taiwan)) 156d b795 G795 (AlphaTop (Taiwan)) 156d b797 G797 (AlphaTop (Taiwan)) # nee Triones Technologies, Inc. 1103 HighPoint Technologies, Inc. 0003 HPT343/345/346/363 0004 HPT366/368/370/370A/372/372N 1103 0001 HPT370A 1103 0004 HPT366 UDMA66 (r1) / HPT368 UDMA66 (r2) / HPT370 UDMA100 (r3) / HPT370 UDMA100 RAID (r4) 1103 0005 HPT370 UDMA100 1103 0006 HPT302/302N 0005 HPT372A/372N 0006 HPT302/302N 0007 HPT371/371N 0008 HPT374 0009 HPT372N 0620 RocketRAID 620 2 Port SATA-III Controller 0622 RocketRAID 622 2 Port SATA-III Controller 0640 RocketRAID 640 4 Port SATA-III Controller 0641 RocketRAID 640L 4 Port SATA-III Controller 0642 RocketRAID 642L SATA-III Controller (2 eSATA ports + 2 internal SATA ports) 0644 RocketRAID 644 4 Port SATA-III Controller (eSATA) 0645 RocketRAID 644L 4 Port SATA-III Controller (eSATA) 0646 RocketRAID 644LS SATA-III Controller (4 eSATA devices connected by 1 SAS cable) 0750 Rocket 750 PCIe Gen2 SATA III Controller 0840 RocketRAID 840 PCIe Gen3 SATA III Controller 1720 RocketRAID 1720 (2x SATA II RAID Controller) 1740 RocketRAID 1740 1742 RocketRAID 1742 2210 RocketRAID 2210 SATA-II Controller 11ab 11ab 88SX6042 2300 RocketRAID 230x 4 Port SATA-II Controller 2310 RocketRAID 2310 4 Port SATA-II Controller 2320 RocketRAID 2320 SATA-II Controller 2322 RocketRAID 2322 SATA-II Controller 2340 RocketRAID 2340 16 Port SATA-II Controller 2640 RocketRAID 2640 SAS/SATA Controller 2720 RocketRAID 2720 PCIe Gen2 6Gb/s SAS/SATA Controller 2722 RocketRAID 2722 # SFF-8087 Mini-SAS 16 port internal 2740 RocketRAID 2740 # SFF-8088 Mini-SAS 16 port external 2744 RocketRaid 2744 # SFF-8088 8 port external / SFF-8087 24 port internal 2782 RocketRAID 2782 2840 RocketRAID 2840 PCIe Gen3 6Gb/s SAS/SATA Controller 3120 RocketRAID 3120 3220 RocketRAID 3220 3320 RocketRAID 3320 3520 RocketRAID 3520 PCIe Gen1 8-Port SATA II Controller 3530 RocketRAID 3530 PCIe Gen1 12-Port SATA II Controller 3740 RocketRAID 3740 PCIe Gen3 12Gb/s SAS/SATA Controller 4310 RocketRaid 4310 4320 RocketRAID 4320 SAS Controller 7103 SSD7103 PCIe Gen3 x16 4-Port M.2 NVMe RAID Controller 7105 SSD7105 PCIe Gen3 x16 4-Port M.2 NVMe RAID Controller 7110 SSD7110 PCIe Gen3 x16 NVMe RAID Controller 7505 SSD7505 PCIe Gen4 x16 4-Port M.2 NVMe RAID Controller 7540 SSD7540 PCIe Gen4 x16 8-Port M.2 NVMe RAID Controller 7580 SSD7580 PCIe Gen4 x16 8-Port M.2 NVMe RAID Controller 1104 RasterOps Corp. 1105 Sigma Designs, Inc. 1105 REALmagic Xcard MPEG 1/2/3/4 DVD Decoder 8300 REALmagic Hollywood Plus DVD Decoder 8400 EM840x REALmagic DVD/MPEG-2 Audio/Video Decoder 8401 EM8401 REALmagic DVD/MPEG-2 A/V Decoder 8470 EM8470 REALmagic DVD/MPEG-4 A/V Decoder 8471 EM8471 REALmagic DVD/MPEG-4 A/V Decoder 8475 EM8475 REALmagic DVD/MPEG-4 A/V Decoder 1105 0001 REALmagic X-Card 8476 EM8476 REALmagic DVD/MPEG-4 A/V Decoder 127d 0000 CineView II 8485 EM8485 REALmagic DVD/MPEG-4 A/V Decoder 8486 EM8486 REALmagic DVD/MPEG-4 A/V Decoder # Found in Cisco DMP-4305G c621 EM8621L Digital Media Processor c622 EM8622L MPEG-4.10 (H.264) and SMPTE 421M (VC-1) A/V Decoder 1106 VIA Technologies, Inc. 0102 Embedded VIA Ethernet Controller 0130 VT6305 1394.A Controller 0198 P4X600 Host Bridge 0204 K8M800 Host Bridge 0208 PT890 Host Bridge 0238 K8T890 Host Bridge 0258 PT880 Host Bridge 0259 CN333/CN400/PM880 Host Bridge 0269 KT880 Host Bridge 0282 K8T800Pro Host Bridge 1043 80a3 A8V Deluxe 0290 K8M890 Host Bridge 0293 PM896 Host Bridge 0296 P4M800 Host Bridge 0305 VT8363/8365 [KT133/KM133] 1019 0987 K7VZA Mainboard 1043 8033 A7V Mainboard 1043 803e A7V-E Mainboard 1043 8042 A7V133/A7V133-C Mainboard 147b a401 KT7/KT7-RAID/KT7A/KT7A-RAID Mainboard 0308 PT880 Ultra/PT894 Host Bridge 1043 8199 P4V800D-X Mainboard 1849 0308 Motherboard 0314 CN700/VN800/P4M800CE/Pro Host Bridge 0324 CX700/VX700 Host Bridge 0327 P4M890 Host Bridge 0336 K8M890CE Host Bridge 0340 PT900 Host Bridge 0351 K8T890CF Host Bridge 0353 VX800/820-Series Chipset Host-Bridge Controller 0364 CN896/VN896/P4M900 Host Bridge 1043 81ce P5VD2-VM mothervoard 0391 VT8371 [KX133] 0409 VX855/VX875 Host Bridge: Host Control 0410 VX900 Series Host Bridge: Host Control 0415 VT6415 PATA IDE Host Controller 1043 838f Motherboard 0501 VT8501 [Apollo MVP4] 0505 VT82C505 # Shares chip with :0576. The VT82C576M has :1571 instead of :0561. 0561 VT82C576MV 0571 VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE 1019 0985 P6VXA Motherboard 1019 0a81 L7VTA v1.0 Motherboard (KT400-8235) 1043 8052 VT8233A Bus Master ATA100/66/33 IDE 1043 808c A7V8X / A7V333 motherboard 1043 80a1 A7V8X-X motherboard rev. 1.01 1043 80ed A7V600/K8V-X/A8V Deluxe motherboard 1106 0571 VT82C586/B/VT82C686/A/B/VT8233/A/C/VT8235 PIPC Bus Master IDE 1179 0001 Magnia Z310 1297 f641 FX41 motherboard 1458 5002 GA-7VAX Mainboard 1462 5901 KT6 Delta-FIS2R (MS-6590) 1462 7020 K8T NEO 2 motherboard 1462 7094 K8T Neo2-F V2.0 1462 7120 KT4AV motherboard 1462 7181 K8MM3-V mainboard 147b 1407 KV8-MAX3 motherboard # probably all K7VT2/4*/6 1849 0571 K7VT series Motherboards 0576 VT82C576 3V [Apollo Master] 0581 CX700/VX700/VX800/820-Series Serial ATA RAID-Controller # Upgrade bios to get correct ID: 5324 instead of 0581 1106 0581 Wrong IDE ID 0585 VT82C585VP [Apollo VP1/VPX] 0586 VT82C586/A/B PCI-to-ISA [Apollo VP] 1106 0000 MVP3 ISA Bridge 0591 VT8237A SATA 2-Port Controller 0595 VT82C595 [Apollo VP2] 0596 VT82C596 ISA [Mobile South] 1106 0000 VT82C596/A/B PCI to ISA Bridge 1458 0596 VT82C596/A/B PCI to ISA Bridge 0597 VT82C597 [Apollo VP3] 0598 VT82C598 [Apollo MVP3] 0601 VT8601 [Apollo ProMedia] 0605 VT8605 [ProSavage PM133] 103c 1254 D9840-60001 [Brio BA410 Motherboard] 1043 802c CUV4X mainboard 0680 VT82C680 [Apollo P6] 0686 VT82C686 [Apollo Super South] 1019 0985 P6VXA Motherboard 103c 1256 D9840-60001 [Brio BA410 Motherboard] 1043 802c CUV4X mainboard 1043 8033 A7V Mainboard 1043 803e A7V-E Mainboard 1043 8040 A7M266 Mainboard 1043 8042 A7V133/A7V133-C Mainboard 1106 0000 VT82C686/A PCI to ISA Bridge 1106 0686 VT82C686/A PCI to ISA Bridge 1179 0001 Magnia Z310 147b a702 KG7-Lite Mainboard 0691 VT82C693A/694x [Apollo PRO133x] 1019 0985 P6VXA Motherboard 1179 0001 Magnia Z310 1458 0691 VT82C691 Apollo Pro System Controller 0693 VT82C693 [Apollo Pro Plus] 0698 VT82C693A [Apollo Pro133 AGP] 0709 VX11 Standard Host Bridge 070a VX11 PCI Express Root Port 070b VX11 PCI Express Root Port 070c VX11 PCI Express Root Port 070d VX11 PCI Express Root Port 070e VX11 PCI Express Root Port 0926 VT82C926 [Amazon] 1000 VT82C570MV 1106 VT82C570MV 1122 VX800/VX820 Chrome 9 HC3 Integrated Graphics 1204 K8M800 Host Bridge 1208 PT890 Host Bridge 1238 K8T890 Host Bridge 1258 PT880 Host Bridge 1259 CN333/CN400/PM880 Host Bridge 1269 KT880 Host Bridge 1282 K8T800Pro Host Bridge 1290 K8M890 Host Bridge 1293 PM896 Host Bridge 1296 P4M800 Host Bridge 1308 PT894 Host Bridge 1314 CN700/VN800/P4M800CE/Pro Host Bridge 1324 CX700/VX700-Series Error Reporting 1327 P4M890 Host Bridge 1336 K8M890CE Host Bridge 1340 PT900 Host Bridge 1351 VT3351 Host Bridge 1353 VX800/VX820 Error Reporting 1364 CN896/VN896/P4M900 Host Bridge 1409 VX855/VX875 Error Reporting 1410 VX900 Series Error Reporting 1571 VT82C576M/VT82C586 1595 VT82C595/97 [Apollo VP2/97] 1732 VT1732 [Envy24 II] PCI Multi-Channel Audio Controller 2106 VIA Rhine Family Fast Ethernet Adapter (VT6105) 2204 K8M800 Host Bridge 2208 PT890 Host Bridge 2238 K8T890 Host Bridge 2258 PT880 Host Bridge 2259 CN333/CN400/PM880 CPU Host Bridge 2269 KT880 Host Bridge 2282 K8T800Pro Host Bridge 2290 K8M890 Host Bridge 2293 PM896 Host Bridge 2296 P4M800 Host Bridge 2308 PT894 Host Bridge 2314 CN700/VN800/P4M800CE/Pro Host Bridge 2324 CX700/VX700-Series Host Interface Control 2327 P4M890 Host Bridge 2336 K8M890CE Host Bridge 2340 PT900 Host Bridge 2351 VT3351 Host Bridge 2353 VX800/VX820 Host Bus Control 2364 CN896/VN896/P4M900 Host Bridge 2409 VX855/VX875 Host Bus Control 2410 VX900 Series CPU Bus Controller 287a VT8251 PCI to PCI Bridge 287b VT8251 Host Bridge 287c VT8251 PCIE Root Port 287d VT8251 PCIE Root Port 287e VT8237/8251 Ultra VLINK Controller 3022 CLE266 3038 VT82xx/62xx/VX700/8x0/900 UHCI USB 1.1 Controller 0925 1234 onboard UHCI USB 1.1 Controller 1019 0985 P6VXA Motherboard 1019 0a81 L7VTA v1.0 Motherboard (KT400-8235) 1043 8080 A7V333 motherboard 1043 808c VT62xx USB1.1 4 port controller 1043 80a1 A7V8X-X motherboard 1043 80ed A7V600/K8V-X/A8V Deluxe motherboard 1106 3038 USB 1.1 UHCI controller 1179 0001 Magnia Z310 1234 0925 MVP3 USB Controller 1458 5004 GA-7VAX Mainboard 1462 5901 KT6 Delta-FIS2R (MS-6590) 1462 7020 K8T NEO 2 motherboard 1462 7094 K8T Neo2-F V2.0 1462 7120 KT4AV motherboard 1462 7181 K8MM3-V mainboard 147b 1407 KV8-MAX3 motherboard 182d 201d CN-029 USB2.0 4 port PCI Card # probably all K7VT2/4*/6 1849 3038 K7VT series Motherboards 19da a179 ZBOX nano VD01 1af4 1100 QEMU Virtual Machine 3040 VT82C586B ACPI 3043 VT86C100A [Rhine] 10bd 0000 VT86C100A Fast Ethernet Adapter 1106 0100 VT86C100A Fast Ethernet Adapter 1186 1400 DFE-530TX PCI Fast Ethernet Adapter (rev. A) 3044 VT6306/7/8 [Fire II(M)] IEEE 1394 OHCI Controller 0010 0001 IEEE 1394 4port DCST 1394-3+1B 1025 005a TravelMate 290 103c 2a20 Pavilion t3030.de Desktop PC 103c 2a3b Media Center PC m7590n 1043 808a A8V/A8N/P4P800/P5SD2 series motherboard 1043 81fe Motherboard 1458 1000 GA-7VT600-1394 Motherboard 1462 207d K8NGM2 series motherboard 1462 217d Aspire L250 1462 590d KT6 Delta-FIS2R (MS-6590) 1462 702d K8T NEO 2 motherboard 1462 971d MS-6917 153b 1146 Cameo DV Firewire controller 3050 VT82C596 Power Management 3051 VT82C596 Power Management 3053 VT6105M [Rhine-III] 1186 1404 DFE-530TX PCI Fast Ethernet Adapter (rev. D) 3057 VT82C686 [Apollo Super ACPI] 1019 0985 P6VXA Motherboard 1019 0987 K7VZA Motherboard 1043 8033 A7V Mainboard 1043 803e A7V-E Mainboard 1043 8040 A7M266 Mainboard 1043 8042 A7V133/A7V133-C Mainboard 1179 0001 Magnia Z310 3058 VT82C686 AC97 Audio Controller 0e11 0097 SoundMax Digital Integrated Audio 0e11 b194 Soundmax integrated digital audio 1019 0985 P6VXA Motherboard 1019 0987 K7VZA Motherboard 103c 1251 D9840-60001 [Brio BA410 Motherboard] 1043 1106 A7V133/A7V133-C Mainboard 1106 4511 Onboard Audio on EP7KXA 1106 aa03 VT1612A AC'97 Audio Controller 11d4 5348 AD1881A audio 1458 7600 Onboard Audio 1462 3091 MS-6309 Onboard Audio 1462 3092 MS-6309 v2.x Mainboard (VIA VT1611A codec) 1462 3300 MS-6330 Onboard Audio 1462 3400 MS-6340 (VT8363) motherboard 15dd 7609 Onboard Audio 3059 VT8233/A/8235/8237 AC97 Audio Controller 1019 0a81 L7VTA v1.0 Motherboard (KT400-8235) 1019 1841 M811 (VT8367/VT8235/VT6103) [KT333] motherboard 1019 1877 K8M800-M2 (V2.0) onboard audio 1043 8095 A7V8X Motherboard (Realtek ALC650 codec) 1043 80a1 A7V8X-X Motherboard 1043 80b0 A7V600/K8V-X/K8V Deluxe motherboard (ADI AD1980 codec [SoundMAX]) 1043 80f3 SK8V motherboard 1043 810d P5VD1-X (AD1888 codec [SoundMax]) 1043 812a A8V Deluxe motherboard (Realtek ALC850 codec) 10ec 8168 High Definition Audio 1106 3059 L7VMM2 Motherboard 1106 4161 K7VT2 motherboard 1106 4170 PCPartner P4M800-8237R Motherboard 1106 4552 Soyo KT-600 Dragon Plus (Realtek ALC 650) 1297 c160 FX41 motherboard (Realtek ALC650 codec) 1413 147b KV8 Pro motherboard onboard audio 1458 a002 GA-7VAX Onboard Audio (Realtek ALC650) 1462 0080 K8T NEO 2 motherboard 1462 3800 KT266 onboard audio 1462 5901 KT6 Delta-FIS2R (MS-6590) 1462 7181 K8MM3-V mainboard 147b 1407 KV8-MAX3 motherboard 1695 300c Realtek ALC655 audio on EP-8KRA series mainboard 16f3 4170 J7F2 motherboard 1734 1078 Amilo L7300T notebook 1849 0850 ASRock 775Dual-880 Pro onboard audio (Realtek ALC850) 1849 9739 P4VT8 Mainboard (C-Media CMI9739A codec) # probably all K7VT2/4*/6 1849 9761 K7VT series Motherboards 4005 4710 MSI K7T266 Pro2-RU (MSI-6380 v2) onboard audio (Realtek/ALC 200/200P) a0a0 01b6 AK77-8XN onboard audio a0a0 0342 AK86-L motherboard 3065 VT6102/VT6103 [Rhine-II] 1043 80a1 A7V8X-X Motherboard 1043 80ed A7V600-X Motherboard 1106 0102 VT6102/6103 [Rhine II] Ethernet Controller 1186 1400 DFE-530TX PCI Fast Ethernet Adapter (rev. A) 1186 1401 DFE-530TX PCI Fast Ethernet Adapter (rev. B) 1186 1402 DFE-530TX PCI Fast Ethernet Adapter (rev. B) 13b9 1421 LD-10/100AL PCI Fast Ethernet Adapter (rev.B) 1462 7061 MS-7061 1462 7181 K8MM3-V mainboard 147b 1c09 NV7 Motherboard 1695 3005 VT6103 # probably all K7VT2/4*/6 1849 3065 K7VT series Motherboards # This hosts more than just the Intel 537 codec, it also hosts PCtel (SIL33) and SmartLink (SIL34) codecs 3068 AC'97 Modem Controller 1462 309e MS-6309 Saturn Motherboard 3074 VT8233 PCI to ISA Bridge 1043 8052 VT8233A 3091 VT8633 [Apollo Pro266] 3099 VT8366/A/7 [Apollo KT266/A/333] 1019 1841 M811 (VT8367/VT8235/VT6103) [KT333] motherboard 1043 8064 A7V266-E Mainboard 1043 807f A7V333 Mainboard 1849 3099 K7VT2 motherboard 3101 VT8653 Host Bridge 3102 VT8662 Host Bridge 3103 VT8615 Host Bridge 3104 USB 2.0 EHCI-Compliant Host-Controller 0925 1234 onboard EHCI USB 2.0 Controller 1019 0a81 L7VTA v1.0 Motherboard (KT400-8235) 1043 808c A7V8X motherboard 1043 80a1 A7V8X-X motherboard rev 1.01 1043 80ed A7V600/K8V-X/A8V Deluxe motherboard 1106 3104 USB 2.0 EHCI controller 1297 f641 FX41 motherboard 1458 5004 GA-7VAX Mainboard 1462 5901 KT6 Delta-FIS2R (MS-6590) 1462 7020 K8T NEO 2 motherboard 1462 7094 K8T Neo2-F V2.0 1462 7120 KT4AV motherboard 1462 7181 K8MM3-V mainboard 147b 1407 KV8-MAX3 motherboard 182d 201d CN-029 USB 2.0 4 port PCI Card # probably all K7VT2/4*/6 1849 3104 K7VT series Motherboards 19da a179 ZBOX nano VD01 3106 VT6105/VT6106S [Rhine-III] 1106 0105 VT6106S [Rhine-III] 1186 1403 DFE-530TX PCI Fast Ethernet Adapter (rev. C) 1186 1405 DFE-520TX Fast Ethernet PCI Adapter 1186 1406 DFE-530TX+ rev F2 1186 1407 DFE-538TX 3108 K8M800/K8N800/K8N800A [S3 UniChrome Pro] 3109 VT8233C PCI to ISA Bridge 3112 VT8361 [KLE133] Host Bridge 3113 VPX/VPX2 PCI to PCI Bridge Controller 3116 VT8375 [KM266/KL266] Host Bridge 1297 f641 FX41 motherboard 3118 CN400/PM800/PM880/PN800/PN880 [S3 UniChrome Pro] 3119 VT6120/VT6121/VT6122 Gigabit Ethernet Adapter 3122 VT8623 [Apollo CLE266] integrated CastleRock graphics 3123 VT8623 [Apollo CLE266] 3128 VT8753 [P4X266 AGP] 3133 VT3133 Host Bridge 3142 VT6651 WiFi Adapter, 802.11b 3147 VT8233A ISA Bridge 1043 808c A7V333 motherboard 3148 P4M266 Host Bridge 3149 VIA VT6420 SATA RAID Controller 1043 80ed A7V600/K8V Deluxe/K8V-X/A8V Deluxe motherboard 1458 b003 GA-7VM400AM(F) Motherboard 1462 5901 KT6 Delta-FIS2R (MS-6590) 1462 7020 K8T Neo 2 Motherboard 1462 7094 K8T Neo2-F V2.0 1462 7181 K8MM3-V mainboard 147b 1407 KV8-MAX3 motherboard 147b 1408 KV7 1849 3149 K7VT6 motherboard a0a0 04ad AK86-L motherboard 3156 P/KN266 Host Bridge 3157 CX700/VX700 [S3 UniChrome Pro] 3164 VT6410 ATA133 RAID controller 1043 80f4 P4P800 Mainboard Deluxe ATX 1462 7028 915P/G Neo2 3168 P4X333/P4X400/PT800 AGP Bridge 1849 3168 P4VT8 Mainboard 3177 VT8235 ISA Bridge 1019 0a81 L7VTA v1.0 Motherboard (KT400-8235) 1019 1841 M811 (VT8367/VT8235/VT6103) [KT333] motherboard 1043 808c A7V8X motherboard 1043 80a1 A7V8X-X motherboard 1106 0000 KT4AV motherboard 1297 f641 FX41 motherboard 1458 5001 GA-7VAX Mainboard # probably all K7VT2/4*/6 1849 3177 K7VT series Motherboards 3178 ProSavageDDR P4N333 Host Bridge 3188 VT8385 [K8T800 AGP] Host Bridge 1043 80a3 K8V Deluxe/K8V-X motherboard 147b 1407 KV8-MAX3 motherboard 3189 VT8377 [KT400/KT600 AGP] Host Bridge 1043 807f A7V8X motherboard 1106 0000 KT4AV motherboard (KT400A) 1458 5000 GA-7VAX Mainboard # probably all K7VT2/4*/6 1849 3189 K7VT series Motherboards 31b0 VX11 Standard Host Bridge 31b1 VX11 Standard Host Bridge 31b2 VX11 DRAM Controller 31b3 VX11 Power Management Controller 31b4 VX11 I/O APIC 31b5 VX11 Scratch Device 31b7 VX11 Standard Host Bridge 31b8 VX11 PCI to PCI Bridge 3204 K8M800 Host Bridge 3205 VT8378 [KM400/A] Chipset Host Bridge 1458 5000 GA-7VM400M Motherboard 3208 PT890 Host Bridge 3213 VPX/VPX2 PCI to PCI Bridge Controller 3218 K8T800M Host Bridge 3227 VT8237 ISA bridge [KT600/K8T800/K8T890/CN700 South] 1043 80ed A7V600/K8V-X/A8V Deluxe motherboard 1106 3227 VT8237 ISA bridge 1458 5001 GA-7VT600 Motherboard 147b 1407 KV8-MAX3 motherboard 1849 3227 K7VT4 motherboard 3230 K8M890CE/K8N890CE [Chrome 9] 3238 K8T890 Host Bridge 3249 VT6421 IDE/SATA Controller 1106 3249 VT6421 IDE/SATA Controller 324a CX700/VX700 PCI to PCI Bridge 324b CX700/VX700 Host Bridge 324e CX700/VX700 Internal Module Bus 3253 VT6655 WiFi Adapter, 802.11a/b/g 3258 PT880 Host Bridge 3259 CN333/CN400/PM880 Host Bridge 3260 VIA Chrome9 HC IGP 3269 KT880 Host Bridge 3282 K8T800Pro Host Bridge 3287 VT8251 PCI to ISA Bridge 3288 VX900/VT8xxx High Definition Audio Controller 19da a179 ZBOX VD01 3290 K8M890 Host Bridge 3296 P4M800 Host Bridge 3324 CX700/VX700-Series DRAM Bus Control 3327 P4M890 Host Bridge 3336 K8M890CE Host Bridge 3337 VT8237A PCI to ISA Bridge 3340 PT900 Host Bridge 3343 P4M890 [S3 UniChrome Pro] 3344 CN700/P4M800 Pro/P4M800 CE/VN800 Graphics [S3 UniChrome Pro] 3349 VT8251 AHCI/SATA 4-Port Controller 3351 VT3351 Host Bridge 3353 VX800/820 PCI to PCI Bridge 3364 CN896/VN896/P4M900 Host Bridge 3365 VT630x IEEE 1394 Host Controller [Fire II/M] 3371 CN896/VN896/P4M900 [Chrome 9 HC] 3372 VT8237S PCI to ISA Bridge 337a VT8237A PCI to PCI Bridge 337b VT8237A Host Bridge 3403 VT6315 Series Firewire Controller 1043 8374 M5A88-V EVO 1043 8384 P8P67 Deluxe Motherboard 3409 VX855/VX875 DRAM Bus Control 3410 VX900 Series DRAM Bus Control 19da a179 ZBOX nano VD01 3432 VL800/801 xHCI USB 3.0 Controller 3456 VX11 Standard Host Bridge 345b VX11 Miscellaneous Bus 3483 VL805/806 xHCI USB 3.0 Controller 3a01 VX11 Graphics [Chrome 645/640] 4149 VIA VT6420 (ATA133) Controller 4204 K8M800 Host Bridge 4208 PT890 Host Bridge 4238 K8T890 Host Bridge 4258 PT880 Host Bridge 4259 CN333/CN400/PM880 Host Bridge 4269 KT880 Host Bridge 4282 K8T800Pro Host Bridge 4290 K8M890 Host Bridge 4293 PM896 Host Bridge 4296 P4M800 Host Bridge 4308 PT894 Host Bridge 4314 CN700/VN800/P4M800CE/Pro Host Bridge 4324 CX700/VX700-Series Power Management and Testing Control 4327 P4M890 Host Bridge 4336 K8M890CE Host Bridge 4340 PT900 Host Bridge 4351 VT3351 Host Bridge 4353 VX800/VX820 Power Management Control 4364 CN896/VN896/P4M900 Host Bridge 4409 VX855/VX875 Power Management Control 4410 VX900 Series Power Management and Chip Testing Control 19da a179 ZBOX nano VD01 5030 VT82C596 ACPI [Apollo PRO] 5122 VX855/VX875 Chrome 9 HCM Integrated Graphics 5208 PT890 I/O APIC Interrupt Controller 5238 K8T890 I/O APIC Interrupt Controller 5287 VT8251 Serial ATA Controller 5290 K8M890 I/O APIC Interrupt Controller 5308 PT894 I/O APIC Interrupt Controller 5324 CX700M2/VX700/VX800/820-Series Serial ATA & EIDE-Controller 5327 P4M890 I/O APIC Interrupt Controller 5336 K8M890CE I/O APIC Interrupt Controller 5340 PT900 I/O APIC Interrupt Controller 5351 VT3351 I/O APIC Interrupt Controller 5353 VX800/VX820 APIC and Central Traffic Control 5364 CN896/VN896/P4M900 I/O APIC Interrupt Controller 5372 VT8237/8251 Serial ATA Controller 5409 VX855/VX875 APIC and Central Traffic Control 5410 VX900 Series APIC and Central Traffic Control 6100 VT85C100A [Rhine II] 6122 VN1000 Graphics [Chrome 520 IGP] 6287 SATA RAID Controller 6290 K8M890CE Host Bridge 6327 P4M890 Security Device 6353 VX800/VX820 Scratch Registers 6364 CN896/VN896/P4M900 Security Device 6409 VX855/VX875 Scratch Registers 6410 VX900 Series Scratch Registers 19da a179 ZBOX nano VD01 7122 VX900 Graphics [Chrome9 HD] 7204 K8M800 Host Bridge 7205 KM400/KN400/P4M800 [S3 UniChrome] 1458 d000 Gigabyte GA-7VM400(A)M(F) Motherboard 1462 7061 MS-7061 7208 PT890 Host Bridge 7238 K8T890 Host Bridge 7258 PT880 Host Bridge 7259 CN333/CN400/PM880 Host Bridge 7269 KT880 Host Bridge 7282 K8T800Pro Host Bridge 7290 K8M890 Host Bridge 7293 PM896 Host Bridge 7296 P4M800 Host Bridge 7308 PT894 Host Bridge 7314 CN700/VN800/P4M800CE/Pro Host Bridge 7324 CX700/VX700-Series North-South Module Interface Control 7327 P4M890 Host Bridge 7336 K8M890CE Host Bridge 7340 PT900 Host Bridge 7351 VT3351 Host Bridge 7353 VX800/VX820 North-South Module Interface Control 7364 CN896/VN896/P4M900 Host Bridge 7409 VX855/VX875 North-South Module Interface Control 7410 VX900 Series North-South Module Interface Control 19da a179 ZBOX nano VD01 8231 VT8231 [PCI-to-ISA Bridge] 8235 VT8235 ACPI 8305 VT8363/8365 [KT133/KM133 AGP] 8324 CX700/VX700-Series Bus Control and Power Management 8353 VX800/VX820 Bus Control and Power Management 8391 VT8371 [KX133 AGP] 8400 MVP4 8409 VX855/VX875 Bus Control and Power Management 8410 VX900 Series Bus Control and Power Management 19da a179 ZBOX VD01 8500 KLE133/PLE133/PLE133T 8501 VT8501 [Apollo MVP4 AGP] 8596 VT82C596 [Apollo PRO AGP] 8597 VT82C597 [Apollo VP3 AGP] 8598 VT82C598/694x [Apollo MVP3/Pro133x AGP] 1019 0985 P6VXA Motherboard 8601 VT8601 [Apollo ProMedia AGP] 8605 VT8605 [PM133 AGP] 8691 VT82C691 [Apollo Pro] 8693 VT82C693 [Apollo Pro Plus] PCI Bridge 8a25 PL133/PL133T [S3 ProSavage] 8a26 KL133/KL133A/KM133/KM133A [S3 ProSavage] 8d01 PN133/PN133T [S3 Twister] 8d04 KM266/P4M266/P4M266A/P4N266 [S3 ProSavageDDR] 9001 VX900 Series Serial-ATA Controller 9082 Standard AHCI 1.0 SATA Controller 9140 HDMI Audio Device 9201 USB3.0 Controller 9380 Ncore Coprocessor for Centaur CNS 9530 VX800/820/900 Series Secure Digital Memory Card Controller 95d0 VX800/820/900 Series SDIO Host Controller a208 PT890 PCI to PCI Bridge Controller a238 K8T890 PCI to PCI Bridge Controller a327 P4M890 PCI to PCI Bridge Controller a353 VX8xx/900 Series South-North Module Interface Control a364 CN896/VN896/P4M900 PCI to PCI Bridge Controller a409 VX855/VX875/VX900 Series USB Device Controller a410 VX900 Series PCI Express Root Port 0 b091 VT8633 [Apollo Pro266 AGP] b099 VT8366/A/7 [Apollo KT266/A/333 AGP] b101 VT8653 AGP Bridge b102 VT8362 AGP Bridge b103 VT8615 AGP Bridge b112 VT8361 [KLE133] AGP Bridge b113 VPX/VPX2 I/O APIC Interrupt Controller b115 VT8363/8365 [KT133/KM133] PCI Bridge b168 VT8235 PCI Bridge b188 VT8237/8251 PCI bridge [K8M890/K8T800/K8T890 South] 147b 1407 KV8-MAX3 motherboard b198 VT8237/CX700/VX700-Series PCI to PCI Bridge b213 VPX/VPX2 I/O APIC Interrupt Controller b353 VX855/VX875/VX900 PCI to PCI Bridge b410 VX900 Series PCI Express Root Port 1 b999 [K8T890 North / VT8237 South] PCI Bridge c208 PT890 PCI to PCI Bridge Controller c238 K8T890 PCI to PCI Bridge Controller c327 P4M890 PCI to PCI Bridge Controller c340 PT900 PCI to PCI Bridge Controller c353 VX800/820-Series PCI-Express Root (PCI-to-PCI Virtual Bridge) c364 CN896/VN896/P4M900 PCI to PCI Bridge Controller c409 VX855/VX875 EIDE Controller c410 VX900 Series PCI Express Root Port 2 d104 VT8237R USB UDCI Controller d208 PT890 PCI to PCI Bridge Controller d213 VPX/VPX2 PCI to PCI Bridge Controller d238 K8T890 PCI to PCI Bridge Controller d340 PT900 PCI to PCI Bridge Controller d410 VX900 Series PCI Express Root Port 3 e208 PT890 PCI to PCI Bridge Controller e238 K8T890 PCI to PCI Bridge Controller e340 PT900 PCI to PCI Bridge Controller e353 VX800/820-Series PCI-Express Root Port 0 e410 VX900 Series PCI Express Physical Layer Electrical Sub-block f208 PT890 PCI to PCI Bridge Controller f238 K8T890 PCI to PCI Bridge Controller f340 PT900 PCI to PCI Bridge Controller f353 VX800/820-Series PCI-Express Root Port 1 f410 VX900 Series PCI UART Port 0-3 1107 Stratus Computers 0576 VIA VT82C570MV [Apollo] (Wrong vendor ID!) 1108 Proteon, Inc. 0100 p1690plus_AA 0101 p1690plus_AB 0105 P1690Plus 0108 P1690Plus 0138 P1690Plus 0139 P1690Plus 013c P1690Plus 013d P1690Plus 1109 Cogent Data Technologies, Inc. 1400 EM110TX [EX110TX] 110a Siemens AG 0002 Pirahna 2-port 0005 Tulip controller, power management, switch extender 0006 FSC PINC (I/O-APIC) 0015 FSC Multiprocessor Interrupt Controller 001d FSC Copernicus Management Controller 007b FSC Remote Service Controller, mailbox device 007c FSC Remote Service Controller, shared memory device 007d FSC Remote Service Controller, SMIC device 2101 HST SAPHIR V Primary PCI (ISDN/PMx) # Superfastcom-PCI (Commtech, Inc.) or DSCC4 WAN Adapter 2102 DSCC4 PEB/PEF 20534 DMA Supported Serial Communication Controller with 4 Channels 2104 Eicon Diva 2.02 compatible passive ISDN card # S30807-Q5474 3101 HiPath 4000 PCI card 3141 SIMATIC NET CP 5611 / 5621 3142 SIMATIC NET CP 5613 / 5614 3143 SIMATIC NET CP 1613 4021 SIMATIC NET CP 5512 (Profibus and MPI Cardbus Adapter) 4029 SIMATIC NET CP 5613 A2 110a 4029 SIMATIC NET CP 5613 A2 110a c029 SIMATIC NET CP 5614 A2 4035 SIMATIC NET CP 1613 A2 4036 SIMATIC NET CP 1616 4038 SIMATIC NET CP 1604 4069 SIMATIC NET CP 5623 110a 4069 SIMATIC NET CP 5623 110a c069 SIMATIC NET CP 5624 407c SIMATIC NET CP 5612 407d SIMATIC NET CP 5613 A3 407e SIMATIC NET CP 5622 4083 SIMATIC NET CP 5614 A3 4084 SIMATIC NET CP 1626 4942 FPGA I-Bus Tracer for MBD 6120 SZB6120 110b Chromatic Research Inc. 0001 Mpact Media Processor 0004 Mpact 2 110c Mini-Max Technology, Inc. 110d Znyx Advanced Systems 110e CPU Technology 110f Ross Technology 1110 Powerhouse Systems 6037 Firepower Powerized SMP I/O ASIC 6073 Firepower Powerized SMP I/O ASIC 1111 Santa Cruz Operation # Also claimed to be RNS or Rockwell International, current PCISIG records list Osicom 1112 Osicom Technologies Inc 2200 FDDI Adapter 2300 Fast Ethernet Adapter 2340 4 Port Fast Ethernet Adapter 2400 ATM Adapter 1113 Accton Technology Corporation 1211 SMC2-1211TX 103c 1207 EN-1207D Fast Ethernet Adapter 1113 1211 EN-1207D Fast Ethernet Adapter 1216 EN-1216 Ethernet Adapter 1113 1216 EN1207F series PCI Fast Ethernet Adapter 1113 2220 EN2220A Cardbus Fast Ethernet Adapter 1113 2242 EN2242 10/100 Ethernet Mini-PCI Card 111a 1020 SpeedStream 1020 PCI 10/100 Ethernet Adaptor [EN-1207F-TX ?] 1217 EN-1217 Ethernet Adapter 5105 10Mbps Network card 9211 EN-1207D Fast Ethernet Adapter 1113 9211 EN-1207D Fast Ethernet Adapter 9511 21x4x DEC-Tulip compatible Fast Ethernet d301 CPWNA100 (Philips wireless PCMCIA) ec02 SMC 1244TX v3 ee23 SMCWPCIT-G 108Mbps Wireless PCI adapter 1114 Atmel Corporation 0506 at76c506 802.11b Wireless Network Adaptor 1115 3D Labs 1116 Data Translation 0022 DT3001 0023 DT3002 0024 DT3003 0025 DT3004 0026 DT3005 0027 DT3001-PGL 0028 DT3003-PGL 0051 DT322 0060 DT340 0069 DT332 80c2 DT3162 1117 Datacube, Inc 9500 Max-1C SVGA card 9501 Max-1C image processing 1118 Berg Electronics 1119 ICP Vortex Computersysteme GmbH 0000 GDT 6000/6020/6050 0001 GDT 6000B/6010 0002 GDT 6110/6510 0003 GDT 6120/6520 0004 GDT 6530 0005 GDT 6550 0006 GDT 6117/6517 0007 GDT 6127/6527 0008 GDT 6537 0009 GDT 6557/6557-ECC 000a GDT 6115/6515 000b GDT 6125/6525 000c GDT 6535 000d GDT 6555/6555-ECC 0100 GDT 6117RP/6517RP 0101 GDT 6127RP/6527RP 0102 GDT 6537RP 0103 GDT 6557RP 0104 GDT 6111RP/6511RP 0105 GDT 6121RP/6521RP 0110 GDT 6117RD/6517RD 0111 GDT 6127RD/6527RD 0112 GDT 6537RD 0113 GDT 6557RD 0114 GDT 6111RD/6511RD 0115 GDT 6121RD/6521RD 0118 GDT 6118RD/6518RD/6618RD 0119 GDT 6128RD/6528RD/6628RD 011a GDT 6538RD/6638RD 011b GDT 6558RD/6658RD 0120 GDT 6117RP2/6517RP2 0121 GDT 6127RP2/6527RP2 0122 GDT 6537RP2 0123 GDT 6557RP2 0124 GDT 6111RP2/6511RP2 0125 GDT 6121RP2/6521RP2 0136 GDT 6113RS/6513RS 0137 GDT 6123RS/6523RS 0138 GDT 6118RS/6518RS/6618RS 0139 GDT 6128RS/6528RS/6628RS 013a GDT 6538RS/6638RS 013b GDT 6558RS/6658RS 013c GDT 6533RS/6633RS 013d GDT 6543RS/6643RS 013e GDT 6553RS/6653RS 013f GDT 6563RS/6663RS 0166 GDT 7113RN/7513RN/7613RN 0167 GDT 7123RN/7523RN/7623RN 0168 GDT 7118RN/7518RN/7518RN 0169 GDT 7128RN/7528RN/7628RN 016a GDT 7538RN/7638RN 016b GDT 7558RN/7658RN 016c GDT 7533RN/7633RN 016d GDT 7543RN/7643RN 016e GDT 7553RN/7653RN 016f GDT 7563RN/7663RN 01d6 GDT 4x13RZ 01d7 GDT 4x23RZ 01f6 GDT 8x13RZ 01f7 GDT 8x23RZ 01fc GDT 8x33RZ 01fd GDT 8x43RZ 01fe GDT 8x53RZ 01ff GDT 8x63RZ 0210 GDT 6519RD/6619RD 0211 GDT 6529RD/6629RD 0260 GDT 7519RN/7619RN 0261 GDT 7529RN/7629RN 02ff GDT MAXRP 0300 GDT NEWRX 0301 GDT NEWRX2 111a Efficient Networks, Inc 0000 155P-MF1 (FPGA) 0002 155P-MF1 (ASIC) 0003 ENI-25P ATM 111a 0000 ENI-25p Miniport ATM Adapter 0005 SpeedStream (LANAI) 111a 0001 ENI-3010 ATM 111a 0009 ENI-3060 ADSL (VPI=0) 111a 0101 ENI-3010 ATM 111a 0109 ENI-3060CO ADSL (VPI=0) 111a 0809 ENI-3060 ADSL (VPI=0 or 8) 111a 0909 ENI-3060CO ADSL (VPI=0 or 8) 111a 0a09 ENI-3060 ADSL (VPI=<0..15>) 0007 SpeedStream ADSL 111a 1001 ENI-3061 ADSL [ASIC] 1020 SpeedStream PCI 10/100 Network Card 1203 SpeedStream 1023 Wireless PCI Adapter 111b Teledyne Electronic Systems 111c Tricord Systems Inc. 0001 Powerbis Bridge # now owned by Microchip Technology 111d Microsemi / PMC / IDT 0001 IDT77201/77211 155Mbps ATM SAR Controller [NICStAR] 0003 IDT77222/77252 155Mbps ATM MICRO ABR SAR Controller 0004 IDT77V252 155Mbps ATM MICRO ABR SAR Controller 0005 IDT77V222 155Mbps ATM MICRO ABR SAR Controller 8018 PES12N3A 12-lane 3-Port PCI Express Switch 801c PES24N3A PCI Express Switch 8028 PES4T4 PCI Express Switch 802b PES8T5A PCI Express Switch 802c PES16T4 PCI Express Switch 802d PES16T7 PCI Express Switch 802e PES24T6 PCI Express Switch 802f PES32T8 PCI Express Switch 8032 PES48T12 PCI Express Switch 8034 PES16/22/34H16 PCI Express Switch 8035 PES32H8 PCI Express Switch 8036 PES48H12 PCI Express Switch 8037 PES64H16 PCI Express Switch 8039 PES3T3 PCI Express Switch 803a PES4T4 PCI Express Switch 803c PES5T5 PCI Express Switch 803d PES6T5 PCI Express Switch 8048 PES8NT2 PCI Express Switch 8049 PES8NT2 PCI Express Switch 804a PES8NT2 PCI Express Internal NTB 804b PES8NT2 PCI Express External NTB 804c PES16NT2 PCI Express Switch 804d PES16NT2 PCI Express Switch 804e PES16NT2 PCI Express Internal NTB 804f PES16NT2 PCI Express External NTB 8058 PES12NT3 PCI Express Switch 8059 PES12NT3 PCI Express Switch 805a PES12NT3 PCI Express Internal NTB 805b PES12NT3 PCI Express External NTB 805c PES24NT3 PCI Express Switch 805d PES24NT3 PCI Express Switch 805e PES24NT3 PCI Express Internal NTB 805f PES24NT3 PCI Express External NTB 8060 PES16T4G2 PCI Express Gen2 Switch 8061 PES12T3G2 PCI Express Gen2 Switch 8068 PES6T6G2 PCI Express Gen2 Switch 806a PES24T3G2 PCI Express Gen2 Switch 14c1 000c 10G-PCIE2-8B2 806c PES16T4A/4T4G2 PCI Express Gen2 Switch 806e PES24T6G2 PCI Express Gen2 Switch 806f HIO524G2 PCI Express Gen2 Switch 8077 89HPES64H16G2 64-Lane 16-Port PCIe Gen2 System Interconnect Switch 8088 PES32NT8BG2 PCI Express Switch 1093 752f PXIe-8383mc Device 1093 7543 PXIe-8383mc System Host 1093 755c PXIe-8364 1093 755d PXIe-8374 1093 75ff PXIe-8383mc DMA 1093 7600 PXIe-8383mc DMA 1093 7602 PXIe-8384 # 32-lanes 24-ports Gen.2 808a 89HPES32NT24BG2 PCI Express Switch # 32-lanes 24-ports Gen.2 808c 89HPES32NT24AG2 PCI Express Switch 808e PES24NT24G2 PCI Express Switch 808f 89HPES32NT8AG2 32-Lane 8-Port PCIe Gen2 System Interconnect Switch with Non-Transparent Bridging 8090 89HPES16NT16G2 16-Lane 16-Port PCIe Gen2 System Interconnect Switch 8092 89HPES12NT12G2 12-Lane 12-Port PCIe Gen2 System Interconnect Switch 80cf F32P08xG3 [PCIe boot mode] 80d2 F32P08xG3 NVMe controller 111e Eldec 111f Precision Digital Images 4a47 Precision MX Video engine interface 5243 Frame capture bus interface # formerly EMC Corporation 1120 Dell EMC 2306 Unity Fibre Channel Controller 2501 Unity Ethernet Controller 2505 Unity Fibre Channel Controller 1121 Zilog 1122 Multi-tech Systems, Inc. 1123 Excellent Design, Inc. 1124 Leutron Vision AG 2581 Picport Monochrome 1125 Eurocore 1126 Vigra 1127 FORE Systems Inc 0200 ForeRunner PCA-200 ATM 0210 PCA-200PC 0250 ATM 0300 ForeRunner PCA-200EPC ATM 0310 ATM 0400 ForeRunnerHE ATM Adapter 1127 0400 ForeRunnerHE ATM 1129 Firmworks 112a Hermes Electronics Company, Ltd. # nee Linotype - Hell AG 112b Heidelberger Druckmaschinen AG 0001 SCU5 112c Zenith Data Systems 112d Ravicad 112e Infomedia Microelectronics Inc. 112f Dalsa Inc. 0000 MVC IC-PCI 0001 MVC IM-PCI Video frame grabber/processor 0004 PCDig Digital Image Capture 0008 PC-CamLink PCI framegrabber 1130 Computervision 1131 Philips Semiconductors 1561 USB 1.1 Host Controller 1775 c200 C2K onboard USB 1.1 host controller 1562 USB 2.0 Host Controller 1775 c200 C2K onboard USB 2.0 host controller 3400 SmartPCI56(UCB1500) 56K Modem 5400 TriMedia TM1000/1100 12ca 0000 BlueICE 5402 TriMedia TM1300 1244 0f00 Fritz!Card DSL 15eb 1300 DT1300 15eb 1302 DT1302 15eb 1304 DT1304 15eb 1305 DT1305 15eb 1306 PMCDT1306 15eb 1308 DT1308 15eb 1331 DT1301 with SAA7121 15eb 1337 DT1301 with SAA7127 15eb 2d3d X3D 15eb 7022 PTM1300 5405 TriMedia TM1500 1136 0005 LCP-1500 5406 TriMedia TM1700 540b PNX1005 Media Processor 1131 0020 PNXLite PCI Demo Board 7130 SAA7130 Video Broadcast Decoder 0000 4016 Behold TV 401 0000 4051 Behold TV 405 FM 0000 5051 Behold TV 505 RDS 0000 505b Behold TV 505 RDS 102b 48d0 Matrox CronosPlus 1048 226b ELSA EX-VISION 300TV 107d 6655 WinFast DTV1000S 1131 0000 SAA7130-based TV tuner card 1131 2001 10MOONS PCI TV CAPTURE CARD 1131 2005 Techcom (India) TV Tuner Card (SSD-TV-670) 1458 9006 GT-PS700 DVB-S tuner 1461 050c Nagase Sangyo TransGear 3000TV 1461 10ff AVerMedia DVD EZMaker 1461 2108 AverMedia AverTV/305 1461 2115 AverMedia AverTV Studio 305 153b 1152 Terratec Cinergy 200 TV 185b c100 Compro VideoMate TV PVR/FM 185b c901 Videomate DVB-T200 5168 0138 LifeView FlyVIDEO2000 5ace 5010 Behold TV 501 5ace 5050 Behold TV 505 FM 7133 SAA7131/SAA7133/SAA7135 Video Broadcast Decoder 0000 4091 Beholder BeholdTV 409 FM 0000 5071 Behold TV 507 RDS 0000 507b Behold TV 507 RDS 0000 5201 Behold TV Columbus 0070 6701 WinTV HVR-1110 1019 4cb5 Elitegroup ECS TVP3XP FM1236 Tuner Card (NTSC,FM) 1043 0210 FlyTV mini Asus Digimatrix 1043 4843 TV-FM 7133 1043 4845 TV-FM 7135 1043 4862 P7131 Dual 1043 4876 My Cinema-P7131 Hybrid 1131 0000 SAA713x-based TV tuner card 1131 2001 Proteus Pro [philips reference design] 1131 2018 Tiger reference design 1131 4ee9 MonsterTV Mobile 1131 7133 Pinnacle PCTV 301i 11bd 002b PCTV Stereo 11bd 002e PCTV 110i (saa7133) 12ab 0800 PURPLE TV 13c2 2804 Technotrend Budget T-3000 Hybrid 1421 0335 Instant TV DVB-T Cardbus 1421 1370 Instant TV (saa7135) 1435 7330 VFG7330 1435 7350 VFG7350 1458 9001 GC-PTV-TAF Hybrid TV card 1458 9002 GT-PTV-TAF-RH DVB-T/Analog TV/FM tuner 1458 9003 GT-PTV-AF-RH Analog TV/FM tuner 1458 9004 GT-P8000 DVB-T/Analog TV/FM tuner 1458 9005 GT-P6000 Analog TV/FM tuner 1458 9008 GT-P5100 Analog TV tuner 1461 1044 AVerTVHD MCE A180 1461 4836 M10D Hybrid DVBT 1461 861e M105 PAL/SECAM/NTSC/FM Tuner 1461 a14b AVerTV Studio 509 1461 a836 M115 DVB-T, PAL/SECAM/NTSC Tuner 1461 f01d DVB-T Super 007 1461 f31f Avermedia AVerTV GO 007 FM 1461 f936 Hybrid+FM PCI (rev A16D) 1462 6231 TV@nywhere Plus 1489 0214 LifeView FlyTV Platinum FM 14c0 1212 LifeView FlyTV Platinum Mini2 153b 1160 Cinergy 250 PCI TV 153b 1162 Terratec Cinergy 400 mobile 17de 7256 PlusTV All In One PI610 card 17de 7350 ATSC 110 Digital / Analog HDTV Tuner 17de 7352 ATSC 115 Digital / Analog HDTV Tuner 185b c100 VideoMate TV 185b c900 VideoMate T750 5168 0306 LifeView FlyDVB-T DUO 5168 0319 LifeView FlyDVB Trio 5168 0502 LifeView FlyDVB-T Duo CardBus 5168 0520 LifeView FlyDVB Trio CardBus 5168 1502 LifeView FlyTV CardBus 5168 2502 LifeView FlyDVB-T CardBus 5168 2520 LifeView FlyDVB-S Duo CardBus 5168 3502 LifeView FlyDVB-T Hybrid CardBus 5168 3520 LifeView FlyDVB Trio N CardBus 5ace 5030 Behold TV 503 FM 5ace 5090 Behold TV 509 FM 5ace 6090 Behold TV 609 FM 5ace 6091 Behold TV 609 FM 5ace 6092 Behold TV 609 RDS 5ace 6093 Behold TV 609 RDS 5ace 6190 Behold TV M6 5ace 6191 Behold TV M63 5ace 6193 Behold TV M6 Extra 5ace 6290 Behold TV H6 5ace 7090 Behold TV A7 5ace 7150 Behold TV H75 5ace 7151 Behold TV H75 5ace 7190 Behold TV H7 5ace 7191 Behold TV H7 5ace 7290 Behold TV T7 5ace 7591 Behold TV X7 5ace 7595 Behold TV X7 7134 SAA7134/SAA7135HL Video Broadcast Decoder 0000 4036 Behold TV 403 0000 4037 Behold TV 403 FM 0000 4071 Behold TV 407 FM 1019 4cb4 Elitegroup ECS TVP3XP FM1216 Tuner Card(PAL-BG,FM) 1043 0210 Digimatrix TV 1043 4840 TV-FM 7134 1043 4842 TV-FM 7134 1131 0000 SAA713x-based TV tuner card 1131 2004 EUROPA V3 reference design 1131 4e85 SKNet Monster TV 1131 6752 EMPRESS 11bd 002b PCTV Stereo 11bd 002d PCTV 300i DVB-T + PAL 1461 2c00 AverTV Hybrid+FM PCI 1461 9715 AVerTV Studio 307 1461 a70a Avermedia AVerTV 307 1461 a70b AverMedia M156 / Medion 2819 1461 d6ee Cardbus TV/Radio (E500) 1471 b7e9 AVerTV Cardbus plus 153b 1142 Terratec Cinergy 400 TV 153b 1143 Terratec Cinergy 600 TV 153b 1158 Terratec Cinergy 600 TV MK3 1540 9524 ProVideo PV952 16be 0003 Medion 7134 185b c200 Compro VideoMate Gold+ Pal 185b c900 Videomate DVB-T300 1894 a006 KNC One TV-Station DVR 1894 fe01 KNC One TV-Station RDS / Typhoon TV Tuner RDS 5168 0138 FLY TV PRIME 34FM 5168 0300 FlyDVB-S 5ace 5070 Behold TV 507 FM 5ace 6070 Behold TV 607 FM 5ace 6071 Behold TV 607 FM 5ace 6072 Behold TV 607 RDS 5ace 6073 Behold TV 607 RDS 7145 SAA7145 7146 SAA7146 110a 0000 Fujitsu/Siemens DVB-C card rev1.5 110a ffff Fujitsu/Siemens DVB-C card rev1.5 1124 2581 Leutron Vision PicPort 1131 4f56 KNC1 DVB-S Budget 1131 4f60 Fujitsu-Siemens Activy DVB-S Budget Rev AL 1131 4f61 Activy DVB-S Budget Rev GR 1131 5f61 Activy DVB-T Budget 114b 2003 DVRaptor Video Edit/Capture Card 1159 0040 MuTech M-Vision 500 (MV-500 rev. E) 1159 0050 MuTech M-Vision 500 (MV-500 rev. F) 11bd 0006 DV500 Overlay 11bd 000a DV500 Overlay 11bd 000f DV500 Overlay 13c2 0000 Siemens/Technotrend/Hauppauge DVB card rev1.3 or rev1.5 13c2 0001 Technotrend/Hauppauge DVB card rev1.3 or rev1.6 13c2 0002 Technotrend/Hauppauge DVB card rev2.1 13c2 0003 Technotrend/Hauppauge DVB card rev2.1 13c2 0004 Technotrend/Hauppauge DVB card rev2.1 13c2 0006 Technotrend/Hauppauge DVB card rev1.3 or rev1.6 13c2 0008 Technotrend/Hauppauge DVB-T 13c2 000a Octal/Technotrend DVB-C for iTV 13c2 000e Technotrend/Hauppauge DVB card rev2.3 13c2 1003 Technotrend-Budget/Hauppauge WinTV-NOVA-S DVB card 13c2 1004 Technotrend-Budget/Hauppauge WinTV-NOVA-C DVB card 13c2 1005 Technotrend-Budget/Hauppauge WinTV-NOVA-T DVB card 13c2 100c Technotrend-Budget/Hauppauge WinTV-NOVA-CI DVB card 13c2 100f Technotrend-Budget/Hauppauge WinTV-NOVA-CI DVB card 13c2 1010 DVB C-1500 13c2 1011 Technotrend-Budget/Hauppauge WinTV-NOVA-T DVB card 13c2 1012 DVB T-1500 13c2 1013 SATELCO Multimedia DVB 13c2 1016 WinTV-NOVA-SE DVB card 13c2 1018 DVB S-1401 13c2 1019 S2-3200 13c2 1102 Technotrend/Hauppauge DVB card rev2.1 153b 1155 Cinergy 1200 DVB-S 153b 1156 Cinergy 1200 DVB-C 153b 1157 Cinergy 1200 DVB-T 153b 1176 Cinergy 1200 DVB-C (MK3) 1894 0020 KNC One DVB-C V1.0 1894 0023 TV-Station DVB-C plus 1894 0054 TV-Station DVB-S 7160 SAA7160 1458 9009 E8000 DVB-T/Analog TV/FM tuner 1461 1455 AVerTV Hybrid Speedy PCI-E (H788) 7162 SAA7162 11bd 0101 Pinnacle PCTV 7010iX TV Card 7164 SAA7164 0070 8800 WinTV HVR-2250 0070 8810 WinTV HVR-2250 0070 8851 WinTV HVR-2250 0070 8853 WinTV HVR-2250 0070 8880 WinTV HVR-2250 0070 8891 WinTV HVR-2250 0070 88a0 WinTV HVR-2250 0070 88a1 WinTV HVR-2250 0070 8900 WinTV HVR-2200 0070 8901 WinTV HVR-2200 0070 8940 WinTV HVR-2200 (submodel 89619) 0070 8951 WinTV HVR-2200 0070 8953 WinTV HVR-2200 0070 8980 WinTV HVR-2200 0070 8991 WinTV HVR-2200 0070 8993 WinTV HVR-2200 0070 89a0 WinTV HVR-2200 0070 89a1 WinTV HVR-2200 0070 f120 WinTV HVR-2205 0070 f123 WinTV HVR-2215 7231 SAA7231 5ace 8000 Behold TV H8 5ace 8001 Behold TV H8 5ace 8050 Behold TV H85 5ace 8051 Behold TV H85 5ace 8100 Behold TV A8 5ace 8101 Behold TV A8 5ace 8150 Behold TV A85 5ace 8151 Behold TV A85 5ace 8201 Behold TV T8 9730 SAA9730 Integrated Multimedia and Peripheral Controller 1131 0000 Integrated Multimedia and Peripheral Controller 1132 Mitel Corp. 1133 Dialogic Corporation 7701 Eiconcard C90 7711 Eiconcard C91 7901 EiconCard S90 7902 EiconCard S90 7911 EiconCard S91 7912 EiconCard S91 7921 Eiconcard S92 7941 EiconCard S94 7942 EiconCard S94 7943 EiconCard S94 7944 EiconCard S94 7945 Eiconcard S94 7948 Eiconcard S94 64bit/66MHz 9711 Eiconcard S91 V2 9911 Eiconcard S91 V2 9941 Eiconcard S94 V2 9a41 Eiconcard S94 PCIe b921 EiconCard P92 b922 EiconCard P92 b923 EiconCard P92 e001 Diva Pro 2.0 S/T e002 Diva 2.0 S/T PCI e003 Diva Pro 2.0 U e004 Diva 2.0 U PCI e005 Diva 2.01 S/T PCI e006 Diva CT S/T PCI e007 Diva CT U PCI e008 Diva CT Lite S/T PCI e009 Diva CT Lite U PCI e00a Diva ISDN+V.90 PCI e00b Diva ISDN PCI 2.02 e00c Diva 2.02 PCI U e00d Diva Pro 3.0 PCI e00e Diva ISDN+CT S/T PCI Rev 2 e010 Diva Server BRI-2M PCI 110a 0021 Fujitsu Siemens ISDN S0 e011 Diva Server BRI S/T Rev 2 e012 Diva Server 4BRI-8M PCI e013 4BRI 1133 1300 Diva V-4BRI-8 PCI v2 1133 e013 Diva 4BRI-8 PCI v2 e014 Diva Server PRI-30M PCI e015 Diva PRI PCI v2 e016 Diva Server Voice 4BRI PCI e017 Diva Server Voice 4BRI Rev 2 1133 e017 Diva Server Voice 4BRI-8M 2.0 PCI e018 BRI 1133 1800 Diva V-BRI-2 PCI v2 1133 e018 Diva BRI-2 PCI v2 e019 Diva Server Voice PRI Rev 2 1133 e019 Diva Server Voice PRI 2.0 PCI e01a Diva BRI-2FX PCI v2 e01b Diva Server Voice BRI-2M 2.0 PCI 1133 e01b Diva Server Voice BRI-2M 2.0 PCI e01c PRI 1133 1c01 Diva PRI/E1/T1-8 PCI v3 1133 1c02 Diva PRI/T1-24 PCI(e) v3 1133 1c03 Diva PRI/E1-30 PCI(e) v3 1133 1c04 Diva PRI/E1/T1-CTI PCI(e) v3 1133 1c05 Diva V-PRI/T1-24 PCI(e) v3 1133 1c06 Diva V-PRI/E1-30 PCI(e) v3 1133 1c07 Diva Server PRI/E1/T1-8 Cornet NQ 1133 1c08 Diva Server PRI/T1-24 Cornet NQ 1133 1c09 Diva Server PRI/E1-30 Cornet NQ 1133 1c0a Diva Server PRI/E1/T1 Cornet NQ 1133 1c0b Diva Server V-PRI/T1-24 Cornet NQ 1133 1c0c Diva Server V-PRI/E1-30 Cornet NQ e01e 2PRI 1133 1e01 Diva 2PRI/E1/T1-60 PCI v1 1133 e01e Diva V-2PRI/E1/T1-60 PCI v1 e020 4PRI 1133 2001 Diva 4PRI/E1/T1-120 PCI v1 1133 e020 Diva V-4PRI/E1/T1-120 PCI v1 e022 Analog-2 1133 2200 Diva V-Analog-2 PCI v1 1133 e022 Diva Analog-2 PCI v1 e024 Analog-4 1133 2400 Diva V-Analog-4 PCI v1 1133 e024 Diva Analog-4 PCI v1 e028 Analog-8 1133 2800 Diva V-Analog-8 PCI v1 1133 e028 Diva Analog-8 PCI v1 e02a Diva IPM-300 PCI v1 e02c Diva IPM-600 PCI v1 e02e 4BRI 1133 2e01 Diva V-4BRI-8 PCIe v2 1133 e02e Diva 4BRI-8 PCIe v2 e032 BRI 1133 3201 Diva V-BRI-2 PCIe v2 1133 e032 Diva BRI-2 PCIe v2 e034 Diva BRI-CTI PCI v2 1134 Mercury Computer Systems 0001 Raceway Bridge 0002 Dual PCI to RapidIO Bridge 000b POET Serial RapidIO Bridge 000d POET PSDMS Device 1135 FUJIFILM Business Innovation Corp. 0001 Printer controller 1136 Momentum Data Systems 0002 PCI-JTAG 1137 Cisco Systems Inc 0023 VIC 81 PCIe Upstream Port 0040 VIC PCIe Upstream Port 1137 004f VIC 1280 Dual 40Gb Mezzanine 1137 0084 VIC 1240 Dual 40Gb MLOM 1137 0085 VIC 1225 Dual 10Gb SFP+ PCIe 1137 00cd VIC 1285 Dual 40Gb QSFP+ PCIe 1137 00ce VIC 1225T Dual 10GBaseT PCIe 1137 012a VIC M4308 Dual 40Gb 1137 012c VIC 1340 Dual 40Gb MLOM 1137 012e VIC 1227 Dual 10Gb SFP+ PCIe 1137 0137 VIC 1380 Dual 40Gb Mezzanine 1137 014d VIC 1385 Dual 40Gb PCIe 0041 VIC PCIe Downstream Port 0042 VIC Management Controller 1137 0047 VIC P81E PCIe Management Controller 1137 0085 VIC 1225 PCIe Management Controller 1137 00cd VIC 1285 PCIe Management Controller 1137 00ce VIC 1225T PCIe Management Controller 1137 012e VIC 1227 PCIe Management Controller 1137 014d VIC 1385 PCIe Management Controller 1137 0217 VIC 1455 PCIe Management Controller 1137 0218 VIC 1457 PCIe Management Controller 0043 VIC Ethernet NIC 1137 0047 VIC P81E PCIe Ethernet NIC 1137 0048 VIC M81KR Mezzanine Ethernet NIC 1137 004f VIC 1280 Mezzanine Ethernet NIC 1137 0084 VIC 1240 MLOM Ethernet NIC 1137 0085 VIC 1225 PCIe Ethernet NIC 1137 00cd VIC 1285 PCIe Ethernet NIC 1137 00ce VIC 1225T PCIe Ethernet NIC 1137 012a VIC M4308 Ethernet NIC 1137 012c VIC 1340 MLOM Ethernet NIC 1137 012e VIC 1227 PCIe Ethernet NIC 1137 0137 VIC 1380 Mezzanine Ethernet NIC 1137 014d VIC 1385 PCIe Ethernet NIC 1137 015d VIC 1387 MLOM Ethernet NIC 1137 0215 VIC 1440 Mezzanine Ethernet NIC 1137 0216 VIC 1480 MLOM Ethernet NIC 1137 0217 VIC 1455 PCIe Ethernet NIC 1137 0218 VIC 1457 MLOM Ethernet NIC 1137 0219 VIC 1485 PCIe Ethernet NIC 1137 021a VIC 1487 MLOM Ethernet NIC 1137 024a VIC 1495 PCIe Ethernet NIC 1137 024b VIC 1497 MLOM Ethernet NIC 1137 02af VIC 1467 MLOM Ethernet NIC 1137 02b0 VIC 1477 MLOM Ethernet NIC 1137 02cf VIC 14425 MLOM Ethernet NIC 1137 02d0 VIC 14825 Mezzanine Ethernet NIC 1137 02db VIC 15231 MLOM Ethernet NIC 1137 02dc VIC 15411 MLOM Ethernet NIC 1137 02dd VIC 15428 MLOM Ethernet NIC 1137 02de VIC 15420 MLOM Ethernet NIC 1137 02df VIC 15230 MLOM Ethernet NIC 1137 02e0 VIC 15427 MLOM Ethernet NIC 1137 02e1 VIC 15422 Mezzanine Ethernet NIC 1137 02e4 VIC 15235 PCIe Ethernet NIC 1137 02e8 VIC 15238 MLOM Ethernet NIC 1137 02f2 VIC 15425 PCIe Ethernet NIC 1137 02f3 VIC 15237 MLOM Ethernet NIC 0044 VIC Ethernet NIC Dynamic 1137 0047 VIC P81E PCIe Ethernet NIC Dynamic 1137 0048 VIC M81KR Mezzanine Ethernet NIC Dynamic 1137 004f VIC 1280 Mezzanine Ethernet NIC Dynamic 1137 0084 VIC 1240 MLOM Ethernet NIC Dynamic 1137 0085 VIC 1225 PCIe Ethernet NIC Dynamic 1137 00cd VIC 1285 PCIe Ethernet NIC Dynamic 1137 00ce VIC 1225T PCIe Ethernet NIC Dynamic 1137 012a VIC M4308 Ethernet NIC Dynamic 1137 012c VIC 1340 MLOM Ethernet NIC Dynamic 1137 012e VIC 1227 PCIe Ethernet NIC Dynamic 1137 0137 VIC 1380 Mezzanine Ethernet NIC Dynamic 1137 014d VIC 1385 PCIe Ethernet NIC Dynamic 0045 VIC FCoE HBA 1137 0047 VIC P81E PCIe FCoE HBA 1137 0048 VIC M81KR Mezzanine FCoE HBA 1137 004f VIC 1280 Mezzanine FCoE HBA 1137 0084 VIC 1240 MLOM FCoE HBA 1137 0085 VIC 1225 PCIe FCoE HBA 1137 00cd VIC 1285 PCIe FCoE HBA 1137 00ce VIC 1225T PCIe FCoE HBA 1137 012a VIC M4308 FCoE HBA 1137 012c VIC 1340 MLOM FCoE HBA 1137 012e VIC 1227 PCIe FCoE HBA 1137 0137 VIC 1380 Mezzanine FCoE HBA 1137 014d VIC 1385 PCIe FCoE HBA 0046 VIC SCSI Controller 1137 012a VIC M4308 SCSI Controller 004e VIC 82 PCIe Upstream Port 0071 VIC SR-IOV VF 007a VIC 1300 PCIe Upstream Port 1137 012a VIC M4308 Dual 40Gb 1137 012c VIC 1340 Dual 40Gb MLOM 1137 0137 VIC 1380 Dual 40Gb Mezzanine 1137 014d VIC 1385 Dual 40Gb PCIe 00cf VIC Userspace NIC 1137 004f VIC 1280 Mezzanine Userspace NIC 1137 0084 VIC 1240 MLOM Userspace NIC 1137 0085 VIC 1225 PCIe Userspace NIC 1137 00cd VIC 1285 PCIe Userspace NIC 1137 00ce VIC 1225T PCIe Userspace NIC 1137 012a VIC M4308 Userspace NIC 1137 012c VIC 1340 MLOM Userspace NIC 1137 012e VIC 1227 PCIe Userspace NIC 1137 0137 VIC 1380 Mezzanine Userspace NIC 023e 1GigE I350 LOM 02b7 VIC SR-IOV Ethernet VF 1138 Ziatech Corporation 8905 8905 [STD 32 Bridge] 1139 Dynamic Pictures, Inc 0001 VGA Compatible 3D Graphics 113a FWB Inc 113b Network Computing Devices 113c Cyclone Microsystems, Inc. 0000 PCI-9060 i960 Bridge 0001 PCI-SDK [PCI i960 Evaluation Platform] 0911 PCI-911 [i960Jx-based Intelligent I/O Controller] 0912 PCI-912 [i960CF-based Intelligent I/O Controller] 0913 PCI-913 0914 PCI-914 [I/O Controller w/ secondary PCI bus] 113d Leading Edge Products Inc 113e Sanyo Electric Co - Computer Engineering Dept 113f Equinox Systems, Inc. 0808 SST-64P Adapter 1010 SST-128P Adapter 80c0 SST-16P DB Adapter 80c4 SST-16P RJ Adapter 80c8 SST-16P Adapter 8888 SST-4P Adapter 9090 SST-8P Adapter 1140 Intervoice Inc 1141 Crest Microsystem Inc 1142 Alliance Semiconductor Corporation 3210 AP6410 6422 ProVideo 6422 6424 ProVideo 6424 6425 ProMotion AT25 643d ProMotion AT3D 1143 NetPower, Inc 1144 Cincinnati Milacron 0001 Noservo controller 1145 Workbit Corporation 8007 NinjaSCSI-32 Workbit f007 NinjaSCSI-32 KME f010 NinjaSCSI-32 Workbit f012 NinjaSCSI-32 Logitec f013 NinjaSCSI-32 Logitec f015 NinjaSCSI-32 Melco f020 NinjaSCSI-32 Sony PCGA-DVD51 f021 NinjaPATA-32 Delkin Cardbus UDMA f024 NinjaPATA-32 Delkin Cardbus UDMA f103 NinjaPATA-32 Delkin Cardbus UDMA 1146 Force Computers 1147 Interface Corp # Nee Schneider & Koch 1148 SysKonnect 4000 FDDI Adapter 0e11 b03b Netelligent 100 FDDI DAS Fibre SC 0e11 b03c Netelligent 100 FDDI SAS Fibre SC 0e11 b03d Netelligent 100 FDDI DAS UTP 0e11 b03e Netelligent 100 FDDI SAS UTP 0e11 b03f Netelligent 100 FDDI SAS Fibre MIC 1148 5521 FDDI SK-5521 (SK-NET FDDI-UP) 1148 5522 FDDI SK-5522 (SK-NET FDDI-UP DAS) 1148 5541 FDDI SK-5541 (SK-NET FDDI-FP) 1148 5543 FDDI SK-5543 (SK-NET FDDI-LP) 1148 5544 FDDI SK-5544 (SK-NET FDDI-LP DAS) 1148 5821 FDDI SK-5821 (SK-NET FDDI-UP64) 1148 5822 FDDI SK-5822 (SK-NET FDDI-UP64 DAS) 1148 5841 FDDI SK-5841 (SK-NET FDDI-FP64) 1148 5843 FDDI SK-5843 (SK-NET FDDI-LP64) 1148 5844 FDDI SK-5844 (SK-NET FDDI-LP64 DAS) 4200 Token Ring adapter 4300 SK-9872 Gigabit Ethernet Server Adapter (SK-NET GE-ZX dual link) 1148 9821 SK-9821 Gigabit Ethernet Server Adapter (SK-NET GE-T) 1148 9822 SK-9822 Gigabit Ethernet Server Adapter (SK-NET GE-T dual link) 1148 9841 SK-9841 Gigabit Ethernet Server Adapter (SK-NET GE-LX) 1148 9842 SK-9842 Gigabit Ethernet Server Adapter (SK-NET GE-LX dual link) 1148 9843 SK-9843 Gigabit Ethernet Server Adapter (SK-NET GE-SX) 1148 9844 SK-9844 Gigabit Ethernet Server Adapter (SK-NET GE-SX dual link) 1148 9861 SK-9861 Gigabit Ethernet Server Adapter (SK-NET GE-SX Volition) 1148 9862 SK-9862 Gigabit Ethernet Server Adapter (SK-NET GE-SX Volition dual link) 1148 9871 SK-9871 Gigabit Ethernet Server Adapter (SK-NET GE-ZX) 1148 9872 SK-9872 Gigabit Ethernet Server Adapter (SK-NET GE-ZX dual link) 1259 2970 AT-2970SX Gigabit Ethernet Adapter 1259 2971 AT-2970LX Gigabit Ethernet Adapter 1259 2972 AT-2970TX Gigabit Ethernet Adapter 1259 2973 AT-2971SX Gigabit Ethernet Adapter 1259 2974 AT-2971T Gigabit Ethernet Adapter 1259 2975 AT-2970SX/2SC Gigabit Ethernet Adapter 1259 2976 AT-2970LX/2SC Gigabit Ethernet Adapter 1259 2977 AT-2970TX/2TX Gigabit Ethernet Adapter 4320 SK-98xx V2.0 Gigabit Ethernet Adapter [Marvell 88E8001] 1148 0121 Marvell RDK-8001 Adapter 1148 0221 Marvell RDK-8002 Adapter 1148 0321 Marvell RDK-8003 Adapter 1148 0421 Marvell RDK-8004 Adapter 1148 0621 Marvell RDK-8006 Adapter 1148 0721 Marvell RDK-8007 Adapter 1148 0821 Marvell RDK-8008 Adapter 1148 0921 Marvell RDK-8009 Adapter 1148 1121 Marvell RDK-8011 Adapter 1148 1221 Marvell RDK-8012 Adapter 1148 3221 SK-9521 V2.0 10/100/1000Base-T Adapter 1148 5021 SK-9821 V2.0 Gigabit Ethernet 10/100/1000Base-T Adapter 1148 5041 SK-9841 V2.0 Gigabit Ethernet 1000Base-LX Adapter 1148 5043 SK-9843 V2.0 Gigabit Ethernet 1000Base-SX Adapter 1148 5051 SK-9851 V2.0 Gigabit Ethernet 1000Base-SX Adapter 1148 5061 SK-9861 V2.0 Gigabit Ethernet 1000Base-SX Adapter 1148 5071 SK-9871 V2.0 Gigabit Ethernet 1000Base-ZX Adapter 1148 9521 SK-9521 10/100/1000Base-T Adapter 1259 2916 AT-2916T 4400 SK-9Dxx Gigabit Ethernet Adapter 4500 SK-9Mxx Gigabit Ethernet Adapter 9000 SK-9Sxx Gigabit Ethernet Server Adapter PCI-X [Marvell 88E8022] 1148 2100 SK-9S21 10/100/1000Base-T Server Adapter, PCI-X, Copper RJ-45 1148 2200 SK-9S22 10/100/1000Base-T Dual Port Server Adapter, PCI-X, 2 Copper RJ-45 1148 2210 SK-9P22 10/100/1000 Base-T Dual Port PMC card 1148 2220 TPMC-GBE-CO 1148 8100 SK-9S81 1000Base-SX Server Adapter,PCI-X, Fiber SX/LC 1148 8200 SK-9S82 1000Base-SX Dual Port Server Adapter, PCI-X, 2 Fiber SX/LC 1148 8210 SK-9P82 1000 Base-SX Dual Port PMC card 1148 8220 TPMC-GBE-FI 1148 9100 SK-9S91 1000Base-LX Server Adapter,PCI-X, Fiber LX/LC 1148 9200 SK-9S92 1000Base-LX Dual Port Server Adapter, PCI-X, 2 Fiber LX/LC 1259 2973 AT-2971SX v2 Gigabit Adapter 1259 2974 AT-2971T v2 Gigabit Adapter 1259 2978 AT-2971LX Gigabit Adapter 9843 [Fujitsu] Gigabit Ethernet 9e00 SK-9E21D 10/100/1000Base-T Adapter, Copper RJ-45 1148 2100 SK-9E21 Server Adapter 1148 21d0 SK-9E21D 10/100/1000Base-T Adapter 1148 2200 SK-9E22 Server Adapter 1148 8100 SK-9E81 Server Adapter 1148 8200 SK-9E82 Server Adapter 1148 9100 SK-9E91 Server Adapter 1148 9200 SK-9E92 Server Adapter 9e01 SK-9E21M 10/100/1000Base-T Adapter 1149 Win System Corporation 114a VMIC 5565 GE-IP PCI5565,PMC5565 Reflective Memory Node 5579 VMIPCI-5579 (Reflective Memory Card) 5587 VMIPCI-5587 (Reflective Memory Card) 6504 VMIC PCI 7755 FPGA 7587 VMIVME-7587 114b Canopus Co., Ltd 114c Annabooks 114d IC Corporation 114e Nikon Systems Inc 114f Digi International 0002 AccelePort EPC 0003 RightSwitch SE-6 0004 AccelePort Xem 0005 AccelePort Xr 0006 AccelePort Xr,C/X 0009 AccelePort Xr/J 000a AccelePort EPC/J 000c DataFirePRIme T1 (1-port) 000d SyncPort 2-Port (x.25/FR) 0011 AccelePort 8r EIA-232 (IBM) 0012 AccelePort 8r EIA-422 0013 AccelePort Xr 0014 AccelePort 8r EIA-422 0015 AccelePort Xem 0016 AccelePort EPC/X 0017 AccelePort C/X 001a DataFirePRIme E1 (1-port) 001b AccelePort C/X (IBM) 001c AccelePort Xr (SAIP) 001d DataFire RAS T1/E1/PRI 114f 0050 DataFire RAS E1 Adapter 114f 0051 DataFire RAS Dual E1 Adapter 114f 0052 DataFire RAS T1 Adapter 114f 0053 DataFire RAS Dual T1 Adapter 0023 AccelePort RAS 0024 DataFire RAS B4 ST/U 114f 0030 DataFire RAS BRI U Adapter 114f 0031 DataFire RAS BRI S/T Adapter 0026 AccelePort 4r 920 0027 AccelePort Xr 920 0028 ClassicBoard 4 0029 ClassicBoard 8 0034 AccelePort 2r 920 0035 DataFire DSP T1/E1/PRI cPCI 0040 AccelePort Xp 114f 0042 AccelePort 2p PCI 114f 0043 AccelePort 4p PCI 114f 0044 AccelePort 8p PCI 114f 0045 AccelePort 16p PCI 114f 004e AccelePort 32p PCI 0042 AccelePort 2p 0043 AccelePort 4p 0044 AccelePort 8p 0045 AccelePort 16p 004e AccelePort 32p 0070 Datafire Micro V IOM2 (Europe) 0071 Datafire Micro V (Europe) 0072 Datafire Micro V IOM2 (North America) 0073 Datafire Micro V (North America) 00b0 Digi Neo 4 00b1 Digi Neo 8 00c8 Digi Neo 2 DB9 00c9 Digi Neo 2 DB9 PRI 00ca Digi Neo 2 RJ45 00cb Digi Neo 2 RJ45 PRI 00cc Digi Neo 1 422 00cd Digi Neo 1 422 485 00ce Digi Neo 2 422 485 00d0 ClassicBoard 4 422 00d1 ClassicBoard 8 422 00f1 Digi Neo PCI-E 4 port 00f4 Digi Neo 4 (IBM version) 6001 Avanstar 1150 Thinking Machines Corp 1151 JAE Electronics Inc. 1152 Megatek 1153 Land Win Electronic Corp 1154 Melco Inc 1155 Pine Technology Ltd 1156 Periscope Engineering 1157 Avsys Corporation 1158 Voarx R & D Inc 3011 Tokenet/vg 1001/10m anylan 9050 Lanfleet/Truevalue 9051 Lanfleet/Truevalue 1159 MuTech Corporation 0001 MV-1000 0002 MV-1500 115a Harlequin Ltd 115b Parallax Graphics 115c Photron Ltd. 115d Xircom 0003 Cardbus Ethernet 10/100 1014 0181 10/100 EtherJet Cardbus Adapter 1014 1181 10/100 EtherJet Cardbus Adapter 1014 8181 10/100 EtherJet Cardbus Adapter 1014 9181 10/100 EtherJet Cardbus Adapter 115d 0181 Cardbus Ethernet 10/100 115d 0182 RealPort2 CardBus Ethernet 10/100 (R2BE-100) 115d 1181 Cardbus Ethernet 10/100 1179 0181 Cardbus Ethernet 10/100 8086 8181 EtherExpress PRO/100 Mobile CardBus 32 Adapter 8086 9181 EtherExpress PRO/100 Mobile CardBus 32 Adapter 0005 Cardbus Ethernet 10/100 1014 0182 10/100 EtherJet Cardbus Adapter 1014 1182 10/100 EtherJet Cardbus Adapter 115d 0182 Cardbus Ethernet 10/100 115d 1182 Cardbus Ethernet 10/100 0007 Cardbus Ethernet 10/100 1014 0182 10/100 EtherJet Cardbus Adapter 1014 1182 10/100 EtherJet Cardbus Adapter 115d 0182 Cardbus Ethernet 10/100 115d 1182 Cardbus Ethernet 10/100 000b Cardbus Ethernet 10/100 1014 0183 10/100 EtherJet Cardbus Adapter 115d 0183 Cardbus Ethernet 10/100 000c Mini-PCI V.90 56k Modem 000f Cardbus Ethernet 10/100 1014 0183 10/100 EtherJet Cardbus Adapter 115d 0183 Cardbus Ethernet 10/100 00d4 Mini-PCI K56Flex Modem 0101 Cardbus 56k modem 115d 1081 Cardbus 56k Modem 0103 Cardbus Ethernet + 56k Modem 1014 9181 Cardbus 56k Modem 1115 1181 Cardbus Ethernet 100 + 56k Modem 115d 1181 CBEM56G-100 Ethernet + 56k Modem 8086 9181 PRO/100 LAN + Modem56 CardBus 115e Peer Protocols Inc 115f Maxtor Corporation 1160 Megasoft Inc 1161 PFU Limited 1162 OA Laboratory Co Ltd 1163 Rendition 0001 Verite 1000 2000 Verite V2000/V2100/V2200 1092 2000 Stealth II S220 1164 Advanced Peripherals Technologies 1165 Imagraph Corporation 0001 Motion TPEG Recorder/Player with audio # nee ServerWorks 1166 Broadcom 0000 CMIC-LE 0005 CNB20-LE Host Bridge 0006 CNB20HE Host Bridge 0007 CNB20-LE Host Bridge 0008 CNB20HE Host Bridge 0009 CNB20LE Host Bridge 0010 CIOB30 0011 CMIC-HE 0012 CMIC-WS Host Bridge (GC-LE chipset) 0013 CNB20-HE Host Bridge 0014 CMIC-LE Host Bridge (GC-LE chipset) 0015 CMIC-GC Host Bridge 0016 CMIC-GC Host Bridge 0017 GCNB-LE Host Bridge 0031 HT1100 HPX0 HT Host Bridge 0036 BCM5785 [HT1000] PCI/PCI-X Bridge 0101 CIOB-X2 PCI-X I/O Bridge 0103 EPB PCI-Express to PCI-X Bridge 0104 BCM5785 [HT1000] PCI/PCI-X Bridge 0110 CIOB-E I/O Bridge with Gigabit Ethernet 0130 BCM5780 [HT2000] PCI-X bridge 0132 BCM5780 [HT2000] PCI-Express Bridge 1166 0132 HT2000 PCI-Express bridge 0140 HT2100 PCI-Express Bridge 0141 HT2100 PCI-Express Bridge 0142 HT2100 PCI-Express Bridge 0144 HT2100 PCI-Express Bridge 0200 OSB4 South Bridge 0201 CSB5 South Bridge 4c53 1080 CT8 mainboard 0203 CSB6 South Bridge 1734 1012 PRIMERGY RX/TX series 0205 BCM5785 [HT1000] Legacy South Bridge 0211 OSB4 IDE Controller 0212 CSB5 IDE Controller 1028 014a PowerEdge 1750 1028 810b PowerEdge 1650/2550 4c53 1080 CT8 mainboard 0213 CSB6 RAID/IDE Controller 1028 4134 PowerEdge 600SC 1028 c134 Poweredge SC600 1734 1012 PRIMERGY RX/TX series onboard IDE 0214 BCM5785 [HT1000] IDE 1028 0205 PowerEdge 2970 HT1000 IDE 0217 CSB6 IDE Controller 1028 4134 Poweredge SC600 021b HT1100 HD Audio 0220 OSB4/CSB5 OHCI USB Controller 4c53 1080 CT8 mainboard 0221 CSB6 OHCI USB Controller 1734 1012 PRIMERGY RX/TX series onboard OHCI 0223 BCM5785 [HT1000] USB 1028 0205 PowerEdge 2970 HT1000 USB Controller 1028 020b PowerEdge T605 HT1000 USB Controller 0225 CSB5 LPC bridge 0227 GCLE-2 Host Bridge 1734 1012 PRIMERGY RX/TX series 0230 CSB5 LPC bridge 4c53 1080 CT8 mainboard 0234 BCM5785 [HT1000] LPC 1028 0205 PowerEdge 2970 HT1000 LPC 1028 020b PowerEdge T605 HT1000 LPC 0235 BCM5785 [HT1000] XIOAPIC0-2 0238 BCM5785 [HT1000] WDTimer 0240 K2 SATA 0241 RAIDCore RC4000 0242 RAIDCore BC4000 024a BCM5785 [HT1000] SATA (Native SATA Mode) 1028 020b PowerEdge T605 onboard SATA Controller # The device starts as 024A, and changes to 024B if set to PATA mode in BIOS 024b BCM5785 [HT1000] SATA (PATA/IDE Mode) 1028 0205 PowerEdge 2970 HT1000 SATA controller 0406 HT1100 PCI-X Bridge 0408 HT1100 Legacy Device 040a HT1100 ISA-LPC Bridge 1028 0223 PowerEdge R905 HT1100 ISA-LPC Bridge 0410 HT1100 SATA Controller (Native SATA Mode) 0411 HT1100 SATA Controller (PATA / IDE Mode) 0412 HT1100 USB OHCI Controller 0414 HT1100 USB EHCI Controller 0416 HT1100 USB EHCI Controller (with Debug Port) 0420 HT1100 PCI-Express Bridge 0421 HT1100 SAS/SATA Controller 0422 HT1100 PCI-Express Bridge 1167 Mutoh Industries Inc 1168 Thine Electronics Inc 1169 Centre for Development of Advanced Computing # nee Polaris Communications 116a Luminex Software, Inc. 6100 Bus/Tag Channel 6800 Escon Channel 7100 Bus/Tag Channel 7800 Escon Channel 116b Connectware Inc 116c Intelligent Resources Integrated Systems 116d Martin-Marietta 116e Electronics for Imaging 116f Workstation Technology 1170 Inventec Corporation 1171 Loughborough Sound Images Plc 1172 Altera Corporation # Unknown card with Altera ACE EP1K50TC144-2 as the PCI interface and has 4 BNC inputs connected to 4 TL3016 Comparators and one TRS output connected to two LTC1650 DACs 0004 PF5102 board 00a7 Stratix V 0530 Stratix IV 646c KT-500/KT-521 board 1173 Adobe Systems, Inc 1174 Bridgeport Machines 1175 Mitron Computer Inc. 1176 SBE Incorporated 1177 Silicon Engineering 1178 Alfa, Inc. afa1 Fast Ethernet Adapter 1179 Toshiba Corporation 0102 Extended IDE Controller 0103 EX-IDE Type-B 010e PXP04 NVMe SSD 010f XG3 NVMe SSD Controller 0110 Cx5 NVMe SSD Controller 1028 1ffb Express Flash NVMe 960G (RI) U.2 (CD5) 1028 1ffc Express Flash NVMe 1.92T (RI) U.2 (CD5) 1028 1ffd Express Flash NVMe 3.84T (RI) U.2 (CD5) 1028 1ffe Express Flash NVMe 7.68T (RI) U.2 (CD5) 1179 0001 KIOXIA CM5-R series SSD 1179 0021 KIOXIA CD5 series SSD 1d49 4039 Thinksystem U.2 CM5 NVMe SSD 1d49 403a Thinksystem AIC CM5 NVMe SSD 0113 BG3 x2 NVMe SSD Controller (DRAM-less) 1179 0001 Toshiba KBG30ZMS128G 128GB NVMe SSD 0115 XG4 NVMe SSD Controller 0116 XG5 NVMe SSD Controller 1179 0001 XG5 NVMe SSD Controller 011a XG6 NVMe SSD Controller 0404 DVD Decoder card 0406 Tecra Video Capture device 0407 DVD Decoder card (Version 2) 0601 CPU to PCI bridge 1179 0001 Satellite Pro 0602 PCI to ISA bridge 0603 ToPIC95 PCI to CardBus Bridge for Notebooks 0604 PCI-Docking Host bridge 060a ToPIC95 1179 0001 Satellite Pro 060f ToPIC97 1179 0001 Satellite 4010 0617 ToPIC100 PCI to Cardbus Bridge with ZV Support 0618 CPU to PCI and PCI to ISA bridge 0701 FIR Port Type-O 0803 TC6371AF SD Host Controller 0804 TC6371AF SmartMedia Controller 0805 SD TypA Controller 0d01 FIR Port Type-DO 1179 0001 FIR Port Type-DO 9602 RS780/RS880 PCI to PCI bridge (int gfx) 117a A-Trend Technology 117b L G Electronics, Inc. 117c ATTO Technology, Inc. 002c ExpressSAS R380 002d ExpressSAS R348 0030 Ultra320 SCSI Host Adapter 117c 8013 ExpressPCI UL4D 117c 8014 ExpressPCI UL4S 117c 8027 ExpressPCI UL5D 117c 802f ExpressPCI UL5D Low Profile 0033 SAS Adapter 0041 ExpressSAS R30F 0042 ExpressSAS 6Gb/s SAS/SATA HBA 117c 0042 ExpressSAS H680 117c 0043 ExpressSAS H608 117c 0044 ExpressSAS H60F 117c 0045 ExpressSAS H6F0 117c 0046 ExpressSAS H644 117c 004f ExpressSAS M608 117c 0057 ExpressSAS M680 117c 0058 ExpressSAS M644 117c 0059 ExpressSAS W608 117c 005a ExpressSAS W680 117c 005b ExpressSAS W644 0049 ExpressSAS 6Gb SAS/SATA RAID Adapter 117c 0049 ExpressSAS R680 117c 004a ExpressSAS R608 117c 004b ExpressSAS R60F 117c 004c ExpressSAS R6F0 117c 004d ExpressSAS R644 117c 004e ExpressSAS R648 0064 Celerity FC 16Gb/s Gen 5 Fibre Channel HBA 117c 0063 Celerity FC-161E 117c 0064 Celerity FC-162E 117c 0065 Celerity FC-164E 0094 Celerity FC 16/32Gb/s Gen 6 Fibre Channel HBA 117c 0094 Celerity FC-162P 117c 00a0 Celerity FC-161P 117c 00a1 Celerity FC-164P 117c 00a2 Celerity FC-321E 117c 00a3 Celerity FC-322E 117c 00ac Celerity FC-324E 00bb Celerity FC 32/64Gb/s Gen 7 Fibre Channel HBA 117c 00bc Celerity FC-321P 117c 00bd Celerity FC-322P 117c 00be Celerity FC-324P 117c 00c9 Celerity FC-641E 117c 00ca Celerity FC-642E 00c5 ExpressNVM PCIe Gen4 Switch 117c 00c6 ExpressNVM S48F PCIe Gen4 117c 00c7 ExpressNVM S468 PCIe Gen4 00e6 ExpressSAS GT 12Gb/s SAS/SATA HBA 117c 00c0 ExpressSAS H1280 GT 117c 00c1 ExpressSAS H1208 GT 117c 00c2 ExpressSAS H1244 GT 117c 00c3 ExpressSAS H12F0 GT 117c 00c4 ExpressSAS H120F GT 8013 ExpressPCI UL4D 8014 ExpressPCI UL4S 8027 ExpressPCI UL5D 8070 ExpressSAS 12Gb/s SAS/SATA HBA 117c 0070 ExpressSAS H1280 117c 0071 ExpressSAS H1208 117c 0080 ExpressSAS H1244 8072 ExpressSAS 12Gb/s SAS/SATA HBA 117c 0072 ExpressSAS H12F0 117c 0073 ExpressSAS H120F 117c 0082 ExpressSAS H1288 117d Becton & Dickinson 117e T/R Systems 117f Integrated Circuit Systems 1180 Ricoh Co Ltd 0465 RL5c465 0466 RL5c466 0475 RL5c475 144d c006 vpr Matrix 170B4 CardBus bridge 0476 RL5c476 II 1014 0185 ThinkPad A/T/X Series 1014 0555 ThinkPad X41 1014 056c ThinkPad Z60t 1028 014f Latitude X300 laptop 1028 0188 Inspiron 6000 laptop 103c 30c0 Compaq 6710b 103c 30c1 Compaq 6910p 1043 1017 X58LE 1043 1237 A6J-Q008 1043 1967 V6800V 1043 1987 A4K and Z81K notebooks, possibly others ( mid-2005 machines ) 104d 80df Vaio PCG-FX403 104d 80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP 104d 814e VAIO GRZ390Z 10f7 8338 Panasonic CF-Y5 laptop 144d c005 X10 Laptop 144d c00c P30/P35 notebook 14ef 0220 PCD-RP-220S 17aa 201c ThinkPad X60/X60s 17aa 20c4 ThinkPad T61/R61 17aa 20c6 ThinkPad R61/T400 0477 RL5c477 0478 RL5c478 1014 0184 ThinkPad A30p 0511 R5C511 0522 R5C522 IEEE 1394 Controller 1014 01cf ThinkPad A30p 1043 1967 V6800V 0551 R5C551 IEEE 1394 Controller 144d c006 vpr Matrix 170B4 0552 R5C552 IEEE 1394 Controller 1014 0511 ThinkPad A/T/X Series 1028 014f Latitude X300 laptop 1028 0188 Inspiron 6000 laptop 1043 1237 A6J-Q008 1043 1757 M2400N laptop 144d c005 X10 Laptop 144d c00c P30/P35 notebook 17aa 201e ThinkPad X60/X60s 0554 R5C554 0575 R5C575 SD Bus Host Adapter 0576 R5C576 SD Bus Host Adapter 0592 R5C592 Memory Stick Bus Host Adapter 1025 0121 Aspire 5920G 1028 01d7 XPS M1210 1028 01f3 Inspiron 1420 1028 022f Inspiron 1525 103c 1521 HP EliteBook 8540w 103c 30b5 Presario V3242AU 103c 30b7 Presario V6133CL 103c 30cc Pavilion dv6700 103c 30cf Pavilion dv95xx/96xx/97xx/98xx series 1043 1017 X58LE 1043 1237 A6J-Q008 1043 1967 V6800V 104d 9035 VAIO VGN-FW11ZRU 144d c018 X20 IV 17aa 20ca ThinkPad T61/T400 0811 R5C811 0822 R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter 1014 0556 ThinkPad X40 / X41 / X60s / Z60t 1014 0598 ThinkPad Z60m 1025 0121 Aspire 5920G 1028 0188 Inspiron 6000 laptop 1028 01a2 Inspiron 9200 1028 01d7 XPS M1210 1028 01f3 Inspiron 1420 1028 022f Inspiron 1525 103c 03b5 Presario V3242AU 103c 30b7 Presario V6133CL 103c 30c1 Compaq 6910p 103c 30cc Pavilion dv6700 103c 30cf Pavilion dv9668eg Laptop 1043 1017 X58LE 1043 1237 A6J-Q008 1043 1967 V6800V 10f7 8338 Panasonic CF-Y5 laptop 144d c018 X20 IV 17aa 201d ThinkPad X60/X60s 17aa 20c7 ThinkPad T61 17aa 20c8 ThinkPad T400/W500 0832 R5C832 IEEE 1394 Controller 1025 0121 Aspire 5920G 1028 01d7 XPS M1210 1028 01f3 Inspiron 1420 1028 022f Inspiron 1525 1028 024d Latitude E4300 103c 30b5 Presario V3242AU 103c 30b7 Presario V6133CL 103c 30c1 Compaq 6910p 103c 30cc Pavilion dv6700 103c 30cf Pavilion dv9668eg Laptop 17aa 20c5 ThinkPad R61 17aa 20c7 ThinkPad R61 0841 R5C841 CardBus/SD/SDIO/MMC/MS/MSPro/xD/IEEE1394 0843 R5C843 MMC Host Controller 1025 0121 Aspire 5920G 1028 01d7 XPS M1210 1028 01f3 Inspiron 1420 1028 01f5 Inspiron 1501 1028 024f Latitude e6500 103c 03b5 Presario V3242AU 103c 1521 HP EliteBook 8540w 103c 30b7 Presario V6133CL 103c 30cf Pavilion dv9500/9600/9700 series 1043 1017 X58LE 1183 0843 Alienware Aurora m9700 0852 xD-Picture Card Controller 1025 0121 Aspire 5920G 1028 01f3 Inspiron 1420 1028 022f Inspiron 1525 103c 30b5 Presario V3242AU 103c 30b7 Presario V6133CL 103c 30cc Pavilion dv6700 103c 30cf Pavilion dv9668eg Laptop 1043 1967 V6800V 1180 0852 Pavilion 2410us 1324 10cf P7120 17aa 20cb ThinkPad T400 e230 R5U2xx (R5U230 / R5U231 / R5U241) [Memory Stick Host Controller] e476 CardBus bridge 1028 040a Latitude E6410 1028 040b Latitude E6510 e822 MMC/SD Host Controller 1028 040a Latitude E6410 1028 040b Latitude E6510 17aa 21cf ThinkPad T520 e823 PCIe SDXC/MMC Host Controller 17aa 21cf ThinkPad T520 e832 R5C832 PCIe IEEE 1394 Controller 1028 040a Latitude E6410 1028 040b Latitude E6510 17aa 21cf ThinkPad T520 e852 PCIe xD-Picture Card Controller 1181 Telmatics International 1183 Fujikura Ltd 1184 Forks Inc 1185 Dataworld International Ltd 1186 D-Link System Inc 1002 DL10050 Sundance Ethernet 1186 1002 DFE-550TX/FX 1186 1012 DFE-580TX 1025 AirPlus Xtreme G DWL-G650 Adapter 1026 AirXpert DWL-AG650 Wireless Cardbus Adapter 1043 AirXpert DWL-AG650 Wireless Cardbus Adapter 1300 RTL8139 Ethernet 1186 1300 DFE-538TX 10/100 Ethernet Adapter 1186 1301 DFE-530TX+ 10/100 Ethernet Adapter 1186 1303 DFE-528TX 10/100 Fast Ethernet PCI Adapter 1340 DFE-690TXD CardBus PC Card 1540 DFE-680TX 1541 DFE-680TXD CardBus PC Card 1561 DRP-32TXD Cardbus PC Card 3300 DWL-510 / DWL-610 802.11b [Realtek RTL8180L] 1186 3300 DWL-610 Wireless Cardbus Adapter 1186 3301 DWL-510 Wireless PCI Adapter 3a10 AirXpert DWL-AG650 Wireless Cardbus Adapter(rev.B) 3a11 AirXpert DWL-AG520 Wireless PCI Adapter(rev.B) 4000 DL2000-based Gigabit Ethernet 4001 DGE-550SX PCI-X Gigabit Ethernet Adapter 4200 DFE-520TX Fast Ethernet PCI Adapter 1186 1103 DFE-520TX Fast Ethernet PCI Adapter (rev. C1) 4300 DGE-528T Gigabit Ethernet Adapter 1186 4300 DGE-528T PCI Gigabit Ethernet Adapter # rev. B1; RealTek RTL8168E. 1186 4b10 DGE-560T PCI Express (x1) Gigabit Ethernet Adapter 4302 DGE-530T Gigabit Ethernet Adapter (rev.C1) [Realtek RTL8169] 4b00 DGE-560T PCI Express Gigabit Ethernet Adapter 4b01 DGE-530T Gigabit Ethernet Adapter (rev 11) 4b02 DGE-560SX PCI Express Gigabit Ethernet Adapter 4b03 DGE-550T Gigabit Ethernet Adapter V.B1 4c00 Gigabit Ethernet Adapter 1186 4c00 DGE-530T Gigabit Ethernet Adapter 8400 D-Link DWL-650+ CardBus PC Card 1187 Advanced Technology Laboratories, Inc. 1188 Shima Seiki Manufacturing Ltd. 1189 Matsushita Electronics Co Ltd 118a Hilevel Technology 118b Hypertec Pty Limited 118c Corollary, Inc 0014 PCIB [C-bus II to PCI bus host bridge chip] 1117 Intel 8-way XEON Profusion Chipset [Cache Coherency Filter] 118d BitFlow Inc 0001 Raptor-PCI framegrabber 0012 Model 12 Road Runner Frame Grabber 0014 Model 14 Road Runner Frame Grabber 0024 Model 24 Road Runner Frame Grabber 0044 Model 44 Road Runner Frame Grabber 0112 Model 12 Road Runner Frame Grabber 0114 Model 14 Road Runner Frame Grabber 0124 Model 24 Road Runner Frame Grabber 0144 Model 44 Road Runner Frame Grabber 0212 Model 12 Road Runner Frame Grabber 0214 Model 14 Road Runner Frame Grabber 0224 Model 24 Road Runner Frame Grabber 0244 Model 44 Road Runner Frame Grabber 0312 Model 12 Road Runner Frame Grabber 0314 Model 14 Road Runner Frame Grabber 0324 Model 24 Road Runner Frame Grabber 0344 Model 44 Road Runner Frame Grabber b04e Claxon CXP4 CoaXPress frame grabber 118e Hermstedt GmbH 118f Green Logic 1190 Tripace c731 TP-910/920/940 PCI Ultra(Wide) SCSI Adapter 1191 Artop Electronic Corp 0003 SCSI Cache Host Adapter 0004 ATP8400 0005 ATP850UF 0006 ATP860 NO-BIOS 0007 ATP860 0008 ATP865 NO-ROM 0009 ATP865 000a ATP867-A 000b ATP867-B 000d ATP8620 000e ATP8620 0011 ATP865-B 1191 0011 ACARD AEC-6280 8002 AEC6710 SCSI-2 Host Adapter 8010 AEC6712UW SCSI 8020 AEC6712U SCSI 8030 AEC6712S SCSI 8040 AEC6712D SCSI 8050 AEC6712SUW SCSI 8060 AEC6712 SCSI 8080 AEC67160 SCSI 8081 AEC67160S SCSI 808a AEC67162 2-ch. LVD SCSI 1192 Densan Company Ltd 1193 Zeitnet Inc. 0001 1221 0002 1225 1194 Toucan Technology 1195 Ratoc System Inc 1196 Hytec Electronics Ltd 1197 Gage Applied Sciences, Inc. 010c CompuScope 82G 8bit 2GS/s Analog Input Card 1198 Lambda Systems Inc 1199 Attachmate Corporation 0101 Advanced ISCA/PCI Adapter 119a Mind Share, Inc. 119b Omega Micro Inc. 1221 82C092G 119c Information Technology Inst. 119d Bug, Inc. Sapporo Japan 119e Fujitsu Microelectronics Ltd. 0001 FireStream 155 0003 FireStream 50 119f Bull HN Information Systems 1081 BXI Host Channel Adapter # BXI stands for Bull eXascale Interconnect 1101 BXI Host Channel Adapter v1.2 # BXI stands for Bull eXascale Interconnect 1121 BXI Host Channel Adapter v1.3 11a0 Convex Computer Corporation 11a1 Hamamatsu Photonics K.K. 11a2 Sierra Research and Technology 11a3 Deuretzbacher GmbH & Co. Eng. KG 11a4 Barco Graphics NV 11a5 Microunity Systems Eng. Inc 11a6 Pure Data Ltd. 11a7 Power Computing Corp. 11a8 Systech Corp. 11a9 InnoSys Inc. 4240 AMCC S933Q Intelligent Serial Card 11aa Actel # Nee Galileo Technology, Inc. 11ab Marvell Technology Group Ltd. 0100 88F3700 [Armada 3700 Family] ARM SoC 0110 88F60x0/88F70x0/88F80x0/CN913x ARM SoC 0146 GT-64010/64010A System Controller 0f53 88E6318 Link Street network controller 11ab MV88SE614x SATA II PCI-E controller 138f W8300 802.11 Adapter (rev 07) 1fa6 Marvell W8300 802.11 Adapter 1186 3b08 AirPlus G DWL-G630 Wireless Cardbus Adapter (rev.A1) 1fa7 88W8310 and 88W8000G [Libertas] 802.11g client chipset 1faa 88w8335 [Libertas] 802.11b/g Wireless 1385 4e00 WG511v2 54 Mbps Wireless PC Card 1385 6b00 WG311v3 802.11g Wireless PCI Adapter 1737 0040 WPC54G v5 802.11g Wireless-G Notebook Adapter 2211 88SB2211 PCI Express to PCI Bridge 2a01 88W8335 [Libertas] 802.11b/g Wireless 2a02 88W8361 [TopDog] 802.11n Wireless 07d1 3b02 DIR-615 rev. A1 Mini PCI Wireless Module 1385 7c00 WN511T RangeMax Next 300 Mbps Wireless PC Card 1385 7c01 WN511T RangeMax Next 300 Mbps Wireless Notebook Adapter 1385 7e00 WN311T RangeMax Next 300 Mbps Wireless PCI Adapter 1799 801b F5D8011 v2 802.11n N1 Wireless Notebook Card 2a08 88W8362e [TopDog] 802.11a/b/g/n Wireless 2a0a 88W8363 [TopDog] 802.11n Wireless 2a0c 88W8363 [TopDog] 802.11n Wireless 2a24 88W8363 [TopDog] 802.11n Wireless 2a2b 88W8687 [TopDog] 802.11b/g Wireless 2a30 88W8687 [TopDog] 802.11b/g Wireless 2a40 88W8366 [TopDog] 802.11n Wireless 2a41 88W8366 [TopDog] 802.11n Wireless 2a42 88W8366 [TopDog] 802.11n Wireless 2a43 88W8366 [TopDog] 802.11n Wireless 2a55 88W8864 [Avastar] 802.11ac Wireless 2b36 88W8764 [Avastar] 802.11n Wireless 2b38 88W8897 [AVASTAR] 802.11ac Wireless 2b40 88W8964 [Avastar] 802.11ac Wireless 4101 OLPC Cafe Controller Secure Digital Controller 4146 GT-64111 System Controller 4320 88E8001 Gigabit Ethernet Controller 1019 0f38 Marvell 88E8001 Gigabit Ethernet Controller (ECS) 1019 8001 Marvell 88E8001 Gigabit Ethernet Controller (ECS) 1043 173c Marvell 88E8001 Gigabit Ethernet Controller (Asus) 1043 811a Marvell 88E8001 Gigabit Ethernet Controller (Asus) 105b 0c19 Marvell 88E8001 Gigabit Ethernet Controller (Foxconn) 10b8 b452 EZ Card 1000 (SMC9452TXV.2) 11ab 0121 Marvell RDK-8001 11ab 0321 Marvell RDK-8003 11ab 1021 Marvell RDK-8010 11ab 4320 Marvell Yukon Gigabit Ethernet 10/100/1000Baset-T Constroller (Asus) 11ab 5021 Marvell Yukon Gigabit Ethernet 10/100/1000Base-T Controller (64 bit) 11ab 9521 Marvell Yukon Gigabit Ethernet 10/100/1000Base-T Controller (32 bit) 1458 e000 Marvell 88E8001 Gigabit Ethernet Controller (Gigabyte) 147b 1406 Marvell 88E8001 Gigabit Ethernet Controller (Abit) 15d4 0047 Marvell 88E8001 Gigabit Ethernet Controller (Iwill) 1695 9025 Marvell 88E8001 Gigabit Ethernet Controller (Epox) 17f2 1c03 Marvell 88E8001 Gigabit Ethernet Controller (Albatron) 270f 2803 Marvell 88E8001 Gigabit Ethernet Controller (Chaintech) 4340 88E8021 PCI-X IPMI Gigabit Ethernet Controller 4341 88E8022 PCI-X IPMI Gigabit Ethernet Controller 4342 88E8061 PCI-E IPMI Gigabit Ethernet Controller 4343 88E8062 PCI-E IPMI Gigabit Ethernet Controller 4344 88E8021 PCI-X IPMI Gigabit Ethernet Controller 4345 88E8022 PCI-X IPMI Gigabit Ethernet Controller 4346 88E8061 PCI-E IPMI Gigabit Ethernet Controller 4347 88E8062 PCI-E IPMI Gigabit Ethernet Controller 4c53 10d0 Telum ASLP10 PrAMC Gigabit Ethernet 4350 88E8035 PCI-E Fast Ethernet Controller 1179 0001 Marvell 88E8035 Fast Ethernet Controller (Toshiba) 11ab 3521 Marvell RDK-8035 1854 000d Marvell 88E8035 Fast Ethernet Controller (LGE) 1854 000e Marvell 88E8035 Fast Ethernet Controller (LGE) 1854 000f Marvell 88E8035 Fast Ethernet Controller (LGE) 1854 0011 Marvell 88E8035 Fast Ethernet Controller (LGE) 1854 0012 Marvell 88E8035 Fast Ethernet Controller (LGE) 1854 0016 Marvell 88E8035 Fast Ethernet Controller (LGE) 1854 0017 Marvell 88E8035 Fast Ethernet Controller (LGE) 1854 0018 Marvell 88E8035 Fast Ethernet Controller (LGE) 1854 0019 Marvell 88E8035 Fast Ethernet Controller (LGE) 1854 001c Marvell 88E8035 Fast Ethernet Controller (LGE) 1854 001e Marvell 88E8035 Fast Ethernet Controller (LGE) 1854 0020 Marvell 88E8035 Fast Ethernet Controller (LGE) 4351 88E8036 PCI-E Fast Ethernet Controller 107b 4009 Marvell 88E8036 Fast Ethernet Controller (Wistron) 10f7 8338 Marvell 88E8036 Fast Ethernet Controller (Panasonic) 1179 0001 Marvell 88E8036 Fast Ethernet Controller (Toshiba) 1179 ff00 Marvell 88E8036 Fast Ethernet Controller (Compal) 1179 ff10 Marvell 88E8036 Fast Ethernet Controller (Inventec) 11ab 3621 Marvell RDK-8036 13d1 ac12 Abocom EFE3K - 10/100 Ethernet Expresscard 161f 203d Marvell 88E8036 Fast Ethernet Controller (Arima) 1854 000d Marvell 88E8036 Fast Ethernet Controller (LGE) 1854 000e Marvell 88E8036 Fast Ethernet Controller (LGE) 1854 000f Marvell 88E8036 Fast Ethernet Controller (LGE) 1854 0011 Marvell 88E8036 Fast Ethernet Controller (LGE) 1854 0012 Marvell 88E8036 Fast Ethernet Controller (LGE) 1854 0016 Marvell 88E8036 Fast Ethernet Controller (LGE) 1854 0017 Marvell 88E8036 Fast Ethernet Controller (LGE) 1854 0018 Marvell 88E8036 Fast Ethernet Controller (LGE) 1854 0019 Marvell 88E8036 Fast Ethernet Controller (LGE) 1854 001c Marvell 88E8036 Fast Ethernet Controller (LGE) 1854 001e Marvell 88E8036 Fast Ethernet Controller (LGE) 1854 0020 Marvell 88E8036 Fast Ethernet Controller (LGE) 4352 88E8038 PCI-E Fast Ethernet Controller 4353 88E8039 PCI-E Fast Ethernet Controller 104d 902d VAIO VGN-NR120E 4354 88E8040 PCI-E Fast Ethernet Controller 1028 022f Inspiron 1525 144d c06a R730 Laptop 144d c072 Notebook N150P 4355 88E8040T PCI-E Fast Ethernet Controller 1179 ff50 Satellite P305D-S8995E 4356 88EC033 PCI-E Fast Ethernet Controller 4357 88E8042 PCI-E Fast Ethernet Controller 435a 88E8048 PCI-E Fast Ethernet Controller 4360 88E8052 PCI-E ASF Gigabit Ethernet Controller 1043 8134 Marvell 88E8052 Gigabit Ethernet Controller (Asus) 107b 4009 Marvell 88E8052 Gigabit Ethernet Controller (Wistron) 11ab 5221 Marvell RDK-8052 1458 e000 Marvell 88E8052 Gigabit Ethernet Controller (Gigabyte) 1462 052c Marvell 88E8052 Gigabit Ethernet Controller (MSI) 1849 8052 Marvell 88E8052 Gigabit Ethernet Controller (ASRock) a0a0 0509 Marvell 88E8052 Gigabit Ethernet Controller (Aopen) 4361 88E8050 PCI-E ASF Gigabit Ethernet Controller 107b 3015 Marvell 88E8050 Gigabit Ethernet Controller (Gateway) 11ab 5021 Marvell 88E8050 Gigabit Ethernet Controller (Intel) 8086 3063 D925XCVLK mainboard 8086 3439 Marvell 88E8050 Gigabit Ethernet Controller (Intel) 4362 88E8053 PCI-E Gigabit Ethernet Controller 103c 2a0d Marvell 88E8053 Gigabit Ethernet Controller (Asus) 1043 8142 Marvell 88E8053 Gigabit Ethernet controller PCIe (Asus) 109f 3197 Marvell 88E8053 Gigabit Ethernet Controller (Trigem) 10f7 8338 Marvell 88E8053 Gigabit Ethernet Controller (Panasonic) 10fd a430 Marvell 88E8053 Gigabit Ethernet Controller (SOYO) 1179 0001 Marvell 88E8053 Gigabit Ethernet Controller (Toshiba) 1179 ff00 Marvell 88E8053 Gigabit Ethernet Controller (Compal) 1179 ff10 Marvell 88E8053 Gigabit Ethernet Controller (Inventec) 11ab 5321 Marvell RDK-8053 1297 c240 Marvell 88E8053 Gigabit Ethernet Controller (Shuttle) 1297 c241 Marvell 88E8053 Gigabit Ethernet Controller (Shuttle) 1297 c242 Marvell 88E8053 Gigabit Ethernet Controller (Shuttle) 1297 c243 Marvell 88E8053 Gigabit Ethernet Controller (Shuttle) 1297 c244 Marvell 88E8053 Gigabit Ethernet Controller (Shuttle) 13d1 ac11 EGE5K - Giga Ethernet Expresscard 1458 e000 Marvell 88E8053 Gigabit Ethernet Controller (Gigabyte) 1462 058c Marvell 88E8053 Gigabit Ethernet Controller (MSI) 14c0 0012 Marvell 88E8053 Gigabit Ethernet Controller (Compal) 1558 04a0 Marvell 88E8053 Gigabit Ethernet Controller (Clevo) 15bd 1003 Marvell 88E8053 Gigabit Ethernet Controller (DFI) 161f 203c Marvell 88E8053 Gigabit Ethernet Controller (Arima) 161f 203d Marvell 88E8053 Gigabit Ethernet Controller (Arima) 1695 9029 Marvell 88E8053 Gigabit Ethernet Controller (Epox) 17f2 2c08 Marvell 88E8053 Gigabit Ethernet Controller (Albatron) 17ff 0585 Marvell 88E8053 Gigabit Ethernet Controller (Quanta) 1849 8053 Marvell 88E8053 Gigabit Ethernet Controller (ASRock) 1854 000b Marvell 88E8053 Gigabit Ethernet Controller (LGE) 1854 000c Marvell 88E8053 Gigabit Ethernet Controller (LGE) 1854 0010 Marvell 88E8053 Gigabit Ethernet Controller (LGE) 1854 0013 Marvell 88E8053 Gigabit Ethernet Controller (LGE) 1854 0014 Marvell 88E8053 Gigabit Ethernet Controller (LGE) 1854 0015 Marvell 88E8053 Gigabit Ethernet Controller (LGE) 1854 001a Marvell 88E8053 Gigabit Ethernet Controller (LGE) 1854 001b Marvell 88E8053 Gigabit Ethernet Controller (LGE) 1854 001d Marvell 88E8053 Gigabit Ethernet Controller (LGE) 1854 001f Marvell 88E8053 Gigabit Ethernet Controller (LGE) 1854 0021 Marvell 88E8053 Gigabit Ethernet Controller (LGE) 1854 0022 Marvell 88E8053 Gigabit Ethernet Controller (LGE) 270f 2801 Marvell 88E8053 Gigabit Ethernet Controller (Chaintech) a0a0 0506 Marvell 88E8053 Gigabit Ethernet Controller (Aopen) 4363 88E8055 PCI-E Gigabit Ethernet Controller 4364 88E8056 PCI-E Gigabit Ethernet Controller 1043 81f8 Motherboard 11ba 00ba 8056 Gigabit Ethernet Controller 4365 88E8070 based Ethernet Controller 4366 88EC036 PCI-E Gigabit Ethernet Controller 4367 88EC032 Ethernet Controller 4368 88EC034 Ethernet Controller 4369 88EC042 Ethernet Controller 436a 88E8058 PCI-E Gigabit Ethernet Controller 11ab 00ba Imac 8,1 Wired Ethernet Adapter 436b 88E8071 PCI-E Gigabit Ethernet Controller 436c 88E8072 PCI-E Gigabit Ethernet Controller 436d 88E8055 PCI-E Gigabit Ethernet Controller 4370 88E8075 PCI-E Gigabit Ethernet Controller 4380 88E8057 PCI-E Gigabit Ethernet Controller # AVB = "Audio Video Bridging" 4381 Yukon Optima 88E8059 [PCIe Gigabit Ethernet Controller with AVB] 1259 2803 AT-2814FX 1259 2804 AT-2874xx 4611 GT-64115 System Controller 4620 GT-64120/64120A/64121A System Controller 4801 GT-48001 5005 Belkin F5D5005 Gigabit Desktop Network PCI Card 5040 MV88SX5040 4-port SATA I PCI-X Controller 5041 MV88SX5041 4-port SATA I PCI-X Controller 5080 MV88SX5080 8-port SATA I PCI-X Controller 5081 MV88SX5081 8-port SATA I PCI-X Controller 5181 88f5181 [Orion-1] ARM SoC 5182 88f5182 [Orion-NAS] ARM SoC 5281 88f5281 [Orion-2] ARM SoC 6041 MV88SX6041 4-port SATA II PCI-X Controller 6042 88SX6042 PCI-X 4-Port SATA-II 6081 MV88SX6081 8-port SATA II PCI-X Controller 6101 88SE6101/6102 single-port PATA133 interface 1043 82e0 P5K PRO Motherboard 6121 88SE6111/6121 SATA II / PATA Controller # 6111: 1 SATA port; 6121: 2 SATA ports 11ab 6121 88SE6111/6121 1/2 port SATA II + 1 port PATA Controller 6141 88SE614x SATA II PCI-E controller 6145 88SE6145 SATA II PCI-E controller 6180 88F6180 [Kirkwood] ARM SoC 6192 88F6190/6192 [Kirkwood] ARM SoC 6281 88F6281 [Kirkwood] ARM SoC # This device ID was used for earlier chips. 6381 MV78xx0 [Discovery Innovation] ARM SoC 6440 88SE63x0 x1, 88SE6440 x4 PCIe SAS/SATA 3Gb/s RAID controller 6450 64560 System Controller 6460 MV64360/64361/64362 System Controller 6480 MV64460/64461/64462 System Controller 1775 c200 C2K CompactPCI single board computer 6485 MV64460/64461/64462 System Controller, Revision B 6560 88F6560 [Avanta] ARM SoC 6710 88F6710 [Armada 370] ARM SoC 6820 88F6820 [Armada 385] ARM SoC 6828 88F6828 [Armada 388] ARM SoC 6920 88F6920 [Armada 390] ARM SoC 7042 88SX7042 PCIe 4-port SATA-II controller 16b8 434b Tempo SATA E4P 7810 MV78100 [Discovery Innovation] ARM SoC 7820 MV78200 [Discovery Innovation] ARM SoC 7823 MV78230 [Armada XP] ARM SoC 7846 MV78460 [Armada XP] ARM SoC d40f Bobcat3 Ethernet Switch f003 GT-64010 Primary Image Piranha Image Generator 11ac Canon Information Systems Research Aust. 11ad Lite-On Communications Inc 0002 LNE100TX 11ad 0002 LNE100TX 11ad 0003 LNE100TX 11ad f003 LNE100TX 11ad ffff LNE100TX 1385 f004 FA310/TX LAN 10/100 PCI Ethernet Adapter 2646 f002 KNE110TX EtheRx Fast Ethernet c115 LNE100TX [Linksys EtherFast 10/100] 11ad c001 LNE100TX [ver 2.0] 2646 000b KNE111TX 11ae Aztech System Ltd 11af Avid Technology Inc. 0001 Cinema ee21 Digidesign DSP Farm ee40 Digidesign Audiomedia III ee60 Digidesign SampleCell II / II Plus 11b0 V3 Semiconductor Inc. 0002 V300PSC 0292 V292PBC [Am29030/40 Bridge] 0960 V96xPBC 880a Deltacast Delta-HD-22 c960 V96DPC 11b1 Apricot Computers 11b2 Eastman Kodak 11b3 Barr Systems Inc. 11b4 Leitch Technology International 11b5 Radstone Technology Plc 11b6 United Video Corp 11b7 Motorola 11b8 XPoint Technologies, Inc 0001 Quad PeerMaster 11b9 Pathlight Technology Inc. c0ed SSA Controller 11ba Videotron Corp 11bb Pyramid Technology 11bc Network Peripherals Inc 0001 NP-PCI 11bd Pinnacle Systems Inc. 002e PCTV 40i 0040 Royal TS Function 1 11bd 0044 PCTV 2000i Dual DVB-T Pro PCI Tuner 1 11bd 0045 PCTV Dual Sat Pro PCI 4000i Tuner 1 0041 RoyalTS Function 2 11bd 0044 PCTV 2000i Dual DVB-T Pro PCI Tuner 2 11bd 0045 PCTV Dual Sat Pro PCI 4000i Tuner 2 0042 Royal TS Function 3 11bd 0044 PCTV 2000i Dual DVB-T Pro PCI Common 11bd 0045 PCTV Dual Sat Pro PCI 4000i Common 0051 PCTV HD 800i bede AV/DV Studio Capture Card 11be International Microcircuits Inc 11bf Astrodesign, Inc. 11c0 Hewlett Packard # nee Agere Systems nee Lucent Microelectronics 11c1 LSI Corporation 0440 56k WinModem 1033 8015 LT WinModem 56k Data+Fax+Voice+Dsvd 1033 8047 LT WinModem 56k Data+Fax+Voice+Dsvd 1033 804f LT WinModem 56k Data+Fax+Voice+Dsvd 10cf 102c LB LT Modem V.90 56k 10cf 104a BIBLO LT Modem 56k 10cf 105f LB2 LT Modem V.90 56k 1179 0001 Internal V.90 Modem 11c1 0440 LT WinModem 56k Data+Fax+Voice+Dsvd 122d 4101 MDP7800-U Modem 122d 4102 MDP7800SP-U Modem 13e0 0040 LT WinModem 56k Data+Fax+Voice+Dsvd 13e0 0440 LT WinModem 56k Data+Fax+Voice+Dsvd 13e0 0441 LT WinModem 56k Data+Fax+Voice+Dsvd 13e0 0450 LT WinModem 56k Data+Fax+Voice+Dsvd 13e0 f100 LT WinModem 56k Data+Fax+Voice+Dsvd 13e0 f101 LT WinModem 56k Data+Fax+Voice+Dsvd 144d 2101 LT56PV Modem 149f 0440 LT WinModem 56k Data+Fax+Voice+Dsvd 0441 56k WinModem 1033 804d LT WinModem 56k Data+Fax 1033 8065 LT WinModem 56k Data+Fax 1092 0440 Supra 56i 1179 0001 Internal V.90 Modem 11c1 0440 LT WinModem 56k Data+Fax 11c1 0441 LT WinModem 56k Data+Fax 122d 4100 MDP7800-U Modem 13e0 0040 LT WinModem 56k Data+Fax 13e0 0100 LT WinModem 56k Data+Fax 13e0 0410 LT WinModem 56k Data+Fax 13e0 0420 TelePath Internet 56k WinModem 13e0 0440 LT WinModem 56k Data+Fax 13e0 0443 LT WinModem 56k Data+Fax 13e0 f102 LT WinModem 56k Data+Fax 1416 9804 CommWave 56k Modem 141d 0440 LT WinModem 56k Data+Fax 144f 0441 Lucent 56k V.90 DF Modem 144f 0449 Lucent 56k V.90 DF Modem 144f 110d Lucent Win Modem 1468 0441 Presario 56k V.90 DF Modem 1668 0440 Lucent Win Modem 0442 56k WinModem 11c1 0440 LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd 11c1 0442 LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd 13e0 0412 LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd 13e0 0442 LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd 13fc 2471 LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd 144d 2104 LT56PT Modem 144f 1104 LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd 149f 0440 LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd 1668 0440 LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd 0443 LT WinModem 0444 LT WinModem 0445 LT WinModem 8086 2203 PRO/100+ MiniPCI (probably an Ambit U98.003.C.00 combo card) 8086 2204 PRO/100+ MiniPCI on Armada E500 0446 LT WinModem 0447 LT WinModem 0448 WinModem 56k 1014 0131 Lucent Win Modem 1033 8066 LT WinModem 56k Data+Fax+Voice+Dsvd 13e0 0030 56k Voice Modem 13e0 0040 LT WinModem 56k Data+Fax+Voice+Dsvd # Actiontech eth+modem card as used by Dell &c. 1668 2400 LT WinModem 56k (MiniPCI Ethernet+Modem) 0449 L56xM+S [Mars-2] WinModem 56k 0e11 b14d 56k V.90 Modem 1014 018c ThinkPad 600X 13e0 0020 LT WinModem 56k Data+Fax 13e0 0041 TelePath Internet 56k WinModem 1436 0440 Lucent Win Modem 144f 0449 Lucent 56k V.90 DFi Modem 1468 0410 IBM ThinkPad T23 1468 0440 Lucent Win Modem 1468 0449 Presario 56k V.90 DFi Modem 044a F-1156IV WinModem (V90, 56KFlex) 10cf 1072 LB Global LT Modem 13e0 0012 LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd 13e0 0042 LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd 144f 1005 LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd 044b LT WinModem 044c LT WinModem 044d LT WinModem 044e LT WinModem 044f V90 WildWire Modem 0450 LT WinModem 1033 80a8 Versa Note Vxi 144f 4005 Magnia SG20 1468 0450 Evo N600c 0451 LT WinModem 0452 LT WinModem 0453 LT WinModem 0454 LT WinModem 0455 LT WinModem 0456 LT WinModem 0457 LT WinModem 0458 LT WinModem 0459 LT WinModem 045a LT WinModem 045c LT WinModem 0461 V90 WildWire Modem 0462 V90 WildWire Modem 0480 Venus Modem (V90, 56KFlex) 048c V.92 56K WinModem # InPorte Home Internal 56k Modem/fax/answering machine/SMS Features 048f V.92 56k WinModem 0620 Lucent V.92 Data/Fax Modem 2600 StarPro26XX family (SP2601, SP2603, SP2612) DSP 5400 OR3TP12 FPSC 5656 Venus Modem 5801 USB 5802 USS-312 USB Controller 5803 USS-344S USB Controller 5811 FW322/323 [TrueFire] 1394a Controller 103c 2a34 Pavilion a1677c 103c 2a6f Asus IPIBL-LB Motherboard 103c 2a9e Pavilion p6310f 1043 8294 LSI FW322/323 IEEE 1394a FireWire Controller 11bd 000e LSI FW323 8086 524c D865PERL mainboard 9005 0033 Adaptec AFW-2100 (HP) 2102900-R dead 0800 FireWire Host Bus Adapter 5901 FW643 [TrueFire] PCIe 1394b Controller 11c1 5900 FW643 [TrueFire] PCIe 1394b Controller 1443 0643 FireBoard800-e V.2 1546 0643 FWB-PCIE1X2x 5903 FW533 [TrueFire] PCIe 1394a Controller 8110 T8110 H.100/H.110 TDM switch 12d9 000c E1/T1 PMXc cPCI carrier card ab10 WL60010 Wireless LAN MAC ab11 WL60040 Multimode Wireles LAN MAC 11c1 ab12 WaveLAN 11abg Cardbus card (Model 1102) 11c1 ab13 WaveLAN 11abg MiniPCI card (Model 0512) 11c1 ab15 WaveLAN 11abg Cardbus card (Model 1106) 11c1 ab16 WaveLAN 11abg MiniPCI card (Model 0516) ab20 ORiNOCO PCI Adapter ab21 Agere Wireless PCI Adapter ab30 Hermes2 Mini-PCI WaveLAN a/b/g 14cd 2012 Hermes2 Mini-PCI WaveLAN a/b/g ed00 ET-131x PCI-E Ethernet Controller ed01 ET-131x PCI-E Ethernet Controller 11c2 Sand Microelectronics 11c3 NEC Corporation 11c4 Document Technologies, Inc 11c5 Shiva Corporation 11c6 Dainippon Screen Mfg. Co. Ltd 11c7 D.C.M. Data Systems 11c8 Dolphin Interconnect Solutions AS 0658 PSB32 SCI-Adapter D31x d665 PSB64 SCI-Adapter D32x d667 PSB66 SCI-Adapter D33x 11c9 Magma 0010 16-line serial port w/- DMA 0011 4-line serial port w/- DMA 11ca LSI Systems, Inc 11cb Specialix Research Ltd. 2000 PCI_9050 11cb 0200 SX 11cb b008 I/O8+ 4000 SUPI_1 8000 T225 11cc Michels & Kleberhoff Computer GmbH 11cd HAL Computer Systems, Inc. 11ce Netaccess 11cf Pioneer Electronic Corporation 11d0 Lockheed Martin Federal Systems-Manassas 11d1 Auravision 01f7 VxP524 01f9 VxP951 11d2 Intercom Inc. 11d3 Trancell Systems Inc 11d4 Analog Devices 1535 Blackfin BF535 processor 1805 SM56 PCI modem 11d5 Ikon Corporation 0115 10115 0117 10117 11d6 Tekelec Telecom 11d7 Trenton Technology, Inc. 11d8 Image Technologies Development 11d9 TEC Corporation 11da Novell 11db Sega Enterprises Ltd 11dc Questra Corporation 11dd Crosfield Electronics Limited 11de Zoran Corporation 6017 miroVIDEO DC30 6057 ZR36057PQC Video cutting chipset 1031 7efe DC10 Plus 1031 fc00 MiroVIDEO DC50, Motion JPEG Capture/CODEC Board 12f8 8a02 Tekram Video Kit 13ca 4231 JPEG/TV Card 6120 ZR36120 1328 f001 Cinemaster C DVD Decoder 13c2 0000 MediaFocus Satellite TV Card 1de1 9fff Video Kit C210 11df New Wave PDG 11e0 Cray Communications A/S 11e1 GEC Plessey Semi Inc. 11e2 Samsung Information Systems America 11e3 Quicklogic Corporation 0001 COM-ON-AIR Dosch&Amand DECT 0010 QL5032 (PQFP208) [QuickPCI] 33 MHz/32-bit PCI Master/Target with Embedded Programmable Logic and Dual Port SRAM 0011 QL5032 (PBGA256) [QuickPCI] 33 MHz/32-bit PCI Master/Target with Embedded Programmable Logic and Dual Port SRAM 0012 QL5232 (PQFP208) [QuickPCI] 33 MHz/32-bit PCI Master/Target with Embedded Programmable Logic and Dual Port SRAM 11e3 1204 Becker & Hickl SPC-130 11e3 1207 Becker & Hickl DDG-200 11e3 1209 Becker & Hickl SHM-180 11e3 120c Becker & Hickl PMM-428 0013 QL5232 (PBGA456) [QuickPCI] 33 MHz/32-bit PCI Master/Target with Embedded Programmable Logic and Dual Port SRAM 0014 QL5030 (TQFP144) [QuickPCI] 33 MHz/32-bit PCI Target with Embedded Programmable Logic and Dual Port SRAM 0015 QL5130 (TQFP144) [QuickPCI] 33 MHz/32-bit PCI Target with Embedded Programmable Logic and Dual Port SRAM 0016 QL5130 (PQFP208) [QuickPCI] 33 MHz/32-bit PCI Target with Embedded Programmable Logic and Dual Port SRAM 11e3 120b Becker & Hickl DEL-350 0017 QL5130 (PBGA256) [QuickPCI] 33 MHz/32-bit PCI Target with Embedded Programmable Logic and Dual Port SRAM 0019 QL5332 (PQFP208) [QuickPCI] 33 MHz/32-bit PCI Master/Target with Embedded Programmable Logic and Dual Port SRAM 001a QL5332 (PBGA256) [QuickPCI] 33 MHz/32-bit PCI Master/Target with Embedded Programmable Logic and Dual Port SRAM 001b QL5432 (PQFP208) [QuickPCI] 33 MHz/32-bit PCI Master/Target with Embedded Programmable Logic and Dual Port SRAM 11e3 120d Becker & Hickl SPC-140 11e3 1211 Becker & Hickl GVD-120 11e3 1212 Becker & Hickl DDG-210 001c QL5432 (PBGA456) [QuickPCI] 33 MHz/32-bit PCI Master/Target with Embedded Programmable Logic and Dual Port SRAM 001d QL5632 (PQFP208) [QuickPCI] 33 MHz/32-bit PCI Master/Target with Embedded Programmable Logic and Dual Port SRAM 001e QL5632 (PBGA280) [QuickPCI] 33 MHz/32-bit PCI Master/Target with Embedded Programmable Logic and Dual Port SRAM 001f QL5632 (PBGA484) [QuickPCI] 33 MHz/32-bit PCI Master/Target with Embedded Programmable Logic and Dual Port SRAM 0020 QL5632 (PBGA516) [QuickPCI] 33 MHz/32-bit PCI Master/Target with Embedded Programmable Logic and Dual Port SRAM 0021 QL5732 (PQFP208) [QuickPCI] 33 MHz/32-bit PCI Master/Target with Embedded Programmable Logic and Dual Port SRAM 0022 QL5732 (PBGA280) [QuickPCI] 33 MHz/32-bit PCI Master/Target with Embedded Programmable Logic and Dual Port SRAM 0023 QL5732 (PBGA484) [QuickPCI] 33 MHz/32-bit PCI Master/Target with Embedded Programmable Logic and Dual Port SRAM 0024 QL5732 (PBGA516) [QuickPCI] 33 MHz/32-bit PCI Master/Target with Embedded Programmable Logic and Dual Port SRAM 002d QL5022 (TQFP144) [QuickPCI] 33 MHz/32-bit PCI Master/Target with Embedded Programmable Logic and Dual Port SRAM 002e QL5022 (PQFP208) [QuickPCI] 33 MHz/32-bit PCI Master/Target with Embedded Programmable Logic and Dual Port SRAM 002f QL5020 (TQFP144) [QuickPCI] 33 MHz/32-bit PCI Target with Embedded Programmable Logic and Dual Port SRAM 0030 QL5020 (PQFP208) [QuickPCI] 33 MHz/32-bit PCI Target with Embedded Programmable Logic and Dual Port SRAM 0560 QL5064 Companion Design Demo Board 5030 PC Watchdog 8417 QL5064 [QuickPCI] PCI v2.2 bridge for SMT417 Dual TMS320C6416T PMC Module 11e4 Second Wave Inc 11e5 IIX Consulting 11e6 Mitsui-Zosen System Research 11e7 Toshiba America, Elec. Company 11e8 Digital Processing Systems Inc. 11e9 Highwater Designs Ltd. 11ea Elsag Bailey 11eb Formation Inc. 11ec Coreco Inc 000d Oculus-F/64P 1800 Cobra/C6 11ed Mediamatics 11ee Dome Imaging Systems Inc 11ef Nicolet Technologies B.V. 11f0 Compu-Shack 4231 FDDI 4232 FASTline UTP Quattro 4233 FASTline FO 4234 FASTline UTP 4235 FASTline-II UTP 4236 FASTline-II FO 4731 GIGAline 11f1 Symbios Logic Inc 11f2 Picture Tel Japan K.K. 11f3 Keithley Metrabyte 0011 KPCI-PIO24 4200 42x0-SMU 4205 4205-VPU 4215 4200-VPU 4216 422x-PxU 4220 4200-CVU 4221 4210-CVU 11f4 Kinetic Systems Corporation 2915 CAMAC controller 11f5 Computing Devices International 11f6 Compex 0112 ENet100VG4 0113 FreedomLine 100 1401 ReadyLink 2000 2011 RL100-ATX 10/100 11f6 2011 RL100-ATX 2201 ReadyLink 100TX (Winbond W89C840) 11f6 2011 ReadyLink 100TX 9881 RL100TX Fast Ethernet 11f7 Scientific Atlanta 11f8 PMC-Sierra Inc. 5220 BR522x [PMC-Sierra maxRAID SAS Controller] 7364 PM7364 [FREEDM - 32 Frame Engine & Datalink Mgr] 7375 PM7375 [LASAR-155 ATM SAR] 7384 PM7384 [FREEDM - 84P672 Frm Engine & Datalink Mgr] 8000 PM8000 [SPC - SAS Protocol Controller] 8009 PM8009 SPCve 8x6G 8018 PM8018 Adaptec SAS Adaptor ASA-70165H PCIe Gen3 x8 6 Gbps 16-lane 4x SFF-8644 8032 PM8032 Tachyon QE8 117c 003a Celerity FC-81EN Fibre Channel Adapter 117c 003b Celerity FC-82EN Fibre Channel Adapter 117c 003c Celerity FC-84EN Fibre Channel Adapter 117c 403b ThunderLink FC 1082 Fibre Channel Adapter 8053 PM8053 SXP 12G 24-port SAS/SATA expander 8054 PM8054 SXP 12G 36-port SAS/SATA expander 8055 PM8055 SXP 12G 48-port SAS/SATA expander 8056 PM8056 SXP 12G 68-port SAS/SATA expander 8060 PM8060 SRCv 12G eight-port SAS/SATA RoC 8063 PM8063 SRCv 12G 16-port SAS/SATA RoC 8070 PM8070 Tachyon SPCv 12G eight-port SAS/SATA controller 8071 PM8071 Tachyon SPCve 12G eight-port SAS/SATA controller 8072 PM8072 Tachyon SPCv 12G 16-port SAS/SATA controller 8073 PM8073 Tachyon SPCve 12G 16-port SAS/SATA controller 8531 PM8531 PFX 24xG3 PCIe Fanout Switch 8532 PM8532 PFX 32xG3 PCIe Fanout Switch 8533 PM8533 PFX 48xG3 PCIe Fanout Switch 8534 PM8534 PFX 64xG3 PCIe Fanout Switch 8535 PM8535 PFX 80xG3 PCIe Fanout Switch 8536 PM8536 PFX 96xG3 PCIe Fanout Switch 1bd4 0081 PM8536 PFX 96xG3 PCIe Fanout Switch 8546 PM8546 B-FEIP PSX 96xG3 PCIe Storage Switch 8562 PM8562 Switchtec PFX-L 32xG3 Fanout-Lite PCIe Gen3 Switch 11f9 I-Cube Inc 11fa Kasan Electronics Company, Ltd. 11fb Datel Inc 11fc Silicon Magic 11fd High Street Consultants # nee Comtrol, Inc. 11fe Pepperl+Fuchs 0001 RocketPort PCI 32-port w/external I/F 0002 RocketPort PCI 8-port w/external I/F 0003 RocketPort PCI 16-port w/external I/F 0004 RocketPort PCI 4-port w/Quad Cable 0005 RocketPort PCI 8-port w/Octa Cable 0006 RocketPort PCI 8-port w/RJ11 connectors 0007 RocketPort PCI 4-port w/RJ45 connectors 0008 RocketPort PCI 8-port w/DB78 SNI connector (Siemens) 0009 RocketPort PCI 16-port w/DB78 SNI connector (Siemens) 000a RocketPort PCI Plus 4-port w/Quad Cable 000b RocketPort PCI Plus 8-port w/Octa Cable 000c RocketModem II 6-port 000d RocketModem 4-port 000e RocketPort PCI Plus 2-port RS-232 w/DB9 connectors 000f RocketPort PCI Plus 2-port SMPTE w/DB9 connectors 0040 RocketPort INFINITY 8-port w/Octa Cable RJ45 0041 RocketPort INFINITY 32-port w/external I/F 0042 RocketPort INFINITY 8-port w/external I/F 0043 RocketPort INFINITY 16-port w/external I/F 0044 RocketPort INFINITY 4-port w/Quad Cable DB 0045 RocketPort INFINITY 8-port w/Octa Cable DB 0046 RocketPort INFINITY 4-port w/external I/F 0047 RocketPort INFINITY 4J (4-port) w/RJ45 connectors 0048 RocketPort INFINITY 4J (4-port) w/RJ45 connectors 004a RocketPort INFINITY Plus 4-port 004b RocketPort INFINITY Plus 8-port 004c RocketModem INFINITY III 8-port 004d RocketModem INFINITY III 4-port 004e RocketPort INFINITY Plus 2-port 004f RocketPort INFINITY 2-port SMPTE w/DB9 connectors 0050 RocketPort INFINITY Plus 4-port RJ45 0051 RocketPort INFINITY Plus 8-port RJ11 0052 RocketPort INFINITY 8-port SMPTE w/DB9 Connectors 0060 RocketPort EXPRESS 8-port w/Octa Cable 0061 RocketPort EXPRESS 32-port w/external I/F 0062 RocketPort EXPRESS 8-Port w/external I/F 0063 RocketPort EXPRESS 16-port w/external I/F 0064 RocketPort EXPRESS 4-port w/Quad Cable 0065 RocketPort EXPRESS 8-port w/Octa Cable 0066 RocketPort EXPRESS 4-port w/external I/F 0067 RocketPort EXPRESS 4J (4-port) w/RJ45 connectors 0068 RocketPort EXPRESS 8J (8-port) w/RJ11 connectors 006f RocketPort EXPRESS SMPTE 2-port 0072 RocketPort EXPRESS SMPTE 8-port w/external I/F 0801 RocketPort uPCI 32-port w/external I/F 0802 RocketPort uPCI 8-port w/external I/F 0803 RocketPort uPCI 16-port w/external I/F 0805 RocketPort uPCI 8-port w/Octa Cable 080b RocketPort Plus uPCI 8-port w/Octa Cable 080c RocketModem III 8-port 080d RocketModem III 4-port 080e RocketPort uPCI 2-port RS232 w/DB9 connectors 080f RocketPort uPCI SMPTE 2-port 0810 RocketPort Plus uPCI 4J (4-port) w/RJ45 connectors 0811 RocketPort Plus uPCI 8J (8-port) w/RJ11 connectors 0812 RocketPort Plus uPCI 422 8-port 0813 RocketModem IV uPCI 8-port 0814 RocketModem IV uPCI 4-port 0903 RocketPort Compact PCI 16 port w/external I/F # 16954 UART 8015 RocketPort 550 4-port 8805 RocketPort uPCI 4-port w/Quad Cable 880b RocketPort Plus uPCI 4-port w/Quad Cable 8812 RocketPort Plus uPCI 4-port RS422 w/Quad Cable 11ff Scion Corporation 0003 AG-5 1200 CSS Corporation 1201 Vista Controls Corp 1202 Network General Corp. 4300 Gigabit Ethernet Adapter 1202 9841 SK-9841 LX 1202 9842 SK-9841 LX dual link 1202 9843 SK-9843 SX 1202 9844 SK-9843 SX dual link 1203 Bayer Corporation, Agfa Division 1204 Lattice Semiconductor Corporation 1965 SB6501 802.11ad Wireless Network Adapter 1205 Array Corporation 1206 Amdahl Corporation 1208 Parsytec GmbH 4853 HS-Link Device 1209 SCI Systems Inc 120a Synaptel 120b Adaptive Solutions 120c Technical Corp. 120d Compression Labs, Inc. 120e Cyclades Corporation 0100 Cyclom-Y below first megabyte 0101 Cyclom-Y above first megabyte 0102 Cyclom-4Y below first megabyte 0103 Cyclom-4Y above first megabyte 0104 Cyclom-8Y below first megabyte 0105 Cyclom-8Y above first megabyte 0200 Cyclades-Z below first megabyte 0201 Cyclades-Z above first megabyte 0300 PC300/RSV or /X21 (2 ports) 0301 PC300/RSV or /X21 (1 port) 0310 PC300/TE (2 ports) 0311 PC300/TE (1 port) 0320 PC300/TE-M (2 ports) 0321 PC300/TE-M (1 port) 0400 PC400 120f Essential Communications 0001 Roadrunner serial HIPPI 1210 Hyperparallel Technologies 1211 Braintech Inc 1213 Applied Intelligent Systems, Inc. 1214 Performance Technologies, Inc. 1215 Interware Co., Ltd 1216 Purup Prepress A/S 1217 O2 Micro, Inc. 00f7 Firewire (IEEE 1394) 1071 8209 Medion MIM 2240 Notebook PC [MD98100] 1179 ff50 Satellite P305D-S8995E 10f7 1394 OHCI Compliant Host Controller 11f7 OZ600 1394a-2000 Controller 1028 04a3 Precision M4600 13f7 1394 OHCI Compliant Host Controller 6729 OZ6729 673a OZ6730 6832 OZ6832/6833 CardBus Controller [Saturn] 6836 OZ6836/6860 CardBus Controller [Mercury] 6872 OZ6812 CardBus Controller [Challenger] 6925 OZ6922 CardBus Controller 6933 OZ6933/711E1 CardBus/SmartCardBus Controller 1025 1016 Travelmate 612 TX 6972 OZ601/6912/711E0 CardBus/SmartCardBus Controller 1014 020c ThinkPad R30 1028 0152 Latitude D500 1179 0001 Magnia Z310 7110 OZ711Mx 4-in-1 MemoryCardBus Accelerator 103c 088c NC8000 laptop 103c 0890 NC6000 laptop 1734 106c Amilo A1645 7112 OZ711EC1/M1 SmartCardBus/MemoryCardBus Controller 7113 OZ711EC1 SmartCardBus Controller 1025 0035 TravelMate 660 7114 OZ711M1/MC1 4-in-1 MemoryCardBus Controller 7120 Integrated MMC/SD Controller 1071 8209 Medion MIM 2240 Notebook PC [MD98100] 1179 ff50 Satellite P305D-S8995E 7130 Integrated MS/xD Controller 1071 8209 Medion MIM 2240 Notebook PC [MD98100] 1179 ff50 Satellite P305D-S8995E 7134 OZ711MP1/MS1 MemoryCardBus Controller 7135 Cardbus bridge 7136 OZ711SP1 Memory CardBus Controller 71e2 OZ711E2 SmartCardBus Controller 7212 OZ711M2 4-in-1 MemoryCardBus Controller 7213 OZ6933E CardBus Controller 7223 OZ711M3/MC3 4-in-1 MemoryCardBus Controller 103c 088c NC8000 laptop 103c 0890 NC6000 laptop 10cf 11c4 Lifebook P5020D Laptop 7233 OZ711MP3/MS3 4-in-1 MemoryCardBus Controller 8120 Integrated MMC/SD Controller 8130 Integrated MS/MSPRO/xD Controller 8220 OZ600FJ1/OZ900FJ1 SD/MMC Card Reader Controller 8221 OZ600FJ0/OZ900FJ0/OZ600FJS SD/MMC Card Reader Controller 8320 OZ600RJ1/OZ900RJ1 SD/MMC Card Reader Controller 1028 04a3 Precision M4600 8321 OZ600RJ0/OZ900RJ0/OZ600RJS SD/MMC Card Reader Controller 8330 OZ600 MS/xD Controller 1028 04a3 Precision M4600 8331 O2 Flash Memory Card 8520 SD/MMC Card Reader Controller 8621 SD/MMC Card Reader Controller 17aa 5068 Thinkpad E480/E580 8760 FORESEE E2M2 NVMe SSD 1218 Hybricon Corp. 1219 First Virtual Corporation 121a 3Dfx Interactive, Inc. 0001 Voodoo 0002 Voodoo 2 0003 Voodoo Banshee 1092 0003 Monster Fusion 1092 4000 Monster Fusion 1092 4002 Monster Fusion 1092 4801 Monster Fusion AGP 1092 4803 Monster Fusion AGP 1092 8030 Monster Fusion 1092 8035 Monster Fusion AGP 10b0 0001 Dragon 4000 1102 1017 3D Blaster Banshee PCI (CT6760) 1102 1018 3D Blaster Banshee VE 121a 0001 Voodoo Banshee AGP 121a 0003 Voodoo Banshee AGP SGRAM 121a 0004 Voodoo Banshee 139c 0016 Raven 139c 0017 Raven 14af 0002 Maxi Gamer Phoenix 0004 Voodoo Banshee [Velocity 100] 0005 Voodoo 3 121a 0004 Voodoo3 AGP 121a 0030 Voodoo3 AGP 121a 0031 Voodoo3 AGP 121a 0034 Voodoo3 AGP 121a 0036 Voodoo3 2000 PCI 121a 0037 Voodoo3 AGP 121a 0038 Voodoo3 AGP 121a 003a Voodoo3 AGP 121a 0044 Voodoo3 121a 004b Velocity 100 121a 004c Velocity 200 121a 004d Voodoo3 AGP 121a 004e Voodoo3 AGP 121a 0051 Voodoo3 AGP 121a 0052 Voodoo3 AGP 121a 0057 Voodoo3 3000 PCI 121a 0060 Voodoo3 3500 TV (NTSC) 121a 0061 Voodoo3 3500 TV (PAL) 121a 0062 Voodoo3 3500 TV (SECAM) 0009 Voodoo 4 / Voodoo 5 121a 0003 Voodoo5 PCI 5500 121a 0009 Voodoo5 AGP 5500/6000 0057 Voodoo 3/3000 [Avenger] 121b Advanced Telecommunications Modules 121c Nippon Texaco., Ltd 121d LiPPERT ADLINK Technology GmbH 121e CSPI 0201 Myrinet 2000 Scalable Cluster Interconnect 121f Arcus Technology, Inc. 1220 Ariel Corporation 1220 AMCC 5933 TMS320C80 DSP/Imaging board 1221 Contec Co., Ltd 9172 PO-64L(PCI)H [Isolated Digital Output Board for PCI] 91a2 PO-32L(PCI)H [Isolated Digital Output Board for PCI] 91c3 DA16-16(LPCI)L [Un-insulated highly precise analog output board for Low Profile PCI] b152 DIO-96D2-LPCI c103 ADA16-32/2(PCI)F [High-Speed Analog I/O Board for PCI] 1222 Ancor Communications, Inc. 1223 Artesyn Communication Products 0003 PM/Link 0004 PM/T1 0005 PM/E1 0008 PM/SLS 0009 BajaSpan Resource Target 000a BajaSpan Section 0 000b BajaSpan Section 1 000c BajaSpan Section 2 000d BajaSpan Section 3 000e PM/PPC 1224 Interactive Images 1225 Power I/O, Inc. 1227 EIZO Rugged Solutions 0006 Raptor GFX 8P 0023 Raptor GFX [1100T] 0045 Raptor 4000-L [Linux version] 004a Raptor 4000-LR-L [Linux version] 1228 Norsk Elektro Optikk A/S 1229 Data Kinesis Inc. 122a Integrated Telecom 122b LG Industrial Systems Co., Ltd 122c Sican GmbH 122d Aztech System Ltd 1206 368DSP 1400 Trident PCI288-Q3DII (NX) 50dc 3328 Audio 122d 0001 3328 Audio 80da 3328 Audio 122d 0001 3328 Audio 122e Xyratex 7722 Napatech XL1 7724 Napatech XL2/XA 7729 Napatech XD 122f Andrew Corporation 1230 Fishcamp Engineering 1231 Woodward McCoach, Inc. 04e1 Desktop PCI Telephony 4 05e1 Desktop PCI Telephony 5/6 0d00 LightParser 0d02 LightParser 2 0d13 Desktop PCI L1/L3 Telephony 1232 GPT Limited 1233 Bus-Tech, Inc. # nee Risq Modular Systems, Inc. 1235 SMART Modular Technologies 1236 Sigma Designs Corporation 0000 RealMagic64/GX 6401 REALmagic 64/GX (SD 6425) 1237 Alta Technology Corporation 1238 Adtran 1239 3DO Company 123a Visicom Laboratories, Inc. 123b Seeq Technology, Inc. 123c Century Systems, Inc. 123d Engineering Design Team, Inc. 0000 EasyConnect 8/32 0002 EasyConnect 8/64 0003 EasyIO 0047 PCIe4 CDa 004b PCIe4 CDa 16 009d VisionLink F1 00a0 PCIe8g3 S5 (10G/40G) 00a3 VisionLink F4 00a9 VisionLink CLS 00ab PCIe8g3 A5 10G 00b5 PCIe8 RFx SDR 123e Simutech, Inc. # nee C-Cube Microsystems / acquired by Magnum Semiconductor 123f LSI Logic 00e4 MPEG 8120 DVxplore Codec 10de 01e1 NVTV PAL 10de 01e2 NVTV NTSC 10de 01e3 NVTV PAL 10de 0248 NVTV NTSC 10de 0249 NVTV PAL 11bd 0006 DV500 E4 11bd 000a DV500 E4 11bd 000f DV500 E4 1809 0016 Emuzed MAUI-III PCI PVR FM TV 8888 Cinemaster C 3.0 DVD Decoder 1002 0001 Cinemaster C 3.0 DVD Decoder 1002 0002 Cinemaster C 3.0 DVD Decoder 1328 0001 Cinemaster C 3.0 DVD Decoder 1240 Marathon Technologies Corp. 1241 DSC Communications # Formerly Jaycor Networks, Inc. 1242 JNI Corporation 1560 JNIC-1560 PCI-X Fibre Channel Controller 1242 6562 FCX2-6562 Dual Channel PCI-X Fibre Channel Adapter 1242 656a FCX-6562 PCI-X Fibre Channel Adapter 4643 FCI-1063 Fibre Channel Adapter 6562 FCX2-6562 Dual Channel PCI-X Fibre Channel Adapter 656a FCX-6562 PCI-X Fibre Channel Adapter 1243 Delphax # Audio-Visuelles Marketing und Computersysteme 1244 AVM GmbH 0700 B1 ISDN 0800 C4 ISDN 0a00 A1 ISDN [Fritz] 1244 0a00 FRITZ!Card ISDN Controller 0e00 Fritz!Card PCI v2.0 ISDN 0e80 Fritz!Card PCI v2.1 ISDN 1244 0e00 PSB 3100F (AVM KAFKA) [Fritz!Card PCI v2.1] 1100 C2 ISDN 1200 T1 ISDN 2700 Fritz!Card DSL SL 2900 Fritz!Card DSL v2.0 1245 A.P.D., S.A. 1246 Dipix Technologies, Inc. 1247 Xylon Research, Inc. 1248 Central Data Corporation 1249 Samsung Electronics Co., Ltd. 124a AEG Electrocom GmbH 124b SBS/Greenspring Modular I/O 0040 PCI-40A or cPCI-200 Quad IndustryPack carrier 124b 9080 PCI9080 Bridge 124c Solitron Technologies, Inc. 124d Stallion Technologies, Inc. 0000 EasyConnection 8/32 0002 EasyConnection 8/64 0003 EasyIO 0004 EasyConnection/RA 124e Cylink 124f Infortrend Technology, Inc. 0041 IFT-2000 Series RAID Controller 1250 Hitachi Microcomputer System Ltd 1251 VLSI Solutions Oy 1253 Guzik Technical Enterprises 1254 Linear Systems Ltd. 0065 DVB Master FD 007c DVB Master Quad/o 1255 Optibase Ltd 1110 MPEG Forge 1210 MPEG Fusion 2110 VideoPlex 2120 VideoPlex CC 2130 VideoQuest 1256 Perceptive Solutions, Inc. 4201 PCI-2220I 4401 PCI-2240I 5201 PCI-2000 1257 Vertex Networks, Inc. 1258 Gilbarco, Inc. # nee Allied Telesyn International 1259 Allied Telesis 2560 AT-2560 Fast Ethernet Adapter (i82557B) 2801 AT-2801FX (RTL-8139) a117 RTL81xx Fast Ethernet a11e RTL81xx Fast Ethernet a120 21x4x DEC-Tulip compatible 10/100 Ethernet 125a ABB Power Systems 125b Asix Electronics Corporation 1400 AX88141 Fast Ethernet Controller 1186 1100 AX8814X Based PCI Fast Ethernet Adapter 9100 AX99100 PCIe to Multi I/O Controller a000 1000 Serial Port a000 2000 Parallel Port a000 6000 SPI a000 7000 Local Bus ea50 1c10 RXi2-BP 125c Aurora Technologies, Inc. 0101 Saturn 4520P 0640 Aries 16000P 125d ESS Technology 0000 ES336H Fax Modem (Early Model) 1948 ES1948 Maestro-1 1968 ES1968 Maestro 2 1028 0085 ES1968 Maestro-2 PCI 1033 8051 ES1968 Maestro-2 Audiodrive 1969 ES1938/ES1946/ES1969 Solo-1 Audiodrive 1014 0166 ES1969 SOLO-1 AudioDrive on IBM Aptiva Mainboard 125d 8888 Solo-1 Audio Adapter 125d 8898 ES1938S TTSOLO1-SL [TerraTec 128i PCI] 153b 111b Terratec 128i PCI 1978 ES1978 Maestro 2E 0e11 b112 Armada M700/E500 1033 803c ES1978 Maestro-2E Audiodrive 1033 8058 ES1978 Maestro-2E Audiodrive 1092 4000 Monster Sound MX400 1179 0001 ES1978 Maestro-2E Audiodrive 1988 ES1988 Allegro-1 0e11 0098 Evo N600c 1092 4100 Sonic Impact S100 125d 0431 Allegro AudioDrive 125d 1988 ESS Allegro-1 Audiodrive 125d 1998 Allegro AudioDrive 125d 1999 Allegro-1 AudioDrive 1989 ESS Modem 125d 1989 ESS Modem 1990 ES1990S Canyon3D 2LE 1992 ES1992S Canyon3D 2 1998 ES1983S Maestro-3i PCI Audio Accelerator 1028 00b1 Latitude C600 1028 00e5 Latitude C810 1028 00e6 ES1983S Maestro-3i (Dell Inspiron 8100) 1999 ES1983S Maestro-3i PCI Modem Accelerator 199a ES1983S Maestro-3i PCI Audio Accelerator 199b ES1983S Maestro-3i PCI Modem Accelerator 2808 ES336H Fax Modem (Later Model) 2838 ES2838/2839 SuperLink Modem 2898 ES2898 Modem 125d 0424 ES56-PI Data Fax Modem 125d 0425 ES56T-PI Data Fax Modem 125d 0426 ES56V-PI Data Fax Modem 125d 0427 VW-PI Data Fax Modem 125d 0428 ES56ST-PI Data Fax Modem 125d 0429 ES56SV-PI Data Fax Modem 147a c001 ES56-PI Data Fax Modem 148d 1030 HCF WV-PI56 [ESS ES56-PI Data Fax Modem] 14fe 0428 ES56-PI Data Fax Modem 14fe 0429 ES56-PI Data Fax Modem 125e Specialvideo Engineering SRL 125f Concurrent Technologies, Inc. # 4x serial ports, 2x printer ports 2071 CC PMC/232 # 4x serial ports, 2x printer ports 2084 CC PMC/23P # 4x serial ports, RS422 2091 CC PMC/422 1260 Intersil Corporation 3872 ISL3872 [Prism 3] 1468 0202 LAN-Express IEEE 802.11b Wireless LAN 3873 ISL3874 [Prism 2.5]/ISL3872 [Prism 3] 10cf 1169 MBH7WM01-8734 802.11b Wireless Mini PCI Card [ISL3874] 1186 3501 DWL-520 Wireless PCI Adapter (rev A or B) [ISL3874] 1186 3700 DWL-520 Wireless PCI Adapter (rev E1) [ISL3872] 1385 4105 MA311 802.11b wireless adapter [ISL3874] 1668 0414 HWP01170-01 802.11b PCI Wireless Adapter 16a5 1601 AIR.mate PC-400 PCI Wireless LAN Adapter 1737 3874 WMP11 v1 802.11b Wireless-B PCI Adapter [ISL3874] 4033 7033 PCW200 802.11b Wireless PCI Adapter [ISL3874] 8086 2510 M3AWEB Wireless 802.11b MiniPCI Adapter 8086 2513 Wireless 802.11b MiniPCI Adapter 3877 ISL3877 [Prism Indigo] 3886 ISL3886 [Prism Javelin/Prism Xbow] 17cf 0037 XG-901 and clones Wireless Adapter 3890 ISL3890 [Prism GT/Prism Duette]/ISL3886 [Prism Javelin/Prism Xbow] 10b8 2802 SMC2802W V1 Wireless PCI Adapter [ISL3890] 10b8 2835 SMC2835W Wireless Cardbus Adapter 10b8 a835 SMC2835W V2 Wireless Cardbus Adapter 1113 4203 WN4201B 1113 8201 T-Com T-Sinus 154pcicard Wireless PCI Adapter 1113 b301 T-Sinus 154card Cardbus 1113 ee03 SMC2802W V2 Wireless PCI Adapter [ISL3886] 1113 ee08 SMC2835W V3 EU Wireless Cardbus Adapter 1186 3202 DWL-G650 A1 Wireless Adapter 1259 c104 CG-WLCB54GT Wireless Adapter 1260 0000 WG511 v1 54 Mbps Wireless PC Card 1385 4800 WG511 v2/v3 54 Mbps Wireless PC Card 16a5 1605 ALLNET ALL0271 Wireless PCI Adapter 17cf 0014 XG-600 and clones Wireless Adapter 17cf 0020 XG-900 and clones Wireless Adapter 187e 3403 G-110 802.11g Wireless Cardbus Adapter 8130 HMP8130 NTSC/PAL Video Decoder 8131 HMP8131 NTSC/PAL Video Decoder # This is probably more likely a HW fault, but I am keeping it for now --mj ffff ISL3886IK 1260 0000 Senao 3054MP+ (J) mini-PCI WLAN 802.11g adapter 1261 Matsushita-Kotobuki Electronics Industries, Ltd. 1262 ES Computer Company, Ltd. 1263 Sonic Solutions 1264 Aval Nagasaki Corporation 1265 Casio Computer Co., Ltd. 1266 Microdyne Corporation 0001 NE10/100 Adapter (i82557B) 1910 NE2000Plus (RT8029) Ethernet Adapter 1266 1910 NE2000Plus Ethernet Adapter 1267 S. A. Telecommunications 5352 PCR2101 5a4b Telsat Turbo 1268 Tektronix # nee Thomson-CSF/TTM 1269 Thales # MBIM on top of MHI 00b3 5G Data Card [Cinterion MV31-W] 126a Lexmark International, Inc. 126b Adax, Inc. 126c Northern Telecom 1211 10/100BaseTX [RTL81xx] 126c 802.11b Wireless Ethernet Adapter 126d Splash Technology, Inc. 126e Sumitomo Metal Industries, Ltd. 126f Silicon Motion, Inc. 0501 SM501 VoyagerGX Rev. AA 0510 SM501 VoyagerGX Rev. B 0710 SM710 LynxEM 0712 SM712 LynxEM+ 0718 SM718 LynxSE+ 0720 SM720 Lynx3DM 0730 SM731 Cougar3DR 0750 SM750 0768 SM768 0810 SM810 LynxE 0811 SM811 LynxE 0820 SM820 Lynx3D 0910 SM910 2260 SM2260 NVMe SSD Controller 2261 SM2261XT x2 NVMe SSD Controller (DRAM-less) 2262 SM2262/SM2262EN SSD Controller 2263 SM2263EN/SM2263XT (DRAM-less) NVMe SSD Controllers 2269 SM2269XT (DRAM-less) NVMe SSD Controller 8366 SM8366 NVMe SSD Controller [MonTitan] 1270 Olympus Optical Co., Ltd. 1271 GW Instruments 1272 Telematics International 1273 Hughes Network Systems 0002 DirecPC 1274 Ensoniq 1171 ES1373 / Creative Labs CT5803 [AudioPCI] 1371 ES1371/ES1373 / Creative Labs CT2518 0e11 0024 AudioPCI on Motherboard Compaq Deskpro 0e11 b1a7 ES1371, ES1373 AudioPCI 1033 80ac ES1371, ES1373 AudioPCI 1042 1854 Tazer 107b 8054 Tabor2 1274 1371 Audio PCI 64V/128/5200 / Creative CT4810/CT5803/CT5806 [Sound Blaster PCI] 1274 8001 CT4751 board 1462 6470 ES1371, ES1373 AudioPCI On Motherboard MS-6147 1.1A 1462 6560 ES1371, ES1373 AudioPCI On Motherboard MS-6156 1.10 1462 6630 ES1371, ES1373 AudioPCI On Motherboard MS-6163BX 1.0A 1462 6631 ES1371, ES1373 AudioPCI On Motherboard MS-6163VIA 1.0A 1462 6632 ES1371, ES1373 AudioPCI On Motherboard MS-6163BX 2.0A 1462 6633 ES1371, ES1373 AudioPCI On Motherboard MS-6163VIA 2.0A 1462 6820 ES1371, ES1373 AudioPCI On Motherboard MS-6182 1.00 1462 6822 ES1371, ES1373 AudioPCI On Motherboard MS-6182 1.00A 1462 6830 ES1371, ES1373 AudioPCI On Motherboard MS-6183 1.00 1462 6880 ES1371, ES1373 AudioPCI On Motherboard MS-6188 1.00 1462 6900 ES1371, ES1373 AudioPCI On Motherboard MS-6190 1.00 1462 6910 ES1371, ES1373 AudioPCI On Motherboard MS-6191 1462 6930 ES1371, ES1373 AudioPCI On Motherboard MS-6193 1462 6990 ES1371, ES1373 AudioPCI On Motherboard MS-6199BX 2.0A 1462 6991 ES1371, ES1373 AudioPCI On Motherboard MS-6199VIA 2.0A 14a4 2077 ES1371, ES1373 AudioPCI On Motherboard KR639 14a4 2105 ES1371, ES1373 AudioPCI On Motherboard MR800 14a4 2107 ES1371, ES1373 AudioPCI On Motherboard MR801 14a4 2172 ES1371, ES1373 AudioPCI On Motherboard DR739 1509 9902 ES1371, ES1373 AudioPCI On Motherboard KW11 1509 9903 ES1371, ES1373 AudioPCI On Motherboard KW31 1509 9904 ES1371, ES1373 AudioPCI On Motherboard KA11 1509 9905 ES1371, ES1373 AudioPCI On Motherboard KC13 152d 8801 ES1371, ES1373 AudioPCI On Motherboard CP810E 152d 8802 ES1371, ES1373 AudioPCI On Motherboard CP810 152d 8803 ES1371, ES1373 AudioPCI On Motherboard P3810E 152d 8804 ES1371, ES1373 AudioPCI On Motherboard P3810-S 152d 8805 ES1371, ES1373 AudioPCI On Motherboard P3820-S 270f 2001 ES1371, ES1373 AudioPCI On Motherboard 6CTR 270f 2200 ES1371, ES1373 AudioPCI On Motherboard 6WTX 270f 3000 ES1371, ES1373 AudioPCI On Motherboard 6WSV 270f 3100 ES1371, ES1373 AudioPCI On Motherboard 6WIV2 270f 3102 ES1371, ES1373 AudioPCI On Motherboard 6WIV 270f 7060 ES1371, ES1373 AudioPCI On Motherboard 6ASA2 8086 4249 ES1371, ES1373 AudioPCI On Motherboard BI440ZX 8086 424c ES1371, ES1373 AudioPCI On Motherboard BL440ZX 8086 425a ES1371, ES1373 AudioPCI On Motherboard BZ440ZX 8086 4341 ES1371, ES1373 AudioPCI On Motherboard Cayman 8086 4343 ES1371, ES1373 AudioPCI On Motherboard Cape Cod 8086 4541 D815EEA Motherboard 8086 4649 ES1371, ES1373 AudioPCI On Motherboard Fire Island 8086 464a ES1371, ES1373 AudioPCI On Motherboard FJ440ZX 8086 4d4f ES1371, ES1373 AudioPCI On Motherboard Montreal 8086 4f43 ES1371, ES1373 AudioPCI On Motherboard OC440LX 8086 5243 ES1371, ES1373 AudioPCI On Motherboard RC440BX 8086 5352 ES1371, ES1373 AudioPCI On Motherboard SunRiver 8086 5643 ES1371, ES1373 AudioPCI On Motherboard Vancouver 8086 5753 ES1371, ES1373 AudioPCI On Motherboard WS440BX 5000 ES1370 [AudioPCI] 5880 5880B / Creative Labs CT5880 1274 2000 Creative CT4810 [Sound Blaster AudioPCI 128] 1274 2003 Creative SoundBlaster AudioPCI 128 1274 5880 Creative CT4750 [Sound Blaster PCI 128] 1274 8001 Creative CT4750 [Sound Blaster 16 PCI/PCI 128/4.1 Digital] 1458 a000 5880 AudioPCI On Motherboard 6OXET 1462 6880 5880 AudioPCI On Motherboard MS-6188 1.00 270f 2001 5880 AudioPCI On Motherboard 6CTR 270f 2200 5880 AudioPCI On Motherboard 6WTX 270f 7040 5880 AudioPCI On Motherboard 6ATA4 8001 CT5880 [AudioPCI] 8002 5880A [AudioPCI] 1275 Network Appliance Corporation 1276 Switched Network Technologies, Inc. 1277 Comstream 1278 Transtech Parallel Systems Ltd. 0701 TPE3/TM3 PowerPC Node 0710 TPE5 PowerPC PCI board 1100 PMC-FPGA02 1101 TS-C43 card with 4 ADSP-TS101 processors 1279 Transmeta Corporation 0060 TM8000 Northbridge 0061 TM8000 AGP bridge 0295 Northbridge 0395 LongRun Northbridge 0396 SDRAM controller 0397 BIOS scratchpad 127a Rockwell International 1002 HCF 56k Data/Fax Modem 1092 094c SupraExpress 56i PRO [Diamond SUP2380] 122d 4002 HPG / MDP3858-U 122d 4005 MDP3858-E 122d 4007 MDP3858-A/-NZ 122d 4012 MDP3858-SA 122d 4017 MDP3858-W 122d 4018 MDP3858-W 127a 1002 Rockwell 56K D/F HCF Modem 1003 HCF 56k Data/Fax Modem 0e11 b0bc 229-DF Zephyr 0e11 b114 229-DF Cheetah 1033 802b 229-DF 13df 1003 PCI56RX Modem 13e0 0117 IBM 13e0 0147 IBM F-1156IV+/R3 Spain V.90 Modem 13e0 0197 IBM 13e0 01c7 IBM F-1156IV+/R3 WW V.90 Modem 13e0 01f7 IBM 1436 1003 IBM 1436 1103 IBM 5614PM3G V.90 Modem 1436 1602 Compaq 229-DF Ducati 1004 HCF 56k Data/Fax/Voice Modem 1048 1500 MicroLink 56k Modem 10cf 1059 Fujitsu 229-DFRT 1005 HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem 1005 127a AOpen FM56-P 1033 8029 229-DFSV 1033 8054 Modem 10cf 103c Fujitsu 10cf 1055 Fujitsu 229-DFSV 10cf 1056 Fujitsu 229-DFSV 122d 4003 MDP3858SP-U 122d 4006 Packard Bell MDP3858V-E 122d 4008 MDP3858SP-A/SP-NZ 122d 4009 MDP3858SP-E 122d 4010 MDP3858V-U 122d 4011 MDP3858SP-SA 122d 4013 MDP3858V-A/V-NZ 122d 4015 MDP3858SP-W 122d 4016 MDP3858V-W 122d 4019 MDP3858V-SA 13df 1005 PCI56RVP Modem 13e0 0187 IBM 13e0 01a7 IBM 13e0 01b7 IBM DF-1156IV+/R3 Spain V.90 Modem 13e0 01d7 IBM DF-1156IV+/R3 WW V.90 Modem 1436 1005 IBM 1436 1105 IBM 1437 1105 IBM 5614PS3G V.90 Modem 1022 HCF 56k Modem 1436 1303 M3-5614PM3G V.90 Modem 1023 HCF 56k Data/Fax Modem 122d 4020 Packard Bell MDP3858-WE 122d 4023 MDP3858-UE 13e0 0247 IBM F-1156IV+/R6 Spain V.90 Modem 13e0 0297 IBM 13e0 02c7 IBM F-1156IV+/R6 WW V.90 Modem 1436 1203 IBM 1436 1303 IBM 1024 HCF 56k Data/Fax/Voice Modem 1025 HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem 10cf 106a Fujitsu 235-DFSV 122d 4021 Packard Bell MDP3858V-WE 122d 4022 MDP3858SP-WE 122d 4024 MDP3858V-UE 122d 4025 MDP3858SP-UE 1026 HCF 56k PCI Speakerphone Modem 1032 HCF 56k Modem 1033 HCF 56k Modem 1034 HCF 56k Modem 1035 HCF 56k PCI Speakerphone Modem 1036 HCF 56k Modem 1085 HCF 56k Volcano PCI Modem 2004 HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem 2005 HCF 56k Data/Fax Modem 104d 8044 229-DFSV 104d 8045 229-DFSV 104d 8055 PBE/Aztech 235W-DFSV 104d 8056 235-DFSV 104d 805a Modem 104d 805f Modem 104d 8074 Modem 2013 HSF 56k Data/Fax Modem 1179 0001 Modem 1179 ff00 Modem 2014 HSF 56k Data/Fax/Voice Modem 10cf 1057 Fujitsu Citicorp III 122d 4050 MSP3880-U 122d 4055 MSP3880-W 2015 HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem 10cf 1063 Fujitsu 10cf 1064 Fujitsu 1468 2015 Fujitsu 2016 HSF 56k Data/Fax/Voice/Spkp Modem 122d 4051 MSP3880V-W 122d 4052 MSP3880SP-W 122d 4054 MSP3880V-U 122d 4056 MSP3880SP-U 122d 4057 MSP3880SP-A 4311 Riptide HSF 56k PCI Modem 127a 4311 Ring Modular? Riptide HSF RT HP Dom 13e0 0210 HP-GVC 4320 Riptide PCI Audio Controller 1235 4320 Riptide PCI Audio Controller 4321 Riptide HCF 56k PCI Modem 1235 4321 Hewlett Packard DF 1235 4324 Hewlett Packard DF 13e0 0210 Hewlett Packard DF 144d 2321 Riptide 4322 Riptide PCI Game Controller 1235 4322 Riptide PCI Game Controller 8234 RapidFire 616X ATM155 Adapter 108d 0022 RapidFire 616X ATM155 Adapter 108d 0027 RapidFire 616X ATM155 Adapter 127b Pixera Corporation 127c Crosspoint Solutions, Inc. 127d Vela Research 127e Winnov, L.P. 0010 Videum 1000 Plus 127f Fujifilm 1280 Photoscript Group Ltd. 1281 Yokogawa Electric Corporation 1282 Davicom Semiconductor, Inc. 6585 DM562P V90 Modem 9009 DM9009 Ethernet Controller 9100 21x4x DEC-Tulip compatible 10/100 Ethernet 9102 DM9102 Fast Ethernet Controller # Subsystem ID is main ID reveresed. 0291 8212 DM9102A (DM9102AE, SM9102AF) Ethernet 100/10 MBit 9132 Ethernet 100/10 MBit 1283 Integrated Technology Express, Inc. 673a IT8330G 8152 IT8152F/G Advanced RISC-to-PCI Companion Chip 8211 ITE 8211F Single Channel UDMA 133 1043 8138 P5GD1-VW Mainboard 8212 IT8212 Dual channel ATA RAID controller 1283 0001 IT/ITE8212 Dual channel ATA RAID controller 8213 IT8213 IDE Controller 1458 b000 GA-EG45M-DS2H Mainboard 8330 IT8330G 8872 IT887xF PCI to ISA I/O chip with SMB, GPIO, Serial or Parallel Port 8888 IT8888F/G PCI to ISA Bridge with SMB [Golden Gate] 8889 IT8889F PCI to ISA Bridge 8892 IT8892E PCIe to PCI Bridge 8086 200d DH61CR motherboard 8893 IT8893E PCIe to PCI Bridge e886 IT8330G 1284 Sahara Networks, Inc. 1285 Platform Technologies, Inc. 0100 AGOGO sound chip (aka ESS Maestro 1) 1286 Mazet GmbH 1287 M-Pact, Inc. 001e LS220D DVD Decoder 001f LS220C DVD Decoder 1288 Timestep Corporation 1289 AVC Technology, Inc. 128a Asante Technologies, Inc. 128b Transwitch Corporation 128c Retix Corporation 128d G2 Networks, Inc. 0021 ATM155 Adapter 128e Hoontech Corporation/Samho Multi Tech Ltd. 0008 ST128 WSS/SB 0009 ST128 SAM9407 000a ST128 Game Port 000b ST128 MPU Port 000c ST128 Ctrl Port 128f Tateno Dennou, Inc. 1290 Sord Computer Corporation 1291 NCS Computer Italia 1292 Tritech Microelectronics Inc fc02 Pyramid3D TR25202 1293 Media Reality Technology 1294 Rhetorex, Inc. 1295 Imagenation Corporation 0800 PXR800 1000 PXD1000 1296 Kofax Image Products 1297 Holco Enterprise Co, Ltd/Shuttle Computer 9602 RS780/RS880 PCI to PCI bridge (int gfx) 1298 Spellcaster Telecommunications Inc. 1299 Knowledge Technology Lab. 129a VMetro, inc. 0615 PBT-615 PCI-X Bus Analyzer 0715 cPCI Bus Analyzer 1100 PMC-FPGA05 1106 XMC-FPGA05F, PCI interface 1107 XMC-FPGA05F, PCIe interface 1108 XMC-FPGA05D, PCI interface 1109 XMC-FPGA05D, PCIe interface 129b Image Access 129c Jaycor 129d Compcore Multimedia, Inc. 129e Victor Company of Japan, Ltd. 129f OEC Medical Systems, Inc. 12a0 Allen-Bradley Company 12a1 Simpact Associates, Inc. 12a2 Newgen Systems Corporation 12a3 Lucent Technologies 8105 T8105 H100 Digital Switch 12a4 NTT Innovative Devices Corporation 12a5 Vision Dynamics Ltd. 12a6 Scalable Networks, Inc. 12a7 AMO GmbH 12a8 News Datacom 12a9 Xiotech Corporation 12aa SDL Communications, Inc. 12ab YUAN High-Tech Development Co., Ltd. 0000 MPG160/Kuroutoshikou ITVC15-STVLP 0002 AU8830 [Vortex2] Based Sound Card With A3D Support 0003 T507 (DVB-T) TV tuner/capture device 2300 Club-3D Zap TV2100 3000 MPG-200C PCI DVD Decoder Card 4789 MPC788 MiniPCI Hybrid TV Tuner fff3 MPG600/Kuroutoshikou ITVC16-STVLP ffff MPG600/Kuroutoshikou ITVC16-STVLP 12ac Measurex Corporation 12ad Multidata GmbH 12ae Alteon Networks Inc. 0001 AceNIC Gigabit Ethernet 1014 0104 Gigabit Ethernet-SX PCI Adapter 12ae 0001 Gigabit Ethernet-SX (Universal) 0002 AceNIC Gigabit Ethernet (Copper) 10a9 8002 Acenic Gigabit Ethernet 12ae 0002 Gigabit Ethernet-T (3C986-T) 00fa Farallon PN9100-T Gigabit Ethernet 12af TDK Corporation 5831 GBDriver GX1 x2 NVMe SSD Controller (DRAM-less) 12b0 Jorge Scientific Corp 12b1 GammaLink 12b2 General Signal Networks 12b3 Inter-Face Co Ltd 12b4 FutureTel Inc 12b5 Granite Systems Inc. 12b6 Natural Microsystems 12b7 Cognex Corporation 12b8 Korg # Nee US Robotics 12b9 3Com Corp, Modem Division 1006 WinModem 12b9 005c USR 56k Internal Voice WinModem (Model 3472) 12b9 005e USR 56k Internal WinModem (Models 662975) 12b9 0062 USR 56k Internal Voice WinModem (Model 662978) 12b9 0068 USR 56k Internal Voice WinModem (Model 5690) 12b9 007a USR 56k Internal Voice WinModem (Model 662974) 12b9 007f USR 56k Internal WinModem (Models 5698, 5699) 12b9 0080 USR 56k Internal WinModem (Models 2975, 3528) 12b9 0081 USR 56k Internal Voice WinModem (Models 2974, 3529) 12b9 0091 USR 56k Internal Voice WinModem (Model 2978) 1007 USR 56k Internal WinModem 12b9 00a3 USR 56k Internal WinModem (Model 3595) 12b9 00c4 U.S. Robotics V.92 Voice Faxmodem (2884A/B/C) 1008 56K FaxModem Model 5610 12b9 00a2 USR 56k Internal FAX Modem (Model 2977) 12b9 00aa USR 56k Internal Voice Modem (Model 2976) 12b9 00ab USR 56k Internal Voice Modem (Model 5609) 12b9 00ac USR 56k Internal Voice Modem (Model 3298) 12b9 00ad USR 56k Internal FAX Modem (Model 5610) 12b9 00d3 USR 56K Internal V92 FAX Modem (Model 5610) 12b9 baba USR 56K Internal Voice Modem 3CP3298-DEL (Model 5601) [Hawk] 12ba BittWare, Inc. 12bb Nippon Unisoft Corporation 12bc Array Microsystems 12bd Computerm Corp. 12be Anchor Chips Inc. 3041 AN3041Q CO-MEM 3042 AN3042Q CO-MEM Lite 12be 3042 Anchor Chips Lite Evaluation Board 12bf Fujifilm Microdevices 12c0 Infimed 12c1 GMM Research Corp 12c2 Mentec Limited 12c3 Holtek Microelectronics Inc 0058 PCI NE2K Ethernet 5598 PCI NE2K Ethernet 12c4 Connect Tech Inc 0001 Blue HEAT/PCI 8 (RS232/CL/RJ11) 0002 Blue HEAT/PCI 4 (RS232) 0003 Blue HEAT/PCI 2 (RS232) 0004 Blue HEAT/PCI 8 (UNIV, RS485) 0005 Blue HEAT/PCI 4+4/6+2 (UNIV, RS232/485) 0006 Blue HEAT/PCI 4 (OPTO, RS485) 0007 Blue HEAT/PCI 2+2 (RS232/485) 0008 Blue HEAT/PCI 2 (OPTO, Tx, RS485) 0009 Blue HEAT/PCI 2+6 (RS232/485) 000a Blue HEAT/PCI 8 (Tx, RS485) 000b Blue HEAT/PCI 4 (Tx, RS485) 000c Blue HEAT/PCI 2 (20 MHz, RS485) 000d Blue HEAT/PCI 2 PTM 0100 NT960/PCI 0201 cPCI Titan - 2 Port 0202 cPCI Titan - 4 Port 0300 CTI PCI UART 2 (RS232) 0301 CTI PCI UART 4 (RS232) 0302 CTI PCI UART 8 (RS232) 0310 CTI PCI UART 1+1 (RS232/485) 0311 CTI PCI UART 2+2 (RS232/485) 0312 CTI PCI UART 4+4 (RS232/485) 0320 CTI PCI UART 2 0321 CTI PCI UART 4 0322 CTI PCI UART 8 0330 CTI PCI UART 2 (RS485) 0331 CTI PCI UART 4 (RS485) 0332 CTI PCI UART 8 (RS485) 12c5 Picture Elements Incorporated 007e Imaging/Scanning Subsystem Engine 007f Imaging/Scanning Subsystem Engine 0081 PCIVST [Grayscale Thresholding Engine] 0085 Video Simulator/Sender 0086 THR2 Multi-scale Thresholder 12c6 Mitani Corporation 12c7 Dialogic Corp # 12 Line, 6 port, CT-BUS/SC-BUS, loopstart FXO adaptor. 0546 Springware D/120JCT-LS # 24 Channel, 1 Port, CT-BUS/SC-BUS, T1/PRI adaptor. 0647 Springware D/240JCT-T1 # 4 Line, 4 port, CT-BUS/SC-BUS, loopstart FXO adaptor. Revision 01 0676 Springware D/41JCT-LS # 48 Channel, 2 Port, CT-BUS/SC-BUS, T1/PRI adaptor. 0685 Springware D/480JCT-2T1 12c8 G Force Co, Ltd 12c9 Gigi Operations 12ca Integrated Computing Engines 12cb Antex Electronics Corporation 0027 SC4 (StudioCard) 002e StudioCard 2000 12cc Pluto Technologies International 12cd Aims Lab 12ce Netspeed Inc. 12cf Prophet Systems, Inc. 12d0 GDE Systems, Inc. 12d1 PSITech 12d2 NVidia / SGS Thomson (Joint Venture) 0008 NV1 0009 DAC64 0018 Riva128 1048 0c10 VICTORY Erazor 1048 0c15 VICTORY Erazor LT-8 107b 8030 STB Velocity 128 1092 0350 Viper V330 1092 1092 Viper V330 10b4 1b1b STB Velocity 128 10b4 1b1d STB Velocity 128 10b4 1b1e STB Velocity 128, PAL TV-Out 10b4 1b20 STB Velocity 128 Sapphire 10b4 1b21 STB Velocity 128 10b4 1b22 STB Velocity 128 AGP, NTSC TV-Out 10b4 1b23 STB Velocity 128 AGP, PAL TV-Out 10b4 1b27 STB Velocity 128 DVD 10b4 1b88 MVP Pro 128 10b4 222a STB Velocity 128 AGP 10b4 2230 STB Velocity 128 10b4 2232 STB Velocity 128 10b4 2235 STB Velocity 128 AGP 2a15 54a3 3DVision-SAGP / 3DexPlorer 3000 0019 Riva128ZX 0020 TNT 0028 TNT2 0029 UTNT2 002c VTNT2 00a0 ITNT2 12d3 Vingmed Sound A/S 12d4 Ulticom (Formerly DGM&S) 0200 T1 Card 12d5 Equator Technologies Inc 0003 BSP16 1000 BSP15 12d6 Analogic Corp 12d7 Biotronic SRL # acquired by Diodes Inc. 12d8 Pericom Semiconductor 01a7 7C21P100 2-port PCI-X to PCI-X Bridge # 3Port-3Lane PCI Express Switch GreenPacket Family 0303 PCI Express Switch 3-3 # PI7C9X20508GP 5Port-8Lane PCI Express Switch GreenPacket Family 0508 PI7C9X20508GP PCI Express Switch 5Port-8Lane 2304 PI7C9X2G304 EL/SL PCIe2 3-Port/4-Lane Packet Switch 2308 PI7C9X2G308GP 3-Ports/8-lane PCIe 2.0 Switch 2404 PI7C9X2G404 EL/SL PCIe2 4-Port/4-Lane Packet Switch 2608 PI7C9X2G608GP PCIe2 6-Port/8-Lane Packet Switch ea50 cc10 RXi2-BP 400a PI7C9X442SL PCIe Bridge Port 400c PI7C9X440SL PCIe Bridge Port 400e PI7C9X440SL/PI7C9X442SL USB OHCI Controller 400f PI7C9X440SL/PI7C9X442SL USB EHCI Controller 71e2 PI7C7300A/PI7C7300D PCI-to-PCI Bridge 71e3 PI7C7300A/PI7C7300D PCI-to-PCI Bridge (Secondary Bus 2) 8140 PI7C8140A PCI-to-PCI Bridge 8148 PI7C8148A/PI7C8148B PCI-to-PCI Bridge 8150 PCI to PCI Bridge 8152 PI7C8152A/PI7C8152B/PI7C8152BI PCI-to-PCI Bridge 8154 PI7C8154A/PI7C8154B/PI7C8154BI PCI-to-PCI Bridge 8619 PI7C9X2G1616PR PCIe2 16-Port/16-Lane Packet Switch b404 PI7C9X2G404 EV/SV PCIe2 4-Port/4-Lane Packet Switch e110 PI7C9X110 PCIe- to-PCI bridge 1775 11cc CC11/CL11 CompactPCI Bridge e111 PI7C9X111SL PCIe-to-PCI Reversible Bridge e112 PI7C9X112SL PCIe-to-PCI Bridge e113 PI7C9X113SL/PI7C9X118SL PCIe-to-PCI Bridge e130 PCI Express to PCI-XPI7C9X130 PCI-X Bridge 12d9 Aculab PLC 0002 PCI Prosody 0004 cPCI Prosody 0005 Aculab E1/T1 PCI card 1078 Prosody X class e1000 device 12d9 000d Prosody X PCI 12d9 000e Prosody X cPCI 12da True Time Inc. 12db Annapolis Micro Systems, Inc 12dc Symicron Computer Communication Ltd. 12dd Management Graphics 12de Rainbow Technologies 0200 CryptoSwift CS200 12df SBS Technologies Inc 12e0 Chase Research 0010 ST16C654 Quad UART 0020 ST16C654 Quad UART 0030 ST16C654 Quad UART 12e1 Nintendo Co, Ltd 12e2 Datum Inc. Bancomm-Timing Division 12e3 Imation Corp - Medical Imaging Systems 12e4 Brooktrout Technology Inc 12e5 Apex Semiconductor Inc 12e6 Cirel Systems 12e7 Sunsgroup Corporation 12e8 Crisc Corp 12e9 GE Spacenet 12ea Zuken 12eb Aureal Semiconductor 0001 Vortex 1 0000 0300 Terasound A3D PCI 104d 8036 AU8820 Vortex Digital Audio Processor 1092 2000 Sonic Impact A3D 1092 2100 Sonic Impact A3D 1092 2110 Sonic Impact A3D 1092 2200 Sonic Impact A3D 122d 1002 SC 338-A3D 12eb 0001 AU8820 Vortex Digital Audio Processor 5053 3355 Montego 50b2 1111 XLerate 0002 Vortex 2 104d 8049 AU8830 Vortex 3D Digital Audio Processor 104d 807b AU8830 Vortex 3D Digital Audio Processor 1092 3000 Monster Sound II 1092 3001 Monster Sound II 1092 3002 Monster Sound II 1092 3003 Monster Sound II 1092 3004 Monster Sound II 12eb 0002 AU8830 Vortex 3D Digital Audio Processor 12eb 0088 AU8830 Vortex 3D Digital Audio Processor 144d 3510 AU8830 Vortex 3D Digital Audio Processor 5053 3356 Montego II 0003 AU8810 Vortex Digital Audio Processor 104d 8049 AU8810 Vortex Digital Audio Processor 104d 8077 AU8810 Vortex Digital Audio Processor 109f 1000 AU8810 Vortex Digital Audio Processor 12eb 0003 AU8810 Vortex Digital Audio Processor 1462 6780 AU8810 Vortex Digital Audio Processor 14a4 2073 AU8810 Vortex Digital Audio Processor 14a4 2091 AU8810 Vortex Digital Audio Processor 14a4 2104 AU8810 Vortex Digital Audio Processor 14a4 2106 AU8810 Vortex Digital Audio Processor 8803 Vortex 56k Software Modem 12eb 8803 Vortex 56k Software Modem 12ec 3A International, Inc. 12ed Optivision Inc. 12ee Orange Micro 12ef Vienna Systems 12f0 Pentek 12f1 Sorenson Vision Inc 12f2 Gammagraphx, Inc. 12f3 Radstone Technology 12f4 Megatel 12f5 Forks 12f6 Dawson France 12f7 Cognex 12f8 Electronic Design GmbH 0002 VideoMaker 12f9 Four Fold Ltd 12fb Spectrum Signal Processing 0001 PMC-MAI 00f5 F5 Dakar 02ad PMC-2MAI 2adc ePMC-2ADC 3100 PRO-3100 3500 PRO-3500 4d4f Modena 8120 ePMC-8120 da62 Daytona C6201 PCI (Hurricane) db62 Ingliston XBIF dc62 Ingliston PLX9054 dd62 Ingliston JTAG/ISP eddc ePMC-MSDDC fa01 ePMC-FPGA 12fc Capital Equipment Corp 12fd I2S 12fe ESD Electronic System Design GmbH 12ff Lexicon 1300 Harman International Industries Inc 1302 Computer Sciences Corp 1303 Innovative Integration 0030 X3-SDF 4-channel XMC acquisition board 1304 Juniper Networks 1305 Netphone, Inc 1306 Duet Technologies # Nee ComputerBoards 1307 Measurement Computing 0001 PCI-DAS1602/16 000b PCI-DIO48H 000c PCI-PDISO8 000d PCI-PDISO16 000f PCI-DAS1200 0010 PCI-DAS1602/12 0014 PCI-DIO24H 0015 PCI-DIO24H/CTR3 0016 PCI-DIO48H/CTR15 0017 PCI-DIO96H 0018 PCI-CTR05 0019 PCI-DAS1200/JR 001a PCI-DAS1001 001b PCI-DAS1002 001c PCI-DAS1602JR/16 001d PCI-DAS6402/16 001e PCI-DAS6402/12 001f PCI-DAS16/M1 0020 PCI-DDA02/12 0021 PCI-DDA04/12 0022 PCI-DDA08/12 0023 PCI-DDA02/16 0024 PCI-DDA04/16 0025 PCI-DDA08/16 0026 PCI-DAC04/12-HS 0027 PCI-DAC04/16-HS 0028 PCI-DIO24 0029 PCI-DAS08 002c PCI-INT32 0033 PCI-DUAL-AC5 0034 PCI-DAS-TC 0035 PCI-DAS64/M1/16 0036 PCI-DAS64/M2/16 0037 PCI-DAS64/M3/16 004b PCI-MDB64 004c PCI-DAS1000 004d PCI-QUAD04 0052 PCI-DAS4020/12 0053 PCIM-DDA06/16 0054 PCI-DIO96 0055 CPCI-DIO24H 0056 PCIM-DAS1602/16 0057 PCI-DAS3202/16 0059 PCI-QUAD-AC5 005a CPCI-DIO96H 005b CPCI-DIO48H 005d PCI-DAS6023 005e PCI-DAS6025 005f PCI-DAS6030 0060 PCI-DAS6031 0061 PCI-DAS6032 0062 PCI-DAS6033 0063 PCI-DAS6034 0064 PCI-DAS6035 0065 PCI-DAS6040 0066 PCI-DAS6052 0067 PCI-DAS6070 0068 PCI-DAS6071 006e PCI-CTR10 006f PCI-DAS6036 0070 PCI-DAC6702 0071 PCI-DAC6703 0074 PCI-CTR20HD 0077 PCI-DIO24/LP 0078 PCI-DAS6013 0079 PCI-DAS6014 007b PCIM-DAS16JR/16 007e PCI-DIO24/S 00a5 PCI-2511 00a6 PCI-2513 00a7 PCI-2515 00a8 PCI-2517 00be PCI-QUAD05 00da PCIe-DIO96H 00db PCIe-DIO24 0115 PCIe-DAS1602/16 1308 Jato Technologies Inc. 0001 NetCelerator Adapter 1308 0001 NetCelerator Adapter 1309 AB Semiconductor Ltd 130a Mitsubishi Electric Microcomputer 130b Colorgraphic Communications Corp 130c Ambex Technologies, Inc 130d Accelerix Inc 130e Yamatake-Honeywell Co. Ltd 130f Advanet Inc 1310 Gespac 1311 Videoserver, Inc 1312 Acuity Imaging, Inc 1313 Yaskawa Electric Co. 1315 Wavesat 1316 Teradyne Inc 1317 ADMtek 0981 21x4x DEC-Tulip compatible 10/100 Ethernet 0985 NC100 Network Everywhere Fast Ethernet 10/100 1734 100c Scenic N300 ADMtek AN983 10/100 Mbps PCI Adapter 1985 21x4x DEC-Tulip compatible 10/100 Ethernet 1385 511a FA511 1395 2103 CB100-EZ (4-LED version) 2850 HSP MicroModem 56 5120 ADM5120 OpenGate System-on-Chip 8201 ADM8211 802.11b Wireless Interface 10b8 2635 SMC2635W v1 802.11b Wireless Cardbus Adapter 1317 8201 SMC2635W v2 802.11b Wireless Cardbus Adapter 8211 ADM8211 802.11b Wireless Interface 9511 21x4x DEC-Tulip compatible 10/100 Ethernet 1318 Packet Engines Inc. 0911 GNIC-II PCI Gigabit Ethernet [Hamachi] 1319 Fortemedia, Inc 0801 Xwave QS3000A [FM801] 1319 1319 FM801 PCI Audio 0802 Xwave QS3000A [FM801 game port] 1319 1319 FM801 PCI Joystick 1000 FM801 PCI Audio 1001 FM801 PCI Joystick 131a Finisar Corp. 131c Nippon Electro-Sensory Devices Corp 131d Sysmic, Inc. 131e Xinex Networks Inc 131f Siig Inc 1000 CyberSerial (1-port) 16550 1001 CyberSerial (1-port) 16650 1002 CyberSerial (1-port) 16850 1010 Duet 1S(16550)+1P 1011 Duet 1S(16650)+1P 1012 Duet 1S(16850)+1P 1020 CyberParallel (1-port) 1021 CyberParallel (2-port) 1030 CyberSerial (2-port) 16550 1031 CyberSerial (2-port) 16650 1032 CyberSerial (2-port) 16850 1034 Trio 2S(16550)+1P 1035 Trio 2S(16650)+1P 1036 Trio 2S(16850)+1P 1050 CyberSerial (4-port) 16550 1051 CyberSerial (4-port) 16650 1052 CyberSerial (4-port) 16850 2000 CyberSerial (1-port) 16550 2001 CyberSerial (1-port) 16650 2002 CyberSerial (1-port) 16850 2010 Duet 1S(16550)+1P 2011 Duet 1S(16650)+1P 2012 Duet 1S(16850)+1P 2020 CyberParallel (1-port) 2021 CyberParallel (2-port) 2030 CyberSerial (2-port) 16550 131f 2030 PCI Serial Card 2031 CyberSerial (2-port) 16650 2032 CyberSerial (2-port) 16850 2040 Trio 1S(16550)+2P 2041 Trio 1S(16650)+2P 2042 Trio 1S(16850)+2P 2050 CyberSerial (4-port) 16550 2051 CyberSerial (4-port) 16650 2052 CyberSerial (4-port) 16850 2060 Trio 2S(16550)+1P 2061 Trio 2S(16650)+1P 2062 Trio 2S(16850)+1P 2081 CyberSerial (8-port) ST16654 1320 Crypto AG 1321 Arcobel Graphics BV 1322 MTT Co., Ltd 1323 Dome Inc 1324 Sphere Communications 1325 Salix Technologies, Inc 1326 Seachange international 1327 Voss scientific 1328 quadrant international 1329 Productivity Enhancement 132a Microcom Inc. 132b Broadband Technologies 132c Micrel Inc 132d Integrated Silicon Solution, Inc. 1330 MMC Networks 1331 RadiSys Corporation 0030 ENP-2611 8200 82600 Host Bridge 8201 82600 IDE 8202 82600 USB 8210 82600 PCI Bridge 1332 Micro Memory 5415 MM-5415CN PCI Memory Module with Battery Backup 5425 MM-5425CN PCI 64/66 Memory Module with Battery Backup 6140 MM-6140D 1334 Redcreek Communications, Inc 1335 Videomail, Inc 1337 Third Planet Publishing 1338 BT Electronics 133a Vtel Corp 133b Softcom Microsystems 133c Holontech Corp 133d SS Technologies 133e Virtual Computer Corp 133f SCM Microsystems 1340 Atalla Corp 1341 Kyoto Microcomputer Co 1342 Promax Systems Inc 1343 Phylon Communications Inc # nee Crucial Technology 1344 Micron Technology Inc 5150 RealSSD P320h 5151 RealSSD P320m 5152 RealSSD P320s 5153 RealSSD P325m 5160 RealSSD P420h 5161 RealSSD P420m 5163 RealSSD P425m 5180 9100 PRO NVMe SSD 5181 9100 MAX NVMe SSD 5188 7100 ECO NVMe SSD 5189 7100 MAX NVMe SSD 5190 9200 ECO NVMe SSD 5191 9200 PRO NVMe SSD 5192 9200 MAX NVMe SSD 5196 9400 PRO NVMe SSD 5197 9400 MAX NVMe SSD 51a2 7300 PRO NVMe SSD 1344 2000 960GB U.2 1344 3000 1920GB U.2 1344 4000 3480GB U.2 1344 5000 7680GB U.2 51a3 7300 MAX NVMe SSD 1344 1100 400GB M.2 1344 2000 800GB U.2 1344 2100 800GB M.2 1344 3000 1600GB U.2 1344 4000 3200GB U.2 1344 5000 6400GB U.2 51b1 9300 PRO NVMe SSD 1344 4000 3.84TB U.2 1344 5000 7.68TB U.2 1344 6000 15.36TB U.2 51b2 9300 MAX NVMe SSD 1344 4000 3.2TB U.2 1344 5000 6.4 TB U.2 1344 6000 12.8TB U.2 51b7 7500 PRO NVMe SSD 1028 22e7 DC NVMe 7500 U.2 SED RI 15.36TB 1028 22e8 DC NVMe 7500 U.2 SED RI 7.68TB 1028 22e9 DC NVMe 7500 U.2 SED RI 3.84TB 1028 22ea DC NVMe 7500 U.2 SED RI 1.92TB 1028 22eb DC NVMe 7500 U.2 SED RI 960GB 1028 22ec DC NVMe 7500 U.2 ISE RI 15.36TB 1028 22ed DC NVMe 7500 U.2 ISE RI 7.68TB 1028 22ee DC NVMe 7500 U.2 ISE RI 3.84TB 1028 22ef DC NVMe 7500 U.2 ISE RI 1.92TB 1028 22f0 DC NVMe 7500 U.2 ISE RI 960GB 51b8 7500 MAX NVMe SSD 1028 22f1 DC NVMe 7500 U.2 ISE MU 12.8TB 1028 22f2 DC NVMe 7500 U.2 ISE MU 6.4TB 1028 22f3 DC NVMe 7500 U.2 ISE MU 3.2TB 1028 22f4 DC NVMe 7500 U.2 ISE MU 1.6TB 1028 22f5 DC NVMe 7500 U.2 ISE MU 800GB 51b9 6500 ION NVMe SSD 1028 22e6 Ent NVMe 6500 RI 30.72TB 1028 22f6 Ent NVMe 6500 RI FIPS 30.72TB 51c0 7400 PRO NVMe SSD 1028 2162 EC NVMe OPAL 7400 RI M.2 480GB 1028 2163 EC NVMe OPAL 7400 RI M.2 960GB 1028 2164 EC NVMe ISE 7400 RI M.2 480GB 1028 2165 EC NVMe ISE 7400 RI M.2 960GB 1028 216c EC NVMe ISE 7400 RI M.2 110 1.92TB 1028 216d EC NVMe ISE 7400 RI M.2 110 3.84TB 1028 216e EC NVMe OPAL 7400 RI M.2 110 1.92TB 1028 216f EC NVMe OPAL 7400 RI M.2 110 3.84TB 1028 2197 EC NVMe OPAL 7400 RI M.2 110 960GB 1028 224d EC NVMe ISE 7400 RI M.2 110 960GB 1344 1100 M.2 480GB 1344 2000 U.3 960GB 1344 2100 M.2 960GB 1344 2600 E1.S 960GB 1344 2b00 M.2 1920GB 1344 2d00 E1.2 1920GB 1344 3000 U.3 1920GB 1344 3e00 M.2 3840GB 1344 3f00 E1.S 3840GB 1344 4000 U.3 3840GB 1344 5000 U.3 7680GB 51c1 7400 MAX NVMe SSD 1028 216a EC NVMe ISE 7400 MU M.2 80 800GB 1028 216b EC NVMe OPAL 7400 MU M.2 80 800GB 1344 1100 M.2 400GB 1344 2000 U.3 800GB 1344 2100 M.2 800GB 1344 2600 E1.S 800GB 1344 2b00 M.2 1600GB 1344 2d00 E1.S 1600GB 1344 3000 U.3 1600GB 1344 3e00 M.2 3200GB 1344 3f00 E1.S 3200GB 1344 4000 U.3 3200GB 1344 5000 U.3 6400GB 51c3 7450 PRO NVMe SSD 1028 226b EC NVMe FIPS 7450 RI M.2 110 960GB 1028 226c EC NVMe ISE 7450 RI M.2 80 480GB 1028 226d EC NVMe ISE 7450 RI M.2 80 960GB 1028 226e EC NVMe SED 7450 RI M.2 80 480GB 1028 226f EC NVMe SED 7450 RI M.2 80 960GB 1028 2270 EC NVMe FIPS 7450 RI M.2 80 480GB 1028 2271 EC NVMe FIPS 7450 RI M.2 80 960GB 1028 2273 EC NVMe ISE 7450 RI M.2 110 960GB 1028 2274 EC NVMe ISE 7450 RI M.2 110 1920GB 1028 2275 EC NVMe ISE 7450 RI M.2 110 3840GB 1028 2278 DC NVMe ISE 7450 RI U.2 960GB 1028 2279 DC NVMe ISE 7450 RI U.2 1.92TB 1028 227a DC NVMe ISE 7450 RI U.2 3.84TB 1028 227b DC NVMe ISE 7450 RI U.2 7.68TB 1028 227c DC NVMe ISE 7450 RI U.2 15.36TB 1028 227d DC NVMe SED 7450 RI U.2 960GB 1028 227e DC NVMe SED 7450 RI U.2 1.92TB 1028 227f DC NVMe SED 7450 RI U.2 3.84TB 1028 2280 DC NVMe SED 7450 RI U.2 7.68TB 1028 2281 DC NVMe SED 7450 RI U.2 15.36TB 51c4 7450 MAX NVMe SSD 1028 2272 EC NVMe ISE 7450 MU M.2 80 800GB 1028 228b DC NVMe SED 7450 MU U.2 800GB 1028 228c DC NVMe ISE 7450 MU U.2 800GB 1028 228d DC NVMe SED 7450 MU U.2 1.6TB 1028 228e DC NVMe ISE 7450 MU U.2 1.6TB 1028 228f DC NVMe SED 7450 MU U.2 3.2TB 1028 2290 DC NVMe ISE 7450 MU U.2 3.2TB 1028 2291 DC NVMe SED 7450 MU U.2 6.4TB 1028 2292 DC NVMe ISE 7450 MU U.2 6.4TB 1028 2293 DC NVMe SED 7450 MU U.2 12.8TB 1028 2294 DC NVMe ISE 7450 MU U.2 12.8TB 1344 3000 U.3 1600GB [MTFDKCB1T6TFS/MTFDKCC1T6TFS] 5404 2210 NVMe SSD [Cobain] 5405 2300 NVMe SSD [Santana] 5407 3400 NVMe SSD [Hendrix] 5410 2200S NVMe SSD [Cassandra] 5411 2450 NVMe SSD [HendrixV] (DRAM-less) 5413 2400 NVMe SSD (DRAM-less) 5414 3460 NVMe SSD 5415 3500 NVMe SSD 5416 2550 NVMe SSD (DRAM-less) 6001 2100AI NVMe SSD [Nitro] 1345 Arescom Inc 1347 Odetics 1349 Sumitomo Electric Industries, Ltd. 134a DTC Technology Corp. 0001 Domex 536 0002 Domex DMX3194UP SCSI Adapter 134b ARK Research Corp. 134c Chori Joho System Co. Ltd 134d PCTel Inc 2189 HSP56 MicroModem 2486 2304WT V.92 MDC Modem 7890 HSP MicroModem 56 134d 0001 PCT789 adapter 7891 HSP MicroModem 56 134d 0001 HSP MicroModem 56 7892 HSP MicroModem 56 7893 HSP MicroModem 56 7894 HSP MicroModem 56 7895 HSP MicroModem 56 7896 HSP MicroModem 56 7897 HSP MicroModem 56 134e CSTI 134f Algo System Co Ltd 1350 Systec Co. Ltd 1351 Sonix Inc # nee Vierling Communication SAS, nee Thales Idatys 1353 dbeeSet Technology 0002 Proserver 0003 PCI-FUT 0004 PCI-S0 0005 PCI-FUT-S0 0006 OTDU-1U (FPGA Zynq-7000) 0007 OTDU-EX 1354 Dwave System Inc 1355 Kratos Analytical Ltd 1356 The Logical Co 1359 Prisa Networks 135a Brainboxes Ltd 0841 UC-268 4 port RS-232 card 0861 UC-257 2 port RS-232 + LPT card 0862 UC-257 2 port RS-232 + LPT card 0863 UC-257 2 port RS-232 + LPT card 0881 UC-279 8 port RS-232 card 08a1 UC-313 2 port RS-422/485 card 08a2 UC-313 2 port RS-422/485 card 08a3 UC-313 2 port RS-422/485 card 08c1 UC-310 2 port RS-422/485 Opto Isolated card 08e1 UC-302 2 port RS-232 card 08e2 UC-302 2 port RS-232 card 08e3 UC-302 2 port RS-232 card 0901 UC-431 3 port RS-232 card 0921 UC-420 3 + 1 port RS-232 card 0981 UC-475 1 + 1 port RS-232 + LPT card 0982 UC-475 1 + 1 port RS-232 + LPT card 09a1 UC-607 2 port RS-232 card 09a2 UC-607 2 port RS-232 card 09a3 UC-607 2 port RS-232 card 0a61 UC-324 1 port RS-422/485 card 0a81 UC-357 1 port RS-232 + 1 port RS-422/485 card 0a82 UC-357 1 port RS-232 + 1 port RS-422/485 card 0a83 UC-357 1 port RS-232 + 1 port RS-422/485 card 0aa1 UC-246 1 port RS-232 card 0aa2 UC-246 1 port RS-232 card 0ac1 UP-189 Powered 2 port RS-232 card 0ac2 UP-189 Powered 2 port RS-232 card 0ac3 UP-189 Powered 2 port RS-232 card 0b01 UC-346 4 port RS-422/485 card 0b02 UC-346 4 port RS-422/485 card 0b21 UP-200 Powered 2 port RS-232 card 0b22 UP-200 Powered 2 port RS-232 card 0b23 UP-200 Powered 2 port RS-232 card 0ba1 UC-101 1 + 1 port RS-232 card 0bc1 UC-203 1 + 1 port RS-232 + LPT card 0bc2 UC-203 1 + 1 port RS-232 + LPT card 0be1 UC-146 LPT card 0be2 UC-146 LPT card 0c01 UP-869 Powered 2 port RS-232 card 0c02 UP-869 Powered 2 port RS-232 card 0c03 UP-869 Powered 2 port RS-232 card 0c21 UP-880 Powered 2 port RS-232 card 0c22 UP-880 Powered 2 port RS-232 card 0c23 UP-880 Powered 2 port RS-232 card 0c41 UC-368 4 port RS-422/485 Opto Isolated card 0ca1 UC-253 2 port RS-232 card 0d21 UC-260 4 port RS-232 card 0d41 UC-836 4 port RS-232 card 0d60 IS-100 1 port RS-232 card 0d80 IS-200 2 port RS-232 card 0da0 IS-300 1 port RS-232 + LPT card 0dc0 IS-400 4 port RS-232 card 0de0 IS-500 LPT card 0e41 PX-279 8 port RS-232 card 0e61 UC-414 3 + 1 port RS-232 + LPT card 4000 PX-420 3 + 1 port RS-232 card 4001 PX-431 3 port RS-232 card 4002 PX-820 Powered 3 + 1 port RS-232 card 4003 PX-831 Powered 3 port RS-232 card 4004 PX-235 1 port RS-232 card 4005 PX-101 1 + 1 port RS-232 card 4006 PX-257 1 + 1 port RS-232 + LPT card (Serial port) 4007 PX-257 1 + 1 port RS-232 + LPT card (LPT port) 4008 PX-835 Powered 1 port RS-232 card 4009 PX-857 Powered 2 port RS-232 card 400a PX-260 4 port RS-232 card 400b PX-320 1 port RS-422/485 card 400c PX-313 2 port RS-422/485 card 400e PX-310 2 port RS-422/485 Opto Isolated card 400f PX-346 4 port RS-422/485 card 4010 PX-368 4 port RS-422/485 Opto Isolated card 4011 PX-420 3 + 1 port RS-232 card 4012 PX-431 3 port RS-232 card 4013 PX-820 Powered 3 + 1 port RS-232 card 4014 PX-831 Powered 3 port RS-232 card 4015 PX-257 2 port RS-232 card 4016 PX-235 1 port RS-232 card 4017 PX-835 Powered 1 port RS-232 card 4018 PX-857 Powered 2 port RS-232 card 4019 PX-101 1 + 1 port RS-232 card 401c PX-146 LPT card 401d PX-475 1 port RS-232 + LPT card (Serial port) 401e PX-803 Powered 1 + 1 port RS-232 card 401f PX-475 1 port RS-232 + LPT card (LPT port) 4027 IX-100 1 port RS-232 card 4028 IX-200 2 port RS-232 card 4029 IX-400 4 port RS-232 card 402a IX-500 LPT card 402c PX-263 4 port RS-232 + LPT card 4100 PX-272 4 + 1 port RS-232 + LPT card 135b Giganet Inc 135c Quatech Inc 0010 QSC-100 0020 DSC-100 0030 DSC-200/300 0040 QSC-200/300 0050 ESC-100D 0060 ESC-100M 00f0 MPAC-100 Synchronous Serial Card (Zilog 85230) 0120 QSCP-100 0130 DSCP-100 0140 QSCP-200/300 0150 DSCP-200/300 0170 QSCLP-100 0180 DSCLP-100 0181 DSC-100 0190 SSCLP-100 01a0 QSCLP-200/300 01b0 DSCLP-200/300 01b1 DSC-200/300 01c0 SSCLP-200/300 01e0 ESC(LP)-100 0258 DSPSX-200/300 135d ABB Network Partner AB 135e Sealevel Systems Inc 5101 Route 56.PCI - Multi-Protocol Serial Interface (Zilog Z16C32) 7101 Single Port RS-232/422/485/530 7201 Dual Port RS-232/422/485 Interface 7202 Dual Port RS-232 Interface 7401 Four Port RS-232 Interface 7402 Four Port RS-422/485 Interface 7801 Eight Port RS-232 Interface 7804 Eight Port RS-232/422/485 Interface 8001 8001 Digital I/O Adapter 135f I-Data International A-S 1360 Meinberg Funkuhren 0101 PCI32 DCF77 Radio Clock 0102 PCI509 DCF77 Radio Clock 0103 PCI510 DCF77 Radio Clock 0104 PCI511 DCF77 Radio Clock 0105 PEX511 DCF77 Radio Clock (PCI Express) 0106 PZF180PEX High Precision DCF77 Radio Clock (PCI Express) 0201 GPS167PCI GPS Receiver 0202 GPS168PCI GPS Receiver 0203 GPS169PCI GPS Receiver 0204 GPS170PCI GPS Receiver 0205 GPS170PEX GPS Receiver (PCI Express) 0206 GPS180PEX GPS Receiver (PCI Express) 0207 GLN180PEX GPS/GLONASS receiver (PCI Express) 0208 GPS180AMC GPS Receiver (PCI Express / MicroTCA / AdvancedMC) 0209 GNS181PEX GPS/Galileo/GLONASS/BEIDOU receiver (PCI Express) 0301 TCR510PCI IRIG Timecode Reader 0302 TCR167PCI IRIG Timecode Reader 0303 TCR511PCI IRIG Timecode Reader 0304 TCR511PEX IRIG Timecode Reader (PCI Express) 0305 TCR170PEX IRIG Timecode Reader (PCI Express) 0306 TCR180PEX IRIG Timecode Reader (PCI Express) 0501 PTP270PEX PTP/IEEE1588 slave card (PCI Express) 0601 FRC511PEX Free Running Clock (PCI Express) 1361 Soliton Systems K.K. 1362 Fujifacom Corporation 1363 Phoenix Technology Ltd 1364 ATM Communications Inc 1365 Hypercope GmbH 1366 Teijin Seiki Co. Ltd 1367 Hitachi Zosen Corporation 1368 Skyware Corporation 1369 Digigram 136a High Soft Tech 0004 HST Saphir VII mini PCI 0007 HST Saphir III E MultiLink 4 0008 HST Saphir III E MultiLink 8 000a HST Saphir III E MultiLink 2 136b Kawasaki Steel Corporation ff01 KL5A72002 Motion JPEG 136c Adtek System Science Co Ltd 136d Gigalabs Inc 136f Applied Magic Inc 1370 ATL Products 1371 CNet Technology Inc 434e GigaCard Network Adapter 1371 434e N-Way PCI-Bus Giga-Card 1000/100/10Mbps(L) 1373 Silicon Vision Inc 1374 Silicom Ltd. 0024 Silicom Dual port Giga Ethernet BGE Bypass Server Adapter 0025 Silicom Quad port Giga Ethernet BGE Bypass Server Adapter 0026 Silicom Dual port Fiber Giga Ethernet 546 Bypass Server Adapter 0027 Silicom Dual port Fiber LX Giga Ethernet 546 Bypass Server Adapter 0029 Silicom Dual port Copper Giga Ethernet 546GB Bypass Server Adapter 002a Silicom Dual port Fiber Giga Ethernet 546 TAP/Bypass Server Adapter 002b Silicom Dual port Copper Fast Ethernet 546 TAP/Bypass Server Adapter (PXE2TBI) 002c Silicom Quad port Copper Giga Ethernet 546GB Bypass Server Adapter (PXG4BPI) 002d Silicom Quad port Fiber-SX Giga Ethernet 546GB Bypass Server Adapter (PXG4BPFI) 002e Silicom Quad port Fiber-LX Giga Ethernet 546GB Bypass Server Adapter (PXG4BPFI-LX) 002f Silicom Dual port Fiber-SX Giga Ethernet 546GB Low profile Bypass Server Adapter (PXG2BPFIL) 0030 Silicom Dual port Fiber-LX Giga Ethernet 546GB Low profile Bypass Server Adapter 0031 Silicom Quad port Copper Giga Ethernet PCI-E Bypass Server Adapter 0032 Silicom Dual port Copper Fast Ethernet 546 TAP/Bypass Server Adapter 0034 Silicom Dual port Copper Giga Ethernet PCI-E BGE Bypass Server Adapter 0035 Silicom Quad port Copper Giga Ethernet PCI-E BGE Bypass Server Adapter 0036 Silicom Dual port Fiber Giga Ethernet PCI-E BGE Bypass Server Adapter 0037 Silicom Dual port Copper Ethernet PCI-E Intel based Bypass Server Adapter 0038 Silicom Quad port Copper Ethernet PCI-E Intel based Bypass Server Adapter 0039 Silicom Dual port Fiber-SX Ethernet PCI-E Intel based Bypass Server Adapter 003a Silicom Dual port Fiber-LX Ethernet PCI-E Intel based Bypass Server Adapter 003b Silicom Dual port Fiber Ethernet PMC Intel based Bypass Server Adapter (PMCX2BPFI) 003c Silicom Dual port Copper Ethernet PCI-X BGE based Bypass Server Adapter (PXG2BPRB) 003d 2-port Copper GBE Bypass with Caviume 1010 PCI-X 003e Silicom Dual port Fiber Giga Ethernet PCI-E 571 TAP/Bypass Server Adapter (PEG2TBFI) 003f Silicom Dual port Copper Giga Ethernet PCI-X 546 TAP/Bypass Server Adapter (PXG2TBI) 0040 Silicom Quad port Fiber-SX Giga Ethernet 571 Bypass Server Adapter (PEG4BPFI) 0042 4-port Copper GBE PMC-X Bypass 0043 Silicom Quad port Fiber-SX Giga Ethernet 546 Bypass Server Adapter (PXG4BPFID) 0045 Silicom 6 port Copper Giga Ethernet 546 Bypass Server Adapter (PXG6BPI) 0046 4-port bypass PCI-E w disconnect low profile 0047 Silicom Dual port Fiber-SX Giga Ethernet 571 Bypass Disconnect Server Adapter (PEG2BPFID) 004a Silicom Quad port Fiber-LX Giga Ethernet 571 Bypass Server Adapter (PEG4BPFI-LX) 004d Dual port Copper Giga Ethernet PCI-E Bypass Server Adapter 0401 Gigabit Ethernet ExpressModule Bypass Server Adapter 0420 Gigabit Ethernet ExpressModule Bypass Server Adapter 0460 Gigabit Ethernet Express Module Bypass Server Adapter 0461 Gigabit Ethernet ExpressModule Bypass Server Adapter 0462 Gigabit Ethernet ExpressModule Bypass Server Adapter 0470 Octal-port Copper Gigabit Ethernet Express Module Bypass Server Adapter 0482 Dual-port Fiber (SR) 10 Gigabit Ethernet ExpressModule Bypass Server Adapter 0483 Dual-port Fiber (LR) 10 Gigabit Ethernet ExpressModule Bypass Server Adapter 1375 Argosystems Inc 1376 LMC 1377 Electronic Equipment Production & Distribution GmbH 1378 Telemann Co. Ltd 1379 Asahi Kasei Microsystems Co Ltd 137a Mark of the Unicorn Inc 0001 PCI-324 Audiowire Interface 137b PPT Vision 137c Iwatsu Electric Co Ltd 137d Dynachip Corporation 137e Patriot Scientific Corporation 137f Japan Satellite Systems Inc 1380 Sanritz Automation Co Ltd 1381 Brains Co. Ltd 1382 Marian - Electronic & Software 0001 ARC88 audio recording card 2008 Prodif 96 Pro sound system 2048 Prodif Plus sound system 2088 Marc 8 Midi sound system 20c8 Marc A sound system 4008 Marc 2 sound system 4010 Marc 2 Pro sound system 4048 Marc 4 MIDI sound system 4088 Marc 4 Digi sound system 4248 Marc X sound system 4424 TRACE D4 Sound System 1383 Controlnet Inc 1384 Reality Simulation Systems Inc 1385 Netgear 006b WA301 802.11b Wireless PCI Adapter 4100 MA301 802.11b Wireless PCI Adapter 4601 WAG511 802.11a/b/g Dual Band Wireless PC Card 620a GA620 Gigabit Ethernet 630a GA630 Gigabit Ethernet 1386 Video Domain Technologies 1387 Systran Corp 1388 Hitachi Information Technology Co Ltd 1389 Applicom International 0001 PCI1500PFB [Intelligent fieldbus adaptor] 138a Fusion Micromedia Corp 003d VFS491 Validity Sensor 138b Tokimec Inc 138c Silicon Reality 138d Future Techno Designs pte Ltd 138e Basler GmbH 138f Patapsco Designs Inc 1390 Concept Development Inc 1391 Development Concepts Inc 1392 Medialight Inc 1393 Moxa Technologies Co Ltd 0001 UC7000 Serial 1020 CP-102 (2-port RS-232 PCI) 1021 CP-102UL (2-port RS-232 Universal PCI) 1022 CP-102U (2-port RS-232 Universal PCI) 1023 CP-102UF 1024 CP-102E (2-port RS-232 Smart PCI Express Serial Board) 1025 CP-102EL (2-port RS-232 Smart PCI Express Serial Board) 1040 Smartio C104H/PCI 1041 CP104U (4-port RS-232 Universal PCI) 1042 CP104JU (4-port RS-232 Universal PCI) 1043 CP104EL (4-port RS-232 Smart PCI Express) 1044 POS104UL (4-port RS-232 Universal PCI) 1045 CP-104EL-A (4-port RS-232 PCI Express Serial Board) 1080 CB108 (8-port RS-232 PC/104-plus Module) 1140 CT-114 series 1141 Industrio CP-114 1142 CB114 (4-port RS-232/422/485 PC/104-plus Module) 1143 CP-114UL (4-port RS-232/422/485 Smart Universal PCI Serial Board) 1144 CP-114EL (4-port RS-232/422/485 Smart PCI Express Serial Board) 1180 CP118U (8-port RS-232/422/485 Smart Universal PCI) 1181 CP118EL (8-port RS-232/422/485 Smart PCI Express) 1182 CP-118EL-A (8-port RS-232/422/485 PCI Express Serial Board) 1320 CP132 (2-port RS-422/485 PCI) 1321 CP132U (2-Port RS-422/485 Universal PCI) 1322 CP-132EL (2-port RS-422/485 Smart PCI Express Serial Board) 1340 CP134U (4-Port RS-422/485 Universal PCI) 1341 CB134I (4-port RS-422/485 PC/104-plus Module) 1380 CP138U (8-port RS-232/422/485 Smart Universal PCI) 1680 Smartio C168H/PCI 1681 CP-168U V2 Smart Serial Board (8-port RS-232) 1682 CP-168EL (8-port RS-232 Smart PCI Express) 1683 CP-168EL-A (8-port RS-232 PCI Express Serial Board) 2040 Intellio CP-204J 2180 Intellio C218 Turbo PCI 3200 Intellio C320 Turbo PCI 1394 Level One Communications 0001 LXT1001 Gigabit Ethernet 1186 4800 DGE-500SX 1394 0001 NetCelerator Adapter 1395 Ambicom Inc 1396 Cipher Systems Inc 1397 Cologne Chip Designs GmbH 08b4 ISDN network Controller [HFC-4S] 1397 08b4 HFC-4S [Cologne Chip HFC-4S Eval. Board] 1397 b51a HFC-4S [Allo.com BRI card] 1397 b520 HFC-4S [IOB4ST] 1397 b540 HFC-4S [Swyx SX2 QuadBri] 1397 b550 HFC-4S [Junghanns.NET quadBRI] 1397 b556 HFC-4S [Junghanns.NET duoBRI] 1397 b559 HFC-4S [Junghanns.NET duoBRI miniPCI] 1397 b560 HFC-4S [BeroNet BN4S0] 1397 b566 HFC-4S [BeroNet BN2S0] 1397 b567 HFC-4S [BeroNet BN1S0 miniPCI] 1397 b568 HFC-4S [BeroNet BN4S0 miniPCI] 1397 b569 HFC-4S [BeroNet BN2S0 miniPCI] 1397 b620 HFC-4S 1397 b752 HFC-4S [Junghanns.NET quadBRI PCIe] 1397 b761 HFC-4S [BeroNet BN2S0 PCIe] 1397 b762 HFC-4S [BeroNet BN4S0 PCIe] 1397 e884 HFC-4S [OpenVox B200P] 1397 e888 HFC-4S [OpenVox B200P / B400P] 16b8 ISDN network Controller [HFC-8S] 1397 16b8 HFC-8S [Cologne Chip HFC-8S Eval. Board] 1397 b521 HFC-8S [IOB4ST Recording] 1397 b522 HFC-8S [IOB8ST] 1397 b552 HFC-8S [Junghanns.NET octoBRI] 1397 b55b HFC-8S [Junghanns.NET octoBRI] 1397 b562 HFC-8S [BeroNet BN8S0] 1397 b56b HFC-8S [BeroNet BN8S0+] 1397 b622 HFC-8S 1397 e998 HFC-8S [OpenVox B800P] 2bd0 ISDN network controller [HFC-PCI] 0675 1704 ISDN Adapter (PCI Bus, D, C) 0675 1708 ISDN Adapter (PCI Bus, D, C, ACPI) 1397 2bd0 ISDN Board e4bf 1000 CI1-1-Harp 30b1 ISDN network Controller [HFC-E1] 1397 30b1 HFC-E1 [Cologne Chip HFC-E1 Eval. Board] 1397 b523 HFC-E1 [IOB1E1] 1397 b543 HFC-E1 [Swyx SX2 SinglePRI V2] 1397 b544 HFC-E1 [Swyx SX2 DualPRI V2] 1397 b553 HFC-E1 [Junghanns.NET singleE1] 1397 b554 HFC-E1 [Junghanns.NET doubleE1] 1397 b555 HFC-E1 [Junghanns.NET doubleE1 2.0] 1397 b55a HFC-E1 [Junghanns.NET singleE1 miniPCI] 1397 b563 HFC-E1 [beroNet BN1E1] 1397 b564 HFC-E1 [beroNet BN2E1] 1397 b565 HFC-E1 [beroNet BN2E1+] 1397 b56a HFC-E1 [beroNet BN1E1 miniPCI] b700 ISDN network controller PrimuX S0 [HFC-PCI] f001 GSM Network Controller [HFC-4GSM] 1398 Clarion co. Ltd 1399 Rios systems Co Ltd 139a Alacritech Inc 0001 Quad Port 10/100 Server Accelerator 0003 Single Port 10/100 Server Accelerator 0005 Single Port Gigabit Server Accelerator 139b Mediasonic Multimedia Systems Ltd 139c Quantum 3d Inc 139d EPL limited 139e Media4 139f Aethra s.r.l. 13a0 Crystal Group Inc 13a1 Kawasaki Heavy Industries Ltd 13a2 Ositech Communications Inc 13a3 Hifn Inc. 0005 7751 Security Processor 0006 6500 Public Key Processor 0007 7811 Security Processor 0012 7951 Security Processor 0014 78XX Security Processor 0016 8065 Security Processor 0017 8165 Security Processor 0018 8154 Security Processor 001d 7956 Security Processor 001f 7855 Security Processor 0020 7955 Security Processor 0026 8155 Security Processor 002e 9630 Compression Processor 002f 9725 Compression and Security Processor 13a3 1600 DR1600 Acceleration Card 13a3 1605 DR1605 Acceleration Card 13a3 1610 DR1610 Acceleration Card 13a3 1615 DR1615 Acceleration Card 13a3 1620 DR1620 Acceleration Card 13a3 1625 DR1625 Acceleration Card 0033 8201 Acceleration Processor 13a3 0036 DX1710 Acceleration Card 0034 8202 Acceleration Processor 13a3 0036 DX1720 Acceleration Card 0035 8203 Acceleration Processor 13a3 0036 DX1730 Acceleration Card 0037 8204 Acceleration Processor 13a3 0036 DX1740 Acceleration Card 9240 XR9240 Compression and Security Coprocessor [Panther II] 13a3 9200 DX2040 Compression and Security Acceleration Card [Panther II] 13a4 Rascom Inc 13a5 Audio Digital Imaging Inc 13a6 Videonics Inc 13a7 Teles AG 13a8 Exar Corp. 0152 XR17C/D152 Dual PCI UART 0154 XR17C154 Quad UART 0158 XR17C158 Octal UART 0252 XR17V252 Dual UART PCI controller 0254 XR17V254 Quad UART PCI controller 0258 XR17V258 Octal UART PCI controller 0352 XR17V3521 Dual PCIe UART 4c52 9252 LRUS9252H 2-Port RS232 Serial Adapter 13a9 Siemens Medical Systems, Ultrasound Group 13aa Broadband Networks Inc 13ab Arcom Control Systems Ltd 13ac Motion Media Technology Ltd 13ad Nexus Inc 13ae ALD Technology Ltd 13af T.Sqware 13b0 Maxspeed Corp 13b1 Tamura corporation 13b2 Techno Chips Co. Ltd 13b3 Lanart Corporation 13b4 Wellbean Co Inc 13b5 ARM 13b6 Dlog GmbH 13b7 Logic Devices Inc 13b8 Nokia Telecommunications oy 13b9 Elecom Co Ltd 13ba Oxford Instruments 13bb Sanyo Technosound Co Ltd 13bc Bitran Corporation 13bd Sharp corporation 13be Miroku Jyoho Service Co. Ltd 13bf Sharewave Inc 13c0 Microgate Corporation 0010 SyncLink Adapter v1 0020 SyncLink SCC Adapter 0030 SyncLink Multiport Adapter 0070 SyncLink GT Adapter 0080 SyncLink GT4 Adapter 00a0 SyncLink GT2 Adapter 0210 SyncLink Adapter v2 13c1 3ware Inc 1000 5xxx/6xxx-series PATA-RAID 1001 7xxx/8xxx-series PATA/SATA-RAID 13c1 1001 7xxx/8xxx-series PATA/SATA-RAID 1002 9xxx-series SATA-RAID 1003 9550SX SATA-II RAID PCI-X 1004 9650SE SATA-II RAID PCIe 1005 9690SA SAS/SATA-II RAID PCIe 1010 9750 SAS2/SATA-II RAID PCIe 13c2 Technotrend Systemtechnik GmbH 000e Technotrend/Hauppauge DVB card rev2.3 1019 TTechnoTrend-budget DVB S2-3200 13c3 Janz Computer AG 13c4 Phase Metrics 13c5 Alphi Technology Corp 13c6 Condor Engineering Inc 0520 CEI-520 A429 Card 0620 CEI-620 A429 Card 0820 CEI-820 A429 Card 0830 CEI-830 A429 Card 1004 P-SER Multi-channel PMC to RS-485/422/232 adapter 13c7 Blue Chip Technology Ltd 0adc PCI-ADC 0b10 PCI-PIO 0d10 PCI-DIO 524c PCI-RLY 5744 PCI-WDT 13c8 Apptech Inc 13c9 Eaton Corporation 13ca Iomega Corporation 13cb Yano Electric Co Ltd 13cc BARCO 13cd Compatible Systems Corporation 13ce Cocom A/S 13cf Studio Audio & Video Ltd 13d0 Techsan Electronics Co Ltd 2103 B2C2 FlexCopII DVB chip / Technisat SkyStar2 DVB card 2104 B2C2 FlexCopIII DVB chip / Technisat SkyStar2 DVB card (rev 01) 2200 B2C2 FlexCopIII DVB chip / Technisat SkyStar2 DVB card 13d1 Abocom Systems Inc ab02 ADMtek Centaur-C rev 17 [D-Link DFE-680TX] CardBus Fast Ethernet Adapter ab03 21x4x DEC-Tulip compatible 10/100 Ethernet ab06 RTL8139 [FE2000VX] CardBus Fast Ethernet Attached Port Adapter ab08 21x4x DEC-Tulip compatible 10/100 Ethernet 13d2 Shark Multimedia Inc 13d4 Graphics Microsystems Inc 13d5 Media 100 Inc 13d6 K.I. Technology Co Ltd 13d7 Toshiba Engineering Corporation 13d8 Phobos corporation 13d9 Apex PC Solutions Inc 13da Intresource Systems pte Ltd 13db Janich & Klass Computertechnik GmbH 13dc Netboost Corporation 13dd Multimedia Bundle Inc 13de ABB Robotics Products AB 13df E-Tech Inc 0001 PCI56RVP Modem 13df 0001 PCI56RVP Modem 13e0 GVC Corporation 13e1 Silicom Multimedia Systems Inc 13e2 Dynamics Research Corporation 13e3 Nest Inc 13e4 Calculex Inc 13e5 Telesoft Design Ltd 13e6 Argosy research Inc 13e7 NAC Incorporated 13e8 Chip Express Corporation 13e9 Intraserver Technology Inc 13ea Dallas Semiconductor 13eb Hauppauge Computer Works Inc 13ec Zydacron Inc 000a NPC-RC01 Remote control receiver 13ed Raytheion E-Systems 13ee Hayes Microcomputer Products Inc 13ef Coppercom Inc 13f0 Sundance Technology Inc / IC Plus Corp 0200 IC Plus IP100A Integrated 10/100 Ethernet MAC + PHY 1043 8213 NX1001 0201 ST201 Sundance Ethernet 1021 TC902x Gigabit Ethernet 1023 IP1000 Family Gigabit Ethernet 1043 8180 NX1101 13f1 Oce' - Technologies B.V. 13f2 Ford Microelectronics Inc 13f3 Brocade Communications Systems, Inc. 13f4 Troika Networks, Inc. 1401 Zentai Fibre Channel Adapter 13f5 Kansai Electric Co. Ltd 13f6 C-Media Electronics Inc 0011 CMI8738 0100 CM8338A 13f6 ffff CMI8338/C3DX PCI Audio Device 0101 CM8338B 13f6 0101 CMI8338-031 PCI Audio Device 0111 CMI8738/CMI8768 PCI Audio 1019 0970 P6STP-FL motherboard 1043 8035 CUSI-FX motherboard 1043 8077 CMI8738 6-channel audio controller 1043 80e2 CMI8738 6ch-MX 13f6 0111 CMI8738/C3DX PCI Audio Device 13f6 9761 Theatron Agrippa 153b 1144 Aureon 5.1 153b 1170 Aureon 7.1 1681 a000 Gamesurround MUSE XL 17ab 0604 PSC604 Dynamic Edge 17ab 0605 PSC605 Sonic Edge 17ab 7777 PSC605 Sonic Edge 270f 1103 CT-7NJS Ultra motherboard 270f f462 7NJL1 motherboard 584d 3731 Digital X-Mystique 584d 3741 X-Plosion 7.1 584d 3751 X-Raider 7.1 584d 3761 X-Mystique 7.1 LP 584d 3771 X-Mystique 7.1 LP Value 7284 8384 Striker 7.1 0211 CM8738 5011 CM8888 [Oxygen Express] 13f6 5011 HDA Controller 8788 CMI8788 [Oxygen HD Audio] 1043 8269 Virtuoso 200 (Xonar D2) 1043 8275 Virtuoso 100 (Xonar DX) 1043 82b7 Virtuoso 200 (Xonar D2X) 1043 8314 Virtuoso 200 (Xonar HDAV1.3) 1043 8327 Virtuoso 100 (Xonar DX) 1043 834f Virtuoso 100 (Xonar D1) 1043 835c Virtuoso 100 (Xonar Essence STX) 1043 835d Virtuoso 100 (Xonar ST) 1043 835e Virtuoso 200 (Xonar HDAV1.3 Slim) 1043 838e Virtuoso 66 (Xonar DS) 1043 8428 Virtuoso 100 (Xonar Xense) 1043 8467 CMI8786 (Xonar DG) 1043 8521 CMI8786 (Xonar DGX) 1043 8522 Xonar DSX 1043 85f4 Virtuoso 100 (Xonar Essence STX II) 13f6 8782 PCI 2.0 HD Audio 13f6 ffff CMI8787-HG2PCI 14c3 1710 HiFier Fantasia 14c3 1711 HiFier Serenade 14c3 1713 HiFier Serenade III 1a58 0910 Barracuda AC-1 415a 5431 X-Meridian 7.1 5431 017a X-Meridian 7.1 2G 584d 3781 HDA X-Purity 7.1 Platinum 7284 9761 CLARO 7284 9781 CLARO halo 7284 9783 eCLARO 7284 9787 CLARO II 13f7 Wildfire Communications 13f8 Ad Lib Multimedia Inc 13f9 NTT Advanced Technology Corp. 13fa Pentland Systems Ltd 13fb Aydin Corp 13fc Computer Peripherals International 13fd Micro Science Inc 13fe Advantech Co. Ltd 0071 PCIE-1761H, 8-ch Relay and 8-ch Isolated Digital Input Card 1240 PCI-1240 4-channel stepper motor controller card 1600 PCI-16xx series PCI multiport serial board (function 0) # This board has two PCI functions, appears as two PCI devices 1601 0002 PCI-1601 2-port unisolated RS-422/485 # This board has two PCI functions, appears as two PCI devices 1602 0002 PCI-1602 2-port isolated RS-422/485 1612 0004 PCI-1612 4-port RS-232/422/485 1603 PCI-1603 2-port isolated RS-232/current loop 1604 PCI-1604 2-port RS-232 1680 PCI-1680 Rev.A1 2-port CAN-bus with isolation protection 16ff PCI-16xx series PCI multiport serial board (function 1: RX/TX steering CPLD) 1601 0000 PCI-1601 2-port unisolated RS-422/485 PCI communications card 1602 0000 PCI-1602 2-port isolated RS-422/485 1612 0000 PCI-1612 4-port RS-232/422/485 1711 PCI-1711 16-channel data acquisition card 12-bit, 100kS/s 1713 PCI-1713 32-channel isolated analog input card 1733 PCI-1733 32-channel isolated digital input card 1734 PCI-1734 32-channel isolated digital output card 1752 PCI-1752 64-channel Isolated Digital Output Card 1754 PCI-1754 64-channel Isolated Digital Input Card 1756 PCI-1756 64-ch Isolated Digital I/O PCI Card a004 PCI-1612 4-port RS-232/422/485 # FPGA bridge to two SJA1000 c302 MIOe-3680 2-Port CAN-Bus MIOe Module with Isolation Protection 13ff Silicon Spice Inc 1400 Artx Inc 1401 9432 TX 1401 CR-Systems A/S 1402 Meilhaus Electronic GmbH 0630 ME-630 0940 ME-94 0950 ME-95 0960 ME-96 1000 ME-1000 100a ME-1000 100b ME-1000 1400 ME-1400 140a ME-1400A 140b ME-1400B 140c ME-1400C 140d ME-1400D 140e ME-1400E 14ea ME-1400EA 14eb ME-1400EB 1604 ME-1600/4U 1608 ME-1600/8U 160c ME-1600/12U 160f ME-1600/16U 168f ME-1600/16U8I 4610 ME-4610 4650 ME-4650 4660 ME-4660 4661 ME-4660I 4662 ME-4660 4663 ME-4660I 4670 ME-4670 4671 ME-4670I 4672 ME-4670S 4673 ME-4670IS 4680 ME-4680 4681 ME-4680I 4682 ME-4680S 4683 ME-4680IS 6004 ME-6000/4 6008 ME-6000/8 600f ME-6000/16 6014 ME-6000I/4 6018 ME-6000I/8 601f ME-6000I/16 6034 ME-6000ISLE/4 6038 ME-6000ISLE/8 603f ME-6000ISLE/16 6044 ME-6000/4/DIO 6048 ME-6000/8/DIO 604f ME-6000/16/DIO 6054 ME-6000I/4/DIO 6058 ME-6000I/8/DIO 605f ME-6000I/16/DIO 6074 ME-6000ISLE/4/DIO 6078 ME-6000ISLE/8/DIO 607f ME-6000ISLE/16/DIO 6104 ME-6100/4 6108 ME-6100/8 610f ME-6100/16 6114 ME-6100I/4 6118 ME-6100I/8 611f ME-6100I/16 6134 ME-6100ISLE/4 6138 ME-6100ISLE/8 613f ME-6100ISLE/16 6144 ME-6100/4/DIO 6148 ME-6100/8/DIO 614f ME-6100/16/DIO 6154 ME-6100I/4/DIO 6158 ME-6100I/8/DIO 615f ME-6100I/16/DIO 6174 ME-6100ISLE/4/DIO 6178 ME-6100ISLE/8/DIO 617f ME-6100ISLE/16/DIO 6259 ME-6200I/9/DIO 6359 ME-6300I/9/DIO 810a ME-8100A 810b ME-8100B 820a ME-8200A 820b ME-8200B 1403 Ascor Inc 1404 Fundamental Software Inc 1405 Excalibur Systems Inc 1406 Oce' Printing Systems GmbH 1407 Lava Computer mfg Inc 0100 Lava Dual Serial 0101 Lava Quatro A 0102 Lava Quatro B 0110 Lava DSerial-PCI Port A 0111 Lava DSerial-PCI Port B 0120 Quattro-PCI A 0121 Quattro-PCI B 0180 Lava Octo A 0181 Lava Octo B 0200 Lava Port Plus 0201 Lava Quad A 0202 Lava Quad B 0220 Lava Quattro PCI Ports A/B 0221 Lava Quattro PCI Ports C/D 0400 Lava 8255-PIO-PCI 0500 Lava Single Serial 0520 Lava RS422-SS-PCI 0600 Lava Port 650 8000 Lava Parallel 8001 Dual parallel port controller A 8002 Lava Dual Parallel port A 8003 Lava Dual Parallel port B 8800 BOCA Research IOPPAR 1408 Aloka Co. Ltd 1409 Timedia Technology Co Ltd 7168 PCI2S550 (Dual 16550 UART) 1409 0002 SER4036A3V (2x RS232 port) 1409 4027 SER4027A (1x RS232 port) 1409 4037 SER4037A(L) [SUNIX SUN1889] (2x RS232 port) # Single DC-37 connector 1409 4056 SER4056A (4x RS232) 1409 5027 SER4027D 1409 5037 SER4037D (2x RS232 port) # Single DC-62 connector 1409 5066 SER4066R (8x RS232) # 4x 8p8c connectors 1409 6056 SER4056D (4x RS232 port) 7268 SUN1888 (Dual IEEE1284 parallel port) 1409 0103 PAR4008A 1409 0104 PAR4018A 140a DSP Research Inc # Formerly RAMiX, GE Fanuc, GE Intelligent Platforms 140b Abaco Systems, Inc. 140c Elmic Systems Inc 140d Matsushita Electric Works Ltd 140e Goepel Electronic GmbH 140f Salient Systems Corp 1410 Midas lab Inc 1411 Ikos Systems Inc # Nee IC Ensemble Inc. 1412 VIA Technologies Inc. 1712 ICE1712 [Envy24] PCI Multi-Channel I/O Controller 1412 1712 Hoontech ST Audio DSP 24 1412 d630 M-Audio Delta 1010 1412 d631 M-Audio Delta DiO 1412 d632 M-Audio Delta 66 1412 d633 M-Audio Delta 44 1412 d634 M-Audio Delta Audiophile 2496 1412 d635 M-Audio Delta TDIF 1412 d637 M-Audio Delta RBUS 1412 d638 M-Audio Delta 410 1412 d63b M-Audio Delta 1010LT 1412 d63c Digigram VX442 1416 1712 Hoontech ST Audio DSP 24 Media 7.1 153b 1115 EWS88 MT 153b 1125 EWS88 MT (Master) 153b 112b EWS88 D 153b 112c EWS88 D (Master) 153b 1130 EWX 24/96 153b 1138 DMX 6fire 24/96 153b 1151 PHASE88 16ce 1040 Edirol DA-2496 1724 VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller 10b0 0200 Hollywood@Home 7.1 1412 1724 Albatron PX865PE 7.1 1412 3630 M-Audio Revolution 7.1 1412 3631 M-Audio Revolution 5.1 1412 3632 M-Audio Audiophile 192 153b 1145 Aureon 7.1 Space 153b 1147 Aureon 5.1 Sky 153b 1150 PHASE 22 153b 1153 Aureon 7.1 Universe 17ab 1906 PSC 724 [Ultimate Edge] 270f f641 ZNF3-150 270f f645 ZNF3-250 3130 4154 MAYA 44 MKII 1413 Addonics 1414 Microsoft Corporation 0001 MN-120 (ADMtek Centaur-C based) 0002 MN-130 (ADMtek Centaur-P based) # Virtual Video Card Device for Windows Remote Desktop (RDP) 008c Basic Render Driver 008e Basic Render Driver 5353 Hyper-V virtual VGA 5801 XMA Decoder (Xenon) 5802 SATA Controller - CdRom (Xenon) 5803 SATA Controller - Disk (Xenon) 5804 OHCI Controller 0 (Xenon) 5805 EHCI Controller 0 (Xenon) 5806 OHCI Controller 1 (Xenon) 5807 EHCI Controller 1 (Xenon) 580a Fast Ethernet Adapter (Xenon) 580b Secure Flash Controller (Xenon) 580d System Management Controller (Xenon) 5811 Xenos GPU (Xenon) 5821 Xenos GPU (Zephyr/Falcon) 5831 Xenos GPU (Jasper) 5841 Xenos GPU (Slim) 1415 Oxford Semiconductor Ltd 8401 OX9162 Mode 1 (8-bit bus) 8403 OX9162 Mode 0 (parallel port) 9500 OX16PCI954 (Quad 16950 UART) function 0 (Disabled) 9501 OX16PCI954 (Quad 16950 UART) function 0 (Uart) 12c4 0201 Titan/cPCI (2 port) 12c4 0202 Titan/cPCI (4 port) 12c4 0203 Titan/cPCI (8 port) 12c4 0210 Titan/104-Plus (8 port, p1-4) 131f 2050 CyberPro (4-port) # Model IO1085, Part No: JJ-P46012 131f 2051 CyberSerial 4S Plus 15ed 2000 MCCR Serial p0-3 of 8 15ed 2001 MCCR Serial p0-3 of 16 9505 OXuPCI952 (Dual 16C950 UART) 950a EXSYS EX-41092 Dual 16950 Serial adapter 950b OXCB950 Cardbus 16950 UART 9510 OX16PCI954 (Quad 16950 UART) function 1 (Disabled) 12c4 0200 Titan/cPCI (Unused) 9511 OX16PCI954 (Quad 16950 UART) function 1 (8bit bus) 12c4 0211 Titan/104-Plus (8 port, p5-8) 15ed 2000 MCCR Serial p4-7 of 8 15ed 2001 MCCR Serial p4-15 of 16 9512 OX16PCI954 (Quad 16950 UART) function 1 (32bit bus) 9513 OX16PCI954 (Quad 16950 UART) function 1 (parallel port) 9521 OX16PCI952 (Dual 16950 UART) 9523 OX16PCI952 Integrated Parallel Port # Multifunction device with 3 function bits in ID c000 OXPCIe840 Parallel Port c004 OXPCIe840 Parallel Port c006 OXPCIe840 GPIO # Multifunction device with reset straps and function bits in ID c100 OXPCIe952 Parallel Port c101 OXPCIe952 Legacy 950 UART c104 OXPCIe952 Parallel Port c105 OXPCIe952 Legacy 950 UART c106 OXPCIe952 GPIO c108 OXPCIe952 Parallel Port c109 OXPCIe952 Legacy 950 UART c10c OXPCIe952 Parallel Port c10d OXPCIe952 Legacy 950 UART c10e OXPCIe952 GPIO c110 OXPCIe952 Parallel Port c114 OXPCIe952 Parallel Port c118 OXPCIe952 Parallel Port c11b OXPCIe952 Native 950 UART c11c OXPCIe952 Parallel Port c11e OXPCIe952 GPIO c11f OXPCIe952 Native 950 UART c120 OXPCIe952 Legacy 950 UART c124 OXPCIe952 Legacy 950 UART c126 OXPCIe952 GPIO c128 OXPCIe952 Legacy 950 UART c12c OXPCIe952 Legacy 950 UART c12e OXPCIe952 GPIO c134 OXPCIe952 GPIO c138 OXPCIe952 Native 950 UART c13c OXPCIe952 GPIO c13d OXPCIe952 Native 950 UART c140 OXPCIe952 Legacy 950 UART #1 c141 OXPCIe952 Legacy 950 UART #2 c144 OXPCIe952 Legacy 950 UART #1 c145 OXPCIe952 Legacy 950 UART #2 c146 OXPCIe952 GPIO c148 OXPCIe952 Legacy 950 UART #1 c149 OXPCIe952 Legacy 950 UART #2 c14c OXPCIe952 Legacy 950 UART #1 c14d OXPCIe952 Legacy 950 UART #2 c14e OXPCIe952 GPIO c154 OXPCIe952 GPIO c158 OXPCIe952 Dual Native 950 UART e4bf c504 CP4-SCAT Wireless Technologies Carrier Board e4bf d551 DU1-MUSTANG Dual-Port RS-485 Interface c15c OXPCIe952 GPIO c15d OXPCIe952 Dual Native 950 UART # Multifunction device with 4 function bits in ID c204 OXPCIe954 GPIO c208 OXPCIe954 Quad Native 950 UART c20c OXPCIe954 GPIO c20d OXPCIe954 Quad Native 950 UART # Multifunction device with 4 function bits in ID c304 OXPCIe958 GPIO c308 OXPCIe958 Quad Native 950 UART c30c OXPCIe958 GPIO c30d OXPCIe958 Quad Native 950 UART # Multifunction device with 8 function bits in ID c530 OXPCIe200 Dual OHCI USB Controller (ULPI/R-ULPI) c531 OXPCIe200 Dual EHCI USB Controller (ULPI/R-ULPI) c534 OXPCIe200 Dual OHCI USB Controller (ULPI/R-ULPI) c535 OXPCIe200 Dual EHCI USB Controller (ULPI/R-ULPI) c536 OXPCIe200 GPIO c538 OXPCIe200 Dual OHCI USB Controller (ULPI/R-ULPI) c539 OXPCIe200 Dual EHCI USB Controller (ULPI/R-ULPI) c53b OXPCIe200 Native 950 UART c53c OXPCIe200 Dual OHCI USB Controller (ULPI/R-ULPI) c53d OXPCIe200 Dual EHCI USB Controller (ULPI/R-ULPI) c53e OXPCIe200 GPIO c53f OXPCIe200 Native 950 UART c540 OXPCIe200 Dual OHCI USB Controller (R-ULPI) c541 OXPCIe200 Dual EHCI USB Controller (R-ULPI) c544 OXPCIe200 Dual OHCI USB Controller (R-ULPI) c545 OXPCIe200 Dual EHCI USB Controller (R-ULPI) c546 OXPCIe200 GPIO c548 OXPCIe200 Dual OHCI USB Controller (R-ULPI) c549 OXPCIe200 Dual EHCI USB Controller (R-ULPI) c54b OXPCIe200 Native 950 UART c54c OXPCIe200 Dual OHCI USB Controller (R-ULPI) c54d OXPCIe200 Dual EHCI USB Controller (R-ULPI) c54e OXPCIe200 Dual GPIO c54f OXPCIe200 Native 950 UART c560 OXPCIe200 Dual OHCI USB Controller (ULPI/analog) c561 OXPCIe200 EHCI USB Controller (ULPI) c564 OXPCIe200 Dual OHCI USB Controller (ULPI/analog) c565 OXPCIe200 EHCI USB Controller (ULPI) c566 OXPCIe200 GPIO c568 OXPCIe200 Dual OHCI USB Controller (ULPI/analog) c569 OXPCIe200 EHCI USB Controller (ULPI) c56b OXPCIe200 Native 950 UART c56c OXPCIe200 Dual OHCI USB Controller (ULPI/analog) c56d OXPCIe200 EHCI USB Controller (ULPI) c56e OXPCIe200 GPIO c56f OXPCIe200 Native 950 UART c570 OXPCIe200 Dual OHCI USB Controller (R-ULPI/analog) c571 OXPCIe200 EHCI USB Controller (R-ULPI) c574 OXPCIe200 Dual OHCI USB Controller (R-ULPI/analog) c575 OXPCIe200 EHCI USB Controller (R-ULPI) c576 OXPCIe200 GPIO c578 OXPCIe200 Dual OHCI USB Controller (R-ULPI/analog) c579 OXPCIe200 EHCI USB Controller (R-ULPI) c57b OXPCIe200 Native 950 UART c57c OXPCIe200 Dual OHCI USB Controller (R-ULPI/analog) c57d OXPCIe200 EHCI USB Controller (R-ULPI) c57e OXPCIe200 GPIO c57f OXPCIe200 Native 950 UART c5a0 OXPCIe200 OHCI USB Controller (ULPI) c5a1 OXPCIe200 EHCI USB Controller (ULPI) c5a2 OXPCIe200 Programmable Memory Interface c5a4 OXPCIe200 OHCI USB Controller (ULPI) c5a5 OXPCIe200 EHCI USB Controller (ULPI) c5a6 OXPCIe200 Programmable Memory Interface & GPIO c5a8 OXPCIe200 OHCI USB Controller (ULPI) c5a9 OXPCIe200 EHCI USB Controller (ULPI) c5aa OXPCIe200 Programmable Memory Interface c5ab OXPCIe200 Native 950 UART c5ac OXPCIe200 OHCI USB Controller (ULPI) c5ad OXPCIe200 EHCI USB Controller (ULPI) c5ae OXPCIe200 Programmable Memory Interface & GPIO c5af OXPCIe200 Native 950 UART c5b0 OXPCIe200 OHCI USB Controller (R-ULPI) c5b1 OXPCIe200 EHCI USB Controller (R-ULPI) c5b2 OXPCIe200 Programmable Memory Interface c5b4 OXPCIe200 OHCI USB Controller (R-ULPI) c5b5 OXPCIe200 EHCI USB Controller (R-ULPI) c5b6 OXPCIe200 Programmable Memory Interface & GPIO c5b8 OXPCIe200 OHCI USB Controller (R-ULPI) c5b9 OXPCIe200 EHCI USB Controller (R-ULPI) c5ba OXPCIe200 Programmable Memory Interface c5bb OXPCIe200 Native 950 UART c5bc OXPCIe200 OHCI USB Controller (R-ULPI) c5bd OXPCIe200 EHCI USB Controller (R-ULPI) c5be OXPCIe200 Programmable Memory Interface & GPIO c5bf OXPCIe200 Native 950 UART c5c0 OXPCIe200 OHCI USB Controller (analog) c5c2 OXPCIe200 Programmable Memory Interface c5c4 OXPCIe200 OHCI USB Controller (analog) c5c6 OXPCIe200 Programmable Memory Interface & GPIO c5c8 OXPCIe200 OHCI USB Controller (analog) c5ca OXPCIe200 Programmable Memory Interface c5cb OXPCIe200 Native 950 UART c5cc OXPCIe200 OHCI USB Controller (analog) c5ce OXPCIe200 Programmable Memory Interface & GPIO c5cf OXPCIe200 Native 950 UART 1416 Multiwave Innovation pte Ltd 1417 Convergenet Technologies Inc 1418 Kyushu electronics systems Inc 1419 Excel Switching Corp 141a Apache Micro Peripherals Inc 141b Zoom Telephonics Inc 141d Digitan Systems Inc 141e Fanuc Ltd 141f Visiontech Ltd 1420 Psion Dacom plc 8002 Gold Card NetGlobal 56k+10/100Mb CardBus (Ethernet part) 8003 Gold Card NetGlobal 56k+10/100Mb CardBus (Modem part) 1421 Ads Technologies Inc 1422 Ygrec Systems Co Ltd 1423 Custom Technology Corp. 1424 Videoserver Connections 1425 Chelsio Communications Inc 000b T210 Protocol Engine 000c T204 Protocol Engine 0022 10GbE Ethernet Adapter 0030 T310 10GbE Single Port Adapter 103c 705e PCIe 10GBase-SR [AD386A] 0031 T320 10GbE Dual Port Adapter 0032 T302 1GbE Dual Port Adapter 0033 T304 1GbE Quad Port Adapter 0034 B320 10GbE Dual Port Adapter 0035 S310-CR 10GbE Single Port Adapter 0036 S320-LP-CR 10GbE Dual Port Adapter 0037 N320-G2-CR 10GbE Dual Port Adapter 4001 T420-CR Unified Wire Ethernet Controller 4002 T422-CR Unified Wire Ethernet Controller 4003 T440-CR Unified Wire Ethernet Controller 4004 T420-BCH Unified Wire Ethernet Controller 4005 T440-BCH Unified Wire Ethernet Controller 4006 T440-CH Unified Wire Ethernet Controller 4007 T420-SO Unified Wire Ethernet Controller 4008 T420-CX Unified Wire Ethernet Controller 4009 T420-BT Unified Wire Ethernet Controller 400a T404-BT Unified Wire Ethernet Controller 400b B420-SR Unified Wire Ethernet Controller 400c B404-BT Unified Wire Ethernet Controller 400d T480 Unified Wire Ethernet Controller 400e T440-LP-CR Unified Wire Ethernet Controller 400f T440 [Amsterdam] Unified Wire Ethernet Controller 4080 T480-4080 T480 Unified Wire Ethernet Controller 4081 T440F-4081 T440-FCoE Unified Wire Ethernet Controller 4082 T420-4082 Unified Wire Ethernet Controller 4083 T420X-4083 Unified Wire Ethernet Controller 4084 T440-4084 Unified Wire Ethernet Controller 4085 T420-4085 SFP+ Unified Wire Ethernet Controller 4086 T440-4086 10Gbase-T Unified Wire Ethernet Controller 4087 T440T-4087 Unified Wire Ethernet Controller 4088 T440-4088 Unified Wire Ethernet Controller 4401 T420-CR Unified Wire Ethernet Controller 4402 T422-CR Unified Wire Ethernet Controller 4403 T440-CR Unified Wire Ethernet Controller 4404 T420-BCH Unified Wire Ethernet Controller 4405 T440-BCH Unified Wire Ethernet Controller 4406 T440-CH Unified Wire Ethernet Controller 4407 T420-SO Unified Wire Ethernet Controller 4408 T420-CX Unified Wire Ethernet Controller 4409 T420-BT Unified Wire Ethernet Controller 440a T404-BT Unified Wire Ethernet Controller 440b B420-SR Unified Wire Ethernet Controller 440c B404-BT Unified Wire Ethernet Controller 440d T480 Unified Wire Ethernet Controller 440e T440-LP-CR Unified Wire Ethernet Controller 440f T440 [Amsterdam] Unified Wire Ethernet Controller 4480 T480-4080 T480 Unified Wire Ethernet Controller 4481 T440F-4081 T440-FCoE Unified Wire Ethernet Controller 4482 T420-4082 Unified Wire Ethernet Controller 4483 T420X-4083 Unified Wire Ethernet Controller 4484 T440-4084 Unified Wire Ethernet Controller 4485 T420-4085 SFP+ Unified Wire Ethernet Controller 4486 T440-4086 10Gbase-T Unified Wire Ethernet Controller 4487 T440T-4087 Unified Wire Ethernet Controller 4488 T440-4088 Unified Wire Ethernet Controller 4501 T420-CR Unified Wire Storage Controller 4502 T422-CR Unified Wire Storage Controller 4503 T440-CR Unified Wire Storage Controller 4504 T420-BCH Unified Wire Storage Controller 4505 T440-BCH Unified Wire Storage Controller 4506 T440-CH Unified Wire Storage Controller 4507 T420-SO Unified Wire Storage Controller 4508 T420-CX Unified Wire Storage Controller 4509 T420-BT Unified Wire Storage Controller 450a T404-BT Unified Wire Storage Controller 450b B420-SR Unified Wire Storage Controller 450c B404-BT Unified Wire Storage Controller 450d T480 Unified Wire Storage Controller 450e T440-LP-CR Unified Wire Storage Controller 450f T440 [Amsterdam] Unified Wire Storage Controller 4580 T480-4080 T480 Unified Wire Storage Controller 4581 T440F-4081 T440-FCoE Unified Wire Storage Controller 4582 T420-4082 Unified Wire Storage Controller 4583 T420X-4083 Unified Wire Storage Controller 4584 T440-4084 Unified Wire Storage Controller 4585 T420-4085 SFP+ Unified Wire Storage Controller 4586 T440-4086 10Gbase-T Unified Wire Storage Controller 4587 T440T-4087 Unified Wire Storage Controller 4588 T440-4088 Unified Wire Storage Controller 4601 T420-CR Unified Wire Storage Controller 4602 T422-CR Unified Wire Storage Controller 4603 T440-CR Unified Wire Storage Controller 4604 T420-BCH Unified Wire Storage Controller 4605 T440-BCH Unified Wire Storage Controller 4606 T440-CH Unified Wire Storage Controller 4607 T420-SO Unified Wire Storage Controller 4608 T420-CX Unified Wire Storage Controller 4609 T420-BT Unified Wire Storage Controller 460a T404-BT Unified Wire Storage Controller 460b B420-SR Unified Wire Storage Controller 460c B404-BT Unified Wire Storage Controller 460d T480 Unified Wire Storage Controller 460e T440-LP-CR Unified Wire Storage Controller 460f T440 [Amsterdam] Unified Wire Storage Controller 4680 T480-4080 T480 Unified Wire Storage Controller 4681 T440F-4081 T440-FCoE Unified Wire Storage Controller 4682 T420-4082 Unified Wire Storage Controller 4683 T420X-4083 Unified Wire Storage Controller 4684 T440-4084 Unified Wire Storage Controller 4685 T420-4085 SFP+ Unified Wire Storage Controller 4686 T440-4086 10Gbase-T Unified Wire Storage Controller 4687 T440T-4087 Unified Wire Storage Controller 4688 T440-4088 Unified Wire Storage Controller 4701 T420-CR Unified Wire Ethernet Controller 4702 T422-CR Unified Wire Ethernet Controller 4703 T440-CR Unified Wire Ethernet Controller 4704 T420-BCH Unified Wire Ethernet Controller 4705 T440-BCH Unified Wire Ethernet Controller 4706 T440-CH Unified Wire Ethernet Controller 4707 T420-SO Unified Wire Ethernet Controller 4708 T420-CX Unified Wire Ethernet Controller 4709 T420-BT Unified Wire Ethernet Controller 470a T404-BT Unified Wire Ethernet Controller 470b B420-SR Unified Wire Ethernet Controller 470c B404-BT Unified Wire Ethernet Controller 470d T480 Unified Wire Ethernet Controller 470e T440-LP-CR Unified Wire Ethernet Controller 470f T440 [Amsterdam] Unified Wire Ethernet Controller 4780 T480-4080 T480 Unified Wire Ethernet Controller 4781 T440F-4081 T440-FCoE Unified Wire Ethernet Controller 4782 T420-4082 Unified Wire Ethernet Controller 4783 T420X-4083 Unified Wire Ethernet Controller 4784 T440-4084 Unified Wire Ethernet Controller 4785 T420-4085 SFP+ Unified Wire Ethernet Controller 4786 T440-4086 10Gbase-T Unified Wire Ethernet Controller 4787 T440T-4087 Unified Wire Ethernet Controller 4788 T440-4088 Unified Wire Ethernet Controller 4801 T420-CR Unified Wire Ethernet Controller [VF] 4802 T422-CR Unified Wire Ethernet Controller [VF] 4803 T440-CR Unified Wire Ethernet Controller [VF] 4804 T420-BCH Unified Wire Ethernet Controller [VF] 4805 T440-BCH Unified Wire Ethernet Controller [VF] 4806 T440-CH Unified Wire Ethernet Controller [VF] 4807 T420-SO Unified Wire Ethernet Controller [VF] 4808 T420-CX Unified Wire Ethernet Controller [VF] 4809 T420-BT Unified Wire Ethernet Controller [VF] 480a T404-BT Unified Wire Ethernet Controller [VF] 480b B420-SR Unified Wire Ethernet Controller [VF] 480c B404-BT Unified Wire Ethernet Controller [VF] 480d T480 Unified Wire Ethernet Controller [VF] 480e T440-LP-CR Unified Wire Ethernet Controller [VF] 480f T440 [Amsterdam] Unified Wire Ethernet Controller [VF] 4880 T480-4080 T480 Unified Wire Ethernet Controller [VF] 4881 T440F-4081 T440-FCoE Unified Wire Ethernet Controller [VF] 4882 T420-4082 Unified Wire Ethernet Controller [VF] 4883 T420X-4083 Unified Wire Ethernet Controller [VF] 4884 T440-4084 Unified Wire Ethernet Controller [VF] 4885 T420-4085 SFP+ Unified Wire Ethernet Controller [VF] 4886 T440-4086 10Gbase-T Unified Wire Ethernet Controller [VF] 4887 T440T-4087 Unified Wire Ethernet Controller [VF] 4888 T440-4088 Unified Wire Ethernet Controller [VF] 5001 T520-CR Unified Wire Ethernet Controller 193d 1001 510F-B 5002 T522-CR Unified Wire Ethernet Controller 5003 T540-CR Unified Wire Ethernet Controller 5004 T520-BCH Unified Wire Ethernet Controller 5005 T540-BCH Unified Wire Ethernet Controller 5006 T540-CH Unified Wire Ethernet Controller 5007 T520-SO Unified Wire Ethernet Controller 5008 T520-CX Unified Wire Ethernet Controller 5009 T520-BT Unified Wire Ethernet Controller 500a T504-BT Unified Wire Ethernet Controller 500b B520-SR Unified Wire Ethernet Controller 500c B504-BT Unified Wire Ethernet Controller 500d T580-CR Unified Wire Ethernet Controller 500e T540-LP-CR Unified Wire Ethernet Controller 500f T540 [Amsterdam] Unified Wire Ethernet Controller 5010 T580-LP-CR Unified Wire Ethernet Controller 5011 T520-LL-CR Unified Wire Ethernet Controller 5012 T560-CR Unified Wire Ethernet Controller 5013 T580-CHR Unified Wire Ethernet Controller 5014 T580-SO-CR Unified Wire Ethernet Controller 5015 T502-BT Unified Wire Ethernet Controller 5016 T580-OCP-SO Unified Wire Ethernet Controller 5017 T520-OCP-SO Unified Wire Ethernet Controller 5018 T540-BT Unified Wire Ethernet Controller 5019 T540-LP-BT Unified Wire Ethernet Controller 501a T540-SO-BT Unified Wire Ethernet Controller 501b T540-SO-CR Unified Wire Ethernet Controller 5080 T540-5080 Unified Wire Ethernet Controller 5081 T540-5081 Unified Wire Ethernet Controller 5082 T504-5082 Unified Wire Ethernet Controller 5083 T540-5083 Unified Wire Ethernet Controller 5084 T540-5084 Unified Wire Ethernet Controller 5085 T580-5085 Unified Wire Ethernet Controller 5086 T580-5086 Unified Wire Ethernet Controller 5087 T580-5087 Unified Wire Ethernet Controller 5088 T570-5088 Unified Wire Ethernet Controller 5089 T520-5089 Unified Wire Ethernet Controller 5090 T540-5090 Unified Wire Ethernet Controller 5091 T522-5091 Unified Wire Ethernet Controller 5092 T520-5092 Unified Wire Ethernet Controller 5093 T580-5093 Unified Wire Ethernet Controller 5094 T540-5094 Unified Wire Ethernet Controller 5095 T540-5095 Unified Wire Ethernet Controller 5096 T580-5096 Unified Wire Ethernet Controller 5097 T520-5097 Unified Wire Ethernet Controller 5098 T580-5098 Unified Wire Ethernet Controller 5099 T580-5099 Unified Wire Ethernet Controller 509a T520-509A Unified Wire Ethernet Controller 509b T540-509B Unified Wire Ethernet Controller 509c T520-509C Unified Wire Ethernet Controller 509d T540-509D Unified Wire Ethernet Controller 509e T520-509E Unified Wire Ethernet Controller 509f T540-509F Unified Wire Ethernet Controller 50a0 T540-50A0 Unified Wire Ethernet Controller 50a1 T540-50A1 Unified Wire Ethernet Controller 50a2 T580-50A2 Unified Wire Ethernet Controller 50a3 T580-50A3 Unified Wire Ethernet Controller 50a4 T540-50A4 Unified Wire Ethernet Controller 50a5 T522-50A5 Unified Wire Ethernet Controller 50a6 T522-50A6 Unified Wire Ethernet Controller 50a7 T580-50A7 Unified Wire Ethernet Controller 50a8 T580-50A8 Unified Wire Ethernet Controller 50a9 T580-50A9 Unified Wire Ethernet Controller 50aa T580-50AA Unified Wire Ethernet Controller 50ab T520-50AB Unified Wire Ethernet Controller 50ac T540-50AC Unified Wire Ethernet Controller 50ad T520-50AD Unified Wire Ethernet Controller 50ae T540-50AE Unified Wire Ethernet Controller 50af T580-50AF Unified Wire Ethernet Controller 50b0 T520-50B0 Unified Wire Ethernet Controller 5401 T520-CR Unified Wire Ethernet Controller 5402 T522-CR Unified Wire Ethernet Controller 5403 T540-CR Unified Wire Ethernet Controller 5404 T520-BCH Unified Wire Ethernet Controller 5405 T540-BCH Unified Wire Ethernet Controller 5406 T540-CH Unified Wire Ethernet Controller 5407 T520-SO Unified Wire Ethernet Controller 5408 T520-CX Unified Wire Ethernet Controller 5409 T520-BT Unified Wire Ethernet Controller 540a T504-BT Unified Wire Ethernet Controller 540b B520-SR Unified Wire Ethernet Controller 540c B504-BT Unified Wire Ethernet Controller 540d T580-CR Unified Wire Ethernet Controller 540e T540-LP-CR Unified Wire Ethernet Controller 540f T540 [Amsterdam] Unified Wire Ethernet Controller 5410 T580-LP-CR Unified Wire Ethernet Controller 5411 T520-LL-CR Unified Wire Ethernet Controller 5412 T560-CR Unified Wire Ethernet Controller 5413 T580-CHR Unified Wire Ethernet Controller 5414 T580-SO-CR Unified Wire Ethernet Controller 5415 T502-BT Unified Wire Ethernet Controller 5416 T580-OCP-SO Unified Wire Ethernet Controller 5417 T520-OCP-SO Unified Wire Ethernet Controller 5418 T540-BT Unified Wire Ethernet Controller 5419 T540-LP-BT Unified Wire Ethernet Controller 541a T540-SO-BT Unified Wire Ethernet Controller 541b T540-SO-CR Unified Wire Ethernet Controller 5480 T540-5080 Unified Wire Ethernet Controller 5481 T540-5081 Unified Wire Ethernet Controller 5482 T504-5082 Unified Wire Ethernet Controller 5483 T540-5083 Unified Wire Ethernet Controller 5484 T540-5084 Unified Wire Ethernet Controller 5485 T580-5085 Unified Wire Ethernet Controller 5486 T580-5086 Unified Wire Ethernet Controller 5487 T580-5087 Unified Wire Ethernet Controller 5488 T570-5088 Unified Wire Ethernet Controller 5489 T520-5089 Unified Wire Ethernet Controller 5490 T540-5090 Unified Wire Ethernet Controller 5491 T522-5091 Unified Wire Ethernet Controller 5492 T520-5092 Unified Wire Ethernet Controller 5493 T580-5093 Unified Wire Ethernet Controller 5494 T540-5094 Unified Wire Ethernet Controller 5495 T540-5095 Unified Wire Ethernet Controller 5496 T580-5096 Unified Wire Ethernet Controller 5497 T520-5097 Unified Wire Ethernet Controller 5498 T580-5098 Unified Wire Ethernet Controller 5499 T580-5099 Unified Wire Ethernet Controller 549a T520-509A Unified Wire Ethernet Controller 549b T540-509B Unified Wire Ethernet Controller 549c T520-509C Unified Wire Ethernet Controller 549d T540-509D Unified Wire Ethernet Controller 549e T520-509E Unified Wire Ethernet Controller 549f T540-509F Unified Wire Ethernet Controller 54a0 T540-50A0 Unified Wire Ethernet Controller 54a1 T540-50A1 Unified Wire Ethernet Controller 54a2 T580-50A2 Unified Wire Ethernet Controller 54a3 T580-50A3 Unified Wire Ethernet Controller 54a4 T540-50A4 Unified Wire Ethernet Controller 54a5 T522-50A5 Unified Wire Ethernet Controller 54a6 T522-50A6 Unified Wire Ethernet Controller 54a7 T580-50A7 Unified Wire Ethernet Controller 54a8 T580-50A8 Unified Wire Ethernet Controller 54a9 T580-50A9 Unified Wire Ethernet Controller 54aa T580-50AA Unified Wire Ethernet Controller 54ab T520-50AB Unified Wire Ethernet Controller 54ac T540-50AC Unified Wire Ethernet Controller 54ad T520-50AD Unified Wire Ethernet Controller 54ae T540-50AE Unified Wire Ethernet Controller 54af T580-50AF Unified Wire Ethernet Controller 54b0 T520-50B0 Unified Wire Ethernet Controller 5501 T520-CR Unified Wire Storage Controller 5502 T522-CR Unified Wire Storage Controller 5503 T540-CR Unified Wire Storage Controller 5504 T520-BCH Unified Wire Storage Controller 5505 T540-BCH Unified Wire Storage Controller 5506 T540-CH Unified Wire Storage Controller 5507 T520-SO Unified Wire Storage Controller 5508 T520-CX Unified Wire Storage Controller 5509 T520-BT Unified Wire Storage Controller 550a T504-BT Unified Wire Storage Controller 550b B520-SR Unified Wire Storage Controller 550c B504-BT Unified Wire Storage Controller 550d T580-CR Unified Wire Storage Controller 550e T540-LP-CR Unified Wire Storage Controller 550f T540 [Amsterdam] Unified Wire Storage Controller 5510 T580-LP-CR Unified Wire Storage Controller 5511 T520-LL-CR Unified Wire Storage Controller 5512 T560-CR Unified Wire Storage Controller 5513 T580-CHR Unified Wire Storage Controller 5514 T580-SO-CR Unified Wire Storage Controller 5515 T502-BT Unified Wire Storage Controller 5516 T580-OCP-SO Unified Wire Storage Controller 5517 T520-OCP-SO Unified Wire Storage Controller 5518 T540-BT Unified Wire Storage Controller 5519 T540-LP-BT Unified Wire Storage Controller 551a T540-SO-BT Unified Wire Storage Controller 551b T540-SO-CR Unified Wire Storage Controller 5580 T540-5080 Unified Wire Storage Controller 5581 T540-5081 Unified Wire Storage Controller 5582 T504-5082 Unified Wire Storage Controller 5583 T540-5083 Unified Wire Storage Controller 5584 T540-5084 Unified Wire Storage Controller 5585 T580-5085 Unified Wire Storage Controller 5586 T580-5086 Unified Wire Storage Controller 5587 T580-5087 Unified Wire Storage Controller 5588 T570-5088 Unified Wire Storage Controller 5589 T520-5089 Unified Wire Storage Controller 5590 T540-5090 Unified Wire Storage Controller 5591 T522-5091 Unified Wire Storage Controller 5592 T520-5092 Unified Wire Storage Controller 5593 T580-5093 Unified Wire Storage Controller 5594 T540-5094 Unified Wire Storage Controller 5595 T540-5095 Unified Wire Storage Controller 5596 T580-5096 Unified Wire Storage Controller 5597 T520-5097 Unified Wire Storage Controller 5598 T580-5098 Unified Wire Storage Controller 5599 T580-5099 Unified Wire Storage Controller 559a T520-509A Unified Wire Storage Controller 559b T540-509B Unified Wire Storage Controller 559c T520-509C Unified Wire Storage Controller 559d T540-509D Unified Wire Storage Controller 559e T520-509E Unified Wire Storage Controller 559f T540-509F Unified Wire Storage Controller 55a0 T540-50A0 Unified Wire Storage Controller 55a1 T540-50A1 Unified Wire Storage Controller 55a2 T580-50A2 Unified Wire Storage Controller 55a3 T580-50A3 Unified Wire Storage Controller 55a4 T540-50A4 Unified Wire Storage Controller 55a5 T522-50A5 Unified Wire Storage Controller 55a6 T522-50A6 Unified Wire Storage Controller 55a7 T580-50A7 Unified Wire Storage Controller 55a8 T580-50A8 Unified Wire Storage Controller 55a9 T580-50A9 Unified Wire Storage Controller 55aa T580-50AA Unified Wire Storage Controller 55ab T520-50AB Unified Wire Storage Controller 55ac T540-50AC Unified Wire Storage Controller 55ad T520-50AD Unified Wire Storage Controller 55ae T540-50AE Unified Wire Storage Controller 55af T580-50AF Unified Wire Storage Controller 55b0 T520-50B0 Unified Wire Storage Controller 5601 T520-CR Unified Wire Storage Controller 5602 T522-CR Unified Wire Storage Controller 5603 T540-CR Unified Wire Storage Controller 5604 T520-BCH Unified Wire Storage Controller 5605 T540-BCH Unified Wire Storage Controller 5606 T540-CH Unified Wire Storage Controller 5607 T520-SO Unified Wire Storage Controller 5608 T520-CX Unified Wire Storage Controller 5609 T520-BT Unified Wire Storage Controller 560a T504-BT Unified Wire Storage Controller 560b B520-SR Unified Wire Storage Controller 560c B504-BT Unified Wire Storage Controller 560d T580-CR Unified Wire Storage Controller 560e T540-LP-CR Unified Wire Storage Controller 560f T540 [Amsterdam] Unified Wire Storage Controller 5610 T580-LP-CR Unified Wire Storage Controller 5611 T520-LL-CR Unified Wire Storage Controller 5612 T560-CR Unified Wire Storage Controller 5613 T580-CHR Unified Wire Storage Controller 5614 T580-SO-CR Unified Wire Storage Controller 5615 T502-BT Unified Wire Storage Controller 5616 T580-OCP-SO Unified Wire Storage Controller 5617 T520-OCP-SO Unified Wire Storage Controller 5618 T540-BT Unified Wire Storage Controller 5619 T540-LP-BT Unified Wire Storage Controller 561a T540-SO-BT Unified Wire Storage Controller 561b T540-SO-CR Unified Wire Storage Controller 5680 T540-5080 Unified Wire Storage Controller 5681 T540-5081 Unified Wire Storage Controller 5682 T504-5082 Unified Wire Storage Controller 5683 T540-5083 Unified Wire Storage Controller 5684 T540-5084 Unified Wire Storage Controller 5685 T580-5085 Unified Wire Storage Controller 5686 T580-5086 Unified Wire Storage Controller 5687 T580-5087 Unified Wire Storage Controller 5688 T570-5088 Unified Wire Storage Controller 5689 T520-5089 Unified Wire Storage Controller 5690 T540-5090 Unified Wire Storage Controller 5691 T522-5091 Unified Wire Storage Controller 5692 T520-5092 Unified Wire Storage Controller 5693 T580-5093 Unified Wire Storage Controller 5694 T540-5094 Unified Wire Storage Controller 5695 T540-5095 Unified Wire Storage Controller 5696 T580-5096 Unified Wire Storage Controller 5697 T520-5097 Unified Wire Storage Controller 5698 T580-5098 Unified Wire Storage Controller 5699 T580-5099 Unified Wire Storage Controller 569a T520-509A Unified Wire Storage Controller 569b T540-509B Unified Wire Storage Controller 569c T520-509C Unified Wire Storage Controller 569d T540-509D Unified Wire Storage Controller 569e T520-509E Unified Wire Storage Controller 569f T540-509F Unified Wire Storage Controller 56a0 T540-50A0 Unified Wire Storage Controller 56a1 T540-50A1 Unified Wire Storage Controller 56a2 T580-50A2 Unified Wire Storage Controller 56a3 T580-50A3 Unified Wire Storage Controller 56a4 T540-50A4 Unified Wire Storage Controller 56a5 T522-50A5 Unified Wire Storage Controller 56a6 T522-50A6 Unified Wire Storage Controller 56a7 T580-50A7 Unified Wire Storage Controller 56a8 T580-50A8 Unified Wire Storage Controller 56a9 T580-50A9 Unified Wire Storage Controller 56aa T580-50AA Unified Wire Storage Controller 56ab T520-50AB Unified Wire Storage Controller 56ac T540-50AC Unified Wire Storage Controller 56ad T520-50AD Unified Wire Storage Controller 56ae T540-50AE Unified Wire Storage Controller 56af T580-50AF Unified Wire Storage Controller 56b0 T520-50B0 Unified Wire Storage Controller 5701 T520-CR Unified Wire Ethernet Controller 5702 T522-CR Unified Wire Ethernet Controller 5703 T540-CR Unified Wire Ethernet Controller 5704 T520-BCH Unified Wire Ethernet Controller 5705 T540-BCH Unified Wire Ethernet Controller 5706 T540-CH Unified Wire Ethernet Controller 5707 T520-SO Unified Wire Ethernet Controller 5708 T520-CX Unified Wire Ethernet Controller 5709 T520-BT Unified Wire Ethernet Controller 570a T504-BT Unified Wire Ethernet Controller 570b B520-SR Unified Wire Ethernet Controller 570c B504-BT Unified Wire Ethernet Controller 570d T580-CR Unified Wire Ethernet Controller 570e T540-LP-CR Unified Wire Ethernet Controller 570f T540 [Amsterdam] Unified Wire Ethernet Controller 5710 T580-LP-CR Unified Wire Ethernet Controller 5711 T520-LL-CR Unified Wire Ethernet Controller 5712 T560-CR Unified Wire Ethernet Controller 5713 T580-CR Unified Wire Ethernet Controller 5714 T580-SO-CR Unified Wire Ethernet Controller 5715 T502-BT Unified Wire Ethernet Controller 5780 T540-5080 Unified Wire Ethernet Controller 5781 T540-5081 Unified Wire Ethernet Controller 5782 T504-5082 Unified Wire Ethernet Controller 5783 T540-5083 Unified Wire Ethernet Controller 5784 T580-5084 Unified Wire Ethernet Controller 5785 T580-5085 Unified Wire Ethernet Controller 5786 T580-5086 Unified Wire Ethernet Controller 5787 T580-5087 Unified Wire Ethernet Controller 5788 T570-5088 Unified Wire Ethernet Controller 5789 T520-5089 Unified Wire Ethernet Controller 5790 T540-5090 Unified Wire Ethernet Controller 5791 T522-5091 Unified Wire Ethernet Controller 5792 T520-5092 Unified Wire Ethernet Controller 5793 T580-5093 Unified Wire Ethernet Controller 5794 T540-5094 Unified Wire Ethernet Controller 5795 T540-5095 Unified Wire Ethernet Controller 5796 T580-5096 Unified Wire Ethernet Controller 5797 T520-5097 Unified Wire Ethernet Controller 5801 T520-CR Unified Wire Ethernet Controller [VF] 5802 T522-CR Unified Wire Ethernet Controller [VF] 5803 T540-CR Unified Wire Ethernet Controller [VF] 5804 T520-BCH Unified Wire Ethernet Controller [VF] 5805 T540-BCH Unified Wire Ethernet Controller [VF] 5806 T540-CH Unified Wire Ethernet Controller [VF] 5807 T520-SO Unified Wire Ethernet Controller [VF] 5808 T520-CX Unified Wire Ethernet Controller [VF] 5809 T520-BT Unified Wire Ethernet Controller [VF] 580a T504-BT Unified Wire Ethernet Controller [VF] 580b B520-SR Unified Wire Ethernet Controller [VF] 580c B504-BT Unified Wire Ethernet Controller [VF] 580d T580-CR Unified Wire Ethernet Controller [VF] 580e T540-LP-CR Unified Wire Ethernet Controller [VF] 580f T540 [Amsterdam] Unified Wire Ethernet Controller [VF] 5810 T580-LP-CR Unified Wire Ethernet Controller [VF] 5811 T520-LL-CR Unified Wire Ethernet Controller [VF] 5812 T560-CR Unified Wire Ethernet Controller [VF] 5813 T580-CHR Unified Wire Ethernet Controller [VF] 5814 T580-SO-CR Unified Wire Ethernet Controller [VF] 5815 T502-BT Unified Wire Ethernet Controller [VF] 5816 T580-OCP-SO Unified Wire Ethernet Controller [VF] 5817 T520-OCP-SO Unified Wire Ethernet Controller [VF] 5818 T540-BT Unified Wire Ethernet Controller [VF] 5819 T540-LP-BT Unified Wire Ethernet Controller [VF] 581a T540-SO-BT Unified Wire Ethernet Controller [VF] 581b T540-SO-CR Unified Wire Ethernet Controller [VF] 5880 T540-5080 Unified Wire Ethernet Controller [VF] 5881 T540-5081 Unified Wire Ethernet Controller [VF] 5882 T504-5082 Unified Wire Ethernet Controller [VF] 5883 T540-5083 Unified Wire Ethernet Controller [VF] 5884 T540-5084 Unified Wire Ethernet Controller [VF] 5885 T580-5085 Unified Wire Ethernet Controller [VF] 5886 T580-5086 Unified Wire Ethernet Controller [VF] 5887 T580-5087 Unified Wire Ethernet Controller [VF] 5888 T570-5088 Unified Wire Ethernet Controller [VF] 5889 T520-5089 Unified Wire Ethernet Controller [VF] 5890 T540-5090 Unified Wire Ethernet Controller [VF] 5891 T522-5091 Unified Wire Ethernet Controller [VF] 5892 T520-5092 Unified Wire Ethernet Controller [VF] 5893 T580-5093 Unified Wire Ethernet Controller [VF] 5894 T540-5094 Unified Wire Ethernet Controller [VF] 5895 T540-5095 Unified Wire Ethernet Controller [VF] 5896 T580-5096 Unified Wire Ethernet Controller [VF] 5897 T520-5097 Unified Wire Ethernet Controller [VF] 5898 T580-5098 Unified Wire Ethernet Controller [VF] 5899 T580-5099 Unified Wire Ethernet Controller [VF] 589a T520-509A Unified Wire Ethernet Controller [VF] 589b T540-509B Unified Wire Ethernet Controller [VF] 589c T520-509C Unified Wire Ethernet Controller [VF] 589d T540-509D Unified Wire Ethernet Controller [VF] 589e T520-509E Unified Wire Ethernet Controller [VF] 589f T540-509F Unified Wire Ethernet Controller [VF] 58a0 T540-50A0 Unified Wire Ethernet Controller [VF] 58a1 T540-50A1 Unified Wire Ethernet Controller [VF] 58a2 T580-50A2 Unified Wire Ethernet Controller [VF] 58a3 T580-50A3 Unified Wire Ethernet Controller [VF] 58a4 T540-50A4 Unified Wire Ethernet Controller [VF] 58a5 T522-50A5 Unified Wire Ethernet Controller [VF] 58a6 T522-50A6 Unified Wire Ethernet Controller [VF] 58a7 T580-50A7 Unified Wire Ethernet Controller [VF] 58a8 T580-50A8 Unified Wire Ethernet Controller [VF] 58a9 T580-50A9 Unified Wire Ethernet Controller [VF] 58aa T580-50AA Unified Wire Ethernet Controller [VF] 58ab T520-50AB Unified Wire Ethernet Controller [VF] 58ac T540-50AC Unified Wire Ethernet Controller [VF] 58ad T520-50AD Unified Wire Ethernet Controller [VF] 58ae T540-50AE Unified Wire Ethernet Controller [VF] 58af T580-50AF Unified Wire Ethernet Controller [VF] 58b0 T520-50B0 Unified Wire Ethernet Controller [VF] 6001 T6225-CR Unified Wire Ethernet Controller 6002 T6225-SO-CR Unified Wire Ethernet Controller 6003 T6425-CR Unified Wire Ethernet Controller 6004 T6425-SO-CR Unified Wire Ethernet Controller 6005 T6225-SO-OCP3 Unified Wire Ethernet Controller 6006 T6225-OCP3 Unified Wire Ethernet Controller 6007 T62100-LP-CR Unified Wire Ethernet Controller 6008 T62100-SO-CR Unified Wire Ethernet Controller 6009 T6210-BT Unified Wire Ethernet Controller 600d T62100-CR Unified Wire Ethernet Controller 6011 T6225-LL-CR Unified Wire Ethernet Controller 6014 T62100-SO-OCP3 Unified Wire Ethernet Controller 6015 T6201-BT Unified Wire Ethernet Controller 6080 T6225-6080 Unified Wire Ethernet Controller 6081 T62100-6081 Unified Wire Ethernet Controller 6082 T6225-6082 Unified Wire Ethernet Controller 6083 T62100-6083 Unified Wire Ethernet Controller 6084 T64100-6084 Unified Wire Ethernet Controller 6085 T6240-6085 Unified Wire Ethernet Controller 6086 T6225-6086 Unified Wire Ethernet Controller 6087 T6225-6087 Unified Wire Ethernet Controller 6088 T62100-6088 Unified Wire Ethernet Controller 6089 T62100-6089 Unified Wire Ethernet Controller 608a T62100-608a Unified Wire Ethernet Controller 6092 T62100-KR Unified Wire Ethernet Controller 01de fff9 Gimlet Baseboard 6401 T6225-CR Unified Wire Ethernet Controller 6402 T6225-SO-CR Unified Wire Ethernet Controller 6403 T6425-CR Unified Wire Ethernet Controller 6404 T6425-SO-CR Unified Wire Ethernet Controller 6405 T6225-SO-OCP3 Unified Wire Ethernet Controller 6406 T6225-OCP3 Unified Wire Ethernet Controller 6407 T62100-LP-CR Unified Wire Ethernet Controller 6408 T62100-SO-CR Unified Wire Ethernet Controller 6409 T6210-BT Unified Wire Ethernet Controller 640d T62100-CR Unified Wire Ethernet Controller 6411 T6225-LL-CR Unified Wire Ethernet Controller 6414 T62100-SO-OCP3 Unified Wire Ethernet Controller 6415 T6201-BT Unified Wire Ethernet Controller 6480 T6225-6080 Unified Wire Ethernet Controller 6481 T62100-6081 Unified Wire Ethernet Controller 6482 T6225-6082 Unified Wire Ethernet Controller 6483 T62100-6083 Unified Wire Ethernet Controller 6484 T64100-6084 Unified Wire Ethernet Controller 6485 T6240-6085 Unified Wire Ethernet Controller 6486 T6225-6086 Unified Wire Ethernet Controller 6487 T6225-6087 Unified Wire Ethernet Controller 6488 T62100-6088 Unified Wire Ethernet Controller 6489 T62100-6089 Unified Wire Ethernet Controller 648a T62100-608a Unified Wire Ethernet Controller 6492 T62100-KR Unified Wire Ethernet Controller 01de fff9 Gimlet Baseboard 6501 T6225-CR Unified Wire Storage Controller 6502 T6225-SO-CR Unified Wire Storage Controller 6503 T6425-CR Unified Wire Storage Controller 6504 T6425-SO-CR Unified Wire Storage Controller 6505 T6225-SO-OCP3 Unified Wire Storage Controller 6506 T6225-OCP3 Unified Wire Storage Controller 6507 T62100-LP-CR Unified Wire Storage Controller 6508 T62100-SO-CR Unified Wire Storage Controller 6509 T6210-BT Unified Wire Storage Controller 650d T62100-CR Unified Wire Storage Controller 6511 T6225-LL-CR Unified Wire Storage Controller 6514 T62100-SO-OCP3 Unified Wire Storage Controller 6515 T6201-BT Unified Wire Storage Controller 6580 T6225-6080 Unified Wire Storage Controller 6581 T62100-6081 Unified Wire Storage Controller 6582 T6225-6082 Unified Wire Storage Controller 6583 T62100-6083 Unified Wire Storage Controller 6584 T64100-6084 Unified Wire Storage Controller 6585 T6240-6085 Unified Wire Storage Controller 6586 T6225-6086 Unified Wire Storage Controller 6587 T6225-6087 Unified Wire Storage Controller 6588 T62100-6088 Unified Wire Storage Controller 6589 T62100-6089 Unified Wire Storage Controller 658a T62100-608a Unified Wire Storage Controller 6592 T62100-KR Unified Wire Storage Controller 6601 T6225-CR Unified Wire Storage Controller 6602 T6225-SO-CR Unified Wire Storage Controller 6603 T6425-CR Unified Wire Storage Controller 6604 T6425-SO-CR Unified Wire Storage Controller 6605 T6225-SO-OCP3 Unified Wire Storage Controller 6606 T6225-OCP3 Unified Wire Storage Controller 6607 T62100-LP-CR Unified Wire Storage Controller 6608 T62100-SO-CR Unified Wire Storage Controller 6609 T6210-BT Unified Wire Storage Controller 660d T62100-CR Unified Wire Storage Controller 6611 T6225-LL-CR Unified Wire Storage Controller 6614 T62100-SO-OCP3 Unified Wire Storage Controller 6615 T6201-BT Unified Wire Storage Controller 6680 T6225-6080 Unified Wire Storage Controller 6681 T62100-6081 Unified Wire Storage Controller 6682 T6225-6082 Unified Wire Storage Controller 6683 T62100-6083 Unified Wire Storage Controller 6684 T64100-6084 Unified Wire Storage Controller 6685 T6240-6085 Unified Wire Storage Controller 6686 T6225-6086 Unified Wire Storage Controller 6687 T6225-6087 Unified Wire Storage Controller 6688 T62100-6088 Unified Wire Storage Controller 6689 T62100-6089 Unified Wire Storage Controller 668a T62100-608a Unified Wire Storage Controller 6692 T62100-KR Unified Wire Storage Controller 6801 T6225-CR Unified Wire Ethernet Controller [VF] 6802 T6225-SO-CR Unified Wire Ethernet Controller [VF] 6803 T6425-CR Unified Wire Ethernet Controller [VF] 6804 T6425-SO-CR Unified Wire Ethernet Controller [VF] 6805 T6225-SO-OCP3 Unified Wire Ethernet Controller [VF] 6806 T6225-OCP3 Unified Wire Ethernet Controller [VF] 6807 T62100-LP-CR Unified Wire Ethernet Controller [VF] 6808 T62100-SO-CR Unified Wire Ethernet Controller [VF] 6809 T6210-BT Unified Wire Ethernet Controller [VF] 680d T62100-CR Unified Wire Ethernet Controller [VF] 6811 T6225-LL-CR Unified Wire Ethernet Controller [VF] 6814 T62100-SO-OCP3 Unified Wire Ethernet Controller [VF] 6815 T6201-BT Unified Wire Ethernet Controller [VF] 6880 T6225-6080 Unified Wire Ethernet Controller [VF] 6881 T62100-6081 Unified Wire Ethernet Controller [VF] 6882 T6225-6082 Unified Wire Ethernet Controller [VF] 6883 T62100-6083 Unified Wire Ethernet Controller [VF] 6884 T64100-6084 Unified Wire Ethernet Controller [VF] 6885 T6240-6085 Unified Wire Ethernet Controller [VF] 6886 T6225-6086 Unified Wire Ethernet Controller [VF] 6887 T6225-6087 Unified Wire Ethernet Controller [VF] 6888 T62100-6088 Unified Wire Ethernet Controller [VF] 6889 T62100-6089 Unified Wire Ethernet Controller [VF] 688a T62100-608a Unified Wire Ethernet Controller [VF] a000 PE10K Unified Wire Ethernet Controller 1426 Storage Technology Corp. 1427 Better On-Line Solutions 1428 Edec Co Ltd 1429 Unex Technology Corp. 142a Kingmax Technology Inc 142b Radiolan 142c Minton Optic Industry Co Ltd 142d Pix stream Inc 142e Vitec Multimedia 4020 VM2-2 [Video Maker 2] MPEG1/2 Encoder 4337 VM2-2-C7 [Video Maker 2 rev. C7] MPEG1/2 Encoder 142f Radicom Research Inc 1430 ITT Aerospace/Communications Division 1431 Gilat Satellite Networks 1432 Edimax Computer Co. 9130 RTL81xx Fast Ethernet 1433 Eltec Elektronik GmbH # Nee Real Time Devices US Inc. 1435 RTD Embedded Technologies, Inc. 4520 PCI4520 6020 SPM6020 6030 SPM6030 6420 SPM186420 6430 SPM176430 6431 SPM176431 7520 DM7520 7540 SDM7540 7820 DM7820 1436 CIS Technology Inc 1437 Nissin Inc Co 1438 Atmel-dream 1439 Outsource Engineering & Mfg. Inc 143a Stargate Solutions Inc 143b Canon Research Center, America 143c Amlogic Inc 143d Tamarack Microelectronics Inc 143e Jones Futurex Inc 143f Lightwell Co Ltd - Zax Division 1440 ALGOL Corp. 1441 AGIE Ltd 1442 Phoenix Contact GmbH & Co. 1443 Unibrain S.A. 1444 TRW 1445 Logical DO Ltd 1446 Graphin Co Ltd 1447 AIM GmBH 1448 Alesis Studio Electronics 1449 TUT Systems Inc 144a Adlink Technology 6208 PCI-6208V 7250 PCI-7250 7296 PCI-7296 7432 PCI-7432 7433 PCI-7433 7434 PCI-7434 7841 PCI-7841 8133 PCI-8133 8164 PCI-8164 8554 PCI-8554 9111 PCI-9111 9113 PCI-9113 9114 PCI-9114 # 2-16 MB SRAM, 4x UART, I2C, misc I/O a001 ADi-BSEC # nee Loronix Information Systems Inc. 144b Verint Systems Inc. 144c Catalina Research Inc 144d Samsung Electronics Co Ltd 1600 S4LN053X01 AHCI SSD Controller(Apple slot) 9602 RS780/RS880 PCI to PCI bridge (int gfx) a544 Exynos 8890 PCIe Root Complex a575 Exynos 7420 PCIe Root Complex a5e3 Exynos 5433 PCIe Root Complex a800 XP941 PCIe SSD a801 S4LN058A01[SSUBX] AHCI SSD Controller (Apple slot) a802 NVMe SSD Controller SM951/PM951 144d a801 PM963 2.5" NVMe PCIe SSD a804 NVMe SSD Controller SM961/PM961/SM963 144d a801 SM963 2.5" NVMe PCIe SSD a806 NVMe SSD SM0032L a808 NVMe SSD Controller SM981/PM981/PM983 # Used by different variants of SSD 970 EVO and PRO 144d a801 SSD 970 EVO/PRO 1d49 403b Thinksystem U.2 PM983 NVMe SSD a809 NVMe SSD Controller 980 (DRAM-less) a80a NVMe SSD Controller PM9A1/PM9A3/980PRO 0128 215a DC NVMe PM9A3 RI U.2 960GB 0128 215b DC NVMe PM9A3 RI U.2 1.92TB 0128 215c DC NVMe PM9A3 RI U.2 3.84TB 0128 215d DC NVMe PM9A3 RI U.2 7.68TB 0128 2166 DC NVMe PM9A3 RI 110M.2 960GB 0128 2167 DC NVMe PM9A3 RI 110M.2 1.92TB 0128 2168 DC NVMe PM9A3 RI 80M.2 480GB 0128 2169 DC NVMe PM9A3 RI 80M.2 960GB 1028 215a DC NVMe PM9A3 RI U.2 960GB 1028 215b DC NVMe PM9A3 RI U.2 1.92TB 1028 215c DC NVMe PM9A3 RI U.2 3.84TB 1028 2166 DC NVMe PM9A3 RI 110M.2 960GB 1028 2167 DC NVMe PM9A3 RI 110M.2 1.92TB 1028 2168 DC NVMe PM9A3 RI 80M.2 480GB 1028 2169 DC NVMe PM9A3 RI 80M.2 960GB 1028 2276 DC NVMe PM9A3 RI 110M.2 960GB 1028 2277 DC NVMe PM9A3 RI 110M.2 1.92TB 1028 512d DC NVMe PM9A3 RI U.2 7.68TB 144d a801 SSD 980 PRO 144d a813 General DC NVMe PM9A3 # Actually 88SS1322 according to techpowerup a80b NVMe SSD Controller PM9B1 (DRAM-less) a80c NVMe SSD Controller S4LV008[Pascal] a80d NVMe SSD Controller PM9C1a (DRAM-less) a820 NVMe SSD Controller 171X 1028 1f95 Express Flash NVMe XS1715 SSD 400GB 1028 1f96 Express Flash NVMe XS1715 SSD 800GB 1028 1f97 Express Flash NVMe XS1715 SSD 1600GB 1028 1fa4 Express Flash NVMe SM1715 3.2TB SFF 1028 1fa6 Express Flash NVMe SM1715 3.2TB AIC 1028 1fba Express Flash NVMe SM1715 800GB SFF 1028 1fbb Express Flash NVMe SM1715 1.6TB SFF 1028 1fbc Express Flash NVMe SM1715 1.6TB AIC a821 NVMe SSD Controller 172X 1028 1fb7 Express Flash NVMe PM1725 3.2TB SFF 1028 1fb8 Express Flash NVMe PM1725 3.2TB AIC 1028 1fb9 Express Flash NVMe PM1725 6.4TB AIC 1028 1fc1 Express Flash NVMe PM1725 800GB SFF 1028 1fc2 Express Flash NVMe PM1725 1.6TB SFF 1028 1fc4 Express Flash NVMe PM1725 1.6TB AIC a822 NVMe SSD Controller 172Xa/172Xb 1014 0621 PCIe3 1.6TB NVMe Flash Adapter II x8 1014 0622 PCIe3 3.2TB NVMe Flash Adapter II x8 1014 0629 PCIe3 6.4TB NVMe Flash Adapter II x8 1014 064a PCIe3 1.6TB NVMe Flash Adapter III x8 1014 064b PCIe3 3.2TB NVMe Flash Adapter III x8 1014 064c PCIe3 6.4TB NVMe Flash Adapter III x8 1028 1fd9 Express Flash PM1725a 800GB SFF 1028 1fda Express Flash PM1725a 1.6TB SFF 1028 1fdb Express Flash PM1725a 3.2TB SFF 1028 1fdc Express Flash PM1725a 6.4TB SFF 1028 1fdd Express Flash PM1725a 1.6TB AIC 1028 1fde Express Flash PM1725a 3.2TB AIC 1028 1fdf Express Flash PM1725a 6.4TB AIC 1028 1ff3 Express Flash PM1725b 1.6TB SFF 1028 1ff4 Express Flash PM1725b 3.2TB SFF 1028 1ff5 Express Flash PM1725b 6.4TB SFF 1028 1ff6 Express Flash PM1725b 12.8TB SFF 1028 1ff7 Express Flash PM1725b 1.6TB AIC 1028 1ff8 Express Flash PM1725b 3.2TB AIC 1028 1ff9 Express Flash PM1725b 6.4TB AIC 1028 1ffa Express Flash PM1725b 12.8TB AIC a824 NVMe SSD Controller PM173X 1028 2040 EMC PowerEdge Express Flash Ent NVMe AGN MU U.2 Gen4 1.6TB 1028 2041 EMC PowerEdge Express Flash Ent NVMe AGN MU U.2 Gen4 3.2TB 1028 2042 EMC PowerEdge Express Flash Ent NVMe AGN MU U.2 Gen4 6.4TB 1028 2043 EMC PowerEdge Express Flash Ent NVMe AGN MU U.2 Gen4 12.8TB 1028 2044 EMC PowerEdge Express Flash Ent NVMe AGN MU AIC Gen4 1.6TB 1028 2045 EMC PowerEdge Express Flash Ent NVMe AGN MU AIC Gen4 3.2TB 1028 2046 EMC PowerEdge Express Flash Ent NVMe AGN MU AIC Gen4 6.4TB 1028 2070 EMC PowerEdge Express Flash Ent NVMe AGN RI U.2 Gen4 1.92TB 1028 2071 EMC PowerEdge Express Flash Ent NVMe AGN RI U.2 Gen4 3.84TB 1028 2072 EMC PowerEdge Express Flash Ent NVMe AGN RI U.2 Gen4 7.68TB 1028 2073 EMC PowerEdge Express Flash Ent NVMe AGN RI U.2 Gen4 15.36TB 1028 2074 EMC PowerEdge Express Flash Ent NVMe AGN RI AIC Gen4 1.92TB 1028 2075 EMC PowerEdge Express Flash Ent NVMe AGN RI AIC Gen4 3.84TB 1028 2076 EMC PowerEdge Express Flash Ent NVMe AGN RI AIC Gen4 7.68TB 1028 2090 EMC PowerEdge Express Flash Ent NVMe AGN SED MU U.2 Gen4 1.6TB 1028 2091 EMC PowerEdge Express Flash Ent NVMe AGN SED MU U.2 Gen4 3.2TB 1028 2092 EMC PowerEdge Express Flash Ent NVMe AGN SED MU U.2 Gen4 6.4TB 1028 2093 EMC PowerEdge Express Flash Ent NVMe AGN SED MU U.2 Gen4 12.8TB 1028 2094 EMC PowerEdge Express Flash Ent NVMe AGN SED MU AIC Gen4 1.6TB 1028 2095 EMC PowerEdge Express Flash Ent NVMe AGN SED MU AIC Gen4 3.2TB 1028 2096 EMC PowerEdge Express Flash Ent NVMe AGN SED MU AIC Gen4 6.4TB 1028 2097 EMC PowerEdge Express Flash Ent NVMe AGN SED RI U.2 Gen4 1.92TB 1028 2098 EMC PowerEdge Express Flash Ent NVMe AGN SED RI U.2 Gen4 3.84TB 1028 2099 EMC PowerEdge Express Flash Ent NVMe AGN SED RI U.2 Gen4 7.68TB 1028 2118 Ent NVMe v2 AGN FIPS MU U.2 1.6TB 1028 2119 Ent NVMe v2 AGN MU U.2 1.6TB 1028 2120 Ent NVMe v2 AGN FIPS MU U.2 3.2T 1028 2121 Ent NVMe v2 AGN MU U.2 3.2TB 1028 2122 Ent NVMe v2 AGN FIPS MU U.2 6.4TB 1028 2123 Ent NVMe v2 AGN MU U.2 6.4TB 1028 2124 Ent NVMe v2 AGN FIPS MU U.2 6.4TB 1028 2125 Ent NVMe v2 AGN MU U.2 12.8TB 1028 2126 Ent NVMe v2 AGN FIPS RI U.2 1.92TB 1028 2127 Ent NVMe v2 AGN RI U.2 1.92TB 1028 2128 Ent NVMe v2 AGN FIPS RI U.2 3.84TB 1028 2129 Ent NVMe v2 AGN RI U.2 3.84TB 1028 2130 Ent NVMe v2 AGN FIPS RI U.2 7.68TB 1028 2131 Ent NVMe v2 AGN RI U.2 7.68TB 1028 2132 Ent NVMe v2 AGN FIPS RI U.2 15.36TB 1028 2133 Ent NVMe v2 AGN RI U.2 15.36TB a825 NVMe SSD Controller PM173Xa 1028 2178 Ent NVMe FIPS PM1733a RI 1.92TB 1028 2179 Ent NVMe PM1733a RI 1.92TB 1028 217a Ent NVMe FIPS PM1733a RI 3.84TB 1028 217b Ent NVMe PM1733a RI 3.84TB 1028 217c Ent NVMe FIPS PM1733a RI 7.68TB 1028 217d Ent NVMe PM1733a RI 7.68TB 1028 217e Ent NVMe FIPS PM1733a RI 15.36TB 1028 217f Ent NVMe PM1733a RI 15.36TB 1028 2180 Ent NVMe FIPS PM1735a MU 1.6TB 1028 2181 Ent NVMe PM1735a MU 1.6TB 1028 2182 Ent NVMe FIPS PM1735a MU 3.2TB 1028 2183 Ent NVMe PM1735a MU 3.2TB 1028 2184 Ent NVMe FIPS PM1735a MU 6.4TB 1028 2185 Ent NVMe PM1735a MU 6.4TB 1028 2186 Ent NVMe FIPS PM1735a MU 12.8TB 1028 2187 Ent NVMe PM1735a MU 12.8TB 1028 226a Ent NVMe FIPS PM1733a RI 30.72TB a826 NVMe SSD Controller PM174X 1028 2214 NVMe PM1743 RI E3.S 1.92TB 1028 2216 NVMe PM1743 RI E3.S 3.84TB 1028 2218 NVMe PM1743 RI E3.S 7.68TB 1028 221a NVMe PM1743 RI E3.S 15.36TB 1028 221c NVMe PM1745 MU E3.S 1.6TB 1028 221e NVMe PM1745 MU E3.S 3.2TB 1028 2220 NVMe PM1745 MU E3.S 6.4TB 1028 2222 NVMe PM1745 MU E3.S 12.8TB 1028 224e NVMe FIPS PM1743 RI U.2 1.92TB 1028 224f NVMe PM1743 RI U.2 1.92TB 1028 2250 NVMe FIPS PM1743 RI U.2 3.84TB 1028 2251 NVMe PM1743 RI U.2 3.84TB 1028 2252 NVMe FIPS PM1743 RI U.2 7.68TB 1028 2253 NVMe PM1743 RI U.2 7.68TB 1028 2254 NVMe FIPS PM1743 RI U.2 15.36TB 1028 2255 NVMe PM1743 RI U.2 15.36TB 1028 2258 NVMe FIPS PM1745 MU U.2 1.6TB 1028 2259 NVMe PM1745 MU U.2 1.6TB 1028 225a NVMe FIPS PM1745 MU U.2 3.2TB 1028 225b NVMe PM1745 MU U.2 3.2TB 1028 225c NVMe FIPS PM1745 MU U.2 6.4TB 1028 225d NVMe PM1745 MU U.2 6.4TB 1028 225e NVMe FIPS PM1745 MU U.2 12.8TB 1028 225f NVMe PM1745 MU U.2 12.8TB a900 NVMe SSD Controller PM9DXa ecec Exynos 8895 PCIe Root Complex 144e OLITEC 144f Askey Computer Corp. 1450 Octave Communications Ind. 1451 SP3D Chip Design GmBH 1453 MYCOM Inc 1454 Altiga Networks 1455 Logic Plus Plus Inc 1456 Advanced Hardware Architectures 1457 Nuera Communications Inc 1458 Gigabyte Technology Co., Ltd 1002 Aourus Radeon RX6900XT Xtreme Waterforce WB 16G 22e8 Ellesmere [Radeon RX 480] 3483 USB 3.0 Controller (VIA VL80x-based xHCI Controller) 1459 DOOIN Electronics 145a Escalate Networks Inc 145b PRAIM SRL 145c Cryptek 145d Gallant Computer Inc 145e Aashima Technology B.V. 145f Baldor Electric Company 0001 NextMove PCI 1460 DYNARC INC 1461 Avermedia Technologies Inc a3ce M179 a3cf M179 a836 M115 DVB-T, PAL/SECAM/NTSC Tuner e836 M115S Hybrid Analog/DVB PAL/SECAM/NTSC Tuner f436 AVerTV Hybrid+FM 1462 Micro-Star International Co., Ltd. [MSI] 3483 MSI USB 3.0 (VIA VL80x-based xHCI USB Controller) # This is MSI refreshed variant of their MECH series Navi 23 GPU card (73EF) 5027 RX 6650XT MECH 2X 7c56 Realtek Ethernet controller RTL8111H aaf0 Radeon RX 580 Gaming X 8G 1463 Fast Corporation 1464 Interactive Circuits & Systems Ltd 1465 GN NETTEST Telecom DIV. 1466 Designpro Inc. 1467 DIGICOM SPA 1468 AMBIT Microsystem Corp. 1469 Cleveland Motion Controls # formerly IFR. 146a Aeroflex # 1.5 GHz to 3.0 GHz x 1Hz 3010 3010 RF Synthesizer 3a11 3011A PXI RF Synthesizer 146b Parascan Technologies Ltd 146c Ruby Tech Corp. 1430 FE-1430TX Fast Ethernet PCI Adapter 146d Tachyon, INC. 146e Williams Electronics Games, Inc. 146f Multi Dimensional Consulting Inc 1470 Bay Networks 1471 Integrated Telecom Express Inc 1472 DAIKIN Industries, Ltd 1473 ZAPEX Technologies Inc 1474 Doug Carson & Associates 1475 PICAZO Communications 1476 MORTARA Instrument Inc 1477 Net Insight 1478 DIATREND Corporation 1479 TORAY Industries Inc 147a FORMOSA Industrial Computing 147b ABIT Computer Corp. 1084 IP35 [Dark Raider] 147c AWARE, Inc. 147d Interworks Computer Products 147e Matsushita Graphic Communication Systems, Inc. 147f NIHON UNISYS, Ltd. 1480 SCII Telecom 1481 BIOPAC Systems Inc 1482 ISYTEC - Integrierte Systemtechnik GmBH 0001 PCI-16 Host Interface for ITC-16 1483 LABWAY Corporation 1484 Logic Corporation 1485 ERMA - Electronic GmBH 1486 L3 Communications Telemetry & Instrumentation 1487 MARQUETTE Medical Systems 1489 KYE Systems Corporation 148a OPTO 148b INNOMEDIALOGIC Inc. 148c Tul Corporation / PowerColor 2391 Radeon RX 590 [Red Devil] 2398 AXRX 5700 XT 8GBD6-3DHE/OC [PowerColor Red Devil Radeon RX 5700 XT] 148d DIGICOM Systems, Inc. 1003 HCF 56k Data/Fax Modem 148e OSI Plus Corporation 148f Plant Equipment, Inc. 1490 Stone Microsystems PTY Ltd. 1491 ZEAL Corporation 1492 Time Logic Corporation 1493 MAKER Communications 1494 WINTOP Technology, Inc. 1495 TOKAI Communications Industry Co. Ltd 1496 JOYTECH Computer Co., Ltd. 1497 SMA Regelsysteme GmBH 1497 SMA Technologie AG 1498 TEWS Technologies GmbH 0330 TPMC816 2 Channel CAN bus controller. 035d TPMC861 4-Channel Isolated Serial Interface RS422/RS485 0385 TPMC901 Extended CAN bus with 2/4/6 CAN controller 21cc TCP460 CompactPCI 16 Channel Serial Interface RS232/RS422 21cd TCP461 CompactPCI 8 Channel Serial Interface RS232/RS422 3064 TPCI100 (2 Slot IndustryPack PCI Carrier) 30c8 TPCI200 4 Slot IndustryPack PCI Carrier 70c8 TPCE200 4 Slot IndustryPack PCIe Carrier 9177 TXMC375 8 channel RS232/RS422/RS485 programmable serial interface 1499 EMTEC CO., Ltd 149a ANDOR Technology Ltd 149b SEIKO Instruments Inc 149c OVISLINK Corp. 149d NEWTEK Inc 0001 Video Toaster for PC 149e Mapletree Networks Inc. 149f LECTRON Co Ltd 14a0 SOFTING GmBH 14a1 Systembase Co Ltd 4d02 SB16C1052PCI [Multi-2/PCIe RS232] 14a2 Millennium Engineering Inc 14a3 Maverick Networks 14a4 Lite-On Technology Corporation 2100 CA1-8D128 NVMe SSD 2200 CX2-8B256, CX2-8B512 NVMe SSD 22a0 EP2-KB960 NVMe SSD 22f1 M8Pe Series NVMe SSD 2300 CA3-8D256, CA3-8D512 NVMe SSD 23f1 M9PeG, M9PeGN, M9PeY NVMe SSD 2f00 CAZ-82512 NVMe SSD 3500 CA5-8D512 NVMe SSD # Wrong vendor ID used 4318 Broadcom BCM4318 [AirForce One 54g] 802.11g WLAN Controller 5100 CB1-SD256, CB1-SD512 NVMe SSD 9100 CL1-3D256, CL1-8D512 NVMe SSD (DRAM-less) 14a5 XIONICS Document Technologies Inc 14a6 INOVA Computers GmBH & Co KG 14a7 MYTHOS Systems Inc 14a8 FEATRON Technologies Corporation 14a9 HIVERTEC Inc 14aa Advanced MOS Technology Inc # nee Mentor Graphics Corp. 14ab Siemens Industry Software Inc. 14ac Novaweb Technologies Inc 14ad Time Space Radio AB 14ae CTI, Inc 14af Guillemot Corporation 7102 3D Prophet II MX 14b0 BST Communication Technology Ltd 14b1 Nextcom K.K. 14b2 ENNOVATE Networks Inc 14b3 XPEED Inc 0000 DSL NIC 14b4 PHILIPS Business Electronics B.V. 14b5 Creamware GmBH 0200 Scope 0300 Pulsar 0400 PulsarSRB 0600 Pulsar2 0800 DSP-Board 0900 DSP-Board 0a00 DSP-Board 0b00 DSP-Board 14b6 Quantum Data Corp. 14b7 PROXIM Inc 0001 Symphony 4110 14b8 Techsoft Technology Co Ltd 14b9 Cisco Aironet Wireless Communications 0001 PC4800 0340 PC4800 0350 350 series 802.11b Wireless LAN Adapter 4500 PC4500 4800 Cisco Aironet 340 802.11b Wireless LAN Adapter/Aironet PC4800 a504 Cisco Aironet Wireless 802.11b a505 Cisco Aironet CB20a 802.11a Wireless LAN Adapter a506 Cisco Aironet Mini PCI b/g 14ba INTERNIX Inc. # ARCNET interface card based on SMSC COM20022 chip and manufactured for SMSC Japan 0600 ARC-PCI/22 14bb SEMTECH Corporation 14bc Globespan Semiconductor Inc. d002 Pulsar [PCI ADSL Card] d00f Pulsar [PCI ADSL Card] 14bd CARDIO Control N.V. 14be L3 Communications 14bf SPIDER Communications Inc. 14c0 COMPAL Electronics Inc 1201 X550 10Gb 2P RJ45 OCP Mezz # now owned by CSP, Inc. 14c1 MYRICOM Inc. 0008 Myri-10G Dual-Protocol NIC 14c1 0008 10G-PCIE-8A 14c1 0009 10G-PCIE-8A (MSI-X firmware) 14c1 000a 10G-PCIE-8B 8043 Myrinet 2000 Scalable Cluster Interconnect 103c 1240 Myrinet M2L-PCI64/2-3.0 LANai 7.4 (HP OEM) 14c2 DTK Computer 14c3 MEDIATEK Corp. 0608 MT7921K (RZ608) Wi-Fi 6E 80MHz 0616 MT7922 802.11ax PCI Express Wireless Network Adapter 7603 MT7603E 802.11bgn PCI Express Wireless Network Adapter 7612 MT7612E 802.11acbgn PCI Express Wireless Network Adapter 7615 MT7615E 802.11ac PCI Express Wireless Network Adapter 7630 MT7630e 802.11bgn Wireless Network Adapter 7650 MT7650 802.11ac # MT7612E too? 7662 MT7662E 802.11ac PCI Express Wireless Network Adapter 7915 MT7915E 802.11ax PCI Express Wireless Network Adapter 7916 MT7905D/MT7975 # WiFi 6E capable 7922 MT7922 802.11ax PCI Express Wireless Network Adapter 1a3b 5300 ASUS PCE-AXE59BT 7961 MT7921 802.11ax PCI Express Wireless Network Adapter 8650 MT7650 Bluetooth 14c4 IWASAKI Information Systems Co Ltd 14c5 Automation Products AB 14c6 Data Race Inc 14c7 Modular Technology Holdings Ltd 14c8 Turbocomm Tech. Inc. 14c9 ODIN Telesystems Inc 14ca PE Logic Corp. 14cb Billionton Systems Inc 14cc NAKAYO Telecommunications Inc 14cd Universal Global Scientific Industrial Co.,Ltd 0001 USI-1514-1GbaseT [OCP1] 0002 USI-4227-SFP [OCP2] 0003 USI-X557-10GbaseT [OCP3] 14ce Whistle Communications 14cf TEK Microsystems Inc. 14d0 Ericsson Axe R & D 14d1 Computer Hi-Tech Co Ltd 14d2 Titan Electronics Inc 8001 VScom 010L 1 port parallel adaptor 8002 VScom 020L 2 port parallel adaptor 8010 VScom 100L 1 port serial adaptor 8011 VScom 110L 1 port serial and 1 port parallel adaptor 8020 VScom 200L 1 or 2 port serial adaptor 8021 VScom 210L 2 port serial and 1 port parallel adaptor 8028 VScom 200I/200I-SI 2-port serial adapter 8040 VScom 400L 4 port serial adaptor 8043 VScom 430L 4-port serial and 3-port parallel adapter 8048 VScom 400I 4-port serial adapter 8080 VScom 800L 8 port serial adaptor 8088 VScom 800I 8-port serial adapter a000 VScom 010H 1 port parallel adaptor a001 VScom 100H 1 port serial adaptor a003 VScom 400H 4 port serial adaptor a004 VScom 400HF1 4 port serial adaptor a005 VScom 200H 2 port serial adaptor a007 VScom PCI800EH (PCIe) 8-port serial adapter Port 1-4 a008 VScom PCI800EH (PCIe) 8-port serial adapter Port 5-8 a009 VScom PCI400EH (PCIe) 4-port serial adapter e001 VScom 010HV2 1 port parallel adaptor e010 VScom 100HV2 1 port serial adaptor e020 VScom 200HV2 2 port serial adaptor 14d3 CIRTECH (UK) Ltd 0002 DTL-T14000 Rev. 1 [PS2 TOOL CD/DVD Emulator] 0003 DTL-T14000 Rev. 2 [PS2 TOOL CD/DVD Emulator] 0004 DTL-T14000 Rev. 3 [PS2 TOOL CD/DVD Emulator] 14d4 Panacom Technology Corp 14d5 Nitsuko Corporation 14d6 Accusys Inc 6101 ACS-61xxx, PCIe to SAS/SATA RAID HBA 6201 ACS-62xxx, External PCIe to SAS/SATA RAID controller 14d7 Hirakawa Hewtech Corp 14d8 HOPF Elektronik GmBH # Formerly SiPackets, Inc., formerly API NetWorks, Inc., formerly Alpha Processor, Inc. 14d9 Alliance Semiconductor Corporation 0010 AP1011/SP1011 HyperTransport-PCI Bridge [Sturgeon] 9000 AS90L10204/10208 HyperTransport to PCI-X Bridge 14da National Aerospace Laboratories 14db AFAVLAB Technology Inc 2120 TK9902 2182 AFAVLAB Technology Inc. 8-port serial card 14dc Amplicon Liveline Ltd 0000 PCI230 0001 PCI242 0002 PCI244 0003 PCI247 0004 PCI248 0005 PCI249 0006 PCI260 0007 PCI224 0008 PCI234 0009 PCI236 000a PCI272 000b PCI215 14dd Boulder Design Labs Inc 14de Applied Integration Corporation 14df ASIC Communications Corp 14e1 INVERTEX 14e2 INFOLIBRIA 14e3 AMTELCO 14e4 Broadcom Inc. and subsidiaries 0576 BCM43224 802.11a/b/g/n 0800 Sentry5 Chipcommon I/O Controller 0804 Sentry5 PCI Bridge 0805 Sentry5 MIPS32 CPU 0806 Sentry5 Ethernet Controller 080b Sentry5 Crypto Accelerator 080f Sentry5 DDR/SDR RAM Controller 0811 Sentry5 External Interface Core 0816 BCM3302 Sentry5 MIPS32 CPU 1570 720p FaceTime HD Camera 1600 NetXtreme BCM5752 Gigabit Ethernet PCI Express 1028 01c1 Precision 490 1028 01c2 Latitude D620 103c 3015 PCIe LAN on Motherboard 107b 5048 E4500 Onboard 1259 2705 AT-2711FX 1601 NetXtreme BCM5752M Gigabit Ethernet PCI Express 1604 BCM5745X NetXtreme-E Ethernet Partition 1605 BCM5745X NetXtreme-E RDMA Partition 1606 BCM5745X NetXtreme-E RDMA Virtual Function 1609 BCM5745X NetXtreme-E Ethernet Virtual Function 1612 BCM70012 Video Decoder [Crystal HD] 1614 BCM57454 NetXtreme-E 10Gb/25Gb/40Gb/50Gb/100Gb Ethernet 14e4 d140 NetXtreme-E Quad-port 10GBASE-T Ethernet PCIe Adapter (BCM957454-P410SDBT) 14e4 d340 NetXtreme-E Quad-port 10GBASE-T Ethernet OCP 3.0 Adapter (BCM957454-N410SDBT) 1615 BCM70015 Video Decoder [Crystal HD] 1639 NetXtreme II BCM5709 Gigabit Ethernet 1028 0235 PowerEdge R710 BCM5709 Gigabit Ethernet 1028 0236 PowerEdge R610 BCM5709 Gigabit Ethernet 1028 0237 PowerEdge T610 BCM5709 Gigabit Ethernet 103c 7055 NC382i Integrated Multi-port PCI Express Gigabit Server Adapter 103c 7059 NC382T PCIe Dual Port Multifunction Gigabit Server Adapter 10a9 8027 Quad port Gigabit Ethernet Controller 163a NetXtreme II BCM5709S Gigabit Ethernet 1028 027b PowerEdge M805 Broadcom NetXtreme II BCM5709S 1028 029c PowerEdge M710 BCM5709S Gigabit Ethernet 103c 171d NC382m Dual Port 1GbE Multifunction BL-c Adapter 103c 7056 NC382i Integrated Quad Port PCI Express Gigabit Server Adapter 1259 2984 AT-2973SX 163b NetXtreme II BCM5716 Gigabit Ethernet 1028 028c PowerEdge R410 BCM5716 Gigabit Ethernet 1028 028d PowerEdge T410 BCM5716 Gigabit Ethernet 1028 02f1 PowerEdge R510 BCM5716 Gigabit Ethernet 163c NetXtreme II BCM5716S Gigabit Ethernet 163d NetXtreme II BCM57811 10-Gigabit Ethernet 1043 858a PEB-10G/57811-1S 163e NetXtreme II BCM57811 10 Gigabit Ethernet Multi Function 163f NetXtreme II BCM57811 10-Gigabit Ethernet Virtual Function 1641 NetXtreme BCM57787 Gigabit Ethernet PCIe 1642 NetXtreme BCM57764 Gigabit Ethernet PCIe 1643 NetXtreme BCM5725 Gigabit Ethernet PCIe 1644 NetXtreme BCM5700 Gigabit Ethernet 1014 0277 Broadcom Vigil B5700 1000Base-T 1028 00d1 Broadcom BCM5700 1028 0106 Broadcom BCM5700 1028 0109 Broadcom BCM5700 1000Base-T 1028 010a Broadcom BCM5700 1000BaseTX 10b7 1000 3C996-T 1000Base-T 10b7 1001 3C996B-T 1000Base-T 10b7 1002 3C996C-T 1000Base-T 10b7 1003 3C997-T 1000Base-T Dual Port 10b7 1004 3C996-SX 1000Base-SX 10b7 1005 3C997-SX 1000Base-SX Dual Port 10b7 1008 3C942 Gigabit LOM (31X31) 14e4 0002 NetXtreme 1000Base-SX 14e4 0003 NetXtreme 1000Base-SX 14e4 0004 NetXtreme 1000Base-T 14e4 1028 NetXtreme 1000BaseTX 14e4 1644 BCM5700 1000Base-T 1645 NetXtreme BCM5701 Gigabit Ethernet 0e11 007c NC7770 Gigabit Server Adapter (PCI-X, 10/100/1000-T) 0e11 007d NC6770 Gigabit Server Adapter (PCI-X, 1000-SX) 0e11 0085 NC7780 Gigabit Server Adapter (embedded, WOL) 0e11 0099 NC7780 Gigabit Server Adapter (embedded, WOL) 0e11 009a NC7770 Gigabit Server Adapter (PCI-X, 10/100/1000-T) 0e11 00c1 NC6770 Gigabit Server Adapter (PCI-X, 1000-SX) 1028 0121 Broadcom BCM5701 1000Base-T 103c 128a BCM5701 1000Base-T (HP, OEM 3COM) 103c 128b 1000Base-SX (PCI) [A7073A] 103c 12a4 Core Lan 1000Base-T 103c 12c1 IOX Core Lan 1000Base-T [A7109AX] 103c 1300 Core LAN/SCSI Combo [A6794A] 10a9 8010 IO9/IO10 Gigabit Ethernet (Copper) 10a9 8011 Gigabit Ethernet (Copper) 10a9 8012 Gigabit Ethernet (Fiber) 10b7 1004 3C996-SX 1000Base-SX 10b7 1006 3C996B-T 1000Base-T 10b7 1007 3C1000-T 1000Base-T 10b7 1008 3C940-BR01 1000Base-T 14e4 0001 BCM5701 1000Base-T 14e4 0005 BCM5701 1000Base-T 14e4 0006 BCM5701 1000Base-T 14e4 0007 BCM5701 1000Base-SX 14e4 0008 BCM5701 1000Base-T 14e4 1645 NetXtreme BCM5701 Gigabit Ethernet 14e4 8008 BCM5701 1000Base-T 1646 NetXtreme BCM5702 Gigabit Ethernet 0e11 00bb NC7760 1000BaseTX 1028 0126 Broadcom BCM5702 1000BaseTX 14e4 8009 BCM5702 1000BaseTX 1647 NetXtreme BCM5703 Gigabit Ethernet 0e11 0099 NC7780 1000BaseTX 0e11 009a NC7770 1000BaseTX 10a9 8010 IO9 Gigabit Ethernet (Copper) 14e4 0009 BCM5703 1000BaseTX 14e4 000a BCM5703 1000BaseSX 14e4 000b BCM5703 1000BaseTX 14e4 8009 BCM5703 1000BaseTX 14e4 800a BCM5703 1000BaseTX 1648 NetXtreme BCM5704 Gigabit Ethernet 0e11 00cf NC7772 Gigabit Server Adapter (PCI-X, 10,100,1000-T) 0e11 00d0 NC7782 Gigabit Server Adapter (PCI-X, 10,100,1000-T) 0e11 00d1 NC7783 Gigabit Server Adapter (PCI-X, 10,100,1000-T) 1028 014a PowerEdge 1750 1028 0170 PowerEdge 6850 Broadcom NetXtreme BCM5704 103c 310f NC7782 Gigabit Server Adapter (PCI-X, 10,100,1000-T) 10a9 8013 Dual Port Gigabit Ethernet (PCI-X,Copper) 10a9 8018 Dual Port Gigabit Ethernet (A330) 10a9 801a Dual Port Gigabit Ethernet (IA-blade) 10a9 801b Quad Port Gigabit Ethernet (PCI-E,Copper) 10b7 2000 3C998-T Dual Port 10/100/1000 PCI-X 10b7 3000 3C999-T Quad Port 10/100/1000 PCI-X 1166 1648 NetXtreme CIOB-E 1000Base-T 1734 100b PRIMERGY RX/TX series onboard LAN 1649 NetXtreme BCM5704S_2 Gigabit Ethernet 164a NetXtreme II BCM5706 Gigabit Ethernet 103c 1709 NC371i Integrated PCI-X Multifunction Gigabit Server Adapter 103c 3070 NC380T PCI Express Dual Port Multifunction Gigabit Server Adapter 103c 3101 NC370T MultifuNCtion Gigabit Server Adapter 103c 3106 NC370i Multifunction Gigabit Server Adapter 164c NetXtreme II BCM5708 Gigabit Ethernet 1028 01f0 PowerEdge R900 Broadcom NetXtreme II BCM5708 1028 0205 PowerEdge 2970 Broadcom NetXtreme II BCM5708 1028 020b PowerEdge T605 Broadcom NetXtreme II BCM5708 1028 0221 PowerEdge R805 Broadcom NetXtreme II BCM5708 1028 0223 PowerEdge R905 Broadcom NetXtreme II BCM5708 1028 1f12 PowerEdge R805/R905 Broadcom NetXtreme II BCM5708 103c 7037 NC373T PCI Express Multifunction Gigabit Server Adapter 103c 7038 NC373i Integrated Multifunction Gigabit Server Adapter 103c 7045 NC374m PCI Express Dual Port Multifunction Gigabit Server Adapter 164d NetXtreme BCM5702FE Gigabit Ethernet 164e NetXtreme II BCM57710 10-Gigabit PCIe [Everest] 103c 171c NC532m Dual Port 10GbE Multifunction BL-C Adapter 103c 7058 NC532i Dual Port 10GbE Multifunction BL-C Adapter 164f NetXtreme II BCM57711 10-Gigabit PCIe 1650 NetXtreme II BCM57711E 10-Gigabit PCIe 103c 171c NC532m Dual Port 10GbE Multifunction BL-C Adapter 103c 7058 NC532i Dual Port 10GbE Multifunction BL-C Adapter 1653 NetXtreme BCM5705 Gigabit Ethernet 0e11 00e3 NC7761 Gigabit Server Adapter 1734 1073 Primergy Econel 200 D2020 mainboard 1654 NetXtreme BCM5705_2 Gigabit Ethernet 0e11 00e3 NC7761 Gigabit Server Adapter 103c 3100 NC1020 ProLiant Gigabit Server Adapter 32 PCI 103c 3226 NC150T 4-port Gigabit Combo Switch & Adapter 1655 NetXtreme BCM5717 Gigabit Ethernet PCIe 1656 NetXtreme BCM5718 Gigabit Ethernet PCIe 1657 NetXtreme BCM5719 Gigabit Ethernet PCIe 1014 0420 FC 5260/5899 4-port 1 GbE Adapter for Power 103c 169d Ethernet 1Gb 4-port 331FLR Adapter 103c 22be Ethernet 1Gb 4-port 331i Adapter 103c 3383 Ethernet 1Gb 4-port 331T Adapter 14e4 1904 4-port 1Gb Ethernet Adapter 14e4 1909 Broadcom NetXtreme 5719 Quad Port Gigabit NIC 14e4 d166 BCM95719-P41 4x1GBT Ethernet NIC 14e4 d366 BCM95719-N41 4x1GBT Ethernet NIC 193d 1025 NIC-ETH330T-LP-4P # NIC-ETH330T-3S-4P 4xGE 1000Base-T for OCP3.0 193d 1086 NIC-ETH330T-3S-4P 1659 NetXtreme BCM5721 Gigabit Ethernet PCI Express 1014 02c6 eServer xSeries server mainboard 1028 01e6 PowerEdge 860 1028 023c PowerEdge R200 Broadcom NetXtreme BCM5721 103c 170b NC320m PCI Express Dual Port Gigabit Server Adapter 103c 7031 NC320T PCIe Gigabit Server Adapter 103c 7032 NC320i PCIe Gigabit Server Adapter 1734 1061 PRIMERGY RX/TX S2 series onboard LAN 165a NetXtreme BCM5722 Gigabit Ethernet PCI Express # Dual NIC server 1014 0378 System x3350 (Machine type 4192) 1028 020f PowerEdge R300 Broadcom NetXtreme 5722 1028 0210 PowerEdge T300 Broadcom NetXtreme 5722 1028 0225 PowerEdge T105 Broadcom NetXtreme 5722 103c 7051 NC105i PCIe Gigabit Server Adapter 103c 7052 NC105T PCIe Gigabit Server Adapter 165b NetXtreme BCM5723 Gigabit Ethernet PCIe 103c 705d NC107i Integrated PCI Express Gigabit Server Adapter 165c NetXtreme BCM5724 Gigabit Ethernet PCIe 165d NetXtreme BCM5705M Gigabit Ethernet 1028 865d Latitude D400 14e4 165d Dell Latitude D600 165e NetXtreme BCM5705M_2 Gigabit Ethernet 103c 088c NC8000 laptop 103c 0890 NC6000 laptop 103c 099c NX6110/NC6120 10cf 1279 LifeBook E8010D 165f NetXtreme BCM5720 Gigabit Ethernet PCIe 1028 04f7 PowerEdge R320 server 1028 08fd PowerEdge R6515/R7515 LOM 1028 08ff PowerEdge Rx5xx LOM Board 1028 0900 PowerEdge C6525 LOM # Dell 5720 LOM 1028 0917 PowerEdge C6520 LOM 103c 1786 NC332T Adapter 103c 193d NC332i Adapter 103c 2133 NC332i Adapter 103c 22e8 NC332i Adapter 103c 22eb NC332i Adapter 15d9 165f H12SSL-i 1662 NetXtreme II BCM57712 10 Gigabit Ethernet 1663 NetXtreme II BCM57712 10 Gigabit Ethernet Multi Function 1665 NetXtreme BCM5717 Gigabit Ethernet PCIe 1668 NetXtreme BCM5714 Gigabit Ethernet 103c 7039 NC324i PCIe Dual Port Gigabit Server Adapter 1669 NetXtreme 5714S Gigabit Ethernet 166a NetXtreme BCM5780 Gigabit Ethernet 103c 7035 NC325i Integrated Dual port PCIe Express Gigabit Server Adapter 166b NetXtreme BCM5780S Gigabit Ethernet 166e 570x 10/100 Integrated Controller 166f NetXtreme II BCM57712 10 Gigabit Ethernet Virtual Function 1672 NetXtreme BCM5754M Gigabit Ethernet PCI Express 1673 NetXtreme BCM5755M Gigabit Ethernet PCI Express 1674 NetXtreme BCM5756ME Gigabit Ethernet PCI Express 1677 NetXtreme BCM5751 Gigabit Ethernet PCI Express 1028 0176 Dimension XPS Gen 4 1028 0177 Dimension 8400 1028 0179 Optiplex GX280 1028 0182 Latitude D610 1028 0187 Precision M70 1028 01a3 Latitude X1 1028 01a8 Precision 380 1028 01ad OptiPlex GX620 103c 3006 DC7100 SFF(DX878AV) 1462 028c 915P/G Neo2 1734 105d Scenic W620 1678 NetXtreme BCM5715 Gigabit Ethernet 103c 703e NC326i PCIe Dual Port Gigabit Server Adapter 1679 NetXtreme BCM5715S Gigabit Ethernet 103c 1707 NC326m PCIe Dual Port Adapter 103c 170c NC325m PCIe Quad Port Adapter 103c 703c NC326i PCIe Dual Port Gigabit Server Adapter 167a NetXtreme BCM5754 Gigabit Ethernet PCI Express 1028 01da OptiPlex 745 1028 01de Precision 390 1028 01df PowerEdge SC440 1028 0214 Precision T3400 1028 021e Precision T5400 167b NetXtreme BCM5755 Gigabit Ethernet PCI Express 103c 280a DC5750 Microtower 167d NetXtreme BCM5751M Gigabit Ethernet PCI Express 1014 0577 ThinkPad X41 / Z60t 103c 0934 nx8220 103c 0940 Compaq nw8240 Mobile Workstation 103c 0944 Compaq nc6220 Notebook PC 17aa 2081 ThinkPad R60e 167e NetXtreme BCM5751F Fast Ethernet PCI Express 167f NetLink BCM5787F Fast Ethernet PCI Express 1680 NetXtreme BCM5761e Gigabit Ethernet PCIe 1681 NetXtreme BCM5761 Gigabit Ethernet PCIe # Integrated on the motherboard 1028 0433 OptiPlex 580 1682 NetXtreme BCM57762 Gigabit Ethernet PCIe 106b 00f6 Thunderbolt to Gigabit Ethernet Adapter 1683 NetXtreme BCM57767 Gigabit Ethernet PCIe 1684 NetXtreme BCM5764M Gigabit Ethernet PCIe 1685 NetXtreme II BCM57500S Gigabit Ethernet 1686 NetXtreme BCM57766 Gigabit Ethernet PCIe 1687 NetXtreme BCM5762 Gigabit Ethernet PCIe 1688 NetXtreme BCM5761 10/100/1000BASE-T Ethernet 1259 2708 AT-2712 FX # The Broadcom 57800 device has two 1Gig ports and two 10Gig ports. The subsystem information can be used to differentiate. 168a NetXtreme II BCM57800 1/10 Gigabit Ethernet # SFP+ ports 1014 0493 PCIe2 LP 4-Port (10Gb+1GbE) SR+RJ45 Adapter (FC EN0T; CCIN 2CC3) # RJ-45 ports 1014 0494 PCIe2 LP 4-Port (10Gb+1GbE) SR+RJ45 Adapter (FC EN0T; CCIN 2CC3) 1028 1f5c BCM57800 10-Gigabit Ethernet 1028 1f5d BCM57800 10-Gigabit Ethernet 1028 1f67 BCM57800 1-Gigabit Ethernet 1028 1f68 BCM57800 1-Gigabit Ethernet 168d NetXtreme II BCM57840 10/20 Gigabit Ethernet 168e NetXtreme II BCM57810 10 Gigabit Ethernet 1014 0492 PCIe2 2-port 10 GbE BaseT RJ45 Adapter (FC EN0W; CCIN 2CC4) 103c 1798 Flex-10 10Gb 2-port 530FLB Adapter [Meru] 103c 17a5 Flex-10 10Gb 2-port 530M Adapter 103c 18d3 Ethernet 10Gb 2-port 530T Adapter 103c 1930 FlexFabric 10Gb 2-port 534FLR-SFP+ Adapter 103c 1931 StoreFabric CN1100R Dual Port Converged Network Adapter 103c 1932 FlexFabric 10Gb 2-port 534FLB Adapter 103c 1933 FlexFabric 10Gb 2-port 534M Adapter 103c 193a FlexFabric 10Gb 2-port 533FLR-T Adapter 103c 3382 Ethernet 10Gb 2-port 530FLR-SFP+ Adapter 103c 339d Ethernet 10Gb 2-port 530SFP+ Adapter 193d 1003 530F-B 193d 1006 530F-L 193d 100f NIC-ETH522i-Mb-2x10G 4c52 9812 LREC9812AF Dual-port 10Gb Ethernet Server Adapter 1690 NetXtreme BCM57760 Gigabit Ethernet PCIe 1691 NetLink BCM57788 Gigabit Ethernet PCIe 1028 04aa XPS 8300 1692 NetLink BCM57780 Gigabit Ethernet PCIe 1025 033d Aspire 7740G 1693 NetLink BCM5787M Gigabit Ethernet PCI Express 1025 0121 Aspire 5920G 103c 30c0 6710b 17aa 20d5 ThinkPad R61 1694 NetLink BCM57790 Gigabit Ethernet PCIe 1696 NetXtreme BCM5782 Gigabit Ethernet 103c 12bc d530 CMT (DG746A) 14e4 000d NetXtreme BCM5782 1000Base-T 1698 NetLink BCM5784M Gigabit Ethernet PCIe 1699 NetLink BCM5785 Gigabit Ethernet 169a NetLink BCM5786 Gigabit Ethernet PCI Express 169b NetLink BCM5787 Gigabit Ethernet PCI Express 169c NetXtreme BCM5788 Gigabit Ethernet 103c 308b MX6125 103c 30a1 NC2400 144d c018 X20 1462 590c KT6 Delta-FIS2R (MS-6590) 169d NetLink BCM5789 Gigabit Ethernet PCI Express 16a0 NetLink BCM5785 Fast Ethernet 16a1 BCM57840 NetXtreme II 10 Gigabit Ethernet 1043 866e PEB-10G/57840-2T 10GBase-T Network Adapter 193d 100b NIC-ETH521i-Mb-4x10G 4c52 9814 LREC9814AF Quad-port 10Gb Ethernet Server Adapter 16a2 BCM57840 NetXtreme II 10/20-Gigabit Ethernet 103c 1916 FlexFabric 20Gb 2-port 630FLB Adapter 103c 1917 FlexFabric 20Gb 2-port 630M Adapter 103c 2231 3820C 10/20Gb Converged Network Adapter 103c 22fa FlexFabric 10Gb 2-port 536FLB Adapter 16a3 NetXtreme BCM57786 Gigabit Ethernet PCIe 16a4 BCM57840 NetXtreme II Ethernet Multi Function 103c 1916 NPAR 20Gb 2-port 630FLB Adapter 103c 1917 NPAR 20Gb 2-port 630M Adapter 103c 2231 3820C 10/20Gb Converged Network Adapter (NPAR 1.5) 103c 22fa FlexFabric 10Gb 2-port 536FLB Adapter (NPAR 1.5) # The Broadcom 57800 device has two 1Gig ports and two 10Gig ports. The subsystem information can be used to differentiate. 16a5 NetXtreme II BCM57800 1/10 Gigabit Ethernet Multi Function 1028 1f5c NetXtreme II BCM57800 10-Gigabit Ethernet Multi Function 1028 1f5d NetXtreme II BCM57800 10-Gigabit Ethernet Multi Function 1028 1f67 NetXtreme II BCM57800 1-Gigabit Ethernet Multi Function 1028 1f68 NetXtreme II BCM57800 1-Gigabit Ethernet Multi Function 16a6 NetXtreme BCM5702X Gigabit Ethernet 0e11 00bb NC7760 Gigabit Server Adapter (PCI-X, 10/100/1000-T) 1028 0126 BCM5702 1000Base-T 14e4 000c BCM5702 1000Base-T 14e4 8009 BCM5702 1000Base-T 16a7 NetXtreme BCM5703X Gigabit Ethernet 0e11 00ca NC7771 Gigabit Server Adapter (PCI-X, 10,100,1000-T) 0e11 00cb NC7781 Gigabit Server Adapter (PCI-X, 10,100,1000-T) 1014 026f eServer xSeries server mainboard 14e4 0009 NetXtreme BCM5703 1000Base-T 14e4 000a NetXtreme BCM5703 1000Base-SX 14e4 000b NetXtreme BCM5703 1000Base-T 14e4 800a NetXtreme BCM5703 1000Base-T 16a8 NetXtreme BCM5704S Gigabit Ethernet 103c 132b PCI-X 1000Mbps Dual-port Built-in 10a9 8014 Dual Port Gigabit Ethernet (PCI-X,Fiber) 10a9 801c Quad Port Gigabit Ethernet (PCI-E,Fiber) 10b7 2001 3C998-SX Dual Port 1000-SX PCI-X # The Broadcom 57800 device has two 1Gig ports and two 10Gig ports. The subsystem information can be used to differentiate. 16a9 NetXtreme II BCM57800 1/10 Gigabit Ethernet Virtual Function 1028 1f5c NetXtreme II BCM57800 10-Gigabit Ethernet Virtual Function 1028 1f5d NetXtreme II BCM57800 10-Gigabit Ethernet Virtual Function 1028 1f67 NetXtreme II BCM57800 1-Gigabit Ethernet Virtual Function 1028 1f68 NetXtreme II BCM57800 1-Gigabit Ethernet Virtual Function 16aa NetXtreme II BCM5706S Gigabit Ethernet 103c 3102 NC370F MultifuNCtion Gigabit Server Adapter 103c 310c NC370i Multifunction Gigabit Server Adapter 16ab NetXtreme II BCM57840 10/20 Gigabit Ethernet Multi Function 16ac NetXtreme II BCM5708S Gigabit Ethernet 1014 0304 NetXtreme II BCM5708S Gigabit Ethernet 1028 01bb PowerEdge 1955 Broadcom NetXtreme II BCM5708S 1028 020c PowerEdge M605 Broadcom NetXtreme II BCM5708S 103c 1706 NC373m Multifunction Gigabit Server Adapter 103c 7038 NC373i PCI Express Multifunction Gigabit Server Adapter 103c 703b NC373i Integrated Multifunction Gigabit Server Adapter 103c 703d NC373F PCI Express Multifunction Gigabit Server Adapter 16ad NetXtreme II BCM57840 10/20 Gigabit Ethernet Virtual Function 103c 1916 FlexFabric 20Gb 2-port 630FLB Adapter 103c 1917 FlexFabric 20Gb 2-port 630M Adapter 103c 2231 3820C 10/20Gb Converged Network Adapter (SR-IOV VF) 103c 22fa FlexFabric 10Gb 2-port 536FLB Adapter (SR-IOV VF) 16ae NetXtreme II BCM57810 10 Gigabit Ethernet Multi Function 103c 1798 NPAR 10Gb 2-port 530FLB Adapter 103c 17a5 NPAR 10Gb 2-port 530M Adapter 103c 18d3 NPAR 10Gb 2-port 530T Adapter 103c 1930 NPAR 10Gb 2-port 534FLR-SFP+ Adapter 103c 1931 NPAR CN1100R Dual Port Converged Network Adapter 103c 1932 NPAR 10Gb 2-port 534FLB Adapter 103c 1933 NPAR 10Gb 2-port 534M Adapter 103c 193a NPAR 10Gb 2-port 533FLR-T Adapter 103c 3382 NPAR 10Gb 2-port 530FLR-SFP+ Adapter 103c 339d NPAR 10Gb 2-port 530SFP+ Adapter 16af NetXtreme II BCM57810 10 Gigabit Ethernet Virtual Function 103c 1798 Flex-10 10Gb 2-port 530FLB Adapter 103c 17a5 Flex-10 10Gb 2-port 530M Adapter 103c 18d3 Ethernet 10Gb 2-port 530T Adapter 103c 1930 FlexFabric 10Gb 2-port 534FLR-SFP+ Adapter 103c 1931 StoreFabric CN1100R Dual Port Converged Network Adapter 103c 1932 FlexFabric 10Gb 2-port 534FLB Adapter 103c 1933 FlexFabric 10Gb 2-port 534M Adapter 103c 193a FlexFabric 10Gb 2-port 533FLR-T Adapter 103c 3382 Ethernet 10Gb 2-port 530FLR-SFP+ Adapter 103c 339d Ethernet 10Gb 2-port 530SFP+ Adapter 16b0 NetXtreme BCM57761 Gigabit Ethernet PCIe 16b1 NetLink BCM57781 Gigabit Ethernet PCIe 1849 96b1 Z77 Extreme4 motherboard 16b2 NetLink BCM57791 Gigabit Ethernet PCIe 16b3 NetXtreme BCM57786 Gigabit Ethernet PCIe 16b4 NetXtreme BCM57765 Gigabit Ethernet PCIe 16b5 NetLink BCM57785 Gigabit Ethernet PCIe 16b6 NetLink BCM57795 Gigabit Ethernet PCIe 16b7 NetXtreme BCM57782 Gigabit Ethernet PCIe 16bc BCM57765/57785 SDXC/MMC Card Reader 16be BCM57765/57785 MS Card Reader 16bf BCM57765/57785 xD-Picture Card Reader 16c1 NetXtreme-E RDMA Virtual Function 16c6 NetXtreme BCM5702A3 Gigabit Ethernet 10b7 1100 3C1000B-T 10/100/1000 PCI 14e4 000c BCM5702 1000Base-T 14e4 8009 BCM5702 1000Base-T 16c7 NetXtreme BCM5703 Gigabit Ethernet 0e11 00ca NC7771 Gigabit Server Adapter (PCI-X, 10,100,1000-T) 0e11 00cb NC7781 Gigabit Server Adapter (PCI-X, 10,100,1000-T) 103c 12c3 Combo FC/GigE-SX [A9782A] 103c 12ca Combo FC/GigE-T [A9784A] 103c 1321 Core I/O LAN/SCSI Combo [AB314A] 14e4 0009 NetXtreme BCM5703 1000Base-T 14e4 000a NetXtreme BCM5703 1000Base-SX 16c8 BCM57301 NetXtreme-C 10Gb Ethernet Controller 16c9 BCM57302 NetXtreme-C 10Gb/25Gb Ethernet Controller 16ca BCM57304 NetXtreme-C 10Gb/25Gb/40Gb/50Gb Ethernet Controller 16cb NetXtreme-C Ethernet Virtual Function 16cc BCM57417 NetXtreme-E Ethernet Partition 16ce BCM57311 NetXtreme-C 10Gb RDMA Ethernet Controller 16cf BCM57312 NetXtreme-C 10Gb/25Gb RDMA Ethernet Controller 16d0 BCM57402 NetXtreme-E 10Gb Ethernet Controller 16d1 BCM57404 NetXtreme-E 10Gb/25Gb Ethernet Controller 16d2 BCM57406 NetXtreme-E 10GBASE-T Ethernet Controller 16d3 NetXtreme-E Ethernet Virtual Function 16d4 BCM57402 NetXtreme-E Ethernet Partition 16d5 BCM57407 NetXtreme-E 10GBase-T Ethernet Controller 16d6 BCM57412 NetXtreme-E 10Gb RDMA Ethernet Controller 117c 00cd FastFrame N4S2 Dual-port 10Gb Ethernet Adapter 14e4 1202 BCM957412M4122C OCP 1x25G Type1 wRoCE 14e4 4120 NetXtreme E-Series Advanced Dual-port 10Gb SFP+ Ethernet Network Daughter Card 14e4 4126 NetXtreme-E Dual-port 10G SFP+ Ethernet OCP 3.0 Adapter (BCM957412N4120C) 152d 8b20 BCM57412 NetXtreme-E 10Gb RDMA Ethernet Controller 152d 8b22 BCM57412 NetXtreme-E 25Gb RDMA Ethernet Controller # NIC-ETH531F-LP-2P BCM57412 2 x 10G SFP+ Ethernet PCIe Card 193d 1024 NIC-ETH531F-LP-2P # NIC-ETH531F-3S-2P 2x10GbE SFP+ Adapter for OCP3.0 193d 1087 NIC-ETH531F-3S-2P 16d7 BCM57414 NetXtreme-E 10Gb/25Gb RDMA Ethernet Controller 117c 00cc FastFrame N422 Dual-port 25Gb Ethernet Adapter 14e4 1402 BCM957414A4142CC 10Gb/25Gb Ethernet PCIe 14e4 1404 BCM957414M4142C OCP 2x25G Type1 wRoCE 14e4 4140 NetXtreme E-Series Advanced Dual-port 25Gb SFP28 Network Daughter Card # BCM957414M4143C 14e4 4143 NetXtreme-E Single-port 40Gb/50Gb Ethernet OCP 2.0 Adapter (BCM957414M4143C) 14e4 4146 NetXtreme-E Dual-port 25G SFP28 Ethernet OCP 3.0 Adapter (BCM957414N4140C) 1590 020e Ethernet 25Gb 2-port 631SFP28 Adapter 1590 0211 Ethernet 25Gb 2-port 631FLR-SFP28 Adapter # NIC-ETH630F-LP-2P SFP28 2x25GbE PCIe Network Adapter 193d 1033 NIC-ETH630F-LP-2P 1bd4 008e ENFB2251-SP2 1bd4 008f ENPB2251-SP2 # VSE-225-31S Dual-port 10Gb/25Gb Ethernet PCIe 1eec 0101 VSE-225-31S Dual-port 10Gb/25Gb Ethernet PCIe 16d8 BCM57416 NetXtreme-E Dual-Media 10G RDMA Ethernet Controller 1028 1feb NetXtreme-E 10Gb SFP+ Adapter 117c 00ce FastFrame N4T2 Dual-port 10GBASE-T Ethernet Adapter 14e4 4163 NetXtreme-E Dual-port 10GBASE-T Ethernet OCP 2.0 Adapter (BCM957416M4163C) 14e4 4166 NetXtreme-E Dual-port 10GBASE-T Ethernet OCP 3.0 Adapter (BCM957416N4160C) 14e4 d140 BCM957416-P410 4x10GBT Ethernet NIC 14e4 d340 BCM957416-N410 4x10GBT Ethernet NIC 1590 020c Ethernet 10Gb 2-port 535T Adapter 1590 0212 Ethernet 10Gb 2-port 535FLR-T Adapter 16d9 BCM57417 NetXtreme-E 10GBASE-T RDMA Ethernet Controller 108e 4866 Dual Port 10GBase-T Ethernet Controller 16dc NetXtreme-E Ethernet Virtual Function 16dd NetLink BCM5781 Gigabit Ethernet PCI Express 16de BCM57412 NetXtreme-E Ethernet Partition 16df BCM57314 NetXtreme-C 10Gb/25Gb/40Gb/50Gb RDMA Ethernet Controller 16e1 NetXtreme-C Ethernet Virtual Function 16e2 BCM57417 NetXtreme-E 10Gb/25Gb RDMA Ethernet Controller 108e 4866 Dual Port 10Gb/25Gb SFP28 Ethernet Controller 16e3 BCM57416 NetXtreme-E 10Gb RDMA Ethernet Controller 16e5 NetXtreme-C RDMA Virtual Function 16e7 BCM57404 NetXtreme-E Ethernet Partition 16e8 BCM57406 NetXtreme-E Ethernet Partition 16e9 BCM57407 NetXtreme-E 25Gb Ethernet Controller 16eb BCM57412 NetXtreme-E RDMA Partition 16ec BCM57414 NetXtreme-E Ethernet Partition 16ed BCM57414 NetXtreme-E RDMA Partition 16ee BCM57416 NetXtreme-E Ethernet Partition 16ef BCM57416 NetXtreme-E RDMA Partition 16f1 BCM57452 NetXtreme-E 10Gb/25Gb/40Gb/50Gb Ethernet 16f3 NetXtreme BCM5727 Gigabit Ethernet PCIe 16f7 NetXtreme BCM5753 Gigabit Ethernet PCI Express 16fd NetXtreme BCM5753M Gigabit Ethernet PCI Express 103c 309f Compaq nx9420 Notebook 103c 30a3 Compaq nw8440 16fe NetXtreme BCM5753F Fast Ethernet PCI Express 170c BCM4401-B0 100Base-TX 1028 0188 Inspiron 6000 laptop 1028 018d Inspiron 700m/710m 1028 0196 Inspiron 5160 1028 01af Inspiron 6400 1028 01cd Inspiron 9400 Laptop 1028 01d7 XPS M1210 1028 01d8 Inspiron E1405 103c 099c NX6110/NC6120 103c 30a2 NX7300 laptop 14e4 170c HP Compaq 6720t Mobile Thin Client 170d NetXtreme BCM5901 100Base-TX 1014 0545 ThinkPad R40e 170e NetXtreme BCM5901 100Base-TX 1712 NetLink BCM5906 Fast Ethernet PCI Express 1713 NetLink BCM5906M Fast Ethernet PCI Express 1028 01f3 Inspiron 1420 1028 0209 XPS M1330 103c 30c0 Compaq 6710b 17aa 3a23 IdeaPad S10e 1750 BCM57508 NetXtreme-E 10Gb/25Gb/40Gb/50Gb/100Gb/200Gb Ethernet 117c 00cf FastFrame N412 Dual-port 100Gb Ethernet Adapter 14e4 2100 NetXtreme-E Dual-port 100G QSFP56 Ethernet PCIe4.0 x16 Adapter (BCM957508-P2100G) 14e4 5208 NetXtreme-E Dual-port 100G QSFP56 Ethernet OCP 3.0 Adapter (BCM957508-N2100G) 14e4 520a NetXtreme-E Dual-port 100G DSFP Ethernet OCP 3.0 Adapter (BCM957508-N2100GD) 14e4 d124 NetXtreme-E P2100D BCM57508 2x100G QSFP PCIE 14e4 d324 NetXtreme-E N2100D BCM57508 2x100G QSFP OCP3.0 Ethernet 14e4 df24 NetXtreme-E NGM2100D BCM57508 2x100G KR Mezz Ethernet 1751 BCM57504 NetXtreme-E 10Gb/25Gb/40Gb/50Gb/100Gb Ethernet 1028 09d4 PowerEdge XR11/XR12 LOM 1028 0b1b PowerEdge XR5610 LOM 14e4 4250 NetXtreme-E Quad-port 25G SFP28 Ethernet PCIe4.0 x16 Adapter (BCM957504-P425G) 14e4 5045 NetXtreme-E BCM57504 4x25G OCP3.0 14e4 5100 NetXtreme-E Single-port 100G QSFP56 Ethernet OCP 3.0 Adapter (BCM957504-N1100G) 14e4 5105 NetXtreme-E Single-port 100G DSFP Ethernet OCP 3.0 Adapter (BCM957504-N1100GD) 14e4 5250 NetXtreme-E BCM57504 4x25G KR Mezz 14e4 5425 NetXtreme-E Quad-port 25G SFP28 Ethernet OCP 3.0 Adapter (BCM957504-N425G) 14e4 d142 NetXtreme-E P425D BCM57504 4x25G SFP28 PCIE 1590 0420 HPE Ethernet 25/50Gb 2-port 6310C Adapter 1752 BCM57502 NetXtreme-E 10Gb/25Gb/40Gb/50Gb Ethernet 1760 BCM57608 10Gb/25Gb/50Gb/100Gb/200Gb/400Gb Ethernet 14e4 d125 BCM57608 2x200G PCIe Ethernet NIC 1800 BCM57502 NetXtreme-E Ethernet Partition 1801 BCM57504 NetXtreme-E Ethernet Partition 1802 BCM57508 NetXtreme-E Ethernet Partition 14e4 df24 BCM57508 NetXtreme-E NGM2100D 2x100G KR Mezz Ethernet Partition 1803 BCM57502 NetXtreme-E RDMA Partition 1804 BCM57504 NetXtreme-E RDMA Partition 1805 BCM57508 NetXtreme-E RDMA Partition 14e4 df24 NetXtreme-E NGM2100D BCM57508 2x100G KR Mezz RDMA Partition 1806 BCM5750X NetXtreme-E Ethernet Virtual Function 14e4 df24 BCM57508 NetXtreme-E NGM2100D 2x100G KR Mezz Ethernet Virtual Function 1807 BCM5750X NetXtreme-E RDMA Virtual Function 14e4 df24 BCM57508 NetXtreme-E NGM2100D 2x100G KR Mezz RDMA Virtual Function 1808 BCM5750X NetXtreme-E Ethernet Virtual Function 14e4 df24 BCM57508 NetXtreme-E NGM2100D 2x100G KR Mezz Ethernet Virtual Function 1809 BCM5750X NetXtreme-E RDMA Virtual Function 14e4 df24 BCM57508 NetXtreme-E NGM2100D 2x100G KR Mezz RDMA Virtual Function 2711 BCM2711 PCIe Bridge 2712 BCM2712 PCIe Bridge 3352 BCM3352 3360 BCM3360 4210 BCM4210 iLine10 HomePNA 2.0 4211 BCM4211 iLine10 HomePNA 2.0 + V.90 56k modem 4212 BCM4212 v.90 56k modem 4220 802-11b/g Wireless PCI controller, packaged as a Linksys WPC54G ver 1.2 PCMCIA card 4222 NetXtreme BCM5753M Gigabit Ethernet PCI Express 4301 BCM4301 802.11b Wireless LAN Controller 1028 0407 TrueMobile 1180 Onboard WLAN 1043 0120 WL-103b Wireless LAN PC Card 16a5 1602 B-300 802.11b Wireless CardBus Adapter 1737 4301 WMP11 v2.7 802.11b Wireless-B PCI Adapter 4305 BCM4307 V.90 56k Modem 4306 BCM4306 802.11bg Wireless LAN controller 4307 BCM4306 802.11bg Wireless LAN Controller 4310 BCM4310 Chipcommon I/OController 4311 BCM4311 802.11b/g WLAN 1028 0007 Wireless 1390 WLAN Mini-Card 1028 0008 Wireless 1390 WLAN ExpressCard 103c 1363 BCM4311 802.11b/g Wireless LAN Controller 103c 1364 BCM4311 802.11b/g Wireless LAN Controller 103c 1365 BCM4311 802.11b/g Wireless LAN Controller 103c 1374 BCM4311 802.11b/g Wireless LAN Controller 103c 1375 BCM4311 802.11b/g Wireless LAN Controller 103c 1376 BCM4311 802.11b/g Wireless LAN Controller 103c 1377 BCM4311 802.11b/g Wireless LAN Controller 103c 137f BCM4322 802.11a/b/g/n Wireless LAN Controller 103c 1380 BCM4322 802.11a/b/g/n Wireless LAN Controller 14e4 4311 BCM94311MCG 4312 BCM4311 802.11a/b/g 1028 0007 Wireless 1490 Dual Band WLAN Mini-Card 1028 0008 Wireless 1490 Dual Band WLAN ExpressCard 103c 135a Broadcom 802.11a/b/g WLAN 103c 135f Broadcom 802.11a/b/g WLAN 103c 1360 Broadcom 802.11a/b/g WLAN 103c 1361 Broadcom 802.11a/b/g WLAN 103c 1362 Broadcom 802.11a/b/g WLAN 103c 1370 Broadcom 802.11a/b/g WLAN 103c 1371 Broadcom 802.11a/b/g WLAN 103c 1372 Broadcom 802.11a/b/g WLAN 103c 1373 Broadcom 802.11a/b/g WLAN 103c 30b5 Presario V3242AU 106b 0089 AirPort Extreme 1371 103c Broadcom 802.11 Multiband-netwerkadapter(6715s) 4313 BCM4311 802.11a 4315 BCM4312 802.11b/g LP-PHY 1028 000b Wireless 1395 WLAN Mini-Card 1028 000c Wireless 1397 WLAN Mini-Card 103c 137c BCM4312 802.11b/g Wireless LAN Controller 103c 137d BCM4312 802.11b/g Wireless LAN Controller 103c 1507 U98Z049.00 Wireless Mini PCIe Card 105b e003 T77H030.00 Wireless Mini PCIe Card 105b e01b T77H106.00 Wireless Half-size Mini PCIe Card 4318 BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller 1028 0005 Wireless 1370 WLAN Mini-PCI Card 1028 0006 Wireless 1370 WLAN PC Card 103c 1355 Broadcom 802.11b/g WLAN 103c 1356 Broadcom 802.11b/g WLAN 103c 1357 Broadcom 802.11b/g WLAN 1043 100f WL-138G v2 / WL-138gE / WL-100gE 1043 120f A6U notebook embedded card 1154 0355 Buffalo WLI2-PCI-G54S High Speed Mode Wireless Adapter 1468 0311 Aspire 3022WLMi, 5024WLMi, 5020 1468 0312 TravelMate 2410 14e4 0449 Gateway 7510GX 16ec 0119 U.S.Robotics Wireless MAXg PC Card 1737 0042 WMP54GS v1.1 802.11g Wireless-G PCI Adapter with SpeedBooster 1737 0048 WPC54G v3 802.11g Wireless-G Notebook Adapter 1737 0049 WPC54GS v2 802.11g Wireless-G Notebook Adapter with SpeedBooster 1799 7000 F5D7000 v4000 Wireless G Desktop Card 1799 7001 F5D7001 v2000 Wireless G Plus Desktop Card 1799 7010 F5D7010 v4000 Wireless G Notebook Card 1799 7011 F5D7011 v2000 High-Speed Mode Wireless G Notebook Card 4319 BCM4318 [AirForce 54g] 802.11a/b/g PCI Express Transceiver 1028 0005 Wireless 1470 Dual Band WLAN Mini-PCI Card 1028 0006 Wireless 1470 Dual Band WLAN PC Card 103c 1358 Broadcom 802.11a/b/g WLAN 103c 1359 Broadcom 802.11a/b/g WLAN 103c 135a Broadcom 802.11a/b/g WLAN 4320 BCM4306 802.11b/g Wireless LAN Controller 1028 0001 TrueMobile 1300 WLAN Mini-PCI Card 1028 0002 TrueMobile 1300 WLAN PC Card 1028 0003 Wireless 1350 WLAN Mini-PCI Card 1028 0004 Wireless 1350 WLAN PC Card 103c 12f4 Broadcom 802.11b/g WLAN 103c 12f8 Broadcom 802.11b/g WLAN 103c 12fa Broadcom 802.11b/g WLAN 103c 12fb Broadcom 802.11b/g WLAN 1043 100f WL-100G 1057 7025 WN825G 106b 004e AirPort Extreme 1154 0330 Buffalo WLI2-PCI-G54S High Speed Mode Wireless Desktop Adapter 144f 7050 eMachines M6805 802.11g Built-in Wireless 144f 7051 Sonnet Aria Extreme PCI 1737 0013 WMP54G v1 802.11g PCI Adapter 1737 0014 WMP54G v2 802.11g PCI Adapter 1737 0015 WMP54GS v1.0 802.11g Wireless-G PCI Adapter with SpeedBooster 1737 4320 WPC54G v1 / WPC54GS v1 802.11g Wireless-G Notebook Adapter 1799 7000 F5D7000 v1000 Wireless G Desktop Card 1799 7001 F5D7001 v1000 Wireless G Plus Desktop Card 1799 7010 F5D7010 v1000 Wireless G Notebook Card 1799 7011 F5D7011 v1000 High-Speed Mode Wireless G Notebook Card 185f 1220 TravelMate 290E WLAN Mini-PCI Card 4321 BCM4321 802.11a Wireless Network Controller 4322 BCM4322 802.11bgn Wireless Network Controller 4324 BCM4309 802.11abg Wireless Network Controller 1028 0001 Truemobile 1400 1028 0002 TrueMobile 1400 Dual Band WLAN PC Card 1028 0003 Truemobile 1450 MiniPCI 1028 0004 Wireless 1450 Dual Band WLAN PC Card 103c 12f9 Broadcom 802.11a/b/g WLAN 103c 12fc Broadcom 802.11a/b/g WLAN 4325 BCM4306 802.11bg Wireless Network Controller 1414 0003 Wireless Notebook Adapter MN-720 1414 0004 Wireless PCI Adapter MN-730 4326 BCM4307 Chipcommon I/O Controller? 4328 BCM4321 802.11a/b/g/n 1028 0009 Wireless 1500 Draft 802.11n WLAN Mini-Card 1028 000a Wireless 1500 Draft 802.11n WLAN Mini-card 103c 1366 BCM4321 802.11a/b/g/n Wireless LAN Controller 103c 1367 BCM4321 802.11a/b/g/n Wireless LAN Controller 103c 1368 BCM4321 802.11a/b/g/n Wireless LAN Controller 103c 1369 BCM4321 802.11a/b/g/n Wireless LAN Controller 106b 0087 AirPort Extreme 106b 0088 AirPort Extreme 106b 008b AirPort Extreme 106b 008c AirPort Extreme 106b 0090 AirPort Extreme 14e4 4328 BCM4328 802.11a/b/g/n 1737 0066 WPC600N v1 802.11a/b/g/n Wireless-N CardBus Adapter 1737 0068 WEC600N v1 802.11a/b/g/n Wireless-N ExpressCard 4329 BCM4321 802.11b/g/n 1385 7b00 WN511B RangeMax NEXT Wireless Notebook Adapter 1385 7d00 WN311B RangeMax Next 270 Mbps Wireless PCI Adapter 1737 0058 WPC300N v1 Wireless-N Notebook Adapter 432a BCM4321 802.11an Wireless Network Controller 432b BCM4322 802.11a/b/g/n Wireless LAN Controller 1028 000d Wireless 1510 Wireless-N WLAN Mini-Card 106b 008d AirPort Extreme 106b 008e AirPort Extreme 432c BCM4322 802.11b/g/n 1799 d311 Dynex DX-NNBX 802.11n WLAN Cardbus Card 432d BCM4322 802.11an Wireless Network Controller 4331 BCM4331 802.11a/b/g/n 106b 00d6 AirPort Extreme 106b 00e4 AirPort Extreme 106b 00ef AirPort Extreme 106b 00f4 AirPort Extreme 106b 00f5 AirPort Extreme 106b 010e AirPort Extreme 106b 010f AirPort Extreme 4333 Serial (EDGE/GPRS modem part of Option GT Combo Edge) 4344 EDGE/GPRS data and 802.11b/g combo cardbus [GC89] 4350 BCM43222 Wireless Network Adapter 4351 BCM43222 802.11abgn Wireless Network Adapter 4353 BCM43224 802.11a/b/g/n 1028 000e Wireless 1520 Half-size Mini PCIe Card 103c 1509 WMIB-275N Half-size Mini PCIe Card 106b 0093 AirPort Extreme 106b 00d1 AirPort Extreme 106b 00e9 AirPort Extreme 14e4 04d8 Pegatron UPWL6024 4357 BCM43225 802.11b/g/n 105b e021 T77H103.00 Wireless Half-size Mini PCIe Card 4358 BCM43227 802.11b/g/n 4359 BCM43228 802.11a/b/g/n 1028 0011 Wireless 1530 Half-size Mini PCIe Card 103c 182c BCM943228HM4L 802.11a/b/g/n 2x2 Wi-Fi Adapter 4360 BCM4360 802.11ac Wireless Network Adapter 4365 BCM43142 802.11b/g/n 1028 0016 Wireless 1704 802.11n + BT 4.0 43a0 BCM4360 802.11ac Dual Band Wireless Network Adapter 43a1 BCM4360 802.11ac 2,4G Wireless Network Adapter 43a2 BCM4360 802.11ac 5G Wireless Network Adapter 43a3 BCM4350 802.11ac Wireless Network Adapter # Manufactured by Foxconn for Lenovo 17aa 075a 00JT494 43a9 BCM43217 802.11b/g/n 43aa BCM43131 802.11b/g/n 43ae BCM43162 802.11ac Wireless Network Adapter 43b1 BCM4352 802.11ac Dual Band Wireless Network Adapter 1043 85ba PCE-AC56 Dual-Band Wireless PCI-E Adapter 43ba BCM43602 802.11ac Wireless LAN SoC 43bb BCM43602 802.11ac Wireless LAN SoC 43bc BCM43602 802.11ac Wireless LAN SoC 43d3 BCM43567 802.11ac Wireless Network Adapter 43d9 BCM43570 802.11ac Wireless Network Adapter 43dc BCM4355 802.11ac Wireless LAN SoC 43df BCM4354 802.11ac Wireless LAN SoC 43e9 BCM4358 802.11ac Wireless LAN SoC 43ec BCM4356 802.11ac Wireless Network Adapter 4401 BCM4401 100Base-T 1025 0035 TravelMate 660 1025 0064 Extensa 3000 series laptop 1028 8127 Dimension 2400 103c 08b0 tc1100 tablet 1043 80a8 A7V8X motherboard 4402 BCM4402 Integrated 10/100BaseT 4403 BCM4402 V.90 56k Modem 4410 BCM4413 iLine32 HomePNA 2.0 4411 BCM4413 V.90 56k modem 4412 BCM4412 10/100BaseT 4415 BCM4359 802.11ac Dual-Band Wireless Network Controller 441f BCM4361 802.11ac Dual-Band Wireless Network Controller 4420 BCM4361 802.11ac 2.4 GHz Wireless Network Controller 4421 BCM4361 802.11ac 5 GHz Wireless Network Controller 4425 BCM4378 802.11ax Dual Band Wireless Network Adapter 4430 BCM44xx CardBus iLine32 HomePNA 2.0 4432 BCM4432 CardBus 10/100BaseT 4433 BCM4387 802.11ax Dual Band Wireless LAN Controller 4464 BCM4364 802.11ac Wireless Network Adapter # brcmfmac reports it as BCM4377/4 but macOS drivers call it BCM4377b 4488 BCM4377b Wireless Network Adapter 449d BCM43752 802.11ax Dual Band Wireless LAN Controller 4610 BCM4610 Sentry5 PCI to SB Bridge 4611 BCM4610 Sentry5 iLine32 HomePNA 1.0 4612 BCM4610 Sentry5 V.90 56k Modem 4613 BCM4610 Sentry5 Ethernet Controller 4614 BCM4610 Sentry5 External Interface 4615 BCM4610 Sentry5 USB Controller 4704 BCM4704 PCI to SB Bridge 4705 BCM4704 Sentry5 802.11b Wireless LAN Controller 4706 BCM4704 Sentry5 Ethernet Controller 4707 BCM4704 Sentry5 USB Controller 4708 BCM4704 Crypto Accelerator 4710 BCM4710 Sentry5 PCI to SB Bridge 4711 BCM47xx Sentry5 iLine32 HomePNA 2.0 4712 BCM47xx V.92 56k modem 4713 Sentry5 Ethernet Controller 4714 BCM47xx Sentry5 External Interface 4715 BCM47xx Sentry5 USB / Ethernet Controller 4716 BCM47xx Sentry5 USB Host Controller 4717 BCM47xx Sentry5 USB Device Controller 4718 Sentry5 Crypto Accelerator 4719 BCM47xx/53xx RoboSwitch Core 4720 BCM4712 MIPS CPU 4727 BCM4313 802.11bgn Wireless Network Adapter 1028 0010 Inspiron M5010 / XPS 8300 5365 BCM5365P Sentry5 Host Bridge 5600 BCM5600 StrataSwitch 24+2 Ethernet Switch Controller 5605 BCM5605 StrataSwitch 24+2 Ethernet Switch Controller 5615 BCM5615 StrataSwitch 24+2 Ethernet Switch Controller 5625 BCM5625 StrataSwitch 24+2 Ethernet Switch Controller 5645 BCM5645 StrataSwitch 24+2 Ethernet Switch Controller 5670 BCM5670 8-Port 10GE Ethernet Switch Fabric 5680 BCM5680 G-Switch 8 Port Gigabit Ethernet Switch Controller 5690 BCM5690 12-port Multi-Layer Gigabit Ethernet Switch 5691 BCM5691 GE/10GE 8+2 Gigabit Ethernet Switch Controller 5692 BCM5692 12-port Multi-Layer Gigabit Ethernet Switch 5695 BCM5695 12-port + HiGig Multi-Layer Gigabit Ethernet Switch 5698 BCM5698 12-port Multi-Layer Gigabit Ethernet Switch 5820 BCM5820 Crypto Accelerator 5821 BCM5821 Crypto Accelerator 5822 BCM5822 Crypto Accelerator 5823 BCM5823 Crypto Accelerator 5824 BCM5824 Crypto Accelerator 5840 BCM5840 Crypto Accelerator 5841 BCM5841 Crypto Accelerator 5850 BCM5850 Crypto Accelerator 5e87 Valkyrie offload engine 5e88 Viper Offload Engine # Bluetooth PCI function of the BRCM4378 Wireless Network Adapter 5f69 BRCM4378 Bluetooth Controller # Bluetooth PCI function of the BRCM4387 Wireless Network Adapter 5f71 BRCM4387 Bluetooth Controller # Bluetooth PCI function of the BRCM4377 Wireless Network Adapter 5fa0 BRCM4377 Bluetooth Controller 8602 BCM7400/BCM7405 Serial ATA Controller 9026 CN99xx [ThunderX2] Integrated USB 3.0 xHCI Host Controller 9027 CN99xx [ThunderX2] Integrated AHCI/SATA 3 Host Controller a8d8 BCM43224/5 Wireless Network Adapter aa52 BCM43602 802.11ac Wireless LAN SoC b080 BCM56080 Firelight2 Switch ASIC b302 BCM56302 StrataXGS 24x1GE 2x10GE Switch Controller b334 BCM56334 StrataXGS 24x1GE 4x10GE Switch Controller b370 BCM56370 Switch ASIC b371 BCM56371 Switch ASIC b372 BCM56372 Switch ASIC b375 BCM56375 Switch ASIC b376 BCM56376 Switch ASIC b377 BCM56377 Switch ASIC b379 Broadcom BCM56379 Switch ASIC b470 BCM56470 SWITCH ASIC b471 BCM56471 SWITCH ASIC b472 BCM56472 SWITCH ASIC b800 BCM56800 StrataXGS 10GE Switch Controller b842 BCM56842 Trident 10GE Switch Controller b850 BCM56850 Switch ASIC [Trident2] b880 BCM56880 Switch ASIC b960 BCM56960 Switch ASIC [Tomahawk] b990 BCM56990 Switch ASIC [Tomahawk4] # Switch ASIC b991 Tomahawk4 b992 BCM56992 [Tomahawk4] b993 BCM56993 Switch ASIC [Tomahawk4] b995 BCM56995 Switch ASIC [Tomahawk4] b996 BCM56996 106G Switch ASIC [Tomahawk4G] b998 BCM56998 106G Switch ASIC [Tomahawk4GT] b999 BCM56999 106G Switch ASIC [Tomahawk4D] c909 BCM78909 Switch ASIC d802 BCM58802 Stingray 50Gb Ethernet SoC 14e4 8021 Stingray Dual-Port 25Gb Ethernet PCIe SmartNIC w16GB DRAM (Part No BCM958802A8046C) 14e4 8023 PS410T-H04 NetXtreme-S 4x10G 10GBaseT PCIe SmartNIC 14e4 8024 Stingray Dual-Port 25Gb Ethernet PCIe SmartNIC w4GB DRAM (Part No BCM958802A8044C) 14e4 8028 Stingray Dual-Port 25Gb Ethernet PCIe SmartNIC w8GB DRAM (Part No BCM958802A8048C) 1bb0 0021 HPE SimpliVity Accelerator d804 BCM58804 Stingray 100Gb Ethernet SoC f800 BCM78800 Switch ASIC [Trident5-X12] f900 BCM78900 Switch ASIC [Tomahawk5] f902 BCM78902 Switch ASIC [Tomahawk5T] f903 BCM78903 Switch ASIC [Tomahawk5] f905 BCM78905 Switch ASIC [Tomahawk5+] f910 BCM78910 Switch ASIC [Tomahawk6] f914 BCM78914 Switch ASIC [Tomahawk6] f917 BCM78917 Switch ASIC [Tomahawk6] 14e5 Pixelfusion Ltd 14e6 SHINING Technology Inc 14e7 3CX 14e8 RAYCER Inc 14e9 GARNETS System CO Ltd 14ea Planex Communications, Inc ab06 FNW-3603-TX CardBus Fast Ethernet ab07 RTL81xx RealTek Ethernet ab08 FNW-3602-TX CardBus Fast Ethernet 14eb SEIKO EPSON Corp # nee ACQIRIS 14ec Agilent Technologies 0000 Aciris Digitizer (malformed ID) 14ed DATAKINETICS Ltd 14ee MASPRO KENKOH Corp 14ef CARRY Computer ENG. CO Ltd 14f0 CANON RESEACH CENTRE FRANCE 14f1 Conexant Systems, Inc. 1002 HCF 56k Modem 1003 HCF 56k Modem 1004 HCF 56k Modem 1005 HCF 56k Modem 1006 HCF 56k Modem 1022 HCF 56k Modem 1023 HCF 56k Modem 1024 HCF 56k Modem 1025 HCF 56k Modem 1026 HCF 56k Modem 1032 HCF 56k Modem 1033 HCF 56k Data/Fax Modem 1033 8077 NEC 122d 4027 Dell Zeus - MDP3880-W(B) Data Fax Modem 122d 4030 Dell Mercury - MDP3880-U(B) Data Fax Modem 122d 4034 Dell Thor - MDP3880-W(U) Data Fax Modem 13e0 020d Dell Copper 13e0 020e Dell Silver 13e0 0261 IBM 13e0 0290 Compaq Goldwing 13e0 02a0 IBM 13e0 02b0 IBM 13e0 02c0 Compaq Scooter 13e0 02d0 IBM 144f 1500 IBM P85-DF (1) 144f 1501 IBM P85-DF (2) 144f 150a IBM P85-DF (3) 144f 150b IBM P85-DF Low Profile (1) 144f 1510 IBM P85-DF Low Profile (2) 1034 HCF 56k Data/Fax/Voice Modem 1035 HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem 10cf 1098 Fujitsu P85-DFSV 1036 HCF 56k Data/Fax/Voice/Spkp Modem 104d 8067 HCF 56k Modem 122d 4029 MDP3880SP-W 122d 4031 MDP3880SP-U 13e0 0209 Dell Titanium 13e0 020a Dell Graphite 13e0 0260 Gateway Red Owl 13e0 0270 Gateway White Horse 1052 HCF 56k Data/Fax Modem (Worldwide) 1053 HCF 56k Data/Fax Modem (Worldwide) 1054 HCF 56k Data/Fax/Voice Modem (Worldwide) 1055 HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (Worldwide) 1056 HCF 56k Data/Fax/Voice/Spkp Modem (Worldwide) 122d 4035 MDP3900V-W 1057 HCF 56k Data/Fax/Voice/Spkp Modem (Worldwide) 1059 HCF 56k Data/Fax/Voice Modem (Worldwide) 1063 HCF 56k Data/Fax Modem 1064 HCF 56k Data/Fax/Voice Modem 1065 HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem 1066 HCF 56k Data/Fax/Voice/Spkp Modem 122d 4033 Dell Athena - MDP3900V-U 1085 HCF V90 56k Data/Fax/Voice/Spkp PCI Modem 10b6 CX06834-11 HCF V.92 56k Data/Fax/Voice/Spkp Modem 1433 HCF 56k Data/Fax Modem 1434 HCF 56k Data/Fax/Voice Modem 1435 HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem 1436 HCF 56k Data/Fax Modem 1453 HCF 56k Data/Fax Modem 13e0 0240 IBM 13e0 0250 IBM 144f 1502 IBM P95-DF (1) 144f 1503 IBM P95-DF (2) 1454 HCF 56k Data/Fax/Voice Modem 1455 HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem 1456 HCF 56k Data/Fax/Voice/Spkp Modem 122d 4035 Dell Europa - MDP3900V-W 122d 4302 Dell MP3930V-W(C) MiniPCI 1610 ADSL AccessRunner PCI Arbitration Device 1611 AccessRunner PCI ADSL Interface Device 1620 AccessRunner V2 PCI ADSL Arbitration Device 1621 AccessRunner V2 PCI ADSL Interface Device 1622 AccessRunner V2 PCI ADSL Yukon WAN Adapter 1803 HCF 56k Modem 0e11 0023 623-LAN Grizzly 0e11 0043 623-LAN Yogi 1811 MiniPCI Network Adapter 1815 HCF 56k Modem 0e11 0022 Grizzly 0e11 0042 Yogi # Integrated in CX86111/CX86113 processors 1830 CX861xx Integrated Host Bridge 2003 HSF 56k Data/Fax Modem 2004 HSF 56k Data/Fax/Voice Modem 2005 HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem 2006 HSF 56k Data/Fax/Voice/Spkp Modem 2013 HSF 56k Data/Fax Modem 0e11 b195 Bear 0e11 b196 Seminole 1 0e11 b1be Seminole 2 1025 8013 Acer 1033 809d NEC 1033 80bc NEC 155d 6793 HP 155d 8850 E Machines 2014 HSF 56k Data/Fax/Voice Modem 2015 HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem 2016 HSF 56k Data/Fax/Voice/Spkp Modem 2043 HSF 56k Data/Fax Modem (WorldW SmartDAA) 2044 HSF 56k Data/Fax/Voice Modem (WorldW SmartDAA) 2045 HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (WorldW SmartDAA) 14f1 2045 Generic SoftK56 2046 HSF 56k Data/Fax/Voice/Spkp Modem (WorldW SmartDAA) 2063 HSF 56k Data/Fax Modem (SmartDAA) 2064 HSF 56k Data/Fax/Voice Modem (SmartDAA) 2065 HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (SmartDAA) 2066 HSF 56k Data/Fax/Voice/Spkp Modem (SmartDAA) 2093 HSF 56k Modem 155d 2f07 Legend 2143 HSF 56k Data/Fax/Cell Modem (Mob WorldW SmartDAA) 2144 HSF 56k Data/Fax/Voice/Cell Modem (Mob WorldW SmartDAA) 2145 HSF 56k Data/Fax/Voice/Spkp (w/HS)/Cell Modem (Mob WorldW SmartDAA) 2146 HSF 56k Data/Fax/Voice/Spkp/Cell Modem (Mob WorldW SmartDAA) 2163 HSF 56k Data/Fax/Cell Modem (Mob SmartDAA) 2164 HSF 56k Data/Fax/Voice/Cell Modem (Mob SmartDAA) 2165 HSF 56k Data/Fax/Voice/Spkp (w/HS)/Cell Modem (Mob SmartDAA) 2166 HSF 56k Data/Fax/Voice/Spkp/Cell Modem (Mob SmartDAA) 2343 HSF 56k Data/Fax CardBus Modem (Mob WorldW SmartDAA) 2344 HSF 56k Data/Fax/Voice CardBus Modem (Mob WorldW SmartDAA) 2345 HSF 56k Data/Fax/Voice/Spkp (w/HS) CardBus Modem (Mob WorldW SmartDAA) 2346 HSF 56k Data/Fax/Voice/Spkp CardBus Modem (Mob WorldW SmartDAA) 2363 HSF 56k Data/Fax CardBus Modem (Mob SmartDAA) 2364 HSF 56k Data/Fax/Voice CardBus Modem (Mob SmartDAA) 2365 HSF 56k Data/Fax/Voice/Spkp (w/HS) CardBus Modem (Mob SmartDAA) 2366 HSF 56k Data/Fax/Voice/Spkp CardBus Modem (Mob SmartDAA) 2443 HSF 56k Data/Fax Modem (Mob WorldW SmartDAA) 104d 8075 Modem 104d 8083 Modem 104d 8097 Modem 2444 HSF 56k Data/Fax/Voice Modem (Mob WorldW SmartDAA) 2445 HSF 56k Data/Fax/Voice/Spkp (w/HS) Modem (Mob WorldW SmartDAA) 2446 HSF 56k Data/Fax/Voice/Spkp Modem (Mob WorldW SmartDAA) 2463 HSF 56k Data/Fax Modem (Mob SmartDAA) 2464 HSF 56k Data/Fax/Voice Modem (Mob SmartDAA) 2465 HSF 56k Data/Fax/Voice/Spkp (w/HS) Modem (Mob SmartDAA) 2466 HSF 56k Data/Fax/Voice/Spkp Modem (Mob SmartDAA) 2702 HSFi modem RD01-D270 1028 8d88 SmartHSFi V92 56K PCI Modem 2f00 HSF 56k HSFi Modem 13e0 8d84 IBM HSFi V.90 13e0 8d85 Compaq Stinger 14f1 2004 Dynalink 56PMi 2f02 HSF 56k HSFi Data/Fax 2f11 HSF 56k HSFi Modem 2f20 HSF 56k Data/Fax Modem 14f1 200c Soft Data Fax Modem with SmartCP 14f1 200f Dimension 3000 2f30 SoftV92 SpeakerPhone SoftRing Modem with SmartSP 14f1 2014 Devolo MikroLink 56K Modem PCI 2f50 Conexant SoftK56 Data/Fax Modem 510f Conexant CX 20751/20752 5b7a CX23418 Single-Chip MPEG-2 Encoder with Integrated Analog Video/Broadcast Audio Decoder 0070 7444 WinTV HVR-1600 107d 6f34 WinFast DVR3100 H 5854 3343 GoTView PCI DVD3 Hybrid 8200 CX25850 8234 RS8234 ATM SAR Controller [ServiceSAR Plus] 8800 CX23880/1/2/3 PCI Video and Audio Decoder 0070 2801 Hauppauge WinTV 28xxx (Roslyn) models 0070 3400 WinTV 34604 0070 3401 Hauppauge WinTV 34xxx models 0070 6902 WinTV HVR-4000-HD 0070 7801 WinTV HVR-1800 MCE 0070 9001 Nova-T DVB-T 0070 9002 Nova-T DVB-T Model 909 0070 9200 Nova-SE2 DVB-S 0070 9202 Nova-S-Plus DVB-S 0070 9402 WinTV-HVR1100 DVB-T/Hybrid 0070 9600 WinTV 88x Video 0070 9802 WinTV-HVR1100 DVB-T/Hybrid (Low Profile) 1002 00f8 ATI TV Wonder Pro 1002 00f9 ATI TV Wonder 1002 a101 HDTV Wonder 1043 4823 PVR-416 107d 6611 Winfast TV 2000XP Expert 107d 6613 Leadtek Winfast 2000XP Expert 107d 6620 Leadtek Winfast DV2000 107d 663c Leadtek PVR 2000 107d 665f WinFast DTV1000-T 10fc d003 IODATA GV-VCP3/PCI 10fc d035 IODATA GV/BCTV7E 1421 0334 Instant TV DVB-T PCI 1461 000a AVerTV 303 (M126) 1461 000b AverTV Studio 303 (M126) 1461 8011 UltraTV Media Center PCI 550 1462 8606 MSI TV-@nywhere Master 14c7 0107 GDI Black Gold 14f1 0187 Conexant DVB-T reference design 14f1 0342 Digital-Logic MICROSPACE Entertainment Center (MEC) 153b 1166 Cinergy 1400 DVB-T 1540 2580 Provideo PV259 1554 4811 PixelView 1554 4813 Club 3D ZAP1000 MCE Edition 17de 08a1 KWorld/VStream XPert DVB-T with cx22702 17de 08a6 KWorld/VStream XPert DVB-T 17de 08b2 KWorld DVB-S 100 17de a8a6 digitalnow DNTV Live! DVB-T 1805 0111 PICOLO Jet-X Video 1805 0112 PICOLO Jet-X Video 1805 0113 PICOLO Jet-X Video 1805 0114 PICOLO Jet-X Video 1822 0025 digitalnow DNTV Live! DVB-T Pro 185b e000 VideoMate X500 18ac d500 FusionHDTV 5 Gold 18ac d810 FusionHDTV 3 Gold-Q 18ac d820 FusionHDTV 3 Gold-T 18ac db00 FusionHDTV DVB-T1 18ac db11 FusionHDTV DVB-T Plus 18ac db50 FusionHDTV DVB-T Dual Digital 5654 2388 GoTView PCI Hybrid TV Tuner Card 7063 3000 pcHDTV HD3000 HDTV 7063 5500 pcHDTV HD-5500 8801 CX23880/1/2/3 PCI Video and Audio Decoder [Audio Port] 0070 2801 Hauppauge WinTV 28xxx (Roslyn) models 185b e000 VideoMate X500 5654 2388 GoTView PCI Hybrid Audio AVStream Device 7063 5500 pcHDTV HD-5500 8802 CX23880/1/2/3 PCI Video and Audio Decoder [MPEG Port] 0070 2801 Hauppauge WinTV 28xxx (Roslyn) models 0070 6902 WinTV HVR-4000-HD 0070 9002 Nova-T DVB-T Model 909 0070 9402 WinTV-HVR1100 DVB-T/Hybrid 0070 9600 WinTV 88x MPEG Encoder 1043 4823 PVR-416 107d 663c Leadtek PVR 2000 107d 665f WinFast DTV1000-T 14f1 0187 Conexant DVB-T reference design 17de 08a1 XPert DVB-T PCI BDA DVBT 23880 Transport Stream Capture 17de 08a6 KWorld/VStream XPert DVB-T 1805 0111 PICOLO Jet-X Jpeg 1805 0112 PICOLO Jet-X Jpeg 1805 0113 PICOLO Jet-X Jpeg 1805 0114 PICOLO Jet-X Jpeg 18ac d500 DViCO FusionHDTV5 Gold 18ac d810 DViCO FusionHDTV3 Gold-Q 18ac d820 DViCO FusionHDTV3 Gold-T 18ac db00 DVICO FusionHDTV DVB-T1 18ac db10 DVICO FusionHDTV DVB-T Plus 5654 2388 GoTView PCI Hybrid TS Capture Device 7063 3000 pcHDTV HD3000 HDTV 7063 5500 pcHDTV HD-5500 8804 CX23880/1/2/3 PCI Video and Audio Decoder [IR Port] 0070 6902 WinTV HVR-4000-HD 0070 9002 Nova-T DVB-T Model 909 0070 9402 WinTV-HVR1100 DVB-T/Hybrid 1805 0111 PICOLO Jet-X Control 1805 0112 PICOLO Jet-X Control 1805 0113 PICOLO Jet-X Control 1805 0114 PICOLO Jet-X Control 7063 5500 pcHDTV HD-5500 8811 CX23880/1/2/3 PCI Video and Audio Decoder [Audio Port] 0070 3400 WinTV 34604 0070 3401 Hauppauge WinTV 34xxx models 0070 6902 WinTV HVR-4000-HD 0070 9402 WinTV-HVR1100 DVB-T/Hybrid 0070 9600 WinTV 88x Audio 1462 8606 MSI TV-@nywhere Master 18ac d500 DViCO FusionHDTV5 Gold 18ac d810 DViCO FusionHDTV3 Gold-Q 18ac d820 DViCO FusionHDTV3 Gold-T 18ac db00 DVICO FusionHDTV DVB-T1 5654 2388 GoTView PCI Hybrid Audio Capture Device 8852 CX23885 PCI Video and Audio Decoder 0070 8010 WinTV HVR-1400 ExpressCard 0070 f038 WinTV HVR-5525 107d 6f22 WinFast PxTV1200 12ab d585 PE988J Hybrid ATSC/QAM PCI-E AVS Video Capture (SoftEncoder) 13c2 3013 TT-budget CT2-4500 CI 1461 c039 AVerTV Hybrid Express (A577) 153b 117e Cinergy T PCIe Dual 18ac db78 FusionHDTV DVB-T Dual Express 4254 0950 S950 4254 0952 S952 4254 0982 T982 4254 9580 T9580 4254 980c T980C 8880 CX23887/8 PCIe Broadcast Audio and Video Decoder with 3D Comb 0070 2259 WinTV HVR-1250 0070 6a18 WinTV-quadHD 0070 c108 WinTV-HVR-4400-HD model 1278 1461 3100 CE310B SD PCIe Video Capture Card 5654 2389 GoTView X5 DVD Hybrid PCI-E 5654 2390 GoTView X5 3D HYBRID PCI-E 14f2 MOBILITY Electronics 0120 EV1000 bridge 0121 EV1000 Parallel port 0122 EV1000 Serial port 0123 EV1000 Keyboard controller 0124 EV1000 Mouse controller 14f3 BroadLogic 2030 2030 DVB-S Satellite Receiver 2035 2035 DVB-S Satellite Receiver 2050 2050 DVB-T Terrestrial (Cable) Receiver 2060 2060 ATSC Terrestrial (Cable) Receiver 14f4 TOKYO Electronic Industry CO Ltd 14f5 SOPAC Ltd 14f6 COYOTE Technologies LLC 14f7 WOLF Technology Inc 14f8 AUDIOCODES Inc 2077 TP-240 dual span E1 VoIP PCI card 14f9 AG COMMUNICATIONS 14fa WANDEL & GOLTERMANN 14fb TRANSAS MARINE (UK) Ltd 14fc Quadrics Ltd 0000 QsNet Elan3 Network Adapter 0001 QsNetII Elan4 Network Adapter 0002 QsNetIII Elan5 Network Adapter 14fd JAPAN Computer Industry Inc 14fe ARCHTEK TELECOM Corp 14ff TWINHEAD INTERNATIONAL Corp 1500 DELTA Electronics, Inc 1360 RTL81xx RealTek Ethernet 1501 BANKSOFT CANADA Ltd 1502 MITSUBISHI ELECTRIC LOGISTICS SUPPORT Co Ltd 1503 KAWASAKI LSI USA Inc 1504 KAISER Electronics 1505 ITA INGENIEURBURO FUR TESTAUFGABEN GmbH 1506 CHAMELEON Systems Inc # Should be HTEC Ltd, but there are no known HTEC chips and 1507 is already used by mistake by Motorola (see vendor ID 1057). 1507 Motorola ?? / HTEC 0001 MPC105 [Eagle] 0002 MPC106 [Grackle] 0003 MPC8240 [Kahlua] 0100 MC145575 [HFC-PCI] 0431 KTI829c 100VG 4801 Raven 4802 Falcon 4803 Hawk 4806 CPX8216 1508 HONDA CONNECTORS/MHOTRONICS Inc 1509 FIRST INTERNATIONAL Computer Inc 150a FORVUS RESEARCH Inc 150b YAMASHITA Systems Corp 150c KYOPAL CO Ltd 150d WARPSPPED Inc 150e C-PORT Corp 150f INTEC GmbH 1510 BEHAVIOR TECH Computer Corp 1511 CENTILLIUM Technology Corp 1512 ROSUN Technologies Inc 1513 Raychem 1514 TFL LAN Inc 1515 Advent design 1516 MYSON Technology Inc 0800 MTD-8xx 100/10M Ethernet PCI Adapter 0803 SURECOM EP-320X-S 100/10M Ethernet PCI Adapter 1320 10bd SURECOM EP-320X-S 100/10M Ethernet PCI Adapter 0891 MTD-8xx 100/10M Ethernet PCI Adapter 1517 ECHOTEK Corp # old ID, now 1059 1518 Kontron 1519 TELEFON AKTIEBOLAGET LM Ericsson 151a Globetek 1002 PCI-1002 1004 PCI-1004 1008 PCI-1008 151b COMBOX Ltd 151c DIGITAL AUDIO LABS Inc 0003 Prodif T 2496 4000 Prodif 88 151d Fujitsu Computer Products Of America 151e MATRIX Corp 151f TOPIC SEMICONDUCTOR Corp 0000 TP560 Data/Fax/Voice 56k modem 1520 CHAPLET System Inc 1521 BELL Corp 1522 MainPine Ltd 0100 PCI <-> IOBus Bridge 1522 0200 RockForceDUO 2 Port V.92/V.44 Data/Fax/Voice Modem 1522 0300 RockForceQUATRO 4 Port V.92/V.44 Data/Fax/Voice Modem 1522 0400 RockForceDUO+ 2 Port V.92/V.44 Data/Fax/Voice Modem 1522 0500 RockForceQUATRO+ 4 Port V.92/V.44 Data/Fax/Voice Modem 1522 0600 RockForce+ 2 Port V.90 Data/Fax/Voice Modem 1522 0700 RockForce+ 4 Port V.90 Data/Fax/Voice Modem 1522 0800 RockForceOCTO+ 8 Port V.92/V.44 Data/Fax/Voice Modem 1522 0c00 RockForceDUO+ 2 Port V.92/V.44 Data, V.34 Super-G3 Fax, Voice Modem 1522 0d00 RockForceQUATRO+ 4 Port V.92/V.44 Data, V.34 Super-G3 Fax, Voice Modem 1522 1d00 RockForceOCTO+ 8 Port V.92/V.44 Data, V.34 Super-G3 Fax, Voice Modem 1522 2000 RockForceD1 1 Port V.90 Data Modem 1522 2100 RockForceF1 1 Port V.34 Super-G3 Fax Modem 1522 2200 RockForceD2 2 Port V.90 Data Modem 1522 2300 RockForceF2 2 Port V.34 Super-G3 Fax Modem 1522 2400 RockForceD4 4 Port V.90 Data Modem 1522 2500 RockForceF4 4 Port V.34 Super-G3 Fax Modem 1522 2600 RockForceD8 8 Port V.90 Data Modem 1522 2700 RockForceF8 8 Port V.34 Super-G3 Fax Modem 1522 3000 IQ Express D1 - 1 Port V.92 Data Modem 1522 3100 IQ Express F1 - 1 Port V.34 Super-G3 Fax Modem 1522 3200 IQ Express D2 - 2 Port V.92 Data Modem 1522 3300 IQ Express F2 - 2 Port V.34 Super-G3 Fax Modem 1522 3400 IQ Express D4 - 4 Port V.92 Data Modem 1522 3500 IQ Express F4 - 4 Port V.34 Super-G3 Fax Modem 1522 3c00 IQ Express D8 - 8 Port V.92 Data Modem 1522 3d00 IQ Express F8 - 8 Port V.34 Super-G3 Fax Modem 4000 PCI Express UART 1522 4001 IQ Express 1-port V.34 Super-G3 Fax 1522 4002 IQ Express 2-port V.34 Super-G3 Fax 1522 4004 IQ Express 4-port V.34 Super-G3 Fax 1522 4008 IQ Express 8-port V.34 Super-G3 Fax 1522 4100 IQ Express SideBand 1523 MUSIC Semiconductors 1524 ENE Technology Inc 0510 CB710 Memory Card Reader Controller 103c 006a NX9500 0520 FLASH memory: ENE Technology Inc: 0530 ENE PCI Memory Stick Card Reader Controller 0550 ENE PCI Secure Digital Card Reader Controller 0551 SD/MMC Card Reader Controller 0610 PCI Smart Card Reader Controller 0720 Memory Stick Card Reader Controller 0730 ENE PCI Memory Stick Card Reader Controller 0750 ENE PCI SmartMedia / xD Card Reader Controller 0751 ENE PCI Secure Digital / MMC Card Reader Controller 1211 CB1211 Cardbus Controller 1225 CB1225 Cardbus Controller 1410 CB1410 Cardbus Controller 1025 003c CL50 motherboard 1025 005a TravelMate 290 103c 30d5 530 Laptop 1411 CB-710/2/4 Cardbus Controller 103c 006a NX9500 1412 CB-712/4 Cardbus Controller 1420 CB1420 Cardbus Controller 1421 CB-720/2/4 Cardbus Controller 1422 CB-722/4 Cardbus Controller 1525 IMPACT Technologies 1526 ISS, Inc 1527 SOLECTRON 1528 ACKSYS # nee American Microsystems Inc 1529 ON Semiconductor 152a QUICKTURN DESIGN Systems 152b FLYTECH Technology CO Ltd 152c MACRAIGOR Systems LLC 152d QUANTA Computer Inc 152e MELEC Inc 152f PHILIPS - CRYPTO 1530 ACQIS Technology Inc 1531 CHRYON Corp 1532 ECHELON Corp 0020 LonWorks PCLTA-20 PCI LonTalk Adapter 1533 BALTIMORE 1534 ROAD Corp 1535 EVERGREEN Technologies Inc 1536 ACTIS Computer 1537 DATALEX COMMUNCATIONS 1538 ARALION Inc 0303 ARS106S Ultra ATA 133/100/66 Host Controller 1539 ATELIER INFORMATIQUES et ELECTRONIQUE ETUDES S.A. 153a ONO SOKKI 153b TERRATEC Electronic GmbH 1144 Aureon 5.1 # Terratec seems to use several IDs for the same card. 1147 Aureon 5.1 Sky 1158 Philips Semiconductors SAA7134 (rev 01) [Terratec Cinergy 600 TV] 153c ANTAL Electronic 153d FILANET Corp 153e TECHWELL Inc 153f MIPS Technologies, Inc. 0001 SOC-it 101 System Controller 1540 PROVIDEO MULTIMEDIA Co Ltd 1541 MACHONE Communications # nee VIVID Technology Inc. 1542 Concurrent Real-Time 9260 RCIM-II Real-Time Clock & Interrupt Module 9271 RCIM-III Real-Time Clock & Interrupt Module (PCIe) 9272 Pulse Width Modulator Card 9273 RCIM-IV Real-Time Clock & Interrupt Module (PCIe) 9277 5 Volt Delta Sigma Converter Card 9278 10 Volt Delta Sigma Converter Card 9287 Analog Output Card 9290 FPGA Card 9300 Universal Exhaust Gas Oxygen Sensor Simulator 9310 Digital Programmable Resistor 9320 Arria 10 FPGA Card 9350 Analog Input Card 1543 SILICON Laboratories 3052 Intel 537 [Winmodem] 4c22 Si3036 MC'97 DAA 1544 DCM DATA Systems 1545 VISIONTEK 1546 IOI Technology Corp 1547 MITUTOYO Corp 1548 JET PROPULSION Laboratory 1549 INTERCONNECT Systems Solutions 154a MAX Technologies Inc 154b COMPUTEX Co Ltd 154c VISUAL Technology Inc 154d PAN INTERNATIONAL Industrial Corp 154e SERVOTEST Ltd 154f STRATABEAM Technology 1550 OPEN NETWORK Co Ltd 1551 SMART Electronic DEVELOPMENT GmBH 1552 RACAL AIRTECH Ltd 1553 CHICONY Electronics Co Ltd 1554 PROLINK Microsystems Corp 1555 GESYTEC GmBH 1556 PLDA 1100 PCI Express Core Reference Design 110f PCI Express Core Reference Design Virtual Function 1110 XpressRich Reference Design 1111 XpressRich-AXI Ref Design 1112 QuickPCIe 1113 XpressSwitch 1114 Inspector 1115 XpressLINK Ref Design 1116 XpressLINK-SOC Ref Design be00 PCI Express Bridge 1557 MEDIASTAR Co Ltd 1558 CLEVO/KAPOK Computer 9602 RS780/RS880 PCI to PCI bridge (int gfx) 1559 SI LOGIC Ltd 155a INNOMEDIA Inc 155b PROTAC INTERNATIONAL Corp 155c Cemax-Icon Inc 155d Mac System Co Ltd 155e LP Elektronik GmbH 155f Perle Systems Ltd 1560 Terayon Communications Systems 1561 Viewgraphics Inc 1562 Symbol Technologies 1563 A-Trend Technology Co Ltd 1564 Yamakatsu Electronics Industry Co Ltd 1565 Biostar Microtech Int'l Corp 1566 Ardent Technologies Inc 1567 Jungsoft 1568 DDK Electronics Inc 1569 Palit Microsystems Inc. 156a Avtec Systems 156b 2wire Inc 156c Vidac Electronics GmbH 156d Alpha-Top Corp 156e Alfa Inc 156f M-Systems Flash Disk Pioneers Ltd 1570 Teledyne Lecroy 1571 Contemporary Controls a001 CCSI PCI20-485 ARCnet a002 CCSI PCI20-485D ARCnet a003 CCSI PCI20-485X ARCnet a004 CCSI PCI20-CXB ARCnet a005 CCSI PCI20-CXS ARCnet a006 CCSI PCI20-FOG-SMA ARCnet a007 CCSI PCI20-FOG-ST ARCnet a008 CCSI PCI20-TB5 ARCnet a009 CCSI PCI20-5-485 5Mbit ARCnet a00a CCSI PCI20-5-485D 5Mbit ARCnet a00b CCSI PCI20-5-485X 5Mbit ARCnet a00c CCSI PCI20-5-FOG-ST 5Mbit ARCnet a00d CCSI PCI20-5-FOG-SMA 5Mbit ARCnet a201 CCSI PCI22-485 10Mbit ARCnet a202 CCSI PCI22-485D 10Mbit ARCnet a203 CCSI PCI22-485X 10Mbit ARCnet a204 CCSI PCI22-CHB 10Mbit ARCnet a205 CCSI PCI22-FOG_ST 10Mbit ARCnet a206 CCSI PCI22-THB 10Mbit ARCnet 1572 Otis Elevator Company 1573 Lattice - Vantis 1574 Fairchild Semiconductor 1575 Voltaire Advanced Data Security Ltd 1576 Viewcast COM 1578 HITT 4d34 VPMK4 [Video Processor Mk IV] 5615 VPMK3 [Video Processor Mk III] 1579 Dual Technology Corp 157a Japan Elecronics Ind Inc 157b Star Multimedia Corp 157c Eurosoft (UK) 8001 Fix2000 PCI Y2K Compliance Card 157d Gemflex Networks 157e Transition Networks 157f PX Instruments Technology Ltd 1580 Primex Aerospace Co 1581 SEH Computertechnik GmbH 1582 Cytec Corp 1583 Inet Technologies Inc 1584 Uniwill Computer Corp 1585 Logitron 1586 Lancast Inc 1587 Konica Corp 1588 Solidum Systems Corp 1589 Atlantek Microsystems Pty Ltd 0008 Leutron Vision PicPortExpress CL 0009 Leutron Vision PicPortExpress CL Stereo 158a Digalog Systems Inc 158b Allied Data Technologies 158c Hitachi Semiconductor & Devices Sales Co Ltd 158d Point Multimedia Systems 158e Lara Technology Inc 158f Ditect Coop # formerly 3PAR Inc. 1590 Hewlett Packard Enterprise 0001 Eagle Cluster Manager 0002 Osprey Cluster Manager 0003 Harrier Cluster Manager 0371 Cassini 2 [Slingshot 400Gb] 0372 Cassini 2 [Slingshot 400Gb] SR-IOV VF a01d FC044X Fibre Channel HBA 1591 ARN 1592 Syba Tech Ltd 0781 Multi-IO Card 0782 Parallel Port Card 2xEPP 0783 Multi-IO Card 0785 Multi-IO Card 0786 Multi-IO Card 0787 Multi-IO Card 0788 Multi-IO Card 078a Multi-IO Card 1593 Bops Inc 1594 Netgame Ltd 1595 Diva Systems Corp 1596 Folsom Research Inc 1597 Memec Design Services 1598 Granite Microsystems 1599 Delta Electronics Inc 159a General Instrument 159b Faraday Technology Corp 4321 StorLink SL3516 (Gemini) Host Bridge 159c Stratus Computer Systems 159d Ningbo Harrison Electronics Co Ltd 159e A-Max Technology Co Ltd 159f Galea Network Security 15a0 Compumaster SRL 15a1 Geocast Network Systems 15a2 Catalyst Enterprises Inc 0001 TA700 PCI Bus Analyzer/Exerciser 15a3 Italtel 15a4 X-Net OY 15a5 Toyota Macs Inc 15a6 Sunlight Ultrasound Technologies Ltd 15a7 SSE Telecom Inc 15a8 Shanghai Communications Technologies Center 15aa Moreton Bay 15ab Bluesteel Networks Inc 15ac North Atlantic Instruments 6893 3U OpenVPX Multi-function I/O Board [Model 68C3] 15ad VMware 0405 SVGA II Adapter 0710 SVGA Adapter 0720 VMXNET Ethernet Controller 0740 Virtual Machine Communication Interface 0770 USB2 EHCI Controller 0774 USB1.1 UHCI Controller 0778 USB3 xHCI 0.96 Controller 0779 USB3 xHCI 1.0 Controller 0790 PCI bridge 07a0 PCI Express Root Port 07b0 VMXNET3 Ethernet Controller 07c0 PVSCSI SCSI Controller 07e0 SATA AHCI controller 07f0 NVMe SSD Controller 0801 Virtual Machine Interface 15ad 0800 Hypervisor ROM Interface 0820 Paravirtual RDMA controller 1977 HD Audio Controller 15ae Amersham Pharmacia Biotech 15b0 Zoltrix International Ltd 15b1 Source Technology Inc 15b2 Mosaid Technologies Inc # now NVIDIA 15b3 Mellanox Technologies 0191 MT25408 [ConnectX IB Flash Recovery] 01f6 MT27500 Family [ConnectX-3 Flash Recovery] 01f8 MT27520 Family [ConnectX-3 Pro Flash Recovery] 01ff MT27600 Family [Connect-IB Flash Recovery] 0209 MT27700 Family [ConnectX-4 Flash Recovery] 020b MT27710 Family [ConnectX-4 Lx Flash Recovery] 020d MT28800 Family [ConnectX-5 Flash Recovery] 020f MT28908A0 Family [ConnectX-6 Flash Recovery] 0210 MT28908A0 Family [ConnectX-6 Secure Flash Recovery] 0211 MT416842 Family [BlueField SoC Flash Recovery] 0212 MT2892 Family [ConnectX-6 Dx Flash Recovery] 0213 MT2892 Family [ConnectX-6 Dx Secure Flash Recovery] 0214 MT42822 Family [BlueField-2 SoC Flash Recovery] 0215 MT42822 Family [BlueField-2 Secure Flash Recovery] 0216 MT2894 Family [ConnectX-6 Lx Flash Recovery] 0217 MT2894 Family [ConnectX-6 Lx Secure Flash Recovery] 0218 MT2910 Family [ConnectX-7 Flash Recovery] 0219 MT2910 Family [ConnectX-7 Secure Flash Recovery] 021a MT43162 Family [BlueField-3 Lx SoC Flash Recovery] 021b MT43162 Family [BlueField-3 Lx Secure Flash Recovery] 021c MT43244 Family [BlueField-3 SoC Flash Recovery] 021d MT43244 Family [BlueField-3 Secure Flash Recovery] 021e CX8 Family [ConnectX-8 Flash Recovery] 021f CX8 Family [ConnectX-8 Secure Flash Recovery] 0220 BF4 Family Flash Recovery [BlueField-4 SoC Flash Recovery] 0221 BF4 Family Secure Flash Recovery [BlueField-4 Secure Flash Recovery] 0222 CX8 PCIe Switch Family [ConnectX-8 PCIe Switch Flash Recovery] 0223 CX8 PCIe Switch Family [ConnectX-8 PCIe Switch Secure Flash Recovery-RMA] 0224 CX9 Family [ConnectX-9 Flash Recovery] 0225 CX9 Family [ConnectX-9 Secure Flash Recovery-RMA] 0226 CX10 Family [ConnectX-10 Flash Recovery] 0227 CX10 Family [ConnectX-10 Secure Flash Recovery-RMA] 024e MT53100 [Spectrum-2, Flash recovery mode] 024f MT53100 [Spectrum-2, Secure Flash recovery mode] 0250 Spectrum-3, Flash recovery mode 0251 Spectrum-3, Secure Flash recovery mode 0252 Amos chiplet 0253 Amos GearBox Manager 0254 Spectrum-4, Flash recovery mode 0255 Spectrum-4 RMA 0256 Abir GearBox 0257 Quantum-2 in Flash Recovery Mode 0258 Quantum-2 RMA 0259 Abir Chiplet 025b Quantum-3 in Flash Recovery Mode 025c Quantum-3 RMA 025d Quantum-3CPO in Flash Recovery Mode 025e Quantum-3CPO RMA 0262 MT27710 [ConnectX-4 Lx Programmable] EN 0263 MT27710 [ConnectX-4 Lx Programmable Virtual Function] EN 0264 Innova-2 Flex Burn image 0270 Spectrum-5 in Flash Recovery Mode 0271 Spectrum-5 RMA 0274 Spectrum-6 in Flash Recovery Mode 0275 Spectrum-6 RMA 0277 Spectrum-4TOR RMA 0278 Quantum-4 in Flash Recovery Mode 0279 Quantum-4 RMA 027a Eros Chiplet 0281 NPS-600 Flash Recovery 0282 ArcusE Flash recovery 0283 ArcusE RMA 0284 Sagitta 0285 Sagitta RMA 0286 LibraE Flash Recovery 0287 LibraE RMA # Flash recovery 0288 Arcus2 0289 Arcus2 RMA 1002 MT25400 Family [ConnectX-2 Virtual Function] 1003 MT27500 Family [ConnectX-3] 1014 04b5 PCIe3 40GbE RoCE Converged Host Bus Adapter for Power 103c 1777 InfiniBand FDR/EN 10/40Gb Dual Port 544FLR-QSFP Adapter (Rev Cx) 103c 17c9 Infiniband QDR/Ethernet 10Gb 2-port 544i Adapter 103c 18ce InfiniBand QDR/EN 10Gb Dual Port 544M Adapter 103c 18cf InfiniBand FDR/EN 10/40Gb Dual Port 544M Adapter 103c 18d6 InfiniBand FDR/EN 10/40Gb Dual Port 544QSFP Adapter 15b3 0025 ConnectX-3 IB QDR Dual Port Mezzanine Card 15b3 0026 ConnectX-3 IB FDR Dual Port Mezzanine Card 15b3 0028 ConnectX-3 VPI Dual QSFP+ Port QDR Infiniband 40Gb/s or 10Gb Ethernet 15b3 0055 ConnectX-3 10 GbE Single Port SFP+ Adapter 15b3 0059 ConnectX-3 VPI IB FDR/40 GbE Single Port QSFP+ Mezzanine Card 15b3 0064 ConnectX-3 EN 10/40 GbE Single Port QSFP+ Adapter (MCX313A-BCBT) 15b3 0065 ConnectX-3 VPI IB FDR/40 GbE Dual Port QSFP+ Adapter 15b3 0066 ConnectX-3 IB FDR10 Dual Port Mezzanine Card 15b3 0067 ConnectX-3 VPI IB FDR/40 GbE Single Port QSFP+ Adapter 15b3 0071 ConnectX-3 VPI IB FDR/40 GbE Dual Port QSFP+ Mezzanine Card 15b3 0078 ConnectX-3 10 GbE Dual Port KR Mezzanine Card 15b3 0079 ConnectX-3 40 GbE Dual Port QSFP+ Adapter 15b3 0080 ConnectX-3 10 GbE Dual Port SFP+ Adapter 1004 MT27500/MT27520 Family [ConnectX-3/ConnectX-3 Pro Virtual Function] 1005 MT27510 Family 1006 MT27511 Family 1007 MT27520 Family [ConnectX-3 Pro] 1014 04eb 2-Port 10GbE NIC and RoCE SR PCIe3 103c 22f3 InfiniBand FDR/Ethernet 10Gb/40Gb 2-port 544+QSFP Adapter 103c 22f4 InfiniBand FDR/Ethernet 10Gb/40Gb 2-port 544+FLR-QSFP Adapter 103c 801f Ethernet 10G 2-port 546SFP+ Adapter 117c 0090 FastFrame NQ41 117c 0091 FastFrame NQ42 117c 0092 FastFrame NQ11 117c 0093 FastFrame NQ12 15b3 0006 Mellanox Technologies ConnectX-3 Pro Stand-up dual-port 40GbE MCX314A-BCCT 15b3 000c ConnectX-3 Pro 10 GbE Dual Port SFP+ Adapter revision A1 15b3 0078 ConnectX-3 Pro 10 GbE Dual Port KR Mezzanine Card 15b3 0079 ConnectX-3 Pro 40 GbE Dual Port QSFP+ Adapter 15b3 0080 ConnectX-3 Pro 10 GbE Dual Port SFP+ Adapter 193d 1002 520F-B 1009 MT27530 Family 100a MT27531 Family 100b MT27540 Family 100c MT27541 Family 100d MT27550 Family 100e MT27551 Family 100f MT27560 Family 1010 MT27561 Family 1011 MT27600 [Connect-IB] 1012 MT27600 Family [Connect-IB Virtual Function] 1013 MT27700 Family [ConnectX-4] 1014 04f7 PCIe3 2-port 100 GbE (NIC and RoCE) QSFP28 Adapter for Power 15b3 0003 Mellanox Technologies ConnectX-4 Stand-up single-port 40GbE MCX413A-BCAT 15b3 0005 Mellanox Technologies ConnectX-4 Stand-up single-port 40GbE MCX415A-BCAT 15b3 0006 MCX416A-BCAT, ConnectX-4 EN, 40/56GbE 2P, PCIe3.0 x16 15b3 0007 ConnectX-4 EN network interface card, 40/56GbE dual-port QSFP28, PCIe3.0 x16, tall bracket 15b3 0008 ConnectX-4 Stand-up dual-port 100GbE MCX416A-CCAT 15b3 0033 ConnectX-4 VPI IB EDR/100 GbE Single Port QSFP28 Adapter 15b3 0034 ConnectX-4 VPI IB EDR/100 GbE Dual Port QSFP28 Adapter 15b3 0050 ConnectX-4 100 GbE Dual Port QSFP28 Adapter 1014 MT27700 Family [ConnectX-4 Virtual Function] 1015 MT27710 Family [ConnectX-4 Lx] 15b3 0001 ConnectX-4 Lx EN network interface card, 25GbE single-port SFP28, PCIe3.0 x8, tall bracket, ROHS R6 15b3 0003 Stand-up ConnectX-4 Lx EN, 25GbE dual-port SFP28, PCIe3.0 x8, MCX4121A-ACAT 15b3 0004 ConnectX-4 Lx Stand-up dual-port 10GbE MCX4121A-XCAT 15b3 0005 Mellanox Technologies ConnectX-4 Lx Stand-up single-port 40GbE MCX4131A-BCAT 15b3 0020 MCX4411A-ACQN, ConnectX-4 Lx EN OCP, 1x25Gb 15b3 0021 MCX4421A-ACQN ConnectX-4 Lx EN OCP,2x25G 15b3 0025 ConnectX-4 Lx 25 GbE Dual Port SFP28 rNDC 193d 100a 620F-B # NIC-ETH540F-LP-2P SFP+ Ethernet Card 193d 1023 NIC-ETH540F-LP-2P 193d 1031 NIC-ETH640i-Mb-2x25G # NIC-ETH640F-3S-2P OCP3.0 Card 193d 1083 NIC-ETH640F-3S-2P # NIC-ETH540F-3S-2P OCP3.0 2x10G Card 193d 1084 NIC-ETH540F-3S-2P 1016 MT27710 Family [ConnectX-4 Lx Virtual Function] 1017 MT27800 Family [ConnectX-5] 15b3 0006 ConnectX-5 EN network interface card, 100GbE single-port QSFP28, PCIe3.0 x16, tall bracket; MCX515A-CCAT 15b3 0007 Mellanox ConnectX-5 MCX516A-CCAT 15b3 0020 ConnectX-5 EN network interface card, 10/25GbE dual-port SFP28, PCIe3.0 x8, tall bracket ; MCX512A-ACAT 15b3 0068 ConnectX-5 EN network interface card for OCP2.0, Type 1, with host management, 25GbE dual-port SFP28, PCIe3.0 x8, no bracket Halogen free ; MCX542B-ACAN 193d 1051 NIC-IB1040i-Mb-2P 1018 MT27800 Family [ConnectX-5 Virtual Function] 1019 MT28800 Family [ConnectX-5 Ex] 1014 0617 PCIe4 x16 2-Port EDR IB-only ConnectX-5 CAPI Capable Adapter [IBM EC64] 1014 0635 PCIe4 2-port 100 GbE RoCE x16 adapter [IBM EC66] 15b3 0008 ConnectX-5 Ex EN network interface card, 100GbE dual-port QSFP28, PCIe4.0 x16, tall bracket; MCX516A-CDAT 15b3 0125 Tencent ConnectX-5 EN Ex network interface card for OCP 3.0, with host management, 50GbE Dual-port QSFP28, PCIe4.0 x16, Thumbscrew (pull-tab) bracket 15b3 0126 PCIe4 x16 2-port EDR 100GbE ConnectX-5 CAPI Capable adapter [IBM AJP1] 101a MT28800 Family [ConnectX-5 Ex Virtual Function] 101b MT28908 Family [ConnectX-6] 101c MT28908 Family [ConnectX-6 Virtual Function] 101d MT2892 Family [ConnectX-6 Dx] 101e ConnectX Family mlx5Gen Virtual Function 101f MT2894 Family [ConnectX-6 Lx] 193d 1035 NIC-ETH641F-LP-2P SFP28 2x25GbE PCIe Network Adapter 1020 MT28860 1021 MT2910 Family [ConnectX-7] 1023 CX8 Family [ConnectX-8] 1024 CX8 PCIe Switch Family [ConnectX-8 PCIe Switch] 1025 CX9 Family [ConnectX-9] 1027 CX10 Family [ConnectX-10] 1974 MT28800 Family [ConnectX-5 PCIe Bridge] 1975 MT416842 Family [BlueField SoC PCIe Bridge] 1976 MT28908 Family [ConnectX-6 PCIe Bridge] 1977 MT2892 Family [ConnectX-6 Dx PCIe Bridge] 1978 MT42822 Family [BlueField-2 SoC PCIe Bridge] 1979 MT2910 Family [ConnectX-7 PCIe Bridge] 197a MT43162 Family [BlueField-3 Lx SoC PCIe Bridge] 197b MT43244 Family [BlueField-3 SoC PCIe Bridge] 197c ConnectX/BlueField Family mlx5Gen PCIe Bridge [PCIe Bridge] 197d CX8 Family [ConnectX-8 PCIe Bridge] 197e CX9 Family [ConnectX-9 PCIe Bridge] 197f CX10 Family [ConnectX-10 PCIe Bridge] 2020 MT2892 Family [ConnectX-6 Dx Emulated PCIe Bridge] 2021 MT42822 Family [BlueField-2 SoC Emulated PCIe Bridge] 2023 MT2910 Family [ConnectX-7 Emulated PCIe Bridge] 2024 MT43244 Family [BlueField-3 SoC Emulated PCIe Bridge] 2025 ConnectX/BlueField Family mlx5Gen Emulated PCIe Bridge [Emulated PCIe Bridge] 2100 CX8 Family [CX8 Data Direct Interface] 4117 MT27712A0-FDCF-AE 1bd4 0039 SN10XMP2P25 1bd4 003a 25G SFP28 SP EO251FM9 Adapter 1bd4 004d SN10XMP2P25,YZPC-01191-101 5274 MT21108 InfiniBridge 5a44 MT23108 InfiniHost 5a45 MT23108 [Infinihost HCA Flash Recovery] 5a46 MT23108 PCI Bridge 5e8c MT24204 [InfiniHost III Lx HCA] 5e8d MT25204 [InfiniHost III Lx HCA Flash Recovery] 6001 NVMe SNAP Controller 6274 MT25204 [InfiniHost III Lx HCA] 6278 MT25208 InfiniHost III Ex (Tavor compatibility mode) 6279 MT25208 [InfiniHost III Ex HCA Flash Recovery] 6282 MT25208 [InfiniHost III Ex] 6340 MT25408A0-FCC-SI ConnectX, Dual Port 10Gb/s InfiniBand / 10GigE Adapter IC with PCIe 2.0 x8 2.5GT/s Interface 634a MT25408A0-FCC-DI ConnectX, Dual Port 20Gb/s InfiniBand / 10GigE Adapter IC with PCIe 2.0 x8 2.5GT/s Interface 1014 1014 4X InfiniBand DDR Expansion Card (CFFh) for IBM BladeCenter 6368 MT25448 [ConnectX EN 10GigE, PCIe 2.0 2.5GT/s] 6372 MT25458 ConnectX EN 10GBASE-T PCIe 2.5 GT/s 6732 MT25408A0-FCC-GI ConnectX, Dual Port 20Gb/s InfiniBand / 10GigE Adapter IC with PCIe 2.0 x8 5.0GT/s Interface 673c MT25408A0-FCC-QI ConnectX, Dual Port 40Gb/s InfiniBand / 10GigE Adapter IC with PCIe 2.0 x8 5.0GT/s Interface 1014 0415 PCIe2 2-port 4X InfiniBand QDR Adapter for Power 1014 0487 GX++ 1-port 4X IB QDR Adapter for Power 795 103c 1782 4X QDR InfiniBand Mezzanine HCA for c-Class BladeSystem 15b3 0021 HP InfiniBand 4X QDR CX-2 PCI-e G2 Dual Port HCA 6746 MT26438 [ConnectX VPI PCIe 2.0 5GT/s - IB QDR / 10GigE Virtualization+] 103c 1781 NC543i 1-port 4x QDR IB/Flex-10 10Gb Adapter 103c 3349 NC543i 2-port 4xQDR IB/10Gb Adapter 6750 MT26448 [ConnectX EN 10GigE, PCIe 2.0 5GT/s] 1014 0416 PCIe2 2-Port 10GbE RoCE SFP+ Adapter 1014 0461 PCIe2 2-Port 10GbE RoCE SR Adapter 15b3 0018 HP 10 GbE PCI-e G2 Dual-Port NIC (rev C1) # FC EC26 15b3 6572 IBM Flex System EN4132 2-port 10Gb RoCE Adapter 675a MT26458 ConnectX EN 10GBASE-T PCIe Gen2 5.0 GT/s 6764 MT26468 [ConnectX EN 10GigE, PCIe 2.0 5GT/s Virtualization+] 103c 3313 NC542m Dual Port Flex-10 10GbE BLc Adapter 676e MT26478 [ConnectX EN 40GigE, PCIe 2.0 5GT/s] 6778 MT26488 [ConnectX VPI PCIe 2.0 5GT/s - IB DDR / 10GigE Virtualization+] 7101 NPS-400 configuration and management interface 7102 NPS-400 network interface PF 7103 NPS-400 network interface VF 7121 NPS-600 configuration and management interface 7122 NPS-600 network interface PF 7123 NPS-600 network interface VF 8200 Innova-2 Flex Shell Logic a2d0 MT416842 BlueField SoC Crypto enabled a2d1 MT416842 BlueField SoC Crypto disabled a2d2 MT416842 BlueField integrated ConnectX-5 network controller a2d3 MT416842 BlueField multicore SoC family VF a2d4 MT42822 BlueField-2 SoC Crypto enabled a2d5 MT42822 BlueField-2 SoC Crypto disabled a2d6 MT42822 BlueField-2 integrated ConnectX-6 Dx network controller a2d7 MT43162 BlueField-3 Lx SoC Crypto enabled a2d8 MT43162 BlueField-3 Lx SoC Crypto disabled a2d9 MT43162 BlueField-3 Lx integrated ConnectX-7 network controller a2da MT43244 BlueField-3 SoC Crypto enabled a2db MT43244 BlueField-3 SoC Crypto disabled a2dc MT43244 BlueField-3 integrated ConnectX-7 network controller a2dd BF4 Family Crypto enabled [BlueField-4 SoC Crypto enabled] a2de BF4 Family Crypto disabled [BlueField-4 SoC Crypto disabled] a2df BF4 Family integrated network controller [BlueField-4 integrated network controller] b200 ArcusE b201 LibraE b202 Arcus2 c2d1 BlueField DPU Family Auxiliary Communication Channel [BlueField Family] c2d2 MT416842 BlueField SoC management interfac c2d3 MT42822 BlueField-2 SoC Management Interface c2d4 MT43162 BlueField-3 Lx SoC Management Interface c2d5 MT43244 BlueField-3 SoC Management Interface c2d6 BF4 Family Management Interface [BlueField-4 SoC Management Interface] # SwitchX-2, 40GbE switch c738 MT51136 c739 MT51136 GW c838 MT52236 c839 MT52236 router caf1 ConnectX-4 CAPI Function # Spectrum, 100GbE Switch cb84 MT52100 cf08 Switch-IB2 cf6c MT53100 [Spectrum-2] cf70 Spectrum-3 cf80 Spectrum-4 cf82 Spectrum-5 cf84 Spectrum-6 d2f0 Quantum HDR (200Gbps) switch d2f2 Quantum-2 NDR (400Gbps) switch d2f4 Quantum-3 d2f6 Quantum-3CPO d2f8 Quantum-4 15b4 CCI/TRIAD 15b5 Cimetrics Inc 15b6 Texas Memory Systems Inc 0001 XP15 DSP Accelerator 0002 XP30 DSP Accelerator 0003 XP00 Data Acquisition Device 0004 XP35 DSP Accelerator 0007 XP100 DSP Accelerator [XP100-T0] 0008 XP100 DSP Accelerator [XP100-T1] 0009 XP100 DSP Accelerator [XP100-E0] 000a XP100 DSP Accelerator [XP100-E1] 000e XP100 DSP Accelerator [XP100-0] 000f XP100 DSP Accelerator [XP100-1] 0010 XP100 DSP Accelerator [XP100-P0] 0011 XP100 DSP Accelerator [XP100-P1] 0012 XP100 DSP Accelerator [XP100-P2] 0013 XP100 DSP Accelerator [XP100-P3] 0014 RamSan Flash SSD 0015 ZBox 15b7 Sandisk Corp 2001 Skyhawk Series NVME SSD 5001 WD Black NVMe SSD 5002 SanDisk Extreme Pro / WD Black 2018/SN750/PC SN720 NVMe SSD 5003 WD Blue SN500 / PC SN520 x2 M.2 2280 NVMe SSD 5004 PC SN520 x2 M.2 2230 NVMe SSD 5005 PC SN520 x2 M.2 2242 NVMe SSD 5006 SanDisk Extreme Pro / WD Black SN750 / PC SN730 / Red SN700 NVMe SSD 5007 IX SN530 NVMe SSD (DRAM-less) 5008 PC SN530 NVMe SSD (DRAM-less) 5009 SanDisk Ultra 3D / WD Blue SN550 NVMe SSD 15b7 5009 WD Blue SN550 NVMe SSD 500b PC SN530 NVMe SSD 1414 500b Xbox Series X 500d WD Ultrastar DC SN340 NVMe SSD 5011 WD PC SN810 / Black SN850 NVMe SSD 5014 WD PC SN540 / Green SN350 NVMe SSD 1 TB (DRAM-less) 5015 PC SN740 NVMe SSD (DRAM-less) 5016 WD PC SN740 NVMe SSD 512GB (DRAM-less) 5017 WD Black SN770 / PC SN740 256GB / PC SN560 (DRAM-less) NVMe SSD 5019 WD Green SN350 240GB (DRAM-less) / SN560E NVMe SSD 501a SanDisk Ultra 3D / WD Blue SN570 NVMe SSD (DRAM-less) 501d WD Blue SN550 NVMe SSD 2TB (DRAM-less) 501e PC SN735 / WD_BLACK SN750 SE NVMe SSD (DRAM-less) 501f WD PC SN735 NVMe SSD 512GB (DRAM-less) 5025 WD Blue SN570 NVMe SSD 2TB 5026 WD PC SN735 NVMe SSD 1TB (DRAM-less) 5028 WD CH SN560 NVMe SSD 5030 WD Black SN850X NVMe SSD 5034 WD PC SN5000S M.2 2230 NVMe SSD (DRAM-less) 5036 WD PC SN5000S M.2 2280 NVMe SSD (DRAM-less) 5041 WD Blue SN580 NVMe SSD (DRAM-less) 5042 WD Black SN770M NVMe SSD (DRAM-less) 15b8 ADDI-DATA GmbH 1001 APCI1516 SP controller (16 digi outputs) 1003 APCI1032 SP controller (32 digi inputs w/ opto coupler) 1004 APCI2032 SP controller (32 digi outputs) 1005 APCI2200 SP controller (8/16 digi outputs (relay)) 1006 APCI1564 SP controller (32 digi ins, 32 digi outs) 100a APCI1696 SP controller (96 TTL I/Os) 3001 APCI3501 SP controller (analog output board) 300f APCI3600 Noise and vibration measurement board 7001 APCI7420 2-port Serial Controller 7002 APCI7300 Serial Controller 15b9 Maestro Digital Communications 15ba Impacct Technology Corp 15bb Portwell Inc 15bc Agilent Technologies 0100 HPFC-5600 Tachyon DX2+ FC 0103 QX4 PCI Express quad 4-gigabit Fibre Channel controller 0105 Celerity FC-44XS/FC-42XS/FC-41XS/FC-44ES/FC-42ES/FC-41ES 117c 0022 Celerity FC-42XS Fibre Channel Adapter 117c 0025 Celerity FC-44ES Fibre Channel Adapter 117c 0026 Celerity FC-42ES Fibre Channel Adapter 0500 Infiniium Memory Controller Interface 0501 Infiniium Acquisition System Interface 0507 Infiniium Acquisition System (80000 series) 0508 Infiniium Acquisition Support 0b01 82350B PCI GPIB 1100 E8001-66442 PCI Express CIC 1218 82351A PCI Express GPIB 12d6 82350C PCI GPIB 12d7 82351B PCI Express GPIB 2922 64 Bit, 133MHz PCI-X Exerciser & Protocol Checker 2928 64 Bit, 66MHz PCI Exerciser & Analyzer 2929 64 Bit, 133MHz PCI-X Analyzer & Exerciser 15bd DFI Inc 15be Sola Electronics 15bf High Tech Computer Corp (HTC) 15c0 BVM Ltd 15c1 Quantel 15c2 Newer Technology Inc 15c3 Taiwan Mycomp Co Ltd 15c4 EVSX Inc 15c5 Procomp Informatics Ltd 8010 1394b - 1394 Firewire 3-Port Host Adapter Card 15c6 Technical University of Budapest 15c7 Tateyama System Laboratory Co Ltd 0349 Tateyama C-PCI PLC/NC card Rev.01A 15c8 Penta Media Co Ltd 15c9 Serome Technology Inc 15ca Bitboys OY 15cb AG Electronics Ltd 15cc Hotrail Inc 15cd Dreamtech Co Ltd 15ce Genrad Inc 15cf Hilscher Gesellschaft für Systemautomation mbH 0000 CIFX PCI/PCIe 15d1 Infineon Technologies AG 15d2 FIC (First International Computer Inc) 15d3 NDS Technologies Israel Ltd 15d4 Iwill Corp 15d5 Tatung Co 15d6 Entridia Corp 15d7 Rockwell-Collins Inc 15d8 Cybernetics Technology Co Ltd 15d9 Super Micro Computer Inc 1b64 SCC-B8SB80-B1 1b9d Supermicro AOC-S3816L-L16IR 1c6e Supermicro AOC-SLG4-2H8M2 15da Cyberfirm Inc 15db Applied Computing Systems Inc 15dc Litronic Inc 0001 Argus 300 PCI Cryptography Module 15dd Sigmatel Inc 15de Malleable Technologies Inc 15df Infinilink Corp 15e0 Cacheflow Inc 15e1 Voice Technologies Group Inc 15e2 Quicknet Technologies Inc 0500 PhoneJack-PCI 15e3 Networth Technologies Inc 15e4 VSN Systemen BV 15e5 Valley technologies Inc 15e6 Agere Inc 15e7 Get Engineering Corp 15e8 National Datacomm Corp 0130 Wireless PCI Card 0131 NCP130A2 Wireless NIC 15e9 Pacific Digital Corp 1841 ADMA-100 DiscStaQ ATA Controller 15ea Tokyo Denshi Sekei K.K. 15eb DResearch Digital Media Systems GmbH 15ec Beckhoff GmbH 3101 FC3101 Profibus DP 1 Channel PCI 5102 FC5102 15ed Macrolink Inc 15ee In Win Development Inc 15ef Intelligent Paradigm Inc 15f0 B-Tree Systems Inc 15f1 Times N Systems Inc 15f2 Diagnostic Instruments Inc 15f3 Digitmedia Corp 15f4 Valuesoft 15f5 Power Micro Research 15f6 Extreme Packet Device Inc 15f7 Banctec 15f8 Koga Electronics Co 15f9 Zenith Electronics Corp 15fa J.P. Axzam Corp 15fb Zilog Inc 15fc Techsan Electronics Co Ltd 15fd N-CUBED.NET 15fe Kinpo Electronics Inc 15ff Fastpoint Technologies Inc 1600 Northrop Grumman - Canada Ltd 1601 Tenta Technology 1602 Prosys-tec Inc 1603 Nokia Wireless Communications 1604 Central System Research Co Ltd 1605 Pairgain Technologies 1606 Europop AG 1607 Lava Semiconductor Manufacturing Inc 1608 Automated Wagering International 1609 Scimetric Instruments Inc 1612 Telesynergy Research Inc. 1618 Stone Ridge Technology 0001 RDX 11 0002 HFT-01 0400 FarSync T2P (2 port X.21/V.35/V.24) 0440 FarSync T4P (4 port X.21/V.35/V.24) 0610 FarSync T1U (1 port X.21/V.35/V.24) 0620 FarSync T2U (2 port X.21/V.35/V.24) 0640 FarSync T4U (4 port X.21/V.35/V.24) 1610 FarSync TE1 (T1,E1) 2610 FarSync DSL-S1 (SHDSL) 3640 FarSync T4E (4-port X.21/V.35/V.24) 4620 FarSync T2Ue PCI Express (2-port X.21/V.35/V.24) 4640 FarSync T4Ue PCI Express (4-port X.21/V.35/V.24) 1619 FarSite Communications Ltd 0400 FarSync T2P (2 port X.21/V.35/V.24) 0440 FarSync T4P (4 port X.21/V.35/V.24) 0610 FarSync T1U (1 port X.21/V.35/V.24) 0620 FarSync T2U (2 port X.21/V.35/V.24) 0640 FarSync T4U (4 port X.21/V.35/V.24) 1610 FarSync TE1 (T1,E1) 1612 FarSync TE1 PCI Express (T1,E1) 2610 FarSync DSL-S1 (SHDSL) 3640 FarSync T4E (4-port X.21/V.35/V.24) 4620 FarSync T2Ue PCI Express (2-port X.21/V.35/V.24) 4640 FarSync T4Ue PCI Express (4-port X.21/V.35/V.24) 5621 FarSync T2Ee PCI Express (2 port X.21/V.35/V.24) 5641 FarSync T4Ee PCI Express (4 port X.21/V.35/V.24) 6620 FarSync T2U-PMC PCI Express (2 port X.21/V.35/V.24) 161f Rioworks 1621 Lynx Studio Technology, Inc. 0020 LynxTWO-A 0021 LynxTWO-B 0022 LynxTWO-C 0023 Lynx L22 0024 Lynx AES16 0025 Lynx AES16-SRC 0028 Lynx AES16e 1626 TDK Semiconductor Corp. 8410 RTL81xx Fast Ethernet 1629 Kongsberg Spacetec AS 1003 Format synchronizer v3.0 1006 Format synchronizer, model 10500 1007 Format synchronizer, model 21000 2002 Fast Universal Data Output 3100 IO31000 Frame Synchronizer and I/O 3200 IO32000 Frame Synchronizer and I/O 4002 High Rate Demodulator 5001 High Rate FEC 6001 High Rate Demodulator and FEC 1631 Packard Bell B.V. 1638 Standard Microsystems Corp [SMC] 1100 SMC2602W EZConnect / Addtron AWA-100 / Eumitcom PCI WL11000 163c Smart Link Ltd. 3052 SmartLink SmartPCI562 56K Modem 5449 SmartPCI561 Modem 1641 MKNet Corp. 1642 Bitland(ShenZhen) Information Technology Co., Ltd. # nee Brocade Communications Systems, Inc. 1657 Cavium QLogic 0013 425/825/42B/82B 4Gbps/8Gbps PCIe dual port FC HBA 103c 1742 82B 8Gbps dual port FC HBA 103c 1744 42B 4Gbps dual port FC HBA 1657 0014 425/825 4Gbps/8Gbps PCIe dual port FC HBA 0014 1010/1020/1007/1741 10Gbps CNA 1657 0014 1010/1020/1007/1741 10Gbps CNA - FCOE 1657 0015 1010/1020/1007/1741 10Gbps CNA - LL 0017 415/815/41B/81B 4Gbps/8Gbps PCIe single port FC HBA 103c 1741 41B 4Gbps single port FC HBA 103c 1743 81B 8Gbps single port FC HBA 1657 0014 415/815 4Gbps/8Gbps single port PCIe FC HBA 0021 804 8Gbps FC HBA for HP Bladesystem c-class 0022 BR-1860 Fabric Adapter 1657 0022 10Gbps CNA - FCOE 1657 0023 10Gbps CNA - LL 1657 0024 16Gbps FC HBA # Mezz card for IBM 0023 1867/1869 16Gbps FC HBA # Same Device_ID used for 410 (1port) and 420 (2 port) HBAs. 0646 400 4Gbps PCIe FC HBA 165a Epix Inc c100 PIXCI(R) CL1 Camera Link Video Capture Board [custom QL5232] d200 PIXCI(R) D2X Digital Video Capture Board [custom QL5232] d300 PIXCI(R) D3X Digital Video Capture Board [custom QL5232] eb01 PIXCI(R) EB1 PCI Camera Link Video Capture Board # Gidel Reconfigurable Computing 165c Gidel Ltd. 5361 PROCStarII60-1 5362 PROCStarII60-2 5364 PROCStarII60-4 5435 ProcSparkII 5661 ProcE60 56e1 ProcE180 5911 ProcStarIII110-1 5912 ProcStarIII110-2 5913 ProcStarIII110-3 5914 ProcStarIII110-4 5921 ProcStarIII150-1 5922 ProcStarIII150-2 5923 ProcStarIII150-3 5924 ProcStarIII150-4 5931 ProcStarIII260-1 5932 ProcStarIII260-2 5933 ProcStarIII260-3 5934 ProcStarIII260-4 5941 ProcStarIII340-1 5942 ProcStarIII340-2 5943 ProcStarIII340-3 5944 ProcStarIII340-4 5a01 ProceIII80 5a11 ProceIII110 5a21 ProceIII150 5a31 ProceIII260 5a41 ProceIII340 5b51 ProceIV360 5b61 ProceIV530 5b71 ProceIV820 5c01 ProcStarIV80-1 5c02 ProcStarIV80-2 5c03 ProcStarIV80-3 5c04 ProcStarIV80-4 5c11 ProcStarIV110-1 5c12 ProcStarIV110-2 5c13 ProcStarIV110-3 5c14 ProcStarIV110-4 5c51 ProcStarIV360-1 5c52 ProcStarIV360-2 5c53 ProcStarIV360-3 5c54 ProcStarIV360-4 5c61 ProcStarIV530-1 5c62 ProcStarIV530-2 5c63 ProcStarIV530-3 5c64 ProcStarIV530-4 5c71 ProcStarIV820-1 5c72 ProcStarIV820-2 5c73 ProcStarIV820-3 5c74 ProcStarIV820-4 5d01 Proc10480 5d11 Proc104110 5f01 ProceV_A3 5f11 ProceV_A7 5f21 ProceV_AB 5f31 ProceV_D5 5f41 ProceV_D8 6732 Proc6M 6832 Proc12M 7101 Proc10a_27 7111 Proc10a_48 7121 Proc10a_66 7141 Proc10a_115 7181 Proc10a_27S 7191 Proc10a_48S 71a1 Proc10a_66S 71b1 Proc10A 72b1 HawkEye 73b1 Proc10s 165d Hsing Tech. Enterprise Co., Ltd. 165f Linux Media Labs, LLC 1020 LMLM4 MPEG-4 encoder 1661 Worldspace Corp. 1665 EDAX Inc # P/N 4035.006.19720 1973 DPP-II FR2 Board # P/N 4035.065.20000 2000 SG-IIP Board 1668 Actiontec Electronics Inc 0100 Mini-PCI bridge # Formerly SiByte, Inc. 166d Broadcom Corporation 0001 SiByte BCM1125/1125H/1250 System-on-a-Chip PCI 0002 SiByte BCM1125H/1250 System-on-a-Chip HyperTransport 0012 SiByte BCM1280/BCM1480 System-on-a-Chip PCI-X 0014 Sibyte BCM1280/BCM1480 System-on-a-Chip HyperTransport 1677 B&R Industrial Automation GmbH 104e 5LS172.6 B&R Dual CAN Interface Card 12d7 5LS172.61 B&R Dual CAN Interface Card 20ad 5ACPCI.MFIO-K01 Profibus DP / K-Feldbus / COM 1678 NetEffect 0100 NE020 10Gb Accelerated Ethernet Adapter (iWARP RNIC) 1679 Tokyo Electron Device Ltd. 3000 SD Standard host controller [Ellen] 167b ZyDAS Technology Corp. 2102 ZyDAS ZD1202 187e 3406 ZyAIR B-122 CardBus 11Mbs Wireless LAN Card 187e 3407 ZyAIR B-320 802.11b Wireless PCI Adapter 2116 ZD1212B Wireless Adapter 167d Samsung Electro-Mechanics Co., Ltd. a000 MagicLAN SWL-2210P 802.11b [Intersil ISL3874] 167e ONNTO Corp. 1681 Hercules 1682 XFX Pine Group Inc. 5701 Radeon 5700 XT Thicc III Ultra c580 Radeon RX 580 1688 CastleNet Technology Inc. 1170 WLAN 802.11b card 168a Utimaco IS GmbH 2086 CryptoServer Se-Series Hardware Security Module c040 CryptoServer CSe-Series Hardware Security Module c051 CryptoServer Se-Series Gen2 Hardware Security Module c070 u.trust Anchor Hardware Security Module cs7.2 Series c071 u.trust Anchor Hardware Security Module cs7.3 Series c072 u.trust Anchor Hardware Security Module cs7.3 Series Virtual Function # nee Atheros Communications, Inc. 168c Qualcomm Atheros 0007 AR5210 Wireless Network Adapter [AR5000 802.11a] 1737 0007 WPC54A Wireless PC Card 1b47 0100 Harmony 8450CN Wireless CardBus Module 1b47 0110 Skyline 4030 / Harmony 8450 802.11a Wireless CardBus Adapter 8086 2501 PRO/Wireless 5000 LAN PCI Adapter Module 0011 AR5211 Wireless Network Adapter [AR5001A 802.11a] 0012 AR5211 Wireless Network Adapter [AR5001X 802.11ab] 1186 3a03 AirPro DWL-A650 Wireless Cardbus Adapter (rev.B) 1186 3a04 AirPro DWL-AB650 Multimode Wireless Cardbus Adapter 1186 3a05 AirPro DWL-AB520 Multimode Wireless PCI Adapter 126c 8031 2201 Mobile Adapter 1385 4400 WAB501 802.11ab Wireless CardBus Card 1b47 aa00 8460 802.11ab Wireless CardBus Adapter 0013 AR5212/5213/2414 Wireless Network Adapter 0308 3402 AG-100 802.11ag Wireless Cardbus Adapter 0308 3405 G-102 v2 802.11g Wireless Cardbus Adapter 0308 3408 G-170S 802.11g Wireless CardBus Adapter 0e11 00e5 NC6000/NC8000 laptop 10b7 6002 3CRWE154A72 802.11abg Cardbus Adapter 1113 d301 Philips CPWNA100 Wireless CardBus adapter 1113 ee23 SMCWPCIT-G 108Mbps Wireless PCI adapter 1154 033b Buffalo WLI-CB-AMG54 1154 034e Buffalo WLI-CB-AG108HP 802.11abg Cardbus Adapter 1186 3202 DWL-G650 (Rev B3,B5) Wireless cardbus adapter 1186 3203 AirPlus DWL-G520 Wireless PCI Adapter (rev. A) 1186 3a07 AirXpert DWL-AG650 Wireless Cardbus Adapter 1186 3a08 AirXpert DWL-AG520 Wireless PCI Adapter 1186 3a12 D-Link AirPlus DWL-G650 Wireless Cardbus Adapter(rev.C) 1186 3a13 AirPlus DWL-G520 Wireless PCI Adapter (rev. B) 1186 3a14 AirPremier AG DWL-AG530 Wireless PCI Adapter (rev.A) 1186 3a17 D-Link AirPremier DWL-G680 Wireless Cardbus Adapter 1186 3a18 D-Link AirPremier DWL-G550 Wireless PCI Adapter 1186 3a1a WNA-2330 802.11bg Wireless CardBus Adapter 1186 3a63 D-Link AirPremier DWL-AG660 Wireless Cardbus Adapter 1186 3a93 Conceptronic C54I Wireless 801.11g PCI card 1186 3a94 Conceptronic C54C 802.11g Wireless Cardbus Adapter 1186 3ab0 Allnet ALL0281 Wireless PCI Card 1385 4600 WAG511 802.11a/b/g Dual Band Wireless PC Card 1385 4610 WAG511 802.11a/b/g Dual Band Wireless PC Card 1385 4900 WG311v1 802.11g Wireless PCI Adapter 1385 4a00 WAG311 802.11a/g Wireless PCI Adapter 1385 4b00 WG511T 108 Mbps Wireless PC Card (rev.A/B) 1385 4d00 WG311T 108 Mbps Wireless PCI Adapter (rev.A2) 1385 4f00 WG511U Double 108 Mbps Wireless PC Card 1385 5a00 WG311T (rev.A3 v1h3/v1h4) 108 Mbps Wireless PCI Adapter [AR2412] 1385 5b00 WG511T 108 Mbps Wireless PC Card (rev.C) 1385 5d00 WPN511 RangeMax Wireless PC Card 1458 e911 GN-WIAG02 1468 0403 U10H014 802.11g Cardbus Adapter 1468 0408 ThinkPad 11b/g Wireless LAN Mini PCI Adapter 14b7 0a10 8480-WD 802.11abg Cardbus Adapter 14b7 0a60 8482-WD ORiNOCO 11a/b/g Wireless PCI Adapter 14b7 aa30 8800-FC 802.11bg Cardbus Adapter 14b7 aa40 8470-WD 802.11bg Cardbus Adapter 14b9 cb21 CB21 802.11a/b/g Cardbus Adapter 1668 1026 IBM HighRate 11 a/b/g Wireless CardBus Adapter 168c 0013 AirPlus XtremeG DWL-G650 Wireless PCMCIA Adapter 168c 1025 DWL-G650B2 Wireless CardBus Adapter 168c 1027 Engenius NL-3054CB ARIES b/g CardBus Adapter 168c 1042 Ubiquiti Networks SuperRange a/b/g Cardbus Adapter 168c 1051 EZ Connect g 802.11g 108Mbps Wireless PCI Adapter 168c 2026 Netgate 5354MP ARIES a(108Mb turbo)/b/g MiniPCI Adapter 168c 2027 D-Link AirPlus DWL-G520 Wireless PCI Adapter (rev. A) 168c 2041 Engenius 5354MP Plus ARIES2 b/g MiniPCI Adapter 168c 2042 Engenius 5354MP Plus ARIES2 a/b/g MiniPCI Adapter 168c 2051 TRENDnet TEW-443PI Wireless PCI Adapter 16a5 160a BWP712 802.11bg Wireless CardBus Adapter 16ab 7302 Trust Speedshare Turbo Pro Wireless PCI Adapter 1737 0017 WPC55AG 1737 0026 WMP55AG v1.1 1737 0035 WPC55AG v1.2 802.11abg Cardbus Adapter 1737 0036 WMP55AG v1.2 802.11abg PCI Adapter 1799 3000 F6D3000 Dual-Band Wireless A+G Desktop Card 1799 3010 F6D3010 Dual-Band Wireless A+G Notebook Card 17cf 0042 Z-COMAX Highpower XG-622H (400mw) 802.11b/g mini-PCI Adapter 185f 1012 CM9 Wireless a/b/g MiniPCI Adapter 185f 2012 Wistron NeWeb WLAN a+b+g model CB9 a727 6801 3CRXJK10075 OfficeConnect Wireless 108Mbps 11g XJACK PC Card 001a AR2413/AR2414 Wireless Network Adapter [AR5005G(S) 802.11bg] 1052 168c Sweex Wireless Lan PC Card 54Mbps 1113 ee20 SMC Wireless CardBus Adapter 802.11g (SMCWCB-G EU) 1113 ee24 SMC Wireless PCI Card WPCI-G 1186 3a15 AirPlus G DWL-G630 Wireless Cardbus Adapter (rev.D1) 1186 3a16 AirPlus G DWL-G510 Wireless PCI Adapter(rev.B) 1186 3a1c WNA-1330 Notebook Adapter 1186 3a1d WDA-1320 Desktop Adapter 1186 3a23 AirPlus G DWL-G520+A Wireless PCI Adapter 1186 3a24 AirPlus G DWL-G650+A Wireless Cardbus Adapter 1186 3b08 AirPlus G DWL-G630 Wireless Cardbus Adapter (rev.C1) 168c 001a Belkin FD7000 168c 1052 TP-Link TL-WN510G Wireless CardBus Adapter 168c 2052 Compex Wireless 802.11 b/g MiniPCI Adapter, Rev A1 [WLM54G] 16ec 0122 Wireless PCI Adapter Model 5418 1737 0053 WPC54G v7 802.11g Wireless-G Notebook Adapter 1799 700c F5D7000 v5000 Wireless G Desktop Card 1799 701d F5D7010 v5000 Wireless G Notebook Card 17f9 0008 DX-WGNBC 802.11bg Wireless CardBus Adapter 17f9 0018 DX-WGDTC 802.11bg Wireless PCI Adapter 001b AR5413/AR5414 Wireless Network Adapter [AR5006X(S) 802.11abg] # Atheros AR5414 32-bit mini-PCI type IIIB 0777 1107 UB5 802.11a Wireless Mini PCI Adapter 0777 3002 XR2 802.11g Wireless Mini PCI Adapter 0777 3005 XR5 802.11a Wireless Mini PCI Adapter 0777 3009 XR9 900MHz Wireless Mini PCI Adapter 1154 034e WLI-CB-AG108HP 802.11abg Wireless CardBus Adapter 1186 3a19 D-Link AirPremier AG DWL-AG660 Wireless Cardbus Adapter 1186 3a22 AirPremier AG DWL-AG530 Wireless PCI Adapter (rev.B) 11ad 5001 WN5301A 802.11bg Wireless PCI Adapter 1458 e901 GN-WI01HT Wireless a/b/g MiniPCI Adapter 168c 001b Wireless LAN PCI LiteOn 168c 1062 IPN-W100CB 802.11abg Wireless CardBus Adapter 168c 2062 EnGenius EMP-8602 (400mw) or Compex WLM54AG (SuperAG) 168c 2063 EnGenius EMP-8602 (400mw) or Compex WLM54AG 17f9 000b WL-711A 802.11abg Wireless CardBus Adapter 17f9 000c WPIA-112AG 802.11abg Wireless PCI Adapter 17f9 000d PC-686X 802.11abg Wireless Mini PCI Adapter 185f 1600 DCMA-82 High Power WLAN 802.11a/b/g mini-PCI Module (Super A/G, eXtended Range, 400mW) 1948 3aba RBTBJ-AW 802.11abg Wireless Cardbus Adapter a727 6804 Wireless 11a/b/g PC Card with XJACK(r) Antenna 001c AR242x / AR542x Wireless Network Adapter (PCI-Express) 0777 3006 SRX 802.11abg Wireless ExpressCard Adapter 103c 137a AR5BXB63 (Foxconn) 802.11bg Mini PCIe NIC 106b 0086 AirPort Extreme 144f 7106 WLL3140 (Toshiba PA3501U-1MPC) 802.11bg Wireless Mini PCIe Card 144f 7128 WLL3141 (Toshiba PA3613U-1MPC) 802.11bg Wireless Mini PCIe Card 1468 0428 AR5BXB63 802.11bg NIC 1468 042a AR5007EG 802.11bg NIC 147b 1033 AirPace Wi-Fi 168c 001c AR242x 802.11abg NIC (PCI Express) 168c 3061 AR5006EGS 802.11bg NIC (2.4GHz, PCI Express) 168c 3062 AR5006EXS 802.11abg NIC (2.4/5.0GHz, PCI Express) 168c 3063 AR5006EX 802.11abg NIC (2.4/5.0GHz, PCI Express) 168c 3065 AR5006EG 802.11bg NIC (2.4GHz, PCI Express) 168c 3067 AR242x 802.11abg Wireless PCI Express Adapter (rev 01) 1a3b 1026 AW-GE780 802.11bg Wireless Mini PCIe Card 001d AR2417 Wireless Network Adapter [AR5007G 802.11bg] 1799 720b F5D7000 v8000 Wireless G Desktop Card 1799 721b F5D7010 v8000 Wireless G Notebook Card # the name AR5005VL is used for some AR5513 based designs 0020 AR5513 802.11abg Wireless NIC 0308 3407 M-102 802.11g Wireless Cardbus Adapter 1186 3a67 DWL-G650M Super G MIMO Wireless Notebook Adapter 1186 3a68 DWL-G520M Wireless 108G MIMO Desktop Adapter 187e 340e M-302 802.11g Wireless PCI Adapter 1976 2003 TEW-601PC 802.11g Wireless CardBus Adapter 0023 AR5416 Wireless Network Adapter [AR5008 802.11(a)bgn] 0308 340b NWD-170N 802.11bgn Wireless CardBus Adapter 1154 0365 Buffalo WLP-CB-AG300 802.11abgn Cardbus Adapter 1154 0367 WLI-CB-AG301N 802.11abgn Wireless CardBus Adapter 1186 3a6a DWA-642 802.11n RangeBooster N CardBus Adapter 1186 3a6b DWA-547 802.11n RangeBooster N 650 DeskTop Adapter 1186 3a6d DWA-552 802.11n Xtreme N Desktop Adapter (rev A1) 1186 3a76 DWA-645 802.11n RangeBooster N 650 Notebook Adapter (rev A1) 1737 0059 WPC300N v2 Wireless-N Notebook Adapter 1737 0069 WPC100 v1 802.11n RangePlus Wireless Notebook Adapter 1737 0072 WMP110 v1 802.11n RangePlus Wireless PCI Adapter 1799 8011 F5D8011 v1 802.11n N1 Wireless Notebook Card 187e 3411 NWD-370N 802.11n Wireless PCI Adapter 1976 2008 TEW-621PC 802.11bgn Wireless CardBus Adapter 0024 AR5418 Wireless Network Adapter [AR5008E 802.11(a)bgn] (PCI-Express) 106b 0087 AirPort Extreme 1186 3a70 DWA-556 Xtreme N PCI Express Desktop Adapter 0027 AR9160 Wireless Network Adapter [AR9001 802.11(a)bgn] 0777 4082 SR71-A 802.11abgn Wireless Mini PCI Adapter 0029 AR922X Wireless Network Adapter 0777 4005 SR71-15 802.11an Mini PCI Adapter 1186 3a7a DWA-552 802.11n Xtreme N Desktop Adapter (rev A2) 1186 3a7d DWA-552 802.11n Xtreme N Desktop Adapter (rev A3) 168c 0029 AR922X Wireless Network Adapter 168c 2096 Compex WLM200NX / Wistron DNMA-92 002a AR928X Wireless Network Adapter (PCI-Express) 0777 4f05 SR71-X 802.11abgn Wireless ExpressCard Adapter [AR9280] 103c 3041 AR5BHB92-H 802.11abgn Wireless Half-size Mini PCIe Card [AR9280] 103c 3042 AzureWave AW-NE773 802.11abgn Wireless Half-size Mini PCIe Card [AR9280] 105b e006 T77H053.00 802.11bgn Wireless Mini PCIe Card [AR9281] 105b e01f T77H047.31 802.11bgn Wireless Half-size Mini PCIe Card [AR9283] 106b 008f AirPort Extreme 11ad 6600 WN6600A 802.11bgn Wireless Mini PCIe Card [AR9281] 144f 7141 WLL6080 802.11bgn Wireless Mini PCIe Card [AR9281] 168c 0203 DW1525 802.11abgn WLAN PCIe Card [AR9280] 1a32 0303 EM303 802.11bgn Wireless Mini PCIe Card [AR9281] 1a32 0306 EM306 802.11bgn Wireless Half-size Mini PCIe Card [AR9283] 1a3b 1067 AW-NE771 802.11bgn Wireless Mini PCIe Card [AR9281] 1a3b 1071 AW-NE772 802.11abgn Wireless Mini PCIe Card [AR9280] 1a3b 1081 AW-NE773 802.11abgn Wireless Half-size Mini PCIe Card [AR9280] 002b AR9285 Wireless Network Adapter (PCI-Express) 1028 0204 Wireless 1502 802.11bgn Half-size Mini PCIe Card 1028 0205 Wireless 1702 802.11bgn Half-size Mini PCIe Card [AR9002WB-1NGCD] 103c 303f U98Z062.10 802.11bgn Wireless Half-size Mini PCIe Card 103c 3040 U98Z062.12 802.11bgn Wireless Half-size Mini PCIe Card 105b e017 T77H126.00 802.11bgn Wireless Half-size Mini PCIe Card 105b e023 T77H121.04 802.11bgn Wireless Half-size Mini PCIe Card 105b e025 T77H121.05 802.11bgn Wireless Half-size Mini PCIe Card 1113 e811 WN7811A (Toshiba PA3722U-1MPC) 802.11bgn Wireless Half-size Mini PCIe Card 185f 30af DNXA-95 802.11bgn Wireless Half-size Mini PCIe Card 1931 0023 Option GTM67x PCIe WiFi Adapter 1a3b 1089 AW-NE785 / AW-NE785H 802.11bgn Wireless Full or Half-size Mini PCIe Card 1a3b 2c37 AW-NB037H 802.11bgn Wireless Half-size Mini PCIe Card [AR9002WB-1NGCD] 1b9a 0401 XW204E 802.11bgn Wireless Half-size Mini PCIe Card 1b9a 0c03 WB214E 802.11bgn Wireless Half-size Mini PCIe Card [AR9002WB-1NGCD] 002c AR2427 802.11bg Wireless Network Adapter (PCI-Express) 002d AR9227 Wireless Network Adapter 002e AR9287 Wireless Network Adapter (PCI-Express) 105b e034 T77H167.00 0030 AR93xx Wireless Network Adapter 103c 1627 AR9380/HB112 802.11abgn 3x3 Wi-Fi Adapter 106b 009a AirPort Extreme 1186 3a7e DWA-566 Wireless N 300 Dual Band PCIe Desktop Adapter 1a56 2000 Killer Wireless-N 1102 Half-size Mini PCIe Card [AR9382] 1a56 2001 Killer Wireless-N 1103 Half-size Mini PCIe Card [AR9380] 0032 AR9485 Wireless Network Adapter 1028 0208 Wireless 1506 WLAN Half Mini-Card 103c 1838 AR9485/HB125 802.11bgn 1x1 Wi-Fi Adapter 105b e044 Unex DHXA-225 144d 410e AR9485WB-EG 802.11b/g/n mini-PCIe card on a series 3 laptop 1a3b 1186 AW-NE186H 0033 AR958x 802.11abgn Wireless Network Adapter 168c a120 AR9582 802.11a/n WLAN Mini-PCIe Adapter 0034 AR9462 Wireless Network Adapter 1028 020b Wireless 1601 802.11abgn Adapter 1028 0300 Wireless 1802 802.11abgn Adapter 1a56 2003 Killer Wireless-N 1202 Half-size Mini PCIe Card 0036 QCA9565 / AR9565 Wireless Network Adapter 1028 020e Vostro 3470 0037 AR9485 Wireless Network Adapter # Also used as Gigabyte GC-WB150 on a PCIe-to-mini-PCIe converter 1a3b 2100 AW-NB100H 802.11n Wireless Mini PCIe Card 003c QCA986x/988x 802.11ac Wireless Network Adapter 003e QCA6174 802.11ac Wireless Network Adapter 1a56 143a Killer 1435 Wireless-AC 1a56 1525 Killer N1525 Wireless-AC 1a56 1535 Killer Wireless-n/a/ac 1535 Wireless Network Adapter 0040 QCA9980/9990 802.11ac Wireless Network Adapter 0041 QCA6164 802.11ac Wireless Network Adapter 0042 QCA9377 802.11ac Wireless Network Adapter 11ad 08a6 Qualcomm Atheros QCA9377 802.11ac Wireless Network Adapter # compatible with Lenovo's BIOS lock 17aa 0901 Qualcomm Atheros QCA9377 Wireless Network Adapter 0046 QCA9984 802.11ac Wave 2 Wireless Network Adapter 0050 QCA9887 802.11ac Wireless Network Adapter 0207 AR5210 Wireless Network Adapter [AR5000 802.11a] 1014 AR5212 802.11abg NIC 1014 058a ThinkPad 11a/b/g Wireless LAN Mini Express Adapter (AR5BXB6) 9013 AR5002X Wireless Network Adapter ff19 AR5006X Wireless Network Adapter ff1b AR2425 Wireless Network Adapter [AR5007EG 802.11bg] ff1c AR5008 Wireless Network Adapter ff1d AR922x Wireless Network Adapter # Found in "AVM Fritz!Box FON WLAN 7270v3" 168c ee1c AR9220-AC1A [AVM Fritz!Box FON WLAN 7270 v3] 1695 EPoX Computer Co., Ltd. 169c Netcell Corporation 0044 Revolution Storage Processing Card # The right ID is 196d, but they got it nibble-swapped in 2202. 169d Club-3D VB (Wrong ID) 16a5 Tekram Technology Co.,Ltd. 16ab Global Sun Technology Inc 1100 GL24110P 1101 PLX9052 PCMCIA-to-PCI Wireless LAN 1102 PCMCIA-to-PCI Wireless Network Bridge 8501 WL-8305 Wireless LAN PCI Adapter 16ae SafeNet Inc 0001 SafeXcel 1140 000a SafeXcel 1841 1141 SafeXcel 1141 # misused vendor ID 0001 0001 0001 SafeXcel 1141 v. 1.1 1841 SafeXcel 1842 16af SparkLAN Communications, Inc. 16b4 Aspex Semiconductor Ltd 16b8 Sonnet Technologies, Inc. 16be Creatix Polymedia GmbH 16c3 Synopsys, Inc. abcd DWC_usb3 / PCIe bridge abce DWC_usb3 abcf DWC_usb31 edda EPMockUp 16c6 Micrel-Kendin 8695 Centaur KS8695 ARM processor 8842 KSZ8842-PMQL 2-Port Ethernet Switch 16c8 Octasic Inc. 16c9 EONIC B.V. The Netherlands 16ca CENATEK Inc 0001 Rocket Drive DL # nee Innocore Gaming Ltd., nee Densitron Gaming Ltd., a division of Densitron Technologies 16cd Advantech Co. Ltd 0101 DirectPCI SRAM for DPX-11x series 0102 DirectPCI SRAM for DPX-S/C/E-series 0103 DirectPCI ROM for DPX-11x series 0104 DirectPCI ROM for DPX-S/C/E-series 0105 DirectPCI I/O for DPX-114/DPX-115 0106 DirectPCI I/O for DPX-116 0107 DirectPCI I/O for DPX-116U 0108 DirectPCI I/O for DPX-117 0109 DirectPCI I/O for DPX-112 010a DirectPCI I/O for DPX-C/E-series 010b DirectPCI I/O for DPX-S series 16ce Roland Corp. 16d5 Acromag, Inc. 0504 PMC-DX504 Reconfigurable FPGA with LVDS I/O 0520 PMC520 Serial Communication, 232 Octal 0521 PMC521 Serial Communication, 422/485 Octal 1020 PMC-AX1020 Reconfigurable FPGA with A/D & D/A 1065 PMC-AX1065 Reconfigurable FPGA with A/D & D/A 2004 PMC-DX2004 Reconfigurable FPGA with LVDS I/O 2020 PMC-AX2020 Reconfigurable FPGA with A/D & D/A 2065 PMC-AX2065 Reconfigurable FPGA with A/D & D/A 3020 PMC-AX3020 Reconfigurable FPGA with A/D & D/A 3065 PMC-AX3065 Reconfigurable FPGA with A/D & D/A 4243 PMC424, APC424, AcPC424 Digital I/O and Counter Timer Module 4248 PMC464, APC464, AcPC464 Digital I/O and Counter Timer Module 424b PMC-DX2002 Reconfigurable FPGA with Differential I/O 4253 PMC-DX503 Reconfigurable FPGA with TTL and Differential I/O 4312 PMC-CX1002 Reconfigurable Conduction-Cooled FPGA Virtex-II with Differential I/O 4313 PMC-CX1003 Reconfigurable Conduction-Cooled FPGA Virtex-II with CMOS and Differential I/O 4322 PMC-CX2002 Reconfigurable Conduction-Cooled FPGA Virtex-II with Differential I/O 4323 PMC-CX2003 Reconfigurable Conduction-Cooled FPGA Virtex-II with CMOS and Differential I/O 4350 PMC-DX501 Reconfigurable Digital I/O Module 4353 PMC-DX2003 Reconfigurable FPGA with TTL and Differential I/O 4357 PMC-DX502 Reconfigurable Differential I/O Module 4457 PMC730, APC730, AcPC730 Multifunction Module 4471 XMC730 Multi-function I/O module with front I/O 4473 XMC730CC Multi-function I/O module with rear I/O Conduction-cooled 464d PMC408 32-Channel Digital Input/Output Module 4850 PMC220-16 12-Bit Analog Output Module 4a42 PMC483, APC483, AcPC483 Counter Timer Module 4a50 PMC484, APC484, AcPC484 Counter Timer Module 4a56 PMC230 16-Bit Analog Output Module 4b47 PMC330, APC330, AcPC330 Analog Input Module, 16-bit A/D 4c40 PMC-LX40 Reconfigurable Virtex-4 FPGA with plug-in I/O 4c60 PMC-LX60 Reconfigurable Virtex-4 FPGA with plug-in I/O 4d4d PMC341, APC341, AcPC341 Analog Input Module, Simultaneous Sample & Hold 4d4e PMC482, APC482, AcPC482 Counter Timer Board 524d PMC-DX2001 Reconfigurable FPGA with TTL I/O 5335 PMC-SX35 Reconfigurable Virtex-4 FPGA with plug-in I/O 5456 PMC470 48-Channel Digital Input/Output Module 5601 PMC-VLX85 Reconfigurable Virtex-5 FPGA with plug-in I/O 5602 PMC-VLX110 Reconfigurable Virtex-5 FPGA with plug-in I/O 5603 PMC-VSX95 Reconfigurable Virtex-5 FPGA with plug-in I/O 5604 PMC-VLX155 Reconfigurable Virtex-5 FPGA with plug-in I/O 5605 PMC-VFX70 Reconfigurable Virtex-5 FPGA with plug-in I/O 5606 PMC-VLX155-1M Reconfigurable Virtex-5 FPGA with plug-in I/O 5701 PMC-SLX150: Reconfigurable Spartan-6 FPGA with plug-in I/O 5702 PMC-SLX150-1M: Reconfigurable Spartan-6 FPGA with plug-in I/O 5801 XMC-VLX85 Reconfigurable Virtex-5 FPGA with plug-in I/O 5802 XMC-VLX110 Reconfigurable Virtex-5 FPGA with plug-in I/O 5803 XMC-VSX95 Reconfigurable Virtex-5 FPGA with plug-in I/O 5804 XMC-VLX155 Reconfigurable Virtex-5 FPGA with plug-in I/O 5807 XMC-SLX150: Reconfigurable Spartan-6 FPGA with plug-in I/O 5808 XMC-SLX150-1M: Reconfigurable Spartan-6 FPGA with plug-in I/O 5901 APCe8650 PCI Express IndustryPack Carrier Card 6301 XMC Module with user-configurable Virtex-6 FPGA, 240k logic cells, SFP front I/O 6302 XMC Module with user-configurable Virtex-6 FPGA, 365k logic cells, SFP front I/O 6303 XMC Module with user-configurable Virtex-6 FPGA, 240k logic cells, no front I/O 6304 XMC Module with user-configurable Virtex-6 FPGA, 365k logic cells, no front I/O 7000 XMC-7K325F: User-configurable Kintex-7 FPGA, 325k logic cells plus SFP front I/O 7001 XMC-7K410F: User-configurable Kintex-7 FPGA, 410k logic cells plus SFP front I/O 7002 XMC-7K325AX: User-Configurable Kintex-7 FPGA, 325k logic cells with AXM Plug-In I/O 7003 XMC-7K410AX: User-Configurable Kintex-7 FPGA, 410k logic cells with AXM Plug-In I/O 7004 XMC-7K325CC: User-Configurable Kintex-7 FPGA, 325k logic cells, conduction-cooled 7005 XMC-7K410CC: User-Configurable Kintex-7 FPGA, 410k logic cells, conduction-cooled 7006 XMC-7A200: User-Configurable Artix-7 FPGA, 200k logic cells with Plug-In I/O 7007 XMC-7A200CC: User-Configurable Conduction-Cooled Artix-7 FPGA, with 200k logic cells 7011 AP440-1: 32-Channel Isolated Digital Input Module 7012 AP440-2: 32-Channel Isolated Digital Input Module 7013 AP440-3: 32-Channel Isolated Digital Input Module 7014 AP445: 32-Channel Isolated Digital Output Module 7015 AP471 48-Channel TTL Level Digital Input/Output Module 7016 AP470 48-Channel TTL Level Digital Input/Output Module 7017 AP323 16-bit, 20 or 40 Channel Analog Input Module 7018 AP408: 32-Channel Digital I/O Module 7019 AP341 14-bit, 16-Channel Simultaneous Conversion Analog Input Module 701a AP220-16 12-Bit, 16-Channel Analog Output Module 701b AP231-16 16-Bit, 16-Channel Analog Output Module 701c AP225 12-Bit, 16-Channel Analog Output Module with Waveform Memory 701d AP235 16-Bit, 16-Channel Analog Output Module with Waveform Memory 7021 APA7-201 Reconfigurable Artix-7 FPGA module 48 TTL channels 7022 APA7-202 Reconfigurable Artix-7 FPGA module 24 RS485 channels 7023 APA7-203 Reconfigurable Artix-7 FPGA module 24 TTL & 12 RS485 channels 7024 APA7-204 Reconfigurable Artix-7 FPGA module 24 LVDS channels 7027 AP418 16-Channel High Voltage Digital Input/Output Module 7029 AP342 14-bit, 12-Channel Isolated Simultaneous Conversion Analog Input Module 702a AP226 12-Bit, 8-Channel Isolated Analog Output Module 702b AP236 16-Bit, 8-Channel Isolated Analog Output Module 702c AP560A Module 4 Independent isolated CAN bus channels 7031 AP441-1: 32-Channel Isolated Digital Input Module 7032 AP441-2: 32-Channel Isolated Digital Input Module 7033 AP441-3: 32-Channel Isolated Digital Input Module 7042 AP482 Counter Timer Module with TTL Level Input/Output 7043 AP483 Counter Timer Module with TTL Level and RS422 Input/Output 7044 AP484 Counter Timer Module with RS422 Input/Output 7051 APA7-501 Reconfigurable Artix-7 52,160 Cell FPGA module 48 TTL channels 7052 APA7-502 Reconfigurable Artix-7 52,160 Cell FPGA module 24 RS485 channels 7053 APA7-503 Reconfigurable Artix-7 52,160 Cell FPGA module 24 TTL & 12 RS485 channels 7054 APA7-504 Reconfigurable Artix-7 52,160 Cell FPGA module 24 LVDS channels 7072 AP731 Multi-function I/O Module with 12-bit DAC 7073 AP730 Multi-function I/O Module 16 Digital I/O 8 Differential Analog In 4 Analog Out 7731 APZU-301 Zynq Ultrascale+ Module 28 TTL channels 7733 APZU-303 Zynq Ultrascale+ Module 20 TTL & 3 RS485/422 channels 7734 APZU-304 Zynq Ultrascale+ Module 14 LVDS channels 16da Advantech Co., Ltd. 0011 INES GPIB-PCI 16df PIKA Technologies Inc. # nee Geotest-MTS 16e2 Marvin Test Solutions 1034 GX1034 Certification and Verification Module PXI Board 1100 GX1100 Arbitrary Waveform and Function Generator PXI Board 1120 GX1120 Arbitrary Waveform and Function Generator PXI Board 1164 GX1164 Multi-Channel Programmable Resistor PXI Board 1632 GX1632e 32-Channel Arbitrary Analog Output PXIe Board 1648 GX1648 64-Channel Analog Output PXI Board 1649 GX1649 64-Channel Arbitrary Analog Output PXI Board 1838 GX1838 Precision DC Source PXI Board 2065 GX2065 Digital Multimeter PXI Board 2200 GTX2200 High Resolution Universal Time Interval Counter PXI Board 2201 GC2200 High Resolution Universal Time Interval Counter PCI Board 3104 GX3104 4-Channel 20V, 250mA Per Channel SMU PXI Board 3108 GX3108 4-Channel Source Measure Unit PXI Board 3116 GX3116e 16-Channel DUT Power Supply PXIe Board 3348 GX3348 Multi-Channel DC Source and Switch Matrix Board 3500 GX3500 Digital I/O FLEX FPGA Board 3700 GX3700e Digital I/O FLEX FPGA PXIe Board 3701 GX3700 Digital I/O FLEX FPGA PXI Board 3800 GX3800e Digital I/O FLEX FPGA PXIe Board 4943 GX4943 HellFire/Longbow Serial Communication Board 5050 GC5050 Dynamic Digital I/O with Algorithmic Sequencer PCI Board 5055 GX5055 Dynamic Digital I/O with Pin Electronics PXI Board 5083 GX5083 Dynamic Digital I/O with Algorithmic Sequencer PXI Board 5105 GX5105 High-Speed Digital I/O Timing (Master) Module PXI Board 5106 GX5106 High-Speed Digital I/O Cycle Timing (Master) Module PXI Board 5151 GX5150/1 High Speed Digital I/O (50/100MHz) PXI Board 5152 GX5152/3 DSR High Speed Digital Stimulus/Response PXI Board 5250 GX5250 Digital I/O Streaming PXI Board 5280 GX5280 High-Speed Digital I/O PXI Board 5290 GX5290 High-Speed Dynamic Digital I/O PXI Board 5294 GX5294 High-Speed Digital I/O PXI Board 5295 GX5295 Digital I/O with Pin Electronics and PMU PXI Board 5296 GX5296 Digital I/O with Pin Electronics and PMU PXI Board 5550 GX5050 Dynamic Digital I/O with Algorithmic Sequencer PXI Board 5641 GX5641/2 Bi-directional Differential-TTL I/O PXI Board 5731 GX5731 Digital I/O with 128 TTL Channels and 3x32 Customizable Channels PXI Board 5732 GX5732 224-Channel Static Digital I/O PXI Board 5733 GX5733 Digital I/O with 96 TTL Channels and 32 Customizable Channels PXI Board 5960 GX5961/4 Digital I/O Timing/Sync with Pin Electronics and PMU PXI Board 6021 GX6021 20-Channel RF Multiplexer PXI Board 6062 GX6062 60-Channel RF Multiplexer PXI Board 6115 GX6115 15-Channel High Current SPDT Form-C Relay PXI Board 6125 GX6125 25-Channel High-Density SPDT Form-C Relay PXI Board 6138 GX6138 38-Channel SPST Form-A Relay PXI Board 6188 GX6188 104-Channel 8x8 Multiplexer/Matrix PXI Board 6192 GX6192 16, 16x2 High Frequency, High Density Multiplexer PXI Board 6196 GX6196 96-Channel DPST Form-A Relay Carrier PXI Board 6256 GX6256 16, 16x2 Low Frequency, High Density Multiplexer PXI Board 6264 GX6264 128-Channel Scanner/Multiplexer Board 6315 GX6315 45-Channel High Current SPDT Form-C Relay Board 6325 GX6325 75-Channel High-Density SPDT Form-C Relay Board 6338 GX6338 114-Channel SPST Form-A Relay PXI Board 6377 GX6377 Multifunction Switching PXI Board 6384 GX6384 Configurable High-Density Switch Matrix PXI Board 6616 GX6616 6x2:16 Switch Matrix PXI Board 6864 GX6864 Video Switching PXI Board 7400 GX7400 Dual-Output Programmable Power Supply PXI Board 7404 GX7404 Prototyping and Power Interface PXI Board 7777 GX7777 Generic Interface PXI Board 7779 GX7779 Backplane Tester PXI Board 16e3 European Space Agency 1e0f LEON2FT Processor 16e5 Intellon Corp. 6000 INT6000 Ethernet-to-Powerline Bridge [HomePlug AV] 6300 INT6300 Ethernet-to-Powerline Bridge [HomePlug AV] 16ec U.S. Robotics 00ed USR997900 0116 USR997902 10/100/1000 Mbps PCI Network Card 2f00 USR5660A (USR265660A, USR5660A-BP) 56K PCI Faxmodem 3685 Wireless Access PCI Adapter Model 022415 4320 USR997904 10/100/1000 64-bit NIC (Marvell Yukon) ab06 USR997901A 10/100 Cardbus NIC 16ed Sycron N. V. 1001 UMIO communication card 16f2 ETAS GmbH 0200 I/O board 16f2 0010 ES53xx I/O board 16f3 Jetway Information Co., Ltd. 16f4 Vweb Corp 8000 VW2010 16f6 VideoTele.com, Inc. 1702 Internet Machines Corporation (IMC) 1705 Digital First, Inc. 170b NetOctave 0100 NSP2000-SSL crypto accelerator 170c YottaYotta Inc. 1719 EZChip Technologies 1000 NPA Access Network Processor Family # Seems to be a 2nd ID for Vitesse Semiconductor 1725 Vitesse Semiconductor 7174 VSC7174 PCI/PCI-X Serial ATA Host Bus Controller 172a Accelerated Encryption 13c8 AEP SureWare Runner 1000V3 # nee Fujitsu Siemens Computers GmbH 1734 Fujitsu Technology Solutions 9602 RS780/RS880 PCI to PCI bridge (int gfx) 1735 Aten International Co. Ltd. 1737 Linksys 0029 WPG54G ver. 4 PCI Card 1032 Gigabit Network Adapter 1737 0015 EG1032 v2 Instant Gigabit Network Adapter 1737 0024 EG1032 v3 Instant Gigabit Network Adapter 1064 Gigabit Network Adapter 1737 0016 EG1064 v2 Instant Gigabit Network Adapter ab08 21x4x DEC-Tulip compatible 10/100 Ethernet ab09 21x4x DEC-Tulip compatible 10/100 Ethernet 173b Altima (nee Broadcom) 0001 AC1002 PCI Gigabit Ethernet controller 03e8 AC1000 Gigabit Ethernet 03e9 AC1001 Gigabit Ethernet 03ea AC9100 Gigabit Ethernet 173b 0001 AC1002 03eb AC1003 Gigabit Ethernet 1743 Peppercon AG 8139 ROL/F-100 Fast Ethernet Adapter with ROL 1745 ViXS Systems, Inc. 2020 XCode II Series 2100 XCode 2100 Series 1043 48c9 My Cinema PE6200 Analoog 1749 RLX Technologies 174b PC Partner Limited / Sapphire Technology 174d WellX Telecom SA 175c AudioScience Inc 175e Sanera Systems, Inc. 1760 TEDIA spol. s r. o. 0101 PCD-7004 Digital Bi-Directional Ports PCI Card 0102 PCD-7104 Digital Input & Output PCI Card 0121 PCT-7303A PC card with IRC counters 0122 PCT-7408A PC card with counters and timers 0123 PCT-7424 PCI card with standard counters 0141 PCA7208AL - Analog Inputs/Outputs 0142 PCA7208AS - Analog inputs/Outputs 0143 PCA7408AL - Analog Inputs/Outputs 0144 PCA7408AS - Analog Inputs/Outputs 0145 PCA-7228AL Multifunction PCI IO card 0146 PCA-7228AS Multifunction PCI IO card 0147 PCA7428AL Multifunction PCI IO card 0148 PCA7428AS Multifunction PCI IO card 0149 PCA7228EL Multifunction PCI IO card with isolated analog inputs 0150 PCA7428EL Multifunction PCI IO card with isolated analog inputs 0151 PCA7628AL - PCI card with analog inputs, counters and DIO 0152 PCA7628AS PCI card with analog inputs, outputs, counters and DIO 0161 PCA7288A PCI card with analog outputs, counters and DIO 0180 PCI1052 Communication card for MicroUnit network 0214 PCT-7424C (F0) PC card with standard counters 0215 PCT-7424C (F1) PC card with standard counters 0216 PCT-7424E (F0) PC card with standard counters 0217 PCT-7424E (F1) PC card with standard counters 0240 PCA7428CL_F0 - analog Inputs 0241 PCA7428CL_F1 - analog Inputs 0242 PCA7428CS_F0 - Analog Inputs/Outputs non isolated 0243 PCA7428CS_F1 - Analog Inputs/Outputs non isolated 0244 PCA7428CE_F0 - Analog Inputs isolated 0245 PCA7428CE_F1 - Analog Inputs isolated 0303 PCD-7006C Digital Input & Output PCI Card 0800 PCD8006 - PCIe digital Inputs/Outputs 0840 PCA-8428 General-purpose multifunctional PCIe card with 8 analog inputs and 2 analog outputs 0841 PCA-8429 General-purpose multifunctional PCIe card with 8 analog inputs 0842 PCA-8438 General-purpose multifunctional PCIe card with 16 analog inputs and 2 analog outputs 0843 PCA-8439 General-purpose multifunctional PCIe card with 16 analog inputs ff00 CTU CAN FD PCIe Card 1761 Pickering Interfaces Ltd 1771 InnoVISION Multimedia Ltd. 1775 General Electric 177d Cavium, Inc. 0001 Nitrox XL N1 0003 Nitrox XL N1 Lite 0004 Octeon (and older) FIPS 0005 Octeon CN38XX Network Processor Pass 3.x 0006 RoHS 0010 CN15XX/CN16XX [Nitrox PX] 0011 CNN35XX [Nitrox III] 0012 CNN55XX [Nitrox V] 0020 Octeon CN31XX Network Processor 0030 Octeon CN30XX Network Processor 0040 Octeon CN58XX Network Processor 0050 Octeon CN57XX Network Processor (CN54XX/CN55XX/CN56XX) 0070 Octeon CN50XX Network Processor 0080 Octeon CN52XX Network Processor 0090 Octeon II CN63XX Network Processor 0091 Octeon II CN68XX Network Processor 0092 Octeon II CN65XX Network Processor 0093 Octeon II CN61XX Network Processor 0094 Octeon Fusion CNF71XX Cell processor 0095 Octeon III CN78XX Network Processor 0096 Octeon III CN70XX Network Processor 9700 Octeon III CN73XX Network Processor 9702 CN23XX [LiquidIO II] Intelligent Adapter 177d 0003 CN2350 [LiquidIO II] 2-port 10GbE Intelligent adapter # This was changed during the production phase to 10GbE adapter. 177d 0004 CN2350 [LiquidIO II] 2-port 10GbE Intelligent adapter 177d 0005 CN2360 [LiquidIO II] 2-port 10GbE Intelligent adapter 177d 0006 CN2360 [LiquidIO II] 2-port 25GbE Intelligent adapter 177d 0007 CN2350 [LiquidIO II] 2-port 25GbE Intelligent adapter 177d 0008 CN2350 [LiquidIO II] 2-port 10GbE SFP+ Intelligent adapter 177d 0009 CN2360 [LiquidIO II] 2-port 10GbE SFP+ Intelligent adapter 177d 000a CN2350 [LiquidIO II] 2-port 10GBASE-T Intelligent adapter 177d 000b CN2360 [LiquidIO II] 2-port 10GBASE-T Intelligent adapter 9703 CN23XX [LiquidIO II] NVMe Controller 9712 CN23XX [LiquidIO II] SRIOV Virtual Function 177d 0003 CN2350 [LiquidIO II] 2-port 10GbE SRIOV Virtual Function 177d 0004 CN2350 [LiquidIO II] 2-port 10GbE SRIOV Virtual Function 177d 0005 CN2360 [LiquidIO II] 2-port 10GbE SRIOV Virtual Function 177d 0006 CN2360 [LiquidIO II] 2-port 25GbE SRIOV Virtual Function 177d 0007 CN2350 [LiquidIO II] 2-port 25GbE SRIOV Virtual Function 9713 CN23XX [LiquidIO II] NVMe SRIOV Virtual Function 9800 Octeon Fusion CNF75XX Processor a001 ThunderX MRML(Master RML Bridge to RSL devices) a002 THUNDERX PCC Bridge 177d a102 CN88XX PCC Bridge a008 THUNDERX SMMU 177d a108 CN88XX SMMU a009 THUNDERX Generic Interrupt Controller a00a THUNDERX GPIO Controller a00b THUNDERX MPI / SPI Controller a00c THUNDERX MIO-PTP Controller a00d THUNDERX MIX Network Controller a00e THUNDERX Reset Controller a00f THUNDERX UART Controller a010 THUNDERX eMMC/SD Controller a011 THUNDERX MIO-BOOT Controller a012 THUNDERX TWSI / I2C Controller a013 THUNDERX CCPI (Multi-node connect) a014 THUNDERX Voltage Regulator Module a015 THUNDERX PCIe Switch Logic Interface a016 THUNDERX Key Memory a017 THUNDERX GTI (Global System Timers) a018 THUNDERX Random Number Generator a019 THUNDERX DFA a01a THUNDERX Zip Coprocessor a01b THUNDERX xHCI USB Controller a01c THUNDERX AHCI SATA Controller 177d a11c CN88XX AHCI SATA Controller a01d THUNDERX RAID Coprocessor a01e THUNDERX Network Interface Controller a01f THUNDERX Traffic Network Switch a020 THUNDERX PEM (PCI Express Interface) a021 THUNDERX L2C (Level-2 Cache Controller) a022 THUNDERX LMC (DRAM Controller) a023 THUNDERX OCLA (On-Chip Logic Analyzer) a024 THUNDERX OSM a025 THUNDERX GSER (General Serializer/Deserializer) a026 THUNDERX BGX (Common Ethernet Interface) a027 THUNDERX IOBN a029 THUNDERX NCSI (Network Controller Sideband Interface) a02a ThunderX SGPIO (Serial GPIO controller for SATA disk lights) a02b THUNDERX SMI / MDIO Controller a02c THUNDERX DAP (Debug Access Port) a02d THUNDERX PCIERC (PCIe Root Complex) a02e ThunderX L2C-TAD (Level 2 cache tag and data) a02f THUNDERX L2C-CBC a030 THUNDERX L2C-MCI a031 THUNDERX MIO-FUS (Fuse Access Controller) a032 THUNDERX FUSF (Fuse Controller) a033 THUNDERX Random Number Generator virtual function a034 THUNDERX Network Interface Controller virtual function a035 THUNDERX Parallel Bus a036 ThunderX RAD (RAID acceleration engine) virtual function a037 THUNDERX ZIP virtual function a040 THUNDERX CPT Cryptographic Accelerator # MAC found on OcteonTx2 series of silicons a059 Octeon TX2 CGX (MAC) # MAC found on Octeon 10 series of silicons a060 Octeon 10 RPM (MAC) # Octeon Tx2 Loopback Interface block a061 Octeon Tx2 Loopback Interface (LBK) # Octeon Tx2 Resource Virtualization Unit Physical Function a063 Octeon Tx2 RVU Physical Function # Octeon Tx2 Resource Virtualization Unit Virtual Function a064 Octeon Tx2 RVU Virtual Function # Octeon Tx2 Resource Virtualization Unit Admin Function a065 Octeon Tx2 RVU Admin Function # PTP Timestamping unit on Octeon 10 silicon series a09e Octeon 10 PTP controller # Cryptographic Accelerator found on Octeon 10 series of silicons a0f2 Octeon 10 CPT Cryptographic Accelerator, Physical function a0f3 Octeon 10 CPT Cryptographic Accelerator, Virtual function # Octeon Tx2 System DPI Interface (SDP) Physical Function a0f6 Octeon Tx2 SDP Physical Function # Octeon Tx2 System DPI Interface (SDP) Virtual Function a0f7 Octeon Tx2 SDP Virtual Function a0f8 Octeon Tx2 Loopback Interface Virtual Function (LBKVF) # Cryptographic Accelerator found on OcteonTx2 series of silicons a0fd Octeon Tx2 CPT Cryptographic Accelerator, Physical function # Cryptographic Accelerator found on OcteonTx2 series of silicons a0fe Octeon Tx2 CPT Cryptographic Accelerator, Virtual function a100 THUNDERX CN88XX 48 core SoC a200 OCTEON TX CN81XX/CN80XX a300 OCTEON TX CN83XX af00 CN99xx [ThunderX2] Integrated PCI Host bridge af84 CN99xx [ThunderX2] Integrated PCI Express RP Bridge 1787 Hightech Information System Ltd. 1789 Ennyah Technologies Corp. # also used by Struck Innovative Systeme for joint developments 1796 Research Centre Juelich 0001 SIS1100 [Gigabit link] 0002 HOTlink 0003 Counter Timer 0004 CAMAC Controller 0005 PROFIBUS 0006 AMCC HOTlink 0007 LVD Cable Bus 0008 100MHz, 64bit Sequence Generator based on VirtexII 0009 double 14bit-ADC 000a SIS1100 with N110 TDC 000b double 14bit-ADC with memory 000d Synchronisation Slave 000e SIS1100-eCMC 000f TDC (GPX) 0010 PCIe Counter Timer 0011 SIS1100-e single link 0012 SIS1100-e quad link 0013 4x2.5GHz SFP to 4 lane PCIe bridge 0014 SIS1100 with GPX piggy back 0015 SIS8100 [Gigabit link, MicroTCA] 0016 SIS1100e with 4 lanes 0017 Quad 14bit, 50MHz ADC with 2.5GHz SFP 0018 SIS8300 4-lane PCI Express, Micro TCA for Physics ADC 0019 SIS SIS8300-Lx MTCA.4 Digitizer 001a 100MHz, 64bit Sequence Generator based on VirtexII 001c Quad 16bit, 150MHz ADC with 2.5GHz SFP 0030 100MHz, 64bit Sequence Generator based on Spartan6 0031 200MHz 64bit Sequence Generator based on Spartan7 # nee Techwell, Inc. 1797 Intersil Techwell 5864 TW5864 multimedia video controller 6801 TW6802 multimedia video card 6802 TW6802 multimedia other device 6810 TW6816 multimedia video controller 6811 TW6816 multimedia video controller 6812 TW6816 multimedia video controller 6813 TW6816 multimedia video controller # port 5 of 8 6814 TW6816 multimedia video controller # port 6 of 8 6815 TW6816 multimedia video controller # port 7 of 8 6816 TW6816 multimedia video controller # channel 8 of 8 6817 TW6816 multimedia video controller # Example MuniPCI-E card: http://www.commell.com.tw/product/surveillance/MPX-6864.htm 6864 TW6864 multimedia video controller 1799 Belkin 6001 F5D6001 Wireless PCI Card [Realtek RTL8180] 6020 F5D6020 v3000 Wireless PCMCIA Card [Realtek RTL8180] 6060 F5D6060 Wireless PDA Card 700f F5D7000 v7000 Wireless G Desktop Card [Realtek RTL8185] 701f F5D7010 v7000 Wireless G Notebook Card [Realtek RTL8185] 179a id Quantique 0001 Quantis PCI 16Mbps 179c Data Patterns 0557 DP-PCI-557 [PCI 1553B] 0566 DP-PCI-566 [Intelligent PCI 1553B] 1152 DP-cPCI-1152 (8-channel Isolated ADC Module) 5031 DP-CPCI-5031-Synchro Module # cPCI Carrier for Mezzanine Modules 5112 DP-cPCI-5112 [MM-Carrier] 5121 DP-CPCI-5121-IP Carrier 5211 DP-CPCI-5211-IP Carrier 5679 AGE Display Module 17a0 Genesys Logic, Inc 7163 GL9701 PCIe to PCI Bridge 8083 GL880 USB 1.1 UHCI controller 8084 GL880 USB 2.0 EHCI controller 9750 GL9750 SD Host Controller 9755 GL9755 SD Host Controller e763 GL9763E eMMC Controller 17aa Lenovo 0003 LENSE20256GMSP34MEAT2TA 0004 LENSE20512GMSP34MEAT2TA # 250GB nvme ssd from lenovo, can be found in Thinkpad x380 yoga 0005 LENSE30256GMSP34MEAT3TA 0006 LENSE30512GMSP34MEAT3TA 3181 ThinkCentre M75n IoT 402b Intel 82599ES 10Gb 2-port Server Adapter X520-2 9602 RS780/RS880 PCI to PCI bridge (int gfx) 17ab Phillips Components 17af Hightech Information System Ltd. 17b3 Hawking Technologies ab08 PN672TX 10/100 Ethernet 17b4 Indra Networks, Inc. 0011 WebEnhance 100 GZIP Compression Card 0012 WebEnhance 200 GZIP Compression Card 0015 WebEnhance 300 GZIP Compression Card 0016 StorCompress 300 GZIP Compression Card 0017 StorSecure 300 GZIP Compression and AES Encryption Card 17c0 Wistron Corp. 17c2 Newisys, Inc. 17c3 Protogate, Inc. # nee Airgo Networks, Inc. 17cb Qualcomm Technologies, Inc 0001 AGN100 802.11 a/b/g True MIMO Wireless Card 1385 5c00 WGM511 Pre-N 802.11g Wireless CardBus Adapter 1737 0045 WMP54GX v1 802.11g Wireless-G PCI Adapter with SRX 0002 AGN300 802.11 a/b/g True MIMO Wireless Card 1385 6d00 WPNT511 RangeMax 240 Mbps Wireless CardBus Adapter 1737 0054 WPC54GX4 v1 802.11g Wireless-G Notebook Adapter with SRX400 0104 APQ8096 PCIe Root Complex [Snapdragon 820] 0105 MSM8998 PCIe Root Complex 0106 SDM850 PCIe Root Complex [Snapdragon 850] 0107 SDM850 PCIe Root Port [Snapdragon 850] 0108 SM8150 PCIe Root Complex 0109 SA8195P PCIe Root Complex 010b SM8250 PCIe Root Complex [Snapdragon 865/870 5G] 010c SM8350 PCIe Root Complex [Snapdragon 888] 010e SC8280XP PCI Express Root Port 0110 SM8475 PCIe Root Complex [Snapdragon 8+ Gen 1] 0300 MDM9x35 LTE Modem [Snapdragon X7] 0301 MDM9x45 LTE Modem [Snapdragon X12] 0302 MDM9x55 LTE Modem [Snapdragon X16] 0304 SDX24 [Snapdragon X24 4G] 0306 SDX55 [Snapdragon X55 5G] 0400 Datacenter Technologies QDF2432 PCI Express Root Port 0401 Datacenter Technologies QDF2400 PCI Express Root Port 1000 QCS405 PCIe Root Complex 1101 QCA6390 Wireless Network Adapter 1103 QCNFA765 Wireless Network Adapter 1104 QCN6024/9024/9074 Wireless Network Adapter 1107 WCN785x Wi-Fi 7(802.11be) 320MHz 2x2 [FastConnect 7800] 105b e0f7 High Band Simultaneous Wireless Network Adapter 1108 IPQ95xx/97xx PCIe Root Port 1109 QCN62xx/92xx Wireless Network Adapter 17cc NetChip Technology, Inc 2280 NET2280 PCI to USB 2.0 Hi-Speed Peripheral Controller 2282 NET2282 PCI to USB 2.0 Hi-Speed Peripheral Controller 17cd Cadence Design Systems, Inc. 17cf Z-Com, Inc. 17d3 Areca Technology Corp. 1110 ARC-1110 4-Port PCI-X to SATA RAID Controller 1120 ARC-1120 8-Port PCI-X to SATA RAID Controller 1130 ARC-1130 12-Port PCI-X to SATA RAID Controller 1160 ARC-1160 16-Port PCI-X to SATA RAID Controller 1170 ARC-1170 24-Port PCI-X to SATA RAID Controller 1201 ARC-1200 2-Port PCI-Express to SATA II RAID Controller 1203 ARC-1203 2/4/8 Port PCIe 2.0 to SATA 6Gb RAID Controller 1210 ARC-1210 4-Port PCI-Express to SATA RAID Controller 1214 ARC-12x4 PCIe 2.0 to SAS/SATA 6Gb RAID Controller 17d3 1214 ARC-1214 4-Port PCIe 2.0 to SAS/SATA 6Gb RAID Controller 17d3 1224 ARC-1224 8-Port PCIe 2.0 to SAS/SATA 6Gb RAID Controller 17d3 1264 ARC-1264 12/16 Port PCIe 2.0 to SATA 6Gb RAID Controller 17d3 1284 ARC-1284 24 Port PCIe 2.0 to SATA 6Gb RAID Controller 1220 ARC-1220 8-Port PCI-Express to SATA RAID Controller 1222 ARC-1222 8-Port PCI-Express to SAS/SATA II RAID Controller 1230 ARC-1230 12-Port PCI-Express to SATA RAID Controller 1260 ARC-1260 16-Port PCI-Express to SATA RAID Controller 1280 ARC-1280/1280ML 24-Port PCI-Express to SATA II RAID Controller 17d3 1221 ARC-1221 8-Port PCI-Express to SATA RAID Controller 1300 ARC-1300ix-16 16-Port PCI-Express to SAS Non-RAID Host Adapter 1320 ARC-1320 8/16 Port PCIe 2.0 to SAS/SATA 6Gb Non-RAID Host Adapter 1330 ARC-1330 16 Port PCIe 3.0 to SAS/SATA 12Gb Non-RAID Host Adapter 1680 ARC-1680 series PCIe to SAS/SATA 3Gb RAID Controller 17d3 1212 ARC-1212 4-Port PCIe to SAS/SATA II RAID Controller 17d3 1222 ARC-1222 8-Port PCIe to SAS/SATA 3Gb RAID Controller 17d3 1680 ARC-1680 8/12/16/24 Port PCIe to SAS/SATA 3Gb RAID Controller 1880 ARC-188x series PCIe 2.0/3.0 to SAS/SATA 6/12Gb RAID Controller 17d3 1213 ARC-1213 4-Port PCIe 2.0 to SAS/SATA 6Gb RAID Controller 17d3 1215 ARC-1215 4-Port PCIe 3.0 to SAS/SATA 6Gb RAID Controller 17d3 1216 ARC-1216 4-Port PCIe 3.0 to SAS/SATA 12Gb RAID Controller 17d3 1223 ARC-1223 8-Port PCIe 2.0 to SAS/SATA 6Gb RAID Controller 17d3 1225 ARC-1225 8-Port PCIe 3.0 to SAS/SATA 6Gb RAID Controller 17d3 1226 ARC-1226 8-Port PCIe 3.0 to SAS/SATA 12Gb RAID Controller 17d3 1880 ARC-1880 8/12/16/24 Port PCIe 2.0 to SAS/SATA 6Gb RAID Controller 17d3 1882 ARC-1882 8/12/16/24 Port PCIe 3.0 to SAS/SATA 6Gb RAID Controller 17d3 1883 ARC-1883 8/12/16/24 Port PCIe 3.0 to SAS/SATA 12Gb RAID Controller 1884 ARC-1884 series PCIe 3.0 to SAS/SATA 12/6Gb RAID Controller 1886 ARC-1886 series PCIe 4.0 to NVMe/SAS/SATA 16/12/6Gb RAID Controller 17d3 1686 ARC-1686 PCIe 4.0 to NVMe/SAS/SATA 16/12/6Gb RAID Controller 17d3 1886 ARC-1886 PCIe 4.0 to NVMe/SAS/SATA 16/12/6Gb RAID Controller 188a ARC-1886 series PCIe 4.0 to NVMe/SAS/SATA 16/12/6Gb RAID Controller 17d3 1217 ARC-1217 4-Port PCIe 4.0 to SAS/SATA 12/6Gb RAID Controller 17d3 1227 ARC-1227 8-Port PCIe 4.0 to SAS/SATA 12/6Gb RAID Controller 17d3 1686 ARC-1686 PCIe 4.0 to NVMe/SAS/SATA 16/12/6Gb RAID Controller 17d3 1688 ARC-1688 PCIe 4.0 to NVMe/SAS/SATA 16/12/6Gb RAID Controller 17d3 1886 ARC-1886 PCIe 4.0 to NVMe/SAS/SATA 16/12/6Gb RAID Controller # nee Neterion Inc., previously S2io Inc. 17d5 Exar Corp. 5731 Xframe 10-Gigabit Ethernet PCI-X 5732 Xframe II 10-Gigabit Ethernet PCI-X 2.0 5831 Xframe 10-Gigabit Ethernet PCI-X 103c 12d5 PCI-X 133MHz 10GbE SR Fiber 10a9 8020 Single Port 10-Gigabit Ethernet (PCI-X, Fiber) 10a9 8024 Single Port 10-Gigabit Ethernet (PCI-X, Fiber) 5832 Xframe II 10-Gigabit Ethernet PCI-X 2.0 103c 1337 PCI-X 266MHz 10GigE SR [AD385A] 10a9 8021 Single Port 10-Gigabit Ethernet II (PCI-X, Fiber) 17d5 6020 Xframe II SR 17d5 6021 Xframe II SR, Low Profile 17d5 6022 Xframe E SR 17d5 6420 Xframe II LR 17d5 6421 Xframe II LR, Low Profile 17d5 6422 Xframe E LR 17d5 6c20 Xframe II CX4 17d5 6c21 Xframe II CX4, Low Profile 17d5 6c22 Xframe E CX4 5833 X3100 Series 10 Gigabit Ethernet PCIe 17d5 6030 X3110 Single Port SR 17d5 6031 X3120 Dual Port SR 17d5 6430 X3110 Single Port LR 17d5 6431 X3120 Dual Port LR 17d5 7030 X3110 Single Port LRM 17d5 7031 X3120 Dual Port LRM 17d5 7430 X3110 Single Port 10GBase-T 17d5 7431 X3120 Dual Port 10GBase-T 17d5 7830 X3110 Single Port 10GBase-CR 17d5 7831 X3120 Dual Port 10GBase-CR 17db Cray Inc 0101 XT Series [Seastar] 3D Toroidal Router 0501 Cassini 1 [Slingshot 200Gb] 17de KWorld Computer Co. Ltd. 17df Dini Group 1864 Virtex4 PCI Board w/ QL5064 Bridge [DN7000K10PCI/DN8000K10PCI/DN8000K10PSX/NOTUS] 1865 Virtex4 ASIC Emulator [DN8000K10PCIe] 1866 Virtex4 ASIC Emulator Cable Connection [DN8000K10PCI] 1867 Virtex4 ASIC Emulator Cable Connection [DN8000K10PCIe] 1868 Virtex4 ASIC Emulator [DN8000K10PCIe-8] 1900 Virtex5 PCIe ASIC Emulator [DN9000K10PCIe8T/DN9002K10PCIe8T/DN9200K10PCIe8T/DN7006K10PCIe8T/DN7406K10PCIe8T] 1901 Virtex5 PCIe ASIC Emulator Large BARs [DN9000K10PCIe8T/DN9002K10PCIe8T/DN9200K10PCIe8T/DN7006K10PCIe8T/DN7406K10PCIe8T] 1902 Virtex5 PCIe ASIC Emulator Low Power [Interceptor] 1903 Spartan6 PCIe FPGA Accelerator Board [DNBFCS12PCIe] 1904 Virtex6 PCIe ASIC Emulation Board [DNDUALV6_PCIe4] 1905 Virtex6 PCIe ASIC Emulation Board [DNV6F6PCIe] 1906 Virtex6 PCIe ASIC Emulation Board [DN2076K10] 1907 Virtex6 PCIe ASIC Emulation Board [DNV6F2PCIe] 1908 Virtex6 PCIe ASIC Emulation Board Large BARs[DNV6F2PCIe] 1909 Kintex7 PCIe FPGA Accelerator Board [DNK7F5PCIe] 190a Virtex7 PCIe ASIC Emulation Board [DNV7F1A] 190b Stratix5 PCIe ASIC Emulation Board [DNS5GXF2] 190c Virtex7 PCIe ASIC Emulation Board [DNV7F2A] 190d Virtex7 PCIe ASIC Emulation Board [DNV7F4A] 190e Virtex7 PCIe ASIC Emulation Board [DNV7F2B] 190f KintexUS PCIe MainRef Design [DNPCIE_40G_KU_LL] 1910 VirtexUS ASIC Emulation Board [DNVUF4A] 1911 VirtexUS PCIe ASIC Emulation Board [DNVU_F2PCIe] 1912 KintexUS PCIe MainRef Design [DNPCIe_40G_KU_LL_QSFP] 1913 VirtexUS ASIC Emulation Board [DNVUF1A] 1914 VirtexUS ASIC Emulation Board [DNVUF2A] 1915 Arria10 PCIe MainRef Design [DNPCIe_80G_A10_LL] 1916 VirtexUS PCIe Accelerator Board [DNVUF2_HPC_PCIe] 1917 UltrascalePlus PCIe Accelerator Board [DNPCIe_400G_VU_LL] 1918 VirtexUS+ ASIC Emulation Board [DNVUPF4A] 1919 UltrascalePlus PCIe Accelerator Board [DNPCIe_400G_VUP_HBM_LL] 1a00 Virtex6 PCIe DMA Netlist Design 1a01 Virtex6 PCIe Darklite Design [DNPCIe_HXT_10G_LL] 1a02 Virtex7 PCIe DMA Netlist Design 1a03 Kintex7 PCIe Darklite Design [DNPCIe_K7_10G_LL] 1a05 Stratix5 PCIe Darklite Design [DNS5GX_F2] 1a06 VirtexUS PCIe DMA Netlist Design 1a07 KintexUS PCIe Darklite Design [DNPCIe_40G_KU_LL] 1a08 KintexUS PCIe Darklite Design [DNPCIe_40G_KU_LL_QSFP] 1a09 Arria10 PCIe Darklite Design [DNPCIe_80G_A10_LL] 1a0a VirtexUS PCIe Darklite Design [DNVUF2_HPC_PCIe] 1a0b UltrascalePlus PCIe Darklite Design [DNPCIe_400G_VU_LL] 1a0c KintexUS PCIe DRAM Packet Capture Design [DNPCIe_40G_KU_LL] 1a0d KintexUS PCIe DRAM Packet Capture Design [DNPCIe_40G_KU_LL_2QSFP] 1a0e UltrascalePlus PCIe Darklite Design [DNPCIe_400G_VUP_HBM_LL] 17e4 Sectra AB 0001 KK671 Cardbus encryption board 0002 KK672 Cardbus encryption board # nee Entropic Communications Inc. 17e6 MaxLinear 0010 EN2010 [c.Link] MoCA Network Controller (Coax, PCI interface) 0011 EN2010 [c.Link] MoCA Network Controller (Coax, MPEG interface) 0021 EN2210 [c.Link] MoCA Network Controller (Coax) 0025 EN2510 [c.Link] MoCA Network Controller (Coax, PCIe interface) 0027 EN2710 [c.Link] MoCA 2.0 Network Controller (Coax, PCIe interface) 3700 MoCA 2.0 Network Controller (Coax, PCIe interface) 3710 MoCA 2.5 Network Controller (Coax, PCIe interface) 17ee Connect Components Ltd 17f2 Albatron Corp. 17f3 RDC Semiconductor, Inc. 1010 R1010 IDE Controller 1011 R1011 IDE Controller 1012 R1012 IDE Controller 1031 PCI/PCI-X to PCI-E Bridge # Integrated in Vortex86EX, Vortex86EX2 SoC 1070 CAN Bus Controller # Integrated in Vortex86EX, Vortex86EX2 SoCs 1331 Motion Control Interface # Found in the Vortex86EX2 SoC 1930 Hybrid Function Control Register # IGP = on-chip integrated in the MSTI-PMX-1000 (Vortex86MX). 2010 RDC M2010 VGA-compatible graphics adapter 2012 M2012/R3308 VGA-compatible graphics adapter # IGP = on-chip integrated in the Vortex86DX3. Basic 2D accel. UMA architecture. 2015 RDC M2015 VGA-compatible graphics adapter 3010 R3010 HD Audio Controller # Found in the Vortex86EX SoC 6011 R6011 ISA Bridge # Found in the Vortex86EX2 SoC 6013 R6013 ISA Bridge 6020 R6020 North Bridge 6021 R6021 Host Bridge # Integrated in the Vortex86DX2 SoC 6022 R6022 Host Bridge # Found in the Vortex86DX3 SoC 6023 R6023 Host Bridge # Found in the Vortex86EX SoC 6025 R6025 Host Bridge # Found in the Vortex86EX2 SoC 6026 R6026 Host Bridge 6030 R6030 ISA Bridge 6031 R6031 ISA Bridge # Found in the Vortex86DX3 SoC 6035 R6035 ISA Bridge # Found in MSTI-PMX-1000 (Vortex86MX) SoC. 6036 R6036 ISA Bridge 6040 R6040 MAC Controller 6060 R6060 USB 1.1 Controller 6061 R6061 USB 2.0 Controller 17f7 Topdek Semiconductor Inc. 17f9 Gemtek Technology Co., Ltd 17fc IOGEAR, Inc. 17fe InProComm Inc. 2120 IPN 2120 802.11b 1737 0020 WMP11 v4 802.11b Wireless-B PCI Adapter 2220 IPN 2220 802.11g 1468 0305 T60N871 802.11g Mini PCI Wireless Adapter 1737 0029 WPC54G v4 802.11g Wireless-G Notebook Adapter 17ff Benq Corporation 1800 Qualcore Logic Inc. 1100 Nanospeed Trading Gateway 1803 ProdaSafe GmbH 1804 Ralink corp. (wrong ID) 3060 RT3060 Wireless 802.11n 1T/1R 1805 Euresys S.A. 0201 PICOLO Alert PCI 0202 PICOLO Diligent 0204 PICOLO Alert-RC 0205 PICOLO Alert PCIe 0206 PICOLO Diligent Plus PCIe 0207 PICOLO Alert-RC PCIe 0300 GRABLINK Expert 2 0301 GRABLINK Quickpack ColorScan 0302 GRABLINK Value cPCI 0303 GRABLINK Expert 2 cPCI 0305 GRABLINK Avenue 0306 GRABLINK Quickpack CFA 0307 GRABLINK Express 0308 GRABLINK Quickpack CFA PCIe 0309 GRABLINK Quickpack CFA PCIe (Recovery) 030a GRABLINK Full 030b GRABLINK Full (Recovery) 030c GRABLINK DualBase 030d GRABLINK DualBase (Recovery) 030e GRABLINK Base 030f GRABLINK Base (Recovery) 0310 GRABLINK Full XR 0311 GRABLINK Full XR (Recovery) 0401 DOMINO Iota 0402 DOMINO Alpha 2 0403 DOMINO Harmony 0404 DOMINO Melody 0407 DOMINO Symphony 0408 DOMINO Symphony PCIe 0814 Coaxlink Quad CXP-12 1809 Lumanate, Inc. 180c IEI Integration Corp 1813 Ambient Technologies Inc 4000 HaM controllerless modem 16be 0001 V9x HAM Data Fax Modem 4100 HaM plus Data Fax Modem 16be 0002 V9x HAM 1394 1814 Ralink corp. 0101 Wireless PCI Adapter RT2400 / RT2460 1043 0127 WiFi-b add-on Card 1371 0010 Minitar MNW2BPCI Wireless PCI Card 1462 6828 PC11B2 (MS-6828) Wireless 11b PCI Card 0200 RT2500 802.11g PCI [PC54G2] 0201 RT2500 Wireless 802.11bg 1043 130f WL-130g 1186 3c00 DWL-G650X Wireless 11g CardBus Adapter 1371 001e CWC-854 Wireless-G CardBus Adapter 1371 001f CWM-854 Wireless-G Mini PCI Adapter 1371 0020 CWP-854 Wireless-G PCI Adapter 1458 e381 GN-WMKG 802.11b/g Wireless CardBus Adapter 1458 e931 GN-WIKG 802.11b/g mini-PCI Adapter 1462 6833 Unknown 802.11g mini-PCI Adapter 1462 6835 Wireless 11G CardBus CB54G2 1737 0032 WMP54G v4.0 PCI Adapter 1799 700a F5D7000 v2000/v3000 Wireless G Desktop Card 1799 701a F5D7010 v2000/v3000 Wireless G Notebook Card 1814 2560 RT2500 Wireless 802.11bg 182d 9073 WL-115 Wireless Network PCI Adapter 185f 22a0 CN-WF513 Wireless Cardbus Adapter 18eb 5312 WL531P IEEE 802.11g PCI Card-EU 1948 3c00 C54RC v1 Wireless 11g CardBus Adapter 1948 3c01 C54Ri v1 Wireless 11g PCI Adapter 0300 Wireless Adapter Canyon CN-WF511 0301 RT2561/RT61 802.11g PCI 1186 3c08 AirPlus G DWL-G630 Wireless Cardbus Adapter (rev.E1) 1186 3c09 DWL-G510 Rev C 13d1 abe3 miniPCI Pluscom 802.11 a/b/g 1458 e933 GN-WI01GS 1458 e934 GN-WP01GS 1462 b833 MP54G5 (MS-6833B) 1737 0055 WMP54G v4.1 1799 700e F5D7000 v6000 Wireless G Desktop Card 1799 701e F5D7010 v6000 Wireless G Notebook Card 17f9 0012 AWLC3026T 802.11g Wireless CardBus Adapter 1814 2561 EW-7108PCg/EW-7128g 0302 RT2561/RT61 rev B 802.11g 1186 3a71 DWA-510 Wireless G Desktop Adapter 1186 3c08 AirPlus G DWL-G630 Wireless Cardbus Adapter (rev.E2) 1186 3c09 AirPlus G DWL-G510 Wireless Network Adapter (Rev.C) 1462 b834 PC54G3 Wireless 11g PCI Card 1948 3c23 C54RC v2 Wireless 11g CardBus Adapter 1948 3c24 C54Ri v2 Wireless 11g PCI Adapter 0401 RT2600 802.11 MIMO 1737 0052 WPC54GR v1 802.11g Wireless-G Notebook Adapter with RangeBooster 17f9 0011 WPCR-137G 802.11bg Wireless CardBus Adapter 17f9 0016 WPIR-119GH 802.11bg Wireless Desktop Adapter 0601 RT2800 802.11n PCI 1799 801c F5D8011 v3 802.11n N1 Wireless Notebook Card 187e 3412 NWD-310N 802.11n Wireless PCI Adapter 0681 RT2890 Wireless 802.11n PCIe 1458 e939 GN-WS30N-RH 802.11bgn Mini PCIe Card 0701 RT2760 Wireless 802.11n 1T/2R 1737 0074 WMP110 v2 802.11n RangePlus Wireless PCI Adapter 0781 RT2790 Wireless 802.11n 1T/2R PCIe 11ad 7600 HP WN7600R 1814 2790 RT2790 Wireless 802.11n 1T/2R PCIe 3060 RT3060 Wireless 802.11n 1T/1R 1186 3c04 DWA-525 Wireless N 150 Desktop Adapter (rev.A1) 3062 RT3062 Wireless 802.11n 2T/2R 3090 RT3090 Wireless 802.11n 1T/1R PCIe 13bd 1057 GN-WS32L-RH Half-size Mini PCIe Card 3091 RT3091 Wireless 802.11n 1T/2R PCIe 3092 RT3092 Wireless 802.11n 2T/2R PCIe 3290 RT3290 Wireless 802.11n 1T/1R PCIe 103c 18ec Ralink RT3290LE 802.11bgn 1x1 Wi-Fi and Bluetooth 4.0 Combo Adapter 3298 RT3290 Bluetooth 103c 18ec Ralink RT3290LE 802.11bgn 1x1 Wi-Fi and Bluetooth 4.0 Combo Adapter 3592 RT3592 Wireless 802.11abgn 2T/2R PCIe 359f RT3592 PCIe Wireless Network Adapter 5360 RT5360 Wireless 802.11n 1T/1R 1186 3c05 DWA-525 Wireless N 150 Desktop Adapter (rev.A2) 20f4 703a TEW-703PI N150 Wireless PCI Adapter 5362 RT5362 PCI 802.11n Wireless Network Adapter 5390 RT5390 Wireless 802.11n 1T/1R PCIe 103c 1636 U98Z077.00 Half-size Mini PCIe Card 5392 RT5392 PCIe Wireless Network Adapter 539b RT5390R 802.11bgn PCIe Wireless Network Adapter 539f RT5390 [802.11 b/g/n 1T1R G-band PCI Express Single Chip] 103c 1637 Pavilion DM1Z-3000 PCIe wireless card 5592 RT5592 PCIe Wireless Network Adapter e932 RT2560F 802.11 b/g PCI 1815 Devolo AG 1820 InfiniCon Systems Inc. 1822 Twinhan Technology Co. Ltd 4e35 Mantis DTV PCI Bridge Controller [Ver 1.0] 182d SiteCom Europe BV # HFC-based ISDN card 3069 ISDN PCI DC-105V2 9790 WL-121 Wireless Network Adapter 100g+ [Ver.3] 182e Raza Microelectronics, Inc. 0008 XLR516 Processor # Strange vendor ID used by BCM5785 when in RAID mode 182f Broadcom # HT1000 uses 3 IDs 1166:024a (Native SATA Mode), 1166:024b (PATA/IDE Mode), 182f:000b (RAID Mode) depends on SATA BIOS setting 000b BCM5785 [HT1000] SATA (RAID Mode) 1830 Credence Systems Corporation 8000 CPIn 8001 CPId 8002 CPIx 8003 CPIq 183b MikroM GmbH 08a7 MVC100 DVI 08a8 MVC101 SDI 08a9 MVC102 DVI+Audio 08b0 MVC200-DC 1846 Alcatel-Lucent 1849 ASRock Incorporation 9602 RS780/RS880 PCI to PCI bridge (int gfx) 184a Thales Computers 1100 MAX II cPLD 1850 Advantest Corporation 0048 EK220-66401 Computer Interface Card 1851 Microtune, Inc. 1852 Anritsu Corp. 1853 SMSC Automotive Infotainment System Group 1854 LG Electronics, Inc. 185b Compro Technology, Inc. 1489 VideoMate Vista T100 185f Wistron NeWeb Corp. 1864 SilverBack 2110 ISNAP 2110 1867 Topspin Communications 5a44 MT23108 InfiniHost HCA 5a45 MT23108 InfiniHost HCA flash recovery 5a46 MT23108 InfiniHost HCA bridge 6278 MT25208 InfiniHost III Ex (Tavor compatibility mode) 6282 MT25208 InfiniHost III Ex 186c Humusoft, s.r.o. 0612 AD612 Data Acquisition Device 0614 MF614 Multifunction I/O Card 0622 AD622 Data Acquisition Device 0624 MF624 Multifunction I/O PCI Card 0625 MF625 3-phase Motor Driver 0634 MF634 Multifunction I/O PCIe Card 0644 MF644 Multifunction I/O Thb Card 186f WiNRADiO Communications 1876 L-3 Communications a101 VigraWATCH PCI a102 VigraWATCH PMC a103 Vigra I/O 187e ZyXEL Communications Corporation 3403 ZyAir G-110 802.11g 340e M-302 802.11g XtremeMIMO 1885 Avvida Systems Inc. 1888 Varisys Ltd 0301 VMFX1 FPGA PMC module 0601 VSM2 dual PMC carrier 0710 VS14x series PowerPC PCI board 0720 VS24x series PowerPC PCI board 188a Ample Communications, Inc 1890 Egenera, Inc. 1894 KNC One 1896 B&B Electronics Manufacturing Company, Inc. 4202 MIport 3PCIU2 2-port Serial 4204 MIport 3PCIU4 4-port Serial 4208 MIport 3PCIU8 8-port Serial 4211 MIport 3PCIOU1 1-port Isolated Serial 4212 MIport 3PCIOU2 2-port Isolated Serial 4214 MIport 3PCIOU4 4-port Isolated Serial bb10 3PCI2 2-Port Serial bb11 3PCIO1 1-Port Isolated Serial 1897 AMtek 18a1 Astute Networks Inc. 18a2 Stretch Inc. 0002 VRC6016 16-Channel PCIe DVR Card 18a3 AT&T 18ac DViCO Corporation d500 FusionHDTV 5 d800 FusionHDTV 3 Gold d810 FusionHDTV 3 Gold-Q d820 FusionHDTV 3 Gold-T db30 FusionHDTV DVB-T Pro db40 FusionHDTV DVB-T Hybrid db78 FusionHDTV DVB-T Dual Express 18b8 Ammasso b001 AMSO 1100 iWARP/RDMA Gigabit Ethernet Coprocessor # formally Info-Tek Corp. 18bc GeCube Technologies, Inc. 18c3 Micronas Semiconductor Holding AG 0720 nGene PCI-Express Multimedia Controller 1461 032e Hybrid M779 PCI-E # Nee Octigabay System 18c8 Cray Inc 18c9 ARVOO Engineering BV 18ca XGI Technology Inc. (eXtreme Graphics Innovation) 0020 Z7/Z9 (XG20 core) 0021 Z9s/Z9m (XG21 core) 0027 Z11/Z11M 0040 Volari V3XT/V5/V8 0047 Volari 8300 (chip: XP10, codename: XG47) # should be 182d 18d2 Sitecom Europe BV (Wrong ID) # Sitecom HFC-S based ISDN controller card DC-105v2 3069 DC-105v2 ISDN controller 18d4 Celestica 18d8 Dialogue Technology Corp. 18dd Artimi Inc 4c6f Artimi RTMI-100 UWB adapter 18df LeWiz Communications 18e6 MPL AG 0001 OSCI [Octal Serial Communication Interface] 18eb Advance Multimedia Internet Technology, Inc. 18ec Cesnet, z.s.p.o. 6d05 ML555 18ec 0100 NIC (ethernet interfaces) 18ec 0200 NIC (szedata2) 4x1G 18ec 0201 NIC (szedata2) 2x10G 18ec 0300 NIFIC (szedata2) 4x1G 18ec 0302 NIFIC (szedata2) 2x10G 18ec 4200 Flexible FlowMon (szedata2) 1x10G 18ec ff00 Testing design 18ec ff01 Boot design c006 COMBO6 18ec d001 COMBO-4MTX 18ec d002 COMBO-4SFP 18ec d003 COMBO-4SFPRO 18ec d004 COMBO-2XFP c032 COMBO-LXT110 18ec 0100 NIC (ethernet interfaces) 18ec 0200 NIC (szedata2) 4x1G 18ec 0201 NIC (szedata2) 2x10G 18ec 0300 NIFIC (szedata2) 4x1G 18ec 0302 NIFIC (szedata2) 2x10G 18ec 4200 Flexible FlowMon (szedata2) 1x10G 18ec ff00 Testing design 18ec ff01 Boot design c045 COMBO6E c050 COMBO-PTM c058 COMBO6X 18ec d001 COMBO-4MTX 18ec d002 COMBO-4SFP 18ec d003 COMBO-4SFPRO 18ec d004 COMBO-2XFP c132 COMBO-LXT155 18ec 0100 NIC (ethernet interfaces) 18ec 0200 NIC (szedata2) 4x1G 18ec 0201 NIC (szedata2) 2x10G 18ec 0300 NIFIC (szedata2) 4x1G 18ec 0302 NIFIC (szedata2) 2x10G 18ec 4200 Flexible FlowMon (szedata2) 1x10G 18ec ff00 Testing design 18ec ff01 Boot design c232 COMBO-FXT100 18ec 0100 NIC (ethernet interfaces) 18ec 0200 NIC (szedata2) 4x1G 18ec 0201 NIC (szedata2) 2x10G 18ec 0300 NIFIC (szedata2) 4x1G 18ec 0302 NIFIC (szedata2) 2x10G 18ec 4200 Flexible FlowMon (szedata2) 1x10G 18ec ff00 Testing design 18ec ff01 Boot design c400 COMBO-400G1 18ee Chenming Mold Ind. Corp. 18f1 Spectrum GmbH 18f4 Napatech A/S 0031 NT20X Network Adapter 0051 NT20X Capture Card 0061 NT20E Capture Card 0064 NT20E Inline Card 0071 NT4E Capture Card 0074 NT4E Inline Card 0081 NT4E 4-port Expansion Card 0091 NT20X Capture Card [New Rev] 00a1 NT4E-STD Capture Card 00a4 NT4E-STD Inline Card # 8 x 1 Gbps / 10 Gbps PCIe Optical Bypass Adapter 00b1 NTBPE Optical Bypass Adapter 00c5 NT20E2 Network Adapter 2x10Gb 00d5 NT40E2-4 Network Adapter 4x10Gb 00e5 NT40E2-1 Network Adapter 1x40Gb # 4-Port Adapter for 1 GbE In-Line Bypass Applications 00f5 NT4E2-4T-BP Network Adapter 4x1Gb with Electrical Bypass 0105 NT4E2-4-PTP Network Adapter 4x1Gb 0115 NT20E2-PTP Network Adapter 2x10Gb 0125 NT4E2-4-PTP Network Adapter 4x1Gb 0135 NT20E2-PTP Network Adapter 2x10Gb 0145 NT40E3-4-PTP Network Adapter 4x10Gb 0155 NT100E3-1-PTP Network Adapter 1x100Gb 0165 NT80E3-2-PTP Network Adapter 2x40Gb 0175 NT20E3-2-PTP Network Adapter 2x10Gb 0185 NT40A01 Network Adapter 01a5 NT200A01 Network Adapter 01c5 NT200A02 Network Adapter 01d5 NT50B01 Network Adapter 01e5 NT100A01 Network Adapter 0215 NT400D11 Network Adapter 0225 NT40A11 Network Adapter 0295 NT400D13 Network Adapter 18f6 NextIO 1000 [Nexsis] Switch Virtual P2P PCIe Bridge 1001 [Texsis] Switch Virtual P2P PCIe Bridge 1050 [Nexsis] Switch Virtual P2P PCI Bridge 1051 [Texsis] Switch Virtual P2P PCI Bridge 2000 [Nexsis] Switch Integrated Mgmt. Endpoint 2001 [Texsis] Switch Integrated Mgmt. Endpoint 18f7 Commtech, Inc. 0001 ESCC-PCI-335 Serial PCI Adapter [Fastcom] 0002 422/4-PCI-335 Serial PCI Adapter [Fastcom] 0003 232/4-1M-PCI Serial PCI Adapter [Fastcom] 0004 422/2-PCI-335 Serial PCI Adapter [Fastcom] 0005 IGESCC-PCI-ISO/1 Serial PCI Adapter [Fastcom] 000a 232/4-PCI-335 Serial PCI Adapter [Fastcom] 000b 232/8-PCI-335 Serial PCI Adapter [Fastcom] 000f FSCC Serial PCI Adapter [Fastcom] 0010 GSCC Serial PCI Adapter [Fastcom] 0011 QSSB Serial PCI Adapter [Fastcom] 0014 SuperFSCC Serial PCI Adapter [Fastcom] 0015 SuperFSCC-104-LVDS Serial PC/104+ Adapter [Fastcom] 0016 FSCC-232 RS-232 Serial PCI Adapter [Fastcom] # Software UARTs 0017 SuperFSCC-104 Serial PC/104+ Adapter [Fastcom] # Software UARTs 0018 SuperFSCC/4 Serial PCI Adapter [Fastcom] # Software UARTs 0019 SuperFSCC Serial PCI Adapter [Fastcom] 001a SuperFSCC-LVDS Serial PCI Adapter [Fastcom] # Software UARTs 001b FSCC/4 Serial PCI Adapter [Fastcom] # RS-644 Only 001c SuperFSCC/4-LVDS Serial PCI Adapter [Fastcom] # Software UARTs 001d FSCC Serial PCI Adapter [Fastcom] 001e SuperFSCC/4 Serial PCIe Adapter [Fastcom] 001f SuperFSCC/4 Serial cPCI Adapter [Fastcom] 0020 422/4-PCIe Serial PCIe Adapter [Fastcom] 0021 422/8-PCIe Serial PCIe Adapter [Fastcom] # RS-644 Only 0022 SuperFSCC/4-LVDS Serial PCIe Adapter [Fastcom] # Software UARTs 0023 SuperFSCC/4 Serial cPCI Adapter [Fastcom] # RS-644 Only, Software UARTs 0025 SuperFSCC/4-LVDS Serial PCI Adapter [Fastcom] # RS-644 Only, Software UARTs 0026 SuperFSCC-LVDS Serial PCI Adapter [Fastcom] # Software UARTs 0027 FSCC/4 Serial PCIe Adapter [Fastcom] 18fb Resilience Corporation 1904 Hangzhou Silan Microelectronics Co., Ltd. 2031 SC92031 PCI Fast Ethernet Adapter 8139 RTL8139D [Realtek] PCI 10/100BaseTX ethernet adaptor 1905 Micronas USA, Inc. # since the merger with NEC Electronics in 2010 1912 Renesas Electronics Corp. 0002 SH7780 PCI Controller (PCIC) 0011 SH7757 PCIe End-Point [PBI] 0012 SH7757 PCIe-PCI Bridge [PPB] 0013 SH7757 PCIe Switch [PS] 0014 uPD720201 USB 3.0 Host Controller 0015 uPD720202 USB 3.0 Host Controller 4c52 9a72 LRSU9A72 2-Port USB 3.0 Exchange Adapter 001a SH7758 PCIe-PCI Bridge [PPB] 001b SH7758 PCIe End-Point [PBI] 001d SH7758 PCIe Switch [PS] 1919 Soltek Computer Inc. 1923 Sangoma Technologies Corp. 0040 A200/Remora FXO/FXS Analog AFT card 0100 A104d QUAD T1/E1 AFT card 0300 A101 single-port T1/E1 0400 A104u Quad T1/E1 AFT 1924 AMD Solarflare 0703 SFC4000 rev A net [Solarstorm] 10b8 0102 SMC10GPCIe-10BT (A2) [TigerCard] 10b8 0103 SMC10GPCIe-10BT (A3) [TigerCard] 10b8 0201 SMC10GPCIe-XFP (A1) [TigerCard] 1924 0101 SFE4001-A1 1924 0102 SFE4001-A2 1924 0103 SFE4001-A3 1924 0201 SFE4002-A1 1924 0301 SFE4003-A1 1924 0302 SFE4003-A2 1924 0303 SFE4003-A3 1924 0304 SFE4003-A4 1924 0500 SFE4005-A0 0710 SFC4000 rev B [Solarstorm] 10b8 0103 SMC10GPCIe-10BT (A3) [TigerCard] 10b8 0201 SMC10GPCIe-XFP (A1) [TigerCard] 1924 0102 SFE4001-A2 1924 0103 SFE4001-A3 1924 0201 SFE4002-A1 1924 0302 SFE4003-A2 1924 0303 SFE4003-A3 1924 0304 SFE4003-A4 1924 0500 SFE4005-A0 1924 5102 SFN4111T-A2 1924 5103 SFN4111T-R3 1924 5104 SFN4111T-R4 1924 5105 SFN4111T-R5 1924 5201 SFN4112F-R1 1924 5202 SFN4112F-R2 0803 SFC9020 10G Ethernet Controller 1014 0478 2-port 10GbE Low-Latency (R7) 1014 0479 2-port 10GbE OpenOnload (R7) 1014 04a7 Solarflare 10Gb Low-latency Dual-port HBA (R7) 1014 04a8 Solarflare 10Gb Dual-port HBA (R7) 103c 2132 Ethernet 10Gb 2-port 570FLR-SFP+ Adapter (R1) 103c 2136 Ethernet 10Gb 2-port 570SFP+ Adapter (R7) 1924 1201 SFA6902F-R1 SFP+ AOE Adapter 1924 6200 SFN5122F-R0 SFP+ Server Adapter 1924 6201 SFN5122F-R1 SFP+ Server Adapter 1924 6202 SFN5122F-R2 SFP+ Server Adapter 1924 6204 SFN5122F-R4 SFP+ Server Adapter 1924 6205 SFN5122F-R5 SFP+ Server Adapter 1924 6206 SFN5122F-R6 SFP+ Server Adapter 1924 6207 SFN5122F-R7 SFP+ Server Adapter 1924 6210 SFN5322F-R0 SFP+ Precision Time Synchronization Server Adapter 1924 6211 SFN5322F-R1 SFP+ Precision Time Synchronization Server Adapter 1924 6217 SFN5322F-R7 SFP+ Precision Time Synchronization Server Adapter 1924 6227 SFN6122F-R7 SFP+ Server Adapter 1924 6237 SFN6322F-R7 SFP+ Precision Time Synchronization Server Adapter 1924 6501 SFN5802K-R1 Mezzanine Adapter 1924 6511 SFN5814H-R1 Mezzanine Adapter 1924 6521 SFN5812H-R1 Mezzanine Adapter 1924 6562 SFN6832F-R2 SFP+ Mezzanine Adapter 1924 6a05 SFN5112F-R5 SFP+ Server Adapter 1924 6a06 SFN5112F-R6 SFP+ Server Adapter 1924 7206 SFN5162F-R6 SFP+ Server Adapter 1924 7207 SFN5162F-R7 SFP+ Server Adapter 1924 7a06 SFN5152F-R6 SFP+ Server Adapter 1924 7a07 SFN5152F-R7 SFP+ Server Adapter 0813 SFL9021 10GBASE-T Ethernet Controller 1924 6100 SFN5121T-R0 10GBASE-T Server Adapter 1924 6102 SFN5121T-R2 10GBASE-T Server Adapter 1924 6103 SFN5121T-R3 10GBASE-T Server Adapter 1924 6104 SFN5121T-R4 10GBASE-T Server Adapter 1924 6902 SFN5111T-R2 10GBASE-T Server Adapter 1924 6904 SFN5111T-R4 10GBASE-T Server Adapter 1924 7104 SFN5161T-R4 10GBASE-T Server Adapter 1924 7904 SFN5151T-R4 10GBASE-T Server Adapter 0903 SFC9120 10G Ethernet Controller 1014 04cc SFN7122F-R2 2x10GbE SFP+ Flareon Ultra 1924 8002 SFN7122F-R1 SFP+ Server Adapter 1924 8003 SFN7x41Q-R1 Flareon Ultra 7000 Series 10/40G Adapter 1924 8006 SFN7022F-R1 SFP+ Server Adapter 1924 8007 SFN7322F-R2 Precision Time SFP+ Server Adapter 1924 8009 SFN7x22F-R2 Flareon Ultra 7000 Series 10G Adapter 1924 800a SFN7x02F-R2 Flareon 7000 Series 10G Adapter 1924 800c SFN7x22F-R3 Flareon Ultra 7000 Series 10G Adapter 1924 800d SFN7x02F-R3 Flareon 7000 Series 10G Adapter 1924 8010 SFA7942Q-R1 QSFP+ AOE Adapter 1924 8015 SFA7942Q-A5-0-R1 QSFP+ AOE Adapter 0923 SFC9140 10/40G Ethernet Controller 1924 800b SFN7x42Q-R1 Flareon Ultra 7000 Series 10/40G Adapter 1924 800e SFN7x42Q-R2 Flareon Ultra 7000 Series 10/40G Adapter 1924 800f SFN7xx4F-R1 Flareon Ultra 7000 Series 10G Adapter 0a03 SFC9220 10/40G Ethernet Controller 1924 8011 SFN8022-R1 8000 Series 10G Adapter 1924 8012 SFN8522-R1 8000 Series 10G Adapter 1924 8013 SFN8042-R1 8000 Series 10/40G Adapter 1924 8014 SFN8542-R1 8000 Series 10/40G Adapter 1924 8016 SFN8022-R2 8000 Series 10G Adapter 1924 8017 SFN8522-R2 8000 Series 10G Adapter 1924 8018 SFN8042-R2 8000 Series 10/40G Adapter 1924 8019 SFN8542-R2 8000 Series 10/40G Adapter 1924 801a SFN8722-R1 8000 Series OCP 10G Adapter 1924 801b SFN8522-R3 8000 Series 10G Adapter 1924 801c SFN8042-R3 8000 Series 10/40G Adapter 1924 8021 SFN8041-R1 8000 Series 10/40G Adapter 0b03 XtremeScale SFC9250 10/25/40/50/100G Ethernet Controller 1924 801d x2522-R1 2000 Series 10/25G Adapter 1924 801e x2542-R1 2000 Series 40/100G Adapter 1924 8022 XtremeScale X2522 10G Network Adapter 1924 8024 XtremeScale X2562 OCP 3.0 Dual Port SFP28 1924 8027 XtremeScale X2541 PCIe Single Port QSFP28 1924 8028 XtremeScale X2522-25G Network Adapter 1924 802a XtremeScale X2542 PCIe Dual Port QSFP28 1924 802b XtremeScale X2552 OCP 2.0 Dual Port SFP28 1924 802c XtremeScale X2522-25G PCIe Dual Port SFP28 1924 802d XtremeScale X2562 OCP 3.0 Dual Port SFP28 1803 SFC9020 10G Ethernet Controller (Virtual Function) 1813 SFL9021 10GBASE-T Ethernet Controller (Virtual Function) 1903 SFC9120 10G Ethernet Controller (Virtual Function) 1923 SFC9140 10/40G Ethernet Controller (Virtual Function) 1a03 SFC9220 10/40G Ethernet Controller (Virtual Function) 1b03 XtremeScale SFC9250 10/25/40/50/100G Ethernet Controller (Virtual Function) 6703 SFC4000 rev A iSCSI/Onload [Solarstorm] 10b8 0102 SMC10GPCIe-10BT (A2) [TigerCard] 10b8 0103 SMC10GPCIe-10BT (A3) [TigerCard] 10b8 0201 SMC10GPCIe-XFP (A1) [TigerCard] 1924 0101 SFE4001-A1 1924 0102 SFE4001-A2 1924 0103 SFE4001-A3 1924 0201 SFE4002-A1 1924 0301 SFE4003-A1 1924 0302 SFE4003-A2 1924 0303 SFE4003-A3 1924 0304 SFE4003-A4 1924 0500 SFE4005-A0 c101 EF1-21022T [EtherFabric] 192a BiTMICRO Networks Inc. 0008 RAMPART 192e TransDimension 1931 Option N.V. 000c Qualcomm MSM6275 UMTS chip 1932 DiBcom 193c MAXIM Integrated Products 193d New H3C Technologies Co., Ltd. 193f AHA Products Group 0001 AHA36x-PCIX 0360 AHA360-PCIe 0363 AHA363-PCIe 0364 AHA364-PCIe 0367 AHA367-PCIe 0370 AHA370-PCIe 0604 AHA604 0605 AHA605 3641 AHA3641 3642 AHA3642 6101 AHA6101 6102 AHA6102 1942 ClearSpeed Technology plc e511 Advance X620 accelerator card e521 Advance e620 accelerator card 1945 MERA 6200 PXI/PXIe measurement module 1947 C-guys, Inc. 4743 CG200 Dual SD/SDIO Host controller device 1948 Alpha Networks Inc. 194a DapTechnology B.V. 1111 FireSpy3850 1112 FireSpy450b 1113 FireSpy450bT 1114 FireSpy850 1115 FireSpy850bT 1200 FireTrac 3460bT 1201 FireTrac 3460bT (fallback firmware) 1202 FireTrac 3460bT 1203 FireTrac 3460bT (fallback firmware) # nee Curtis, Inc. 1954 One Stop Systems, Inc. 1957 Freescale Semiconductor Inc 0012 MPC8548E 0013 MPC8548 0014 MPC8543E 0015 MPC8543 0018 MPC8547E 0019 MPC8545E 001a MPC8545 0020 MPC8568E 0021 MPC8568 0022 MPC8567E 0023 MPC8567 0030 MPC8533E 0031 MPC8533 0032 MPC8544E 0033 MPC8544 0040 MPC8572E 0041 MPC8572 0050 MPC8536E 0051 MPC8536 0052 MPC8535E 0053 MPC8535 0060 MPC8569 0061 MPC8569E 0070 P2020E 0071 P2020 0078 P2010E 0079 P2010 0080 MPC8349E 0081 MPC8349 0082 MPC8347E TBGA 0083 MPC8347 TBGA 0084 MPC8347E PBGA 110a 4074 SIMATIC NET CP 1628 0085 MPC8347 PBGA 110a 4046 SIMATIC NET CP 1623 0086 MPC8343E 0087 MPC8343 00b4 MPC8315E 00b6 MPC8314E 1a56 1101 Bigfoot Killer Xeno Pro Gigabit Ethernet Controller 00c2 MPC8379E 00c3 MPC8379 00c4 MPC8378E 00c5 MPC8378 00c6 MPC8377E 00c7 MPC8377 0100 P1020E 0101 P1020 0102 P1021E 0103 P1021 0108 P1011E 0109 P1011 010a P1012E 010b P1012 0110 P1022E 0111 P1022 1c7f 5200 EB5200 0118 P1013E 0119 P1013 0128 P1010 0400 P4080E 0401 P4080 0408 P4040E 0409 P4040 041f P3041 0420 QorIQ P5020 Communications Processor with security engine 0421 QorIQ P5020 Communications Processor without security engine 0428 QorIQ P5010 Communications Processor with security engine 0429 QorIQ P5010 Communications Processor without security engine 0440 T4240 with security 0441 T4240 without security 0446 T4160 with security 0447 T4160 without security 0830 T2080 with security 0831 T2080 without security 0838 T2081 with security 0839 T2081 without security 580c MPC5121e 7010 MPC8641 PCI Host Bridge 7011 MPC8641D PCI Host Bridge 7018 MPC8610 81c0 LS1046A PCI Express Bridge c006 MPC8308 1a56 1201 Bigfoot Killer E2100 Gigabit Ethernet Controller # PCIe interface for emulator fc02 RedStone # CFI device over PCIe fc03 CFI 1958 Faster Technology, LLC. 1959 PA Semi, Inc a000 PA6T Core a001 PWRficient Host Bridge a002 PWRficient PCI-Express Port a003 PWRficient SMBus Controller a004 PWRficient 16550 UART a005 PWRficient Gigabit Ethernet a006 PWRficient 10-Gigabit Ethernet a007 PWRficient DMA Controller a008 PWRficient LPC/Localbus Interface a009 PWRficient L2 Cache a00a PWRficient DDR2 Memory Controller a00b PWRficient SERDES a00c PWRficient System/Debug Controller a00d PWRficient PCI-Express Internal Endpoint 1966 Orad Hi-Tec Systems 1975 DVG64 family 1977 DVG128 family 1979 3DVG/UHD3 1980 HDV2/UHD2 1234 3160 UHD2LC 1234 3300 Legacy UHD2 1234 3410 UHD2 # nee Atheros Communications, Inc. nee Attansic Technology Corp. 1969 Qualcomm Atheros 1026 AR8121/AR8113/AR8114 Gigabit or Fast Ethernet 1043 8304 P5KPL-CM Motherboard 1048 Attansic L1 Gigabit Ethernet 1043 8226 P5B-MX/WiFi-AP, P5KPL-VM Motherboard 1062 AR8132 Fast Ethernet 1063 AR8131 Gigabit Ethernet 1458 e000 GA-G31M-ES2L Motherboard 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] 1066 Attansic L2c Gigabit Ethernet 1067 Attansic L1c Gigabit Ethernet 1073 AR8151 v1.0 Gigabit Ethernet 1083 AR8151 v2.0 Gigabit Ethernet 1090 AR8162 Fast Ethernet 1043 108d VivoBook X202E, X202EV 1091 AR8161 Gigabit Ethernet 1043 1477 N56VZ 10a0 QCA8172 Fast Ethernet 10a1 QCA8171 Gigabit Ethernet 2010 QCA8175 card reader controller 2048 Attansic L2 Fast Ethernet 2060 AR8152 v1.1 Fast Ethernet 2062 AR8152 v2.0 Fast Ethernet 1043 8468 Eee PC 1015PX 3010 QCA8175 SD controller # E2200, E2201, E2205 e091 Killer E220x Gigabit Ethernet Controller e0a1 Killer E2400 Gigabit Ethernet Controller e0b1 Killer E2500 Gigabit Ethernet Controller 196a Sensory Networks Inc. 0101 NodalCore C-1000 Content Classification Accelerator 0102 NodalCore C-2000 Content Classification Accelerator 0105 NodalCore C-3000 Content Classification Accelerator 196d Club-3D BV 196e PNY 1971 AGEIA Technologies, Inc. 0000 Physics Processing Unit [PhysX] 100 Series PCI Express Card # The PCI and PCIe versions have a different PID 1011 Physics Processing Unit [PhysX] 100 Series PCI Card 1043 0001 PhysX P1 1021 Physics Processing Unit [PhysX] 200 Series PCI Express Card # nee Eberspaecher Electronics 1974 Star Electronics GmbH & Co. KG 0009 FlexCard PMC-II 0011 FlexCard PMC-II Ethernet 0018 FlexCard PXIe3 0019 FlexCard PCIe3 # IO card for std ethernet and automotive ethernet (ieee 1000Base-T1) 001a FlexCard PXIe Ethernet # IO card for std ethernet and automotive ethernet (ieee 1000Base-T1) 001b FlexCard PCIe Ethernet 1976 TRENDnet 1977 Parsec 197b JMicron Technology Corp. 0250 JMC250 PCI Express Gigabit Ethernet Controller 0260 JMC260 PCI Express Fast Ethernet Controller 0368 JMB368 IDE controller 0585 JMB58x AHCI SATA controller 2360 JMB360 AHCI Controller 2361 JMB361 AHCI/IDE 1462 7235 P965 Neo MS-7235 mainboard 2362 JMB362 SATA Controller 1043 8460 P8P67 Deluxe Motherboard 2363 JMB363 SATA/IDE Controller 1043 81e4 P5B [JMB363] 1458 b000 Motherboard 1849 2363 Motherboard (one of many) 2364 JMB364 AHCI Controller 2365 JMB365 AHCI/IDE 2366 JMB366 AHCI/IDE 2368 JMB368 IDE controller 2369 JMB369 Serial ATA Controller 2380 IEEE 1394 Host Controller 2381 Standard SD Host Controller 2382 SD/MMC Host Controller 2383 MS Host Controller 2384 xD Host Controller 2386 Standard SD Host Controller 2387 SD/MMC Host Controller 2388 MS Host Controller 2389 xD Host Controller 2391 Standard SD Host Controller 2392 SD/MMC Host Controller 2393 MS Host Controller 2394 xD Host Controller 1982 Distant Early Warning Communications Inc 1600 OX16C954 HOST-A 16ff OX16C954 HOST-B 1987 Phison Electronics Corporation 5007 E7 NVMe Controller 5008 E8 PCIe3 x2 NVMe Controller 5012 E12 NVMe Controller 5013 PS5013-E13 PCIe3 NVMe Controller (DRAM-less) 5015 PS5015-E15 PCIe3 NVMe Controller (DRAM-less) 5016 E16 PCIe4 NVMe Controller 5018 E18 PCIe4 NVMe Controller 5019 PS5019-E19 PCIe4 NVMe Controller (DRAM-less) 5021 PS5021-E21 PCIe4 NVMe Controller (DRAM-less) 5026 PS5026-E26 PCIe5 NVMe Controller 5027 PS5027-E27T PCIe4 NVMe Controller (DRAM-less) 1989 Montilio Inc. 0001 RapidFile Bridge 8001 RapidFile 198a Nallatech Ltd. 1993 Innominate Security Technologies AG 1999 A-Logics a900 AM-7209 Video Processor 199a Pulse-LINK, Inc. 199d Xsigo Systems 8209 Virtual NIC Device 890a Virtual HBA Device 199f Auvitek 8501 AU85X1 PCI REV1.1 8521 AU8521 TV card # nee ServerEngines Corp. 19a2 Emulex Corporation 0120 x1 PCIe Gen2 Bridge[Pilot4] 0200 BladeEngine 10Gb PCI-E iSCSI adapter 0201 BladeEngine 10Gb PCIe Network Adapter 0211 BladeEngine2 10Gb Gen2 PCIe Network Adapter 0212 BladeEngine2 10Gb Gen2 PCIe iSCSI Adapter 0221 BladeEngine3 10Gb Gen2 PCIe Network Adapter 0222 BladeEngine3 10Gb Gen2 PCIe iSCSI Adapter 0700 OneConnect OCe10100/OCe10102 Series 10 GbE 103c 1747 NC550SFP DualPort 10GbE Server Adapter 103c 1749 NC550SFP Dual Port Server Adapter 103c 174a NC551m Dual Port FlexFabric 10Gb Adapter 103c 174b StorageWorks NC550 DualPort Converged Network Adapter 103c 3314 NC551i Dual Port FlexFabric 10Gb Adapter 0702 OneConnect 10Gb iSCSI Initiator 0704 OneConnect OCe10100/OCe10102 Series 10 GbE CNA 10df e602 OneConnect OCe10100 10Gb CNA 10df e630 OneConnect OCe10102-FM-E / OCe10102-FX-E for EMC VNX Symmetrix 0710 OneConnect 10Gb NIC (be3) # FC 5287 / FC 5284; CCIN 5287 1014 03d0 PCIe2 2-port 10GbE SR Adapter for POWER # FC 5288 / FC 5286; CCIN 5288 1014 03d1 PCIe2 2-port 10GbE SFP+ Copper Adapter for POWER 1014 0409 Integrated Multifunction Card with Dual 10GbE SR Optical + Dual 1GbE for Power 750/760 1014 040a Integrated Multifunction Card with Dual 10GbE SR Copper + Dual 1GbE for Power 750/760 103c 3315 NC553i 10Gb 2-port FlexFabric Converged Network Adapter 103c 3340 NC552SFP 2-port 10Gb Server Adapter 103c 3341 NC552m 10Gb 2-port FlexFabric Converged Network Adapter 103c 3345 NC553m 10Gb 2-port FlexFabric Converged Network Adapter 103c 337b NC554FLB 10Gb 2-port FlexFabric Converged Network Adapter 10df e733 Flex System EN4054 4-port 10Gb Ethernet Mezzanine Adapter 0712 OneConnect 10Gb iSCSI Initiator (be3) 0714 OneConnect 10Gb FCoE Initiator (be3) 103c 3315 NC553i 10Gb 2-port FlexFabric Converged Network Adapter 103c 337b NC554FLB 10Gb 2-port FlexFabric Converged Network Adapter 0800 ServerView iRMC HTI 19a4 Owl Cyber Defense Solutions 19a8 DAQDATA GmbH 19ac Kasten Chase Applied Research 0001 ACA2400 Crypto Accelerator 19ae Progeny Systems Corporation 0520 4135 HFT Interface Controller 0521 Decimator 19ba ZyXEL Communications Corp. 2330 ZyWALL Turbo Card 19c1 Exegy Inc. # nee NextNet Wireless 19d1 Motorola Expedience 19d4 Quixant Limited 19da ZOTAC International (MCO) Ltd. 19de Pico Computing 19e2 Vector Informatik GmbH 19e3 DDRdrive LLC 5801 DDRdrive X1 5808 DDRdrive X8 dd52 DDRdrive X1-30 19e5 Huawei Technologies Co., Ltd. 0123 ES3000 V3 NVMe PCIe SSD 19e5 3022 NVMe SSD ES3600P V3 800GB 2.5" U.2 19e5 3023 NVMe SSD ES3600P V3 1200GB 2.5" U.2 19e5 3024 NVMe SSD ES3600P V3 1600GB 2.5" U.2 19e5 3025 NVMe SSD ES3600P V3 2000GB 2.5" U.2 19e5 3026 NVMe SSD ES3600P V3 3200GB 2.5" U.2 19e5 3033 NVMe SSD ES3600C V3 1200GB HHHL AIC 19e5 3034 NVMe SSD ES3600C V3 1600GB HHHL AIC 19e5 3036 NVMe SSD ES3600C V3 3200GB HHHL AIC 0200 Hi1822 Family (2*100GE) 19e5 d139 Hi1822 SP572 (2*100GE) 19e5 d13d Hi1822 SC371 (2*100GE) 19e5 d147 Hi1822 SP573 (2*100GE) 0202 Hi1822 Family (2*32G FC) 19e5 d149 Hi1822 SP528 (2*32G FC) 19e5 d302 Hi1822 SP521 (2*32G FC) 19e5 d304 Hi1822 SP526 (2*32G FC) 0203 Hi1822 Family (2*16G FC) 19e5 d148 Hi1822 SP527 (2*16G FC) 19e5 d301 Hi1822 SP520 (2*16G FC) 19e5 d305 Hi1822 SP525 (2*16G FC) 0204 Hi1822 Family (4*10GE) 0205 Hi1822 Family (2*100GE) 19e5 df27 Hi1822 MZ731 MEZZ (2*100GE) 0206 Hi1822 Family (2*25GE) 19e5 d138 Hi1822 SP582 (2*25GE) 19e5 d13a Hi1822 SC381 (2*25GE) 19e5 d145 Hi1822 SP586 (2*25GE) 0208 Hi1822 Family (2*100GE) 020b Hi1822 Family (4*25GE) 020c Hi1822 Family (4*32G FC) 020d Hi1822 Family (2*40GE) 0210 Hi1822 Family (4*25GE) 19e5 df2e Hi1822 MZ532 MEZZ (4*25GE) 0211 Hi1822 Family (4*25GE) 19e5 d12f Hi1822 SP571 (4*25GE) 19e5 d137 Hi1822 SP581 (4*25GE) 19e5 d142 Hi1822 SP583 (4*25GE) 0212 Hi1822 Family (2*8G FC) 19e5 d303 Hi1822 SP522 (2*8G FC) 19e5 d306 Hi1822 SP523 (2*8G FC) 0222 Hi1822 Family 19e5 0051 Hi1822 SP681 (2*25/10GE) 19e5 0052 Hi1822 SP680 (4*25/10GE) 19e5 00a1 Hi1822 SP670 (2*100GE) 1710 iBMA Virtual Network Adapter 1711 Hi171x Series [iBMC Intelligent Management system chip w/VGA support] 1822 Hi1822 Family (4*25GE) 19e5 d129 Hi1822 SP570 (4*25GE) 19e5 d136 Hi1822 SP580 (4*25GE) 19e5 d141 Hi1822 SP583 (4*25GE) 19e5 d146 Hi1822 SP585 (4*25GE) 3714 ES3000 V5 NVMe PCIe SSD 19e5 5312 NVMe SSD ES3500P V5 2000GB 2.5" U.2 371e Hi1822 Family Virtual Bridge 3754 ES3000 V6 NVMe PCIe SSD 19e5 6122 NVMe SSD ES3600P V6 1600GB 2.5" U.2 19e5 6123 NVMe SSD ES3600P V6 3200GB 2.5" U.2 19e5 6124 NVMe SSD ES3600P V6 6400GB 2.5" U.2 19e5 6141 NVMe SSD ES3800P V6 800GB 2.5" U.2 19e5 6142 NVMe SSD ES3800P V6 1600GB 2.5" U.2 19e5 6212 NVMe SSD ES3500P V6 1920GB 2.5" U.2 19e5 6213 NVMe SSD ES3500P V6 3840GB 2.5" U.2 19e5 6214 NVMe SSD ES3500P V6 7680GB 2.5" U.2 19e5 6215 NVMe SSD ES3500P V6 15360GB 2.5" U.2 3758 SP686C RAID Controller Card 19e5 0185 RAID SP686C-M-16i 2G 19e5 01a1 RAID SP686C-M-40i 2G 19e5 01a4 RAID SP686C-M-16i 4G 19e5 01a8 RAID SP686C-MH-32i 4G 19e5 01ad RAID SP686C-M-40i 4G 375e Hi1822 Family Virtual Function 375f Hi1822 Family Virtual Function 379e Hi1822 Family Virtual Function 379f Hi1822 Family Virtual Function 3858 SP186 HBA Controller Card 19e5 0120 HBA SP186-M-32i 19e5 0125 HBA SP186-M-40i 19e5 0180 HBA SP186-M-16i 19e5 0188 HBA SP186-M-8i a120 HiSilicon PCIe Root Port with Gen4 a121 HiSilicon PCI-PCI Bridge a122 HiSilicon Embedded DMA Engine a124 HiSilicon Internal SDI Function Engine a125 HiSilicon SDI Network Controller a126 HiSilicon SDI NVMe Storage Controller a127 HiSilicon SDI Accelerator a12a HiSilicon Add-on PCI-PCI Bridge a220 HNS GE Network Controller a221 HNS GE/10GE/25GE Network Controller 19e5 0454 TM280 19e5 04cc TM210 19e5 d14a TM280 4*25G 19e5 d14b TM210 4*GE a222 HNS GE/10GE/25GE RDMA Network Controller a224 HNS GE/10GE/25GE/50GE RDMA Network Controller a226 HNS GE/10GE/25GE/50GE/100GE RDMA Network Controller a22a HiSilicon Network For SDI a22e HNS Network Controller (Virtual Function) a22f HNS RDMA Network Controller (Virtual Function) a230 HiSilicon SAS 3.0 HBA a235 HiSilicon AHCI HBA a238 HiSilicon USB 3.0 Host Controller a239 HiSilicon USB 2.0 2-port Host Controller a23a HiSilicon USB 2.0 Host Controller a23b HiSilicon USB 1.1 Host Controller a250 HiSilicon ZIP Engine a251 HiSilicon ZIP Engine(Virtual Function) a255 HiSilicon SEC Engine a256 HiSilicon SEC Engine(Virtual Function) a258 HiSilicon HPRE Engine a259 HiSilicon HPRE Engine(Virtual Function) a25a HiSilicon RDE Engine a25b HiSilicon RDE Engine(Virtual Function) 19e7 NET (Network Equipment Technologies) 1001 STIX DSP Card 1002 STIX - 1 Port T1/E1 Card 1003 STIX - 2 Port T1/E1 Card 1004 STIX - 4 Port T1/E1 Card 1005 STIX - 4 Port FXS Card 19ee Netronome Systems, Inc. 19f1 BFG Tech 19ff Eclipse Electronic Systems, Inc. 1a03 ASPEED Technology, Inc. 1150 AST1150 PCI-to-PCI Bridge 2000 ASPEED Graphics Family 15d9 0832 X10SRL-F 15d9 1b95 H12SSL-i 1a05 deltaww 1a07 Kvaser AB 0006 CAN interface PC104+ HS/HS 0007 CAN interface PCIcanx II HS or HS/HS 0008 CAN interface PCIEcan HS or HS/HS 0009 CAN interface PCI104 HS/HS 1a08 Sierra semiconductor 0000 SC15064 1a0d SEAKR Engineering 1a0e DekTec Digital Video B.V. 083f DTA-2111 VHF/UHF Modulator 0860 DTA-2144(B) Quad ASI/SDI in+out 0861 DTA-2145 ASI/SDI in+out with bypass relay 087c DTA-2172 Dual 3G-SDI/ASI ports 087e DTA-2174 Quad 3G-SDI/ASI in+out 087f DTA-2175 3G-SDI/ASI input+output with bypass relay 0882 DTA-2178 Octal 12G-SDI/ASI ports with genlock a882 DTA-2178-ASI Octal ASI Ports b87e DTA-2174B Quad 3G-SDI/ASI ports (1x12G) with genlock 1a17 Force10 Networks, Inc. 8002 PB-10GE-2P 10GbE Security Card 1a1d GFaI e.V. 1a17 Meta Networks MTP-1G IDPS NIC 1a1e 3Leaf Systems, Inc. 1a22 Ambric Inc. 1a29 Fortinet, Inc. 4338 CP8 Content Processor ASIC 43a0 CP9 Content Processor ASIC 4e36 NP6 Network Processor 4e37 NP7 Network Processor 1a2b Ascom AG 0000 GESP v1.2 0001 GESP v1.3 0002 ECOMP v1.3 0005 ETP v1.4 000a ETP-104 v1.1 000e DSLP-104 v1.1 # nee Metalink Ltd. 1a30 Lantiq 0680 MtW8171 [Hyperion II] 0700 Wave300 PSB8224 [Hyperion III] 0710 Wave300 PSB8231 [Hyperion III] 1a32 Quanta Microsystems, Inc 1a3b AzureWave 1112 AR9285 Wireless Network Adapter (PCI-Express) 1a3e Micro-Research Finland Oy 1a41 Tilera Corp. 0001 TILE64 processor 0002 TILEPro processor 0200 TILE-Gx processor 0201 TILE-Gx Processor Virtual Function 2000 TILE-Gx PCI Express Root Port 1a4a SLAC National Accelerator Lab TID-AIR 1000 MCOR Power Supply Controller 1010 AMC EVR - Stockholm Timing Board 1020 PGPCard - Gen3 Cameralink Interface 1030 PGPCard - Gen3 GIGe Interface 2000 PGPCard - 4 Lane 2001 PGPCard - 8 Lane Plus EVR 2010 PCI-Express EVR 2011 PCI-Express EVR - TPR Version 2020 PGP-GEN3 PCIe - 8 Lane Plus EVR 2030 AXI Stream DAQ PCIe card 2040 EXO PCIe TEM 3000 COB DTM V1 3001 COB DTM V2 1a51 Hectronic AB 1a55 Rohde & Schwarz DVS GmbH 0010 SDStationOEM 0011 SDStationOEM II 0020 Centaurus 0021 Centaurus II 0022 Centaurus II LT 0030 CLIPSTER-VPU 1.x (Hugo) 0040 Hydra Cinema (JPEG) 0050 CLIPSTER-VPU 2.x (DigiLab) 0060 CLIPSTER-DCI 2.x (HydraX) 0061 Atomix 0062 Atomix LT 0063 Atomix HDMI 0064 Atomix STAN 0065 Atomix HDMI STAN 0070 RED Rocket 0090 CinePlay # nee Bigfoot Networks, now owned by Intel 1a56 Rivet Networks 1a57 Highly Reliable Systems 1a58 Razer USA Ltd. 1a5d Celoxica 1a5e Aprius Inc. 1a5f System TALKS Inc. 1a68 VirtenSys Limited 1a71 XenSource, Inc. 1a73 Violin Memory, Inc 0001 Mozart [Memory Appliance 1010] 1a76 Wavesat 1a77 Lightfleet Corporation 1a78 Virident Systems Inc. 0031 FlashMAX Drive 1a78 0034 FlashMAX PCIe SSD [rev 3] 1a78 0037 FlashMAX PCIe SSD [rev 3D] 1a78 0038 FlashMAX PCIe SSD [rev 4] 1a78 0039 FlashMAX PCIe SSD [rev 4D] 0040 FlashMAX II 0041 FlashMAX II 0042 FlashMAX II 0050 FlashMAX III 1a84 Commex Technologies 0001 Vulcan SP HT6210 10-Gigabit Ethernet (rev 02) # nee MEN Mikro Elektronik 1a88 Duagon AG 4d45 Multifunction IP core 1a8a StarBridge, Inc. 1a8c Verigy Pte. Ltd. 1100 E8001-66443 PCI Express CIC 1a8e DRS Technologies 2090 Model 2090 PCI Express 1aa8 Ciprico, Inc. 0009 RAIDCore Controller 000a RAIDCore Controller 1aa9 Schweitzer Engineering Laboratories 000d SEL-3390S8 Serial Adapter 000e SEL-3390E4 Ethernet Adapter 0014 SEL-3390T Time and Ethernet Adapter 0015 SEL-3350 Mainboard 0016 SEL-3350 Serial Expansion Board 0017 SEL-3350 GPIO Expansion Board 0018 SEL-3390E4 Ethernet Adapter 001c SEL-3390E4 Ethernet Adapter 1aab Silver Creations AG 7750 Sceye 10L 1aae Global Velocity, Inc. 1ab4 Distributed Management Task Force, Inc. (DMTF) 1ab6 CalDigit, Inc. 6201 RAID Card # Parallels VM virtual devices 1ab8 Parallels, Inc. 4000 Virtual Machine Communication Interface 4005 Accelerated Virtual Video Adapter 4006 Memory Ballooning Controller 1ab9 Espia Srl 1ac1 Global Unichip Corp. 089a Coral Edge TPU 1ac8 Aeroflex Gaisler 1acc Point of View BV 1ad7 Spectracom Corporation 8000 TSync-PCIe Time Code Processor 9100 TPRO-PCI-66U Timecode Reader/Generator 1ade Spin Master Ltd. 1501 Swipetech barcode scanner 3038 PCIe Video Bridge 13c2 3016 TT-budget S2-4200 Twin 4254 0552 S952 v3 1ae0 Google, Inc. # NVMe drive in GCP 001f NVMe device 0042 Compute Engine Virtual Ethernet [gVNIC] abcd Airbrush Combined Paintbox IPU/Oscar Edge TPU [Pixel Neural Core] 1ae3 SANBlaze Technology, Inc. 1ae7 First Wise Media GmbH 0520 HFC-S PCI A [X-TENSIONS XC-520] # nee Silicon Software GmbH 1ae8 Basler AG # CameraLink frame grabber for Visual Applets 0751 mE5 marathon VCL # CameraLink HS frame grabber 0752 mE5 marathon AF2 # CoaXpress frame grabber 0753 mE5 marathon ACX QP # CameraLink frame grabber 0754 mE5 marathon ACL # CoaXpress frame grabber 0755 mE5 marathon ACX SP # CoaXpress frame grabber 0756 mE5 marathon ACX DP # CoaXpress frame grabber for Visual Applets 0757 mE5 marathon VCX QP # CameraLink HS frame grabber for Visual Applets 0758 mE5 marathon VF2 # CameraLink frame grabber for Visual Applets / AI applications 0759 mE5 marathon VCLx # CameraLink frame grabber 0a40 microEnable IV AD1-CL # CameraLink frame grabber for Visual Applets 0a41 microEnable IV VD1-CL # CameraLink frame grabber 0a42 microEnable IV AD4-CL # CameraLink frame grabber for Visual Applets 0a44 microEnable IV VD4-CL # CameraLink frame grabber 0a45 microEnable IV AS1-CL # CoaXpress frame grabber 0a53 microEnable 5 AQ8-CXP6B # CoaXpress frame grabber for Visual Applets 0a54 microEnable 5 VQ8-CXP6B # CoaXpress frame grabber for Visual Applets 0a56 microEnable 5 VQ8-CXP6D # CoaXpress frame grabber 0a57 microEnable 5 AQ8-CXP6D # CameraLink frame grabber for Visual Applets 0a58 microEnable 5 VD8-CL # CameraLink frame grabber 0a5a microEnable 5 AD8-CL # CoaXpress frame grabber 0a64 imaWorx CXP-12 Quad # OEM product 0b52 mE5 Abacus 4G Base # OEM product 0b53 mE5 Abacus 4G Base II # OEM product 0b61 mE6 Abacus 4TG # CoaXpress frame grabber 0b63 CXP-12 Interface Card 1C # CoaXpress frame grabber 0b64 CXP-12 Interface Card 4C # CoaXpress frame grabber 0b65 CXP-12 Interface Card 2C # CoaXpress Thunderbolt frame grabber 0b66 CXP-12 LightBridge 2C # GigE Vision frame grabber 0e42 microEnable IV AQ4-GE # GigE Vision frame grabber for Visual Applets 0e44 microEnable IV VQ4-GE 1ae9 Wilocity Ltd. 0101 Wil6200 PCI Express Upstream Port 0200 Wil6200 PCI Express Port 0201 Wil6200 Wireless PCI Express Port 0301 Wil6200 802.11ad Wireless Network Adapter 0302 Wil6200 802.11ad Wireless Network Adapter 0310 Wil6200 802.11ad Wireless Network Adapter 1aea Alcor Micro 6601 AU6601 PCI-E Flash card reader controller 6621 AU6621 PCI-E Flash card reader controller 6625 AU6625 PCI-E Flash card reader controller 1aec Wolfson Microelectronics # nee Fusion-io 1aed SanDisk 1003 ioDimm3 (v1.2) 1005 ioDimm3 1014 03c3 High IOPS SSD PCIe Adapter 103c 176f 1.28TB MLC PCIe ioDrive Duo 103c 1770 5.2TB MLC PCIe ioDrive Octal 103c 178b 160GB SLC PCIe ioDrive 103c 178c 320GB MLC PCIe ioDrive 103c 178d 320GB SLC PCIe ioDrive Duo 103c 178e 640GB MLC PCIe ioDrive Duo 1006 ioXtreme 1007 ioXtreme Pro 1008 ioXtreme-2 2001 ioDrive2 3001 ioMemory FHHL 3002 ioMemory HHHL 3003 ioMemory Mezzanine 1aee Caustic Graphics Inc. # nee Qumranet, Inc. 1af4 Red Hat, Inc. 1000 Virtio network device 01de fffb Propolis Virtio network device 1001 Virtio block device 01de fffa Propolis Virtio block device 1002 Virtio memory balloon 1003 Virtio console 1004 Virtio SCSI 1005 Virtio RNG 1009 Virtio filesystem 1041 Virtio 1.0 network device 1042 Virtio 1.0 block device 1043 Virtio 1.0 console 1044 Virtio 1.0 RNG 1045 Virtio 1.0 memory balloon 1048 Virtio 1.0 SCSI 1049 Virtio 1.0 filesystem 1050 Virtio 1.0 GPU 1052 Virtio 1.0 input 1053 Virtio 1.0 socket 1058 virtio-mem 105a Virtio file system 1110 Inter-VM shared memory 1af4 1100 QEMU Virtual Machine 1af5 Netezza Corp. 1afa J & W Electronics Co., Ltd. 1b00 Montage Technology Co., Ltd. c001 CXL Memory Expander Controller M88MX5891 1ff9 00a2 CXL Memory Expander 1ff9 00a4 CXL Memory Expander 1b03 Magnum Semiconductor, Inc, 6100 DXT/DXTPro Multiformat Broadcast HD/SD Encoder/Decoder/Transcoder 7000 D7 Multiformat Broadcast HD/SD Encoder/Decoder/Transcoder 1b08 MSC Technologies GmbH 1b0a Pegatron 9602 RS780/RS880 PCI to PCI bridge (int gfx) 1b13 Jaton Corp 1b1a K&F Computing Research Co. 0e70 GRAPE 1b1c Corsair 1b21 ASMedia Technology Inc. 0611 ASM1061 Serial ATA Controller 0612 ASM1061/ASM1062 Serial ATA Controller 1849 0612 Motherboard 0622 ASM106x Serial ATA AHCI Controller 4c52 9661 LRST9661 2-port M.2 SATA3(6Gb/s) Raid Adapter 0624 ASM106x SATA/RAID Controller 0625 106x SATA/RAID Controller 1040 ASM1040 SuperSpeed USB Host Controller 1041 ASM1041 SuperSpeed USB Host Controller 1042 ASM1042 SuperSpeed USB Host Controller 1043 1059 K53SM motherboard 1043 8488 P8B WS Motherboard 1849 1042 Motherboard 1064 ASM1064 Serial ATA Controller 1080 ASM1083/1085 PCIe to PCI Bridge 1849 1080 Motherboard 1142 ASM1042A USB 3.0 Host Controller 1164 ASM1164 Serial ATA AHCI Controller 1166 ASM1166 Serial ATA Controller 1182 ASM1182e 2-Port PCIe x1 Gen2 Packet Switch 1b21 118f ASM1182e 2-Port PCIe x1 Gen2 Packet Switch 1184 ASM1184e 4-Port PCIe x1 Gen2 Packet Switch 1849 1184 ASM1184e 4-Port PCIe x1 Gen2 Packet Switch 1187 ASM1187e 7-Port PCIe x1 Gen2 Packet Switch 118f ASM1187e 7-Port PCIe x1 Gen2 Packet Switch 1242 ASM1142 USB 3.1 Host Controller 4c52 9a42 LRSU9A42 2-Port Type-A Exchange Adapter 1343 ASM1143 USB 3.1 Host Controller 1806 ASM1806 4-Port PCIe x2 Gen2 Packet Switch 1812 ASM1812 6-Port PCIe x4 Gen2 Packet Switch 1824 ASM1824 12-Port PCIe x8 Gen2 Packet Switch 2142 ASM2142/ASM3142 USB 3.1 Host Controller 1462 7a72 H270 PC MATE 2806 ASM2806 4-Port PCIe x2 Gen3 Packet Switch 2812 ASM2812 6-Port PCIe x4 Gen3 Packet Switch 2824 ASM2824 PCIe Gen3 Packet Switch 3042 ASM3042 USB 3.2 Gen 1 xHCI Controller 3142 ASM3142 USB 3.2 Gen 2x1 xHCI Controller 3241 ASM3241 USB 3.2 Gen 2 Host Controller 3242 ASM3242 USB 3.2 Host Controller 1b26 Netcope Technologies, a.s. c132 COMBO-LXT155 c1c0 NFB-100G1-e0 c1c1 NFB-100G1-e1 c250 NFB-200G2-master c251 NFB-200G2-slave c2c0 NFB-100G2-e0 c2c1 NFB-100G2-e1 cb20 COMBO-20G cb40 COMBO-40G cb80 NFB-40G2 1b2c Opal-RT Technologies Inc. 1b36 Red Hat, Inc. 0001 QEMU PCI-PCI bridge 0002 QEMU PCI 16550A Adapter 1af4 1100 QEMU Virtual Machine 0003 QEMU PCI Dual-port 16550A Adapter 1af4 1100 QEMU Virtual Machine 0004 QEMU PCI Quad-port 16550A Adapter 1af4 1100 QEMU Virtual Machine 0005 QEMU PCI Test Device 1af4 1100 QEMU Virtual Machine 0006 PCI Rocker Ethernet switch device 0007 PCI SD Card Host Controller Interface 0008 QEMU PCIe Host bridge 0009 QEMU PCI Expander bridge 000a PCI-PCI bridge (multiseat) 000b QEMU PCIe Expander bridge 000c QEMU PCIe Root port 000d QEMU XHCI Host Controller 0010 QEMU NVM Express Controller 0011 QEMU PVPanic device 0013 QEMU UFS Host Controller 0100 QXL paravirtual graphic card 1af4 1100 QEMU Virtual Machine 1b37 Signal Processing Devices Sweden AB 0001 ADQ214 0003 ADQ114 0005 ADQ112 000e ADQ108 000f ADQDSP 0014 ADQ412 0015 ADQ212 001b SDR14 001c ADQ1600 001e ADQ208 001f DSU 0020 ADQ14 0023 ADQ7 0026 ADQ8 0031 ADQ3 2014 TX320 2019 S6000 # now owned by HGST (a Western Digital subsidiary) 1b39 sTec, Inc. 0001 S1120 PCIe Accelerator SSD 1b3a Westar Display Technologies 7589 HRED J2000 - JPEG 2000 Video Codec Device 1b3e Teradata Corp. 1fa8 BYNET BIC2SE/X 1b3e 00a3 BYNET BIC2SX 1b3e 00c3 BYNET BIC2SE 1b40 Schooner Information Technology, Inc. # also used by some PROXIM (14b7) devices erroneously 1b47 Numascale AS 0601 NumaChip N601 0602 NumaChip N602 1b4b Marvell Technology Group Ltd. # device 1b4b:0100 reports incorrect vendor id due to hw erratum (correct is 11ab) 0100 88F3700 [Armada 3700 Family] ARM SoC 0640 88SE9128 SATA III 6Gb/s RAID Controller 2241 88NR2241 Non-Volatile memory controller 1028 2112 BOSS-N1 Monolithic 1028 2113 BOSS-N1 Modular 1028 2151 BOSS-N1 Modular ET 1028 2196 ROR-N1 1028 2286 BOSS-N1 DC-MHS 1028 2287 BOSS-N1 Modular DC-MHS 1b4b 2241 Santa Cruz NVMe Host Adapter 1b96 4000 WD_BLACK AN1500 NVMe SSD 1d49 0306 ThinkSystem M.2 NVMe 2-Bay RAID Enablement Kit 1d49 0307 ThinkSystem 7mm NVMe 2-Bay Rear RAID Enablement Kit 4c52 9541 LRNV9541 2-port M.2 NVMe Raid Adapter 2b42 88W8997 2.4/5 GHz Dual-Band 2x2 Wi-Fi® 5 (802.11ac) + Bluetooth® 5.3 Solution 2b43 NXP 88W9098 Wi-Fi 6 (ax) MAC #1 2b44 NXP 88W9098 Wi-Fi 6 (ax) MAC #2 2b45 NXP 88W9098 Bluetooth 5.3 9120 88SE9120 SATA 6Gb/s Controller 9123 88SE9123 PCIe SATA 6.0 Gb/s controller dc93 600e DC-6xxe series SATA 6G controller 9125 88SE9125 PCIe SATA 6.0 Gb/s controller 4c52 9615 LRST9615 4-port SATA3(6Gb/s) Exchange Adapter 9128 88SE9128 PCIe SATA 6 Gb/s RAID controller 9130 88SE9128 PCIe SATA 6 Gb/s RAID controller with HyperDuo 1043 8438 P8P67 Deluxe Motherboard 9170 88SE9170 PCIe 2.0 x1 2-port SATA 6 Gb/s Controller 9172 88SE9172 SATA 6Gb/s Controller 9178 88SE9170 PCIe SATA 6Gb/s Controller 917a 88SE9172 SATA III 6Gb/s RAID Controller 9182 88SE9182 PCIe 2.0 x2 2-port SATA 6 Gb/s Controller 9183 88SS9183 PCIe SSD Controller 9192 88SE9172 SATA III 6Gb/s RAID Controller 91a0 88SE912x SATA 6Gb/s Controller [IDE mode] 91a4 88SE912x IDE Controller 9215 88SE9215 PCIe 2.0 x1 4-port SATA 6 Gb/s Controller 9220 88SE9220 PCIe 2.0 x2 2-port SATA 6 Gb/s RAID Controller 9230 88SE9230 PCIe 2.0 x2 4-port SATA 6 Gb/s RAID Controller 1028 1fd6 BOSS-S1 Adapter 1028 1fdf BOSS-S1 Modular 1028 1fe2 BOSS-S1 Adapter 1028 2010 BOSS-S2 Adapter 1028 2260 BOSS-S1 Modular 1028 2261 BOSS-S2 Adapter 1bd4 0073 RS0200L6R2iM2 1d49 0300 ThinkSystem M.2 with Mirroring Enablement Kit 1d49 0301 ThinkSystem SR630 x16 PCIE with 4 SATA ports Riser 1d49 0302 ThinkSystem SE350 M.2 SATA 4-Bay Data RAID Mirroring Enablement Kit 1d49 0303 ThinkSystem SE350 M.2 SATA 4-Bay Data RAID Mirroring Enablement Kit 1d49 0304 ThinkSystem M.2 SATA 2-Bay RAID Enablement Kit 1d49 0305 ThinkSystem 7mm SATA 2-Bay Rear RAID Enablement Kit 4c52 9630 LRST9630 4-port SATA3(6Gb/s) Raid Adapter 9235 88SE9235 PCIe 2.0 x2 4-port SATA 6 Gb/s Controller 9445 88SE9445 PCIe 2.0 x4 4-Port SAS/SATA 6 Gbps RAID Controller 9480 88SE9480 SAS/SATA 6Gb/s RAID controller 9485 88SE9485 SAS/SATA 6Gb/s controller 1b4c GALAX 1b55 NetUP Inc. 18f6 Dual DVB Universal CI card 18f7 Dual DVB Universal CI card rev 1.4 2a2c Dual DVB-S2-CI card e2e4 Dual DVB-T/C-CI RF card # 2xHDMI and 2xHD-SDI inputs e5f4 MPEG2 and H264 Encoder-Transcoder f1c4 Dual ASI-RX/TX-CI card 1b5e STAR-Dundee Ltd. 0001 SpaceWire PCI Mk2 0002 SpaceWire PCIe Mk1 0003 SpaceWire cPCI Mk2 0004 SpaceWire PXI Recorder Mk1 0005 SpaceWire PXI Interface Mk1 0006 SpaceWire PXI Interface Mk1 with RMAP Target 0008 SpaceWire PXI Router Mk1 000b SpaceWire PXI Interface Mk2 000c SpaceWire PXI Interface Mk2 with RMAP Target 000d SpaceWire PXI Router Mk2 000e SpaceWire PXI Recorder Mk2 0100 STAR-Ultra PCIe 0102 STAR-Ultra Single-Lane Router 0200 SpaceWire PCIe Mk2 1b61 Byd Precision Manufacture Co.,Ltd 1b66 DELTACAST 0007 DELTA-3G-elp-d 1b6f Etron Technology, Inc. 7023 EJ168 USB 3.0 Host Controller 1458 5007 GA-880GMA-USB3 7052 EJ188/EJ198 USB 3.0 Host Controller 1849 7052 QC5000-ITX/PH 1b73 Fresco Logic 1000 FL1000G USB 3.0 Host Controller 1d5c 1000 Anker USB 3.0 Express Card 1009 FL1009 USB 3.0 Host Controller 1100 FL1100 USB 3.0 Host Controller 16b8 6e31 Allegro Pro USB 3.0 PCIe 1b74 OpenVox Communication Co. Ltd. 0115 D115P/D115E Single-port E1/T1 card d130 D130P/D130E Single-port E1/T1 card (3rd GEN) d210 D210P/D210E Dual-port E1/T1 card(2nd generation) d230 D230 Dual-port E1/T1 card (2nd generation) d410 D410/430 Quad-port E1/T1 card d430 D410/430 Quad-port E1/T1 card 1b79 Absolute Analysis 1b85 OCZ Technology Group, Inc. 1021 RevoDrive 3 X2 PCIe SSD 240 GB (Marvell SAS Controller) 1041 RevoDrive 3 X2 PCIe SSD 240 GB (Marvell SAS Controller) 4018 Z Drive 6000/6300 NVME SSD 6018 RD400/400A SSD 8788 RevoDrive Hybrid 1b94 Signatec / Dynamic Signals Corp e400 PX14400 Dual Xilinx Virtex5 based Digitizer 1b96 Western Digital 2200 Ultrastar DC SN630 NVMe SSD 2201 Ultrastar DC SN630 NVMe SSD 2300 Ultrastar DC SN840 NVMe SSD 2400 Ultrastar DC SN640 NVMe SSD 2401 Ultrastar DC SN640 NVMe SSD 2402 Ultrastar DC SN640 NVMe SSD 2404 Ultrastar DC SN640 NVMe SSD 2500 Ultrastar DC SN840 NVMe SSD 2600 Ultrastar DC ZN540 ZNS NVMe SSD 2700 Ultrastar DC SN650 NVMe SSD 2701 Ultrastar DC SN650 NVMe SSD 2702 Ultrastar DC SN650 NVMe SSD 2720 Ultrastar DC SN650 NVMe SSD 2721 Ultrastar DC SN650 NVMe SSD 2722 Ultrastar DC SN655 NVMe SSD 3001 RapidFlex C2000 NVMe Initiator 3714 PC SN730 NVMe SSD 3734 PC SN730 NVMe SSD 1b9a XAVi Technologies Corp. 1baa QNAP Systems, Inc. 1bad ReFLEX CES c001 XpressGXA10-LP1150 c002 XpressGXA10-LP1151 1bb0 SimpliVity Corporation 0002 OmniCube Accelerator OA-3000 0010 OmniCube Accelerator OA-3000-2 1bb1 Seagate Technology PLC 005d Nytro PCIe Flash Storage 1bb1 6501 Nytro XP6500-8A1536 1.5TB # 2TB Nytro PCIe controller 1bb1 6502 Nytro XP6500-8A2048 # 4TB Nytro PCIe controller 1bb1 6503 Nytro XP6500-8A4096 # 2GB DRAM variant of Nytro card 1bb1 6511 Nytro XH6550-2GB DRAM # 8GB variant of Nytro PCIe controller 1bb1 6512 Nytro XH6550-8GB DRAM # 1.5 TB Nytro PCIe controller 1bb1 6521 Nytro XP6500-8A1536 1.5TB # 2TB Nytro PCIe controller 1bb1 6522 Nytro XP6500-8A2048 # 4TB Nytro PCIe controller 1bb1 6523 Nytro XP6500-8A4096 0100 Nytro Flash Storage 1bb1 0101 Nytro XF1440 1bb1 0103 Nytro 5000 1bb1 0105 Nytro 5020 1bb1 0106 Nytro 5020 TCG # Larkspur 2.5" 1bb1 0107 Nytro 5320 # Larkspur 2.5" TCG 1bb1 0108 Nytro 5320 TCG 1bb1 0121 Nytro XM1440 1bb1 0123 Nytro 5000 # Kiowa M.2 1bb1 0125 Nytro 5020 # Kiowa M.2 TCG 1bb1 0126 Nytro 5020 # Larkspur M.2 22110mm 1bb1 0127 Nytro 5320 M.2 # Larkspur M.2 22110mm TCG 1bb1 0128 Nytro 5320 M.2 TCG # Larkspur M.2 2280mm 1bb1 0131 Nytro 5320 M.2 # Larkspur M.2 2280mm TCG 1bb1 0132 Nytro 5320 M.2 TCG # Larkspur E1.S 1bb1 0141 Nytro 5320 E1.S # Larkspur E1.S TCG 1bb1 0142 Nytro 5320 E1.S TCG # Kersey 2.5" 1bb1 0151 Nytro 5520 # Kersey 2.5" TCG 1bb1 0152 Nytro 5520 TCG # Nytro 5050H (Ebonhawk - High Performance) 1bb1 0153 Nytro 5050H # Nytro 5050H TCG (Ebonhawk High Performance) 1bb1 0154 Nytro 5050H TCG # Nytro 5050M (Ebonhawk Mainstream Performance) 1bb1 0155 Nytro 5050M # Nytro 5050M TCG (Ebonhawk Mainstream Performance) 1bb1 0156 Nytro 5050M TCG # Nytro 5050M (Ebonhawk Mainstream Performance) - 7mm 1bb1 0157 Nytro 5050M 7mm # Nytro 5050M (Ebonhawk Mainstream Performance) TCG - 7mm 1bb1 0158 Nytro 5050M TCG 7mm # Nytro 5060M (Rocinante Mainstream Performance) - 15mm 1bb1 0159 Nytro 5060M # Nytro 5050M TCG (Rocinante Mainstream Performance) - 15mm 1bb1 0160 Nytro 5060M TCG # Nytro 5060M 7mm (Rocinante Mainstream Performance) 1bb1 0161 Nytro 5060M 7mm # Nytro 5060M TCG (Rocinante Mainstream Performance) - 7mm 1bb1 0162 Nytro 5060M TCG 7mm # Nytro 5060H (Rocinante High Performance) 1bb1 0163 Nytro 5060H # Nytro 5060H TCG (Rocinante High Performance) 1bb1 0164 Nytro 5060H TCG # Nytro 5060H (Rocinante - High Performance) - E3.S 1T 1bb1 0165 Nytro 5060H E3.S 1T # Nytro 5060H (Rocinante - High Performance) - E3.S 1T TCG 1bb1 0166 Nytro 5060H E3.S 1T TCG # Nytro 5060H (Rocinante - High Performance) - E3.L 1T 1bb1 0167 Nytro 5060H E3.L 1T # Nytro 5060H (Rocinante - High Performance) - E3.L 1T TCG 1bb1 0168 Nytro 5060H E3.L 1T TCG # Nytro 5060M (Rocinante Mainstream Performance) - E3.S 1T 1bb1 0169 Nytro 5060M E3.S 1T # Nytro 5060M (Rocinante Mainstream Performance) - E3.S 1T TCG 1bb1 0170 Nytro 5060M E3.S 1T TCG # Nytro 5060M (Rocinante Mainstream Performance) - E3.L 1T 1bb1 0171 Nytro 5060M E3.L 1T # Nytro 5060M (Rocinante Mainstream Performance) - E3.L 1T TCG 1bb1 0172 Nytro 5060M E3.L 1T TCG # Nytro 5060M (Rocinante Mainstream Performance) - E1.S 1bb1 0173 Nytro 5060M E1.S # Nytro 5060M (Rocinante Mainstream Performance) - E1.S TCG 1bb1 0174 Nytro 5060M E1.S TCG # Nytro 5350S (Ebonhawk Single Port) - 15mm 1bb1 0175 Nytro 5350S - 15mm # Nytro 5350S (Ebonhawk Single Port) TCG - 15mm 1bb1 0176 Nytro 5350S TCG - 15mm # Nytro 5360S (Rocinante Single Port) - 15mm 1bb1 0177 Nytro 5360S - 15mm # Nytro 5360S (Rocinante Single Port) TCG - 15mm 1bb1 0178 Nytro 5360S TCG - 15mm # Nytro 5360S (Rocinante Single Port) - E3.S 1bb1 0179 Nytro 5360S - E3.S # Nytro 5360S (Rocinante Single Port) TCG - E3.S 1bb1 0180 Nytro 5360S TCG - E3.S # Nytro 5060H (Rocinante High Performance) non-SED 1bb1 0181 Nytro 5060H 1bb1 01a1 Nytro XP7102 5012 FireCuda/IronWolf 510 SSD 5013 BarraCuda Q5 NVMe SSD (DRAM-less) 5016 FireCuda 520/IronWolf 525 SSD 5018 E18 PCIe SSD 5019 BarraCuda PCIe SSD (DRAM-less) # 2TB 5021 FireCuda 520 SSD # 1TB 5026 FireCuda 540 SSD 1bb3 Bluecherry 4304 BC-04120A MPEG4 4 port video encoder / decoder 4309 BC-08240A MPEG4 4 port video encoder / decoder 4310 BC-16480A MPEG4 16 port video encoder / decoder 4e04 BC-04120A 4 port MPEG4 video encoder / decoder 4e09 BC-08240A 8 port MPEG4 video encoder / decoder 4e10 BC-16480A 16 port MPEG4 video encoder / decoder 5304 BC-H04120A 4 port H.264 video and audio encoder / decoder 5308 BC-H08240A 8 port H.264 video and audio encoder / decoder 5310 BC-H16480A 16 port H.264 video and audio encoder / decoder 1bb5 Quantenna Communications, Inc. 1bbf Maxeler Technologies Ltd. 0003 MAX3 0004 MAX4 1bc0 Innodisk Corporation 1001 PCIe 3TG6-P Controller 1002 PCIe 3TE6 Controller (DRAM-less) 1160 PCIe 3TE2 Controller 1321 PCIe 4TG-P Controller 1322 PCIe 4TE Controller 2262 PCIe 3TG3-P Controller 5208 PCIe 3TE7 Controller 5216 PCIe 3TE8 Controller 5236 PCIe 4TG2-P Controller 1bcd Apacer Technology 0120 NVMe SSD Drive 960GB 1bcf NEC Corporation 001c Vector Engine 1.0 1bd0 Astronics Corporation 1001 Mx5 PMC/XMC Databus Interface Card 1002 PM1553-5 (PC/104+ MIL-STD-1553 Interface Card) 1004 AB3000 Series Rugged Computer 1005 PE1000 (Multi-Protocol PCIe/104 Interface Card) 1006 webCS Wireless Aircraft Communications Server 1007 AB3000 Series Rugged Computer (Series N) 1008 ME1000 mPCIe Avionics Interface Card 100a NG1 Series Avionics Converter 100b LE5 429 Databus Interface Card 100c LE5 1553 Databus Interface Card 1101 OmniBus II PCIe Multi-Protocol Interface Card 1102 OmniBusBox II Multi-Protocol Interface Core 1103 OmniBus II cPCIe/PXIe Multi-Protocol Interface Card 1200 NG3 Series Mil-Std-1553 Interface 1201 NG3 Series ARINC 429 Interface 1202 NG3 Series Avionics Discrete & Serial Interface 1203 NG3 Series Avionics Discrete Interface 1bd4 IEIT SYSTEMS Co., Ltd 0911 Arria10_PCIe_F10A1150 1000 NS8600G1U160 NVME SSD 1001 NS8600G1U320 NVME SSD 1002 NS8600G1U640 NVME SSD 1003 NS8500G1U192 NVME SSD 1004 NS8500G1U384 NVME SSD 1005 NS8500G1U768 NVME SSD 1006 NS6610G1U160, NS6510G1U192 NVME SSD 1007 NS6610G1U320, NS6510G1U384 NVME SSD 100c NS8510G1Uxxx, NS8610G1Uxxx NVME SSD 100e NS8500G2Uxxxx, NS8600G2Uxxxx NVME SSD 1bee IXXAT Automation GmbH 0002 CAN-IB100/PCIe 0003 CAN-IB200/PCIe 0004 CAN-IB120/PCIe Mini 0005 CAN-IB130/PCIe 104 0006 CAN-IB230/PCIe 104 000e CAN-IB500/PCIe 000f CAN-IB600/PCIe 0010 CAN-IB300/PCI 0011 CAN-IB400/PCI 0012 CAN-IB520/PCIe Mini 0016 CAN-IB410/PMC 001c CAN-IB810/PMC 001e INpact PCIe 001f INpact PCIe Mini 0029 INpact M.2 002d CAN-IB630/PCIe 104 002e CAN-IB640/PCIe 1bef Lantiq 0011 MIPS SoC PCI Express Port 1bf4 VTI Instruments Corporation 0001 SentinelEX 7011 RX0xxx 1bf5 Greenliant 1000 G7200 series U.2 NVMe SSD 1bfc Duagon AG 1bfd EeeTOP 1c00 Nanjing Qinheng Microelectronics Co., Ltd. 2170 CH351 PCIe Parallel Port Adapter 2273 CH351 PCIe Dual Port Serial Adapter 3050 CH382L PCIe Parallel Port Adapter 3250 CH384 Dual Port Serial and Parallel Port Adapter 3252 CH382 PCIe Dual Port Serial Adapter # Device ID reused: CH352 is for PCI bus, CH382 for PCIe. 3253 CH352/CH382 PCI/PCIe Dual Port Serial Adapter 1c09 CSP, Inc. 4254 10G-PCIE3-8D-2S 4255 10G-PCIE3-8D-Q 4256 10G-PCIE3-8D-2S 4258 10G-PCIE3-8E-2S Network Adapter 4260 10G-PCIE3-8E-4S Network Adapter 4261 10G-PCIE3-8E-4S Network Adapter 4262 10G-PCIE3-8E-4S Network Adapter 4263 10G-PCIE3-8E-4S Network Adapter 4264 10G-PCIE3-8E-2S Network Adapter 4265 10G-PCIE3-8E-2S Network Adapter 5000 25G-PCIE3-8A-2S Security Intelligent Adapter 5001 25G-PCIE3-8B-2S Security Intelligent Adapter 1c1c Symphony 0001 82C101 1c1f SoftLab-NSK 0015 FD842 0019 FD722 001a FD788 001b FD720 001c FD922 001d Vega 001f FD940 0020 FD2110 0021 FD722 0022 FD788 0023 FD722-M2 0024 FD722 with bypass 1c28 Lite-On IT Corp. / Plextor 0122 M6e PCI Express SSD [Marvell 88SS9183] # previously Fiberblaze 1c2c Silicom Denmark 000a Capture 000f SmartNIC 00a0 FBC4G Capture 4x1Gb [Herculaneum] 00a1 FBC4XG Capture 4x10Gb [Ancona] 00a2 FBC8XG Capture 8x10Gb [Livorno] 00a3 FBC2XG Capture 2x10Gb [Genoa] 00a4 FBC4XGG3 Capture 4x10Gb [Livigno] 00a5 FBC2XLG Capture 2x40Gb [Livorno] 00a6 FBC1CG Capture 1x100Gb 00a9 FBC2XGHH Capture 2x10Gb [Latina] 00ad FBC2CGG3HL Capture 2x100Gb [Padua] 00af Capture slave device 00e0 PacketMover 2x100Gb [Savona] 00e1 PacketMover 2x100Gb [Tivoli] 00e2 PacketMover 2x100Gb [Mango_04] 00e3 PacketMover 2x10Gb [Tivoli] 00e5 PacketMover 2x10Gb [Corfu] 1000 SmartNIC N5010 4x100Gb 1001 SmartNIC N5011 w/2xE810 4x100Gb 1002 SmartNIC N5013 4x100Gb 1003 SmartNIC N5014 w/2xE810 4x100Gb a000 FBC2CGG3 Capture 2x40Gb [Mango_02] a001 FBC2CGG3 Capture 2x100Gb [Mango_02] a003 FBC2CGG3 Capture 16x10Gb [Mango] a006 FBC2CGG3 Capture 2x100Gb [Mango] a007 FBC2CGG3 Capture 2x40Gb [Mango] a008 FBC2CGG3 Capture 2x25Gb [Mango] a009 FBC2CGG3 Capture 16x10Gb [Mango] a00a FBC2CGG3 Capture 8x10Gb [Mango] a00e FB2CG Capture 2x100Gb [Savona] a00f FB2CG Capture 2x40Gb [Savona] a010 FB2CGHH Capture 2x40Gb [Tivoli] a011 FB2CG Capture 2x25Gb [Savona] a012 FB2CG Capture 8x10Gb [Savona] a013 FB2CGHH Capture 2x25Gb [Tivoli] a014 FB2CGHH Capture 8x10Gb [Tivoli] a015 FB2CGHH Capture 2x100Gb [Tivoli] a016 FB2CG Capture 8x25Gb [Savona] a017 FB2CGHH Capture 8x25Gb [Tivoli] a017 # Used on V120 VME Crate Controller 1c32 Highland Technology, Inc. 1c33 Daktronics, Inc 1c36 Annapurna Labs Ltd. 0001 Gigabit Ethernet Adapter 0002 SFP+ 10G Ethernet Adapter 1c3b Accensus, LLC 0200 Telas2 # http://www.accensusllc.com/accensustelas2.html 0300 Telas 2.V 1c44 Enmotus Inc 1100 Fuzedrive NVMe SSD 8000 8000 Storage IO Controller # A Western Digital Subsidiary 1c58 HGST, Inc. 0003 Ultrastar SN100 Series NVMe SSD 1014 04f5 PCIe3 1.6TB NVMe Flash Adapter 1014 04f6 PCIe3 3.2TB NVMe Flash Adapter 1c58 0003 Ultrastar SN100/SN150 NVMe SSD 0023 Ultrastar SN200 Series NVMe SSD 1c58 8823 Ultrastar Memory (ME200) 1c5c SK hynix 1069 PCB01 NVMe Solid State Drive 1282 PC300 NVMe Solid State Drive 128GB 1283 PC300 NVMe Solid State Drive 256GB 1284 PC300 NVMe Solid State Drive 512GB 1285 PC300 NVMe Solid State Drive 1TB 1327 BC501 NVMe Solid State Drive 1339 BC511 NVMe SSD 1504 PC400 NVMe SSD 1527 PC401 NVMe Solid State Drive 256GB 1627 PC601 NVMe Solid State Drive 1639 PC611 NVMe Solid State Drive 1739 BC701 NVMe Solid State Drive 174a Gold P31/BC711/PC711 NVMe Solid State Drive 1959 Platinum P41/PC801 NVMe Solid State Drive 1d59 BC901 NVMe Solid State Drive (DRAM-less) 2204 960GB TLC PCIe Gen3 x4 NVMe M.2 22110 2427 PE6010 NVMe Solid State Drive 2429 PE6011 NVMe Solid State Drive 243b PE6110 NVMe Solid State Drive 1c5c 0100 PE6110 NVMe Solid State Drive 2527 PE4010 NVMe Solid State Drive 2839 PE8000 Series NVMe Solid State Drive 1028 2143 DC NVMe SED PE8010 RI U.2 960GB 1028 2144 DC NVMe PE8010 RI U.2 960GB 1028 2145 DC NVMe SED PE8010 RI U.2 1.92TB 1028 2146 DC NVMe PE8010 RI U.2 1.92TB 1028 2147 DC NVMe SED PE8010 RI U.2 3.84TB 1028 2148 DC NVMe PE8010 RI U.2 3.84TB 1028 2149 DC NVMe SED PE8010 RI U.2 7.68TB 1028 214a DC NVMe PE8010 RI U.2 7.68TB 1c5c 0100 PE8000 Series NVMe Solid State Drive 2849 PE81x0 U.2/3 NVMe Solid State Drive 1028 2262 DC NVMe OPAL PE8110 RI U.2 960GB 1028 2263 DC NVMe OPAL PE8110 RI U.2 1920GB 1028 2264 DC NVMe OPAL PE8110 RI U.2 3840GB 1028 2265 DC NVMe OPAL PE8110 RI U.2 7680GB 1028 2266 DC NVMe ISE PE8110 RI U.2 960GB 1028 2267 DC NVMe ISE PE8110 RI U.2 1920GB 1028 2268 DC NVMe ISE PE8110 RI U.2 3840GB 1028 2269 DC NVMe ISE PE8110 RI U.2 7680GB 1c5c 0101 PE81x0 U.2/3 NVMe Solid State Drive 284a PE8110 Series NVMe Solid State Drive 2a49 PE9110 Series NVMe Solid State Drive 2a59 PE9010 Series NVMe Solid State Drives 2b59 Px10x0 Series NVMe Solid State Drives 1028 2295 NVMe ISE PS1010 RI U.2 1.92TB 1028 2296 NVMe ISE PS1010 RI U.2 3.84TB 1028 2297 NVMe ISE PS1010 RI U.2 7.68TB 1028 2298 NVMe ISE PS1010 RI U.2 15.36TB 1028 2299 NVMe ISE PS1030 MU U.2 1.6TB 1028 229a NVMe ISE PS1030 MU U.2 3.2TB 1028 229b NVMe ISE PS1030 MU U.2 6.4TB 1028 229c NVMe ISE PS1030 MU U.2 12.8TB 1028 22a7 NVMe ISE PS1010 RI E3.S 1.92TB 1028 22a8 NVMe ISE PS1010 RI E3.S 3.84TB 1028 22a9 NVMe ISE PS1010 RI E3.S 7.68TB 1028 22aa NVMe ISE PS1010 RI E3.S 15.36TB 1028 22ab NVMe ISE PS1030 MU E3.S 1.6TB 1028 22ac NVMe ISE PS1030 MU E3.S 3.2TB 1028 22ad NVMe ISE PS1030 MU E3.S 6.4TB 1028 22ae NVMe ISE PS1030 MU E3.S 12.8TB 1028 22dc NVMe FIPS PS1010 RI E3.S 1.92TB 1028 22dd NVMe FIPS PS1010 RI E3.S 3.84TB 1028 22de NVMe FIPS PS1010 RI E3.S 7.68TB 1028 22df NVMe FIPS PS1010 RI E3.S 15.36TB 1028 22e0 NVMe FIPS PS1030 MU E3.S 1.6TB 1028 22e1 NVMe FIPS PS1030 MU E3.S 3.2TB 1028 22e2 NVMe FIPS PS1030 MU E3.S 6.4TB 1028 22e3 NVMe FIPS PS1030 MU E3.S 12.8TB 1028 22f8 NVMe ISE PE1010 RI E3.S 1.92TB 1028 22f9 NVMe ISE PE1010 RI E3.S 3.84TB 1028 22fa NVMe ISE PE1010 RI E3.S 7.68TB 1028 22fb NVMe ISE PE1010 RI E3.S 15.36TB 1028 22fc NVMe ISE PE1030 MU E3.S 1.6TB 1028 22fd NVMe ISE PE1030 MU E3.S 3.2TB 1028 22fe NVMe ISE PE1030 MU E3.S 6.4TB 1028 22ff NVMe ISE PE1030 MU E3.S 12.8TB 1c5f Beijing Memblaze Technology Co. Ltd. 000d PBlaze5 520/526 1c5f 0220 NVMe SSD PBlaze5 520 1920G AIC 1c5f 0221 NVMe SSD PBlaze5 520 1920G 2.5" U.2 1c5f 0230 NVMe SSD PBlaze5 520 3840G AIC 1c5f 0231 NVMe SSD PBlaze5 520 3840G 2.5" U.2 1c5f 4220 NVMe SSD PBlaze5 526 1600G AIC 1c5f 4221 NVMe SSD PBlaze5 526 1600G 2.5" U.2 1c5f 4230 NVMe SSD PBlaze5 526 3200G AIC 1c5f 4231 NVMe SSD PBlaze5 526 3200G 2.5" U.2 000e PBlaze6 6530/6531/6541/6630 1c5f 0b20 NVMe SSD PBlaze6 6530 1920G AIC 1c5f 0b21 NVMe SSD PBlaze6 6530 1920G 2.5" U.2 1c5f 0b25 NVMe SSD PBlaze6 6530 1920G E1.S 1c5f 0b27 NVMe SSD PBlaze6 6630 1920G 2.5" U.2 1c5f 0b30 NVMe SSD PBlaze6 6530 3840G AIC 1c5f 0b31 NVMe SSD PBlaze6 6530 3840G 2.5" U.2 1c5f 0b35 NVMe SSD PBlaze6 6530 3840G E1.S 1c5f 0b37 NVMe SSD PBlaze6 6630 3840G 2.5" U.2 1c5f 0b40 NVMe SSD PBlaze6 6530 7680G AIC 1c5f 0b41 NVMe SSD PBlaze6 6530 7680G 2.5" U.2 1c5f 0b47 NVMe SSD PBlaze6 6630 7680G 2.5" U.2 1c5f 1320 NVMe SSD PBlaze6 6531 1920G AIC 1c5f 1321 NVMe SSD PBlaze6 6531 1920G 2.5" U.2 1c5f 1330 NVMe SSD PBlaze6 6531 3840G AIC 1c5f 1331 NVMe SSD PBlaze6 6531 3840G 2.5" U.2 1c5f 1340 NVMe SSD PBlaze6 6531 7680G AIC 1c5f 1341 NVMe SSD PBlaze6 6531 7680G 2.5" U.2 1c5f 1421 NVMe SSD PBlaze6 6541 1920G 2.5" U.2 1c5f 1427 NVMe SSD PBlaze6 6641 1920G 2.5" U.2(dual port) 1c5f 1431 NVMe SSD PBlaze6 6541 3840G 2.5" U.2 1c5f 1437 NVMe SSD PBlaze6 6641 3840G 2.5" U.2(dual port) 1c5f 1441 NVMe SSD PBlaze6 6541 7680G 2.5" U.2 1c5f 1447 NVMe SSD PBlaze6 6641 7680G 2.5" U.2(dual port) 1c5f 4b20 NVMe SSD PBlaze6 6536 1600G AIC 1c5f 4b21 NVMe SSD PBlaze6 6536 1600G 2.5" U.2 1c5f 4b25 NVMe SSD PBlaze6 6536 1600G E1.S 1c5f 4b27 NVMe SSD PBlaze6 6636 1600G 2.5" U.2 1c5f 4b30 NVMe SSD PBlaze6 6536 3200G AIC 1c5f 4b31 NVMe SSD PBlaze6 6536 3200G 2.5" U.2 1c5f 4b35 NVMe SSD PBlaze6 6536 3200G E1.S 1c5f 4b37 NVMe SSD PBlaze6 6636 3200G 2.5" U.2 1c5f 4b40 NVMe SSD PBlaze6 6536 6400G AIC 1c5f 4b41 NVMe SSD PBlaze6 6536 6400G 2.5" U.2 1c5f 4b47 NVMe SSD PBlaze6 6636 6400G 2.5" U.2 1c5f 5320 NVMe SSD PBlaze6 6537 1600G AIC 1c5f 5321 NVMe SSD PBlaze6 6537 1600G 2.5" U.2 1c5f 5330 NVMe SSD PBlaze6 6537 3200G AIC 1c5f 5331 NVMe SSD PBlaze6 6537 3200G 2.5" U.2 1c5f 5340 NVMe SSD PBlaze6 6537 6400G AIC 1c5f 5341 NVMe SSD PBlaze6 6537 6400G 2.5" U.2 1c5f 5421 NVMe SSD PBlaze6 6547 1600G 2.5" U.2 1c5f 5427 NVMe SSD PBlaze6 6647 1600G 2.5" U.2(dual port) 1c5f 5431 NVMe SSD PBlaze6 6547 3200G 2.5" U.2 1c5f 5437 NVMe SSD PBlaze6 6647 3200G 2.5" U.2(dual port) 1c5f 5441 NVMe SSD PBlaze6 6547 6400G 2.5" U.2 1c5f 5447 NVMe SSD PBlaze6 6647 6400G 2.5" U.2(dual port) 003d PBlaze5 920/926 1c5f 0a30 NVMe SSD PBlaze5 920 3840G AIC 1c5f 0a31 NVMe SSD PBlaze5 920 3840G 2.5" U.2 1c5f 0a40 NVMe SSD PBlaze5 920 7680G AIC 1c5f 0a41 NVMe SSD PBlaze5 920 7680G 2.5" U.2 1c5f 4a30 NVMe SSD PBlaze5 926 3200G AIC 1c5f 4a31 NVMe SSD PBlaze5 926 3200G 2.5" U.2 1c5f 4a40 NVMe SSD PBlaze5 926 6400G AIC 1c5f 4a41 NVMe SSD PBlaze5 926 6400G 2.5" U.2 003e PBlaze6 6920/6930 1c5f 0a31 NVMe SSD PBlaze6 6920 3840GB 2.5" U.2 1c5f 0a41 NVMe SSD PBlaze6 6920 7680GB 2.5" U.2 1c5f 0b31 NVMe SSD PBlaze6 6930 3840GB 2.5" U.3 1c5f 0b41 NVMe SSD PBlaze6 6930 7680GB 2.5" U.3 1c5f 0b51 NVMe SSD PBlaze6 6930 15360GB 2.5" U.3 1c5f 0b61 NVMe SSD PBlaze6 6930 30720GB 2.5" U.3 1c5f 4a31 NVMe SSD PBlaze6 6920 3200GB 2.5" U.2 1c5f 4a41 NVMe SSD PBlaze6 6920 6400GB 2.5" U.2 1c5f 4b41 NVMe SSD PBlaze6 6936 6400GB 2.5" U.3 1c5f 4b51 NVMe SSD PBlaze6 6936 12800GB 2.5" U.3 1c5f 4b61 NVMe SSD PBlaze6 6936 25600GB 2.5" U.3 003f PBlaze7 7940/7946 NVMe SSD 1c5f 0431 NVMe SSD PBlaze7 7940 3840G 2.5" U.2 1c5f 0c31 NVMe SSD PBlaze7 7940 3840G 2.5" U.2 1c5f 0c41 NVMe SSD PBlaze7 7940 7680G 2.5" U.2 1c5f 0c51 NVMe SSD PBlaze7 7940 15360G 2.5" U.2 1c5f 1430 NVMe SSD PBlaze7 7940 3840G AIC 1c5f 1431 NVMe SSD PBlaze7 7940 3840G 2.5" U.2 1c5f 1435 NVMe SSD PBlaze7 7940 3840G E1.S 1c5f 1440 NVMe SSD PBlaze7 7940 7680G AIC 1c5f 1441 NVMe SSD PBlaze7 7940 7680G 2.5" U.2 1c5f 1445 NVMe SSD PBlaze7 7940 7680G E1.S 1c5f 1450 NVMe SSD PBlaze7 7940 15360G AIC 1c5f 1451 NVMe SSD PBlaze7 7940 15360G 2.5" U.2 1c5f 4c31 NVMe SSD PBlaze7 7946 3200G 2.5" U.2 1c5f 4c41 NVMe SSD PBlaze7 7946 6400G 2.5" U.2 1c5f 4c51 NVMe SSD PBlaze7 7946 12800G 2.5" U.2 1c5f 5430 NVMe SSD PBlaze7 7946 3200G AIC 1c5f 5431 NVMe SSD PBlaze7 7946 3200G 2.5" U.2 1c5f 5435 NVMe SSD PBlaze7 7946 3200G E1.S 1c5f 5440 NVMe SSD PBlaze7 7946 6400G AIC 1c5f 5441 NVMe SSD PBlaze7 7946 6400G 2.5" U.2 1c5f 5445 NVMe SSD PBlaze7 7946 6400G E1.S 1c5f 5450 NVMe SSD PBlaze7 7946 12800G AIC 1c5f 5451 NVMe SSD PBlaze7 7946 12800G 2.5" U.2 1ea0 2100 TP2510 Series U.2 NVMe Datacenter SSD(3.84TB) 1ea0 2101 TP2511 Series U.2 NVMe Datacenter SSD(3.84TB) 1ea0 2110 TP2510 Series E3.S NVMe Datacenter SSD(3.84TB) 1ea0 2111 TP2511 Series E3.S NVMe Datacenter SSD(3.84TB) 1ea0 2200 TP2510 Series U.2 NVMe Datacenter SSD(7.68TB) 1ea0 2201 TP2511 Series U.2 NVMe Datacenter SSD(7.68TB) 1ea0 2210 TP2510 Series E3.S NVMe Datacenter SSD(7.68TB) 1ea0 2211 TP2511 Series E3.S NVMe Datacenter SSD(7.68TB) 0540 PBlaze4 NVMe SSD 0550 PBlaze5 700/900 0555 PBlaze5 510/516 0557 PBlaze5 910/916 1c63 Science and Research Centre of Computer Technology (JSC "NICEVT") 0008 K1927BB1Ya [EC8430] Angara Interconnection Network Adapter 1c7e TTTech Computertechnik AG 0200 zFAS Debug Port 1c7f Elektrobit Austria GmbH 5100 EB5100 1c8a TSF5 Corporation 0001 Hunter PCI Express 1c8c Mobiveil, Inc. 1cb0 Shannon Systems 8266 SP4 Series SSD 1cb0 2021 SP4 Series OCS U.2 SSD 1cb0 2121 SP4 Series ZNS U.2 SSD 1cb0 2f21 SP4E Series NVMe U.2 SSD(1920/3840/7680GB) 1cb0 2f22 SP4X Series NVMe U.2 SSD(1600/3200/6400GB) d000 Venice NVMe SSD 1cb0 2010 Venice-E Series OCS U.2 1cb0 2011 Venice Series OCS U.2 1cb0 2012 Venice-X Series OCS U.2 # Venice-E Series NVMe U.2 SSD(1.92T/3.84T/7.68T) 1cb0 2f10 Venice-E Series NVMe U.2 # Venice Series NVMe U.2 SSD(2T/4T/8T) 1cb0 2f11 Venice Series NVMe U.2 # Venice-X Series NVMe U.2 SSD(1.6T/3.2T/6.4T) 1cb0 2f12 Venice-X Series NVMe U.2 1cb0 a010 Venice-E Series OCS AIC 1cb0 a012 Venice-X Series OCS AIC # Venice-E Series NVMe AIC SSD(1.92T/3.84T/7.68T) 1cb0 af10 Venice-E Series NVMe AIC # Venice-X Series NVMe AIC SSD(1.6T/3.2T/6.4T) 1cb0 af12 Venice-X Series NVMe AIC 1cb1 Collion UG & Co.KG 1cb5 Focusrite Audio Engineering Ltd 0002 Clarett 1cb8 Dawning Information Industry Co., Ltd. 1cc1 ADATA Technology Co., Ltd. 1202 IM2P32A8 NVMe SSD (DRAM-less) # SX6000LNP 2263 XPG SX6000 Lite NVMe SSD (DRAM-less) 32a8 SM2P32A8 NVMe SSD (DRAM-less) 33f3 IM2P33F3 NVMe SSD (DRAM-less) 33f4 IM2P33F4 NVMe SSD (DRAM-less) 33f8 IM2P33F8 series NVMe SSD (DRAM-less) 41c3 SM2P41C3 NVMe SSD (DRAM-less) 41c8 SM2P41C8 NVMe SSD (DRAM-less) 5236 XPG GAMMIX S70 BLADE NVMe SSD 5350 XPG GAMMIX S50, S50 Lite NVMe SSD # PREMIUM NVMe SSD for PlayStation 5 5370 GAMMIX S70 BLADE, PS5 PREMIUM NVMe SSD 5762 FALCON, GAMMIX S41, SPECTRIX S40G NVMe SSD (DRAM-less) 5763 XPG GAMMIX S5 NVMe SSD (DRAM-less) 5766 XPG GAMMIXS1 1L, XPG GAMMIX S5, LEGEND 710 / 740, SWORDFISH NVMe SSD (DRAM-less) 5772 LEGEND 850 LITE NVMe SSD (DRAM-less) 612a LEGEND 750 NVMe SSD (DRAM-less) 613a ATOM 50, LEGEND 840 NVMe SSD (DRAM-less) 621a LEGEND 850 NVMe SSD (DRAM-less) 622a LEGEND 960 NVMe SSD 624a LEGEND 700, XPG GAMMIX S20 NVMe SSD (DRAM-less) # 1TB 627a LEGEND 800 NVMe SSD (DRAM-less) # 500GB 628a LEGEND 800 NVMe SSD (DRAM-less) 8201 XPG SX8200 Pro PCIe Gen3x4 M.2 2280 Solid State Drive 1cc4 Shenzhen Unionmemory Information System Ltd. 1203 NVMe SSD Controller UHXXXa series 1cc4 a121 NVMe SSD UHXXXa series U.2 960GB 1cc4 a122 NVMe SSD UHXXXa series U.2 1920GB 1cc4 a123 NVMe SSD UHXXXa series U.2 3840GB 1cc4 a124 NVMe SSD UHXXXa series U.2 7680GB 1cc4 a125 NVMe SSD UHXXXa series U.2 15360GB 1cc4 a211 NVMe SSD UHXXXa series U.2 800GB 1cc4 a212 NVMe SSD UHXXXa series U.2 1600GB 1cc4 a213 NVMe SSD UHXXXa series U.2 3200GB 1cc4 a214 NVMe SSD UHXXXa series U.2 6400GB 1cc4 e122 NVMe SSD UH711a series U.2 1920GB 1cc4 e123 NVMe SSD UH711a series U.2 3840GB 1cc4 e124 NVMe SSD UH711a series U.2 7680GB 17a9 RPITJ1TBVME2HWD NVMe SSD 1024GB 17aa AH631 PCIe 3.0 NVMe SSD 512GB 17ab AH631 PCIe 3.0 NVMe SSD 256GB 2263 AM611 PCIe 3.0 x2 NVMe SSD 256GB 5008 AM610 PCIe 3.0 x2 NVMe SSD 128GB, 256GB 5012 RPITJ512PED2OWX NVMe SSD 512GB 5212 AM521 PCIe 3.0 NVMe SSD 256GB 6201 AM620 PCIe 3.0 NVMe SSD 128GB 6202 AM620 PCIe 3.0 NVMe SSD 256GB 6203 AM620 PCIe 3.0 NVMe SSD 512GB 6204 AM620 PCIe 3.0 NVMe SSD 1024GB 6302 AM630 PCIe 4.0 NVMe SSD 256GB 6303 AM630 PCIe 4.0 x4 NVMe SSD Controller 6304 AM630 PCIe 4.0 NVMe SSD 1024GB 6a02 AM6A0 PCIe 4.0 NVMe SSD 256GB 6a03 RPETJ512MKP1QDQ PCIe 4.0 NVMe SSD 512GB (DRAM-less) 6a13 RPJYJ512MKN1QWQ PCIe 4.0 NVMe SSD 512GB (DRAM-less) 6a14 RPEYJ1T24MKN2QWY PCIe 4.0 NVMe SSD 1024GB (DRAM-less) 8030 NVMe SSD Controller UH8X2X/UH7X2X series 1cc4 1122 NVMe SSD UH812a U.2 1.92TB 1cc4 1123 NVMe SSD UH812a U.2 3.84TB 1cc4 1124 NVMe SSD UH812a U.2 7.68TB 1cc4 1125 NVMe SSD UH812a U.2 15.36TB 1cc4 1222 NVMe SSD UH812a E3.S 1.92TB 1cc4 1223 NVMe SSD UH812a E3.S 3.84TB 1cc4 1224 NVMe SSD UH812a E3.S 7.68TB 1cc4 1225 NVMe SSD UH812a E3.S 15.36TB 1cc4 2112 NVMe SSD UH832a U.2 1.6TB 1cc4 2113 NVMe SSD UH832a U.2 3.2TB 1cc4 2114 NVMe SSD UH832a U.2 6.4TB 1cc4 2115 NVMe SSD UH832a U.2 12.8TB 1cc4 2212 NVMe SSD UH832a E3.S 1.6TB 1cc4 2213 NVMe SSD UH832a E3.S 3.2TB 1cc4 2214 NVMe SSD UH832a E3.S 6.4TB 1cc4 2215 NVMe SSD UH832a E3.S 12.8TB 1cc4 3122 NVMe SSD UH712a U.2 1.92TB 1cc4 3123 NVMe SSD UH712a U.2 3.84TB 1cc4 3124 NVMe SSD UH712a U.2 7.68TB 1cc4 3125 NVMe SSD UH712a U.2 15.36TB 1cc5 Embedded Intelligence, Inc. 0100 PCIe-CAN-02 Dual CAN bus (9-pin male). PCI Express x1. 0101 PCIe-CAN-01 Single CAN bus (9-pin male). PCI Express x1. 1cc7 Radian Memory Systems Inc. 0200 RMS-200 PCIe NVMe SSD 0250 RMS-250 U.2 NVMe SSD 1ccf Zoom Corporation 0001 TAC-2 Thunderbolt Audio Converter 1cd2 Seskion GmbH 0301 Simulyzer-RT CompactPCI Serial DIO-1 card 0302 Simulyzer-RT CompactPCI Serial PSI5-ECU-1 card 0303 Simulyzer-RT CompactPCI Serial PSI5-SIM-1 card 0304 Simulyzer-RT CompactPCI Serial PWR-ANA-1 card 0305 Simulyzer-RT CompactPCI Serial CAN-1 card # supports 8x CAN (-FD) interfaces 0306 Simulyzer-RT CompactPCI Serial CAN-2 card (CAN-FD) 0307 Simulyzer-RT CompactPCI Serial DIO-2 card [Xilinx Zynq UltraScale+] 0308 Simulyzer-RT CompactPCI Serial SENT-DIO-2 card # 8-Channel ADC 0309 Simulyzer-RT CompactPCI Serial SN-ADC card 1cd7 Nanjing Magewell Electronics Co., Ltd. 0002 Pro Capture AIO 0010 Pro Capture Endpoint 0014 PRO CAPTURE AIO 4K PLUS 0017 PRO CAPTURE AIO 4K 0051 Eco Capture Dual HDMI M.2 0052 Eco Capture HDMI 4K M.2 0053 Eco Capture Dual SDI M.2 0054 Eco Capture Quad SDI M.2 1cdd secunet Security Networks AG 1ce4 Exablaze 0001 ExaNIC X4 0002 ExaNIC X2 0003 ExaNIC X10 0004 ExaNIC X10-GM 0005 ExaNIC X40 0006 ExaNIC X10-HPT 0007 ExaNIC X40 0008 ExaNIC V5P 0009 ExaNIC X25 000a ExaNIC X100 000b ExaNIC V9P 000c ExaNIC V9P-3 0100 ExaDISK FX1 1cf0 Akitio 1cf7 Subspace Dynamics 1cfa Corsair Memory, Inc 1cfd Mangstor 6300 MX6300 series PCIe x8 NVMe SSD 1d00 Pure Storage 1d05 AIstone Global Limited 6027 B760-N2D5 motherboard 7001 H610-N2 motherboard 1d0f Amazon.com, Inc. 7064 NeuronDevice (Inferentia) 7164 NeuronDevice (Trainium) 1d0f 0000 Trainium 7264 NeuronDevice (Inferentia2) 7364 NeuronDevice (Trainium2) 8061 NVMe EBS Controller cd01 NVMe SSD Controller ec20 Elastic Network Adapter (ENA) efa0 Elastic Fabric Adapter (EFA) efa1 Elastic Fabric Adapter (EFA) efa2 Elastic Fabric Adapter (EFA) 1d17 Zhaoxin 070f ZX-100 PCI Express Root Port 0710 ZX-100/ZX-200 PCI Express Root Port 0711 ZX-100/ZX-200 PCI Express Root Port 0712 ZX-100/ZX-200 PCI Express Root Port 0713 ZX-100/ZX-200 PCI Express Root Port 0714 ZX-100/ZX-200 PCI Express Root Port 0715 ZX-100/ZX-200 PCI Express Root Port 0716 ZX-D PCI Express Root Port 0717 KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 PCI Express Root Port 0718 KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 PCI Express Root Port 0719 KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 PCI Express Root Port 071a KX-5000/KX-6000/KX-6000G/KH-40000 PCI Express Root Port 071b KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 PCI Express Root Port 071c KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 PCI Express Root Port 071d KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 PCI Express Root Port 071e KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 PCI Express Root Port 071f ZX-200 Upstream Port of PCI Express Switch 0720 ZX-200 PCIE RC6 controller 0721 ZX-200 Downstream Port of PCI Express Switch 0722 ZX-200 PCIE P2C bridge 0731 KH-40000 PCI Express Root Port 0732 KH-40000/KX-7000 PCI Express Root Port 0733 KX-7000 PCIE Express Root Port 0734 KX-7000 PCIE Express Root Port 0735 KX-7000 PCIE Express Root Port 0736 KX-7000 PCIE Express Root Port 0737 KX-7000 PCIE Express Root Port 0738 KX-7000 PCIE Express Root Port 0739 KX-7000 PCIE Express Root Port 073a KX-7000 PCIE Express Root Port 073b KX-7000 PCIE Express Root Port 1000 ZX-D Standard Host Bridge 1001 ZX-D/ZX-E/KH-40000/KX-7000 Miscellaneous Bus 1003 ZX-E Standard Host Bridge 1005 KH-40000 Standard Host Bridge 1006 KX-6000G Standard Host Bridge 1007 KX-7000 Standard Host Bridge 3001 ZX-100 Standard Host Bridge 300a ZX-100 Miscellaneous Bus 3038 ZX-100/ZX-200/KX-6000/KX-6000G/KH-40000/KX-7000 Standard Universal PCI to USB Host Controller 3104 ZX-100/ZX-200/KX-6000/KX-6000G/KH-40000/KX-7000 Standard Enhanced PCI to USB Host Controller 31b0 ZX-100/KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 Standard Host Bridge 31b1 ZX-100/KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 Standard Host Bridge 31b2 ZX-100/KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 DRAM Controller 31b3 ZX-100/KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 Power Management Controller 31b4 ZX-100/KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 I/O APIC 31b5 ZX-100/KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 Scratch Device 31b7 ZX-100/KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 Standard Host Bridge 31b8 ZX-100/ZX-D PCI to PCI Bridge 3200 KX-7000 Host Bridge 3288 ZX-100/KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 High Definition Audio Controller 345b ZX-100/KX-5000/KX-6000/KX-6000G/KH-40000 Miscellaneous Bus 3a02 ZX-100 C-320 GPU 3a03 ZX-D C-860 GPU 3a04 KX-6000 C-960 GPU 3a05 KX-7000 C-1190 GPU 3b01 KH-40000 OPI Controller 3b02 KH-40000 OPI Controller 3b03 KH-40000 OPI Controller 3b04 KH-40000 OPI Controller 3c00 KH-40000/KX-7000 DRAM Controller 3c02 KX-6000G DRAM Controller 3d01 KX-6000G C-1080 GPU 9002 ZX-100/ZX-200/KH-40000/KX-7000 EIDE Controller 9003 ZX-100/KX-6000/KX-6000G EIDE Controller 9043 KX-6000G/KH-40000/KX-7000 RAID Controller 9045 ZX-100/ZX-D/ZX-E RAID Accelerator 0 9046 ZX-D/ZX-E RAID Accelerator 1 9083 ZX-100/ZX-200/KX-6000/KX-6000G/KH-40000/KX-7000 StorX AHCI Controller 9084 ZX-100 StorX AHCI Controller 9100 ZX-200 Cross bus 9101 ZX-200 Traffic Controller 9141 ZX-100 High Definition Audio Controller 9142 ZX-D High Definition Audio Controller 9144 ZX-E High Definition Audio Controller 9145 KX-6000G High Definition Audio Controller 9146 KX-7000 High Definition Audio Controller 9180 ZX-200 Networking Gigabit Ethernet Adapter 91c1 KH-40000 ZPI Controller 91c2 KH-40000 ZPI Controller 9202 ZX-100 USB eXtensible Host Controller 9203 ZX-200 USB eXtensible Host Controller 9204 KX-6000/KX-6000G/KX-7000 USB3 xHCI Host Controller 9205 KH-40000 USB eXtensible Host Controller 9206 KX-7000 USB4 Contoller 9286 ZX-D eMMC Host Controller 9300 ZX-100/KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 eSPI Host Controller 9500 KX-7000 I2S Controller 9501 KX-7000 I2S Controller 95d0 ZX-100 Universal SD Host Controller f410 ZX-100/KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 PCI Com Port 1d18 RME 0001 Fireface UFX+ # acquired by Intel 1d1c Barefoot Networks, Inc. 0001 Tofino 1 0010 Tofino 1 0100 Tofino 2 0110 Tofino 2 1d1d CNEX Labs 1f1f QEMU NVM Express LightNVM Controller 2807 8800 series NVMe SSD # CEM Solutions Pvt. Ltd. 1d21 Allo 1d22 Baidu Technology 1380 Cloud Storage Device 3684 Kunlun AI Accelerator 3685 Kunlun2 AI Accelerator [VF] 1d26 Kalray Inc. 0040 Turbocard2 Accelerator 0080 Open Network Interface Card 80G 00c0 Turbocard3 Accelerator 0140 Open Network Interface Card 40G e004 AB01/EMB01 Development Board 1d37 NovaSparks 0013 PM3 0014 PM4 0015 PM4edge 0016 PM4edge User Device 1d40 Techman Electronics (Changshu) Co., Ltd. 5501 XC100C55-xxxx NVME SSD 5c01 XC100C5C-xxxx, XC100E5C-xxxx NVME SSD b100 PV100C55-xxxx NVME SSD 1d44 DPT a400 PM2x24/PM3224 1d49 Lenovo 1d4c Diamanti, Inc. 1d5c Fantasia Trading LLC 1d61 Technobox, Inc. 1d62 Nebbiolo Technologies 1d65 Imagine Communications Corp. 04de Taurus/McKinley # nee Celeno Communications 1d69 Renesas Electronics Corp. 2432 CL2432 2440 CL2440 8000 CL80x0 Wireless Network Adapter 8046 CL8046 Wireless Network Adapter 1d6a Aquantia Corp. 0001 AQC107 NBase-T/IEEE 802.3bz Ethernet Controller [AQtion] 4c52 6880 LREC6880BT Single-port 10Gb Ethernet Network Adapter 00b1 AQtion AQC100 NBase-T/IEEE 802.3an Ethernet Controller [Atlantic 10G] 1043 874a XG-C100F 10GbE SFP+ Ethernet Adapter 00c0 Antigua NBase-T/IEEE 802.3an Ethernet Controller - Engineering Sample 04c0 AQtion AQC113 NBase-T/IEEE 802.3an Ethernet Controller [Antigua 10G] 4c52 1053 LRES1053PT Quad-port 10Gb Ethernet Network Adapter 4c52 2051 LRES2051PT Single-port 10Gb Ethernet Network Adapter 07b1 AQtion AQC107 NBase-T/IEEE 802.3an Ethernet Controller [Atlantic 10G] # Older revision of QNAP QM2 M.2 2280 PCIe SSD & 10GbE Expansion Card 1baa 07b1 QM2-2P10G1TA [QXG 10GbE Network Adapter] # Newer revision of QNAP QM2 M.2 2280 PCIe SSD & 10GbE Expansion Card 1baa 07b2 QM2-2P10G1TA [QM2 Expansion Adapter] 4c52 6880 LREC6880BT Single-port 10Gb Ethernet Network Adapter 08b1 AQC108 NBase-T/IEEE 802.3bz Ethernet Controller [AQtion] 11b1 AQC111 NBase-T/IEEE 802.3bz Ethernet Controller [AQtion] 12b1 AQC112 NBase-T/IEEE 802.3bz Ethernet Controller [AQtion] 12c0 AQtion AQC115C NBase-T/IEEE 802.3bz Ethernet Controller [Antigua 2.5G] 14c0 AQC113C NBase-T/IEEE 802.3an Ethernet Controller [Marvell Scalable mGig] 80b1 AQtion AQC100S NBase-T/IEEE 802.3an Ethernet Controller [Atlantic 10G] 87b1 AQtion AQC107S NBase-T/IEEE 802.3an Ethernet Controller [Atlantic 10G] 93c0 AQtion AQC114CS NBase-T/IEEE 802.3bz Ethernet Controller [Antigua 5G] 94c0 AQtion AQC113CS NBase-T/IEEE 802.3an Ethernet Controller [Antigua 10G] 1043 87f5 ProArt X570-CREATOR WIFI d107 AQtion AQC107 NBase-T/IEEE 802.3an Ethernet Controller [Atlantic 10G] 1043 8741 XG-C100C d108 AQC108 NBase-T/IEEE 802.3bz Ethernet Controller [AQtion] 1d6c Atomic Rules LLC 1001 A5PL-E1 1002 A5PL-E7 1003 S5PEDS-AB 1004 KC705-K325 1005 ZC706-Z045 1006 KCU105-KU040 1007 XUSP3S-VU095 [Jasper] 1008 XUSPL4-VU065 [Mustang UltraScale] 1009 XUSPL4-VU3P [Mustang UltraScale+] 100a A10PL4-A10GX115 100b K35-2SFP 100c K35-4SFP 100d AR-ARKA-FX0 [Arkville 32B DPDK Data Mover] 1d6c 2001 DPDK-Aware Virtual Function [Arkville VF] 100e AR-ARKA-FX1 [Arkville 64B DPDK Data Mover] 1d6c 2001 DPDK-Aware Virtual Function [Arkville VF] 100f AR-ARKA-FX1 [Arkville 64B DPDK Data Mover for Versal] 1010 AR-ARKA-FX1 [Arkville 64B DPDK Data Mover for Agilex] 1011 AR-MAN-U50 [Manitou Class Accelerator for U50] 1012 AR-MAN-U200 [Manitou Class Accelerator for U200] 1013 AR-MAN-U250 [Manitou Class Accelerator for U250] 1014 AR-MAN-U280 [Manitou Class Accelerator for U280] 1015 AR-ARK-BBDEV-FX0 [Arkville 32B DPDK Baseband Device] 1016 AR-ARK-BBDEV-FX1 [Arkville 64B DPDK Baseband Device] 1017 AR-ARK-FX1 [Arkville 64B Multi-Homed Primary Endpoint] 1018 AR-ARK-FX1 [Arkville 64B Multi-Homed Secondary Endpoint] 1019 AR-ARK-FX1 [Arkville 64B Multi-Homed Tertiary Endpoint] 101a AR-ARK-SRIOV-FX0 [Arkville 32B Primary Physical Function] 101b AR-ARK-SRIOV-FX1 [Arkville 64B Primary Physical Function] 101c AR-ARK-SRIOV-VF [Arkville Virtual Function] 101d AR-ARK-NIC [Arkville ArkNIC Kernel Path Device] 101e AR-ARKA-FX1 [Arkville 64B DPDK Data Mover for Agilex R-Tile] 101f AR-TK242 [2x100GbE Packet Capture Device] 1020 AR-GP-PF [General-Purpose Physical Function] 1021 AR-MGMT-PF [Board-Generic Management Physical Function] 1022 AR-ARKA-FX2 [Arkville 128B DPDK Data Mover for Agilex] 1023 AR-BD-FX1 [BufferDirect Zero-Bounce Data Motion Endpoint] 1024 AR-TK242 [2x10GbE Packet Capture Device] 1025 AR-TK242-FX2 [2x100GbE Gen5 Packet Capture Device] 1026 AR-TK242-FX2 [1x200GbE Gen5 Packet Capture Device] 1027 AR-P2P-DBG [P2P Debug Function] 1028 AR-P2P-ATR [P2P Actor Function] 1029 AR-P2P-UTL [P2P Utility Function] 102a AR-TK242-FX2 [4x100GbE Gen5 Packet Capture-Replay Device] 4200 A5PL-E1-10GETI [10 GbE Ethernet Traffic Instrument] 1d72 Xiaomi 1d78 DERA Storage 1512 TAI NVMe Controller 1d78 2004 D5437 HHHL 2TB NVMe SSD 1d78 2006 D5437 HHHL 4TB NVMe SSD 1d78 2008 D5437 HHHL 8TB NVMe SSD 1d78 2104 D5437 U.2 2TB NVMe SSD 1d78 2106 D5437 U.2 4TB NVMe SSD 1d78 2108 D5437 U.2 8TB NVMe SSD 1d78 3003 D5457 HHHL 1.6TB NVMe SSD 1d78 3005 D5457 HHHL 3.2TB NVMe SSD 1d78 3007 D5457 HHHL 6.4TB NVMe SSD 1d78 3103 D5457 U.2 1.6TB NVMe SSD 1d78 3105 D5457 U.2 3.2TB NVMe SSD 1d78 3107 D5457 U.2 6.4TB NVMe SSD 1d78 3108 D5437 U.2 7.68TB NVMe SSD 1d78 5003 D5447 HHHL 1.6TB NVMe SSD 1d78 5004 D5427 HHHL 1.92TB NVMe SSD 1d78 5005 D5447 HHHL 3.2TB NVMe SSD 1d78 5006 D5427 HHHL 3.84TB NVMe SSD 1d78 5007 D5447 HHHL 6.4TB NVMe SSD 1d78 5008 D5427 HHHL 7.68TB NVMe SSD 1d78 5103 D5447 U.2 1.6TB NVMe SSD 1d78 5105 D5447 U.2 3.2TB NVMe SSD 1d78 5106 AF3UP34DTCUN3T8B SSD 1d78 5107 D5447 U.2 6.4TB NVMe SSD 1d78 5114 D5427 U.2 1.92TB NVMe SSD 1d78 5116 D5427 U.2 3.84TB NVMe SSD 1d78 5118 D5427 U.2 7.68TB NVMe SSD 1d78 8107 D5457 U.2 6.4TB NVMe SSD 1513 DERA MENG NVMe Controller 1d78 6015 D6456 HHHL 3.2TB NVMe SSD 1d78 6016 D6436 HHHL 3.84TB NVMe SSD 1d78 6017 D6456 HHHL 6.4TB NVMe SSD 1d78 6018 D6436 HHHL 7.68TB NVMe SSD 1d78 6105 D6457 U.2 3.2TB NVMe SSD 1d78 6106 D6437 U.2 3.84TB NVMe SSD 1d78 6107 D6457 U.2 6.4TB NVMe SSD 1d78 6108 D6437 U.2 7.68TB NVMe SSD 1d78 6115 D6456 U.2 3.2TB NVMe SSD 1d78 6116 D6436 U.2 3.84TB NVMe SSD 1d78 6117 D6456 U.2 6.4TB NVMe SSD 1d78 6118 D6436 U.2 7.68TB NVMe SSD 1515 DERA EMEI NVMe Controller 1d78 7002 D7436 HHHL 1.92TB NVMe SSD 1d78 7003 D7456 HHHL 1.6TB NVMe SSD 1d78 7004 D7436 HHHL 3.84TB NVMe SSD 1d78 7005 D7456 HHHL 3.2TB NVMe SSD 1d78 7007 D7456 HHHL 6.4TB NVMe SSD 1d78 7008 D7436 HHHL 7.68TB NVMe SSD 1d78 7009 D7456 HHHL 12.8TB NVMe SSD 1d78 700a D7436 HHHL 15.36TB NVMe SSD 1d78 7102 D7436 U.2 15mm 1.92TB NVMe SSD 1d78 7103 D7456 U.2 15mm 1.6TB NVMe SSD 1d78 7104 D7436 U.2 15mm 3.84TB NVMe SSD 1d78 7105 D7456 U.2 15mm 3.2TB NVMe SSD 1d78 7107 D7456 U.2 15mm 6.4TB NVMe SSD 1d78 7108 D7436 U.2 15mm 7.68TB NVMe SSD 1d78 7109 D7456 U.2 15mm 12.8TB NVMe SSD 1d78 710a D7436 U.2 15mm 15.36TB NVMe SSD 1d78 7143 D7556 U.2 15mm 1.6TB dual port NVMe SSD 1d78 7144 D7536 U.2 15mm 1.92TB dual port NVMe SSD 1d78 7145 D7556 U.2 15mm 3.2TB dual port NVMe SSD 1d78 7146 D7536 U.2 15mm 3.84TB dual port NVMe SSD 1d78 7147 D7556 U.2 15mm 6.4TB dual port NVMe SSD 1d78 7148 D7536 U.2 15mm 7.68TB dual port NVMe SSD 1d78 7149 D7556 U.2 15mm 12.8TB dual port NVMe SSD 1d78 714a D7536 U.2 15mm 15.36TB dual port NVMe SSD 1d78 7202 Aliflash V2 U.2 15mm 1.92TB NVMe SSD 1d78 7204 Aliflash V2 U.2 15mm 3.84TB NVMe SSD 1d78 7208 Aliflash V2 U.2 15mm 7.68TB NVMe SSD 1d79 Transcend Information, Inc. 2262 NVMe PCIe SSD 220S/MTE662T2 2263 NVMe PCIe SSD 110S/112S/120S/MTE300S/MTE400S/MTE652T2 (DRAM-less) 2264 NVMe PCIe SSD 250H 2267 NVMe PCIe SSD 220S/240S/MTE710T 5766 NVMe PCIe SSD 110Q (DRAM-less) 1d7c Aerotech, Inc. # Fiber-optic HyperWire motion control bus from Aerotech. 0001 HyperWire Adapter 1d82 NETINT Technologies Inc. 0101 Codensity D400 SSD 0102 Codensity D408 PCIe Gen4 NVMe SSD 0202 Codensity T408 Video Encoding-Decoding Accelerator 0401 Quadra Video Processing Unit (VPU) # nee Fuzhou Rockchip Electronics Co., Ltd 1d87 Rockchip Electronics Co., Ltd 0100 RK3399 PCI Express Root Port 1808 RK1808 Neural Network Processor Card 3528 RK3528 PCI Express Root Port 3562 RK3562 PCI Express Root Port 3566 RK3568 Remote Signal Processor 3588 RK3588 1d89 YEESTOR Microelectronics Co., Ltd 0280 PCIe NVMe SSD 1d8f Exegy 1d92 Abaco Systems Inc. 1d93 YADRO 1d94 Chengdu Haiguang IC Design Co., Ltd. 1450 Root Complex 1451 I/O Memory Management Unit 1452 PCIe Dummy Host Bridge 1453 PCIE GPP Bridge 1454 Internal PCIe GPP Bridge 0 to Bus B 1455 PCIe Dummy Function 1456 PSPCCP Command DMA Processor 1458 10 Gb Ethernet Controller Port 0/Port1 1459 10 Gb Ethernet Controller Port 2/Port3 145a PCIe Dummy Function 145b PCIE Non-Transparent Bridge 145c USB3 XHCI 145d Switch upstream in PCIe 145e Switch downstream in PCIe 145f USB 3.0 Host controller 1460 Data Fabric: Device 18h; Function 0 1461 Data Fabric: Device 18h; Function 1 1462 Data Fabric: Device 18h; Function 2 1463 Data Fabric: Device 18h; Function 3 1464 Data Fabric: Device 18h; Function 4 1465 Data Fabric: Device 18h; Function 5 1466 Data Fabric: Device 18h; Function 6 1467 Data Fabric: Device 18h; Function 7 1468 NTBCCP 7901 FCH SATA Controller [AHCI mode] 7904 FCH SATA Controller [AHCI mode] 7906 FCH SD Flash Controller 790b FCH SMBus Controller 790e FCH LPC Bridge 1d95 Graphcore Ltd 0001 Colossus GC2 [C2] 0002 Colossus GC1 [S1] 1d97 Shenzhen Longsys Electronics Co., Ltd. 1062 Lexar NM710 NVME SSD 1160 FORESEE P900 BGA NVMe SSD (DRAM-less) 1202 Lexar NM610 PRO NVME SSD (DRAM-less) 12e4 ORCA 4836 Series eSSD 1602 Lexar NM790 NVME SSD (DRAM-less) 1d97 Lexar NM620 NVME SSD (DRAM-less) 2263 SM2263EN/SM2263XT-based OEM NVME SSD (DRAM-less) 2269 FORESEE XP2000, Lexar NM760 NVME SSD (DRAM-less) 5216 FORESEE XP1000 / Lexar Professional CFexpress Type B Gold series, NM620 PCIe NVME SSD (DRAM-less) 5220 FORESEE XP2100 NVMe SSD (DRAM-less) 5236 Lexar NM800 PRO NVME SSD # nee Facebook, Inc. 1d9b Meta Platforms, Inc. 0010 Networking DOM Engine 0011 IO Bridge 0013 Host Network Interface 1da1 Teko Telecom S.r.l. 1da2 Sapphire Technology Limited 475d Radeon RX 7800 XT [PULSE] e26a Radeon R7 250 e445 Sapphire Radeon RX 6700 1da3 Habana Labs Ltd. 0001 HL-1000 AI Inference Accelerator [Goya] # PCIe accelerator card for Deep Learning inference tasks 0030 Greco AI Inference Accelerator # PCIe accelerator card for Deep Learning training tasks 1000 HL-2000 AI Training Accelerator [Gaudi] # PCIe accelerator card for Deep Learning training tasks with secured firmware 1010 HL-2000 AI Training Accelerator [Gaudi secured] # PCIe accelerator card for Deep Learning training tasks 1020 Gaudi2 AI Training Accelerator 1da8 Corigine, Inc. 3800 Network Flow Processor 3800 3803 Network Flow Processor 3800 Virtual Function 1dad Fungible 0108 FC50, FC100, FC200 DPU NVMeoF Adapters 1db2 ATP ELECTRONICS INC 1db7 Phytium Technology Co., Ltd. dc20 [X100 Series] dc21 VPU Controller [X100 Series] dc22 DC Controller [X100 Series] dc23 I2S/DMA Controller [X100 Series] dc24 NPU Controller [X100 Series] dc26 SATA Controller [X100 Series] dc27 USB Controller [X100 Series] dc29 NANDFLASH Controller [X100 Series] dc2b I2S Controller [X100 Series] dc2c SPIM Controller [X100 Series] dc2d CAN Controller [X100 Series] dc2e UART Controller [X100 Series] dc2f PWM Controller [X100 Series] dc30 MIO Controller [X100 Series] dc31 GPIO Controller [X100 Series] dc32 SMBUS Controller [X100 Series] dc34 PS2 Controller [X100 Series] dc35 LPC Controller [X100 Series] dc36 LDMA Controller [X100 Series] dc38 LSD_CFG Controller [X100 Series] dc3a SWITCH Controller [X100 Series] dc3c GPU_DMA Controller [X100 Series] 1dbb NGD Systems, Inc. 1dbe INNOGRIT Corporation 5216 NVMe SSD Controller IG5216 (DRAM-less) 5220 NVMe SSD Controller IG5220 (DRAM-less) 5236 NVMe SSD Controller IG5236 1dbe 4001 Dongting-B1 DC SSD M.2 480GB 1dbe 4002 Dongting-B1 DC SSD M.2 960GB 5636 NVMe DC SSD IG5636 1dbe 0001 Dongting-N1 DC SSD U.2 1600GB 1dbe 0002 Dongting-N1 DC SSD U.2 1920GB 1dbe 0003 Dongting-N1 DC SSD U.2 3200GB 1dbe 0004 Dongting-N1 DC SSD U.2 3840GB 1dbe 0005 Dongting-N1 DC SSD U.2 6400GB 1dbe 0006 Dongting-N1 DC SSD U.2 7680GB 1dbe 1001 Donghu-Z1 DC ZNS SSD U.2 4000GB 1dbe 1002 Donghu-Z1 DC ZNS SSD U.2 8000GB 5638 NVMe DC SSD IG5638 1dbe 2001 Dongting-N2 DC SSD U.2 1600GB 1dbe 2002 Dongting-N2 DC SSD U.2 1920GB 1dbe 2003 Dongting-N2 DC SSD U.2 3200GB 1dbe 2004 Dongting-N2 DC SSD U.2 3840GB 1dbe 2005 Dongting-N2 DC SSD U.2 6400GB 1dbe 2006 Dongting-N2 DC SSD U.2 7680GB 1dbe 3001 Donghu-Z2 DC ZNS SSD U.2 4000GB 1dbe 3002 Donghu-Z2 DC ZNS SSD U.2 8000GB 5666 NVMe SSD Controller IG5666 5668 NVMe PCIe 5.0 DC SSD 1dbe 5003 Dongting-N3 DC SSD U.2 3200GB 1dbe 5004 Dongting-N3 DC SSD U.2 3840GB 1dbe 5005 Dongting-N3 DC SSD U.2 6400GB 1dbe 5006 Dongting-N3 DC SSD U.2 7680GB 1dbe 5007 Dongting-N3 DC SSD U.2 12800GB 1dbe 5008 Dongting-N3 DC SSD U.2 15360GB 1dbe 5009 Dongting-N3 DC SSD U.2 25600GB 5669 NVMe SSD Controller IG5669 [Tacoma] 1dbf Guizhou Huaxintong Semiconductor Technology Co., Ltd 0401 StarDragon4800 PCI Express Root Port 1dc2 Alco Digital Devices Limited 1dc5 FADU Inc. 4081 FC4121 PCIe 4.0 NVMe controller [DELTA] 6150 FC3081 PCIe 3.0 NVMe controller [BRAVO] 1dcd Liqid Inc. 1dcf Beijing Sinead Technology Co., Ltd. 1dd3 Sage Microelectronics Corp. 1dd4 Swissbit AG 0010 N-10m2 NVMe SSD 0016 N-16 0020 EN-20 BGA NVMe SSD (DRAM-less) 1dd8 AMD Pensando Systems 0002 DSC2 Elba Upstream Port 1dd8 100e Distributed Services Card 1dd8 5001 DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card 1dd8 5003 DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card 1dd8 5008 DSC25v2 10/25G 2p 32GB Spl Card 1dd8 5009 DSC2-25 10/25G 2p SFP56 DPU 1dd8 500a DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R2 1dd8 500b DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU 1dd8 500c DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R3 1dd8 500d DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4 1dd8 500e DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R5 1dd8 500f DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4-T 1000 DSC Capri Upstream Port 1dd8 4000 Naples 100Gb 2-port QSFP28 x16 8GB 1dd8 4001 Naples 100Gb 2-port QSFP28 x16 4GB 1dd8 4002 Naples 25Gb 2-port SFP28 x8 4GB 1dd8 4007 DSP DSC-25 Ent 10/25G OCP3 Card 1dd8 4008 DSP DSC-25 10/25G 2p SFP28 Card 1dd8 400a DSC-100 40/100G 2-port 8G RAM 16G eMMC G1 Services Card 1dd8 400c DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card 1dd8 400d DSP DSC-100 Ent 100Gb Card 1dd8 400e DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card 1dd8 4014 DSC-100 40/100G 2-port 8G RAM 16G eMMC G1 Services Card 1001 DSC Virtual Downstream Port 1dd8 100e Distributed Services Card 1dd8 4000 Naples 100Gb 2-port QSFP28 x16 8GB 1dd8 4001 Naples 100Gb 2-port QSFP28 x16 4GB 1dd8 4002 Naples 25Gb 2-port SFP28 x8 4GB 1dd8 4007 DSP DSC-25 Ent 10/25G OCP3 Card 1dd8 4008 DSP DSC-25 10/25G 2p SFP28 Card 1dd8 400a DSC-100 40/100G 2-port 8G RAM 16G eMMC G1 Services Card 1dd8 400c DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card 1dd8 400d DSP DSC-100 Ent 100Gb Card 1dd8 400e DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card 1dd8 4014 DSC-100 40/100G 2-port 8G RAM 16G eMMC G1 Services Card 1dd8 5001 DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card 1dd8 5003 DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card 1dd8 5008 DSC25v2 10/25G 2p 32GB Spl Card 1dd8 5009 DSC2-25 10/25G 2p SFP56 DPU 1dd8 500a DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R2 1dd8 500b DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU 1dd8 500c DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R3 1dd8 500d DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4 1dd8 500e DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R5 1dd8 500f DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4-T 1002 DSC Ethernet Controller 1dd8 100e Distributed Services Card 1dd8 4000 Naples 100Gb 2-port QSFP28 x16 8GB 1dd8 4001 Naples 100Gb 2-port QSFP28 x16 4GB 1dd8 4002 Naples 25Gb 2-port SFP28 x8 4GB 1dd8 4007 DSP DSC-25 Ent 10/25G OCP3 Card 1dd8 4008 DSP DSC-25 10/25G 2p SFP28 Card 1dd8 400a DSC-100 40/100G 2-port 8G RAM 16G eMMC G1 Services Card 1dd8 400c DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card 1dd8 400d DSP DSC-100 Ent 100Gb Card 1dd8 400e DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card 1dd8 4014 DSC-100 40/100G 2-port 8G RAM 16G eMMC G1 Services Card 1dd8 5001 DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card 1dd8 5003 DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card 1dd8 5008 DSC25v2 10/25G 2p 32GB Spl Card 1dd8 5009 DSC2-25 10/25G 2p SFP56 DPU 1dd8 500a DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R2 1dd8 500b DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU 1dd8 500c DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R3 1dd8 500d DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4 1dd8 500e DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R5 1dd8 500f DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4-T 1003 DSC Ethernet Controller VF 1dd8 100e Distributed Services Card 1dd8 4000 Naples 100Gb 2-port QSFP28 x16 8GB 1dd8 4001 Naples 100Gb 2-port QSFP28 x16 4GB 1dd8 4002 Naples 25Gb 2-port SFP28 x8 4GB 1dd8 4007 DSP DSC-25 Ent 10/25G OCP3 Card 1dd8 4008 DSP DSC-25 10/25G 2p SFP28 Card 1dd8 400a DSC-100 40/100G 2-port 8G RAM 16G eMMC G1 Services Card 1dd8 400c DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card 1dd8 400d DSP DSC-100 Ent 100Gb Card 1dd8 400e DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card 1dd8 4014 DSC-100 40/100G 2-port 8G RAM 16G eMMC G1 Services Card 1dd8 5001 DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card 1dd8 5003 DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card 1dd8 5008 DSC25v2 10/25G 2p 32GB Spl Card 1dd8 5009 DSC2-25 10/25G 2p SFP56 DPU 1dd8 500a DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R2 1dd8 500b DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU 1dd8 500c DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R3 1dd8 500d DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4 1dd8 500e DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R5 1dd8 500f DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4-T 1004 DSC Management Controller 1dd8 100e Distributed Services Card 1dd8 4000 Naples 100Gb 2-port QSFP28 x16 8GB 1dd8 4001 Naples 100Gb 2-port QSFP28 x16 4GB 1dd8 4002 Naples 25Gb 2-port SFP28 x8 4GB 1dd8 4007 DSP DSC-25 Ent 10/25G OCP3 Card 1dd8 4008 DSP DSC-25 10/25G 2p SFP28 Card 1dd8 400a DSC-100 40/100G 2-port 8G RAM 16G eMMC G1 Services Card 1dd8 400c DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card 1dd8 400d DSP DSC-100 Ent 100Gb Card 1dd8 400e DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card 1dd8 4014 DSC-100 40/100G 2-port 8G RAM 16G eMMC G1 Services Card 1dd8 5001 DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card 1dd8 5003 DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card 1dd8 5008 DSC25v2 10/25G 2p 32GB Spl Card 1dd8 5009 DSC2-25 10/25G 2p SFP56 DPU 1dd8 500a DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R2 1dd8 500b DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU 1dd8 500c DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R3 1dd8 500d DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4 1dd8 500e DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R5 1dd8 500f DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4-T 1005 DSC NVMe Controller 1dd8 100e Distributed Services Card 1dd8 5001 DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card 1dd8 5003 DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card 1dd8 5008 DSC25v2 10/25G 2p 32GB Spl Card 1dd8 5009 DSC2-25 10/25G 2p SFP56 DPU 1dd8 500a DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R2 1dd8 500b DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU 1dd8 500c DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R3 1dd8 500d DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4 1dd8 500e DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R5 1dd8 500f DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4-T 1006 DSC NVMe Controller VF 1dd8 100e Distributed Services Card 1dd8 5001 DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card 1dd8 5003 DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card 1dd8 5008 DSC25v2 10/25G 2p 32GB Spl Card 1dd8 5009 DSC2-25 10/25G 2p SFP56 DPU 1dd8 500a DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R2 1dd8 500b DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU 1dd8 500c DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R3 1dd8 500d DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4 1dd8 500e DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R5 1dd8 500f DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4-T 1007 DSC Storage Accelerator 1dd8 100e Distributed Services Card 1dd8 4000 Naples 100Gb 2-port QSFP28 x16 8GB 1dd8 4001 Naples 100Gb 2-port QSFP28 x16 4GB 1dd8 4002 Naples 25Gb 2-port SFP28 x8 4GB 1dd8 4007 DSP DSC-25 Ent 10/25G OCP3 Card 1dd8 4008 DSP DSC-25 10/25G 2p SFP28 Card 1dd8 400a DSC-100 40/100G 2-port 8G RAM 16G eMMC G1 Services Card 1dd8 400c DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card 1dd8 400d DSP DSC-100 Ent 100Gb Card 1dd8 400e DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card 1dd8 4014 DSC-100 40/100G 2-port 8G RAM 16G eMMC G1 Services Card 1dd8 5001 DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card 1dd8 5003 DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card 1dd8 5008 DSC25v2 10/25G 2p 32GB Spl Card 1dd8 5009 DSC2-25 10/25G 2p SFP56 DPU 1dd8 500a DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R2 1dd8 500b DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU 1dd8 500c DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R3 1dd8 500d DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4 1dd8 500e DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R5 1dd8 500f DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4-T 1009 DSC Ethernet Controller UPT 1dd8 100e Distributed Services Card 1dd8 5001 DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card 1dd8 5003 DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card 1dd8 5008 DSC25v2 10/25G 2p 32GB Spl Card 1dd8 5009 DSC2-25 10/25G 2p SFP56 DPU 1dd8 500a DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R2 1dd8 500b DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU 1dd8 500c DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R3 1dd8 500d DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4 1dd8 500e DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R5 1dd8 500f DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4-T 100a DSC Serial Port Controller 1dd8 100e Distributed Services Card 1dd8 5001 DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card 1dd8 5003 DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card 1dd8 5008 DSC25v2 10/25G 2p 32GB Spl Card 1dd8 5009 DSC2-25 10/25G 2p SFP56 DPU 1dd8 500a DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R2 1dd8 500b DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU 1dd8 500c DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R3 1dd8 500d DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4 1dd8 500e DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R5 1dd8 500f DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4-T 100b DSC vDPA Network Device VF 1dd8 100e Distributed Services Card 1dd8 5001 DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card 1dd8 5003 DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card 1dd8 5008 DSC25v2 10/25G 2p 32GB Spl Card 1dd8 5009 DSC2-25 10/25G 2p SFP56 DPU 1dd8 500a DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R2 1dd8 500b DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU 1dd8 500c DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R3 1dd8 500d DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4 1dd8 500e DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R5 1dd8 500f DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4-T 100c DSC PDS Core Management 1dd8 100e Distributed Services Card 1dd8 5001 DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card 1dd8 5003 DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card 1dd8 5008 DSC25v2 10/25G 2p 32GB Spl Card 1dd8 5009 DSC2-25 10/25G 2p SFP56 DPU 1dd8 500a DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R2 1dd8 500b DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU 1dd8 500c DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R3 1dd8 500d DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4 1dd8 500e DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R5 1dd8 500f DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4-T 100d DSC Virtio Network Device VF 1dd8 100e Distributed Services Card 1dd8 5001 DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card 1dd8 5003 DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card 1dd8 5008 DSC25v2 10/25G 2p 32GB Spl Card 1dd8 5009 DSC2-25 10/25G 2p SFP56 DPU 1dd8 500a DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R2 1dd8 500b DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU 1dd8 500c DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R3 1dd8 500d DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4 1dd8 500e DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R5 1dd8 500f DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4-T 1ddd Thorlabs 1de0 Groq 0000 TSP [GroqChip] 1de0 0000 GC1-010X-ES [GroqCard] 1de0 c005 GC1-010B [GroqCard] 1de0 c006 GC1-0109 [GroqCard] 1de0 c007 GC1-0100 [GroqCard] 1de1 Tekram Technology Co.,Ltd. 0391 TRM-S1040 [DC-315 / DC-395 series] 2020 DC-390 Series SCSI Adapter [AMD Am53C974] 690c 690c dc29 DC290 1de4 Raspberry Pi Ltd 0001 RP1 PCIe 2.0 South Bridge 1de5 Eideticom, Inc 1000 IO Memory Controller 2000 NoLoad Hardware Development Kit 3000 eBPF-based PCIe Accelerator 1ded Alibaba (China) Co., Ltd. # A RDMA (iWarp) device provided by Alibaba Cloud used in ECS environment 107f Elastic RDMA Adapter 5007 Elastic RDMA Adapter 8000 M1 Root Port 8001 ACC-RCiEP 8002 RCiEP VF 8003 RCEC PF 8004 RCEC VF 1dee Biwin Storage Technology Co., Ltd. 2262 HP EX950 NVMe SSD 2263 HP EX900 NVMe SSD (DRAM-less) 4121 PCIe 4.0 SP406/416 NVMe SSD 1dee 0000 NVMe SSD SP416 800G 2.5" U.2 1dee 0001 NVMe SSD SP416 1.6T 2.5" U.2 1dee 0002 NVMe SSD SP416 3.2T 2.5" U.2 1dee 0003 NVMe SSD SP416 6.4T 2.5" U.2 1dee 0010 NVMe SSD SP406 960G 2.5" U.2 1dee 0011 NVMe SSD SP406 1.92T 2.5" U.2 1dee 0012 NVMe SSD SP406 3.84T 2.5" U.2 1dee 0013 NVMe SSD SP406 7.68T 2.5" U.2 5216 KingSpec NX series NVMe SSD (DRAM-less) 7700 BIWIN NVMe SSD SP50Y/SP51Y 1def Ampere Computing, LLC e005 eMAG PCI Express Root Port 0 e006 eMAG PCI Express Root Port 1 e007 eMAG PCI Express Root Port 2 e008 eMAG PCI Express Root Port 3 e009 eMAG PCI Express Root Port 4 e00a eMAG PCI Express Root Port 5 e00b eMAG PCI Express Root Port 6 e00c eMAG PCI Express Root Port 7 # Root Complex A (RCA) e100 Altra PCI Express Root Complex A # RCA port 0 e101 Altra PCI Express Root Port a0 # RCA port 1 e102 Altra PCI Express Root Port a1 # RCA port 2 e103 Altra PCI Express Root Port a2 # RAC port 3 e104 Altra PCI Express Root Port a3 # RCA port 4 e105 Altra PCI Express Root Port a4 # RCA port 5 e106 Altra PCI Express Root Port a5 # RCA port 6 e107 Altra PCI Express Root Port a6 # RCA port 7 e108 Altra PCI Express Root Port a7 # Root Complex B (RCB) e110 Altra PCI Express Root Complex B # RCB port 0 e111 Altra PCI Express Root Port b0 # RCB port 1 e112 Altra PCI Express Root Port b1 # RCB port 2 e113 Altra PCI Express Root Port b2 # RCB port 3 e114 Altra PCI Express Root Port b3 # RCB port 4 e115 Altra PCI Express Root Port b4 # RCB port 5 e116 Altra PCI Express Root Port b5 # RCB port 6 e117 Altra PCI Express Root Port b6 # RCB port 7 e118 Altra PCI Express Root Port b7 1df3 Ethernity Networks 0201 ACE-NIC40 Programmable Network Accelerator 1df3 0001 ENA1040 1df3 0002 ENA1044 1df3 0003 ENA1044S 0202 ACE-NIC50 Programmable Network Accelerator 1df3 0001 ENA2050F 1df3 0002 ENA2050FS 0203 ACE-NIC100 Programmable Network Accelerator 1df3 0000 Maintenance Mode 1df3 0001 ENA2080F 1df3 0002 ENA2080FS 1df3 0003 ENA2100F 1df3 0004 ENA2040F 0204 ACE-NIC-NID Programmable Network Accelerator 1df3 0001 ENA1020Z 1df3 0002 ENA1020ZS 0205 ACE-NIC250 Programmable Network Accelerator 1df3 0000 Maintenance Mode 1df3 0001 ENA2250F 0206 ACE-NIC200 Programmable Network Accelerator 1df3 0000 Maintenance Mode 1df3 0001 ENA2200F 0207 ACE-NIC50RN Programmable Network Accelerator 1df3 0000 Maintenance Mode 1df3 0001 ENA2050RN 0208 ACE-NIC100RN Programmable Network Accelerator 1df3 0000 Maintenance Mode 1df3 0001 ENA2100RN 1df5 Shenzhen TIGO Semiconductor 1202 kimtigo NVMe SSD (DRAM-less) 2263 kimtigo MG931K NVMe SSD (DRAM-less) 1df7 opencpi.org 0001 ml605 0002 alst4 0003 alst4x 1df8 V&G Information System Co.,Ltd 3000 PC NVMe SSD 1df8 3100 M.2 NVMe Gen3*4 SSD c000 DC NVMe SSD 1df8 c600 Enterprise U.2 NVMe SSD d000 PC NVMe SSD 1df8 d100 M.2 NVMe SSD 1df8 d201 M.2 NVMe SSD 1df8 d600 M.2 NVMe SSD 1dfa Astera Labs, Inc. 1dfc JSC NT-COM 1181 TDM 8 Port E1/T1/J1 Adapter 1e0d SambaNova Systems, Inc 1e0f KIOXIA Corporation 0001 NVMe SSD Controller BG4 (DRAM-less) 0007 NVMe SSD Controller Cx6 1028 2078 DC NVMe CD6 RI 960GB 1028 2079 DC NVMe CD6 RI 1.92TB 1028 207a DC NVMe CD6 RI 3.84TB 1028 207b DC NVMe CD6 RI 7.68TB 1028 207c DC NVMe CD6 RI 15.36TB 1028 207e Dell Ent NVMe CM6 RI 1.92TB 1028 207f Dell Ent NVMe CM6 RI 3.84TB 1028 2080 Dell Ent NVMe CM6 RI 7.68TB 1028 2081 Dell Ent NVMe CM6 RI 15.36TB 1028 2084 Dell Ent NVMe CM6 MU 1.6TB 1028 2085 Dell Ent NVMe CM6 MU 3.2TB 1028 2086 Dell Ent NVMe CM6 MU 6.4TB 1028 210a Dell Ent NVMe FIPS CM6 RI 1.92TB 1028 210b Dell Ent NVMe FIPS CM6 RI 3.84TB 1028 210c Dell Ent NVMe FIPS CM6 RI 7.68TB 1028 210d Dell Ent NVMe FIPS CM6 RI15.36TB 1028 210e Dell Ent NVMe FIPS CM6 MU 1.6TB 1028 210f Dell Ent NVMe FIPS CM6 MU 3.2TB 1028 2110 Dell Ent NVMe FIPS CM6 MU 6.4TB 1e0f 0001 Generic NVMe CM6 0008 RD500/Exceria Plus/Exceria Plus G2 NVMe SSD 0009 NVMe SSD 1e0f 0001 Toshiba RC500 Series NVMe SSD 1e0f 0032 KIOXIA EXCERIA RC10 Series NVMe SSD 000c NVMe SSD Controller BG5 (DRAM-less) 000d NVMe SSD Controller XG7 0010 NVMe SSD Controller XG8 0011 NVMe SSD Controller CD7 1028 2189 DC NVMe SED CD7 RI 960GB 1028 218a DC NVMe CD7 RI 960GB 1028 218b DC NVMe SED CD7 RI 1.92TB 1028 218c DC NVMe CD7 RI 1.92TB 1028 218d DC NVMe SED CD7 RI 3.84TB 1028 218e DC NVMe CD7 RI 3.84TB 1028 218f DC NVMe SED CD7 RI 7.68TB 1028 2190 DC NVMe CD7 RI 7.68TB 1028 2191 DC NVMe SED CD7 RI 15.36TB 1028 2192 DC NVMe CD7 RI 15.36TB 1028 2193 NVMe CD7 E3.S 1.92TB 1028 2194 NVMe CD7 E3.S 3.84TB 1028 2195 NVMe CD7 E3.S 7.68TB 0014 NVMe SSD Controller CM7 EDSFF 1028 223f Ent NVMe CM7 FIPS E3.S RI 15.36TB 1028 2240 Ent NVMe CM7 FIPS E3.S RI 7.68TB 1028 2241 Ent NVMe CM7 FIPS E3.S RI 3.84TB 1028 2242 Ent NVMe CM7 E3.S RI 15.36TB 1028 2243 Ent NVMe CM7 E3.S RI 7.68TB 1028 2244 Ent NVMe CM7 E3.S RI 3.84TB 1028 2245 Ent NVMe CM7 E3.S RI 1.92TB 1028 2246 Ent NVMe CM7 E3.S MU 12.8TB 1028 2247 Ent NVMe CM7 E3.S MU 6.4TB 1028 2248 Ent NVMe CM7 E3.S MU 3.2TB 1028 2249 Ent NVMe CM7 E3.S MU 1.6TB 1028 22b7 Ent NVMe CM7 FIPS E3.S MU 1.6TB 1028 22b8 Ent NVMe CM7 FIPS E3.S MU 3.2TB 1028 22b9 Ent NVMe CM7 FIPS E3.S MU 6.4TB 1028 22ba Ent NVMe CM7 FIPS E3.S MU 12.8TB 0018 Exceria Pro NVMe SSD 001a NVMe SSD Controller BG6 (DRAM-less) 001f NVMe SSD Controller CD8 1028 2223 DC NVMe CD8 U.2 SED 15.36TB 1028 2224 DC NVMe CD8 U.2 SED 7.68TB 1028 2225 DC NVMe CD8 U.2 SED 3.84TB 1028 2226 DC NVMe CD8 U.2 SED 1.92TB 1028 2227 DC NVMe CD8 U.2 SED 960GB 1028 2228 DC NVMe CD8 U.2 15.36TB 1028 2229 DC NVMe CD8 U.2 7.68TB 1028 222a DC NVMe CD8 U.2 3.84TB 1028 222b DC NVMe CD8 U.2 1.92TB 1028 222c DC NVMe CD8 U.2 960GB 0025 NVMe SSD Controller CM7 2.5" 1028 222d Ent NVMe CM7 FIPS U.2 RI 30.72TB 1028 222e Ent NVMe CM7 FIPS U.2 RI 15.36TB 1028 222f Ent NVMe CM7 FIPS U.2 RI 7.68TB 1028 2230 Ent NVMe CM7 FIPS U.2 RI 3.84TB 1028 2231 Ent NVMe CM7 FIPS U.2 RI 1.92TB 1028 2232 Ent NVMe CM7 U.2 RI 30.72TB 1028 2233 Ent NVMe CM7 U.2 RI 15.36TB 1028 2234 Ent NVMe CM7 U.2 RI 7.68TB 1028 2235 Ent NVMe CM7 U.2 RI 3.84TB 1028 2236 Ent NVMe CM7 U.2 RI 1.92TB 1028 2237 Ent NVMe CM7 FIPS U.2 MU 12.8TB 1028 2238 Ent NVMe CM7 FIPS U.2 MU 6.4TB 1028 2239 Ent NVMe CM7 FIPS U.2 MU 3.2TB 1028 223a Ent NVMe CM7 FIPS U.2 MU 1.6TB 1028 223b Ent NVMe CM7 U.2 MU 12.8TB 1028 223c Ent NVMe CM7 U.2 MU 6.4TB 1028 223d Ent NVMe CM7 U.2 MU 3.2TB 1028 223e Ent NVMe CM7 U.2 MU 1.6TB 002a Exceria Plus G3 NVMe SSD (DRAM-less) 002c NVMe SSD Controller CD8P EDSFF 1028 22bf DC NVMe CD8P E3.S 15.36TB 1028 22c0 DC NVMe CD8P E3.S 7.68TB 1028 22c1 DC NVMe CD8P E3.S 3.84TB 1028 22c2 DC NVMe CD8P E3.S 1.92TB 1028 22c7 DC NVMe CD8P E3.S MU 12.8TB 1028 22c8 DC NVMe CD8P E3.S MU 6.4TB 1028 22c9 DC NVMe CD8P E3.S MU 3.2TB 1028 22ca DC NVMe CD8P E3.S MU 1.6TB 1e17 Arnold & Richter Cine Technik GmbH & Co. Betriebs KG 1e18 Beijing GuangRunTong Technology Development Co.,Ltd 1e24 Squirrels Research Labs 0101 Acorn CLE-101 0215 Acorn CLE-215 021f Acorn CLE-215+ 1525 Xilinx BCU-1525 # VU33P FPGA Accelerator 1533 ForestKitten 33 # JungleCat VU33P Module 1633 JCM33 # JungleCat VU35P Module 1635 JCM35 1e26 Fujitsu Client Computing Limited 1e36 Shanghai Enflame Technology Co. Ltd 0001 T10 [CloudBlazer] 0002 T11 [CloudBlazer] 0003 T10(QSFP-DD) [CloudBlazer] 0021 T20(32GB) [CloudBlazer] 0022 T20(64GB) [CloudBlazer] 0023 T21(32GB) [CloudBlazer] 0024 T21(64GB) [CloudBlazer] 8001 I20 [CloudBlazer] 8011 I10 [CloudBlazer] 8012 I10L [CloudBlazer] # HHHL PCIe card, single slot, 3rd generation from Enflame 8031 S6 [Enflame] # HHHL PCIe card, single slot, 3rd generation from Enflame, 24GB device memory 8032 S6 [Enflame] # FHFL PCIe card, single slot, 3rd generation from Enflame c031 S30 [Enflame] # FHFL PCIe card, dual slot, 3rd generation from Enflame, 48GB device memory c032 S90 [Enflame] # FHFL PCIe card, dual slot, 3rd generation from Enflame, 48GB device memory c033 S60G [Enflame] # FHFL PCIe card, dual slot, 3rd generation from Enflame, 48GB device memory c035 S60 [Enflame] # nee Thinci, Inc 1e38 Blaize, Inc 0102 Xplorer X1600 1e39 MEDION AG 1e3a Cactus Technologies Limited 2263 270PM6, 270PM7 series NVMe SSD 1e3b DapuStor Corporation 0600 NVMe SSD Controller DP600 1e3b 0006 Enterprise NVMe SSD U.2 7.68TB (J5000) 1e3b 0010 Enterprise NVMe SSD U.2 3.84TB (R5102) 1e3b 0013 Enterprise NVMe SSD U.2 3.20TB (R5302) 1e3b 0030 Enterprise NVMe SSD U.2 3.84TB (J5100) 1e3b 0031 Enterprise NVMe SSD U.2 7.68TB (J5100) 1e3b 0032 Enterprise NVMe SSD U.2 15.36TB (J5100) 1e3b 0033 Enterprise NVMe SSD U.2 3.20TB (J5300) 1e3b 0034 Enterprise NVMe SSD U.2 6.40TB (J5300) 1e3b 0035 Enterprise NVMe SSD U.2 12.80TB (J5300) 1e3b 0036 Enterprise NVMe SSD AIC 7.68TB (J5110) 1e3b 0037 Enterprise NVMe SSD AIC 6.40TB (J5310) 1e3b 0038 Enterprise NVMe SSD U.2 3.84TB (J5100D) 1e3b 0039 Enterprise NVMe SSD U.2 7.68TB (J5100D) 1e3b 003b Enterprise NVMe SSD U.2 3.20TB (J5300D) 1e3b 003c Enterprise NVMe SSD U.2 6.40TB (J5300D) 1e3b 003e Enterprise NVMe SSD AIC 3.84TB (J5110) 1e3b 003f Enterprise NVMe SSD AIC 3.20TB (J5310) 1e3b 004c Enterprise NVMe SSD U.2 QDP 1.92TB (J5100) 1e3b 004d Enterprise NVMe SSD U.2 QDP 1.60TB (J5300) 1e3b 0050 Enterprise NVMe SSD U.2 3.84TB (R5100) 1e3b 0051 Enterprise NVMe SSD U.2 7.68TB (R5100) 1e3b 0052 Enterprise NVMe SSD U.2 15.36TB (R5100) 1e3b 0053 Enterprise NVMe SSD U.2 3.20TB (R5300) 1e3b 0054 Enterprise NVMe SSD U.2 6.40TB (R5300) 1e3b 0055 Enterprise NVMe SSD U.2 12.80TB (R5300) 1e3b 0056 Enterprise NVMe SSD U.2 3.84TB (R5101) 1e3b 0059 Enterprise NVMe SSD U.2 3.20TB (R5301) 1e3b 0060 Enterprise NVMe SSD U.2 3.84TB (R5100D) 1e3b 0061 Enterprise NVMe SSD U.2 7.68TB (R5100D) 1e3b 0063 Enterprise NVMe SSD U.2 3.20TB (R5300D) 1e3b 0064 Enterprise NVMe SSD U.2 6.40TB (R5300D) 1e3b 0066 Enterprise NVMe SSD U.2 3.84TB (R5101D) 1e3b 0069 Enterprise NVMe SSD U.2 3.20TB (R5301D) 1e3b 006c Enterprise NVMe SSD U.2 1.92TB (R5101) 1e3b 006d Enterprise NVMe SSD U.2 1.60TB (J5301) 1e3b 00b9 Enterprise NVMe SSD U.2 25.60TB 1e3b 00be Enterprise NVMe SSD U.2 30.72TB 1e3b 00c1 Enterprise NVMe SSD U.2 25.60TB 1e3b 00c4 Enterprise NVMe SSD U.2 30.72TB 1e3b 00c7 Enterprise NVMe SSD U.2 25.60TB (J5301) 1e3b 00c8 Enterprise NVMe SSD U.2 30.72TB (J5000) 1e3b 00c9 Enterprise NVMe SSD U.2 15.36TB (J5000) 1e3b 00ca Enterprise NVMe SSD U.2 3.84TB (J5102) 1e3b 00cb Enterprise NVMe SSD U.2 7.68TB (J5102) 1e3b 00cc Enterprise NVMe SSD U.2 3.84TB (J5101) 1e3b 00cd Enterprise NVMe SSD U.2 7.68TB (J5101) 1e3b 00ce Enterprise NVMe SSD U.2 3.84TB (J5101D) 1e3b 00cf Enterprise NVMe SSD U.2 7.68TB (J5101D) 1e3b 00dc Enterprise NVMe SSD U.2 30.72TB (J5000) 1e3b 00dd Enterprise NVMe SSD U.2 30.72TB(J5000) 1e3b 00de Enterprise NVMe SSD U.2 15.36TB (J5000D) 1e3b 00df Enterprise NVMe SSD U.2 30.72TB (J5000) 1e3b 00e7 Enterprise NVMe SSD U.2 30.72TB (J5000D) 1e3b 00e8 Enterprise NVMe SSD U.2 3.20TB (J5301) 1e3b 00e9 Enterprise NVMe SSD U.2 6.40TB (J5301) 1e3b 00ea Enterprise NVMe SSD U.2 3.20TB (J5301D) 1e3b 00eb Enterprise NVMe SSD U.2 6.40TB (J5301D) 1e3b 00ec Enterprise NVMe SSD U.2 30.72TB (J5101) 1e3b 00ed NVMe SSD U.2 30.72TB (R5101) 1e3b 00ee Enterprise NVMe SSD U.2 15.36B (J5101) 1e3b 00ef Enterprise NVMe SSD U.2 12.80TB (J5301) 1e3b 00f0 Enterprise NVMe SSD U.2 0.40TB (X2900) 1e3b 00f1 Enterprise NVMe SSD U.2 0.80TB (X2900) 1e3b 00f2 Enterprise NVMe SSD U.2 1.60TB (X2900) 1e3b 00f3 Enterprise NVMe SSD U.2 3.20TB (X2900) 1e3b 00f5 Enterprise NVMe SSD U.2 0.40TB (X2900P) 1e3b 00f6 Enterprise NVMe SSD U.2 0.80TB (X2900P) 0800 DP800 1e3b 0001 Enterprise NVMe SSD U.2 3.84TB(R6100) 1e3b 0007 Enterprise NVMe SSD U.2 15.36TB (R6100) 1e3b 000a Enterprise NVMe SSD U.2 3.20TB (R6300) 1e3b 000d Enterprise NVMe SSD U.2 6.40TB (R6300) 1e3b 0010 Enterprise NVMe SSD U.2 12.80TB (R6300) 1e3b 0018 Enterprise NVMe SSD U.2 3.84TB (R6100C) 1e3b 0019 Enterprise NVMe SSD U.2 7.68TB (R6100C) 1e3b 001a Enterprise NVMe SSD U.2 3.20TB (R6300C) 1e3b 001b Enterprise NVMe SSD U.2 6.40TB (R6300C) 1e3b 001c Enterprise NVMe SSD U.2 7.68TB (R6100) 1e3b 001d Enterprise NVMe SSD U.2 3.84TB (R6101) 1098 Haishen3 NVMe SSD 1e3b 0001 Enterprise NVMe SSD U.2 0.8TB (H2100) 1e3b 0002 Enterprise NVMe SSD U.2 0.96TB (H2200) 1e3b 0004 Enterprise NVMe SSD U.2 1.6TB (H2100) 1e3b 0005 Enterprise NVMe SSD U.2 1.92TB (H2200) 1e3b 0009 Enterprise NVMe SSD U.2 0.8TB (H3100) 1e3b 000a Enterprise NVMe SSD U.2 0.96TB (H3200) 1e3b 000c Enterprise NVMe SSD U.2 1.6TB (H3100) 1e3b 000d Enterprise NVMe SSD U.2 1.92TB (H3200) 1e3b 0014 Enterprise NVMe SSD U.2 3.2TB (H3100) 1e3b 0015 Enterprise NVMe SSD U.2 3.84TB (H3200) 1e3b 0021 Enterprise NVMe SSD U.2 6.4TB (H3100) 1e3b 0022 Enterprise NVMe SSD U.2 7.68TB (H3200) 1e3b 0052 Enterprise NVMe SSD U.2 0.8TB (H3900) 1e3b 0053 Enterprise NVMe SSD U.2 1.6TB (H3900) 1e3b 0059 Enterprise NVMe SSD U.2 0.75TB (H3900) 1e3b 0061 Enterprise NVMe SSD HHHL 0.8TB (H2100) 1e3b 0062 Enterprise NVMe SSD HHHL 0.96TB (H2200) 1e3b 0064 Enterprise NVMe SSD HHHL 1.6TB (H2100) 1e3b 0065 Enterprise NVMe SSD HHHL 1.92TB (H2200) 1e3b 006c Enterprise NVMe SSD HHHL 0.8TB (H3100) 1e3b 006d Enterprise NVMe SSD HHHL 0.96TB (H3200) 1e3b 006f Enterprise NVMe SSD HHHL 1.6TB (H3100) 1e3b 0070 Enterprise NVMe SSD HHHL 1.92TB (H3200) 1e3b 007c Enterprise NVMe SSD HHHL 3.2TB (H3100) 1e3b 007d Enterprise NVMe SSD HHHL 3.84TB (H3200) 1e3b 007f Enterprise NVMe SSD HHHL 6.4TB (H3100) 1e3b 0080 Enterprise NVMe SSD HHHL 7.68TB (H3200) 1e3b 008a Enterprise NVMe SSD HHHL 0.8TB (H3900) 1e3b 008b Enterprise NVMe SSD HHHL 1.6TB (H3900) 1e3b 0091 Enterprise NVMe SSD HHHL 0.75TB (H3900) 1333 Haishen5 NVMe SSD 1e3b 0081 Enterprise NVMe SSD U.2 3.84TB (H5100) 1e3b 0082 Enterprise NVMe SSD U.2 7.68TB (H5100) 1e3b 0084 Enterprise NVMe SSD U.2 3.2TB (H5300) 1e3b 0085 Enterprise NVMe SSD U.2 6.4TB (H5300) 1e3d Burlywood, Inc 1e43 MaxLinear Inc 8904 MxL8904 8906 MxL8906 8908 MxL8908 1e44 Valve Software 1e49 Yangtze Memory Technologies Co.,Ltd 0001 ZHITAI PC005 NVMe SSD 0021 ZHITAI TiPro5000 NVMe SSD 0041 ZHITAI TiPro7000 0071 ZHITAI TiPlus7100 # YMTC 1001 PC005 NVMe SSD 1011 PC210 NVMe SSD 1013 PC210 NVMe SSD 1031 PC300 NVMe SSD (DRAM-less) 1033 PC300 NVMe SSD (DRAM-less) 1071 PC411 NVMe SSD (DRAM-less) 1e4b MAXIO Technology (Hangzhou) Ltd. 1001 NVMe SSD Controller MAP1001 1002 NVMe SSD Controller MAP1002 (DRAM-less) 1003 NVMe SSD Controller MAP1003 1201 NVMe SSD Controller MAP1201 1202 NVMe SSD Controller MAP1202 (DRAM-less) 1601 NVMe SSD Controller MAP1601 1602 NVMe SSD Controller MAP1602 (DRAM-less) 1608 NVMe SSD Controller MAP1608 (DRAM-less) 1e4c GSI Technology 0010 Associative Processing Unit [Leda] 1e4c 0120 SE120 0020 Associative Processing Unit [Leda-2] 1e50 IP3 Tech (HK) Limited 1e52 Tenstorrent Inc 401e Wormhole 1e52 0014 n300 1e52 0018 n150 b140 Blackhole faca Grayskull 1e52 0003 e150 1e52 0007 e75 1e52 000a e300 1e57 Beijing Panyi Technology Co., Ltd 0100 The device has already been deleted. 0000 0100 PY8800 64GB Accelerator 1e59 Oxford Nanopore Technologies 0001 MinION Mk1C 1e5d ASR Microelectronics 7000 AI controller A7000 7010 AI controller A7010 1e60 Hailo Technologies Ltd. 2864 Hailo-8 AI Processor 1e67 Untether AI 0002 runAI200 AI Inference Accelerator 0004 speedAI240 AI Inference Accelerator 1e68 Jiangsu Xinsheng Intelligent Technology Co., Ltd 8111 EP2000Pro PCIe 3 NVMe SSD (DRAM-less) 1e6b Axiado Corp. 1e7b Dataland 1e7c Brainchip Inc bca1 AKD1000 Neural Network Coprocessor [Akida] 1e7e Pliops 9034 Pliops Extreme Data Processor [XDP1.0] 1e7f Jiangsu Huacun Elec. Tech. Co., Ltd. 6002 MMY MMSP350 PCIe 3 NVMe SSD (DRAM-less) 6003 MMY HC512GP3KH2T PCIe 3 NVMe SSD (DRAM-less) 1e81 Ramaxel Technology(Shenzhen) Limited 1203 NVMe SSD Controller UHXXXa series 1e81 a121 NVMe SSD UHXXXa series U.2 960GB 1e81 a122 NVMe SSD UHXXXa series U.2 1920GB 1e81 a123 NVMe SSD UHXXXa series U.2 3840GB 1e81 a124 NVMe SSD UHXXXa series U.2 7680GB 1e81 a125 NVMe SSD UHXXXa series U.2 15360GB 1e81 a211 NVMe SSD UHXXXa series U.2 800GB 1e81 a212 NVMe SSD UHXXXa series U.2 1600GB 1e81 a213 NVMe SSD UHXXXa series U.2 3200GB 1e81 a214 NVMe SSD UHXXXa series U.2 6400GB 1e81 f123 NVMe SSD TP6500 series U.2 3840GB 6206 AM620 NVMe SSD 1e83 Huaqin Technology Co.Ltd 1e85 Heitec AG 1e89 ID Quantique SA 0002 Quantis-PCIe-40M 0003 Quantis-PCIe-240M 1e93 Beijing Bytedance Network Technology Co., Ltd. # aka SED Systems 1e94 Calian SED 1e95 Solid State Storage Technology Corporation 1000 XA1-311024 NVMe SSD M.2 1001 CA6-8D512 NVMe SSD M.2 1002 NVMe SSD [3DNAND] 2.5" U.2 (LJ1) 1e95 1101 NVMe SSD [3DNAND] 2.5" U.2 (LJ1) 1ea0 5636 TP1500 Series U.2 NVMe Datacenter SSD 1003 CLR-8W512 NVMe SSD M.2 (DRAM-less) 1005 PLEXTOR M10P(GN) NVMe SSD M.2 1007 CL4-8D512 NVMe SSD M.2 (DRAM-less) 1008 CL5-8D512 NVMe SSD M.2 (DRAM-less) 3500 CA5-8D256 NVMe SSD M.2 35f1 PLEXTOR M9PGN Plus NVMe SSD M.2 9100 CL1-3D256-Q11 NVMe SSD M.2 1e96 Drut Technologies Inc. 1e9f Lynxi Technologies Co., Ltd. 1ea0 Tencent Technology (Shenzhen) Company Limited 2a16 Cloud Intelligent Inference Controller 2a18 Video Transcode Controller 2a20 Cloud Intelligent Inference and Training Controller 2a22 Cloud Intelligent Inference Controller 2a30 Cloud Video Transcode Controller 1ea7 Intelliprop, Inc 223a Typhon+ PCIe to Gen-Z Bridge 224a IPA-PE224A CXL to Gen-Z Bridge [Sphinx] 1eab Hefei DATANG Storage Technology Co.,LTD. 300a NVMe SSD Controller 300A 300b NVMe SSD Controller 300B (DRAM-less) 1eac Quectel Wireless Solutions Co., Ltd. 1001 EM120R-GL LTE Modem 1002 EM160R-GL LTE Modem 1eae XFX Limited 1eb0 Shenzhen Electrical Appliances CO. 1901 NVMe SSD Controller (DRAM-less) 1eb1 VeriSilicon Inc 1001 Video Accelerator 1eb4 Quantum Nebula Microelectronics Technology Co.,Ltd. 3401 SSD Contoller 1eb6 Wuxi Stars Microsystem Technology Co., Ltd 1eb9 Senscomm Semiconductor, Inc 2020 SCM2625 Wi-Fi6 Network Adapter 1ebd EMERGETECH Company Ltd. 0101 Seirios 2063 Video Codec 1ec6 Vastai Technologies 0100 SV100 1ec6 0010 VA1V 1ec6 0011 VA1A 1ec6 0012 VA1 1ec6 0013 VA1E 1ec6 0020 VA10V 1ec6 0021 VA10A 1ec6 0022 VA10 1ec6 0030 VE1P 1ec6 0031 VE1S 1ec6 0032 VE1V 1ec6 0033 VE1M 1ec6 0034 VE1E 1ec6 0040 VV1U 1ec6 0041 VA1U 0200 SG100 1ec6 0060 VG1200 1ec6 0061 VG1600 1ec6 0062 VG1800 1ec6 0063 VG1000 020f SG100 vGPU 1ec8 Innosilicon Co Ltd 8800 Fantasy I 1ec8 12a2 Fantasy I Device 8810 Fantasy I 1ec8 12a2 Fantasy I Device 9800 Fantasy II 1ec8 12a2 Fantasy II Device 9802 Fantasy II 1ec8 12a2 Fantasy II Device 9804 Fantasy II 1ec8 12a2 Fantasy II Device 9810 Fantasy II-M 1ec8 12a2 Fantasy II Device 1ec9 Wingtech Group(HongKong)Limited 1eca Lightmatter 0000 Envise-B 1ed0 Hosin Global Electronics 2283 Patriot P300 NVMe SSD (DRAM-less) 1ed2 FuriosaAI, Inc. 0000 Warboy 0001 RNGD 2222 RNGD-S 1ed3 Yeston 1ed5 Moore Threads Technology Co.,Ltd 0100 MTT S10 0101 MTT S10 0102 MTT S30 0105 MTT S50 0106 MTT S60 0111 MTT S100 0121 MTT S1000M 0122 MTT S1000 0123 MTT S2000 01ff MTT HDMI/DP Audio 0200 MTT S80 Engineering Sample 0201 MTT S80 0202 MTT S70 0203 MTT S60 0211 MTT X300 0221 G2S80 0222 MTT S3000 1ed5 0001 C3150 0223 G2S4 0225 MTT S3000E 1ed5 0001 C3150 0251 G2N10 02ff MTT HDMI/DP Audio 0300 MTT S90 Engineering Sample 0301 MTT S90 0313 MTT X500 0323 MTT S4000 0327 MTT S4000 0328 MTT S4000 03ff MTT HDMI/DP Audio 1ed8 Digiteq Automotive 0101 FG4 PCIe Frame Grabber (T100) 0201 FG4 PCIe Frame Grabber (T200) 1ed9 Myrtle.ai 1ee1 Suzhou Kuhan Information Technologies 0050 Aurora NVMe SSD Controller 1ee1 0009 Airglow A430 NVMe SSD U.2 1.6TB 1ee1 000a Airglow A430 NVMe SSD U.2 3.2TB 1ee1 000b Airglow A430 NVMe SSD U.2 4.8TB 1ee1 0012 Airglow Z400 NVMe ZNS SSD U.2 5.76TB 1ee4 PETAIO INC 1180 P8118 NVMe SSD Series 1ee4 0015 NVMe SSD U.2 1.92TB (P8118E) 1ee4 0016 NVMe SSD U.2 3.84TB (P8118E) 1ee4 0017 NVMe SSD U.2 7.68TB (P8118E) 1ee4 0025 NVMe SSD U.2 1.6TB (P8118E) 1ee4 0026 NVMe SSD U.2 3.2TB (P8118E) 1ee4 0027 NVMe SSD U.2 6.4TB (P8118E) 1ee4 0115 NVMe SSD U.2 1.92TB (P8118Z) 1ee4 0116 NVMe SSD U.2 3.84TB (P8118Z) 1ee4 0117 NVMe SSD U.2 7.68TB (P8118Z) 1ee4 0125 NVMe SSD U.2 1.6TB (P8118Z) 1ee4 0126 NVMe SSD U.2 3.2TB (P8118Z) 1ee4 0127 NVMe SSD U.2 6.4TB (P8118Z) 1ee4 0215 NVMe SSD U.2 1.92TB (P8118X) 1ee4 0216 NVMe SSD U.2 3.84TB (P8118X) 1ee4 0217 NVMe SSD U.2 7.68TB (P8118X) 1ee4 0225 NVMe SSD U.2 1.6TB (P8118X) 1ee4 0226 NVMe SSD U.2 3.2TB (P8118X) 1ee4 0227 NVMe SSD U.2 6.4TB (P8118X) 1ee4 abcd NVMe SSD U.2 1ee9 SUSE LLC 1eec Viscore Technologies Ltd 0102 VSE250231S Dual-port 10Gb/25Gb Ethernet PCIe 1eec VSE250231S Dual-port 10Gb/25Gb Ethernet PCIe 1eed XDX Computing Technology Ltd. 10a0 XDX110 Graphic/VGA Controller 10a1 XDX110 Audio Controller 10a2 XDX110M 10a4 XDX E1100 1140 XDX120 1142 XDX120M 1144 XDX E1200 1150 XDX120S 1160 XDX121 1170 XDX121S 11e0 XDX130 11e4 XDX E1300 1320 XDX150 1323 XDX R1500 1324 XDX X1500 1330 XDX150S 1333 XDX R1510 1340 XDX151 1350 XDX151S 1360 XDX151T 13c0 XDX160T 13d0 XDX160S 13d3 XDX R1610 1500 XDX180 1503 XDX R1800 1504 XDX X1800 1510 XDX180S 15a0 XDX190 15a3 XDX R1900 15a4 XDX X1900 15a5 XDX X1900D 15b0 XDX190S 1810 XDX TJ01 Audio 1820 XDX TJ02 Audio 1830 XDX TJ03 Audio 1ef6 GrAI Matter Labs 1ef7 Shenzhen Gunnir Technology Development Co., Ltd 1efb Flexxon Pte Ltd 1eff Rebellions Inc. 1f02 Beijing Dayu Technology 1f03 Shenzhen Shichuangyi Electronics Co., Ltd 1202 MAP1202-Based NVMe SSD (DRAM-less) 2262 SM2262EN-based OEM SSD 2263 SM2263XT-Base NVMe SSD 5216 IG5216-based NVMe SSD (DRAM-less) 5220 IG5220-Based NVMe SSD 5236 IG5236-Based NVMe SSD 5636 IG5636-Based NVMe SSD 1f0a Motorcomm Microelectronics. 6801 YT6801 Gigabit Ethernet Controller 1f0d DeGirum Corp. 0100 AI Accelerator [ORCA] 1f0f NebulaMatrix Technology 1041 D1055AS vDPA Ethernet Controller 1f0f 0001 D1055AS vDPA Ethernet Controller 1042 D1055AS vDPA Storage Controller 1f0f 0001 D1055AS vDPA Storage Controller 1220 D1055AS Ethernet Controller 1221 D1055AS Ethernet Controller 1222 D1055AS Ethernet Controller 1223 D1055AS Ethernet Controller 1600 M16104 Family 1f0f 0001 M16104 Family 1601 M16104 Family Virtual Function 1f0f 0001 M16104 Family Virtual Function 1a00 M16104 Family 1f0f 0001 M16104 Family 1a01 M16104 Family Virtual Function 1f0f 0001 M16104 Family Virtual Function 2022 D1055AS PCI Express Switch Upstream Port 3403 M18110 Family 3404 M18110 Lx Family 3405 M18110 Family BASE-T 3406 M18110 Lx Family BASE-T 3407 M18110 Family OCP 3408 M18110 Lx Family OCP 3409 M18110 Family BASE-T OCP 340a M18110 Lx Family BASE-T OCP 340b M18120 Family 340c M18120 Lx Family 340d M18120 Family BASE-T 340e M18120 Lx Family BASE-T 340f M18120 Family OCP 3410 M18120 Lx Family OCP 3411 M18120 Family BASE-T OCP 3412 M18120 Lx Family BASE-T OCP 3413 M18100 Family Virtual Function 9088 D1055AS PCI Express Switch Downstream Port 1f16 XConn Technologies # XConn XC50256 CXL2.0/PCIe5.0 switch c500 XC50256 1f17 Zettastone Technology 1f1c Sophgo Technologies Inc. 1686 BM1684X [Sophon Series Deep Learning Accelerator] 1f24 xFusion Digital Technologies Co., Ltd. 1058 EP500/EP600 NVMe SSD 1f24 1114 EP500 NVMe SSD(RI) 1f24 1115 EP600 NVMe SSD(MU) 1f2f China Mobile (Hangzhou) Information Technology Co.Ltd. 1513 DERA MENG NVMe Controller 1f2f 6113 KM660 U.2 1.6TB NVMe SSD 1f2f 6114 KM560 U.2 1.92TB NVMe SSD 1f2f 6115 KM660 U.2 3.2TB NVMe SSD 1f2f 6116 KM560 U.2 3.84TB NVMe SSD 1f2f 6118 KM560 U.2 7.68TB NVMe SSD 1f31 Nextorage 4512 Nextorage NE1N NVMe SSD 1f3f 3SNIC Ltd 2100 SSSHBA SAS/SATA HBA 1f3f 0120 HBA 32 Ports 1f3f 0125 HBA 40 Ports 1f3f 0180 HBA 16 Ports 1f3f 0185 HBA 8 Ports 2200 SSSRAID RAID controller 1f3f 0185 RAID Controller 16 Ports with 2G Cache 1f3f 01a1 RAID Controller 40 Ports with 2G Cache 1f3f 01a4 RAID Controller 16 Ports with 4G Cache 1f3f 01a8 RAID Controller 32 Ports with 4G Cache 1f3f 01ad RAID Controller 40 Ports with 4G Cache 9001 SSSNIC Ethernet VF 1f3f 1000 Ethernet VF 9002 SSSNIC Ethernet VF Hyper-V 1f3f 1000 Ethernet VF Hyper-V 9003 SSSNIC Ethernet SDI VF 1f3f 1000 Ethernet SDI VF 9004 SSSNIC Ethernet SDI VF Hyper-V 1f3f 1000 Ethernet SDI VF Hyper-V 9008 SSSFC VF 1f3f 1000 3SFC VF 9009 SSSFC VF Hyper-V 1f3f 1000 3SFC VF Hyper-V 9010 SSSFC FC Controller 1f3f 0041 Dual Port 16GE FC to PCIe Gen4 x16 Adapter 1f3f 0061 Dual Port 32GE FC to PCIe Gen4 x16 Adapter 9020 SSSNIC Ethernet Network Adapter 1f3f 0051 Dual Port 25GE Ethernet Network Adapter 1f3f 0052 Quad Port 25GE Ethernet Network Adapter 1f3f 00a1 Dual Port 100GE Ethernet Network Adapter 9030 SSSNIC IPU 1f3f 0051 Dual Port 25GE IPU 9031 SSSNIC SDI5.0 1f3f 0051 Dual Port 25GE SDI5.0lite 1f3f 00a1 Dual Port 100GE SDI5.0 9032 SSSNIC SDI5.1 1f3f 00a1 Dual Port 100GE SDI5.1 1f40 Netac Technology Co.,Ltd 0001 PCIe 4 NVMe SSD (DRAM-less) 1202 PCIe 3 NVMe SSD (DRAM-less) 1602 PCIe 4 NVMe SSD (DRAM-less) 1f40 PCIe 4 NVMe SSD (DRAM-less) 2263 PCIe 3 SM based NVMe SSD (DRAM-less) 5216 PCIe 3 NVMe SSD (DRAM-less) 5236 PCIe 4 INNOGRIT based NVMe SSD 5765 PCIe 3 NVMe SSD (DRAM-less) 1f44 VVDN Technologies Private Limited # YUSUR Technology Co., Ltd. 1f47 YUSUR Tech # Network Accelerating Card 2018 DPU Card # Network Accelerating Card 2020 DPU 1f4b Axera Semiconductor Co., Ltd 1f52 MangoBoost Inc. 1f56 SAPEON Inc. 1f60 Accelecom 0001 XELE-NIC 25K5 0054 XELE-NIC 25K5 1f67 Yunsilicon Technology 1011 metaConnect SmartNIC Physical Function 1012 metaConnect SmartNIC Virtual Function 1051 metaFusion DPU Physical Function 1052 metaFusion DPU Virtual Function 1059 metaFusion DPU SoC Network Interface 1111 metaScale SmartNIC Physical Function 1112 metaScale SmartNIC Virtual Function 1151 metaVisor DPU Physical Function 1152 metaVisor DPU Virtual Function 1f73 Shenzhen Quanxing Tech Co., Ltd. 1f7a Efinix, Inc. 0100 Default ID for Titanium FPGA PCIe Interface (AXI) 1f99 Shenzhen Techwinsemi Technology Co., Ltd. 1f9d Axelera AI 1100 Metis AIPU (rev 02) 11aa Metis AIPU (rev 01) 1faa Hexaflake (Shanghai) Information Technology Co., Ltd. 0c10 Compass C10 PF 0c11 Compass C10 VF 0c80 Compass2 C80 PF 0c81 Compass2 C80 VF 1fab Unifabrix Ltd. 0000 Nexus Alpha IVPU 0100 NoX Gamma 01fd Smart Memory Node Generic CXL Port (T1) # UnifabriX Smart Memory Node Generic CXL Port 01fe Smart Memory Node Generic CXL Port (T2) # UnifabriX Smart Memory Node Generic CXL Port 01ff Smart Memory Node Generic CXL Port (T3) 1b00 MAX Host Device 1fb0 ICube Corporation Limited 1000 NF1000 Series GPU 1fb0 1001 NF1001 1fb0 1002 NF1002 1fb0 1003 NF1003 # NF1000 Series GPU 1001 NF1001 1fb0 1001 NF1001 1fb0 1002 NF1002 1fb0 1003 NF1003 2000 NF2000 Series GPU 1fb0 2001 NF2001 1fb0 2002 NF 2002 1fb0 2003 NF 2003 3000 NF3000 Series GPU 1fb0 3001 NF3001 1fb0 3002 NF3002 1fb0 3003 NF3003 4000 NF4000 Series GPU 1fb0 4001 NF4001 1fb0 4002 NF4002 1fb0 4003 NF4003 5000 NF5000 Series GPU 1fb0 5001 NF 5001 1fb0 5002 NF 5002 1fb0 5003 NF5003 # nee Tumsan Oy 1fc0 Ascom (Finland) Oy 0300 E2200 Dual E1/Rawpipe Card 0301 C5400 SHDSL/E1 Card # nee PathScale, Inc 1fc1 QLogic, Corp. 000d IBA6110 InfiniBand HCA 0010 IBA6120 InfiniBand HCA 1fc9 Tehuti Networks Ltd. 3009 10-Giga TOE SmartNIC 3010 10-Giga TOE SmartNIC 0000 3002 10-Giga TOE Single Port XFP SmartNIC 0000 3004 10-Giga TOE Single Port SFP+ SmartNIC 0000 3008 10-Giga TOE Single Port CX4 SmartNIC 3014 10-Giga TOE SmartNIC 2-Port 0000 3003 10-Giga TOE Dual Port XFP Low Profile SmartNIC 0000 3005 10-Giga TOE Dual Port SFP+ Low Profile SmartNIC 0000 3014 10-Giga TOE Dual Port CX4 Low Profile SmartNIC 3110 10-Giga TOE Single Port SmartNIC 0000 3004 10-Giga TOE Single Port SFP+ SmartNIC 3114 10-Giga TOE Dual Port Low Profile SmartNIC 0000 3005 10-Giga TOE Dual Port SFP+ Low Profile SmartNIC 0000 3011 10-Giga TOE Dual Port SFP+/CX4 Low Profile SmartNIC 0000 3012 10-Giga TOE Dual Port CX4/SFP+ Low Profile SmartNIC 0000 3014 10-Giga TOE Dual Port CX4 Low Profile SmartNIC 3310 10-Giga TOE SFP+ Single Port SmartNIC 0000 3004 10-Giga TOE Single Port SFP+ SmartNIC 3314 10-Giga TOE Dual Port Low Profile SmartNIC 0000 3005 10-Giga TOE Dual Port SFP+ Low Profile SmartNIC 0000 3011 10-Giga TOE Dual Port SFP+/CX4 Low Profile SmartNIC 0000 3012 10-Giga TOE Dual Port CX4/SFP+ Low Profile SmartNIC 0000 3014 10-Giga TOE Dual Port CX4 Low Profile SmartNIC 4010 TN4010 Clean SROM 4020 TN9030 10GbE CX4 Ethernet Adapter 180c 2040 Mustang-200 10GbE Ethernet Adapter 4022 TN9310 10GbE SFP+ Ethernet Adapter 1043 8709 XG-C100F 10GbE SFP+ Ethernet Adapter 1186 4d00 DXE-810S 10GbE SFP+ Ethernet Adapter 1432 8103 10 Gigabit Ethernet SFP+ PCI Express Adapter 1fc9 3015 Ethernet Adapter 4024 TN9210 10GBase-T Ethernet Adapter 4025 TN9510 10GBase-T/NBASE-T Ethernet Adapter 105a 7203 SANLink3 NBase-T1 1186 2900 DXE-810T 10GBase-T Ethernet Adapter 1432 8102 10 Gigabit Ethernet PCI Express Adapter 1fc9 3015 Ethernet Adapter 4026 TN9610 10GbE SFP+ Ethernet Adapter 4c52 1000 LREC6860AF 10 Gigabit Ethernet Adapter 4027 TN9710P 10GBase-T/NBASE-T Ethernet Adapter 1154 0368 LGY-PCIE-MG 1432 8104 10 Gigabit Ethernet PCI Express Adapter 1546 4027 GE10-PCIE4XG202P 10Gbase-T/NBASE-T Ethernet Adapter 1baa 3310 PCIe Expansion Card 1fc9 3015 Ethernet Adapter 4c52 1001 LREC6860BT 10 Gigabit Ethernet Adapter 4527 TN9710Q 5GBase-T/NBASE-T Ethernet Adapter 1fcc StreamLabs f416 MS416 fb01 MH4LM 1fce Cognio Inc. 0001 Spectrum Analyzer PC Card (SAgE) 1fd4 SUNIX Co., Ltd. 0001 Matrix multiport serial adapter 1999 Multiport serial controller 1fde Kratos Defense & Security Solutions, Inc. 1125 OpenEdge 1125P 2500 OpenEdge 2500P 1fe0 Allwinmeta Co., Ltd. 1010 AWM 1 2000 AWM 2 2010 AWM 2-M 1fe1 Beijing Eswin Computing Technology Co., Ltd. 1fe4 HippStor Technology 1600 HP600 Series NVMe SSD 1fe4 0075 Enterprise NVMe SSD U.2 3.84TB(HP610) 1fe4 0076 Enterprise NVMe SSD U.2 7.68TB(HP610) 1fe4 0077 Enterprise NVMe SSD U.2 6.40TB(HP630) 1fe4 0078 Enterprise NVMe SSD U.2 3.20TB(HP630) 1fe9 MemryX # LinkData Technology (Tianjin) Co., LTD 1ff2 Linkdata 10a1 NIC1160 Ethernet Controller Family 1ff2 0c11 10GE Ethernet Adapter 1160-2X 10a2 NIC1160 Ethernet Controller Virtual Function Family 20a1 IOC2110 Storage Controller 1ff2 0a11 2120-16i SATA3/SAS3 HBA Adapter 1ff2 0a12 2120-8i SATA3/SAS3 HBA Adapter 20a2 IOC2250 Storage Controller 1ff2 0a21 2230-18i Tri-mode HBA Adapter 1ff2 0a22 2230-10i Tri-mode HBA Adapter 1ff2 0a23 2230-16i Tri-mode HBA Adapter 1ff2 0a24 2230-8i Tri-mode HBA Adapter 1ff2 0a28 2233-16i Tri-mode HBA Adapter 30a2 ROC3250 Storage Controller 1ff2 0b21 3260-18i Tri-mode RAID Adapter 1ff2 0b22 3260-10i Tri-mode RAID Adapter 1ff2 0b23 3260-16i Tri-mode RAID Adapter 1ff2 0b24 3260-8i Tri-mode RAID Adapter 1ff4 DEEPX Co., Ltd. 0000 DX_M1 0001 DX_M1A 1000 DX_H1 1ff8 Beijing Gengtu Technology Co.Ltd 2000 GT6910 2010 GT6908 1ff9 Inagile Electronic Technology Co., LTD 2000 Smart Link Ltd. 2800 SmartPCI2800 V.92 PCI Soft DFT 2001 Temporal Research Ltd 2003 Smart Link Ltd. 8800 LM-I56N 2004 Smart Link Ltd. 202c CAEN S.p.A. 5818 A5818 2036 Netforward Microelectronics Co., Ltd. 1618 NF1618 PCI Express Ethernet Controller 2036 0860 NF1618 Family NX860 (2*25GE) 2036 0861 NF1618 Family NX861 (4*25GE) 2036 0862 NF1618 Family NX862 (2*50GE) 2036 0863 NF1618 Family NX863 (2*100GE) 2036 0864 NF1618 Family NX864 (1*200GE) 1619 NF1618 Family Virtual Function 2046 GXMICRO Technology (Shanghai) Co., Ltd. 2048 Beijing SpaceControl Technology Co.Ltd 2061 Unis Flash Memory 4000 E4000 controller 4100 E4100 controller 2063 Hubei Yangtze Mason Semiconductor Technology Co., Ltd. 1406 ME7000 NVMe SSD 206d GigaIO Networks, Inc. 20f4 TRENDnet 2116 ZyDAS Technology Corp. 21b4 Hunan Goke Microelectronics Co., Ltd 21c3 21st Century Computer Corp. 22b8 Flex-Logix Technologies 22a0 Flex Logix InferX X1 Inference Accelerator 22db Missing Link Electronics, Inc. 1200 NVMe Streamer EP ERD 2304 Colorgraphic Communications Corp. 2321 Bruker AXS Inc. 0002 Hi-Star PCI Interface 2348 Racore 2010 8142 100VG/AnyLAN 256c Graphics Technology (HK) Co., Ltd. 006d HS610 2646 Kingston Technology Company, Inc. 0010 HyperX Predator PCIe AHCI SSD 2262 KC2000/KC2500 NVMe SSD SM2262EN 2263 A2000 NVMe SSD SM2263EN 5008 A1000/U-SNS8154P3 x2 NVMe SSD 500a DC1000B NVMe SSD E12DC 500b DC1000M NVMe SSD SM2270 500c OM8PCP Design-In PCIe 3 NVMe SSD (DRAM-less) 500d OM3PDP3 NVMe SSD 500e NV1 NVMe SSD E13T (DRAM-less) 500f NV1 NVMe SSD SM2263XT (DRAM-less) 5010 OM8SBP NVMe PCIe SSD (DRAM-less) 5012 DC1500M NVMe SSD SM2270 5013 KC3000/FURY Renegade NVMe SSD E18 5014 OM8SEP4 Design-In PCIe 4 NVMe SSD (TLC) (DRAM-less) 5016 OM3PGP4 NVMe SSD 5017 NV2 NVMe SSD SM2267XT (DRAM-less) 5019 NV2 NVMe SSD E21T (DRAM-less) # 128GB 501a OM8PGP4 Design-In PCIe 4 NVMe SSD (TLC) (DRAM-less) 501b OM8PGP4 NVMe PCIe SSD (DRAM-less) 501c NV2 NVMe SSD E19T (DRAM-less) 501d NV2 NVMe SSD TC2200 (DRAM-less) 501f FURY Renegade NVMe SSD with heatsink 5021 OM8SEP4 Design-In PCIe 4 NVMe SSD (QLC) (DRAM-less) 5022 OM8PGP4 Design-In PCIe 4 NVMe SSD (QLC) (DRAM-less) 5023 NV2 NVMe SSD SM2269XT (DRAM-less) 5024 DC2000B NVMe SSD E18DC 5025 NV3 NVMe SSD TC2201 (DRAM-less) 5026 NV3 NVMe SSD E21T (DRAM-less) 5027 NV3 NVMe SSD E27T (DRAM-less) 5028 NV3 NVMe SSD SM2268XT2 (DRAM-less) 270b Xantel Corporation 270f Chaintech Computer Co. Ltd 2711 AVID Technology Inc. 2782 Emdoor Digital Technology Co., Ltd 2955 Connectix Virtual PC 6e61 OHCI USB 1.1 controller 2a15 3D Vision(???) 2a18 Video Transcode Controller 2a22 Video Transcode Controller 2bd8 ROPEX Industrie-Elektronik GmbH 3000 Hansol Electronics Inc. 30c9 Luxvisions Innovation Technology Ltd. 3100 Dynabook Inc. 3112 Satelco Ingenieria S.A. 3130 AUDIOTRAK 3142 Post Impression Systems. 31ab Zonet 1faa ZEW1602 802.11b/g Wireless Adapter 328f Shenzhen EMEET Technology Co., Ltd. 004c OfficeCore M1A 2019 REC 600 HD Webcam 3388 Hint Corp 0013 HiNT HC4 PCI to ISDN bridge, Multimedia audio controller 0014 HiNT HC4 PCI to ISDN bridge, Network controller 0020 HB6 Universal PCI-PCI bridge (transparent mode) 0021 HB6 Universal PCI-PCI bridge (non-transparent mode) 1775 c200 C2K CompactPCI interface bridge 1775 ce90 CE9 4c53 1050 CT7 mainboard 4c53 1080 CT8 mainboard 4c53 1090 Cx9 mainboard 4c53 10a0 CA3/CR3 mainboard 4c53 3010 PPCI mezzanine (32-bit PMC) 4c53 3011 PPCI mezzanine (64-bit PMC) 4c53 4000 PMCCARR1 carrier board 0022 HiNT HB4 PCI-PCI Bridge (PCI6150) 0026 HB2 PCI-PCI Bridge 1014 AudioTrak Maya 1018 Audiotrak INCA88 1019 Miditrak 2120 101a E.Band [AudioTrak Inca88] 101b E.Band [AudioTrak Inca88] 8011 VXPro II Chipset 3388 8011 VXPro II Chipset CPU to PCI Bridge 8012 VXPro II Chipset 3388 8012 VXPro II Chipset PCI to ISA Bridge 8013 VXPro II IDE 3388 8013 VXPro II Chipset EIDE Controller a103 Blackmagic Design DeckLink HD Pro 3411 Quantum Designs (H.K.) Inc 3442 Bihl+Wiedemann GmbH 1783 AS-i 3.0 cPCI Master 1922 AS-i 3.0 PCI Master 3475 Arista Networks, Inc. 34ba Ice Lake-LP PCI Express Root Port #3 3513 ARCOM Control Systems Ltd 369a HighSecLabs, Ltd. 37d9 ITD Firm ltd. 1138 SCHD-PH-8 Phase detector 1140 VR-12-PCI 12-ch Relay Actuator Card 1141 PCI-485(422) Multi-port Serial Board 1142 PCI-CAN2 3842 eVga.com. Corp. 38ef 4Links # Wrong ID in board programmed sub-did in place of sub-vid 393e Lenovo (wrong ID) 3d3d 3DLabs 0001 GLINT 300SX 0002 GLINT 500TX 0000 0000 GLoria L 0003 GLINT Delta 0000 0000 GLoria XL 0004 Permedia 0005 Permedia 0006 GLINT MX 0000 0000 GLoria XL 1048 0a42 GLoria XXL 0007 3D Extreme 0008 GLINT Gamma G1 1048 0a42 GLoria XXL 0009 Permedia II 2D+3D 1040 0011 AccelStar II 1048 0a42 GLoria XXL 13e9 1000 6221L-4U 3d3d 0100 AccelStar II 3D Accelerator 3d3d 0111 Permedia 3:16 3d3d 0114 Santa Ana 3d3d 0116 Oxygen GVX1 3d3d 0119 Scirocco 3d3d 0120 Santa Ana PCL 3d3d 0125 Oxygen VX1 3d3d 0127 Permedia3 Create! 000a GLINT R3 3d3d 0121 Oxygen VX1 000c GLINT R3 [Oxygen VX1] 3d3d 0144 Oxygen VX1-4X AGP [Permedia 4] 000d GLint R4 rev A 000e GLINT Gamma G2 0011 GLint R4 rev B 0012 GLint R5 rev A 0013 GLint R5 rev B 0020 VP10 visual processor 0022 VP10 visual processor 0024 VP9 visual processor 002c Wildcat Realizm 100/200 0030 Wildcat Realizm 800 0032 Wildcat Realizm 500 0100 Permedia II 2D+3D 07a1 Wildcat III 6210 07a2 Sun XVR-500 Graphics Accelerator 3d3d 1047 Sun XVR-600 Graphics Accelerator 07a3 Wildcat IV 7210 1004 Permedia 3d04 Permedia ffff Glint VGA 4005 Avance Logic Inc. 0300 ALS300 PCI Audio Device 0308 ALS300+ PCI Audio Device 0309 PCI Input Controller 1064 ALG-2064 2064 ALG-2064i 2128 ALG-2364A GUI Accelerator 2301 ALG-2301 2302 ALG-2302 2303 AVG-2302 GUI Accelerator 2364 ALG-2364A 2464 ALG-2464 2501 ALG-2564A/25128A 4000 ALS4000 Audio Chipset 4005 4000 ALS4000 Audio Chipset 4710 ALC200/200P 4033 Addtron Technology Co, Inc. 1360 RTL8139 Ethernet 4040 NetXen Incorporated 0001 NXB-10GXSR 10-Gigabit Ethernet PCIe Adapter with SR-XFP optical interface 103c 7047 NC510F PCIe 10-Gigabit Server Adapter 0002 NXB-10GCX4 10-Gigabit Ethernet PCIe Adapter with CX4 copper interface 103c 7048 NC510c PCIe 10-Gigabit Server Adapter 0003 NXB-4GCU Quad Gigabit Ethernet PCIe Adapter with 1000-BASE-T interface 0004 BladeCenter-H 10-Gigabit Ethernet High Speed Daughter Card 0005 NetXen Dual Port 10GbE Multifunction Adapter for c-Class 103c 170e NC512m Dual Port 10GbE Multifunction BL-C Adapter 0024 XG Mgmt 0025 XG Mgmt 0100 NX3031 Multifunction 1/10-Gigabit Server Adapter 103c 171b NC522m Dual Port 10GbE Multifunction BL-c Adapter 103c 1740 NC375T PCI Express Quad Port Gigabit Server Adapter 103c 3251 NC375i 1G w/NC524SFP 10G Module 103c 705a NC375i Integrated Quad Port Multifunction Gigabit Server Adapter 103c 705b NC522SFP Dual Port 10GbE Server Adapter 152d 896b TG20 Dual Port 10GbE Server/Storage Adapter 4040 0124 NX3031 Quad Port Gigabit Server Adapter 4040 0126 Dual Port SFP+ 10GbE Server Adapter 4143 Digital Equipment Corp 4144 Alpha Data 0044 ADM-XRCIIPro 4150 ONA Electroerosion 0001 PCI32TLITE FILSTRUP1 PCI to VME Bridge Controller 0006 PCI32TLITE UART 16550 Opencores 0007 PCI32TLITE CAN Controller Opencores 415a Auzentech, Inc. 416c Aladdin Knowledge Systems 0100 AladdinCARD 0200 CPC 4242 Universall Answer Generators 4254 DVBSky 4321 Tata Power Strategic Electronics Division 4348 WCH.CN 2273 CH351 PCI Dual Serial Port Controller 3253 CH352 PCI Dual Serial Port Controller 3453 CH353 PCI Quad Serial Port Controller 5053 CH352 PCI Serial and Parallel Port Controller 7053 CH353 PCI Dual Serial and Parallel Ports Controller 7073 CH356 PCI Quad Serial and Parallel Ports Controller 7173 CH355 PCI Quad Serial Port Controller 434e Cornelis Networks 4444 Internext Compression Inc 0016 iTVC16 (CX23416) Video Decoder 0070 0003 WinTV PVR 250 0070 0009 WinTV PVR 150 0070 0801 WinTV PVR 150 0070 0807 WinTV PVR 150 0070 4001 WinTV PVR 250 0070 4009 WinTV PVR 250 0070 4801 WinTV PVR 250 0070 4803 WinTV PVR 250 0070 8003 WinTV PVR 150 0070 8801 WinTV PVR 150 0070 c801 WinTV PVR 150 0070 e807 WinTV PVR 500 (1st unit) 0070 e817 WinTV PVR 500 (2nd unit) 0070 ff92 WiNTV PVR-550 0270 0801 WinTV PVR 150 104d 013d ENX-26 TV Encoder 10fc d038 GV-MVP/RX2W (1st unit) 10fc d039 GV-MVP/RX2W (2nd unit) 12ab fff3 MPG600 12ab ffff MPG600 1461 c00a M113 PCI Analog TV (PAL/SECAM, Philips FQ1216MK3 tuner) 1461 c00b M113 PCI Analog TV (PAL/SECAM+FM, Philips FM1216MK3 tuner) 1461 c00c M113 PCI Analog TV (NTSC, JAPAN version, Philips FI1286MK2 tuner) 1461 c010 M113 PCI Analog TV (NTSC, Philips FI1236MK3 tuner) 1461 c011 M113 PCI Analog TV (NTSC+FM, Philips FM1236MK3 tuner) 1461 c018 M113 PCI Analog TV (NTSC, Philips FQ1236MK5 tuner) 1461 c019 UltraTV 1500 MCE, a.k.a. M113 PCI Analog TV (NTSC+FM, Philips FQ1236MK5 tuner) 1461 c01a M113 PCI Analog TV (PAL/SECAM, Philips FQ1216MK5 tuner) 1461 c01b M113 PCI Analog TV (PAL/SECAM+FM, Philips FM1216MK5 tuner) 1461 c030 M113 PCI Analog TV (NTSC-J, Partsnic tuner) 1461 c031 M113 PCI Analog TV (NTSC-J+FM, Partsnic tuner) 1461 c032 M113 PCI Analog TV (PAL/SECAM, Partsnic tuner) 1461 c033 M113 PCI Analog TV (PAL/SECAM+FM, Partsnic tuner) 1461 c034 M113 PCI Analog TV (NTSC, Partsnic tuner) 1461 c035 M113 PCI Analog TV (NTSC+FM, Partsnic tuner) 1461 c03f C115 PCI video capture card (no tuner) 1461 c136 M104 mini-PCI Analog TV 1461 c20a M755 AVerTV Video Capture (PAL/SECAM, Philips FQ1216MK3 tuner) 1461 c218 M755 AVerTV Video Capture (NTSC, Philips FQ1236MK5 tuner) 1461 c219 M755 AVerTV Video Capture (NTSC+FM, Philips FQ1236MK5 tuner) 1461 c21a M755 AVerTV Video Capture (PAL/SECAM, Philips FQ1216MK5 tuner) 1461 c21b M755 AVerTV Video Capture (PAL/SECAM+FM, Philips FM1216MK5 tuner) 1461 c230 M755 AVerTV Video Capture (NTSC-J, Partsnic tuner) 1461 c231 M755 AVerTV Video Capture (NTSC-J+FM, Partsnic tuner) 1461 c232 M755 AVerTV Video Capture (PAL/SECAM, Partsnic tuner) 1461 c233 M755 AVerTV Video Capture (PAL/SECAM+FM, Partsnic tuner) 1461 c234 M755 AVerTV Video Capture (NTSC, Partsnic tuner) 1461 c235 M755 AVerTV Video Capture (NTSC+FM, Partsnic tuner) 1461 c337 E106 AVerMedia AVerTV Video Capture 1461 c439 M116 AVerMedia AVerTV MCE 116 Plus (NTSC/PAL/SECAM+FM+REMOTE, Xceive 2028 tuner) 1461 c5ff C755 AVerTV Video Capture card (no tuner) 1461 c6ff C115 PCI video capture card (no tuner) 1461 c739 M785 AVerMedia PCI Analog TV (NTSC/PAL/SECAM+FM, Xceive 2028 tuner) 9005 0092 VideOh! AVC-2010 9005 0093 VideOh! AVC-2410 0803 iTVC15 (CX23415) Video Decoder 0070 4000 WinTV PVR-350 0070 4001 WinTV PVR-250 0070 4800 WinTV PVR-350 (V1) 12ab 0000 MPG160 1461 a3ce M179 1461 a3cf M179 4468 Bridgeport machines 4594 Cogetec Informatique Inc 45fb Baldor Electric Company 4624 Budker Institute of Nuclear Physics adc1 ADC200ME High speed ADC de01 DL200ME High resolution delay line PCI based card de02 DL200ME Middle resolution delay line PCI based card 4651 TXIC 4680 Umax Computer Corp 4843 Hercules Computer Technology Inc 4916 RedCreek Communications Inc 1960 RedCreek PCI adapter 4943 Growth Networks 494f ACCES I/O Products, Inc. 0508 PCI-IDO-16A FET Output Card 0518 PCI-IDO-32A FET Output Card 0520 PCI-IDO-48 FET Output Card 0521 PCI-IDO-48A FET Output Card 0703 PCIe-RO-4 Electromechanical Relay Output Card 07d0 PCIe-IDO-24 FET Output Card 0920 PCI-IDI-48 Isolated Digital Input Card 0bd0 PCIe-IDI-24 Isolated Digital Input Card 0c50 PCI-DIO-24H 1x 8255 Digital Input / Output Card 0c51 PCI-DIO-24D 1x 8255 Digital Input / Output Card 0c52 PCIe-DIO-24 1x 8255 Digital Input / Output Card 0c53 PCIe-DIO-24H 8255 Digital Input / Output Card 0c57 mPCIe-DIO-24 8255 Digital Input / Output Card 0c60 PCI-DIO-48H 8255 Digital Input / Output Card 0c61 PCIe-DIO-48 8255 Digital Input / Output Card 0c62 P104-DIO-48 8255 Digital Input / Output Card 0c68 PCI-DIO-72 8255 Digital Input / Output Card 0c69 P104-DIO-96 8255 Digital Input / Output Card 0c70 PCI-DIO-96 8255 Digital Input / Output Card 0c78 PCI-DIO-120 8255 Digital Input / Output Card 0dc8 PCI-IDIO-16 Isolated Digital Input / FET Output Card 0e50 PCI-DIO-24S 8255 Digital Input / Output Card 0e51 PCI-DIO-24H(C) 8255 Digital Input / Output Card 0e52 PCI-DIO-24D(C) 8255 Digital Input / Output Card 0e53 PCIe-DIO-24S 8255 Digital Input / Output Card 0e54 PCIe-DIO-24HS 8255 Digital Input / Output Card 0e55 PCIe-DIO-24DC 8255 Digital Input / Output Card 0e56 PCIe-DIO-24DCS 8255 Digital Input / Output Card 0e57 mPCIe-DIO-24S 8255 Digital Input / Output Card 0e60 PCI-DIO-48S 2x 8255 Digital Input / Output Card 0e61 PCIe-DIO-48S 2x 8255 Digital Input / Output Card 0e62 P104-DIO-48S 2x 8255 Digital Input / Output Card 0f00 PCI-IIRO-8 Isolated Digital / Relay Output Card 0f01 LPCI-IIRO-8 Isolated Digital / Relay Output Card 0f02 PCIe-IIRO-8 Isolated Digital / Relay Output Card 0f08 PCI-IIRO-16 Isolated Digital / Relay Output Card 0f09 PCIe-IIRO-16 Isolated Digital / Relay Output Card 0fc0 PCIe-IDIO-12 Isolated Digital Input / FET Output Card 0fc1 PCIe-IDI-12 Isolated Digital Input Card 0fc2 PCIe-IDO-12 FET Output Card 0fd0 PCIe-IDIO-24 Isolated Digital Input / FET Output Card 1050 PCI-422/485-2 2x RS422/RS484 Card 1051 PCIe-COM-2SRJ 2x RS422/RS484 Card w/RJ45 Connectors 1052 104I-COM-2S 2x RS422/RS484 PCI/104 Board 1053 mPCIe-COM-2S 2x RS422/RS484 PCI Express Mini Card 1058 PCI-COM422/4 4x RS422 Card 1059 PCI-COM485/4 4x RS485 Card 105a PCIe-COM422-4 4x RS422 Card 105b PCIe-COM485-4 4x RS485 Card 105c PCIe-COM-4SRJ 4x RS422/RS485 Card w/RJ45 Connectors 105d 104I-COM-4S 4x RS422/RS484 PCI/104 Board 105e mPCIe-COM-4S 4x RS422/RS484 PCI Express Mini Card 1068 PCI-COM422/8 8x RS422 Card 1069 PCI-COM485/8 8x RS485 Card 106a PCIe-COM422-8 8x RS422 Card 106b PCIe-COM485-8 8x RS485 Card 106c 104I-COM-8S 8x RS422/RS485 PCI/104 Board 1088 PCI-COM232/1 1x RS232 Card 1090 PCI-COM232/2 2x RS232 Card 1091 PCIe-COM232-2RJ 2x RS232 Card w/RJ45 Connectors 1093 mPCIe-COM232-2 2x RS232 PCI Express Mini Card 1098 PCIe-COM232-4 4x RS232 Card 1099 PCIe-COM232-4RJ 4x RS232 Card w/RJ45 Connectors 109b mPCIe-COM232-4 4x RS232 PCI Express Mini Card 10a8 P104-COM232-8 8x RS232 PC-104+ Board 10a9 PCIe-COM232-8 8x RS232 Card 10c9 PCI-COM-1S 1x RS422/RS485 Card 10d0 PCI-COM2S 2x RS422/RS485 Card 10d1 PCIe-COM-2SMRJ 2x RS232/RS422/RS485 Card w/RJ45 Connectors 10d2 104I-COM-2SM 2x RS232/RS422/RS485 PCI/104 Board 10d3 mPCIe-COM-2SM 2x RS232/RS422/RS485 PCI Express Mini Card 10d8 PCI-COM-4SM 4x RS232/RS422/RS485 Card 10d9 PCIe-COM-4SM 4x RS232/RS422/RS485 Card 10da PCIe-COM-4SMRJ 4x RS232/RS422/RS485 Card w/RJ45 Connectors 10db 104I-COM-4SM 4x RS232/RS422/RS485 PCI/104 Board 10dc mPCIe-COM-4SM 4x RS232/RS422/RS485 PCI Express Mini Card 10e8 PCI-COM-8SM 8x RS232/RS422/RS485 Card 10e9 PCIe-COM-8SM 8x RS232/RS422/RS485 Card 10ea 104I-COM-8SM 8x RS232/RS422/RS485 PCI-104 Board 1108 mPCIe-ICM485-1 1x Isolated RS485 PCI Express Mini Card 1110 mPCIe-ICM422-2 2x Isolated RS422 PCI Express Mini Card 1111 mPCIe-ICM485-2 2x Isolated RS485 PCI Express Mini Card 1118 mPCIe-ICM422-4 4x Isolated RS422 PCI Express Mini Card 1119 mPCIe-ICM485-4 4x Isolated RS485 PCI Express Mini Card 1148 PCI-ICM-1S 1x Isolated RS422/RS485 Card 1150 PCI-ICM-2S 2x Isolated RS422/RS485 Card 1152 PCIe-ICM-2S 2x Isolated RS422/RS485 Card 1158 PCI-ICM422/4 4x Isolated RS422 Card 1159 PCI-ICM485/4 4x Isolated RS485 Card 115a PCIe-ICM-4S 4x Isolated RS422/RS485 Card 1190 PCIe-ICM232-2 2x Isolated RS232 Card 1191 mPCIe-ICM232-2 2x Isolated RS232 PCI Express Mini Card 1198 PCIe-ICM232-4 4x Isolated RS232 Card 1199 mPCIe-ICM232-4 4x Isolated RS422 PCI Express Mini Card 11d0 PCIe-ICM-2SM 2x Isolated RS232/RS422/RS485 Card 11d8 PCIe-ICM-4SM 4x Isolated RS232/RS422/RS485 Card 1250 PCI-WDG-2S Watchdog and 2x Serial Card 12d0 PCI-WDG-IMPAC 2230 PCI-QUAD-8 8x Quadrature Input Card 2231 PCI-QUAD-4 4x Quadrature Input Card 22c0 PCI-WDG-CSM Watchdog Card 25c0 P104-WDG-E Watchdog PC/104+ Board 2c50 PCI-DIO-96CT 96x Digital Input / Output Card 2c58 PCI-DIO-96C3 96x Digital Input / Output Card w/3x 8254 Counter Card 2ee0 PCIe-DIO24S-CTR12 24x Digital Input / Output Card w/4x 8254 Counter Card 2fc0 P104-WDG-CSM Watchdog PC/104+ Board 2fc1 P104-WDG-CSMA Advanced Watchdog PC/104+ Board 5ed0 PCI-DAC 6c90 PCI-DA12-2 2x 12-bit Analog Output Card 6c98 PCI-DA12-4 4x 12-bit Analog Output Card 6ca0 PCI-DA12-6 6x 12-bit Analog Output Card 6ca8 PCI-DA12-8 8x 12-bit Analog Output Card 6ca9 PCI-DA12-8V 6cb0 PCI-DA12-16 16x 12-bit Analog Output Card 6cb1 PCI-DA12-16V 8ef0 P104-FAS16-16 aca8 PCI-AI12-16 12-bit 100kHz Analog Input Card aca9 PCI-AI12-16A 12-bit 100kHz Analog Input w/FIFO Card eca8 PCI-AIO12-16 12-bit 100kHz Analog Input w/2x Analog Output and FIFO Card ecaa PCI-A12-16A 12-bit 100kHz Analog Input w/2x Analog Output and FIFO Card ece8 LPCI-A16-16A 16-bit 500kHz Analog Input low-profile Card ece9 LPCI-AIO16A 16-bit 500kHz Analog Input low-profile Card 4978 Axil Computer Inc 4a14 NetVin 5000 NV5000SC 4a14 5000 RT8029-Based Ethernet Adapter 4b10 Buslogic Inc. 4b43 KonteX Inc. 4c48 LUNG HWA Electronics 4c4d Liquid-Markets GmbH # Dev versions of TaSR, not for production. 9998 TaSR # First versions of UberNIC, not for production. 9999 UberNIC PoC/testing/dev 4c52 LR-LINK 1001 Smart Network Adapter 4c52 a008 LREG1008PT Single-port 1Gb Smart Ethernet Network Adapter 1002 Smart Network Adapter 4c52 a006 LREG1006PT Single-port 1.2Gb Network Security Isolation Adapter 1003 Smart Network Adapter 1004 Smart Network Adapter 4c52 b010 LREG1010PF Single-port 10Gb FPGA Network Security Isolation Adapter 4c52 b011 LREG1011PF Dual-port 10Gb FPGA Network Security Isolation Adapter 4c53 SBS Technologies 0000 PLUSTEST device 4c53 3000 PLUSTEST card (PC104+) 4c53 3001 PLUSTEST card (PMC) 0001 PLUSTEST-MM device 4c53 3002 PLUSTEST-MM card (PMC) 4ca1 Seanix Technology Inc 4d51 MediaQ Inc. 0200 MQ-200 4d54 Microtechnica Co Ltd 4d56 Balluff MV GmbH 0000 [mvHYPERION-CLe/CLb] CameraLink PCI Express x1 Frame Grabber 0001 [mvHYPERION-CLf/CLm] CameraLink PCI Express x4 Frame Grabber 0010 [mvHYPERION-16R16/-32R16] 16 Video Channel PCI Express x4 Frame Grabber 0020 [mvHYPERION-HD-SDI] HD-SDI PCI Express x4 Frame Grabber 0030 [mvHYPERION-HD-SDI-Merger] HD-SDI PCI Express x4 Frame Grabber 7012 [mvBlueNAOS BVS CA-BN] PCIe Gen1 x2 Camera 7014 [mvBlueNAOS BVS CA-BN] PCIe Gen1 x4 Camera 7022 [mvBlueNAOS BVS CA-BN] PCIe Gen2 x2 Camera 7024 [mvBlueNAOS BVS CA-BN] PCIe Gen2 x4 Camera 4ddc ILC Data Device Corp 0100 DD-42924I5-300 (ARINC 429 Data Bus) 0300 SB-3620 Motion Feedback Device 0340 SB-3623 Motion Feedback Device 0400 SB-3622 Motion Feedback Device 0500 SB-3621 Motion Feedback Device 0510 SB-3624 Motion Feedback Device 0801 BU-65570I1 MIL-STD-1553 Test and Simulation 0802 BU-65570I2 MIL-STD-1553 Test and Simulation 0811 BU-65572I1 MIL-STD-1553 Test and Simulation 0812 BU-65572I2 MIL-STD-1553 Test and Simulation 0881 BU-65570T1 MIL-STD-1553 Test and Simulation 0882 BU-65570T2 MIL-STD-1553 Test and Simulation 0891 BU-65572T1 MIL-STD-1553 Test and Simulation 0892 BU-65572T2 MIL-STD-1553 Test and Simulation 0901 BU-65565C1 MIL-STD-1553 Data Bus 0902 BU-65565C2 MIL-STD-1553 Data Bus 0903 BU-65565C3 MIL-STD-1553 Data Bus 0904 BU-65565C4 MIL-STD-1553 Data Bus 0b01 BU-65569I1 MIL-STD-1553 Data Bus 0b02 BU-65569I2 MIL-STD-1553 Data Bus 0b03 BU-65569I3 MIL-STD-1553 Data Bus 0b04 BU-65569I4 MIL-STD-1553 Data Bus 0d01 SB-3641 Motion Feedback Device 0d10 SB-365x Motion Feedback Device 2f00 SB-3642 Motion Feedback Device 3000 SB-3644 Motion Feedback Device 4e4c NieL TechSolution 4e58 Nutanix, Inc. 0001 Virtual NVMe Controller 5045 University of Toronto 4243 BLASTbus PCI Interface Card v1 5046 GemTek Technology Corporation 1001 PCI Radio 5053 Voyetra Technologies 2010 Daytona Audio Adapter 50b2 TerraTec Electronic GmbH 50ce System-on-Chip Engineering S.L. 0001 RELY-MIL-XMC-TSN-SWITCH 0100 XMC_AV-Dual-ETH 0101 XMC_AV-ETSN 0102 XMC_AV-AFDX 5136 S S Technologies 5143 Qualcomm Inc 5145 Ensoniq (Old) 3031 Concert AudioPCI 5168 Animation Technologies Inc. 0300 FlyDVB-S 0301 FlyDVB-T 5301 Alliance Semiconductor Corp. 0001 ProMotion aT3D 5333 S3 Graphics Ltd. 0551 Plato/PX (system) 5631 86c325 [ViRGE] 8800 86c866 [Vision 866] 8801 86c964 [Vision 964] 8810 86c764_0 [Trio 32 vers 0] 8811 86c764/765 [Trio32/64/64V+] 8812 86cM65 [Aurora64V+] 8813 86c764_3 [Trio 32/64 vers 3] 8814 86c767 [Trio 64UV+] 8815 86cM65 [Aurora 128] 883d 86c988 [ViRGE/VX] 8870 FireGL 8880 86c868 [Vision 868 VRAM] vers 0 8881 86c868 [Vision 868 VRAM] vers 1 8882 86c868 [Vision 868 VRAM] vers 2 8883 86c868 [Vision 868 VRAM] vers 3 88b0 86c928 [Vision 928 VRAM] vers 0 88b1 86c928 [Vision 928 VRAM] vers 1 88b2 86c928 [Vision 928 VRAM] vers 2 88b3 86c928 [Vision 928 VRAM] vers 3 88c0 86c864 [Vision 864 DRAM] vers 0 88c1 86c864 [Vision 864 DRAM] vers 1 88c2 86c864 [Vision 864-P DRAM] vers 2 88c3 86c864 [Vision 864-P DRAM] vers 3 88d0 86c964 [Vision 964 VRAM] vers 0 88d1 86c964 [Vision 964 VRAM] vers 1 88d2 86c964 [Vision 964-P VRAM] vers 2 88d3 86c964 [Vision 964-P VRAM] vers 3 88f0 86c968 [Vision 968 VRAM] rev 0 88f1 86c968 [Vision 968 VRAM] rev 1 88f2 86c968 [Vision 968 VRAM] rev 2 88f3 86c968 [Vision 968 VRAM] rev 3 8900 86c755 [Trio 64V2/DX] 5333 8900 86C775 Trio64V2/DX 8901 86c775/86c785 [Trio 64V2/DX or /GX] 5333 8901 86C775 Trio64V2/DX, 86C785 Trio64V2/GX 8902 Plato/PX 8903 Trio 3D business multimedia 8904 86c365, 86c366 [Trio 3D] 1014 00db Integrated Trio3D 4843 314a Terminator 128/3D GLH 5333 8904 86C365 Trio3D AGP 8905 Trio 64V+ family 8906 Trio 64V+ family 8907 Trio 64V+ family 8908 Trio 64V+ family 8909 Trio 64V+ family 890a Trio 64V+ family 890b Trio 64V+ family 890c Trio 64V+ family 890d Trio 64V+ family 890e Trio 64V+ family 890f Trio 64V+ family 8a01 86c375 [ViRGE/DX] or 86c385 [ViRGE/GX] 0e11 b032 ViRGE/GX 10b4 1617 Nitro 3D 10b4 1717 Nitro 3D 5333 8a01 ViRGE/DX 8a10 ViRGE/GX2 1092 8a10 Stealth 3D 4000 8a13 86c360 [Trio 3D/1X], 86c362, 86c368 [Trio 3D/2X] 5333 8a13 Trio3D/2X 8a20 86c794 [Savage 3D] 5333 8a20 86C391 Savage3D 8a21 86c390 [Savage 3D/MV] 5333 8a21 86C390 Savage3D/MV 8a22 Savage 4 1033 8068 Savage 4 1033 8069 Savage 4 1033 8110 Savage 4 LT 105d 0018 SR9 8Mb SDRAM 105d 002a SR9 Pro 16Mb SDRAM 105d 003a SR9 Pro 32Mb SDRAM 105d 092f SR9 Pro+ 16Mb SGRAM 1092 4207 Stealth III S540 1092 4800 Stealth III S540 1092 4807 SpeedStar A90 1092 4808 Stealth III S540 1092 4809 Stealth III S540 1092 480e Stealth III S540 1092 4904 Stealth III S520 1092 4905 SpeedStar A200 1092 4a09 Stealth III S540 1092 4a0b Stealth III S540 Xtreme 1092 4a0f Stealth III S540 1092 4e01 Stealth III S540 1102 101d 3d Blaster Savage 4 1102 101e 3d Blaster Savage 4 5333 8100 86C394-397 Savage4 SDRAM 100 5333 8110 86C394-397 Savage4 SDRAM 110 5333 8125 86C394-397 Savage4 SDRAM 125 5333 8143 86C394-397 Savage4 SDRAM 143 5333 8a22 86C394-397 Savage4 5333 8a2e 86C394-397 Savage4 32bit 5333 9125 86C394-397 Savage4 SGRAM 125 5333 9143 86C394-397 Savage4 SGRAM 143 8a23 Savage 4 8a25 ProSavage PM133 0303 0303 D9840-60001 [Brio BA410 Motherboard] 8a26 ProSavage KM133 8c00 ViRGE/M3 8c01 ViRGE/MX 1179 0001 ViRGE/MX 8c02 ViRGE/MX+ 8c03 ViRGE/MX+MV 8c10 86C270-294 [SavageMX-MV] 8c11 82C270-294 [SavageMX] 8c12 86C270-294 [SavageIX-MV] 1014 017f ThinkPad T20/T22 1179 0001 86C584 SuperSavage/IXC Toshiba 8c13 86C270-294 [SavageIX] 1179 0001 Magnia Z310 8c22 SuperSavage MX/128 8c24 SuperSavage MX/64 8c26 SuperSavage MX/64C 8c2a SuperSavage IX/128 SDR 8c2b SuperSavage IX/128 DDR 8c2c SuperSavage IX/64 SDR 8c2d SuperSavage IX/64 DDR 8c2e SuperSavage IX/C SDR 1014 01fc ThinkPad T23 8c2f SuperSavage IX/C DDR 8d01 86C380 [ProSavageDDR K4M266] 8d02 VT8636A [ProSavage KN133] AGP4X VGA Controller (TwisterK) 8d03 VT8751 [ProSavageDDR P4M266] 8d04 VT8375 [ProSavage8 KM266/KL266] 8e00 DeltaChrome 8e26 ProSavage 8e40 2300E Graphics Processor 8e48 Matrix [Chrome S25 / S27] 5333 0130 Chrome S27 256M DDR2 9043 Chrome 430 GT 9045 Chrome 430 ULP / 435 ULP / 440 GTX 9060 Chrome 530 GT # Found in VIA Embedded uH4 graphics card 9070 Chrome 5400EW 9102 86C410 [Savage 2000] 1092 5932 Viper II Z200 1092 5934 Viper II Z200 1092 5952 Viper II Z200 1092 5954 Viper II Z200 1092 5a35 Viper II Z200 1092 5a37 Viper II Z200 1092 5a55 Viper II Z200 1092 5a57 Viper II Z200 ca00 SonicVibes 5431 AuzenTech, Inc. 544c Teralogic Inc 0350 TL880-based HDTV/ATSC tuner 544d TBS Technologies 6178 DVB Tuner PCIe Card 544d 6904 TBS6904 DVB-S2 Quad Tuner PCIe Card 544d 6905 TBS6905 DVB-S2 Quad Tuner PCIe Card 6205 0001 TBS6205 DVB-T2/T/C Quad TV Tuner PCIe Card 6209 0001 TBS6209 DVB-T2/C2/T/C/ISDB-T OctaTV Tuner 6590 0001 TBS6590 DVB-S/S2/S2X/T/T2/C/C2/ISDB-T + 2xCI 6590 0002 TBS6590SE DVB-S/S2/S2X/T/T2/C/C2 + 2xCI 6704 ffff TBS6704 (Quad ATSC/QAMB) 6903 0020 TBS6903x (Dual DVB-S/S2/S2X) 6903 0021 TBS6903x (Dual DVB-S/S2/S2X) 6903 8888 TBS6903x (Dual DVB-S/S2/S2X) 6909 0009 TBS6909x (Octa DVB-S/S2/S2X) 6909 0010 TBS6909x (Octa DVB-S/S2/S2X) 6909 0019 TBS6909x (Octa DVB-S/S2/S2X) 6910 0001 TBS6910 DVB-S/S2 + 2xCI 6910 0002 TBS6910SE DVB-S/S2/S2x + 2xCI 5452 SCANLAB AG 3443 RTC4 5455 Technische Universitaet Berlin 4458 S5933 5456 GoTView 5519 Cnet Technologies, Inc. 5544 Dunord Technologies 0001 I-30xx Scanner Interface 5555 Genroco, Inc 0003 TURBOstor HFP-832 [HiPPI NIC] 0004 Torrent QN16e [16-128 Channel MPEG QAM Modulator for DVB-C] 3b00 Epiphan DVI2PCIe video capture card 5646 Vector Fabrics BV 5654 VoiceTronix Pty Ltd 5678 Dawicontrol Computersysteme GmbH 5700 Netpower # alternately Extreme Engineering Solutions, Inc. 5845 X-ES, Inc. 584d AuzenTech Co., Ltd. 5851 Exacq Technologies 8008 tDVR8008 8-port video capture card 8016 tDVR8016 16-chan video capture card 8032 tDVR8032 32-chan video capture card 5853 XenSource, Inc. 0001 Xen Platform Device c000 Citrix XenServer PCI Device for Windows Update c110 Virtualized HID c147 Virtualized Graphics Device c200 XCP-ng Project PCI Device for Windows Update 5854 GoTView 5ace Beholder International Ltd. 6205 TBS Technologies (wrong ID) 6209 TBS Technologies (wrong ID) 631c SmartInfra Ltd 1652 PXI-1652 Signal Generator 2504 PXI-2504 Signal Interrogator 6356 UltraStor 6374 c't Magazin fuer Computertechnik 6773 GPPCI 6409 Logitec Corp. 6549 Teradici Corp. 1200 TERA1200 PC-over-IP Host 6590 TBS Technologies (wrong ID) 6666 Decision Computer International Co. 0001 PCCOM4 0002 PCCOM8 0004 PCCOM2 0101 PCI 8255/8254 I/O Card 0200 12-bit AD/DA Card 0201 14-bit AD/DA Card 1011 Industrial Card 1021 8 photo couple 8 relay Card 1022 4 photo couple 4 relay Card 1025 16 photo couple 16 relay Card 4000 WatchDog Card 6688 Zycoo Co., Ltd 1200 CooVox TDM Analog Module 1400 CooVOX TDM GSM Module 1600 CooVOX TDM E1/T1 Module 1800 CooVOX TDM BRI Module 6704 TBS Technologies (wrong ID) 6766 Glenfly Tech Co., Ltd. 3d00 Arise-GT-10C0 3d02 Arise1020 3d03 Arise-GT-1040 3d04 Arise1010 3d06 Arise-GT-10C0t 3d07 Arise2030 3d08 Arise2020 3d40 GLF HDMI/DP Audio 3d41 GLF HDMI/DP Audio 3d43 GLF HDMI/DP Audio 6899 ZT Systems # nee Qumranet 6900 Red Hat, Inc. 6903 TBS Technologies (wrong ID) 6909 TBS Technologies (wrong ID) 6910 TBS Technologies (wrong ID) 6f67 NOVAIUM Technology 7063 pcHDTV 2000 HD-2000 3000 HD-3000 5500 HD5500 HDTV 7284 HT OMEGA Inc. 7357 IOxOS Technologies SA 7910 7910 [Althea] 7377 Shenzhen Colorful Yugong Technology and Development Co. 7401 EndRun Technologies e100 PTP3100 PCIe PTP Slave Clock 7470 TP-LINK Technologies Co., Ltd. 7526 HongQin (Beijing) Technology Co., Ltd. 0082 HQ SSD M.2 0083 HQ SSD 2TB M.2 NVMe 7604 O.N. Electronic Co Ltd. 78c0 Herrick Technology Laboratories, Inc. [HTL] 0000 HTLv-1 / HTLv-2 / HTLv-13 / HTLv-23 0011 HTLv-53 7bde MIDAC Corporation 7fed PowerTV 8008 Quancom Electronic GmbH 0010 WDOG1 [PCI-Watchdog 1] 0011 PWDOG2 [PCI-Watchdog 2] 0015 Clock77/PCI & Clock77/PCIe (DCF-77 receiver) # Wrong ID used in subsystem ID of AsusTek PCI-USB2 PCI card. 807d Asustek Computer, Inc. 8080 Chengdu Storeswift Technology Co., Ltd. 8086 Intel Corporation 0007 82379AB 0008 Extended Express System Support Controller 0039 21145 Fast Ethernet 0040 Core Processor DRAM Controller 0041 Core Processor PCI Express x16 Root Port 0042 Core Processor Integrated Graphics Controller 0043 Core Processor Secondary PCI Express Root Port 0044 Core Processor DRAM Controller 1025 0347 Aspire 7740G 1025 0487 TravelMate 5742 1028 040a Latitude E6410 144d c06a R730 Laptop 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] e4bf 50c1 PC1-GROOVE 0045 Core Processor PCI Express x16 Root Port 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] 0046 Core Processor Integrated Graphics Controller 1028 040a Latitude E6410 144d c06a R730 Laptop 17c0 10d9 Medion Akoya E7214 Notebook PC [MD98410] e4bf 50c1 PC1-GROOVE 0047 Core Processor Secondary PCI Express Root Port 0048 Core Processor DRAM Controller 0049 Core Processor PCI Express x16 Root Port 004a Core Processor Integrated Graphics Controller 004b Core Processor Secondary PCI Express Root Port 0050 Core Processor Thermal Management Controller 0069 Core Processor DRAM Controller 0082 Centrino Advanced-N 6205 [Taylor Peak] 8086 1301 Centrino Advanced-N 6205 AGN 8086 1306 Centrino Advanced-N 6205 ABG 8086 1307 Centrino Advanced-N 6205 BG 8086 1321 Centrino Advanced-N 6205 AGN 8086 1326 Centrino Advanced-N 6205 ABG 0083 Centrino Wireless-N 1000 [Condor Peak] 8086 1205 Centrino Wireless-N 1000 BGN 8086 1206 Centrino Wireless-N 1000 BG 8086 1225 Centrino Wireless-N 1000 BGN 8086 1226 Centrino Wireless-N 1000 BG 8086 1305 Centrino Wireless-N 1000 BGN 8086 1306 Centrino Wireless-N 1000 BG 8086 1325 Centrino Wireless-N 1000 BGN 8086 1326 Centrino Wireless-N 1000 BG 0084 Centrino Wireless-N 1000 [Condor Peak] 8086 1215 Centrino Wireless-N 1000 BGN 8086 1216 Centrino Wireless-N 1000 BG 8086 1315 Centrino Wireless-N 1000 BGN 8086 1316 Centrino Wireless-N 1000 BG 0085 Centrino Advanced-N 6205 [Taylor Peak] 8086 1311 Centrino Advanced-N 6205 (802.11a/b/g/n) 8086 1316 Centrino Advanced-N 6205 ABG 0087 Centrino Advanced-N + WiMAX 6250 [Kilmer Peak] 8086 1301 Centrino Advanced-N + WiMAX 6250 2x2 AGN 8086 1306 Centrino Advanced-N + WiMAX 6250 2x2 ABG 8086 1321 Centrino Advanced-N + WiMAX 6250 2x2 AGN 8086 1326 Centrino Advanced-N + WiMAX 6250 2x2 ABG 0089 Centrino Advanced-N + WiMAX 6250 [Kilmer Peak] 8086 1311 Centrino Advanced-N + WiMAX 6250 2x2 AGN 8086 1316 Centrino Advanced-N + WiMAX 6250 2x2 ABG 008a Centrino Wireless-N 1030 [Rainbow Peak] 8086 5305 Centrino Wireless-N 1030 BGN 8086 5307 Centrino Wireless-N 1030 BG 8086 5325 Centrino Wireless-N 1030 BGN 8086 5327 Centrino Wireless-N 1030 BG 008b Centrino Wireless-N 1030 [Rainbow Peak] 8086 5315 Centrino Wireless-N 1030 BGN 8086 5317 Centrino Wireless-N 1030 BG 0090 Centrino Advanced-N 6230 [Rainbow Peak] 8086 5211 Centrino Advanced-N 6230 AGN 8086 5215 Centrino Advanced-N 6230 BGN 8086 5216 Centrino Advanced-N 6230 ABG 0091 Centrino Advanced-N 6230 [Rainbow Peak] 8086 5201 Centrino Advanced-N 6230 AGN 8086 5205 Centrino Advanced-N 6230 BGN 8086 5206 Centrino Advanced-N 6230 ABG 8086 5207 Centrino Advanced-N 6230 BG 8086 5221 Centrino Advanced-N 6230 AGN 8086 5225 Centrino Advanced-N 6230 BGN 8086 5226 Centrino Advanced-N 6230 ABG 0100 2nd Generation Core Processor Family DRAM Controller 1028 04aa XPS 8300 1043 844d P8P67/P8H67 Series Motherboard 1734 11b9 Esprimo P510 D3171 motherboard 17aa 3070 ThinkCentre M91p 8086 200d DH61CR motherboard 0101 Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port 1028 04b2 Vostro 3350 106b 00dc MacBookPro8,2 [Core i7, 15", 2011] 144d c652 NP300E5C series laptop 0102 2nd Generation Core Processor Family Integrated Graphics Controller 1028 04aa XPS 8300 1043 0102 P8H67 Series Motherboard 1734 11b9 G640 [Sandy Bridge, HD Graphics] on Esprimo P510 D3171 motherboard 17aa 3070 ThinkCentre M91p 0104 2nd Generation Core Processor Family DRAM Controller 1028 04a3 Precision M4600 1028 04b2 Vostro 3350 1028 04da Vostro 3750 106b 00dc MacBookPro8,2 [Core i7, 15", 2011] 144d c652 NP300E5C series laptop 17aa 21cf ThinkPad T520 0105 Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port 106b 00dc MacBookPro8,2 [Core i7, 15", 2011] 0106 2nd Generation Core Processor Family Integrated Graphics Controller 0108 Xeon E3-1200 Processor Family DRAM Controller 0109 Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port 010a Xeon E3-1200 Processor Family Integrated Graphics Controller 010b Xeon E3-1200/2nd Generation Core Processor Family Integrated Graphics Controller 010c Xeon E3-1200/2nd Generation Core Processor Family DRAM Controller 010d Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port 010e Xeon E3-1200/2nd Generation Core Processor Family Integrated Graphics Controller 0112 2nd Generation Core Processor Family Integrated Graphics Controller 0116 2nd Generation Core Processor Family Integrated Graphics Controller 1028 04da Vostro 3750 144d c652 integrated HD 3000 graphics controller on NP300E5C series laptop 0122 2nd Generation Core Processor Family Integrated Graphics Controller 0126 2nd Generation Core Processor Family Integrated Graphics Controller 1028 04cc Vostro 3350 17aa 21ce ThinkPad T420 17aa 21cf ThinkPad T520 0150 Xeon E3-1200 v2/3rd Gen Core processor DRAM Controller 1043 84ca P8 series motherboard 1458 d000 Ivy Bridge GT1 [HD Graphics] 15d9 0624 X9SCM-F Motherboard 1849 0150 Motherboard 0151 Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port 1043 1477 N56VZ 1043 844d P8 series motherboard 1043 84ca P8H77-I Motherboard 8086 2010 Server Board S1200BTS 0152 Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller 1043 84ca P8H77-I Motherboard 0153 3rd Gen Core Processor Thermal Subsystem 1043 1517 Zenbook Prime UX31A 0154 3rd Gen Core processor DRAM Controller 1025 0806 Aspire E1-470G 1025 0813 Aspire R7-571 103c 17f6 ProBook 4540s 1043 108d VivoBook X202EV 1043 1477 N56VZ 1043 1517 Zenbook Prime UX31A 10cf 16bf LIFEBOOK E752 0155 Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port 8086 2010 Server Board S1200BTS 0156 3rd Gen Core processor Graphics Controller 1043 108d VivoBook X202EV 0158 Xeon E3-1200 v2/Ivy Bridge DRAM Controller 1043 844d P8 series motherboard 8086 2010 Server Board S1200BT Family 0159 Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port 015a Xeon E3-1200 v2/Ivy Bridge Graphics Controller 015c Xeon E3-1200 v2/3rd Gen Core processor DRAM Controller 015d Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port 1043 844d P8 series motherboard 015e Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller 0162 IvyBridge GT2 [HD Graphics 4000] 1043 84ca P8 series motherboard 1849 0162 Motherboard 0166 3rd Gen Core processor Graphics Controller 1043 1517 Zenbook Prime UX31A 1043 2103 N56VZ 10cf 16c1 LIFEBOOK E752 016a Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller 1043 844d P8B WS Motherboard 0172 Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller 0176 3rd Gen Core processor Graphics Controller 0201 Arctic Sound 0284 Comet Lake PCH-LP LPC Premium Controller/eSPI Controller 1028 09be Latitude 7410 02a3 Comet Lake PCH-LP SMBus Host Controller 1028 09be Latitude 7410 02a4 Comet Lake SPI (flash) Controller 1028 09be Latitude 7410 02a6 Comet Lake North Peak 02b0 Comet Lake PCI Express Root Port #9 02b1 Comet Lake PCI Express Root Port #10 02b3 Comet Lake PCI Express Root Port #12 02b4 Comet Lake PCI Express Root Port #13 02b5 Comet Lake PCI Express Root Port #14 02b8 Comet Lake PCI Express Root Port #1 02bc Comet Lake PCI Express Root Port #5 02bf Comet Lake PCI Express Root Port #8 02c5 Comet Lake Serial IO I2C Host Controller 1028 09be Latitude 7410 02c8 Comet Lake PCH-LP cAVS 1028 09be Latitude 7410 02d3 Comet Lake SATA AHCI Controller 02d7 Comet Lake RAID Controller 02e0 Comet Lake Management Engine Interface 1028 09be Latitude 7410 02e3 Comet Lake AMT SOL Redirection 02e8 Serial IO I2C Host Controller 1028 09be Latitude 7410 02e9 Comet Lake Serial IO I2C Host Controller 1028 09be Latitude 7410 02ea Comet Lake PCH-LP LPSS: I2C Controller #2 02ed Comet Lake PCH-LP USB 3.1 xHCI Host Controller 1028 09be Latitude 7410 02ef Comet Lake PCH-LP Shared SRAM 1028 09be Latitude 7410 02f0 Comet Lake PCH-LP CNVi WiFi 8086 0034 Dual Band Wi-Fi 5(802.11ac) Wireless-AC 9560 160MHz 2x2 [Jefferson Peak] 8086 0070 Dual Band Wi-Fi 6(802.11ax) AX201 160MHz 2x2 [Harrison Peak] 8086 0074 Dual Band Wi-Fi 6(802.11ax) AX201 160MHz 2x2 [Harrison Peak] 8086 0234 Dual Band Wi-Fi 5(802.11ac) Wireless-AC 9560 80MHz 2x2 [Jefferson Peak] 8086 0264 Dual Band Wi-Fi 5(802.11ac) Wireless-AC 9461 80MHz 1x1 [Jefferson Peak] 8086 02a4 Dual Band Wi-Fi 5(802.11ac) Wireless-AC 9462 80MHz 1x1 [Jefferson Peak] 8086 4070 Dual Band Wi-Fi 6(802.11ax) AX201 160MHz 2x2 [Harrison Peak] 02f5 Comet Lake PCH-LP SCS3 02f9 Comet Lake Thermal Subsytem 1028 09be Latitude 7410 02fc Comet Lake Integrated Sensor Solution 1028 09be Latitude 7410 0309 80303 I/O Processor PCI-to-PCI Bridge 030d 80312 I/O Companion Chip PCI-to-PCI Bridge 0326 6700/6702PXH I/OxAPIC Interrupt Controller A 103c 3208 ProLiant DL140 G2 1775 1100 CR11/VR11 Single Board Computer 0327 6700PXH I/OxAPIC Interrupt Controller B 103c 3208 ProLiant DL140 G2 1775 1100 CR11/VR11 Single Board Computer 0329 6700PXH PCI Express-to-PCI Bridge A 032a 6700PXH PCI Express-to-PCI Bridge B 032c 6702PXH PCI Express-to-PCI Bridge A 0330 80332 [Dobson] I/O processor (A-Segment Bridge) 0331 80332 [Dobson] I/O processor (A-Segment IOAPIC) 0332 80332 [Dobson] I/O processor (B-Segment Bridge) 0333 80332 [Dobson] I/O processor (B-Segment IOAPIC) 0334 80332 [Dobson] I/O processor (ATU) 0335 80331 [Lindsay] I/O processor (PCI-X Bridge) 0336 80331 [Lindsay] I/O processor (ATU) 0340 41210 [Lanai] Serial to Parallel PCI Bridge (A-Segment Bridge) 0341 41210 [Lanai] Serial to Parallel PCI Bridge (B-Segment Bridge) 0370 80333 Segment-A PCIe Express to PCI-X bridge 0371 80333 A-Bus IOAPIC 0372 80333 Segment-B PCIe Express to PCI-X bridge 0373 80333 B-Bus IOAPIC 0374 80333 Address Translation Unit 0402 Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller 0406 Haswell Integrated Graphics Controller 040a Xeon E3-1200 v3 Processor Integrated Graphics Controller 0412 Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller 1028 05d7 Alienware X51 R2 103c 1998 EliteDesk 800 G1 17aa 3098 ThinkCentre E73 17aa 309f ThinkCentre M83 0416 4th Gen Core Processor Integrated Graphics Controller 17aa 220e ThinkPad T440p 041a Xeon E3-1200 v3 Processor Integrated Graphics Controller 041e 4th Generation Core Processor Family Integrated Graphics Controller 0434 DH89XXCC Series QAT 0435 DH895XCC Series QAT 0436 DH8900CC Null Device 0438 DH8900CC Series Gigabit Network Connection 043a DH8900CC Series Gigabit Fiber Network Connection 043c DH8900CC Series Gigabit Backplane Network Connection 0440 DH8900CC Series Gigabit SFP Network Connection 0442 DH89XXCC Series QAT Virtual Function 0443 DH895XCC Series QAT Virtual Function 0482 82375EB/SB PCI to EISA Bridge 0483 82424TX/ZX [Saturn] CPU to PCI bridge 0484 82378ZB/IB, 82379AB (SIO, SIO.A) PCI to ISA Bridge 0486 82425EX/ZX [Aries] PCIset with ISA bridge 04a3 82434LX/NX [Mercury/Neptune] Processor to PCI bridge 04d0 82437FX [Triton FX] 0500 E8870 Processor bus control 0501 E8870 Memory controller # and registers common to both SPs 0502 E8870 Scalability Port 0 # and global performance monitoring 0503 E8870 Scalability Port 1 0510 E8870IO Hub Interface Port 0 registers (8-bit compatibility port) 0511 E8870IO Hub Interface Port 1 registers 0512 E8870IO Hub Interface Port 2 registers 0513 E8870IO Hub Interface Port 3 registers 0514 E8870IO Hub Interface Port 4 registers 0515 E8870IO General SIOH registers 0516 E8870IO RAS registers 0530 E8870SP Scalability Port 0 registers 0531 E8870SP Scalability Port 1 registers 0532 E8870SP Scalability Port 2 registers 0533 E8870SP Scalability Port 3 registers 0534 E8870SP Scalability Port 4 registers 0535 E8870SP Scalability Port 5 registers # (bi-interleave 0) and global registers that are neither per-port nor per-interleave 0536 E8870SP Interleave registers 0 and 1 # (bi-interleave 1) 0537 E8870SP Interleave registers 2 and 3 0600 RAID Controller 8086 0136 SRCU31L 8086 01af SRCZCR 8086 01c1 ICP Vortex GDT8546RZ 8086 01f7 SCRU32 # uninitialized SRCU32 RAID Controller 061f 80303 I/O Processor 0684 H470 Chipset LPC/eSPI Controller 0685 Z490 Chipset LPC/eSPI Controller 0687 Q470 Chipset LPC/eSPI Controller 068d Comet Lake LPC Controller 06a3 Comet Lake PCH SMBus Controller 06a4 Comet Lake PCH SPI Controller 06a8 Comet Lake PCH Serial IO UART Host Controller #0 06a9 Comet Lake PCH Serial IO UART Host Controller #1 06aa Comet Lake PCH Serial IO SPI Controller #0 06ab Comet Lake PCH Serial IO SPI Controller #1 06ac Comet Lake PCI Express Root Port #21 06b0 Comet Lake PCI Express Root Port #9 06ba Comet Lake PCI Express Root Port #1 06bb Comet Lake PCI Express Root Port #4 06bd Comet Lake PCIe Port #6 06bf Comet Lake PCIe Port #8 06c0 Comet Lake PCI Express Root Port #17 06c8 Comet Lake PCH cAVS 06d2 Comet Lake SATA AHCI Controller 06d6 Comet Lake PCH-H RAID 06d7 Comet Lake PCH-H RAID 06e0 Comet Lake HECI Controller 06e3 Comet Lake Keyboard and Text (KT) Redirection 06e8 Comet Lake PCH Serial IO I2C Controller #0 06e9 Comet Lake PCH Serial IO I2C Controller #1 06ea Comet Lake PCH Serial IO I2C Controller #2 06eb Comet Lake PCH Serial IO I2C Controller #3 06ed Comet Lake USB 3.1 xHCI Host Controller 06ef Comet Lake PCH Shared SRAM 06f0 Comet Lake PCH CNVi WiFi 1a56 1651 Dual Band Wi-Fi 6(802.11ax) Killer AX1650s 160MHz 2x2 [Cyclone Peak] 1a56 1652 Dual Band Wi-Fi 6(802.11ax) Killer AX1650i 160MHz 2x2 [Cyclone Peak] 8086 0034 Dual Band Wi-Fi 5(802.11ac) Wireless-AC 9560 160MHz 2x2 [Jefferson Peak] 8086 0074 Dual Band Wi-Fi 6(802.11ax) AX201 160MHz 2x2 [Harrison Peak] 8086 02a4 Dual Band Wi-Fi 5(802.11ac) Wireless-AC 9462 80MHz 1x1 [Jefferson Peak] 8086 42a4 Dual Band Wi-Fi 5(802.11ac) Wireless-AC 9462 80MHz 1x1 [Jefferson Peak] 06f9 Comet Lake PCH Thermal Controller 06fb Comet Lake PCH Serial IO SPI Controller #2 0700 CE Media Processor A/V Bridge 0701 CE Media Processor NAND Flash Controller 0703 CE Media Processor Media Control Unit 1 0704 CE Media Processor Video Capture Interface 0707 CE Media Processor SPI Slave 0708 Atom Processor CE 4100 0709 Atom Processor CE 4200 0800 Moorestown SPI Ctrl 0 0801 Moorestown SPI Ctrl 1 0802 Moorestown I2C 0 0803 Moorestown I2C 1 0804 Moorestown I2C 2 0805 Moorestown Keyboard Ctrl 0806 Moorestown USB Ctrl 0807 Moorestown SD Host Ctrl 0 0808 Moorestown SD Host Ctrl 1 0809 Moorestown NAND Ctrl 080a Moorestown Audio Ctrl 080b Moorestown ISP 080c Moorestown Security Controller 080d Moorestown External Displays 080e Moorestown SCU IPC 080f Moorestown GPIO Controller 0810 Moorestown Power Management Unit 0811 Moorestown OTG Ctrl 0812 Moorestown SPI Ctrl 2 0813 Moorestown SC DMA 0814 Moorestown LPE DMA 0815 Moorestown SSP0 0817 Medfield Serial IO I2C Controller #3 0818 Medfield Serial IO I2C Controller #4 0819 Medfield Serial IO I2C Controller #5 081a Medfield GPIO Controller [Core] 081b Medfield Serial IO HSUART Controller #1 081c Medfield Serial IO HSUART Controller #2 081d Medfield Serial IO HSUART Controller #3 081e Medfield Serial IO HSUART DMA Controller 081f Medfield GPIO Controller [AON] 0820 Medfield SD Host Controller 0821 Medfield SDIO Controller #1 0822 Medfield SDIO Controller #2 0823 Medfield eMMC Controller #0 0824 Medfield eMMC Controller #1 0827 Medfield Serial IO DMA Controller 0828 Medfield Power Management Unit 0829 Medfield USB Device Controller (OTG) 082a Medfield SCU IPC 082c Medfield Serial IO I2C Controller #0 082d Medfield Serial IO I2C Controller #1 082e Medfield Serial IO I2C Controller #2 0885 Centrino Wireless-N + WiMAX 6150 8086 1305 Centrino Wireless-N + WiMAX 6150 BGN 8086 1307 Centrino Wireless-N + WiMAX 6150 BG 8086 1325 Centrino Wireless-N + WiMAX 6150 BGN 8086 1327 Centrino Wireless-N + WiMAX 6150 BG 0886 Centrino Wireless-N + WiMAX 6150 8086 1315 Centrino Wireless-N + WiMAX 6150 BGN 8086 1317 Centrino Wireless-N + WiMAX 6150 BG 0887 Centrino Wireless-N 2230 8086 4062 Centrino Wireless-N 2230 BGN 8086 4462 Centrino Wireless-N 2230 BGN 0888 Centrino Wireless-N 2230 8086 4262 Centrino Wireless-N 2230 BGN 088e Centrino Advanced-N 6235 8086 4060 Centrino Advanced-N 6235 AGN 8086 4460 Centrino Advanced-N 6235 AGN 088f Centrino Advanced-N 6235 8086 4260 Centrino Advanced-N 6235 AGN 0890 Centrino Wireless-N 2200 8086 4022 Centrino Wireless-N 2200 BGN 8086 4422 Centrino Wireless-N 2200 BGN 8086 4822 Centrino Wireless-N 2200 BGN 0891 Centrino Wireless-N 2200 8086 4222 Centrino Wireless-N 2200 BGN 0892 Centrino Wireless-N 135 8086 0062 Centrino Wireless-N 135 BGN 8086 0462 Centrino Wireless-N 135 BGN 0893 Centrino Wireless-N 135 8086 0262 Centrino Wireless-N 135 BGN 0894 Centrino Wireless-N 105 8086 0022 Centrino Wireless-N 105 BGN 8086 0422 Centrino Wireless-N 105 BGN 8086 0822 Centrino Wireless-N 105 BGN 0895 Centrino Wireless-N 105 8086 0222 Centrino Wireless-N 105 BGN 0896 Centrino Wireless-N 130 8086 5005 Centrino Wireless-N 130 BGN 8086 5007 Centrino Wireless-N 130 BG 8086 5025 Centrino Wireless-N 130 BGN 8086 5027 Centrino Wireless-N 130 BG 0897 Centrino Wireless-N 130 8086 5015 Centrino Wireless-N 130 BGN 8086 5017 Centrino Wireless-N 130 BG 08a7 Quark SoC X1000 SDIO / eMMC Controller 08ae Centrino Wireless-N 100 8086 1005 Centrino Wireless-N 100 BGN 8086 1007 Centrino Wireless-N 100 BG 8086 1025 Centrino Wireless-N 100 BGN 8086 1027 Centrino Wireless-N 100 BG 08af Centrino Wireless-N 100 8086 1015 Centrino Wireless-N 100 BGN 8086 1017 Centrino Wireless-N 100 BG 08b1 Wireless 7260 8086 4020 Dual Band Wireless-N 7260 [Wilkins Peak 2] 8086 402a Dual Band Wireless-N 7260 [Wilkins Peak 2] 8086 4060 Dual Band Wireless-N 7260 [Wilkins Peak 2] 8086 4062 Wireless-N 7260 [Wilkins Peak 2] 8086 406a Dual Band Wireless-N 7260 [Wilkins Peak 2] 8086 4070 Dual Band Wireless-AC 7260 [Wilkins Peak 2] 8086 4072 Dual Band Wireless-AC 7260 [Wilkins Peak 2] 8086 4160 Dual Band Wireless-N 7260 [Wilkins Peak 2] 8086 4162 Wireless-N 7260 [Wilkins Peak 2] 8086 4170 Dual Band Wireless-AC 7260 [Wilkins Peak 2] 8086 4420 Dual Band Wireless-N 7260 [Wilkins Peak 2] 8086 4460 Dual Band Wireless-N 7260 [Wilkins Peak 2] 8086 4462 Wireless-N 7260 [Wilkins Peak 2] 8086 446a Dual Band Wireless-N 7260 [Wilkins Peak 2] 8086 4470 Dual Band Wireless-AC 7260 [Wilkins Peak 2] 8086 4472 Dual Band Wireless-AC 7260 [Wilkins Peak 2] 8086 4560 Dual Band Wireless-N 7260 [Wilkins Peak 2] 8086 4570 Dual Band Wireless-AC 7260 [Wilkins Peak 2] 8086 486e Dual Band Wireless-AC 7260 [Wilkins Peak 2] 8086 4870 Dual Band Wireless-AC 7260 [Wilkins Peak 2] 8086 4a6c Dual Band Wireless-AC 7260 [Wilkins Peak 2] 8086 4a6e Dual Band Wireless-AC 7260 [Wilkins Peak 2] 8086 4a70 Dual Band Wireless-AC 7260 [Wilkins Peak 2] 8086 4c60 Dual Band Wireless-AC 7260 [Wilkins Peak 2] 8086 4c70 Dual Band Wireless-AC 7260 [Wilkins Peak 2] 8086 5070 Dual Band Wireless-AC 7260 [Wilkins Peak 2] 8086 5072 Dual Band Wireless-AC 7260 [Wilkins Peak 2] 8086 5170 Dual Band Wireless-AC 7260 [Wilkins Peak 2] 8086 5770 Dual Band Wireless-AC 7260 [Wilkins Peak 2] 8086 c020 Dual Band Wireless-N 7260 [Wilkins Peak 2] 8086 c02a Dual Band Wireless-N 7260 [Wilkins Peak 2] 8086 c060 Dual Band Wireless-N 7260 [Wilkins Peak 2] 8086 c062 Wireless-N 7260 [Wilkins Peak 2] 8086 c06a Dual Band Wireless-N 7260 [Wilkins Peak 2] 8086 c070 Dual Band Wireless-AC 7260 [Wilkins Peak 2] 8086 c072 Dual Band Wireless-AC 7260 [Wilkins Peak 2] 8086 c160 Dual Band Wireless-N 7260 [Wilkins Peak 2] 8086 c162 Wireless-N 7260 [Wilkins Peak 2] 8086 c170 Dual Band Wireless-AC 7260 [Wilkins Peak 2] 8086 c360 Dual Band Wireless-N 7260 [Wilkins Peak 2] 8086 c420 Dual Band Wireless-N 7260 [Wilkins Peak 2] 8086 c460 Dual Band Wireless-N 7260 [Wilkins Peak 2] 8086 c462 Wireless-N 7260 [Wilkins Peak 2] 8086 c470 Dual Band Wireless-AC 7260 [Wilkins Peak 2] 8086 c472 Dual Band Wireless-AC 7260 [Wilkins Peak 2] 8086 c560 Dual Band Wireless-N 7260 [Wilkins Peak 2] 8086 c570 Dual Band Wireless-AC 7260 [Wilkins Peak 2] 8086 c760 Dual Band Wireless-N 7260 [Wilkins Peak 2] 8086 c770 Dual Band Wireless-AC 7260 [Wilkins Peak 2] 8086 cc60 Dual Band Wireless-AC 7260 [Wilkins Peak 2] 8086 cc70 Dual Band Wireless-AC 7260 [Wilkins Peak 2] 08b2 Wireless 7260 8086 4220 Dual Band Wireless-N 7260 [Wilkins Peak 2] 8086 4260 Dual Band Wireless-N 7260 [Wilkins Peak 2] 8086 4262 Wireless-N 7260 [Wilkins Peak 2] 8086 426a Dual Band Wireless-N 7260 [Wilkins Peak 2] 8086 4270 Wireless-N 7260 [Wilkins Peak 2] 8086 4272 Dual Band Wireless-AC 7260 [Wilkins Peak 2] 8086 4360 Dual Band Wireless-N 7260 [Wilkins Peak 2] 8086 4370 Dual Band Wireless-AC 7260 [Wilkins Peak 2] 8086 c220 Dual Band Wireless-N 7260 [Wilkins Peak 2] 8086 c260 Dual Band Wireless-N 7260 [Wilkins Peak 2] 8086 c262 Wireless-N 7260 [Wilkins Peak 2] 8086 c26a Dual Band Wireless-N 7260 [Wilkins Peak 2] 8086 c270 Dual Band Wireless-AC 7260 [Wilkins Peak 2] 8086 c272 Dual Band Wireless-AC 7260 [Wilkins Peak 2] 8086 c370 Dual Band Wireless-AC 7260 [Wilkins Peak 2] 08b3 Wireless 3160 8086 0060 Dual Band Wireless-N 3160 [Wilkins Peak 1] 8086 0062 Wireless-N 3160 [Wilkins Peak 1] 8086 0070 Dual Band Wireless-AC 3160 [Wilkins Peak 1] 8086 0072 Dual Band Wireless-AC 3160 [Wilkins Peak 1] 8086 0170 Dual Band Wireless-AC 3160 [Wilkins Peak 1] 8086 0172 Dual Band Wireless-AC 3160 [Wilkins Peak 1] 8086 0260 Dual Band Wireless-N 3160 [Wilkins Peak 1] 8086 0470 Dual Band Wireless-AC 3160 [Wilkins Peak 1] 8086 0472 Dual Band Wireless-AC 3160 [Wilkins Peak 1] 8086 1070 Dual Band Wireless-AC 3160 [Wilkins Peak 1] 8086 1170 Dual Band Wireless-AC 3160 [Wilkins Peak 1] 8086 8060 Dual Band Wireless N-3160 [Wilkins Peak 1] 8086 8062 Wireless N-3160 [Wilkins Peak 1] 8086 8070 Dual Band Wireless AC 3160 [Wilkins Peak 1] 8086 8072 Dual Band Wireless AC 3160 [Wilkins Peak 1] 8086 8170 Dual Band Wireless AC 3160 [Wilkins Peak 1] 8086 8172 Dual Band Wireless AC 3160 [Wilkins Peak 1] 8086 8470 Dual Band Wireless AC 3160 [Wilkins Peak 1] 8086 8570 Dual Band Wireless AC 3160 [Wilkins Peak 1] 08b4 Wireless 3160 8086 0270 Dual Band Wireless-AC 3160 [Wilkins Peak 1] 8086 0272 Dual Band Wireless-AC 3160 [Wilkins Peak 1] 8086 0370 Dual Band Wireless-AC 3160 [Wilkins Peak 1] 8086 8260 Dual Band Wireless AC 3160 [Wilkins Peak 1] 8086 8270 Dual Band Wireless AC 3160 [Wilkins Peak 1] 8086 8272 Dual Band Wireless AC 3160 [Wilkins Peak 1] 8086 8370 Dual Band Wireless AC 3160 [Wilkins Peak 1] # PowerVR SGX 545 08cf Atom Processor Z2760 Integrated Graphics Controller 0931 Atom Processor CE 2600 [Puma 6] 0934 Quark SoC X1000 I2C Controller and GPIO Controller 0935 Quark SoC X1000 SPI Controller 0936 Quark SoC X1000 HS-UART 0937 Quark SoC X1000 10/100 Ethernet MAC 0939 Quark SoC X1000 USB EHCI Host Controller / USB 2.0 Device 093a Quark SoC X1000 USB OHCI Host Controller 0953 PCIe Data Center SSD 8086 3702 DC P3700 SSD 8086 3703 DC P3700 SSD [2.5" SFF] 8086 3704 DC P3500 SSD [Add-in Card] 8086 3705 DC P3500 SSD [2.5" SFF] 8086 3709 DC P3600 SSD [Add-in Card] 8086 370a DC P3600 SSD [2.5" SFF] 8086 370d SSD 750 Series [Add-in Card] 8086 370e SSD 750 Series [2.5" SFF] 0958 Quark SoC X1000 Host Bridge 095a Wireless 7265 8086 1010 Dual Band Wireless-AC 7265 [Stone Peak 2 AC] 8086 5000 Dual Band Wireless-N 7265 [Stone Peak 2 AGN] 8086 5002 Wireless-N 7265 [Stone Peak 2 BGN] 8086 500a Dual Band Wireless-N 7265 [Stone Peak 2 AGN] 8086 5010 Dual Band Wireless-AC 7265 [Stone Peak 2 AC] 8086 5012 Dual Band Wireless-AC 7265 [Stone Peak 2 AC] 8086 5020 Dual Band Wireless-N 7265 [Stone Peak 2 AGN] 8086 502a Dual Band Wireless-N 7265 [Stone Peak 2 AGN] 8086 5090 Dual Band Wireless-AC 7265 [Maple Peak AC] 8086 5100 Dual Band Wireless-AC 7265 [Stone Peak 2 AGN] 8086 5102 Wireless-N 7265 [Stone Peak 2 BGN] 8086 510a Dual Band Wireless-AC 7265 [Stone Peak 2 AGN] 8086 5110 Dual Band Wireless-AC 7265 [Stone Peak 2 AC] 8086 5112 Dual Band Wireless-AC 7265 [Stone Peak 2 AC] 8086 5190 Dual Band Wireless-AC 7265 [Maple Peak AC] 8086 5400 Dual Band Wireless-AC 7265 [Stone Peak 2 AGN] 8086 5410 Dual Band Wireless-AC 7265 [Stone Peak 2 AC] 8086 5412 Dual Band Wireless-AC 7265 [Stone Peak 2 AC] 8086 5420 Dual Band Wireless-N 7265 [Stone Peak 2 AGN] 8086 5490 Dual Band Wireless-AC 7265 [Maple Peak AC] 8086 5510 Dual Band Wireless-AC 7265 [Stone Peak 2 AC] 8086 5590 Dual Band Wireless-AC 7265 [Maple Peak AC] 8086 9000 Dual Band Wireless-AC 7265 [Stone Peak 2 AGN] 8086 900a Dual Band Wireless-AC 7265 [Stone Peak 2 AGN] 8086 9010 Dual Band Wireless-AC 7265 [Stone Peak 2 AC] 8086 9012 Dual Band Wireless-AC 7265 [Stone Peak 2 AC] 8086 9110 Dual Band Wireless-AC 7265 [Stone Peak 2 AC] 8086 9112 Dual Band Wireless-AC 7265 [Stone Peak 2 AC] 8086 9210 Dual Band Wireless-AC 7265 [Stone Peak 2 AC] 8086 9310 Dual Band Wireless-AC 7265 [Stone Peak 2 AC] 8086 9400 Dual Band Wireless-AC 7265 [Stone Peak 2 AGN] 8086 9410 Dual Band Wireless-AC 7265 [Stone Peak 2 AC] 8086 9510 Dual Band Wireless-AC 7265 [Stone Peak 2 AC] 095b Wireless 7265 8086 5200 Dual Band Wireless-N 7265 [Stone Peak 2 AGN] 8086 5202 Wireless-N 7265 [Stone Peak 2 BGN] 8086 520a Dual Band Wireless-N 7265 [Stone Peak 2 AGN] 8086 5210 Dual Band Wireless-AC 7265 [Stone Peak 2 AC] 8086 5212 Dual Band Wireless-AC 7265 [Stone Peak 2 AC] 8086 5290 Dual Band Wireless-AC 7265 [Maple Peak AC] 8086 5302 Wireless-N 7265 [Stone Peak 2 BGN] 8086 5310 Dual Band Wireless-AC 7265 [Stone Peak 2 AC] 8086 9200 Dual Band Wireless-AC 7265 [Stone Peak 2 AGN] 095e Quark SoC X1000 Legacy Bridge 0960 80960RP (i960RP) Microprocessor/Bridge 0962 80960RM (i960RM) Bridge 0964 80960RP (i960RP) Microprocessor/Bridge 0975 Optane NVME SSD H10 with Solid State Storage [Teton Glacier] 0998 Ice Lake IEH 09a2 Ice Lake Memory Map/VT-d 09a3 Ice Lake RAS 09a4 Ice Lake Mesh 2 PCIe 09a6 Ice Lake MSM 09a7 Ice Lake PMON MSM 09ab RST VMD Managed Controller 09ad Optane NVME SSD H20 with Solid State Storage [Pyramid Glacier] 09c4 PAC with Intel Arria 10 GX FPGA 0a03 Haswell-ULT Thermal Subsystem 0a04 Haswell-ULT DRAM Controller 17aa 2214 ThinkPad X240 0a06 Haswell-ULT Integrated Graphics Controller 0a0c Haswell-ULT HD Audio Controller 17aa 2214 ThinkPad X240 0a16 Haswell-ULT Integrated Graphics Controller 17aa 2214 ThinkPad X240 0a22 Haswell-ULT Integrated Graphics Controller 0a26 Haswell-ULT Integrated Graphics Controller 0a2a Haswell-ULT Integrated Graphics Controller 0a2e Haswell-ULT Integrated Graphics Controller 0a53 DC P3520 SSD 0a54 NVMe Datacenter SSD [3DNAND, Beta Rock Controller] 1028 1fe1 Express Flash NVMe 1TB 2.5" U.2 (P4500) 1028 1fe2 Express Flash NVMe 2TB 2.5" U.2 (P4500) 1028 1fe3 Express Flash NVMe 4TB 2.5" U.2 (P4500) 1028 1fe4 Express Flash NVMe 4TB HHHL AIC (P4500) 1028 1fee Express Flash NVMe 1.6TB 2.5" U.2 (P4610) 1028 1fef Express Flash NVMe 3.2TB 2.5" U.2 (P4610) 1028 1ff0 Express Flash NVMe 6.4TB 2.5" U.2 (P4610) 1028 1fff Express Flash NVMe 8.0TB 2.5" U.2 (P4510) 1028 2003 Express Flash NVMe 1.0 TB 2.5" U.2 (P4510) 1028 2004 Express Flash NVMe 2.0TB 2.5" U.2 (P4510) 1028 2005 Express Flash NVMe 4.0TB 2.5" U.2 (P4510) 108e 4870 NVMe PCIe 3.0 SSD 6.4TB AIC (P4608) 108e 4871 NVMe PCIe 3.0 SSD 6.4TB 2.5-inch (P4600) 108e 4879 NVMe PCIe 3.0 SSD v2 6.4TB AIC (P4618) 108e 487a NVMe PCIe 3.0 SSD v2 6.4TB 2.5-inch (P4610) 1137 0227 NVMe Datacenter SSD [3DNAND] 1.6TB 2.5" U.2 (P4600) 1137 0228 NVMe Datacenter SSD [3DNAND] 2.0TB 2.5" U.2 (P4600) 1137 0229 NVMe Datacenter SSD [3DNAND] 3.2TB 2.5" U.2 (P4600) 1137 022b NVMe Datacenter SSD [3DNAND] 1.0TB 2.5" U.2 (P4500) 1137 022c NVMe Datacenter SSD [3DNAND] 2.0TB 2.5" U.2 (P4500) 1137 022d NVMe Datacenter SSD [3DNAND] 4.0TB 2.5" U.2 (P4500) 1137 0231 NVMe Datacenter SSD [3DNAND] 0.5TB 2.5" U.2 (P4501) 1137 0232 NVMe Datacenter SSD [3DNAND] 1.0TB 2.5" U.2 (P4501) 1137 0233 NVMe Datacenter SSD [3DNAND] 2.0TB 2.5" U.2 (P4501) 1137 0258 NVMe Datacenter SSD [3DNAND] 1.6TB 2.5" U.2 (P4610) 1137 025a NVMe Datacenter SSD [3DNAND] 3.2TB 2.5" U.2 (P4610) 1137 025b NVMe Datacenter SSD [3DNAND] 1.0TB 2.5" U.2 (P4510) 1137 025c NVMe Datacenter SSD [3DNAND] 2.0TB 2.5" U.2 (P4510) 1137 025d NVMe Datacenter SSD [3DNAND] 4.0TB 2.5" U.2 (P4510) 1137 025e NVMe Datacenter SSD [3DNAND] 8.0TB 2.5" U.2 (P4510) 1590 025d NVMe Datacenter SSD [3DNAND] 1.0TB 2.5" U.2 (P4500) 1590 025e NVMe Datacenter SSD [3DNAND] 2.0TB 2.5" U.2 (P4500) 1590 025f NVMe Datacenter SSD [3DNAND] 4.0TB 2.5" U.2 (P4500) 1590 0262 NVMe Datacenter SSD [3DNAND] 1.6TB 2.5" U.2 (P4600) 1590 0264 NVMe Datacenter SSD [3DNAND] 3.2TB 2.5" U.2 (P4600) 1590 0265 NVMe Datacenter SSD [3DNAND] 6.4TB 2.5" U.2 (P4600) 1590 026c NVMe Datacenter SSD [3DNAND] 4.0TB AIC (P4500) 1d49 4702 Thinksystem Intel P4500 NVMe U.2 1d49 4704 Thinksystem Intel P4500 NVMe AIC 1d49 4712 Thinksystem Intel P4600 NVMe U.2 1d49 4714 Thinksystem Intel P4600 NVMe AIC 1d49 4802 Thinksystem U.2 P4510 NVMe SSD 1d49 4812 Thinksystem U.2 P4610 NVMe SSD 8086 4308 SSD D5-P4320 and D5-P4326 8086 4702 NVMe Datacenter SSD [3DNAND] SE 2.5" U.2 (P4500) 8086 4704 NVMe Datacenter SSD [3DNAND] SE AIC (P4500) 8086 4712 NVMe Datacenter SSD [3DNAND] ME 2.5" U.2 (P4600) 8086 4714 NVMe Datacenter SSD [3DNAND] ME AIC (P4600) 8086 4802 NVMe Datacenter SSD [3DNAND] SE 2.5" U.2 (P4510) 8086 4804 NVMe Datacenter SSD [3DNAND] SE AIC (P4510) 8086 4805 NVMe Datacenter SSD [3DNAND] SE M.2 (P4511) 8086 4812 NVMe Datacenter SSD [3DNAND] ME 2.5" U.2 (P4610) 8086 4814 NVMe Datacenter SSD [3DNAND] ME AIC (P4610) 0a55 NVMe DC SSD [3DNAND, Beta Rock Controller] 1028 1fe5 Express Flash NVMe 1.6TB 2.5" U.2 (P4600) 1028 1fe6 Express Flash NVMe 2TB 2.5" U.2 (P4600) 1028 1fe7 Express Flash NVMe 3.2TB 2.5" U.2 (P4600) 1028 1fe8 Express Flash NVMe 2.0TB HHHL AIC (P4600) 1028 1fe9 Express Flash NVMe 4.0TB HHHL AIC (P4600) 0b00 Ice Lake CBDMA [QuickData Technology] 0b26 Thunderbolt 4 Bridge [Goshen Ridge 2020] 0b27 Thunderbolt 4 USB Controller [Goshen Ridge 2020] 0b2b PAC with Intel Stratix 10 SX FPGA [FPGA PAC D5005] 0b60 NVMe DC SSD [3DNAND, Sentinel Rock Controller] 1028 2060 NVMe SED MU U.2 1.6TB (P5600) 1028 2061 NVMe SED MU U.2 3.2TB (P5600) 1028 2062 NVMe SED MU U.2 6.4TB (P5600) 1028 2064 NVMe SED RI U.2 1.92TB (P5500) 1028 2065 NVMe SED RI U.2 3.84TB (P5500) 1028 2066 NVMe SED RI U.2 7.68TB (P5500) 1028 209e NVMe MU U.2 1.6TB (P5600) 1028 209f NVMe MU U.2 3.2TB (P5600) 1028 2100 NVMe MU U.2 6.4TB (P5600) 1028 2102 NVMe RI U.2 1.92TB (P5500) 1028 2103 NVMe RI U.2 3.84TB (P5500) 1028 2104 NVMe RI U.2 7.68TB (P5500) 1028 219a NVMe P5316 RI 15.36TB 1028 219b NVMe P5316 RI 30.72TB 1028 219c NVMe SED P5316 RI 15.36 1028 219d NVMe SED P5316 RI 30.72 1028 219e NVMe FIPS P5316 RI 15.36TB 1028 219f NVMe FIPS P5316 RI 30.72 8086 8008 NVMe Datacenter SSD [3DNAND] SE 2.5" U.2 (P5510) 8086 8d08 NVMe Datacenter SSD [3DNAND] VE 2.5" U.2 (P5316) 8086 8d1d NVMe Datacenter SSD [3DNAND] VE E1.L 9.5/18mm (P5316) 8086 c008 NVMe Datacenter SSD [3DNAND] SE U.2 15mm (P5530) 0b69 Ponte Vecchio XT (2 Tile) [Data Center GPU Max 1450] 0b6e Ponte Vecchio XT (1 Tile) [Data Center GPU Max 1100C] 0bd0 Ponte Vecchio XL (2 Tile) 0bd4 Ponte Vecchio XT (2 Tile) [Data Center GPU Max 1550VG] 0bd5 Ponte Vecchio XT (2 Tile) [Data Center GPU Max 1550] 0bd6 Ponte Vecchio XT (2 Tile) [Data Center GPU Max 1550] 0bd7 Ponte Vecchio XT (2 Tile) [Data Center GPU Max 1350] 0bd8 Ponte Vecchio XT (2 Tile) [Data Center GPU Max 1350] 0bd9 Ponte Vecchio XT (1 Tile) [Data Center GPU Max 1100] 0bda Ponte Vecchio XT (1 Tile) [Data Center GPU Max 1100] 0bdb Ponte Vecchio XT (1 Tile) [Data Center GPU Max 1100] 0be0 Atom Processor D2xxx/N2xxx Integrated Graphics Controller 0be1 Atom Processor D2xxx/N2xxx Integrated Graphics Controller 105b 0d7c D270S/D250S Motherboard 0be2 Atom Processor D2xxx/N2xxx Integrated Graphics Controller 0be3 Atom Processor D2xxx/N2xxx Integrated Graphics Controller 0be4 Atom Processor D2xxx/N2xxx Integrated Graphics Controller 0be5 Atom Processor D2xxx/N2xxx Integrated Graphics Controller 0be6 Atom Processor D2xxx/N2xxx Integrated Graphics Controller 0be7 Atom Processor D2xxx/N2xxx Integrated Graphics Controller 0be8 Atom Processor D2xxx/N2xxx Integrated Graphics Controller 0be9 Atom Processor D2xxx/N2xxx Integrated Graphics Controller 0bea Atom Processor D2xxx/N2xxx Integrated Graphics Controller 0beb Atom Processor D2xxx/N2xxx Integrated Graphics Controller 0bec Atom Processor D2xxx/N2xxx Integrated Graphics Controller 0bed Atom Processor D2xxx/N2xxx Integrated Graphics Controller 0bee Atom Processor D2xxx/N2xxx Integrated Graphics Controller 0bef Atom Processor D2xxx/N2xxx Integrated Graphics Controller 0bf0 Atom Processor D2xxx/N2xxx DRAM Controller 0bf1 Atom Processor D2xxx/N2xxx DRAM Controller 0bf2 Atom Processor D2xxx/N2xxx DRAM Controller 0bf3 Atom Processor D2xxx/N2xxx DRAM Controller 0bf4 Atom Processor D2xxx/N2xxx DRAM Controller 0bf5 Atom Processor D2xxx/N2xxx DRAM Controller 105b 0d7c D270S/D250S Motherboard 0bf6 Atom Processor D2xxx/N2xxx DRAM Controller 0bf7 Atom Processor D2xxx/N2xxx DRAM Controller 0c00 4th Gen Core Processor DRAM Controller 1028 05d7 Alienware X51 R2 103c 1998 EliteDesk 800 G1 17aa 3098 ThinkCentre E73 17aa 309f ThinkCentre M83 0c01 Xeon E3-1200 v3/4th Gen Core Processor PCI Express x16 Controller 0c04 Xeon E3-1200 v3/4th Gen Core Processor DRAM Controller 103c 1909 ZBook 15 17aa 220e ThinkPad T440p 0c05 Xeon E3-1200 v3/4th Gen Core Processor PCI Express x8 Controller 0c08 Xeon E3-1200 v3 Processor DRAM Controller 0c09 Xeon E3-1200 v3/4th Gen Core Processor PCI Express x4 Controller 0c0c Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller 103c 1998 EliteDesk 800 G1 17aa 220e ThinkPad T440p 17aa 309f ThinkCentre M83 0c40 Atom Processor CE 5300 0c46 Atom Processor S1200 PCI Express Root Port 1 0c47 Atom Processor S1200 PCI Express Root Port 2 0c48 Atom Processor S1200 PCI Express Root Port 3 0c49 Atom Processor S1200 PCI Express Root Port 4 0c4e Atom Processor S1200 NTB Primary 0c50 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QuickData Technology Device 0c51 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QuickData Technology Device 0c52 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QuickData Technology Device 0c53 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QuickData Technology Device 0c54 Atom Processor S1200 Internal 0c55 Atom Processor S1200 DFX 1 0c56 Atom Processor S1200 DFX 2 0c59 Atom Processor S1200 SMBus 2.0 Controller 0 0c5a Atom Processor S1200 SMBus 2.0 Controller 1 0c5b Atom Processor S1200 SMBus Controller 2 0c5c Atom Processor S1200 SMBus Controller 3 0c5d Atom Processor S1200 SMBus Controller 4 0c5e Atom Processor S1200 SMBus Controller 5 0c5f Atom Processor S1200 UART 0c60 Atom Processor S1200 Integrated Legacy Bus 0c70 Atom Processor S1200 Internal 0c71 Atom Processor S1200 Internal 0c72 Atom Processor S1200 Internal 0c73 Atom Processor S1200 Internal 0c74 Atom Processor S1200 Internal 0c75 Atom Processor S1200 Internal 0c76 Atom Processor S1200 Internal 0c77 Atom Processor S1200 Internal 0c78 Atom Processor S1200 Internal 0c79 Atom Processor S1200 Internal 0c7a Atom Processor S1200 Internal 0c7b Atom Processor S1200 Internal 0c7c Atom Processor S1200 Internal 0c7d Atom Processor S1200 Internal 0c7e Atom Processor S1200 Internal 0c7f Atom Processor S1200 Internal 0cf8 Ethernet Controller X710 Intel(R) FPGA Programmable Acceleration Card N3000 for Networking 8086 0000 Ethernet Controller X710 Intel(R) FPGA Programmable Acceleration Card N3000 for Networking 8086 0001 Ethernet Controller X710 Intel(R) FPGA Programmable Acceleration Card N3000 for Networking 0d00 Crystal Well DRAM Controller 0d01 Crystal Well PCI Express x16 Controller 0d04 Crystal Well DRAM Controller 0d05 Crystal Well PCI Express x8 Controller 0d09 Crystal Well PCI Express x4 Controller 0d0c Crystal Well HD Audio Controller 0d16 Crystal Well Integrated Graphics Controller 0d26 Crystal Well Integrated Graphics Controller 0d36 Crystal Well Integrated Graphics Controller 0d4c Ethernet Connection (11) I219-LM 0d4d Ethernet Connection (11) I219-V 8086 0d4d Ethernet Connection (11) I219-V 0d4e Ethernet Connection (10) I219-LM 0d4f Ethernet Connection (10) I219-V 0d53 Ethernet Connection (12) I219-LM 0d55 Ethernet Connection (12) I219-V 0d58 Ethernet Controller XXV710 Intel(R) FPGA Programmable Acceleration Card N3000 for Networking 8086 0000 Ethernet Controller XXV710 Intel(R) FPGA Programmable Acceleration Card N3000 for Networking 8086 0001 Ethernet Controller XXV710 Intel(R) FPGA Programmable Acceleration Card N3000 for Networking 0d9f Ethernet Controller I225-IT 0dc5 Ethernet Connection (23) I219-LM 1028 0c06 Precision 3580 0dc6 Ethernet Connection (23) I219-V 0dcd Ethernet Connection C825-X 0dd2 Ethernet Network Adapter I710 1137 0000 I710T4LG 4x1 GbE RJ45 PCIe NIC 1137 02e3 I710T4LG 4x1 GbE RJ45 PCIe NIC 8086 0000 Ethernet Network Adapter I710-T4L 8086 000d Ethernet Network Adapter I710-T4L 8086 0010 Ethernet Network Adapter I710-T4L for OCP 3.0 8086 401a Ethernet Network Adapter I710-T4L 8086 401b Ethernet Network Adapter I710-T4L for OCP 3.0 0dd5 Ethernet Adaptive Virtual Function 0dda Ethernet Connection X722 for 10GbE SFP+ 1bd4 0076 Ethernet Connection F102IX722 for 10GbE SFP 1bd4 0082 Ethernet Connection F102IX722 for 10GbE SFP 0e00 Xeon E7 v2/Xeon E5 v2/Core i7 DMI2 1028 04f7 Xeon E5 v2 on PowerEdge R320 server 15d9 066b X9SRL-F 0e01 Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port in DMI2 Mode 0e02 Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 1a 1028 04f7 Xeon E5 v2 on PowerEdge R320 server 0e03 Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 1b 0e04 Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 2a 0e05 Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 2b 0e06 Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 2c 0e07 Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 2d 0e08 Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 3a 1028 04f7 Xeon E5 v2 on PowerEdge R320 server 0e09 Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 3b 0e0a Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 3c 0e0b Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 3d 0e10 Xeon E7 v2/Xeon E5 v2/Core i7 IIO Configuration Registers 0e13 Xeon E7 v2/Xeon E5 v2/Core i7 IIO Configuration Registers 0e17 Xeon E7 v2/Xeon E5 v2/Core i7 IIO Configuration Registers 0e18 Xeon E7 v2/Xeon E5 v2/Core i7 IIO Configuration Registers 0e1c Xeon E7 v2/Xeon E5 v2/Core i7 IIO Configuration Registers 0e1d Xeon E7 v2/Xeon E5 v2/Core i7 R2PCIe 0e1e Xeon E7 v2/Xeon E5 v2/Core i7 UBOX Registers 0e1f Xeon E7 v2/Xeon E5 v2/Core i7 UBOX Registers 0e20 Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 0 1028 04f7 Xeon E5 v2 on PowerEdge R320 server 15d9 066b X9SRL-F 0e21 Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 1 1028 04f7 Xeon E5 v2 on PowerEdge R320 server 15d9 066b X9SRL-F 0e22 Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 2 1028 04f7 Xeon E5 v2 on PowerEdge R320 server 15d9 066b X9SRL-F 0e23 Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 3 1028 04f7 Xeon E5 v2 on PowerEdge R320 server 15d9 066b X9SRL-F 0e24 Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 4 1028 04f7 Xeon E5 v2 on PowerEdge R320 server 15d9 066b X9SRL-F 0e25 Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 5 1028 04f7 Xeon E5 v2 on PowerEdge R320 server 15d9 066b X9SRL-F 0e26 Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 6 1028 04f7 Xeon E5 v2 on PowerEdge R320 server 15d9 066b X9SRL-F 0e27 Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 7 1028 04f7 Xeon E5 v2 on PowerEdge R320 server 15d9 066b X9SRL-F 0e28 Xeon E7 v2/Xeon E5 v2/Core i7 VTd/Memory Map/Misc 1028 04f7 Xeon E5 v2 on PowerEdge R320 server 15d9 066b X9SRL-F 0e29 Xeon E7 v2/Xeon E5 v2/Core i7 Memory Hotplug 0e2a Xeon E7 v2/Xeon E5 v2/Core i7 IIO RAS 1028 04f7 Xeon E5 v2 on PowerEdge R320 server 15d9 066b X9SRL-F 0e2c Xeon E7 v2/Xeon E5 v2/Core i7 IOAPIC 15d9 066b X9SRL-F 0e2e Xeon E7 v2/Xeon E5 v2/Core i7 CBDMA 0e2f Xeon E7 v2/Xeon E5 v2/Core i7 CBDMA 0e30 Xeon E7 v2/Xeon E5 v2/Core i7 Home Agent 0 1028 04f7 Xeon E5 v2 on PowerEdge R320 server 0e32 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link 0 0e33 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link 1 0e34 Xeon E7 v2/Xeon E5 v2/Core i7 R2PCIe 1028 04f7 Xeon E5 v2 on PowerEdge R320 server 0e36 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Performance Ring Monitoring 1028 04f7 Xeon E5 v2 on PowerEdge R320 server 0e37 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Performance Ring Monitoring 0e38 Xeon E7 v2/Xeon E5 v2/Core i7 Home Agent 1 0e3a Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link 2 0e3e Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Performance Ring Monitoring 0e3f Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Performance Ring Monitoring 0e40 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link 2 0e41 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Registers 0e43 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Reut 2 0e44 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Reut 2 0e45 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Agent Register 0e47 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Agent Register 0e60 Xeon E7 v2/Xeon E5 v2/Core i7 Home Agent 1 0e68 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Target Address/Thermal Registers 0e6a Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder Registers 0e6b Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder Registers 0e6c Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder Registers 0e6d Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder Registers 0e71 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 RAS Registers 0e74 Xeon E7 v2/Xeon E5 v2/Core i7 R2PCIe 0e75 Xeon E7 v2/Xeon E5 v2/Core i7 R2PCIe 0e77 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Registers 0e79 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 RAS Registers 0e7d Xeon E7 v2/Xeon E5 v2/Core i7 UBOX Registers 0e7f Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Registers 0e80 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link 0 0e81 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Registers 1028 04f7 Xeon E5 v2 on PowerEdge R320 server 0e83 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Reut 0 0e84 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Reut 0 0e85 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Agent Register 0e87 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Registers 0e90 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link 1 0e93 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link 1 0e94 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Reut 1 0e95 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Agent Register 0ea0 Xeon E7 v2/Xeon E5 v2/Core i7 Home Agent 0 1028 04f7 Xeon E5 v2 on PowerEdge R320 server 0ea8 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Target Address/Thermal Registers 0eaa Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder Registers 0eab Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder Registers 0eac Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder Registers 0ead Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder Registers 0eae Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO Registers 0eaf Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO Registers 0eb0 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 Thermal Control 0 0eb1 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 Thermal Control 1 0eb2 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 ERROR Registers 0 0eb3 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 ERROR Registers 1 0eb4 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 Thermal Control 2 0eb5 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 Thermal Control 3 0eb6 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 ERROR Registers 2 0eb7 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 ERROR Registers 3 0ebc Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO Registers 0ebe Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO Registers 0ebf Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO Registers 0ec0 Xeon E7 v2/Xeon E5 v2/Core i7 Power Control Unit 0 0ec1 Xeon E7 v2/Xeon E5 v2/Core i7 Power Control Unit 1 0ec2 Xeon E7 v2/Xeon E5 v2/Core i7 Power Control Unit 2 0ec3 Xeon E7 v2/Xeon E5 v2/Core i7 Power Control Unit 3 0ec4 Xeon E7 v2/Xeon E5 v2/Core i7 Power Control Unit 4 0ec8 Xeon E7 v2/Xeon E5 v2/Core i7 System Address Decoder 0ec9 Xeon E7 v2/Xeon E5 v2/Core i7 Broadcast Registers 0eca Xeon E7 v2/Xeon E5 v2/Core i7 Broadcast Registers 0ed8 Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO 0ed9 Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO 0edc Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO 0edd Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO 0ede Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO 0edf Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO 0ee0 Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers 0ee1 Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers 0ee2 Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers 0ee3 Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers 0ee4 Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers 0ee5 Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers 0ee6 Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers 0ee7 Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers 0ee8 Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers 0ee9 Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers 0eea Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers 0eeb Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers 0eec Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers 0eed Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers 0eee Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers 0ef0 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 Thermal Control 0 0ef1 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 Thermal Control 1 0ef2 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 ERROR Registers 0 0ef3 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 ERROR Registers 1 0ef4 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 Thermal Control 2 0ef5 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 Thermal Control 3 0ef6 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 ERROR Registers 2 0ef7 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 ERROR Registers 3 0ef8 Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO 0ef9 Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO 0efa Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO 0efb Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO 0efc Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO 0efd Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO 0f00 Atom Processor Z36xxx/Z37xxx Series SoC Transaction Register 0f04 Atom Processor Z36xxx/Z37xxx Series High Definition Audio Controller 0f06 Atom Processor Z36xxx/Z37xxx Series LPIO1 DMA Controller 0f08 Atom Processor Z36xxx/Z37xxx Series LPIO1 PWM Controller 0f09 Atom Processor Z36xxx/Z37xxx Series LPIO1 PWM Controller 0f0a Atom Processor Z36xxx/Z37xxx Series LPIO1 HSUART Controller #1 0f0c Atom Processor Z36xxx/Z37xxx Series LPIO1 HSUART Controller #2 0f0e Atom Processor Z36xxx/Z37xxx Series LPIO1 SPI Controller 0f12 Atom Processor E3800/CE2700 Series SMBus Controller 0f14 Atom Processor Z36xxx/Z37xxx Series SDIO Controller 0f15 Atom Processor Z36xxx/Z37xxx Series SDIO Controller 0f16 Atom Processor Z36xxx/Z37xxx Series SDIO Controller 0f18 Atom Processor Z36xxx/Z37xxx Series Trusted Execution Engine 0f1c Atom Processor Z36xxx/Z37xxx Series Power Control Unit 0f20 Atom Processor E3800 Series SATA IDE Controller 0f21 Atom Processor E3800 Series SATA IDE Controller 0f22 Atom Processor E3800 Series SATA AHCI Controller 0f23 Atom Processor E3800 Series SATA AHCI Controller 0f28 Atom Processor Z36xxx/Z37xxx Series LPE Audio Controller 0f31 Atom Processor Z36xxx/Z37xxx Series Graphics & Display 0f34 Atom Processor Z36xxx/Z37xxx Series USB EHCI 0f35 Atom Processor Z36xxx/Z37xxx, Celeron N2000 Series USB xHCI 1025 0936 Aspire ES1 0f37 Atom Processor Z36xxx/Z37xxx Series OTG USB Device 0f38 Atom Processor Z36xxx/Z37xxx Series Camera ISP 0f40 Atom Processor Z36xxx/Z37xxx Series LPIO2 DMA Controller 0f41 Atom Processor Z36xxx/Z37xxx Series LPIO2 I2C Controller #1 0f42 Atom Processor Z36xxx/Z37xxx Series LPIO2 I2C Controller #2 0f43 Atom Processor Z36xxx/Z37xxx Series LPIO2 I2C Controller #3 0f44 Atom Processor Z36xxx/Z37xxx Series LPIO2 I2C Controller #4 0f45 Atom Processor Z36xxx/Z37xxx Series LPIO2 I2C Controller #5 0f46 Atom Processor Z36xxx/Z37xxx Series LPIO2 I2C Controller #6 0f47 Atom Processor Z36xxx/Z37xxx Series LPIO2 I2C Controller #7 0f48 Atom Processor E3800 Series PCI Express Root Port 1 0f4a Atom Processor E3800 Series PCI Express Root Port 2 0f4c Atom Processor E3800 Series PCI Express Root Port 3 0f4e Atom Processor E3800 Series PCI Express Root Port 4 0f50 Atom Processor E3800 Series eMMC 4.5 Controller 1000 82542 Gigabit Ethernet Controller (Fiber) 0e11 b0df NC6132 Gigabit Ethernet Adapter (1000-SX) 0e11 b0e0 NC6133 Gigabit Ethernet Adapter (1000-LX) 0e11 b123 NC6134 Gigabit Ethernet Adapter (1000-LX) 1014 0119 Netfinity Gigabit Ethernet SX Adapter 8086 1000 PRO/1000 Gigabit Server Adapter 1001 82543GC Gigabit Ethernet Controller (Fiber) 0e11 004a NC6136 Gigabit Server Adapter 1014 01ea Netfinity Gigabit Ethernet SX Adapter 8086 1002 PRO/1000 F Server Adapter 8086 1003 PRO/1000 F Server Adapter 1002 Pro 100 LAN+Modem 56 Cardbus II 8086 200e Pro 100 LAN+Modem 56 Cardbus II 8086 2013 Pro 100 SR Mobile Combo Adapter 8086 2017 Pro 100 S Combo Mobile Adapter 1004 82543GC Gigabit Ethernet Controller (Copper) 0e11 0049 NC7132 Gigabit Upgrade Module 0e11 b1a4 NC7131 Gigabit Server Adapter 1014 10f2 Gigabit Ethernet Server Adapter 8086 1004 PRO/1000 T Server Adapter 8086 2004 PRO/1000 T Server Adapter 1008 82544EI Gigabit Ethernet Controller (Copper) 1014 0269 iSeries 1000/100/10 Ethernet Adapter 1028 011b PowerEdge 1650/2550 1028 011c PRO/1000 XT Network Connection 8086 1107 PRO/1000 XT Server Adapter 8086 2107 PRO/1000 XT Server Adapter 8086 2110 PRO/1000 XT Desktop Adapter 8086 3108 PRO/1000 XT Network Connection 1009 82544EI Gigabit Ethernet Controller (Fiber) 1014 0268 iSeries Gigabit Ethernet Adapter 8086 1109 PRO/1000 XF Server Adapter 8086 2109 PRO/1000 XF Server Adapter 100a 82540EM Gigabit Ethernet Controller 100c 82544GC Gigabit Ethernet Controller (Copper) 8086 1112 PRO/1000 T Desktop Adapter 8086 2112 PRO/1000 T Desktop Adapter 100d 82544GC Gigabit Ethernet Controller (LOM) 1028 0123 PRO/1000 XT Network Connection 1079 891f 82544GC Based Network Connection 4c53 1080 CT8 mainboard 8086 110d 82544GC Based Network Connection 100e 82540EM Gigabit Ethernet Controller 1014 0265 PRO/1000 MT Network Connection 1014 0267 PRO/1000 MT Network Connection 1014 026a PRO/1000 MT Network Connection 1028 002e Optiplex GX260 1028 0134 PowerEdge 600SC 1028 0151 Optiplex GX270 107b 8920 PRO/1000 MT Desktop Adapter 1af4 1100 QEMU Virtual Machine 8086 001e PRO/1000 MT Desktop Adapter 8086 002e PRO/1000 MT Desktop Adapter 8086 1376 PRO/1000 GT Desktop Adapter 8086 1476 PRO/1000 GT Desktop Adapter 100f 82545EM Gigabit Ethernet Controller (Copper) 1014 0269 iSeries 1000/100/10 Ethernet Adapter 1014 028e PRO/1000 MT Network Connection 15ad 0750 PRO/1000 MT Single Port Adapter 8086 1000 PRO/1000 MT Network Connection 8086 1001 PRO/1000 MT Server Adapter 1010 82546EB Gigabit Ethernet Controller (Copper) 0e11 00db NC7170 Gigabit Server Adapter 1014 027c PRO/1000 MT Dual Port Network Adapter 15ad 0760 PRO/1000 MT Dual Port Adapter 18fb 7872 RESlink-X 1fc1 0026 Niagara 2260 Bypass Card 4c53 1080 CT8 mainboard 4c53 10a0 CA3/CR3 mainboard 8086 1011 PRO/1000 MT Dual Port Server Adapter 8086 1012 PRO/1000 MT Dual Port Server Adapter 8086 101a PRO/1000 MT Dual Port Network Connection 8086 3424 SE7501HG2 Mainboard 1011 82545EM Gigabit Ethernet Controller (Fiber) 1014 0268 iSeries Gigabit Ethernet Adapter 8086 1002 PRO/1000 MF Server Adapter 8086 1003 PRO/1000 MF Server Adapter (LX) 1012 82546EB Gigabit Ethernet Controller (Fiber) 0e11 00dc NC6170 Gigabit Server Adapter 8086 1012 PRO/1000 MF Dual Port Server Adapter 1013 82541EI Gigabit Ethernet Controller 8086 0013 PRO/1000 MT Network Connection 8086 1013 PRO/1000 MT Network Connection 8086 1113 PRO/1000 MT Desktop Adapter 1014 82541ER Gigabit Ethernet Controller 8086 0014 PRO/1000 MT Desktop Connection 8086 1014 PRO/1000 MT Network Connection 1015 82540EM Gigabit Ethernet Controller (LOM) 8086 1015 PRO/1000 MT Mobile Connection 1016 82540EP Gigabit Ethernet Controller (Mobile) 1014 052c PRO/1000 MT Mobile Connection 1179 0001 PRO/1000 MT Mobile Connection 8086 1016 PRO/1000 MT Mobile Connection 1017 82540EP Gigabit Ethernet Controller 8086 1017 PR0/1000 MT Desktop Connection 1018 82541EI Gigabit Ethernet Controller 8086 1018 PRO/1000 MT Mobile Connection 1019 82547EI Gigabit Ethernet Controller 1458 1019 GA-8IPE1000 Pro2 motherboard (865PE) 1458 e000 Intel Gigabit Ethernet (Kenai II) 8086 1019 PRO/1000 CT Desktop Connection 8086 301f D865PERL mainboard 8086 3025 D875PBZ motherboard 8086 302c D865GBF Mainboard 8086 3427 S875WP1-E mainboard 101a 82547EI Gigabit Ethernet Controller (Mobile) 8086 101a PRO/1000 CT Mobile Connection 101d 82546EB Gigabit Ethernet Controller 8086 1000 PRO/1000 MT Quad Port Server Adapter 101e 82540EP Gigabit Ethernet Controller (Mobile) 1014 0549 Thinkpad 1179 0001 PRO/1000 MT Mobile Connection 8086 101e PRO/1000 MT Mobile Connection 101f Ethernet Controller V710 for 5GBASE-T 1026 82545GM Gigabit Ethernet Controller 1028 0168 Precision Workstation 670 Mainboard 1028 0169 Precision 470 8086 1000 PRO/1000 MT Server Connection 8086 1001 PRO/1000 MT Server Adapter 8086 1002 PRO/1000 MT Server Adapter 8086 1003 PRO/1000 GT Server Adapter 8086 1026 PRO/1000 MT Server Connection 1027 82545GM Gigabit Ethernet Controller 103c 3103 NC310F PCI-X Gigabit Server Adapter 8086 1001 PRO/1000 MF Server Adapter(LX) 8086 1002 PRO/1000 MF Server Adapter(LX) 8086 1003 PRO/1000 MF Server Adapter(LX) 8086 1027 PRO/1000 MF Server Adapter 1028 82545GM Gigabit Ethernet Controller 8086 1028 PRO/1000 MB Server Connection 1029 82559 Ethernet Controller 1030 82559 InBusiness 10/100 1031 82801CAM (ICH3) PRO/100 VE (LOM) Ethernet Controller 1014 0209 ThinkPad A/T/X Series 104d 80e7 Vaio PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP 104d 813c Vaio PCG-GRV616G 107b 5350 EtherExpress PRO/100 VE 1179 0001 EtherExpress PRO/100 VE 144d c000 EtherExpress PRO/100 VE 144d c001 EtherExpress PRO/100 VE 144d c003 EtherExpress PRO/100 VE 144d c006 vpr Matrix 170B4 1032 82801CAM (ICH3) PRO/100 VE Ethernet Controller 1033 82801CAM (ICH3) PRO/100 VM (LOM) Ethernet Controller 1034 82801CAM (ICH3) PRO/100 VM Ethernet Controller 1035 82801CAM (ICH3)/82562EH (LOM) Ethernet Controller 1036 82801CAM (ICH3) 82562EH Ethernet Controller 1037 82801CAM (ICH3) Chipset Ethernet Controller 1038 82801CAM (ICH3) PRO/100 VM (KM) Ethernet Controller 0e11 0098 Evo N600c 1039 82801DB PRO/100 VE (LOM) Ethernet Controller 1014 0267 NetVista A30p 114a 0582 PC8 onboard ethernet ETH1 103a 82801DB PRO/100 VE (CNR) Ethernet Controller 103b 82801DB PRO/100 VM (LOM) Ethernet Controller 103c 82801DB PRO/100 VM (CNR) Ethernet Controller 103d 82801DB PRO/100 VE (MOB) Ethernet Controller 1014 0522 ThinkPad R40 1028 2002 Latitude D500 8086 103d 82562EZ 10/100 Ethernet Controller 103e 82801DB PRO/100 VM (MOB) Ethernet Controller 1040 536EP Data Fax Modem 16be 1040 V.9X DSP Data Fax Modem 1043 PRO/Wireless LAN 2100 3B Mini PCI Adapter 103c 08b0 tc1100 tablet 8086 2522 Samsung X10/P30 integrated WLAN 8086 2527 MIM2000/Centrino 8086 2561 Dell Latitude D800 8086 2581 Toshiba Satellite M10 1048 82597EX 10GbE Ethernet Controller 8086 a01f PRO/10GbE LR Server Adapter 8086 a11f PRO/10GbE LR Server Adapter 1049 82566MM Gigabit Network Connection 103c 30c1 Compaq 6910p 17aa 20b9 ThinkPad T61/R61 104a 82566DM Gigabit Network Connection 104b 82566DC Gigabit Network Connection 104c 82562V 10/100 Network Connection 104d 82566MC Gigabit Network Connection 104e Ethernet Controller X710 for 10 Gigabit SFP+ 104f Ethernet Controller X710 for 10 Gigabit backplane 1050 82562EZ 10/100 Ethernet Controller 1014 0287 ThinkCentre S50 1028 019d Dimension 3000 1462 728c 865PE Neo2 (MS-6728) 1462 758c MS-6758 (875P Neo) 8086 3020 D865PERL mainboard 8086 302f Desktop Board D865GBF 8086 3427 S875WP1-E mainboard 1051 82801EB/ER (ICH5/ICH5R) integrated LAN Controller 1052 PRO/100 VM Network Connection 1053 PRO/100 VM Network Connection 1054 PRO/100 VE Network Connection 1055 PRO/100 VM Network Connection 1056 PRO/100 VE Network Connection 1057 PRO/100 VE Network Connection 1059 82551QM Ethernet Controller 105b 82546GB Gigabit Ethernet Controller (Copper) 105e 82571EB/82571GB Gigabit Ethernet Controller D0/D1 (copper applications) 103c 7044 NC360T PCI Express Dual Port Gigabit Server Adapter 103c 704e Dual Port 1000Base-T (PCIe) [AD337A] 1775 1100 CR11/VR11 Single Board Computer 1775 6003 Telum GE-QT 18df 1214 2x 1GbE, PCIe x1, dual Intel 82571EB chips 8086 005e PRO/1000 PT Dual Port Server Connection 8086 105e PRO/1000 PT Dual Port Network Connection 8086 10d5 82571PT Gigabit PT Quad Port Server ExpressModule 8086 115e PRO/1000 PT Dual Port Server Adapter 8086 125e PRO/1000 PT Dual Port Server Adapter 8086 135e PRO/1000 PT Dual Port Server Adapter 105f 82571EB Gigabit Ethernet Controller 103c 704f Dual Port 1000Base-SX (PCIe) [AD338A] 8086 005a PRO/1000 PF Dual Port Server Adapter 8086 115f PRO/1000 PF Dual Port Server Adapter 8086 125f PRO/1000 PF Dual Port Server Adapter 8086 135f PRO/1000 PF Dual Port Server Adapter 1060 82571EB Gigabit Ethernet Controller 8086 0060 PRO/1000 PB Dual Port Server Connection 8086 1060 PRO/1000 PB Dual Port Server Connection 1064 82562ET/EZ/GT/GZ - PRO/100 VE (LOM) Ethernet Controller 1043 80f8 P5GD1-VW Mainboard 1065 82562ET/EZ/GT/GZ - PRO/100 VE Ethernet Controller 1066 82562 EM/EX/GX - PRO/100 VM (LOM) Ethernet Controller 1067 82562 EM/EX/GX - PRO/100 VM Ethernet Controller 1068 82562ET/EZ/GT/GZ - PRO/100 VE (LOM) Ethernet Controller Mobile 103c 30d5 530 Laptop 1069 82562EM/EX/GX - PRO/100 VM (LOM) Ethernet Controller Mobile 106a 82562G - PRO/100 VE (LOM) Ethernet Controller 106b 82562G - PRO/100 VE Ethernet Controller Mobile 1075 82547GI Gigabit Ethernet Controller 1028 0165 PowerEdge 750 8086 0075 PRO/1000 CT Network Connection 8086 1075 PRO/1000 CT Network Connection 1076 82541GI Gigabit Ethernet Controller 1028 0165 PRO/1000 MT Network Connection 1028 016d PRO/1000 MT Network Connection 1028 019a PRO/1000 MT Network Connection 1028 106d PRO/1000 MT Network Connection 8086 0076 PRO/1000 MT Network Connection 8086 1076 PRO/1000 MT Network Connection 8086 1176 PRO/1000 MT Desktop Adapter 8086 1276 PRO/1000 MT Network Adapter 1077 82541GI Gigabit Ethernet Controller 1179 0001 PRO/1000 MT Mobile Connection 8086 0077 PRO/1000 MT Mobile Connection 8086 1077 PRO/1000 MT Mobile Connection 1078 82541ER Gigabit Ethernet Controller 8086 1078 82541ER-based Network Connection 1079 82546GB Gigabit Ethernet Controller 103c 12a6 Dual Port 1000Base-T [A9900A] 103c 12cf Core Dual Port 1000Base-T [AB352A] 1775 10d0 V5D Single Board Computer Gigabit Ethernet 1775 ce90 CE9 1fc1 0027 Niagara 2261 Failover NIC 4c53 1090 Cx9 / Vx9 mainboard 4c53 10b0 CL9 mainboard 8086 0079 PRO/1000 MT Dual Port Network Connection 8086 1079 PRO/1000 MT Dual Port Network Connection 8086 1179 PRO/1000 MT Dual Port Server Adapter 8086 117a PRO/1000 MT Dual Port Server Adapter 107a 82546GB Gigabit Ethernet Controller 103c 12a8 Dual Port 1000base-SX [A9899A] 8086 107a PRO/1000 MF Dual Port Server Adapter 8086 127a PRO/1000 MF Dual Port Server Adapter 107b 82546GB Gigabit Ethernet Controller 8086 007b PRO/1000 MB Dual Port Server Connection 8086 107b PRO/1000 MB Dual Port Server Connection 107c 82541PI Gigabit Ethernet Controller 8086 1376 PRO/1000 GT Desktop Adapter 8086 1476 PRO/1000 GT Desktop Adapter 107d 82572EI Gigabit Ethernet Controller (Copper) 8086 1082 PRO/1000 PT Server Adapter 8086 1084 PRO/1000 PT Server Adapter 8086 1092 PRO/1000 PT Server Adapter 107e 82572EI Gigabit Ethernet Controller (Fiber) 8086 1084 PRO/1000 PF Server Adapter 8086 1085 PRO/1000 PF Server Adapter 8086 1094 PRO/1000 PF Server Adapter 107f 82572EI Gigabit Ethernet Controller 1080 FA82537EP 56K V.92 Data/Fax Modem PCI 1081 631xESB/632xESB LAN Controller Copper 1082 631xESB/632xESB LAN Controller fiber 1083 631xESB/632xESB LAN Controller SERDES 1084 631xESB/632xESB IDE Redirection 1085 631xESB/632xESB Serial Port Redirection 1086 631xESB/632xESB IPMI/KCS0 1087 631xESB/632xESB UHCI Redirection 1089 631xESB/632xESB BT 108a 82546GB Gigabit Ethernet Controller 8086 108a PRO/1000 P Dual Port Server Adapter 8086 118a PRO/1000 P Dual Port Server Adapter 108b 82573V Gigabit Ethernet Controller (Copper) 1462 176c on board on MSI 945P - NEO (MS-7176) 108c 82573E Gigabit Ethernet Controller (Copper) 108e 82573E KCS (Active Management) 108f Active Management Technology - SOL 1091 PRO/100 VM Network Connection 1092 PRO/100 VE Network Connection 1071 8209 Medion MIM 2240 Notebook PC [MD98100] 1093 PRO/100 VM Network Connection 1094 PRO/100 VE Network Connection 1095 PRO/100 VE Network Connection 1096 80003ES2LAN Gigabit Ethernet Controller (Copper) 15d9 1096 Motherboard 15d9 8680 X7DVL-E-O motherboard 8086 3476 S5000PSLSATA Server Board 1097 631xESB/632xESB DPT LAN Controller (Fiber) 1098 80003ES2LAN Gigabit Ethernet Controller (Serdes) 1099 82546GB Gigabit Ethernet Controller (Copper) 8086 1099 PRO/1000 GT Quad Port Server Adapter 109a 82573L Gigabit Ethernet Controller 1179 ff10 PRO/1000 PL 17aa 2001 ThinkPad T60 17aa 207e ThinkPad X60/X60s 8086 109a PRO/1000 PL Network Connection 8086 309c Desktop Board D945GTP 8086 30a5 Desktop Board D975XBX 109b 82546GB PRO/1000 GF Quad Port Server Adapter 109e 82597EX 10GbE Ethernet Controller 8086 a01f PRO/10GbE CX4 Server Adapter 8086 a11f PRO/10GbE CX4 Server Adapter 10a0 82571EB PRO/1000 AT Quad Port Bypass Adapter 10a1 82571EB PRO/1000 AF Quad Port Bypass Adapter 10a4 82571EB Gigabit Ethernet Controller 8086 10a4 PRO/1000 PT Quad Port Server Adapter 8086 11a4 PRO/1000 PT Quad Port Server Adapter 10a5 82571EB Gigabit Ethernet Controller (Fiber) 8086 10a5 PRO/1000 PF Quad Port Server Adapter 8086 10a6 PRO/1000 PF Quad Port Server Adapter 10a6 82599EB 10-Gigabit Dummy Function 10a7 82575EB Gigabit Network Connection 8086 10a8 82575EB Gigabit Riser Card 10a9 82575EB Gigabit Backplane Connection 10b0 82573L PRO/1000 PL Network Connection 10b2 82573V PRO/1000 PM Network Connection 10b3 82573E PRO/1000 PM Network Connection 10b4 82573L PRO/1000 PL Network Connection 10b5 82546GB Gigabit Ethernet Controller (Copper) 103c 3109 NC340T PCI-X Quad-port Gigabit Server Adapter 8086 1099 PRO/1000 GT Quad Port Server Adapter 8086 1199 PRO/1000 GT Quad Port Server Adapter 10b6 82598 10GbE PCI-Express Ethernet Controller 10b9 82572EI Gigabit Ethernet Controller (Copper) 103c 704a 110T PCIe Gigabit Server Adapter 8086 1083 PRO/1000 PT Desktop Adapter 8086 1093 PRO/1000 PT Desktop Adapter 10ba 80003ES2LAN Gigabit Ethernet Controller (Copper) 10bb 80003ES2LAN Gigabit Ethernet Controller (Serdes) 10bc 82571EB/82571GB Gigabit Ethernet Controller (Copper) 1014 0368 4-Port 10/100/1000 Base-TX PCI Express Adapter for POWER 103c 704b NC364T PCI Express Quad Port Gigabit Server Adapter # 375-3481-01 REV:50 108e 11bc Quad Port Adapter 8086 10bc PRO/1000 PT Quad Port LP Server Adapter 8086 11bc PRO/1000 PT Quad Port LP Server Adapter (Kirkwood Low Profile) 10bd 82566DM-2 Gigabit Network Connection 1028 0211 OptiPlex 755 10bf 82567LF Gigabit Network Connection 10c0 82562V-2 10/100 Network Connection 1028 020d Inspiron 530 10c2 82562G-2 10/100 Network Connection 10c3 82562GT-2 10/100 Network Connection 10c4 82562GT 10/100 Network Connection 10c5 82562G 10/100 Network Connection 10c6 82598EB 10-Gigabit AF Dual Port Network Connection 8086 a05f 10-Gigabit XF SR Dual Port Server Adapter 8086 a15f 10-Gigabit XF SR Dual Port Server Adapter 10c7 82598EB 10-Gigabit AF Network Connection 1014 037f 10-Gigabit XF SR Server Adapter 1014 0380 10-Gigabit XF LR Server Adapter 8086 a05f 10-Gigabit XF SR Server Adapter 8086 a15f 10-Gigabit XF SR Server Adapter 8086 a16f 10-Gigabit XF SR Server Adapter 10c8 82598EB 10-Gigabit AT Network Connection 8086 a10c 10-Gigabit AT Server Adapter 8086 a11c 10-Gigabit AT Server Adapter 8086 a12c 10-Gigabit AT Server Adapter 10c9 82576 Gigabit Network Connection 103c 31ef NC362i Integrated Dual port Gigabit Server Adapter 103c 323f NC362i Integrated Dual port Gigabit Server Adapter 10a9 8028 UV-BaseIO dual-port GbE 13a3 0037 DS4100 Secure Multi-Gigabit Server Adapter with Compression 15d9 a811 H8DGU 4c52 9212 LREC9212PT Dual-port 10Gb Ethernet Network Adapter 8086 a01c Gigabit ET Dual Port Server Adapter 8086 a03c Gigabit ET Dual Port Server Adapter 8086 a04c Gigabit ET Dual Port Server Adapter 10ca 82576 Virtual Function 10cb 82567V Gigabit Network Connection 10cc 82567LM-2 Gigabit Network Connection 10cd 82567LF-2 Gigabit Network Connection 10ce 82567V-2 Gigabit Network Connection 10d3 82574L Gigabit Network Connection 103c 1785 NC112i 1-port Ethernet Server Adapter 103c 3250 NC112T PCI Express single Port Gigabit Server Adapter 1043 8369 Motherboard 1093 76e9 PCIe-8233 Ethernet Adapter 10a9 8029 Prism XL Single Port Gigabit Ethernet 15d9 0605 X8SIL 15d9 060a X7SPA-H/X7SPA-HF Motherboard 15d9 060d C7SIM-Q Motherboard 4c52 2201 LRES2201PT Single-port 1Gb Ethernet Network Adapter 8086 0001 Gigabit CT2 Desktop Adapter 8086 3578 Server Board S1200BTLR 8086 357a Server Board S1200BTS 8086 a01f Gigabit CT Desktop Adapter e4bf 50c1 PC1-GROOVE e4bf 50c2 PC2-LIMBO 10d4 Matrox Concord GE (customized Intel 82574) 10d5 82571PT Gigabit PT Quad Port Server ExpressModule 10d6 82575GB Gigabit Network Connection 8086 10d6 Gigabit VT Quad Port Server Adapter 8086 145a Gigabit VT Quad Port Server Adapter 8086 147a Gigabit VT Quad Port Server Adapter 10d8 82599EB 10 Gigabit Unprogrammed 10d9 82571EB Dual Port Gigabit Mezzanine Adapter 103c 1716 NC360m Dual Port 1GbE BL-c Adapter 10da 82571EB Quad Port Gigabit Mezzanine Adapter 103c 1717 NC364m Quad Port 1GbE BL-c Adapter 10db 82598EB 10-Gigabit Dual Port Network Connection 10dd 82598EB 10-Gigabit AT CX4 Network Connection 10de 82567LM-3 Gigabit Network Connection 10df 82567LF-3 Gigabit Network Connection 10e1 82598EB 10-Gigabit AF Dual Port Network Connection 8086 a15f 10-Gigabit SR Dual Port Express Module 10e2 82575GB Gigabit Network Connection 8086 10e2 Gigabit VT Quad Port Server Adapter 10e5 82567LM-4 Gigabit Network Connection 10e6 82576 Gigabit Network Connection 8086 a01f Gigabit EF Dual Port Server Adapter 8086 a02f Gigabit EF Dual Port Server Adapter 10e7 82576 Gigabit Network Connection 103c 31ff NC362i Integrated Dual Port BL-c Gigabit Server Adapter 4c52 9701 LREC9701EF Single-port 1Gb Ethernet Network Adapter 10e8 82576 Gigabit Network Connection 8086 a02b Gigabit ET Quad Port Server Adapter 8086 a02c Gigabit ET Quad Port Server Adapter 10ea 82577LM Gigabit Network Connection 1028 040a Latitude E6410 1028 040b Latitude E6510 e4bf 50c1 PC1-GROOVE 10eb 82577LC Gigabit Network Connection 10ec 82598EB 10-Gigabit AT CX4 Network Connection 8086 a01f 10-Gigabit CX4 Dual Port Server Adapter 8086 a11f 10-Gigabit CX4 Dual Port Server Adapter 10ed 82599 Ethernet Controller Virtual Function 10ef 82578DM Gigabit Network Connection 1028 02da OptiPlex 980 15d9 060d C7SIM-Q Motherboard 10f0 82578DC Gigabit Network Connection 10f1 82598EB 10-Gigabit AF Dual Port Network Connection 8086 a20f 10-Gigabit AF DA Dual Port Server Adapter 8086 a21f 10-Gigabit AF DA Dual Port Server Adapter 10f4 82598EB 10-Gigabit AF Network Connection 8086 106f 10-Gigabit XF LR Server Adapter 8086 a06f 10-Gigabit XF LR Server Adapter 10f5 82567LM Gigabit Network Connection 17aa 20ee ThinkPad T400 10f6 82574L Gigabit Network Connection 10f7 10 Gigabit BR KX4 Dual Port Network Connection 108e 7b12 Sun Dual 10GbE PCIe 2.0 FEM 8086 000d Ethernet Mezzanine Adapter X520-KX4-2 10f8 82599 10 Gigabit Dual Port Backplane Connection 1028 1f63 10GbE 2P X520k bNDC 103c 17d2 Ethernet 10Gb 2-port 560M Adapter 103c 18d0 Ethernet 10Gb 2-port 560FLB Adapter 1059 0111 T4007 10GbE interface 1059 0130 T4009 10GbE interface 8086 000c Ethernet X520 10GbE Dual Port KX4-KR Mezz 10f9 82599 10 Gigabit Dual Port Network Connection 10fb 82599ES 10-Gigabit SFI/SFP+ Network Connection 1028 1f72 Ethernet 10G 4P X520/I350 rNDC 103c 17d0 Ethernet 10Gb 2-port 560FLR-SFP+ Adapter 103c 17d2 Ethernet 10Gb 2-port 560M Adapter 103c 17d3 Ethernet 10Gb 2-port 560SFP+ Adapter 103c 211b Ethernet 10Gb 1-port P560FLR-SFP+ Adapter 103c 2147 Ethernet 10Gb 1-port 561i Adapter 103c 2159 Ethernet 10Gb 2-port 562i Adapter 108e 7b11 Ethernet Server Adapter X520-2 1170 004c 82599 DP 10G Mezzanine Adapter 1374 1a08 PE310G4SPI9/PE310G4SPI9L/PE310G4SPI9LA Quad Port Fiber 10 Gigabit Ethernet PCI Express Server Adapter 15d9 0611 AOC-STGN-i2S 1734 11a9 10 Gigabit Dual Port Network Connection 17aa 1071 ThinkServer X520-2 AnyFabric 17aa 4007 82599ES 10-Gigabit SFI/SFP+ Network Connection 17aa 402b 82599ES 10Gb 2-port Server Adapter X520-DA2 17aa 402f FPGA Card XC7VX690T-3FFG1157E 18d4 0c09 82599ES 10Gb 2-port SFP+ OCP Mezz Card MOP81-I-10GS2 193d 1004 560F-B 1bd4 001b 10G SFP+ DP ER102Fi4 Rack Adapter 1bd4 002f 10G SFP+ DP EP102Fi4A Adapter 1bd4 0032 10G SFP+ DP EP102Fi4 Adapter 1bd4 0067 F102I82599 4c52 1024 LR-LINK LRES9804BF Quad-port 10Gb Ethernet Server Adapter 4c52 3002 LRES3002PF Dual-port 10Gb Ethernet Server Adapter for OCP 4c52 3012 LRES3012PF Dual-port 10Gb Ethernet Server Adapter for OCP 4c52 9801 LREC9801BF Single-port 10Gb Ethernet Server Adapter 4c52 9802 LREC9802BF Dual-port 10Gb Ethernet Server Adapter 8086 0002 Ethernet Server Adapter X520-DA2 8086 0003 Ethernet Server Adapter X520-2 8086 0006 Ethernet Server Adapter X520-1 8086 0008 Ethernet OCP Server Adapter X520-2 8086 000a Ethernet Server Adapter X520-1 8086 000c Ethernet Server Adapter X520-2 8086 10a6 82599ES 10Gb 2 port Server Adapter X520-DA2 8086 7a11 Ethernet Server Adapter X520-2 8086 7a12 Ethernet Server Adapter X520-2 10fc 82599 10 Gigabit Dual Port Network Connection 10fe 82552 10/100 Network Connection 1107 PRO/1000 MF Server Adapter (LX) 1130 82815 815 Chipset Host Bridge and Memory Controller Hub 1025 1016 Travelmate 612 TX 1043 8027 CUSL2-C/TUSL2-C Mainboard 104d 80df Vaio PCG-FX403 8086 4532 Desktop Board D815EEA2/D815EFV 8086 4557 D815EGEW Mainboard 1131 82815 815 Chipset AGP Bridge 1132 82815 Chipset Graphics Controller (CGC) 1025 1016 Travelmate 612 TX 103c 2001 e-pc 40 104d 80df Vaio PCG-FX403 8086 4532 Desktop Board D815EEA2/D815EFV 8086 4541 D815EEA Motherboard 8086 4557 D815EGEW Mainboard 1136 Thunderbolt 4 Bridge [Maple Ridge 4C 2020] 1137 Thunderbolt 4 NHI [Maple Ridge 4C 2020] 1138 Thunderbolt 4 USB Controller [Maple Ridge 4C 2020] 1161 82806AA PCI64 Hub Advanced Programmable Interrupt Controller 8086 1161 82806AA PCI64 Hub APIC 1162 Xscale 80200 Big Endian Companion Chip 1190 Merrifield SD/SDIO/eMMC Controller 1191 Merrifield Serial IO HSUART Controller 1192 Merrifield Serial IO HSUART DMA Controller 1194 Merrifield Serial IO SPI Controller 1195 Merrifield Serial IO I2C Controller 1196 Merrifield Serial IO I2C Controller 1199 Merrifield GPIO Controller 119e Merrifield USB Device Controller (OTG) 11a0 Merrifield SCU IPC 11a1 Merrifield Power Management Unit 11a2 Merrifield Serial IO DMA Controller 11a5 Merrifield Serial IO PWM Controller 11c3 Quark SoC X1000 PCIe Root Port 0 11c4 Quark SoC X1000 PCIe Root Port 1 11eb Simics NVMe Controller 1200 IXP1200 Network Processor 172a 0000 AEP SSL Accelerator 1209 8255xER/82551IT Fast Ethernet Controller 140b 0610 PMC610 quad Ethernet board 1af4 1100 QEMU Virtual Machine 4c53 1050 CT7 mainboard 4c53 1051 CE7 mainboard 4c53 1070 PC6 mainboard 1221 82092AA PCI to PCMCIA Bridge 1222 82092AA IDE Controller 1223 SAA7116 1225 82452KX/GX [Orion] 1226 82596 PRO/10 PCI 1227 82865 EtherExpress PRO/100A 1228 82556 EtherExpress PRO/100 Smart 1229 82557/8/9/0/1 Ethernet Pro 100 0e11 3001 82559 Fast Ethernet LOM with Alert on LAN* 0e11 3002 82559 Fast Ethernet LOM with Alert on LAN* 0e11 3003 82559 Fast Ethernet LOM with Alert on LAN* 0e11 3004 82559 Fast Ethernet LOM with Alert on LAN* 0e11 3005 82559 Fast Ethernet LOM with Alert on LAN* 0e11 3006 82559 Fast Ethernet LOM with Alert on LAN* 0e11 3007 82559 Fast Ethernet LOM with Alert on LAN* 0e11 b01e NC3120 Fast Ethernet NIC 0e11 b01f NC3122 Fast Ethernet NIC (dual port) 0e11 b02f NC1120 Ethernet NIC 0e11 b04a Netelligent 10/100TX NIC with Wake on LAN 0e11 b0c6 NC3161 Fast Ethernet NIC (embedded, WOL) 0e11 b0c7 NC3160 Fast Ethernet NIC (embedded) 0e11 b0d7 NC3121 Fast Ethernet NIC (WOL) 0e11 b0dd NC3131 Fast Ethernet NIC (dual port) 0e11 b0de NC3132 Fast Ethernet Module (dual port) 0e11 b0e1 NC3133 Fast Ethernet Module (100-FX) 0e11 b134 NC3163 Fast Ethernet NIC (embedded, WOL) 0e11 b13c NC3162 Fast Ethernet NIC (embedded) 0e11 b144 NC3123 Fast Ethernet NIC (WOL) 0e11 b163 NC3134 Fast Ethernet NIC (dual port) 0e11 b164 NC3135 Fast Ethernet Upgrade Module (dual port) 0e11 b1a4 NC7131 Gigabit Server Adapter 1014 005c 82558B Ethernet Pro 10/100 1014 01bc 82559 Fast Ethernet LAN On Motherboard 1014 01f1 10/100 Ethernet Server Adapter 1014 01f2 10/100 Ethernet Server Adapter 1014 0207 Ethernet Pro/100 S 1014 0232 10/100 Dual Port Server Adapter 1014 023a ThinkPad R30 1014 105c Netfinity 10/100 1014 2205 ThinkPad A22p 1014 305c 10/100 EtherJet Management Adapter 1014 405c 10/100 EtherJet Adapter with Alert on LAN 1014 505c 10/100 EtherJet Secure Management Adapter 1014 605c 10/100 EtherJet Secure Management Adapter 1014 705c 10/100 Netfinity 10/100 Ethernet Security Adapter 1014 805c 10/100 Netfinity 10/100 Ethernet Security Adapter 1028 009b 10/100 Ethernet Server Adapter 1028 00ce 10/100 Ethernet Server Adapter 1033 8000 PC-9821X-B06 1033 8016 PK-UG-X006 1033 801f PK-UG-X006 1033 8026 PK-UG-X006 1033 8063 82559-based Fast Ethernet Adapter 1033 8064 82559-based Fast Ethernet Adapter 103c 10c0 NetServer 10/100TX 103c 10c3 NetServer 10/100TX 103c 10ca NetServer 10/100TX 103c 10cb NetServer 10/100TX 103c 10e3 NetServer 10/100TX 103c 10e4 NetServer 10/100TX 103c 1200 NetServer 10/100TX 108e 10cf EtherExpress PRO/100(B) 10c3 1100 SmartEther100 SC1100 10cf 1115 8255x-based Ethernet Adapter (10/100) 10cf 1143 8255x-based Ethernet Adapter (10/100) 110a 008b 82551QM Fast Ethernet Multifuction PCI/CardBus Controller 114a 0582 PC8 onboard ethernet ETH2 1179 0001 8255x-based Ethernet Adapter (10/100) 1179 0002 PCI FastEther LAN on Docker 1179 0003 8255x-based Fast Ethernet 1259 2560 AT-2560 100 1259 2561 AT-2560 100 FX Ethernet Adapter 1266 0001 NE10/100 Adapter 13e9 1000 6221L-4U 144d 2501 SEM-2000 MiniPCI LAN Adapter 144d 2502 SEM-2100IL MiniPCI LAN Adapter 1668 1100 EtherExpress PRO/100B (TX) (MiniPCI Ethernet+Modem) 1775 1100 CR11/VR11 Single Board Computer 1775 ce90 CE9 1af4 1100 QEMU Virtual Machine 4c53 1080 CT8 mainboard 4c53 10e0 PSL09 PrPMC 8086 0001 EtherExpress PRO/100B (TX) 8086 0002 EtherExpress PRO/100B (T4) 8086 0003 EtherExpress PRO/10+ 8086 0004 EtherExpress PRO/100 WfM 8086 0005 82557 10/100 8086 0006 82557 10/100 with Wake on LAN 8086 0007 82558 10/100 Adapter 8086 0008 82558 10/100 with Wake on LAN 8086 0009 82558B PRO/100+ PCI (TP) 8086 000a EtherExpress PRO/100+ Management Adapter 8086 000b EtherExpress PRO/100+ 8086 000c EtherExpress PRO/100+ Management Adapter 8086 000d EtherExpress PRO/100+ Alert On LAN II* Adapter 8086 000e EtherExpress PRO/100+ Management Adapter with Alert On LAN* 8086 000f EtherExpress PRO/100 Desktop Adapter 8086 0010 EtherExpress PRO/100 S Management Adapter 8086 0011 EtherExpress PRO/100 S Management Adapter 8086 0012 EtherExpress PRO/100 S Advanced Management Adapter (D) 8086 0013 EtherExpress PRO/100 S Advanced Management Adapter (E) 8086 0030 EtherExpress PRO/100 Management Adapter with Alert On LAN* GC 8086 0031 EtherExpress PRO/100 Desktop Adapter 8086 0040 EtherExpress PRO/100 S Desktop Adapter 8086 0041 EtherExpress PRO/100 S Desktop Adapter 8086 0042 EtherExpress PRO/100 Desktop Adapter 8086 0050 EtherExpress PRO/100 S Desktop Adapter 8086 1009 EtherExpress PRO/100+ Server Adapter 8086 100c EtherExpress PRO/100+ Server Adapter (PILA8470B) 8086 1012 EtherExpress PRO/100 S Server Adapter (D) 8086 1013 EtherExpress PRO/100 S Server Adapter (E) 8086 1015 EtherExpress PRO/100 S Dual Port Server Adapter 8086 1017 EtherExpress PRO/100+ Dual Port Server Adapter 8086 1030 EtherExpress PRO/100+ Management Adapter with Alert On LAN* G Server 8086 1040 EtherExpress PRO/100 S Server Adapter 8086 1041 EtherExpress PRO/100 S Server Adapter 8086 1042 EtherExpress PRO/100 Server Adapter 8086 1050 EtherExpress PRO/100 S Server Adapter 8086 1051 EtherExpress PRO/100 Server Adapter 8086 1052 EtherExpress PRO/100 Server Adapter 8086 10f0 EtherExpress PRO/100+ Dual Port Adapter 8086 1229 82557/8/9 [Ethernet Pro 100] 8086 2009 EtherExpress PRO/100 S Mobile Adapter 8086 200d EtherExpress PRO/100 Cardbus 8086 200e EtherExpress PRO/100 LAN+V90 Cardbus Modem 8086 200f EtherExpress PRO/100 SR Mobile Adapter 8086 2010 EtherExpress PRO/100 S Mobile Combo Adapter 8086 2013 EtherExpress PRO/100 SR Mobile Combo Adapter 8086 2016 EtherExpress PRO/100 S Mobile Adapter 8086 2017 EtherExpress PRO/100 S Combo Mobile Adapter 8086 2018 EtherExpress PRO/100 SR Mobile Adapter 8086 2019 EtherExpress PRO/100 SR Combo Mobile Adapter 8086 2101 EtherExpress PRO/100 P Mobile Adapter 8086 2102 EtherExpress PRO/100 SP Mobile Adapter 8086 2103 EtherExpress PRO/100 SP Mobile Adapter 8086 2104 EtherExpress PRO/100 SP Mobile Adapter 8086 2105 EtherExpress PRO/100 SP Mobile Adapter 8086 2106 EtherExpress PRO/100 P Mobile Adapter 8086 2107 EtherExpress PRO/100 Network Connection 8086 2108 EtherExpress PRO/100 Network Connection 8086 2200 EtherExpress PRO/100 P Mobile Combo Adapter 8086 2201 EtherExpress PRO/100 P Mobile Combo Adapter 8086 2202 EtherExpress PRO/100 SP Mobile Combo Adapter 8086 2203 EtherExpress PRO/100+ MiniPCI 8086 2204 EtherExpress PRO/100+ MiniPCI 8086 2205 EtherExpress PRO/100 SP Mobile Combo Adapter 8086 2206 EtherExpress PRO/100 SP Mobile Combo Adapter 8086 2207 EtherExpress PRO/100 SP Mobile Combo Adapter 8086 2208 EtherExpress PRO/100 P Mobile Combo Adapter 8086 2402 EtherExpress PRO/100+ MiniPCI 8086 2407 EtherExpress PRO/100+ MiniPCI 8086 2408 EtherExpress PRO/100+ MiniPCI 8086 2409 EtherExpress PRO/100+ MiniPCI 8086 240f EtherExpress PRO/100+ MiniPCI 8086 2410 EtherExpress PRO/100+ MiniPCI 8086 2411 EtherExpress PRO/100+ MiniPCI 8086 2412 EtherExpress PRO/100+ MiniPCI 8086 2413 EtherExpress PRO/100+ MiniPCI 8086 3000 82559 Fast Ethernet LAN on Motherboard 8086 3001 82559 Fast Ethernet LOM with Basic Alert on LAN* 8086 3002 82559 Fast Ethernet LOM with Alert on LAN II* 8086 3006 EtherExpress PRO/100 S Network Connection 8086 3007 EtherExpress PRO/100 S Network Connection 8086 3008 EtherExpress PRO/100 Network Connection 8086 3010 EtherExpress PRO/100 S Network Connection 8086 3011 EtherExpress PRO/100 S Network Connection 8086 3012 EtherExpress PRO/100 Network Connection 8086 301a S845WD1-E mainboard 8086 3411 SDS2 Mainboard 122d 430FX - 82437FX TSC [Triton I] 122e 82371FB PIIX ISA [Triton I] 1230 82371FB PIIX IDE [Triton I] 1231 DSVD Modem 1234 430MX - 82371MX Mobile PCI I/O IDE Xcelerator (MPIIX) 1235 430MX - 82437MX Mob. System Ctrlr (MTSC) & 82438MX Data Path (MTDP) 1237 440FX - 82441FX PMC [Natoma] 01de fffe Propolis Virtual 440FX 1af4 1100 Qemu virtual machine 1239 82371FB PIIX IDE Interface 123b 82380PB PCI to PCI Docking Bridge 123c 82380AB (MISA) Mobile PCI-to-ISA Bridge 123d 683053 Programmable Interrupt Device 123e 82466GX (IHPC) Integrated Hot-Plug Controller (hidden mode) 123f 82466GX Integrated Hot-Plug Controller (IHPC) 1240 82752 (752) AGP Graphics Accelerator 124b 82380FB (MPCI2) Mobile Docking Controller 124c Ethernet Connection E823-L for backplane 124d Ethernet Connection E823-L for SFP 124e Ethernet Connection E823-L/X557-AT 10GBASE-T 124f Ethernet Connection E823-L 1GbE 1250 430HX - 82439HX TXC [Triton II] 125b Ethernet Controller I226-LM 125c Ethernet Controller I226-V 125d Ethernet Controller I226-IT 12d1 Ethernet Controller E830-CC for backplane 12d2 Ethernet Controller E830-CC for QSFP 8086 0002 Ethernet Network Adapter E830-C-Q2 for OCP 3.0 8086 0004 Ethernet Network Adapter E830-CC-Q1 for OCP 3.0 12d3 Ethernet Controller E830-CC for SFP 8086 0001 Ethernet Network Adapter E830-XXV-2 for OCP 3.0 8086 0003 Ethernet Network Adapter E830-XXV-2 8086 0004 Ethernet Network Adapter E830-XXV-4 for OCP 3.0 12d4 Ethernet Controller E830-CC for SFP-DD 12d5 Ethernet Controller E830-C for backplane 12d8 Ethernet Controller E830-C for QSFP 12da Ethernet Controller E830-C for SFP 12dc Ethernet Controller E830-L for backplane 12dd Ethernet Controller E830-L for QSFP 12de Ethernet Controller E830-L for SFP 1360 82806AA PCI64 Hub PCI Bridge 1361 82806AA PCI64 Hub Controller (HRes) 8086 1361 82806AA PCI64 Hub Controller (HRes) 8086 8000 82806AA PCI64 Hub Controller (HRes) 1452 Infrastructure Data Path Function 1457 NVMe Data Path Function 145c Infrastructure Data Path Function 1460 82870P2 P64H2 Hub PCI Bridge 1461 82870P2 P64H2 I/OxAPIC 15d9 3480 P4DP6 4c53 1090 Cx9/Vx9 mainboard 1462 82870P2 P64H2 Hot Plug Controller 1501 82567V-3 Gigabit Network Connection 1502 82579LM Gigabit Network Connection (Lewisville) 1028 04a3 Precision M4600 17aa 21ce ThinkPad T520 17aa 3070 ThinkCentre M91p 8086 3578 Server Board S1200BTLR 8086 357a Server Board S1200BTS 1503 82579V Gigabit Network Connection 1043 849c P8P67 Deluxe Motherboard 10cf 161c LIFEBOOK E752 8086 200d DH61CR motherboard 1507 Ethernet Express Module X520-P2 1508 82598EB Gigabit BX Network Connection 1509 82580 Gigabit Network Connection 150a 82576NS Gigabit Network Connection 150b 82598EB 10-Gigabit AT2 Server Adapter 8086 a10c 82598EB 10-Gigabit AT2 Server Adapter 8086 a11c 82598EB 10-Gigabit AT2 Server Adapter 8086 a12c 82598EB 10-Gigabit AT2 Server Adapter 150c 82583V Gigabit Network Connection 150d 82576 Gigabit Backplane Connection 8086 a10c Gigabit ET Quad Port Mezzanine Card 150e 82580 Gigabit Network Connection 103c 1780 NC365T 4-port Ethernet Server Adapter 8086 12a1 Ethernet Server Adapter I340-T4 8086 12a2 Ethernet Server Adapter I340-T4 150f 82580 Gigabit Fiber Network Connection 1510 82580 Gigabit Backplane Connection 1511 82580 Gigabit SFP Connection 1513 CV82524 Thunderbolt Controller [Light Ridge 4C 2010] 1514 Ethernet X520 10GbE Dual Port KX4 Mezz 8086 000b Ethernet X520 10GbE Dual Port KX4 Mezz 1515 X540 Ethernet Controller Virtual Function 1516 82580 Gigabit Network Connection 8086 12b1 Ethernet Server Adapter I340-T2 8086 12b2 Ethernet Server Adapter I340-T2 1517 82599ES 10 Gigabit Network Connection 1137 006a UCS CNA M61KR-I Intel Converged Network Adapter 1518 82576NS SerDes Gigabit Network Connection 151a DSL2310 Thunderbolt Controller [Eagle Ridge 2C 2011] 151b CVL2510 Thunderbolt Controller [Light Peak 2C 2010] 151c 82599 10 Gigabit TN Network Connection 108e 7b13 Dual 10GBASE-T LP 151d Ethernet Connection E823-L for QSFP 1520 I350 Ethernet Controller Virtual Function 1521 I350 Gigabit Network Connection 1028 0602 Gigabit 2P I350-t LOM 1028 0693 Gigabit 2P I350-t LOM 1028 06e2 Gigabit 2P I350-t LOM 1028 0757 Gigabit I350-t LOM 1028 075a Gigabit I350-t LOM 1028 1f60 Gigabit 4P I350-t rNDC 1028 1f62 Gigabit 4P X540/I350 rNDC 1028 1fa8 Ethernet 10G 4P X550/I350 rNDC 1028 1fa9 Ethernet 10G 4P X550 rNDC 1028 1faa Gigabit 4P X550/I350 rNDC 1028 ff9a Gigabit 4P X710/I350 rNDC 103c 17d1 Ethernet 1Gb 4-port 366FLR Adapter 103c 2003 Ethernet 1Gb 2-port 367i Adapter 103c 2226 Ethernet 1Gb 1-port 364i Adapter 103c 337f Ethernet 1Gb 2-port 361i Adapter 103c 3380 Ethernet 1Gb 4-port 366i Adapter 103c 339e Ethernet 1Gb 2-port 361T Adapter 103c 8157 Ethernet 1Gb 4-port 366T Adapter 108e 7b16 Quad Port GbE PCIe 2.0 ExpressModule, UTP 108e 7b18 Quad Port GbE PCIe 2.0 Low Profile Adapter, UTP 1093 7648 PCIe-8237R Ethernet Adapter 1093 7649 PCIe-8236 Ethernet Adapter 1093 76b1 PCIe-8237R-S Ethernet Adapter 1093 775b PCIe-8237 Ethernet Adapter 10a9 802a UV2-BaseIO dual-port GbE 1137 023e 1GigE I350 LOM 15d9 0000 AOC-SGP-i4 15d9 0652 Dual Port i350 GbE MicroLP [AOC-CGP-i2] 17aa 1074 ThinkServer I350-T4 AnyFabric 17aa 4005 I350 Gigabit Network Connection 18d4 0c07 I350 1Gb 2-port RJ45 OCP Mezz Card MOP41-I-1GT2 193d 1005 360T-B 193d 1007 360T-L # NIC-ETH360T-3S-4P OCP3.0 4x1G Base-T Card 193d 1080 NIC-ETH360T-3S-4P 1bd4 001d 1G base-T QP EP014Ti1 Adapter 1bd4 0035 1G base-T QP EP014Ti1 Adapter 1bd4 0066 F014I350 1bd4 008a F012I350 1bd4 008d ENFI1100-T4 4c52 0350 I350 1Gb 2-port Ethernet Network Adapter 4c52 1350 LREC9222HT Dual-port 1Gb Ethernet Network Adapter 4c52 2003 LRES2003PT Dual-port 1Gb Ethernet Network Adapter 4c52 2005 LRES2005PT Quad-port 1Gb Ethernet Network Adapter 4c52 2006 LRES2006PT Six-port 1Gb Ethernet Network Adapter 4c52 2008 LRES2008PT Eight-port 1Gb Ethernet Network Adapter 4c52 2018 LRES2018PT Twelve-port 1Gb Ethernet Network Adapter 4c52 2202 LRES2202PT Dual-port 1Gb Ethernet Network Adapter 4c52 2217 LRES2217PT Dual-port 1Gb Ethernet Network Adapter 4c52 3010 LRES3010PF Dual-port 1Gb Ethernet Server Adapter for OCP 4c52 3023 LRES3023PT Quad-port 1Gb Ethernet Server Adapter for OCP 4c52 3041 LRES3041PT Dual-port 1Gb Ethernet Server Adapter for OCP 4c52 4006 LRES4006MT Quad-port 1Gb Ethernet Netwaork Adapter 4c52 9712 LREC9712HT Dual-port 10Gb Ethernet Network Adapter 8086 0001 Ethernet Server Adapter I350-T4 8086 0002 Ethernet Server Adapter I350-T2 8086 0003 Ethernet Network Adapter I350-T4 for OCP NIC 3.0 8086 00a1 Ethernet Server Adapter I350-T4 8086 00a2 Ethernet Server Adapter I350-T2 8086 00a3 Ethernet Network Adapter I350-T4 for OCP NIC 3.0 8086 00aa Ethernet Network Adapter I350-T4 for OCP NIC 3.0 8086 4017 Ethernet Network Adapter I350-T4 for OCP NIC 3.0 8086 5001 Ethernet Server Adapter I350-T4 8086 5002 Ethernet Server Adapter I350-T2 8086 5003 Ethernet 1G 4P I350-t OCP 1522 I350 Gigabit Fiber Network Connection 108e 7b17 Quad Port GbE PCIe 2.0 ExpressModule, MMF 108e 7b19 Dual Port GbE PCIe 2.0 Low Profile Adapter, MMF 4c52 1006 LRES1006PF Six-port 1Gb Ethernet Network Adapter 4c52 2203 LRES2203PF Dual-port 1Gb Ethernet Network Adapter 4c52 9710 LREC9710HF Single-port 1Gb Ethernet Network Adapter 4c52 9712 LREC9712HF Dual-port 1Gb Ethernet Network Adapter 4c52 9714 LREC9714HF Quad-port 1Gb Ethernet Network Adapter 8086 0002 Ethernet Server Adapter I350-T2 8086 0003 Ethernet Server Adapter I350-F4 8086 0004 Ethernet Server Adapter I350-F2 8086 0005 Ethernet Server Adapter I350-F1 8086 00a2 Ethernet Server Adapter I350-T2 8086 00a3 Ethernet Server Adapter I350-F4 8086 00a4 Ethernet Server Adapter I350-F2 1523 I350 Gigabit Backplane Connection 1028 0060 Gigabit 2P I350 LOM 1028 1f9b Gigabit 4P I350-t bNDC 103c 1784 Ethernet 1Gb 2-port 361FLB Adapter 103c 18d1 Ethernet 1Gb 2-port 361FLB Adapter 103c 1989 Ethernet 1Gb 2-port 363i Adapter 103c 339f Ethernet 1Gb 4-port 366M Adapter 4c52 9714 LREC9714HT Quad-port 10Gb Ethernet Network Adapter 8086 1f52 1GbE 4P I350 Mezz 1524 I350 Gigabit Connection 1525 82567V-4 Gigabit Network Connection 1526 82576 Gigabit Network Connection 8086 a05c Gigabit ET2 Quad Port Server Adapter 8086 a06c Gigabit ET2 Quad Port Server Adapter 1527 82580 Gigabit Fiber Network Connection 8086 0001 Ethernet Server Adapter I340-F4 8086 0002 Ethernet Server Adapter I340-F4 1528 Ethernet Controller 10-Gigabit X540-AT2 1028 1f61 Ethernet 10G 4P X540/I350 rNDC 103c 192d 561FLR-T 2-port 10Gb Ethernet Adapter 103c 2004 Ethernet 10Gb 2-port 561i Adapter 103c 211a Ethernet 10Gb 2-port 561T Adapter 108e 4853 Ethernet Controller 10-Gigabit X540-AT2 108e 7b14 Sun Dual Port 10 GbE PCIe 2.0 ExpressModule, Base-T 108e 7b15 Sun Dual Port 10 GbE PCIe 2.0 Low Profile Adapter, Base-T 1137 00bf Ethernet Converged Network Adapter X540-T2 1170 0052 Ethernet Controller 10-Gigabit X540-AT2 15d9 0734 AOC-STG-I2T 17aa 1073 ThinkServer X540-T2 AnyFabric 17aa 4006 Ethernet Controller 10-Gigabit X540-AT2 1bd4 001a 10G base-T DP ER102Ti3 Rack Adapter 1bd4 0033 10G base-T DP EP102Ti3 Adapter 1bd4 0034 10G base-T DP EP102Ti3A Adapter 4c52 9802 LREC9802BT Dual-port 10Gb Ethernet Network Adapter 8086 0001 Ethernet Converged Network Adapter X540-T2 8086 0002 Ethernet Converged Network Adapter X540-T1 8086 001a Ethernet Converged Network Adapter X540-T2 8086 00a2 Ethernet Converged Network Adapter X540-T1 8086 1f61 Ethernet 10G 4P X540/I350 rNDC 8086 5003 Ethernet 10G 2P X540-t Adapter 8086 5004 Ethernet 10G 2P X540-t Adapter 1529 82599 10 Gigabit Dual Port Network Connection with FCoE 152a 82599 10 Gigabit Dual Port Backplane Connection with FCoE 152e 82599 Virtual Function 152f I350 Virtual Function 1530 X540 Virtual Function 1531 I210 Gigabit Unprogrammed 1533 I210 Gigabit Network Connection 1028 0758 I210 PCIe 1Gb 1-Port RJ45 LOM 1028 0759 I210 PCIe 1Gb 1-Port RJ45 LOM 1028 0b35 I210 Gigabit Network Connection 103c 0003 Ethernet I210-T1 GbE NIC 1059 0180 RD10019 1GbE interface 1093 7706 Compact Vision System Ethernet Adapter 10a9 802c UV300 BaseIO single-port GbE 10a9 802d UV3000 BaseIO GbE Network 17aa 1059 I210 Gigabit Network Connection 17aa 1100 ThinkServer Ethernet Server Adapter 17aa 1509 I210 Gigabit Network Connection 17aa 404d I210 PCIe 1Gb 1-Port RJ45 LOM 17aa 407a I210 PCIe 1Gb 1-Port RJ45 LOM 4c52 1051 LRES1051PT Dual-port 1Gb Ethernet Network Adapter 4c52 1210 LREC9204CT Single-port 1Gb Ethernet Network Adapter 4c52 2057 LRES2057PT Dual-port 1Gb Ethernet Network Adapter 4c52 2206 LRES2206PT Single-port 1Gb Ethernet Network Adapter 4c52 2210 LRES2210PT Single-port 1Gb Ethernet Network Adapter 4c52 2211 LRES2211PT Single-port 1Gb Ethernet Network Adapter 4c52 2214 LRES2214PT Single-port 1Gb Ethernet Network Adapter 4c52 3002 LRES3002PT Dual-port 1Gb Ethernet Network Adapter 4c52 3004 LRES3004PT Quad-port 1Gb Ethernet Network Adapter 8086 0001 Ethernet Server Adapter I210-T1 8086 0002 Ethernet Server Adapter I210-T1 1536 I210 Gigabit Fiber Network Connection 4c52 2204 LRES2204PT Single-port 1Gb Ethernet Network Adapter 4c52 2212 LRES2212PF Single-port 1Gb Ethernet Network Adapter 4c52 2213 LRES2213PF Single-port 1Gb Ethernet Network Adapter 4c52 6230 LREC6230PF Single-port 1Gb Ethernet Network Adapter 1537 I210 Gigabit Backplane Connection 1059 0110 T4005 1GbE interface 1059 0111 T4007 1GbE interface 1059 0120 T4008 1GbE interface 1059 0130 T4009 1GbE interface 1059 0140 T2035 1GbE interface 1059 0150 RD-01068 1GbE interface 1059 0170 RD-01213 10GbE interface 1538 I210 Gigabit Network Connection 1539 I211 Gigabit Network Connection 153a Ethernet Connection I217-LM 103c 1909 ZBook 15 103c 1998 EliteDesk 800 G1 17aa 220e ThinkPad T440p 17aa 309f ThinkCentre M83 153b Ethernet Connection I217-V 1547 DSL3510 Thunderbolt Controller [Cactus Ridge 4C 2012] 1548 DSL3310 Thunderbolt Controller [Cactus Ridge 2C 2012] 1549 DSL2210 Thunderbolt Controller [Port Ridge 1C 2011] 154a Ethernet Server Adapter X520-4 8086 011a Ethernet Converged Network Adapter X520-4 8086 011b Ethernet Converged Network Adapter X520-4 8086 011c Ethernet Converged Network Adapter X520-4 154c Ethernet Virtual Function 700 Series 154d Ethernet 10G 2P X520 Adapter 8086 7b11 10GbE 2P X520 Adapter 1557 82599 10 Gigabit Network Connection 17aa 4008 82599EN 10 Gigabit Network Connection 1bd4 001c 10G SFP+ SP ER101Fi4 Rack Adapter 1bd4 0030 10G SFP+ SP EP101Fi4A Adapter 8086 0001 Ethernet OCP Server Adapter X520-1 1558 Ethernet Converged Network Adapter X520-Q1 8086 011a Ethernet Converged Network Adapter X520-Q1 8086 011b Ethernet Converged Network Adapter X520-Q1 1559 Ethernet Connection I218-V 155a Ethernet Connection I218-LM 17aa 2214 ThinkPad X240 155c Ethernet Server Bypass Adapter 8086 0001 Ethernet Server Bypass Adapter X540-T2 155d Ethernet Server Bypass Adapter 8086 0001 Ethernet Server Bypass Adapter X520-SR2 8086 0002 Ethernet Server Bypass Adapter X520-LR2 1560 Ethernet Controller X540 4c52 9801 LREC9801BT Single-port 10Gb Ethernet Network Adapter 1563 Ethernet Controller X550 1028 1fa8 Ethernet 10G 4P X550/I350 rNDC 1028 1fa9 Ethernet 10G 4P X550 rNDC 1137 02b2 X550-TX 10 Gig LOM 1137 02b3 X550-TX 10 Gig LOM 1170 0001 Intel Ethernet Controller X550-T2 OCP card 14c0 1201 X550 10Gb 2P RJ45 OCP Mezz 1590 00d1 Ethernet 10Gb 2-port 562T Adapter 1590 00d2 Ethernet 10Gb 2-port 562FLR-T Adapter 16b8 7217 Twin10G Thunderbolt 3 Edition 18d4 0c08 X550 10Gb 2-port RJ45 OCP Mezz Card MOP81-I-10GT2 193d 1008 560T-B 193d 1009 560T-L 193d 1011 UN-NIC-ETH563T-sL-2P 4c52 1025 LRES1025PT Dual-port 10Gb Ethernet Network Adapter 4c52 9812 LREC9812BT Dual-port 10Gb Ethernet Network Adapter 8086 0001 Ethernet Converged Network Adapter X550-T2 8086 001a Ethernet Converged Network Adapter X550-T2 8086 001b Ethernet Server Adapter X550-T2 for OCP 8086 001d Ethernet 10G 2P X550-t Adapter 8086 0022 Ethernet Converged Network Adapter X550-T2 1564 X550 Virtual Function 1565 X550 Virtual Function 1566 DSL4410 Thunderbolt NHI [Redwood Ridge 2C 2013] 1567 DSL4410 Thunderbolt Bridge [Redwood Ridge 2C 2013] 1568 DSL4510 Thunderbolt NHI [Redwood Ridge 4C 2013] 1569 DSL4510 Thunderbolt Bridge [Redwood Ridge 4C 2013] 156a DSL5320 Thunderbolt 2 NHI [Falcon Ridge 2C 2013] 156b DSL5320 Thunderbolt 2 Bridge [Falcon Ridge 2C 2013] 156c DSL5520 Thunderbolt 2 NHI [Falcon Ridge 4C 2013] 156d DSL5520 Thunderbolt 2 Bridge [Falcon Ridge 4C 2013] 156f Ethernet Connection I219-LM 1028 06dc Latitude E7470 103c 8079 EliteBook 840 G3 17aa 2247 ThinkPad T570 1570 Ethernet Connection I219-V 1571 Ethernet Virtual Function 700 Series 1572 Ethernet Controller X710 for 10GbE SFP+ 1028 0000 Ethernet 10G X710 rNDC 1028 1f99 Ethernet 10G 4P X710/I350 rNDC 1028 1f9c Ethernet 10G 4P X710 SFP+ rNDC 103c 0000 Ethernet 10Gb 562SFP+ Adapter 103c 22fc Ethernet 10Gb 2-port 562FLR-SFP+ Adapter 103c 22fd Ethernet 10Gb 2-port 562SFP+ Adapter 1137 0000 Ethernet Converged NIC X710-DA 1137 013b Ethernet Converged NIC X710-DA4 1137 020a Ethernet Converged NIC X710-DA2 1590 0000 Ethernet Controller X710 for 10GbE SFP+ 1590 0225 Ethernet 10GbE 4P 563SFP+ Adapter 1590 022f Ethernet 10Gb 2-port 564i Communication Board 17aa 0000 ThinkServer X710 AnyFabric for 10GbE SFP+ 17aa 4001 ThinkServer X710-4 AnyFabric for 10GbE SFP+ 17aa 4002 ThinkServer X710-2 AnyFabric for 10GbE SFP+ 193d 1020 NIC-ETH561F-sL-4x10G 193d 1021 NIC-ETH561F-sL-2x10G # NIC-ETH561F-3S-2P OCP3.0 2x10G SFP+ Card 193d 1081 NIC-ETH561F-3S-2P 19e5 d11c Ethernet 2-port X710 10Gb SFP+ Adapter SP330 1bd4 0042 10G SFP+ DP EP102Fi4 Adapter 1bd4 0056 Ethernet Network Adapter X710-BM2 for OCP NIC 3.0 1bd4 0065 F102IX710 1bd4 0074 Ethernet Network Adapter X710-BM2 for lldp 1bd4 008b F102IX710 4c52 3003 LRES3003PF Quad-port 10Gb Ethernet Server Adapter for OCP 4c52 3007 LRES3007PF Quad-port 10Gb Ethernet Server Adapter for OCP 4c52 3039 LRES3039PF Dual-port 10Gb Ethernet Server Adapter for OCP 4c52 9804 LREC9804BF Quad-port 10Gb Ethernet Server Adapter 4c52 9812 LREC9812BF Dual-port 10Gb Ethernet Server Adapter 8086 0000 Ethernet Converged Network Adapter X710 8086 0001 Ethernet Converged Network Adapter X710-4 8086 0002 Ethernet Converged Network Adapter X710-4 8086 0004 Ethernet Converged Network Adapter X710-4 8086 0005 Ethernet Converged Network Adapter X710 8086 0006 Ethernet Converged Network Adapter X710 8086 0007 Ethernet Converged Network Adapter X710-2 8086 0008 Ethernet Converged Network Adapter X710-2 8086 0009 Ethernet Controller X710 for 10GbE SFP+ 8086 000a Ethernet Controller X710 for 10GbE SFP+ 8086 000b Ethernet Server Adapter X710-DA2 for OCP 8086 000d Ethernet Controller X710 for 10GbE SFP+ 8086 000e Ethernet Server Adapter OCP X710-2 8086 000f Ethernet Server Adapter OCP X710-2 8086 0010 Ethernet Converged Network Adapter X710 8086 0011 Ethernet Network Adapter X710-2 for OCP NIC 3.0 8086 0012 Ethernet Network Adapter X710-4 for OCP NIC 3.0 8086 0013 Ethernet 10G 2P X710 OCP 8086 0014 Ethernet 10G 4P X710 OCP 8086 0015 Ethernet Server Adapter X710-DA2 for OCP 8086 00a1 Ethernet Network Adapter X710-2 for OCP NIC 3.0 8086 00a2 Ethernet Network Adapter X710-4 for OCP NIC 3.0 8086 4005 Ethernet Controller X710 for 10GbE SFP+ 8086 4006 Ethernet Controller X710 for 10GbE SFP+ 8086 4007 Ethernet Controller X710 for 10GbE SFP+ 1574 Ethernet Controller XL710 Emulation 1575 DSL6340 Thunderbolt 3 NHI [Alpine Ridge 2C 2015] 1576 DSL6340 Thunderbolt 3 Bridge [Alpine Ridge 2C 2015] 1577 DSL6540 Thunderbolt 3 NHI [Alpine Ridge 4C 2015] 1578 DSL6540 Thunderbolt 3 Bridge [Alpine Ridge 4C 2015] 157b I210 Gigabit Network Connection ea50 cc10 RXi2-BP 157c I210 Gigabit Backplane Connection 157d DSL5110 Thunderbolt 2 NHI (Low Power) [Win Ridge 2C 2014] 157e DSL5110 Thunderbolt 2 Bridge (Low Power) [Win Ridge 2C 2014] 1580 Ethernet Controller XL710 for 40GbE backplane 1581 Ethernet Controller X710 for 10GbE backplane 1028 0000 Ethernet 10G X710-k bNDC 1028 1f98 Ethernet 10G 4P X710-k bNDC 1028 1f9e Ethernet 10G 2P X710-k bNDC 1059 0150 RD-01068 10GbE-KR interface 1059 0170 RD-01213 10GbE interface 1590 0000 Ethernet 2-port 563i Adapter 1590 00f8 Ethernet 2-port 563i Adapter 193d 100e NIC-ETH561i-Mb-4x10G 8086 0000 Ethernet Converged Network Adapter XL710-Q2 1583 Ethernet Controller XL710 for 40GbE QSFP+ 1028 0000 Ethernet 40G 2P XL710 QSFP+ rNDC 1028 1f9f Ethernet 40G 2P XL710 QSFP+ rNDC 108e 0000 10 Gb/40 Gb Ethernet Adapter 108e 7b1b 10 Gb/40 Gb Ethernet Adapter 108e 7b1d 10Gb/40Gb Ethernet Adapter 1137 0000 Ethernet Converged NIC XL710-QDA2 1137 013c Ethernet Converged NIC XL710-QDA2 4c52 3042 LRES3042PF Dual-port 40Gb Ethernet Server Adapter for OCP 4c52 9902 LREC9902BF Dual-port 40Gb Ethernet Server Adapter 8086 0000 Ethernet Converged Network Adapter XL710-Q2 8086 0001 Ethernet Converged Network Adapter XL710-Q2 8086 0002 Ethernet Converged Network Adapter XL710-Q2 8086 0003 Ethernet I/O Module XL710-Q2 8086 0004 Ethernet Server Adapter XL710-Q2OCP 8086 0006 Ethernet Converged Network Adapter XL710-Q2 1584 Ethernet Controller XL710 for 40GbE QSFP+ 4c52 9901 LREC9901BF Single-port 40Gb Ethernet Server Adapter 8086 0000 Ethernet Converged Network Adapter XL710-Q1 8086 0001 Ethernet Converged Network Adapter XL710-Q1 8086 0002 Ethernet Converged Network Adapter XL710-Q1 8086 0003 Ethernet I/O Module XL710-Q1 8086 0004 Ethernet Server Adapter XL710-Q1OCP 1585 Ethernet Controller X710 for 10GbE QSFP+ 1586 Ethernet Controller X710 for 10GBASE-T 108e 0000 Ethernet Controller X710 for 10GBASE-T 108e 4857 Ethernet Controller X710 for 10GBASE-T 1587 Ethernet Controller XL710 for 20GbE backplane 103c 0000 Ethernet 10/20Gb 2-port 660FLB Adapter 103c 22fe Ethernet 10/20Gb 2-port 660FLB Adapter 1588 Ethernet Controller XL710 for 20GbE backplane 103c 0000 Ethernet 10/20Gb 2-port 660M Adapter 103c 22ff Ethernet 10/20Gb 2-port 660M Adapter 1137 0000 Ethernet Network Adapter XXV710 1137 02b4 Ethernet Network Adapter XXV710 OCP 2.0 1589 Ethernet Controller X710/X557-AT 10GBASE-T 108e 0000 Quad Port 10GBase-T Adapter 108e 7b1c Quad Port 10GBase-T Adapter 4c52 9804 LREC9804BT Quad-port 10Gb Ethernet Network Adapter 8086 0000 Ethernet Converged Network Adapter X710-T 8086 0001 Ethernet Converged Network Adapter X710-T4 8086 0002 Ethernet Converged Network Adapter X710-T4 8086 0003 Ethernet Converged Network Adapter X710-T 8086 00a0 Ethernet Converged Network Adapter X710-T4 8086 1003 Ethernet Converged Network Adapter X710-T 158a Ethernet Controller XXV710 for 25GbE backplane 1590 0000 10/25Gb Ethernet Adapter 1590 0286 Synergy 4610C 10/25Gb Ethernet Adapter 8086 0000 Ethernet Controller XXV710 for 25GbE backplane 8086 000a Ethernet 25G 2P XXV710 Mezz 158b Ethernet Controller XXV710 for 25GbE SFP28 1137 0000 Ethernet Network Adapter XXV710 1137 0225 Ethernet Network Adapter XXV710 1137 02b4 Ethernet Network Adapter XXV710 OCP 2.0 # UEFI PXE Disabled 1374 0230 Single Port 25 Gigabit Ethernet PCI Express Server Adapter (PE325G1I71) # With UEFI PXE Enabled 1374 0231 Single Port 25 Gigabit Ethernet PCI Express Server Adapter (PE325G1I71EU) # UEFI PXE Disabled 1374 0234 Dual Port 25 Gigabit Ethernet PCI Express Server Adapter (PE325G2I71) # With UEFI PXE Enabled 1374 0235 Dual Port 25 Gigabit Ethernet PCI Express Server Adapter (PE325G2I71EU) # PCIe x8 Bifurcated as x4x4, UEFI PXE Disabled, low profile 1374 0238 Quad Port 25 Gigabit Ethernet PCI Express Server Adapter (PE325G4I71L) # PCIe x8 Bifurcated as x4x4, UEFI PXE Enabled, low profile 1374 0239 Quad Port 25 Gigabit Ethernet PCI Express Server Adapter (PE325G4I71LEU) # PCIe x16 Bifurcated as x8x8, UEFI PXE Disabled, low profile 1374 023a Quad Port 25 Gigabit Ethernet PCI Express Server Adapter (PE31625G4I71L) # PCIe x16 Bifurcated as x8x8, UEFI PXE Enabled, low profile 1374 023b Quad Port 25 Gigabit Ethernet PCI Express Server Adapter (PE31625G4I71LEU) 1590 0000 Ethernet Network Adapter XXV710-2 1590 0253 Ethernet 10/25/Gb 2-port 661SFP28 Adapter 4c52 3017 LRES3017PF Dual-port 25Gb Ethernet Server Adapter for OCP 8086 0000 Ethernet Network Adapter XXV710 8086 0001 Ethernet Network Adapter XXV710-2 8086 0002 Ethernet Network Adapter XXV710-2 8086 0003 Ethernet Network Adapter XXV710-1 8086 0004 Ethernet Network Adapter XXV710-1 8086 0005 Ethernet Network Adapter OCP XXV710-2 8086 0006 Ethernet Network Adapter OCP XXV710-2 8086 0007 Ethernet Network Adapter OCP XXV710-1 8086 0008 Ethernet Network Adapter OCP XXV710-1 8086 0009 Ethernet 25G 2P XXV710 Adapter 8086 000a Ethernet 25G 2P XXV710 OCP 8086 000c Ethernet Network Adapter XXV710-DA2 for OCP 3.0 8086 000d Ethernet 25G 2P XXV710 OCP 8086 4001 Ethernet Network Adapter XXV710-2 1591 Ethernet Controller E810-C for backplane 8086 bcce Ethernet Controller E810-C for Intel(R) Open FPGA Stack 1592 Ethernet Controller E810-C for QSFP 1137 02bf E810CQDA2 2x100 GbE QSFP28 PCIe NIC 193d 1050 NIC-ETH1060F-LP-2P 2x100GbE Ethernet PCIe Card 4c52 1014 LRES1014PF Dual-port 100Gb Ethernet Server Adapter 4c52 3026 LRES3026PF Dual-port 100Gb Ethernet Server Adapter for OCP 8086 0001 Ethernet Network Adapter E810-C-Q1 8086 0002 Ethernet Network Adapter E810-C-Q2 8086 0004 Ethernet Network Adapter E810-C-Q2 8086 0005 Ethernet Network Adapter E810-C-Q1 for OCP3.0 8086 0006 Ethernet Network Adapter E810-C-Q2 for OCP3.0 8086 0009 Ethernet Network Adapter E810-C-Q1 8086 000a Ethernet Network Adapter E810-C-Q1 for OCP 8086 000b Ethernet 100G 2P E810-C Adapter 8086 000c Ethernet 100G 2P E810-C OCP 8086 000d Ethernet Network Adapter E810-L-Q2 for OCP 3.0 8086 000e Ethernet Network Adapter E810-2C-Q2 8086 000f Ethernet Network Adapter E810-C-Q2T 8086 0010 Ethernet 100G 2P E810-C-stg Adapter 8086 0011 Ethernet Network Adapter E810-C-Q1 for OCP3.0 8086 0012 Ethernet 100G 2P E810-C-st Adapter 8086 0013 Ethernet Network Adapter E810-C-Q1 for OCP 3.0 8086 0014 Ethernet 100G 2P E810-2C Adapter 1593 Ethernet Controller E810-C for SFP 1137 02c3 E810XXVDA4 4x25/10 GbE SFP28 PCIe NIC 1137 02e9 E810XXVDA4TG 4x25/10 GbE SFP28 PCIe NIC 1137 02ea E810XXVDA4T 4x25/10 GbE SFP28 PCIe NIC 4c52 1023 LRES1023PF Quad-port 25Gb Ethernet Server Adapter 4c52 3027 LRES3027PF Quad-port 25Gb Ethernet Server Adapter for OCP 8086 0002 Ethernet Network Adapter E810-L-2 8086 0005 Ethernet Network Adapter E810-XXV-4 8086 0006 Ethernet Network Adapter E810-XXV-4 8086 0007 Ethernet Network Adapter E810-XXV-4 8086 0008 Ethernet Network Adapter E810-XXV-2 8086 0009 Ethernet Network Adapter E810-XXV-2 for OCP 2.0 8086 000a Ethernet 25G 4P E810-XXV Adapter 8086 000c Ethernet Network Adapter E810-XXV-4 for OCP 3.0 8086 000d Ethernet 25G 4P E810-XXV OCP 8086 000e Ethernet Network Adapter E810-XXV-4T 8086 000f Ethernet 25G 4P E810-XXV-stg Adapter 8086 0010 Ethernet 25G 4P E810-XXV-st Adapter 8086 4010 Ethernet Network Adapter E810-XXV-4 8086 4013 Ethernet Network Adapter E810-XXV-4 for OCP 3.0 8086 401c Ethernet Network Adapter E810-XXV-4 for OCP 3.0 1599 Ethernet Controller E810-XXV for backplane 8086 0001 Ethernet 25G 2P E810-XXV-k Mezz 159a Ethernet Controller E810-XXV for QSFP 159b Ethernet Controller E810-XXV for SFP 1137 02be E810XXVDA2 2x25/10 GbE SFP28 PCIe NIC # NIC-ETH660F-3S-2P 2x25GbE SFP28 Network Adapter for OCP 3.0 193d 1085 NIC-ETH660F-3S-2P 1bd4 0057 Ethernet Network Adapter E810-XXVAM2 1bd4 0058 Ethernet Network Adapter E810-XXVAM2 for OCP 3.0 1bd4 006e Ethernet Network Adapter E810-XXVAM2 for BD 1bd4 0083 Ethernet Network Adapter E810-XXVAM2 for lldp 1bd4 00a0 S252IE810 1eec 0102 VSE-225-41E Dual-port 10Gb/25Gb Etherent PCIe 4c52 0003 LRES1021PF Dual-port 25Gb Ethernet Server Adapter 4c52 3029 LRES3029PF Dual-port 25Gb Ethernet Server Adapter for OCP 8086 0001 Ethernet 25G 2P E810-XXV OCP 8086 0002 Ethernet 25G 2P E810-XXV Adapter 8086 0003 Ethernet Network Adapter E810-XXV-2 8086 0005 Ethernet Network Adapter E810-XXV-2 for OCP 3.0 8086 4001 Ethernet Network Adapter E810-XXV-2 8086 4002 Ethernet Network Adapter E810-XXV-2 for OCP 3.0 8086 4003 Ethernet Network Adapter E810-XXV-2 8086 4015 Ethernet Network Adapter E810-XXV-2 for OCP 3.0 15a0 Ethernet Connection (2) I218-LM 15a1 Ethernet Connection (2) I218-V 15a2 Ethernet Connection (3) I218-LM 15a3 Ethernet Connection (3) I218-V 15a4 Ethernet Switch FM10000 Host Interface 15a5 Ethernet Switch FM10000 Host Virtual Interface 15a8 Ethernet Connection X552 Virtual Function 15a9 X552 Virtual Function 15aa Ethernet Connection X552 10 GbE Backplane 1059 0120 T4008 10GbE interface 15ab Ethernet Connection X552 10 GbE Backplane 1059 0150 RD-01068 10GbE interface 1059 0170 RD-01213 10GbE interface 15ac Ethernet Connection X552 10 GbE SFP+ 1059 0160 RD-01167 10GbE interface 15ad Ethernet Connection X552/X557-AT 10GBASE-T 15ae Ethernet Connection X552 1000BASE-T 15b0 Ethernet Connection X552 Backplane 15b4 X553 Virtual Function 15b5 DSL6340 USB 3.1 Controller [Alpine Ridge] 15b6 DSL6540 USB 3.1 Controller [Alpine Ridge] 15b7 Ethernet Connection (2) I219-LM 15b8 Ethernet Connection (2) I219-V 1462 7994 H110M ECO/GAMING 1462 7a72 H270 PC MATE 15b9 Ethernet Connection (3) I219-LM 15bb Ethernet Connection (7) I219-LM 15bc Ethernet Connection (7) I219-V 15bd Ethernet Connection (6) I219-LM 15be Ethernet Connection (6) I219-V 15bf JHL6240 Thunderbolt 3 NHI (Low Power) [Alpine Ridge LP 2016] 15c0 JHL6240 Thunderbolt 3 Bridge (Low Power) [Alpine Ridge LP 2016] 15c1 JHL6240 Thunderbolt 3 USB 3.1 Controller (Low Power) [Alpine Ridge LP 2016] 15c2 Ethernet Connection X553 Backplane 15c3 Ethernet Connection X553 Backplane 15c4 Ethernet Connection X553 10 GbE SFP+ 15c5 X553 Virtual Function 15c6 Ethernet Connection X553 1GbE 15c7 Ethernet Connection X553 1GbE 15c8 Ethernet Connection X553/X557-AT 10GBASE-T 15ce Ethernet Connection X553 10 GbE SFP+ 15d0 Ethernet SDI Adapter 8086 0001 Ethernet SDI Adapter FM10420-100GbE-QDA2 8086 0002 Ethernet SDI Adapter FM10840-MTP2 15d1 Ethernet Controller 10G X550T 4c52 9811 LREC9811BT Single-port 10Gb Ethernet Network Adapter 8086 0002 Ethernet Converged Network Adapter X550-T1 8086 001b Ethernet Server Adapter X550-T1 for OCP 8086 0021 Ethernet Converged Network Adapter X550-T1 8086 00a2 Ethernet Converged Network Adapter X550-T1 15d2 JHL6540 Thunderbolt 3 NHI (C step) [Alpine Ridge 4C 2016] 15d3 JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016] 15d4 JHL6540 Thunderbolt 3 USB Controller (C step) [Alpine Ridge 4C 2016] 15d5 Ethernet SDI Adapter FM10420-25GbE-DA2 8086 0001 Ethernet SDI Adapter FM10420-25GbE-DA2 15d6 Ethernet Connection (5) I219-V 15d7 Ethernet Connection (4) I219-LM 15d8 Ethernet Connection (4) I219-V 17aa 2247 ThinkPad T570 17aa 224f ThinkPad X1 Carbon 5th Gen 17aa 225d ThinkPad T480 15d9 JHL6340 Thunderbolt 3 NHI (C step) [Alpine Ridge 2C 2016] 15da JHL6340 Thunderbolt 3 Bridge (C step) [Alpine Ridge 2C 2016] 15db JHL6340 Thunderbolt 3 USB 3.1 Controller (C step) [Alpine Ridge 2C 2016] 15df Ethernet Connection (8) I219-LM 15e0 Ethernet Connection (8) I219-V 15e1 Ethernet Connection (9) I219-LM 15e2 Ethernet Connection (9) I219-V 15e3 Ethernet Connection (5) I219-LM 15e4 Ethernet Connection X553 1GbE 15e5 Ethernet Connection X553 1GbE 15e7 JHL7540 Thunderbolt 3 Bridge [Titan Ridge 2C 2018] 15e8 JHL7540 Thunderbolt 3 NHI [Titan Ridge 2C 2018] 15e9 JHL7540 Thunderbolt 3 USB Controller [Titan Ridge 2C 2018] 15ea JHL7540 Thunderbolt 3 Bridge [Titan Ridge 4C 2018] 15eb JHL7540 Thunderbolt 3 NHI [Titan Ridge 4C 2018] 1028 09be Latitude 7410 15ec JHL7540 Thunderbolt 3 USB Controller [Titan Ridge 4C 2018] 1028 09be Latitude 7410 15ef JHL7540 Thunderbolt 3 Bridge [Titan Ridge DD 2018] 15f0 JHL7540 Thunderbolt 3 USB Controller [Titan Ridge DD 2018] 15f2 Ethernet Controller I225-LM 4c52 2031 LRES2031PT Single-port 2.5Gb Ethernet Network Adapter 8086 0001 Ethernet Network Adapter I225-T1 8086 0002 Ethernet Network Adapter I225-T1 15f3 Ethernet Controller I225-V 4c52 2031 LRES2031PT Single-port 2.5Gb Ethernet Network Adapter 8086 0003 Intel(R) Ethernet Controller (3) I225-V 15f4 Ethernet Connection (15) I219-LM 15f5 Ethernet Connection (15) I219-V 15f6 I210 Gigabit Ethernet Connection 15f9 Ethernet Connection (14) I219-LM 15fa Ethernet Connection (14) I219-V 15fb Ethernet Connection (13) I219-LM 15fc Ethernet Connection (13) I219-V 15ff Ethernet Controller X710 for 10GBASE-T 1014 0000 PCIe3 4-port 10GbE Base-T Adapter 108e 7b1f Quad Port 10GBase-T Adapter - CP 1137 0000 X710TLG GbE RJ45 PCIe NIC 1137 02c1 X710T2LG 2x10 GbE RJ45 PCIe NIC 1137 02c2 X710T4LG 4x10 GbE RJ45 PCIe NIC 1137 02d9 Ethernet Network Adapter X710-T2L OCP 3.0 1137 02da Ethernet Network Adapter X710-T4L OCP 3.0 # NIC-ETH565T-3S-2P OCP3.0 2x10G Base-T Card 193d 1082 NIC-ETH565T-3S-2P 4c52 1012 LRES1012PT Dual-port 10Gb Ethernet Network Adapter 4c52 3021 LRES3021PT Dual-port 10Gb Ethernet Server Adapter for OCP 8086 0000 Ethernet Network Adapter X710-TL 8086 0001 Ethernet Network Adapter X710-T4L 8086 0002 Ethernet Network Adapter X710-T4L 8086 0003 Ethernet Network Adapter X710-T2L 8086 0004 Ethernet Network Adapter X710-T2L 8086 0005 Ethernet 10G 2P X710-T2L-t Adapter 8086 0006 Ethernet 10G 4P X710-T4L-t Adapter 8086 0007 Ethernet 10G 2P X710-T2L-t OCP 8086 0008 Ethernet 10G 4P X710-T4L-t OCP 8086 0009 Ethernet Network Adapter X710-T4L for OCP 3.0 8086 000a Ethernet Network Adapter X710-T4L for OCP 3.0 8086 000b Ethernet Network Adapter X710-T2L for OCP 3.0 8086 000c Ethernet Network Adapter X710-T2L for OCP 3.0 8086 000d Ethernet 10G 2P X710-T2L-t OCP 8086 000f Ethernet Network Adapter X710-T2L for OCP 3.0 8086 4009 Ethernet Network Adapter X710-T2L 8086 4012 Ethernet Network Adapter X710-T4L for OCP 3.0 8086 4018 Ethernet Network Adapter X710-T2L for OCP 3.0 8086 4019 Ethernet Network Adapter X710-T4L 1600 Broadwell-U Host Bridge -OPI 1601 Broadwell-U PCI Express x16 Controller 1602 Broadwell-U Integrated Graphics 1603 Broadwell-U Processor Thermal Subsystem 1604 Broadwell-U Host Bridge -OPI 1605 Broadwell-U PCI Express x8 Controller 1606 HD Graphics 1607 Broadwell-U CHAPS Device 1608 Broadwell-U Host Bridge -OPI 1609 Broadwell-U x4 PCIe 160a Broadwell-U Integrated Graphics 160b Broadwell-U Integrated Graphics 160c Broadwell-U Audio Controller 160d Broadwell-U Integrated Graphics 160e Broadwell-U Integrated Graphics 160f Broadwell-U SoftSKU 1610 Broadwell-U Host Bridge - DMI 1612 HD Graphics 5600 1614 Broadwell-U Host Bridge - DMI 1616 HD Graphics 5500 103c 2216 ZBook 15u G2 Mobile Workstation 1618 Broadwell-U Host Bridge - DMI 161a Broadwell-U Integrated Graphics 161b Broadwell-U Integrated Graphics 161d Broadwell-U Integrated Graphics 161e HD Graphics 5300 1622 Iris Pro Graphics 6200 1626 HD Graphics 6000 162a Iris Pro Graphics P6300 162b Iris Graphics 6100 162d Broadwell-U Integrated Graphics 162e Broadwell-U Integrated Graphics 1632 Broadwell-U Integrated Graphics 1636 Broadwell-U Integrated Graphics 163a Broadwell-U Integrated Graphics 163b Broadwell-U Integrated Graphics 163d Broadwell-U Integrated Graphics 163e Broadwell-U Integrated Graphics 1889 Ethernet Adaptive Virtual Function 188a Ethernet Connection E823-C for backplane 188b Ethernet Connection E823-C for QSFP 188c Ethernet Connection E823-C for SFP 1028 0abd Ethernet Connection 25G 4P E823-C LOM 17aa 405e E823 25G/10G Ethernet LOM Controller 188d Ethernet Connection E823-C/X557-AT 10GBASE-T 188e Ethernet Connection E823-C 1GbE 17aa 405f E823 1G Ethernet LOM Controller 1890 Ethernet Connection E822-C for backplane 1891 Ethernet Connection E822-C for QSFP 1892 Ethernet Connection E822-C for SFP 1893 Ethernet Connection E822-C/X557-AT 10GBASE-T 1894 Ethernet Connection E822-C 1GbE 1897 Ethernet Connection E822-L for backplane 1898 Ethernet Connection E822-L for SFP 1899 Ethernet Connection E822-L/X557-AT 10GBASE-T 189a Ethernet Connection E822-L 1GbE 18a0 Atom Processor P5xxx Series QAT 18a1 C4XXX Series QAT Virtual Function 18b3 Atom Processor P5xxx Series SATA Controller 18d0 Atom Processor P5xxx Series USB xHCI Controller 18d3 Atom Processor P5xxx Series MEI Controller 18d6 Atom Processor P5xxx Series MEI Controller 18df Atom Processor P5xxx Series SMBus Controller 18e0 Atom Processor P5xxx Series SPI Controller 18e1 Atom Processor P5xxx Series Trace Hub 18ee 200xx Series QAT 18ef 200xx Series QAT Virtual Function 18f3 Atom Processor P5xxx Series SATA Controller 1900 Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers 1901 6th-10th Gen Core Processor PCIe Controller (x16) 1902 HD Graphics 510 1903 Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Thermal Subsystem 1028 06d6 Latitude 7275 tablet 1028 06dc Latitude E7470 1028 06e4 XPS 15 9550 1028 06e6 Latitude 11 5175 2-in-1 1028 09be Latitude 7410 103c 825b OMEN-17-w001nv 17aa 225d ThinkPad T480 1904 Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers 1028 06dc Latitude E7470 1028 06f3 Latitude 3570 103c 8079 EliteBook 840 G3 17aa 2247 ThinkPad T570 17aa 382a B51-80 Laptop 1905 Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor PCIe Controller (x8) 1906 HD Graphics 510 17aa 382a B51-80 Laptop 1908 Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers 1909 Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor PCIe Controller (x4) 190b HD Graphics 510 190c Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers 1028 06d6 Latitude 7275 tablet 1028 06e6 Latitude 11 5175 2-in-1 190f Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers 1910 Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers 1028 06e4 XPS 15 9550 103c 825b OMEN-17-w001nv 1911 Xeon E3-1200 v5/v6 / E3-1500 v5 / 6th/7th/8th Gen Core Processor Gaussian Mixture Model 1028 0869 Vostro 3470 1028 09be Latitude 7410 1462 7994 H110M ECO/GAMING 1462 7a72 H270 PC MATE 17aa 2247 ThinkPad T570 17aa 224f ThinkPad X1 Carbon 5th Gen 17aa 225d ThinkPad T480 1912 HD Graphics 530 1916 Skylake GT2 [HD Graphics 520] 1028 06dc Latitude E7470 1028 06f3 Latitude 3570 103c 8079 EliteBook 840 G3 17aa 2247 ThinkPad T570 1918 Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers 1919 Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Imaging Unit 1028 06d6 Latitude 7275 tablet 1028 06e6 Latitude 11 5175 2-in-1 191b HD Graphics 530 1028 06e4 XPS 15 9550 103c 825b OMEN-17-w001nv 191d HD Graphics P530 191e HD Graphics 515 1028 06d6 Latitude 7275 tablet 1028 06e6 Latitude 11 5175 2-in-1 191f Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers 1921 HD Graphics 520 1923 HD Graphics 535 1926 Iris Graphics 540 1927 Iris Graphics 550 192b Iris Graphics 555 192d Iris Graphics P555 1932 Iris Pro Graphics 580 193a Iris Pro Graphics P580 193b Iris Pro Graphics 580 193d Iris Pro Graphics P580 1960 80960RP (i960RP) Microprocessor 101e 0431 MegaRAID 431 RAID Controller 101e 0438 MegaRAID 438 Ultra2 LVD RAID Controller 101e 0466 MegaRAID 466 Express Plus RAID Controller 101e 0467 MegaRAID 467 Enterprise 1500 RAID Controller 101e 0490 MegaRAID 490 Express 300 RAID Controller 101e 0762 MegaRAID 762 Express RAID Controller 101e 09a0 PowerEdge Expandable RAID Controller 2/SC 1028 0467 PowerEdge Expandable RAID Controller 2/DC 1028 1111 PowerEdge Expandable RAID Controller 2/SC 103c 03a2 MegaRAID 103c 10c6 MegaRAID 438, NetRAID-3Si 103c 10c7 MegaRAID T5, Integrated NetRAID 103c 10cc MegaRAID, Integrated NetRAID 103c 10cd NetRAID-1Si 105a 0000 SuperTrak 105a 2168 SuperTrak Pro 105a 5168 SuperTrak66/100 1111 1111 MegaRAID 466, PowerEdge Expandable RAID Controller 2/SC 1111 1112 PowerEdge Expandable RAID Controller 2/SC 113c 03a2 MegaRAID e4bf 1010 CG1-RADIO e4bf 1020 CU2-QUARTET e4bf 1040 CU1-CHORUS e4bf 3100 CX1-BAND 1962 80960RM (i960RM) Microprocessor 105a 0000 SuperTrak SX6000 I2O CPU 1964 80960RN (i960RN) Microprocessor 1980 Atom Processor C3000 Series System Agent 19a1 Atom Processor C3000 Series Error Registers 19a2 Atom Processor C3000 Series Root Complex Event Collector 19a3 Atom Processor C3000 Series Integrated QAT Root Port 19a4 Atom Processor C3000 Series PCI Express Root Port #0 19a5 Atom Processor C3000 Series PCI Express Root Port #1 19a6 Atom Processor C3000 Series PCI Express Root Port #2 19a7 Atom Processor C3000 Series PCI Express Root Port #3 19a8 Atom Processor C3000 Series PCI Express Root Port #4 19a9 Atom Processor C3000 Series PCI Express Root Port #5 19aa Atom Processor C3000 Series PCI Express Root Port #6 19ab Atom Processor C3000 Series PCI Express Root Port #7 19ac Atom Processor C3000 Series SMBus Contoller - Host 19b0 Atom Processor C3000 Series SATA Controller 0 19b1 Atom Processor C3000 Series SATA Controller 0 19b2 Atom Processor C3000 Series SATA Controller 0 19b3 Atom Processor C3000 Series SATA Controller 0 19b4 Atom Processor C3000 Series SATA Controller 0 19b5 Atom Processor C3000 Series SATA Controller 0 19b6 Atom Processor C3000 Series SATA Controller 0 19b7 Atom Processor C3000 Series SATA Controller 0 19be Atom Processor C3000 Series SATA Controller 0 19bf Atom Processor C3000 Series SATA Controller 0 19c0 Atom Processor C3000 Series SATA Controller 1 19c1 Atom Processor C3000 Series SATA Controller 1 19c2 Atom Processor C3000 Series SATA Controller 1 19c3 Atom Processor C3000 Series SATA Controller 1 19c4 Atom Processor C3000 Series SATA Controller 1 19c5 Atom Processor C3000 Series SATA Controller 1 19c6 Atom Processor C3000 Series SATA Controller 1 19c7 Atom Processor C3000 Series SATA Controller 1 19ce Atom Processor C3000 Series SATA Controller 1 19cf Atom Processor C3000 Series SATA Controller 1 19d0 Atom Processor C3000 Series USB 3.0 xHCI Controller 19d1 Atom Processor C3000 Series Integrated LAN Root Port #0 19d2 Atom Processor C3000 Series Integrated LAN Root Port #1 19d3 Atom Processor C3000 Series ME HECI 1 19d4 Atom Processor C3000 Series ME HECI 2 19d5 Atom Processor C3000 Series ME KT Controller 19d6 Atom Processor C3000 Series ME HECI 3 19d8 Atom Processor C3000 Series HSUART Controller 19db Atom Processor C3000 Series SD Host Controller 19dc Atom Processor C3000 Series LPC or eSPI 19dd Atom Processor C3000 Series Primary to Side Band (P2SB) Bridge 19de Atom Processor C3000 Series Power Management Controller 19df Atom Processor C3000 Series SMBus controller 19e0 Atom Processor C3000 Series SPI Controller 19e2 Atom Processor C3000 Series QuickAssist Technology 19e3 Atom Processor C3000 Series QuickAssist Technology Virtual Function 1a1c Ethernet Connection (17) I219-LM 1a1d Ethernet Connection (17) I219-V 1a1e Ethernet Connection (16) I219-LM 1028 0b10 Precision 3571 1a1f Ethernet Connection (16) I219-V 1a21 82840 840 [Carmel] Chipset Host Bridge (Hub A) 1a23 82840 840 [Carmel] Chipset AGP Bridge 1a24 82840 840 [Carmel] Chipset PCI Bridge (Hub B) 1a30 82845 845 [Brookdale] Chipset Host Bridge 1028 010e Optiplex GX240 147b 0505 BL7 motherboard 15d9 3280 Supermicro P4SBE Mainboard 1a31 82845 845 [Brookdale] Chipset AGP Bridge 1a38 5000 Series Chipset DMA Engine 15d9 8680 X7DVL-E-O motherboard 8086 3476 S5000PSLSATA Server Board 1a48 82597EX 10GbE Ethernet Controller 8086 a01f PRO/10GbE SR Server Adapter 8086 a11f PRO/10GbE SR Server Adapter 1b48 82597EX 10GbE Ethernet Controller 8086 a01f PRO/10GbE LR Server Adapter 8086 a11f PRO/10GbE LR Server Adapter # Also rebranded as Montage IOH M88IO3020 1bcd Emmitsburg (C740 Family) USB 3.2 Gen 1 xHCI Controller 1bd4 00a5 RS0800I5H16i 1bd2 Sapphire Rapids SATA AHCI Controller 1bf2 Sapphire Rapids SATA AHCI Controller 1c00 6 Series/C200 Series Chipset Family Desktop SATA Controller (IDE mode, ports 0-3) 1c01 6 Series/C200 Series Chipset Family Mobile SATA Controller (IDE mode, ports 0-3) 1c02 6 Series/C200 Series Chipset Family 6 port Desktop SATA AHCI Controller 1028 04aa XPS 8300 1043 844d P8 series motherboard 17aa 3070 ThinkCentre M91p 8086 200d DH61CR motherboard 8086 7270 Server Board S1200BT Family 1c03 6 Series/C200 Series Chipset Family 6 port Mobile SATA AHCI Controller 1028 04a3 Precision M4600 1028 04b2 Vostro 3350 1028 04da Vostro 3750 17aa 21cf ThinkPad T520 8086 7270 Apple MacBookPro8,2 [Core i7, 15", 2011] 1c04 6 Series/C200 Series Desktop SATA RAID Controller 103c 3118 Smart Array B110i SATA RAID Controller 1c05 6 Series/C200 Series Mobile SATA RAID Controller 1c06 Z68 Express Chipset SATA RAID Controller 1c08 6 Series/C200 Series Chipset Family Desktop SATA Controller (IDE mode, ports 4-5) 1c09 6 Series/C200 Series Chipset Family Mobile SATA Controller (IDE mode, ports 4-5) 1c10 6 Series/C200 Series Chipset Family PCI Express Root Port 1 1028 04aa XPS 8300 1028 04da Vostro 3750 1043 844d P8 series motherboard 17aa 21cf ThinkPad T520 8086 7270 Server Board S1200BTS / Apple MacBook Pro 8,1/8,2 1c12 6 Series/C200 Series Chipset Family PCI Express Root Port 2 1028 04aa XPS 8300 17aa 21cf ThinkPad T520 8086 7270 Apple MacBookPro8,2 [Core i7, 15", 2011] 1c14 6 Series/C200 Series Chipset Family PCI Express Root Port 3 1028 04da Vostro 3750 8086 7270 Apple MacBookPro8,2 [Core i7, 15", 2011] 1c16 6 Series/C200 Series Chipset Family PCI Express Root Port 4 1028 04aa XPS 8300 17aa 21cf ThinkPad T520 1c18 6 Series/C200 Series Chipset Family PCI Express Root Port 5 1028 04da Vostro 3750 17aa 21cf ThinkPad T520 8086 7270 Server Board S1200BTS 1c1a 6 Series/C200 Series Chipset Family PCI Express Root Port 6 1028 04da Vostro 3750 1043 844d P8 series motherboard 1c1c 6 Series/C200 Series Chipset Family PCI Express Root Port 7 1c1e 6 Series/C200 Series Chipset Family PCI Express Root Port 8 1043 844d P8 series motherboard 1c20 6 Series/C200 Series Chipset Family High Definition Audio Controller 1028 0490 Alienware M17x R3 1028 04a3 Precision M4600 1028 04aa XPS 8300 1028 04b2 Vostro 3350 1028 04da Vostro 3750 # Realtek ALC656 103c 2abf HP Pavilion p6-2100 Desktop PC Series 1043 8418 P8P67 Deluxe Motherboard 1043 841b P8H67 Series Motherboard 17aa 21cf ThinkPad T520 17aa 3070 ThinkCentre M91p # Realtek ALC888 audio codec 8086 2008 DQ67SW board 8086 200d DH61CR motherboard 8086 7270 Apple MacBookPro8,2 [Core i7, 15", 2011] 1c22 6 Series/C200 Series Chipset Family SMBus Controller 1028 04a3 Precision M4600 1028 04aa XPS 8300 1028 04b2 Vostro 3350 1028 04da Vostro 3750 1043 844d P8 series motherboard 17aa 21cf ThinkPad T520 17aa 3070 ThinkCentre M91p 8086 200d DH61CR motherboard 8086 7270 Server Board S1200BT Family / Apple MacBook Pro 8,1/8,2 1c24 6 Series/C200 Series Chipset Family Thermal Management Controller 1c25 6 Series/C200 Series Chipset Family DMI to PCI Bridge 1c26 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1 1028 04a3 Precision M4600 1028 04aa XPS 8300 1028 04b2 Vostro 3350 1028 04da Vostro 3750 1043 844d P8 series motherboard 17aa 21cf ThinkPad T520 17aa 3070 ThinkCentre M91p 8086 200d DH61CR motherboard 8086 7270 Server Board S1200BT Family / Apple MacBook Pro 8,1/8,2 1c27 6 Series/C200 Series Chipset Family USB Universal Host Controller #1 8086 7270 Apple MacBookPro8,2 [Core i7, 15", 2011] 1c2c 6 Series/C200 Series Chipset Family USB Universal Host Controller #5 8086 7270 Apple MacBookPro8,2 [Core i7, 15", 2011] 1c2d 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #2 1028 04a3 Precision M4600 1028 04aa XPS 8300 1028 04b2 Vostro 3350 1028 04da Vostro 3750 1043 844d P8 series motherboard 17aa 21cf ThinkPad T520 17aa 3070 ThinkCentre M91p 8086 200d DH61CR motherboard 8086 7270 Server Board S1200BT Family / Apple MacBook Pro 8,1/8,2 1c33 6 Series/C200 Series Chipset Family LAN Controller 1c35 6 Series/C200 Series Chipset Family VECI Controller 1c3a 6 Series/C200 Series Chipset Family MEI Controller #1 1028 0493 Latitude E6420 1028 04a3 Precision M4600 1028 04aa XPS 8300 1028 04b2 Vostro 3350 1028 04da Vostro 3750 1043 844d P8 series motherboard 17aa 21cf ThinkPad T520 17aa 3070 ThinkCentre M91p 8086 200d DH61CR motherboard 8086 7270 Apple MacBookPro8,2 [Core i7, 15", 2011] 1c3b 6 Series/C200 Series Chipset Family MEI Controller #2 1c3c 6 Series/C200 Series Chipset Family IDE-r Controller 1c3d 6 Series/C200 Series Chipset Family KT Controller 17aa 3070 ThinkCentre M91p 1c40 6 Series/C200 Series Chipset Family LPC Controller 1c41 Mobile SFF 6 Series Chipset Family LPC Controller 1c42 6 Series/C200 Series Chipset Family LPC Controller 1c43 Mobile 6 Series Chipset Family LPC Controller 1c44 Z68 Express Chipset LPC Controller 1c45 6 Series/C200 Series Chipset Family LPC Controller 1c46 P67 Express Chipset LPC Controller 1043 844d P8P67 Deluxe Motherboard 1c47 UM67 Express Chipset LPC Controller 1c48 6 Series/C200 Series Chipset Family LPC Controller 1c49 HM65 Express Chipset LPC Controller 8086 7270 Apple MacBookPro8,2 [Core i7, 15", 2011] 1c4a H67 Express Chipset LPC Controller 1028 04aa XPS 8300 1043 844d P8H67 Series Motherboard 1c4b HM67 Express Chipset LPC Controller 1028 04b2 Vostro 3350 1028 04da Vostro 3750 1c4c Q65 Express Chipset LPC Controller 1c4d QS67 Express Chipset LPC Controller 1c4e Q67 Express Chipset LPC Controller 17aa 3070 ThinkCentre M91p 1c4f QM67 Express Chipset LPC Controller 1028 04a3 Precision M4600 17aa 21cf ThinkPad T520 1c50 B65 Express Chipset LPC Controller 1c51 6 Series/C200 Series Chipset Family LPC Controller 1c52 C202 Chipset LPC Controller 8086 7270 Server Board S1200BTS 1c53 6 Series/C200 Series Chipset Family LPC Controller 1c54 C204 Chipset LPC Controller 1c55 6 Series/C200 Series Chipset Family LPC Controller 1c56 C206 Chipset LPC Controller 1043 844d P8B WS Motherboard 1c57 6 Series/C200 Series Chipset Family LPC Controller 1c58 Upgraded B65 Express Chipset LPC Controller 1c59 Upgraded HM67 Express Chipset LPC Controller 1c5a Upgraded Q67 Express Chipset LPC Controller 1c5b 6 Series/C200 Series Chipset Family LPC Controller 1c5c H61 Express Chipset LPC Controller 8086 200d DH61CR motherboard 1c5d 6 Series/C200 Series Chipset Family LPC Controller 1c5e 6 Series/C200 Series Chipset Family LPC Controller 1c5f 6 Series/C200 Series Chipset Family LPC Controller 1d00 C600/X79 series chipset 4-Port SATA IDE Controller 1d02 C600/X79 series chipset 6-Port SATA AHCI Controller 1028 04f7 C602J on PowerEdge R320 server 1d04 C600/X79 series chipset SATA RAID Controller 1d06 C600/X79 series chipset SATA Premium RAID Controller 1d08 C600/X79 series chipset 2-Port SATA IDE Controller 1d10 C600/X79 series chipset PCI Express Root Port 1 1028 04f7 C602J on PowerEdge R320 server 1d11 C600/X79 series chipset PCI Express Root Port 1 1d12 C600/X79 series chipset PCI Express Root Port 2 1d13 C600/X79 series chipset PCI Express Root Port 2 1d14 C600/X79 series chipset PCI Express Root Port 3 1d15 C600/X79 series chipset PCI Express Root Port 3 1d16 C600/X79 series chipset PCI Express Root Port 4 1d17 C600/X79 series chipset PCI Express Root Port 4 1d18 C600/X79 series chipset PCI Express Root Port 5 1028 04f7 C602J on PowerEdge R320 server 1d19 C600/X79 series chipset PCI Express Root Port 5 1d1a C600/X79 series chipset PCI Express Root Port 6 1d1b C600/X79 series chipset PCI Express Root Port 6 1d1c C600/X79 series chipset PCI Express Root Port 7 1d1d C600/X79 series chipset PCI Express Root Port 7 1d1e C600/X79 series chipset PCI Express Root Port 8 1028 04f7 C602J on PowerEdge R320 server 1d1f C600/X79 series chipset PCI Express Root Port 8 1d20 C600/X79 series chipset High Definition Audio Controller 1d22 C600/X79 series chipset SMBus Host Controller 15d9 066b X9SRL-F 1d24 C600/X79 series chipset Thermal Management Controller 15d9 066b X9SRL-F 1d25 C600/X79 series chipset DMI to PCI Bridge 1d26 C600/X79 series chipset USB2 Enhanced Host Controller #1 1028 04f7 C602J on PowerEdge R320 server 15d9 066b X9SRL-F 1d2d C600/X79 series chipset USB2 Enhanced Host Controller #2 1028 04f7 C602J on PowerEdge R320 server 103c 18a9 HP DL360e G8 15d9 066b X9SRL-F 1d33 C600/X79 series chipset LAN Controller 1d35 C600/X79 series chipset VECI Controller 1d3a C600/X79 series chipset MEI Controller #1 1028 04f7 C602J on PowerEdge R320 server 15d9 066b X9SRL-F 1d3b C600/X79 series chipset MEI Controller #2 1028 04f7 C602J on PowerEdge R320 server 15d9 066b X9SRL-F 1d3c C600/X79 series chipset IDE-r Controller 1d3d C600/X79 series chipset KT Controller 1d3e C600/X79 series chipset PCI Express Virtual Root Port 1028 04f7 C602J on PowerEdge R320 server 1d3f C608/C606/X79 series chipset PCI Express Virtual Switch Port 1d40 C600/X79 series chipset LPC Controller 1d41 C600/X79 series chipset LPC Controller 1028 04f7 C602J on PowerEdge R320 server 15d9 066b X9SRL-F 1d50 C608 chipset Dual 4-Port SATA/SAS Storage Control Unit 1d54 C600/X79 series chipset Dual 4-Port SATA/SAS Storage Control Unit 1d55 C600/X79 series chipset 4-Port SATA/SAS Storage Control Unit 1d58 C606 chipset Dual 4-Port SATA/SAS Storage Control Unit 1d59 C604/X79 series chipset 4-Port SATA/SAS Storage Control Unit 1d5a C600/X79 series chipset Dual 4-Port SATA Storage Control Unit 1d5b C602 chipset 4-Port SATA Storage Control Unit 1d5c C600/X79 series chipset Dual 4-Port SATA/SAS Storage Control Unit 1d5d C600/X79 series chipset 4-Port SATA/SAS Storage Control Unit 1d5e C600/X79 series chipset Dual 4-Port SATA Storage Control Unit 1d5f C600/X79 series chipset 4-Port SATA Storage Control Unit 1d60 C608 chipset Dual 4-Port SATA/SAS Storage Control Unit 1d64 C600/X79 series chipset Dual 4-Port SATA/SAS Storage Control Unit 1d65 C600/X79 series chipset 4-Port SATA/SAS Storage Control Unit 1d68 C606 chipset Dual 4-Port SATA/SAS Storage Control Unit 1d69 C604/X79 series chipset 4-Port SATA/SAS Storage Control Unit 1d6a C600/X79 series chipset Dual 4-Port SATA Storage Control Unit 1d6b C602 chipset 4-Port SATA Storage Control Unit 0497 1028 Dell Precision T3600 1d6c C600/X79 series chipset Dual 4-Port SATA/SAS Storage Control Unit 1d6d C600/X79 series chipset 4-Port SATA/SAS Storage Control Unit 1d6e C600/X79 series chipset Dual 4-Port SATA Storage Control Unit 1d6f C600/X79 series chipset 4-Port SATA Storage Control Unit 1d70 C600/X79 series chipset SMBus Controller 0 1d71 C608/C606/X79 series chipset SMBus Controller 1 1d72 C608 chipset SMBus Controller 2 1d74 C608/C606/X79 series chipset PCI Express Upstream Port 1d76 C600/X79 series chipset Multi-Function Glue 1e00 7 Series/C210 Series Chipset Family 4-port SATA Controller [IDE mode] 1734 11d6 B75 [Ivy Bridge] chipset on Esprimo P510 D3171 motherboard 1e01 7 Series Chipset Family 4-port SATA Controller [IDE mode] 144d c652 NP300E5C series laptop 1e02 7 Series/C210 Series Chipset Family 6-port SATA Controller [AHCI mode] 1043 84ca P8 series motherboard 1734 11d6 B75 [Ivy Bridge] chipset on Esprimo P510 D3171 motherboard 1849 1e02 Motherboard 1e03 7 Series Chipset Family 6-port SATA Controller [AHCI mode] 1043 108d VivoBook X202EV 1043 1477 N56VZ 1043 1517 Zenbook Prime UX31A 10cf 16e2 LIFEBOOK E752 144d c652 NP300E5C series laptop 1e04 7 Series/C210 Series Chipset Family SATA Controller [RAID mode] 1e05 7 Series Chipset SATA Controller [RAID mode] 1e06 7 Series/C210 Series Chipset Family SATA Controller [RAID mode] 1e07 7 Series Chipset Family SATA Controller [RAID mode] 1e08 7 Series/C210 Series Chipset Family 2-port SATA Controller [IDE mode] 1e09 7 Series Chipset Family 2-port SATA Controller [IDE mode] 144d c652 NP300E5C series laptop 1e0e 7 Series/C210 Series Chipset Family SATA Controller [RAID mode] 1e10 7 Series/C216 Chipset Family PCI Express Root Port 1 1043 108d VivoBook X202EV 1043 1477 N56VZ 1043 1517 Zenbook Prime UX31A 1043 84ca P8H77-I Motherboard 10cf 16e9 LIFEBOOK E752 144d c652 NP300E5C series laptop 1734 11d6 B75 [Ivy Bridge] chipset on Esprimo P510 D3171 motherboard 1849 1e10 Motherboard 1e12 7 Series/C210 Series Chipset Family PCI Express Root Port 2 1043 108d VivoBook X202EV 1043 1477 N56VZ 1043 1517 Zenbook Prime UX31A 1e14 7 Series/C210 Series Chipset Family PCI Express Root Port 3 10cf 16e9 LIFEBOOK E752 1e16 7 Series/C216 Chipset Family PCI Express Root Port 4 1043 108d VivoBook X202EV 1043 1477 N56VZ 144d c652 NP300E5C series laptop 1849 1618 Z77 Extreme4 motherboard 1e18 7 Series/C210 Series Chipset Family PCI Express Root Port 5 1043 84ca P8H77-I Motherboard 1849 1e18 Motherboard 1e1a 7 Series/C210 Series Chipset Family PCI Express Root Port 6 1734 11d6 B75 [Ivy Bridge] chipset on Esprimo P510 D3171 motherboard 1849 1e1a Motherboard 1e1c 7 Series/C210 Series Chipset Family PCI Express Root Port 7 1e1e 7 Series/C210 Series Chipset Family PCI Express Root Port 8 10cf 16e9 LIFEBOOK E752 1849 1e1e Motherboard 1e20 7 Series/C216 Chipset Family High Definition Audio Controller 1028 054b XPS One 2710 1043 108d VivoBook X202EV 1043 1477 N56VZ 1043 1517 Zenbook Prime UX31A 1043 8415 P8H77-I Motherboard 1043 8445 P8Z77-V LX Motherboard 10cf 1757 LIFEBOOK E752 144d c652 NP300E5C series laptop 1734 11d8 B75 [Ivy Bridge] chipset CX20642 audio controller on Esprimo P510 D3171 motherboard 1849 1898 Z77 Extreme4 motherboard 1e22 7 Series/C216 Chipset Family SMBus Controller 1043 108d VivoBook X202EV 1043 1477 N56VZ 1043 1517 Zenbook Prime UX31A 1043 84ca P8 series motherboard 10cf 16e6 LIFEBOOK E752 144d c652 NP300E5C series laptop 1734 11d6 B75 [Ivy Bridge] chipset on Esprimo P510 D3171 motherboard 1849 1e22 Motherboard 1e24 7 Series/C210 Series Chipset Family Thermal Management Controller 1043 1517 Zenbook Prime UX31A 1e25 7 Series/C210 Series Chipset Family DMI to PCI Bridge 1e26 7 Series/C216 Chipset Family USB Enhanced Host Controller #1 1043 108d VivoBook X202EV 1043 1477 N56VZ 1043 1517 Zenbook Prime UX31A 1043 84ca P8 series motherboard 10cf 16e8 LIFEBOOK E752 144d c652 NP300E5C series laptop 1734 11d6 B75 [Ivy Bridge] chipset USB 2.0 controller on Esprimo P510 D3171 motherboard 1849 1e26 Motherboard 1e2d 7 Series/C216 Chipset Family USB Enhanced Host Controller #2 1043 108d VivoBook X202EV 1043 1477 N56VZ 1043 1517 Zenbook Prime UX31A 1043 84ca P8 series motherboard 10cf 16e8 LIFEBOOK E752 144d c652 NP300E5C series laptop 1734 11d6 B75 [Ivy Bridge] chipset USB 2.0 controller on Esprimo P510 D3171 motherboard 1849 1e2d Motherboard 1e31 7 Series/C210 Series Chipset Family USB xHCI Host Controller 103c 179b Elitebook 8470p 103c 17ab ProBook 6570b 1043 108d VivoBook X202EV 1043 1477 N56VZ 1043 1517 Zenbook Prime UX31A 1043 84ca P8 series motherboard 10cf 16ee LIFEBOOK E752 1734 11d6 B75 [Ivy Bridge] chipset USB 3.0 controller on Esprimo P510 D3171 motherboard 17aa 21f3 ThinkPad T430 1849 1e31 Motherboard 1e33 7 Series/C210 Series Chipset Family LAN Controller 1e3a 7 Series/C216 Chipset Family MEI Controller #1 1043 108d VivoBook X202EV 1043 1477 N56VZ 1043 1517 Zenbook Prime UX31A 1043 84ca P8 series motherboard 10cf 16ea LIFEBOOK E752 144d c652 NP300E5C series laptop 1734 11d6 B75 [Ivy Bridge] chipset on Esprimo P510 D3171 motherboard 1849 1e3a Motherboard 1e3b 7 Series/C210 Series Chipset Family MEI Controller #2 1e3c 7 Series/C210 Series Chipset Family IDE-r Controller 1e3d 7 Series/C210 Series Chipset Family KT Controller 1e41 7 Series Chipset Family LPC Controller 1e42 7 Series Chipset Family LPC Controller 1e43 7 Series Chipset Family LPC Controller 1e44 Z77 Express Chipset LPC Controller 1043 84ca P8 series motherboard 1849 1e44 Motherboard 1e45 7 Series Chipset Family LPC Controller 1e46 Z75 Express Chipset LPC Controller 1e47 Q77 Express Chipset LPC Controller 1e48 Q75 Express Chipset LPC Controller 1e49 B75 Express Chipset LPC Controller 1734 11d6 Esprimo P510 D3171 motherboard 1e4a H77 Express Chipset LPC Controller 1043 84ca P8H77-I Motherboard 1e4b 7 Series Chipset Family LPC Controller 1e4c 7 Series Chipset Family LPC Controller 1e4d 7 Series Chipset Family LPC Controller 1e4e 7 Series Chipset Family LPC Controller 1e4f 7 Series Chipset Family LPC Controller 1e50 7 Series Chipset Family LPC Controller 1e51 7 Series Chipset Family LPC Controller 1e52 7 Series Chipset Family LPC Controller 1e53 C216 Series Chipset LPC Controller 1e54 7 Series Chipset Family LPC Controller 1e55 QM77 Express Chipset LPC Controller 1e56 QS77 Express Chipset LPC Controller 1e57 HM77 Express Chipset LPC Controller 1e58 UM77 Express Chipset LPC Controller 1e59 HM76 Express Chipset LPC Controller 1043 1477 N56VZ 1043 1517 Zenbook Prime UX31A 10cf 16e0 LIFEBOOK E752 1e5a 7 Series Chipset Family LPC Controller 1e5b UM77 Express Chipset LPC Controller 1e5c 7 Series Chipset Family LPC Controller 1e5d HM75 Express Chipset LPC Controller 144d c652 NP300E5C series laptop 1e5e HM70 Express Chipset LPC Controller 1043 108d VivoBook X202EV 1e5f NM70 Express Chipset LPC Controller 1f00 Atom processor C2000 SoC Transaction Router 1f01 Atom processor C2000 SoC Transaction Router 1f02 Atom processor C2000 SoC Transaction Router 1f03 Atom processor C2000 SoC Transaction Router 1f04 Atom processor C2000 SoC Transaction Router 1f05 Atom processor C2000 SoC Transaction Router 1f06 Atom processor C2000 SoC Transaction Router 1f07 Atom processor C2000 SoC Transaction Router 1f08 Atom processor C2000 SoC Transaction Router 1f09 Atom processor C2000 SoC Transaction Router 1f0a Atom processor C2000 SoC Transaction Router 1f0b Atom processor C2000 SoC Transaction Router 1f0c Atom processor C2000 SoC Transaction Router 1f0d Atom processor C2000 SoC Transaction Router 1f0e Atom processor C2000 SoC Transaction Router 1f0f Atom processor C2000 SoC Transaction Router 1f10 Atom processor C2000 PCIe Root Port 1 1f11 Atom processor C2000 PCIe Root Port 2 1f12 Atom processor C2000 PCIe Root Port 3 1f13 Atom processor C2000 PCIe Root Port 4 1f14 Atom processor C2000 RAS 1f15 Atom processor C2000 SMBus 2.0 1f16 Atom processor C2000 RCEC 1f18 Atom processor C2000 QAT 1f19 Atom processor C2000 QAT 1f20 Atom processor C2000 4-Port IDE SATA2 Controller 1f21 Atom processor C2000 4-Port IDE SATA2 Controller 1f22 Atom processor C2000 AHCI SATA2 Controller 1f23 Atom processor C2000 AHCI SATA2 Controller 1f24 Atom processor C2000 RAID SATA2 Controller 1f25 Atom processor C2000 RAID SATA2 Controller 1f26 Atom processor C2000 RAID SATA2 Controller 1f27 Atom processor C2000 RAID SATA2 Controller 1f2c Atom processor C2000 USB Enhanced Host Controller 0200 1028 Atom C2338 on Dell 0K8Y0N motherboard 1f2e Atom processor C2000 RAID SATA2 Controller 1f2f Atom processor C2000 RAID SATA2 Controller 1f30 Atom processor C2000 2-Port IDE SATA3 Controller 1f31 Atom processor C2000 2-Port IDE SATA3 Controller 1f32 Atom processor C2000 AHCI SATA3 Controller 1f33 Atom processor C2000 AHCI SATA3 Controller 1f34 Atom processor C2000 RAID SATA3 Controller 1f35 Atom processor C2000 RAID SATA3 Controller 1f36 Atom processor C2000 RAID SATA3 Controller 1f37 Atom processor C2000 RAID SATA3 Controller 1f38 Atom processor C2000 PCU 1f39 Atom processor C2000 PCU 1f3a Atom processor C2000 PCU 1f3b Atom processor C2000 PCU 1f3c Atom processor C2000 PCU SMBus 1f3d Atom Processor C2000 PECI SMBus 1f3e Atom processor C2000 RAID SATA3 Controller 1f3f Atom processor C2000 RAID SATA3 Controller 1f40 Ethernet Connection I354 1.0 GbE Backplane 1028 05f1 Ethernet Connection I354 1.0 GbE Backplane 1f41 Ethernet Connection I354 1f42 Atom processor C2000 GbE 1f44 Atom processor C2000 GbE Virtual Function 1f45 Ethernet Connection I354 2.5 GbE Backplane 2014 Sky Lake-E Ubox Registers 2015 Sky Lake-E Ubox Registers 2016 Sky Lake-E Ubox Registers 2018 Sky Lake-E M2PCI Registers 201a Sky Lake-E Non-Transparent Bridge Registers 201c Sky Lake-E Non-Transparent Bridge Registers 201d Volume Management Device NVMe RAID Controller 2020 Sky Lake-E DMI3 Registers 15d9 095d X11SPM-TF 2021 Sky Lake-E CBDMA Registers 2024 Sky Lake-E MM/Vt-d Configuration Registers 2025 Sky Lake-E RAS 2026 Sky Lake-E IOAPIC 2030 Sky Lake-E PCI Express Root Port A 2031 Sky Lake-E PCI Express Root Port B 2032 Sky Lake-E PCI Express Root Port C 2033 Sky Lake-E PCI Express Root Port D 2034 Sky Lake-E VT-d 2035 Sky Lake-E RAS Configuration Registers 2036 Sky Lake-E IOxAPIC Configuration Registers 2040 Sky Lake-E Integrated Memory Controller 2041 Sky Lake-E Integrated Memory Controller 2042 Sky Lake-E Integrated Memory Controller 2043 Sky Lake-E Integrated Memory Controller 2044 Sky Lake-E Integrated Memory Controller 2045 Sky Lake-E LM Channel 1 2046 Sky Lake-E LMS Channel 1 2047 Sky Lake-E LMDP Channel 1 2048 Sky Lake-E DECS Channel 2 2049 Sky Lake-E LM Channel 2 204a Sky Lake-E LMS Channel 2 204b Sky Lake-E LMDP Channel 2 204c Sky Lake-E M3KTI Registers 204d Sky Lake-E M3KTI Registers 204e Sky Lake-E M3KTI Registers 2054 Sky Lake-E CHA Registers 2055 Sky Lake-E CHA Registers 2056 Sky Lake-E CHA Registers 2057 Sky Lake-E CHA Registers 2058 Sky Lake-E KTI 0 2059 Sky Lake-E UPI Registers 2066 Sky Lake-E Integrated Memory Controller 2068 Sky Lake-E DDRIO Registers 2069 Sky Lake-E DDRIO Registers 206a Sky Lake-E IOxAPIC Configuration Registers 206e Sky Lake-E DDRIO Registers 206f Sky Lake-E DDRIO Registers 2078 Sky Lake-E PCU Registers 207a Sky Lake-E PCU Registers 2080 Sky Lake-E PCU Registers 2081 Sky Lake-E PCU Registers 2082 Sky Lake-E PCU Registers 2083 Sky Lake-E PCU Registers 2084 Sky Lake-E PCU Registers 2085 Sky Lake-E PCU Registers 2086 Sky Lake-E PCU Registers 2088 Sky Lake-E DDRIO Registers 208d Sky Lake-E CHA Registers 208e Sky Lake-E CHA Registers # Engineering sample GPU 2240 Larrabee 2241 Larrabee 2250 Xeon Phi coprocessor 5100 series 225c Xeon Phi coprocessor SE10/7120 series 225d Xeon Phi coprocessor 3120 series 225e Xeon Phi coprocessor 31S1 2262 Xeon Phi coprocessor 7220 2280 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series SoC Transaction Register 2284 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series High Definition Audio Controller 2286 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series LPIO1 DMA Controller 228a Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series LPIO1 HSUART Controller #1 228c Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series LPIO1 HSUART Controller #2 2292 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx SMBus Controller 2294 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series MMC Controller 2295 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series SDIO Controller 2296 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series SD Controller 2298 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series Trusted Execution Engine 229c Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series PCU 22a3 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series SATA Controller 22a4 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series SATA AHCI Controller 22a8 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series Low Power Engine Audio 22b0 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Integrated Graphics Controller 22b1 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Integrated Graphics Controller 22b5 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series USB xHCI Controller 22b8 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series Imaging Unit 22c0 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series LPIO2 DMA Controller 22c1 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series LPIO2 I2C Controller #1 22c2 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series LPIO2 I2C Controller #2 22c3 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series LPIO2 I2C Controller #3 22c4 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series LPIO2 I2C Controller #4 22c5 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series LPIO2 I2C Controller #5 22c6 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series LPIO2 I2C Controller #6 22c7 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series LPIO2 I2C Controller #7 22c8 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series PCI Express Port #1 22ca Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series PCI Express Port #2 22cc Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series PCI Express Port #3 22ce Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series PCI Express Port #4 22dc Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series Power Management Controller 2310 DH89xxCC LPC Controller 2323 DH89xxCC 4 Port SATA AHCI Controller 2330 DH89xxCC SMBus Controller 2331 DH89xxCC Chap Counter 2332 DH89xxCC Thermal Subsystem 2334 DH89xxCC USB2 Enhanced Host Controller #1 2335 DH89xxCC USB2 Enhanced Host Controller #1 2342 DH89xxCC PCI Express Root Port #1 2343 DH89xxCC PCI Express Root Port #1 2344 DH89xxCC PCI Express Root Port #2 2345 DH89xxCC PCI Express Root Port #2 2346 DH89xxCC PCI Express Root Port #3 2347 DH89xxCC PCI Express Root Port #3 2348 DH89xxCC PCI Express Root Port #4 2349 DH89xxCC PCI Express Root Port #4 2360 DH89xxCC Watchdog Timer 2364 DH89xxCC MEI 0 2365 DH89xxCC MEI 1 2390 DH895XCC Series LPC Controller 23a1 DH895XCC Series 2-Port SATA Controller [IDE Mode] 23a3 DH895XCC Series 4-Port SATA Controller [AHCI Mode] 23a6 DH895XCC Series 2-Port SATA Controller [IDE Mode] 23b0 DH895XCC Series SMBus Controller 23b1 DH895XCC Series CHAP Counter 23b2 DH895XCC Series Thermal Management Controller 23b4 DH895XCC Series USB2 Enhanced Host Controller #1 23b5 DH895XCC Series USB2 Enhanced Host Controller #1 23c2 DH895XCC Series PCI Express Root Port #1 23c3 DH895XCC Series PCI Express Root Port #1 23c4 DH895XCC Series PCI Express Root Port #2 23c5 DH895XCC Series PCI Express Root Port #2 23c6 CDH895XCC Series PCI Express Root Port #3 23c7 DH895XCC Series PCI Express Root Port #3 23c8 DH895XCC Series PCI Express Root Port #4 23c9 DH895XCC Series PCI Express Root Port #4 23e0 DH895XCC Series Watchdog Timer 23e4 DH895XCC Series MEI Controller #1 23e5 DH895XCC Series MEI Controller #2 2410 82801AA ISA Bridge (LPC) 2411 82801AA IDE Controller 2412 82801AA USB Controller 2413 82801AA SMBus Controller 2415 82801AA AC'97 Audio Controller 1028 0095 Precision Workstation 220 Integrated Digital Audio 1028 00b4 OptiPlex GX110 110a 0051 Activy 2xx 11d4 0040 SoundMAX Integrated Digital Audio 11d4 0048 SoundMAX Integrated Digital Audio 11d4 5340 SoundMAX Integrated Digital Audio 1734 1025 Activy 3xx 1af4 1100 QEMU Virtual Machine 2416 82801AA AC'97 Modem Controller 2418 82801AA PCI Bridge 2420 82801AB ISA Bridge (LPC) 2421 82801AB IDE Controller 2422 82801AB USB Controller 2423 82801AB SMBus Controller 2425 82801AB AC'97 Audio Controller 11d4 0040 SoundMAX Integrated Digital Audio 11d4 0048 SoundMAX Integrated Digital Audio 2426 82801AB AC'97 Modem Controller 2428 82801AB PCI Bridge 2440 82801BA ISA Bridge (LPC) 8086 5744 S845WD1-E 2442 82801BA/BAM UHCI USB 1.1 Controller #1 1014 01c6 Netvista A40/A40p 1025 1016 Travelmate 612 TX 1028 00c7 Dimension 8100 1028 00d8 Precision 530 1028 010e Optiplex GX240 103c 126f e-pc 40 1043 8027 CUSL2-C/TUSL2-C Mainboard 104d 80df Vaio PCG-FX403 147b 0505 BL7 motherboard 147b 0507 TH7II-RAID 8086 4532 Desktop Board D815EEA2/D815EFV 8086 4557 D815EGEW Mainboard 8086 4d44 D850EMV2 motherboard 8086 5744 S845WD1-E mainboard 2443 82801BA/BAM SMBus Controller 1014 01c6 Netvista A40/A40p 1025 1016 Travelmate 612 TX 1028 00c7 Dimension 8100 1028 00d8 Precision 530 1028 010e Optiplex GX240 103c 126f e-pc 40 1043 8027 CUSL2-C/TUSL2-C Mainboard 104d 80df Vaio PCG-FX403 147b 0505 BL7 motherboard 147b 0507 TH7II-RAID 15d9 3280 Supermicro P4SBE Mainboard 8086 4532 Desktop Board D815EEA2/D815EFV 8086 4557 D815EGEW Mainboard 8086 5744 S845WD1-E mainboard 2444 82801BA/BAM UHCI USB 1.1 Controller #2 1025 1016 Travelmate 612 TX 1028 00c7 Dimension 8100 1028 00d8 Precision 530 1028 010e Optiplex GX240 103c 126f e-pc 40 1043 8027 CUSL2-C/TUSL2-C Mainboard 104d 80df Vaio PCG-FX403 147b 0505 BL7 motherboard 147b 0507 TH7II-RAID 8086 4532 Desktop Board D815EEA2/D815EFV 8086 5744 S845WD1-E mainboard 2445 82801BA/BAM AC'97 Audio Controller 0e11 000b Compaq Deskpro EN Audio 0e11 0088 Evo D500 1014 01c6 Netvista A40/A40p 1025 1016 Travelmate 612 TX 1028 00d8 Precision 530 103c 126f e-pc 40 104d 80df Vaio PCG-FX403 11d4 5340 AD1885 AC97 codec 1462 3370 STAC9721 AC 147b 0505 BL7 motherboard 147b 0507 TH7II-RAID 8086 4557 D815EGEW Mainboard 8086 4656 Desktop Board D815EFV 8086 4d44 D850EMV2 motherboard 2446 82801BA/BAM AC'97 Modem Controller 1025 1016 Travelmate 612 TX 104d 80df Vaio PCG-FX403 2448 82801 Mobile PCI Bridge 1028 040a Latitude E6410 1028 040b Latitude E6510 103c 0934 Compaq nw8240 Mobile Workstation 103c 0944 Compaq nc6220 Notebook PC 103c 099c NX6110/NC6120 103c 309f Compaq nx9420 Notebook 103c 30a3 Compaq nw8440 103c 30c1 Compaq 6910p 1043 1017 X58LE 104d 902d VAIO VGN-NR120E 105b 0d7c D270S/D250S Motherboard 1071 8209 Medion MIM 2240 Notebook PC [MD98100] 144d c00c P30 notebook 144d c06a R730 Laptop 144d c072 Notebook N150P 1458 5000 GA-D525TUD 1734 1055 Amilo M1420 17aa 2013 ThinkPad R60e 17aa 20ae ThinkPad T61/R61 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] 17c0 4083 Medion WIM 2210 Notebook PC [MD96850] 8086 544b Desktop Board D425KT e4bf cc47 CCG-RUMBA 2449 82801BA/BAM/CA/CAM Ethernet Controller 0e11 0012 EtherExpress PRO/100 VM 0e11 0091 EtherExpress PRO/100 VE 1014 01ce EtherExpress PRO/100 VE 1014 01dc EtherExpress PRO/100 VE 1014 01eb EtherExpress PRO/100 VE 1014 01ec EtherExpress PRO/100 VE 1014 0202 EtherExpress PRO/100 VE 1014 0205 EtherExpress PRO/100 VE 1014 0217 EtherExpress PRO/100 VE 1014 0234 EtherExpress PRO/100 VE 1014 023d EtherExpress PRO/100 VE 1014 0244 EtherExpress PRO/100 VE 1014 0245 EtherExpress PRO/100 VE 1014 0265 PRO/100 VE Desktop Connection 1014 0267 PRO/100 VE Desktop Connection 1014 026a PRO/100 VE Desktop Connection 109f 315d EtherExpress PRO/100 VE 109f 3181 EtherExpress PRO/100 VE 1179 ff01 PRO/100 VE Network Connection 1186 7801 EtherExpress PRO/100 VE 144d 2602 HomePNA 1M CNR 1af4 1100 QEMU Virtual Machine 8086 3010 EtherExpress PRO/100 VE 8086 3011 EtherExpress PRO/100 VM 8086 3012 82562EH based Phoneline 8086 3013 EtherExpress PRO/100 VE 8086 3014 EtherExpress PRO/100 VM 8086 3015 82562EH based Phoneline 8086 3016 EtherExpress PRO/100 P Mobile Combo 8086 3017 EtherExpress PRO/100 P Mobile 8086 3018 EtherExpress PRO/100 244a 82801BAM IDE U100 Controller 1025 1016 Travelmate 612TX 104d 80df Vaio PCG-FX403 244b 82801BA IDE U100 Controller 1014 01c6 Netvista A40/A40p 1028 00c7 Dimension 8100 1028 00d8 Precision 530 1028 010e Optiplex GX240 103c 126f e-pc 40 1043 8027 CUSL2-C/TUSL2-C Mainboard 147b 0505 BL7 motherboard 147b 0507 TH7II-RAID 15d9 3280 Supermicro P4SBE Mainboard 8086 4532 Desktop Board D815EEA2/D815EFV 8086 4557 D815EGEW Mainboard 8086 4d44 D850EMV2 motherboard 8086 5744 S845WD1-E mainboard 244c 82801BAM ISA Bridge (LPC) 244e 82801 PCI Bridge 1014 0267 NetVista A30p 1028 020d Inspiron 530 1028 0211 Optiplex 755 1028 02da OptiPlex 980 1028 04f7 PowerEdge R320 server 103c 130a Z600 Workstation 103c 2a3b Pavilion A1512X 103c 2a6f Asus IPIBL-LB Motherboard 103c 31fe ProLiant DL140 G3 103c 330b ProLiant ML150 G6 Server 1043 81ec P5B Motherboard # same ID possibly also on other ASUS boards 1043 8277 P5K PRO Motherboard 1043 844d P8 series motherboard 1043 8534 ASUS B85-PLUS 1458 5000 Motherboard 1462 7345 MS-7345 Motherboard: Intel 82801I/IR [ICH9/ICH9R] 1462 7418 Wind PC MS-7418 15d9 060d C7SIM-Q Motherboard 15d9 9680 X7DBN Motherboard 1734 11d6 B75 [Ivy Bridge] chipset on Esprimo P510 D3171 motherboard 1775 11cc CC11/CL11 17aa 3070 ThinkCentre M91p 8086 7270 Server Board S1200BTS 2450 82801E ISA Bridge (LPC) 2452 82801E USB Controller 2453 82801E SMBus Controller 2459 82801E Ethernet Controller 0 245b 82801E IDE U100 Controller 245d 82801E Ethernet Controller 1 245e 82801E PCI Bridge 2480 82801CA LPC Interface Controller 2482 82801CA/CAM USB Controller #1 0e11 0030 Evo N600c 1014 0220 ThinkPad A/T/X Series 104d 80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP 15d9 3480 P4DP6 8086 1958 vpr Matrix 170B4 8086 3424 SE7501HG2 Mainboard 8086 4541 Latitude C640 2483 82801CA/CAM SMBus Controller 1014 0220 ThinkPad A/T/X Series 104d 80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP 15d9 3480 P4DP6 8086 1958 vpr Matrix 170B4 2484 82801CA/CAM USB Controller #2 0e11 0030 Evo N600c 1014 0220 ThinkPad A/T/X Series 104d 80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP 15d9 3480 P4DP6 8086 1958 vpr Matrix 170B4 2485 82801CA/CAM AC'97 Audio Controller 1013 5959 Crystal WMD Audio Codec 1014 0222 ThinkPad A30/A30p/T23 1014 0508 ThinkPad T30 1014 051c ThinkPad A/T/X Series 1043 1583 L3C (SPDIF) 1043 1623 L2B (no SPDIF) 1043 1643 L3F 104d 80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP 144d c006 vpr Matrix 170B4 2486 82801CA/CAM AC'97 Modem Controller 1014 0223 ThinkPad A/T/X Series 1014 0503 ThinkPad R31 1014 051a ThinkPad A/T/X Series 101f 1025 620 Series 1043 1496 PCtel HSP56 MR 104d 80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP 134d 4c21 Dell Inspiron 2100 internal modem 144d 2115 vpr Matrix 170B4 internal modem 14f1 5421 MD56ORD V.92 MDC Modem 2487 82801CA/CAM USB Controller #3 0e11 0030 Evo N600c 1014 0220 ThinkPad A/T/X Series 104d 80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP 15d9 3480 P4DP6 8086 1958 vpr Matrix 170B4 248a 82801CAM IDE U100 Controller 0e11 0030 Evo N600c 1014 0220 ThinkPad A/T/X Series 104d 80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP 8086 1958 vpr Matrix 170B4 8086 4541 Latitude C640 248b 82801CA Ultra ATA Storage Controller 15d9 3480 P4DP6 248c 82801CAM ISA Bridge (LPC) 24c0 82801DB/DBL (ICH4/ICH4-L) LPC Interface Bridge 1014 0267 NetVista A30p 1462 5800 845PE Max (MS-6580) 24c1 82801DBL (ICH4-L) IDE Controller 24c2 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 1014 0267 NetVista A30p 1014 052d ThinkPad 1025 005a TravelMate 290 1025 0064 Extensa 3000 series laptop: Intel 82801DBM (ICH4-M) 1028 0126 Optiplex GX260 1028 0160 Dimension 2400 1028 0163 Latitude D505 1028 018d Inspiron 700m/710m 1028 0196 Inspiron 5160 103c 088c NC8000 laptop 103c 0890 NC6000 laptop 103c 08b0 tc1100 tablet 1043 8089 P4B533 1071 8160 MIM2000 114a 0582 PC8 onboard USB 1.x 144d c005 X10 Laptop 144d c00c P30/P35 notebook 1462 5800 845PE Max (MS-6580) 1509 2990 Averatec 5110H laptop 1734 1004 D1451 Mainboard (SCENIC N300, i845GV) 1734 1055 Amilo M1420 4c53 1090 Cx9 / Vx9 mainboard 8086 24c2 Latitude X300 8086 4541 Latitude D400/D500 e4bf 0cc9 CC9-SAMBA e4bf 0cd2 CD2-BEBOP 24c3 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller 1014 0267 NetVista A30p 1014 052d ThinkPad 1025 005a TravelMate 290 1025 0064 Extensa 3000 series laptop: Intel 82801DBM (ICH4-M) 1028 0126 Optiplex GX260 1028 014f Latitude X300 1028 0160 Dimension 2400 1028 018d Inspiron 700m/710m 103c 088c NC8000 laptop 103c 0890 NC6000 laptop 103c 08b0 tc1100 tablet 1071 8160 MIM2000 114a 0582 PC8 onboard SMbus 144d c005 X10 Laptop 144d c00c P30/P35 notebook 1458 24c2 GA-8PE667 Ultra 1462 5800 845PE Max (MS-6580) 1734 1004 D1451 Mainboard (SCENIC N300, i845GV) 1734 1055 Amilo M1420 4c53 1090 Cx9 / Vx9 mainboard e4bf 0cc9 CC9-SAMBA e4bf 0cd2 CD2-BEBOP 24c4 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 1014 0267 NetVista A30p 1014 052d ThinkPad 1025 005a TravelMate 290 1025 0064 Extensa 3000 series laptop: Intel 82801DBM (ICH4-M) 1028 0126 Optiplex GX260 1028 0160 Dimension 2400 1028 0163 Latitude D505 1028 018d Inspiron 700m/710m 1028 0196 Inspiron 5160 103c 088c NC8000 laptop 103c 0890 NC6000 laptop 103c 08b0 tc1100 tablet 1043 8089 P4B533 1071 8160 MIM2000 144d c00c P30/P35 notebook 1462 5800 845PE Max (MS-6580) 1509 2990 Averatec 5110H 1734 1004 D1451 Mainboard (SCENIC N300, i845GV) 4c53 1090 Cx9 / Vx9 mainboard 8086 24c2 Latitude X300 8086 4541 Latitude D400/D500 e4bf 0cc9 CC9-SAMBA e4bf 0cd2 CD2-BEBOP 24c5 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller 0e11 00b8 Analog Devices Inc. codec [SoundMAX] 1014 0267 NetVista A30p 1014 0537 ThinkPad T4x Series 1014 055f Thinkpad R50e model 1634 1025 005a TravelMate 290 1025 0064 Extensa 3000 series laptop: Intel 82801DBM (ICH4-M) 1028 0139 Latitude D400 1028 014f Latitude X300 1028 0152 Latitude D500 1028 0160 Dimension 2400 1028 0163 Latitude D505 1028 018d Inspiron 700m/710m [SigmaTel STAC9750,51] 1028 0196 Inspiron 5160 103c 088c NC8000 laptop 103c 0890 NC6000 laptop 103c 08b0 tc1100 tablet 1043 1713 M2400N/M6800N laptop 1043 80b0 P4B533 1071 8160 MIM2000 1179 0201 Toshiba Tecra M1 144d c005 X10 Laptop 144d c00c P30/P35 notebook 1458 a002 GA-8PE667 Ultra 1462 5800 845PE Max (MS-6580) 1734 1005 D1451 (SCENIC N300, i845GV) Sigmatel STAC9750T 1734 1055 Amilo M1420 24c6 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller 1014 0524 ThinkPad T4x Series 1014 0525 ThinkPad 1014 0559 ThinkPad R50e 1025 003c Aspire 2001WLCi (Compal CL50 motherboard) implementation 1025 005a TravelMate 290 1025 0064 Extensa 3000 series laptop: Intel 82801DBM (ICH4-M) 1028 0196 Inspiron 5160 103c 088c NC8000 laptop 103c 0890 NC6000 laptop 103c 08b0 tc1100 tablet 1043 1716 M2400N laptop 1043 1826 M6800N 1071 8160 MIM2000 134d 4c21 Latitude D500 144d 2115 X10 Laptop 144d c00c P30/P35 notebook # Conexant HSF Softmodem (CXT22) 14f1 5422 D480 MDC V.9x Modem 24c7 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 1014 0267 NetVista A30p 1014 052d ThinkPad 1025 005a TravelMate 290 1025 0064 Extensa 3000 series laptop: Intel 82801DBM (ICH4-M) 1028 0126 Optiplex GX260 1028 0160 Dimension 2400 1028 0163 Latitude D505 1028 018d Inspiron 700m/710m 1028 0196 Inspiron 5160 103c 088c NC8000 laptop 103c 0890 NC6000 laptop 103c 08b0 tc1100 tablet 1043 8089 P4B533 1071 8160 MIM2000 144d c00c P30/P35 notebook 1462 5800 845PE Max (MS-6580) 1509 2990 Averatec 5110H 1734 1004 D1451 Mainboard (SCENIC N300, i845GV) 4c53 1090 Cx9 / Vx9 mainboard 8086 24c2 Latitude X300 8086 4541 Latitude D400/D500 e4bf 0cc9 CC9-SAMBA e4bf 0cd2 CD2-BEBOP 24ca 82801DBM (ICH4-M) IDE Controller 1014 052d ThinkPad 1025 005a TravelMate 290 1025 0064 Extensa 3000 series laptop: Intel 82801DBM (ICH4-M) 1028 014f Latitude X300 1028 0163 Latitude D505 1028 018d Inspiron 700m/710m 1028 0196 Inspiron 5160 103c 088c NC8000 laptop 103c 0890 NC6000 laptop 103c 08b0 tc1100 tablet 1071 8160 MIM2000 144d c005 X10 Laptop 144d c00c P30/P35 notebook 1734 1055 Amilo M1420 8086 4541 Latitude D400/D500 24cb 82801DB (ICH4) IDE Controller 1014 0267 NetVista A30p 1028 0126 Optiplex GX260 1028 0160 Dimension 2400 1043 8089 P4B533 114a 0582 PC8 onboard IDE 1458 24c2 GA-8PE667 Ultra 1462 5800 845PE Max (MS-6580) 1734 1004 D1451 Mainboard (SCENIC N300, i845GV) 4c53 1090 Cx9 / Vx9 mainboard e4bf 0cc9 CC9-SAMBA e4bf 0cd2 CD2-BEBOP 24cc 82801DBM (ICH4-M) LPC Interface Bridge 144d c00c P30 notebook 1734 1055 Amilo M1420 24cd 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller 1014 0267 NetVista A30p 1014 052e ThinkPad 1025 005a TravelMate 290 1025 0064 Extensa 3000 series laptop: Intel 82801DBM (ICH4-M) 1028 011d Latitude D600 1028 0126 Optiplex GX260 1028 0139 Latitude D400 1028 0152 Latitude D500 1028 0160 Dimension 2400 1028 0163 Latitude D505 1028 018d Inspiron 700m/710m 1028 0196 Inspiron 5160 103c 088c NC8000 laptop 103c 0890 NC6000 laptop 103c 08b0 tc1100 tablet 1043 8089 P4B533 1071 8160 MIM2000 114a 0582 PC8 onboard USB 2.0 1179 ff00 Satellite 2430 144d c005 X10 Laptop 144d c00c P30/P35 notebook 1462 3981 845PE Max (MS-6580) 1509 1968 Averatec 5110H 1734 1004 D1451 Mainboard (SCENIC N300, i845GV) 1734 1055 Amilo M1420 1af4 1100 QEMU Virtual Machine 4c53 1090 Cx9 / Vx9 mainboard 8086 24c2 Latitude X300 e4bf 0cc9 CC9-SAMBA e4bf 0cd2 CD2-BEBOP 24d0 82801EB/ER (ICH5/ICH5R) LPC Interface Bridge 24d1 82801EB (ICH5) SATA Controller 1028 0168 Precision Workstation 670 Mainboard 1028 0169 Precision 470 1028 019a PowerEdge SC1425 103c 12bc d530 CMT (DG746A) 103c 3208 ProLiant DL140 G2 1043 80a6 P4P800 series motherboard 1458 24d1 GA-8IPE1000 Pro2 motherboard (865PE) 1462 7280 865PE Neo2 (MS-6728) 1462 7650 Hetis 865GV-E (MS-7065) 1565 5200 P4TSV Motherboard (865G) 15d9 4580 P4SCE Mainboard 8086 3427 S875WP1-E mainboard 8086 4246 Desktop Board D865GBF 8086 4c43 Desktop Board D865GLC 8086 524c D865PERL mainboard 24d2 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #1 1014 0287 ThinkCentre S50 1014 02dd eServer xSeries server mainboard 1014 02ed eServer xSeries server mainboard 1028 0168 Precision Workstation 670 Mainboard 1028 0169 Precision 470 1028 016c PowerEdge 1850 onboard UHCI 1028 016d PowerEdge 2850 onboard UHCI 1028 0170 PowerEdge 6850 onboard UHCI 1028 0183 PowerEdge 1800 1028 019a PowerEdge SC1425 103c 006a NX9500 103c 12bc d530 CMT (DG746A) 103c 3208 ProLiant DL140 G2 1043 80a6 P4P800/P5P800 series motherboard 1458 24d2 GA-8IPE1000/8KNXP motherboard 1462 7280 865PE Neo2 (MS-6728) 1565 3101 P4TSV Motherboard (865G) 15d9 4580 P4SCE Mainboard 1734 101c PRIMERGY RX/TX series onboard UHCI 8086 3427 S875WP1-E mainboard 8086 4246 Desktop Board D865GBF 8086 4c43 Desktop Board D865GLC 8086 524c D865PERL mainboard 24d3 82801EB/ER (ICH5/ICH5R) SMBus Controller 1014 0287 ThinkCentre S50 1014 02dd eServer xSeries server mainboard 1014 02ed eServer xSeries server mainboard 1028 0156 Precision 360 1028 0168 Precision Workstation 670 Mainboard 1028 0169 Precision 470 103c 12bc d330 uT 103c 3208 ProLiant DL140 G2 1043 80a6 P4P800/P5P800 series motherboard 1458 24d2 GA-8IPE1000 Pro2 motherboard (865PE) 1462 7280 865PE Neo2 (MS-6728) 1462 7650 Hetis 865GV-E (MS-7065) 1565 3101 P4TSV Motherboard (865G) 15d9 4580 P4SCE Mainboard 1734 101c PRIMERGY RX/TX S2 series SMBus 8086 3427 S875WP1-E mainboard 8086 4246 Desktop Board D865GBF 8086 4c43 Desktop Board D865GLC 8086 524c D865PERL mainboard 24d4 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #2 1014 0287 ThinkCentre S50 1014 02dd eServer xSeries server mainboard 1014 02ed eServer xSeries server mainboard 1028 0168 Precision Workstation 670 Mainboard 1028 0169 Precision 470 1028 016c PowerEdge 1850 onboard UHCI 1028 016d PowerEdge 2850 onboard UHCI 1028 0170 PowerEdge 6850 onboard UHCI 1028 0183 PowerEdge 1800 1028 019a PowerEdge SC1425 103c 006a NX9500 103c 12bc d530 CMT (DG746A) 103c 3208 ProLiant DL140 G2 1043 80a6 P4P800/P5P800 series motherboard 1458 24d2 GA-8IPE1000 Pro2 motherboard (865PE) 1462 7280 865PE Neo2 (MS-6728) 1462 7650 Hetis 865GV-E (MS-7065) 1565 3101 P4TSV Motherboard (865G) 15d9 4580 P4SCE Mainboard 1734 101c PRIMERGY RX/TX S2 series onboard UHCI 8086 3427 S875WP1-E mainboard 8086 4246 Desktop Board D865GBF 8086 4c43 Desktop Board D865GLC 8086 524c D865PERL mainboard 24d5 82801EB/ER (ICH5/ICH5R) AC'97 Audio Controller 100a 147b Abit IS7-E motherboard 1014 0287 ThinkCentre S50 1028 0168 Precision Workstation 670 Mainboard 1028 0169 Precision 470 103c 006a NX9500 103c 12bc d330 uT 1043 80f3 P4P800 series motherboard 1043 810f P5P800-MX Mainboard 1458 a002 GA-8IPE1000/8KNXP motherboard 1462 0080 865PE Neo2-V (MS-6788) Mainboard 1462 7280 865PE Neo2 (MS-6728) 1462 7650 Hetis 865GV-E (MS-7065) 8086 a000 D865PERL mainboard 8086 e000 D865PERL mainboard 8086 e001 Desktop Board D865GBF 8086 e002 SoundMax Integrated Digital Audio 24d6 82801EB/ER (ICH5/ICH5R) AC'97 Modem Controller 103c 006a NX9500 24d7 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #3 1014 0287 ThinkCentre S50 1014 02ed xSeries server mainboard 1028 0168 Precision Workstation 670 Mainboard 1028 0169 Precision 470 1028 016c PowerEdge 1850 onboard UHCI 1028 016d PowerEdge 2850 onboard UHCI 1028 0170 PowerEdge 6850 onboard UHCI 1028 0183 PowerEdge 1800 103c 006a NX9500 103c 12bc d530 CMT (DG746A) 1043 80a6 P4P800/P5P800 series motherboard 1458 24d2 GA-8IPE1000 Pro2 motherboard (865PE) 1462 7280 865PE Neo2 (MS-6728) 1462 7650 Hetis 865GV-E (MS-7065) 1565 3101 P4TSV Motherboard (865G) 15d9 4580 P4SCE Mainboard 1734 101c PRIMERGY RX/TX S2 series onboard UHCI 8086 3427 S875WP1-E mainboard 8086 4246 Desktop Board D865GBF 8086 4c43 Desktop Board D865GLC 8086 524c D865PERL mainboard 24db 82801EB/ER (ICH5/ICH5R) IDE Controller 1014 0287 ThinkCentre S50 1014 02dd eServer xSeries server mainboard 1014 02ed eServer xSeries server mainboard 1028 0168 Precision Workstation 670 Mainboard 1028 0169 Precision 470 1028 016c PowerEdge 1850 IDE Controller 1028 016d PowerEdge 2850 IDE Controller 1028 0170 PowerEdge 6850 IDE Controller 1028 019a PowerEdge SC1425 103c 006a NX9500 103c 12bc d530 CMT (DG746A) 1043 80a6 P4P800/P5P800 series motherboard 1458 24d2 GA-8IPE1000 Pro2 motherboard (865PE) 1462 7280 865PE Neo2 (MS-6728) 1462 7580 MSI 875P 1462 7650 Hetis 865GV-E (MS-7065) 1565 3101 P4TSV Motherboard (865G) 15d9 4580 P4SCE Mainboard 1734 101c PRIMERGY RX/TX S2 series onboard IDE 8086 24db P4C800 Mainboard 8086 3427 S875WP1-E mainboard 8086 4246 Desktop Board D865GBF 8086 4c43 Desktop Board D865GLC 8086 524c D865PERL mainboard 24dc 82801EB (ICH5) LPC Interface Bridge 24dd 82801EB/ER (ICH5/ICH5R) USB2 EHCI Controller 1014 0287 ThinkCentre S50 1014 02dd eServer xSeries server mainboard 1014 02ed eServer xSeries server mainboard 1028 0168 Precision Workstation 670 Mainboard 1028 0169 Precision 470 1028 016c PowerEdge 1850 onboard EHCI 1028 016d PowerEdge 2850 onboard EHCI 1028 0170 PowerEdge 6850 onboard EHCI 1028 0183 PowerEdge 1800 1028 019a PowerEdge SC1425 103c 006a NX9500 103c 12bc d530 CMT (DG746A) 103c 3208 ProLiant DL140 G2 1043 80a6 P4P800/P5P800 series motherboard 1458 5006 GA-8IPE1000 Pro2 motherboard (865PE) 1462 7280 865PE Neo2 (MS-6728) 1462 7650 Hetis 865GV-E (MS-7065) 8086 3427 S875WP1-E mainboard 8086 4246 Desktop Board D865GBF 8086 4c43 Desktop Board D865GLC 8086 524c D865PERL mainboard 24de 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #4 1014 0287 ThinkCentre S50 1014 02ed xSeries server mainboard 1028 0168 Precision Workstation 670 Mainboard 1028 0169 Precision 470 1043 80a6 P4P800/P5P800 series motherboard 1458 24d2 GA-8IPE1000 Pro2 motherboard (865PE) 1462 7280 865PE Neo2 (MS-6728) 1462 7650 Hetis 865GV-E (MS-7065) 1565 3101 P4TSV Motherboard (865G) 15d9 4580 P4SCE Mainboard 1734 101c PRIMERGY RX/TX S2 series onboard UHCI 8086 3427 S875WP1-E mainboard 8086 4246 Desktop Board D865GBF 8086 4c43 Desktop Board D865GLC 8086 524c D865PERL mainboard 24df 82801ER (ICH5R) SATA Controller 1028 0168 Precision Workstation 670 Mainboard 24f0 Omni-Path HFI Silicon 100 Series [discrete] 10a9 802e Omni-path HFI 100 Series, 1-port A-board 10a9 802f Omni-path HFI 100 Series, 2-port A-board 10a9 8030 Omni-path HFI 100 Series, 1-port B-board 10a9 8031 Omni-path HFI 100 Series, 2-port B-board 1590 00e7 100Gb 1-port OP101 QSFP28 x8 PCIe Gen3 with Intel Omni-Path Adapter 1590 00e8 100Gb 1-port OP101 QSFP28 x16 PCIe Gen3 with Intel Omni-Path Adapter 1590 021c Apollo 100Gb 1-port Intel Omni-Path Architecture 860z Mezzanine FIO Adapter 15d9 0934 Omni-Path HFI Adapter 100 Series, 1 Port, PCIe x16, SIOM Module 15d9 099b Omni-path HFI Mezz AOC, 1 Port, PCIe x16. 1cb8 0001 Omni-Path HFI Adapter 100 Series, 1 Port, PCIe x16, TC4600 QSFP28 1cb8 0002 Omni-Path HFI Adapter 100 Series, 1 Port, PCIe x16, TC6600 Fixed Port 1cb8 0003 Omni-Path HFI Adapter 100 Series, 2 Port, 2 PCIe x16, Earth Simulation QSFP28 1cb8 0004 Omni-Path HFI Adapter 100 Series, 1 Port, PCIe x16, TC4600E QSFP28 434e 0001 Omni-Path HFI Adapter 100 Series, 1 Port, OCP 3.0 434e 2628 Omni-Path HFI Adapter 100 Series, 1 Port, PCIe x16 8086 2628 Omni-Path HFI Adapter 100 Series, 1 Port, PCIe x16 8086 2629 Omni-Path HFI Adapter 100 Series, 1 Port, PCIe x8 8086 262a Omni-Path HFI Adapter 100 Series, 2 Ports, Split PCIe x16 8086 262d Omni-Path HFI Adapter 100 Series, 1 Port, PCIe x16, IO Module AHWKPTP100HF 24f1 Omni-Path HFI Silicon 100 Series [integrated] 24f3 Wireless 8260 8086 0010 Dual Band Wireless-AC 8260 [Snow Field Peak AC] 8086 1010 Dual Band Wireless-AC 8260 24f4 Wireless 8260 8086 0030 Dual Band Wireless-AC 8260 [Snow Field Peak AC] 24fb Dual Band Wireless-AC 3168NGW [Stone Peak] 24fd Wireless 8265 / 8275 8086 0010 Dual Band Wireless-AC 8265 [Windstorm Peak] 8086 0150 Dual Band Wireless-AC 8265 8086 1010 Dual Band Wireless-AC 8265 8086 1130 Dual Band Wireless-AC 8265 2500 82820 820 (Camino) Chipset Host Bridge (MCH) 1028 0095 Precision Workstation 220 Chipset 1043 801c P3C-2000 system chipset 2501 82820 820 (Camino) Chipset Host Bridge (MCH) 1043 801c P3C-2000 system chipset 250b 82820 820 (Camino) Chipset Host Bridge 250f 82820 820 (Camino) Chipset AGP Bridge 2520 82805AA MTH Memory Translator Hub 2521 82804AA MRH-S Memory Repeater Hub for SDRAM 2522 NVMe Optane Memory Series 8086 3806 Optane Memory 16GB 8086 3810 Optane Memory M10 16GB 2525 Optane NVME SSD P1600X Series 2526 Wi-Fi 5(802.11ac) Wireless-AC 9x6x [Thunder Peak] 8086 0014 Dual Band Wi-Fi 5 Wireless-AC 9260 160MHz 2x2 8086 0210 Dual Band Wi-Fi 5 Wireless-AC 9260 80MHz 2x2 8086 0214 Dual Band Wi-Fi 5 Wireless-AC 9260 80MHz 2x2 8086 0230 Dual Band Wi-Fi 5 Wireless-AC 9560 80MHz 2x2 8086 0234 Dual Band Wi-Fi 5 Wireless-AC 9560 80MHz 2x2 8086 0238 Dual Band Wi-Fi 5 Wireless-AC 9560 80MHz 2x2 8086 023c Dual Band Wi-Fi 5 Wireless-AC 9560 80MHz 2x2 8086 0260 Dual Band Wi-Fi 5 Wireless-AC 9461 80MHz 1x1 8086 0264 Dual Band Wi-Fi 5 Wireless-AC 9461 80MHz 1x1 8086 02a0 Dual Band Wi-Fi 5 Wireless-AC 9462 80MHz 1x1 8086 02a4 Dual Band Wi-Fi 5 Wireless-AC 9462 80MHz 1x1 2530 82850 850 (Tehama) Chipset Host Bridge (MCH) 1028 00c7 Dimension 8100 147b 0507 TH7II-RAID 2531 82860 860 (Wombat) Chipset Host Bridge (MCH) 1028 00d8 Precision 530 2532 82850 850 (Tehama) Chipset AGP Bridge 2533 82860 860 (Wombat) Chipset AGP Bridge 2534 82860 860 (Wombat) Chipset PCI Bridge 2540 E7500 Memory Controller Hub 15d9 3480 P4DP6 2541 E7500/E7501 Host RASUM Controller 15d9 3480 P4DP6 4c53 1090 Cx9 / Vx9 mainboard 8086 3424 SE7501HG2 Mainboard 2543 E7500/E7501 Hub Interface B PCI-to-PCI Bridge 2544 E7500/E7501 Hub Interface B RASUM Controller 4c53 1090 Cx9 / Vx9 mainboard 2545 E7500/E7501 Hub Interface C PCI-to-PCI Bridge 2546 E7500/E7501 Hub Interface C RASUM Controller 2547 E7500/E7501 Hub Interface D PCI-to-PCI Bridge 2548 E7500/E7501 Hub Interface D RASUM Controller 254c E7501 Memory Controller Hub 4c53 1090 Cx9 / Vx9 mainboard 8086 3424 SE7501HG2 Mainboard 2550 E7505 Memory Controller Hub 2551 E7505/E7205 Series RAS Controller 2552 E7505/E7205 PCI-to-AGP Bridge 2553 E7505 Hub Interface B PCI-to-PCI Bridge 2554 E7505 Hub Interface B PCI-to-PCI Bridge RAS Controller 255d E7205 Memory Controller Hub 2560 82845G/GL[Brookdale-G]/GE/PE DRAM Controller/Host-Hub Interface 1028 0126 Optiplex GX260 1458 2560 GA-8PE667 Ultra 1462 5800 845PE Max (MS-6580) 2561 82845G/GL[Brookdale-G]/GE/PE Host-to-AGP Bridge 2562 82845G/GL[Brookdale-G]/GE Chipset Integrated Graphics Device 0e11 00b9 Evo D510 SFF 1014 0267 NetVista A30p 1028 0160 Dimension 2400 1734 1003 D1521 Mainboard (Fujitsu-Siemens) 1734 1004 D1451 Mainboard (SCENIC N300, i845GV) 2570 82865G/PE/P DRAM Controller/Host-Hub Interface 103c 006a NX9500 103c 12bc d330 uT 1043 80f2 P4P800/P5P800 series motherboard 1458 2570 GA-8IPE1000 Pro2 motherboard (865PE) 2571 82865G/PE/P AGP Bridge 2572 82865G Integrated Graphics Controller 1014 0287 ThinkCentre S50 1028 019d Dimension 3000 103c 12bc D530 sff(dc578av) 1043 80a5 P5P800-MX Mainboard 1462 7650 Hetis 865GV-E (MS-7065) 1734 101b Fujitsu-Siemens Scenic E300 i865GV 8086 4246 Desktop Board D865GBF 8086 4c43 Desktop Board D865GLC 2573 82865G/PE/P PCI to CSA Bridge 2576 82865G/PE/P Processor to I/O Memory Interface 2578 82875P/E7210 Memory Controller Hub 1458 2578 GA-8KNXP motherboard (875P) 1462 7580 MS-6758 (875P Neo) 15d9 4580 P4SCE Motherboard 2579 82875P Processor to AGP Controller 257b 82875P/E7210 Processor to PCI to CSA Bridge 257e 82875P/E7210 Processor to I/O Memory Interface 2580 82915G/P/GV/GL/PL/910GL Memory Controller Hub 1458 2580 GA-8I915ME-G Mainboard 1462 7028 915P/G Neo2 1734 105b Scenic W620 2581 82915G/P/GV/GL/PL/910GL PCI Express Root Port 2582 82915G/GV/910GL Integrated Graphics Controller 1028 1079 Optiplex GX280 103c 3006 DC7100 SFF(DX878AV) 1043 2582 P5GD1-VW Mainboard 1458 2582 GA-8I915ME-G Mainboard 1734 105b Scenic W620 1849 2582 ASRock P4Dual-915GL 2584 82925X/XE Memory Controller Hub 1028 0177 Dimension 8400 2585 82925X/XE PCI Express Root Port 2588 E7220/E7221 Memory Controller Hub 2589 E7220/E7221 PCI Express Root Port 258a E7221 Integrated Graphics Controller 2590 Mobile 915GM/PM/GMS/910GML Express Processor to DRAM Controller 1014 0575 ThinkPad X41 / Z60t 1028 0182 Latitude C610 103c 0934 Compaq nw8240/nx8220 103c 0944 Compaq nc6220 Notebook PC 103c 099c NX6110/NC6120 1043 82d9 Asus Eee PC 900 104d 81b7 Vaio VGN-S3XP a304 81b7 Vaio VGN-S3XP e4bf 0ccd CCD-CALYPSO e4bf 0cd3 CD3-JIVE e4bf 58b1 XB1 2591 Mobile 915GM/PM Express PCI Express Root Port 103c 0934 Compaq nw8240 Mobile Workstation 2592 Mobile 915GM/GMS/910GML Express Graphics Controller 1014 0582 ThinkPad X41 103c 099c NX6110/NC6120 103c 308a NC6220 1043 1881 GMA 900 915GM Integrated Graphics e4bf 0ccd CCD-CALYPSO e4bf 0cd3 CD3-JIVE e4bf 58b1 XB1 25a1 6300ESB LPC Interface Controller 25a2 6300ESB PATA Storage Controller 1734 1073 Primergy Econel 200 D2020 mainboard 1775 10d0 V5D Single Board Computer IDE 1775 1100 CR11/VR11 Single Board Computer 1775 ce90 CE9 4c53 10b0 CL9 mainboard 4c53 10e0 PSL09 PrPMC 25a3 6300ESB SATA Storage Controller 1734 1073 Primergy Econel 200 D2020 mainboard 1775 1100 CR11/VR11 Single Board Computer 1775 ce90 CE9 4c53 10b0 CL9 mainboard 4c53 10d0 Telum ASLP10 Processor AMC 4c53 10e0 PSL09 PrPMC 25a4 6300ESB SMBus Controller 1734 1073 Primergy Econel 200 D2020 mainboard 1775 10d0 V5D Single Board Computer 1775 1100 CR11/VR11 Single Board Computer 1775 ce90 CE9 4c53 10b0 CL9 mainboard 4c53 10d0 Telum ASLP10 Processor AMC 4c53 10e0 PSL09 PrPMC 25a6 6300ESB AC'97 Audio Controller 1775 1100 CR11/VR11 Single Board Computer 1775 ce90 CE9 4c53 10b0 CL9 mainboard 25a7 6300ESB AC'97 Modem Controller 25a9 6300ESB USB Universal Host Controller 1734 1073 Primergy Econel 200 D2020 mainboard 1775 10d0 V5D Single Board Computer USB 1775 1100 CR11/VR11 Single Board Computer 1775 ce90 CE9 4c53 10b0 CL9 mainboard 4c53 10d0 Telum ASLP10 Processor AMC 4c53 10e0 PSL09 PrPMC 25aa 6300ESB USB Universal Host Controller 1734 1073 Primergy Econel 200 D2020 mainboard 1775 1100 CR11/VR11 Single Board Computer 1775 ce90 CE9 4c53 10b0 CL9 mainboard 4c53 10d0 Telum ASLP10 Processor AMC 4c53 10e0 PSL09 PrPMC 25ab 6300ESB Watchdog Timer 1734 1073 Primergy Econel 200 D2020 mainboard 1775 10d0 V5D Single Board Computer 1775 1100 CR11/VR11 Single Board Computer 1775 ce90 CE9 1af4 1100 QEMU Virtual Machine 4c53 10b0 CL9 mainboard 4c53 10d0 Telum ASLP10 Processor AMC 4c53 10e0 PSL09 PrPMC 25ac 6300ESB I/O Advanced Programmable Interrupt Controller 1734 1073 Primergy Econel 200 D2020 mainboard 1775 10d0 V5D Single Board Computer 1775 1100 CR11/VR11 Single Board Computer 1775 ce90 CE9 4c53 10b0 CL9 mainboard 4c53 10d0 Telum ASLP10 Processor AMC 4c53 10e0 PSL09 PrPMC 25ad 6300ESB USB2 Enhanced Host Controller 1734 1073 Primergy Econel 200 D2020 mainboard 1775 10d0 V5D Single Board Computer USB 2.0 1775 1100 CR11/VR11 Single Board Computer 1775 ce90 CE9 4c53 10b0 CL9 mainboard 4c53 10d0 Telum ASLP10 Processor AMC 4c53 10e0 PSL09 PrPMC 25ae 6300ESB 64-bit PCI-X Bridge 25b0 6300ESB SATA RAID Controller 1775 1100 CR11/VR11 Single Board Computer 4c53 10d0 Telum ASLP10 Processor AMC 4c53 10e0 PSL09 PrPMC 25c0 5000X Chipset Memory Controller Hub 25d0 5000Z Chipset Memory Controller Hub 25d4 5000V Chipset Memory Controller Hub 15d9 8680 X7DVL-E-O motherboard 25d8 5000P Chipset Memory Controller Hub 103c 31fd ProLiant DL360 G5 15d9 9680 X7DBN Motherboard 8086 3476 S5000PSLSATA Server Board 25e2 5000 Series Chipset PCI Express x4 Port 2 25e3 5000 Series Chipset PCI Express x4 Port 3 25e4 5000 Series Chipset PCI Express x4 Port 4 25e5 5000 Series Chipset PCI Express x4 Port 5 25e6 5000 Series Chipset PCI Express x4 Port 6 25e7 5000 Series Chipset PCI Express x4 Port 7 25f0 5000 Series Chipset FSB Registers 1028 01bb PowerEdge 1955 FSB Registers 103c 31fd ProLiant DL140 G3, DL360 G5 15d9 8680 X7DVL-E-O motherboard 15d9 9680 X7DBN Motherboard 8086 3476 S5000PSLSATA Server Board 25f1 5000 Series Chipset Reserved Registers 103c 31fd ProLiant DL140 G3, DL360 G5 15d9 8680 X7DVL-E-O motherboard 15d9 9680 X7DBN Motherboard 8086 3476 S5000PSLSATA Server Board 25f3 5000 Series Chipset Reserved Registers 103c 31fd ProLiant DL140 G3, DL360 G5 15d9 8680 X7DVL-E-O motherboard 15d9 9680 X7DBN Motherboard 8086 3476 S5000PSLSATA Server Board 25f5 5000 Series Chipset FBD Registers 103c 31fd ProLiant DL140 G3, DL360 G5 15d9 8680 X7DVL-E-O motherboard 15d9 9680 X7DBN Motherboard 8086 3476 S5000PSLSATA Server Board 25f6 5000 Series Chipset FBD Registers 103c 31fd ProLiant DL140 G3, DL360 G5 15d9 8680 X7DVL-E-O motherboard 15d9 9680 X7DBN Motherboard 8086 3476 S5000PSLSATA Server Board 25f7 5000 Series Chipset PCI Express x8 Port 2-3 25f8 5000 Series Chipset PCI Express x8 Port 4-5 25f9 5000 Series Chipset PCI Express x8 Port 6-7 25fa 5000X Chipset PCI Express x16 Port 4-7 2600 E8500/E8501 Hub Interface 1.5 1028 0170 PowerEdge 6850 Hub Interface 2601 E8500/E8501 PCI Express x4 Port D 2602 E8500/E8501 PCI Express x4 Port C0 2603 E8500/E8501 PCI Express x4 Port C1 2604 E8500/E8501 PCI Express x4 Port B0 2605 E8500/E8501 PCI Express x4 Port B1 2606 E8500/E8501 PCI Express x4 Port A0 2607 E8500/E8501 PCI Express x4 Port A1 2608 E8500/E8501 PCI Express x8 Port C 2609 E8500/E8501 PCI Express x8 Port B 260a E8500/E8501 PCI Express x8 Port A 260c E8500/E8501 IMI Registers 2610 E8500/E8501 FSB Registers 2611 E8500/E8501 Address Mapping Registers 2612 E8500/E8501 RAS Registers 2613 E8500/E8501 Reserved Registers 2614 E8500/E8501 Reserved Registers 2615 E8500/E8501 Miscellaneous Registers 2617 E8500/E8501 Reserved Registers 2618 E8500/E8501 Reserved Registers 2619 E8500/E8501 Reserved Registers 261a E8500/E8501 Reserved Registers 261b E8500/E8501 Reserved Registers 261c E8500/E8501 Reserved Registers 261d E8500/E8501 Reserved Registers 261e E8500/E8501 Reserved Registers 2620 E8500/E8501 eXternal Memory Bridge 1028 0170 PowerEdge 6850 Memory Bridge 2621 E8500/E8501 XMB Miscellaneous Registers 1028 0170 PowerEdge 6850 XMB Registers 2622 E8500/E8501 XMB Memory Interleaving Registers 1028 0170 PowerEdge 6850 Memory Interleaving Registers 2623 E8500/E8501 XMB DDR Initialization and Calibration 1028 0170 PowerEdge 6850 DDR Initialization and Calibration 2624 E8500/E8501 XMB Reserved Registers 1028 0170 PowerEdge 6850 Reserved Registers 2625 E8500/E8501 XMB Reserved Registers 1028 0170 PowerEdge 6850 Reserved Registers 2626 E8500/E8501 XMB Reserved Registers 1028 0170 PowerEdge 6850 Reserved Registers 2627 E8500/E8501 XMB Reserved Registers 1028 0170 PowerEdge 6850 Reserved Registers 2640 82801FB/FR (ICH6/ICH6R) LPC Interface Bridge 1462 7028 915P/G Neo2 1734 105c Scenic W620 e4bf 0ccd CCD-CALYPSO e4bf 0cd3 CD3-JIVE e4bf 58b1 XB1 2641 82801FBM (ICH6M) LPC Interface Bridge 1014 0568 ThinkPad X41 103c 0934 Compaq nw8240/nx8220 103c 0944 Compaq nc6220 Notebook PC 103c 099c NX6110/NC6120 2642 82801FW/FRW (ICH6W/ICH6RW) LPC Interface Bridge 2651 82801FB/FW (ICH6/ICH6W) SATA Controller 1028 0179 Optiplex GX280 1043 2601 P5GD1-VW Mainboard 1734 105c Scenic W620 8086 4147 D915GAG Motherboard e4bf 0ccd CCD-CALYPSO e4bf 0cd3 CD3-JIVE e4bf 58b1 XB1 2652 82801FR/FRW (ICH6R/ICH6RW) SATA Controller 1028 0177 Dimension 8400 1462 7028 915P/G Neo2 2653 82801FBM (ICH6M) SATA Controller 1014 056a ThinkPad X41 2658 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #1 1014 0565 ThinkPad X41 1028 0177 Dimension 8400 1028 0179 Optiplex GX280 103c 0934 Compaq nw8240/nx8220 103c 0944 Compaq nc6220 Notebook PC 103c 099c NX6110/NC6120 1043 80a6 P5GD1-VW Mainboard 1458 2558 GA-8I915ME-G Mainboard 1462 7028 915P/G Neo2 1734 105c Scenic W620 e4bf 0ccd CCD-CALYPSO e4bf 0cd3 CD3-JIVE e4bf 58b1 XB1 2659 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #2 1014 0565 ThinkPad X41 1028 0177 Dimension 8400 1028 0179 Optiplex GX280 103c 0934 Compaq nw8240/nx8220 103c 0944 Compaq nc6220 Notebook PC 103c 099c NX6110/NC6120 1043 80a6 P5GD1-VW Mainboard 1458 2659 GA-8I915ME-G Mainboard 1462 7028 915P/G Neo2 1734 105c Scenic W620 e4bf 0ccd CCD-CALYPSO e4bf 0cd3 CD3-JIVE e4bf 58b1 XB1 265a 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #3 1014 0565 ThinkPad X41 1028 0177 Dimension 8400 1028 0179 Optiplex GX280 103c 0934 Compaq nw8240/nx8220 103c 0944 Compaq nc6220 Notebook PC 103c 099c NX6110/NC6120 1043 80a6 P5GD1-VW Mainboard 1458 265a GA-8I915ME-G Mainboard 1462 7028 915P/G Neo2 1734 105c Scenic W620 e4bf 0ccd CCD-CALYPSO e4bf 0cd3 CD3-JIVE e4bf 58b1 XB1 265b 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #4 1014 0565 ThinkPad X41 1028 0177 Dimension 8400 1028 0179 Optiplex GX280 103c 099c NX6110/NC6120 1043 80a6 P5GD1-VW Mainboard 1458 265a GA-8I915ME-G Mainboard 1462 7028 915P/G Neo2 1734 105c Scenic W620 e4bf 0ccd CCD-CALYPSO e4bf 0cd3 CD3-JIVE e4bf 58b1 XB1 265c 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller 1014 0566 ThinkPad X41 1028 0177 Dimension 8400 1028 0179 Optiplex GX280 103c 0934 Compaq nw8240/nx8220 103c 0944 Compaq nc6220 Notebook PC 103c 099c NX6110/NC6120 1043 80a6 P5GD1-VW Mainboard 1458 5006 GA-8I915ME-G Mainboard 1462 7028 915P/G Neo2 1734 105c Scenic W620 8086 265c Dimension 3100 e4bf 0ccd CCD-CALYPSO e4bf 0cd3 CD3-JIVE e4bf 58b1 XB1 2660 82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 1 103c 0934 Compaq nw8240 Mobile Workstation 103c 0944 Compaq nc6220 Notebook PC 103c 099c NX6110/NC6120 e4bf 0ccd CCD-CALYPSO e4bf 0cd3 CD3-JIVE e4bf 58b1 XB1 2662 82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 2 103c 0934 Compaq nw8240 Mobile Workstation 103c 0944 Compaq nc6220 Notebook PC e4bf 0ccd CCD-CALYPSO e4bf 0cd3 CD3-JIVE e4bf 58b1 XB1 2664 82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 3 e4bf 0ccd CCD-CALYPSO e4bf 0cd3 CD3-JIVE e4bf 58b1 XB1 2666 82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 4 e4bf 0ccd CCD-CALYPSO e4bf 0cd3 CD3-JIVE e4bf 58b1 XB1 2668 82801FB/FBM/FR/FW/FRW (ICH6 Family) High Definition Audio Controller 1014 05b7 ThinkPad Z60t # based on the PTGD1-LA motherboard 103c 2a09 PufferM-UL8E 1043 1173 A6VC 1043 814e P5GD1-VW Mainboard 1462 7028 915P/G Neo2 1af4 1100 QEMU Virtual Machine 266a 82801FB/FBM/FR/FW/FRW (ICH6 Family) SMBus Controller 1014 056b ThinkPad X41 1028 0177 Dimension 8400 1028 0179 Optiplex GX280 1043 80a6 P5GD1-VW Mainboard 1458 266a GA-8I915ME-G Mainboard 1462 7028 915P/G Neo2 1734 105c Scenic W620 e4bf 0ccd CCD-CALYPSO e4bf 0cd3 CD3-JIVE e4bf 58b1 XB1 266c 82801FB/FBM/FR/FW/FRW (ICH6 Family) LAN Controller 266d 82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Modem Controller 1025 006a Conexant AC'97 CoDec (in Acer TravelMate 2410 serie laptop) 103c 0934 Compaq nw8240/nx8220 103c 099c NX6110/NC6120 266e 82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Audio Controller 1014 0581 ThinkPad X41 (Analog Devices AD1981B codec) 1025 006a Realtek ALC 655 codec (in Acer TravelMate 2410 serie laptop) 1028 0177 Dimension 8400 1028 0179 Optiplex GX280 1028 0182 Latitude D610 Laptop 1028 0187 Precision M70 Laptop 1028 0188 Inspiron 6000 laptop 103c 0934 Compaq nw8240/nx8220 103c 0944 Compaq NC6220 103c 099c NX6110/NC6120 103c 3006 DC7100 SFF(DX878AV) 1458 a002 GA-8I915ME-G Mainboard 152d 0745 Packard Bell A8550 Laptop 1734 105a Scenic W620 266f 82801FB/FBM/FR/FW/FRW (ICH6 Family) IDE Controller 1028 0177 Dimension 8400 103c 0934 Compaq nw8240/nx8220 103c 0944 Compaq nc6220 Notebook PC 103c 099c NX6110/NC6120 1043 80a6 P5GD1-VW Mainboard 1458 266f GA-8I915ME-G Mainboard 1462 7028 915P/G Neo2 1734 105c Scenic W620 e4bf 0ccd CCD-CALYPSO e4bf 0cd3 CD3-JIVE e4bf 58b1 XB1 2670 631xESB/632xESB/3100 Chipset LPC Interface Controller 103c 31fe ProLiant DL140 G3 15d9 8680 X7DVL-E-O motherboard 15d9 9680 X7DBN Motherboard 8086 3476 S5000PSLSATA Server Board 2680 631xESB/632xESB/3100 Chipset SATA IDE Controller 2681 631xESB/632xESB SATA AHCI Controller 103c 31fe ProLiant DL140 G3 15d9 8680 X7DVL-E-O motherboard 15d9 9680 X7DBN Motherboard 8086 3476 S5000PSLSATA Server Board 2682 631xESB/632xESB SATA RAID Controller 103c 31fe Adaptec Serial ATA HostRAID 2683 631xESB/632xESB SATA RAID Controller 2688 631xESB/632xESB/3100 Chipset UHCI USB Controller #1 1028 01bb PowerEdge 1955 onboard USB 1028 01f0 PowerEdge R900 onboard USB 103c 31fe ProLiant DL140 G3, DL360 G5 15d9 8680 X7DVL-E-O motherboard 15d9 9680 X7DBN Motherboard 8086 3476 S5000PSLSATA Server Board 2689 631xESB/632xESB/3100 Chipset UHCI USB Controller #2 1028 01bb PowerEdge 1955 onboard USB 1028 01f0 PowerEdge R900 onboard USB 103c 31fe ProLiant DL140 G3, DL360 G5 15d9 8680 X7DVL-E-O motherboard 15d9 9680 X7DBN Motherboard 8086 3476 S5000PSLSATA Server Board 268a 631xESB/632xESB/3100 Chipset UHCI USB Controller #3 1028 01f0 PowerEdge R900 onboard USB 103c 31fe ProLiant DL140 G3, DL360 G5 15d9 8680 X7DVL-E-O motherboard 15d9 9680 X7DBN Motherboard 8086 3476 S5000PSLSATA Server Board 268b 631xESB/632xESB/3100 Chipset UHCI USB Controller #4 1028 01f0 PowerEdge R900 onboard USB 103c 31fe ProLiant DL360 G5 15d9 8680 X7DVL-E-O motherboard 8086 3476 S5000PSLSATA Server Board 268c 631xESB/632xESB/3100 Chipset EHCI USB2 Controller 1028 01bb PowerEdge 1955 onboard USB 1028 01f0 PowerEdge R900 onboard USB 103c 31fe ProLiant DL140 G3, DL360 G5 15d9 8680 X7DVL-E-O motherboard 15d9 9680 X7DBN Motherboard 8086 3476 S5000PSLSATA Server Board 2690 631xESB/632xESB/3100 Chipset PCI Express Root Port 1 103c 31fe ProLiant DL140 G3 15d9 9680 X7DBN Motherboard 2692 631xESB/632xESB/3100 Chipset PCI Express Root Port 2 103c 31fe ProLiant DL140 G3 2694 631xESB/632xESB/3100 Chipset PCI Express Root Port 3 2696 631xESB/632xESB/3100 Chipset PCI Express Root Port 4 2698 631xESB/632xESB AC '97 Audio Controller 2699 631xESB/632xESB AC '97 Modem Controller 269a 631xESB/632xESB High Definition Audio Controller 269b 631xESB/632xESB/3100 Chipset SMBus Controller 103c 31fe ProLiant DL140 G3 15d9 8680 X7DVL-E-O motherboard 15d9 9680 X7DBN Motherboard 8086 3476 S5000PSLSATA Server Board 269e 631xESB/632xESB IDE Controller 103c 31fe ProLiant DL140 G3, DL360 G5 15d9 8680 X7DVL-E-O motherboard 15d9 9680 X7DBN Motherboard 2700 Optane SSD 900P Series 8086 3900 900P Series [Add-in Card] 8086 3901 900P Series [2.5" SFF] 2701 NVMe Datacenter SSD [Optane] 1028 2000 Express Flash NVMe [Optane] 375GB 2.5" U.2 (P4800X) 1028 2001 Express Flash NVMe [Optane] 750GB 2.5" U.2 (P4800X) 1028 2002 Express Flash NVMe [Optane] 750GB AIC (P4800X) 1028 200a Express Flash NVMe [Optane] 375GB AIC (P4800X) 8086 3904 NVMe Datacenter SSD [Optane] x4 AIC (P4800X) 8086 3905 NVMe Datacenter SSD [Optane] 15mm 2.5" U.2 (P4800X) 2723 Wi-Fi 6 AX200 1a56 1654 Killer Wi-Fi 6 AX1650x (AX200NGW) 8086 0084 Wi-Fi 6 AX200NGW 2725 Wi-Fi 6E(802.11ax) AX210/AX1675* 2x2 [Typhoon Peak] 1a56 1673 Killer AX1675w 160MHz 1a56 1674 Killer Wi-Fi 6E AX1675x 160MHz 8086 0020 Wi-Fi 6 AX210 160MHz 8086 0024 Wi-Fi 6 AX210 160MHz 8086 0310 Wi-Fi 6 AX210 160MHz 8086 0510 Wi-Fi 6 AX210 160MHz 8086 0a10 Wi-Fi 6 AX210 160MHz 8086 2020 Wi-Fi 6 AX210 160MHz 8086 4020 Wi-Fi 6 AX210 160MHz 8086 6020 Wi-Fi 6 AX210 160MHz 8086 6024 Wi-Fi 6 AX210 160MHz 8086 e020 Wi-Fi 6 AX210 160MHz 8086 e024 Wi-Fi 6 AX210 160MHz 272b Wi-Fi 7(802.11be) AX1775*/AX1790*/BE20*/BE401/BE1750* 2x2 8086 00f0 BE200 320MHz [Gale Peak] 8086 00f4 BE200 320MHz [Gale Peak] 8086 02f4 BE202 160MHz [Misty Peak] 8086 40f0 BE200 320MHz [Gale Peak] 8086 42f4 BE202 160MHz [Misty Peak] 8086 e0f4 BE200 320MHz [Gale Peak] 2770 82945G/GZ/P/PL Memory Controller Hub 1028 01ad OptiPlex GX620 103c 2a3b Pavilion A1512X 1043 817a P5LD2-VM Mainboard 107b 5048 E4500 1462 7418 Wind PC MS-7418 1849 2770 ConRoe1333-D667 8086 544e DeskTop Board D945GTP 2771 82945G/GZ/P/PL PCI Express Root Port 2772 82945G/GZ Integrated Graphics Controller 103c 2a3b Pavilion A1512X 1462 7418 Wind PC MS-7418 1849 2772 ConRoe1333-D667 8086 544e DeskTop Board D945GTP 8086 d605 Desktop Board D945GCCR 2774 82955X Memory Controller Hub 2775 82955X PCI Express Root Port 2776 82945G/GZ Integrated Graphics Controller 2778 E7230/3000/3010 Memory Controller Hub 1028 01df PowerEdge SC440 1028 01e6 PowerEdge 860 2779 E7230/3000/3010 PCI Express Root Port 277a 82975X/3010 PCI Express Root Port 277c 82975X Memory Controller Hub 1043 8178 P5WDG2 WS Professional motherboard 277d 82975X PCI Express Root Port 2780 82915G/GV/GL/910GL [Grantsdale] Graphics Device 2782 82915G Integrated Graphics Controller 1043 2582 P5GD1-VW Mainboard 1734 105b Scenic W620 2792 Mobile 915GM/GMS/910GML Express Graphics Controller 1014 0582 ThinkPad X41 103c 099c NX6110/NC6120 103c 308a Compaq nc6220 Notebook PC 1043 1881 GMA 900 915GM Integrated Graphics e4bf 0ccd CCD-CALYPSO e4bf 0cd3 CD3-JIVE e4bf 58b1 XB1 27a0 Mobile 945GM/PM/GMS, 943/940GML and 945GT Express Memory Controller Hub 1025 006c 9814 WKMI 1028 01d7 XPS M1210 103c 309f Compaq nx9420 Notebook 103c 30a1 NC2400 103c 30a3 Compaq nw8440 103c 30d5 530 Laptop 1043 1237 A6J-Q008 1071 8209 Medion MIM 2240 Notebook PC [MD98100] 17aa 2015 ThinkPad T60 17aa 2017 ThinkPad R60/T60/X60 series 27a1 Mobile 945GM/PM/GMS, 943/940GML and 945GT Express PCI Express Root Port 103c 309f Compaq nx9420 Notebook 103c 30a3 Compaq nw8440 1071 8209 Medion MIM 2240 Notebook PC [MD98100] 27a2 Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller 103c 30a1 NC2400 103c 30d5 530 Laptop 17aa 201a ThinkPad R60/T60/X60 series 9902 1584 CCE MPL-D10H120F 27a6 Mobile 945GM/GMS/GME, 943/940GML Express Integrated Graphics Controller 103c 30a1 NC2400 103c 30d5 530 Laptop 1775 11cc CC11/CL11 integrated graphics (secondary) 17aa 201a ThinkPad R60/T60/X60 series 27ac Mobile 945GSE Express Memory Controller Hub 1775 11cc CC11/CL11 27ad Mobile 945GSE Express PCI Express Root Port 27ae Mobile 945GSE Express Integrated Graphics Controller 1775 11cc CC11/CL11 integrated graphics (primary) 27b0 82801GH (ICH7DH) LPC Interface Bridge 103c 2a3b Pavilion A1512X 8086 544e DeskTop Board D945GTP 27b8 82801GB/GR (ICH7 Family) LPC Interface Bridge 1028 01e6 PowerEdge 860 103c 2a8c Compaq 500B Microtower 1043 8179 P5B-MX/WiFi-AP, P5KPL-VM Motherboard 107b 5048 E4500 1462 7418 Wind PC MS-7418 1775 11cc CC11/CL11 8086 544e DeskTop Board D945GTP 27b9 82801GBM (ICH7-M) LPC Interface Bridge 1028 01d7 XPS M1210 103c 309f Compaq nx9420 Notebook 103c 30a1 NC2400 103c 30a3 Compaq nw8440 103c 30d5 530 Laptop 1071 8209 Medion MIM 2240 Notebook PC [MD98100] 10f7 8338 Panasonic CF-Y5 laptop 17aa 2009 ThinkPad R60/T60/X60 series 27bc NM10 Family LPC Controller 1043 83ad Eee PC 1015PX 105b 0d7c D270S/D250S Motherboard 144d c072 Notebook N150P 1458 5001 GA-D525TUD 8086 4f4d DeskTop Board D510MO 8086 544b Desktop Board D425KT 27bd 82801GHM (ICH7-M DH) LPC Interface Bridge 1025 006c 9814 WKMI 27c0 NM10/ICH7 Family SATA Controller [IDE mode] 1028 01ad OptiPlex GX620 1028 01df PowerEdge SC440 1028 01e6 PowerEdge 860 103c 2a8c Compaq 500B Microtower 1043 8179 P5B-MX/WiFi-AP, P5KPL-VM Motherboard 107b 5048 E4500 1462 2310 MSI Hetis 945 1462 7236 945P Neo3-F Rev. 2.2 motherboard 1462 7418 Wind PC MS-7418 1775 11cc CC11/CL11 8086 544b Desktop Board D425KT 8086 544e DeskTop Board D945GTP 27c1 NM10/ICH7 Family SATA Controller [AHCI mode] 1028 01df PowerEdge SC440 103c 2a3b Pavilion A1512X 1043 83ad Eee PC 1015PX 105b 0d7c D270S/D250S Motherboard 144d c072 Notebook N150P 1458 b005 GA-D525TUD 1775 11cc CC11/CL11 8086 4f4d DeskTop Board D510MO 8086 5842 DeskTop Board D975XBX 27c3 82801GR/GDH (ICH7R/ICH7DH) SATA Controller [RAID mode] 1775 11cc CC11/CL11 8086 544e DeskTop Board D945GTP 27c4 82801GBM/GHM (ICH7-M Family) SATA Controller [IDE mode] 1025 006c 9814 WKMI 1028 01d7 XPS M1210 1071 8209 Medion MIM 2240 Notebook PC [MD98100] 17aa 200e ThinkPad T60 27c5 82801GBM/GHM (ICH7-M Family) SATA Controller [AHCI mode] 103c 309f Compaq nx9420 Notebook 103c 30a3 Compaq nw8440 103c 30d5 530 Laptop 17aa 200d ThinkPad R60/T60/X60 series 27c6 82801GHM (ICH7-M DH) SATA Controller [RAID mode] 27c8 NM10/ICH7 Family USB UHCI Controller #1 1025 006c 9814 WKMI 1028 01ad OptiPlex GX620 1028 01d7 XPS M1210 1028 01df PowerEdge SC440 1028 01e6 PowerEdge 860 103c 2a3b Pavilion A1512X 103c 2a8c Compaq 500B Microtower 103c 309f Compaq nx9420 Notebook 103c 30a1 NC2400 103c 30a3 Compaq nw8440 103c 30d5 530 Laptop 1043 1237 A6J-Q008 1043 8179 P5B-MX/WiFi-AP, P5KPL-VM, P5LD2-VM Mainboard 1043 83ad Eee PC 1015PX 105b 0d7c D270S/D250S Motherboard 1071 8209 Medion MIM 2240 Notebook PC [MD98100] 107b 5048 E4500 144d c072 Notebook N150P 1458 5004 GA-D525TUD 1462 7418 Wind PC MS-7418 1775 11cc CC11/CL11 17aa 200a ThinkPad R60/T60/X60 series 8086 4f4d DeskTop Board D510MO 8086 544b Desktop Board D425KT 8086 544e DeskTop Board D945GTP 27c9 NM10/ICH7 Family USB UHCI Controller #2 1025 006c 9814 WKMI 1028 01ad OptiPlex GX620 1028 01d7 XPS M1210 1028 01df PowerEdge SC440 1028 01e6 PowerEdge 860 103c 2a3b Pavilion A1512X 103c 2a8c Compaq 500B Microtower 103c 309f Compaq nx9420 Notebook 103c 30a1 NC2400 103c 30a3 Compaq nw8440 1043 1237 A6J-Q008 1043 8179 P5B-MX/WiFi-AP, P5KPL-VM, P5LD2-VM Mainboard 1043 83ad Eee PC 1015PX 105b 0d7c D270S/D250S Motherboard 1071 8209 Medion MIM 2240 Notebook PC [MD98100] 107b 5048 E4500 144d c072 Notebook N150P 1458 5004 GA-D525TUD 1462 7418 Wind PC MS-7418 1775 11cc CC11/CL11 17aa 200a ThinkPad R60/T60/X60 series 8086 4f4d DeskTop Board D510MO 8086 544b Desktop Board D425KT 8086 544e DeskTop Board D945GTP 27ca NM10/ICH7 Family USB UHCI Controller #3 1025 006c 9814 WKMI 1028 01ad OptiPlex GX620 1028 01d7 XPS M1210 1028 01df PowerEdge SC440 1028 01e6 PowerEdge 860 103c 2a3b Pavilion A1512X 103c 2a8c Compaq 500B Microtower 103c 309f Compaq nx9420 Notebook 103c 30a1 NC2400 103c 30a3 Compaq nw8440 1043 1237 A6J-Q008 1043 8179 P5B-MX/WiFi-AP, P5KPL-VM, P5LD2-VM Mainboard 1043 83ad Eee PC 1015PX 105b 0d7c D270S/D250S Motherboard 1071 8209 Medion MIM 2240 Notebook PC [MD98100] 107b 5048 E4500 144d c072 Notebook N150P 1458 5004 GA-D525TUD 1462 7418 Wind PC MS-7418 1775 11cc CC11/CL11 17aa 200a ThinkPad R60/T60/X60 series 8086 4f4d DeskTop Board D510MO 8086 544e DeskTop Board D945GTP 27cb NM10/ICH7 Family USB UHCI Controller #4 1025 006c 9814 WKMI 1028 01ad OptiPlex GX620 1028 01d7 XPS M1210 1028 01df PowerEdge SC440 103c 2a3b Pavilion A1512X 103c 2a8c Compaq 500B Microtower 103c 309f Compaq nx9420 Notebook 103c 30a1 NC2400 103c 30a3 Compaq nw8440 1043 1237 A6J-Q008 1043 8179 P5B-MX/WiFi-AP, P5KPL-VM, P5LD2-VM Mainboard 1043 83ad Eee PC 1015PX 105b 0d7c D270S/D250S Motherboard 1071 8209 Medion MIM 2240 Notebook PC [MD98100] 107b 5048 E4500 144d c072 Notebook N150P 1458 5004 GA-D525TUD 1462 7418 Wind PC MS-7418 1775 11cc CC11/CL11 17aa 200a ThinkPad R60/T60/X60 series 8086 4f4d DeskTop Board D510MO 8086 544e DeskTop Board D945GTP 27cc NM10/ICH7 Family USB2 EHCI Controller 1025 006c 9814 WKMI 1028 01ad OptiPlex GX620 1028 01d7 XPS M1210 1028 01df PowerEdge SC440 1028 01e6 PowerEdge 860 103c 2a3b Pavilion A1512X 103c 2a8c Compaq 500B Microtower 103c 309f Compaq nx9420 Notebook 103c 30a1 NC2400 103c 30a3 Compaq nw8440 103c 30d5 530 Laptop 1043 1237 A6J-Q008 1043 8179 P5B-MX/WiFi-AP, P5KPL-VM, P5LD2-VM Mainboard 1043 83ad Eee PC 1015PX 105b 0d7c D270S/D250S Motherboard 1071 8209 Medion MIM 2240 Notebook PC [MD98100] 144d c072 Notebook N150P 1458 5006 GA-D525TUD 1462 7418 Wind PC MS-7418 1775 11cc CC11/CL11 17aa 200b ThinkPad R60/T60/X60 series 8086 4f4d DeskTop Board D510MO 8086 544b Desktop Board D425KT 8086 544e DeskTop Board D945GTP 27d0 NM10/ICH7 Family PCI Express Port 1 103c 309f Compaq nx9420 Notebook 103c 30a3 Compaq nw8440 1071 8209 Medion MIM 2240 Notebook PC [MD98100] 144d c072 Notebook N150P 1458 5001 GA-D525TUD 1462 7418 Wind PC MS-7418 1775 11cc CC11/CL11 17aa 2011 ThinkPad R60e 8086 544b Desktop Board D425KT 27d2 NM10/ICH7 Family PCI Express Port 2 103c 309f Compaq nx9420 Notebook 103c 30a3 Compaq nw8440 1071 8209 Medion MIM 2240 Notebook PC [MD98100] 144d c072 Notebook N150P 1462 7418 Wind PC MS-7418 1775 11cc CC11/CL11 17aa 2011 ThinkPad R60e 8086 544b Desktop Board D425KT 27d4 NM10/ICH7 Family PCI Express Port 3 1071 8209 Medion MIM 2240 Notebook PC [MD98100] 144d c072 Notebook N150P 1462 7418 Wind PC MS-7418 1775 11cc CC11/CL11 17aa 2011 ThinkPad R60e 8086 544b Desktop Board D425KT 27d6 NM10/ICH7 Family PCI Express Port 4 103c 30a3 Compaq nw8440 1071 8209 Medion MIM 2240 Notebook PC [MD98100] 144d c072 Notebook N150P 1462 7418 Wind PC MS-7418 1775 11cc CC11/CL11 17aa 2011 ThinkPad R60e 8086 544b Desktop Board D425KT 27d8 NM10/ICH7 Family High Definition Audio Controller 1025 006c 9814 WKMI 1028 01d7 XPS M1210 103c 2a3b Pavilion A1512X 103c 2a8c Compaq 500B Microtower 103c 309f Compaq nx9420 Notebook 103c 30a1 NC2400 103c 30a3 Compaq nw8440 103c 30d5 530 Laptop 1043 1123 A6J-Q008 1043 13c4 G2P 1043 817f P5LD2-VM Mainboard (Realtek ALC 882 codec) 1043 8249 P5B-MX/WiFi-AP 1043 8290 P5KPL-VM Motherboard 1043 82ea P5KPL-CM Motherboard 1043 8437 Eee PC 1015PX 105b 0d7c D270S/D250S Motherboard 1071 8207 Medion MIM 2240 Notebook PC [MD98100] 107b 5048 E4500 10f7 8338 Panasonic CF-Y5 laptop 1179 ff10 Toshiba Satellite A100-796 audio (Realtek ALC861) 1179 ff31 AC97 Data Fax SoftModem with SmartCP 1447 1043 Asus A8JP (Analog Devices AD1986A) 144d c072 Notebook N150P 1458 a002 GA-D525TUD (Realtek ALC887) 1458 a102 GA-8I945PG-RH Mainboard 1462 7418 Wind PC MS-7418 152d 0753 Softmodem 1734 10ad Conexant softmodem SmartCP 17aa 2010 ThinkPad R60/T60/X60 series 17aa 3802 3000 C200 audio [Realtek ALC861VD] 8086 1112 DeskTop Board D945GTP 8086 27d8 DeskTop Board D945GTP 8086 d618 DeskTop Board D510MO 8384 7680 STAC9221 HD Audio Codec 27da NM10/ICH7 Family SMBus Controller 1025 006c 9814 WKMI 1028 01ad OptiPlex GX620 1028 01d7 XPS M1210 1028 01df PowerEdge SC440 1028 01e6 PowerEdge 860 103c 2a3b Pavilion A1512X 103c 2a8c Compaq 500B Microtower 1043 8179 P5B-MX/WiFi-AP, P5KPL-VM Motherboard 105b 0d7c D270S/D250S Motherboard 1071 8209 Medion MIM 2240 Notebook PC [MD98100] 10f7 8338 Panasonic CF-Y5 laptop 144d c072 Notebook N150P 1458 5001 GA-8I945PG-RH/GA-D525TUD Mainboard 1462 7418 Wind PC MS-7418 1775 11cc CC11/CL11 17aa 200f ThinkPad R60/T60/X60 series 8086 4f4d DeskTop Board D510MO 8086 544b Desktop Board D425KT 8086 544e DeskTop Board D945GTP 8086 5842 DeskTop Board D975XBX 27dc NM10/ICH7 Family LAN Controller 103c 2a3b Pavilion A1512X 8086 308d DeskTop Board D945GTP 27dd 82801G (ICH7 Family) AC'97 Modem Controller 27de 82801G (ICH7 Family) AC'97 Audio Controller 1028 01ad OptiPlex GX620 1462 7267 Realtek ALC883 Audio Controller 1775 11cc CC11 integrated audio (AD1981BL codec) 27df 82801G (ICH7 Family) IDE Controller 1028 01df PowerEdge SC440 1028 01e6 PowerEdge 860 103c 2a3b Pavilion A1512X 103c 2a8c Compaq 500B Microtower 103c 309f Compaq nx9420 Notebook 103c 30a1 NC2400 103c 30a3 Compaq nw8440 103c 30d5 530 Laptop 1043 1237 A6J-Q008 1043 8179 P5B-MX/WiFi-AP, P5KPL-VM Motherboard 107b 5048 E4500 10f7 8338 Panasonic CF-Y5 laptop 1462 7418 Wind PC MS-7418 1775 11cc CC11/CL11 17aa 200c ThinkPad R60/T60/X60 series 8086 544e DeskTop Board D945GTP 27e0 82801GR/GH/GHM (ICH7 Family) PCI Express Port 5 1775 11cc CC11/CL11 27e2 82801GR/GH/GHM (ICH7 Family) PCI Express Port 6 1775 11cc CC11/CL11 2810 82801HB/HR (ICH8/R) LPC Interface Controller 1043 81ec P5B 2811 82801HEM (ICH8M-E) LPC Interface Controller 103c 30c1 Compaq 6910p 17aa 20b6 ThinkPad T61/R61 e4bf cc47 CCG-RUMBA 2812 82801HH (ICH8DH) LPC Interface Controller 2814 82801HO (ICH8DO) LPC Interface Controller 2815 82801HM (ICH8M) LPC Interface Controller 1025 0121 Aspire 5920G 1028 01f3 Inspiron 1420 1028 022f Inspiron 1525 103c 30c0 Compaq 6710b 103c 30cc Pavilion dv6700 103c 30d9 Presario C700 1043 1017 X58LE 104d 9005 Vaio VGN-FZ260E 104d 902d VAIO VGN-NR120E 17aa 20a5 ThinkPad R61 17c0 4083 Medion WIM 2210 Notebook PC [MD96850] 2820 82801H (ICH8 Family) 4 port SATA Controller [IDE mode] 1028 01da OptiPlex 745 1462 7235 P965 Neo MS-7235 mainboard 2821 82801HR/HO/HH (ICH8R/DO/DH) 6 port SATA Controller [AHCI mode] 2822 SATA Controller [RAID mode] 1028 020d Inspiron 530 103c 2a6f Asus IPIBL-LB Motherboard 1043 8277 P5K PRO Motherboard: 82801IR [ICH9R] 1462 7345 MS-7345 Motherboard: Intel 82801I/IR [ICH9/ICH9R] 2823 sSATA Controller [RAID Mode] 2824 82801HB (ICH8) 4 port SATA Controller [AHCI mode] 1043 81ec P5B 2825 82801HR/HO/HH (ICH8R/DO/DH) 2 port SATA Controller [IDE mode] 1028 01da OptiPlex 745 1462 7235 P965 Neo MS-7235 mainboard 2826 SATA Controller [RAID Mode] 1d49 0100 Intel RSTe SATA Software RAID 1d49 0101 Intel RSTe SATA Software RAID 1d49 0102 Intel RSTe SATA Software RAID 1d49 0103 Intel RSTe SATA Software RAID 1d49 0104 Intel RSTe SATA Software RAID 1d49 0105 Intel RSTe SATA Software RAID 2827 sSATA Controller [RAID Mode] 2828 82801HM/HEM (ICH8M/ICH8M-E) SATA Controller [IDE mode] 1028 01f3 Inspiron 1420 103c 30c0 Compaq 6710b 17aa 20a8 ThinkPad R61 e4bf cc47 CCG-RUMBA 2829 82801HM/HEM (ICH8M/ICH8M-E) SATA Controller [AHCI mode] 1025 0121 Aspire 5920G 1028 022f Inspiron 1525 103c 30c0 Compaq 6710b 103c 30c1 Compaq 6910p 103c 30cc Pavilion dv6700 103c 30d9 Presario C700 1043 1017 X58LE 104d 9005 Vaio VGN-FZ260E 104d 902d VAIO VGN-NR120E 17aa 20a7 ThinkPad T61/R61 17c0 4083 Medion WIM 2210 Notebook PC [MD96850] e4bf cc47 CCG-RUMBA 282a 82801 Mobile SATA Controller [RAID mode] 1028 040b Latitude E6510 e4bf 50c1 PC1-GROOVE 282f tSATA Controller [RAID Mode] 2830 82801H (ICH8 Family) USB UHCI Controller #1 1025 0121 Aspire 5920G 1028 01da OptiPlex 745 1028 01f3 Inspiron 1420 1028 022f Inspiron 1525 103c 30c0 Compaq 6710b 103c 30c1 Compaq 6910p 103c 30cc Pavilion dv6700 103c 30d9 Presario C700 1043 1017 X58LE 1043 81ec P5B 104d 9005 Vaio VGN-FZ260E 104d 902d VAIO VGN-NR120E 1462 7235 P965 Neo MS-7235 mainboard 17aa 20aa ThinkPad T61/R61 17c0 4083 Medion WIM 2210 Notebook PC [MD96850] e4bf cc47 CCG-RUMBA 2831 82801H (ICH8 Family) USB UHCI Controller #2 1025 0121 Aspire 5920G 1028 01da OptiPlex 745 1028 01f3 Inspiron 1420 1028 022f Inspiron 1525 103c 30c0 Compaq 6710b 103c 30c1 Compaq 6910p 103c 30cc Pavilion dv6700 103c 30d9 Presario C700 1043 1017 X58LE 1043 81ec P5B 104d 9005 Vaio VGN-FZ260E 104d 902d VAIO VGN-NR120E 1462 7235 P965 Neo MS-7235 mainboard 17aa 20aa ThinkPad T61/R61 17c0 4083 Medion WIM 2210 Notebook PC [MD96850] e4bf cc47 CCG-RUMBA 2832 82801H (ICH8 Family) USB UHCI Controller #3 1025 0121 Aspire 5920G 1028 01da OptiPlex 745 1028 01f3 Inspiron 1420 1028 022f Inspiron 1525 103c 30c0 Compaq 6710b 103c 30c1 Compaq 6910p 103c 30cc Pavilion dv6700 103c 30d9 Presario C700 1043 1017 X58LE 1043 81ec P5B 104d 9005 Vaio VGN-FZ260E 104d 902d VAIO VGN-NR120E 17aa 20aa ThinkPad T61/R61 17c0 4083 Medion WIM 2210 Notebook PC [MD96850] e4bf cc47 CCG-RUMBA 2833 82801H (ICH8 Family) USB UHCI Controller #4 1043 81ec P5B 2834 82801H (ICH8 Family) USB UHCI Controller #4 1025 0121 Aspire 5920G 1028 01da OptiPlex 745 1028 01f3 Inspiron 1420 1028 022f Inspiron 1525 103c 30c0 Compaq 6710b 103c 30c1 Compaq 6910p 103c 30cc Pavilion dv6700 1043 1017 X58LE 1043 81ec P5B 104d 9005 Vaio VGN-FZ260E 104d 902d VAIO VGN-NR120E 1462 7235 P965 Neo MS-7235 mainboard 17aa 20aa ThinkPad T61/R61 17c0 4083 Medion WIM 2210 Notebook PC [MD96850] e4bf cc47 CCG-RUMBA 2835 82801H (ICH8 Family) USB UHCI Controller #5 1025 0121 Aspire 5920G 1028 01da OptiPlex 745 1028 01f3 Inspiron 1420 1028 022f Inspiron 1525 103c 30c0 Compaq 6710b 103c 30c1 Compaq 6910p 103c 30cc Pavilion dv6700 1043 1017 X58LE 1043 81ec P5B 104d 9005 Vaio VGN-FZ260E 104d 902d VAIO VGN-NR120E 17aa 20aa Thinkpad T61/R61 17c0 4083 Medion WIM 2210 Notebook PC [MD96850] e4bf cc47 CCG-RUMBA 2836 82801H (ICH8 Family) USB2 EHCI Controller #1 1025 0121 Aspire 5920G 1028 01da OptiPlex 745 1028 01f3 Inspiron 1420 1028 022f Inspiron 1525 103c 30c0 Compaq 6710b 103c 30c1 Compaq 6910p 103c 30cc Pavilion dv6700 103c 30d9 Presario C700 1043 1017 X58LE 1043 81ec P5B 104d 9005 Vaio VGN-FZ260E 104d 902d VAIO VGN-NR120E 1462 7235 P965 Neo MS-7235 mainboard 17aa 20ab ThinkPad T61/R61 17c0 4083 Medion WIM 2210 Notebook PC [MD96850] e4bf cc47 CCG-RUMBA 283a 82801H (ICH8 Family) USB2 EHCI Controller #2 1025 0121 Aspire 5920G 1028 01da OptiPlex 745 1028 01f3 Inspiron 1420 1028 022f Inspiron 1525 103c 30c0 Compaq 6710b 103c 30c1 Compaq 6910p 103c 30cc Pavilion dv6700 1043 1017 X58LE 1043 81ec P5B 104d 9005 Vaio VGN-FZ260E 104d 902d VAIO VGN-NR120E 17aa 20ab ThinkPad T61/R61 17c0 4083 Medion WIM 2210 Notebook PC [MD96850] e4bf cc47 CCG-RUMBA 283e 82801H (ICH8 Family) SMBus Controller 1025 0121 Aspire 5920G 1028 01da OptiPlex 745 1028 01f3 Inspiron 1420 1028 022f Inspiron 1525 103c 30d9 Presario C700 1043 1017 X58LE 1043 81ec P5B 104d 9005 Vaio VGN-FZ260E 104d 9008 Vaio VGN-SZ79SN_C 104d 902d VAIO VGN-NR120E 1462 7235 P965 Neo MS-7235 mainboard 17aa 20a9 ThinkPad T61/R61 17c0 4083 Medion WIM 2210 Notebook PC [MD96850] e4bf cc47 CCG-RUMBA 283f 82801H (ICH8 Family) PCI Express Port 1 1028 01da OptiPlex 745 103c 30c1 Compaq 6910p 1043 1017 X58LE 1043 81ec P5B 104d 902d VAIO VGN-NR120E 17aa 20ad ThinkPad T61/R61 17c0 4083 Medion WIM 2210 Notebook PC [MD96850] 2841 82801H (ICH8 Family) PCI Express Port 2 103c 30c1 Compaq 6910p 1043 1017 X58LE 1043 81ec P5B 104d 902d VAIO VGN-NR120E 17aa 20ad ThinkPad T61/R61 17c0 4083 Medion WIM 2210 Notebook PC [MD96850] 2843 82801H (ICH8 Family) PCI Express Port 3 1043 1017 X58LE 1043 81ec P5B 104d 902d VAIO VGN-NR120E 17aa 20ad ThinkPad T61/R61 17c0 4083 Medion WIM 2210 Notebook PC [MD96850] 2845 82801H (ICH8 Family) PCI Express Port 4 1043 1017 X58LE 1043 81ec P5B 17aa 20ad ThinkPad T61/R61 17c0 4083 Medion WIM 2210 Notebook PC [MD96850] 2847 82801H (ICH8 Family) PCI Express Port 5 1028 01da OptiPlex 745 103c 30c1 Compaq 6910p 1043 81ec P5B 17aa 20ad ThinkPad T61/R61 17c0 4083 Medion WIM 2210 Notebook PC [MD96850] 2849 82801H (ICH8 Family) PCI Express Port 6 284b 82801H (ICH8 Family) HD Audio Controller 1025 011f Realtek ALC268 audio codec 1025 0121 Aspire 5920G 1025 0145 Realtek ALC889 (Aspire 8920G w. Dolby Theater) 1028 01da OptiPlex 745 1028 01f3 Inspiron 1420 1028 01f9 Latitude D630 1028 01ff Precision M4300 1028 022f Inspiron 1525 1028 0256 Studio 1735 103c 2802 Compaq dc7700p 103c 30c0 Compaq 6710b 103c 30c1 Compaq 6910p 103c 30cc Pavilion dv6700 1043 1339 M51S series 1043 17f3 X58LE 1043 81ec P5B 104d 9005 Vaio VGN-FZ260E 104d 9008 Vaio VGN-SZ79SN_C 104d 9016 Sony VAIO VGN-AR51M 104d 902d VAIO VGN-NR120E 14f1 5051 Presario C700 17aa 20ac ThinkPad T61/R61 17c0 4088 Medion WIM 2210 Notebook PC [MD96850] 8384 7616 Dell Vostro 1400 e4bf cc47 CCG-RUMBA 284f 82801H (ICH8 Family) Thermal Reporting Device 2850 82801HM/HEM (ICH8M/ICH8M-E) IDE Controller 1025 0121 Aspire 5920G 1028 01f3 Inspiron 1420 1028 022f Inspiron 1525 103c 30c0 Compaq 6710b 103c 30c1 Compaq 6910p 103c 30cc Pavilion dv6700 103c 30d9 Presario C700 1043 1017 X58LE 104d 9005 Vaio VGN-FZ260E 104d 902d VAIO VGN-NR120E 17aa 20a6 ThinkPad T61/R61 17c0 4083 Medion WIM 2210 Notebook PC [MD96850] e4bf cc47 CCG-RUMBA 28c0 Volume Management Device NVMe RAID Controller 2912 82801IH (ICH9DH) LPC Interface Controller 2914 82801IO (ICH9DO) LPC Interface Controller 1028 0211 Optiplex 755 2916 82801IR (ICH9R) LPC Interface Controller 1028 020d Inspiron 530 103c 2a6f Asus IPIBL-LB Motherboard 1043 8277 P5K PRO Motherboard 1462 7345 MS-7345 Motherboard 8086 5044 Desktop Board DP35DP 2917 ICH9M-E LPC Interface Controller 17aa 20f5 ThinkPad T400 e4bf cc4d CCM-BOOGIE 2918 82801IB (ICH9) LPC Interface Controller 1028 0236 PowerEdge R610 82801IB (ICH9) LPC Interface Controller 1462 7360 G33/P35 Neo 1af4 1100 QEMU Virtual Machine 2919 ICH9M LPC Interface Controller 2920 82801IR/IO/IH (ICH9R/DO/DH) 4 port SATA Controller [IDE mode] 1028 020d Inspiron 530 1028 020f PowerEdge R300 onboard SATA Controller 1028 0210 PowerEdge T300 onboard SATA Controller 1028 0211 Optiplex 755 1028 023c PowerEdge R200 onboard SATA Controller 1043 8277 P5K PRO Motherboard: 82801IR [ICH9R] 1462 7345 MS-7345 Motherboard: Intel 82801IR [ICH9R] 2921 82801IB (ICH9) 2 port SATA Controller [IDE mode] 1028 0235 PowerEdge R710 SATA IDE Controller 1028 0236 PowerEdge R610 SATA IDE Controller 1028 0237 PowerEdge T610 SATA IDE Controller 1462 7360 G33/P35 Neo 2922 82801IR/IO/IH (ICH9R/DO/DH) 6 port SATA Controller [AHCI mode] 1043 8277 P5K PRO Motherboard: 82801IR [ICH9R] 1462 7345 MS-7345 Motherboard: Intel 82801IR [ICH9R] 1af4 1100 QEMU Virtual Machine 8086 5044 Desktop Board DP35DP 2923 82801IB (ICH9) 4 port SATA Controller [AHCI mode] 2925 82801IR/IO (ICH9R/DO) SATA Controller [RAID mode] 1734 10e0 System Board D2542 8086 2925 System Board D2542 2926 82801I (ICH9 Family) 2 port SATA Controller [IDE mode] 1028 020d Inspiron 530 1028 020f PowerEdge R300 onboard SATA Controller 1028 0210 PowerEdge T300 onboard SATA Controller 1028 0211 Optiplex 755 1043 8277 P5K PRO Motherboard: 82801IR [ICH9R] 1462 7345 MS-7345 Motherboard: Intel 82801IR [ICH9R] 1462 7360 G33/P35 Neo 2928 82801IBM/IEM (ICH9M/ICH9M-E) 2 port SATA Controller [IDE mode] 2929 82801IBM/IEM (ICH9M/ICH9M-E) 4 port SATA Controller [AHCI mode] 103c 3628 dv6-1190en 17aa 20f8 ThinkPad T400 e4bf cc4d CCM-BOOGIE 292c 82801IEM (ICH9M-E) SATA Controller [RAID mode] 292d 82801IBM/IEM (ICH9M/ICH9M-E) 2 port SATA Controller [IDE mode] e4bf cc4d CCM-BOOGIE 2930 82801I (ICH9 Family) SMBus Controller 1028 020d Inspiron 530 1028 0211 Optiplex 755 103c 2a6f Asus IPIBL-LB Motherboard 103c 3628 dv6-1190en 1043 8277 P5K PRO Motherboard: 82801IR [ICH9R] 1462 7345 MS-7345 Motherboard: Intel 82801I/IR [ICH9/ICH9R] 1462 7360 G33/P35 Neo 17aa 20f9 ThinkPad T400 1af4 1100 QEMU Virtual Machine 8086 5044 Desktop Board DP35DP e4bf cc4d CCM-BOOGIE 2932 82801I (ICH9 Family) Thermal Subsystem 103c 3628 dv6-1190en 2934 82801I (ICH9 Family) USB UHCI Controller #1 1028 020d Inspiron 530 1028 020f PowerEdge R300 onboard UHCI 1028 0210 PowerEdge T300 onboard UHCI 1028 0211 Optiplex 755 1028 0235 PowerEdge R710 USB UHCI Controller 1028 0236 PowerEdge R610 USB UHCI Controller 1028 0237 PowerEdge T610 USB UHCI Controller 1028 023c PowerEdge R200 onboard UHCI 1028 0287 PowerEdge M610 onboard UHCI 1028 029c PowerEdge M710 USB UHCI Controller 1028 2011 Optiplex 755 103c 2a6f Asus IPIBL-LB Motherboard 1043 8277 P5K PRO Motherboard: 82801IR [ICH9R] 1462 7345 MS-7345 Motherboard: Intel 82801I/IR [ICH9/ICH9R] 1462 7360 G33/P35 Neo 17aa 20f0 ThinkPad T400 1af4 1100 QEMU Virtual Machine 8086 5044 Desktop Board DP35DP e4bf cc4d CCM-BOOGIE 2935 82801I (ICH9 Family) USB UHCI Controller #2 1028 020d Inspiron 530 1028 020f PowerEdge R300 onboard UHCI 1028 0210 PowerEdge T300 onboard UHCI 1028 0211 Optiplex 755 1028 0235 PowerEdge R710 USB UHCI Controller 1028 0236 PowerEdge R610 USB UHCI Controller 1028 0237 PowerEdge T610 USB UHCI Controller 1028 023c PowerEdge R200 onboard UHCI 1028 0287 PowerEdge M610 onboard UHCI 1028 029c PowerEdge M710 USB UHCI Controller 103c 2a6f Asus IPIBL-LB Motherboard 1043 8277 P5K PRO Motherboard: 82801IR [ICH9R] 1462 7345 MS-7345 Motherboard: Intel 82801I/IR [ICH9/ICH9R] 1462 7360 G33/P35 Neo 17aa 20f0 ThinkPad T400 1af4 1100 QEMU Virtual Machine 8086 5044 Desktop Board DP35DP e4bf cc4d CCM-BOOGIE 2936 82801I (ICH9 Family) USB UHCI Controller #3 1028 020d Inspiron 530 1028 020f PowerEdge R300 onboard UHCI 1028 0210 PowerEdge T300 onboard UHCI 1028 0211 Optiplex 755 1028 0237 PowerEdge T610 USB UHCI Controller 1028 023c PowerEdge R200 onboard UHCI 1028 0287 PowerEdge M610 onboard UHCI 1028 029c PowerEdge M710 USB UHCI Controller 103c 2a6f Asus IPIBL-LB Motherboard 1043 8277 P5K PRO Motherboard: 82801IR [ICH9R] 1462 7345 MS-7345 Motherboard: Intel 82801I/IR [ICH9/ICH9R] 1462 7360 G33/P35 Neo 17aa 20f0 ThinkPad T400 1af4 1100 QEMU Virtual Machine 8086 5044 Desktop Board DP35DP e4bf cc4d CCM-BOOGIE 2937 82801I (ICH9 Family) USB UHCI Controller #4 1028 020d Inspiron 530 1028 0211 Optiplex 755 1028 0235 PowerEdge R710 USB UHCI Controller 1028 0236 PowerEdge R610 USB UHCI Controller 1028 0237 PowerEdge T610 USB UHCI Controller 1028 0287 PowerEdge M610 onboard UHCI 1028 029c PowerEdge M710 USB UHCI Controller 1028 2011 Optiplex 755 103c 2a6f Asus IPIBL-LB Motherboard 1043 8277 P5K PRO Motherboard: 82801IR [ICH9R] 1462 7345 MS-7345 Motherboard: Intel 82801I/IR [ICH9/ICH9R] 1462 7360 G33/P35 Neo 17aa 20f0 ThinkPad T400 1af4 1100 QEMU Virtual Machine 8086 2937 Optiplex 755 8086 2942 828011 (ICH9 Family ) USB UHCI Controller 8086 5044 Desktop Board DP35DP e4bf cc4d CCM-BOOGIE 2938 82801I (ICH9 Family) USB UHCI Controller #5 1028 020d Inspiron 530 1028 0211 Optiplex 755 1028 0235 PowerEdge R710 USB UHCI Controller 1028 0236 PowerEdge R610 USB UHCI Controller 1028 0237 PowerEdge T610 USB UHCI Controller 1028 0287 PowerEdge M610 onboard UHCI 1028 029c PowerEdge M710 USB UHCI Controller 103c 2a6f Asus IPIBL-LB Motherboard 1043 8277 P5K PRO Motherboard: 82801IR [ICH9R] 1462 7345 MS-7345 Motherboard: Intel 82801I/IR [ICH9/ICH9R] 1462 7360 G33/P35 Neo 17aa 20f0 ThinkPad T400 1af4 1100 QEMU Virtual Machine 8086 2938 Optiplex 755 8086 5044 Desktop Board DP35DP e4bf cc4d CCM-BOOGIE 2939 82801I (ICH9 Family) USB UHCI Controller #6 1028 020d Inspiron 530 1028 0210 PowerEdge T300 onboard UHCI 1028 0237 PowerEdge T610 USB UHCI Controller 103c 2a6f Asus IPIBL-LB Motherboard 1043 8277 P5K PRO Motherboard: 82801IR [ICH9R] 1462 7345 MS-7345 Motherboard: Intel 82801I/IR [ICH9/ICH9R] 1462 7360 G33/P35 Neo 17aa 20f0 ThinkPad T400 1af4 1100 QEMU Virtual Machine 8086 5044 Desktop Board DP35DP e4bf cc4d CCM-BOOGIE 293a 82801I (ICH9 Family) USB2 EHCI Controller #1 1028 020d Inspiron 530 1028 020f PowerEdge R300 onboard EHCI 1028 0210 PowerEdge T300 onboard EHCI 1028 0211 Optiplex 755 1028 0235 PowerEdge R710 USB EHCI Controller 1028 0236 PowerEdge R610 USB EHCI Controller 1028 0237 PowerEdge T610 USB EHCI Controller 1028 023c PowerEdge R200 onboard EHCI 1028 0287 PowerEdge M610 onboard EHCI 1028 029c PowerEdge M710 USB EHCI Controller 103c 2a6f Asus IPIBL-LB Motherboard 1043 8277 P5K PRO Motherboard: 82801IR [ICH9R] 1462 7345 MS-7345 Motherboard: Intel 82801I/IR [ICH9/ICH9R] 1462 7360 G33/P35 Neo 17aa 20f1 ThinkPad T400 1af4 1100 QEMU Virtual Machine 8086 5044 Desktop Board DP35DP e4bf cc4d CCM-BOOGIE 293c 82801I (ICH9 Family) USB2 EHCI Controller #2 1028 020d Inspiron 530 1028 0211 Optiplex 755 1028 0235 PowerEdge R710 USB EHCI Controller 1028 0236 PowerEdge R610 USB EHCI Controller 1028 0237 PowerEdge T610 USB EHCI Controller 1028 0287 PowerEdge M610 onboard EHCI 1028 029c PowerEdge M710 USB EHCI Controller 103c 2a6f Asus IPIBL-LB Motherboard 1043 8277 P5K PRO Motherboard: 82801IR [ICH9R] 1462 7345 MS-7345 Motherboard: Intel 82801I/IR [ICH9/ICH9R] 1462 7360 G33/P35 Neo 17aa 20f1 ThinkPad T400 1af4 1100 QEMU Virtual Machine 8086 293c Optiplex 755 8086 5044 Desktop Board DP35DP e4bf cc4d CCM-BOOGIE 293e 82801I (ICH9 Family) HD Audio Controller 1028 020d Inspiron 530 1028 0211 Optiplex 755 103c 2a6f Asus IPIBL-LB Motherboard 103c 3628 dv6-1190en 1043 829f P5K PRO Motherboard: 82801IR [ICH9R] 1462 735a MS-7345 Motherboard: Intel 82801I/IR [ICH9/ICH9R] 1462 7360 G33/P35 Neo 17aa 20f2 ThinkPad T400 1af4 1100 QEMU Virtual Machine 8086 293e Optiplex 755 8086 2940 Optiplex 755 e4bf cc4d CCM-BOOGIE 2940 82801I (ICH9 Family) PCI Express Port 1 1028 020d Inspiron 530 1028 0211 Optiplex 755 103c 2a6f Asus IPIBL-LB Motherboard 1043 8277 P5K PRO Motherboard: 82801IR [ICH9R] 1462 7345 MS-7345 Motherboard: Intel 82801I/IR [ICH9/ICH9R] 8086 2940 Optiplex 755 2942 82801I (ICH9 Family) PCI Express Port 2 1028 020d Inspiron 530 2944 82801I (ICH9 Family) PCI Express Port 3 1028 020d Inspiron 530 103c 2a6f Asus IPIBL-LB Motherboard 2946 82801I (ICH9 Family) PCI Express Port 4 1028 020d Inspiron 530 2948 82801I (ICH9 Family) PCI Express Port 5 1028 020d Inspiron 530 1043 8277 P5K PRO Motherboard: 82801IR [ICH9R] 1462 7345 MS-7345 Motherboard: Intel 82801I/IR [ICH9/ICH9R] 294a 82801I (ICH9 Family) PCI Express Port 6 1028 020d Inspiron 530 1043 8277 P5K PRO Motherboard: 82801IR [ICH9R] 1462 7345 MS-7345 Motherboard: Intel 82801I/IR [ICH9/ICH9R] 294c 82566DC-2 Gigabit Network Connection 17aa 302e 82566DM-2 Gigabit Network Connection 2970 82946GZ/PL/GL Memory Controller Hub 1043 823b P5B-MX/WiFi-AP 2971 82946GZ/PL/GL PCI Express Root Port 2972 82946GZ/GL Integrated Graphics Controller 1043 823b P5B-MX/WiFi-AP 2973 82946GZ/GL Integrated Graphics Controller 2974 82946GZ/GL HECI Controller 2975 82946GZ/GL HECI Controller 2976 82946GZ/GL PT IDER Controller 2977 82946GZ/GL KT Controller 2980 82G35 Express DRAM Controller 2981 82G35 Express PCI Express Root Port 2982 82G35 Express Integrated Graphics Controller 2983 82G35 Express Integrated Graphics Controller 2984 82G35 Express HECI Controller 2990 82Q963/Q965 Memory Controller Hub 1028 01da OptiPlex 745 2991 82Q963/Q965 PCI Express Root Port 2992 82Q963/Q965 Integrated Graphics Controller 2993 82Q963/Q965 Integrated Graphics Controller 2994 82Q963/Q965 HECI Controller 2995 82Q963/Q965 HECI Controller 2996 82Q963/Q965 PT IDER Controller 2997 82Q963/Q965 KT Controller 29a0 82P965/G965 Memory Controller Hub 1043 81ea P5B 1462 7276 MS-7276 [G965MDH] 29a1 82P965/G965 PCI Express Root Port 29a2 82G965 Integrated Graphics Controller 1462 7276 MS-7276 [G965MDH] 29a3 82G965 Integrated Graphics Controller 29a4 82P965/G965 HECI Controller 29a5 82P965/G965 HECI Controller 29a6 82P965/G965 PT IDER Controller 29a7 82P965/G965 KT Controller 29b0 82Q35 Express DRAM Controller 1028 0211 OptiPlex 755 29b1 82Q35 Express PCI Express Root Port 1028 0211 OptiPlex 755 29b2 82Q35 Express Integrated Graphics Controller 1028 0211 OptiPlex 755 29b3 82Q35 Express Integrated Graphics Controller 1028 0211 OptiPlex 755 29b4 82Q35 Express MEI Controller 1028 0211 OptiPlex 755 29b5 82Q35 Express MEI Controller 29b6 82Q35 Express PT IDER Controller 1028 0211 OptiPlex 755 29b7 82Q35 Express Serial KT Controller 1028 0211 OptiPlex 755 29c0 82G33/G31/P35/P31 Express DRAM Controller 1028 020d Inspiron 530 103c 2a6f Asus IPIBL-LB Motherboard 1043 8276 P5K PRO Motherboard: Intel 82P35 Northbridge 1043 82b0 P5KPL-VM Motherboard 1462 7345 MS-7345 Motherboard: Intel 82G33/P35 Northbridge 1462 7360 G33/P35 Neo 1af4 1100 QEMU Virtual Machine 8086 5044 Desktop Board DP35DP 29c1 82G33/G31/P35/P31 Express PCI Express Root Port 1028 020d Inspiron 530 1043 8276 P5K PRO Motherboard: Intel 82P35 Northbridge 29c2 82G33/G31 Express Integrated Graphics Controller 1028 020d Inspiron 530 1043 82b0 P5KPL-VM Motherboard 29c3 82G33/G31 Express Integrated Graphics Controller 1028 020d Inspiron 530 1043 82b0 P5KPL-VM Motherboard 29c4 82G33/G31/P35/P31 Express MEI Controller 8086 5044 Desktop Board DP35DP 29c5 82G33/G31/P35/P31 Express MEI Controller 29c6 82G33/G31/P35/P31 Express PT IDER Controller 29c7 82G33/G31/P35/P31 Express Serial KT Controller 29cf Virtual HECI Controller 29d0 82Q33 Express DRAM Controller 29d1 82Q33 Express PCI Express Root Port 29d2 82Q33 Express Integrated Graphics Controller 29d3 82Q33 Express Integrated Graphics Controller 29d4 82Q33 Express MEI Controller 29d5 82Q33 Express MEI Controller 29d6 82Q33 Express PT IDER Controller 29d7 82Q33 Express Serial KT Controller 29e0 82X38/X48 Express DRAM Controller 29e1 82X38/X48 Express Host-Primary PCI Express Bridge 29e4 82X38/X48 Express MEI Controller 29e5 82X38/X48 Express MEI Controller 29e6 82X38/X48 Express PT IDER Controller 29e7 82X38/X48 Express Serial KT Controller 29e9 82X38/X48 Express Host-Secondary PCI Express Bridge 29f0 3200/3210 Chipset DRAM Controller 29f1 3200/3210 Chipset Host-Primary PCI Express Bridge 29f4 3200/3210 Chipset MEI Controller 29f5 3200/3210 Chipset MEI Controller 29f6 3200/3210 Chipset PT IDER Controller 29f7 3200/3210 Chipset Serial KT Controller 29f9 3210 Chipset Host-Secondary PCI Express Bridge 2a00 Mobile PM965/GM965/GL960 Memory Controller Hub 1025 0121 Aspire 5920G 1028 01f3 Inspiron 1420 1028 022f Inspiron 1525 103c 30c0 Compaq 6710b 103c 30c1 Compaq 6910p 103c 30c5 Compaq 8510p 103c 30cc Pavilion dv6700 103c 30d9 Presario C700 1043 1017 X58LE 104d 9005 Vaio VGN-FZ260E 104d 902d VAIO VGN-NR120E 17aa 20b1 ThinkPad T61 17aa 20b3 ThinkPad T61/R61 17c0 4082 Medion WIM 2210 Notebook PC [MD96850] e4bf cc47 CCG-RUMBA 2a01 Mobile PM965/GM965/GL960 PCI Express Root Port 2a02 Mobile GM965/GL960 Integrated Graphics Controller (primary) 1028 01f3 Inspiron 1420 1028 01f9 Latitude D630 1028 022f Inspiron 1525 103c 30c0 Compaq 6710b 103c 30d9 Presario C700 1043 14e2 X58LE 104d 902d VAIO VGN-NR120E 17aa 20b5 GM965 [X3100] on ThinkPad T61/R61 17c0 4082 GM965 on Medion WIM 2210 Notebook PC [MD96850] e4bf cc47 CCG-RUMBA 2a03 Mobile GM965/GL960 Integrated Graphics Controller (secondary) 1028 01f3 Inspiron 1420 1028 022f Inspiron 1525 103c 30c0 Compaq 6710b 103c 30d9 Presario C700 1043 14e2 X58LE 104d 902d VAIO VGN-NR120E 17aa 20b5 GM965 [X3100] on ThinkPad T61/R61 17c0 4082 GM965 on Medion WIM 2210 Notebook PC [MD96850] e4bf cc47 CCG-RUMBA 2a04 Mobile PM965/GM965 MEI Controller 103c 30c1 Compaq 6910p 2a05 Mobile PM965/GM965 MEI Controller 2a06 Mobile PM965/GM965 PT IDER Controller 103c 30c1 Compaq 6910p 2a07 Mobile PM965/GM965 KT Controller 103c 30c1 Compaq 6910p 2a10 Mobile GME965/GLE960 Memory Controller Hub e4bf cc47 CCG-RUMBA 2a11 Mobile GME965/GLE960 PCI Express Root Port 2a12 Mobile GME965/GLE960 Integrated Graphics Controller e4bf cc47 CCG-RUMBA 2a13 Mobile GME965/GLE960 Integrated Graphics Controller e4bf cc47 CCG-RUMBA 2a14 Mobile GME965/GLE960 MEI Controller 2a15 Mobile GME965/GLE960 MEI Controller 2a16 Mobile GME965/GLE960 PT IDER Controller 2a17 Mobile GME965/GLE960 KT Controller 2a40 Mobile 4 Series Chipset Memory Controller Hub 17aa 20e0 ThinkPad T400 e4bf cc4d CCM-BOOGIE 2a41 Mobile 4 Series Chipset PCI Express Graphics Port e4bf cc4d CCM-BOOGIE 2a42 Mobile 4 Series Chipset Integrated Graphics Controller 1028 02aa Dell Inspiron 1545 17aa 2112 ThinkPad T400 e4bf cc4d CCM-BOOGIE 2a43 Mobile 4 Series Chipset Integrated Graphics Controller 17aa 2112 ThinkPad T400 e4bf cc4d CCM-BOOGIE 2a44 Mobile 4 Series Chipset MEI Controller 17aa 20e6 ThinkPad T400 2a45 Mobile 4 Series Chipset MEI Controller 2a46 Mobile 4 Series Chipset PT IDER Controller 2a47 Mobile 4 Series Chipset AMT SOL Redirection 2a50 Cantiga MEI Controller 2a51 Cantiga MEI Controller 2a52 Cantiga PT IDER Controller 2a53 Cantiga AMT SOL Redirection 2b00 Xeon Processor E7 Product Family System Configuration Controller 1 2b02 Xeon Processor E7 Product Family System Configuration Controller 2 2b04 Xeon Processor E7 Product Family Power Controller 2b08 Xeon Processor E7 Product Family Caching Agent 0 2b0c Xeon Processor E7 Product Family Caching Agent 1 2b10 Xeon Processor E7 Product Family QPI Home Agent 0 2b13 Xeon Processor E7 Product Family Memory Controller 0c 2b14 Xeon Processor E7 Product Family Memory Controller 0a 2b16 Xeon Processor E7 Product Family Memory Controller 0b 2b18 Xeon Processor E7 Product Family QPI Home Agent 1 2b1b Xeon Processor E7 Product Family Memory Controller 1c 2b1c Xeon Processor E7 Product Family Memory Controller 1a 2b1e Xeon Processor E7 Product Family Memory Controller 1b 2b20 Xeon Processor E7 Product Family Last Level Cache Coherence Engine 0 2b22 Xeon Processor E7 Product Family System Configuration Controller 3 2b24 Xeon Processor E7 Product Family Last Level Cache Coherence Engine 1 2b28 Xeon Processor E7 Product Family Last Level Cache Coherence Engine 2 2b2a Xeon Processor E7 Product Family System Configuration Controller 4 2b2c Xeon Processor E7 Product Family Last Level Cache Coherence Engine 3 2b30 Xeon Processor E7 Product Family Last Level Cache Coherence Engine 4 2b34 Xeon Processor E7 Product Family Last Level Cache Coherence Engine 5 2b38 Xeon Processor E7 Product Family Last Level Cache Coherence Engine 6 2b3c Xeon Processor E7 Product Family Last Level Cache Coherence Engine 7 2b40 Xeon Processor E7 Product Family QPI Router Port 0-1 2b42 Xeon Processor E7 Product Family QPI Router Port 2-3 2b44 Xeon Processor E7 Product Family QPI Router Port 4-5 2b46 Xeon Processor E7 Product Family QPI Router Port 6-7 2b48 Xeon Processor E7 Product Family Test and Debug 0 2b4c Xeon Processor E7 Product Family Test and Debug 1 2b50 Xeon Processor E7 Product Family QPI Physical Port 0: REUT control/status 2b52 Xeon Processor E7 Product Family QPI Physical Port 0: Misc. control/status 2b54 Xeon Processor E7 Product Family QPI Physical Port 1: REUT control/status 2b56 Xeon Processor E7 Product Family QPI Physical Port 1: Misc. control/status 2b58 Xeon Processor E7 Product Family QPI Physical Port 2: REUT control/status 2b5a Xeon Processor E7 Product Family QPI Physical Port 2: Misc. control/status 2b5c Xeon Processor E7 Product Family QPI Physical Port 3: REUT control/status 2b5e Xeon Processor E7 Product Family QPI Physical Port 3: Misc. control/status 2b60 Xeon Processor E7 Product Family SMI Physical Port 0: REUT control/status 2b62 Xeon Processor E7 Product Family SMI Physical Port 0: Misc control/status 2b64 Xeon Processor E7 Product Family SMI Physical Port 1: REUT control/status 2b66 Xeon Processor E7 Product Family SMI Physical Port 1: Misc control/status 2b68 Xeon Processor E7 Product Family Last Level Cache Coherence Engine 8 2b6c Xeon Processor E7 Product Family Last Level Cache Coherence Engine 9 2b80 Atom CE2700 Series [Puma 7] 2b98 Puma 7 Trusted Execution Engine 2bb5 Puma 7 xHCI Controller # Synopsys DesignWare Core SuperSpeed USB 3.0 Controller 2bb7 Puma 7 USB Device Controller (OTG) 2bdc Puma 7 Thermal 2be2 Puma 7 Security Processor 2c01 Xeon 5500/Core i7 QuickPath Architecture System Address Decoder 2c10 Xeon 5500/Core i7 QPI Link 0 2c11 Xeon 5500/Core i7 QPI Physical 0 2c14 Xeon 5500/Core i7 QPI Link 1 2c15 Xeon 5500/Core i7 QPI Physical 1 2c18 Xeon 5500/Core i7 Integrated Memory Controller 2c19 Xeon 5500/Core i7 Integrated Memory Controller Target Address Decoder 2c1a Xeon 5500/Core i7 Integrated Memory Controller RAS Registers 2c1c Xeon 5500/Core i7 Integrated Memory Controller Test Registers 2c20 Xeon 5500/Core i7 Integrated Memory Controller Channel 0 Control Registers 2c21 Xeon 5500/Core i7 Integrated Memory Controller Channel 0 Address Registers 2c22 Xeon 5500/Core i7 Integrated Memory Controller Channel 0 Rank Registers 2c23 Xeon 5500/Core i7 Integrated Memory Controller Channel 0 Thermal Control Registers 2c28 Xeon 5500/Core i7 Integrated Memory Controller Channel 1 Control Registers 2c29 Xeon 5500/Core i7 Integrated Memory Controller Channel 1 Address Registers 2c2a Xeon 5500/Core i7 Integrated Memory Controller Channel 1 Rank Registers 2c2b Xeon 5500/Core i7 Integrated Memory Controller Channel 1 Thermal Control Registers 2c30 Xeon 5500/Core i7 Integrated Memory Controller Channel 2 Control Registers 2c31 Xeon 5500/Core i7 Integrated Memory Controller Channel 2 Address Registers 2c32 Xeon 5500/Core i7 Integrated Memory Controller Channel 2 Rank Registers 2c33 Xeon 5500/Core i7 Integrated Memory Controller Channel 2 Thermal Control Registers 2c40 Xeon 5500/Core i7 QuickPath Architecture Generic Non-Core Registers 2c41 Xeon 5500/Core i7 QuickPath Architecture Generic Non-Core Registers 2c50 Core Processor QuickPath Architecture Generic Non-Core Registers 2c51 Core Processor QuickPath Architecture Generic Non-Core Registers 2c52 Core Processor QuickPath Architecture Generic Non-Core Registers 2c53 Core Processor QuickPath Architecture Generic Non-Core Registers 2c54 Core Processor QuickPath Architecture Generic Non-Core Registers 2c55 Core Processor QuickPath Architecture Generic Non-Core Registers 2c56 Core Processor QuickPath Architecture Generic Non-Core Registers 2c57 Core Processor QuickPath Architecture Generic Non-Core Registers 2c58 Xeon C5500/C3500 QPI Generic Non-core Registers 2c59 Xeon C5500/C3500 QPI Generic Non-core Registers 2c5a Xeon C5500/C3500 QPI Generic Non-core Registers 2c5b Xeon C5500/C3500 QPI Generic Non-core Registers 2c5c Xeon C5500/C3500 QPI Generic Non-core Registers 2c5d Xeon C5500/C3500 QPI Generic Non-core Registers 2c5e Xeon C5500/C3500 QPI Generic Non-core Registers 2c5f Xeon C5500/C3500 QPI Generic Non-core Registers 2c61 Core Processor QuickPath Architecture Generic Non-core Registers 2c62 Core Processor QuickPath Architecture Generic Non-core Registers 2c70 Xeon 5600 Series QuickPath Architecture Generic Non-core Registers 2c81 Core Processor QuickPath Architecture System Address Decoder 2c90 Core Processor QPI Link 0 2c91 Core Processor QPI Physical 0 2c98 Core Processor Integrated Memory Controller 2c99 Core Processor Integrated Memory Controller Target Address Decoder 2c9a Core Processor Integrated Memory Controller Test Registers 2c9c Core Processor Integrated Memory Controller Test Registers 2ca0 Core Processor Integrated Memory Controller Channel 0 Control Registers 2ca1 Core Processor Integrated Memory Controller Channel 0 Address Registers 2ca2 Core Processor Integrated Memory Controller Channel 0 Rank Registers 2ca3 Core Processor Integrated Memory Controller Channel 0 Thermal Control Registers 2ca8 Core Processor Integrated Memory Controller Channel 1 Control Registers 2ca9 Core Processor Integrated Memory Controller Channel 1 Address Registers 2caa Core Processor Integrated Memory Controller Channel 1 Rank Registers 2cab Core Processor Integrated Memory Controller Channel 1 Thermal Control Registers 2cc1 Xeon C5500/C3500 QPI System Address Decoder 2cd0 Xeon C5500/C3500 QPI Link 0 2cd1 Xeon C5500/C3500 QPI Physical 0 2cd4 Xeon C5500/C3500 QPI Link 1 2cd5 Xeon C5500/C3500 QPI Physical 1 2cd8 Xeon C5500/C3500 Integrated Memory Controller Registers 2cd9 Xeon C5500/C3500 Integrated Memory Controller Target Address Decoder 2cda Xeon C5500/C3500 Integrated Memory Controller RAS Registers 2cdc Xeon C5500/C3500 Integrated Memory Controller Test Registers 2ce0 Xeon C5500/C3500 Integrated Memory Controller Channel 0 Control 2ce1 Xeon C5500/C3500 Integrated Memory Controller Channel 0 Address 2ce2 Xeon C5500/C3500 Integrated Memory Controller Channel 0 Rank 2ce3 Xeon C5500/C3500 Integrated Memory Controller Channel 0 Thermal Control 2ce8 Xeon C5500/C3500 Integrated Memory Controller Channel 1 Control 2ce9 Xeon C5500/C3500 Integrated Memory Controller Channel 1 Address 2cea Xeon C5500/C3500 Integrated Memory Controller Channel 1 Rank 2ceb Xeon C5500/C3500 Integrated Memory Controller Channel 1 Thermal Control 2cf0 Xeon C5500/C3500 Integrated Memory Controller Channel 2 Control 2cf1 Xeon C5500/C3500 Integrated Memory Controller Channel 2 Address 2cf2 Xeon C5500/C3500 Integrated Memory Controller Channel 2 Rank 2cf3 Xeon C5500/C3500 Integrated Memory Controller Channel 2 Thermal Control 2d01 Core Processor QuickPath Architecture System Address Decoder 2d10 Core Processor QPI Link 0 2d11 1st Generation Core i3/5/7 Processor QPI Physical 0 2d12 1st Generation Core i3/5/7 Processor Reserved 2d13 1st Generation Core i3/5/7 Processor Reserved 2d81 Xeon 5600 Series QuickPath Architecture System Address Decoder 2d90 Xeon 5600 Series QPI Link 0 2d91 Xeon 5600 Series QPI Physical 0 2d92 Xeon 5600 Series Mirror Port Link 0 2d93 Xeon 5600 Series Mirror Port Link 1 2d94 Xeon 5600 Series QPI Link 1 2d95 Xeon 5600 Series QPI Physical 1 2d98 Xeon 5600 Series Integrated Memory Controller Registers 2d99 Xeon 5600 Series Integrated Memory Controller Target Address Decoder 2d9a Xeon 5600 Series Integrated Memory Controller RAS Registers 2d9c Xeon 5600 Series Integrated Memory Controller Test Registers 2da0 Xeon 5600 Series Integrated Memory Controller Channel 0 Control 2da1 Xeon 5600 Series Integrated Memory Controller Channel 0 Address 2da2 Xeon 5600 Series Integrated Memory Controller Channel 0 Rank 2da3 Xeon 5600 Series Integrated Memory Controller Channel 0 Thermal Control 2da8 Xeon 5600 Series Integrated Memory Controller Channel 1 Control 2da9 Xeon 5600 Series Integrated Memory Controller Channel 1 Address 2daa Xeon 5600 Series Integrated Memory Controller Channel 1 Rank 2dab Xeon 5600 Series Integrated Memory Controller Channel 1 Thermal Control 2db0 Xeon 5600 Series Integrated Memory Controller Channel 2 Control 2db1 Xeon 5600 Series Integrated Memory Controller Channel 2 Address 2db2 Xeon 5600 Series Integrated Memory Controller Channel 2 Rank 2db3 Xeon 5600 Series Integrated Memory Controller Channel 2 Thermal Control 2e00 4 Series Chipset DRAM Controller 2e01 4 Series Chipset PCI Express Root Port 2e02 4 Series Chipset Integrated Graphics Controller 2e03 4 Series Chipset Integrated Graphics Controller 2e04 4 Series Chipset HECI Controller 2e05 4 Series Chipset HECI Controller 2e06 4 Series Chipset PT IDER Controller 2e07 4 Series Chipset Serial KT Controller 2e10 4 Series Chipset DRAM Controller 2e11 4 Series Chipset PCI Express Root Port 2e12 4 Series Chipset Integrated Graphics Controller 17aa 3048 ThinkCentre M6258 2e13 4 Series Chipset Integrated Graphics Controller 2e14 4 Series Chipset HECI Controller 2e15 4 Series Chipset HECI Controller 2e16 4 Series Chipset PT IDER Controller 2e17 4 Series Chipset Serial KT Controller 2e20 4 Series Chipset DRAM Controller 1028 0283 Vostro 220 1043 82d3 P5Q Deluxe Motherboard 1458 5000 GA-EP45-DS5/GA-EG45M-DS2H Motherboard 2e21 4 Series Chipset PCI Express Root Port 1043 82d3 P5Q Deluxe Motherboard 1458 5000 GA-EP45-DS5 Motherboard 2e22 4 Series Chipset Integrated Graphics Controller 1458 d000 GA-EG45M-DS2H Mainboard 2e23 4 Series Chipset Integrated Graphics Controller 1458 d000 GA-EG45M-DS2H Mainboard 2e24 4 Series Chipset HECI Controller 2e25 4 Series Chipset HECI Controller 2e26 4 Series Chipset PT IDER Controller 2e27 4 Series Chipset Serial KT Controller 2e29 4 Series Chipset PCI Express Root Port 2e30 4 Series Chipset DRAM Controller 103c 2a8c Compaq 500B Microtower 2e31 4 Series Chipset PCI Express Root Port 2e32 4 Series Chipset Integrated Graphics Controller 103c 2a8c Compaq 500B Microtower 2e33 4 Series Chipset Integrated Graphics Controller 2e34 4 Series Chipset HECI Controller 2e35 4 Series Chipset HECI Controller 2e36 4 Series Chipset PT IDER Controller 2e37 4 Series Chipset Serial KT Controller 2e40 4 Series Chipset DRAM Controller 2e41 4 Series Chipset PCI Express Root Port 2e42 4 Series Chipset Integrated Graphics Controller 2e43 4 Series Chipset Integrated Graphics Controller 2e44 4 Series Chipset HECI Controller 2e45 4 Series Chipset HECI Controller 2e46 4 Series Chipset PT IDER Controller 2e47 4 Series Chipset Serial KT Controller 2e50 CE Media Processor CE3100 2e52 CE Media Processor Clock and Reset Controller 2e58 CE Media Processor Interrupt Controller 2e5a CE Media Processor CE3100 A/V Bridge 2e5b Graphics Media Accelerator 500 Graphics 2e5c CE Media Processor Video Decoder 2e5d CE Media Processor Transport Stream Interface 2e5e CE Media Processor Transport Stream Processor 0 2e5f CE Media Processor Audio DSP 2e60 CE Media Processor Audio Interfaces 2e61 CE Media Processor Video Display Controller 2e62 CE Media Processor Video Processing Unit 2e63 CE Media Processor HDMI Tx Interface 2e64 Atom CE2600/3100/4100/4200/5300 Security Processor 2e65 CE Media Processor Expansion Bus Interface 2e66 CE Media Processor UART 2e67 CE Media Processor General Purpose I/Os 2e68 CE Media Processor I2C Interface 2e69 CE Media Processor Smart Card Interface 2e6a CE Media Processor SPI Master Interface 2e6e CE Media Processor Gigabit Ethernet Controller 2e6f CE Media Processor Media Timing Unit 2e70 CE Media Processor USB 2e71 CE Media Processor SATA 2e73 CE Media Processor CE3100 PCI Express 2e90 4 Series Chipset DRAM Controller 2e91 4 Series Chipset PCI Express Root Port 2e92 4 Series Chipset Integrated Graphics Controller 2e93 4 Series Chipset Integrated Graphics Controller 2e94 4 Series Chipset HECI Controller 2e95 4 Series Chipset HECI Controller 2e96 4 Series Chipset PT IDER Controller 2f00 Xeon E7 v3/Xeon E5 v3/Core i7 DMI2 2f01 Xeon E7 v3/Xeon E5 v3/Core i7 PCI Express Root Port 0 2f02 Xeon E7 v3/Xeon E5 v3/Core i7 PCI Express Root Port 1 2f03 Xeon E7 v3/Xeon E5 v3/Core i7 PCI Express Root Port 1 2f04 Xeon E7 v3/Xeon E5 v3/Core i7 PCI Express Root Port 2 2f05 Xeon E7 v3/Xeon E5 v3/Core i7 PCI Express Root Port 2 2f06 Xeon E7 v3/Xeon E5 v3/Core i7 PCI Express Root Port 2 2f07 Xeon E7 v3/Xeon E5 v3/Core i7 PCI Express Root Port 2 2f08 Xeon E7 v3/Xeon E5 v3/Core i7 PCI Express Root Port 3 2f09 Xeon E7 v3/Xeon E5 v3/Core i7 PCI Express Root Port 3 2f0a Xeon E7 v3/Xeon E5 v3/Core i7 PCI Express Root Port 3 2f0b Xeon E7 v3/Xeon E5 v3/Core i7 PCI Express Root Port 3 2f0d Haswell Xeon Non-Transparent Bridge (Back-to-back) 2f0e Haswell Xeon Non-Transparent Bridge (Primary Side) 2f0f Haswell Xeon Non-Transparent Bridge (Secondary Side) 2f10 Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug 2f11 Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug 2f12 Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug 2f13 Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug 2f14 Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug 2f15 Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug 2f16 Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug 2f17 Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug 2f18 Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug 2f19 Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug 2f1a Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug 2f1b Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug 2f1c Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug 2f1d Xeon E7 v3/Xeon E5 v3/Core i7 PCIe Ring Interface 2f1e Xeon E7 v3/Xeon E5 v3/Core i7 Scratchpad & Semaphore Registers 2f1f Xeon E7 v3/Xeon E5 v3/Core i7 Scratchpad & Semaphore Registers 2f20 Xeon E7 v3/Xeon E5 v3/Core i7 DMA Channel 0 2f21 Xeon E7 v3/Xeon E5 v3/Core i7 DMA Channel 1 2f22 Xeon E7 v3/Xeon E5 v3/Core i7 DMA Channel 2 2f23 Xeon E7 v3/Xeon E5 v3/Core i7 DMA Channel 3 2f24 Xeon E7 v3/Xeon E5 v3/Core i7 DMA Channel 4 2f25 Xeon E7 v3/Xeon E5 v3/Core i7 DMA Channel 5 2f26 Xeon E7 v3/Xeon E5 v3/Core i7 DMA Channel 6 2f27 Xeon E7 v3/Xeon E5 v3/Core i7 DMA Channel 7 2f28 Xeon E7 v3/Xeon E5 v3/Core i7 Address Map, VTd_Misc, System Management 2f29 Xeon E7 v3/Xeon E5 v3/Core i7 Hot Plug 2f2a Xeon E7 v3/Xeon E5 v3/Core i7 RAS, Control Status and Global Errors 2f2c Xeon E7 v3/Xeon E5 v3/Core i7 I/O APIC 2f2e Xeon E7 v3/Xeon E5 v3/Core i7 RAID 5/6 2f2f Xeon E7 v3/Xeon E5 v3/Core i7 RAID 5/6 2f30 Xeon E7 v3/Xeon E5 v3/Core i7 Home Agent 0 2f32 Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 0 2f33 Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 1 2f34 Xeon E7 v3/Xeon E5 v3/Core i7 PCIe Ring Interface 2f36 Xeon E7 v3/Xeon E5 v3/Core i7 R3 QPI Link 0 & 1 Monitoring 2f37 Xeon E7 v3/Xeon E5 v3/Core i7 R3 QPI Link 0 & 1 Monitoring 2f38 Xeon E7 v3/Xeon E5 v3/Core i7 Home Agent 1 2f39 Xeon E7 v3/Xeon E5 v3/Core i7 I/O Performance Monitoring 2f3a Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 2 2f3e Xeon E7 v3/Xeon E5 v3/Core i7 R3 QPI Link 2 Monitoring 2f3f Xeon E7 v3/Xeon E5 v3/Core i7 R3 QPI Link 2 Monitoring 2f40 Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 2 2f41 Xeon E7 v3/Xeon E5 v3/Core i7 R3 QPI Link 2 Monitoring 2f43 Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 2 2f45 Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 2 Debug 2f46 Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 2 Debug 2f47 Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 2 Debug 2f60 Xeon E7 v3/Xeon E5 v3/Core i7 Home Agent 1 2f68 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Target Address, Thermal & RAS Registers 2f6a Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder 2f6b Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder 2f6c Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder 2f6d Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder 2f6e Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO Channel 2/3 Broadcast 2f6f Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO Global Broadcast 2f70 Xeon E7 v3/Xeon E5 v3/Core i7 Home Agent 0 Debug 2f71 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Target Address, Thermal & RAS Registers 2f76 Xeon E7 v3/Xeon E5 v3/Core i7 E3 QPI Link Debug 2f78 Xeon E7 v3/Xeon E5 v3/Core i7 Home Agent 1 Debug 2f79 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Target Address, Thermal & RAS Registers 2f7d Xeon E7 v3/Xeon E5 v3/Core i7 Scratchpad & Semaphore Registers 2f7e Xeon E7 v3/Xeon E5 v3/Core i7 E3 QPI Link Debug 2f80 Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 0 2f81 Xeon E7 v3/Xeon E5 v3/Core i7 R3 QPI Link 0 & 1 Monitoring 2f83 Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 0 2f85 Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 0 Debug 2f86 Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 0 Debug 2f87 Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 0 Debug 2f88 Xeon E7 v3/Xeon E5 v3/Core i7 VCU 2f8a Xeon E7 v3/Xeon E5 v3/Core i7 VCU 2f90 Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 1 2f93 Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 1 2f95 Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 1 Debug 2f96 Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 1 Debug 2f98 Xeon E7 v3/Xeon E5 v3/Core i7 Power Control Unit 2f99 Xeon E7 v3/Xeon E5 v3/Core i7 Power Control Unit 2f9a Xeon E7 v3/Xeon E5 v3/Core i7 Power Control Unit 2f9c Xeon E7 v3/Xeon E5 v3/Core i7 Power Control Unit 2fa0 Xeon E7 v3/Xeon E5 v3/Core i7 Home Agent 0 2fa8 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Target Address, Thermal & RAS Registers 2faa Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder 2fab Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder 2fac Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder 2fad Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder 2fae Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO Channel 0/1 Broadcast 2faf Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO Global Broadcast 2fb0 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 0 Thermal Control 2fb1 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 1 Thermal Control 2fb2 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 0 ERROR Registers 2fb3 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 1 ERROR Registers 2fb4 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 2 Thermal Control 2fb5 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 3 Thermal Control 2fb6 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 2 ERROR Registers 2fb7 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 3 ERROR Registers 2fb8 Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO (VMSE) 2 & 3 2fb9 Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO (VMSE) 2 & 3 2fba Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO (VMSE) 2 & 3 2fbb Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO (VMSE) 2 & 3 2fbc Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO (VMSE) 0 & 1 2fbd Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO (VMSE) 0 & 1 2fbe Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO (VMSE) 0 & 1 2fbf Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO (VMSE) 0 & 1 2fc0 Xeon E7 v3/Xeon E5 v3/Core i7 Power Control Unit 2fc1 Xeon E7 v3/Xeon E5 v3/Core i7 Power Control Unit 2fc2 Xeon E7 v3/Xeon E5 v3/Core i7 Power Control Unit 2fc3 Xeon E7 v3/Xeon E5 v3/Core i7 Power Control Unit 2fc4 Xeon E7 v3/Xeon E5 v3/Core i7 Power Control Unit 2fc5 Xeon E7 v3/Xeon E5 v3/Core i7 Power Control Unit 2fd0 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel 0 Thermal Control 2fd1 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel 1 Thermal Control 2fd2 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel 0 ERROR Registers 2fd3 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel 1 ERROR Registers 2fd4 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel 2 Thermal Control 2fd5 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel 3 Thermal Control 2fd6 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel 2 ERROR Registers 2fd7 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel 3 ERROR Registers 2fe0 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers 2fe1 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers 2fe2 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers 2fe3 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers 2fe4 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers 2fe5 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers 2fe6 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers 2fe7 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers 2fe8 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers 2fe9 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers 2fea Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers 2feb Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers 2fec Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers 2fed Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers 2fee Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers 2fef Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers 2ff0 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers 2ff1 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers 2ff2 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers 2ff3 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers 2ff4 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers 2ff5 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers 2ff6 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers 2ff7 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers 2ff8 Xeon E7 v3/Xeon E5 v3/Core i7 Buffered Ring Agent 2ff9 Xeon E7 v3/Xeon E5 v3/Core i7 Buffered Ring Agent 2ffa Xeon E7 v3/Xeon E5 v3/Core i7 Buffered Ring Agent 2ffb Xeon E7 v3/Xeon E5 v3/Core i7 Buffered Ring Agent 2ffc Xeon E7 v3/Xeon E5 v3/Core i7 System Address Decoder & Broadcast Registers 2ffd Xeon E7 v3/Xeon E5 v3/Core i7 System Address Decoder & Broadcast Registers 2ffe Xeon E7 v3/Xeon E5 v3/Core i7 System Address Decoder & Broadcast Registers 3101 Killer E3100X 2.5 Gigabit Ethernet Controller 3140 Easel/Monette Hill Image Processor [Pixel Visual Core] 3165 Wireless 3165 8086 4010 Dual Band Wireless AC 3165 [Stone Peak 1x1] 8086 4210 Dual Band Wireless AC 3165 [Stone Peak 1x1] 3166 Dual Band Wireless-AC 3165 Plus Bluetooth 8086 4210 Dual Band Wireless-AC 3165 3184 GeminiLake [UHD Graphics 605] 3185 GeminiLake [UHD Graphics 600] 318c Celeron/Pentium Silver Processor Dynamic Platform and Thermal Framework Processor Participant 318e Celeron/Pentium Silver Processor NorthPeak 3190 Celeron/Pentium Silver Processor Gaussian Mixture Model 3192 Gemini Lake P2SB 3197 Celeron/Pentium Silver Processor PCI-default ISA-bridge 3198 Celeron/Pentium Silver Processor High Definition Audio 17aa 380b V130-15IGM Laptop (Lenovo) - Type 81HL 319a Celeron/Pentium Silver Processor Trusted Execution Engine Interface 31a2 Celeron/Pentium Silver Processor Integrated Sensor Solution 31a8 Celeron/Pentium Silver Processor USB 3.0 xHCI Controller 1849 31a8 Celeron/Pentium Silver Processor USB 3.0 xHCI Controller 31ac Celeron/Pentium Silver Processor I2C 0 31ae Celeron/Pentium Silver Processor I2C 1 31b0 Celeron/Pentium Silver Processor I2C 2 31b2 Celeron/Pentium Silver Processor I2C 3 31b4 Celeron/Pentium Silver Processor I2C 4 31b6 Celeron/Pentium Silver Processor I2C 5 31b8 Celeron/Pentium Silver Processor I2C 6 31ba Celeron/Pentium Silver Processor I2C 7 31bc Celeron/Pentium Silver Processor Serial IO UART Host Controller 31be Celeron/Pentium Silver Processor Serial IO UART Host Controller 31c0 Celeron/Pentium Silver Processor Serial IO UART Host Controller 31c2 Celeron/Pentium Silver Processor Serial IO SPI Host Controller 31c4 Celeron/Pentium Silver Processor Serial IO SPI Host Controller 31c6 Celeron/Pentium Silver Processor Serial IO SPI Host Controller 31cc Celeron/Pentium Silver Processor SDA Standard Compliant SD Host Controller 31d4 Celeron/Pentium Silver Processor Gaussian Mixture Model 31d6 Gemini Lake PCI Express Root Port 31d7 Gemini Lake PCI Express Root Port 31d8 Gemini Lake PCI Express Root Port 31d9 Gemini Lake PCI Express Root Port 31da Gemini Lake PCI Express Root Port 31db Gemini Lake PCI Express Root Port 31dc Gemini Lake PCH CNVi WiFi 1a56 1552 Killer(R) Wireless-AC 1550i Wireless Network Adapter (9560NGW) 8086 0034 Wireless-AC 9560 31e3 Celeron/Pentium Silver Processor SATA Controller 31e8 Celeron/Pentium Silver Processor LPC Controller 31ee Celeron/Pentium Silver Processor Serial IO UART Host Controller 31f0 Gemini Lake Host Bridge 3200 GD31244 PCI-X SATA HBA 1775 c200 C2K onboard SATA host bus adapter 3310 IOP348 I/O Processor 1054 3030 HRA380 Hitachi RAID Adapter to PCIe 1054 3034 HRA381 Hitachi RAID Adapter to PCIe 3313 IOP348 I/O Processor (SL8e) in IOC Mode SAS/SATA 331b IOP348 I/O Processor (SL8x) in IOC Mode SAS/SATA 3331 IOC340 I/O Controller (VV8e) SAS/SATA 3339 IOC340 I/O Controller (VV8x) SAS/SATA 3340 82855PM Processor to I/O Controller 1014 0529 Thinkpad T40 series 1025 005a TravelMate 290 103c 088c NC8000 laptop 103c 0890 NC6000 laptop 103c 08b0 tc1100 tablet 144d c005 X10 Laptop 144d c00c P30/P35 notebook 3341 82855PM Processor to AGP Controller 144d c00c P30 notebook 3363 IOC340 I/O Controller in IOC Mode SAS/SATA 3382 81342 [Chevelon] I/O Processor (ATUe) 33c3 IOP348 I/O Processor (SL8De) in IOC Mode SAS/SATA 33cb IOP348 I/O Processor (SL8Dx) in IOC Mode SAS/SATA 3400 5520/5500/X58 I/O Hub to ESI Port 3401 5520/5500/X58 I/O Hub to ESI Port 3402 5520/5500/X58 I/O Hub to ESI Port 3403 5500 I/O Hub to ESI Port 1028 0236 PowerEdge R610 I/O Hub to ESI Port 1028 0287 PowerEdge M610 I/O Hub to ESI Port 1028 028c PowerEdge R410 I/O Hub to ESI Port 1028 028d PowerEdge T410 I/O Hub to ESI Port 103c 330b ProLiant ML150 G6 Server 3404 5520/5500/X58 I/O Hub to ESI Port 3405 5520/5500/X58 I/O Hub to ESI Port 3406 5520 I/O Hub to ESI Port 103c 330b ProLiant G6 series 3407 5520/5500/X58 I/O Hub to ESI Port 3408 5520/5500/X58 I/O Hub PCI Express Root Port 1 103c 330b ProLiant G6 series 3409 5520/5500/X58 I/O Hub PCI Express Root Port 2 340a 5520/5500/X58 I/O Hub PCI Express Root Port 3 103c 330b ProLiant ML150 G6 Server 340b 5520/X58 I/O Hub PCI Express Root Port 4 340c 5520/X58 I/O Hub PCI Express Root Port 5 340d 5520/X58 I/O Hub PCI Express Root Port 6 340e 5520/5500/X58 I/O Hub PCI Express Root Port 7 103c 330b ProLiant ML150 G6 Server 340f 5520/5500/X58 I/O Hub PCI Express Root Port 8 3410 7500/5520/5500/X58 I/O Hub PCI Express Root Port 9 3411 7500/5520/5500/X58 I/O Hub PCI Express Root Port 10 3418 7500/5520/5500/X58 Physical Layer Port 0 3419 7500/5520/5500 Physical Layer Port 1 3420 7500/5520/5500/X58 I/O Hub PCI Express Root Port 0 3421 7500/5520/5500/X58 I/O Hub PCI Express Root Port 0 3422 7500/5520/5500/X58 I/O Hub GPIO and Scratch Pad Registers 103c 330b ProLiant G6 series 3423 7500/5520/5500/X58 I/O Hub Control Status and RAS Registers 103c 330b ProLiant G6 series 3425 7500/5520/5500/X58 Physical and Link Layer Registers Port 0 3426 7500/5520/5500/X58 Routing and Protocol Layer Registers Port 0 3427 7500/5520/5500 Physical and Link Layer Registers Port 1 3428 7500/5520/5500 Routing & Protocol Layer Register Port 1 3429 5520/5500/X58 Chipset QuickData Technology Device 342a 5520/5500/X58 Chipset QuickData Technology Device 342b 5520/5500/X58 Chipset QuickData Technology Device 342c 5520/5500/X58 Chipset QuickData Technology Device 342d 7500/5520/5500/X58 I/O Hub I/OxAPIC Interrupt Controller 342e 7500/5520/5500/X58 I/O Hub System Management Registers 103c 330b ProLiant G6 series 342f 7500/5520/5500/X58 Trusted Execution Technology Registers 3430 5520/5500/X58 Chipset QuickData Technology Device 3431 5520/5500/X58 Chipset QuickData Technology Device 3432 5520/5500/X58 Chipset QuickData Technology Device 3433 5520/5500/X58 Chipset QuickData Technology Device 3438 7500/5520/5500/X58 I/O Hub Throttle Registers 3440 Ice Lake UPI Misc 3441 Ice Lake UPI Link/Phy0 3456 Ice Lake NorthPeak 347e Ice Lake Xeon Non-Transparent Bridge 3482 Ice Lake-LP LPC Controller 34a3 Ice Lake-LP SMBus Controller 34a4 Ice Lake-LP SPI Controller 34a8 Ice Lake-LP Serial IO UART Controller #0 34a9 Ice Lake-LP Serial IO UART Controller #1 34aa Ice Lake-LP Serial IO SPI Controller #0 34ab Ice Lake-LP Serial IO SPI Controller #1 34b0 Ice Lake-LP PCI Express Root Port #9 34b1 Ice Lake-LP PCIe Port #10 34b4 Ice Lake-LP PCIe Port #13 34b5 Ice Lake-LP PCIe Port #14 34b7 Ice Lake-LP PCI Express Root Port #16 34b8 Ice Lake-LP PCIe Port #1 34ba Ice Lake-LP PCI Express Root Port #3 34bb Ice Lake-LP PCIe Port #4 34bc Ice Lake-LP PCI Express Root Port #5 34bd Ice Lake-LP PCIe Port #6 34be Ice Lake-LP PCIe Port #7 34bf Ice Lake-LP PCIe Port #8 34c4 Ice Lake-LP SD Host Controller 34c5 Ice Lake-LP Serial IO I2c Controller #4 34c6 Ice Lake-LP Serial IO I2c Controller #5 34c8 Ice Lake-LP Smart Sound Technology Audio Controller 34d3 Ice Lake-LP SATA Controller [AHCI mode] 34e0 Ice Lake-LP Management Engine 34e8 Ice Lake-LP Serial IO I2C Controller #0 34e9 Ice Lake-LP Serial IO I2C Controller #1 34ea Ice Lake-LP Serial IO I2C Controller #2 34eb Ice Lake-LP Serial IO I2C Controller #3 34ed Ice Lake-LP USB 3.1 xHCI Host Controller 34ef Ice Lake-LP DRAM Controller 34f0 Ice Lake-LP PCH CNVi WiFi 1a56 1552 Killer(R) Wireless-AC 1550i Wireless Network Adapter (9560NGW) 8086 0074 Wi-Fi 6 AX201 8086 0264 Wireless-AC 9461 34f8 Ice Lake-LP SD Controller 34fc Ice Lake-LP Integrated Sensor Solution 3500 6311ESB/6321ESB PCI Express Upstream Port 103c 31fe ProLiant DL140 G3 15d9 9680 X7DBN Motherboard 3501 6310ESB PCI Express Upstream Port 3504 6311ESB/6321ESB I/OxAPIC Interrupt Controller 3505 6310ESB I/OxAPIC Interrupt Controller 350c 6311ESB/6321ESB PCI Express to PCI-X Bridge 103c 31fe ProLiant DL140 G3 15d9 9680 X7DBN Motherboard 350d 6310ESB PCI Express to PCI-X Bridge 3510 6311ESB/6321ESB PCI Express Downstream Port E1 103c 31fe ProLiant DL140 G3 15d9 9680 X7DBN Motherboard 3511 6310ESB PCI Express Downstream Port E1 3514 6311ESB/6321ESB PCI Express Downstream Port E2 3515 6310ESB PCI Express Downstream Port E2 3518 6311ESB/6321ESB PCI Express Downstream Port E3 15d9 9680 X7DBN Motherboard 3519 6310ESB PCI Express Downstream Port E3 3575 82830M/MG/MP Host Bridge 0e11 0030 Evo N600c 1014 021d ThinkPad A/T/X Series 104d 80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP 3576 82830M/MP AGP Bridge 3577 82830M/MG Integrated Graphics Controller 1014 0513 ThinkPad A/T/X Series 3578 82830M/MG/MP Host Bridge 3580 82852/82855 GM/GME/PM/GMV Processor to I/O Controller 1014 055c ThinkPad R50e 1025 0064 Extensa 3000 series laptop 1028 0139 Latitude D400 1028 014f Latitude X300 1028 0152 Latitude D500 1028 0163 Latitude D505 1028 018d Inspiron 700m/710m 1028 0196 Inspiron 5160 114a 0582 PC8 1734 1055 Amilo M1420 1775 10d0 V5D Single Board Computer 1775 ce90 CE9 4c53 10b0 CL9 mainboard 4c53 10e0 PSL09 PrPMC e4bf 0cc9 CC9-SAMBA e4bf 0cd2 CD2-BEBOP 3581 82852/82855 GM/GME/PM/GMV Processor to AGP Controller 1734 1055 Amilo M1420 3582 82852/855GM Integrated Graphics Device 1014 0562 ThinkPad R50e 1028 0139 Latitude D400 1028 014f Latitude X300 1028 0152 Latitude D500 1028 0163 Latitude D505 1028 018d Inspiron 700m/710m 114a 0582 PC8 integrated graphics 1775 10d0 V5D Single Board Computer VGA 1775 ce90 CE9 4c53 10b0 CL9 mainboard 4c53 10e0 PSL09 PrPMC e4bf 0cc9 CC9-SAMBA e4bf 0cd2 CD2-BEBOP 3584 82852/82855 GM/GME/PM/GMV Processor to I/O Controller 1014 055d ThinkPad R50e 1025 0064 Extensa 3000 series laptop 1028 0139 Latitude D400 1028 014f Latitude X300 1028 0152 Latitude D500 1028 0163 Latitude D505 1028 018d Inspiron 700m/710m 1028 0196 Inspiron 5160 114a 0582 PC8 1734 1055 Amilo M1420 1775 10d0 V5D Single Board Computer 1775 ce90 CE9 4c53 10b0 CL9 mainboard 4c53 10e0 PSL09 PrPMC 3585 82852/82855 GM/GME/PM/GMV Processor to I/O Controller 1014 055e ThinkPad R50e 1025 0064 Extensa 3000 series laptop 1028 0139 Latitude D400 1028 014f Latitude X300 1028 0152 Latitude D500 1028 0163 Latitude D505 1028 018d Inspiron 700m/710m 1028 0196 Inspiron 5160 114a 0582 PC8 1734 1055 Amilo M1420 1775 10d0 V5D Single Board Computer 1775 ce90 CE9 4c53 10b0 CL9 mainboard 4c53 10e0 PSL09 PrPMC 358c 82854 GMCH 358e 82854 GMCH Integrated Graphics Device 3590 E7520 Memory Controller Hub 1014 02dd eServer xSeries server mainboard 1028 016c PowerEdge 1850 Memory Controller Hub 1028 016d PowerEdge 2850 Memory Controller Hub 1028 019a PowerEdge SC1425 1734 103e PRIMERGY RX/TX S2 series 1775 1100 CR11/VR11 Single Board Computer 4c53 10d0 Telum ASLP10 Processor AMC 3591 E7525/E7520 Error Reporting Registers 1014 02dd eServer xSeries server mainboard 1028 0168 Precision Workstation 670 Mainboard 1028 0169 Precision 470 103c 3208 ProLiant DL140 G2 4c53 10d0 Telum ASLP10 Processor AMC 3592 E7320 Memory Controller Hub 1734 1073 Primergy Econel 200 D2020 mainboard 3593 E7320 Error Reporting Registers 1734 1073 Primergy Econel 200 D2020 mainboard 3594 E7520 DMA Controller 1775 1100 CR11/VR11 Single Board Computer 4c53 10d0 Telum ASLP10 Processor AMC 3595 E7525/E7520/E7320 PCI Express Port A 1775 1100 CR11/VR11 Single Board Computer 3596 E7525/E7520/E7320 PCI Express Port A1 3597 E7525/E7520 PCI Express Port B 1775 1100 CR11/VR11 Single Board Computer 3598 E7520 PCI Express Port B1 1775 1100 CR11/VR11 Single Board Computer 3599 E7520 PCI Express Port C 1775 1100 CR11/VR11 Single Board Computer 359a E7520 PCI Express Port C1 359b E7525/E7520/E7320 Extended Configuration Registers 1014 02dd eServer xSeries server mainboard 359e E7525 Memory Controller Hub 1028 0168 Precision Workstation 670 Mainboard 1028 0169 Precision 470 35b0 3100 Chipset Memory I/O Controller Hub 35b1 3100 DRAM Controller Error Reporting Registers 35b5 3100 Chipset Enhanced DMA Controller 35b6 3100 Chipset PCI Express Port A 35b7 3100 Chipset PCI Express Port A1 35c8 3100 Extended Configuration Test Overflow Registers 3600 7300 Chipset Memory Controller Hub 3604 7300 Chipset PCI Express Port 1 3605 7300 Chipset PCI Express Port 2 3606 7300 Chipset PCI Express Port 3 3607 7300 Chipset PCI Express Port 4 3608 7300 Chipset PCI Express Port 5 3609 7300 Chipset PCI Express Port 6 360a 7300 Chipset PCI Express Port 7 360b 7300 Chipset QuickData Technology Device 360c 7300 Chipset FSB Registers 1028 01f0 PowerEdge R900 7300 Chipset FSB Registers 360d 7300 Chipset Snoop Filter Registers 360e 7300 Chipset Debug and Miscellaneous Registers 360f 7300 Chipset FBD Branch 0 Registers 3610 7300 Chipset FBD Branch 1 Registers 3700 Xeon C5500/C3500 DMI 3701 Xeon C5500/C3500 DMI 3702 Xeon C5500/C3500 DMI 3703 Xeon C5500/C3500 DMI 3704 Xeon C5500/C3500 DMI 3705 Xeon C5500/C3500 DMI 3706 Xeon C5500/C3500 DMI 3707 Xeon C5500/C3500 DMI 3708 Xeon C5500/C3500 DMI 3709 Xeon C5500/C3500 DMI 370a Xeon C5500/C3500 DMI 370b Xeon C5500/C3500 DMI 370c Xeon C5500/C3500 DMI 370d Xeon C5500/C3500 DMI 370e Xeon C5500/C3500 DMI 370f Xeon C5500/C3500 DMI 3710 Xeon C5500/C3500 CB3 DMA 3711 Xeon C5500/C3500 CB3 DMA 3712 Xeon C5500/C3500 CB3 DMA 3713 Xeon C5500/C3500 CB3 DMA 3714 Xeon C5500/C3500 CB3 DMA 3715 Xeon C5500/C3500 CB3 DMA 3716 Xeon C5500/C3500 CB3 DMA 3717 Xeon C5500/C3500 CB3 DMA 3718 Xeon C5500/C3500 CB3 DMA 3719 Xeon C5500/C3500 CB3 DMA 371a Xeon C5500/C3500 QPI Link 371b Xeon C5500/C3500 QPI Routing and Protocol 371d Xeon C5500/C3500 QPI Routing and Protocol 3720 Xeon C5500/C3500 PCI Express Root Port 0 3721 Xeon C5500/C3500 PCI Express Root Port 1 3722 Xeon C5500/C3500 PCI Express Root Port 2 3723 Xeon C5500/C3500 PCI Express Root Port 3 3724 Xeon C5500/C3500 PCI Express Root Port 4 3725 Xeon C5500/C3500 NTB Primary 3726 Xeon C5500/C3500 NTB Primary 3727 Xeon C5500/C3500 NTB Secondary 3728 Xeon C5500/C3500 Core 3729 Xeon C5500/C3500 Core 372a Xeon C5500/C3500 Core 372b Xeon C5500/C3500 Core 372c Xeon C5500/C3500 Reserved 373f Xeon C5500/C3500 IOxAPIC 37c8 C62x Chipset QuickAssist Technology 8086 0001 QuickAssist Adapter 8960 8086 0002 QuickAssist Adapter 8970 37c9 C62x Chipset QuickAssist Technology Virtual Function 37cc Ethernet Connection X722 37cd Ethernet Virtual Function 700 Series 37ce Ethernet Connection X722 for 10GbE backplane 1590 0215 Ethernet 10Gb 2-port 568i Adapter 17aa 4023 Intel Ethernet Connection X722 for 10GbE backplane 17aa 4025 Ethernet Connection X722 for 10GbE backplane 37cf Ethernet Connection X722 for 10GbE QSFP+ 37d0 Ethernet Connection X722 for 10GbE SFP+ 17aa 4020 Intel Ethernet Connection X722 for 10G SFP+ 17aa 4021 Intel Ethernet Connection X722 for 10G SFP+ 17aa 4022 Ethernet Connection X722 for 10GbE SFP+ 8086 0001 Ethernet Network Adapter X722-2 8086 0002 Ethernet Network Adapter X722-2 8086 0003 Ethernet Network Adapter X722-4 8086 0004 Ethernet Network Adapter X722-4 37d1 Ethernet Connection X722 for 1GbE 14cd 0010 88E1514 Ethernet OCP 2x1G RJ45 Phy Card [USI-1514-1GbaseT] 1590 0216 Ethernet 1Gb 2-port 368i Adapter 1590 0217 Ethernet 1Gb 2-port 368FLR-MMT Adapter 1590 0247 Ethernet 1Gb 4-port 369i Adapter 17aa 4020 Ethernet Connection X722 for 1GbE 17aa 4021 Ethernet Connection X722 for 1GbE 17aa 4022 Ethernet Connection X722 for 1GbE 17aa 4024 Ethernet Connection X722 for 1GbE 37d2 Ethernet Connection X722 for 10GBASE-T 1059 0180 RD10019 10GbE interface 1170 37d2 Ethernet Connection X722 for 10GBASE-T 14cd 0030 Ethernet OCP 2x10G RJ45 Phy Card [USI-X557-10GbaseT] 1590 0218 Ethernet 10Gb 2-port 568FLR-MMT Adapter 17aa 4020 Ethernet Connection X722 for 10GBASE-T 17aa 4021 Ethernet Connection X722 for 10GBASE-T 17aa 4022 Ethernet Connection X722 for 10GBASE-T 17aa 4024 Ethernet Connection X722 for 10GBASE-T 17aa 4025 Ethernet Connection X722 for 10GBASE-T 37d3 Ethernet Connection X722 for 10GbE SFP+ 1590 0219 Ethernet 10Gb 2-port 568FLR-MMSFP+ Adapter 17aa 4020 Ethernet Connection X722 for 10GbE SFP+ 17aa 4021 Ethernet Connection X722 for 10GbE SFP+ 17aa 4025 Ethernet Connection X722 for 10GbE SFP+ 37d4 Ethernet Connection X722 for 10GbE QSFP+ 37d9 X722 Hyper-V Virtual Function 3882 Ice Lake LPC Controller 38a4 Ice Lake SPI Controller 38c8 Ice Lake-LP Smart Sound Technology Audio Controller 38e0 Ice Lake Management Engine Interface 3a00 82801JD/DO (ICH10 Family) 4-port SATA IDE Controller 3a02 82801JD/DO (ICH10 Family) SATA AHCI Controller 3a05 82801JD/DO (ICH10 Family) SATA RAID Controller 3a06 82801JD/DO (ICH10 Family) 2-port SATA IDE Controller 3a14 82801JDO (ICH10DO) LPC Interface Controller 3a16 82801JIR (ICH10R) LPC Interface Controller 1028 028c PowerEdge R410 LPC Interface Controller 1028 028d PowerEdge T410 LPC Interface Controller 103c 330b ProLiant G6 series 1043 82d4 P5Q Deluxe Motherboard 1458 5001 GA-EP45-DS5 Motherboard 3a18 82801JIB (ICH10) LPC Interface Controller 3a1a 82801JD (ICH10D) LPC Interface Controller 3a20 82801JI (ICH10 Family) 4 port SATA IDE Controller #1 1028 028c PowerEdge R410 SATA IDE Controller 1028 028d PowerEdge T410 SATA IDE Controller 3a22 82801JI (ICH10 Family) SATA AHCI Controller 103c 330b ProLiant G6 series 1043 82d4 P5Q Deluxe Motherboard 1458 b005 GA-EP45-DS5/GA-EG45M-DS2H Motherboard 3a25 82801JIR (ICH10R) SATA RAID Controller 1028 028c PERC S100 Controller (PE R410) 1028 028d PERC S100 Controller (PE T410) 1028 02f1 PERC S100 Controller (PE R510) 3a26 82801JI (ICH10 Family) 2 port SATA IDE Controller #2 1028 028c PowerEdge R410 SATA IDE Controller 1028 028d PowerEdge T410 SATA IDE Controller 3a30 82801JI (ICH10 Family) SMBus Controller 1043 82d4 P5Q Deluxe Motherboard 1458 5001 GA-EP45-DS5/GA-EG45M-DS2H Motherboard 3a32 82801JI (ICH10 Family) Thermal Subsystem 3a34 82801JI (ICH10 Family) USB UHCI Controller #1 1028 028c PowerEdge R410 USB UHCI Controller 1028 028d PowerEdge T410 USB UHCI Controller 103c 330b ProLiant G6 series 1043 82d4 P5Q Deluxe Motherboard 1458 5004 GA-EP45-DS5 Motherboard 3a35 82801JI (ICH10 Family) USB UHCI Controller #2 1028 028c PowerEdge R410 USB UHCI Controller 1028 028d PowerEdge T410 USB UHCI Controller 103c 330b ProLiant G6 series 1043 82d4 P5Q Deluxe Motherboard 1458 5004 GA-EP45-DS5 Motherboard 3a36 82801JI (ICH10 Family) USB UHCI Controller #3 1028 028c PowerEdge R410 USB UHCI Controller 1028 028d PowerEdge T410 USB UHCI Controller 103c 330b ProLiant G6 series 1043 82d4 P5Q Deluxe Motherboard 1458 5004 GA-EP45-DS5 Motherboard 3a37 82801JI (ICH10 Family) USB UHCI Controller #4 1028 028c PowerEdge R410 USB UHCI Controller 1028 028d PowerEdge T410 USB UHCI Controller 103c 330b ProLiant G6 series 1043 82d4 P5Q Deluxe Motherboard 1458 5004 Motherboard 3a38 82801JI (ICH10 Family) USB UHCI Controller #5 1028 028c PowerEdge R410 USB UHCI Controller 1028 028d PowerEdge T410 USB UHCI Controller 103c 330b ProLiant ML150 G6 Server 1043 82d4 P5Q Deluxe Motherboard 1458 5004 Motherboard 3a39 82801JI (ICH10 Family) USB UHCI Controller #6 1028 028c PowerEdge R410 USB UHCI Controller 1028 028d PowerEdge T410 USB UHCI Controller 103c 330b ProLiant ML150 G6 Server 1043 82d4 P5Q Deluxe Motherboard 1458 5004 Motherboard 3a3a 82801JI (ICH10 Family) USB2 EHCI Controller #1 1028 028c PowerEdge R410 USB EHCI Controller 1028 028d PowerEdge T410 USB EHCI Controller 103c 330b ProLiant G6 series 1043 82d4 P5Q Deluxe Motherboard 1458 5006 GA-EP45-DS5 Motherboard 3a3c 82801JI (ICH10 Family) USB2 EHCI Controller #2 1028 028c PowerEdge R410 USB EHCI Controller 1028 028d PowerEdge T410 USB EHCI Controller 103c 330b ProLiant G6 series 1043 82d4 P5Q Deluxe Motherboard 1458 5006 Motherboard 3a3e 82801JI (ICH10 Family) HD Audio Controller 1043 8311 P5Q Deluxe Motherboard 1458 a002 GA-EP45-UD3R Motherboard 1458 a102 GA-EP45-DS5/GA-EG45M-DS2H Motherboard 3a40 82801JI (ICH10 Family) PCI Express Root Port 1 1028 028c PowerEdge R410 PCI Express Port 1 1028 028d PowerEdge T410 PCI Express Port 1 103c 330b ProLiant ML150 G6 Server 1043 82d4 P5Q Deluxe Motherboard 1043 82ea P6T DeLuxe Motherboard 1458 5001 GA-EP45-DS5/GA-EG45M-DS2H Motherboard 3a42 82801JI (ICH10 Family) PCI Express Port 2 3a44 82801JI (ICH10 Family) PCI Express Root Port 3 1043 82ea P6T DeLuxe Motherboard 3a46 82801JI (ICH10 Family) PCI Express Root Port 4 1043 82ea P6T DeLuxe Motherboard 1458 5001 GA-EP45-DS5 Motherboard 3a48 82801JI (ICH10 Family) PCI Express Root Port 5 103c 330b ProLiant ML150 G6 Server 1043 82ea P6T Deluxe Motherboard 1458 5001 GA-EP45-DS5 Motherboard 3a4a 82801JI (ICH10 Family) PCI Express Root Port 6 103c 330b ProLiant ML150 G6 Server 1043 82d4 P5Q Deluxe Motherboard 1043 82ea P6T DeLuxe Motherboard 1458 5001 GA-EP45-DS5/GA-EG45M-DS2H Motherboard 3a4c 82801JI (ICH10 Family) Gigabit Ethernet Controller 3a51 82801JDO (ICH10DO) VECI Controller 3a55 82801JD/DO (ICH10 Family) Virtual SATA Controller 3a60 82801JD/DO (ICH10 Family) SMBus Controller 3a62 82801JD/DO (ICH10 Family) Thermal Subsystem 3a64 82801JD/DO (ICH10 Family) USB UHCI Controller #1 3a65 82801JD/DO (ICH10 Family) USB UHCI Controller #2 3a66 82801JD/DO (ICH10 Family) USB UHCI Controller #3 3a67 82801JD/DO (ICH10 Family) USB UHCI Controller #4 3a68 82801JD/DO (ICH10 Family) USB UHCI Controller #5 3a69 82801JD/DO (ICH10 Family) USB UHCI Controller #6 3a6a 82801JD/DO (ICH10 Family) USB2 EHCI Controller #1 3a6c 82801JD/DO (ICH10 Family) USB2 EHCI Controller #2 3a6e 82801JD/DO (ICH10 Family) HD Audio Controller 3a70 82801JD/DO (ICH10 Family) PCI Express Port 1 3a72 82801JD/DO (ICH10 Family) PCI Express Port 2 3a74 82801JD/DO (ICH10 Family) PCI Express Port 3 3a76 82801JD/DO (ICH10 Family) PCI Express Port 4 3a78 82801JD/DO (ICH10 Family) PCI Express Port 5 3a7a 82801JD/DO (ICH10 Family) PCI Express Port 6 3a7c 82801JD/DO (ICH10 Family) Gigabit Ethernet Controller 3b00 5 Series/3400 Series Chipset LPC Interface Controller 3b01 Mobile 5 Series Chipset LPC Interface Controller 3b02 P55 Chipset LPC Interface Controller 3b03 PM55 Chipset LPC Interface Controller 3b04 5 Series Chipset LPC Interface Controller 3b05 Mobile 5 Series Chipset LPC Interface Controller 3b06 H55 Chipset LPC Interface Controller 3b07 QM57 Chipset LPC Interface Controller 1028 040a Latitude E6410 1028 040b Latitude E6510 e4bf 50c1 PC1-GROOVE 3b08 H57 Chipset LPC Interface Controller 3b09 HM55 Chipset LPC Interface Controller 1025 0347 Aspire 7740G 144d c06a R730 Laptop 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] 3b0a Q57 Chipset LPC Interface Controller 1028 02da OptiPlex 980 15d9 060d C7SIM-Q Motherboard 3b0b HM57 Chipset LPC Interface Controller 3b0c 5 Series Chipset LPC Interface Controller 3b0d 5 Series/3400 Series Chipset LPC Interface Controller 3b0e 5 Series/3400 Series Chipset LPC Interface Controller 3b0f QS57 Chipset LPC Interface Controller 3b10 5 Series/3400 Series Chipset LPC Interface Controller 3b11 5 Series/3400 Series Chipset LPC Interface Controller 3b12 3400 Series Chipset LPC Interface Controller 3b13 5 Series/3400 Series Chipset LPC Interface Controller 3b14 3420 Chipset LPC Interface Controller 15d9 0605 X8SIL 3b15 5 Series/3400 Series Chipset LPC Interface Controller 3b16 3450 Chipset LPC Interface Controller 3b17 5 Series/3400 Series Chipset LPC Interface Controller 3b18 5 Series/3400 Series Chipset LPC Interface Controller 3b19 5 Series/3400 Series Chipset LPC Interface Controller 3b1a 5 Series/3400 Series Chipset LPC Interface Controller 3b1b 5 Series/3400 Series Chipset LPC Interface Controller 3b1c 5 Series/3400 Series Chipset LPC Interface Controller 3b1d 5 Series/3400 Series Chipset LPC Interface Controller 3b1e 5 Series/3400 Series Chipset LPC Interface Controller 3b1f 5 Series/3400 Series Chipset LPC Interface Controller 3b20 5 Series/3400 Series Chipset 4 port SATA IDE Controller 3b21 5 Series/3400 Series Chipset 2 port SATA IDE Controller 3b22 5 Series/3400 Series Chipset 6 port SATA AHCI Controller 1028 02da OptiPlex 980 15d9 0605 X8SIL 15d9 060d C7SIM-Q Motherboard 3b23 5 Series/3400 Series Chipset 4 port SATA AHCI Controller 3b25 5 Series/3400 Series Chipset SATA RAID Controller 103c 3118 Smart Array B110i SATA RAID Controller 3b26 5 Series/3400 Series Chipset 2 port SATA IDE Controller 3b28 5 Series/3400 Series Chipset 4 port SATA IDE Controller 144d c06a R730 Laptop 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] 3b29 5 Series/3400 Series Chipset 4 port SATA AHCI Controller 1025 0347 Aspire 7740G 144d c06a R730 Laptop 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] 3b2c 5 Series/3400 Series Chipset SATA RAID Controller 3b2d 5 Series/3400 Series Chipset 2 port SATA IDE Controller 144d c06a R730 Laptop 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] e4bf 50c1 PC1-GROOVE 3b2e 5 Series/3400 Series Chipset 4 port SATA IDE Controller e4bf 50c1 PC1-GROOVE 3b2f 5 Series/3400 Series Chipset 6 port SATA AHCI Controller 1028 040a Latitude E6410 1028 040b Latitude E6510 e4bf 50c1 PC1-GROOVE 3b30 5 Series/3400 Series Chipset SMBus Controller 1025 0347 Aspire 7740G 1028 02da OptiPlex 980 1028 040a Latitude E6410 1028 040b Latitude E6510 1043 3838 P7P55-M Motherboard 1043 8383 P7P55-M Motherboard 144d c06a R730 Laptop 15d9 0605 X8SIL 15d9 060d C7SIM-Q Motherboard 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] e4bf 50c1 PC1-GROOVE 3b32 5 Series/3400 Series Chipset Thermal Subsystem 1025 0347 Aspire 7740G 1028 040a Latitude E6410 144d c06a R730 Laptop 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] 3b34 5 Series/3400 Series Chipset USB2 Enhanced Host Controller 1025 0347 Aspire 7740G 1028 02da OptiPlex 980 1028 040a Latitude E6410 1028 040b Latitude E6510 144d c06a R730 Laptop 15d9 0605 X8SIL 15d9 060d C7SIM-Q Motherboard 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] e4bf 50c1 PC1-GROOVE 3b36 5 Series/3400 Series Chipset USB Universal Host Controller 3b37 5 Series/3400 Series Chipset USB Universal Host Controller 3b38 5 Series/3400 Series Chipset USB Universal Host Controller 3b39 5 Series/3400 Series Chipset USB Universal Host Controller 3b3a 5 Series/3400 Series Chipset USB Universal Host Controller 3b3b 5 Series/3400 Series Chipset USB Universal Host Controller 3b3c 5 Series/3400 Series Chipset USB2 Enhanced Host Controller 1025 0347 Aspire 7740G 1028 02da OptiPlex 980 1028 040a Latitude E6410 1028 040b Latitude E6510 144d c06a R730 Laptop 15d9 0605 X8SIL 15d9 060d C7SIM-Q Motherboard 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] e4bf 50c1 PC1-GROOVE 3b3e 5 Series/3400 Series Chipset USB Universal Host Controller 3b3f 5 Series/3400 Series Chipset USB Universal Host Controller 3b40 5 Series/3400 Series Chipset USB Universal Host Controller 3b41 5 Series/3400 Series Chipset LAN Controller 3b42 5 Series/3400 Series Chipset PCI Express Root Port 1 1028 02da OptiPlex 980 1028 040a Latitude E6410 1028 040b Latitude E6510 103c 1521 EliteBook 8540p 144d c06a R730 Laptop 15d9 060d C7SIM-Q Motherboard 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] 3b44 5 Series/3400 Series Chipset PCI Express Root Port 2 1028 040a Latitude E6410 1028 040b Latitude E6510 15d9 060d C7SIM-Q Motherboard 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] 3b46 5 Series/3400 Series Chipset PCI Express Root Port 3 1028 040a Latitude E6410 1028 040b Latitude E6510 144d c06a R730 Laptop 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] 3b48 5 Series/3400 Series Chipset PCI Express Root Port 4 1028 040a Latitude E6410 1028 040b Latitude E6510 144d c06a R730 Laptop 3b4a 5 Series/3400 Series Chipset PCI Express Root Port 5 1028 02da OptiPlex 980 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] 3b4c 5 Series/3400 Series Chipset PCI Express Root Port 6 3b4e 5 Series/3400 Series Chipset PCI Express Root Port 7 3b50 5 Series/3400 Series Chipset PCI Express Root Port 8 3b53 5 Series/3400 Series Chipset VECI Controller 3b56 5 Series/3400 Series Chipset High Definition Audio 1025 0347 Aspire 7740G 1028 02da OptiPlex 980 1028 040a Latitude E6410 1028 040b Latitude E6510 1043 1373 G73-series gaming laptop 144d c06a R730 Laptop 15d9 060d C7SIM-Q Motherboard 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] e4bf 50c1 PC1-GROOVE 3b57 5 Series/3400 Series Chipset High Definition Audio 3b64 5 Series/3400 Series Chipset HECI Controller 1025 0347 Aspire 7740G 15d9 060d C7SIM-Q Motherboard 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] e4bf 50c1 PC1-GROOVE 3b65 5 Series/3400 Series Chipset HECI Controller 3b66 5 Series/3400 Series Chipset PT IDER Controller 3b67 5 Series/3400 Series Chipset KT Controller e4bf 50c1 PC1-GROOVE 3c00 Xeon E5/Core i7 DMI2 3c01 Xeon E5/Core i7 DMI2 in PCI Express Mode 3c02 Xeon E5/Core i7 IIO PCI Express Root Port 1a 3c03 Xeon E5/Core i7 IIO PCI Express Root Port 1b 3c04 Xeon E5/Core i7 IIO PCI Express Root Port 2a 3c05 Xeon E5/Core i7 IIO PCI Express Root Port 2b 3c06 Xeon E5/Core i7 IIO PCI Express Root Port 2c 3c07 Xeon E5/Core i7 IIO PCI Express Root Port 2d 3c08 Xeon E5/Core i7 IIO PCI Express Root Port 3a in PCI Express Mode 3c09 Xeon E5/Core i7 IIO PCI Express Root Port 3b 3c0a Xeon E5/Core i7 IIO PCI Express Root Port 3c 3c0b Xeon E5/Core i7 IIO PCI Express Root Port 3d 3c0d Xeon E5/Core i7 Non-Transparent Bridge 3c0e Xeon E5/Core i7 Non-Transparent Bridge 3c0f Xeon E5/Core i7 Non-Transparent Bridge 3c20 Xeon E5/Core i7 DMA Channel 0 3c21 Xeon E5/Core i7 DMA Channel 1 3c22 Xeon E5/Core i7 DMA Channel 2 3c23 Xeon E5/Core i7 DMA Channel 3 3c24 Xeon E5/Core i7 DMA Channel 4 3c25 Xeon E5/Core i7 DMA Channel 5 3c26 Xeon E5/Core i7 DMA Channel 6 3c27 Xeon E5/Core i7 DMA Channel 7 3c28 Xeon E5/Core i7 Address Map, VTd_Misc, System Management 3c2a Xeon E5/Core i7 Control Status and Global Errors 3c2c Xeon E5/Core i7 I/O APIC 3c2e Xeon E5/Core i7 DMA 3c2f Xeon E5/Core i7 DMA 3c40 Xeon E5/Core i7 IIO Switch and IRP Performance Monitor 3c43 Xeon E5/Core i7 Ring to PCI Express Performance Monitor 3c44 Xeon E5/Core i7 Ring to QuickPath Interconnect Link 0 Performance Monitor 3c45 Xeon E5/Core i7 Ring to QuickPath Interconnect Link 1 Performance Monitor 3c46 Xeon E5/Core i7 Processor Home Agent Performance Monitoring 3c71 Xeon E5/Core i7 Integrated Memory Controller RAS Registers 3c80 Xeon E5/Core i7 QPI Link 0 3c83 Xeon E5/Core i7 QPI Link Reut 0 3c84 Xeon E5/Core i7 QPI Link Reut 0 3c90 Xeon E5/Core i7 QPI Link 1 3c93 Xeon E5/Core i7 QPI Link Reut 1 3c94 Xeon E5/Core i7 QPI Link Reut 1 3ca0 Xeon E5/Core i7 Processor Home Agent 3ca8 Xeon E5/Core i7 Integrated Memory Controller Registers 3caa Xeon E5/Core i7 Integrated Memory Controller Target Address Decoder 0 3cab Xeon E5/Core i7 Integrated Memory Controller Target Address Decoder 1 3cac Xeon E5/Core i7 Integrated Memory Controller Target Address Decoder 2 3cad Xeon E5/Core i7 Integrated Memory Controller Target Address Decoder 3 3cae Xeon E5/Core i7 Integrated Memory Controller Target Address Decoder 4 3cb0 Xeon E5/Core i7 Integrated Memory Controller Channel 0-3 Thermal Control 0 3cb1 Xeon E5/Core i7 Integrated Memory Controller Channel 0-3 Thermal Control 1 3cb2 Xeon E5/Core i7 Integrated Memory Controller ERROR Registers 0 3cb3 Xeon E5/Core i7 Integrated Memory Controller ERROR Registers 1 3cb4 Xeon E5/Core i7 Integrated Memory Controller Channel 0-3 Thermal Control 2 3cb5 Xeon E5/Core i7 Integrated Memory Controller Channel 0-3 Thermal Control 3 3cb6 Xeon E5/Core i7 Integrated Memory Controller ERROR Registers 2 3cb7 Xeon E5/Core i7 Integrated Memory Controller ERROR Registers 3 3cb8 Xeon E5/Core i7 DDRIO 3cc0 Xeon E5/Core i7 Power Control Unit 0 3cc1 Xeon E5/Core i7 Power Control Unit 1 3cc2 Xeon E5/Core i7 Power Control Unit 2 3cd0 Xeon E5/Core i7 Power Control Unit 3 3ce0 Xeon E5/Core i7 Interrupt Control Registers 3ce3 Xeon E5/Core i7 Semaphore and Scratchpad Configuration Registers 3ce4 Xeon E5/Core i7 R2PCIe 3ce6 Xeon E5/Core i7 QuickPath Interconnect Agent Ring Registers 3ce8 Xeon E5/Core i7 Unicast Register 0 3ce9 Xeon E5/Core i7 Unicast Register 5 3cea Xeon E5/Core i7 Unicast Register 1 3ceb Xeon E5/Core i7 Unicast Register 6 3cec Xeon E5/Core i7 Unicast Register 3 3ced Xeon E5/Core i7 Unicast Register 7 3cee Xeon E5/Core i7 Unicast Register 4 3cef Xeon E5/Core i7 Unicast Register 8 3cf4 Xeon E5/Core i7 Integrated Memory Controller System Address Decoder 0 3cf5 Xeon E5/Core i7 Integrated Memory Controller System Address Decoder 1 3cf6 Xeon E5/Core i7 System Address Decoder 3e10 8th Gen Core 4-core Processor Host Bridge/DRAM Registers [Coffee Lake H] 3e18 8th Gen Core 4-core Workstation Processor Host Bridge/DRAM Registers [Coffee Lake S] 3e1f 8th Gen Core 4-core Desktop Processor Host Bridge/DRAM Registers [Coffee Lake S] 1458 5000 Z370 AORUS Gaming K3-CF 3e30 8th/9th Gen Core 8-core Desktop Processor Host Bridge/DRAM Registers [Coffee Lake S] 3e33 8th/9th Gen Core Processor Host Bridge/DRAM Registers [Coffee Lake] 3e34 Coffee Lake HOST and DRAM Controller 3e35 Coffee Lake Host Bridge/DRAM Registers 3e81 8th Gen Core Processor PCIe Controller (x16) 3e85 8th Gen Core Processor PCIe Controller (x8) 3e89 8th Gen Core Processor PCIe Controller (x4) 3e90 CoffeeLake-S GT1 [UHD Graphics 610] 3e91 CoffeeLake-S GT2 [UHD Graphics 630] 3e92 CoffeeLake-S GT2 [UHD Graphics 630] 1028 0869 Vostro 3470 3e93 CoffeeLake-S GT1 [UHD Graphics 610] 3e94 Coffee Lake-S GT2 [UHD Graphics P630] 3e96 CoffeeLake-S GT2 [UHD Graphics P630] 3e98 CoffeeLake-S GT2 [UHD Graphics 630] 3e9a Coffee Lake-S GT2 [UHD Graphics P630] 3e9b CoffeeLake-H GT2 [UHD Graphics 630] 3e9c Coffee Lake-S GT1 [UHD Graphics 610] 3ea0 WhiskeyLake-U GT2 [UHD Graphics 620] 1028 089e Inspiron 5482 3ea1 Whiskey Lake-U GT1 [UHD Graphics 610] 3ea5 CoffeeLake-U GT3e [Iris Plus Graphics 655] 3ea6 Coffee Lake-U GT3 [Iris Plus Graphics 645] 3ea8 Coffee Lake-U GT3 [Iris Plus Graphics 655] 3ea9 Coffee Lake-U GT2 [UHD Graphics 620] 3ec2 8th Gen Core Processor Host Bridge/DRAM Registers 1028 0869 Vostro 3470 1043 8694 PRIME H310M-D 3ec4 8th Gen Core Processor Host Bridge/DRAM Registers 3ec6 8th Gen Core Processor Host Bridge/DRAM Registers 3eca 8th Gen Core Processor Host Bridge/DRAM Registers 3ed0 8th Gen Core Processor Host Bridge/DRAM Registers 4000 5400 Chipset Memory Controller Hub 4001 5400 Chipset Memory Controller Hub 4003 5400 Chipset Memory Controller Hub 4021 5400 Chipset PCI Express Port 1 4022 5400 Chipset PCI Express Port 2 4023 5400 Chipset PCI Express Port 3 4024 5400 Chipset PCI Express Port 4 4025 5400 Chipset PCI Express Port 5 4026 5400 Chipset PCI Express Port 6 4027 5400 Chipset PCI Express Port 7 4028 5400 Chipset PCI Express Port 8 4029 5400 Chipset PCI Express Port 9 402d 5400 Chipset IBIST Registers 402e 5400 Chipset IBIST Registers 402f 5400 Chipset QuickData Technology Device 4030 5400 Chipset FSB Registers 4031 5400 Chipset CE/SF Registers 4032 5400 Chipset IOxAPIC 4035 5400 Chipset FBD Registers 4036 5400 Chipset FBD Registers 4041 NVMe Datacenter SSD [Optane] 4100 Moorestown Graphics and Video 4108 Atom Processor E6xx Integrated Graphics Controller 4109 Atom Processor E6xx Integrated Graphics Controller 410a Atom Processor E6xx Integrated Graphics Controller 410b Atom Processor E6xx Integrated Graphics Controller 410c Atom Processor E6xx Integrated Graphics Controller 410d Atom Processor E6xx Integrated Graphics Controller 410e Atom Processor E6xx Integrated Graphics Controller 410f Atom Processor E6xx Integrated Graphics Controller 4114 Atom Processor E6xx PCI Host Bridge #1 4115 Atom Processor E6xx PCI Host Bridge #2 4116 Atom Processor E6xx PCI Host Bridge #3 4117 Atom Processor E6xx PCI Host Bridge #4 4140 NVMe Datacenter SSD [Optane] 1028 2134 NVMe Datacenter SSD [Optane] SED 400GB 2.5" U.2 (P5800X) 1028 2135 NVMe Datacenter SSD [Optane] SED 800GB 2.5" U.2 (P5800X) 1028 2136 NVMe Datacenter SSD [Optane] SED 1.6TB 2.5" U.2 (P5800X) 1028 2137 NVMe Datacenter SSD [Optane] 400GB 2.5" U.2 (P5800X) 1028 2138 NVMe Datacenter SSD [Optane] 800GB 2.5" U.2 (P5800X) 1028 2139 NVMe Datacenter SSD [Optane] 1.6TB 2.5" U.2 (P5800X) 4220 PRO/Wireless 2200BG [Calexico2] Network Connection 103c 0934 Compaq nw8240/nx8220 103c 12f6 nc6120/nc6220/nw8240/nx8220 8086 2701 WM3B2200BG Mini-PCI Card 8086 2712 IBM ThinkPad R50e 8086 2721 Dell B130 laptop integrated WLAN 8086 2722 Dell Latitude D600 8086 2731 Samsung P35 integrated WLAN 4222 PRO/Wireless 3945ABG [Golan] Network Connection 103c 135c PRO/Wireless 3945ABG [Golan] Network Connection 8086 1000 PRO/Wireless 3945ABG Network Connection 8086 1001 WM3945ABG MOW2 8086 1005 PRO/Wireless 3945BG Network Connection 8086 1034 PRO/Wireless 3945BG Network Connection 8086 1044 PRO/Wireless 3945BG Network Connection 8086 1c00 PRO/Wireless 3945ABG Network Connection 4223 PRO/Wireless 2915ABG [Calexico2] Network Connection 1000 8086 mPCI 3B Americas/Europe ZZA 1001 8086 mPCI 3B Europe ZZE 1002 8086 mPCI 3B Japan ZZJ 1003 8086 mPCI 3B High-Band ZZH 103c 1351 Compaq nc6220 4224 PRO/Wireless 2915ABG [Calexico2] Network Connection 4227 PRO/Wireless 3945ABG [Golan] Network Connection 8086 1010 ThinkPad R60e 8086 1011 ThinkPad T60/R60e/X60s/R61 8086 1014 PRO/Wireless 3945BG Network Connection 4229 PRO/Wireless 4965 AG or AGN [Kedron] Network Connection 8086 1100 Vaio VGN-SZ79SN_C 8086 1101 PRO/Wireless 4965 AG or AGN 422b Centrino Ultimate-N 6300 8086 1101 Centrino Ultimate-N 6300 3x3 AGN 8086 1121 Centrino Ultimate-N 6300 3x3 AGN 422c Centrino Advanced-N 6200 8086 1301 Centrino Advanced-N 6200 2x2 AGN 8086 1306 Centrino Advanced-N 6200 2x2 ABG 8086 1307 Centrino Advanced-N 6200 2x2 BG 8086 1321 Centrino Advanced-N 6200 2x2 AGN 8086 1326 Centrino Advanced-N 6200 2x2 ABG 4230 PRO/Wireless 4965 AG or AGN [Kedron] Network Connection 8086 1110 Lenovo ThinkPad T51 8086 1111 Lenovo ThinkPad T61 4232 WiFi Link 5100 8086 1201 WiFi Link 5100 AGN 8086 1204 WiFi Link 5100 AGN 8086 1205 WiFi Link 5100 BGN 8086 1206 WiFi Link 5100 ABG 8086 1221 WiFi Link 5100 AGN 8086 1224 WiFi Link 5100 AGN 8086 1225 WiFi Link 5100 BGN 8086 1226 WiFi Link 5100 ABG 8086 1301 WiFi Link 5100 AGN 8086 1304 WiFi Link 5100 AGN 8086 1305 WiFi Link 5100 BGN 8086 1306 WiFi Link 5100 ABG 8086 1321 WiFi Link 5100 AGN 8086 1324 WiFi Link 5100 AGN 8086 1325 WiFi Link 5100 BGN 8086 1326 WiFi Link 5100 ABG 4235 Ultimate N WiFi Link 5300 4236 Ultimate N WiFi Link 5300 4237 PRO/Wireless 5100 AGN [Shiloh] Network Connection 8086 1211 WiFi Link 5100 AGN 8086 1214 WiFi Link 5100 AGN 8086 1215 WiFi Link 5100 BGN 8086 1216 WiFi Link 5100 ABG 8086 1311 WiFi Link 5100 AGN 8086 1314 WiFi Link 5100 AGN 8086 1315 WiFi Link 5100 BGN 8086 1316 WiFi Link 5100 ABG 4238 Centrino Ultimate-N 6300 8086 1111 Centrino Ultimate-N 6300 3x3 AGN 4239 Centrino Advanced-N 6200 8086 1311 Centrino Advanced-N 6200 2x2 AGN 8086 1316 Centrino Advanced-N 6200 2x2 ABG 423a PRO/Wireless 5350 AGN [Echo Peak] Network Connection 423b PRO/Wireless 5350 AGN [Echo Peak] Network Connection 423c WiMAX/WiFi Link 5150 8086 1201 WiMAX/WiFi Link 5150 AGN 8086 1206 WiMAX/WiFi Link 5150 ABG 8086 1221 WiMAX/WiFi Link 5150 AGN 8086 1301 WiMAX/WiFi Link 5150 AGN 8086 1306 WiMAX/WiFi Link 5150 ABG 8086 1321 WiMAX/WiFi Link 5150 AGN 423d WiMAX/WiFi Link 5150 8086 1211 WiMAX/WiFi Link 5150 AGN 8086 1216 WiMAX/WiFi Link 5150 ABG 8086 1311 WiMAX/WiFi Link 5150 AGN 8086 1316 WiMAX/WiFi Link 5150 ABG 4384 Q570 LPC/eSPI Controller 4385 Z590 LPC/eSPI Controller 4386 H570 LPC/eSPI Controller 4387 B560 LPC/eSPI Controller 4388 H510 LPC/eSPI Controller 4389 WM590 LPC/eSPI Controller 438a QM580 LPC/eSPI Controller 438b HM570 LPC/eSPI Controller 438c C252 LPC/eSPI Controller 438d C256 LPC/eSPI Controller 438e H310D LPC/eSPI Controller 438f W580 LPC/eSPI Controller 4390 RM590E LPC/eSPI Controller 4391 R580E LPC/eSPI Controller 43a3 Tiger Lake-H SMBus Controller 43a4 Tiger Lake-H SPI Controller 43b0 Tiger Lake-H PCI Express Root Port #9 43b8 Tiger Lake-H PCIe Root Port #1 43ba Tiger Lake-H PCIe Root Port #3 43bb Tiger Lake-H PCIe Root Port #4 43bc Tiger Lake-H PCI Express Root Port #5 43c0 Tiger Lake-H PCIe Root Port #17 43c7 Tiger Lake-H PCIe Root Port #24 43c8 Tiger Lake-H HD Audio Controller 43d3 Tiger Lake SATA AHCI Controller 43e0 Tiger Lake-H Management Engine Interface 43e8 Tiger Lake-H Serial IO I2C Controller #0 43e9 Tiger Lake-H Serial IO I2C Controller #1 43ed Tiger Lake-H USB 3.2 Gen 2x1 xHCI Host Controller 43ef Tiger Lake-H Shared SRAM 43f0 Tiger Lake PCH CNVi WiFi 8086 0034 Wireless-AC 9560 8086 0074 Wi-Fi 6 AX201 160MHz 8086 0264 Wireless-AC 9461 8086 02a4 Wireless-AC 9462 43fc Tiger Lake-H Integrated Sensor Hub 444e Turbo Memory Controller 4511 Elkhart Lake Gaussian and Neural Accelerator 4538 Elkhart Lake PCI-e Root Complex 4555 Elkhart Lake [UHD Graphics Gen11 16EU] 4571 Elkhart Lake [UHD Graphics Gen11 32EU] # Seems to be different than ID 4602 4601 Alder Lake-U15 Host and DRAM Controller 4602 Alder Lake Host and DRAM Controller 460d 12th Gen Core Processor PCI Express x16 Controller #1 4619 Core i9/i7/i5/i3 Host Bridge/DRAM Registers 461d Alder Lake Innovation Platform Framework Processor Participant 1028 0b10 Precision 3571 461e Alder Lake-P Thunderbolt 4 USB Controller 1028 0b10 Precision 3571 461f Alder Lake-P Thunderbolt 4 PCI Express Root Port #3 4626 Alder Lake-P Integrated Graphics Controller 4628 Alder Lake-UP3 GT2 [UHD Graphics] 4629 12th Gen Core Processor Host Bridge/DRAM Registers 462a AlderLake-P [UHD Graphics] 462f Alder Lake-P Thunderbolt 4 PCI Express Root Port #2 4636 AlderLake-P [UHD Graphics] 4638 AlderLake-P [UHD Graphics] 463a AlderLake-P [UHD Graphics] 463d 12th Gen Core Processor PCI Express x4 Controller #2 463e Alder Lake-P Thunderbolt 4 NHI #0 1028 0b10 Precision 3571 463f Alder Lake-P Thunderbolt 4 PCI Express Root Port #1 4641 12th Gen Core Processor Host Bridge/DRAM Registers 1028 0b10 Precision 3571 464d 12th Gen Core Processor PCI Express x4 Controller #0 464e Alder Lake-N Thunderbolt 4 USB Controller 464f 12th Gen Core Processor Gaussian & Neural Accelerator 1028 0b10 Precision 3571 4650 12th Gen Core Processor Host Bridge 465d Alder Lake Imaging Signal Processor 4660 12th Gen Core Processor Host Bridge/DRAM Registers 4668 12th Gen Core Processor Host Bridge/DRAM Registers 466d Alder Lake-P Thunderbolt 4 NHI #1 466e Alder Lake-P Thunderbolt 4 PCI Express Root Port #0 467d Platform Monitoring Technology 467f Volume Management Device NVMe RAID Controller 4680 AlderLake-S GT1 4682 Alder Lake-S GT1 [UHD Graphics 730] 4688 Alder Lake-HX GT1 [UHD Graphics 770] 468a Alder Lake-S [UHD Graphics] 468b Alder Lake-S [UHD Graphics] 4690 Alder Lake-S GT1 [UHD Graphics 770] 4692 Alder Lake-S GT1 [UHD Graphics 730] 4693 Alder Lake-S GT1 [UHD Graphics 710] 46a0 AlderLake-P GT2 46a1 UHD Graphics 46a3 Alder Lake-P GT1 [UHD Graphics] 46a6 Alder Lake-P GT2 [Iris Xe Graphics] 46a8 Alder Lake-UP3 GT2 [Iris Xe Graphics] 46aa Alder Lake-UP4 GT2 [Iris Xe Graphics] 46b0 AlderLake-P [Iris Xe Graphics] 46b1 AlderLake-P [Iris Xe Graphics] 46b3 Alder Lake-UP3 GT1 [UHD Graphics] 1025 161d N22C6 [Extensa 15 EX215-55] 46b6 AlderLake-P [Iris Xe Graphics] 46b8 AlderLake-P [Iris Xe Graphics] 46ba AlderLake-P [Iris Xe Graphics] 46c0 AlderLake-M GT1 46c1 AlderLake-M [Iris Xe Graphics] 46c3 Alder Lake-UP4 GT1 [UHD Graphics] 46d0 Alder Lake-N [UHD Graphics] 46d1 Alder Lake-N [UHD Graphics] 46d2 Alder Lake-N [UHD Graphics] 46d3 Alder Lake-N [Intel Graphics] 46d4 Alder Lake-N [Intel Graphics] 4905 DG1 [Iris Xe MAX Graphics] 4906 DG1 [Iris Xe Pod] 4907 SG1 [Server GPU SG-18M] 193d 4000 UN-GPU-XG310-32GB-FHFL 4908 DG1 [Iris Xe Graphics] 4909 DG1 [Iris Xe MAX 100] 4940 4xxx Series QAT 4941 4xxx Series QAT Virtual Function 4942 401xx Series QAT 4943 401xx Series QAT Virtual Function 4944 402xx Series QAT 4945 402xx Series QAT Virtual Function 4946 420xx Series QAT 4947 420xx Series QAT Virtual Function 4b00 Elkhart Lake eSPI Controller 4b23 Elkhart Lake SMBus Controller 4b24 Elkhart Lake SPI (Flash) Controller 4b38 Elkhart Lake PCH PCI Express Root Port #0 4b39 Elkhart Lake PCH PCI Express Root Port #1 4b3c Elkhart Lake PCIe Root Port #4 4b3e Elkhart Lake PCH PCI Express Root Port #6 4b4b Elkhart Lake Serial IO I2C Controller #4 4b4d Elkhart Lake Serial IO UART Controller #2 4b58 Elkhart Lake High Density Audio bus interface 4b63 Elkhart Lake SATA AHCI 4b70 Elkhart Lake Management Engine Interface 4b7d Elkhart Lake USB 3.10 XHCI 4b7f Elkhart Lake PMC SRAM 4c3d Volume Management Device NVMe RAID Controller 4c8a RocketLake-S GT1 [UHD Graphics 750] 4c8b RocketLake-S GT1 [UHD Graphics 730] 4c90 RocketLake-S GT1 [UHD Graphics P750] 4c9a RocketLake-S [UHD Graphics] 4d87 Jasper Lake eSPI Controller 4da3 Jasper Lake SMBus 4da4 Jasper Lake SPI Controller 4da8 Jasper Lake Serial IO UART Controller #0 4dab Jasper Lake Serial IO SPI Controller #1 4db8 Jasper Lake PCIe Root Port #1 4db9 Jasper Lake PCIe Root Port #2 4dbc Jasper Lake PCIe Root Port #5 4dbe Jasper Lake PCIe Root Port #7 4dc4 Jasper Lake eMMC Controller 4dc5 Jasper Lake Serial IO I2C Host Controller #4 4dc6 Jasper Lake Serial IO I2C Host Controller #5 4dc8 Jasper Lake HD Audio 4dd3 Jasper Lake SATA AHCI Controller 4de0 Management Engine Interface 4de8 Jasper Lake Serial IO I2C Host Controller #0 4de9 Jasper Lake Serial IO I2C Host Controller #1 4dea Jasper Lake Serial IO I2C Host Controller #2 4deb Jasper Lake Serial IO I2C Host Controller #3 4ded Jasper Lake USB 3.1 xHCI Host Controller 4def Jasper Lake Shared SRAM 4df0 Wi-Fi 6 AX201 160MHz 4df8 Jasper Lake SD Controller 4e03 Dynamic Tuning service 4e19 JasperLake IPU 4e55 JasperLake [UHD Graphics] 4e61 JasperLake [UHD Graphics] 4e71 JasperLake [UHD Graphics] 4f80 DG2 [Intel Xe Graphics] 4f81 DG2 [Intel Xe Graphics] 4f82 DG2 [Intel Xe Graphics] 4f83 DG2 [Intel Xe Graphics] 4f84 DG2 [Intel Xe Graphics] 4f85 DG2 [Intel Xe Graphics] 4f86 DG2 [Intel Xe Graphics] 4f87 DG2 [Intel Xe Graphics] 4f88 DG2 [Intel Xe Graphics] 4f89 ACMP [Xe Graphics] 4f8c ACMP [Xe Graphics] 4f90 DG2 Audio Controller 4f91 DG2 Audio Controller 4f92 DG2 Audio Controller 5001 LE80578 5002 LE80578 Graphics Processor Unit 5009 LE80578 Video Display Controller 500d LE80578 Expansion Bus 500e LE80578 UART Controller 500f LE80578 General Purpose IO 5010 LE80578 I2C Controller 5012 LE80578 Serial Peripheral Interface Bus 5020 EP80579 Memory Controller Hub 5021 EP80579 DRAM Error Reporting Registers 5023 EP80579 EDMA Controller 5024 EP80579 PCI Express Port PEA0 5025 EP80579 PCI Express Port PEA1 5028 EP80579 S-ATA IDE 5029 EP80579 S-ATA AHCI 502a EP80579 S-ATA Reserved 502b EP80579 S-ATA Reserved 502c EP80579 Integrated Processor ASU 502d EP80579 Integrated Processor with QuickAssist ASU 502e EP80579 Reserved 502f EP80579 Reserved 5030 EP80579 Reserved 5031 EP80579 LPC Bus 5032 EP80579 SMBus Controller 5033 EP80579 USB 1.1 Controller 5035 EP80579 USB 2.0 Controller 5037 EP80579 PCI-PCI Bridge (transparent mode) 5039 EP80579 Controller Area Network (CAN) interface #1 503a EP80579 Controller Area Network (CAN) interface #2 503b EP80579 Synchronous Serial Port (SPP) 503c EP80579 IEEE 1588 Hardware Assist 503d EP80579 Local Expansion Bus 503e EP80579 Global Control Unit (GCU) 503f EP80579 Reserved 5040 EP80579 Integrated Processor Gigabit Ethernet MAC 5041 EP80579 Integrated Processor with QuickAssist Gigabit Ethernet MAC 5042 EP80579 Reserved 5043 EP80579 Reserved 5044 EP80579 Integrated Processor Gigabit Ethernet MAC 5045 EP80579 Integrated Processor with QuickAssist Gigabit Ethernet MAC 5046 EP80579 Reserved 5047 EP80579 Reserved 5048 EP80579 Integrated Processor Gigabit Ethernet MAC 5049 EP80579 Integrated Processor with QuickAssist Gigabit Ethernet MAC 504a EP80579 Reserved 504b EP80579 Reserved 504c EP80579 Integrated Processor with QuickAssist TDM 5181 Alder Lake PCH-P LPC/eSPI Controller 5182 Alder Lake PCH eSPI Controller 1028 0b10 Precision 3571 5187 Alder Lake LPC Controller 519d Raptor Lake LPC/eSPI Controller 1028 0c06 Precision 3580 51a3 Alder Lake PCH-P SMBus Host Controller 1028 0b10 Precision 3571 1028 0c06 Precision 3580 51a4 Alder Lake-P PCH SPI Controller 1028 0b10 Precision 3571 1028 0c06 Precision 3580 51a8 Alder Lake PCH UART #0 51a9 Alder Lake PCH UART #1 51aa Alder Lake SPI Controller 51ab Alder Lake SPI Controller 51b0 Alder Lake PCI Express Root Port #9 51b1 Alder Lake PCI Express x1 Root Port #10 51b2 Alder Lake PCI Express x1 Root Port #11 51b3 Alder Lake PCI Express Root Port #12 51bb Alder Lake-P PCH PCIe Root Port #4 51bc Alder Lake PCI Express x4 Root Port #5 51bd Alder Lake-P PCH PCIe Root Port #6 51bf Alder Lake PCH-P PCI Express Root Port #9 51c5 Alder Lake-P Serial IO I2C Controller #0 51c6 Alder Lake-P Serial IO I2C Controller #1 51c8 Alder Lake PCH-P High Definition Audio Controller 1028 0b10 Precision 3571 51ca Raptor Lake-P/U/H cAVS 1028 0c06 Precision 3580 51cc Alder Lake Smart Sound Technology Audio Controller 51d3 Alder Lake-P SATA AHCI Controller 1028 0b10 Precision 3571 51d8 Alder Lake-P Serial IO I2C Controller #2 51d9 Alder Lake-P Serial IO I2C Controller #3 51e0 Alder Lake PCH HECI Controller 1028 0b10 Precision 3571 1028 0c06 Precision 3580 51e3 Alder Lake AMT SOL Redirection 1028 0b10 Precision 3571 51e8 Alder Lake PCH Serial IO I2C Controller #0 1028 0b10 Precision 3571 1028 0c06 Precision 3580 51e9 Alder Lake PCH Serial IO I2C Controller #1 1028 0b10 Precision 3571 1028 0c06 Precision 3580 51ea Alder Lake PCH Serial IO I2C Controller #2 51eb Alder Lake PCH Serial IO I2C Controller #3 51ed Alder Lake PCH USB 3.2 xHCI Host Controller 1028 0b10 Precision 3571 1028 0c06 Precision 3580 51ef Alder Lake PCH Shared SRAM 1028 0b10 Precision 3571 1028 0c06 Precision 3580 51f0 Alder Lake-P PCH CNVi WiFi 1a56 1652 Dual Band Wi-Fi 6(802.11ax) Killer AX1650i 160MHz 2x2 [Cyclone Peak] 1a56 1671 Dual Band Wi-Fi 6E(802.11ax) AX1675s 160MHz 2x2 [Garfield Peak] 1a56 1672 Dual Band Wi-Fi 6E(802.11ax) AX1675i 160MHz 2x2 [Garfield Peak] 1a56 1692 Simultaneous Dual Band(Double Connect) Wi-Fi 6E AX1690i 160MHz 2x2 [Garfield Peak] 8086 0034 Dual Band Wi-Fi 5(802.11ac) Wireless-AC 9560 160MHz 2x2 [Jefferson Peak] 8086 0070 Dual Band Wi-Fi 6(802.11ax) AX201 160MHz 2x2 [Harrison Peak] 8086 0074 Dual Band Wi-Fi 6(802.11ax) AX201 160MHz 2x2 [Harrison Peak] 8086 0094 Dual Band Wi-Fi 6E(802.11ax) AX211 160MHz 2x2 [Garfield Peak] 8086 00b4 Simultaneous Dual Band(Double Connect) Wi-Fi 6E AX411 160MHz 2x2 [Garfield Peak] 8086 0234 Dual Band Wi-Fi 5(802.11ac) Wireless-AC 9560 80MHz 2x2 [Jefferson Peak] 8086 0244 Single Band Wi-Fi 6(802.11ax) AX101 80MHz 1x1 [Harrison Peak] 8086 0264 Dual Band Wi-Fi 5(802.11ac) Wireless-AC 9461 80MHz 1x1 [Jefferson Peak] 8086 0274 Dual Band Wi-Fi E(802.11ax) AX203 80MHz 2x2 [Johnson Peak] 8086 02a4 Dual Band Wi-Fi 5(802.11ac) Wireless-AC 9462 80MHz 1x1 [Jefferson Peak] 8086 4070 Dual Band Wi-Fi 6(802.11ax) AX201 160MHz 2x2 [Harrison Peak] 8086 4090 Dual Band Wi-Fi 6E(802.11ax) AX211 160MHz 2x2 [Garfield Peak] 8086 42a4 Dual Band Wi-Fi 5(802.11ac) Wireless-AC 9462 80MHz 1x1 [Jefferson Peak] 51f1 Raptor Lake PCH CNVi WiFi 8086 4090 Wi-Fi 6E AX211 160MHz 51fc Alder Lake-P Integrated Sensor Hub 1028 0b10 Precision 3571 1028 0c06 Precision 3580 5200 EtherExpress PRO/100 Intelligent Server PCI Bridge 5201 EtherExpress PRO/100 Intelligent Server Fast Ethernet Controller 8086 0001 EtherExpress PRO/100 Server Ethernet Adapter 530d 80310 (IOP) IO Processor 5481 Alder Lake-N PCH eSPI Controller 54a3 Alder Lake-N SMBus 54a4 Alder Lake-N SPI (flash) Controller 54a8 Alder Lake-N Serial IO UART Host Controller 54b0 Alder Lake-N PCI Express Root Port #9 54b1 Alder Lake-N PCI Express Root Port #10 54b2 Alder Lake-N PCI Express Root Port #11 54b3 Alder Lake-N PCI Express Root Port #12 54c8 Alder Lake-N PCH High Definition Audio Controller 54d3 Alder Lake-N SATA AHCI Controller 54e0 Alder Lake-N PCH HECI Controller 54ed Alder Lake-N PCH USB 3.2 xHCI Host Controller 54ef Alder Lake-N PCH Shared SRAM 54f0 CNVi: Wi-Fi 8086 0244 Wi-Fi 6 AX101NGW 5502 Ethernet Controller (2) I225-LMvP 1ab6 0225 TS4 On-Board 2.5GbE Ethernet Adaptor 5690 DG2 [Arc A770M] 5691 DG2 [Arc A730M] 5692 DG2 [Arc A550M] 5693 DG2 [Arc A370M] 5694 DG2 [Arc A350M] 5695 DG2 [Iris Xe MAX A200M] 5696 DG2 [Arc A570M] 5697 DG2 [Arc A530M] 5698 DG2 [Arc Xe Graphics] 56a0 DG2 [Arc A770] 56a1 DG2 [Arc A750] 56a2 DG2 [Arc A580] 56a3 DG2 [Arc Xe Graphics] 56a4 DG2 [Arc Xe Graphics] 56a5 DG2 [Arc A380] 56a6 DG2 [Arc A310] 56a7 DG2 [Arc Xe Graphics] 56a8 DG2 [Arc Xe Graphics] 56a9 DG2 [Arc Xe Graphics] 56b0 DG2 [Arc Pro A30M] 56b1 DG2 [Arc Pro A40/A50] 56b2 DG2 [Arc Pro A60M] 56b3 DG2 [Arc Pro A60] 56ba DG2 [Intel Graphics] 56bb DG2 [Intel Graphics] 56bc DG2 [Intel Graphics] 56bd DG2 [Intel Graphics] 56be DG2 [Arc Graphics A750E] 56bf DG2 [Arc Graphics A580E] 56c0 ATS-M [Data Center GPU Flex 170] 56c1 ATS-M [Data Center GPU Flex 140] 56c2 ATS-M [Data Center GPU Flex 170V] 5780 Thunderbolt 80/120G Bridge [Barlow Ridge Host 80G 2023] 5781 Thunderbolt 80/120G NHI [Barlow Ridge Host 80G 2023] 5782 Thunderbolt 80/120G USB Controller [Barlow Ridge Host 80G 2023] 5783 Thunderbolt Bridge [Barlow Ridge Host 40G 2023] 5784 Thunderbolt NHI [Barlow Ridge Host 40G 2023] 5785 Thunderbolt USB Controller [Barlow Ridge Host 40G 2023] 5786 Thunderbolt 80/120G Bridge [Barlow Ridge Hub 80G 2023] 5787 Thunderbolt 80/120G USB Controller [Barlow Ridge Hub 80G 2023] 5795 Granite Rapids Chipset LPC Controller 579c Ethernet Connection E825-C for backplane 579d Ethernet Connection E825-C for QSFP 579e Ethernet Connection E825-C for SFP 57a4 Thunderbolt Bridge [Barlow Ridge Hub 40G 2023] 57a5 Thunderbolt USB Controller [Barlow Ridge Hub 40G 2023] 57ad E610 Virtual Function 57ae Ethernet Controller E610 Backplane 57af Ethernet Controller E610 SFP 57b0 Ethernet Controller E610 10GBASE T 8086 0003 Ethernet Network Adapter E610-XT4 for OCP 3.0 8086 0004 Ethernet Network Adapter E610-XT2 for OCP 3.0 57b1 Ethernet Controller E610 2.5GBASE T 8086 0000 Ethernet Converged Network Adapter E610 8086 0003 Ethernet Network Adapter E610-IT4 for OCP 3.0 57b2 Ethernet Controller E610 SGMII 5845 QEMU NVM Express Controller 1af4 1100 QEMU Virtual Machine 5900 Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers 5901 Xeon E3-1200 v6/7th Gen Core Processor PCIe Controller (x16) 5902 HD Graphics 610 5904 Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers 1025 115f Aspire E5-575G 17aa 2247 ThinkPad T570 17aa 224f ThinkPad X1 Carbon 5th Gen 5905 Xeon E3-1200 v6/7th Gen Core Processor PCIe Controller (x8) 5906 HD Graphics 610 5909 Xeon E3-1200 v6/7th Gen Core Processor PCIe Controller (x4) 590b HD Graphics 610 590c Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers 590f Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers 1043 8694 H110I-PLUS Motherboard 1462 7994 H110M ECO/GAMING 1462 7a68 B250 KRAIT GAMING (MS-7A68) 1462 7a72 H270 PC MATE 5910 Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers 5911 Xeon E3-1200 v6/7th Gen Core Processor Gaussian Mixture Model 5912 HD Graphics 630 1043 8694 H110I-PLUS Motherboard 1462 7994 H110M ECO/GAMING 1462 7a72 H270 PC MATE 5914 Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers 17aa 225d ThinkPad T480 5916 HD Graphics 620 1025 1094 Aspire E5-575G 17aa 2248 ThinkPad T570 17aa 224f ThinkPad X1 Carbon 5th Gen 5917 UHD Graphics 620 17aa 225e ThinkPad T480 5918 Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers 591b HD Graphics 630 591c UHD Graphics 615 591d HD Graphics P630 591e HD Graphics 615 591f Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers 5921 HD Graphics 620 5923 HD Graphics 635 5926 Iris Plus Graphics 640 5927 Iris Plus Graphics 650 5a84 Apollo Lake [HD Graphics 505] 5a85 HD Graphics 500 5a88 Celeron N3350/Pentium N4200/Atom E3900 Series Imaging Unit 5a98 Celeron N3350/Pentium N4200/Atom E3900 Series Audio Cluster 5a9a Celeron N3350/Pentium N4200/Atom E3900 Series Trusted Execution Engine 5aa2 Celeron N3350/Pentium N4200/Atom E3900 Series Integrated Sensor Hub 5aa8 Celeron N3350/Pentium N4200/Atom E3900 Series USB xHCI 5aac Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #1 5aae Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #2 5ab0 Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #3 5ab2 Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #4 5ab4 Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #5 5ab6 Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #6 5ab8 Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #7 5aba Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #8 5abc Celeron N3350/Pentium N4200/Atom E3900 Series HSUART Controller #1 5abe Celeron N3350/Pentium N4200/Atom E3900 Series HSUART Controller #2 5ac0 Celeron N3350/Pentium N4200/Atom E3900 Series HSUART Controller #3 5ac2 Celeron N3350/Pentium N4200/Atom E3900 Series SPI Controller #1 5ac4 Celeron N3350/Pentium N4200/Atom E3900 Series SPI Controller #2 5ac6 Celeron N3350/Pentium N4200/Atom E3900 Series SPI Controller #3 5ac8 Celeron N3350/Pentium N4200/Atom E3900 Series PWM Pin Controller 5aca Celeron N3350/Pentium N4200/Atom E3900 Series SDXC/MMC Host Controller 5acc Celeron N3350/Pentium N4200/Atom E3900 Series eMMC Controller 5ad0 Celeron N3350/Pentium N4200/Atom E3900 Series SDIO Controller 5ad4 Celeron N3350/Pentium N4200/Atom E3900 Series SMBus Controller 5ad6 Celeron N3350/Pentium N4200/Atom E3900 Series PCI Express Port B #1 5ad7 Celeron N3350/Pentium N4200/Atom E3900 Series PCI Express Port B #2 5ad8 Celeron N3350/Pentium N4200/Atom E3900 Series PCI Express Port A #1 5ad9 Celeron N3350/Pentium N4200/Atom E3900 Series PCI Express Port A #2 5ada Celeron N3350/Pentium N4200/Atom E3900 Series PCI Express Port A #3 5adb Celeron N3350/Pentium N4200/Atom E3900 Series PCI Express Port A #4 5ae3 Celeron N3350/Pentium N4200/Atom E3900 Series SATA AHCI Controller 5ae8 Celeron N3350/Pentium N4200/Atom E3900 Series Low Pin Count Interface 5aee Celeron N3350/Pentium N4200/Atom E3900 Series HSUART Controller #4 5af0 Celeron N3350/Pentium N4200/Atom E3900 Series Host Bridge 6420 Lunar Lake [Intel Graphics] 643e Lunar Lake NPU 64a0 Lunar Lake [Intel Arc Graphics 130V / 140V] 64b0 Lunar Lake [Intel Graphics] 65c0 5100 Chipset Memory Controller Hub 65e2 5100 Chipset PCI Express x4 Port 2 65e3 5100 Chipset PCI Express x4 Port 3 65e4 5100 Chipset PCI Express x4 Port 4 65e5 5100 Chipset PCI Express x4 Port 5 65e6 5100 Chipset PCI Express x4 Port 6 65e7 5100 Chipset PCI Express x4 Port 7 65f0 5100 Chipset FSB Registers 1028 020f PowerEdge R300 1028 0210 PowerEdge T300 65f1 5100 Chipset Reserved Registers 1028 0210 PowerEdge T300 65f3 5100 Chipset Reserved Registers 65f5 5100 Chipset DDR Channel 0 Registers 65f6 5100 Chipset DDR Channel 1 Registers 65f7 5100 Chipset PCI Express x8 Port 2-3 65f8 5100 Chipset PCI Express x8 Port 4-5 65f9 5100 Chipset PCI Express x8 Port 6-7 65fa 5100 Chipset PCI Express x16 Port 4-7 65ff 5100 Chipset DMA Engine 6f00 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DMI2 15d9 0832 X10SRL-F 6f01 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 0 6f02 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 1 6f03 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 1 6f04 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 2 6f05 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 2 6f06 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 2 6f07 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 2 6f08 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 3 6f09 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 3 6f0a Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 3 6f0b Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 3 6f10 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug 6f11 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug 6f12 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug 6f13 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug 6f14 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug 6f15 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug 6f16 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug 6f17 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug 6f18 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug 6f19 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug 6f1a Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug 6f1b Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug 6f1c Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug 6f1d Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R2PCIe Agent 6f1e Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Ubox 6f1f Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Ubox 6f20 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Crystal Beach DMA Channel 0 15d9 0832 X10SRL-F 6f21 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Crystal Beach DMA Channel 1 15d9 0832 X10SRL-F 6f22 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Crystal Beach DMA Channel 2 15d9 0832 X10SRL-F 6f23 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Crystal Beach DMA Channel 3 15d9 0832 X10SRL-F 6f24 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Crystal Beach DMA Channel 4 15d9 0832 X10SRL-F 6f25 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Crystal Beach DMA Channel 5 15d9 0832 X10SRL-F 6f26 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Crystal Beach DMA Channel 6 15d9 0832 X10SRL-F 6f27 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Crystal Beach DMA Channel 7 15d9 0832 X10SRL-F 6f28 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Map/VTd_Misc/System Management 15d9 0832 X10SRL-F 6f29 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Hot Plug 15d9 0832 X10SRL-F 6f2a Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO RAS/Control Status/Global Errors 15d9 0832 X10SRL-F 6f2c Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D I/O APIC 15d9 0832 X10SRL-F 6f30 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Home Agent 0 6f32 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 0 6f33 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 1 6f34 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R2PCIe Agent 6f36 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R3 QPI Link 0/1 6f37 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R3 QPI Link 0/1 6f38 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Home Agent 1 6f39 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IO Performance Monitoring 6f3a Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 2 6f3e Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R3 QPI Link 2 6f3f Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R3 QPI Link 2 6f40 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 2 6f41 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R3 QPI Link 2 6f43 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 2 6f45 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 2 Debug 6f46 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 2 Debug 6f47 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 2 Debug 6f50 Xeon Processor D Family QuickData Technology Register DMA Channel 0 6f51 Xeon Processor D Family QuickData Technology Register DMA Channel 1 6f52 Xeon Processor D Family QuickData Technology Register DMA Channel 2 6f53 Xeon Processor D Family QuickData Technology Register DMA Channel 3 6f54 Xeon Processor D Family QuickAssist Technology 6f55 Xeon Processor D Family QuickAssist Technology Virtual Fuction 6f60 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Home Agent 1 6f68 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Target Address/Thermal/RAS 6f6a Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Channel Target Address Decoder 6f6b Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Channel Target Address Decoder 6f6c Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Channel Target Address Decoder 6f6d Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Channel Target Address Decoder 6f6e Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 2/3 Broadcast 6f6f Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Global Broadcast 6f70 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Home Agent 0 Debug 6f71 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Target Address/Thermal/RAS 6f76 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R3 QPI Link Debug 6f78 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Home Agent 1 Debug 6f79 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Target Address/Thermal/RAS 6f7d Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Ubox 6f7e Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R3 QPI Link Debug 6f80 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 0 6f81 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R3 QPI Link 0/1 6f83 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 0 6f85 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 0 Debug 6f86 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 0 Debug 6f87 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 0 Debug 6f88 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit 6f8a Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit 6f90 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 1 6f93 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 1 6f95 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 1 Debug 6f96 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 1 Debug 6f98 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit 6f99 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit 6f9a Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit 6f9c Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit 6fa0 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Home Agent 0 6fa8 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Target Address/Thermal/RAS 6faa Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel Target Address Decoder 6fab Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel Target Address Decoder 6fac Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel Target Address Decoder 6fad Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel Target Address Decoder 6fae Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 0/1 Broadcast 6faf Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Global Broadcast 6fb0 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 0 Thermal Control 6fb1 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 1 Thermal Control 6fb2 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 0 Error 6fb3 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 1 Error 6fb4 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 2 Thermal Control 6fb5 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 3 Thermal Control 6fb6 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 2 Error 6fb7 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 3 Error 6fb8 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 2/3 Interface 6fb9 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 2/3 Interface 6fba Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 2/3 Interface 6fbb Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 2/3 Interface 6fbc Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 0/1 Interface 6fbd Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 0/1 Interface 6fbe Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 0/1 Interface 6fbf Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 0/1 Interface 6fc0 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit 6fc1 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit 6fc2 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit 6fc3 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit 6fc4 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit 6fc5 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit 6fc6 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit 6fc7 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit 6fc8 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit 6fc9 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit 6fca Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit 6fcb Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit 6fcc Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit 6fcd Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit 6fce Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit 6fcf Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit 6fd0 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 1 - Channel 0 Thermal Control 6fd1 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 1 - Channel 1 Thermal Control 6fd2 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 1 - Channel 0 Error 6fd3 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 1 - Channel 1 Error 6fd4 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 1 - Channel 2 Thermal Control 6fd5 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 1 - Channel 3 Thermal Control 6fd6 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 1 - Channel 2 Error 6fd7 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 1 - Channel 3 Error 6fe0 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent 6fe1 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent 6fe2 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent 6fe3 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent 6fe4 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent 6fe5 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent 6fe6 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent 6fe7 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent 6fe8 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent 6fe9 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent 6fea Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent 6feb Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent 6fec Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent 6fed Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent 6fee Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent 6fef Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent 6ff0 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent 6ff1 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent 6ff8 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent 6ff9 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent 6ffa Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent 6ffb Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent 6ffc Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent 6ffd Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent 6ffe Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent 7000 82371SB PIIX3 ISA [Natoma/Triton II] 01de fffd Propolis Virtual PIIX3 ISA Controller 1af4 1100 Qemu virtual machine 7010 82371SB PIIX3 IDE [Natoma/Triton II] 1af4 1100 Qemu virtual machine 7020 82371SB PIIX3 USB [Natoma/Triton II] 1af4 1100 QEMU Virtual Machine 7030 430VX - 82437VX TVX [Triton VX] 7050 Intercast Video Capture Card 7051 PB 642365-003 (Business Video Conferencing Card) 7100 430TX - 82439TX MTXC 7110 82371AB/EB/MB PIIX4 ISA 15ad 1976 Virtual Machine Chipset 7111 82371AB/EB/MB PIIX4 IDE 15ad 1976 Virtual Machine Chipset 7112 82371AB/EB/MB PIIX4 USB 15ad 1976 Virtual Machine Chipset 1af4 1100 QEMU Virtual Machine 7113 82371AB/EB/MB PIIX4 ACPI 01de fffc Propolis Virtual PIIX4 PM Controller 15ad 1976 Virtual Machine Chipset 1af4 1100 Qemu virtual machine 7120 82810 GMCH (Graphics Memory Controller Hub) 4c53 1040 CL7 mainboard 4c53 1060 PC7 mainboard 7121 82810 (CGC) Chipset Graphics Controller 4c53 1040 CL7 mainboard 4c53 1060 PC7 mainboard 8086 4341 Cayman (CA810) Mainboard 7122 82810 DC-100 (GMCH) Graphics Memory Controller Hub 7123 82810 DC-100 (CGC) Chipset Graphics Controller 7124 82810E DC-133 (GMCH) Graphics Memory Controller Hub 1028 00b4 OptiPlex GX110 7125 82810E DC-133 (CGC) Chipset Graphics Controller 1028 00b4 OptiPlex GX110 7126 82810 DC-133 System and Graphics Controller 7128 82810-M DC-100 System and Graphics Controller 712a 82810-M DC-133 System and Graphics Controller 7180 440LX/EX - 82443LX/EX Host bridge 7181 440LX/EX - 82443LX/EX AGP bridge 7190 440BX/ZX/DX - 82443BX/ZX/DX Host bridge 0e11 0500 Armada 1750 Laptop System Chipset 0e11 b110 Armada M700/E500 1028 008e PowerEdge 1300 mainboard 1043 803b CUBX-L/E Mainboard 1179 0001 Toshiba Tecra 8100 Laptop System Chipset 15ad 1976 Virtual Machine Chipset 4c53 1050 CT7 mainboard 4c53 1051 CE7 mainboard 7191 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge 1028 008e PowerEdge 1300 mainboard 7192 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (AGP disabled) 0e11 0460 Armada 1700 Laptop System Chipset 1179 0001 Satellite 4010 4c53 1000 CC7/CR7/CP7/VC7/VP7/VR7 mainboard 8086 7190 Dell PowerEdge 350 7194 82440MX Host Bridge 1033 0000 Versa Note Vxi 4c53 10a0 CA3/CR3 mainboard 7195 82440MX AC'97 Audio Controller 1033 80cc Versa Note VXi 10cf 1099 QSound_SigmaTel Stac97 PCI Audio 11d4 0040 SoundMAX Integrated Digital Audio 11d4 0048 SoundMAX Integrated Digital Audio 7196 82440MX AC'97 Modem Controller 7198 82440MX ISA Bridge 7199 82440MX EIDE Controller 719a 82440MX USB Universal Host Controller 719b 82440MX Power Management Controller 71a0 440GX - 82443GX Host bridge 4c53 1050 CT7 mainboard 4c53 1051 CE7 mainboard 71a1 440GX - 82443GX AGP bridge 71a2 440GX - 82443GX Host bridge (AGP disabled) 4c53 1000 CC7/CR7/CP7/VC7/VP7/VR7 mainboard 7360 XMM7360 LTE Advanced Modem 7560 XMM7560 LTE Advanced Pro Modem 7600 82372FB PIIX5 ISA 7601 82372FB PIIX5 IDE 7602 82372FB PIIX5 USB 7603 82372FB PIIX5 SMBus 7800 82740 (i740) AGP Graphics Accelerator 003d 0008 Starfighter AGP 003d 000b Starfighter AGP 1092 0100 Stealth II G460 10b4 201a Lightspeed 740 10b4 202f Lightspeed 740 8086 0000 Terminator 2x/i 8086 0100 Intel740 Graphics Accelerator 7a04 Raptor Lake LPC/eSPI Controller 7a23 Raptor Lake-S PCH SMBus Controller 7a24 Raptor Lake SPI (flash) Controller 7a27 Raptor Lake-S PCH Shared SRAM 7a30 Raptor Lake PCI Express Root Port #9 7a38 Raptor Lake PCI Express Root Port #1 7a3a Raptor Point-S PCH - PCI Express Root Port 3 7a3b Raptor Lake PCI Express Root Port #4 7a40 Raptor Lake PCI Express Root Port #17 7a44 Raptor Lake PCI Express Root Port #21 7a48 Raptor Lake PCI Express Root Port #25 7a4c Raptor Lake Serial IO I2C Host Controller #0 7a4d Raptor Lake Serial IO I2C Host Controller #1 7a4e Raptor Lake Serial IO I2C Host Controller #2 7a50 Raptor Lake High Definition Audio Controller 7a60 Raptor Lake USB 3.2 Gen 2x2 (20 Gb/s) XHCI Host Controller 7a62 Raptor Lake SATA AHCI Controller 7a68 Raptor Lake CSME HECI #1 7a69 Raptor Lake CSME HECI #2 7a70 Raptor Lake-S PCH CNVi WiFi 8086 0090 WiFi 6E AX211 160MHz # Unlike other PCH components. The eSPI controller is specific to each chipset model 7a84 Z690 Chipset LPC/eSPI Controller 7a85 LPC Controller/eSPI Controller (H670) 7aa3 Alder Lake-S PCH SMBus Controller 7aa4 Alder Lake-S PCH SPI Controller 7aa7 Alder Lake-S PCH Shared SRAM 7aa8 Alder Lake-S PCH Serial IO UART #0 7aab Alder Lake-S PCH Serial IO SPI Controller #1 7ab0 Alder Lake-S PCH PCI Express Root Port #9 7ab4 Alder Lake-S PCH PCI Express Root Port #13 7ab8 Alder Lake-S PCH PCI Express Root Port #1 7ab9 Alder Lake-S PCH PCI Express Root Port #2 7aba Alder Lake-S PCH PCI Express Root Port #3 7abc Alder Lake-S PCH PCI Express Root Port #5 7abd Alder Lake-S PCH PCI Express Root Port #6 7abf Alder Lake-S PCH PCI Express Root Port #8 7ac4 Alder Lake-S PCH PCI Express Root Port #21 7ac8 Alder Lake-S PCH PCI Express Root Port #25 7acc Alder Lake-S PCH Serial IO I2C Controller #0 7acd Alder Lake-S PCH Serial IO I2C Controller #1 7ace Alder Lake-S PCH Serial IO I2C Controller #2 7acf Alder Lake-S PCH Serial IO I2C Controller #3 7ad0 Alder Lake-S HD Audio Controller 7ae0 Alder Lake-S PCH USB 3.2 Gen 2x2 XHCI Controller 7ae2 Alder Lake-S PCH SATA Controller [AHCI Mode] 7ae8 Alder Lake-S PCH HECI Controller #1 7af0 Alder Lake-S PCH CNVi WiFi 8086 0034 Wireless-AC 9560 8086 0070 Wi-Fi 6 AX201 160MHz 8086 0094 Wi-Fi 6 AX201 160MHz 7afc Alder Lake-S PCH Serial IO I2C Controller #4 7afd Alder Lake-S PCH Serial IO I2C Controller #5 7d03 Meteor Lake-P Dynamic Tuning Technology 7d0b Volume Management Device NVMe RAID Controller Intel Corporation 7d0d Meteor Lake-P Platform Monitoring Technology 7d19 Meteor Lake IPU 7d1d Meteor Lake NPU 7d40 Meteor Lake-M [Intel Graphics] 7d41 Arrow Lake-U [Intel Graphics] 7d45 Meteor Lake-P [Intel Graphics] 7d51 Arrow Lake-P [Intel Graphics] 7d55 Meteor Lake-P [Intel Arc Graphics] 7d60 Meteor Lake-M [Intel Graphics] 7d67 Arrow Lake-U [Intel Graphics] 7dd1 Arrow Lake-P [Intel Graphics] 7dd5 Meteor Lake-P [Intel Graphics] 7e01 Meteor Lake-P LPC/eSPI Controller 7e22 Meteor Lake-P SMBus Controller 7e23 Meteor Lake-P SPI Controller 7e24 Meteor Lake-P Trace Hub 7e25 Meteor Lake-P Serial IO UART Controller #0 7e26 Meteor Lake-P Serial IO UART Controller #1 7e27 Meteor Lake-P Serial IO SPI Controller #0 7e28 Meteor Lake-P HD Audio Controller 7e30 Meteor Lake-P Serial IO SPI Controller #1 7e40 Meteor Lake PCH CNVi WiFi 8086 0094 Wi-Fi 6E AX211 160MHz # Refer from Intel Meteor Lake EDS (doc#640228) under its "Device IDs" section. 7e45 Meteor Lake-P Integrated Sensor Hub 7e46 Meteor Lake-P Serial IO SPI Controller #2 7e4c Meteor Lake-P Gaussian & Neural-Network Accelerator 7e50 Meteor Lake-P Serial IO I2C Controller #4 7e51 Meteor Lake-P Serial IO I2C Controller #5 7e52 Meteor Lake-P Serial IO UART Controller #2 7e70 Meteor Lake-P CSME HECI #1 7e73 Meteor Lake-P Keyboard and Text (KT) Redirection 7e78 Meteor Lake-P Serial IO I2C Controller #0 7e79 Meteor Lake-P Serial IO I2C Controller #1 7e7a Meteor Lake-P Serial IO I2C Controller #2 7e7b Meteor Lake-P Serial IO I2C Controller #3 7e7d Meteor Lake-P USB 3.2 Gen 2x1 xHCI Host Controller 7e7e Meteor Lake-P USB Device Controller 7ec0 Meteor Lake-P Thunderbolt 4 USB Controller 7ec2 Meteor Lake-P Thunderbolt 4 NHI #0 7ec3 Meteor Lake-P Thunderbolt 4 NHI #1 7ec4 Meteor Lake-P Thunderbolt 4 PCI Express Root Port #0 7ec5 Meteor Lake-P Thunderbolt 4 PCI Express Root Port #1 7ec6 Meteor Lake-P Thunderbolt 4 PCI Express Root Port #2 7ec7 Meteor Lake-P Thunderbolt 4 PCI Express Root Port #3 8002 Trusted Execution Technology Registers 8003 Trusted Execution Technology Registers 8100 US15W/US15X SCH [Poulsbo] Host Bridge 8101 US15L/UL11L SCH [Poulsbo] Host Bridge 8108 US15W/US15X SCH [Poulsbo] Graphics Controller 8109 US15L/UL11L SCH [Poulsbo] Graphics Controller 8110 US15W/US15X/US15L/UL11L SCH [Poulsbo] PCI Express Port 1 8112 US15W/US15X/US15L/UL11L SCH [Poulsbo] PCI Express Port 2 8114 US15W/US15X/US15L/UL11L SCH [Poulsbo] USB UHCI Controller #1 8115 US15W/US15X/US15L/UL11L SCH [Poulsbo] USB UHCI Controller #2 8116 US15W/US15X/US15L/UL11L SCH [Poulsbo] USB UHCI Controller #3 8117 US15W/US15X/US15L/UL11L SCH [Poulsbo] USB EHCI Controller 8118 US15W/US15X/US15L/UL11L SCH [Poulsbo] USB Client Controller 8119 US15W/US15X/US15L/UL11L SCH [Poulsbo] LPC Bridge 811a US15W/US15X/US15L/UL11L SCH [Poulsbo] IDE Controller 811b US15W/US15X/US15L/UL11L SCH [Poulsbo] HD Audio Controller 811c US15W/US15X/US15L/UL11L SCH [Poulsbo] SDIO/MMC Controller #1 811d US15W/US15X/US15L/UL11L SCH [Poulsbo] SDIO/MMC Controller #2 811e US15W/US15X/US15L/UL11L SCH [Poulsbo] SDIO/MMC Controller #3 8180 Atom Processor E6xx PCI Express Port 3 8181 Atom Processor E6xx PCI Express Port 4 8182 Atom Processor E6xx Integrated Graphics Controller 8183 Atom Processor E6xx Configuration Unit 8184 Atom Processor E6xx PCI Express Port 1 8185 Atom Processor E6xx PCI Express Port 2 8186 Atom Processor E6xx LPC Bridge 84c4 450KX/GX [Orion] - 82454KX/GX PCI bridge 84c5 450KX/GX [Orion] - 82453KX/GX Memory controller 84ca 450NX - 82451NX Memory & I/O Controller 84cb 450NX - 82454NX/84460GX PCI Expander Bridge 84e0 460GX - 84460GX System Address Controller (SAC) 84e1 460GX - 84460GX System Data Controller (SDC) 84e2 460GX - 84460GX AGP Bridge (GXB function 2) 84e3 460GX - 84460GX Memory Address Controller (MAC) 84e4 460GX - 84460GX Memory Data Controller (MDC) 84e6 460GX - 82466GX Wide and fast PCI eXpander Bridge (WXB) 84ea 460GX - 84460GX AGP Bridge (GXB function 1) 8500 IXP4XX Network Processor (IXP420/421/422/425/IXC1100) 1993 0ded mGuard-PCI AV#2 1993 0dee mGuard-PCI AV#1 1993 0def mGuard-PCI AV#0 8603 Ice Lake-LP Dynamic Tuning Processor Participant 87c0 UHD Graphics 617 87ca UHD Graphics 617 8800 Platform Controller Hub EG20T PCI Express Port 8801 Platform Controller Hub EG20T Packet Hub 8802 Platform Controller Hub EG20T Gigabit Ethernet Controller 8803 Platform Controller Hub EG20T General Purpose IO Controller 8804 Platform Controller Hub EG20T USB OHCI Controller #4 8805 Platform Controller Hub EG20T USB OHCI Controller #5 8806 Platform Controller Hub EG20T USB OHCI Controller #6 8807 Platform Controller Hub EG20T USB2 EHCI Controller #2 8808 Platform Controller Hub EG20T USB Client Controller 8809 Platform Controller Hub EG20T SDIO Controller #1 880a Platform Controller Hub EG20T SDIO Controller #2 880b Platform Controller Hub EG20T SATA AHCI Controller 880c Platform Controller Hub EG20T USB OHCI Controller #1 880d Platform Controller Hub EG20T USB OHCI Controller #2 880e Platform Controller Hub EG20T USB OHCI Controller #3 880f Platform Controller Hub EG20T USB2 EHCI Controller #1 8810 Platform Controller Hub EG20T DMA Controller #1 8811 Platform Controller Hub EG20T UART Controller 0 8812 Platform Controller Hub EG20T UART Controller 1 8813 Platform Controller Hub EG20T UART Controller 2 8814 Platform Controller Hub EG20T UART Controller 3 8815 Platform Controller Hub EG20T DMA Controller #2 8816 Platform Controller Hub EG20T Serial Peripheral Interface Bus 8817 Platform Controller Hub EG20T I2C Controller 8818 Platform Controller Hub EG20T Controller Area Network (CAN) Controller 8819 Platform Controller Hub EG20T IEEE 1588 Hardware Assist 8a03 Processor Power and Thermal Controller 8a0d Ice Lake Thunderbolt 3 NHI #1 8a11 GNA Scoring Accelerator Module 8a12 Ice Lake-LP Processor Host Bridge/DRAM Registers 8a13 Ice Lake Thunderbolt 3 USB Controller 8a14 Ice Lake Processor Host Bridge/DRAM Registers 8a17 Ice Lake Thunderbolt 3 NHI #0 8a19 Image Signal Processor 8a1d Ice Lake Thunderbolt 3 PCI Express Root Port #0 8a1f Ice Lake Thunderbolt 3 PCI Express Root Port #1 8a21 Ice Lake Thunderbolt 3 PCI Express Root Port #2 8a23 Ice Lake Thunderbolt 3 PCI Express Root Port #3 8a51 Iris Plus Graphics G7 (Ice Lake) 8a52 Iris Plus Graphics G7 8a53 Iris Plus Graphics G7 8a56 Iris Plus Graphics G1 (Ice Lake) 8a58 Ice Lake-Y GT1 [UHD Graphics G1] 8a5a Iris Plus Graphics G4 (Ice Lake) 8a5c Iris Plus Graphics G4 (Ice Lake) 8c00 8 Series/C220 Series Chipset Family 4-port SATA Controller 1 [IDE mode] 8c01 8 Series Chipset Family 4-port SATA Controller 1 [IDE mode] - Mobile 8c02 8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode] 1028 05d7 Alienware X51 R2 103c 1998 EliteDesk 800 G1 17aa 3098 ThinkCentre E73 17aa 309f ThinkCentre M83 8c03 8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode] 103c 1909 ZBook 15 17aa 220e ThinkPad T440p 8c04 8 Series/C220 Series Chipset Family SATA Controller 1 [RAID mode] 8c05 8 Series/C220 Series Chipset Family SATA Controller 1 [RAID mode] 8c06 8 Series/C220 Series Chipset Family SATA Controller 1 [RAID mode] 8c07 8 Series/C220 Series Chipset Family SATA Controller 1 [RAID mode] 8c08 8 Series/C220 Series Chipset Family 2-port SATA Controller 2 [IDE mode] 8c09 8 Series/C220 Series Chipset Family 2-port SATA Controller 2 [IDE mode] 8c0e 8 Series/C220 Series Chipset Family SATA Controller 1 [RAID mode] 8c0f 8 Series/C220 Series Chipset Family SATA Controller 1 [RAID mode] 8c10 8 Series/C220 Series Chipset Family PCI Express Root Port #1 103c 1998 EliteDesk 800 G1 1043 8534 ASUS H81I-PLUS 17aa 220e ThinkPad T440p 17aa 3098 ThinkCentre E73 8c11 8 Series/C220 Series Chipset Family PCI Express Root Port #1 8c12 8 Series/C220 Series Chipset Family PCI Express Root Port #2 103c 1998 EliteDesk 800 G1 17aa 220e ThinkPad T440p 8c13 8 Series/C220 Series Chipset Family PCI Express Root Port #2 8c14 8 Series/C220 Series Chipset Family PCI Express Root Port #3 8c15 8 Series/C220 Series Chipset Family PCI Express Root Port #3 8c16 8 Series/C220 Series Chipset Family PCI Express Root Port #4 8c17 8 Series/C220 Series Chipset Family PCI Express Root Port #4 8c18 8 Series/C220 Series Chipset Family PCI Express Root Port #5 8c19 8 Series/C220 Series Chipset Family PCI Express Root Port #5 8c1a 8 Series/C220 Series Chipset Family PCI Express Root Port #6 17aa 3098 ThinkCentre E73 8c1b 8 Series/C220 Series Chipset Family PCI Express Root Port #6 8c1c 8 Series/C220 Series Chipset Family PCI Express Root Port #7 8c1d 8 Series/C220 Series Chipset Family PCI Express Root Port #7 8c1e 8 Series/C220 Series Chipset Family PCI Express Root Port #8 8c1f 8 Series/C220 Series Chipset Family PCI Express Root Port #8 8c20 8 Series/C220 Series Chipset High Definition Audio Controller 1028 05d7 Alienware X51 R2 103c 1909 ZBook 15 103c 1998 EliteDesk 800 G1 17aa 220e ThinkPad T440p 17aa 309f ThinkCentre M83 8c21 8 Series/C220 Series Chipset High Definition Audio Controller 8c22 8 Series/C220 Series Chipset Family SMBus Controller 1028 05d7 Alienware X51 R2 103c 1909 ZBook 15 103c 1998 EliteDesk 800 G1 17aa 220e ThinkPad T440p 17aa 3098 ThinkCentre E73 17aa 309f ThinkCentre M83 8c23 8 Series Chipset Family CHAP Counters 8c24 8 Series Chipset Family Thermal Management Controller 8c26 8 Series/C220 Series Chipset Family USB EHCI #1 1028 05d7 Alienware X51 R2 103c 1909 ZBook 15 103c 1998 EliteDesk 800 G1 17aa 220e ThinkPad T440p 17aa 2210 ThinkPad T540p 17aa 3098 ThinkCentre E73 17aa 309f ThinkCentre M83 2210 17aa ThinkPad T540p 8c2d 8 Series/C220 Series Chipset Family USB EHCI #2 1028 05d7 Alienware X51 R2 103c 1909 ZBook 15 103c 1998 EliteDesk 800 G1 17aa 220e ThinkPad T440p 17aa 3098 ThinkCentre E73 17aa 309f ThinkCentre M83 8c31 8 Series/C220 Series Chipset Family USB xHCI 1028 05d7 Alienware X51 R2 103c 1909 ZBook 15 103c 1998 EliteDesk 800 G1 17aa 220e ThinkPad T440p 17aa 3098 ThinkCentre E73 17aa 309f ThinkCentre M83 8c33 8 Series/C220 Series Chipset Family LAN Controller 8c34 8 Series/C220 Series Chipset Family NAND Controller 8c3a 8 Series/C220 Series Chipset Family MEI Controller #1 1028 05d7 Alienware X51 R2 103c 1909 ZBook 15 103c 1998 EliteDesk 800 G1 17aa 220e ThinkPad T440p 17aa 3098 ThinkCentre E73 17aa 309f ThinkCentre M83 8c3b 8 Series/C220 Series Chipset Family MEI Controller #2 8c3c 8 Series/C220 Series Chipset Family IDE-r Controller 8c3d 8 Series/C220 Series Chipset Family KT Controller 103c 1998 EliteDesk 800 G1 8c40 8 Series/C220 Series Chipset Family LPC Controller 8c41 8 Series Chipset Family Mobile Super SKU LPC Controller 8c42 8 Series/C220 Series Chipset Family Desktop Super SKU LPC Controller 8c43 8 Series/C220 Series Chipset Family LPC Controller 8c44 Z87 Express LPC Controller 8c45 8 Series/C220 Series Chipset Family LPC Controller 8c46 Z85 Express LPC Controller 8c47 8 Series/C220 Series Chipset Family LPC Controller 8c48 8 Series/C220 Series Chipset Family LPC Controller 8c49 HM86 Express LPC Controller 8c4a H87 Express LPC Controller 1028 05d7 Alienware X51 R2 8c4b HM87 Express LPC Controller 8c4c Q85 Express LPC Controller 17aa 309f ThinkCentre M83 8c4d 8 Series/C220 Series Chipset Family LPC Controller 8c4e Q87 Express LPC Controller 103c 1998 EliteDesk 800 G1 8c4f QM87 Express LPC Controller 103c 1909 ZBook 15 17aa 220e ThinkPad T440p 8c50 B85 Express LPC Controller 8c51 8 Series/C220 Series Chipset Family LPC Controller 8c52 C222 Series Chipset Family Server Essential SKU LPC Controller 8c53 8 Series/C220 Series Chipset Family LPC Controller 8c54 C224 Series Chipset Family Server Standard SKU LPC Controller 8c55 8 Series/C220 Series Chipset Family LPC Controller 8c56 C226 Series Chipset Family Server Advanced SKU LPC Controller 8c57 8 Series/C220 Series Chipset Family LPC Controller 8c58 8 Series/C220 Series Chipset Family WS SKU LPC Controller 8c59 8 Series/C220 Series Chipset Family LPC Controller 8c5a 8 Series/C220 Series Chipset Family LPC Controller 8c5b 8 Series/C220 Series Chipset Family LPC Controller 8c5c H81 Express LPC Controller 17aa 3098 ThinkCentre E73 8c5d 8 Series/C220 Series Chipset Family LPC Controller 8c5e 8 Series/C220 Series Chipset Family LPC Controller 8c5f 8 Series/C220 Series Chipset Family LPC Controller 8c80 9 Series Chipset Family SATA Controller [IDE Mode] 8c81 9 Series Chipset Family SATA Controller [IDE Mode] 8c82 9 Series Chipset Family SATA Controller [AHCI Mode] 8c83 9 Series Chipset Family SATA Controller [AHCI Mode] 8c84 9 Series Chipset Family SATA Controller [RAID Mode] 8c85 9 Series Chipset Family SATA Controller [RAID Mode] 8c86 9 Series Chipset Family SATA Controller [RAID Mode] 8c87 9 Series Chipset Family SATA Controller [RAID Mode] 8c88 9 Series Chipset Family SATA Controller [IDE Mode] 8c89 9 Series Chipset Family SATA Controller [IDE Mode] 8c8e 9 Series Chipset Family SATA Controller [RAID Mode] 8c8f 9 Series Chipset Family SATA Controller [RAID Mode] 8c90 9 Series Chipset Family PCI Express Root Port 1 8c92 9 Series Chipset Family PCI Express Root Port 2 8c94 9 Series Chipset Family PCI Express Root Port 3 8c96 9 Series Chipset Family PCI Express Root Port 4 8c98 9 Series Chipset Family PCI Express Root Port 5 8c9a 9 Series Chipset Family PCI Express Root Port 6 8c9c 9 Series Chipset Family PCI Express Root Port 7 8c9e 9 Series Chipset Family PCI Express Root Port 8 8ca0 9 Series Chipset Family HD Audio Controller 8ca2 9 Series Chipset Family SMBus Controller 8ca4 9 Series Chipset Family Thermal Controller 8ca6 9 Series Chipset Family USB EHCI Controller #1 8cad 9 Series Chipset Family USB EHCI Controller #2 8cb1 9 Series Chipset Family USB xHCI Controller 8cb3 9 Series Chipset Family LAN Controller 8cba 9 Series Chipset Family ME Interface #1 8cbb 9 Series Chipset Family ME Interface #2 8cbc 9 Series Chipset Family IDE-R Controller 8cbd 9 Series Chipset Family KT Controller 8cc1 9 Series Chipset Family LPC Controller 8cc2 9 Series Chipset Family LPC Controller 8cc3 HM97 Chipset LPC Controller 8cc4 Z97 Chipset LPC Controller 8cc5 QM97 Chipset LPC Controller 8cc6 H97 Chipset LPC Controller 8d00 C610/X99 series chipset 4-port SATA Controller [IDE mode] 8d02 C610/X99 series chipset 6-Port SATA Controller [AHCI mode] 8d04 C610/X99 series chipset SATA Controller [RAID mode] 8d06 C610/X99 series chipset SATA Controller [RAID mode] 17aa 1031 ThinkServer RAID 110i 8d08 C610/X99 series chipset 2-port SATA Controller [IDE mode] 8d0e C610/X99 series chipset SATA Controller [RAID mode] 8d10 C610/X99 series chipset PCI Express Root Port #1 8d11 C610/X99 series chipset PCI Express Root Port #1 8d12 C610/X99 series chipset PCI Express Root Port #2 8d13 C610/X99 series chipset PCI Express Root Port #2 8d14 C610/X99 series chipset PCI Express Root Port #3 8d15 C610/X99 series chipset PCI Express Root Port #3 8d16 C610/X99 series chipset PCI Express Root Port #4 8d17 C610/X99 series chipset PCI Express Root Port #4 8d18 C610/X99 series chipset PCI Express Root Port #5 8d19 C610/X99 series chipset PCI Express Root Port #5 8d1a C610/X99 series chipset PCI Express Root Port #6 8d1b C610/X99 series chipset PCI Express Root Port #6 8d1c C610/X99 series chipset PCI Express Root Port #7 8d1d C610/X99 series chipset PCI Express Root Port #7 8d1e C610/X99 series chipset PCI Express Root Port #8 8d1f C610/X99 series chipset PCI Express Root Port #8 8d20 C610/X99 series chipset HD Audio Controller 8d21 C610/X99 series chipset HD Audio Controller 8d22 C610/X99 series chipset SMBus Controller 15d9 0832 X10SRL-F 8d24 C610/X99 series chipset Thermal Subsystem 8d26 C610/X99 series chipset USB Enhanced Host Controller #1 15d9 0832 X10SRL-F 8d2d C610/X99 series chipset USB Enhanced Host Controller #2 15d9 0832 X10SRL-F 8d31 C610/X99 series chipset USB xHCI Host Controller 15d9 0832 X10SRL-F 8d33 C610/X99 series chipset LAN Controller 8d34 C610/X99 series chipset NAND Controller 8d3a C610/X99 series chipset MEI Controller #1 15d9 0832 X10SRL-F 8d3b C610/X99 series chipset MEI Controller #2 15d9 0832 X10SRL-F 8d3c C610/X99 series chipset IDE-r Controller 8d3d C610/X99 series chipset KT Controller 8d40 C610/X99 series chipset LPC Controller 8d41 C610/X99 series chipset LPC Controller 8d42 C610/X99 series chipset LPC Controller 8d43 C610/X99 series chipset LPC Controller 8d44 C610/X99 series chipset LPC Controller 15d9 0832 X10SRL-F 8d45 C610/X99 series chipset LPC Controller 8d46 C610/X99 series chipset LPC Controller 8d47 C610/X99 series chipset LPC Controller 8d48 C610/X99 series chipset LPC Controller 8d49 C610/X99 series chipset LPC Controller 8d4a C610/X99 series chipset LPC Controller 8d4b C610/X99 series chipset LPC Controller 8d4c C610/X99 series chipset LPC Controller 8d4d C610/X99 series chipset LPC Controller 8d4e C610/X99 series chipset LPC Controller 8d4f C610/X99 series chipset LPC Controller 8d60 C610/X99 series chipset sSATA Controller [IDE mode] 8d62 C610/X99 series chipset sSATA Controller [AHCI mode] 8d64 C610/X99 series chipset sSATA Controller [RAID mode] 8d66 C610/X99 series chipset sSATA Controller [RAID mode] 8d68 C610/X99 series chipset sSATA Controller [IDE mode] 8d6e C610/X99 series chipset sSATA Controller [RAID mode] 8d7c C610/X99 series chipset SPSR 15d9 0832 X10SRL-F 8d7d C610/X99 series chipset MS SMBus 0 8d7e C610/X99 series chipset MS SMBus 1 8d7f C610/X99 series chipset MS SMBus 2 9000 IXP2000 Family Network Processor 9001 IXP2400 Network Processor 9002 IXP2300 Network Processor 9004 IXP2800 Network Processor 9621 Integrated RAID 9622 Integrated RAID 9641 Integrated RAID 96a1 Integrated RAID 9840 Lakefield GT2 [UHD Graphics] 9841 Lakefield GT1.5 [UHD Graphics] 9a01 11th Gen Core Processor PCIe Controller #1 9a03 TigerLake-LP Dynamic Tuning Processor Participant 9a09 11th Gen Core Processor PCIe Controller 9a0b Volume Management Device NVMe RAID Controller 9a0d Tigerlake Telemetry Aggregator Driver 9a0f 11th Gen Core Processor PCIe Controller #0 9a11 GNA Scoring Accelerator module 9a13 Tiger Lake-LP Thunderbolt 4 USB Controller 9a14 11th Gen Core Processor Host Bridge/DRAM Registers 9a17 Tiger Lake-H Thunderbolt 4 USB Controller 9a1b Tiger Lake-LP Thunderbolt 4 NHI #0 9a1d Tiger Lake-LP Thunderbolt 4 NHI #1 9a1f Tiger Lake-H Thunderbolt 4 NHI #0 9a21 Tiger Lake-H Thunderbolt 4 NHI #1 9a23 Tiger Lake-LP Thunderbolt 4 PCI Express Root Port #0 9a25 Tiger Lake-LP Thunderbolt 4 PCI Express Root Port #1 9a26 11th Gen Core Processor Host Bridge/DRAM Registers 9a27 Tiger Lake-LP Thunderbolt 4 PCI Express Root Port #2 9a29 Tiger Lake-LP Thunderbolt 4 PCI Express Root Port #3 9a2b Tiger Lake-H Thunderbolt 4 PCI Express Root Port #0 9a2d Tiger Lake-H Thunderbolt 4 PCI Express Root Port #1 9a2f Tiger Lake-H Thunderbolt 4 PCI Express Root Port #2 9a31 Tiger Lake-H Thunderbolt 4 PCI Express Root Port #3 9a33 Tiger Lake Trace Hub 9a36 11th Gen Core Processor Host Bridge/DRAM Registers 9a40 Tiger Lake-UP4 GT2 [Iris Xe Graphics] 9a49 TigerLake-LP GT2 [Iris Xe Graphics] 9a60 TigerLake-H GT1 [UHD Graphics] 9a68 TigerLake-H GT1 [UHD Graphics] 9a70 Tiger Lake-H GT1 [UHD Graphics] 9a78 Tiger Lake-LP GT2 [UHD Graphics G4] 9b21 Comet Lake-U GT2 [UHD Graphics 620] 9b33 Comet Lake-S 6c Host Bridge/DRAM Controller 9b41 CometLake-U GT2 [UHD Graphics] 1028 09bd Latitude 7310 1028 09be Latitude 7410 9b43 10th Gen Core Processor Host Bridge/DRAM Registers 9b44 10th Gen Core Processor Host Bridge/DRAM Registers 9b51 10th Gen Core Processor Host Bridge/DRAM Registers 9b53 Comet Lake-S 6c Host Bridge/DRAM Controller 9b54 10th Gen Core Processor Host Bridge/DRAM Registers 9b61 Comet Lake-U v1 4c Host Bridge/DRAM Controller 1028 09be Latitude 7410 9b63 10th Gen Core Processor Host Bridge/DRAM Registers 9b64 10th Gen Core Processor Host Bridge/DRAM Registers 9ba4 Comet Lake-H GT1 [UHD Graphics 610] 9ba8 CometLake-S GT1 [UHD Graphics 610] 9baa Comet Lake UHD Graphics 9bac Comet Lake UHD Graphics 9bc4 CometLake-H GT2 [UHD Graphics] 9bc5 CometLake-S GT2 [UHD Graphics 630] 9bc6 Comet Lake-S GT2 [UHD Graphics P630] 9bc8 CometLake-S GT2 [UHD Graphics 630] 9bca Comet Lake UHD Graphics 9bcc Comet Lake UHD Graphics 9be6 Comet Lake-S GT2 [UHD Graphics P630] 9bf6 Coffee Lake-S GT2 [UHD Graphics P630] 9c00 8 Series SATA Controller 1 [IDE mode] 9c01 8 Series SATA Controller 1 [IDE mode] 9c02 8 Series SATA Controller 1 [AHCI mode] 9c03 8 Series SATA Controller 1 [AHCI mode] 17aa 2214 ThinkPad X240 9c04 8 Series SATA Controller 1 [RAID mode] 9c05 8 Series SATA Controller 1 [RAID mode] 9c06 8 Series SATA Controller 1 [RAID mode] 9c07 8 Series SATA Controller 1 [RAID mode] 9c08 8 Series SATA Controller 2 [IDE mode] 9c09 8 Series SATA Controller 2 [IDE mode] 9c0a 8 Series SATA Controller [Reserved] 9c0b 8 Series SATA Controller [Reserved] 9c0c 8 Series SATA Controller [Reserved] 9c0d 8 Series SATA Controller [Reserved] 9c0e 8 Series SATA Controller 1 [RAID mode] 9c0f 8 Series SATA Controller 1 [RAID mode] 9c10 8 Series PCI Express Root Port 1 9c11 8 Series PCI Express Root Port 1 9c12 8 Series PCI Express Root Port 2 9c13 8 Series PCI Express Root Port 2 9c14 8 Series PCI Express Root Port 3 9c15 8 Series PCI Express Root Port 3 9c16 8 Series PCI Express Root Port 4 9c17 8 Series PCI Express Root Port 4 9c18 8 Series PCI Express Root Port 5 9c19 8 Series PCI Express Root Port 5 9c1a 8 Series PCI Express Root Port 6 9c1b 8 Series PCI Express Root Port 6 9c1c 8 Series PCI Express Root Port 7 9c1d 8 Series PCI Express Root Port 7 9c1e 8 Series PCI Express Root Port 8 9c1f 8 Series PCI Express Root Port 8 9c20 8 Series HD Audio Controller 17aa 2214 ThinkPad X240 9c21 8 Series HD Audio Controller 9c22 8 Series SMBus Controller 17aa 2214 ThinkPad X240 9c23 8 Series CHAP Counters 9c24 8 Series Thermal 9c26 8 Series USB EHCI #1 17aa 220c T440s 17aa 2214 ThinkPad X240 9c2d 8 Series USB EHCI #2 9c31 8 Series USB xHCI HC 17aa 2214 ThinkPad X240 8086 7270 Apple MacBookAir6,2 / MacBookPro11,1 9c35 8 Series SDIO Controller 9c36 8 Series Audio DSP Controller 9c3a 8 Series HECI #0 17aa 2214 ThinkPad X240 9c3b 8 Series HECI #1 9c3c 8 Series HECI IDER 9c3d 8 Series HECI KT 9c40 8 Series LPC Controller 9c41 8 Series LPC Controller 9c42 8 Series LPC Controller 9c43 8 Series LPC Controller 17aa 2214 ThinkPad X240 9c44 8 Series LPC Controller 9c45 8 Series LPC Controller 9c46 8 Series LPC Controller 9c47 8 Series LPC Controller 9c60 8 Series Low Power Sub-System DMA 9c61 8 Series I2C Controller #0 9c62 8 Series I2C Controller #1 9c63 8 Series UART Controller #0 9c64 8 Series UART Controller #1 9c65 8 Series SPI Controller #0 9c66 8 Series SPI Controller #1 9c83 Wildcat Point-LP SATA Controller [AHCI Mode] 9c85 Wildcat Point-LP SATA Controller [RAID Mode] 9c87 Wildcat Point-LP SATA Controller [RAID Mode] 9c8f Wildcat Point-LP SATA Controller [RAID Mode] 9c90 Wildcat Point-LP PCI Express Root Port #1 9c92 Wildcat Point-LP PCI Express Root Port #2 9c94 Wildcat Point-LP PCI Express Root Port #3 9c96 Wildcat Point-LP PCI Express Root Port #4 9c98 Wildcat Point-LP PCI Express Root Port #5 9c9a Wildcat Point-LP PCI Express Root Port #6 9ca0 Wildcat Point-LP High Definition Audio Controller 9ca2 Wildcat Point-LP SMBus Controller 9ca4 Wildcat Point-LP Thermal Management Controller 9ca6 Wildcat Point-LP USB EHCI Controller 9cb1 Wildcat Point-LP USB xHCI Controller 9cb5 Wildcat Point-LP Secure Digital IO Controller 9cb6 Wildcat Point-LP Smart Sound Technology Controller 9cba Wildcat Point-LP MEI Controller #1 9cbb Wildcat Point-LP MEI Controller #2 9cbc Wildcat Point-LP IDE-r Controller 9cbd Wildcat Point-LP KT Controller 9cc1 Wildcat Point-LP LPC Controller 9cc2 Wildcat Point-LP LPC Controller 9cc3 Wildcat Point-LP LPC Controller 9cc5 Wildcat Point-LP LPC Controller 9cc6 Wildcat Point-LP LPC Controller 9cc7 Wildcat Point-LP LPC Controller 9cc9 Wildcat Point-LP LPC Controller 9ce0 Wildcat Point-LP Serial IO DMA Controller 9ce1 Wildcat Point-LP Serial IO I2C Controller #0 9ce2 Wildcat Point-LP Serial IO I2C Controller #1 9ce3 Wildcat Point-LP Serial IO UART Controller #0 9ce4 Wildcat Point-LP Serial IO UART Controller #1 9ce5 Wildcat Point-LP Serial IO GSPI Controller #0 9ce6 Wildcat Point-LP Serial IO GSPI Controller #1 9d03 Sunrise Point-LP SATA Controller [AHCI mode] 1025 115f Acer Aspire E5-575G 1028 06dc Latitude E7470 1028 06e6 Latitude 11 5175 2-in-1 1028 06f3 Latitude 3570 103c 8079 EliteBook 840 G3 17aa 225d ThinkPad T480 17aa 382a B51-80 Laptop 9d10 Sunrise Point-LP PCI Express Root Port #1 9d11 Sunrise Point-LP PCI Express Root Port #2 9d12 Sunrise Point-LP PCI Express Root Port #3 9d13 Sunrise Point-LP PCI Express Root Port #4 9d14 Sunrise Point-LP PCI Express Root Port #5 17aa 382a B51-80 Laptop 9d15 Sunrise Point-LP PCI Express Root Port #6 17aa 382a B51-80 Laptop 9d16 Sunrise Point-LP PCI Express Root Port #7 9d17 Sunrise Point-LP PCI Express Root Port #8 9d18 Sunrise Point-LP PCI Express Root Port #9 17aa 2247 ThinkPad T570 17aa 382a B51-80 Laptop 9d19 Sunrise Point-LP PCI Express Root Port #10 9d1a Sunrise Point-LP PCI Express Root Port #11 9d21 Sunrise Point-LP PMC 1025 115f Acer Aspire E5-575G 1028 06d6 Latitude 7275 tablet 1028 06dc Latitude E7470 1028 06e6 Latitude 11 5175 2-in-1 1028 06f3 Latitude 3570 103c 8079 EliteBook 840 G3 17aa 2247 ThinkPad T570 17aa 224f ThinkPad X1 Carbon 5th Gen 17aa 225d ThinkPad T480 17aa 382a B51-80 Laptop 9d23 Sunrise Point-LP SMBus 1025 115f Acer Aspire E5-575G 1028 06d6 Latitude 7275 tablet 1028 06dc Latitude E7470 1028 06e6 Latitude 11 5175 2-in-1 1028 06f3 Latitude 3570 103c 8079 EliteBook 840 G3 17aa 2247 ThinkPad T570 17aa 224f ThinkPad X1 Carbon 5th Gen 17aa 225d ThinkPad T480 17aa 382a B51-80 Laptop 9d27 Sunrise Point-LP Serial IO UART Controller #0 9d28 Sunrise Point-LP Serial IO UART Controller #1 9d29 Sunrise Point-LP Serial IO SPI Controller #0 9d2a Sunrise Point-LP Serial IO SPI Controller #1 9d2d Sunrise Point-LP Secure Digital IO Controller 9d2f Sunrise Point-LP USB 3.0 xHCI Controller 1025 115f Acer Aspire E5-575G 1028 06d6 Latitude 7275 tablet 1028 06dc Latitude E7470 1028 06e6 Latitude 11 5175 2-in-1 1028 06f3 Latitude 3570 103c 8079 EliteBook 840 G3 17aa 2247 ThinkPad T570 17aa 225d ThinkPad T480 17aa 382a B51-80 Laptop 9d31 Sunrise Point-LP Thermal subsystem 1025 115f Acer Aspire E5-575G 1028 06d6 Latitude 7275 tablet 1028 06dc Latitude E7470 1028 06e6 Latitude 11 5175 2-in-1 1028 06f3 Latitude 3570 103c 8079 EliteBook 840 G3 17aa 2247 ThinkPad T570 17aa 224f ThinkPad X1 Carbon 5th Gen 17aa 225d ThinkPad T480 17aa 382a B51-80 Laptop 9d32 CSI-2 Host Controller 1028 06d6 Latitude 7275 tablet 1028 06e6 Latitude 11 5175 2-in-1 9d35 Sunrise Point-LP Integrated Sensor Hub 1028 06d6 Latitude 7275 tablet 1028 06e6 Latitude 11 5175 2-in-1 9d3a Sunrise Point-LP CSME HECI #1 1025 115f Acer Aspire E5-575G 1028 06d6 Latitude 7275 tablet 1028 06dc Latitude E7470 1028 06e6 Latitude 11 5175 2-in-1 1028 06f3 Latitude 3570 103c 8079 EliteBook 840 G3 17aa 2247 ThinkPad T570 17aa 224f ThinkPad X1 Carbon 5th Gen 17aa 225d ThinkPad T480 17aa 382a B51-80 Laptop 9d3d Sunrise Point-LP Active Management Technology - SOL 103c 8079 EliteBook 840 G3 17aa 2247 ThinkPad T570 9d3e iTouch Controller 9d43 Sunrise Point-LP LPC Controller 17aa 382a B51-80 Laptop 9d46 LPC/eSPI Controller 1028 06d6 Latitude 7275 tablet 1028 06e6 Latitude 11 5175 2-in-1 9d48 Sunrise Point-LP LPC Controller 1028 06dc Latitude E7470 1028 06f3 Latitude 3570 103c 8079 EliteBook 840 G3 17aa 2247 ThinkPad T570 9d4e Sunrise Point LPC/eSPI Controller 17aa 225d ThinkPad T480 9d50 Sunrise Point LPC Controller 9d56 Sunrise Point-LP LPC Controller 9d58 Sunrise Point-LP LPC Controller 1025 115f Acer Aspire E5-575G 17aa 2247 ThinkPad T570 17aa 224f ThinkPad X1 Carbon 5th Gen 9d60 Sunrise Point-LP Serial IO I2C Controller #0 1025 115f Acer Aspire E5-575G 1028 06d6 Latitude 7275 tablet 1028 06e6 Latitude 11 5175 2-in-1 1028 06f3 Latitude 3570 103c 8079 EliteBook 840 G3 17aa 225d ThinkPad T480 8086 9d60 100 Series PCH/Sunrise Point PCH I2C0 [Skylake/Kaby Lake LPSS I2C] 9d61 Sunrise Point-LP Serial IO I2C Controller #1 1028 06d6 Latitude 7275 tablet 1028 06e6 Latitude 11 5175 2-in-1 9d62 Sunrise Point-LP Serial IO I2C Controller #2 1028 06d6 Latitude 7275 tablet 1028 06e6 Latitude 11 5175 2-in-1 9d63 Sunrise Point-LP Serial IO I2C Controller #3 9d64 Sunrise Point-LP Serial IO I2C Controller #4 9d65 Sunrise Point-LP Serial IO I2C Controller #5 9d66 Sunrise Point-LP Serial IO UART Controller #2 9d70 Sunrise Point-LP HD Audio 1028 06d6 Latitude 7275 tablet 1028 06dc Latitude E7470 1028 06e6 Latitude 11 5175 2-in-1 1028 06f3 Latitude 3570 103c 8079 EliteBook 840 G3 17aa 2247 ThinkPad T570 17aa 382a B51-80 Laptop 9d71 Sunrise Point-LP HD Audio 1025 1094 Acer Aspire E5-575G 17aa 224f ThinkPad X1 Carbon 5th Gen 17aa 225d ThinkPad T480 9d84 Cannon Point-LP LPC Controller 1028 089e Inspiron 5482 9da3 Cannon Point-LP SMBus Controller 9da4 Cannon Point-LP SPI Controller 9da8 Cannon Point-LP Serial IO UART Controller #2 9daa Cannon Point-LP Serial IO SPI Controller 9dab Cannon Point-LP Serial IO SPI Controller 9db0 Cannon Point-LP PCI Express Root Port #9 9db1 Cannon Point-LP PCI Express Root Port #10 9db2 Cannon Point-LP PCI Express Root Port #1 9db4 Cannon Point-LP PCI Express Root Port #13 1028 089e Inspiron 5482 9db6 Cannon Point-LP PCI Express Root Port #15 9db8 Cannon Point-LP PCI Express Root Port #1 9dbc Cannon Point-LP PCI Express Root Port #5 9dbe Cannon Point-LP PCI Express Root Port #7 9dbf Cannon Point PCI Express Root Port #8 9dc4 Cannon Point-LP SD Host Controller 9dc5 Cannon Point-LP Serial IO I2C Host Controller 9dc8 Cannon Point-LP High Definition Audio Controller 1028 089e Inspiron 5482 9dd3 Cannon Point-LP SATA Controller [AHCI Mode] 9de0 Cannon Point-LP MEI Controller #1 9de3 Cannon Point-LP Keyboard and Text (KT) Redirection 9de8 Cannon Point-LP Serial IO I2C Controller #0 1028 089e Inspiron 5482 9de9 Cannon Point-LP Serial IO I2C Controller #1 1028 089e Inspiron 5482 9ded Cannon Point-LP USB 3.1 xHCI Controller 9def Cannon Point-LP Shared SRAM 9df0 Cannon Point-LP CNVi [Wireless-AC] 9df5 BayHubTech Integrated SD controller 9df9 Cannon Point-LP Thermal Controller 9dfc Cannon Point-LP Integrated Sensor Hub a000 Atom Processor D4xx/D5xx/N4xx/N5xx DMI Bridge 1458 5000 GA-D525TUD 8086 4f4d DeskTop Board D510MO 8086 544b Desktop Board D425KT a001 Atom Processor D4xx/D5xx/N4xx/N5xx Integrated Graphics Controller 1458 d000 GA-D525TUD 8086 4f4d DeskTop Board D510MO 8086 544b Desktop Board D425KT a002 Atom Processor D4xx/D5xx/N4xx/N5xx Integrated Graphics Controller a003 Atom Processor D4xx/D5xx/N4xx/N5xx CHAPS counter a010 Atom Processor D4xx/D5xx/N4xx/N5xx DMI Bridge 1043 83ac Eee PC 1015PX 144d c072 Notebook N150P a011 Atom Processor D4xx/D5xx/N4xx/N5xx Integrated Graphics Controller 1043 83ac Eee PC 1015PX 144d c072 Notebook N150P a012 Atom Processor D4xx/D5xx/N4xx/N5xx Integrated Graphics Controller 1043 83ac Eee PC 1015PX 144d c072 Notebook N150P a013 Atom Processor D4xx/D5xx/N4xx/N5xx CHAPS counter a082 Tiger Lake-LP LPC Controller a0a3 Tiger Lake-LP SMBus Controller a0a4 Tiger Lake-LP SPI Controller a0a6 Tiger Lake-LP Trace Hub a0a8 Tiger Lake-LP Serial IO UART Controller #0 a0a9 Tiger Lake-LP Serial IO UART Controller #1 a0ab Tiger Lake-LP Serial IO SPI Controller #1 a0b0 Tiger Lake-LP PCI Express Root Port #9 a0b1 Tiger Lake-LP PCI Express Root Port #10 a0b3 Tiger Lake-LP PCI Express Root Port #12 a0bc Tiger Lake-LP PCI Express Root Port #5 a0bd Tigerlake PCH-LP PCI Express Root Port #6 a0be Tiger Lake-LP PCI Express Root Port #7 a0bf Tiger Lake-LP PCI Express Root Port #8 a0c5 Tiger Lake-LP Serial IO I2C Controller #4 a0c6 Tiger Lake-LP Serial IO I2C Controller #5 a0c8 Tiger Lake-LP Smart Sound Technology Audio Controller # SATA controller on Intel Tiger Lake based mobile platforms in AHCI mode. Could be found on Panasonic Let's Note CF-SV2. a0d3 Tiger Lake-LP SATA Controller a0e0 Tiger Lake-LP Management Engine Interface a0e3 Tiger Lake-LP Active Management Technology - SOL a0e8 Tiger Lake-LP Serial IO I2C Controller #0 a0e9 Tiger Lake-LP Serial IO I2C Controller #1 a0ea Tiger Lake-LP Serial IO I2C Controller #2 a0eb Tiger Lake-LP Serial IO I2C Controller #3 a0ed Tiger Lake-LP USB 3.2 Gen 2x1 xHCI Host Controller a0ef Tiger Lake-LP Shared SRAM a0f0 Wi-Fi 6 AX201 8086 0244 Wi-Fi 6 AX101NGW a0fc Tiger Lake-LP Integrated Sensor Hub a102 Q170/Q150/B150/H170/H110/Z170/CM236 Chipset SATA Controller [AHCI Mode] 1043 8694 H110I-PLUS Motherboard 1462 7994 H110M ECO/GAMING a103 HM170/QM170 Chipset SATA Controller [AHCI Mode] 1028 06e4 XPS 15 9550 103c 825b OMEN-17-w001nv a105 Sunrise Point-H SATA Controller [RAID mode] a106 Q170/H170/Z170/CM236 Chipset SATA Controller [RAID Mode] a107 HM170/QM170 Chipset SATA Controller [RAID Mode] a10f Sunrise Point-H SATA Controller [RAID mode] a110 100 Series/C230 Series Chipset Family PCI Express Root Port #1 a111 100 Series/C230 Series Chipset Family PCI Express Root Port #2 a112 100 Series/C230 Series Chipset Family PCI Express Root Port #3 a113 100 Series/C230 Series Chipset Family PCI Express Root Port #4 a114 100 Series/C230 Series Chipset Family PCI Express Root Port #5 1043 8694 H110I-PLUS Motherboard a115 100 Series/C230 Series Chipset Family PCI Express Root Port #6 a116 100 Series/C230 Series Chipset Family PCI Express Root Port #7 a117 100 Series/C230 Series Chipset Family PCI Express Root Port #8 a118 100 Series/C230 Series Chipset Family PCI Express Root Port #9 1043 8694 H110I-PLUS Motherboard a119 100 Series/C230 Series Chipset Family PCI Express Root Port #10 1043 8694 H110I-PLUS Motherboard a11a 100 Series/C230 Series Chipset Family PCI Express Root Port #11 a11b 100 Series/C230 Series Chipset Family PCI Express Root Port #12 a11c 100 Series/C230 Series Chipset Family PCI Express Root Port #13 a11d 100 Series/C230 Series Chipset Family PCI Express Root Port #14 a11e 100 Series/C230 Series Chipset Family PCI Express Root Port #15 a11f 100 Series/C230 Series Chipset Family PCI Express Root Port #16 a120 100 Series/C230 Series Chipset Family P2SB a121 100 Series/C230 Series Chipset Family Power Management Controller 1028 06e4 XPS 15 9550 103c 825b OMEN-17-w001nv 1043 8694 H110I-PLUS Motherboard 1462 7994 H110M ECO/GAMING a122 Sunrise Point-H cAVS a123 100 Series/C230 Series Chipset Family SMBus 1028 06e4 XPS 15 9550 103c 825b OMEN-17-w001nv 1043 8694 H110I-PLUS Motherboard 1462 7994 H110M ECO/GAMING a124 100 Series/C230 Series Chipset Family SPI Controller a125 100 Series/C230 Series Chipset Family Gigabit Ethernet Controller a126 100 Series/C230 Series Chipset Family Trace Hub a127 100 Series/C230 Series Chipset Family Serial IO UART #0 a128 100 Series/C230 Series Chipset Family Serial IO UART #1 a129 100 Series/C230 Series Chipset Family Serial IO GSPI #0 a12a 100 Series/C230 Series Chipset Family Serial IO GSPI #1 a12f 100 Series/C230 Series Chipset Family USB 3.0 xHCI Controller 1028 06e4 XPS 15 9550 103c 825b OMEN-17-w001nv 1043 8694 H110I-PLUS Motherboard 1462 7994 H110M ECO/GAMING a130 100 Series/C230 Series Chipset Family USB Device Controller (OTG) a131 100 Series/C230 Series Chipset Family Thermal Subsystem 1028 06e4 XPS 15 9550 103c 825b OMEN-17-w001nv 1462 7994 H110M ECO/GAMING a133 Sunrise Point-H Northpeak ACPI Function a135 100 Series/C230 Series Chipset Family Integrated Sensor Hub a13a 100 Series/C230 Series Chipset Family MEI Controller #1 1028 06e4 XPS 15 9550 103c 825b OMEN-17-w001nv 1043 8694 H110I-PLUS Motherboard 1462 7994 H110M ECO/GAMING a13b 100 Series/C230 Series Chipset Family MEI Controller #2 a13c 100 Series/C230 Series Chipset Family IDE Redirection a13d 100 Series/C230 Series Chipset Family KT Redirection a13e 100 Series/C230 Series Chipset Family MEI Controller #3 a140 Sunrise Point-H LPC Controller a141 Sunrise Point-H LPC Controller a142 Sunrise Point-H LPC Controller a143 H110 Chipset LPC/eSPI Controller 1043 8694 H110I-PLUS Motherboard 1462 7994 H110M ECO/GAMING a144 H170 Chipset LPC/eSPI Controller a145 Z170 Chipset LPC/eSPI Controller a146 Q170 Chipset LPC/eSPI Controller a147 Q150 Chipset LPC/eSPI Controller a148 B150 Chipset LPC/eSPI Controller a149 C236 Chipset LPC/eSPI Controller a14a C232 Chipset LPC/eSPI Controller a14b Sunrise Point-H LPC Controller a14c Sunrise Point-H LPC Controller a14d QM170 Chipset LPC/eSPI Controller a14e HM170 Chipset LPC/eSPI Controller 1028 06e4 XPS 15 9550 103c 825b OMEN-17-w001nv a14f Sunrise Point-H LPC Controller a150 CM236 Chipset LPC/eSPI Controller a151 Sunrise Point-H LPC Controller a152 HM175 Chipset LPC/eSPI Controller a153 QM175 Chipset LPC/eSPI Controller a154 CM238 Chipset LPC/eSPI Controller a155 Sunrise Point-H LPC Controller a156 Sunrise Point-H LPC Controller a157 Sunrise Point-H LPC Controller a158 Sunrise Point-H LPC Controller a159 Sunrise Point-H LPC Controller a15a Sunrise Point-H LPC Controller a15b Sunrise Point-H LPC Controller a15c Sunrise Point-H LPC Controller a15d Sunrise Point-H LPC Controller a15e Sunrise Point-H LPC Controller a15f Sunrise Point-H LPC Controller a160 100 Series/C230 Series Chipset Family Serial IO I2C Controller #0 1028 06e4 XPS 15 9550 103c 825b OMEN-17-w001nv a161 100 Series/C230 Series Chipset Family Serial IO I2C Controller #1 1028 06e4 XPS 15 9550 a162 100 Series/C230 Series Chipset Family Serial IO I2C Controller #2 a163 100 Series/C230 Series Chipset Family Serial IO I2C Controller #3 a166 100 Series/C230 Series Chipset Family Serial IO UART Controller #2 a167 100 Series/C230 Series Chipset Family PCI Express Root Port #17 a168 100 Series/C230 Series Chipset Family PCI Express Root Port #18 a169 100 Series/C230 Series Chipset Family PCI Express Root Port #19 a16a 100 Series/C230 Series Chipset Family PCI Express Root Port #20 a170 100 Series/C230 Series Chipset Family HD Audio Controller 1028 06e4 XPS 15 9550 103c 825b OMEN-17-w001nv 1043 86c7 H110I-PLUS Motherboard 1462 f994 H110M ECO/GAMING a171 CM238 HD Audio Controller a182 C620 Series Chipset Family SATA Controller [AHCI mode] a186 C620 Series Chipset Family SATA Controller [RAID mode] a190 C620 Series Chipset Family PCI Express Root Port #1 a191 C620 Series Chipset Family PCI Express Root Port #2 a192 C620 Series Chipset Family PCI Express Root Port #3 a193 C620 Series Chipset Family PCI Express Root Port #4 a194 C620 Series Chipset Family PCI Express Root Port #5 a195 C620 Series Chipset Family PCI Express Root Port #6 a196 C620 Series Chipset Family PCI Express Root Port #7 a197 C620 Series Chipset Family PCI Express Root Port #8 a198 C620 Series Chipset Family PCI Express Root Port #9 a199 C620 Series Chipset Family PCI Express Root Port #10 a19a C620 Series Chipset Family PCI Express Root Port #11 a19b C620 Series Chipset Family PCI Express Root Port #12 a19c C620 Series Chipset Family PCI Express Root Port #13 a19d C620 Series Chipset Family PCI Express Root Port #14 a19e C620 Series Chipset Family PCI Express Root Port #15 a19f C620 Series Chipset Family PCI Express Root Port #16 a1a0 C620 Series Chipset Family P2SB a1a1 C620 Series Chipset Family Power Management Controller 15d9 095d X11SPM-TF a1a2 C620 Series Chipset Family cAVS a1a3 C620 Series Chipset Family SMBus 15d9 095d X11SPM-TF a1a4 C620 Series Chipset Family SPI Controller 15d9 095d X11SPM-TF a1a6 C620 Series Chipset Family Trace Hub a1af C620 Series Chipset Family USB 3.0 xHCI Controller 15d9 095d X11SPM-TF a1b1 C620 Series Chipset Family Thermal Subsystem 15d9 095d X11SPM-TF a1ba C620 Series Chipset Family MEI Controller #1 15d9 095d X11SPM-TF a1bb C620 Series Chipset Family MEI Controller #2 15d9 095d X11SPM-TF a1bc C620 Series Chipset Family IDE Redirection a1bd C620 Series Chipset Family KT Redirection a1be C620 Series Chipset Family MEI Controller #3 15d9 095d X11SPM-TF a1c1 C621 Series Chipset LPC/eSPI Controller a1c2 C622 Series Chipset LPC/eSPI Controller 15d9 095d X11SPM-TF a1c3 C624 Series Chipset LPC/eSPI Controller a1c4 C625 Series Chipset LPC/eSPI Controller a1c5 C626 Series Chipset LPC/eSPI Controller a1c6 C627 Series Chipset LPC/eSPI Controller a1c7 C628 Series Chipset LPC/eSPI Controller a1d2 C620 Series Chipset Family SSATA Controller [AHCI mode] a1d6 C620 Series Chipset Family SSATA Controller [RAID mode] a1e7 C620 Series Chipset Family PCI Express Root Port #17 a1e8 C620 Series Chipset Family PCI Express Root Port #18 a1e9 C620 Series Chipset Family PCI Express Root Port #19 a1ea C620 Series Chipset Family PCI Express Root Port #20 a1ec C620 Series Chipset Family MROM 0 a1ed C620 Series Chipset Family MROM 1 a1f8 Lewisburg IE: HECI #1 a1f9 Lewisburg IE: HECI #2 a1fa Lewisburg IE: IDE-r a1fb Lewisburg IE: KT Controller a1fc Lewisburg IE: HECI #3 a202 Lewisburg SATA Controller [AHCI mode] a206 Lewisburg SATA Controller [RAID mode] a223 Lewisburg SMBus a224 Lewisburg SPI Controller a242 Lewisburg LPC or eSPI Controller a243 Lewisburg LPC or eSPI Controller a252 Lewisburg SSATA Controller [AHCI mode] a256 Lewisburg SSATA Controller [RAID mode] a282 200 Series PCH SATA controller [AHCI mode] 1462 7a72 H270 PC MATE a286 200 Series PCH SATA controller [RAID mode] a290 200 Series PCH PCI Express Root Port #1 a291 200 Series PCH PCI Express Root Port #2 a292 200 Series PCH PCI Express Root Port #3 a293 200 Series PCH PCI Express Root Port #4 a294 200 Series PCH PCI Express Root Port #5 1462 7a72 H270 PC MATE a295 200 Series PCH PCI Express Root Port #6 a296 200 Series PCH PCI Express Root Port #7 1462 7a72 H270 PC MATE a297 200 Series PCH PCI Express Root Port #8 a298 200 Series PCH PCI Express Root Port #9 1462 7a72 H270 PC MATE a299 200 Series PCH PCI Express Root Port #10 a29a 200 Series PCH PCI Express Root Port #11 a29b 200 Series PCH PCI Express Root Port #12 a29c 200 Series PCH PCI Express Root Port #13 a29d 200 Series PCH PCI Express Root Port #14 a29e 200 Series PCH PCI Express Root Port #15 a29f 200 Series PCH PCI Express Root Port #16 a2a0 200 Series/Z370 Chipset Family P2SB a2a1 200 Series/Z370 Chipset Family Power Management Controller 1462 7a72 H270 PC MATE a2a3 200 Series/Z370 Chipset Family SMBus Controller 1462 7a72 H270 PC MATE a2a4 200 Series/Z370 Chipset Family SPI Controller a2a5 200 Series/Z370 Chipset Family Gigabit Ethernet Controller a2a6 200 Series/Z370 Chipset Family Trace Hub a2a7 200 Series/Z370 Chipset Family Serial IO UART Controller #0 a2a8 200 Series/Z370 Chipset Family Serial IO UART Controller #1 a2a9 200 Series/Z370 Chipset Family Serial IO SPI Controller #0 a2aa 200 Series/Z370 Chipset Family Serial IO SPI Controller #1 a2af 200 Series/Z370 Chipset Family USB 3.0 xHCI Controller 1462 7a72 H270 PC MATE a2b1 200 Series PCH Thermal Subsystem 1462 7a72 H270 PC MATE a2ba 200 Series PCH CSME HECI #1 1462 7a72 H270 PC MATE a2bb 200 Series PCH CSME HECI #2 # AMT serial over LAN a2bd 200 Series Chipset Family KT Redirection a2c4 200 Series PCH LPC Controller (H270) 1462 7a72 H270 PC MATE a2c5 200 Series PCH LPC Controller (Z270) a2c6 200 Series PCH LPC Controller (Q270) a2c7 200 Series PCH LPC Controller (Q250) a2c8 200 Series PCH LPC Controller (B250) a2c9 Z370 Chipset LPC/eSPI Controller a2d2 X299 Chipset LPC/eSPI Controller a2d3 C422 Chipset LPC/eSPI Controller a2e0 200 Series PCH Serial IO I2C Controller #0 a2e1 200 Series PCH Serial IO I2C Controller #1 a2e2 200 Series PCH Serial IO I2C Controller #2 a2e3 200 Series PCH Serial IO I2C Controller #3 a2e6 200 Series PCH Serial IO UART Controller #2 a2e7 200 Series PCH PCI Express Root Port #17 a2e8 200 Series PCH PCI Express Root Port #18 a2e9 200 Series PCH PCI Express Root Port #19 a2ea 200 Series PCH PCI Express Root Port #20 a2eb 200 Series PCH PCI Express Root Port #21 a2ec 200 Series PCH PCI Express Root Port #22 a2ed 200 Series PCH PCI Express Root Port #23 a2ee 200 Series PCH PCI Express Root Port #24 a2f0 200 Series PCH HD Audio 1462 7a72 H270 PC MATE 1462 fa72 H270 PC MATE a303 H310 Chipset LPC/eSPI Controller a304 H370 Chipset LPC/eSPI Controller 1028 0869 Vostro 3470 a305 Z390 Chipset LPC/eSPI Controller a306 Q370 Chipset LPC/eSPI Controller a308 300 Series Chipset Family LPC Controller a309 Cannon Point-LP LPC Controller a30c QM370 Chipset LPC/eSPI Controller a30d HM470 Chipset LPC/eSPI Controller a30e Cannon Lake LPC Controller a323 Cannon Lake PCH SMBus Controller 1028 0869 Vostro 3470 a324 Cannon Lake PCH SPI Controller 1028 0869 Vostro 3470 a328 Cannon Lake PCH Serial IO UART Host Controller a32b Cannon Lake PCH SPI Host Controller a32c Cannon Lake PCH PCI Express Root Port #21 a32d Cannon Lake PCH PCI Express Root Port #22 a32e Cannon Lake PCH PCI Express Root Port #23 a32f Cannon Lake PCH PCI Express Root Port #24 a330 Cannon Lake PCH PCI Express Root Port #9 a331 Cannon Lake PCH PCI Express Root Port #10 a332 Cannon Lake PCH PCI Express Root Port #11 a333 Cannon Lake PCH PCI Express Root Port #12 a334 Cannon Lake PCH PCI Express Root Port #13 a335 Cannon Lake PCH PCI Express Root Port #14 a336 Cannon Lake PCH PCI Express Root Port #15 a337 Cannon Lake PCH PCI Express Root Port #16 a338 Cannon Lake PCH PCI Express Root Port #1 a339 Cannon Lake PCH PCI Express Root Port #2 a33a Cannon Lake PCH PCI Express Root Port #3 a33b Cannon Lake PCH PCI Express Root Port #4 a33c Cannon Lake PCH PCI Express Root Port #5 a33d Cannon Lake PCH PCI Express Root Port #6 a33e Cannon Lake PCH PCI Express Root Port #7 a33f Cannon Lake PCH PCI Express Root Port #8 a340 Cannon Lake PCH PCI Express Root Port #17 a341 Cannon Lake PCH PCI Express Root Port #18 a342 Cannon Lake PCH PCI Express Root Port #19 a343 Cannon Lake PCH PCI Express Root Port #20 a348 Cannon Lake PCH cAVS 1028 0869 Vostro 3470 a352 Cannon Lake PCH SATA AHCI Controller 1028 0869 Vostro 3470 a353 Cannon Lake Mobile PCH SATA AHCI Controller a360 Cannon Lake PCH HECI Controller 1028 0869 Vostro 3470 a363 Cannon Lake PCH Active Management Technology - SOL a364 Cannon Lake PCH HECI Controller #2 a368 Cannon Lake PCH Serial IO I2C Controller #0 a369 Cannon Lake PCH Serial IO I2C Controller #1 a36a Cannon Lake PCH Serial IO I2C Controller #2 a36b Cannon Lake PCH Serial IO I2C Controller #3 a36d Cannon Lake PCH USB 3.1 xHCI Host Controller 1028 0869 Vostro 3470 a36f Cannon Lake PCH Shared SRAM a370 Cannon Lake PCH CNVi WiFi 1a56 1552 Killer(R) Wireless-AC 1550i Wireless Network Adapter (9560NGW) 8086 0034 Wireless-AC 9560 a379 Cannon Lake PCH Thermal Controller 1028 0869 Vostro 3470 a382 400 Series Chipset Family SATA AHCI Controller a394 Comet Lake PCI Express Root Port #05 a397 Comet Lake PCI Express Root Port #08 a398 Comet Lake PCI Express Root Port 9 a39a Comet Lake PCI Express Root Port 11 a3a1 Cannon Lake PCH Power Management Controller a3a3 Comet Lake PCH-V SMBus Host Controller a3af Comet Lake PCH-V USB Controller a3b1 Comet Lake PCH-V Thermal Subsystem a3ba Comet Lake PCH-V HECI Controller a3c8 B460 Chipset LPC/eSPI Controller a3da H410 Chipset LPC/eSPI Controller a3eb Comet Lake PCI Express Root Port #21 a3f0 Comet Lake PCH-V cAVS a620 6400/6402 Advanced Memory Buffer (AMB) a703 Raptor Lake-S Host Bridge/DRAM Controller a706 Raptor Lake-P 6p+8e cores Host Bridge/DRAM Controller 1028 0c06 Precision 3580 a707 Raptor Lake-P/U 4p+8e cores Host Bridge/DRAM Controller a708 Raptor Lake-P/U 2p+8e cores Host Bridge/DRAM Controller a70d Raptor Lake PCI Express 5.0 Graphics Port (PEG010) a71d Raptor Lake Dynamic Platform and Thermal Framework Processor Participant 1028 0c06 Precision 3580 a71e Raptor Lake-P Thunderbolt 4 USB Controller 1028 0c06 Precision 3580 a71f Raptor Lake-P Thunderbolt 4 PCI Express Root Port #1 a720 Raptor Lake-P [UHD Graphics] a721 Raptor Lake-P [UHD Graphics] a72f Raptor Lake-P Thunderbolt 4 PCI Express Root Port #2 a73e Raptor Lake-P Thunderbolt 4 NHI #0 1028 0c06 Precision 3580 a740 Raptor Lake-S 8+12 - Host Bridge/DRAM Controller a74d Raptor Lake PCIe 4.0 Graphics Port a74f GNA Scoring Accelerator module 1028 0c06 Precision 3580 a76d Raptor Lake-P Thunderbolt 4 NHI #1 a76e Raptor Lake-P Thunderbolt 4 PCI Express Root Port #0 a77d Raptor Lake Crashlog and Telemetry 1028 0c06 Precision 3580 a77f Volume Management Device NVMe RAID Controller Intel Corporation a780 Raptor Lake-S GT1 [UHD Graphics 770] a781 Raptor Lake-S UHD Graphics a782 Raptor Lake-S UHD Graphics a783 Raptor Lake-S UHD Graphics a788 Raptor Lake-S UHD Graphics a789 Raptor Lake-S UHD Graphics a78a Raptor Lake-S UHD Graphics a78b Raptor Lake-S UHD Graphics a7a0 Raptor Lake-P [Iris Xe Graphics] 1028 0c06 Precision 3580 a7a1 Raptor Lake-P [Iris Xe Graphics] a7a8 Raptor Lake-P [UHD Graphics] a7a9 Raptor Lake-P [UHD Graphics] a7aa Raptor Lake-P [Intel Graphics] a7ab Raptor Lake-P [Intel Graphics] a7ac Raptor Lake-U [Intel Graphics] a7ad Raptor Lake-U [Intel Graphics] a806 Lunar Lake-M LPC/eSPI Controller a822 Lunar Lake-M SMbus Controller a823 Lunar Lake-M SPI Controller a824 Lunar Lake-M Trace Hub a825 Lunar Lake-M Serial IO UART Controller #0 a826 Lunar Lake-M Serial IO UART Controller #1 a827 Lunar Lake-M Serial IO SPI Controller #0 a828 Lunar Lake-M HD Audio Controller a830 Lunar Lake-M Serial IO SPI Controller #1 a831 Lunar Lake-M Thunderbolt 4 USB Controller a833 Lunar Lake-M Thunderbolt 4 NHI #0 a834 Lunar Lake-M Thunderbolt 4 NHI #1 a838 Lunar Lake-M PCI Express Root Port #1 a839 Lunar Lake-M PCI Express Root Port #2 a83a Lunar Lake-M PCI Express Root Port #3 a83b Lunar Lake-M PCI Express Root Port #4 a83c Lunar Lake-M PCI Express Root Port #5 a83d Lunar Lake-M PCI Express Root Port #6 a845 Lunar Lake-M Integrated Sensor Hub a847 Lunar Lake-M UFS Controller a84e Lunar Lake-M Thunderbolt 4 PCI Express Root Port #0 a84f Lunar Lake-M Thunderbolt 4 PCI Express Root Port #1 a860 Lunar Lake-M Thunderbolt 4 PCI Express Root Port #2 a878 Lunar Lake-M Serial IO I2C Controller #0 a879 Lunar Lake-M Serial IO I2C Controller #1 a87a Lunar Lake-M Serial IO I2C Controller #2 a87b Lunar Lake-M Serial IO I2C Controller #3 a87d Lunar Lake-M USB 3.2 Gen 2x1 xHCI Host Controller abc0 Omni-Path Fabric Switch Silicon 100 Series ad0b Volume Management Device NVMe RAID Controller Intel Corporation ad1d Arrow Lake NPU b03e Panther Lake NPU b152 21152 PCI-to-PCI Bridge 8086 b152 21152 PCI-to-PCI Bridge # observed, and documented in Intel revision note; new mask of 1011:0026 b154 21154 PCI-to-PCI Bridge b555 21555 Non transparent PCI-to-PCI Bridge 12c7 5005 SS7HD PCI Adaptor Card 12c7 5006 SS7HDC cPCI Adaptor Card 12d9 000a PCI VoIP Gateway 4c53 1050 CT7 mainboard 4c53 1051 CE7 mainboard e4bf 1000 CC8-1-BLUES d130 Core Processor DMI 15d9 0605 X8SIL d131 Core Processor DMI 1028 02da OptiPlex 980 15d9 060d C7SIM-Q Motherboard d132 Core Processor DMI 1028 040b Latitude E6510 d133 Core Processor DMI d134 Core Processor DMI d135 Core Processor DMI d136 Core Processor DMI d137 Core Processor DMI d138 Core Processor PCI Express Root Port 1 1028 02da OptiPlex 980 1028 040b Latitude E6510 15d9 060d C7SIM-Q Motherboard d139 Core Processor PCI Express Root Port 2 d13a Core Processor PCI Express Root Port 3 d13b Core Processor PCI Express Root Port 4 d150 Core Processor QPI Link d151 Core Processor QPI Routing and Protocol Registers d155 Core Processor System Management Registers d156 Core Processor Semaphore and Scratchpad Registers d157 Core Processor System Control and Status Registers d158 Core Processor Miscellaneous Registers e202 Battlemage G21 [Intel Graphics] e20b Battlemage G21 [Intel Graphics] e20c Battlemage G21 [Intel Graphics] e20d Battlemage G21 [Intel Graphics] e212 Battlemage G21 [Intel Graphics] f1a5 SSD 600P Series 8086 390a SSDPEKKW256G7 256GB f1a6 SSD DC P4101/Pro 7600p/760p/E 6100p Series 8086 390b SSD Pro 7600p/760p/E 6100p Series [NVM Express] f1a7 SSD 700p Series f1a8 SSD 660P Series f1aa SSD 670p Series [Keystone Harbor] faf0 SSD 665p Series [Neptune Harbor Refresh] 8088 Beijing Wangxun Technology Co., Ltd. 0100 WX1860AL-W Gigabit Ethernet Controller 0101 WX1860A2 Gigabit Ethernet Controller 4c52 2024 LRES2024PT Dual-port 1Gb Ethernet Network Adapter 4c52 2025 LRES2025PT Quad-port 1Gb Ethernet Network Adapter 4c52 2027 LRES2027PF Dual-port 1Gb Ethernet Server Adapter 4c52 3018 LRES3018PT Dual-port 1Gb Ethernet Server Adapter for OCP 8088 0201 Dual-Port Ethernet Network Adaptor SF200T 8088 0501 Dual-Port Ethernet Network Adapter SF200T-C101 8088 0901 Dual-Port Ethernet Network Adapter SF200T-B401 8088 0b01 Dual-Port Ethernet Network Adapter SF200T-B402 8088 4201 Dual-Port Ethernet Network Adaptor SF200T (WOL) 8088 8201 Dual-Port Ethernet Network Adaptor SF200T (NCSI) 8088 c201 Dual-Port Ethernet Network Adaptor SF200T (WOL, NCSI) 0102 WX1860A2S Gigabit Ethernet Controller 8088 0210 Dual-Port Ethernet Network Adaptor SF200T-S 0103 WX1860A4 Gigabit Ethernet Controller 1bd4 009e ENPW2100-T4 4c52 2028 LRES2028PF Quad-port 1Gb Ethernet Server Adapter 4c52 3019 LRES3019PT Quad-port 1Gb Ethernet Server Adapter for OCP 8088 0401 Qual-Port Ethernet Network Adaptor SF400T 8088 0440 Qual-Port Ethernet Network Adaptor SF400-OCP 8088 0a01 Quad-Port Ethernet Network Adapter SF400T-B401 8088 0c01 Quad-Port Ethernet Network Adapter SF400T-B402 8088 4401 Quad-Port Ethernet Network Adapter SF400T (WOL) 8088 8103 Quad-Port Ethernet Network Adaptor SF400T (NCSI) 8088 8401 Quad-Port Ethernet Network Adapter SF400T (NCSI) 8088 c103 Quad-Port Ethernet Network Adaptor SF400T (WOL, NCSI) 8088 c401 Quad-Port Ethernet Network Adapter SF400T (WOL, NCSI) 0104 WX1860A4S Gigabit Ethernet Controller 8088 0410 Qual-Port Ethernet Network Adaptor SF400T-S 0105 WX1860AL2 Gigabit Ethernet Controller 8088 0202 Dual-Port Ethernet Network Adaptor SF200HT 8088 4202 Dual-Port Ethernet Network Adaptor SF200HT (WOL) 8088 8202 Dual-Port Ethernet Network Adaptor SF200HT (NCSI) 8088 c202 Dual-Port Ethernet Network Adaptor SF200HT (WOL, NCSI) 0106 WX1860AL2S Gigabit Ethernet Controller 8088 0220 Dual-Port Ethernet Network Adaptor SF200HT-S 0107 WX1860AL4 Gigabit Ethernet Controller 8088 0402 Qual-Port Ethernet Network Adaptor SF400HT 8088 4402 Quad-Port Ethernet Network Adaptor SF400HT (WOL) 8088 8402 Quad-Port Ethernet Network Adaptor SF400HT (NCSI) 8088 c402 Quad-Port Ethernet Network Adaptor SF400HT (WOL, NCSI) 0108 WX1860AL4S Gigabit Ethernet Controller 8088 0420 Qual-Port Ethernet Network Adaptor SF400HT-S 0109 WX1860-LC Gigabit Ethernet Controller 010a WX1860A1 Gigabit Ethernet Controller 4c52 2026 LRES2026PF Single-port 1Gb Ethernet Network Adapter 4c52 2034 LRES2034PT Single-port 1Gb Ethernet Network Adapter 010b WX1860AL1 Gigabit Ethernet Controller 4c52 2215 LRES2215PT Single-port 1Gb Ethernet Network Adapter 8088 0102 Single-Port Ethernet Network Adaptor SF100HT 8088 4102 Single-Port Ethernet Network Adaptor SF100HT (WOL) 8088 8102 Single-Port Ethernet Network Adaptor SF100HT (NCSI) 8088 c102 Single-Port Ethernet Network Adaptor SF100HT (WOL, NCSI) 0111 WX1860A2 Ethernet Controller Virtual Function 0113 WX1860A4 Ethernet Controller Virtual Function 0115 WX1860AL2 Ethernet Controller Virtual Function 0117 WX1860AL4 Ethernet Controller Virtual Function 0119 WX1860-LC Gigabit Ethernet Controller Virtual Function 011a WX1860A1 Gigabit Ethernet Controller Virtual Function 011b WX1860AL1 Gigabit Ethernet Controller Virtual Function 1000 Ethernet Controller SP1000A Virtual Function for 10GbE SFP+ 1001 Ethernet Controller SP1000A for 10GbE SFP+ 1bd4 0084 Ethernet Controller SP1000A for 10GbE SFP+(lldp) 1bd4 0085 Ethernet Controller SP1000A for 10GBASE-T 4c52 1002 LRES1002PF Dual-port 10Gb Ethernet Server Adapter 4c52 1003 LRES1003PF Single-port 10Gb Ethernet Server Adapter 4c52 3001 LRES3001PF Dual-port 10Gb Ethernet Server Adapter for OCP 8088 0000 Ethernet Network Adaptor RP1000 for 10GbE SFP+ 8088 0300 Ethernet Network Adaptor RP1000-A03 for 10GbE SFP+ 8088 0400 Ethernet Network Adaptor RP1000-A04 for 10GbE SFP+ 2000 Ethernet Controller WX1820AL Virtual Function for 10GbE SFP+ 2001 Ethernet Controller WX1820AL for 10GbE SFP+ 8088 2000 Ethernet Network Adaptor RP2000 for 10GbE SFP+ 8088 2300 Ethernet Network Adaptor RP2000-A03 for 10GbE SFP+ 8088 2400 Ethernet Network Adaptor RP2000-A04 for 10GbE SFP+ 80ee InnoTek Systemberatung GmbH beef VirtualBox Graphics Adapter cafe VirtualBox Guest Service 8322 Sodick America Corp. 8384 SigmaTel 8401 TRENDware International Inc. 8510 Sietium Semiconductor Co., Ltd. 0201 GenBu02 Series GPU 8510 0001 GB2062-PUB-LPDDR 8510 0002 GB2062-PCIe-C0 8510 0003 GB2062-PCIe-C41 8510 0004 GB2062-PCIe-HIEILP4 8510 0005 CQ2040-PCIe-C21 8510 0007 GB2062-PCIe-C40 8510 0008 CQ2040-MXM-M60 8510 0009 GB2062-PCIe-C20 8510 000c CQ2040-PUB 8510 0201 GB2062-PUB-DDR # nee ScaleMP 8686 SAP 1010 vSMP Foundation controller [vSMP CTL] 1011 vSMP Foundation MEX/FLX controller [vSMP CTL] 8800 Trigem Computer Inc. 2008 Video assistant component 8820 Stryker Corporation 2724 Mako Front Side Motor Controller [cPCI] # Wuxi Micro Innovation Integrated Circuit Design Co.,Ltd. 8848 MUCSE 1000 Ethernet Controller N10 Series for 10GbE or 40GbE (Dual-port) 4c52 3032 LRES3032PF Dual-port 10Gb Ethernet Server Adapter for OCP 8848 8410 Ethernet Network Adapter N10G-X2-DC for 10GbE SFP+ 2-port 1001 Ethernet Controller N400 Series for 1GbE (Dual-port) 1003 Ethernet Controller N400 Series for 10GbE (Single-port) 4c52 1050 LRES1050PF Single-port 10Gb Ethernet Network Adapter 1020 Ethernet Controller N10 Series for 10GbE (Quad-port) 4c52 1030 LRES1030PF Quad-port 10Gb Ethernet Server Adapter 4c52 1031 LRES1031PF Dual-port 10Gb Ethernet Server Adapter 4c52 3031 LRES3031PF Quad-port 10Gb Ethernet Server Adapter for OCP 8848 8451 Ethernet Network Adapter N10G-X4-QC for 10GbE SFP+ 4-port 1021 Ethernet Controller N400 Series for 1GbE (Quad-port) 4c52 1032 LRES1032PF Quad-port 1Gb Ethernet Network Adapter 4c52 1039 LRES1039PT Quad-port 1Gb Ethernet Network Adapter 1060 Ethernet Controller N10 Series for 1GbE or 10GbE (8-port) 1080 Ethernet Controller N10 Series Virtual Function 1081 Ethernet Controller N400 Series Virtual Function 1083 Ethernet Controller N400 Series Virtual Function 8308 Ethernet Controller N500 Series for 1GbE (Quad-port, Copper RJ45) # NIC-ETH3M0T-3S-4P Quad-Port RJ45 Adapter for OCP 3.0 193d 1088 NIC-ETH3M0T-3S-4P 4c52 1048 LRES1048PT Quad-port 1Gb Ethernet Network Adapter 4c52 3044 LRES3044PT Quad-port 1Gb Ethernet Server Adapter for OCP 8309 Ethernet Controller N500 Series Virtual Function 8318 Ethernet Controller N500 Series for 1GbE (Dual-port, Copper RJ45) 4c52 1049 LRES1049PT Dual-port 1Gb Ethernet Network Adapter 4c52 3043 LRES3043PT Dual-port 1Gb Ethernet Server Adapter for OCP 8866 T-Square Design Inc. 8888 Silicon Magic # 4 port HDMI capture card 8504 AVMatrix VC42 8912 TRX # 8c4a is not Winbond but there is a board misprogrammed 8c4a Winbond 1980 W89C940 misprogrammed [ne2k] 8e0e Computone Corporation 8e2e KTI 3000 ET32P2 9000 C*Core Technology Co., Ltd. 9004 Adaptec 0078 AHA-2940U_CN 1078 AIC-7810 1160 AIC-1160 [Family Fibre Channel Adapter] 2178 AIC-7821 3860 AHA-2930CU 3b78 AHA-4844W/4844UW 5075 AIC-755x 5078 AIC-7850T/7856T [AVA-2902/4/6 / AHA-2910] 9004 7850 AIC-7850T/7856T [AVA-290x / AHA-2910] 5175 AIC-755x 5178 AIC-7851 5275 AIC-755x 5278 AIC-7852 5375 AIC-755x 5378 AIC-7850 5475 AIC-755x 5478 AIC-7850 5575 AVA-2930 5578 AIC-7855 5647 ANA-7711 TCP Offload Engine 9004 7710 ANA-7711F TCP Offload Engine - Optical 9004 7711 ANA-7711LP TCP Offload Engine - Copper 5675 AIC-755x 5678 AIC-7856 5775 AIC-755x 5778 AIC-7850 5800 AIC-5800 5900 ANA-5910/5930/5940 ATM155 & 25 LAN Adapter 5905 ANA-5910A/5930A/5940A ATM Adapter 6038 AIC-3860 6075 AIC-1480 / APA-1480 9004 7560 AIC-1480 / APA-1480 Cardbus 6078 AIC-7860 6178 AIC-7861 9004 7861 AHA-2940AU Single 6278 AIC-7860 6378 AIC-7860 6478 AIC-786x 6578 AIC-786x 6678 AIC-786x 6778 AIC-786x 6915 ANA620xx/ANA69011A 9004 0008 ANA69011A/TX 10/100 9004 0009 ANA69011A/TX 10/100 9004 0010 ANA62022 2-port 10/100 9004 0018 ANA62044 4-port 10/100 9004 0019 ANA62044 4-port 10/100 9004 0020 ANA62022 2-port 10/100 9004 0028 ANA69011A/TX 10/100 9004 8008 ANA69011A/TX 64 bit 10/100 9004 8009 ANA69011A/TX 64 bit 10/100 9004 8010 ANA62022 2-port 64 bit 10/100 9004 8018 ANA62044 4-port 64 bit 10/100 9004 8019 ANA62044 4-port 64 bit 10/100 9004 8020 ANA62022 2-port 64 bit 10/100 9004 8028 ANA69011A/TX 64 bit 10/100 7078 AHA-294x / AIC-7870 7178 AIC-7870P/7871 [AHA-2940/W/S76] 7278 AHA-3940/3940W / AIC-7872 7378 AHA-3985 / AIC-7873 7478 AHA-2944/2944W / AIC-7874 7578 AHA-3944/3944W / AIC-7875 7678 AHA-4944W/UW / AIC-7876 7710 ANA-7711F Network Accelerator Card (NAC) - Optical 7711 ANA-7711C Network Accelerator Card (NAC) - Copper 7778 AIC-787x 7810 AIC-7810 7815 AIC-7815 RAID+Memory Controller IC 9004 7815 ARO-1130U2 RAID Controller 9004 7840 AIC-7815 RAID+Memory Controller IC 7850 AIC-7850 7855 AHA-2930 7860 AIC-7860 7870 AIC-7870 7871 AHA-2940 7872 AHA-3940 7873 AHA-3980 7874 AHA-2944 7880 AIC-7880P 7890 AIC-7890 7891 AIC-789x 7892 AIC-789x 7893 AIC-789x 7894 AIC-789x 7895 AHA-2940U/UW / AHA-39xx / AIC-7895 9004 7890 AHA-2940U/2940UW Dual AHA-394xAU/AUW/AUWD AIC-7895B 9004 7891 AHA-2940U/2940UW Dual 9004 7892 AHA-3940AU/AUW/AUWD/UWD 9004 7894 AHA-3944AUWD 9004 7895 AHA-2940U/2940UW Dual AHA-394xAU/AUW/AUWD AIC-7895B 9004 7896 AHA-2940U/2940UW Dual AHA-394xAU/AUW/AUWD AIC-7895B 9004 7897 AHA-2940U/2940UW Dual AHA-394xAU/AUW/AUWD AIC-7895B 7896 AIC-789x 7897 AIC-789x 8078 AIC-7880U 9004 7880 AIC-7880P Ultra/Ultra Wide SCSI Chipset 8178 AIC-7870P/7881U [AHA-2940U/UW/D/S76] 9004 7881 AHA-2940UW SCSI Host Adapter 8278 AHA-3940U/UW/UWD / AIC-7882U 8378 AHA-3940U/UW / AIC-7883U 8478 AHA-2944UW / AIC-7884U 8578 AHA-3944U/UWD / AIC-7885 8678 AHA-4944UW / AIC-7886 8778 AHA-2940UW Pro / AIC-788x 9004 7887 2940UW Pro Ultra-Wide SCSI Controller 8878 AHA-2930UW / AIC-7888 9004 7888 AHA-2930UW SCSI Controller 8b78 ABA-1030 ec78 AHA-4944W/UW # Acquired by Microchip Technology 9005 Adaptec 0010 AHA-2940U2/U2W 9005 2180 AHA-2940U2 SCSI Controller 9005 8100 AHA-2940U2B SCSI Controller 9005 a100 AHA-2940U2B SCSI Controller 9005 a180 AIC-3860Q [AHA-2940U2W/GE] SCSI Controller 9005 e100 AHA-2950U2B SCSI Controller 0011 AHA-2930U2 0013 78902 9005 0003 AAA-131U2 Array1000 1 Channel RAID Controller 9005 000f AIC7890_ARO 001f AHA-2940U2/U2W / 7890/7891 9005 000f 2940U2W SCSI Controller 9005 a180 2940U2W SCSI Controller 0020 AIC-7890 002f AIC-7890 0030 AIC-7890 003f AIC-7890 0050 AHA-3940U2x/395U2x 9005 f500 AHA-3950U2B 9005 ffff AHA-3950U2B 0051 AHA-3950U2D 9005 b500 AHA-3950U2D 0053 AIC-7896 SCSI Controller 9005 ffff AIC-7896 SCSI Controller mainboard implementation 005f AIC-7896U2/7897U2 0080 AIC-7892A U160/m 0e11 e2a0 Compaq 64-Bit/66MHz Wide Ultra3 SCSI Adapter 9005 6220 AHA-29160C 9005 62a0 29160N Ultra160 SCSI Controller 9005 e220 29160LP Low Profile Ultra160 SCSI Controller 9005 e2a0 29160 Ultra160 SCSI Controller 0081 AIC-7892B U160/m 9005 62a1 19160 Ultra160 SCSI Controller 0083 AIC-7892D U160/m 008f AIC-7892P U160/m 1179 0001 Magnia Z310 15d9 9005 Onboard SCSI Host Adapter 0092 AVC-2010 [VideoH!] 0093 AVC-2410 [VideoH!] 00c0 AHA-3960D / AIC-7899A U160/m 0e11 f620 Compaq 64-Bit/66MHz Dual Channel Wide Ultra3 SCSI Adapter 9005 f620 AHA-3960D U160/m 00c1 AIC-7899B U160/m 00c3 AIC-7899D U160/m 00c5 RAID subsystem HBA 1028 00c5 PowerEdge 2400,2500,2550,4400 00cf AIC-7899P U160/m 1028 00ce PowerEdge 1400 1028 00d1 PowerEdge 2550 1028 00d9 PowerEdge 2500 10f1 2462 Thunder K7 S2462 15d9 9005 Onboard SCSI Host Adapter 8086 3411 SDS2 Mainboard 0241 Serial ATA II RAID 1420SA 0242 Serial ATA II RAID 1220SA 0243 Serial ATA II RAID 1430SA 0244 eSATA II RAID 1225SA 0250 ServeRAID Controller 1014 0279 ServeRAID 6M 1014 028c ServeRAID 6i/6i+ 1014 028e ServeRAID 7k 0279 ServeRAID 6M 0283 AAC-RAID 9005 0283 Catapult 0284 AAC-RAID 9005 0284 Tomcat 0285 AAC-RAID 0e11 0295 SATA 6Ch (Bearcat) 1014 02f2 ServeRAID 8i 1028 0287 PowerEdge Expandable RAID Controller 320/DC 1028 0291 CERC SATA RAID 2 PCI SATA 6ch (DellCorsair) 103c 3227 AAR-2610SA 108e 0286 Sun StorageTek SAS RAID HBA, Internal 108e 0287 STK RAID EXT 108e 7aac STK RAID REM 108e 7aae STK RAID EX 15d9 02b5 SMC AOC-USAS-S4i 15d9 02b6 SMC AOC-USAS-S8i 15d9 02c9 SMC AOC-USAS-S4iR 15d9 02ca SMC AOC-USAS-S8iR 15d9 02d2 SMC AOC-USAS-S8i-LP 15d9 02d3 SMC AOC-USAS-S8iR-LP 17aa 0286 Legend S220 (Legend Crusader) 17aa 0287 Legend S230 (Legend Vulcan) 9005 0285 2200S (Vulcan) 9005 0286 2120S (Crusader) 9005 0287 2200S (Vulcan-2m) 9005 0288 3230S (Harrier) 9005 0289 3240S (Tornado) # Some early versions reported 2020S 9005 028a ASR-2020ZCR # Some early versions reported 2025S 9005 028b ASR-2025ZCR (Terminator) 9005 028e ASR-2020SA (Skyhawk) 9005 028f ASR-2025SA 9005 0290 AAR-2410SA PCI SATA 4ch (Jaguar II) 9005 0292 AAR-2810SA PCI SATA 8ch (Corsair-8) 9005 0293 AAR-21610SA PCI SATA 16ch (Corsair-16) 9005 0294 ESD SO-DIMM PCI-X SATA ZCR (Prowler) 9005 0296 ASR-2240S 9005 0297 ASR-4005SAS 9005 0298 ASR-4000 9005 0299 ASR-4800SAS 9005 029a 4805SAS 9005 02a4 ICP ICP9085LI 9005 02a5 ICP ICP5085BR 9005 02b5 ASR5800 9005 02b6 ASR5805 9005 02b7 ASR5808 9005 02b8 ICP5445SL 9005 02b9 ICP5085SL 9005 02ba ICP5805SL 9005 02bb 3405 9005 02bc 3805 9005 02bd 31205 9005 02be 31605 9005 02bf ICP ICP5045BL 9005 02c0 ICP ICP5085BL 9005 02c1 ICP ICP5125BR 9005 02c2 ICP ICP5165BR 9005 02c3 51205 9005 02c4 51605 9005 02c5 ICP ICP5125SL 9005 02c6 ICP ICP5165SL 9005 02c7 3085 9005 02c8 ICP5805BL 9005 02ce 51245 9005 02cf 51645 9005 02d0 52445 9005 02d1 5405 9005 02d4 ASR-2045 9005 02d5 ASR-2405 9005 02d6 ASR-2445 9005 02d7 ASR-2805 9005 02d8 5405G 9005 02d9 5445G 9005 02da 5805G 9005 02db 5085G 9005 02dc 51245G 9005 02dd 51645G 9005 02de 52445G 9005 02df ASR-2045G 9005 02e0 ASR-2405G 9005 02e1 ASR-2445G 9005 02e2 ASR-2805G 0286 AAC-RAID (Rocket) 1014 034d 8s 1014 9540 ServeRAID 8k/8k-l4 1014 9580 ServeRAID 8k/8k-l8 9005 028c ASR-2230S + ASR-2230SLP PCI-X (Lancer) 9005 028d ASR-2130S 9005 029b ASR-2820SA 9005 029c ASR-2620SA 9005 029d ASR-2420SA 9005 029e ICP ICP9024R0 9005 029f ICP ICP9014R0 9005 02a0 ICP ICP9047MA 9005 02a1 ICP ICP9087MA 9005 02a2 3800 9005 02a3 ICP ICP5445AU 9005 02a4 ICP ICP9085LI 9005 02a5 ICP ICP5085BR 9005 02a6 ICP9067MA 9005 02a7 3805 9005 02a8 3400 9005 02a9 ICP ICP5085AU 9005 02aa ICP ICP5045AU 9005 02ac 1800 9005 02b3 2400 9005 02b4 ICP ICP5045AL 9005 0800 Callisto 028b Series 6 - 6G SAS/PCIe 2 9005 0200 Series 6 Entry Level - ASR-6405E - 4 internal 6G SAS ports 9005 0201 Series 6 Entry Level - ASR-6805E - 8 internal 6G SAS ports 9005 0300 Series 6 - ASR-6405 - 4 internal 6G SAS ports 9005 0301 Series 6 - ASR-6805 - 8 internal 6G SAS ports 9005 0302 Series 6 - ASR-6445 - 4 internal and 4 external 6G SAS ports 9005 0310 Series 6 Connectors on Top - ASR-6405T - 4 internal 6G SAS ports 9005 0311 Series 6 Connectors on Top - ASR-6805T - 8 internal 6G SAS 9005 0400 Series 6 - ASR-61205 - 12 internal 6G SAS ports 9005 0401 Series 6 - ASR-61605 - 16 internal 6G SAS ports 9005 0403 Series 6 - ASR-62405 - 24 internal 6G SAS ports 028c Series 7 6G SAS/PCIe 3 9005 0500 Series 7 - ASR-7805 - 8 internal 6G SAS Port/PCIe 3.0 9005 0501 Series 7 - ASR-71605 - 16 internal 6G SAS Port/PCIe 3.0 9005 0502 Series 7 - ASR-71685 - 16 internal 8 external 6G SAS Port/PCIe 3.0 9005 0503 Series 7 - ASR-72405 - 24 internal 0 external 6G SAS Port/PCIe 3.0 9005 0504 Series 7 - ASR-7885 - 8 internal 8 external 6G SAS Port/PCIe 3.0 9005 0505 Series 7 Entry Level - ASR-71685E - 16 internal 8 external 6G SAS Port/PCIe 3.0 9005 0506 Series 7 Entry Level - ASR-72405E - 24 internal 0 external 6G SAS Port/PCIe 3.0 028d Series 8 12G SAS/PCIe 3 9005 0550 Series 8 - ASR-82405 - 24 internal 0 external 12G SAS Port/PCIe 3.0 9005 0551 Series 8 - ASR-81605 - 16 internal 0 external 12G SAS Port/PCIe 3.0 9005 0552 Series 8 - ASR-8805 - 8 internal 0 external 12G SAS Port/PCIe 3.0 9005 0553 Series 8 - ASR-8085 - 0 internal 8 external 12G SAS Port/PCIe 3.0 9005 0554 Series 8 - ASR-8885 - 8 internal 8 external 12G SAS Port/PCIe 3.0 028f Smart Storage PQI SAS 103c 0600 Smart Array P408i-p SR Gen10 103c 0601 Smart Array P408e-p SR Gen10 103c 0602 Smart Array P408i-a SR Gen10 103c 0603 Smart Array P408i-c SR Gen10 103c 0650 Smart Array E208i-p SR Gen10 103c 0651 Smart Array E208e-p SR Gen10 103c 0652 Smart Array E208i-c SR Gen10 103c 0654 Smart Array E208i-a SR Gen10 103c 0655 Smart Array P408e-m SR Gen10 103c 0700 Smart Array P204i-c SR Gen10 103c 0701 Smart Array P204i-b SR Gen10 103c 1100 Smart Array P816i-a SR Gen10 103c 1101 Smart Array P416ie-m SR G10 105b 1211 HBA 8238-16i 105b 1321 HBA 8242-24i 1137 02f8 24G TriMode M1 RAID 4GB FBWC 32D 1137 02f9 24G TriMode M1 RAID 4GB FBWC 16D 1137 02fa 24G TriMode M1 HBA 16D 13fe 8312 SKY-9200 MIC-8312BridgeB 152d 8a22 QS-8204-8i 152d 8a23 QS-8238-16i 152d 8a24 QS-8236-16i 152d 8a36 QS-8240-24i 152d 8a37 QS-8242-24i 1590 0294 SR932i-p Gen10+ 1590 02dc SR416i-a Gen10+ 193d 1104 RAID P2404-Mf-4i-2GB 193d 1105 RAID P4408-Mf-8i-2GB 193d 1106 RAID P2404-Mf-4i-1GB 193d 1107 RAID P4408-Mf-8i-4GB 193d 8460 HBA H460-M1 193d 8461 HBA H460-B1 193d c460 RAID P460-M2 193d c461 RAID P460-B2 193d f460 RAID P460-M4 193d f461 RAID P460-B4 19e5 d227 SmartROC-HD SR465C-M 4G 19e5 d228 SmartROC SR455C-M 2G 19e5 d229 SmartIOC SR155-M 19e5 d22a SmartIOC-HD SR765-M 19e5 d22b SmartROC-e SR455C-ME 4G 19e5 d22c SmartROC SR455C-M 4G 1bd4 0045 SMART-HBA 8242-24i 1bd4 0046 RAID 8236-16i 1bd4 0047 RAID 8240-24i 1bd4 0048 SMART-HBA 8238-16i 1bd4 004a PM8222-SHBA 1bd4 004b RAID PM8204-2GB 1bd4 004c RAID PM8204-4GB 1bd4 004f PM8222-HBA 1bd4 006b RS0800M5H24I 1bd4 006c RS0800M5E8i 1bd4 006d RS0800M5H8i 1bd4 006f RS0804M5R16i 1bd4 0070 RS0800M5E24i 1bd4 0071 RS0800M5H16i 1bd4 0072 RS0800M5E16i 1bd4 0077 RS0800M5E16iM 1bd4 0078 RS0800M5E24iM 1bd4 0079 RS0800M5H24iM 1bd4 0080 RS0804M5R16iM 1bd4 0086 RT0800M7E 1bd4 0087 RT0800M7H 1bd4 0088 RT0804M7R 1bd4 0089 RT0808M7R 1cc4 0101 Ramaxel FBGF-RAD PM8204 1cc4 0201 Ramaxel FBGF-RAD PM8222 1d49 0220 ThinkSystem 4350-8i SAS/SATA 12Gb HBA 1d49 0221 ThinkSystem 4350-16i SAS/SATA 12Gb HBA 1d49 0520 ThinkSystem RAID 5350-8i PCIe 12Gb Adapter 1d49 0522 ThinkSystem RAID 5350-8i PCIe 12Gb Internal Adapter 1d49 0620 ThinkSystem RAID 9350-8i 2GB Flash PCIe 12Gb Adapter 1d49 0621 ThinkSystem RAID 9350-8i 2GB Flash PCIe 12Gb Internal Adapter 1d49 0622 ThinkSystem RAID 9350-16i 4GB Flash PCIe 12Gb Adapter 1d49 0623 ThinkSystem RAID 9350-16i 4GB Flash PCIe 12Gb Internal Adapter 9005 0608 SmartRAID 3162-8i /e 9005 0800 SmartRAID 3154-8i 9005 0801 SmartRAID 3152-8i 9005 0802 SmartRAID 3151-4i 9005 0803 SmartRAID 3101-4i 9005 0804 SmartRAID 3154-8e 9005 0805 SmartRAID 3102-8i 9005 0806 SmartRAID 3100 9005 0807 SmartRAID 3162-8i 9005 0808 SmartRAID 3101E-4i 9005 0809 SmartRAID 3102E-8i 9005 0900 SmartHBA 2100-8i 9005 0901 SmartHBA 2100-4i 9005 0902 HBA 1100-8i 9005 0903 HBA 1100-4i 9005 0904 SmartHBA 2100-8e 9005 0905 HBA 1100-8e 9005 0906 SmartHBA 2100-4i4e 9005 0907 HBA 1100 9005 0908 SmartHBA 2100 9005 090a SmartHBA 2100A-8i 9005 1200 SmartRAID 3154-24i 9005 1201 SmartRAID 3154-8i16e 9005 1202 SmartRAID 3154-8i8e 9005 1280 HBA 1100-16i 9005 1281 HBA 1100-16e 9005 1282 SmartHBA 2100-16i 9005 1300 HBA 1100-8i8e 9005 1301 HBA 1100-24i 9005 1302 SmartHBA 2100-8i8e 9005 1303 SmartHBA 2100-24i 9005 1380 SmartRAID 3154-16i 9005 1400 SmartRAID Ultra 3258p-16i /e 9005 1402 HBA Ultra 1200p-16i 9005 1410 HBA Ultra 1200-16e 9005 1430 SmartRAID Ultra 3254-16e /e 9005 1441 HBA Ultra 1200p-32i 9005 1450 SmartRAID Ultra 3258p-32i /e 9005 1462 HBA 1200-8i 9005 1471 SmartRAID 3254-16i /e 9005 1472 SmartRAID 3258-16i /e 9005 1475 SmartRAID 3254-16e /e 9005 14a0 SmartRAID 3254-8i 9005 14a1 SmartRAID 3204-8i 9005 14a2 SmartRAID 3252-8i 9005 14a4 SmartRAID 3254-8i /e 9005 14a5 SmartRAID 3252-8i /e 9005 14a6 SmartRAID 3204-8i /e 9005 14c0 SmartHBA 2200-16i 9005 14c1 HBA 1200-16i 9005 14c3 HBA 1200-16e 9005 14c4 HBA 1200-8e 0410 AIC-9410W SAS (Razor HBA RAID) 9005 0410 ASC-48300(Spirit RAID) 9005 0411 ASC-58300 (Oakmont RAID) 0412 AIC-9410W SAS (Razor HBA non-RAID) 9005 0412 ASC-48300 (Spirit non-RAID) 9005 0413 ASC-58300 (Oakmont non-RAID) 0415 ASC-58300 SAS (Razor-External HBA RAID) 0416 ASC-58300 SAS (Razor-External HBA non-RAID) 041e AIC-9410W SAS (Razor ASIC non-RAID) 041f AIC-9410W SAS (Razor ASIC RAID) 9005 041f AIC-9410W SAS (Razor ASIC RAID) 042f VSC7250/7251 SAS (Aurora ASIC non-RAID) 0430 AIC-9405W SAS (Razor-Lite HBA RAID) 9005 0430 ASC-44300 (Spirit-Lite RAID) 0432 AIC-9405W SAS (Razor-Lite HBA non-RAID) 9005 0432 ASC-44300 (Spirit-Lite non-RAID) 043e AIC-9405W SAS (Razor-Lite ASIC non-RAID) 043f AIC-9405W SAS (Razor-Lite ASIC RAID) 0450 ASC-1405 Unified Serial HBA 0500 Obsidian chipset SCSI controller 1014 02c1 PCI-X DDR 3Gb SAS Adapter (572A/572C) 1014 02c2 PCI-X DDR 3Gb SAS RAID Adapter (572B/572D) 0503 Scamp chipset SCSI controller 1014 02bf Quad Channel PCI-X DDR U320 SCSI RAID Adapter (571E) 1014 02c3 PCI-X DDR 3Gb SAS RAID Adapter (572F) 1014 02d5 Quad Channel PCI-X DDR U320 SCSI RAID Adapter (571F) 0910 AUA-3100B 091e AUA-3100B 8000 ASC-29320A U320 800f AIC-7901 U320 8010 ASC-39320 U320 8011 ASC-39320D 0e11 00ac ASC-39320D U320 9005 0041 ASC-39320D U320 8012 ASC-29320 U320 8013 ASC-29320B U320 8014 ASC-29320LP U320 8015 ASC-39320B U320 8016 ASC-39320A U320 8017 ASC-29320ALP U320 9005 0044 ASC-29320ALP PCIx U320 9005 0045 ASC-29320LPE PCIe U320 801c ASC-39320D U320 801d AIC-7902B U320 1014 02cc ServeRAID 7e 801e AIC-7901A U320 801f AIC-7902 U320 1734 1011 PRIMERGY RX300 onboard SCSI 8080 ASC-29320A U320 w/HostRAID 8081 PMC-Sierra PM8001 SAS HBA [Series 6H] 9005 0400 Adaptec SAS HBA 6405H 9005 0800 Adaptec SAS HBA 6805H 8088 PMC-Sierra PM8018 SAS HBA [Series 7H] 9005 0008 Adaptec SAS HBA 7085H 9005 0016 Adaptec SAS HBA 70165H 9005 0800 Adaptec SAS HBA 7805H 9005 1600 Adaptec SAS HBA 71605H 8089 PMC-Sierra PM8019 SAS encryption HBA [Series 7He] 808f AIC-7901 U320 w/HostRAID 1028 0168 Precision Workstation 670 Mainboard 8090 ASC-39320 U320 w/HostRAID 8091 ASC-39320D U320 w/HostRAID 8092 ASC-29320 U320 w/HostRAID 8093 ASC-29320B U320 w/HostRAID 8094 ASC-29320LP U320 w/HostRAID 8095 ASC-39320(B) U320 w/HostRAID 8096 ASC-39320A U320 w/HostRAID 8097 ASC-29320ALP U320 w/HostRAID 809c ASC-39320D(B) U320 w/HostRAID 809d AIC-7902(B) U320 w/HostRAID 1014 02cc ServeRAID 7e 809e AIC-7901A U320 w/HostRAID 809f AIC-7902 U320 w/HostRAID 907f Atronics 2015 IDE-2015PL 919a Gigapixel Corp 9412 Holtek 6565 6565 9413 Softlogic Co., Ltd. 6010 SOLO6010 MPEG-4 Video encoder/decoder 6110 SOLO6110 H.264 Video encoder/decoder 9618 JusonTech Corporation 0001 JusonTech Gigabit Ethernet Controller 9699 Omni Media Technology Inc 6565 6565 # nee Netmos Technology 9710 MosChip Semiconductor Technology Ltd. 9250 PCI-to-PCI bridge [MCS9250] 9805 PCI 1 port parallel adapter 9815 PCI 9815 Multi-I/O Controller 1000 0020 2P0S (2 port parallel adaptor) 9820 PCI 9820 Multi-I/O Controller 9835 PCI 9835 Multi-I/O Controller 1000 0002 2S (16C550 UART) 1000 0012 1P2S 9845 PCI 9845 Multi-I/O Controller # Serial ports at BAR0-3 1000 0004 0P4S (4 port 16550A serial card) 1000 0006 0P6S (6 port 16550a serial card) # Serial ports at BAR0-3, Parallel port at BAR4 1000 0014 1P4S (1 Parallel / 4 16550A Serial Port Adapter) 9855 PCI 9855 Multi-I/O Controller # Parallel port at BAR0. Serial ports at BAR2-5 1000 0014 1P4S # Parallel ports at BAR0,BAR2. Serial ports at BAR4-5 1000 0022 2P2S (2 Parallel / 2 16550A Serial Port Adapter) 9865 PCI 9865 Multi-I/O Controller 9900 MCS9900 Multi-I/O Controller 9901 PCIe 9901 Multi-I/O Controller 9904 4-Port PCIe Serial Adapter # 2-port Serial 1-port Parallel Adaptor 9912 PCIe 9912 Multi-I/O Controller 9922 MCS9922 PCIe Multi-I/O Controller 9990 MCS9990 PCIe to 4-Port USB 2.0 Host Controller # Subsystem ID on a 3c985B-SX network card 9850 3Com (wrong ID) 9902 Stargen Inc. 0001 SG2010 PCI over Starfabric Bridge 0002 SG2010 PCI to Starfabric Gateway 0003 SG1010 Starfabric Switch and PCI Bridge 9a11 Tiger Lake-H Gaussian & Neural Accelerator 9d32 Beijing Starblaze Technology Co. Ltd. 0000 STAR1000 PCIe NVMe SSD Controller 1000 STAR1000 PCIe NVMe SSD Controller 1001 STAR1000P PCIe NVMe SSD Controller 1201 STAR1200C NVMe SSD 1202 STAR1200I NVMe SSD 1203 STAR1200L NVMe SSD 1204 STAR1200E NVMe SSD 1500 STAR1500 PCIe NVMe SSD Controller 1501 STAR1500C NVMe SSD 1502 STAR1500E NVMe SSD 1504 STAR1500L NVMe SSD 2000 STAR2000 NVMe Controller 2001 STAR2000E NVMe SSD 2002 STAR2000C NVMe SSD 2003 STAR2000L NVMe SSD 2004 EAST 2000K SSD 2008 STAR2008 PCIE NVMe SSD Controller 2010 STAR2010 PCIE NVMe Secure SSD Controller bb5b Asgard AN3+ NVMe SSD fc22 Asgard AN3+ NVMe SSD a000 Asix Electronics Corporation (Wrong ID) a0a0 AOPEN Inc. a0f1 UNISYS Corporation a200 NEC Corporation a259 Hewlett Packard a25b Hewlett Packard GmbH PL24-MKT a304 Sony a727 3Com Corporation 0013 3CRPAG175 Wireless PC Card 6803 3CRDAG675B Wireless 11a/b/g Adapter aa00 iTuner aa01 iTuner aa02 iTuner aa03 iTuner aa04 iTuner aa05 iTuner aa06 iTuner aa07 iTuner aa08 iTuner aa09 iTuner aa0a iTuner aa0b iTuner aa0c iTuner aa0d iTuner aa0e iTuner aa0f iTuner aa42 Scitex Digital Video aa55 Ncomputing X300 PCI-Engine aaaa Adnaco Technology Inc. 0001 H1 PCIe over fiber optic host controller 0002 R1BP1 PCIe over fiber optic expansion chassis abcd Vadatech Inc. ac1e Digital Receiver Technology Inc ac3d Actuality Systems ad00 Alta Data Technologies LLC aecb Adrienne Electronics Corporation 6250 VITC/LTC Timecode Reader card [PCI-VLTC/RDR] affe Sirrix AG security technologies 01e1 PCI1E1 1-port ISDN E1 interface 02e1 PCI2E1 2-port ISDN E1 interface 450e PCI4S0EC 4-port ISDN S0 interface dead Sirrix.PCI4S0 4-port ISDN S0 interface b100 OpenVox Communication Co. Ltd. # Not registered officially b10b Uakron PCI Project b1b3 Shiva Europe Limited b1d9 ATCOM Technology co., LTD. # Pinnacle should be 11bd, but they got it wrong several times --mj bd11 Pinnacle Systems, Inc. (Wrong ID) bdbd Blackmagic Design a106 Multibridge Extreme a117 Intensity Pro a11a DeckLink HD Extreme 2 a11b DeckLink SDI/Duo/Quad a11c DeckLink HD Extreme 3 a11d DeckLink Studio a11e DeckLink Optical Fibre a120 Decklink Studio 2 a121 DeckLink HD Extreme 3D/3D+ a124 Intensity Extreme a126 Intensity Shuttle a127 UltraStudio Express a129 UltraStudio Mini Recorder a12a UltraStudio Mini Monitor a12d UltraStudio 4K a12e DeckLink 4K Extreme a12f DeckLink Mini Monitor a130 DeckLink Mini Recorder a132 UltraStudio 4K a136 DeckLink 4K Extreme 12G a137 DeckLink Studio 4K a138 Decklink SDI 4K a139 Intensity Pro 4K a13b DeckLink Micro Recorder a13d DeckLink 4K Pro a13e UltraStudio 4K Extreme a13f DeckLink Quad 2 a140 DeckLink Duo 2 a141 UltraStudio 4K Extreme 3 a142 UltraStudio HD Mini a143 DeckLink Mini Recorder 4K a144 DeckLink Mini Monitor 4K a148 DeckLink SDI Micro a14b DeckLink 8K Pro a14e DeckLink Quad HDMI Recorder a1ff eGPU RX580 c001 TSI Telsys c0a9 Micron/Crucial Technology 2263 P1 NVMe PCIe SSD[Frampton] 5403 P1 NVMe PCIe SSD[Frampton2] 5407 P5 Plus NVMe PCIe SSD 540a P2 [Nick P2] / P3 / P3 Plus NVMe PCIe SSD (DRAM-less) 5412 P5 NVMe PCIe SSD[SlashP5] 5415 T500 NVMe PCIe SSD 5419 T700 NVMe PCIe SSD 5421 P3 Plus NVMe PCIe SSD (DRAM-less) 542b T705 NVMe PCIe SSD c0de Motorola c0fe Motion Engineering, Inc. ca01 I-TEK OptoElectronics Co., LTD. 0212 Vulcan-CL CameraLink Frame Grabber ca02 I-TEK OptoElectronics Co., LTD. 0213 Vulcan-CXP Frame Grabber ca3b Cambrionix Ltd. ca50 Varian Australia Pty Ltd cace CACE Technologies, Inc. 0001 TurboCap Port A 0002 TurboCap Port B 0023 AirPcap N caed Canny Edge # nee Chrysalis-ITS cafe Thales 0003 Luna K3 Hardware Security Module 0006 Luna PCI-e 3000 Hardware Security Module 0007 Luna K6 Hardware Security Module 0008 Luna K7 Hardware Security Module cc53 ScaleFlux Inc. 0001 CSS 1000 0010 CSD 3310 cccc Catapult Communications ccec Curtiss-Wright Controls Embedded Computing cddd Tyzx, Inc. 0101 DeepSea 1 High Speed Stereo Vision Frame Grabber 0200 DeepSea 2 High Speed Stereo Vision Frame Grabber cdfa NextSilicon Ltd 0007 Maverick ceba KEBA AG cf86 Spectrum-4TOR 0276 Spectrum-4TOR in Flash Recovery Mode d063 SolidRun 1000 SolidNET DPU 1500 Emulated NVMe d161 Digium, Inc. 0120 Wildcard TE120P single-span T1/E1/J1 card 0205 Wildcard TE205P/TE207P dual-span T1/E1/J1 card 5.0V 0210 Wildcard TE210P/TE212P dual-span T1/E1/J1 card 3.3V 0220 Wildcard TE220 dual-span T1/E1/J1 card 3.3V (PCI-Express) 0405 Wildcard TE405P/TE407P quad-span T1/E1/J1 card 5.0V 0410 Wildcard TE410P/TE412P quad-span T1/E1/J1 card 3.3V 0420 Wildcard TE420P quad-span T1/E1/J1 card 3.3V (PCI-Express) 0800 Wildcard TDM800P 8-port analog card 1205 Wildcard TE205P/TE207P dual-span T1/E1/J1 card 5.0V (u1) 1220 Wildcard TE220 dual-span T1/E1/J1 card 3.3V (PCI-Express) (5th gen) 1405 Wildcard TE405P/TE407P quad-span T1/E1/J1 card 5.0V (u1) 1410 Wildcard TE410P quad-span T1/E1/J1 card 3.3V (5th Gen) 1420 Wildcard TE420 quad-span T1/E1/J1 card 3.3V (PCI-Express) (5th gen) 1820 Wildcard TE820 octal-span T1/E1/J1 card 3.3V (PCI-Express) 2400 Wildcard TDM2400P 24-port analog card 3400 Wildcard TC400P transcoder base card 8000 Wildcard TE121 single-span T1/E1/J1 card (PCI-Express) 8001 Wildcard TE122 single-span T1/E1/J1 card 8002 Wildcard AEX800 8-port analog card (PCI-Express) 8003 Wildcard AEX2400 24-port analog card (PCI-Express) 8004 Wildcard TCE400P transcoder base card 8005 Wildcard TDM410 4-port analog card 8006 Wildcard AEX410 4-port analog card (PCI-Express) 8007 Hx8 Series 8-port Base Card 8008 Hx8 Series 8-port Base Card (PCI-Express) 800a Wildcard TE133 single-span T1/E1/J1 card (PCI Express) 800b Wildcard TE134 single-span T1/E1/J1 card 800c Wildcard A8A 8-port analog card 800d Wildcard A8B 8-port analog card (PCI-Express) 800e Wildcard TE235/TE435 quad-span T1/E1/J1 card (PCI-Express) 800f Wildcard A4A 4-port analog card 8010 Wildcard A4B 4-port analog card (PCI-Express) 8013 Wildcard TE236/TE436 quad-span T1/E1/J1 card b410 Wildcard B410 quad-BRI card d209 Ultimarc 1500 PAC Drive 15a2 SpinTrak 1601 AimTrak d20c Chengdu BeiZhongWangXin Technology Co., Ltd. 5010 NE5000 Ethernet Controller 5011 NE5000 Ethernet Controller d20c e120 N5 Series 2-port 10GbE Network Adapter d20c e140 N5 Series 4-port 10GbE Network Adapter d20c e220 N5 Series 2-port 25GbE Network Adapter d20c e221 N5S Series 2-port 25GbE Network Adapter d20c e22c N5 Series 2-port 25GbE Network Adapter for OCP d20c e22d N5S Series 2-port 25GbE Network Adapter for OCP 6010 NE6000 Ethernet Controller 6011 NE6000 Ethernet Controller d20c a001 N6S Series Network Adapter d20c a141 N6S Series 4-port 10GbE Network Adapter d20c a221 N6S Series 2-port 25GbE Network Adapter d20c a241 N6S Series 4-port 25GbE Network Adapter d20c a421 N6S Series 2-port 40GbE Network Adapter d20c aa21 N6S Series 2-port 100GbE Network Adapter d20c d221 N6S Series 2-port 25GbE Network Adapter with DPI d20c da21 N6S Series 2-port 100GbE Network Adapter with DPI d20c e221 N6S Series 2-port 25GbE Network Adapter d20c e281 N6S Series 8-port 25GbE Network Adapter d20c e421 N6S Series 2-port 40GbE Network Adapter d20c ea20 N6 Series 2-port 100GbE Network Adapter d20c ea21 N6S Series 2-port 100GbE Network Adapter d20c ea2c N6 Series 2-port 100GbE Network Adapter for OCP d20c ea2d N6S Series 2-port 100GbE Network Adapter for OCP d4d4 Dy4 Systems Inc 0601 PCI Mezzanine Card d531 I+ME ACTIA GmbH d84d Exsys dada Datapath Limited 0133 VisionRGB-X2 0139 VisionRGB-E1 0144 VisionSD8 0150 VisionRGB-E2 0151 VisionSD4+1 0159 VisionAV 0161 DGC161 0165 DGC165 0167 DGC167 0168 DGC168 1139 VisionRGB-E1S 1150 VisionRGB-E2S 1151 VisionSD4+1S 1153 VisionDVI-DL 1154 VisionSDI2 db10 Diablo Technologies dc93 Dawicontrol GmbH dcba Dynamic Engineering 0046 PCIe Altera Cyclone IV # VPX format Receiver Controller Board 0047 VPX-RCB # PMC Format FPGA design with 8 high speed UART channels 0048 PMC-Biserial-III-BAE9 004e PC104p-Biserial-III-NVY5 004f PC104p-Biserial-III-NVY6 0052 PCIeBiSerialDb37 BA22 LVDS IO # 8 port 16550 compatible UART, PMC format, RS-232 IO, RTS, CTS, DTR, DSR supported 0066 PMC-OctalUART-232 dd01 Digital Devices GmbH 0003 Octopus DVB Adapter dd01 0001 Octopus DVB adapter dd01 0002 Octopus LE DVB adapter dd01 0003 Octopus OEM dd01 0004 Octopus V3 DVB adapter dd01 0010 Octopus Mini dd01 0020 Cine S2 V6 DVB adapter dd01 0021 Cine S2 V6.5 DVB adapter dd01 0030 Cine CT V6.1 DVB adapter dd01 db03 Mystique SaTiX-S2 V3 DVB adapter 0006 Cine V7 0007 Max dd01 0023 Max S8 4/8 0011 Octopus CI DVB Adapter dd01 0040 Octopus CI dd01 0041 Octopus CI Single 0201 Resi DVB-C Modulator dd01 0001 Resi DVB-C Modulator dead Indigita Corporation deaf Middle Digital Inc. 9050 PC Weasel Virtual VGA 9051 PC Weasel Serial Port 9052 PC Weasel Watchdog Timer # formerly SoftHard Technology Ltd. deda XIMEA 4001 CB or MX camera 4021 MT camera e000 Winbond e000 W89C940 e159 Tiger Jet Network Inc. / ICP DAS 0001 Tiger3XX Modem/ISDN interface 0059 0001 128k ISDN-S/T Adapter 0059 0003 128k ISDN-U Adapter 00a7 0001 TELES.S0/PCI 2.x ISDN Adapter 8086 0003 Digium X100P/X101P analogue PSTN FXO interface b100 0003 OpenVox A400P 4-port analog card b1d9 0003 AX400P 4-port analog card 0002 Tiger100APC ISDN chipset e1c5 Elcus e4bf EKF Elektronik GmbH 0ccd CCD-CALYPSO 0cd1 CD1-OPERA 0cd2 CD2-BEBOP 0cd3 CD3-JIVE 50c1 PC1-GROOVE 50c2 PC2-LIMBO 53c1 SC1-ALLEGRO cc47 CCG-RUMBA cc4d CCM-BOOGIE e4e4 Xorcom e55e Essence Technology, Inc. ea01 Eagle Technology 000a PCI-773 Temperature Card 0032 PCI-730 & PC104P-30 Card 003e PCI-762 Opto-Isolator Card 0041 PCI-763 Reed Relay Card 0043 PCI-769 Opto-Isolator Reed Relay Combo Card 0046 PCI-766 Analog Output Card 0052 PCI-703 Analog I/O Card 0800 PCI-800 Digital I/O Card ea50 Emerson Automation Solutions # The main chip of all these devices is by Xilinx -> It could also be a Xilinx ID. ea60 RME 9896 Digi32 9897 Digi32 Pro 9898 Digi32/8 eabb Aashima Technology B.V. eace Endace Measurement Systems, Ltd 3100 DAG 3.10 OC-3/OC-12 3200 DAG 3.2x OC-3/OC-12 320e DAG 3.2E Fast Ethernet 340e DAG 3.4E Fast Ethernet 341e DAG 3.41E Fast Ethernet 3500 DAG 3.5 OC-3/OC-12 351c DAG 3.5ECM Fast Ethernet 360d DAG 3.6D DS3 360e DAG 3.6E Fast Ethernet 368e DAG 3.6E Gig Ethernet 3707 DAG 3.7T T1/E1/J1 370d DAG 3.7D DS3/E3 378e DAG 3.7G Gig Ethernet 3800 DAG 3.8S OC-3/OC-12 4100 DAG 4.10 OC-48 4110 DAG 4.11 OC-48 4220 DAG 4.2 OC-48 422e DAG 4.2GE Gig Ethernet 4230 DAG 4.2S OC-48 423e DAG 4.2GE Gig Ethernet 4300 DAG 4.3S OC-48 430e DAG 4.3GE Gig Ethernet 452e DAG 4.5G2 Gig Ethernet 454e DAG 4.5G4 Gig Ethernet 45b8 DAG 4.5Z8 Gig Ethernet 45be DAG 4.5Z2 Gig Ethernet 520e DAG 5.2X 10G Ethernet 521a DAG 5.2SXA 10G Ethernet/OC-192 5400 DAG 5.4S-12 OC-3/OC-12 5401 DAG 5.4SG-48 Gig Ethernet/OC-3/OC-12/OC-48 540a DAG 5.4GA Gig Ethernet 541a DAG 5.4SA-12 OC-3/OC-12 542a DAG 5.4SGA-48 Gig Ethernet/OC-3/OC-12/OC-48 6000 DAG 6.0SE 10G Ethernet/OC-192 6100 DAG 6.1SE 10G Ethernet/OC-192 6200 DAG 6.2SE 10G Ethernet/OC-192 7100 DAG 7.1S OC-3/OC-12 7400 DAG 7.4S OC-3/OC-12 7401 DAG 7.4S48 OC-48 752e DAG 7.5G2 Gig Ethernet 754e DAG 7.5G4 Gig Ethernet 8100 DAG 8.1X 10G Ethernet 8101 DAG 8.1SX 10G Ethernet/OC-192 8102 DAG 8.1X 10G Ethernet 820e DAG 8.2X 10G Ethernet 820f DAG 8.2X 10G Ethernet (2nd bus) 8400 DAG 8.4I Infiniband x4 SDR 8500 DAG 8.5I Infiniband x4 DDR 9200 DAG 9.2SX2 10G Ethernet 920e DAG 9.2X2 10G Ethernet 9540 DAG 9.5G4 Gig Ethernet 954f DAG 9.5G4F Gig Ethernet a120 DAG 10X2-P 10G Ethernet a12e DAG 10X2-S 10G Ethernet a140 DAG 10X4-P 10/40G Ethernet a14e DAG 10X4-S 10/40G Ethernet eace vDAG virtual device ec80 Belkin Corporation ec00 F5D6000 ecc0 Echo Digital Audio Corporation edd8 ARK Logic Inc a091 1000PV [Stingray] a099 2000PV [Stingray] a0a1 2000MT a0a9 2000MI # Found on M2N68-AM Motherboard f043 ASUSTeK Computer Inc. (Wrong ID) f05b Foxconn International, Inc. (Wrong ID) f111 Framework Computer Inc. f117 Cerio 1000 Emulated PCIe Switch 1010 Placeholder Device 1020 Pseudo-Device 1030 Test Device f15e SiFive, Inc. 0000 FU740-C000 RISC-V SoC PCI Express x8 to AXI4 Bridge f1d0 AJA Video c0fe Xena HS/HD-R c0ff Kona/Xena 2 cafe Kona SD cfee Xena LS/SD-22-DA/SD-DA dafe Corvid 1 daff KONA LHi db00 IoExpress db01 Corvid22 db02 Kona 3G db03 Corvid 3G db04 Kona 3G QUAD db05 Kona LHe+ db06 IoXT db07 Kona 3G P2P db08 Kona 3G QUAD P2P db09 Corvid 24 db11 T-Tap dcaf Kona HD dfee Xena HD-DA eb07 Io4K eb0a Io4K UFC eb0b Kona 4 eb0c Kona 4 UFC eb0d Corvid 88 eb0e Corvid 44 eb16 Corvid HEVC 10cf 1049 Corvid HEVC M31 eb18 Corvid HB-R eb1a Kona IP 1SFP eb1c Kona IP 2SFP eb1d Io4KPlus eb1e IoIP eb1f Kona 5 eb23 Kona 1 eb24 Kona HDMI eb25 Corvid 44 12g eb26 T-Tap Pro eb27 IoX3 efac Xena SD-MM/SD-22-MM facd Xena HD-MM f5f5 F5 Networks, Inc. # Subsystem ID for PATA controller on nForce motherboard f849 ASRock Incorporation (Wrong ID) fa57 Interagon AS 0001 PMC [Pattern Matching Chip] fab7 Fabric7 Systems, Inc. fe19 TenaFe, Inc. 0001 TC2200/TC2201 NVMe Controller (DRAM-less) febd Ultraview Corp. # Nee Epigram feda Broadcom Inc a0fa BCM4210 iLine10 HomePNA 2.0 a10e BCM4230 iLine10 HomePNA 2.0 fede Fedetec Inc. 0003 TABIC PCI v3 ffe1 Suzhou XiongLi Technology Inc. d200 XL82101/82102 PCI Express Gigabit Ethernet Controller fffd XenSource, Inc. 0101 PCI Event Channel Controller # Used in some old VMWare products before they got a real ID assigned fffe VMWare Inc (temporary ID) 0710 Virtual SVGA ffff Illegal Vendor ID # List of known device classes, subclasses and programming interfaces # Syntax: # C class class_name # subclass subclass_name <-- single tab # prog-if prog-if_name <-- two tabs C 00 Unclassified device 00 Non-VGA unclassified device 01 VGA compatible unclassified device 05 Image coprocessor C 01 Mass storage controller 00 SCSI storage controller 01 IDE interface 00 ISA Compatibility mode-only controller 05 PCI native mode-only controller 0a ISA Compatibility mode controller, supports both channels switched to PCI native mode 0f PCI native mode controller, supports both channels switched to ISA compatibility mode 80 ISA Compatibility mode-only controller, supports bus mastering 85 PCI native mode-only controller, supports bus mastering 8a ISA Compatibility mode controller, supports both channels switched to PCI native mode, supports bus mastering 8f PCI native mode controller, supports both channels switched to ISA compatibility mode, supports bus mastering 02 Floppy disk controller 03 IPI bus controller 04 RAID bus controller 05 ATA controller 20 ADMA single stepping 30 ADMA continuous operation 06 SATA controller 00 Vendor specific 01 AHCI 1.0 02 Serial Storage Bus 07 Serial Attached SCSI controller 01 Serial Storage Bus 08 Non-Volatile memory controller 01 NVMHCI 02 NVM Express 09 Universal Flash Storage controller 00 Vendor specific 01 UFSHCI 80 Mass storage controller C 02 Network controller 00 Ethernet controller 01 Token ring network controller 02 FDDI network controller 03 ATM network controller 04 ISDN controller 05 WorldFip controller 06 PICMG controller 07 Infiniband controller 08 Fabric controller 80 Network controller C 03 Display controller 00 VGA compatible controller 00 VGA controller 01 8514 controller 01 XGA compatible controller 02 3D controller 80 Display controller C 04 Multimedia controller 00 Multimedia video controller 01 Multimedia audio controller 02 Computer telephony device 03 Audio device 80 Multimedia controller C 05 Memory controller 00 RAM memory 01 FLASH memory 02 CXL 00 CXL Memory Device - vendor specific 10 CXL Memory Device (CXL 2.x) 80 Memory controller C 06 Bridge 00 Host bridge 01 ISA bridge 02 EISA bridge 03 MicroChannel bridge 04 PCI bridge 00 Normal decode 01 Subtractive decode 05 PCMCIA bridge 06 NuBus bridge 07 CardBus bridge 08 RACEway bridge 00 Transparent mode 01 Endpoint mode 09 Semi-transparent PCI-to-PCI bridge 40 Primary bus towards host CPU 80 Secondary bus towards host CPU 0a InfiniBand to PCI host bridge 80 Bridge C 07 Communication controller 00 Serial controller 00 8250 01 16450 02 16550 03 16650 04 16750 05 16850 06 16950 01 Parallel controller 00 SPP 01 BiDir 02 ECP 03 IEEE1284 fe IEEE1284 Target 02 Multiport serial controller 03 Modem 00 Generic 01 Hayes/16450 02 Hayes/16550 03 Hayes/16650 04 Hayes/16750 04 GPIB controller 05 Smard Card controller 80 Communication controller C 08 Generic system peripheral 00 PIC 00 8259 01 ISA PIC 02 EISA PIC 10 IO-APIC 20 IO(X)-APIC 01 DMA controller 00 8237 01 ISA DMA 02 EISA DMA 02 Timer 00 8254 01 ISA Timer 02 EISA Timers 03 HPET 03 RTC 00 Generic 01 ISA RTC 04 PCI Hot-plug controller 05 SD Host controller 06 IOMMU 80 System peripheral 99 Timing Card # PTP Grandmaster Source Clock 01 TAP Timing Card C 09 Input device controller 00 Keyboard controller 01 Digitizer Pen 02 Mouse controller 03 Scanner controller 04 Gameport controller 00 Generic 10 Extended 80 Input device controller C 0a Docking station 00 Generic Docking Station 80 Docking Station C 0b Processor 00 386 01 486 02 Pentium 10 Alpha 20 Power PC 30 MIPS 40 Co-processor C 0c Serial bus controller 00 FireWire (IEEE 1394) 00 Generic 10 OHCI 01 ACCESS Bus 02 SSA 03 USB controller 00 UHCI 10 OHCI 20 EHCI 30 XHCI 40 USB4 Host Interface 80 Unspecified fe USB Device 04 Fibre Channel 05 SMBus 06 InfiniBand 07 IPMI Interface 00 SMIC 01 KCS 02 BT (Block Transfer) 08 SERCOS interface 09 CANBUS 80 Serial bus controller C 0d Wireless controller 00 IRDA controller 01 Consumer IR controller 10 RF controller 11 Bluetooth 12 Broadband 20 802.1a controller 21 802.1b controller 80 Wireless controller C 0e Intelligent controller 00 I2O C 0f Satellite communications controller 01 Satellite TV controller 02 Satellite audio communication controller 03 Satellite voice communication controller 04 Satellite data communication controller C 10 Encryption controller 00 Network and computing encryption device 10 Entertainment encryption device 80 Encryption controller C 11 Signal processing controller 00 DPIO module 01 Performance counters 10 Communication synchronizer 20 Signal processing management 80 Signal processing controller C 12 Processing accelerators 00 Processing accelerators 01 SNIA Smart Data Accelerator Interface (SDXI) controller C 13 Non-Essential Instrumentation C 40 Coprocessor C ff Unassigned class hardinfo2-hardinfo2-1331e88/data/pci.ids.min000066400000000000000000000116561474767047500205230ustar00rootroot00000000000000 # A minumum version of the pci.ids # from https://pci-ids.ucw.cz/ ffff Illegal Vendor ID # List of known device classes, subclasses and programming interfaces # Syntax: # C class class_name # subclass subclass_name <-- single tab # prog-if prog-if_name <-- two tabs C 00 Unclassified device 00 Non-VGA unclassified device 01 VGA compatible unclassified device C 01 Mass storage controller 00 SCSI storage controller 01 IDE interface 00 ISA Compatibility mode-only controller 05 PCI native mode-only controller 0a ISA Compatibility mode controller, supports both channels switched to PCI native mode 0f PCI native mode controller, supports both channels switched to ISA compatibility mode 80 ISA Compatibility mode-only controller, supports bus mastering 85 PCI native mode-only controller, supports bus mastering 8a ISA Compatibility mode controller, supports both channels switched to PCI native mode, supports bus mastering 8f PCI native mode controller, supports both channels switched to ISA compatibility mode, supports bus mastering 02 Floppy disk controller 03 IPI bus controller 04 RAID bus controller 05 ATA controller 20 ADMA single stepping 30 ADMA continuous operation 06 SATA controller 00 Vendor specific 01 AHCI 1.0 02 Serial Storage Bus 07 Serial Attached SCSI controller 01 Serial Storage Bus 08 Non-Volatile memory controller 01 NVMHCI 02 NVM Express 80 Mass storage controller C 02 Network controller 00 Ethernet controller 01 Token ring network controller 02 FDDI network controller 03 ATM network controller 04 ISDN controller 05 WorldFip controller 06 PICMG controller 07 Infiniband controller 08 Fabric controller 80 Network controller C 03 Display controller 00 VGA compatible controller 00 VGA controller 01 8514 controller 01 XGA compatible controller 02 3D controller 80 Display controller C 04 Multimedia controller 00 Multimedia video controller 01 Multimedia audio controller 02 Computer telephony device 03 Audio device 80 Multimedia controller C 05 Memory controller 00 RAM memory 01 FLASH memory 80 Memory controller C 06 Bridge 00 Host bridge 01 ISA bridge 02 EISA bridge 03 MicroChannel bridge 04 PCI bridge 00 Normal decode 01 Subtractive decode 05 PCMCIA bridge 06 NuBus bridge 07 CardBus bridge 08 RACEway bridge 00 Transparent mode 01 Endpoint mode 09 Semi-transparent PCI-to-PCI bridge 40 Primary bus towards host CPU 80 Secondary bus towards host CPU 0a InfiniBand to PCI host bridge 80 Bridge C 07 Communication controller 00 Serial controller 00 8250 01 16450 02 16550 03 16650 04 16750 05 16850 06 16950 01 Parallel controller 00 SPP 01 BiDir 02 ECP 03 IEEE1284 fe IEEE1284 Target 02 Multiport serial controller 03 Modem 00 Generic 01 Hayes/16450 02 Hayes/16550 03 Hayes/16650 04 Hayes/16750 04 GPIB controller 05 Smard Card controller 80 Communication controller C 08 Generic system peripheral 00 PIC 00 8259 01 ISA PIC 02 EISA PIC 10 IO-APIC 20 IO(X)-APIC 01 DMA controller 00 8237 01 ISA DMA 02 EISA DMA 02 Timer 00 8254 01 ISA Timer 02 EISA Timers 03 HPET 03 RTC 00 Generic 01 ISA RTC 04 PCI Hot-plug controller 05 SD Host controller 06 IOMMU 80 System peripheral C 09 Input device controller 00 Keyboard controller 01 Digitizer Pen 02 Mouse controller 03 Scanner controller 04 Gameport controller 00 Generic 10 Extended 80 Input device controller C 0a Docking station 00 Generic Docking Station 80 Docking Station C 0b Processor 00 386 01 486 02 Pentium 10 Alpha 20 Power PC 30 MIPS 40 Co-processor C 0c Serial bus controller 00 FireWire (IEEE 1394) 00 Generic 10 OHCI 01 ACCESS Bus 02 SSA 03 USB controller 00 UHCI 10 OHCI 20 EHCI 30 XHCI 80 Unspecified fe USB Device 04 Fibre Channel 05 SMBus 06 InfiniBand 07 IPMI Interface 00 SMIC 01 KCS 02 BT (Block Transfer) 08 SERCOS interface 09 CANBUS C 0d Wireless controller 00 IRDA controller 01 Consumer IR controller 10 RF controller 11 Bluetooth 12 Broadband 20 802.1a controller 21 802.1b controller 80 Wireless controller C 0e Intelligent controller 00 I2O C 0f Satellite communications controller 01 Satellite TV controller 02 Satellite audio communication controller 03 Satellite voice communication controller 04 Satellite data communication controller C 10 Encryption controller 00 Network and computing encryption device 10 Entertainment encryption device 80 Encryption controller C 11 Signal processing controller 00 DPIO module 01 Performance counters 10 Communication synchronizer 20 Signal processing management 80 Signal processing controller C 12 Processing accelerators 00 Processing accelerators C 13 Non-Essential Instrumentation C 40 Coprocessor C ff Unassigned class hardinfo2-hardinfo2-1331e88/data/sdcard.ids000066400000000000000000000020771474767047500204230ustar00rootroot00000000000000# # https://github.com/bp0/verbose-spork/blob/master/data/sdcard.ids # # # List of known/observed SD card manfid's # # Syntax: # MANFID id manufacturer_name(s) MANFID 000001 Panasonic MANFID 000002 Toshiba MANFID 000003 SanDisk MANFID 00001b Samsung MANFID 00001d ADATA MANFID 000027 Phison MANFID 000028 Lexar MANFID 000031 Silicon Power MANFID 000041 Kingston MANFID 000074 Transcend Information MANFID 000076 Patriot Memory MANFID 000082 Sony MANFID 00009c Angelbird / Hoodman # # List of known/observed SD card oemid's # # Syntax: # OEMID id vendor_name(s) # # The id is normally composed of two ascii # characters read as a big-endian 16-bit # value. OEMID 3432 Kingston # "42" OEMID 4144 ADATA # "AD" OEMID 4245 Lexar / Angelbird / Hoodman # "BE" OEMID 4a45 Transcend Information # "JE" OEMID 4a54 Sony # "JT" OEMID 4a60 Transcend Information # "J`" OEMID 5041 Panasonic # "PA" OEMID 5048 Phison # "PH" OEMID 5054 SanDisk # "PT" OEMID 5344 SanDisk # "SD" OEMID 534d Samsung # "SM" OEMID 534f Angelbird / Hoodman # "SO" OEMID 5350 Silicon Power # "SP" OEMID 544d Toshiba # "TM" hardinfo2-hardinfo2-1331e88/data/usb.ids000066400000000000000000026171671474767047500177720ustar00rootroot00000000000000# # List of USB ID's # # Maintained by Stephen J. Gowdy # If you have any new entries, please submit them via # http://www.linux-usb.org/usb-ids.html # or send entries as patches (diff -u old new) in the # body of your email (a bot will attempt to deal with it). # The latest version can be obtained from # http://www.linux-usb.org/usb.ids # # Version: 2024.07.04 # Date: 2024-07-04 20:34:02 # # Vendors, devices and interfaces. Please keep sorted. # Syntax: # vendor vendor_name # device device_name <-- single tab # interface interface_name <-- two tabs 0001 Fry's Electronics 7778 Counterfeit flash drive [Kingston] 0002 Ingram 0002 passport00 7007 HPRT XT300 0003 Club Mac 0004 Nebraska Furniture Mart 0011 Unknown 7788 counterfeit flash drive 001f Walmart 0b21 AB13X Headset Adapter 0040 Anyware Corporation 073d Mini Multimedia 2.4GHz Wireless Keyboard with Touch Pad 0042 DMT 0053 Planex 5301 GW-US54ZGL 802.11bg 0078 Microntek 0006 Joystick 0079 DragonRise Inc. 0006 PC TWIN SHOCK Gamepad 0011 Gamepad 1800 Mayflash Wii U Pro Game Controller Adapter [DirectInput] 181b Venom Arcade Joystick 1843 Mayflash GameCube Controller Adapter 1844 Mayflash GameCube Controller 0080 Unknown a001 JMS578 based SATA bridge 0085 Boeye Technology Co., Ltd. 0600 eBook Reader 0102 miniSTREAK 0105 Trust International B.V. 145f NW-3100 802.11b/g 54Mbps Wireless Network Adapter [zd1211] 0127 IBP 0002 HDM Interface 0127 ibp 0145 Unknown 0112 Card Reader 017c MLK 145f Trust Deskset 0200 TP-Link 0201 MA180 UMTS Modem 0204 Chipsbank Microelectronics Co., Ltd 6025 CBM2080 / CBM2090 Flash drive controller 6026 CBM1180 Flash drive controller 0218 Hangzhou Worlde 0301 MIDI Port 0231 Sonuus Limited 02ad HUMAX Co., Ltd. 138c PVR Mass Storage 0303 Mini Automation Controller 0324 OCZ Technology Inc bc06 OCZ ATV USB 2.0 Flash Drive bc08 OCZ Rally2/ATV USB 2.0 Flash Drive 0325 OCZ Technology Inc ac02 ATV Turbo / Rally2 Dual Channel USB 2.0 Flash Drive 0386 LTS 0001 PSX for USB Converter 03c3 ZWO 120e ASI120MC-S Planetary Camera 1f10 EFF 294f ASI294MC Pro 03d9 Shenzhen Sinote Tech-Electron Co., Ltd 0499 SE340D PC Remote Control 03da Bernd Walter Computer Technology 0002 HD44780 LCD interface 03e7 Intel 2150 Myriad VPU [Movidius Neural Compute Stick] 2485 Movidius MyriadX f63b Myriad VPU [Movidius Neural Compute Stick] 03e8 EndPoints, Inc. 0004 SE401 Webcam 0008 101 Ethernet [klsi] 0015 ATAPI Enclosure 2123 SiPix StyleCam Deluxe 8004 Aox 99001 03e9 Thesys Microelectronics 03ea Data Broadcasting Corp. 03eb Atmel Corp. 0902 4-Port Hub 2002 Mass Storage Device 2015 at90usbkey sample firmware (HID keyboard) 2018 at90usbkey sample firmware (CDC ACM) 2019 stk525 sample firmware (microphone) 201c at90usbkey sample firmware (HID mouse) 201d at90usbkey sample firmware (HID generic) 2022 at90usbkey sample firmware (composite device) 2040 LUFA Test PID 2041 LUFA Mouse Demo Application 2042 LUFA Keyboard Demo Application 2043 LUFA Joystick Demo Application 2044 LUFA CDC Demo Application 2045 LUFA Mass Storage Demo Application 2046 LUFA Audio Output Demo Application 2047 LUFA Audio Input Demo Application 2048 LUFA MIDI Demo Application 2049 Stripe Snoop Magnetic Stripe Reader 204a LUFA CDC Class Bootloader 204b LUFA USB to Serial Adapter Project 204c LUFA RNDIS Demo Application 204d LUFA Combined Mouse and Keyboard Demo Application 204e LUFA Dual CDC Demo Application 204f LUFA Generic HID Demo Application 2060 Benito Programmer Project 2061 LUFA Combined Mass Storage and Keyboard Demo Application 2062 LUFA Combined CDC and Mouse Demo Application 2063 LUFA Datalogger Device 2064 Interfaceless Control-Only LUFA Devices 2065 LUFA Test and Measurement Demo Application 2066 LUFA Multiple Report HID Demo 2067 LUFA HID Class Bootloader 2068 LUFA Virtual Serial/Mass Storage Demo 2069 LUFA Webserver Project 2103 JTAG ICE mkII 2104 AVR ISP mkII 2105 AVRONE! 2106 STK600 development board 2107 AVR Dragon 2109 STK541 ZigBee Development Board 210a AT86RF230 [RZUSBSTICK] transceiver 210d XPLAIN evaluation kit (CDC ACM) 2110 AVR JTAGICE3 Debugger and Programmer 2111 Xplained Pro board debugger and programmer 2122 XMEGA-A1 Explained evaluation kit 2140 AVR JTAGICE3 (v3.x) Debugger and Programmer 2141 ICE debugger 2145 ATMEGA328P-XMINI (CDC ACM) 2310 EVK11xx evaluation board 2404 The Micro 2fe4 ATxmega32A4U DFU bootloader 2fe6 Cactus V6 (DFU) 2fea Cactus RF60 (DFU) 2fee atmega8u2 DFU bootloader 2fef atmega16u2 DFU bootloader 2ff0 atmega32u2 DFU bootloader 2ff1 at32uc3a3 DFU bootloader 2ff3 atmega16u4 DFU bootloader 2ff4 atmega32u4 DFU bootloader 2ff6 at32uc3b0/1 DFU bootloader 2ff7 at90usb82 DFU bootloader 2ff8 at32uc3a0/1 DFU bootloader 2ff9 at90usb646/647 DFU bootloader 2ffa at90usb162 DFU bootloader 2ffb at90usb AVR DFU bootloader 2ffd at89c5130/c5131 DFU bootloader 2fff at89c5132/c51snd1c DFU bootloader 3301 at43301 4-Port Hub 3312 4-Port Hub 4102 AirVast W-Buddie WN210 5601 at76c510 Prism-II 802.11b Access Point 5603 Cisco 7920 WiFi IP Phone 6119 AT91SAM CDC Demo Application 6124 at91sam SAMBA bootloader 6127 AT91SAM HID Keyboard Demo Application 6129 AT91SAM Mass Storage Demo Application 6200 AT91SAM HID Mouse Demo Application 7603 D-Link DWL-120 802.11b Wireless Adapter [Atmel at76c503a] 7604 at76c503a 802.11b Adapter 7605 at76c503a 802.11b Adapter 7606 at76c505 802.11b Adapter 7611 at76c510 rfmd2948 802.11b Access Point 7613 WL-1130 USB 7614 AT76c505a Wireless Adapter 7615 AT76C505AMX Wireless Adapter 7617 AT76C505AS Wireless Adapter 7800 Mini Album 800c Airspy HF+ ff01 WootingOne ff02 WootingTwo ff07 Tux Droid fish dongle 03ec Iwatsu America, Inc. 03ed Mitel Corp. 03ee Mitsumi 0000 CD-R/RW Drive 2501 eHome Infrared Receiver 2502 eHome Infrared Receiver 5609 Japanese Keyboard 641f WIF-0402C Bluetooth Adapter 6438 Bluetooth Device 6440 WML-C52APR Bluetooth Adapter 6901 SmartDisk FDD 6902 Floppy Disk Drive 7500 CD-R/RW ffff Dongle with BlueCore in DFU mode 03f0 HP, Inc 0004 DeskJet 895c 0011 OfficeJet G55 0012 DeskJet 1125C Printer Port 0024 KU-0316 Keyboard 002a LaserJet P1102 0036 CCID Smartcard Keyboard KUS0133 0053 DeskJet 2620 All-in-One Printer 0101 ScanJet 4100c 0102 PhotoSmart S20 0104 DeskJet 880c/970c 0105 ScanJet 4200c 0107 CD-Writer Plus 010c Multimedia Keyboard Hub 0111 G55xi Printer/Scanner/Copier 0117 LaserJet 3200 011c hn210w 802.11b Adapter 011d Bluetooth 1.2 Interface [Broadcom BCM2035] 0121 HP 39g+ [F2224A], 39gs [F2223A], 40gs [F2225A], 48gII [F2226A], 49g+ [F2228A], 50g [F2229A, NW240AA] 0122 HID Internet Keyboard 0125 DAT72 Tape 0139 Barcode Scanner 4430 0201 ScanJet 6200c 0202 PhotoSmart S20 0204 DeskJet 815c 0205 ScanJet 3300c 0207 CD-Writer Plus 8200e 020c Multimedia Keyboard 0211 OfficeJet G85 0212 DeskJet 1220C 0217 LaserJet 2200 0218 APOLLO P2500/2600 0221 StreamSmart 400 [F2235AA] 0223 Digital Drive Flash Reader 022a LaserJet CP1525nw/x 0241 Link-5 micro dongle 0304 DeskJet 810c/812c 0305 ScanJet 4300c 0307 CD-Writer+ CD-4e 0311 OfficeJet G85xi 0312 Color Inkjet CP1700 0314 designjet 30/130 series 0317 LaserJet 1200 0324 SK-2885 keyboard 034a Elite Keyboard 0401 ScanJet 5200c 0404 DeskJet 830c/832c 0405 ScanJet 3400cse 0411 OfficeJet G95 0412 Printing Support 0417 LaserJet 1200 series 0423 HS-COMBO Cardreader 042a LaserJet M1132 MFP 0441 Prime [NW280AA, G8X92AA] 0504 DeskJet 885c 0505 ScanJet 2100c 0507 DVD+RW 050c 5219 Wireless Keyboard 0511 OfficeJet K60 0512 DeskJet 450 0517 LaserJet 1000 051d Bluetooth Interface 052a LaserJet M1212nf MFP 0601 ScanJet 6300c 0604 DeskJet 840c 0605 ScanJet 2200c 0610 Z24i Monitor Hub 0611 OfficeJet K60xi 0612 business inkjet 3000 0624 Bluetooth Dongle 0641 X1200 Optical Mouse 0653 DeskJet 3700 series 0701 ScanJet 5300c/5370c 0704 DeskJet 825c 0705 ScanJet 4400c 070c Personal Media Drive 0711 OfficeJet K80 0712 DeskJet 1180c 0714 Printing Support 0741 Prime Wireless Kit [FOK65AA] 0801 ScanJet 7400c 0804 DeskJet 816c 0805 HP4470C 0811 OfficeJet K80xi 0817 LaserJet 3300 0853 ENVY 5000 series 0901 ScanJet 2300c 0904 DeskJet 845c 0912 Printing Support 0917 LaserJet 3330 0924 Modular Smartcard Keyboard 0941 X500 Optical Mouse 094a Optical Mouse [672662-001] 0a01 ScanJet 2400c 0a17 color LaserJet 3700 0b01 ScanJet 82x0C 0b0c Wireless Keyboard and Optical Mouse receiver 0b17 LaserJet 2300d 0c17 LaserJet 1010 0c24 Bluetooth Dongle 0d12 OfficeJet 9100 series 0d17 LaserJet 1012 0d4a SK-2025 Keyboard 0e17 LaserJet 1015 0f0c Wireless Keyboard and Optical Mouse receiver 0f11 OfficeJet V40 0f12 Printing Support 0f17 LaserJet 1150 0f2a LaserJet 400 color M451dn 1001 Photo Scanner 1000 1002 PhotoSmart 140 series 1004 DeskJet 970c/970cse 1005 ScanJet 5400c 1011 OfficeJet V40xi 1016 Jornada 548 / iPAQ HW6515 Pocket PC 1017 LaserJet 1300 1024 Smart Card Keyboard 1027 Virtual keyboard and mouse 102a LaserJet Professional P 1102w 1102 PhotoSmart 240 series 1104 DeskJet 959c 1105 ScanJet 5470c/5490c 1111 OfficeJet v60 1116 Jornada 568 Pocket PC 1117 LaserJet 1300n 1151 PSC-750xi Printer/Scanner/Copier 1198 HID-compliant mouse 1202 PhotoSmart 320 series 1204 DeskJet 930c 1205 ScanJet 4500C/5550C 1211 OfficeJet v60xi 1217 LaserJet 2300L 1227 Virtual CD-ROM 1302 PhotoSmart 370 series 1305 ScanJet 4570c 1311 OfficeJet V30 1312 DeskJet 460 1317 LaserJet 1005 1327 iLO Virtual Hub 134a Optical Mouse 1405 ScanJet 3670 1411 PSC 750 1424 f2105 Monitor Hub 1502 PhotoSmart 420 series 1504 DeskJet 920c 150c Mood Lighting (Microchip Technology Inc.) 1511 PSC 750xi 1512 Printing Support 1517 color LaserJet 3500 1524 Smart Card Keyboard - KR 1539 Mini Magnetic Stripe Reader 1541 Prime [G8X92AA] 154a Laser Mouse 1602 PhotoSmart 330 series 1604 DeskJet 940c 1605 ScanJet 5530C PhotoSmart 1611 psc 780 1617 LaserJet 3015 161d Wireless Rechargeable Optical Mouse (HID) 1624 Smart Card Keyboard - JP 1647 Z27n G2 Monitor Hub 1702 PhotoSmart 380 series 1704 DeskJet 948C 1705 ScanJet 5590 1711 psc 780xi 1712 Printing Support 1717 LaserJet 3020 171d Bluetooth 2.0 Interface [Broadcom BCM2045] 1801 Inkjet P-2000U 1802 PhotoSmart 470 series 1804 DeskJet 916C 1805 ScanJet 7650 1811 PSC 720 1812 OfficeJet Pro K550 1817 LaserJet 3030 181d Bluetooth 2.0 Interface 1902 PhotoSmart A430 series 1904 DeskJet 3820 1911 OfficeJet V45 1917 LaserJet 3380 1a02 PhotoSmart A510 series 1a11 OfficeJet 5100 series 1a17 color LaserJet 4650 1b02 PhotoSmart A610 series 1b04 DeskJet 3810 1b05 ScanJet 4850C/4890C 1b07 Premium Starter Webcam 1c02 PhotoSmart A710 series 1c17 Color LaserJet 2550l 1d02 PhotoSmart A310 series 1d17 LaserJet 1320 1d24 Barcode scanner 1e02 PhotoSmart A320 Printer series 1e11 PSC-950 1e17 LaserJet 1160 series 1f02 PhotoSmart A440 Printer series 1f11 PSC 920 1f12 OfficeJet Pro K5300 1f17 color LaserJet 5550 1f1d un2400 Gobi Wireless Modem 2001 Floppy 2002 Hub 2004 DeskJet 640c 2005 ScanJet 3570c 2012 OfficeJet Pro K5400 201d un2400 Gobi Wireless Modem (QDL mode) 2039 Cashdrawer 2102 PhotoSmart 7345 2104 DeskJet 630c 2112 OfficeJet Pro L7500 211d Sierra MC5725 [ev2210] 2202 PhotoSmart 7600 series 2205 ScanJet 3500c 2212 OfficeJet Pro L7600 2217 color LaserJet 9500 MFP 222a LaserJet Pro MFP M125nw 2302 PhotoSmart 7600 series 2304 DeskJet 656c 2305 ScanJet 3970c 2311 OfficeJet d series 2312 OfficeJet Pro L7700 2317 LaserJet 4350 231d Broadcom 2070 Bluetooth Combo 2402 PhotoSmart 7700 series 2404 Deskjet F2280 series 2405 ScanJet 4070 PhotoSmart 2417 LaserJet 4250 241d Gobi 2000 Wireless Modem (QDL mode) 2424 LP1965 19" Monitor Hub 2441 Prime G2 [2AP18AA] 2502 PhotoSmart 7700 series 2504 DeskJet F4200 series 2505 ScanJet 3770 2512 OfficeJet Pro L7300 / Compaq LA2405 series monitor 2514 4-port hub 2517 LaserJet 2410 251d Gobi 2000 Wireless Modem 2524 LP3065 30" Monitor Hub 2602 PhotoSmart A520 series 2605 ScanJet 3800c 2611 OfficeJet 7100 series 2617 Color LaserJet 2820 series 2624 Pole Display (HP522 2 x 20 Line Display) 2702 PhotoSmart A620 series 2704 DeskJet 915 2717 Color LaserJet 2830 2724 Magnetic Stripe Reader IDRA-334133-HP 2805 Scanjet G2710 2811 PSC-2100 2817 Color LaserJet 2840 2841 OMEN MINDFRAME [3XT27AA] 2902 PhotoSmart A820 series 2911 PSC 2200 2917 LaserJet 2420 2a11 PSC 2150 series 2a17 LaserJet 2430 2a1d Integrated Module with Bluetooth 2.1 Wireless technology 2b11 PSC 2170 series 2b17 LaserJet 1020 2b4a Business Slim Keyboard 2c12 Officejet J4680 2c17 LaserJet 1022 2c24 Logitech M-UAL-96 Mouse 2d05 Scanjet 7000 2d11 OfficeJet 6110 2d17 Printing Support 2d2a LaserJet Pro MFP M225dw 2e11 PSC 1000 2e17 LaserJet 2600n 2e24 LP2275w Monitor Hub 2f11 PSC 1200 2f17 Color LaserJet 2605dn 2f24 LP2475w Monitor Hub 3002 PhotoSmart P1000 3004 DeskJet 980c 3005 ScanJet 4670v 3011 PSC 1100 series 3017 Printing Support 304a Slim Keyboard 3102 PhotoSmart P1100 Printer w/ Card Reader 3104 DeskJet 960c 3111 OfficeJet 4100 series 3117 EWS 2605dtn 311d Atheros AR9285 Malbec Bluetooth Adapter 312a LaserJet Pro M701n 3202 PhotoSmart 1215 3207 4 GB flash drive 3211 OfficeJet 4105 series 3217 LaserJet 3050 3302 PhotoSmart 1218 3304 DeskJet 990c 3307 v125w Stick 3312 OfficeJet J6410 3317 LaserJet 3052 3402 PhotoSmart 1115 3404 DeskJet 6122 3417 LaserJet 3055 3502 PhotoSmart 230 3504 DeskJet 6127c 3511 PSC 2300 3517 LaserJet 3390 354a Slim Keyboard 3602 PhotoSmart 1315 3611 PSC 2410 PhotoSmart 3612 Officejet Pro 8000 A809 3617 Color LaserJet 2605 3711 PSC 2500 3717 EWS UPD 3724 Webcam 3802 PhotoSmart 100 3807 c485w Flash Drive 3817 LaserJet P2015 series 3902 PhotoSmart 130 3912 Officejet Pro 8500 3917 LaserJet P2014 3a02 PhotoSmart 7150 3a11 OfficeJet 5500 series 3a17 Printing Support 3a1d hs2340 HSPA+ mobile broadband 3b02 PhotoSmart 7150~ 3b05 Scanjet N8460 3b11 PSC 1300 series 3b17 LaserJet M1005 MFP 3b2a Color LaserJet MFP M277dw 3c02 PhotoSmart 7350 3c05 Scanjet Professional 1000 Mobile Scanner 3c11 PSC 1358 3c17 EWS UPD 3d02 PhotoSmart 7350~ 3d11 OfficeJet 4215 3d17 LaserJet P1005 3e02 PhotoSmart 7550 3e07 x755w Flash Drive 3e17 LaserJet P1006 3f02 PhotoSmart 7550~ 3f11 PSC-1315/PSC-1317 3f17 Laserjet P1505 4002 PhotoSmart 635/715/720/735/935/E337 (storage) 4004 CP1160 4102 PhotoSmart 618 4105 ScanJet 4370 4111 OfficeJet 7200 series 4117 LaserJet 1018 4202 PhotoSmart 812 4205 ScanJet G3010 4211 OfficeJet 7300 series 4217 EWS CM1015 4302 PhotoSmart 850 (ptp) 4305 ScanJet G3110 4311 OfficeJet 7400 series 4317 Color LaserJet CM1017 4402 PhotoSmart 935 (ptp) 4417 EWS UPD 4502 PhotoSmart 945 (PTP mode) 4505 ScanJet G4010 4507 External HDD 4511 PhotoSmart 2600 4512 E709n [Officejet 6500 Wireless] 4517 EWS UPD 4605 ScanJet G4050 4611 PhotoSmart 2700 4717 Color LaserJet CP1215 4811 PSC 1600 484a Elite Dock G4 4911 PSC 2350 4b11 OfficeJet 6200 4c11 PSC 1500 series 4c17 EWS UPD 4d11 PSC 1400 4d17 EWS UPD 4e11 PhotoSmart 2570 series 4f11 OfficeJet 5600 (USBHUB) 4f17 Color LaserJet CM1312 MFP 5004 DeskJet 995c 5011 PhotoSmart 3100 series 5017 EWS UPD 5111 PhotoSmart 3200 series 5211 PhotoSmart 3300 series 5307 v165w Stick 5311 OfficeJet 6300 5312 Officejet Pro 8500A 5317 Color LaserJet CP2025 series 5411 OfficeJet 4300 5511 DeskJet F300 series 5611 PhotoSmart C3180 5617 LaserJet M1120 MFP 5711 PhotoSmart C4100 series 5717 LaserJet M1120n MFP 5811 PhotoSmart C5100 series 5817 LaserJet M1319f MFP 581d lt4112 Gobi 4G Module Network Device 5911 PhotoSmart C6180 5912 Officejet Pro 8600 5a11 PhotoSmart C7100 series 5b11 OfficeJet J2100 series 5b12 Officejet Pro 8100 5c11 PhotoSmart C4200 Printer series 5c12 OfficeJet 6700 5c17 LaserJet P2055 series 5d11 PhotoSmart C5200 series 5e11 PhotoSmart D7400 series 6004 DeskJet 5550 6102 Hewlett Packard Digital Camera 6104 DeskJet 5650c 6117 color LaserJet 3550 6202 PhotoSmart 215 6204 DeskJet 5150c 6217 Color LaserJet 4700 6302 PhotoSmart 318/612 6317 Color LaserJet 4730mfp 632a LaserJet M203-M206 6402 PhotoSmart 715 (ptp) 6411 PhotoSmart C8100 series 6417 LaserJet 5200 6502 PhotoSmart 120 (ptp) 6511 PhotoSmart C7200 series 6602 PhotoSmart 320 6611 PhotoSmart C4380 series 6617 LaserJet 5200L 6702 PhotoSmart 720 (ptp) 6717 Color LaserJet 3000 6802 PhotoSmart 620 (ptp) 6811 PhotoSmart D5300 series 6817 Color LaserJet 3800 6911 PhotoSmart D7200 series 6917 Color LaserJet 3600 6a02 PhotoSmart 735 (ptp) 6a11 PhotoSmart C6200 series 6a17 LaserJet 4240 6b02 PhotoSmart R707 (PTP mode) 6b11 Photosmart C4500 series 6c11 Photosmart C4480 6c17 Color LaserJet 4610 6f17 Color LaserJet CP6015 series 7004 DeskJet 3320c 7102 PhotoSmart 635 (PTP mode) 7104 DeskJet 3420c 7117 CM8060 Color MFP with Edgeline Technology 7202 PhotoSmart 43x (ptp) 7204 DeskJet 36xx 7217 LaserJet M5035 MFP 7302 PhotoSmart M307 (PTP mode) 7304 DeskJet 35xx 7311 Photosmart Premium C309 7317 LaserJet P3005 7404 Printing Support 7417 LaserJet M4345 MFP 7504 Printing Support 7517 LaserJet M3035 MFP 7604 DeskJet 3940 7611 DeskJet F2492 All-in-One 7617 LaserJet P3004 7702 PhotoSmart R817 (PTP mode) 7704 DeskJet D4100 7717 CM8050 Color MFP with Edgeline Technology 7804 DeskJet D1360 7817 Color LaserJet CP3505 7917 LaserJet M5025 MFP 7a02 PhotoSmart M415 (PTP mode) 7a04 DeskJet D2460 7a11 Photosmart B109 7a17 LaserJet M3027 MFP 7b02 PhotoSmart M23 (PTP mode) 7b17 Color LaserJet CP4005 7c17 Color LaserJet CM6040 series 7d04 DeskJet F2100 Printer series 7d17 Color LaserJet CM4730 MFP 7e04 DeskJet F4100 Printer series 8017 LaserJet P4515 8104 Printing Support 8117 LaserJet P4015 811c Ethernet HN210E 8204 Printing Support 8207 FHA-3510 2.4GHz Wireless Optical Mobile Mouse 8217 LaserJet P4014 8317 LaserJet M9050 MFP 8404 DeskJet 6800 series 8417 LaserJet M9040 MFP 8504 DeskJet 6600 series 8604 DeskJet 5440 8607 Optical Mobile Mouse 8704 DeskJet 5940 8711 Deskjet 2050 J510 8804 DeskJet 6980 series 8904 DeskJet 6940 series 8911 Deskjet 1050 J410 8c07 Digital Stereo Headset 8c11 Deskjet F4500 series 9002 PhotoSmart M437 9102 PhotoSmart M537 9207 HD-4110 Webcam 9302 PhotoSmart R930 series 9402 PhotoSmart R837 942a LaserJet Pro M12a 9502 PhotoSmart R840 series 952a LaserJet Pro M12w 9602 PhotoSmart M730 series 9702 PhotoSmart R740 series 9802 PhotoSmart Mz60 series 9902 PhotoSmart M630 series 9a02 PhotoSmart E330 series 9b02 PhotoSmart M540 series 9b07 Portable Drive 9c02 PhotoSmart M440 series a004 DeskJet 5850c a011 Deskjet 3050A a407 Wireless Optical Comfort Mouse b002 PhotoSmart 7200 series b102 PhotoSmart 7200 series b107 v255w/c310w Flash Drive b116 Webcam b202 PhotoSmart 7600 series b302 PhotoSmart 7600 series b402 PhotoSmart 7700 series b502 PhotoSmart 7700 series b602 PhotoSmart 7900 series b702 PhotoSmart 7900 series b802 PhotoSmart 7400 series b902 PhotoSmart 7800 series ba02 PhotoSmart 8100 series bb02 PhotoSmart 8400 series bc02 PhotoSmart 8700 series bc11 Photosmart 7520 series bd02 PhotoSmart Pro B9100 series bef4 NEC Picty760 c002 PhotoSmart 7800 series c102 PhotoSmart 8000 series c111 Deskjet 1510 c202 PhotoSmart 8200 series c211 Deskjet 2540 series c302 DeskJet D2300 c402 PhotoSmart D5100 series c502 PhotoSmart D6100 series c602 PhotoSmart D7100 series c702 PhotoSmart D7300 series c802 PhotoSmart D5060 Printer d104 Bluetooth Dongle d507 39gII [NW249AA] efbe NEC Picty900 f0be NEC Picty920 f1be NEC Picty800 03f1 Genoa Technology 03f2 Oak Technology, Inc. 03f3 Adaptec, Inc. 0020 AWN-8020 WLAN [Intersil PRISM 2.5] 0080 AVC-1100 Audio Capture 0083 AVC-2200 Device 0087 AVC-2210 Loader 0088 AVC-2210 Device 008b AVC-2310 Loader 008c AVC-2310 Device 0094 eHome Infrared Receiver 009b AVC-1410 GameBridge TV NTSC 2000 USBXchange Firmware Loader 2001 USBXchange Adapter 2002 USB2-Xchange Firmware Loader 2003 USB2-Xchange Adapter 4000 4-port hub adcc Composite Device Support 03f4 Diebold, Inc. 03f5 Siemens Electromechanical 03f8 Epson Imaging Technology Center 03f9 KeyTronic Corp. 0100 KT-2001 Keyboard 0101 Keyboard 0102 Keyboard Mouse 03fb OPTi, Inc. 03fc Elitegroup Computer Systems 03fd Xilinx, Inc. 0008 Platform Cable USB II 0050 dfu downloader 03fe Farallon Comunications 0400 National Semiconductor Corp. 05dc Rigol Technologies DS1000USB Oscilloscope 0807 Bluetooth Dongle 080a Bluetooth Device 09c4 Rigol Technologies DG1022 Arbitrary Waveform Generator 1000 Mustek BearPaw 1200 Scanner 1001 Mustek BearPaw 2400 Scanner 1237 Hub a000 Smart Display Reference Device c359 Logitech Harmony c35b Printing Support c55d Rigol Technologies DS5000USB Oscilloscope 0401 National Registry, Inc. 0402 ALi Corp. 5462 M5462 IDE Controller 5602 M5602 Video Camera Controller 5603 M5603 Video Camera Controller 5606 M5606 Video Camera Controller [UVC] 5621 M5621 High-Speed IDE Controller 5623 M5623 Scanner Controller 5627 Welland ME-740PS USB2 3.5" Power Saving Enclosure 5632 M5632 Host-to-Host Link 5635 M5635 Flash Card Reader 5636 USB 2.0 Storage Device 5637 M5637 IDE Controller 5642 Storage Device 5661 M5661 MP3 player 5667 M5667 MP3 player 8841 Newmine Camera 9665 Gateway Webcam 0403 Future Technology Devices International, Ltd 0000 H4SMK 7 Port Hub / Bricked Counterfeit FT232 Serial (UART) IC 0232 Serial Converter 1060 JTAG adapter 1234 IronLogic RFID Adapter [Z-2 USB] 1235 Iron Logic Z-397 RS-485/422 converter 6001 FT232 Serial (UART) IC 6002 Lumel PD12 6007 Serial Converter 6008 Serial Converter 6009 Serial Converter 6010 FT2232C/D/H Dual UART/FIFO IC 6011 FT4232H Quad HS USB-UART/FIFO IC 6014 FT232H Single HS USB-UART/FIFO IC 6015 Bridge(I2C/SPI/UART/FIFO) 601e FT600 16-bit FIFO IC 601f FT601 32-bit FIFO IC 6ee0 EZO Carrier Board 6f70 HB-RF-USB 7150 FT2232x wired for MPSSE+UART 7151 FT2232x wired for MPSSE+UART 7152 FreeCalypso dual UART with boot control 7be8 FT232R 8028 Dev board JTAG (FT232H based) 8040 4 Port Hub 8070 7 Port Hub 8140 Vehicle Explorer Interface 8210 MGTimer - MGCC (Vic) Timing System 8348 FT232BM [SIENNA Serial Interface] 8370 7 Port Hub 8371 PS/2 Keyboard And Mouse 8372 FT8U100AX Serial Port 8508 Selectronic SP PRO 87d0 Cressi Dive Computer Interface 8a28 Rainforest Automation ZigBee Controller 8a98 TIAO Multi-Protocol Adapter 8b28 Alpermann+Velte TCI70 8b29 Alpermann+Velte TC60 CLS 8b2a Alpermann+Velte Rubidium Q1 8b2b Alpermann+Velte TCD 8b2c Alpermann+Velte TCC70 9090 SNAP Stick 200 9132 LCD and Temperature Interface 9133 CallerID 9134 Virtual keyboard 9135 Rotary Pub alarm 9136 Pulsecounter 9137 Ledbutton interface 9e90 Marvell OpenRD Base/Client 9f08 CIB-1894 Conclusion SmartLink Box: 9f80 Ewert Energy Systems CANdapter a6d0 Texas Instruments XDS100v2 JTAG / BeagleBone A3 a951 HCP HIT GSM/GPRS modem [Cinterion MC55i] a9a0 FT2232D - Dual UART/FIFO IC - FTDI abb8 Lego Mindstorms NXTCam b0c0 microSensys RFID device b0c1 microSensys RFID device b0c2 iID contactless RFID device b0c3 iID contactless RFID device b0c4 RFID device b0c5 RFID device b810 US Interface Navigator (CAT and 2nd PTT lines) b811 US Interface Navigator (WKEY and FSK lines) b812 US Interface Navigator (RS232 and CONFIG lines) b9b0 Fujitsu SK-16FX-100PMC V1.1 baf8 Amontec JTAGkey bcd8 Stellaris Development Board bcd9 Stellaris Evaluation Board bcda Stellaris ICDI Board bd90 PICAXE Download Cable [AXE027] bdc8 Egnite GmbH - JTAG/RS-232 adapter bfd8 OpenDCC bfd9 OpenDCC (Sniffer) bfda OpenDCC (Throttle) bfdb OpenDCC (Gateway) bfdc OpenDCC (GBM) c580 HID UNIKEY dongle [F-Response] c630 lcd2usb interface c631 i2c-tiny-usb interface c632 xu1541 c64 floppy drive interface c633 TinyCrypt dongle c634 glcd2usb interface c7d0 RR-CirKits LocoBuffer-USB c8b8 Alpermann+Velte MTD TCU c8b9 Alpermann+Velte MTD TCU 1HE c8ba Alpermann+Velte Rubidium H1 c8bb Alpermann+Velte Rubidium H3 c8bc Alpermann+Velte Rubidium S1 c8bd Alpermann+Velte Rubidium T1 c8be Alpermann+Velte Rubidium D1 c8bf Alpermann+Velte TC60 RLV cc48 Tactrix OpenPort 1.3 Mitsubishi cc49 Tactrix OpenPort 1.3 Subaru cc4a Tactrix OpenPort 1.3 Universal cff8 Amontec JTAGkey d010 SCS PTC-IIusb d011 SCS Position-Tracker/TNC d012 SCS DRAGON 1 d013 SCS DRAGON 1 d388 Xsens converter d389 Xsens Wireless Receiver d38a Xsens serial converter d38b Xsens serial converter d38c Xsens Wireless Receiver d38d Xsens Awinda Station d38e Xsens serial converter d38f Xsens serial converter d491 Zolix Omni 1509 monochromator d578 Accesio USB-COM-4SM d678 GammaScout d6f8 UNI Black BOX d738 Propox JTAGcable II d739 Propox ISPcable III d9a9 Actisense USG-1 NMEA Serial Gateway d9aa Actisense NGT-1 NMEA2000 PC Interface d9ab Actisense NGT-1 NMEA2000 Gateway daf4 Qundis Serial Infrared Head e0d0 Total Phase Aardvark I2C/SPI Host Adapter e518 IBR IMB-usb e521 EVER Sinline XL Series UPS e6c8 PYRAMID Computer GmbH LCD e700 Elster Unicom III Optical Probe e729 Segway Robotic Mobility Platforms 200 e888 Expert ISDN Control USB e889 USB-RS232 OptoBridge e88a Expert mouseCLOCK USB II e88b Precision Clock MSF USB e88c Expert mouseCLOCK USB II HBG e8d8 Aaronia AG Spectran Spectrum Analyzer e8dc Aaronia AG UBBV Preamplifier ea90 Eclo 1-Wire Adapter ecd9 miControl miCan-Stick ed71 HAMEG HO870 Serial Port ed72 HAMEG HO720 Serial Port ed73 HAMEG HO730 Serial Port ed74 HAMEG HO820 Serial Port eea2 PCStage Lite 32 channel DMX512 Interface ef10 FT1245BL f070 Serial Converter 422/485 [Vardaan VEUSB422R3] f0c8 SPROG Decoder Programmer f0c9 SPROG-DCC CAN-USB f0e9 Tagsys L-P101 f0ee Tagsys Medio P200x f1a0 Asix PRESTO Programmer f208 Papenmeier Braille-Display f3c0 4N-GALAXY Serial Converter f458 ABACUS ELECTRICS Optical Probe f608 CTI USB-485-Mini f60b CTI USB-Nano-485 f680 Suunto Sports Instrument f758 GW Instek GDS-8x0 Oscilloscope f7c0 ZeitControl Cardsystems TagTracer MIFARE f850 USB-UIRT (Universal Infrared Receiver+Transmitter) f918 Ant8 Logic Probe f9d9 Wetterempfanger 147.3kHz fa00 Matrix Orbital USB Serial fa01 Matrix Orbital MX2 or MX3 fa02 Matrix Orbital MX4 or MX5 fa03 Matrix Orbital VK/LK202 Family fa04 Matrix Orbital VK/LK204 Family fa20 Ross-Tech HEX-USB fc08 Crystalfontz CFA-632 USB LCD fc09 Crystalfontz CFA-634 USB LCD fc0b Crystalfontz CFA-633 USB LCD fc0c Crystalfontz CFA-631 USB LCD fc0d Crystalfontz CFA-635 USB LCD fc0e Crystalfontz CFA-533 fc82 SEMC DSS-20/DSS-25 SyncStation fd48 ShipModul MiniPlex-4xUSB NMEA Multiplexer fd49 ShipModul MiniPlex-4xUSB-AIS NMEA Multiplexer fd4b ShipModul MiniPlex NMEA Multiplexer ff08 ToolHouse LoopBack Adapter ff18 ScienceScope Logbook ML ff19 Logbook Bus ff1a Logbook Bus ff1b Logbook Bus ff1c ScienceScope Logbook LS ff1d ScienceScope Logbook HS ff1e Logbook Bus ff1f Logbook Bus 0404 NCR Corp. 0202 78XX Scanner 0203 78XX Scanner - Embedded System 0310 K590 Printer, Self-Service 0311 7167 Printer, Receipt/Slip 0312 7197 Printer Receipt 0320 5932-USB Keyboard 0321 5953-USB Dynakey 0322 5932-USB Enhanced Keyboard 0323 5932-USB Enhanced Keyboard, Flash-Recovery/Download 0324 5953-USB Enhanced Dynakey 0325 5953-USB Enhanced Dynakey Flash-Recovery/Download 0328 K016: USB-MSR ISO 3-track MSR: POS Standard (See HID pages) 0329 K018: USB-MSR JIS 2-Track MSR: POS Standard 032a K016: USB-MSR ISO 3-Track MSR: HID Keyboard Mode 032b K016/K018: USB-MSR Flash-Recovery/Download 0405 Synopsys, Inc. 0406 Fujitsu-ICL Computers 0407 Fujitsu Personal Systems, Inc. 0408 Quanta Computer, Inc. 0103 FV TouchCam N1 (Audio) 030c HP Webcam 03b2 HP Webcam 03f4 HP Webcam 1030 FV TouchCam N1 (Video) 3000 Optical dual-touch panel 3001 Optical Touch Screen 3008 Optical Touch Screen a060 HD Webcam 0409 NEC Corp. 0011 PC98 Series Layout Keyboard Mouse 0012 ATerm IT75DSU ISDN TA 0014 Japanese Keyboard 0019 109 Japanese Keyboard with Bus-Powered Hub 001a PC98 Series Layout Keyboard with Bus-Powered Hub 0025 Mini Keyboard with Bus-Powered Hub 0027 MultiSync Monitor 002c Clik!-USB Drive 0034 109 Japanese Keyboard with One-touch start buttons 003f Wireless Keyboard with One-touch start buttons 0040 Floppy 004e SuperScript 1400 Series 004f Wireless Keyboard with One-touch start buttons 0050 7-port hub 0058 HighSpeed Hub 0059 HighSpeed Hub 005a HighSpeed Hub 006a Conceptronic USB Harddisk Box 007d MINICUBE2 007e PG-FP5 Flash Memory Programmer 0081 SuperScript 1400 Series 0082 SuperScript 1400 Series 0094 Japanese Keyboard with One-touch start buttons 0095 Japanese Keyboard 00a9 AtermIT21L 128K Support Standard 00aa AtermITX72 128K Support Standard 00ab AtermITX62 128K Support Standard 00ac AtermIT42 128K Support Standard 00ae INSMATEV70G-MAX Standard 00af AtermITX70 128K Support Standard 00b0 AtermITX80 128K Support Standard 00b2 AtermITX80D 128K Support Standard 00c0 Wireless Remocon 00f7 Smart Display PK-SD10 011d e228 Mobile Phone 0193 RVT-R Writer 0203 HID Audio Controls 021d Aterm WL54SU2 802.11g Wireless Adapter [Atheros AR5523] 0248 Aterm PA-WL54GU 0249 Aterm WL300NU-G 02b4 Aterm WL300NU-AG 02b6 Aterm WL300NU-GS 802.11n Wireless Adapter 02bc Computer Monitor 0300 LifeTouch Note 0301 LifeTouch Note (debug mode) 55aa Hub 55ab Hub [iMac/iTouch kbd] 8010 Intellibase Hub 8011 Intellibase Hub efbe P!cty 900 [HP DJ] f0be P!cty 920 [HP DJ 812c] 040a Kodak Co. 0001 DVC-323 0002 DVC-325 0100 DC-220 0110 DC-260 0111 DC-265 0112 DC-290 0120 DC-240 0121 DC-240 (PTP firmware) 0130 DC-280 0131 DC-5000 0132 DC-3400 0140 DC-4800 0160 DC4800 0170 DX3900 0200 Digital Camera 0300 EZ-200 0400 MC3 0402 Digital Camera 0403 Z7590 0500 DX3500 0510 DX3600 0525 DX3215 0530 DX3700 0535 EasyShare CX4230 Camera 0540 LS420 0550 DX4900 0555 DX4330 0560 CX4200 0565 CX4210 0566 CX4300 0567 LS753 0568 LS443 0569 LS663 0570 DX6340 0571 CX6330 0572 DX6440 0573 CX6230 0574 CX6200 0575 DX6490 0576 DX4530 0577 DX7630 0578 CX7300/CX7310 0579 CX7220 057a CX7330 057b CX7430 057c CX7530 057d DX7440 057e C300 057f DX7590 0580 Z730 0581 Digital Camera 0582 Digital Camera 0583 Digital Camera 0584 CX6445 0585 Digital Camera 0586 CX7525 0587 Digital Camera 0588 Digital Camera 0589 EasyShare C360 058a C310 058b Digital Camera 058c C330 058d C340 058e V530 058f V550 0590 Digital Camera 0591 Digital Camera 0592 Digital Camera 0593 Digital Camera 0594 Digital Camera 0595 Digital Camera 0596 Digital Camera 0597 Digital Camera 0598 EASYSHARE M1033 digital camera 0599 Digital Camera 059a Digital Camera 059b Digital Camera 059c Digital Camera 059d Digital Camera 059e Digital Camera 059f Digital Camera 05a0 Digital Camera 05a1 Digital Camera 05a2 Digital Camera 05a3 Digital Camera 05a4 Digital Camera 05a5 Digital Camera 05a6 Digital Camera 05a7 Digital Camera 05a8 Digital Camera 05a9 Digital Camera 05aa Digital Camera 05ab Digital Camera 05ac Digital Camera 05ad Digital Camera 05ae Digital Camera 05af Digital Camera 05b0 Digital Camera 05b1 Digital Camera 05b2 Digital Camera 05b3 EasyShare Z710 Camera 05b4 Digital Camera 05b5 Digital Camera 05b6 Digital Camera 05b7 Digital Camera 05b8 Digital Camera 05b9 Digital Camera 05ba Digital Camera 05bb Digital Camera 05bc Digital Camera 05bd Digital Camera 05be Digital Camera 05bf Digital Camera 05c0 Digital Camera 05c1 Digital Camera 05c2 Digital Camera 05c3 Digital Camera 05c4 Digital Camera 05c5 Digital Camera 05c8 EASYSHARE Z1485 IS Digital Camera 05d3 EasyShare M320 Camera 05d4 EasyShare C180 Digital Camera 1001 EasyShare SV811 Digital Picture Frame 4000 InkJet Color Printer 4021 Photo Printer 6800 4022 1400 Digital Photo Printer 4023 Photo Printer 8800 / 9810 402b Photo Printer 6850 402e 605 Photo Printer 4034 805 Photo Printer 4035 7000 Photo Printer 4037 7010 Photo Printer 4038 7015 Photo Printer 404d 8810 Photo Printer 404f 305 Photo Printer 4056 ESP 7200 Series AiO 4109 EasyShare Printer Dock Series 3 410d EasyShare G600 Printer Dock 5010 Wireless Adapter 5012 DBT-220 Bluetooth Adapter 6001 i30 6002 i40 6003 i50 6004 i60 6005 i80 6029 i900 602a i900 040b Weltrend Semiconductor 0a68 Func MS-3 gaming mouse [WT6573F MCU] 2000 wired Keyboard [Dynex DX-WRK1401] 2367 Human Interface Device [HP CalcPad 200 Calculator and Numeric Keypad] 6510 Weltrend Bar Code Reader 6520 Xploder Xbox Memory Unit (8MB) 6533 Speed-Link Competition Pro 6543 Manhattan Magnetic Card Strip Reader 040c VTech Computers, Ltd 040d VIA Technologies, Inc. 3184 VNT VT6656 USB-802.11 Wireless LAN Adapter 340b FX-Audio DAC-X6 340f Audinst HUD-mx2 6204 Vectro VT6204 IDE bridge 6205 USB 2.0 Card Reader 040e MCCI 040f Echo Speech Corp. 0411 BUFFALO INC. (formerly MelCo., Inc.) 0001 LUA-TX Ethernet [pegasus] 0005 LUA-TX Ethernet 0006 WLI-USB-L11 Wireless LAN Adapter 0009 LUA2-TX Ethernet 000b WLI-USB-L11G-WR Wireless LAN Adapter 000d WLI-USB-L11G Wireless LAN Adapter 0012 LUA-KTX Ethernet 0013 USB2-IDE Adapter 0016 WLI-USB-S11 802.11b Adapter 0018 USB2-IDE Adapter 001c USB-IDE Bridge: DUB-PxxG 0027 WLI-USB-KS11G 802.11b Adapter 002a SMSC USB97C202 "HD-HB300V2-EU" 003d LUA-U2-KTX Ethernet 0044 WLI-USB-KB11 Wireless LAN Adapter 004b WLI-USB-G54 802.11g Adapter [Broadcom 4320 USB] 004d WLI-USB-B11 Wireless LAN Adapter 0050 WLI2-USB2-G54 Wireless LAN Adapter 005e WLI-U2-KG54-YB WLAN 0065 Python2 WDM Encoder 0066 WLI-U2-KG54 WLAN 0067 WLI-U2-KG54-AI WLAN 006e LUA-U2-GT 10/100/1000 Ethernet Adapter 0089 RUF-C/U2 Flash Drive 008b Nintendo Wi-Fi 0091 WLI-U2-KAMG54 Wireless LAN Adapter 0092 WLI-U2-KAMG54 Bootloader 0097 WLI-U2-KG54-BB 00a9 WLI-U2-AMG54HP Wireless LAN Adapter 00aa WLI-U2-AMG54HP Bootloader 00b3 PC-OP-RS1 RemoteStation 00bc WLI-U2-KG125S 802.11g Adapter [Broadcom 4320 USB] 00ca 802.11n Network Adapter 00cb WLI-U2-G300N 802.11n Adapter 00d8 WLI-U2-SG54HP 00d9 WLI-U2-G54HP 00da WLI-U2-KG54L 802.11bg [ZyDAS ZD1211B] 00db External Hard Drive HD-PF32OU2 [Buffalo Ministation] 00e8 WLI-UC-G300N Wireless LAN Adapter [Ralink RT2870] 00f9 Portable DVD Writer (DVSM-PL58U2) 0105 External Hard Drive HD-CEU2 [Drive Station] 012c SATA Bridge 012e WLI-UC-AG300N Wireless LAN Adapter 0148 WLI-UC-G300HP Wireless LAN Adapter 0150 WLP-UC-AG300 Wireless LAN Adapter 0157 External Hard Drive HD-PEU2 0158 WLI-UC-GNHP Wireless LAN Adapter 015d WLI-UC-GN Wireless LAN Adapter [Ralink RT3070] 016f WLI-UC-G301N Wireless LAN Adapter [Ralink RT3072] 017f Sony UWA-BR100 802.11abgn Wireless Adapter [Atheros AR7010+AR9280] 019e WLI-UC-GNP Wireless LAN Adapter 01a1 MiniStation Metro 01a2 WLI-UC-GNM Wireless LAN Adapter [Ralink RT8070] 01ba SATA Bridge 01dc Ultra-Slim Portable DVD Writer (DVSM-PC58U2V) 01de External Hard Drive HD-PCTU3 [Buffalo MiniStation] 01ea SATA Bridge 01ee WLI-UC-GNM2 Wireless LAN Adapter [Ralink RT3070] 01f1 SATA Adapter [HD-LBU3] 01fd WLI-UC-G450 Wireless LAN Adapter 027e HD-LCU3 0412 Award Software International 0413 Leadtek Research, Inc. 1310 WinFast TV - NTSC + FM 1311 WinFast TV - NTSC + MTS + FM 1312 WinFast TV - PAL BG + FM 1313 WinFast TV - PAL BG+TXT + FM 1314 WinFast TV Audio - PHP PAL I 1315 WinFast TV Audio - PHP PAL I+TXT 1316 WinFast TV Audio - PHP PAL DK 1317 WinFast TV Audio - PHP PAL DK+TXT 1318 WinFast TV - PAL I/DK + FM 1319 WinFast TV - PAL N + FM 131a WinFast TV Audio - PHP SECAM LL 131b WinFast TV Audio - PHP SECAM LL+TXT 131c WinFast TV Audio - PHP SECAM DK 131d WinFast TV - SECAM DK + TXT + FM 131e WinFast TV - NTSC Japan + FM 1320 WinFast TV - NTSC 1321 WinFast TV - NTSC + MTS 1322 WinFast TV - PAL BG 1323 WinFast TV - PAL BG+TXT 1324 WinFast TV Audio - PHP PAL I 1325 WinFast TV Audio - PHP PAL I+TXT 1326 WinFast TV Audio - PHP PAL DK 1327 WinFast TV Audio - PHP PAL DK+TXT 1328 WinFast TV - PAL I/DK 1329 WinFast TV - PAL N 132a WinFast TV Audio - PHP SECAM LL 132b WinFast TV Audio - PHP SECAM LL+TXT 132c WinFast TV Audio - PHP SECAM DK 132d WinFast TV - SECAM DK + TXT 132e WinFast TV - NTSC Japan 6023 EMP Audio Device 6024 WinFast PalmTop/Novo TV Video 6025 WinFast DTV Dongle (cold state) 6026 WinFast DTV Dongle (warm state) 6029 WinFast DTV Dongle Gold 6125 WinFast DTV Dongle 6126 WinFast DTV Dongle BDA Driver 6a03 RTL2832 [WinFast DTV Dongle Mini] 6f00 WinFast DTV Dongle (STK7700P based) 0414 Giga-Byte Technology Co., Ltd 0416 Winbond Electronics Corp. 0035 W89C35 802.11bg WLAN Adapter 0101 Hub 0961 AVL Flash Card Reader 3810 Smart Card Controller 3811 Generic Controller - Single interface 3812 Smart Card Controller_2Interface 3813 Panel Display 5011 Virtual Com Port 511b Nuvoton Nu-Link1 ICE 511c Nuvoton Nu-Link1 ICE 511d Nuvoton Nu-Link1 ICE/VCOM 511e Nuvoton Nu-Link1 MSC/VCOM 5200 Nuvoton Nu-Link2-ME ICE/MSC/VCOM 5201 Nuvoton Nu-Link2-Pro ICE/MSC/VCOM 5210 Nuvoton Nu-Link2 MSC FW UPGRADE 5211 Nuvoton Nu-Link2 HID FW UPGRADE 5518 4-Port Hub 551a PC Sync Keypad 551b PC Async Keypad 551c Sync Tenkey 551d Async Tenkey 551e Keyboard 551f Keyboard w/ Sys and Media 5521 Keyboard 6481 16-bit Scanner 7721 Memory Stick Reader/Writer 7722 Memory Stick Reader/Writer 7723 SD Card Reader b23c Gaming Keyboard c141 Barcode Scanner 0417 Symbios Logic 0418 AST Research 0419 Samsung Info. Systems America, Inc. 0001 IrDA Remote Controller / Creative Cordless Mouse 0600 Desktop Wireless 6000 2694 Laila 3001 Xerox P1202 Laser Printer 3003 Olivetti PG L12L 3201 Docuprint P8ex 3404 SCX-5x12 series 3406 MFP 830 series 3407 ML-912 3601 InkJet Color Printer 3602 InkJet Color Printer 4602 Remote NDIS Network Device 8001 Hub 8002 SyncMaster HID Monitor Control aa03 SDAS-3 MP3 Player 041a Phoenix Technologies, Ltd 041b d'TV 041d S3, Inc. 041e Creative Technology, Ltd 0414 HS-720 Headset 1002 Nomad II 1003 Blaster GamePad Cobra 1050 GamePad Cobra 1053 Mouse Gamer HD7600L 200c MuVo V100 2020 Zen X-Fi 2 2029 ZiiO 2801 Prodikeys PC-MIDI multifunction keyboard 3000 SoundBlaster Extigy 3002 SB External Composite Device 3010 SoundBlaster MP3+ 3014 SB External Composite Device 3015 Sound Blaster Digital Music LX 3020 SoundBlaster Audigy 2 NX 3030 SB External Composite Device 3040 SoundBlaster Live! 24-bit External SB0490 3042 Sound Blaster X-Fi Surround 5.1 3060 Sound Blaster Audigy 2 ZS External 3061 SoundBlaster Audigy 2 ZS Video Editor 3090 Sound Blaster Digital Music SX 30d0 Xmod 30d3 Sound Blaster Play! 3100 IR Receiver (SB0540) 3121 WoW tap chat 3220 Sound Blaster Tactic(3D) Sigma sound card 3232 Sound Blaster Premium HD [SBX] 3237 SB X-Fi Surround 5.1 Pro 3241 Sound Blaster JAM 3263 SB X-Fi Surround 5.1 Pro 3f00 E-Mu Xboard 25 MIDI Controller 3f02 E-Mu 0202 3f04 E-Mu 0404 3f07 E-Mu Xmidi 1x1 3f0a E-Mu Tracker Pre 3f0e Xmidi 1x1 Tab 4003 VideoBlaster Webcam Go Plus [W9967CF] 4004 Nomad II MG 4005 Webcam Blaster Go ES 4007 Go Mini 400a PC-Cam 300 400b PC-Cam 600 400c Webcam 5 [pwc] 400d Webcam PD1001 400f PC-CAM 550 (Composite) 4011 Webcam PRO eX 4012 PC-CAM350 4013 PC-Cam 750 4015 CardCam Value 4016 CardCam 4017 Webcam Mobile [PD1090] 4018 Webcam Vista [PD1100] 4019 Audio Device 401a Webcam Vista [PD1100] 401c Webcam NX [PD1110] 401d Webcam NX Ultra 401e Webcam NX Pro 401f Webcam Notebook [PD1171] 4020 Webcam NX 4021 Webcam NX Ultra 4022 Webcam NX Pro 4028 Vista Plus cam [VF0090] 4029 Webcam Live! 402f DC-CAM 3000Z 4034 Webcam Instant 4035 Webcam Instant 4036 Webcam Live!/Live! Pro 4037 Webcam Live! 4038 ORITE CCD Webcam [PC370R] 4039 Webcam Live! Effects 403a Webcam NX Pro 2 403b Creative Webcam Vista [VF0010] 403c Webcam Live! Ultra 403d Webcam Notebook Ultra 403e Webcam Vista Plus 4041 Webcam Live! Motion 4043 Vibra Plus Webcam 4045 Live! Cam Voice 4049 Live! Cam Voice 4051 Live! Cam Notebook Pro [VF0250] 4052 Live! Cam Vista IM 4053 Live! Cam Video IM 4054 Live! Cam Video IM 4055 Live! Cam Video IM Pro 4056 Live! Cam Video IM Pro 4057 Live! Cam Optia 4058 Live! Cam Optia AF 405f WebCam Vista (VF0330) 4061 Live! Cam Notebook Pro [VF0400] 4063 Live! Cam Video IM Pro 4068 Live! Cam Notebook [VF0470] 406c Live! Cam Sync [VF0520] 4083 Live! Cam Socialize [VF0640] 4087 Live! Cam Socialize HD 1080 [VF0680] 4088 Live! Cam Chat HD [VF0700] 4095 Live! Cam Sync HD [VF0770] 4097 Live! Cam Chat HD [VF0700/VF0790] 4099 Creative VF0800 [RealSense Camera SR300] 4100 Nomad Jukebox 2 4101 Nomad Jukebox 3 4102 NOMAD MuVo^2 4106 Nomad MuVo 4107 NOMAD MuVo 4108 Nomad Jukebox Zen 4109 Nomad Jukebox Zen NX 410b Nomad Jukebox Zen USB 2.0 410c Nomad MuVo NX 410f NOMAD MuVo^2 (Flash) 4110 Nomad Jukebox Zen Xtra 4111 Dell Digital Jukebox 4116 MuVo^2 4117 Nomad MuVo TX 411b Zen Touch 411c Nomad MuVo USB 2.0 411d Zen 411e Zen Micro 4120 Nomad MuVo TX FM 4123 Zen Portable Media Center 4124 MuVo^2 FM (uHDD) 4126 Dell DJ (2nd gen) 4127 Dell DJ 4128 NOMAD Jukebox Zen Xtra (mtp) 412b MuVo N200 with FM radio 412f Dell Digital Jukebox 2.Gen 4130 Zen Micro (mtp) 4131 DAP-HD0014 [Zen Touch] (MTP) 4133 Mass Storage Device 4134 Zen Neeon 4136 Zen Sleek 4137 Zen Sleek (mtp) 4139 Zen Nano Plus 413c Zen MicroPhoto 4150 Zen V (MTP) 4151 Zen Vision:M (mtp) 4152 Zen V Plus 4153 Zen Vision W 4154 Zen Stone 4155 Zen Stone plus 4157 Zen (MTP) 500f Broadband Blaster 8012U-V 5015 TECOM Bluetooth Device ffff Webcam Live! Ultra 041f LCS Telegraphics 0420 Chips and Technologies 1307 Celly SIM Card Reader 0421 Nokia Mobile Phones 0001 E61i (PC Suite mode) 0018 6288 GSM Smartphone 0019 6288 GSM Smartphone (imaging mode) 001a 6288 GSM Smartphone (file transfer mode) 0024 5610 XpressMusic (Storage mode) 0025 5610 XpressMusic (PC Suite mode) 0028 5610 XpressMusic (Imaging mode) 002d 6120 Phone (Mass storage mode) 002e 6120 Phone (Media-Player mode) 002f 6120 Phone (PC-Suite mode) 0042 E51 (PC Suite mode) 0064 3109c GSM Phone 006b 5310 Xpress Music (PC Suite mode) 006c 5310 Xpress music (Storage mode) 006d N95 (Storage mode) 006e N95 (Multimedia mode) 006f N95 (Printing mode) 0070 N95 (PC Suite mode) 0096 N810 Internet Tablet 00aa E71 (Mass storage mode) 00ab E71 (PC Suite mode) 00e4 E71 (Media transfer mode) 0103 ADL Flashing Engine AVALON Parent 0104 ADL Re-Flashing Engine Parent 0105 Nokia Firmware Upgrade Mode 0106 ROM Parent 010d E75 (Storage Mode) 010e E75 (PC Suite mode) 010f E75 (Media transfer mode) 0110 E75 (Imaging Mode) 0154 5800 XpressMusic (PC Suite mode) 0155 5800 XpressMusic (Multimedia mode) 0156 5800 XpressMusic (Storage mode) 0157 5800 XpressMusic (Imaging mode) 0189 N810 Internet Tablet WiMAX 0199 6700 Classic (msc) 019a 6700 Classic (PC Suite) 019b 6700 Classic (mtp) 01b0 6303 classic Phone (PC Suite mode) 01b1 6303 classic Phone (Mass storage mode) 01b2 6303 classic Phone (Printing and media mode) 01c7 N900 (Storage Mode) 01c8 N900/N950 (PC-Suite Mode) 0228 5530 XpressMusic 023a 6730 Classic 026a N97 (mass storage) 026b N97 (Multimedia) 026c N97 (PC Suite) 026d N97 (Pictures) 0295 660i/6600i Slide Phone (Mass Storage) 0297 660i/6600i Slide Phone (Still Image) 02e1 5230 (Storage mode) 02e2 5230 (Multimedia mode) 02e3 5230 (PC-Suite mode) 02e4 5230 (Imaging mode) 0360 C1-01 Ovi Suite Mode 0396 C7-00 (Modem mode) 03a4 C5 (Storage mode) 03c0 C7-00 (Mass storage mode) 03c1 C7-00 (Media transfer mode) 03c2 Sim 03cd C7-00 (Nokia Suite mode) 03d1 N950 (Storage Mode) 03d2 N950 (PC Suite mode) 0400 7600 Phone Parent 0401 6650 GSM Phone 0402 6255 Phone Parent 0404 5510 0405 9500 GSM Communicator 0407 Music Player HDR-1(tm) 040b N-Gage GSM Phone 040d 6620 Phone Parent 040e 6651 Phone Parent 040f 6230 GSM Phone 0410 6630 Imaging Smartphone 0411 7610 Phone Parent 0413 6260 Phone Parent 0414 7370 0415 9300 GSM Smartphone 0416 6170 Phone Parent 0417 7270 Phone Parent 0418 E70 (PC Suite mode) 0419 E60 (PC Suite mode) 041a 9500 GSM Communicator (RNDIS) 041b 9300 GSM Smartphone (RNDIS) 041c 7710 Phone Parent 041d 6670 Phone Parent 041e 6680 041f 6235 Phone Parent 0421 3230 Phone Parent 0422 6681 Phone Parent 0423 6682 Phone Parent 0428 6230i Modem 0429 6230i MultiMedia Card 0431 770/N800 Internet Tablet 0432 N90 Phone Parent 0435 E70 (IP Passthrough/RNDIS mode) 0436 E60 (IP Passthrough/RNDIS mode) 0437 6265 Phone Parent 043a N70 USB Phone Parent 043b 3155 Phone Parent 043c 6155 Phone Parent 043d 6270 Phone Parent 0443 N70 Phone Parent 0444 N91 044c NM850iG Phone Parent 044d E61 (PC Suite mode) 044e E61 (Data Exchange mode) 044f E61 (IP Passthrough/RNDIS mode) 0453 9300 Phone Parent 0456 6111 Phone Parent 0457 6111 Phone (Printing mode) 045a 6280 Phone Parent 045d 6282 Phone Parent 046e 6110 Navigator 0471 6110 Navigator 0485 MTP Device 04b9 5300 04bc 5200 (Nokia mode) 04bd 5200 (Storage mode) 04be 5200 (MTP mode) 04c3 N800 Internet Tablet 04ce E90 Communicator (PC Suite mode) 04cf E90 Communicator (Storage mode) 04f0 Nokia N95 (PC Suite mode) 04f9 6300 (PC Suite mode) 0508 E65 (PC Suite mode) 0509 E65 (Storage mode) 0518 N9 (Storage mode) 0519 N9 (RNDIS/Ethernet mode) 051a N9 (PC Suite mode) 054d C2-01 0600 Digital Pen SU-1B 0610 CS-15 (Internet Stick 3G modem) 0661 Lumia 620/920 0662 301 Dual SIM (Mass Storage) 0663 301 Dual SIM 069a 130 [RM-1035] (Charging only) 06fc Lumia 640 Phone 0720 X (RM-980) 0800 Connectivity Cable DKU-5 0801 Data Cable DKU-6 0802 CA-42 Phone Parent 0422 ADI Systems, Inc. 0423 Computer Access Technology Corp. 000a NetMate Ethernet 000c NetMate2 Ethernet 000d USB Chief Analyzer 0100 Generic Universal Protocol Analyzer 0101 UPA USBTracer 0200 Generic 10K Universal Protocol Analyzer 020a PETracer ML 0300 Generic Universal Protocol Analyzer 0301 2500H Tracer Trainer 030a PETracer x1 1237 Andromeda Hub 0424 Microchip Technology, Inc. (formerly SMSC) 0001 Integrated Hub 0007 ULPI Transciever [USB3320] 0140 LPC47M14x hub 0acd Sitecom Internal Multi Memory reader/writer MD-005 0fdc Floppy 10cd Sitecom Internal Multi Memory reader/writer MD-005 2020 USB Hub 20cd Sitecom Internal Multi Memory reader/writer MD-005 20fc 6-in-1 Card Reader 2134 Hub 2228 9-in-2 Card Reader 223a 8-in-1 Card Reader 2412 Hub 2503 USB 2.0 Hub 2504 Hub 2507 hub 2512 USB 2.0 Hub 2513 2.0 Hub 2514 USB 2.0 Hub 2517 Hub 2524 USB MultiSwitch Hub 2602 USB 2.0 Hub 2640 USB 2.0 Hub 2660 Hub 2744 Hub 274d HTC Hub Controller 2807 Hub 3fc7 RME Babyface audio system 3fcc RME MADIface 4041 Hub and media card controller 4060 Ultra Fast Media Reader 4063 xD/SD/MS/MMC Reader 4064 Ultra Fast Media Reader 4712 USB4712 high-speed hub 4713 USB4715 high-speed hub (2 ports disabled) 4714 USB4715 high-speed hub (1 port disabled) 4715 USB4715 high-speed hub 4910 USB491x hub integrated functions (primary) 4912 USB4912 high-speed hub (1 port disabled) 4914 USB4914 high-speed hub 4916 USB4916 high-speed hub 4920 USB491x hub integrated functions (secondary) 4925 USB4925 high-speed hub (primary upstream) 4927 USB4927 high-speed hub (primary upstream) 4931 USB4925/4927 high-speed hub (secondary upstream) 4940 USB47xx/49xx hub integrated WinUSB 4942 USB47xx/49xx hub integrated I2S audio port 4943 USB47xx/49xx hub integrated I2S audio + HID port 4944 USB47xx/49xx hub integrated serial port 4946 USB47xx/49xx hub integrated serial + I2S audio port 4947 USB47xx/49xx hub integrated serial + I2S audio + HID port 494a USB47xx/49xx hub integrated WinUSB + I2S audio port 494b USB47xx/49xx hub integrated WinUSB + I2S audio + HID port 494c USB47xx/49xx hub integrated WinUSB + serial port 494e USB47xx/49xx hub integrated WinUSB + serial + I2S audio port 494f USB47xx/49xx hub integrated WinUSB + serial + I2S audio + HID port 5434 Hub 5534 Hub 5744 Hub 5807 Hub 7500 LAN7500 Ethernet 10/100/1000 Adapter 9500 LAN9500/LAN9500i 9512 SMC9512/9514 USB Hub 9514 SMC9514 Hub 9904 LAN9512/LAN9514 Ethernet 10/100 Adapter (SAL10) 9e00 LAN9500A/LAN9500Ai a700 2 Port Hub ec00 SMSC9512/9514 Fast Ethernet Adapter 0425 Motorola Semiconductors HK, Ltd 0101 G-Tech Wireless Mouse & Keyboard f102 G-Tech U+P Wireless Mouse 0426 Integrated Device Technology, Inc. 0426 WDM Driver 0427 Motorola Electronics Taiwan, Ltd 0428 Advanced Gravis Computer Tech, Ltd 4001 GamePad Pro 0429 Cirrus Logic 042a Ericsson Austrian, AG 042b Intel Corp. 9316 8x931Hx Customer Hub 042c Innovative Semiconductors, Inc. 042d Micronics 042e Acer, Inc. 0380 MP3 Player 042f Molex, Inc. 0430 Fujitsu Component Limited 0002 109 Keyboard 0005 Type 6 Keyboard 000a 109 Japanese Keyboard 000b 109 Japanese Keyboard 0082 109 Japanese Keyboard 0083 109 Japanese Keyboard 00a2 Type 7 Keyboard 0100 3-button Mouse 0406 KVM Switch 0502 Panasonic CF-19 HID Touch Panel 100e 24.1" LCD Monitor v4 / FID-638 Mouse 36ba Bus Powered Hub a101 remote key/mouse for P3 chip a102 remote key/mouse/storage for P3 chip a103 remote storage for P3 chip a111 remote keyboard for P4 chip a112 remote mouse for P4 chip a113 remote storage for P4 chip a4a2 Ethernet (RNDIS and CDC ethernet) cdab Raritan KVM dongle 0431 Itac Systems, Inc. 0100 Mouse-Trak 3-button Track Ball 0432 Unisys Corp. 0031 Document Processor 0433 Alps Electric, Inc. 1101 IBM Game Controller abab Keyboard 0434 Samsung Info. Systems America, Inc. 0435 Hyundai Electronics America 0436 Taugagreining HF 0005 CameraMate (DPCM_USB) 0437 Framatome Connectors USA 0438 Advanced Micro Devices, Inc. 7900 Root Hub 0439 Voice Technologies Group 043d Lexmark International, Inc. 0001 Laser Printer 0002 Optra E310 Printer 0003 Laser Printer 0004 Laser Printer 0005 Laser Printer 0006 Laser Printer 0007 Laser Printer 0008 Inkjet Color Printer 0009 Optra S2450 Printer 000a Laser Printer 000b Inkjet Color Printer 000c Optra E312 Printer 000d Laser Printer 000e Laser Printer 000f Laser Printer 0010 Laser Printer 0011 Laser Printer 0012 Inkjet Color Printer 0013 Inkjet Color Printer 0014 InkJet Color Printer 0015 InkJet Color Printer 0016 Z12 Color Jetprinter 0017 Z32 printer 0018 Z52 Printer 0019 Forms Printer 001a Z65 Printer 001b InkJet Photo Printer 001c Kodak Personal Picture Maker 200 Printer 001d InkJet Color Printer 001e InkJet Photo Printer 001f Kodak Personal Picture Maker 200 Card Reader 0020 Z51 Printer 0021 Z33 Printer 0022 InkJet Color Printer 0023 Laser Printer 0024 Laser Printer 0025 InkJet Color Printer 0026 InkJet Color Printer 0027 InkJet Color Printer 0028 InkJet Color Printer 0029 Scan Print Copy 002a Scan Print Copy 002b Scan Print Copy 002c Scan Print Copy 002d X70/X73 Scan/Print/Copy 002e Scan Print Copy 002f Scan Print Copy 0030 Scan Print Copy 0031 Scan Print Copy 0032 Scan Print Copy 0033 Scan Print Copy 0034 Scan Print Copy 0035 Scan Print Copy 0036 Scan Print Copy 0037 Scan Print Copy 0038 Scan Print Copy 0039 Scan Print Copy 003a Scan Print Copy 003b Scan Print Copy 003c Scan Print Copy 003d X83 Scan/Print/Copy 003e Scan Print Copy 003f Scan Print Copy 0040 Scan Print Copy 0041 Scan Print Copy 0042 Scan Print Copy 0043 Scan Print Copy 0044 Scan Print Copy 0045 Scan Print Copy 0046 Scan Print Copy 0047 Scan Print Copy 0048 Scan Print Copy 0049 Scan Print Copy 004a Scan Print Copy 004b Scan Print Copy 004c Scan Print Copy 004d Laser Printer 004e Laser Printer 004f InkJet Color Printer 0050 InkJet Color Printer 0051 Laser Printer 0052 Laser Printer 0053 InkJet Color Printer 0054 InkJet Color Printer 0057 Z35 Printer 0058 Laser Printer 005a X63 005c InkJet Color Printer 0060 X74/X75 Scanner 0061 X74 Hub 0065 X5130 0069 X74/X75 Printer 006d X125 006e C510 0072 X6170 Printer 0073 InkJet Color Printer 0078 InkJet Color Printer 0079 InkJet Color Printer 007a Generic Hub 007b InkJet Color Printer 007c X1110/X1130/X1140/X1150/X1170/X1180/X1185 007d Photo 3150 008a 4200 series 008b InkJet Color Printer 008c to CF/SM/SD/MS Card Reader 008e InkJet Color Printer 008f X422 0091 Laser Printer E232 0093 X5250 0095 E220 Printer 0096 2200 series 0097 P6250 0098 7100 series 009e P910 series Human Interface Device 009f InkJet Color Printer 00a9 IBM Infoprint 1410 MFP 00ab InkJet Color Printer 00b2 3300 series 00b8 7300 series 00b9 8300 series 00ba InkJet Color Printer 00bb 2300 series 00bd Printing Support 00be Printing Support 00bf Printing Support 00c0 6300 series 00c1 4300 series 00c7 Printing Support 00c8 Printing Support 00c9 Printing Support 00cb Printing Support 00cc E120(n) 00d0 9300 series 00d3 X340 Scanner 00d4 X342n Scanner 00d5 Printing Support 00d6 X340 Scanner 00e8 X642e 00e9 2400 series 00f6 3400 series 00f7 InkJet Color Printer 00ff InkJet Color Printer 010b 2500 series 010d 3500-4500 series 010f 6500 series 0142 X3650 (Printer, Scanner, Copier) 01fa S310 series 020e RICOH Aficio SP 4410SF 4303 Xerox WorkCentre Pro 412 043e LG Electronics USA, Inc. 3001 AN-WF100 802.11abgn Wireless Adapter [Broadcom BCM4323] 3004 TWFM-B003D 802.11abgn Wireless Module [Broadcom BCM43236B] 3009 VC400 3101 AN-WF500 802.11abgn + BT Wireless Adapter [Broadcom BCM43242] 42bd Flatron 795FT Plus Monitor 4a4d Flatron 915FT Plus Monitor 7001 MF-PD100 Soul Digital MP3 Player 7013 MP3 Player 70d7 Mouse Scanner LSM-150 [LG Smart Scan Mouse] 70f5 External HDD 8484 LPC-U30 Webcam II 8585 LPC-UC35 Webcam 8888 Electronics VCS Camera II(LPC-U20) 9800 Remote Control Receiver_iMON 9803 eHome Infrared Receiver 9804 DMB Receiver Control 9a10 34UC88-B 9a11 34UC88-B 9a39 27UP850 - WK.AEUDCSN - External Monitor 4K 9c01 LGE Sync 043f RadiSys Corp. 0440 Eizo Nanao Corp. 0441 Winbond Systems Lab. 1456 Hub 0442 Ericsson, Inc. abba Bluetooth Device 0443 Gateway, Inc. 000e Multimedia Keyboard 002e Millennium Keyboard 0445 Lucent Technologies, Inc. 0446 NMB Technologies Corp. 6781 Keyboard with PS/2 Mouse Port 6782 Keyboard 0447 Momentum Microsystems 0449 Duta Multi Robotik 0128 Menengah 0210 Dasar 0612 Lanjutan 044a Shamrock Tech. Co., Ltd 044b WSI 044c CCL/ITRI 044d Siemens Nixdorf AG 044e Alps Electric Co., Ltd 1104 Japanese Keyboard 2002 MD-5500 Printer 2014 Bluetooth Device 3001 UGTZ4 Bluetooth 3002 Bluetooth Device 3003 Bluetooth Device 3004 Bluetooth Adapter 3005 Integrated Bluetooth Device 3006 Bluetooth Adapter 3007 Bluetooth Controller (ALPS/UGX) 300c Bluetooth Controller (ALPS/UGPZ6) 300d Bluetooth Controller (ALPS/UGPZ6) 3010 Bluetooth Adapter 3017 BCM2046 Bluetooth Device ffff Compaq Bluetooth Multiport Module 044f ThrustMaster, Inc. 0400 HOTAS Cougar 0402 HOTAS Warthog Joystick 0404 HOTAS Warthog Throttle 044f GP XID 0f00 Steering Wheel for Xbox 0f03 Steering Wheel for Xbox 0f07 Controller for Xbox 0f0c Xbox Memory Unit (8MB) 0f10 Modena GT Wheel a003 Rage 3D Game Pad a01b PK-GP301 Driving Wheel a0a0 Top Gun Joystick a0a1 Top Gun Joystick (rev2) a0a3 Fusion Digital GamePad a201 PK-GP201 PlayStick b108 T-Flight Hotas X Flight Stick b10a T.16000M Joystick b203 360 Modena Pro Wheel b300 Firestorm Dual Power b303 FireStorm Dual Analog 2 b304 Firestorm Dual Power b307 vibrating Upad b30b Wireless VibrationPad b315 Firestorm Dual Analog 3 b320 Dual Trigger gamepad PC/PS2 2.0 b323 Dual Trigger 3-in-1 (PC Mode) b324 Dual Trigger 3-in-1 (PS3 Mode) b326 Gamepad GP XID b351 F16 MFD 1 b352 F16 MFD 2 b365 UbiSoft UbiConnect b603 force feedback Wheel b605 force feedback Racing Wheel b651 Ferrari GT Rumble Force Wheel b653 RGT Force Feedback Clutch Racing Wheel b654 Ferrari GT Force Feedback Wheel b677 T150 Racing Wheel b678 T.Flight Rudder Pedals b679 T-Rudder b687 TWCS Throttle b700 Tacticalboard 0450 DFI, Inc. 0451 Texas Instruments, Inc. 0422 TUSB422 Port Controller with Power Delivery 1234 Bluetooth Device 1428 Hub 1446 TUSB2040/2070 Hub 16a2 CC Debugger 16a6 BM-USBD1 BlueRobin RF heart rate sensor receiver 16a8 CC2531 ZigBee 16ae CC2531 Dongle 2036 TUSB2036 Hub 2046 TUSB2046 Hub 2077 TUSB2077 Hub 2f90 SM-USB-DIG 3200 TUSB3200 Boot Loader 3410 TUSB3410 Microcontroller 3f00 OMAP1610 3f02 SMC WSKP100 Wi-Fi Phone 505f TUSB5052 Serial 5153 TUSB5052 Hub 5409 Frontier Labs NEX IA+ Digital Audio Player 6000 AU5 ADSL Modem (pre-reenum) 6001 AU5 ADSL Modem 6060 RNDIS/BeWAN ADSL2+ 6070 RNDIS/BeWAN ADSL2+ 625f TUSB6250 ATA Bridge 8041 Hub 8042 Hub 8043 Hub 8140 TUSB8041 4-Port Hub 8142 TUSB8041 4-Port Hub 9261 TUSB9261 SerialATA-Bridge 926b TUSB9260 Boot Loader bef3 CC1352R1 Launchpad dbc0 Device Bay Controller e001 GraphLink [SilverLink] e003 TI-84 Plus Calculator e004 TI-89 Titanium Calculator e008 TI-84 Plus Silver Calculator e00e TI-89 Titanium Presentation Link e00f TI-84 Plus Presentation Link e010 TI SmartPad Keyboard e011 Nspire CAS+ prototype e012 TI-Nspire Calculator e013 Network Bridge e01c Data Collection Sled [Nspire Lab Cradle, Nspire Datatracker Cradle] e01e Nspire CX Navigator Access Point e01f Python Adapter (firmware install mode) e020 Python Adapter e022 Nspire CX II f430 MSP-FET430UIF JTAG Tool f432 eZ430 Development Tool ffff Bluetooth Device 0452 Mitsubishi Electronics America, Inc. 0021 HID Monitor Controls 0050 Diamond Pro 900u CRT Monitor 0051 Integrated Hub 0100 Control Panel for Leica TCS SP5 0453 CMD Technology 6781 NMB Keyboard 6783 Chicony Composite Keyboard 0454 Vobis Microcomputer AG 0455 Telematics International, Inc. 0456 Analog Devices, Inc. 7031 FX2 SPI/I2C Interface b672 Libiio based instrument [ADALM2000] b673 LibIIO based AD9363 Software Defined Radio [ADALM-PLUTO] f000 FT2232 JTAG ICE [gnICE] f001 FT2232H Hi-Speed JTAG ICE [gnICE+] 0457 Silicon Integrated Systems Corp. 0150 Super Talent 1GB Flash Drive 0151 Super Flash 1GB / GXT 64MB Flash Drive 0162 SiS162 usb Wireless LAN Adapter 0163 SiS163U 802.11 Wireless LAN Adapter 0817 SiS-184-ASUS-4352.17 touch panel 10e1 HID Touch Controller 5401 Wireless Adapter RO80211GS-USB 0458 KYE Systems Corp. (Mouse Systems) 0001 Mouse 0002 Genius NetMouse Pro 0003 Genius NetScroll+ 0006 Easy Mouse+ 0007 Trackbar Emotion 000b NetMouse Wheel(P+U) 000c TACOMA Fingerprint V1.06.01 000e Genius NetScroll Optical 0013 TACOMA Fingerprint Mouse V1.06.01 001a Genius WebScroll+ 002e NetScroll + Traveler / NetScroll 110 0036 Pocket Mouse LE 0039 NetScroll+ Superior 003a NetScroll+ Mini Traveler / Genius NetScroll 120 004c Slimstar Pro Keyboard 0056 Ergo 300 Mouse 0057 Enhanced Gaming Device 0059 Enhanced Laser Device 005a Enhanced Device 005b Enhanced Device 005c Enhanced Laser Gaming Device 005d Enhanced Device 0061 Bluetooth Dongle 0066 Genius Traveler 1000 Wireless Mouse 0072 Navigator 335 0083 Bluetooth Dongle 0087 Ergo 525V Laser Mouse 0088 Genius Traveler 515 Laser 0089 Genius Traveler 350 00ca Pen Mouse 0100 EasyPen Tablet 0101 CueCat 011b NetScroll T220 0186 Genius DX-120 Mouse 1001 Joystick 1002 Game Pad 1003 Genius VideoCam 1004 Flight2000 F-23 Joystick 100a Aashima Technology Trust Sight Fighter Vibration Feedback Joystick 2001 ColorPage-Vivid Pro Scanner 2004 ColorPage-HR6 V1 Scanner 2005 ColorPage-HR6/Vivid3 2007 ColorPage-HR6 V2 Scanner 2008 ColorPage-HR6 V2 Scanner 2009 ColorPage-HR6A Scanner 2011 ColorPage-Vivid3x Scanner 2012 Plustek Scanner 2013 ColorPage-HR7 Scanner 2014 ColorPage-Vivid4 2015 ColorPage-HR7LE Scanner 2016 ColorPage-HR6X Scanner 2017 ColorPage-Vivid3xe 2018 ColorPage-HR7X 2019 ColorPage-HR6X Slim 201a ColorPage-Vivid4xe 201b ColorPage-Vivid4x 201c ColorPage-HR8 201d ColorPage-Vivid 1200 X 201e ColorPage-Slim 1200 201f ColorPage-Vivid 1200 XE 2020 ColorPage-Slim 1200 USB2 2021 ColorPage-SF600 3017 SPEED WHEEL 3 Vibration 3018 Wireless 2.4Ghz Game Pad 3019 10-Button USB Joystick with Vibration 301a MaxFire G-12U Vibration 301c Genius MaxFighter F-16U 301d Genius MaxFire MiniPad 400f Genius TVGo DVB-T02Q MCE 4012 TVGo DVB-T03 [AF9015] 5003 G-pen 560 Tablet 5004 G-pen Tablet 5005 Genius EasyPen M406 5012 Genius EasyPen M406W 5014 Genius EasyPen 340 505e Genius iSlim 330 6001 GF3000F Ethernet Adapter 7004 VideoCAM Express V2 7006 Dsc 1.3 Smart Camera Device 7007 VideoCAM Web 7009 G-Shot G312 Still Camera Device 700c VideoCAM Web V3 700d G-Shot G511 Composite Device 700f VideoCAM Web 7012 WebCAM USB2.0 7014 VideoCAM Live V3 701c G-Shot G512 Still Camera 7020 Sim 321C 7025 Eye 311Q Camera 7029 Genius Look 320s (SN9C201 + HV7131R) 702c Trek 320R Camera 702f Genius Slim 322 7035 i-Look 325T Camera 7045 Genius Look 1320 V2 704c Genius i-Look 1321 704d Slim 1322AF 7055 Slim 2020AF camera 705a Asus USB2.0 Webcam 705c Genius iSlim 1300AF 7061 Genius iLook 1321 V2 7066 Acer Crystal Eye Webcam 7067 Genius iSlim 1300AF V2 7068 Genius eFace 1325R 706d Genius iSlim 2000AF V2 7076 Genius FaceCam 312 7079 FaceCam 2025R 707f TVGo DVB-T03 [RTL2832] 7088 WideCam 1050 7089 Genius FaceCam 320 708c Genius WideCam F100 0459 Adobe Systems, Inc. 045a SONICblue, Inc. 07da Supra Express 56K modem 0b4a SupraMax 2890 56K Modem [Lucent Atlas] 0b68 SupraMax 56K Modem 5001 Rio 600 MP3 Player 5002 Rio 800 MP3 Player 5003 Nike Psa/Play MP3 Player 5005 Rio S10 MP3 Player 5006 Rio S50 MP3 Player 5007 Rio S35 MP3 Player 5008 Rio 900 MP3 Player 5009 Rio S30 MP3 Player 500d Fuse MP3 Player 500e Chiba MP3 Player 500f Cali MP3 Player 5010 Rio S11 MP3 Player 501c Virgin MPF-1000 501d Rio Fuse 501e Rio Chiba 501f Rio Cali 503f Cali256 MP3 Player 5042 Rio Forge 5202 Rio Riot MP3 Player 5210 Rio Karma Music Player 5220 Rio Nitrus MP3 Player 5221 Rio Eigen 045b Hitachi, Ltd 0053 RX610 RX-Stick 0229 mSATA Adapter [renkforce Pi-102] 045d Nortel Networks, Ltd 045e Microsoft Corp. 0007 SideWinder Game Pad 0008 SideWinder Precision Pro 0009 IntelliMouse 000b Natural Keyboard Elite 000e SideWinder® Freestyle Pro 0014 Digital Sound System 80 001a SideWinder Precision Racing Wheel 001b SideWinder Force Feedback 2 Joystick 001c Internet Keyboard Pro 001d Natural Keyboard Pro 001e IntelliMouse Explorer 0023 Trackball Optical 0024 Trackball Explorer 0025 IntelliEye Mouse 0026 SideWinder GamePad Pro 0027 SideWinder PnP GamePad 0028 SideWinder Dual Strike 0029 IntelliMouse Optical 002b Internet Keyboard Pro 002d Internet Keyboard 002f Integrated Hub 0033 Sidewinder Strategic Commander 0034 SideWinder Force Feedback Wheel 0038 SideWinder Precision 2 0039 IntelliMouse Optical 003b SideWinder Game Voice 003c SideWinder Joystick 0040 Wheel Mouse Optical 0047 IntelliMouse Explorer 3.0 0048 Office Keyboard 1.0A 0053 Optical Mouse 0059 Wireless IntelliMouse Explorer 005c Office Keyboard (106/109) 005f Wireless MultiMedia Keyboard 0061 Wireless MultiMedia Keyboard (106/109) 0063 Wireless Natural MultiMedia Keyboard 0065 Wireless Natural MultiMedia Keyboard (106/109) 006a Wireless Optical Mouse (IntelliPoint) 006d eHome Remote Control Keyboard keys 006e MN-510 802.11b Wireless Adapter [Intersil ISL3873B] 006f Smart Display Reference Device 0070 Wireless MultiMedia Keyboard 0071 Wireless MultiMedia Keyboard (106/109) 0072 Wireless Natural MultiMedia Keyboard 0073 Wireless Natural MultiMedia Keyboard (106/109) 0079 IXI Ogo CT-17 handheld device 007a 10/100 USB NIC 007d Notebook Optical Mouse 007e Wireless Transceiver for Bluetooth 0080 Digital Media Pro Keyboard 0083 Basic Optical Mouse 0084 Basic Optical Mouse 008a Wireless Optical Desktop Receiver 2.0A 008b Dual Receiver Wireless Mouse (IntelliPoint) 008c Wireless Intellimouse Explorer 2.0 0095 IntelliMouse Explorer 4.0 (IntelliPoint) 009c Wireless Transceiver for Bluetooth 2.0 009d Wireless Optical Desktop 3.0 00a0 eHome Infrared Receiver 00a4 Compact Optical Mouse, model 1016 00b0 Digital Media Pro Keyboard 00b4 Digital Media Keyboard 1.0A 00b9 Wireless Optical Mouse 3.0 00bb Fingerprint Reader 00bc Fingerprint Reader 00bd Fingerprint Reader 00c2 MN-710 802.11g Wireless Adapter [Intersil ISL3886] 00c9 MTP Device 00ca Fingerprint Reader 00cb Basic Optical Mouse v2.0 00ce Generic PPC Flash device 00d1 Optical Mouse with Tilt Wheel 00d2 Notebook Optical Mouse with Tilt Wheel 00da eHome Infrared Receiver 00db Natural Ergonomic Keyboard 4000 V1.0 00dd Comfort Curve Keyboard 2000 V1.0 00e1 Wireless Laser Mouse 6000 Receiver 00f4 LifeCam VX-6000 (SN9C20x + OV9650) 00f5 LifeCam VX-3000 00f6 Comfort Optical Mouse 1000 00f7 LifeCam VX-1000 00f8 LifeCam NX-6000 00f9 Wireless Desktop Receiver 3.1 0202 Xbox Controller 0280 Xbox Memory Unit (8MB) 0283 Xbox Communicator 0284 Xbox DVD Playback Kit 0285 Xbox Controller S 0288 Xbox Controller S Hub 0289 Xbox Controller S 028b Xbox360 DVD Emulator 028d Xbox360 Memory Unit 64MB 028e Xbox360 Controller 028f Xbox360 Wireless Controller via Plug & Charge Cable 0290 Xbox360 Performance Pipe (PIX) 0291 Xbox 360 Wireless Receiver for Windows 0292 Xbox360 Wireless Networking Adapter 029c Xbox360 HD-DVD Drive 029d Xbox360 HD-DVD Drive 029e Xbox360 HD-DVD Memory Unit 02a0 Xbox360 Big Button IR 02a8 Xbox360 Wireless N Networking Adapter [Atheros AR7010+AR9280] 02ad Xbox NUI Audio 02ae Xbox NUI Camera 02b0 Xbox NUI Motor 02b6 Xbox360 Bluetooth Wireless Headset 02bb Kinect Audio 02be Kinect for Windows NUI Audio 02bf Kinect for Windows NUI Camera 02c2 Kinect for Windows NUI Motor 02d1 Xbox One Controller 02d5 Xbox One Digital TV Tuner 02dd Xbox One Controller (Firmware 2015) 02e0 Xbox One Wireless Controller 02e3 Xbox One Elite Controller 02e6 Xbox Wireless Adapter for Windows 02ea Xbox One Controller 02f3 Xbox One Chatpad 02fd Xbox One S Controller [Bluetooth] 02fe Xbox Wireless Adapter for Windows 0306 Surface Pro 7 SD Card Reader 0400 Windows Powered Pocket PC 2002 0401 Windows Powered Pocket PC 2002 0402 Windows Powered Pocket PC 2002 0403 Windows Powered Pocket PC 2002 0404 Windows Powered Pocket PC 2002 0405 Windows Powered Pocket PC 2002 0406 Windows Powered Pocket PC 2002 0407 Windows Powered Pocket PC 2002 0408 Windows Powered Pocket PC 2002 0409 Windows Powered Pocket PC 2002 040a Windows Powered Pocket PC 2002 040b Windows Powered Pocket PC 2002 040c Windows Powered Pocket PC 2002 040d Windows Powered Pocket PC 2002 040e Windows Powered Pocket PC 2002 040f Windows Powered Pocket PC 2002 0410 Windows Powered Pocket PC 2002 0411 Windows Powered Pocket PC 2002 0412 Windows Powered Pocket PC 2002 0413 Windows Powered Pocket PC 2002 0414 Windows Powered Pocket PC 2002 0415 Windows Powered Pocket PC 2002 0416 Windows Powered Pocket PC 2002 0417 Windows Powered Pocket PC 2002 0432 Windows Powered Pocket PC 2003 0433 Windows Powered Pocket PC 2003 0434 Windows Powered Pocket PC 2003 0435 Windows Powered Pocket PC 2003 0436 Windows Powered Pocket PC 2003 0437 Windows Powered Pocket PC 2003 0438 Windows Powered Pocket PC 2003 0439 Windows Powered Pocket PC 2003 043a Windows Powered Pocket PC 2003 043b Windows Powered Pocket PC 2003 043c Windows Powered Pocket PC 2003 043d Becker Traffic Assist Highspeed 7934 043e Windows Powered Pocket PC 2003 043f Windows Powered Pocket PC 2003 0440 Windows Powered Pocket PC 2003 0441 Windows Powered Pocket PC 2003 0442 Windows Powered Pocket PC 2003 0443 Windows Powered Pocket PC 2003 0444 Windows Powered Pocket PC 2003 0445 Windows Powered Pocket PC 2003 0446 Windows Powered Pocket PC 2003 0447 Windows Powered Pocket PC 2003 0448 Windows Powered Pocket PC 2003 0449 Windows Powered Pocket PC 2003 044a Windows Powered Pocket PC 2003 044b Windows Powered Pocket PC 2003 044c Windows Powered Pocket PC 2003 044d Windows Powered Pocket PC 2003 044e Windows Powered Pocket PC 2003 044f Windows Powered Pocket PC 2003 0450 Windows Powered Pocket PC 2003 0451 Windows Powered Pocket PC 2003 0452 Windows Powered Pocket PC 2003 0453 Windows Powered Pocket PC 2003 0454 Windows Powered Pocket PC 2003 0455 Windows Powered Pocket PC 2003 0456 Windows Powered Pocket PC 2003 0457 Windows Powered Pocket PC 2003 0458 Windows Powered Pocket PC 2003 0459 Windows Powered Pocket PC 2003 045a Windows Powered Pocket PC 2003 045b Windows Powered Pocket PC 2003 045c Windows Powered Pocket PC 2003 045d Windows Powered Pocket PC 2003 045e Windows Powered Pocket PC 2003 045f Windows Powered Pocket PC 2003 0460 Windows Powered Pocket PC 2003 0461 Windows Powered Pocket PC 2003 0462 Windows Powered Pocket PC 2003 0463 Windows Powered Pocket PC 2003 0464 Windows Powered Pocket PC 2003 0465 Windows Powered Pocket PC 2003 0466 Windows Powered Pocket PC 2003 0467 Windows Powered Pocket PC 2003 0468 Windows Powered Pocket PC 2003 0469 Windows Powered Pocket PC 2003 046a Windows Powered Pocket PC 2003 046b Windows Powered Pocket PC 2003 046c Windows Powered Pocket PC 2003 046d Windows Powered Pocket PC 2003 046e Windows Powered Pocket PC 2003 046f Windows Powered Pocket PC 2003 0470 Windows Powered Pocket PC 2003 0471 Windows Powered Pocket PC 2003 0472 Windows Powered Pocket PC 2003 0473 Windows Powered Pocket PC 2003 0474 Windows Powered Pocket PC 2003 0475 Windows Powered Pocket PC 2003 0476 Windows Powered Pocket PC 2003 0477 Windows Powered Pocket PC 2003 0478 Windows Powered Pocket PC 2003 0479 Windows Powered Pocket PC 2003 047a Windows Powered Pocket PC 2003 047b Windows Powered Pocket PC 2003 04c8 Windows Powered Smartphone 2002 04c9 Windows Powered Smartphone 2002 04ca Windows Powered Smartphone 2002 04cb Windows Powered Smartphone 2002 04cc Windows Powered Smartphone 2002 04cd Windows Powered Smartphone 2002 04ce Windows Powered Smartphone 2002 04d7 Windows Powered Smartphone 2003 04d8 Windows Powered Smartphone 2003 04d9 Windows Powered Smartphone 2003 04da Windows Powered Smartphone 2003 04db Windows Powered Smartphone 2003 04dc Windows Powered Smartphone 2003 04dd Windows Powered Smartphone 2003 04de Windows Powered Smartphone 2003 04df Windows Powered Smartphone 2003 04e0 Windows Powered Smartphone 2003 04e1 Windows Powered Smartphone 2003 04e2 Windows Powered Smartphone 2003 04e3 Windows Powered Smartphone 2003 04e4 Windows Powered Smartphone 2003 04e5 Windows Powered Smartphone 2003 04e6 Windows Powered Smartphone 2003 04e7 Windows Powered Smartphone 2003 04e8 Windows Powered Smartphone 2003 04e9 Windows Powered Smartphone 2003 04ea Windows Powered Smartphone 2003 04ec Windows Phone (Zune) 063e Zune HD Media Player 0640 KIN Phone 0641 KIN Phone 0642 KIN Phone 0707 Wireless Laser Mouse 8000 0708 Transceiver v 3.0 for Bluetooth 070a Charon Bluetooth Dongle (DFU) 070f LifeChat LX-3000 Headset 0710 Zune Media Player 0713 Wireless Presenter Mouse 8000 0719 Xbox 360 Wireless Adapter 071f Mouse/Keyboard 2.4GHz Transceiver V2.0 0721 LifeCam NX-3000 (UVC-compliant) 0723 LifeCam VX-7000 (UVC-compliant) 0724 SideWinder Mouse 0728 LifeCam VX-5000 0730 Digital Media Keyboard 3000 0734 Wireless Optical Desktop 700 0736 Sidewinder X5 Mouse 0737 Compact Optical Mouse 500 0745 Nano Transceiver v1.0 for Bluetooth 074a LifeCam VX-500 [1357] 0750 Wired Keyboard 600 0752 Wired Keyboard 400 075d LifeCam Cinema 0761 LifeCam VX-2000 0765 Xbox360 Slim Internal Wireless Module (1400) [Marvell 88W8786U] 0766 LifeCam VX-800 0768 Sidewinder X4 076c Comfort Mouse 4500 076d LifeCam HD-5000 0770 LifeCam VX-700 0772 LifeCam Studio 0779 LifeCam HD-3000 077f LifeChat LX-6000 Headset 0780 Comfort Curve Keyboard 3000 0797 Optical Mouse 200 0799 Surface Pro embedded keyboard 07a5 Wireless Receiver 1461C 07b2 2.4GHz Transceiver v8.0 used by mouse Wireless Desktop 900 07b6 Comfort Curve Keyboard 3000 07b9 Wired Keyboard 200 07c6 RTL8153 GigE [Surface Ethernet Adapter] 07ca Surface Pro 3 Docking Station Audio Device 07cd Surface Keyboard 07f8 Wired Keyboard 600 (model 1576) 07fd Nano Transceiver 1.1 0800 Wireless keyboard (All-in-One-Media) 0810 LifeCam HD-3000 0823 Classic IntelliMouse 082a Pro Intellimouse 0900 Surface Dock Hub 0901 Surface Dock Hub 0902 Surface Dock Hub 0903 Surface Dock Hub 0904 Surface Dock Extender 0905 Surface Dock Audio 090b Hub 090c SD Card 091a Hub 0927 RTL8153B GigE [Surface Ethernet Adapter] 0955 Hub 0957 Hub 097a Generic Superspeed Hub [Azure Kinect] 097b Generic Hub [Azure Kinect] 097c Azure Kinect Depth Camera 097d Azure Kinect 4K Camera 097e Azure Kinect Microphone Array 09a0 RTL8153B GigE [Surface Ethernet Adapter] 09c0 Surface Type Cover 0a00 Lumia 950 (RM-1104/RM-1118) 0b00 Xbox Elite Series 2 Controller (model 1797) 0b12 Xbox Controller 930a ISOUSB.SYS Intel 82930 Isochronous IO Test Board ffca Catalina fff8 Keyboard ffff Windows CE Mass Storage 0460 Ace Cad Enterprise Co., Ltd 0004 Tablet (5x3.75) 0006 LCD Tablet (12x9) 0008 Tablet (3x2.25) 0461 Primax Electronics, Ltd 0010 HP PR1101U / Primax PMX-KPR1101U Keyboard 0300 G2-300 Scanner 0301 G2E-300 Scanner 0302 G2-300 #2 Scanner 0303 G2E-300 #2 Scanner 0340 Colorado 9600 Scanner 0341 Colorado 600u Scanner 0345 Visioneer 6200 Scanner 0346 Memorex Maxx 6136u Scanner 0347 Primascan Colorado 2600u/Visioneer 4400 Scanner 0360 Colorado 19200 Scanner 0361 Colorado 1200u Scanner 0363 VistaScan Astra 3600(ENG) 0364 LG Electronics Scanworks 600U Scanner 0365 VistaScan Astra 3600(ENG) 0366 6400 0367 VistaScan Astra 3600(ENG) 0371 Visioneer Onetouch 8920 Scanner 0374 UMAX Astra 2500 0375 VistaScan Astra 3600(ENG) 0377 Medion MD 5345 Scanner 0378 VistaScan Astra 3600(ENG) 037b Medion MD 6190 Scanner 037c VistaScan Astra 3600(ENG) 0380 G2-600 Scanner 0381 ReadyScan 636i Scanner 0382 G2-600 #2 Scanner 0383 G2E-600 Scanner 038a UMAX Astra 3000/3600 038b Xerox 2400 Onetouch 038c UMAX Astra 4100 0392 Medion/Lifetec/Tevion/Cytron MD 6190 03a8 9420M 0813 IBM UltraPort Camera 0815 Micro Innovations IC200 Webcam 0819 Fujifilm IX-30 Camera [webcam mode] 081a Fujifilm IX-30 Camera [storage mode] 081c Elitegroup ECS-C11 Camera 081d Elitegroup ECS-C11 Storage 0a00 Micro Innovations Web Cam 320 4d01 Comfort Keyboard / Kensington Orbit Elite 4d02 Mouse-in-a-Box 4d03 Kensington Mouse-in-a-box 4d04 Mouse 4d06 Balless Mouse (HID) 4d0f HP Optical Mouse 4d15 Dell Optical Mouse 4d17 Optical Mouse 4d20 HP Optical Mouse 4d2a PoPo Elixir Mouse (HID) 4d2b Wireless Laser Mini Mouse (HID) 4d2c PoPo Mini Pointer Mouse (HID) 4d2e Optical Mobile Mouse (HID) 4d51 0Y357C PMX-MMOCZUL (B) [Dell Laser Mouse] 4d62 HP Laser Mobile Mini Mouse 4d64 Asus wired optical mouse - Model MOEWUO 4d75 Rocketfish RF-FLBTAD Bluetooth Adapter 4d81 Dell N889 Optical Mouse 4d8a HP Multimedia Keyboard 4d91 Laser mouse M-D16DL 4d92 Optical mouse M-D17DR 4db1 Dell Laptop Integrated Webcam 2Mpix 4de3 HP 5-Button Optical Comfort Mouse 4de7 webcam 4e04 Lenovo Keyboard KB1021 4e22 Dell Mouse, 2 Buttons, Modell: MS111-P 4e26 Asus wired keyboard - model KB73211 4e6f Acer Wired Keyboard Model KBAY211 4e72 Acer Wired Keyboard Model KBAY211 0463 MGE UPS Systems 0001 UPS ffff UPS 0464 AMP/Tycoelectronics Corp. 0467 AT&T Paradyne 0468 Wieson Technologies Co., Ltd 046a CHERRY 0001 Keyboard 0003 My3000 Hub 0004 CyBoard Keyboard 0005 XX33 SmartCard Reader Keyboard 0008 Wireless Keyboard and Mouse 0010 SmartBoard XX44 0011 G83 (RS 6000) Keyboard 0021 CyMotion Expert Combo 0023 Keyboard 0027 CyMotion Master Solar Keyboard 002a Wireless Mouse & Keyboard 002d SmartTerminal XX44 003c Raptor Gaming Keyboard 003d Raptor Gaming Keyboard Integrated Hub 003e SmartTerminal ST-2xxx 0041 G86 6240 Keyboard 0076 MX-Board 3.0 G80-3850 0077 MX BOARD 3.0S FL NBL Keyboard 0079 MX BOARD 3.0S FL RGB Keyboard 0080 eHealth Terminal ST 1503 0081 eHealth Keyboard G87 1504 0083 MX BOARD 3.0S FL RGB (KOREAN) Keyboard 0084 eHealth Terminal ST1506 0085 eHealth PIN-Pad PP1516 00a1 SmartCard Reader Keyboard KC 1000 SC 00ab MX 1.0 FL BL Keyboard 00ac MX BOARD 1.0 TKL RGB Keyboard 00b7 MX BOARD 8.0 TKL RGB Keyboard 00bb MX BOARD 10.0 FL RGB Keyboard 00c3 G80 3000 TKL NBL Keyboard 00c4 MX BOARD 2.0S FL RGB Keyboard 00c5 G80 3000 TKL RGB Keyboard 00c7 MV BOARD 3.0 FL RGB 00c9 CCF MX 8.0 TKL BL Keyboard 00ca CCF MX 1.0 TKL BL Keyboard 00cb CCF MX 1.0 TKL NBL Keyboard 00cd G80 3000 TKL NBL (KOREAN) Keyboard 00ce MX BOARD 2.0S FL NBL Keyboard 00d2 MX 1.0 FL NBL Keyboard 00d3 MX 1.0 FL RGB Keyboard 00dd G80-3000N RGB TKL Keyboard 00de G80-3000N FL RGB Keyboard 00df MX BOARD 10.0N FL RGB Keyboard 0106 R-300 Wireless Mouse Receiver 010d MX-Board 3.0 Keyboard 0113 KC 6000 Slim Keyboard 0180 Strait 3.0 01a4 MC 2.1 Mouse 01a6 MX BOARD 2.0S FL RGB DE Keyboard b090 Keyboard b091 Mouse c099 Stream Keyboard TKL c110 KC 4500 Ergo Keyboard 046b American Megatrends, Inc. 0001 Keyboard 0101 PS/2 Keyboard, Mouse & Joystick Ports 0301 USB 1.0 Hub 0500 Serial & Parallel Ports ff10 Virtual Keyboard and Mouse ff20 Virtual CDROM 046c Toshiba Corp., Digital Media Equipment 046d Logitech, Inc. 0082 Acer Aspire 5672 Webcam 0200 WingMan Extreme Joystick 0203 M2452 Keyboard 0242 Chillstream for Xbox 360 0301 M4848 Mouse 0401 HP PageScan 0402 NEC PageScan 040f Logitech/Storm PageScan 0430 Mic (Cordless) 0801 QuickCam Home 0802 Webcam C200 0804 Webcam C250 0805 Webcam C300 0807 Webcam B500 0808 Webcam C600 0809 Webcam Pro 9000 080a Portable Webcam C905 080f Webcam C120 0810 QuickCam Pro 0819 Webcam C210 081a Webcam C260 081b Webcam C310 081d HD Webcam C510 0820 QuickCam VC 0821 HD Webcam C910 0823 HD Webcam B910 0825 Webcam C270 0826 HD Webcam C525 0828 HD Webcam B990 082b Webcam C170 082c HD Webcam C615 082d HD Pro Webcam C920 0830 QuickClip 0836 B525 HD Webcam 0837 BCC950 ConferenceCam 0838 BCC950 ConferenceCam audio 0839 BCC950 ConferenceCam integated hub 0840 QuickCam Express 0843 Webcam C930e 0845 ConferenceCam CC3000e Camera 0846 ConferenceCam CC3000e Speakerphone 084b ConferenceCam Connect Video 084c ConferenceCam Connect Audio 084e ConferenceCam Connect 0850 QuickCam Web 0857 Logi Group Speakerphone 085c C922 Pro Stream Webcam 085e BRIO Ultra HD Webcam 086b BRIO 4K Stream Edition 0870 QuickCam Express 0882 Logi Group Speakerphone 0890 QuickCam Traveler 0892 C920 HD Pro Webcam 0893 StreamCam 0894 CrystalCam 0895 QuickCam for Dell Notebooks 0896 OrbiCam 0897 QuickCam for Dell Notebooks 0899 QuickCam for Dell Notebooks 089d QuickCam E2500 series 08a0 QuickCam IM 08a1 QuickCam IM with sound 08a2 Labtec Webcam Pro 08a3 QuickCam QuickCam Chat 08a6 QuickCam IM 08a7 QuickCam Image 08a9 Notebook Deluxe 08aa Labtec Notebooks 08ac QuickCam Cool 08ad QuickCam Communicate STX 08ae QuickCam for Notebooks 08af QuickCam Easy/Cool 08b0 QuickCam 3000 Pro [pwc] 08b1 QuickCam Notebook Pro 08b2 QuickCam Pro 4000 08b3 QuickCam Zoom 08b4 QuickCam Zoom 08b5 QuickCam Sphere 08b9 QuickCam IM 08bd Microphone (Pro 4000) 08c0 QuickCam Pro 3000 08c1 QuickCam Fusion 08c2 QuickCam PTZ 08c3 Camera (Notebooks Pro) 08c5 QuickCam Pro 5000 08c6 QuickCam for DELL Notebooks 08c7 QuickCam OEM Cisco VT Camera II 08c9 QuickCam Ultra Vision 08ca Mic (Fusion) 08cb Mic (Notebooks Pro) 08cc Mic (PTZ) 08ce QuickCam Pro 5000 08cf QuickCam UpdateMe 08d0 QuickCam Express 08d7 QuickCam Communicate STX 08d8 QuickCam for Notebook Deluxe 08d9 QuickCam IM/Connect 08da QuickCam Messenger 08dd QuickCam for Notebooks 08e0 QuickCam Express 08e1 Labtec Webcam 08e5 C920 PRO HD Webcam 08f0 QuickCam Messenger 08f1 QuickCam Express 08f2 Microphone (Messenger) 08f3 QuickCam Express 08f4 Labtec Webcam 08f5 QuickCam Messenger Communicate 08f6 QuickCam Messenger Plus 0900 ClickSmart 310 0901 ClickSmart 510 0903 ClickSmart 820 0905 ClickSmart 820 0910 QuickCam Cordless 0920 QuickCam Express 0921 Labtec Webcam 0922 QuickCam Live 0928 QuickCam Express 0929 Labtec Webcam Pro 092a QuickCam for Notebooks 092b Labtec Webcam Plus 092c QuickCam Chat 092d QuickCam Express / Go 092e QuickCam Chat 092f QuickCam Express Plus 0950 Pocket Camera 0960 ClickSmart 420 0970 Pocket750 0990 QuickCam Pro 9000 0991 QuickCam Pro for Notebooks 0992 QuickCam Communicate Deluxe 0994 QuickCam Orbit/Sphere AF 09a1 QuickCam Communicate MP/S5500 09a2 QuickCam Communicate Deluxe/S7500 09a4 QuickCam E 3500 09a5 Quickcam 3000 For Business 09a6 QuickCam Vision Pro 09b0 Acer OrbiCam 09b2 Fujitsu Webcam 09c0 QuickCam for Dell Notebooks Mic 09c1 QuickCam Deluxe for Notebooks 0a01 USB Headset 0a02 Premium Stereo USB Headset 350 0a03 Logitech USB Microphone 0a04 V20 portable speakers (USB powered) 0a07 Z-10 Speakers 0a0b ClearChat Pro USB 0a0c Clear Chat Comfort USB Headset 0a10 V10 Notebook Speakers 0a13 Z-5 Speakers 0a14 USB Headset 0a15 G35 Headset 0a17 G330 Headset 0a1f G930 0a23 Laptop Speaker Z305 0a29 H600 [Wireless Headset] 0a37 USB Headset H540 0a38 Headset H340 0a44 Headset H390 0a45 960 Headset 0a4d G430 Surround Sound Gaming Headset 0a4f MINI BOOM 0a5b G933 Wireless Headset Dongle 0a5d G933 Headset Battery Charger 0a66 [G533 Wireless Headset Dongle] 0a8f H390 headset with microphone 0a90 Zone Receiver 0aaa Logitech G PRO X Gaming Headset 0ac4 G535 Wireless Gaming Headset 0b02 C-UV35 [Bluetooth Mini-Receiver] (HID proxy mode) 8801 Video Camera b014 Bluetooth Mouse M336/M337/M535 b305 BT Mini-Receiver bfe4 Premium Optical Wheel Mouse c000 N43 [Pilot Mouse] c001 N48/M-BB48/M-UK96A [FirstMouse Plus] c002 M-BA47 [MouseMan Plus] c003 MouseMan c004 WingMan Gaming Mouse c005 WingMan Gaming Wheel Mouse c00b MouseMan Wheel c00c Optical Wheel Mouse c00d MouseMan Wheel+ c00e M-BJ58/M-BJ69 Optical Wheel Mouse c00f MouseMan Traveler/Mobile c011 Optical MouseMan c012 Mouseman Dual Optical c014 Corded Workstation Mouse c015 Corded Workstation Mouse c016 Optical Wheel Mouse c018 Optical Wheel Mouse c019 Optical Tilt Wheel Mouse c01a M-BQ85 Optical Wheel Mouse c01b MX310 Optical Mouse c01c Optical Mouse c01d MX510 Optical Mouse c01e MX518 Optical Mouse c024 MX300 Optical Mouse c025 MX500 Optical Mouse c030 iFeel Mouse c031 iFeel Mouse+ c032 MouseMan iFeel c033 iFeel MouseMan+ c034 MouseMan Optical c035 Mouse c036 Mouse c037 Mouse c038 Mouse c03d M-BT96a Pilot Optical Mouse c03e Premium Optical Wheel Mouse (M-BT58) c03f M-BT85 [UltraX Optical Mouse] c040 Corded Tilt-Wheel Mouse c041 G5 Laser Mouse c042 G3 Laser Mouse c043 MX320/MX400 Laser Mouse c044 LX3 Optical Mouse c045 Optical Mouse c046 RX1000 Laser Mouse c047 Laser Mouse M-UAL120 c048 G9 Laser Mouse c049 G5 Laser Mouse c050 RX 250 Optical Mouse c051 G3 (MX518) Optical Mouse c053 Laser Mouse c054 Bluetooth mini-receiver c058 M115 Mouse c05a M90/M100 Optical Mouse c05b M-U0004 810-001317 [B110 Optical USB Mouse] c05d Optical Mouse c05f M115 Optical Mouse c061 RX1500 Laser Mouse c062 M-UAS144 [LS1 Laser Mouse] c063 DELL Laser Mouse c064 M110 corded optical mouse (M-B0001) c066 G9x Laser Mouse c068 G500 Laser Mouse c069 M-U0007 [Corded Mouse M500] c06a USB Optical Mouse c06b G700 Wireless Gaming Mouse c06c Optical Mouse c077 Mouse c07c M-R0017 [G700s Rechargeable Gaming Mouse] c07d G502 Mouse c07e G402 Gaming Mouse c080 G303 Gaming Mouse c083 G403 Prodigy Gaming Mouse c084 G203 Gaming Mouse c088 G Pro Wireless gaming mouse (wired mode) c08b G502 SE HERO Gaming Mouse c08e G MX518 Gaming Mouse (MU0053) c092 G102/G203 LIGHTSYNC Gaming Mouse c093 M500s Optical Mouse c101 UltraX Media Remote c110 Harmony 785/880/885 Remote c111 Harmony 525 Remote c112 Harmony 890 Remote c11f Harmony 900/1100 Remote c121 Harmony One Remote c122 Harmony 650/700 Remote c124 Harmony 300/350 Remote c125 Harmony 200 Remote c126 Harmony Link c129 Harmony Hub c12b Harmony Touch/Ultimate Remote c201 WingMan Extreme Joystick with Throttle c202 WingMan Formula c207 WingMan Extreme Digital 3D c208 WingMan Gamepad Extreme c209 WingMan Gamepad c20a WingMan RumblePad c20b WingMan Action Pad c20c WingMan Precision c20d WingMan Attack 2 c20e WingMan Formula GP c211 iTouch Cordless Receiver c212 WingMan Extreme Digital 3D c213 J-UH16 (Freedom 2.4 Cordless Joystick) c214 ATK3 (Attack III Joystick) c215 Extreme 3D Pro c216 F310 Gamepad [DirectInput Mode] c218 F510 Gamepad [DirectInput Mode] c219 F710 Gamepad [DirectInput Mode] c21a Precision Gamepad c21c G13 Advanced Gameboard c21d F310 Gamepad [XInput Mode] c21e F510 Gamepad [XInput Mode] c21f F710 Wireless Gamepad [XInput Mode] c221 G11/G15 Keyboard / Keyboard c222 G15 Keyboard / LCD c223 G11/G15 Keyboard / USB Hub c225 G11/G15 Keyboard / G keys c226 G15 Refresh Keyboard c227 G15 Refresh Keyboard c228 G19 Gaming Keyboard c229 G19 Gaming Keyboard Macro Interface c22a Gaming Keyboard G110 c22b Gaming Keyboard G110 G-keys c22d G510 Gaming Keyboard c22e G510 Gaming Keyboard onboard audio c231 G13 Virtual Mouse c232 Gaming Virtual Keyboard c245 G400 Optical Mouse c246 Gaming Mouse G300 c247 G100S Optical Gaming Mouse c248 G105 Gaming Keyboard c24a G600 Gaming Mouse c24c G400s Optical Mouse c24d G710 Gaming Keyboard c24e G500s Laser Gaming Mouse c24f G29 Driving Force Racing Wheel [PS3] c260 G29 Driving Force Racing Wheel [PS4] c262 G920 Driving Force Racing Wheel c281 WingMan Force c283 WingMan Force 3D c285 WingMan Strike Force 3D c286 Force 3D Pro c287 Flight System G940 c291 WingMan Formula Force c293 WingMan Formula Force GP c294 Driving Force c295 Momo Force Steering Wheel c298 Driving Force Pro c299 G25 Racing Wheel c29b G27 Racing Wheel c29c Speed Force Wireless Wheel for Wii c2a0 Wingman Force Feedback Mouse c2a1 WingMan Force Feedback Mouse c2ab G13 Joystick c301 iTouch Keyboard c302 iTouch Pro Keyboard c303 iTouch Keyboard c305 Internet Keyboard c307 Internet Keyboard c308 Internet Navigator Keyboard c309 Y-BF37 [Internet Navigator Keyboard] c30a iTouch Composite c30b NetPlay Keyboard c30c Internet Keys (X) c30d Internet Keys c30e UltraX Keyboard (Y-BL49) c30f Logicool HID-Compliant Keyboard (106 key) c311 Y-UF49 [Internet Pro Keyboard] c312 DeLuxe 250 Keyboard c313 Internet 350 Keyboard c315 Classic Keyboard 200 c316 HID-Compliant Keyboard c317 Wave Corded Keyboard c318 Illuminated Keyboard c31a Comfort Wave 450 c31b Compact Keyboard K300 c31c Keyboard K120 c31d Media Keyboard K200 c31f Comfort Keyboard K290 c326 Washable Keyboard K310 c328 Corded Keyboard K280e c32b G910 Orion Spark Mechanical Keyboard c332 G502 Proteus Spectrum Optical Mouse c335 G910 Orion Spectrum Mechanical Keyboard c336 G213 Prodigy Gaming Keyboard c33a G413 Gaming Keyboard c33f G815 Mechanical Keyboard c401 TrackMan Marble Wheel c402 Marble Mouse (2-button) c403 Turbo TrackMan Marble FX c404 TrackMan Wheel c408 Marble Mouse (4-button) c501 Cordless Mouse Receiver c502 Cordless Mouse & iTouch Keys c503 Cordless Mouse+Keyboard Receiver c504 Cordless Mouse+Keyboard Receiver c505 Cordless Mouse+Keyboard Receiver c506 MX700 Cordless Mouse Receiver c508 Cordless Trackball c509 Cordless Keyboard & Mouse c50a Cordless Mouse c50b Cordless Desktop Optical c50c Cordless Desktop S510 c50d Cordless Mouse c50e Cordless Mouse Receiver c510 Cordless Mouse c512 LX-700 Cordless Desktop Receiver c513 MX3000 Cordless Desktop Receiver c514 Cordless Mouse c515 Cordless 2.4 GHz Presenter Presentation remote control c517 LX710 Cordless Desktop Laser c518 MX610 Laser Cordless Mouse c51a MX Revolution/G7 Cordless Mouse c51b V220 Cordless Optical Mouse for Notebooks c521 Cordless Mouse Receiver c525 MX Revolution Cordless Mouse c526 Nano Receiver c529 Logitech Keyboard + Mice c52b Unifying Receiver c52d R700 Remote Presenter receiver c52e MK260 Wireless Combo Receiver c52f Nano Receiver c531 C-U0007 [Unifying Receiver] c532 Unifying Receiver c534 Nano Receiver c537 Cordless Mouse Receiver c539 Lightspeed Receiver c53a PowerPlay Wireless Charging System c53d G631 Keyboard c542 M185 compact wireless mouse c548 Logi Bolt Receiver c603 3Dconnexion Spacemouse Plus XT c605 3Dconnexion CADman c606 3Dconnexion Spacemouse Classic c621 3Dconnexion Spaceball 5000 c623 3Dconnexion Space Traveller 3D Mouse c625 3Dconnexion Space Pilot 3D Mouse c626 3Dconnexion Space Navigator 3D Mouse c627 3Dconnexion Space Explorer 3D Mouse c628 3Dconnexion Space Navigator for Notebooks c629 3Dconnexion SpacePilot Pro 3D Mouse c62b 3Dconnexion Space Mouse Pro c640 NuLOOQ navigator c702 Cordless Presenter c703 Elite Keyboard Y-RP20 + Mouse MX900 (Bluetooth) c704 diNovo Wireless Desktop c705 MX900 Bluetooth Wireless Hub (C-UJ16A) c707 Bluetooth wireless hub c708 Bluetooth wireless hub c709 BT Mini-Receiver (HCI mode) c70a MX5000 Cordless Desktop c70b BT Mini-Receiver (HID proxy mode) c70c BT Mini-Receiver (HID proxy mode) c70d Bluetooth wireless hub c70e MX1000 Bluetooth Laser Mouse c70f Bluetooth wireless hub c712 Bluetooth wireless hub c714 diNovo Edge Keyboard c715 Bluetooth wireless hub c71a Bluetooth wireless hub c71d Bluetooth wireless hub c71f diNovo Mini Wireless Keyboard c720 Bluetooth wireless hub ca03 MOMO Racing ca04 Formula Vibration Feedback Wheel ca84 Cordless Controller for Xbox ca88 Thunderpad for Xbox ca8a Precision Vibration Feedback Wheel for Xbox caa3 DriveFX Racing Wheel cab1 Cordless Keyboard for Wii HID Receiver d001 QuickCam Pro f301 Controller 046e Behavior Tech. Computer Corp. 0100 Keyboard 3001 Mass Storage Device 3002 Mass Storage Device 3003 Mass Storage Device 3005 Mass Storage Device 3008 Mass Storage Device 5250 KeyMaestro Multimedia Keyboard 5273 KeyMaestro Multimedia Keyboard 52e6 Cordless Mouse 5308 KeyMaestro Keyboard 5408 KeyMaestro Multimedia Keyboard/Hub 5500 Portable Keyboard 86+9 keys (Model 6100C US) 5550 5 button optical mouse model M873U 5720 Smart Card Reader 6782 BTC 7932 mouse+keyboard 046f Crystal Semiconductor 0471 Philips (or NXP) 0101 DSS350 Digital Speaker System 0104 DSS330 Digital Speaker System [uda1321] 0105 UDA1321 014f GoGear SA9200 0160 MP3 Player 0161 MP3 Player 0163 GoGear SA1100 0164 GoGear SA1110/02 0165 GoGear SA1330 0201 Hub 0222 Creative Nomad Jukebox 0302 PCA645VC Webcam [pwc] 0303 PCA646VC Webcam [pwc] 0304 Askey VC010 Webcam [pwc] 0307 PCVC675K Webcam [pwc] 0308 PCVC680K Webcam [pwc] 030b PC VGA Camera (Vesta Fun) 030c PCVC690K Webcam [pwc] 0310 PCVC730K Webcam [pwc] 0311 PCVC740K ToUcam Pro [pwc] 0312 PCVC750K Webcam [pwc] 0314 DMVC 1000K 0316 DMVC 2000K Video Capture 0321 FunCam 0322 DMVC1300K PC Camera 0325 SPC 200NC PC Camera 0326 SPC 300NC PC Camera 0327 Webcam SPC 6000 NC (Webcam w/ mic) 0328 SPC 700NC PC Camera 0329 SPC 900NC PC Camera / ORITE CCD Webcam(PC370R) 032d SPC 210NC PC Camera 032e SPC 315NC PC Camera 0330 SPC 710NC PC Camera 0331 SPC 1300NC PC Camera 0332 SPC 1000NC PC Camera 0333 SPC 620NC PC Camera 0334 SPC 520/525NC PC Camera 0401 Semiconductors CICT Keyboard 0402 PS/2 Mouse on Semiconductors CICT Keyboard 0406 15 inch Detachable Monitor 0407 10 inch Mobile Monitor 0408 SG3WA1/74 802.11b WLAN Adapter [Atmel AT76C503A] 0471 Digital Speaker System 0601 OVU1020 IR Dongle (Kbd+Mouse) 0602 ATI Remote Wonder II Input Device 0603 ATI Remote Wonder II Controller 0608 eHome Infrared Receiver 060a TSU9600 Remote Control 060c Consumer Infrared Transceiver (HP) 060d Consumer Infrared Transceiver (SRM5100) 060e RF Dongle 060f Consumer Infrared Transceiver 0613 Infrared Transceiver 0617 IEEE802.15.4 RF Dongle 0619 TSU9400 Remote Control 0666 Hantek DDS-3005 Arbitrary Waveform Generator 0700 Semiconductors CICT Hub 0701 150P1 TFT Display 0809 AVNET Bluetooth Device 0811 JR24 CDRW 0814 DCCX38/P data cable 0815 eHome Infrared Receiver 0844 SA2111/02 1GB Flash Audio Player 084a GoGear SA3125 084e GoGear SA60xx (mtp) 0888 Hantek DDS-3005 Arbitrary Waveform Generator 1103 Digital Speaker System 1120 Creative Rhomba MP3 player 1125 Nike psa[128max Player 1137 HDD065 MP3 player 1201 Arima Bluetooth Device 1230 Wireless Adapter 11g 1232 SNU6500 Wireless Adapter 1233 Wireless Adapter Bootloader Download 1236 SNU5600 802.11bg 1237 TalkTalk SNU5630NS/05 802.11bg 1552 ISP 1581 Hi-Speed USB MPEG2 Encoder Reference Kit 1801 Diva MP3 player 200a Wireless Network Adapter 200f 802.11n Wireless Adapter 2021 SDE3273FC/97 2.5" SATA HDD Enclosure [INIC-1608L] 2022 GoGear SA52XX 2034 Webcam SPC530NC 2036 Webcam SPC1030NC 203f TSU9200 Remote Control 2046 TSU9800 Remote Control 204e GoGear RaGa (SA1942/02) 205e TSU9300 Remote Control 206c MCE IR Receiver - Spinel plusf0r ASUS 2070 GoGear Mix 2076 GoGear Aria 2079 GoGear Opus 2088 MCE IR Receiver with ALS- Spinel plus for ASUS 209e PTA01 Wireless Adapter 20b6 GoGear Vibe 20d0 SPZ2000 Webcam [PixArt PAC7332] 20e3 GoGear Raga 20e4 GoGear ViBE 8GB 2160 Mio LINK Heart Rate Monitor 21e0 GoGEAR Raga 262c SPC230NC Webcam 2721 PTA 317 TV Camera 485d Senselock SenseIV v2.x df55 LPCXpresso LPC-Link 0472 Chicony Electronics Co., Ltd 0065 PFU-65 Keyboard [Chicony] b086 Asus USB2.0 Webcam b091 Webcam 0473 Sanyo Information Business Co., Ltd 0474 Sanyo Electric Co., Ltd 0110 Digital Voice Recorder R200 0217 Xacti J2 022f C5 Digital Media Camera (mass storage mode) 0230 C5 Digital Media Camera (PictBridge mode) 0231 C5 Digital Media Camera (PC control mode) 0401 Optical Drive 0701 SCP-4900 Cellphone 071f Usb Com Port Enumerator 0722 W33SA Camera 0475 Relisys/Teco Information System 0100 NEC Petiscan 0103 Eclipse 1200U/Episode 0210 Scorpio Ultra 3 0476 AESP 0477 Seagate Technology, Inc. 0478 Connectix Corp. 0001 QuickCam 0002 QuickClip 0003 QuickCam Pro 0479 Advanced Peripheral Laboratories 047a Semtech Corp. 0004 ScreenCoder UR7HCTS2-USB 047b Silitek Corp. 0001 Keyboard 0002 Keyboard and Mouse 0011 SK-1688U Keyboard 00f9 SK-1789u Keyboard 0101 BlueTooth Keyboard and Mouse 020b SK-3105 SmartCard Reader 050e Internet Compact Keyboard 1000 Trust Office Scan USB 19200 1002 HP ScanJet 4300c Parallel Port 047c Dell Computer Corp. ffff UPS Tower 500W LV 047d Kensington 1001 Mouse*in*a*Box 1002 Expert Mouse Pro 1003 Orbit TrackBall 1004 MouseWorks 1005 TurboBall 1006 TurboRing 1009 Orbit TrackBall for Mac 1012 PocketMouse 1013 Mouse*in*a*Box Optical Pro 1014 Expert Mouse Pro Wireless 1015 Expert Mouse 1016 ADB/USB Orbit 1018 Studio Mouse 101d Mouse*in*a*Box Optical Pro 101e Studio Mouse Wireless 101f PocketMouse Pro 1020 Expert Mouse Trackball 1021 Expert Mouse Wireless 1022 Orbit Optical 1023 Pocket Mouse Pro Wireless 1024 PocketMouse 1025 Mouse*in*a*Box Optical Elite Wireless 1026 Pocket Mouse Pro 1027 StudioMouse 1028 StudioMouse Wireless 1029 Mouse*in*a*Box Optical Elite 102a Mouse*in*a*Box Optical 102b PocketMouse 102c Iridio 102d Pilot Optical 102e Pilot Optical Pro 102f Pilot Optical Pro Wireless 1042 Ci25m Notebook Optical Mouse [Diamond Eye Precision] 1043 Ci65m Wireless Notebook Optical Mouse 104a PilotMouse Mini Retractable 105d PocketMouse Bluetooth 105e Bluetooth EDR Dongle 1061 PocketMouse Grip 1062 PocketMouse Max 1063 PocketMouse Max Wireless 1064 PocketMouse 2.0 Wireless 1065 PocketMouse 2.0 1066 PocketMouse Max Glow 1067 ValueMouse 1068 ValueOpt White 1069 ValueOpt Black 106a PilotMouse Laser Wireless Mini 106b PilotMouse Laser - 3 Button 106c PilotMouse Laser - Gaming 106d PilotMouse Laser - Wired 106e PilotMouse Micro Laser 1070 ValueOpt Travel 1071 ValueOpt RF TX 1072 PocketMouse Colour 1073 PilotMouse Laser - 6 Button 1074 PilotMouse Laser Wireless Mini 1075 SlimBlade Presenter Media Mouse 1076 SlimBlade Media Mouse 1077 SlimBlade Presenter Mouse 1152 Bluetooth EDR Dongle 2002 Optical Elite Wireless 2010 Wireless Presentation Remote 2012 Wireless Presenter with Laser Pointer 2021 PilotBoard Wireless 2030 PilotBoard Wireless 2034 SlimBlade Media Notebook Set 2041 SlimBlade Trackball 2048 Orbit Trackball with Scroll Ring 4003 Gravis Xterminator Digital Gamepad 4005 Gravis Eliminator GamePad Pro 4006 Gravis Eliminator AfterShock 4007 Gravis Xterminator Force 4008 Gravis Destroyer TiltPad 5001 Cabo I Camera 5002 VideoCam CABO II 5003 VideoCam 8018 Expert Wireless Trackball Mouse (K72359WW) 8068 Pro Fit Ergo Vertical Wireless Trackball 047e Agere Systems, Inc. (Lucent) 0300 ORiNOCO Card 1001 USS720 Parallel Port 2892 Systems Soft Modem bad1 Lucent 56k Modem f101 Atlas Modem 047f Plantronics, Inc. 0101 Bulk Driver 02ee BT600 0301 Bulk Driver 0411 Savi Office Base Station 0ca1 USB DSP v4 Audio Interface 4254 BUA-100 Bluetooth Adapter aa05 DA45 ac01 Savi 7xx ad01 GameCom 777 5.1 Headset af00 DA70 af01 DA80 c008 Audio 655 DSP c00e Blackwire C310 headset c03b HD1 c053 Blackwire C5220 headset (remote control and 3.5mm audio adapter) c056 Blackwire C3220 Headset ca01 Calisto 800 Series da60 DA60 0480 Toshiba America Inc 0001 InTouch Module 0004 InTouch Module 0011 InTouch Module 0014 InTouch Module 0100 Stor.E Slim USB 3.0 0200 External Disk 0212 Toshiba Canvio Connect II 500GB Portable Hard Drive 0820 Canvio Advance Disk 0821 Canvio Advance 2TB model DTC920 0900 MQ04UBF100 a006 UAS Controller a007 External Disk USB 3.0 a009 Stor.E Basics a00d STOR.E BASICS 500GB a100 Canvio Alu 2TB 2.5" Black External Disk Model HDTH320EK3CA a102 Canvio Alu 2TB 2.5" Black External Disk Model HDTH320EK3CA a202 Canvio Basics HDD a208 Canvio Basics 2TB USB 3.0 Portable Hard Drive b001 Stor.E Partner b207 Canvio Ready d000 External Disk 2TB Model DT01ABA200 d010 External Disk 3TB d011 Canvio Desk 0481 Zenith Data Systems 0482 Kyocera Corp. 000e FS-1020D Printer 000f FS-1920 Mono Printer 0015 FS-1030D printer 0100 Finecam S3x 0101 Finecam S4 0103 Finecam S5 0105 Finecam L3 0106 Finecam 0107 Digital Camera Device 0108 Digital Camera Device 0203 AH-K3001V 0204 iBurst Terminal 0408 FS-1320D Printer 0640 ECOSYS M6026cdn 069b ECOSYS M2635dn 06b4 ECOSYS M5526cdw 0483 STMicroelectronics 0102 Remote NDIS Network device with Android debug (ADB) 0103 Remote NDIS Network device 0104 MTP device with Android debug (ADB) 0105 MTP device 0106 PTP device with Android debug (ADB) 0107 PTP device 0137 BeWAN ADSL USB ST (blue or green) 0138 Unicorn II (ST70138B + MTC-20174TQ chipset) 0adb Android Debug Bridge (ADB) device 0afb Android Fastboot device 1307 Cytronix 6in1 Card Reader 163d Cool Icam Digi-MP3 2015 TouchChip® Fingerprint Reader 2016 Fingerprint Reader 2017 Biometric Smart Card Reader 2018 BioSimKey 2302 Portable Flash Device (PFD) 3744 ST-LINK/V1 3747 ST Micro Connect Lite 3748 ST-LINK/V2 374b ST-LINK/V2.1 374d STLINK-V3 Loader 374e STLINK-V3 374f STLINK-V3 3752 ST-LINK/V2.1 3753 STLINK-V3 4810 ISDN adapter 481d BT Digital Access adapter 5000 ST Micro/Ergenic ERG BT-002 Bluetooth Adapter 5001 ST Micro Bluetooth Device 5710 Joystick in FS Mode 5720 Mass Storage Device 5721 Interrupt Demo 5722 Bulk Demo 572a STM32F401 microcontroller [ARM Cortex M4] [CDC/ACM serial port] 5730 Audio Speaker 5731 Microphone 5740 Virtual COM Port 5750 LED badge -- mini LED display -- 11x44 7270 ST Micro Serial Bridge 7554 56k SoftModem 8213 ThermaData Logger Cradle 8259 Probe 91d1 Sensor Hub a171 ThermaData WiFi a2e0 BMeasure instrument a43f inbed.io - Unified Controller (Gen 2) df11 STM Device in DFU Mode ff10 Swann ST56 Modem 0484 Specialix 0485 Nokia Monitors 0486 ASUS Computers, Inc. 0185 EeePC T91MT HID Touch Panel 0487 Stewart Connector 0488 Cirque Corp. 0489 Foxconn / Hon Hai 0502 SmartMedia Card Reader Firmware Loader 0503 SmartMedia Card Reader d00c Rollei Compactline (Storage Mode) d00e Rollei Compactline (Video Mode) e000 T-Com TC 300 e003 Pirelli DP-L10 e00d Broadcom Bluetooth 2.1 Device e00f Foxconn T77H114 BCM2070 [Single-Chip Bluetooth 2.1 + EDR Adapter] e011 Acer Bluetooth module e016 Ubee PXU1900 WiMAX Adapter [Beceem BCSM250] e02c Atheros AR5BBU12 Bluetooth Device e032 Broadcom BCM20702 Bluetooth e042 Broadcom BCM20702 Bluetooth e04d Atheros AR3012 Bluetooth e055 BCM43142A0 broadcom bluetooth e07a Broadcom BCM20702A1 Bluetooth e0c8 MediaTek MT7921 Bluetooth e0cd MediaTek Bluetooth Adapter e0d8 Bluetooth 5.2 Adapter [MediaTek MT7922] 048a S-MOS Systems, Inc. 048c Alps Electric Ireland, Ltd 048d Integrated Technology Express, Inc. 1165 IT1165 Flash Controller 1172 Flash Drive 1234 Chipsbank CBM2199 Flash Drive 1336 SD/MMC Cardreader 1345 Multi Cardreader 5702 RGB LED Controller 6008 8291 RGB keyboard backlight controller 8297 IT8297 RGB LED Controller 9006 IT9135 BDA Afatech DVB-T HDTV Dongle 9009 Zolid HD DVD Maker 9135 Zolid Mini DVB-T Stick 9306 IT930x DVB stick 9503 ITE it9503 feature-limited DVB-T transmission chip [ccHDtv] 9507 ITE it9507 full featured DVB-T transmission chip [ccHDtv] 9910 IT9910 chipset based grabber ff59 Hdmi-CEC Bridge 048f Eicon Tech. 0490 United Microelectronics Corp. 0491 Capetronic 0003 Taxan Monitor Control 0492 Samsung SemiConductor, Inc. 0140 MP3 player 0141 MP3 Player 0493 MAG Technology Co., Ltd 0495 ESS Technology, Inc. 0496 Micron Electronics 0497 Smile International c001 Camera Device 0498 Capetronic (Kaohsiung) Corp. 0499 Yamaha Corp. 1000 UX256 MIDI I/F 1001 MU1000 1002 MU2000 1003 MU500 1004 UW500 1005 MOTIF6 1006 MOTIF7 1007 MOTIF8 1008 UX96 MIDI I/F 1009 UX16 MIDI I/F 100a EOS BX 100c UC-MX 100d UC-KX 100e S08 100f CLP-150 1010 CLP-170 1011 P-250 1012 TYROS 1013 PF-500 1014 S90 1015 MOTIF-R 1016 MDP-5 1017 CVP-204 1018 CVP-206 1019 CVP-208 101a CVP-210 101b PSR-1100 101c PSR-2100 101d CLP-175 101e PSR-K1 101f EZ-J24 1020 EZ-250i 1021 MOTIF ES 6 1022 MOTIF ES 7 1023 MOTIF ES 8 1024 CVP-301 1025 CVP-303 1026 CVP-305 1027 CVP-307 1028 CVP-309 1029 CVP-309GP 102a PSR-1500 102b PSR-3000 102e ELS-01/01C 1030 PSR-295/293 1031 DGX-205/203 1032 DGX-305 1033 DGX-505 1037 PSR-E403 103c MOTIF-RACK ES 1054 S90XS Keyboard/Music Synthesizer 160f P-105 1613 Clavinova CLP535 1617 PSR-E353 digital keyboard 1704 Steinberg UR44 2000 DGP-7 2001 DGP-5 3001 YST-MS55D USB Speaker 3003 YST-M45D USB Speaker 4000 NetVolante RTA54i Broadband&ISDN Router 4001 NetVolante RTW65b Broadband Wireless Router 4002 NetVolante RTW65i Broadband&ISDN Wireless Router 4004 NetVolante RTA55i Broadband VoIP Router 5000 CS1D 5001 DSP1D 5002 DME32 5003 DM2000 5004 02R96 5005 ACU16-C 5006 NHB32-C 5007 DM1000 5008 01V96 5009 SPX2000 500a PM5D 500b DME64N 500c DME24N 6001 CRW2200UX Lightspeed 2 External CD-RW Drive 7000 DTX 7010 UB99 049a Gandalf Technologies, Ltd 049b Curtis Computer Products 049c Acer Advanced Labs, Inc. 0002 Keyboard (???) 049d VLSI Technology 049f Compaq Computer Corp. 0002 InkJet Color Printer 0003 iPAQ PocketPC 000e Internet Keyboard 0012 InkJet Color Printer 0018 PA-1/PA-2 MP3 Player 0019 InkJet Color Printer 001a S4 100 Scanner 001e IJ650 Inkjet Printer 001f WL215 Adapter 0021 S200 Scanner 0027 Bluetooth Multiport Module by Compaq 002a 1400P Inkjet Printer 002b A3000 002c Lexmark X125 0032 802.11b Adapter [ipaq h5400] 0033 Wireless LAN MultiPort W100 [Intersil PRISM 2.5] 0036 Bluetooth Multiport Module 0051 KU-0133 Easy Access Interner Keyboard 0076 Wireless LAN MultiPort W200 0080 GPRS Multiport 0086 Bluetooth Device 504a Personal Jukebox PJB100 505a Linux-USB "CDC Subset" Device, or Itsy (experimental) 8511 iPAQ Networking 10/100 Ethernet [pegasus2] 04a0 Digital Equipment Corp. 04a1 SystemSoft Corp. fff0 Telex Composite Device 04a2 FirePower Systems 04a3 Trident Microsystems, Inc. 04a4 Hitachi, Ltd 0004 DVD-CAM DZ-MV100A Camcorder 001e DVDCAM USB HS Interface 04a5 Acer Peripherals Inc. (now BenQ Corp.) 0001 Keyboard 0002 API Ergo K/B 0003 API Generic K/B Mouse 12a6 AcerScan C310U 1a20 Prisa 310U 1a2a Prisa 620U 2022 Prisa 320U/340U 2040 Prisa 620UT 205e ScanPrisa 640BU 2060 Prisa 620U+/640U 207e Prisa 640BU 209e ScanPrisa 640BT 20ae S2W 3000U 20b0 S2W 3300U/4300U 20be Prisa 640BT 20c0 Prisa 1240UT 20de S2W 4300U+ 20f8 Benq 5000 20fc Benq 5000 20fe SW2 5300U 2137 Benq 5150/5250 2202 Benq 7400UT 2311 Benq 5560 3003 Benq Webcam 3008 Benq 1500 300a Benq 3410 300c Benq 1016 3019 Benq DC C40 4000 P30 Composite Device 4013 BenQ-Siemens EF82/SL91 4044 BenQ-Siemens SF71 4045 BenQ-Siemens E81 4048 BenQ M7 6001 Mass Storage Device 6002 Mass Storage Device 6003 ATA/ATAPI Adapter 6004 Mass Storage Device 6005 Mass Storage Device 6006 Mass Storage Device 6007 Mass Storage Device 6008 Mass Storage Device 6009 Mass Storage Device 600a Mass Storage Device 600b Mass Storage Device 600c Mass Storage Device 600d Mass Storage Device 600e Mass Storage Device 600f Mass Storage Device 6010 Mass Storage Device 6011 Mass Storage Device 6012 Mass Storage Device 6013 Mass Storage Device 6014 Mass Storage Device 6015 Mass Storage Device 6125 MP3 Player 6180 MP3 Player 6200 MP3 Player 7500 Hi-Speed Mass Storage Device 8001 BenQ ZOWIE Gaming Mouse 9000 AWL300 Wireless Adapter 9001 AWL400 Wireless Adapter 9213 Kbd Hub 04a6 Nokia Display Products 00b9 Audio 0180 Hub Type P 0181 HID Monitor Controls 04a7 Visioneer 0063 Visioneer DocuMate 152i 0100 StrobePro 0101 Strobe Pro Scanner (1.01) 0102 StrobePro Scanner 0211 OneTouch 7600 Scanner 0221 OneTouch 5300 Scanner 0223 OneTouch 8200 0224 OneTouch 4800 USB/Microtek Scanport 3000 0225 VistaScan Astra 3600(ENG) 0226 OneTouch 5300 USB 0229 OneTouch 7100 022a OneTouch 6600 022c OneTouch 9000/9020 0231 6100 Scanner 0311 6200 EPP/USB Scanner 0321 OneTouch 8100 EPP/USB Scanner 0331 OneTouch 8600 EPP/USB Scanner 0341 6400 0361 VistaScan Astra 3600(ENG) 0362 OneTouch 9320 0371 OneTouch 8700/8920 0380 OneTouch 7700 0382 Photo Port 7700 0390 9650 03a0 Xerox 4800 One Touch 0410 OneTouch Pro 8800/8820 0421 9450 USB 0423 9750 Scanner 0424 Strobe XP 450 0425 Strobe XP 100 0426 Strobe XP 200 0427 Strobe XP 100 0444 OneTouch 7300 0445 CardReader 100 0446 Xerox DocuMate 510 0447 XEROX DocuMate 520 0448 XEROX DocuMate 250 0449 Xerox DocuMate 252 044a Xerox 6400 044c Xerox DocuMate 262 0474 Strobe XP 300 0475 Xerox DocuMate 272 0478 Strobe XP 220 0479 Strobe XP 470 047a 9450 047b 9650 047d 9420 0480 9520 048f Strobe XP 470 0491 Strobe XP 450 0493 9750 0494 Strobe XP 120 0497 Patriot 430 0498 Patriot 680 0499 Patriot 780 049b Strobe XP 100 04a0 7400 04ac Xerox Travel Scanner 100 04bb strobe 400 scanner 04cd Xerox Travel Scanner 150 04ee Duplex Combo Scanner 04a8 Multivideo Labs, Inc. 0101 Hub 0303 Peripheral Switch 0404 Peripheral Switch 04a9 Canon, Inc. 1005 BJ Printer Hub 1035 PD Printer Storage 1050 BJC-8200 1051 BJC-3000 Color Printer 1052 BJC-6100 1053 BJC-6200 1054 BJC-6500 1055 BJC-85 1056 BJC-2110 Color Printer 1057 LR1 105a BJC-55 105b S600 Printer 105c S400 105d S450 Printer 105e S800 1062 S500 Printer 1063 S4500 1064 S300 Printer 1065 S100 1066 S630 1067 S900 1068 S9000 1069 S820 106a S200 Printer 106b S520 Printer 106d S750 Printer 106e S820D 1070 S530D 1072 I850 Printer 1073 I550 Printer 1074 S330 Printer 1076 i70 1077 i950 107a S830D 107b i320 107c i470D 107d i9100 107e i450 107f i860 1082 i350 1084 i250 1085 i255 1086 i560 1088 i965 108a i455 108b i900D 108c i475D 108d PIXMA iP2000 108f i80 1090 i9900 Photo Printer 1091 PIXMA iP1500 1093 PIXMA iP4000 1094 PIXMA iP3000x Printer 1095 PIXMA iP6000D 1097 PIXMA iP5000 1098 PIXMA iP1000 1099 PIXMA iP8500 109c PIXMA iP4000R 109d iP90 10a0 PIXMA iP1600 Printer 10a2 iP4200 10a4 iP5200R 10a5 iP5200 10a7 iP6210D 10a8 iP6220D 10a9 iP6600D 10b6 PIXMA iP4300 Printer 10b7 PIXMA iP5300 Printer 10c2 PIXMA iP1800 Printer 10c4 Pixma iP4500 Printer 10c9 PIXMA iP4600 Printer 10ca PIXMA iP3600 Printer 10e3 PIXMA iX6850 Printer 12fe Printer in service mode 1404 W6400PG 1405 W8400PG 150f BIJ2350 PCL 1510 BIJ1350 PCL 1512 BIJ1350D PCL 1601 DR-2080C Scanner 1607 DR-6080 Scanner 1608 DR-2580C Scanner 1609 DR-3080CII 160a DR-2050C Scanner 1700 PIXMA MP110 Scanner 1701 PIXMA MP130 Scanner 1702 MP410 Composite 1703 MP430 Composite 1704 MP330 Composite 1706 PIXMA MP750 Scanner 1707 PIXMA MP780/MP790 1708 PIXMA MP760/MP770 1709 PIXMA MP150 Scanner 170a PIXMA MP170 Scanner 170b PIXMA MP450 Scanner 170c PIXMA MP500 Scanner 170d PIXMA MP800 Scanner 170e PIXMA MP800R 1710 MP950 1712 PIXMA MP530 1713 PIXMA MP830 Scanner 1714 MP160 1715 PIXMA MP180 1716 PIXMA MP460 1717 PIXMA MP510 1718 PIXMA MP600 1719 PIXMA MP600R 171a PIXMA MP810 171b PIXMA MP960 171c PIXMA MX7600 1721 PIXMA MP210 1722 PIXMA MP220 1723 PIXMA MP470 1724 PIXMA MP520 series 1725 PIXMA MP610 1726 PIXMA MP970 1727 PIXMA MX300 1728 PIXMA MX310 series 1729 PIXMA MX700 172b MP140 ser 172c PIXMA MX850 172d PIXMA MP980 172e PIXMA MP630 172f PIXMA MP620 1730 PIXMA MP540 1731 PIXMA MP480 1732 PIXMA MP240 1733 PIXMA MP260 1734 PIXMA MP190 1735 PIXMA MX860 1736 PIXMA MX320 series 1737 PIXMA MX330 173a PIXMA MP250 173b PIXMA MP270 All-In-One Printer 173c PIXMA MP490 173d PIXMA MP550 173e PIXMA MP560 173f PIXMA MP640 1740 PIXMA MP990 1741 PIXMA MX340 1742 PIXMA MX350 1743 PIXMA MX870 1746 PIXMA MP280 1747 PIXMA MP495 1748 PIXMA MG5100 Series 1749 PIXMA MG5200 Series 174a PIXMA MG6100 Series 174b PIXMA MG8100 Series 174d PIXMA MX360 174e PIXMA MX410 174f PIXMA MX420 1750 PIXMA MX880 Series 1752 PIXMA MG3100 Series 1753 PIXMA MG4100 Series 1754 PIXMA MG5300 Series 1755 PIXMA MG6200 Series 1756 PIXMA MG8200 Series 1757 PIXMA MP493 1759 PIXMA MX370 Series 175b PIXMA MX430 Series 175c PIXMA MX510 Series 175d PIXMA MX710 Series 175e PIXMA MX890 Series 175f PIXMA MP230 1762 PIXMA MG3200 Series 1763 PIXMA MG4200 Series 1764 PIXMA MG5400 Series 1765 PIXMA MG6300 Series 1766 PIXMA MX390 Series 1768 PIXMA MX450 Series 1769 PIXMA MX520 Series 176a PIXMA MX720 Series 176b PIXMA MX920 Series 176d PIXMA MG2500 Series 176e PIXMA MG3500 Series 176f PIXMA MG6500 Series 1770 PIXMA MG6400 Series 1771 PIXMA MG5500 Series 1772 PIXMA MG7100 Series 1774 PIXMA MX470 Series 1775 PIXMA MX530 Series 177c PIXMA MG7500 Series 177e PIXMA MG6600 Series 177f PIXMA MG5600 Series 1780 PIXMA MG2900 Series 1787 PIXMA MX490 Series 178a PIXMA MG3600 Series 178d PIXMA MG6853 180b PIXMA MG3000 series 1856 PIXMA TS6250 1900 CanoScan LiDE 90 1901 CanoScan 8800F 1904 CanoScan LiDE 100 1905 CanoScan LiDE 200 1906 CanoScan 5600F 1907 CanoScan LiDE 700F 1909 CanoScan LiDE 110 190a CanoScan LiDE 210 190d CanoScan 9000F Mark II 190e CanoScan LiDE 120 190f CanoScan LiDE 220 1912 LiDE 400 1913 CanoScan LiDE 300 2200 CanoScan LiDE 25 2201 CanoScan FB320U 2202 CanoScan FB620U 2204 CanoScan FB630U 2205 CanoScan FB1210U 2206 CanoScan N650U/N656U 2207 CanoScan 1220U 2208 CanoScan D660U 220a CanoScan D2400UF 220b CanoScan D646U 220c CanoScan D1250U2 220d CanoScan N670U/N676U/LiDE 20 220e CanoScan N1240U/LiDE 30 220f CanoScan 8000F 2210 CanoScan 9900F 2212 CanoScan 5000F 2213 CanoScan LiDE 50/LiDE 35/LiDE 40 2214 CanoScan LiDE 80 2215 CanoScan 3000/3000F/3000ex 2216 CanoScan 3200F 2217 CanoScan 5200F 2219 CanoScan 9950F 221b CanoScan 4200F 221c CanoScan LiDE 60 221e CanoScan 8400F 221f CanoScan LiDE 500F 2220 CanoScan LIDE 25 2224 CanoScan LiDE 600F 2225 CanoScan LiDE 70 2228 CanoScan 4400F 2229 CanoScan 8600F 2602 MultiPASS C555 2603 MultiPASS C755 260a LBP810 260e LBP-2000 2610 MPC600F 2611 SmartBase MPC400 2612 MultiPASS C855 2617 LBP1210 261a iR1600 261b iR1610 261c iC2300 261f MPC200 Printer 2621 iR2000 2622 iR2010 2623 FAX-B180C 2629 FAXPHONE L75 262b LaserShot LBP-1120 Printer 262c imageCLASS D300 262d iR C3200 262f PIXMA MP730 2630 PIXMA MP700 2631 LASER CLASS 700 2632 FAX-L2000 2633 LASERCLASS 500 2634 PC-D300/FAX-L400/ICD300 2635 MPC190 2636 LBP3200 2637 iR C6800 2638 iR C3100 263c PIXMA MP360 263d PIXMA MP370 263e PIXMA MP390 263f PIXMA MP375R 2646 MF5530 Scanner Device V1.9.1 2647 MF5550 Composite 264c PIXMA MP740 264d PIXMA MP710 264e MF5630 264f MF5650 (FAX) 2650 iR 6800C EUR 2651 iR 3100C EUR 2654 LBP3600 2655 FP-L170/MF350/L380/L398 2656 iR1510-1670 CAPT Printer 2657 LBP3210 2659 MF8100 265b CAPT Printer 265c iR C3220 265d MF5730 265e MF5750 265f MF5770 2660 MF3110 2663 iR3570/iR4570 2664 iR2270/iR2870 2665 iR C2620 2666 iR C5800 2667 iR85PLUS 2669 iR105PLUS 266a LBP3000 266b iR8070 266c iR9070 266d iR 5800C EUR 266e CAPT Device 266f iR2230 2670 iR3530 2671 iR5570/iR6570 2672 iR C3170 2673 iR 3170C EUR 2674 FAX-L120 2675 iR2830 2676 LBP2900 2677 iR C2570 2678 iR 2570C EUR 2679 LBP5000 267a iR2016 267b iR2020 267d MF7100 series 267e LBP3300 2684 MF3200 series 2686 MF6500 series 2687 iR4530 2688 LBP3460 2689 FAX-L180/L380S/L398S 268a LC310/L390/L408S 268b LBP3500 268c iR C6870 268d iR 6870C EUR 268e iR C5870 268f iR 5870C EUR 2691 iR7105 26a1 LBP5300 26a3 MF4100 series 26a4 LBP5100 26b0 MF4600 series 26b4 MF4010 series 26b5 MF4200 series 26b6 FAX-L140/L130 26b9 LBP3310 26ba LBP5050 26da LBP3010/LBP3018/LBP3050 26db LBP3100/LBP3108/LBP3150 26e6 iR1024 26ea LBP9100C 26ee MF4320-4350 26f1 LBP7200C 26ff LBP6300 271a LBP6000 271b LBP6200 271c LBP7010C/7018C 2736 I-SENSYS MF4550d 2737 MF4410 2742 imageRUNNER1133 series 2771 LBP6020 2796 LBP6230/6240 3041 PowerShot S10 3042 CanoScan FS4000US Film Scanner 3043 PowerShot S20 3044 EOS D30 3045 PowerShot S100 3046 IXY Digital 3047 Digital IXUS 3048 PowerShot G1 3049 PowerShot Pro90 IS 304a CP-10 304b IXY Digital 300 304c PowerShot S300 304d Digital IXUS 300 304e PowerShot A20 304f PowerShot A10 3050 PowerShot unknown 1 3051 PowerShot S110 3052 Digital IXUS V 3055 PowerShot G2 3056 PowerShot S40 3057 PowerShot S30 3058 PowerShot A40 3059 PowerShot A30 305b ZR45MC Digital Camcorder 305c PowerShot unknown 2 3060 EOS D60 3061 PowerShot A100 3062 PowerShot A200 3063 CP-100 3065 PowerShot S200 3066 Digital IXUS 330 3067 MV550i Digital Video Camera 3069 PowerShot G3 306a Digital unknown 3 306b MVX2i Digital Video Camera 306c PowerShot S45 306d PowerShot S45 PtP Mode 306e PowerShot G3 (normal mode) 306f PowerShot G3 (ptp) 3070 PowerShot S230 3071 PowerShot S230 (ptp) 3072 PowerShot SD100 / Digital IXUS II (ptp) 3073 PowerShot A70 (ptp) 3074 PowerShot A60 (ptp) 3075 IXUS 400 Camera 3076 PowerShot A300 3077 PowerShot S50 3078 ZR70MC Digital Camcorder 307a MV650i (normal mode) 307b MV630i Digital Video Camera 307c CP-200 307d CP-300 307f Optura 20 3080 MVX150i (normal mode) / Optura 20 (normal mode) 3081 Optura 10 3082 MVX100i / Optura 10 3083 EOS 10D 3084 EOS 300D / EOS Digital Rebel 3085 PowerShot G5 3087 Elura 50 (PTP mode) 3088 Elura 50 (normal mode) 308d MVX3i 308e FV M1 (normal mode) / MVX 3i (normal mode) / Optura Xi (normal mode) 3093 Optura 300 3096 IXY DV M2 (normal mode) / MVX 10i (normal mode) 3099 EOS 300D (ptp) 309a PowerShot A80 309b Digital IXUS (ptp) 309c PowerShot S1 IS 309d Powershot Pro 1 309f Camera 30a0 Camera 30a1 Camera 30a2 Camera 30a8 Elura 60E/Optura 40 (ptp) 30a9 MVX25i (normal mode) / Optura 40 (normal mode) 30b1 PowerShot S70 (normal mode) / PowerShot S70 (PTP mode) 30b2 PowerShot S60 (normal mode) / PowerShot S60 (PTP mode) 30b3 PowerShot G6 (normal mode) / PowerShot G6 (PTP mode) 30b4 PowerShot S500 30b5 PowerShot A75 30b6 Digital IXUS II2 / Digital IXUS II2 (PTP mode) / PowerShot SD110 (PTP mode) / PowerShot SD110 Digital ELPH 30b7 PowerShot A400 / PowerShot A400 (PTP mode) 30b8 PowerShot A310 / PowerShot A310 (PTP mode) 30b9 Powershot A85 30ba PowerShot S410 Digital Elph 30bb PowerShot A95 30bd CP-220 30be CP-330 30bf Digital IXUS 40 30c0 Digital IXUS 30 (PTP mode) / PowerShot SD200 (PTP mode) 30c1 Digital IXUS 50 (normal mode) / IXY Digital 55 (normal mode) / PowerShot A520 (PTP mode) / PowerShot SD400 (normal mode) 30c2 PowerShot A510 (normal mode) / PowerShot A510 (PTP mode) 30c4 Digital IXUS i5 (normal mode) / IXY Digital L2 (normal mode) / PowerShot SD20 (normal mode) 30ea EOS 1D Mark II (PTP mode) 30eb EOS 20D 30ec EOS 20D (ptp) 30ee EOS 350D 30ef EOS 350D (ptp) 30f0 PowerShot S2 IS (PTP mode) 30f2 Digital IXUS 700 (normal mode) / Digital IXUS 700 (PTP mode) / IXY Digital 600 (normal mode) / PowerShot SD500 (normal mode) / PowerShot SD500 (PTP mode) 30f4 PowerShot SD30 / Ixus iZoom / IXY DIGITAL L3 30f5 SELPHY CP500 30f6 SELPHY CP400 30f8 Powershot A430 30f9 PowerShot A410 (PTP mode) 30fa PowerShot S80 30fc PowerShot A620 (PTP mode) 30fd PowerShot A610 (normal mode)/PowerShot A610 (PTP mode) 30fe Digital IXUS 65 (PTP mode)/PowerShot SD630 (PTP mode) 30ff Digital IXUS 55 (PTP mode)/PowerShot SD450 (PTP mode) 3100 PowerShot TX1 310b SELPHY CP600 310e Digital IXUS 50 (PTP mode) 310f PowerShot A420 3110 EOS Digital Rebel XTi 3115 PowerShot SD900 / Digital IXUS 900 Ti / IXY DIGITAL 1000 3116 Digital IXUS 750 / PowerShot SD550 (PTP mode) 3117 PowerShot A700 3119 PowerShot SD700 IS / Digital IXUS 800 IS / IXY Digital 800 IS 311a PowerShot S3 IS 311b PowerShot A540 311c PowerShot SD600 DIGITAL ELPH / DIGITAL IXUS 60 / IXY DIGITAL 70 3125 PowerShot G7 3126 PowerShot A530 3127 SELPHY CP710 3128 SELPHY CP510 312d Elura 100 3136 PowerShot SD800 IS / Digital IXUS 850 IS / IXY DIGITAL 900 IS 3137 PowerShot SD40 / Digital IXUS i7 IXY / DIGITAL L4 3138 PowerShot A710 IS 3139 PowerShot A640 313a PowerShot A630 3141 SELPHY ES1 3142 SELPHY CP730 3143 SELPHY CP720 3145 EOS 450D 3146 EOS 40D 3147 EOS 1Ds Mark III 3148 PowerShot S5 IS 3149 PowerShot A460 314b PowerShot SD850 IS DIGITAL ELPH / Digital IXUS 950 IS / IXY DIGITAL 810 IS 314c PowerShot A570 IS 314d PowerShot A560 314e PowerShot SD750 DIGITAL ELPH / DIGITAL IXUS 75 / IXY DIGITAL 90 314f PowerShot SD1000 DIGITAL ELPH / DIGITAL IXUS 70 / IXY DIGITAL 10 3150 PowerShot A550 3155 PowerShot A450 315a PowerShot G9 315b PowerShot A650 IS 315d PowerShot A720 315e PowerShot SX100 IS 315f PowerShot SD950 IS DIGITAL ELPH / DIGITAL IXUS 960 IS / IXY DIGITAL 2000 IS 3160 Digital IXUS 860 IS 3170 SELPHY CP750 3171 SELPHY CP740 3172 SELPHY CP520 3173 PowerShot SD890 IS DIGITAL ELPH / Digital IXUS 970 IS / IXY DIGITAL 820 IS 3174 PowerShot SD790 IS DIGITAL ELPH / Digital IXUS 90 IS / IXY DIGITAL 95 IS 3175 IXY Digital 25 IS 3176 PowerShot A590 3177 PowerShot A580 317a PC1267 [Powershot A470] 3184 Digital IXUS 80 IS (PTP mode) 3185 SELPHY ES2 3186 SELPHY ES20 318d PowerShot SX100 IS 318e PowerShot A1000 IS 318f PowerShot G10 3191 PowerShot A2000 IS 3192 PowerShot SX110 IS 3193 PowerShot SD990 IS DIGITAL ELPH / Digital IXUS 980 IS / IXY DIGITAL 3000 IS 3195 PowerShot SX1 IS 3196 PowerShot SD880 IS DIGITAL ELPH / Digital IXUS 870 IS / IXY DIGITAL 920 IS 3199 EOS 5D Mark II 319a EOS 7D 319b EOS 50D 31aa SELPHY CP770 31ab SELPHY CP760 31ad PowerShot E1 31af SELPHY ES3 31b0 SELPHY ES30 31b1 SELPHY CP530 31bc PowerShot D10 31bd PowerShot SD960 IS DIGITAL ELPH / Digital IXUS 110 IS / IXY DIGITAL 510 IS 31be PowerShot A2100 IS 31bf PowerShot A480 31c0 PowerShot SX200 IS 31c1 PowerShot SD970 IS DIGITAL ELPH / Digital IXUS 990 IS / IXY DIGITAL 830 IS 31c2 PowerShot SD780 IS DIGITAL ELPH / Digital IXUS 100 IS / IXY DIGITAL 210 IS 31c3 PowerShot A1100 IS 31c4 PowerShot SD1200 IS DIGITAL ELPH / Digital IXUS 95 IS / IXY DIGITAL 110 IS 31cf EOS Rebel T1i / EOS 500D / EOS Kiss X3 31dd SELPHY CP780 31df PowerShot G11 31e0 PowerShot SX120 IS 31e1 PowerShot S90 31e4 PowerShot SX20 IS 31e5 Digital IXUS 200 IS 31e6 PowerShot SD940 IS DIGITAL ELPH / Digital IXUS 120 IS / IXY DIGITAL 220 IS 31e7 SELPHY CP790 31ea EOS Rebel T2i / EOS 550D / EOS Kiss X4 31ee SELPHY ES40 31ef PowerShot A495 31f0 PowerShot A490 31f1 PowerShot A3100 IS / PowerShot A3150 IS 31f2 PowerShot A3000 IS 31f3 PowerShot Digital ELPH SD1400 IS 31f4 PowerShot SD1300 IS / IXUS 105 31f5 Powershot SD3500 IS / IXUS 210 IS 31f6 PowerShot SX210 IS 31f7 Powershot SD4000 IS / IXUS 300 HS / IXY 30S 31f8 Powershot SD4500 IS / IXUS 1000 HS / IXY 50S 31ff Digital IXUS 55 3209 Vixia HF S21 A 320f PowerShot G12 3210 Powershot SX30 IS 3211 PowerShot SX130 IS 3212 Powershot S95 3214 SELPHY CP800 3215 EOS 60D 3218 EOS 600D / Rebel T3i (ptp) 3219 EOS 1D X 3223 PowerShot A3300 IS 3224 PowerShot A3200 IS 3225 PowerShot ELPH 500 HS / IXUS 310 HS 3226 PowerShow A800 3227 PowerShot ELPH 100 HS / IXUS 115 HS 3228 PowerShot SX230 HS 3229 PowerShot ELPH 300 HS / IXUS 220 HS 322a PowerShot A2200 322b Powershot A1200 322c PowerShot SX220 HS 3233 PowerShot G1 X 3234 PowerShot SX150 IS 3235 PowerShot ELPH 510 HS / IXUS 1100 HS 3236 PowerShot S100 3237 PowerShot ELPH 310 HS / IXUS 230 HS 3238 PowerShot SX40 HS 323a EOS 5D Mark III 323b EOS Rebel T4i 323d EOS M 323e PowerShot A1300 323f PowerShot A810 3240 PowerShot ELPH 320 HS / IXUS 240 HS 3241 PowerShot ELPH 110 HS / IXUS 125 HS 3242 PowerShot D20 3243 PowerShot A4000 IS 3244 PowerShot SX260 HS 3245 PowerShot SX240 HS 3246 PowerShot ELPH 530 HS / IXUS 510 HS 3247 PowerShot ELPH 520 HS / IXUS 500 HS 3248 PowerShot A3400 IS 3249 PowerShot A2400 IS 324a PowerShot A2300 3250 EOS 6D 3252 EOS 1D C 3253 EOS 70D 3255 SELPHY CP900 3256 SELPHY CP810 3258 PowerShot G15 3259 PowerShot SX50 HS 325a PowerShot SX160 IS 325b PowerShot S110 325c PowerShot SX500 IS 325e PowerShot N 325f PowerShot SX280 HS 3260 PowerShot SX270 HS 3261 PowerShot A3500 IS 3262 PowerShot A2600 3263 PowerShot SX275 HS 3264 PowerShot A1400 3265 Powershot ELPH 130 IS / IXUS 140 3266 Powershot ELPH 120 IS / IXUS 135 3268 PowerShot ELPH 330 HS / IXUS 255 HS 326f EOS 7D Mark II 3270 EOS 100D 3271 PowerShot A2500 3272 EOS 700D 3274 PowerShot G16 3275 PowerShot S120 3276 PowerShot SX170 IS 3277 PowerShot SX510 HS 3278 PowerShot S200 327a SELPHY CP910 327b SELPHY CP820 327d Powershot ELPH 115 IS / IXUS 132 327f EOS Rebel T5 / EOS 1200D / EOS Kiss X70 3284 PowerShot D30 3285 PowerShot SX700 HS 3286 PowerShot SX600 HS 3287 PowerShot ELPH 140 IS / IXUS 150 3288 Powershot ELPH 135 / IXUS 145 3289 PowerShot ELPH 340 HS / IXUS 265 HS 328a PowerShot ELPH 150 IS / IXUS 155 328b PowerShot N Facebook(R) Ready 3299 EOS M3 329a PowerShot SX60 HS 329b PowerShot SX520 HS 329c PowerShot SX400 IS 329d PowerShot G7 X 329f PowerShot SX530 HS 32a0 EOS M10 32a6 PowerShot SX710 HS 32a7 PowerShot SX610 HS 32a8 PowerShot G3 X 32aa Powershot ELPH 160 / IXUS 160 32ab PowerShot ELPH 350HS / IXUS 275 HS 32ac PowerShot ELPH 170 IS / IXUS 170 32ad PowerShot SX410 IS 32b1 SELPHY CP1200 32b2 PowerShot G9 X 32b3 PowerShot G5 X 32b4 EOS Rebel T6 32bb EOS M5 32bf PowerShot SX420 IS 32c0 PowerShot ELPH 190IS 32c1 PowerShot ELPH 180 / IXUS 175 32c2 PowerShot SX720 HS 32c5 EOS M6 32cc EOS 200D 32d1 EOS M100 32d2 EOS M50 32d4 Powershot ELPH 185 / IXUS 185 / IXY 200 32d5 PowerShot SX430 IS 32db SELPHY CP1300 3302 SELPHY CP1500 04aa DaeWoo Telecom, Ltd 04ab Chromatic Research 04ac Micro Audiometrics Corp. 04ad Dooin Electronics 2501 Bluetooth Device 04af Winnov L.P. 04b0 Nikon Corp. 0102 Coolpix 990 0103 Coolpix 880 0104 Coolpix 995 0106 Coolpix 775 0107 Coolpix 5000 0108 Coolpix 2500 0109 Coolpix 2500 (ptp) 010a Coolpix 4500 010b Coolpix 4500 (ptp) 010d Coolpix 5700 (ptp) 010e Coolpix 4300 (storage) 010f Coolpix 4300 (ptp) 0110 Coolpix 3500 (Sierra Mode) 0111 Coolpix 3500 (ptp) 0112 Coolpix 885 (ptp) 0113 Coolpix 5000 (ptp) 0114 Coolpix 3100 (storage) 0115 Coolpix 3100 (ptp) 0117 Coolpix 2100 (ptp) 0119 Coolpix 5400 (ptp) 011d Coolpix 3700 (ptp) 0121 Coolpix 3200 (ptp) 0122 Coolpix 2200 (ptp) 0124 Coolpix 8400 (mass storage mode) 0125 Coolpix 8400 (ptp) 0126 Coolpix 8800 0129 Coolpix 4800 (ptp) 012c Coolpix 4100 (storage) 012d Coolpix 4100 (ptp) 012e Coolpix 5600 (ptp) 0130 Coolpix 4600 (ptp) 0135 Coolpix 5900 (ptp) 0136 Coolpix 7900 (storage) 0137 Coolpix 7900 (ptp) 013a Coolpix 100 (storage) 013b Coolpix 100 (ptp) 0141 Coolpix P2 (storage) 0142 Coolpix P2 (ptp) 0163 Coolpix P5100 (ptp) 0169 Coolpix P50 (ptp) 0202 Coolpix SQ (ptp) 0203 Coolpix 4200 (mass storage mode) 0204 Coolpix 4200 (ptp) 0205 Coolpix 5200 (storage) 0206 Coolpix 5200 (ptp) 0301 Coolpix 2000 (storage) 0302 Coolpix 2000 (ptp) 0317 Coolpix L20 (ptp) 0402 DSC D100 (ptp) 0403 D2H (mass storage mode) 0404 D2H SLR (ptp) 0405 D70 (mass storage mode) 0406 DSC D70 (ptp) 0408 D2X SLR (ptp) 0409 D50 digital camera 040a D50 (ptp) 040c D2Hs 040e DSC D70s (ptp) 040f D200 (mass storage mode) 0410 D200 (ptp) 0411 D80 (mass storage mode) 0412 D80 (MTP/PTP mode) 0413 D40 (mass storage mode) 041e D60 digital camera (mass storage mode) 0422 D700 (ptp) 0423 D5000 0424 D3000 0425 D300S 0428 D7000 0429 D5100 042a D800 (ptp) 0430 D7100 0434 D610 0436 D810 043f D5600 0f03 PD-10 Wireless Printer Adapter 4000 Coolscan LS 40 ED 4001 LS 50 ED/Coolscan V ED 4002 Super Coolscan LS-5000 ED 04b1 Pan International 04b3 IBM Corp. 3003 Rapid Access III Keyboard 3004 Media Access Pro Keyboard 300a Rapid Access IIIe Keyboard 3016 UltraNav Keyboard Hub 3018 UltraNav Keyboard 301a 2-port low-power hub 301b SK-8815 Keyboard 301c Enhanced Performance Keyboard 301e Keyboard with UltraNav (SK-8845RC) 3020 Enhanced Performance Keyboard 3025 NetVista Full Width Keyboard 3100 NetVista Mouse 3103 ScrollPoint Pro Mouse 3104 ScrollPoint Wireless Mouse 3105 ScrollPoint Optical (HID) 3107 ThinkPad 800dpi Optical Travel Mouse 3108 800dpi Optical Mouse w/ Scroll Point 3109 Optical ScrollPoint Pro Mouse 310b Red Wheel Mouse 310c Wheel Mouse 4427 Portable CD ROM 4482 Serial Converter 4484 SMSC USB20H04 3-Port Hub [ThinkPad X4 UltraBase, Wistron S Note-3 Media Slice] 4485 ThinkPad Dock Hub 4524 40 Character Vacuum Fluorescent Display 4525 Double sided CRT 4535 4610 Suremark Printer 4550 NVRAM (128 KB) 4554 Cash Drawer 4580 Hub w/ NVRAM 4581 4800-2xx Hub w/ Cash Drawer 4604 Keyboard w/ Card Reader 4671 4820 LCD w/ MSR/KB 04b4 Cypress Semiconductor Corp. 0001 Mouse 0002 CY7C63x0x Thermometer 0008 CDC ACM serial port 0033 Mouse 0060 Wireless optical mouse 00f3 FX3 micro-controller (DFU mode) 0100 Cino FuzzyScan F760-B 0101 Keyboard/Hub 0102 Keyboard with APM 0130 MyIRC Remote Receiver 0306 Telephone Receiver 0407 Optical Skype Mouse 0818 AE-SMKD92-* [Thumb Keyboard] 0bad MetaGeek Wi-Spy 1002 CY7C63001 R100 FM Radio 1006 Human Interface Device 2050 hub 2830 Opera1 DVB-S (cold state) 3813 NANO BIOS Programmer 4235 Monitor 02 Driver 4381 SCAPS USC-1 Scanner Controller 4611 Storage Adapter FX2 (CY) 4616 Flash Disk (TPP) 4624 DS-Xtreme Flash Card 4717 West Bridge 5201 Combi Keyboard-Hub (Hub) 5202 Combi Keyboard-Hub (Keyboard) 5500 HID->COM RS232 Adapter 5a9b Dacal CD/DVD Library D-101/DC-300/DC-016RW 6022 Hantek DSO-6022BE 602a Hantek DSO-6022BL 6370 ViewMate Desktop Mouse CC2201 6502 CY4609 6506 CY4603 650a CY4613 6560 CY7C65640 USB-2.0 "TetraHub" 6570 Unprogrammed CY7C65632/34 hub HX2VL 6572 Unprogrammed CY7C65642 hub 6830 CY7C68300A EZ-USB AT2 USB 2.0 to ATA/ATAPI 6831 Storage Adapter ISD-300LP (CY) 7417 Wireless PC Lock/Ultra Mouse 8329 USB To keyboard/Mouse Converter 8613 CY7C68013 EZ-USB FX2 USB 2.0 Development Kit 8614 DTV-DVB UDST7020BDA DVB-S Box(DVBS for MCE2005) 861f Anysee E30 USB 2.0 DVB-T Receiver bca1 Barcode Reader cc04 Centor USB RACIA-ALVAR USB PORT cc06 Centor-P RACIA-ALVAR USB PORT d5d5 CY7C63x0x Zoltrix Z-Boxer GamePad de61 Barcode Reader de64 Barcode Reader f000 CY30700 Licorice evaluation board f111 CY8CKIT-002 PSoC MiniProg3 Rev A Program and debug kit f115 PSoC FirstTouch Programmer f139 KitProg f231 DELLY Changer 4in1 universal IR remote f232 Mono embedded computer fd10 Gembird MSIS-PM fd13 Energenie EG-PMS fd15 Energenie EG-PMS2 04b5 ROHM LSI Systems USA, LLC 3064 Hantek DSO-3064 6022 Hantek DSO-6022BE 602a Hantek DSO-6022BL 04b6 Hint Corp. 04b7 Compal Electronics, Inc. 04b8 Seiko Epson Corp. 0001 Stylus Color 740 / Photo 750 0002 ISD Smart Cable for Mac 0003 ISD Smart Cable 0004 Printer 0005 Printer 0006 Printer 0007 Printer 0015 Stylus Photo R3000 0080 SC-P400 Series 0101 GT-7000U [Perfection 636] 0102 GT-2200 0103 GT-6600U [Perfection 610] 0104 GT-7600UF [Perfection 1200U/1200U Photo] 0105 Stylus Scan 2000 0106 Stylus Scan 2500 0107 ES-2000 [Expression 1600U] 0108 CC-700 0109 ES-8500 [Expression 1640 XL] 010a GT-8700/GT-8700F [Perfection 1640SU/1640SU PHOTO] 010b GT-7700U [Perfection 1240U] 010c GT-6700U [Perfection 640] 010d CC-500L 010e ES-2200 [Perfection 1680] 010f GT-7200U [Perfection 1250/1250 PHOTO] 0110 GT-8200U/GT-8200UF [Perfection 1650/1650 PHOTO] 0112 GT-9700F [Perfection 2450 PHOTO] 0114 Perfection 660 0116 GT-9400UF [Perfection 3170] 0118 GT-F600 [Perfection 4180] 0119 GT-X750 [Perfection 4490 Photo] 011a CC-550L [1000 ICS] 011b GT-9300UF [Perfection 2400 PHOTO] 011c GT-9800F [Perfection 3200] 011d GT-7300U [Perfection 1260/1260 PHOTO] 011e GT-8300UF [Perfection 1660 PHOTO] 011f GT-8400UF [Perfection 1670/1670 PHOTO] 0120 GT-7400U [Perfection 1270] 0121 GT-F500/GT-F550 [Perfection 2480/2580 PHOTO] 0122 GT-F520/GT-F570 [Perfection 3590 PHOTO] 0126 ES-7000H [GT-15000] 0128 GT-X700 [Perfection 4870] 0129 ES-10000G [Expression 10000XL] 012a GT-X800 [Perfection 4990 PHOTO] 012b ES-H300 [GT-2500] 012c GT-X900 [Perfection V700/V750 Photo] 012d GT-F650 [GT-S600/Perfection V10/V100] 012e GT-F670 [Perfection V200 Photo] 012f GT-F700 [Perfection V350] 0130 GT-X770 [Perfection V500] 0131 GT-F720 [GT-S620/Perfection V30/V300 Photo] 0133 GT-1500 [GT-D1000] 0135 GT-X970 0136 ES-D400 [GT-S80] 0137 ES-D200 [GT-S50] 0138 ES-H7200 [GT-20000] 013a GT-X820 [Perfection V600 Photo] 0142 GT-F730 [GT-S630/Perfection V33/V330 Photo] 0143 GT-S55 0144 GT-S85 0151 Perfection V800 Photo 0202 Interface Card UB-U05 for Thermal Receipt Printers [M129C/TM-T70/TM-T88IV] 0401 CP 800 Digital Camera 0402 PhotoPC 850z 0403 PhotoPC 3000z 0509 JVC PIX-MC10 0601 Stylus Photo 875DC Card Reader 0602 Stylus Photo 895 Card Reader 0801 CC-600PX [Stylus CX5200/CX5400/CX6600] 0802 CC-570L [Stylus CX3100/CX3200] 0803 Printer (Composite Device) 0804 Storage Device 0805 Stylus CX6300/CX6400 0806 PM-A850 [Stylus Photo RX600/610] 0807 Stylus Photo RX500/510 0808 Stylus CX5200/CX5300/CX5400 0809 Storage Device 080a F-3200 080c ME100 [Stylus CX1500] 080d Stylus CX4500/4600 080e PX-A550 [CX-3500/3600/3650 MFP] 080f Stylus Photo RX420/RX425/RX430 0810 PM-A900 [Stylus Photo RX700] 0811 PM-A870 [Stylus Photo RX620/RX630] 0812 MFP Composite Device 0813 Stylus CX6500/6600 0814 PM-A700 0815 LP-A500 [AcuLaser CX1] 0816 Printer (Composite Device) 0817 LP-M5500/LP-M5500F 0818 Stylus CX3700/CX3800/DX3800 0819 PX-A650 [Stylus CX4700/CX4800/DX4800/DX4850] 081a PM-A750 [Stylus Photo RX520/RX530] 081b MFP Composite Device 081c PM-A890 [Stylus Photo RX640/RX650] 081d PM-A950 081e MFP Composite Device 081f Stylus CX7700/7800 0820 Stylus CX4100/CX4200/DX4200 0821 Stylus CX5700F/CX5800F 0822 Storage Device 0823 MFP Composite Device 0824 Storage Device 0825 MFP Composite Device 0826 Storage Device 0827 PM-A820 [Stylus Photo RX560/RX580/RX585/RX590] 0828 PM-A970 0829 PM-T990 082a PM-A920 082b Stylus CX5900/CX5000/DX5000/DX5050 082c Storage Device 082d Storage Device 082e PX-A720 [Stylus CX5900/CX6000/DX6000] 082f PX-A620 [Stylus CX3900/DX4000/DX4050] 0830 ME 200 [Stylus CX2800/CX2900] 0831 Stylus CX6900F/CX7000F/DX7000F 0832 MFP Composite Device 0833 LP-M5600 0834 LP-M6000 0835 AcuLaser CX21 0836 PM-T960 0837 PM-A940 [Stylus Photo RX680/RX685/RX690] 0838 PX-A640 [CX7300/CX7400/DX7400] 0839 PX-A740 [CX8300/CX8400/DX8400] 083a PX-FA700 [CX9300F/CX9400Fax/DX9400F] 083b MFP Composite Device 083c PM-A840S [Stylus Photo RX595/RX610] 083d MFP Composite Device 083e MFP Composite Device 083f Stylus CX4300/CX4400/CX5500/CX5600/DX4400/DX4450 0841 PX-401A [ME 300/Stylus NX100] 0843 LP-M5000 0844 EP-901A/EP-901F [Artisan 800/Stylus Photo PX800FW] 0846 EP-801A [Artisan 700/Stylus Photo PX700W/TX700W] 0847 PX-601F [ME Office 700FW/Stylus Office BX600FW/TX600FW] 0848 ME Office 600F/Stylus Office BX300F/TX300F 0849 Stylus SX205 084a PX-501A [Stylus NX400] 084d PX-402A [Stylus SX115/Stylus NX110 Series] 084f Multifunctional Printer Scanner [ME Office 510 / Epson Stylus SX215] 0850 EP-702A [Stylus Photo PX650/TX650 Series] 0851 Stylus SX410 0852 EP-802A [Artisan 710 Series/Stylus Photo PX710W/TX720W Series] 0853 EP-902A [Artisan 810 Series/Stylus Photo PX810FW Series] 0854 ME OFFICE 650FN Series/Stylus Office BX310FN/TX520FN Series 0855 PX-602F [Stylus Office BX610FW/TX620FW Series] 0856 PX-502A [Stylus SX515W] 085c ME 320/330 Series [Stylus SX125] 085d PX-603F [ME OFFICE 960FWD Series/Stylus Office BX625FWD/TX620FWD Series] 085e PX-503A [ME OFFICE 900WD Series/Stylus Office BX525WD] 085f Stylus Office BX320FW/TX525FW Series 0860 EP-903A/EP-903F [Artisan 835/Stylus Photo PX820FWD Series] 0861 EP-803A/EP-803AW [Artisan 725/Stylus Photo PX720WD/TX720WD Series] 0862 EP-703A [Stylus Photo PX660 Series] 0863 ME OFFICE 620F Series/Stylus Office BX305F/BX305FW/TX320F 0864 ME OFFICE 560W Series 0865 ME OFFICE 520 Series 0866 AcuLaser MX20DN/MX20DNF/MX21DNF 0869 PX-1600F 086a PX-673F [Stylus Office BX925FWD] 0870 Stylus Office BX305FW Plus 0871 K200 Series 0872 K300 Series 0873 L200 Series 0878 EP-704A 0879 EP-904A/EP-904F [Artisan 837/Stylus Photo PX830FWD Series] 087b EP-804A/EP-804AR/EP-804AW [Stylus Photo PX730WD/Artisan 730 Series] 087c PX-1700F 087d PX-B750F/WP-4525 Series 087f PX-403A 0880 PX-434A [Stylus NX330 Series] 0881 PX-404A [ME OFFICE 535] 0883 ME 340 Series/Stylus NX130 Series 0884 Stylus NX430W Series 0885 Stylus NX230/SX235W Series 088f Stylus Office BX635FWD 0890 ME OFFICE 940FW Series/Stylus Office BX630FW Series 0891 Stylus Office BX535WD 0892 Stylus Office BX935FWD 0893 EP-774A 0e03 Thermal Receipt Printer [TM-T20] 1114 XP-440 [Expression Home Small-in-One Printer] 1115 ES-0133 [Expression Home XP-342] 1129 ET-4750 [WorkForce ET-4750 EcoTank All-in-One] 1168 Workforce WF-7820/7840 Series 04b9 Rainbow Technologies, Inc. 0300 SafeNet USB SuperPro/UltraPro 1000 iKey 1000 Token 1001 iKey 1200 Token 1002 iKey Token 1003 iKey Token 1004 iKey Token 1005 iKey Token 1006 iKey Token 1200 iKey 2000 Token 1201 iKey Token 1202 iKey 2032 Token 1203 iKey Token 1204 iKey Token 1205 iKey Token 1206 iKey 4000 Token 1300 iKey 3000 Token 1301 iKey 3000 1302 iKey Token 1303 iKey Token 1304 iKey Token 1305 iKey Token 1306 iKey Token 8000 SafeNet Sentinel Hardware Key 04ba Toucan Systems, Ltd 04bb I-O Data Device, Inc. 0101 USB2-IDE/ATAPI Bridge Adapter 014a HDCL-UT 0201 USB2-IDE/ATAPI Bridge Adapter 0204 DVD Multi-plus unit iU-CD2 0206 DVD Multi-plus unit DVR-UEH8 0301 Storage Device 0314 USB-SSMRW SD-card 0319 USB2-IDE/ATAPI Bridge Adapter 031a USB2-IDE/ATAPI Bridge Adapter 031b USB2-IDE/ATAPI Bridge Adapter 031e USB-SDRW SD-card 0502 Nogatech Live! (BT) 0528 GV-USB Video Capture 0901 USB ETT 0904 ET/TX Ethernet [pegasus] 0913 ET/TX-S Ethernet [pegasus2] 0919 USB WN-B11 0922 IOData AirPort WN-B11/USBS 802.11b 0930 ETG-US2 0937 WN-WAG/USL Wireless LAN Adapter 0938 WN-G54/USL Wireless LAN Adapter 093b WN-GDN/USB 093f WNGDNUS2 802.11n 0944 WHG-AGDN/US Wireless LAN Adapter 0945 WN-GDN/US3 Wireless LAN Adapter 0947 WN-G150U Wireless LAN Adapter 0948 WN-G300U Wireless LAN Adapter 0a03 Serial USB-RSAQ1 0a07 USB2-iCN Adapter 0a08 USB2-iCN Adapter 0c01 FM-10 Pro Disk 04bd Toshiba Electronics Taiwan Corp. 04be Telia Research AB 04bf TDK Corp. 0100 MediaReader CF 0115 USB-PDC Adapter UPA9664 0116 USB-cdmaOne Adapter UCA1464 0117 USB-PHS Adapter UHA6400 0118 USB-PHS Adapter UPA6400 0135 MediaReader Dual 0202 73S1121F Smart Card Reader- 0309 Bluetooth USB dongle 030a IBM Bluetooth Ultraport Module 030b Bluetooth Device 030c Ultraport Bluetooth Device 0310 Integrated Bluetooth 0311 Integrated Bluetooth Device 0317 Bluetooth UltraPort Module from IBM 0318 IBM Integrated Bluetooth 0319 Bluetooth Adapter 0320 Bluetooth Adapter 0321 Bluetooth Device 0a28 INDI AV-IN Device 1301 Network Controller 1302 i3 Gateway 1303 i3 Micro Module 1304 i3 Module 1305 i3 Multi Sensing Module 04c1 U.S. Robotics (3Com) 0020 56K Voice Pro 0022 56K Voice Pro 007e ISDN TA 0082 OfficeConnect Analog Modem 008f Pro ISDN TA 0097 OfficeConnect Analog 009d HomeConnect Webcam [vicam] 00a9 ISDN Pro TA-U 00b9 HomeConnect IDSL Modem 3021 56k Voice FaxModem Pro 04c2 Methode Electronics Far East PTE, Ltd 04c3 Maxi Switch, Inc. 1102 Mouse 2102 Mouse 04c4 Lockheed Martin Energy Research 04c5 Fujitsu, Ltd 1029 fi-4010c Scanner 1033 fi-4110CU 1041 fi-4120c Scanner 1042 fi-4220c Scanner 105b AH-F401U Air H device 1084 PalmSecure Sensor V2 1096 fi-5110EOX 1097 fi-5110C 10ae fi-4120C2 10af fi-4220C2 10c7 fi-60f scanner 10e0 fi-5120c Scanner 10e1 fi-5220C 10e7 fi-5900C 10fe S500 1104 KD02906 Line Thermal Printer 114f fi-6130 1150 fi-6230 11f3 fi-6130Z 125a PalmSecure Sensor Device - MP 132e fi-7160 159f ScanSnap iX1500 200f Sigma DP2 (Mass Storage) 2010 Sigma DP2 (PictBridge) 201d SATA 3.0 6Gbit/s Adaptor [GROOVY] 04c6 Toshiba America Electronic Components 04c7 Micro Macro Technologies 04c8 Konica Corp. 0720 Digital Color Camera 0721 e-miniD Camera 0722 e-mini 0723 KD-200Z Camera 0726 KD-310Z Camera 0728 Revio C2 Mass Storage Device 0729 Revio C2 Digital Camera 072c Revio KD20M 072d Revio KD410Z 04ca Lite-On Technology Corp. 0020 USB Keyboard 003a Multimedia Keyboard 004b Keyboard 004f SK-9020 keyboard 008a Acer Wired Mouse Model SM-9023 00f9 Multimedia Keyboard 1766 HID Monitor Controls 2004 Bluetooth 4.0 [Broadcom BCM20702A0] 2006 Broadcom BCM43142A0 Bluetooth Device 2007 Broadcom BCM43142A0 Bluetooth Device 3005 Atheros Bluetooth 300b Atheros AR3012 Bluetooth 300d Atheros AR3012 Bluetooth 300f Atheros AR3012 Bluetooth 3014 Qualcomm Atheros Bluetooth 3015 Qualcomm Atheros QCA9377 Bluetooth 7022 HP HD Webcam 7025 HP HD Webcam 7046 TOSHIBA Web Camera - HD 7054 HP HD Webcam 705a HD Webcam (960×540) 9304 Hub f01c TT1280DA DVB-T TV Tuner 04cb Fuji Photo Film Co., Ltd 0100 FinePix 30i/40i/50i, A101/201, 1300/2200, 1400/2400/2600/2800/4500/4700/4800/4900/6800/6900 Zoom 0103 FinePix NX-500/NX-700 printer 0104 FinePix A101, 2600/2800/4800/6800 Zoom (PC CAM) 0108 FinePix F601 Zoom (DSC) 0109 FinePix F601 Zoom (PC CAM) 010a FinePix S602 (Pro) Zoom (DSC) 010b FinePix S602 (Pro) Zoom (PC CAM) 010d FinePix S2 pro 010e FinePix F402 Zoom (DSC) 010f FinePix F402 Zoom (PC CAM) 0110 FinePix M603 Zoom (DSC) 0111 FinePix M603 Zoom (PC CAM) 0112 FinePix A202, A200 Zoom (DSC) 0113 FinePix A202, A200 Zoom (PC CAM) 0114 FinePix F401 Zoom (DSC) 0115 FinePix F401 Zoom (PC CAM) 0116 FinePix A203 Zoom (DSC) 0117 FinePix A203 Zoom (PC CAM) 0118 FinePix A303 Zoom (DSC) 0119 FinePix A303 Zoom (PC CAM) 011a FinePix S304/3800 Zoom (DSC) 011b FinePix S304/3800 Zoom (PC CAM) 011c FinePix A204/2650 Zoom (DSC) 011d FinePix A204/2650 Zoom (PC CAM) 0120 FinePix F700 Zoom (DSC) 0121 FinePix F700 Zoom (PC CAM) 0122 FinePix F410 Zoom (DSC) 0123 FinePix F410 Zoom (PC CAM) 0124 FinePix A310 Zoom (DSC) 0125 FinePix A310 Zoom (PC CAM) 0126 FinePix A210 Zoom (DSC) 0127 FinePix A210 Zoom (PC CAM) 0128 FinePix A205(S) Zoom (DSC) 0129 FinePix A205(S) Zoom (PC CAM) 012a FinePix F610 Zoom (DSC) 012b FinePix Digital Camera 030513 012c FinePix S7000 Zoom (DSC) 012d FinePix S7000 Zoom (PC CAM) 012f FinePix Digital Camera 030731 0130 FinePix S5000 Zoom (DSC) 0131 FinePix S5000 Zoom (PC CAM) 013b FinePix Digital Camera 030722 013c FinePix S3000 Zoom (DSC) 013d FinePix S3000 Zoom (PC CAM) 013e FinePix F420 Zoom (DSC) 013f FinePix F420 Zoom (PC CAM) 0142 FinePix S7000 Zoom (PTP) 0148 FinePix A330 Zoom (DSC) 0149 FinePix A330 Zoom (UVC) 014a FinePix A330 Zoom (PTP) 014b FinePix A340 Zoom (DSC) 014c FinePix A340 Zoom (UVC) 0159 FinePix F710 Zoom (DSC) 0165 FinePix S3500 Zoom (DSC) 0168 FinePix E500 Zoom (DSC) 0169 FinePix E500 Zoom (UVC) 016b FinePix E510 Zoom (DSC) 016c FinePix E510 Zoom (PC CAM) 016e FinePix S5500 Zoom (DSC) 016f FinePix S5500 Zoom (UVC) 0171 FinePix E550 Zoom (DSC) 0172 FinePix E550 Zoom (UVC) 0177 FinePix F10 (DSC) 0179 Finepix F10 (PTP) 0186 FinePix S5200/S5600 Zoom (DSC) 0188 FinePix S5200/S5600 Zoom (PTP) 018e FinePix S9500 Zoom (DSC) 018f FinePix S9500 Zoom (PTP) 0192 FinePix E900 Zoom (DSC) 0193 FinePix E900 Zoom (PTP) 019b FinePix F30 (PTP) 01af FinePix A700 (PTP) 01bf FinePix F6000fd/S6500fd Zoom (PTP) 01c0 FinePix F20 (PTP) 01c1 FinePix F31fd (PTP) 01c3 FinePix S5 Pro 01c4 FinePix S5700 Zoom (PTP) 01c5 FinePix F40fd (PTP) 01c6 FinePix A820 Zoom (PTP) 01d2 FinePix A800 Zoom (PTP) 01d3 FinePix A920 (PTP) 01d4 FinePix F50fd (PTP) 01d5 FinePix F47 (PTP) 01e7 Fujifilm A850 Digital Camera 01f7 FinePix J250 (PTP) 01fd A160 023e FinePix AX300 0240 FinePix S2950 Digital Camera 0241 FinePix S3200 Digital Camera 0278 FinePix JV300 02c5 FinePix S9900W Digital Camera (PTP) 02e0 X-T200 Digital Camera 5006 ASK-300 5007 DX100 04cc ST-Ericsson 1122 Hub 1520 USB 2.0 Hub (Avocent KVM) 1521 USB 2.0 Hub 1a62 GW Instek GSP-830 Spectrum Analyzer (HID) 2323 Ux500 serial debug port 2533 NFC device (PN533) 8116 Camera 04cd Tatung Co. Of America 04ce ScanLogic Corp. 0002 SL11R-IDE IDE Bridge 0100 USB2PRN Printer Class 0300 Phantom 336CX - C3 scanner 04ce SL11DEMO, VID: 0x4ce, PID: 0x4ce 07d1 SL11R, VID: 0x4ce, PID: 0x07D1 04cf Myson Century, Inc. 0022 OCZ Alchemy Series Elixir II Keyboard 0800 MTP800 Mass Storage Device 8810 CS8810 Mass Storage Device 8811 CS8811 Mass Storage Device 8813 CS8813 Mass Storage Device 8818 USB2.0 to ATAPI Bridge Controller 8819 USB 2.0 SD/MMC Reader 9920 CS8819A2-114 Mass Storage Device 04d0 Digi International 04d1 ITT Canon 04d2 Altec Lansing Technologies 0070 ADA70 Speakers 0305 Non-Compliant Audio Device 0311 ADA-310 Speakers 2060 Claritel-i750 - vp ff05 ADA-305 Speakers ff47 Lansing HID Audio Controls ff49 Lansing HID Audio Controls 04d3 VidUS, Inc. 04d4 LSI Logic, Inc. 04d5 Forte Technologies, Inc. 04d6 Mentor Graphics e301 Bio-Key TouchLock XL All Weather Keyless Bio-Lock with Fingerprint Recognition e302 ZC3202 [4GB Green Book Digital Quran Reading Pen For Home Teaching Quran] 04d7 Oki Semiconductor 1be4 Bluetooth Device 04d8 Microchip Technology, Inc. 0002 PicoLCD 20x2 0003 PICkit 2 Microcontroller Programmer 000a CDC RS-232 Emulation Demo 000b PIC18F2550 (32K Flashable 10 Channel, 10 Bit A/D USB Microcontroller) 0032 PICkit1 0033 PICkit2 0036 PICkit Serial Analyzer 00dd MCP2221(a) UART/I2C Bridge 00e0 PIC32 Starter Board 04cd 28Cxxx EEPROM Programmer 0a04 AGP LIN Serial Analyzer 8000 In-Circuit Debugger 8001 ICD2 in-circuit debugger 8101 PIC24F Starter Kit 8107 Microstick II 8108 ChipKit Pro MX7 (PIC32MX) 9004 Microchip REAL ICE 9009 ICD3 900a PICkit3 9012 PICkit4 9015 ICD 4 In-Circuit Debugger c001 PicoLCD 20x4 e11c TL866CS EEPROM Programmer [MiniPRO] e72e YuanCon e7ee travisgeis.com Bike Light ec72 Joystick with Rotary Switch Creative Electronics Ltd ed16 BeamiRC 2.0 CNC remote controller analoge edb4 micro PLC (ATSAMD51G19A) [Black Brix ECU II] edb5 ATMEGA32U4 [Black Brix ECU] f2c4 Macareux-labs Hygrometry Temperature Sensor f2f7 Yepkit YKUSH f3aa Macareux-labs Usbce Bootloader mode f437 SBE Tech Ultrasonic Anemometer f4b5 SmartScope f5fe TrueRNG f8da Hughski Ltd. ColorHug f8e8 Harmony 300/350 Remote f91c SPROG IIv3 faff Dangerous Prototypes BusPirate v4 Bootloader mode fb00 Dangerous Prototypes BusPirate v4 fbb2 GCUSB-nStep stepper motor controller fbba DiscFerret Magnetic Disc Analyser (bootloader mode) fbbb DiscFerret Magnetic Disc Analyser (active mode) fc1e Bachrus Speedometer Interface fc92 Open Bench Logic Sniffer ffee Devantech USB-ISS ffef PICoPLC [APStech] 04d9 Holtek Semiconductor, Inc. 0006 Wired Keyboard (78/79 key) [RPI Wired Keyboard 5] 0022 Portable Keyboard 0129 Keyboard [KBPV8000] 0169 Keyboard 0198 Keyboard 0348 Keyboard 0407 Keyboard [TEX Shinobi] 0462 Laser Gaming mouse 048e Optical Mouse 0499 Optical Mouse 1135 Mouse [MGK-15BU/MLK-15BU] 1203 Keyboard 1400 PS/2 keyboard + mouse controller 1503 Keyboard 1603 Keyboard 1605 Keyboard 1702 Keyboard LKS02 1818 Keyboard [Diatec Filco Majestouch 2] 2011 Keyboard [Diatec Filco Majestouch 1] 2013 Keyboard [Das Keyboard] 2206 Fujitsu Siemens Mouse Esprimo Q 2221 Keyboard 2323 Keyboard 2519 Shenzhen LogoTech 2.4GHz receiver 2832 HT82A832R Audio MCU 2834 HT82A834R Audio MCU 4545 Keyboard [Diatec Majestouch 2 Tenkeyless] a01c wireless multimedia keyboard with trackball [Trust ADURA 17911] a050 Chatman V1 a052 USB-zyTemp a055 Keyboard a075 Optical Gaming Mouse a096 Keyboard a09f E-Signal LUOM G10 Mechanical Gaming Mouse a100 Mouse [HV-MS735] a11b Mouse [MX-3200] a153 Optical Gaming Mouse a29f Microarray fingerprint reader b534 LGT8F328P Microprocessor e002 MCU fc2a Gaming Mouse [Redragon M709] fc30 Gaming Mouse [Redragon M711] fc38 Gaming Mouse [Redragon M602-RGB] fc4d Gaming Mouse [Redragon M908] fc55 Venus MMO Gaming Mouse 04da Panasonic (Matsushita) 0901 LS-120 Camera 0912 SDR-S10 0b01 CD-R/RW Drive 0b03 SuperDisk 240MB 0d01 CD-R Drive KXL-840AN 0d09 CD-R Drive KXL-RW32AN 0d0a CD-R Drive KXL-CB20AN 0d0d CDRCB03 0d0e DVD-ROM & CD-R/RW 0d14 DVD-RAM MLT08 0f07 KX-MB2030 Multifunction Laser Printer 0f40 Printer 104d Elite Panaboard UB-T880 (HID) 104e Elite Panaboard Pen Adaptor (HID) 1500 MFSUSB Driver 1800 DY-WL10 802.11abgn Adapter [Broadcom BCM4323] 1b00 MultiMediaCard 2121 EB-VS6 2316 DVC Mass Storage Device 2317 DVC USB-SERIAL Driver for WinXP 2318 NV-GS11/230/250 (webcam mode) 2319 NV-GS15 (webcam mode) 231a NV-GS11/230/250 (DV mode) 231d DVC Web Camera Device 231e DVC DV Stream Device 2372 Lumix Camera (Storage mode) 2374 Lumix Camera (PTP mode) 2451 HDC-SD9 245b HC-X920K (3MOS Full HD video camcorder) 2477 SDR-H85 Camcorder (PC mode) 2478 SDR-H85 Camcorder (recorder mode - SD card) 2479 SDR-H85 Camcorder (recorder mode - HDD) 2497 HDC-TM700 250c Gobi Wireless Modem (QDL mode) 250d Gobi Wireless Modem 3904 N5HBZ0000055 802.11abgn Wireless Adapter [Atheros AR7010+AR9280] 3908 N5HBZ0000062 802.11abgn Wireless Adapter [Atheros AR9374v1.1] 3c04 JT-P100MR-20 [ePassport Reader] 04db Hypertec Pty, Ltd 04dc Huan Hsin Holdings, Ltd 04dd Sharp Corp. 13a6 MFC2000 6006 AL-1216 6007 AL-1045 6008 AL-1255 6009 AL-1530CS 600a AL-1540CS 600b AL-1456 600c AL-1555 600d AL-1225 600e AL-1551CS 600f AR-122E 6010 AR-152E 6011 AR-157E 6012 SN-1045 6013 SN-1255 6014 SN-1456 6015 SN-1555 6016 AR-153E 6017 AR-122E N 6018 AR-153E N 6019 AR-152E N 601a AR-157E N 601b AL-1217 601c AL-1226 601d AR-123E 6021 IS01 7002 DVC Ver.1.0 7004 VE-CG40U Digital Still Camera 7005 VE-CG30 Digital Still Camera 7007 VL-Z7S Digital Camcorder 8004 Zaurus SL-5000D/SL-5500 PDA 8005 Zaurus A-300 8006 Zaurus SL-B500/SL-5600 PDA 8007 Zaurus C-700 PDA 9009 AR-M160 9014 IM-DR80 Portable NetMD Player 9031 Zaurus C-750/C-760/C-860/SL-C3000 PDA 9032 Zaurus SL-6000 903a GSM GPRS 9050 Zaurus C-860 PDA 9056 Viewcam Z 9073 AM-900 9074 GSM GPRS 90a9 Sharp Composite 90d0 USB-to-Serial Comm. Port 90f2 Sharp 3G GSM USB Control 9120 WS004SH 9122 WS007SH 9123 W-ZERO3 ES Smartphone 91a3 922SH Internet Machine 939a IS03 04de MindShare, Inc. 04df Interlink Electronics 04e1 Iiyama North America, Inc. 0201 Monitor Hub 04e2 Exar Corp. 0801 XR22801 Hub 0802 XR22802 Hub 0804 XR22804 Hub 1100 XR2280x I2C Controller 1200 XR2280x GPIO Controller 1300 XR2280x 10/100 Ethernet 1400 XR2280x UART Channel A 1401 XR2280x UART Channel B 1402 XR2280x UART Channel C 1403 XR2280x UART Channel D 1410 XR21V1410 USB-UART IC 1411 XR21B1411 UART 1412 XR21V1412 2-channel UART 1414 XR21V1414 4-channel UART 1420 XR21B1420 UART 1422 XR21B1422 2-channel UART 1424 XR21B1424 4-channel UART 04e3 Zilog, Inc. 04e4 ACC Microelectronics 04e5 Promise Technology 04e6 SCM Microsystems, Inc. 0001 E-USB ATA Bridge 0002 eUSCSI SCSI Bridge 0003 eUSB SmartMedia Card Reader 0005 eUSB SmartMedia/CompactFlash Card Reader 0006 eUSB SmartMedia Card Reader 0007 Hifd 0009 eUSB ATA/ATAPI Adapter 000a eUSB CompactFlash Adapter 000b eUSCSI Bridge 000c eUSCSI Bridge 000d Dazzle MS 0012 Dazzle SD/MMC 0101 eUSB ATA Bridge (Sony Spressa USB CDRW) 0311 Dazzle DM-CF 0312 Dazzle DM-SD/MMC 0313 Dazzle SM 0314 Dazzle MS 0322 e-Film Reader-5 0325 eUSB ORCA Quad Reader 0327 Digital Media Reader 03fe DMHS2 DFU Adapter 0406 eUSB SmartDM Reader 04e6 eUSB DFU Adapter 04e7 STCII DFU Adapter 04e8 eUSBDM DFU Adapter 04e9 DM-E DFU Adapter 0500 Veridicom 5thSense Fingerprint Sensor and eUSB SmartCard 0701 DCS200 Loader Device 0702 DVD Creation Station 200 0703 DVC100 Loader Device 0704 Digital Video Creator 100 1001 SCR300 Smart Card Reader 1010 USBAT-2 CompactFlash Card Reader 1014 e-Film Reader-3 1020 USBAT ATA/ATAPI Adapter 2007 RSA SecurID ComboReader 2009 Citibank Smart Card Reader 200a Reflex v.2 Smart Card Reader 200d STR391 Reader 5111 SCR331-DI SmartCard Reader 5113 SCR333 SmartCard Reader 5114 SCR331-DI SmartCard Reader 5115 SCR335 SmartCard Reader 5116 SCR331-LC1 / SCR3310 SmartCard Reader 5117 SCR3320 - Smart Card Reader 5118 Expresscard SIM Card Reader 5119 SCR3340 - ExpressCard54 Smart Card Reader 511b SmartCard Reader 511d SCR3311 Smart Card Reader 5120 SCR331-DI SmartCard Reader 5121 SDI010 Smart Card Reader 5151 SCR338 Keyboard Smart Card Reader 5292 SCL011 RFID reader 5410 SCR35xx Smart Card Reader 5591 SCL3711-NFC&RW 5810 uTrust 2700 R Smart Card Reader e000 SCRx31 Reader e001 SCR331 SmartCard Reader e003 SPR532 PinPad SmartCard Reader 04e7 Elo TouchSystems 0001 TouchScreen 0002 Touchmonitor Interface 2600 Rev 2 0004 4000U CarrollTouch® Touchmonitor Interface 0007 2500U IntelliTouch® Touchmonitor Interface 0008 3000U AccuTouch® Touchmonitor Interface 0009 4000U CarrollTouch® Touchmonitor Interface 0020 Touchscreen Interface (2700) 0021 Touchmonitor Interface 0030 4500U CarrollTouch® Touchmonitor Interface 0032 Touchmonitor Interface 0033 Touchmonitor Interface 0041 5010 Surface Capacitive Touchmonitor Interface 0042 Touchmonitor Interface 0050 2216 AccuTouch® Touchmonitor Interface 0071 Touchmonitor Interface 0072 Touchmonitor Interface 0081 Touchmonitor Interface 0082 Touchmonitor Interface 00ff Touchmonitor Interface 2902 WLIDS 21.5 Touchscreen 04e8 Samsung Electronics Co., Ltd 0001 Printer Bootloader 0100 Kingston Flash Drive (128MB) 0110 Connect3D Flash Drive 0111 Connect3D Flash Drive 0300 E2530 / GT-C3350 Phones (Mass storage mode) 04e8 Galaxy (MIDI mode) 1003 MP3 Player and Recorder 1006 SDC-200Z 130c NX100 1323 WB700 Camera 1f05 S2 Portable [JMicron] (500GB) 1f06 HX-MU064DA portable harddisk 2018 WIS09ABGN LinkStick Wireless LAN Adapter 2035 Digital Photo Frame Mass Storage 2036 Digital Photo Frame Mini Monitor 3004 ML-4600 3005 Docuprint P1210 3008 ML-6060 laser printer 300c ML-1210 Printer 300e Laser Printer 3104 ML-3550N 3210 ML-5200A Laser Printer 3226 Laser Printer 3228 Laser Printer 322a Laser Printer 322c Laser Printer 3230 ML-1440 3232 Laser Printer 3236 ML-1450 3238 ML-1430 323a ML-1710 Printer 323b Phaser 3130 323c Laser Printer 323d Phaser 3120 323e Laser Printer 3240 Laser Printer 3242 ML-1510 Laser Printer 3248 Color Laser Printer 324a Laser Printer 324c ML-1740 Printer 324d Phaser 3121 3256 ML-1520 Laser Printer 325b Xerox Phaser 3117 Laser Printer 325f Phaser 3425 Laser Printer 3260 CLP-510 Color Laser Printer 3268 ML-1610 Mono Laser Printer 326c ML-2010P Mono Laser Printer 3276 ML-3050/ML-3051 Laser Printer 327e ML-2510 Series 328e CLP-310 Color Laser Printer 3292 ML-1640 Series Laser Printer 3296 ML-2580N Mono Laser Printer 3297 ML-191x/ML-252x Laser Printer 329f CLP-325 Color Laser Printer 3301 ML-1660 Series 330c ML-1865 330f ML-216x Series Laser Printer 3310 ML-331x Series Laser Printer 3315 ML-2540 Series Laser Printer 331e M262x/M282x Xpress Series Laser Printer 3409 SCX-4216F Scanner 340c SCX-5x15 series 340d SCX-6x20 series 340e MFP 560 series 340f Printing Support 3412 SCX-4x20 series 3413 SCX-4100 Scanner 3415 Composite Device 3419 Composite Device 341a Printing Support 341b SCX-4200 series 341c Composite Device 341d Composite Device 341f Composite Device 3420 Composite Device 3426 SCX-4500 Laser Printer 342d SCX-4x28 Series 344f SCX-3400 Series 347e C48x Series Color Laser Multifunction Printer 3605 InkJet Color Printer 3606 InkJet Color Printer 3609 InkJet Color Printer 3902 InkJet Color Printer 3903 Xerox WorkCentre XK50cx 390f InkJet Color Printer 3911 SCX-1020 series 4001 PSSD T7 4005 GT-S8000 Jet (msc) 4f1f GT-S8000 Jet (mtp) 5000 YP-MF series 5001 YP-100 5002 YP-30 5003 YP-700 5004 YP-30 5005 YP-300 5006 YP-750 500d MP3 Player 5010 Yepp YP-35 5011 YP-780 5013 YP-60 5015 yepp upgrade 501b MP3 Player 5021 Yepp YP-ST5 5026 YP-MT6V 5027 YP-T7 502b YP-F1 5032 YP-J70 503b YP-U1 MP3 Player 503d YP-T7F 5041 YP-Z5 5050 YP-U2 MP3 Player 5051 YP-F2R 5055 YP-T9 507d YP-U3 (mtp) 507f YP-T9J 5080 Yepp YP-K3 (msc) 5081 Yepp YP-K3 (mtp) 5082 YP-P2 (msc) 5083 YP-P2 (mtp) 508a YP-T10 508b YP-S5 MP3 Player 508c YP-S5 5090 YP-S3 (msc) 5091 YP-S3 (mtp) 5092 YP-U4 (msc) 5093 YP-U4 (mtp) 5095 YP-S2 510f YP-R1 5119 Yepp YP-P3 511c YP-Q2 5121 YP-U5 5123 Yepp YP-M1 5a00 YP-NEU 5a01 YP-NDU 5a03 Yepp MP3 Player 5a04 YP-800 5a08 YP-90 5a0f Meizu M6 MiniPlayer 5b01 Memory Stick Reader/Writer 5b02 Memory Stick Reader/Writer 5b03 Memory Stick Reader/Writer 5b04 Memory Stick Reader/Writer 5b05 Memory Stick Reader/Writer 5b11 SEW-2001u Card 5f00 NEXiO Sync 5f01 NEXiO Sync 5f02 NEXiO Sync 5f03 NEXiO Sync 5f04 NEXiO Sync 5f05 STORY Station 1TB 6032 G2 Portable hard drive 6033 G2 Portable device 6034 G2 Portable hard drive 60b3 M2 Portable Hard Drive 60c4 M2 Portable Hard Drive USB 3.0 6124 D3 Station External Hard Drive 6125 D3 Station External Hard Drive 61b5 M3 Portable Hard Drive 2TB 61b6 M3 Portable Hard Drive 1TB 61b7 M3 Portable Hard Drive 4TB 61f3 Portable SSD T3 (MU-PT250B, MU-PT500B) 61f5 Portable SSD T5 6601 Mobile Phone 6602 Galaxy 6603 Galaxy 6611 MITs Sync 6613 MITs Sync 6615 MITs Sync 6617 MITs Sync 6619 MITs Sync 661b MITs Sync 661e Handheld 6620 Handheld 6622 Handheld 6624 Handheld 662e MITs Sync 6630 MITs Sync 6632 MITs Sync 663e D900e/B2100 Phone 663f SGH-E720/SGH-E840 6640 Usb Modem Enumerator 6651 i8510 Innov8 6702 X830 6708 U600 Phone 6709 U600 6734 Juke 6759 D900e/B2100 Media Player 675a D900e/B2100 Mass Storage 675b D900e Camera 6772 Standalone LTE device (Trial) 6795 S5230 6802 Standalone HSPA device 6806 Composite LTE device (Trial) 6807 Composite HSPA device 681c Galaxy Portal/Spica/S 681d Galaxy Portal/Spica Android Phone 6843 E2530 Phone (Samsung Kies mode) 684e Wave (GT-S8500) 685b GT-I9100 Phone [Galaxy S II] (mass storage mode) 685c GT-I9250 Phone [Galaxy Nexus] (Mass storage mode) 685d GT-I9100 Phone [Galaxy S II] (Download mode) 685e GT-I9100 / GT-C3350 Phones (USB Debugging mode) 6860 Galaxy series, misc. (MTP mode) 6863 Galaxy series, misc. (tethering mode) 6864 GT-I9070 (network tethering, USB debugging enabled) 6865 Galaxy (PTP mode) 6866 Galaxy (debugging mode) 6868 Escape Composite driver for Android Phones: Modem+Diagnostic+ADB 6875 GT-B3710 Standalone LTE device (Commercial) 6876 GT-B3710 LTE Modem 6877 Galaxy S 687a GT-E2370 mobile phone 6888 GT-B3730 Composite LTE device (Commercial) 6889 GT-B3730 Composite LTE device (Commercial) 689a LTE Storage Driver [CMC2xx] 689e GT-S5670 [Galaxy Fit] 68aa Reality 7011 SEW-2003U Card 7021 Bluetooth Device 7061 eHome Infrared Receiver 7080 Anycall SCH-W580 7081 Human Interface Device 7301 Fingerprint Device 8001 Handheld 8002 Portable SSD 500GB Model Number: MU - P8500B 8003 Portable SSD T1 d003 GT-I9003 e020 SERI E02 SCOM 6200 UMTS Phone e021 SERI E02 SCOM 6200 Virtual UARTs e022 SERI E02 SCOM 6200 Flash Load Disk f000 Intensity 3 (Mass Storage Mode) ff30 SG_iMON 04e9 PC-Tel, Inc. 04ea Brooktree Corp. 04eb Northstar Systems, Inc. e004 eHome Infrared Transceiver 04ec Tokyo Electron Device, Ltd 04ed Annabooks 04ef Pacific Electronic International, Inc. 04f0 Daewoo Electronics Co., Ltd 04f1 Victor Company of Japan, Ltd 0001 GC-QX3 Digital Still Camera 0004 GR-DVL815U Digital Video Camera 0006 DV Camera Storage 0008 GZ-MG30AA/MC500E Digital Video Camera 0009 GR-DX25EK Digital Video Camera 000a GR-D72 Digital Video Camera 1001 GC-A50 Camera Device 3008 MP-PRX1 Ethernet 3009 MP-XP7250 WLAN Adapter 04f2 Chicony Electronics Co., Ltd 0001 KU-8933 Keyboard 0002 NT68P81 Keyboard 0110 KU-2971 Keyboard 0111 KU-9908 Keyboard 0112 KU-8933 Keyboard with PS/2 Mouse port 0116 KU-2971/KU-0325 Keyboard 0200 KBR-0108 0201 Gaming Keyboard KPD0250 0220 Wireless HID Receiver 0402 Genius LuxeMate i200 Keyboard 0403 KU-0420 keyboard 0418 KU-0418 Tactical Pad 0618 RG-0618U Wireless HID Receiver & KG-0609 Wireless Keyboard with Touchpad 0718 wired mouse 0760 Acer KU-0760 Keyboard 0833 KU-0833 Keyboard 0841 HP Multimedia Keyboard 0860 2.4G Multimedia Wireless Kit 0939 Amazon Basics mouse 1061 HP KG-1061 Wireless Keyboard+Mouse 1121 Periboard 717 Mini Wireless Keyboard 2159 PERIBOARD-535 [Perixx Ergo Keyboard] a001 E-Video DC-100 Camera a120 ORITE CCD Webcam(PC370R) a121 ORITE CCD Webcam(PC370R) a122 ORITE CCD Webcam(PC370R) a123 ORITE CCD Webcam(PC370R) a124 ORITE CCD Webcam(PC370R) a128 PC Camera (SN9C202 + OV7663 + EEPROM) a133 Gateway Webcam a136 LabTec Webcam 5500 a147 Medion Webcam a204 DSC WIA Device (1300) a208 DSC WIA Device (2320) a209 Labtec DC-2320 a20a DSC WIA Device (3310) a20c DSC WIA Device (3320) a210 Audio Device b008 USB 2.0 Camera b009 Integrated Camera b010 Integrated Camera b012 1.3 MPixel UVC Webcam b013 USB 2.0 Camera b015 VGA 24fps UVC Webcam b016 VGA 30fps UVC Webcam b018 2M UVC Webcam b021 ViewSonic 1.3M, USB2.0 Webcam b022 Gateway USB 2.0 Webcam b023 Gateway USB 2.0 Webcam b024 USB 2.0 Webcam b025 Camera b027 Gateway USB 2.0 Webcam b028 VGA UVC Webcam b029 1.3M UVC Webcam b036 Asus Integrated 0.3M UVC Webcam b044 Acer CrystalEye Webcam b057 integrated USB webcam b059 CKF7037 HP webcam b064 CNA7137 Integrated Webcam b070 Camera b071 2.0M UVC Webcam / CNF7129 b083 CKF7063 Webcam (HP) b091 Webcam b104 CNF7069 Webcam b107 CNF7070 Webcam b14c CNF8050 Webcam b159 CNF8243 Webcam b15c Sony Vaio Integrated Camera b175 4-Port Hub b1aa Webcam-101 b1ac HP Laptop Integrated Webcam [2 MP Fixed] b1b4 Lenovo Integrated Camera b1b9 Asus Integrated Webcam b1bb 2.0M UVC WebCam b1cf Lenovo Integrated Camera b1d6 CNF9055 Toshiba Webcam b1d8 1.3M Webcam b1e4 Toshiba Integrated Webcam b213 Fujitsu Integrated Camera b217 Lenovo Integrated Camera (0.3MP) b221 integrated camera b230 Integrated HP HD Webcam b249 HP Integrated Webcam b257 Lenovo Integrated Camera b26b Sony Visual Communication Camera b272 Lenovo EasyCamera b2b0 Camera b2b9 Lenovo Integrated Camera UVC b2da thinkpad t430s camera b2db Thinkpad T430 camera b2ea Integrated Camera [ThinkPad] b2f4 HP Webcam-50 b330 Asus 720p CMOS webcam b354 UVC 1.00 device HD UVC WebCam b394 Integrated Camera b3eb HP 720p HD Monitor Webcam b3f6 HD WebCam (Acer) b3fd HD WebCam (Asus N-series) b40e HP Truevision HD camera b420 Lenovo EasyCamera b444 Lenovo Integrated Webcam b49f Bluetooth (RTL8723BE) b563 Integrated Camera b5ab Integrated Camera b5ac Integrated IR Camera b5ce Integrated Camera b5cf Integrated IR Camera b5db HP Webcam b5f7 Integrated HD WebCam b604 Integrated Camera (1280x720@30) b681 ThinkPad T490 Webcam b71a Integrated IR Camera b76b SunplusIT Inc [HP HD Camera] b7b4 Integrated Camera (1920x1080) 04f3 Elan Microelectronics Corp. 000a Touchscreen 0103 ActiveJet K-2024 Multimedia Keyboard 016f Touchscreen 01a4 Wireless Keyboard 0201 Touchscreen 0210 Optical Mouse 0212 Laser Mouse 0214 Lynx M9 Optical Mouse 0230 3D Optical Mouse 0232 Mouse 0234 Optical Mouse 0235 Optical Mouse 02f4 2.4G Cordless Mouse 0381 Touchscreen 04a0 Dream Cheeky Stress/Panic Button 0c03 WBF Fingerprint Sensor 0c28 fingerprint sensor [FeinTech FPS00200] 0c3d Elan:Fingerprint 2234 Touchscreen 04f4 Harting Elektronik, Inc. 04f5 Fujitsu-ICL Systems, Inc. 04f6 Norand Corp. 04f7 Newnex Technology Corp. 04f8 FuturePlus Systems 04f9 Brother Industries, Ltd 0002 HL-1050 Laser Printer 0005 Printer 0006 HL-1240 Laser Printer 0007 HL-1250 Laser Printer 0008 HL-1270 Laser Printer 0009 Printer 000a P2500 series 000b Printer 000c Printer 000d HL-1440 Laser Printer 000e HL-1450 series 000f HL-1470N series 0010 Printer 0011 Printer 0012 Printer 0013 Printer 0014 Printer 0015 Printer 0016 Printer 0017 Printer 0018 Printer 001a HL-1430 Laser Printer 001c Printer 001e Printer 0020 HL-5130 series 0021 HL-5140 series 0022 HL-5150D series 0023 HL-5170DN series 0024 Printer 0025 Printer 0027 HL-2030 Laser Printer 0028 Printer 0029 Printer 002a HL-52x0 series 002b HL-5250DN Printer 002c Printer 002d Printer 0037 HL-3040CN series 0038 HL-3070CW series 0039 HL-5340 series 0041 HL-2250DN Laser Printer 0042 HL-2270DW Laser Printer 004d HL-6180DW series 0080 HL-L6250DN series 0100 MFC8600/9650 series 0101 MFC9600/9870 series 0102 MFC9750/1200 series 0104 MFC-8300J 0105 MFC-9600J 0106 MFC-7300C 0107 MFC-7400C 0108 MFC-9200C 0109 MFC-830 010a MFC-840 010b MFC-860 010c MFC-7400J 010d MFC-9200J 010e MFC-3100C Scanner 010f MFC-5100C 0110 MFC-4800 Scanner 0111 MFC-6800 0112 DCP1000 Port(FaxModem) 0113 MFC-8500 0114 MFC9700 Port(FaxModem) 0115 MFC-9800 Scanner 0116 DCP1400 Scanner 0119 MFC-9660 011a MFC-9860 011b MFC-9880 011c MFC-9760 011d MFC-9070 011e MFC-9180 011f MFC-9160 0120 MFC580 Port(FaxModem) 0121 MFC-590 0122 MFC-5100J 0124 MFC-4800J 0125 MFC-6800J 0127 MFC-9800J 0128 MFC-8500J 0129 Imagistics 2500 (MFC-8640D clone) 012b MFC-9030 012e FAX4100e IntelliFax 4100e 012f FAX-4750e 0130 FAX-5750e 0132 MFC-5200C RemovableDisk 0135 MFC-100 Scanner 0136 MFC-150CL Scanner 013c MFC-890 Port 013d MFC-5200J 013e MFC-4420C RemovableDisk 013f MFC-4820C RemovableDisk 0140 DCP-8020 0141 DCP-8025D 0142 MFC-8420 0143 MFC-8820D 0144 DCP-4020C RemovableDisk 0146 MFC-3220C 0147 FAX-1820C Printer 0148 MFC-3320CN 0149 FAX-1920CN Printer 014a MFC-3420C 014b MFC-3820CN 014c DCP-3020C 014d FAX-1815C Printer 014e MFC-8820J 014f DCP-8025J 0150 MFC-8220 Port(FaxModem) 0151 MFC-8210J 0153 DCP-1000J 0157 MFC-3420J Printer 0158 MFC-3820JN Port(FaxModem) 015d MFC Composite Device 015e DCP-8045D 015f MFC-8440 0160 MFC-8840D 0161 MFC-210C 0162 MFC-420CN Remote Setup Port 0163 MFC-410CN RemovableDisk 0165 MFC-620CN 0166 MFC-610CLN RemovableDisk 0168 MFC-620CLN 0169 DCP-110C RemovableDisk 016b DCP-310CN RemovableDisk 016c FAX-2440C Printer 016d MFC-5440CN 016e MFC-5840CN Remote Setup Port 0170 FAX-1840C Printer 0171 FAX-1835C Printer 0172 FAX-1940CN Printer 0173 MFC-3240C Remote Setup Port 0174 MFC-3340CN RemovableDisk 017b Imagistics sx2100 0180 MFC-7420 0181 MFC-7820N Port(FaxModem) 0182 DCP-7010 0183 DCP-7020 0184 DCP-7025 Printer 0185 MFC-7220 Printer 0186 Composite Device 0187 FAX-2820 Printer 0188 FAX-2920 Printer 018a MFC-9420CN 018c DCP-115C 018d DCP-116C 018e DCP-117C 018f DCP-118C 0190 DCP-120C 0191 DCP-315CN 0192 DCP-340CW 0193 MFC-215C 0194 MFC-425CN 0195 MFC-820CW Remote Setup Port 0196 MFC-820CN Remote Setup Port 0197 MFC-640CW 019a MFC-840CLN Remote Setup Port 01a2 MFC-8640D 01a3 Composite Device 01a4 DCP-8065DN Printer 01a5 MFC-8460N Port(FaxModem) 01a6 MFC-8860DN Port(FaxModem) 01a7 MFC-8870DW Printer 01a8 DCP-130C 01a9 DCP-330C 01aa DCP-540CN 01ab MFC-240C 01ae DCP-750CW RemovableDisk 01af MFC-440CN 01b0 MFC-660CN 01b1 MFC-665CW 01b2 MFC-845CW 01b4 MFC-460CN 01b5 MFC-630CD 01b6 MFC-850CDN 01b7 MFC-5460CN 01b8 MFC-5860CN 01ba MFC-3360C 01bd MFC-8660DN 01be DCP-750CN RemovableDisk 01bf MFC-860CDN 01c0 DCP-128C 01c1 DCP-129C 01c2 DCP-131C 01c3 DCP-329C 01c4 DCP-331C 01c5 MFC-239C 01c9 DCP-9040CN 01ca MFC-9440CN 01cb DCP-9045CDN 01cc MFC-9840CDW 01ce DCP-135C 01cf DCP-150C 01d0 DCP-350C 01d1 DCP-560CN 01d2 DCP-770CW 01d3 DCP-770CN 01d4 MFC-230C 01d5 MFC-235C 01d6 MFC-260C 01d7 MFC-465CN 01d8 MFC-680CN 01d9 MFC-685CW 01da MFC-885CW 01db MFC-480CN 01dc MFC-650CD 01dd MFC-870CDN 01de MFC-880CDN 01df DCP-155C 01e0 MFC-265C 01e1 DCP-153C 01e2 DCP-157C 01e3 DCP-353C 01e4 DCP-357C 01e7 MFC-7340 01e9 DCP-7040 01ea DCP-7030 01eb MFC-7320 01ec MFC-9640CW 01f4 MFC-5890CN 0204 DCP-165C 020a MFC-8670DN 020c DCP-9042CDN 020d MFC-9450CDN 0216 MFC-8880DN 0217 MFC-8480DN 0219 MFC-8380DN 021a MFC-8370DN 021b DCP-8070D 021c MFC-9320CW 021d MFC-9120CN 021e DCP-9010CN 021f DCP-8085DN 0220 MFC-9010CN 0222 DCP-195C 0223 DCP-365CN 0224 DCP-375CW 0225 DCP-395CN 0227 DCP-595CN 0228 MFC-255CW 0229 MFC-295CN 022a MFC-495CW 022b MFC-495CN 022c MFC-795CW 022d MFC-675CD 022e MFC-695CDN 022f MFC-735CD 0230 MFC-935CDN 0234 DCP-373CW 0235 DCP-377CW 0236 DCP-390CN 0239 MFC-253CW 023a MFC-257CW 023e DCP-197C 023f MFC-8680DN 0240 MFC-J950DN 0245 MFC-9560CDW 0248 DCP-7055 scanner/printer 024a DCP-7065DN 024e MFC-7460DN 0253 DCP-J125 0254 DCP-J315W 0255 DCP-J515W 0256 DCP-J515N 0257 DCP-J715W 0258 DCP-J715N 0259 MFC-J220 025a MFC-J410 025b MFC-J265W 025c MFC-J415W 025d MFC-J615W 025e MFC-J615N 025f MFC-J700D 0260 MFC-J800D 0261 MFC-J850DN 026b MFC-J630W 026d MFC-J805D 026e MFC-J855DN 026f MFC-J270W 0270 MFC-7360N 0273 DCP-7057 scanner/printer 0276 MFC-5895CW 0278 MFC-J410W 0279 DCP-J525W 027a DCP-J525N 027b DCP-J725DW 027c DCP-J725N 027d DCP-J925DW 027e MFC-J955DN 027f MFC-J280W 0280 MFC-J435W 0281 MFC-J430W 0282 MFC-J625DW 0283 MFC-J825DW 0284 MFC-J825N 0285 MFC-J705D 0287 MFC-J860DN 0288 MFC-J5910DW 0289 MFC-J5910CDW 028a DCP-J925N 028d MFC-J835DW 028f MFC-J425W 0290 MFC-J432W 0291 DCP-8110DN 0292 DCP-8150DN 0293 DCP-8155DN 0294 DCP-8250DN 0295 MFC-8510DN 0296 MFC-8520DN 0298 MFC-8910DW 0299 MFC-8950DW 029a MFC-8690DW 029c MFC-8515DN 029e MFC-9125CN 029f MFC-9325CW 02a0 DCP-J140W 02a5 MFC-7240 02a6 FAX-2940 02a7 FAX-2950 02a8 MFC-7290 02ab FAX-2990 02ac DCP-8110D 02ad MFC-9130CW 02ae MFC-9140CDN 02af MFC-9330CDW 02b0 MFC-9340CDW 02b1 DCP-9020CDN 02b2 MFC-J810DN 02b3 MFC-J4510DW 02b4 MFC-J4710DW 02b5 DCP-8112DN 02b6 DCP-8152DN 02b7 DCP-8157DN 02b8 MFC-8512DN 02ba MFC-8912DW 02bb MFC-8952DW 02bc DCP-J540N 02bd DCP-J740N 02be MFC-J710D 02bf MFC-J840N 02c0 DCP-J940N 02c1 MFC-J960DN 02c2 DCP-J4110DW 02c3 MFC-J4310DW 02c4 MFC-J4410DW 02c5 MFC-J4610DW 02c6 DCP-J4210N 02c7 MFC-J4510N 02c8 MFC-J4910CDW 02c9 MFC-J4810DN 02ca MFC-8712DW 02cb MFC-8710DW 02cc MFC-J2310 02cd MFC-J2510 02ce DCP-7055W 02cf DCP-7057W 02d0 DCP-1510 02d1 MFC-1810 02d3 DCP-9020CDW 02d4 MFC-8810DW 02dd DCP-J4215N 02de DCP-J132W 02df DCP-J152W 02e0 DCP-J152N 02e1 DCP-J172W 02e2 DCP-J552DW 02e3 DCP-J552N 02e4 DCP-J752DW 02e5 DCP-J752N 02e6 DCP-J952N 02e7 MFC-J245 02e8 MFC-J470DW 02e9 MFC-J475DW 02ea MFC-J285DW 02eb MFC-J650DW 02ec MFC-J870DW 02ed MFC-J870N 02ee MFC-J720D 02ef MFC-J820DN 02f0 MFC-J980DN 02f1 MFC-J890DN 02f2 MFC-J6520DW 02f3 MFC-J6570CDW 02f4 MFC-J6720DW 02f5 MFC-J6920DW 02f6 MFC-J6970CDW 02f7 MFC-J6975CDW 02f8 MFC-J6770CDW 02f9 DCP-J132N 02fa MFC-J450DW 02fb MFC-J875DW 02fc DCP-J100 02fd DCP-J105 02fe MFC-J200 02ff MFC-J3520 0300 MFC-J3720 030f DCP-L8400CDN 0310 DCP-L8450CDW 0311 MFC-L8600CDW 0312 MFC-L8650CDW 0313 MFC-L8850CDW 0314 MFC-L9550CDW 0318 MFC-7365DN 0320 MFC-L2740DW 0321 DCP-L2500D 0322 DCP-L2520DW 0324 DCP-L2520D 0326 DCP-L2540DN 0328 DCP-L2540DW 0329 DCP-L2560DW 0330 HL-L2380DW 0331 MFC-L2700DW 0335 FAX-L2700DN 0337 MFC-L2720DW 0338 MFC-L2720DN 0339 DCP-J4120DW 033a MFC-J4320DW 033c MFC-J2320 033d MFC-J4420DW 0340 MFC-J4620DW 0341 MFC-J2720 0342 MFC-J4625DW 0343 MFC-J5320DW 0346 MFC-J5620DW 0347 MFC-J5720DW 0349 DCP-J4220N 034b MFC-J4720N 034e MFC-J5720CDW 034f MFC-J5820DN 0350 MFC-J5620CDW 0351 DCP-J137N 0353 DCP-J557N 0354 DCP-J757N 0355 DCP-J957N 0356 MFC-J877N 0357 MFC-J727D 0358 MFC-J987DN 0359 MFC-J827DN 035a MFC-J897DN 035b DCP-1610W 035c DCP-1610NW 035d MFC-1910W 035e MFC-1910NW 0360 DCP-1618W 0361 MFC-1919NW 0364 MFC-J5625DW 0365 MFC-J4520DW 0366 MFC-J5520DW 0367 DCP-7080D 0368 DCP-7080 0369 DCP-7180DN 036a DCP-7189DW 036b MFC-7380 036c MFC-7480D 036d MFC-7880DN 036e MFC-7889DW 036f DCP-9022CDW 0370 MFC-9142CDN 0371 MFC-9332CDW 0372 MFC-9342CDW 0373 MFC-L2700D 0376 DCP-1600 0377 MFC-1900 0378 DCP-1608 0379 DCP-1619 037a MFC-1906 037b MFC-1908 037c ADS-2000e 037d ADS-2100e 037e ADS-2500We 037f ADS-2600We 0380 DCP-J562DW 0381 DCP-J562N 0383 DCP-J962N 0384 MFC-J480DW 0385 MFC-J485DW 0386 MFC-J460DW 0388 MFC-J680DW 0389 MFC-J880DW 038a MFC-J885DW 038b MFC-J880N 038c MFC-J730DN 038d MFC-J990DN 038e MFC-J830DN 038f MFC-J900DN 0390 MFC-J5920DW 0392 MFC-L2705DW 0393 DCP-T300 0394 DCP-T500W 0395 DCP-T700W 0396 MFC-T800W 0397 DCP-J963N 03b3 MFC-J6925DW 03b4 MFC-J6573CDW 03b5 MFC-J6973CDW 03b6 MFC-J6990CDW 03bb MFC-L2680W 03bc MFC-L2700DN 03bd DCP-J762N 03fd ADS-2700W 043f MFC-L3770CDW 0440 MFC-9350CDW 0441 MFC-L3750CDW 0442 MFC-L3745CDW 0443 MFC-L3735CDN 0444 MFC-9150CDN 0445 MFC-L3730CDN 0446 MFC-L3710CW 0447 DCP-9030CDN 0448 DCP-L3550CDW 044a HL-L3290CDW 044b DCP-L3510CDW 044c DCP-L3551CDW 1000 Printer 1002 Printer 2002 PTUSB Printing 2004 PT-2300/2310 p-Touch Laber Printer 2007 PT-2420PC P-touch Label Printer 2015 QL-500 label printer 2016 QL-550 printer 201a PT-18R P-touch label printer 201b QL-650TD Label Printer 2020 QL-1050 Label Printer 2027 QL-560 Label Printer 2028 QL-570 Label Printer 202a QL-1060N Label Printer 202b PT-7600 P-touch Label Printer 202c PT-1230PC P-touch Label Printer E mode 202d PT-2430PC P-touch Label Printer 2030 PT-1230PC P-touch Label Printer EL mode 2041 PT-2730 P-touch Label Printer 2042 QL-700 Label Printer 2043 QL-710W Label Printer 2044 QL-720NW Label Printer 2049 QL-700 Label Printer (mass storage) 204d QL-720NW Label Printer (mass storage mode) 2060 PT-E550W P-touch Label Printer 2061 PT-P700 P-touch Label Printer 2064 PT-P700 P-touch Label Printer RemovableDisk 2065 PT-P750W P-Touch Label Writer 2074 PT-D600 P-touch Label Printer 209b QL-800 Label Printer 209c QL-810W Label Printer 209d QL-820NWB Label Printer 20a7 QL-1100 Label Printer 20a8 QL-1110NWB Label Printer 20a9 QL-1100 Label Printer (mass storage) 20aa QL-1110NWB Label Printer (mass storage) 20ab QL-1115NWB Label Printer 20ac QL-1115NWB Label Printer (mass storage) 20c0 QL-600 Label Printer 2100 Card Reader Writer 2102 Sewing machine 60a0 ADS-2000 60a1 ADS-2100 60a4 ADS-2500W 60a5 ADS-2600W 60a6 ADS-1000W 60a7 ADS-1100W 60a8 ADS-1500W 60a9 ADS-1600W 04fa Dallas Semiconductor 2490 DS1490F 2-in-1 Fob, 1-Wire adapter 4201 DS4201 Audio DAC 04fb Biostar Microtech International Corp. 04fc Sunplus Technology Co., Ltd 0003 CM1092 / Wintech CM-5098 Optical Mouse 0005 USB OpticalWheel Mouse 0013 ViewMate Desktop Mouse CC2201 0015 ViewMate Desktop Mouse CC2201 00d3 00052486 / Laser Mouse M1052 [hama] 0171 SPCA1527A/SPCA1528 SD card camera (Mass Storage mode) 0201 SPCP825 RS232C Adapter 0232 Fingerprint 0538 Wireless Optical Mouse 2.4G [Bright] 0561 Flexcam 100 05d8 Wireless keyboard/mouse 05da SPEEDLINK SNAPPY Wireless Mouse Nano 0c15 SPIF215A SATA bridge 0c25 SATALink SPIF225A 1528 SPCA1527A/SPCA1528 SD card camera (webcam mode) 1533 Mass Storage 2080 ASUS Webcam 500c CA500C Digital Camera 504a Aiptek Mini PenCam 1.3 504b Aiptek Mega PockerCam 1.3/Maxell MaxPocket LE 1.3 5330 Digitrex 2110 5331 Vivitar Vivicam 10 5360 Sunplus Generic Digital Camera 5563 Digital Media Player MP3/WMA [The Sharper Image] 5720 Card Reader Driver 6333 Siri A9 UVC chipset 7333 Finet Technology Palmpix DC-85 757a Aiptek, MP315 MP3 Player ffff PureDigital Ritz Disposable 04fd Soliton Systems, K.K. 0003 Smart Card Reader II 04fe PFU, Ltd 0006 Happy Hacking Keyboard Lite2 0020 HHKB-Classic 0021 Happy Hacking Keyboard Professional HYBRID Type-S 04ff E-CMOS Corp. 0500 Siam United Hi-Tech 0001 DART Keyboard Mouse 0002 DART-2 Keyboard 0501 Fujikura DDK, Ltd 0502 Acer, Inc. 0001 Handheld 0736 Handheld 15b1 PDA n311 1631 c10 Series 1632 c20 Series 16e1 n10 Handheld Sync 16e2 n20 Pocket PC Sync 16e3 n30 Handheld Sync 2008 Liquid Gallant Duo E350 (preloader) 3202 Liquid 3203 Liquid (Debug mode) 3230 BeTouch E120 3317 Liquid 3325 Iconia tablet A500 3341 Iconia tablet A500 33c3 Liquid Gallant Duo E350 33c4 Liquid Gallant Duo E350 (debug mode) 33c7 Liquid Gallant Duo E350 (USB tethering) 33c8 Liquid Gallant Duo E350 (debug mode, USB tethering) d001 Divio NW801/DVC-V6+ Digital Camera 0503 Hitachi America, Ltd 0504 Hayes Microcomputer Products 0506 3Com Corp. 009d HomeConnect Camera 00a0 3CREB96 Bluetooth Adapter 00a1 Bluetooth Device 00a2 Bluetooth Device 00df 3Com Home Connect lite 0100 HomeConnect ADSL Modem Driver 03e8 3C19250 Ethernet [klsi] 0a01 3CRSHEW696 Wireless Adapter 0a11 3CRWE254G72 802.11g Adapter 11f8 HomeConnect 3C460 2922 HomeConnect Cable Modem External with 3021 U.S.Robotics 56000 Voice FaxModem Pro 4601 3C460B 10/100 Ethernet Adapter f002 3CP4218 ADSL Modem (pre-init) f003 3CP4218 ADSL Modem f100 3CP4218 ADSL Modem (pre-init) 0507 Hosiden Corp. 0011 Konami ParaParaParadise Controller 0508 Clarion Co., Ltd 0509 Aztech Systems, Ltd 0801 ADSL Modem 0802 ADSL Modem (RFC1483) 0806 DSL Modem 080f Binatone ADSL500 Modem Network Interface 0812 Pirelli ADSL Modem Network Interface 050a Cinch Connectors 050b Cable System International 050c InnoMedia, Inc. 050d Belkin Components 0004 Direct Connect 0012 F8T012 Bluetooth Adapter 0013 F8T013 Bluetooth Adapter 0017 B8T017 Bluetooth+EDR 2.1 / F4U017 USB 2.0 7-port Hub 003a Universal Media Reader 0050 F5D6050 802.11b Wireless Adapter v2000 [Atmel at76c503a] 0081 F8T001v2 Bluetooth 0083 Bluetooth Device 0084 F8T003v2 Bluetooth 008a 6-in-1 Multiport Adapter 0102 Flip KVM 0103 F5U103 Serial Adapter [etek] 0106 VideoBus II Adapter, Video 0108 F1DE108B KVM 0109 F5U109/F5U409 PDA Adapter 0115 SCSI Adapter 0119 F5U120-PC Dual PS/2 Ports / F5U118-UNV ADB Adapter 0121 F5D5050 100Mbps Ethernet 0122 Ethernet Adapter 0131 Bluetooth Device with trace filter 016a Bluetooth Mini Dongle 0200 Nostromo SpeedPad n52te Gaming Keyboard 0201 Peripheral Switch 0208 USBView II Video Adapter [nt1004] 0210 F5U228 Hi-Speed USB 2.0 DVD Creator 0211 F5U211 USB 2.0 15-in-1 Media Reader & Writer 0224 F5U224 USB 2.0 4-Port Hub 0234 F5U234 USB 2.0 4-Port Hub 0237 F5U237 USB 2.0 7-Port Hub 0240 F5U240 USB 2.0 CF Card Reader 0249 USB 2 Flash Media Device 0257 F5U257 Serial 0304 FSU304 USB 2.0 - 4 Ports Hub 0307 USB 2.0 - 7 ports Hub [FSU307] 038c F2CU038 HDMI Adapter 0409 F5U409 Serial 0416 Staples 12416 7 port desktop hub 0551 F6C550-AVR UPS 065a F8T065BF Mini Bluetooth 4.0 Adapter 0706 2-N-1 7-Port Hub (Lower half) 0802 Nostromo n40 Gamepad 0803 Nostromo 1745 GamePad 0805 Nostromo N50 GamePad 0815 Nostromo n52 HID SpeedPad Mouse Wheel 0826 ErgoFit Wireless Optical Mouse (HID) 0980 HID UPS Battery 1004 F9L1004 802.11n Surf N300 XR Wireless Adapter [Realtek RTL8192CU] 1102 F7D1102 N150/Surf Micro Wireless Adapter v1000 [Realtek RTL8188CUS] 1103 F9L1103 N750 DB 802.11abgn 2x3:3 [Ralink RT3573] 1106 F9L1106v1 802.11a/b/g/n/ac Wireless Adapter [Broadcom BCM43526] 1109 F9L1109v1 802.11a/b/g/n/ac Wireless Adapter [Realtek RTL8812AU] 110a F9L1101v2 802.11abgn Wireless Adapter [Realtek RTL8192DU] 11f2 ISY Wireless Micro Adapter IWL 2000 [RTL8188CUS] 1202 F5U120-PC Parallel Printer Port 1203 F5U120-PC Serial Port 2103 F7D2102 802.11n N300 Micro Wireless Adapter v3000 [Realtek RTL8192CU] 21f1 N300 WLAN N Adapter [ISY] 21f2 RTL8192CU 802.11n WLAN Adapter [ISY IWL 4000] 258a F5U258 Host to Host cable 3101 F1DF102U/F1DG102U Flip Hub 3201 F1DF102U/F1DG102U Flip KVM 4050 ZD1211B 5055 F5D5055 Gigabit Network Adapter [AX88xxx] 6050 F6D6050 802.11abgn Wireless Adapter [Broadcom BCM4323] 6051 F5D6051 802.11b Wireless Network Adapter [ZyDAS ZD1201] 615a F7D4101 / F9L1101v1 802.11abgn Wireless Adapter [Broadcom BCM4323] 7050 F5D7050 Wireless G Adapter v1000/v2000 [Intersil ISL3887] 7051 F5D7051 802.11g Adapter v1000 [Broadcom 4320 USB] 705a F5D7050 Wireless G Adapter v3000 [Ralink RT2571W] 705b Wireless G Adapter 705c F5D7050 Wireless G Adapter v4000 [Zydas ZD1211B] 705e F5D7050 Wireless G Adapter v5000 [Realtek RTL8187B] 706a 2-N-1 7-Port Hub (Upper half) 8053 F5D8053 N Wireless USB Adapter v1000/v4000 [Ralink RT2870] 805c F5D8053 N Wireless Adapter v3000 [Ralink RT2870] 805e F5D8053 N Wireless USB Adapter v5000 [Realtek RTL8192U] 815c F5D8053 N Wireless USB Adapter v3000 [Ralink RT2870] 815f F5D8053 N Wireless USB Adapter v6000 [Realtek RTL8192SU] 825a F5D8055 N+ Wireless Adapter v1000 [Ralink RT2870] 825b F5D8055 N+ Wireless Adapter v2000 [Ralink RT3072] 845a F7D2101 802.11n Surf & Share Wireless Adapter v1000 [Realtek RTL8192SU] 905b F5D9050 Wireless G+ MIMO Network Adapter v3000 [Ralink RT2573] 905c F5D9050 Wireless G+ MIMO Network Adapter v4000 [Ralink RT2573] 935a F6D4050 N150 Enhanced Wireless Network Adapter v1000 [Ralink RT3070] 935b F6D4050 N150 Enhanced Wireless Network Adapter v2000 [Ralink RT3070] 945a F7D1101 v1 Basic Wireless Adapter [Realtek RTL8188SU] 945b F7D1101 v2 Basic Wireless Adapter [Ralink RT3370] d321 Dynex DX-NUSB 802.11bgn Wireless Adapter [Broadcom BCM43231] 050e Neon Technology, Inc. 050f KC Technology, Inc. 0001 Hub 0003 KC82C160S Hub 0180 KC-180 IrDA Dongle 0190 KC2190 USB Host-to-Host cable 0510 Sejin Electron, Inc. 0001 Keyboard 1000 Keyboard with PS/2 Mouse Port e001 Mouse 0511 N'Able (DataBook) Technologies, Inc. 002b AOC DVB 0512 Hualon Microelectronics Corp. 0513 digital-X, Inc. 0514 FCI Electronics 0515 ACTC 0516 Longwell Electronics 0517 Butterfly Communications 0518 EzKEY Corp. 0001 USB to PS2 Adaptor v1.09 0002 EZ-9900C Keyboard 0519 Star Micronics Co., Ltd 0003 TSP100ECO/TSP100II c002 Xlive Bluetooth XBM-100S MP3 Player 051a WYSE Technology a005 Smart Display Version 9973 051b Silicon Graphics 051c Shuttle, Inc. 0005 VFD Module c001 eHome Infrared Receiver c002 eHome Infrared Receiver 051d American Power Conversion 0001 UPS 0002 Uninterruptible Power Supply 0003 UPS 051e Scientific Atlanta, Inc. 051f IO Systems (Elite Electronics), Inc. 0520 Taiwan Semiconductor Manufacturing Co. 0521 Airborn Connectors 0522 Advanced Connectek, Inc. 0523 ATEN GmbH 0524 Sola Electronics 0525 Netchip Technology, Inc. 100d RFMD Bluetooth Device 1080 NET1080 USB-USB Bridge 1200 SSDC Adapter II 1265 File-backed Storage Gadget 3424 V30x/V4xx fingerprint sensor [Lumidigm] a0f0 Cambridge Electronic Devices Power1401 mk 2 a140 USB Clik! 40 a141 (OME) PocketZip 40 MP3 Player Driver a220 GVC Bluetooth Wireless Adapter a4a0 Linux-USB "Gadget Zero" a4a1 Linux-USB Ethernet Gadget a4a2 Linux-USB Ethernet/RNDIS Gadget a4a3 Linux-USB user-mode isochronous source/sink a4a4 Linux-USB user-mode bulk source/sink a4a5 Linux-USB File-backed Storage Gadget a4a6 Linux-USB Serial Gadget a4a7 Linux-USB Serial Gadget (CDC ACM mode) a4a8 Linux-USB Printer Gadget a4a9 Linux-USB OBEX Gadget a4aa Linux-USB CDC Composite Gadge (Ethernet and ACM) a4ab Linux-USB Multifunction Composite Gadget a4ac Linux-USB HID Gadget 0526 Temic MHS S.A. 0527 ALTRA 0528 ATI Technologies, Inc. 7561 TV Wonder 7562 TV Wonder, Edition (FN5) 7563 TV Wonder, Edition (FI) 7564 TV Wonder, Edition (FQ) 7565 TV Wonder, Edition (NTSC+) 7566 TV Wonder, Edition (FN5) 7567 TV Wonder, Edition (FI) 7568 TV Wonder, Edition (FQ) 7569 Live! Pro (A) 756a Live! Pro Audio (O) 0529 Aladdin Knowledge Systems 0001 HASP copy protection dongle 030b eToken R1 v3.1.3.x 0313 eToken R1 v3.2.3.x 031b eToken R1 v3.3.3.x 0323 eToken R1 v3.4.3.x 0412 eToken R2 v2.2.4.x 041a eToken R2 v2.2.4.x 0422 eToken R2 v2.4.4.x 042a eToken R2 v2.5.4.x 050c eToken Pro v4.1.5.x 0514 eToken Pro v4.2.5.4 0600 eToken Pro 64k (4.2) 0620 Token JC 052a Crescent Heart Software 052b Tekom Technologies, Inc. 0102 Ca508A HP1020 Camera v.1.3.1.6 0801 Yakumo MegaImage 37 1512 Yakumo MegaImage IV 1513 Aosta CX100 Webcam 1514 Aosta CX100 Webcam Storage 1905 Yakumo MegaImage 47 1911 Yakumo MegaImage 47 SL 2202 WDM Still Image Capture 2203 Sound Vision Stream Driver 3a06 DigiLife DDV-5120A d001 P35U Camera Capture 052c Canon Information Systems, Inc. 052d Avid Electronics Corp. 052e Standard Microsystems Corp. 052f Unicore Software, Inc. 0530 American Microsystems, Inc. 0531 Wacom Technology Corp. 0100 CTC4110WL [One (S)] 0102 CTC6110WL [One (M)] 0104 CTC4110WL [One (S)] 0105 CTC6110WL [One (M)] 0532 Systech Corp. 0533 Alcatel Mobile Phones 0534 Motorola, Inc. 0535 LIH TZU Electric Co., Ltd 0536 Hand Held Products (Welch Allyn, Inc.) 01a0 PDT 01ca IT4800 Area Imager 0537 Inventec Corp. 0538 Caldera International, Inc. (SCO) 0539 Shyh Shiun Terminals Co., Ltd 053a PrehKeyTec GmbH 0b00 Hub 0b01 Preh MCI 3100 053b Global Village Communication 053c Institut of Microelectronic & Mechatronic Systems 053d Silicon Architect 053e Mobility Electronics 053f Synopsys, Inc. 0540 UniAccess AB 0101 Panache Surf ISDN TA 0541 Sirf Technology, Inc. 0543 ViewSonic Corp. 00fe G773 Monitor Hub 00ff P815 Monitor Hub 0bf2 airpanel V150 Wireless Smart Display 0bf3 airpanel V110 Wireless Smart Display 0ed9 Color Pocket PC V35 0f01 airsync Wi-Fi Wireless Adapter 1527 Color Pocket PC V36 1529 Color Pocket PC V37 152b Color Pocket PC V38 152e Pocket PC 1921 Communicator Pocket PC 1922 Smartphone 1923 Pocket PC V30 1a11 Wireless 802.11g Adapter 1e60 TA310 - ATSC/NTSC/PAL Driver(PCM4) 4153 ViewSonic G773 Control (?) 0544 Cristie Electronics, Ltd 0545 Xirlink, Inc. 7333 Trution Web Camera 8002 IBM NetCamera 8009 Veo PC Camera 800c Veo Stingray 800d Veo PC Camera 8080 IBM C-It Webcam 808a Veo PC Camera 808b Veo Stingray 808d Veo PC Camera 810a Veo Advanced Connect Webcam 810b Veo PC Camera 810c Veo PC Camera 8135 Veo Mobile/Advanced Web Camera 813a Veo PC Camera 813b Veo PC Camera 813c Veo Mobile/Advanced Web Camera 8333 Veo Stingray/Connect Web Camera 888c eVision 123 digital camera 888d eVision 123 digital camera 0546 Polaroid Corp. 0daf PDC 2300Z 1bed PDC 1320 Camera 3097 PDC 310 3155 PDC 3070 Camera 3187 Digital Camera 3191 Ion 80 Camera 3273 PDC 2030 Camera 3304 a500 Digital Camera dccf Sound Vision Stream Driver 0547 Anchor Chips, Inc. 0001 ICSI Bluetooth Device 0080 I3SYSTEM HYUNY 1002 Python2 WDM Encoder 1006 Hantek DSO-2100 UF 2131 AN2131 EZUSB Microcontroller 2235 AN2235 EZUSB-FX Microcontroller 2710 EZ-Link Loader (EZLNKLDR.SYS) 2720 AN2720 USB-USB Bridge 2727 Xircom PGUNET USB-USB Bridge 2750 EZ-Link (EZLNKUSB.SYS) 2810 Cypress ATAPI Bridge 4018 AmScope MU1803 4d90 AmScope MD1900 camera 6010 AmScope MU1000 camera 6510 Touptek UCMOS05100KPA 7000 PowerSpec MCE460 Front Panel LED Display 7777 Bluetooth Device 9999 AN2131 uninitialized (?) 0548 Tyan Computer Corp. 1005 EZ Cart II GameBoy Flash Programmer 0549 Pixera Corp. 054a Fujitsu Microelectronics, Inc. 054b New Media Corp. 054c Sony Corp. 0001 HUB 0002 Standard HUB 0010 Cyber-shot, Mavica (msc) 0014 Nogatech USBVision (SY) 0022 Storage Adapter V2 (TPP) 0023 CD Writer 0024 Mavica CD-1000 Camera 0025 NW-MS7 Walkman MemoryStick Reader 002b Portable USB Harddrive V2 002c USB Floppy Disk Drive 002d MSAC-US1 MemoryStick Reader 002e HandyCam MemoryStick Reader 0030 Storage Adapter V2 (TPP) 0032 MemoryStick MSC-U01 Reader 0035 Network Walkman (E) 0036 Net MD 0037 MG Memory Stick Reader/Writer 0038 Clie PEG-S300/D PalmOS PDA 0039 Network Walkman (MS) 003c VAIO-MX LCD Control 0045 Digital Imaging Video 0046 Network Walkman 0049 UP-D895 004a Memory Stick Hi-Fi System 004b Memory Stick Reader/Writer 004e DSC-xxx (ptp) 0056 MG Memory Stick Reader/Writer 0058 Clie PEG-N7x0C PalmOS PDA Mass Storage 0066 Clie PEG-N7x0C/PEG-T425 PalmOS PDA Serial 0067 CMR-PC3 Webcam 0069 Memorystick MSC-U03 Reader 006c FeliCa S310 [PaSoRi] 006d Clie PEG-T425 PDA Mass Storage 006f Network Walkman (EV) 0073 Storage CRX1750U 0075 Net MD 0076 Storage Adapter ACR-U20 007c Net MD 007f IC Recorder (MS) 0080 Net MD 0081 Net MD 0084 Net MD 0085 Net MD 0086 Net MD 008b Micro Vault 64M Mass Storage 0095 Clie s360 0099 Clie NR70 PDA Mass Storage 009a Clie NR70 PDA Serial 00ab Visual Communication Camera (PCGA-UVC10) 00af DPP-EX Series Digital Photo Printer 00bf IC Recorder (S) 00c0 Handycam DCR-30 00c6 Net MD 00c7 Net MD 00c8 MZ-N710 Minidisc Walkman 00c9 Net MD 00ca MZ-DN430 Minidisc Walkman 00cb MSAC-US20 Memory Stick Reader 00da Clie nx60 00e8 Network Walkman (MS) 00e9 Handheld 00eb Net MD 0101 Net MD 0103 IC Recorder (ST) 0105 Micro Vault Hub 0107 VCC-U01 Visual Communication Camera 0110 Digital Imaging Video 0113 Net MD 0116 IC Recorder (P) 0144 Clie PEG-TH55 PDA 0147 Visual Communication Camera (PCGA-UVC11) 014c Aiwa AM-NX9 Net MD Music Recorder MDLP 014d Memory Stick Reader/Writer 0154 Eyetoy Audio Device 0155 Eyetoy Video Device 015f IC Recorder (BM) 0169 Clie PEG-TJ35 PDA Serial 016a Clie PEG-TJ35 PDA Mass Storage 016b Mobile HDD 016d IC Recorder (SX) 016e DPP-EX50 Digital Photo Printer 0171 Fingerprint Sensor 3500 017e Net MD 017f Hi-MD WALKMAN 0180 Net MD 0181 Hi-MD WALKMAN 0182 Net MD 0183 Hi-MD WALKMAN 0184 Net MD 0185 Hi-MD WALKMAN 0186 Net MD 0187 Hi-MD MZ-NH600 WALKMAN 0188 Net MD 018a Net MD 018b Hi-MD SOUND GATE 019e Micro Vault 1.0G Mass Storage 01ad ATRAC HDD PA 01bb FeliCa S320 [PaSoRi] 01bd MRW62E Multi-Card Reader/Writer 01c3 NW-E55 Network Walkman 01c6 MEMORY P-AUDIO 01c7 Printing Support 01c8 PSP Type A 01c9 PSP Type B 01d0 DVD+RW External Drive DRU-700A 01d5 IC RECORDER 01de VRD-VC10 [Video Capture] 01e7 UP-D897 01e8 UP-DR150 Photo Printer 01e9 Net MD 01ea Hi-MD WALKMAN 01ee IC RECORDER 01fa IC Recorder (P) 01fb NW-E405 Network Walkman 020f Device 0210 ATRAC HDD PA 0219 Net MD 021a Hi-MD WALKMAN 021b Net MD 021c Hi-MD WALKMAN 021d Net MD 0226 UP-CR10L 0227 Printing Support 022c Net MD 022d Hi-MD AUDIO 0233 ATRAC HDD PA 0236 Mobile HDD 023b DVD+RW External Drive DRU-800UL 023c Net MD 023d Hi-MD WALKMAN 0243 MicroVault Flash Drive 024b Vaio VGX Mouse 0257 IFU-WLM2 USB Wireless LAN Module (Wireless Mode) 0258 IFU-WLM2 USB Wireless LAN Module (Memory Mode) 0259 IC RECORDER 0267 Tachikoma Device 0268 Batoh Device / PlayStation 3 Controller 0269 HDD WALKMAN 026a HDD WALKMAN 0271 IC Recorder (P) 027c NETWORK WALKMAN 027e SONY Communicator 027f IC RECORDER 0286 Net MD 0287 Hi-MD WALKMAN 0290 VGP-UVC100 Visual Communication Camera 029b PRS-500 eBook reader 02a5 MicroVault Flash Drive 02af Handycam DCR-DVD306E 02c4 Device 02d1 DVD RW 02d2 PSP Slim 02d4 UP-CX1 02d8 SBAC-US10 SxS PRO memory card reader/writer 02e1 FeliCa S330 [PaSoRi] 02ea PlayStation 3 Memory Card Adaptor 02f9 DSC-H9 0317 WALKMAN 031a Walkman NWD-B103F 031e PRS-300/PRS-505 eBook reader 0325 NWZ-A818 033e DSC-W120/W290 0346 Handycam DCR-SR55E 0348 HandyCam HDR-TG3E 035b Walkman NWZ-A828 035c NWZ-A726/A728/A729 035f UP-DR200 Photo Printer 0360 M2 Card Reader 0382 Memory Stick PRO-HG Duo Adaptor (MSAC-UAH1) 0385 Walkman NWZ-E436F 0387 IC Recorder (P) 03bc Webbie HD - MHS-CM1 03c3 UP-DR80MD 03c4 Stryker SDP1000 03c5 UP-DR80 03cc SD Card Reader 03d1 DPF-X95 03d3 DR-BT100CX 03d5 PlayStation Move motion controller 03fc WALKMAN [NWZ-E345] 03fd Walkman NWZ-E443 042f PlayStation Move navigation controller 0440 DSC-H55 0485 MHS-PM5 HD camcorder 04cb WALKMAN NWZ-E354 0541 DSC-HX100V [Cybershot Digital Still Camera] 0568 DSC-H100 in Mass Storage mode 05c4 DualShock 4 [CUH-ZCT1x] 0643 DSC-H100 in PTP/MTP mode 0689 Walkman NWZ-B173F 068c UP-D711 06bb WALKMAN NWZ-F805 06c3 RC-S380 07c3 ILCE-6000 (aka Alpha-6000) in Mass Storage mode 07c4 ILCE-6000 (aka Alpha-6000) in Mass Storage mode 082f Walkman NWZW Series 0847 WG-C10 Portable Wireless Server 0873 UP-971AD 0877 UP-D898/X898 series 0884 MDR-ZX770BN [Wireless Noise Canceling Stereo Headset] 088c Portable Headphone Amplifier 08b7 ILCE-6000 (aka Alpha-6000) in MTP mode 094e ILCE-6000 (aka Alpha-6000) in PC Remote mode 098d Walkman NWZ-B183F 0994 ILCE-6000 (aka Alpha-6000) in charging mode 09c2 D33021 Storage 09cc DualShock 4 [CUH-ZCT2x] 0ba0 Dualshock4 Wireless Adaptor 0bb5 Headset MDR-1000X 0c02 ILCE-7M3 [A7III] in Mass Storage mode 0c03 ILCE-7M3 [A7III] in MTP mode 0c34 ILCE-7M3 [A7III] in PC Remote mode 0c7f WH-CH700N [Wireless Noise-Canceling Headphones] 0cd3 WH-1000XM3 [Wireless Noise-Canceling Headphones] 0cda PlayStation Classic controller 0ce0 WF-1000XM3 [Wireless Noise-Canceling Headphones] 0ce6 DualSense wireless controller (PS5) 0cf0 MRW-G1 0d58 WH-1000XM4 [Wireless Noise-Canceling Headphones] 0df2 DualSense Edge wireless controller (PS5) 1000 Wireless Buzz! Receiver 054d Try Corp. 054e Proside Corp. 054f WYSE Technology Taiwan 0550 Fuji Xerox Co., Ltd 0002 InkJet Color Printer 0004 InkJet Color Printer 0005 InkJet Color Printer 000b Workcentre 24 014e CM215b Printer 0165 DocuPrint M215b 0551 CompuTrend Systems, Inc. 0552 Philips Monitors 0553 STMicroelectronics Imaging Division (VLSI Vision) 0001 TerraCAM 0002 CPiA Webcam 0100 STV0672 Camera 0140 Video Camera 0150 CDE CAM 100 0151 Digital Blue QX5 Microscope 0200 Dual-mode Camera0 0201 Dual-mode Camera1 0202 STV0680 Camera 0674 Multi-mode Camera 0679 NMS Video Camera (Webcam) 1002 Che-ez! Splash 0554 Dictaphone Corp. 0555 ANAM S&T Co., Ltd 0556 Asahi Kasei Microsystems Co., Ltd 0001 AK5370 I/F A/D Converter 0557 ATEN International Co., Ltd 2001 UC-1284 Printer Port 2002 10Mbps Ethernet [klsi] 2004 UC-100KM PS/2 Mouse and Keyboard adapter 2006 UC-1284B Printer Port 2007 UC-110T 100Mbps Ethernet [pegasus] 2008 UC-232A Serial Port [pl2303] 2009 UC-210T Ethernet 2011 UC-2324 4xSerial Ports [mos7840] 2202 CS124U Miniview II KVM Switch 2212 Keyboard/Mouse 2213 CS682 2-Port USB 2.0 DVI KVM Switch 2221 Winbond Hermon 2404 4-port switch 2419 Virtual mouse/keyboard device 2600 IDE Bridge 2701 CE700A KVM Extender 4000 DSB-650 10Mbps Ethernet [klsi] 7000 Hub 7820 UC-2322 2xSerial Ports [mos7820] 8021 Hub 0558 Truevision, Inc. 1009 GW Instek GDS-1000 Oscilloscope 100a GW Instek GDS-1000A Oscilloscope 2009 GW Instek GDS-2000 Oscilloscope 0559 Cadence Design Systems, Inc. 055a Kenwood USA 055b KnowledgeTek, Inc. 055c Proton Electronic Ind. 055d Samsung Electro-Mechanics Co. 0001 Keyboard 0bb1 Bluetooth Device 1030 Optical Wheel Mouse (OMS3CB/OMGB30) 1031 Optical Wheel Mouse (OMA3CB/OMGI30) 1040 Mouse HID Device 1050 E-Mail Optical Wheel Mouse (OMS3CE) 1080 Optical Wheel Mouse (OMS3CH) 2020 Floppy Disk Drive 6780 Keyboard V1 6781 Keyboard Mouse 8001 E.M. Hub 9000 AnyCam [pwc] 9001 MPC-C30 AnyCam Premium for Notebooks [pwc] a000 SWL-2100U a010 WLAN Adapter(SWL-2300) a011 Boot Device a012 WLAN Adapter(SWL-2300) a013 WLAN Adapter(SWL-2350) a230 Boot Device b000 11Mbps WLAN Mini Adapter b230 Netopia 802.11b WLAN Adapter b231 LG Wireless LAN 11b Adapter 055e CTX Opto-Electronics Corp. 055f Mustek Systems, Inc. 0001 ScanExpress 1200 CU 0002 ScanExpress 600 CU 0003 ScanExpress 1200 USB 0006 ScanExpress 1200 UB 0007 ScanExpress 1200 USB Plus 0008 ScanExpress 1200 CU Plus 0010 BearPaw 1200F 0210 ScanExpress A3 USB 0218 BearPaw 2400 TA 0219 BearPaw 2400 TA Plus 021a BearPaw 2448 TA Plus 021b BearPaw 1200 CU Plus 021c BearPaw 1200 CU Plus 021d BearPaw 2400 CU Plus 021e BearPaw 1200 TA/CS 021f SNAPSCAN e22 0400 BearPaw 2400 TA Pro 0401 P 3600 A3 Pro 0408 BearPaw 2448 CU Pro 0409 BearPaw 2448 TA Pro 040b ScanExpress A3 USB 1200 PRO 0501 ScanExpress A3 2400 Pro 0873 ScanExpress 600 USB 1000 BearPaw 4800 TA Pro a350 gSmart 350 Camera a800 MDC 800 Camera b500 MDC 3000 Camera c005 PC CAM 300A c200 gSmart 300 c211 Kowa Bs888e Microcamera c220 gSmart mini c230 Digicam 330K c232 MDC3500 Camera c360 DV 4000 Camera c420 gSmart mini 2 Camera c430 gSmart LCD 2 Camera c440 DV 3000 Camera c520 gSmart mini 3 Camera c530 gSmart LCD 2 Camera c540 gSmart D30 Camera c630 MDC 4000 Camera c631 MDC 4000 Camera c650 MDC 5500Z Camera d001 WCam 300 d003 WCam 300A d004 WCam 300AN 0560 Interface Corp. 0561 Oasis Design, Inc. 0562 Telex Communications, Inc. 0001 Enhanced Microphone 0002 Telex Microphone 0563 Immersion Corp. 0564 Kodak Digital Product Center, Japan Ltd. (formerly Chinon Industries Inc.) 0565 Peracom Networks, Inc. 0001 Serial Port [etek] 0002 Enet Ethernet [klsi] 0003 @Home Networks Ethernet [klsi] 0005 Enet2 Ethernet [klsi] 0041 Peracom Remote NDIS Ethernet Adapter 0566 Monterey International Corp. 0110 ViewMate Desktop Mouse CC2201 1001 ViewMate Desktop Mouse CC2201 1002 ViewMate Desktop Mouse CC2201 1003 ViewMate Desktop Mouse CC2201 1004 ViewMate Desktop Mouse CC2201 1005 ViewMate Desktop Mouse CC2201 1006 ViewMate Desktop Mouse CC2201 1007 ViewMate Desktop Mouse CC2201 2800 MIC K/B 2801 MIC K/B Mouse 2802 Kbd Hub 3002 Keyboard 3004 Genius KB-29E 3013 BakkerElkhuizen Wired Keyboard S-board 840 Design 3020 BakkerElkhuizen Wired Keyboard S-board 840 Design USB-Hub 3027 Sun-Flex ProTouch 3107 Keyboard 3132 Optical mouse M-DY4DR / M-DY6DR 4006 FID 638 Mouse (Sun Microsystems) 0567 Xyratex International, Ltd 0568 Quartz Ingenierie 0569 SegaSoft 056a Wacom Co., Ltd 0000 PenPartner 0001 PenPartner 4x5 0002 PenPartner 6x8 0003 PTU-600 [Cintiq Partner] 0010 ET-0405 [Graphire] 0011 ET-0405A [Graphire2 (4x5)] 0012 ET-0507A [Graphire2 (5x7)] 0013 CTE-430 [Graphire3 (4x5)] 0014 CTE-630 [Graphire3 (6x8)] 0015 CTE-440 [Graphire4 (4x5)] 0016 CTE-640 [Graphire4 (6x8)] 0017 CTE-450 [Bamboo Fun (small)] 0018 CTE-650 [Bamboo Fun (medium)] 0019 CTE-631 [Bamboo One] 0020 GD-0405 [Intuos (4x5)] 0021 GD-0608 [Intuos (6x8)] 0022 GD-0912 [Intuos (9x12)] 0023 GD-1212 [Intuos (12x12)] 0024 GD-1218 [Intuos (12x18)] 0026 PTH-450 [Intuos5 touch (S)] 0027 PTH-650 [Intuos5 touch (M)] 0028 PTH-850 [Intuos5 touch (L)] 0029 PTK-450 [Intuos5 (S)] 002a PTK-650 [Intuos5 (M)] 0030 PL400 0031 PL500 0032 PL600 0033 PL600SX 0034 PL550 0035 PL800 0037 PL700 0038 PL510 0039 DTU-710 003a DTI-520 003b Integrated Hub 003f DTZ-2100 [Cintiq 21UX] 0041 XD-0405-U [Intuos2 (4x5)] 0042 XD-0608-U [Intuos2 (6x8)] 0043 XD-0912-U [Intuos2 (9x12)] 0044 XD-1212-U [Intuos2 (12x12)] 0045 XD-1218-U [Intuos2 (12x18)] 0047 Intuos2 6x8 0057 DTK-2241 0059 DTH-2242 tablet 005b DTH-2200 [Cintiq 22HD Touch] tablet 005d DTH-2242 touchscreen 005e DTH-2200 [Cintiq 22HD Touch] touchscreen 0060 FT-0405 [Volito, PenPartner, PenStation (4x5)] 0061 FT-0203 [Volito, PenPartner, PenStation (2x3)] 0062 CTF-420 [Volito2] 0063 CTF-220 [BizTablet] 0064 CTF-221 [PenPartner2] 0065 MTE-450 [Bamboo] 0069 CTF-430 [Bamboo One] 006a CTE-460 [Bamboo One Pen (S)] 006b CTE-660 [Bamboo One Pen (M)] 0081 CTE-630BT [Graphire Wireless (6x8)] 0084 ACK-40401 [Wireless Accessory Kit] 0090 TPC90 0093 TPC93 0097 TPC97 009a TPC9A 00a2 STU-300B [LCD signature pad] 00b0 PTZ-430 [Intuos3 (4x5)] 00b1 PTZ-630 [Intuos3 (6x8)] 00b2 PTZ-930 [Intuos3 (9x12)] 00b3 PTZ-1230 [Intuos3 (12x12)] 00b4 PTZ-1231W [Intuos3 (12x19)] 00b5 PTZ-631W [Intuos3 (6x11)] 00b7 PTZ-431W [Intuos3 (4x6)] 00b8 PTK-440 [Intuos4 (4x6)] 00b9 PTK-640 [Intuos4 (6x9)] 00ba PTK-840 [Intuos4 (8x13)] 00bb PTK-1240 [Intuos4 (12x19)] 00c0 DTF-521 00c4 DTF-720 00c5 DTZ-2000W [Cintiq 20WSX] 00c6 DTZ-1200W [Cintiq 12WX] 00c7 DTU-1931 00cc DTK-2100 [Cintiq 21UX] 00ce DTU-2231 00d0 CTT-460 [Bamboo Touch] 00d1 CTH-460 [Bamboo Pen & Touch] 00d2 CTH-461 [Bamboo Fun/Craft/Comic Pen & Touch (S)] 00d3 CTH-661 [Bamboo Fun/Comic Pen & Touch (M)] 00d4 CTL-460 [Bamboo Pen (S)] 00d5 CTL-660 [Bamboo Pen (M)] 00d6 CTH-460 [Bamboo Pen & Touch] 00d7 CTH-461 [Bamboo Fun/Craft/Comic Pen & Touch (S)] 00d8 CTH-661 [Bamboo Fun/Comic Pen & Touch (M)] 00d9 CTT-460 [Bamboo Touch] 00da CTH-461SE [Bamboo Pen & Touch Special Edition (S)] 00db CTH-661SE [Bamboo Pen & Touch Special Edition (M)] 00dc CTT-470 [Bamboo Touch] 00dd CTL-470 [Bamboo Connect] 00de CTH-470 [Bamboo Fun Pen & Touch] 00df CTH-670 [Bamboo Create/Fun] 00e2 TPCE2 00e3 TPCE3 00e5 TPCE5 00e6 TPCE6 00ec TPCEC 00ed TPCED 00ef TPCEF 00f0 DTU-1631 00f4 DTK-2400 [Cintiq 24HD] tablet 00f6 DTH-2400 [Cintiq 24HD touch] touchscreen 00f8 DTH-2400 [Cintiq 24HD touch] tablet 00f9 DTK-2200 [Cintiq 22HD] hub 00fa DTK-2200 [Cintiq 22HD] tablet 00fb DTU-1031 0100 TPC100 0101 TPC101 010d TPC10D 010e TPC10E 010f TPC10F 0116 TPC116 012c TPC12C 0221 MDP-123 [Inkling] 0300 CTL-471 [Bamboo Splash, One by Wacom (S)] 0301 CTL-671 [One by Wacom (M)] 0302 CTH-480 [Intuos Pen & Touch (S)] 0303 CTH-680 [Intuos Pen & Touch (M)] 0304 DTK-1300 [Cintiq 13HD] 0307 DTH-A1300 [Cintiq Companion Hybrid] tablet 0309 DTH-A1300 [Cintiq Companion Hybrid] touchscreen 030e CTL-480 [Intuos Pen (S)] 0314 PTH-451 [Intuos pro (S)] 0315 PTH-651 [Intuos pro (M)] 0317 PTH-851 [Intuos pro (L)] 0318 CTH-301 [Bamboo] 0319 CTH-300 [Bamboo Pad wireless] 0323 CTL-680 [Intuos Pen (M)] 032a DTK-2700 [Cintiq 27QHD] 032b DTH-2700 [Cintiq 27QHD touch] tablet 032c DTH-2700 [Cintiq 27QHD touch] touchscreen 032f DTU-1031X 0331 ACK-411050 [ExpressKey Remote] 0333 DTH-1300 [Cintiq 13HD Touch] tablet 0335 DTH-1300 [Cintiq 13HD Touch] touchscreen 0336 DTU-1141 033b CTL-490 [Intuos Draw (S)] 033c CTH-490 [Intuos Art/Photo/Comic (S)] 033d CTL-690 [Intuos Draw (M)] 033e CTH-690 [Intuos Art (M)] 0343 DTK-1651 0347 DTH-W1620 [MobileStudio Pro 16] internal hub 0348 DTH-W1620 [MobileStudio Pro 16] external hub 034a DTH-W1320 [MobileStudio Pro 13] touchscreen 034b DTH-W1620 [MobileStudio Pro 16] touchscreen 034d DTH-W1320 [MobileStudio Pro 13] tablet 034e DTH-W1620 [MobileStudio Pro 16] tablet 034f DTH-1320 [Cintiq Pro 13] tablet 0350 DTH-1620 [Cintiq Pro 16] tablet 0351 DTH-2420 [Cintiq Pro 24 PT] tablet 0352 DTH-3220 [Cintiq Pro 32] tablet 0353 DTH-1320 [Cintiq Pro 13] touchscreen 0354 DTH-1620 [Cintiq Pro 16] touchscreen 0355 DTH-2420 [Cintiq Pro 24 PT] touchscreen 0356 DTH-3220 [Cintiq Pro 32] touchscreen 0357 PTH-660 [Intuos Pro (M)] 0358 PTH-860 [Intuos Pro (L)] 0359 DTU-1141B 035a DTH-1152 tablet 0368 DTH-1152 touchscreen 0374 CTL-4100 [Intuos (S)] 0375 CTL-6100 [Intuos (M)] 0376 CTL-4100WL [Intuos BT (S)] 0378 CTL-6100WL [Intuos BT (M)] 037a CTL-472 [One by Wacom (S)] 037b CTL-672 [One by Wacom (M)] 037c DTK-2420 [Cintiq Pro 24 P] 037d DTH-2452 tablet 037e DTH-2452 touchscreen 0382 DTK-2451 tablet 038a DTH-3220 [Cintiq Pro 32] internal hub 038d DTH-3220 [Cintiq Pro 32] internal hub 038e DTH-3220 [Cintiq Pro 32] external hub 038f DTH-3220 [Cintiq Pro 32] internal hub 0390 DTK-1660 [Cintiq 16] 0392 PTH-460 [Intuos Pro (S)] 0396 DTK-1660E 0398 DTH-W1320 [MobileStudio Pro 13] tablet 0399 DTH-W1620 [MobileStudio Pro 16] tablet 039a DTH-W1320 [MobileStudio Pro 13] touchscreen 039b DTH-W1620 [MobileStudio Pro 16] touchscreen 039c DTH-W1320 [MobileStudio Pro 16] external hub 039d DTH-W1320 [MobileStudio Pro 16] internal hub 03aa DTH-W1620 [MobileStudio Pro 16] tablet 03ac DTH-W1620 [MobileStudio Pro 16] touchscreen 03b2 DTH167 [Cintiq Pro 16] tablet 03b3 DTH167 [Cintiq Pro 16] touchscreen 03c0 DTH271 [Cintiq Pro 27] touchscreen 03c4 DTH172 [Cintiq Pro 17] 03c5 CTL-4100WL [Intuos BT (S)] 03c7 CTL-6100WL [Intuos BT (M)] 03cb DTH134 [Wacom One 13] touchscreen 03ce DTC121 [Wacom One 12] touchscreen 03d0 DTH227 [Cintiq Pro 22] 03dc PTH-460 [Intuos Pro (S)] tablet 03dd PTH-460 [Intuos Pro BT (S)] tablet 03ec DTH134 [DTH134] touchscreen 03ed DTC121 [DTC121] touchscreen 03f0 DTH135 [Movink 13] 0400 PenPartner 4x5 4001 TPC4001 4004 TPC4004 4850 PenPartner 6x8 5000 TPC5000 5002 TPC5002 5010 TPC5010 056b Decicon, Inc. 056c eTEK Labs 0006 KwikLink Host-Host Connector 8007 Kwik232 Serial Port 8100 KwikLink Host-Host Connector 8101 KwikLink USB-USB Bridge 056d EIZO Corp. 0000 Hub 0001 Monitor 0002 HID Monitor Controls 0003 Device Bay Controller 4000 FlexScan EV3237 4001 FlexScan EV2450 4002 FlexScan EV2455 4014 FlexScan EV2750 4026 FlexScan EV2451 4027 FlexScan EV2456 402b FlexScan EV2780 4036 FlexScan EV2785 4037 FlexScan EV3285 4044 FlexScan EV2457 4059 FlexScan EV2760 405a FlexScan EV2360 405b FlexScan EV2460 405e FlexScan EV2495 405f FlexScan EV2795 4065 FlexScan EV3895 406a FlexScan EV2480 056e Elecom Co., Ltd 0002 29UO Mouse 0057 Micro Grast Pop M-PGDL 005c Micro Grast Pop M-PG2DL 005d Micro Grast Fit M-FGDL 005e Micro Grast Fit M-FG2DL 0062 Optical mouse M-D18DR 0063 Laser mouse M-SODL 0069 Laser mouse M-GE1UL 0071 Laser mouse M-GE3DL 0072 Laser mouse M-LS6UL 0073 Laser mouse M-LS7UL 0074 Optical mouse M-FW1UL 0075 Laser mouse M-FW2DL 0077 Laser mouse M-LY2UL 0079 Laser mouse M-D21DL 007b Laser mouse M-D20DR 007c Laser Bluetooth mouse M-BT5BL 007e Option mouse M-M8UR 007f Option mouse M-M9UR 0081 Option mouse M-DY6DR 0082 Laser mouse M-D22DR 0088 Micro Grast2 Bit M-BG3DL 0089 Micro Grast2 Pop M-PG3DL 008c M-NE3DL Mouse 008d ORIME M-NE4DR 008f M-BT8BL Bluetooth Mouse 0092 Wireless BlueLED Mouse (M-BL2DB) 009c IR Mouse M-IR02DR 009d IR Mouse M-IR03DR 009f BlueLED Mouse M-HS1DB 00a1 IR Mouse M-IR05DR 00a4 Blue LED Mouse M-BL06DB 00a5 M-NV1BR Bluetooth Mouse 00a7 Blue LED Mouse M-BL08DB 00a8 M-BL09DB Mouse 00a9 M-BL10UB Mouse 00aa M-BL11DB Mouse 00ac M-A-BL01UL / M-BL15DB Mouse 00b4 Track on Glass Mouse M-TG02DL 00b5 Track on Glass Mouse M-TG03UL 00b6 Track on Glass Mouse M-TG04DL 00b8 M-A-BL01UL or M-ASKL2 Mouse 00b9 M-A-BL02DB or M-ASKL Mouse 00cb M-BL21DB Mouse 00cd M-XG1UB Mouse 00ce M-XG1DB Mouse 00cf M-XG1BB Bluetooth Mouse 00d0 M-XG2UB Mouse 00d1 M-XG2DB Mouse 00d2 M-XG2BB Bluetooth Mouse 00d3 M-XG3DL Mouse 00d4 M-LS11DL Mouse 00da M-XG4UB Mouse 00db M-XG4DB Mouse 00dc M-XG4BB Bluetooth Mouse 00dd M-LS12UL Mouse 00de M-LS13UL Mouse 00df M-BL22DB Mouse 00e1 M-WK01DB or M-A-BL04DB 00e2 M-A-BL03DB 00e3 M-XGx10UB 00e4 M-XGx10DB 00e5 M-XGx10BB 00e6 M-XGx20DL or M-XGx20DB UltimateLaser Mouse 00f1 M-XT1DRBK USB EX-G Wireless Optical TrackBall 00f2 M-XT1URBK EX-G Optical Trackball 00f3 M-BL23DB 00f4 M-BT13BL LBT-UAN05C2 00f7 M-KN1DB 00f8 M-BL22DB Mouse (other version) 00f9 M-XT2URBK EX-G Optical TrackBall 00fa M-XT2DRBK EX-G Wireless Optical TrackBall 00fb M-XT3URBK EX-G Optical TrackBall 00fc M-XT3DRBK EX-G Wireless Optical TrackBall 00fd M-XT4DRBK EX-G Wireless Optical TrackBall 00fe M-DT1URBK or M-DT2URBK DEFT Optical TrackBall 00ff M-DT1DRBK or M-DT2DRBK DEFT Wireless Optical Mouse 0101 M-BL25UBS 0103 M-BT16BBS 0104 M-BL26UBC 0105 M-BL26DBC 0107 M-LS15UL 0108 M-LS15DL 0109 M-LS16UL Mouse 010a M-LS16DL / M-KN2DLS 010b M-BL21DB Mouse 010c M-HT1URBK HUGE Optical TrackBall 010d M-HT1DRBK HUGE Wireless Optical TrackBall 010e M-KS1DBS / M-FPG3DBS 010f M-FBG3DB 0115 M-BT13BL 0121 M-ED01DB 0122 M-NK01DB 0124 Dual connect Mouse M-DC01MB Bluetooth 0128 TrackBall Mouse M-XPT1MR Wired 0129 TrackBall Mouse M-XPT1MR Wireless 0130 TrackBall Mouse M-XPT1MR Bluetooth 0131 TrackBall Mouse M-DPT1MR Wired 0132 TrackBall Mouse M-DPT1MR Wireless 0133 TrackBall Mouse M-DPT1MR Bluetooth 0136 M-BT20BB 0137 BlueTooth 4.0 Mouse M-BT21BB 0138 M-A-BL07DB 0140 M-G01UR 0141 M-Y9UB 0142 M-DY13DB 0144 M-FBL01DB 1055 TK-DCP03 WIRED 1057 TK-DCP03 BT 2003 JC-U3613M 2004 JC-U3613M 200c LD-USB/TX 200f JC-U4013S Gamepad 2012 JC-U4013S Gamepad 4002 Laneed 100Mbps Ethernet LD-USB/TX [pegasus] 4005 LD-USBL/TX 400b LD-USB/TX 4010 LD-USB20 5003 UC-SGT 5004 UC-SGT 6008 Flash Disk abc1 LD-USB/TX 056f Korea Data Systems Co., Ltd cd00 CDM-751 CD organizer 0570 Epson America 0571 Interex, Inc. 0002 echoFX InterView Lite 0572 Conexant Systems (Rockwell), Inc. 0001 Ezcam II Webcam 0002 Ezcam II Webcam 0040 Wondereye CP-115 Webcam 0041 Webcam Notebook 0042 Webcam Notebook 0320 DVBSky T330 DVB-T2/C tuner 1232 V.90 modem 1234 Typhoon Redfun Modem V90 56k 1252 HCF V90 Data Fax Voice Modem 1253 Zoom V.92 Faxmodem 1300 SoftK56 Data Fax Voice CARP 1301 Modem Enumerator 1328 TrendNet TFM-561 modem 1340 CX93010 ACF Modem 1804 HP Dock Audio 2000 SoftGate 802.11 Adapter 2002 SoftGate 802.11 Adapter 262a tm5600 Video & Audio Grabber Capture 680c DVBSky T680C DVB-T2/C tuner 6831 DVBSky S960 DVB-S2 tuner 8390 WinFast PalmTop/Novo TV Video 8392 WinFast PalmTop/Novo TV Video 960c DVBSky S960C DVB-S2 tuner c686 Geniatech T220A DVB-T2 TV Stick c688 Geniatech T230 DVB-T2 TV Stick cafc CX861xx ROM Boot Loader cafd CX82310 ROM Boot Loader cafe AccessRunner ADSL Modem cb00 ADSL Modem cb01 ADSL Modem cb06 StarModem Network Interface 0573 Zoran Co. Personal Media Division (Nogatech) 0003 USBGear USBG-V1 0400 D-Link V100 0600 Dazzle USBVision (1006) 1300 leadtek USBVision (1006) 2000 X10 va10a Wireless Camera 2001 Dazzle EmMe (2001) 2101 Zoran Co. PMD (Nogatech) AV-grabber Manhattan 2d00 Osprey 50 2d01 Hauppauge USB-Live Model 600 3000 Dazzle MicroCam (NTSC) 3001 Dazzle MicroCam (PAL) 4000 Nogatech TV! (NTSC) 4001 Nogatech TV! (PAL) 4002 Nogatech TV! (PAL-I-) 4003 Nogatech TV! (MF-) 4008 Nogatech TV! (NTSC) (T) 4009 Nogatech TV! (PAL) (T) 4010 Nogatech TV! (NTSC) (A) 4100 USB-TV FM (NTSC) 4110 PNY USB-TV (NTSC) FM 4400 Nogatech TV! Pro (NTSC) 4401 Nogatech TV! Pro (PAL) 4450 PixelView PlayTv-USB PRO (PAL) FM 4451 Nogatech TV! Pro (PAL+) 4452 Nogatech TV! Pro (PAL-I+) 4500 Nogatech TV! Pro (NTSC) 4501 Nogatech TV! Pro (PAL) 4550 ZTV ZT-721 2.4GHz A/V Receiver 4551 Dazzle TV! Pro Audio (P+) 4d00 Hauppauge WinTV-USB USA 4d01 Hauppauge WinTV-USB 4d02 Hauppauge WinTV-USB UK 4d03 Hauppauge WinTV-USB France 4d04 Hauppauge WinTV (PAL D/K) 4d10 Hauppauge WinTV-USB with FM USA radio 4d11 Hauppauge WinTV-USB (PAL) with FM radio 4d12 Hauppauge WinTV-USB UK with FM Radio 4d14 Hauppauge WinTV (PAL D/K FM) 4d20 Hauppauge WinTV-USB II (PAL) with FM radio 4d21 Hauppauge WinTV-USB II (PAL) 4d22 Hauppauge WinTV-USB II (PAL) Model 566 4d23 Hauppauge WinTV-USB France 4D23 4d24 Hauppauge WinTV Pro (PAL D/K) 4d25 Hauppauge WinTV-USB Model 40209 rev B234 4d26 Hauppauge WinTV-USB Model 40209 rev B243 4d27 Hauppauge WinTV-USB Model 40204 Rev B281 4d28 Hauppauge WinTV-USB Model 40204 rev B283 4d29 Hauppauge WinTV-USB Model 40205 rev B298 4d2a Hauppague WinTV-USB Model 602 Rev B285 4d2b Hauppague WinTV-USB Model 602 Rev B282 4d2c Hauppauge WinTV Pro (PAL/SECAM) 4d30 Hauppauge WinTV-USB FM Model 40211 Rev B123 4d31 Hauppauge WinTV-USB III (PAL) with FM radio Model 568 4d32 Hauppauge WinTV-USB III (PAL) FM Model 573 4d34 Hauppauge WinTV Pro (PAL D/K FM) 4d35 Hauppauge WinTV-USB III (PAL) FM Model 597 4d36 Hauppauge WinTV Pro (PAL B/G FM) 4d37 Hauppauge WinTV-USB Model 40219 rev E189 4d38 Hauppauge WinTV Pro (NTSC FM) 0574 City University of Hong Kong 0575 Philips Creative Display Solutions 0576 BAFO/Quality Computer Accessories 0577 ELSA 0578 Intrinsix Corp. 0579 GVC Corp. 057a Samsung Electronics America 057b Y-E Data, Inc. 0000 FlashBuster-U Floppy 0001 Tri-Media Reader Floppy 0006 Tri-Media Reader Card Reader 0010 Memory Stick Reader Writer 0020 HEXA Media Drive 6-in-1 Card Reader Writer 0030 Memory Card Viewer (TV) 057c AVM GmbH 0b00 ISDN-Controller B1 Family 0c00 ISDN-Controller FRITZ!Card 1000 ISDN-Controller FRITZ!Card v2.0 1900 ISDN-Controller FRITZ!Card v2.1 2000 ISDN-Connector FRITZ!X 2200 BlueFRITZ! 2300 Teledat X130 DSL 2800 Teledat 2a/b / X120 / NetXXL ISDN Terminal Adapter 3200 Teledat X130 DSL 3500 FRITZ!Card DSL SL 3701 FRITZ!Box SL 3702 FRITZ!Box 3800 BlueFRITZ! Bluetooth Stick 3a00 FRITZ!Box Fon 3c00 FRITZ!Box WLAN 3d00 FRITZ!Box Fon WLAN 7050/7140/7170/IAD3331 3e01 FRITZ!Box (Annex A) 4001 FRITZ!Box Fon (Annex A) 4101 FRITZ!Box WLAN (Annex A) 4201 FRITZ!Box Fon WLAN (Annex A) 4601 Eumex 5520PC (WinXP/2000) 4602 Eumex 400 (WinXP/2000) 4701 AVM FRITZ!Box Fon ata 5401 Eumex 300 IP 5601 AVM Fritz!WLAN [Texas Instruments TNETW1450] 6201 AVM Fritz!WLAN v1.1 [Texas Instruments TNETW1450] 62ff AVM Fritz!WLAN USB (in CD-ROM-mode) 8401 Fritz!WLAN N [Atheros AR9001U] 8402 Fritz!WLAN N 2.4 [Atheros AR9001U] 8403 Fritz!WLAN N v2 [Atheros AR9271] 84ff AVM Fritz!WLAN USB N (in CD-ROM-mode) 8501 FRITZ WLAN N v2 [RT5572/rt2870.bin] 057d Shark Multimedia, Inc. 057e Nintendo Co., Ltd 0300 USB-EXI Adapter (GCP-2000) 0304 RVT-H Reader 0305 Broadcom BCM2045A Bluetooth Radio [Nintendo Wii/Wii U] 0306 Wii Remote Controller RVL-003 0337 Wii U GameCube Controller Adapter 0341 DRH GamePad Host [Nintendo Wii U] 2000 Switch 2006 Joy-Con L 2007 Joy-Con R 2009 Switch Pro Controller 200e Joy-Con Charging Grip 3000 SDK Debugger 057f QuickShot, Ltd 6238 USB StrikePad 0580 Denron, Inc. 0581 Racal Data Group 0107 Tera Barcode Scanner 2.4 GHz Receiver 0115 Tera 5100 011c Tera 5100 dongle 020c Tera 2D Barcode Scanner EVHK0012 0582 Roland Corp. 0000 UA-100(G) 0002 UM-4/MPU-64 MIDI Interface 0003 SoundCanvas SC-8850 0004 U-8 0005 UM-2(C/EX) 0007 SoundCanvas SC-8820 0008 PC-300 0009 UM-1(E/S/X) 000b SK-500 000c SC-D70 0010 EDIROL UA-5 0011 Edirol UA-5 Sound Capture 0012 XV-5050 0013 XV-5050 0014 EDIROL UM-880 MIDI I/F (native) 0015 EDIROL UM-880 MIDI I/F (generic) 0016 EDIROL SD-90 0017 EDIROL SD-90 0018 UA-1A 001b MMP-2 001c MMP-2 001d V-SYNTH 001e V-SYNTH 0023 EDIROL UM-550 0024 EDIROL UM-550 0025 EDIROL UA-20 0026 EDIROL UA-20 0027 EDIROL SD-20 0028 EDIROL SD-20 0029 EDIROL SD-80 002a EDIROL SD-80 002b EDIROL UA-700 002c EDIROL UA-700 002d XV-2020 Synthesizer 002e XV-2020 Synthesizer 002f VariOS 0030 VariOS 0033 EDIROL PCR 0034 EDIROL PCR 0035 M-1000 0037 Digital Piano 0038 Digital Piano 003b BOSS GS-10 003c BOSS GS-10 0040 GI-20 0041 GI-20 0042 RS-70 0043 RS-70 0044 EDIROL UA-1000 0047 EDIROL UR-80 WAVE 0048 EDIROL UR-80 MIDI 0049 EDIROL UR-80 WAVE 004a EDIROL UR-80 MIDI 004b EDIROL M-100FX 004c EDIROL PCR-A WAVE 004d EDIROL PCR-A MIDI 004e EDIROL PCR-A WAVE 004f EDIROL PCR-A MIDI 0050 EDIROL UA-3FX 0052 EDIROL UM-1SX 0054 Digital Piano 0060 EXR Series 0064 EDIROL PCR-1 WAVE 0065 EDIROL PCR-1 MIDI 0066 EDIROL PCR-1 WAVE 0067 EDIROL PCR-1 MIDI 006a SP-606 006b SP-606 006d FANTOM-X 006e FANTOM-X 0073 EDIROL UA-25 0074 EDIROL UA-25 0075 BOSS DR-880 0076 BOSS DR-880 007a RD 007b RD 007d EDIROL UA-101 0080 G-70 0081 G-70 0084 V-SYNTH XT 0089 BOSS GT-PRO 008b EDIROL PC-50 008c EDIROL PC-50 008d EDIROL UA-101 USB1 0092 EDIROL PC-80 WAVE 0093 EDIROL PC-80 MIDI 0096 EDIROL UA-1EX 009a EDIROL UM-3EX 009d EDIROL UM-1 00a0 MD-P1 00a2 Digital Piano 00a3 EDIROL UA-4FX 00a6 Juno-G 00a9 MC-808 00ad SH-201 00b2 VG-99 00b3 VG-99 00b7 BK-7m/VIMA JM-5/8 00c2 SonicCell 00c4 EDIROL M-16DX 00c5 SP-555 00c7 V-Synth GT 00d1 Music Atelier 00d3 M-380/400 00da BOSS GT-10 00db BOSS GT-10 Guitar Effects Processor 00dc BOSS GT-10B 00de Fantom G 00e6 EDIROL UA-25EX (Advanced mode) 00e7 EDIROL UA-25EX 00e9 UA-1G 00eb VS-100 00f6 GW-8/AX-Synth 00f8 JUNO Series 00fc VS-700C 00fd VS-700 00fe VS-700 M1 00ff VS-700 M2 0100 VS-700 0101 VS-700 M2 0102 VB-99 0104 UM-1G 0106 UM-2G 0108 UM-3G 0109 eBand JS-8 010d A-500S 010f A-PRO 0110 A-PRO 0111 GAIA SH-01 0113 ME-25 0114 SD-50 0116 WAVE/MP3 RECORDER R-05 0117 VS-20 0119 OCTAPAD SPD-30 011c Lucina AX-09 011e BR-800 0120 OCTA-CAPTURE 0121 OCTA-CAPTURE 0123 JUNO-Gi 0124 M-300 0127 GR-55 012a UM-ONE 012b DUO-CAPTURE 012f QUAD-CAPTURE 0130 MICRO BR BR-80 0132 TRI-CAPTURE 0134 V-Mixer 0138 Boss RC-300 (Audio mode) 0139 Boss RC-300 (Storage mode) 013a JUPITER-80 013e R-26 0145 SPD-SX 014b eBand JS-10 014d GT-100 0150 TD-15 0151 TD-11 0154 JUPITER-50 0156 A-Series 0158 TD-30 0159 DUO-CAPTURE EX 015b INTEGRA-7 015d R-88 01b5 Boutique Series Synthesizer (Normal mode) 01b6 Boutique Series Synthesizer (Storage mode) 01cd Boutique TB-03 01cf Boutique TR-09 01df Rubix22 01e0 Rubix24 01e1 Rubix44 01ef Go:KEYS MIDI 01fd Boutique SH-01A 01ff Roland Corp. Boutique D-05 020a TR-8S 025c Boutique TR-06 028c Roland Corp. Boutique JD-08 028e Roland Corp. Boutique JX-08 0505 EDIROL UA-101 0583 Padix Co., Ltd (Rockfire) 0001 4 Axis 12 button +POV 0002 4 Axis 12 button +POV 2030 RM-203 USB Nest [mode 1] 2031 RM-203 USB Nest [mode 2] 2032 RM-203 USB Nest [mode 3] 2033 RM-203 USB Nest [mode 4] 2050 PX-205 PSX Bridge 205f PSX/USB converter 2060 2-axis 8-button gamepad 206f USB, 2-axis 8-button gamepad 3050 QF-305u Gamepad 3379 Rockfire X-Force 337f Rockfire USB RacingStar Vibra 509f USB,4-Axis,12-Button with POV 5259 Rockfire USB SkyShuttle Vibra 525f USB Vibration Pad 5308 USB Wireless VibrationPad 5359 Rockfire USB SkyShuttle Pro 535f USB,real VibrationPad 5659 Rockfire USB SkyShuttle Vibra 565f USB VibrationPad 6009 Revenger 600f USB,GameBoard II 6258 USB, 4-axis, 6-button joystick w/view finder 6889 Windstorm Pro 688f QF-688uv Windstorm Pro Joystick 7070 QF-707u Bazooka Joystick a000 MaxFire G-08XU Gamepad a015 4-Axis,16-Button with POV a019 USB, Vibration ,4-axis, 8-button joystick w/view finder a020 USB,4-Axis,10-Button with POV a021 USB,4-Axis,12-Button with POV a022 USB,4-Axis,14-Button with POV a023 USB,4-Axis,16-Button with POV a024 4axis,12button vibrition audio gamepad a025 4axis,12button vibrition audio gamepad a130 USB Wireless 2.4GHz Gamepad a131 USB Wireless 2.4GHz Joystick a132 USB Wireless 2.4GHz Wheelpad a133 USB Wireless 2.4GHz Wheel&Gamepad a202 ForceFeedbackWheel a209 MetalStrike FF b000 USB,4-Axis,12-Button with POV b001 USB,4-Axis,12-Button with POV b002 Vibration,12-Button USB Wheel b005 USB,12-Button Wheel b008 USB Wireless 2.4GHz Wheel b009 USB,12-Button Wheel b00a PSX/USB converter b00b PSX/USB converter b00c PSX/USB converter b00d PSX/USB converter b00e 4-Axis,12-Button with POV b00f USB,5-Axis,10-Button with POV b010 MetalStrike Pro b012 Wireless MetalStrike b013 USB,Wiress 2.4GHZ Joystick b016 USB,5-Axis,10-Button with POV b018 TW6 Wheel ff60 USB Wireless VibrationPad 0584 RATOC System, Inc. 0008 Fujifilm MemoryCard ReaderWriter 0220 U2SCX SCSI Converter 0304 U2SCX-LVD (SCSI Converter) b000 REX-USB60 b020 REX-USB60F b022 RTX-USB60F 0585 FlashPoint Technology, Inc. 0001 Digital Camera 0002 Digital Camera 0003 Digital Camera 0004 Digital Camera 0005 Digital Camera 0006 Digital Camera 0007 Digital Camera 0008 Digital Camera 0009 Digital Camera 000a Digital Camera 000b Digital Camera 000c Digital Camera 000d Digital Camera 000e Digital Camera 000f Digital Camera 0586 ZyXEL Communications Corp. 0025 802.11b/g/n USB Wireless Network Adapter 0100 omni.net 0102 omni.net II ISDN TA [HFC-S] 0110 omni.net Plus 1000 omni.net LCD Plus - ISDN TA 1500 Omni 56K Plus 2011 Scorpion-980N keyboard 3304 LAN Modem 3309 ADSL Modem Prestige 600 series 330a ADSL Modem Interface 330e USB Broadband ADSL Modem Rev 1.10 3400 ZyAIR B-220 IEEE 802.11b Adapter 3401 ZyAIR G-220 802.11bg 3402 ZyAIR G-220F 802.11bg 3403 AG-200 802.11abg Wireless Adapter [Atheros AR5523] 3407 G-200 v2 802.11bg 3408 G-260 802.11bg 3409 AG-225H 802.11bg 340a M-202 802.11bg 340c G-270S 802.11bg Wireless Adapter [Atheros AR5523] 340f G-220 v2 802.11bg 3410 ZyAIR G-202 802.11bg 3412 802.11bg 3413 ZyAIR AG-225H v2 802.11bg 3415 G-210H 802.11g Wireless Adapter 3416 NWD-210N 802.11b/g/n-draft wireless adapter 3417 NWD271N 802.11n Wireless Adapter [Atheros AR9001U-(2)NG] 3418 NWD211AN 802.11abgn Wireless Adapter [Ralink RT2870] 3419 G-220 v3 802.11bg Wireless Adapter [ZyDAS ZD1211B] 341a NWD-270N Wireless N-lite USB Adapter 341e NWD2105 802.11bgn Wireless Adapter [Ralink RT3070] 341f NWD2205 802.11n Wireless N Adapter [Realtek RTL8192CU] 3425 NWD6505 802.11a/b/g/n/ac Wireless Adapter [MediaTek MT7610U] 343e N220 802.11bgn Wireless Adapter 0587 America Kotobuki Electronics Industries, Inc. 0588 Sapien Design 0589 Victron 058a Nohau Corp. 058b Infineon Technologies 0015 Flash Loader utility 001c Flash Drive 0041 Flash Loader utility 058c In Focus Systems 0007 Flash 0008 LP130 000a LP530 0010 Projector 0011 Projector 0012 Projector 0013 Projector 0014 Projector 0015 Projector 0016 Projector 0017 Projector 0018 Projector 0019 Projector 001a Projector 001b Projector 001c Projector 001d Projector 001e Projector 001f Projector ffe5 IN34 Projector ffeb Projector IN76 058d Micrel Semiconductor 058e Tripath Technology, Inc. 058f Alcor Micro Corp. 1234 Flash Drive 198b Webcam (Gigatech P-09) 2412 SCard R/W CSR-145 2802 Monterey Keyboard 5492 Hub 6232 Hi-Speed 16-in-1 Flash Card Reader/Writer 6254 USB Hub 6331 SD/MMC/MS Card Reader 6332 Multi-Function Card Reader 6335 SD/MMC Card Reader 6360 Multimedia Card Reader 6361 Multimedia Card Reader 6362 Flash Card Reader/Writer 6364 AU6477 Card Reader Controller 6366 Multi Flash Reader 6377 AU6375 4-LUN card reader 6386 Memory Card 6387 Flash Drive 6390 USB 2.0-IDE bridge 6391 IDE Bridge 6998 AU6998 Flash Disk Controller 9213 MacAlly Kbd Hub 9215 AU9814 Hub 9254 Hub 9310 Mass Storage (UID4/5A & UID7A) 9320 Micro Storage Driver for Win98 9321 Micro Storage Driver for Win98 9330 SD Reader 9331 Micro Storage Driver for Win98 9340 Delkin eFilm Reader-32 9350 Delkin eFilm Reader-32 9360 8-in-1 Media Card Reader 9361 Multimedia Card Reader 9368 Multimedia Card Reader 9380 Flash Drive 9381 Flash Drive 9382 Acer/Sweex Flash drive 9384 qdi U2Disk T209M 9410 Keyboard 9472 Keyboard Hub 9510 ChunghwaTL USB02 Smartcard Reader 9520 Watchdata W 1981 9540 AU9540 Smartcard Reader 9720 USB-Serial Adapter a014 Asus Integrated Webcam b002 Acer Integrated Webcam 0590 Omron Corp. 0004 Cable Modem 000b MR56SVS 0028 HJ-720IT / HEM-7080IT-E / HEM-790IT 0051 FT232BM [E58CIFQ1 with FTDI USB2Serial Converter] 0591 Questra Consulting 0592 Powerware Corp. 0002 UPS (X-Slot) 0593 Incite 0594 Princeton Graphic Systems 0595 Zoran Microelectronics, Ltd 1001 Digitrex DSC-1300/DSC-2100 (mass storage mode) 2002 DIGITAL STILL CAMERA 6M 4X 4343 Digital Camera EX-20 DSC 0596 MicroTouch Systems, Inc. 0001 Touchscreen 0002 Touch Screen Controller 0500 PCT Multitouch HID Controller 0543 DELL XPS touchscreen 0597 Trisignal Communications 0598 Niigata Canotec Co., Inc. 0599 Brilliance Semiconductor, Inc. 059a Spectrum Signal Processing, Inc. 059b Iomega Corp. 0001 Zip 100 (Type 1) 000b Zip 100 (Type 2) 0021 Win98 Disk Controller 0030 Zip 250 (Ver 1) 0031 Zip 100 (Type 3) 0032 Zip 250 (Ver 2) 0034 Zip 100 Driver 0037 Zip 750 MB 0040 SCSI Bridge 0042 Rev 70 GB 0050 Zip CD 650 Writer 0053 CDRW55292EXT CD-RW External Drive 0056 External CD-RW Drive Enclosure 0057 Mass Storage Device 005d Mass Storage Device 005f CDRW64892EXT3-C CD-RW 52x24x52x External Drive 0060 PCMCIA PocketZip Dock 0061 Varo PocketZip 40 MP3 Player 006d HipZip MP3 Player 0070 eGo Portable Hard Drive 007c Ultra Max USB/1394 007d HTC42606 0G9AT00 [Iomega HDD] 007e Mini 256MB/512MB Flash Drive [IOM2D5] 00db FotoShow Zip 250 Driver 0150 Mass Storage Device 015d Super DVD Writer 0173 Hi-Speed USB-to-IDE Bridge Controller 0174 Hi-Speed USB-to-IDE Bridge Controller 0176 Hi-Speed USB-to-IDE Bridge Controller 0177 Hi-Speed USB-to-IDE Bridge Controller 0178 Hi-Speed USB-to-IDE Bridge Controller 0179 Hi-Speed USB-to-IDE Bridge Controller 017a HDD 017b HDD/1394A 017c HDD/1394B 0251 Optical 0252 Optical 0275 ST332082 0A 0278 LDHD-UPS [Professional Desktop Hard Drive eSATA / USB2.0] 027a LPHD250-U [Portable Hard Drive Silver Series 250 Go] 0470 Prestige Portable Hard Drive 047a Select Portable Hard Drive 0571 Prestige Portable Hard Drive 0579 eGo Portable Hard Drive 1052 DVD+RW External Drive 059c A-Trend Technology Co., Ltd 059d Advanced Input Devices 059e Intelligent Instrumentation 059f LaCie, Ltd 0201 StudioDrive USB2 0202 StudioDrive USB2 0203 StudioDrive USB2 0211 PocketDrive 0212 PocketDrive 0213 PocketDrive USB2 0323 LaCie d2 Drive USB2 0421 Big Disk G465 0525 BigDisk Extreme 500 0641 Mobile Hard Drive 0828 d2 Quadra 0829 BigDisk Extreme+ 1004 Little Disk 20 GB 100c Rugged Triple Interface Mobile Hard Drive 1010 Desktop Hard Drive 1016 Desktop Hard Drive 1018 Desktop Hard Drive 1019 Desktop Hard Drive 1021 Little Disk 1027 iamaKey V2 102a Rikiki Hard Drive 103d D2 1049 rikiki Harddrive 1052 P'9220 Mobile Drive 1053 P'9230 2TB [Porsche Design Desktop Drive 2TB] 1061 Rugged USB3-FW 1064 Rugged 16 and 32 GB 106b Rugged Mini HDD 106d Porsche Design Mobile Drive 106e Porsche Design Desktop Drive 107f Rugged Triple (RUFWU3B) 1093 Rugged 1094 Rugged THB 1095 Rugged 1105 Mobile Drive (RLSD: 2022) a601 HardDrive a602 CD R/W 05a0 Vetronix Corp. 05a1 USC Corp. 05a2 Fuji Film Microdevices Co., Ltd 05a3 ARC International 8388 Marvell 88W8388 802.11a/b/g WLAN 9230 Camera 9320 Camera 9331 Camera 9332 Camera - 1080p 9422 Camera 9520 Camera 05a4 Ortek Technology, Inc. 1000 WKB-1000S Wireless Ergo Keyboard with Touchpad 2000 WKB-2000 Wireless Keyboard with Touchpad 9720 Keyboard Mouse 9722 Keyboard 9731 MCK-600W/MCK-800USB Keyboard 9783 Wireless Keypad 9837 Targus Number Keypad 9862 Targus Number Keypad (Composite Device) 9881 IR receiver [VRC-1100 Vista MCE Remote Control] 05a5 Sampo Technology Corp. 05a6 Cisco Systems, Inc. 0001 CVA124 Cable Voice Adapter (WDM) 0002 CVA122 Cable Voice Adapter (WDM) 0003 CVA124E Cable Voice Adapter (WDM) 0004 CVA122E Cable Voice Adapter (WDM) 0008 STA1520 Tuning Adapter 0009 Console 0a00 Integrated Management Controller Hub 0a01 Virtual Keyboard/Mouse 0a02 Virtual Mass Storage 0a03 Virtual Ethernet/RNDIS 05a7 Bose Corp. 1020 Companion Speaker 4000 Bluetooth Headset 4001 Bluetooth Headset in DFU mode 4002 Bluetooth Headset Series 2 4003 Bluetooth Headset Series 2 in DFU mode 400d SoundLink Color II speaker in DFU mode 40fe SoundLink Color II / Flex bc50 SoundLink Wireless Mobile speaker bc51 SoundLink Wireless Mobile speaker in DFU mode 05a8 Spacetec IMC Corp. 05a9 OmniVision Technologies, Inc. 0511 OV511 Webcam 0518 OV518 Webcam 0519 OV519 Microphone 1550 VEHO Filmscanner 2640 OV2640 Webcam 2642 Integrated Webcam for Dell XPS 2010 2643 Monitor Webcam 264b Monitor Webcam 2800 SuperCAM 4519 Webcam Classic 7670 OV7670 Webcam 8065 GAIA Sensor FPGA Demo Board 8519 OV519 Webcam a511 OV511+ Webcam a518 D-Link DSB-C310 Webcam 05aa Utilux South China, Ltd 05ab In-System Design 0002 Parallel Port 0030 Storage Adapter V2 (TPP) 0031 ATA Bridge 0060 USB 2.0 ATA Bridge 0061 Storage Adapter V3 (TPP-I) 0101 Storage Adapter (TPP) 0130 Compact Flash and Microdrive Reader (TPP) 0200 USS725 ATA Bridge 0201 Storage Adapter (TPP) 0202 ATA Bridge 0300 Portable Hard Drive (TPP) 0301 Portable Hard Drive V2 0350 Portable Hard Drive (TPP) 0351 Portable Hard Drive V2 081a ATA Bridge 0cda ATA Bridge for CD-R/RW 1001 BAYI Printer Class Support 5700 Storage Adapter V2 (TPP) 5701 USB Storage Adapter V2 5901 Smart Board (TPP) 5a01 ATI Storage Adapter (TPP) 5d01 DataBook Adapter (TPP) 05ac Apple, Inc. 0201 USB Keyboard [Alps or Logitech, M2452] 0202 Keyboard [ALPS] 0205 Extended Keyboard [Mitsumi] 0206 Extended Keyboard [Mitsumi] 020b Pro Keyboard [Mitsumi, A1048/US layout] 020c Extended Keyboard [Mitsumi] 020d Pro Keyboard [Mitsumi, A1048/JIS layout] 020e Internal Keyboard/Trackpad (ANSI) 020f Internal Keyboard/Trackpad (ISO) 0214 Internal Keyboard/Trackpad (ANSI) 0215 Internal Keyboard/Trackpad (ISO) 0216 Internal Keyboard/Trackpad (JIS) 0217 Internal Keyboard/Trackpad (ANSI) 0218 Internal Keyboard/Trackpad (ISO) 0219 Internal Keyboard/Trackpad (JIS) 021a Internal Keyboard/Trackpad (ANSI) 021b Internal Keyboard/Trackpad (ISO) 021c Internal Keyboard/Trackpad (JIS) 021d Aluminum Mini Keyboard (ANSI) 021e Aluminum Mini Keyboard (ISO) 021f Aluminum Mini Keyboard (JIS) 0220 Aluminum Keyboard (ANSI) 0221 Aluminum Keyboard (ISO) 0222 Aluminum Keyboard (JIS) 0223 Internal Keyboard/Trackpad (ANSI) 0224 Internal Keyboard/Trackpad (ISO) 0225 Internal Keyboard/Trackpad (JIS) 0229 Internal Keyboard/Trackpad (ANSI) 022a Internal Keyboard/Trackpad (MacBook Pro) (ISO) 022b Internal Keyboard/Trackpad (MacBook Pro) (JIS) 0230 Internal Keyboard/Trackpad (MacBook Pro 4,1) (ANSI) 0231 Internal Keyboard/Trackpad (MacBook Pro 4,1) (ISO) 0232 Internal Keyboard/Trackpad (MacBook Pro 4,1) (JIS) 0236 Internal Keyboard/Trackpad (ANSI) 0237 Internal Keyboard/Trackpad (ISO) 0238 Internal Keyboard/Trackpad (JIS) 023f Internal Keyboard/Trackpad (ANSI) 0240 Internal Keyboard/Trackpad (ISO) 0241 Internal Keyboard/Trackpad (JIS) 0242 Internal Keyboard/Trackpad (ANSI) 0243 Internal Keyboard/Trackpad (ISO) 0244 Internal Keyboard/Trackpad (JIS) 0245 Internal Keyboard/Trackpad (ANSI) 0246 Internal Keyboard/Trackpad (ISO) 0247 Internal Keyboard/Trackpad (JIS) 024a Internal Keyboard/Trackpad (MacBook Air) (ISO) 024d Internal Keyboard/Trackpad (MacBook Air) (ISO) 024f Aluminium Keyboard (ANSI) 0250 Aluminium Keyboard (ISO) 0252 Internal Keyboard/Trackpad (ANSI) 0253 Internal Keyboard/Trackpad (ISO) 0254 Internal Keyboard/Trackpad (JIS) 0259 Internal Keyboard/Trackpad 025a Internal Keyboard/Trackpad 0263 Apple Internal Keyboard / Trackpad (MacBook Retina) 0267 Magic Keyboard A1644 0269 Magic Mouse 2 (Lightning connector) 0273 Internal Keyboard/Trackpad (ISO) 0301 USB Mouse [Mitsumi, M4848] 0302 Optical Mouse [Fujitsu] 0304 Mighty Mouse [Mitsumi, M1152] 0306 Optical USB Mouse [Fujitsu] 030a Internal Trackpad 030b Internal Trackpad 030d Magic Mouse 030e MC380Z/A [Magic Trackpad] 1000 Bluetooth HCI MacBookPro (HID mode) 1001 Keyboard Hub [ALPS] 1002 Extended Keyboard Hub [Mitsumi] 1003 Hub in Pro Keyboard [Mitsumi, A1048] 1006 Hub in Aluminum Keyboard 1008 Mini DisplayPort to Dual-Link DVI Adapter 1009 iBus Hub 100c Nova Hub 1101 Speakers 1105 Audio in LED Cinema Display 1107 Thunderbolt Display Audio 1112 FaceTime HD Camera (Display) 1201 3G iPod 1202 iPod 2G 1203 iPod 4.Gen Grayscale 40G 1204 iPod [Photo] 1205 iPod Mini 1.Gen/2.Gen 1206 iPod '06' 1207 iPod '07' 1208 iPod '08' 1209 iPod Video 120a iPod Nano 1223 iPod Classic/Nano 3.Gen (DFU mode) 1224 iPod Nano 3.Gen (DFU mode) 1225 iPod Nano 4.Gen (DFU mode) 1227 Mobile Device (DFU Mode) 1231 iPod Nano 5.Gen (DFU mode) 1240 iPod Nano 2.Gen (DFU mode) 1242 iPod Nano 3.Gen (WTF mode) 1243 iPod Nano 4.Gen (WTF mode) 1245 iPod Classic 3.Gen (WTF mode) 1246 iPod Nano 5.Gen (WTF mode) 1255 iPod Nano 4.Gen (DFU mode) 1260 iPod Nano 2.Gen 1261 iPod Classic 1262 iPod Nano 3.Gen 1263 iPod Nano 4.Gen 1265 iPod Nano 5.Gen 1266 iPod Nano 6.Gen 1267 iPod Nano 7.Gen 1281 Apple Mobile Device [Recovery Mode] 1290 iPhone 1291 iPod Touch 1.Gen 1292 iPhone 3G 1293 iPod Touch 2.Gen 1294 iPhone 3GS 1296 iPod Touch 3.Gen (8GB) 1297 iPhone 4 1299 iPod Touch 3.Gen 129a iPad 129c iPhone 4(CDMA) 129d iPhone 129e iPod Touch 4.Gen 129f iPad 2 12a0 iPhone 4S 12a1 iPhone 12a2 iPad 2 (3G; 64GB) 12a3 iPad 2 (CDMA) 12a4 iPad 3 (wifi) 12a5 iPad 3 (CDMA) 12a6 iPad 3 (3G, 16 GB) 12a7 TV Device 12a8 iPhone 5/5C/5S/6/SE/7/8/X/XR 12a9 iPad 2 12aa iPod Touch 5.Gen [A1421] 12ab iPad 12ac iPhone 12af Watch 12b0 HomePod 1300 iPod Shuffle 1301 iPod Shuffle 2.Gen 1302 iPod Shuffle 3.Gen 1303 iPod Shuffle 4.Gen 1392 Apple Watch charger 1393 AirPods case 1395 Smart Battery Case [iPhone 6] 1398 Smart Battery Case 1401 Modem 1402 Ethernet Adapter [A1277] 1460 Digital AV Multiport Adapter 1461 VGA Multiport Adapter 1463 HDMI Adapter 1500 SuperDrive [A1379] 1624 Nova 1625 iBus 8005 OHCI Root Hub Simulation 8006 EHCI Root Hub Simulation 8007 XHCI Root Hub USB 2.0 Simulation 8202 HCF V.90 Data/Fax Modem 8203 Bluetooth HCI 8204 Built-in Bluetooth 2.0+EDR HCI 8205 Bluetooth HCI 8206 Bluetooth HCI 8207 Built-in Bluetooth 820a Bluetooth HID Keyboard 820b Bluetooth HID Mouse 820f Bluetooth HCI 8213 Bluetooth Host Controller 8215 Built-in Bluetooth 2.0+EDR HCI 8216 Bluetooth USB Host Controller 8217 Bluetooth USB Host Controller 8218 Bluetooth Host Controller 821a Bluetooth Host Controller 821f Built-in Bluetooth 2.0+EDR HCI 8233 iBridge 8240 Built-in IR Receiver 8241 Built-in IR Receiver 8242 Built-in IR Receiver 8281 Bluetooth Host Controller 8286 Bluetooth Host Controller 8289 Bluetooth Host Controller 828c Bluetooth Host Controller 828d Bluetooth Host Controller 8290 Bluetooth Host Controller 8300 Built-in iSight (no firmware loaded) 8403 Internal Memory Card Reader 8404 Internal Memory Card Reader 8406 Internal Memory Card Reader 8501 Built-in iSight [Micron] 8502 Built-in iSight 8505 Built-in iSight 8507 Built-in iSight 8508 iSight in LED Cinema Display 8509 FaceTime HD Camera 850a FaceTime Camera 8510 FaceTime HD Camera (Built-in) 8511 FaceTime HD Camera (Built-in) 8600 iBridge 911c Hub in A1082 [Cinema HD Display 23"] 9127 Hub in Thunderbolt Display 912f Hub in 30" Cinema Display 9210 Studio Display 21" 9215 Studio Display 15" 9217 Studio Display 17" 9218 Cinema Display 23" 9219 Cinema Display 20" 921c A1082 [Cinema HD Display 23"] 921e Cinema Display 24" 9221 30" Cinema Display 9226 LED Cinema Display 9227 Thunderbolt Display 9232 Cinema HD Display 30" ffff Bluetooth in DFU mode - Driver 05ad Y.C. Cable U.S.A., Inc. 05ae Synopsys, Inc. 05af Jing-Mold Enterprise Co., Ltd 0806 HP SK806A Keyboard 0809 Wireless Keyboard and Mouse 0821 IDE to 3062 Cordless Keyboard 9167 KB 9151B - 678 9267 KB 9251B - 678 Mouse 05b0 Fountain Technologies, Inc. 05b1 First International Computer, Inc. 1389 Bluetooth Wireless Adapter 05b4 LG Semicon Co., Ltd 4857 M-Any DAH-210 6001 HYUNDAI GDS30C6001 SSFDC / MMC I/F Controller 05b5 Dialogic Corp. 05b6 Proxima Corp. 05b7 Medianix Semiconductor, Inc. 05b8 SYSGRATION 3002 Scroll Mouse 3126 APT-905 Wireless presenter 3223 ISY Wireless Presenter 05b9 Philips Research Laboratories 05ba DigitalPersona, Inc. 0007 Fingerprint Reader 0008 Fingerprint Reader 000a Fingerprint Reader 05bb Grey Cell Systems 05bc 3G Green Green Globe Co., Ltd 0004 Trackball 05bd RAFI GmbH & Co. KG 05be Tyco Electronics (Raychem) 05bf S & S Research 05c0 Keil Software 05c1 Kawasaki Microelectronics, Inc. 05c2 Media Phonics (Suisse) S.A. 05c5 Digi International, Inc. 0002 AccelePort USB 2 0004 AccelePort USB 4 0008 AccelePort USB 8 05c6 Qualcomm, Inc. 0114 Select RW-200 CDMA Wireless Modem 0a02 Jolla Device Developer Mode 0a07 Jolla Device MTP 0afe Jolla Device Charging Only 1000 Mass Storage Device 3100 CDMA Wireless Modem/Phone 3196 CDMA Wireless Modem 3197 CDMA Wireless Modem/Phone 6000 Siemens SG75 6503 AnyData APE-540H 6613 Onda H600/N501HS ZTE MF330 6764 A0001 Phone [OnePlus One] 9000 SIMCom SIM5218 modem 9001 Gobi Wireless Modem 9002 Gobi Wireless Modem 9003 Quectel UC20 9008 Gobi Wireless Modem (QDL mode) 9018 Qualcomm HSUSB Device 9025 HSUSB Device 9090 Quectel UC15 9091 Intex Aqua Fish & Jolla C Diagnostic Mode 9092 Nokia 8110 4G 90ba Audio 1.0 device 90bb Snapdragon interface (MIDI + ADB) 90dc Fairphone 2 (Charging & ADB) 9201 Gobi Wireless Modem (QDL mode) 9202 Gobi Wireless Modem 9203 Gobi Wireless Modem 9205 Gobi 2000 9211 Acer Gobi Wireless Modem (QDL mode) 9212 Acer Gobi Wireless Modem 9214 Acer Gobi 2000 Wireless Modem (QDL mode) 9215 Quectel EC20 LTE modem / Acer Gobi 2000 Wireless Modem 9221 Gobi Wireless Modem (QDL mode) 9222 Gobi Wireless Modem 9224 Sony Gobi 2000 Wireless Modem (QDL mode) 9225 Sony Gobi 2000 Wireless Modem 9231 Gobi Wireless Modem (QDL mode) 9234 Top Global Gobi 2000 Wireless Modem (QDL mode) 9235 Top Global Gobi 2000 Wireless Modem 9244 Samsung Gobi 2000 Wireless Modem (QDL mode) 9245 Samsung Gobi 2000 Wireless Modem 9264 Asus Gobi 2000 Wireless Modem (QDL mode) 9265 Asus Gobi 2000 Wireless Modem 9274 iRex Technologies Gobi 2000 Wireless Modem (QDL mode) 9275 iRex Technologies Gobi 2000 Wireless Modem f000 TA-1004 [Nokia 8] f003 Nokia 8110 4G f00e FP3 05c7 Qtronix Corp. 0113 PC Line Mouse 1001 Lynx Mouse 2001 Keyboard 2011 SCorpius Keyboard 6001 Ten-Keypad 05c8 Cheng Uei Precision Industry Co., Ltd (Foxlink) 0103 FO13FF-65 PC-CAM 010b Webcam (UVC) 021a HP Webcam 0233 HP Webcam 0318 Webcam 0361 SunplusIT INC. HP Truevision HD Webcam 036e Webcam 0374 HP EliteBook integrated HD Webcam 038e HP Wide Vision HD integrated webcam 03a1 XiaoMi Webcam 03b1 Webcam 03bc HP Wide Vision HD Integrated Webcam 03cb HP Wide Vision HD Integrated Webcam 03d2 HP TrueVision HD Camera 0403 Webcam 041b HP 2.0MP High Definition Webcam 05c9 Semtech Corp. 05ca Ricoh Co., Ltd 0101 RDC-5300 Camera 0325 Caplio GX (ptp) 032d Caplio GX 8 (ptp) 032f Caplio R3 (ptp) 03a1 IS200e 0403 Printing Support 0405 Type 101 0406 Type 102 0437 Aficio SP 3510SF 044e SP C250SF (multifunction device: printer, scanner, fax) 1803 V5 camera [R5U870] 1810 Pavilion Webcam [R5U870] 1812 Pavilion Webcam 1814 HD Webcam 1815 Dell Laptop Integrated Webcam 1820 Integrated Webcam 1830 Visual Communication Camera VGP-VCC2 [R5U870] 1832 Visual Communication Camera VGP-VCC3 [R5U870] 1833 Visual Communication Camera VGP-VCC2 [R5U870] 1834 Visual Communication Camera VGP-VCC2 [R5U870] 1835 Visual Communication Camera VGP-VCC5 [R5U870] 1836 Visual Communication Camera VGP-VCC4 [R5U870] 1837 Visual Communication Camera VGP-VCC4 [R5U870] 1839 Visual Communication Camera VGP-VCC6 [R5U870] 183a Visual Communication Camera VGP-VCC7 [R5U870] 183b Visual Communication Camera VGP-VCC8 [R5U870] 183d Sony Vaio Integrated Webcam 183e Visual Communication Camera VGP-VCC9 [R5U870] 183f Sony Visual Communication Camera Integrated Webcam 1841 Fujitsu F01/ Lifebook U810 [R5U870] 1870 Webcam 1000 1880 R5U880 18b0 Sony Vaio Integrated Webcam 18b1 Sony Vaio Integrated Webcam 18b3 Sony Vaio Integrated Webcam 18b5 Sony Vaio Integrated Webcam 2201 RDC-7 Camera 2202 Caplio RR30 2203 Caplio 300G 2204 Caplio G3 2205 Caplio RR30 / Medion MD 6126 Camera 2206 Konica DG-3Z 2207 Caplio Pro G3 2208 Caplio G4 2209 Caplio 400G wide 220a KONICA MINOLTA DG-4Wide 220b Caplio RX 220c Caplio GX 220d Caplio R1/RZ1 220e Sea & Sea 5000G 220f Rollei dr5 / Rollei dr5 (PTP mode) 2211 Caplio R1S 2212 Caplio R1v Camera 2213 Caplio R2 2214 Caplio GX 8 2215 DSC 725 2216 Caplio R3 2222 RDC-i500 05cb PowerVision Technologies, Inc. 1483 PV8630 interface (scanners, webcams) 05cc ELSA AG 2100 MicroLink ISDN Office 2219 MicroLink ISDN 2265 MicroLink 56k 2267 MicroLink 56k (V.250) 2280 MicroLink 56k Fun 3000 Micolink USB2Ethernet [pegasus] 3100 AirLancer USB-11 3363 MicroLink ADSL Fun 05cd Silicom, Ltd 05ce sci-worx GmbH 05cf Sung Forn Co., Ltd 05d0 GE Medical Systems Lunar 05d1 Brainboxes, Ltd 0003 Bluetooth Adapter BL-554 05d2 Wave Systems Corp. 05d3 Tohoku Ricoh Co., Ltd 05d5 Super Gate Technology Co., Ltd 05d6 Philips Semiconductors, CICT 05d7 Thomas & Betts Corp. 0099 10Mbps Ethernet [klsi] 05d8 Ultima Electronics Corp. 4001 Artec Ultima 2000 4002 Artec Ultima 2000 (GT6801 based)/Lifetec LT9385/ScanMagic 1200 UB Plus Scanner 4003 Artec E+ 48U 4004 Artec E+ Pro 4005 MEM48U 4006 TRUST EASY WEBSCAN 19200 4007 TRUST 240H EASY WEBSCAN GOLD 4008 Trust Easy Webscan 19200 4009 Umax Astraslim 4013 IT Scan 1200 8105 Artec T1 USB TVBOX (cold) 8106 Artec T1 USB TVBOX (warm) 8107 Artec T1 USB TVBOX with AN2235 (cold) 8108 Artec T1 USB TVBOX with AN2235 (warm) 8109 Artec T1 USB2.0 TVBOX (cold 05d9 Axiohm Transaction Solutions a225 A225 Printer a758 A758 Printer a794 A794 Printer 05da Microtek International, Inc. 0091 ScanMaker X6u 0093 ScanMaker V6USL 0094 Phantom 336CX/C3 0099 ScanMaker X6/X6U 009a Phantom C6 00a0 Phantom 336CX/C3 (#2) 00a3 ScanMaker V6USL 00ac ScanMaker V6UL 00b6 ScanMaker V6UPL 00ef ScanMaker V6UPL 1006 Jenoptik JD350 entrance 1011 NHJ Che-ez! Kiss Digital Camera 1018 Digital Dream Enigma 1.3 1020 Digital Dream l'espion xtra 1025 Take-it Still Camera Device 1026 Take-it 1043 Take-It 1300 DSC Bulk Driver 1045 Take-it D1 1047 Take-it Camera Composite Device 1048 Take-it Q3 1049 3M Still Camera Device 1051 Camcorder Series 1052 Mass Storage Device 1053 Take-it DV Composite Device 1054 Mass Storage Device 1055 Digital Camera Series(536) 1056 Mass Storage Device 1057 Take-it DSC Camera Device(536) 1058 Mass Storage Device 1059 Camcorder DSC Series 1060 Microtek Take-it MV500 2007 ArtixScan DI 1210 200c 1394_USB2 Scanner 200e ArtixScan DI 810 2017 UF ICE Scanner 201c 4800 Scanner 201d ArtixScan DI 1610 201f 4800 Scanner-ICE 202e ArtixScan DI 2020 208b ScanMaker 6800 208f ArtixScan DI 2010 209e ScanMaker 4700LP 20a7 ScanMaker 5600 20b0 ScanMaker X12USL 20b1 ScanMaker 8700 20b4 ScanMaker 4700 20bd ScanMaker 5700 20c9 ScanMaker 6700 20d2 Microtek ArtixScan 1800f 20d6 PS4000 20de ScanMaker 9800XL 20e0 ScanMaker 9700XL 20ed ScanMaker 4700 20ee Micortek ScanMaker X12USL 2838 RT2832U 3008 Scanner 300a 4800 ICE Scanner 300b 4800 Scanner 300f MiniScan C5 3020 4800dpi Scanner 3021 1200dpi Scanner 3022 Scanner 4800dpi 3023 USB1200II Scanner 3025 ScanMaker S460 30c1 USB600 Scanner 30ce ScanMaker 3800 30cf ScanMaker 4800 30d4 USB1200 Scanner 30d8 Scanner 30d9 USB2400 Scanner 30e4 ScanMaker 4100 30e5 USB3200 Scanner 30e6 ScanMaker i320 40b3 ScanMaker 3600 40b8 ScanMaker 3700 40c7 ScanMaker 4600 40ca ScanMaker 3600 40cb ScanMaker 3700 40dd ScanMaker 3750i 40ff ScanMaker 3600 5003 Goya 5013 3200 Scanner 6072 XT-3500 A4 HD Scanner 80a3 ScanMaker V6USL (#2) 80ac ScanMaker V6UL/SpicyU 05db Sun Corp. (Suntac?) 0003 SUNTAC U-Cable type D2 0005 SUNTAC U-Cable type P1 0009 SUNTAC Slipper U 000a SUNTAC Ir-Trinity 000b SUNTAC U-Cable type A3 0011 SUNTAC U-Cable type A4 05dc Lexar Media, Inc. 0001 jumpSHOT CompactFlash Reader 0002 JumpShot 0003 JumpShot 0080 Jumpdrive Secure 64MB 0081 RBC Compact Flash Drive 00a7 JumpDrive Impact 0100 JumpDrive PRO 0200 JumpDrive 2.0 Pro 0300 Jumpdrive Geysr 0301 JumpDrive Classic 0302 JD Micro 0303 JD Micro Pro 0304 JD Secure II 0310 JumpDrive 0311 JumpDrive Classic 0312 JD Micro 0313 JD Micro Pro 0320 JumpDrive 0321 JD Micro 0322 JD Micro Pro 0323 UFC 0330 JumpDrive Expression 0340 JumpDrive TAD 0350 Express Card 0400 UFDC 0401 UFDC 0403 Locked B Device 0405 Locked C Device 0407 Locked D Device 0409 Locked E Device 040b Locked F Device 040d Locked G Device 040f Locked H Device 0410 JumpDrive 0411 JumpDrive 0413 Locked J Device 0415 Locked K Device 0417 Locked L Device 0419 Locked M Device 041b Locked N Device 041d Locked O Device 041f Locked P Device 0420 JumpDrive 0421 JumpDrive 0423 Locked R Device 0425 Locked S Device 0427 Locked T Device 0429 Locked U Device 042b Locked V Device 042d Locked W Device 042f Locked X Device 0431 Locked Y Device 0433 Locked Z Device 4d02 MP3 Player 4d12 MP3 Player 4d30 MP3 Player a201 JumpDrive S70 4GB a209 JumpDrive S70 a300 JumpDrive2 a400 JumpDrive trade; Pro 40-501 a410 JumpDrive 128MB/256MB a411 JumpDrive Traveler a420 JumpDrive Pro a421 JumpDrive Pro II a422 JumpDrive Micro Pro a430 JumpDrive Secure a431 JumpDrive Secure II a432 JumpDrive Classic a440 JumpDrive Lightning a450 JumpDrive TouchGuard a460 JD Mercury a501 JumpDrive Classic a510 JumpDrive Sport a530 JumpDrive Expression a531 JumpDrive Secure II a560 JumpDrive FireFly a701 JumpDrive FireFly a731 JumpDrive FireFly a762 JumpDrive FireFly a768 JumpDrive Retrax a790 JumpDrive 2GB a811 16GB Gizmo! a813 16gB flash thumb drive a815 JumpDrive V10 a81d LJDTT16G [JumpDrive 16GB] a833 JumpDrive S23 64GB a838 JumpDrive Tough b002 USB CF Reader b018 Multi-Card Reader b047 SDHC Reader [RW047-7000] b051 microSD RDR UHS-I Card Reader [LRWM03U-7000] b054 Dual-Slot Reader [LRW400U] ba02 Workflow CFR1 ba0a Workflow DD512 c753 JumpDrive TwistTurn c75c JumpDrive V10 05dd Delta Electronics, Inc. a011 HID UPS Battery a0a0 Minuteman Entrust-LCD Series UPS ff31 AWU-120 ff32 FriendlyNET AeroLAN AL2011 ff35 PCW 100 - Wireless 802.11b Adapter ff91 2Wire PC Port Phoneline 10Mbps Adapter 05df Silicon Vision, Inc. 05e0 Symbol Technologies 0700 Bar Code Scanner (CS1504) 0800 Spectrum24 Wireless LAN Adapter 1200 Bar Code Scanner 1701 Bar Code Scanner (CDC) 1900 SNAPI Imaging Device 1a00 CS4070 Barcode Scanner 2000 MC3090 Rugged Mobile Computer 200d MC70 Rugged Mobile Computer 05e1 Syntek Semiconductor Co., Ltd 0100 802.11g + Bluetooth Wireless Adapter 0408 STK1160 Video Capture Device 0500 DC-112X Webcam 0501 DC-1125 Webcam 0890 STK011 Camera 0892 STK013 Camera 0895 STK016 Camera 0896 STK017 Camera 2010 ARCTIC Sound P261 Headphones 05e2 ElecVision, Inc. 05e3 Genesys Logic, Inc. 000a Keyboard with PS/2 Port 000b Mouse 0100 Nintendo Game Boy Advance SP 0120 Pacific Image Electronics PrimeFilm 1800u slide/negative scanner 0131 CF/SM Reader/Writer 0142 Multiple Slides Scanner-3600 0143 Multiple Frames Film Scanner-36series 0145 Reflecta CrystalScan 7200 Photo-Scanner 0180 Plustek Scanner 0182 Wize Media 1000 0189 ScanJet 4600 series 018a Xerox 6400 0300 GLUSB98PT Parallel Port 0301 USB2LPT Cable Release2 0406 Hub 0501 GL620USB Host-Host interface 0502 GL620USB-A GeneLink USB-USB Bridge 0503 Webcam 0504 HID Keyboard Filter 0510 Camera 0604 USB 1.1 Hub 0605 Hub 0606 USB 2.0 Hub / D-Link DUB-H4 USB 2.0 Hub 0607 Logitech G110 Hub 0608 Hub 0610 Hub 0612 Hub 0616 hub 0618 Hub 0620 GL3523 Hub 0626 Hub 0660 USB 2.0 Hub 0700 SIIG US2256 CompactFlash Card Reader 0701 USB 2.0 IDE Adapter 0702 USB 2.0 IDE Adapter [GL811E] 0703 Card Reader 0704 Card Reader 0705 Card Reader 0706 Card Reader 0707 Card Reader 0708 Card Reader 0709 Card Reader 070a Pen Flash 070b DMHS1B Rev 3 DFU Adapter 070e USB 2.0 Card Reader 070f Pen Flash 0710 USB 2.0 33-in-1 Card Reader 0711 Card Reader 0712 Delkin Mass Storage Device 0715 USB 2.0 microSD Reader 0716 Multislot Card Reader/Writer 0717 All-in-1 Card Reader 0718 IDE/SATA Adapter 0719 SATA adapter 0722 SD/MMC card reader 0723 GL827L SD/MMC/MS Flash Card Reader 0726 SD Card Reader 0727 microSD Reader/Writer 0731 GL3310 SATA 3Gb/s Bridge Controller 0732 All-in-One Cardreader 0736 Colour arc SD Card Reader [PISEN] 0738 Card reader 0741 microSD Card Reader 0743 SDXC and microSDXC CardReader 0745 Logilink CR0012 0748 All-in-One Cardreader 0749 SD Card Reader and Writer 0751 microSD Card Reader 0752 micros Reader 0760 USB 2.0 Card Reader/Writer 0761 Genesys Mass Storage Device 0769 SPR2801S [Lightspeeur 2801] 0780 USBFS DFU Adapter 07a0 Pen Flash 0880 Wasp (SL-6612) 0927 Card Reader 1205 Afilias Optical Mouse H3003 / Trust Optical USB MultiColour Mouse MI-2330 a700 Pen Flash f102 VX7012 TV Box f103 VX7012 TV Box f104 VX7012 TV Box f12a Digital Microscope fd21 3M TL20 Temperature Logger fe00 Razer Mouse 05e4 Red Wing Corp. 05e5 Fuji Electric Co., Ltd 05e6 Keithley Instruments 3390 3390 Arbitrary Waveform Generator 05e8 ICC, Inc. 05e9 Kawasaki LSI 0008 KL5KUSB101B Ethernet [klsi] 0009 Sony 10Mbps Ethernet [pegasus] 000c USB-to-RS-232 000d USB-to-RS-232 0014 RS-232 J104 0040 Ethernet Adapter 2008 Ethernet Adapter 05eb FFC, Ltd 05ec COM21, Inc. 05ee Cytechinfo Inc. 05ef AVB, Inc. [anko?] 020a Top Shot Pegasus Joystick 8884 Mag Turbo Force Wheel 8888 Top Shot Force Feedback Racing Wheel 05f0 Canopus Co., Ltd 0101 DA-Port DAC 05f1 Compass Communications 05f2 Dexin Corp., Ltd 0010 AQ Mouse 05f3 PI Engineering, Inc. 0007 Kinesis Advantage PRO MPC/USB Keyboard 0081 Kinesis Integrated Hub 00ff VEC Footpedal 0203 Y-mouse Keyboard & Mouse Adapter 020b PS2 Adapter 0232 X-Keys Switch Interface, Programming Mode 0261 X-Keys Switch Interface, SPLAT Mode 0264 X-Keys Switch Interface, Composite Mode 05f5 Unixtar Technology, Inc. 05f6 AOC International 05f7 RFC Distribution(s) PTE, Ltd 05f9 PSC Scanning, Inc. 1104 Magellan 2200VS 1206 Gryphon series (OEM mode) 120c Gryphon GD4430-BK 2202 Point of Sale Handheld Scanner 2206 Gryphon series (keyboard emulation mode) 220c Datalogic Gryphon GD4430 2601 Datalogic Magellan 1000i Barcode Scanner 2602 Datalogic Magellan 1100i Barcode Scanner 4204 Gryphon series (RS-232 emulation mode) 5204 Datalogic Gryphon GFS4170 (config mode) 05fa Siemens Telecommunications Systems, Ltd 3301 Keyboard with PS/2 Mouse Port 3302 Keyboard 3303 Keyboard with PS/2 Mouse Port 05fc Harman 0001 Soundcraft Si Multi Digital Card 0010 Soundcraft Si MADI combo card 0021 Soundcraft Signature 12 MTK 7849 Harman/Kardon SoundSticks 05fd InterAct, Inc. 0239 SV-239 HammerHead Digital 0251 Raider Pro 0253 ProPad 8 Digital 0286 SV-286 Cyclone Digital 1007 Mad Catz Controller 107a PowerPad Pro X-Box pad 262a 3dfx HammerHead FX 262f HammerHead Fx daae Game Shark dbae Datel XBoxMC 05fe Chic Technology Corp. 0001 Mouse 0003 Cypress USB Mouse 0005 Viewmaster 4D Browser Mouse 0007 Twinhead Mouse 0009 Inland Pro 4500/5000 Mouse 0011 Browser Mouse 0014 Gamepad 1010 Optical Wireless 2001 Microsoft Wireless Receiver 700 3030 Controller 3031 Controller 05ff LeCroy Corp. 0600 Barco Display Systems 0601 Jazz Hipster Corp. 0003 Internet Security Co., Ltd. SecureKey 0602 Vista Imaging, Inc. 1001 ViCam Webcam 0603 Novatek Microelectronics Corp. 0002 Sino Wealth keyboard/mouse 2.4 GHz receiver 00f1 Keyboard (Labtec Ultra Flat Keyboard) 00f2 Keyboard (Labtec Ultra Flat Keyboard) 1002 Mobius actioncam (webcam mode) 6871 Mouse 8611 NTK96550-based camera (mass storage mode) 8612 NTK96550-based camera (webcam mode) 0604 Jean Co., Ltd 0605 Anchor C&C Co., Ltd 0606 Royal Information Electronics Co., Ltd 0607 Bridge Information Co., Ltd 0608 Genrad Ads 0609 SMK Manufacturing, Inc. 031d eHome Infrared Receiver 0322 eHome Infrared Receiver 0334 eHome Infrared Receiver ff12 SMK Bluetooth Device 060a Worthington Data Solutions, Inc. 060b Solid Year 0001 MacAlly Keyboard 0230 KSK-8003 UX Keyboard 0540 DeltaCo TB-106U Keyboard 1006 Japanese Keyboard - 260U 2101 Keyboard 2231 KSK-6001 UELX Keyboard 2270 Gigabyte K8100 Aivia Gaming Keyboard 500a Cougar 500k Gaming Keyboard 5253 Thermaltake MEKA G-Unit Gaming Keyboard 5811 ACK-571U Wireless Keyboard 5903 Japanese Keyboard - 595U 6001 SolidTek USB 2p HUB 6002 SolidTek USB Keyboard 6003 Japanese Keyboard - 600HM 6231 Thermaltake eSPORTS Meka Keyboard 8007 P-W1G1F12 VER:1 [Macally MegaCam] a001 Maxwell Compact Pc PM3 060c EEH Datalink GmbH 060d Auctor Corp. 060e Transmonde Technologies, Inc. 060f Joinsoon Electronics Mfg. Co., Ltd 0610 Costar Electronics, Inc. 0611 Totoku Electric Co., Ltd 0613 TransAct Technologies, Inc. 0614 Bio-Rad Laboratories 0615 Quabbin Wire & Cable Co., Inc. 0616 Future Techno Designs PVT, Ltd 0617 Swiss Federal Insitute of Technology 000a Thymio-II 000c Thymio-II Wireless 0618 MacAlly 0101 Mouse 0619 Seiko Instruments, Inc. 0101 SLP-100 Driver 0102 SLP-200 Driver 0103 SLP-100N Driver 0104 SLP-200N Driver 0105 SLP-240 Driver 0501 SLP-440 Driver 0502 SLP-450 Driver 061a Veridicom International, Inc. 0110 5thSense Fingerprint Sensor 0200 FPS200 Fingerprint Sensor 8200 VKI-A Fingerprint Sensor/Flash Storage (dumb) 9200 VKI-B Fingerprint Sensor/Flash Storage (smart) 061b Promptus Communications, Inc. 061c Act Labs, Ltd 061d Quatech, Inc. c020 SSU-100 061e Nissei Electric Co. 0001 nissei 128DE-USB - 0010 nissei 128DE-PNA - 0620 Alaris, Inc. 0004 QuickVideo weeCam 0007 QuickVideo weeCam 000a QuickVideo weeCam 000b QuickVideo weeCam 0621 ODU-Steckverbindungssysteme GmbH & Co. KG 0622 Iotech, Inc. 0623 Littelfuse, Inc. 0624 Avocent Corp. 0013 SC Secure KVM 0248 Virtual Hub 0249 Virtual Keyboard/Mouse 0251 Virtual Mass Storage 0252 Virtual SD card reader 0294 Dell 03R874 KVM dongle 0402 Cisco Virtual Keyboard and Mouse 0403 Cisco Virtual Mass Storage 1774 Cybex SC985 0625 TiMedia Technology Co., Ltd 0626 Nippon Systems Development Co., Ltd 0627 Adomax Technology Co., Ltd 0001 QEMU Tablet 0628 Tasking Software, Inc. 0629 Zida Technologies, Ltd 062a MosArt Semiconductor Corp. 0000 Optical mouse 0001 Notebook Optical Mouse 0020 Logic3 Gamepad 0033 Competition Pro Steering Wheel 0102 Wireless Keyboard/Mouse Combo [MK1152WC] 0201 Defender Office Keyboard (K7310) S Zodiak KM-9010 0252 Emerge Uni-retractable Laser Mouse 2410 Wireless PS3 gamepad 3286 Nano Receiver [Sandstrom Laser Mouse SMWLL11] 4101 Wireless Keyboard/Mouse 4102 Wireless Mouse 4106 Wireless Mouse 2.4G 4108 Wireless Mouse 2.4G 4c01 2,4Ghz Wireless Transceiver [for Delux M618 Plus Wireless Vertical Mouse] 6301 Trust Wireless Optical Mouse MI-4150K 9003 VoIP Conference Hub (A16GH) 9004 USR9602 USB Internet Mini Phone 062b Greatlink Electronics Taiwan, Ltd 062c Institute for Information Industry 062d Taiwan Tai-Hao Enterprises Co., Ltd 062e Mainsuper Enterprises Co., Ltd 062f Sin Sheng Terminal & Machine, Inc. 0631 JUJO Electronics Corp. 0633 Cyrix Corp. 0634 Micron Technology, Inc. 0655 Embedded Mass Storage Drive [RealSSD] 0635 Methode Electronics, Inc. 0636 Sierra Imaging, Inc. 0003 Vivicam 35Xx 0638 Avision, Inc. 0268 iVina 1200U Scanner 026a Minolta Dimage Scan Dual II AF-2820U (2886) 0a10 iVina FB1600/UMAX Astra 4500 0a13 AV600U 0a15 Konica Minolta SC-110 0a16 Konica Minolta SC-215 0a2a AV220 C2 0a30 UMAX Astra 6700 Scanner 0a41 Avision AM3000/MF3000 Series 0f01 fi-4010CU # typo? 4004 Minolta Dimage Scan Elite II AF-2920 (2888) 0639 Chrontel, Inc. 7213 CH7213 7231 CH7213 063a Techwin Corp. 063b Taugagreining HF 063c Yamaichi Electronics Co., Ltd (Sakura) 063d Fong Kai Industrial Co., Ltd 063e RealMedia Technology, Inc. 063f New Technology Cable, Ltd 0640 Hitex Development Tools 0026 LPC-Stick 0641 Woods Industries, Inc. 0642 VIA Medical Corp. 0644 TEAC Corp. 0000 Floppy 0200 All-In-One Multi-Card Reader CA200/B/S 1000 CD-ROM Drive 800d TASCAM Portastudio DP-01FX 800e TASCAM US-122L 801d TASCAM DR-100 8021 TASCAM US-122mkII 8047 TASCAM US-16x08 d001 CD-R/RW Unit d002 CD-R/RW Unit d010 CD-RW/DVD Unit 0645 Who? Vision Systems, Inc. 0646 UMAX 0647 Acton Research Corp. 0100 ARC SpectraPro UV/VIS/IR Monochromator/Spectrograph 0101 ARC AM-VM Mono Airpath/Vacuum Monochromator/Spectrograph 0102 ARC Inspectrum Mono 0103 ARC Filterwheel 03e9 Inspectrum 128x1024 F VIS Spectrograph 03ea Inspectrum 256x1024 F VIS Spectrograph 03eb Inspectrum 128x1024 B VIS Spectrograph 03ec Inspectrum 256x1024 B VIS Spectrograph 0648 Inside Out Networks 0649 Weli Science Co., Ltd 064b Analog Devices, Inc. (White Mountain DSP) 0165 Blackfin 535 [ADZS HPUSB ICE] 064c Ji-Haw Industrial Co., Ltd 064d TriTech Microelectronics, Ltd 064e Suyin Corp. 2100 Sony Visual Communication Camera 3410 RGBIR Camera 9700 Asus Integrated Webcam a100 Acer OrbiCam a101 Acer CrystalEye Webcam a102 Acer/Lenovo Webcam [CN0316] a103 Acer/HP Integrated Webcam [CN0314] a110 HP Webcam a114 Lemote Webcam a116 UVC 1.3MPixel WebCam a127 HP Integrated Webcam a136 Asus Integrated Webcam [CN031B] a219 1.3M WebCam (notebook emachines E730, Acer sub-brand) c107 HP webcam [dv6-1190en] c335 HP TrueVision HD d101 Acer CrystalEye Webcam d213 UVC HD Webcam d217 HP TrueVision HD e201 Lenovo Integrated Webcam e203 Lenovo Integrated Webcam e258 HP TrueVision HD Integrated Webcam e263 HP TrueVision HD Integrated Webcam f102 Lenovo Integrated Webcam [R5U877] f103 Lenovo Integrated Webcam [R5U877] f207 Lenovo EasyCamera Integrated Webcam f209 HP Webcam f300 UVC 0.3M Webcam 064f WIBU-Systems AG 03e9 CmStick (MSD, article no. 1001-xx-xxx) 03f2 CmStick/M (MSD, article no. 1010-xx-xxx) 03f3 CmStick/M (MSD, article no. 1011-xx-xxx) 0bd7 Wibu-Box/U (article no. 3031-xx-xxx) 0bd8 Wibu-Box/RU (article no. 3032-xx-xxx) 2af9 CmStick (HID, article no. 1001-xx-xxx) 2b03 CmStick/M (HID, article no. 1011-xx-xxx) 5213 CmStick/M (COMPOSITE, article no. 1011-xx-xxx) 0650 Dynapro Systems 0651 Likom Technology Sdn. Bhd. 0652 Stargate Solutions, Inc. 0653 CNF, Inc. 0654 Granite Microsystems, Inc. 0005 Device Bay Controller 0006 Hub 0007 Device Bay Controller 0016 Hub 0655 Space Shuttle Hi-Tech Co., Ltd 0656 Glory Mark Electronic, Ltd 0657 Tekcon Electronics Corp. 0658 Sigma Designs, Inc. 0200 Aeotec Z-Stick Gen5 (ZW090) - UZB 0280 ZWave programming interface 0659 Aethra 065a Optoelectronics Co., Ltd 0001 Opticon OPR-2001 / NLV-1001 (keyboard mode) 0009 NLV-1001 (serial mode) / OPN-2001 [Opticon] 065b Tracewell Systems 065e Silicon Graphics 065f Good Way Technology Co., Ltd & GWC technology Inc. 0660 TSAY-E (BVI) International, Inc. 0661 Hamamatsu Photonics K.K. 0662 Kansai Electric Co., Ltd 0663 Topmax Electronic Co., Ltd 0103 CobraPad 0664 ET&T Technology Co., Ltd. 0301 Groovy Technology Corp. GTouch Touch Screen 0302 Groovy Technology Corp. GTouch Touch Screen 0303 Groovy Technology Corp. GTouch Touch Screen 0304 Groovy Technology Corp. GTouch Touch Screen 0305 Groovy Technology Corp. GTouch Touch Screen 0306 Groovy Technology Corp. GTouch Touch Screen 0307 Groovy Technology Corp. GTouch Touch Screen 0309 Groovy Technology Corp. GTouch Touch Screen 0665 Cypress Semiconductor 5161 USB to Serial 0667 Aiwa Co., Ltd 0fa1 TD-U8000 Tape Drive 0668 WordWand 0669 Oce' Printing Systems GmbH 066a Total Technologies, Ltd 066b Linksys, Inc. 0105 SCM eUSB SmartMedia Card Reader 010a Melco MCR-U2 SmartMedia / CompactFlash Reader 200c USB10TX 2202 USB10TX Ethernet [pegasus] 2203 USB100TX Ethernet [pegasus] 2204 USB100TX HomePNA Ethernet [pegasus] 2206 USB Ethernet [pegasus] 2207 HomeLink Phoneline 10M Network Adapter 2211 WUSB11 802.11b Adapter 2212 WUSB11v2.5 802.11b Adapter 2213 WUSB12v1.1 802.11b Adapter 2219 Instant Wireless Network Adapter 400b USB10TX 066d Entrega, Inc. 066e Acer Semiconductor America, Inc. 066f SigmaTel, Inc. 003b MP3 Player 003e MP3 Player 003f MP3 Player 0040 MP3 Player 0041 MP3 Player 0042 MP3 Player 0043 MP3 Player 004b A-Max PA11 MP3 Player 3400 STMP3400 D-Major MP3 Player 3410 STMP3410 D-Major MP3 Player 3500 Player Recovery Device 3780 STMP3780/i.MX23 SystemOnChip in RecoveryMode 4200 STIr4200 IrDA Bridge 4210 STIr4210 IrDA Bridge 8000 MSCN MP3 Player 8001 SigmaTel MSCN Audio Player 8004 MSCNMMC MP3 Player 8008 i-Bead 100 MP3 Player 8020 MP3 Player 8034 MP3 Player 8036 MP3 Player 8038 MP3 Player 8056 MP3 Player 8060 MP3 Player 8066 MP3 Player 807e MP3 Player 8092 MP3 Player 8096 MP3 Player 809a MP3 Player 80aa MP3 Player 80ac MP3 Player 80b8 MP3 Player 80ba MP3 Player 80bc MP3 Player 80bf MP3 Player 80c5 MP3 Player 80c8 MP3 Player 80ca MP3 Player 80cc MP3 Player 8104 MP3 Player 8106 MP3 Player 8108 MP3 Player 810a MP3 Player 810c MP3 Player 8122 MP3 Player 8124 MP3 Player 8126 MP3 Player 8128 MP3 Player 8134 MP3 Player 8136 MP3 Player 8138 MP3 Player 813a MP3 Player 813e MP3 Player 8140 MP3 Player 8142 MP3 Player 8144 MP3 Player 8146 MP3 Player 8148 MP3 Player 814c MP3 Player 8201 MP3 Player 8202 Jens of Sweden / I-BEAD 150M/150H MP3 player 8203 MP3 Player 8204 MP3 Player 8205 MP3 Player 8206 Digital MP3 Music Player 8207 MP3 Player 8208 MP3 Player 8209 MP3 Player 820a MP3 Player 820b MP3 Player 820c MP3 Player 820d MP3 Player 820e MP3 Player 820f MP3 Player 8210 MP3 Player 8211 MP3 Player 8212 MP3 Player 8213 MP3 Player 8214 MP3 Player 8215 MP3 Player 8216 MP3 Player 8217 MP3 Player 8218 MP3 Player 8219 MP3 Player 821a MP3 Player 821b MP3 Player 821c MP3 Player 821d MP3 Player 821e MP3 Player 821f MP3 Player 8220 MP3 Player 8221 MP3 Player 8222 MP3 Player 8223 MP3 Player 8224 MP3 Player 8225 MP3 Player 8226 MP3 Player 8227 MP3 Player 8228 MP3 Player 8229 MP3 Player 8230 MP3 Player 829c MP3 Player 82e0 MP3 Player 8320 TrekStor i.Beat fun 835d MP3 Player 83b5 Transcend T.sonic 530 MP3 Player 9000 MP3 Player 9001 MP3 Player 9002 MP3 Player 0670 Sequel Imaging 0001 Calibrator 0005 Enable Cable 0672 Labtec, Inc. 1041 LCS1040 Speaker System 5000 SpaceBall 4000 FLX 0673 HCL 5000 Keyboard 0674 Key Mouse Electronic Enterprise Co., Ltd 0675 DrayTek Corp. 0110 Vigor 128 ISDN TA 0530 Vigor530 IEEE 802.11G Adapter (ISL3880+NET2280) 0550 Vigor550 1688 miniVigor 128 ISDN TA [HFC-S] 6694 miniVigor 128 ISDN TA 0676 Teles AG 0677 Aiwa Co., Ltd 07d5 TM-ED1285(USB) 0fa1 TD-U8000 Tape Drive 0678 ACard Technology Corp. 067b Prolific Technology, Inc. 0000 PL2301 USB-USB Bridge 0001 PL2302 USB-USB Bridge 0307 Motorola Serial Adapter 04bb PL2303 Serial (IODATA USB-RSAQ2) 0600 IDE Bridge 0610 Onext EG210U MODEM 0611 AlDiga AL-11U Quad-band GSM/GPRS/EDGE modem 1231 Orico SATA External Hard Disk Drive Lay-Flat Docking Station with USB 3.0 & eSATA interfaces. 2303 PL2303 Serial Port / Mobile Phone Data Cable 2305 PL2305 Parallel Port 2306 Raylink Bridge Controller 2307 PL2307 USB-ATAPI4 Bridge 2313 FITEL PHS U Cable Adaptor 2315 Flash Disk Embedded Hub 2316 Flash Disk Security Device 2317 Mass Storage Device 23a3 ATEN Serial Bridge 2501 PL2501 USB-USB Bridge (USB 2.0) 2506 Kaser 8gB micro hard drive 2507 PL2507 Hi-speed USB to IDE bridge controller 2515 Flash Disk Embedded Hub 2517 Flash Disk Mass Storage Device 2528 Storage device (8gB thumb drive) 2571 LG Electronics GE24LU21 25a1 PL25A1 Host-Host Bridge 2773 PL2773 SATAII bridge controller 3400 Hi-Speed Flash Disk with TruePrint AES3400 3500 Hi-Speed Flash Disk with TruePrint AES3500 3507 PL3507 ATAPI6 Bridge aaa0 Prolific Pharos aaa2 PL2303 Serial Adapter (IODATA USB-RSAQ3) aaa3 PL2303x Serial Adapter 067c Efficient Networks, Inc. 1001 Siemens SpeedStream 100MBps Ethernet 1022 Siemens SpeedStream 1022 802.11b Adapter 1023 SpeedStream Wireless 4020 SpeedStream 4020 ATM/ADSL Installer 4031 Efficient ADSL Modem 4032 SpeedStream 4031 ATM/ADSL Installer 4033 SpeedStream 4031 ATM/ADSL Installer 4060 Alcatel Speedstream 4060 ADSL Modem 4062 Efficient Networks 4060 Loader 5667 Efficient Networks Virtual Bus for ADSL Modem c031 SpeedStream 4031 ATM/ADSL Installer c032 SpeedStream 4031 ATM/ADSL Installer c033 SpeedStream 4031 ATM/ADSL Installer c060 SpeedStream 4060 Miniport ATM/ADSL Adapter d667 Efficient Networks Virtual Bus for ADSL Modem e240 Speedstream Ethernet Adapter E240 e540 Speedstream Ethernet Adapter E240 067d Hohner Corp. 067e Intermec Technologies Corp. 0801 HID Keyboard, Barcode scanner 0803 VCP, Barcode scanner 0805 VCP + UVC, Barcode scanner 1001 Mobile Computer 067f Virata, Ltd 4552 DSL-200 ADSL Modem 6542 DSL Modem 6549 DSL Modem 7541 DSL Modem 0680 Realtek Semiconductor Corp., CPP Div. (Avance Logic) 0002 Arowana Optical Wheel Mouse MSOP-01 0681 Siemens Information and Communication Products 0001 Dect Base 0002 Gigaset 3075 Passive ISDN 0005 ID-Mouse with Fingerprint Reader 0012 I-Gate 802.11b Adapter 0014 KNX/LPB Bus Interface 001b WLL013 001d Hipath 1000 0022 Gigaset SX353 ISDN 0026 DECT Data - Gigaset M34 002b A-100-I ADSL Modem 002e ADSL Router_S-141 0034 GSM module MC35/ES75 USB Modem 3c06 54g USB Network Adapter 0682 Victor Company of Japan, Ltd 0684 Actiontec Electronics, Inc. 0685 ZD Incorporated 7000 HSDPA Modem 0686 Minolta Co., Ltd 2001 PagePro 4110W 2004 PagePro 1200W 2005 Magicolor 2300 DL 3001 PagePro 4100 3005 PagePro 1250E 3006 PagePro 1250W 3009 Magicolor 2300W 300b PagePro 1350W 300c PagePro 1300W 301b Develop D 1650iD 3023 Develop D 2050iD 302e Develop D 1650iD PCL 3034 Develop D 2050iD PCL 4001 Dimage 2300 4003 Dimage 2330 Zoom Camera 4004 Dimage Scan Elite II AF-2920 (2888) 4005 Minolta DiMAGE E201 Mass Storage Device 4006 Dimage 7 Camera 4007 Dimage S304 Camera 4008 Dimage 5 Camera 4009 Dimage X Camera 400a Dimage S404 Camera 400b Dimage 7i Camera 400c Dimage F100 Camera 400d Dimage Scan Dual III AF-2840 (2889) 400e Dimage Scan Elite 5400 (2890) 400f Dimage 7Hi Camera 4010 Dimage Xi Camera 4011 Dimage F300 Camera 4012 Dimage F200 Camera 4014 Dimage S414 Camera 4015 Dimage XT Camera [storage] 4016 Dimage XT Camera [remote mode] 4017 Dimage E223 4018 Dimage Z1 Camera 4019 Dimage A1 Camera [remote mode] 401a Dimage A1 Camera [storage] 401c Dimage X20 Camera 401e Dimage E323 Camera 068a Pertech, Inc. 068b Potrans International, Inc. 068e CH Products, Inc. 00d3 OEM 3 axis 5 button joystick 00e2 HFX OEM Joystick 00f0 Multi-Function Panel 00f1 Pro Throttle 00f2 Flight Sim Pedals 00f3 Fighterstick 00f4 Combatstick 00fa Ch Throttle Quadrant 00ff Flight Sim Yoke 0500 GameStick 3D 0501 CH Pro Pedals 0504 F-16 Combat Stick 068f Nihon KOHDEN c00d MEK-6500 0690 Golden Bridge Electech, Inc. 0693 Hagiwara Sys-Com Co., Ltd 0002 FlashGate SmartMedia Card Reader 0003 FlashGate CompactFlash Card Reader 0005 FlashGate 0006 SM PCCard R/W and SPD 0007 FlashGate ME (Authenticated) 000a SDCard/MMC Reader/Writer 0694 Lego Group 0001 Mindstorms Tower 0002 Mindstorms NXT 0005 Mindstorms EV3 0006 Mindstorms EV3 Firmware Update 0698 Chuntex (CTX) 1786 1300ex Monitor 2003 CTX M730V built in Camera 9999 VLxxxx Monitor+Hub 0699 Tektronix, Inc. 0347 AFG 3022B 0365 TDS 2004B 036a TDS 2024B 069a Askey Computer Corp. 0001 VC010 Webcam [pwc] 0303 Cable Modem 0311 ADSL Router Remote NDIS Device 0318 Remote NDIS Device 0319 220V Remote NDIS Device 0320 IEEE 802.11b Wireless LAN Card 0321 Dynalink WLL013 / Compex WLU11A 802.11b Adapter 0402 Scientific Atlanta WebSTAR 100 & 200 series Cable Modem 0811 BT Virtual Bus for Helium 0821 BT Voyager 1010 802.11b Adapter 4402 Scientific Atlanta WebSTAR 2000 series Cable Modem 4403 Scientific Atlanta WebSTAR 300 series Cable Modem 4501 Scientific-Atlanta WebSTAR 2000 series Cable Modem 069b Thomson, Inc. 0704 DCM245 Cable Modem 0705 THG540K Cable Modem 0709 Lyra PDP2424 070c MP3 Player 070d MP3 Player 070e MP3 Player 070f RCA Lyra RD1071 MP3 Player 0731 Lyra M200E256 0761 RCA H100A 0778 PEARL USB Device 2220 RCA Kazoo RD1000 MP3 Player 300a RCA Lyra MP3 Player 3012 MP3 Player 3013 MP3 Player 5557 RCA CDS6300 069d Hughes Network Systems (HNS) 0001 Satellite Receiver Device 0002 Satellite Device 069e Welcat Inc. 0005 Marx CryptoBox v1.2 069f Allied Data Technologies BV 0010 Tornado Speakerphone FaxModem 56.0 0011 Tornado Speakerphone FaxModem 56.0 1000 ADT VvBus for CopperJet 1004 CopperJet 821 RouterPlus 06a2 Topro Technology, Inc. 0033 USB Mouse 06a3 Saitek PLC 0006 Cyborg Gold Joystick 0109 P880 Pad 0160 ST290 Pro 0200 Racing Wheel 0201 Adrenalin Gamepad 0241 Xbox Adrenalin Gamepad 0255 X52 Flight Controller 040b P990 Dual Analog Pad 040c P2900 Wireless Pad 0422 ST90 Joystick 0460 ST290 Pro Flight Stick 0463 ST290 0464 Cyborg Evo 0471 Cyborg Graphite Stick 0501 R100 Sports Wheel 0502 ST200 Stick 0506 R220 Digital Wheel 051e Cyborg Digital II Stick 052d P750 Gamepad 053c X45 Flight Controller 053f X36F Flightstick 056c P2000 Tilt Pad 056f P2000 Tilt Pad 05d2 PC Dash 2 075c X52 Flight Controller 0762 Saitek X52 Pro Flight Control System 0763 Pro Flight Rudder Pedals 0764 Flight Pro Combat Rudder 0805 R440 Force Wheel 0b4e Pro Flight Backlit Information Panel 0bac Pro Flight Yoke 0c2d Pro Flight Quadrant 0d05 Pro Flight Radio Panel 0d06 Flight Pro Multi Panel 0d67 Pro Flight Switch Panel 1003 GM2 Action Pad 1009 Action Pad 100a SP550 Pad and Joystick Combo 100b SP550 Pad 1509 P3000 Wireless Pad 1589 P3000 Wireless Pad 2541 X45 Flight Controller 3509 P3000 RF GamePad 353e Cyborg Evo Wireless 3589 P3000 Wireless Pad 35be Cyborg Evo 5509 P3000 Wireless Pad 712c Pro Flight Yoke integrated hub 8000 Gamers' Keyboard 801e Cyborg 3D Digital Stick II 8020 Eclipse Keyboard 8021 Eclipse II Keyboard 802d P750 Pad 803f X36 Flight Controller 806f P2000 Tilt Pad 80c0 Pro Gamer Command Unit 80c1 Cyborg Command Pad Unit a2ae Pro Flight Instrument Panel a502 Gaming Mouse f518 P3200 Rumble Force Game Pad f51a P3600 ff04 R440 Force Wheel ff0c Cyborg Force Rumble Pad ff0d P2600 Rumble Force Pad ff12 Cyborg 3D Force Stick ff17 ST 330 Rumble Force Stick ff52 Cyborg 3D Rumble Force Joystick ffb5 Cyborg Evo Force Joystick 06a4 Xiamen Doowell Electron Co., Ltd 06a5 Divio 0000 Typhoon Webcam 100k [nw8000] d001 ProLink DS3303u Webcam d800 Chicony TwinkleCam d820 Wize Media 1000 06a7 MicroStore, Inc. 06a8 Topaz Systems, Inc. 0042 SignatureGem 1X5 Pad 0043 SignatureGem 1X5-HID Pad 06a9 Westell 0005 WireSpeed Dual Connect Modem 0006 WireSpeed Dual Connect Modem 000a WireSpeed Dual Connect Modem 000b WireSpeed Dual Connect Modem 000e A90-211WG-01 802.11g Adapter [Intersil ISL3887] 06aa Sysgration, Ltd 06ac Fujitsu Laboratories of America, Inc. 06ad Greatland Electronics Taiwan, Ltd 06ae Professional Multimedia Testing Centre 06af Harting, Inc. of North America 06b8 Pixela Corp. 06b9 Alcatel Telecom 0120 SpeedTouch 120g 802.11g Wireless Adapter [Intersil ISL3886] 0121 SpeedTouch 121g Wireless Dongle 2001 SPEED TOUCH Card 4061 SpeedTouch ISDN or ADSL Modem 4062 SpeedTouch ISDN or ADSL router a5a5 DynaMiTe Modem 06ba Smooth Cord & Connector Co., Ltd 06bb EDA, Inc. 06bc Oki Data Corp. 000b Okipage 14ex Printer 0027 Okipage 14e 00f7 OKI B4600 Mono Printer 015e OKIPOS 411/412 POS Printer 01c9 OKI B430 Mono Printer 01db MC860 Multifunction Printer 01dc MC860 Multifunction Printer 01dd MC860 Multifunction Printer 01de MC860 Multifunction Printer 01df CX2633 Multifunction Printer 01e0 ES8460 Multifunction Printer 020b OKI ES4140 Mono Printer 021f ES8460 Multifunction Printer 026f MC351 Multifunction Printer 0270 MC351 Multifunction Printer 0271 MC351 Multifunction Printer 0272 MC351 Multifunction Printer 0273 MC351 Multifunction Printer 0274 ES3451 Multifunction Printer 0275 MC351 Multifunction Printer 0276 MC351 Multifunction Printer 0277 MC351 Multifunction Printer 0278 MC351 Multifunction Printer 0279 MC361 Multifunction Printer 027a MC361 Multifunction Printer 027b MC361 Multifunction Printer 027c MC361 Multifunction Printer 027d MC361 Multifunction Printer 027e ES3461 Multifunction Printer 027f MC361 Multifunction Printer 0280 MC361 Multifunction Printer 0281 MC361 Multifunction Printer 0282 MC361 Multifunction Printer 0283 MC561 Multifunction Printer 0284 MC561 Multifunction Printer 0285 MC561 Multifunction Printer 0286 MC561 Multifunction Printer 0287 CX2731 Multifunction Printer 0288 ES5461 Multifunction Printer 0289 ES5461 Multifunction Printer 028a MC561 Multifunction Printer 028b MC561 Multifunction Printer 028c MC561 Multifunction Printer 02b4 MC861 Multifunction Printer 02b5 ES8461 Multifunction Printer 02b6 MC851 Multifunction Printer 02b7 ES8451 Multifunction Printer 02bb OKI PT390 POS Printer 02bd MB461 Multifunction Printer 02be MB471 Multifunction Printer 02bf MB491 Multifunction Printer 02ca ES4161 Multifunction Printer 02cb ES4191 Multifunction Printer 02d4 MPS4200mb Multifunction Printer 02e7 MC352 Multifunction Printer 02e8 MC362 Multifunction Printer 02e9 MC562 Multifunction Printer 02ea ES3452 Multifunction Printer 02eb ES5462 Multifunction Printer 02ee MB451 Multifunction Printer 02ef MB441 Multifunction Printer 02f7 MC862 Multifunction Printer 02f8 MC852 Multifunction Printer 02f9 ES8462 Multifunction Printer 02fe MB491+LP Multifunction Printer 02ff MB461+LP Multifunction Printer 0300 MPS4700mb Multifunction Printer 0323 MC332 Multifunction Printer 0324 MC342 Multifunction Printer 0325 MPS2731mc Multifunction Printer 034d MB472 Multifunction Printer 034e MB492 Multifunction Printer 034f MB562 Multifunction Printer 0350 ES4192 Multifunction Printer 0351 ES5162 Multifunction Printer 035b MC853 Multifunction Printer 035c MC863 Multifunction Printer 035d MC873 Multifunction Printer 035e MC883 Multifunction Printer 035f ES8453 Multifunction Printer 0360 ES8463 Multifunction Printer 0361 ES8473 Multifunction Printer 0362 ES8483 Multifunction Printer 0377 ES4172LP Multifunction Printer 0378 ES5162LP Multifunction Printer 0382 MC363 Multifunction Printer 0383 MC563 Multifunction Printer 0384 ES5463 Multifunction Printer 0394 MC573 Multifunction Printer 0395 ES5473 Multifunction Printer 0a91 B2500MFP (printer+scanner) 3801 B6100 Laser Printer 06bd AGFA-Gevaert NV 0001 SnapScan 1212U 0002 SnapScan 1236U 0100 SnapScan Touch 0101 SNAPSCAN ELITE 0200 ScanMaker 8700 02bf DUOSCAN f40 0400 CL30 0401 Mass Storage 0403 ePhoto CL18 Camera 0404 ePhoto CL20 Camera 2061 SnapScan 1212U (?) 208d Snapscan e40 208f SnapScan e50 2091 SnapScan e20 2093 SnapScan e10 2095 SnapScan e25 2097 SnapScan e26 20fd SnapScan e52 20ff SnapScan e42 06be AME Optimedia Technology Co., Ltd 0800 Optimedia Camera 1005 Dazzle DPVM! (1005) d001 P35U Camera Capture 06bf Leoco Corp. 06c2 Phidgets Inc. (formerly GLAB) 0030 PhidgetRFID 0031 RFID reader 0038 4-Motor PhidgetServo v3.0 0039 1-Motor PhidgetServo v3.0 003a 8-Motor PhidgetAvancedServo 0040 PhidgetInterface Kit 0-0-4 0044 PhidgetInterface Kit 0-16-16 0045 PhidgetInterface Kit 8-8-8 0048 PhidgetStepper (Under Development) 0049 PhidgetTextLED Ver 1.0 004a PhidgetLED Ver 1.0 004b PhidgetEncoder Ver 1.0 0051 PhidgetInterface Kit 0-5-7 (Custom) 0052 PhidgetTextLCD 0053 PhidgetInterfaceKit 0-8-8 0058 PhidgetMotorControl Ver 1.0 0070 PhidgetTemperatureSensor Ver 1.0 0071 PhidgetAccelerometer Ver 1.0 0072 PhidgetWeightSensor Ver 1.0 0073 PhidgetHumiditySensor 0074 PhidgetPHSensor 0075 PhidgetGyroscope 06c4 Bizlink International Corp. 06c5 Hagenuk, GmbH 06c6 Infowave Software, Inc. 06c8 SIIG, Inc. 06c9 Taxan (Europe), Ltd 0005 Monitor Control 0007 Monitor Control 0009 Monitor Control 06ca Newer Technology, Inc. 2003 uSCSI 06cb Synaptics, Inc. 0001 TouchPad 0002 Integrated TouchPad 0003 cPad 0005 Touchpad/FPS 0006 TouchScreen 0007 USB Styk 0008 WheelPad 0009 Composite TouchPad and TrackPoint 000e HID Device 0010 Wireless TouchPad 0013 DisplayPad 009a Metallica MIS Touch Fingerprint Reader 00a2 Metallica MOH Touch Fingerprint Reader 00b7 Fingerprint reader [HP G6] 00bd Prometheus MIS Touch Fingerprint Reader 00c7 TouchPad 00cb Fingerprint scanner 00fc Prometheus Fingerprint Reader 0ac3 Large Touch Screen 2970 touchpad 06cc Terayon Communication Systems 0101 Cable Modem 0102 Cable Modem 0103 Cable Modem 0104 Cable Modem 0304 Cable Modem 06cd Keyspan 0101 USA-28 PDA [no firmware] 0102 USA-28X PDA [no firmware] 0103 USA-19 PDA [no firmware] 0104 PDA [prerenum] 0105 USA-18X PDA [no firmware] 0106 USA-19W PDA [no firmware] 0107 USA-19 PDA 0108 USA-19W PDA 0109 USA-49W serial adapter [no firmware] 010a USA-49W serial adapter 010b USA-19Qi serial adapter [no firmware] 010c USA-19Qi serial adapter 010d USA-19Q serial Adapter (no firmware) 010e USA-19Q serial Adapter 010f USA-28 PDA 0110 USA-28Xb PDA 0111 USA-18 serial Adapter 0112 USA-18X PDA 0113 USA-28Xb PDA [no firmware] 0114 USA-28Xa PDA [no firmware] 0115 USA-28Xa PDA 0116 USA-18XA serial Adapter (no firmware) 0117 USA-18XA serial Adapter 0118 USA-19QW PDA [no firmware] 0119 USA-19QW PDA 011a USA-49Wlc serial adapter [no firmware] 011b MPR Serial Preloader (MPRQI) 011c MPR Serial (MPRQI) 011d MPR Serial Preloader (MPRQ) 011e MPR Serial (MPRQ) 0121 USA-19hs serial adapter 012a USA-49Wlc serial adapter 0201 UIA-10 Digital Media Remote [Cypress AN2131SC] 0202 UIA-11 Digital Media Remote 06ce Contec 8311 COM-1(USB)H 06cf SpheronVR AG 1010 PanoCam 10 1012 PanoCam 12/12X 06d0 LapLink, Inc. 0622 LapLink Gold USB-USB Bridge [net1080] 06d1 Daewoo Electronics Co., Ltd 06d3 Mitsubishi Electric Corp. 0284 FX-USB-AW/-BD RS482 Converters 0380 CP8000D Port 0381 CP770D Port 0385 CP900D Port 0387 CP980D Port 038b CP3020D Port 038c CP900DW(ID) Port 0393 CP9500D/DW Port 0394 CP9000D/DW Port 0395 CP9000DW 0398 P93D 039e CP9500DW-S 03a1 CP9550D/DW Port 03a5 CP9550DW-S 03a9 CP-9600DW 03aa CP3020DA 03ab CP30D/DW 03ad CP-9800D/DW 03ae CP-9800DW-S 0f10 Hori/Namco FlightStick 2 3b10 P95D 3b20 CP9820DW Series 3b21 CP-9810D/DW 3b2f LS9820A 3b30 CP-D70DW / CP-D707DW 3b31 CP-K60DW-S 3b36 CP-D80DW 3b50 CP-W5000DW 3b60 CP-D90DW 3b80 CP-M1 06d4 Cisco Systems 06d5 Toshiba 4000 Japanese Keyboard 06d6 Aashima Technology B.V. 0025 Gamepad 0026 Predator TH 400 Gamepad 002d Trust PowerC@m 350FT 002e Trust PowerC@m 350FS 0030 Trust 710 LCD POWERC@M ZOOM - MSD 0031 Trust 610/710 LCD POWERC@M ZOOM 003a Trust PowerC@m 770Z (mass storage mode) 003b Trust PowerC@m 770Z (webcam mode) 003c Trust 910z PowerC@m 003f Trust 735S POWERC@M ZOOM, WDM DSC Bulk Driver 0050 Trust 738AV LCD PV Digital Camera 0062 TRUST 782AV LCD P. V. Video Capture 0066 TRUST Digital PCTV and Movie Editor 0067 Trust 350FS POWERC@M FLASH 006b TRUST AUDIO VIDEO EDITOR 06d7 Network Computing Devices (NCD) 06d8 Technical Marketing Research, Inc. 06da Phoenixtec Power Co., Ltd 0002 UPS 0003 1300VA UPS 06db Paradyne 06dc Foxlink Image Technology Co., Ltd 0012 Scan 1200c Scanner 0014 Prolink Winscan Pro 2448U 06de Heisei Electronics Co., Ltd 06e0 Multi-Tech Systems, Inc. 0319 MT9234ZBA-USB MultiModem ZBA f101 MT5634ZBA-USB MultiModemUSB (old firmware) f103 MT5634MU MultiMobileUSB f104 MT5634ZBA-USB MultiModemUSB (new firmware) f107 MT5634ZBA-USB-V92 MultiModemUSB f120 MT9234ZBA-USB-CDC-ACM-XR MultiModem ZBA CDC-ACM-XR 06e1 ADS Technologies, Inc. 0008 UBS-10BT Ethernet [klsi] 0009 UBS-10BT Ethernet 0709 go7007 MPEG Capture Device [DVD Xpress DX2] 0833 Mass Storage Device a155 FM Radio Receiver/Instant FM Music (RDX-155-EF) a160 Instant Video-To-Go RDX-160 (no firmware) a161 Instant Video-To-Go RDX-160 a190 Instand VCD Capture a191 Instant VideoXpress a337 Mini DigitalTV a701 DVD Xpress a708 saa7114H video input card (Instant VideoMPX) b337 Mini DigitalTV b701 DVD Xpress B 06e4 Alcatel Microelectronics 06e6 Tiger Jet Network, Inc. 0200 Internet Phone 0201 Internet Phone 0202 Composite Device 0203 Internet Phone 0210 Composite Device 0211 Internet Phone 0212 Internet Phone 031c Internet Phone 031d Internet Phone 031e Internet Phone 3200 Composite Device 3201 Internet Phone 3202 Composite Device 3203 Composite Device 7200 Composite Device 7210 Composite Device 7250 Composite Device 825c Internet Phone 831c Internet Phone 831d Composite Device 831e Composite Device b200 Composite Device b201 Composite Device b202 Internet Phone b210 Internet Phone b211 Composite Device b212 Composite Device b250 Composite Device b251 Internet Phone b252 Internet Phone c200 Internet Phone c201 Internet Phone c202 Composite Device c203 Internet Phone c210 Personal PhoneGateway c211 Personal PhoneGateway c212 Personal PhoneGateway c213 PPG Device c25c Composite Device c290 PPG Device c291 PPG Device c292 PPG Device c293 Personal PhoneGateway c31c Composite Device c39c Personal PhoneGateway c39d PPG Device c39e PPG Device c39f PPG Device c700 Internet Phone c701 Internet Phone c702 Composite Device c703 Internet Phone c710 VoIP Combo Device c711 VoIP Combo c712 VoIP Combo Device c713 VoIP Combo Device cf00 Composite Device cf01 Internet Phone cf02 Internet Phone cf03 Composite Device d210 Personal PhoneGateway d211 PPG Device d212 PPG Device d213 Personal PhoneGateway d700 Composite Device d701 Composite Device d702 Internet Phone d703 Composite Device d710 VoIP Combo d711 VoIP Combo Device d712 VoIP Combo d713 VoIP Combo df00 Composite Device df01 Composite Device df02 Internet Phone df03 Internet Phone f200 Internet Phone f201 Internet Phone f202 Composite Device f203 Composite Device f210 Internet Phone f250 Composite Device f252 Internet Phone f310 Internet Phone f350 Composite Device 06ea Sirius Technologies 0001 NetCom Roadster II 56k 0002 Roadster II 56k 06eb PC Expert Tech. Co., Ltd 06ef I.A.C. Geometrische Ingenieurs B.V. 06f0 T.N.C Industrial Co., Ltd de01 DualCam Video Camera de02 DualCam Still Camera 06f1 Opcode Systems, Inc. a011 SonicPort a021 SonicPort Optical 06f2 Emine Technology Co. 0011 KVM Switch Keyboard 06f6 Wintrend Technology Co., Ltd 06f7 Wailly Technology Ltd 0003 USB->Din 4 Adaptor 06f8 Guillemot Corp. 3002 Hercules Blog Webcam 3004 Hercules Classic Silver 3005 Hercules Dualpix Exchange 3007 Hercules Dualpix Chat and Show 3020 Hercules Webcam EC300 a300 Dual Analog Leader GamePad b000 Hercules DJ Console b105 DJ Control MP3 e2 [Hercules DJ Control MP3 e2] b121 Hercules P32 DJ c000 Hercules Muse Pocket d002 Hercules DJ Console e000 HWGUSB2-54 WLAN e010 HWGUSB2-54-LB e020 HWGUSB2-54V2-AP e031 Hercules HWNUm-300 Wireless N mini [Realtek RTL8191SU] e032 HWGUm-54 [Hercules Wireless G Ultra Mini Key] e033 Hercules HWNUp-150 802.11n Wireless N Pico [Realtek RTL8188CUS] 06f9 ASYST electronic d.o.o. 06fa HSD S.r.L 06fc Motorola Semiconductor Products Sector 06fd Boston Acoustics 0101 Audio Device 0102 Audio Device 0201 2-piece Audio Device 06fe Gallant Computer, Inc. 0701 Supercomal Wire & Cable SDN. BHD. 0703 Bvtech Industry, Inc. 0705 NKK Corp. 0706 Ariel Corp. 0707 Standard Microsystems Corp. 0100 2202 Ethernet [klsi] 0200 2202 Ethernet [pegasus] 0201 EZ Connect USB Ethernet ee04 SMCWUSB32 802.11b Wireless LAN Card ee06 SMC2862W-G v1 EZ Connect 802.11g Adapter [Intersil ISL3886] ee13 SMC2862W-G v2 EZ Connect 802.11g Adapter [Intersil ISL3887] 0708 Putercom Co., Ltd 047e USB-1284 BRIDGE 0709 Silicon Systems, Ltd (SSL) 070a Oki Electric Industry Co., Ltd 4002 Bluetooth Device 4003 Bluetooth Device 070d Comoss Electronic Co., Ltd 070e Excel Cell Electronic Co., Ltd 0710 Connect Tech, Inc. 0001 WhiteHeat (fake ID) 8001 WhiteHeat 0711 Magic Control Technology Corp. 0100 Hub 0180 IRXpress Infrared Device 0181 IRXpress Infrared Device 0200 BAY-3U1S1P Serial Port 0210 MCT1S Serial Port 0230 MCT-232 Serial Port 0231 PS/2 Mouse Port 0232 Serial On Port 0240 PS/2 to USB Converter 0260 PS/2 Keyboard and Mouse 0300 BAY-3U1S1P Parallel Port 0302 Parallel Port 0900 SVGA Adapter 5001 Trigger UV-002BD[Startech USBVGAE] 5100 Magic Control Technology Corp. (USB2VGA dongle) 0713 Interval Research Corp. 0714 NewMotion, Inc. 0003 ADB converter 0717 ZNK Corp. 0718 Imation Corp. 0002 SuperDisk 120MB 0003 SuperDisk 120MB (Authenticated) 0060 Flash Drive 0061 Flash Drive 0062 Flash Drive 0063 Swivel Flash Drive 0064 Flash Drive 0065 Flash Drive 0066 Flash Drive 0067 Flash Drive 0068 Flash Drive 0084 Flash Drive Mini 043c Flash drive 16GB [Nano Pro] 0582 Revo Flash Drive 0622 TDK Trans-It 4GB 0624 TDK Trans-It 16GB 1120 RDX External dock (redbud) 4006 8x Slim DVD Multi-Format Recorder External d000 Disc Stakka CD/DVD Manager 0719 Tremon Enterprises Co., Ltd 071b Domain Technologies, Inc. 0002 DTI-56362-USB Digital Interface Unit 0101 Audio4-USB DSP Data Acquisition Unit 0184 Archos 2 8GB EM184RB 0201 Audio4-5410 DSP Data Acquisition Unit 0301 SB-USB JTAG Emulator 3203 Rockchip Media Player 32bb Music Mediatouch 071c Xionics Document Technologies, Inc. 071d Eicon Networks Corp. 1000 Diva 2.01 S/T [PSB2115F] 1003 Diva ISDN 2.0 1005 Diva ISDN 4.0 [HFC-S] 2000 Teledat Surf 071e Ariston Technologies 0720 Keyence Corp. 8001 LJ-V7001 0723 Centillium Communications Corp. 0002 Palladia 300/400 Adsl Modem 0726 Vanguard International Semiconductor-America 0729 Amitm 1000 USC-1000 Serial Port 072e Sunix Co., Ltd 072f Advanced Card Systems, Ltd 0001 AC1030-based SmartCard Reader 0008 ACR 80 Smart Card Reader 0100 AET65 0101 AET65 0102 AET62 0103 AET62 0901 ACR1281U-C4 (BSI) 1000 PLDT Drive 1001 PLDT Drive 2011 ACR88U 2100 ACR128U 2200 ACR122U 220a ACR1281U-C5 (BSI) 220c ACR1283 Bootloader 220f ACR1281U-C2 (qPBOC) 2211 ACR1261 1S Dual Reader 2214 ACR1222 1SAM PICC Reader 2215 ACR1281 2S CL Reader 221a ACR1251U-A1 221b ACR1251U-C 2224 ACR1281 1S Dual Reader 222b ACR1222U-C8 222c ACR1283L-D2 222d [OEM Reader] 222e ACR123U 223f ACR1255U-J1 2242 ACR1251 1S Dual Reader 8002 AET63 BioTRUSTKey 8003 ACR120 8103 ACR120 8201 APG8201 8900 ACR89U-A1 8901 ACR89U-A2 8902 ACR89U-A3 9000 ACR38 AC1038-based Smart Card Reader 9006 CryptoMate 90cc ACR38 SmartCard Reader 90ce [OEM Reader] 90cf ACR38 SAM Smart Card Reader 90d0 PertoSmart EMV - Card Reader 90d2 ACR83U 90d8 ACR3801 90db CryptoMate64 b000 ACR3901U b100 ACR39U b101 ACR39K b102 ACR39T b103 ACR39F b104 ACR39U-SAM b106 ACOS5T2 b200 ACOS5T1 b301 ACR32-A1 0731 Susteen, Inc. 0528 SonyEricsson DCU-11 Cable 0732 Goldfull Electronics & Telecommunications Corp. 0733 ViewQuest Technologies, Inc. 0101 Digital Video Camera 0110 VQ110 Video Camera 0401 CS330 Webcam 0402 M-318B Webcam 0430 Intel Pro Share Webcam 0630 VQ630 Dual Mode Digital Camera(Bulk) 0631 Hercules Dualpix 0780 Smart Cam Deluxe(composite) 1310 Epsilon 1.3/Jenoptik JD C1.3/UMAX AstraPix 470 (mass storage mode) 1311 Epsilon 1.3/Jenoptik JD C1.3/UMAX AstraPix 470 (PC Cam mode) 1314 Mercury 2.1MEG Deluxe Classic Cam 2211 Jenoptik jdc 21 LCD Camera 2220 Mercury Digital Pro 3.1p VQ2220 (mass storage mode) 2221 Mercury Digital Pro 3.1p VQ2220 (webcam mode) 3261 Concord 3045 spca536a Camera 3281 Cyberpix S550V 0734 Lasat Communications A/S 0001 560V Modem 0002 Lasat 560V Modem 043a DVS Audio 043b 3DeMon USB Capture 0735 Asuscom Network 2100 ISDN Adapter 2101 ISDN Adapter 6694 ISDNlink 128K c541 ISDN TA 280 0736 Lorom Industrial Co., Ltd 0738 Mad Catz, Inc. 1302 F.L.Y. 5 Flight Stick 2215 X-55 Rhino Stick 2218 Saitek Side Panel Control Deck 2237 V.1 Stick 4506 Wireless Controller 4507 XBox Device 4516 Control Pad 4520 Control Pad Pro 4522 LumiCON 4526 Control Pad Pro 4530 Universal MC2 Racing Wheel and Pedals 4536 MicroCON 4540 Beat Pad 4556 Lynx Wireless Controller 4566 XBox Device 4576 XBox Device 4586 MicroCON Wireless Controller 4588 Blaster 45ff Beat Pad 4716 Wired Xbox 360 Controller 4718 Street Fighter IV FightStick SE for Xbox 360 4726 Xbox 360 Controller 4728 Street Fighter IV FightPad for Xbox 360 4730 MC2 Racing Wheel for Xbox 360 4736 MicroCON for Xbox 360 4738 Street Fighter IV Wired Controller for Xbox 360 4740 Beat Pad for Xbox 360 4743 Beat Pad Pro 4758 Arcade Game Stick 4a01 FightStick TE 2 for Xbox One 6040 Beat Pad Pro 8818 Street Fighter IV Arcade FightStick (PS3) 9871 Portable Drum Kit a109 S.T.R.I.K.E.7 Keyboard a215 X-55 Rhino Throttle b726 Modern Warfare 2 Controller for Xbox 360 b738 Marvel VS Capcom 2 TE FightStick for Xbox 360 beef Joytech Neo SE Advanced Gamepad cb02 Saitek Cyborg Rumble Pad cb03 Saitek P3200 Rumble Pad cb29 Saitek Aviator Stick AV8R02 f738 Super Street Fighter IV FightStick TE S for Xbox 360 073a Chaplet Systems, Inc. 2230 infrared dongle for remote 073b Suncom Technologies 073c Industrial Electronic Engineers, Inc. 0305 Pole Display (PC305-3415 2 x 20 Line Display) 0322 Pole Display (PC322-3415 2 x 20 Line Display) 0324 Pole Display (LB324-USB 4 x 20 Line Display) 0330 Pole Display (P330-3415 2 x 20 Line Display) 0424 Pole Display (SP324-4415 4 x 20 Line Display) 0450 Pole Display (L450-USB Graphic Line Display) 0505 Pole Display (SPC505-3415 2 x 20 Line Display) 0522 Pole Display (SPC522-3415 2 x 20 Line Display) 0624 Pole Display (SP324-3415 4 x 20 Line Display) 073d Eutron S.p.a. 0000 SmartKey 0005 Crypto Token 0007 CryptoIdentity CCID 0025 SmartKey 3 0c00 Pocket Reader 0d00 StarSign Bio Token 3.0 EU 073e NEC, Inc. 0301 Game Pad 0742 Stollmann 2008 ISDN TA [HFC-S] 2009 ISDN TA [HFC-S] 200a ISDN TA [HFC-S] 0745 Syntech Information Co., Ltd 0746 Onkyo Corp. 4700 Integra MZA-4.7 5500 SE-U55 Audio Device 0747 Labway Corp. 0748 Strong Man Enterprise Co., Ltd 0749 EVer Electronics Corp. 074a Ming Fortune Industry Co., Ltd 074b Polestar Tech. Corp. 074c C-C-C Group PLC 074d Micronas GmbH 3553 Composite USB-Device 3554 Composite USB-Device 3556 Composite USB-Device 074e Digital Stream Corp. 0001 PS/2 Adapter 0002 PS/2 Adapter 0755 Aureal Semiconductor 0757 Network Technologies, Inc. 0a00 SUN Adapter 0758 Carl Zeiss Microscopy GmbH 075b Sophisticated Circuits, Inc. 0001 Kick-off! Watchdog 0763 M-Audio 0115 O2 / KeyRig 25 0117 Trigger Finger 0119 MidAir 0150 M-Audio Uno 0160 M-Audio 1x1 0192 M-Audio Keystation 88es 0193 ProKeys 88 0194 ProKeys 88sx 0195 Oxygen 8 v2 0196 Oxygen 49 0197 Oxygen 61 0198 Axiom 25 0199 Axiom 49 019a Axiom 61 019b KeyRig 49 019c KeyStudio 1001 MidiSport 2x2 1002 MidiSport 2x2 1003 MidiSport 2x2 1010 MidiSport 1x1 1011 MidiSport 1x1 1014 M-Audio Keystation Loader 1015 M-Audio Keystation 1020 Midisport 4x4 1021 MidiSport 4x4 1030 M-Audio MIDISPORT 8x8 1031 MidiSport 8x8/s Loader 1033 MidiSport 8x8/s 1040 M-Audio MidiSport 2x4 Loader 1041 M-Audio MidiSport 2x4 1110 MidiSport 1x1 2001 M Audio Quattro 2002 M Audio Duo 2003 M Audio AudioPhile 2004 M-Audio MobilePre 2006 M-Audio Transit 2007 M-Audio Sonica Theater 2008 M-Audio Ozone 200d M-Audio OmniStudio 200f M-Audio MobilePre 2010 M-Audio Fast Track 2012 M-Audio Fast Track Pro 2013 M-Audio JamLab 2015 M-Audio RunTime DFU 2016 M-Audio RunTime DFU 2019 M-Audio Ozone Academic 201a M-Audio Micro 201b M-Audio RunTime DFU 201d M-Audio Producer 2024 M-Audio Fast Track MKII 202e Axiom 61 2080 M-Audio Fast Track Ultra 2081 M-Audio RunTime DFU / Fast Track Ultra 8R 2803 M-Audio Audiophile DFU 2804 M-Audio MobilePre DFU 2806 M-Audio Transit DFU 2815 M-Audio DFU 2816 M-Audio DFU 281b M-Audio DFU 2880 M-Audio DFU 2881 M-Audio DFU 0764 Cyber Power System, Inc. 0005 Cyber Power UPS 0501 CP1500 AVR UPS 0601 PR1500LCDRT2U UPS 0765 X-Rite, Inc. 5001 Huey PRO Colorimeter 5010 X-Rite Pantone Color Sensor 5020 i1 Display Pro 6003 ColorMunki Smile 6008 i1Studio d094 X-Rite DTP94 [Quato Silver Haze Pro] 0766 Jess-Link Products Co., Ltd 0017 Packard Bell Carbon 001b Packard Bell Go 0204 TopSpeed Cyberlink Remote Control 0767 Tokheim Corp. 0768 Camtel Technology Corp. 0006 Camtel Technology USB TV Genie Pro FM Model TVB330 0023 eHome Infrared Receiver 0769 Surecom Technology Corp. 11f2 EP-9001-g 802.11g 54M WLAN Adapter 11f3 RT2570 11f7 802.11g 54M WLAN Adapter 31f3 RT2573 076a Smart Technology Enablers, Inc. 076b OmniKey AG 0596 CardMan 2020 1021 CardMan 1021 1221 CardMan 1221 1784 CardMan 6020 3021 CardMan 3021 / 3121 3022 CardMan 3121 (HID Technologies) 3031 3x21 Smart Card Reader 3610 CardMan 3620 3621 CardMan 3621 3821 CardMan 3821 4321 CardMan 4321 5022 CardMan 5022 5121 CardMan 5121 5125 CardMan 5125 5321 CardMan 5321 5340 CardMan 5021 CL 6622 CardMan 6121 a011 CCID Smart Card Reader Keyboard a021 CCID Smart Card Reader a022 CardMan Smart@Link c000 CardMan 3x21 CS c001 CardMan 5121 CS 076c Partner Tech 0204 CD7220 Communications Port 0302 RP-600 076d Denso Corp. 076e Kuan Tech Enterprise Co., Ltd 076f Jhen Vei Electronic Co., Ltd 0770 Welch Allyn, Inc - Medical Division 0771 Observator Instruments BV 4455 OMC45III ae0f OMC45III 0772 Your data Our Care 0774 AmTRAN Technology Co., Ltd 0775 Longshine Electronics Corp. 0776 Inalways Corp. 0777 Comda Enterprise Corp. 0778 Volex, Inc. 0779 ON Semiconductor (formerly Fairchild) 0133 FUSB307B 0134 FUSB308B 077a Sankyo Seiki Mfg. Co., Ltd 077b Linksys 08be BEFCMU10 v4 Cable Modem 2219 WUSB11 V2.6 802.11b Adapter 2226 USB200M 100baseTX Adapter 2227 Network Everywhere NWU11B 077c Forward Electronics Co., Ltd 0005 NEC Keyboard 077d Griffin Technology 0223 IMic Audio In/Out 0405 iMate, ADB Adapter 0410 PowerMate 041a PowerWave 04aa SoundKnob 07af iMic 1016 AirClick 627a Radio SHARK 077e Softing AG 008a NetLink Compact MPI/Profibus adapter 0160 EDICblue 0220 VAS5054A 077f Well Excellent & Most Corp. 0780 Sagem Monetel GmbH 1202 ORGA 900 Smart Card Terminal Virtual Com Port 1302 ORGA 6000 Smart Card Terminal Virtual Com Port 1303 ORGA 6000 Smart Card Terminal USB RNDIS df55 ORGA 900/6000 Smart Card Terminal DFU 0781 SanDisk Corp. 0001 SDDR-05a ImageMate CompactFlash Reader 0002 SDDR-31 ImageMate II CompactFlash Reader 0005 SDDR-05b (CF II) ImageMate CompactFlash Reader 0100 ImageMate SDDR-12 0200 SDDR-09 (SSFDC) ImageMate SmartMedia Reader [eusb] 0400 SecureMate SD/MMC Reader 0621 SDDR-86 Imagemate 6-in-1 Reader 0720 Sansa C200 series in recovery mode 0729 Sansa E200 series in recovery mode 0810 SDDR-75 ImageMate CF-SM Reader 0830 ImageMate CF/MMC/SD Reader 1234 Cruzer Mini Flash Drive 5150 SDCZ2 Cruzer Mini Flash Drive (thin) 5151 Cruzer Micro Flash Drive 5153 Cruzer Flash Drive 5204 Cruzer Crossfire 5402 U3 Cruzer Micro 5406 Cruzer Micro U3 5408 Cruzer Titanium U3 540e Cruzer Contour Flash Drive 5530 Cruzer 5566 Cruzer Slice 5567 Cruzer Blade 556b Cruzer Edge 556c Ultra 556d Memory Vault 5571 Cruzer Fit 5572 Cruzer Switch 5575 Cruzer Glide 5576 Cruzer Facet 5577 Cruzer Pop (8GB) 557d Cruzer Force 5580 SDCZ80 Flash Drive 5581 Ultra 5583 Ultra Fit 5588 Extreme Pro 5589 SD8SB8U512G[Extreme 500] 558c Extreme Portable SSD 5590 Ultra Dual 5591 Ultra Flair 5e10 Encrypted 6100 Ultra II SD Plus 2GB 6500 uSSD 5000 7100 Cruzer Mini 7101 Pen Flash 7102 Cruzer Mini 7103 Cruzer Mini 7104 Cruzer Micro Mini 256MB Flash Drive 7105 Cruzer Mini 7106 Cruzer Mini 7112 Cruzer Micro 128MB Flash Drive 7113 Cruzer Micro 256MB Flash Drive 7114 Cruzer Mini 7115 Cruzer Mini 7301 Sansa e100 series (mtp) 7302 Sansa e100 series (msc) 7400 Sansa M200 series (mtp) 7401 Sansa M200 series (msc) 7420 Sansa E200 series (mtp) 7421 Sansa E200 Series (msc) 7422 Sansa E200 series v2 (mtp) 7423 Sansa E200 series v2 (msc) 7430 Sansa M200 series 7431 Sansa M200 series V4 (msc) 7432 Sansa Clip (mtp) 7433 Sansa Clip (msc) 7434 Sansa Clip V2 (mtp) 7435 Sansa Clip V2 (msc) 7450 Sansa C250 7451 Sansa C240 7460 Sansa Express 7480 Sansa Connect 7481 Sansa Connect (in recovery mode) 74b0 Sansa View (msc) 74b1 Sansa View (mtp) 74c0 Sansa Fuze (mtp) 74c1 Sansa Fuze (msc) 74c2 Sansa Fuze V2 (mtp) 74c3 Sansa Fuze V2 (msc) 74d0 Sansa Clip+ (mtp) 74d1 Sansa Clip+ (msc) 74e5 Sansa Clip Zip 8181 Pen Flash 8183 Hi-Speed Mass Storage Device 8185 SDCZ2 Cruzer Mini Flash Drive (older, thick) 8888 Card Reader 8889 SDDR-88 Imagemate 8-in-1 Reader 8919 Card Reader 8989 ImageMate 12-in-1 Reader 9191 ImageMate CF 9219 Card Reader 9292 ImageMate CF Reader/Writer 9393 ImageMate SD-MMC 9595 ImageMate xD-SM 9797 ImageMate MS-PRO 9919 Card Reader 9999 SDDR-99 5-in-1 Reader a7c1 Storage device (SD card reader) a7e8 SDDR-113 MicroMate SDHC Reader b2b3 SDDR-103 MobileMate SD+ Reader b2b5 SDDR-104 MobileMate SD+ Reader b4b5 SDDR-89 V4 ImageMate 12-in-1 Reader b6b7 SDDR-99 V4 ImageMate 5-in-1 Reader b6ba CF SDDR-289 c7cf SDDR-299 [Extreme PRO CFast 2.0 Reader] cfc9 SDDR-489 ImageMate Pro Reader 0782 Trackerball 0783 C3PO 0003 LTC31 SmartCard Reader 0006 LTC31v2 0009 KBR36 0010 LTC32 0784 Vivitar, Inc. 0100 Vivicam 2655 1310 Vivicam 3305 1688 Vivicam 3665 1689 Gateway DC-M42/Labtec DC-505/Vivitar Vivicam 3705 2620 AOL Photocam Plus 2888 Polaroid DC700 3330 Nytec ND-3200 Camera 4300 Traveler D1 5260 Werlisa Sport PX 100 / JVC GC-A33 Camera 5300 Pretec dc530 0785 NTT-ME 0001 MN128mini-V ISDN TA 0003 MN128mini-J ISDN TA 0789 Logitec Corp. 0026 LHD Device 0033 DVD Multi-plus unit LDR-H443SU2 0063 LDR Device 0064 LDR-R Device 00b3 DVD Multi-plus unit LDR-H443U2 00cc LHD Device 0105 LAN-TX/U1H2 10/100 Ethernet Adapter [pegasus II] 010c Realtek RTL8187 Wireless 802.11g 54Mbps Network Adapter 0160 LAN-GTJ/U2A 0162 LAN-WN22/U2 Wireless LAN Adapter 0163 LAN-WN12/U2 Wireless LAN Adapter 0164 LAN-W150/U2M Wireless LAN Adapter 0166 LAN-W300N/U2 Wireless LAN Adapter 0168 LAN-W150N/U2 Wireless LAN Adapter 0170 LAN-W300AN/U2 Wireless LAN Adapter 0296 LGB-4BNHUC HDD Bay 0578 JMS583 Gen 2 - PCIe Gen3x2 Bridge 078b Happ Controls, Inc. 0010 Driving UGCI 0020 Flying UGCI 0030 Fighting UGCI 078c GTCO/CalComp 0090 Tablet Adapter 0100 Tablet Adapter 0200 Tablet Adapter 0300 Tablet Adapter 0400 Digitizer (Whiteboard) 078e Brincom, Inc. 0790 Pro-Image Manufacturing Co., Ltd 0791 Copartner Wire and Cable Mfg. Corp. 0792 Axis Communications AB 0793 Wha Yu Industrial Co., Ltd 0794 ABL Electronics Corp. 0795 RealChip, Inc. 0796 Certicom Corp. 0797 Grandtech Semiconductor Corp. 6801 Flatbed Scanner 6802 InkJet Color Printer 8001 SmartCam 801a Typhoon StyloCam 801c Meade Binoculars/Camera 8901 ScanHex SX-35a 8909 ScanHex SX-35b 8911 ScanHex SX-35c 0798 Optelec 0001 Braille Voyager 0640 BC640 0680 BC680 0799 Altera 7651 Programming Unit 079b Sagem 0024 MSO300/MSO301 Fingerprint Sensor 0026 MSO350/MSO351 Fingerprint Sensor & SmartCard Reader 0027 USB-Serial Controller 002f Mobile 0030 Mobile Communication Device 0042 Mobile 0047 CBM/MSO1300 Fingerprint Sensor 004a XG-760A 802.11bg 004b Wi-Fi 11g adapter 0052 MSO1350 Fingerprint Sensor & SmartCard Reader 0056 Agfa AP1100 Photo Printer 005d Mobile Mass Storage 005f Laser Pro LL [MFPrinter] 0062 XG-76NA / XG-760N 802.11b/g Wireless adapter 0078 Laser Pro Monochrome MFP 079d Alfadata Computer Corp. 0201 GamePort Adapter 07a1 Digicom S.p.A. d952 Palladio USB V.92 Modem 07a2 National Technical Systems 07a3 Onnto Corp. 07a4 Be, Inc. 07a6 ADMtek, Inc. 07c2 AN986A Ethernet 0986 AN986 Pegasus Ethernet 8266 Infineon WildCard-USB Wireless LAN Adapter 8511 ADM8511 Pegasus II Ethernet 8513 ADM8513 Pegasus II Ethernet 8515 ADM8515 Pegasus II Ethernet 07aa Corega K.K. 0001 Ether USB-T Ethernet [klsi] 0004 FEther USB-TX Ethernet [pegasus] 000c WirelessLAN USB-11 000d FEther USB-TXS 0011 Wireless LAN USB-11 mini 0012 Stick-11 802.11b Adapter 0017 FEther USB2-TX 0018 Wireless LAN USB-11 mini 2 001a ULUSB-11 Key 001c CG-WLUSB2GT 802.11g Wireless Adapter [Intersil ISL3880] 0020 CG-WLUSB2GTST 802.11g Wireless Adapter [Intersil ISL3887] 002e CG-WLUSB2GPX [Ralink RT2571W] 002f CG-WLUSB2GNL 0031 CG-WLUSB2GS 802.11bg [Atheros AR5523] 003c CG-WLUSB2GNL 003f CG-WLUSB300AGN 0041 CG-WLUSB300GNS 0042 CG-WLUSB300GNM 0043 CG-WLUSB300N rev A2 [Realtek RTL8192U] 0047 CG-WLUSBNM 0051 CG-WLUSB300NM 7613 Stick-11 V2 802.11b Adapter 9601 FEther USB-TXC 07ab Freecom Technologies fc01 IDE bridge fc02 Cable II USB-2 fc03 USB2-IDE IDE bridge fc77 Quattro 3.0 fcd6 Freecom HD Classic fcf6 DataBar fcf8 Freecom Classic SL Network Drive fcfe Hard Drive 80GB 07af Microtech 0004 SCSI-DB25 SCSI Bridge [shuttle] 0005 SCSI-HD50 SCSI Bridge [shuttle] 0006 CameraMate SmartMedia and CompactFlash Card Reader [eusb/shuttle] fc01 Freecom USB-IDE 07b0 Trust Technologies 0001 ISDN TA 0002 ISDN TA128 Plus 0003 ISDN TA128 Deluxe 0005 ISDN TA128 SE 0006 ISDN TA 128 [HFC-S] 0007 ISDN TA [HFC-S] 0008 ISDN TA 07b1 IMP, Inc. 07b2 Motorola BCS, Inc. 0100 SURFboard Voice over IP Cable Modem 0900 SURFboard Gateway 0950 SURFboard SBG950 Gateway 1000 SURFboard SBG1000 Gateway 4100 SurfBoard SB4100 Cable Modem 4200 SurfBoard SB4200 Cable Modem 4210 SurfBoard 4210 Cable Modem 4220 SURFboard SB4220 Cable Modem 4500 CG4500 Communications Gateway 450b CG4501 Communications Gateway 450e CG4500E Communications Gateway 5100 SurfBoard SB5100 Cable Modem 5101 SurfBoard SB5101 Cable Modem 5120 SurfBoard SB5120 Cable Modem (RNDIS) 5121 Surfboard 5121 Cable Modem 6002 MTR7000 Cable Tuning Adapter 7030 WU830G 802.11bg Wireless Adapter [Envara WiND512] 07b3 Plustek, Inc. 0001 OpticPro 1212U Scanner 0003 Scanner 0010 OpticPro U12 Scanner 0011 OpticPro U24 Scanner 0013 OpticPro UT12 Scanner 0014 Scanner 0015 OpticPro U24 Scanner 0017 OpticPro UT12/16/24 Scanner 0204 Scanner 0400 OpticPro 1248U Scanner 0401 OpticPro 1248U Scanner #2 0403 OpticPro U16B Scanner 0404 Scanner 0405 A8 Namecard-s Controller 0406 A8 Namecard-D Controller 0410 Scanner 0412 Scanner 0413 OpticSlim 1200 Scanner 0601 OpticPro ST24 Scanner 0800 OpticPro ST48 Scanner 0807 OpticFilm 7200 scanner 0900 OpticBook 3600 Scanner 090c OpticBook 3600 Plus Scanner 0a06 TVcam VD100 0b00 SmartPhoto F50 0c00 OpticPro ST64 Scanner 0c03 OpticPro ST64+ Scanner 0c04 Optic Film 7200i scanner 0c07 OpticFilm 7200 scanner 0c0c PL806 Scanner 0c26 OpticBook 4600 Scanner 0c2b Mobile Office D428 Scanner 0e08 OpticBook A300 Scanner 1300 OpticBook 3800 Scanner 1301 OpticBook 4800 Scanner 130f Bookreader v200 07b4 Olympus Optical Co., Ltd 0100 Camedia C-2100/C-3000 Ultra Zoom Camera 0102 Camedia E-10/C-220/C-50 Camera 0104 Camedia Digital Color Printer P-400 0105 Camedia C-310Z/C-700/C-750UZ/C-755/C-765UZ/C-3040/C-4000/C-5050Z/D-560/C-3020Z Zoom Camera 0109 C-370Z/C-500Z/D-535Z/X-450 010a MAUSB-10 xD and SmartMedia Card Reader 0112 MAUSB-100 xD Card Reader 0113 Mju 500 / Stylus Digital Camera (PTP) 0114 C-350Z Camera 0118 Mju Mini Digital/Mju Digital 500 Camera / Stylus 850 SW 0125 Tough TG-1 Camera 0126 VR340/D750 Digital Camera 0184 P-S100 port 0202 Foot Switch RS-26 0203 Digital Voice Recorder DW-90 0206 Digital Voice Recorder DS-330 0207 Digital Voice Recorder & Camera W-10 0209 Digital Voice Recorder DM-20 020b Digital Voice Recorder DS-4000 020d Digital Voice Recorder VN-240PC 0211 Digital Voice Recorder DS-2300 0218 Foot Switch RS-28 0244 Digital Voice Recorder VN-8500PC 024f Digital Voice Recorder DS-7000 0280 m:robe 100 0295 Digital Voice Recorder VN-541PC 07b5 Mega World International, Ltd 0017 Joystick 0213 Thrustmaster Firestorm Digital 3 Gamepad 0312 Gamepad 9902 GamePad 07b6 Marubun Corp. 07b7 TIME Interconnect, Ltd 07b8 AboCom Systems Inc 110c XX1 1201 IEEE 802.11b Adapter 200c XX2 2573 Wireless LAN Card 2770 802.11n/b/g Mini Wireless LAN USB2.0 Adapter 2870 802.11n/b/g Wireless LAN USB2.0 Adapter 3070 802.11n/b/g Mini Wireless LAN USB2.0 Adapter 3071 802.11n/b/g Mini Wireless LAN USB2.0 Adapter 3072 802.11n/b/g Mini Wireless LAN USB2.0 Adapter 4000 DU-E10 Ethernet [klsi] 4002 DU-E100 Ethernet [pegasus] 4003 1/10/100 Ethernet Adapter 4004 XX4 4007 XX5 400b XX6 400c XX7 401a RTL8151 4102 USB 1.1 10/100M Fast Ethernet Adapter 4104 XX9 420a UF200 Ethernet 5301 GW-US54ZGL 802.11bg 6001 WUG2690 802.11bg Wireless Module [ZyDAS ZD1211+AL2230] 8188 AboCom Systems Inc [WN2001 Prolink Wireless-N Nano Adapter] a001 WUG2200 802.11g Wireless Adapter [Envara WiND512] abc1 DU-E10 Ethernet [pegasus] b000 BWU613 b02a AboCom Bluetooth Device b02b Bluetooth dongle b02c BCM92045DG-Flash with trace filter b02d BCM92045DG-Flash with trace filter b02e BCM92045DG-Flash with trace filter b030 BCM92045DG-Flash with trace filter b031 BCM92045DG-Flash with trace filter b032 BCM92045DG-Flash with trace filter b033 BCM92045DG-Flash with trace filter b21a WUG2400 802.11g Wireless Adapter [Texas Instruments TNETW1450] b21b HWU54DM b21c RT2573 b21d RT2573 b21e RT2573 b21f WUG2700 d011 MP3 Player e001 Mass Storage Device e002 Mass Storage Device e003 Mass Storage Device e004 Mass Storage Device e005 Mass Storage Device e006 Mass Storage Device e007 Mass Storage Device e008 Mass Storage Device e009 Mass Storage Device e00a Mass Storage Device e4f0 Card Reader Driver f101 DSB-560 Modem [atlas] 07bc Canon Computer Systems, Inc. 07bd Webgear, Inc. 07be Veridicom 1935 Elektron Music Machines 07c0 Code Mercenaries Hard- und Software GmbH 1113 JoyWarrior24F8 1116 JoyWarrior24F14 1121 The Claw 1500 IO-Warrior 40 1501 IO-Warrior 24 1502 IO-Warrior 48 1503 IO-Warrior 28 1511 IO-Warrior 24 Power Vampire 1512 IO-Warrior 24 Power Vampire 07c1 Keisokugiken 0068 HKS-0200 USBDAQ 07c4 Datafab Systems, Inc. 0102 USB to LS120 0103 USB to IDE 1234 USB to ATAPI a000 CompactFlash Card Reader a001 CompactFlash & SmartMedia Card Reader [eusb] a002 Disk Drive a003 Datafab-based Reader a004 USB to MMC Class Drive a005 CompactFlash & SmartMedia Card Reader a006 SmartMedia Card Reader a007 Memory Stick Class Drive a103 MDSM-B reader a107 USB to Memory Stick (LC1) Drive a109 LC1 CompactFlash & SmartMedia Card Reader a10b USB to CF+MS(LC1) a200 DF-UT-06 Hama MMC/SD Reader a400 CompactFlash & Microdrive Reader a600 Card Reader a604 12-in-1 Card Reader ad01 Mass Storage Device ae01 Mass Storage Device af01 Mass Storage Device b000 USB to CF(LC1) b001 USB to CF+PCMCIA b004 MMC/SD Reader b006 USB to PCMCIA b00a USB to CF+SD Drive(LC1) b00b USB to Memory Stick(LC1) c010 Kingston FCR-HS2/ATA Card Reader 07c5 APG Cash Drawer 0500 Cash Drawer 07c6 ShareWave, Inc. 0002 Bodega Wireless Access Point 0003 Bodega Wireless Network Adapter 07c7 Powertech Industrial Co., Ltd 07c8 B.U.G., Inc. 0202 MN128-SOHO PAL 07c9 Allied Telesyn International b100 AT-USB100 07ca AVerMedia Technologies, Inc. 0002 AVerTV PVR USB/EZMaker Pro Device 0026 AVerTV 0337 A867 DVB-T dongle 0837 H837 Hybrid ATSC/QAM 1228 MPEG-2 Capture Device (M038) 1830 AVerTV Volar Video Capture (H830) 1871 TD310 DVB-T/T2/C dongle 2553 Live Gamer Ultra 2.1 3835 AVerTV Volar Green HD (A835B) 850a AverTV Volar Black HD (A850) 850b AverTV Red HD+ (A850T) a309 AVerTV DVB-T (A309) a801 AVerTV DVB-T (A800) a815 AVerTV DVB-T Volar X (A815) a827 AVerTV Hybrid Volar HX (A827) a867 AVerTV DVB-T (A867) b300 A300 DVB-T TV receiver b800 MR800 FM Radio c039 DVD EZMaker 7 d553 Live Gamer Ultra Pro-RGB e880 MPEG-2 Capture Device (E880) e882 MPEG-2 Capture Device (E882) 07cb Kingmax Technology, Inc. 07cc Carry Computer Eng., Co., Ltd 0000 CF Card Reader 0001 Reader (UICSE) 0002 Reader (UIS) 0003 SM Card Reader 0004 SM/CF/PCMCIA Card Reader 0005 Reader (UISA2SE) 0006 SM/CF/PCMCIA Card Reader 0007 Reader (UISA6SE) 000c SM/CF Card Reader 000d SM/CF Card Reader 000e Reader (UISDA) 000f Reader (UICLIK) 0010 Reader (UISMA) 0012 Reader (UISC6SE-FLASH) 0014 Litronic Fortezza Reader 0030 Mass Storage (UISDMC12S) 0040 Mass Storage (UISDMC13S) 0100 Reader (UID) 0101 Reader (UIM) 0102 Reader (UISDMA) 0103 Reader (UISDMC) 0104 Reader (UISDM) 0200 6-in-1 Card Reader 0201 Mass Storage (UISDMC1S & UISDMC3S) 0202 Mass Storage (UISDMC5S) 0203 Mass Storage (UISMC5S) 0204 Mass Storage (UIM4/5S & UIM7S) 0205 Mass Storage (UIS4/5S & UIS7S) 0206 Mass Storage (UISDMC10S & UISDMC11S) 0207 Mass Storage (UPIDMA) 0208 Mass Storage (UCFC II) 0210 Mass Storage (UPIXXA) 0213 Mass Storage (UPIDA) 0214 Mass Storage (UPIMA) 0215 Mass Storage (UPISA) 0217 Mass Storage (UPISDMA) 0223 Mass Storage (UCIDA) 0224 Mass Storage (UCIMA) 0225 Mass Storage (UIS7S) 0227 Mass Storage (UCIDMA) 0234 Mass Storage (UIM7S) 0235 Mass Storage (UIS4S-S) 0237 Velper (UISDMC4S) 0300 6-in-1 Card Reader 0301 6-in-1 Card Reader 0303 Mass Storage (UID10W) 0304 Mass Storage (UIM10W) 0305 Mass Storage (UIS10W) 0308 Mass Storage (UIC10W) 0309 Mass Storage (UISC3W) 0310 Mass Storage (UISDMA2W) 0311 Mass Storage (UISDMC14W) 0320 Mass Storage (UISDMC4W) 0321 Mass Storage (UISDMC37W) 0330 WINTERREADER Reader 0350 9-in-1 Card Reader 0500 Mass Storage 0501 Mass Storage 07cd Elektor 0001 USBuart Serial Port 07ce Nidec Copal c007 DPB-4000 c009 DPB-6000 c010 CPB-7000 c011 ASK-2500 07cf Casio Computer Co., Ltd 1001 QV-8000SX/5700/3000EX Digicam; Exilim EX-M20 1003 Exilim EX-S500 1004 Exilim EX-Z120 1011 USB-CASIO PC CAMERA 1116 EXILIM EX-Z19 1125 Exilim EX-H10 Digital Camera (mass storage mode) 1133 Exilim EX-Z350 Digital Camera (mass storage mode) 1225 Exilim EX-H10 Digital Camera (PictBridge mode) 1233 Exilim EX-Z350 Digital Camera (PictBridge mode) 2002 E-125 Cassiopeia Pocket PC 3801 WMP-1 MP3-Watch 4001 Label Printer KL-P1000 4007 CW50 Device 4104 Cw75 Device 4107 CW-L300 Device 4500 LV-20 Digital Camera 6101 fx-9750gII 6102 fx-CP400 6801 PL-40R 6802 MIDI Keyboard 6803 CTK-3500 (MIDI keyboard) 07d0 Dazzle 0001 Digital Video Creator I 0002 Global Village VideoFX Grabber 0003 Fusion Model DVC-50 Rev 1 (NTSC) 0004 DVC-800 (PAL) Grabber 0005 Fusion Video and Audio Ports 0006 DVC 150 Loader Device 0007 DVC 150 0327 Fusion Digital Media Reader 1001 DM-FLEX DFU Adapter 1002 DMHS2 DFU Adapter 1102 CF Reader/Writer 1103 SD Reader/Writer 1104 SM Reader/Writer 1105 MS Reader/Writer 1106 xD/SM Reader/Writer 1202 MultiSlot Reader/Writer 2000 FX2 DFU Adapter 2001 eUSB CompactFlash Reader 4100 Kingsun SF-620 Infrared Adapter 4101 Connectivity Cable (CA-42 clone) 4959 Kingsun KS-959 Infrared Adapter 07d1 D-Link System 13ec VvBus for Helium 2xx 13ed VvBus for Helium 2xx 13f1 DSL-302G Modem 13f2 DSL-502G Router 3300 DWA-130 802.11n Wireless N Adapter(rev.E) [Realtek RTL8191SU] 3302 DWA-130 802.11n Wireless N Adapter(rev.C2) [Realtek RTL8191SU] 3303 DWA-131 802.11n Wireless N Nano Adapter(rev.A1) [Realtek RTL8192SU] 3304 FR-300USB 802.11bgn Wireless Adapter 3a07 WUA-2340 RangeBooster G Adapter(rev.A) [Atheros AR5523] 3a08 WUA-2340 RangeBooster G Adapter(rev.A) (no firmware) [Atheros AR5523] 3a09 DWA-160 802.11abgn Xtreme N Dual Band Adapter(rev.A2) [Atheros AR9170+AR9104] 3a0d DWA-120 802.11g Wireless 108G Adapter [Atheros AR5523] 3a0f DWA-130 802.11n Wireless N Adapter(rev.D) [Atheros AR9170+AR9102] 3a10 DWA-126 802.11n Wireless Adapter [Atheros AR9271] 3b01 AirPlus G DWL-G122 Wireless Adapter(rev.D) [Marvell 88W8338+88W8010] 3b10 DWA-142 RangeBooster N Adapter [Marvell 88W8362+88W8060] 3b11 DWA-130 802.11n Wireless N Adapter(rev.A1) [Marvell 88W8362+88W8060] 3c03 AirPlus G DWL-G122 Wireless Adapter(rev.C1) [Ralink RT2571W] 3c04 WUA-1340 3c05 EH103 Wireless G Adapter 3c06 DWA-111 802.11bg Wireless Adapter [Ralink RT2571W] 3c07 DWA-110 Wireless G Adapter(rev.A1) [Ralink RT2571W] 3c09 DWA-140 RangeBooster N Adapter(rev.B1) [Ralink RT2870] 3c0a DWA-140 RangeBooster N Adapter(rev.B2) [Ralink RT3072] 3c0b DWA-110 Wireless G Adapter(rev.B) [Ralink RT2870] 3c0d DWA-125 Wireless N 150 Adapter(rev.A1) [Ralink RT3070] 3c0e WUA-2340 RangeBooster G Adapter(rev.B) [Ralink RT2070] 3c0f AirPlus G DWL-G122 Wireless Adapter(rev.E1) [Ralink RT2070] 3c10 DWA-160 802.11abgn Xtreme N Dual Band Adapter(rev.A1) [Atheros AR9170+AR9104] 3c11 DWA-160 Xtreme N Dual Band USB Adapter(rev.B) [Ralink RT2870] 3c13 DWA-130 802.11n Wireless N Adapter(rev.B) [Ralink RT2870] 3c15 DWA-140 RangeBooster N Adapter(rev.B3) [Ralink RT2870] 3c16 DWA-125 Wireless N 150 Adapter(rev.A2) [Ralink RT3070] 3e02 DWM-156 3.75G HSUPA Adapter 5100 Remote NDIS Device a800 DWM-152 3.75G HSUPA Adapter f101 DBT-122 Bluetooth fc01 DBT-120 Bluetooth Adapter 07d2 Aptio Products, Inc. 07d3 Cyberdata Corp. 07d5 Radiant Systems 07d7 GCC Technologies, Inc. 07da Arasan Chip Systems 07de Diamond Multimedia 2820 VC500 Video Capture Dongle 07df David Electronics Co., Ltd 07e0 NCP engineering GmbH 4742 VPN GovNet Box 07e1 Ambient Technologies, Inc. 5201 V.90 Modem 07e2 Elmeg GmbH & Co., Ltd 07e3 Planex Communications, Inc. 07e4 Movado Enterprise Co., Ltd 0967 SCard R/W CSR-145 0968 SCard R/W CSR-145 07e5 QPS, Inc. 05c2 IDE-to-USB2.0 PCA 5c01 Que! CDRW 07e6 Allied Cable Corp. 07e7 Mirvo Toys, Inc. 07e8 Labsystems 07ea Iwatsu Electric Co., Ltd 07eb Double-H Technology Co., Ltd 07ec Taiyo Electric Wire & Cable Co., Ltd 07ee Torex Retail (formerly Logware) 0002 Cash Drawer I/F 07ef STSN 0001 Internet Access Device 07f2 Microcomputer Applications, Inc. 0001 KEYLOK II 0003 KEYLOK3 07f6 Circuit Assembly Corp. 07f7 Century Corp. 0005 ScanLogic/Century Corporation uATA 011e Century USB Disk Enclosure 07f9 Dotop Technology, Inc. 07fa DrayTek Corp. 0778 miniVigor 128 ISDN TA 0846 ISDN TA [HFC-S] 0847 ISDN TA [HFC-S] 1012 BeWAN ADSL USB ST (grey) 1196 BWIFI-USB54AR 802.11bg a904 BeWAN ADSL a905 BeWAN ADSL ST 07fc Thomann 1113 SWISSONIC EasyKeys61 Midikeyboard 07fd Mark of the Unicorn 0000 FastLane MIDI Interface 0001 MIDI Interface 0002 MOTU Audio for 64 bit 0004 Microbook I/II/IIc 0008 M Series 0009 M Series (firmware update mode) 000b M Series 000d M Series (firmware update mode) 07ff Unknown 00ff Portable Hard Drive ffff Mad Catz Gamepad 0801 MagTek 0001 Mini Swipe Reader (Keyboard Emulation) 0002 Mini Swipe Reader 0003 Magstripe Insert Reader 0011 MagTek - Mini Swipe Reader 0802 Mako Technologies, LLC 0803 Zoom Telephonics, Inc. 1300 V92 Faxmodem 3095 V.92 56K Mini External Modem Model 3095 4310 4410a Wireless-G Adapter [Intersil ISL3887] 4410 4410b Wireless-G Adapter [ZyDAS ZD1211B] 5241 Cable Modem 5551 DSL Modem 9700 2986L FaxModem 9800 Cable Modem a312 Wireless-G 0809 Genicom Technology, Inc. 080a Evermuch Technology Co., Ltd 080b Cross Match Technologies 0002 Fingerprint Scanner (After ReNumeration) 0010 300LC Series Fingerprint Scanner (Before ReNumeration) 080c Datalogic S.p.A. 0300 Gryphon D120 Barcode Scanner 0400 Gryphon D120 Barcode Scanner 0500 Gryphon D120 Barcode Scanner 0600 Gryphon M100 Barcode Scanner 080d Teco Image Systems Co., Ltd 0102 Hercules Scan@home 48 0104 3.2Slim 0110 UMAX AstraSlim 1200 Scanner 0810 Personal Communication Systems, Inc. 0001 Dual PSX Adaptor 0002 Dual PCS Adaptor 0003 PlayStation Gamepad e001 Twin controller e501 SNES Gamepad 0813 Mattel, Inc. 0001 Intel Play QX3 Microscope 0002 Dual Mode Camera Plus 0819 eLicenser 0101 License Management and Copy Protection 081a MG Logic 1000 Duo Pen Tablet 081b Indigita Corp. 0600 Storage Adapter 0601 Storage Adapter 081c Mipsys 081e AlphaSmart, Inc. df00 Handheld 081f Manta e401 gamepad 0822 Reudo Corp. 2001 IRXpress Infrared Device 0825 GC Protronics 0826 Data Transit 0827 BroadLogic, Inc. 0828 Sato Corp. a003 WS408 Label Printer 0829 DirecTV Broadband, Inc. (Telocity) 082d Handspring 0100 Visor 0200 Treo 0300 Treo 600 0400 Handheld 0500 Handheld 0600 Handheld 0830 Palm, Inc. 0001 m500 0002 m505 0003 m515 0004 Handheld 0005 Handheld 0006 Handheld 0010 Handheld 0011 Handheld 0012 Handheld 0013 Handheld 0014 Handheld 0020 i705 0021 Handheld 0022 Handheld 0023 Handheld 0024 Handheld 0030 Handheld 0031 Tungsten W 0032 Handheld 0033 Handheld 0034 Handheld 0040 m125 0041 Handheld 0042 Handheld 0043 Handheld 0044 Handheld 0050 m130 0051 Handheld 0052 Handheld 0053 Handheld 0054 Handheld 0060 Tungsten C/E/T/T2/T3 / Zire 71 0061 Lifedrive / Treo 650/680 / Tunsten E2/T5/TX / Centro / Zire 21/31/72 / Z22 0062 Handheld 0063 Handheld 0064 Handheld 0070 Zire 0071 Handheld 0072 Handheld 0080 Serial Adapter [for Palm III] 0081 Handheld 0082 Handheld 00a0 Treo 800w 0101 Pre 0832 Kouwell Electronics Corp. 5850 Cable 0833 Sourcenext Corp. 012e KeikaiDenwa 8 with charger 039f KeikaiDenwa 8 0835 Action Star Enterprise Co., Ltd 0836 TrekStor 2836 i.Beat mood 0839 Samsung Techwin Co., Ltd 0005 Digimax Camera 0008 Digimax 230 Camera 0009 Digimax 340 000a Digimax 410 000e Digimax 360 0010 Digimax 300 1003 Digimax 210SE 1005 Digimax 220 1009 Digimax V4 1012 6500 Document Camera 103f Digimax S500 1058 S730 Camera 1064 Digimax D830 Camera 1542 Digimax 50 Duo 3000 Digimax 35 MP3 083a Accton Technology Corp. 1046 10/100 Ethernet [pegasus] 1060 HomeLine Adapter 1f4d SMC8013WG Broadband Remote NDIS Device 3046 10/100 Series Adapter 3060 1/10/100 Adapter 3501 2664W 3502 WN3501D Wireless Adapter 3503 T-Sinus 111 Wireless Adapter 4501 T-Sinus 154data 4502 Siemens S30853-S1016-R107 802.11g Wireless Adapter [Intersil ISL3886] 4505 SMCWUSB-G 802.11bg 4507 SMCWUSBT-G2 802.11g Wireless Adapter [Atheros AR5523] 4521 Siemens S30863-S1016-R107-2 802.11g Wireless Adapter [Intersil ISL3887] 4531 T-Com Sinus 154 data II [Intersil ISL3887] 5046 SpeedStream 10/100 Ethernet [pegasus] 5501 Wireless Adapter 11g 6500 Cable Modem 6618 802.11n Wireless Adapter 7511 Arcadyan 802.11N Wireless Adapter 7512 Arcadyan 802.11N Wireless Adapter 7522 Arcadyan 802.11N Wireless Adapter 8522 Arcadyan 802.11N Wireless Adapter 8541 WN4501F 802.11g Wireless Adapter [Intersil ISL3887] a512 Arcadyan 802.11N Wireless Adapter a618 SMCWUSBS-N EZ Connect N Draft 11n Wireless Adapter [Ralink RT2870] a701 SMCWUSBS-N3 EZ Connect N Wireless Adapter [Ralink RT3070] b004 CPWUE001 USB/Ethernet Adapter b522 SMCWUSBS-N2 EZ Connect N Wireless Adapter [Ralink RT2870] bb01 BlueExpert Bluetooth Device c003 802.11b Wireless Adapter c501 Zoom 4410 Wireless-G [Intersil ISL3887] c561 802.11a/g Wireless Adapter d522 Speedport W 102 Stick IEEE 802.11n USB 2.0 Adapter e501 ZD1211B e503 Arcadyan WN4501 802.11b/g e506 WUS-201 802.11bg f501 802.11g Wireless Adapter f502 802.11g Wireless Adapter f522 Arcadyan WN7512 802.11n 083f Global Village b100 TelePort V.90 Fax/Modem 0840 Argosy Research, Inc. 0060 Storage Adapter Bridge Module 0841 Rioport.com, Inc. 0001 Rio 500 0844 Welland Industrial Co., Ltd 0846 NetGear, Inc. 1001 EA101 10 Mbps 10BASE-T Ethernet [Kawasaki LSI KL5KLUSB101B] 1002 Ethernet 1020 FA101 Fast Ethernet USB 1.1 1040 FA120 Fast Ethernet USB 2.0 [Asix AX88172 / AX8817x] 1100 Managed Switch M4100 series, M5300 series, M7100 series 4110 MA111(v1) 802.11b Wireless [Intersil Prism 3.0] 4200 WG121(v1) 54 Mbps Wireless [Intersil ISL3886] 4210 WG121(v2) 54 Mbps Wireless [Intersil ISL3886] 4220 WG111(v1) 54 Mbps Wireless [Intersil ISL3886] 4230 MA111(v2) 802.11b Wireless [SIS SIS 162] 4240 WG111(v1) rev 2 54 Mbps Wireless [Intersil ISL3887] 4260 WG111v3 54 Mbps Wireless [realtek RTL8187B] 4300 WG111U Double 108 Mbps Wireless [Atheros AR5004X / AR5005UX] 4301 WG111U (no firmware) Double 108 Mbps Wireless [Atheros AR5004X / AR5005UX] 5f00 WPN111 802.11g Wireless Adapter [Atheros AR5523] 68e1 LB1120-100NAS 6a00 WG111v2 54 Mbps Wireless [RealTek RTL8187L] 7100 WN121T RangeMax Next Wireless-N [Marvell TopDog] 9000 WN111(v1) RangeMax Next Wireless [Marvell 88W8362+88W8060] 9001 WN111(v2) RangeMax Next Wireless [Atheros AR9170+AR9101] 9010 WNDA3100v1 802.11abgn [Atheros AR9170+AR9104] 9011 WNDA3100v2 802.11abgn [Broadcom BCM4323] 9012 WNDA4100 802.11abgn 3x3:3 [Ralink RT3573] 9014 WNDA3100v3 802.11abgn 2x2:2 [MediaTek MT7632U] 9018 WNDA3200 802.11abgn Wireless Adapter [Atheros AR7010+AR9280] 9020 WNA3100(v1) Wireless-N 300 [Broadcom BCM43231] 9021 WNA3100M(v1) Wireless-N 300 [Realtek RTL8192CU] 9030 WNA1100 Wireless-N 150 [Atheros AR9271] 9040 WNA1000 Wireless-N 150 [Atheros AR9170+AR9101] 9041 WNA1000M 802.11bgn [Realtek RTL8188CUS] 9042 On Networks N150MA 802.11bgn [Realtek RTL8188CUS] 9043 WNA1000Mv2 802.11bgn [Realtek RTL8188CUS?] 9050 A6200 802.11a/b/g/n/ac Wireless Adapter [Broadcom BCM43526] 9051 A6200v2 802.11a/b/g/n/ac (2x2) Wireless Adapter [Realtek RTL8812AU] 9052 A6100 AC600 DB Wireless Adapter [Realtek RTL8811AU] 9054 Nighthawk A7000 802.11ac Wireless Adapter AC1900 [Realtek 8814AU] 9055 A6150 Dual Band AC1200 Wireless Adapter [Realtek RTL8812BU] a001 PA101 10 Mbps HPNA Home Phoneline RJ-1 f001 On Networks N300MA 802.11bgn [Realtek RTL8192CU] 084d Minton Optic Industry Co., Inc. 0001 Jenoptik JD800i 0003 S-Cam F5/D-Link DSC-350 Digital Camera 0011 Argus DC3500 Digital Camera 0014 Praktica DC 32 0019 Praktica DPix3000 0025 Praktica DC 60 002b Technika SH-Z625 6MP Digital Camera 1001 ScanHex SX-35d 084e KB Gear 0001 JamCam Camera 1001 Jam Studio Tablet 1002 Pablo Tablet 084f Empeg 0001 Empeg-Car Mark I/II Player 0850 Fast Point Technologies, Inc. 0851 Macronix International Co., Ltd 1542 SiPix Blink 1543 Maxell WS30 Slim Digital Camera, or Pandigital PI8004W01 digital photo frame a168 MXIC 0852 CSEM 0853 Topre Corporation 0100 HHKB Professional 0119 RealForce 105UB 0200 RealForce Compact Keyboard 0854 ActiveWire, Inc. 0100 I/O Board 0101 I/O Board, rev1 0856 B&B Electronics ac01 uLinks USOTL4 RS422/485 Adapter 0858 Hitachi Maxell, Ltd 3102 Bluetooth Device ffff Maxell module with BlueCore in DFU mode 0859 Minolta Systems Laboratory, Inc. 085a Xircom 0001 Portstation Dual Serial Port 0003 Portstation Paraller Port 0008 Ethernet 0009 Ethernet 000b Portstation Dual PS/2 Port 0021 1 port to Serial Converter 0022 Parallel Port 0023 2 port to Serial Converter 0024 Parallel Port 0026 PortGear SCSI 0027 1 port to Serial Converter 0028 PortGear to SCSI Converter 0032 PortStation SCSI Module 003c Bluetooth Adapter 0299 Colorvision, Inc. Monitor Spyder 8021 1 port to Serial 8023 2 port to Serial 8027 PGSDB9 Serial Port 085c ColorVision, Inc. 0100 Spyder 1 0200 Spyder 2 0300 Spyder 3 0400 Spyder 4 0862 Teletrol Systems, Inc. 0863 Filanet Corp. 0864 NetGear, Inc. 4100 MA101 802.11b Adapter 4102 MA101 802.11b Adapter 0867 Data Translation, Inc. 9812 ECON Data acquisition unit 9816 DT9816 ECON data acquisition module 9836 DT9836 data acquisition card 086a Emagic Soft- und Hardware GmbH 0001 Unitor8 0002 AMT8 0003 MT4 086c DeTeWe - Deutsche Telephonwerke AG & Co. 1001 Eumex 504PC ISDN TA 1002 Eumex 504PC (FlashLoad) 1003 TA33 ISDN TA 1004 TA33 (FlashLoad) 1005 Eumex 604PC HomeNet 1006 Eumex 604PC HomeNet (FlashLoad) 1007 Eumex 704PC DSL 1008 Eumex 704PC DSL (FlashLoad) 1009 Eumex 724PC DSL 100a Eumex 724PC DSL (FlashLoad) 100b OpenCom 30 100c OpenCom 30 (FlashLoad) 100d BeeTel Home 100 100e BeeTel Home 100 (FlashLoad) 1011 USB2DECT 1012 USB2DECT (FlashLoad) 1013 Eumex 704PC LAN 1014 Eumex 704PC LAN (FlashLoad) 1019 Eumex 504 SE 101a Eumex 504 SE (Flash-Mode) 1021 OpenCom 40 1022 OpenCom 40 (FlashLoad) 1023 OpenCom 45 1024 OpenCom 45 (FlashLoad) 1025 Sinus 61 data 1029 dect BOX 102c Eumex 604PC HomeNet [FlashLoad] 1030 Eumex 704PC DSL [FlashLoad] 1032 OpenCom 40 [FlashLoad] 1033 OpenCom 30 plus 1034 OpenCom 30 plus (FlashLoad) 1041 Eumex 220PC 1042 Eumex 220PC (FlashMode) 1055 Eumex 220 Version 2 ISDN TA 1056 Eumex 220 Version 2 ISDN TA (Flash-Mode) 2000 OpenCom 1000 086e System TALKS, Inc. 1920 SGC-X2UL 086f MEC IMEX, Inc. 0870 Metricom 0001 Ricochet GS 0871 SanDisk, Inc. 0001 SDDR-01 Compact Flash Reader 0002 SDDR-31 Compact Flash Reader 0005 SDDR-05 Compact Flash Reader 0873 Xpeed, Inc. 0874 A-Tec Subsystem, Inc. 0879 Comtrol Corp. 087c Adesso/Kbtek America, Inc. 087d Jaton Corp. 5704 Ethernet 087e Fujitsu Computer Products of America 087f QualCore Logic Inc. 0880 APT Technologies, Inc. 0883 Recording Industry Association of America (RIAA) 0885 Boca Research, Inc. 0886 XAC Automation Corp. 0630 Intel PC Camera CS630 0887 Hannstar Electronics Corp. 088a TechTools 1002 DigiView DV3100 088b MassWorks, Inc. 4944 MassWorks ID-75 TouchScreen 088c Swecoin AB 2030 Ticket Printer TTP 2030 088e iLok 5036 Portable secure storage for software licenses 0892 DioGraphy, Inc. 0101 Smartdio Reader/Writer 0894 TSI Incorporated 0010 Remote NDIS Network Device 0897 Lauterbach 0001 ICE In-Circuit Emulator 0002 Power Debug/Power Debug II 0004 PowerDebug 0005 PowerDebug PRO 089c United Technologies Research Cntr. 089d Icron Technologies Corp. 089e NST Co., Ltd 089f Primex Aerospace Co. 08a5 e9, Inc. 08a6 Toshiba TEC 0051 B-SV4 08a8 Andrea Electronics 08a9 CWAV Inc. 0005 USBee ZX 0009 USBee SX 0012 USBee AX-Standard 0013 USBee AX-Plus 0014 USBee AX-Pro 0015 USBee DX 08ac Macraigor Systems LLC 2024 usbWiggler 08ae Macally (Mace Group, Inc.) 08b0 Metrohm 0006 814 Sample Processor 0015 857 Titrando 001a 852 Titrando 08b4 Sorenson Vision, Inc. 08b7 NATSU 0001 Playstation adapter 08b8 J. Gordon Electronic Design, Inc. 01f4 USBSIMM1 08b9 RadioShack Corp. (Tandy) 08bb Texas Instruments 2702 PCM2702 16-bit stereo audio DAC 2704 PCM2704 16-bit stereo audio DAC 2705 PCM2705 stereo audio DAC 2706 PCM2706 stereo audio DAC 2707 PCM2707 stereo audio DAC 27c4 PCM2704C stereo audio DAC 27c5 PCM2705C stereo audio DAC 27c6 PCM2706C stereo audio DAC 27c7 PCM2707C stereo audio DAC 2900 PCM2900 Audio Codec 2901 PCM2901 Audio Codec 2902 PCM2902 Audio Codec 2904 PCM2904 Audio Codec 2910 PCM2912 Audio Codec 2912 PCM2912A Audio Codec 29b0 PCM2900B Audio CODEC 29b2 PCM2902 Audio CODEC 29b3 PCM2903B Audio CODEC 29b6 PCM2906B Audio CODEC 29c0 PCM2900C Audio CODEC 29c2 PCM2902C Audio CODEC 29c3 PCM2903C Audio CODEC 29c6 PCM2906C Audio CODEC 08bd Citizen Watch Co., Ltd 0208 CLP-521 Label Printer 1100 X1-USB Floppy 08c3 Precise Biometrics 0001 100 SC 0002 100 A 0003 100 SC BioKeyboard 0006 100 A BioKeyboard 0100 100 MC ISP 0101 100 MC FingerPrint and SmartCard Reader 0300 100 AX 0400 100 SC 0401 150 MC 0402 200 MC FingerPrint and SmartCard Reader 0404 100 SC Upgrade 0405 150 MC Upgrade 0406 100 MC Upgrade 08c4 Proxim, Inc. 0100 Skyline 802.11b Wireless Adapter 02f2 Farallon Home Phoneline Adapter 08c7 Key Nice Enterprise Co., Ltd 08c8 2Wire, Inc. 08c9 Nippon Telegraph and Telephone Corp. 08ca Aiptek International, Inc. 0001 Tablet 0010 Tablet 0020 APT-6000U Tablet 0021 APT-2 Tablet 0022 Tablet 0023 Tablet 0024 Tablet 0100 Pen Drive 0102 DualCam 0103 Pocket DV Digital Camera 0104 Pocket DVII 0105 Mega DV(Disk) 0106 Pocket DV3100+ 0107 Pocket DV3100 0109 Nisis DV4 Digital Camera 010a Trust 738AV LCD PV Mass Storage 0111 PenCam VGA Plus 2008 Mini PenCam 2 2010 Pocket CAM 3 Mega (webcam) 2011 Pocket CAM 3 Mega (storage) 2016 PocketCam 2 Mega 2018 Pencam SD 2M 2019 Pencam SD 2M (mass storage mode) 2020 Slim 3000F 2022 Slim 3200 2024 Pocket DV3500 2028 Pocket Cam4M 2040 Pocket DV4100M 2042 Pocket DV5100M Composite Device 2043 Pocket DV5100M (Disk) 2060 Pocket DV5300 08cd Jue Hsun Ind. Corp. 08ce Long Well Electronics Corp. 08cf Productivity Enhancement Products 08d1 smartBridges, Inc. 0001 smartNIC Ethernet [catc] 0003 smartNIC 2 PnP Ethernet 08d3 Virtual Ink 08d4 Fujitsu Siemens Computers 0009 SCR SmartCard Reader 08d8 IXXAT Automation GmbH 0002 USB-to-CAN compact 0003 USB-to-CAN II 0100 USB-to-CAN 08d9 Increment P Corp. 08dd Billionton Systems, Inc. 0112 Wireless LAN Adapter 0113 Wireless LAN Adapter 0986 USB-100N Ethernet [pegasus] 0987 USBLP-100 HomePNA Ethernet [pegasus] 0988 USBEL-100 Ethernet [pegasus] 1986 10/100 LAN Adapter 2103 DVB-T TV-Tuner Card-R 8511 USBE-100 Ethernet [pegasus2] 90ff USB2AR Ethernet 08de ??? 7a01 802.11b Adapter 08df Spyrus, Inc. 0001 Rosetta Token V1 0002 Rosetta Token V2 0003 Rosetta Token V3 0a00 Lynks Interface 08e3 Olitec, Inc. 0002 USB-RS232 Bridge 0100 Interface ADSL 0101 Interface ADSL 0102 ADSL 0301 RNIS ISDN TA [HFC-S] 08e4 Pioneer Corp. 017a BD-XD07 BD/DVD/CD Writer 0184 DDJ-WeGO 0185 DDJ-WeGO2 08e5 Litronic 08e6 Gemalto (was Gemplus) 0001 GemPC-Touch 430 0430 GemPC430 SmartCard Reader 0432 GemPC432 SmartCard Reader 0435 GemPC435 SmartCard Reader 0437 GemPC433 SL SmartCard Reader 1359 UA SECURE STORAGE TOKEN 2202 Gem e-Seal Pro Token 3437 GemPC Twin SmartCard Reader 3438 GemPC Key SmartCard Reader 3478 PinPad Smart Card Reader 34ec Compact Smart Card Reader Writer 4433 GemPC433-Swap 5501 GemProx-PU Contactless Smart Card Reader 5503 Prox-DU Contactless Interface ace0 UA HYBRID TOKEN 08e7 Pan-International Wire & Cable 08e8 Integrated Memory Logic 08e9 Extended Systems, Inc. 0100 XTNDAccess IrDA Dongle 08ea Ericsson, Inc., Blue Ridge Labs 00c9 ADSL Modem HM120dp Loader 00ca ADSL WAN Modem HM120dp 00ce HM230d Virtual Bus for Helium abba USB Driver for Bluetooth Wireless Technology abbb Bluetooth Device in DFU State 08ec M-Systems Flash Disk Pioneers 0001 TravelDrive 2C 0002 TravelDrive 2C 0005 TravelDrive 2C 0008 TravelDrive 2C 0010 DiskOnKey 0011 DiskOnKey 0012 TravelDrive 2C 0014 TravelDrive 2C 0015 Kingston DataTraveler ELITE 0016 Kingston DataTraveler U3 0020 TravelDrive Intuix U3 2GB 0021 TravelDrive 0022 TravelDrive 0023 TravelDrive 0024 TravelDrive 0025 TravelDrive 0026 TravelDrive 0027 TravelDrive 0028 TravelDrive 0029 TravelDrive 0030 TravelDrive 0822 TravelDrive 2C 0832 Hi-Speed Mass Storage Device 0834 M-Disk 220 0998 Kingston Data Traveler2.0 Disk Driver 0999 Kingston Data Traveler2.0 Disk Driver 1000 TravelDrive 2C 2000 TravelDrive 2C 2038 TravelDrive 2039 TravelDrive 204a TravelDrive 204b TravelDrive 08ed MediaTek Inc. 0002 CECT M800 memory card 08ee CCSI/Hesso 08f0 Corex Technologies 0005 CardScan 800c 08f1 CTI Electronics Corp. 08f2 Gotop Information Inc. 007f Super Q2 Tablet 08f5 SysTec Co., Ltd 08f6 Logic 3 International, Ltd 08f7 Vernier 0001 LabPro 0002 EasyTemp/Go!Temp 0003 Go!Link 0004 Go!Motion 08f8 Keen Top International Enterprise Co., Ltd 08f9 Wipro Technologies 08fa Caere 08fb Socket Communications 08fc Sicon Cable Technology Co., Ltd 08fd Digianswer A/S 0001 Bluetooth Device 08ff AuthenTec, Inc. 1600 AES1600 1610 AES1600 1660 AES1660 Fingerprint Sensor 1680 AES1660 Fingerprint Sensor 168f AES1660 Fingerprint Sensor 2500 AES2501 2501 AES2501 2502 AES2501 2503 AES2501 2504 AES2501 2505 AES2501 2506 AES2501 2507 AES2501 2508 AES2501 2509 AES2501 250a AES2501 250b AES2501 250c AES2501 250d AES2501 250e AES2501 250f AES2501 2510 AES2510 2550 AES2550 Fingerprint Sensor 2580 AES2501 Fingerprint Sensor 2588 AES2501 2589 AES2501 258a AES2501 258b AES2501 258c AES2501 258d AES2501 258e AES2501 258f AES2501 2660 AES2660 Fingerprint Sensor 2680 AES2660 Fingerprint Sensor 268f AES2660 Fingerprint Sensor 2810 AES2810 3400 AES3400 TruePrint Sensor 3401 AES3400 Sensor 3402 AES3400 Sensor 3403 AES3400 Sensor 3404 AES3400 TruePrint Sensor 3405 AES3400 TruePrint Sensor 3406 AES3400 TruePrint Sensor 3407 AES3400 TruePrint Sensor 4902 BioMV with TruePrint AES3500 4903 BioMV with TruePrint AES3400 5500 AES4000 5501 AES4000 TruePrint Sensor 5503 AES4000 TruePrint Sensor 5505 AES4000 TruePrint Sensor 5507 AES4000 TruePrint Sensor 55ff AES4000 TruePrint Sensor. 5700 AES3500 Fingerprint Reader 5701 AES3500 TruePrint Sensor 5702 AES3500 TruePrint Sensor 5703 AES3500 TruePrint Sensor 5704 AES3500-BZ TruePrint Sensor 5705 AES3500-BZ TruePrint Sensor 5706 AES3500-BZ TruePrint Sensor 5707 AES3500-BZ TruePrint Sensor 5710 AES3500 TruePrint Sensor 5711 AES3500 TruePrint Sensor 5712 AES3500 TruePrint Sensor 5713 AES3500 TruePrint Sensor 5714 AES3500-BZ TruePrint Sensor 5715 AES3500-BZ TruePrint Sensor 5716 AES3500-BZ TruePrint Sensor 5717 AES3500-BZ TruePrint Sensor 5730 AES3500 TruePrint Sensor 5731 AES3500 TruePrint Sensor 5732 AES3500 TruePrint Sensor 5733 AES3500 TruePrint Sensor 5734 AES3500-BZ TruePrint Sensor 5735 AES3500-BZ TruePrint Sensor 5736 AES3500-BZ TruePrint Sensor 5737 AES3500-BZ TruePrint Sensor afe3 FingerLoc Sensor Module (Anchor) afe4 FingerLoc Sensor Module (Anchor) afe5 FingerLoc Sensor Module (Anchor) afe6 FingerLoc Sensor Module (Anchor) fffd AES2510 Sensor (USB Emulator) ffff Sensor (Emulator) 0900 Pinnacle Systems, Inc. 0901 VST Technologies 0001 Hard Drive Adapter (TPP) 0002 SigmaDrive Adapter (TPP) 0906 Faraday Technology Corp. 0908 Siemens AG 01f4 SIMATIC NET CP 5711 01fe SIMATIC NET PC Adapter A2 02e7 RNDIS for OZW/OCI 04b1 MediSET 04b2 NC interface 04b3 keyboard front panel Cockpit 04b4 SCR_CCID 04b5 Camera 04b6 Cockpit Touchkeypad 04b7 Cockpit Touchkeypad Bootloader 04b8 MediSET USB4-W 04b9 MediSET USB4-R 04ba MediSET USB4-G 2701 ShenZhen SANZHAI Technology Co.,Ltd Spy Pen VGA 0909 Audio-Technica Corp. 001b ATR2100-USB 001c AT2020USB+ 090a Trumpion Microelectronics, Inc. 1001 T33520 Flash Card Controller 1100 Comotron C3310 MP3 player 1200 MP3 player 1540 Digitex Container Flash Disk 090b Neurosmith 090c Silicon Motion, Inc. - Taiwan (formerly Feiya Technology Corp.) 0371 Silicon Motion SM371 Camera 0373 Silicon Motion Camera 037a Silicon Motion Camera 037b Silicon Motion Camera 037c 300k Pixel Camera 1000 Flash Drive 1132 5-in-1 Card Reader 2000 Disk 337b Silicon Motion Camera 3710 Silicon Motion Camera 3720 Silicon Motion Camera 37bc HP Webcam-101 Integrated Camera 37c0 Silicon Motion Camera 6000 SD/SDHC Card Reader (SG365 / FlexiDrive XC+) 6200 microSD card reader 71b3 SM731 Camera 837b Silicon Motion Camera 937b Silicon Motion Camera b370 Silicon Motion SM370 Camera b371 Silicon Motion SM371 Camera f37d Endoscope camera 090d Multiport Computer Vertriebs GmbH 090e Shining Technology, Inc. 090f Fujitsu Devices, Inc. 0910 Alation Systems, Inc. 0911 Philips Speech Processing 0c1c SpeechMike III 149a SpeechMike II Pro Plus LFH5276 2512 SpeechMike Pro 0912 Voquette, Inc. 0915 GlobeSpan, Inc. 0001 DSL Modem 0002 ADSL ATM Modem 0005 LAN Modem 2000 802.11 Adapter 2002 802.11 Adapter 8000 ADSL LAN Modem 8005 DSL-302G Modem 8101 ADSL WAN Modem 8102 DSL-200 ADSL Modem 8103 DSL-200 ADSL Modem 8104 DSL-200 Modem 8400 DSL Modem 8401 DSL Modem 8402 DSL Modem 8500 DSL Modem 8501 DSL Modem 0917 SmartDisk Corp. 0001 eFilm Reader-11 SM/CF 0002 eFilm Reader-11 SM 0003 eFilm Reader-11 CF 0200 FireFly 0201 FireLite 0202 STORAGE ADAPTER (FirePower) 0204 FlashTrax Storage 0205 STORAGE ADAPTER (CrossFire) 0206 FireFly 20G HDD 0207 FireLite 020f STORAGE ADAPTER (FireLite) da01 eFilm Reader-11 Test ffff eFilm Reader-11 (Class/PDR) 0919 Tiger Electronics 0100 Fast Flicks Digital Camera 091e Garmin International 0003 GPS (various models) 0004 iQue 3600 0200 Data Card Programmer (install) 086e Forerunner 735XT 097f Forerunner 235 1200 Data Card Programmer 21a5 etrex Cx (msc) 2236 nuvi 360 2271 Edge 605/705 2295 Colorado 300 22b6 eTrex Vista HCx (Mass Storage mode) 231b Oregon 400t 2353 Nüvi 205T 2380 Oregon series 23cc nüvi 1350 2459 GPSmap 62/78 series 2491 Edge 800 2518 eTrex 10 2519 eTrex 30 2535 Edge 800 253c GPSmap 62sc 255b Nuvi 2505LM 2613 Edge 200 TWN 26a1 Nuvi 55 2802 fenix 3 28db Drive 5 2bf5 Drive 52M 47fb nuviCam 4c05 Forerunner 245 Music 4cda Fenix 6 Sapphire 4cdb Fenix 6 0920 Echelon Co. 5550 U60 FT Network Interface 7500 Network Interface 0921 GoHubs, Inc. 1001 GoCOM232 Serial 0922 Dymo-CoStar Corp. 0007 LabelWriter 330 0009 LabelWriter 310 0013 LabelManager 400 0019 LabelWriter 400 001a LabelWriter 400 Turbo 0020 LabelWriter 450 0400 LabelWriter SE450 1001 LabelManager PnP 8003 M10 Digital Postal Scale 8004 M25 Digital Postal Scale 8009 S250 Digital Postal Scale 0923 IC Media Corp. 010f SIIG MobileCam 0924 Xerox 23dd DocuPrint M760 (X760_USB) 3ce8 Phaser 3428 Printer 3cea Phaser 3125 3cec Phaser 3250 3d5b Phaser 6115MFP TWAIN Scanner 3d6d WorkCentre 6015N/NI 420f WorkCentre PE220 Series 421f M20 Scanner 423b Printing Support 4274 Xerox Phaser 3635MFPX ffef WorkCenter M15 fffb DocuPrint M750 (X750_USB) 0925 Lakeview Research 0005 Gamtec.,Ltd SmartJoy PLUS Adapter 03e8 Wii Classic Controller Adapter 1031 WiseGroup Ltd, Gameport Controller 1700 PS/SS/N64 Joypad 3881 Saleae Logic 8101 Phidgets, Inc., 1-Motor PhidgetServo v2.0 8104 Phidgets, Inc., 4-Motor PhidgetServo v2.0 8800 WiseGroup Ltd, MP-8800 Quad Joypad 8866 WiseGroup Ltd, MP-8866 Dual Joypad 0927 Summus, Ltd 0928 PLX Technology, Inc. (formerly Oxford Semiconductor, Ltd) 8000 Firmware uploader ffff Blank Oxford Device 0929 American Biometric Co. 092a Toshiba Information & Industrial Sys. And Services 092b Sena Technologies, Inc. 4210 20S - Bluetooth Motorcycle headset & universal intercom 092f Northern Embedded Science/CAVNEX 0004 JTAG-4 0005 JTAG-5 0930 Toshiba Corp. 0009 Gigabeat F/X (HDD audio player) 000c Gigabeat F (mtp) 0010 Gigabeat S (mtp) 01bf 2.5"External Hard Disk 0200 Integrated Bluetooth (Taiyo Yuden) 021c Atheros AR3012 Bluetooth 0301 PCX1100U Cable Modem (WDM) 0302 PCX2000 Cable Modem (WDM) 0305 Cable Modem PCX3000 0307 Cable Modem PCX2500 0308 PCX2200 Cable Modem (WDM) 0309 PCX5000 Cable Modem (WDM) 030b Cable Modem PCX2600 0501 Bluetooth Controller 0502 Integrated Bluetooth 0503 Bluetooth Controller 0505 Integrated Bluetooth 0506 Integrated Bluetooth 0507 Bluetooth Adapter 0508 Integrated Bluetooth HCI 0509 BT EDR Dongle 0706 PocketPC e740 0707 Pocket PC e330 Series 0708 Pocket PC e350 Series 0709 Pocket PC e750 Series 070a Pocket PC e400 Series 070b Pocket PC e800 Series 0a07 WLM-10U1 802.11abgn Wireless Adapter [Ralink RT3572] 0a08 WLM-20U2/GN-1080 802.11abgn Wireless Adapter [Atheros AR7010+AR9280] 0a0b WLU5053 802.11abgn Wireless Module [Broadcom BCM43236B] 0a13 AX88179 Gigabit Ethernet [Toshiba] 0b05 PX1220E-1G25 External hard drive 0b09 PX139xE 3.5 External HDD 0b1a STOR.E ALU 2S 1300 Wireless Broadband (CDMA EV-DO) SM-Bus Minicard Status Port 1301 Wireless Broadband (CDMA EV-DO) Minicard Status Port 1302 Wireless Broadband (3G HSDPA) SM-Bus Minicard Status Port 1303 Wireless Broadband (3G HSDPA) Minicard Status Port 1308 Broadband (3G HSDPA) SM-Bus Minicard Diagnostics Port 130b F3507g Mobile Broadband Module 130c F3607gw Mobile Broadband Module 1311 F3607gw v2 Mobile Broadband Module 1400 Memory Stick 2GB 140b Memory Stick 64GB 642f TravelDrive 6506 TravelDrive 2C 6507 TravelDrive 2C 6508 TravelDrive 2C 6509 TravelDrive 2C 6510 TravelDrive 2C 6517 TravelDrive 2C 6518 TravelDrive 2C 6519 Kingston DataTraveler 2.0 USB Stick 651a TravelDrive 2C 651b TravelDrive 2C 651c TravelDrive 2C 651d TravelDrive 2C 651e TravelDrive 2C 651f TravelDrive 2C 6520 TravelDrive 2C 6521 TravelDrive 2C 6522 TravelDrive 2C 6523 TravelDrive 6524 TravelDrive 6525 TravelDrive 6526 TravelDrive 6527 TravelDrive 6528 TravelDrive 6529 TravelDrive 652a TravelDrive 652b TravelDrive 652c TravelDrive 652d TravelDrive 652f TravelDrive 6530 TravelDrive 6531 TravelDrive 6532 256M Stick 6533 512M Stick 6534 TravelDrive 653c Kingston DataTraveler 2.0 Stick (512M) 653d Kingston DataTraveler 2.0 Stick (1GB) 653e Flash Memory 6540 TransMemory Flash Memory 6544 TransMemory-Mini / Kingston DataTraveler 2.0 Stick 6545 Kingston DataTraveler 102/2.0 / HEMA Flash Drive 2 GB / PNY Attache 4GB Stick a002 SunplusIT SATA bridge 0931 Harmonic Data Systems, Ltd 0932 Crescentec Corp. 0300 VideoAdvantage 0302 Syntek DC-112X 0320 VideoAdvantage 0482 USB2.0 TVBOX 1100 DC-1100 Video Enhamcement Device 1112 Veo Web Camera a311 Video Enhancement Device 0933 Quantum Corp. 0934 Spirent Communications 0936 NuTesla 000a Moebius 000b iMoebius 000c Rhythmedics 6 BioData Integrator 000d Hypurius 000e Millennius 000f Purius 0030 Composite Device, Mass Storage Device (Flash Drive) amd HID 003c Rhythmedics HID Bootloader 0939 Lumberg, Inc. 0b15 Toshiba Stor.E Alu 2 0b16 Toshiba StorE HDD 093a Pixart Imaging, Inc. 0007 CMOS 100K-R Rev. 1.90 010e Digital camera, CD302N/Elta Medi@ digi-cam/HE-501A 010f Argus DC-1610/DC-1620/Emprex PCD3600/Philips P44417B keychain camera/Precision Mini,Model HA513A/Vivitar Vivicam 55 020f Bullet Line Photo Viewer 050f Mars-Semi Pc-Camera 2460 Q-TEC WEBCAM 100 2468 SoC PC-Camera 2470 SoC PC-Camera 2471 SoC PC-Camera 2500 USB Optical Mouse 2510 Optical Mouse 2521 Optical Mouse 2600 Typhoon Easycam USB 330K (newer)/Typhoon Easycam USB 2.0 VGA 1.3M/Sansun SN-508 2601 SPC 610NC Laptop Camera 2603 PAC7312 Camera 2608 PAC7311 Trust WB-3300p 260e PAC7311 Gigaware VGA PC Camera:Trust WB-3350p:SIGMA cam 2350 260f PAC7311 SnakeCam 2621 PAC731x Trust Webcam 2622 Webcam Genius 2624 Webcam 2628 Webcam Genius iLook 300 2700 GE 1.3 MP MiniCam Pro 2811 Macally IceCam II 093b Plextor Corp. 0010 Storage Adapter 0011 PlexWriter 40/12/40U 0012 PlexWriter 48/24/48U 0023 PX-608CU DVD RW 0041 PX-708A DVD RW 0042 PX-712UF DVD RW a002 ConvertX M402U XLOADER a003 ConvertX AV100U A/V Capture Audio a004 ConvertX TV402U XLOADER a005 ConvertX TV100U A/V Capture a102 ConvertX M402U A/V Capture a104 ConvertX PX-TV402U/NA 093c Intrepid Control Systems, Inc. 0601 ValueCAN 0701 NeoVI Blue vehicle bus interface 093d InnoSync, Inc. 093e J.S.T. Mfg. Co., Ltd 093f Olympia Telecom Vertriebs GmbH 0940 Japan Storage Battery Co., Ltd 0941 Photobit Corp. 0942 i2Go.com, LLC 0943 HCL Technologies India Private, Ltd 0944 KORG, Inc. 0001 PXR4 4-Track Digital Recorder 0020 KAOSS Pad KP3 Dynamic Effect/Sampler 0023 KAOSSILATOR PRO Dynamic Phrase Synthesizer 010d nanoKEY MIDI keyboard 010e nanoPAD pad controller 010f nanoKONTROL studio controller 0117 nanoKONTROL2 MIDI Controller 012f SQ-1 0154 NTS-1 digital kit mkII 0203 KRONOS 0f03 K-Series K61P MIDI studio controller 0945 Pasco Scientific 0948 Kronauer music in digital 0301 USB Pro (24/48) 0302 USB Pro (24/96 playback) 0303 USB Pro (24/96 record) 0304 USB Pro (16/48) 1105 USB One 094b Linkup Systems Corp. 0001 neonode N2 094d Cable Television Laboratories 094f Yano 0101 U640MO-03 05fc METALWEAR-HDD 0951 Kingston Technology 0008 Ethernet 000a KNU101TX 100baseTX Ethernet 1539 Iron Key D300 (Virtual CD-ROM and USB Stick) 1600 DataTraveler II Pen Drive 1601 DataTraveler II+ Pen Drive 1602 DataTraveler Mini 1603 DataTraveler 1GB/2GB Pen Drive 1606 Eee PC 701 SD Card Reader [ENE UB6225] 1607 DataTraveler 100 160b DataTraveler 2.0 (2GB) 160d DataTraveler Vault Privacy 160e DT110P/1GB Capless 1613 DataTraveler DT101C Flash Drive 1616 DataTraveler Locker 4GB 161a Dell HyperVisor internal flash drive 1621 DataTraveler 150 (32GB) 1624 DataTraveler G2 1625 DataTraveler 101 II 162a DataTraveler 112 4GB Pen Drive 162b DataTraveler HyperX 3.0 162d DataTraveler 102 1630 DataTraveler 200 (32GB) 1642 DT101 G2 1643 DataTraveler G3 1653 Data Traveler 100 G2 8 GiB 1656 DataTraveler Ultimate G2 1660 Data Traveller 108 1665 Digital DataTraveler SE9 1666 DataTraveler 100 G3/G4/SE9 G2/50 Kyson 1689 DataTraveler SE9 168a DataTraveler Micro 168c DT Elite 3.0 169d DataTraveler Locker+ G3 Flash Drive 16a3 DataTraveler (DT) microDuo 3.0 16a4 HyperX 7.1 Audio 16b3 HyperX Savage 16c4 Hyperx Cloud Flight wireless headset 16d2 HX-KB4BL1-US [HYPERX Alloy FPS Pro] 16d4 HyperX SavageEXO [0382] 16d5 DataTraveler Elite G2 16df HyperX QuadCast 16e4 HyperX Pulsefire Raid 173c DataTraveler Duo 177f DataTraveler Max 0954 RPM Systems Corp. 0955 NVIDIA Corp. 7005 Bootloader 7018 T186 [Tegra Parker] 701a U-Boot running on Tegra 7020 L4T (Linux for Tegra) running on Tegra 7030 T30 [Tegra 3] recovery mode 7035 Jetson device in initrd flashing mode 7100 Tegra Device 7140 T124 [Tegra K1/Logan 32-bit] 7210 SHIELD Controller 7321 Switch [Tegra Erista] recovery mode 7323 T234 [Orin NX 16GB] recovery mode 7423 T234 [Orin NX 8GB] recovery mode 7721 T210 [TX1 Tegra Erista] recovery mode 7820 T20 [Tegra 2] recovery mode 7c18 T186 [TX2 Tegra Parker] recovery mode b400 SHIELD (debug) b401 SHIELD cf05 SHIELD Tablet (debug) cf06 SHIELD Tablet cf07 SHIELD Tablet cf08 SHIELD Tablet cf09 SHIELD Tablet 0956 BSquare Corp. 0957 Agilent Technologies, Inc. 0007 82357A GPIB Interface Firmware loader 0107 82357A GPIB Interface 0200 E-Video DC-350 Camera 0202 E-Video DC-350 Camera 0407 33220A Waveform Generator 0518 82357B GPIB Interface Firmware loader 0607 34410A Multimeter 0718 82357B GPIB Interface 0a07 34411A Multimeter 1507 33210A Waveform Generator 1745 Test and Measurement Device (IVI) 1907 53230A Frequency Counter 1f01 N5181A MXG Analog Signal Generator 2918 U2702A oscilloscope fb18 LC Device 0958 CompuLink Research, Inc. 0959 Cologne Chip AG 2bd0 Intelligent ISDN (Ver. 3.60.04) [HFC-S] 095a Portsmith 3003 Express Ethernet 095b Medialogic Corp. 095c K-Tec Electronics 095d Polycom, Inc. 0001 Polycom ViaVideo 0964 BITRAN 0967 Acer NeWeb Corp. 0204 WarpLink 802.11b Adapter 0968 Catalyst Enterprises, Inc. 096e Feitian Technologies, Inc. 0005 ePass2000 0006 HID Dongle (for OEMs - manufacturer string is "OEM") 0120 Microcosm Ltd Dinkey 0305 ePass2000Auto 0309 ePass3000GM 0401 ePass3000 0405 Zzkey Dongle 0503 SCR301 0608 SC Reader KP382 0702 ePass3003 0703 ePass3003Auto 0801 Token 0802 ePass2000 (G&D STARCOS SPK 2.4) 0807 ePass2003 085a Multipass FIDO 0891 Jubiter Wallet 0971 Gretag-Macbeth AG 2000 i1 Pro 2001 i1 Monitor 2003 Eye-One display 2005 Huey 2007 ColorMunki Photo 0973 Schlumberger 0001 e-gate Smart Card 0974 Datagraphix, a business unit of Anacomp 0975 OL'E Communications, Inc. 0976 Adirondack Wire & Cable 0977 Lightsurf Technologies 0978 Beckhoff GmbH 0979 Jeilin Technology Corp., Ltd 0222 Keychain Display 0224 JL2005A Toy Camera 0226 JL2005A Toy Camera 0227 JL2005B/C/D Toy Camera 097a Minds At Work LLC 0001 Digital Wallet 097b Knudsen Engineering, Ltd 097c Marunix Co., Ltd 097d Rosun Technologies, Inc. 097e Biopac Systems Inc. 0035 MP35 v1.0 097f Barun Electronics Co., Ltd 0981 Oak Technology, Ltd 0984 Apricorn 0040 SATA Wire (2.5") 0200 Hard Drive Storage (TPP) 1407 Secure Key 3.0 0985 cab Produkttechnik GmbH & Co KG 0045 Mach4/200 Label Printer 00a3 A3/200 or A3/300 Label Printer 0986 Matsushita Electric Works, Ltd. 098c Vitana Corp. 098d INDesign 098e Integrated Intellectual Property, Inc. 098f Kenwood TMI Corp. 0993 Gemstar eBook Group, Ltd 0001 REB1100 eBook Reader 0002 eBook 0996 Integrated Telecom Express, Inc. 099a Zippy Technology Corp. 0638 Sanwa Supply Inc. Small Keyboard 2620 Graphics tablet [Polostar PT1001, Zeniq PT1001, Leogics PT1001] 610c EL-610 Super Mini Electron luminescent Keyboard 6330 SANWA Supply Inc. Slim Keyboard 713a WK-713 Multimedia Keyboard 7160 Hyper Slim Keyboard 7202 Enermax Aurora Micro Wireless Receiver 099e Trimble Navigation, Ltd 09a3 PairGain Technologies 09a4 Contech Research, Inc. 09a5 VCON Telecommunications 09a6 Poinchips 8001 Mass Storage Device 09a7 Data Transmission Network Corp. 09a8 Lin Shiung Enterprise Co., Ltd 09a9 Smart Card Technologies Co., Ltd 09aa Intersil Corp. 1000 Prism GT 802.11b/g Adapter 3642 Prism 2.x 802.11b Adapter 09ab Japan Cash Machine Co., Ltd. 09ae Tripp Lite 0002 Any Device (see discussion) 09b0 Fargo 2400 HDP5000 09b2 Franklin Electronic Publishers, Inc. 0001 eBookman Palm Computer 09b3 Altius Solutions, Inc. 09b4 MDS Telephone Systems 09b5 Celltrix Technology Co., Ltd 09bc Grundig 0002 MPaxx MP150 MP3 Player 09be MySmart.Com 0001 MySmartPad 09bf Auerswald GmbH & Co. KG 00c0 COMpact 2104 ISDN PBX 00db COMpact 4410/2206 ISDN 00dc COMpact 4406 DSL (PBX) 00dd COMpact 2204 (PBX) 00de COMpact 2104 (Rev.2 PBX) 00e0 COMmander Business (PBX) 00e2 COMmander Basic.2 (PBX) 00f1 COMfort 2000 (System telephone) 00f2 COMfort 1200 (System telephone) 00f5 COMfortel 2500 (System telephone) 8000 COMpact 2104 DSL (DSL modem) 8001 COMpact 4406 DSL (DSL modem) 8002 Analog/ISDN Converter (Line converter) 8005 WG-640 (Automatic event dialer) 09c0 Genpix Electronics, LLC 0136 Axon CNS, MultiClamp 700B 0202 8PSK DVB-S tuner 0203 Skywalker-1 DVB-S tuner 0204 Skywalker-CW3K DVB-S tuner 0205 Skywalker-CW3K DVB-S tuner 0206 Skywalker-2 DVB-S tuner 09c1 Arris Interactive LLC 1337 TOUCHSTONE DEVICE 09c2 Nisca Corp. 09c3 HID Global 0007 Reader V2 0008 ZFG-9800-AC SmartCard Reader 0014 ActivIdentity ActivKey SIM USB Token 0028 Crescendo Key 0029 Crescendo Key 002a Crescendo Key 002b Crescendo Key 002c Crescendo Key 002e Crescendo Key 09c4 ACTiSYS Corp. 0011 ACT-IR2000U IrDA Dongle 09c5 Memory Corp. 09ca BMC Messsysteme GmbH 5544 PIO 09cb FLIR Systems 1001 Network Adapter 1002 Ex-Series RNDIS interface 1004 Ex-Series UVC interface 1005 Ex-Series RNDIS and UVC interface 1006 Ex-Series RNDIS and MSD interface 1007 Ex-Series UVC and MSD interface 1008 Serial Port 1996 FLIR ONE Camera 4007 Breach 09cc Workbit Corp. 0404 BAFO USB-ATA/ATAPI Bridge Controller 09cd Psion Dacom Home Networks, Ltd 2001 Psion WaveFinder DAB radio receiver 09ce City Electronics, Ltd 09cf Electronics Testing Center, Taiwan 09d1 NeoMagic, Inc. 09d2 Vreelin Engineering, Inc. 09d3 Com One 0001 ISDN TA / Light Rider 128K 000b Bluetooth Adapter class 2 09d7 Hexagon NovAtel Inc. 0100 GPS/GNSS/SPAN sensor 09d8 ELATEC GmbH 0320 TWN3 Multi125 0406 TWN4 MIFARE NFC 0410 TWN4 HID 0420 TWN4 CDC 09d9 KRF Tech, Ltd 09da A4Tech Co., Ltd. 0006 Optical Mouse WOP-35 / Trust 450L Optical Mouse 000a Optical Mouse Opto 510D / OP-620D 000e X-F710F Optical Mouse 3xFire Gaming Mouse 0018 Trust Human Interface Device 001a Wireless Mouse & RXM-15 Receiver 002a Wireless Optical Mouse NB-30 0103 Oscar X-710BK Gaming Mouse 022b Wireless Mouse (Battery Free) 024f RF Receiver and G6-20D Wireless Optical Mouse 0260 KV-300H Isolation Keyboard 032b Wireless Mouse (Battery Free) 09da Bloody V8 Mouse 1068 Bloody A90 Mouse 112c Bloody V5 Mouse 2268 Keyboard (FK11) 2690 PK-635G 3a60 Bloody V8M Core 2 Mouse 8090 X-718BK Oscar Optical Gaming Mouse 9033 X-718BK Optical Mouse 9066 F3 V-Track Gaming Mouse 9090 XL-730K / XL-747H / XL-750BK / XL-755BK Mice f613 Bloody V7M Mouse f6cc B314 Light Strike Gaming Keyboard fa44 B930 Light Strike RGB Mechanical Gaming Keyboard 09db Measurement Computing Corp. 0075 MiniLab 1008 0076 PMD-1024 007a PMD-1208LS 0081 USB-1616FS 0082 USB-1208FS 0088 USB-1616FS internal hub 09dc Aimex Corp. 09dd Fellowes, Inc. 09df Addonics Technologies Corp. 09e1 Intellon Corp. 5121 MicroLink dLAN 09e5 Jo-Dan International, Inc. 09e6 Silutia, Inc. 09e7 Real 3D, Inc. 09e8 AKAI Professional M.I. Corp. 0029 APC40 mkII 0045 MPK Mini Mk II MIDI Controller 0062 MPD16 MIDI Pad Controller Unit 006d EWI electronic wind instrument 0071 MPK25 MIDI Keyboard 0076 LPK25 MIDI Keyboard 007c MPK Mini MIDI Controller 09e9 Chen-Source, Inc. 09eb IM Networks, Inc. 4331 iRhythm Tuner Remote 09ef Xitel 0101 MD-Port DG2 MiniDisc Interface 09f3 GoFlight, Inc. 0018 GF-46 Multi-Mode Display Module 0028 RP-48 Combination Pushbutton-Rotary Module 0048 LGTII - Landing Gear and Trim Control Module 0064 MCPPro - Airliner Mode Control Panel (Autopilot) 0300 EFIS - Electronic Flight Information System 09f5 AresCom 0168 Network Adapter 0188 LAN Adapter 0850 Adapter 09f6 RocketChips, Inc. 09f7 Edu-Science (H.K.), Ltd 09f8 SoftConnex Technologies, Inc. 09f9 Bay Associates 09fa Mtek Vision 09fb Altera 6001 Blaster 09ff Gain Technology Corp. 0a00 Liquid Audio 0a01 ViA, Inc. 0a05 Unknown Manufacturer 0001 Hub 7211 hub 0a07 Ontrak Control Systems Inc. 0064 ADU100 Data Acquisition Interface 0078 ADU120 Data Acquisition Interface 0082 ADU130 Data Acquisition Interface 00c8 ADU200 Relay I/O Interface 00d0 ADU208 Relay I/O Interface 00da ADU218 Solid-State Relay I/O Interface 0a0b Cybex Computer Products Co. 0a0d Servergy, Inc 2514 CTS-1000 Internal Hub 0a11 Xentec, Inc. 0a12 Cambridge Silicon Radio, Ltd 0001 Bluetooth Dongle (HCI mode) 0002 Frontline Test Equipment Bluetooth Device 0003 Nanosira 0004 Nanosira WHQL Reference Radio 0005 Nanosira-Multimedia 0006 Nanosira-Multimedia WHQL Reference Radio 0007 Nanosira3-ROM 0008 Nanosira3-ROM 0009 Nanosira4-EDR WHQL Reference Radio 000a Nanosira4-EDR-ROM 000b Nanosira5-ROM 0042 SPI Converter 0043 Bluetooth Device 0100 Casira with BlueCore2-External Module 0101 Casira with BlueCore2-Flash Module 0102 Casira with BlueCore3-Multimedia Module 0103 Casira with BlueCore3-Flash Module 0104 Casira with BlueCore4-External Module 0105 Casira with BlueCore4-Multimedia Module 1000 Bluetooth Dongle (HID proxy mode) 1010 Bluetooth Device 1011 Bluetooth Device 1012 Bluetooth Device 1243 CSRA64210 [TaoTronics Headset BH-22 in charging mode] 4007 Mpow HC5 Headset in charging mode - HID / Mass Storage 4010 Mpow HC5 Headset in charging mode - USB Hub ffff USB Bluetooth Device in DFU State 0a13 Telebyte, Inc. 0a14 Spacelabs Medical, Inc. 0a15 Scalar Corp. 0a16 Trek Technology (S) PTE, Ltd 1111 ThumbDrive 8888 IBM USB Memory Key 9988 Trek2000 TD-G2 0a17 Pentax Corp. 0004 Optio 330 0006 Optio S / S4 0007 Optio 550 0009 Optio 33WR 000a Optio 555 000c Optio 43WR (mass storage mode) 000d Optio 43WR 0015 Optio S40/S5i 003b Optio 50 (mass storage mode) 003d Optio S55 0041 Optio S5z 0043 *ist DL 0047 Optio S60 0052 Optio 60 Digital Camera 006e K10D 0070 K100D 0093 K200D 00a7 Optio E50 1001 EI2000 Camera powered by Digita! 0a18 Heidelberger Druckmaschinen AG 0a19 Hua Geng Technologies, Inc. 0a21 Medtronic Physio Control Corp. 8001 MMT-7305WW [Medtronic Minimed CareLink] 0a22 Century Semiconductor USA, Inc. 0a27 Datacard Group 0102 SP35 0a2c AK-Modul-Bus Computer GmbH 0008 GPIO Ports 0a34 TG3 Electronics, Inc. 0101 TG82tp 0110 Deck 82-key backlit keyboard 0a35 Radikal Technologies 002a SAC - Software Assigned Controller 008a SAC Hub 0a38 IRIS sa 0a39 Gilat Satellite Networks, Ltd 0a3a PentaMedia Co., Ltd 0163 KN-W510U 1.0 Wireless LAN Adapter 0a3c NTT DoCoMo, Inc. 0a3d Varo Vision 0a3f Swissonic AG 0a43 Boca Systems, Inc. 0a46 Davicom Semiconductor, Inc. 0268 ST268 6688 ZT6688 Fast Ethernet Adapter 8515 ADMtek ADM8515 NIC 9000 DM9000E Fast Ethernet Adapter 9601 DM9601 Fast Ethernet Adapter 0a47 Hirose Electric 0a48 I/O Interconnect 3233 Multimedia Card Reader 3239 Multimedia Card Reader 3258 Dane Elec zMate SD Reader 3259 Dane Elec zMate CF Reader 5000 MediaGear xD-SM 500a Mass Storage Device 500f Mass Storage Device 5010 Mass Storage Device 5011 Mass Storage Device 5014 Mass Storage Device 5020 Mass Storage Device 5021 Mass Storage Device 5022 Mass Storage Device 5023 Mass Storage Device 5024 Mass Storage Device 5025 Mass Storage Device 0a4a Ploytec GmbH a400 AUDIO JUNCTION 2.0 0a4b Fujitsu Media Devices, Ltd 0a4c Computex Co., Ltd 15d9 OPTICAL MOUSE 0a4d Evolution Electronics, Ltd 0064 MK-225 Driver 0065 MK-225C Driver 0066 MK-225C Driver 0067 MK-425C Driver 0078 MK-37 Driver 0079 MK-37C Driver 007a MK-37C Driver 008c TerraTec MIDI MASTER 008d MK-249C Driver 008e MK-249C MIDI Keyboard 008f MK-449C Driver 0090 Keystation 49e Driver 0091 Keystation 61es Driver 00a0 MK-361 Driver 00a1 MK-361C Driver 00a2 MK-361C Driver 00a3 MK-461C MIDI Keyboard 00b5 Keystation Pro 88 Driver 00d2 E-Keys Driver 00f0 UC-16 Driver 00f1 X-Session Driver 00f5 UC-33e MIDI Controller 0a4e Steinberg Soft-und Hardware GmbH 0a4f Litton Systems, Inc. 0a50 Mimaki Engineering Co., Ltd 0a51 Sony Electronics, Inc. 0a52 Jebsee Electronics Co., Ltd 0a53 Portable Peripheral Co., Ltd 1000 Scanner 2000 Q-Scan A6 Scanner 2001 Q-Scan A6 Scanner 2013 Media Drive A6 Scanner 2014 Media Drive A6 Scanner 2015 BizCardReader 600C 2016 BizCardReader 600C 202a Scanshell-CSSN 3000 Q-Scan A8 Scanner 3002 Q-Scan A8 Reader 3015 BizCardReader 300G 302a LM9832 - PA570 Mini Business Card Scanner [Targus] 5001 BizCardReader 900C 0a5a Electronics For Imaging, Inc. 0a5b EAsics NV 0a5c Broadcom Corp. 0201 iLine10(tm) Network Adapter 0bdc 802.11a/b/g/n/ac Wireless Adapter 2000 Bluetooth Device 2001 Bluetooth Device 2009 BCM2035 Bluetooth 200a BCM2035 Bluetooth dongle 200f Bluetooth Controller 201d Bluetooth Device 201e IBM Integrated Bluetooth IV 2020 Bluetooth dongle 2021 BCM2035B3 Bluetooth Adapter 2033 BCM2033 Bluetooth 2035 BCM2035 Bluetooth 2038 Blutonium Device 2039 BCM2045 Bluetooth 2045 Bluetooth Controller 2046 Bluetooth Device 2047 Bluetooth Device 205e Bluetooth Device 2100 Bluetooth 2.0+eDR dongle 2101 BCM2045 Bluetooth 2102 ANYCOM Blue USB-200/250 2110 BCM2045B (BDC-2) [Bluetooth Controller] 2111 ANYCOM Blue USB-UHE 200/250 2120 2045 Bluetooth 2.0 USB-UHE Device with trace filter 2121 BCM2210 Bluetooth 2122 Bluetooth 2.0+EDR dongle 2123 Bluetooth dongle 2130 2045 Bluetooth 2.0 USB-UHE Device with trace filter 2131 2045 Bluetooth 2.0 Device with trace filter 2145 BCM2045B (BDC-2.1) [Bluetooth Controller] 2148 BCM92046DG-CL1ROM Bluetooth 2.1 Adapter 2150 BCM2046 Bluetooth Device 2151 Bluetooth 2154 BCM92046DG-CL1ROM Bluetooth 2.1 UHE Dongle 216a BCM43142A0 Bluetooth 216c BCM43142A0 Bluetooth Device 216d BCM43142A0 Bluetooth 4.0 216f BCM20702A0 Bluetooth 217d HP Bluethunder 217f BCM2045B (BDC-2.1) 2198 Bluetooth 3.0 Device 219b Bluetooth 2.1 Device 219c BCM2070 Bluetooth 21b1 HP Bluetooth Module 21b4 BCM2070 Bluetooth 2.1 + EDR 21b9 BCM2070 Bluetooth 2.1 + EDR 21ba BCM2070 Bluetooth 2.1 + EDR 21bb BCM2070 Bluetooth 2.1 + EDR 21bc BCM2070 Bluetooth 2.1 + EDR 21bd BCM2070 Bluetooth 2.1 + EDR 21d7 BCM43142 Bluetooth 4.0 21e1 HP Portable SoftSailing 21e3 HP Portable Valentine 21e6 BCM20702 Bluetooth 4.0 [ThinkPad] 21e8 BCM20702A0 Bluetooth 4.0 21ec BCM20702A0 Bluetooth 4.0 21f1 HP Portable Bumble Bee 22be BCM2070 Bluetooth 3.0 + HS 4500 BCM2046B1 USB 2.0 Hub (part of BCM2046 Bluetooth) 4502 Keyboard (Boot Interface Subclass) 4503 Mouse (Boot Interface Subclass) 5800 BCM5880 Secure Applications Processor 5801 BCM5880 Secure Applications Processor with fingerprint swipe sensor 5802 BCM5880 Secure Applications Processor with fingerprint touch sensor 5803 BCM5880 Secure Applications Processor with secure keyboard 5804 BCM5880 Secure Applications Processor with fingerprint swipe sensor 5832 BCM5880 Secure Applications Processor Smartcard reader 5843 BCM58200 ControlVault 3 (FingerPrint sensor + Contacted SmartCard) 6300 Pirelli Remote NDIS Device 6410 BCM20703A1 Bluetooth 4.1 + LE bd11 BCM4320 802.11bg Wireless Adapter bd12 BCM4326U 802.11bg Wireless Adapter bd13 BCM4323 802.11abgn Wireless Adapter bd16 BCM4319 802.11bgn Wireless Adapter bd17 BCM43236 802.11abgn Wireless Adapter bd1d BCM43526 802.11a/b/g/n/ac (2x2) Wireless Adapter bd1e BCM43143 802.11bgn (1x1) Wireless Adapter bd1f BCM43242 802.11abgn Wireless Adapter d11b Eminent EM4045 [Broadcom 4320 USB] 0a5d Diatrend Corp. 0a5f Zebra Technologies 0009 LP2844 Printer 0027 ZTC LP2844-Z-200dpi 0050 P120i / WM120i 0062 GK420d Label Printer 0065 ZM400 Label Printer 0080 GK420d Label Printer 0081 GK420t Label Printer 0084 GX420d Desktop Label Printer 008b HC100 wristbands Printer 008c ZP 450 Printer 00a1 TLP2824 Plus 00d1 GC420d Label Printer 0110 ZD500 Desktop Label Printer 011c ZD410 Direct Thermal Label Printer 0141 ZD620 0172 ZT411 Barcode Label Printer 930a Printer 0a62 MPMan 0010 MPMan MP-F40 MP3 Player 0a66 ClearCube Technology 0a67 Medeli Electronics Co., Ltd ffff LCS Audio 0a68 Comaide Corp. 0a69 Chroma ate, Inc. 0a6b Green House Co., Ltd 0001 Compact Flash R/W with MP3 player 000f FlashDisk 0a6c Integrated Circuit Systems, Inc. 0a6d UPS Manufacturing 0a6e Benwin 0a6f Core Technology, Inc. 0400 Xanboo 0a70 International Game Technology 0a71 VIPColor Technologies USA, Inc. 0001 VP485 Printer 0a72 Sanwa Denshi 0a73 Mackie Designs 0002 XD-2 [Spike] 0a7d NSTL, Inc. 0a7e Octagon Systems Corp. 0a80 Rexon Technology Corp., Ltd 0a81 Chesen Electronics Corp. 0101 Keyboard 0103 Keyboard 0203 Mouse 0205 PS/2 Keyboard+Mouse Adapter 0701 USB Missile Launcher ff01 Wireless Missile Launcher 0a82 Syscan 4600 TravelScan 460/464 6605 ScanShell 800N 0a83 NextComm, Inc. 0a84 Maui Innovative Peripherals 0a85 Idexx Labs 0a86 NITGen Co., Ltd 0a89 Aktiv 0001 Guardant Stealth/Net 0002 Guardant ID 0003 Guardant Stealth 2 0004 Rutoken 0005 Guardant Fidus 0006 Guardant Stealth 3 0007 Guardant Stealth 2 0008 Guardant Stealth 3 Sign/Time 0009 Guardant Code 000a Guardant Sign Pro 000b Guardant Sign Pro HID 000c Guardant Stealth 3 Sign/Time 000d Guardant Code HID 000f Guardant System Firmware Update 0020 Rutoken S 0025 Rutoken lite 0026 Rutoken lite HID 002a Rutoken Mass Storage 002b Guardant Mass Storage 0030 Rutoken ECP 0040 Rutoken ECP HID 0060 Rutoken Magistra 0061 Rutoken Magistra 0069 Reader 0080 Rutoken PinPad Ex 0081 Rutoken PinPad In 0082 Rutoken PinPad 2 0a8d Picturetel 0a8e Japan Aviation Electronics Industry, Ltd 2011 Filter Driver For JAE XMC R/W 0a90 Candy Technology Co., Ltd 0a91 Globlink Technology, Inc. 3801 Targus PAKP003 Mouse 0a92 EGO SYStems, Inc. 0011 SYS WaveTerminal U2A 0021 GIGAPort 0031 GIGAPortAG 0053 AudioTrak Optoplay 0061 Waveterminal U24 0071 MAYA EX7 0091 Maya 44 00b1 MAYA EX5 1000 MIDI Mate 1010 RoMI/O 1020 M4U 1030 M8U 1090 KeyControl49 10a0 KeyControl25 0a93 C Technologies AB 0002 C-Pen 10 0005 MyPen Light 000d Input Pen 0010 C-Pen 20 0a93 PayPen 0a94 Intersense 0aa3 Lava Computer Mfg., Inc. 0aa4 Develco Elektronik 0aa5 First International Digital 0002 irock! 500 Series 0801 MP3 Player 0aa6 Perception Digital, Ltd 0101 Hercules Jukebox 1501 Store 'n' Go HD Drive 0aa7 Wincor Nixdorf International GmbH 0100 POS Keyboard, TA58P-USB 0101 POS Keyboard, TA85P-USB 0102 POS Keyboard, TA59-USB 0103 POS Keyboard, TA60-USB 0104 SNIkey Keyboard, SNIKey-KB-USB 0200 Operator Display, BA63-USB 0201 Operator Display, BA66-USB 0202 Operator Display & Scanner, XiCheck-BA63 0203 Operator Display & Scanner, XiCheck-BA66 0204 Graphics Operator Display, BA63GV 0300 POS Printer (printer class mode), TH210 0301 POS Printer (native mode), TH210 0302 POS Printer (printer class mode), TH220 0303 POS Printer (native mode), TH220 0304 POS Printer, TH230 0305 Lottery Printer, XiPrintPlus 0306 POS Printer (printer class mode), TH320 0307 POS Printer (native mode), TH320 0308 POS Printer (printer class mode), TH420 0309 POS Printer (native mode), TH420 030a POS Printer, TH200B 0400 Lottery Scanner, Xiscan S 0401 Lottery Scanner, Xiscan 3 0402 Programmable Magnetic Swipe Card Reader, MSRP-USB 0500 IDE Adapter 0501 Hub Printer Interface 0502 Hub SNIKey Keyboard 4304 Banking Printer TP07 4305 Banking Printer TP07c 4500 WN Central Special Electronics 0aa8 TriGem Computer, Inc. 0060 TG 11Mbps WLAN Mini Adapter 1001 DreamComboM4100 3002 InkJet Color Printer 8001 TG_iMON 8002 TG_KLOSS a001 TG_X2 a002 TGVFD_KLOSS ffda iMON_VFD 0aa9 Baromtec Co. f01b Medion MD 6242 MP3 Player 0aaa Japan CBM Corp. 0aab Vision Shape Europe SA 0aac iCompression, Inc. 0aad Rohde & Schwarz GmbH & Co. KG 0003 NRP-Z21 000c NRP-Z11 0013 NRP-Z22 0014 NRP-Z23 0015 NRP-Z24 0016 NRP-Z51 0017 NRP-Z52 0018 NRP-Z55 0019 NRP-Z56 0021 NRP-Z91 0023 NRP-Z81 002c NRP-Z31 002d NRP-Z37 002f NRP-Z27 0051 NRP-Z28 0052 NRP-Z98 0062 NRP-Z92 0070 NRP-Z57 0083 NRP-Z85 0095 NRP-Z86 0117 HMF / HMP / HMS-X / HMO series Oscilloscopes 0118 HMF / HMP / HMS-X / HMO series Oscilloscopes 0119 HMF / HMP / HMS-X / HMO series Oscilloscopes 0aae NEC infrontia Corp. (Nitsuko) 0aaf Digitalway Co., Ltd 0ab0 Arrow Strong Electronics Co., Ltd 0ab1 FEIG ELECTRONIC GmbH 0002 OBID RFID-Reader 0004 OBID classic-pro 0aba Ellisys 8001 Tracker 110 Protocol Analyzer 8002 Explorer 200 Protocol Analyzer 0abe Stereo-Link 0101 SL1200 DAC 0abf Diolan 3370 I2C/SPI Adapter - U2C-12 0ac3 Sanyo Semiconductor Company Micro 0ac4 Leco Corp. 0ac5 I & C Corp. 0ac6 Singing Electrons, Inc. 0ac7 Panwest Corp. 0ac8 Z-Star Microelectronics Corp. 0301 Web Camera 0302 ZC0302 Webcam 0321 Vimicro generic vc0321 Camera 0323 Luxya WC-1200 USB 2.0 Webcam 0328 A4Tech PK-130MG 0336 Elecom UCAM-DLQ30 301b ZC0301 Webcam 303b ZC0303 Webcam 305b ZC0305 Webcam 307b USB 1.1 Webcam 332d Vega USB 2.0 Camera 3343 Sirius USB 2.0 Camera 3370 Traveler TV 6500 SF Dia-scanner 3420 Venus USB2.0 Camera c001 Sony embedded vimicro Camera c002 Visual Communication Camera VGP-VCC1 c302 Vega USB 2.0 Camera c303 Saturn USB 2.0 Camera c326 Namuga 1.3M Webcam c33f Webcam c412 Lenovo IdeaCentre Web Camera c429 Lenovo ThinkCentre Web Camera c42d Lenovo IdeaCentre Web Camera 0ac9 Micro Solutions, Inc. 0000 Backpack CD-ReWriter 0001 BACKPACK 2 Cable 0010 BACKPACK CD Drive 0011 Backpack 40GB Hard Drive 0110 BACKPACK 0111 BackPack 10ff BACKPACK 1234 BACKPACK 0aca OPEN Networks Ltd 1060 OPEN NT1 Plus II 0acc Koga Electronics Co. 0acd ID Tech 0300 IDT1221U RS-232 Adapter 0401 Spectrum III Hybrid Smartcard Reader 0630 Spectrum III Mag-Only Insert Reader (SPT3-355 Series) USB-CDC 0810 SecurePIN (IDPA-506100Y) PIN Pad 2030 ValueMag Magnetic Stripe Reader 3710 ViVOpay Kiosk III 0ace ZyDAS 1201 ZD1201 802.11b 1211 ZD1211 802.11g 1215 ZD1211B 802.11g 1221 ZD1221 802.11n 1602 ZyXEL Omni FaxModem 56K 1608 ZyXEL Omni FaxModem 56K UNO 1611 ZyXEL Omni FaxModem 56K Plus 2011 Virtual media for 802.11bg 20ff Virtual media for 802.11bg a211 ZD1211 802.11b/g Wireless Adapter b215 802.11bg 0acf Intoto, Inc. 0ad0 Intellix Corp. 0ad1 Remotec Technology, Ltd 0ad2 Service & Quality Technology Co., Ltd 0ada Data Encryption Systems Ltd. 0005 DK2 0ae3 Allion Computer, Inc. 0ae4 Taito Corp. 0ae7 Neodym Systems, Inc. 0ae8 System Support Co., Ltd 0ae9 North Shore Circuit Design L.L.P. 0aea SciEssence, LLC 0aeb TTP Communications, Ltd 0aec Neodio Technologies Corp. 2101 SmartMedia Card Reader 2102 CompactFlash Card Reader 2103 MMC/SD Card Reader 2104 MemoryStick Card Reader 2201 SmartMedia+CompactFlash Card Reader 2202 SmartMedia+MMC/SD Card Reader 2203 SmartMedia+MemoryStick Card Reader 2204 CompactFlash+MMC/SD Card Reader 2205 CompactFlash+MemoryStick Card Reader 2206 MMC/SD+MemoryStick Card Reader 2301 SmartMedia+CompactFlash+MMC/SD Card Reader 2302 SmartMedia+CompactFlash+MemoryStick Card Reader 2303 SmartMedia+MMC/SD+MemoryStick Card Reader 2304 CompactFlash+MMC/SD+MemoryStick Card Reader 3016 MMC/SD+Memory Stick Card Reader 3050 ND3050 8-in-1 Card Reader 3060 1.1 FS Card Reader 3101 MMC/SD Card Reader 3102 MemoryStick Card Reader 3201 MMC/SD+MemoryStick Card Reader 3216 HS Card Reader 3260 ND3260 7-in-1 Card Reader 5010 ND5010 Card Reader 0af0 Option 5000 UMTS Card 6000 GlobeTrotter 3G datacard 6300 GT 3G Quad UMTS/GPRS Card 6600 GlobeTrotter 3G+ datacard 6711 GlobeTrotter Express 7.2 v2 6971 Globetrotter HSDPA Modem 7251 Globetrotter HSUPA Modem (aka iCON HSUPA E) 7501 Globetrotter HSUPA Modem (icon 411 aka "Vodafone K3760") 7601 Globetrotter MO40x 3G Modem (GTM 382) 7701 Globetrotter HSUPA Modem (aka icon 451) d055 Globetrotter GI0505 [iCON 505] 0af6 Silver I Co., Ltd 0af7 B2C2, Inc. 0101 Digital TV USB Receiver (DVB-S/T/C / ATSC) 0af9 Hama, Inc. 0010 USB SightCam 100 0011 Micro Innovations IC50C Webcam 0afa DMC Co., Ltd. 07d2 Controller Board for Projected Capacitive Touch Screen DUS3000 0afc Zaptronix Ltd 0afd Tateno Dennou, Inc. 0afe Cummins Engine Co. 0aff Jump Zone Network Products, Inc. 0b00 INGENICO 0b05 ASUSTek Computer, Inc. 0001 MeMO Pad HD 7 (CD-ROM mode) 0301 MyPal A696 GPS PDA 1101 Mass Storage (UISDMC4S) 1706 WL-167G v1 802.11g Adapter [Ralink RT2571] 1707 WL-167G v1 802.11g Adapter [Ralink RT2571] 1708 Mass Storage Device 170b Multi card reader 170c WL-159g 802.11bg [ZyDAS ZD1211B+AL2230] 170d 802.11b/g Wireless Network Adapter 1712 BT-183 Bluetooth 2.0+EDR adapter 1715 2045 Bluetooth 2.0 Device with trace filter 1716 Bluetooth Device 1717 WL169gE 802.11g Adapter [Broadcom 4320 USB] 171b A9T wireless 802.11bg 171c 802.11b/g Wireless Network Adapter 171f My Cinema U3000 Mini [DiBcom DiB7700P] 1723 WL-167G v2 802.11g Adapter [Ralink RT2571W] 1724 RT2573 1726 Laptop OLED Display 172a 802.11n Network Adapter 172b 802.11n Network Adapter 1731 802.11n Network Adapter 1732 802.11n Network Adapter 1734 AF-200 173c BT-183 Bluetooth 2.0 173f My Cinema U3100 Mini 1742 802.11n Network Adapter 1743 Xonar U1 Audio Station 1751 BT-253 Bluetooth Adapter 175b Laptop OLED Display 1760 802.11n Network Adapter 1761 USB-N11 802.11n Network Adapter [Ralink RT2870] 1774 Gobi Wireless Modem (QDL mode) 1776 Gobi Wireless Modem 1779 My Cinema U3100 Mini Plus [AF9035A] 1784 USB-N13 802.11n Network Adapter (rev. A1) [Ralink RT3072] 1786 USB-N10 802.11n Network Adapter [Realtek RTL8188SU] 1788 BT-270 Bluetooth Adapter 1791 WL-167G v3 802.11n Adapter [Realtek RTL8188SU] 179c Bluetooth Adapter 179d USB-N53 802.11abgn Network Adapter [Ralink RT3572] 179e Eee Note EA800 (network mode) 179f Eee Note EA800 (tablet mode) 17a0 Xonar U3 sound card 17a1 Eee Note EA800 (mass storage mode) 17ab USB-N13 802.11n Network Adapter (rev. B1) [Realtek RTL8192CU] 17b5 Broadcom BCM20702A0 Bluetooth 17ba N10 Nano 802.11n Network Adapter [Realtek RTL8192CU] 17c2 ROG Spitfire 17c7 WL-330NUL 17c9 USB-AC53 802.11a/b/g/n/ac Wireless Adapter [Broadcom BCM43526] 17cb Broadcom BCM20702A0 Bluetooth 17d1 AC51 802.11a/b/g/n/ac Wireless Adapter [Mediatek MT7610U] 17d2 USB-AC56 802.11a/b/g/n/ac Wireless Adapter [Realtek RTL8812AU] 17d3 USB-N10 v2 802.11b/g/n Wireless Adapter [MediaTek MT7601U] 17db USB-AC50 802.11a/b/g/n/ac (1x1) Wireless Adapter [MediaTek MT7610U] 17e8 USB-N14 802.11b/g/n (2x2) Wireless Adapter [Ralink RT5372] 17eb USB-AC55 802.11a/b/g/n/ac Wireless Adapter [MediaTek MT7612U] 17f5 Xonar U5 sound card 180a Broadcom BCM20702 Single-Chip Bluetooth 4.0 + LE 1817 USB-AC68 802.11a/b/g/n/ac (4x4) Wireless Adapter [Realtek RTL8814AU] 1825 Qualcomm Bluetooth 4.1 18f0 Realtek 8188EUS [USB-N10 Nano] 4c80 Transformer Pad TF300TG 4c90 Transformer Pad Infinity TF700 4c91 Transformer Pad Infinity TF700 (Debug mode) 4ca0 Transformer Pad TF701T 4ca1 Transformer Pad TF701T (Debug mode) 4d00 Transformer Prime TF201 4d01 Transformer Prime TF201 (debug mode) 4daf Transformer Pad Infinity TF700 (Fastboot) 5410 MeMO Pad HD 7 (MTP mode) 5412 MeMO Pad HD 7 (PTP mode) 550f Fonepad 7 6101 Cable Modem 620a Remote NDIS Device 7772 Zenfone GO (ZB500KL) (MTP mode) 7773 Zenfone GO (ZB500KL) (Debug, MTP mode) 7774 Zenfone GO (ZB500KL) (RNDIS mode) 7775 Zenfone GO (ZB500KL) (Debug, RNDIS mode) 7776 Zenfone GO (ZB500KL) (PTP mode) 7777 Zenfone GO (ZB500KL) (Debug, PTP mode) b700 Broadcom Bluetooth 2.1 0b0b Datamax-O'Neil 106e Datamax E-4304 0b0c Todos AB 0009 Todos Argos Mini II Smart Card Reader 001e e.dentifier2 (ABN AMRO electronic banking card reader NL) 002e C200 smartcard controller (Nordea card reader) 003f Todos C400 smartcard controller (Handelsbanken card reader) 0050 Argos Mini II Smart Card Reader (CCID) 0b0d ProjectLab 0000 CenturyCD 0b0e GN Netcom 0305 Jabra EVOLVE Link MS 0311 Jabra EVOLVE 65 0312 enc060:Buttons Volume up/down/mute + phone [Jabra] 0343 Jabra UC VOICE 150a 0348 Jabra UC VOICE 550a MS 034c Jabra UC Voice 750 MS 034d Jabra UC VOICE 750 0410 Jabra SPEAK 410 0420 Jabra SPEAK 510 0422 Jabra SPEAK 510 USB 0933 Jabra Freeway 094d GN Netcom / Jabra REVO Wireless 1017 Jabra PRO 930 1022 Jabra PRO 9450, Type 9400BS (DECT Headset) 1041 Jabra PRO 9460 1900 Jabra Biz 1900 2007 GN 2000 Stereo Corded Headset 2456 Jabra SPEAK 810 245e Jabra Link 370 620c Jabra BT620s 9330 Jabra GN9330 Headset a346 Jabra Engage 75 Stereo a50a Alienware Wireless Gaming Headset AW988 0b0f AVID Technology 0400 DNxID 0b10 Pcally 0b11 I Tech Solutions Co., Ltd 0b1e Electronic Warfare Assoc., Inc. (EWA) 8007 Blackhawk USB560-BP JTAG Emulator 0b1f Insyde Software Corp. 0b20 TransDimension, Inc. 0b21 Yokogawa Electric Corp. 0b22 Japan System Development Co., Ltd 0b23 Pan-Asia Electronics Co., Ltd 0b24 Link Evolution Corp. 0b27 Ritek Corp. 0b28 Kenwood Corp. 0b2c Village Center, Inc. 0b30 PNY Technologies, Inc. 0006 SM Media-Shuttle Card Reader 0b33 Contour Design, Inc. 0020 ShuttleXpress 0030 ShuttlePro v2 0401 RollerMouse Free 2 0700 RollerMouse Pro 08a0 Perfit Mouse 1000 RollerMouse Red 1010 Vidamic Technomouse IQ 0b37 Hitachi ULSI Systems Co., Ltd 0b38 Gear Head 0003 Keyboard 0010 107-Key Keyboard 0b39 Omnidirectional Control Technology, Inc. 0001 Composite USB PS2 Converter 0109 USB TO Ethernet 0421 Serial 0801 USB-Parallel Bridge 0901 OCT To Fast Ethernet Converter 0c03 LAN DOCK Serial Converter 0b3a IPaxess 0b3b Tekram Technology Co., Ltd 0163 TL-WN320G 1.0 WLAN Adapter 1601 Allnet 0193 802.11b Adapter 1602 ZyXEL ZyAIR B200 802.11b Adapter 1612 AIR.Mate 2@net 802.11b Adapter 1613 802.11b Wireless LAN Adapter 1620 Allnet Wireless Network Adapter [Envara WiND512] 1630 QuickWLAN 802.11bg 5630 802.11bg 6630 ZD1211 0b3c Olivetti Techcenter a010 Simple_Way Printer/Scanner/Copier c000 Olicard 100 c700 Olicard 100 (Mass Storage mode) 0b3e Kikusui Electronics Corp. 0b41 Hal Corp. 0011 Crossam2+USB IR commander 0b43 Play.com, Inc. 0003 PS2 Controller Converter 0005 GameCube Adaptor 0b47 Sportbug.com, Inc. 0b48 TechnoTrend AG 1003 Technotrend/Hauppauge USB-Nova 1004 TT-PCline 1005 Technotrend/Hauppauge USB-Nova 1006 Technotrend/Hauppauge DEC3000-s 1007 TT-micro plus Device 1008 Technotrend/Hauppauge DEC2000-t 1009 Technotrend/Hauppauge DEC2540-t 3001 DVB-S receiver 3002 DVB-C receiver 3003 DVB-T receiver 3004 TT TV-Stick 3005 TT TV-Stick (8kB EEPROM) 3006 TT-connect S-2400 DVB-S receiver 3007 TT-connect S2-3600 3008 TT-connect 3009 TT-connect S-2400 DVB-S receiver (8kB EEPROM) 300a TT-connect S2-3650 CI 300b TT-connect C-3650 CI 300c TT-connect T-3650 CI 300d TT-connect CT-3650 CI 300e TT-connect C-2400 3011 TT-connect S2-4600 3012 TT-connect CT2-4650 CI 3014 TT-TVStick CT2-4400 3015 TT-connect CT2-4650 CI 3017 TT-connect S2-4650 CI 0b49 ASCII Corp. 064f Trance Vibrator 0b4b Pine Corp. Ltd. 0100 D'music MP3 Player 0b4d Graphtec America, Inc. 110a Graphtec CC200-20 1123 Electronic Cutting Tool [Silhouette Portrait] 0b4e Musical Electronics, Ltd 6500 MP3 Player 8028 MP3 Player 8920 MP3 Player 0b50 Dumpries Co., Ltd 0b51 Comfort Keyboard Co. 0020 Comfort Keyboard 0b52 Colorado MicroDisplay, Inc. 0b54 Sinbon Electronics Co., Ltd 0b56 TYI Systems, Ltd 0b57 Beijing HanwangTechnology Co., Ltd 0b59 Lake Communications, Ltd 0b5a Corel Corp. 0b5f Green Electronics Co., Ltd 0b60 Nsine, Ltd 0b61 NEC Viewtechnology, Ltd 0b62 Orange Micro, Inc. 000b Bluetooth Device 0059 iBOT2 Webcam 0b63 ADLink Technology, Inc. 0b64 Wonderful Wire Cable Co., Ltd 0b65 Expert Magnetics Corp. 0b66 Cybiko Inc. 0041 Xtreme 0b67 Fairbanks Scales 555e SCB-R9000 0b69 CacheVision 0b6a Maxim Integrated Products a132 WUP-005 [Nintendo Wii U Pro Controller] 0b6f Nagano Japan Radio Co., Ltd 0b70 PortalPlayer, Inc. 00ba iRiver H10 20GB 0b71 SHIN-EI Sangyo Co., Ltd 0b72 Embedded Wireless Technology Co., Ltd 0b73 Computone Corp. 0b75 Roland DG Corp. 0b79 Sunrise Telecom, Inc. 0b7a Zeevo, Inc. 07d0 Bluetooth Dongle 0b7b Taiko Denki Co., Ltd 0b7c ITRAN Communications, Ltd 0b7d Astrodesign, Inc. 0b81 id3 Technologies 0001 Biothentic II smartcard reader with fingerprint sensor 0002 DFU-Enabled Devices (DFU) 0012 BioPAD biometric module (DFU + CDC) 0102 Certis V1 fingerprint reader 0103 Certis V2 fingerprint reader 0200 CL1356T / CL1356T5 / CL1356A smartcard readers (CCID) 0201 CL1356T / CL1356T5 / CL1356A smartcard readers (DFU + CCID) 0220 CL1356A FFPJP smartcard reader (CCID + HID) 0221 CL1356A smartcard reader (DFU + CCID + HID) 0b84 Rextron Technology, Inc. 0b85 Elkat Electronics, Sdn., Bhd. 0b86 Exputer Systems, Inc. 5100 XMC5100 Zippy Drive 5110 XMC5110 Flash Drive 5200 XMC5200 Zippy Drive 5201 XMC5200 Zippy Drive 5202 XMC5200 Zippy Drive 5280 XMC5280 Storage Drive fff0 ISP5200 Debugger 0b87 Plus-One I & T, Inc. 0b88 Sigma Koki Co., Ltd, Technology Center 0b89 Advanced Digital Broadcast, Ltd 0b8c SMART Technologies Inc. 0001 Interactive Whiteboard Controller (SB6) (HID) 00c3 Sympodium ID350 0b95 ASIX Electronics Corp. 1720 10/100 Ethernet 1780 AX88178 1790 AX88179 Gigabit Ethernet 6802 AX68002 KVM Switch SoC 7720 AX88772 772a AX88772A Fast Ethernet 772b AX88772B 7e2b AX88772B Fast Ethernet Controller 0b96 Sewon Telecom 0b97 O2 Micro, Inc. 7732 Smart Card Reader 7761 Oz776 1.1 Hub 7762 Oz776 SmartCard Reader 7772 OZ776 CCID Smartcard Reader 0b98 Playmates Toys, Inc. 0b99 Audio International, Inc. 0b9b Dipl.-Ing. Stefan Kunde 4012 Reflex RC-controller Interface 0b9d Softprotec Co. 0b9f Chippo Technologies 0baf U.S. Robotics 00e5 USR6000 00eb USR1120 802.11b Adapter 00ec 56K Faxmodem 00f1 SureConnect ADSL ATM Adapter 00f2 SureConnect ADSL Loader 00f5 SureConnect ADSL ATM Adapter 00f6 SureConnect ADSL Loader 00f7 SureConnect ADSL ATM Adapter 00f8 SureConnect ADSL Loader 00f9 SureConnect ADSL ATM Adapter 00fa SureConnect ADSL Loader 00fb SureConnect ADSL Ethernet/USB Router 0111 USR5420 802.11g Adapter [Broadcom 4320 USB] 0118 U5 802.11g Adapter 011b Wireless MAXg Adapter [Broadcom 4320] 0121 USR5423 802.11bg Wireless Adapter [ZyDAS ZD1211B] 0303 USR5637 56K Faxmodem 6112 FaxModem Model 5633 0bb0 Concord Camera Corp. 0100 Sound Vision Stream 5007 3340z/Rollei DC3100 0bb1 Infinilink Corp. 0bb2 Ambit Microsystems Corp. 0302 U10H010 802.11b Wireless Adapter [Intersil PRISM 3] 6098 USB Cable Modem 0bb3 Ofuji Technology 0bb4 HTC (High Tech Computer Corp.) 0001 Android Phone via mass storage [Wiko Cink Peax 2] 00ce mmO2 XDA GSM/GPRS Pocket PC 00cf SPV C500 Smart Phone 0306 Vive Hub Bluetooth 4.1 (Broadcom BCM920703) 0a01 PocketPC Sync 0a02 Himalaya GSM/GPRS Pocket PC 0a03 PocketPC Sync 0a04 PocketPC Sync 0a05 PocketPC Sync 0a06 PocketPC Sync 0a07 Magician PocketPC SmartPhone / O2 XDA 0a08 PocketPC Sync 0a09 PocketPC Sync 0a0a PocketPC Sync 0a0b PocketPC Sync 0a0c PocketPC Sync 0a0d PocketPC Sync 0a0e PocketPC Sync 0a0f PocketPC Sync 0a10 PocketPC Sync 0a11 PocketPC Sync 0a12 PocketPC Sync 0a13 PocketPC Sync 0a14 PocketPC Sync 0a15 PocketPC Sync 0a16 PocketPC Sync 0a17 PocketPC Sync 0a18 PocketPC Sync 0a19 PocketPC Sync 0a1a PocketPC Sync 0a1b PocketPC Sync 0a1c PocketPC Sync 0a1d PocketPC Sync 0a1e PocketPC Sync 0a1f PocketPC Sync 0a20 PocketPC Sync 0a21 PocketPC Sync 0a22 PocketPC Sync 0a23 PocketPC Sync 0a24 PocketPC Sync 0a25 PocketPC Sync 0a26 PocketPC Sync 0a27 PocketPC Sync 0a28 PocketPC Sync 0a29 PocketPC Sync 0a2a PocketPC Sync 0a2b PocketPC Sync 0a2c PocketPC Sync 0a2d PocketPC Sync 0a2e PocketPC Sync 0a2f PocketPC Sync 0a30 PocketPC Sync 0a31 PocketPC Sync 0a32 PocketPC Sync 0a33 PocketPC Sync 0a34 PocketPC Sync 0a35 PocketPC Sync 0a36 PocketPC Sync 0a37 PocketPC Sync 0a38 PocketPC Sync 0a39 PocketPC Sync 0a3a PocketPC Sync 0a3b PocketPC Sync 0a3c PocketPC Sync 0a3d PocketPC Sync 0a3e PocketPC Sync 0a3f PocketPC Sync 0a40 PocketPC Sync 0a41 PocketPC Sync 0a42 PocketPC Sync 0a43 PocketPC Sync 0a44 PocketPC Sync 0a45 PocketPC Sync 0a46 PocketPC Sync 0a47 PocketPC Sync 0a48 PocketPC Sync 0a49 PocketPC Sync 0a4a PocketPC Sync 0a4b PocketPC Sync 0a4c PocketPC Sync 0a4d PocketPC Sync 0a4e PocketPC Sync 0a4f PocketPC Sync 0a50 SmartPhone (MTP) 0a51 SPV C400 / T-Mobile SDA GSM/GPRS Pocket PC 0a52 SmartPhone Sync 0a53 SmartPhone Sync 0a54 SmartPhone Sync 0a55 SmartPhone Sync 0a56 SmartPhone Sync 0a57 SmartPhone Sync 0a58 SmartPhone Sync 0a59 SmartPhone Sync 0a5a SmartPhone Sync 0a5b SmartPhone Sync 0a5c SmartPhone Sync 0a5d SmartPhone Sync 0a5e SmartPhone Sync 0a5f SmartPhone Sync 0a60 SmartPhone Sync 0a61 SmartPhone Sync 0a62 SmartPhone Sync 0a63 SmartPhone Sync 0a64 SmartPhone Sync 0a65 SmartPhone Sync 0a66 SmartPhone Sync 0a67 SmartPhone Sync 0a68 SmartPhone Sync 0a69 SmartPhone Sync 0a6a SmartPhone Sync 0a6b SmartPhone Sync 0a6c SmartPhone Sync 0a6d SmartPhone Sync 0a6e SmartPhone Sync 0a6f SmartPhone Sync 0a70 SmartPhone Sync 0a71 SmartPhone Sync 0a72 SmartPhone Sync 0a73 SmartPhone Sync 0a74 SmartPhone Sync 0a75 SmartPhone Sync 0a76 SmartPhone Sync 0a77 SmartPhone Sync 0a78 SmartPhone Sync 0a79 SmartPhone Sync 0a7a SmartPhone Sync 0a7b SmartPhone Sync 0a7c SmartPhone Sync 0a7d SmartPhone Sync 0a7e SmartPhone Sync 0a7f SmartPhone Sync 0a80 SmartPhone Sync 0a81 SmartPhone Sync 0a82 SmartPhone Sync 0a83 SmartPhone Sync 0a84 SmartPhone Sync 0a85 SmartPhone Sync 0a86 SmartPhone Sync 0a87 SmartPhone Sync 0a88 SmartPhone Sync 0a89 SmartPhone Sync 0a8a SmartPhone Sync 0a8b SmartPhone Sync 0a8c SmartPhone Sync 0a8d SmartPhone Sync 0a8e SmartPhone Sync 0a8f SmartPhone Sync 0a90 SmartPhone Sync 0a91 SmartPhone Sync 0a92 SmartPhone Sync 0a93 SmartPhone Sync 0a94 SmartPhone Sync 0a95 SmartPhone Sync 0a96 SmartPhone Sync 0a97 SmartPhone Sync 0a98 SmartPhone Sync 0a99 SmartPhone Sync 0a9a SmartPhone Sync 0a9b SmartPhone Sync 0a9c SmartPhone Sync 0a9d SmartPhone Sync 0a9e SmartPhone Sync 0a9f SmartPhone Sync 0b03 Ozone Mobile Broadband 0b04 Hermes / TyTN / T-Mobile MDA Vario II / O2 Xda Trion 0b05 P3600 0b06 Athena / Advantage x7500 / Dopod U1000 / T-Mobile AMEO 0b0c Elf / Touch / P3450 / T-Mobile MDA Touch / O2 Xda Nova / Dopod S1 0b1f Sony Ericsson XPERIA X1 0b2f Rhodium 0b51 Qtek 8310 mobile phone [Tornado Noble] 0bce Vario MDA 0c01 Dream / ADP1 / G1 / Magic / Tattoo / FP1 0c02 Dream / ADP1 / G1 / Magic / Tattoo (Debug) 0c03 Android Phone [Fairphone First Edition (FP1)] 0c13 Diamond 0c1f Sony Ericsson XPERIA X1 0c5f Snap 0c86 Sensation 0c87 Desire (debug) 0c8d EVO 4G (debug) 0c91 Vision 0c94 Vision 0c97 Legend 0c99 Desire (debug) 0c9e Incredible 0ca2 Desire HD (debug mode) 0ca5 Android Phone [Evo Shift 4G] 0cab Desire / Desire HD / Hero / Thunderbolt (HTC Sync Mode) 0cae T-Mobile MyTouch 4G Slide [Doubleshot] 0de5 One (M7) 0dea M7_UL [HTC One] 0f25 One M8 0f63 Desire 610 Via MTP 0f64 Desire 601 0fb4 Remote NDIS based Device 0ff0 One Mini (M4) 0ff8 Desire HD (Tethering Mode) 0ff9 Desire / Desire HD / Hero / Thunderbolt (Charge Mode) 0ffe Desire HD (modem mode) 0fff Android Fastboot Bootloader 2008 Android Phone via MTP [MT65xx] 200b Android Phone via PTP [Wiko Cink Peax 2] 2134 Vive Hub (SMSC USB2137B) 2744 Vive Hub (HTC CB USB2) 2c87 Vive 0bb5 Murata Manufacturing Co., Ltd 0bb6 Network Alchemy 0bb7 Joytech Computer Co., Ltd 0bb8 Hitachi Semiconductor and Devices Sales Co., Ltd 0bb9 Eiger M&C Co., Ltd 0bba ZAccess Systems 0bbb General Meters Corp. 0bbc Assistive Technology, Inc. 0bbd System Connection, Inc. 0bc0 Knilink Technology, Inc. 0bc1 Fuw Yng Electronics Co., Ltd 0bc2 Seagate RSS LLC 0502 ST3300601CB-RK 300 GB External Hard Drive 0503 ST3250824A [Barracuda 7200.9] 2000 Storage Adapter V3 (TPP) 2100 FreeAgent Go 2200 FreeAgent Go FW 2300 Expansion Portable 231a Expansion Portable 231c Expansion Portable 2320 USB 3.0 bridge [Portable Expansion Drive] 2321 Expansion Portable 2322 SRD0NF1 Expansion Portable (STEA) 2340 FreeAgent External Hard Drive 3000 FreeAgent Desktop 3008 FreeAgent Desk 1TB 3101 FreeAgent XTreme 640GB 3312 SRD00F2 Expansion Desktop Drive (STBV) 331a Desktop HDD 5TB (ST5000DM000) 3320 SRD00F2 [Expansion Desktop Drive] 3322 SRD0NF2 [Expansion Desktop Drive] 3323 Seagate RSS LLC 3332 Expansion 3343 desktop drive stgy8000400 5020 FreeAgent GoFlex 5021 FreeAgent GoFlex USB 2.0 5030 FreeAgent GoFlex Upgrade Cable STAE104 5031 FreeAgent GoFlex USB 3.0 5032 SATA cable 5070 FreeAgent GoFlex Desk 5071 FreeAgent GoFlex Desk 50a1 FreeAgent GoFlex Desk 50a5 FreeAgent GoFlex Desk USB 3.0 5121 FreeAgent GoFlex 5161 FreeAgent GoFlex dock 6126 Maxtor D3 Station 5TB 61b5 Maxtor HX-M201TCB [M3 Portable 2TB] 61b6 Maxtor HX-M101TCB/GM [M3 Portable 1TB] 61b7 Maxtor M3 Portable a003 Backup Plus a0a1 Backup Plus Desktop a0a4 Backup Plus Desktop Drive aa14 STJ4000400 [Seagate Basic Portable Drive 4TB] ab00 Slim Portable Drive ab1e Backup Plus Portable Drive ab20 Backup Plus Portable Drive ab21 Backup Plus Slim ab24 Backup Plus Portable Drive ab26 Backup Plus Slim Portable Drive 1 TB ab28 Seagate Backup Plus Portable 5TB SRD00F1 ab2d SRD00F1 [Backup Plus Ultra Slim] ab31 Backup Plus Desktop Drive (5TB) ab34 Backup Plus ab38 Backup Plus Hub (Mass Storage) ab44 Backup Plus Hub ac20 Backup Plus Slim 2TB 0bc3 IPWireless, Inc. 0001 UMTS-TDD (TD-CDMA) modem 0bc4 Microcube Corp. 0bc5 JCN Co., Ltd 0bc6 ExWAY, Inc. 0bc7 X10 Wireless Technology, Inc. 0001 ActiveHome (ACPI-compliant) 0002 Firecracker Interface (ACPI-compliant) 0003 VGA Video Sender (ACPI-compliant) 0004 X10 Receiver 0005 Wireless Transceiver (ACPI-compliant) 0006 Wireless Transceiver (ACPI-compliant) 0007 Wireless Transceiver (ACPI-compliant) 0008 Wireless Transceiver (ACPI-compliant) 0009 Wireless Transceiver (ACPI-compliant) 000a Wireless Transceiver (ACPI-compliant) 000b Transceiver (ACPI-compliant) 000c Transceiver (ACPI-compliant) 000d Transceiver (ACPI-compliant) 000e Transceiver (ACPI-compliant) 000f Transceiver (ACPI-compliant) 0bc8 Telmax Communications 0bc9 ECI Telecom, Ltd 0bca Startek Engineering, Inc. 0bcb Perfect Technic Enterprise Co., Ltd 0bd7 Andrew Pargeter & Associates a021 Amptek DP4 multichannel signal analyzer 0bda Realtek Semiconductor Corp. 0103 USB 2.0 Card Reader 0104 Mass Storage Device 0106 Mass Storage Device 0107 Mass Storage Device 0108 Mass Storage Device 0109 microSDXC Card Reader [Hama 00091047] 0111 RTS5111 Card Reader Controller 0113 Mass Storage Device 0115 Mass Storage Device (Multicard Reader) 0116 RTS5116 Card Reader Controller 0117 Mass Storage Device 0118 Mass Storage Device 0119 Storage Device (SD card reader) 0129 RTS5129 Card Reader Controller 0138 RTS5138 Card Reader Controller 0139 RTS5139 Card Reader Controller 0151 Mass Storage Device (Multicard Reader) 0152 Mass Storage Device 0153 3-in-1 (SD/SDHC/SDXC) Card Reader 0156 Mass Storage Device 0157 Mass Storage Device 0158 USB 2.0 multicard reader 0159 RTS5159 Card Reader Controller 0161 Mass Storage Device 0168 Mass Storage Device 0169 Mass Storage Device 0171 Mass Storage Device 0176 Mass Storage Device 0178 Mass Storage Device 0179 RTL8188ETV Wireless LAN 802.11n Network Adapter 0184 RTS5182 Card Reader 0186 Card Reader 0301 multicard reader 0307 Card Reader 0316 Card Reader 0326 Card reader 0411 Hub 0811 Realtek 8812AU/8821AU 802.11ac WLAN Adapter [USB Wireless Dual-Band Adapter 2.4/5Ghz] 0821 RTL8821A Bluetooth 1724 RTL8723AU 802.11n WLAN Adapter 1a2b RTL8188GU 802.11n WLAN Adapter (Driver CDROM Mode) 2831 RTL2831U DVB-T 2832 RTL2832U DVB-T 2838 RTL2838 DVB-T 5401 RTL 8153 USB 3.0 hub with gigabit ethernet 5411 RTS5411 Hub 568c Integrated Webcam HD 570c Asus laptop camera 5730 HP 2.0MP High Definition Webcam 5751 Integrated Webcam 5775 HP "Truevision HD" laptop camera 5776 HP Truevision HD integrated webcam 57b3 Acer 640 × 480 laptop camera 57cc HD Webcam - Realtek Semiconductor 57cf HD WebCam 57da Built-In Video Camera 58c2 Integrated Webcam HD 58c8 Integrated Webcam HD 8150 RTL8150 Fast Ethernet Adapter 8151 RTL8151 Adapteon Business Mobile Networks BV 8152 RTL8152 Fast Ethernet Adapter 8153 RTL8153 Gigabit Ethernet Adapter 8171 RTL8188SU 802.11n WLAN Adapter 8172 RTL8191SU 802.11n WLAN Adapter 8174 RTL8192SU 802.11n WLAN Adapter 8176 RTL8188CUS 802.11n WLAN Adapter 8178 RTL8192CU 802.11n WLAN Adapter 8179 RTL8188EUS 802.11n Wireless Network Adapter 817f RTL8188RU 802.11n WLAN Adapter 8187 RTL8187 Wireless Adapter 8189 RTL8187B Wireless 802.11g 54Mbps Network Adapter 818b RTL8192EU 802.11b/g/n WLAN Adapter 8192 RTL8191SU 802.11n Wireless Adapter 8193 RTL8192DU 802.11an WLAN Adapter 8197 RTL8187B Wireless Adapter 8198 RTL8187B Wireless Adapter 8199 RTL8187SU 802.11g WLAN Adapter 8723 RTL8723A Bluetooth 8812 RTL8812AU 802.11a/b/g/n/ac 2T2R DB WLAN Adapter 8813 RTL8814AU 802.11a/b/g/n/ac Wireless Adapter 881a RTL8812AU-VS 802.11a/b/g/n/ac 2T2R DB WLAN Adapter 8821 RTL8821A Bluetooth 9210 RTL9210 M.2 NVME Adapter a811 RTL8811AU 802.11a/b/g/n/ac WLAN Adapter b009 Realtek Bluetooth 4.2 Adapter b00a Realtek Bluetooth 4.2 Adapter b00b Realtek Bluetooth 4.2 Adapter b023 RTL8822BE Bluetooth 4.2 Adapter b711 RTL8188GU 802.11n WLAN Adapter (After Modeswitch) b720 RTL8723BU 802.11b/g/n WLAN Adapter b723 RTL8723B Bluetooth b728 RTL8723B Bluetooth b72a RTL8723B Bluetooth b812 RTL88x2bu [AC1200 Techkey] f179 RTL8188FTV 802.11b/g/n 1T1R 2.4G WLAN Adapter 0bdb Ericsson Business Mobile Networks BV 1000 BV Bluetooth Device 1002 Bluetooth Device 1.2 1049 C3607w Mobile Broadband Module 1900 F3507g Mobile Broadband Module 1902 F3507g v2 Mobile Broadband Module 1904 F3607gw Mobile Broadband Module 1905 F3607gw v2 Mobile Broadband Module 1906 F3607gw v3 Mobile Broadband Module 1909 F3307 v2 Mobile Broadband Module 190a F3307 Mobile Broadband Module 190b C3607w v2 Mobile Broadband Module 1926 H5321 gw Mobile Broadband Module 0bdc Y Media Corp. 0bdd Orange PCS 0be2 Kanda Tsushin Kogyo Co., Ltd 0be3 TOYO Corp. 0be4 Elka International, Ltd 0be5 DOME imaging systems, Inc. 0be6 Dong Guan Humen Wonderful Wire Cable Factory 0bed MEI 1100 CASHFLOW SC 1101 Series 2000 Combo Acceptor 0bee LTK Industries, Ltd 0bef Way2Call Communications 0bf0 Pace Micro Technology PLC c010 EHD100SD 0bf1 Intracom S.A. 0001 netMod Driver Ver 2.4.17 (CAPI) 0002 netMod Driver Ver 2.4 (CAPI) 0003 netMod Driver Ver 2.4 (CAPI) 0bf2 Konexx 0bf6 Addonics Technologies, Inc. 0103 Storage Device 1234 Storage Device a000 Cable 205 (TPP) a001 Cable 205 a002 IDE Bridge 0bf7 Sunny Giken, Inc. 0bf8 Fujitsu Siemens Computers 1001 Fujitsu Pocket Loox 600 PDA 1006 SmartCard Reader 2A 1007 Connect2Air E-5400 802.11g Wireless Adapter 1009 Connect2Air E-5400 D1700 802.11g Wireless Adapter [Intersil ISL3887] 100c Keyboard FSC KBPC PX 100f miniCard D2301 802.11bg Wireless Module [SiS 163U] 1017 Keyboard KB SCR 101f Fujitsu Full HD Pro Webcam 0bfb Grass Valley Group 0200 TURBO iDDR Front Panel 0bfd Kvaser AB 0004 USBcan II 000b Leaf Light HS 000e Leaf SemiPro HS 0c00 FireFly Mouse Mat 1607 Apex M500 0c04 MOTO Development Group, Inc. 0c05 Appian Graphics 0c06 Hasbro Games, Inc. 0c07 Infinite Data Storage, Ltd 0c08 Agate 0378 Q 16MB Storage Device 0c09 Comjet Information System a5a5 Litto Version USB2.0 0c0a Highpoint Technologies, Inc. 6124 RocketStor 6124V 0c0b Dura Micro, Inc. (Acomdata) 27cb 6-in-1 Flash Reader and Writer 27d7 Multi Memory reader/writer MD-005 27da Multi Memory reader/writer MD-005 27dc Multi Memory reader/writer MD-005 27e7 3,5'' HDD case MD-231 27ee 3,5'' HDD case MD-231 2814 3,5'' HDD case MD-231 2815 3,5'' HDD case MD-231 281d 3,5'' HDD case MD-231 5fab Storage Adaptor a109 CF/SM Reader and Writer a10c SD/MS Reader and Writer b001 USB 2.0 Mass Storage IDE adapter b004 MMC/SD Reader and Writer 0c12 Zeroplus 0005 PSX Vibration Feedback Converter / Intec Wireless Controller for Xbox 0030 PSX Vibration Feedback Converter 700e Logic Analyzer (LAP-C-16032) 8801 Nyko Xbox Controller 8802 Xbox Controller 8809 Red Octane Ignition Xbox DDR Pad 880a Pelican Eclipse PL-2023 8810 Xbox Controller 9902 VibraX 0c15 Iris Graphics 0c16 Gyration, Inc. 0002 RF Technology Receiver 0003 RF Technology Receiver 0008 RF Technology Receiver 0080 eHome Infrared Receiver 0081 eHome Infrared Receiver 0c17 Cyberboard A/S 0c18 SynerTek Korea, Inc. 0c19 cyberPIXIE, Inc. 0c1a Silicon Motion, Inc. 0c1b MIPS Technologies 0c1c Hang Zhou Silan Electronics Co., Ltd 0c1f Magicard 1800 Tango 2E 0c22 Tally Printer Corp. 0c23 Lernout + Hauspie 0c24 Taiyo Yuden 0001 Bluetooth Adaptor 0002 Bluetooth Device2 0005 Bluetooth Device(BC04-External) 000b Bluetooth Device(BC04-External) 000c Bluetooth Adaptor 000e Bluetooth Device(BC04-External) 000f Bluetooth Device (V2.0+EDR) 0010 Bluetooth Device(BC04-External) 0012 Bluetooth Device(BC04-External) 0018 Bluetooth Device(BC04-External) 0019 Bluetooth Device 0021 Bluetooth Device (V2.1+EDR) 0c24 Bluetooth Device(SAMPLE) ffff Bluetooth module with BlueCore in DFU mode 0c25 Sampo Corp. 0310 Scream Cam 0c26 Prolific Technology Inc. 0018 USB-Serial Controller [Icom Inc. OPC-478UC] 002b Icom Inc. IC-R30 0c27 RFIDeas, Inc 232a pcProx Plus RFID Reader (CDC serial) 3bfa pcProx Card Reader 0c2e Metrologic Instruments 0007 Metrologic MS7120 Barcode Scanner (IBM SurePOS mode) 0200 MS7120 Barcode Scanner 0204 Metrologic MS7120 Barcode Scanner (keyboard mode) 0206 Metrologic MS4980 Barcode Scanner 0700 Metrologic MS7120 Barcode Scanner (uni-directional serial mode) 0720 Metrologic MS7120 Barcode Scanner (bi-directional serial mode) 0a64 [Stratos 2700] 0b61 Vuquest 3310g 0b6a Vuquest 3310 Area-Imaging Scanner 0b81 Barcode scanner Voyager 1400g Series 0c30 Mutoh Industries Ltd 6010 Kona 1400 Cutting Plotter 0c35 Eagletron, Inc. 0c36 E Ink Corp. 0c37 e.Digital 0c38 Der An Electric Wire & Cable Co., Ltd 0c39 IFR 0c3a Furui Precise Component (Kunshan) Co., Ltd 0c3b Komatsu, Ltd 0c3c Radius Co., Ltd 0c3d Innocom, Inc. 0c3e Nextcell, Inc. 0c40 ELMCU 8000 2.4GHz receiver 0c44 Motorola iDEN 0021 iDEN P2k0 Device 0022 iDEN P2k1 Device 03a2 iDEN Smartphone 41d9 i1 phone 0c45 Microdia 0011 EBUDDY 0520 MaxTrack Wireless Mouse 1018 Compact Flash storage memory card reader 1020 Mass Storage Reader 1028 Mass Storage Reader 1030 Mass Storage Reader 1031 Sonix Mass Storage Device 1032 Mass Storage Reader 1033 Sonix Mass Storage Device 1034 Mass Storage Reader 1035 Mass Storage Reader 1036 Mass Storage Reader 1037 Sonix Mass Storage Device 1050 CF Card Reader 1058 HDD Reader 1060 iFlash SM-Direct Card Reader 1061 Mass Storage Reader 1062 Mass Storage Reader 1063 Sonix Mass Storage Device 1064 Mass Storage Reader 1065 Mass Storage Reader 1066 Mass Storage Reader 1067 Mass Storage Reader 1158 A56AK 184c VoIP Phone 1a90 2M pixel Microscope Camera (with capture button) [Andonstar V160] 5004 Redragon Mitra RGB Keyboard 5101 2.4G Wireless Device [Rii MX3] 6001 Genius VideoCAM NB 6005 Sweex Mini Webcam 6007 VideoCAM Eye 6009 VideoCAM ExpressII 600d TwinkleCam USB camera 6011 PC Camera (SN9C102) 6019 PC Camera (SN9C102) 6024 VideoCAM ExpressII 6025 VideoCAM ExpressII 6028 Typhoon Easycam USB 330K (older) 6029 Triplex i-mini PC Camera 602a Meade ETX-105EC Camera 602b VideoCAM NB 300 602c Clas Ohlson TWC-30XOP Webcam 602d VideoCAM ExpressII 602e VideoCAM Messenger 6030 VideoCAM ExpressII 603f VideoCAM ExpressII 6040 CCD PC Camera (PC390A) 606a CCD PC Camera (PC390A) 607a CCD PC Camera (PC390A) 607b Win2 PC Camera 607c CCD PC Camera (PC390A) 607e CCD PC Camera (PC390A) 6080 Audio (Microphone) 6082 VideoCAM Look 6083 VideoCAM Look 608c VideoCAM Look 608e VideoCAM Look 608f PC Camera (SN9C103 + OV7630) 60a8 VideoCAM Look 60aa VideoCAM Look 60ab PC Camera 60af VideoCAM Look 60b0 Genius VideoCam Look 60c0 PC Camera with Mic (SN9C105) 60c8 Win2 PC Camera 60cc PC Camera with Mic (SN9C105) 60ec PC Camera with Mic (SN9C105) 60ef Win2 PC Camera 60fa PC Camera with Mic (SN9C105) 60fb Composite Device 60fc PC Camera with Mic (SN9C105) 60fe Audio (Microphone) 6108 Win2 PC Camera 6122 PC Camera (SN9C110) 6123 PC Camera (SN9C110) 6128 PC Camera (SN9C325 + OM6802) 612a PC Camera (SN9C325) 612c PC Camera (SN9C110) 612e PC Camera (SN9C110) 612f PC Camera (SN9C110) 6130 PC Camera (SN9C120) 6138 Win2 PC Camera 613a PC Camera (SN9C120) 613b Win2 PC Camera 613c PC Camera (SN9C120) 613e PC Camera (SN9C120) 6143 PC Camera (SN9C120 + SP80708) 6240 PC Camera (SN9C201 + MI1300) 6242 PC Camera (SN9C201 + MI1310) 6243 PC Camera (SN9C201 + S5K4AAFX) 6248 PC Camera (SN9C201 + OV9655) 624b PC Camera (SN9C201 + CX1332) 624c PC Camera (SN9C201 + MI1320) 624e PC Camera (SN9C201 + SOI968) 624f PC Camera (SN9C201 + OV9650) 6251 PC Camera (SN9C201 + OV9650) 6253 PC Camera (SN9C201 + OV9650) 6260 PC Camera (SN9C201 + OV7670ISP) 6262 PC Camera (SN9C201 + OM6802) 6270 PC Camera (SN9C201 + MI0360/MT9V011 or MI0360SOC/MT9V111) U-CAM PC Camera NE878, Whitcom WHC017, ... 627a PC Camera (SN9C201 + S5K53BEB) 627b PC Camera (SN9C201 + OV7660) 627c PC Camera (SN9C201 + HV7131R) 627f PC Camera (SN9C201 + OV965x + EEPROM) 6280 PC Camera with Microphone (SN9C202 + MI1300) 6282 PC Camera with Microphone (SN9C202 + MI1310) 6283 PC Camera with Microphone (SN9C202 + S5K4AAFX) 6288 PC Camera with Microphone (SN9C202 + OV9655) 628a PC Camera with Microphone (SN9C202 + ICM107) 628b PC Camera with Microphone (SN9C202 + CX1332) 628c PC Camera with Microphone (SN9C202 + MI1320) 628e PC Camera with Microphone (SN9C202 + SOI968) 628f PC Camera with Microphone (SN9C202 + OV9650) 62a0 PC Camera with Microphone (SN9C202 + OV7670ISP) 62a2 PC Camera with Microphone (SN9C202 + OM6802) 62b0 PC Camera with Microphone (SN9C202 + MI0360/MT9V011 or MI0360SOC/MT9V111) 62b3 PC Camera with Microphone (SN9C202 + OV9655) 62ba PC Camera with Microphone (SN9C202 + S5K53BEB) 62bb PC Camera with Microphone (SN9C202 + OV7660) 62bc PC Camera with Microphone (SN9C202 + HV7131R) 62be PC Camera with Microphone (SN9C202 + OV7663) 62c0 Sonix USB 2.0 Camera 62e0 MSI Starcam Racer 6300 PC Microscope camera 6310 Sonix USB 2.0 Camera 6321 HP Integrated Webcam 6340 Camera 6341 Defender G-Lens 2577 HD720p Camera 6366 Webcam Vitade AF 63e0 Sonix Integrated Webcam 63f1 Integrated Webcam 63f8 Sonix Integrated Webcam 6409 Webcam 6413 Integrated Webcam 6417 Integrated Webcam 6419 Integrated Webcam 641d 1.3 MPixel Integrated Webcam 6433 Laptop Integrated Webcam HD (Composite Device) 643f Dell Integrated HD Webcam 644d 1.3 MPixel Integrated Webcam 6480 Sonix 1.3 MP Laptop Integrated Webcam 648b Integrated Webcam 64ad Dell Laptop Integrated Webcam HD 64bd Sony Visual Communication Camera 64d0 Integrated Webcam 64d2 Integrated Webcam 651b HP Webcam 652f Backlit Gaming Keyboard 6705 Integrated HD Webcam 670c Integrated Webcam HD 6710 Integrated Webcam 6712 Integrated Webcam HD 671d Integrated_Webcam_HD 7401 TEMPer Temperature Sensor 7402 TEMPerHUM Temperature & Humidity Sensor 7403 Foot Switch 7404 Foot switch FS1-P 8000 DC31VC 8006 Dual Mode Camera (8006 VGA) 800a Vivitar Vivicam3350B 0c46 WaveRider Communications, Inc. 0c4a ALGE-TIMING GmbH 0889 Timy 088a Timy 2 0c4b Reiner SCT Kartensysteme GmbH 0100 cyberJack e-com/pinpad 0300 cyberJack pinpad(a) 0400 cyberJack e-com(a) 0401 cyberJack pinpad(a2) 0500 cyberJack RFID standard dual interface smartcard reader 0501 cyberJack RFID comfort dual interface smartcard reader 0502 cyberJack compact 0504 cyberJack go / go plus 0505 cyberJack wave 9102 cyberJack RFID basis contactless smartcard reader 0c4c Needham's Electronics 0021 EMP-21 Universal Programmer 0c52 Sealevel Systems, Inc. 2101 SeaLINK+232 2102 SeaLINK+485 2103 SeaLINK+232I 2104 SeaLINK+485I 2211 SeaPORT+2/232 (Port 1) 2212 SeaPORT+2/485 (Port 1) 2213 SeaPORT+2 (Port 1) 2221 SeaPORT+2/232 (Port 2) 2222 SeaPORT+2/485 (Port 2) 2223 SeaPORT+2 (Port 2) 2411 SeaPORT+4/232 (Port 1) 2412 SeaPORT+4/485 (Port 1) 2413 SeaPORT+4 (Port 1) 2421 SeaPORT+4/232 (Port 2) 2422 SeaPORT+4/485 (Port 2) 2423 SeaPORT+4 (Port 2) 2431 SeaPORT+4/232 (Port 3) 2432 SeaPORT+4/485 (Port 3) 2433 SeaPORT+4 (Port 3) 2441 SeaPORT+4/232 (Port 4) 2442 SeaPORT+4/485 (Port 4) 2443 SeaPORT+4 (Port 4) 2811 SeaLINK+8/232 (Port 1) 2812 SeaLINK+8/485 (Port 1) 2813 SeaLINK+8 (Port 1) 2821 SeaLINK+8/232 (Port 2) 2822 SeaLINK+8/485 (Port 2) 2823 SeaLINK+8 (Port 2) 2831 SeaLINK+8/232 (Port 3) 2832 SeaLINK+8/485 (Port 3) 2833 SeaLINK+8 (Port 3) 2841 SeaLINK+8/232 (Port 4) 2842 SeaLINK+8/485 (Port 4) 2843 SeaLINK+8 (Port 4) 2851 SeaLINK+8/232 (Port 5) 2852 SeaLINK+8/485 (Port 5) 2853 SeaLINK+8 (Port 5) 2861 SeaLINK+8/232 (Port 6) 2862 SeaLINK+8/485 (Port 6) 2863 SeaLINK+8 (Port 6) 2871 SeaLINK+8/232 (Port 7) 2872 SeaLINK+8/485 (Port 7) 2873 SeaLINK+8 (Port 7) 2881 SeaLINK+8/232 (Port 8) 2882 SeaLINK+8/485 (Port 8) 2883 SeaLINK+8 (Port 8) 9020 SeaLINK+422 a02a SeaLINK+8 (Port 1+2) a02b SeaLINK+8 (Port 3+4) a02c SeaLINK+8 (Port 5+6) a02d SeaLINK+8 (Port 7+8) 0c53 ViewPLUS, Inc. 0c54 Glory, Ltd 0c55 Spectrum Digital, Inc. 0510 Spectrum Digital XDS510 JTAG Debugger 0540 SPI540 5416 TMS320C5416 DSK 6416 TMS320C6416 DDB 0c56 Billion Bright, Ltd 0c57 Imaginative Design Operation Co., Ltd 0c58 Vidar Systems Corp. 0c59 Dong Guan Shinko Wire Co., Ltd 0c5a TRS International Mfg., Inc. 0c5e Xytronix Research & Design 0c60 Apogee Electronics Corp. 0001 MiniMe 0002 MiniDAC 0003 ONE 0004 GiO 0007 Duet 0009 Jam 000a Jam Bootloader 000b MiC 000c MiC Bootloader 8007 Duet DFU Mode 0c62 Chant Sincere Co., Ltd 0c63 Toko, Inc. 0c64 Signality System Engineering Co., Ltd 0c65 Eminence Enterprise Co., Ltd 0c66 Rexon Electronics Corp. 0c67 Concept Telecom, Ltd 0c6a ACS 0005 Color 320 x 240 LCD Display Terminal with Touchscreen 0c6c JETI Technische Instrumente GmbH 04b2 Specbos 1201 0c70 MCT Elektronikladen 0000 USB08 Development board 0747 Eye Movement Recorder [Visagraph]/[ReadAlyzer] 0c72 PEAK System 000c PCAN-USB 000d PCAN Pro 0c74 Optronic Laboratories Inc. 0002 OL 700-30 Goniometer 0c76 JMTek, LLC. 0001 Mass Storage Controller 0002 Mass Storage Controller 0003 USBdisk 0004 Mass Storage Controller 0005 Transcend Flash disk 0006 Transcend JetFlash 0007 Mass Storage Device 1600 Ion Quick Play LP turntable 1605 SSS Headphone Set 1607 audio controller 5663 Audio Device 0c77 Sipix Group, Ltd 1001 SiPix Web2 1002 SiPix SC2100 1010 SiPix Snap 1011 SiPix Blink 2 1015 SiPix CAMeleon 0c78 Detto Corp. 0c79 NuConnex Technologies Pte., Ltd 0c7a Wing-Span Enterprise Co., Ltd 0c86 NDA Technologies, Inc. 0c88 Kyocera Wireless Corp. 0021 Handheld 17da Qualcomm Kyocera CDMA Technologies MSM 0c89 Honda Tsushin Kogyo Co., Ltd 0c8a Pathway Connectivity, Inc. 0c8b Wavefly Corp. 0c8c Coactive Networks 0c8d Tempo 0c8e Cesscom Co., Ltd 6000 Luxian Series 0c8f Applied Microsystems 0c94 Cryptera a000 EPP 1217 0c98 Berkshire Products, Inc. 1140 USB PC Watchdog 0c99 Innochips Co., Ltd 0c9a Hanwool Robotics Corp. 0c9b Jobin Yvon, Inc. 0c9c Brand Innovators BV 1511 BI-1511 Laser Simulator 1512 BI-1512 Syncbus Monitor 1514 BI-1514 HPC 1532 BI-1532 GPC 0c9d SemTek 0170 3873 Manual Insert card reader 0ca2 Zyfer 0ca3 Sega Corp. 0ca4 ST&T Instrument Corp. 0ca5 BAE Systems Canada, Inc. 0ca6 Castles Technology Co., Ltd 0010 EZUSB PC/SC Smart Card Reader 0050 EZ220PU Reader Controller 1077 Bludrive Family Smart Card Reader 107e Reader Controller 2010 myPad110 PC/SC Smart Card Reader 3050 EZ710 Smart Card Reader 0ca7 Information Systems Laboratories 0caa Allied Telesis KK. 3001 AT-VT-Kit3 Serial Adapter 0cad Motorola CGISS 1007 APX Series Consolette 1020 MOTOTRBO Series Radio (Portable) 1030 APX Series Radio (Portable) 1031 APX Series Radio (Mobile) 1602 IMPRES Battery Data Reader 9001 PowerPad Pocket PC Device 0cae Ascom Business Systems, Ltd 0caf Buslink 2507 Hi-Speed USB-to-IDE Bridge Controller 2515 Flash Disk Embedded Hub 2516 Flash Disk Security Device 2517 Flash Disk Mass Storage Device 25c7 Hi-Speed USB-to-IDE Bridge Controller 3a00 Hard Drive 3a20 Mass Storage Device 3acd Mass Storage Device 0cb0 Flying Pig Systems 0cb1 Innovonics, Inc. 0cb6 Celestix Networks, Pte., Ltd 0cb7 Singatron Enterprise Co., Ltd 0cb8 Opticis Co., Ltd 0cba Trust Electronic (Shanghai) Co., Ltd 0cbb Shanghai Darong Electronics Co., Ltd 0cbc Palmax Technology Co., Ltd 0101 Pocket PC P6C 0201 Personal Digital Assistant 0301 Personal Digital Assistant P6M+ 0401 Pocket PC 0cbd Pentel Co., Ltd (Electronics Equipment Div.) 0cbe Keryx Technologies, Inc. 0cbf Union Genius Computer Co., Ltd 0cc0 Kuon Yi Industrial Corp. 0cc1 Given Imaging, Ltd 0cc2 Timex Corp. 0cc3 Rimage Corp. 0cc4 emsys GmbH 0cc5 Sendo 0cc6 Intermagic Corp. 0cc8 Technotools Corp. 0cc9 BroadMAX Technologies, Inc. 0cca Amphenol 0ccb SKNet Co., Ltd 0ccc Domex Technology Corp. 0ccd TerraTec Electronic GmbH 0012 PHASE 26 0013 PHASE 26 0014 PHASE 26 0015 Flash Update for TerraTec PHASE 26 0021 Cameo Grabster 200 0023 Mystify Claw 0028 Aureon 5.1 MkII 0032 MIDI HUBBLE 0035 Miditech Play'n Roll 0036 Cinergy 250 Audio 0037 Cinergy 250 Audio 0038 Cinergy T² DVB-T Receiver 0039 Grabster AV 400 003b Cinergy 400 003c Grabster AV 250 0042 Cinergy Hybrid T XS 0043 Cinergy T XS 004e Cinergy T XS 004f Cinergy Analog XS 0055 Cinergy T XE (Version 1, AF9005) 005c Cinergy T² 0069 Cinergy T XE (Version 2, AF9015) 006b Cinergy HT PVR (EU) 0072 Cinergy Hybrid T 0077 Aureon Dual USB 0078 Cinergy T XXS 0086 Cinergy Hybrid XE 008e Cinergy HTC XS 0096 Grabby 0097 Cinergy T RC MKII 0099 AfaTech 9015 [Cinergy T Stick Dual] 00a5 Cinergy Hybrid Stick 00a9 RTL2838 DVB-T COFDM Demodulator [TerraTec Cinergy T Stick Black] 00b3 NOXON DAB/DAB+ Stick 00b9 WDR DAB/DAB+ Stick 00e0 NOXON DAB/DAB+ Stick V2 0102 Cinergy S2 Stick 0105 Cinergy S2 Box 10a7 TerraTec G3 10ad Cinergy H5 Rev. 2 0cd4 Bang Olufsen 0101 BeolinkPC2 0cd5 LabJack Corporation 0003 U3 0009 UE9 0cd6 Scheidt & Bachmann 000c S&B TPU 000e S&B BKV 0011 Money Coin Unit 0cd7 NewChip S.r.l. 0cd8 JS Digitech, Inc. 2007 Smart Card Reader/JSTU-9700 0cd9 Hitachi Shin Din Cable, Ltd 0cde Z-Com 0001 XI-750 802.11b Wireless Adapter [Atmel AT76C503A] 0002 XI-725/726 Prism2.5 802.11b Adapter 0003 Sagem 802.11b Dongle 0004 Sagem 802.11b Dongle 0005 XI-735 Prism3 802.11b Adapter 0006 XG-300 802.11b Adapter 0008 XG-703A 802.11g Wireless Adapter [Intersil ISL3887] 0009 (ZD1211)IEEE 802.11b+g Adapter 0011 ZD1211 0012 AR5523 0013 AR5523 driver (no firmware) 0014 NB 802.11g Wireless LAN Adapter(3887A) 0015 XG-705A 802.11g Wireless Adapter [Intersil ISL3887] 0016 NB 802.11g Wireless LAN Adapter(3887A) 0018 NB 802.11a/b/g Wireless LAN Adapter(3887A) 001a 802.11bg 001c 802.11b/g Wireless Network Adapter 0020 AG-760A 802.11abg Wireless Adapter [ZyDAS ZD1211B] 0022 802.11b/g/n Wireless Network Adapter 0023 UB81 802.11bgn 0025 802.11b/g/n USB Wireless Network Adapter 0026 UB82 802.11abgn 0027 Sphairon Homelink 1202 802.11n Wireless Adapter [Atheros AR9170] 0ce5 Validation Technologies International 0003 Matrix 0ce9 Pico Technology 1001 PicoScope3000 series PC Oscilloscope 1007 PicoScope 2000 series PC Oscilloscope 1008 PicoScope 5000 series PC Oscilloscope 1009 PicoScope 4000 series PC Oscilloscope 100e PicoScope 6000 series PC Oscilloscope 1012 PicoScope 3000A series PC Oscilloscope 1016 PicoScope 2000A series PC Oscilloscope 1018 PicoScope 4000A series PC Oscilloscope 1200 PicoScope 2000 series PC Oscilloscope 1201 PicoScope 3000 series PC Oscilloscope 1202 PicoScope 4000 series PC Oscilloscope 1203 PicoScope 5000 series PC Oscilloscope 1204 PicoScope 6000 series PC Oscilloscope 1211 PicoScope 3000 series PC Oscilloscope 1212 PicoScope 4000 series PC Oscilloscope 0cf1 e-Conn Electronic Co., Ltd 0cf2 ENE Technology, Inc. 6220 SD Card Reader (SG361) 6225 SD card reader (UB6225) 6230 SD Card Reader (UB623X) 6250 SD card reader (UB6250) 0cf3 Qualcomm Atheros Communications 0001 AR5523 0002 AR5523 (no firmware) 0003 AR5523 0004 AR5523 (no firmware) 0005 AR5523 0006 AR5523 (no firmware) 0036 AR9462 Bluetooth 1001 Thomson TG121N [Atheros AR9001U-(2)NG] 1002 TP-Link TL-WN821N v2 / TL-WN822N v1 802.11n [Atheros AR9170] 1006 TP-Link TL-WN322G v3 / TL-WN422G v2 802.11g [Atheros AR9271] 1010 3Com 3CRUSBN275 802.11abgn Wireless Adapter [Atheros AR9170] 20ff AR7010 (no firmware) 3000 AR3011 Bluetooth (no firmware) 3002 AR3011 Bluetooth 3004 AR3012 Bluetooth 4.0 3005 AR3011 Bluetooth 3007 AR3012 Bluetooth 4.0 (no firmware) 3008 Bluetooth (AR3011) 311d Bluetooth 311f AR3012 Bluetooth 7015 TP-Link TL-WN821N v3 / TL-WN822N v2 802.11n [Atheros AR7010+AR9287] 9170 AR9170 802.11n 9271 AR9271 802.11n 9378 QCA9377-7 b002 Ubiquiti WiFiStation 802.11n [Atheros AR9271] b003 Ubiquiti WiFiStationEXT 802.11n [Atheros AR9271] e006 Dell Wireless 1802 Bluetooth 4.0 LE e300 QCA61x4 Bluetooth 4.0 0cf4 Fomtex Corp. 0cf5 Cellink Co., Ltd 0cf6 Compucable Corp. 0cf7 ishoni Networks 0cf8 Clarisys, Inc. 0750 Claritel-i750 - vp 0cf9 Central System Research Co., Ltd 0cfa Inviso, Inc. 0cfc Minolta-QMS, Inc. 2301 Magicolor 2300 DL 2350 Magicolor 2350EN/3300 3100 Magicolor 3100 7300 Magicolor 5450/5550 0cff SAFA MEDIA Co., Ltd. 0320 SR-380N 0d06 telos EDV Systementwicklung GmbH 0d08 UTStarcom 0602 DV007 [serial] 0603 DV007 [storage] 0d0b Contemporary Controls 0d0c Astron Electronics Co., Ltd 0d0d MKNet Corp. 0d0e Hybrid Networks, Inc. 0d0f Feng Shin Cable Co., Ltd 0d10 Elastic Networks 0001 StormPort (WDM) 0d11 Maspro Denkoh Corp. 0d12 Hansol Electronics, Inc. 0d13 BMF Corp. 0d14 Array Comm, Inc. 0d15 OnStream b.v. 0d16 Hi-Touch Imaging Technologies Co., Ltd 0001 PhotoShuttle 0002 Photo Printer 730 series 0004 Photo Printer 63xPL/PS 0007 P510K 0009 P72x Series 000a P728L 000b P510L 000d P518A 000e P910L 0010 M610 0100 Photo Printer 63xPL/PS 0102 Photo Printer 64xPS 0103 Photo Printer 730 series 0104 Photo Printer 63xPL/PS 0105 Photo Printer 64xPS 010e P510S 0110 P110S 0111 P510Si 0112 P518S 0200 Photo Printer 64xDL 0309 CS-200e 030a CS-220e 0501 P75x Series 0502 P52x Series 0503 P310L 050a P310W 050f P530D 0800 X610 0d17 NALTEC, Inc. 0d18 coaXmedia 0d19 Hank Connection Industrial Co., Ltd 0d28 NXP 0204 ARM mbed 0d2f Andamiro 0002 Pump It Up Pad 0d32 Leo Hui Electric Wire & Cable Co., Ltd 0d33 AirSpeak, Inc. 0d34 Rearden Steel Technologies 0d35 Dah Kun Co., Ltd 0d3a Posiflex Technologies, Inc. 0206 Series 3xxx Cash Drawer 0207 Series 3xxx Cash Drawer 0500 Magnetic Stripe Reader 0d3c Sri Cable Technology, Ltd 0d3d Tangtop Technology Co., Ltd 0001 HID Keyboard 0040 PS/2 Adapter 0d3e Fitcom, inc. 0d3f MTS Systems Corp. 0d40 Ascor, Inc. 0d41 Ta Yun Terminals Industrial Co., Ltd 0d42 Full Der Co., Ltd 0d46 Kobil Systems GmbH 2012 KAAN Standard Plus (Smartcard reader) 3003 mIDentity Light / KAAN SIM III 3014 Smart Token 4000 mIDentity (mass storage) 4001 mIDentity Basic/Classic (composite device) 4081 mIDentity Basic/Classic (installationless) 0d48 Promethean Limited 0001 ACTIVboard 0004 ACTIVboard 0100 Audio 0d49 Maxtor 3000 Drive 3005 Personal Storage 3000LS 3010 3000LE Drive 3100 Hi-Speed USB-IDE Bridge Controller 3200 Personal Storage 3200 5000 5000XT Drive 5010 5000LE Drive 5020 Mobile Hard Disk Drive 7000 OneTouch 7010 OneTouch 7100 OneTouch II 300GB External Hard Disk 7310 OneTouch 4 7410 Mobile Hard Disk Drive (1TB) 7450 Basics Portable USB Device 0d4a NF Corp. 0d4b Grape Systems, Inc. 0d4c Tedas AG 0d4d Coherent, Inc. 0d4e Agere Systems Netherland BV 047a WLAN Card 1000 Wireless Card Model 0801 1001 Wireless Card Model 0802 0d4f EADS Airbus France 0d50 Cleware GmbH 0011 USB-Temp2 Thermometer 0030 Multiplexer 0040 F4 foot switch 0d51 Volex (Asia) Pte., Ltd 0d53 HMI Co., Ltd 0d54 Holon Corp. 0d55 ASKA Technologies, Inc. 0d56 AVLAB Technology, Inc. 0d57 Solomon Microtech, Ltd 0d59 TRC Simulators b.v. 02a8 Digital Clock 0d5c SMC Networks, Inc. a001 SMC2662W (v1) EZ Connect 802.11b Wireless Adapter [Atmel AT76C503A] a002 SMC2662W v2 / SMC2662W-AR / Belkin F5D6050 [Atmel at76c503a] 0d5e Myacom, Ltd 2346 BT Digital Access adapter 0d5f CSI, Inc. 0d60 IVL Technologies, Ltd 0d61 Meilu Electronics (Shenzhen) Co., Ltd 0d62 Darfon Electronics Corp. 0003 Smartcard Reader 0004 Keyboard 001b Keyboard 001c Benq X120 Internet Keyboard Pro 0306 M530 Mouse 0800 Magic Wheel 2021 AM805 Keyboard 2026 TECOM Bluetooth Device 2050 Mouse 2106 Dell L20U Multimedia Keyboard 910e HP Business Slim Keyboard a100 Optical Mouse 0d63 Fritz Gegauf AG 0d64 DXG Technology Corp. 0105 Dual Mode Digital Camera 1.3M 0107 Horus MT-409 Camera 0108 Dual Mode Digital Camera 0202 Dual Mode Video Camera Device 0303 DXG-305V Camera 1001 SiPix Stylecam/UMAX AstraPix 320s 1002 Fashion Cam 01 Dual-Mode DSC (Video Camera) 1003 Fashion Cam Dual-Mode DSC (Controller) 1021 D-Link DSC 350F 1208 Dual Mode Still Camera Device 2208 Mass Storage 3105 Dual Mode Digital Camera Disk 3108 Digicam Mass Storage Device 5566 Contour Roam Model 1600 0d65 KMJP Co., Ltd 0d66 TMT 0d67 Advanet, Inc. 0d68 Super Link Electronics Co., Ltd 0d69 NSI 0d6a Megapower International Corp. 0d6b And-Or Logic 0d70 Try Computer Co., Ltd 0d71 Hirakawa Hewtech Corp. 0d72 Winmate Communication, Inc. 0d73 Hit's Communications, Inc. 0d76 MFP Korea, Inc. 0d77 Power Sentry/Newpoint 0d78 Japan Distributor Corp. 0d7a MARX Datentechnik GmbH 0001 CrypToken 0d7b Wellco Technology Co., Ltd 0d7c Taiwan Line Tek Electronic Co., Ltd 0d7d Phison Electronics Corp. 0100 PS1001/1011/1006/1026 Flash Disk 0110 Gigabyte FlexDrive 0120 Disk Pro 64MB 0124 GIGABYTE Disk 0240 I/O-Magic/Transcend 6-in-1 Card Reader 110e NEC uPD720121/130 USB-ATA/ATAPI Bridge 1240 Apacer 6-in-1 Card Reader 2.0 1270 Wolverine SixPac 6000 1300 Flash Disk 1320 PS2031 Flash Disk 1400 Attache 256MB USB 2.0 Flash Drive 1420 PS2044 Pen Drive 1470 Vosonic X's-Drive II+ VP2160 1620 USB Disk Pro 1900 USB Thumb Drive 0d7e American Computer & Digital Components 2507 Hi-Speed USB-to-IDE Bridge Controller 2517 Hi-Speed Mass Storage Device 25c7 Hi-Speed USB-to-IDE Bridge Controller 0d7f Essential Reality LLC 0100 P5 Glove glove controller 0d80 H.R. Silvine Electronics, Inc. 0d81 TechnoVision 0d83 Think Outside, Inc. 0d87 Dolby Laboratories Inc. 0d89 Oz Software 0d8a King Jim Co., Ltd 0101 TEPRA PRO 0d8b Ascom Telecommunications, Ltd 0d8c C-Media Electronics, Inc. 0001 Audio Device 0002 Composite Device 0003 Sound Device 0004 CM6631A Audio Processor 0005 Blue Snowball 0006 Storm HP-USB500 5.1 Headset 000c Audio Adapter 000d Composite Device 000e Audio Adapter (Planet UP-100, Genius G-Talk) 0014 Audio Adapter (Unitek Y-247A) 001f CM108 Audio Controller 0102 CM106 Like Sound Device 0103 CM102-A+/102S+ Audio Controller 0104 CM103+ Audio Controller 0105 CM108 Audio Controller 0107 CM108 Audio Controller 010f CM108 Audio Controller 0115 CM108 Audio Controller 0139 Multimedia Headset [Gigaware by Ignition L.P.] 013c CM108 Audio Controller 0201 CM6501 5000 Mass Storage Controller 5200 Mass Storage Controller(0D8C,5200) b213 USB Phone CM109 (aka CT2000,VPT1000) 0d8d Promotion & Display Technology, Ltd 0234 V-234 Composite Device 0550 V-550 Composite Device 0551 V-551 Composite Device 0552 V-552 Composite Device 0651 V-651 Composite Device 0652 V-652 Composite Device 0653 V-653 Composite Device 0654 V-654 Composite Device 0655 V-655 Composite Device 0656 V-656 Composite Device 0657 V-657 Composite Device 0658 V-658 Composite Device 0659 V-659 Composite Device 0660 V-660 Composite Device 0661 V-661 Composite Device 0662 V-662 Composite Device 0850 V-850 Composite Device 0851 V-851 Composite Device 0852 V-852 Composite Device 0901 V-901 Composite Device 0902 V-902 Composite Device 0903 V-903 Composite Device 4754 Voyager DMP Composite Device bb00 Bloomberg Composite Device bb01 Bloomberg Composite Device bb02 Bloomberg Composite Device bb03 Bloomberg Composite Device bb04 Bloomberg Composite Device bb05 Bloomberg Composite Device fffe Global Tuner Composite Device ffff Voyager DMP Composite Device 0d8e Global Sun Technology, Inc. 0163 802.11g 54 Mbps Wireless Dongle 1621 802.11b Wireless Adapter 3762 Cohiba 802.11g Wireless Mini adapter [Intersil ISL3887] 3763 802.11g Wireless dongle 7100 802.11b Adapter 7110 WL-210 / WU210P 802.11b Wireless Adapter [Atmel AT76C503A] 7605 TRENDnet TEW-224UB 802.11b Wireless Adapter [Atmel AT76C503A] 7801 AR5523 7802 AR5523 (no firmware) 7811 AR5523 7812 AR5523 (no firmware) 7a01 PRISM25 802.11b Adapter 0d8f Pitney Bowes 0d90 Sure-Fire Electrical Corp. 0d96 Skanhex Technology, Inc. 0000 Jenoptik JD350 video 3300 SX330z Camera 4100 SX410z Camera 4102 MD 9700 Camera 4104 Jenoptik JD-4100z3s 410a Medion 9801/Novatech SX-410z 5200 SX-520z Camera 0d97 Santa Barbara Instrument Group 0001 SBIG Astronomy Camera (without firmware) 0101 SBIG Astronomy Camera (with firmware) 0d98 Mars Semiconductor Corp. 0300 Avaya Wireless Card 1007 Discovery Kids Digital Camera 0d99 Trazer Technologies, Inc. 0d9a RTX AS 0001 Bluetooth Device 0d9b Tat Shing Electrical Co. 0d9c Chee Chen Hi-Technology Co., Ltd 0d9d Sanwa Supply, Inc. 0d9e Avaya 0300 Wireless Card 0d9f Powercom Co., Ltd 0001 Uninterruptible Power Supply 0002 Black Knight PRO / WOW Uninterruptible Power Supply (Cypress HID->COM RS232) 00a2 Imperial Uninterruptible Power Supply (HID PDC) 00a3 Smart King PRO Uninterruptible Power Supply (HID PDC) 00a4 WOW Uninterruptible Power Supply (HID PDC) 00a5 Vanguard Uninterruptible Power Supply (HID PDC) 00a6 Black Knight PRO Uninterruptible Power Supply (HID PDC) 0da0 Danger Research 0da1 Suzhou Peter's Precise Industrial Co., Ltd 0da2 Land Instruments International, Ltd 0da3 Nippon Electro-Sensory Devices Corp. 0da4 Polar Electro Oy 0001 Interface 0003 FlowLink 0008 Loop 0da7 IOGear, Inc. 0da8 softDSP Co., Ltd 0001 SDS 200A Oscilloscope 0dab Cubig Group 0100 DVR/CVR-M140 MP3 Player 0dad Westover Scientific 0db0 Micro Star International 1020 PC2PC WLAN Card 1967 Bluetooth Dongle 3713 Primo 73 3801 Motorola Bluetooth 2.1+EDR Device 3870 MS-3870 802.11bgn Wireless Module [Ralink RT3070] 3871 MS-3871 802.11bgn Wireless Module [Ralink RT8070] 4011 Medion Flash XL V2.0 Card Reader 4023 Lexar Mobile Card Reader 4600 802.11b/g Turbo Wireless Adapter 5501 Mass Storage Device 5502 Mass Storage Device 5513 MP3 Player 5515 MP3 Player 5516 MP3 Player 5580 Mega Sky 580 DVB-T Tuner [M902x] 5581 Mega Sky 580 DVB-T Tuner [GL861] 6823 UB11B/MS-6823 802.11b Wi-Fi adapter 6826 IEEE 802.11g Wireless Network Adapter 6855 Bluetooth Device 6861 MSI-6861 802.11g WiFi adapter 6865 RT2570 6869 RT2570 6874 RT2573 6877 RT2573 6881 Bluetooth Class I EDR Device 688a Bluetooth Class I EDR Device 6899 802.11bgn 1T1R Mini Card Wireless Adapter 6970 MS-6970 BToes Bluetooth adapter 697a Bluetooth Dongle 6982 Medion Flash XL Card Reader a861 RT2573 a874 RT2573 a970 Bluetooth dongle a97a Bluetooth EDR Device b970 Bluetooth EDR Device b97a Bluetooth EDR Device ffff Bluetooth Adapter in DFU mode 0db1 Wen Te Electronics Co., Ltd 0db2 Shian Hwi Plug Parts, Plastic Factory 0db3 Tekram Technology Co., Ltd 0db4 Chung Fu Chen Yeh Enterprise Corp. 0db5 Access IS 0139 Barcode Module - CDC serial 013a Barcode Module - Virtual Keyboard 013b Barcode Module - HID 0160 NFC and Smartcard Module (NSM) 0164 NFC and Smartcard Module (NSM)with 4 SAM slots 0db7 ELCON Systemtechnik 0002 Goldpfeil P-LAN 0dba Digidesign 1000 Mbox 1 [Mbox] 3000 Mbox 2 b011 Eleven Rack 0dbc A&D Medical 0003 AND Serial Cable [AND Smart Cable] 0dbe Jiuh Shiuh Precision Industry Co., Ltd 0dbf Jess-Link International 0002 SmartDongle Security Key 0200 HDD Storage Solution 021b USB-2.0 IDE Adapter 0300 Storage Adapter 0333 Storage Adapter 0502 FSC Storagebird XL hard disk 0707 ZIV Drive 0dc0 G7 Solutions (formerly Great Notions) 0dc1 Tamagawa Seiki Co., Ltd 0dc3 Athena Smartcard Solutions, Inc. 0801 ASEDrive III 0802 ASEDrive IIIe 1104 ASEDrive IIIe KB 1701 ASEKey 1702 ASEKey 0dc4 inXtron, Inc. 0040 Mass Storage Device 0041 Mass Storage Device 0042 Mass Storage Device 0101 Hi-Speed Mass Storage Device 0209 SK-3500 S2 020a Oyen Digital MiniPro 2.5" hard drive enclosure 0290 Mass Storage Device [NT2 U3.1] 0dc5 SDK Co., Ltd 0dc6 Precision Squared Technology Corp. 2301 Wireless Touchpad Keyboard 0dc7 First Cable Line, Inc. 0dcd NetworkFab Corp. 0001 Remote Interface Adapter 0002 High Bandwidth Codec 0dd0 Access Solutions 1002 Triple Talk Speech Synthesizer 0dd1 Contek Electronics Co., Ltd 0dd2 Power Quotient International Co., Ltd 0003 Mass Storage (P) 0dd3 MediaQ 0dd4 Custom Engineering SPA 0237 K80 80mm Thermal Printer 0dd5 California Micro Devices 0dd7 Kocom Co., Ltd 0dd8 Netac Technology Co., Ltd 0562 Netac Portable SSD Z6s 1060 USB-CF-Card e007 OnlyDisk U222 Pendrive f607 OnlyDisk U210 1G flash drive [U-SAFE] 0dd9 HighSpeed Surfing 0dda Integrated Circuit Solution, Inc. 0001 Multi-Card Reader 6in1 0002 Multi-Card Reader 7in1 0003 Flash Disk 0005 Internal Multi-Card Reader 6in1 0008 SD single card reader 0009 MS single card reader 000a MS+SD Dual Card Reader 000b SM single card reader 0101 All-In-One Card Reader 0102 All-In-One Card Reader 0301 MP3 Player 0302 Multi-Card MP3 Player 1001 Multi-Flash Disk 2001 Multi-Card Reader 2002 Q018 default PID 2003 Multi-Card Reader 2005 Datalux DLX-1611 16in1 Card Reader 2006 All-In-One Card Reader 2007 USB to ATAPI bridge 2008 All-In-One Card Reader 2013 SD/MS Combo Card Reader 2014 SD/MS Single Card Reader 2023 card reader SD/MS DEMO board with ICSI brand name (MaskROM version) 2024 card reader SD/MS DEMO board with Generic brand name (MaskROM version) 2026 USB2.0 Card Reader 2027 USB 2.0 Card Reader 2315 UFD MP3 player (model 2) 2318 UFD MP3 player (model 1) 2321 UFD MP3 player 0ddb Tamarack, Inc. 0ddd Datelink Technology Co., Ltd 0dde Ubicom, Inc. 0de0 BD Consumer Healthcare 0de7 USBmicro 0191 U401 Interface card 01a5 U421 interface card 01c3 U451 relay interface card 0dea UTECH Electronic (D.G.) Co., Ltd. 0ded Novasonics 0dee Lifetime Memory Products 4010 Storage Adapter 0def Full Rise Electronic Co., Ltd 0df4 NET&SYS 0201 MNG-2005 0df6 Sitecom Europe B.V. 0001 C-Media VOIP Device 0004 Bluetooth 2.0 Adapter 100m 0007 Bluetooth 2.0 Adapter 10m 000b Bluetooth 2.0 Adapter DFU 000d WL-168 Wireless Network Adapter 54g 0017 WL-182 Wireless-N Network USB Card 0019 Bluetooth 2.0 adapter 10m CN-512v2 001 001a Bluetooth 2.0 adapter 100m CN-521v2 001 002b WL-188 Wireless Network 300N USB Adapter 002c WL-301 Wireless Network 300N USB Adapter 002d WL-302 Wireless Network 300N USB dongle 0036 WL-603 Wireless Adapter 0039 WL-315 Wireless-N USB Adapter 003b WL-321 Wireless USB Gaming Adapter 300N 003c WL-323 Wireless-N USB Adapter 003d WL-324 Wireless USB Adapter 300N 003e WL-343 Wireless USB Adapter 150N X1 003f WL-608 Wireless USB Adapter 54g 0040 WL-344 Wireless Adapter 300N X2 [Ralink RT3071] 0041 WL-329 Wireless Dualband USB adapter 300N 0042 WL-345 Wireless USB adapter 300N X3 0045 WL-353 Wireless USB Adapter 150N Nano 0047 WL-352v1 Wireless USB Adapter 300N 002 0048 WL-349v1 Wireless Adapter 150N 002 [Ralink RT3070] 0049 WL-356 Wireless Adapter 300N 004a WL-358v1 Wireless Micro USB Adapter 300N X3 002 004b WL-349v3 Wireless Micro Adapter 150N X1 [Realtek RTL8192SU] 004c WL-352 802.11n Adapter [Realtek RTL8191SU] 0050 WL-349v4 Wireless Micro Adapter 150N X1 [Ralink RT3370] 0056 LN-031 10/100/1000 Ethernet Adapter 005d WLA-2000 v1.001 WLAN [RTL8191SU] 0060 WLA-4000 802.11bgn [Ralink RT3072] 0062 WLA-5000 802.11abgn [Ralink RT3572] 006f WLA-5100 0072 AX88179 Gigabit Ethernet [Sitecom] 061c LN-028 Network USB 2.0 Adapter 214a IDE/SATA Combo Adapter [CN-330] 21f4 44 St Bluetooth Device 2200 Sitecom bluetooth2.0 class 2 dongle CN-512 2208 Sitecom bluetooth2.0 class 2 dongle CN-520 2209 Sitecom bluetooth2.0 class 1 dongle CN-521 3068 DC-104v2 ISDN Adapter [HFC-S] 9071 WL-113 rev 1 Wireless Network USB Adapter 9075 WL-117 Hi-Speed USB Adapter 90ac WL-172 Wireless Network USB Adapter 54g Turbo 9712 WL-113 rev 2 Wireless Network USB Adapter 0df7 Mobile Action Technology, Inc. 0620 MA-620 Infrared Adapter 0700 MA-700 Bluetooth Adapter 0720 MA-720 Bluetooth Adapter 0722 Bluetooth Dongle 0730 MA-730/MA-730G Bluetooth Adapter 0800 Data Cable 0820 Data Cable 0900 MA i-gotU Travel Logger GPS 1800 Generic Card Reader 1802 Card Reader 0dfa Toyo Communication Equipment Co., Ltd 0dfc GeneralTouch Technology Co., Ltd 0001 Touchscreen 0003 MultiTouch TouchScreen(Dualtouch) 0101 5-point Touch Screen d107 MultiTouch TouchScreen 0e03 Nippon Systemware Co., Ltd 0e08 Winbest Technology Co., Ltd 0e0b Amigo Technology Inc. 9031 802.11n Wireless USB Card 9041 802.11n Wireless USB Card 0e0c Gesytec 0101 LonUSB LonTalk Network Adapter 0e0d PicoQuant GmbH 0003 PicoHarp 300 0e0f VMware, Inc. 0001 Device 0002 Virtual USB Hub 0003 Virtual Mouse 0004 Virtual CCID 0005 Virtual Mass Storage 0006 Virtual Keyboard 000a Virtual Sensors 8001 Root Hub 8002 Root Hub 8003 Root Hub f80a Smoker FX2 0e16 JMTek, LLC 0e17 Walex Electronic, Ltd 0e1a Unisys 0e1b Crewave 0e1e Green Hills Software 0e20 Pegasus Technologies Ltd. 0101 NoteTaker 0200 Seiko Instruments InkLink Handwriting System 0e21 Cowon Systems, Inc. 0300 iAudio CW200 0400 MP3 Player 0500 iAudio M3 0510 iAudio X5, subpack USB port 0513 iAudio X5, side USB port 0520 iAudio M5, side USB port 0601 iAudio G3 0681 iAUDIO E2 0700 iAudio U3 0751 iAudio 7 0760 iAUDIO U5 / iAUDIO G2 0800 Cowon D2 (UMS mode) 0801 Cowon D2 (MTP mode) 0910 iAUDIO 9 0920 J3 0e22 Symbian Ltd. 0e23 Liou Yuane Enterprise Co., Ltd 0e25 VinChip Systems, Inc. 0e26 J-Phone East Co., Ltd 0e2e Brady Worldwide, Inc. 000b BMP 51 000c BMP 61 000d BMP 41 0e30 HeartMath LLC 0e34 Micro Computer Control Corp. 0e35 3Pea Technologies, Inc. 0e36 TiePie engineering 0009 Handyscope HS3 000b Handyscope HS4 000f Handyscope HS4-DIFF (br) 0010 Handyscope HS2 0011 TiePieSCOPE HS805 (br) 0012 TiePieSCOPE HS805 0013 Handyprobe HP3 0014 Handyprobe HP3 0018 Handyprobe HP2 001b Handyscope HS5 0042 TiePieSCOPE HS801 00fd USB To Parallel adapter 00fe USB To Parallel adapter 0e38 Stratitec, Inc. 0e39 Smart Modular Technologies, Inc. 0137 Bluetooth Device 0e3a Neostar Technology Co., Ltd 1100 CW-1100 Wireless Network Adapter 0e3b Mansella, Ltd 0e41 Line6, Inc. 4147 TonePort GX 414d Pod HD500 4156 POD HD Desktop 4250 BassPODxt 4252 BassPODxt Pro 4642 BassPODxt Live 4650 PODxt Live 4750 GuitarPort 5044 PODxt 5050 PODxt Pro 534d SeaMonkey 0e44 Sun-Riseful Technology Co., Ltd. 0e48 Julia Corp., Ltd 0100 CardPro SmartCard Reader 0e4a Shenzhen Bao Hing Electric Wire & Cable Mfr. Co. 0e4c Radica Games, Ltd 1097 Gamester Controller 1103 Gamester Reflex 2390 Jtech Controller 3510 Gamester for Xbox 7288 funkey reader 0e50 TechnoData Interware 0001 Matrix USB-Key 0002 Matrixlock Dongle (HID) 0e55 Speed Dragon Multimedia, Ltd 110a Tanic S110-SG1 + ISSC IS1002N [Slow Infra-Red (SIR) & Bluetooth 1.2 (Class 2) Adapter] 110b MS3303H USB-to-Serial Bridge 0e56 Kingston Technology Company, Inc. 6021 K-PEX 100 0e5a Active Co., Ltd 0e5b Union Power Information Industrial Co., Ltd 0e5c Bitland Information Technology Co., Ltd 6118 LCD Device 6119 remote receive and control device 6441 C-Media Sound Device 0e5d Neltron Industrial Co., Ltd 0e5e Conwise Technology Co., Ltd. 6622 CW6622 0e66 Hawking Technologies 0001 HWUN1 Hi-Gain Wireless-300N Adapter w/ Upgradable Antenna [Ralink RT2870] 0003 HWDN1 Hi-Gain Wireless-300N Dish Adapter [Ralink RT2870] 0009 HWUN2 Hi-Gain Wireless-150N Adapter w/ Upgradable Antenna [Ralink RT2770] 000b HWDN2 Hi-Gain Wireless-150N Dish Adapter [Ralink RT2770] 0013 HWUN3 Hi-Gain Wireless-N Adapter [Ralink RT3070] 0015 HWDN2 Rev. E Hi-Gain Wireless-150N Dish Adapter [Realtek RTL8191SU] 0017 HAWNU1 Hi-Gain Wireless-150N Network Adapter with Range Amplifier [Ralink RT3070] 0018 Wireless-N Network Adapter [Ralink RT2870] 400b UF100 10/100 Network Adapter 400c UF100 Ethernet [pegasus2] 0e67 Fossil, Inc. 0002 Wrist PDA 0e6a Megawin Technology Co., Ltd 0101 MA100 [USB-UART Bridge IC] 02c0 Defender Gaming Keyboard 030b Truly Ergonomic Computer Keyboard (Device Firmware Update mode) 030c Truly Ergonomic Computer Keyboard 6001 GEMBIRD Flexible keyboard KB-109F-B-DE 7f5c BPF-015 Key Chain Photo Frame 0e6f Logic3 0003 Freebird wireless Controller 0005 Eclipse wireless Controller 0006 Edge wireless Controller 0008 After Glow Pro Controller 0105 Disney's High School Musical 3 Dance Pad for Xbox 360 0113 Afterglow AX.1 Gamepad 011f Rock Candy Wired Controller for Xbox 360 0128 Wireless PS3 Controller 0131 PDP EA Sports Controller 0133 Wired Controller 0139 Afterglow Prismatic Wired Controller for Xbox One 013a PDP Xbox One Controller 0146 Rock Candy Wired Controller for Xbox One 0147 PDP Marvel Controller for Xbox One 015c PDP Arcade Stick for Xbox One 0161 Camo Wired Controller for Xbox One 0162 Xbox One Wired Controller 0163 Legendary Collection Deliverer of Truth 0164 Battlefield 1 Wired Controller for Xbox One 0165 Titanfall 2 Wired Controller for Xbox One 0201 Pelican PL-3601 0213 Afterglow Gamepad for Xbox 360 021f Rock Candy Gamepad for Xbox 360 0246 Rock Candy Gamepad for Xbox One 0301 Controller 0346 Rock Candy Wired Controller for Xbox One 0401 Controller 0413 Afterglow AX.1 Gamepad for Xbox 360 0501 Wired Controller f501 Hi-TEC Essentials Wired Gamepad f900 Afterglow AX.1 0e70 Tokyo Electronic Industry Co., Ltd 0e72 Hsi-Chin Electronics Co., Ltd 0e75 TVS Electronics, Ltd 0e79 Archos, Inc. 1106 Pocket Media Assistant - PMA400 1204 Gmini XS 200 1306 504 Portable Multimedia Player 1330 5 Tablet 1332 5 IMT 1416 32 IT 1417 A43 IT 14ad 97 Titanium HD 150e 80 G9 3001 40 Titanium 0e7b On-Tech Industry Co., Ltd 0e7e Gmate, Inc. 0001 Yopy 3000 PDA 1001 YP3X00 PDA 0e82 Ching Tai Electric Wire & Cable Co., Ltd 0e83 Shin An Wire & Cable Co. 0e8c Well Force Electronic Co., Ltd 0e8d MediaTek Inc. 0002 phone (mass storage mode) [Doro Primo 413] 0003 MT6227 phone 0004 MT6227 phone 0023 S103 / Powertel M6200 00a5 GSM modem [Medion Surfstick Model:S4222] 1806 Samsung SE-208 Slim Portable DVD Writer 1836 Samsung SE-S084 Super WriteMaster Slim External DVD writer 1887 Slim Portable DVD Writer 1956 Samsung SE-506 Portable BluRay Disc Writer 2000 MT65xx Preloader 2008 Cyrus Technology CS 24 3329 Qstarz BT-Q1000XT 7612 MT7612U 802.11a/b/g/n/ac Wireless Adapter 763e MT7630e Bluetooth Adapter 7668 MT7668 2x2 Dual Band Dual Concurrent 802.11a/b/g/n/ac WiFi with MU-MIMO and Bluetooth 5.0 Radios 0e8f GreenAsia Inc. 0003 MaxFire Blaze2 0012 Joystick/Gamepad 0016 4 port USB 1.1 hub UH-174 0020 USB to PS/2 Adapter 0021 Multimedia Keyboard Controller 0022 multimedia keyboard controller 0201 SmartJoy Frag Xpad/PS2 adaptor 3008 Xbox Controller 300a steering Wheel 0e90 WiebeTech, LLC 0100 Storage Adapter V1 0e91 VTech Engineering Canada, Ltd 0e92 C's Glory Enterprise Co., Ltd 0e93 eM Technics Co., Ltd 0e95 Future Technology Co., Ltd 0e96 Aplux Communications, Ltd c001 TRUST 380 USB2 SPACEC@M 0e97 Fingerworks, Inc. 0908 Composite HID (Keyboard and Mouse) 0e98 Advanced Analogic Technologies, Inc. 0e99 Parallel Dice Co., Ltd 0e9a TA HSING Industries, Ltd 0e9b ADTEC Corp. 0e9c Streamzap, Inc. 0000 Streamzap Remote Control 0e9f Tamura Corp. 0ea0 Ours Technology, Inc. 2126 7-in-1 Card Reader 2153 SD Card Reader Key 2168 Transcend JetFlash 2.0 / Astone USB Drive / Intellegent Stick 2.0 2213 WinDroid N287 AH7N2502.013317 6803 OTI-6803 Flash Disk 6808 OTI-6808 Flash Disk 6828 OTI-6828 Flash Disk 6858 OTi-6858 serial adapter 0ea6 Nihon Computer Co., Ltd 0ea7 MSL Enterprises Corp. 0ea8 CenDyne, Inc. 0ead Humax Co., Ltd 0eb0 NovaTech 9020 NovaTech NV-902W 9021 RT2573 0eb1 WIS Technologies, Inc. 6666 WinFast WalkieTV TV Loader 6668 WinFast WalkieTV TV Loader 7007 WinFast WalkieTV WDM Capture 0eb2 Y-S Electronic Co., Ltd 0eb3 Saint Technology Corp. 0eb7 Endor AG 0eb8 Mettler Toledo 2200 Ariva Scale f000 BC60 Scale 0ebb Thermo Fisher Scientific 0002 FT-IR Spectrometer 0ebe VWeb Corp. 0ebf Omega Technology of Taiwan, Inc. 0ec0 LHI Technology (China) Co., Ltd 0ec1 Abit Computer Corp. 0ec2 Sweetray Industrial, Ltd 0ec3 Axell Co., Ltd 0ec4 Ballracing Developments, Ltd 0ec5 GT Information System Co., Ltd 0ec6 InnoVISION Multimedia, Ltd 0ec7 Theta Link Corp. 1008 So., Show 301 Digital Camera 0ecd Lite-On IT Corp. 1400 CD\RW 40X a100 LDW-411SX DVD/CD Rewritable Drive 0ece TaiSol Electronics Co., Ltd 0ecf Phogenix Imaging, LLC 0ed1 WinMaxGroup 6660 Flash Disk 64M-C 6680 Flash Disk 64M-B 7634 MP3 Player 0ed2 Kyoto Micro Computer Co., Ltd 0ed3 Wing-Tech Enterprise Co., Ltd 0ed5 Fiberbyte e000 USB-inSync Device f000 Fiberbyte USB-inSync Device f201 Fiberbyte USB-inSync DAQ-2500X 0eda Noriake Itron Corp. 0edf e-MDT Co., Ltd 2060 FID irock! 100 Series 0ee0 Shima Seiki Mfg., Ltd 0ee1 Sarotech Co., Ltd 0ee2 AMI Semiconductor, Inc. 0ee3 ComTrue Technology Corp. 1000 Image Tank 1.5 0ee4 Sunrich Technology, Ltd 0690 SATA 3 Adapter 0eee Digital Stream Technology, Inc. 8810 Mass Storage Drive 0eef D-WAV Scientific Co., Ltd 0001 Titan6001 Surface Acoustic Wave Touchscreen Controller [eGalax] 0002 Touchscreen Controller(Professional) 7200 Touchscreen Controller 7904 Multitouch Capacitive Touchscreen eGalaxTouch EXC7904-21v00_T13 [IIyama Prolite T1932-MSC] a802 eGalaxTouch EXC7920 b10e eGalaxTouch EXC3000 c000 Multitouch Capacitive Touchscreen eGalaxTouch EXC3188-4643-08.00.00.00 Sirius_4643 PCAP3188UR Series [IIyama Prolite PLT1932MSC] 0ef0 Hitachi Cable, Ltd 0ef1 Aichi Micro Intelligent Corp. 0ef2 I/O Magic Corp. 0ef3 Lynn Products, Inc. 0ef4 DSI Datotech 0ef5 PointChips 2202 Flash Disk 2366 Flash Disk 0ef6 Yield Microelectronics Corp. 0ef7 SM Tech Co., Ltd (Tulip) 0efd Oasis Semiconductor 0efe Wem Technology, Inc. 0f03 Unitek UPS Systems 0001 Alpha 1200Sx 0f06 Visual Frontier Enterprise Co., Ltd 0f08 CSL Wire & Plug (Shen Zhen) Co. 0f0c CAS Corp. 0f0d Hori Co., Ltd 000a Dead or Alive 4 FightStick for Xbox 360 000c Horipad EX Turbo for Xbox 360 000d Fighting Stick EX2 for Xbox 360 0011 Real Arcade Pro 3 0016 Real Arcade Pro.EX for Xbox 360 001b Real Aracde Pro.VX 0063 Real Arcade Pro Hayabusa for Xbox One 0067 Horipad One 0078 Real Arcade Pro V Kai for Xbox One / Xbox 360 0090 Horipad Ultimate 00c1 HORIPAD for Nintendo Switch 0f0e Energy Full Corp. 0f0f Silego Technology Inc 0006 GreenPak Universal Dev Board (Active Mode) 8006 GreenPak Universal Dev Board (Reset Mode) 0f11 LD Didactic GmbH 1000 CASSY-S 1010 Pocket-CASSY 1020 Mobile-CASSY 1080 Joule and Wattmeter 1081 Digital Multimeter P 1090 UMI P 1100 X-Ray Apparatus 1101 X-Ray Apparatus 1200 VideoCom 2000 COM3LAB 2010 Terminal Adapter 2020 Network Analyser 2030 Converter Control Unit 2040 Machine Test System 0f12 Mars Engineering Corp. 0f13 Acetek Technology Co., Ltd 0f14 Ingenico 0012 Vital'Act 3S 0038 XIRING Smart Card Terminal LEO V2 0f18 Finger Lakes Instrumentation 0002 CCD 0006 Focuser 0007 Filter Wheel 000a ProLine CCD 000b Color Filter Wheel 4 000c PDF2 000d Guider 0f19 Oracom Co., Ltd 0f1b Onset Computer Corp. 0f1c Funai Electric Co., Ltd 0f1d Iwill Corp. 0f21 IOI Technology Corp. 0f22 Senior Industries, Inc. 0f23 Leader Tech Manufacturer Co., Ltd 0f24 Flex-P Industries, Snd., Bhd. 0f2d ViPower, Inc. 0f2e Geniality Maple Technology Co., Ltd 0f2f Priva Design Services 0f30 Jess Technology Co., Ltd 001c PS3 Guitar Controller Dongle 010b Philips Recoil 0110 Dual Analog Rumble Pad 0111 Colour Rumble Pad 0202 Joytech Advanced Controller 0208 Xbox & PC Gamepad 8888 BigBen XBMiniPad Controller 0f31 Chrysalis Development 0f32 YFC-BonEagle Electric Co., Ltd 0f37 Kokuyo Co., Ltd 0f38 Nien-Yi Industrial Corp. 0f39 TG3 Electronics 0404 Recreated ZX Spectrum Keyboard 0876 Keyboard [87 Francium Pro] 1086 DK2108SZ Keyboard [Ducky Zero] 0f3d Airprime, Incorporated 0112 CDMA 1xEVDO PC Card, PC 5220 0f41 RDC Semiconductor Co., Ltd 0f42 Nital Consulting Services, Inc. 0f44 Polhemus ef11 Patriot (firmware not loaded) ef12 Patriot ff11 Liberty (firmware not loaded) ff12 Liberty 0f49 Evolis SA 0a00 Zenius 0f4b St. John Technology Co., Ltd 0f4c WorldWide Cable Opto Corp. 0f4d Microtune, Inc. 1000 Bluetooth Dongle 0f4e Freedom Scientific 0f52 Wing Key Electrical Co., Ltd 0f53 Dongguan White Horse Cable Factory, Ltd 0f54 Kawai Musical Instruments Mfg. Co., Ltd 0101 MP6 Stage Piano 0f55 AmbiCom, Inc. 0f5c Prairiecomm, Inc. 0f5d NewAge International, LLC 9455 Compact Drive 0f5f Key Technology Corp. 0f60 NTK, Ltd 0f61 Varian, Inc. 0f62 Acrox Technologies Co., Ltd 1001 Targus Mini Trackball Optical Mouse 0f63 LeapFrog Enterprises 0010 Leapster Explorer 0022 Leap Reader 0500 Fly Fusion 0600 Leap Port Turbo 0700 POGO 0800 Didj 0900 TAGSchool 0a00 Leapster 2 0b00 Crammer 0c00 Tag Jr 0d00 My Pal Scout 0e00 Tag32 0f00 Tag64 1000 Kiwi16 1100 Leapster L2x 1111 Fly Fusion 1300 Didj UK/France (Leapster Advance) 0f68 Kobe Steel, Ltd 0f69 Dionex Corp. 0f6a Vibren Technologies, Inc. 0f6e INTELLIGENT SYSTEMS 0100 IS-CGB-EMULATOR 0201 GameBoy Advance Flash Gang Writer 0202 IS-AGB-CAPTURE 0300 IS-DOL-VIEWER 0400 IS-NITRO-EMULATOR 0401 IS-NITRO-UIC 0402 IS-NITRO-WRITER 0403 IS-NITRO-CAPTURE 0404 IS-NITRO-EMULATOR (DS Lite) 0500 IS-TWL-DEBUGGER 0501 IS-TWL-CAPTURE 0f73 DFI 0f78 Guntermann & Drunck GmbH 0f7c DQ Technology, Inc. 0f7d NetBotz, Inc. 0f7e Fluke Corp. 0f88 VTech Holdings, Ltd 3012 RT2570 3014 ZD1211B 0f8b Yazaki Corp. 0f8c Young Generation International Corp. 0f8d Uniwill Computer Corp. 0f8e Kingnet Technology Co., Ltd 0f8f Soma Networks 0f97 CviLux Corp. 0f98 CyberBank Corp. 0f9c Hyun Won, Inc. 0301 M-Any Premium DAH-610 MP3/WMA Player 0332 mobiBLU DAH-1200 MP3/Ogg Player 0f9e Lucent Technologies 0fa3 Starconn Electronic Co., Ltd 0fa4 ATL Technology 0fa5 Sotec Co., Ltd 0fa7 Epox Computer Co., Ltd 0fa8 Logic Controls, Inc. 0faf Winpoint Electronic Corp. 0fb0 Haurtian Wire & Cable Co., Ltd 0fb1 Inclose Design, Inc. 0fb2 Juan-Chern Industrial Co., Ltd 0fb6 Heber Ltd 3fc3 Firefly X10i I/O Board (with firmware) 3fc4 Firefly X10i I/O Board (without firmware) 0fb8 Wistron Corp. 0002 eHome Infrared Receiver 0fb9 AACom Corp. 0fba San Shing Electronics Co., Ltd 0fbb Bitwise Systems, Inc. 0fc1 Mitac Internatinal Corp. 0fc2 Plug and Jack Industrial, Inc. 0fc5 Delcom Engineering 1222 I/O Development Board 0fc6 Dataplus Supplies, Inc. 0fca Research In Motion, Ltd. 0001 Blackberry Handheld 0004 Blackberry Handheld 0006 Blackberry Pearl 0008 Blackberry Pearl 8001 Blackberry Handheld 8004 Blackberry 8007 Blackberry Handheld 8010 Blackberry Playbook (Connect to Windows mode) 8011 Blackberry Playbook (Connect to Mac mode) 8014 Blackberry Handheld Z30 8020 Blackberry Playbook (CD-Rom mode) 8037 Blackberry PRIV 0fce Sony Ericsson Mobile Communications AB 0076 W910i (Multimedia mode) 00af V640i Phone [PTP Camera] 00d4 C902 [MTP] 00d9 C702 Phone 0112 W995 Walkman Phone 014e J108i Cedar (MTP mode) 015a Xperia Pro [Media Transfer Protocol] 0166 Xperia Mini Pro 0167 ST15i (Xperia mini) 0169 Xperia S 0172 Xperia P 0177 Xperia Ion [Mass Storage] 0188 ST26i 019c C6833 019e C6903 01a5 SO-04F 01a7 D5503 01ba D6603 [Xperia Z3] 01bb D5803 [Xperia Z3 Compact] (MTP mode) 01e0 F5122 [Xperia X dual] (MTP mode) 01e8 F5321 [Xperia X Compact] (MTP mode) 01f9 H8314 [Xperia XZ2 Compact] 1010 WMC Modem 10af V640i Phone [PictBridge] 10d4 C902 Phone [PictBridge] 2105 W715 Phone 2137 Xperia X10 mini (USB debug) 2138 Xperia X10 mini pro (Debug) 2149 Xperia X8 (debug) 214e J108i Cedar (Windows-driver mode) 3137 Xperia X10 mini 3138 Xperia X10 mini pro 3149 Xperia X8 514f Xperia arc S [Adb-Enable Mode] 5169 Xperia S [Adb-Enable Mode] 5177 Xperia Ion [Debug Mode] 518c C1605 [Xperia E dual] MTD mode 51a7 D5503 (Xperia Z1 Compact) 51e0 F5122 [Xperia X dual] (developer mode) 614f Xperia X12 (debug mode) 6166 Xperia Mini Pro 618c C1605 [Xperia E dual] MSC mode 715a Xperia Pro [Tethering] 7166 Xperia Mini Pro (Tethering mode) 7177 Xperia Ion [Tethering] 71f4 G8441 (Xperia XZ1 Compact) [Tethering] 71f9 H8314 [Xperia XZ2 Compact] (Tethering) 8004 9000 Phone [Mass Storage] 81f4 G8441 (Xperia XZ1 Compact) [Tethering] adde C2005 (Xperia M dual) in service mode c1e0 F5122 [Xperia X dual] (MIDI mode) c1e8 F5321 [Xperia X Compact] (MIDI mode) c1f9 H8314 [Xperia XZ2 Compact] (MIDI) d008 V800-Vodafone 802SE Phone d016 K750i Phone d017 K608i Phone d019 VDC EGPRS Modem d025 520 WMC Data Modem d028 W800i d038 W850i Phone d039 K800i (phone mode) d041 K510i Phone d042 W810i Phone d043 V630i Phone d046 K610i Phone d065 W960i Phone (PC Suite) d076 W910i (Phone mode) d079 K530 Phone d089 W580i Phone (mass storage) d0a1 K810 d0af V640i Phone d0cf MD300 Mobile Broadband Modem d0d4 C902 Phone [Modem] d0e1 MD400 Mobile Broadband Modem d12a U100i Yari Phone d12e Xperia X10 d14e J108i Cedar (modem mode) e000 K810 (PictBridge mode) e039 K800i (msc mode) e042 W810i Phone e043 V630i Phone [Mass Storage] e075 K850i e076 W910i (Mass storage) e089 W580i Phone e090 W200 Phone (Mass Storage) e0a1 K810 (Mass Storage mode) e0a3 W660i e0af V640i Phone [Mass Storage] e0d4 C902 Phone [Mass Storage] e0ef C905 Phone [Mass Storage] e0f3 W595 e105 W705 e112 W995 Phone (Mass Storage) e12e X10i Phone e133 Vivaz e14e J108i Cedar (mass-storage mode) e14f Xperia Arc/X12 e15a Xperia Pro [Mass Storage Class] e161 Xperia Ray e166 Xperia Mini Pro e167 XPERIA mini e19b C2005 [Xperia M dual] (Mass Storage) e1a9 D5303 e1aa D2303 e1ad D5103 e1b0 D6708 e1b5 D2004 e1ba D6683 e1bb SO-02G e1bc D2203 e1c0 SGP621 e1c2 D2533 e1c9 E6553 e1cf SGP771 f0fa MN800 / Smartwatch 2 (DFU mode) 0fcf Dynastream Innovations, Inc. 1003 ANT Development Board 1004 ANTUSB Stick 1006 ANT Development Board 1008 ANTUSB2 Stick 1009 ANTUSB-m Stick 0fd0 Tulip Computers B.V. 0fd1 Giant Electronics Ltd. 0fd2 Seac Banche 0001 RDS 6000 0fd4 Tenovis GmbH & Co., KG 0fd5 Direct Access Technology, Inc. 0fd9 Elgato Systems GmbH 0011 EyeTV Diversity 0018 EyeTV Hybrid 0020 EyeTV DTT Deluxe 0021 EyeTV DTT 002a EyeTV Sat 002c EyeTV DTT Deluxe v2 0033 Video Capture 0037 Video Capture v2 0060 Stream Deck 0063 Stream Deck Mini 006c Stream Deck XL 006d Stream Deck original V2 0fda Quantec Networks GmbH 0100 quanton flight control 0fdc Micro Plus 0fde Oregon Scientific ca01 WMRS200 weather station ca05 CM160 ca08 WMR300 Professional Weather System 0fe0 Osterhout Design Group 0100 Bluetooth Mouse 0101 Bluetooth IMU 0200 Bluetooth Keypad 0fe2 Air Techniques 0fe4 IN-Tech Electronics, Ltd 0fe5 Greenconn (U.S.A.), Inc. 0fe6 ICS Advent 8101 DM9601 Fast Ethernet Adapter 811e Parallel Adapter 9700 DM9601 Fast Ethernet Adapter 0fe9 DVICO 4020 TViX M-6500 9010 FusionRemote IR receiver db00 FusionHDTV DVB-T (MT352+LgZ201) (uninitialized) db01 FusionHDTV DVB-T (MT352+LgZ201) (initialized) db10 FusionHDTV DVB-T (MT352+Thomson7579) (uninitialized) db11 FusionHDTV DVB-T (MT352+Thomson7579) (initialized) db78 FusionHDTV DVB-T Dual Digital 4 (ZL10353+xc2028/xc3028) (initialized) 0fea United Computer Accessories 0feb CRS Electronic Co., Ltd 0fec UMC Electronics Co., Ltd 0fed Access Co., Ltd 0fee Xsido Corp. 0fef MJ Research, Inc. 0ff6 Core Valley Co., Ltd 0ff7 CHI SHING Computer Accessories Co., Ltd 0ffc Clavia DMI AB 0021 Nord Stage 2 002a Nord Piano 4 0ffd EarlySense ff00 OEM 0fff Aopen, Inc. 1000 Speed Tech Corp. 153b TerraTec Electronic GmbH 1001 Ritronics Components (S) Pte., Ltd 1003 Sigma Corp. 0003 SD14 0100 SD9/SD10 8781 Dock UD-01 1004 LG Electronics, Inc. 1fae U8120 3G Cellphone 6000 Various Mobile Phones 6005 T5100 6018 GM360/GD510/GW520/KP501 618e Ally/Optimus One/Vortex (debug mode) 618f Ally/Optimus One 61c5 P880 / Charge only 61c6 Vortex (msc) 61cc Optimus S 61da G2 Android Phone [tethering mode] 61f1 Optimus Android Phone [LG Software mode] 61f9 Optimus (Various Models) MTP Mode 61fc Optimus 3 61fe Optimus Android Phone [USB tethering mode] 627f G3 (VS985) Android Phone (MTP/Download mode) 6300 G2/Optimus Android Phone [Charge mode] 631c LM-X420xxx/G2/Optimus Android Phone (charge mode) 631d Optimus Android Phone (Camera/PTP Mode) 631e LM-X420xxx/G2/Optimus Android Phone (PTP/camera mode) 631f Optimus Android Phone (Charge Mode) 633a Ultimate 2 Android Phone L41C 633e LM-X420xxx/G2/G3 Android Phone (MTP/download mode) 6344 LM-X420xxx/G2 Android Phone (USB tethering mode) 6348 LM-X420xxx Android Phone (MIDI mode) 6356 Optimus Android Phone [Virtual CD mode] 6800 CDMA Modem 7000 LG LDP-7024D(LD)USB 91c8 P880 / USB tethering a400 Renoir (KC910) 1005 Apacer Technology, Inc. 1001 MP3 Player 1004 MP3 Player 1006 MP3 Player b113 Handy Steno/AH123 / Handy Steno 2.0/HT203 b155 Disk Module b223 CD-RW + 6in1 Card Reader Digital Storage / Converter 1006 iRiver, Ltd. 3001 iHP-100 3002 iHP-120/140 MP3 Player 3003 H320/H340 3004 H340 (mtp) 1009 Emuzed, Inc. 000e eHome Infrared Receiver 0013 Angel MPEG Device 0015 Lumanate Wave PAL SECAM DVBT Device 0016 Lumanate Wave NTSC/ATSC Combo Device 100a AV Chaseway, Ltd 2402 MP3 Player 2404 MP3 Player 2405 MP3 Player 2406 MP3 Player a0c0 MP3 Player 100b Chou Chin Industrial Co., Ltd 100d Netopia, Inc. 3342 Cayman 3352 DSL Modem 3382 3380 Series Network Interface 6072 DSL Modem 9031 Motorola 802.11n Dualband USB Wireless Adapter 9032 Motorola 802.11n 5G USB Wireless Adapter cb01 Cayman 3341 Ethernet DSL Router 1010 Fukuda Denshi Co., Ltd 1011 Mobile Media Tech. 0001 AccFast Mp3 1012 SDKM Fibres, Wires & Cables Berhad 1013 TST-Touchless Sensor Technology AG 1014 Densitron Technologies PLC 1015 Softronics Pty., Ltd 1016 Xiamen Hung's Enterprise Co., Ltd 1017 Speedy Industrial Supplies, Pte., Ltd 9015 M625 [Vendor: DELUX] 1019 Elitegroup Computer Systems (ECS) 0c55 Flash Reader, Desknote UCR-61S2B 0f38 Infrared Receiver 1020 Labtec 0006 Wireless Keyboard 000a Wireless Optical Mouse 0106 Wireless Optical Mouse/Keyboard 1022 Shinko Shoji Co., Ltd 1025 Hyper-Paltek 005e USB DVB-T device 005f USB DVB-T device 0300 MP3 Player 0350 MP3 Player 1026 Newly Corp. 1027 Time Domain 1028 Inovys Corp. 1029 Atlantic Coast Telesys 102a Ramos Technology Co., Ltd 102b Infotronic America, Inc. 102c Etoms Electronics Corp. 6151 Q-Cam Sangha CIF 6251 Q-Cam VGA ff0c Joytech Wireless Advanced Controller 102d Winic Corp. 1031 Comax Technology, Inc. 1032 C-One Technology Corp. 1033 Nucam Corp. 0068 3,5'' HDD case MD-231 1038 SteelSeries ApS 0100 Ideazon Zboard 1260 Arctis 7 wireless adapter 1361 Ideazon Sensei 1410 SRW-S1 [Simraceway Steering Wheel] 1720 Mouse 1039 devolo AG 0824 1866 802.11bg [Texas Instruments TNETW1450] 2140 dsl+ 1100 duo 103a PSA f000 Actia Evo XS 103d Stanton 0100 ScratchAmp 0101 ScratchAmp 1043 iCreate Technologies Corp. 160f Wireless Network Adapter 4901 AV-836 Video Capture Device 8006 Flash Disk 32-256 MB 8012 Flash Disk 256 MB 1044 Chu Yuen Enterprise Co., Ltd 7001 Gigabyte U7000 DVB-T tuner 7002 Gigabyte U8000 DVB-T tuner 7004 Gigabyte U7100 DVB-T tuner 7005 Gigabyte U7200 DVB-T tuner [AF9035] 7006 Gigabyte U6000 DVB-T tuner [em2863] 8001 GN-54G 8002 GN-BR402W 8003 GN-WLBM101 8004 GN-WLBZ101 802.11b Adapter 8005 GN-WLBZ201 802.11b Adapter 8006 GN-WBZB-M 802.11b Adapter 8007 GN-WBKG 8008 GN-WB01GS 800a GN-WI05GS 800b GN-WB30N 802.11n WLAN Card 800c GN-WB31N 802.11n USB WLAN Card 800d GN-WB32L 802.11n USB WLAN Card 1046 Winbond Electronics Corp. [hex] 6694 Generic W6694 USB 8901 Bluetooth Device 9967 W9967CF/W9968CF Webcam IC 1048 Targus Group International 2010 4-Port hub 104b Mylex / Buslogic 104c AMCO TEC International, Inc. 104d Newport Corporation 1003 Model-52 LED Light Source Power Supply and Driver 3001 ESP301 3 Axis Motion Controller 104f WB Electronics 0001 Infinity Phoenix 0002 Smartmouse 0003 FunProgrammer 0004 Infinity Unlimited 0006 Infinity Smart 0007 Infinity Smart module 0008 Infinity CryptoKey 0009 RE-BL PlayStation 3 IR-to-Bluetooth converter 1050 Yubico.com 0010 Yubikey (v1 or v2) 0110 Yubikey NEO(-N) OTP 0111 Yubikey NEO(-N) OTP+CCID 0112 Yubikey NEO(-N) CCID 0113 Yubikey NEO(-N) U2F 0114 Yubikey NEO(-N) OTP+U2F 0115 Yubikey NEO(-N) U2F+CCID 0116 Yubikey NEO(-N) OTP+U2F+CCID 0120 Yubikey Touch U2F Security Key 0200 Gnubby U2F 0211 Gnubby 0401 Yubikey 4/5 OTP 0402 Yubikey 4/5 U2F 0403 Yubikey 4/5 OTP+U2F 0404 Yubikey 4/5 CCID 0405 Yubikey 4/5 OTP+CCID 0406 Yubikey 4/5 U2F+CCID 0407 Yubikey 4/5 OTP+U2F+CCID 0410 Yubikey plus OTP+U2F 1053 Immanuel Electronics Co., Ltd 1054 BMS International Beheer N.V. 5004 DSL 7420 Loader 5005 DSL 7420 LAN Modem 1055 Complex Micro Interconnection Co., Ltd 1056 Hsin Chen Ent Co., Ltd 1057 ON Semiconductor 1058 Western Digital Technologies, Inc. 0200 FireWire USB Combo 0400 External HDD 0500 hub 0701 WD Passport (WDXMS) 0702 WD Passport (WDXMS) 0704 My Passport Essential (WDME) 0705 My Passport Elite (WDML) 070a My Passport Essential (WDBAAA), My Passport for Mac (WDBAAB), My Passport Essential SE (WDBABM), My Passport SE for Mac (WDBABW) 070b My Passport Elite (WDBAAC) 070c My Passport Studio (WDBAAE) 071a My Passport Essential (WDBAAA) 071d My Passport Studio (WDBALG) 0730 My Passport Essential (WDBACY) 0732 My Passport Essential SE (WDBGYS) 0740 My Passport Essential (WDBACY) 0741 My Passport Ultra 0742 My Passport Essential SE (WDBGYS) 0748 My Passport (WDBKXH, WDBY8L) 07a8 My Passport (WDBBEP), My Passport for Mac (WDBLUZ) 07ae My Passport Edge for Mac (WDBJBH) 07ba PiDrive (WDLB) 0810 My Passport Ultra (WDBZFP) 0816 My Passport Air (WDBBLW) 0820 My Passport Ultra (WDBMWV, WDBZFP) 0822 My Passport Ultra (WDBBUZ) 0824 My Passport Slim (WDBPDZ) 0830 My Passport Ultra (WDBZFP) 0837 My Passport Ultra (WDBBKD) 0900 MyBook Essential External HDD 0901 My Book Essential Edition (Green Ring) (WDG1U) 0902 My Book Pro Edition (WDG1T) 0903 My Book Premium Edition 0905 My Book Pro Edition II (WD10000C033-001) 0910 My Book Essential Edition (Green Ring) (WDG1U) 1001 Elements Desktop (WDE1U) 1003 WD Elements Desktop (WDE1UBK) 1010 Elements Portable (WDBAAR) 1021 Elements Desktop (WDBAAU) 1023 Elements SE Portable (WDBABV) 1042 Elements SE Portable (WDBPCK) 1048 Elements Portable (WDBU6Y) 1078 Elements Portable (WDBUZG) 107c Elements Desktop (WDBWLG) 10a2 Elements SE Portable (WDBPCK) 10a8 Elements Portable (WDBUZG) 10b8 Elements Portable (WDBU6Y, WDBUZG) 1100 My Book Essential Edition 2.0 (WDH1U) 1102 My Book Home Edition (WDH1CS) 1103 My Book Studio 1104 My Book Mirror Edition (WDH2U) 1105 My Book Studio II 1110 My Book Essential (WDBAAF), My Book for Mac (WDBAAG) 1111 My Book Elite (WDBAAH) 1112 My Book Studio (WDBAAJ), My Book Studio LX (WDBACH) 1123 My Book 3.0 (WDBABP) 1130 My Book Essential (WDBACW) 1140 My Book Essential (WDBACW) 1170 My Book Essential 3TB (WDBACW0030HBK) 1230 My Book (WDBFJK) 1235 My Book (WDBFJK0040HBK) 2599 My Passport Ultra (WD40NMZW) 259d My Passport Ultra (WDBBKD) 259f My Passport Ultra (WD10JMVW) 25a1 Elements / My Passport 25a2 Elements 25A2 25a3 Elements Desktop (WDBWLG) 25da My Book (WDBFJK) 25e1 My Passport (WD20NMVW) 25e2 My Passport (WD40NMZW) 25ee My Book 25EE 25f3 My Passport SSD (WDBK3E) 25fa easystore Portable 5TB (WDBKUZ0050) 25fb easystore Desktop (WDBCKA) 2603 My Passport Game Storage for PS4 4TB (WDBZGE0040) 2624 easystore Portable 5TB (WDBKUZ0050) 2626 My Passport (WDBPKJ) 30a0 SATA adapter cable 1059 Giesecke & Devrient GmbH 000b StarSign Bio Token 3.0 105b Foxconn International, Inc. e065 BCM43142A0 Bluetooth module 105c Hong Ji Electric Wire & Cable (Dongguan) Co., Ltd 105d Delkin Devices, Inc. 105e Valence Semiconductor Design, Ltd 105f Chin Shong Enterprise Co., Ltd 1060 Easthome Industrial Co., Ltd 1063 Motorola Electronics Taiwan, Ltd [hex] 1555 MC141555 Hub 4100 SB4100 USB Cable Modem 1065 CCYU Technology 0020 USB-DVR2 Dev Board 2136 EasyDisk ED1064 1068 Micropi Elettronica 0001 CPUSB - V 1.8 - software-rights management key 106a Loyal Legend, Ltd 106c Curitel Communications, Inc. 1101 CDMA 2000 1xRTT USB modem (HX-550C) 1102 Packet Service 1103 Packet Service Diagnostic Serial Port (WDM) 1104 Packet Service Diagnostic Serial Port (WDM) 1105 Composite Device 1106 Packet Service Diagnostic Serial Port (WDM) 1301 Composite Device 1302 Packet Service Diagnostic Serial Port (WDM) 1303 Packet Service 1304 Packet Service 1401 Composite Device 1402 Packet Service 1403 Packet Service Diagnostic Serial Port (WDM) 1501 Packet Service 1502 Packet Service Diagnostic Serial Port (WDM) 1503 Packet Service 1601 Packet Service 1602 Packet Service Diagnostic Serial Port (WDM) 1603 Packet Service 2101 AudioVox 8900 Cell Phone 2102 Packet Service 2103 Packet Service Diagnostic Serial Port (WDM) 2301 Packet Service 2302 Packet Service Diagnostic Serial Port (WDM) 2303 Packet Service 2401 Packet Service Diagnostic Serial Port (WDM) 2402 Packet Service 2403 Packet Service Diagnostic Serial Port (WDM) 2501 Packet Service 2502 Packet Service Diagnostic Serial Port (WDM) 2503 Packet Service 2601 Packet Service 2602 Packet Service Diagnostic Serial Port (WDM) 2603 Packet Service 3701 Broadband Wireless modem 3702 Pantech PX-500 3714 PANTECH USB MODEM [UM175] 3716 UMW190 Modem 3721 Option Beemo (GI0801) LTE surfstick 3b14 Option Beemo (GI0801) LTE surfstick 3eb4 Packet Service Diagnostic Serial Port (WDM) 4101 Packet Service Diagnostic Serial Port (WDM) 4102 Packet Service 4301 Composite Device 4302 Packet Service Diagnostic Serial Port (WDM) 4401 Composite Device 4402 Packet Service 4501 Packet Service 4502 Packet Service Diagnostic Serial Port (WDM) 4601 Composite Device 4602 Packet Service Diagnostic Serial Port (WDM) 5101 Packet Service 5102 Packet Service Diagnostic Serial Port (WDM) 5301 Packet Service Diagnostic Serial Port (WDM) 5302 Packet Service 5401 Packet Service 5402 Packet Service Diagnostic Serial Port (WDM) 5501 Packet Service Diagnostic Serial Port (WDM) 5502 Packet Service 5601 Packet Service Diagnostic Serial Port (WDM) 5602 Packet Service 7101 Composite Device 7102 Packet Service a000 Packet Service a001 Packet Service Diagnostic Serial Port (WDM) c100 Packet Service c200 Packet Service c500 Packet Service Diagnostic Serial Port (WDM) e200 Packet Service 106d San Chieh Manufacturing, Ltd 106e ConectL 106f Money Controls 0009 CT10x Coin Transaction 000a CR10x Coin Recycler 000c Xchange 1076 GCT Semiconductor, Inc. 0031 Bluetooth Device 0032 Bluetooth Device 8002 LU150 LTE Modem [Yota LU150] 107b Gateway, Inc. 3009 eHome Infrared Transceiver 55b2 WBU-110 802.11b Wireless Adapter [Intersil PRISM 3] 55f2 WGU-210 802.11g Adapter [Intersil ISL3886] 107d Arlec Australia, Ltd 107e Midoriya Electric Co., Ltd 107f KidzMouse, Inc. 1082 Shin-Etsukaken Co., Ltd 1083 Canon Electronics, Inc. 160c CR-55 160f DR-1210C 1614 DR-4010C 1617 DR-2510C 1618 DR-X10C 161a CR-25 161b DR-2010C Scanner 161d DR-3010C 1620 DR-7090C 1622 DR-9050C 1623 DR-7550C 1624 DR-6050C 1626 DR-6010C 162c P-150 Scanner 1638 DR-6030C 1639 CR-135i 163e DR-M160 163f DR-M140 1640 DR-C125 1641 DR-P215 1648 FSU-201 164a DR-C130 164b DR-P208 164f DR-G1130 1650 DR-G1100 1651 DR-C120 1654 DR-F120 1657 DR-M1060 1658 DR-C225 1659 DR-P215II 165d DR-P208II 1084 Pantech Co., Ltd 108a Chloride Power Protection 108b Grand-tek Technology Co., Ltd 0005 HID Keyboard/Mouse PS/2 Translator 108c Robert Bosch GmbH 017e GTC 400 C 108e Lotes Co., Ltd. 1091 Numerik Jena 8101 Absoflex 1099 Surface Optics Corp. 109a DATASOFT Systems GmbH 109b Hisense 9109 CROSSCALL Trekker-M1 Core (MTP-Mode) 9118 Medion P4013 Mobile 9119 CROSSCALL Trekker-M1 Core (PTP-Mode) f009 CROSSCALL Trekker-M1 Core (CD-ROM-Mode) 109f eSOL Co., Ltd 3163 Trigem Mobile SmartDisplay84 3164 Trigem Mobile SmartDisplay121 10a0 Hirotech, Inc. 10a3 Mitsubishi Materials Corp. 10a9 SK Teletech Co., Ltd 1102 Sky Love Actually IM-U460K 1104 Sky Vega IM-A650S 1105 VEGA Android composite 1106 VEGA Android composite 1107 VEGA Android composite 1108 VEGA Android composite 1109 VEGA Android composite 6021 SIRIUS alpha 6031 Pantech Android composite 6032 Pantech Android composite 6033 Pantech Android composite 6034 Pantech Android composite 6035 Pantech Android composite 6036 Pantech Android composite 6037 Pantech Android composite 6050 Pantech Android composite 6051 Pantech Android composite 6052 Pantech Android composite 6053 Pantech Android composite 6054 Pantech Android composite 6055 Pantech Android composite 6056 Pantech Android composite 6057 Pantech Android composite 6058 Pantech Android composite 6059 Pantech Android composite 6080 MHS291LVW LTE Modem [Verizon Jetpack 4G LTE Mobile Hotspot MHS291L] (Zero CD Mode) 6085 MHS291LVW LTE Modem [Verizon Jetpack 4G LTE Mobile Hotspot MHS291L] (Modem Mode) 7031 Pantech Android composite 7032 Pantech Android composite 7033 Pantech Android composite 7034 Pantech Android composite 7035 Pantech Android composite 7036 Pantech Android composite 7037 Pantech Android composite 10aa Cables To Go 10ab USI Co., Ltd 1002 Bluetooth Device 1003 BC02-EXT in DFU 1005 Bluetooth Adptr 1006 BC04-EXT in DFU 10c5 Sony-Ericsson / Samsung DataCable 10ac Honeywell, Inc. 10ae Princeton Technology Corp. 10af Liebert Corp. 0000 UPS 0001 PowerSure PSA UPS 0002 PowerSure PST UPS 0003 PowerSure PSP UPS 0004 PowerSure PSI UPS 0005 UPStation GXT 2U UPS 0006 UPStation GXT UPS 0007 Nfinity Power Systems UPS 0008 PowerSure Interactive UPS 10b5 Comodo (PLX?) 9060 Test Board 10b8 DiBcom 0bb8 DVB-T reference design (MOD300) (cold) 0bb9 DVB-T reference design (MOD300) (warm) 0bc6 DVB-T reference design (MOD3000P) (cold) 0bc7 DVB-T reference design (MOD3000P) (warm) 10bb TM Technology, Inc. 10bc Dinging Technology Co., Ltd 10bd TMT Technology, Inc. 1427 Ethernet 10bf SmartHome 0001 SmartHome PowerLinc 10c3 Universal Laser Systems, Inc. 00a4 ULS PLS Series Laser Engraver Firmware Loader 00a5 ULS Print Support 10c4 Silicon Labs 0002 F32x USBXpress Device 0003 CommandIR 800a SPORTident 800b AES 8030 K4JRG Ham Radio devices 8044 USB Debug Adapter 804e Software Bisque Paramount ME 80a9 CP210x to UART Bridge Controller 80c4 Infrared Thermometer Adapter 80ca ATM2400 Sensor Device 813f tams EasyControl 8149 West Mountain Radio Computerized Battery Analyzer 814a West Mountain Radio RIGblaster P&P 814b West Mountain Radio RIGtalk 818a Silicon Labs FM Radio Reference Design 81e8 Zephyr BioHarness 834b Infrared Online Sensor Adapter 834e Infrared Sensor Adapter 8460 Sangoma Wanpipe VoiceTime 8461 Sangoma U100 8470 Juniper Networks BX Series System Console 8477 Balluff RFID Reader 8496 SiLabs Cypress FW downloader 8497 SiLabs Cypress EVB 84fb Infrared Blackbody Adapter 8508 RS485 Adapter 8605 dilitronics ESoLUX solar lighting controller 8660 Netronics CANdoISO 86bc C8051F34x AudioDelay [AD-340] 8789 C8051F34x Extender & EDID MGR [EMX-DVI] 87be C8051F34x HDMI Audio Extractor [EMX-HD-AUD] 8863 C8051F34x Bootloader 8897 C8051F38x HDMI Splitter [UHBX] 88c9 AES HID device 8918 C8051F38x HDMI Audio Extractor [VSA-HA-DP] 8973 C8051F38x HDMI Extender [UHBX-8X] 89c6 SPORTident HID device 89e1 C8051F38x HDMI Extender [UHBX-SW3-WP] 89fb Qivicon ZigBee Stick 8a3c C8051F38x HDBaseT Receiver [UHBX-R-XT] 8a6c C8051F38x 4K HDMI Audio Extractor [EMX-AMP] 8acb C8051F38x HDBaseT Wall Plate Receiver with IR, RS-232, and PoH [UHBX-R-WP] 8af8 C8051F38x 4K HDMI Audio Extractor w/Audio Amplifier, HDBT Input, Line Audio Input RS-232 Ports and IP Control [VSA-X21] 8b8c C8051F38x 4K HDMI Audio Extractor w/Audio Amplifier, HDBT Input, Line Audio Input RS-232 Ports and IP Control [SC-3H] 8db5 C8051F38x CATx HDMI Receiver with USB [EX-HDU-R] 8db6 C8051F38x CATx HDMI Receiver ea60 CP210x UART Bridge ea61 CP210x UART Bridge ea63 CP210x UART Bridge ea70 CP2105 Dual UART Bridge ea71 CP2108 Quad UART Bridge ea80 CP2110 HID UART Bridge ea90 CP2112 HID I2C Bridge ea91 CP2112 HID SMBus/I2C Bridge for CP2614 Evaluation Kit ea93 CP2112 HID SMBus/I2C Bridge for CP2615 Evaluation Kit eab0 CP2114 I2S Audio Bridge eac0 CP2614 MFi Accessory Digital Audio Bridge eac1 CP2615 I2S Audio Bridge eac9 EFM8UB1 Bootloader eaca EFM8UB2 Bootloader eacb EFM8UB3 Bootloader 10c5 Sanei Electric, Inc. 819a FM Radio 10c6 Intec, Inc. 10cb Eratech 10cc GBM Connector Co., Ltd 1101 MP3 Player 10cd Kycon, Inc. 10ce Silicon Labs 0007 Shinko/Sinfonia CHC-S1245 000e Shinko/Sinfonia CHC-S2145 0019 Shinko/Sinfonia CHC-S6145 001d Shinko/Sinfonia CHC-S6245 001e Ciaat Brava 21 0039 Sinfonia CHC-S2245 10ce Sinfonia CHC-S2245 ea6a MobiData EDGE USB Modem 10cf Velleman Components, Inc. 2011 R-Engine MPEG2 encoder/decoder 5500 8055 Experiment Interface Board (address=0) 5501 8055 Experiment Interface Board (address=1) 5502 8055 Experiment Interface Board (address=2) 5503 8055 Experiment Interface Board (address=3) 10d1 Hottinger Baldwin Measurement 0101 USB-Module for Spider8, CP32 0202 CP22 - Communication Processor 0301 CP42 - Communication Processor 10d2 RayComposer - R. Adams 5243 RayComposer 10d4 Man Boon Manufactory, Ltd 10d5 Uni Class Technology Co., Ltd 0004 PS/2 Converter 5552 KVM Human Interface Composite Device (Keyboard/Mouse ports) 55a2 2Port KVMSwitcher 5a08 Dual Bay Docking Station 10d6 Actions Semiconductor Co., Ltd 0c02 BioniQ 1001 Tablet 1000 MP3 Player 1100 MPMan MP-Ki 128 MP3 Player/Recorder 1101 D-Wave 2GB MP4 Player / AK1025 MP3/MP4 Player 2200 Acer MP-120 MP3 player 8888 ADFU Device ff51 ADFU Device ff61 MP4 Player ff66 Craig 2GB MP3/Video Player 10de Authenex, Inc. 10df In-Win Development, Inc. 0500 iAPP CR-e500 Card reader 10e0 Post-Op Video, Inc. 10e1 CablePlus, Ltd 10e2 Nada Electronics, Ltd 10ec Vast Technologies, Inc. 10f0 Nexio Co., Ltd 2002 iNexio Touchscreen controller 10f1 Importek 1a08 Internal Webcam 1a1e Laptop Integrated Webcam 1.3M 1a2a Laptop Integrated Webcam 1a2e HP Truevision HD Integrated Webcam 10f5 Turtle Beach 0200 Audio Advantage Roadie 0231 Ear Force P11 Headset 10f5 EarForce PX21 Gaming Headset 10f8 Cesys GmbH 3201 CeboLC 3202 CeboStick 3203 CeboMSA64 3204 CeboDFN 3205 PSAA2304W_CASC c401 USBV4F unconfigured c402 EFM01 unconfigured c403 MISS2 unconfigured c404 CID unconfigured c405 USBS6 unconfigured c406 OP_MISS2 unconfigured c407 NanoUsb uncofigured c481 USBV4F c482 EFM01 c483 MISS2 c484 CID c485 USBS6 c486 OP_MISS2 c487 NanoUsb c501 EFM02 unconfigured c502 EFM02/B unconfigured c503 EFM03 unconfigured c581 EFM02 c582 EFM02/B c583 EFM03 10fb Pictos Technologies, Inc. 10fd Anubis Electronics, Ltd 7e50 FlyCam Usb 100 804d Typhoon Webshot II Webcam [zc0301] 8050 FlyCAM-USB 300 XP2 de00 WinFast WalkieTV WDM Capture Driver. 10fe Thrane & Thrane 000c TT-3750 BGAN-XL Radio Module 1100 VirTouch, Ltd 0001 VTPlayer VTP-1 Braille Mouse 1101 EasyPass Industrial Co., Ltd 0001 FSK Electronics Super GSM Reader 1108 Brightcom Technologies, Ltd 110a Moxa Technologies Co., Ltd. 1110 UPort 1110 1150 UPort 1150 1-Port RS-232/422/485 1250 UPort 1250 2-Port RS-232/422/485 1251 UPort 1250I 2-Port RS-232/422/485 with Isolation 1410 UPort 1410 4-Port RS-232 1450 UPort 1450 4-Port RS-232/422/485 1451 UPort 1450I 4-Port RS-232/422/485 with Isolation 1613 UPort 1610-16 16-Port RS-232 1618 UPort 1610-8 8-Port RS-232 1653 UPort 1650-16 16-Port RS-232/422/485 1658 UPort 1650-8 8-Port RS-232/422/485 1110 Analog Devices Canada, Ltd (Allied Telesyn) 5c01 Huawei MT-882 Remote NDIS Network Device 6489 ADSL ETH/USB RTR 9000 ADSL LAN Adapter 9001 ADSL Loader 900f AT-AR215 DSL Modem 9010 AT-AR215 DSL Modem 9021 ADSL WAN Adapter 9022 ADSL Loader 9023 ADSL WAN Adapter 9024 ADSL Loader 9031 ADSL LAN Adapter 9032 ADSL Loader 1111 Pandora International Ltd. 8888 Evolution Device 1112 YM ELECTRIC CO., Ltd 1113 Medion AG a0a2 Active Sync device 111e VSO Electric Co., Ltd 112a RedRat 0001 RedRat3 IR Transceiver 0005 RedRat3II IR Transceiver 112e Master Hill Electric Wire and Cable Co., Ltd 112f Cellon International, Inc. 1130 Tenx Technology, Inc. 0001 BlyncLight 0002 iBuddy 0004 iBuddy Twins 0202 Rocket Launcher 6604 MCE IR-Receiver 6606 U+P Mouse 660c Foot Pedal/Thermometer 6626 Key 6806 Keychain photo frame c301 Digital Photo viewer [Wallet Pix] f211 TP6911 Audio Headset 1131 Integrated System Solution Corp. 1001 KY-BT100 Bluetooth Adapter 1002 Bluetooth Device 1003 Bluetooth Device 1004 Bluetooth Device 1132 Toshiba Corp., Digital Media Equipment [hex] 4331 PDR-M4/M5/M70 Digital Camera 4332 PDR-M60 Digital Camera 4333 PDR-M2300/PDR-M700 4334 PDR-M65 4335 PDR-M61 4337 PDR-M11 4338 PDR-M25 1136 CTS Electronincs 3131 CTS LS515 113c Arin Tech Co., Ltd 113d Mapower Electronics Co., Ltd 113f Integrated Biometrics, LLC 1020 Watson Two-Finger Roll Scanner 1100 Columbo Single-Finger Scanner 1141 V One Multimedia, Pte., Ltd 1142 CyberScan Technologies, Inc. 0709 Cyberview High Speed Scanner 1145 Japan Radio Company 0001 AirH PHONE AH-J3001V/J3002V 1146 Shimane SANYO Electric Co., Ltd. 1147 Ever Great Electric Wire and Cable Co., Ltd 114b Sphairon Access Systems GmbH 0110 Turbolink UB801R WLAN Adapter 0150 Turbolink UB801RE Wireless 802.11g 54Mbps Network Adapter [RTL8187] 114c Tinius Olsen Testing Machine Co., Inc. 114d Alpha Imaging Technology Corp. 114f Wavecom 1234 Fastrack Xtend FXT001 Modem 115b Salix Technology Co., Ltd. 1162 Secugen Corp. 1163 DeLorme Publishing, Inc. 0100 Earthmate GPS (orig) 0200 Earthmate GPS (LT-20, LT-40) 2020 Earthmate GPS (PN-40) 1164 YUAN High-Tech Development Co., Ltd 0300 ELSAVISION 460D 0601 Analog TV Tuner 0900 TigerBird BMP837 USB2.0 WDM Encoder 0bc7 Digital TV Tuner 521b MC521A mini Card ATSC Tuner 6601 Digital TV Tuner Card [RTL2832U] 1165 Telson Electronics Co., Ltd 1166 Bantam Interactive Technologies 1167 Salient Systems Corp. 1168 BizConn International Corp. 116e Gigastorage Corp. 116f Silicon 10 Technology Corp. 0005 Flash Card Reader c108 Flash Card Reader c109 Flash Card Reader 1175 Shengyih Steel Mold Co., Ltd 117d Santa Electronic, Inc. 117e JNC, Inc. 1182 Venture Corp., Ltd 1183 Compaq Computer Corp. [hex] (Digital Dream ??) 0001 DigitalDream l'espion XS 19c7 ISDN TA 4008 56k FaxModem 504a PJB-100 Personal Jukebox 1184 Kyocera Elco Corp. 1188 Bloomberg L.P. 1189 Acer Communications & Multimedia 0893 EP-1427X-2 Ethernet Adapter [Acer] 118f You Yang Technology Co., Ltd 1190 Tripace 1191 Loyalty Founder Enterprise Co., Ltd 1196 Yankee Robotics, LLC 0010 Trifid Camera without code 0011 Trifid Camera 1197 Technoimagia Co., Ltd 1198 StarShine Technology Corp. 1199 Sierra Wireless, Inc. 0019 AC595U 0021 AC597E 0024 MC5727 CDMA modem 0110 Composite Device 0112 CDMA 1xEVDO PC Card, AirCard 580 0120 AC595U 0218 MC5720 Wireless Modem 6467 MP Series Network Adapter 6468 MP Series Network Adapter 6469 MP Series Network Adapter 6802 MC8755 Device 6803 MC8765 Device 6804 MC8755 Device 6805 MC8765 Device 6812 MC8775 Device 6820 AC875 Device 6832 MC8780 Device 6833 MC8781 Device 683a MC8785 Device 683c Mobile Broadband 3G/UMTS (MC8790 Device) 6850 AirCard 880 Device 6851 AirCard 881 Device 6852 AirCard 880E Device 6853 AirCard 881E Device 6854 AirCard 885 Device 6856 ATT "USB Connect 881" 6870 MC8780 Device 6871 MC8781 Device 6893 MC8777 Device 68a3 MC8700 Modem 68aa 4G LTE adapter 9000 Gobi 2000 Wireless Modem (QDL mode) 9001 Gobi 2000 Wireless Modem 9002 Gobi 2000 Wireless Modem 9003 Gobi 2000 Wireless Modem 9004 Gobi 2000 Wireless Modem 9005 Gobi 2000 Wireless Modem 9006 Gobi 2000 Wireless Modem 9007 Gobi 2000 Wireless Modem 9008 Gobi 2000 Wireless Modem 9009 Gobi 2000 Wireless Modem 900a Gobi 2000 Wireless Modem 9011 MC8305 Modem 9013 Sierra Wireless Gobi 3000 Modem device (MC8355) 9041 EM7305 Modem 9055 Gobi 9x15 Multimode 3G/4G LTE Modem (NAT mode) 9057 Gobi 9x15 Multimode 3G/4G LTE Modem (IP passthrough mode) 9071 AirPrime MC7455 3G/4G LTE Modem 9079 EM7455 119a ZHAN QI Technology Co., Ltd 119b ruwido austria GmbH 0400 Infrared Keyboard V2.01 11a0 Chipcon AS eb11 CC2400EB 2.0 ZigBee Sniffer 11a3 Technovas Co., Ltd 8031 MP3 Player 8032 MP3 Player 11aa GlobalMedia Group, LLC 1518 iREZ K2 11ab Exito Electronics Co., Ltd 11ac Nike 6565 FuelBand 11b0 ATECH FLASH TECHNOLOGY 6208 PRO-28U 6298 Kingston SNA-DC/U 11be R&D International NV f0a0 Martin Maxxyz DMX 11c0 Betop 5506 Gamepad 11c5 Inmax 0521 IMT-0521 Smartcard Reader 11c9 Nacon 55f0 GC-100XF 11ca VeriFone Inc 0201 MX870/MX880 0207 PIN Pad VX 810 0220 PIN Pad VX 805 11db Topfield Co., Ltd. 1000 PVR 1100 PVR 11e6 K.I. Technology Co. Ltd. 11f5 Siemens AG 0001 SX1 0003 Mobile phone USB cable 0004 X75 0005 SXG75/EF81 0008 UMTS/HSDPA Data Card 0101 RCU Connect 11f6 Prolific 2001 Willcom WSIM 11f7 Alcatel (?) 02df Serial cable (v2) for TD-10 Mobile Phone 1203 TSC Auto ID Technology Co., Ltd 0140 TTP-245C 1209 Generic 0001 pid.codes Test PID 0002 pid.codes Test PID 0003 pid.codes Test PID 0004 pid.codes Test PID 0005 pid.codes Test PID 0006 pid.codes Test PID 0007 pid.codes Test PID 0008 pid.codes Test PID 0009 pid.codes Test PID 000a pid.codes Test PID 000b pid.codes Test PID 000c pid.codes Test PID 000d pid.codes Test PID 000e pid.codes Test PID 000f pid.codes Test PID 0010 pid.codes Test PID 01c0 Input Club Kiibohd Device 01cb Input Club Kiibohd Device Bootloader 0256 Schwalm & Tate LLC pISO Raspberry Pi Hat 053a Hackerspace San Salvador HSSV SAMR21-Mote 0cbd Andrzej Szombierski kuku.eu.org keyboard 0d32 ODrive Robotics ODrive v3 1001 InterBiometrics Hub 1002 InterBiometrics Relais 1003 InterBiometrics IBSecureCam-P 1004 InterBiometrics IBSecureCam-O 1005 InterBiometrics IBSecureCam-N 1006 InterBiometrics Mini IO-Board 1007 e-radionica.com Croduino SAMD 1986 dgrubb Jaguar Tap 1ab5 Arachnid Labs Tsunami 1ab6 Arachnid Labs Tsunami Bootloader 2000 Zygmunt Krynicki Lantern Brightness Sensor 2001 OSHEC Pi-pilot opensource and openhardware autopilot system 2002 Peter Lawrence PIC16F1-USB-DFU-Bootloader 2003 Peter Lawrence SAMDx1-USB-DFU-Bootloader 2004 GCBASIC Serial CDC Stack 2005 GCBASIC OakTree Stack 2006 GCBASIC Simulation Stack 2016 Cupkee 2017 Benjamin Shockley Mini SAM 2020 Captain Credible Gate Crystal 2048 Housedillon.com MRF49XA Transceiver 2100 TinyFPGA B1 and B2 Boards 2101 TinyFPGA A-Series Programmer 2200 Dygma Shortcut Bootloader 2201 Dygma Shortcut Keyboard 2222 LabConnect Signalgenerator 2300 Keyboardio Model 01 Bootloader 2301 Keyboardio Model 01 2323 bytewerk.org candleLight 2327 K.T.E.C. Bootloader Device 2328 K.T.E.C. Keyboard Device 2333 Kai Ryu Kimera 2334 Kai Ryu Staryu 2335 Portwell Sense8 2336 Portwell Sense8 2337 /Dev /Net 2342 Andreas Bogk Big Red Button 2345 VV-Soft Simple Generic HID IO 2357 KarolKucza TinyPassword 2400 phooky Snap-Pad 2488 Peter Lawrence CMSIS-DAP Dapper Miser 2552 ProjectIota Electrolink 2600 Majenko Technologies chipKIT Lenny 2635 Sevinz GameBot 2800 Entropic Engineering Triangulation 2801 Entropic Engineering Object Manipulation 2a00 mooware Wii adapter 2a01 mooware SNES adapter 3000 lloyd3000 3100 OpenSimHardware Pedals & Buttons Controller 317e Codecrete Wirekite 3210 OSH Lab, LLC Magic Keys 3333 LabConnect Digitalnetzteil 345b kinX Hub 345c kinX Keyboard Controller 3690 Kigakudoh TouchMIDI32 4096 CynaraKrewe Cynara 414c Adi Linden 414d Adi Linden 4242 Komakallio Astrophotography Community KomaHub Remote Power Switch 4256 CuVoodoo BusVoodoo multi-protocol debugging adapter 4321 mooltipass Offline Password Keeper Bootloader 4322 mooltipass Arduino Sketch 4356 CuVoodoo firmware 4443 j1rie IRMP_STM32 Bootloader 4444 j1rie IRMP_STM32 4545 SlothCo Enterprises Teletype Adapter 4646 SmartPID SPC1000 4748 Kate Gray GHETT-iO Bootloader 4750 Chris Pavlina (c4757p) C4-x computer (development interface) 4757 Chris Pavlina (c4757p) WCP52 Gain/Phase Analyzer 4801 Wojciech Krutnik NVMemProg 4c60 MightyPork GEX module 4c61 MightyPork GEX wireless dongle 4d53 mindsensors.com NXTCam5 5038 frotz.net mdebug rswd protocol 5039 frotz.net lpcboot protocol 5050 trebb ISO50 5070 SoloHacker security key [SoloKey] 50b0 boot for security key [SoloKey] 5222 telavivmakers attami 53c0 SatoshiLabs TREZOR Bootloader 53c1 SatoshiLabs TREZOR 5432 Open Programmer 5457 Openlab.Taipei Taiwanduino 571c StreetoArcade PancadariaStick 5a22 ikari_01 sd2snes 6000 Pulsar Heavy Industries Cenx4 600d Makdaam N93 Interface 6464 Electric Exploits Shinewave 6502 jj1bdx avrhwrng v2rev1 6570 Iowa Scaled Engineering, LLC CKT-AVRPROGRAMMER 6666 Talpa Chen VSFLogic 6667 SensePost Universal Serial aBUSe - Generic HID 6742 NPK Cubitel Atomic Force Microscope 6809 Tach Radio Doppelganger 6948 MySensors Sensebender Gateway BootLoader 6949 MySensors Sensebender Gateway 6bcf blaste Gameboy Cart Flasher 7000 Secalot Dongle 7001 Secalot Bootloader 70b1 Sutajio Ko-Usagi (Kosagi) Tomu 7331 Dangerous Prototypes Bus Pirate Next Gen CDC 7332 Dangerous Prototypes Bus Pirate Next Gen Logic Analyzer 7401 Beststream-jp Tool_CDC 7530 PotentialLabs Refflion - IoT Development Board - Bootloader 7531 PotentialLabs Refflion - IoT Development Board - Sketch 7551 The Tessel Project Tessel 2 7777 circuitvalley IO Board V3 7778 circuitvalley IO Board V3 Bootloader 7950 PIC18F87J94 Bootloader [GenII] 7951 PIC18F87J94 Application [GenII] 7952 PIC18F87J94 Bootloader [GenIII/IV] 7953 PIC18F87J94 Application [GenIII/IV] 7954 PIC18F87J94 Application [GenIII/IV] 7bd0 pokey9000 Tiny Bit Dingus 8000 Autonomii NODii 2 8086 MisfitTech Nano Zero Bootloader 8087 MisfitTech Nano Zero 8123 Danyboard M0 bootloader 812a Danyboard M0 813a MickMad HACK Bootloader 813b MickMad HACK Sketch 8242 Tom Wimmenhove Electronics NBS-DAC 192/24 UAC1 8243 Tom Wimmenhove Electronics NBS-DAC 192/24 UAC2 8472 Shantea Controls OpenDeck 8661 ProgHQ TL866 programmer 8844 munia.io MUNIA 8888 Blinkinlabs POV Pendant 8889 Blinkinlabs POV Pendant (bootloader) 8b00 ReSwitched Libtransistor Serial Console 9021 Connected Community Hackerspace ESPlant 9317 Sutajio Ko-Usagi (Kosagi) Palawan-Tx 9999 Sandeepan Sengupta CodeBridge Infineo 9db5 PD Buddy Sink a033 area0x33 Memtype a100 KB LES Narsil analog breakout a10c KB LES Aminoacid Synthesizer a1e5 Atreus Keyboards Atreus Keyboard a3a4 MK::Box MK::Kbd a3a5 MK::Box MK::Kbd Bootloader a55a Forever Young Software ATTINY2313 a602 Robotips RTBoard a7ea area3001 Knixx SW04 a800 sowbug.com WebLight a8b0 Intelectron BootWare a8b1 Intelectron FrameWare aa00 Serg Oskin LinuxCNC HID Extender aa0b Open Bionics ab3d 3DArtists Alligator board abba CoinWISE SafeWISE abc0 Omzlo controller abcd Sandeepan Sengupta CodeBridge abd1 OpenMV Cam acdc Gediminas Zukaitis midi-grid ace5 SimAces Panel Ace aced Open Lighting Project Ja Rule Device acee Open Lighting Project Ja Rule Bootloader adb0 tibounise ADB converter adda MicroPython Boards b007 Konsgn Global_Boot b00b CrapLab Random Device b010 IObitZ CodeBridge b01d WyoLum VeloKey b058 Model B, LLC Holoseat b0b0 Monero Hardware Monero Bootloader b100 ptrandem iBizi b101 IObitZ Infineo b195 flehrad Big Switch PCB bab1 ElectronicCats Meow Meow babe brunofreitas.com STM32 HID Bootloader bad1 Gregory POTEAU CommLinkUSB bad2 Gregory POTEAU XLinkUSB bade Semarme SemarmeHID bb00 keyplus split keyboard firmware bb01 keyplus xusb bootloader bb02 keyplus nRF24 wireless keyboard dongle bb03 keyplus nrf24lu1p-512 bootloader bb05 keyplus kp_boot_32u4 bootloader beba serasidis.gr STM32 HID Bootloader beef Modal MC-USB c001 Cynteract Alpha c0c0 Geppetto_Electronics Orthrus c0c1 Michael Bemmerl cookie-mouse c0ca Jean THOMAS DirtyJTAG c0d3 Samy Kamkar USBdriveby c0da Monero Hardware Monero Firmware c0de KMRH Labs SBL Brain c0f5 unethi PERswitch c1aa Proyecto CIAA Computadora Industrial Abierta Argentina c1b1 Chibitronics Love-to-Code c311 bg nerilex GB-USB-Link ca1c KnightOS Generic Hub ca1d KnightOS MTP Device caea Open Music Kontrollers Chimaera cafe ii iigadget cc14 trebb NaN-15 cc86 Manfred's Technologies Anastasia Bootloader ceb0 KG4LNE GE-FlashUSB cf20 Smart Citizen SCK 2.0 d00d Monero Hardware Monero Developer d017 empiriKit empiriKit Controller d11d Koi Science DI-Lambda AVR d3d8 Duet3d Duet 0.8.5 d706 SkyBean SkyDrop da42 Devan Lai dap42 debug access probe daa0 darknao btClubSportWheel dada Rebel Technology OWL db42 Devan Lai dapboot DFU bootloader dc21 FPGA-Computer Dual Charger dddd Stephan Electronics OpenCVMeter dead chaosfield.at AVR-Ruler deaf CrapLab 4chord MIDI ded1 ManCave Made Quark One deed Kroneum Time Tracker df00 D.F.Mac. @TripArts Music mi:muz:tuch df01 D.F.Mac. @TripArts Music mi:muz:can df02 D.F.Mac. @TripArts Music mi:muz:can-lite e116 Elijah Motornyy open-oscilloscope-stm32f3 e1ec FreeSRP e4ee trebb keytee e500 GitleMikkelsen Helios Laser DAC eaea Pinscape Controller eb01 RobotMaker.club EB1 eba7 VictorGrigoryev USBscope ee00 Explore Embedded SODA(SWD OpenSource Debug Adapter) ee02 Explore Embedded Explore M3 VCOM ee03 Explore Embedded Explore M3 DFU ee2c jaka USB2RS485 effa EffigyLabs atmega32u4-USB-LUFA-Bootloader effe EffigyLabs Control Pedal f000 Uniti ARC f00d RomanStepanov Shifter/Pedals Adapter f12e Michael Bemmerl Feuermelder f16a uri_ba Cougar TQS adapter f16c uri_ba adapter for Vipercore's FCC3 Force Sensing Module f380 Windsor Schmidt MD-380 Open Radio Firmware f3fc dRonin Flight controller-Lumenier Lux f49a TimVideos.us & HDMI2USB.tv Projects FPGA Programmer & UART Bridge (PIC based Firmware) fa11 moonglow OpenXHC fa57 3DRacers Pilot Board fa58 3DRacers Pilot Board (Bootloader) fab1 PAP Mechatronic Technology LamDiNao face Protean Synth Craft fade Open Collector dude feed ProgramGyar AVR-IR Sender ffff Life2Device Smart House 120e Hudson Soft Co., Ltd 120f Magellan 524e RoadMate 1475T 5260 Triton Handheld GPS Receiver (300/400/500/1500/2000) 1210 DigiTech 000d RP250 Guitar Multi-Effects Processor 0016 RP500 Guitar Multi-Effects Processor 001b RP155 Guitar Multi-Effects Processor 001c RP255 Guitar Multi-Effects Processor 121e Jungsoft Co., Ltd 3403 Muzio JM250 Audio Player 121f Panini S.p.A. 0001 VisionX without Firmware 0002 VisionX with Firmware 0010 I-Deal 0020 wI-Deal 0021 VisionX Page Scanner Extension 0030 VisionNext 0040 mI:Deal Check Scanner 0041 EverNext Check Scanner 1220 TC Electronic 000a Hall of Fame Reverb 002a Polytune 0032 Ditto X2 Looper 0039 Alter Ego X4 Vintage Echo 1221 Unknown manufacturer 3234 Disk (Thumb drive) 1222 TiPro faca programmable keyboard 1223 SKYCABLE ENTERPRISE. CO., LTD. 1228 Datapaq Limited 0012 Q18 Data Logger 0015 TPaq21/MPaq21 Datalogger 584c XL2 Logger 1230 Chipidea-Microelectronica, S.A. 1233 Denver Electronics 5677 FUSB200 mp3 player 1234 Brain Actuated Technologies 0000 Neural Impulse Actuator Prototype 1.0 [NIA] 4321 Human Interface Device ed02 Emotiv EPOC Developer Headset Wireless Dongle 1235 Focusrite-Novation 0001 ReMOTE Audio/XStation First Edition 0002 Speedio 0003 RemoteSL + ZeroSL 0004 ReMOTE LE 0005 XIOSynth [First Edition] 0006 XStation 0007 XIOSynth 0008 ReMOTE SL Compact 0009 nIO 000a Nocturn 000b ReMOTE SL MkII 000c ZeRO MkII 000e Launchpad 0010 Saffire 6 0011 Ultranova 0012 Nocturn Keyboard 0013 VRM Box 0014 VRM Box Audio Class (2-out) 0015 Dicer 0016 Ultranova 0018 Twitch 0019 Impulse 25 001a Impulse 49 001b Impulse 61 0032 Launchkey 61 0069 Launchpad MK2 0102 LaunchKey Mini MK3 4661 ReMOTE25 8000 Scarlett 18i6 8002 Scarlett 8i6 8006 Focusrite Scarlett 2i2 8008 Saffire 6 800a Scarlett 2i4 800c Scarlett 18i20 800e iTrack Solo 8010 Forte 8012 Scarlett 6i6 8014 Scarlett 18i8 8016 Focusrite Scarlett 2i2 8202 Focusrite Scarlett 2i2 2nd Gen 8203 Focusrite Scarlett 6i6 8204 Scarlett 18i8 2nd Gen 8210 Scarlett 2i2 3rd Gen 8211 Scarlett Solo (3rd Gen.) 8214 Scarlett 18i8 3rd Gen 8215 Scarlett 18i20 3rd Gen 1241 Belkin 0504 Wireless Trackball Keyboard 1111 Mouse 1122 Typhoon Stream Optical Mouse USB+PS/2 1155 Memorex Optical ScrollPro Mouse SE MX4600 1166 MI-2150 Trust Mouse 1177 Mouse [HT82M21A] 1503 Keyboard 1603 Keyboard f767 Keyboard 1243 Holtek Semiconductor, Inc. e000 Unique NFC/RFID reader (keyboard emulation) 124a AirVast 168b PRISM3 WLAN Adapter 4017 PC-Chips 802.11b Adapter 4023 WM168g 802.11bg Wireless Adapter [Intersil ISL3886] 4025 IOGear GWU513 v2 802.11bg Wireless Adapter [Intersil ISL3887] 124b Nyko (Honey Bee) 4d01 Airflo EX Joystick 124c MXI - Memory Experts International, Inc. 3200 Stealth MXP 1GB 125c Apogee Inc. 0010 Alta series CCD 125d JMicron 0580 JM580 125f A-DATA Technology Co., Ltd. 312a Superior S102 312b Superior S102 Pro a15a DashDrive Durable HD710 portable HDD various size a22a DashDrive Elite HE720 500GB a31a HV620 Portable HDD a91a Portable HDD CH91 c08a C008 Flash Drive c81a Flash drive c93a 4GB Pen Drive c96a C906 Flash Drive cb10 Dash Drive UV100 cb20 DashDrive UV110 1260 Standard Microsystems Corp. ee22 SMC2862W-G v3 EZ Connect 802.11g Adapter [Intersil ISL3887] 1264 Covidien Energy-based Devices 1266 Pirelli Broadband Solutions 6302 Fastweb DRG A226M ADSL Router 1267 Logic3 / SpectraVideo plc 0103 G-720 Keyboard 0201 Mouse 0210 LG Optical Mouse 3D-310 a001 JP260 PC Game Pad c002 Wireless Optical Mouse 126c Aristocrat Technologies 126d Bel Stewart 126e Strobe Data, Inc. 126f TwinMOS 0163 Storage device (2gB thumb drive) 1325 Mobile Disk 2168 Mobile Disk III a006 G240 802.11bg 1274 Ensoniq 1275 Xaxero Marine Software Engineering, Ltd. 0002 WeatherFax 2000 Demodulator 0080 SkyEye Weather Satellite Receiver 0090 WeatherFax 2000 Demodulator 1278 Starlight Xpress 0105 SXV-M5 0107 SXV-M7 0109 SXV-M9 0110 SXVF-H16 0115 SXVF-H5 0119 SXV-H9 0135 SXVF-H35 0136 SXVF-H36 0200 SXV interface for paraller MX cameras 0305 SXV-M5C 0307 SXV-M7C 0319 SXV-H9C 0325 SXV-M25C 0326 SXVR-M26C 0507 Lodestar autoguider 0517 CoStar 1283 zebris Medical GmbH 0100 USB-RS232 Adaptor 0110 CMS20 0111 CMS 10 0112 CMS 05 0114 ARCUS digma PC-Interface 0115 SAM Axioquick recorder 0116 SAM Axioquick recorder 0120 emed-X 0121 emed-AT 0130 PDM 0150 CMS10GI (Golf) 1286 Marvell Semiconductor, Inc. 00bc Marvell JTAG Probe 1fab 88W8338 [Libertas] 802.11g 2001 88W8388 802.11a/b/g WLAN 2006 88W8362 802.11n WLAN 203c K30326 802.11bgn Wireless Module [Marvell 88W8786U] 204c Bluetooth and Wireless LAN Composite 8001 BLOB boot loader firmware 1291 Qualcomm Flarion Technologies, Inc. / Leadtek Research, Inc. 0010 FDM 2xxx Flash-OFDM modem 0011 LR7F06/LR7F14 Flash-OFDM modem 1292 Innomedia 0258 Creative Labs VoIP Blaster 4154 Retro Link Atari cable 1293 Belkin Components [hex] 0002 F5U002 Parallel Port [uss720] 2101 104-key keyboard 1294 RISO KAGAKU CORP. 1320 Webmail Notifier 1297 DekTec 020f DTU-215 Multi-Standard Modulator 129b CyberTAN Technology 160b Siemens S30853-S1031-R351 802.11g Wireless Adapter [Atheros AR5523] 160c Siemens S30853-S1038-R351 802.11g Wireless Adapter [Atheros AR5523] 1666 TG54USB 802.11bg 1667 802.11bg 1828 Gigaset USB Adapter 300 12a7 Trendchip Technologies Corp. 12ab Honey Bee Electronic International Ltd. 0004 Dance Pad for Xbox 360 0301 Afterglow Wired Controller for Xbox 360 0303 Mortal Kombat Klassic FightStick for Xbox 360 8809 Dance Dance Revolution Dance Pad 12b8 Zhejiang Xinya Electronic Technology Co., Ltd. 12b9 E28 12ba Licensed by Sony Computer Entertainment America 0032 Wireless Stereo Headset 0042 Wireless Stereo Headset 00ff Rocksmith Guitar Adapter 0100 RedOctane Guitar for PlayStation(R)3 0120 RedOctane Drum Kit for PlayStation(R)3 0200 Harmonix Guitar for PlayStation(R)3 0210 Harmonix Drum Kit for PlayStation(R)3 12bd Gembird d012 JPD Shockforce gamepad d015 Generic 4-button NES USB Controller 12c4 Autocue Group Ltd 0006 Teleprompter Two-button Hand Control (v1) 0008 Teleprompter Foot Control (v1) 12cf DEXIN 0170 Tt eSPORTS BLACK Gaming mouse 600b Cougar 600M Gaming Mouse 12d1 Huawei Technologies Co., Ltd. 1001 E161/E169/E620/E800 HSDPA Modem 1003 E220 HSDPA Modem / E230/E270/E870 HSDPA/HSUPA Modem 1004 E220 (bis) 1009 U120 1010 ETS2252+ CDMA Fixed Wireless Terminal 1021 U8520 1035 U8120 1037 Ideos 1038 Ideos (debug mode) 1039 Ideos (tethering mode) 1052 MT7-L09 / P7-L10 / Y330-U01 1053 P7-L10 (PTP) 1054 P7-L10 (PTP + debug) 1079 GEM-703LT [Honor/MediaPad X2] 107e P10 smartphone 1404 EM770W miniPCI WCDMA Modem 1406 E1750 140b EC1260 Wireless Data Modem HSD USB Card 140c E180v 1412 EC168c 1436 Broadband stick 1446 HSPA modem 1465 K3765 HSPA 14ac E815 14c3 K5005 Vodafone LTE/UMTS/GSM Modem/Networkcard 14c8 K5005 Vodafone LTE/UMTS/GSM MOdem/Networkcard 14c9 K3770 3G Modem 14cf K3772 14d1 K3770 3G Modem (Mass Storage Mode) 14db E353/E3131 14dc E3372 LTE/UMTS/GSM HiLink Modem/Networkcard 14f1 Gobi 3000 HSPA+ Modem 14fe Modem (Mass Storage Mode) 1501 Pulse 1505 E398 LTE/UMTS/GSM Modem/Networkcard 1506 Modem/Networkcard 150a E398 LTE/UMTS/GSM Modem/Networkcard 1520 K3765 HSPA 1521 K4505 HSPA+ 155a R205 Mobile WiFi (CD-ROM mode) 1573 ME909u-521 mPCIe LTE/GPS card 1575 K5150 LTE modem 15bb ME936 LTE/HSDPA+ 4G modem 15c1 ME906s LTE M.2 Module 15ca E3131 3G/UMTS/HSPA+ Modem (Mass Storage Mode) 1805 AT&T Go Phone U2800A phone 1c05 Broadband stick (modem on) 1c0b E173s 3G broadband stick (modem off) 1c20 R205 Mobile WiFi (Charging) 1d50 ET302s TD-SCDMA/TD-HSDPA Mobile Broadband 1f01 E353/E3131 (Mass storage mode) 1f16 K5150 LTE modem (Mass Storage Mode) 360e Y330-U01 (MTP Mode) 380b WiMAX USB modem(s) 12d2 LINE TECH INDUSTRIAL CO., LTD. 12d3 LINAK 0002 DeskLine CBD Control Box 12d6 EMS Dr. Thomas Wuensche 0444 CPC-USB/ARM7 0888 CPC-USB/M16C 12d7 BETTER WIRE FACTORY CO., LTD. 12d8 Araneus Information Systems Oy 0001 Alea I True Random Number Generator 12e6 Waldorf Music GmbH 0013 Blofeld 12ef Tapwave, Inc. 0100 Tapwave Handheld [Tapwave Zodiac] 12f2 ViewPlus Technologies, Inc. 000a Braille embosser [SpotDot Emprint] 12f5 Dynamic System Electronics Corp. 12f7 Memorex Products, Inc. 1a00 TD Classic 003B 1e23 TravelDrive 2007 Flash Drive 12fd AIN Comm. Technology Co., Ltd 1001 AWU2000b 802.11b Stick 12ff Fascinating Electronics, Inc. 0101 Advanced RC Servo Controller 1306 FM20 Barcode Scanner 1307 Transcend Information, Inc. 0163 256MB/512MB/1GB Flash Drive 0165 2GB/4GB/8GB Flash Drive 0190 Ut190 8 GB Flash Drive with MicroSD reader 0310 SD/MicroSD CardReader [hama]/IT1327E [Basic Line flash drive] 0330 63-in-1 Multi-Card Reader/Writer 0361 CR-75: 51-in-1 Card Reader/Writer [Sakar] 1169 TS2GJF210 JetFlash 210 2GB 1171 Fingerprint Reader 1308 Shuttle, Inc. 0003 VFD Module c001 eHome Infrared Transceiver 1310 Roper 0001 Class 1 Bluetooth Dongle 1312 ICS Electronics 1313 ThorLabs 0010 LC1 Linear Camera (Jungo) 0011 SP1 Spectrometer (Jungo) 0012 SP2 Spectrometer (Jungo) 0110 LC1 Linear Camera (VISA) 0111 SP1 Spectrometer (VISA) 0112 SP2 Spectrometer (VISA) 8001 TXP-Series Slot (TXP5001, TXP5004) 8011 BP1 Slit Beam Profiler 8012 BC106 Camera Beam Profiler 8013 WFS10 Wavefront Sensor 8016 DMP40 Deformable Mirror 8017 BC206 Camera Beam Profiler 8019 BP2 Multi Slit Beam Profiler 8020 PM300 Optical Power Meter 8021 PM300E Optical Power and Energy Meter 8022 PM320E Optical Power and Energy Meter 8025 WFS20 Wavefront Sensor 8030 ER100 Extinction Ratio Meter 8039 PAX1000 Rotating Waveplate Polarimeter 8047 CLD1000 8048 TED4000 8049 LDC4000 804a ITC4000 8058 LC-100 8060 DC3100 8061 DC4100 8062 DC2100 8065 CS2010 8066 DC4104 8070 PM100D 8072 PM100USB Power and Energy Meter Interface 8073 PM106 Wireless Powermeter Photodiode Sensor 8074 PM160T Wireless Powermeter Thermal Sensor 8075 PM400 Handheld Optical Power/Energy Meter 8076 PM101 Serial PD Power Meter 8078 PM100D Compact Power and Energy Meter Console 8080 CCS100 - Compact Spectrometer 8081 CCS100 Compact Spectrometer 8083 CCS125 Spectrometer 8085 CCS150 UV Spectrometer 8087 CCS175 NIR Spectrometer 8089 CCS200 Wide Range Spectrometer 8090 SPCM Single Photon Counter 80a0 LC100 series smart line camera 80b0 PM200 Handheld Power and Energy Meter 80c0 DC2200 80c9 MTD Series 80f0 TSP01 80f1 M2SET Dongle 8180 OCT Probe Controller (OCTH-1300) 8181 OCT Device 131d Natural Point 0155 TrackIR 3 Pro Head Tracker 0156 TrackIR 4 Pro Head Tracker 0158 TrackIR 5 Pro Head Tracker 1325 ams AG 00d6 I2C/SPI InterfaceBoard 0c08 Embedded Linux Sensor Bridge 4002 I2C Dongle 132a Envara Inc. 1502 WiND 802.11abg / 802.11bg WLAN 132b Konica Minolta 0000 Dimage A2 Camera 0001 Minolta DiMAGE A2 (ptp) 0003 Dimage Xg Camera 0006 Dimage Z2 Camera 0007 Minolta DiMAGE Z2 (PictBridge mode) 0008 Dimage X21 Camera 000a Dimage Scan Dual IV AF-3200 (2891) 000b Dimage Z10 Camera 000d Dimage X50 Camera [storage?] 000f Dimage X50 Camera [p2p?] 0010 Dimage G600 Camera 0012 Dimage Scan Elite 5400 II (2892) 0013 Dimage X31 Camera 0015 Dimage G530 Camera 0017 Dimage Z3 Camera 0018 Minolta DiMAGE Z3 (PictBridge mode) 0019 Dimage A200 Camera 0021 Dimage Z5 Camera 0022 Minolta DiMAGE Z5 (PictBridge mode) 002c Dynax 5D camera 2001 Magicolor 2400w 2004 Magicolor 5430DL 2005 Magicolor 2430 DL 2029 Magicolor 5440DL 2030 PagePro 1350E(N) 2033 PagePro 1400W 2043 Magicolor 2530DL 2045 Magicolor 2500W 2049 Magicolor 2490MF 133e Kemper Digital GmbH 0815 Virus TI Desktop 1342 Mobility 0200 EasiDock 200 Hub 0201 EasiDock 200 Keyboard and Mouse Port 0202 EasiDock 200 Serial Port 0203 EasiDock 200 Printer Port 0204 Ethernet 0304 EasiDock Ethernet 1343 Citizen Systems 0002 CW-01 0003 CX / DNP DS40 0004 CX-W / DNP DS80 / Mitsubishi CP3800 0005 CY / DNP DSRX1 0006 CW-02 / OP900ii 0007 DNP DS80DX 0008 DNP DS620 (old) 000a CX-02 000b CX-02W 1345 Sino Lite Technology Corp. 001c Xbox Controller Hub 6006 Defender Wireless Controller 1347 Moravian Instruments 0400 G2CCD USB 1.1 obsolete 0401 G2CCD-S with Sony ICX285 CCD 0402 G2CCD2 0403 G2/G3CCD-I KAI CCD 0404 G2/G3/G4 CCD-F KAF CCD 0405 Gx CCD-I CCD 0406 Gx CCD-F CCD 0410 G1-0400 CCD 0411 G1-0800 CCD 0412 G1-0300 CCD 0413 G1-2000 CCD 0414 G1-1400 CCD 0415 G1-1200 CCD 04b0 Gx CCD-B CCD 04b1 Gx CCD-BI CCD 1348 Katsuragawa Electric Co., Ltd. 134c PanJit International Inc. 0001 Touch Panel Controller 0002 Touch Panel Controller 0003 Touch Panel Controller 0004 Touch Panel Controller 134e Digby's Bitpile, Inc. DBA D Bit 1357 P&E Microcomputer Systems 0089 OpenSDA - CDC Serial Port 0503 USB-ML-12 HCS08/HCS12 Multilink 0504 DEMOJM 1000 Smart Control Touchpad 135e Insta GmbH 0021 Berker KNX Data Interface 0022 Gira KNX Data Interface 0023 JUNG KNX Data Interface 0024 Merten/Schneider Electric KNX Data Interface 0025 Hager KNX Data Interface 0026 Feller KNX Data Interface 135f Control Development Inc. 0110 Linear Spectrograph 0111 Spectrograph - Renumerated 0200 Linear Spectrograph 0201 Spectrograph - Renumerated 0240 MPP Spectrograph 1366 SEGGER 0101 J-Link PLUS 1015 J-Link 136b STEC 136e Andor Technology Ltd. 0012 iXon Ultra CCD 0014 Zyla 5.5 sCMOS camera 1370 Swissbit 0323 Swissmemory cirrusWHITE 6828 Victorinox Flash Drive 1371 CNet Technology Inc. 0001 CNUSB-611AR Wireless Adapter-G [AT76C503] 0002 CNUSB-611AR Wireless Adapter-G [AT76C503] (FiberLine WL-240U) 0013 CNUSB-611 Wireless Adapter [AT76C505] 0014 CNUSB-611 Wireless Adapter [AT76C505] (FiberLine WL-240U) 5743 CNUSB-611 (D) Wireless Adapter [AT76C503] 9022 CWD-854 [RT2573] 9032 CWD-854 rev F 9401 CWD-854 Wireless 802.11g 54Mbps Network Adapter [RTL8187] 1376 Vimtron Electronics Co., Ltd. 1377 Sennheiser electronic GmbH & Co. KG 4000 HDVD800 137b SCAPS GmbH 0002 SCAPS USC-2 Scanner Controller 137c YASKAWA ELECTRIC CORP. 0220 MP Series 0250 SIGMA Series 0401 AC Drive 1385 Netgear, Inc 4250 WG111T 4251 WG111T (no firmware) 5f00 WPN111 RangeMax(TM) Wireless USB 2.0 Adapter 5f01 WPN111 (no firmware) 5f02 WPN111 (no firmware) 6e00 WPNT121 802.11g 240Mbps Wireless Adapter [Airgo AGN300] 138a Validity Sensors, Inc. 0001 VFS101 Fingerprint Reader 0005 VFS301 Fingerprint Reader 0007 VFS451 Fingerprint Reader 0008 VFS300 Fingerprint Reader 0010 VFS Fingerprint sensor 0011 VFS5011 Fingerprint Reader 0015 VFS 5011 fingerprint sensor 0017 VFS 5011 fingerprint sensor 0018 Fingerprint scanner 003c VFS471 Fingerprint Reader 003d VFS491 003f VFS495 Fingerprint Reader 0050 Swipe Fingerprint Sensor 0090 VFS7500 Touch Fingerprint Sensor 0091 VFS7552 Touch Fingerprint Sensor 138e Jungo LTD 9000 Raisonance S.A. STM32 ARM evaluation board / RLink dongle 1390 TOMTOM B.V. 0001 GO 520 T / GO 630 / ONE / ONE XL 5454 Blue & Me 2 7474 GPS Sport Watch [Runner, Multi-Sport] a001 Bandit Action Camera Batt-Stick 1391 IdealTEK, Inc. 1000 URTC-1000 1395 DSEA A/S 0025 Headset [PC 8] 0026 SC230 0027 SC260 0028 SC230 CTRL 0029 SC260 CTRL 002a SC230 for Lync 002b SC260 for Lync 002d BTD-800 002e Presence 0030 CEHS-CI 02 0031 U320 Gaming 0032 SC30 for Lync 0033 SC60 for Lync 0034 SC30 Control 0035 SC60 Control 0036 SC630 for Lync 0037 SC660 for Lync 0038 SC630 CTRL 0039 SC660 CTRL 003f SP 20 0040 MB Pro 1/2 0041 SP 20 for Lync 0042 SP 10 0043 SP 10 for Lync 0046 PXC 550 004a MOMENTUM M2 OEBT 004b MOMENTUM M2 AEBT 004f SC230 for MS II 0050 SC260 for MS II 0051 USB-ED CC 01 0058 USB-ED CC 01 for MS 0059 SC40 for MS 005a SC70 for MS 005b SC40 CTRL 005c SC70 CTRL 0060 SCx5 MS 0061 SCx5 CTRL 0064 MB 660 MS 0065 MB 660 0066 SP 20 D UC 0067 SP 20 D MS 006b SC6x5 0072 Headset 3556 USB Headset 1397 BEHRINGER International GmbH 0004 FCA1616 00bc BCF2000 1398 Q-tec 2103 USB 2.0 Storage Device 13ad Baltech 9999 Card reader 13b0 PerkinElmer Optoelectronics 000a Alesis Photon X25 MIDI Controller 13b1 Linksys 000a WUSB54G v2 802.11g Adapter [Intersil ISL3887] 000b WUSB11 v4.0 802.11b Adapter [ALi M4301] 000c WUSB54AG 802.11a/g Adapter [Intersil ISL3887] 000d WUSB54G v4 802.11g Adapter [Ralink RT2500USB] 000e WUSB54GS v1 802.11g Adapter [Broadcom 4320 USB] 0011 WUSB54GP v4.0 802.11g Adapter [Ralink RT2500USB] 0014 WUSB54GS v2 802.11g Adapter [Broadcom 4320 USB] 0018 USB200M 10/100 Ethernet Adapter 001a HU200TS Wireless Adapter 001e WUSBF54G 802.11bg 0020 WUSB54GC v1 802.11g Adapter [Ralink RT73] 0022 WUSB54GX4 802.11g 240Mbps Wireless Adapter [Airgo AGN300] 0023 WUSB54GR 0024 WUSBF54G v1.1 802.11bg 0026 WUSB54GSC v1 802.11g Adapter [Broadcom 4320 USB] 0028 WUSB200 802.11g Adapter [Ralink RT2671] 0029 WUSB300N 802.11bgn Wireless Adapter [Marvell 88W8362+88W8060] 002f AE1000 v1 802.11n [Ralink RT3572] 0031 AM10 v1 802.11n [Ralink RT3072] 0039 AE1200 802.11bgn Wireless Adapter [Broadcom BCM43235] 003a AE2500 802.11abgn Wireless Adapter [Broadcom BCM43236] 003b AE3000 802.11abgn (3x3) Wireless Adapter [Ralink RT3573] 003e AE6000 802.11a/b/g/n/ac Wireless Adapter [MediaTek MT7610U] 003f WUSB6300 802.11a/b/g/n/ac Wireless Adapter [Realtek RTL8812AU] 0041 Gigabit Ethernet Adapter 0042 WUSB6100M 802.11a/b/g/n/ac Wireless Adapter 13b1 WUSB200: Wireless-G Business Network Adapter with Rangebooster 13b2 Alesis 0030 Multimix 8 13b3 Nippon Dics Co., Ltd. 13ba PCPlay 0001 Konig Electronic CMP-KEYPAD12 Numeric Keypad 0017 PS/2 Keyboard+Mouse Adapter 0018 Barcode PCP-BCG4209 13be Ricoh Printing Systems, Ltd. 13ca JyeTai Precision Industrial Co., Ltd. 13cf Wisair Ltd. 1200 Olidata Wireless Multimedia Adapter 13d0 Techsan Electronics Co., Ltd. 2282 TechniSat DVB-PC TV Star 2 13d1 A-Max Technology Macao Commercial Offshore Co. Ltd. 7019 MD 82288 abe6 Wireless 802.11g 54Mbps Network Adapter [RTL8187] 13d2 Shark Multimedia 0400 Pocket Ethernet [klsi] 13d3 IMC Networks 3201 VisionDTV USB-Ter/HAMA USB DVB-T device cold 3202 VisionDTV USB-Ter/HAMA USB DVB-T device warm 3203 DTV-DVB UDST7020BDA DVB-S Box(DVBS for MCE2005) 3204 DTV-DVB UDST7020BDA DVB-S Box(DVBS for MCE2005) 3205 DNTV Live! Tiny USB2 BDA (No Remote) 3206 DNTV Live! Tiny USB2 BDA (No Remote) 3207 DTV-DVB UDST7020BDA DVB-S Box(DVBS for MCE2005) 3208 DTV-DVB UDST7020BDA DVB-S Box(DVBS for MCE2005) 3209 DTV-DVB UDST7022BDA DVB-S Box(Without HID) 3211 DTV-DVB Hybrid Analog/Capture / Pinnacle PCTV 310e 3212 DTV-DVB UDTT704C - DVBT/NTSC/PAL Driver(PCM4) 3213 DTV-DVB UDTT704D - DVBT/NTSC/PAL Driver (PCM4) 3214 DTV-DVB UDTT704F -(MiniCard) DVBT/NTSC/PAL Driver(Without HID) 3215 DTV-DVB UDAT7240 - ATSC/NTSC/PAL Driver(PCM4) 3216 DTV-DVB UDTT 7047-USB 2.0 DVB-T Driver 3217 Digital-TV Receiver. 3219 DTV-DVB UDTT7049 - DVB-T Driver(Without HID) 3220 DTV-DVB UDTT 7047M-USB 2.0 DVB-T Driver 3223 DNTV Live! Tiny USB2 BDA (No Remote) 3224 DNTV Live! Tiny USB2 BDA (No Remote) 3226 DigitalNow TinyTwin DVB-T Receiver 3234 DVB-T FTA Half Minicard [RTL2832U] 3236 DTV-DVB UDTT 7047A-USB 2.0 DVB-T Driver 3237 DTV-DVB UDTT 704J - dual DVB-T Driver 3239 DTV-DVB UDTT704D - DVBT/NTSC/PAL Driver(Without HID) 3240 DTV-DVB UDXTTM6010 - A/D Driver(Without HID) 3241 DTV-DVB UDXTTM6010 - A/D Driver(Without HID) 3242 DTV-DVB UDAT7240LP - ATSC/NTSC/PAL Driver(Without HID) 3243 DTV-DVB UDXTTM6010 - A/D Driver(Without HID) 3244 DTV-DVB UDTT 7047Z-USB 2.0 DVB-T Driver 3247 AW-NU222 802.11bgn Wireless Module [Ralink RT2770+RT2720] 3249 Internal Bluetooth 3250 Broadcom Bluetooth 2.1 3262 802.11 n/g/b Wireless LAN USB Adapter 3273 802.11 n/g/b Wireless LAN USB Mini-Card 3274 DVB-T Dongle [RTL2832U] 3282 DVB-T + GPS Minicard [RTL2832U] 3284 Wireless LAN USB Mini-Card 3304 Asus Integrated Bluetooth module [AR3011] 3306 Mediao 802.11n WLAN [Realtek RTL8191SU] 3315 Bluetooth module 3327 AW-NU137 802.11bgn Wireless Module [Atheros AR9271] 3362 Atheros AR3012 Bluetooth 4.0 Adapter 3375 Atheros AR3012 Bluetooth 4.0 Adapter 3392 Azurewave 43228+20702 3394 Bluetooth 3474 Atheros AR3012 Bluetooth 3526 Bluetooth Radio 5070 Webcam 5111 Integrated Webcam 5115 Integrated Webcam 5116 Integrated Webcam 5122 2M Integrated Webcam 5126 PC Cam 5130 Integrated Webcam 5134 Integrated Webcam 5615 Lenovo EasyCamera 5670 HP TrueVision HD 5682 SunplusIT Integrated Camera 5702 UVC VGA Webcam 5710 UVC VGA Webcam 5716 UVC VGA Webcam 5a07 VGA UVC WebCam 7020 DTV-DVB UDST7020BDA DVB-S Box(DVBS for MCE2005) 7022 DTV-DVB UDST7022BDA DVB-S Box(Without HID) 784b XHC Camera 13d7 Guidance Software, Inc. 0001 T5 PATA forensic bridge 000c T8-R2 forensic bridge 13dc ALEREON, INC. 13dd i.Tech Dynamic Limited 13e1 Kaibo Wire & Cable (Shenzhen) Co., Ltd. 13e5 Rane 0001 SL-1 0003 TTM 57SL 13e6 TechnoScope Co., Ltd. 13ea Hengstler 0001 C-56 Thermal Printer 13ec Zydacron 0006 HID Remote Control 13ee MosArt 0001 Optical Mouse 0003 Optical Mouse 13fd Initio Corporation 0550 INIC-1530 PATA Bridge 0840 INIC-1618L SATA 0841 Samsung SE-T084M DVD-RW 0940 ASUS SBW-06D2X-U 1040 INIC-1511L PATA Bridge 1340 Hi-Speed USB to SATA Bridge 160f RocketFish SATA Bridge [INIC-1611] 1640 INIC-1610L SATA Bridge 1669 INIC-1609PN 1840 INIC-1608 SATA bridge 1e40 INIC-1610P SATA bridge 2040 Samsung Writemaster external DVD writer 3920 INIC-3619PN SATA Bridge 3940 external DVD burner ECD819-SU3 3960 INIC-3639 3e40 ZALMAN ZM-VE350 13fe Phison Electronics Corp. 1a00 512MB/1GB Flash Drive 1a23 512MB Flash Drive 1d00 DataTraveler 2.0 1GB/4GB Flash Drive / Patriot Xporter 4GB Flash Drive 1e00 Flash Drive 2 GB [ICIDU 2 GB] 1e50 U3 Smart Drive 1f00 Kingston DataTraveler / Patriot Xporter 1f23 PS2232 flash drive controller 2240 microSD card reader 3100 2/4 GB stick 3123 Verbatim STORE N GO 4GB 3200 flash drive (2GB, EMTEC) 3600 flash drive (4GB, EMTEC) 3800 Rage XT Flash Drive 3d00 Flash Drive 3e00 Flash Drive 4100 Flash drive 4200 Platinum USB drive mini 5000 USB flash drive (32 GB SHARKOON Accelerate) 5100 Flash Drive 5200 DataTraveler R3.0 5500 Flash drive 6300 SP Mobile C31 (64GB) 1400 Axxion Group Corp. 1402 Bowe Bell & Howell 1403 Sitronix 0001 Digital Photo Frame 0003 Digital Photo Frame (DPF-1104) 1404 Fundamental Software, Inc. cddc Dongle 1409 IDS Imaging Development Systems GmbH 1000 generic (firmware not loaded yet) 1485 uEye UI1485 3240 uEye UI3240 140e Telechips, Inc. b011 TCC780X-based player (USB Boot mode) b021 TCC77X-based players (USB Boot mode) 1410 Novatel Wireless 1110 Merlin S620 1120 Merlin EX720 1130 Merlin S720 1400 Merlin U730/U740 (Vodafone) 1410 Merlin U740 (non-Vodafone) 1430 Merlin XU870 1450 Merlin X950D 2110 Ovation U720/MCD3000 2410 Expedite EU740 2420 Expedite EU850D/EU860D/EU870D 4100 U727 4400 Ovation MC930D/MC950D 9010 Expedite E362 a001 Gobi Wireless Modem a008 Gobi Wireless Modem (QDL mode) b001 Ovation MC551 1415 Nam Tai E&E Products Ltd. or OmniVision Technologies, Inc. 0000 Sony SingStar USBMIC 0020 Sony Wireless SingStar 2000 Sony Playstation Eye 1419 ABILITY ENTERPRISE CO., LTD. 1421 Sensor Technology 0605 Sentech Camera 1424 Posnet Polska S.A. 1001 Temo 1002 Thermal 1003 Neo 1004 Combo DF 1005 Thermal-A 1006 Thermal FV 1007 Bingo HS 1008 Thermal HS FV 1009 Thermal FV EJ 100a Thermal HD 100b Thermal 100c Neo 100d Ergo 100e Trio 1010 Thermal HS FV EJ 1011 Neo EJ 1012 Thermal-A 1013 Thermal-A EJ 1014 Mobile 1015 Temo HS 1016 Mobile HS 1017 TH230+ FV EJ 1018 4610-1NR FV EJ 1429 Vega Technologies Industrial (Austria) Co. 142a Thales E-Transactions 0003 Artema Hybrid 0005 Artema Modular 0043 medCompact 142b Arbiter Systems, Inc. 03a5 933A Portable Power Sentinel 1430 RedOctane 0150 wireless receiver for skylanders wii 4734 Guitar Hero4 hub 4748 Guitar Hero X-plorer 474b Guitar Hero MIDI interface 8888 TX6500+ Dance Pad f801 Controller 1431 Pertech Resources, Inc. 1435 Wistron NeWeb 0427 UR054g 802.11g Wireless Adapter [Intersil ISL3887] 0711 UR055G 802.11bg 0804 AR9170+AR9104 802.11abgn Wireless Adapter 0826 AR5523 0827 AR5523 (no firmware) 0828 AR5523 0829 AR5523 (no firmware) 1436 Denali Software, Inc. 143c Altek Corporation 1443 Digilent 0007 Development board JTAG 1446 X.J.GROUP 6a73 Stamps.com Model 510 5LB Scale 6a78 DYMO Endicia 75lb Digital Scale 1451 Force Dimension 0301 haptic device 0302 haptic device 0400 haptic device 0401 delta.x haptic device 0402 omega.x haptic device 0403 sigma.x haptic device 0404 haptic controller 0405 dedicated haptic device 0406 dedicated haptic device 0407 dedicated haptic device 0408 dedicated haptic device 1452 Dai Nippon Printing, Inc 8b01 DS620 9001 DS820 1453 Radio Shack 4026 26-183 Serial Cable 1456 Extending Wire & Cable Co., Ltd. 1457 First International Computer, Inc. 5117 OpenMoko Neo1973 kernel usbnet (g_ether, CDC Ethernet) mode 5118 OpenMoko Neo1973 Debug board (V2+) 5119 OpenMoko Neo1973 u-boot cdc_acm serial port 511a HXD8 u-boot usbtty CDC ACM Mode 511b SMDK2440 u-boot usbtty CDC ACM mode 511c SMDK2443 u-boot usbtty CDC ACM mode 511d QT2410 u-boot usbtty CDC ACM mode 5120 OpenMoko Neo1973 u-boot usbtty generic serial 5121 OpenMoko Neo1973 kernel mass storage (g_storage) mode 5122 OpenMoko Neo1973 / Neo Freerunner kernel cdc_ether USB network 5123 OpenMoko Neo1973 internal USB CSR4 module 5124 OpenMoko Neo1973 Bluetooth Device ID service 145f Trust 0106 K56 V92 Modem 013d PC Camera (SN9C201 + OV7660) 013f Megapixel Auto Focus Webcam 0142 WB-6250X Webcam 015a WB-8300X 2MP Webcam 0161 15901 802.11bg Wireless Adapter [Realtek RTL8187L] 0167 Widescreen 3MP Webcam 0176 Isla Keyboard 019f 17676 Webcam 01e5 Keyboard [GXT 830] 0212 Panora Widescreen Graphic Tablet 023f Mouse [GXT 168] 1460 Tatung Co. 9150 eHome Infrared Transceiver 1461 Staccato Communications 1462 Micro Star International 5512 MegaStick-1 Flash Stick 8807 DIGIVOX mini III [af9015] 146b BigBen Interactive 0601 Controller for Xbox 360 0902 Wired Mini PS3 Game Controller 1472 Huawei-3Com 0007 Aolynk WUB300g [ZyDAS ZD1211] 0009 Aolynk WUB320g 147a Formosa Industrial Computing, Inc. e015 eHome Infrared Receiver e016 eHome Infrared Receiver e017 eHome Infrared Receiver e018 eHome Infrared Receiver e02c Infrared Receiver e03a eHome Infrared Receiver e03c eHome Infrared Receiver e03d 2 Channel Audio e03e Infrared Receiver [IR605A/Q] 147e Upek 1000 Biometric Touchchip/Touchstrip Fingerprint Sensor 1001 TCS5B Fingerprint sensor 1002 Biometric Touchchip/Touchstrip Fingerprint Sensor 2016 Biometric Touchchip/Touchstrip Fingerprint Sensor 2020 TouchChip Fingerprint Coprocessor (WBF advanced mode) 3000 TCS1C EIM/Cypress Fingerprint sensor 3001 TCS1C EIM/STM32 Fingerprint sensor 147f Hama GmbH & Co., KG 1482 Vaillant 1005 VRD PC-Interface 1484 Elsa AG [hex] 1746 Ecomo 19H99 Monitor 7616 Elsa Hub 1485 Silicom 0001 U2E 0002 Psion Gold Port Ethernet 1487 DSP Group, Ltd. 148e EVATRONIX SA 148f Ralink Technology, Corp. 1000 Motorola BC4 Bluetooth 3.0+HS Adapter 1706 RT2500USB Wireless Adapter 2070 RT2070 Wireless Adapter 2570 RT2570 Wireless Adapter 2573 RT2501/RT2573 Wireless Adapter 2671 RT2601/RT2671 Wireless Adapter 2770 RT2770 Wireless Adapter 2870 RT2870 Wireless Adapter 3070 RT2870/RT3070 Wireless Adapter 3071 RT3071 Wireless Adapter 3072 RT3072 Wireless Adapter 3370 RT3370 Wireless Adapter 3572 RT3572 Wireless Adapter 3573 RT3573 Wireless Adapter 5370 RT5370 Wireless Adapter 5372 RT5372 Wireless Adapter 5572 RT5572 Wireless Adapter 7601 MT7601U Wireless Adapter 760b MT7601U Wireless Adapter 761a MT7610U ("Archer T2U" 2.4G+5G WLAN Adapter 9020 RT2500USB Wireless Adapter 9021 RT2501USB Wireless Adapter 1491 Futronic Technology Co. Ltd. 0020 FS81 Fingerprint Scanner Module 0088 Fingerprint Scanner Model FS88 1493 Suunto 0010 Bluebird [Ambit] 0019 Duck [Ambit2] 001a Colibri [Ambit2 S] 001b Emu [Ambit3 Peak] 001c Finch [Ambit3 Sport] 001d Greentit [Ambit2 R] 001e Ibisbill [Ambit3 Run] 1497 Panstrong Company Ltd. 1498 Microtek International Inc. a090 DVB-T Tuner 149a Imagination Technologies 069b PURE Digital Evoke-1XT Tri-band 2107 DBX1 DSP core 14aa WideView Technology Inc. 0001 Avermedia AverTV DVBT USB1.1 (cold) 0002 Avermedia AverTV DVBT USB1.1 (warm) 0201 AVermedia/Yakumo/Hama/Typhoon DVB-T USB2.0 (cold) 0221 WT-220U DVB-T dongle 022b WT-220U DVB-T dongle 0301 AVermedia/Yakumo/Hama/Typhoon DVB-T USB2.0 (warm) 14ad CTK Corporation 14ae Printronix Inc. 14af ATP Electronics Inc. 14b0 StarTech.com Ltd. 3410 Serial Adapter ICUSB2321X [TUSB3410I] 14b2 Ralink Technology, Corp. 3a93 Topcom 802.11bg Wireless Adapter [Atheros AR5523] 3a95 Toshiba WUS-G06G-JT 802.11bg Wireless Adapter [Atheros AR5523] 3a98 Airlink101 AWLL4130 802.11bg Wireless Adapter [Atheros AR5523] 3c02 Conceptronic C54RU v2 802.11bg Wireless Adapter [Ralink RT2571] 3c05 rt2570 802.11g WLAN 3c06 Conceptronic C300RU v1 802.11bgn Wireless Adapter [Ralink RT2870] 3c07 802.11n adapter 3c09 802.11n adapter 3c22 Conceptronic C54RU v3 802.11bg Wireless Adapter [Ralink RT2571W] 3c23 Airlink101 AWLL6080 802.11bgn Wireless Adapter [Ralink RT2870] 3c24 NEC NP01LM 802.11abg Wireless Adapter [Ralink RT2571W] 3c25 DrayTek Vigor N61 802.11bgn Wireless Adapter [Ralink RT2870] 3c27 Airlink101 AWLL6070 802.11bgn Wireless Adapter [Ralink RT2770] 3c28 Conceptronic C300RU v2 802.11bgn Wireless Adapter [Ralink RT2770] 3c2b NEC NP02LM 802.11bgn Wireless Adapter [Ralink RT3072] 3c2c Keebox W150NU 802.11bgn Wireless Adapter [Ralink RT3070] 14c0 Rockwell Automation, Inc. 14c2 Gemlight Computer, Ltd 0250 Storage Adapter V2 0350 Storage Adapter V2 14c8 Zytronic 0005 Touchscreen Controller 14cd Super Top 1212 microSD card reader (SY-T18) 121c microSD card reader 121f microSD CardReader SY-T18 123a SD/MMC/RS-MMC Card Reader 125c SD card reader 127b SDXC Reader 168a Elecom Co., Ltd MR-K013 Multicard Reader 6116 M6116 SATA Bridge 6600 M110E PATA bridge 6700 Card Reader 6900 Card Reader 8123 SD MMC Reader 8125 SD MMC Reader 8601 4-Port hub 8608 Hub [Super Top] 14d8 JAMER INDUSTRIES CO., LTD. 14dd Raritan Computer, Inc. 1007 D2CIM-VUSB KVM connector 14e0 WiNRADiO Communications 0501 WR-G528e 'CHEETAH' 14e1 Dialogue Technology Corp. 5000 PenMount 5000 Touch Controller 14e5 SAIN Information & Communications Co., Ltd. 14ea Planex Communications ab10 GW-US54GZ ab11 GU-1000T ab13 GW-US54Mini 802.11bg 14ed Shure Inc. 1000 MV5 1002 MV51 1003 MVi 1004 SHA900 1005 KSE1500 1011 MV88+ 1100 ANIUSB-MATRIX 1101 P300 29b6 X2u Adapter 3000 RMCE-USB 14f7 TechniSat Digital GmbH 0001 SkyStar 2 HD CI 0002 SkyStar 2 HD CI 0003 CableStar Combo HD CI 0004 AirStar TeleStick 2 0500 DVB-PC TV Star HD 1500 Ellisys 1501 Pine-Tum Enterprise Co., Ltd. 1504 Bixolon CO LTD 001f SRP-350II Thermal Receipt Printer 1508 Fibocom 1509 First International Computer, Inc. 0a01 LI-3100 Area Meter 0a02 LI-7000 CO2/H2O Gas Analyzer 0a03 C-DiGit Blot Scanner 9242 eHome Infrared Transceiver 1513 medMobile 0444 medMobile 1514 Actel 2003 FlashPro3 Programmer 2004 FlashPro3 Programmer 2005 FlashPro3 Programmer 1516 CompUSA 1603 Flash Drive 8628 Pen Drive 1518 Cheshire Engineering Corp. 0001 HDReye High Dynamic Range Camera 0002 HDReye (before firmware loads) 1519 Comneon 0020 HSIC Device 151f Opal Kelly Incorporated 0020 XEM3001v1 0021 XEM3001v2 0022 XEM3010 0023 XEM3005 0028 XEM3050 002b XEM5010 002c XEM6001 002d XEM6010-LX45 002e XEM6010-LX150 0030 XEM6006-LX16 0033 XEM6002-LX9 0034 XEM7001-A15 0036 XEM7010-A50 0037 XEM7010-A200 0120 ZEM4310 0121 XEM6310-LX45 0122 XEM6310-LX150 0123 XEM6310MT-LX45T 0125 XEM7350-K70T 0126 XEM7350-K160T 0127 XEM7350-K410T 0128 XEM6310MT-LX150T 0129 ZEM5305-A2 012b XEM7360-K160T 012c XEM7360-K410T 012d ZEM5310-A4 0130 XEM7310-A75 0131 XEM7310-A200 1520 Bitwire Corp. 1524 ENE Technology Inc 6680 UTS 6680 1527 Silicon Portals 0200 YAP Phone (no firmware) 0201 YAP Phone 1529 UBIQUAM Co., Ltd. 3100 CDMA 1xRTT USB Modem (U-100/105/200/300/520) 152a Thesycon Systemsoftware & Consulting GmbH 8350 NET Gmbh iCube Camera 8400 INI DVS128 840d INI DAViS 841a INI DAViS FX3 152b MIR Srl 0001 spirobank II 0002 spirolab III 0003 MiniSpir 0004 Oxi 0005 spiros II 0006 smiths spirobank II 0007 smiths spirobank G-USB 0008 smiths MiniSpir 0009 spirobank G-USB 000a smiths Oxi 000b smiths spirolab III 000c chorus III 000d spirolab III Bw 000e spirolab III 000f easySpiro 0010 Spirotel converter 0011 spirobank 0012 spiro3 Zimmer 0013 spirotel serial 0014 spirotel II 0015 spirodoc 152d JMicron Technology Corp. / JMicron USA Technology Corp. 0539 JMS539/567 SuperSpeed SATA II/III 3.0G/6.0G Bridge 0551 JMS551 SuperSpeed two ports SATA 3Gb/s bridge 0561 JMS551 - Sharkoon SATA QuickPort Duo 0562 JMS567 SATA 6Gb/s bridge 0567 JMS567 SATA 6Gb/s bridge 0576 Gen1 SATA 6Gb/s Bridge 0578 JMS578 SATA 6Gb/s 0583 JMS583Gen 2 to PCIe Gen3x2 Bridge 0770 Alienware Integrated Webcam 1561 JMS561U two ports SATA 6Gb/s bridge 1576 External Disk 3.0 2329 JM20329 SATA Bridge 2335 ATA/ATAPI Bridge 2336 Hard Disk Drive 2337 ATA/ATAPI Bridge 2338 JM20337 Hi-Speed USB to SATA & PATA Combo Bridge 2339 JM20339 SATA Bridge 2352 ATA/ATAPI Bridge 2509 JMS539, JMS551 SATA 3Gb/s bridge 2551 JMS551 SATA 3Gb/s bridge 2561 CEB-2235S-U3 external RAID box 2566 JMS566 SATA 3Gb/s bridge 2590 JMS567 SATA 6Gb/s bridge 3562 JMS567 SATA 6Gb/s bridge 3569 JMS566 SATA 3Gb/s bridge 578e JMS578 SATA 6Gb/s bridge 8561 salcar docking station two disks 152e LG (HLDS) 1640 INIC-1605 SATA Bridge 2507 PL-2507 IDE Controller 2571 GP08NU6W DVD-RW e001 GSA-5120D DVD-RW 1532 Razer USA, Ltd 0001 RZ01-020300 Optical Mouse [Diamondback] 0002 Diamondback Optical Mouse 0003 Krait Mouse 0005 Boomslang CE 0007 DeathAdder Mouse 0009 Gaming Mouse [Tempest Habu] 000a Mamba (Wired) 000c Lachesis 000d DiamondBack 3G 000e Megalodon 000f Mamba (Wireless) 0012 Gaming Mouse [Salmosa] 0013 Orochi 2011 0015 Naga Mouse 0016 DeathAdder 3.5G 0017 RZ01-0035 Laser Gaming Mouse [Imperator] 0019 Marauder 001a Spectre 001b Gaming Headset 001c RZ01-0036 Optical Gaming Mouse [Abyssus] 001e Lachesis (5600 DPI) 001f Naga Epic (Wired) 0020 Abyssus 1800 0021 Naga Epic Dock (Wireless, Bluetooth) 0022 Gaming Mouse [TRON] 0023 Gaming Keyboard [TRON] 0024 Mamba 2012 (Wired) 0025 Mamba 2012 (Wireless) 0029 DeathAdder Black Edition 002a Gaming Mouse [Star Wars: The Old Republic] 002b Gaming Keyboard [Star Wars: The Old Republic] 002c Gaming Headset [Star Wars: The Old Republic] 002e RZ01-0058 Gaming Mouse [Naga 2012] 002f Imperator 2012 0031 Gaming Mouse Dock [Star Wars: The Old Republic] 0032 Ouroboros 2012 (Wired) 0033 Ouroboros 2012 (Wireless) 0034 Taipan 0035 Krait 2013 Essential 0036 RZ01-0075, Gaming Mouse [Naga Hex (Red)] 0037 DeathAdder 2013 0038 DeathAdder 1800 0039 Orochi 2013 003e Naga Epic Chroma (Wired) 003f Naga Epic Chroma (Wireless) 0040 Naga 2014 0041 Naga Hex 0042 Abyssus 2014 0043 DeathAdder Chroma 0044 Mamba Chroma (Wired) 0045 Mamba Chroma (Wireless) 0046 Mamba 2015 Tournament Edition [RZ01-01370100-R3] 0048 Orochi 2015 (Wired) 004a RZ03-0133 Gaming Lapboard, Keyboard Mouse Combo, Dongle [Turret Dongle] 004c Diamondback Chroma 004d DeathAdder 2000 (Cynosa Pro Bundle) 004f RZ01-0145, Gaming Mouse [DeathAdder 2000 (Alternate)] 0050 Naga Hex V2 0053 Naga Chroma 0054 DeathAdder 3500 0056 Orochi 2015 (Wireless) 0059 RZ01-0212 Gaming Mouse [Lancehead (Wired)] 005a RZ01-0212 Gaming Mouse [Lancehead (Wireless)] 005b Abyssus V2 005c DeathAdder Elite 005e Abyssus 2000 005f DeathAdder 2000 0060 RZ01-0213 Gaming Mouse [Lancehead Tournament Edition] 0062 Atheris 0064 Basilisk 0065 RZ01-0265, Gaming Mouse [Basilisk Essential] 0067 Naga Trinity 0068 Gaming Mouse Mat [Firefly Hyperflux] 0069 Gaming Mouse [Mamba Hyperflux] 006a Abyssus Elite (D.Va Edition) 006b Abyssus Essential 006c Mamba Elite (Wired) 006e DeathAdder Essential 006f RZ01-0257 Gaming Mouse [Lancehead Wireless (2019, Wireless, Receiver)] 0070 RZ01-0257 Gaming Mouse [Lancehead Wireless (2019, Wired)] 0071 RZ01-0254 Gaming Mouse [DeathAdder Essential White Edition] 0072 Mamba 2018 (Wireless) 0073 Mamba 2018 (Wired) 0078 Viper (wired) 007a RC30-0305 Gaming Mouse [Viper Ultimate (Wired)] 007b RC30-0305 Gaming Mouse Dongle [Viper Ultimate (Wireless)] 007e RC30-030502 Mouse Dock 0083 RC30-0315, Gaming Mouse [Basilisk X HyperSpeed] 0084 RZ01-0321 Gaming Mouse [DeathAdder V2] 0085 RZ01-0316 Gaming Mouse [Basilisk V2] 0086 Gaming Mouse [Basilisk Ultimate, Wired] 0088 Gaming Mouse [Basilisk Ultimate, Wireless, Receiver] 008a RZ01-0325, Gaming Mouse [Viper Mini] 0101 Copperhead Mouse 0102 Tarantula Keyboard 0103 Gaming Keyboard [Reclusa] 0105 Gaming Keyboard [ProType] 0106 Gaming Keyboard [ProType] 0109 Lycosa Keyboard 010b Gaming Keyboard [Arctosa] 010d BlackWidow Ultimate 2012 010e BlackWidow Classic (Alternate) 010f Anansi 0110 Cyclosa 0111 Nostromo 0113 RZ07-0074 Gaming Keypad [Orbweaver] 0114 DeathStalker Ultimate 0116 Blade Pro (2015) 0118 RZ03-0080, Gaming Keyboard [Deathstalker Essential] 0119 Gaming Keyboard [Lycosa] 011a BlackWidow Ultimate 2013 011b BlackWidow Classic 011c BlackWidow Tournament Edition Stealth 011d Blade 2013 011e Gaming Keyboard Dock [Edge Keyboard Dock] 011f Deathstalker Essential 2014 0200 Gaming Keyboard [Reclusa] 0201 Tartarus 0202 DeathStalker Expert 0203 BlackWidow Chroma 0204 DeathStalker Chroma 0205 Blade Stealth 0207 Orbweaver Chroma keypad 0208 Tartarus Chroma 0209 BlackWidow Tournament Edition Chroma 020d Cynosa Pro keyboard (Cynosa Pro Bundle) 020f Blade QHD 0210 Blade Pro (Late 2016) 0211 BlackWidow Chroma (Overwatch) 0214 BlackWidow Ultimate 2016 0215 Core 0216 BlackWidow X Chroma 0217 BlackWidow X Ultimate 021a BlackWidow X Tournament Edition Chroma 021b Gaming Keyboard [BlackWidow X Tournament Edition] 021e Ornata Chroma 021f Ornata 0220 Blade Stealth (2016) 0221 RZ03-0203 Gaming Keyboard [BlackWidow Chroma V2] 0224 Blade (Late 2016) 0225 Blade Pro (2017) 0226 Huntsman Elite 0227 Huntsman 0228 BlackWidow Elite 022a Cynosa Chroma 022b Tartarus V2 022c Cynosa Chroma Pro 022d Blade Stealth (Mid 2017) 022f Blade Pro FullHD (2017) 0232 Blade Stealth (Late 2017) 0233 Blade 15 (2018) 0234 Blade Pro 17 (2019) 0235 BlackWidow Lite (2018) 0237 BlackWidow Essential 0239 Blade Stealth (2019) 023a Blade 15 (2019) Advanced 023b Blade 15 (2018) Base Model 023f RZ03-0274 Gaming Keyboard [Cynosa Lite] 0240 Blade 15 (2018) Mercury 0241 BlackWidow (2019) 0243 Huntsman Tournament Edition 0244 RZ07-0311 Gaming Keypad [Tartarus Pro] 0245 Blade 15 (Mid 2019) Mercury 0246 Blade 15 (Mid 2019) Base Model 024a Blade Stealth (Late 2019) 024b Gaming Laptop [Blade 15 Advanced (Late 2019)] 024c Gaming Laptop [Blade Pro (Late 2019)] 024d Blade 15 Studio Edition (2019) 0253 RZ09-0330, Gaming Laptop [Blade 15 Advanced (Early 2020)] 0255 RZ09-0328, Gaming Laptop [Blade 15 Base Model (2020)] 0256 RZ09--0329, Gaming Laptop [Blade Pro 17 Full HD (2020)] 025d RZ03-0338, Gaming Keyboard [Ornata V2] 0300 RZ06-0063 Motion Sensing Controllers [Hydra] 0401 Gaming Arcade Stick [Panthera] 0501 Kraken 7.1 0502 Gaming Headset [Kraken USB] 0504 Kraken 7.1 Chroma 0506 Kraken 7.1 (Alternate Version) 0510 Kraken 7.1 V2 0511 RZ19-0229 Gaming Microphone 0514 Electra V2 USB 0517 Nommo Chroma 0518 Nommo Pro 051a Nari Ultimate 051c Nari (Wireless) 051d Nari (Wired) 051e RC30-026902, Gaming Headset [Nari Essential, Wireless, Receiver] 051f RC30-026901, Gaming Headset [Nari Essential, Wired] 0520 Kraken Tournament Edition 0521 Kraken Kitty Edition 0527 RZ04-0318 Gaming Headset [Kraken Ultimate] 0904 R201-0282 Gaming Keyboard, Mouse Combination [Turret For Xbox One] 0a00 Atrox Arcade Stick for Xbox One 0a02 ManO'War 0a03 Wildcat 0a15 RZ06-0199, Gaming Controller [Wolverine Tournament Edition] 0c00 RZ02-0135 Hard Gaming Mouse Mat [Firefly] 0c01 Goliathus 0c02 Goliathus Extended 0c04 Firefly V2 0e03 Gaming Webcam [Kiyo] 0f03 Tiamat 7.1 V2 0f07 Chroma Mug Holder 0f08 Base Station Chroma 0f09 Chroma HDK 0f0d Laptop Stand Chroma 0f13 Lian Li O11 Dynamic Razer Edition 0f1a Core X Chroma 1000 Gaming Controller [Raiju] 1004 Gaming Controller [Raiju Ultimate Wired] 1007 Gaming Controller [Raiju 2 Tournament Edition (USB)] 1008 Gaming Flightstick [Panthera Evo] 1009 Gaming Controller [Raiju 2 Ultimate Edition (BT)] 100a Gaming Controller [Raiju 2 Tournament Edition (BT)] 110d Bootloader (Alternate) 800e Bootloader 153b TerraTec Electronic GmbH 1181 Cinergy S2 PCIe Dual Port 1 1182 Cinergy S2 PCIe Dual Port 2 1546 U-Blox AG 01a4 Antaris 4 01a5 [u-blox 5] 01a6 [u-blox 6] 01a7 [u-blox 7] 01a8 [u-blox 8] 1102 LISA-U2 1547 SG Intec Ltd & Co KG 1000 SG-Lock[U2] 154a Celectronic GmbH 8180 CARD STAR/medic2 154b PNY 000f Flash Drive 0010 USB 2.0 Flash Drive 0048 Flash Drive 004d 8 GB Flash Drive 0053 Flash Drive 0057 32GB Micro Slide Attache Flash Drive 005b Flash Drive 0062 Flash Drive 007a Classic Attache Flash Drive 5408 2.5in drive enclosure 6000 Flash Drive 6545 FD Device fa05 Flash Drive 154d ConnectCounty Holdings Berhad 154e D&M Holdings, Inc. (Denon/Marantz) 3000 Marantz RC9001 Remote Control 154f SNBC CO., Ltd 1554 Prolink Microsystems Corp. 5010 PV-D231U(RN)-F [PixelView PlayTV SBTVD Full-Seg] 1557 OQO 0002 model 01 WiFi interface 0003 model 01 Bluetooth interface 0a80 Gobi Wireless Modem (QDL mode) 7720 model 01+ Ethernet 8150 model 01 Ethernet interface 1568 Sunf Pu Technology Co., Ltd 156f Quantum Corporation 1570 ALLTOP TECHNOLOGY CO., LTD. 157b Ketron SRL 157e TRENDnet 3006 TEW-444UB EU [TRENDnet] 3007 TEW-444UB EU (no firmware) 300a TEW-429UB 802.11bg 300b TEW-429UB 802.11bg 300c TEW-429UF A1 802.11bg Wireless Adapter [ZyDAS ZD1211B] 300d TEW-429UB C1 802.11bg 300e SMC SMCWUSB-N 802.11bgn 2x2:2 Wireless Adapter [Ralink RT2870] 3012 TEW-604UB 802.11bg Wireless Adapter [Atheros AR5523] 3013 TEW-645UB 802.11bgn 1x2:2 Wireless Adapter [Ralink RT2770] 3204 Allnet ALL0298 v2 802.11bg 3205 Allnet ALL0283 [AR5523] 3206 Allnet ALL0283 [AR5523](no firmware) 3207 TEW-509UB A1 802.11abg Wireless Adapter [ZyDAS ZD1211] 3208 TEW-509UB 1.1R 802.11abg Wireless Adapter 1582 Fiberline 6003 WL-430U 802.11bg 1587 SMA Technologie AG 158d Oakley Inc. 158e JDS Uniphase Corporation (JDSU) 0820 SmartPocket Class Device 1598 Kunshan Guoji Electronics Co., Ltd. 15a2 Freescale Semiconductor, Inc. 0038 9S08JS Bootloader 003b USB2CAN Application for ColdFire DEMOJM board 0041 i.MX51 SystemOnChip in RecoveryMode 0042 OSBDM - Debug Port 004e i.MX53 SystemOnChip in RecoveryMode 004f i.MX28 SystemOnChip in RecoveryMode 0052 i.MX50 SystemOnChip in RecoveryMode 0054 i.MX 6Dual/6Quad SystemOnChip in RecoveryMode 0061 i.MX 6Solo/6DualLite SystemOnChip in RecoveryMode 006a Vybrid series SystemOnChip in RecoveryMode 0076 i.MX 7Solo/7Dual SystemOnChip in RecoveryMode 0080 i.MX 6ULL SystemOnChip in RecoveryMode 15a4 Afatech Technologies, Inc. 1000 AF9015/AF9035 DVB-T stick 1001 AF9015/AF9035 DVB-T stick 1336 SDHC/MicroSD/MMC/MS/M2/CF/XD Flash Card Reader 9015 AF9015 DVB-T USB2.0 stick 9016 AF9015 DVB-T USB2.0 stick 15a8 Teams Power Limited 15a9 Gemtek 0002 SparkLAN WL-682 802.11bg Wireless Adapter [Intersil ISL3887] 0004 WUBR-177G [Ralink RT2571W] 0006 Wireless 11n USB Adapter 0010 802.11n USB Wireless Card 0012 WUBR-208N 802.11abgn Wireless Adapter [Ralink RT2870] 002d WLTUBA-107 [Yota 4G LTE] 15aa Gearway Electronics (Dong Guan) Co., Ltd. 15ad VMware Inc. 15ba Olimex Ltd. 0003 OpenOCD JTAG 0004 OpenOCD JTAG TINY 002a ARM-USB-TINY-H JTAG interface 002b ARM-USB-OCD-H JTAG+RS232 003c TERES Keyboard+Touchpad 15c0 XL Imaging 0001 2M pixel Microscope Camera 0002 3M pixel Microscope Camera 0003 1.3M pixel Microscope Camera (mono) 0004 1.3M pixel Microscope Camera (colour) 0005 3M pixel Microscope Camera (Mk 2) 0006 2M pixel Microscope Camera (with capture button) 0007 3M pixel Microscope Camera (with capture button) 0008 1.3M pixel Microscope Camera (colour, with capture button) 0009 1.3M pixel Microscope Camera (colour, with capture button) 000a 2M pixel Microscope Camera (Mk 2) 0010 1.3M pixel "Tinycam" 0101 3M pixel Microscope Camera 15c2 SoundGraph Inc. 0036 LC16M VFD Display/IR Receiver 0038 GD01 MX LCD Display/IR Receiver 0042 Antec Veris Multimedia Station E-Z IR Receiver ffda iMON PAD Remote Controller ffdc iMON PAD Remote Controller 15c5 Pressure Profile Systems, Inc. 0008 Advance Multimedia Internet Technology Inc. (AMIT) WL532U 802.11g Adapter 15c6 Laboratoires MXM 1000 DigistimSP (cold) 1001 DigistimSP (warm) 1002 DigimapSP USB (cold) 1003 DigimapSP USB (warm) 1004 DigistimSP (cold) 1005 DigistimSP (warm) 1100 Odyssee (cold) 1101 Odyssee (warm) 1200 Digispy 15c8 KTF Technologies 3201 EVER EV-W100/EV-W250 15c9 D-Box Technologies 15ca Textech International Ltd. 00c3 Mini Optical Mouse 0101 MIDI Interface cable 1806 MIDI Interface cable 15d5 Coulomb Electronics Ltd. 15d9 Trust International B.V. 0a33 Optical Mouse 0a37 Mouse 0a41 MI-2540D [Optical mouse] 0a4c USB+PS/2 Optical Mouse 0a4d Optical Mouse 0a4e AM-5400 [Optical Mouse] 0a4f Optical Mouse 15dc Hynix Semiconductor Inc. 15e0 Seong Ji Industrial Co., Ltd. 15e1 RSA 2007 RSA SecurID (R) Authenticator 15e4 Numark 0024 Mixtrack 003c DJ2GO2 Touch 0140 ION VCR 2 PC / Video 2 PC 3f00 Power A Mini Pro Elite 3f0a Airflo Wired Controller for Xbox 360 3f10 Batarang controller for Xbox 360 15e8 SohoWare 9100 NUB100 Ethernet [pegasus] 9110 10/100 USB Ethernet 15e9 Pacific Digital Corp. 04ce MemoryFrame MF-570 1968 MemoryFrame MF-570 1969 Digital Frame 15ec Belcarra Technologies Corp. 15f4 HanfTek 0001 HanfTek UMT-010 USB2.0 DVB-T (cold) 0025 HanfTek UMT-010 USB2.0 DVB-T (warm) 0131 Astrometa DVB-T/T2/C FM & DAB receiver [RTL2832P] 0135 Astrometa T2hybrid 1604 Tascam 10c0 Dell Integrated Hub 8000 US-428 Audio/Midi Controller (without fw) 8001 US-428 Audio/Midi Controller 8004 US-224 Audio/Midi Controller (without fw) 8005 US-224 Audio/Midi Controller 8006 US-122 Audio/Midi Interface (without fw) 8007 US-122 Audio/Midi Interface 1605 ACCES I/O Products, Inc. 0001 DIO-32 (No Firmware Yet) 0002 USB-DIO-48 (No Firmware Yet) 0003 USB-DIO-96 (No Firmware Yet) 0004 USB-DIO-32I (No Firmware Yet) 0005 USB-DIO24 (based on -CTR6) (No Firmware Yet) 0006 USB-DIO24-CTR6 (No Firmware Yet) 1606 Umax 0002 Astra 1236U Scanner 0010 Astra 1220U 0030 Astra 1600U/2000U 0050 Scanner 0060 Astra 3400/3450 0070 Astra 4400/4450 0130 Astra 2100U 0160 Astra 5400U 0170 Uniscan D50 0230 Astra 2200/2200SU 0350 Astra 4800/4850 Scanner 1030 Astra 4000U 1220 Genesys Logic Scanner Controller NT5.0 2010 AstraCam Digital Camera 2020 AstraCam 1000 2030 AstraCam 1800 Digital Camera 1608 Inside Out Networks [hex] 0001 EdgePort/4 Serial Port 0002 Edgeport/8 0003 Rapidport/4 0004 Edgeport/4 0005 Edgeport/2 0006 Edgeport/4i 0007 Edgeport/2i 0008 Edgeport/8 000c Edgeport/421 000d Edgeport/21 000e Edgeport/4 000f Edgeport/8 0010 Edgeport/2 0011 Edgeport/4 0012 Edgeport/416 0014 Edgeport/8i 0018 Edgeport/412 0019 Edgeport/412 001a Edgeport/2+2i 0101 Edgeport/4 0105 Edgeport/2 0106 Edgeport/4i 0107 Edgeport/2i 010c Edgeport/421 010d Edgeport/21 0110 Edgeport/2 0111 Edgeport/4 0112 Edgeport/416 0114 Edgeport/8i 0201 Edgeport/4 0203 Rapidport/4 0204 Edgeport/4 0205 Edgeport/2 0206 Edgeport/4i 0207 Edgeport/2i 020c Edgeport/421 020d Edgeport/21 020e Edgeport/4 020f Edgeport/8 0210 Edgeport/2 0211 Edgeport/4 0212 Edgeport/416 0214 Edgeport/8i 0215 Edgeport/1 0216 EPOS/44 0217 Edgeport/42 021a Edgeport/2+2i 021b Edgeport/2c 021c Edgeport/221c 021d Edgeport/22c 021e Edgeport/21c 021f Edgeport/62 0240 Edgeport/1 0241 Edgeport/1i 0242 Edgeport/4s 0243 Edgeport/8s 0244 Edgeport/8 0245 Edgeport/22c 0301 Watchport/P 0302 Watchport/M 0303 Watchport/W 0304 Watchport/T 0305 Watchport/H 0306 Watchport/E 0307 Watchport/L 0308 Watchport/R 0309 Watchport/A 030a Watchport/D 030b Watchport/D 030c Power Management Port 030e Power Management Port 030f Watchport/G 0310 Watchport/Tc 0311 Watchport/Hc 1403 MultiTech Systems MT4X56 Modem 1a17 Agilent Technologies (E6473) 160a VIA Technologies, Inc. 3184 VIA VNT-6656 [WiFi 802.11b/g USB Dongle] 160e INRO 0001 E2USBKey 1614 Amoi Electronics 0404 WMA9109 UMTS Phone 0600 Vodafone VDA GPS / Toschiba Protege G710 0804 WP-S1 Phone 1617 Sony Corp. 2002 NVX-P1 Personal Navigation System 1619 L & K Precision Technology Co., Ltd. 161c Digitech Systems 0002 DTC-02U [Digi Touch Controller] 1621 Wionics Research 1628 Stonestreet One, Inc. 162a Airgo Networks Inc. 162f WiQuest Communications, Inc. 1630 2Wire, Inc. 0005 802.11g Wireless Adapter [Intersil ISL3886] 0011 PC Port 10 Mps Adapter ff81 802.11b Wireless Adapter [Lucent/Agere Hermes I] 1631 Good Way Technology 6200 GWUSB2E c019 RT2573 1633 AIM GmbH 4510 ASC1553 4520 ASC429 4560 ASC-FDX 1645 Entrega [hex] 0001 1S Serial Port 0002 2S Serial Port 0003 1S25 Serial Port 0004 4S Serial Port 0005 E45 Ethernet [klsi] 0006 Parallel Port 0007 U1-SC25 SCSI 0008 Ethernet 0016 Bi-directional to Parallel Printer Converter 0080 1 port to Serial Converter 0081 1 port to Serial Converter 0093 1S9 Serial Port 8000 EZ-USB 8001 1 port to Serial 8002 2x Serial Port 8003 1 port to Serial 8004 2U4S serial/usb hub 8005 Ethernet 8080 1 port to Serial 8081 1 port to Serial 8093 PortGear Serial Port 1649 SofTec Microsystems 0102 uDART In-Circuit Debugger 0200 SpYder USBSPYDER08 164a ChipX 164c Matrix Vision GmbH 0101 mvBlueFOX camera (no firmware) 0103 mvBlueFOX camera 0201 mvBlueLYNX-X intelligent camera (bootloader) 0203 mvBlueLYNX-X intelligent camera 1657 Struck Innovative Systeme GmbH 3150 SIS3150 USB2.0 to VME interface 165b Frontier Design Group 8101 Tranzport Control Surface fad1 Alphatrack Control Surface 165c Kondo Kagaku 0002 Serial Adapter 0006 FT232 [ICS adapter HS] 0008 FT232 [Dual adapter HS] 1660 Creatix Polymedia GmbH 1667 GIGA-TMS INC. 0005 PCR330A RFID Reader (125 kHz, keyboard emulation) 1668 Actiontec Electronics, Inc. [hex] 0009 Gateway 0333 Modem 0358 InternetPhoneWizard 0405 Gateway 0408 Prism2.5 802.11b Adapter 0413 Gateway 0421 Prism2.5 802.11b Adapter 0441 IBM Integrated Bluetooth II 0500 BTM200B BlueTooth Adapter 1050 802UIG-1 802.11g Wireless Mini Adapter [Intersil ISL3887] 1200 802AIN Wireless N Network Adapter [Atheros AR9170+AR9101] 1441 IBM Integrated Bluetooth II 2441 BMDC-2 IBM Bluetooth III w.56k 3441 IBM Integrated Bluetooth III 6010 Gateway 6097 802.11b Wireless Adapter 6106 802UI3(B) 802.11b Wireless Adapter [Intersil PRISM 3] 7605 UAT1 Wireless Ethernet Adapter 1669 PiKRON Ltd. [hex] 1001 uLan2USB Converter - PS1 protocol 166a Clipsal 0101 C-Bus Multi-room Audio Matrix Switcher 0201 C-Bus Pascal Automation Controller 0301 C-Bus Wireless PC Interface 0303 C-Bus interface 0304 C-Bus Black and White Touchscreen 0305 C-Bus Spectrum Colour Touchscreen 0401 C-Bus Architectural Dimmer 1677 China Huada Integrated Circuit Design (Group) Co., Ltd. (CIDC Group) 0103 Token 1679 Total Phase 2001 Beagle Protocol Analyzer 2002 Cheetah SPI Host Adapter 167b Pure Digital Technologies, Inc. 2009 Flip Ultra U1120 1680 Golden Bridge Electech Inc. a332 DVB-T Dongle [RTL2832U] 1681 Prevo Technologies, Inc. 0001 Tuner's Dashboard 0002 DocuBrain(R) Tubachron 0003 DocuBrain(R) I2C 0004 DocuBrain(R) WWVB Receiver 0005 DocuBrain(R) WWVB Transmitter 1682 Maxwise Production Enterprise Ltd. 1684 Godspeed Computer Corp. 1685 Delock 0200 Infrared adapter 1686 ZOOM Corporation 0045 Handy Recorder stereo mix 01c0 Zoom Handy Recorder card reader 01c5 Zoom Handy Recorder multi track 03d5 LiveTrak L-12 1687 Kingmax Digital Inc. 5289 FlashDisk 6211 FlashDisk 6213 FlashDisk 1688 Saab AB 1689 Razer USA, Ltd fd00 Onza Tournament Edition controller fd01 Onza Classic Edition fe00 Sabertooth Elite 168c Atheros Communications 0001 AR5523 0002 AR5523 (no firmware) 1690 Askey Computer Corp. [hex] 0001 Arcaze Gamepad 0101 Creative Modem Blaster DE5670 0102 V1456 VQE-R2 Modem [conexant] 0103 1456 VQE-R3 Modem [conexant] 0104 HCF V90 Data Fax RTAD Modem 0107 HCF V.90 Data,Fax,RTAD Modem 0109 MagicXpress V.90 Pocket Modem [conexant] 0203 Voyager ADSL Modem Loader 0204 Voyager ADSL Modem 0205 DSL Modem 0206 GlobeSpan ADSL WAN Modem 0208 DSL Modem 0209 Voyager 100 ADSL Modem 0211 Globespan Virata ADSL LAN Modem 0212 DSL Modem 0213 HM121d DSL Modem 0214 HM121d DSL Modem 0215 Voyager 105 ADSL Modem 0701 WLAN 0710 SMCWUSBT-G 0711 SMCWUSBT-G (no firmware) 0712 AR5523 0713 AR5523 (no firmware) 0715 Name: Voyager 1055 Laptop 802.11g Adapter [Broadcom 4320] 0722 RT2573 0726 Wi-Fi Wireless LAN Adapter 0740 802.11n Wireless LAN Card 0901 Voyager 205 ADSL Router 2000 naturaSign Pad Standard 2001 naturaSign Pad Standard fe12 Bootloader 1696 Hitachi Video and Information System, Inc. 1697 VTec Test, Inc. 16a5 Shenzhen Zhengerya Cable Co., Ltd. 16a6 Unigraf 3000 VTG-3xxx Video Test Generator family 4000 VTG-4xxx Video Test Generator family 5000 VTG-5xxx Video Test Generator family 5001 VTG-5xxx Special (update) mode of VTG-5xxx family 16ab Global Sun Technology 7801 AR5523 7802 AR5523 (no firmware) 7811 AR5523 7812 AR5523 (no firmware) 16ac Dongguan ChingLung Wire & Cable Co., Ltd. 16b4 iStation 0801 U43 16b5 Persentec, Inc. 0002 Otto driving companion 16c0 Van Ooijen Technische Informatica 03e8 free for internal lab use 1000 03e9 free for internal lab use 1001 03ea free for internal lab use 1002 03eb free for internal lab use 1003 03ec free for internal lab use 1004 03ed free for internal lab use 1005 03ee free for internal lab use 1006 03ef free for internal lab use 1007 03f0 free for internal lab use 1008 03f1 free for internal lab use 1009 0477 Teensy Rebootor 0478 Teensy Halfkay Bootloader 0479 Teensy Debug 047a Teensy Serial 047b Teensy Serial+Debug 047c Teensy Keyboard 047d Teensy Keyboard+Debug 047e Teensy Mouse 047f Teensy Mouse+Debug 0480 Teensy RawHID 0481 Teensy RawHID+Debug 0482 Teensyduino Keyboard+Mouse+Joystick 0483 Teensyduino Serial 0484 Teensyduino Disk 0485 Teensyduino MIDI 0486 Teensyduino RawHID 0487 Teensyduino Serial+Keyboard+Mouse+Joystick 0488 Teensyduino Flight Sim Controls 05b5 BU0836 05dc shared ID for use with libusb 05dd BlackcatUSB2 05de Flashcat 05df HID device except mice, keyboards, and joysticks 05e1 Free shared USB VID/PID pair for CDC devices 05e4 Free shared USB VID/PID pair for MIDI devices 06b4 USB2LPT with 2 interfaces 06b5 USB2LPT with 3 interfaces (native, HID, printer) 074e DSP-Weuffen USB-HPI-Programmer 074f DSP-Weuffen USB2-HPI-Programmer 0762 Osmocom SIMtrace 076b OpenPCD 13.56MHz RFID Reader 076c OpenPICC 13.56MHz RFID Simulator (native) 08ac OpenBeacon USB stick 08ca Alpermann+Velte Universal Display 08cb Alpermann+Velte Studio Clock 08cc Alpermann+Velte SAM7S MT Boot Loader 08cd Alpermann+Velte SAM7X MT Boot Loader 09ce LINKUSB 0a32 jbmedia Light-Manager Pro 27d8 libusb-bound devices 27d9 HID device except mice, keyboards, and joysticks 27da Mouse 27db Keyboard 27dc Joystick 27dd CDC-ACM class devices (modems) 27de MIDI class devices 294a Eye Movement Recorder [Visagraph] 294b Eye Movement Recorder [ReadAlyzer] 16ca Wireless Cables, Inc. 1502 Bluetooth Dongle 16cc silex technology, Inc. 16d0 MCS 0436 Xylanta Ltd, XSP Device 0498 Braintechnology USB-LPS 0504 RETRO Innovations ZoomFloppy 054b GrauTec ReelBox OLED Display (external) 05be EasyLogic Board 05f0 Superior Freedom Programmable IR Remote 06cc Trinamic TMCM-3110 06f0 Axium AX-R4C Controller 06f1 Axium AX-R1D Controller 06f9 Gabotronics Xminilab 0726 Autonomic M400 Amplifier 0727 Autonomic M800 Amplifier 0753 Digistump DigiSpark 075c AB-1.x UAC1 [Audio Widget] 075d AB-1.x UAC2 [Audio Widget] 07cc Xylanta Ltd, Saint3 Device 07f8 Axium AX-R4D Controller 080a S2E1 Interface 0830 DMXControl Projects e.V., Nodle U1 0831 DMXControl Projects e.V., Desklamp 0832 DMXControl Projects e.V., Nodle U2 0833 DMXControl Projects e.V., Nodle R4S 0870 Kaufmann Automotive GmbH, RKS+CAN Interface 09f2 Axium AX-1250 Amplifier 09f4 Axium AX-Mini4 Amplifier 0b03 AIS Receiver [dAISy] 0b7d Autonomic M801 Amplifier 0b7e Autonomic M401 Amplifier 0b7f Autonomic M120e Amplifier 0bd4 codesrc SCSI2SD 0c9b Fermium LABS srl/LabTrek srl Hall Effect Apparatus 0d3c InputStick BT4.0 0e1e AtomMiner 16d1 Suprema Inc. 0401 SUP-SFR400(A) BioMini Fingerprint Reader 16d3 Frontline Test Equipment, Inc. 16d5 AnyDATA Corporation 6202 CDMA/UMTS/GPRS modem 6501 CDMA 2000 1xRTT/EV-DO Modem 6502 CDMA/UMTS/GPRS modem 6603 ADU-890WH modem 16d6 JABLOCOM s.r.o. 8000 GDP-04 desktop phone 8001 EYE-02 8003 GDP-04 modem 8004 Bootloader 8005 GDP-04i 8007 BTP-06 modem 16d8 CMOTECH Co., Ltd. 5141 CMOTECH CDMA Technologies modem 5533 CCU-550 CDMA EV-DO modem 5543 CDMA 2000 1xRTT/1xEVDO modem 6280 CMOTECH CDMA Technologies modem 6803 CNU-680 CDMA EV-DO modem 8001 Gobi 2000 Wireless Modem (QDL mode) 8002 Gobi 2000 Wireless Modem 16dc Wiener, Plein & Baus 0001 CC 000b VM 0010 PL512 Power Supply System 0011 MARATON Power Supply System 0012 MPOD Multi Channel Power Supply System 0015 CML Control, Measurement and Data Logging System 16de Telemecanique 16df King Billion Electronics Co., Ltd. 16f0 GN Hearing A/S 0001 Speedlink Programming Interface 0003 Airlink Wireless Programming Interface 0004 Accessory Programming Interface 16f5 Futurelogic Inc. 1702 FDI-MATELEC 0002 Encodeur 1706 BlueView Technologies, Inc. 1707 ARTIMI 170b Swissonic 0011 MIDI-USB 1x1 170d Avnera 1711 Leica Microsystems 0101 DFC-365FX camera 3020 IC80 HD Camera 1724 Meyer Instruments (MIS) 0115 PAXcam5 1725 Vitesse Semiconductor 1726 Axesstel, Inc. 1000 wireless modem 2000 wireless modem 3000 wireless modem 172f Waltop International Corp. 0022 Tablet 0024 Tablet 0025 Tablet 0026 Tablet 0031 Slim Tablet 12.1" 0032 Slim Tablet 5.8" 0034 Slim Tablet 12.1" 0038 Genius G-Pen F509 0500 Media Tablet 14.1" 0501 Media Tablet 10.6" 0502 Sirius Battery Free Tablet 1733 Cellink Technology Co., Ltd 0101 RF Wireless Optical Mouse OP-701 1736 CANON IMAGING SYSTEM TECHNOLOGIES INC. 1737 802.11g Adapter [Linksys WUSB54GC v3] 0039 USB1000 Gigabit Notebook Adapter 0070 WUSB100 v1 RangePlus Wireless Network Adapter [Ralink RT2870] 0071 WUSB600N v1 Dual-Band Wireless-N Network Adapter [Ralink RT2870] 0073 WUSB54GC v2 802.11g Adapter [Realtek RTL8187B] 0075 WUSB54GSC v2 802.11g Adapter [Broadcom 4326U] 0077 WUSB54GC v3 802.11g Adapter [Ralink RT2070L] 0078 WUSB100 v2 RangePlus Wireless Network Adapter [Ralink RT3070] 0079 WUSB600N v2 Dual-Band Wireless-N Network Adapter [Ralink RT3572] 173a Roche 2198 Accu-Chek Mobile 21ca ACCU-CHEK Mobile Model U1 173d QSENN 0002 GP-K7000 keyboard 1740 Senao 0100 EUB1200AC AC1200 DB Wireless Adapter [Realtek RTL8812AU] 0600 EUB600v1 802.11abgn Wireless Adapter [Ralink RT3572] 0605 LevelOne WUA-0605 N_Max Wireless USB Adapter 0615 LevelOne WUA-0615 N_Max Wireless USB Adapter 1000 NUB-350 802.11g Wireless Adapter [Intersil ISL3887] 2000 NUB-8301 802.11bg 3701 EUB-3701 EXT 802.11g Wireless Adapter [Ralink RT2571W] 9603 RTL8188S WLAN Adapter 9701 EnGenius 802.11n Wireless USB Adapter 9702 EnGenius 802.11n Wireless USB Adapter 9703 EnGenius 802.11n Wireless USB Adapter 9705 EnGenius 802.11n Wireless USB Adapter 9706 EUB9706 802.11n Wireless Adapter [Ralink RT3072] 9801 EUB9801 802.11abgn Wireless Adapter [Ralink RT3572] 1743 General Atomics 1748 MQP Electronics 0101 Packet-Master USB12 174c ASMedia Technology Inc. 07d1 Transcend ESD400 Portable SSD (USB 3.0) 1151 ASM1151W 1153 ASM1153 SATA 3Gb/s bridge 2074 ASM1074 High-Speed hub 3074 ASM1074 SuperSpeed hub 5106 ASM1051 SATA 3Gb/s bridge 5136 ASM1053 SATA 3Gb/s bridge 51d6 ASM1051W SATA 3Gb/s bridge 55aa ASM1051E SATA 6Gb/s bridge, ASM1053E SATA 6Gb/s bridge, ASM1153 SATA 3Gb/s bridge, ASM1153E SATA 6Gb/s bridge 174f Syntek 1105 SM-MS/Pro-MMC-XD Card Reader 110b HP Webcam 1122 HP Webcam 1169 Lenovo EasyCamera 1403 Integrated Webcam 1404 USB Camera device, 1.3 MPixel Web Cam 1758 XYZ printing cameraR2 1759 XYZ printing cameraL2 5212 USB 2.0 UVC PC Camera 5a11 PC Camera 5a31 Sonix USB 2.0 Camera 5a35 Sonix 1.3MPixel USB 2.0 Camera 6a31 Web Cam - Asus A8J, F3S, F5R, VX2S, V1S 6a33 Web Cam - Asus F3SA, F9J, F9S 6a51 2.0MPixel Web Cam - Asus Z96J, Z96S, S96S 6a54 Web Cam 6d51 2.0Mpixel Web Cam - Eurocom D900C 8a12 Syntek 0.3MPixel USB 2.0 UVC PC Camera 8a33 Syntek USB 2.0 UVC PC Camera a311 1.3MPixel Web Cam - Asus A3A, A6J, A6K, A6M, A6R, A6T, A6V, A7T, A7sv, A7U a312 1.3MPixel Web Cam a821 Web Cam - Packard Bell BU45, PB Easynote MX66-208W aa11 Web Cam 1753 GERTEC Telecomunicacoes Ltda. c901 PPC900 Pinpad Terminal 1756 ENENSYS Technologies 0006 DiviPitch 1759 LucidPort Technology, Inc. 1761 ASUSTek Computer, Inc. (wrong ID) 0b05 802.11n Network Adapter (wrong ID - swapped vendor and device) 1770 MSI ff00 steel series rgb keyboard 1772 System Level Solutions, Inc. 1776 Arowana 501c 300K CMOS Camera 1777 Microscan Systems, Inc. 0003 MicroHAWK ID-20 177f Sweex 0004 MM004V5 Photo Key Chain (Digital Photo Frame) 1.5" 0153 LW153 802.11n Adapter [ralink rt3070] 0154 LW154 802.11bgn (1x1:1) Wireless Adapter [Realtek RTL8188SU] 0313 LW313 802.11n Adapter [ralink rt2770 + rt2720] 1781 Multiple Vendors 07df Axium AX-800DAV Amplifier 07e1 Axium AX-KPC Keypad 07e2 Axium AX-KPD Keypad 07e3 Axium AX-400DA Amplifier 083e MetaGeek Wi-Spy 083f MetaGeek Wi-Spy 2.4x 0938 Iguanaworks USB IR Transceiver 0941 qNimble Quark 0a96 raphnet.net usb_game12 0a97 raphnet.net SNES mouse adapter 0a98 raphnet.net USBTenki 0a99 raphnet.net NES 0a9a raphnet.net Gamecube/N64 controller 0a9b raphnet.net DB9Joy 0a9c raphnet.net Intellivision 0a9d raphnet.net 4nes4snes 0a9e raphnet.net Megadrive multitap 0a9f raphnet.net MultiDB9joy 0bad Mantracourt Load Cell 0c30 Telldus TellStick 0c31 Telldus TellStick Duo 0c9f USBtiny 1eef OpenAPC SecuKey 1ef0 E1701 Modular Controller Card 1ef1 E1701 Modular Controller Card 1ef2 E1803 Compact Controller Card 1782 Spreadtrum Communications Inc. 3d00 F200n mobile phone 1784 TopSeed Technology Corp. 0001 eHome Infrared Transceiver 0004 RF Combo Device 0006 eHome Infrared Transceiver 0007 eHome Infrared Transceiver 0008 eHome Infrared Transceiver 000a eHome Infrared Transceiver 0011 eHome Infrared Transceiver 1787 ATI AIB 1788 ShenZhen Litkconn Technology Co., Ltd. 178e ASUSTek Computer, Inc. (wrong ID) 0b05 CrossLink cable 2GB (wrong ID - swapped vendor and device) 1796 Printrex, Inc. 1797 JALCO CO., LTD. 1799 Thales Norway A/S 7051 Belkin F5D7051 802.11g Adapter v1000 [Broadcom 4320] 8051 Belkin F5D8051 v2 802.11bgn Wireless Adapter [Marvell 88W8362] 179d Ricavision International, Inc. 0010 Internal Infrared Transceiver 17a0 Samson Technologies Corp. 0001 C01U condenser microphone 0002 Q1U dynamic microphone 0100 C03U multi-pattern microphone 0101 UB1 boundary microphone 0120 Meteorite condenser microphone 0130 Go Mic Direct 0132 Go Mic Mobile wireless receiver 0200 StudioDock monitors (internal hub) 0201 StudioDock monitors (audio) 0210 StudioGT monitors 0211 StudioGT monitors [CM6400] 0240 Go Mic Connect 0241 G-Track Pro microphone 0301 Q2U handheld microphone with XLR 0302 GoMic compact condenser microphone 0303 C01U Pro condenser microphone 0304 Q2U handheld mic with XLR 0305 GoMic compact condenser mic 0310 Meteor condenser microphone 0311 Satellite condenser microphone 1616 RXD1 wireless receiver b241 G-Track Pro firmware update b311 Satellite firmware update 17a4 Concept2 0001 Performance Monitor 3 0002 Performance Monitor 4 17a5 Advanced Connection Technology Inc. 17a7 MICOMSOFT CO., LTD. 17a8 Kamstrup A/S 0001 Optical Eye/3-wire 0005 M-Bus Master MultiPort 250D 0010 444MHz Radio Mesh Frontend 0011 444MHz RF sniffer 0012 870MHz Radio Mesh Frontend 0013 870MHz RF sniffer 17b3 Grey Innovation 0004 Linux-USB Midi Gadget 17b5 Lunatone 0010 MFT Sensor 17ba SAURIS GmbH 0001 SAU510-USB [no firmware] 0510 SAU510-USB and SAU510-USB plus JTAG Emulators 0511 SAU510-USB Iso Plus JTAG Emulator 0520 SAU510-USB Nano JTAG Emulator 1511 Onboard Emulator on SAUModule development kit 17c3 Singim International Corp. 17cc Native Instruments 041c Audio 2 DJ 041d Traktor Audio 2 0808 Maschine Controller 0815 Audio Kontrol 1 0839 Audio 4 DJ 0d8d Guitarrig Mobile 1001 Komplete Audio 6 1110 Maschine Mikro 1915 Session I/O 1940 RigKontrol3 1969 RigKontrol2 1978 Audio 8 DJ 2280 Medion MDPNA1500 in card reader mode 2305 Traktor Kontrol X1 4711 Kore Controller 4712 Kore Controller 2 baff Traktor Kontrol S4 17cf Hip Hing Cable & Plug Mfy. Ltd. 17d0 Sanford L.P. 17d3 Korea Techtron Co., Ltd. 17e9 DisplayLink 0051 USB VGA Adaptor 0198 DisplayLink 019e Overfly FY-1016A 028f HIS Multi-View II 030b HP T100 0377 Plugable UD-160-A (M) 0378 Plugable UGA-2K-A 0379 Plugable UGA-125 037a Plugable UGA-165 037b Plugable USB-VGA-165 037c Plugable DC-125 037d Plugable USB2-HDMI-165 410a HDMI Adapter 430a HP Port Replicator (Composite Device) 430f Kensington Dock (Composite Device) 4312 S2340T 436e Dell D3100 Docking Station ff10 I1659FWUX {AOC Powered Monitor] 17eb Cornice, Inc. 17ef Lenovo 1000 ThinkPad X6 UltraBase 1003 Integrated Smart Card Reader 1004 Integrated Webcam 1005 ThinkPad X200 Ultrabase (42X4963 ) 1008 Hub 100a ThinkPad Mini Dock Plus Series 3 100f ThinkPad Ultra Dock Hub 1010 ThinkPad Ultra Dock Hub 1020 ThinkPad Dock Hub 1021 ThinkPad Dock Hub [Cypress HX2VL] 3049 ThinkPad OneLink integrated audio 304b AX88179 Gigabit Ethernet [ThinkPad OneLink GigaLAN] 304f RTL8153 Gigabit Ethernet [ThinkPad OneLink Pro Dock] 3060 ThinkPad Dock 3062 ThinkPad Dock Ethernet [Realtek RTL8153B] 3063 ThinkPad Dock Audio 3066 ThinkPad Thunderbolt 3 Dock MCU 3069 ThinkPad TBT3 LAN 306a ThinkPad Thunderbolt 3 Dock Audio 3815 ChipsBnk 2GB USB Stick 4802 Vc0323+MI1310_SOC Camera 4807 UVC Camera 480c Integrated Webcam 480d Integrated Webcam [R5U877] 480e Integrated Webcam [R5U877] 480f Integrated Webcam [R5U877] 4810 Integrated Webcam [R5U877] 4811 Integrated Webcam [R5U877] 4812 Integrated Webcam [R5U877] 4813 Integrated Webcam [R5U877] 4814 Integrated Webcam [R5U877] 4815 Integrated Webcam [R5U877] 4816 Integrated Webcam 481c Integrated Webcam 481d Integrated Webcam 6004 ISD-V4 Tablet Pen 6007 Smartcard Keyboard 6009 ThinkPad Keyboard with TrackPoint 600e Optical Mouse 6014 Mini Wireless Keyboard N5901 6019 M-U0025-O Mouse 6022 Ultraslim Plus Wireless Keyboard and Mouse 6025 ThinkPad Travel Mouse 602d Black Silk Keyboard 6032 Wireless Dongle for Keyboard and Mouse 6044 ThinkPad Laser Mouse 6047 ThinkPad Compact Keyboard with TrackPoint 604b Precision Wireless Mouse 608d Optical Mouse 609b Professional Wireless Keyboard and Mouse Combo 609c Professional Wireless Keyboard 7203 Ethernet adapter [U2L 100P-Y1] 7205 Thinkpad LAN 7217 VGA adapter 7423 IdeaPad A1 Tablet 7435 A789 (Mass Storage mode, with debug) 743a A789 (Mass Storage mode) 7497 A789 (MTP mode) 7498 A789 (MTP mode, with debug) 749a A789 (PTP mode) 749b A789 (PTP mode, with debug) 7604 A760 (Mass Storage mode) 7605 A760 (Mass Storage mode, with debug) 760a A760 (MTP mode) 760b A760 (MTP mode, with debug) 760c A760 (PTP mode) 760d A760 (PTP mode, with debug) 76fc B8000-H (Yoga Tablet 10) (mass storage) 76fd B8000-H (Yoga Tablet 10) (debug , mass storage) 76fe B8000-H (Yoga Tablet 10) (MTP) 76ff B8000-H (Yoga Tablet 10) (debug , MTP) 7702 B8000-H (Yoga Tablet 10) (PTP) 7703 B8000-H (Yoga Tablet 10) (debug , PTP) 7704 B8000-H (Yoga Tablet 10) (USB tether) 7705 B8000-H (Yoga Tablet 10) (debug , USB tether) 7706 B8000-H (Yoga Tablet 10) (zerocd) 7707 B8000-H (Yoga Tablet 10) (debug , zerocd) 785f TAB 2 A7-10 Tablet b000 Virtual Keyboard and Mouse b001 Ethernet b003 Virtual Keyboard and Mouse / Mass Storage f003 MEDION LIFETAB X10605 MTP mode 17f4 WaveSense aaaa Jazz Blood Glucose Meter 17f5 K.K. Rocky 17f6 Unicomp, Inc. 0709 Model M Keyboard 0822 Ruffian 6 Keyboard v3 [Model M] 1809 Advantech 4604 USB-4604 4761 USB-4761 Portable Data Acquisition Module 1822 Twinhan 3201 VisionDTV USB-Ter/HAMA USB DVB-T device cold 3202 VisionDTV USB-Ter/HAMA USB DVB-T device warm 1831 Gwo Jinn Industries Co., Ltd. 1832 Huizhou Shenghua Industrial Co., Ltd. 183d VIVOphone 0010 VoiceKey 1843 Vaisala 1849 ASRock Incorporation 184f K2L GmbH 0012 MOCCA compact 1852 GYROCOM C&C Co., LTD 7022 Fiio E10 7921 Audiotrak ProDigy CUBE 7922 Audiotrak DR.DAC2 DX [GYROCOM C&C] 1854 Memory Devices Ltd. 185b Compro 3020 K100 Infrared Receiver 3082 K100 Infrared Receiver v2 d000 Compro Videomate DVB-U2000 - DVB-T USB cold d001 Compro Videomate DVB-U2000 - DVB-T USB warm 1861 Tech Technology Industrial Company 1862 Teridian Semiconductor Corp. 1870 Nexio Co., Ltd 0001 iNexio Touchscreen controller 1871 Aveo Technology Corp. 0101 UVC camera (Bresser microscope) 0141 Camera 0d01 USB2.0 Camera 1873 Navilock ee93 EasyLogger 187c Alienware Corporation 0511 AlienFX Mobile lighting 0513 Gaming Desktop [Aurora R4] 0550 LED controller 0600 Dual Compatible Game Pad 187f Siano Mobile Silicon 0010 Stallar Board 0100 Stallar Board 0200 Nova A 0201 Nova B 0202 Nice 0300 Vega 0301 VeNice 1892 Vast Technologies, Inc. 1894 Topseed 5632 Atek Tote Remote 5641 TSAM-004 Presentation Remote 1897 Evertop Wire Cable Co. 189f 3Shape A/S 0002 Legato2 3D Scanner 18a4 CSSN 0001 Snapshell IDR 18a5 Verbatim, Ltd 0214 Portable Hard Drive 0216 External Hard Drive 0218 External Hard Drive 0224 Store 'n' Go Micro Plus 0227 Pocket Hard Drive 022b Portable Hard Drive (Store'n'Go) 0237 Portable Harddrive 0243 Flash Drive (Store'n'Go) 0245 Store'n'Stay 0302 Flash Drive 0304 Store 'n' Go 0408 Store 'n' Go 4123 Store N Go 18b1 Petalynx 0037 Maxter Remote Control 18b4 e3C Technologies 1001 DUTV007 1002 EC168 (v5) based USB DVB-T receiver 1689 DUTV009 fffa EC168 (v2) based USB DVB-T receiver fffb EC168 (v3) based USB DVB-T receiver 18b6 Mikkon Technology Limited 18b7 Zotek Electronic Co., Ltd. 18c5 AMIT Technology, Inc. 0002 CG-WLUSB2GO 0008 CG-WLUSB2GNR Corega Wireless USB Adapter 0012 CG-WLUSB10 Corega Wireless USB Adapter 18cd Ecamm cafe Pico iMage 18d1 Google Inc. 0001 Onda V972 (storage access) 0003 Android-powered device using AllWinner Technology SoC 0006 Onda V972 MTP 0008 Onda V972 PTP (camera) 0d02 Celkon A88 2d00 Android Open Accessory device (accessory) 2d01 Android Open Accessory device (accessory + ADB) 2d02 Android Open Accessory device (audio) 2d03 Android Open Accessory device (audio + ADB) 2d04 Android Open Accessory device (accessory + audio) 2d05 Android Open Accessory device (accessory + audio + ADB) 4e11 Nexus One 4e12 Nexus One (debug) 4e13 Nexus One (tether) 4e20 Nexus S (fastboot) 4e21 Nexus S 4e22 Nexus S (debug) 4e24 Nexus S (tether) 4e30 Galaxy Nexus (fastboot) 4e40 Nexus 7 (fastboot) 4e41 Nexus 7 (MTP) 4e42 Nexus 7 (debug) 4e43 Nexus 7 (PTP) 4e44 Nexus 7 2012 (PTP) 4ee0 Nexus/Pixel Device (fastboot) 4ee1 Nexus/Pixel Device (MTP) 4ee2 Nexus/Pixel Device (MTP + debug) 4ee3 Nexus/Pixel Device (tether) 4ee4 Nexus/Pixel Device (tether+ debug) 4ee5 Nexus/Pixel Device (PTP) 4ee6 Nexus/Pixel Device (PTP + debug) 4ee7 Nexus/Pixel Device (charging + debug) 4ee8 Nexus/Pixel Device (MIDI) 4ee9 Nexus/Pixel Device (MIDI + debug) 5033 Pixel earbuds 7102 Toshiba Thrive tablet b004 Pandigital / B&N Novel 9" tablet d001 Nexus 4 (fastboot) d002 Nexus 4 (debug) d00d Xiaomi Mi/Redmi 2 (fastboot) d109 LG G2x MTP d10a LG G2x MTP (debug) 18d5 Starline International Group Limited 18d9 Kaba 01a0 B-Net 91 07 18dc LKC Technologies, Inc. 18dd Planon System Solutions Inc. 1000 DocuPen RC800 18e3 Fitipower Integrated Technology Inc 7102 Multi Card Reader (Internal) 9101 All-in-1 Card Reader 9102 Multi Card Reader 9512 Webcam 18e8 Qcom 6144 LR802UA 802.11b Wireless Adapter [ALi M4301AU] 6196 RT2573 6229 RT2573 6232 Wireless 802.11g 54Mbps Network Adapter [RTL8187] 18ea Matrox Graphics, Inc. 0002 DualHead2Go [Analog Edition] 0004 TripleHead2Go [Digital Edition] 18ec Arkmicro Technologies Inc. 3118 USB to IrDA adapter [ARK3116T] 3188 ARK3188 UVC Webcam 3299 Webcam Carrefour 3366 Bresser Biolux NV 5850 CVBS / S-Video Capture Device [UVC] 18ef ELV Elektronik AG e014 FS20PCE e015 FS20PCS e01a Bedien-Anzeige-Terminal 18f8 [Maxxter] 0f97 Optical Gaming Mouse [Xtrem] 0f99 Optical gaming mouse 1142 Optical gaming mouse 1486 X5s ZEUS Macro Pro Gaming Mouse 18fb Scriptel Corporation 01c0 ST1501-STN 01c1 ST1526-STN 01c2 ST1501-PYJ 01c3 ST1501B-PYJ 01c4 ST1501-PUN 01c5 ST1401-STN 01c7 ST1526-PYJ 01c8 ST1501-ECA 01c9 ST1476-STN 01cb ST1571-STN 0200 ST1500 0201 ST1550 0202 ST1525 0204 ST1400 0206 ST1475 0207 ST1570 18fd FineArch Inc. 1901 GE Healthcare 0015 Nemo Tracker 1908 GEMBIRD 0102 Digital Photo Frame 0226 MicroSD Card Reader/Writer 1315 Digital Photo Frame 1320 DM8261 Flashdisc 2070 Honk HK-5002 USB Speaker 2220 Buildwin Media-Player 2311 Generic UVC 1.00 camera [AppoTech AX2311] 190d Motorola GSG 1914 Alco Digital Devices Limited 1915 Nordic Semiconductor ASA 000c Wireless Desktop nRF24L01 CX-1766 0101 HP Prime Wireless Kit [FOK65AA] (Flash mode) 2233 Linksys WUSB11 v2.8 802.11b Adapter [Atmel AT76C505] 2234 Linksys WUSB54G v1 OEM 802.11g Adapter [Intersil ISL3886] 2235 Linksys WUSB54GP v1 OEM 802.11g Adapter [Intersil ISL3886] 2236 Linksys WUSB11 v3.0 802.11b Adapter [Intersil PRISM 3] 7777 Bitcraze Crazyradio (PA) dongle 191c Innovative Technology LTD 4104 Banknote validator NV-150 1923 FitLinxx 0002 Personal SyncPoint 1926 NextWindow 0003 1900 HID Touchscreen 0006 1950 HID Touchscreen 0064 1950 HID Touchscreen 0065 1950 HID Touchscreen 0066 1950 HID Touchscreen 0067 1950 HID Touchscreen 0068 1950 HID Touchscreen 0069 1950 HID Touchscreen 0071 1950 HID Touchscreen 0072 1950 HID Touchscreen 0073 1950 HID Touchscreen 0074 1950 HID Touchscreen 0075 1950 HID Touchscreen 0076 1950 HID Touchscreen 0077 1950 HID Touchscreen 0078 1950 HID Touchscreen 0079 1950 HID Touchscreen 007a 1950 HID Touchscreen 007e 1950 HID Touchscreen 007f 1950 HID Touchscreen 0080 1950 HID Touchscreen 0081 1950 HID Touchscreen 0082 1950 HID Touchscreen 0083 1950 HID Touchscreen 0084 1950 HID Touchscreen 0085 1950 HID Touchscreen 0086 1950 HID Touchscreen 0087 1950 HID Touchscreen 0dbf HID Touchscreen 0dc2 HID Touchscreen 1928 Proceq SA 0400 Equotip Piccolo 192f Avago Technologies, Pte. 0000 Mouse 0416 ADNS-5700 Optical Mouse Controller (3-button) 0616 ADNS-5700 Optical Mouse Controller (5-button) 0916 ADNS-2710 Optical Mouse Controller 1930 Shenzhen Xianhe Technology Co., Ltd. 1931 Ningbo Broad Telecommunication Co., Ltd. 1934 Feature Integration Technology Inc. (Fintek) 0602 F71610 or F71612 Consumer Infrared Receiver/Transceiver 0702 Integrated Consumer Infrared Receiver/Transceiver 5168 F71610A or F71612A Consumer Infrared Receiver/Transceiver 1935 Elektron Music Machines 000d Elektron Digitakt 1938 Meinberg Funkuhren GmbH & Co. KG 0501 TCR51USB IRIG Time Code Reader 0502 TCR600USB IRIG Time Code Reader 1941 Dream Link 8021 WH1080 Weather Station / USB Missile Launcher 1943 Sensoray Co., Inc. 2250 Model 2250 MPEG and JPEG Capture Card 2253 Model 2253 Audio/Video Codec Card 2255 Model 2255 4 Channel Capture Card 2257 Model 2257 4 Channel Capture Card 2263 Model 2263 UVC HD Audio/Video Codec Card a250 Model 2250 MPEG and JPEG Capture Card (cold) a253 Model 2253 Audio/Video Codec Card (cold) 1949 Lab126, Inc. 0002 Amazon Kindle 0004 Amazon Kindle 3/4/Paperwhite 0006 Amazon Kindle Fire 0008 Amazon Kindle Fire HD 8.9" 000a Amazon Kindle Fire 2nd generation (2012) 0331 Kindle Fire HD 8 (2018) 0417 Amazon Zukey; clone of Yubikey 4 OTP+U2F 0800 Fire Phone 194f PreSonus Audio Electronics, Inc. 0101 AudioBox 22 VSL 0102 AudioBox 44 VSL 0103 AudioBox 1818 VSL 0201 FaderPort 0301 AudioBox 1951 Hyperstone AG 1953 Ironkey Inc. 0202 S200 2GB Rev. 1 1954 Radiient Technologies 195d Itron Technology iONE 2030 Func KB-460 Gaming Keyboard 7002 Libra-Q11 IR remote 7006 Libra-Q26 / 1.0 Remote 7777 Scorpius wireless keyboard 7779 Scorpius-P20MT 1963 IK Multimedia 0005 iRig KEYS 0046 UNO Synth 1965 Uniden Corporation 0016 HomePatrol-1 0018 UBC125XLT 001a BCD436HP Scanner 1967 CASIO HITACHI Mobile Communications Co., Ltd. 196b Wispro Technology Inc. 1970 Dane-Elec Corp. USA 0000 Z Mate 16GB 1973 Spectralink Corporation 0002 Pivot recovery 0003 Pivot Media Transfer Protocol 0004 Pivot Media Transfer Protocol 1975 Dongguan Guneetal Wire & Cable Co., Ltd. 1976 Chipsbrand Microelectronics (HK) Co., Ltd. 1307 microSD Card Reader 6025 CBM2090 Flash Drive 1977 T-Logic 0111 TL203 MP3 Player and Voice Recorder 197d Leuze electronic 0222 BCL 508i 1980 Storage Appliance Corporation 0808 Clickfree C2 Slimline (527SE) 1989 Nuconn Technology Corp. 198f Beceem Communications Inc. 0210 BCS200 WiMAX Adapter 0220 BCSM250 WiMAX Adapter 1990 Acron Precision Industrial Co., Ltd. 1995 Trillium Technology Pty. Ltd. 3202 REC-ADPT-USB (recorder) 3203 REC-A-ADPT-USB (recorder) 1996 PixeLINK 3010 Camera Release 4 3011 OEM Camera 3012 e-ImageData Corp. ScanPro 1997 Shenzhen Riitek Technology Co., Ltd 0409 wireless mini keyboard with touchpad 2433 wireless mini keyboard with touchpad 199b MicroStrain, Inc. 3065 3DM-GX3-25 Orientation Sensor 199e The Imaging Source Europe GmbH 8101 DFx 21BU04 Camera 8457 DFK AFU130-L53 camera 199f Benica Corporation 19a5 HARRIS Corp. 0004 Remote NDIS Network Device 0012 RF-7800S Secure Personal Radio 0401 Mass Storage Device 0402 Falcon III RF-7800V family RNDIS 19a8 Biforst Technology Inc. 19ab Bodelin 1000 ProScope HR 19af S Life 6611 Celestia VoIP Phone 19b2 Batronix 0010 BX32 Batupo 0011 BX32P Barlino 0012 BX40 Bagero 0013 BX48 Batego 19b4 Celestron 0002 SkyScout Personal Planetarium 0101 Handheld Digital Microscope 44302 19b5 B & W Group 19b6 Infotech Logistic, LLC 19b9 Data Robotics 4b10 Drobo 8d20 Drobo Elite 19c2 Futuba 6a11 MDM166A Fluorescent Display 19ca Mindtribe 0001 Sandio 3D HID Mouse 19cf Parrot SA 0001 MiniKit Slim handsfree car kit in firmware update mode 19d1 BYD 19d2 ZTE WCDMA Technologies MSM 0001 CDMA Wireless Modem 0002 MF632/ONDA ET502HS/MT505UP 0007 TU25 WiMAX Adapter [Beceem BCS200] 0017 MF669 0031 MF110/MF627/MF636 0037 ONDA MC503HSA 0039 MF100 0063 K3565-Z HSDPA 0064 MF627 AU 0083 MF190 0103 MF112 0104 K4505-Z 0117 MF667 0146 MF 195E (HSPA+ Modem) 0167 MF820 4G LTE 0172 AX226 WIMAX MODEM (After Modeswitch) 0325 LTE4G O2 ZTE MF821D LTE/UMTS/GSM Modem/Networkcard 0326 LTE4G O2 ZTE MF821D LTE/UMTS/GSM Modem/Networkcard 0501 Lever Cell Phone Model Z936L 1001 K3805-Z vodafone WCDMA/GSM Modem - storage mode (made by ZTE) 1002 K3805-Z vodafone WCDMA/GSM Modem/Networkcard (made by ZTE) 1008 K3570-Z 1010 K3571-Z 1017 K5006-Z vodafone LTE/UMTS/GSM Modem/Networkcard 1018 K5006-Z vodafone LTE/UMTS/GSM Modem/Networkcard 1203 MF691 [ T-Mobile webConnect Rocket 2.0] 1217 MF652 1218 MF652 1270 MF667 2000 MF627/MF628/MF628+/MF636+ HSDPA/HSUPA fff2 Gobi Wireless Modem (QDL mode) fff3 Gobi Wireless Modem 19db KFI Printers 02f1 NAUT324C 19e1 WeiDuan Electronic Accessory (S.Z.) Co., Ltd. 19e8 Industrial Technology Research Institute 19ef Pak Heng Technology (Shenzhen) Co., Ltd. 19f7 RODE Microphones 0001 Podcaster 19fa Gampaq Co.Ltd 0607 GAME CONTROLLER 0703 Steering Wheel 19fd MTI Instruments Inc. 19ff Dynex 0102 1.3MP Webcam 0201 Rocketfish Wireless 2.4G Laser Mouse 0220 RF-HDWEBLT RocketFish HD WebCam 0238 DX-WRM1401 Mouse 0239 Bluetooth 4.0 Adapter [Broadcom, 1.12, BCM20702A0] 1a08 Bellwood International, Inc. 1a0a USB-IF non-workshop badd USB OTG Compliance test device 1a12 KES Co., Ltd. 1a1d Veho 0407 Mimi WiFi speakers 1a25 Amphenol East Asia Ltd. 1a2a Seagate Branded Solutions 1a2c China Resource Semico Co., Ltd 0021 Keyboard 0024 Multimedia Keyboard 2124 Keyboard 2d23 Keyboard 427c Backlit Keyboard [Cougar Vantar] 1a32 Quanta Microsystems, Inc. 0304 802.11n Wireless LAN Card 1a34 ACRUX 0802 Gamepad 1a36 Biwin Technology Ltd. 1a40 Terminus Technology Inc. 0101 Hub 0201 FE 2.1 7-port Hub 1a41 Action Electronics Co., Ltd. 1a44 VASCO Data Security International 0001 Digipass 905 SmartCard Reader 1a4a Silicon Image 1a4b SafeBoot International B.V. 1a5a Tandberg Data 1a61 Abbott Diabetes Care 3410 CoPilot System Cable 3650 FreeStyle Libre 3850 FreeStyle Optium/Precision Neo 3950 FreeStyle Libre 2 1a64 Mastervolt 0000 MasterBus Link 1a6a Spansion Inc. 1a6d SamYoung Electronics Co., Ltd 1a6e Global Unichip Corp. 1a6f Sagem Orga GmbH 1a72 Physik Instrumente 1008 E-861 PiezoWalk NEXACT Controller 1a79 Bayer Health Care LLC 6002 Contour 6210 Contour Next Link 2.4 glucometer 6300 Contour next link 7410 Contour Next 7800 Contour Plus One 1a7b Lumberg Connect GmbH & Co. KG 1a7c Evoluent 0068 VerticalMouse 3 0168 VerticalMouse 3 Wireless 0191 VerticalMouse 4 0195 VerticalMouse C Wireless 1a7e Meltec Systementwicklung 1001 UFT75, UT150, UT60 1003 Thermostick 1a81 Holtek Semiconductor, Inc. 1004 Wireless Dongle 2.4 GHZ HT82D40REW 1701 Wireless dongle 2004 Keyboard 2203 Laser Gaming mouse 2204 Optical Mouse 2205 Laser Mouse 4001 Keyboard 1a86 QinHeng Electronics 5512 CH341 in EPP/MEM/I2C mode, EPP/I2C adapter 5523 CH341 in serial mode, usb to serial port converter 5584 CH341 in parallel mode, usb to printer port converter 7522 CH340 serial converter 7523 CH340 serial converter 752d CH345 MIDI adapter 7584 CH340S e008 HID-based serial adapter 1a89 Dynalith Systems Co., Ltd. 1a8b SGS Taiwan Ltd. 1a8d BandRich, Inc. 1002 BandLuxe 3.5G HSDPA Adapter 1009 BandLuxe 3.5G HSPA Adapter 100d 4G LTE adapter 1a98 Leica Camera AG 1aa4 Data Drive Thru, Inc. 1aa5 UBeacon Technologies, Inc. 1aa6 eFortune Technology Corp. 1aab Silvercreations Software AG 7736 sceye (Gen 2) 7737 sceye (Gen 3) 7738 sceye (Gen 4, 3 Mpix) 7750 sceyeS (Gen 5, 5 MPix) 1aad KeeTouch 0001 Touchscreen 1ab1 Rigol Technologies 04b0 DS6000 SERIES 04be DS4000 SERIES 04ce DS1xx4Z/MSO1xxZ series 0588 DS1000 SERIES 1ab2 Allied Vision 0001 Vision device 1acb Salcomp Plc 1acc Midiplus Co, Ltd. 0103 AudioLink plus 4x4 2.9.28 1ad1 Desay Wire Co., Ltd. 1ad4 APS 0002 KM290-HRS 1adb Schweitzer Engineering Laboratories, Inc 0001 C662 Serial Cable 0003 CDC Ethernet Gadget 1ae4 ic-design Reinhard Gottinger GmbH 1ae7 X-TENSIONS 0381 VS-DVB-T 380U (af9015 based) 0525 X-Tensions ISDN TA XC-525 [HFC-S USB] 2001 SpeedLink Snappy Mic webcam (SL-6825-SBK) 9003 SpeedLink Vicious And Devine Laplace webcam, white (VD-1504-SWT) 9004 SpeedLink Vicious And Devine Laplace webcam, black (VD-1504-SBK) 1aed High Top Precision Electronic Co., Ltd. 1aef Conntech Electronic (Suzhou) Corporation 1af1 Connect One Ltd. 1af3 Kingsis Technology Corporation 0001 ZOWIE Gaming mouse 1afe A. Eberle GmbH & Co. KG 0001 PQ Box 100 1b04 Meilhaus Electronic GmbH 0630 ME-630 0940 ME-94 0950 ME-95 0960 ME-96 1000 ME-1000 100a ME-1000 100b ME-1000 1400 ME-1400 140a ME-1400A 140b ME-1400B 140c ME-1400C 140d ME-1400D 140e ME-1400E 14ea ME-1400EA 14eb ME-1400EB 1604 ME-1600/4U 1608 ME-1600/8U 160c ME-1600/12U 160f ME-1600/16U 168f ME-1600/16U8I 4610 ME-4610 4650 ME-4650 4660 ME-4660 4661 ME-4660I 4662 ME-4660 4663 ME-4660I 4670 ME-4670 4671 ME-4670I 4672 ME-4670S 4673 ME-4670IS 4680 ME-4680 4681 ME-4680I 4682 ME-4680S 4683 ME-4680IS 6004 ME-6000/4 6008 ME-6000/8 600f ME-6000/16 6014 ME-6000I/4 6018 ME-6000I/8 601f ME-6000I/16 6034 ME-6000ISLE/4 6038 ME-6000ISLE/8 603f ME-6000ISLE/16 6044 ME-6000/4/DIO 6048 ME-6000/8/DIO 604f ME-6000/16/DIO 6054 ME-6000I/4/DIO 6058 ME-6000I/8/DIO 605f ME-6000I/16/DIO 6074 ME-6000ISLE/4/DIO 6078 ME-6000ISLE/8/DIO 607f ME-6000ISLE/16/DIO 6104 ME-6100/4 6108 ME-6100/8 610f ME-6100/16 6114 ME-6100I/4 6118 ME-6100I/8 611f ME-6100I/16 6134 ME-6100ISLE/4 6138 ME-6100ISLE/8 613f ME-6100ISLE/16 6144 ME-6100/4/DIO 6148 ME-6100/8/DIO 614f ME-6100/16/DIO 6154 ME-6100I/4/DIO 6158 ME-6100I/8/DIO 615f ME-6100I/16/DIO 6174 ME-6100ISLE/4/DIO 6178 ME-6100ISLE/8/DIO 617f ME-6100ISLE/16/DIO 6259 ME-6200I/9/DIO 6359 ME-6300I/9/DIO 810a ME-8100A 810b ME-8100B 820a ME-8200A 820b ME-8200B 1b0e BLUTRONICS S.r.l. 1078 BLUDRIVE II CCID 1079 BLUDRIVE II CCID 1080 WRITECHIP II CCID 1b12 Eventide 0011 ModFactor 1b1c Corsair 0890 Flash Padlock 0a00 SP2500 Speakers 0a60 Vengeance K60 Keyboard 0c04 Link Cooling Node 0c06 RM-Series C-Link Adapter 0c0a Hydro Series H115i Liquid CPU Cooler 0c0b Lighting Node Pro 0c0c Lighting Node Loader 0c22 iCUE H150i RGB PRO XT Liquid CPU Cooler 1a01 Flash Voyager GT 1a03 Voyager 3.0 1a09 Voyager GT 3.0 1a0a Survivor Stealth Flash Drive 1a0b Flash Voyager LS 1a0e Voyager GTX 1a14 Voyager Vega 1a15 Voyager Slider Flash Drive 1a90 Flash Voyager GT 1ab1 Voyager 1b04 Raptor K50 Keyboard 1b07 Vengeance K65 Gaming Keyboard 1b08 Vengeance K95 Keyboard 1b09 Vengeance K70R keyboard 1b11 K95 RGB Mechanical Gaming Keyboard 1b13 Vengeance K70RGB keyboard 1b20 STRAFE RGB Gaming Keyboard 1b2d K95 RGB Platinum Keyboard [RGP0056] 1b2e Corsair Corsair Gaming M65 Pro RGB Mouse 1b2f Sabre RGB [CH-9303011-XX] 1b3d Corsair Corsair Gaming K55 RGB Keyboard 1b5e Harpoon Wireless Mouse 1b65 Harpoon Wireless Dongle 1c00 Controller for Corsair Link 1c02 AX1500i Power Supply 1c05 HX750i Power Supply 1c07 HX1000i Power Supply 1c08 HX1200i Power Supply 1c0b RM750i Power Supply 1c0c RM850i Power Supply 1c1a Corsair CORSAIR Lighting Node CORE 1b1e General Imaging / General Electric 1003 A1250 1b1f eQ-3 Entwicklung GmbH c00f HM-CFG-USB/HM-CFG-USB-2 [HomeMatic Configuration adapter] c020 HmIP-RFUSB 1b20 MStar Semiconductor, Inc. 1b22 WiLinx Corp. 1b24 Telegent Systems, Inc. 4001 TLG2300 Hybrid TV Device 1b26 Cellex Power Products, Inc. 1b27 Current Electronics Inc. 1b28 NAVIsis Inc. 1b32 Ugobe Life Forms, Inc. 0064 Pleo robotic dinosaur 1b36 ViXS Systems, Inc. 1b3b iPassion Technology Inc. 2933 PC Camera/Webcam controller 2935 PC Camera/Webcam controller 2936 PC Camera/Webcam controller 2937 PC Camera/Webcam controller 2938 PC Camera/Webcam controller 2939 PC Camera/Webcam controller 2950 PC Camera/Webcam controller 2951 PC Camera/Webcam controller 2952 PC Camera/Webcam controller 2953 PC Camera/Webcam controller 2955 PC Camera/Webcam controller 2956 PC Camera/Webcam controller 2957 PC Camera/Webcam controller 2958 PC Camera/Webcam controller 2959 PC Camera/Webcam controller 2960 PC Camera/Webcam controller 2961 PC Camera/Webcam controller 2962 PC Camera/Webcam controller 2963 PC Camera/Webcam controller 2965 PC Camera/Webcam controller 2966 PC Camera/Webcam controller 2967 PC Camera/Webcam controller 2968 PC Camera/Webcam controller 2969 PC Camera/Webcam controller 1b3f Generalplus Technology Inc. 0c52 808 Camera #9 (mass storage mode) 2002 808 Camera #9 (web-cam mode) 2003 GPD6000 [Digital MP3 Player] 1b47 Energizer Holdings, Inc. 0001 CHUSB Duo Charger (NiMH AA/AAA USB smart charger) 1b48 Plastron Precision Co., Ltd. 1b52 ARH Inc. 2101 FXMC Neural Network Controller 2102 FXMC Neural Network Controller V2 2103 FXMC Neural Network Controller V3 4101 Passport Reader CLR device 4201 Passport Reader PRM device 4202 Passport Reader PRM extension device 4203 Passport Reader PRM DSP device 4204 Passport Reader PRMC device 4205 Passport Reader CSHR device 4206 Passport Reader PRMC V2 device 4301 Passport Reader MRZ device 4302 Passport Reader MRZ DSP device 4303 Passport Reader CSLR device 4401 Card Reader 4501 Passport Reader RFID device 4502 Passport Reader RFID AIG device 6101 Neural Network Controller 6202 Fingerprint Reader device 6203 Fingerprint Scanner device 8101 Camera V1 8102 Recovery / Camera V2 8103 Camera V3 1b59 K.S. Terminals Inc. 1b5a Chao Zhou Kai Yuan Electric Co., Ltd. 1b65 The Hong Kong Standards and Testing Centre Ltd. 1b71 Fushicai 0050 Encore ENUTV-4 Analog TV Tuner 3002 USBTV007 Video Grabber [EasyCAP] 1b72 ATERGI TECHNOLOGY CO., LTD. 1b73 Fresco Logic 1000 xHC1 Controller 1b75 Ovislink Corp. 3072 AirLive WN-360USB adapter 8171 WN-370USB 802.11bgn Wireless Adapter [Realtek RTL8188SU] 8187 AirLive WL-1600USB 802.11g Adapter [Realtek RTL8187L] 9170 AirLive X.USB 802.11abgn [Atheros AR9170+AR9104] a200 AirLive WN-200USB wireless 11b/g/n dongle 1b76 Legend Silicon Corp. 1b80 Afatech c810 MC810 [af9015] d393 DVB-T receiver [RTL2832U] d396 UB396-T [RTL2832U] d397 DVB-T receiver [RTL2832U] d398 DVB-T receiver [RTL2832U] d700 FM Radio SnapMusic Mobile 700 (FM700) e297 Conceptronic DVB-T CTVDIGRCU V3.0 e302 CVBS / S-Video Capture Device [Pinnacle Dazzle / UB315-E] e34c UB435-Q ATSC TV Stick e383 DVB-T UB383-T [af9015] e385 DVB-T UB385-T [af9015] e386 DVB-T UB385-T [af9015] e399 DVB-T KWorld PlusTV 399U [af9015] e39a DVB-T395U [af9015] e39b DVB-T395U [af9015] e401 Sveon STV22 DVB-T [af9015] e409 IT9137FN Dual DVB-T [KWorld UB499-2T] 1b86 Dongguan Guanshang Electronics Co., Ltd. 1b88 ShenMing Electron (Dong Guan) Co., Ltd. 1b8c Altium Limited 1b8d e-MOVE Technology Co., Ltd. 1b8e Amlogic, Inc. 1b8f MA LABS, Inc. 1b96 N-Trig 0001 Duosense Transparent Electromagnetic Digitizer 1b98 YMax Communications Corp. 1b99 Shenzhen Yuanchuan Electronic 1ba1 JINQ CHERN ENTERPRISE CO., LTD. 1ba2 Lite Metals & Plastic (Shenzhen) Co., Ltd. 1ba4 Ember Corporation 0001 InSight USB Link 0002 EM358 Virtual COM Port 1ba6 Abilis Systems 1ba8 China Telecommunication Technology Labs 1bad Harmonix Music 0002 Rock Band Guitar for Xbox 360 0003 Rock Band Drum Kit for Xbox 360 0130 Ion Drum Rocker for Xbox 360 028e Controller 3330 Rock Band 3 Keyboard wii interface f016 Controller f018 Street Fighter IV SE FightStick for Xbox 360 f019 BrawlStick for Xbox 360 f021 Ghost Recon Future Soldier Gamepad for Xbox 360 f023 MLG Pro Circuit Controller for Xbox 360 f025 Call of Duty Controller for Xbox 360 f027 FPS Pro Controller for Xbox 360 f028 Street Fighter IV FightPad for Xbox 360 f02e FightPad f030 MC2 MicroCON Racing Wheel for Xbox 360 f036 MicroCON Gamepad Pro for Xbox 360 f038 Street Fighter IV FightStick TE for Xbox 360 f039 Marvel VS Capcom 2 Tournament Stick for Xbox 360 f03a Street Fighter X Tekken FightStick Pro for Xbox 360 f03d Street Fighter IV Arcade Stick TE for Xbox 360 f03e MLG Arcade FightStick TE for Xbox 360 f03f Soulcalibur FightStick for Xbox 360 f042 Arcade FightStick TE S+ for Xbox 360 f080 FightStick TE2 for Xbox 360 f501 Horipad EX2 Turbo for Xbox 360 f502 Real Arcade Pro.VX SA for Xbox 360 f503 Fighting Stick VX for Xbox 360 f504 Real Arcade Pro.EX f505 Fighting Stick EX2B for Xbox 360 f506 Real Arcade Pro.EX Premium VLX for Xbox 360 f900 Controller f901 GameStop Controller f903 Tron Controller for Xbox 360 f904 PDP Versus Fighting Pad for Xbox 360 f906 Mortal Kombat FightStick for Xbox 360 f907 Afterglow Gamepad fa01 Gamepad fd00 Razer Onza Tournament Edition fd01 Razer Onza Classic Edition 1bae Vuzix Corporation 0002 VR920 Immersive Eyewear 1bbb T & A Mobile Phones 0003 Alcatel one touch 4030D modem connection 0017 HSPA Data Card 007a Alcatel OneTouch (firmware upgrade mode) 011e Alcatel One Touch L100V / Telekom Speedstick LTE II 0169 Alcatel ONE TOUCH Fierce 0195 Alcatel OneTouch L850V / Telekom Speedstick LTE a00e Vodafone Smart Tab 4G f000 Alcatel OneTouch (mass storage mode) f017 Alcatel One Touch L100V / Telekom Speedstick LTE II 1bbd Videology Imaging Solutions, Inc. 0060 1.3MP Mono Camera 0066 1.3MP Mono Camera 0067 1.3MP Mono Camera 1bc0 Beijing Senseshield Technology Co.,Ltd. 0013 Elitee-e 0014 Elite4 0020 iToken 0021 Mikey 0051 Elite5 0055 Elite5 v3.x 485d EliteIV 1bc4 Ford Motor Co. 1bc5 AVIXE Technology (China) Ltd. 1bc7 Telit Wireless Solutions 0020 HE863 0021 HE910 0022 GE910-QUAD 0023 HE910-D ECM 0032 LE910-EU V2 1003 UC864-E 1004 UC864-G 1005 CC864-DUAL 1006 CC864-SINGLE 1010 DE910-DUAL 1011 CE910-DUAL 1012 UE910 V2 1101 ME910C1 110a ME310 1200 LE920 (old firmware) 1201 LE910 / LE920 1bce Contac Cable Industrial Limited 1bcf Sunplus Innovation Technology Inc. 0005 Optical Mouse 0007 Optical Mouse 053a Targa Silvercrest OMC807-C optische Funkmaus 05c5 SPRF2413A [2.4GHz Wireless Keyboard/Mouse Receiver] 05cf Micro keyboard & mouse receiver 08a0 Gaming mouse [Philips SPK9304] 0c31 SPIF30x Serial-ATA bridge 2281 SPCA2281 Web Camera 2880 Dell HD Webcam 2883 Asus Webcam 2885 ASUS Webcam 2888 HP Universal Camera 2895 Dell Integrated Webcam 28a2 Dell Integrated Webcam 28a6 DELL XPS Integrated Webcam 28ae Laptop Integrated Webcam HD 28bd Dell Integrated HD Webcam 2985 Laptop Integrated Webcam HD 2b83 Laptop Integrated Webcam FHD 2b91 Dell E5570 integrated webcam 2b97 Laptop Integrated Webcam FHD 2c6e Laptop Integrated WebCam HD 1bd0 Hangzhou Riyue Electronic Co., Ltd. 1bd5 BG Systems, Inc. 1bda University Of Southampton 0010 Power Board v4 Rev B 0011 Student Robotics SBv4B 1bde P-TWO INDUSTRIES, INC. 1bef Shenzhen Tongyuan Network-Communication Cables Co., Ltd 1bf0 RealVision Inc. 1bf5 Extranet Systems Inc. 1bf6 Orient Semiconductor Electronics, Ltd. 1bfd TouchPack 1268 Touch Screen 1368 Touch Screen 1568 Capacitive Touch Screen 1668 IR Touch Screen 1688 Resistive Touch Screen 2968 Touch Screen 5968 Touch Screen 6968 Touch Screen 1c02 Kreton Corporation 1c04 QNAP System Inc. 2074 ASM1074 High-Speed hub 3074 ASM1074 SuperSpeed hub 1c05 Shenxhen Stager Electric ea75 G540 Programmer 1c0c Ionics EMS, Inc. 0102 Plug Computer 1c0d Relm Wireless 1c10 Lanterra Industrial Co., Ltd. 1c11 Input Club Inc. b04d ErgoDox Infinity 1c13 ALECTRONIC LIMITED 1c1a Datel Electronics Ltd. 0100 Action Replay DS "3DS/DSi/DS/Lite Compatible" 1c1b Volkswagen of America, Inc. 1c1f Goldvish S.A. 1c20 Fuji Electric Device Technology Co., Ltd. 1c21 ADDMM LLC 1c22 ZHONGSHAN CHIANG YU ELECTRIC CO., LTD. 1c26 Shanghai Haiying Electronics Co., Ltd. 1c27 HuiYang D & S Cable Co., Ltd. 1c28 PMD Technologies c003 CamCube c004 CamBoard c005 ConceptCam c006 CamBoard 22 c007 CamBoard nano c008 CamBoard mod c009 CamBoard plus c00a DigiCam c00d CamBoard pico LDD c00f CamBoard pico 1c29 Elster GmbH 0001 ExMFE5 Simulator 10fc enCore device 1c31 LS Cable Ltd. 1c34 SpringCard 7241 Prox'N'Roll RFID Scanner 1c37 Authorizer Technologies, Inc. 6190 U2F Fido-compliant cryptotoken 1c3d NONIN MEDICAL INC. 1c3e Wep Peripherals 1c40 EZPrototypes 0533 TiltStick 0534 i2c-tiny-usb interface 0535 glcd2usb interface 0536 Swiss ColorPAL 0537 MIST Board 1c49 Cherng Weei Technology Corp. 1c4b Geratherm Medical AG 026f Spirostik 1c4f SiGma Micro 0002 Keyboard TRACER Gamma Ivory 0003 HID controller 000e Genius KB-120 Keyboard 0026 Keyboard 0032 Optical Mouse with Scroll Wheel 0034 XM102K Optical Wheel Mouse 0063 Touchpad (integrated in detachable keyboard of Chuwi SurBook) 0065 Optical Wheel Mouse [Rapoo N1130] 3000 Micro USB Web Camera 3002 WebCam SiGma Micro 1c57 Zalman Tech Co., Ltd. 1e45 FPSGUN FG1000 Mouse 1c6b Philips & Lite-ON Digital Solutions Corporation a220 DVD Writer Slimtype eSAU108 a222 DVD Writer Slimtype eTAU108 a223 DVD Writer Slimtype eUAU108 1c6c Skydigital Inc. 1c71 Humanware Inc c004 Braille Note Apex (braille terminal mode) 1c73 AMT 861f Anysee E30 USB 2.0 DVB-T Receiver 1c75 Arturia 0288 KeyStep 1c77 Kaetat Industrial Co., Ltd. 1c78 Datascope Corp. 1c79 Unigen Corporation 1c7a LighTuning Technology Inc. 0577 Fingerprint Sensor 0603 ES603 Swipe Fingerprint Sensor 0801 Fingerprint Reader 1c7b LUXSHARE PRECISION INDUSTRY (SHENZHEN) CO., LTD. 1c82 Atracsys 0200 spryTrac 1c83 Schomaecker GmbH 0001 RS150 V2 0002 RFID card reader 0003 Communicator 0005 Mobile RFID Reader 1c87 2N TELEKOMUNIKACE a.s. 1c88 Somagic, Inc. 0007 SMI Grabber (EasyCAP DC60+ clone) (no firmware) [SMI-2021CBE] 003c SMI Grabber (EasyCAP DC60+ clone) [SMI-2021CBE] 1c89 HONGKONG WEIDIDA ELECTRON LIMITED 1c8e ASTRON INTERNATIONAL CORP. 1c98 ALPINE ELECTRONICS, INC. 1c9e OMEGA TECHNOLOGY 6061 WL-72B 3.5G MODEM 1ca0 ACCARIO Inc. 1ca1 Symwave 18ab SATA bridge 1cac Kinstone a332 C8 Webcam b288 C18 Webcam 1cb3 Aces Electronic Co., Ltd. 1cb4 OPEX CORPORATION 1cb6 IdeaCom Technology Inc. 6681 IDC6681 1cbe Luminary Micro Inc. 0002 CDC serial port [TivaWare] 00fd In-Circuit Debug Interface 00ff Stellaris ROM DFU Bootloader 0166 CANAL USB2CAN 0240 McGill Robotics TM4C Microcontroller 1cbf FORTAT SKYMARK INDUSTRIAL COMPANY 1cc0 PlantSense 1cca NextWave Broadband Inc. 1ccd Bodatong Technology (Shenzhen) Co., Ltd. 1cd4 adp corporation 1cd5 Firecomms Ltd. 1cd6 Antonio Precise Products Manufactory Ltd. 1cde Telecommunications Technology Association (TTA) 1cdf WonTen Technology Co., Ltd. 1ce0 EDIMAX TECHNOLOGY CO., LTD. 1ce1 Amphenol KAE 1cf1 Dresden Elektronik 0001 Sensor Terminal Board 0004 Wireless Handheld Terminal 0017 deRFusbSniffer 2.4 GHz 0018 deRFusb24E001 0019 deRFusb14E001 001a deRFusb23E00 001b deRFusb13E00 001c deRFnode 001d deRFnode / gateway 0022 deUSB level shifter 0023 deRFusbSniffer Sub-GHz 0025 deRFusb23E06 0027 deRFusb13E06 0030 ZigBee gateway [ConBee II] 1cfc ANDES TECHNOLOGY CORPORATION 1cfd Flextronics Digital Design Japan, LTD. 1d03 iCON 0028 iCreativ MIDI Controller 1d07 Solid-Motion 1d08 NINGBO HENTEK DRAGON ELECTRONICS CO., LTD. 1d09 TechFaith Wireless Technology Limited 1026 HSUPA Modem FLYING-LARK46-VER0.07 [Flying Angel] 1d0a Johnson Controls, Inc. The Automotive Business Unit 1d0b HAN HUA CABLE & WIRE TECHNOLOGY (J.X.) CO., LTD. 1d0d TDKMedia 0214 Trans-It Drive 1d0f Sonix Technology Co., Ltd. 1d14 ALPHA-SAT TECHNOLOGY LIMITED 1d17 C-Thru Music Ltd. 0001 AXiS-49 Harmonic Table MIDI Keyboard 1d19 Dexatek Technology Ltd. 1101 DK DVB-T Dongle 1102 DK mini DVB-T Dongle 1103 DK 5217 DVB-T Dongle 1104 MSI DigiVox Micro HD 6105 Video grabber 610a Video grabber 8202 DK DVBC/T DONGLE 1d1f Diostech Co., Ltd. 1d20 SAMTACK INC. 1d27 ASUS 0601 Xtion 1d34 Dream Cheeky 0001 Fidget 0002 Fidget (Basketball) 0003 Fidget (Golf Ball) 0004 Webmail Notifier 0008 button 000a Mailbox Friends Alert 000d Big Red Button 0013 LED Message Board 0020 Stress Ball 1d45 Touch 1d45 Foxlink Optical touch sensor 459d BenQ F5 465c Harrier Mini by EE 1d4d PEGATRON CORPORATION 0002 Ralink RT2770/2720 802.11b/g/n Wireless LAN Mini-USB Device 000c Ralink RT3070 802.11b/g/n Wireless Lan USB Device 000e Ralink RT3070 802.11b/g/n Wireless Lan USB Device 1d50 OpenMoko, Inc. 1db5 IDBG (DFU) 1db6 IDBG 5117 Neo1973/FreeRunner kernel usbnet (g_ether, CDC Ethernet) mode 5118 Neo1973/FreeRunner Debug board (V2+) 5119 Neo1973/FreeRunner u-boot cdc_acm serial port 511a HXD8 u-boot usbtty CDC ACM Mode 511b SMDK2440 u-boot usbtty CDC ACM mode 511c SMDK2443 u-boot usbtty CDC ACM mode 511d QT2410 u-boot usbtty CDC ACM mode 5120 Neo1973/FreeRunner u-boot usbtty generic serial 5121 Neo1973/FreeRunner kernel mass storage (g_storage) mode 5122 Neo1973/FreeRunner kernel cdc_ether USB network 5123 Neo1973/FreeRunner internal USB CSR4 module 5124 Neo1973/FreeRunner Bluetooth Device ID service 5300 Rockbox 530e iriver H10 20GB (Rockbox) 530f iriver H10 5/6GB (Rockbox) 5314 Apple iPod Color/Photo (Rockbox) 5315 Apple iPod Nano 1g (Rockbox) 5316 Apple iPod Video (Rockbox) 5318 Apple iPod 4g Grayscale (Rockbox) 5319 Apple iPod Mini 1g (Rockbox) 531a Apple iPod Mini 2g (Rockbox) 531c Apple iPod Nano 2g (Rockbox) 531d Apple iPod Classic/6G (Rockbox) 5321 Cowon D2 (Rockbox) 5329 Toshiba Gigabeat S (Rockbox) 5332 Sandisk Sansa e200 series (Rockbox) 5334 Sandisk Sansa c200 series (Rockbox) 5337 Sandisk Sansa Clip (Rockbox) 5338 Sandisk Sansa e200v2 series (Rockbox) 5339 Sandisk Sansa m200 v4 series (Rockbox) 533a Sandisk Sansa Fuze (Rockbox) 533b Sandisk Sansa c200v2 series (Rockbox) 533c Sandisk Sansa Clipv2 (Rockbox) 533e Sandisk Sansa Clip+ (Rockbox) 533f Sandisk Sansa Fuze v2 (Rockbox) 5340 Sandisk Sansa Fuze+ (Rockbox) 5341 Sandisk Sansa Zip (Rockbox) 5342 Sandisk Sansa Connect (Rockbox) 5346 Olympus M:Robe 500i (Rockbox) 5347 Olympus m:robe MR-100 (Rockbox) 5359 Creative Zen X-Fi Style (Rockbox) 535d Creative Zen X-Fi2 (Rockbox) 535e Creative Zen X-Fi3 (Rockbox) 5360 Creative Zen X-Fi (Rockbox) 5361 Creative ZEN Mozaic (Rockbox) 5362 Creative Zen (Rockbox) 5364 Philips GoGear SA9200 (Rockbox) 5365 Philips GoGear HDD16x0 (Rockbox) 5366 Philips GoGear HDD63x0 (Rockbox) 5378 Onda VX747 (Rockbox) 5379 Onda VX767 (Rockbox) 537b Onda VX777 (Rockbox) 538c Samsung YH-820 (Rockbox) 538d Samsung YH-920 (Rockbox) 538e Samsung YH-925 (Rockbox) 53a0 Packard Bell Vibe 500 (Rockbox) 53b4 Rockchip 27xx generic (Rockbox) 53be HiFiMAN HM-60x (Rockbox) 53bf HiFiMAN HM-801 (Rockbox) 53d2 HiFi E.T. MA9 (Rockbox) 53d3 HiFi E.T. MA9C (Rockbox) 53d4 HiFi E.T. MA8 (Rockbox) 53d5 HiFi E.T. MA8C (Rockbox) 53dc Sony NWZ-E370/E380 series (Rockbox) 53dd Sony NWZ-E360 series (Rockbox) 53e6 IHIFI 760 (Rockbox) 53e7 IHIFI 960 (Rockbox) 53ff Generic Rockbox device 6000 Ubertooth Zero 6001 Ubertooth Zero (DFU) 6002 Ubertooth One 6003 Ubertooth One (DFU) 6004 LeoLipo 6005 LED Flower S 6006 LED Cube 6007 LED Flower 6008 Kisbee 802.15.4 transceiver 6009 Adjacent Reality Tracker 600a AVR Programmer 600b Hypna Go Go 600c CatNip LPC1343 development board 600d Enhanced RoboBrrd Brain board 600e OpenRISC Ordb2a-ep4ce22 development board 600f Paparazzi Lisa/M (DFU) 6010 OpenPipe: OSHW Bagpipes MIDI controller 6011 LeoLipo (DFU) 6012 Universal C64 Cartridge 6013 DiscFerret magnetic disc analyser (bootloader) 6014 DiscFerret magnetic disc analyser 6015 Smoothieboard 6016 phInterface 6017 Black Magic Debug Probe (DFU) 6018 Black Magic Debug Probe (Application) 6019 4pi 5 axis motion controller 601a Paparazzi Lisa/M 601b IST-2 chronograph for bullet speeds 601c EPOSMote II 601d UDS18B20 temperature sensor 601e 5x5 STM32 prototyping board 601f uNSF 6020 Toad3 6021 AlphaSphere 6022 LightPack 6023 Pixelkit 6024 Illucia 6025 Keyglove (HID) 6026 Keyglove (Serial) 6027 Key64 Keyboard 6028 Teensy 2.0 Development Board [ErgoDox Keyboard] 6029 Marlin 2.0 (Serial) 602a Marlin 2.0 (Mass Storage) 602b FPGALink 602c 5nes5snes (5x8) 602d 5nes5snes (4x12) 602e Flexibity 602f K-copter 6030 USB-oscope 6031 Handmade GSM GPS tracker 6032 ncrmnt.org uISP 6033 frobiac / adnw keyboard 6034 Tiflomag Ergo 2 6035 FreeLaserTag Gun 6036 FreeLaserTag Big Brother 6037 FreeLaserTag Node 6038 Monaka 6039 eXtreme Feedback Device 603a TiLDA 603b Raspiface 603c Paparazzi (bootloader) 603d Paparazzi (Serial) 603e Paparazzi (Mass Storage) 603f airGuitar 6040 moco 6041 AlphaSphere (bootloader) 6042 Dspace robot controller 6043 pc-power 6044 open-usb-can (DFU) 6045 open-usb-can 6046 mimus-weigand 6047 RfCat Chronos Dongle 6048 RfCat Dons Dongle 6049 RfCat Chronos bootloader 604a RfCat Dons bootloader 604b HackRF Jawbreaker Software-Defined Radio 604c Makibox A6 604d Paella Pulse height analyzer 604e Miniscope v2b 604f Miniscope v2c 6050 GoodFET 6051 pinocc.io 6052 APB Team Robotic Development Board 6053 Darkgame Controller 6054 Satlab/AAUSAT3 BlueBox 6055 RADiuS ER900TRS-02 transceiver with SMA Connector 6056 The Glitch 6057 OpenPipe MIDI Shield 6058 Novena OTG port 6059 xser serial 605a Daisho test 605b RfCat YARD Stick One 605c YARD Stick One bootloader 605d Funky Sensor v2 605e Blinkiverse Analog LED Fader 605f Small DIP package Cypress FX2 6060 Data logger using the Cypress FX2 6061 Power Manager 6062 WhiteRabbit console and Wishbone bridge 6063 CPC FPGA 6064 CPC FPGA (DFU) 6065 CPC FPGA (Serial) 6066 Nuand BladeRF 6067 Orbotron 9000 (Serial) 6068 Orbotron 9000 (HID) 6069 xser (DFU) 606a xser (legacy) 606b S08-245, urJtag compatible firmware for S08JS 606c Blinkytape full-color light tape 606d TinyG open source motion controller 606e Reefangel Evolution 1.0 606f Geschwister Schneider CAN adapter 6070 Open Pinball Project 6071 The Glitch HID 6072 The Glitch Disk 6073 The Glitch Serial 6074 The Glitch MIDI 6075 The Glitch RawHID 6076 Vultureprog BIOS chip programmer 6077 PaintDuino 6078 DTplug 6079 Mood Light 607a Fadecandy 607b RCDongle for IR remote control 607c OpenVizsla USB sniffer/analyzer 607d Spark Core Arduino-compatible board with WiFi 607e OSHUG Wuthering multi-tool 607f Spark Core Arduino-compatible board with WiFi (bootloader) 6080 arcin arcade controller 6081 BladeRF (bootloader) 6082 Facecandy (DFU) 6083 LightUp (bootloader) 6084 arcin arcade controller (DFU) 6085 IRKit for controlloing home electronics from iOS devices 6086 OneRNG entropy device 6087 Blinkytape (alternate endpoint config) 6088 picp PIC16F145x based PIC16F145x programmer 6089 Great Scott Gadgets HackRF One SDR 608a BLEduino 608b Loctronix ASR-2300 SDR/motion sensing module 608c Fx2lafw 608d Fx2lafw 608e Fx2lafw 608f Fx2lafw 6090 Fx2lafw 6091 Fx2lafw 6092 Fx2lafw 6093 Fx2lafw 6094 Fx2lafw 6095 Fx2lafw 6096 LightUp (sketch) 6097 Tessel JavaScript enabled Microcontroller with built-in WiFi 6098 RFIDler 6099 RASDR Radio Astronomy SDR Rx Interface 609a RASDR Radio Astronomy SDR Tx Interface 609b RASDR Radio Astronomy SDR (bootloader) 609c antiAFK keyboard 609d PIC16F145x bootloader 609e Clyde Lamp by Fabule (bootloader) 609f Clyde Lamp by Fabule (sketch) 60a0 Smoothiepanel robotic control interface 60a1 Airspy 60a2 barebox (DFU) 60a3 keyboard (bootloader) 60a4 Papilio Duo (AVR) 60a5 Papilio Duo (FPGA) 60a6 HydraBus/HydraNFC (bootloader) 60a7 HydraBus/HydraNFC 60a8 reserved 60a9 Blinky Light Controller (DFU) 60aa Blinky Light Controller 60ab AllPixel 60ac OpenBLT generic microcontroller (bootloader) 60ad Clasic Gamepad Adapter (NES) 60ae Clasic Gamepad Adapter (N64) 60af Clasic Gamepad Adapter (DB9) 60b0 Waterott Arduino based Clock (caterina bootloader) 60b1 Drinkbot (processing) 60b2 Drinkbot (OTG-tablet support) 60b3 calc.pw password generator device (standard) 60b4 calc.pw password generator device (enhanced) 60b5 TimVideos' HDMI2USB (FX2) - Unconfigured device 60b6 TimVideos' HDMI2USB (FX2) - Firmware load/upgrade 60b7 TimVideos' HDMI2USB (FX2) - HDMI/DVI Capture Device 60b8 TimVideos' HDMI2USB (Soft+UTMI) - Unconfigured device 60b9 TimVideos' HDMI2USB (Soft+UTMI) - Firmware upgrade 60ba TimVideos' HDMI2USB (Soft+UTMI) - HDMI/DVI Capture Device 60bc Simple CC25xx programmer / serial board 60bd Open Source control interface for multimedia applications 60be Pixelmatix Aurora (bootloader) 60bf Pixelmatix Aurora 60c0 Nucular Keyboard adapter 60c1 BrewBit Model-T pOSHW temperature controller for homebrewers (bootloader) 60c2 BrewBit Model-T pOSHW temperature controller for homebrewers 60c3 X Antenna Tracker arduino board 60c4 CAN bus communication device 60c5 PIC16F1 bootloader 60c6 USBtrng hardware random number generator 60c7 Zubax GNSS positioning module for light UAV systems 60c8 Xlink data transfer and control system for Commodore C64 60c9 random number generator 60ca FinalKey password manager 60cb PteroDAQ Data Acquisition on FRDM-KL25Z and future boards 60cc LamDiNao 60cd Open Lighting DMX512 / RDM widget 60de Cryptech.is random number generator 60df Numato Opsis HDMI2USB board (unconfigured) 60e0 Numato Opsis HDMI2USB board (JTAG Programming Mode) 60e1 Numato Opsis HDMI2USB board (User Mode) 60e2 Osmocom SIMtrace 2 (DFU) 60e3 Osmocom SIMtrace 2 60e4 3D printed racing game - (Catalina CDC bootloader) 60e5 3D printed racing game 60e6 replacement for GoodFET/FaceDancer - GreatFet 60e7 replacement for GoodFET/FaceDancer - GreatFet target 60e8 Alpen Clack keyboard 60e9 keyman64 keyboard itercepter 60ea Wiggleport FPGA-based I/O board 60eb candleLight CAN adapter 60ec Duet 2 WiFi or Duet 2 Ethernet 3D printer control electronics 60ed Duet 2 Maestro 3D printer control electronics 60ee Duet 3 motion control electronics 60f0 UDAD-T1 data acquisition device (boot) 60f1 UDAD-T1 data acquisition device 60f2 UDAD-T2 data acquisition device (boot) 60f3 UDAD-T2 data acquisition device 60f4 Uniti ARC motor controller 60f5 EightByEight Blinky Badge (DFU) 60f6 EightByEight Blinky Badge 60f7 cardio NFC/RFID card reader (bootloader) 60f8 cardio NFC/RFID card reader 60fc OnlyKey Two-factor Authentication and Password Solution 6100 overlay64 video overlay module 6104 ScopeFun open source instrumentation 6108 Myriad-RF LimeSDR 610c Magic Keys (boot) 610d Magic Keys 6114 MIDI key 6118 Thomson MO5 keyboard 6122 Ultimate Hacking Keyboard 614c dwtk In-Circuit Emulator 614d Generic Display 8085 Box0 (box0-v5) cc15 rad1o badge for CCC summer camp 2015 1d57 Xenta 0005 Wireless Receiver (Keyboard and Mouse) 0006 Wireless Receiver (RC Laser Pointer) 000c Optical Mouse 130f 2.4Ghz wireless optical mouse receiver 2400 Wireless Mouse Receiver 32da 2.4GHz Receiver (Keyboard and Mouse) 83d0 Click-mouse! ac01 Wireless Receiver (Keyboard and Mouse) ac02 ViFit Activity Tracker ac08 RFID Receiver (Keyboard) ad02 SE340D PC Remote Control ad03 [T3] 2.4GHz and IR Air Mouse Remote Control af01 AUVIO Universal Remote Receiver for PlayStation 3 af03 Wireless Receiver fa20 2.4GHz Wireless Receiver (Mini Keyboard & Mouse) 1d5b Smartronix, Inc. 1d5c Fresco Logic 2000 FL2000/FL2000DX VGA/DVI/HDMI Adapter 1d6b Linux Foundation 0001 1.1 root hub 0002 2.0 root hub 0003 3.0 root hub 0100 PTP Gadget 0101 Audio Gadget 0102 EEM Gadget 0103 NCM (Ethernet) Gadget 0104 Multifunction Composite Gadget 0105 FunctionFS Gadget 0200 Qemu Audio Device 1d88 Mahr GmbH 0001 Measurement Device [MarECon] 0002 Probe 0003 Surface Measurement [PS10] 1d90 Citizen 201e PPU-700 2037 CL-S631 Barcode Printer 20f0 Thermal Receipt Printer [CT-E351] 1d9d Sigma Sport 1010 Docking Station Topline 2009 1011 Docking Station Topline 2012 1012 Docking Station Topline 2016 1dd2 Leo Bodnar Electronics Ltd 1dd3 Dajc Inc. 0001 Expert I/O 1000 1de1 Actions Microelectronics Co. 1101 Generic Display Device (Mass storage mode) c101 Generic Display Device 1de6 MICRORISC s.r.o. 1df7 SDRplay 2500 RSP1 3000 RSP1a 3010 RSP2/RSP2pro 3020 RSPduo 3030 RSPdx 1e0e Qualcomm / Option f000 iCON 210 UMTS Surfstick 1e10 Point Grey Research, Inc. 2004 Sony 1.3MP 1/3" ICX445 IIDC video camera [Chameleon] 1e17 Mirion Technologies Dosimetry Services Division 0001 instadose dosimeter 1e1d Kanguru Solutions 0165 Secure Pen drive 1101 FlashBlu Flash Drive 1e1f INVIA 1e29 Festo AG & Co. KG 0101 CPX Adapter 0102 CPX Adapter >=HW10.09 [CP2102] 0401 iL3-TP [AT90USB646] 0402 FTDI232 [EasyPort] 0403 FTDI232 [EasyPort Mini] 0404 FTDI232 [Netzteil-GL] 0405 FTDI232 [MotorPrüfstand] 0406 STM32F103 [EasyKit] 0407 LPC2378 [Robotino] 0408 LPC2378 [Robotino-Arm] 0409 LPC2378 [Robotino-Arm Bootloader] 040a LPC2378 [Robotino Bootloader] 040b LPC2378 [Robotino XT] 040c LPC2378 [Robotino XT Bootloader] 040d LPC2378 [Robotino 3] 040e LPC2378 [Robotino 3 Bootloader] 040f LPC2148 [Robotino gripper] 0410 LPC2148 [Robotino IR panel] 0501 CP2102 [CMSP] 0601 CMMP-AS 0602 FTDI232 [CMMS] 1e2d Gemalto M2M GmbH 004f EGS3 GSM/GPRS modem 0054 PH8 wireless module 0058 Wireless Module [Cinterion EHS6] 0059 Wireless Module [Cinterion BGx] 005b Zoom 4625 Modem 0061 ALSx PLSx LTE modem 00a0 Cinterion ELS31-V 1e3d Chipsbank Microelectronics Co., Ltd 198a Flash Disk 2093 CBM209x Flash Drive (OEM) 4082 CBM4082 SD Card Reader 1e41 Cleverscope 0001 CS328A PC Oscilloscope 0004 CS448 1e44 SHIMANO INC. 7220 SM-BCR2 1e4e Cubeternet 0100 WebCam 0102 GL-UPC822 UVC WebCam 0109 EtronTech CMOS based eSP570 WebCam [Onyx Titanium TC101] 1e54 TypeMatrix 2030 2030 USB Keyboard 1e68 TrekStor GmbH & Co. KG 001b DataStation maxi g.u 004c DataStation Pocket Click 0050 DataStation maxi light 1045 ST70408-3 [SurfTab breeze 7.0 quad 3G] (MTP Mode) 1046 ST70408-3 [SurfTab breeze 7.0 quad 3G] (PTP Mode) 1e71 NZXT 0001 Avatar Optical Mouse 170e Kraken X 1711 Grid+ V3 1714 Smart Device 1715 Kraken M22 2006 Smart Device V2 1e74 Coby Electronics Corporation 2211 MP300 2647 2 GB 2 Go Video MP3 Player [MP601-2G] 2659 Coby 4GB Go Video MP3 Player [MP620-4G] 4641 A8705 MP3/Video Player 6511 MP705-8G MP3 player 6512 MP705-4G 7111 MP957 Music and Video Player 1e7b Zurich Instruments 0002 HF2 0003 UHF 0004 MFLI 1e7d ROCCAT 2c24 Pyra Mouse (wired) 2c2e Lua Mouse 2c38 Kiro Mouse 2ced Kone Mouse 2cee Kova 2016 Gray Mouse 2cef Kova 2016 White Mouse 2cf0 Kova 2016 Black Mouse 2cf6 Pyra Mouse (wireless) 2d50 Kova[+] Mouse 2d51 Kone[+] Mouse 2d5a Savu Mouse 2db4 Kone Pure Optical Mouse 2dbe Kone Pure Mouse 2dbf Kone Pure Military Mouse 2dc2 Kone Pure Optical Black Mouse 2dcb Kone Pure SE(L) Mouse 2e22 Kone XTD Mouse 2e23 Kone XTD Optical Mouse 2e27 Kone AIMO Mouse 2e4a Tyon Black Mouse 2e4b Tyon White Mouse 2e7c Nyth Black Mouse 2e7d Nyth White Mouse 2f76 Sova Keyboard 2f94 Sova MK Keyboard 2fa8 Suora Keyboard 2fc6 Skeltr Keyboard 2fda Ryos MK FX Keyboard 30d4 Arvo Keyboard 3138 Ryos MK Keyboard 316a Ryos TKL Keyboard 319c Isku Keyboard 31ce Ryos MK Glow Keyboard 3232 Ryos MK Pro Keyboard 3246 Suora FX Keyboard 3264 Isku FX Keyboard 1e8e Airbus Defence and Space 6001 P8GR 1e91 Other World Computing b0b1 miniStack 1ea7 SHARKOON Technologies GmbH 0030 Trust GXT 158 Orna Laser Gaming Mouse 0064 2.4GHz Wireless rechargeable vertical mouse [More&Better] 0066 [Mediatrack Edge Mini Keyboard] 0907 Keyboard 1002 Vintorez Gaming Mouse 2007 SHARK ZONE K30 Illuminated Gaming Keyboard 1eab Fujian Newland Computer Co., Ltd 0103 HR200 Barcode scanner engine (HID keyboard) 0106 HR200 Barcode scanner engine (Serial CDC) 0110 HR200 Barcode scanner engine (HID Pos) 0c03 HR100/HR3260 cordless/HR3290 cordless/BS80 Barcode scanner engine (HID keyboard) 0c06 HR100/HR3260 cordless/HR3290 cordless/BS80 Barcode scanner engine (USB Serial CDC) 0c10 HR100/HR3260 cordless/HR3290 cordless/BS80 Barcode scanner engine (HID Pos) 0d03 EM2028 Barcode scanner engine (HID keyboard) 0d06 EM2028 Barcode scanner engine (Serial CDC) 0d10 EM2028 Barcode scanner engine (HID Pos) 1303 EM30xx/EM20xx/HR3260 corded/HR200C Barcode scanner engine (HID keyboard) 1306 EM30xx/EM20xx/HR3260 corded/HR200C Barcode scanner engine (USB serial CDC) 1310 EM30xx/EM20xx/HR3260 corded/HR200C Barcode scanner engine (HID Pos) 1403 HR15-xx Barcode scanner engine (HID keyboard) 1406 HR15-xx Barcode scanner engine (Serial CDC) 1410 HR15-xx Barcode scanner engine (HID Pos) 1603 FM100-M/3250 Barcode scanner engine (HID keyboard) 1606 FM100-M/3250 Barcode scanner engine (Serial CDC) 1610 FM100-M/3250 Barcode scanner engine (HID Pos) 1903 EM1300 Barcode scanner engine (HID keyboard) 1906 EM1300 Barcode scanner engine (Serial CDC) 1910 EM1300 Barcode scanner engine (HID Pos) 1a03 HR3290 corded/HR22 Barcode scanner engine (HID keyboard) 1a06 HR3290 corded/HR22 Barcode scanner engine (Serial CDC) 1a10 HR3290 corded/HR22 Barcode scanner engine (HID Pos) 1c03 HR2150 Barcode scanner engine (HID keyboard) 1c06 HR2150 Barcode scanner engine (Serial CDC) 1c10 HR2150 Barcode scanner engine (HID Pos) 1d03 FM430 Barcode scanner engine (HID keyboard) 1d06 FM430 Barcode scanner engine (Serial CDC) 1d10 FM430 Barcode scanner engine (HID Pos) 1e03 HR42 Barcode scanner engine (HID keyboard) 1e06 HR42 Barcode scanner engine (Serial CDC) 1e10 HR42 Barcode scanner engine (HID Pos) 1f03 HR11+ Barcode scanner engine (HID keyboard) 1f06 HR11+ Barcode scanner engine (Serial CDC) 1f10 HR11+ Barcode scanner engine (HID Pos) 2003 EM2037v2 Barcode scanner engine (HID keyboard) 2006 EM2037v2 Barcode scanner engine (Serial CDC) 2010 EM2037v2 Barcode scanner engine (HID Pos) 8003 EM13x5-LD/HR15-70/HR100-70/HR12/HR1150-70 Barcode scanner engine (HID keyboard) 8006 EM13x5-LD/HR15-70/HR100-70/HR12/HR1150-70 Barcode scanner engine (USB Serial CDC) 8010 EM13x5-LD/HR15-70/HR100-70/HR12/HR1150-70 Barcode scanner engine (HID Pos) 8203 EM3080-01/EM3095/FR20/FM30 Barcode scanner engine (HID keyboard) 8206 EM3080-01/EM3095/FR20/FM30 Barcode scanner engine (USB Serial CDC) 8210 EM3080-01/EM3095/FR20/FM30 Barcode scanner engine (HID Pos) 8303 HR2160 Barcode scanner engine (HID keyboard) 8306 HR2160 Barcode scanner engine (Serial CDC) 8310 HR2160 Barcode scanner engine (HID Pos) 1eaf Leaflabs 0003 Maple DFU interface 0004 Maple serial interface 1eb8 Modacom Co., Ltd. 7f00 MW-U3500 WiMAX adapter 1ebb NuCORE Technology, Inc. 1ecb AMTelecom 02e2 JMR1140 [Jiofi] 1ed8 FENDER MUSICAL INSTRUMENTS CORPORATION 0004 Mustang I/II 0005 Mustang III/IV/V 0006 Mustang I/II [Firmware Update] 0007 Mustang III/IV/V [Firmware Update] 0010 Mustang Mini 0011 Mustang Mini [Firmware Update] 0014 Mustang I (V.2) 0016 Mustang IV v.2 1eda AirTies Wireless Networks 2012 Air2210 54 Mbps Wireless Adapter 2210 Air2210 54 Mbps Wireless Adapter 2310 Air2310 150 Mbps Wireless Adapter 2410 Air2410 300 Mbps Wireless Adapter 1edb Blackmagic design bd3b Intensity Shuttle bd46 Mini Converter Analog to SDI bd75 2.5K Cinema Camera (BMCC) 1ee8 ONDA COMMUNICATION S.p.a. 0014 MT833UP 1ef6 EADS Deutschland GmbH 2233 Cassidian NH90 STTE 5064 FDR Interface 5523 Cassidian SSDC Adapter II 5545 Cassidian SSDC Adapter III 5648 RIU CSMU/BSD 564a Cassidian RIU CSMU/BSD Simulator 1f0c CMX Systems 2000 HP StreamSmart 410 [NW278AA] 1f28 Cal-Comp 0020 CDMA USB Modem A600 0021 CD INSTALLER USB Device 1f3a Allwinner Technology 1000 Prestigio PER3464B ebook reader (Mass storage mode) 1002 mediacom XPRO 415 1010 Android device in fastboot mode efe8 sunxi SoC OTG connector in FEL/flashing mode 1f44 The Neat Company 0001 NM-1000 scanner 1f48 H-TRONIC GmbH 0627 Data capturing system 0628 Data capturing and control module 1f4d G-Tek Electronics Group a115 EVOLVEO XtraTV stick [DVB-T] b803 Lifeview LV5TDLX DVB-T [RTL2832U] c803 NotOnlyTV (Lifeview) LV5TDLX DVB-T [RTL2832U] d220 Geniatech T220 DVB-T2 TV Stick 1f52 Systems & Electronic Development FZCO (SEDCO) 0001 Ultima 49 Printer 0002 Ultima 90 Printer 0003 FormsPro 50 Printer 0004 Ultima 90+ Printer 1f6f Aliph 0023 Jawbone Jambox 8000 Jawbone Jambox - Updating 1f75 Innostor Technology Corporation 0611 IS611 SATA/PATA Bridge Controller 0621 IS621 SATA Storage Controller 0888 IS888 SATA Storage Controller 0902 IS902 UFD controller 0916 IS916 Flash Drive 0917 IS917 Mass storage 0918 IS918 Flash Drive 1f82 TANDBERG 0001 PrecisionHD Camera 1f84 Alere, Inc. 1f7e Lateral Flow Engine 1f87 Stantum 0002 Multi-touch HID Controller 1f9b Ubiquiti Networks, Inc. 0241 AirView2-EXT b0b1 UniFi VoIP Phone 1fab Samsung Opto-Electroncs Co., Ltd. 104d ES65 1fac Franklin Wireless 0232 U770 3G/4G Wimax/4G LTE Modem 1fae Lumidigm 0040 M311 Fingerprint Scanner 212c M30x (Mercury) fingerprint sensor 1fb2 Withings 0001 Wi-Fi Body Scale (WBS01) 1fba DERMALOG Identification Systems GmbH 1fbd Delphin Technology AG 0001 Expert Key - Data acquisition system 0004 MetiOS Device (RNDIS) 0005 Loggito 0006 LoggitoLab 8 AI-RTD 0007 LoggitoLab 8 TC 0008 LoggitoLab 4 AI-RTD 4 TC 1fc9 NXP Semiconductors 0003 LPC1343 000c LPC4330FET180 [ARM Cortex M4 + M0] (device firmware upgrade mode) 0082 LPC4330FET180 [ARM Cortex M4 + M0] (mass storage controller mode) 010b PR533 0126 i.MX 7ULP SystemOnChip in RecoveryMode 012b i.MX 8M Dual/8M QuadLite/8M Quad Serial Downloader 5002 PTN5002 [Startech VGA/DVI-D adapter] 8124 SharkRF Bootloader 824c LumiNode1 1fde ILX Lightwave Corporation 0001 UART Bridge 1fe7 Vertex Wireless Co., Ltd. 1000 VW100 series CDMA EV-DO Rev.A modem 1ff7 CVT Electronics.Co.,Ltd 0013 CVTouch Screen (HID) 001a Human Interface Device 1ffb Pololu Corporation 0081 AVR Programmer 0083 Jrk 21v3 Motor Controller 0089 Micro Maestro 6-Servo Controller 008a Mini Maestro 12-Channel Servo Controller 008b Mini Maestro 18-Channel Servo Controller 008c Mini Maestro 24-Channel Servo Controller 00b0 AVR Programmer v2 1fff Ideofy Inc. 2000 CMX Systems 1f0c HP StreamSmart 410 [NW278AA] 2001 D-Link Corp. 0001 DWL-120 WIRELESS ADAPTER 0201 DHN-120 10Mb Home Phoneline Adapter 1a00 DUB-E100 Fast Ethernet Adapter(rev.A) [ASIX AX88172] 1a02 DUB-E100 Fast Ethernet Adapter(rev.C1) [ASIX AX88772] 200c 10/100 Ethernet 3101 DWA-182 AC1200 DB Wireless Adapter(rev.A1) [Broadcom BCM43526] 3200 DWL-120 802.11b Wireless Adapter(rev.E1) [Atmel at76c503a] 3301 DWA-130 802.11n Wireless N Adapter(rev.C1) [Realtek RTL8192U] 3306 DWL-G122 Wireless Adapter(rev.F1) [Realtek RTL8188SU] 3308 DWA-121 802.11n Wireless N 150 Pico Adapter [Realtek RTL8188CUS] 3309 DWA-135 802.11n Wireless N Adapter(rev.A1) [Realtek RTL8192CU] 330a DWA-133 802.11n Wireless N Adapter [Realtek RTL8192CU] 330d DWA-131 802.11n Wireless N Nano Adapter (rev.B1) [Realtek RTL8192CU] 330f DWA-125 Wireless N 150 Adapter(rev.D1) [Realtek RTL8188ETV] 3310 DWA-123 Wireless N 150 Adapter (rev.D1) 3314 DWA-171 AC600 DB Wireless Adapter(rev.A1) [Realtek RTL8811AU] 3315 DWA-182 Wireless AC Dualband Adapter(rev.C) [Realtek RTL8812AU] 3317 DWA-137 Wireless N High-Gain Adapter [Ralink RT5372] 3319 DWA-131 Wireless N Nano Adapter (Rev. E1) [Realtek RTL8192EU] 3500 Elitegroup Computer Systems WLAN card WL-162 3700 DWL-122 802.11b [Intersil Prism 3] 3701 DWL-G120 Spinnaker 802.11g [Intersil ISL3886] 3702 DWL-120 802.11b Wireless Adapter(rev.F) [Intersil ISL3871] 3703 AirPlus G DWL-G122 Wireless Adapter(rev.A1) [Intersil ISL3880] 3704 AirPlus G DWL-G122 Wireless Adapter(rev.A2) [Intersil ISL3887] 3705 AirPlus G DWL-G120 Wireless Adapter(rev.C) [Intersil ISL3887] 3761 IEEE 802.11g USB2.0 Wireless Network Adapter-PN 3a00 DWL-AG132 [Atheros AR5523] 3a01 DWL-AG132 (no firmware) [Atheros AR5523] 3a02 DWL-G132 [Atheros AR5523] 3a03 DWL-G132 (no firmware) [Atheros AR5523] 3a04 DWL-AG122 [Atheros AR5523] 3a05 DWL-AG122 (no firmware) [Atheros AR5523] 3a80 AirPlus Xtreme G DWL-G132 Wireless Adapter 3a81 predator Bootloader Download 3a82 AirPremier AG DWL-AG132 Wireless Adapter 3a83 predator Bootloader Download 3b00 AirPlus DWL-120+ Wireless Adapter [Texas Instruments ACX100USB] 3b01 WLAN Boot Device 3c00 AirPlus G DWL-G122 Wireless Adapter(rev.B1) [Ralink RT2571] 3c01 AirPlus AG DWL-AG122 Wireless Adapter 3c02 AirPlus G DWL-G122 Wireless Adapter 3c05 DUB-E100 Fast Ethernet Adapter(rev.B1) [ASIX AX88772] 3c15 DWA-140 RangeBooster N Adapter(rev.B3) [Ralink RT5372] 3c17 DWA-123 Wireless N 150 Adapter(rev.A1) [Ralink RT3370] 3c19 DWA-125 Wireless N 150 Adapter(rev.A3) [Ralink RT5370] 3c1a DWA-160 802.11abgn Xtreme N Dual Band Adapter(rev.B2) [Ralink RT5572] 3c1b DWA-127 Wireless N 150 High-Gain Adapter(rev.A1) [Ralink RT3070] 3c1e DWA-125 Wireless N 150 Adapter(rev.B1) [Ralink RT5370] 4000 DSB-650C Ethernet [klsi] 4001 DSB-650TX Ethernet [pegasus] 4002 DSB-650TX Ethernet [pegasus] 4003 DSB-650TX-PNA Ethernet [pegasus] 400b 10/100 Ethernet 4102 10/100 Ethernet 4a00 DUB-1312 Gigabit Ethernet Adapter 5100 DSL-200 ADSL ATM Modem 5102 DSL-200 ADSL Loader 5b00 Remote NDIS Network Device 9414 Cable Modem 9b00 Broadband Cable Modem Remote NDIS Device abc1 DSB-650 Ethernet [pegasus] f013 DLink 7 port USB2.0 Hub f103 DUB-H7 7-port USB 2.0 hub f10d Accent Communications Modem f110 DUB-AV300 A/V Capture f111 DBT-122 Bluetooth adapter f112 DUB-T210 Audio Device f116 Formosa 2 f117 Formosa 3 f118 Formosa 4 2002 DAP Technologies 2003 detectomat ea61 dc3500 2006 LenovoMobile 2009 iStorage 5004 datAshur 4GB 5016 datAshur 16GB 5032 datAshur 32GB 200c Reloop 100b Play audio soundcard 2013 PCTV Systems 0242 QuatroStick 510e 0245 PCTV 73ESE 0246 PCTV 74E 0248 PCTV 282E 024c DVB-S2 Stick 460e 024f nanoStick T2 290e 0251 QuatroStick nano 520e 0258 DVB-S2 Stick 461e 025a AndroiDTV 78e 025f tripleStick 292e 0262 microStick 79e 2018 Deutsche Telekom AG 0406 Eumex 800 0408 Eumex 800 2019 PLANEX 3220 GW-US11S WLAN [Atmel AT76C503A] 4901 GW-USSuper300 802.11bgn Wireless Adapter [Realtek RTL8191SU] 4903 GW-USFang300 802.11abgn Wireless Adapter [Realtek RTL8192DU] 4904 GW-USUltra300 802.11abgn Wireless Adapter [Realtek RTL8192DU] 5303 GW-US54GXS 802.11bg 5304 GWUS300 802.11n ab01 GW-US54HP ab24 GW-US300MiniS ab25 GW-USMini2N 802.11n Wireless Adapter [Ralink RT2870] ab28 GW-USNano ab29 GW-USMicro300 ab2a GW-USNano2 802.11n Wireless Adapter [Realtek RTL8188CUS] ab2b GW-USEco300 802.11bgn Wireless Adapter [Realtek RTL8192CU] ab2c GW-USDual300 802.11abgn Wireless Adapter [Realtek RTL8192DU] ab50 GW-US54Mini2 c002 GW-US54SG c007 GW-US54GZL ed02 GW-USMM ed06 GW-US300MiniW 802.11bgn Wireless Adapter ed10 GW-US300Mini2 ed14 GW-USMicroN ed16 GW-USMicroN2W 802.11bgn Wireless Adapter [Realtek RTL8188SU] ed17 GW-USValue-EZ 802.11n Wireless Adapter [Realtek RTL8188CUS] ed18 GW-USHyper300 / GW-USH300N 802.11bgn Wireless Adapter [Realtek RTL8191SU] 201e Haier 2009 CE100 CDMA EVDO 203a PARALLELS 203d Encore Electronics Inc. 1480 ENUWI-N3 [802.11n Wireless N150 Adapter] 2040 Hauppauge 0265 WinTV-dualHD DVB 026d WinTV-dualHD ATSC 0c80 Windham 0c90 Windham 1605 WinTV-HVR 930C HD 1700 CataMount 1800 Okemo A 1801 Okemo B 2000 Tiger Minicard 2009 Tiger Minicard R2 200a Tiger Minicard 2010 Tiger Minicard 2011 WinTV MiniCard [Dell Digital TV Receiver] 2019 Tiger Minicard 2400 WinTV PVR USB2 (Model 24019) 4200 WinTV 4700 WinTV Nova-S-USB2 4902 HD PVR 4903 HS PVR 4982 HD PVR 5500 Windham 5510 Windham 5520 Windham 5530 Windham 5580 Windham 5590 Windham 6500 WinTV HVR-900 6502 WinTV HVR-900 6503 WinTV HVR-930 6513 WinTV HVR-950/HVR-980 6600 WinTV HVR-900H (Model 660xx) 7050 Nova-T Stick 7060 Nova-T Stick 2 7070 Nova-T Stick 3 7240 WinTV HVR-850 8400 WinTV Nova-T-500 9300 WinTV NOVA-T USB2 (cold) 9301 WinTV NOVA-T USB2 (warm) 9941 WinTV Nova-T-500 9950 WinTV Nova-T-500 b123 WinTV-HVR-955Q b138 WinTV-HVR-900 model 00246 [WinTV-T Video] b910 Windham b980 Windham b990 Windham c000 Windham c010 Windham 2047 Texas Instruments 0013 MSP eZ-FET lite 0014 MSP-FET 0200 MSP430 Bootloader 0203 eZ-FET Bootloader 0204 MSP-FET Bootloader 0300 MSP430 CDC Example 0301 MSP430 HID Datapipe Example 0302 MSP430 CDC+HID Example 0309 MSP430 HID Mouse Example 0313 MSP430 CDC+CDC Example 0314 MSP430 HID+HID Example 0315 MSP430 HID Keyboard Example 0316 MSP430 MSC File System Emulation Example 0317 MSP430 MSC SD Card Example 0318 MSP430 MSC Multiple LUNs Example 0319 MSP430 MSC+CDC+HID Example 0320 MSP430 SYSBIOS Tasks MSC+CDC+HID Example 0321 MSP430 SYSBIOS SWIs MSC+CDC+HID Example 0322 MSP430 MSC Double-Buffering Example 0323 MSP430 MSC CD-ROM Example 03df MSP430 User Experiment 03e0 MSP430 User Experiment 03e1 MSP430 User Experiment 03e2 MSP430 User Experiment 03e3 MSP430 User Experiment 03e4 MSP430 User Experiment 03e5 MSP430 User Experiment 03e6 MSP430 User Experiment 03e7 MSP430 User Experiment 03e8 MSP430 User Experiment 03e9 MSP430 User Experiment 03ea MSP430 User Experiment 03eb MSP430 User Experiment 03ec MSP430 User Experiment 03ed MSP430 User Experiment 03ee MSP430 User Experiment 03ef MSP430 User Experiment 03f0 MSP430 User Experiment 03f1 MSP430 User Experiment 03f2 MSP430 User Experiment 03f3 MSP430 User Experiment 03f4 MSP430 User Experiment 03f5 MSP430 User Experiment 03f6 MSP430 User Experiment 03f7 MSP430 User Experiment 03f8 MSP430 User Experiment 03f9 MSP430 User Experiment 03fa MSP430 User Experiment 03fb MSP430 User Experiment 03fc MSP430 User Experiment 03fd MSP430 User Experiment 0401 MSP430 Keyboard Example 0855 Invensense Embedded MotionApp HID Sensor 08f8 FDC2x14/LDC13xx/LDC16xx EVM 0964 Inventio Software MSP430 0a76 GEOKON S-3810A-5 USB-RS485 CONVERTER ffe7 HID v1.00 Device [Improv Device] 2058 Nano River Technology 2058 ViperBoard I2C, SPI, GPIO interface 2077 Taicang T&W Electronics Co. Ltd 9002 W1M100 HSPA/WCDMA Module 2080 Barnes & Noble 0001 nook 0002 NOOKcolor 0003 NOOK Simple Touch 0004 NOOK Tablet 0005 BNTV600 [Nook HD+] 0006 BNTV400 [Nook HD] 0007 BNRV500 [Nook Glowlight] 000a BNRV510 [Nook Glowlight Plus] 000b BNRV520 [Nook Glowlight 3] 000c BNRV700 [Nook Glowlight Plus] 2086 SIMPASS 2087 Cando 0a01 Multi Touch Panel 0a02 Multi Touch Panel 0b03 Multi Touch Panel 20a0 Clay Logic 0006 flirc 4107 GPF Crypto Stick V1.2 4108 Nitrokey Pro 4109 Nitrokey Storage 4123 IKALOGIC SCANALOGIC 2 414a MDE SPI Interface 415a OpenPilot 415b CopterControl 415c PipXtreme 41e5 BlinkStick 4211 Nitrokey Start 4223 ATSAMD21 [castAR] 4230 Nitrokey HSM 4287 Nitrokey FIDO U2F 428d Electrosense wideband converter 42b1 Nitrokey FIDO2 42b2 Nitrokey 3A Mini/3A NFC/3C NFC 42b4 Nitrokey Pro Bootloader 42da MuteMe 42dd Nitrokey 3A NFC Bootloader/3C NFC Bootloader 42e8 Nitrokey 3A Mini Bootloader 42ec RP2040 [PicoWifi] 20b1 XMOS Ltd 10ad XUSB Loader f7d1 XTAG2 - JTAG Adapter 20b3 Hanvon 0a18 10.1 Touch screen overlay 20b7 Qi Hardware 0713 Milkymist JTAG/serial 1540 ben-wpan, AT86RF230-based 1db5 IDBG in DFU mode 1db6 IDBG in normal mode 9db1 Glasgow Debug Tool c25b C2 Dongle cb72 ben-wpan, cntr 20bc ShenZhen ShanWan Technology Co., Ltd. 5500 Frostbite controller 20ce Minicircuits 0012 RF Sythesizer 250-4200MHz model SSG-4000LH 0021 RF Switch Matrix 0022 I/O Controller 20df Simtec Electronics 0001 Entropy Key [UDEKEY01] 20f0 L3Harris Technologies 2102 EWLA V2 Module 20f1 NET New Electronic Technology GmbH 0101 iCube3 Camera 20f4 TRENDnet 646b TEW-646UBH High Power 150Mbps Wireless N Adapter [Realtek RTL8188SU] 648b TEW-648UBM 802.11n 150Mbps Micro Wireless N Adapter [Realtek RTL8188CUS] 664b TEW-664UB H/W:V2.0R 804b TEW-804UB 802.11a/b/g/n/ac (1x1) Wireless Adapter [Realtek RTL8811AU] 805b TEW-805UB 300Mbps+867Mbps Wireless AC Adapter [Realtek RTL8812AU] 806b TEW-806UBH 802.11a/b/g/n/ac (1x1) Wireless Adapter [MediaTek MT7610U] 20f7 XIMEA 3001 MQ or MD camera 3002 MU camera 3021 MJ camera 30b3 MQ in U3V mode or MC camera a003 MU camera 2100 RT Systems 0e56 USB62C Radio Cable [Yaesu 857/D - 897/D] 9e50 USB-59 Radio Cable [Yaesu VX-8/D/DR] 9e52 Yaesu VX-7 9e54 CT29B Radio Cable 9e57 RTS01 Radio Cable 9e58 USB63C Radio Cable [Yaesu FTDX-1200] 9e5d K4Y Radio Cable 9e5f FT232RL [RTS05 Serial Cable] 2101 ActionStar 0201 SIIG 4-to-2 Printer Switch 1402 Keyboard/Mouse Switch 2104 Tobii Technology AB 0050 Eye tracker [EYEX2] 0124 Eyechip 2107 RDING TECH CO.,LTD 2109 VIA Labs, Inc. 0210 Hub 0700 VL700 SATA 3Gb/s bridge 0701 VL701 SATA 3Gb/s bridge 0711 VL711 SATA 6Gb/s bridge 0715 VL817 SATA Adaptor 0810 VL81x Hub 0811 Hub 0812 VL812 Hub 0813 VL813 Hub 0820 VL820 Hub 2210 Hub 2811 Hub 2812 VL812 Hub 2813 VL813 Hub 2820 VL820 Hub 3431 Hub 711f External 8110 Hub 2113 Softkinetic 0137 DepthSense 311 (3D) 0145 DepthSense 325 8000 DepthSense 311 (Color) 2116 KT Tech 000a IDE Hard Drive Enclosure 211f CELOT Corporation 6801 CDMA Products 2123 Cheeky Dream 1010 Rocket Launcher 2125 Fiberpro Inc. 0000 Bootloader 0010 MCB-100 Series 2133 signotec GmbH 0001 LCD Signature Pad Sigma 0018 Delta Pen 0019 Delta Touch 001c Kronos Pen 0022 Epsilon Pen 2149 Advanced Silicon S.A. 211b Touchscreen Controller 2306 TS58xxA/TC56xxA [CoolTouch] 2703 TS58xxA/TC56xxA [CoolTouch] 214b Huasheng Electronics 7000 4-port hub [Maxxter ACT-HUB2-4P, HS8836, iSoul ultra-slim] 214e Swiftpoint 0005 Z - Gaming mouse [SM700] 2162 Broadxent (Creative Labs) 2031 Network Blaster Wireless Adapter 500c DE5771 Modem Blaster 8001 Broadxent BritePort DSL Bridge 8010U 2166 JVC Kenwood 600b TH-D74 2184 GW Instek 0005 GDS-3000 Oscilloscope 0006 GDS-3000 Oscilloscope 0011 AFG Function Generator (CDC) 0017 DSO 0018 DSO 0036 AFG-125 Function Generator (CDC) 2188 No brand 0610 Hub 0611 Hub 0620 Hub 0625 Hub 0754 Card Reader 4042 CalDigit Pro Audio 219c Seal One AG 0010 USB 2200 K Secure Sign Token 21a1 Emotiv Systems Pty. Ltd. 0001 EPOC Consumer Headset Wireless Dongle 21a4 Electronic Arts Inc. ac27 SPORTS Active 2 Wireless Controller for PS3 ac40 SPORTS Active 2 Wireless Controller for Wii 21a9 Saleae, Inc. 1001 16-channel Logic Analyzer [Logic16] 1003 Logic 4 1004 Logic8 1005 Logic Pro 8 1006 Logic Pro 16 21ab Planeta Informatica 0010 RC700 NFC SmartCard Reader 0011 DSR700 SmartCard Reader 21b4 AudioQuest 0081 DragonFly 0082 DragonFly Red 21d6 Agecodagis SARL 0002 Seismic recorder [Tellus] 2207 Fuzhou Rockchip Electronics Company 0010 GoClever Tab R83 0011 SmartTab 281a RK2818 in Mask ROM mode 290a RK2918 in Mask ROM mode 292a RK2928 in Mask ROM mode 292c RK3026 in Mask ROM mode 300a RK3066 in Mask ROM mode 300b RK3168 in Mask ROM mode 301a RK3036 in Mask ROM mode 310a RK3066B in Mask ROM mode 310b RK3188 in Mask ROM mode 310c RK3126/RK3128 in Mask ROM mode 310d RK3126 in Mask ROM mode 320a RK3288 in Mask ROM mode 320b RK3228/RK3229 in Mask ROM mode 320c RK3328 in Mask ROM mode 330a RK3368 in Mask ROM mode 330c RK3399 in Mask ROM mode 221a ZTEX GmbH 0100 FPGA Boards 2222 MacAlly 0004 iWebKey Keyboard 0005 ICEKey Keyboard 1001 Generic Hub 2520 Mini Tablet 4050 AirStick joystick 2226 Copper Mountain technologies 2227 SAMWOO Enterprise 3105 SKYDATA SKD-U100 222a ILI Technology Corp. 0001 Multi-Touch Screen 0037 Multi-Touch Screen 2230 Plugable 0001 UD-160-A / M Integrated Hub 0003 DC-125 / M Integrated Hub 2232 Silicon Motion 1005 WebCam SCB-0385N 1024 Webcam SC-13HDL11624N [Namuga Co., Ltd.] 1028 WebCam SC-03FFL11939N 1029 WebCam SC-13HDL11939N 1037 WebCam SC-03FFM12339N 1045 WebCam SC-10HDP12631N 2233 RadioShack Corporation 6323 USB Electronic Scale 2237 Kobo Inc. 4161 eReader White 4163 Touch 4173 Glo 2245 Aspeed Technology, Inc. 1500 AST1500/1510 PC-over-LAN Virtual Hub 224f APDM 0001 Access Point 0002 Docking Station 0004 V2 Opal ACM 0005 V2 Opal 0006 V2 Docking Station 0007 V2 Access Point ACM 0008 V2 Access Point 2256 Faderfox 1007 LV3 MIDI Controller 225d Morpho 0001 FINGER VP Multimodal Biometric Sensor 0008 CBM-E3 Fingerprint Sensor 0009 CBM-V3 Fingerprint Sensor 000a MSO1300-E3 Fingerprint Sensor 000b MSO1300-V3 Fingerprint Sensor 000c MSO1350-E3 Fingerprint Sensor & SmartCard Reader 000d MSO1350-V3 Fingerprint Sensor & SmartCard Reader 000e MorphoAccess SIGMA Biometric Access Control Terminal 9015 Tablet 2 9024 Tablet 2 9039 Tablet 2 secure multifunction biometric tablet 904d Tablet 2 secure multifunction biometric tablet 904e Tablet 2 secure multifunction biometric tablet 9091 Tablet 2 secure multifunction biometric tablet 9092 Tablet 2 secure multifunction biometric tablet f000 Tablet 2 secure multifunction biometric tablet f003 Tablet 2 secure multifunction biometric tablet f006 Tablet 2 secure multifunction biometric tablet f00e Tablet 2 secure multifunction biometric tablet 226e DISPLAX 228d 8D Technologies inc. 0001 Terminal Bike Key Reader 22a4 VERZO Technology 22a6 Pie Digital, Inc. ffff PieKey "beta" 4GB model 4E4F41482E4F5247 (SM3251Q BB) 22a7 Fortinet Technologies 1001 FortiGate Device 22b1 Secret Labs LLC 1000 Netduino MCU pcb 22b8 Motorola PCS 0001 Wally 2.2 chipset 0002 Wally 2.4 chipset 0005 V.60c/V.60i GSM Phone 002e XT1806 0830 2386C-HT820 0833 2386C-HT820 [Flash Mode] 0850 Bluetooth Device 1001 Patriot 1.0 (GSM) chipset 1002 Patriot 2.0 chipset 1005 T280e GSM/GPRS Phone 1101 Patriot 1.0 (TDMA) chipset 1801 Rainbow chipset flash 2035 Bluetooth Device 2805 GSM Modem 2821 T720 GSM Phone 2822 V.120e GSM Phone 2823 Flash Interface 2a01 MSM6050 chipset 2a02 CDMA modem 2a03 MSM6050 chipset flash 2a21 V710 GSM Phone (P2K) 2a22 V710 GSM Phone (AT) 2a23 MSM6100 chipset flash 2a41 MSM6300 chipset 2a42 Usb Modem 2a43 MSM6300 chipset flash 2a61 E815 GSM Phone (P2K) 2a62 E815 GSM Phone (AT) 2a63 MSM6500 chipset flash 2a81 MSM6025 chipset 2a83 MSM6025 chipset flash 2ac1 MSM6100 chipset 2ac3 MSM6100 chipset flash 2d78 XT300[SPICE] 2e82 XT1541 [Moto G 3rd Gen] 2e83 XT1033 [Moto G], PTP mode 3001 A835/E1000 GSM Phone (P2K) 3002 A835/E1000 GSM Phone (AT) 3801 C350L/C450 (P2K) 3802 C330/C350L/C450/EZX GSM Phone (AT) 3803 Neptune LT chipset flash 4001 OMAP 1.0 chipset 4002 A920/A925 UMTS Phone 4003 OMAP 1.0 chipset flash 4008 OMAP 1.0 chipset RDL 41d6 Droid X (Windows media mode) 41d9 Droid/Milestone 41db Droid/Milestone (Debug mode) 41de Droid X (PC mode) 4204 MPx200 Smartphone 4214 MPc GSM 4224 MPx220 Smartphone 4234 MPc CDMA 4244 MPx100 Smartphone 4285 Droid X (Mass storage) 42d9 XT910 [Droid RAZR] 4801 Neptune LTS chipset 4803 Neptune LTS chipset flash 4810 Triplet GSM Phone (storage) 4901 Triplet GSM Phone (P2K) 4902 Triplet GSM Phone (AT) 4903 Neptune LTE chipset flash 4a01 Neptune LTX chipset 4a03 Neptune LTX chipset flash 4a32 L6-imode Phone 5801 Neptune ULS chipset 5803 Neptune ULS chipset flash 5901 Neptune VLT chipset 5903 Neptune VLT chipset flash 6001 Dalhart EZX 6003 Dalhart flash 6004 EZX GSM Phone (CDC Net) 6006 MOTOROKR E6 6008 Dalhart RDL 6009 EZX GSM Phone (P2K) 600a Dalhart EZX config 17 600b Dalhart EZX config 18 600c EZX GSM Phone (USBLAN) 6021 JUIX chipset 6023 JUIX chipset flash 6026 Flash RAM Downloader/miniOS 6027 USBLAN 604c EZX GSM Phone (Storage) 6101 Talon integrated chipset 6401 Argon chipset 6403 Argon chipset flash 6411 ROKR Z6 (print mode) 6415 ROKR Z6 (MTP mode) 6422 ROKR Z6 (modem mode) 6426 ROKR Z6 (storage mode) 6604 Washington CDMA Phone 6631 CDC Modem 7001 Q Smartphone 7086 Atrix 70a8 Xoom Tablet fe01 StarTAC III MS900 22b9 eTurboTouch Technology, Inc. 0006 Touch Screen 22ba Technology Innovation Holdings, Ltd 0108 Double Shock Steering Wheel HID 0109 Double Shock Steering Wheel Hub 22c9 StepOver GmbH 0601 naturaSign Pad Colour 0701 naturaSign Pad Mobile 0801 naturaSign Pad Comfort 0881 naturaSign Pad Flawless 0901 naturaSign Pad Classic 09e1 naturaSign Pad Biometric 0ce1 duraSign Pad Brilliance 0cf1 duraSign Pad Biometric 5.0 0d01 duraSign 10.0 0df1 duraSign Pad Biometric 10.0 22cd Kinova Robotics Inc. 22d4 Laview Technology 1301 Mionix NAOS 8200 [STM32F103 MCU] 1308 Mionix Avior 7000 130c Mionix Naos 7000 1316 Mionix Castor 22d9 OPPO Electronics Corp. 2765 Oppo N1 2767 Oppo Find 5 (X909) 22db Phase One 0003 IQ3 100MP IG030372 22dc Mellanox Technologies 0004 BlueField SOC 22de WeTelecom Incorporated 22df Medicom MTD, Ltd 22e0 secunet Security Networks AG 0002 SINA Flash Drive 0003 SINA ID Token A 22e8 Cambridge Audio 6512 651N Audio 6969 Audio Prototype 7512 751R Audio 770a X70A Audio 850c 851C Audio [Azur 850C] 851d 851D Audio [Azur 851D] ca02 Audio ca04 Audio ca06 AmpMagic dac2 DacMagic Plus dac3 Azur DacMagic 100 dac4 Azur DacMagic 100 dac6 DacMagicXS 2.0 dac8 Audio 2304 Pinnacle Systems, Inc. 0109 Studio PCTV USB (SECAM) 0110 Studio PCTV USB (PAL) 0111 Miro PCTV USB 0112 Studio PCTV USB (NTSC) with FM radio 0201 Systems MovieBox Device 0204 MovieBox USB_B 0205 DVC 150B 0206 Systems MovieBox Deluxe Device 0207 Dazzle DVC90 Video Device 0208 Studio PCTV USB2 020e PCTV 200e 020f PCTV 400e BDA Device 0210 Studio PCTV USB (PAL) with FM radio 0212 Studio PCTV USB (NTSC) 0213 500-USB Device 0214 Studio PCTV USB (PAL) with FM radio 0216 PCTV 60e 0219 PCTV 260e 021a Dazzle DVC100 Audio Device 021b Dazzle DVC130/DVC170 021d Dazzle DVC130 021e Dazzle DVC170 021f PCTV Sat HDTV Pro BDA Device 0222 PCTV Sat Pro BDA Device 0223 DazzleTV Sat BDA Device 0225 Remote Kit Infrared Transceiver 0226 PCTV 330e 0227 PCTV for Mac, HD Stick 0228 PCTV DVB-T Flash Stick 0229 PCTV Dual DVB-T 2001e 022a PCTV 160e 022b PCTV 71e [Afatech AF9015] 0232 PCTV 170e 0236 PCTV 72e [DiBcom DiB7000PC] 0237 PCTV 73e [DiBcom DiB7000PC] 023a PCTV 801e 023b PCTV 801e SE 023d PCTV 340e 023e PCTV 340e SE 0300 Studio Linx Video input cable (NTSC) 0301 Studio Linx Video input cable (PAL) 0302 Dazzle DVC120 0419 PCTV Bungee USB (PAL) with FM radio 061d PCTV Deluxe (NTSC) Device 061e PCTV Deluxe (PAL) Device 2304 1689 2309 TimeLink Technology Co., Ltd 1001 Touch Device(hid) 1005 Touch Device 1006 Touch Device(2) 1007 MulTouch Device(hid) 1009 Touch Device(hid) 230d Teracom 0103 Huwaii 3g wireless modem 2314 INQ Mobile 2318 Shining Technologies, Inc. [hex] 0011 CitiDISK Jr. IDE Enclosure 2319 Tronsmart 0014 TSM01 Air Mouse + Keyboard 232b Pantum Ltd. 0810 P2000 232e EA Elektro-Automatik GmbH & Co. KG 0010 EA-PS-2000 B Series Power Supply 2340 Teleepoch 2341 Arduino SA 0001 Uno (CDC ACM) 0010 Mega 2560 (CDC ACM) 0036 Leonardo Bootloader 003b Serial Adapter (CDC ACM) 003d Due Programming Port 003e Due 003f Mega ADK (CDC ACM) 0042 Mega 2560 R3 (CDC ACM) 0043 Uno R3 (CDC ACM) 0044 Mega ADK R3 (CDC ACM) 0045 Serial R3 (CDC ACM) 0049 ISP 8036 Leonardo (CDC ACM, HID) 8038 Robot Control Board (CDC ACM, HID) 8039 Robot Motor Board (CDC ACM, HID) 2349 P2 Engineering Group, LLC 234b Free Software Initiative of Japan 0000 Gnuk Token 0001 NeuG True RNG 2357 TP-Link 0005 M7350 4G Mi-Fi Router 0100 TL-WN8200ND [Realtek RTL8192CU] 0101 RTL8812AU Archer T4U 802.11ac 0103 Archer T4UH wireless Realtek 8812AU 0105 Archer T1U 802.11a/n/ac Wireless Adapter [MediaTek MT7610U] 0106 Archer T9UH v1 [Realtek RTL8814AU] 0107 TL-WN821N v5/v6 [RTL8192EU] 0108 TL-WN822N Version 4 RTL8192EU 0109 TL-WN823N v2/v3 [Realtek RTL8192EU] 010b Archer T2UHP [MediaTek MT7610U] 010c TL-WN722N v2/v3 [Realtek RTL8188EUS] 010d Archer T4U v2 [Realtek RTL8812AU] 010e Archer T4UH v2 [Realtek RTL8812AU] 010f Archer T4UHP [Realtek RTL8812AU] 0115 Archer T4U ver.3 011e AC600 wireless Realtek RTL8811AU [Archer T2U Nano] 0120 Archer T2U PLUS [RTL8821AU] 012d Archer T3U [Realtek RTL8812BU] 0200 MA 180 Zero CD 0201 HSUPA Modem MA180 0600 UE300 10/100/1000 LAN (mass storage CD-ROM mode) [Realtek RTL8153] 0601 UE300 10/100/1000 LAN (ethernet mode) [Realtek RTL8153] 2366 Bitmanufaktur GmbH 0001 Reserved Prototyping PID 0002 OpenBeacon USB 2 0003 OpenPCD 2 RFID Reader for 13.56MHz 0004 OpenBeacon 0005 Blinkenlights WDIM 0006 Blinkenlights WMCU 0007 OpenBeacon Ethernet EasyReader PoE II - Active 2.4GHz RFID Reader 0008 OpenBeacon WLAN 0009 OpenPCD 2 RFID Reader for 13.56MHz 000a OpenPCD 2 Audio & LCD Display 2367 Teenage Engineering 0002 OP-1 Portable synthesizer 000c OP-Z Portable synthesizer 2368 Peterson Electro-Musical Products Inc. 0001 BBS-1 [BodyBeat Sync] 236a SiBEAM 1965 SB6501 802.11ad Wireless Network Adapter 2373 Pumatronix Ltda 0001 5 MegaPixel Digital Still Camera [DSC5M] 2375 Digit@lway, Inc. 0001 Digital Audio Player 2378 OnLive 100a Universal Wireless Controller 237d Cradlepoint 0400 MC400 2386 Raydium Corporation 3125 Touch System 4328 Touch System 432f Touch System 238b Hytera Communications 0a11 DMR Radio 239a Adafruit 0001 CDC Bootloader 801e Trinket M0 23a0 BIFIT 0001 Token iBank2key 0002 iBank2Key Type M Token 0003 iToken 0008 MS_KEY K - Angara 23a6 Tronical Components GmbH 2000 Gibson Firebird X Pedal Board 2001 Gibson Firebird X Switch Board 23b4 Dental Wings Inc. 0200 DW0200 Color Camera 0300 DW0300 Hight Speed Monochrome Camera 23c7 Gemini 1021 FirstMix 23fc SesKion GmbH 0201 SPI-Simulyzer box for SPI data communication 0202 PSI5-Simulyzer box for PSI5 (Peripheral-Sensor-Interfacs) data communication 0203 SENT-Simulyzer box for SENT data communication 0204 DSI-Simulyzer box for DSI3 data communication 2405 Custom Computer Services, Inc 0002 West Mountain Radio RIGblaster Advantage Audio 0003 West Mountain Radio RIGblaster Advantage 2406 SANHO Digital Electronics Co., Ltd. 6688 PD7X Portable Storage 2420 IRiver 242e Vossloh-Schwabe Deutschland GmbH 0001 DALI Master 0002 LiCS Bootloader Mode 0003 LiCS Running Mode 0004 iProgrammer 0005 NFC programming device 2433 ASETEK b200 [NZXT Kraken X60] 2443 Aessent Technology Ltd 00dc aes220 FPGA Mini-Module 2457 Ocean Optics Inc. 100a HR2000 Spectrometer 1.00.0 1012 HR4000 Spectrometer 2458 Bluegiga Technologies 0001 BLED112 Bluetooth 4.0 Single Mode Dongle 245f Chord Electronics Limited 2464 Nest 0001 Learning Thermostat 0002 Learning Thermostat (2nd Generation) 0010 Protect : Smoke + Carbon Monoxide 0020 Heat Link 2466 Fractal Audio Systems 8003 Axe-Fx II 8010 Axe-FX III 2476 YEI Technology 1040 3-Space Embedded Sensor 2478 Tripp-Lite 2008 U209-000-R Serial Port 248a Maxxter 8366 Wireless Optical Mouse ACT-MUSW-002 8367 Telink Wireless Receiver 249c M2Tech s.r.l. 24a4 Primare AB 0002 I15_v1.06 [Primare Audio DAC] 24ae Shenzhen Rapoo Technology Co., Ltd. 0001 KX Keyboard 0197 meva Barcode Scanner 1813 E9260 Wireless Multi-mode Keyboard 2000 2.4G Wireless Device Serial 2001 5 GHz Wireless Receiver 2003 5GHz Wireless Transceiver 4110 Optical Gaming Mouse [V280] 6000 Wireless Audio 24c0 Chaney Instrument 0003 Model 01036 weather center 24c6 ThrustMaster, Inc. 5000 Razer Atrox Gaming Arcade Stick 5300 PowerA Mini ProEX Controller for Xbox 360 5303 Airflo Wired Controller for Xbox 360 530a ProEX Controller for Xbox 360 531a Pro Ex mini for XBOX 5397 FUS1ON Tournament Controller 541a PowerA CPFA115320-01 [Mini Controller for Xbox One] 542a Spectra for Xbox One 543a PowerA Wired Controller for Xbox One 5500 Horipad EX2 Turbo 5501 Hori Real Arcade Pro.VX-SA for Xbox 360 5502 Hori Fighting Stick VX Alt for Xbox 360 5503 Hori Fighting Edge for Xbox 360 5506 Hori Soulcalibur V Stick for Xbox 360 550d Hori Gem Controller for Xbox 360 550e Real Arcade Pro V Kai for Xbox One / Xbox 360 551a Fusion Pro Controller 561a Fusion Controller for Xbox One 5b00 Ferrari 458 Italia Racing Wheel 5b02 GPX Controller 5d04 Sabertooth Elite fa00 INF-8032385 Disney Infinity Reader fafb Aplay Controller fafd Afterglow Gamepad for Xbox 360 fafe Rock Candy Gamepad for Xbox 360 24cf Lytro, Inc. 00a1 Light Field Camera 24dc Aladdin R.D. 0406 JaCarta SF GOST 24e0 Yoctopuce Sarl 24e1 Paratronic 3001 Adp-usb 3005 Radius 24e3 K-Touch 24ea Meva 0197 Barcode Scanner 24ed Zen Group 044d Chat Headset 24f0 Metadot 0105 Das Keyboard 4 0140 Das Keyboard 4 2020 Das Keyboard 5Q 24ff Acroname Inc. 2500 Ettus Research LLC 0020 USRP B210 0021 USRP B200-mini 0022 USRP B205-mini 0200 USRP B200 2516 Cooler Master Co., Ltd. 0003 Storm Xornet 0004 Storm QuickFire Rapid Mechanical Keyboard 0006 Storm Recon 0007 Storm Sentinel Advance II 0009 Storm Quick Fire PRO 0011 Storm Quick Fire TK 6keys 0014 Storm Quick Fire TK Nkeys 0015 Storm QuickFire Pro/Ultimate keyboard 0017 CM Storm Quick Fire Stealth 001a Storm Quick Fire XT 0020 QuickFire Rapid-i Keyboard 0027 CM Storm Coolermaster Novatouch TKL 002d Alcor mouse 0042 Masterkeys Lite L Combo RGB Keyboard 0044 Masterkeys Lite L Combo RGB Mouse 0046 Masterkeys PRO L 0047 MasterKeys Pro L 0055 MasterKeys L 1006 MasterCase SL600M 9494 Sirus Headset 2520 ANA-U GmbH 0001 EasyPrinter S3 2527 Software Bisque 1388 Paramount 5 2537 Norelsys 1066 NS1066 1068 NS1068/NS1068X SATA Bridge Controller 2544 Energy Micro AS 2546 Ravensburger e301 TipToi Pen 2548 Pulse-Eight 1001 CEC Adapter 1002 CEC Adapter 254e SHF Communication Technologies AG e2b3 SHF 58035 A BiasBoard 2554 ASSA ABLOY AB 2555 Basis Science Inc. 0001 B1 Fitness Band 255e Beijing Bonxeon Technology Co., Ltd. 0001 Device 0002 Dual 2560 e-con Systems c152 See3CAM_CU51 5 Mpx monochrome camera 2563 ShenZhen ShanWan Technology Co., Ltd. 031d DXT Mouse 0523 BM0523 WirelessGamepad 0575 ZD-V+ Wired Gaming Controller 256b Perreaux Industries Ltd 0121 Audiant 80i 256f 3Dconnexion c62e SpaceMouse Wireless (cabled) c62f SpaceMouse Wireless Receiver c631 SpaceMouse Pro Wireless (cabled) c632 SpaceMouse Pro Wireless Receiver c633 SpaceMouse Enterprise c635 SpaceMouse Compact c651 CadMouse Wireless c652 Universal Receiver c654 CadMouse Pro Wireless c657 CadMouse Pro Wireless Left 2573 ESI Audiotechnik GmbH 0017 MAYA22 2574 AVer Information, Inc. 0901 VC520 0910 CAM520 0920 VC320 0930 CAM530 0940 CAM340 0950 VC322 0960 VB342 2575 Weida Hi-Tech Co., Ltd. 2576 AFO Co., Ltd. 0003 TCM 0005 BL [Boot Loader] 0011 THM 2578 Pluscom 4168 2.4GHZ Wireless Arc Folding Mouse 2581 Plug-up 1807 Generic HID Smartcard 1808 WinUSB Smartcard f1d0 Nitrokey U2F 258d Sequans Communications 259a TriQuint Semiconductor 25a7 Areson Technology Corp 2410 Laser mouse fa23 2.4G Receiver fa61 Elecom Co., Ltd MR-K013 Multicard Reader 25b5 FlatFrog 0002 Multitouch 3200 25bb Brunner Elektronik AG 0063 PRT.5105 [Yoke] 0064 PRT.5105 [reserved] 0065 PRT.5096 [Battery Management System] 0066 PRT.5096 [Battery Management System] 0067 PRT.5094 0068 PRT.5094 0069 PRT.5119 [Ethernet2CAN LC Gateway] 006a PRT.5113 [CLS CANaerospace Gateway] 006b PRT.5123 006c PRT.5123 [reserved] 006d PRT.5127 00ff MSP430 HID Update Agent 25bf Elegant Invention 0001 Isostick 0002 Isostick updater 25c4 ARCAM 25c6 Vitus Audio (AVA Group A/S) 25c8 Visual Planet Ltd 0014 Single User touchfoil(tm) (SU2-80) 25da Netatmo 0001 Weather Station 25dd Bit4id Srl 1101 miniLector-s 1201 cryptokey 2221 iAM 2311 keyfour-a1 2321 CKey4 2341 tokenME FIPS v3 2351 Digital DNA Key 2354 Digital-DNA Key 2361 Digital-DNA Key BT 2362 Digital-DNA Key 2371 TokenME EVO v2 23b4 ArubaKey AK901 3111 miniLector EVO 3211 miniLector AIR EVO 3403 miniLector AIR NFC v3 3503 mLector AIR DI V3 b001 miniLector Blue 25e3 Lumigon 25f0 ShanWan c131 Gioteck PS3 2.4G Wireless Controller 25fb Pentax Ricoh Imaging Co., Ltd 0102 K-5 2604 Tenda 0012 U12 2625 MilDef AB 2626 Aruba Networks ea60 UART Bridge Controller [cp210x] 262a SAVITECH Corp. 100e SA9027 Audio Streaming Controller 10e0 SA9023 Audio Streaming Controller 9020 SA9020 audio controller 9023 SA9023 audio controller 9027 SA9027 audio controller 9226 SA9226 192KHz audio controller 9227 SA9227 384KHz audio controller 9228 SA9228 384KHz/DSD audio controller 2632 TwinMOS 3209 7-in-1 Card Reader 2639 Xsens 0001 MTi-10 IMU 0002 MTi-20 VRU 0003 MTi-30 AHRS 0011 MTi-100 IMU 0012 MTi-200 VRU 0013 MTi-300 AHRS 0017 MTi-G 7xx GNSS/INS 0100 Body Pack 0101 Awinda Station 0102 Awinda Dongle 0103 Sync Station 0200 MTw 0300 Motion Tracker Development Board 0301 MTi Converter d00d Wireless Receiver 264a Thermaltake 1004 Ventus 2650 Electronics For Imaging, Inc. [hex] 1311 eBeam Classic [Luidia] 2659 Sundtek 1101 TNT DVB-T/DAB/DAB+/FM 1201 FM Transmitter/Receiver 1202 MediaTV Analog/FM/DVB-T 1203 MediaTV Analog/FM/DVB-T MiniPCIe 1204 MediaTV Analog/FM/ATSC 1205 SkyTV Ultimate V 1206 MediaTV DVB-T MiniPCIe 1207 Sundtek HD Capture 1208 Sundtek SkyTV Ultimate III 1209 MediaTV Analog/FM/ATSC MiniPCIe 1210 MediaTV Pro III (EU) 1211 MediaTV Pro III (US) 1212 MediaTV Pro III MiniPCIe (EU) 1213 MediaTV Pro III MiniPCIe (US) 2662 Moog Music Inc. 266e Silicon Integrated Systems 2672 GoPro 0004 Hero 3 0006 HERO 3+ Silver Edition 0007 HERO 3+ Black 000e HERO4 Black 0011 Hero 3+ Black 2676 Basler AG ba02 ace ba03 ba03 dart Vision Caera ba04 ba04 pulse Vision Camera ba05 Vision Camera ba06 Vision Camera ba07 Vision Camera ba08 Vision Camera ba09 Vision Camera ba0a Vision Camera ba0b Vision Camera ba0c Vision Camera ba0d Vision Camera ba0e Vision Camera ba0f Vision Camera 2685 Cardo Peripheral Systems LTD 0900 [Packtalk Bold Bluetooth Motorcycle Intercom] 2687 Fitbit Inc. fb01 Base Station 2689 StepOver International GmbH 0601 naturaSign Pad POS 0901 naturaSign Pad Light 0ce1 Pad Vivid US 0cf1 Pad Biometric US 5.0 0d01 duraSign Pad US 10.0 0df1 duraSign Pad Biometric US 10.0 268b Dimension Engineering 0101 DELink 2 0201 Sabertooth 2x32 0405 Evolv DNA 200 0406 Evolv DNA 200 0407 Evolv DNA 200 0408 Evolv DNA 75 0409 Evolv DNA 250 0412 Evolv DNA 60 0413 Evolv DNA 200 0414 Evolv DNA 250 0415 Evolv DNA 75 0416 Evolv DNA 60 0417 Evolv DNA Go 0419 Evolv DNA 250 Color 0423 Evolv DNA 200 0424 Evolv DNA 250 0425 Evolv DNA 75 0426 Evolv DNA 60 8405 Evolv DNA 200 (recovery mode) 8406 Evolv DNA 200 (recovery mode) 8407 Evolv DNA 200 (recovery mode) 8408 Evolv DNA 75 (recovery mode) 8409 Evolv DNA 250 (recovery mode) 8412 Evolv DNA 60 (recovery mode) 8413 Evolv DNA 200 (recovery mode) 8414 Evolv DNA 250 (recovery mode) 8415 Evolv DNA 75 (recovery mode) 8416 Evolv DNA 60 (recovery mode) 8423 Evolv DNA 200 (recovery mode) 8424 Evolv DNA 250 (recovery mode) 8425 Evolv DNA 75 (recovery mode) 8426 Evolv DNA 60 (recovery mode) 26a9 Research Industrial Systems Engineering 0001 Payment Terminal v1.0 26aa Yaesu Musen 0001 FT-1D 000e FTA-550 000f FTA-750 26b5 Electrocompaniet 0002 ECD 2 0003 ECD 2 (Audio Class 1) 0004 PI 2D 0005 PI 2D (Audio Class 1) 0006 ECI 6 0007 ECI 6 (Audio Class 1) 0020 ECI 80 26bd Integral Memory 9917 Fusion Flash Drive 26e2 Ingenieurbuero Dietzsch und Thiele, PartG 26f2 Micromega 0200 MyDac 2707 Bardac Corporation 0005 drive.web 270d Rosand Technologies 1001 R-Idge Bootloader 1002 R-Idge Router 2717 Xiaomi Inc. 0011 100Mbps Network Card Adapter 0360 Mi3W 0368 Mi4 LTE 3801 Mi ANC & Type-C In-Ear Earphones 4106 MediaTek MT7601U [MI WiFi] ff08 Redmi Note 3 (ADB Interface) ff10 Mi/Redmi series (PTP) ff18 Mi/Redmi series (PTP + ADB) ff40 Mi/Redmi series (MTP) ff48 Mi/Redmi series (MTP + ADB) ff60 redmi prime 2 ff68 Mi-4c ff80 Mi/Redmi series (RNDIS) ff88 Mi/Redmi series (RNDIS + ADB) 272a StarLeaf Ltd. 272c Signum Systems 7d13 I-jet 2730 Citizen 0fff CT-S2000/4000/310/CLP-521/621/631/CL-S700 Series 1004 PPU-700 2002 CT-S2000 Thermal Printer (Parallel mode) 200f CT-S310 Label printer 2735 DigitalWay 0003 MPIO HS100 1001 MPIO FY200 1002 MPIO FL100 1003 MPIO FD100 1004 MPIO HD200 1005 MPIO HD300 1006 MPIO FG100 1007 MPIO FG130 1008 MPIO FY300 1009 MPIO FY400 100a MPIO FL300 100b MPIO HS200 100c MPIO FL350 100d MPIO FY500 100e MPIO FY500 100f MPIO FY600 1012 MPIO FL400 1013 MPIO HD400 1014 MPIO HD400 1016 MPIO FY700 1017 MPIO FY700 1018 MPIO FY800 1019 MPIO FY800 101a MPIO FY900 101b MPIO FY900 102b MPIO FL500 102c MPIO FL500 103f MPIO FY570 1040 MPIO FY570 1041 MPIO FY670 1042 MPIO FY670 1043 HCT HMD-180A 1044 HCT HMD-180A 273f Hughski Limited 1000 ColorHug bootloader 1001 ColorHug 1002 ColorHug+ 1003 ColorHug+ Bootloader 1004 ColorHug2 1005 ColorHug2 bootloader 2756 Victor Hasselblad AB 0002 X1D Camera 2759 Philip Morris Products S.A. 0003 IQOS Pocket Charger 2.4 2765 Firstbeat Technologies, Ltd. 0004 Bodyguard 2 2766 LifeScan 0000 OneTouch Verio 2770 NHJ, Ltd 0a01 ScanJet 4600 series 905c Che-Ez Snap SNAP-U/Digigr8/Soundstar TDC-35 9060 A130 9120 Che-ez! Snap / iClick Tiny VGA Digital Camera 9130 TCG 501 913c Argus DC-1730 9150 Mini Cam 9153 iClick 5X 915d Cyberpix S-210S / Little Tikes My Real Digital Camera 930b CCD Webcam(PC370R) 930c CCD Webcam(PC370R) 27a8 Square, Inc. a120 Contactless + Chip Reader 27b8 ThingM 01ed blink(1) 27bd Codethink Ltd. 0001 Slab Node Manager 0002 Slab Node Manager JTAG 27c0 Cadwell Laboratories, Inc. 0818 Paperlike HD-FT 27c6 Shenzhen Goodix Technology Co.,Ltd. 5117 Fingerprint Reader 5201 Fingerprint Reader 5301 Fingerprint Reader 530c Fingerprint Reader 532d Fingerprint 5381 Fingerprint Reader 5385 Fingerprint Reader 538c Fingerprint Reader 5395 Fingerprint Reader 5584 Fingerprint Reader 55b4 Fingerprint Reader 5740 Fingerprint Reader 27d4 Blackstar Amplification Limited 27dd Mindeo 0002 Mindeo Virtual COM Port 27f2 Softnautics LLP 2803 StarLine LLC. 0001 Controller Area Network car alarm module [SLCAN-2] 2806 SIMPASS 0001 N-PASS X1 2817 Signal Hound, Inc. 0002 BB60C Spectrum Analyzer 0004 SM200A Spectrum Analyzer 2818 Codex Digital Limited 0001 Transfer Drive Dock 2821 ASUSTek Computer Inc. 0161 WL-161 802.11b Wireless Adapter [SiS 162U] 160f WL-160g 802.11g Wireless Adapter [Envara WiND512] 3300 WL-140 / Hawking HWU36D 802.11b Wireless Adapter [Intersil PRISM 3] 2822 REFLEXdigital 2833 Oculus VR, Inc. 0001 Rift Developer Kit 1 0021 Rift DK2 0031 Rift CV1 0101 Latency Tester 0137 Quest Headset 0201 Camera DK2 0211 Rift CV1 Sensor 0330 Rift CV1 Audio 1031 Rift CV1 2021 Rift DK2 2031 Rift CV1 3031 Rift CV1 2836 OUYA 286b STANEO SAS 0003 D6BB/D9 seismic digitizer 2886 Seeed Technology Co., Ltd. 0002 Seeeduino Lite 2890 Teknic, Inc 0213 ClearPath 4-axis Comm Hub 2899 Toptronic Industrial Co., Ltd 012c Camera Device 289b Dracal/Raphnet technologies 0001 Gamecube/N64 controller v2.2 0002 2nes2snes 0003 4nes4snes 0004 Gamecube/N64 controller v2.3 0005 Saturn (Joystick mode) 0006 Saturn (Mouse mode) 0007 Famicom controller 0008 Dreamcast (Joystick mode) 0009 Dreamcast (Mouse mode) 000a Dreamcast (Keyboard mode) 000b Gamecube/N64 controller v2.9 (Keyboard mode) 000c Gamecube/N64 controller v2.9 (Joystick mode) 000e VirtualBoy controller 0010 WUSBMote v1.2 (Joystick mode) 0011 WUSBMote v1.2 (Mouse mode) 0012 WUSBMote v1.2.1 (Joystick mode) 0013 WUSBMote v1.2.1 (Mouse mode) 0014 WUSBMote v1.3 (Joystick mode) 0015 WUSBMote v1.3 (Mouse mode) 0016 WUSBMote v1.3 (I2C interface mode) 0017 Gamecube/N64 controller v3.0 0018 Atari Jaguar controller 0019 MultiDB9joy v3 001a MultiDB9joy v3 (multitap mode) 0100 Dual-relay board 0500 Energy meter 0502 Precision barometer 289d Seek Thermal, Inc. 0010 PIR206 Thermal Camera [Seek Compact] 28bd XP-Pen 0920 Star G960 Graphic Tablet 28c7 Ultimaker B.V. 0001 3D printer serial interface 28d4 Devialet 0008 120/200/250/400/800/D-Premier 28de Valve Software 1102 Wired Controller 1142 Wireless Steam Controller 2000 Lighthouse FPGA RX 2012 Virtual Reality Controller [VRC] 2101 Watchman Dongle 2500 Lighthouse Base Station 28e0 PT. Prasimax Inovasi Teknologi 1001 BTS Monitoring Config for Prototype 5740 TRUMON TS-107 5741 TRUMON TS-108 28e9 GDMicroelectronics 0189 GD32 DFU Bootloader (Longan Nano) 28f3 Clover Network, Inc. 2000 Mobile Wi-Fi (C200) 3000 Mini 4000 Flex 28f9 Profitap HQ BV 0001 Profishark 1G Black 0003 Profishark 1G+ 0004 Profishark 1G 0005 Profishark 10G 0006 Profishark 100M 290c R. Hamilton & Co. Ltd. 4b4d Mercury iPod Dock 2912 Audioengine 20c8 D1 24-bit DAC 30c8 D1 24-bit DAC 2916 Yota Devices 2931 Jolla Oy 0a01 Jolla Phone MTP 0a02 Jolla Phone Developer 0a05 Jolla PC connection 0a07 Phone MTP 0afe Jolla charging only 2939 Zaber Technologies Inc. 4959 A-MCB2 495a X-MCB1 495b X-MCB2 49b1 X-MCB1 49b2 X-MCB2 49c1 X-MCC1 49c2 X-MCC2 49c3 X-MCC3 49c4 X-MCC4 2957 Obsidian Research Corporation 0001 Management Console 2961 Miselu 0001 C.24 keyboard 296b Xacti Corporation 3917 CX-WE100 Camera 2972 FiiO Electronics Technology 0007 X3 2nd gen audio player / DAC 298d Next Biometrics 2020 NB-2020-U Fingerprint Reader 29bd Silicon Works 4101 Multi-touch Device 29c1 Taztag 1105 M17-G903-1 [Tazpad] 1107 M17-G903-A [Tazpad] (CCID) 29c2 Lewitt GmbH 0001 DGT 650 0003 DGT 450 0009 DGT 260 0011 Stream 4x5 29c3 Noviga 29e2 Huatune Technology (Shanghai) Co., Ltd. 29e7 Brunel University 29e8 4Links Limited 29ea Kinesis Corporation 0102 Advantage2 Keyboard 29f1 Canaan Creative Co., Ltd 33f1 Avalon nano 1.0 33f2 Avalon USB2IIC Converter 33f3 Avalon nano 2.0 40f1 Avalon4 mini 2a03 dog hunter AG 0001 Linino ONE (bootloader) 0036 Arduino Leonardo (bootloader) 0037 Arduino Micro (bootloader) 0038 Arduino Robot Control (bootloader) 0039 Arduino Robot Motor (bootloader) 003a Arduino Micro ADK rev3 (bootloader) 003b Arduino usb2serial 003c Arduino Explora (bootloader) 003d Arduino Due (usb2serial) 003e Arduino Due 0041 Arduino Yun (bootloader) 0042 Arduino Mega 2560 Rev3 0043 Arduino Uno Rev3 004d Arduino Zero Pro (bootloader) 8001 Linino ONE (CDC ACM) 8036 Arduino Leonardo (CDC ACM) 8037 Arduino Micro (CDC ACM) 8038 Arduino Robot Control (CDC ACM) 8039 Arduino Robot Motor (CDC ACM) 803a Arduino Micro ADK rev3 (CDC ACM) 803c Arduino Explora (CDC ACM) 8041 Arduino Yun (CDC ACM) 804d Arduino Zero Pro (CDC ACM) 2a0e Shenzhen DreamSource Technology Co., Ltd. 2a13 Grabba International 0000 S-Series data capture device 2a19 Numato Systems Pvt. Ltd 1002 Mimas V2 Spartan6 FPGA Development Board 5440 TimVideos' HDMI2USB Opsis (FX2) - Unconfigured device 5441 TimVideos' HDMI2USB Opsis (FX2) - Firmware load/upgrade 5442 TimVideos' HDMI2USB Opsis (FX2) - HDMI/DVI Capture Device 2a1d Oxford Nanopore Technologies plc 0000 MinION 0001 MinION 0010 VolTRAX 0011 VolTRAX 0020 GridION 0021 GridION 0120 GridION Mk1 Bay 0121 GridION Mk1 Bay 2a37 RTD Embedded Technologies, Inc. 5110 UPS35110/UPS25110 2a39 RME 3fb0 Babyface Pro (Class Compliant Mode) 3fc0 Babyface Pro 3fc1 Fireface UFX+ 3fc2 Fireface UFX+ 3fd1 Fireface UFX+ 2a3c Trinamic Motion Control GmbH & Co KG 0100 Stepper Device 0200 BLDC/PMSM Device 0300 Motor Control Device 0400 Motor Control Device 0500 PANdrive(TM) 0600 motionCookie(TM) 0700 Evaluation Device 0800 Interface Device 0900 Generic Device 2a45 Meizu Corp. 0001 MX Phone (BICR) 0c02 MX Phone (MTP & ADB) 0c03 MX Phone (BICR & ADB) 2008 MX Phone (MTP) 200a MX Phone (MTP & ACM & ADB) 200b MX Phone (PTP) 200c MX Phone (PTP & ADB) 2012 MX Phone (MTP & ACM) 2a47 Mundo Reader, S.L. 0c02 bq Aquaris E4.5 201d Tablet Edison 3 903a bq Aquaris U 2a4b EMULEX Corporation 0400 Pilot4 Integrated Hub 2a62 Flymaster Avionics b301 LiveSD b302 NavSD 2a6e Bare Conductive 0003 Touch Board 8003 Touch Board 2a70 OnePlus Technology (Shenzhen) Co., Ltd. 4ee7 ONEPLUS A3010 [OnePlus 3T] / A5010 [OnePlus 5T] / A6003 [OnePlus 6] (Charging + USB debugging modes) 904d A3000 phone (PTP mode) [3T] 904e A3000 phone (PTP mode, with debug) [3T] 2a88 DFU Technology Ltd ffff DFU 2a8d Keysight Technologies, Inc. 2ab6 T+A elektroakustik GmbH & Co KG, Germany 0001 PDP3000HV DAC 0002 MP1000E, MP2000R, MP2500R, MP3100HV 0003 TA HD AUDIO V2 2ac7 Ultrahaptics Ltd. 0101 Evaluation Kit [Dragonfly] 0102 UHDK5 0104 Touchbase 0110 STRATOS Explore 0111 STRATOS Explore DFU 0112 STRATOS Inspire 0113 STRATOS Inspire DFU ffff DFU 2ad1 Picotronic GmbH 7ab8 Turningtable 2ae5 Fairphone B.V. 9015 2 (Mass storage & ADB) 9024 2 (RNDIS & ADB) 9039 2 (MTP & ADB) 904d 2 (PTP) 904e 2 (PTP & ADB) 90de 2 (Charging) f000 2 (Mass storage) f003 2 (MTP) f005 2 (tethering) f00e 2 (RNDIS) 2aec Ambiq Micro, Inc. 6011 Converter 2af4 ROLI Ltd. 0100 Seaboard GRAND 0200 Seaboard RISE 0300 BlueWing Proto 0400 VOICE 0500 BLOCKS 2b03 STEREOLABS f580 ZED camera f582 ZED camera f680 ZED-M camera f681 ZED-M HID Interface f682 ZED-M camera f683 ZED-M HID Interface f684 ZED-M camera 2b0e LeEco 171b Le2 171e Le2 in USB tethering mode 1830 Le1 Pro 1844 Le Max2 2b0e LeEco 6108 Lex720 [LePro 3] in connection sharing usb 610b Lex720 [LePro 3] in Camera mode 610c Lex720 [LePro 3] 610d Lex720 [LePro 3] in debug 2b23 Red Hat, Inc. cafe UsbDk (USB Development Kit) 2b24 KeepKey LLC 0001 Bitcoin Wallet [KeepKey] 0002 Bitcoin Wallet 2b3e NewAE Technology Inc. ace2 CW1173 [ChipWhisperer-Lite] 2b4c ZUK 1004 Z1 MTP 2bc5 Orbbec 3D Technology International, Inc 0401 Astra 0403 Astra Pro 0407 Astra Mini S 2bcc InoTec GmbH Organisationssysteme 2bd6 Coroware, Inc. 4201 RS-485 Controller and Interface [Cypress Semiconductor] 2bd8 ROPEX Industrie-Elektronik GmbH 2c02 Planex Communications 14ea GW-US11H WLAN 2c1a Dolphin Peripherals 0000 Wireless Optical Mouse 2c23 Supermicro Computer Incorporated 1b83 NIC 2c4e Mercucys INC 0100 MW300UM RTL8192EU wifi 2c4f Canon Electronic Business Machines Co., Ltd. 3003 PR Wireless Presenter 2c55 Magic Leap, Inc. a100 ML1 Lightpack (MLDB) b100 ML1 Lightpack (fastboot) c001 ML1 Control (COM) c002 ML1 Control (Bootloader) 2c7c Quectel Wireless Solutions Co., Ltd. 0121 EC21 LTE modem 0125 EC25 LTE modem 0191 EG91 LTE modem 0195 EG95 LTE modem 0296 BG96 CAT-M1/NB-IoT modem 0306 EG06/EP06/EM06 LTE-A modem 0435 AG35 LTE modem 2c97 Ledger 0000 Blue 0001 Nano S 0004 Nano X 2c99 Prusa 0001 i3 MK2S 2c9c Vayyar Imaging Ltd. 1000 Walabot Makers Series 1020 Walabot DIY 1022 Walabot DIY Plus 1030 Walabot Home (vHC) 9100 VNAKit 2c9d Nod Inc 90a0 Goa bac5 Backspin 2ca3 DJI Technology Co., Ltd. 0008 Mavic Mini MR1SD25 Remote controller 2cb7 Fibocom 0210 L830-EB-00 LTE WWAN Modem 2cc0 Hangzhou Zero Zero Infinity Technology Co., Ltd. 2cc2 Lautsprecher Teufel GmbH 2ccf Hypersecu 0880 HyperFIDO 2cd9 Cambrionix Ltd 0804 PowerSync4 USBPD Hub 2cdc Sea & Sun Technology GmbH f232 CTD48Mc CTD Probe 2ce5 InX8 Inc [AKiTiO] 0014 Mass Storage [NT2 U31C] 2cf0 Nuand LLC 5246 bladeRF 5250 bladeRF 2.0 micro 2d1f Wacom Taiwan Information Co. Ltd. 2d25 Kronegger GmbH. 2d2d proxmark.org 504d Proxmark3 2d37 Zhuhai Poskey Technology Co.,Ltd 2d6b NetUP Inc. 7777 Joker TV universal DTV receiver 2d81 Evollve Inc. 4f01 Ozobot Evo 2d84 Zhuhai Poskey Technology Co.,Ltd b806 DT-108B Thermal Label Printer 2dc8 8BitDo 5006 M30 Bluetooth gamepad 5750 Bootloader 6000 SF30 Pro gamepad 6001 SN30/SF30 Pro gamepad ab11 F30 gamepad ab12 N30 gamepad ab20 SN30/SF30 gamepad ab21 SF30 gamepad 2dcf Dialog Semiconductor c951 Audio Class 1.0 Devices c952 Audio Class 2.0 Devices 2def Kirale Technologies 0000 KiNOS Boot DFU 0102 KTWM102 Module 2df2 LIPS Corporation 0213 LIPSedge DL 3D ToF Camera 0215 LIPSedge DL RGB Camera 2102 LIPSedge 5 Megapixel RGB Camera 2e04 HMD Global 0001 Nokia 3310 3G 0002 Nokia 3310 3G 0a14 Nokia 3310 3G c008 Tethering Network Interface c009 Nokia 1 (bootloader) c025 Nokia 8 (MTP mode) c026 Nokia Smartphone c029 Nokia 8 (PTP mode) c031 Nokia 1 (PTP) c03f Nokia 8 (MIDI mode) 2e0e Hatteland Display AS 0001 CAN Gateway 2e24 Hyperkin 0652 Duke Xbox One controller 1688 X91 Xbox One controller 2e3b uSens Inc. 2e57 MEGWARE Computer Vertrieb und Service GmbH 454d SlideSX EnergyMeter 454e SlideSX EnergyMeter DFU 5cba SlideSX / ClustSafe Bus Adapter 2e69 Swift Navigation 1001 Piksi Multi 2e95 SCUF Gaming 7725 Controller 2ecc ASR Microelectronics 2001 Smartphone (MTP) 2002 Smartphone (MTP + ADB) 2007 Smartphone (ADB Interface) 2f76 KeyXentic Inc. 0905 KX905 Smart Terminal 0906 KX906 Smart Card Reader 1906 KX906 Smart Token (Mass Storage) 2fad Definium Technologies 2fb0 Infocrypt 2fb2 Fujitsu, Ltd 2fc0 Sensidyne, LP 0001 Project Archer 2fc6 Comtrue Inc. 6012 UAC2 Device GB 2fe0 Xaptum, Inc. 8b01 XAP-RC-001 ENF Router Card 8b02 XAP-RW-001 ENF Router Card with WiFi 8bde XAP-EA-002 ENF Access Card 8bee XAP-EA-003 ENF Access Card 2fe3 NordicSemiconductor 2fe7 ELGIN S.A. 0001 SMART S@T 2feb Beijing Veikk E-Commerce Co., Ltd. 0004 Veikk A15 Pen Tablet 2ff4 Quixant Plc 3016 Boundary Devices, LLC 0001 Nitrogen Bootloader 3036 Control iD 0001 Print iD 0002 iDBio 3037 Beijing Chushifengmang Technology Development Co.,Ltd. 3057 Kingsis Corporation 0002 ZOWIE Gaming mouse 308f Input Club 0000 Infinity 60% Bootloader 0001 Infinity 60% - Standard 0002 Infinity 60% - Hacker 0003 Infinity Ergodox Bootloader 0004 Infinity Ergodox 0005 WhiteFox Bootloader 0006 WhiteFox - Vanilla 0007 WhiteFox - ISO 0008 WhiteFox - Aria 0009 WhiteFox - Winkeyless 000a WhiteFox - True Fox 000b WhiteFox - Jack of All Trades 000c Infinity 60% LED Bootloader 000d Infinity 60% LED - Standard 000e Infinity 60% LED - Hacker 000f Infinity 60% LED - Alphabet 0010 K-Type Bootloader 0011 K-Type 0012 Kira Bootloader 0013 Kira 0014 Gemini Dawn/Dusk Bootloader 0015 Gemini Dawn/Dusk 0016 Re:Type Bootloader 0017 Re:Type 0018 Re:Type USB Hub 0019 WhiteFox (SAM4S) Bootloader 001a WhiteFox (SAM4S) - Vanilla 001b WhiteFox (SAM4S) - ISO 001c WhiteFox (SAM4S) - Aria 001d WhiteFox (SAM4S) - Winkeyless 001e WhiteFox (SAM4S) - True Fox 001f WhiteFox (SAM4S) - Jack of All Trades 30a4 Blues Wireless 0001 Notecard 30c2 UNPARALLEL Innovation, Lda 1388 SPL Meter 30c9 Luxvisions Innotech Limited 30ee Fujitsu Connected Technologies Limited 1001 F-01L 30f2 Varex Imaging 3111 Hiperscan GmbH 0000 SGS-NT Microspectrometer 3112 Meteca SA 0001 MBC-WB01 (CDC-ACM) 0002 MBC-WB01 (Bootloader) 0003 ABC (CDC ACM) 0004 ABC (Bootloader) 3125 Eagletron 0001 TrackerPod Camera Stand 3136 Navini Networks 3145 SafeLogic Inc. 3147 Tanvas, Inc. 316c SigmaSense, LLC 316d Purism, SPC 4c4b Librem Key 316e SPECINFOSYSTEMS 0001 DIAMOND token 3171 8086 Consultancy 0011 ClusterCTRL DA 0012 ClusterCTRL pHAT 0013 ClusterCTRL A+6 0014 ClusterCTRL Triple 0015 ClusterCTRL Single 3176 Whanam Electronics Co., Ltd 3195 Link Instruments f190 MSO-19 f280 MSO-28 f281 MSO-28 3197 Katusha 1001 M151 1002 M250 1003 P130 1004 M130 1101 P247 1102 M247 1103 M348 31c9 BeiJing LanXum Computer Technology Co., Ltd. 1001 Printer 1301 Black and White Laser Printer 1501 LaserPrint GA50 series 3200 Alcatel-Lucent Enterprise 2100 ALE 8058s 2101 ALE 8068s 2102 8078s 3219 Smak Tecnologia e Automacao LTDA 0044 SKO44 Optical Keyboard 321c Premio, Inc. 324c CUPRIS Ltd. 326d Agile Display Solutions Co., Ltd 0001 Avocor USB Camera 3275 VidzMedia Pte Ltd 4fb1 MonsterTV P2H 3293 Unhuman Inc. 32b3 TEXA d1a6 TXT Multihub d1a7 TXT Multihub 3310 MUDITA Sp. z o.o. 0100 Pure 0101 Pure tethering 0300 Harmony 3333 InLine 3333 2 port KVM switch model 60652K 3334 AEI 1701 Fast Ethernet 3340 Yakumo 043a Mio A701 DigiWalker PPCPhone 0e3a Pocket PC 300 GPS SL / Typhoon MyGuide 3500 a0a3 deltaX 5 BT (D) PDA ffff Mio DigiWalker Sync 3344 Leaguer Microelectronics (LME) 3744 OEM PC Remote 3384 System76 0000 Thelio Io (thelio-io) 0001 Launch Configurable Keyboard (launch_1) 348f ISY 2322 Wireless Presenter 3504 Micro Star f110 Security Key 3538 Power Quotient International Co., Ltd 0001 Travel Flash 0015 Mass Storge Device 0022 Hi-Speed Mass Storage Device 0042 Cool Drive U339 Flash Disk 0054 Flash Drive (2GB) 0901 Traveling Disk U273 (4GB) 3579 DIVA 6901 Media Reader 357d Sharkoon 7788 JMicron JMS567 ATA/ATAPI Bridge 3636 InVibro 3767 Fanatec 0101 Speedster 3 Forceshock Wheel 3838 WEM 0001 5-in-1 Card Reader 1031 2.4G Wireless Mouse 3923 National Instruments Corp. 12c0 DAQPad-6020E 12d0 DAQPad-6507 12e0 NI 4350 12f0 NI 5102 1750 DAQPad-6508 17b0 USB-ISA-Bridge 1820 DAQPad-6020E (68 pin I/O) 1830 DAQPad-6020E (BNC) 1f00 DAQPad-6024E 1f10 DAQPad-6024E 1f20 DAQPad-6025E 1f30 DAQPad-6025E 1f40 DAQPad-6036E 1f50 DAQPad-6036E 2f80 DAQPad-6052E 2f90 DAQPad-6052E 702a GPIB-USB-B 702b GPIB-USB-B Initialization 703c USB-485 RS485 Cable 709b GPIB-USB-HS 7166 USB-8451 716e USB-8451 Firmware Loader 717a USB-6008 717b USB-6009 71d6 USB-6008 OEM 71d7 USB-6009 OEM 71d8 USB-6009 OEM 7254 NI MIO (data acquisition card) firmware updater 729e USB-6251 (OEM) data acquisition card 7346 USB-6229 755b myDAQ 76af USB-6000 76b0 USB-6000 OEM 76bf USB-6001 76c0 USB-6001 OEM 76c4 USB-6002 76c5 USB-6002 OEM 76c6 USB-6003 76c7 USB-6003 OEM 40bb I-O Data 0a09 USB2.0-SCSI Bridge USB2-SC 4101 i-rocks 1301 IR-2510 usb phone 4102 iRiver, Ltd. 1001 iFP-100 series mp3 player 1003 iFP-300 series mp3 player 1005 iFP-500 series mp3 player 1007 iFP-700 series mp3/ogg vorbis player 1008 iFP-800 series mp3/ogg vorbis player 100a iFP-1000 series mp3/ogg vorbis player 1014 T20 series mp3/ogg vorbis player (ums firmware) 1019 T30 1034 T60 1040 M1Player 1041 E100 (ums) 1101 iFP-100 series mp3 player (ums firmware) 1103 iFP-300 series mp3 player (ums firmware) 1105 iFP-500 series mp3 player (ums firmware) 1113 T10 (alternate) 1117 T10 1119 T30 series mp3/ogg/wma player 1141 E100 (mtp) 2002 H10 6GB 2101 H10 20GB (mtp) 2102 H10 5GB (mtp) 2105 H10 5/6GB (mtp) 413c Dell Computer Corp. 0000 DRAC 5 Virtual Keyboard and Mouse 0001 DRAC 5 Virtual Media 0058 Port Replicator 1001 Keyboard Hub 1002 Keyboard Hub 1003 Keyboard Hub 1005 Multimedia Pro Keyboard Hub 2001 Keyboard HID Support 2002 SK-8125 Keyboard 2003 Keyboard SK-8115 2005 RT7D50 Keyboard 2010 Keyboard 2011 Multimedia Pro Keyboard 2100 SK-3106 Keyboard 2101 SK-3205 SmartCard Reader Keyboard 2105 Model L100 Keyboard 2106 QuietKey Keyboard 2107 KB212-B Quiet Key Keyboard 2113 KB216 Wired Keyboard 2134 Hub of E-Port Replicator 21d7 Dell Wireless 5560 HSPA+ Mobile Broadband Modem 2500 DRAC4 Remote Access Card 2501 Keyboard and mouse dongle 2513 internal USB Hub of E-Port Replicator 3010 Optical Wheel Mouse 3012 Optical Wheel Mouse 3016 Optical 5-Button Wheel Mouse 301a Dell MS116 Optical Mouse 301b Universal Bluetooth Receiver 3200 Mouse 4001 Axim X5 4002 Axim X3 4003 Axim X30 4004 Axim Sync 4005 Axim Sync 4006 Axim Sync 4007 Axim Sync 4008 Axim Sync 4009 Axim Sync 4011 Axim X51v 5103 AIO Printer A940 5105 AIO Printer A920 5107 AIO Printer A960 5109 Photo AIO Printer 922 5110 Photo AIO Printer 962 5111 Photo AIO Printer 942 5112 Photo AIO Printer 924 5113 Photo AIO Printer 944 5114 Photo AIO Printer 964 5115 Photo AIO Printer 926 5116 AIO Printer 946 5117 Photo AIO Printer 966 5118 AIO 810 5124 Laser MFP 1815 5128 Photo AIO 928 5133 968 AIO Printer 5200 Laser Printer 5202 Printing Support 5203 Printing Support 5210 Printing Support 5211 1110 Laser Printer 5220 Laser MFP 1600n 5225 Printing Support 5226 Printing Support 5228 Laser Printer 1720dn 5300 Laser Printer 5400 Laser Printer 5401 Laser Printer 5404 1250c Color Printer 5513 WLA3310 Wireless Adapter [Intersil ISL3887] 5534 Hub of E-Port Replicator 5601 Laser Printer 3100cn 5602 Laser Printer 3000cn 5607 MFP Color Laser Printer 3115cn 5631 Laser Printer 5100cn 564a C1765 series Multifunction Color LaserPrinter, Scanner & Copier 5905 Printing Support 8000 BC02 Bluetooth Adapter 8010 TrueMobile Bluetooth Module in 8100 TrueMobile 1180 802.11b Adapter [Intersil PRISM 3] 8102 TrueMobile 1300 802.11g Wireless Adapter [Intersil ISL3880] 8103 Wireless 350 Bluetooth 8104 Wireless 1450 Dual-band (802.11a/b/g) Adapter [Intersil ISL3887] 8105 U2 in HID - Driver 8106 Wireless 350 Bluetooth Internal Card in 8110 Wireless 3xx Bluetooth Internal Card 8111 Wireless 3xx Bluetooth Internal Card in 8114 Wireless 5700 Mobile Broadband (CDMA EV-DO) Minicard Modem 8115 Wireless 5500 Mobile Broadband (3G HSDPA) Minicard Modem 8116 Wireless 5505 Mobile Broadband (3G HSDPA) Minicard Modem 8117 Wireless 5700 Mobile Broadband (CDMA EV-DO) Expresscard Modem 8118 Wireless 5510 Mobile Broadband (3G HSDPA) Expresscard Status Port 8120 Bluetooth adapter 8121 Eastfold in HID 8122 Eastfold in DFU 8123 eHome Infrared Receiver 8124 eHome Infrared Receiver 8126 Wireless 355 Bluetooth 8127 Wireless 355 Module with Bluetooth 2.0 + EDR Technology. 8128 Wireless 5700-Sprint Mobile Broadband (CDMA EV-DO) Mini-Card Status Port 8129 Wireless 5700-Telus Mobile Broadband (CDMA EV-DO) Mini-Card Status Port 8131 Wireless 360 Bluetooth 2.0 + EDR module. 8133 Wireless 5720 VZW Mobile Broadband (EVDO Rev-A) Minicard GPS Port 8134 Wireless 5720 Sprint Mobile Broadband (EVDO Rev-A) Minicard Status Port 8135 Wireless 5720 TELUS Mobile Broadband (EVDO Rev-A) Minicard Diagnostics Port 8136 Wireless 5520 Cingular Mobile Broadband (3G HSDPA) Minicard Diagnostics Port 8137 Wireless 5520 Voda L Mobile Broadband (3G HSDPA) Minicard Status Port 8138 Wireless 5520 Voda I Mobile Broadband (3G HSDPA) Minicard EAP-SIM Port 8140 Wireless 360 Bluetooth 8142 Mobile 360 in DFU 8143 Broadcom BCM20702A0 Bluetooth 8147 F3507g Mobile Broadband Module 8156 Wireless 370 Bluetooth Mini-card 8157 Integrated Keyboard 8158 Integrated Touchpad / Trackstick 8160 Wireless 365 Bluetooth 8161 Integrated Keyboard 8162 Integrated Touchpad [Synaptics] 8171 Gobi Wireless Modem (QDL mode) 8172 Gobi Wireless Modem 8183 F3607gw Mobile Broadband Module 8184 F3607gw v2 Mobile Broadband Module 8185 Gobi 2000 Wireless Modem (QDL mode) 8186 Gobi 2000 Wireless Modem 8187 DW375 Bluetooth Module 818e DW5560 miniPCIe HSPA+ Mobile Broadband Modem 8197 BCM20702A0 Bluetooth Module 81a0 Wireless 5808 Mobile Broadband (Sierra Wireless MC7355 Mini PCIE, 4G UMTS,HSDPA,HSPA+,LTE,1xRTT,EVDO Rev A,GSM,GPRS) 81a3 Hub of E-Port Replicator 81a8 Wireless 5808 Mobile Broadband (Sierra Wireless Mini PCIE, 4G UMTS,HSDPA,HSPA+,LTE,1xRTT,EVDO Rev A,GSM,GPRS) 8501 Bluetooth Adapter 9001 ATA Bridge 9009 Portable Device 9500 USB CP210x UART Bridge Controller [DW700] a001 Hub a005 Internal 2.0 Hub a101 Internal Dual SD Card module a102 iDRAC Virtual NIC a503 AC511 Sound Bar a700 Hub (in 1905FP LCD Monitor) b007 Streak 5 Android Tablet 4146 USBest Technology 9281 Iomega Micro Mini 128MB Flash Drive ba01 Intuix Flash Drive 4168 Targus 1010 Wireless Compact Laser Mouse 4242 USB Design by Example 4201 Buttons and Lights HID device 4220 Echo 1 Camera 4255 GoPro 1000 9FF2 [Digital Photo Display] 2000 HD2-14 [Hero 2 Camera] 4317 Broadcom Corp. 0700 U.S. Robotics USR5426 802.11g Adapter 0701 U.S. Robotics USR5425 Wireless MAXg Adapter 0711 Belkin F5D7051 v3000 802.11g 0720 Dynex DX-BUSB 0721 Dynex DX-EBUSB 4348 WinChipHead 5523 USB->RS 232 adapter with Prolific PL 2303 chipset 5537 13.56Mhz RFID Card Reader and Writer 5584 CH34x printer adapter cable 4572 Shuttle, Inc. 4572 Shuttle PN31 Remote 4586 Panram 1026 Crystal Bar Flash Drive 4670 EMS Production 9394 Game Cube USB Memory Adaptor 64M 46f4 QEMU 4752 Miditech 0011 Midistart-2 4757 GW Instek 2009 PEL-2000 Series Electronic Load (CDC) 2010 PEL-2000 Series Electronic Load (CDC) 4766 Aceeca 0001 MEZ1000 RDA 4855 Memorex 7288 Ultra Traveldrive 160G 2.5" HDD 4971 SimpleTech 1004 Hitachi LifeStudio Desk (3.5" HDD) [w/o flash key] 1013 Touro Desk Pro 1015 Touro Desk 3.0 8001 G-Tech G-DRIVE Mobile cb01 SP-U25/120G cd15 Simple Drive Mini (2.5" HDD) ce07 SimpleDrive (3.5" HDD) ce12 FV-U35 ce17 1TB SimpleDrive II USB External Hard Drive ce18 (re)Drive ce21 JMicron JM20329 SATA Bridge [eg. HITACHI SimpleDrive mini] ce22 Hitachi SimpleTough (3.5" HDD) 4d46 Musical Fidelity 0001 V-Link 0002 V-DAC II 5032 Grandtec 0bb8 Grandtec USB1.1 DVB-T (cold) 0bb9 Grandtec USB1.1 DVB-T (warm) 0fa0 Grandtec USB1.1 DVB-T (cold) 0fa1 Grandtec USB1.1 DVB-T (warm) 50c2 Averatec (?) 4013 WLAN Adapter 5131 MSR 2007 MSR-101U Mini HID magnetic card reader 5173 Sweex 1809 ZD1211 5219 I-Tetra 1001 Cetus CDC Device 5332 Clearly Superior Technologies, Inc. 1300 CST2545-5W (L-Trac) 5345 Owon 1234 PDS6062T Oscilloscope 534c SatoshiLabs 0001 Bitcoin Wallet [TREZOR] 0002 Bitcoin Wallet [TREZOR v2] 534d MacroSilicon 0021 MS210x Video Grabber [EasierCAP] 6021 VGA Display Adapter 5354 Meyer Instruments (MIS) 0017 PAXcam2 544d Transmeta Corp. 5543 UC-Logic Technology Corp. 0002 SuperPen WP3325U Tablet 0003 Tablet WP4030U 0004 Tablet WP5540U 0005 Tablet WP8060U 0041 Genius PenSketch 6x8 Tablet 0042 Tablet PF1209 004a XP-Pen Artist 10S tablet 004d Tablet Monitor MSP19U 0064 Aiptek HyperPen 10000U 3031 Graphics tablet [DrawImage G3, Ugee G3] 5555 Epiphan Systems Inc. 1110 VGA2USB 1120 KVM2USB 2222 DVI2USB 3333 VGA2USB Pro 3337 KVM2USB Pro 3340 VGA2USB LR 3344 KVM2USB LR 3411 DVI2USB Solo 3422 DVI2USB Duo 3500 DVI2USB3 3501 DVI2USB3 Rev3 3510 DVI2USB3_ET 3520 SDI2USB3 55aa OnSpec Electronic, Inc. 0015 Hard Drive 0102 SuperDisk 0103 IDE Hard Drive 0201 DDI to Reader-19 1234 ATAPI Bridge a103 Sandisk SDDR-55 SmartMedia Card Reader b000 USB to CompactFlash Card Reader b004 OnSpec MMC/SD Reader/Writer b00b USB to Memory Stick Card Reader b00c USB to SmartMedia Card Reader b012 Mitsumi FA402M 8-in-2 Card Reader b200 Compact Flash Reader b204 MMC/ SD Reader b207 Memory Stick Reader 5654 Gotview ca42 MasterHD 3 5656 Uni-Trend Group Limited 0832 UT2000/UT3000 Digital Storage Oscilloscope 595a IRTOUCHSYSTEMS Co. Ltd. 0001 Touchscreen 5986 Bison Electronics Inc. 0100 Acer Orbicam 0101 USB2.0 Camera 0102 Acer Crystal Eye Webcam 0105 Acer Crystal Eye Webcam 0137 HP Webcam 0141 BisonCam, NB Pro 0149 HP Webcam-101 014c MSI Integrated Webcam 01a6 Lenovo Integrated Webcam 01a7 Lenovo Integrated Webcam 01a9 Lenovo Integrated Webcam 0200 Acer OrbiCam 0202 Fujitsu Webcam 0203 BisonCam NB Pro 1300 0205 Lenovo EasyCamera 0217 Integrated Webcam 0241 BisonCam, NB Pro 0268 SunplusIT INC. Integrated Camera 026a Integrated Camera 0292 Lenovo Integrated Webcam 0294 Lenovo Integrated Webcam 0295 Lenovo Integrated Webcam 0299 Lenovo Integrated Webcam 029c Lenovo EasyCamera 02ac HP TrueVision HD Webcam 02d0 Lenovo Integrated Webcam [R5U877] 02d2 ThinkPad Integrated Camera 02d5 Integrated Camera 03b3 Lenovo Integrated Webcam 03d0 Lenovo Integrated Webcam [R5U877] 0400 BisonCam, NB Pro 0535 Lenovo EasyCamera integrated webcam 055a Lenovo Integrated Webcam 0652 Lenovo EasyCamera 0670 Lenovo EasyCamera 0671 Lenovo EasyCamera 0706 ThinkPad P50 Integrated Camera 2113 SunplusIT Integrated Camera a002 Lenovo EasyCamera Integrated Webcam 59e3 Nonolith Labs 5a57 Zinwell 0260 RT2570 0280 802.11a/b/g/n USB Wireless LAN Card 0282 802.11b/g/n USB Wireless LAN Card 0283 802.11b/g/n USB Wireless LAN Card 0284 802.11a/b/g/n USB Wireless LAN Card 0290 ZW-N290 802.11n [Realtek RTL8192U] 5257 Metronic 495257 wifi 802.11ng 6000 Beholder International Ltd. 0001 Trident TVBOX Video Grabber dec0 TV Wander dec1 TV Voyage 601a Ingenic Semiconductor Ltd. 4740 XBurst Jz4740 boot mode 4760 JZ4760 Boot Device 6022 Xektek 0500 SuperPro Universal Device Programmer 6189 Sitecom 182d LN-029 10/100 Ethernet Adapter 2068 USB to serial cable (v2) 6244 LightingSoft AG 0101 Intelligent Usb Dmx Interface SIUDI5A 0201 Intelligent Usb Dmx Interface SIUDI5C 0300 Intelligent Usb Dmx Interface SIUDI6 Firmware download 0301 Intelligent Usb Dmx Interface SIUDI6C 0302 Intelligent Usb Dmx Interface SIUDI6A 0303 Intelligent Usb Dmx Interface SIUDI6D 0400 Touch Sensitive Intelligent Control Keypad STICK1A 0401 Touch Sensitive Intelligent Control Keypad STICK1A 0410 Intelligent Usb Dmx Interface SIUDI7 Firmware Download 0411 Intelligent Usb Dmx Interface SIUDI7A 0420 Intelligent Usb Dmx Interface SIUDI8A Firmware Download 0421 Intelligent Usb Dmx Interface SIUDI8A 0430 Intelligent Usb Dmx Interface SIUDI8C Firmware Download 0431 Intelligent Usb Dmx Interface SIUDI8C 0440 Intelligent Usb Dmx Interface SIUDI9A Firmware Download 0441 Intelligent Usb Dmx Interface SIUDI9A 0450 Intelligent Usb Dmx Interface SIUDI9C Firmware Download 0451 Intelligent Usb Dmx Interface SIUDI9C 0460 Touch Sensitive Intelligent Control Keypad STICK2 Firmware download 0461 Touch Sensitive Intelligent Control Keypad STICK2 0470 Touch Sensitive Intelligent Control Keypad STICK1B Firmware download 0471 Touch Sensitive Intelligent Control Keypad STICK1B 0480 Touch Sensitive Intelligent Control Keypad STICK3 Firmware download 0481 Touch Sensitive Intelligent Control Keypad STICK3 0490 Intelligent Usb Dmx Interface SIUDI9D Firmware Download 0491 Intelligent Usb Dmx Interface SIUDI9D 0500 Touch Sensitive Intelligent Control Keypad STICK2B Firmware download 0501 Touch Sensitive Intelligent Control Keypad STICK2B 0520 Touch Sensitive Intelligent Control Keypad (STICK2C Firmware download, 32/64bits 0521 Touch Sensitive Intelligent Control Keypad (STICK2C, 32/64bits) 0540 Sunlite Universal Smart Handy Interface (SUSHI1A Firmware download, 32/64bits) 0541 Sunlite Universal Smart Handy Interface (SUSHI1A, 32/64bits) 0570 Touch Sensitive Intelligent Control Keypad (STICK4A Firmware download, 32/64bits) 0571 Touch Sensitive Intelligent Control Keypad (STICK4A, 32/64bits) 0580 Touch Sensitive Intelligent Control Keypad (STICK5A Firmware download, 32/64bits) 0581 Touch Sensitive Intelligent Control Keypad (STICK5A, 32/64bits) 0590 Intelligent Dmx Interface (SIUDI9S Firmware Download, 32/64bits) 0591 Intelligent Dmx Interface (SIUDI9S, 32/64bits) 0600 Intelligent Dmx Interface (SIUDI9M Firmware Download, 32/64bits) 0601 Intelligent Dmx Interface (SIUDI9M, 32/64bits) 0610 Intelligent Dmx Interface SIUDI10A Firmware Download 0611 Intelligent Dmx Interface SIUDI10A 6253 TwinHan Technology Co., Ltd 0100 Ir reciver f. remote control 636c CoreLogic, Inc. 6472 Sony Corp. 01c8 PlayStation Portable [Mass Storage] 6547 Arkmicro Technologies Inc. 0232 ARK3116 Serial 6557 Emtec 5500 Mass Storage Device 8005 Car Key 6615 IRTOUCHSYSTEMS Co. Ltd. 0001 Touchscreen 0020 IRTOUCH InfraRed TouchScreen 0081 TouchScreen 6666 Prototype product Vendor ID 0667 WiseGroup Smart Joy PSX, PS-PC Smart JoyPad 1c40 TELEMIC 802.15.4 Sensor node (Bootloader) 1c41 TELEMIC 802.15.4 Sensor node 2667 JCOP BlueZ Smartcard reader 8802 SmartJoy Dual Plus PS2 converter 8804 WiseGroup SuperJoy Box 5 6677 WiseGroup, Ltd. 8802 SmartJoy Dual Plus PS2 converter 8811 Deluxe Dance Mat 675d Humanscale 062a Switch Mouse 6891 3Com a727 3CRUSB10075 802.11bg [ZyDAS ZD1211] 695c Opera1 3829 Opera1 DVB-S (warm state) 6993 Yealink Network Technology Co., Ltd. b001 VoIP Phone 6a75 Shanghai Jujo Electronics Co., Ltd 7104 CME (Central Music Co.) 2202 UF5/UF6/UF7/UF8 MIDI Master Keyboard 726c StackFoundry LLC 2149 EntropyKing Random Number Generator 7302 Solinftec 0001 HUB 4X232 734c TBS Technologies China 5920 Q-Box II DVB-S2 HD 5928 Q-Box II DVB-S2 HD 7373 Beijing STONE Technology Co. Ltd. 5740 Intelligent TFT-LCD Module 7392 Edimax Technology Co., Ltd 7711 EW-7711UTn nLite Wireless Adapter [Ralink RT3070] 7717 EW-7717UN 802.11n Wireless Adapter [Ralink RT2770] 7718 EW-7718UN 802.11n Wireless Adapter [Ralink RT2870] 7722 EW-7722UTn 802.11n Wireless Adapter [Ralink RT3072] 7733 EW-7733UnD 802.11abgn 3x3:3 [Ralink RT3573] 7811 EW-7811Un 802.11n Wireless Adapter [Realtek RTL8188CUS] 7822 EW-7612UAn V2 802.11n Wireless Adapter [Realtek RTL8192CU] a611 EW-7611ULB 802.11b/g/n and Bluetooth 4.0 Adapter a711 EW-7711MAC 802.11ac Wireless Adapter a811 EW-7811UTC 802.11ac Wireless Adapter b711 EW-7722UAC 802.11a/b/g/n/ac (2x2) Wireless Adapter [MediaTek MT7612U] b822 EW-7822ULC 802.11ac Wireless Adapter [Realtek RTL8812AU] 73d8 Progeny Dental Equipment Specialists 0104 VetPro DR, Size 1 0105 VetPro DR, Size 2 7669 Venable Instruments 350c Model 350c, Frequency Response Analyzer 5140 Model 5140, Frequency Response Analyzer 6305 Model 6305, Frequency Response Analyzer 6320 Model 6320, Frequency Response Analyzer 6340 Model 6340, Frequency Response Analyzer 7405 Model 7405, Frequency Response Analyzer 7420 Model 7420, Frequency Response Analyzer 7440 Model 7440, Frequency Response Analyzer 8805 Model 8805, Frequency Response Analyzer 8820 Model 8820, Frequency Response Analyzer 8840 Model 8840, Frequency Response Analyzer 7825 Other World Computing a2a4 External SATA Hard Drive Adapter cable PA023U3 b0b3 miniStack MAX 8070 ACCES I/O Products, Inc. 8003 USB-DIO-96 8070 USB-AO16-16A 8086 Intel Corp. 0001 AnyPoint (TM) Home Network 1.6 Mbps Wireless Adapter 0044 CPU DRAM Controller 0046 HD Graphics 0100 Personal Audio Player 3000 0101 Personal Audio Player 3000 0110 Easy PC Camera 0120 PC Camera CS120 0180 WiMAX Connection 2400m 0181 WiMAX Connection 2400m 0182 WiMAX Connection 2400m 0186 WiMAX Connection 2400m 0188 WiMAX Connection 2400m 0189 Centrino Advanced-N 6230 Bluetooth adapter 0200 AnyPoint(TM) Wireless II Network 11Mbps Adapter [Atmel AT76C503A] 0431 Pro Video PC Camera 0510 Digital Movie Creator 0630 Pocket PC Camera 0780 CS780 Microphone Input 07d3 BLOB boot loader firmware 07dc Bluetooth 4.0* Smart Ready (low energy) 0a66 RealSense 3D Camera (Front F200) 0aa5 RealSense SR300 0ad2 RealSense D410 0ad3 RealSense D415 0b07 RealSense D435 0b64 RealSense L515 0dad Cherry MiniatureCard Keyboard 1010 AnyPoint(TM) Home Network 10 Mbps Phoneline Adapter 110a Bluetooth Controller from (Ericsson P4A) 110b Bluetooth Controller from (Intel/CSR) 1110 PRO/Wireless LAN Module 1111 PRO/Wireless 2011B 802.11b Adapter [Intersil PRISM 2.5] 1122 Integrated Hub 1134 Hollister Mobile Monitor 1139 In-Target Probe (ITP) 1234 Prototype Reader/Writer 1403 WiMAX Connection 2400m 1405 WiMAX Connection 2400m 1406 WiMAX Connection 2400m 2448 82801 PCI Bridge 3100 PRO/DSL 3220 Modem - WAN 3101 PRO/DSL 3220 Modem 3240 AnyPoint® 3240 Modem - WAN 3241 AnyPoint® 3240 Modem 8602 Miniature Card Slot 8c26 8 Series/C220 Series EHCI #1 8c2d 8 Series/C220 Series EHCI #2 8c31 eXtensible Host Controller 9303 8x930Hx Hub 9500 CE 9500 DVB-T 9890 82930 Test Board a36d Host Controller beef SCM Miniature Card Reader/Writer c013 Wireless HID Station dead Galileo f001 XScale PXA27x Bulverde flash f1a5 Z-U130 [Value Solid State Drive] 8087 Intel Corp. 0020 Integrated Rate Matching Hub 0024 Integrated Rate Matching Hub 0025 Wireless-AC 9260 Bluetooth Adapter 0026 AX201 Bluetooth 0029 AX200 Bluetooth 0032 AX210 Bluetooth 0033 AX211 Bluetooth 0716 Modem Flashloader 07da Centrino Bluetooth Wireless Transceiver 07db Atom C2000 Root Hub 07dc Bluetooth wireless interface 07eb Oaktrail tablet 0a2a Bluetooth wireless interface 0a2b Bluetooth wireless interface 0a9e Edison 0aa7 Wireless-AC 3168 Bluetooth 0aaa Bluetooth 9460/9560 Jefferson Peak (JfP) 0fff Intel Android Bootloader Interface 8000 Integrated Rate Matching Hub 8001 Integrated Hub 8002 8 channel internal hub 8008 Integrated Rate Matching Hub 800a Hub 80ee VirtualBox 0021 USB Tablet 0022 multitouch tablet 8282 Keio 3201 Retro Adapter 3301 Retro Adapter Mouse 8301 Hapurs 0089 HPBT05R 2.4 G Mini Wireless Touchpad Keyboard 8341 EGO Systems, Inc. 2000 Flashdisk 8564 Transcend Information, Inc. 1000 JetFlash 4000 microSD/SD/CF UHS-II Card Reader [RDF8, RDF9] 6000 digital photo frame PF830 6002 digital photo frame PF830 7000 StoreJet 25H3 8644 Intenso GmbG 8003 Micro Line 800b Micro Line (4GB) 8e06 CH Products, Inc. f700 DT225 Trackball 8ea3 Doosl a02c Wireless Presenter Receiver 9016 Sitecom 182d WL-022 802.11b Adapter 9022 TeVii Technology Ltd. d630 DVB-S S630 d650 DVB-S2 S650 d660 DVB-S2 S660 9148 GeoLab, Ltd # All of GeoLab's devices share the same ID 0004. 0004 R3 Compatible Device 9516 Studiologic 9710 MosChip Semiconductor 7703 MCS7703 Serial Port Adapter 7705 MCS7705 Parallel port adapter 7715 MCS7715 Parallel and serial port adapter 7717 MCS7717 3-port hub with serial and parallel adapter 7720 MCS7720 Dual serial port adapter 7730 MCS7730 10/100 Mbps Ethernet adapter 7780 MCS7780 4Mbps Fast IrDA Adapter 7784 MCS7784 115.2Kb IrDA Adapter 7810 MCS7810 Serial Port Adapter 7820 MCS7820 Dual Serial Port Adapter 7830 MCS7830 10/100 Mbps Ethernet adapter 7832 MCS7832 10/100 Mbps Ethernet adapter 7840 MCS7820/MCS7840 2/4 port serial adapter 9990 MCS9990 PCIe Host Controller 9849 Bestmedia CD Recordable GmbH & Co. KG 0701 Platinum MyDrive HP 9886 Astro Gaming 0015 A50 9999 Odeon 0001 JAF Mobile Phone Flasher Interface 99fa Grandtec 8988 V.cap Camera Device 9ac4 J. Westhues 4b8f ProxMark-3 RFID Instrument 9e88 Marvell Semiconductor, Inc. 9e8f Plug Computer Basic [SheevaPlug] a014 Insignia (Best Buy) b014 Desktop Microphone NS-PAUM50 a108 Ingenic Semiconductor Co.,Ltd 1000 X1000 4775 JZ4775 Boot Device a128 AnMo Electronics Corp. / Dino-Lite (?) 0610 Dino-Lite Digital Microscope (SN9C201 + HV7131R) 0611 Dino-Lite Digital Microscope (SN9C201 + HV7131R) 0612 Dino-Lite Digital Microscope (SN9C120 + HV7131R) 0613 Dino-Lite Digital Microscope (SN9C201 + HV7131R) 0614 Dino-Lite Digital Microscope (SN9C201 + MI1310/MT9M111) 0615 Dino-Lite Digital Microscope (SN9C201 + MI1310/MT9M111) 0616 Dino-Lite Digital Microscope (SN9C120 + HV7131R) 0617 Dino-Lite Digital Microscope (SN9C201 + MI1310/MT9M111) 0618 Dino-Lite Digital Microscope (SN9C201 + HV7131R) a168 AnMo Electronics Corporation 0610 Dino-Lite Digital Microscope 0611 Dino-Lite Digital Microscope 0613 Dino-Lite Digital Microscope 0614 Dino-Lite Pro Digital Microscope 0615 Dino-Lite Pro Digital Microscope 0617 Dino-Lite Pro Digital Microscope 0618 Dino-Lite Digital Microscope a466 Haikou Xingong Electronics Co.,Ltd 0a53 TL866II Plus Device Programmer [MiniPRO] a600 ASIX s.r.o. 5500 zuban H2OPS - GPS for canoeing a000 SIGMA Logic Analyzer a002 EMUSB interface pro MU Beta c000 MREL Data Trap II c001 VUTS DMU4 c002 Electrone MASH c005 MREL HTU HandiTrap cable c006 JRC COmeter e110 OK1ZIA Davac 4.x e112 OK1ZIA Antenna rotator e113 OK1ZIA GPIO e114 OK1ZIA HD&Keyb a727 3Com 6893 3CRUSB20075 OfficeConnect Wireless 108Mbps 11g Adapter [Atheros AR5523] 6895 AR5523 6897 AR5523 a88a Clas Ohlsson 3003 PCFree Multimedia Remote Control PC aaaa MXT 8815 microSD CardReader 8816 microSD CardReader ab12 aplic 34cd JMICRON JMS578 SATA 6Gb/s bridge abcd LogiLink 1234 UDisk flash drive 6104 PCCloneEX Lite+ SATA docking station [QP0017] cdee Petcam b58e Blue Microphones 9e84 Yeti Stereo Microphone ba77 Clockmaker 7147 Agterbosch c216 Card Device Expert Co., LTD 0180 MSR90 MagStripe reader c251 Keil Software, Inc. 1705 MCB2300 2710 ULink 2723 ULink-ME c502 AGPTek 0029 Rocker cace CACE Technologies Inc. 0002 AirPCAP Classic 802.11 packet capture adapter 0300 AirPcap NX [Atheros AR9170+AR9104] cd12 SMART TECHNOLOGY INDUSTRIAL LTD. d208 Ultimarc 0310 Mini-PAC Arcade Control Interface d209 Ultimarc 0301 I-PAC Arcade Control Interface 0501 Ultra-Stik Ultimarc Ultra-Stik Player 1 1571 A-PAC Arcade Control Interface d904 LogiLink 0003 Laser Mouse (ID0009A) e2b7 Jie Li 0811 CD002 0812 CD005 MP3 Player e4e4 Xorcom Ltd. 1130 Astribank series 1131 Astribank series 1132 Astribank series 1140 Astribank series 1141 Astribank series 1142 Astribank series 1150 Astribank series 1151 Astribank series 1152 Astribank series 1160 Astribank 2 series 1161 Astribank 2 series 1162 Astribank 2 series eb03 MakingThings 0920 Make Controller Kit eb1a eMPIA Technology, Inc. 17de KWorld V-Stream XPERT DTV - DVB-T USB cold 17df KWorld V-Stream XPERT DTV - DVB-T USB warm 2571 M035 Compact Web Cam 2710 SilverCrest Webcam 2750 ECS Elitegroup G220 integrated Webcam 2761 EeePC 701 integrated Webcam 2776 Combined audio and video input device 2800 EM2800 Video Capture 2801 EM2801 Video Capture 2820 EM2820 Video Capture 2821 EM2820 Video Capture 2840 EM2840 Video Capture 2841 EM2840 Video Capture 2861 EasyCAP DC60+ [EM2861] 2863 Video Grabber 2870 Pinnacle PCTV Stick 2881 EM2881 Video Controller 50a3 Gadmei UTV380 TV Box 50a6 Gadmei UTV330 TV Box 5166 video grabber 28282 5184 VIDBOX NW06 [EM28281] 8179 Terratec Cinergy T2 Stick HD e305 KWorld PlusTV Analog Stick e355 KWorld DVB-T 355U Digital TV Dongle eb2a KWorld ef18 SMART TECHNOLOGY INDUSTRIAL LTD. f003 Hewlett Packard 6002 PhotoSmart C500 f007 Teslong a999 Endoscope Camera b999 Otoscope Camera f182 Leap Motion 0003 Controller f3f0 CCT, Inc 0740 multi-function device 1340 multi-function printer 1440 printer device 1921 printer f4ec Atten Electronics / Siglent Technologies ee38 Digital Storage Oscilloscope f4ed Shenzhen Siglent Co., Ltd. ee37 SDG1010 Waveform Generator ee3a SDG1010 Waveform Generator (TMC mode) f766 Hama 0001 PC-Gamepad "Greystorm" fa11 DyingLight 5afe DyingLight fc08 Conrad Electronic SE 0101 MIDI Cable UA0037 ff00 Power Delivery ffee FNK Tech 0100 Card Reader Controller RTS5101/RTS5111/RTS5116 # List of known device classes, subclasses and protocols # Syntax: # C class class_name # subclass subclass_name <-- single tab # protocol protocol_name <-- two tabs C 00 (Defined at Interface level) C 01 Audio 01 Control Device 02 Streaming 03 MIDI Streaming C 02 Communications 01 Direct Line 02 Abstract (modem) 00 None 01 AT-commands (v.25ter) 02 AT-commands (PCCA101) 03 AT-commands (PCCA101 + wakeup) 04 AT-commands (GSM) 05 AT-commands (3G) 06 AT-commands (CDMA) fe Defined by command set descriptor ff Vendor Specific (MSFT RNDIS?) 03 Telephone 04 Multi-Channel 05 CAPI Control 06 Ethernet Networking 07 ATM Networking 08 Wireless Handset Control 09 Device Management 0a Mobile Direct Line 0b OBEX 0c Ethernet Emulation 07 Ethernet Emulation (EEM) C 03 Human Interface Device 00 No Subclass 00 None 01 Keyboard 02 Mouse 01 Boot Interface Subclass 00 None 01 Keyboard 02 Mouse C 05 Physical Interface Device C 06 Imaging 01 Still Image Capture 01 Picture Transfer Protocol (PIMA 15470) C 07 Printer 01 Printer 00 Reserved/Undefined 01 Unidirectional 02 Bidirectional 03 IEEE 1284.4 compatible bidirectional ff Vendor Specific C 08 Mass Storage 01 RBC (typically Flash) 00 Control/Bulk/Interrupt 01 Control/Bulk 50 Bulk-Only 02 SFF-8020i, MMC-2 (ATAPI) 03 QIC-157 04 Floppy (UFI) 00 Control/Bulk/Interrupt 01 Control/Bulk 50 Bulk-Only 05 SFF-8070i 06 SCSI 00 Control/Bulk/Interrupt 01 Control/Bulk 50 Bulk-Only C 09 Hub 00 Unused 00 Full speed (or root) hub 01 Single TT 02 TT per port C 0a CDC Data 00 Unused 30 I.430 ISDN BRI 31 HDLC 32 Transparent 50 Q.921M 51 Q.921 52 Q.921TM 90 V.42bis 91 Q.932 EuroISDN 92 V.120 V.24 rate ISDN 93 CAPI 2.0 fd Host Based Driver fe CDC PUF ff Vendor specific C 0b Chip/SmartCard C 0d Content Security C 0e Video 00 Undefined 01 Video Control 02 Video Streaming 03 Video Interface Collection C 0f Personal Healthcare C 10 Audio/Video 01 AVData Control 02 AVData Video Stream 03 AVData Audio Stream C 11 Billboard C 12 Type-C Bridge C 13 Bulk Display C 14 MCTCP over USB 00 MCTCP Management 01 MCTCP 1.x 02 MCTCP 2.x 01 MCTCP Host 01 MCTCP 1.x 02 MCTCP 2.x C 3c I3C C 58 Xbox 42 Controller C dc Diagnostic 01 Reprogrammable Diagnostics 01 USB2 Compliance C e0 Wireless 01 Radio Frequency 01 Bluetooth 02 Ultra WideBand Radio Control 03 RNDIS 02 Wireless USB Wire Adapter 01 Host Wire Adapter Control/Data Streaming 02 Device Wire Adapter Control/Data Streaming 03 Device Wire Adapter Isochronous Streaming C ef Miscellaneous Device 01 ? 01 Microsoft ActiveSync 02 Palm Sync 02 ? 01 Interface Association 02 Wire Adapter Multifunction Peripheral 03 ? 01 Cable Based Association 05 USB3 Vision C fe Application Specific Interface 01 Device Firmware Update 02 IRDA Bridge 03 Test and Measurement 01 TMC 02 USB488 C ff Vendor Specific Class ff Vendor Specific Subclass ff Vendor Specific Protocol # List of Audio Class Terminal Types # Syntax: # AT terminal_type terminal_type_name AT 0100 USB Undefined AT 0101 USB Streaming AT 01ff USB Vendor Specific AT 0200 Input Undefined AT 0201 Microphone AT 0202 Desktop Microphone AT 0203 Personal Microphone AT 0204 Omni-directional Microphone AT 0205 Microphone Array AT 0206 Processing Microphone Array AT 0300 Output Undefined AT 0301 Speaker AT 0302 Headphones AT 0303 Head Mounted Display Audio AT 0304 Desktop Speaker AT 0305 Room Speaker AT 0306 Communication Speaker AT 0307 Low Frequency Effects Speaker AT 0400 Bidirectional Undefined AT 0401 Handset AT 0402 Headset AT 0403 Speakerphone, no echo reduction AT 0404 Echo-suppressing speakerphone AT 0405 Echo-canceling speakerphone AT 0500 Telephony Undefined AT 0501 Phone line AT 0502 Telephone AT 0503 Down Line Phone AT 0600 External Undefined AT 0601 Analog Connector AT 0602 Digital Audio Interface AT 0603 Line Connector AT 0604 Legacy Audio Connector AT 0605 SPDIF interface AT 0606 1394 DA stream AT 0607 1394 DV stream soundtrack AT 0700 Embedded Undefined AT 0701 Level Calibration Noise Source AT 0702 Equalization Noise AT 0703 CD Player AT 0704 DAT AT 0705 DCC AT 0706 MiniDisc AT 0707 Analog Tape AT 0708 Phonograph AT 0709 VCR Audio AT 070a Video Disc Audio AT 070b DVD Audio AT 070c TV Tuner Audio AT 070d Satellite Receiver Audio AT 070e Cable Tuner Audio AT 070f DSS Audio AT 0710 Radio Receiver AT 0711 Radio Transmitter AT 0712 Multitrack Recorder AT 0713 Synthesizer # List of HID Descriptor Types # Syntax: # HID descriptor_type descriptor_type_name HID 21 HID HID 22 Report HID 23 Physical # List of HID Descriptor Item Types # Note: 2 bits LSB encode data length following # Syntax: # R item_type item_type_name R 04 Usage Page R 08 Usage R 14 Logical Minimum R 18 Usage Minimum R 24 Logical Maximum R 28 Usage Maximum R 34 Physical Minimum R 38 Designator Index R 44 Physical Maximum R 48 Designator Minimum R 54 Unit Exponent R 58 Designator Maximum R 64 Unit R 74 Report Size R 78 String Index R 80 Input R 84 Report ID R 88 String Minimum R 90 Output R 94 Report Count R 98 String Maximum R a0 Collection R a4 Push R a8 Delimiter R b0 Feature R b4 Pop R c0 End Collection # List of Physical Descriptor Bias Types # Syntax: # BIAS item_type item_type_name BIAS 0 Not Applicable BIAS 1 Right Hand BIAS 2 Left Hand BIAS 3 Both Hands BIAS 4 Either Hand # List of Physical Descriptor Item Types # Syntax: # PHY item_type item_type_name PHY 00 None PHY 01 Hand PHY 02 Eyeball PHY 03 Eyebrow PHY 04 Eyelid PHY 05 Ear PHY 06 Nose PHY 07 Mouth PHY 08 Upper Lip PHY 09 Lower Lip PHY 0a Jaw PHY 0b Neck PHY 0c Upper Arm PHY 0d Elbow PHY 0e Forearm PHY 0f Wrist PHY 10 Palm PHY 11 Thumb PHY 12 Index Finger PHY 13 Middle Finger PHY 14 Ring Finger PHY 15 Little Finger PHY 16 Head PHY 17 Shoulder PHY 18 Hip PHY 19 Waist PHY 1a Thigh PHY 1b Knee PHY 1c calf PHY 1d Ankle PHY 1e Foot PHY 1f Heel PHY 20 Ball of Foot PHY 21 Big Toe PHY 22 Second Toe PHY 23 Third Toe PHY 24 Fourth Toe PHY 25 Fifth Toe PHY 26 Brow PHY 27 Cheek # List of HID Usages # Syntax: # HUT hi _usage_page hid_usage_page_name # hid_usage hid_usage_name HUT 00 Undefined HUT 01 Generic Desktop Controls 000 Undefined 001 Pointer 002 Mouse 004 Joystick 005 Gamepad 006 Keyboard 007 Keypad 008 Multi-Axis Controller 030 Direction-X 031 Direction-Y 032 Direction-Z 033 Rotate-X 034 Rotate-Y 035 Rotate-Z 036 Slider 037 Dial 038 Wheel 039 Hat Switch 03a Counted Buffer 03b Byte Count 03c Motion Wakeup 03d Start 03e Select 040 Vector-X 041 Vector-Y 042 Vector-Z 043 Vector-X relative Body 044 Vector-Y relative Body 045 Vector-Z relative Body 046 Vector 080 System Control 081 System Power Down 082 System Sleep 083 System Wake Up 084 System Context Menu 085 System Main Menu 086 System App Menu 087 System Menu Help 088 System Menu Exit 089 System Menu Select 08a System Menu Right 08b System Menu Left 08c System Menu Up 08d System Menu Down 090 Direction Pad Up 091 Direction Pad Down 092 Direction Pad Right 093 Direction Pad Left HUT 02 Simulation Controls 000 Undefined 001 Flight Simulation Device 002 Automobile Simulation Device 003 Tank Simulation Device 004 Spaceship Simulation Device 005 Submarine Simulation Device 006 Sailing Simulation Device 007 Motorcycle Simulation Device 008 Sports Simulation Device 009 Airplane Simualtion Device 00a Helicopter Simulation Device 00b Magic Carpet Simulation Device 00c Bicycle Simulation Device 020 Flight Control Stick 021 Flight Stick 022 Cyclic Control 023 Cyclic Trim 024 Flight Yoke 025 Track Control 0b0 Aileron 0b1 Aileron Trim 0b2 Anti-Torque Control 0b3 Autopilot Enable 0b4 Chaff Release 0b5 Collective Control 0b6 Dive Break 0b7 Electronic Countermeasures 0b8 Elevator 0b9 Elevator Trim 0ba Rudder 0bb Throttle 0bc Flight COmmunications 0bd Flare Release 0be Landing Gear 0bf Toe Break 0c0 Trigger 0c1 Weapon Arm 0c2 Weapons Select 0c3 Wing Flaps 0c4 Accelerator 0c5 Brake 0c6 Clutch 0c7 Shifter 0c8 Steering 0c9 Turret Direction 0ca Barrel Elevation 0cb Drive Plane 0cc Ballast 0cd Bicylce Crank 0ce Handle Bars 0cf Front Brake 0d0 Rear Brake HUT 03 VR Controls 000 Unidentified 001 Belt 002 Body Suit 003 Flexor 004 Glove 005 Head Tracker 006 Head Mounted Display 007 Hand Tracker 008 Oculometer 009 Vest 00a Animatronic Device 020 Stereo Enable 021 Display Enable HUT 04 Sport Controls 000 Unidentified 001 Baseball Bat 002 Golf Club 003 Rowing Machine 004 Treadmill 030 Oar 031 Slope 032 Rate 033 Stick Speed 034 Stick Face Angle 035 Stick Heel/Toe 036 Stick Follow Through 038 Stick Type 039 Stick Height 047 Stick Temp 050 Putter 051 1 Iron 052 2 Iron 053 3 Iron 054 4 Iron 055 5 Iron 056 6 Iron 057 7 Iron 058 8 Iron 059 9 Iron 05a 10 Iron 05b 11 Iron 05c Sand Wedge 05d Loft Wedge 05e Power Wedge 05f 1 Wood 060 3 Wood 061 5 Wood 062 7 Wood 063 9 Wood HUT 05 Game Controls 000 Undefined 001 3D Game Controller 002 Pinball Device 003 Gun Device 020 Point Of View 021 Turn Right/Left 022 Pitch Right/Left 023 Roll Forward/Backward 024 Move Right/Left 025 Move Forward/Backward 026 Move Up/Down 027 Lean Right/Left 028 Lean Forward/Backward 029 Height of POV 02a Flipper 02b Secondary Flipper 02c Bump 02d New Game 02e Shoot Ball 02f Player 030 Gun Bolt 031 Gun Clip 032 Gun Selector 033 Gun Single Shot 034 Gun Burst 035 Gun Automatic 036 Gun Safety 037 Gamepad Fire/Jump 038 Gamepad Fun 039 Gamepad Trigger HUT 07 Keyboard 000 No Event 001 Keyboard ErrorRollOver 002 Keyboard POSTfail 003 Keyboard Error Undefined 004 A 005 B 006 C 007 D 008 E 009 F 00a G 00b H 00c I 00d J 00e K 00f L 010 M 011 N 012 O 013 P 014 Q 015 R 016 S 017 T 018 U 019 V 01a W 01b X 01c Y 01d Z 01e 1 and ! (One and Exclamation) 01f 2 and @ (2 and at) 020 3 and # (3 and Hash) 021 4 and $ (4 and Dollar Sign) 022 5 and % (5 and Percent Sign) 023 6 and ^ (6 and circumflex) 024 7 and & (Seven and Ampersand) 025 8 and * (Eight and asterisk) 026 9 and ( (Nine and Parenthesis Left) 027 0 and ) (Zero and Parenthesis Right) 028 Return (Enter) 029 Escape 02a Delete (Backspace) 02b Tab 02c Space Bar 02d - and _ (Minus and underscore) 02e = and + (Equal and Plus) 02f [ and { (Bracket and Braces Left) 030 ] and } (Bracket and Braces Right) 031 \ and | (Backslash and Bar) 032 # and ~ (Hash and Tilde, Non-US Keyboard near right shift) 033 ; and : (Semicolon and Colon) 034 and " (Accent Acute and Double Quotes) 035 ` and ~ (Accent Grace and Tilde) 036 , and < (Comma and Less) 037 . and > (Period and Greater) 038 / and ? (Slash and Question Mark) 039 Caps Lock 03a F1 03b F2 03c F3 03d F4 03e F5 03f F6 040 F7 041 F8 042 F9 043 F10 044 F11 045 F12 046 Print Screen 047 Scroll Lock 048 Pause 049 Insert 04a Home 04b Page Up 04c Delete Forward (without Changing Position) 04d End 04e Page Down 04f Right Arrow 050 Left Arrow 051 Down Arrow 052 Up Arrow 053 Num Lock and Clear 054 Keypad / (Division Sign) 055 Keypad * (Multiplication Sign) 056 Keypad - (Subtraction Sign) 057 Keypad + (Addition Sign) 058 Keypad Enter 059 Keypad 1 and END 05a Keypad 2 and Down Arrow 05b Keypad 3 and Page Down 05c Keypad 4 and Left Arrow 05d Keypad 5 (Tactilei Raised) 05f Keypad 6 and Right Arrow 060 Keypad 7 and Home 061 Keypad 8 and Up Arrow 062 Keypad 8 and Page Up 063 Keypad . (decimal delimiter) and Delete 064 \ and | (Backslash and Bar, UK and Non-US Keyboard near left shift) 065 Keyboard Application (Windows Key for Win95 or Compose) 066 Power (not a key) 067 Keypad = (Equal Sign) 068 F13 069 F14 06a F15 06b F16 06c F17 06d F18 06e F19 06f F20 070 F21 071 F22 072 F23 073 F24 074 Execute 075 Help 076 Menu 077 Select 078 Stop 079 Again 07a Undo 07b Cut 07c Copy 07d Paste 07e Find 07f Mute 080 Volume Up 081 Volume Down 082 Locking Caps Lock 083 Locking Num Lock 084 Locking Scroll Lock 085 Keypad Comma 086 Keypad Equal Sign (AS/400) 087 International 1 (PC98) 088 International 2 (PC98) 089 International 3 (PC98) 08a International 4 (PC98) 08b International 5 (PC98) 08c International 6 (PC98) 08d International 7 (Toggle Single/Double Byte Mode) 08e International 8 08f International 9 090 LANG 1 (Hangul/English Toggle, Korea) 091 LANG 2 (Hanja Conversion, Korea) 092 LANG 3 (Katakana, Japan) 093 LANG 4 (Hiragana, Japan) 094 LANG 5 (Zenkaku/Hankaku, Japan) 095 LANG 6 096 LANG 7 097 LANG 8 098 LANG 9 099 Alternate Erase 09a SysReq/Attention 09b Cancel 09c Clear 09d Prior 09e Return 09f Separator 0a0 Out 0a1 Open 0a2 Clear/Again 0a3 CrSel/Props 0a4 ExSel 0e0 Control Left 0e1 Shift Left 0e2 Alt Left 0e3 GUI Left 0e4 Control Right 0e5 Shift Right 0e6 Alt Rigth 0e7 GUI Right HUT 08 LEDs 000 Undefined 001 NumLock 002 CapsLock 003 Scroll Lock 004 Compose 005 Kana 006 Power 007 Shift 008 Do not disturb 009 Mute 00a Tone Enabke 00b High Cut Filter 00c Low Cut Filter 00d Equalizer Enable 00e Sound Field ON 00f Surround On 010 Repeat 011 Stereo 012 Sampling Rate Detect 013 Spinning 014 CAV 015 CLV 016 Recording Format Detect 017 Off-Hook 018 Ring 019 Message Waiting 01a Data Mode 01b Battery Operation 01c Battery OK 01d Battery Low 01e Speaker 01f Head Set 020 Hold 021 Microphone 022 Coverage 023 Night Mode 024 Send Calls 025 Call Pickup 026 Conference 027 Stand-by 028 Camera On 029 Camera Off 02a On-Line 02b Off-Line 02c Busy 02d Ready 02e Paper-Out 02f Paper-Jam 030 Remote 031 Forward 032 Reverse 033 Stop 034 Rewind 035 Fast Forward 036 Play 037 Pause 038 Record 039 Error 03a Usage Selected Indicator 03b Usage In Use Indicator 03c Usage Multi Indicator 03d Indicator On 03e Indicator Flash 03f Indicator Slow Blink 040 Indicator Fast Blink 041 Indicator Off 042 Flash On Time 043 Slow Blink On Time 044 Slow Blink Off Time 045 Fast Blink On Time 046 Fast Blink Off Time 047 Usage Color Indicator 048 Indicator Red 049 Indicator Green 04a Indicator Amber 04b Generic Indicator 04c System Suspend 04d External Power Connected HUT 09 Buttons 000 No Button Pressed 001 Button 1 (Primary) 002 Button 2 (Secondary) 003 Button 3 (Tertiary) 004 Button 4 005 Button 5 HUT 0a Ordinal 001 Instance 1 002 Instance 2 003 Instance 3 HUT 0b Telephony 000 Unassigned 001 Phone 002 Answering Machine 003 Message Controls 004 Handset 005 Headset 006 Telephony Key Pad 007 Programmable Button 020 Hook Switch 021 Flash 022 Feature 023 Hold 024 Redial 025 Transfer 026 Drop 027 Park 028 Forward Calls 029 Alternate Function 02a Line 02b Speaker Phone 02c Conference 02d Ring Enable 02e Ring Select 02f Phone Mute 030 Caller ID 050 Speed Dial 051 Store Number 052 Recall Number 053 Phone Directory 070 Voice Mail 071 Screen Calls 072 Do Not Disturb 073 Message 074 Answer On/Offf 090 Inside Dial Tone 091 Outside Dial Tone 092 Inside Ring Tone 093 Outside Ring Tone 094 Priority Ring Tone 095 Inside Ringback 096 Priority Ringback 097 Line Busy Tone 098 Recorder Tone 099 Call Waiting Tone 09a Confirmation Tone 1 09b Confirmation Tone 2 09c Tones Off 09d Outside Ringback 0b0 Key 1 0b1 Key 2 0b3 Key 3 0b4 Key 4 0b5 Key 5 0b6 Key 6 0b7 Key 7 0b8 Key 8 0b9 Key 9 0ba Key Star 0bb Key Pound 0bc Key A 0bd Key B 0be Key C 0bf Key D HUT 0c Consumer 000 Unassigned 001 Consumer Control 002 Numeric Key Pad 003 Programmable Buttons 020 +10 021 +100 022 AM/PM 030 Power 031 Reset 032 Sleep 033 Sleep After 034 Sleep Mode 035 Illumination 036 Function Buttons 040 Menu 041 Menu Pick 042 Menu Up 043 Menu Down 044 Menu Left 045 Menu Right 046 Menu Escape 047 Menu Value Increase 048 Menu Value Decrease 060 Data on Screen 061 Closed Caption 062 Closed Caption Select 063 VCR/TV 064 Broadcast Mode 065 Snapshot 066 Still 080 Selection 081 Assign Selection 082 Mode Step 083 Recall Last 084 Enter Channel 085 Order Movie 086 Channel 087 Media Selection 088 Media Select Computer 089 Media Select TV 08a Media Select WWW 08b Media Select DVD 08c Media Select Telephone 08d Media Select Program Guide 08e Media Select Video Phone 08f Media Select Games 090 Media Select Messages 091 Media Select CD 092 Media Select VCR 093 Media Select Tuner 094 Quit 095 Help 096 Media Select Tape 097 Media Select Cable 098 Media Select Satellite 099 Media Select Security 09a Media Select Home 09b Media Select Call 09c Channel Increment 09d Channel Decrement 09e Media Select SAP 0a0 VCR Plus 0a1 Once 0a2 Daily 0a3 Weekly 0a4 Monthly 0b0 Play 0b1 Pause 0b2 Record 0b3 Fast Forward 0b4 Rewind 0b5 Scan Next Track 0b6 Scan Previous Track 0b7 Stop 0b8 Eject 0b9 Random Play 0ba Select Disc 0bb Enter Disc 0bc Repeat 0bd Tracking 0be Track Normal 0bf Slow Tracking 0c0 Frame Forward 0c1 Frame Back 0c2 Mark 0c3 Clear Mark 0c4 Repeat from Mark 0c5 Return to Mark 0c6 Search Mark Forward 0c7 Search Mark Backward 0c8 Counter Reset 0c9 Show Counter 0ca Tracking Increment 0cb Tracking Decrement 0cc Stop/Eject 0cd Play/Pause 0ce Play/Skip 0e0 Volume 0e1 Balance 0e2 Mute 0e3 Bass 0e4 Treble 0e5 Bass Boost 0e6 Surround Mode 0e7 Loudness 0e8 MPX 0e9 Volume Increment 0ea Volume Decrement 0f0 Speed Select 0f1 Playback Speed 0f2 Standard Play 0f3 Long Play 0f4 Extended Play 0f5 Slow 100 Fan Enable 101 Fan Speed 102 Light Enable 103 Light Illumination Level 104 Climate Control Enable 105 Room Temperature 106 Security Enable 107 Fire Alarm 108 Police Alarm 150 Balance Right 151 Balance Left 152 Bass Increment 153 Bass Decrement 154 Treble Increment 155 Treble Decrement 160 Speaker System 161 Channel Left 162 Channel Right 163 Channel Center 164 Channel Front 165 Channel Center Front 166 Channel Side 167 Channel Surround 168 Channel Low Frequency Enhancement 169 Channel Top 16a Channel Unknown 170 Sub-Channel 171 Sub-Channel Increment 172 Sub-Channel Decrement 173 Alternative Audio Increment 174 Alternative Audio Decrement 180 Application Launch Buttons 181 AL Launch Button Configuration Tool 182 AL Launch Button Configuration 183 AL Consumer Control Configuration 184 AL Word Processor 185 AL Text Editor 186 AL Spreadsheet 187 AL Graphics Editor 188 AL Presentation App 189 AL Database App 18a AL Email Reader 18b AL Newsreader 18c AL Voicemail 18d AL Contacts/Address Book 18e AL Calendar/Schedule 18f AL Task/Project Manager 190 AL Log/Jounal/Timecard 191 AL Checkbook/Finance 192 AL Calculator 193 AL A/V Capture/Playback 194 AL Local Machine Browser 195 AL LAN/Wan Browser 196 AL Internet Browser 197 AL Remote Networking/ISP Connect 198 AL Network Conference 199 AL Network Chat 19a AL Telephony/Dialer 19b AL Logon 19c AL Logoff 19d AL Logon/Logoff 19e AL Terminal Local/Screensaver 19f AL Control Panel 1a0 AL Command Line Processor/Run 1a1 AL Process/Task Manager 1a2 AL Select Task/Application 1a3 AL Next Task/Application 1a4 AL Previous Task/Application 1a5 AL Preemptive Halt Task/Application 200 Generic GUI Application Controls 201 AC New 202 AC Open 203 AC CLose 204 AC Exit 205 AC Maximize 206 AC Minimize 207 AC Save 208 AC Print 209 AC Properties 21a AC Undo 21b AC Copy 21c AC Cut 21d AC Paste 21e AC Select All 21f AC Find 220 AC Find and Replace 221 AC Search 222 AC Go To 223 AC Home 224 AC Back 225 AC Forward 226 AC Stop 227 AC Refresh 228 AC Previous Link 229 AC Next Link 22b AC History 22c AC Subscriptions 22d AC Zoom In 22e AC Zoom Out 22f AC Zoom 230 AC Full Screen View 231 AC Normal View 232 AC View Toggle 233 AC Scroll Up 234 AC Scroll Down 235 AC Scroll 236 AC Pan Left 237 AC Pan Right 238 AC Pan 239 AC New Window 23a AC Tile Horizontally 23b AC Tile Vertically 23c AC Format HUT 0d Digitizer 000 Undefined 001 Digitizer 002 Pen 003 Light Pen 004 Touch Screen 005 Touch Pad 006 White Board 007 Coordinate Measuring Machine 008 3D Digitizer 009 Stereo Plotter 00a Articulated Arm 00b Armature 00c Multiple Point Digitizer 00d Free Space Wand 020 Stylus 021 Puck 022 Finger 030 Tip Pressure 031 Barrel Pressure 032 In Range 033 Touch 034 Untouch 035 Tap 036 Quality 037 Data Valid 038 Transducer Index 039 Tablet Function Keys 03a Program Change Keys 03b Battery Strength 03c Invert 03d X Tilt 03e Y Tilt 03f Azimuth 040 Altitude 041 Twist 042 Tip Switch 043 Secondary Tip Switch 044 Barrel Switch 045 Eraser 046 Tablet Pick 047 Confidence 048 Width 049 Height 051 Contact ID 052 Input Mode 053 Device Index 054 Contact Count 055 Maximum Contact Number HUT 0f PID Page 000 Undefined 001 Physical Interface Device 020 Normal 021 Set Effect Report 022 Effect Block Index 023 Parameter Block Offset 024 ROM Flag 025 Effect Type 026 ET Constant Force 027 ET Ramp 028 ET Custom Force Data 030 ET Square 031 ET Sine 032 ET Triangle 033 ET Sawtooth Up 034 ET Sawtooth Down 040 ET Spring 041 ET Damper 042 ET Inertia 043 ET Friction 050 Duration 051 Sample Period 052 Gain 053 Trigger Button 054 Trigger Repeat Interval 055 Axes Enable 056 Direction Enable 057 Direction 058 Type Specific Block Offset 059 Block Type 05A Set Envelope Report 05B Attack Level 05C Attack Time 05D Fade Level 05E Fade Time 05F Set Condition Report 060 CP Offset 061 Positive Coefficient 062 Negative Coefficient 063 Positive Saturation 064 Negative Saturation 065 Dead Band 066 Download Force Sample 067 Isoch Custom Force Enable 068 Custom Force Data Report 069 Custom Force Data 06A Custom Force Vendor Defined Data 06B Set Custom Force Report 06C Custom Force Data Offset 06D Sample Count 06E Set Periodic Report 06F Offset 070 Magnitude 071 Phase 072 Period 073 Set Constant Force Report 074 Set Ramp Force Report 075 Ramp Start 076 Ramp End 077 Effect Operation Report 078 Effect Operation 079 Op Effect Start 07A Op Effect Start Solo 07B Op Effect Stop 07C Loop Count 07D Device Gain Report 07E Device Gain 07F PID Pool Report 080 RAM Pool Size 081 ROM Pool Size 082 ROM Effect Block Count 083 Simultaneous Effects Max 084 Pool Alignment 085 PID Pool Move Report 086 Move Source 087 Move Destination 088 Move Length 089 PID Block Load Report 08B Block Load Status 08C Block Load Success 08D Block Load Full 08E Block Load Error 08F Block Handle 090 PID Block Free Report 091 Type Specific Block Handle 092 PID State Report 094 Effect Playing 095 PID Device Control Report 096 PID Device Control 097 DC Enable Actuators 098 DC Disable Actuators 099 DC Stop All Effects 09A DC Device Reset 09B DC Device Pause 09C DC Device Continue 09F Device Paused 0A0 Actuators Enabled 0A4 Safety Switch 0A5 Actuator Override Switch 0A6 Actuator Power 0A7 Start Delay 0A8 Parameter Block Size 0A9 Device Managed Pool 0AA Shared Parameter Blocks 0AB Create New Effect Report 0AC RAM Pool Available HUT 10 Unicode HUT 14 Alphanumeric Display 000 Undefined 001 Alphanumeric Display 020 Display Attributes Report 021 ASCII Character Set 022 Data Read Back 023 Font Read Back 024 Display Control Report 025 Clear Display 026 Display Enable 027 Screen Saver Delay 028 Screen Saver Enable 029 Vertical Scroll 02a Horizontal Scroll 02b Character Report 02c Display Data 02d Display Status 02e Stat Not Ready 02f Stat Ready 030 Err Not a loadable Character 031 Err Font Data Cannot Be Read 032 Cursur Position Report 033 Row 034 Column 035 Rows 036 Columns 037 Cursor Pixel Positioning 038 Cursor Mode 039 Cursor Enable 03a Cursor Blink 03b Font Report 03c Font Data 03d Character Width 03e Character Height 03f Character Spacing Horizontal 040 Character Spacing Vertical 041 Unicode Character Set HUT 80 USB Monitor 001 Monitor Control 002 EDID Information 003 VDIF Information 004 VESA Version HUT 81 USB Monitor Enumerated Values HUT 82 Monitor VESA Virtual Controls 001 Degauss 010 Brightness 012 Contrast 016 Red Video Gain 018 Green Video Gain 01a Blue Video Gain 01c Focus 020 Horizontal Position 022 Horizontal Size 024 Horizontal Pincushion 026 Horizontal Pincushion Balance 028 Horizontal Misconvergence 02a Horizontal Linearity 02c Horizontal Linearity Balance 030 Vertical Position 032 Vertical Size 034 Vertical Pincushion 036 Vertical Pincushion Balance 038 Vertical Misconvergence 03a Vertical Linearity 03c Vertical Linearity Balance 040 Parallelogram Balance (Key Distortion) 042 Trapezoidal Distortion (Key) 044 Tilt (Rotation) 046 Top Corner Distortion Control 048 Top Corner Distortion Balance 04a Bottom Corner Distortion Control 04c Bottom Corner Distortion Balance 056 Horizontal Moire 058 Vertical Moire 05e Input Level Select 060 Input Source Select 06c Red Video Black Level 06e Green Video Black Level 070 Blue Video Black Level 0a2 Auto Size Center 0a4 Polarity Horizontal Sychronization 0a6 Polarity Vertical Synchronization 0aa Screen Orientation 0ac Horizontal Frequency in Hz 0ae Vertical Frequency in 0.1 Hz 0b0 Settings 0ca On Screen Display (OSD) 0d4 Stereo Mode HUT 84 Power Device Page 000 Undefined 001 iName 002 Present Status 003 Changed Status 004 UPS 005 Power Supply 010 Battery System 011 Battery System ID 012 Battery 013 Battery ID 014 Charger 015 Charger ID 016 Power Converter 017 Power Converter ID 018 Outlet System 019 Outlet System ID 01a Input 01b Input ID 01c Output 01d Output ID 01e Flow 01f Flow ID 020 Outlet 021 Outlet ID 022 Gang 023 Gang ID 024 Power Summary 025 Power Summary ID 030 Voltage 031 Current 032 Frequency 033 Apparent Power 034 Active Power 035 Percent Load 036 Temperature 037 Humidity 038 Bad Count 040 Config Voltage 041 Config Current 042 Config Frequency 043 Config Apparent Power 044 Config Active Power 045 Config Percent Load 046 Config Temperature 047 Config Humidity 050 Switch On Control 051 Switch Off Control 052 Toggle Control 053 Low Voltage Transfer 054 High Voltage Transfer 055 Delay Before Reboot 056 Delay Before Startup 057 Delay Before Shutdown 058 Test 059 Module Reset 05a Audible Alarm Control 060 Present 061 Good 062 Internal Failure 063 Voltage out of range 064 Frequency out of range 065 Overload 066 Over Charged 067 Over Temperature 068 Shutdown Requested 069 Shutdown Imminent 06a Reserved 06b Switch On/Off 06c Switchable 06d Used 06e Boost 06f Buck 070 Initialized 071 Tested 072 Awaiting Power 073 Communication Lost 0fd iManufacturer 0fe iProduct 0ff iSerialNumber HUT 85 Battery System Page 000 Undefined 001 SMB Battery Mode 002 SMB Battery Status 003 SMB Alarm Warning 004 SMB Charger Mode 005 SMB Charger Status 006 SMB Charger Spec Info 007 SMB Selector State 008 SMB Selector Presets 009 SMB Selector Info 010 Optional Mfg. Function 1 011 Optional Mfg. Function 2 012 Optional Mfg. Function 3 013 Optional Mfg. Function 4 014 Optional Mfg. Function 5 015 Connection to SMBus 016 Output Connection 017 Charger Connection 018 Battery Insertion 019 Use Next 01a OK to use 01b Battery Supported 01c SelectorRevision 01d Charging Indicator 028 Manufacturer Access 029 Remaining Capacity Limit 02a Remaining Time Limit 02b At Rate 02c Capacity Mode 02d Broadcast To Charger 02e Primary Battery 02f Charge Controller 040 Terminate Charge 041 Terminate Discharge 042 Below Remaining Capacity Limit 043 Remaining Time Limit Expired 044 Charging 045 Discharging 046 Fully Charged 047 Fully Discharged 048 Conditioning Flag 049 At Rate OK 04a SMB Error Code 04b Need Replacement 060 At Rate Time To Full 061 At Rate Time To Empty 062 Average Current 063 Max Error 064 Relative State Of Charge 065 Absolute State Of Charge 066 Remaining Capacity 067 Full Charge Capacity 068 Run Time To Empty 069 Average Time To Empty 06a Average Time To Full 06b Cycle Count 080 Batt. Pack Model Level 081 Internal Charge Controller 082 Primary Battery Support 083 Design Capacity 084 Specification Info 085 Manufacturer Date 086 Serial Number 087 iManufacturerName 088 iDeviceName 089 iDeviceChemistry 08a Manufacturer Data 08b Rechargeable 08c Warning Capacity Limit 08d Capacity Granularity 1 08e Capacity Granularity 2 08f iOEMInformation 0c0 Inhibit Charge 0c1 Enable Polling 0c2 Reset To Zero 0d0 AC Present 0d1 Battery Present 0d2 Power Fail 0d3 Alarm Inhibited 0d4 Thermistor Under Range 0d5 Thermistor Hot 0d6 Thermistor Cold 0d7 Thermistor Over Range 0d8 Voltage Out Of Range 0d9 Current Out Of Range 0da Current Not Regulated 0db Voltage Not Regulated 0dc Master Mode 0f0 Charger Selector Support 0f1 Charger Spec 0f2 Level 2 0f3 Level 3 HUT 86 Power Pages HUT 87 Power Pages HUT 8c Bar Code Scanner Page (POS) HUT 8d Scale Page (POS) HUT 90 Camera Control Page HUT 91 Arcade Control Page HUT f0 Cash Device 0f1 Cash Drawer 0f2 Cash Drawer Number 0f3 Cash Drawer Set 0f4 Cash Drawer Status HUT ff Vendor Specific # List of Languages # Syntax: # L language_id language_name # dialect_id dialect_name L 0001 Arabic 01 Saudi Arabia 02 Iraq 03 Egypt 04 Libya 05 Algeria 06 Morocco 07 Tunesia 08 Oman 09 Yemen 0a Syria 0b Jordan 0c Lebanon 0d Kuwait 0e U.A.E 0f Bahrain 10 Qatar L 0002 Bulgarian L 0003 Catalan L 0004 Chinese 01 Traditional 02 Simplified 03 Hongkong SAR, PRC 04 Singapore 05 Macau SAR L 0005 Czech L 0006 Danish L 0007 German 01 German 02 Swiss 03 Austrian 04 Luxembourg 05 Liechtenstein L 0008 Greek L 0009 English 01 US 02 UK 03 Australian 04 Canadian 05 New Zealand 06 Ireland 07 South Africa 08 Jamaica 09 Carribean 0a Belize 0b Trinidad 0c Zimbabwe 0d Philippines L 000a Spanish 01 Castilian 02 Mexican 03 Modern 04 Guatemala 05 Costa Rica 06 Panama 07 Dominican Republic 08 Venzuela 09 Colombia 0a Peru 0b Argentina 0c Ecuador 0d Chile 0e Uruguay 0f Paraguay 10 Bolivia 11 El Salvador 12 Honduras 13 Nicaragua 14 Puerto Rico L 000b Finnish L 000c French 01 French 02 Belgian 03 Canadian 04 Swiss 05 Luxembourg 06 Monaco L 000d Hebrew L 000e Hungarian L 000f Idelandic L 0010 Italian 01 Italian 02 Swiss L 0011 Japanese L 0012 Korean 01 Korean L 0013 Dutch 01 Dutch 02 Belgian L 0014 Norwegian 01 Bokmal 02 Nynorsk L 0015 Polish L 0016 Portuguese 01 Portuguese 02 Brazilian L 0017 forgotten L 0018 Romanian L 0019 Russian L 001a Serbian 01 Croatian 02 Latin 03 Cyrillic L 001b Slovak L 001c Albanian L 001d Swedish 01 Swedish 02 Finland L 001e Thai L 001f Turkish L 0020 Urdu 01 Pakistan 02 India L 0021 Indonesian L 0022 Ukrainian L 0023 Belarusian L 0024 Slovenian L 0025 Estonian L 0026 Latvian L 0027 Lithuanian 01 Lithuanian L 0028 forgotten L 0029 Farsi L 002a Vietnamese L 002b Armenian L 002c Azeri 01 Cyrillic 02 Latin L 002d Basque L 002e forgotten L 002f Macedonian L 0036 Afrikaans L 0037 Georgian L 0038 Faeroese L 0039 Hindi L 003e Malay 01 Malaysia 02 Brunei Darassalam L 003f Kazak L 0041 Awahili L 0043 Uzbek 01 Latin 02 Cyrillic L 0044 Tatar L 0045 Bengali L 0046 Punjabi L 0047 Gujarati L 0048 Oriya L 0049 Tamil L 004a Telugu L 004b Kannada L 004c Malayalam L 004d Assamese L 004e Marathi L 004f Sanskrit L 0057 Konkani L 0058 Manipuri L 0059 Sindhi L 0060 Kashmiri 02 India L 0061 Nepali 02 India # HID Descriptor bCountryCode # HID Specification 1.11 (2001-06-27) page 23 # # Syntax: # HCC country_code keymap_type HCC 00 Not supported HCC 01 Arabic HCC 02 Belgian HCC 03 Canadian-Bilingual HCC 04 Canadian-French HCC 05 Czech Republic HCC 06 Danish HCC 07 Finnish HCC 08 French HCC 09 German HCC 10 Greek HCC 11 Hebrew HCC 12 Hungary HCC 13 International (ISO) HCC 14 Italian HCC 15 Japan (Katakana) HCC 16 Korean HCC 17 Latin American HCC 18 Netherlands/Dutch HCC 19 Norwegian HCC 20 Persian (Farsi) HCC 21 Poland HCC 22 Portuguese HCC 23 Russia HCC 24 Slovakia HCC 25 Spanish HCC 26 Swedish HCC 27 Swiss/French HCC 28 Swiss/German HCC 29 Switzerland HCC 30 Taiwan HCC 31 Turkish-Q HCC 32 UK HCC 33 US HCC 34 Yugoslavia HCC 35 Turkish-F # List of Video Class Terminal Types # Syntax: # VT terminal_type terminal_type_name VT 0100 USB Vendor Specific VT 0101 USB Streaming VT 0200 Input Vendor Specific VT 0201 Camera Sensor VT 0202 Sequential Media VT 0300 Output Vendor Specific VT 0301 Generic Display VT 0302 Sequential Media VT 0400 External Vendor Specific VT 0401 Composite Video VT 0402 S-Video VT 0403 Component Video hardinfo2-hardinfo2-1331e88/data/vendor.ids000066400000000000000000001011511474767047500204510ustar00rootroot00000000000000# # Vendor Name and URL # # Syntax: # name # name_short # url # url_support # wikipedia [language:]

[#section] # note # ansi_color n[;n][...] # # ... # # # # match rules: # match_string - match a word, ignore case # match_string_case - match a word, consider case # match_string_exact - entire string must match exactly # match_string_prefix - prefix of a word, ignore case # match_string_prefix_case - prefix of a word, consider case # match_string_suffix - suffix of a word, ignore case # match_string_suffix_case - suffix of a word, consider case # match_string_num_prefix - prefix next character must be a digit, ignore case # match_string_num_prefix_case - prefix next character must be a digit, consider case # # Except for the newline, trailing whitespace is included in the string. # Match strings must be unique. Name does not need to be unique. # name 3Com url www.3com.com wikipedia 3Com ansi_color 0;97;40 match_string 3Com name A4tech url www.a4tech.com wikipedia A4Tech ansi_color 0;33;40 match_string A4Tech name AboCom Systems url www.abocom.com.tw match_string AboCom Systems match_string AboCom name Acer name_short acer url www.acer.com ansi_color 0;32;107 match_string Acer note EDID vendor: ACR match_string_exact ACR name ADATA Technology name_short ADATA ansi_color 0;34;47 match_string_case ADATA # PCI Vendor 1002 (used for GPUs) name Advanced Micro Devices (formerly ATI) name_short AMD/ATI url www.amd.com wikipedia ATI Technologies ansi_color 0;97;41 match_string ATI Technologies match_string Advanced Micro Devices, Inc. [AMD/ATI] match_string_case AMD/ATI match_string_case ATI name Advanced Micro Devices name_short AMD url www.amd.com wikipedia Advanced Micro Devices ansi_color 0;97;41 note x86 processor vendor ID match_string AMDisbetter! match_string AuthenticAMD # PCI Vendor 1022 name Advanced Micro Devices name_short AMD url www.amd.com wikipedia Advanced Micro Devices ansi_color 0;97;41 match_string Advanced Micro Devices match_string_case AMD name Allwinner Technology name_short AllWinner url www.allwinnertech.com wikipedia Allwinner Technology ansi_color 0;97;44 match_string AllWinner name AlmaLinux name_short AlmaLinux url www.almalinux.org ansi_color 0;31;40 match_string AlmaLinux name Alpine Linux name_short Alpine Linux url www.alpinelinux.org ansi_color 0;34;107 match_string Alpine Linux name ALT Linux name_short ALT Linux url www.altlinux.org ansi_color 0;30;43 match_string altlinux match_string alt linux name American Megatrends name_short AMI url www.ami.com ansi_color 0;31;47 match_string American Megatrends name Amlogic name_short AMLogic url www.amlogic.com wikipedia Amlogic ansi_color 0;94;107 match_string Amlogic name Angelbird Technologies name_short Angelbird url www.angelbird.com ansi_color 0;97;100 match_string Angelbird name AOC International name_short AOC url www.aoc.com wikipedia AOC International ansi_color 0;97;44 match_string_case AOC note formerly Admiral Overseas Corporation match_string Admiral Overseas Corporation match_string Admiral name Apacer Technology name_short Apacer match_string Apacer name Apple Computer name_short Apple url www.apple.com ansi_color 0;97;100 match_string Apple note EDID vendor: APP match_string_exact APP name Applied Micro Circuits name_short APM wikipedia Applied Micro Circuits Corporation match_string Applied Micro Circuits match_string AppliedMicro match_string_case APM match_string_case AMCC name Astra Linux name_short Astra Linux url www.astralinux.ru ansi_color 0;36;107 match_string astra linux name Arch Linux name_short Arch Linux url www.archlinux.org ansi_color 0;36;107 match_string arch linux name Arm Holdings # styled lower-case "arm" name_short arm url arm.com ansi_color 0;36;107 match_string ARM name Armbian name_short Armbian url www.armbian.com ansi_color ff;0;0 match_string armbian name Artix Linux name_short Artix Linux url www.artixlinux.org ansi_color 0;36;107 match_string artix linux match_string Artix Linux name ASMedia Technology name_short ASMedia url www.asmedia.com.tw ansi_color 0;30;46 match_string_case ASMedia name ASRock url www.asrock.com ansi_color 0;32;107 match_string ASRock name ASUSTeK Computer name_short ASUS url www.asus.com wikipedia Asus ansi_color 0;30;47 match_string ASUSTek match_string ASUS name AU Optronics Corporation name_short AUO url www.auo.com wikipedia AU Optronics ansi_color 0;34;107 match_string AU Optronics match_string_case AUO name AVerMedia Technologies name_short AVerMedia url www.aver.com match_string Avermedia name Award Software International name_short Award url www.award-bios.com ansi_color 0;93;44 match_string Award name BenQ (formerly Acer Peripherals) name_short BenQ/acer url www.benq.com ansi_color 0;35;107 match_string Acer Peripherals match_string Acer Peripherals Inc. (now BenQ Corp.) name BenQ url www.benq.com ansi_color 0;35;107 match_string BENQ name Biostar Microtech International name_short BIOSTAR url www.biostar.tw ansi_color 0;31;40 match_string Biostar name Bodhi Linux name_short Bodhi Linux url www.bodhilinux.com ansi_color 0;97;42 match_string Bodhi Linux name Bright Micron Technology name_short BMT match_string Bright Micron name Broadcom Corporation name_short Broadcom url www.broadcom.com ansi_color 0;30;41 match_string Broadcom name Brother Industries name_short Brother url www.brother.com wikipedia Brother Industries ansi_color 0;34;107 match_string Brother name C-guys url www.c-guys.net match_string C-guys name C-Media Electronics name_short C-Media url www.cmedia.com.tw match_string C-Media name Cambridge Silicon Radio name_short CSR url www.csr.com wikipedia Cambridge Silicon Radio ansi_color 0;34;107 match_string Cambridge Silicon Radio name Canon url www.canon.com ansi_color 0;31;107 match_string Canon name Canonical url www.canonical.com ansi_color 0;97;45 match_string canonical name CDEmu url cdemu.sourceforge.io match_string CDEmu name CentOS name_short CentOS ansi_color 0;34;107 url www.centos.org match_string CentOS name Chengdu Haiguang Integrated Circuit Design name_short Hygon ansi_color 0;97;104 match_string Hygon match_string Higon note x86 processor vendor ID match_string HygonGenuine name Chicony url www.chicony.com.tw wikipedia Chicony Electronics ansi_color 0;36;107 match_string Chicony name Cirrus Logic url www.cirrus.com match_string Cirrus Logic name Clear Linux name_short Clear Linux ansi_color 0;34;107 url www.clearlinux.org match_string Clear Linux name Coreboot Project name_short Coreboot url www.coreboot.org match_string coreboot name Corsair Components name_short Corsair url www.corsair.com wikipedia Corsair Components ansi_color 0;30;43 match_string Corsair match_string_num_prefix Force MP match_string_num_prefix Force LE name Creative Labs url www.creative.com wikipedia Creative Technology ansi_color 0;30;107 match_string Creative Labs match_string Creative Technology name Crucial (Micron) name_short Crucial url www.crucial.com ansi_color 0;37;44 match_string Crucial match_string Micron/Crucial name Cypress Semiconductor name_short Cypress url infineon.com wikipedia Cypress Semiconductor ansi_color 0;36;107 match_string Cypress name D-Link url www.dlink.com.tw ansi_color 0;97;44 match_string D-Link name Debian url www.debian.org ansi_color 0;31;107 match_string debian name Dell Computer name_short Dell url www.dell.com ansi_color 0;97;44 match_string Dell # Dell PowerEdge/PowerVault controller SCSI vendor match_string PE/PV note EDID vendor: DEL match_string_exact DEL name Devuan name_short Devuan ansi_color 0;34;107 url www.devuan.org match_string Devuan name Digital Equipment Corporation name_short DEC note Dead; various parts to Intel, Compaq, HP match_string_case DEC match_string Digital Equipment match_string_exact Digital name DMP Electronics note x86 processor vendor ID match_string Vortex86 SoC # Company defunct, now brand name of Chinese company name Eastman Kodak Company name_short Kodak wikipedia Kodak ansi_color 0;31;43 match_string Kodak name Elitegroup Computer Systems name_short ECS ansi_color 0;36;41 match_string_case ECS name Embest Technology name_short Embest url www.embest-tech.com ansi_color 0;96;44 match_string Embest name EndeavourOS name_short EndeavourOS url www.endeavouros.com ansi_color 0;33;40 match_string EndeavourOS name eMPIA Technology url www.empiatech.com.tw match_string_case eMPIA name Ericsson-LG wikipedia Ericsson-LG ansi_color 0;97;43 match_string Ericsson-LG match_string LG-Ericsson name EVGA url www.evga.com ansi_color 0;34;107 match_string EVGA name ExcelStor Technology url www.excelstor.com match_string ExcelStor name Faraday Technology name_short Faraday url www.faraday-tech.com wikipedia Faraday Technology match_string Faraday Technology match_string Faraday name Fedora Linux Asahi Remix name_short Fedora Linux Asahi Remix ansi_color 0;34;107 url asahilinux.org/fedora/ match_string Fedora Asahi Remix match_string Fedora Linux Asahi Remix name Fedora Linux name_short Fedora ansi_color 0;34;107 url www.fedoraproject.com match_string Fedora Linux match_string Fedora name Fujitsu name_short FUJITSU url www.fujitsu.com ansi_color 0;31;107 match_string FUJITSU name_short Fujitsu/Siemens match_string Fujitsu Siemens name Fuzhou Rockchip Electronics name_short Rockchip url www.rock-chips.com ansi_color 0;34;43 match_string Rockchip name Garuda Linux url www.garudalinux.org ansi_color 0;97;45 match_string Garuda Linux name G.Skill International Enterprise name_short G.Skill url www.gskill.com wikipedia G.Skill ansi_color 0;31;107 match_string G.Skill match_string G-Skill match_string G Skill name GCT Semiconductor name_short GCT url www.gctsemi.com match_string GCT Semiconductor match_string_case GCT name Gentoo Linux name_short Gentoo Linux ansi_color 0;34;107 url www.gentoo.org match_string Gentoo Linux match_string Gentoo match_string gentoo name Gigabyte Technology name_short Gigabyte url www.gigabyte.com.tw ansi_color 0;94;47 match_string Giga-byte match_string Gigabyte name Globalsat Technology match_string Globalsat Technology name Google url www.google.com ansi_color 0;34;107 match_string Google name Harman International name_short Harman url www.harman.com ansi_color 0;34;107 match_string Harman International match_string Harman name Harmony Semiconductor name_short Harmony match_string Harmony name Hewlett-Packard name_short HP url www.hp.com ansi_color 0;97;46 match_string Hewlett-Packard match_string_case HP note EDID vendor: HWP match_string_exact HWP note SCSI vendor: hp match_string_exact hp name Hitachi Global Storage Technologies name_short HGST url hgst.com ansi_color 0;97;40 match_string HGST a Western Digital Company match_string Hitachi Global Storage match_string_case HGST name Hitachi-LG Data Storage name_short HLDS url http://hlds.co.kr wikipedia Hitachi-LG Data Storage ansi_color 0;97;105 match_string_case HL-DT-ST match_string_case HLDS match_string_case H-L Data Storage match_string Hitachi-LG match_string Hitachi LG match_string LG (HLDS) name Hitachi name_short HITACHI url www.hitachi.com ansi_color 0;30;47 match_string Hitachi note EDID vendor: HTC match_string_exact HTC name Holtek Semiconductor name_short Holtek url www.holtek.com ansi_color 0;34;107 match_string Holtek # JEDEC mfgr [0][64] name Infineon Technologies name_short infineon url www.infineon.com wikipedia Infineon Technologies ansi_color 0;34;107 match_string Infineon match_string Infineon (former Siemens) name Intel Corporation name_short Intel url www.intel.com wikipedia Intel Corporation ansi_color 0;97;44 match_string Intel name Intel Corporation name_short Intel url www.intel.com url_support ark.intel.com ansi_color 0;97;44 note x86 processor vendor ID match_string GenuineIntel name Intellitech match_string Intellitech name International Business Machines Corporation name_short IBM url www.ibm.com ansi_color 0;94;107 match_string International Business Machines match_string_case IBM name JMicron Technology name_short JMicron url www.jmicron.com wikipedia JMicron ansi_color 0;34;107 match_string JMicron Technology match_string JMicron USA Technology match_string JMicron name KDE url www.kde.org wikipedia KDE ansi_color 0;97;104 match_string_case KDE name Kingston Technology name_short Kingston url www.kingston.com ansi_color 0;31;40 match_string Kingston name Koninklijke Philips name_short PHILIPS url www.philips.com match_string Philips ansi_color 0;30;107 match_string Philips note EDID vendor: PHL match_string_exact PHL name Kubuntu name_short Kubuntu url www.kubuntu.org ansi_color 0;97;104 match_string_case Kubuntu name KVM url www.linux-kvm.org match_string KVMKVMKVM name KYE Systems name_short KYE url www.genius-kye.com match_string_case KYE name Lenovo Group name_short Lenovo url www.lenovo.com url_support support.lenovo.com wikipedia Lenovo ansi_color 0;97;41 match_string lenovo note EDID vendor: LEN match_string_exact LEN name Lexmark url www.lexmark.com match_string Lexmark name LG Display name_short LG Display url www.lgdisplay.com ansi_color 0;97;41 match_string LG Display match_string LG.Philips note EDID vendor: LGD match_string_exact LGD name LG Electronics (formerly Goldstar) name_short LG (Goldstar) url www.lge.com ansi_color 0;97;41 match_string Goldstar name LG Electronics name_short LG url www.lge.com ansi_color 0;97;41 match_string LG Electronics [Lucky Goldstar Co. Ltd] match_string Lucky Goldstar match_string Lucky-Goldstar match_string LG Semi match_string_case LG name LIG Nex1 wikipedia LIG Nex1 match_string LIG Nex1 match_string LG Innotek match_string NEX1 Future name LiGurOS name_short LiGurOS url liguros.gitlab.io ansi_color 0;97;42 match_string LiGurOS Linux match_string LiGurOS name Linaro url linaro.org wikipedia Linaro ansi_color 0;32;107 match_string Linaro name Linux Foundation name_short Linux ansi_color 0;33;40 match_string Linux Foundation match_string Linux name Linux Mint name_short Linux Mint url www.linuxmint.com ansi_color 0;97;42 match_string Linux Mint name LITE-ON url www.liteonit.com ansi_color 0;97;104 match_string_case LITE-ON name LMDE name_short LMDE url www.linuxmint.com ansi_color 0;97;42 match_string LMDE name Logitech International name_short logitech ansi_color 0;30;107 url www.logitech.com match_string Logitech name Lexar name_short Lexar url lexar.com wikipedia Lexar ansi_color 0;31;40 match_string Lexar name Longsys name_short longsys url longsys.com ansi_color 0;31;107 match_string Longsys name Lubuntu name_short Lubuntu ansi_color 0;30;107 url www.lubuntu.me match_string Lubuntu name Magewell url www.magewell.com ansi_color 0;34;107 match_string Magewell name Marvell (formerly Cavium) name_short Marvell (Cavium) url cavium.com wikipedia Cavium ansi_color 0;97;41 match_string Cavium name Marvell Technology Group name_short Marvell url www.marvell.com wikipedia Marvell Technology Group ansi_color 0;97;41 match_string Marvell name Maxtor url www.maxtor.com match_string Maxtor name MX Linux name_short MX Linux ansi_color 0;34;107 url www.mxlinux.org match_string MX Linux name Manjaro Linux name_short Manjaro Linux url www.manjaro.org ansi_color 0;33;40 match_string Manjaro Linux name MediaTek url www.mediatek.com wikipedia MediaTek ansi_color 0;97;43 match_string MediaTek name Memorex Products name_short Memorex url www.memorex.com match_string Memorex name Micro-Star International name_short MSI url www.msi.com url_support www.msi.com/support ansi_color 0;97;40 match_string Micro-Star Int'l Co.,Ltd. match_string Micro Star match_string_case MSI name Microchip Technology (formerly Standard Microsystems) name_short SMC ansi_color 0;37;40 match_string Standard Microsystems name Micron Technology name_short Micron url www.micron.com ansi_color 0;34;47 match_string Micron name Microsoft Hyper-V url www.microsoft.com match_string Microsoft Hv name Microsoft url www.microsoft.com ansi_color 0;97;40 match_string Microsoft name Murata Manufacturing (formerly SyChip Electronic Technology) name_short Murata (SyChip) ansi_color 0;31;107 match_string SyChip name Murata Manufacturing name_short Murata url www.murata.com wikipedia Murata Manufacturing ansi_color 0;31;107 match_string Murata name National Semiconductor name_short NSC note x86 processor vendor ID match_string Geode by NSC name NEC Corporation name_short NEC url www.nec.com ansi_color 0;94;107 note EDID vendor: NEC match_string_case NEC name NexGen note x86 processor vendor ID match_string NexGenDriven name NixOS Linux name_short NixOS Linux ansi_color 0;34;107 url nixos.org match_string NixOS Linux name Nobara Linux name_short Nobara Linux ansi_color 0;34;107 url nobaraproject.org match_string Nobara Linux name nVidia Corporation name_short nVidia url www.nvidia.com wikipedia Nvidia ansi_color 0;97;42 match_string nVidia name NXP Semiconductors name_short NXP url www.nxp.com match_string_case NXP name Oculus VR name_short Oculus url www.oculus.com ansi_color 0;97;100 wikipedia Oculus VR match_string Oculus VR match_string Oculus name OpenMandriva name_short OpenMandriva url www.openmandriva.org ansi_color 0;34;107 match_string OpenMandriva name openSUSE name_short openSUSE url www.opensuse.org ansi_color 0;97;42 match_string openSUSE name Oracle Corporation (formerly InnoTek Systemberatung) name_short Oracle (InnoTek) url www.virtualbox.org/wiki/innotek url_support www.virtualbox.org ansi_color 0;97;41 match_string InnoTek match_string VirtualBox match_string_case VBOX name Oracle Corporation (formerly Sun Microsystems) name_short Oracle (Sun) url www.oracle.com wikipedia Sun Microsystems ansi_color 0;97;41 match_string Sun Microsystems match_string Oracle Corporation (former Sun Microsystems) name Oracle Corporation name_short Oracle url www.oracle.com ansi_color 0;97;41 match_string Oracle name Oracle Linux name_short Oracle Linux url www.oracle.com/linux ansi_color 0;97;41 match_string Oracle Linux name Ours Technology url www.oti.com.tw match_string_case OTi name Panasonic Industry Company # AKA: Matsushita Electric Industrial name_short Panasonic url www.panasonic.com ansi_color 0;30;107 match_string Panasonic match_string Matsushita match_string MATSHITA note EDID vendor: MEI match_string_exact MEI name Parallels url www.parallels.com match_string lrpepyh vr name Parrot Security name_short Parrot Security url www.parrotsec.org ansi_color 0;97;44 match_string Parrot Security name Patriot Memory name_short Patriot url www.patriotmemory.com wikipedia Patriot Memory ansi_color 0;97;44 match_string Patriot Memory name PCLinuxOS name_short PCLinuxOS url www.pclinuxos.com ansi_color 0;97;44 match_string PCLinuxOS name Phison Electronics Corporation name_short Phison url www.phison.com wikipedia Phison ansi_color 0;33;44 match_string Phison name Phoenix Technologies name_short Phoenix url www.phoenix.com ansi_color 0;31;47 match_string Phoenix name Pioneer url www.pioneer-eur.com match_string Pioneer note EDID vendor: PIO match_string_exact PIO name Planar name_short PLANAR url www.planar.com ansi_color 0;91;40 match_string Planar name Plextor url www.plextor.be match_string Plextor name PNY Technologies name_short PNY url www.pny.com wikipedia PNY Technologies ansi_color 0;97;100 match_string_case PNY name Pop!_OS name_short Pop!_OS url pop.system76.com ansi_color 0;97;100 match_string_case Pop!_OS name Puppy Linux name_short Puppy Linux url puppylinux-woof-ce.github.io ansi_color 0;31;107 match_string Puppy Linux name postmarketOS name_short postmarketOS url www.postmarketos.org ansi_color 0;97;42 match_string postmarketOS name PureOS name_short PureOS ansi_color 0;34;107 url www.pureos.net match_string PureOS name Qualcomm (formerly Atheros) name_short Qualcomm (Atheros) url www.qualcomm.com wikipedia Qualcomm Atheros ansi_color 0;94;47 match_string Qualcomm Atheros match_string Atheros name Qualcomm Incorporated name_short Qualcomm url www.qualcomm.com ansi_color 0;94;47 match_string Qualcomm name Quantum url www.quantum.com match_string QUANTUM name RaidSonic Technology name_short RaidSonic url www.raidsonic.de ansi_color 0;31;107 match_string ICY BOX name Ralink Technology name_short Ralink url www.ralinktech.com ansi_color 0;36;107 match_string RaLink name Raspberry Pi Foundation name_short Raspberry Pi url www.raspberrypi.org ansi_color 0;97;42 match_string RaspberryPi match_string Raspberry Pi name Raspbian url www.raspbian.org ansi_color 0;97;101 match_string raspbian name Realtek Semiconductor name_short Realtek url www.realtek.com.tw ansi_color 0;34;107 match_string Realtek name RebornOS Linux name_short RebornOS Linux url rebornos.org ansi_color 0;36;107 match_string RebornOS Linux name Red Hat url www.redhat.com ansi_color 0;31;40 match_string Red Hat match_string RedHat name Renesas Electronics name_short Renesas url www.renesas.com wikipedia Renesas Electronics ansi_color 0;97;44 match_string Renesas name RevyOS name_short RevyOS url github.com/revyos/revyos ansi_color 0;97;44 match_string RevyOS name Ricoh url www.ricoh.com wikipedia Ricoh ansi_color 0;91;107 match_string Ricoh name Rise Technology name_short Rise note x86 processor vendor ID match_string RiseRiseRise name Rocky Linux name_short Rocky Linux url www.rockylinux.org ansi_color 0;97;42 match_string Rocky Linux name S3 Graphics name_short VIA/S3 url www.s3graphics.com url_support www.s3graphics.com/en/drivers ansi_color 0;30;103 match_string S3 Graphics match_string_case VIA/S3 name Sabrent url www.sabrent.com wikipedia Sabrent ansi_color 0;30;44 match_string Sabrent match_string Arkview name Samsung url www.samsung.com ansi_color 0;47;30 match_string Samsung note EDID vendor: SAM match_string_exact SAM name SanDisk url www.sandisk.com ansi_color 0;31;40 match_string SanDisk name Sanyo Electric name_short SANYO url www.sanyo.com match_string SANYO name Sapphire Technology name_short SAPPHIRE url www.sapphiretech.com ansi_color 0;30;107 match_string sapphire tech match_string sapphire technology name Seagate Technology name_short SEAGATE url www.seagate.com ansi_color 0;92;100 match_string Seagate match_string_num_prefix_case ST name Seiko Epson Corporation name_short EPSON url epson.com wikipedia Seiko Epson ansi_color 0;34;107 match_string Seiko Epson match_string Epson match_string Seiko name Sharp Corporation name_short SHARP ansi_color 0;31;107 match_string Sharp note EDID vendor: SHP match_string_exact SHP name Siemens AG name_short Siemens url www.siemens.com match_string Siemens name Silicon Image url www.siliconimage.com match_string Silicon Image match_string Silicon Integrated Image name Silicon Integrated Systems Corporation name_short SIS url www.sis.com match_string Silicon Integrated Systems match_string_case SIS name Silicon Integrated Systems name_short SIS note x86 processor vendor ID match_string SiS SiS SiS name Silicon Power name_short SP url www.silicon-power.com wikipedia Silicon Power ansi_color 0;97;40 match_string Silicon Power name SK Hynix name_short SK hynix url www.skhynix.com wikipedia SK Hynix ansi_color 0;31;43 match_string Hynix match_string Hyundai name Slackware name_short Slackware url www.slackware.com ansi_color 0;30;107 match_string Slackw #note: Slint can miss matching compared to slackware (longer word) name Slint name_short Slint url slint.fr ansi_color 0;30;107 match_string_num_prefix Slint #note space above needed at end of Slint name Socket Mobile url www.socketmobile.com match_string Socket Communications match_string Socket Mobile match_string Socket name Sony Mobile name_short SONY url www.sony.com ansi_color 0;30;107 match_string Sony Mobile name_short SONY/Ericsson match_string Sony Ericsson name Sony name_short SONY url www.sony.com ansi_color 0;30;107 match_string Sony # match_string_case CDU note EDID vendor: SNY match_string_exact SNY name Spectec Computer name_short Spectec url spectec.com.tw match_string Spectec name SSK Corporation (Shenzhen) name_short SSK飚王 url www.ssk.cn ansi_color 0;91;107 match_string SSK (Shenzhen) match_string_case SSK name ST-Ericsson wikipedia ST-Ericsson ansi_color 0;97;43 match_string ST-Ericsson match_string ST Ericsson match_string STEricsson name STMicroelectronics name_short ST url www.st.com ansi_color 0;97;104 match_string STMicroelectronics match_string ST Micro name Synaptics (formerly Brooktree) name_short Synaptics (Brooktree) url www.synaptics.com match_string Brooktree name Synaptics (formerly Conexant Systems) name_short Synaptics (Conexant) url www.synaptics.com match_string Conexant name Synaptics url www.synaptics.com match_string Synaptics name Synopsys url www.synopsys.com ansi_color 0;35;107 match_string Synopsys name System Rescue name_short System Rescue url www.system-rescue.org ansi_color 0;97;44 match_string System Rescue match_string SystemRescue name TDK-Micronas url www.micronas.com match_string Micronas name TEAC Corporation name_short TEAC url www.teac.com ansi_color 0;34;107 match_string_case TEAC name Telefonaktiebolaget LM Ericsson name_short Ericsson url ericsson.com wikipedia Ericsson ansi_color 0;94;107 match_string Ericsson name Texas Instruments name_short TI url ti.com wikipedia Texas Instruments ansi_color 0;97;40 match_string Texas Instruments match_string_case TI name Toshiba Corporation # styled in all-caps name_short TOSHIBA url www.toshiba.com ansi_color 0;91;47 match_string Toshiba note EDID vendor: TSB match_string_exact TSB name Toshiba Samsung Storage Technology name_short TSST url www.tsst.co.kr wikipedia Toshiba Samsung Storage Technology ansi_color 0;34;107 match_string Toshiba Samsung Storage match_string TSSTcorp match_string_case TSST # JEDEC mfgr [1][78] name Transcend Information name_short Transcend url transcend-info.com ansi_color 0;31;47 match_string Transcend Information # More likely this one is T. Information than T. Technology match_string Transcend # JEDEC mfgr [7][105] name Transcend Technology name_short Transcend match_string Transcend Technology name Transmeta Corporation name_short Transmeta note x86 processor vendor ID match_string TransmetaCPU match_string GenuineTMx86 name Ubuntu url www.ubuntu.com url_support www.ubuntu.com/support/community-support ansi_color 0;97;45 match_string ubuntu name Ultramarine Linux name_short Ultramarine Linux ansi_color 0;34;107 url ultramarine-linux.org match_string Ultramarine Linux match_string Ultramarine name Union Memory (Shenzhen) name_short Union Memory url unionmem.com ansi_color 0;35;107 match_string Union Memory (Shenzhen) name United Microelectronics Corporation name_short UMC note x86 processor vendor ID match_string UMC UMC UMC name VIA (formerly Centaur Technology) name_short VIA (Centaur) url www.via.tw ansi_color 0;36;107 note x86 processor vendor ID match_string CentaurHauls name VIA (formerly Cyrix) name_short VIA (Cyrix) url www.via.tw ansi_color 0;36;107 note x86 processor vendor ID match_string CyrixInstead name VIA Technologies name_short VIA url www.via.com.tw ansi_color 0;36;107 match_string_case VIA name VIA Technologies name_short VIA url www.via.tw ansi_color 0;36;107 note x86 processor vendor ID match_string VIA VIA VIA name Victor Company of Japan name_short JVC url www.victor.co.jp ansi_color 0;91;107 match_string_case JVC match_string Victor name ViewSonic Corporation name_short ViewSonic url www.viewsonic.com ansi_color 0;35;103 match_string ViewSonic note EDID vendor: VSC match_string_exact VSC name Vimicro url www.vimicro.com match_string Vimicro name Vizio name_short VIZIO ansi_color 0;30;107 match_string Vizio note EDID vendor: VIZ match_string_exact VIZ name Void Linux name_short Void Linux url www.voidlinux.org ansi_color 0;33;40 match_string Void Linux name VMware url www.vmware.com wikipedia VMware ansi_color 0;90;47 match_string VMware note x86 VM vendor string match_string VMwareVMware name Western Digital name_short WD url www.westerndigital.com wikipedia Western Digital ansi_color 0;37;40 # ansi_color 0;97;44 match_string Western Digital match_string_case WDC match_string_num_prefix_case WD name Winbond Electronics Corporation name_short Winbond url www.winbond.com wikipedia Winbond ansi_color 0;31;107 match_string Winbond name X.Org Foundation name_short X.Org url www.x.org wikipedia X.Org Foundation ansi_color 0;30;43 match_string X.Org name Xen HVM url www.xenproject.org match_string XenVMMXenVMM name XFX Pine Group name_short XFX url www.xfxforce.com wikipedia XFX ansi_color 0;30;42 match_string_case XFX name Xubuntu name_short Xubuntu ansi_color 0;30;107 url www.xubuntu.org match_string Xubuntu name Yamaha Corporation name_short Yamaha url www.yamaha.com wikipedia Yamaha Corporation ansi_color 0;35;107 match_string Yamaha name ZORIN OS name_short ZORIN OS ansi_color 0;34;107 url zorin.com match_string ZORIN OS match_string Zorin OS name ZOTAC International name_short ZOTAC url www.zotac.com url_support www.zotac.com/support/ ansi_color 0;90;43 match_string ZOTAC hardinfo2-hardinfo2-1331e88/deps/000077500000000000000000000000001474767047500164765ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/deps/qgears2/000077500000000000000000000000001474767047500200425ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/deps/qgears2/CMakeLists.txt000066400000000000000000000055211474767047500226050ustar00rootroot00000000000000message(STATUS "qgears2 module being added...") find_package(Qt5 REQUIRED Core Gui Widgets OpenGL) include(FindPkgConfig) execute_process(COMMAND moc -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB ${CMAKE_CURRENT_SOURCE_DIR}/qgears.h -o ${CMAKE_CURRENT_BINARY_DIR}/moc_qgears.cpp) execute_process(COMMAND moc -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB ${CMAKE_CURRENT_SOURCE_DIR}/qglgears.h -o ${CMAKE_CURRENT_BINARY_DIR}/moc_qglgears.cpp) execute_process(COMMAND /usr/bin/moc -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB ${CMAKE_CURRENT_SOURCE_DIR}/qgears.h -o ${CMAKE_CURRENT_BINARY_DIR}/moc_qgears.cpp) execute_process(COMMAND /usr/bin/moc -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB ${CMAKE_CURRENT_SOURCE_DIR}/qglgears.h -o ${CMAKE_CURRENT_BINARY_DIR}/moc_qglgears.cpp) execute_process(COMMAND /usr/lib/qt5/bin/moc -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB ${CMAKE_CURRENT_SOURCE_DIR}/qgears.h -o ${CMAKE_CURRENT_BINARY_DIR}/moc_qgears.cpp) execute_process(COMMAND /usr/lib/qt5/bin/moc -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB ${CMAKE_CURRENT_SOURCE_DIR}/qglgears.h -o ${CMAKE_CURRENT_BINARY_DIR}/moc_qglgears.cpp) execute_process(COMMAND /usr/lib64/qt5/bin/moc -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB ${CMAKE_CURRENT_SOURCE_DIR}/qgears.h -o ${CMAKE_CURRENT_BINARY_DIR}/moc_qgears.cpp) execute_process(COMMAND /usr/lib64/qt5/bin/moc -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB ${CMAKE_CURRENT_SOURCE_DIR}/qglgears.h -o ${CMAKE_CURRENT_BINARY_DIR}/moc_qglgears.cpp) execute_process(COMMAND /usr/lib/i386-linux-gnu/qt5/bin/moc -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB ${CMAKE_CURRENT_SOURCE_DIR}/qgears.h -o ${CMAKE_CURRENT_BINARY_DIR}/moc_qgears.cpp) execute_process(COMMAND /usr/lib/i386-linux-gnu/qt5/bin/moc -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB ${CMAKE_CURRENT_SOURCE_DIR}/qglgears.h -o ${CMAKE_CURRENT_BINARY_DIR}/moc_qglgears.cpp) include_directories( . Qt5::OpenGL Qt5::Widgets Qt5::Gui Qt5::Core ) add_executable(qgears2 main.cpp qgears.cpp commonrenderer.cpp qglgears.cpp fdclock.cpp ${CMAKE_CURRENT_BINARY_DIR}/moc_qgears.cpp ${CMAKE_CURRENT_BINARY_DIR}/moc_qglgears.cpp ) set_target_properties(qgears2 PROPERTIES COMPILE_FLAGS "-pipe -O2 -Wall -Wextra -D_REENTRANT -fPIC") target_link_libraries(qgears2 GL pthread Qt5::OpenGL Qt5::Widgets Qt5::Gui Qt5::Core ) install(FILES ${CMAKE_BINARY_DIR}/deps/qgears2/qgears2 DESTINATION ${CMAKE_INSTALL_LIBDIR}/hardinfo2/modules PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE ) message(STATUS "qgears2 module added - DONE") hardinfo2-hardinfo2-1331e88/deps/qgears2/commonrenderer.cpp000066400000000000000000000227751474767047500236020ustar00rootroot00000000000000/* * hardinfo2 - System Information and Benchmark * Copyright (C) 2024 hardinfo2 project * License: GPL2+ * * Based on qgears2 by Zack Rusin (Public Domain) * Based on cairogears by David Reveman & Peter Nilsson (Public Domain) * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License v2.0 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "commonrenderer.h" #include "fdclock.h" #include #include #include #include #include #include #include #include #include #include #include #include extern double drand() { return (double)rand()/(double)RAND_MAX; } #ifndef M_PI #define M_PI 3.14159265358979323846 #endif double gear1_rotation = 35; double gear2_rotation = 24; double gear3_rotation = 33.5; #define LINEWIDTH 3 #define FILL_R 26 #define FILL_G 26 #define FILL_B 191 #define FILL_OPACITY 127 #define STROKE_R 26 #define STROKE_G 191 #define STROKE_B 26 #define STROKE_OPACITY 255 CommonRenderer::CommonRenderer(): setupFinished(false) { m_gear1 = gearPath(2*30.0, 2*120.0, 50, 20.0); m_gear2 = gearPath(2*15.0, 2*75.0, 40, 20.0); m_gear3 = gearPath(2*20.0, 2*90.0, 30, 20.0); frame_cnt = 0; ptime = QTime::currentTime(); } void CommonRenderer::renderTo(QPaintDevice *device) { gears(device); ++frame_cnt; QTime ctime = QTime::currentTime(); int ms = ptime.msecsTo(ctime); if (ms>=4000){ printFrameRate(); exit(0); } } QPainterPath CommonRenderer::gearPath(double inner_radius, double outer_radius, int teeth, double tooth_depth) const { int i; double r0, r1, r2; double angle, da; r0 = inner_radius; r1 = outer_radius - tooth_depth / 2.0; r2 = outer_radius + tooth_depth / 2.0; da = 2.0 * M_PI / (qreal) teeth / 4.0; QPainterPath path; path.setFillRule(Qt::OddEvenFill); angle = 0.0; path.moveTo(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da)); for (i = 1; i <= teeth; i++) { angle = i * 2.0 * M_PI / (qreal)teeth; path.lineTo(r1 * cos(angle), r1 * sin(angle)); path.lineTo(r2 * cos(angle + da), r2 * sin(angle + da)); path.lineTo(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da)); if (i < teeth) path.lineTo(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da)); } path.closeSubpath(); path.moveTo(r0 * cos(angle + 3 * da), r0 * sin(angle + 3 * da)); for (i = 1; i <= teeth; i++) { angle = i * 2.0 * M_PI / (qreal) teeth; path.lineTo(r0 * cos(angle), r0 * sin(angle)); } path.closeSubpath(); return path; } CommonRenderer::~CommonRenderer() { } void CommonRenderer::setup(int w, int h) { int i; for (i = 0; i < (NUMPTS * 2); i += 2) { animpts[i + 0] = (qreal) (drand() * w); animpts[i + 1] = (qreal) (drand() * h); deltas[i + 0] = (qreal) (drand() * 6.0 + 4.0); deltas[i + 1] = (qreal) (drand() * 6.0 + 4.0); if (animpts[i + 0] > w / 2.0) { deltas[i + 0] = -deltas[i + 0]; } if (animpts[i + 1] > h / 2.0) { deltas[i + 1] = -deltas[i + 1]; } } setupFinished = true; } void CommonRenderer::animate(qreal *pts, qreal *deltas, int index, int limit) { qreal newpt = pts[index] + deltas[index]; if (newpt <= 0) { newpt = -newpt; deltas[index] = (qreal) (drand() * 4.0 + 2.0); } else if (newpt >= (qreal) limit) { newpt = 2.0 * limit - newpt; deltas[index] = - (qreal) (drand() * 4.0 + 2.0); } pts[index] = newpt; } void CommonRenderer::animateStep(int w, int h) { int i; for (i = 0; i < (NUMPTS * 2); i += 2) { animate(animpts, deltas, i + 0, w); animate(animpts, deltas, i + 1, h); } } void CommonRenderer::pathRender(QPainter *p, QPaintDevice *device) { qreal *ctrlpts = animpts; int len = (NUMPTS * 2); qreal prevx = ctrlpts[len - 2]; qreal prevy = ctrlpts[len - 1]; qreal curx = ctrlpts[0]; qreal cury = ctrlpts[1]; qreal midx = (curx + prevx) / 2.0; qreal midy = (cury + prevy) / 2.0; animateStep(device->width(), device->height()); QPainterPath path; path.moveTo(midx, midy); for (int i = 2; i <= (NUMPTS * 2); i += 2) { qreal x2, x1 = (midx + curx) / 2.0; qreal y2, y1 = (midy + cury) / 2.0; prevx = curx; prevy = cury; if (i < (NUMPTS * 2)) { curx = ctrlpts[i + 0]; cury = ctrlpts[i + 1]; } else { curx = ctrlpts[0]; cury = ctrlpts[1]; } midx = (curx + prevx) / 2.0; midy = (cury + prevy) / 2.0; x2 = (prevx + midx) / 2.0; y2 = (prevy + midy) / 2.0; path.cubicTo(x1, y1, x2, y2, midx, midy); } path.closeSubpath(); if (mode == GEARSFANCY) { QRectF rect = path.controlPointRect(); //qDebug()<setBrush(brush); } else { QBrush brush(QColor(FILL_R, FILL_G, FILL_B, FILL_OPACITY)); p->setBrush(brush); } p->save(); p->setBrush(QColor(0, 0, 0, 77)); //p->setPen(QColor(0, 0, 0, 77)); p->setPen(Qt::NoPen); p->translate(-10, -10); p->drawPath(path); p->restore(); QPen pen(QColor(STROKE_R, STROKE_G, STROKE_B, STROKE_OPACITY)); pen.setWidth(LINEWIDTH); p->setPen(pen); p->drawPath(path); } void CommonRenderer::gearsRender(QPainter *p) { p->save(); p->translate(2*170, 2*330.0); p->rotate(gear1_rotation); p->drawPath(m_gear1); p->restore(); p->save(); p->translate(2*369.0, 2*330.0); p->rotate(gear2_rotation); p->drawPath(m_gear2); p->restore(); p->save(); p->translate(2*170.0, 2*116.0); p->rotate(gear3_rotation); p->drawPath(m_gear3); p->restore(); } void CommonRenderer::gears(QPaintDevice *device) { if (!setupFinished) setup(device->width(), device->height()); QPainter painter(device); painter.setRenderHint(QPainter::Antialiasing, true); //QLinearGradient gradient(QPoint(0, 0), QPoint(device->width(), device->height())); //gradient.setColorAt(0, QColor(127, 255, 0, 0)); //gradient.setColorAt(1, QColor(127, 0, 255, 0)); //QBrush diagonalGradient(gradient); //painter.setBrush(diagonalGradient); //painter.setBrush(QColor(255, 255, 0, 0)); if (painter.paintEngine()->hasFeature(QPaintEngine::PorterDuff)) painter.setCompositionMode(QPainter::CompositionMode_Source); { painter.setRenderHint(QPainter::Antialiasing, true); if (painter.paintEngine()->hasFeature(QPaintEngine::PorterDuff)) painter.setCompositionMode(QPainter::CompositionMode_SourceOver); painter.save(); //painter.setPen(QColor(0, 0, 0, 77)); painter.setPen(Qt::NoPen); //no stroking painter.setBrush(QColor(0, 0, 0, 77)); painter.translate(-10, -10); gearsRender(&painter); painter.restore(); //painter.setBrush(QColor(191, 191, 191)); QRectF rect = m_gear1.controlPointRect(); QLinearGradient linearGrad(rect.topLeft(), rect.bottomRight()); linearGrad.setColorAt(0, QColor(255, 0, 255, 191)); linearGrad.setColorAt(1, QColor(0, 255, 255, 255)); QBrush brush(linearGrad); painter.setBrush(brush); gearsRender(&painter); if (mode == GEARSFANCY) { static int CLOCK_W = 256*1.5; static int CLOCK_H = 245*1.5; static qreal xs = 1.0; static qreal ys = 1.0; static bool up = true; painter.save(); painter.translate((painter.device()->width() -CLOCK_W) - (CLOCK_W/2)*xs, (painter.device()->height()-CLOCK_H) - (CLOCK_H/2)*ys); painter.scale(xs, ys); FdClock::render(&painter, CLOCK_W, CLOCK_H); if (xs >= 2 || ys >= 2) { up = false; } else if (xs <= 1 || ys <= 1) { up = true; } qreal diff = 0.01; if (!up) diff = -diff; painter.scale(1/xs, 1/ys); xs += diff; ys += diff; painter.restore(); } } gear1_rotation -= (20.0 / 150.0); gear2_rotation += (20.0 / 112.0); gear3_rotation += (20.0 / 114.0); pathRender(&painter, device); } void CommonRenderer::setMode(Mode m) { mode = m; } enum RenderType { Render, OpenGL }; extern RenderType renderer; void CommonRenderer::printFrameRate() { QTime ctime = QTime::currentTime(); int ms = ptime.msecsTo(ctime); double fc = (double)(frame_cnt*1000)/ms; printf("Ver=1, GL=%d, Result:%d/%d=%.3f\n", ((renderer==OpenGL)?1:0), frame_cnt, ms, fc); frame_cnt = 0; ptime = ctime; } hardinfo2-hardinfo2-1331e88/deps/qgears2/commonrenderer.h000066400000000000000000000037021474767047500232340ustar00rootroot00000000000000/* * hardinfo2 - System Information and Benchmark * Copyright (C) 2024 hardinfo2 project * License: GPL2+ * * Based on qgears2 by Zack Rusin (Public Domain) * Based on cairogears by David Reveman & Peter Nilsson (Public Domain) * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License v2.0 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef COMMONRENDERER_H #define COMMONRENDERER_H class QPainter; class QWidget; class QImage; class QPixmap; #include #include #define NUMPTS 12 class CommonRenderer { public: enum Mode { GEARSFANCY, GEARS }; public: CommonRenderer(); virtual ~CommonRenderer(); void setMode(Mode mode); protected: virtual void renderTo(QPaintDevice *device); void gears(QPaintDevice *device); QPainterPath gearPath(double inner_radius, double outer_radius, int teeth, double tooth_depth) const; void pathRender(QPainter *p, QPaintDevice *device); void gearsRender(QPainter *p); void setup(int w, int h); void animate(double *pts, double *deltas, int index, int limit); void animateStep(int w, int h); void printFrameRate(); QPainterPath m_gear1; QPainterPath m_gear2; QPainterPath m_gear3; bool setupFinished; qreal animpts[NUMPTS * 2]; qreal deltas[NUMPTS * 2]; Mode mode; QTime ptime; unsigned int frame_cnt; }; #endif hardinfo2-hardinfo2-1331e88/deps/qgears2/fdclock.cpp000066400000000000000000000215251474767047500221600ustar00rootroot00000000000000/* * hardinfo2 - System Information and Benchmark * Copyright (C) 2024 hardinfo2 project * License: GPL2+ * * Based on qgears2 by Zack Rusin (Public Domain) * Based on cairogears by David Reveman & Peter Nilsson (Public Domain) * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License v2.0 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "fdclock.h" #include #include #include #include #include #include #include #include #include #ifndef M_SQRT2 #define M_SQRT2 1.41421356237309504880 #endif static void drawArc(QPainterPath &path, double xc, double yc, double radius, double angle2, double angle1) { double xs = xc - radius; double ys = yc - radius; double width = radius*2; double height = radius*2; double span = angle2 - angle1; path.arcTo(xs, ys, width, height, angle1, span); } static QPainterPath drawBoundary() { QPainterPath path; path.moveTo(63.000, 36.000); path.cubicTo(63.000, 43.000, 58.000, 47.000, 51.000, 47.000); path.lineTo(13.000, 47.000); path.cubicTo(6.000, 47.000, 1.000, 43.000, 1.000, 36.000); path.lineTo(1.000, 12.000); path.cubicTo(1.000, 5.000, 6.000, 1.000, 13.000, 1.000); path.lineTo(51.000, 1.000); path.cubicTo(58.000, 1.000, 63.000, 5.000, 63.000, 12.000); path.closeSubpath(); return path; } static void drawOutline(QPainter *p) { QPen pen(QColor(255, 255, 255)); pen.setWidthF(2.0); QPainterPath path = drawBoundary(); p->strokePath(path, pen); } static void drawBackground(QPainter *p) { p->save(); QBrush brush(QColor(59, 128, 174)); p->translate(3.5, 3.5); p->scale(0.887, 0.848); QPainterPath path = drawBoundary(); p->fillPath(path, brush); p->restore(); } static QPainterPath drawWindow() { QPainterPath path; path.moveTo(-6.00, -7.125); path.lineTo(6.00, -7.125); path.cubicTo(8.00, -7.125, 9.00, -6.125, 9.00, -4.125); path.lineTo(9.00, 4.125); path.cubicTo(9.00, 6.125, 8.00, 7.125, 6.00, 7.125); path.lineTo(-6.00, 7.125); path.cubicTo(-8.00, 7.125, -9.00, 6.125, -9.00, 4.125); path.lineTo(-9.00, -4.125); path.cubicTo(-9.00, -6.125, -8.00, -7.125, -6.00, -7.125); path.closeSubpath(); return path; } static void drawWindowAt(QPainter *p, double x, double y, double scale) { p->save(); { p->translate(x, y); p->scale(scale, scale); QPainterPath windowPath = drawWindow(); QBrush brush(QColor(255, 255, 255)); p->fillPath(windowPath, brush); QPen pen(QColor(59, 128, 174)); p->scale(1/scale, 1/scale); p->strokePath(windowPath, pen); } p->restore(); } void drawWindows(QPainter *p) { { QPainterPath path; path.moveTo(18.00, 16.125); path.lineTo(48.25, 20.375); path.lineTo(30.25, 35.825); path.closeSubpath(); QPen pen(QColor(255, 255, 255, 127)); p->strokePath(path, pen); } drawWindowAt(p, 18.00, 16.125, 1); drawWindowAt(p, 48.25, 20.375, 0.8); drawWindowAt(p, 30.25, 35.825, 0.5); } #define FDLOGO_ROT_X_FACTOR 1.086 #define FDLOGO_ROT_Y_FACTOR 1.213 #define FDLOGO_WIDTH (64 * FDLOGO_ROT_X_FACTOR) #define FDLOGO_HEIGHT (48 * FDLOGO_ROT_Y_FACTOR) static void drawFancyTick(QPainter *p, double radius) { QPainterPath path1; drawArc(path1, 0, 0, radius, 0, 360); p->fillPath(path1, QColor(59, 128, 174)); QPen pen(QColor(136, 136, 136)); pen.setWidthF(radius * 2 / 3); QPainterPath path2; path2.moveTo(0+2*radius, 0); drawArc(path2, 0, 0, radius * 2, 0, -360); p->strokePath(path2, pen); } static void drawPlainTick(QPainter *p, double radius) { QPainterPath path; drawArc(path, 0, 0, radius, 0, 360); p->fillPath(path, QColor(59, 128, 173)); } void FdClock::faceDraw(QPainter *p, double width, double height) { int minute; p->save(); { p->scale(width, height); p->save(); { p->translate(.15, .15); p->scale(.7, .7); logoDraw(p, 1, 1); } p->restore(); p->translate(0.5, 0.5); p->scale(0.93, 0.93); for (minute = 0; minute < 60; minute++) { double degrees; p->save(); degrees = minute * 6.0; p->rotate(degrees); p->translate(0, 0.5); if (minute % 15 == 0) drawFancyTick(p, 0.015); else if (minute % 5 == 0) drawFancyTick(p, 0.01); else drawPlainTick(p, 0.01); p->restore(); } } p->restore(); } void FdClock::logoDraw(QPainter *p, double width, double height) { double x_scale, y_scale, scale, x_off, y_off; p->save(); x_scale = width / FDLOGO_WIDTH; y_scale = height / FDLOGO_HEIGHT; scale = x_scale < y_scale ? x_scale : y_scale; x_off = (width - (scale * FDLOGO_WIDTH)) / 2; y_off = (height - (scale * FDLOGO_HEIGHT)) / 2; p->translate(x_off, y_off); p->scale(scale, scale); p->translate(-2.5, 14.75); p->rotate(-16); drawOutline(p); drawBackground(p); drawWindows(p); p->restore(); } static QPainterPath drawHour(double width, double length) { QPainterPath path; double r = width / 2; path.moveTo(length, -r); drawArc(path, length, 0, r, -90, 90); path.lineTo (width * M_SQRT2, r); drawArc(path, 0, 0, width, 30, 330); path.closeSubpath(); return path; } static QPainterPath drawMinute(double width, double length) { QPainterPath path; double r = width / 2; path.moveTo(length, -r); drawArc(path, length, 0, r, -90, 90); path.lineTo(0, r); path.lineTo(0, -r); path.closeSubpath(); return path; } static QPainterPath drawSecond(double width, double length) { double r = width / 2; double thick = width; double back = length / 3; double back_thin = length / 10; QPainterPath path; path.moveTo(length, -r); drawArc (path, length, 0, r, -90, 90); path.lineTo(-back_thin, r); path.lineTo(-back_thin, thick); path.lineTo(-back, thick); path.lineTo(-back, -thick); path.lineTo(-back_thin, -thick); path.lineTo(-back_thin, -r); path.closeSubpath(); return path; } static void drawHand(QPainter *p, double angle, double width, double length, double alt, QPainterPath (*draw)(double width, double length)) { p->save(); {//shadow p->translate(alt/2, alt); p->rotate(angle); QPainterPath path = (*draw)(width, length); p->fillPath(path, QColor(0, 0, 0, 77)); } p->restore(); p->save(); { p->rotate(angle); QPainterPath path = (*draw)(width, length); p->fillPath(path, QColor(0, 0, 0)); } p->restore(); } static void drawTime(QPainter *p, double width, double height, int seconds) { QTime qtm = QTime::currentTime(); double hour_angle, minute_angle, second_angle; second_angle = (qtm.second() + qtm.msec() / 1000.0) * 6.0; minute_angle = qtm.minute() * 6.0 + second_angle / 60.0; hour_angle = qtm.hour() * 30.0 + minute_angle / 12.0; p->save(); { p->scale(width, height); p->translate(0.5, 0.5); drawHand(p, hour_angle - 90, 0.03, 0.25, 0.010, drawHour); drawHand(p, minute_angle - 90, 0.015, 0.39, 0.020, drawMinute); if (seconds) drawHand(p, second_angle - 90, 0.0075, 0.32, 0.026, drawSecond); } p->restore(); } void FdClock::handDraw(QPainter *p, double width, double height, int seconds) { drawTime(p, width, height, seconds); } void FdClock::render(QPainter *p, double width, double height) { //p->setCompositionMode(QPainter::CompositionMode_Source); //p->fillRect(0, 0, width, height, Qt::white); if (p->paintEngine()->hasFeature(QPaintEngine::PorterDuff)) p->setCompositionMode(QPainter::CompositionMode_SourceOver); p->save(); QBrush brush(QColor(255, 255, 255, 64)); p->scale(width, height); p->translate(0.5, 0.5); QPainterPath path; drawArc(path, 0, 0, 0.5, 0, 360); p->fillPath(path, brush); p->restore(); faceDraw(p, width, height); handDraw(p, width, height, 1); } hardinfo2-hardinfo2-1331e88/deps/qgears2/fdclock.h000066400000000000000000000024071474767047500216230ustar00rootroot00000000000000/* * hardinfo2 - System Information and Benchmark * Copyright (C) 2024 hardinfo2 project * License: GPL2+ * * Based on qgears2 by Zack Rusin (Public Domain) * Based on cairogears by David Reveman & Peter Nilsson (Public Domain) * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License v2.0 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef FDCLOCK_H #define FDCLOCK_H class QPainter; class FdClock { public: static void faceDraw(QPainter *p, double width, double height); static void logoDraw(QPainter *p, double width, double height); static void handDraw(QPainter *p, double width, double height, int seconds); static void render(QPainter *p, double width, double height); }; #endif hardinfo2-hardinfo2-1331e88/deps/qgears2/main.cpp000066400000000000000000000031431474767047500214730ustar00rootroot00000000000000#include "qgears.h" #include "qglgears.h" #include #include #if defined(Q_WS_X11) #include #include #include #endif enum RenderType { Render, OpenGL }; RenderType renderer = Render; int main(int argc, char **argv) { int dark=0; QWidget *widget = NULL; QApplication app(argc, argv); CommonRenderer::Mode mode = CommonRenderer::GEARSFANCY; for (int i = 1; i < argc; ++i) { if (!strcmp("-gl", argv[i])) { renderer = OpenGL; }else if (!strcmp("-dark", argv[i])) { dark = 1; } else { if (i == (argc-1)) { fprintf(stderr, "Usage: %s [-gl]\n", argv[0]); exit(1); } } } if(renderer==OpenGL){ widget = new QGLGears(); } else { widget = new QGears(); } if(widget == NULL){ fprintf(stderr, "OpenGL might be unsupported\n"); exit(1); } CommonRenderer *rendererWidget = dynamic_cast(widget); if (rendererWidget) { //qDebug()<<"setting mode to "<setMode(mode); } QPalette pal = QPalette(); // set background color - light/dark mode if(dark){ pal.setColor(QPalette::Window, Qt::black); }else{ pal.setColor(QPalette::Window, Qt::white); } widget->setAutoFillBackground(true); widget->setPalette(pal); widget->setWindowFlags(Qt::FramelessWindowHint); widget->setWindowTitle("hardinfo2 - OpenGL"); widget->show(); app.exec(); } hardinfo2-hardinfo2-1331e88/deps/qgears2/moc_predefs.h000066400000000000000000000405531474767047500225100ustar00rootroot00000000000000/* * hardinfo2 - System Information and Benchmark * Copyright (C) 2024 hardinfo2 project * License: GPL2+ * * Based on qgears2 by Zack Rusin (Public Domain) * Based on cairogears by David Reveman & Peter Nilsson (Public Domain) * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License v2.0 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #define __SSP_STRONG__ 3 #define __DBL_MIN_EXP__ (-1021) #define __cpp_attributes 200809L #define __cpp_nontype_template_parameter_auto 201606L #define __UINT_LEAST16_MAX__ 0xffff #define __ATOMIC_ACQUIRE 2 #define __FLT128_MAX_10_EXP__ 4932 #define __FLT_MIN__ 1.17549435082228750796873653722224568e-38F #define __GCC_IEC_559_COMPLEX 2 #define __cpp_aggregate_nsdmi 201304L #define __UINT_LEAST8_TYPE__ unsigned char #define __SIZEOF_FLOAT80__ 16 #define __INTMAX_C(c) c ## L #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 0xff #define __SCHAR_WIDTH__ 8 #define __WINT_MAX__ 0xffffffffU #define __FLT32_MIN_EXP__ (-125) #define __cpp_static_assert 201411L #define __ORDER_LITTLE_ENDIAN__ 1234 #define __SIZE_MAX__ 0xffffffffffffffffUL #define __WCHAR_MAX__ 0x7fffffff #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 #define __DBL_DENORM_MIN__ double(4.94065645841246544176568792868221372e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __GCC_ATOMIC_CHAR_LOCK_FREE 2 #define __GCC_IEC_559 2 #define __FLT32X_DECIMAL_DIG__ 17 #define __FLT_EVAL_METHOD__ 0 #define __cpp_binary_literals 201304L #define __FLT64_DECIMAL_DIG__ 17 #define __CET__ 3 #define __cpp_noexcept_function_type 201510L #define __GCC_ATOMIC_CHAR32_T_LOCK_FREE 2 #define __cpp_variadic_templates 200704L #define __UINT_FAST64_MAX__ 0xffffffffffffffffUL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __cpp_variable_templates 201304L #define __FLT32X_MAX_EXP__ 1024 #define __FLT32_HAS_DENORM__ 1 #define __UINT_FAST8_MAX__ 0xff #define __cpp_rvalue_reference 200610L #define __cpp_nested_namespace_definitions 201411L #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __INT_LEAST8_WIDTH__ 8 #define __cpp_variadic_using 201611L #define __UINT_LEAST64_MAX__ 0xffffffffffffffffUL #define __INT_LEAST8_MAX__ 0x7f #define __cpp_capture_star_this 201603L #define __SHRT_MAX__ 0x7fff #define __LDBL_MAX__ 1.18973149535723176502126385303097021e+4932L #define __FLT64X_MAX_10_EXP__ 4932 #define __cpp_if_constexpr 201606L #define __LDBL_IS_IEC_60559__ 2 #define __FLT64X_HAS_QUIET_NAN__ 1 #define __UINT_LEAST8_MAX__ 0xff #define __GCC_ATOMIC_BOOL_LOCK_FREE 2 #define __FLT128_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966F128 #define __UINTMAX_TYPE__ long unsigned int #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __FLT_EVAL_METHOD_TS_18661_3__ 0 #define __OPTIMIZE__ 1 #define __unix 1 #define __UINT32_MAX__ 0xffffffffU #define __GXX_EXPERIMENTAL_CXX0X__ 1 #define __FLT128_MIN_EXP__ (-16381) #define __WINT_MIN__ 0U #define __FLT128_MIN_10_EXP__ (-4931) #define __FLT32X_IS_IEC_60559__ 2 #define __INT_LEAST16_WIDTH__ 16 #define __SCHAR_MAX__ 0x7f #define __FLT128_MANT_DIG__ 113 #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) #define __INT64_C(c) c ## L #define __GCC_ATOMIC_POINTER_LOCK_FREE 2 #define _FORTIFY_SOURCE 2 #define __FLT32X_MANT_DIG__ 53 #define __GCC_ATOMIC_CHAR16_T_LOCK_FREE 2 #define __cpp_aligned_new 201606L #define __USER_LABEL_PREFIX__ #define __FLT32_MAX_10_EXP__ 38 #define __FLT64X_EPSILON__ 1.08420217248550443400745280086994171e-19F64x #define __STDC_HOSTED__ 1 #define __DEC64_MIN_EXP__ (-382) #define __cpp_decltype_auto 201304L #define __DBL_DIG__ 15 #define __FLT32_DIG__ 6 #define __FLT_EPSILON__ 1.19209289550781250000000000000000000e-7F #define __GXX_WEAK__ 1 #define __SHRT_WIDTH__ 16 #define __FLT32_IS_IEC_60559__ 2 #define __LDBL_MIN__ 3.36210314311209350626267781732175260e-4932L #define __DBL_IS_IEC_60559__ 2 #define __DEC32_MAX__ 9.999999E96DF #define __cpp_threadsafe_static_init 200806L #define __cpp_enumerator_attributes 201411L #define __FLT64X_DENORM_MIN__ 3.64519953188247460252840593361941982e-4951F64x #define __FLT32X_HAS_INFINITY__ 1 #define __INT32_MAX__ 0x7fffffff #define __unix__ 1 #define __INT_WIDTH__ 32 #define __SIZEOF_LONG__ 8 #define __STDC_IEC_559__ 1 #define __STDC_ISO_10646__ 201706L #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __STDC_IEC_559_COMPLEX__ 1 #define __FLT64_EPSILON__ 2.22044604925031308084726333618164062e-16F64 #define __gnu_linux__ 1 #define __INT16_MAX__ 0x7fff #define __FLT64_MIN_EXP__ (-1021) #define __FLT64X_MIN_10_EXP__ (-4931) #define __LDBL_HAS_QUIET_NAN__ 1 #define __FLT64_MANT_DIG__ 53 #define __FLT64X_MANT_DIG__ 64 #define __GNUC__ 11 #define __GXX_RTTI 1 #define __pie__ 2 #define __MMX__ 1 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 16 #define __BIGGEST_ALIGNMENT__ 16 #define __STDC_UTF_16__ 1 #define __FLT64_MAX_10_EXP__ 308 #define __cpp_delegating_constructors 200604L #define __FLT32_HAS_INFINITY__ 1 #define __DBL_MAX__ double(1.79769313486231570814527423731704357e+308L) #define __cpp_raw_strings 200710L #define __INT_FAST32_MAX__ 0x7fffffffffffffffL #define __DBL_HAS_INFINITY__ 1 #define __SIZEOF_FLOAT__ 4 #define __HAVE_SPECULATION_SAFE_VALUE 1 #define __cpp_fold_expressions 201603L #define __DEC32_MIN_EXP__ (-94) #define __INTPTR_WIDTH__ 64 #define __FLT64X_HAS_INFINITY__ 1 #define __UINT_LEAST32_MAX__ 0xffffffffU #define __FLT32X_HAS_DENORM__ 1 #define __INT_FAST16_TYPE__ long int #define __MMX_WITH_SSE__ 1 #define __LDBL_HAS_DENORM__ 1 #define __cplusplus 201703L #define __cpp_ref_qualifiers 200710L #define __DEC32_MIN__ 1E-95DF #define __DEPRECATED 1 #define __cpp_rvalue_references 200610L #define __DBL_MAX_EXP__ 1024 #define __WCHAR_WIDTH__ 32 #define __FLT32_MAX__ 3.40282346638528859811704183484516925e+38F32 #define __DEC128_EPSILON__ 1E-33DL #define __SSE2_MATH__ 1 #define __ATOMIC_HLE_RELEASE 131072 #define __PTRDIFF_MAX__ 0x7fffffffffffffffL #define __amd64 1 #define __ATOMIC_HLE_ACQUIRE 65536 #define __GNUG__ 11 #define __LONG_LONG_MAX__ 0x7fffffffffffffffLL #define __SIZEOF_SIZE_T__ 8 #define __cpp_nsdmi 200809L #define __FLT64X_MIN_EXP__ (-16381) #define __SIZEOF_WINT_T__ 4 #define __LONG_LONG_WIDTH__ 64 #define __cpp_initializer_lists 200806L #define __FLT32_MAX_EXP__ 128 #define __cpp_hex_float 201603L #define __GXX_ABI_VERSION 1016 #define __FLT128_HAS_INFINITY__ 1 #define __FLT_MIN_EXP__ (-125) #define __GCC_HAVE_DWARF2_CFI_ASM 1 #define __x86_64 1 #define __cpp_lambdas 200907L #define __INT_FAST64_TYPE__ long int #define __FLT64_DENORM_MIN__ 4.94065645841246544176568792868221372e-324F64 #define __cpp_template_auto 201606L #define __DBL_MIN__ double(2.22507385850720138309023271733240406e-308L) #define __FLT128_EPSILON__ 1.92592994438723585305597794258492732e-34F128 #define __FLT64X_NORM_MAX__ 1.18973149535723176502126385303097021e+4932F64x #define __SIZEOF_POINTER__ 8 #define __LP64__ 1 #define __DBL_HAS_QUIET_NAN__ 1 #define __FLT32X_EPSILON__ 2.22044604925031308084726333618164062e-16F32x #define __DECIMAL_BID_FORMAT__ 1 #define __FLT64_MIN_10_EXP__ (-307) #define __FLT64X_DECIMAL_DIG__ 21 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 0xffff #define __LDBL_HAS_INFINITY__ 1 #define __FLT32_MIN__ 1.17549435082228750796873653722224568e-38F32 #define __UINT8_TYPE__ unsigned char #define __FLT_DIG__ 6 #define __DEC_EVAL_METHOD__ 2 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __FLT_MANT_DIG__ 24 #define __LDBL_DECIMAL_DIG__ 21 #define __VERSION__ "11.4.0" #define __UINT64_C(c) c ## UL #define __cpp_unicode_characters 201411L #define _STDC_PREDEF_H 1 #define __INT_LEAST32_MAX__ 0x7fffffff #define __GCC_ATOMIC_INT_LOCK_FREE 2 #define __FLT128_MAX_EXP__ 16384 #define __FLT32_MANT_DIG__ 24 #define __FLOAT_WORD_ORDER__ __ORDER_LITTLE_ENDIAN__ #define __STDC_IEC_60559_COMPLEX__ 201404L #define __cpp_aggregate_bases 201603L #define __FLT128_HAS_DENORM__ 1 #define __FLT32_DECIMAL_DIG__ 9 #define __FLT128_DIG__ 33 #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __ORDER_PDP_ENDIAN__ 3412 #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ long int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __DBL_HAS_DENORM__ 1 #define __cpp_rtti 199711L #define __SIZE_TYPE__ long unsigned int #define __UINT64_MAX__ 0xffffffffffffffffUL #define __FLT_IS_IEC_60559__ 2 #define __GNUC_WIDE_EXECUTION_CHARSET_NAME "UTF-32LE" #define __FLT64X_DIG__ 18 #define __INT8_TYPE__ signed char #define __cpp_digit_separators 201309L #define __ELF__ 1 #define __GCC_ASM_FLAG_OUTPUTS__ 1 #define __UINT32_TYPE__ unsigned int #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443400745280086994171e-19L #define __UINTMAX_C(c) c ## UL #define __GLIBCXX_BITSIZE_INT_N_0 128 #define __k8 1 #define __FLT32X_MIN__ 2.22507385850720138309023271733240406e-308F32x #define __SIG_ATOMIC_MAX__ 0x7fffffff #define __GCC_ATOMIC_WCHAR_T_LOCK_FREE 2 #define __STDC_IEC_60559_BFP__ 201404L #define __SIZEOF_PTRDIFF_T__ 8 #define __LDBL_DIG__ 18 #define __FLT64_IS_IEC_60559__ 2 #define __x86_64__ 1 #define __FLT32X_MIN_EXP__ (-1021) #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __INT_FAST16_MAX__ 0x7fffffffffffffffL #define __FLT64_DIG__ 15 #define __UINT_FAST32_MAX__ 0xffffffffffffffffUL #define __UINT_LEAST64_TYPE__ long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 0x7fffffffffffffffL #define __FLT64X_HAS_DENORM__ 1 #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __GNUC_EXECUTION_CHARSET_NAME "UTF-8" #define __cpp_unicode_literals 200710L #define __UINT_FAST16_TYPE__ long unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __INT_FAST32_WIDTH__ 64 #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __SIZE_WIDTH__ 64 #define __SEG_FS 1 #define __INT_LEAST16_MAX__ 0x7fff #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 0x7fffffffffffffffL #define __SEG_GS 1 #define __FLT32_DENORM_MIN__ 1.40129846432481707092372958328991613e-45F32 #define __SIG_ATOMIC_WIDTH__ 32 #define __INT_LEAST64_TYPE__ long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __cpp_structured_bindings 201606L #define __SIZEOF_INT__ 4 #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 0x7f #define __FLT128_MAX__ 1.18973149535723176508575932662800702e+4932F128 #define __INTPTR_MAX__ 0x7fffffffffffffffL #define __cpp_sized_deallocation 201309L #define __cpp_guaranteed_copy_elision 201606L #define linux 1 #define __FLT64_HAS_QUIET_NAN__ 1 #define __FLT32_MIN_10_EXP__ (-37) #define __EXCEPTIONS 1 #define __PTRDIFF_WIDTH__ 64 #define __LDBL_MANT_DIG__ 64 #define __cpp_range_based_for 201603L #define __FLT64_HAS_INFINITY__ 1 #define __FLT64X_MAX__ 1.18973149535723176502126385303097021e+4932F64x #define __STDCPP_DEFAULT_NEW_ALIGNMENT__ 16 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __code_model_small__ 1 #define __GCC_ATOMIC_LONG_LOCK_FREE 2 #define __cpp_nontype_template_args 201411L #define __DEC32_MANT_DIG__ 7 #define __cpp_return_type_deduction 201304L #define __k8__ 1 #define __INTPTR_TYPE__ long int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ int #define __pic__ 2 #define __UINTPTR_MAX__ 0xffffffffffffffffUL #define __INT_FAST64_WIDTH__ 64 #define __cpp_decltype 200707L #define __INT_FAST64_MAX__ 0x7fffffffffffffffL #define __GCC_ATOMIC_TEST_AND_SET_TRUEVAL 1 #define __FLT_NORM_MAX__ 3.40282346638528859811704183484516925e+38F #define __FLT64X_MAX_EXP__ 16384 #define __UINT_FAST64_TYPE__ long unsigned int #define __cpp_inline_variables 201606L #define __INT_MAX__ 0x7fffffff #define __linux__ 1 #define __INT64_TYPE__ long int #define __FLT_MAX_EXP__ 128 #define __ORDER_BIG_ENDIAN__ 4321 #define __DBL_MANT_DIG__ 53 #define __cpp_inheriting_constructors 201511L #define __SIZEOF_FLOAT128__ 16 #define __INT_LEAST64_MAX__ 0x7fffffffffffffffL #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __FLT32_NORM_MAX__ 3.40282346638528859811704183484516925e+38F32 #define __SSE__ 1 #define __LDBL_MIN_EXP__ (-16381) #define __FLT64_MAX__ 1.79769313486231570814527423731704357e+308F64 #define __amd64__ 1 #define __WINT_WIDTH__ 32 #define __INT_LEAST64_WIDTH__ 64 #define __LDBL_MAX_EXP__ 16384 #define __FLT32X_MAX_10_EXP__ 308 #define __SIZEOF_INT128__ 16 #define __FLT64X_IS_IEC_60559__ 2 #define __LDBL_MAX_10_EXP__ 4932 #define __ATOMIC_RELAXED 0 #define __DBL_EPSILON__ double(2.22044604925031308084726333618164062e-16L) #define __FLT128_MIN__ 3.36210314311209350626267781732175260e-4932F128 #define _LP64 1 #define __UINT8_C(c) c #define __FLT64_MAX_EXP__ 1024 #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __GNUC_PATCHLEVEL__ 0 #define __FLT128_NORM_MAX__ 1.18973149535723176508575932662800702e+4932F128 #define __FLT64_NORM_MAX__ 1.79769313486231570814527423731704357e+308F64 #define __FLT128_HAS_QUIET_NAN__ 1 #define __INTMAX_MAX__ 0x7fffffffffffffffL #define __INT_FAST8_TYPE__ signed char #define __cpp_namespace_attributes 201411L #define __FLT64X_MIN__ 3.36210314311209350626267781732175260e-4932F64x #define __STDCPP_THREADS__ 1 #define __GNUC_STDC_INLINE__ 1 #define __FLT64_HAS_DENORM__ 1 #define __FLT32_EPSILON__ 1.19209289550781250000000000000000000e-7F32 #define __DBL_DECIMAL_DIG__ 17 #define __STDC_UTF_32__ 1 #define __INT_FAST8_WIDTH__ 8 #define __FXSR__ 1 #define __FLT32X_MAX__ 1.79769313486231570814527423731704357e+308F32x #define __DBL_NORM_MAX__ double(1.79769313486231570814527423731704357e+308L) #define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__ #define __INTMAX_WIDTH__ 64 #define __cpp_runtime_arrays 198712L #define __UINT64_TYPE__ long unsigned int #define __UINT32_C(c) c ## U #define __cpp_alias_templates 200704L #define __FLT_DENORM_MIN__ 1.40129846432481707092372958328991613e-45F #define __FLT128_IS_IEC_60559__ 2 #define __INT8_MAX__ 0x7f #define __LONG_WIDTH__ 64 #define __PIC__ 2 #define __UINT_FAST32_TYPE__ long unsigned int #define __FLT32X_NORM_MAX__ 1.79769313486231570814527423731704357e+308F32x #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859811704183484516925e+38F #define __cpp_constexpr 201603L #define __SSE2__ 1 #define __cpp_deduction_guides 201703L #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __cpp_exceptions 199711L #define __FLT_MIN_10_EXP__ (-37) #define __FLT64_MIN__ 2.22507385850720138309023271733240406e-308F64 #define __INT_LEAST32_WIDTH__ 32 #define __INTMAX_TYPE__ long int #define __DEC128_MAX_EXP__ 6145 #define __FLT32X_HAS_QUIET_NAN__ 1 #define __ATOMIC_CONSUME 1 #define __GNUC_MINOR__ 4 #define __GLIBCXX_TYPE_INT_N_0 __int128 #define __INT_FAST16_WIDTH__ 64 #define __UINTMAX_MAX__ 0xffffffffffffffffUL #define __PIE__ 2 #define __FLT32X_DENORM_MIN__ 4.94065645841246544176568792868221372e-324F32x #define __cpp_template_template_args 201611L #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460252840593361941982e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __FLT32X_DIG__ 15 #define __PTRDIFF_TYPE__ long int #define __ATOMIC_SEQ_CST 5 #define __FLT32X_MIN_10_EXP__ (-307) #define __UINTPTR_TYPE__ long unsigned int #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-4931) #define __cpp_generic_lambdas 201304L #define __SSE_MATH__ 1 #define __SIZEOF_LONG_LONG__ 8 #define __cpp_user_defined_literals 200809L #define __FLT128_DECIMAL_DIG__ 36 #define __GCC_ATOMIC_LLONG_LOCK_FREE 2 #define __FLT32_HAS_QUIET_NAN__ 1 #define __FLT_DECIMAL_DIG__ 9 #define __UINT_FAST16_MAX__ 0xffffffffffffffffUL #define __LDBL_NORM_MAX__ 1.18973149535723176502126385303097021e+4932L #define __GCC_ATOMIC_SHORT_LOCK_FREE 2 #define __UINT_FAST8_TYPE__ unsigned char #define _GNU_SOURCE 1 #define __cpp_init_captures 201304L #define __ATOMIC_ACQ_REL 4 #define __ATOMIC_RELEASE 3 hardinfo2-hardinfo2-1331e88/deps/qgears2/qgears.cpp000066400000000000000000000025231474767047500220320ustar00rootroot00000000000000/* * hardinfo2 - System Information and Benchmark * Copyright (C) 2024 hardinfo2 project * License: GPL2+ * * Based on qgears2 by Zack Rusin (Public Domain) * Based on cairogears by David Reveman & Peter Nilsson (Public Domain) * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License v2.0 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "qgears.h" #include #include #include #include QGears::QGears() : QWidget() { //suprisingly flickers very badly //if (m_imageBased) //setAttribute(Qt::WA_PaintOnScreen); //setAttribute(Qt::WA_NoBackground); //setAttribute(Qt::WA_NoSystemBackground); setFixedSize(1024, 800); } void QGears::paintEvent(QPaintEvent *) { renderTo(this); QTimer::singleShot(0, this, SLOT(repaint())); } hardinfo2-hardinfo2-1331e88/deps/qgears2/qgears.h000066400000000000000000000022461474767047500215010ustar00rootroot00000000000000/* * hardinfo2 - System Information and Benchmark * Copyright (C) 2024 hardinfo2 project * License: GPL2+ * * Based on qgears2 by Zack Rusin (Public Domain) * Based on cairogears by David Reveman & Peter Nilsson (Public Domain) * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License v2.0 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef QGEARS_H #define QGEARS_H #include #include "commonrenderer.h" class QPaintEvent; class QPainter; class QGears : public QWidget, public CommonRenderer { Q_OBJECT public: QGears(); protected: virtual void paintEvent(QPaintEvent *e); private: }; #endif hardinfo2-hardinfo2-1331e88/deps/qgears2/qglgears.cpp000066400000000000000000000025671474767047500223650ustar00rootroot00000000000000/* * hardinfo2 - System Information and Benchmark * Copyright (C) 2024 hardinfo2 project * License: GPL2+ * * Based on qgears2 by Zack Rusin (Public Domain) * Based on cairogears by David Reveman & Peter Nilsson (Public Domain) * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License v2.0 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "qglgears.h" #include QGLGears::QGLGears() : QGLWidget(QGLFormat(QGL::SampleBuffers), 0) { QGLFormat newFormat; newFormat.setSampleBuffers(0); newFormat.setSwapInterval(0); QGLGears::setFormat(newFormat); setFixedSize(1024, 800); setMinimumSize(1024, 800); setMaximumSize(1024, 800); setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed); } void QGLGears::paintEvent(QPaintEvent *) { renderTo(this); QTimer::singleShot(0, this, SLOT(repaint())); } hardinfo2-hardinfo2-1331e88/deps/qgears2/qglgears.h000066400000000000000000000022541474767047500220230ustar00rootroot00000000000000/* * hardinfo2 - System Information and Benchmark * Copyright (C) 2024 hardinfo2 project * License: GPL2+ * * Based on qgears2 by Zack Rusin (Public Domain) * Based on cairogears by David Reveman & Peter Nilsson (Public Domain) * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License v2.0 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef QGLGEARS_H #define QGLGEARS_H #include #include "commonrenderer.h" class QPaintEvent; class QPainter; class QGLGears : public QGLWidget, public CommonRenderer { Q_OBJECT public: QGLGears(); protected: virtual void paintEvent(QPaintEvent *e); }; #endif hardinfo2-hardinfo2-1331e88/deps/sysobj_early/000077500000000000000000000000001474767047500212035ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/deps/sysobj_early/data/000077500000000000000000000000001474767047500221145ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/deps/sysobj_early/data/sort_vendors.pl000066400000000000000000000015621474767047500252040ustar00rootroot00000000000000#!/usr/bin/perl # Usage: # sort_vendors.pl # Output goes to stdout. use utf8; use strict; #use File::Slurp::Unicode qw(read_file); sub read_file { my $file = shift; return do { local $/ = undef; open my $fh, "<", $file || die "Could not open $file: $!"; <$fh>; }; } my $file = shift; die "Invalid file: $file" unless (-f $file && -r $file); my $raw = read_file($file); $raw =~ s/^\n*|\n*$//g; my $c = 0; my @coms = (); my %vendors = (); SEC: foreach my $s (split(/\n{2,}/, $raw)) { my @lines = split(/\n/, $s); foreach my $l (@lines) { if ($l =~ /^name\s+(.*)/) { $vendors{"$1_$c"} = $s; $c++; next SEC; } } push @coms, $s; } foreach (@coms) { print "$_\n\n"; } foreach (sort { lc $a cmp lc $b } keys %vendors) { print "$vendors{$_}\n\n"; } hardinfo2-hardinfo2-1331e88/deps/sysobj_early/gui/000077500000000000000000000000001474767047500217675ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/deps/sysobj_early/gui/uri_handler.c000066400000000000000000000030511474767047500244260ustar00rootroot00000000000000/* * sysobj - https://github.com/bp0/verbose-spork * Copyright (C) 2018 Burt P. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include "uri_handler.h" //compatibility #ifndef G_SPAWN_DEFAULT #define G_SPAWN_DEFAULT 0 #endif static uri_handler uri_func = NULL; void uri_set_function(uri_handler f) { uri_func = f; } gboolean uri_open(const gchar *uri) { gboolean ret = FALSE; if (uri_func) ret = uri_func(uri); if (ret) return TRUE; return uri_open_default(uri); } gboolean uri_open_default(const gchar *uri) { gchar *argv[] = { "/usr/bin/xdg-open", (gchar*)uri, NULL }; GError *err = NULL; g_spawn_async(NULL, argv, NULL, G_SPAWN_DEFAULT, NULL, NULL, NULL, &err ); if (err) { fprintf(stderr, "Error opening URI %s: %s\n", uri, err->message); g_error_free(err); } return TRUE; } hardinfo2-hardinfo2-1331e88/deps/sysobj_early/gui/uri_handler.h000066400000000000000000000021101474767047500244260ustar00rootroot00000000000000/* * sysobj - https://github.com/bp0/verbose-spork * Copyright (C) 2018 Burt P. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef URI_HANDLER_H #define URI_HANDLER_H #include typedef gboolean (*uri_handler)(const gchar *uri); void uri_set_function(uri_handler f); gboolean uri_open(const gchar *uri); gboolean uri_open_default(const gchar *uri); /* uses xdg-open */ #endif hardinfo2-hardinfo2-1331e88/deps/sysobj_early/include/000077500000000000000000000000001474767047500226265ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/deps/sysobj_early/include/appf.h000066400000000000000000000030331474767047500237240ustar00rootroot00000000000000/* * sysobj - https://github.com/bp0/verbose-spork * Copyright (C) 2018 Burt P. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef _APPF_H_ #define _APPF_H_ /* Appends a formatted element to a string, adding an optional * separator string if the string is not empty. * The string is created if str is null. * ex: ret = appf(ret, "; ", "%s = %d", name, value); */ char *appf(char *str, const char *sep, const char *fmt, ...) __attribute__ ((format (printf, 3, 4))); /* Same as above except that str is untouched. * ex: ret = appf(keeper, "; ", "%s = %d", name, value); */ char *appfdup(const char *str, const char *sep, const char *fmt, ...) __attribute__ ((format (printf, 3, 4))); /* for convenience */ #define appfsp(str, fmt, ...) appf(str, " ", fmt, __VA_ARGS__) #define appfnl(str, fmt, ...) appf(str, "\n", fmt, __VA_ARGS__) #endif hardinfo2-hardinfo2-1331e88/deps/sysobj_early/include/auto_free.h000066400000000000000000000047131474767047500247550ustar00rootroot00000000000000/* * sysobj - https://github.com/bp0/verbose-spork * Copyright (C) 2018 Burt P. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef _AUTO_FREE_H_ #define _AUTO_FREE_H_ #include /* DEBUG_AUTO_FREE messages level: * 0 - none * 1 - some * 2 - much */ #ifndef DEBUG_AUTO_FREE #define DEBUG_AUTO_FREE 0 #endif /* the period between free_auto_free()s in the main loop */ #define AF_SECONDS 11 /* the minimum time between auto_free(p) and free(p) */ #define AF_DELAY_SECONDS 10 #define AF_USE_SYSOBJ 0 #if (DEBUG_AUTO_FREE > 0) #define auto_free(p) auto_free_ex_(p, (GDestroyNotify)g_free, __FILE__, __LINE__, __FUNCTION__) #define auto_free_ex(p, f) auto_free_ex_(p, f, __FILE__, __LINE__, __FUNCTION__) #define auto_free_on_exit(p) auto_free_on_exit_ex_(p, (GDestroyNotify)g_free, __FILE__, __LINE__, __FUNCTION__) #define auto_free_on_exit_ex(p, f) auto_free_on_exit_ex_(p, f, __FILE__, __LINE__, __FUNCTION__) #else #define auto_free(p) auto_free_ex_(p, (GDestroyNotify)g_free, NULL, 0, NULL) #define auto_free_ex(p, f) auto_free_ex_(p, f, NULL, 0, NULL) #define auto_free_on_exit(p) auto_free_on_exit_ex_(p, (GDestroyNotify)g_free, NULL, 0, NULL) #define auto_free_on_exit_ex(p, f) auto_free_on_exit_ex_(p, f, NULL, 0, NULL) #endif gpointer auto_free_ex_(gpointer p, GDestroyNotify f, const char *file, int line, const char *func); gpointer auto_free_on_exit_ex_(gpointer p, GDestroyNotify f, const char *file, int line, const char *func); /* free all the auto_free marked items in the * current thread with age > AF_DELAY_SECONDS */ void free_auto_free(); /* call at thread termination: * free all the auto_free marked items in the * current thread regardless of age */ void free_auto_free_thread_final(); /* call at program termination */ void free_auto_free_final(); #endif hardinfo2-hardinfo2-1331e88/deps/sysobj_early/include/cpubits.h000066400000000000000000000026361474767047500244570ustar00rootroot00000000000000/* * rpiz - https://github.com/bp0/rpiz * Copyright (C) 2017 Burt P. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef _CPUBITS_H_ #define _CPUBITS_H_ #include typedef uint32_t cpubits; uint32_t cpubits_count(cpubits *b); int cpubits_min(cpubits *b); int cpubits_max(cpubits *b); int cpubits_next(cpubits *b, int start, int end); cpubits *cpubits_from_str(char *str); char *cpubits_to_str(cpubits *bits, char *str, int max_len); #define CPUBITS_SIZE 4096 /* bytes, multiple of sizeof(uint32_t) */ #define CPUBIT_SET(BITS, BIT) ((BITS)[(BIT)/32] |= (1 << (BIT)%32)) #define CPUBIT_GET(BITS, BIT) (((BITS)[(BIT)/32] & (1 << (BIT)%32)) >> (BIT)%32) #define CPUBITS_CLEAR(BITS) memset((BITS), 0, CPUBITS_SIZE) #endif hardinfo2-hardinfo2-1331e88/deps/sysobj_early/include/format_early.h000066400000000000000000000033231474767047500254640ustar00rootroot00000000000000/* * sysobj - https://github.com/bp0/verbose-spork * Copyright (C) 2018 Burt P. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef _FORMAT_EARLY_H_ #define _FORMAT_EARLY_H_ #include #include #include "appf.h" #include "util_sysobj.h" #include "vendor.h" enum { FMT_OPT_NONE = 0, FMT_OPT_ATERM = 1<<16, /* ANSI color terminal */ FMT_OPT_PANGO = 1<<17, /* pango markup for gtk */ FMT_OPT_HTML = 1<<18, /* html */ }; gchar *safe_ansi_color(gchar *ansi_color, gboolean free_in); /* verify the ansi color */ const gchar *color_lookup(int ansi_color); /* ansi_color to html color */ /* wrap the input str with color based on fmt_opts (none,term,html,pango) */ gchar *format_with_ansi_color(const gchar *str, const gchar *ansi_color, int fmt_opts); void tag_vendor(gchar **str, guint offset, const gchar *vendor_str, const char *ansi_color, int fmt_opts); gchar *vendor_match_tag(const gchar *vendor_str, int fmt_opts); gchar *vendor_list_ribbon(const vendor_list vl_in, int fmt_opts); #endif hardinfo2-hardinfo2-1331e88/deps/sysobj_early/include/gg_slist.h000066400000000000000000000020731474767047500246140ustar00rootroot00000000000000/* * sysobj - https://github.com/bp0/verbose-spork * Copyright (C) 2018 Burt P. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef _GG_SLIST_H_ #define _GG_SLIST_H_ #include GSList *gg_slist_remove_null(GSList *sl); GSList *gg_slist_remove_duplicates(GSList *sl); /* by pointer */ GSList *gg_slist_remove_duplicates_custom(GSList *sl, GCompareFunc func); #endif hardinfo2-hardinfo2-1331e88/deps/sysobj_early/include/nice_name.h000066400000000000000000000023241474767047500247160ustar00rootroot00000000000000/* * sysobj - https://github.com/bp0/verbose-spork * Copyright (C) 2018 Burt P. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef _NICE_NAME_H_ #define _NICE_NAME_H_ /* cleaned in-place */ void nice_name_x86_cpuid_model_string(char *cpuid_model_string); /* Intel Graphics may have very long names, * like "Intel Corporation Seventh Generation Something Core Something Something Integrated Graphics Processor Revision Ninety-four" * cleaned in-place */ void nice_name_intel_gpu_device(char *pci_ids_device_string); #endif hardinfo2-hardinfo2-1331e88/deps/sysobj_early/include/strstr_word.h000066400000000000000000000027241474767047500254000ustar00rootroot00000000000000/* * sysobj - https://github.com/bp0/verbose-spork * Copyright (C) 2018 Burt P. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __STRSTR_WORD_H__ #define __STRSTR_WORD_H__ /* versions of strstr() and strcasestr() where the match must be preceded and * succeded by a non-alpha-numeric character. */ char *strstr_word(const char *haystack, const char *needle); char *strcasestr_word(const char *haystack, const char *needle); /* word boundary at start only (prefix), or end only (suffix) */ char *strstr_word_prefix(const char *haystack, const char *needle); char *strcasestr_word_prefix(const char *haystack, const char *needle); char *strstr_word_suffix(const char *haystack, const char *needle); char *strcasestr_word_suffix(const char *haystack, const char *needle); #endif hardinfo2-hardinfo2-1331e88/deps/sysobj_early/include/util_edid.h000066400000000000000000000140401474767047500247400ustar00rootroot00000000000000/* * sysobj - https://github.com/bp0/verbose-spork * Copyright (C) 2018 Burt P. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __UTIL_EDID_H__ #define __UTIL_EDID_H__ #define _GNU_SOURCE #include /* for *int*_t types */ #include typedef struct _edid edid; typedef struct { edid *e; uint32_t offset; } edid_addy; /* OUI is stored in EDID as 24-bit little-endian, * but lookup file from IEEE expects big-endian. * .oui_str is .oui rendered into big-endian for * easy lookup. */ typedef struct { union { char pnp[7]; /* only needs 3+null */ char oui_str[7]; /* needs 6+null */ }; uint32_t oui; uint8_t type; /* enum VEN_TYPE_* */ } edid_ven; typedef struct { char *str; uint16_t len; uint8_t is_product_name; uint8_t is_serial; } DisplayIDString; typedef struct { uint8_t version; uint8_t extension_length; uint8_t primary_use_case; uint8_t extension_count; uint16_t blocks; uint8_t checksum_ok; } DisplayIDMeta; typedef struct { edid_addy addy; union { uint8_t tag; uint8_t type; }; uint8_t revision; uint8_t len; uint8_t bounds_ok; /* for vendor specific block */ edid_ven ven; } DisplayIDBlock; typedef struct { edid_addy addy; uint8_t interface; uint8_t supports_hdcp; uint8_t exists; } DIExtData; /* order by rising priority */ enum { OUTSRC_INVALID = -1, OUTSRC_EDID = 0, OUTSRC_ETB, OUTSRC_STD, OUTSRC_DTD, OUTSRC_CEA_DTD, OUTSRC_SVD, OUTSRC_DID_TYPE_I, OUTSRC_DID_TYPE_VI, OUTSRC_DID_TYPE_VII, }; typedef struct { float horiz_cm, vert_cm; float diag_cm, diag_in; int horiz_blanking, vert_blanking; int horiz_pixels, vert_lines, vert_pixels; float vert_freq_hz; uint8_t is_interlaced; uint8_t is_preferred; int stereo_mode; uint64_t pixel_clock_khz; int src; /* enum OUTSRC_* */ uint64_t pixels; /* h*v: easier to compare */ char class_inch[12]; } edid_output; struct edid_std { uint8_t *ptr; edid_output out; }; struct edid_dtd { edid_addy addy; uint8_t cea_ext; /* in a CEA block vs one of the regular EDID descriptors */ edid_output out; uint8_t bounds_ok; }; struct edid_svd { uint8_t v; uint8_t is_native; edid_output out; }; struct edid_sad { uint8_t v[3]; uint8_t format, channels, freq_bits; int depth_bits; /* format 1 */ int max_kbps; /* formats 2-8 */ }; struct edid_cea_block { edid_addy addy; int type, len; uint8_t bounds_ok; /* for vendor specific block */ edid_ven ven; }; struct edid_descriptor { edid_addy addy; uint8_t type; char text[14]; }; struct edid_manf_date { uint8_t week; uint8_t is_model_year; /* ignore week */ uint16_t year; int std; /* enum STD_* */ }; enum { VEN_TYPE_INVALID = 0, VEN_TYPE_PNP, VEN_TYPE_OUI, }; enum { STD_EDID = 0, STD_EEDID = 1, STD_EIACEA861 = 2, STD_DISPLAYID = 3, STD_DISPLAYID20 = 4, }; typedef struct _edid { union { void* data; uint8_t* u8; uint16_t* u16; }; unsigned int len; /* enum STD_* */ int std; uint8_t ver_major, ver_minor; uint8_t checksum_ok; /* first 128-byte block only */ uint8_t ext_blocks, ext_blocks_ok, ext_blocks_fail; uint8_t *ext_ok; int etb_count; edid_output etbs[24]; int std_count; struct edid_std stds[8]; int dtd_count; struct edid_dtd *dtds; int cea_block_count; struct edid_cea_block *cea_blocks; int svd_count; struct edid_svd *svds; int sad_count; struct edid_sad *sads; edid_ven ven; struct edid_descriptor d[4]; /* point into d[].text */ char *name; char *serial; char *ut1; char *ut2; uint8_t a_or_d; /* 0 = analog, 1 = digital */ uint8_t interface; /* digital interface */ uint8_t bpc; /* digital bpc */ uint16_t product; uint32_t n_serial; struct edid_manf_date dom; edid_output img; edid_output img_svd; edid_output img_max; uint32_t speaker_alloc_bits; DIExtData di; DisplayIDMeta did; int did_block_count; DisplayIDBlock *did_blocks; int did_string_count; DisplayIDString *did_strings; int didt_count; edid_output *didts; GString *msg_log; } edid; edid *edid_new(const char *data, unsigned int len); edid *edid_new_from_hex(const char *hex_string); edid *edid_new_from_file(const char *path); void edid_free(edid *e); char *edid_dump_hex(edid *e, int tabs, int breaks); const char *edid_standard(int std); const char *edid_output_src(int src); const char *edid_interface(int type); const char *edid_di_interface(int type); const char *edid_descriptor_type(int type); const char *edid_ext_block_type(int type); const char *edid_cea_block_type(int type); const char *edid_cea_audio_type(int type); char *edid_output_describe(edid_output *out); char *edid_base_descriptor_describe(struct edid_descriptor *d); char *edid_dtd_describe(struct edid_dtd *dtd, int dump_bytes); char *edid_cea_block_describe(struct edid_cea_block *blk); char *edid_cea_audio_describe(struct edid_sad *sad); char *edid_cea_speaker_allocation_describe(int bitfield, int short_version); const char *edid_did_block_type(int type); char *edid_did_block_describe(DisplayIDBlock *blk); char *edid_dump2(edid *e); #endif hardinfo2-hardinfo2-1331e88/deps/sysobj_early/include/util_ids.h000066400000000000000000000051321474767047500246140ustar00rootroot00000000000000/* * sysobj - https://github.com/bp0/verbose-spork * Copyright (C) 2018 Burt P. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef _UTIL_IDS_H_ #define _UTIL_IDS_H_ #include #define IDS_LOOKUP_BUFF_SIZE 220 #define IDS_LOOKUP_MAX_DEPTH 4 /* may be static, all results[] are NULL or point into _strs */ typedef struct { gchar *results[IDS_LOOKUP_MAX_DEPTH+1]; /* last always NULL */ gchar _strs[IDS_LOOKUP_BUFF_SIZE*IDS_LOOKUP_MAX_DEPTH]; } ids_query_result; #define ids_query_result_new() g_new0(ids_query_result, 1) #define ids_query_result_free(s) g_free(s); void ids_query_result_cpy(ids_query_result *dest, ids_query_result *src); /* Given a qpath "/X/Y/Z", find names as: * X ->result[0] * \tY ->result[1] * \t\tZ ->result[2] * * Works with: * - pci.ids "// " or "C //" * ... need to query "" separately * - arm.ids "/" * - sdio.ids "/", "C " * - sdcard.ids "OEMID ", "MANFID " * - usb.ids "/", "C " etc. * - edid.ids "<3letter_vendor>" */ long scan_ids_file(const gchar *file, const gchar *qpath, ids_query_result *result, long start_offset); typedef struct { gchar *qpath; ids_query_result result; } ids_query; ids_query *ids_query_new(const gchar *qpath); void ids_query_free(ids_query *s); typedef GSList* ids_query_list; /* query_list is a GSList of ids_query* */ long scan_ids_file_list(const gchar *file, ids_query_list query_list, long start_offset); /* after scan_ids_file_list(), count hits */ int query_list_count_found(ids_query_list query_list); /* returns GSList of ids_query* */ typedef gchar* (*split_loc_function)(const char *line); ids_query_list ids_file_all_get_all(const gchar *file, split_loc_function split_loc_func); /* debugging */ void ids_trace_start(); void ids_trace_stop(); #endif hardinfo2-hardinfo2-1331e88/deps/sysobj_early/include/util_sysobj.h000066400000000000000000000045731474767047500253560ustar00rootroot00000000000000/* * sysobj - https://github.com/bp0/verbose-spork * Copyright (C) 2018 Burt P. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef _UTIL_SYSOBJ_H_ #define _UTIL_SYSOBJ_H_ #include #include "appf.h" /* string eq */ #define SEQ(s1, s2) (g_strcmp0((s1), (s2)) == 0) /* handy for static halp */ #define BULLET "\u2022" #define REFLINK(URI) "" URI "" #define REFLINKT(TEXT, URI) "" TEXT "" gboolean util_have_root(); void util_null_trailing_slash(gchar *str); /* in-place */ void util_compress_space(gchar *str); /* in-place, multiple whitespace replaced by one space */ void util_strstrip_double_quotes_dumb(gchar *str); /* in-place, strips any double-quotes from the start and end of str */ gchar *util_build_fn(const gchar *base, const gchar *name); /* returns "[/]" */ gchar *util_canonicalize_path(const gchar *path); /* resolve . and .., but not symlinks */ gchar *util_normalize_path(const gchar *path, const gchar *relto); /* resolve . and .., and symlinks */ gsize util_count_lines(const gchar *str); /* doesn't count empty last line */ gchar *util_escape_markup(gchar *v, gboolean replacing); int util_get_did(gchar *str, const gchar *lbl); /* ("cpu6", "cpu") -> 6, returns -1 if error */ int util_maybe_num(gchar *str); /* returns the guessed base, 0 for not num */ gchar *util_find_line_value(gchar *data, gchar *key, gchar delim); gchar *util_strchomp_float(gchar* str_float); /* in-place, must use , or . for decimal sep */ gchar *util_safe_name(const gchar *name, gboolean lower_case); /* make a string into a name nice and safe for file name */ /* to quiet -Wunused-parameter nagging. */ #define PARAM_NOT_UNUSED(p) (void)p #endif hardinfo2-hardinfo2-1331e88/deps/sysobj_early/src/000077500000000000000000000000001474767047500217725ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/deps/sysobj_early/src/appf.c000066400000000000000000000037421474767047500230720ustar00rootroot00000000000000/* * sysobj - https://github.com/bp0/verbose-spork * Copyright (C) 2018 Burt P. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #define _GNU_SOURCE /* for vasprintf() */ #include #include #include #include #include "appf.h" char *appf(char *str, const char *sep, const char *fmt, ...) { char *buf = NULL; int inlen, seplen, len; va_list args; va_start(args, fmt); len = vasprintf(&buf, fmt, args); va_end(args); if (len < 0) return str; if (!str) return buf; inlen = strlen(str); seplen = (inlen && sep) ? strlen(sep) : 0; str = realloc(str, inlen + seplen + len + 1); if (seplen) strcpy(str + inlen, sep); strcpy(str + inlen + seplen, buf); free(buf); return str; } char *appfdup(const char *str, const char *sep, const char *fmt, ...) { char *buf = NULL, *ret = NULL; int inlen, seplen, len; va_list args; va_start(args, fmt); len = vasprintf(&buf, fmt, args); va_end(args); if (len < 0) return NULL; if (!str) return buf; inlen = strlen(str); seplen = (inlen && sep) ? strlen(sep) : 0; ret = malloc(inlen + seplen + len + 1); strcpy(ret, str); if (seplen) strcpy(ret + inlen, sep); strcpy(ret + inlen + seplen, buf); free(buf); return ret; } hardinfo2-hardinfo2-1331e88/deps/sysobj_early/src/auto_free.c000066400000000000000000000153331474767047500241140ustar00rootroot00000000000000/* * sysobj - https://github.com/bp0/verbose-spork * Copyright (C) 2018 Burt P. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include "auto_free.h" #if (AF_USE_SYSOBJ) #include "sysobj.h" #else #include #define sysobj_elapsed() af_elapsed() #define sysobj_stats af_stats static struct { double auto_free_next; unsigned long long auto_freed, auto_free_len; } af_stats; #endif //Compatibility #ifndef G_SOURCE_REMOVE #define G_SOURCE_REMOVE FALSE #endif #ifndef G_SOURCE_CONTINUE #define G_SOURCE_CONTINUE TRUE #endif static GMutex *free_lock = NULL; static GSList *free_list = NULL; static gboolean free_final = FALSE; static GTimer *auto_free_timer = NULL; static guint free_event_source = 0; #define af_elapsed() (auto_free_timer ? g_timer_elapsed(auto_free_timer, NULL) : 0) #define auto_free_msg(msg, ...) fprintf (stderr, "[%s] " msg "\n", __FUNCTION__, ##__VA_ARGS__) /**/ typedef struct { gpointer ptr; GThread *thread; GDestroyNotify f_free; double stamp; const char *file; int line; const char *func; } auto_free_item; gboolean free_auto_free_sf(gpointer trash) { (void)trash; if (free_final) { free_event_source = 0; return G_SOURCE_REMOVE; } free_auto_free(); sysobj_stats.auto_free_next = sysobj_elapsed() + AF_SECONDS; return G_SOURCE_CONTINUE; } gpointer auto_free_ex_(gpointer p, GDestroyNotify f, const char *file, int line, const char *func) { if (!p) return p; /* an auto_free() after free_auto_free_final()? * Changed mind, I guess, just go with it. */ if (free_final) free_final = FALSE; if (!auto_free_timer) { auto_free_timer = g_timer_new(); g_timer_start(auto_free_timer); } if (!free_event_source) { /* if there is a main loop, then this will call * free_auto_free() in idle time every AF_SECONDS seconds. * If there is no main loop, then free_auto_free() * will be called at sysobj_cleanup() and when exiting * threads, as in sysobj_foreach(). */ free_event_source = g_timeout_add_seconds(AF_SECONDS, (GSourceFunc)free_auto_free_sf, NULL); sysobj_stats.auto_free_next = sysobj_elapsed() + AF_SECONDS; } auto_free_item *z = g_new0(auto_free_item, 1); z->ptr = p; z->f_free = f; z->thread = g_thread_self(); z->file = file; z->line = line; z->func = func; z->stamp = af_elapsed(); #if GLIB_CHECK_VERSION(2,32,0) if(free_lock==NULL) {free_lock=g_new(GMutex,1);g_mutex_init(free_lock);} #else if(free_lock==NULL) free_lock=g_mutex_new(); #endif g_mutex_lock(free_lock); free_list = g_slist_prepend(free_list, z); sysobj_stats.auto_free_len++; g_mutex_unlock(free_lock); return p; } gpointer auto_free_on_exit_ex_(gpointer p, GDestroyNotify f, const char *file, int line, const char *func) { if (!p) return p; auto_free_item *z = g_new0(auto_free_item, 1); z->ptr = p; z->f_free = f; z->thread = g_thread_self(); z->file = file; z->line = line; z->func = func; z->stamp = -1.0; #if GLIB_CHECK_VERSION(2,32,0) if(free_lock==NULL) g_mutex_init(free_lock); #else if(free_lock==NULL) free_lock=g_mutex_new(); #endif g_mutex_lock(free_lock); free_list = g_slist_prepend(free_list, z); sysobj_stats.auto_free_len++; g_mutex_unlock(free_lock); return p; } static struct { GDestroyNotify fptr; char *name; } free_function_tab[] = { { (GDestroyNotify) g_free, "g_free" }, #if (AF_USE_SYSOBJ) { (GDestroyNotify) sysobj_free, "sysobj_free" }, { (GDestroyNotify) class_free, "class_free" }, { (GDestroyNotify) sysobj_filter_free, "sysobj_filter_free" }, { (GDestroyNotify) sysobj_virt_free, "sysobj_virt_free" }, #endif { NULL, "(null)" }, }; static void free_auto_free_ex(gboolean thread_final) { GThread *this_thread = g_thread_self(); GSList *l = NULL, *n = NULL; long long unsigned fc = 0; double now = af_elapsed(); if (!free_list) return; #if GLIB_CHECK_VERSION(2,32,0) if(free_lock==NULL) {free_lock=g_new(GMutex,1);g_mutex_init(free_lock);} #else if(free_lock==NULL) free_lock=g_mutex_new(); #endif g_mutex_lock(free_lock); if (DEBUG_AUTO_FREE) auto_free_msg("%llu total items in queue, but will free from thread %p only... ", sysobj_stats.auto_free_len, this_thread); for(l = free_list; l; l = n) { auto_free_item *z = (auto_free_item*)l->data; n = l->next; if (!free_final && z->stamp < 0) continue; double age = now - z->stamp; if (free_final || (z->thread == this_thread && (thread_final || age > AF_DELAY_SECONDS) ) ) { if (DEBUG_AUTO_FREE == 2) { char fptr[128] = "", *fname=NULL; for(int i = 0; i < (int)G_N_ELEMENTS(free_function_tab); i++) if (z->f_free == free_function_tab[i].fptr) fname = free_function_tab[i].name; if (!fname) { //FIXME - This must an error when debugging //FIXME snprintf(fname, 127, "%p", z->f_free); fname = fptr; } if (z->file || z->func) auto_free_msg("free: %s(%p) age:%lfs from %s:%d %s()", fname, z->ptr, age, z->file, z->line, z->func); else auto_free_msg("free: %s(%p) age:%lfs", fname, z->ptr, age); } z->f_free(z->ptr); g_free(z); free_list = g_slist_delete_link(free_list, l); fc++; } } if (DEBUG_AUTO_FREE) auto_free_msg("... freed %llu (from thread %p)", fc, this_thread); sysobj_stats.auto_freed += fc; sysobj_stats.auto_free_len -= fc; g_mutex_unlock(free_lock); } void free_auto_free_thread_final() { free_auto_free_ex(TRUE); } void free_auto_free_final() { free_final = TRUE; free_auto_free_ex(TRUE); if (auto_free_timer) g_timer_destroy(auto_free_timer); auto_free_timer = NULL; } void free_auto_free() { free_auto_free_ex(FALSE); } hardinfo2-hardinfo2-1331e88/deps/sysobj_early/src/cpubits.c000066400000000000000000000070321474767047500236110ustar00rootroot00000000000000/* * rpiz - https://github.com/bp0/rpiz * Copyright (C) 2017 Burt P. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #define _GNU_SOURCE #include #include #include #include "cpubits.h" uint32_t cpubits_count(cpubits *b) { static const uint32_t max = CPUBITS_SIZE * 8; uint32_t count = 0, i = 0; while (i < max) { count += CPUBIT_GET(b, i); i++; } return count; } int cpubits_min(cpubits *b) { int i = 0; while (i < CPUBITS_SIZE * 8) { if (CPUBIT_GET(b, i)) return i; i++; } return -1; } int cpubits_max(cpubits *b) { int i = CPUBITS_SIZE * 8 - 1; while (i >= 0) { if (CPUBIT_GET(b, i)) return i; i--; } return i; } int cpubits_next(cpubits *b, int start, int end) { start++; /* not including the start bit */ if (start >= 0) { int i = start; if (end == -1) end = CPUBITS_SIZE * 8; while (i < end) { if (CPUBIT_GET(b, i)) return i; i++; } } return -1; } cpubits *cpubits_from_str(char *str) { char *v, *nv, *hy; int r0, r1; cpubits *newbits = malloc(CPUBITS_SIZE); if (newbits) { memset(newbits, 0, CPUBITS_SIZE); if (str != NULL) { v = (char*)str; while ( *v != 0 ) { nv = strchr(v, ','); /* strchrnul() */ if (nv == NULL) nv = strchr(v, 0); /* equivalent */ hy = strchr(v, '-'); if (hy && hy < nv) { r0 = strtol(v, NULL, 0); r1 = strtol(hy + 1, NULL, 0); } else { r0 = r1 = strtol(v, NULL, 0); } for (; r0 <= r1; r0++) { CPUBIT_SET(newbits, r0); } v = (*nv == ',') ? nv + 1 : nv; } } } return newbits; } char *cpubits_to_str(cpubits *bits, char *str, int max_len) { static const uint32_t max = CPUBITS_SIZE * 8; uint32_t i = 1, seq_start = 0, seq_last = 0, seq = 0, l = 0; char buffer[65536] = ""; if (CPUBIT_GET(bits, 0)) { seq = 1; strcpy(buffer, "0"); } while (i < max) { if (CPUBIT_GET(bits, i) ) { seq_last = i; if (!seq) { seq = 1; seq_start = i; l = strlen(buffer); sprintf(buffer + l, "%s%d", l ? "," : "", i); } } else { if (seq && seq_last != seq_start) { l = strlen(buffer); sprintf(buffer + l, "-%d", seq_last); } seq = 0; } i++; } if (str == NULL) return strdup(buffer); else { strncpy(str, buffer, max_len); return str; } } hardinfo2-hardinfo2-1331e88/deps/sysobj_early/src/format_early.c000066400000000000000000000137231474767047500246300ustar00rootroot00000000000000/* * sysobj - https://github.com/bp0/verbose-spork * Copyright (C) 2018 Burt P. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include "format_early.h" #include #include #define ANSI_COLOR_RESET "\x1b[0m" const gchar *color_lookup(int ansi_color) { static struct { int ansi; const gchar *html; } tab[] = { { 30, "#010101" }, { 31, "#de382b" }, { 32, "#39b54a" }, { 33, "#ffc706" }, { 34, "#006fb8" }, { 35, "#762671" }, { 36, "#2cb5e9" }, { 37, "#cccccc" }, { 90, "#808080" }, { 91, "#ff0000" }, { 92, "#00ff00" }, { 93, "#ffff00" }, { 94, "#0000ff" }, { 95, "#ff00ff" }, { 96, "#00ffff" }, { 97, "#ffffff" }, { 40, "#010101" }, { 41, "#de382b" }, { 42, "#39b54a" }, { 43, "#ffc706" }, { 44, "#006fb8" }, { 45, "#762671" }, { 46, "#2cb5e9" }, { 47, "#cccccc" }, { 100, "#808080" }, { 101, "#ff0000" }, { 102, "#00ff00" }, { 103, "#ffff00" }, { 104, "#0000ff" }, { 105, "#ff00ff" }, { 106, "#00ffff" }, { 107, "#ffffff" }, }; for (int i = 0; i<(int)G_N_ELEMENTS(tab); i++) if (tab[i].ansi == ansi_color) return tab[i].html; return NULL; } gchar *safe_ansi_color(gchar *ansi_color, gboolean free_in) { if (!ansi_color) return NULL; gchar *ret = NULL; gchar **codes = g_strsplit(ansi_color, ";", -1); if (free_in) g_free(ansi_color); int len = g_strv_length(codes); for(int i = 0; i < len; i++) { int c = atoi(codes[i]); if (c == 0 || c == 1 || ( c >= 30 && c <= 37) || ( c >= 40 && c <= 47) || ( c >= 90 && c <= 97) || ( c >= 100 && c <= 107) ) { ret = appf(ret, ";", "%s", codes[i]); } } g_strfreev(codes); return ret; } gchar *format_with_ansi_color(const gchar *str, const gchar *ansi_color, int fmt_opts) { gchar *ret = NULL; gchar *safe_color = g_strdup(ansi_color); util_strstrip_double_quotes_dumb(safe_color); if (fmt_opts & FMT_OPT_ATERM) { safe_color = safe_ansi_color(safe_color, TRUE); ret = g_strdup_printf("\x1b[%sm%s" ANSI_COLOR_RESET, safe_color, str); goto format_with_ansi_color_end; } if (fmt_opts & FMT_OPT_PANGO || fmt_opts & FMT_OPT_HTML) { int fgc = 37, bgc = 40; gchar **codes = g_strsplit(safe_color, ";", -1); int len = g_strv_length(codes); for(int i = 0; i < len; i++) { int c = atoi(codes[i]); if ( (c >= 30 && c <= 37) || ( c >= 90 && c <= 97 ) ) { fgc = c; } if ( (c >= 40 && c <= 47) || ( c >= 100 && c <= 107) ) { bgc = c; } } g_strfreev(codes); const gchar *html_color_fg = color_lookup(fgc); const gchar *html_color_bg = color_lookup(bgc); if (fmt_opts & FMT_OPT_PANGO) ret = g_strdup_printf(" %s ", html_color_bg, html_color_fg, str); else if (fmt_opts & FMT_OPT_HTML) ret = g_strdup_printf(" %s ", html_color_bg, html_color_fg, str); } format_with_ansi_color_end: g_free(safe_color); if (!ret) ret = g_strdup(str); return ret; } void tag_vendor(gchar **str, guint offset, const gchar *vendor_str, const char *ansi_color, int fmt_opts) { if (!str || !*str) return; if (!vendor_str || !ansi_color) return; gchar *work = *str, *new = NULL; if (g_str_has_prefix(work + offset, vendor_str) || strncasecmp(work + offset, vendor_str, strlen(vendor_str)) == 0) { gchar *cvs = format_with_ansi_color(vendor_str, ansi_color, fmt_opts); *(work+offset) = 0; new = g_strdup_printf("%s%s%s", work, cvs, work + offset + strlen(vendor_str) ); g_free(work); *str = new; g_free(cvs); } } gchar *vendor_match_tag(const gchar *vendor_str, int fmt_opts) { const Vendor *v = vendor_match(vendor_str, NULL); if (v) { gchar *ven_tag = v->name_short ? g_strdup(v->name_short) : g_strdup(v->name); tag_vendor(&ven_tag, 0, ven_tag, v->ansi_color, fmt_opts); return ven_tag; } return NULL; } gchar *vendor_list_ribbon(const vendor_list vl_in, int fmt_opts) { gchar *ret = NULL; vendor_list vl = g_slist_copy(vl_in); /* shallow is fine */ vl = vendor_list_remove_duplicates(vl); if (vl) { GSList *l = vl, *n = l ? l->next : NULL; /* replace each vendor with the vendor tag */ for(; l; l = n) { n = l->next; const Vendor *v = l->data; if (!v) { vl = g_slist_delete_link(vl, l); continue; } gchar *ven_tag = v->name_short ? g_strdup(v->name_short) : g_strdup(v->name); if(ven_tag) { tag_vendor(&ven_tag, 0, ven_tag, v->ansi_color, fmt_opts); l->data = ven_tag; } } /* vl is now a regular GSList of formatted vendor tag strings */ vl = gg_slist_remove_duplicates_custom(vl, (GCompareFunc)g_strcmp0); for(l = vl; l; l = l->next) ret = appfsp(ret, "%s", (gchar*)l->data); } g_slist_free_full(vl, g_free); return ret; } hardinfo2-hardinfo2-1331e88/deps/sysobj_early/src/gg_slist.c000066400000000000000000000031021474767047500237450ustar00rootroot00000000000000/* * sysobj - https://github.com/bp0/verbose-spork * Copyright (C) 2018 Burt P. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include GSList *gg_slist_remove_duplicates(GSList *sl) { for (GSList *l = sl; l; l = l->next) { GSList *d = NULL; while(d = g_slist_find(l->next, l->data) ) sl = g_slist_delete_link(sl, d); } return sl; } GSList *gg_slist_remove_duplicates_custom(GSList *sl, GCompareFunc func) { for (GSList *l = sl; l; l = l->next) { GSList *d = NULL; while(d = g_slist_find_custom(l->next, l->data, func) ) sl = g_slist_delete_link(sl, d); } return sl; } GSList *gg_slist_remove_null(GSList *sl) { GSList *n = sl ? sl->next : NULL; for (GSList *l = sl; l; l = n) { n = l->next; if (l->data == NULL) sl = g_slist_delete_link(sl, l); } return sl; } hardinfo2-hardinfo2-1331e88/deps/sysobj_early/src/nice_name.c000066400000000000000000000177321474767047500240660ustar00rootroot00000000000000/* * sysobj - https://github.com/bp0/verbose-spork * Copyright (C) 2018 Burt P. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #define _GNU_SOURCE #include #include #include "nice_name.h" #include "util_sysobj.h" /* export */ /* replaces the extra chars with spaces, then when done with a series of * str_shorten()s, use util_compress_space() to squeeze. */ gboolean str_shorten(gchar *str, const gchar *find, const gchar *replace) { if (!str || !find || !replace) return FALSE; long unsigned lf = strlen(find); long unsigned lr = strlen(replace); gchar *p = strstr(str, find); if (p) { if(lr==lf){ memcpy(p, replace, lf); } else { if (lr > lf) lr = lf; gchar *buff = g_strnfill(lf, ' '); if(lr) memcpy(buff, replace, lr); memcpy(p, buff, lf); g_free(buff); } return TRUE; } return FALSE; } gboolean str_shorten_anycase(gchar *str, const gchar *find, const gchar *replace) { if (!str || !find || !replace) return FALSE; long unsigned lf = strlen(find); long unsigned lr = strlen(replace); gchar *p = strcasestr(str, find); if (p) { if(lr==lf){ memcpy(p, replace, lf); } else { if (lr > lf) lr = lf; gchar *buff = g_strnfill(lf, ' '); if(lr) memcpy(buff, replace, lr); memcpy(p, buff, lf); g_free(buff); } return TRUE; } return FALSE; } void nice_name_x86_cpuid_model_string(char *cpuid_model_string) { static gboolean move_vendor_to_front = TRUE; static gboolean remove_long_core_count = TRUE; static gboolean remove_amd_compute_cores = TRUE; static gboolean remove_amd_xn_ncore_redundancy = TRUE; static gboolean remove_processor_cpu_apu_etc = TRUE; static gboolean remove_mhz_ghz = TRUE; static gboolean remove_radeon = TRUE; if (!cpuid_model_string) return; g_strstrip(cpuid_model_string); while(str_shorten(cpuid_model_string, "Genuine Intel", "Intel")) {}; while(str_shorten_anycase(cpuid_model_string, "(R)", "")) {}; while(str_shorten_anycase(cpuid_model_string, "(TM)", "")) {}; while(str_shorten_anycase(cpuid_model_string, "(C)", "")) {}; while(str_shorten(cpuid_model_string, "@", "")) {}; if (move_vendor_to_front) { /* vendor not at the beginning, try to move there. * ex: Mobile AMD Sempron(tm) Processor 3600+ * ex: Dual Core AMD Opteron(tm) Processor 165 */ char *intel = strstr(cpuid_model_string, "Intel "); char *amd = strstr(cpuid_model_string, "AMD "); if (amd || intel) { if (amd && !intel) { if (amd != cpuid_model_string) { int l = amd - cpuid_model_string; memmove(cpuid_model_string+4, cpuid_model_string, l); memcpy(cpuid_model_string, "AMD ", 4); } } else if (intel && !amd) { int l = intel - cpuid_model_string; memmove(cpuid_model_string+6, cpuid_model_string, l); memcpy(cpuid_model_string, "Intel ", 6); } } } if (g_str_has_prefix(cpuid_model_string, "AMD")) { while(str_shorten(cpuid_model_string, "Mobile Technology", "Mobile")) {}; if (remove_radeon) { char *radeon = strcasestr(cpuid_model_string, "with Radeon"); if (!radeon) radeon = strcasestr(cpuid_model_string, "Radeon"); if (radeon) *radeon = 0; } if (remove_amd_compute_cores) { if (strcasestr(cpuid_model_string, " COMPUTE CORES ")) { /* ex: AMD FX-9800P RADEON R7, 12 COMPUTE CORES 4C+8G */ char *comma = strchr(cpuid_model_string, ','); if (comma) *comma = 0; } } if (remove_amd_xn_ncore_redundancy) { /* remove Xn n-core redundancy */ if (strstr(cpuid_model_string, "X2")) { str_shorten(cpuid_model_string, "Dual Core", ""); str_shorten(cpuid_model_string, "Dual-Core", ""); } if (strstr(cpuid_model_string, "X3")) str_shorten(cpuid_model_string, "Triple-Core", ""); if (strstr(cpuid_model_string, "X4")) str_shorten(cpuid_model_string, "Quad-Core", ""); } } if (g_str_has_prefix(cpuid_model_string, "Cyrix")) { /* ex: Cyrix MediaGXtm MMXtm Enhanced */ while(str_shorten(cpuid_model_string, "tm ", "")) {}; } if (remove_processor_cpu_apu_etc) { while(str_shorten(cpuid_model_string, " CPU", "")) {}; while(str_shorten(cpuid_model_string, " APU", "")) {}; while(str_shorten_anycase(cpuid_model_string, " Integrated Processor", "")) {}; while(str_shorten_anycase(cpuid_model_string, " Processor", "")) {}; } else { while(str_shorten(cpuid_model_string, " processor", " Processor")) {}; } if (remove_mhz_ghz) { /* 1400MHz, 1.6+ GHz, etc */ char *u = NULL; while((u = strcasestr(cpuid_model_string, "GHz")) || (u = strcasestr(cpuid_model_string, "MHz")) ) { if (u[3] == '+') u[3] = ' '; strncpy(u, " ", 3); while(isspace(*u)) {u--;} while (isdigit(*u) || *u == '.' || *u == '+') { *u = ' '; u--;} } } if (remove_long_core_count) { /* note: "Intel Core 2 Duo" and "Intel Core 2 Quad" * are the marketing names, don't remove those. */ static char *count_strings[] = { "Dual", "Triple", "Quad", "Six", "Eight", "Octal", "Twelve", "Sixteen", "8", "16", "24", "32", "48", "56", "64", }; char buffer[] = "Enough room for the longest... -Core"; char *dash = strchr(buffer, '-'); char *m = NULL; unsigned int i = 0; for(; i < G_N_ELEMENTS(count_strings); i++) { int l = strlen(count_strings[i]); m = dash-l; memcpy(m, count_strings[i], l); *dash = '-'; while(str_shorten_anycase(cpuid_model_string, m, "")) {}; *dash = ' '; while(str_shorten_anycase(cpuid_model_string, m, "")) {}; } } /* finalize */ util_compress_space(cpuid_model_string); g_strstrip(cpuid_model_string); } /* Intel Graphics may have very long names, * like "Intel Corporation Seventh Generation Something Core Something Something Integrated Graphics Processor Revision Ninety-four" */ void nice_name_intel_gpu_device(char *pci_ids_device_string) { while(str_shorten_anycase(pci_ids_device_string, "(R)", "")) {}; /* Intel(R) -> Intel */ str_shorten(pci_ids_device_string, "Graphics Controller", "Graphics"); str_shorten(pci_ids_device_string, "Graphics Device", "Graphics"); str_shorten(pci_ids_device_string, "Generation", "Gen"); str_shorten(pci_ids_device_string, "Core Processor", "Core"); str_shorten(pci_ids_device_string, "Atom Processor", "Atom"); str_shorten(pci_ids_device_string, "Xeon Processor", "Xeon"); str_shorten(pci_ids_device_string, "Celeron Processor", "Celeron"); str_shorten(pci_ids_device_string, "Pentium Processor", "Pentium"); util_compress_space(pci_ids_device_string); g_strstrip(pci_ids_device_string); } hardinfo2-hardinfo2-1331e88/deps/sysobj_early/src/strstr_word.c000066400000000000000000000051301474767047500245310ustar00rootroot00000000000000/* * sysobj - https://github.com/bp0/verbose-spork * Copyright (C) 2018 Burt P. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ /* versions of strstr() and strcasestr() where the match must be preceded and * succeded by a non-alpha-numeric character. */ #define _GNU_SOURCE #include #include static char *_strstr(const char *haystack, const char *needle, int anycase) { return anycase ? strcasestr(haystack, needle) : strstr(haystack, needle); } static char *_strstr_word(const char *haystack, const char *needle, int anycase, int prefix_ok, int suffix_ok) { if (!haystack || !needle) return NULL; char *c; const char *p = haystack; size_t l = strlen(needle); while((c = _strstr(p, needle, anycase))) { const char *before = (c == haystack) ? NULL : c-1; const char *after = c + l; int ok = 1, wbs = 1, wbe = 1; if (isalnum(*after)) wbe = 0; if (before && isalnum(*before)) wbs = 0; if (!wbe && !prefix_ok) ok = 0; if (!wbs && !suffix_ok) ok = 0; if (!(wbs || wbe)) ok = 0; if (ok) return c; p++; } return NULL; } char *strstr_word(const char *haystack, const char *needle) { return _strstr_word(haystack, needle, 0, 0, 0); } char *strcasestr_word(const char *haystack, const char *needle) { return _strstr_word(haystack, needle, 1, 0, 0); } char *strstr_word_prefix(const char *haystack, const char *needle) { return _strstr_word(haystack, needle, 0, 1, 0); } char *strcasestr_word_prefix(const char *haystack, const char *needle) { return _strstr_word(haystack, needle, 1, 1, 0); } char *strstr_word_suffix(const char *haystack, const char *needle) { return _strstr_word(haystack, needle, 0, 0, 1); } char *strcasestr_word_suffix(const char *haystack, const char *needle) { return _strstr_word(haystack, needle, 1, 0, 1); } hardinfo2-hardinfo2-1331e88/deps/sysobj_early/src/util_edid.c000066400000000000000000001462661474767047500241170ustar00rootroot00000000000000/* * sysobj - https://github.com/bp0/verbose-spork * Copyright (C) 2018 Burt P. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #define _GNU_SOURCE #include #include #include #include #include #include #include "gettext.h" #include "util_edid.h" #include "util_sysobj.h" #include "util_edid_svd_table.c" #if GLIB_CHECK_VERSION(2,52,0) #else gchar * g2_utf8_make_valid (const gchar *str, gssize len) { GString *string; const gchar *remainder, *invalid; gsize remaining_bytes, valid_bytes; g_return_val_if_fail (str != NULL, NULL); if (len < 0) len = strlen (str); string = NULL; remainder = str; remaining_bytes = len; while (remaining_bytes != 0) { if (g_utf8_validate (remainder, remaining_bytes, &invalid)) break; valid_bytes = invalid - remainder; if (string == NULL) string = g_string_sized_new (remaining_bytes); g_string_append_len (string, remainder, valid_bytes); /* append U+FFFD REPLACEMENT CHARACTER */ g_string_append (string, "\357\277\275"); remaining_bytes -= valid_bytes + 1; remainder = invalid + 1; } if (string == NULL) return g_strndup (str, len); g_string_append_len (string, remainder, remaining_bytes); g_string_append_c (string, '\0'); g_assert (g_utf8_validate (string->str, -1, NULL)); return g_string_free (string, FALSE); } #endif #define NOMASK (~0U) #define BFMASK(LSB, MASK) (MASK << LSB) #define DPTR(ADDY) (uint8_t*)(&((ADDY).e->u8[(ADDY).offset])) #define OFMT "@%03d" /* for addy.offset */ #define EDID_MSG_STDERR 0 #define edid_msg(e, msg, ...) {\ if (EDID_MSG_STDERR) fprintf (stderr, ">[%s;L%d] " msg "\n", __FUNCTION__, __LINE__, ##__VA_ARGS__); \ g_string_append_printf(e->msg_log, "[%s;L%d] " msg "\n", __FUNCTION__, __LINE__, ##__VA_ARGS__); } static int str_make_printable(char *str) { int rc = 0; char *p; for(p = str; *p; p++) { if (!isprint(*p)) { *p = '.'; rc++; } } return rc; } static inline uint32_t bf_value(uint32_t value, uint32_t mask) { uint32_t result = value & mask; if (result) while(!(mask & 1)) { result >>= 1; mask >>= 1; } return result; } static inline uint8_t bounds_check(edid *e, uint32_t offset) { if (!e) return 0; if (offset > e->len) return 0; return 1; } static inline char *rstr(edid *e, uint32_t offset, uint32_t len) { if (!bounds_check(e, offset+len)) return NULL; char *raw = malloc(len+1), *ret = NULL; strncpy(raw, (char*)&e->u8[offset], len); raw[len] = 0; #if GLIB_CHECK_VERSION(2,52,0) ret = g_utf8_make_valid(raw, len); #else ret = g2_utf8_make_valid(raw, len); #endif g_free(raw); return ret; } static inline char *rstr_strip(edid *e, uint32_t offset, uint32_t len) { if (!bounds_check(e, offset+len)) return NULL; char *raw = malloc(len+1), *ret = NULL; strncpy(raw, (char*)&e->u8[offset], len); raw[len] = 0; #if GLIB_CHECK_VERSION(2,52,0) ret = g_strstrip(g_utf8_make_valid(raw, len)); #else ret = g_strstrip(g2_utf8_make_valid(raw, len)); #endif g_free(raw); return ret; } static inline uint32_t r8(edid *e, uint32_t offset, uint32_t mask) { if (!bounds_check(e, offset)) return 0; return bf_value(e->u8[offset], mask); } static inline uint32_t r16le(edid *e, uint32_t offset, uint32_t mask) { if (!bounds_check(e, offset+1)) return 0; uint32_t v = (e->u8[offset+1] << 8) + e->u8[offset]; return bf_value(v, mask); } static inline uint32_t r16be(edid *e, uint32_t offset, uint32_t mask) { if (!bounds_check(e, offset+1)) return 0; uint32_t v = (e->u8[offset] << 8) + e->u8[offset+1]; return bf_value(v, mask); } static inline uint32_t r24le(edid *e, uint32_t offset, uint32_t mask) { if (!bounds_check(e, offset+2)) return 0; uint32_t v = (e->u8[offset+2] << 16) + (e->u8[offset+1] << 8) + e->u8[offset]; return bf_value(v, mask); } static inline uint32_t r24be(edid *e, uint32_t offset, uint32_t mask) { if (!bounds_check(e, offset+2)) return 0; uint32_t v = (e->u8[offset] << 16) + (e->u8[offset+1] << 8) + e->u8[offset+2]; return bf_value(v, mask); } static inline uint32_t r32le(edid *e, uint32_t offset, uint32_t mask) { if (!bounds_check(e, offset+3)) return 0; uint32_t v = (e->u8[offset+3] << 24) + (e->u8[offset+2] << 16) + (e->u8[offset+1] << 8) + e->u8[offset]; return bf_value(v, mask); } static inline uint32_t r32be(edid *e, uint32_t offset, uint32_t mask) { if (!bounds_check(e, offset+3)) return 0; uint32_t v = (e->u8[offset] << 24) + (e->u8[offset+1] << 16) + (e->u8[offset+2] << 8) + e->u8[offset+3]; return bf_value(v, mask); } static inline int rpnpcpy(edid_ven *dest, edid *e, uint32_t offset) { uint32_t pnp = r16be(e, offset, NOMASK); edid_ven ret = {.type = VEN_TYPE_INVALID}; if (pnp) { ret.type = VEN_TYPE_PNP; ret.pnp[2] = 64 + (pnp & 0x1f); ret.pnp[1] = 64 + ((pnp >> 5) & 0x1f); ret.pnp[0] = 64 + ((pnp >> 10) & 0x1f); *dest = ret; return 1; } return 0; } static inline int rouicpy(edid_ven *dest, edid *e, uint32_t offset) { edid_ven ret = {.type = VEN_TYPE_OUI}; ret.oui = r24le(e, offset, NOMASK); sprintf(ret.oui_str, "%02x%02x%02x", (ret.oui >> 16) & 0xff, (ret.oui >> 8) & 0xff, ret.oui & 0xff ); if (ret.oui) { *dest = ret; return 1; } return 0; } static int _block_check_n(const void *bytes, int len) { if (!bytes) return 0; uint8_t sum = 0; uint8_t *data = (uint8_t*)bytes; int i; for(i=0; iu8, len); } static int block_check(edid *e, uint32_t offset) { if (!bounds_check(e, offset+128)) return 0; return _block_check_n(e->u8, 128); } static char *hex_bytes(uint8_t *bytes, int count) { char *buffer = malloc(count*3+1), *p = buffer; memset(buffer, 0, count*3+1); int i; for(i = 0; i < count; i++) { sprintf(p, "%02x ", (unsigned int)bytes[i]); p += 3; } return buffer; } #define OUTPUT_CPY_SIZE(DEST, SRC) \ (DEST).horiz_cm = (SRC).horiz_cm; \ (DEST).vert_cm = (SRC).vert_cm; \ (DEST).diag_cm = (SRC).diag_cm; \ (DEST).diag_in = (SRC).diag_in; \ edid_output_fill(&(DEST)); static void edid_output_fill(edid_output *out) { out->diag_cm = sqrt( (out->horiz_cm * out->horiz_cm) + (out->vert_cm * out->vert_cm) ); out->diag_in = out->diag_cm / 2.54; if (out->is_interlaced) { if (out->vert_lines) out->vert_pixels = out->vert_lines * 2; else out->vert_lines = out->vert_pixels / 2; } else { if (out->vert_lines) out->vert_pixels = out->vert_lines; else out->vert_lines = out->vert_pixels; } if (!out->vert_freq_hz && out->pixel_clock_khz) { uint64_t h = out->horiz_pixels + out->horiz_blanking; uint64_t v = out->vert_lines + out->vert_blanking; if (h && v) { uint64_t work = out->pixel_clock_khz * 1000; work /= (h*v); out->vert_freq_hz = work; } } out->pixels = out->horiz_pixels; out->pixels *= out->vert_pixels; if (out->diag_in) { static const char *inlbl = "\u2033"; /* double prime */ sprintf(out->class_inch, "%0.1f%s", out->diag_in, inlbl); util_strchomp_float(out->class_inch); } } static void cea_block_decode(struct edid_cea_block *blk) { if (!blk) return; if (!blk->bounds_ok) blk->bounds_ok = bounds_check(blk->addy.e, blk->addy.offset + 1 + blk->len); if (!blk->bounds_ok) return; edid *e = blk->addy.e; static uint32_t h = 1; /* header size */ uint32_t a = blk->addy.offset; /* start of block, includes header */ uint8_t *ptr = DPTR(blk->addy); int i; switch(blk->type) { case 0x1: /* SADS */ for(i = h; i <= blk->len; i+=3) { struct edid_sad *sad = &e->sads[e->sad_count]; sad->v[0] = ptr[i]; sad->v[1] = ptr[i+1]; sad->v[2] = ptr[i+2]; sad->format = bf_value(sad->v[0], 0x78); sad->channels = 1 + bf_value(sad->v[0], 0x07); sad->freq_bits = sad->v[1]; if (sad->format == 1) { sad->depth_bits = sad->v[2]; } else if (sad->format >= 2 && sad->format <= 8) { sad->max_kbps = 8 * sad->v[2]; } e->sad_count++; } break; case 0x4: /* Speaker allocation */ e->speaker_alloc_bits = ptr[h]; break; case 0x2: /* SVDs */ for(i = h; i <= blk->len; i++) e->svds[e->svd_count++].v = ptr[i]; break; case 0x3: /* Vendor-specific */ rouicpy(&blk->ven, e, a+h); // TODO: break; default: break; } } static void did_block_decode(DisplayIDBlock *blk) { if (!blk) return; //printf("did_block_decode: %s\n", hex_bytes(DPTR(blk->addy), blk->len+3)); if (!blk->bounds_ok) blk->bounds_ok = bounds_check(blk->addy.e, blk->addy.offset + 3 + blk->len); if (!blk->bounds_ok) return; edid *e = blk->addy.e; static uint32_t h = 3; /* header size */ uint32_t a = blk->addy.offset; /* start of block, includes header */ uint8_t *u8 = DPTR(blk->addy); int b = h; edid_ven ven;// = {}; edid_output out;// = {}; memset(&ven,0,sizeof(edid_ven)); memset(&out,0,sizeof(edid_output)); if (blk) { switch(blk->type) { case 0: /* Product ID (1.x) */ /* UNTESTED */ if (rpnpcpy(&ven, e, a+h) ) e->ven = ven; if (u8[12] || u8[13]) { e->dom.week = u8[12]; e->dom.year = u8[13] + 2000; e->dom.is_model_year = (e->dom.week == 255); e->dom.std = STD_DISPLAYID; } e->did_strings[e->did_string_count].is_product_name = 1; e->did_strings[e->did_string_count].len = blk->len; e->did_strings[e->did_string_count].str = rstr_strip(e, a+h+12, u8[b+11]); e->name = e->did_strings[e->did_string_count].str; e->did_string_count++; break; case 0x20: /* Product ID */ /* UNTESTED */ if (rouicpy(&ven, e, a+h) ) e->ven = ven; if (u8[12] || u8[13]) { e->dom.week = u8[12]; e->dom.year = u8[13] + 2000; e->dom.is_model_year = (e->dom.week == 255); e->dom.std = STD_DISPLAYID20; } e->did_strings[e->did_string_count].is_product_name = 1; e->did_strings[e->did_string_count].len = blk->len; e->did_strings[e->did_string_count].str = rstr_strip(e, a+h+12, u8[b+11]); e->name = e->did_strings[e->did_string_count].str; e->did_string_count++; break; case 0x0a: /* Serial Number (ASCII String) */ e->did_strings[e->did_string_count].is_serial = 1; e->did_strings[e->did_string_count].len = blk->len; e->did_strings[e->did_string_count].str = rstr_strip(e, a+h, blk->len); e->serial = e->did_strings[e->did_string_count].str; e->did_string_count++; break; case 0x0b: /* General Purpose ASCII String */ e->did_strings[e->did_string_count].len = blk->len; e->did_strings[e->did_string_count].str = rstr(e, a+h, blk->len); e->did_string_count++; break; case 0x03: /* Type I Detailed timings */ out.pixel_clock_khz = 10 * r24le(e, a+h, NOMASK); out.horiz_pixels = 1 + (u8[b+5] << 8) + u8[b+4]; out.horiz_blanking = (u8[b+7] << 8) + u8[b+6]; out.vert_lines = 1 + (u8[b+13] << 8) + u8[b+12]; out.vert_blanking = (u8[b+15] << 8) + u8[b+14]; out.is_interlaced = bf_value(u8[b+3], BFMASK(4, 0x1)); out.stereo_mode = bf_value(u8[b+3], BFMASK(5, 0x3)); out.is_preferred = bf_value(u8[b+3], BFMASK(7, 0x1)); out.src = OUTSRC_DID_TYPE_I; edid_output_fill(&out); e->didts[e->didt_count++] = out; break; case 0x13: /* Type VI Detailed timings (super 0x03) */ /* UNTESTED */ out.pixel_clock_khz = (u8[b+2] << 16) & 0xa0; out.pixel_clock_khz += u8[b+1] << 8; out.pixel_clock_khz += u8[b]; out.horiz_pixels = ((u8[b+5] << 8) + u8[b+3]) & 0x7fff; out.vert_lines = ((u8[b+6] << 8) + u8[b+5]) & 0x7fff; // TODO: blanking... out.is_interlaced = (u8[b+13] >> 7) & 0x1; out.stereo_mode = (u8[b+13] >> 5) & 0x2; out.src = OUTSRC_DID_TYPE_VI; edid_output_fill(&out); e->didts[e->didt_count++] = out; break; case 0x22: /* Type VII Detailed timings (super 0x13) */ /* UNTESTED */ out.pixel_clock_khz = u8[b+2] << 16; out.pixel_clock_khz += u8[b+1] << 8; out.pixel_clock_khz += u8[b]; out.horiz_pixels = (u8[b+5] << 8) + u8[b+4]; out.horiz_blanking = (u8[b+7] << 8) + u8[b+6]; out.vert_lines = (u8[b+13] << 8) + u8[b+12]; out.vert_blanking = (u8[b+15] << 8) + u8[b+14]; out.is_interlaced = (u8[b+3] >> 4) & 0x1; out.stereo_mode = (u8[b+3] >> 5) & 0x2; out.is_preferred = (u8[b+3] >> 7) & 0x1; out.src = OUTSRC_DID_TYPE_VII; edid_output_fill(&out); e->didts[e->didt_count++] = out; break; case 0x7e: /* vendor specific data */ case 0x7f: /* vendor specific data */ rouicpy(&blk->ven, e, a+h); // TODO: break; case 0x81: /* CTA DisplayID, ... Embedded CEA Blocks */ while(b < blk->len) { int db_type = (u8[b] & 0xe0) >> 5; int db_size = u8[b] & 0x1f; e->cea_blocks[e->cea_block_count].addy.e = blk->addy.e; e->cea_blocks[e->cea_block_count].addy.offset = blk->addy.offset + b; e->cea_blocks[e->cea_block_count].type = db_type; e->cea_blocks[e->cea_block_count].len = db_size; cea_block_decode(&e->cea_blocks[e->cea_block_count]); e->cea_block_count++; b += db_size + 1; } break; default: break; } } } static edid_output edid_output_from_svd(uint8_t index) { int i; if (index >= 128 && index <= 192) index &= 0x7f; /* "native" flag for 0-64 */ for(i = 0; i < (int)G_N_ELEMENTS(cea_standard_timings); i++) { if (cea_standard_timings[i].index == index) { edid_output out;// = {}; memset(&out,0,sizeof(edid_output)); out.horiz_pixels = cea_standard_timings[i].horiz_active; out.vert_lines = cea_standard_timings[i].vert_active; if (strchr(cea_standard_timings[i].short_name, 'i')) out.is_interlaced = 1; out.pixel_clock_khz = cea_standard_timings[i].pixel_clock_mhz * 1000; out.vert_freq_hz = cea_standard_timings[i].vert_freq_hz; out.src = OUTSRC_SVD; edid_output_fill(&out); return out; } } return (edid_output){.src = OUTSRC_INVALID}; } edid *edid_new(const char *data, unsigned int len) { if (len < 128) return NULL; int i; edid *e = malloc(sizeof(edid)); memset(e, 0, sizeof(edid)); e->data = malloc(len); memcpy(e->data, data, len); e->len = len; e->ver_major = e->u8[18]; e->ver_minor = e->u8[19]; e->msg_log = g_string_new(NULL); #define RESERVE_COUNT 300 e->dtds = malloc(sizeof(struct edid_dtd) * RESERVE_COUNT); e->cea_blocks = malloc(sizeof(struct edid_cea_block) * RESERVE_COUNT); e->svds = malloc(sizeof(struct edid_svd) * RESERVE_COUNT); e->sads = malloc(sizeof(struct edid_sad) * RESERVE_COUNT); e->did_blocks = malloc(sizeof(DisplayIDBlock) * RESERVE_COUNT); e->didts = malloc(sizeof(edid_output) * RESERVE_COUNT); e->did_strings = malloc(sizeof(edid_output) * RESERVE_COUNT); memset(e->dtds, 0, sizeof(struct edid_dtd) * RESERVE_COUNT); memset(e->cea_blocks, 0, sizeof(struct edid_cea_block) * RESERVE_COUNT); memset(e->svds, 0, sizeof(struct edid_svd) * RESERVE_COUNT); memset(e->sads, 0, sizeof(struct edid_sad) * RESERVE_COUNT); memset(e->did_blocks, 0, sizeof(DisplayIDBlock) * RESERVE_COUNT); memset(e->didts, 0, sizeof(edid_output) * RESERVE_COUNT); memset(e->did_strings, 0, sizeof(edid_output) * RESERVE_COUNT); /* base product information */ rpnpcpy(&e->ven, e, 8); /* bytes 8-9 */ e->product = r16le(e, 10, NOMASK); /* bytes 10-11 */ e->n_serial = r32le(e, 12, NOMASK); /* bytes 12-15 */ e->dom.week = e->u8[16]; /* byte 16 */ e->dom.year = e->u8[17] + 1990; /* byte 17 */ e->dom.is_model_year = (e->dom.week == 255); e->dom.std = STD_EDID; e->a_or_d = (e->u8[20] & 0x80) ? 1 : 0; if (e->a_or_d == 1) { /* digital */ switch((e->u8[20] >> 4) & 0x7) { case 0x1: e->bpc = 6; break; case 0x2: e->bpc = 8; break; case 0x3: e->bpc = 10; break; case 0x4: e->bpc = 12; break; case 0x5: e->bpc = 14; break; case 0x6: e->bpc = 16; break; } e->interface = e->u8[20] & 0xf; } if (e->u8[21] && e->u8[22]) { e->img.horiz_cm = e->u8[21]; e->img.vert_cm = e->u8[22]; edid_output_fill(&e->img); e->img_max = e->img; } /* established timing bitmap */ #define ETB_CHECK(BYT, BIT, HP, VP, RF, IL) \ if (e->u8[BYT] & (1<etbs[e->etb_count] = e->img; \ e->etbs[e->etb_count].horiz_pixels = HP; \ e->etbs[e->etb_count].vert_pixels = VP; \ e->etbs[e->etb_count].vert_freq_hz = RF; \ e->etbs[e->etb_count].is_interlaced = IL;\ e->etbs[e->etb_count].src = OUTSRC_ETB; \ edid_output_fill(&e->etbs[e->etb_count]);\ e->etb_count++; }; ETB_CHECK(35, 7, 720, 400, 70, 0); //(VGA) ETB_CHECK(35, 6, 720, 400, 88, 0); //(XGA) ETB_CHECK(35, 5, 640, 480, 60, 0); //(VGA) ETB_CHECK(35, 4, 640, 480, 67, 0); //(Apple Macintosh II) ETB_CHECK(35, 3, 640, 480, 72, 0); ETB_CHECK(35, 2, 640, 480, 75, 0); ETB_CHECK(35, 1, 800, 600, 56, 0); ETB_CHECK(35, 0, 800, 600, 60, 0); ETB_CHECK(36, 7, 800, 600, 72, 0); ETB_CHECK(36, 6, 800, 600, 75, 0); ETB_CHECK(36, 5, 832, 624, 75, 0); //(Apple Macintosh II) ETB_CHECK(36, 4, 1024, 768, 87, 1); //(1024×768i) ETB_CHECK(36, 3, 1024, 768, 60, 0); ETB_CHECK(36, 2, 1024, 768, 70, 0); ETB_CHECK(36, 1, 1024, 768, 75, 0); ETB_CHECK(36, 0, 1280, 1024, 75, 0); ETB_CHECK(37, 7, 1152, 870, 75, 0); //(Apple Macintosh II) /* standard timings */ for(i = 38; i < 53; i+=2) { /* 0101 is unused */ if (e->u8[i] == 0x01 && e->u8[i+1] == 0x01) continue; /* 00.. is invalid/"reserved" */ if (e->u8[i] == 0x00) continue; double xres = (e->u8[i] + 31) * 8; double yres = 0; int iar = (e->u8[i+1] >> 6) & 0x3; int vf = (e->u8[i+1] & 0x3f) + 60; switch(iar) { case 0: /* 16:10 (v<1.3 1:1) */ if (e->ver_major == 1 && e->ver_minor < 3) yres = xres; else yres = xres*10/16; break; case 0x1: /* 4:3 */ yres = xres*4/3; break; case 0x2: /* 5:4 */ yres = xres*4/5; break; case 0x3: /* 16:9 */ yres = xres*9/16; break; } e->stds[e->std_count].ptr = &e->u8[i]; e->stds[e->std_count].out = e->img; /* inherit */ e->stds[e->std_count].out.horiz_pixels = xres; e->stds[e->std_count].out.vert_pixels = yres; e->stds[e->std_count].out.vert_freq_hz = vf; e->stds[e->std_count].out.src = OUTSRC_STD; edid_output_fill(&e->stds[e->std_count].out); e->std_count++; } uint16_t dh, dl; #define CHECK_DESCRIPTOR(INDEX, OFFSET) \ e->d[INDEX].addy.e = e; \ e->d[INDEX].addy.offset = OFFSET; \ if (e->u8[OFFSET] == 0) { \ dh = be16toh(e->u16[OFFSET/2]); \ dl = be16toh(e->u16[OFFSET/2+1]); \ e->d[INDEX].type = (dh << 16) + dl; \ switch(e->d[INDEX].type) { \ case 0xfc: case 0xff: case 0xfe: \ strncpy(e->d[INDEX].text, (char*)e->u8+OFFSET+5, 13); \ } \ } else e->dtds[e->dtd_count++].addy = e->d[INDEX].addy; CHECK_DESCRIPTOR(0, 54); CHECK_DESCRIPTOR(1, 72); CHECK_DESCRIPTOR(2, 90); CHECK_DESCRIPTOR(3, 108); e->checksum_ok = block_check(e, 0); /* first 128-byte block only */ if (len > 128) { /* check extension blocks */ int blocks = len / 128; blocks--; e->ext_blocks = blocks; e->ext_ok = malloc(sizeof(uint8_t) * blocks); for(; blocks; blocks--) { uint32_t offset = blocks * 128; uint8_t *u8 = e->u8 + offset; int r = block_check(e, offset); e->ext_ok[blocks-1] = r; if (r) e->ext_blocks_ok++; else e->ext_blocks_fail++; if (u8[0] == 0x40) { /* DI-EXT */ e->di.exists = 1; e->di.addy.e = e; e->di.addy.offset = offset; e->di.interface = r8(e, offset + 2, NOMASK); e->di.supports_hdcp = r8(e, offset + 3, 0x8); } if (u8[0] == 0x70) { /* DisplayID */ e->did.version = u8[1]; if (e->did.version >= 0x20) e->std = MAX(e->std, STD_DISPLAYID20); else e->std = MAX(e->std, STD_DISPLAYID); e->did.extension_length = u8[2]; e->did.primary_use_case = u8[3]; e->did.extension_count = u8[4]; e->did.checksum_ok = block_check_n(e, offset, e->did.extension_length + 5); int db_end = u8[2] + 5; int b = 5; while(b < db_end) { if (r24le(e, offset + b, NOMASK) == 0) break; int db_type = u8[b]; int db_revision = u8[b+1] & 0x7; int db_size = u8[b+2]; e->did_blocks[e->did_block_count].addy.e = e; e->did_blocks[e->did_block_count].addy.offset = offset + b; e->did_blocks[e->did_block_count].type = db_type; e->did_blocks[e->did_block_count].revision = db_revision; e->did_blocks[e->did_block_count].len = db_size; did_block_decode(&e->did_blocks[e->did_block_count]); e->did_block_count++; e->did.blocks++; b += db_size + 3; } if (b > db_end) edid_msg(e, "DID block overrun [in ext " OFMT "], expect to end at +%d, but last ends at +%d" , offset, db_end-1, b-1); //printf("DID: v:%02x el:%d uc:%d ec:%d, blocks:%d ok:%d\n", // e->did.version, e->did.extension_length, // e->did.primary_use_case, e->did.extension_count, // e->did.blocks, e->checksum_ok); } if (u8[0] == 0x02) { e->std = MAX(e->std, STD_EIACEA861); /* CEA extension */ int db_end = u8[2]; if (db_end) { int b = 4; while(b < db_end) { int db_type = (u8[b] & 0xe0) >> 5; int db_size = u8[b] & 0x1f; e->cea_blocks[e->cea_block_count].addy.e = e; e->cea_blocks[e->cea_block_count].addy.offset = offset + b; e->cea_blocks[e->cea_block_count].type = db_type; e->cea_blocks[e->cea_block_count].len = db_size; cea_block_decode(&e->cea_blocks[e->cea_block_count]); e->cea_block_count++; b += db_size + 1; } if (b > db_end) { b = db_end; edid_msg(e, "CEA block overrun [in ext " OFMT "], expect to end at +%d, but last ends at +%d" , offset, db_end-1, b-1); } /* DTDs */ while(b < 127) { if (u8[b]) { e->dtds[e->dtd_count].addy.e = e; e->dtds[e->dtd_count].addy.offset = offset + b; e->dtds[e->dtd_count].cea_ext = 1; e->dtd_count++; } b += 18; } } } } } if (e->ext_blocks_ok) { e->std = MAX(e->std, STD_EEDID); } /* strings */ for(i = 0; i < 4; i++) { g_strstrip(e->d[i].text); str_make_printable(e->d[i].text); switch(e->d[i].type) { case 0xfc: e->name = e->d[i].text; break; case 0xff: e->serial = e->d[i].text; break; case 0xfe: if (e->ut1) e->ut2 = e->d[i].text; else e->ut1 = e->d[i].text; break; } } /* quirks */ if (!e->name) { if (SEQ(e->ut1, "LG Display") && e->ut2) /* LG may use "uspecified text" for name and model */ e->name = e->ut2; else if (SEQ(e->ut1, "AUO") && e->ut2) /* Same with AUO */ e->name = e->ut2; else { if (e->ut1) e->name = e->ut1; if (e->ut2 && !e->serial) e->serial = e->ut2; } } if (!e->interface && e->di.interface) { if (e->di.interface >= 1 && e->di.interface <= 5) e->interface = 1; /* DVI */ } /* largest in ETB */ for (i = 0; i < e->etb_count; i++) { if (e->etbs[i].pixels > e->img.pixels) e->img = e->etbs[i]; if (e->etbs[i].pixels > e->img_max.pixels) e->img_max = e->etbs[i]; } /* largest in STDs */ for (i = 0; i < e->std_count; i++) { if (e->stds[i].out.pixels > e->img.pixels) e->img = e->stds[i].out; if (e->stds[i].out.pixels > e->img_max.pixels) e->img_max = e->stds[i].out; } /* dtds */ for(i = 0; i < e->dtd_count; i++) { edid_addy a = e->dtds[i].addy; if (!e->dtds[i].bounds_ok) e->dtds[i].bounds_ok = bounds_check(a.e, a.offset + 18); if (!e->dtds[i].bounds_ok) { printf("bounds fail\n"); exit(0); } uint8_t *u8 = DPTR(a); edid_output *out = &e->dtds[i].out; if (e->dtds[i].cea_ext) out->src = OUTSRC_CEA_DTD; else out->src = OUTSRC_DTD; out->pixel_clock_khz = 10 * r16le(a.e, a.offset, NOMASK); out->horiz_pixels = ((u8[4] & 0xf0) << 4) + u8[2]; out->vert_lines = ((u8[7] & 0xf0) << 4) + u8[5]; out->horiz_blanking = ((u8[4] & 0x0f) << 8) + u8[3]; out->vert_blanking = ((u8[7] & 0x0f) << 8) + u8[6]; out->horiz_cm = ((u8[14] & 0xf0) << 4) + u8[12]; out->horiz_cm /= 10; out->vert_cm = ((u8[14] & 0x0f) << 8) + u8[13]; out->vert_cm /= 10; out->is_interlaced = (u8[17] & 0x80) >> 7; out->stereo_mode = (u8[17] & 0x60) >> 4; out->stereo_mode += u8[17] & 0x01; edid_output_fill(out); } if (e->dtd_count) { /* first DTD is "preferred" */ e->img_max = e->dtds[0].out; } /* svds */ for(i = 0; i < e->svd_count; i++) { e->svds[i].out = edid_output_from_svd(e->svds[i].v); if (e->svds[i].out.src == OUTSRC_INVALID) continue; if (e->svds[i].v >= 128 && e->svds[i].v <= 192) { e->svds[i].is_native = 1; edid_output tmp = e->img_max; /* native res is max real res, right? */ e->img_max = e->svds[i].out; e->img_max.is_preferred = 1; OUTPUT_CPY_SIZE(e->img_max, tmp); } if (e->svds[i].out.pixels > e->img_svd.pixels || e->svds[i].is_native) { e->img_svd = e->svds[i].out; if (e->svds[i].is_native) e->img_svd.is_preferred = 1; OUTPUT_CPY_SIZE(e->img_svd, e->img_max); } } /* remove invalid SVDs */ int d = 0; for(i = 0; i < e->svd_count; i++) { if (d != i) e->svds[d].out = e->svds[i].out; if (e->svds[i].out.src != OUTSRC_INVALID) d++; } e->svd_count -= (i-d); /* didts */ for(i = 0; i < e->didt_count; i++) { int pref = e->didts[i].is_preferred; int max_pref = e->img_max.is_preferred; int bigger = (e->didts[i].pixels > e->img_max.pixels); int better = (e->didts[i].src > e->img_max.src); if ((bigger && !max_pref) || (pref && !max_pref) || (better)) { edid_output tmp = e->img_max; e->img_max = e->didts[i]; OUTPUT_CPY_SIZE(e->img_max, tmp); } } if (!e->speaker_alloc_bits && e->sad_count) { /* make an assumption */ if (e->sads[0].channels == 2) e->speaker_alloc_bits = 0x1; } /* squeeze lists */ #define SQUEEZE(C, L) \ if (!e->C) { free(e->L); e->L = NULL; } \ else { e->L = realloc(e->L, sizeof(e->L[0]) * (e->C)); } SQUEEZE(dtd_count, dtds); SQUEEZE(cea_block_count, cea_blocks); SQUEEZE(svd_count, svds); SQUEEZE(sad_count, sads); SQUEEZE(did_block_count, did_blocks); SQUEEZE(didt_count, didts); SQUEEZE(did_string_count, did_strings); return e; } void edid_free(edid *e) { int i; if (e) { g_free(e->ext_ok); g_free(e->cea_blocks); g_free(e->dtds); g_free(e->svds); g_free(e->sads); g_free(e->did_blocks); g_free(e->didts); for(i = 0; i < e->did_string_count; i++) g_free(e->did_strings[i].str); g_free(e->did_strings); g_free(e->data); g_string_free(e->msg_log, TRUE); g_free(e); } } edid *edid_new_from_hex(const char *hex_string) { int blen = strlen(hex_string) / 2; uint8_t *buffer = malloc(blen), *n = buffer; memset(buffer, 0, blen); int len = 0; const char *p = hex_string; char byte[3] = ".."; while(p && *p) { if (isxdigit(p[0]) && isxdigit(p[1])) { byte[0] = p[0]; byte[1] = p[1]; *n = strtol(byte, NULL, 16); n++; len++; p += 2; } else p++; } edid *e = edid_new((char*)buffer, len); free(buffer); return e; } edid *edid_new_from_file(const char *path) { char *bin = NULL; gsize len = 0; if (g_file_get_contents(path, &bin, &len, NULL) ) { edid *ret = edid_new(bin, len); g_free(bin); return ret; } return NULL; } char *edid_dump_hex(edid *e, int tabs, int breaks) { if (!e) return NULL; int lines = 1 + (e->len / 16); int blen = lines * 35 + 1; unsigned int pc = 0; char *ret = malloc(blen); memset(ret, 0, blen); uint8_t *u8 = e->u8; char *p = ret; for(; lines; lines--) { int i, d = MIN(16, (e->len - pc)); if (!d) break; for(i = 0; i < tabs; i++) sprintf(p++, "\t"); for(i = d; i; i--) { sprintf(p, "%02x", (unsigned int)*u8); p+=2; u8++; pc++; if (pc == e->len) { if (breaks) sprintf(p++, "\n"); goto edid_dump_hex_done; } } if (breaks) sprintf(p++, "\n"); } edid_dump_hex_done: return ret; } const char *edid_standard(int std) { switch(std) { case STD_EDID: return N_("VESA EDID"); case STD_EEDID: return N_("VESA E-EDID"); case STD_EIACEA861: return N_("EIA/CEA-861"); case STD_DISPLAYID: return N_("VESA DisplayID"); case STD_DISPLAYID20: return N_("VESA DisplayID 2.0"); }; return N_("unknown"); } const char *edid_output_src(int src) { switch(src) { case OUTSRC_EDID: return N_("VESA EDID"); case OUTSRC_ETB: return N_("VESA EDID ETB"); case OUTSRC_STD: return N_("VESA EDID STD"); case OUTSRC_DTD: return N_("VESA EDID DTD"); case OUTSRC_CEA_DTD: return N_("EIA/CEA-861 DTD"); case OUTSRC_SVD: return N_("EIA/CEA-861 SVD"); case OUTSRC_DID_TYPE_I: return N_("DisplayID Type I"); case OUTSRC_DID_TYPE_VI: return N_("DisplayID Type VI"); case OUTSRC_DID_TYPE_VII: return N_("DisplayID Type VII"); }; return N_("unknown"); } const char *edid_interface(int type) { switch(type) { case 0: return N_("undefined"); case 0x1: return N_("DVI"); case 0x2: return N_("HDMIa"); case 0x3: return N_("HDMIb"); case 0x4: return N_("MDDI"); case 0x5: return N_("DisplayPort"); }; return N_("unknown"); } const char *edid_di_interface(int type) { switch(type) { case 0: return N_("Analog"); case 0x1: return N_("DVI"); case 0x2: return N_("DVI - Single Link"); case 0x3: return N_("DVI - Dual Link (Hi-Resolution)"); case 0x4: return N_("DVI - Dual Link (Hi-Color)"); case 0x5: return N_("DVI for Consumer Electronics"); case 0x6: return N_("PnD"); case 0x7: return N_("DFP"); case 0x8: return N_("OpenLDI - Single Link"); case 0x9: return N_("OpenLDI - Dual Link"); case 0xa: return N_("OpenLDI for Consumer Electronics"); }; return N_("unknown"); } const char *edid_cea_audio_type(int type) { switch(type) { case 0: case 15: return N_("reserved"); case 1: return N_("LPCM"); case 2: return N_("AC-3"); case 3: return N_("MPEG1 (layers 1 and 2)"); case 4: return N_("MPEG1 layer 3"); case 5: return N_("MPEG2"); case 6: return N_("AAC"); case 7: return N_("DTS"); case 8: return N_("ATRAC"); case 9: return N_("DSD"); case 10: return N_("DD+"); case 11: return N_("DTS-HD"); case 12: return N_("MLP/Dolby TrueHD"); case 13: return N_("DST Audio"); case 14: return N_("WMA Pro"); } return N_("unknown type"); } const char *edid_cea_block_type(int type) { switch(type) { case 0x01: return N_("audio"); case 0x02: return N_("video"); case 0x03: return N_("vendor specific"); case 0x04: return N_("speaker allocation"); } return N_("unknown type"); } const char *edid_did_block_type(int type) { switch(type) { /* 1.x */ case 0x00: return N_("Product Identification (1.x)"); case 0x01: return N_("Display Parameters (1.x)"); case 0x02: return N_("Color Characteristics (1.x)"); case 0x03: return N_("Type I Timing - Detailed (1.x)"); case 0x04: return N_("Type II Timing - Detailed (1.x)"); case 0x05: return N_("Type III Timing - Short (1.x)"); case 0x06: return N_("Type IV Timing - DMT ID Code (1.x)"); case 0x07: return N_("VESA Timing Standard (1.x)"); case 0x08: return N_("CEA Timing Standard (1.x)"); case 0x09: return N_("Video Timing Range (1.x)"); case 0x0A: return N_("Product Serial Number (1.x)"); case 0x0B: return N_("General Purpose ASCII String (1.x)"); case 0x0C: return N_("Display Device Data (1.x)"); case 0x0D: return N_("Interface Power Sequencing (1.x)"); case 0x0E: return N_("Transfer Characteristics (1.x)"); case 0x0F: return N_("Display Interface Data (1.x)"); case 0x10: return N_("Stereo Display Interface (1.x)"); case 0x11: return N_("Type V Timing - Short (1.x)"); case 0x12: return N_("Tiled Display Topology (1.x)"); case 0x13: return N_("Type VI Timing - Detailed (1.x)"); case 0x7F: return N_("Vendor specific (1.x)"); /* 2.x */ case 0x20: return N_("Product Identification"); case 0x21: return N_("Display Parameters"); case 0x22: return N_("Type VII - Detailed Timing"); case 0x23: return N_("Type VIII - Enumerated Timing Code"); case 0x24: return N_("Type IX - Formula-based Timing"); case 0x25: return N_("Dynamic Video Timing Range Limits"); case 0x26: return N_("Display Interface Features"); case 0x27: return N_("Stereo Display Interface"); case 0x28: return N_("Tiled Display Topology"); case 0x29: return N_("ContainerID"); case 0x7E: return N_("Vendor specific"); case 0x81: return N_("CTA DisplayID"); } return N_("unknown type"); } const char *edid_ext_block_type(int type) { switch(type) { case 0x00: return N_("timing extension"); case 0x02: return N_("EIA/CEA-861 extension (CEA-EXT)"); case 0x10: return N_("Video Timing Block extension (VTB-EXT)"); case 0x20: return N_("EDID 2.0 extension"); case 0x40: return N_("Display Information extension (DI-EXT)"); case 0x50: return N_("Localized String extension (LS-EXT)"); case 0x60: return N_("Digital Packet Video Link extension (DPVL-EXT)"); case 0x70: return N_("DisplayID"); case 0xa7: case 0xaf: case 0xbf: return N_("display transfer characteristics data block"); case 0xf0: return N_("extension block map"); case 0xff: return N_("manufacturer-defined extension/display device data block"); } return N_("unknown block type"); } const char *edid_descriptor_type(int type) { switch(type) { case 0xff: return N_("display serial number"); case 0xfe: return N_("unspecified text"); case 0xfd: return N_("display range limits"); case 0xfc: return N_("display name"); case 0xfb: return N_("additional white point"); case 0xfa: return N_("additional standard timing identifiers"); case 0xf9: return N_("Display Color Management"); case 0xf8: return N_("CVT 3-byte timing codes"); case 0xf7: return N_("additional standard timing"); case 0x10: return N_("dummy"); } if (type && type < 0x0f) return N_("manufacturer reserved descriptor"); return N_("detailed timing descriptor"); } char *edid_cea_audio_describe(struct edid_sad *sad) { if (!sad) return NULL; if (!sad->format) return g_strdup_printf("format:([%x] %s)", sad->format, _(edid_cea_audio_type(sad->format)) ); gchar *ret = NULL; gchar *tmp[3] = {NULL,NULL,NULL}; #define appfreq(b, f) if (sad->freq_bits & (1 << b)) tmp[0] = appf(tmp[0], ", ", "%d", f); #define appdepth(b, d) if (sad->depth_bits & (1 << b)) tmp[1] = appf(tmp[1], ", ", "%d%s", d, _("-bit")); appfreq(0, 32); appfreq(1, 44); appfreq(2, 48); appfreq(3, 88); appfreq(4, 96); appfreq(5, 176); appfreq(6, 192); if (sad->format == 1) { appdepth(0, 16); appdepth(1, 20); appdepth(2, 24); tmp[2] = g_strdup_printf("depths: %s", tmp[1]); } else if (sad->format >= 2 && sad->format <= 8 ) { tmp[2] = g_strdup_printf("max_bitrate: %d %s", sad->max_kbps, _("kbps")); } else tmp[2] = g_strdup(""); ret = g_strdup_printf("format:([%x] %s) channels:%d rates:%s %s %s", sad->format, _(edid_cea_audio_type(sad->format)), sad->channels, tmp[0], _("kHz"), tmp[2]); g_free(tmp[0]); g_free(tmp[1]); g_free(tmp[2]); return ret; } char *edid_cea_speaker_allocation_describe(int bitfield, int short_version) { gchar *spk_list = NULL; #define appspk(b, sv, fv) if (bitfield & (1 << b)) \ spk_list = appf(spk_list, short_version ? ", " : "\n", "%s", short_version ? sv : fv); appspk(0, "FL+FR", _("Front left and right")); appspk(1, "LFE", _("Low-frequency effects")); appspk(2, "FC", _("Front center")); appspk(3, "RL+RR", _("Rear left and right")); appspk(4, "RC", _("Rear center")); appspk(5, "???", _("")); appspk(6, "???", _("")); return spk_list; } char *edid_cea_block_describe(struct edid_cea_block *blk) { gchar *ret = NULL; if (blk) { char *hb = hex_bytes(DPTR(blk->addy), blk->len+1); switch(blk->type) { case 0x1: /* SAD list */ ret = g_strdup_printf("([%x] %s) sads:%d", blk->type, _(edid_cea_block_type(blk->type)), blk->len/3); break; case 0x2: /* SVD list */ ret = g_strdup_printf("([%x] %s) svds:%d", blk->type, _(edid_cea_block_type(blk->type)), blk->len); break; case 0x4: /* speaker allocation */ ret = g_strdup_printf("([%x] %s) len:%d", blk->type, _(edid_cea_block_type(blk->type)), blk->len); break; case 0x3: /* vendor specific */ ret = g_strdup_printf("([%x] %s) len:%d (OUI:%s) -- %s", blk->type, _(edid_cea_block_type(blk->type)), blk->len, blk->ven.oui_str, hb); break; default: ret = g_strdup_printf("([%x] %s) len:%d -- %s", blk->type, _(edid_cea_block_type(blk->type)), blk->len, hb); break; } free(hb); } return ret; } char *edid_base_descriptor_describe(struct edid_descriptor *d) { gchar *ret = NULL; if (d) { char *hb = hex_bytes(DPTR(d->addy), 18); char *txt = NULL; switch(d->type) { case 0: /* DTD */ txt = "{...}"; /* displayed elsewhere */ break; case 0x10: /* dummy */ txt = ""; break; default: txt = (*d->text) ? d->text : hb; break; }; ret = g_strdup_printf("([%02x] %s) %s", d->type, _(edid_descriptor_type(d->type)), txt); free(hb); } return ret; } char *edid_did_block_describe(DisplayIDBlock *blk) { if (!blk) return NULL; gchar *ret = NULL; edid *e = blk->addy.e; uint32_t a = blk->addy.offset + 3; char *str = NULL; //printf("edid_did_block_describe: ((%d)) t:%02x a{%p, %d}...\n", blk->addy.e->did.extension_count, blk->type, blk->addy.e, blk->addy.offset); char *hb = hex_bytes(DPTR(blk->addy), blk->len+3); switch(blk->type) { case 0x0a: /* Product Serial ASCII string */ str = rstr_strip(e, a, blk->len); ret = g_strdup_printf("([%02x:r%02x] %s) len:%d \"%s\"", blk->type, blk->revision, _(edid_did_block_type(blk->type)), blk->len, str); break; case 0x0b: /* ASCII string */ str = rstr(e, a, blk->len); ret = g_strdup_printf("([%02x:r%02x] %s) len:%d \"%s\"", blk->type, blk->revision, _(edid_did_block_type(blk->type)), blk->len, str); break; default: ret = g_strdup_printf("([%02x:r%02x] %s) len:%d -- %s", blk->type, blk->revision, _(edid_did_block_type(blk->type)), blk->len, hb); break; } free(hb); return ret; } char *edid_output_describe(edid_output *out) { gchar *ret = NULL; if (out) { ret = g_strdup_printf("%dx%d@%.0f%s", out->horiz_pixels, out->vert_pixels, out->vert_freq_hz, _("Hz") ); if (out->diag_cm) ret = appfsp(ret, "%0.1fx%0.1f%s (%0.1f\")", out->horiz_cm, out->vert_cm, _("cm"), out->diag_in ); ret = appfsp(ret, "%s", out->is_interlaced ? "interlaced" : "progressive"); ret = appfsp(ret, "%s", out->stereo_mode ? "stereo" : "normal"); } return ret; } char *edid_dtd_describe(struct edid_dtd *dtd, int dump_bytes) { gchar *ret = NULL; if (dtd) { edid_output *out = &dtd->out; char *hb = hex_bytes(DPTR(dtd->addy), 18); ret = g_strdup_printf("%dx%d@%.0f%s, %0.1fx%0.1f%s (%0.1f\") %s %s (%s)%s%s", out->horiz_pixels, out->vert_lines, out->vert_freq_hz, _("Hz"), out->horiz_cm, out->vert_cm, _("cm"), out->diag_in, out->is_interlaced ? "interlaced" : "progressive", out->stereo_mode ? "stereo" : "normal", _(edid_output_src(out->src)), dump_bytes ? " -- " : "", dump_bytes ? hb : ""); free(hb); } return ret; } char *edid_manf_date_describe(struct edid_manf_date dom) { if (!dom.year) return g_strdup("unspecified"); if (dom.is_model_year) return g_strdup_printf(_("model year %d"), dom.year); if (dom.week && dom.week <= 53) return g_strdup_printf(_("week %d of %d"), dom.week, dom.year); return g_strdup_printf("%d", dom.year); } char *edid_dump2(edid *e) { char *ret = NULL; int i; if (!e) return NULL; ret = appfnl(ret, "edid version: %d.%d (%d bytes)", e->ver_major, e->ver_minor, e->len); if (e->std) ret = appfnl(ret, "extended to: %s", _(edid_standard(e->std)) ); ret = appfnl(ret, "mfg: %s, model: [%04x-%08x] %u-%u", e->ven.pnp, e->product, e->n_serial, e->product, e->n_serial); char *dom_desc = edid_manf_date_describe(e->dom); ret = appfnl(ret, "date: %s", dom_desc); g_free(dom_desc); if (e->name) ret = appfnl(ret, "product: %s", e->name); if (e->serial) ret = appfnl(ret, "serial: %s", e->serial); ret = appfnl(ret, "type: %s", e->a_or_d ? "digital" : "analog"); if (e->bpc) ret = appfnl(ret, "bits per color channel: %d", e->bpc); if (e->interface) ret = appfnl(ret, "interface: %s", _(edid_interface(e->interface))); if (e->di.exists) { ret = appfnl(ret, "interface_ext: %s", _(edid_di_interface(e->di.interface))); ret = appfnl(ret, "hdcp: %s", e->di.supports_hdcp ? "supported" : "no"); } char *desc = edid_output_describe(&e->img); char *desc_svd = edid_output_describe(&e->img_svd); char *desc_max = edid_output_describe(&e->img_max); ret = appfnl(ret, "base(%s): %s", _(edid_output_src(e->img.src)), desc); if (e->svd_count) ret = appfnl(ret, "svd(%s): %s", _(edid_output_src(e->img_svd.src)), desc_svd); ret = appfnl(ret, "max(%s): %s", _(edid_output_src(e->img_max.src)), desc_max); g_free(desc); g_free(desc_svd); g_free(desc_max); if (e->speaker_alloc_bits) { char *desc = edid_cea_speaker_allocation_describe(e->speaker_alloc_bits, 1); ret = appfnl(ret, "speakers: %s", desc); g_free(desc); } for(i = 0; i < e->etb_count; i++) { char *desc = edid_output_describe(&e->etbs[i]); ret = appfnl(ret, "etb[%d]: %s", i, desc); g_free(desc); } for(i = 0; i < e->std_count; i++) { char *desc = edid_output_describe(&e->stds[i].out); ret = appfnl(ret, "std[%d]: %s", i, desc); g_free(desc); } ret = appfnl(ret, "checksum %s", e->checksum_ok ? "ok" : "failed!"); if (e->ext_blocks_ok || e->ext_blocks_fail) ret = appf(ret, "", ", extension blocks: %d of %d ok", e->ext_blocks_ok, e->ext_blocks_ok + e->ext_blocks_fail); for(i = 0; i < 4; i++) { char *desc = edid_base_descriptor_describe(&e->d[i]); ret = appfnl(ret, "descriptor[%d] %s", i, desc); g_free(desc); } for(i = 0; i < e->ext_blocks; i++) { int type = e->u8[(i+1)*128]; int version = e->u8[(i+1)*128 + 1]; ret = appfnl(ret, "ext[%d] ([%02x:v%02x] %s) %s", i, type, version, _(edid_ext_block_type(type)), e->ext_ok[i] ? "ok" : "fail" ); } for(i = 0; i < e->dtd_count; i++) { char *desc = edid_dtd_describe(&e->dtds[i], 0); ret = appfnl(ret, "dtd[%d] %s", i, desc); free(desc); } for(i = 0; i < e->cea_block_count; i++) { char *desc = edid_cea_block_describe(&e->cea_blocks[i]); ret = appfnl(ret, "cea_block[%d] %s", i, desc); free(desc); } for(i = 0; i < e->svd_count; i++) { char *desc = edid_output_describe(&e->svds[i].out); ret = appfnl(ret, "svd[%d] [%02x] %s", i, e->svds[i].v, desc); free(desc); } for(i = 0; i < e->sad_count; i++) { char *desc = edid_cea_audio_describe(&e->sads[i]); ret = appfnl(ret, "sad[%d] [%02x%02x%02x] %s", i, e->sads[i].v[0], e->sads[i].v[1], e->sads[i].v[2], desc); free(desc); } for(i = 0; i < e->did_block_count; i++) { char *desc = edid_did_block_describe(&e->did_blocks[i]); ret = appfnl(ret, "did_block[%d] %s", i, desc); free(desc); } for(i = 0; i < e->didt_count; i++) { char *desc = edid_output_describe(&e->didts[i]); ret = appfnl(ret, "did_timing[%d]: %s", i, desc); g_free(desc); } for(i = 0; i < e->did_string_count; i++) { ret = appfnl(ret, "did_string[%d]: %s", i, e->did_strings[i].str); } ret = appfnl(ret, "parse messages:\n%s---", e->msg_log->str); return ret; } hardinfo2-hardinfo2-1331e88/deps/sysobj_early/src/util_edid_svd_table.c000066400000000000000000000314121474767047500261240ustar00rootroot00000000000000 struct { int index; const char *short_name; const char *disp_ratio, *pixel_ratio; float pixel_clock_mhz, vert_freq_hz, horiz_freq_khz; float horiz_active, vert_active, horiz_total, vert_total; float field_rate_hz; } cea_standard_timings[] = { { 1, "DMT0659", "4:3", "1:1", 25.175, 59.94, 31.469, 640, 480, 800, 525, 60 }, { 2, "480p", "4:3", "8:9", 27.0, 59.94, 31.469, 720, 480, 858, 525, 60 }, { 3, "480pH", "16:9", "32:37", 27.0, 59.94, 31.469, 720, 480, 858, 525, 60 }, { 4, "720p", "16:9", "1:1", 74.25, 60, 45.0, 1280, 720, 1650, 750, 60 }, { 5, "1080i", "16:9", "1:1", 74.25, 60, 33.75, 1920, 540, 2200, 562.5, 60 }, { 6, "480i", "4:3", "8:9", 27.0, 59.94, 15.734, 1440, 240, 1716, 262.5, 60 }, { 7, "480iH", "16:9", "32:37", 27.0, 59.94, 15.734, 1440, 240, 1716, 262.5, 60 }, { 8, "240p", "4:3", "4:9", 27.0, 59.826, 15.734, 1440, 240, 1716, 262.5, 60 }, { 9, "240pH", "16:9", "16:27", 27.0, 59.826, 15.734, 1440, 240, 1716, 262.5, 60 }, { 10, "480i4x", "4:3", "2:9-20:9", 54.0, 59.94, 15.734, 2880, 240, 3432, 262.5, 60 }, { 11, "480i4xH", "16:9", "8:27-80:27", 54.0, 59.94, 15.734, 2880, 240, 3432, 262.5, 60 }, { 12, "240p4x", "4:3", "1:9-10:9", 54.0, 60, 15.734, 2880, 240, 3432, 262.5, 60 }, { 13, "240p4xH", "16:9", "4:27-40:37", 54.0, 60, 15.734, 2880, 240, 3432, 262.5, 60 }, { 14, "480p2x", "4:3", "4:9 or 8:9", 54.0, 59.94, 31.469, 1440, 480, 1716, 525, 60 }, { 15, "480p2xH", "16:9", "16:27 or 32:37", 54.0, 59.94, 31.469, 1440, 480, 1716, 525, 60 }, { 16, "1080p", "16:9", "1:1", 148.5, 60, 67.5, 1920, 1080, 2200, 1125, 60 }, { 17, "576p", "4:3", "16:15", 27.0, 50, 31.25, 720, 576, 864, 625, 50 }, { 18, "576pH", "16:9", "64:45", 27.0, 50, 31.25, 720, 576, 864, 625, 50 }, { 19, "720p50", "16:9", "1:1", 74.25, 50, 37.5, 1280, 720, 1980, 750, 50 }, { 20, "1080i25", "16:9", "1:1", 74.25, 50, 28.125, 1920, 540, 2640, 562.5, 50 }, { 21, "576i", "4:3", "16:15", 27.0, 50, 15.625, 1440, 288, 1728, 312.5, 50 }, { 22, "576iH", "16:9", "64:45", 27.0, 50, 15.625, 1440, 288, 1728, 312.5, 50 }, { 23, "288p", "4:3", "8:15", 27.0, 50, 15.625, 1440, 288, 1728, 313, 50 }, { 24, "288pH", "16:9", "32:45", 27.0, 50, 15.625, 1440, 288, 1728, 313, 50 }, { 25, "576i4x", "4:3", "2:15-20:15", 54.0, 50, 15.625, 2880, 288, 3456, 312.5, 50 }, { 26, "576i4xH", "16:9", "16:45-160:45", 54.0, 50, 15.625, 2880, 288, 3456, 312.5, 50 }, { 27, "288p4x", "4:3", "1:15-10:15", 54.0, 50, 15.625, 2880, 288, 3456, 313, 50 }, { 28, "288p4xH", "16:9", "8:45-80:45", 54.0, 50, 15.625, 2880, 288, 3456, 313, 50 }, { 29, "576p2x", "4:3", "8:15 or 16:15", 54.0, 50, 31.25, 1440, 576, 1728, 625, 50 }, { 30, "576p2xH", "16:9", "32:45 or 64:45", 54.0, 50, 31.25, 1440, 576, 1728, 625, 50 }, { 31, "1080p50", "16:9", "1:1", 148.5, 50, 56.25, 1920, 1080, 2640, 1125, 50 }, { 32, "1080p24", "16:9", "1:1", 74.25, 23.98, 27.0, 1920, 1080, 2750, 1125, 0 }, { 33, "1080p25", "16:9", "1:1", 74.25, 25, 28.125, 1920, 1080, 2640, 1125, 0 }, { 34, "1080p30", "16:9", "1:1", 74.25, 29.97, 33.75, 1920, 1080, 2500, 1125, 0 }, { 35, "480p4x", "4:3", "2:9, 4:9 or 8:9", 108.0, 59.94, 31.469, 2880, 240, 3432, 262.5, 60 }, { 36, "480p4xH", "16:9", "8:27, 16:27 or 32:27", 108.0, 59.94, 31.469, 2880, 240, 3432, 262.5, 60 }, { 37, "576p4x", "4:3", "4:15, 8:15, or 16:15", 108.0, 50, 31.25, 2880, 576, 3456, 625, 50 }, { 38, "576p4xH", "16:9", "16:45, 32:45 or 64:45", 108.0, 50, 31.25, 2880, 576, 3456, 625, 50 }, { 39, "1080i25", "16:9", "1:1", 72.0, 50, 31.25, 1920, 540, 2304, 625, 50 }, { 40, "1080i50", "16:9", "1:1", 148.5, 100, 56.25, 1920, 540, 2640, 562.5, 100 }, { 41, "720p100", "16:9", "1:1", 148.5, 100, 45.0, 1280, 720, 1980, 750, 100 }, { 42, "576p100", "4:3", "16:15", 54.0, 100, 62.5, 720, 576, 864, 625, 100 }, { 43, "576p100H", "16:9", "64:45", 54.0, 100, 62.5, 720, 576, 864, 625, 100 }, { 44, "576i50", "4:3", "16:15", 54.0, 100, 31.25, 1440, 576, 1728, 625, 100 }, { 45, "576i50H", "16:9", "64:45", 54.0, 100, 31.25, 1440, 576, 1728, 625, 100 }, { 46, "1080i60", "16:9", "1:1", 148.5, 119.88, 67.5, 1920, 540, 2200, 562.5, 120 }, { 47, "720p120", "16:9", "1:1", 148.5, 119.88, 90.0, 1280, 720, 1650, 750, 120 }, { 48, "480p119", "4:3", "8:9", 54.0, 119.88, 62.937, 720, 576, 858, 525, 120 }, { 49, "480p119H", "16:9", "32:37", 54.0, 119.88, 62.937, 720, 576, 858, 525, 120 }, { 50, "480i59", "4:3", "16:15", 54.0, 119.88, 31.469, 1440, 576, 1716, 525, 120 }, { 51, "480i59H", "16:9", "64:45", 54.0, 119.88, 31.469, 1440, 576, 1716, 525, 120 }, { 52, "576p200", "4:3", "16:15", 108.0, 200, 125.0, 720, 576, 864, 625, 200 }, { 53, "576p200H", "16:9", "64:45", 108.0, 200, 125.0, 720, 576, 864, 625, 200 }, { 54, "576i100", "4:3", "16:15", 108.0, 200, 62.5, 1440, 288, 1728, 312.5, 200 }, { 55, "576i100H", "16:9", "64:45", 108.0, 200, 62.5, 1440, 288, 1728, 312.5, 200 }, { 56, "480p239", "4:3", "8:9", 108.0, 239.76, 125.874, 720, 480, 858, 525, 240 }, { 57, "480p239H", "16:9", "32:37", 108.0, 239.76, 125.874, 720, 480, 858, 525, 240 }, { 58, "480i119", "4:3", "8:9", 108.0, 239.76, 62.937, 1440, 240, 1716, 262.5, 240 }, { 59, "480i119H", "16:9", "32:37", 108.0, 239.76, 62.937, 1440, 240, 1716, 262.5, 240 }, { 60, "720p24", "16:9", "1:1", 59.4, 23.98, 18.0, 1280, 720, 3300, 750, 0 }, { 61, "720p25", "16:9", "1:1", 74.25, 25, 18.75, 1280, 720, 3960, 750, 0 }, { 62, "720p30", "16:9", "1:1", 74.25, 29.97, 22.5, 1280, 720, 3300, 750, 0 }, { 63, "1080p120", "16:9", "1:1", 297.0, 119.88, 135.0, 1920, 1080, 2200, 1125, 120 }, { 64, "1080p100", "16:9", "1:1", 297.0, 100, 112.5, 1920, 1080, 2640, 1125, 100 }, { 65, "720p24", "64:27", "4:3", 59.4, 23.98, 18.0, 1280, 720, 3300, 750, 0 }, { 66, "720p25", "64:27", "4:3", 74.25, 25, 18.75, 1280, 720, 3960, 750, 0 }, { 67, "720p30", "64:27", "4:3", 74.25, 29.97, 22.5, 1280, 720, 3300, 750, 0 }, { 68, "720p50", "64:27", "4:3", 74.25, 50, 37.5, 1280, 720, 1980, 750, 50 }, { 69, "720p", "64:27", "4:3", 74.25, 60, 45.0, 1650, 750, 1650, 750, 60 }, { 70, "720p100", "64:27", "4:3", 148.5, 100, 75.0, 1280, 720, 1980, 750, 100 }, { 71, "720p120", "64:27", "4:3", 148.5, 119.88, 90.0, 1280, 720, 1650, 750, 120 }, { 72, "1080p24", "64:27", "4:3", 74.25, 23.98, 27.0, 1920, 1080, 2750, 1125, 0 }, { 73, "1080p25", "64:27", "4:3", 74.25, 25, 28.125, 1920, 1080, 2640, 1125, 0 }, { 74, "1080p30", "64:27", "4:3", 74.25, 29.97, 33.75, 1920, 1080, 2500, 1125, 0 }, { 75, "1080p50", "64:27", "4:3", 148.5, 50, 56.25, 1920, 1080, 2640, 1125, 50 }, { 76, "1080p", "64:27", "4:3", 148.5, 60, 67.5, 1920, 1080, 2200, 1125, 60 }, { 77, "1080p100", "64:27", "4:3", 297.0, 100, 112.5, 1920, 1080, 2640, 1125, 100 }, { 78, "1080p120", "64:27", "4:3", 297.0, 119.88, 135.0, 1920, 1080, 2200, 1125, 120 }, { 79, "720p2x24", "64:27", "64:63", 59.4, 23.98, 18.0, 1680, 720, 3300, 750, 0 }, { 80, "720p2x25", "64:27", "64:63", 59.4, 25, 18.75, 1680, 720, 3168, 750, 0 }, { 81, "720p2x30", "64:27", "64:63", 59.4, 29.97, 22.5, 1680, 720, 2640, 750, 0 }, { 82, "720p2x50", "64:27", "64:63", 82.5, 50, 37.5, 1680, 720, 2200, 750, 50 }, { 83, "720p2x", "64:27", "64:63", 99.0, 60, 45.0, 1680, 720, 2200, 750, 60 }, { 84, "720p2x100", "64:27", "64:63", 165.0, 100, 82.5, 1680, 720, 2000, 825, 100 }, { 85, "720p2x120", "64:27", "64:63", 198.0, 119.88, 99.0, 1680, 720, 2000, 825, 120 }, { 86, "1080p2x24", "64:27", "1:1", 99.0, 23.98, 26.4, 2560, 1080, 3750, 1100, 0 }, { 87, "1080p2x25", "64:27", "1:1", 90.0, 25, 28.125, 2560, 1080, 3200, 1125, 0 }, { 88, "1080p2x30", "64:27", "1:1", 118.8, 29.97, 33.75, 2560, 1080, 3520, 1125, 0 }, { 89, "1080p2x50", "64:27", "1:1", 185.625, 50, 56.25, 2560, 1080, 3000, 1125, 50 }, { 90, "1080p2x", "64:27", "1:1", 198.0, 60, 66.0, 2560, 1080, 3000, 1100, 60 }, { 91, "1080p2x100", "64:27", "1:1", 371.25, 100, 125.0, 2560, 1080, 2970, 1250, 100 }, { 92, "1080p2x120", "64:27", "1:1", 495.0, 119.88, 150.0, 2560, 1080, 3300, 1250, 120 }, { 93, "2160p24", "16:9", "1:1", 297.0, 23.98, 54.0, 3840, 2160, 5500, 2250, 0 }, { 94, "2160p25", "16:9", "1:1", 297.0, 25, 56.25, 3840, 2160, 5280, 2250, 0 }, { 95, "2160p30", "16:9", "1:1", 297.0, 29.97, 67.5, 3840, 2160, 4400, 2250, 0 }, { 96, "2160p50", "16:9", "1:1", 594.0, 50, 112.5, 3840, 2160, 5280, 2250, 50 }, { 97, "2160p60", "16:9", "1:1", 594.0, 60, 135.0, 3840, 2160, 4400, 2250, 60 }, { 98, "2160p24", "256:135", "1:1", 297.0, 23.98, 67.5, 4096, 2160, 5500, 2250, 0 }, { 99, "2160p25", "256:135", "1:1", 297.0, 25, 112.5, 4096, 2160, 5280, 2250, 0 }, { 100, "2160p30", "256:135", "1:1", 297.0, 29.97, 135.0, 4096, 2160, 4400, 2250, 0 }, { 101, "2160p50", "256:135", "1:1", 594.0, 50, 112.5, 4096, 2160, 5280, 2250, 50 }, { 102, "2160p", "256:135", "1:1", 594.0, 60, 135.0, 4096, 2160, 4400, 2250, 60 }, { 103, "2160p24", "64:27", "4:3", 297.0, 23.98, 67.5, 3840, 2160, 5500, 2250, 0 }, { 104, "2160p25", "64:27", "4:3", 297.0, 25, 112.5, 3840, 2160, 5280, 2250, 0 }, { 105, "2160p30", "64:27", "4:3", 297.0, 29.97, 135.0, 3840, 2160, 4400, 2250, 0 }, { 106, "2160p50", "64:27", "4:3", 594.0, 50, 112.5, 3840, 2160, 5280, 2250, 50 }, { 107, "2160p", "64:27", "4:3", 594.0, 60, 135.0, 3840, 2160, 4400, 2250, 60 }, { 108, "720p48", "16:9", "1:1", 90.0, 47.96, 36.0, 1280, 720, 2500, 750, 0 }, { 109, "720p48", "64:27", "4:3", 90.0, 47.96, 36.0, 1280, 720, 2500, 750, 0 }, { 110, "720p2x48", "64:27", "64:63", 99.0, 47.96, 36.0, 1680, 720, 2750, 825, 0 }, { 111, "1080p48", "16:9", "1:1", 148.5, 47.96, 54.0, 1920, 1080, 2750, 1125, 0 }, { 112, "1080p48", "64:27", "4:3", 148.5, 47.96, 54.0, 1920, 1080, 2750, 1125, 0 }, { 113, "1080p2x48", "64:27", "1:1", 198.0, 47.96, 52.8, 2560, 1080, 3750, 1100, 0 }, { 114, "2160p48", "16:9", "1:1", 594.0, 47.96, 108.0, 3840, 2160, 5500, 2250, 0 }, { 115, "2160p48", "256:135", "1:1", 594.0, 47.96, 108.0, 4096, 2160, 5500, 2250, 0 }, { 116, "2160p48", "64:27", "4:3", 594.0, 47.96, 108.0, 3840, 2160, 5500, 2250, 0 }, { 117, "2160p100", "16:9", "1:1", 1188.0, 100, 225.0, 3840, 2160, 5280, 2250, 100 }, { 118, "2160p120", "16:9", "1:1", 1188.0, 119.88, 270.0, 3840, 2160, 4400, 2250, 120 }, { 119, "2160p100", "64:27", "4:3", 1188.0, 100, 225.0, 3840, 2160, 5280, 2250, 100 }, { 120, "2160p120", "64:27", "4:3", 1188.0, 119.88, 270.0, 3840, 2160, 4400, 2250, 120 }, { 121, "2160p2x24", "64:27", "1:1", 396.0, 23.98, 52.8, 5120, 2160, 7500, 2200, 0 }, { 122, "2160p2x25", "64:27", "1:1", 396.0, 25, 55.0, 5120, 2160, 7200, 2200, 0 }, { 123, "2160p2x30", "64:27", "1:1", 396.0, 29.97, 66.0, 5120, 2160, 6000, 2200, 0 }, { 124, "2160p2x48", "64:27", "1:1", 742.5, 47.96, 118.8, 5120, 2160, 6250, 2450, 0 }, { 125, "2160p2x50", "64:27", "1:1", 742.5, 50, 112.5, 5120, 2160, 6600, 2250, 50 }, { 126, "2160p2x", "64:27", "1:1", 742.5, 60, 135.0, 5120, 2160, 5500, 2250, 60 }, { 127, "2160p2x100", "64:27", "1:1", 1485.0, 100, 225.0, 5120, 2160, 6600, 2250, 100 }, { 193, "2160p2x120", "64:27", "1:1", 1485.0, 119.88, 270.0, 5120, 2160, 5500, 2250, 120 }, { 194, "4320p24", "16:9", "1:1", 1188.0, 23.98, 108.0, 7680, 4320, 11000, 4500, 0 }, { 195, "4320p25", "16:9", "1:1", 1188.0, 25, 110.0, 7680, 4320, 10800, 4400, 0 }, { 196, "4320p30", "16:9", "1:1", 1188.0, 29.97, 132.0, 7680, 4320, 9000, 4400, 0 }, { 197, "4320p48", "16:9", "1:1", 2376.0, 47.96, 216.0, 7680, 4320, 11000, 4500, 0 }, { 198, "4320p50", "16:9", "1:1", 2376.0, 50, 220.0, 7680, 4320, 10800, 4400, 50 }, { 199, "4320p", "16:9", "1:1", 2376.0, 60, 264.0, 7680, 4320, 9000, 4400, 60 }, { 200, "4320p100", "16:9", "1:1", 4752.0, 100, 450.0, 7680, 4320, 10560, 4500, 100 }, { 201, "4320p120", "16:9", "1:1", 4752.0, 119.88, 540.0, 7680, 4320, 8800, 4500, 120 }, { 202, "4320p24", "64:27", "4:3", 1188.0, 23.98, 108.0, 7680, 4320, 11000, 4500, 0 }, { 203, "4320p25", "64:27", "4:3", 1188.0, 25, 110.0, 7680, 4320, 10800, 4400, 0 }, { 204, "4320p30", "64:27", "4:3", 1188.0, 29.97, 132.0, 7680, 4320, 9000, 4400, 0 }, { 205, "4320p48", "64:27", "4:3", 2376.0, 47.96, 216.0, 7680, 4320, 11000, 4500, 0 }, { 206, "4320p50", "64:27", "4:3", 2376.0, 50, 220.0, 7680, 4320, 10800, 4400, 50 }, { 207, "4320p", "64:27", "4:3", 2376.0, 60, 264.0, 7680, 4320, 9000, 4400, 60 }, { 208, "4320p100", "64:27", "4:3", 4752.0, 100, 450.0, 7680, 4320, 10560, 4500, 100 }, { 209, "4320p120", "64:27", "4:3", 4752.0, 119.88, 540.0, 7680, 4320, 8800, 4500, 120 }, { 210, "4320p2x24", "64:27", "1:1", 1485.0, 23.98, 118.8, 10240, 4320, 12500, 4950, 0 }, { 211, "4320p2x25", "64:27", "1:1", 1485.0, 25, 110.0, 10240, 4320, 13500, 4400, 0 }, { 212, "4320p2x30", "64:27", "1:1", 1485.0, 29.97, 135.0, 10240, 4320, 11000, 4500, 0 }, { 213, "4320p2x48", "64:27", "1:1", 2970.0, 47.96, 237.6, 10240, 4320, 12500, 4950, 0 }, { 214, "4320p2x50", "64:27", "1:1", 2970.0, 50, 220.0, 10240, 4320, 13500, 4400, 50 }, { 215, "4320p2x", "64:27", "1:1", 2970.0, 60, 270.0, 10240, 4320, 11000, 4400, 60 }, { 216, "4320p2x100", "64:27", "1:1", 5940.0, 100, 450.0, 10240, 4320, 13200, 4500, 100 }, { 217, "4320p2x120", "64:27", "1:1", 5940.0, 119.88, 540.0, 10240, 4320, 11000, 4500, 120 }, { 218, "2160p100", "256:135", "1:1", 1188.0, 100, 225.0, 4096, 2160, 5280, 2250, 100 }, { 219, "2160p120", "256:135", "1:1", 1188.0, 119.88, 270.0, 4096, 2160, 4400, 2250, 120 }, }; hardinfo2-hardinfo2-1331e88/deps/sysobj_early/src/util_ids.c000066400000000000000000000234371474767047500237630ustar00rootroot00000000000000/* * sysobj - https://github.com/bp0/verbose-spork * Copyright (C) 2018 Burt P. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include "util_ids.h" #include #include #include #include #define ids_msg(msg, ...) fprintf (stderr, "[%s] " msg "\n", __FUNCTION__, ##__VA_ARGS__) /**/ static int ids_tracing = 0; void ids_trace_start() { ids_tracing = 1; } void ids_trace_stop() { ids_tracing = 0; } ids_query *ids_query_new(const gchar *qpath) { ids_query *s = g_new0(ids_query, 1); s->qpath = qpath ? g_strdup(qpath) : NULL; return s; } void ids_query_free(ids_query *s) { if (s) g_free(s->qpath); g_free(s); } void ids_query_result_cpy(ids_query_result *dest, ids_query_result *src) { if (!dest || !src) return; memcpy(dest, src, sizeof(ids_query_result)); for(int i = 0; dest->results[i]; i++) dest->results[i] = dest->_strs + (src->results[i] - src->_strs); } /* c001 < C 01 */ //TODO: compare more than the first char static int ids_cmp(const char *s1, const char *s2) { int cmp = (s2 ? 1 : 0) - (s1 ? 1 : 0); if (cmp == 0 && isalpha(*s1) && isalpha(*s2)) cmp = (islower(*s2) ? 1 : 0) - (islower(*s1) ? 1 : 0); if (cmp == 0) return g_strcmp0(s1, s2); else return cmp; } static void ids_query_result_set_str(ids_query_result *ret, int tabs, gchar *p) { if (!p) { ret->results[tabs] = p; } else { if (tabs == 0) { ret->results[tabs] = ret->_strs; strncpy(ret->results[tabs], p, IDS_LOOKUP_BUFF_SIZE-1); } else { ret->results[tabs] = ret->results[tabs-1] + strlen(ret->results[tabs-1]) + 1; strncpy(ret->results[tabs], p, IDS_LOOKUP_BUFF_SIZE-1); } } /* all following strings become invalid */ while(tabs < IDS_LOOKUP_MAX_DEPTH) ret->results[++tabs] = NULL; } /* Given a qpath "/X/Y/Z", find names as: * X ->result[0] * \tY ->result[1] * \t\tZ ->result[2] * * Works with: * - pci.ids "// " or "C //" * - arm.ids "/" * - sdio.ids "/", "C " * - usb.ids "/", "C " etc * - edid.ids "<3letter_vendor>" */ long scan_ids_file(const gchar *file, const gchar *qpath, ids_query_result *result, long start_offset) { gchar **qparts = NULL; gchar buff[IDS_LOOKUP_BUFF_SIZE] = ""; ids_query_result ret;// = {}; gchar *p = NULL; FILE *fd; int tabs; int qdepth; int qpartlen[IDS_LOOKUP_MAX_DEPTH]; long last_root_fpos = -1, fpos, line = -1; memset(&ret,0,sizeof(ids_query_result)); if (!qpath) return -1; fd = fopen(file, "r"); if (!fd) { ids_msg("file could not be read: %s", file); return -1; } qparts = g_strsplit(qpath, "/", -1); qdepth = g_strv_length(qparts); if (qdepth > IDS_LOOKUP_MAX_DEPTH) { ids_msg("qdepth (%d) > ids_max_depth (%d) for %s", qdepth, IDS_LOOKUP_MAX_DEPTH, qpath); qdepth = IDS_LOOKUP_MAX_DEPTH; } for(int i = 0; i < qdepth; i++) qpartlen[i] = strlen(qparts[i]); if (start_offset > 0) fseek(fd, start_offset, SEEK_SET); for (fpos = ftell(fd); fgets(buff, IDS_LOOKUP_BUFF_SIZE, fd); fpos = ftell(fd)) { p = strchr(buff, '\n'); if (!p) ids_msg("line longer than IDS_LOOKUP_BUFF_SIZE (%d), file: %s, offset: %ld", IDS_LOOKUP_BUFF_SIZE, file, fpos); line++; /* line ends at comment */ p = strchr(buff, '#'); if (p) *p = 0; /* trim trailing white space */ if (!p) p = buff + strlen(buff); p--; while(p > buff && isspace((unsigned char)*p)) p--; *(p+1) = 0; p = buff; if (buff[0] == 0) continue; /* empty line */ if (buff[0] == '\n') continue; /* empty line */ /* scan for fields */ tabs = 0; while(*p == '\t') { tabs++; p++; } if (tabs >= qdepth) continue; /* too deep */ if (tabs != 0 && !ret.results[tabs-1]) continue; /* not looking at this depth, yet */ if (ret.results[tabs]) goto ids_lookup_done; /* answered at this level */ if (ids_tracing) ids_msg("[%s] looking at (%d) %s...", file, tabs, p); if (g_str_has_prefix(p, qparts[tabs]) && isspace(*(p + qpartlen[tabs])) ) { /* found */ p += qpartlen[tabs]; while(isspace((unsigned char)*p)) p++; /* ffwd */ if (tabs == 0) last_root_fpos = fpos; ids_query_result_set_str(&ret, tabs, p); if (ids_tracing) { int i = 0; for(; i < IDS_LOOKUP_MAX_DEPTH; i++) { if (!qparts[i]) break; ids_msg(" ...[%d]: %s\t--> %s", i, qparts[i], ret.results[i]); } } continue; } if (ids_cmp(p, qparts[tabs]) == 1) { if (ids_tracing) ids_msg("will not be found qparts[tabs] = %s, p = %s", qparts[tabs], p); goto ids_lookup_done; /* will not be found */ } } /* for each line */ ids_lookup_done: if (ids_tracing) ids_msg("bailed at line %ld...", line); fclose(fd); if (result) { ids_query_result_cpy(result, &ret); return last_root_fpos; } return last_root_fpos; } static gint _ids_query_list_cmp(const ids_query *ql1, const ids_query *ql2) { return g_strcmp0(ql1->qpath, ql2->qpath); } long scan_ids_file_list(const gchar *file, ids_query_list query_list, long start_offset) { GSList *tmp = g_slist_copy(query_list); tmp = g_slist_sort(tmp, (GCompareFunc)_ids_query_list_cmp); long offset = start_offset; for (GSList *l = query_list; l; l = l->next) { ids_query *q = l->data; offset = scan_ids_file(file, q->qpath, &(q->result), offset); if (offset == -1) break; } g_slist_free(tmp); return offset; } int query_list_count_found(ids_query_list query_list) { long count = 0; for (GSList *l = query_list; l; l = l->next) { ids_query *q = l->data; if (q->result.results[0]) count++; } return count; } static gchar *split_loc_default(const char *line) { return g_utf8_strchr(line, -1, ' '); } GSList *ids_file_all_get_all(const gchar *file, split_loc_function split_loc_func) { GSList *ret = NULL; gchar buff[IDS_LOOKUP_BUFF_SIZE] = ""; gchar *p = NULL, *name = NULL; FILE *fd; int tabs = 0, tabs_last = 0; long fpos, line = -1; fd = fopen(file, "r"); if (!fd) { ids_msg("file could not be read: %s", file); return ret; } ids_query_result *working = g_new0(ids_query_result, 1); gchar **qparts = g_new0(gchar*, IDS_LOOKUP_MAX_DEPTH + 1); for(tabs = IDS_LOOKUP_MAX_DEPTH-1; tabs>=0; tabs--) qparts[tabs] = g_malloc0(IDS_LOOKUP_BUFF_SIZE+1); tabs = 0; if (!split_loc_func) split_loc_func = split_loc_default; for (fpos = ftell(fd); fgets(buff, IDS_LOOKUP_BUFF_SIZE, fd); fpos = ftell(fd)) { p = strchr(buff, '\n'); if (!p) ids_msg("line longer than IDS_LOOKUP_BUFF_SIZE (%d), file: %s, offset: %ld", IDS_LOOKUP_BUFF_SIZE, file, fpos); line++; /* line ends at comment */ p = strchr(buff, '#'); if (p) *p = 0; /* trim trailing white space */ if (!p) p = buff + strlen(buff); p--; while(p > buff && isspace((unsigned char)*p)) p--; *(p+1) = 0; p = buff; if (buff[0] == 0) continue; /* empty line */ if (buff[0] == '\n') continue; /* empty line */ /* scan for fields */ tabs = 0; while(*p == '\t') { tabs++; p++; } if (tabs >= IDS_LOOKUP_MAX_DEPTH) continue; /* too deep */ if (tabs > tabs_last + 1) { /* jump too big, there's a qpath part that is "" */ ids_msg("jump too big from depth %d to %d, file: %s, offset: %ld", tabs_last, tabs, file, fpos); continue; } name = split_loc_func(p); if (!name) { ids_msg("expected name/value split not found, file: %s, offset: %ld", file, fpos); continue; } *name = 0; name++; /* split ptr is the first char of split string */ g_strstrip(p); g_strstrip(name); // now p = id, name = name // ids_msg("p: %s -- name: %s", p, name); strncpy(qparts[tabs], p, IDS_LOOKUP_BUFF_SIZE); ids_query_result_set_str(working, tabs, name); if (tabs < tabs_last) for(;tabs_last > tabs; tabs_last--) { qparts[tabs_last][0] = 0; working->results[tabs_last] = NULL; } ids_query *found = ids_query_new(NULL); ids_query_result_cpy(&found->result, working); found->qpath = g_strjoinv("/", qparts); p = found->qpath + strlen(found->qpath) - 1; while(*p == '/') { *p = 0; p--; } ret = g_slist_append(ret, found); tabs_last = tabs; } /* for each line */ fclose(fd); g_strfreev(qparts); ids_query_result_free(working); return ret; } hardinfo2-hardinfo2-1331e88/deps/sysobj_early/src/util_sysobj.c000066400000000000000000000140441474767047500245070ustar00rootroot00000000000000/* * sysobj - https://github.com/bp0/verbose-spork * Copyright (C) 2018 Burt P. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #define _GNU_SOURCE #include #include #include /* for realpath() */ #include /* for getuid() */ #include /* for isxdigit(), etc. */ #include "util_sysobj.h" gchar *util_build_fn(const gchar *base, const gchar *name) { gchar *ret = NULL; gboolean slash = TRUE; if (!base) return NULL; if (base[strlen(base)-1] == '/') slash = FALSE; if (name) { if (*name == '/') slash = FALSE; ret = g_strdup_printf("%s%s%s", base, slash ? "/" : "", name); } else ret = g_strdup(base); util_null_trailing_slash(ret); return ret; } gboolean util_have_root() { return (getuid() == 0) ? TRUE : FALSE; } void util_compress_space(gchar *str) { gchar *p = str, *t = str; if (str && *str) { int n = 0; while(*p) { if (isspace(*p) ) { if (!n) *t++ = ' '; n++; } else { n = 0; if (t != p) *t = *p; t++; } p++; } } if (t != p) *t = 0; } void util_null_trailing_slash(gchar *str) { if (str && *str) { if (str[strlen(str)-1] == '/' ) str[strlen(str)-1] = 0; } } gsize util_count_lines(const gchar *str) { gchar **lines = NULL; gsize count = 0; if (str) { lines = g_strsplit(str, "\n", 0); count = g_strv_length(lines); if (count && *lines[count-1] == 0) { /* if the last line is empty, don't count it */ count--; } g_strfreev(lines); } return count; } int util_get_did(gchar *str, const gchar *lbl) { int id = -2; gchar tmpfmt[128] = ""; gchar tmpchk[128] = ""; sprintf(tmpfmt, "%s%s", lbl, "%d"); if ( sscanf(str, tmpfmt, &id)==1 ) { sprintf(tmpchk, tmpfmt, id); if ( SEQ(str, tmpchk) ) return id; } return -1; } gchar *util_escape_markup(gchar *v, gboolean replacing) { gchar *clean, *tmp; gchar **vl; if (v == NULL) return NULL; vl = g_strsplit(v, "&", -1); if (g_strv_length(vl) > 1) clean = g_strjoinv("&", vl); else clean = g_strdup(v); g_strfreev(vl); vl = g_strsplit(clean, "<", -1); if (g_strv_length(vl) > 1) { tmp = g_strjoinv("<", vl); g_free(clean); clean = tmp; } g_strfreev(vl); vl = g_strsplit(clean, ">", -1); if (g_strv_length(vl) > 1) { tmp = g_strjoinv(">", vl); g_free(clean); clean = tmp; } g_strfreev(vl); if (replacing) g_free((gpointer)v); return clean; } void util_strstrip_double_quotes_dumb(gchar *str) { if (!str) return; g_strstrip(str); gchar *front = str, *back = str + strlen(str) - 1; if (back <= front) return; while(*front == '"') { *front = 'X'; front++; } while(*back == '"') { *back = 0; back--; } int nl = strlen(front); memmove(str, front, nl); str[nl] = 0; } /* "194.110 MHz" -> "194.11 MHz" * "5,0 golden rings" -> "5 golden rings" */ gchar *util_strchomp_float(gchar* str_float) { if (!str_float) return NULL; char *dot = strchr(str_float, '.'); char *comma = strchr(str_float, ','); char *p = NULL, *dec = NULL, *src = NULL, *target = NULL; if (!dot && !comma) return str_float; if (dot > comma) dec = dot; else dec = comma; p = dec + 1; while(isdigit(*p)) p++; target = src = p; p--; while(*p == '0') { target = p; p--; }; if (target == dec + 1) target = dec; if (target != src) memmove(target, src, strlen(src)+1); return str_float; } int util_maybe_num(gchar *str) { int r = 10, i = 0, l = (str) ? strlen(str) : 0; if (!l || l > 32) return 0; gchar *chk = g_strdup(str); g_strstrip(chk); l = strlen(chk); if (l > 2 && !strncmp(chk, "0x", 2)) { i = 2; r = 16; } for (; i < l; i++) { if (isxdigit(chk[i])) { if (!isdigit(chk[i])) r = 16; } else { r = 0; break; } } g_free(chk); return r; } gchar *util_safe_name(const gchar *name, gboolean lower_case) { if (!name) return NULL; const gchar *p = name; gchar *buff = g_new0(gchar, strlen(name) + 1); gchar *t = buff; while(*p) { gboolean ok = g_ascii_isalnum(*p); if (*p == '.' || *p == '-') ok = TRUE; if (*p == '/') ok = FALSE; *t = ok ? *p : '_'; t++; p = g_utf8_next_char(p); } gchar *ret = lower_case ? g_ascii_strdown(buff, -1) : g_strdup(buff); g_free(buff); return ret; } gchar *util_find_line_value(gchar *data, gchar *key, gchar delim) { gchar *ret = NULL; gchar **lines = g_strsplit(data, "\n", -1); gsize line_count = g_strv_length(lines); gsize i = 0; for (i = 0; i < line_count; i++) { gchar *line = lines[i]; gchar *value = g_utf8_strchr(line, -1, delim); if (!value) continue; *value = 0; value = g_strstrip(value+1); gchar *lkey = g_strstrip(line); if (SEQ(lkey, key) ) { ret = g_strdup(value); } } g_strfreev(lines); return ret; } hardinfo2-hardinfo2-1331e88/deps/uber-graph/000077500000000000000000000000001474767047500205325ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/deps/uber-graph/README000066400000000000000000000027411474767047500214160ustar00rootroot00000000000000This is Christian Hergert's "Uber-Graph" after commit d31c8014d8cc9f293dfecfcb4bd6a7bf4d61c0be. https://gitlab.gnome.org/chergert/uber-graph File headers give LGPL2 as the license. Original README follows: Some of this code is good. Some of this code is very bad. It is a prototype, nothing more, nothing less. Particularly bad/nasty/unreadable code is in main.c. It is also Linux specific. UberGraph - A realtime graph similar to that found in Gnome System Monitor. However, it is much faster and smoother. It runs at a higher framerate with less X bandwidth. It uses multiple pixmaps on the server-side and shifts data between them to lower the X bandwidth. New data is rendered and clipped so that the transfer is small. If frame movement is < 1 pixel, the framerate is dynamically reduced. UberHeatMap - This is going to eventually be similar to UberGraph but as a heat map. It's not very far yet, however. GRing - A small circular buffer meant for values in the realtime graphs. This is most definitely not meant to be used as a byte buffer, so don't use it as such. Example: GRing *ring = g_ring_sized_new(sizeof(gdouble), 60, NULL); or static void free_array_func (gpointer data) { GArray **ar = data; g_array_unref(*ar); } GRing *ring = g_ring_sized_new(sizeof(GArray*), 60, free_array_func); hardinfo2-hardinfo2-1331e88/deps/uber-graph/g-ring.c000066400000000000000000000130141474767047500220600ustar00rootroot00000000000000/* g-ring.c * * Copyright (C) 2010 Christian Hergert * * This file is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include "g-ring.h" #ifndef g_malloc0_n #define g_malloc0_n(x,y) g_malloc0((gsize)x * y) #endif #define get_element(r,i) ((r)->data + ((r)->elt_size * i)) typedef struct _GRingImpl GRingImpl; struct _GRingImpl { guint8 *data; /* Pointer to real data. */ guint len; /* Length of data allocation. */ guint pos; /* Position in ring. */ guint elt_size; /* Size of each element. */ gboolean looped; /* Have we wrapped around at least once. */ GDestroyNotify destroy; /* Destroy element callback. */ volatile gint ref_count; /* Reference count. */ }; /** * g_ring_sized_new: * @element_size: (in): The size per element. * @reserved_size: (in): The number of elements to allocate. * @element_destroy: (in): Notification called when removing an element. * * Creates a new instance of #GRing with the given number of elements. * * Returns: A new #GRing. * Side effects: None. */ GRing* g_ring_sized_new (guint element_size, guint reserved_size, GDestroyNotify element_destroy) { GRingImpl *ring_impl; ring_impl = g_slice_new0(GRingImpl); ring_impl->elt_size = element_size; ring_impl->len = reserved_size; ring_impl->data = g_malloc0_n(reserved_size, element_size); ring_impl->destroy = element_destroy; ring_impl->ref_count = 1; return (GRing *)ring_impl; } /** * g_ring_append_vals: * @ring: (in): A #GRing. * @data: (in): A pointer to the array of values. * @len: (in): The number of values. * * Appends @len values located at @data. * * Returns: None. * Side effects: None. */ void g_ring_append_vals (GRing *ring, gconstpointer data, guint len) { GRingImpl *ring_impl = (GRingImpl *)ring; gpointer idx; gint x; guint i; g_return_if_fail(ring_impl != NULL); for (i = 0; i < len; i++) { x = (int)ring->pos - i; if (x < 0) x += ring->len; idx = ring->data + (ring_impl->elt_size * x); if (ring_impl->destroy && ring_impl->looped == TRUE) { ring_impl->destroy(idx); } memcpy(idx, data, ring_impl->elt_size); ring->pos++; if (ring->pos >= ring->len) { ring_impl->looped = TRUE; } ring->pos %= ring->len; data += ring_impl->elt_size; } } /** * g_ring_foreach: * @ring: (in): A #GRing. * @func: (in): A #GFunc to call for each element. * @user_data: (in): user data for @func. * * Calls @func for every item in the #GRing starting from the most recently * inserted element to the least recently inserted. * * Returns: None. * Side effects: None. */ void g_ring_foreach (GRing *ring, GFunc func, gpointer user_data) { GRingImpl *ring_impl = (GRingImpl *)ring; gint i; g_return_if_fail(ring_impl != NULL); g_return_if_fail(func != NULL); for (i = ring_impl->pos - 1; i >= 0; i--) { func(get_element(ring_impl, i), user_data); } for (i = ring->len - 1; i >= (int)ring_impl->pos; i--) { func(get_element(ring_impl, i), user_data); } } /** * g_ring_destroy: * @ring: (in): A #GRing. * * Cleans up after a #GRing that is no longer in use. * * Returns: None. * Side effects: None. */ void g_ring_destroy (GRing *ring) { GRingImpl *ring_impl = (GRingImpl *)ring; g_return_if_fail(ring != NULL); g_return_if_fail(ring_impl->ref_count == 0); g_free(ring_impl->data); g_slice_free(GRingImpl, ring_impl); } /** * g_ring_ref: * @ring: (in): A #GRing. * * Atomically increments the reference count of @ring by one. * * Returns: The @ring pointer. * Side effects: None. */ GRing* g_ring_ref (GRing *ring) { GRingImpl *ring_impl = (GRingImpl *)ring; g_return_val_if_fail(ring != NULL, NULL); g_return_val_if_fail(ring_impl->ref_count > 0, NULL); g_atomic_int_inc(&ring_impl->ref_count); return ring; } /** * g_ring_unref: * @ring: (in): A #GRing. * * Atomically decrements the reference count of @ring by one. When the * reference count reaches zero, the structure is freed. * * Returns: None. * Side effects: None. */ void g_ring_unref (GRing *ring) { GRingImpl *ring_impl = (GRingImpl *)ring; g_return_if_fail(ring != NULL); g_return_if_fail(ring_impl->ref_count > 0); if (g_atomic_int_dec_and_test(&ring_impl->ref_count)) { g_ring_destroy(ring); } } /** * g_ring_get_type: * * Retrieves the #GType identifier for #GRing. * * Returns: The #GType for #GRing. * Side effects: The type is registered on first call. */ GType g_ring_get_type (void) { static gsize initialized = FALSE; static GType type_id = 0; if (g_once_init_enter(&initialized)) { type_id = g_boxed_type_register_static("GRing", (GBoxedCopyFunc)g_ring_ref, (GBoxedFreeFunc)g_ring_unref); g_once_init_leave(&initialized, TRUE); } return type_id; } hardinfo2-hardinfo2-1331e88/deps/uber-graph/g-ring.h000066400000000000000000000051351474767047500220720ustar00rootroot00000000000000/* g-ring.h * * Copyright (C) 2010 Christian Hergert * * This file is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef __G_RING_H__ #define __G_RING_H__ #include G_BEGIN_DECLS /** * g_ring_append_val: * @ring: A #GRing. * @val: A value to append to the #GRing. * * Appends a value to the ring buffer. @val must be a variable as it is * referenced to. * * Returns: None. * Side effects: None. */ #define g_ring_append_val(ring, val) g_ring_append_vals(ring, &(val), 1) /** * g_ring_get_index: * @ring: A #GRing. * @type: The type to extract. * @i: The index within the #GRing relative to the current position. * * Retrieves the value at the given index from the #GRing. The value * is cast to @type. You may retrieve a pointer to the value within the * array by using &. * * [[ * gdouble *v = &g_ring_get_index(ring, gdouble, 0); * gdouble v = g_ring_get_index(ring, gdouble, 0); * ]] * * Returns: The value at the given index. * Side effects: None. */ #define g_ring_get_index(ring, type, i) \ (((type*)(ring)->data)[(((gint)(ring)->pos - 1 - (i)) >= 0) ? \ ((ring)->pos - 1 - (i)) : \ ((ring)->len + ((ring)->pos - 1 - (i)))]) typedef struct { guint8 *data; guint len; guint pos; } GRing; GType g_ring_get_type (void) G_GNUC_CONST; GRing* g_ring_sized_new (guint element_size, guint reserved_size, GDestroyNotify element_destroy); void g_ring_append_vals (GRing *ring, gconstpointer data, guint len); void g_ring_foreach (GRing *ring, GFunc func, gpointer user_data); GRing* g_ring_ref (GRing *ring); void g_ring_unref (GRing *ring); G_END_DECLS #endif /* __G_RING_H__ */ hardinfo2-hardinfo2-1331e88/deps/uber-graph/uber-frame-source.c000066400000000000000000000124621474767047500242260ustar00rootroot00000000000000/* * Clutter. * * An OpenGL based 'interactive canvas' library. * * Authored By Neil Roberts * * Copyright (C) 2008 OpenedHand * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library. If not, see . * * */ /* Modified by Christian Hergert for use in Uber Graph. */ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include "uber-frame-source.h" #include "uber-timeout-interval.h" typedef struct _UberFrameSource UberFrameSource; struct _UberFrameSource { GSource source; UberTimeoutInterval timeout; }; static gboolean uber_frame_source_prepare (GSource *source, gint *timeout); static gboolean uber_frame_source_check (GSource *source); static gboolean uber_frame_source_dispatch (GSource *source, GSourceFunc callback, gpointer user_data); static GSourceFuncs uber_frame_source_funcs = { uber_frame_source_prepare, uber_frame_source_check, uber_frame_source_dispatch, NULL }; /** * uber_frame_source_add_full: * @priority: the priority of the frame source. Typically this will be in the * range between %G_PRIORITY_DEFAULT and %G_PRIORITY_HIGH. * @fps: the number of times per second to call the function * @func: function to call * @data: data to pass to the function * @notify: function to call when the timeout source is removed * * Sets a function to be called at regular intervals with the given * priority. The function is called repeatedly until it returns * %FALSE, at which point the timeout is automatically destroyed and * the function will not be called again. The @notify function is * called when the timeout is destroyed. The first call to the * function will be at the end of the first @interval. * * This function is similar to g_timeout_add_full() except that it * will try to compensate for delays. For example, if @func takes half * the interval time to execute then the function will be called again * half the interval time after it finished. In contrast * g_timeout_add_full() would not fire until a full interval after the * function completes so the delay between calls would be 1.0 / @fps * * 1.5. This function does not however try to invoke the function * multiple times to catch up missing frames if @func takes more than * @interval ms to execute. * * Return value: the ID (greater than 0) of the event source. * * Since: 0.8 */ guint uber_frame_source_add_full (gint priority, guint fps, GSourceFunc func, gpointer data, GDestroyNotify notify) { guint ret; GSource *source = g_source_new (&uber_frame_source_funcs, sizeof (UberFrameSource)); UberFrameSource *frame_source = (UberFrameSource *) source; _uber_timeout_interval_init (&frame_source->timeout, fps); if (priority != G_PRIORITY_DEFAULT) g_source_set_priority (source, priority); #if GLIB_CHECK_VERSION (2, 25, 8) g_source_set_name (source, "Uber frame timeout"); #endif g_source_set_callback (source, func, data, notify); ret = g_source_attach (source, NULL); g_source_unref (source); return ret; } /** * uber_frame_source_add: * @fps: the number of times per second to call the function * @func: function to call * @data: data to pass to the function * * Simple wrapper around uber_frame_source_add_full(). * * Return value: the ID (greater than 0) of the event source. * * Since: 0.8 */ guint uber_frame_source_add (guint fps, GSourceFunc func, gpointer data) { return uber_frame_source_add_full (G_PRIORITY_DEFAULT, fps, func, data, NULL); } static gboolean uber_frame_source_prepare (GSource *source, gint *delay) { UberFrameSource *frame_source = (UberFrameSource *) source; gint64 current_time; #if GLIB_CHECK_VERSION (2, 27, 3) current_time = g_source_get_time (source) / 1000; #else { GTimeVal source_time; g_source_get_current_time (source, &source_time); current_time = source_time.tv_sec * 1000 + source_time.tv_usec / 1000; } #endif return _uber_timeout_interval_prepare (current_time, &frame_source->timeout, delay); } static gboolean uber_frame_source_check (GSource *source) { return uber_frame_source_prepare (source, NULL); } static gboolean uber_frame_source_dispatch (GSource *source, GSourceFunc callback, gpointer user_data) { UberFrameSource *frame_source = (UberFrameSource *) source; return _uber_timeout_interval_dispatch (&frame_source->timeout, callback, user_data); } hardinfo2-hardinfo2-1331e88/deps/uber-graph/uber-frame-source.h000066400000000000000000000023621474767047500242310ustar00rootroot00000000000000/* * Clutter. * * An OpenGL based 'interactive canvas' library. * * Authored By Matthew Allum * * Copyright (C) 2008 OpenedHand * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library. If not, see . */ #ifndef __UBER_FRAME_SOURCE_H__ #define __UBER_FRAME_SOURCE_H__ #include G_BEGIN_DECLS guint uber_frame_source_add (guint fps, GSourceFunc func, gpointer data); guint uber_frame_source_add_full (gint priority, guint fps, GSourceFunc func, gpointer data, GDestroyNotify notify); G_END_DECLS #endif /* __UBER_FRAME_SOURCE_H__ */ hardinfo2-hardinfo2-1331e88/deps/uber-graph/uber-graph.c000066400000000000000000001467111474767047500227440ustar00rootroot00000000000000/* uber-graph.c * * Copyright (C) 2010 Christian Hergert * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include #include #include #include #include "uber-graph.h" #include "uber-scale.h" #include "uber-frame-source.h" #define WIDGET_CLASS (GTK_WIDGET_CLASS(uber_graph_parent_class)) #define RECT_RIGHT(r) ((r).x + (r).width) #define RECT_BOTTOM(r) ((r).y + (r).height) #define UNSET_SURFACE(p) \ G_STMT_START { \ if (p) { \ cairo_surface_destroy (p); \ p = NULL; \ } \ } G_STMT_END #define CLEAR_CAIRO(c, a) \ G_STMT_START { \ cairo_save(c); \ cairo_rectangle(c, 0, 0, a.width, a.height); \ cairo_set_operator(c, CAIRO_OPERATOR_CLEAR); \ cairo_fill(c); \ cairo_restore(c); \ } G_STMT_END /** * SECTION:uber-graph.h * @title: UberGraph * @short_description: Graphing of realtime data. * * #UberGraph is an abstract base class for building realtime graphs. It * handles scrolling the graph based on the required time intervals and tries * to render as little data as possible. * * Subclasses are responsible for acquiring data when #UberGraph notifies them * of their next data sample. Additionally, there are two rendering methods. * UberGraph::render is a render of the full scene. UberGraph::render_fast is * a rendering of just a new data sample. Ideally, UberGraph::render_fast is * going to be called. * * #UberGraph uses a #cairo_surface_t as a ring buffer to store the contents of the * graph. Upon destructive changes to the widget such as allocation changed * or a new #GtkStyle set, a full rendering of the graph will be required. */ struct _UberGraphPrivate { cairo_surface_t *fg_surface; cairo_surface_t *bg_surface; GdkRectangle content_rect; /* Content area rectangle. */ GdkRectangle nonvis_rect; /* Non-visible drawing area larger than * content rect. Used to draw over larger * area so we can scroll and not fall out * of view. */ UberGraphFormat format; /* Data type format. */ gboolean paused; /* Is the graph paused. */ gboolean have_rgba; /* Do we support 32-bit RGBA colormaps. */ gint x_slots; /* Number of data points on x axis. */ gint fps; /* Desired frames per second. */ gint fps_real; /* Milleseconds between FPS callbacks. */ gfloat fps_each; /* How far to move in each FPS tick. */ guint fps_handler; /* Timeout for moving the content. */ gfloat dps; /* Desired data points per second. */ gint dps_slot; /* Which slot in the surface buffer. */ gfloat dps_each; /* How many pixels between data points. */ GTimeVal dps_tv; /* Timeval of last data point. */ guint dps_handler; /* Timeout for getting new data. */ guint dps_downscale; /* Count since last downscale. */ gboolean fg_dirty; /* Does the foreground need to be redrawn. */ gboolean bg_dirty; /* Does the background need to be redrawn. */ guint tick_len; /* How long should axis-ticks be. */ gboolean show_xlines; /* Show X axis lines. */ gboolean show_xlabels; /* Show X axis labels. */ gboolean show_ylines; /* Show Y axis lines. */ gboolean full_draw; /* Do we need to redraw all foreground content. * If false, draws will try to only add new * content to the back buffer. */ GtkWidget *labels; /* Container for graph labels. */ GtkWidget *align; /* Alignment for labels. */ gint fps_count; /* Track actual FPS. */ }; G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE(UberGraph, uber_graph, GTK_TYPE_DRAWING_AREA) static gboolean show_fps = FALSE; enum { PROP_0, PROP_FORMAT, }; /** * uber_graph_new: * * Creates a new instance of #UberGraph. * * Returns: the newly created instance of #UberGraph. * Side effects: None. */ GtkWidget* uber_graph_new (void) { UberGraph *graph; graph = g_object_new(UBER_TYPE_GRAPH, NULL); return GTK_WIDGET(graph); } /** * uber_graph_fps_timeout: * @graph: A #UberGraph. * * XXX * * Returns: %TRUE always. * Side effects: None. */ static gboolean uber_graph_fps_timeout (UberGraph *graph) /* IN */ { UberGraphPrivate *priv; g_return_val_if_fail(UBER_IS_GRAPH(graph), FALSE); priv = graph->priv; gtk_widget_queue_draw_area(GTK_WIDGET(graph), priv->content_rect.x, priv->content_rect.y, priv->content_rect.width, priv->content_rect.height); return TRUE; } /** * uber_graph_get_content_area: * @graph: A #UberGraph. * * Retrieves the content area of the graph. * * Returns: None. * Side effects: None. */ void uber_graph_get_content_area (UberGraph *graph, /* IN */ GdkRectangle *rect) /* OUT */ { UberGraphPrivate *priv; g_return_if_fail(UBER_IS_GRAPH(graph)); g_return_if_fail(rect != NULL); priv = graph->priv; *rect = priv->content_rect; } /** * uber_graph_get_show_xlines: * @graph: A #UberGraph. * * Retrieves if the X grid lines should be shown. * * Returns: None. * Side effects: None. */ gboolean uber_graph_get_show_xlines (UberGraph *graph) /* IN */ { UberGraphPrivate *priv; g_return_val_if_fail(UBER_IS_GRAPH(graph), FALSE); priv = graph->priv; return priv->show_xlines; } /** * uber_graph_set_show_xlines: * @graph: A #UberGraph. * @show_xlines: Show x lines. * * Sets if the x lines should be shown. * * Returns: None. * Side effects: None. */ void uber_graph_set_show_xlines (UberGraph *graph, /* IN */ gboolean show_xlines) /* IN */ { UberGraphPrivate *priv; g_return_if_fail(UBER_IS_GRAPH(graph)); priv = graph->priv; priv->show_xlines = show_xlines; priv->bg_dirty = TRUE; gtk_widget_queue_draw(GTK_WIDGET(graph)); } /** * uber_graph_get_show_ylines: * @graph: A #UberGraph. * * Retrieves if the X grid lines should be shown. * * Returns: None. * Side effects: None. */ gboolean uber_graph_get_show_ylines (UberGraph *graph) /* IN */ { UberGraphPrivate *priv; g_return_val_if_fail(UBER_IS_GRAPH(graph), FALSE); priv = graph->priv; return priv->show_ylines; } /** * uber_graph_set_show_ylines: * @graph: A #UberGraph. * @show_ylines: Show x lines. * * Sets if the x lines should be shown. * * Returns: None. * Side effects: None. */ void uber_graph_set_show_ylines (UberGraph *graph, /* IN */ gboolean show_ylines) /* IN */ { UberGraphPrivate *priv; g_return_if_fail(UBER_IS_GRAPH(graph)); priv = graph->priv; priv->show_ylines = show_ylines; priv->bg_dirty = TRUE; gtk_widget_queue_draw(GTK_WIDGET(graph)); } /** * uber_graph_get_labels: * @graph: A #UberGraph. * * XXX * * Returns: None. * Side effects: None. */ GtkWidget* uber_graph_get_labels (UberGraph *graph) /* IN */ { UberGraphPrivate *priv; g_return_val_if_fail(UBER_IS_GRAPH(graph), NULL); priv = graph->priv; return priv->align; } /** * uber_graph_scale_changed: * @graph: A #UberGraph. * * XXX * * Returns: None. * Side effects: None. */ void uber_graph_scale_changed (UberGraph *graph) /* IN */ { UberGraphPrivate *priv; GtkAllocation alloc; GdkRectangle rect; g_return_if_fail(UBER_IS_GRAPH(graph)); priv = graph->priv; if (!priv->paused) { priv->fg_dirty = TRUE; priv->bg_dirty = TRUE; priv->full_draw = TRUE; gtk_widget_get_allocation(GTK_WIDGET(graph), &alloc); rect.x = 0; rect.y = 0; rect.width = alloc.width; rect.height = alloc.height; gdk_window_invalidate_rect(gtk_widget_get_window(GTK_WIDGET(graph)), &rect, TRUE); } } /** * uber_graph_get_next_data: * @graph: A #UberGraph. * * XXX * * Returns: None. * Side effects: None. */ static inline gboolean uber_graph_get_next_data (UberGraph *graph) /* IN */ { UberGraphPrivate *priv; gboolean ret = TRUE; g_return_val_if_fail(UBER_IS_GRAPH(graph), FALSE); /* * Get the current time for this data point. This is used to calculate * the proper offset in the FPS callback. */ priv = graph->priv; g_get_current_time(&priv->dps_tv); /* * Notify the subclass to retrieve the data point. */ if (UBER_GRAPH_GET_CLASS(graph)->get_next_data) { ret = UBER_GRAPH_GET_CLASS(graph)->get_next_data(graph); } return ret; } /** * uber_graph_init_texture: * @graph: A #UberGraph. * * XXX * * Returns: None. * Side effects: None. */ static void uber_graph_init_texture (UberGraph *graph) /* IN */ { UberGraphPrivate *priv; GtkAllocation alloc; GdkWindow *window; cairo_t *cr; gint width; g_return_if_fail(UBER_IS_GRAPH(graph)); priv = graph->priv; gtk_widget_get_allocation(GTK_WIDGET(graph), &alloc); window = gtk_widget_get_window(GTK_WIDGET(graph)); /* * Get drawable to base surface upon. */ if (!window) { g_critical("%s() called before GdkWindow is allocated.", G_STRFUNC); return; } /* * Initialize foreground and background surface. */ width = MAX(priv->nonvis_rect.x + priv->nonvis_rect.width, alloc.width); priv->fg_surface = gdk_window_create_similar_surface(window, CAIRO_CONTENT_COLOR_ALPHA, width, alloc.height); /* * Clear foreground contents. */ cr = cairo_create(priv->fg_surface); CLEAR_CAIRO(cr, alloc); cairo_destroy(cr); } /** * uber_graph_init_bg: * @graph: A #UberGraph. * * XXX * * Returns: None. * Side effects: None. */ static void uber_graph_init_bg (UberGraph *graph) /* IN */ { UberGraphPrivate *priv; GtkAllocation alloc; GdkWindow *window; cairo_t *cr; g_return_if_fail(UBER_IS_GRAPH(graph)); priv = graph->priv; gtk_widget_get_allocation(GTK_WIDGET(graph), &alloc); window = gtk_widget_get_window(GTK_WIDGET(graph)); /* * Get drawable for surface. */ if (!window) { g_critical("%s() called before GdkWindow is allocated.", G_STRFUNC); return; } /* * Create the server-side surface. */ priv->bg_surface = gdk_window_create_similar_surface(window, CAIRO_CONTENT_COLOR_ALPHA, alloc.width, alloc.height); /* * Clear background contents. */ cr = cairo_create(priv->bg_surface); CLEAR_CAIRO(cr, alloc); cairo_destroy(cr); } /** * uber_graph_calculate_rects: * @graph: A #UberGraph. * * XXX * * Returns: None. * Side effects: None. */ static void uber_graph_calculate_rects (UberGraph *graph) /* IN */ { UberGraphPrivate *priv; GtkAllocation alloc; PangoLayout *layout; PangoFontDescription *font_desc; GdkWindow *window; gint pango_width; gint pango_height; cairo_t *cr; g_return_if_fail(UBER_IS_GRAPH(graph)); priv = graph->priv; gtk_widget_get_allocation(GTK_WIDGET(graph), &alloc); window = gtk_widget_get_window(GTK_WIDGET(graph)); /* * We can't calculate rectangles before we have a GdkWindow. */ if (!window) { return; } /* * Determine the pixels required for labels. */ cr = gdk_cairo_create(window); layout = pango_cairo_create_layout(cr); font_desc = pango_font_description_new(); pango_font_description_set_family_static(font_desc, "Monospace"); pango_font_description_set_size(font_desc, 6 * PANGO_SCALE); pango_layout_set_font_description(layout, font_desc); pango_layout_set_text(layout, "XXXXXXXXXX", -1); pango_layout_get_pixel_size(layout, &pango_width, &pango_height); pango_font_description_free(font_desc); g_object_unref(layout); cairo_destroy(cr); /* * Calculate content area rectangle. */ priv->content_rect.x = priv->tick_len + pango_width + 1.5; priv->content_rect.y = (pango_height / 2.) + 1.5; priv->content_rect.width = alloc.width - priv->content_rect.x - 3.0; priv->content_rect.height = alloc.height - priv->tick_len - pango_height - (pango_height / 2.) - 3.0; if (!priv->show_xlabels) { priv->content_rect.height += pango_height; } /* * Adjust label offset. */ /* * Calculate FPS/DPS adjustments. */ priv->dps_each = ceil((gfloat)priv->content_rect.width / (gfloat)(priv->x_slots - 1)); priv->fps_each = priv->dps_each / ((gfloat)priv->fps / (gfloat)priv->dps); /* * XXX: Small hack to make things a bit smoother at small scales. */ if (priv->fps_each < .5) { priv->fps_each = 1; priv->fps_real = (1000. / priv->dps_each) / 2.; } else { priv->fps_real = 1000. / priv->fps; } /* * Update FPS callback. */ if (priv->fps_handler) { g_source_remove(priv->fps_handler); priv->fps_handler = uber_frame_source_add(priv->fps, (GSourceFunc)uber_graph_fps_timeout, graph); } /* * Calculate the non-visible area that drawing should happen within. */ priv->nonvis_rect = priv->content_rect; priv->nonvis_rect.width = priv->dps_each * priv->x_slots; /* * Update positioning for label alignment. */ gtk_widget_set_margin_top(GTK_WIDGET(priv->align), 6); gtk_widget_set_margin_bottom(GTK_WIDGET(priv->align), 6); gtk_widget_set_margin_start(GTK_WIDGET(priv->align), priv->content_rect.x); gtk_widget_set_margin_end(GTK_WIDGET(priv->align), 0); } /** * uber_graph_get_show_xlabels: * @graph: A #UberGraph. * * Retrieves if the X grid labels should be shown. * * Returns: None. * Side effects: None. */ gboolean uber_graph_get_show_xlabels (UberGraph *graph) /* IN */ { UberGraphPrivate *priv; g_return_val_if_fail(UBER_IS_GRAPH(graph), FALSE); priv = graph->priv; return priv->show_xlabels; } /** * uber_graph_set_show_xlabels: * @graph: A #UberGraph. * @show_xlabels: Show x labels. * * Sets if the x labels should be shown. * * Returns: None. * Side effects: None. */ void uber_graph_set_show_xlabels (UberGraph *graph, /* IN */ gboolean show_xlabels) /* IN */ { UberGraphPrivate *priv; g_return_if_fail(UBER_IS_GRAPH(graph)); priv = graph->priv; priv->show_xlabels = show_xlabels; priv->bg_dirty = TRUE; uber_graph_calculate_rects(graph); gtk_widget_queue_draw(GTK_WIDGET(graph)); } /** * uber_graph_dps_timeout: * @graph: A #UberGraph. * * XXX * * Returns: %TRUE always. * Side effects: None. */ static gboolean uber_graph_dps_timeout (UberGraph *graph) /* IN */ { UberGraphPrivate *priv; g_return_val_if_fail(UBER_IS_GRAPH(graph), FALSE); priv = graph->priv; if (!uber_graph_get_next_data(graph)) { /* * XXX: How should we handle failed data retrieval. */ } if (G_UNLIKELY(show_fps)) { g_print("UberGraph[%p] %02d FPS\n", graph, priv->fps_count); priv->fps_count = 0; } /* * Make sure the content is re-rendered. */ if (!priv->paused) { priv->fg_dirty = TRUE; /* * We do not queue a draw here since the next FPS callback will happen * when it is the right time to show the frame. */ } /* * Try to downscale the graph. We do this whether or not we are paused * as redrawing is deferred if we are in a paused state. */ priv->dps_downscale++; if (priv->dps_downscale >= 5) { if (UBER_GRAPH_GET_CLASS(graph)->downscale) { if (UBER_GRAPH_GET_CLASS(graph)->downscale(graph)) { if (!priv->paused) { uber_graph_redraw(graph); } } } priv->dps_downscale = 0; } return TRUE; } /** * uber_graph_register_dps_handler: * @graph: A #UberGraph. * * XXX * * Returns: None. * Side effects: None. */ static void uber_graph_register_dps_handler (UberGraph *graph) /* IN */ { UberGraphPrivate *priv; guint dps_freq; gboolean do_now = TRUE; g_return_if_fail(UBER_IS_GRAPH(graph)); priv = graph->priv; if (priv->dps_handler) { g_source_remove(priv->dps_handler); do_now = FALSE; } /* * Calculate the update frequency. */ dps_freq = 1000 / priv->dps; /* * Install the data handler. */ priv->dps_handler = g_timeout_add(dps_freq, (GSourceFunc)uber_graph_dps_timeout, graph); /* * Call immediately. */ if (do_now) { uber_graph_dps_timeout(graph); } } /** * uber_graph_register_fps_handler: * @graph: A #UberGraph. * * XXX * * Returns: None. * Side effects: None. */ static void uber_graph_register_fps_handler (UberGraph *graph) /* IN */ { UberGraphPrivate *priv; g_return_if_fail(UBER_IS_GRAPH(graph)); priv = graph->priv; /* * Remove any existing FPS handler. */ if (priv->fps_handler) { g_source_remove(priv->fps_handler); } /* * Install the FPS timeout. */ priv->fps_handler = uber_frame_source_add(priv->fps, (GSourceFunc)uber_graph_fps_timeout, graph); } /** * uber_graph_set_dps: * @graph: A #UberGraph. * * XXX * * Returns: None. * Side effects: None. */ void uber_graph_set_dps (UberGraph *graph, /* IN */ gfloat dps) /* IN */ { UberGraphPrivate *priv; g_return_if_fail(UBER_IS_GRAPH(graph)); priv = graph->priv; priv->dps = dps; /* * TODO: Does this belong somewhere else? */ if (UBER_GRAPH_GET_CLASS(graph)->set_stride) { UBER_GRAPH_GET_CLASS(graph)->set_stride(graph, priv->x_slots); } /* * Recalculate frame rates and timeouts. */ uber_graph_calculate_rects(graph); uber_graph_register_dps_handler(graph); uber_graph_register_fps_handler(graph); } /** * uber_graph_set_fps: * @graph: A #UberGraph. * * XXX * * Returns: None. * Side effects: None. */ void uber_graph_set_fps (UberGraph *graph, /* IN */ guint fps) /* IN */ { UberGraphPrivate *priv; g_return_if_fail(UBER_IS_GRAPH(graph)); priv = graph->priv; priv->fps = fps; uber_graph_register_fps_handler(graph); } /** * uber_graph_realize: * @widget: A #GtkWidget. * * XXX * * Returns: None. * Side effects: None. */ static void uber_graph_realize (GtkWidget *widget) /* IN */ { UberGraph *graph; UberGraphPrivate *priv; g_return_if_fail(UBER_IS_GRAPH(widget)); graph = UBER_GRAPH(widget); priv = graph->priv; WIDGET_CLASS->realize(widget); /* * Calculate new layout based on allocation. */ uber_graph_calculate_rects(graph); /* * Re-initialize textures for updated sizes. */ UNSET_SURFACE(priv->bg_surface); UNSET_SURFACE(priv->fg_surface); uber_graph_init_bg(graph); uber_graph_init_texture(graph); /* * Notify subclass of current data stride (points per graph). */ if (UBER_GRAPH_GET_CLASS(widget)->set_stride) { UBER_GRAPH_GET_CLASS(widget)->set_stride(UBER_GRAPH(widget), priv->x_slots); } /* * Install the data collector. */ uber_graph_register_dps_handler(graph); } /** * uber_graph_unrealize: * @widget: A #GtkWidget. * * XXX * * Returns: None. * Side effects: None. */ static void uber_graph_unrealize (GtkWidget *widget) /* IN */ { UberGraph *graph; UberGraphPrivate *priv; g_return_if_fail(UBER_IS_GRAPH(widget)); graph = UBER_GRAPH(widget); priv = graph->priv; /* * Unregister any data acquisition handlers. */ if (priv->dps_handler) { g_source_remove(priv->dps_handler); priv->dps_handler = 0; } /* * Destroy textures. */ UNSET_SURFACE(priv->bg_surface); UNSET_SURFACE(priv->fg_surface); } /** * uber_graph_screen_changed: * @widget: A #GtkWidget. * * XXX * * Returns: None. * Side effects: None. */ static void uber_graph_screen_changed (GtkWidget *widget, /* IN */ GdkScreen *old_screen) /* IN */ { UberGraphPrivate *priv; GdkScreen *screen; GdkVisual *visual; g_return_if_fail(UBER_IS_GRAPH(widget)); screen = gtk_widget_get_screen (GTK_WIDGET (widget)); visual = gdk_screen_get_rgba_visual (screen); priv = UBER_GRAPH(widget)->priv; /* * Check if we have RGBA colormaps available. */ priv->have_rgba = visual != NULL; } /** * uber_graph_show: * @widget: A #GtkWidget. * * XXX * * Returns: None. * Side effects: None. */ static void uber_graph_show (GtkWidget *widget) /* IN */ { g_return_if_fail(UBER_IS_GRAPH(widget)); WIDGET_CLASS->show(widget); /* * Only run the FPS timeout when we are visible. */ uber_graph_register_fps_handler(UBER_GRAPH(widget)); } /** * uber_graph_hide: * @widget: A #GtkWIdget. * * XXX * * Returns: None. * Side effects: None. */ static void uber_graph_hide (GtkWidget *widget) /* IN */ { UberGraphPrivate *priv; g_return_if_fail(UBER_IS_GRAPH(widget)); priv = UBER_GRAPH(widget)->priv; /* * Disable the FPS timeout when we are not visible. */ if (priv->fps_handler) { g_source_remove(priv->fps_handler); priv->fps_handler = 0; } } static inline void uber_graph_get_pixmap_rect (UberGraph *graph, /* IN */ GdkRectangle *rect) /* OUT */ { UberGraphPrivate *priv; GtkAllocation alloc; g_return_if_fail(UBER_IS_GRAPH(graph)); priv = graph->priv; gtk_widget_get_allocation(GTK_WIDGET(graph), &alloc); rect->x = 0; rect->y = 0; rect->width = MAX(alloc.width, priv->nonvis_rect.x + priv->nonvis_rect.width); rect->height = alloc.height; } /** * uber_graph_render_fg: * @graph: A #UberGraph. * * XXX * * Returns: None. * Side effects: None. */ static void uber_graph_render_fg (UberGraph *graph) /* IN */ { UberGraphPrivate *priv; GtkAllocation alloc; GdkRectangle rect; cairo_t *cr; gfloat each; gfloat x_epoch; g_return_if_fail(UBER_IS_GRAPH(graph)); /* * Acquire resources. */ priv = graph->priv; gtk_widget_get_allocation(GTK_WIDGET(graph), &alloc); uber_graph_get_pixmap_rect(graph, &rect); cr = cairo_create(priv->fg_surface); /* * Render to texture if needed. */ if (priv->fg_dirty) { /* * Caclulate relative positionings for use in renderers. */ each = priv->content_rect.width / (gfloat)(priv->x_slots - 1); x_epoch = RECT_RIGHT(priv->nonvis_rect); /* * If we are in a fast draw, lets copy the content from the other * buffer at the next offset. */ if (!priv->full_draw && UBER_GRAPH_GET_CLASS(graph)->render_fast) { /* * Determine next rendering slot. */ rect.x = priv->content_rect.x + (priv->dps_each * priv->dps_slot); rect.width = priv->dps_each; rect.y = priv->content_rect.y; rect.height = priv->content_rect.height; priv->dps_slot = (priv->dps_slot + 1) % priv->x_slots; x_epoch = RECT_RIGHT(rect); /* * Clear content area. */ cairo_save(cr); cairo_set_operator(cr, CAIRO_OPERATOR_CLEAR); gdk_cairo_rectangle(cr, &rect); cairo_fill(cr); cairo_restore(cr); #if 0 /* * XXX: Draw line helper for debugging. */ cairo_save(cr); cairo_set_source_rgb(cr, .3, .3, .3); cairo_rectangle(cr, rect.x, rect.y + (rect.height / (gfloat)priv->x_slots * priv->dps_slot), rect.width, rect.height / priv->x_slots); cairo_fill(cr); cairo_restore(cr); #endif /* * Render new content clipped. */ cairo_save(cr); cairo_reset_clip(cr); gdk_cairo_rectangle(cr, &rect); cairo_clip(cr); /* * Determine area for this draw. */ UBER_GRAPH_GET_CLASS(graph)->render_fast(graph, cr, &rect, x_epoch, each + .5); cairo_restore(cr); } else { /* * Clear content area. */ cairo_save(cr); cairo_set_operator(cr, CAIRO_OPERATOR_CLEAR); gdk_cairo_rectangle(cr, &rect); cairo_fill(cr); cairo_restore(cr); /* * Draw the entire foreground. */ if (UBER_GRAPH_GET_CLASS(graph)->render) { priv->dps_slot = 0; cairo_save(cr); gdk_cairo_rectangle(cr, &priv->nonvis_rect); cairo_clip(cr); UBER_GRAPH_GET_CLASS(graph)->render(graph, cr, &priv->nonvis_rect, x_epoch, each); cairo_restore(cr); } } } /* * Foreground is no longer dirty. */ priv->fg_dirty = FALSE; priv->full_draw = FALSE; /* * Cleanup. */ cairo_destroy(cr); } /** * uber_graph_redraw: * @graph: A #UberGraph. * * XXX * * Returns: None. * Side effects: None. */ void uber_graph_redraw (UberGraph *graph) /* IN */ { UberGraphPrivate *priv; g_return_if_fail(UBER_IS_GRAPH(graph)); priv = graph->priv; priv->fg_dirty = TRUE; priv->bg_dirty = TRUE; priv->full_draw = TRUE; gtk_widget_queue_draw(GTK_WIDGET(graph)); } /** * uber_graph_get_yrange: * @graph: A #UberGraph. * * XXX * * Returns: None. * Side effects: None. */ static inline void uber_graph_get_yrange (UberGraph *graph, /* IN */ UberRange *range) /* OUT */ { g_return_if_fail(UBER_IS_GRAPH(graph)); g_return_if_fail(range != NULL); memset(range, 0, sizeof(*range)); if (UBER_GRAPH_GET_CLASS(graph)->get_yrange) { UBER_GRAPH_GET_CLASS(graph)->get_yrange(graph, range); } } /** * uber_graph_set_format: * @graph: A UberGraph. * * XXX * * Returns: None. * Side effects: None. */ void uber_graph_set_format (UberGraph *graph, /* IN */ UberGraphFormat format) /* IN */ { UberGraphPrivate *priv; g_return_if_fail(UBER_IS_GRAPH(graph)); priv = graph->priv; priv->format = format; priv->bg_dirty = TRUE; gtk_widget_queue_draw(GTK_WIDGET(graph)); } static void uber_graph_render_x_axis (UberGraph *graph, /* IN */ cairo_t *cr) /* IN */ { UberGraphPrivate *priv; const gdouble dashes[] = { 1.0, 2.0 }; PangoFontDescription *fd; PangoLayout *pl; GtkStyleContext *style; GdkRGBA fg_color; gfloat each; gfloat x; gfloat y; gfloat h; gchar text[16] = { 0 }; gint count; gint wi; gint hi; gint i; g_return_if_fail(UBER_IS_GRAPH(graph)); priv = graph->priv; style = gtk_widget_get_style_context(GTK_WIDGET(graph)); gtk_style_context_get_color(style, GTK_STATE_FLAG_NORMAL, &fg_color); count = priv->x_slots / 10; each = priv->content_rect.width / (gfloat)count; /* * Draw ticks. */ cairo_save(cr); pl = pango_cairo_create_layout(cr); fd = pango_font_description_new(); pango_font_description_set_family_static(fd, "Monospace"); pango_font_description_set_size(fd, 6 * PANGO_SCALE); pango_layout_set_font_description(pl, fd); gdk_cairo_set_source_rgba(cr, &fg_color); cairo_set_line_width(cr, 1.0); cairo_set_dash(cr, dashes, G_N_ELEMENTS(dashes), 0); for (i = 0; i <= count; i++) { x = RECT_RIGHT(priv->content_rect) - (gint)(i * each) + .5; if (priv->show_xlines && (i != 0 && i != count)) { y = priv->content_rect.y; h = priv->content_rect.height + priv->tick_len; } else { y = priv->content_rect.y + priv->content_rect.height; h = priv->tick_len; } if (i != 0 && i != count) { cairo_move_to(cr, x, y); cairo_line_to(cr, x, y + h); cairo_stroke(cr); } /* * Render the label. */ if (priv->show_xlabels) { g_snprintf(text, sizeof(text), "%d", i * 10); pango_layout_set_text(pl, text, -1); pango_layout_get_pixel_size(pl, &wi, &hi); if (i != 0 && i != count) { cairo_move_to(cr, x - (wi / 2), y + h); } else if (i == 0) { cairo_move_to(cr, RECT_RIGHT(priv->content_rect) - (wi / 2), RECT_BOTTOM(priv->content_rect) + priv->tick_len); } else if (i == count) { cairo_move_to(cr, priv->content_rect.x - (wi / 2), RECT_BOTTOM(priv->content_rect) + priv->tick_len); } pango_cairo_show_layout(cr, pl); } } g_object_unref(pl); pango_font_description_free(fd); cairo_restore(cr); } static void G_GNUC_PRINTF(6, 7) uber_graph_render_y_line (UberGraph *graph, /* IN */ cairo_t *cr, /* IN */ gint y, /* IN */ gboolean tick_only, /* IN */ gboolean no_label, /* IN */ const gchar *format, /* IN */ ...) /* IN */ { UberGraphPrivate *priv; const gdouble dashes[] = { 1.0, 2.0 }; PangoFontDescription *fd; PangoLayout *pl; GtkStyleContext *style; GdkRGBA fg_color; va_list args; gchar *text; gint width; gint height; gfloat real_y = y + .5; g_return_if_fail(UBER_IS_GRAPH(graph)); g_return_if_fail(cr != NULL); g_return_if_fail(format != NULL); priv = graph->priv; style = gtk_widget_get_style_context(GTK_WIDGET(graph)); gtk_style_context_get_color(style, GTK_STATE_FLAG_NORMAL, &fg_color); /* * Draw grid line. */ cairo_save(cr); cairo_set_dash(cr, dashes, G_N_ELEMENTS(dashes), 0); cairo_set_line_width(cr, 1.0); gdk_cairo_set_source_rgba(cr, &fg_color); cairo_move_to(cr, priv->content_rect.x - priv->tick_len, real_y); if (tick_only) { cairo_line_to(cr, priv->content_rect.x, real_y); } else { cairo_line_to(cr, RECT_RIGHT(priv->content_rect), real_y); } cairo_stroke(cr); cairo_restore(cr); /* * Show label. */ if (!no_label) { cairo_save(cr); gdk_cairo_set_source_rgba(cr, &fg_color); /* * Format text. */ va_start(args, format); text = g_strdup_vprintf(format, args); va_end(args); /* * Render pango layout. */ pl = pango_cairo_create_layout(cr); fd = pango_font_description_new(); pango_font_description_set_family_static(fd, "Monospace"); pango_font_description_set_size(fd, 6 * PANGO_SCALE); pango_layout_set_font_description(pl, fd); pango_layout_set_text(pl, text, -1); pango_layout_get_pixel_size(pl, &width, &height); cairo_move_to(cr, priv->content_rect.x - priv->tick_len - width - 3, real_y - height / 2); pango_cairo_show_layout(cr, pl); /* * Cleanup resources. */ g_free(text); pango_font_description_free(fd); g_object_unref(pl); cairo_restore(cr); } } static void uber_graph_render_y_axis_percent (UberGraph *graph, /* IN */ cairo_t *cr, /* IN */ UberRange *range, /* IN */ UberRange *pixel_range, /* IN */ gint n_lines) /* IN */ { static const gchar format[] = "%0.0f %%"; UberGraphPrivate *priv; gdouble value; gdouble y; gint i; g_return_if_fail(UBER_IS_GRAPH(graph)); g_return_if_fail(range != NULL); g_return_if_fail(pixel_range != NULL); g_return_if_fail(n_lines >= 0); g_return_if_fail(n_lines < 6); priv = graph->priv; /* * Render top and bottom lines. */ uber_graph_render_y_line(graph, cr, priv->content_rect.y - 1, TRUE, FALSE, format, 100.); uber_graph_render_y_line(graph, cr, RECT_BOTTOM(priv->content_rect), TRUE, FALSE, format, 0.); /* * Render lines between the edges. */ for (i = 1; i < n_lines; i++) { value = (n_lines - i) / (gfloat)n_lines; y = pixel_range->end - (pixel_range->range * value); value *= 100.; uber_graph_render_y_line(graph, cr, y, !priv->show_ylines, FALSE, format, value); } } /** * uber_graph_render_y_axis_direct: * @graph: A #UberGraph. * * XXX * * Returns: None. * Side effects: None. */ static void uber_graph_render_y_axis_direct (UberGraph *graph, /* IN */ cairo_t *cr, /* IN */ UberRange *range, /* IN */ UberRange *pixel_range, /* IN */ gint n_lines, /* IN */ gboolean kibi) /* IN */ { static const gchar format[] = "%0.1f%s"; const gchar *modifier = ""; UberGraphPrivate *priv; gdouble value; gdouble y; gint i; g_return_if_fail(UBER_IS_GRAPH(graph)); #define CONDENSE(v) \ G_STMT_START { \ if (kibi) { \ if ((v) >= 1073741824.) { \ (v) /= 1073741824.; \ modifier = " Gi"; \ } else if ((v) >= 1048576.) { \ (v) /= 1048576.; \ modifier = " Mi"; \ } else if ((v) >= 1024.) { \ (v) /= 1024.; \ modifier = " Ki"; \ } else { \ modifier = ""; \ } \ } else { \ if ((v) >= 1000000000.) { \ (v) /= 1000000000.; \ modifier = " G"; \ } else if ((v) >= 1000000.) { \ (v) /= 1000000.; \ modifier = " M"; \ } else if ((v) >= 1000.) { \ (v) /= 1000.; \ modifier = " K"; \ } else { \ modifier = ""; \ } \ } \ } G_STMT_END priv = graph->priv; /* * Render top and bottom lines. */ value = range->end; CONDENSE(value); uber_graph_render_y_line(graph, cr, priv->content_rect.y - 1, TRUE, FALSE, format, value, modifier); value = range->begin; CONDENSE(value); uber_graph_render_y_line(graph, cr, RECT_BOTTOM(priv->content_rect), TRUE, FALSE, format, value, modifier); /* * Render lines between the edges. */ for (i = 1; i < n_lines; i++) { y = value = range->range / (gfloat)(n_lines) * (gfloat)i; /* * TODO: Use proper scale. */ uber_scale_linear(range, pixel_range, &y, NULL); if (y == 0 || y == pixel_range->begin || y == pixel_range->end) { continue; } y = pixel_range->end - y; CONDENSE(value); uber_graph_render_y_line(graph, cr, y, !priv->show_ylines, (range->begin == range->end), format, value, modifier); } } /** * uber_graph_render_y_axis: * @graph: A #UberGraph. * * Render the Y axis grid lines and labels. * * Returns: None. * Side effects: None. */ static void uber_graph_render_y_axis (UberGraph *graph, /* IN */ cairo_t *cr) /* IN */ { UberGraphPrivate *priv; UberRange pixel_range; UberRange range; gint n_lines; g_return_if_fail(UBER_IS_GRAPH(graph)); priv = graph->priv; /* * Calculate ranges. */ uber_graph_get_yrange(graph, &range); pixel_range.begin = priv->content_rect.y; pixel_range.end = priv->content_rect.y + priv->content_rect.height; pixel_range.range = pixel_range.end - pixel_range.begin; /* * Render grid lines for given format. */ n_lines = MIN(priv->content_rect.height / 25, 5); switch (priv->format) { case UBER_GRAPH_FORMAT_PERCENT: uber_graph_render_y_axis_percent(graph, cr, &range, &pixel_range, n_lines); break; case UBER_GRAPH_FORMAT_DIRECT: uber_graph_render_y_axis_direct(graph, cr, &range, &pixel_range, n_lines, FALSE); break; case UBER_GRAPH_FORMAT_DIRECT1024: uber_graph_render_y_axis_direct(graph, cr, &range, &pixel_range, n_lines, TRUE); break; default: g_assert_not_reached(); } } /** * uber_graph_render_bg: * @graph: A #UberGraph. * * XXX * * Returns: None. * Side effects: None. */ static void uber_graph_render_bg (UberGraph *graph) /* IN */ { const gdouble dashes[] = { 1.0, 2.0 }; UberGraphPrivate *priv; GtkAllocation alloc; GtkStyleContext *style; GdkRGBA fg_color; GdkRGBA light_color; cairo_t *cr; g_return_if_fail(UBER_IS_GRAPH(graph)); /* * Acquire resources. */ priv = graph->priv; gtk_widget_get_allocation(GTK_WIDGET(graph), &alloc); style = gtk_widget_get_style_context(GTK_WIDGET(graph)); gtk_style_context_get_color(style, GTK_STATE_FLAG_NORMAL, &fg_color); gtk_style_context_get_color(style, GTK_STATE_FLAG_SELECTED, &light_color); cr = cairo_create(priv->bg_surface); /* * Ensure valid resources. */ g_assert(style); g_assert(priv->bg_surface); /* * Clear entire background. Hopefully this looks okay for RGBA themes * that are translucent. */ cairo_save(cr); cairo_set_operator(cr, CAIRO_OPERATOR_CLEAR); cairo_rectangle(cr, 0, 0, alloc.width, alloc.height); cairo_fill(cr); cairo_restore(cr); /* * Paint the content area background. */ cairo_save(cr); gdk_cairo_set_source_rgba(cr, &light_color); gdk_cairo_rectangle(cr, &priv->content_rect); cairo_fill(cr); cairo_restore(cr); /* * Stroke the border around the content area. */ cairo_save(cr); gdk_cairo_set_source_rgba(cr, &fg_color); cairo_set_line_width(cr, 1.0); cairo_set_dash(cr, dashes, G_N_ELEMENTS(dashes), 0); cairo_set_antialias(cr, CAIRO_ANTIALIAS_NONE); cairo_rectangle(cr, priv->content_rect.x - .5, priv->content_rect.y - .5, priv->content_rect.width + 1.0, priv->content_rect.height + 1.0); cairo_stroke(cr); cairo_restore(cr); /* * Render the axis ticks. */ uber_graph_render_y_axis(graph, cr); uber_graph_render_x_axis(graph, cr); /* * Background is no longer dirty. */ priv->bg_dirty = FALSE; /* * Cleanup. */ cairo_destroy(cr); } static inline void g_time_val_subtract (GTimeVal *a, /* IN */ GTimeVal *b, /* IN */ GTimeVal *c) /* OUT */ { g_return_if_fail(a != NULL); g_return_if_fail(b != NULL); g_return_if_fail(c != NULL); c->tv_sec = a->tv_sec - b->tv_sec; c->tv_usec = a->tv_usec - b->tv_usec; if (c->tv_usec < 0) { c->tv_usec += G_USEC_PER_SEC; c->tv_sec -= 1; } } /** * uber_graph_get_fps_offset: * @graph: A #UberGraph. * * Calculates the number of pixels that the foreground should be rendered * from the origin. * * Returns: The pixel offset to render the foreground. * Side effects: None. */ static gfloat uber_graph_get_fps_offset (UberGraph *graph) /* IN */ { UberGraphPrivate *priv; GTimeVal rel = { 0 }; GTimeVal tv; gfloat f; g_return_val_if_fail(UBER_IS_GRAPH(graph), 0.); priv = graph->priv; g_get_current_time(&tv); g_time_val_subtract(&tv, &priv->dps_tv, &rel); f = ((rel.tv_sec * 1000) + (rel.tv_usec / 1000)) / (1000. / priv->dps) /* MSec Per Data Point */ * priv->dps_each; /* Pixels Per Data Point */ return MIN(f, (priv->dps_each - priv->fps_each)); } /** * uber_graph_draw: * @widget: A #GtkWidget. * * XXX * * Returns: %FALSE always. * Side effects: None. */ static gboolean uber_graph_draw (GtkWidget *widget, /* IN */ cairo_t *cr) /* IN */ { UberGraphPrivate *priv; GtkAllocation alloc; // cairo_t *cr; gfloat offset; gint x; g_return_val_if_fail(UBER_IS_GRAPH(widget), FALSE); priv = UBER_GRAPH(widget)->priv; gtk_widget_get_allocation(widget, &alloc); priv->fps_count++; /* * Ensure that the texture is initialized. */ g_assert(priv->fg_surface); g_assert(priv->bg_surface); /* * Clear window background. */ #if 0 gdk_window_clear_area(expose->window, expose->area.x, expose->area.y, expose->area.width, expose->area.height); /* * Allocate resources. */ cr = gdk_cairo_create(expose->window); /* * Clip to exposure area. */ gdk_cairo_rectangle(cr, &expose->area); cairo_clip(cr); #endif /* * Render background or foreground if needed. */ if (priv->bg_dirty) { uber_graph_render_bg(UBER_GRAPH(widget)); } if (priv->fg_dirty) { uber_graph_render_fg(UBER_GRAPH(widget)); } /* * Paint the background to the exposure area. */ cairo_save(cr); cairo_set_source_surface(cr, priv->bg_surface, 0, 0); cairo_rectangle(cr, 0, 0, alloc.width, alloc.height); cairo_fill(cr); cairo_restore(cr); /* * Draw the foreground. */ offset = uber_graph_get_fps_offset(UBER_GRAPH(widget)); if (priv->have_rgba) { cairo_save(cr); /* * Clip exposure to the content area. */ cairo_reset_clip(cr); gdk_cairo_rectangle(cr, &priv->content_rect); cairo_clip(cr); /* * Data in the fg surface is a ring bufer. Render the first portion * at its given offset. */ x = ((priv->x_slots - priv->dps_slot) * priv->dps_each) - offset; cairo_set_source_surface(cr, priv->fg_surface, (gint)x, 0); gdk_cairo_rectangle(cr, &priv->content_rect); cairo_fill(cr); /* * Render the second part of the ring surface buffer. */ x = (priv->dps_each * -priv->dps_slot) - offset; cairo_set_source_surface(cr, priv->fg_surface, (gint)x, 0); gdk_cairo_rectangle(cr, &priv->content_rect); cairo_fill(cr); /* * Cleanup. */ cairo_restore(cr); } else { /* * TODO: Use XOR command for fallback. */ g_warn_if_reached(); } /* * Cleanup resources. */ //cairo_destroy(cr); return FALSE; } /** * uber_graph_style_set: * @widget: A #GtkWidget. * * XXX * * Returns: None. * Side effects: None. */ static void uber_graph_style_set (GtkWidget *widget, /* IN */ GtkStyle *old_style) /* IN */ { UberGraphPrivate *priv; g_return_if_fail(UBER_IS_GRAPH(widget)); priv = UBER_GRAPH(widget)->priv; WIDGET_CLASS->style_set(widget, old_style); priv->fg_dirty = TRUE; priv->bg_dirty = TRUE; gtk_widget_queue_draw(widget); } /** * uber_graph_size_allocate: * @widget: A #GtkWidget. * * XXX * * Returns: None. * Side effects: None. */ static void uber_graph_size_allocate (GtkWidget *widget, /* IN */ GtkAllocation *alloc) /* IN */ { UberGraph *graph; UberGraphPrivate *priv; g_return_if_fail(UBER_IS_GRAPH(widget)); graph = UBER_GRAPH(widget); priv = graph->priv; WIDGET_CLASS->size_allocate(widget, alloc); /* * If there is no window yet, we can defer setup. */ if (!gtk_widget_get_window(widget)) { return; } /* * Recalculate rectangles. */ uber_graph_calculate_rects(graph); /* * Recreate server side surface. */ UNSET_SURFACE(priv->bg_surface); UNSET_SURFACE(priv->fg_surface); uber_graph_init_bg(graph); uber_graph_init_texture(graph); /* * Mark foreground and background as dirty. */ priv->fg_dirty = TRUE; priv->bg_dirty = TRUE; priv->full_draw = TRUE; gtk_widget_queue_draw(widget); } static void uber_graph_size_request (GtkWidget *widget, /* IN */ GtkRequisition *req) /* OUT */ { g_return_if_fail(req != NULL); req->width = 150; req->height = 50; } static void uber_graph_get_preferred_width (GtkWidget *widget, /* IN */ gint *minimal_width, gint *natural_width) { GtkRequisition requisition; uber_graph_size_request(widget, &requisition); *minimal_width = * natural_width = requisition.width; } static void uber_graph_get_preferred_height (GtkWidget *widget, /* IN */ gint *minimal_height, gint *natural_height) { GtkRequisition requisition; uber_graph_size_request(widget, &requisition); *minimal_height = * natural_height = requisition.height; } /** * uber_graph_add_label: * @graph: A #UberGraph. * * XXX * * Returns: None. * Side effects: None. */ void uber_graph_add_label (UberGraph *graph, /* IN */ UberLabel *label) /* IN */ { UberGraphPrivate *priv; g_return_if_fail(UBER_IS_GRAPH(graph)); g_return_if_fail(UBER_IS_LABEL(label)); priv = graph->priv; gtk_box_pack_start(GTK_BOX(priv->labels), GTK_WIDGET(label), TRUE, TRUE, 0); gtk_widget_show(GTK_WIDGET(label)); } /** * uber_graph_take_screenshot: * @graph: A #UberGraph. * * XXX * * Returns: None. * Side effects: None. */ static void uber_graph_take_screenshot (UberGraph *graph) /* IN */ { GtkWidget *widget; GtkWidget *dialog; GtkAllocation alloc; const gchar *filename; cairo_status_t status; cairo_surface_t *surface; cairo_t *cr; g_return_if_fail(UBER_IS_GRAPH(graph)); widget = GTK_WIDGET(graph); gtk_widget_get_allocation(widget, &alloc); /* * Create save dialog and ask user for filename. */ dialog = gtk_file_chooser_dialog_new(_("Save As"), GTK_WINDOW(gtk_widget_get_toplevel(widget)), GTK_FILE_CHOOSER_ACTION_SAVE, _("_Cancel"), GTK_RESPONSE_CANCEL, _("_Save"), GTK_RESPONSE_ACCEPT, NULL); if (GTK_RESPONSE_ACCEPT == gtk_dialog_run(GTK_DIALOG(dialog))) { /* * Create surface and cairo context. */ surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, alloc.width, alloc.height); cr = cairo_create(surface); cairo_rectangle(cr, 0, 0, alloc.width, alloc.height); cairo_clip(cr); /* Paint to the image surface instead of the screen */ uber_graph_draw(widget, cr); /* * Save surface to png. */ filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); status = cairo_surface_write_to_png(surface, filename); if (status != CAIRO_STATUS_SUCCESS) { g_critical("Failed to save pixmap to file."); goto cleanup; } /* * Cleanup resources. */ cleanup: cairo_destroy(cr); cairo_surface_destroy(surface); } gtk_widget_destroy(dialog); } /** * uber_graph_toggle_paused: * @graph: A #UberGraph. * * XXX * * Returns: None. * Side effects: None. */ static void uber_graph_toggle_paused (UberGraph *graph) /* IN */ { UberGraphPrivate *priv; g_return_if_fail(UBER_IS_GRAPH(graph)); priv = graph->priv; priv->paused = !priv->paused; if (priv->fps_handler) { g_source_remove(priv->fps_handler); priv->fps_handler = 0; } else { if (!priv->paused) { uber_graph_redraw(graph); } uber_graph_register_fps_handler(graph); } } /** * uber_graph_button_press: * @widget: A #GtkWidget. * * XXX * * Returns: None. * Side effects: None. */ static gboolean uber_graph_button_press_event (GtkWidget *widget, /* IN */ GdkEventButton *button) /* IN */ { g_return_val_if_fail(UBER_IS_GRAPH(widget), FALSE); switch (button->button) { case 2: /* Middle Click */ if (button->state & GDK_CONTROL_MASK) { uber_graph_take_screenshot(UBER_GRAPH(widget)); } else { uber_graph_toggle_paused(UBER_GRAPH(widget)); } break; default: break; } return FALSE; } /** * uber_graph_finalize: * @object: A #UberGraph. * * Finalizer for a #UberGraph instance. Frees any resources held by * the instance. * * Returns: None. * Side effects: None. */ static void uber_graph_finalize (GObject *object) /* IN */ { G_OBJECT_CLASS(uber_graph_parent_class)->finalize(object); } /** * uber_graph_dispose: * @object: A #GObject. * * Dispose callback for @object. This method releases references held * by the #GObject instance. * * Returns: None. * Side effects: Plenty. */ static void uber_graph_dispose (GObject *object) /* IN */ { UberGraph *graph; UberGraphPrivate *priv; graph = UBER_GRAPH(object); priv = graph->priv; /* * Stop any timeout handlers. */ if (priv->fps_handler) { g_source_remove(priv->fps_handler); } if (priv->dps_handler) { g_source_remove(priv->dps_handler); } /* * Destroy textures. */ UNSET_SURFACE(priv->bg_surface); UNSET_SURFACE(priv->fg_surface); /* * Call base class. */ G_OBJECT_CLASS(uber_graph_parent_class)->dispose(object); } /** * uber_graph_set_property: * @object: (in): A #GObject. * @prop_id: (in): The property identifier. * @value: (out): The given property. * @pspec: (in): A #ParamSpec. * * Get a given #GObject property. */ static void uber_graph_get_property (GObject *object, /* IN */ guint prop_id, /* IN */ GValue *value, /* OUT */ GParamSpec *pspec) /* IN */ { UberGraph *graph = UBER_GRAPH(object); switch (prop_id) { case PROP_FORMAT: g_value_set_uint(value, graph->priv->format); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); } } /** * uber_graph_set_property: * @object: (in): A #GObject. * @prop_id: (in): The property identifier. * @value: (in): The given property. * @pspec: (in): A #ParamSpec. * * Set a given #GObject property. */ static void uber_graph_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { UberGraph *graph = UBER_GRAPH(object); switch (prop_id) { case PROP_FORMAT: uber_graph_set_format(graph, g_value_get_uint(value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); } } /** * uber_graph_class_init: * @klass: A #UberGraphClass. * * Initializes the #UberGraphClass and prepares the vtable. * * Returns: None. * Side effects: None. */ static void uber_graph_class_init (UberGraphClass *klass) /* IN */ { GObjectClass *object_class; GtkWidgetClass *widget_class; object_class = G_OBJECT_CLASS(klass); object_class->dispose = uber_graph_dispose; object_class->finalize = uber_graph_finalize; object_class->get_property = uber_graph_get_property; object_class->set_property = uber_graph_set_property; widget_class = GTK_WIDGET_CLASS(klass); widget_class->draw = uber_graph_draw; widget_class->hide = uber_graph_hide; widget_class->realize = uber_graph_realize; widget_class->screen_changed = uber_graph_screen_changed; widget_class->show = uber_graph_show; widget_class->size_allocate = uber_graph_size_allocate; widget_class->style_set = uber_graph_style_set; widget_class->unrealize = uber_graph_unrealize; widget_class->get_preferred_width = uber_graph_get_preferred_width; widget_class->get_preferred_height = uber_graph_get_preferred_height; widget_class->button_press_event = uber_graph_button_press_event; show_fps = !!g_getenv("UBER_SHOW_FPS"); /* * FIXME: Use enum. */ g_object_class_install_property(object_class, PROP_FORMAT, g_param_spec_uint("format", "format", "format", 0, UBER_GRAPH_FORMAT_PERCENT, 0, G_PARAM_READWRITE)); } /** * uber_graph_init: * @graph: A #UberGraph. * * Initializes the newly created #UberGraph instance. * * Returns: None. * Side effects: None. */ static void uber_graph_init (UberGraph *graph) /* IN */ { UberGraphPrivate *priv; /* * Store pointer to private data allocation. */ graph->priv = uber_graph_get_instance_private(graph); priv = graph->priv; /* * Enable required events. */ gtk_widget_set_events(GTK_WIDGET(graph), GDK_BUTTON_PRESS_MASK); /* * Prepare default values. */ priv->tick_len = 10; priv->fps = 20; priv->fps_real = 1000. / priv->fps; priv->dps = 1.; priv->x_slots = 60; priv->fg_dirty = TRUE; priv->bg_dirty = TRUE; priv->full_draw = TRUE; priv->show_xlines = TRUE; priv->show_ylines = TRUE; /* * TODO: Support labels in a grid. */ priv->labels = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 3); gtk_box_set_homogeneous (GTK_BOX(priv->labels), TRUE); priv->align = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_container_add(GTK_CONTAINER(priv->align), priv->labels); gtk_widget_show(priv->labels); } hardinfo2-hardinfo2-1331e88/deps/uber-graph/uber-graph.h000066400000000000000000000103441474767047500227410ustar00rootroot00000000000000/* uber-graph.h * * Copyright (C) 2010 Christian Hergert * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef __UBER_GRAPH_H__ #define __UBER_GRAPH_H__ #include #include "uber-range.h" #include "uber-label.h" G_BEGIN_DECLS #define UBER_TYPE_GRAPH (uber_graph_get_type()) #define UBER_GRAPH(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UBER_TYPE_GRAPH, UberGraph)) #define UBER_GRAPH_CONST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UBER_TYPE_GRAPH, UberGraph const)) #define UBER_GRAPH_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), UBER_TYPE_GRAPH, UberGraphClass)) #define UBER_IS_GRAPH(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), UBER_TYPE_GRAPH)) #define UBER_IS_GRAPH_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), UBER_TYPE_GRAPH)) #define UBER_GRAPH_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), UBER_TYPE_GRAPH, UberGraphClass)) typedef enum { UBER_GRAPH_FORMAT_DIRECT, UBER_GRAPH_FORMAT_DIRECT1024, UBER_GRAPH_FORMAT_PERCENT, } UberGraphFormat; typedef struct _UberGraph UberGraph; typedef struct _UberGraphClass UberGraphClass; typedef struct _UberGraphPrivate UberGraphPrivate; struct _UberGraph { GtkDrawingArea parent; /*< private >*/ UberGraphPrivate *priv; }; struct _UberGraphClass { GtkDrawingAreaClass parent_class; gboolean (*downscale) (UberGraph *graph); gboolean (*get_next_data) (UberGraph *graph); void (*get_yrange) (UberGraph *graph, UberRange *range); void (*render) (UberGraph *graph, cairo_t *cairo, GdkRectangle *content_area, guint epoch, gfloat each); void (*render_fast) (UberGraph *graph, cairo_t *cairo, GdkRectangle *content_area, guint epoch, gfloat each); void (*set_stride) (UberGraph *graph, guint stride); }; GType uber_graph_get_type (void) G_GNUC_CONST; void uber_graph_set_dps (UberGraph *graph, gfloat dps); void uber_graph_set_fps (UberGraph *graph, guint fps); void uber_graph_redraw (UberGraph *graph); void uber_graph_set_format (UberGraph *graph, UberGraphFormat format); GtkWidget* uber_graph_get_labels (UberGraph *graph); void uber_graph_get_content_area (UberGraph *graph, GdkRectangle *rect); void uber_graph_add_label (UberGraph *graph, UberLabel *label); gboolean uber_graph_get_show_xlines (UberGraph *graph); void uber_graph_set_show_xlines (UberGraph *graph, gboolean show_xlines); gboolean uber_graph_get_show_xlabels (UberGraph *graph); void uber_graph_set_show_xlabels (UberGraph *graph, gboolean show_xlabels); gboolean uber_graph_get_show_ylines (UberGraph *graph); void uber_graph_set_show_ylines (UberGraph *graph, gboolean show_ylines); void uber_graph_scale_changed (UberGraph *graph); G_END_DECLS #endif /* __UBER_GRAPH_H__ */ hardinfo2-hardinfo2-1331e88/deps/uber-graph/uber-heat-map.c000066400000000000000000000173361474767047500233370ustar00rootroot00000000000000/* uber-heat-map.c * * Copyright (C) 2010 Christian Hergert * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include #include "uber-heat-map.h" #include "g-ring.h" /** * SECTION:uber-heat-map.h * @title: UberHeatMap * @short_description: * * Section overview. */ struct _UberHeatMapPrivate { GRing *raw_data; gboolean fg_color_set; GdkRGBA fg_color; UberHeatMapFunc func; GDestroyNotify func_destroy; gpointer func_user_data; }; G_DEFINE_TYPE_WITH_PRIVATE(UberHeatMap, uber_heat_map, UBER_TYPE_GRAPH) /** * uber_heat_map_new: * * Creates a new instance of #UberHeatMap. * * Returns: the newly created instance of #UberHeatMap. * Side effects: None. */ GtkWidget* uber_heat_map_new (void) { UberHeatMap *map; map = g_object_new(UBER_TYPE_HEAT_MAP, NULL); return GTK_WIDGET(map); } /** * uber_heat_map_destroy_array: * @array: A #GArray. * * XXX * * Returns: None. * Side effects: None. */ static void uber_heat_map_destroy_array (gpointer data) /* IN */ { GArray **ar = data; if (ar) { g_array_unref(*ar); } } /** * uber_heat_map_set_stride: * @graph: A #UberGraph. * * XXX * * Returns: None. * Side effects: None. */ static void uber_heat_map_set_stride (UberGraph *graph, /* IN */ guint stride) /* IN */ { UberHeatMapPrivate *priv; g_return_if_fail(UBER_IS_HEAT_MAP(graph)); priv = UBER_HEAT_MAP(graph)->priv; if (priv->raw_data) { g_ring_unref(priv->raw_data); } priv->raw_data = g_ring_sized_new(sizeof(GArray*), stride, uber_heat_map_destroy_array); } /** * uber_heat_map_set_data_func: * @map: A #UberHeatMap. * * XXX * * Returns: None. * Side effects: None. */ void uber_heat_map_set_data_func (UberHeatMap *map, /* IN */ UberHeatMapFunc func, /* IN */ gpointer user_data, /* IN */ GDestroyNotify destroy) /* IN */ { UberHeatMapPrivate *priv; g_return_if_fail(UBER_IS_HEAT_MAP(map)); priv = map->priv; if (priv->func_destroy) { priv->func_destroy(priv->func_user_data); } priv->func = func; priv->func_destroy = destroy; priv->func_user_data = user_data; } /** * uber_heat_map_render: * @graph: A #UberGraph. * * XXX * * Returns: None. * Side effects: None. */ static void uber_heat_map_render (UberGraph *graph, /* IN */ cairo_t *cr, /* IN */ GdkRectangle *area, /* IN */ guint epoch, /* IN */ gfloat each) /* IN */ { #if 0 UberGraphPrivate *priv; cairo_pattern_t *cp; g_return_if_fail(UBER_IS_HEAT_MAP(graph)); priv = graph->priv; /* * XXX: Temporarily draw a nice little gradient to test sliding. */ cp = cairo_pattern_create_linear(0, 0, area->width, 0); cairo_pattern_add_color_stop_rgb(cp, 0, .1, .1, .1); cairo_pattern_add_color_stop_rgb(cp, .2, .3, .3, .5); cairo_pattern_add_color_stop_rgb(cp, .4, .2, .7, .4); cairo_pattern_add_color_stop_rgb(cp, .7, .6, .2, .1); cairo_pattern_add_color_stop_rgb(cp, .8, .6, .8, .1); cairo_pattern_add_color_stop_rgb(cp, 1., .3, .8, .5); gdk_cairo_rectangle(cr, area); cairo_set_source(cr, cp); cairo_fill(cr); cairo_pattern_destroy(cp); #endif } /** * uber_heat_map_render_fast: * @graph: A #UberGraph. * * XXX * * Returns: None. * Side effects: None. */ static void uber_heat_map_render_fast (UberGraph *graph, /* IN */ cairo_t *cr, /* IN */ GdkRectangle *area, /* IN */ guint epoch, /* IN */ gfloat each) /* IN */ { UberHeatMapPrivate *priv; GtkStyleContext *style; GdkRGBA color; gfloat height; gint i; g_return_if_fail(UBER_IS_HEAT_MAP(graph)); priv = UBER_HEAT_MAP(graph)->priv; color = priv->fg_color; if (!priv->fg_color_set) { style = gtk_widget_get_style_context(GTK_WIDGET(graph)); gtk_style_context_get_color(style, GTK_STATE_FLAG_SELECTED, &color); } /* * XXX: Temporarily draw nice little squares. */ #define COUNT 10 height = area->height / (gfloat)COUNT; for (i = 0; i < COUNT; i++) { cairo_rectangle(cr, area->x + area->width - each, area->y + (i * height), each, height); cairo_set_source_rgba(cr, color.red, color.green, color.blue, g_random_double_range(0., 1.)); cairo_set_antialias(cr, CAIRO_ANTIALIAS_NONE); cairo_fill(cr); } } /** * uber_heat_map_get_next_data: * @graph: A #UberGraph. * * Retrieve the next data point for the graph. * * Returns: None. * Side effects: None. */ static gboolean uber_heat_map_get_next_data (UberGraph *graph) /* IN */ { UberHeatMapPrivate *priv; GArray *array = NULL; g_return_val_if_fail(UBER_IS_HEAT_MAP(graph), FALSE); priv = UBER_HEAT_MAP(graph)->priv; if (!priv->func) { return FALSE; } /* * Retrieve the next data point. */ if (!priv->func(UBER_HEAT_MAP(graph), &array, priv->func_user_data)) { return FALSE; } /* * Store data points. */ g_ring_append_val(priv->raw_data, array); // for (int i = 0; i < array->len; i++) { // g_print("==> %f\n", g_array_index(array, gdouble, i)); // } return TRUE; } /** * uber_heat_map_set_fg_color: * @map: A #UberHeatMap. * * XXX * * Returns: None. * Side effects: None. */ void uber_heat_map_set_fg_color (UberHeatMap *map, /* IN */ const GdkRGBA *color) /* IN */ { UberHeatMapPrivate *priv; g_return_if_fail(UBER_IS_HEAT_MAP(map)); priv = map->priv; if (!color) { priv->fg_color_set = FALSE; memset(&priv->fg_color, 0, sizeof(priv->fg_color)); } else { priv->fg_color = *color; priv->fg_color_set = TRUE; } } /** * uber_heat_map_finalize: * @object: A #UberHeatMap. * * Finalizer for a #UberHeatMap instance. Frees any resources held by * the instance. * * Returns: None. * Side effects: None. */ static void uber_heat_map_finalize (GObject *object) /* IN */ { G_OBJECT_CLASS(uber_heat_map_parent_class)->finalize(object); } /** * uber_heat_map_class_init: * @klass: A #UberHeatMapClass. * * Initializes the #UberHeatMapClass and prepares the vtable. * * Returns: None. * Side effects: None. */ static void uber_heat_map_class_init (UberHeatMapClass *klass) /* IN */ { GObjectClass *object_class; UberGraphClass *graph_class; object_class = G_OBJECT_CLASS(klass); object_class->finalize = uber_heat_map_finalize; graph_class = UBER_GRAPH_CLASS(klass); graph_class->render = uber_heat_map_render; graph_class->render_fast = uber_heat_map_render_fast; graph_class->set_stride = uber_heat_map_set_stride; graph_class->get_next_data = uber_heat_map_get_next_data; } /** * uber_heat_map_init: * @map: A #UberHeatMap. * * Initializes the newly created #UberHeatMap instance. * * Returns: None. * Side effects: None. */ static void uber_heat_map_init (UberHeatMap *map) /* IN */ { map->priv = uber_heat_map_get_instance_private(map); } hardinfo2-hardinfo2-1331e88/deps/uber-graph/uber-heat-map.h000066400000000000000000000050071474767047500233340ustar00rootroot00000000000000/* uber-heat-map.h * * Copyright (C) 2010 Christian Hergert * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef __UBER_HEAT_MAP_H__ #define __UBER_HEAT_MAP_H__ #include "uber-graph.h" G_BEGIN_DECLS #define UBER_TYPE_HEAT_MAP (uber_heat_map_get_type()) #define UBER_HEAT_MAP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UBER_TYPE_HEAT_MAP, UberHeatMap)) #define UBER_HEAT_MAP_CONST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UBER_TYPE_HEAT_MAP, UberHeatMap const)) #define UBER_HEAT_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), UBER_TYPE_HEAT_MAP, UberHeatMapClass)) #define UBER_IS_HEAT_MAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), UBER_TYPE_HEAT_MAP)) #define UBER_IS_HEAT_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), UBER_TYPE_HEAT_MAP)) #define UBER_HEAT_MAP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), UBER_TYPE_HEAT_MAP, UberHeatMapClass)) typedef struct _UberHeatMap UberHeatMap; typedef struct _UberHeatMapClass UberHeatMapClass; typedef struct _UberHeatMapPrivate UberHeatMapPrivate; typedef gboolean (*UberHeatMapFunc) (UberHeatMap *map, GArray **values, gpointer user_data); struct _UberHeatMap { UberGraph parent; /*< private >*/ UberHeatMapPrivate *priv; }; struct _UberHeatMapClass { UberGraphClass parent_class; }; GType uber_heat_map_get_type (void) G_GNUC_CONST; GtkWidget* uber_heat_map_new (void); void uber_heat_map_set_fg_color (UberHeatMap *map, const GdkRGBA *color); void uber_heat_map_set_data_func (UberHeatMap *map, UberHeatMapFunc func, gpointer user_data, GDestroyNotify destroy); G_END_DECLS #endif /* __UBER_HEAT_MAP_H__ */ hardinfo2-hardinfo2-1331e88/deps/uber-graph/uber-label.c000066400000000000000000000243061474767047500227150ustar00rootroot00000000000000/* uber-label.c * * Copyright (C) 2010 Christian Hergert * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include #include "uber-label.h" /** * SECTION:uber-label.h * @title: UberLabel * @short_description: * * Section overview. */ struct _UberLabelPrivate { GtkWidget *hbox; GtkWidget *block; GtkWidget *label; GdkRGBA color; gboolean in_block; }; G_DEFINE_TYPE_WITH_PRIVATE(UberLabel, uber_label, GTK_TYPE_WIDGET) enum { COLOR_CHANGED, LAST_SIGNAL }; enum { PROP_0, PROP_COLOR, PROP_TEXT, }; static guint signals[LAST_SIGNAL] = { 0 }; /** * uber_label_new: * * Creates a new instance of #UberLabel. * * Returns: the newly created instance of #UberLabel. * Side effects: None. */ GtkWidget* uber_label_new (void) { UberLabel *label; label = g_object_new(UBER_TYPE_LABEL, NULL); return GTK_WIDGET(label); } /** * uber_label_set_text: * @label: A #UberLabel. * @text: The label text. * * Sets the text for the label. * * Returns: None. * Side effects: None. */ void uber_label_set_text (UberLabel *label, /* IN */ const gchar *text) /* IN */ { UberLabelPrivate *priv; g_return_if_fail(UBER_IS_LABEL(label)); priv = label->priv; gtk_label_set_text(GTK_LABEL(priv->label), text); } /** * uber_label_set_color: * @label: A #UberLabel. * @color: A #GdkRGBA. * * Sets the color of the label. * * Returns: None. * Side effects: None. */ void uber_label_set_color (UberLabel *label, /* IN */ const GdkRGBA *color) /* IN */ { UberLabelPrivate *priv; g_return_if_fail(UBER_IS_LABEL(label)); priv = label->priv; priv->color = *color; } static void uber_label_block_draw (GtkWidget *block, /* IN */ cairo_t *cr, /* IN */ UberLabel *label) /* IN */ { UberLabelPrivate *priv; GtkAllocation alloc; g_return_if_fail(UBER_IS_LABEL(label)); priv = label->priv; gtk_widget_get_allocation(block, &alloc); /* * Draw background. */ gdk_cairo_set_source_rgba(cr, &priv->color); cairo_rectangle(cr, .5, .5, alloc.width - 1., alloc.height - 1.); cairo_fill_preserve(cr); /* * Add highlight if mouse is in the block. */ if (priv->in_block) { cairo_set_source_rgba(cr, 1., 1., 1., .3); cairo_fill_preserve(cr); } /* * Stroke the edge of the block. */ cairo_set_line_width(cr, 1.0); cairo_set_source_rgba(cr, 0., 0., 0., .5); cairo_stroke(cr); /* * Stroke the highlight of the block. */ cairo_rectangle(cr, 1.5, 1.5, alloc.width - 3., alloc.height - 3.); cairo_set_source_rgba(cr, 1., 1., 1., .5); cairo_stroke(cr); } /** * uber_label_block_enter_notify_event: * @label: A #UberLabel. * * Tracks the mouse entering the block widget. * * Returns: %FALSE to allow further callbacks. * Side effects: None. */ static gboolean uber_label_block_enter_notify_event (GtkWidget *widget, /* IN */ GdkEventCrossing *event, /* IN */ UberLabel *label) /* IN */ { UberLabelPrivate *priv; priv = label->priv; priv->in_block = TRUE; gtk_widget_queue_draw(widget); return FALSE; } /** * uber_label_block_leave_notify_event: * @label: A #UberLabel. * * Tracks the mouse leaving the block widget. * * Returns: %FALSE to allow further callbacks. * Side effects: None. */ static gboolean uber_label_block_leave_notify_event (GtkWidget *widget, /* IN */ GdkEventCrossing *event, /* IN */ UberLabel *label) /* IN */ { UberLabelPrivate *priv; priv = label->priv; priv->in_block = FALSE; gtk_widget_queue_draw(widget); return FALSE; } /** * uber_label_block_button_press_event: * @widget: A #GtkWidget. * @event: A #GdkEventButton. * @label: An #UberLabel. * * Callback to handle a button press event within the colored block. * * Returns: %FALSE always to allow further signal emission. * Side effects: None. */ static gboolean uber_label_block_button_press_event (GtkWidget *widget, /* IN */ GdkEventButton *event, /* IN */ UberLabel *label) /* IN */ { UberLabelPrivate *priv; GtkWidget *dialog; g_return_val_if_fail(UBER_IS_LABEL(label), FALSE); priv = label->priv; dialog = gtk_color_chooser_dialog_new("", GTK_WINDOW(gtk_widget_get_toplevel(widget))); gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(dialog), TRUE); gtk_color_chooser_set_rgba( GTK_COLOR_CHOOSER(dialog), &priv->color); if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_OK) { gtk_color_chooser_get_rgba( GTK_COLOR_CHOOSER(dialog), &priv->color); gtk_widget_queue_draw(widget); g_signal_emit(label, signals[COLOR_CHANGED], 0, &priv->color); } gtk_widget_destroy(dialog); return FALSE; } /** * uber_label_set_property: * @object: (in): A #GObject. * @prop_id: (in): The property identifier. * @value: (in): The given property. * @pspec: (in): A #ParamSpec. * * Set a given #GObject property. */ static void uber_label_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { UberLabel *label = UBER_LABEL(object); switch (prop_id) { case PROP_COLOR: uber_label_set_color(label, g_value_get_boxed(value)); break; case PROP_TEXT: uber_label_set_text(label, g_value_get_string(value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); } } /** * uber_label_finalize: * @object: A #UberLabel. * * Finalizer for a #UberLabel instance. Frees any resources held by * the instance. * * Returns: None. * Side effects: None. */ static void uber_label_finalize (GObject *object) /* IN */ { G_OBJECT_CLASS(uber_label_parent_class)->finalize(object); } /** * uber_label_class_init: * @klass: A #UberLabelClass. * * Initializes the #UberLabelClass and prepares the vtable. * * Returns: None. * Side effects: None. */ static void uber_label_class_init (UberLabelClass *klass) /* IN */ { GObjectClass *object_class; object_class = G_OBJECT_CLASS(klass); object_class->finalize = uber_label_finalize; object_class->set_property = uber_label_set_property; g_object_class_install_property(object_class, PROP_COLOR, g_param_spec_boxed("color", "color", "color", GDK_TYPE_RGBA, G_PARAM_WRITABLE)); g_object_class_install_property(object_class, PROP_TEXT, g_param_spec_string("text", "text", "text", NULL, G_PARAM_WRITABLE)); /** * UberLabel::color-changed: * @label: An #UberLabel. * @color: A #GdkRGBA. * * Signal emitted when the color is changed. */ signals[COLOR_CHANGED] = g_signal_new("color-changed", UBER_TYPE_LABEL, G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__POINTER, G_TYPE_NONE, 1, G_TYPE_POINTER); } /** * uber_label_init: * @label: A #UberLabel. * * Initializes the newly created #UberLabel instance. * * Returns: None. * Side effects: None. */ static void uber_label_init (UberLabel *label) /* IN */ { UberLabelPrivate *priv; label->priv = uber_label_get_instance_private(label); priv = label->priv; priv->hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 6); priv->block = gtk_drawing_area_new(); priv->label = gtk_label_new(NULL); gdk_rgba_parse(&priv->color, "#cc0000"); gtk_widget_set_halign(GTK_WIDGET(priv->label), GTK_ALIGN_START); gtk_widget_set_valign(GTK_WIDGET(priv->label), GTK_ALIGN_CENTER); gtk_widget_set_size_request(priv->block, 32, 17); gtk_container_add(GTK_CONTAINER(label), priv->hbox); gtk_box_pack_start(GTK_BOX(priv->hbox), priv->block, FALSE, TRUE, 0); gtk_box_pack_start(GTK_BOX(priv->hbox), priv->label, TRUE, TRUE, 0); gtk_widget_add_events(priv->block, GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_BUTTON_PRESS_MASK); g_signal_connect(priv->block, "draw", G_CALLBACK(uber_label_block_draw), label); g_signal_connect(priv->block, "enter-notify-event", G_CALLBACK(uber_label_block_enter_notify_event), label); g_signal_connect(priv->block, "leave-notify-event", G_CALLBACK(uber_label_block_leave_notify_event), label); g_signal_connect(priv->block, "button-press-event", G_CALLBACK(uber_label_block_button_press_event), label); gtk_widget_set_tooltip_text(GTK_WIDGET(priv->block), _("Click to select color")); gtk_widget_show(priv->hbox); gtk_widget_show(priv->block); gtk_widget_show(priv->label); } hardinfo2-hardinfo2-1331e88/deps/uber-graph/uber-label.h000066400000000000000000000041351474767047500227200ustar00rootroot00000000000000/* uber-label.h * * Copyright (C) 2010 Christian Hergert * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef __UBER_LABEL_H__ #define __UBER_LABEL_H__ #include G_BEGIN_DECLS #define UBER_TYPE_LABEL (uber_label_get_type()) #define UBER_LABEL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UBER_TYPE_LABEL, UberLabel)) #define UBER_LABEL_CONST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UBER_TYPE_LABEL, UberLabel const)) #define UBER_LABEL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), UBER_TYPE_LABEL, UberLabelClass)) #define UBER_IS_LABEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), UBER_TYPE_LABEL)) #define UBER_IS_LABEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), UBER_TYPE_LABEL)) #define UBER_LABEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), UBER_TYPE_LABEL, UberLabelClass)) typedef struct _UberLabel UberLabel; typedef struct _UberLabelClass UberLabelClass; typedef struct _UberLabelPrivate UberLabelPrivate; struct _UberLabel { GtkAlignment parent; /*< private >*/ UberLabelPrivate *priv; }; struct _UberLabelClass { GtkAlignmentClass parent_class; }; GType uber_label_get_type (void) G_GNUC_CONST; GtkWidget* uber_label_new (void); void uber_label_set_color (UberLabel *label, const GdkRGBA *color); void uber_label_set_text (UberLabel *label, const gchar *text); G_END_DECLS #endif /* __UBER_LABEL_H__ */ hardinfo2-hardinfo2-1331e88/deps/uber-graph/uber-line-graph.c000066400000000000000000000604251474767047500236660ustar00rootroot00000000000000/* uber-line-graph.c * * Copyright (C) 2010 Christian Hergert * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include #include #include "uber-line-graph.h" #include "uber-range.h" #include "uber-scale.h" #include "g-ring.h" #define RECT_BOTTOM(r) ((r).y + (r).height) #define RECT_RIGHT(r) ((r).x + (r).width) #define SCALE_FACTOR (0.2) /** * SECTION:uber-line-graph.h * @title: UberLineGraph * @short_description: * * Section overview. */ typedef struct { GRing *raw_data; GdkRGBA color; gdouble width; gdouble *dashes; gint num_dashes; gdouble dash_offset; UberLabel *label; guint label_id; } LineInfo; struct _UberLineGraphPrivate { GArray *lines; cairo_antialias_t antialias; guint stride; gboolean autoscale; UberRange range; UberScale scale; gpointer scale_data; GDestroyNotify scale_notify; UberLineGraphFunc func; gpointer func_data; GDestroyNotify func_notify; }; G_DEFINE_TYPE_WITH_PRIVATE(UberLineGraph, uber_line_graph, UBER_TYPE_GRAPH) enum { PROP_0, PROP_AUTOSCALE, PROP_RANGE, }; /** * uber_line_graph_init_ring: * @ring: A #GRing. * * Initialize the #GRing to default values (UBER_LINE_GRAPH_NO_VALUE). * * Returns: None. * Side effects: None. */ static inline void uber_line_graph_init_ring (GRing *ring) /* IN */ { gdouble val = UBER_LINE_GRAPH_NO_VALUE; guint i; g_return_if_fail(ring != NULL); for (i = 0; i < ring->len; i++) { g_ring_append_val(ring, val); } } /** * uber_line_graph_new: * * Creates a new instance of #UberLineGraph. * * Returns: the newly created instance of #UberLineGraph. * Side effects: None. */ GtkWidget* uber_line_graph_new (void) { UberLineGraph *graph; graph = g_object_new(UBER_TYPE_LINE_GRAPH, NULL); return GTK_WIDGET(graph); } /** * uber_line_graph_color: * @graph: A #UberLineGraph. * * XXX * * Returns: None. * Side effects: None. */ static void uber_line_graph_color_changed (UberLabel *label, /* IN */ GdkRGBA *color, /* IN */ UberLineGraph *graph) /* IN */ { UberLineGraphPrivate *priv; LineInfo *info; guint i; g_return_if_fail(UBER_IS_LINE_GRAPH(graph)); g_return_if_fail(color != NULL); priv = graph->priv; for (i = 0; i < priv->lines->len; i++) { info = &g_array_index(priv->lines, LineInfo, i); if (info->label == label) { info->color = *color; } } uber_graph_redraw(UBER_GRAPH(graph)); } void uber_line_graph_bind_label (UberLineGraph *graph, /* IN */ guint line, /* IN */ UberLabel *label) /* IN */ { UberLineGraphPrivate *priv; LineInfo *info; g_return_if_fail(UBER_IS_LINE_GRAPH(graph)); g_return_if_fail(UBER_IS_LABEL(label)); g_return_if_fail(line > 0); g_return_if_fail(line <= graph->priv->lines->len); priv = graph->priv; info = &g_array_index(priv->lines, LineInfo, line - 1); if (info->label_id) { g_signal_handler_disconnect(info->label, info->label_id); } info->label = label; info->label_id = g_signal_connect(label, "color-changed", G_CALLBACK(uber_line_graph_color_changed), graph); } /** * uber_line_graph_set_autoscale: * @graph: A #UberLineGraph. * @autoscale: Should we autoscale. * * Sets if we should autoscale the range of the graph when a new input * value is outside the visible range. * * Returns: None. * Side effects: None. */ void uber_line_graph_set_autoscale (UberLineGraph *graph, /* IN */ gboolean autoscale) /* IN */ { UberLineGraphPrivate *priv; g_return_if_fail(UBER_IS_LINE_GRAPH(graph)); priv = graph->priv; priv->autoscale = autoscale; } /** * uber_line_graph_get_autoscale: * @graph: A #UberLineGraph. * * XXX * * Returns: None. * Side effects: None. */ gboolean uber_line_graph_get_autoscale (UberLineGraph *graph) /* IN */ { g_return_val_if_fail(UBER_IS_LINE_GRAPH(graph), FALSE); return graph->priv->autoscale; } /** * uber_line_graph_add_line: * @graph: A #UberLineGraph. * @color: A #GdkRGBA for the line or %NULL. * * Adds a new line to the graph. If color is %NULL, the next value * in the default color list will be used. * * See uber_line_graph_remove_line(). * * Returns: The line identifier. * Side effects: None. */ gint uber_line_graph_add_line (UberLineGraph *graph, /* IN */ const GdkRGBA *color, /* IN */ UberLabel *label) /* IN */ { UberLineGraphPrivate *priv; LineInfo info = { 0 }; g_return_val_if_fail(UBER_IS_LINE_GRAPH(graph), 0); priv = graph->priv; info.width = 1.0; /* * Retrieve the lines color. */ if (color) { info.color = *color; } else { gdk_rgba_parse(&info.color, "#729fcf"); } /* * Allocate buffers for data points. */ info.raw_data = g_ring_sized_new(sizeof(gdouble), priv->stride, NULL); uber_line_graph_init_ring(info.raw_data); /* * Store the newly crated line. */ g_array_append_val(priv->lines, info); /* * Mark the graph for full redraw. */ uber_graph_redraw(UBER_GRAPH(graph)); /* * Attach label. */ if (label) { uber_line_graph_bind_label(graph, priv->lines->len, label); uber_graph_add_label(UBER_GRAPH(graph), label); uber_label_set_color(label, &info.color); } /* * Line indexes start from 1. */ return priv->lines->len; } /** * uber_line_graph_set_antialias: * @graph: A #UberLineGraph. * * XXX * * Returns: None. * Side effects: None. */ void uber_line_graph_set_antialias (UberLineGraph *graph, /* IN */ cairo_antialias_t antialias) /* IN */ { UberLineGraphPrivate *priv; g_return_if_fail(UBER_IS_LINE_GRAPH(graph)); priv = graph->priv; priv->antialias = antialias; uber_graph_redraw(UBER_GRAPH(graph)); } /** * uber_line_graph_get_antialias: * @graph: A #UberLineGraph. * * Retrieves the antialias mode for the graph. * * Returns: A cairo_antialias_t. * Side effects: None. */ cairo_antialias_t uber_line_graph_get_antialias (UberLineGraph *graph) /* IN */ { g_return_val_if_fail(UBER_IS_LINE_GRAPH(graph), 0); return graph->priv->antialias; } /** * uber_line_graph_get_next_data: * @graph: A #UberGraph. * * XXX * * Returns: None. * Side effects: None. */ static gboolean uber_line_graph_get_next_data (UberGraph *graph) /* IN */ { UberLineGraphPrivate *priv; gboolean scale_changed = FALSE; gboolean ret = FALSE; LineInfo *line; gdouble val; guint i; g_return_val_if_fail(UBER_IS_LINE_GRAPH(graph), FALSE); priv = UBER_LINE_GRAPH(graph)->priv; /* * Retrieve the next data point. */ if (priv->func) { for (i = 0; i < priv->lines->len; i++) { line = &g_array_index(priv->lines, LineInfo, i); val = priv->func(UBER_LINE_GRAPH(graph), i + 1, priv->func_data); g_ring_append_val(line->raw_data, val); if (priv->autoscale) { if (val < priv->range.begin) { priv->range.begin = val - (val * SCALE_FACTOR); priv->range.range = priv->range.end - priv->range.begin; scale_changed = TRUE; } else if (val > priv->range.end) { priv->range.end = val + (val * SCALE_FACTOR); priv->range.range = priv->range.end - priv->range.begin; scale_changed = TRUE; } } } } if (scale_changed) { uber_graph_scale_changed(graph); } return ret; } /** * uber_line_graph_set_data_func: * @graph: A #UberLineGraph. * * XXX * * Returns: None. * Side effects: None. */ void uber_line_graph_set_data_func (UberLineGraph *graph, /* IN */ UberLineGraphFunc func, /* IN */ gpointer user_data, /* IN */ GDestroyNotify notify) /* IN */ { UberLineGraphPrivate *priv; g_return_if_fail(UBER_IS_LINE_GRAPH(graph)); priv = graph->priv; /* * Free existing data func if neccessary. */ if (priv->func_notify) { priv->func_notify(priv->func_data); } /* * Store data func. */ priv->func = func; priv->func_data = user_data; priv->func_notify = notify; } /** * uber_line_graph_stylize_line: * @graph: A #UberLineGraph. * * XXX * * Returns: None. * Side effects: None. */ static void uber_line_graph_stylize_line (UberLineGraph *graph, /* IN */ LineInfo *info, /* IN */ cairo_t *cr) /* IN */ { UberLineGraphPrivate *priv; g_return_if_fail(UBER_IS_LINE_GRAPH(graph)); g_return_if_fail(info != NULL); priv = graph->priv; if (info->dashes) { cairo_set_dash(cr, info->dashes, info->num_dashes, info->dash_offset); } else { cairo_set_dash(cr, NULL, 0, 0); } cairo_set_line_cap(cr, CAIRO_LINE_CAP_ROUND); cairo_set_line_join(cr, CAIRO_LINE_JOIN_ROUND); cairo_set_line_width(cr, info->width); cairo_set_antialias(cr, priv->antialias); cairo_set_source_rgba(cr, info->color.red, info->color.green, info->color.blue, info->color.alpha); } /** * uber_line_graph_render: * @graph: A #UberGraph. * @cr: A #cairo_t context. * @area: Full area to render contents within. * @line: The line to render. * * Render a particular line to the graph. * * Returns: None. * Side effects: None. */ static void uber_line_graph_render_line (UberLineGraph *graph, /* IN */ cairo_t *cr, /* IN */ GdkRectangle *area, /* IN */ LineInfo *line, /* IN */ guint epoch, /* IN */ gfloat each) /* IN */ { UberLineGraphPrivate *priv; UberRange pixel_range; GdkRectangle vis; guint x; guint last_x; gdouble y; gdouble last_y; gdouble val; guint i; g_return_if_fail(UBER_IS_LINE_GRAPH(graph)); priv = graph->priv; uber_graph_get_content_area(UBER_GRAPH(graph), &vis); pixel_range.begin = area->y + 1; pixel_range.end = area->y + area->height; pixel_range.range = pixel_range.end - pixel_range.begin; /* * Prepare cairo settings. */ uber_line_graph_stylize_line(graph, line, cr); /* * Force a new path. */ cairo_new_path(cr); /* * Draw the line contents as bezier curves. */ for (i = 0; i < line->raw_data->len; i++) { /* * Retrieve data point. */ val = g_ring_get_index(line->raw_data, gdouble, (int)i); /* * Once we get to UBER_LINE_GRAPH_NO_VALUE, we must be at the end of the data * sequence. This may not always be true in the future. */ if (val == UBER_LINE_GRAPH_NO_VALUE) { break; } /* * Translate value to coordinate system. */ if (!priv->scale(&priv->range, &pixel_range, &val, priv->scale_data)) { break; } /* * Calculate X/Y coordinate. */ y = (gint)(RECT_BOTTOM(*area) - val) - .5; x = epoch - (each * i); if (i == 0) { /* * Just move to the right position on first entry. */ cairo_move_to(cr, x, y); goto next; } else { /* * Draw curve to data point using the last X/Y positions as * control points. */ cairo_curve_to(cr, last_x - (each / 2.), last_y, last_x - (each / 2.), y, x, y); } next: last_y = y; last_x = x; } /* * Stroke the line content. */ cairo_stroke(cr); } /** * uber_line_graph_render: * @graph: A #UberGraph. * * Render the entire contents of the graph. * * Returns: None. * Side effects: None. */ static void uber_line_graph_render (UberGraph *graph, /* IN */ cairo_t *cr, /* IN */ GdkRectangle *rect, /* IN */ guint epoch, /* IN */ gfloat each) /* IN */ { UberLineGraphPrivate *priv; LineInfo *line; guint i; g_return_if_fail(UBER_IS_LINE_GRAPH(graph)); priv = UBER_LINE_GRAPH(graph)->priv; /* * Render each line to the graph. */ for (i = 0; i < priv->lines->len; i++) { line = &g_array_index(priv->lines, LineInfo, i); uber_line_graph_render_line(UBER_LINE_GRAPH(graph), cr, rect, line, epoch, each); } } /** * uber_line_graph_render_fast: * @graph: A #UberGraph. * * XXX * * Returns: None. * Side effects: None. */ static void uber_line_graph_render_fast (UberGraph *graph, /* IN */ cairo_t *cr, /* IN */ GdkRectangle *rect, /* IN */ guint epoch, /* IN */ gfloat each) /* IN */ { UberLineGraphPrivate *priv; UberRange pixel_range; LineInfo *line; gdouble last_y; gdouble y; guint i; g_return_if_fail(UBER_IS_LINE_GRAPH(graph)); g_return_if_fail(cr != NULL); g_return_if_fail(rect != NULL); priv = UBER_LINE_GRAPH(graph)->priv; pixel_range.begin = rect->y + 1; pixel_range.end = rect->y + rect->height; pixel_range.range = pixel_range.end - pixel_range.begin; /* * Render most recent data point for each line. */ for (i = 0; i < priv->lines->len; i++) { line = &g_array_index(priv->lines, LineInfo, i); uber_line_graph_stylize_line(UBER_LINE_GRAPH(graph), line, cr); /* * Calculate positions. */ y = g_ring_get_index(line->raw_data, gdouble, 0); last_y = g_ring_get_index(line->raw_data, gdouble, 1); /* * Don't try to draw before we have real values. */ if ((isnan(y) || isinf(y)) || (isnan(last_y) || isinf(last_y))) { continue; } /* * Translate to coordinate scale. */ if (!priv->scale(&priv->range, &pixel_range, &y, priv->scale_data) || !priv->scale(&priv->range, &pixel_range, &last_y, priv->scale_data)) { continue; } /* * Translate position from bottom right corner. */ y = (gint)(RECT_BOTTOM(*rect) - y) - .5; last_y = (gint)(RECT_BOTTOM(*rect) - last_y) - .5; /* * Convert relative position to fixed from bottom pixel. */ cairo_new_path(cr); cairo_move_to(cr, epoch, y); cairo_curve_to(cr, epoch - (each / 2.), y, epoch - (each / 2.), last_y, epoch - each, last_y); cairo_stroke(cr); } } /** * uber_line_graph_set_stride: * @graph: A #UberGraph. * @stride: The number of data points within the graph. * * XXX * * Returns: None. * Side effects: None. */ static void uber_line_graph_set_stride (UberGraph *graph, /* IN */ guint stride) /* IN */ { UberLineGraphPrivate *priv; LineInfo *line; guint i; g_return_if_fail(UBER_IS_LINE_GRAPH(graph)); priv = UBER_LINE_GRAPH(graph)->priv; priv->stride = stride; /* * TODO: Support changing stride after lines have been added. */ if (priv->lines->len) { for (i = 0; i < priv->lines->len; i++) { line = &g_array_index(priv->lines, LineInfo, i); g_ring_unref(line->raw_data); line->raw_data = g_ring_sized_new(sizeof(gdouble), priv->stride, NULL); uber_line_graph_init_ring(line->raw_data); } return; } } /** * uber_line_graph_get_range: * @graph: (in): A #UberLineGraph. * * XXX * * Returns: An #UberRange which should not be modified or freed. * Side effects: None. */ const UberRange* uber_line_graph_get_range (UberLineGraph *graph) /* IN */ { g_return_val_if_fail(UBER_IS_LINE_GRAPH(graph), NULL); return &graph->priv->range; } /** * uber_line_graph_set_range: * @graph: A #UberLineGraph. * * XXX * * Returns: None. * Side effects: None. */ void uber_line_graph_set_range (UberLineGraph *graph, /* IN */ const UberRange *range) /* IN */ { UberLineGraphPrivate *priv; g_return_if_fail(UBER_IS_LINE_GRAPH(graph)); g_return_if_fail(range != NULL); priv = graph->priv; priv->range = *range; } /** * uber_line_graph_get_yrange: * @graph: A #UberGraph. * * XXX * * Returns: None. * Side effects: None. */ static void uber_line_graph_get_yrange (UberGraph *graph, /* IN */ UberRange *range) /* OUT */ { UberLineGraphPrivate *priv; g_return_if_fail(UBER_IS_LINE_GRAPH(graph)); g_return_if_fail(range != NULL); priv = UBER_LINE_GRAPH(graph)->priv; *range = priv->range; } /** * uber_line_graph_set_line_dash: * @graph: A #UberLineGraph. * * XXX * * Returns: None. * Side effects: None. */ void uber_line_graph_set_line_dash (UberLineGraph *graph, /* IN */ guint line, /* IN */ const gdouble *dashes, /* IN */ gint num_dashes, /* IN */ gdouble offset) /* IN */ { UberLineGraphPrivate *priv; LineInfo *info; g_return_if_fail(UBER_IS_LINE_GRAPH(graph)); g_return_if_fail(dashes != NULL); g_return_if_fail(num_dashes > 0); g_return_if_fail(line > 0); g_return_if_fail(line <= graph->priv->lines->len); priv = graph->priv; info = &g_array_index(priv->lines, LineInfo, line - 1); if (info->dashes) { g_free(info->dashes); info->dashes = NULL; info->num_dashes = 0; info->dash_offset = 0; } if (dashes) { info->dashes = g_new0(gdouble, num_dashes); memcpy(info->dashes, dashes, sizeof(gdouble) * num_dashes); info->num_dashes = num_dashes; info->dash_offset = offset; } } /** * uber_line_graph_set_line_width: * @graph: A #UberLineGraph. * * XXX * * Returns: None. * Side effects: None. */ void uber_line_graph_set_line_width (UberLineGraph *graph, /* IN */ gint line, /* IN */ gdouble width) /* IN */ { LineInfo *info; g_return_if_fail(UBER_IS_LINE_GRAPH(graph)); g_return_if_fail(line > 0); g_return_if_fail(line <= (int)graph->priv->lines->len); info = &g_array_index(graph->priv->lines, LineInfo, line - 1); info->width = width; uber_graph_redraw(UBER_GRAPH(graph)); } /** * uber_line_graph_downscale: * @graph: A #UberGraph. * * XXX * * Returns: None. * Side effects: None. */ static gboolean uber_line_graph_downscale (UberGraph *graph) /* IN */ { UberLineGraphPrivate *priv; gboolean ret = FALSE; gdouble val = 0; gdouble cur; LineInfo *line; guint i; guint j; g_return_val_if_fail(UBER_IS_LINE_GRAPH(graph), FALSE); priv = UBER_LINE_GRAPH(graph)->priv; /* * If we are set to autoscale, ignore request. */ if (!priv->autoscale) { return FALSE; } /* * Determine the largest value available. */ for (i = 0; i < priv->lines->len; i++) { line = &g_array_index(priv->lines, LineInfo, i); for (j = 0; j < line->raw_data->len; j++) { cur = g_ring_get_index(line->raw_data, gdouble, (int)j); val = (cur > val) ? cur : val; } } /* * Downscale if we can. */ if (val != priv->range.begin) { if ((val * (1. + SCALE_FACTOR)) < priv->range.end) { priv->range.end = val * (1. + SCALE_FACTOR); priv->range.range = priv->range.end - priv->range.begin; ret = TRUE; } } return ret; } /** * uber_line_graph_finalize: * @object: A #UberLineGraph. * * Finalizer for a #UberLineGraph instance. Frees any resources held by * the instance. * * Returns: None. * Side effects: None. */ static void uber_line_graph_finalize (GObject *object) /* IN */ { UberLineGraphPrivate *priv; LineInfo *line; guint i; priv = UBER_LINE_GRAPH(object)->priv; /* * Clean up after cached values. */ for (i = 0; i < priv->lines->len; i++) { line = &g_array_index(priv->lines, LineInfo, i); g_ring_unref(line->raw_data); g_free(line->dashes); } G_OBJECT_CLASS(uber_line_graph_parent_class)->finalize(object); } /** * uber_line_graph_set_property: * @object: (in): A #GObject. * @prop_id: (in): The property identifier. * @value: (out): The given property. * @pspec: (in): A #ParamSpec. * * Get a given #GObject property. */ static void uber_line_graph_get_property (GObject *object, /* IN */ guint prop_id, /* IN */ GValue *value, /* OUT */ GParamSpec *pspec) /* IN */ { UberLineGraph *graph = UBER_LINE_GRAPH(object); switch (prop_id) { case PROP_AUTOSCALE: g_value_set_boolean(value, uber_line_graph_get_autoscale(graph)); break; case PROP_RANGE: g_value_set_boxed(value, uber_line_graph_get_range(graph)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); } } /** * uber_line_graph_set_property: * @object: (in): A #GObject. * @prop_id: (in): The property identifier. * @value: (in): The given property. * @pspec: (in): A #ParamSpec. * * Set a given #GObject property. */ static void uber_line_graph_set_property (GObject *object, /* IN */ guint prop_id, /* IN */ const GValue *value, /* IN */ GParamSpec *pspec) /* IN */ { UberLineGraph *graph = UBER_LINE_GRAPH(object); switch (prop_id) { case PROP_AUTOSCALE: uber_line_graph_set_autoscale(graph, g_value_get_boolean(value)); break; case PROP_RANGE: uber_line_graph_set_range(graph, g_value_get_boxed(value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); } } /** * uber_line_graph_class_init: * @klass: A #UberLineGraphClass. * * Initializes the #UberLineGraphClass and prepares the vtable. * * Returns: None. * Side effects: None. */ static void uber_line_graph_class_init (UberLineGraphClass *klass) /* IN */ { GObjectClass *object_class; UberGraphClass *graph_class; object_class = G_OBJECT_CLASS(klass); object_class->finalize = uber_line_graph_finalize; object_class->get_property = uber_line_graph_get_property; object_class->set_property = uber_line_graph_set_property; graph_class = UBER_GRAPH_CLASS(klass); graph_class->downscale = uber_line_graph_downscale; graph_class->get_next_data = uber_line_graph_get_next_data; graph_class->get_yrange = uber_line_graph_get_yrange; graph_class->render = uber_line_graph_render; graph_class->render_fast = uber_line_graph_render_fast; graph_class->set_stride = uber_line_graph_set_stride; g_object_class_install_property(object_class, PROP_AUTOSCALE, g_param_spec_boolean("autoscale", "autoscale", "autoscale", FALSE, G_PARAM_READWRITE)); g_object_class_install_property(object_class, PROP_RANGE, g_param_spec_boxed("range", "range", "range", UBER_TYPE_RANGE, G_PARAM_READWRITE)); } /** * uber_line_graph_init: * @graph: A #UberLineGraph. * * Initializes the newly created #UberLineGraph instance. * * Returns: None. * Side effects: None. */ static void uber_line_graph_init (UberLineGraph *graph) /* IN */ { UberLineGraphPrivate *priv; /* * Keep pointer to private data. */ graph->priv = uber_line_graph_get_instance_private(graph); priv = graph->priv; /* * Initialize defaults. */ priv->stride = 60; priv->antialias = CAIRO_ANTIALIAS_DEFAULT; priv->lines = g_array_sized_new(FALSE, FALSE, sizeof(LineInfo), 2); priv->scale = uber_scale_linear; priv->autoscale = TRUE; } void uber_line_graph_clear (UberLineGraph *graph) /* IN */ { UberLineGraphPrivate *priv = graph->priv; LineInfo *line; guint i; for (i = 0; i < priv->lines->len; i++) { line = &g_array_index(priv->lines, LineInfo, i); uber_line_graph_init_ring(line->raw_data); } } hardinfo2-hardinfo2-1331e88/deps/uber-graph/uber-line-graph.h000066400000000000000000000107731474767047500236740ustar00rootroot00000000000000/* uber-line-graph.h * * Copyright (C) 2010 Christian Hergert * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef __UBER_LINE_GRAPH_H__ #define __UBER_LINE_GRAPH_H__ #include #include "uber-graph.h" #include "uber-range.h" #include "uber-label.h" G_BEGIN_DECLS #define UBER_TYPE_LINE_GRAPH (uber_line_graph_get_type()) #define UBER_LINE_GRAPH(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UBER_TYPE_LINE_GRAPH, UberLineGraph)) #define UBER_LINE_GRAPH_CONST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UBER_TYPE_LINE_GRAPH, UberLineGraph const)) #define UBER_LINE_GRAPH_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), UBER_TYPE_LINE_GRAPH, UberLineGraphClass)) #define UBER_IS_LINE_GRAPH(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), UBER_TYPE_LINE_GRAPH)) #define UBER_IS_LINE_GRAPH_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), UBER_TYPE_LINE_GRAPH)) #define UBER_LINE_GRAPH_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), UBER_TYPE_LINE_GRAPH, UberLineGraphClass)) #define UBER_LINE_GRAPH_NO_VALUE (NAN) typedef struct _UberLineGraph UberLineGraph; typedef struct _UberLineGraphClass UberLineGraphClass; typedef struct _UberLineGraphPrivate UberLineGraphPrivate; /** * UberLineGraphFunc: * @graph: A #UberLineGraph. * @user_data: User data supplied to uber_line_graph_set_data_func(). * * Callback prototype for retrieving the next data point in the graph. * * Returns: a value if successful, otherwise %UBER_LINE_GRAPH_NO_VALUE * Side effects: Implementation dependent. */ typedef gdouble (*UberLineGraphFunc) (UberLineGraph *graph, guint line, gpointer user_data); struct _UberLineGraph { UberGraph parent; /*< private >*/ UberLineGraphPrivate *priv; }; struct _UberLineGraphClass { UberGraphClass parent_class; }; gint uber_line_graph_add_line (UberLineGraph *graph, const GdkRGBA *color, UberLabel *label); cairo_antialias_t uber_line_graph_get_antialias (UberLineGraph *graph); GType uber_line_graph_get_type (void) G_GNUC_CONST; GtkWidget* uber_line_graph_new (void); void uber_line_graph_set_antialias (UberLineGraph *graph, cairo_antialias_t antialias); void uber_line_graph_set_data_func (UberLineGraph *graph, UberLineGraphFunc func, gpointer user_data, GDestroyNotify notify); gboolean uber_line_graph_get_autoscale (UberLineGraph *graph); void uber_line_graph_set_autoscale (UberLineGraph *graph, gboolean autoscale); const UberRange* uber_line_graph_get_range (UberLineGraph *graph); void uber_line_graph_set_range (UberLineGraph *graph, const UberRange *range); void uber_line_graph_set_line_dash (UberLineGraph *graph, guint line, const gdouble *dashes, gint num_dashes, gdouble offset); void uber_line_graph_set_line_width (UberLineGraph *graph, gint line, gdouble width); void uber_line_graph_clear (UberLineGraph *graph); G_END_DECLS #endif /* __UBER_LINE_GRAPH_H__ */ hardinfo2-hardinfo2-1331e88/deps/uber-graph/uber-range.c000066400000000000000000000031231474767047500227240ustar00rootroot00000000000000/* uber-range.c * * Copyright (C) 2010 Christian Hergert * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include "uber-range.h" UberRange* uber_range_copy (UberRange *src) { UberRange *dst = g_new0(UberRange, 1); memcpy(dst, src, sizeof(UberRange)); return dst; } void uber_range_free (UberRange *range) { g_free(range); } UberRange* uber_range_new (gdouble begin, gdouble end) { UberRange *range; range = g_new0(UberRange, 1); range->begin = begin; range->end = end; range->range = range->end - range->begin; return range; } GType uber_range_get_type (void) { static gsize initialized = FALSE; GType type_id = 0; if (G_UNLIKELY(g_once_init_enter(&initialized))) { type_id = g_boxed_type_register_static("UberRange", (GBoxedCopyFunc)uber_range_copy, (GBoxedFreeFunc)uber_range_free); g_once_init_leave(&initialized, TRUE); } return type_id; } hardinfo2-hardinfo2-1331e88/deps/uber-graph/uber-range.h000066400000000000000000000026601474767047500227360ustar00rootroot00000000000000/* uber-range.h * * Copyright (C) 2010 Christian Hergert * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef __UBER_RANGE_H__ #define __UBER_RANGE_H__ #include G_BEGIN_DECLS #define UBER_TYPE_RANGE (uber_range_get_type()) /** * UberRange: * * #UberRange is a structure that encapsulates the range of a particular * scale. It contains the beginning value, ending value, and a pre-calculated * range between the values. */ typedef struct { gdouble begin; gdouble end; gdouble range; } UberRange; GType uber_range_get_type (void) G_GNUC_CONST; void uber_range_free (UberRange *range); UberRange* uber_range_copy (UberRange *range); UberRange* uber_range_new (gdouble begin, gdouble end); G_END_DECLS #endif /* __UBER_RANGE_H__ */ hardinfo2-hardinfo2-1331e88/deps/uber-graph/uber-scale.c000066400000000000000000000030461474767047500227230ustar00rootroot00000000000000/* uber-scale.c * * Copyright (C) 2010 Christian Hergert * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include "uber-scale.h" /** * uber_scale_linear: * @range: An #UberRange. * @pixel_range: An #UberRange. * @value: A pointer to the value to translate. * @user_data: user data for scale. * * An #UberScale function to translate a value to the coordinate system in * a linear fashion. * * Returns: %TRUE if successful; otherwise %FALSE. * Side effects: None. */ gboolean uber_scale_linear (const UberRange *range, /* IN */ const UberRange *pixel_range, /* IN */ gdouble *value, /* IN/OUT */ gpointer user_data) /* IN */ { #define A (range->range) #define B (pixel_range->range) #define C (*value) if (*value != 0.) { *value = C * B / A; } #undef A #undef B #undef C return TRUE; } hardinfo2-hardinfo2-1331e88/deps/uber-graph/uber-scale.h000066400000000000000000000024511474767047500227270ustar00rootroot00000000000000/* uber-scale.h * * Copyright (C) 2010 Christian Hergert * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef __UBER_SCALE_H__ #define __UBER_SCALE_H__ #include "uber-range.h" G_BEGIN_DECLS typedef gboolean (*UberScale) (const UberRange *range, const UberRange *pixel_range, gdouble *value, gpointer user_data); gboolean uber_scale_linear (const UberRange *range, const UberRange *pixel_range, gdouble *value, gpointer user_data); G_END_DECLS #endif /* __UBER_SCALE_H__ */ hardinfo2-hardinfo2-1331e88/deps/uber-graph/uber-scatter.c000066400000000000000000000222001474767047500232720ustar00rootroot00000000000000/* uber-scatter.c * * Copyright (C) 2010 Christian Hergert * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include #include #include "uber-scatter.h" #include "uber-scale.h" #include "uber-range.h" #include "g-ring.h" #define RADIUS 3 /** * SECTION:uber-scatter.h * @title: UberScatter * @short_description: * * Section overview. */ struct _UberScatterPrivate { GRing *raw_data; UberRange range; guint stride; GdkRGBA fg_color; gboolean fg_color_set; UberScatterFunc func; gpointer func_user_data; GDestroyNotify func_destroy; }; G_DEFINE_TYPE_WITH_PRIVATE(UberScatter, uber_scatter, UBER_TYPE_GRAPH) /** * uber_scatter_new: * * Creates a new instance of #UberScatter. * * Returns: the newly created instance of #UberScatter. * Side effects: None. */ GtkWidget* uber_scatter_new (void) { UberScatter *scatter; scatter = g_object_new(UBER_TYPE_SCATTER, NULL); return GTK_WIDGET(scatter); } /** * uber_scatter_set_data_func: * @scatter: A #UberScatter. * * XXX * * Returns: None. * Side effects: None. */ void uber_scatter_set_data_func (UberScatter *scatter, /* IN */ UberScatterFunc func, /* IN */ gpointer user_data, /* IN */ GDestroyNotify destroy) /* IN */ { UberScatterPrivate *priv; g_return_if_fail(UBER_IS_SCATTER(scatter)); g_return_if_fail(func != NULL); priv = scatter->priv; /* * Cleanup previous data func if necessary. */ if (priv->func_destroy) { priv->func_destroy(priv->func_user_data); } priv->func = func; priv->func_destroy = destroy; priv->func_user_data = user_data; } /** * uber_scatter_destroy_array: * @array: A #GArray. * * XXX * * Returns: None. * Side effects: None. */ static void uber_scatter_destroy_array (gpointer data) /* IN */ { GArray **ar = data; if (ar) { g_array_unref(*ar); } } /** * uber_scatter_set_stride: * @graph: A #UberGraph. * * XXX * * Returns: None. * Side effects: None. */ static void uber_scatter_set_stride (UberGraph *graph, /* IN */ guint stride) /* IN */ { UberScatterPrivate *priv; g_return_if_fail(UBER_IS_SCATTER(graph)); priv = UBER_SCATTER(graph)->priv; if (priv->stride == stride) { return; } priv->stride = stride; if (priv->raw_data) { g_ring_unref(priv->raw_data); } priv->raw_data = g_ring_sized_new(sizeof(GArray*), stride, uber_scatter_destroy_array); } /** * uber_scatter_render: * @graph: A #UberGraph. * * XXX * * Returns: None. * Side effects: None. */ static void uber_scatter_render (UberGraph *graph, /* IN */ cairo_t *cr, /* IN */ GdkRectangle *area, /* IN */ guint epoch, /* IN */ gfloat each) /* IN */ { UberScatterPrivate *priv; UberRange pixel_range; GtkStyleContext *style; GdkRGBA color; GArray *ar; gdouble x; gdouble y; guint i; guint j; g_return_if_fail(UBER_IS_SCATTER(graph)); priv = UBER_SCATTER(graph)->priv; color = priv->fg_color; if (!priv->fg_color_set) { style = gtk_widget_get_style_context(GTK_WIDGET(graph)); gtk_style_context_get_color(style, GTK_STATE_FLAG_SELECTED, &color); } /* * Calculate ranges. */ pixel_range.begin = area->y + (RADIUS / 2.); pixel_range.end = area->y + area->height - RADIUS; pixel_range.range = pixel_range.end - pixel_range.begin; /* * Retrieve the current data set. */ for (i = 0; i < priv->raw_data->len; i++) { if (!(ar = g_ring_get_index(priv->raw_data, GArray*, (int)i))) { continue; } x = epoch - (i * each) - (each / 2.); for (j = 0; j < ar->len; j++) { y = g_array_index(ar, gdouble, j); // g_debug("Raw ==> %f", y); uber_scale_linear(&priv->range, &pixel_range, &y, NULL); /* * Shadow. */ cairo_arc(cr, x + .5, y + .5, RADIUS, 0, 2 * M_PI); cairo_set_source_rgb(cr, .1, .1, .1); cairo_fill(cr); /* * Foreground. */ cairo_arc(cr, x, y, RADIUS, 0, 2 * M_PI); cairo_set_source_rgb(cr, color.red, color.green, color.blue); cairo_fill(cr); } } } /** * uber_scatter_render_fast: * @graph: A #UberGraph. * * XXX * * Returns: None. * Side effects: None. */ static void uber_scatter_render_fast (UberGraph *graph, /* IN */ cairo_t *cr, /* IN */ GdkRectangle *area, /* IN */ guint epoch, /* IN */ gfloat each) /* IN */ { UberScatterPrivate *priv; UberRange pixel_range; GtkStyleContext *style; GdkRGBA color; GArray *ar; gdouble x; gdouble y; guint i; g_return_if_fail(UBER_IS_SCATTER(graph)); priv = UBER_SCATTER(graph)->priv; color = priv->fg_color; if (!priv->fg_color_set) { style = gtk_widget_get_style_context(GTK_WIDGET(graph)); gtk_style_context_get_color(style, GTK_STATE_FLAG_SELECTED, &color); } /* * Calculate ranges. */ pixel_range.begin = area->y + (RADIUS / 2.); pixel_range.end = area->y + area->height - RADIUS; pixel_range.range = pixel_range.end - pixel_range.begin; /* * Retrieve the current data set. */ ar = g_ring_get_index(priv->raw_data, GArray*, 0); if (!ar) { return; } /* * Calculate X position (Center of this chunk). */ x = epoch - (each / 2.); /* * Draw scatter dots. */ for (i = 0; i < ar->len; i++) { /* * Scale the value to our graph coordinates. */ y = g_array_index(ar, gdouble, i); /* * XXX: Support multiple scales. */ uber_scale_linear(&priv->range, &pixel_range, &y, NULL); /* * Shadow. */ cairo_arc(cr, x + .5, y + .5, RADIUS, 0, 2 * M_PI); cairo_set_source_rgb(cr, .1, .1, .1); cairo_fill(cr); /* * Foreground. */ cairo_arc(cr, x, y, RADIUS, 0, 2 * M_PI); cairo_set_source_rgb(cr, color.red, color.green, color.blue); cairo_fill(cr); } } /** * uber_scatter_get_next_data: * @graph: A #UberGraph. * * Retrieve the next data point for the graph. * * Returns: None. * Side effects: None. */ static gboolean uber_scatter_get_next_data (UberGraph *graph) /* IN */ { UberScatterPrivate *priv; GArray *array = NULL; g_return_val_if_fail(UBER_IS_SCATTER(graph), FALSE); priv = UBER_SCATTER(graph)->priv; if (priv->func) { if (!priv->func(UBER_SCATTER(graph), &array, priv->func_user_data)) { array = NULL; } g_ring_append_val(priv->raw_data, array); return TRUE; } return FALSE; } /** * uber_scatter_set_fg_color: * @scatter: A #UberScatter. * * XXX * * Returns: None. * Side effects: None. */ void uber_scatter_set_fg_color (UberScatter *scatter, /* IN */ const GdkRGBA *color) /* IN */ { UberScatterPrivate *priv; g_return_if_fail(UBER_IS_SCATTER(scatter)); priv = scatter->priv; if (color) { priv->fg_color = *color; priv->fg_color_set = TRUE; } else { memset(&priv->fg_color, 0, sizeof(priv->fg_color)); priv->fg_color_set = FALSE; } } /** * uber_scatter_finalize: * @object: A #UberScatter. * * Finalizer for a #UberScatter instance. Frees any resources held by * the instance. * * Returns: None. * Side effects: None. */ static void uber_scatter_finalize (GObject *object) /* IN */ { G_OBJECT_CLASS(uber_scatter_parent_class)->finalize(object); } /** * uber_scatter_class_init: * @klass: A #UberScatterClass. * * Initializes the #UberScatterClass and prepares the vtable. * * Returns: None. * Side effects: None. */ static void uber_scatter_class_init (UberScatterClass *klass) /* IN */ { GObjectClass *object_class; UberGraphClass *graph_class; object_class = G_OBJECT_CLASS(klass); object_class->finalize = uber_scatter_finalize; graph_class = UBER_GRAPH_CLASS(klass); graph_class->render = uber_scatter_render; graph_class->render_fast = uber_scatter_render_fast; graph_class->set_stride = uber_scatter_set_stride; graph_class->get_next_data = uber_scatter_get_next_data; } /** * uber_scatter_init: * @scatter: A #UberScatter. * * Initializes the newly created #UberScatter instance. * * Returns: None. * Side effects: None. */ static void uber_scatter_init (UberScatter *scatter) /* IN */ { UberScatterPrivate *priv; scatter->priv = uber_scatter_get_instance_private(scatter); priv = scatter->priv; priv->range.begin = 0.; priv->range.end = 15000.; priv->range.range = priv->range.end - priv->range.begin; } hardinfo2-hardinfo2-1331e88/deps/uber-graph/uber-scatter.h000066400000000000000000000047711474767047500233140ustar00rootroot00000000000000/* uber-scatter.h * * Copyright (C) 2010 Christian Hergert * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef __UBER_SCATTER_H__ #define __UBER_SCATTER_H__ #include "uber-graph.h" G_BEGIN_DECLS #define UBER_TYPE_SCATTER (uber_scatter_get_type()) #define UBER_SCATTER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UBER_TYPE_SCATTER, UberScatter)) #define UBER_SCATTER_CONST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UBER_TYPE_SCATTER, UberScatter const)) #define UBER_SCATTER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), UBER_TYPE_SCATTER, UberScatterClass)) #define UBER_IS_SCATTER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), UBER_TYPE_SCATTER)) #define UBER_IS_SCATTER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), UBER_TYPE_SCATTER)) #define UBER_SCATTER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), UBER_TYPE_SCATTER, UberScatterClass)) typedef struct _UberScatter UberScatter; typedef struct _UberScatterClass UberScatterClass; typedef struct _UberScatterPrivate UberScatterPrivate; typedef gboolean (*UberScatterFunc) (UberScatter *scatter, GArray **values, gpointer user_data); struct _UberScatter { UberGraph parent; /*< private >*/ UberScatterPrivate *priv; }; struct _UberScatterClass { UberGraphClass parent_class; }; GType uber_scatter_get_type (void) G_GNUC_CONST; GtkWidget* uber_scatter_new (void); void uber_scatter_set_fg_color (UberScatter *scatter, const GdkRGBA *color); void uber_scatter_set_data_func (UberScatter *scatter, UberScatterFunc func, gpointer user_data, GDestroyNotify destroy); G_END_DECLS #endif /* __UBER_SCATTER_H__ */ hardinfo2-hardinfo2-1331e88/deps/uber-graph/uber-timeout-interval.c000066400000000000000000000075421474767047500251510ustar00rootroot00000000000000/* * Clutter. * * An OpenGL based 'interactive canvas' library. * * Authored By Neil Roberts * * Copyright (C) 2009 Intel Corporation. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library. If not, see . */ #ifdef HAVE_CONFIG_H #include "config.h" #endif /* This file contains the common code to check whether an interval has expired used in uber-frame-source and uber-timeout-pool. */ #include "uber-timeout-interval.h" void _uber_timeout_interval_init (UberTimeoutInterval *interval, guint fps) { #if GLIB_CHECK_VERSION (2, 27, 3) interval->start_time = g_get_monotonic_time () / 1000; #else { GTimeVal start_time; g_get_current_time (&start_time); interval->start_time = start_time.tv_sec * 1000 + start_time.tv_usec / 1000; } #endif interval->fps = fps; interval->frame_count = 0; } static gint64 _uber_timeout_interval_get_ticks (gint64 current_time, UberTimeoutInterval *interval) { return MAX (current_time - interval->start_time, 0); } gboolean _uber_timeout_interval_prepare (gint64 current_time, UberTimeoutInterval *interval, gint *delay) { guint elapsed_time, new_frame_num; elapsed_time = _uber_timeout_interval_get_ticks (current_time, interval); new_frame_num = elapsed_time * interval->fps / 1000; /* If time has gone backwards or the time since the last frame is greater than the two frames worth then reset the time and do a frame now */ if (new_frame_num < interval->frame_count || new_frame_num - interval->frame_count > 2) { /* Get the frame time rounded up to the nearest ms */ guint frame_time = (1000 + interval->fps - 1) / interval->fps; /* Reset the start time */ interval->start_time = current_time; /* Move the start time as if one whole frame has elapsed */ interval->start_time -= frame_time; interval->frame_count = 0; if (delay) *delay = 0; return TRUE; } else if (new_frame_num > interval->frame_count) { if (delay) *delay = 0; return TRUE; } else { if (delay) *delay = ((interval->frame_count + 1) * 1000 / interval->fps - elapsed_time); return FALSE; } } gboolean _uber_timeout_interval_dispatch (UberTimeoutInterval *interval, GSourceFunc callback, gpointer user_data) { if ((* callback) (user_data)) { interval->frame_count++; return TRUE; } return FALSE; } gint _uber_timeout_interval_compare_expiration (const UberTimeoutInterval *a, const UberTimeoutInterval *b) { guint a_delay = 1000 / a->fps; guint b_delay = 1000 / b->fps; gint64 b_difference; gint comparison; b_difference = a->start_time - b->start_time; comparison = ((gint) (((gint64)a->frame_count + 1) * a_delay) - (gint) (((gint64)b->frame_count + 1) * b_delay + b_difference)); return (comparison < 0 ? -1 : comparison > 0 ? 1 : 0); } hardinfo2-hardinfo2-1331e88/deps/uber-graph/uber-timeout-interval.h000066400000000000000000000035211474767047500251470ustar00rootroot00000000000000/* * Clutter. * * An OpenGL based 'interactive canvas' library. * * Authored By Neil Roberts * * Copyright (C) 2009 Intel Corporation. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library. If not, see . */ #ifndef __UBER_TIMEOUT_INTERVAL_H__ #define __UBER_TIMEOUT_INTERVAL_H__ #include G_BEGIN_DECLS typedef struct _UberTimeoutInterval UberTimeoutInterval; struct _UberTimeoutInterval { gint64 start_time; guint frame_count, fps; }; void _uber_timeout_interval_init (UberTimeoutInterval *interval, guint fps); gboolean _uber_timeout_interval_prepare (gint64 current_time, UberTimeoutInterval *interval, gint *delay); gboolean _uber_timeout_interval_dispatch (UberTimeoutInterval *interval, GSourceFunc callback, gpointer user_data); gint _uber_timeout_interval_compare_expiration (const UberTimeoutInterval *a, const UberTimeoutInterval *b); G_END_DECLS #endif /* __UBER_TIMEOUT_INTERVAL_H__ */ hardinfo2-hardinfo2-1331e88/deps/uber-graph/uber-window.c000066400000000000000000000172271474767047500231510ustar00rootroot00000000000000/* uber-window.c * * Copyright (C) 2010 Christian Hergert * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include "uber-window.h" /** * SECTION:uber-window.h * @title: UberWindow * @short_description: * * Section overview. */ struct _UberWindowPrivate { gint graph_count; GList *graphs; GtkWidget *notebook; GtkWidget *table; }; G_DEFINE_TYPE_WITH_PRIVATE(UberWindow, uber_window, GTK_TYPE_WINDOW) /** * uber_window_new: * * Creates a new instance of #UberWindow. * * Returns: the newly created instance of #UberWindow. * Side effects: None. */ GtkWidget* uber_window_new (void) { UberWindow *window; window = g_object_new(UBER_TYPE_WINDOW, NULL); return GTK_WIDGET(window); } /** * uber_window_show_labels: * @window: A #UberWindow. * * XXX * * Returns: None. * Side effects: None. */ void uber_window_show_labels (UberWindow *window, /* IN */ UberGraph *graph) /* IN */ { UberWindowPrivate *priv; GtkWidget *labels; GtkWidget *align; GList *list; gboolean show; g_return_if_fail(UBER_IS_WINDOW(window)); g_return_if_fail(UBER_IS_GRAPH(graph)); priv = window->priv; /* * Get the widgets labels. */ labels = uber_graph_get_labels(graph); /* * Show/hide ticks and labels. */ show = !!labels; if (labels) { align = gtk_bin_get_child(GTK_BIN(labels)); list = gtk_container_get_children(GTK_CONTAINER(align)); if (list) { gtk_widget_show(labels); } else { gtk_widget_hide(labels); show = FALSE; } g_list_free(list); } if (graph == (gpointer)g_list_last(priv->graphs)) { show = TRUE; } uber_graph_set_show_xlabels(graph, show); /* * Hide labels/xlabels for other graphs. */ for (list = priv->graphs; list && list->next; list = list->next) { if (list->data != graph) { uber_graph_set_show_xlabels(list->data, FALSE); labels = uber_graph_get_labels(list->data); if (labels) { gtk_widget_hide(labels); } } } /* * Ensure the last graph always has labels. */ if (list) { uber_graph_set_show_xlabels(UBER_GRAPH(list->data), TRUE); } } /** * uber_window_hide_labels: * @window: A #UberWindow. * * XXX * * Returns: None. * Side effects: None. */ void uber_window_hide_labels (UberWindow *window, /* IN */ UberGraph *graph) /* IN */ { UberWindowPrivate *priv; GtkWidget *labels; gboolean show; g_return_if_fail(UBER_IS_WINDOW(window)); g_return_if_fail(UBER_IS_GRAPH(graph)); priv = window->priv; labels = uber_graph_get_labels(graph); if (labels) { gtk_widget_hide(labels); } show = g_list_last(priv->graphs) == (gpointer)graph; uber_graph_set_show_xlabels(graph, show); } static gboolean uber_window_graph_button_press_event (GtkWidget *widget, /* IN */ GdkEventButton *button, /* IN */ UberWindow *window) /* IN */ { GtkWidget *labels; g_return_val_if_fail(UBER_IS_WINDOW(window), FALSE); g_return_val_if_fail(UBER_IS_GRAPH(widget), FALSE); switch (button->button) { case 1: /* Left click */ labels = uber_graph_get_labels(UBER_GRAPH(widget)); if (gtk_widget_get_visible(labels)) { uber_window_hide_labels(window, UBER_GRAPH(widget)); } else { uber_window_show_labels(window, UBER_GRAPH(widget)); } break; default: break; } return FALSE; } /** * uber_window_add_graph: * @window: A #UberWindow. * * XXX * * Returns: None. * Side effects: None. */ void uber_window_add_graph (UberWindow *window, /* IN */ UberGraph *graph, /* IN */ const gchar *title) /* IN */ { UberWindowPrivate *priv; GtkWidget *vbox; GtkWidget *hbox; GtkWidget *label; GtkWidget *labels; gchar *formatted; gint left_attach; gint top_attach; g_return_if_fail(UBER_IS_WINDOW(window)); priv = window->priv; /* * Format title string. */ formatted = g_markup_printf_escaped("%s", title); /* * Create container for graph. */ vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 3); label = gtk_label_new(NULL); labels = uber_graph_get_labels(graph); gtk_label_set_markup(GTK_LABEL(label), formatted); gtk_label_set_angle(GTK_LABEL(label), -270.); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, TRUE, 0); gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(graph), TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(hbox), vbox, TRUE, TRUE, 0); if (labels) { gtk_box_pack_start(GTK_BOX(vbox), labels, FALSE, TRUE, 0); } gtk_widget_show(label); gtk_widget_show(hbox); gtk_widget_show(vbox); /* * Append graph to table. */ left_attach = 0; top_attach = priv->graph_count; // % 4; gtk_grid_attach(GTK_GRID(priv->table), hbox, left_attach, top_attach, 1, 1); /* * Attach signal to show ticks when label is shown. */ g_signal_connect_after(graph, "button-press-event", G_CALLBACK(uber_window_graph_button_press_event), window); priv->graphs = g_list_append(priv->graphs, graph); /* * Cleanup. */ g_free(formatted); priv->graph_count++; } /** * uber_window_finalize: * @object: A #UberWindow. * * Finalizer for a #UberWindow instance. Frees any resources held by * the instance. * * Returns: None. * Side effects: None. */ static void uber_window_finalize (GObject *object) /* IN */ { UberWindowPrivate *priv; priv = UBER_WINDOW(object)->priv; g_list_free(priv->graphs); G_OBJECT_CLASS(uber_window_parent_class)->finalize(object); } /** * uber_window_class_init: * @klass: A #UberWindowClass. * * Initializes the #UberWindowClass and prepares the vtable. * * Returns: None. * Side effects: None. */ static void uber_window_class_init (UberWindowClass *klass) /* IN */ { GObjectClass *object_class; object_class = G_OBJECT_CLASS(klass); object_class->finalize = uber_window_finalize; } /** * uber_window_init: * @window: A #UberWindow. * * Initializes the newly created #UberWindow instance. * * Returns: None. * Side effects: None. */ static void uber_window_init (UberWindow *window) /* IN */ { UberWindowPrivate *priv; window->priv = uber_window_get_instance_private(window); /* * Initialize defaults. */ priv = window->priv; gtk_window_set_title(GTK_WINDOW(window), "Uber Graph"); gtk_window_set_default_size(GTK_WINDOW(window), 750, 550); gtk_container_set_border_width(GTK_CONTAINER(window), 12); /* * Create notebook container for pages. */ priv->notebook = gtk_notebook_new(); gtk_notebook_set_show_border(GTK_NOTEBOOK(priv->notebook), FALSE); gtk_notebook_set_show_tabs(GTK_NOTEBOOK(priv->notebook), FALSE); gtk_container_add(GTK_CONTAINER(window), priv->notebook); gtk_widget_show(priv->notebook); /* * Create table for graphs. */ priv->table = gtk_grid_new(); gtk_grid_set_row_homogeneous(GTK_GRID(priv->table), TRUE); gtk_grid_set_column_homogeneous(GTK_GRID(priv->table), TRUE); gtk_notebook_append_page(GTK_NOTEBOOK(priv->notebook), priv->table, NULL); gtk_widget_show(priv->table); } hardinfo2-hardinfo2-1331e88/deps/uber-graph/uber-window.h000066400000000000000000000044771474767047500231610ustar00rootroot00000000000000/* uber-window.h * * Copyright (C) 2010 Christian Hergert * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef __UBER_WINDOW_H__ #define __UBER_WINDOW_H__ #include #include "uber-graph.h" G_BEGIN_DECLS #define UBER_TYPE_WINDOW (uber_window_get_type()) #define UBER_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UBER_TYPE_WINDOW, UberWindow)) #define UBER_WINDOW_CONST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UBER_TYPE_WINDOW, UberWindow const)) #define UBER_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), UBER_TYPE_WINDOW, UberWindowClass)) #define UBER_IS_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), UBER_TYPE_WINDOW)) #define UBER_IS_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), UBER_TYPE_WINDOW)) #define UBER_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), UBER_TYPE_WINDOW, UberWindowClass)) typedef struct _UberWindow UberWindow; typedef struct _UberWindowClass UberWindowClass; typedef struct _UberWindowPrivate UberWindowPrivate; struct _UberWindow { GtkWindow parent; /*< private >*/ UberWindowPrivate *priv; }; struct _UberWindowClass { GtkWindowClass parent_class; }; GType uber_window_get_type (void) G_GNUC_CONST; GtkWidget* uber_window_new (void); void uber_window_add_graph (UberWindow *window, UberGraph *graph, const gchar *title); void uber_window_show_labels (UberWindow *window, UberGraph *graph); void uber_window_hide_labels (UberWindow *window, UberGraph *graph); G_END_DECLS #endif /* __UBER_WINDOW_H__ */ hardinfo2-hardinfo2-1331e88/deps/uber-graph/uber.h000066400000000000000000000017141474767047500216430ustar00rootroot00000000000000/* uber.h * * Copyright (C) 2010 Christian Hergert * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef __UBER_H__ #define __UBER_H__ #include "uber-graph.h" #include "uber-line-graph.h" #include "uber-heat-map.h" #include "uber-range.h" #include "uber-scatter.h" #include "uber-scale.h" #include "uber-window.h" #endif /* __UBER_H__ */ hardinfo2-hardinfo2-1331e88/hardinfo2.1000066400000000000000000000037401474767047500175050ustar00rootroot00000000000000.\" Manpage for hardinfo. .\" https://github.com/hwspeedy/hardinfo2/. .TH HARDINFO "1" "April 2024" "2.0" "User Commands" .SH NAME \fBHardinfo2\fR \- System Information and Benchmark for Linux Systems. .SH USAGE \fBhardinfo2\fR [OPTION...] .SH DESCRIPTION Is a system information and benchmark for Linux systems, that gathers information about the hardware and operating system, performs benchmarks with online compare against other machines, and generates reports. .SH OPTIONS .TP \fB\-h\fR, \fB\-\-help\fR Show help options .TP \fB\-q\fR, \fB\-\-quiet\fR do not print status messages to standard output .TP \fB\-r\fR, \fB\-\-generate\-report\fR creates a report and prints to standard output .TP \fB\-f\fR, \fB\-\-report\-format\fR chooses a report format (text, html) .TP \fB\-g\fR, \fB\-\-result\-format\fR chooses a result format (short, conf, shell) .TP \fB\-n\fR, \fB\-\-max\-results\fR maximum number of benchmark results to include (-1 for no limit, default is 50) .TP \fB\-b\fR, \fB\-\-run\-benchmark\fR run a specific benchmark eg. -b 'FPU FFT' (Default all benchmarks runs when generate report) .TP \fB\-s\fR, \fB\-\-skip\-benchmark\fR Disables all benchmark runs. .TP \fB\-u\fR, \fB\-\-user\-note\fR adds a user note to data send to server. When added eg. -u 1 synchronization is activated. .TP \fB\-w\fR, \fB\-\-very\-verbose\fR show all details .TP \fB\-v\fR, \fB\-\-version\fR shows program version and quit .SH EXAMPLES examples of CLI command usage:\fR .TP hardinfo2 -b 'FPU FFT' runs only FPU FFT benchmark .TP hardinfo2 -u 1 enable updates at startup and starts gui (can also be set in gui) .TP hardinfo2 -u SBC-DK -r updates data from server, generate CLI report and sends benchmark with user-note .TP hardinfo2 -r generates CLI report .SH COPYRIGHT \fBHardinfo2\fR is Copyright \(co 2003-2023 L. A. F. Pereira, 2024- Hardinfo2 Project\fR. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. hardinfo2-hardinfo2-1331e88/hardinfo2.desktop.cmake000066400000000000000000000012471474767047500220750ustar00rootroot00000000000000[Desktop Entry] Name=Hardinfo2 Name[zh_CN]=硬件信息 Comment=System Information and Benchmark Comment[de]=Systeminformationen und Benchmark Comment[ru]=Информация о системе и тесты Comment[zh_CN]=系统信息及性能测试 Exec=hardinfo2 Icon=hardinfo2 Terminal=false Type=Application StartupNotify=true Categories=System;Utility; Keywords=linux;kernel;system;hardware;cpu;processor;capabilities;frequency;memory;ram;board;resources;sensors;devices;usb;pci;display;network;benchmark;test; Keywords[zh_CN]=linux;内核;系统;硬件;cpu;处理器;capabilities;频率;内存;ram;主板;资源;传感器;设备;usb;pci;显示;网络;性能测试;测试; hardinfo2-hardinfo2-1331e88/hardinfo2/000077500000000000000000000000001474767047500174175ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/hardinfo2/cpu_util.c000066400000000000000000000176521474767047500214220ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2006 L. A. F. Pereira * This file by Burt P. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "hardinfo.h" #include "cpu_util.h" #include "cpubits.h" #define CPU_TOPO_NULL -9877 const gchar *byte_order_str() { #if G_BYTE_ORDER == G_LITTLE_ENDIAN return _("Little Endian"); #else return _("Big Endian"); #endif } int processor_has_flag(gchar * strflags, gchar * strflag) { gchar **flags; gint ret = 0; if (strflags == NULL || strflag == NULL) return 0; flags = g_strsplit(strflags, " ", 0); ret = g_strv_contains((const gchar * const *)flags, strflag); g_strfreev(flags); return ret; } gchar* get_cpu_str(const gchar* file, gint cpuid) { gchar *tmp0 = NULL; gchar *tmp1 = NULL; tmp0 = g_strdup_printf("/sys/devices/system/cpu/cpu%d/%s", cpuid, file); g_file_get_contents(tmp0, &tmp1, NULL, NULL); g_free(tmp0); return tmp1; } gint get_cpu_int(const char* item, int cpuid, int null_val) { gchar *fc = NULL; int ret = null_val; fc = get_cpu_str(item, cpuid); if (fc) { ret = atol(fc); g_free(fc); } return ret; } /* cpubits is 32768 bits long * core_ids are not unique among physical_ids * hack up cpubits into 128 packs of 256 cores * to make cores unique in cpubits */ #define MAX_CORES_PER_PACK 256 #define MAX_PACKS 128 int cpu_procs_cores_threads_nodes(int *p, int *c, int *t, int *n) { cpubits *threads, *cores, *packs; char *tmp; int i, m, pack_id, core_id; g_file_get_contents("/sys/devices/system/cpu/present", &tmp, NULL, NULL); if (tmp == NULL) { *p = *c = *t = *n = -1; return 0; } threads = cpubits_from_str(tmp); cores = cpubits_from_str(""); packs = cpubits_from_str(""); m = cpubits_max(threads); for (i = 0; i <= m; i++) { pack_id = get_cpu_int("topology/physical_package_id", i, CPU_TOPO_NULL); core_id = get_cpu_int("topology/core_id", i, CPU_TOPO_NULL); if (pack_id < 0) pack_id = 0; CPUBIT_SET(packs, pack_id); if (core_id >= 0) { CPUBIT_SET(cores, (pack_id * MAX_CORES_PER_PACK) + core_id); } } *t = cpubits_count(threads); *c = cpubits_count(cores); //HACK: Arms cores are described different in topology, only Cortex-A65 is multithreaded so this fix is for 99% #ifdef ARCH_arm *c = *t; #endif *p = cpubits_count(packs); *n = 1; g_free(tmp); g_file_get_contents("/sys/devices/system/node/possible", &tmp, NULL, NULL); if (tmp != NULL) { cpubits *nodes = cpubits_from_str(tmp); if (nodes) *n = cpubits_count(nodes); free(nodes); } if (!*c) *c = *t; //if no cores, set to threads - probably SBC, best for benchmark if (!*p) *p = 1; if (!*n) *n = 1; g_free(threads); g_free(cores); g_free(packs); g_free(tmp); return 1; } cpufreq_data *cpufreq_new(gint id) { cpufreq_data *cpufd; cpufd = malloc(sizeof(cpufreq_data)); if (cpufd) { memset(cpufd, 0, sizeof(cpufreq_data)); cpufd->id = id; cpufreq_update(cpufd, 0); } return cpufd; } void cpufreq_update(cpufreq_data *cpufd, int cur_only) { if (cpufd) { cpufd->cpukhz_cur = get_cpu_int("cpufreq/scaling_cur_freq", cpufd->id, 0); if (cur_only) return; cpufd->scaling_driver = get_cpu_str("cpufreq/scaling_driver", cpufd->id); cpufd->scaling_governor = get_cpu_str("cpufreq/scaling_governor", cpufd->id); cpufd->transition_latency = get_cpu_int("cpufreq/cpuinfo_transition_latency", cpufd->id, 0); cpufd->cpukhz_min = get_cpu_int("cpufreq/scaling_min_freq", cpufd->id, 0); cpufd->cpukhz_max = get_cpu_int("cpufreq/scaling_max_freq", cpufd->id, 0); if (cpufd->scaling_driver == NULL) cpufd->scaling_driver = g_strdup("(Unknown)"); if (cpufd->scaling_governor == NULL) cpufd->scaling_governor = g_strdup("(Unknown)"); /* x86 uses freqdomain_cpus, all others use affected_cpus */ cpufd->shared_list = get_cpu_str("cpufreq/freqdomain_cpus", cpufd->id); if (cpufd->shared_list == NULL) cpufd->shared_list = get_cpu_str("cpufreq/affected_cpus", cpufd->id); if (cpufd->shared_list == NULL) cpufd->shared_list = g_strdup_printf("%d", cpufd->id); } } void cpufreq_free(cpufreq_data *cpufd) { if (cpufd) { g_free(cpufd->scaling_driver); g_free(cpufd->scaling_governor); } g_free(cpufd); } cpu_topology_data *cputopo_new(gint id) { cpu_topology_data *cputd; cputd = malloc(sizeof(cpu_topology_data)); if (cputd) { memset(cputd, 0, sizeof(cpu_topology_data)); cputd->id = id; cputd->socket_id = get_cpu_int("topology/physical_package_id", id, CPU_TOPO_NULL); cputd->core_id = get_cpu_int("topology/core_id", id, CPU_TOPO_NULL); cputd->book_id = get_cpu_int("topology/book_id", id, CPU_TOPO_NULL); cputd->drawer_id = get_cpu_int("topology/drawer_id", id, CPU_TOPO_NULL); } return cputd; } void cputopo_free(cpu_topology_data *cputd) { g_free(cputd); } gchar *cpufreq_section_str(cpufreq_data *cpufd) { if (cpufd == NULL) return g_strdup(""); if (cpufd->cpukhz_min || cpufd->cpukhz_max || cpufd->cpukhz_cur) { return g_strdup_printf( "[%s]\n" "%s=%d %s\n" "%s=%d %s\n" "%s=%d %s\n" "%s=%d %s\n" "%s=%s\n" "%s=%s\n", _("Frequency Scaling"), _("Minimum"), cpufd->cpukhz_min, _("kHz"), _("Maximum"), cpufd->cpukhz_max, _("kHz"), _("Current"), cpufd->cpukhz_cur, _("kHz"), _("Transition Latency"), cpufd->transition_latency, _("ns"), _("Governor"), cpufd->scaling_governor, _("Driver"), cpufd->scaling_driver); } else { return g_strdup_printf( "[%s]\n" "%s=%s\n", _("Frequency Scaling"), _("Driver"), cpufd->scaling_driver); } } gchar *cputopo_section_str(cpu_topology_data *cputd) { static const char na[] = N_("(Not Available)"); char sock_str[64] = "", core_str[64] = ""; char book_str[64] = "", drawer_str[64] = ""; if (cputd == NULL) return g_strdup(""); if (cputd->socket_id != CPU_TOPO_NULL && cputd->socket_id != -1) sprintf(sock_str, "%s=%d\n", _("Socket"), cputd->socket_id); else sprintf(sock_str, "%s=%s\n", _("Socket"), na); if (cputd->core_id != CPU_TOPO_NULL) sprintf(core_str, "%s=%d\n", _("Core"), cputd->core_id); else sprintf(core_str, "%s=%s\n", _("Core"), na); if (cputd->book_id != CPU_TOPO_NULL) sprintf(core_str, "%s=%d\n", _("Book"), cputd->book_id); if (cputd->book_id != CPU_TOPO_NULL) sprintf(core_str, "%s=%d\n", _("Drawer"), cputd->drawer_id); return g_strdup_printf( "[%s]\n" "%s=%d\n" "%s%s%s%s", _("Topology"), _("ID"), cputd->id, sock_str, core_str, book_str, drawer_str ); } hardinfo2-hardinfo2-1331e88/hardinfo2/dmi_util.c000066400000000000000000000350301474767047500213720ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2017 L. A. F. Pereira * This file * Copyright (C) 2017 Burt P. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "hardinfo.h" #include "dmi_util.h" static const char *dmi_type_strings[] = { [0] = N_("BIOS Information"), [1] = N_("System"), [2] = N_("Base Board"), [3] = N_("Chassis"), [4] = N_("Processor"), [5] = N_("Memory Controller"), [6] = N_("Memory Module"), [7] = N_("Cache"), [8] = N_("Port Connector"), [9] = N_("System Slots"), [10] = N_("On Board Devices"), [11] = N_("OEM Strings"), [12] = N_("System Configuration Options"), [13] = N_("BIOS Language"), [14] = N_("Group Associations"), [15] = N_("System Event Log"), [16] = N_("Physical Memory Array"), [17] = N_("Memory Device"), [18] = N_("32-bit Memory Error"), [19] = N_("Memory Array Mapped Address"), [20] = N_("Memory Device Mapped Address"), [21] = N_("Built-in Pointing Device"), [22] = N_("Portable Battery"), [23] = N_("System Reset"), [24] = N_("Hardware Security"), [25] = N_("System Power Controls"), [26] = N_("Voltage Probe"), [27] = N_("Cooling Device"), [28] = N_("Temperature Probe"), [29] = N_("Electrical Current Probe"), [30] = N_("Out-of-band Remote Access"), [31] = N_("Boot Integrity Services"), [32] = N_("System Boot"), [33] = N_("64-bit Memory Error"), [34] = N_("Management Device"), [35] = N_("Management Device Component"), [36] = N_("Management Device Threshold Data"), [37] = N_("Memory Channel"), [38] = N_("IPMI Device"), [39] = N_("Power Supply"), [40] = N_("Additional Information"), [41] = N_("Onboard Device"), //127 = End of Table }; /* frees the string and sets it NULL if it is to be ignored * returns -1 if error, 0 if ok, 1 if ignored */ static int ignore_placeholder_strings(gchar **pstr) { gchar *chk, *p; if (pstr == NULL || *pstr == NULL) return -1; chk = g_strdup(*pstr); #define DMI_IGNORE(m) if (strcasecmp(m, *pstr) == 0) { g_free(chk); g_free(*pstr); *pstr = NULL; return 1; } DMI_IGNORE("To be filled by O.E.M."); DMI_IGNORE("Default String"); DMI_IGNORE("System Product Name"); DMI_IGNORE("System Manufacturer"); DMI_IGNORE("System Version"); DMI_IGNORE("System Serial Number"); DMI_IGNORE("Rev X.0x"); /* ASUS board version nonsense */ DMI_IGNORE("x.x"); /* Gigabyte board version nonsense */ DMI_IGNORE("NA"); DMI_IGNORE("SKU"); /* noticed on an HP x360 with Insyde BIOS */ DMI_IGNORE("Type2 - Board Asset Tag"); DMI_IGNORE("Type1ProductConfigId"); /* Toshiba Laptop with Insyde BIOS */ DMI_IGNORE("Base Board Version"); DMI_IGNORE("No Asset Tag"); DMI_IGNORE("None"); DMI_IGNORE("Type1Family"); DMI_IGNORE("123456789"); /* ASUS socket 775 MB */ DMI_IGNORE("Asset-1234567890"); DMI_IGNORE("MB-1234567890"); DMI_IGNORE("Chassis Serial Number"); DMI_IGNORE("Chassis Version"); DMI_IGNORE("Chassis Manufacture"); /* Zotac version nonsense */ p = chk; while (*p != 0) { *p = 'x'; p++; } /* all X */ DMI_IGNORE(chk); p = chk; while (*p != 0) { *p = '0'; p++; } /* all 0 */ DMI_IGNORE(chk); /*... more, I'm sure. */ g_free(chk); return 0; } static const char *dmi_sysfs_root(void) { char *candidates[] = { "/sys/devices/virtual/dmi", "/sys/class/dmi", NULL }; int i = 0; while (candidates[i] != NULL) { if(access(candidates[i], F_OK) != -1) return candidates[i]; i++; } return NULL; } int dmi_str_status(const char *id_str) { gchar *str = dmi_get_str_abs(id_str); int ret = 1; if (!str) ret = 0; if ( ignore_placeholder_strings(&str) > 0 ) ret = -1; g_free(str); return ret; } char *dmi_get_str(const char *id_str) { gchar *ret = dmi_get_str_abs(id_str); /* return NULL on empty */ if (ret && *ret == 0) { g_free(ret); ret = NULL; } ignore_placeholder_strings(&ret); return ret; } char *dmi_get_str_abs(const char *id_str) { static struct { char *id; char *path; } tab_dmi_sysfs[] = { /* dmidecode -> sysfs */ { "bios-release-date", "id/bios_date" }, { "bios-vendor", "id/bios_vendor" }, { "bios-version", "id/bios_version" }, { "baseboard-product-name", "id/board_name" }, { "baseboard-manufacturer", "id/board_vendor" }, { "baseboard-version", "id/board_version" }, { "baseboard-serial-number", "id/board_serial" }, { "baseboard-asset-tag", "id/board_asset_tag" }, { "system-product-name", "id/product_name" }, { "system-manufacturer", "id/sys_vendor" }, { "system-serial-number", "id/product_serial" }, { "system-product-family", "id/product_family" }, { "system-version", "id/product_version" }, { "system-uuid", "product_uuid" }, { "system-sku", "id/product_sku" }, /*dmidecode doesn't actually support this one*/ { "chassis-type", "id/chassis_type" }, { "chassis-serial-number", "id/chassis_serial" }, { "chassis-manufacturer", "id/chassis_vendor" }, { "chassis-version", "id/chassis_version" }, { "chassis-asset-tag", "id/chassis_asset_tag" }, { NULL, NULL } }; const gchar *dmi_root = dmi_sysfs_root(); gchar *ret = NULL; gchar full_path[PATH_MAX]; gboolean spawned; gchar *out, *err; int i = 0; /* try sysfs first */ if (dmi_root) { while (tab_dmi_sysfs[i].id != NULL) { if (strcmp(id_str, tab_dmi_sysfs[i].id) == 0) { snprintf(full_path, PATH_MAX, "%s/%s", dmi_root, tab_dmi_sysfs[i].path); if (g_file_get_contents(full_path, &ret, NULL, NULL) ) goto dmi_str_done; } i++; } } /* try dmidecode, but may require root */ snprintf(full_path, PATH_MAX, "dmidecode -s %s", id_str); spawned = hardinfo_spawn_command_line_sync(full_path, &out, &err, &i, NULL); if (spawned) { if (i == 0) ret = out; else g_free(out); g_free(err); } dmi_str_done: if (ret != NULL) { ret = strend(ret, '\n'); ret = g_strstrip(ret); } return ret; } char *dmi_chassis_type_str(int chassis_type, gboolean with_val) { static const char *types[] = { N_("Invalid chassis type (0)"), N_("Unknown chassis type"), /* 1 is "Other", but not helpful in HardInfo */ N_("Unknown chassis type"), N_("Desktop"), N_("Low-profile Desktop"), N_("Pizza Box"), N_("Mini Tower"), N_("Tower"), N_("Portable"), N_("Laptop"), N_("Notebook"), N_("Handheld"), N_("Docking Station"), N_("All-in-one"), N_("Subnotebook"), N_("Space-saving"), N_("Lunch Box"), N_("Main Server Chassis"), N_("Expansion Chassis"), N_("Sub Chassis"), N_("Bus Expansion Chassis"), N_("Peripheral Chassis"), N_("RAID Chassis"), N_("Rack Mount Chassis"), N_("Sealed-case PC"), N_("Multi-system"), N_("CompactPCI"), N_("AdvancedTCA"), N_("Blade"), N_("Blade Enclosing"), N_("Tablet"), N_("Convertible"), N_("Detachable"), N_("IoT Gateway"), N_("Embedded PC"), N_("Mini PC"), N_("Stick PC"), }; if (chassis_type <= 0) { gchar *chassis = dmi_get_str("chassis-type"); if (chassis) { chassis_type = atoi(chassis); g_free(chassis); } else chassis_type = -1; } if (chassis_type >= 0 && chassis_type < (int)G_N_ELEMENTS(types)) { if (with_val) return g_strdup_printf("[%d] %s", chassis_type, _(types[chassis_type])); return g_strdup(_(types[chassis_type])); } return NULL; } /* TODO: something better maybe */ static char *dd_cache[128] = {}; void dmidecode_cache_free() { int i; for(i = 0; i < 128; i++) g_free(dd_cache[i]); } char *dmidecode_read(const dmi_type *type) { gchar *ret = NULL; gchar full_path[PATH_MAX]; gboolean spawned; gchar *out, *err; FILE *f; int i = 0; if (type) { if (dd_cache[*type]) return g_strdup(dd_cache[*type]); snprintf(full_path, PATH_MAX, "dmidecode -t %"PRId32, *type); } else { if (dd_cache[127]) return g_strdup(dd_cache[127]); snprintf(full_path, PATH_MAX, "dmidecode"); } spawned = hardinfo_spawn_command_line_sync(full_path, &out, &err, &i, NULL); if (!spawned) { if(type) { snprintf(full_path, PATH_MAX, "/sbin/dmidecode -t %"PRId32, *type); } else { snprintf(full_path, PATH_MAX, "/sbin/dmidecode"); } spawned = hardinfo_spawn_command_line_sync(full_path, &out, &err, &i, NULL); } if (spawned) { if (i == 0) ret = out; else g_free(out); g_free(err); } //check /run/hardinfo2/dmi_memarray exists and use if no info if( type && (*type==16) && !ret ){ if( (f = fopen("/run/hardinfo2/dmi_memarray", "r")) ){ fseek(f, 0, SEEK_END); size_t fsize=ftell(f); if(fsize>0){ fseek(f, 0, SEEK_SET); ret=g_malloc(fsize+1); if(ret){ if(fread(ret, fsize, 1, f)){ ret[fsize]=0; }else{ g_free(ret);ret=NULL; } } } fclose(f); } } //check /run/hardinfo2/dmi_memory exists and use if no info if( type && (*type==17) && !ret ){ if( (f = fopen("/run/hardinfo2/dmi_memory", "r")) ){ fseek(f, 0, SEEK_END); size_t fsize=ftell(f); if(fsize>0){ fseek(f, 0, SEEK_SET); ret=g_malloc(fsize+1); if(ret){ if(fread(ret, fsize, 1, f)){ ret[fsize]=0; }else{ g_free(ret);ret=NULL; } } } fclose(f); } } if (ret) { if (type) dd_cache[*type] = g_strdup(ret); else dd_cache[127] = g_strdup(ret); } return ret; } dmi_handle_list *dmi_handle_list_add(dmi_handle_list *hl, dmi_handle_ext new_handle_ext) { if (new_handle_ext.type < G_N_ELEMENTS(dmi_type_strings) ) new_handle_ext.type_str = dmi_type_strings[new_handle_ext.type]; if (!hl) { hl = malloc(sizeof(dmi_handle_list)); if(!hl) return NULL; hl->count = 1; hl->handles = malloc(sizeof(dmi_handle) * hl->count); hl->handles_ext = malloc(sizeof(dmi_handle_ext) * hl->count); } else { hl->count++; hl->handles = realloc(hl->handles, sizeof(dmi_handle) * hl->count); hl->handles_ext = realloc(hl->handles_ext, sizeof(dmi_handle_ext) * hl->count); } hl->handles_ext[hl->count - 1] = new_handle_ext; hl->handles[hl->count - 1] = new_handle_ext.id; return hl; } dmi_handle_list *dmidecode_handles(const dmi_type *type) { gchar *full = NULL, *p = NULL, *next_nl = NULL; dmi_handle_list *hl = NULL; // Handle 0x003B, DMI type 9, 17 bytes full = dmidecode_read(type); if (full) { p = full; while( (next_nl = strchr(p, '\n')) ) { unsigned int ch = 0, ct = 0, cb = 0; strend(p, '\n'); if (sscanf(p, "Handle 0x%X, DMI type %u, %u bytes", &ch, &ct, &cb) > 0) { if (type && !ct) ct = *type; hl = dmi_handle_list_add(hl, (dmi_handle_ext){.id = ch, .type = ct, .size = cb}); } p = next_nl + 1; } free(full); } return hl; } void dmi_handle_list_free(dmi_handle_list *hl) { if (hl) { free(hl->handles); free(hl->handles_ext); } free(hl); } char *dmidecode_match(const char *name, const dmi_type *type, const dmi_handle *handle) { gchar *ret = NULL, *full = NULL, *p = NULL, *next_nl = NULL; unsigned int ch = 0; int ln = 0; if (!name) return NULL; ln = strlen(name); full = dmidecode_read(type); if (full) { p = full; while( (next_nl = strchr(p, '\n')) ) { strend(p, '\n'); if (!(sscanf(p, "Handle 0x%X", &ch) > 0) ) { if (!handle || *handle == ch) { while(*p == '\t') p++; if (strncmp(p, name, ln) == 0) { if (*(p + ln) == ':') { p = p + ln + 1; while(*p == ' ') p++; ret = strdup(p); break; } } } } p = next_nl + 1; } free(full); } return ret; } dmi_handle_list *dmidecode_match_value(const char *name, const char *value, const dmi_type *type) { dmi_handle_list *hl = NULL; gchar *full = NULL, *p = NULL, *next_nl = NULL; unsigned int ch = 0, ct = 0, cb = 0; int ln = 0, lnv = 0; if (!name) return NULL; ln = strlen(name); lnv = (value) ? strlen(value) : 0; full = dmidecode_read(type); if (full) { p = full; while( (next_nl = strchr(p, '\n')) ) { strend(p, '\n'); if (!(sscanf(p, "Handle 0x%X, DMI type %u, %u bytes", &ch, &ct, &cb) > 0)) { while(*p == '\t') p++; if (strncmp(p, name, ln) == 0) { if (*(p + ln) == ':') { p = p + ln + 1; while(*p == ' ') p++; if (!value || strncmp(p, value, lnv) == 0) hl = dmi_handle_list_add(hl, (dmi_handle_ext){.id = ch, .type = ct, .size = cb}); } } } p = next_nl + 1; } free(full); } return hl; } hardinfo2-hardinfo2-1331e88/hardinfo2/dt_util.c000066400000000000000000001000501474767047500212230ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ /* * Device Tree support by Burt P. * Sources: * http://elinux.org/Device_Tree_Usage * http://elinux.org/Device_Tree_Mysteries */ #include #include #include #include /* for PRIu64 */ #include #include "hardinfo.h" #include "dt_util.h" #include "appf.h" static struct { char *name; int type; } prop_types[] = { { "name", DTP_STR }, { "compatible", DTP_STR }, { "model", DTP_STR }, { "reg", DTP_REG }, { "clocks", DTP_CLOCKS }, { "gpios", DTP_GPIOS }, { "cs-gpios", DTP_GPIOS }, { "phandle", DTP_PH }, { "interrupts", DTP_INTRUPT }, { "interrupts-extended", DTP_INTRUPT_EX }, { "interrupt-parent", DTP_PH_REF }, { "interrupt-controller", DTP_EMPTY }, { "regulator-min-microvolt", DTP_UINT }, { "regulator-max-microvolt", DTP_UINT }, { "clock-frequency", DTP_UINT }, { "dmas", DTP_DMAS }, { "dma-channels", DTP_UINT }, { "dma-requests", DTP_UINT }, /* operating-points-v2: */ /* https://www.kernel.org/doc/Documentation/devicetree/bindings/opp/opp.txt */ { "operating-points-v2", DTP_PH_REF_OPP2 }, { "opp-hz", DTP_UINT64 }, { "opp-microvolt", DTP_UINT }, { "opp-microvolt-L0", DTP_UINT }, /* opp-microvolt-, but this kind of */ { "opp-microvolt-L1", DTP_UINT }, /* wildcard matching isn't supported yet */ { "opp-microamp", DTP_UINT }, { "clock-latency-ns", DTP_UINT }, { NULL, 0 }, }; static struct { char *name; uint32_t v; } default_values[] = { { "#address-cells", 2 }, { "#size-cells", 1 }, { "#dma-cells", 1 }, { NULL, 0 }, }; struct _dtr_map { uint32_t v; /* phandle */ char *label; /* alias */ char *path; struct _dtr_map *next; }; typedef struct _dtr_map dtr_map; struct _dtr { dtr_map *aliases; dtr_map *symbols; dtr_map *phandles; char *base_path; char *log; }; struct _dtr_obj { char *path; union { void *data; char *data_str; dt_uint *data_int; dt_uint64 *data_int64; }; char *name; uint32_t length; int type; char *prefix; /* if the name has a manufacturer's prefix or null */ char *np_name; /* the name without any prefix. points into .prefix or .name, do not free */ const char *alias; /* null until first dtr_obj_alias(). do not free */ const char *symbol; /* null until first dtr_obj_symbol(). do not free */ dtr *dt; }; dtr_map *dtr_map_add(dtr_map *map, uint32_t v, const char *label, const char *path) { dtr_map *it; dtr_map *nmap = malloc(sizeof(dtr_map)); memset(nmap, 0, sizeof(dtr_map)); nmap->v = v; if (label != NULL) nmap->label = strdup(label); if (path != NULL) nmap->path = strdup(path); if (map == NULL) return nmap; it = map; while(it->next != NULL) it = it->next; it->next = nmap; return nmap; } void dtr_map_free(dtr_map *map) { dtr_map *it; while(map != NULL) { it = map->next; free(map->label); free(map->path); free(map); map = it; } } /* simple sort for maps * sv: 1 = sort by v, 0 = sort by label */ void dtr_map_sort(dtr_map *map, int sv) { int done = 0, cmp; dtr_map *this, *next, *top = NULL, *next_top; uint32_t tmp_v; char *tmp_l, *tmp_p; if (map == NULL) return; do { this = map; next_top = NULL; while(this != NULL) { next = this->next; if (this == top) break; if (next == NULL) break; if (sv) cmp = (this->v > next->v) ? 1 : 0; else cmp = strcmp(this->label, next->label); if (cmp > 0) { tmp_v = this->v; this->v = next->v; next->v = tmp_v; tmp_l = this->label; this->label = next->label; next->label = tmp_l; tmp_p = this->path; this->path = next->path; next->path = tmp_p; next_top = this; } this = next; } if (next_top == NULL) done = 1; else top = next_top; } while (!done); } const char *dtr_phandle_lookup(dtr *s, uint32_t v) { dtr_map *phi = s->phandles; /* 0 and 0xffffffff are invalid phandle values */ /* TODO: perhaps "INVALID" or something */ if (v == 0 || v == 0xffffffff) return NULL; while(phi != NULL) { if (phi->v == v) return phi->path; phi = phi->next; } return NULL; } const char *dtr_alias_lookup(dtr *s, const char* label) { dtr_map *ali = s->aliases; while(ali != NULL) { if (strcmp(ali->label, label) == 0) return ali->path; ali = ali->next; } return NULL; } const char *dtr_alias_lookup_by_path(dtr *s, const char* path) { dtr_map *ali = s->aliases; while(ali != NULL) { if (strcmp(ali->path, path) == 0) return ali->label; ali = ali->next; } return NULL; } const char *dtr_symbol_lookup_by_path(dtr *s, const char* path) { dtr_map *ali = s->symbols; while(ali != NULL) { if (strcmp(ali->path, path) == 0) return ali->label; ali = ali->next; } return NULL; } void _dtr_read_aliases(dtr *); void _dtr_read_symbols(dtr *); void _dtr_map_phandles(dtr *, char *np); int dtr_inh_find(dtr_obj *obj, char *qprop, int limit); #define UMIN(a,b) MIN(((uint32_t)(a)), ((uint32_t)(b))) const char *dtr_find_device_tree_root() { char *candidates[] = { "/proc/device-tree", "/sys/firmware/devicetree/base", /* others? */ NULL }; int i = 0; while (candidates[i] != NULL) { if(access(candidates[i], F_OK) != -1) return candidates[i]; i++; } return NULL; } dtr *dtr_new_x(const char *base_path, int fast) { dtr *dt = malloc(sizeof(dtr)); if (dt != NULL) { memset(dt, 0, sizeof(dtr)); dt->log = strdup(""); if (base_path == NULL) base_path = DTR_ROOT; if (base_path != NULL) dt->base_path = strdup(base_path); else { dtr_msg(dt, "%s", "Device Tree not found."); return dt; } /* build alias and phandle lists */ dt->aliases = NULL; dt->symbols = NULL; dt->phandles = NULL; if (!fast) { _dtr_read_aliases(dt); _dtr_read_symbols(dt); _dtr_map_phandles(dt, ""); } } return dt; } dtr *dtr_new(const char *base_path) { return dtr_new_x(base_path, 0); } void dtr_free(dtr *s) { if (s != NULL) { dtr_map_free(s->aliases); dtr_map_free(s->symbols); dtr_map_free(s->phandles); free(s->base_path); free(s->log); free(s); } } int dtr_was_found(dtr *s) { if (s != NULL) { if (s->base_path != NULL) return 1; } return 0; } void dtr_msg(dtr *s, char *fmt, ...) { gchar *buf, *tmp; va_list args; va_start(args, fmt); buf = g_strdup_vprintf(fmt, args); va_end(args); tmp = g_strdup_printf("%s%s", s->log, buf); g_free(s->log); s->log = tmp; } char *dtr_messages(dtr *s) { if (s != NULL) return strdup(s->log); else return NULL; } const char *dtr_base_path(dtr *s) { if (s) return s->base_path; return NULL; } /*glib, but _dt_obj *prop uses malloc() and std types */ dtr_obj *dtr_obj_read(dtr *s, const char *dtp) { char *full_path; char *slash, *coma; dtr_obj *obj; if (dtp == NULL) return NULL; obj = malloc(sizeof(dtr_obj)); if (obj != NULL) { memset(obj, 0, sizeof(dtr_obj)); obj->dt = s; if (*dtp != '/') { /* doesn't start with slash, use alias */ obj->path = (char*)dtr_alias_lookup(s, dtp); if (obj->path != NULL) obj->path = strdup(obj->path); else { dtr_obj_free(obj); return NULL; } } else obj->path = strdup(dtp); /* find name after last slash, or start */ slash = strrchr(obj->path, '/'); if (slash != NULL) obj->name = strdup(slash + 1); else obj->name = strdup(obj->path); /* find manufacturer prefix */ obj->prefix = strdup(obj->name); coma = strchr(obj->prefix, ','); if (coma != NULL) { /* coma -> null; .np_name starts after */ *coma = 0; obj->np_name = coma + 1; } else { obj->np_name = obj->name; free(obj->prefix); obj->prefix = NULL; } /* read data */ full_path = g_strdup_printf("%s%s", s->base_path, obj->path); if ( g_file_test(full_path, G_FILE_TEST_IS_DIR) ) { obj->type = DT_NODE; } else { if (!g_file_get_contents(full_path, (gchar**)&obj->data, (gsize*)&obj->length, NULL)) { dtr_obj_free(obj); g_free(full_path); return NULL; } obj->type = dtr_guess_type(obj); } g_free(full_path); return obj; } return NULL; } void dtr_obj_free(dtr_obj *s) { if (s != NULL) { free(s->path); free(s->name); free(s->prefix); free(s->data); free(s); } } int dtr_obj_type(dtr_obj *s) { if (s) return s->type; return DT_TYPE_ERR; } char *dtr_obj_alias(dtr_obj *s) { if (s) { if (s->alias == NULL) s->alias = dtr_alias_lookup_by_path(s->dt, s->path); return (char*)s->alias; } return NULL; } char *dtr_obj_symbol(dtr_obj *s) { if (s) { if (s->symbol == NULL) s->symbol = dtr_symbol_lookup_by_path(s->dt, s->path); return (char*)s->symbol; } return NULL; } char *dtr_obj_path(dtr_obj *s) { if (s) return s->path; return NULL; } char *dtr_obj_full_path(dtr_obj *s) { if (s) { if (strcmp(s->path, "/") == 0) return g_strdup_printf("%s", s->dt->base_path); else return g_strdup_printf("%s%s", s->dt->base_path, s->path); } return NULL; } dtr_obj *dtr_get_prop_obj(dtr *s, dtr_obj *node, const char *name) { dtr_obj *prop; char *ptmp; ptmp = g_strdup_printf("%s/%s", (node == NULL) ? "" : node->path, name); prop = dtr_obj_read(s, ptmp); g_free(ptmp); return prop; } char *dtr_get_prop_str(dtr *s, dtr_obj *node, const char *name) { dtr_obj *prop; char *ptmp; char *ret = NULL; ptmp = g_strdup_printf("%s/%s", (node == NULL) ? "" : node->path, name); prop = dtr_obj_read(s, ptmp); if (prop != NULL && prop->data != NULL) { ret = strdup(prop->data_str); dtr_obj_free(prop); } g_free(ptmp); return ret; } char *dtr_get_string(const char *p, int decode) { dtr *dt = dtr_new_x(NULL, 1); dtr_obj *obj; char *ret = NULL; if (decode) { obj = dtr_get_prop_obj(dt, NULL, p); ret = dtr_str(obj); dtr_obj_free(obj); } else ret = dtr_get_prop_str(dt, NULL, p); dtr_free(dt); return ret; } uint32_t dtr_get_prop_u32(dtr *s, dtr_obj *node, const char *name) { dtr_obj *prop; char *ptmp; uint32_t ret = 0; ptmp = g_strdup_printf("%s/%s", (node == NULL) ? "" : node->path, name); prop = dtr_obj_read(s, ptmp); if (prop != NULL) { if (prop->data != NULL) ret = be32toh(*prop->data_int); dtr_obj_free(prop); } g_free(ptmp); return ret; } uint64_t dtr_get_prop_u64(dtr *s, dtr_obj *node, const char *name) { dtr_obj *prop; char *ptmp; uint64_t ret = 0; ptmp = g_strdup_printf("%s/%s", (node == NULL) ? "" : node->path, name); prop = dtr_obj_read(s, ptmp); if (prop != NULL) { if (prop->data != NULL) ret = be64toh(*prop->data_int64); dtr_obj_free(prop); } g_free(ptmp); return ret; } int dtr_guess_type(dtr_obj *obj) { char *tmp, *dash; uint32_t i = 0, anc = 0, might_be_str = 1; if (obj->length == 0) return DTP_EMPTY; /* special #(.*)-cells names are UINT */ if (*obj->name == '#') { dash = strrchr(obj->name, '-'); if (dash != NULL) { if (strcmp(dash, "-cells") == 0) return DTP_UINT; } } /* /aliases/ * and /__symbols__/ * are always strings */ if (strncmp(obj->path, "/aliases/", strlen("/aliases/") ) == 0) return DTP_STR; if (strncmp(obj->path, "/__symbols__/", strlen("/__symbols__/") ) == 0) return DTP_STR; /* /__overrides__/ * */ if (strncmp(obj->path, "/__overrides__/", strlen("/__overrides__/") ) == 0) if (strcmp(obj->name, "name") != 0) return DTP_OVR; /* lookup known type */ while (prop_types[i].name != NULL) { if (strcmp(obj->name, prop_types[i].name) == 0) return prop_types[i].type; i++; } /* maybe a string? */ for (i = 0; i < obj->length; i++) { tmp = obj->data_str + i; if ( isalnum(*tmp) ) anc++; /* count the alpha-nums */ if ( isprint(*tmp) || *tmp == 0 ) continue; might_be_str = 0; break; } if (might_be_str && ( anc >= obj->length - 2 /* all alpha-nums but ^/ and \0$ */ || anc >= 5 ) /*arbitrary*/) return DTP_STR; /* multiple of 4 bytes, try list of hex values */ if (!(obj->length % 4)) return DTP_HEX; return DTP_UNK; } char *dtr_elem_phref(dtr *s, dt_uint e, int show_path, const char *extra) { const char *ph_path, *al_label; char *ret = NULL; ph_path = dtr_phandle_lookup(s, be32toh(e)); if (ph_path != NULL) { /* TODO: alias or symbol? */ al_label = dtr_symbol_lookup_by_path(s, ph_path); if (al_label != NULL) { if (show_path) ret = g_strdup_printf("&%s (%s) %s", al_label, ph_path, extra ? extra : ""); else ret = g_strdup_printf("&%s %s", al_label, extra ? extra : ""); } else { if (show_path) ret = g_strdup_printf("0x%x (%s) %s", be32toh(e), ph_path, extra ? extra : ""); } } if (ret == NULL) ret = dtr_elem_hex(e); return ret; } char *dtr_elem_oppv2(dtr_obj* obj) { char opp_str[512] = ""; dtr_obj *parent = dtr_get_parent_obj(obj); if (parent) { dt_opp_range *opp = dtr_get_opp_range(obj->dt, parent->path); if (opp) { snprintf(opp_str, 511, "[%d - %d %s]", opp->khz_min, opp->khz_max, _("kHz")); g_free(opp); } dtr_obj_free(parent); } return dtr_elem_phref(obj->dt, *obj->data_int, 1, opp_str); } char *dtr_elem_hex(dt_uint e) { return g_strdup_printf("0x%x", be32toh(e) ); } char *dtr_elem_byte(uint8_t e) { return g_strdup_printf("%x", e); } char *dtr_elem_uint(dt_uint e) { return g_strdup_printf("%u", be32toh(e) ); } char *dtr_elem_uint64(dt_uint64 e) { return g_strdup_printf("%" PRIu64, be64toh(e) ); } char *dtr_list_byte(uint8_t *bytes, unsigned long count) { char *ret, *dest; uint32_t v; unsigned long i, l; l = count * 4 + 1; dest = ret = malloc(l); memset(ret, 0, l); *dest++='['; for (i = 0; i < count; i++) { v = bytes[i]; l = sprintf(dest, "%s%02x", (i) ? " " : "", v); dest += l; } *dest++=']'; return ret; } char *dtr_list_hex(dt_uint *list, unsigned long count) { char *ret, *dest; unsigned long i, l; l = count * 12 + 1; dest = ret = malloc(l); memset(ret, 0, l); for (i = 0; i < count; i++) { l = sprintf(dest, "%s0x%x", (i) ? " " : "", be32toh(list[i])); dest += l; } return ret; } /*cstd, except for g_strescape()*/ char *dtr_list_str0(const char *data, uint32_t length) { char *tmp, *esc, *next_str; char ret[1024] = ""; uint32_t l, tl; /* treat as null-separated string list */ tl = 0; strcpy(ret, ""); tmp = ret; next_str = (char*)data; while(next_str != NULL) { l = strlen(next_str); esc = g_strescape(next_str, NULL); sprintf(tmp, "%s\"%s\"", strlen(ret) ? ", " : "", esc); free(esc); tmp += strlen(tmp); tl += l + 1; next_str += l + 1; if (tl >= length) break; } return strdup(ret); } char *dtr_list_override(dtr_obj *obj) { /* ... */ char *ret = NULL; char *ph, *str; char *src; uint32_t consumed = 0; int l; src = obj->data_str; while (consumed + 5 <= obj->length) { ph = dtr_elem_phref(obj->dt, *(dt_uint*)src, 1, NULL); src += 4; consumed += 4; l = strlen(src) + 1; /* consume the null */ str = dtr_list_str0(src, l); ret = appfsp(ret, "<%s -> %s>", ph, str); src += l; consumed += l; free(ph); free(str); } if (consumed < obj->length) { str = dtr_list_byte((uint8_t*)src, obj->length - consumed); ret = appfsp(ret, "%s", str); free(str); } return ret; } uint32_t dtr_get_phref_prop(dtr *s, uint32_t phandle, char *prop) { const char *ph_path; char *tmp; uint32_t ret; ph_path = dtr_phandle_lookup(s, phandle); tmp = g_strdup_printf("%s/%s", ph_path, prop); ret = dtr_get_prop_u32(s, NULL, tmp); free(tmp); return ret; } char *dtr_list_phref(dtr_obj *obj, char *ext_cell_prop) { /* */ int count = obj->length / 4; int i = 0, ext_cells = 0; char *ph, *ext, *ret = NULL; while (i < count) { if (ext_cell_prop == NULL) ext_cells = 0; else ext_cells = dtr_get_phref_prop(obj->dt, be32toh(obj->data_int[i]), ext_cell_prop); ph = dtr_elem_phref(obj->dt, obj->data_int[i], 0, NULL); i++; if (ext_cells > count - i) ext_cells = count - i; ext = dtr_list_hex((obj->data_int + i), ext_cells); i+=ext_cells; ret = appfsp(ret, "<%s%s%s>", ph, (ext_cells) ? " " : "", ext); g_free(ph); g_free(ext); } return ret; } char *dtr_list_interrupts(dtr_obj *obj) { char *ext, *ret = NULL; uint32_t iparent, icells; int count, i = 0; iparent = dtr_inh_find(obj, "interrupt-parent", 0); if (!iparent) { dtr_msg(obj->dt, "Did not find an interrupt-parent for %s", obj->path); goto intr_err; } icells = dtr_get_phref_prop(obj->dt, iparent, "#interrupt-cells"); if (!icells) { dtr_msg(obj->dt, "Invalid #interrupt-cells value %d for %s", icells, obj->path); goto intr_err; } count = obj->length / 4; while (i < count) { icells = UMIN(icells, count - i); ext = dtr_list_hex((obj->data_int + i), icells); i+=icells; ret = appfsp(ret, "<%s>", ext); } return ret; intr_err: return dtr_list_hex(obj->data_int, obj->length); } char *dtr_list_reg(dtr_obj *obj) { char *tup_str, *ret = NULL; uint32_t acells, scells, tup_len; uint32_t extra, consumed; /* bytes */ uint32_t *next; acells = dtr_inh_find(obj, "#address-cells", 2); scells = dtr_inh_find(obj, "#size-cells", 2); tup_len = acells + scells; extra = obj->length % (tup_len * 4); consumed = 0; /* bytes */ //printf("list reg: %s\n ... acells: %u, scells: %u, extra: %u\n", obj->path, acells, scells, extra); if (extra) { /* error: length is not a multiple of tuples */ dtr_msg(obj->dt, "Data length (%u) is not a multiple of (#address-cells:%u + #size-cells:%u) for %s\n", obj->length, acells, scells, obj->path); return dtr_list_hex(obj->data, obj->length / 4); } next = obj->data_int; consumed = 0; while (consumed + (tup_len * 4) <= obj->length) { tup_str = dtr_list_hex(next, tup_len); ret = appfsp(ret, "<%s>", tup_str); free(tup_str); consumed += (tup_len * 4); next += tup_len; } //printf(" ... %s\n", ret); return ret; } char* dtr_str(dtr_obj *obj) { char *ret; int type; if (obj == NULL) return NULL; type = obj->type; if (type == DTP_PH_REF) { if (!DTEX_PHREFS || obj->length != 4) type = DTP_HEX; } switch(type) { case DT_NODE: ret = strdup("{node}"); break; case DTP_EMPTY: ret = strdup("{empty}"); break; case DTP_STR: ret = dtr_list_str0(obj->data_str, obj->length); break; case DTP_OVR: ret = dtr_list_override(obj); break; case DTP_REG: /* <#address-cells #size-cells> */ ret = dtr_list_reg(obj); break; case DTP_INTRUPT: ret = dtr_list_interrupts(obj); break; case DTP_INTRUPT_EX: /* */ ret = dtr_list_phref(obj, "#interrupt-cells"); break; case DTP_CLOCKS: /* */ ret = dtr_list_phref(obj, "#clock-cells"); break; case DTP_GPIOS: /* */ ret = dtr_list_phref(obj, "#gpio-cells"); break; case DTP_DMAS: /* */ ret = dtr_list_phref(obj, "#dma-cells"); break; case DTP_PH: case DTP_HEX: if (obj->length % 4) ret = dtr_list_byte((uint8_t*)obj->data, obj->length); else ret = dtr_list_hex(obj->data, obj->length / 4); break; case DTP_PH_REF: ret = dtr_elem_phref(obj->dt, *obj->data_int, 1, NULL); break; case DTP_PH_REF_OPP2: ret = dtr_elem_oppv2(obj); break; case DTP_UINT: ret = dtr_elem_uint(*obj->data_int); break; case DTP_UINT64: ret = dtr_elem_uint64(*obj->data_int64); break; case DTP_UNK: default: if (obj->length > 64) /* maybe should use #define at the top */ ret = g_strdup_printf("{data} (%lu bytes)", (long unsigned int)obj->length); else ret = dtr_list_byte((uint8_t*)obj->data, obj->length); break; } return ret; } dtr_obj *dtr_get_parent_obj(dtr_obj *obj) { char *slash, *parent; dtr_obj *ret = NULL; if (obj == NULL) return NULL; parent = strdup(obj->path); slash = strrchr(parent, '/'); if (slash != NULL) { *slash = 0; if (strlen(parent) > 0) ret = dtr_obj_read(obj->dt, parent); else ret = dtr_obj_read(obj->dt, "/"); } free(parent); return ret; } /* find the value of a path-inherited property by climbing the path */ int dtr_inh_find(dtr_obj *obj, char *qprop, int limit) { dtr_obj *tobj, *pobj = NULL, *qobj; uint32_t ret = 0; int i, found = 0; if (!limit) limit = 1000; tobj = obj; while (tobj != NULL) { pobj = dtr_get_parent_obj(tobj); if (tobj != obj) dtr_obj_free(tobj); if (!limit || pobj == NULL) break; qobj = dtr_get_prop_obj(obj->dt, pobj, qprop); if (qobj != NULL) { ret = be32toh(*qobj->data_int); found = 1; dtr_obj_free(qobj); break; } tobj = pobj; limit--; } dtr_obj_free(pobj); if (!found) { i = 0; while(default_values[i].name != NULL) { if (strcmp(default_values[i].name, qprop) == 0) { ret = default_values[i].v; dtr_msg(obj->dt, "Using default value %d for %s in %s\n", ret, qprop, obj->path); break; } i++; } } return ret; } dt_opp_range *dtr_get_opp_range(dtr *s, const char *name) { dt_opp_range *ret = NULL; dtr_obj *obj = NULL, *table_obj = NULL, *row_obj = NULL; uint32_t opp_ph = 0; const char *opp_table_path = NULL; char *tab_compat = NULL, *tab_status = NULL; const gchar *fn; gchar *full_path; GDir *dir; uint64_t khz = 0; uint32_t lns = 0; char *row_status = NULL; uint32_t i = 0; if (!s) return NULL; obj = dtr_obj_read(s, name); if (!obj) goto get_opp_finish; opp_ph = dtr_get_prop_u32(s, obj, "operating-points-v2"); /* OPPv2 */ table_obj = dtr_get_prop_obj(s, obj, "operating-points"); /* OPPv1 */ if (!opp_ph) { if (table_obj) { /* only v1 */ ret = g_new0(dt_opp_range, 1); ret->version = 1; ret->clock_latency_ns = dtr_get_prop_u32(s, obj, "clock-latency"); /* pairs of (kHz,uV) */ for (i = 0; i < table_obj->length; i += 2) { khz = table_obj->data_int[i]; if (khz > ret->khz_max) ret->khz_max = khz; if (khz < ret->khz_min || ret->khz_min == 0) ret->khz_min = khz; } } else { /* is clock-frequency available? */ khz = dtr_get_prop_u32(s, obj, "clock-frequency"); if (khz) { ret = g_new0(dt_opp_range, 1); ret->version = 0; ret->khz_max = khz; ret->clock_latency_ns = dtr_get_prop_u32(s, obj, "clock-latency"); } } goto get_opp_finish; } else { /* use v2 if both available */ dtr_obj_free(table_obj); table_obj = NULL; } opp_table_path = dtr_phandle_lookup(s, opp_ph); if (!opp_table_path) goto get_opp_finish; table_obj = dtr_obj_read(s, opp_table_path); if (!table_obj) goto get_opp_finish; tab_compat = dtr_get_prop_str(s, table_obj, "compatible"); tab_status = dtr_get_prop_str(s, table_obj, "status"); if (!tab_compat || strcmp(tab_compat, "operating-points-v2") != 0) goto get_opp_finish; if (tab_status && strcmp(tab_status, "disabled") == 0) goto get_opp_finish; ret = g_new0(dt_opp_range, 1); ret->version = 2; ret->phandle = opp_ph; full_path = dtr_obj_full_path(table_obj); dir = g_dir_open(full_path, 0 , NULL); if (dir) { while((fn = g_dir_read_name(dir)) != NULL) { row_obj = dtr_get_prop_obj(s, table_obj, fn); if (row_obj->type == DT_NODE) { row_status = dtr_get_prop_str(s, row_obj, "status"); if (!row_status || strcmp(row_status, "disabled") != 0) { khz = dtr_get_prop_u64(s, row_obj, "opp-hz"); khz /= 1000; /* 64b hz -> 32b khz */ lns = dtr_get_prop_u32(s, row_obj, "clock-latency-ns"); if (khz > ret->khz_max) ret->khz_max = khz; if (khz < ret->khz_min || ret->khz_min == 0) ret->khz_min = khz; ret->clock_latency_ns = lns; } } free(row_status); row_status = NULL; dtr_obj_free(row_obj); row_obj = NULL; } g_dir_close(dir); } g_free(full_path); get_opp_finish: dtr_obj_free(obj); dtr_obj_free(table_obj); free(tab_status); free(tab_compat); free(row_status); return ret; } void _dtr_read_aliases(dtr *s) { gchar *dir_path; GDir *dir; const gchar *fn; dtr_obj *anode, *prop; dtr_map *al; anode = dtr_obj_read(s, "/aliases"); dir_path = g_strdup_printf("%s/aliases", s->base_path); dir = g_dir_open(dir_path, 0 , NULL); if (dir) { while((fn = g_dir_read_name(dir)) != NULL) { prop = dtr_get_prop_obj(s, anode, fn); if (prop->type == DTP_STR) { if (*prop->data_str == '/') { al = dtr_map_add(s->aliases, 0, prop->name, prop->data_str); if (s->aliases == NULL) s->aliases = al; } } dtr_obj_free(prop); } g_dir_close(dir); } g_free(dir_path); dtr_obj_free(anode); dtr_map_sort(s->aliases, 0); } void _dtr_read_symbols(dtr *s) { gchar *dir_path; GDir *dir; const gchar *fn; dtr_obj *anode, *prop; dtr_map *al; anode = dtr_obj_read(s, "/__symbols__"); dir_path = g_strdup_printf("%s/__symbols__", s->base_path); dir = g_dir_open(dir_path, 0 , NULL); if (dir) { while((fn = g_dir_read_name(dir)) != NULL) { prop = dtr_get_prop_obj(s, anode, fn); if (prop->type == DTP_STR) { if (*prop->data_str == '/') { al = dtr_map_add(s->symbols, 0, prop->name, prop->data_str); if (s->symbols == NULL) s->symbols = al; } } dtr_obj_free(prop); } g_dir_close(dir); } g_free(dir_path); dtr_obj_free(anode); dtr_map_sort(s->symbols, 0); } /* TODO: rewrite */ void _dtr_map_phandles(dtr *s, char *np) { gchar *dir_path; gchar *ftmp, *ntmp, *ptmp; const gchar *fn; GDir *dir; dtr_obj *prop, *ph_prop; dtr_map *ph; if (np == NULL) np = ""; dir_path = g_strdup_printf("%s/%s", s->base_path, np); prop = dtr_obj_read(s, np); dir = g_dir_open(dir_path, 0 , NULL); if (dir) { while((fn = g_dir_read_name(dir)) != NULL) { ftmp = g_strdup_printf("%s/%s", dir_path, fn); if ( g_file_test(ftmp, G_FILE_TEST_IS_DIR) ) { ntmp = g_strdup_printf("%s/%s", np, fn); ptmp = g_strdup_printf("%s/phandle", ntmp); ph_prop = dtr_obj_read(s, ptmp); if (ph_prop != NULL) { ph = dtr_map_add(s->phandles, be32toh(*ph_prop->data_int), NULL, ntmp); if (s->phandles == NULL) s->phandles = ph; } _dtr_map_phandles(s, ntmp); g_free(ptmp); g_free(ntmp); dtr_obj_free(ph_prop); } g_free(ftmp); } g_dir_close(dir); } dtr_obj_free(prop); dtr_map_sort(s->phandles, 1); } /* * Maybe these should move to devicetree.c, but would have to expose * struct internals. */ /* kvl: 0 = key is label, 1 = key is v */ char *dtr_map_info_section(dtr *s, dtr_map *map, char *title, int kvl) { gchar *tmp, *ret; const gchar *sym; ret = g_strdup_printf("[%s]\n", _(title)); dtr_map *it = map; while(it != NULL) { if (kvl) { sym = dtr_symbol_lookup_by_path(s, it->path); if (sym != NULL) tmp = g_strdup_printf("%s0x%x (%s)=%s\n", ret, it->v, sym, it->path); else tmp = g_strdup_printf("%s0x%x=%s\n", ret, it->v, it->path); } else tmp = g_strdup_printf("%s%s=%s\n", ret, it->label, it->path); g_free(ret); ret = tmp; it = it->next; } return ret; } char *dtr_maps_info(dtr *s) { gchar *ph_map, *al_map, *sy_map, *ret; ph_map = dtr_map_info_section(s, s->phandles, _("phandle Map"), 1); al_map = dtr_map_info_section(s, s->aliases, _("Alias Map"), 0); sy_map = dtr_map_info_section(s, s->symbols, _("Symbol Map"), 0); ret = g_strdup_printf("%s%s%s", ph_map, sy_map, al_map); g_free(ph_map); g_free(al_map); g_free(sy_map); return ret; } hardinfo2-hardinfo2-1331e88/hardinfo2/expr.c000066400000000000000000000126331474767047500205460ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ /* * This is only used to compute sensor values, hence the only variable supported is '@'. * The '`' operator (ln(x)) is not available, nor multi-line formulas. */ #include #include #include #include #include #include "expr.h" #include "config.h" static MathToken *new_operator(gchar op) { MathToken *t = g_new0(MathToken, 1); t->val.op = op; t->type = TOKEN_OPERATOR; /* operator */ return t; } static MathToken *new_variable(gchar var) { MathToken *t = g_new0(MathToken, 1); t->val.op = '@'; t->type = TOKEN_VARIABLE; /* variable */ return t; } static MathToken *new_value(gfloat value) { MathToken *t = g_new0(MathToken, 1); t->val.value = value; t->type = TOKEN_VALUE; /* value */ return t; } static inline gint priority(char operation) { switch (operation) { case '^': return 3; case '*': case '/': return 2; case '+': case '-': return 1; case '(': return 0; } return 0; } GSList *math_infix_to_postfix(GSList * infix) { MathToken *stack[500]; gint t_sp = 0; GSList *postfix = NULL, *p; MathToken *top; for (p = infix; p; p = p->next) { MathToken *t = (MathToken *) p->data; if (t->type == TOKEN_OPERATOR && t->val.op == '(') { stack[++t_sp] = t; } else if (t->type == TOKEN_OPERATOR && t->val.op == ')') { for (top = stack[t_sp]; t_sp != 0 && top->val.op != '('; top = stack[t_sp]) { postfix = g_slist_append(postfix, stack[t_sp--]); } t_sp--; } else if (t->type != TOKEN_OPERATOR) { postfix = g_slist_append(postfix, t); } else if (t_sp == 0) { stack[++t_sp] = t; } else { while (t_sp != 0 && priority(t->val.op) <= priority(stack[t_sp]->val.op)) postfix = g_slist_append(postfix, stack[t_sp--]); stack[++t_sp] = t; } } while (t_sp) postfix = g_slist_append(postfix, stack[t_sp--]); return postfix; } static inline gfloat __result(gfloat op1, gfloat op2, gchar operation) { switch (operation) { case '^': return powf(op1, op2); case '+': return op1 + op2; case '-': return op1 - op2; case '/': return op1 / op2; case '*': return op1 * op2; } return 0; } gfloat math_postfix_eval(GSList * postfix, gfloat at_value) { GSList *p; gfloat stack[500]; gint sp = 0; memset(stack, 0, sizeof(gfloat) * 500); for (p = postfix; p; p = p->next) { MathToken *t = (MathToken *) p->data; if (t->type == TOKEN_VARIABLE) { stack[++sp] = at_value; } else if (t->type == TOKEN_VALUE) { stack[++sp] = t->val.value; } else { gfloat op1, op2; op2 = stack[sp--]; op1 = stack[sp]; stack[sp] = __result(op1, op2, t->val.op); } } return stack[sp]; } GSList *math_string_to_infix(gchar * string) { GSList *infix = NULL; gchar *expr = string; for (; *expr; expr++) { if (strchr("+-/*^()", *expr)) { infix = g_slist_append(infix, new_operator(*expr)); } else if (strchr("@", *expr)) { infix = g_slist_append(infix, new_variable(*expr)); } else if (strchr("-.1234567890", *expr)) { gchar value[32], *v = value; gfloat floatval; do { *v++ = *expr++; } while (*expr && strchr("-.1234567890", *expr)); expr--; *v = '\0'; sscanf(value, "%f", &floatval); infix = g_slist_append(infix, new_value(floatval)); } else if (!isspace(*expr)) { g_print("Invalid token: [%c][%d]\n", *expr, *expr); math_infix_free(infix, TRUE); return NULL; } } return infix; } void math_infix_free(GSList * infix, gboolean free_tokens) { GSList *p; if (!free_tokens) for (p = infix; p; p = g_slist_delete_link(p, p)); else for (p = infix; p; p = g_slist_delete_link(p, p)) { MathToken *t = (MathToken *) p->data; g_free(t); } } GSList *math_string_to_postfix(gchar * string) { GSList *infix; GSList *postfix; infix = math_string_to_infix(string); if (!infix) return NULL; postfix = math_infix_to_postfix(infix); math_infix_free(infix, FALSE); return postfix; } gfloat math_string_eval(gchar * string, gfloat at_value) { GSList *postfix; gfloat val; postfix = math_string_to_postfix(string); val = math_postfix_eval(postfix, at_value); math_postfix_free(postfix, TRUE); return val; } #ifdef MATH_TEST int main(void) { GSList *postfix; gchar *expr = "0.9*(@+(5.2*0.923+3*(2.0)))"; postfix = math_string_to_postfix(expr); g_print("%s = %f (must be 18.71964)\n", expr, math_postfix_eval(postfix, 10)); math_postfix_free(postfix, TRUE); return 0; } #endif hardinfo2-hardinfo2-1331e88/hardinfo2/gg_key_file_parse_string_as_value.c000066400000000000000000000055541474767047500264770ustar00rootroot00000000000000/* From: gkeyfile.c - key file parser * * Copyright 2004 Red Hat, Inc. * Copyright 2009-2010 Collabora Ltd. * Copyright 2009 Nokia Corporation * * Written by Ray Strode * Matthias Clasen * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this library; if not, see . */ #include #include gchar * gg_key_file_parse_string_as_value (const gchar *string, const gchar list_separator) { gchar *value, *p, *q; gsize length; gboolean parsing_leading_space; length = strlen (string) + 1; /* Worst case would be that every character needs to be escaped. * In other words every character turns to two characters. */ value = g_new (gchar, 2 * length); p = (gchar *) string; q = value; parsing_leading_space = TRUE; while (p < (string + length - 1)) { gchar escaped_character[3] = { '\\', 0, 0 }; switch (*p) { case ' ': if (parsing_leading_space) { escaped_character[1] = 's'; strcpy (q, escaped_character); q += 2; } else { *q = *p; q++; } break; case '\t': if (parsing_leading_space) { escaped_character[1] = 't'; strcpy (q, escaped_character); q += 2; } else { *q = *p; q++; } break; case '\n': escaped_character[1] = 'n'; strcpy (q, escaped_character); q += 2; break; case '\r': escaped_character[1] = 'r'; strcpy (q, escaped_character); q += 2; break; case '\\': escaped_character[1] = '\\'; strcpy (q, escaped_character); q += 2; parsing_leading_space = FALSE; break; default: if (list_separator && *p == list_separator) { escaped_character[1] = list_separator; strcpy (q, escaped_character); q += 2; parsing_leading_space = TRUE; } else { *q = *p; q++; parsing_leading_space = FALSE; } break; } p++; } *q = '\0'; return value; } hardinfo2-hardinfo2-1331e88/hardinfo2/gg_strescape.c000066400000000000000000000062411474767047500222340ustar00rootroot00000000000000/* Base on: GLIB - Library of useful routines for C programming * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #include #include guchar excmap_def[256] = {1,0}; static void make_excmap_def() { int i; for(i=0; i<256; i++){ switch ((guchar)i) { case '\b': case '\f': case '\n': case '\r': case '\t': case '\\': case '"': excmap_def[i] = 0; break; default: if ((i < ' ') || (i >= 0177)) excmap_def[i] = 0; else excmap_def[i] = 1; break; } } } gchar * gg_strescape (const gchar *source, const gchar *exceptions, const gchar *extra) { const guchar *p; gchar *dest; gchar *q; guchar excmap[256]; g_return_val_if_fail (source != NULL, NULL); if (excmap_def[0]) /* [0] should be 0 or it isn't initialized */ make_excmap_def(); memcpy(excmap, excmap_def, 256); p = (guchar *) source; /* Each source byte needs maximally four destination chars (\777) */ q = dest = g_malloc (strlen (source) * 4 + 1); if (exceptions) { guchar *e = (guchar *) exceptions; while (*e) { excmap[*e] = 1; e++; } } if (extra) { guchar *e = (guchar *) extra; while (*e) { excmap[*e] = 0; e++; } } while (*p) { if (excmap[*p]) *q++ = *p; else { switch (*p) { case '\b': *q++ = '\\'; *q++ = 'b'; break; case '\f': *q++ = '\\'; *q++ = 'f'; break; case '\n': *q++ = '\\'; *q++ = 'n'; break; case '\r': *q++ = '\\'; *q++ = 'r'; break; case '\t': *q++ = '\\'; *q++ = 't'; break; case '\\': *q++ = '\\'; *q++ = '\\'; break; case '"': *q++ = '\\'; *q++ = '"'; break; default: *q++ = '\\'; *q++ = '0' + (((*p) >> 6) & 07); *q++ = '0' + (((*p) >> 3) & 07); *q++ = '0' + ((*p) & 07); break; } } p++; } *q = 0; return dest; } hardinfo2-hardinfo2-1331e88/hardinfo2/gpu_util.c000066400000000000000000000333101474767047500214130ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2017 L. A. F. Pereira * This file * Copyright (C) 2018 Burt P. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "hardinfo.h" #include "gpu_util.h" #include "nice_name.h" #include "cpu_util.h" /* for EMPIFNULL() */ nvgpu *nvgpu_new() { return g_new0(nvgpu, 1); } void nvgpu_free(nvgpu *s) { if (s) { free(s->model); free(s->bios_version); free(s->uuid); } } static char *_line_value(char *line, const char *prefix) { if (g_str_has_prefix(g_strstrip(line), prefix)) { line += strlen(prefix) + 1; return g_strstrip(line); } else return NULL; } static gboolean nv_fill_procfs_info(gpud *s) { gchar *data, *p, *l, *next_nl; gchar *pci_loc = pci_address_str(s->pci_dev->domain, s->pci_dev->bus, s->pci_dev->device, s->pci_dev->function); gchar *nvi_file = g_strdup_printf("/proc/driver/nvidia/gpus/%s/information", pci_loc); g_file_get_contents(nvi_file, &data, NULL, NULL); g_free(pci_loc); g_free(nvi_file); if (data) { s->nv_info = nvgpu_new(); p = data; while(next_nl = strchr(p, '\n')) { strend(p, '\n'); g_strstrip(p); if (l = _line_value(p, "Model")) { s->nv_info->model = g_strdup(l); goto nv_details_next; } if (l = _line_value(p, "GPU UUID")) { s->nv_info->uuid = g_strdup(l); goto nv_details_next; } if (l = _line_value(p, "Video BIOS")) { s->nv_info->bios_version = g_strdup(l); goto nv_details_next; } /* TODO: more details */ nv_details_next: p = next_nl + 1; } g_free(data); return TRUE; } return FALSE; } static void intel_fill_freq(gpud *s) { gchar path[256] = ""; gchar *min_mhz = NULL, *max_mhz = NULL; if (s->sysfs_drm_path) { snprintf(path, 255, "%s/%s/gt_min_freq_mhz", s->sysfs_drm_path, s->id); g_file_get_contents(path, &min_mhz, NULL, NULL); snprintf(path, 255, "%s/%s/gt_max_freq_mhz", s->sysfs_drm_path, s->id); g_file_get_contents(path, &max_mhz, NULL, NULL); if (min_mhz) s->khz_min = atoi(min_mhz) * 1000; if (max_mhz) s->khz_max = atoi(max_mhz) * 1000; g_free(min_mhz); g_free(max_mhz); } } static void amdgpu_parse_dpmclk(gchar *path, int *min, int *max) { gchar *data = NULL, *p, *next_nl; int sp, i, clk; *min = -1; *max = -1; g_file_get_contents(path, &data, NULL, NULL); if (data) { p = data; while(next_nl = strchr(p, '\n')) { strend(p, '\n'); sp = sscanf(p, "%d: %dMhz", &i, &clk); if (sp == 2) { if (clk > 0) { if (*min < 0 || clk < *min) *min = clk; if (clk > *max) *max = clk; } } p = next_nl + 1; } } g_free(data); } static void amdgpu_fill_freq(gpud *s) { gchar path[256] = ""; int clk_min = -1, clk_max = -1, mem_clk_min = -1, mem_clk_max = -1; if (s->sysfs_drm_path) { /* core */ snprintf(path, 255, "%s/%s/device/pp_dpm_sclk", s->sysfs_drm_path, s->id); amdgpu_parse_dpmclk(path, &clk_min, &clk_max); if (clk_max > 0) s->khz_max = clk_max * 1000; if (clk_min > 0) s->khz_min = clk_min * 1000; /* memory */ snprintf(path, 255, "%s/%s/device/pp_dpm_mclk", s->sysfs_drm_path, s->id); amdgpu_parse_dpmclk(path, &mem_clk_min, &mem_clk_max); if (mem_clk_max > 0) s->mem_khz_max = mem_clk_max * 1000; if (mem_clk_min > 0) s->mem_khz_min = mem_clk_min * 1000; } } gpud *gpud_new() { return g_new0(gpud, 1); } void gpud_free(gpud *s) { if (s) { free(s->id); free(s->nice_name); free(s->vendor_str); free(s->device_str); free(s->location); free(s->drm_dev); free(s->sysfs_drm_path); free(s->dt_compat); g_free(s->dt_opp); pcid_free(s->pci_dev); nvgpu_free(s->nv_info); g_free(s); } } void gpud_list_free(gpud *s) { gpud *n; while(s != NULL) { n = s->next; gpud_free(s); s = n; } } /* returns number of items after append */ static int gpud_list_append(gpud *l, gpud *n) { int c = 0; while(l != NULL) { c++; if (l->next == NULL) { if (n != NULL) { l->next = n; c++; } break; } l = l->next; } return c; } int gpud_list_count(gpud *s) { return gpud_list_append(s, NULL); } /* TODO: In the future, when there is more vendor specific information available in * the gpu struct, then more precise names can be given to each gpu */ static void make_nice_name(gpud *s) { /* NV information available */ if (s->nv_info && s->nv_info->model) { s->nice_name = g_strdup_printf("%s %s", "NVIDIA", s->nv_info->model); return; } static const char unk_v[] = "Unknown"; /* do not... */ static const char unk_d[] = "Device"; /* ...translate */ const char *vendor_str = s->vendor_str; const char *device_str = s->device_str; if (!vendor_str) vendor_str = unk_v; if (!device_str) device_str = unk_d; /* try and a get a "short name" for the vendor */ vendor_str = vendor_get_shortest_name(vendor_str); if (strstr(vendor_str, "Intel")) { gchar *device_str_clean = strdup(device_str); nice_name_intel_gpu_device(device_str_clean); s->nice_name = g_strdup_printf("%s %s", vendor_str, device_str_clean); g_free(device_str_clean); } else if (strstr(vendor_str, "AMD")) { /* AMD PCI strings are crazy stupid because they use the exact same * chip and device id for a zillion "different products" */ char *full_name = strdup(device_str); /* Try and shorten it to the chip code name only, at least */ if(full_name) { char *b = strchr(full_name, '['); if (b) *b = '\0'; } s->nice_name = g_strdup_printf("%s %s", "AMD/ATI", g_strstrip(full_name)); free(full_name); } else { /* nothing nicer */ s->nice_name = g_strdup_printf("%s %s", vendor_str, device_str); } } /* Look for this kind of thing: * * /soc/gpu * * /gpu@ff300000 * * Usually a gpu dt node will have ./name = "gpu" */ static gchar *dt_find_gpu(dtr *dt, char *np) { gchar *dir_path, *dt_path, *ret; gchar *ftmp, *ntmp; const gchar *fn; GDir *dir; dtr_obj *obj; /* consider self */ obj = dtr_obj_read(dt, np); dt_path = dtr_obj_path(obj); ntmp = strstr(dt_path, "/gpu"); if (ntmp) { /* was found in node name */ if ( strchr(ntmp+1, '/') == NULL) { ftmp = ntmp + 4; /* should either be NULL or @ */ if (*ftmp == '\0' || *ftmp == '@') return g_strdup(dt_path); } } /* search children ... */ dir_path = g_strdup_printf("%s/%s", dtr_base_path(dt), np); dir = g_dir_open(dir_path, 0 , NULL); if (dir) { while((fn = g_dir_read_name(dir)) != NULL) { ftmp = g_strdup_printf("%s/%s", dir_path, fn); if ( g_file_test(ftmp, G_FILE_TEST_IS_DIR) ) { if (strcmp(np, "/") == 0) ntmp = g_strdup_printf("/%s", fn); else ntmp = g_strdup_printf("%s/%s", np, fn); ret = dt_find_gpu(dt, ntmp); g_free(ntmp); if (ret != NULL) { g_free(ftmp); g_dir_close(dir); return ret; } } g_free(ftmp); } g_dir_close(dir); } return NULL; } gpud *dt_soc_gpu() { static const char std_soc_gpu_drm_path[] = "/sys/devices/platform/soc/soc:gpu/drm"; /* compatible contains a list of compatible hardware, so be careful * with matching order. * ex: "ti,omap3-beagleboard-xm", "ti,omap3450", "ti,omap3"; * matches "omap3 family" first. * ex: "brcm,bcm2837", "brcm,bcm2836"; * would match 2836 when it is a 2837. */ const struct { char *search_str; char *vendor; char *soc; } dt_compat_searches[] = { { "brcm,bcm2837-vc4", "Broadcom", "VideoCore IV" }, { "brcm,bcm2836-vc4", "Broadcom", "VideoCore IV" }, { "brcm,bcm2835-vc4", "Broadcom", "VideoCore IV" }, { "arm,mali-450", "ARM", "Mali 450" }, { "arm,mali", "ARM", "Mali family" }, { NULL, NULL, NULL } }; char tmp_path[256] = ""; char *dt_gpu_path = NULL; char *compat = NULL; char *vendor = NULL, *device = NULL; int i; gpud *gpu = NULL; dtr *dt = dtr_new(NULL); if (!dtr_was_found(dt)) goto dt_gpu_end; dt_gpu_path = dt_find_gpu(dt, "/"); if (dt_gpu_path == NULL) goto dt_gpu_end; snprintf(tmp_path, 255, "%s/compatible", dt_gpu_path); compat = dtr_get_string(tmp_path, 1); if (compat == NULL) goto dt_gpu_end; gpu = gpud_new(); i = 0; while(dt_compat_searches[i].search_str != NULL) { if (strstr(compat, dt_compat_searches[i].search_str) != NULL) { vendor = dt_compat_searches[i].vendor; device = dt_compat_searches[i].soc; break; } i++; } gpu->dt_compat = compat; gpu->dt_vendor = vendor; gpu->dt_device = device; gpu->dt_path = dt_gpu_path; snprintf(tmp_path, 255, "%s/status", dt_gpu_path); gpu->dt_status = dtr_get_string(tmp_path, 1); snprintf(tmp_path, 255, "%s/name", dt_gpu_path); gpu->dt_name = dtr_get_string(tmp_path, 1); gpu->dt_opp = dtr_get_opp_range(dt, dt_gpu_path); if (gpu->dt_opp) { gpu->khz_max = gpu->dt_opp->khz_max; gpu->khz_min = gpu->dt_opp->khz_min; } EMPIFNULL(gpu->dt_name); EMPIFNULL(gpu->dt_status); gpu->id = strdup("dt-soc-gpu"); gpu->location = strdup("SOC"); if (access(std_soc_gpu_drm_path, F_OK) != -1) gpu->sysfs_drm_path = strdup(std_soc_gpu_drm_path); if (vendor) gpu->vendor_str = strdup(vendor); if (device) gpu->device_str = strdup(device); make_nice_name(gpu); dt_gpu_end: dtr_free(dt); return gpu; } gpud *gpu_get_device_list() { int cn = 0; gpud *list = NULL; /* Can we just ask DRM someway? ... */ /* TODO: yes. /sys/class/drm/card* */ /* Try PCI ... */ pcid_list pci_list = pci_get_device_list(0x300,0x3ff); GSList *l = pci_list; if (l) { while(l) { pcid *curr = (pcid*)l->data; char *pci_loc = NULL; gpud *new_gpu = gpud_new(); new_gpu->pci_dev = curr; pci_loc = pci_address_str(curr->domain, curr->bus, curr->device, curr->function); int len; char drm_id[512] = "", card_id[64] = ""; char *drm_dev = NULL; gchar *drm_path = g_strdup_printf("/dev/dri/by-path/pci-%s-card", pci_loc); memset(drm_id, 0, 512); if ((len = readlink(drm_path, drm_id, sizeof(drm_id)-1)) != -1) drm_id[len] = '\0'; g_free(drm_path); if (strlen(drm_id) != 0) { /* drm has the card */ drm_dev = strstr(drm_id, "card"); if (drm_dev) snprintf(card_id, 64, "%s", drm_dev); } if (strlen(card_id) == 0) { /* fallback to our own counter */ snprintf(card_id, 64, "pci-dc%d", cn); cn++; } if (drm_dev) new_gpu->drm_dev = strdup(drm_dev); char *sysfs_path_candidate = g_strdup_printf("%s/%s/drm", SYSFS_PCI_ROOT, pci_loc); if (access(sysfs_path_candidate, F_OK) != -1) { new_gpu->sysfs_drm_path = sysfs_path_candidate; } else free(sysfs_path_candidate); new_gpu->location = g_strdup_printf("PCI/%s", pci_loc); new_gpu->id = strdup(card_id); if (curr->vendor_id_str) new_gpu->vendor_str = strdup(curr->vendor_id_str); if (curr->device_id_str) new_gpu->device_str = strdup(curr->device_id_str); nv_fill_procfs_info(new_gpu); intel_fill_freq(new_gpu); amdgpu_fill_freq(new_gpu); make_nice_name(new_gpu); if (list == NULL) list = new_gpu; else gpud_list_append(list, new_gpu); free(pci_loc); l=l->next; } /* don't pcid_list_free(pci_list); They will be freed by gpud_free() */ g_slist_free(pci_list); /* just the linking data */ return list; } /* Try Device Tree ... */ list = dt_soc_gpu(); if (list) return list; /* Try other things ... */ return list; } hardinfo2-hardinfo2-1331e88/hardinfo2/hardinfo.c000066400000000000000000000155121474767047500213610ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2009 L. A. F. Pereira * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License v2.0 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include #include #include #include #include #include #include #include #include #include #include "callbacks.h" #include "dmi_util.h" ProgramParameters params = { 0 }; int main(int argc, char **argv) { int exit_code = 0; GSList *modules; gboolean cleanUserData; char *appver; gchar *path; GKeyFile *key_file = g_key_file_new(); gchar *conf_path = g_build_filename(g_get_user_config_dir(), "hardinfo2", "settings.ini", NULL); DEBUG("Hardinfo2 version " VERSION ". Debug version."); #if GLIB_CHECK_VERSION(2,32,5) #else //if (!g_thread_supported ()) g_thread_init(NULL); g_type_init (); #endif /* parse all command line parameters */ parameters_init(&argc, &argv, ¶ms); params.path_data=g_strdup(PREFIX); params.path_lib=g_strdup(LIBPREFIX); params.path_locale=g_strdup(LOCALEDIR); //scale from environment const char *s=getenv("GDK_DPI_SCALE"); if(!s || (sscanf(s,"%f",¶ms.scale)!=1)) params.scale=1.0; setlocale(LC_ALL, ""); bindtextdomain("hardinfo2", params.path_locale); textdomain("hardinfo2"); //Remove ids and json files when starting new program version or first time g_key_file_load_from_file( key_file, conf_path, G_KEY_FILE_KEEP_COMMENTS | G_KEY_FILE_KEEP_TRANSLATIONS, NULL); cleanUserData=false; appver = g_key_file_get_string(key_file, "Application", "Version", NULL); if(appver){ if(strcmp(appver,VERSION)) cleanUserData=true; } else {appver="OLD";cleanUserData=true;} if(cleanUserData){ DEBUG("Cleaning User Data.... (%s<>%s)\n",appver,VERSION); path = g_build_filename(g_get_user_config_dir(), "hardinfo2","blobs-update-version.json", NULL);g_remove(path);g_free(path); path = g_build_filename(g_get_user_config_dir(), "hardinfo2","benchmark.json", NULL);g_remove(path);g_free(path); path = g_build_filename(g_get_user_config_dir(), "hardinfo2","cpuflags.json", NULL);g_remove(path);g_free(path); path = g_build_filename(g_get_user_config_dir(), "hardinfo2","kernel-module-icons.json", NULL);g_remove(path);g_free(path); path = g_build_filename(g_get_user_config_dir(), "hardinfo2","arm.ids", NULL);g_remove(path);g_free(path); path = g_build_filename(g_get_user_config_dir(), "hardinfo2","ieee_oui.ids", NULL);g_remove(path);g_free(path); path = g_build_filename(g_get_user_config_dir(), "hardinfo2","edid.ids", NULL);g_remove(path);g_free(path); path = g_build_filename(g_get_user_config_dir(), "hardinfo2","pci.ids", NULL);g_remove(path);g_free(path); path = g_build_filename(g_get_user_config_dir(), "hardinfo2","sdcard.ids", NULL);g_remove(path);g_free(path); path = g_build_filename(g_get_user_config_dir(), "hardinfo2","usb.ids", NULL);g_remove(path);g_free(path); path = g_build_filename(g_get_user_config_dir(), "hardinfo2","vendor.ids", NULL);g_remove(path);g_free(path); //update settings.ini g_key_file_set_string(key_file, "Application", "Version", VERSION); #if GLIB_CHECK_VERSION(2,40,0) g_key_file_save_to_file(key_file, conf_path, NULL); #else g2_key_file_save_to_file(key_file, conf_path, NULL); #endif } g_free(conf_path); g_key_file_free(key_file); /* show version information and quit */ if (params.show_version) { g_print("Hardinfo2 version " VERSION "\n"); g_print (_(/*!/ %d will be latest year of copyright*/ "Copyright (C) 2003-2023 L. A. F. Pereira. 2024-%d Hardinfo2 Project.\n\n"), HARDINFO2_COPYRIGHT_LATEST_YEAR ); g_print(N_("Compile-time options:\n" " Release version: %s (%s)\n" " LibSoup version: %s\n" " Data : %s\n" " Library : %s\n" " Locale : %s\n" " Compiled for : %s\n"), RELEASE==1 ? "Yes (" VERSION ")" : (RELEASE==0?"No (" VERSION ")":"Debug (" VERSION ")"), ARCH, HARDINFO2_LIBSOUP3 ? _("3.0") : "2.4", params.path_data, params.path_lib, params.path_locale, PLATFORM); return 0; } if (!params.create_report && !params.run_benchmark) { /* we only try to open the UI if the user didn't ask for a report. */ params.gui_running = ui_init(&argc, &argv); /* as a fallback, if GTK+ initialization failed, run in report generation mode. */ if (!params.gui_running) { params.create_report = TRUE; /* ... it is possible to -f html without -r */ if (params.report_format != REPORT_FORMAT_HTML) params.markup_ok = FALSE; } } /* load all modules */ DEBUG("loading all modules"); modules = modules_load_all(); /* initialize vendor database */ vendor_init(); /* initialize moreinfo */ moreinfo_init(); if (params.run_benchmark) { gchar *result; result = module_call_method_param("benchmark::runBenchmark", params.run_benchmark); if (!result) { fprintf(stderr, _("Unknown benchmark ``%s''\n"), params.run_benchmark); exit_code = 1; } else { fprintf(stderr, "\n"); g_print("%s\n", result); g_free(result); } } else if (params.gui_running) { /* initialize gui and start gtk+ main loop */ icon_cache_init(); stock_icons_init(); shell_init(modules); DEBUG("entering gtk+ main loop"); gtk_main(); } else if (params.create_report) { /* generate report */ gchar *report; if(params.bench_user_note) {//synchronize without sending benchmarks sync_manager_update_on_startup(0); } DEBUG("generating report"); report = report_create_from_module_list_format(modules, params. report_format); g_print("%s", report); if(params.bench_user_note) {//synchronize if(!params.skip_benchmarks) sync_manager_update_on_startup(1); } g_free(report); } else { g_error(_("Don't know what to do. Exiting.")); } moreinfo_shutdown(); vendor_cleanup(); dmidecode_cache_free(); free_auto_free_final(); DEBUG("finished"); return exit_code; } hardinfo2-hardinfo2-1331e88/hardinfo2/hinote_util.c000066400000000000000000000016531474767047500221130ustar00rootroot00000000000000 #include "hardinfo.h" /* requires COMPILE_FLAGS "-std=c99" */ static const char bullet_yes[] = "\u2713"; static const char bullet_no[] = "\u2022 "; static const char bullet_yes_text[] = "[X]"; static const char bullet_no_text[] = "[ ]"; gboolean note_cond_bullet(gboolean cond, gchar *note_buff, const gchar *desc_str) { int l = strlen(note_buff); if (params.markup_ok) snprintf(note_buff + l, note_max_len - l - 1, "%s %s\n", cond ? bullet_yes : bullet_no, desc_str); else snprintf(note_buff + l, note_max_len - l - 1, "%s %s\n", cond ? bullet_yes_text : bullet_no_text, desc_str); return cond; } gboolean note_require_tool(const gchar *tool, gchar *note_buff, const gchar *desc_str) { gchar *tl = find_program((gchar*)tool); gboolean found = note_cond_bullet(!!tl, note_buff, desc_str); g_free(tl); return found; } hardinfo2-hardinfo2-1331e88/hardinfo2/info.c000066400000000000000000000456311474767047500205270ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2017 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "hardinfo.h" #include "util_sysobj.h" /* for SEQ() */ /* Using a slightly modified gg_key_file_parse_string_as_value() * from GLib in flatten(), to escape characters and the separator. * The function is not public in GLib and we don't have a GKeyFile * to pass it anyway. */ /* Now in hardinfo.h -- #include "gg_key_file_parse_string_as_value.c" */ static const gchar *info_column_titles[] = { "TextValue", "Value", "Progress", "Extra1", "Extra2" }; struct Info *info_new(void) { struct Info *info = g_new0(struct Info, 1); info->groups = g_array_new(FALSE, FALSE, sizeof(struct InfoGroup)); info->view_type = SHELL_VIEW_NORMAL; info->column_headers_visible = FALSE; info->zebra_visible = FALSE; info->normalize_percentage = TRUE; return info; } void info_group_add_field(struct InfoGroup *group, struct InfoField field) { if (!group) return; /* info_field_last() */ if (!field.name) return; g_array_append_val(group->fields, field); } void info_group_add_fieldsv(struct InfoGroup *group, va_list ap) { while (1) { struct InfoField field = va_arg(ap, struct InfoField); /* info_field_last() */ if (!field.name) break; g_array_append_val(group->fields, field); } } void info_group_add_fields(struct InfoGroup *group, ...) { va_list ap; va_start(ap, group); info_group_add_fieldsv(group, ap); va_end(ap); } struct InfoGroup *info_add_group(struct Info *info, const gchar *group_name, ...) { struct InfoGroup group = { .name = group_name, .fields = g_array_new(FALSE, FALSE, sizeof(struct InfoField)) }; va_list ap; va_start(ap, group_name); info_group_add_fieldsv(&group, ap); va_end(ap); g_array_append_val(info->groups, group); return &g_array_index(info->groups, struct InfoGroup, info->groups->len - 1); } struct InfoField info_field_printf(const gchar *name, const gchar *format, ...) { gchar *value; va_list ap; va_start(ap, format); value = g_strdup_vprintf(format, ap); va_end(ap); return (struct InfoField) { .name = name, .value = value, .free_value_on_flatten = TRUE, }; } void info_group_strip_extra(struct InfoGroup *group) { guint fi; char *val, *oldval; struct InfoField *field; for (fi = 0; fi < group->fields->len; fi++) { field = &g_array_index(group->fields, struct InfoField, fi); if (field->value){ val = strrchr(field->value, '|'); if (val) { oldval = (gchar*)field->value; field->value = strdup(val + 1); g_free(oldval); } } } } void info_add_computed_group(struct Info *info, const gchar *name, const gchar *value) { /* This is a scaffolding method: HardInfo should move away from pre-computing * the strings in favor of storing InfoGroups instead; while modules are not * fully converted, use this instead. */ struct Info *tmp_info = NULL; struct InfoGroup donor = {}; gchar *tmp_str = NULL; if (name) tmp_str = g_strdup_printf("[%s]\n%s", name, value); else tmp_str = g_strdup(value); tmp_info = info_unflatten(tmp_str); if (tmp_info->groups->len != 1) { fprintf(stderr, "info_add_computed_group(): expected only one group in value! (actual: %d)\n", tmp_info->groups->len); } else { donor = g_array_index(tmp_info->groups, struct InfoGroup, 0); g_array_append_val(info->groups, donor); } g_free(tmp_info); // TODO: doesn't do enough g_free(tmp_str); } void info_add_computed_group_wo_extra(struct Info *info, const gchar *name, const gchar *value) { /* This is a scaffolding method: HardInfo should move away from pre-computing * the strings in favor of storing InfoGroups instead; while modules are not * fully converted, use this instead. */ struct InfoGroup *agroup; info_add_computed_group(info, name, value); if (info->groups->len > 0) { agroup = &g_array_index(info->groups, struct InfoGroup, info->groups->len - 1); info_group_strip_extra(agroup); } } void info_set_column_title(struct Info *info, const gchar *column, const gchar *title) { guint i; for (i = 0; i < G_N_ELEMENTS(info_column_titles); i++) { if (g_str_equal(info_column_titles[i], column)) { info->column_titles[i] = title; return; } } } void info_set_column_headers_visible(struct Info *info, gboolean setting) { info->column_headers_visible = setting; } void info_set_zebra_visible(struct Info *info, gboolean setting) { info->zebra_visible = setting; } void info_set_normalize_percentage(struct Info *info, gboolean setting) { info->normalize_percentage = setting; } void info_set_view_type(struct Info *info, ShellViewType setting) { info->view_type = setting; } void info_set_reload_interval(struct Info *info, int setting) { info->reload_interval = setting; } static int info_field_cmp_name_ascending(const void *a, const void *b) { const struct InfoField *aa = a, *bb = b; return g_strcmp0(aa->name, bb->name); } static int info_field_cmp_name_descending(const void *a, const void *b) { const struct InfoField *aa = a, *bb = b; return g_strcmp0(bb->name, aa->name); } static int info_field_cmp_value_ascending(const void *a, const void *b) { const struct InfoField *aa = a, *bb = b; return g_strcmp0(aa->value, bb->value); } static int info_field_cmp_value_descending(const void *a, const void *b) { const struct InfoField *aa = a, *bb = b; return g_strcmp0(bb->value, aa->value); } static int info_field_cmp_tag_ascending(const void *a, const void *b) { const struct InfoField *aa = a, *bb = b; return g_strcmp0(aa->tag, bb->tag); } static int info_field_cmp_tag_descending(const void *a, const void *b) { const struct InfoField *aa = a, *bb = b; return g_strcmp0(bb->tag, aa->tag); } static const GCompareFunc sort_functions[INFO_GROUP_SORT_MAX] = { [INFO_GROUP_SORT_NONE] = NULL, [INFO_GROUP_SORT_NAME_ASCENDING] = info_field_cmp_name_ascending, [INFO_GROUP_SORT_NAME_DESCENDING] = info_field_cmp_name_descending, [INFO_GROUP_SORT_VALUE_ASCENDING] = info_field_cmp_value_ascending, [INFO_GROUP_SORT_VALUE_DESCENDING] = info_field_cmp_value_descending, [INFO_GROUP_SORT_TAG_ASCENDING] = info_field_cmp_tag_ascending, [INFO_GROUP_SORT_TAG_DESCENDING] = info_field_cmp_tag_descending, }; static void field_free_strings(struct InfoField *field) { if (field->free_value_on_flatten) g_free((gchar *)field->value); if (field->free_name_on_flatten) g_free((gchar *)field->name); g_free(field->tag); } static void free_group_fields(struct InfoGroup *group) { if (group && group->fields) { guint i; for (i = 0; i < group->fields->len; i++) { struct InfoField *field = &g_array_index(group->fields, struct InfoField, i); field_free_strings(field); } g_array_free(group->fields, TRUE); } } static void flatten_group(GString *output, const struct InfoGroup *group, guint group_count) { guint i; if (group->name != NULL) g_string_append_printf(output, "[%s#%d]\n", group->name, group_count); if (group->sort != INFO_GROUP_SORT_NONE) g_array_sort(group->fields, sort_functions[group->sort]); if (group->fields) { for (i = 0; i < group->fields->len; i++) { struct InfoField *field = &g_array_index(group->fields, struct InfoField, i); gchar tmp_tag[256] = ""; /* for generated tag */ gboolean do_escape = TRUE; /* refers to the value side only */ if (field->value && strchr(field->value, '|') ) { /* turning off escaping for values that may have columns */ do_escape = FALSE; /* TODO:/FIXME: struct InfoField should store the column values * in an array instead of packing them into one value with '|'. * Then each value can be escaped and joined together with '|' * for flatten(). unflatten() can then split on non-escaped '|', * and unescape the result values into the column value array. * Another way to do this might be to check * .column_headers_visible in struct Info, but that is not * available here. */ } const gchar *tp = field->tag; gboolean tagged = !!tp; gboolean flagged = field->highlight || field->report_details || field->value_has_vendor; if (!tp) { snprintf(tmp_tag, 255, "ITEM%d-%d", group_count, i); tp = tmp_tag; } if (!field->label_is_escaped) { if (strchr(field->name, '=') || strchr(field->name, '$')) { // TODO: what about # ? gchar *ofn = (gchar*)field->name; field->name = key_label_escape(ofn); g_free(ofn); field->label_is_escaped = TRUE; } } if (tagged || flagged || field->icon) { g_string_append_printf(output, "$%s%s%s%s%s$", field->label_is_escaped ? "@" : "", field->highlight ? "*" : "", field->report_details ? "!" : "", field->value_has_vendor ? "^" : "", tp); } if (do_escape) { gchar *escaped_value = gg_key_file_parse_string_as_value(field->value, '|'); g_string_append_printf(output, "%s=%s\n", field->name, escaped_value); g_free(escaped_value); } else { g_string_append_printf(output, "%s=%s\n", field->name, field->value); } } } else if (group->computed) { g_string_append_printf(output, "%s\n", group->computed); } } static void flatten_shell_param(GString *output, const struct InfoGroup *group, guint group_count) { guint i; if (!group->fields) return; for (i = 0; i < group->fields->len; i++) { struct InfoField *field = &g_array_index(group->fields, struct InfoField, i); gchar tmp_tag[256] = ""; /* for generated tag */ const gchar *tp = field->tag; gboolean tagged = !!tp; if (!tp) { snprintf(tmp_tag, 255, "ITEM%d-%d", group_count, i); tp = tmp_tag; } if (field->update_interval) { g_string_append_printf(output, "UpdateInterval$%s%s%s=%d\n", tagged ? tp : "", tagged ? "$" : "", /* tag and close or nothing */ field->name, field->update_interval); } if (field->icon) { g_string_append_printf(output, "Icon$%s$=%s\n", tp, field->icon); } } } static void flatten_shell_param_global(GString *output, const struct Info *info) { guint i; g_string_append_printf(output, "ViewType=%d\n", info->view_type); g_string_append_printf(output, "ShowColumnHeaders=%s\n", info->column_headers_visible ? "true" : "false"); if (info->zebra_visible) g_string_append(output, "Zebra=1\n"); if (info->reload_interval) g_string_append_printf(output, "ReloadInterval=%d\n", info->reload_interval); if (!info->normalize_percentage) g_string_append(output, "NormalizePercentage=false\n"); for (i = 0; i < G_N_ELEMENTS(info_column_titles); i++) { if (!info->column_titles[i]) continue; g_string_append_printf(output, "ColumnTitle$%s=%s\n", info_column_titles[i], info->column_titles[i]); } } gchar *info_flatten(struct Info *info) { /* This is a scaffolding method: eventually the HardInfo shell should * understand a struct Info instead of parsing these strings, which are * brittle and unnecessarily complicates things. Being a temporary * method, no attention is paid to improve the memory allocation * strategy. */ GString *values; GString *shell_param; guint i; values = g_string_new(NULL); shell_param = g_string_new(NULL); if (info->groups) { for (i = 0; i < info->groups->len; i++) { struct InfoGroup *group = &g_array_index(info->groups, struct InfoGroup, i); flatten_group(values, group, i); flatten_shell_param(shell_param, group, i); free_group_fields(group); } g_array_free(info->groups, TRUE); } flatten_shell_param_global(shell_param, info); g_string_append_printf(values, "[$ShellParam$]\n%s", shell_param->str); g_string_free(shell_param, TRUE); g_free(info); return g_string_free(values, FALSE); } void info_remove_group(struct Info *info, guint index) { struct InfoGroup *grp; if (index >= info->groups->len) return; grp = &g_array_index(info->groups, struct InfoGroup, index); free_group_fields(grp); g_array_remove_index(info->groups, index); } struct InfoField *info_find_field(struct Info *info, const gchar *tag, const gchar *name) { guint gi,fi; for (gi = 0; gi < info->groups->len; gi++) { struct InfoGroup *group = &g_array_index(info->groups, struct InfoGroup, gi); for (fi = 0; fi < group->fields->len; fi++) { struct InfoField *field = &g_array_index(group->fields, struct InfoField, fi); if (tag && SEQ(tag, field->tag) ) return field; else if (name && SEQ(name, field->name) ) return field; } } return NULL; } #define VAL_FALSE_OR_TRUE ((!g_strcmp0(value, "true") || !g_strcmp0(value, "1")) ? TRUE : FALSE) struct Info *info_unflatten(const gchar *str) { struct Info *info = info_new(); GKeyFile *key_file = g_key_file_new(); gchar **groups; gsize ngroups; int g, k, spg = -1; g_key_file_load_from_data(key_file, str, strlen(str), 0, NULL); groups = g_key_file_get_groups(key_file, &ngroups); for (g = 0; groups[g]; g++) { gchar *group_name = groups[g]; gchar **keys = g_key_file_get_keys(key_file, group_name, NULL, NULL); if (*group_name == '$') { /* special group */ if (SEQ(group_name, "$ShellParam$") ) spg = g; /* handle after all groups are added */ else { /* This special group is unknown and won't be handled, so * the name will not be linked anywhere. */ g_free(group_name); continue; } } else { /* normal group */ struct InfoGroup group = {}; group.name = group_name; group.fields = g_array_new(FALSE, FALSE, sizeof(struct InfoField)); group.sort = INFO_GROUP_SORT_NONE; for (k = 0; keys[k]; k++) { struct InfoField field = {}; gchar *flags, *tag, *name, *label, *dis; key_get_components(keys[k], &flags, &tag, &name, &label, &dis, TRUE); gchar *value = g_key_file_get_value(key_file, group_name, keys[k], NULL); field.tag = tag; field.name = name; field.value = value; if (key_label_is_escaped(flags)) field.label_is_escaped = TRUE; if (key_wants_details(flags)) field.report_details = TRUE; if (key_is_highlighted(flags)) field.highlight = TRUE; if (key_value_has_vendor_string(flags)) field.value_has_vendor = TRUE; field.free_value_on_flatten = TRUE; field.free_name_on_flatten = TRUE; g_free(flags); g_free(label); g_free(dis); g_array_append_val(group.fields, field); } g_array_append_val(info->groups, group); } } if (spg >= 0) { gchar *group_name = groups[spg]; gchar **keys = g_key_file_get_keys(key_file, group_name, NULL, NULL); for (k = 0; keys[k]; k++) { gchar *value = g_key_file_get_value(key_file, group_name, keys[k], NULL); gchar *parm = NULL; if (SEQ(keys[k], "ViewType")) { info_set_view_type(info, atoi(value)); } else if (SEQ(keys[k], "ShowColumnHeaders")) { info_set_column_headers_visible(info, VAL_FALSE_OR_TRUE); } else if (SEQ(keys[k], "Zebra")) { info_set_zebra_visible(info, VAL_FALSE_OR_TRUE); } else if (SEQ(keys[k], "ReloadInterval")) { info_set_reload_interval(info, atoi(value)); } else if (SEQ(keys[k], "NormalizePercentage")) { info_set_normalize_percentage(info, VAL_FALSE_OR_TRUE); } else if (g_str_has_prefix(keys[k], "ColumnTitle$")) { info_set_column_title(info, strchr(keys[k], '$') + 1, value); } else if (g_str_has_prefix(keys[k], "Icon$")) { gchar *chk_tag = NULL; parm = strchr(keys[k], '$'); if (key_is_flagged(parm)) chk_tag = key_mi_tag(parm); struct InfoField *field = info_find_field(info, chk_tag, NULL); if (field) field->icon = value; g_free(chk_tag); } else if (g_str_has_prefix(keys[k], "UpdateInterval$")) { const gchar *chk_name = NULL; gchar *chk_tag = NULL; parm = strchr(keys[k], '$'); if (key_is_flagged(parm)) { chk_tag = key_mi_tag(parm); chk_name = key_get_name(parm); } else chk_name = key_get_name(parm+1); struct InfoField *field = info_find_field(info, chk_tag, chk_name); if (field) field->update_interval = atoi(value); g_free(chk_tag); } } g_free(group_name); g_strfreev(keys); } return info; } hardinfo2-hardinfo2-1331e88/hardinfo2/pci_util.c000066400000000000000000000343621474767047500214030ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2017 L. A. F. Pereira * This file * Copyright (C) 2018 Burt P. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "hardinfo.h" #include "pci_util.h" #include "util_ids.h" gchar *pci_ids_file = NULL; GTimer *pci_ids_timer = NULL; const gboolean nolspci = FALSE; /* true for testing */ /* Two pieces of info still only from lspci: * - kernel driver in use * - kernel modules list * * TODO: could use readlink() and basename() to get kernel driver from sysfs * - /sys/bus/pci/devices//driver is a symlink */ const gchar *find_pci_ids_file() { if (pci_ids_file) { if (!strstr(pci_ids_file, ".min")) return pci_ids_file; if (g_timer_elapsed(pci_ids_timer, NULL) > 2.0) { /* try again for the full version */ DEBUG("find_pci_ids_file() found only a \".min\" version, trying again..."); g_free(pci_ids_file); pci_ids_file = NULL; } } char *file_search_order[] = { g_build_filename(g_get_user_config_dir(), "hardinfo2", "pci.ids", NULL), g_build_filename(params.path_data, "pci.ids", NULL), NULL }; int n; for(n = 0; file_search_order[n]; n++) { if (!pci_ids_file && !access(file_search_order[n], R_OK)) pci_ids_file = file_search_order[n]; else g_free(file_search_order[n]); } DEBUG("find_pci_ids_file() result: %s", pci_ids_file); if (pci_ids_file) { if (!pci_ids_timer) pci_ids_timer = g_timer_new(); else g_timer_reset(pci_ids_timer); } return pci_ids_file; } char *pci_lookup_ids_vendor_str(uint32_t id) { gchar *ret = NULL; ids_query_result result;// = {}; gchar *qpath; memset(&result,0,sizeof(ids_query_result)); if (!find_pci_ids_file()) return FALSE; qpath = g_strdup_printf("%04x", id); scan_ids_file(pci_ids_file, qpath, &result, -1); if (result.results[0]) { ret = g_strdup(result.results[0]); } g_free(qpath); return ret; } static gboolean pci_lookup_ids(pcid *d) { gboolean ret = FALSE; ids_query_result result;// = {}; gchar *qpath; memset(&result,0,sizeof(ids_query_result)); if (!find_pci_ids_file()) return FALSE; /* lookup vendor, device, sub device */ qpath = g_strdup_printf("%04x/%04x/%04x %04x", d->vendor_id, d->device_id, d->sub_vendor_id, d->sub_device_id); scan_ids_file(pci_ids_file, qpath, &result, -1); if (result.results[0]) { if (d->vendor_id_str) g_free(d->vendor_id_str); d->vendor_id_str = g_strdup(result.results[0]); ret = TRUE; } if (result.results[1]) { if (d->device_id_str) g_free(d->device_id_str); d->device_id_str = g_strdup(result.results[1]); ret = TRUE; } if (result.results[2]) { if (d->sub_device_id_str) g_free(d->sub_device_id_str); d->sub_device_id_str = g_strdup(result.results[2]); ret = TRUE; } g_free(qpath); /* lookup sub vendor by itself */ qpath = g_strdup_printf("%04x", d->sub_vendor_id); scan_ids_file(pci_ids_file, qpath, &result, -1); if (result.results[0]) { if (d->sub_vendor_id_str) g_free(d->sub_vendor_id_str); d->sub_vendor_id_str = g_strdup(result.results[0]); ret = TRUE; }; g_free(qpath); /* lookup class */ qpath = g_strdup_printf("C %02x/%02x", (d->class >> 8) & 0xff, (d->class & 0xff)); scan_ids_file(pci_ids_file, qpath, &result, -1); if (result.results[0]) { if (d->class_str) g_free(d->class_str); d->class_str = g_strdup(result.results[0]); if (result.results[1] && !SEQ(result.results[0], result.results[1]) ) { /* options 1: results[0] + " :: " + results[1] */ //d->class_str = appf(d->class_str, " :: ", "%s", result.results[1]); /* option 2: results[1] or results[0] */ g_free(d->class_str); d->class_str = g_strdup(result.results[1]); } ret = TRUE; } g_free(qpath); return ret; } gint pcid_cmp_by_addy(gconstpointer a, gconstpointer b) { const struct pcid *dev_a = a; const struct pcid *dev_b = b; if (!dev_a) return !!dev_b; if (!dev_b) return !!dev_a; return g_strcmp0(dev_a->slot_str, dev_b->slot_str); } void pcid_free(pcid *s) { if (s) { g_free(s->slot_str); g_free(s->class_str); g_free(s->vendor_id_str); g_free(s->device_id_str); g_free(s->sub_vendor_id_str); g_free(s->sub_device_id_str); g_free(s->driver); g_free(s->driver_list); g_free(s); } } static char *lspci_line_value(char *line, const char *prefix) { if (g_str_has_prefix(g_strstrip(line), prefix)) { line += strlen(prefix) + 1; return g_strstrip(line); } else return NULL; } /* read output line of lspci -vmmnn */ static int lspci_line_string_and_code(char *line, char *prefix, char **str, uint32_t *code) { char *l = lspci_line_value(line, prefix); char *e; if (l) { e = strchr(l, 0); while (e > l && *e != '[') e--; sscanf(e, "[%x]", code); *e = 0; /* terminate at start of code */ if (*str) free(*str); /* free if replacing */ *str = strdup(g_strstrip(l)); } return 0; } static gboolean pci_fill_details(pcid *s) { if (nolspci) return FALSE; gboolean spawned; gchar *out, *err, *p, *l, *next_nl; gchar *pci_loc = pci_address_str(s->domain, s->bus, s->device, s->function); gchar *lspci_cmd = g_strdup_printf("lspci -D -s %s -vvv", pci_loc); spawned = hardinfo_spawn_command_line_sync(lspci_cmd, &out, &err, NULL, NULL); g_free(lspci_cmd); g_free(pci_loc); if (spawned) { p = out; while(next_nl = strchr(p, '\n')) { strend(p, '\n'); g_strstrip(p); if (l = lspci_line_value(p, "Kernel driver in use")) { s->driver = g_strdup(l); goto pci_details_next; } if (l = lspci_line_value(p, "Kernel modules")) { s->driver_list = g_strdup(l); goto pci_details_next; } /* TODO: more details */ pci_details_next: p = next_nl + 1; } g_free(out); g_free(err); return TRUE; } return FALSE; } char *pci_address_str(uint32_t dom, uint32_t bus, uint32_t dev, uint32_t func) { return g_strdup_printf("%04x:%02x:%02x.%01x", dom, bus, dev, func); } /* /sys/bus/pci/devices/0000:01:00.0/ */ char *_sysfs_bus_pci(uint32_t dom, uint32_t bus, uint32_t dev, uint32_t func, const char *item) { char *ret = NULL, *pci_loc, *sysfs_path; pci_loc = pci_address_str(dom, bus, dev, func); sysfs_path = g_strdup_printf("%s/%s/%s", SYSFS_PCI_ROOT, pci_loc, item); g_file_get_contents(sysfs_path, &ret, NULL, NULL); free(pci_loc); free(sysfs_path); return ret; } gboolean _sysfs_bus_pci_read_hex(uint32_t dom, uint32_t bus, uint32_t dev, uint32_t func, const char *item, uint32_t *val) { char *tmp = _sysfs_bus_pci(dom, bus, dev, func, item); uint32_t tval; if (tmp && val) { int ec = sscanf(tmp, "%x", &tval); free(tmp); if (ec==1) { *val = tval; return TRUE; } } return FALSE; } /* https://www.kernel.org/doc/Documentation/ABI/testing/sysfs-bus-pci */ static gboolean pci_get_device_sysfs(uint32_t dom, uint32_t bus, uint32_t dev, uint32_t func, pcid *s) { char *tmp = NULL; int ec = 0; float tf; s->domain = dom; s->bus = bus; s->device = dev; s->function = func; s->slot_str = s->slot_str ? s->slot_str : pci_address_str(dom, bus, dev, func); if (! _sysfs_bus_pci_read_hex(dom, bus, dev, func, "class", &s->class) ) return FALSE; s->class >>= 8; /* TODO: find out why */ _sysfs_bus_pci_read_hex(dom, bus, dev, func, "device", &s->device_id); _sysfs_bus_pci_read_hex(dom, bus, dev, func, "vendor", &s->vendor_id); _sysfs_bus_pci_read_hex(dom, bus, dev, func, "subsystem_device", &s->sub_device_id); _sysfs_bus_pci_read_hex(dom, bus, dev, func, "subsystem_vendor", &s->sub_vendor_id); _sysfs_bus_pci_read_hex(dom, bus, dev, func, "revision", &s->revision); tmp = _sysfs_bus_pci(dom, bus, dev, func, "max_link_speed"); if (tmp) { ec = sscanf(tmp, "%f GT/s", &tf); if (ec==1) s->pcie_speed_max = tf; free(tmp); } tmp = _sysfs_bus_pci(dom, bus, dev, func, "current_link_speed"); if (tmp) { ec = sscanf(tmp, "%f GT/s", &tf); if (ec==1) s->pcie_speed_curr = tf; free(tmp); } tmp = _sysfs_bus_pci(dom, bus, dev, func, "max_link_width"); if (tmp) { s->pcie_width_max = strtoul(tmp, NULL, 0); free(tmp); } tmp = _sysfs_bus_pci(dom, bus, dev, func, "current_link_width"); if (tmp) { s->pcie_width_curr = strtoul(tmp, NULL, 0); free(tmp); } return TRUE; } static gboolean pci_get_device_lspci(uint32_t dom, uint32_t bus, uint32_t dev, uint32_t func, pcid *s) { if (nolspci) return FALSE; gboolean spawned; gchar *out, *err, *p, *l, *next_nl; gchar *pci_loc = pci_address_str(dom, bus, dev, func); gchar *lspci_cmd = g_strdup_printf("lspci -D -s %s -vmmnn", pci_loc); s->domain = dom; s->bus = bus; s->device = dev; s->function = func; spawned = hardinfo_spawn_command_line_sync(lspci_cmd, &out, &err, NULL, NULL); g_free(lspci_cmd); if (spawned) { p = out; while(next_nl = strchr(p, '\n')) { strend(p, '\n'); g_strstrip(p); if (l = lspci_line_value(p, "Slot")) { s->slot_str = g_strdup(l); if (strcmp(s->slot_str, pci_loc) != 0) { printf("PCI: %s != %s\n", s->slot_str, pci_loc); } } if (l = lspci_line_value(p, "Rev")) { s->revision = strtol(l, NULL, 16); } lspci_line_string_and_code(p, "Class", &s->class_str, &s->class); lspci_line_string_and_code(p, "Vendor", &s->vendor_id_str, &s->vendor_id); lspci_line_string_and_code(p, "Device", &s->device_id_str, &s->device_id); lspci_line_string_and_code(p, "SVendor", &s->sub_vendor_id_str, &s->sub_vendor_id); lspci_line_string_and_code(p, "SDevice", &s->sub_device_id_str, &s->sub_device_id); p = next_nl + 1; } g_free(out); g_free(err); g_free(pci_loc); return TRUE; } g_free(pci_loc); return FALSE; } pcid *pci_get_device_str(const char *addy) { uint32_t dom, bus, dev, func; int ec; if (addy) { ec = sscanf(addy, "%x:%x:%x.%x", &dom, &bus, &dev, &func); if (ec == 4) { return pci_get_device(dom, bus, dev, func); } } return NULL; } pcid *pci_get_device(uint32_t dom, uint32_t bus, uint32_t dev, uint32_t func) { pcid *s = pcid_new(); gboolean ok = FALSE; if (s) { ok = pci_get_device_sysfs(dom, bus, dev, func, s); if (ok) { ok |= pci_lookup_ids(s); if (!ok) ok |= pci_get_device_lspci(dom, bus, dev, func, s); } if (!ok) { pcid_free(s); s = NULL; } } return s; } static pcid_list pci_get_device_list_lspci(uint32_t class_min, uint32_t class_max) { if (nolspci) return NULL; gboolean spawned; gchar *out, *err, *p, *next_nl; pcid_list dl = NULL; pcid *nd; uint32_t dom, bus, dev, func, cls; int ec; if (class_max == 0) class_max = 0xffff; spawned = hardinfo_spawn_command_line_sync("lspci -D -mn", &out, &err, NULL, NULL); if (spawned) { p = out; while(next_nl = strchr(p, '\n')) { strend(p, '\n'); ec = sscanf(p, "%x:%x:%x.%x \"%x\"", &dom, &bus, &dev, &func, &cls); if (ec == 5) { if (cls >= class_min && cls <= class_max) { nd = pci_get_device(dom, bus, dev, func); pci_fill_details(nd); dl = g_slist_append(dl, nd); } } p = next_nl + 1; } g_free(out); g_free(err); } return dl; } static pcid_list pci_get_device_list_sysfs(uint32_t class_min, uint32_t class_max) { pcid_list dl = NULL; pcid *nd; uint32_t dom, bus, dev, func, cls; int ec; if (class_max == 0) class_max = 0xffff; const gchar *f = NULL; GDir *d = g_dir_open("/sys/bus/pci/devices", 0, NULL); if (!d) return 0; while((f = g_dir_read_name(d))) { ec = sscanf(f, "%x:%x:%x.%x", &dom, &bus, &dev, &func); if (ec == 4) { gchar *cf = g_strdup_printf("/sys/bus/pci/devices/%s/class", f); gchar *cstr = NULL; if (g_file_get_contents(cf, &cstr, NULL, NULL) ) { cls = strtoul(cstr, NULL, 16) >> 8; if (cls >= class_min && cls <= class_max) { nd = pci_get_device(dom, bus, dev, func); pci_fill_details(nd); dl = g_slist_append(dl, nd); } } g_free(cstr); g_free(cf); } } g_dir_close(d); return dl; } pcid_list pci_get_device_list(uint32_t class_min, uint32_t class_max) { pcid_list dl = NULL; dl = pci_get_device_list_sysfs(class_min, class_max); if (!dl) dl = pci_get_device_list_lspci(class_min, class_max); return dl; } hardinfo2-hardinfo2-1331e88/hardinfo2/problem_marker.c000066400000000000000000000004401474767047500225620ustar00rootroot00000000000000 #include "hardinfo.h" /* requires COMPILE_FLAGS "-std=c99" */ const char *problem_marker() { static const char as_markup[] = "\u26A0"; static const char as_text[] = "(!)"; if (params.markup_ok) return as_markup; else return as_text; } hardinfo2-hardinfo2-1331e88/hardinfo2/socket.c000066400000000000000000000052331474767047500210560ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include #include #include #include #include #include #include #include #include #include "socket.h" Socket *sock_connect(gchar * host, gint port) { struct sockaddr_in server; Socket *s; int sock; sock = socket(AF_INET, SOCK_STREAM, 0); if (sock > 0) { memset(&server, 0, sizeof(server)); server.sin_family = AF_INET; inet_pton(AF_INET,host,&server.sin_addr.s_addr); server.sin_port = htons(port); if (connect(sock, (struct sockaddr *) (void *) &server, sizeof(server)) < 0) { goto cleanup; } s = g_new0(Socket, 1); s->sock = sock; return s; } cleanup: close(sock); return NULL; } /* From: http://www.erlenstar.demon.co.uk/unix/faq_3.html#SEC26 */ static inline int __sock_is_ready(Socket * s, int mode) { int rc, fd = s->sock; fd_set fds; struct timeval tv; FD_ZERO(&fds); FD_SET(fd, &fds); tv.tv_sec = tv.tv_usec = 0; if (mode == 0) { /* read */ rc = select(fd + 1, &fds, NULL, NULL, &tv); } else { /* write */ rc = select(fd + 1, NULL, &fds, NULL, &tv); } if (rc < 0) return -1; return FD_ISSET(fd, &fds) ? 1 : 0; } int sock_ready_to_read(Socket * s) { return __sock_is_ready(s, 0); } int sock_ready_to_write(Socket * s) { return __sock_is_ready(s, 1); } int sock_read(Socket * s, gchar * buffer, gint size) { if (size > 2 && sock_ready_to_read(s)) { gint n; n = read(s->sock, buffer, size - 1); if (n > 0) { buffer[n] = '\0'; } else { return 0; } return n; } return 0; } int sock_write(Socket * s, gchar * str) { while (!sock_ready_to_write(s)); return write(s->sock, str, strlen(str)); } void sock_close(Socket * s) { shutdown(s->sock, 2); close(s->sock); g_free(s); } hardinfo2-hardinfo2-1331e88/hardinfo2/storage_util.c000066400000000000000000000170451474767047500222730ustar00rootroot00000000000000#include "udisks2_util.h" #include "storage_util.h" #include "util_ids.h" #include "hardinfo.h" gchar *sdcard_ids_file = NULL; gchar *oui_ids_file = NULL; // moved from udisks2_util.h void find_sdcard_ids_file() { if (sdcard_ids_file) return; char *file_search_order[] = { g_build_filename(g_get_user_config_dir(), "hardinfo2", "sdcard.ids", NULL), g_build_filename(params.path_data, "sdcard.ids", NULL), NULL }; int n; for(n = 0; file_search_order[n]; n++) { if (!sdcard_ids_file && !access(file_search_order[n], R_OK)) sdcard_ids_file = file_search_order[n]; else g_free(file_search_order[n]); } } void find_oui_ids_file() { if (oui_ids_file) return; char *file_search_order[] = { g_build_filename(g_get_user_config_dir(), "hardinfo2", "ieee_oui.ids", NULL), g_build_filename(params.path_data, "ieee_oui.ids", NULL), NULL }; int n; for(n = 0; file_search_order[n]; n++) { if (!oui_ids_file && !access(file_search_order[n], R_OK)) oui_ids_file = file_search_order[n]; else g_free(file_search_order[n]); } } gchar* get_oui_from_wwid(gchar* wwid){ gchar* ret = NULL; if (g_str_has_prefix(wwid, "nna.")) { if (strlen(wwid)*4 < 48) return NULL; switch (wwid[4]){ case '1': case '2': ret = g_strndup(wwid + 8, 6); break; case '5': case '6': ret = g_strndup(wwid + 5, 6); break; } } else if(g_str_has_prefix(wwid, "eui.")) { if (strlen(wwid)*4 < 48) return NULL; ret = g_strndup(wwid+4, 6); } return ret; } gchar* get_oui_company(gchar* oui){ ids_query_result result = {}; if (!oui_ids_file) find_oui_ids_file(); scan_ids_file(oui_ids_file, oui, &result, -1); if (result.results[0]) return g_strdup(result.results[0]); return NULL; } // moved from udisks2_util.h void check_sdcard_vendor(u2driveext *e) { if (!e || !e->d) return; if (!e->d->media) return; if (! (g_str_has_prefix(e->d->media, "flash_sd") || g_str_has_prefix(e->d->media, "flash_mmc") )) return; if (e->d->vendor && e->d->vendor[0]) return; if (!e->d->block_dev) return; if (!sdcard_ids_file) find_sdcard_ids_file(); gchar *qpath = NULL; ids_query_result result = {}; gchar *oemid_path = g_strdup_printf("/sys/block/%s/device/oemid", e->d->block_dev); gchar *manfid_path = g_strdup_printf("/sys/block/%s/device/manfid", e->d->block_dev); gchar *oemid = NULL, *manfid = NULL; g_file_get_contents(oemid_path, &oemid, NULL, NULL); g_file_get_contents(manfid_path, &manfid, NULL, NULL); unsigned int id = oemid?strtol(oemid, NULL, 16):0; char c2 = id & 0xff, c1 = (id >> 8) & 0xff; qpath = g_strdup_printf("OEMID %02x%02x", (unsigned int)c1, (unsigned int)c2); scan_ids_file(sdcard_ids_file, qpath, &result, -1); g_free(oemid); if (result.results[0]) oemid = g_strdup(result.results[0]); else oemid = g_strdup_printf("OEM %02x%02x \"%c%c\"", (unsigned int)c1, (unsigned int)c2, isprint(c1) ? c1 : '.', isprint(c2) ? c2 : '.'); g_free(qpath); id = manfid?strtol(manfid, NULL, 16):0; qpath = g_strdup_printf("MANFID %06x", id); scan_ids_file(sdcard_ids_file, qpath, &result, -1); g_free(manfid); if (result.results[0]) manfid = g_strdup(result.results[0]); else manfid = g_strdup_printf("MANF %06x", id); g_free(qpath); vendor_list vl = NULL; const Vendor *v = NULL; v = vendor_match(oemid, NULL); if (v) vl = vendor_list_append(vl, v); v = vendor_match(manfid, NULL); if (v) vl = vendor_list_append(vl, v); vl = vendor_list_remove_duplicates_deep(vl); e->vendors = vendor_list_concat(e->vendors, vl); g_free(e->d->vendor); if (g_strcmp0(oemid, manfid) == 0) e->d->vendor = g_strdup(oemid); else e->d->vendor = g_strdup_printf("%s / %s", oemid, manfid); g_free(oemid); g_free(manfid); g_free(oemid_path); g_free(manfid_path); if (e->d->revision && e->d->revision[0]) return; /* bonus: revision */ gchar *fwrev_path = g_strdup_printf("/sys/block/%s/device/fwrev", e->d->block_dev); gchar *hwrev_path = g_strdup_printf("/sys/block/%s/device/hwrev", e->d->block_dev); gchar *fwrev = NULL, *hwrev = NULL; g_file_get_contents(fwrev_path, &fwrev, NULL, NULL); g_file_get_contents(hwrev_path, &hwrev, NULL, NULL); unsigned int fw = fwrev ? strtol(fwrev, NULL, 16) : 0; unsigned int hw = hwrev ? strtol(hwrev, NULL, 16) : 0; g_free(e->d->revision); e->d->revision = g_strdup_printf("%02x.%02x", hw, fw); g_free(fwrev); g_free(hwrev); g_free(fwrev_path); g_free(hwrev_path); } void set_nvme_controller_info(u2driveext *e){ gchar *path = g_strdup_printf("/sys/block/%s/device/device", e->d->block_dev); gchar *systarget = g_file_read_link(path, NULL); gchar *target = systarget ? g_filename_to_utf8(systarget, -1, NULL, NULL, NULL) : NULL; gchar *pci_addy = target ? g_path_get_basename(target) : NULL; e->nvme_controller = pci_addy ? pci_get_device_str(pci_addy) : NULL; g_free(path); g_free(systarget); g_free(target); g_free(pci_addy); if (e->nvme_controller) { e->vendors = vendor_list_append(e->vendors, vendor_match(e->nvme_controller->vendor_id_str, NULL)); e->vendors = vendor_list_append(e->vendors, vendor_match(e->nvme_controller->sub_vendor_id_str, NULL)); } } GSList* get_udisks2_drives_ext(void){ GSList *node, *list; u2driveext* extdrive; list = get_udisks2_all_drives_info(); for (node = list; node != NULL; node = node->next) { extdrive = u2drive_ext((udiskd *)node->data); node->data = extdrive; if (!extdrive->d->vendor || !extdrive->d->vendor[0]) { // sometimes vendors adds their name to the model field const Vendor *v = vendor_match(extdrive->d->model, NULL); if (v) extdrive->d->vendor = g_strdup(v->name); } check_sdcard_vendor(extdrive); extdrive->vendors = vendor_list_append(extdrive->vendors, vendor_match(extdrive->d->vendor, NULL)); // get OUI from WWID if (extdrive->d->wwid) { extdrive->wwid_oui.oui = get_oui_from_wwid(extdrive->d->wwid); if (extdrive->wwid_oui.oui) { extdrive->wwid_oui.vendor = get_oui_company(extdrive->wwid_oui.oui); } if (extdrive->wwid_oui.vendor){ extdrive->vendors = vendor_list_append(extdrive->vendors, vendor_match(extdrive->wwid_oui.vendor, NULL)); } } // NVMe PCI device if (strstr(extdrive->d->block_dev, "nvme")) { set_nvme_controller_info(extdrive); } extdrive->vendors = gg_slist_remove_null(extdrive->vendors); extdrive->vendors = vendor_list_remove_duplicates_deep(extdrive->vendors); } return list; } u2driveext* u2drive_ext(udiskd * udisks_drive_data) { u2driveext* data = g_new0(u2driveext, 1); data->d = udisks_drive_data; return data; } void u2driveext_free(u2driveext *u) { if (u) { udiskd_free(u->d); g_free(u->wwid_oui.oui); g_free(u->wwid_oui.vendor); pcid_free(u->nvme_controller); g_free(u); } } void storage_shutdown(){ g_free(sdcard_ids_file); g_free(oui_ids_file); } hardinfo2-hardinfo2-1331e88/hardinfo2/udisks2_util.c000066400000000000000000000466761474767047500222270ustar00rootroot00000000000000#include #include #include "udisks2_util.h" #define UDISKS2_INTERFACE "org.freedesktop.UDisks2" #define UDISKS2_MANAGER_INTERFACE "org.freedesktop.UDisks2.Manager" #define UDISKS2_BLOCK_INTERFACE "org.freedesktop.UDisks2.Block" #define UDISKS2_LOOP_INTERFACE "org.freedesktop.UDisks2.Loop" #define UDISKS2_PARTITION_INTERFACE "org.freedesktop.UDisks2.Partition" #define UDISKS2_PART_TABLE_INTERFACE "org.freedesktop.UDisks2.PartitionTable" #define UDISKS2_DRIVE_INTERFACE "org.freedesktop.UDisks2.Drive" #define UDISKS2_DRIVE_ATA_INTERFACE "org.freedesktop.UDisks2.Drive.Ata" #define DBUS_PROPERTIES_INTERFACE "org.freedesktop.DBus.Properties" #define UDISKS2_MANAGER_OBJ_PATH "/org/freedesktop/UDisks2/Manager" #define UDISKS2_BLOCK_DEVICES_PATH "/org/freedesktop/UDisks2/block_devices" #define STRDUP_IF_NOT_EMPTY(S) (g_strcmp0(S, "") == 0) ? NULL: g_strdup(S); GDBusConnection* udisks2_conn = NULL; GVariant* get_dbus_property(GDBusProxy* proxy, const gchar *interface, const gchar *property) { GVariant *result, *v = NULL; GError *error = NULL; result = g_dbus_proxy_call_sync(proxy, "Get", g_variant_new ("(ss)", interface, property), G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error); if (error != NULL) { g_error_free (error); return NULL; } g_variant_get(result, "(v)", &v); g_variant_unref(result); return v; } // this function works with udisks2 version 2.7.2 or newer GSList* get_block_dev_paths_from_udisks2(GDBusConnection* conn){ GDBusProxy *proxy; GVariant *options, *v; GVariantIter *iter; GError *error = NULL; GSList *block_paths = NULL; const gchar *block_path = NULL; proxy = g_dbus_proxy_new_sync(conn, G_DBUS_PROXY_FLAGS_NONE, NULL, UDISKS2_INTERFACE, UDISKS2_MANAGER_OBJ_PATH, UDISKS2_MANAGER_INTERFACE, NULL, &error); options = g_variant_new_parsed("@a{sv} { %s: }", "auth.no_user_interaction"); if (error != NULL){ g_error_free (error); g_object_unref(proxy); return NULL; } v = g_dbus_proxy_call_sync(proxy, "GetBlockDevices", g_variant_new_tuple(&options, 1), G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error); g_object_unref(proxy); if (error != NULL){ g_error_free (error); return NULL; } g_variant_get(v, "(ao)", &iter); while (g_variant_iter_loop (iter, "o", &block_path)){ block_paths = g_slist_append(block_paths, g_strdup(block_path)); } g_variant_iter_free (iter); g_variant_unref(v); return block_paths; } GSList* get_block_dev_paths_from_sysfs(){ GSList *block_paths = NULL; GDir *dir; gchar *path; const gchar *entry; dir = g_dir_open("/sys/class/block", 0, NULL); if (!dir) return NULL; while ((entry = g_dir_read_name(dir))) { path = g_strdup_printf("%s/%s", UDISKS2_BLOCK_DEVICES_PATH, entry); block_paths = g_slist_append(block_paths, path); } g_dir_close(dir); return block_paths; } GSList* udisks2_drives_func_caller(GDBusConnection* conn, gpointer (*func)(const char*, GDBusProxy*, GDBusProxy*, const char*)) { GDBusProxy *block_proxy, *drive_proxy; GVariant *v; GSList *result_list = NULL, *block_dev_list, *node; GError *error = NULL; gpointer output; gchar *block_path = NULL; const gchar *block_dev, *drive_path = NULL; if (conn == NULL) return NULL; // get block devices block_dev_list = get_block_dev_paths_from_udisks2(conn); if (block_dev_list == NULL) block_dev_list = get_block_dev_paths_from_sysfs(); for (node = block_dev_list; node != NULL; node = node->next) { block_path = (gchar *)node->data; block_proxy = g_dbus_proxy_new_sync(conn, G_DBUS_PROXY_FLAGS_NONE, NULL, UDISKS2_INTERFACE, block_path, DBUS_PROPERTIES_INTERFACE, NULL, &error); if (error){ g_error_free(error); error = NULL; continue; } // Skip partitions v = get_dbus_property(block_proxy, UDISKS2_PARTITION_INTERFACE, "Size"); if (v){ g_variant_unref(v); g_object_unref(block_proxy); continue; } // Skip loop devices v = get_dbus_property(block_proxy, UDISKS2_LOOP_INTERFACE, "BackingFile"); if (v){ g_variant_unref(v); g_object_unref(block_proxy); continue; } block_dev = block_path + strlen(UDISKS2_BLOCK_DEVICES_PATH) + 1; drive_path = NULL; // let's find drive proxy v = get_dbus_property(block_proxy, UDISKS2_BLOCK_INTERFACE, "Drive"); if (v){ drive_path = g_variant_get_string(v, NULL); if (g_strcmp0(drive_path, "/") != 0){ drive_proxy = g_dbus_proxy_new_sync(conn, G_DBUS_PROXY_FLAGS_NONE, NULL, UDISKS2_INTERFACE, drive_path, DBUS_PROPERTIES_INTERFACE, NULL, &error); if (error == NULL) { // call requested function output = func(block_dev, block_proxy, drive_proxy, drive_path); if (output != NULL){ result_list = g_slist_append(result_list, output); } g_object_unref(drive_proxy); } else { g_error_free(error); error = NULL; } } g_variant_unref(v); } g_object_unref(block_proxy); } g_slist_free_full(block_dev_list, g_free); return result_list; } GDBusConnection* get_udisks2_connection(void) { GDBusConnection *conn; GDBusProxy *proxy; GError *error = NULL; GVariant *result = NULL; // connection to system bus conn = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, &error); if (error != NULL) { g_error_free (error); return NULL; } // let's check if udisks2 is responding proxy = g_dbus_proxy_new_sync(conn, G_DBUS_PROXY_FLAGS_NONE, NULL, UDISKS2_INTERFACE, UDISKS2_MANAGER_OBJ_PATH, DBUS_PROPERTIES_INTERFACE, NULL, &error); if (error != NULL) { g_error_free (error); g_object_unref(conn); return NULL; } result = get_dbus_property(proxy, UDISKS2_MANAGER_INTERFACE, "Version"); g_object_unref(proxy); if (error != NULL) { g_error_free (error); return NULL; } if(!result) { return NULL; }else{ g_variant_unref(result); } // OK, let's return connection to system bus return conn; } udiskt* udiskt_new() { return g_new0(udiskt, 1); } udisksa* udisksa_new() { return g_new0(udisksa, 1); } udiskp* udiskp_new() { return g_new0(udiskp, 1); } udiskd* udiskd_new() { return g_new0(udiskd, 1); } void udiskt_free(udiskt *u) { if (u) { g_free(u->drive); g_free(u); } } void udisksa_free(udisksa *u) { if (u) { g_free(u->identifier); udisksa_free(u->next); g_free(u); } } void udiskp_free(udiskp *u) { if (u) { g_free(u->block); g_free(u->type); g_free(u->version); g_free(u->label); udiskp_free(u->next); g_free(u); } } void udiskd_free(udiskd *u) { if (u) { g_free(u->model); g_free(u->vendor); g_free(u->revision); g_free(u->block_dev); g_free(u->serial); g_free(u->wwid); g_free(u->connection_bus); g_free(u->partition_table); udiskp_free(u->partitions); udisksa_free(u->smart_attributes); g_free(u->media); g_strfreev(u->media_compatibility); g_free(u); } } udiskp* get_udisks2_partition_info(const gchar *part_path) { GVariant *v; GDBusProxy *proxy=NULL; GError *error = NULL; udiskp* partition; const gchar *str; if (!g_str_has_prefix(part_path, UDISKS2_BLOCK_DEVICES_PATH)) { return NULL; } partition = udiskp_new(); partition->block = g_strdup(part_path + strlen(UDISKS2_BLOCK_DEVICES_PATH) + 1); proxy = g_dbus_proxy_new_sync(udisks2_conn, G_DBUS_PROXY_FLAGS_NONE, NULL, UDISKS2_INTERFACE, part_path, DBUS_PROPERTIES_INTERFACE, NULL, &error); if ((proxy != NULL) && (error == NULL)) { v = get_dbus_property(proxy, UDISKS2_BLOCK_INTERFACE, "IdLabel"); if (v) { str = g_variant_get_string(v, NULL); partition->label = STRDUP_IF_NOT_EMPTY(str); g_variant_unref(v); } v = get_dbus_property(proxy, UDISKS2_BLOCK_INTERFACE, "IdType"); if (v) { str = g_variant_dup_string(v, NULL); partition->type = STRDUP_IF_NOT_EMPTY(str); g_variant_unref(v); } v = get_dbus_property(proxy, UDISKS2_BLOCK_INTERFACE, "IdVersion"); if (v) { str = g_variant_dup_string(v, NULL); partition->version = STRDUP_IF_NOT_EMPTY(str); g_variant_unref(v); } v = get_dbus_property(proxy, UDISKS2_BLOCK_INTERFACE, "Size"); if (v) { partition->size = g_variant_get_uint64(v); g_variant_unref(v); } } else{ g_error_free(error); } g_object_unref(proxy); return partition; } gpointer get_udisks2_temp(const char *blockdev, GDBusProxy *block, GDBusProxy *drive, const char *drivepath){ GVariant *v; gboolean smart_enabled = FALSE; udiskt* disk_temp = NULL; v = get_dbus_property(drive, UDISKS2_DRIVE_ATA_INTERFACE, "SmartEnabled"); if (v) { smart_enabled = g_variant_get_boolean(v); g_variant_unref(v); } if (!smart_enabled) { return NULL; } v = get_dbus_property(drive, UDISKS2_DRIVE_ATA_INTERFACE, "SmartTemperature"); if (v) { disk_temp = udiskt_new(); disk_temp->temperature = (gint32) (g_variant_get_double(v) - 273.15); g_variant_unref(v); } if (!disk_temp) { return NULL; } v = get_dbus_property(drive, UDISKS2_DRIVE_INTERFACE, "Model"); if (v) { disk_temp->drive = g_variant_dup_string(v, NULL); g_variant_unref(v); } return disk_temp; } gchar* get_udisks2_smart_attributes(udiskd* dsk, const char *drivepath){ GDBusProxy *proxy; GVariant *options, *v, *v2; GVariantIter *iter; GError *error = NULL; const char* aidenf; guint8 aid; gint32 avalue, aworst, athreshold, pretty_unit; gint64 pretty; udisksa *lastp = NULL, *p; proxy = g_dbus_proxy_new_sync(udisks2_conn, G_DBUS_PROXY_FLAGS_NONE, NULL, UDISKS2_INTERFACE, drivepath, UDISKS2_DRIVE_ATA_INTERFACE, NULL, &error); options = g_variant_new_parsed("@a{sv} { %s: }", "auth.no_user_interaction"); if (error != NULL){ g_error_free (error); return NULL; } v = g_dbus_proxy_call_sync(proxy, "SmartGetAttributes", g_variant_new_tuple(&options, 1), G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error); g_object_unref(proxy); if (error != NULL){ g_error_free (error); g_object_unref(proxy); return NULL; } v2 = g_variant_get_child_value(v, 0); iter = g_variant_iter_new(v2); // id(y), identifier(s), flags(q), value(i), worst(i), threshold(i), // pretty(x), pretty_unit(i), expansion(a{sv}) // pretty_unit = 0 (unknown), 1 (dimensionless), 2 (milliseconds), 3 (sectors), 4 (millikelvin). while (g_variant_iter_loop (iter, "(ysqiiixia{sv})", &aid, &aidenf, NULL, &avalue, &aworst, &athreshold, &pretty, &pretty_unit, NULL)){ p = udisksa_new(); p->id = aid; p->identifier = g_strdup(aidenf); p->value = avalue; p->worst = aworst; p->threshold = athreshold; switch (pretty_unit){ case 1: p->interpreted_unit = UDSK_INTPVAL_DIMENSIONLESS; p->interpreted = pretty; break; case 2: if (pretty > 1000*60*60){ // > 1h p->interpreted_unit = UDSK_INTPVAL_HOURS; p->interpreted = pretty / (1000*60*60); } else{ p->interpreted_unit = UDSK_INTPVAL_MILISECONDS; p->interpreted = pretty; } break; case 3: p->interpreted_unit = UDSK_INTPVAL_SECTORS; p->interpreted = pretty; break; case 4: p->interpreted_unit = UDSK_INTPVAL_CELSIUS; p->interpreted = (pretty - 273150) / 1000; //mK to °C break; default: p->interpreted_unit = UDSK_INTPVAL_SKIP; p->interpreted = -1; break; } p->next = NULL; if (lastp == NULL) dsk->smart_attributes = p; else lastp->next = p; lastp = p; } g_variant_iter_free (iter); g_variant_unref(v2); g_variant_unref(v); return NULL; } gpointer get_udisks2_drive_info(const char *blockdev, GDBusProxy *block, GDBusProxy *drive, const char *drivepath) { GVariant *v; GVariantIter *iter; const gchar *str; udiskd *u = NULL; udiskp **p = NULL; gsize n, i; u = udiskd_new(); u->block_dev = g_strdup(blockdev); v = get_dbus_property(drive, UDISKS2_DRIVE_INTERFACE, "Model"); if (v){ u->model = g_variant_dup_string(v, NULL); g_variant_unref(v); } v = get_dbus_property(drive, UDISKS2_DRIVE_INTERFACE, "Vendor"); if (v){ u->vendor = g_variant_dup_string(v, NULL); g_variant_unref(v); } v = get_dbus_property(drive, UDISKS2_DRIVE_INTERFACE, "Revision"); if (v){ u->revision = g_variant_dup_string(v, NULL); g_variant_unref(v); } v = get_dbus_property(drive, UDISKS2_DRIVE_INTERFACE, "Serial"); if (v){ u->serial = g_variant_dup_string(v, NULL); g_variant_unref(v); } v = get_dbus_property(drive, UDISKS2_DRIVE_INTERFACE, "WWN"); if (v){ str = g_variant_get_string(v, NULL); if (g_str_has_prefix(str, "0x")) { u->wwid = g_strdup_printf("nna.%s", str+2); } else if (g_str_has_prefix(str, "nna.") || g_str_has_prefix(str, "eui.")) { u->wwid = g_strdup(str); } g_variant_unref(v); } v = get_dbus_property(drive, UDISKS2_DRIVE_INTERFACE, "ConnectionBus"); if (v){ u->connection_bus = g_variant_dup_string(v, NULL); g_variant_unref(v); } v = get_dbus_property(drive, UDISKS2_DRIVE_INTERFACE, "RotationRate"); if (v){ u->rotation_rate = g_variant_get_int32(v); g_variant_unref(v); } v = get_dbus_property(drive, UDISKS2_DRIVE_INTERFACE, "Size"); if (v){ u->size = g_variant_get_uint64(v); g_variant_unref(v); } v = get_dbus_property(drive, UDISKS2_DRIVE_INTERFACE, "Media"); if (v){ str = g_variant_get_string(v, NULL); if (strcmp(str, "") != 0) { u->media = g_strdup(str); } g_variant_unref(v); } v = get_dbus_property(drive, UDISKS2_DRIVE_INTERFACE, "MediaCompatibility"); if (v){ g_variant_get(v, "as", &iter); n = g_variant_iter_n_children(iter); u->media_compatibility = g_malloc0_n(n + 1, sizeof(gchar*)); i = 0; while (g_variant_iter_loop (iter, "s", &str) && i < n){ u->media_compatibility[i] = g_strdup(str); i++; } g_variant_iter_free (iter); g_variant_unref(v); } v = get_dbus_property(drive, UDISKS2_DRIVE_INTERFACE, "Ejectable"); if (v){ u->ejectable = g_variant_get_boolean(v); g_variant_unref(v); } v = get_dbus_property(drive, UDISKS2_DRIVE_INTERFACE, "Removable"); if (v){ u->removable = g_variant_get_boolean(v); g_variant_unref(v); } v = get_dbus_property(drive, UDISKS2_DRIVE_ATA_INTERFACE, "PmSupported"); if (v){ u->pm_supported = g_variant_get_boolean(v); g_variant_unref(v); } v = get_dbus_property(drive, UDISKS2_DRIVE_ATA_INTERFACE, "ApmSupported"); if (v){ u->apm_supported = g_variant_get_boolean(v); g_variant_unref(v); } v = get_dbus_property(drive, UDISKS2_DRIVE_ATA_INTERFACE, "AamSupported"); if (v){ u->aam_supported = g_variant_get_boolean(v); g_variant_unref(v); } v = get_dbus_property(drive, UDISKS2_DRIVE_ATA_INTERFACE, "SmartSupported"); if (v){ u->smart_supported = g_variant_get_boolean(v); g_variant_unref(v); } v = get_dbus_property(drive, UDISKS2_DRIVE_ATA_INTERFACE, "SmartEnabled"); if (v){ u->smart_enabled = g_variant_get_boolean(v); g_variant_unref(v); } if (u->smart_enabled){ v = get_dbus_property(drive, UDISKS2_DRIVE_ATA_INTERFACE, "SmartPowerOnSeconds"); if (v){ u->smart_poweron = g_variant_get_uint64(v); g_variant_unref(v); } v = get_dbus_property(drive, UDISKS2_DRIVE_ATA_INTERFACE, "SmartNumBadSectors"); if (v){ u->smart_bad_sectors = g_variant_get_int64(v); g_variant_unref(v); } v = get_dbus_property(drive, UDISKS2_DRIVE_ATA_INTERFACE, "SmartTemperature"); if (v){ u->smart_temperature = (gint) (g_variant_get_double(v) - 273.15); g_variant_unref(v); } v = get_dbus_property(drive, UDISKS2_DRIVE_ATA_INTERFACE, "SmartFailing"); if (v){ u->smart_failing = g_variant_get_boolean(v); g_variant_unref(v); } get_udisks2_smart_attributes(u, drivepath); } v = get_dbus_property(block, UDISKS2_PART_TABLE_INTERFACE, "Type"); if (v){ u->partition_table = g_variant_dup_string(v, NULL); g_variant_unref(v); } // 'Partitions' property is available in udisks2 version 2.7.2 or newer v = get_dbus_property(block, UDISKS2_PART_TABLE_INTERFACE, "Partitions"); if (v){ g_variant_get(v, "ao", &iter); p = &(u->partitions); while (g_variant_iter_loop (iter, "o", &str)) { *p = get_udisks2_partition_info(str); if (*p != NULL){ p = &((*p)->next); } } g_variant_iter_free (iter); g_variant_unref(v); } return u; } GSList* get_udisks2_temps(void){ return udisks2_drives_func_caller(udisks2_conn, get_udisks2_temp); } GSList* get_udisks2_all_drives_info(void){ return udisks2_drives_func_caller(udisks2_conn, get_udisks2_drive_info); } void udisks2_init(){ if (udisks2_conn == NULL){ udisks2_conn = get_udisks2_connection(); } } void udisks2_shutdown(){ if (udisks2_conn != NULL){ g_object_unref(udisks2_conn); udisks2_conn = NULL; } } hardinfo2-hardinfo2-1331e88/hardinfo2/usb_util.c000066400000000000000000000412141474767047500214130ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2017 L. A. F. Pereira * This file * Copyright (C) 2017 Burt P. * Copyright (C) 2019 Ondrej Čerman * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "hardinfo.h" #include "usb_util.h" #include "util_ids.h" #define SYSFS_DIR_USB_DEVICES "/sys/bus/usb/devices" gchar *usb_ids_file = NULL; usbi *usbi_new() { return g_new0(usbi, 1); } void usbi_free(usbi *s) { if (s) { g_free(s->if_label); g_free(s->if_class_str); g_free(s->if_subclass_str); g_free(s->if_protocol_str); g_free(s->driver); g_free(s); } } void usbi_list_free(usbi *s) { usbi *n; while(s != NULL) { n = s->next; usbi_free(s); s = n; } } usbd *usbd_new() { return g_new0(usbd, 1); } void usbd_free(usbd *s) { if (s) { usbi_list_free(s->if_list); vendor_list_free(s->vendors); g_free(s->vendor); g_free(s->product); g_free(s->manufacturer); g_free(s->device); g_free(s->usb_version); g_free(s->device_version); g_free(s->serial); g_free(s->dev_class_str); g_free(s->dev_subclass_str); g_free(s->dev_protocol_str); g_free(s); } } void usbd_list_free(usbd *s) { usbd *n; while(s != NULL) { n = s->next; usbd_free(s); s = n; } } /* returns number of items after append */ static int usbd_list_append(usbd *l, usbd *n) { int c = 0; while(l != NULL) { c++; if (l->next == NULL) { if (n != NULL) { l->next = n; c++; } break; } l = l->next; } return c; } /* returns new top of the list */ static usbd *usbd_list_append_sorted(usbd *l, usbd *n) { usbd *b = NULL; usbd *t = l; if (n == NULL) return l; while(l != NULL) { if ((n->bus > l->bus) || ((n->bus == l->bus) && (n->dev >= l->dev))) { if (l->next == NULL) { l->next = n; break; } b = l; l = l->next; } else { if (b == NULL) { t = n; n->next = l; } else { b->next = n; n->next = l; } break; } } return t; } gboolean usbd_append_interface(usbd *dev, usbi *new_if){ usbi *curr_if; if (dev->if_list == NULL){ dev->if_list = new_if; return TRUE; } if (dev->if_list->if_number == new_if->if_number) return FALSE; curr_if = dev->if_list; while(curr_if->next != NULL) { curr_if = curr_if->next; if (curr_if->if_number == new_if->if_number) return FALSE; } curr_if->next = new_if; return TRUE; } int usbd_list_count(usbd *s) { return usbd_list_append(s, NULL); } static char *lsusb_line_value(char *line, const char *prefix) { if (g_str_has_prefix(line, prefix)) { line += strlen(prefix) + 1; return g_strstrip(line); } else return NULL; } static gboolean usb_get_device_lsusb(int bus, int dev, usbd *s) { gboolean spawned; gchar *out, *err, *p, *l, *t, *next_nl; gchar *lsusb_cmd = g_strdup_printf("lsusb -s %d:%d -v", bus, dev); usbi *curr_if = NULL; // do not free s->bus = bus; s->dev = dev; spawned = hardinfo_spawn_command_line_sync(lsusb_cmd, &out, &err, NULL, NULL); g_free(lsusb_cmd); if (spawned) { if (strstr(err, "information will be missing")) { s->user_scan = TRUE; } p = out; while(next_nl = strchr(p, '\n')) { strend(p, '\n'); g_strstrip(p); // device info if (l = lsusb_line_value(p, "idVendor")) { s->vendor_id = strtol(l, NULL, 0); if (t = strchr(l, ' ')) s->vendor = g_strdup(t + 1); } else if (l = lsusb_line_value(p, "idProduct")) { s->product_id = strtol(l, NULL, 0); if (t = strchr(l, ' ')) s->product = g_strdup(t + 1); } else if (l = lsusb_line_value(p, "MaxPower")) { s->max_curr_ma = atoi(l); } else if (l = lsusb_line_value(p, "bcdUSB")) { s->usb_version = g_strdup(l); } else if (l = lsusb_line_value(p, "bcdDevice")) { s->device_version = g_strdup(l); } else if (l = lsusb_line_value(p, "bDeviceClass")) { s->dev_class = atoi(l); if (t = strchr(l, ' ')) s->dev_class_str = g_strdup(t + 1); } else if (l = lsusb_line_value(p, "bDeviceSubClass")) { s->dev_subclass = atoi(l); if (t = strchr(l, ' ')) s->dev_subclass_str = g_strdup(t + 1); } else if (l = lsusb_line_value(p, "bDeviceProtocol")) { s->dev_protocol = atoi(l); if (t = strchr(l, ' ')) s->dev_protocol_str = g_strdup(t + 1); } else if (l = lsusb_line_value(p, "iManufacturer")) { if (t = strchr(l, ' ')) s->manufacturer = g_strdup(t + 1); } else if (l = lsusb_line_value(p, "iProduct")) { if (t = strchr(l, ' ')) s->device = g_strdup(t + 1); } else if (l = lsusb_line_value(p, "iSerial")) { if (t = strchr(l, ' ')) s->serial = g_strdup(t + 1); // interface info } else if (l = lsusb_line_value(p, "bInterfaceNumber")) { curr_if = usbi_new(); curr_if->if_number = atoi(l); // This may parse same interface multiple times when there // are multiple Configuration descriptors per device // As a workaround usbd_append_interface appends interface // with same if_number only once if (!usbd_append_interface(s, curr_if)){ usbi_free(curr_if); curr_if = NULL; } } else if (l = lsusb_line_value(p, "bInterfaceClass")) { if (curr_if != NULL){ curr_if->if_class = atoi(l); if (t = strchr(l, ' ')) curr_if->if_class_str = g_strdup(t + 1); } } else if (l = lsusb_line_value(p, "bInterfaceSubClass")) { if (curr_if != NULL){ curr_if->if_subclass = atoi(l); if (t = strchr(l, ' ')) curr_if->if_subclass_str = g_strdup(t + 1); } } else if (l = lsusb_line_value(p, "bInterfaceProtocol")) { if (curr_if != NULL){ curr_if->if_protocol = atoi(l); if (t = strchr(l, ' ')) curr_if->if_protocol_str = g_strdup(t + 1); } } else if (l = lsusb_line_value(p, "iInterface")) { if (curr_if != NULL){ if (t = strchr(l, ' ')) curr_if->if_label = g_strdup(t + 1); } } p = next_nl + 1; } g_free(out); g_free(err); return TRUE; } return FALSE; } static gboolean usb_get_interface_sysfs(int conf, int number, const char* devpath, usbi *intf){ gchar *ifpath, *drvpath, *tmp; ids_query_result result;// = {}; memset(&result,0,sizeof(ids_query_result)); ifpath = g_strdup_printf("%s:%d.%d", devpath, conf, number); if (!g_file_test(ifpath, G_FILE_TEST_EXISTS)){ return FALSE; } tmp = g_strdup_printf("%s/driver", ifpath); drvpath = g_file_read_link(tmp, NULL); g_free(tmp); if (drvpath){ intf->driver = g_path_get_basename(drvpath); g_free(drvpath); } else{ intf->driver = g_strdup(_("(None)")); } intf->if_number = number; intf->if_class = h_sysfs_read_hex(ifpath, "bInterfaceClass"); intf->if_subclass = h_sysfs_read_hex(ifpath, "bInterfaceSubClass"); intf->if_protocol = h_sysfs_read_hex(ifpath, "bInterfaceProtocol"); if (intf->if_label == NULL) intf->if_label = h_sysfs_read_string(ifpath, "interface"); if (intf->if_class_str == NULL && intf->if_subclass_str == NULL && intf->if_protocol_str == NULL) { tmp = g_strdup_printf("C %02x/%02x/%02x", intf->if_class, intf->if_subclass, intf->if_protocol); scan_ids_file(usb_ids_file, tmp, &result, -1); if (result.results[0]) intf->if_class_str = g_strdup(result.results[0]); if (result.results[1]) intf->if_subclass_str = g_strdup(result.results[1]); if (result.results[2]) intf->if_protocol_str = g_strdup(result.results[2]); g_free(tmp); } g_free(ifpath); return TRUE; } static void find_usb_ids_file() { if (usb_ids_file) return; char *file_search_order[] = { g_build_filename(g_get_user_config_dir(), "hardinfo2", "usb.ids", NULL), g_build_filename(params.path_data, "usb.ids", NULL), NULL }; int n; for(n = 0; file_search_order[n]; n++) { if (!usb_ids_file && !access(file_search_order[n], R_OK)) usb_ids_file = file_search_order[n]; else g_free(file_search_order[n]); } } void usb_lookup_ids_vendor_product_str(gint vendor_id, gint product_id, gchar **vendor_str, gchar **product_str) { ids_query_result result;// = {}; gchar *qpath; memset(&result,0,sizeof(ids_query_result)); if (!usb_ids_file) find_usb_ids_file(); if (!usb_ids_file) return; qpath = g_strdup_printf("%04x/%04x", vendor_id, product_id); scan_ids_file(usb_ids_file, qpath, &result, -1); if (result.results[0]) *vendor_str = g_strdup(result.results[0]); if (result.results[1]) *product_str = g_strdup(result.results[1]); g_free(qpath); } static gboolean usb_get_device_sysfs(int bus, int dev, const char* sysfspath, usbd *s) { usbi *intf; gboolean ok; int i, if_count = 0, conf = 0, ver; ids_query_result result;// = {}; gchar *qpath; memset(&result,0,sizeof(ids_query_result)); if (sysfspath == NULL) return FALSE; if (!usb_ids_file) find_usb_ids_file(); s->bus = bus; s->dev = dev; s->dev_class = h_sysfs_read_hex(sysfspath, "bDeviceClass"); s->vendor_id = h_sysfs_read_hex(sysfspath, "idVendor"); s->product_id = h_sysfs_read_hex(sysfspath, "idProduct"); s->manufacturer = h_sysfs_read_string(sysfspath, "manufacturer"); s->device = h_sysfs_read_string(sysfspath, "product"); s->max_curr_ma = h_sysfs_read_int(sysfspath, "bMaxPower"); s->dev_class = h_sysfs_read_hex(sysfspath, "bDeviceClass"); s->dev_subclass = h_sysfs_read_hex(sysfspath, "bDeviceSubClass"); s->dev_protocol = h_sysfs_read_hex(sysfspath, "bDeviceProtocol"); s->speed_mbs = h_sysfs_read_int(sysfspath, "speed"); if (s->product == NULL && s->vendor == NULL) { qpath = g_strdup_printf("%04x/%04x", s->vendor_id, s->product_id); scan_ids_file(usb_ids_file, qpath, &result, -1); if (result.results[0]) s->vendor = g_strdup(result.results[0]); if (result.results[1]) s->product = g_strdup(result.results[1]); g_free(qpath); } if (s->dev_class_str == NULL && s->dev_subclass_str == NULL && s->dev_protocol_str == NULL) { qpath = g_strdup_printf("C %02x/%02x/%02x", s->dev_class, s->dev_subclass, s->dev_protocol); scan_ids_file(usb_ids_file, qpath, &result, -1); if (result.results[0]) s->dev_class_str = g_strdup(result.results[0]); if (result.results[1]) s->dev_subclass_str = g_strdup(result.results[1]); if (result.results[2]) s->dev_protocol_str = g_strdup(result.results[2]); g_free(qpath); } conf = h_sysfs_read_hex(sysfspath, "bConfigurationValue"); if (s->usb_version == NULL) s->usb_version = h_sysfs_read_string(sysfspath, "version"); if (s->serial == NULL) s->serial = h_sysfs_read_string(sysfspath, "serial"); if (s->device_version == NULL) { ver = h_sysfs_read_int(sysfspath, "bcdDevice"); if (ver > 0){ s->device_version = g_strdup_printf("%d.%02d", ver/100, ver%100); } } if (s->if_list == NULL){ // create interfaces list if_count = h_sysfs_read_int(sysfspath, "bNumInterfaces"); for (i = 0; i <= if_count; i++){ intf = usbi_new(); ok = usb_get_interface_sysfs(conf, i, sysfspath, intf); if (ok){ if (!usbd_append_interface(s, intf)){ usbi_free(intf); } } else{ usbi_free(intf); } } } else{ // improve existing list intf = s->if_list; while (intf){ usb_get_interface_sysfs(conf, intf->if_number, sysfspath, intf); intf = intf->next; } } return TRUE; } usbd *usb_get_device(int bus, int dev, const gchar* sysfspath) { usbd *s = usbd_new(); int ok = 0; if (s) { /* try sysfs */ ok = usb_get_device_sysfs(bus, dev, sysfspath, s); if (!ok) { /* try lsusb */ ok = usb_get_device_lsusb(bus, dev, s); } if (!ok) { usbd_free(s); s = NULL; } } return s; } static usbd *usb_get_device_list_lsusb() { gboolean spawned; gchar *out, *err, *p, *next_nl; usbd *head = NULL, *nd; int bus, dev, vend, prod, ec; spawned = hardinfo_spawn_command_line_sync("lsusb", &out, &err, NULL, NULL); if (spawned) { p = out; while(next_nl = strchr(p, '\n')) { strend(p, '\n'); ec = sscanf(p, "Bus %d Device %d: ID %x:%x", &bus, &dev, &vend, &prod); if (ec == 4) { nd = usb_get_device(bus, dev, NULL); if (head == NULL) { head = nd; } else { usbd_list_append(head, nd); } } p = next_nl + 1; } g_free(out); g_free(err); } return head; } static usbd *usb_get_device_list_sysfs() { GDir *dir; GRegex *regex; GMatchInfo *match_info; usbd *head = NULL, *nd; gchar *devpath; const char *entry; int bus, dev; regex = g_regex_new("^([0-9]+-[0-9]+([.][0-9]+)*)|(usb[0-9]+)$", 0, 0, NULL); if (!regex){ return NULL; } dir = g_dir_open(SYSFS_DIR_USB_DEVICES, 0, NULL); if (!dir){ return NULL; } while ((entry = g_dir_read_name(dir))) { g_regex_match(regex, entry, 0, &match_info); if (g_match_info_matches(match_info)) { devpath = g_build_filename(SYSFS_DIR_USB_DEVICES, entry, NULL); bus = h_sysfs_read_int(devpath, "busnum"); dev = h_sysfs_read_int(devpath, "devnum"); if (bus > 0 && dev > 0){ nd = usb_get_device(bus, dev, devpath); if (head == NULL) { head = nd; } else { head = usbd_list_append_sorted(head, nd); } } g_free(devpath); } g_match_info_free(match_info); } g_dir_close(dir); g_regex_unref(regex); return head; } usbd *usb_get_device_list() { usbd *lst, *l; lst = usb_get_device_list_sysfs(); if (lst == NULL) lst = usb_get_device_list_lsusb(); l = lst; while(l) { l->vendors = vendor_list_remove_duplicates_deep(vendors_match(l->vendor, l->manufacturer, NULL)); l = l->next; } return lst; } hardinfo2-hardinfo2-1331e88/hardinfo2/util.c000066400000000000000000000766311474767047500205550ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or Later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ /* * Functions h_strdup_cprintf and h_strconcat are based on GLib version 2.4.6 * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * */ #include #include #include #include #include #include #include #include #include #define KiB 1024 #define MiB 1048576 #define GiB 1073741824 #define TiB 1099511627776 #define PiB 1125899906842624 void sync_manager_clear_entries(void); gchar *find_program(gchar *program_name) { int i; char *temp; static GHashTable *cache = NULL; const char *path[] = { "/usr/local/bin", "/usr/local/sbin", "/usr/bin", "/usr/sbin", "/bin", "/sbin", NULL }; /* we don't need to call stat() every time: cache the results */ if (!cache) { cache = g_hash_table_new(g_str_hash, g_str_equal); } else if ((temp = g_hash_table_lookup(cache, program_name))) { return g_strdup(temp); } for (i = 0; path[i]; i++) { temp = g_build_filename(path[i], program_name, NULL); if (g_file_test(temp, G_FILE_TEST_IS_EXECUTABLE)) { g_hash_table_insert(cache, program_name, g_strdup(temp)); return temp; } g_free(temp); } /* our search has failed; use GLib's search (which uses $PATH env var) */ if ((temp = g_find_program_in_path(program_name))) { g_hash_table_insert(cache, program_name, g_strdup(temp)); return temp; } return NULL; } gchar *seconds_to_string(unsigned int seconds) { unsigned int hours, minutes, days; const gchar *days_fmt, *hours_fmt, *minutes_fmt, *seconds_fmt; gchar *full_fmt=NULL, *ret = g_strdup(""); minutes = seconds / 60; seconds %= 60; hours = minutes / 60; minutes %= 60; days = hours / 24; hours %= 24; days_fmt = ngettext("%d day", "%d days", days); hours_fmt = ngettext("%d hour", "%d hours", hours); minutes_fmt = ngettext("%d minute", "%d minutes", minutes); seconds_fmt = ngettext("%d second", "%d seconds", seconds); if (days) { full_fmt = g_strdup_printf("%s %s %s %s", days_fmt, hours_fmt, minutes_fmt, seconds_fmt); ret = g_strdup_printf(full_fmt, days, hours, minutes, seconds); } else if (hours) { full_fmt = g_strdup_printf("%s %s %s", hours_fmt, minutes_fmt, seconds_fmt); ret = g_strdup_printf(full_fmt, hours, minutes, seconds); } else if (minutes) { full_fmt = g_strdup_printf("%s %s", minutes_fmt, seconds_fmt); ret = g_strdup_printf(full_fmt, minutes, seconds); } else { ret = g_strdup_printf(seconds_fmt, seconds); } g_free(full_fmt); return ret; } gchar *size_human_readable(gfloat size) { if (size < KiB) return g_strdup_printf(_("%.1f B"), size); if (size < MiB) return g_strdup_printf(_("%.1f KiB"), size / KiB); if (size < GiB) return g_strdup_printf(_("%.1f MiB"), size / MiB); if (size < TiB) return g_strdup_printf(_("%.1f GiB"), size / GiB); if (size < PiB) return g_strdup_printf(_("%.1f TiB"), size / TiB); return g_strdup_printf(_("%.1f PiB"), size / PiB); } char *strend(gchar * str, gchar chr) { if (!str) return NULL; char *p; if( (p = g_utf8_strchr(str, -1, chr)) ) *p = 0; return str; } void remove_quotes(gchar * str) { if (!str) return; while (*str == '"') *(str++) = ' '; strend(str, '"'); } void remove_linefeed(gchar * str) { strend(str, '\n'); } void widget_set_cursor(GtkWidget * widget, GdkCursorType cursor_type) { GdkCursor *cursor; GdkDisplay *display; GdkWindow *gdk_window; display = gtk_widget_get_display(widget); cursor = gdk_cursor_new_for_display(display, cursor_type); gdk_window = gtk_widget_get_window(widget); if (cursor) { gdk_window_set_cursor(gdk_window, cursor); gdk_display_flush(display); #if GTK_CHECK_VERSION(3, 0, 0) g_object_unref(cursor); #else gdk_cursor_unref(cursor); #endif } while (gtk_events_pending()) gtk_main_iteration(); } static gboolean __nonblock_cb(gpointer data) { gtk_main_quit(); return FALSE; } void nonblock_sleep(guint msec) { g_timeout_add(msec, (GSourceFunc) __nonblock_cb, NULL); gtk_main(); } static void __expand_cb(GtkWidget * widget, gpointer data) { if (GTK_IS_EXPANDER(widget)) { gtk_expander_set_expanded(GTK_EXPANDER(widget), TRUE); } else if (GTK_IS_CONTAINER(widget)) { gtk_container_foreach(GTK_CONTAINER(widget), (GtkCallback) __expand_cb, NULL); } } void file_chooser_open_expander(GtkWidget * chooser) { gtk_container_foreach(GTK_CONTAINER(chooser), (GtkCallback) __expand_cb, NULL); } void file_chooser_add_filters(GtkWidget * chooser, FileTypes * filters) { GtkFileFilter *filter; gint i; for (i = 0; filters[i].name; i++) { filter = gtk_file_filter_new(); gtk_file_filter_add_mime_type(filter, filters[i].mime_type); gtk_file_filter_set_name(filter, filters[i].name); gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(chooser), filter); } } gchar *file_chooser_get_extension(GtkWidget * chooser, FileTypes * filters) { GtkFileFilter *filter; const gchar *filter_name; gint i; filter = gtk_file_chooser_get_filter(GTK_FILE_CHOOSER(chooser)); filter_name = gtk_file_filter_get_name(filter); for (i = 0; filters[i].name; i++) { if (g_str_equal(filter_name, filters[i].name)) { return filters[i].extension; } } return NULL; } gpointer file_types_get_data_by_name(FileTypes * filters, gchar * filename) { gint i; for (i = 0; filters[i].name; i++) { if (g_str_has_suffix(filename, filters[i].extension)) { return filters[i].data; } } return NULL; } gchar *file_chooser_build_filename(GtkWidget * chooser, gchar * extension) { gchar *filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(chooser)); gchar *retval; if (g_str_has_suffix(filename, extension)) { return filename; } retval = g_strconcat(filename, extension, NULL); g_free(filename); return retval; } static void log_handler(const gchar * log_domain, GLogLevelFlags log_level, const gchar * message, gpointer user_data) { if (!params.gui_running) { /* No GUI running: spit the message to the terminal */ g_print("\n\n*** %s: %s\n\n", (log_level & G_LOG_FLAG_FATAL) ? _("Error") : _("Warning"), message); } else { /* Hooray! We have a GUI running! */ GtkWidget *dialog; dialog = gtk_message_dialog_new_with_markup(NULL, GTK_DIALOG_MODAL, (log_level & G_LOG_FLAG_FATAL) ? GTK_MESSAGE_ERROR : GTK_MESSAGE_WARNING, GTK_BUTTONS_CLOSE, "%s\n\n%s", (log_level & G_LOG_FLAG_FATAL) ? _("Fatal Error") : _("Warning"), message); gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_destroy(dialog); } } void parameters_init(int *argc, char ***argv, ProgramParameters * param) { static gint create_report = FALSE; static gint force_all_details = FALSE; static gint show_version = FALSE; static gint skip_benchmarks = FALSE; static gint quiet = FALSE; static gchar *report_format = NULL; static gchar *run_benchmark = NULL; static gchar *result_format = NULL; static gchar *bench_user_note = NULL; static gint max_bench_results = 50; static GOptionEntry options[] = { { .long_name = "quiet", .short_name = 'q', .arg = G_OPTION_ARG_NONE, .arg_data = &quiet, .description = N_("do not print status messages to standard output")}, { .long_name = "generate-report", .short_name = 'r', .arg = G_OPTION_ARG_NONE, .arg_data = &create_report, .description = N_("creates a report and prints to standard output")}, { .long_name = "report-format", .short_name = 'f', .arg = G_OPTION_ARG_STRING, .arg_data = &report_format, .description = N_("chooses a report format ([text], html)")}, { .long_name = "run-benchmark", .short_name = 'b', .arg = G_OPTION_ARG_STRING, .arg_data = &run_benchmark, .description = N_("run single benchmark eg. -b 'FPU FFT' (Default all Benchmarks runs)")}, { .long_name = "user-note", .short_name = 'u', .arg = G_OPTION_ARG_STRING, .arg_data = &bench_user_note, .description = N_("user note attached to benchmark results. (updating/synchronize with server)")}, { .long_name = "result-format", .short_name = 'g', .arg = G_OPTION_ARG_STRING, .arg_data = &result_format, .description = N_("benchmark result format ([short], conf, shell)")}, { .long_name = "max-results", .short_name = 'n', .arg = G_OPTION_ARG_INT, .arg_data = &max_bench_results, .description = N_("maximum number of benchmark results to include (-1 for no limit, default is 50)")}, { .long_name = "version", .short_name = 'v', .arg = G_OPTION_ARG_NONE, .arg_data = &show_version, .description = N_("shows program version and quit")}, { .long_name = "skip-benchmarks", .short_name = 's', .arg = G_OPTION_ARG_NONE, .arg_data = &skip_benchmarks, .description = N_("do not run benchmarks")}, { .long_name = "very-verbose", .short_name = 'w', /* like -vv */ .arg = G_OPTION_ARG_NONE, .arg_data = &force_all_details, .description = N_("show all details")}, {NULL} }; GOptionContext *ctx; ctx = g_option_context_new(_("- System Information and Benchmark")); g_option_context_set_ignore_unknown_options(ctx, FALSE); g_option_context_set_help_enabled(ctx, TRUE); g_option_context_add_main_entries(ctx, options, *(argv)[0]); g_option_context_parse(ctx, argc, argv, NULL); g_option_context_free(ctx); if (*argc >= 2) { g_print(_("Unrecognized arguments.\n" "Try ``%s --help'' for more information.\n"), *(argv)[0]); exit(1); } param->create_report = create_report; param->report_format = REPORT_FORMAT_TEXT; param->show_version = show_version; param->run_benchmark = run_benchmark; param->result_format = result_format; param->max_bench_results = max_bench_results; param->skip_benchmarks = skip_benchmarks; param->force_all_details = force_all_details; param->quiet = quiet; param->argv0 = *(argv)[0]; if (report_format) { if (g_str_equal(report_format, "html")) param->report_format = REPORT_FORMAT_HTML; if (g_str_equal(report_format, "shell")) param->report_format = REPORT_FORMAT_SHELL; } /* clean user note */ if (bench_user_note) { char *p = NULL; while( (p = strchr(bench_user_note, ';')) ) { *p = ','; } param->bench_user_note = gg_key_file_parse_string_as_value(bench_user_note, '|'); } /* html ok? * gui: yes * report html: yes * report text: no * anything else? */ param->markup_ok = TRUE; if (param->create_report && param->report_format != REPORT_FORMAT_HTML) param->markup_ok = FALSE; // TODO: fmt_opts: FMT_OPT_ATERM, FMT_OPT_HTML, FMT_OPT_PANGO... param->fmt_opts = FMT_OPT_NONE; gchar *confdir = g_build_filename(g_get_user_config_dir(), "hardinfo2", NULL); if (!g_file_test(confdir, G_FILE_TEST_EXISTS)) { mkdir(confdir, 0744); } g_free(confdir); } gint ui_init(int *argc, char ***argv) { DEBUG("initializing gtk+ UI"); g_set_application_name("HardInfo2"); g_log_set_handler(NULL, G_LOG_LEVEL_WARNING | G_LOG_FLAG_FATAL | G_LOG_LEVEL_ERROR, log_handler, NULL); return gtk_init_check(argc, argv); } /* Copyright: Jens Låås, SLU 2002 */ gchar *strreplacechr(gchar * string, gchar * replace, gchar new_char) { gchar *s; for (s = string; *s; s++) if (strchr(replace, *s)) *s = new_char; return string; } gchar *strreplace(gchar *string, gchar *replace, gchar *replacement) { gchar **tmp, *ret; tmp = g_strsplit(string, replace, 0); ret = g_strjoinv(replacement, tmp); g_strfreev(tmp); return ret; } static GHashTable *__module_methods = NULL; static void module_register_methods(ShellModule * module) { const ShellModuleMethod *(*get_methods)(void); gchar *method_name; if (__module_methods == NULL) { __module_methods = g_hash_table_new(g_str_hash, g_str_equal); } if (g_module_symbol (module->dll, "hi_exported_methods", (gpointer)&get_methods)) { const ShellModuleMethod *methods; for (methods = get_methods(); methods->name; methods++) { ShellModuleMethod method = *methods; gchar *name = g_path_get_basename(g_module_name(module->dll)); gchar *simple_name = strreplace(name, "lib", ""); strend(simple_name, '.'); method_name = g_strdup_printf("%s::%s", simple_name, method.name); g_hash_table_insert(__module_methods, method_name, method.function); g_free(name); g_free(simple_name); } } } gchar *module_call_method(gchar * method) { gchar *(*function) (void); if (__module_methods == NULL) { return NULL; } function = g_hash_table_lookup(__module_methods, method); return function ? g_strdup(function()) : NULL; } /* FIXME: varargs? */ gchar *module_call_method_param(gchar * method, gchar * parameter) { gchar *(*function) (gchar *param); if (__module_methods == NULL) { return NULL; } function = g_hash_table_lookup(__module_methods, method); return function ? g_strdup(function(parameter)) : NULL; } static gboolean remove_module_methods(gpointer key, gpointer value, gpointer data) { return g_str_has_prefix(key, data); } static void module_unload(ShellModule * module) { GSList *entry; if (module->dll) { gchar *name; if (module->deinit) { DEBUG("cleaning up module \"%s\"", module->name); module->deinit(); } else { DEBUG("module \"%s\" does not need cleanup", module->name); } name = g_path_get_basename(g_module_name(module->dll)); g_hash_table_foreach_remove(__module_methods, remove_module_methods, name); g_module_close(module->dll); g_free(name); } g_free(module->name); g_object_unref(module->icon); for (entry = module->entries; entry; entry = entry->next) { ShellModuleEntry *e = (ShellModuleEntry *)entry->data; g_source_remove_by_user_data(e); g_free(e); } g_slist_free(module->entries); g_free(module); } void module_unload_all(void) { Shell *shell; GSList *module, *merge_id; shell = shell_get_main_shell(); sync_manager_clear_entries(); shell_clear_timeouts(shell); shell_clear_tree_models(shell); shell_clear_field_updates(); shell_set_title(shell, NULL); for (module = shell->tree->modules; module; module = module->next) { module_unload((ShellModule *)module->data); } for (merge_id = shell->merge_ids; merge_id; merge_id = merge_id->next) { gtk_ui_manager_remove_ui(shell->ui_manager, GPOINTER_TO_INT(merge_id->data)); } g_slist_free(shell->tree->modules); g_slist_free(shell->merge_ids); shell->merge_ids = NULL; shell->tree->modules = NULL; shell->selected = NULL; } static ShellModule *module_load(gchar * filename) { ShellModule *module; gchar *tmp; module = g_new0(ShellModule, 1); if (params.gui_running) { gchar *tmpicon, *dot, *simple_name; tmpicon = g_strdup(filename); dot = g_strrstr(tmpicon, "." G_MODULE_SUFFIX); *dot = '\0'; simple_name = strreplace(tmpicon, "lib", ""); tmp = g_strdup_printf("%s.svg", simple_name); module->icon = icon_cache_get_pixbuf(tmp); g_free(tmp); g_free(tmpicon); g_free(simple_name); } tmp = g_build_filename(params.path_lib, "modules", filename, NULL); module->dll = g_module_open(tmp, G_MODULE_BIND_LAZY); DEBUG("gmodule resource for ``%s'' is %p (%s)", tmp, module->dll, g_module_error()); g_free(tmp); if (module->dll) { void (*init) (void); ModuleEntry *(*get_module_entries) (void); gint(*weight_func) (void); gchar *(*name_func) (void); ModuleEntry *entries; gint i = 0; if (!g_module_symbol(module->dll, "hi_module_get_entries", (gpointer) & get_module_entries) || !g_module_symbol(module->dll, "hi_module_get_name", (gpointer) & name_func)) { DEBUG("cannot find needed symbols; is ``%s'' a real module?", filename); goto failed; } if (g_module_symbol(module->dll, "hi_module_init", (gpointer) & init)) { DEBUG("initializing module ``%s''", filename); init(); } g_module_symbol(module->dll, "hi_module_get_weight", (gpointer) & weight_func); module->weight = weight_func ? weight_func() : 0; module->name = name_func(); g_module_symbol(module->dll, "hi_module_deinit", (gpointer) & (module->deinit)); g_module_symbol(module->dll, "hi_module_get_summary", (gpointer) & (module->summaryfunc)); entries = get_module_entries(); while (entries[i].name) { if (*entries[i].name == '#') { i++; continue; } /* skip */ ShellModuleEntry *entry = g_new0(ShellModuleEntry, 1); if (params.gui_running) { entry->icon = icon_cache_get_pixbuf(entries[i].icon); } entry->icon_file = entries[i].icon; g_module_symbol(module->dll, "hi_more_info", (gpointer) & (entry->morefunc)); g_module_symbol(module->dll, "hi_get_field", (gpointer) & (entry->fieldfunc)); g_module_symbol(module->dll, "hi_note_func", (gpointer) & (entry->notefunc)); entry->name = _(entries[i].name); //gettext unname N_() in computer.c line 67 etc... entry->scan_func = entries[i].scan_callback; entry->func = entries[i].callback; entry->number = i; entry->flags = entries[i].flags; module->entries = g_slist_append(module->entries, entry); i++; } DEBUG("registering methods for module ``%s''", filename); module_register_methods(module); } else { DEBUG("cannot g_module_open(``%s''). permission problem?", filename); failed: DEBUG("loading module %s failed: %s", filename, g_module_error()); g_free(module->name); g_free(module); module = NULL; } return module; } /*static gboolean module_in_module_list(gchar * module, gchar ** module_list) { int i = 0; if (!module_list) return TRUE; for (; module_list[i]; i++) { if (g_str_equal(module_list[i], module)) return TRUE; } return FALSE; }*/ static gint module_cmp(gconstpointer m1, gconstpointer m2) { ShellModule *a = (ShellModule *) m1; ShellModule *b = (ShellModule *) m2; return a->weight - b->weight; } /*static GSList *modules_check_deps(GSList * modules) { GSList *mm; ShellModule *module; for (mm = modules; mm; mm = mm->next) { gchar **(*get_deps) (void); gchar **deps; gint i; module = (ShellModule *) mm->data; if (g_module_symbol(module->dll, "hi_module_get_dependencies", (gpointer) & get_deps)) { for (i = 0, deps = get_deps(); deps[i]; i++) { GSList *l; ShellModule *m; gboolean found = FALSE; for (l = modules; l && !found; l = l->next) { m = (ShellModule *) l->data; gchar *name = g_path_get_basename(g_module_name(m->dll)); found = g_str_equal(name, deps[i]); g_free(name); } if (!found) { if (0){//params.autoload_deps) { ShellModule *mod = module_load(deps[i]); if (mod) modules = g_slist_append(modules, mod); modules = modules_check_deps(modules); // re-check dependencies break; } if (params.gui_running) { GtkWidget *dialog; dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION, GTK_BUTTONS_NONE, _("Module \"%s\" depends on module \"%s\", load it?"), module->name, deps[i]); gtk_dialog_add_buttons(GTK_DIALOG(dialog), "_No", GTK_RESPONSE_REJECT, "_Open", GTK_RESPONSE_ACCEPT, NULL); if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) { ShellModule *mod = module_load(deps[i]); if (mod) modules = g_slist_prepend(modules, mod); modules = modules_check_deps(modules); // re-check dependencies } else { g_error("HardInfo2 cannot run without loading the additional module."); exit(1); } gtk_widget_destroy(dialog); } else { g_error(_("Module \"%s\" depends on module \"%s\"."), module->name, deps[i]); } } } } } return modules; }*/ GSList *modules_load_all(void) { GSList *modules = NULL; ShellModule *module; gchar *filenames[]={"devices.so","computer.so","benchmark.so","network.so"}; int i=0; while(i<4) { if(i==2 && !params.gui_running && params.skip_benchmarks) {//skip benchmark reporting if no gui, report and skip benchmark }else if ( (module = module_load(filenames[i])) ) { modules = g_slist_prepend(modules, module); } i++; } //modules = modules_check_deps(modules); modules = g_slist_sort(modules, module_cmp); return modules; } gint tree_view_get_visible_height(GtkTreeView * tv) { GtkTreePath *path; GdkRectangle rect; GtkTreeIter iter; GtkTreeModel *model = gtk_tree_view_get_model(tv); gint nrows = 1; path = gtk_tree_path_new_first(); gtk_tree_view_get_cell_area(GTK_TREE_VIEW(tv), path, NULL, &rect); /* FIXME: isn't there any easier way to tell the number of rows? */ gtk_tree_model_get_iter_first(model, &iter); do { nrows++; } while (gtk_tree_model_iter_next(model, &iter)); gtk_tree_path_free(path); return nrows * rect.height; } void module_entry_scan_all_except(ModuleEntry * entries, gint except_entry) { ModuleEntry entry; gint i = 0; void (*scan_callback) (gboolean reload); gchar *text; shell_view_set_enabled(FALSE); for (entry = entries[0]; entry.name; entry = entries[++i]) { if (i == except_entry) continue; text = g_strdup_printf(_("Scanning: %s..."), _(entry.name)); shell_status_update(text); g_free(text); if ((scan_callback = entry.scan_callback)) { scan_callback(FALSE); } } shell_view_set_enabled(TRUE); shell_status_update(_("Done.")); } void module_entry_scan_all(ModuleEntry * entries) { module_entry_scan_all_except(entries, -1); } void module_entry_reload(ShellModuleEntry * module_entry) { if (module_entry->scan_func) { module_entry->scan_func(TRUE); } } void module_entry_scan(ShellModuleEntry * module_entry) { if (module_entry->scan_func) { module_entry->scan_func(FALSE); } } gchar *module_entry_get_field(ShellModuleEntry * module_entry, gchar * field) { if (module_entry->fieldfunc) { return module_entry->fieldfunc(field); } return NULL; } gchar *module_entry_function(ShellModuleEntry * module_entry) { if (module_entry->func) { return module_entry->func(); } return NULL; } gchar *module_entry_get_moreinfo(ShellModuleEntry * module_entry, gchar * field) { if (module_entry->morefunc) { return module_entry->morefunc(field); } return NULL; } const gchar *module_entry_get_note(ShellModuleEntry * module_entry) { if (module_entry->notefunc) { return module_entry->notefunc(module_entry->number); } return NULL; } gchar *h_strdup_cprintf(const gchar * format, gchar * source, ...) { gchar *buffer, *retn; va_list args; va_start(args, source); buffer = g_strdup_vprintf(format, args); va_end(args); if (source) { retn = g_strconcat(source, buffer, NULL); g_free(buffer); g_free(source); } else { retn = buffer; } return retn; } gchar *h_strconcat(gchar * string1, ...) { gsize l; va_list args; gchar *s; gchar *concat; gchar *ptr; if (!string1) return NULL; l = 1 + strlen(string1); va_start(args, string1); s = va_arg(args, gchar *); while (s) { l += strlen(s); s = va_arg(args, gchar *); } va_end(args); concat = g_new(gchar, l); ptr = concat; ptr = g_stpcpy(ptr, string1); va_start(args, string1); s = va_arg(args, gchar *); while (s) { ptr = g_stpcpy(ptr, s); s = va_arg(args, gchar *); } va_end(args); g_free(string1); return concat; } static gboolean h_hash_table_remove_all_true(gpointer key, gpointer data, gpointer user_data) { return TRUE; } void h_hash_table_remove_all(GHashTable *hash_table) { g_hash_table_foreach_remove(hash_table, h_hash_table_remove_all_true, NULL); } gfloat h_sysfs_read_float(const gchar *endpoint, const gchar *entry) { gchar *tmp, *buffer; gfloat return_value = 0.0f; tmp = g_build_filename(endpoint, entry, NULL); if (g_file_get_contents(tmp, &buffer, NULL, NULL)) return_value = atof(buffer); g_free(tmp); g_free(buffer); return return_value; } gint h_sysfs_read_int(const gchar *endpoint, const gchar *entry) { gchar *tmp, *buffer; gint return_value = 0; tmp = g_build_filename(endpoint, entry, NULL); if (g_file_get_contents(tmp, &buffer, NULL, NULL)) return_value = atoi(buffer); g_free(tmp); g_free(buffer); return return_value; } gint h_sysfs_read_hex(const gchar *endpoint, const gchar *entry) { gchar *tmp, *buffer; gint return_value = 0; tmp = g_build_filename(endpoint, entry, NULL); if (g_file_get_contents(tmp, &buffer, NULL, NULL)) return_value = (gint) strtoll(buffer, NULL, 16); g_free(tmp); g_free(buffer); return return_value; } gchar * h_sysfs_read_string(const gchar *endpoint, const gchar *entry) { gchar *tmp, *return_value; tmp = g_build_filename(endpoint, entry, NULL); if (!g_file_get_contents(tmp, &return_value, NULL, NULL)) { g_free(return_value); return_value = NULL; } else { return_value = g_strstrip(return_value); } g_free(tmp); return return_value; } static GHashTable *_moreinfo = NULL; void moreinfo_init(void) { if (G_UNLIKELY(_moreinfo)) { DEBUG("moreinfo already initialized"); return; } DEBUG("initializing moreinfo"); _moreinfo = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free); } void moreinfo_shutdown(void) { if (G_UNLIKELY(!_moreinfo)) { DEBUG("moreinfo not initialized"); return; } DEBUG("shutting down moreinfo"); g_hash_table_destroy(_moreinfo); _moreinfo = NULL; } void moreinfo_add_with_prefix(gchar *prefix, gchar *key, gchar *value) { if (G_UNLIKELY(!_moreinfo)) { DEBUG("moreinfo not initialized"); return; } if (prefix) { gchar *hashkey = g_strconcat(prefix, ":", key, NULL); g_hash_table_insert(_moreinfo, hashkey, value); return; } g_hash_table_insert(_moreinfo, g_strdup(key), value); } void moreinfo_add(gchar *key, gchar *value) { moreinfo_add_with_prefix(NULL, key, value); } static gboolean _moreinfo_del_cb(gpointer key, gpointer value, gpointer data) { return g_str_has_prefix(key, data); } void moreinfo_del_with_prefix(gchar *prefix) { if (G_UNLIKELY(!_moreinfo)) { DEBUG("moreinfo not initialized"); return; } g_hash_table_foreach_remove(_moreinfo, _moreinfo_del_cb, prefix); } void moreinfo_clear(void) { if (G_UNLIKELY(!_moreinfo)) { DEBUG("moreinfo not initialized"); return; } h_hash_table_remove_all(_moreinfo); } gchar * moreinfo_lookup_with_prefix(gchar *prefix, gchar *key) { if (G_UNLIKELY(!_moreinfo)) { DEBUG("moreinfo not initialized"); return 0; } if (prefix) { gchar *lookup_key = g_strconcat(prefix, ":", key, NULL); gchar *result = g_hash_table_lookup(_moreinfo, lookup_key); g_free(lookup_key); return result; } return g_hash_table_lookup(_moreinfo, key); } gchar * moreinfo_lookup(gchar *key) { return moreinfo_lookup_with_prefix(NULL, key); } #if !GLIB_CHECK_VERSION(2,44,0) gboolean g_strv_contains(const gchar * const * strv, const gchar *str) { /* g_strv_contains() requires glib>2.44 * fallback for older versions */ gint i = 0; while(strv[i] != NULL) { if (g_strcmp0(strv[i], str) == 0) return 1; i++; } return 0; } #endif gchar *hardinfo_clean_grpname(const gchar *v, int replacing) { gchar *clean, *p; p = clean = g_strdup(v); while (*p != 0) { switch(*p) { case '[': *p = '('; break; case ']': *p = ')'; break; default: break; } p++; } if (replacing) g_free((gpointer)v); return clean; } /* Hardinfo labels that have # are truncated and/or hidden. * Labels can't have $ because that is the delimiter in * moreinfo. */ gchar *hardinfo_clean_label(const gchar *v, int replacing) { gchar *clean, *p; p = clean = g_strdup(v); while (*p != 0) { switch(*p) { case '#': case '$': *p = '_'; break; default: break; } p++; } if (replacing) g_free((gpointer)v); return clean; } /* hardinfo uses the values as {ht,x}ml, apparently */ gchar *hardinfo_clean_value(const gchar *v, int replacing) { gchar *clean, *tmp; gchar **vl; if (v == NULL) return NULL; vl = g_strsplit(v, "&", -1); if (g_strv_length(vl) > 1) clean = g_strjoinv("&", vl); else clean = g_strdup(v); g_strfreev(vl); vl = g_strsplit(clean, "<", -1); if (g_strv_length(vl) > 1) { tmp = g_strjoinv("<", vl); g_free(clean); clean = tmp; } g_strfreev(vl); vl = g_strsplit(clean, ">", -1); if (g_strv_length(vl) > 1) { tmp = g_strjoinv(">", vl); g_free(clean); clean = tmp; } g_strfreev(vl); if (replacing) g_free((gpointer)v); return clean; } gboolean hardinfo_spawn_command_line_sync(const gchar *command_line, gchar **standard_output, gchar **standard_error, gint *exit_status, GError **error) { shell_status_pulse(); return g_spawn_command_line_sync(command_line, standard_output, standard_error, exit_status, error); } #define MAX_STRWRAP 10000 gchar *strwrap(const gchar *st, size_t w, gchar delimiter) { gchar retst[MAX_STRWRAP]; gchar *rst=retst; const gchar *ist=st; int first=1; size_t len; if(!st) return NULL; //disable wrap for CLI if(params.create_report) return g_strdup(st); while(((len=strlen(ist)) > 0) && (((rst-retst)+w+2)w) len=w; while((len>1) && (*(ist+len)!=0)&&(*(ist+len)!=delimiter)) len--; if(len==1) {len=strlen(ist);if(len>w) len=w;} if(!first) { *rst++=13; strncpy(rst,ist,len); }else{ strncpy(rst,ist,len); } rst+=len; ist+=len; if(*ist==delimiter) ist++; if(*ist==0x20) ist++; first=0; } *rst=0; return g_strdup(retst); } hardinfo2-hardinfo2-1331e88/hardinfo2/vendor.c000066400000000000000000000460121474767047500210630ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2009 L. A. F. Pereira * * List of vendors based on GtkSysInfo (c) Pissens Sebastien. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include #include #include "vendor.h" #include "syncmanager.h" #include "config.h" #include "hardinfo.h" #include "strstr_word.h" #include "util_sysobj.h" /* for appfsp() and SEQ() */ /* { match_string, match_rule, name, url } */ static Vendor vendors_builtin[] = { /* BIOS manufacturers */ { "American Megatrends", 0, "American Megatrends", "www.ami.com"}, { "Award", 0, "Award Software International", "www.award-bios.com"}, { "Phoenix", 0, "Phoenix Technologies", "www.phoenix.com"}, /* x86 vendor strings */ { "AMDisbetter!", 0, "Advanced Micro Devices", "www.amd.com" }, { "AuthenticAMD", 0, "Advanced Micro Devices", "www.amd.com" }, { "CentaurHauls", 0, "VIA (formerly Centaur Technology)", "www.via.tw" }, { "CyrixInstead", 0, "Cyrix", "" }, { "GenuineIntel", 0, "Intel", "www.intel.com" }, { "TransmetaCPU", 0, "Transmeta", "" }, { "GenuineTMx86", 0, "Transmeta", "" }, { "Geode by NSC", 0, "National Semiconductor", "" }, { "NexGenDriven", 0, "NexGen", "" }, { "RiseRiseRise", 0, "Rise Technology", "" }, { "SiS SiS SiS", 0, "Silicon Integrated Systems", "" }, { "UMC UMC UMC", 0, "United Microelectronics Corporation", "" }, { "VIA VIA VIA", 0, "VIA", "www.via.tw" }, { "Vortex86 SoC", 0, "DMP Electronics", "" }, /* x86 VM vendor strings */ { "KVMKVMKVM", 0, "KVM", "" }, { "Microsoft Hv", 0, "Microsoft Hyper-V", "www.microsoft.com" }, { "lrpepyh vr", 0, "Parallels", "" }, { "VMwareVMware", 0, "VMware", "" }, { "XenVMMXenVMM", 0, "Xen HVM", "" }, }; #define ven_msg(msg, ...) fprintf (stderr, "[%s] " msg "\n", __FUNCTION__, ##__VA_ARGS__) /**/ #define ven_file_err(msg, ...) { \ ven_msg(msg, ##__VA_ARGS__); \ fflush(stderr); \ if (vendor_die_on_error) exit(-1); } static vendor_list vendors = NULL; vendor_list get_vendors_list() { return vendors; } gboolean vendor_die_on_error = FALSE; /* sort the vendor list by length of match_string, * LONGEST first */ int vendor_sort (const Vendor *ap, const Vendor *bp) { int la = 0, lb = 0; if (ap) la = ap->weight; if (bp) lb = bp->weight; return lb-la; } static int read_from_vendor_ids(const char *path) { #define VEN_BUFF_SIZE 128 #define VEN_FFWD() while(isspace((unsigned char)*p)) p++; #define VEN_CHK(TOK) (strncmp(p, TOK, tl = strlen(TOK)) == 0 && (ok = 1)) char buff[VEN_BUFF_SIZE] = ""; char vars[7][VEN_BUFF_SIZE]; char *name = vars[0]; char *name_short = vars[1]; char *url = vars[2]; char *url_support = vars[3]; char *wikipedia = vars[4]; char *note = vars[5]; char *ansi_color = vars[6]; int name_rule_count = -1; int count = 0; FILE *fd; char *p, *b; int tl, line = -1, ok = 0; DEBUG("using vendor.ids format loader for %s", path); fd = fopen(path, "r"); if (!fd) return 0; while (fgets(buff, VEN_BUFF_SIZE, fd)) { ok = 0; line++; b = strchr(buff, '\n'); if (b) *b = 0; else ven_file_err("%s:%d: line longer than VEN_BUFF_SIZE (%lu)", path, line, (unsigned long)VEN_BUFF_SIZE); b = strchr(buff, '#'); if (b) *b = 0; /* line ends at comment */ p = buff; VEN_FFWD(); if (VEN_CHK("name ")) { if (name_rule_count == 0) ven_file_err("%s:%d: name \"%s\" had no match rules", path, line, name); strncpy(name, p + tl, VEN_BUFF_SIZE - 1); strcpy(name_short, ""); strcpy(url, ""); strcpy(url_support, ""); strcpy(wikipedia, ""); strcpy(note, ""); strcpy(ansi_color, ""); name_rule_count = 0; } if (VEN_CHK("name_short ")) strncpy(name_short, p + tl, VEN_BUFF_SIZE - 1); if (VEN_CHK("url ")) strncpy(url, p + tl, VEN_BUFF_SIZE - 1); if (VEN_CHK("url_support ")) strncpy(url_support, p + tl, VEN_BUFF_SIZE - 1); if (VEN_CHK("wikipedia ")) strncpy(wikipedia, p + tl, VEN_BUFF_SIZE - 1); if (VEN_CHK("note ")) strncpy(note, p + tl, VEN_BUFF_SIZE - 1); if (VEN_CHK("ansi_color ")) strncpy(ansi_color, p + tl, VEN_BUFF_SIZE - 1); #define dup_if_not_empty(s) (strlen(s) ? g_strdup(s) : NULL) int mrule = -1; if (VEN_CHK("match_string ")) mrule = VENDOR_MATCH_RULE_WORD_IGNORE_CASE; else if (VEN_CHK("match_string_case ")) mrule = VENDOR_MATCH_RULE_WORD_MATCH_CASE; else if (VEN_CHK("match_string_exact ")) mrule = VENDOR_MATCH_RULE_EXACT; else if (VEN_CHK("match_string_prefix ")) mrule = VENDOR_MATCH_RULE_WORD_PREFIX_IGNORE_CASE; else if (VEN_CHK("match_string_prefix_case ")) mrule = VENDOR_MATCH_RULE_WORD_PREFIX_MATCH_CASE; else if (VEN_CHK("match_string_suffix ")) mrule = VENDOR_MATCH_RULE_WORD_PREFIX_IGNORE_CASE; else if (VEN_CHK("match_string_suffix_case ")) mrule = VENDOR_MATCH_RULE_WORD_PREFIX_MATCH_CASE; else if (VEN_CHK("match_string_num_prefix ")) mrule = VENDOR_MATCH_RULE_NUM_PREFIX_IGNORE_CASE; else if (VEN_CHK("match_string_num_prefix_case ")) mrule = VENDOR_MATCH_RULE_NUM_PREFIX_MATCH_CASE; if (mrule >= 0) { Vendor *v = g_new0(Vendor, 1); v->file_line = line; v->match_string = g_strdup(p+tl); v->ms_length = strlen(v->match_string); v->match_rule = mrule; v->name = g_strdup(name); v->name_short = dup_if_not_empty(name_short); v->url = dup_if_not_empty(url); v->url_support = dup_if_not_empty(url_support); v->wikipedia = dup_if_not_empty(wikipedia); v->note = dup_if_not_empty(note); v->ansi_color = dup_if_not_empty(ansi_color); v->weight = v->ms_length; /* NUM_PREFIX rules consider +1 characters */ if (v->match_rule == VENDOR_MATCH_RULE_NUM_PREFIX_MATCH_CASE || v->match_rule == VENDOR_MATCH_RULE_NUM_PREFIX_IGNORE_CASE) v->weight++; v->has_parens = g_utf8_strchr(v->match_string, -1, '(') ? TRUE : FALSE; vendors = g_slist_prepend(vendors, v); name_rule_count++; count++; } g_strstrip(buff); if (!ok && *buff != 0) ven_file_err("unrecognised item at %s:%d, %s", path, line, buff); } fclose(fd); DEBUG("... found %d match strings", count); return count; } void vendor_init(void) { gchar *path=NULL; static SyncEntry se1; static SyncEntry se2 = { .name = N_("Update vendor list"), .file_name = "vendor.ids", .optional = TRUE, }; se1.name = N_("Check Update Version"); se1.file_name = g_strdup_printf("blobs-update-version.json"); se1.optional=FALSE; /* already initialized */ if (vendors) return; DEBUG("initializing vendor list"); sync_manager_add_entry(&se2); sync_manager_add_entry(&se1); char *file_search_order[] = { g_build_filename(g_get_user_config_dir(), "hardinfo2", "vendor.ids", NULL), g_build_filename(params.path_data, "vendor.ids", NULL), NULL }; int n = 0; while (file_search_order[n]) { DEBUG("searching for vendor data at %s ...", file_search_order[n]); if (!access(file_search_order[n], R_OK)) { path = file_search_order[n]; DEBUG("... file exists."); break; } n++; } int fail = 1; if (path && strstr(path, "vendor.ids")) { fail = !read_from_vendor_ids(path); } if (fail) { gint i; DEBUG("vendor data not found, using internal database"); for (i = G_N_ELEMENTS(vendors_builtin) - 1; i >= 0; i--) { vendors = g_slist_prepend(vendors, (gpointer) &vendors_builtin[i]); } } /* sort the vendor list by length of match string so that short strings are * less likely to incorrectly match. * example: ST matches ASUSTeK but SEAGATE is not ASUS */ vendors = g_slist_sort(vendors, (GCompareFunc)vendor_sort); /* free search location strings */ n = 0; while (file_search_order[n]) { free(file_search_order[n]); n++; } } void vendor_cleanup() { DEBUG("cleanup vendor list"); //FIXME CRASH g_slist_free_full(vendors, (GDestroyNotify)vendor_free); } void vendor_free(Vendor *v) { if (v) { g_free(v->name); g_free(v->name_short); g_free(v->url); g_free(v->url_support); g_free(v->ansi_color); g_free(v->match_string); g_free(v); } } const Vendor *vendor_match(const gchar *id_str, ...) { Vendor *ret = NULL; va_list ap; gchar *tmp = NULL, *p = NULL; int tl = 0, c = 0; if (id_str) { c++; tl += strlen(id_str); tmp = appfsp(tmp, "%s", id_str); va_start(ap, id_str); p = va_arg(ap, gchar*); while(p) { c++; tl += strlen(p); tmp = appfsp(tmp, "%s", p); p = va_arg(ap, gchar*); } va_end(ap); } if (!c || tl == 0) return NULL; vendor_list vl = vendors_match_core(tmp, 1); if (vl) { ret = (Vendor*)vl->data; vendor_list_free(vl); } return ret; } static const gchar *vendor_get_name_ex(const gchar * id_str, short shortest) { const Vendor *v = vendor_match(id_str, NULL); if (v) { if (shortest) { int sl = strlen(id_str); int nl = (v->name) ? strlen(v->name) : 0; int snl = (v->name_short) ? strlen(v->name_short) : 0; if (!nl) nl = 9999; if (!snl) snl = 9999; /* if id_str is shortest, then return as if * not found (see below). * if all equal then prefer * name_short > name > id_str. */ if (nl < snl) return (sl < nl) ? id_str : v->name; else return (sl < snl) ? id_str : v->name_short; } else return v->name; } return id_str; /* Preserve an old behavior, but what about const? */ } const gchar *vendor_get_name(const gchar * id_str) { return vendor_get_name_ex(id_str, 0); } const gchar *vendor_get_shortest_name(const gchar * id_str) { return vendor_get_name_ex(id_str, 1); } const gchar *vendor_get_url(const gchar * id_str) { const Vendor *v = vendor_match(id_str, NULL); if (v) return v->url; return NULL; } gchar *vendor_get_link(const gchar *id_str) { const Vendor *v = vendor_match(id_str, NULL); if (!v) { return g_strdup(id_str); } return vendor_get_link_from_vendor(v); } gchar *vendor_get_link_from_vendor(const Vendor *v) { #if GTK_CHECK_VERSION(2, 18, 0) gboolean gtk_label_link_ok = TRUE; #else gboolean gtk_label_link_ok = FALSE; #endif gboolean link_ok = params.markup_ok && gtk_label_link_ok; /* If using a real link, and wikipedia is available, * target that instead of url. There's usually much more * information there, plus easily click through to company url. */ gboolean link_wikipedia = TRUE; if (!v) return g_strdup(_("Unknown")); gchar *url = NULL; if ( (link_ok && link_wikipedia && v->wikipedia) || (v->wikipedia && !v->url) ) url = g_strdup_printf("http://wikipedia.com/wiki/%s", v->wikipedia); else if (v->url) url = g_strdup(v->url); if (!url) return g_strdup(v->name); auto_free(url); if (link_ok) { const gchar *prefix; if (!strncmp(url, "http://", sizeof("http://") - 1) || !strncmp(url, "https://", sizeof("https://") - 1)) { prefix = ""; } else { prefix = "http://"; } return g_strdup_printf("%s", prefix, url, v->name); } return g_strdup_printf("%s (%s)", v->name, url); } vendor_list vendor_list_concat_va(int count, vendor_list vl, ...) { vendor_list ret = vl, p = NULL; va_list ap; va_start(ap, vl); if (count > 0) { count--; /* includes vl */ while (count) { p = va_arg(ap, vendor_list); ret = g_slist_concat(ret, p); count--; } } else { p = va_arg(ap, vendor_list); while (p) { ret = g_slist_concat(ret, p); p = va_arg(ap, vendor_list); } } va_end(ap); return ret; } int vendor_cmp_deep(const Vendor *a, const Vendor *b) { int r; if (a && !b) return 1; if (!a && b) return -1; if (!a && !b) return 0; r = g_strcmp0(a->name, b->name); if (!!r) return r; r = g_strcmp0(a->name_short, b->name_short); if (!!r) return r; r = g_strcmp0(a->ansi_color, b->ansi_color); if (!!r) return r; r = g_strcmp0(a->url, b->url); if (!!r) return r; r = g_strcmp0(a->url_support, b->url_support); if (!!r) return r; r = g_strcmp0(a->wikipedia, b->wikipedia); if (!!r) return r; return 0; } vendor_list vendor_list_remove_duplicates_deep(vendor_list vl) { /* vendor_list is GSList* */ GSList *tvl = vl; GSList *evl = NULL; while(tvl) { const Vendor *tv = tvl->data; evl = tvl->next; while(evl) { const Vendor *ev = evl->data; if (vendor_cmp_deep(ev, tv) == 0) { GSList *next = evl->next; vl = g_slist_delete_link(vl, evl); evl = next; } else evl = evl->next; } tvl = tvl->next; } return vl; } vendor_list vendors_match(const gchar *id_str, ...) { va_list ap; gchar *tmp = NULL, *p = NULL; int tl = 0, c = 0; if (id_str) { c++; tl += strlen(id_str); tmp = appfsp(tmp, "%s", id_str); va_start(ap, id_str); p = va_arg(ap, gchar*); while(p) { c++; tl += strlen(p); tmp = appfsp(tmp, "%s", p); p = va_arg(ap, gchar*); } va_end(ap); } if (!c || tl == 0) return NULL; return vendors_match_core(tmp, -1); } vendor_list vendors_match_core(const gchar *str, int limit) { gchar *p = NULL; GSList *vlp; int found = 0; vendor_list ret = NULL; /* pass [array_index]: function * 1st [3]: only check match strings that have () in them * 2nd [2]: ignore text in (), like (formerly ...) or (nee ...), * but unfortunately also (now ...) * 3rd [1]: (passes[0]): full text */ gchar *passes[3] = { g_strdup(str), g_strdup(str), g_strdup(str) }; int pass = 1; p = passes[1]; while((p = strchr(p, '('))) { pass = 3; p++; while(*p && *p != ')') { *p = ' '; p++; } } for (; pass > 0; pass--) { for (vlp = vendors; vlp; vlp = vlp->next) { Vendor *v = (Vendor *)vlp->data; char *m = NULL; if (!v) continue; if (!v->match_string) continue; if (v->has_parens) if (pass != 3) continue; //ven_msg("pass:%d <<%s>> EXAMINE: \"%s\"", pass, v->match_string, passes[pass-1]); int epass; #define standard_match_work_inner(fn) { \ /* clear so it doesn't match again */ \ for(epass = pass; epass > 0; epass--) \ { char *s = passes[epass-1] + (m - passes[pass-1]); \ char *e = s + v->ms_length; \ for(; s < e; s++) *s = ' '; \ g_strstrip(passes[epass-1]); } \ /* add to return list */ \ ret = vendor_list_append(ret, v); \ found++; \ if (*passes[0] == 0) \ goto vendors_match_core_finish; \ if (limit > 0 && found >= limit) \ goto vendors_match_core_finish; } #define standard_match_work(fn) \ if ((m = fn(passes[pass-1], v->match_string))) \ standard_match_work_inner(); switch(v->match_rule) { case VENDOR_MATCH_RULE_EXACT: if (SEQ(passes[pass-1], v->match_string) ) { /* add to return list */ ret = vendor_list_append(ret, v); found++; goto vendors_match_core_finish; /* no way for any other match to happen */ } break; case VENDOR_MATCH_RULE_WORD_IGNORE_CASE: standard_match_work(strcasestr_word); break; case VENDOR_MATCH_RULE_WORD_MATCH_CASE: standard_match_work(strstr_word); break; case VENDOR_MATCH_RULE_WORD_PREFIX_MATCH_CASE: standard_match_work(strstr_word_prefix); break; case VENDOR_MATCH_RULE_WORD_PREFIX_IGNORE_CASE: standard_match_work(strcasestr_word_prefix); break; case VENDOR_MATCH_RULE_WORD_SUFFIX_MATCH_CASE: standard_match_work(strstr_word_suffix); break; case VENDOR_MATCH_RULE_WORD_SUFFIX_IGNORE_CASE: standard_match_work(strcasestr_word_suffix); break; case VENDOR_MATCH_RULE_NUM_PREFIX_IGNORE_CASE: if ((m = strstr_word_prefix(passes[pass-1], v->match_string))) if (isdigit(m[v->ms_length])) standard_match_work_inner(); break; case VENDOR_MATCH_RULE_NUM_PREFIX_MATCH_CASE: if ((m = strcasestr_word_prefix(passes[pass-1], v->match_string))) if (isdigit(m[v->ms_length])) standard_match_work_inner(); break; } } } vendors_match_core_finish: g_free(passes[0]); g_free(passes[1]); g_free(passes[2]); return ret; } hardinfo2-hardinfo2-1331e88/hardinfo2/x_util.c000066400000000000000000000352741474767047500211020ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2017 L. A. F. Pereira * This file * Copyright (C) 2018 Burt P. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "hardinfo.h" #include "x_util.h" #include /* wayland stuff lives here for now */ wl_info *get_walyand_info() { wl_info *s = malloc(sizeof(wl_info)); memset(s, 0, sizeof(wl_info)); s->xdg_session_type = g_strdup( getenv("XDG_SESSION_TYPE") ); if (s->xdg_session_type == NULL) s->xdg_session_type = strdup("x11"); s->display_name = g_strdup( getenv("WAYLAND_DISPLAY") ); return s; } void wl_free(wl_info *s) { if (s) { free(s->xdg_session_type); free(s->display_name); free(s); } } /* get x information from xrandr, xdpyinfo, glxinfo and vulkaninfo*/ static char *simple_line_value(char *line, const char *prefix) { if (g_str_has_prefix(g_strstrip(line), prefix)) { line += strlen(prefix) + 1; return g_strstrip(line); } else return NULL; } gboolean fill_vk_info(vk_info *vk) { gboolean spawned; gchar *out, *err, *p, *l, *next_nl; int gpu=0,old=0,found=0; gchar *vk_cmd = g_strdup("vulkaninfo --summary"); #define VK_MATCH_LINE(prefix_str, struct_member) \ if (l = simple_line_value(p, prefix_str)) { vk->struct_member = g_strdup(strreplace(l,"= ","")); goto vk_next_line; } while(old<=1){ spawned = hardinfo_spawn_command_line_sync(vk_cmd, &out, &err, NULL, NULL); g_free(vk_cmd); if (spawned) { p = out; while(next_nl = strchr(p, '\n')) { strend(p, '\n'); g_strstrip(p); VK_MATCH_LINE("Vulkan Instance Version", vk_instVer); if(strstr(p,"GPU")==p) {found=1;sscanf(p,"GPU%d:",&gpu);} if((gpu>=0) && (gpuvk_vendorId[i]){ vk->vk_vendorId[i]=strreplace(vk->vk_vendorId[i],"0x10000","Khronos"); vk->vk_vendorId[i]=strreplace(vk->vk_vendorId[i],"0x10001","Viv"); vk->vk_vendorId[i]=strreplace(vk->vk_vendorId[i],"0x10002","VSI"); vk->vk_vendorId[i]=strreplace(vk->vk_vendorId[i],"0x10003","Kazan"); vk->vk_vendorId[i]=strreplace(vk->vk_vendorId[i],"0x10004","CodePlay"); vk->vk_vendorId[i]=strreplace(vk->vk_vendorId[i],"0x10005","Mesa"); vk->vk_vendorId[i]=strreplace(vk->vk_vendorId[i],"0x10006","POCL"); vk->vk_vendorId[i]=strreplace(vk->vk_vendorId[i],"0x10007","MobileEye"); vk->vk_vendorId[i]=strreplace(vk->vk_vendorId[i],"0x0","Unknown"); vk->vk_vendorId[i]=strreplace(vk->vk_vendorId[i],"0x1002","AMD"); vk->vk_vendorId[i]=strreplace(vk->vk_vendorId[i],"0x106b","Apple"); vk->vk_vendorId[i]=strreplace(vk->vk_vendorId[i],"0x13b5","ARM"); vk->vk_vendorId[i]=strreplace(vk->vk_vendorId[i],"0x14e4","BroadCom"); vk->vk_vendorId[i]=strreplace(vk->vk_vendorId[i],"0x1ae0","Google"); vk->vk_vendorId[i]=strreplace(vk->vk_vendorId[i],"0x8086","Intel"); vk->vk_vendorId[i]=strreplace(vk->vk_vendorId[i],"0x10de","NVidia"); vk->vk_vendorId[i]=strreplace(vk->vk_vendorId[i],"0x1010","PowerVR"); vk->vk_vendorId[i]=strreplace(vk->vk_vendorId[i],"0x5143","Qualcom"); vk->vk_vendorId[i]=strreplace(vk->vk_vendorId[i],"0x144d","Samsung"); vk->vk_vendorId[i]=strreplace(vk->vk_vendorId[i],"0x15ad","VMWare"); vk->vk_vendorId[i]=strreplace(vk->vk_vendorId[i],"0x9999","Vivante"); }i++;} while(i 2 steps vk_cmd = g_strdup("vulkaninfo"); old++; } return FALSE; } vk_info *vk_create() { vk_info *s = malloc(sizeof(vk_info)); if(!s) return NULL; memset(s, 0, sizeof(vk_info)); return s; } void vk_free(vk_info *s) { if (s) { free(s->vk_instVer); // int i=0;do{ free(s->vk_apiVer[i]); free(s->vk_drvVer[i]); free(s->vk_vendorId[i]); free(s->vk_devType[i]); free(s->vk_devName[i]); free(s->vk_drvName[i]); free(s->vk_drvInfo[i]); free(s->vk_conformVer[i]); i++; }while(istruct_member = g_strdup(l); goto glx_next_line; } spawned = hardinfo_spawn_command_line_sync(glx_cmd, &out, &err, NULL, NULL); g_free(glx_cmd); if (spawned) { p = out; while(next_nl = strchr(p, '\n')) { strend(p, '\n'); g_strstrip(p); GLX_MATCH_LINE("GLX version", glx_version); GLX_MATCH_LINE("OpenGL vendor string", ogl_vendor); GLX_MATCH_LINE("OpenGL renderer string", ogl_renderer); GLX_MATCH_LINE("OpenGL core profile version string", ogl_core_version); GLX_MATCH_LINE("OpenGL core profile shading language version string", ogl_core_sl_version); GLX_MATCH_LINE("OpenGL version string", ogl_version); GLX_MATCH_LINE("OpenGL shading language version string", ogl_sl_version); GLX_MATCH_LINE("OpenGL ES profile version string", ogles_version); GLX_MATCH_LINE("OpenGL ES profile shading language version string", ogles_sl_version); if (l = simple_line_value(p, "direct rendering")) { if (strstr(p, "Yes")) glx->direct_rendering = 1; goto glx_next_line; } glx_next_line: p = next_nl + 1; } g_free(out); g_free(err); return TRUE; } return FALSE; } glx_info *glx_create() { glx_info *s = malloc(sizeof(glx_info)); if(!s) return NULL; memset(s, 0, sizeof(glx_info)); return s; } void glx_free(glx_info *s) { if (s) { free(s->glx_version); free(s->ogl_vendor); free(s->ogl_renderer); free(s->ogl_core_version); free(s->ogl_core_sl_version); free(s->ogl_version); free(s->ogl_sl_version); free(s->ogles_version); free(s->ogles_sl_version); free(s); } } gboolean fill_xinfo(xinfo *xi) { gboolean spawned; gchar *out, *err, *p, *l, *next_nl; gchar *xi_cmd = g_strdup("xdpyinfo"); #define XI_MATCH_LINE(prefix_str, struct_member) \ if (l = simple_line_value(p, prefix_str)) { xi->struct_member = g_strdup(l); goto xi_next_line; } spawned = hardinfo_spawn_command_line_sync(xi_cmd, &out, &err, NULL, NULL); g_free(xi_cmd); if (spawned) { p = out; while(next_nl = strchr(p, '\n')) { strend(p, '\n'); g_strstrip(p); XI_MATCH_LINE("name of display", display_name); XI_MATCH_LINE("vendor string", vendor); XI_MATCH_LINE("vendor release number", release_number); if(!xi->version) XI_MATCH_LINE("XFree86 version", version); if(!xi->version) XI_MATCH_LINE("X.Org version", version); xi_next_line: p = next_nl + 1; } g_free(out); g_free(err); return TRUE; } return FALSE; } gboolean fill_xrr_info(xrr_info *xrr) { gboolean spawned; gchar *out, *err, *p, *next_nl; gchar *xrr_cmd = g_strdup("xrandr --prop"); int ec; x_screen ts; x_output to; char output_id[64]; char status[128]; char alist[512]; memset(&ts, 0, sizeof(x_screen)); memset(&to, 0, sizeof(x_output)); memset(output_id, 0, sizeof(output_id)); memset(status, 0, sizeof(status)); memset(alist, 0, sizeof(alist)); spawned = hardinfo_spawn_command_line_sync(xrr_cmd, &out, &err, NULL, NULL); g_free(xrr_cmd); if (spawned) { p = out; while(next_nl = strchr(p, '\n')) { strend(p, '\n'); g_strstrip(p); ec = sscanf(p, "Screen %d: minimum %d x %d, current %d x %d, maximum %d x %d", &ts.number, &ts.min_px_width, &ts.min_px_height, &ts.px_width, &ts.px_height, &ts.max_px_width, &ts.max_px_height); if (ec == 7) { /* new screen */ xrr->screen_count++; if (xrr->screens == NULL) xrr->screens = malloc(xrr->screen_count * sizeof(x_screen)); else xrr->screens = realloc(xrr->screens, xrr->screen_count * sizeof(x_screen)); memcpy(&xrr->screens[xrr->screen_count-1], &ts, sizeof(x_screen)); memset(&ts, 0, sizeof(x_screen)); /* clear the temp */ goto xrr_next_line; } /* looking for: * (connected|disconnected|unknown connection) (primary|?) <%dx%d+%d+%d> (attribute_list) mm x mm */ ec = sscanf(p, "%63s %127[^(](%511[^)]", output_id, status, alist); if (ec == 3) { int is_output = 0, found_rect = 0, n = 0; gchar **ot = g_strsplit(status, " ", 0); /* find rect */ while (ot[n] != NULL) { ec = sscanf(ot[n], "%dx%d+%d+%d", &to.px_width, &to.px_height, &to.px_offset_x, &to.px_offset_y); if (ec == 4) { found_rect = 1; break; } n++; } if (found_rect) to.screen = xrr->screen_count - 1; else to.screen = -1; if (strcmp("disconnected", ot[0]) == 0) { is_output = 1; to.connected = 0; } else if (strcmp("unknown", ot[0]) == 0 && strcmp("connection", ot[1]) == 0) { is_output = 1; to.connected = -1; } else if (strcmp("connected", ot[0]) == 0) { is_output = 1; to.connected = 1; } g_strfreev(ot); if (is_output) { strncpy(to.name, output_id, 64); xrr->output_count++; if (xrr->outputs == NULL) xrr->outputs = malloc(xrr->output_count * sizeof(x_output)); else xrr->outputs = realloc(xrr->outputs, xrr->output_count * sizeof(x_output)); memcpy(&xrr->outputs[xrr->output_count-1], &to, sizeof(x_output)); memset(&to, 0, sizeof(x_output)); /* clear the temp */ goto xrr_next_line; } } xrr_next_line: p = next_nl + 1; } g_free(out); g_free(err); return TRUE; } return FALSE; } gboolean fill_basic_xlib(xinfo *xi) { Display *display; int s, w, h, rn; display = XOpenDisplay(NULL); if (display) { if (!xi->display_name) xi->display_name = g_strdup(XDisplayName(NULL)); if (!xi->vendor) xi->vendor = g_strdup(XServerVendor(display)); if (!xi->release_number) { rn = XVendorRelease(display); xi->release_number = g_strdup_printf("%d", rn); } if (!xi->xrr || !xi->xrr->screen_count) { s = DefaultScreen(display); w = XDisplayWidth(display, s); h = XDisplayHeight(display, s); /* create at least one screen */ x_screen ts; memset(&ts, 0, sizeof(x_screen)); ts.number = s; ts.px_width = w; ts.px_height = h; if(!xi->xrr) { xi->xrr=malloc(sizeof(xrr_info)); if(xi->xrr) memset(xi->xrr,0,sizeof(xrr_info)); } if(xi->xrr) { xi->xrr->screen_count++; if (xi->xrr->screens == NULL) xi->xrr->screens = malloc(xi->xrr->screen_count * sizeof(x_screen)); else xi->xrr->screens = realloc(xi->xrr->screens, xi->xrr->screen_count * sizeof(x_screen)); memcpy(&xi->xrr->screens[xi->xrr->screen_count-1], &ts, sizeof(x_screen)); } } return TRUE; } return FALSE; } xrr_info *xrr_create() { xrr_info *xrr = malloc(sizeof(xrr_info)); if(!xrr) return NULL; memset(xrr, 0, sizeof(xrr_info)); return xrr; } void xrr_free(xrr_info *xrr) { if (xrr) { free(xrr->screens); free(xrr->outputs); free(xrr->providers); free(xrr->monitors); free(xrr); } } xinfo *xinfo_get_info() { int fail=0; xinfo *xi = malloc(sizeof(xinfo)); if(!xi) return NULL; memset(xi, 0, sizeof(xinfo)); xi->glx = glx_create(); if(!xi->glx) {free(xi);return NULL;} xi->xrr = xrr_create(); if(!xi->xrr) {free(xi->glx);free(xi);return NULL;} xi->vk = vk_create(); if(!xi->vk) {free(xi->glx);free(xi->xrr);free(xi);return NULL;} if(!fill_xinfo(xi)) fail++; if(fill_xrr_info(xi->xrr)) fail++; /* as fallback, try xlib directly */ if ( fail && !fill_basic_xlib(xi) ) xi->nox = 1; fill_glx_info(xi->glx); fill_vk_info(xi->vk); return xi; } void xinfo_free(xinfo *xi) { if (xi) { free(xi->display_name); free(xi->vendor); free(xi->version); free(xi->release_number); xrr_free(xi->xrr); glx_free(xi->glx); vk_free(xi->vk); free(xi); } } hardinfo2-hardinfo2-1331e88/includes/000077500000000000000000000000001474767047500173515ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/includes/alpha/000077500000000000000000000000001474767047500204365ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/includes/alpha/processor-platform.h000066400000000000000000000020241474767047500244460ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef __PROCESSOR_PLATFORM_H__ #define __PROCESSOR_PLATFORM_H__ struct _Processor { gchar *model_name; gfloat bogomips, cpu_mhz; gchar *strmodel; gchar *cycle_frequency_hz_str; }; #endif /* __PROCESSOR_PLATFORM_H__ */ hardinfo2-hardinfo2-1331e88/includes/arm/000077500000000000000000000000001474767047500201305ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/includes/arm/processor-platform.h000066400000000000000000000033261474767047500241460ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef __PROCESSOR_PLATFORM_H__ #define __PROCESSOR_PLATFORM_H__ #include "cpu_util.h" typedef struct _ProcessorCache ProcessorCache; struct _ProcessorCache { gint level; gint number_of_sets; gint physical_line_partition; gint size; gchar *type; gint ways_of_associativity; gint uid; /* uid is unique among caches with the same (type, level) */ gchar *shared_cpu_list; /* some kernel's don't give a uid, so try shared_cpu_list */ gint phy_sock; }; struct _Processor { gchar *model_name; gchar *linux_name; gchar *flags; gfloat bogomips; gint id; gfloat cpu_mhz; /* for devices.c, identical to cpukhz_max/1000 */ cpu_topology_data *cputopo; cpufreq_data *cpufreq; gchar *cpu_implementer; gchar *cpu_architecture; gchar *cpu_variant; gchar *cpu_part; gchar *cpu_revision; gint mode; GSList *cache; }; #endif /* __PROCESSOR_PLATFORM_H__ */ hardinfo2-hardinfo2-1331e88/includes/benchmark.h000066400000000000000000000052671474767047500214660ustar00rootroot00000000000000#ifndef __BENCHMARK_H__ #define __BENCHMARK_H__ #include "hardinfo.h" #include "util_sysobj.h" /* for SEQ() */ #define BENCH_PTR_BITS ((unsigned int)sizeof(void*) * 8) extern ProgramParameters params; enum BenchmarkEntries { BENCHMARK_BLOWFISH_SINGLE, BENCHMARK_BLOWFISH_THREADS, BENCHMARK_BLOWFISH_CORES, BENCHMARK_ZLIB, BENCHMARK_CRYPTOHASH, BENCHMARK_FIB, BENCHMARK_NQUEENS, BENCHMARK_FFT, BENCHMARK_RAYTRACE, BENCHMARK_IPERF3_SINGLE, BENCHMARK_SBCPU_SINGLE, BENCHMARK_SBCPU_ALL, BENCHMARK_SBCPU_QUAD, BENCHMARK_MEMORY_SINGLE, BENCHMARK_MEMORY_DUAL, BENCHMARK_MEMORY_QUAD, BENCHMARK_MEMORY_ALL, BENCHMARK_GUI, #if(HARDINFO2_QT5) BENCHMARK_OPENGL, #endif BENCHMARK_STORAGE, BENCHMARK_CACHEMEM, BENCHMARK_N_ENTRIES }; void benchmark_bfish_single(void); void benchmark_bfish_threads(void); void benchmark_bfish_cores(void); void benchmark_memory_single(void); void benchmark_memory_dual(void); void benchmark_memory_quad(void); void benchmark_memory_all(void); void benchmark_sbcpu_single(void); void benchmark_sbcpu_all(void); void benchmark_sbcpu_quad(void); void benchmark_cryptohash(void); void benchmark_fft(void); void benchmark_fib(void); void benchmark_fish(void); void benchmark_gui(void); void benchmark_nqueens(void); void benchmark_raytrace(void); void benchmark_zlib(void); void benchmark_iperf3_single(void); #if(HARDINFO2_QT5) void benchmark_opengl(void); #endif void benchmark_storage(void); void benchmark_cachemem(void); typedef struct { double result; double elapsed_time; int threads_used; int revision; char extra[256]; /* no \n, ; or | */ } bench_value; #define EMPTY_BENCH_VALUE {-1.0f,0,0,-1,""} char *bench_value_to_str(bench_value r); bench_value bench_value_from_str(const char* str); /* Note: * benchmark_parallel_for(): element [start] included, but [end] is excluded. * callback(): expected to processes elements [start] through [end] inclusive. */ bench_value benchmark_parallel_for(gint n_threads, guint start, guint end, gpointer callback, gpointer callback_data); bench_value benchmark_parallel(gint n_threads, gpointer callback, gpointer callback_data); bench_value benchmark_crunch_for(float seconds, gint n_threads, gpointer callback, gpointer callback_data); extern bench_value bench_results[BENCHMARK_N_ENTRIES]; /* in bench_util.c */ /* guarantee a minimum size of data * or return null */ gchar *get_test_data(gsize min_size); char *md5_digest_str(const char *data, unsigned int len); #define bench_msg(msg, ...) fprintf (stderr, "[%s] " msg "\n", __FUNCTION__, ##__VA_ARGS__) #endif /* __BENCHMARK_H__ */ hardinfo2-hardinfo2-1331e88/includes/blowfish.h000066400000000000000000000021021474767047500213320ustar00rootroot00000000000000/* * blowfish.h: Header file for blowfish.c * Copyright (C) 1997 by Paul Kocher * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . See blowfish.c for more information about this file. */ typedef struct { guint32 P[16 + 2]; guint32 S[4][256]; } BLOWFISH_CTX; void Blowfish_Init(BLOWFISH_CTX *ctx, unsigned char *key, int keyLen); void Blowfish_Encrypt(BLOWFISH_CTX *ctx, guint32 *xl, guint32 *xr); void Blowfish_Decrypt(BLOWFISH_CTX *ctx, guint32 *xl, guint32 *xr); hardinfo2-hardinfo2-1331e88/includes/callbacks.h000066400000000000000000000033041474767047500214410ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef __CALLBACKS_H__ #define __CALLBACKS_H__ #include void cb_about(); void cb_about_module(GtkAction *action); void cb_generate_report(); void cb_quit(); void cb_refresh(); void cb_copy_to_clipboard(); void cb_side_pane(); void cb_toolbar(); void cb_open_web_page(); void cb_open_online_docs(); void cb_open_online_docs_context(); void cb_sync_manager(); void cb_report_bug(); void cb_donate(); void cb_connect_to(); void cb_manage_hosts(); void cb_connect_host(GtkAction * action); void cb_local_computer(); void cb_act_as_server(); void cb_sync_on_startup(); void cb_disable_theme(); void cb_theme1(); void cb_theme2(); void cb_theme3(); void cb_theme4(); void cb_theme5(); void cb_theme6(); #if GLIB_CHECK_VERSION(2,40,0) #else //For compatibility with older glib gboolean g2_key_file_save_to_file (GKeyFile *key_file, const gchar *filename, GError **error); #endif #endif /* __CALLBACKS_H__ */ hardinfo2-hardinfo2-1331e88/includes/computer.h000066400000000000000000000110371474767047500213620ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef __COMPUTER_H__ #define __COMPUTER_H__ #include "hardinfo.h" #include "x_util.h" typedef struct _Computer Computer; typedef struct _OperatingSystem OperatingSystem; typedef struct _MemoryInfo MemoryInfo; typedef struct _UptimeInfo UptimeInfo; typedef struct _LoadInfo LoadInfo; typedef struct _DisplayInfo DisplayInfo; typedef struct _Distro Distro; typedef struct _AlsaInfo AlsaInfo; typedef struct _AlsaCard AlsaCard; typedef struct _FileSystem FileSystem; typedef struct _FileSystemEntry FileSystemEntry; struct _AlsaCard { gchar *alsa_name; gchar *friendly_name; /* gchar *board; gchar revision, compat_class; gint subsys_vendorid, subsys_id; gint cap_dac_res, cap_adc_res; gboolean cap_3d_enh; gint curr_mic_gain; gboolean curr_3d_enh, curr_loudness, curr_simstereo; gchar *curr_mic_select; */ }; struct _AlsaInfo { GSList *cards; }; struct _DisplayInfo { /* old stuff */ gint width, height; /* new stuff */ xinfo *xi; /* x info */ wl_info *wl; /* wayland info */ gchar *display_server; /* don't free */ const gchar *vendor; /* X vendor; points to xrr->xi->vendor */ const gchar *session_type; /* points to wl->xdg_session_type */ }; struct _LoadInfo { float load1, load5, load15; }; struct _UptimeInfo { int days, hours, minutes; }; struct _Computer { MemoryInfo *memory; OperatingSystem *os; DisplayInfo *display; AlsaInfo *alsa; gchar *date_time; }; struct _OperatingSystem { gchar *kernel; gchar *kcmdline; gchar *libc; gchar *distrocode; gchar *distroid; gchar *distro; gchar *hostname; gchar *language; gchar *homedir; gchar *kernel_version; gchar *languages; gchar *desktop; gchar *username; gchar *boots; gchar *entropy_avail; }; struct _MemoryInfo { gint total, used, free, cached; gfloat ratio; }; struct _Distro { gchar *distro; gchar *codename; gchar *id; }; #define get_str(field_name,ptr) \ if (g_str_has_prefix(tmp[0], field_name)) { \ ptr = g_strdup(tmp[1]); \ g_strfreev(tmp); \ continue; \ } #define get_int(field_name,ptr) \ if (g_str_has_prefix(tmp[0], field_name)) { \ ptr = atoi(tmp[1]); \ g_strfreev(tmp); \ continue; \ } #define get_float(field_name,ptr) \ if (g_str_has_prefix(tmp[0], field_name)) { \ ptr = atof(tmp[1]); \ g_strfreev(tmp); \ continue; \ } extern gchar *users; extern gchar *groups; extern gchar *fs_list; extern GHashTable *_module_hash_table; extern Computer *computer; extern gchar *module_list; gchar *computer_get_formatted_loadavg(); gchar *computer_get_formatted_uptime(); gchar *computer_get_alsacards(Computer * computer); gchar *computer_get_entropy_avail(void); gchar *computer_get_aslr(void); gchar *computer_get_dmesg_status(void); const gchar *computer_get_selinux(void); gchar *computer_get_lsm(void); OperatingSystem *computer_get_os(void); AlsaInfo *computer_get_alsainfo(void); MemoryInfo *computer_get_memory(void); UptimeInfo *computer_get_uptime(void); DisplayInfo *computer_get_display(void); void computer_free_display(DisplayInfo *di); void scan_modules_do(void); void scan_filesystems(void); void scan_users_do(void); /* Memory Usage */ extern GHashTable *memlabels; void init_memory_labels(void); void scan_memory_do(void); void scan_boots_real(void); void scan_languages(OperatingSystem *os); void scan_groups_do(void); void kernel_module_icon_init(void); #endif /* __COMPUTER_H__ */ hardinfo2-hardinfo2-1331e88/includes/cpu_util.h000066400000000000000000000024431474767047500213510ustar00rootroot00000000000000#ifndef __CPU_UTIL_H__ #define __CPU_UTIL_H__ #include "hardinfo.h" #ifndef PROC_CPUINFO #define PROC_CPUINFO "/proc/cpuinfo" #endif #define STRIFNULL(f,cs) if (f == NULL) f = g_strdup(cs); #define UNKIFNULL(f) STRIFNULL(f, _("(Unknown)") ) #define EMPIFNULL(f) STRIFNULL(f, "") const gchar *byte_order_str(void); /* from /sys/devices/system/cpu/cpu%d/%s */ gchar* get_cpu_str(const gchar* file, gint cpuid); gint get_cpu_int(const char* item, int cpuid, int null_val); /* space delimted list of flags, finds flag */ int processor_has_flag(gchar * strflags, gchar * strflag); typedef struct { gint id; gint cpukhz_max, cpukhz_min, cpukhz_cur; gchar *scaling_driver, *scaling_governor; gint transition_latency; gchar *shared_list; } cpufreq_data; typedef struct { gint id; /* thread */ gint socket_id; gint core_id; gint book_id; gint drawer_id; } cpu_topology_data; cpufreq_data *cpufreq_new(gint id); void cpufreq_update(cpufreq_data *cpufd, int cur_only); void cpufreq_free(cpufreq_data *cpufd); gchar *cpufreq_section_str(cpufreq_data *cpufd); cpu_topology_data *cputopo_new(gint id); void cputopo_free(cpu_topology_data *cputd); gchar *cputopo_section_str(cpu_topology_data *cputd); int cpu_procs_cores_threads_nodes(int *p, int *c, int *t, int *n); #endif hardinfo2-hardinfo2-1331e88/includes/devices.h000066400000000000000000000055661474767047500211600ustar00rootroot00000000000000#ifndef __DEVICES_H__ #define __DEVICES_H__ #include "hardinfo.h" #include "processor-platform.h" #include "dmi_util.h" typedef struct _Processor Processor; #define WALK_UNTIL(x) while((*buf != '\0') && (*buf != x)) buf++ #define GET_STR(field_name,ptr) \ if (!ptr && strstr(tmp[0], field_name)) { \ ptr = g_markup_escape_text(g_strstrip(tmp[1]), strlen(tmp[1])); \ g_strfreev(tmp); \ continue; \ } #define get_str(field_name,ptr) \ if (g_str_has_prefix(tmp[0], field_name)) { \ ptr = g_strdup(tmp[1]); \ g_strfreev(tmp); \ continue; \ } #define get_int(field_name,ptr) \ if (g_str_has_prefix(tmp[0], field_name)) { \ ptr = atoi(tmp[1]); \ g_strfreev(tmp); \ continue; \ } #define get_float(field_name,ptr) \ if (g_str_has_prefix(tmp[0], field_name)) { \ ptr = atof(tmp[1]); \ g_strfreev(tmp); \ continue; \ } /* Processor */ GSList *processor_scan(void); void get_processor_strfamily(Processor * processor); gchar *processor_get_detailed_info(Processor * processor); gchar *processor_get_info(GSList * processors); gchar *processor_name(GSList * processors); gchar *processor_name_default(GSList * processors); gchar *processor_describe(GSList * processors); gchar *processor_describe_default(GSList * processors); gchar *processor_describe_by_counting_names(GSList * processors); gchar *processor_frequency_desc(GSList *processors); /* Printers */ void init_cups(void); /* Battery */ void scan_battery_do(void); /* PCI */ void scan_pci_do(void); /* Printers */ void scan_printers_do(void); /* Sensors */ #define SENSORS_GROUP_BY_TYPE 1 void scan_sensors_do(void); void sensor_init(void); void sensor_shutdown(void); void __scan_dtree(void); void scan_gpu_do(void); gboolean __scan_udisks2_devices(void); void __scan_ide_devices(void); void __scan_scsi_devices(void); void __scan_input_devices(void); void __scan_usb(void); void __scan_dmi(void); extern gchar *powerstate; extern gchar *gpuname; extern gchar *battery_list; extern gchar *input_icons; extern gchar *input_list; extern gchar *lginterval; extern gchar *meminfo; extern gchar *pci_list; extern gchar *printer_icons; extern gchar *printer_list; extern gchar *sensors; extern gchar *sensor_icons; extern gchar *storage_icons; extern gchar *storage_list; extern gchar *usb_list; extern gchar *usb_icons; extern GHashTable *_pci_devices; extern GHashTable *sensor_compute; extern GHashTable *sensor_labels; extern GModule *cups; extern gchar *dmi_info; extern gchar *dtree_info; extern gchar *gpu_list; extern gchar *gpu_summary; #endif /* __DEVICES_H__ */ hardinfo2-hardinfo2-1331e88/includes/dmi_util.h000066400000000000000000000051051474767047500213310ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2017 L. A. F. Pereira * This file * Copyright (C) 2017 Burt P. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef __DMI_UTIL_H__ #define __DMI_UTIL_H__ #include typedef uint32_t dmi_handle; typedef uint32_t dmi_type; /* -1 = yes, but will be ignored * 0 = no * 1 = yes */ int dmi_str_status(const char *id_str); char *dmi_get_str(const char *id_str); /* ignore nonsense */ char *dmi_get_str_abs(const char *id_str); /* include nonsense */ /* if chassis_type is <=0 it will be fetched from DMI. * with_val = true, will return a string like "[3] Desktop" instead of just * "Desktop". */ char *dmi_chassis_type_str(int chassis_type, gboolean with_val); typedef struct { dmi_handle id; uint32_t size; dmi_type type; const char *type_str; /* untranslated, use _() for translation */ } dmi_handle_ext; typedef struct { uint32_t count; dmi_handle *handles; dmi_handle_ext *handles_ext; } dmi_handle_list; /* get a list of handles that match a dmi_type */ dmi_handle_list *dmidecode_handles(const dmi_type *type); void dmi_handle_list_free(dmi_handle_list *hl); /* get a list of handles which have a name, and/or optional value, and/or limit to an optional dmi_type * dmidecode_match_value("Name", NULL, NULL) : all dmi handles with an item called "Name" * dmidecode_match_value("Name", "Value", NULL) : all dmi_handles with an item called "Name" that has a value of "Value" * dmidecode_match_value("Name", "Value", &dt) : all dmi_handles with "Name: Value" that are of type stored in dt */ dmi_handle_list *dmidecode_match_value(const char *name, const char *value, const dmi_type *type); /* get the first value for name, limiting to optional dmi_type and/or optional handle */ char *dmidecode_match(const char *name, const dmi_type *type, const dmi_handle *handle); void dmidecode_cache_free(); #endif hardinfo2-hardinfo2-1331e88/includes/dt_util.h000066400000000000000000000062521474767047500211730ustar00rootroot00000000000000 #ifndef _DT_UTIL_H_ #define _DT_UTIL_H_ #include /* some not-quite-complete stuff that can be disabled */ #define DTEX_PHREFS 1 #ifndef DTR_ROOT #define DTR_ROOT dtr_find_device_tree_root() #endif enum { DT_TYPE_ERR, DT_NODE, DTP_UNK, /* arbitrary-length byte sequence */ DTP_EMPTY, /* empty property */ DTP_STR, /* null-delimited list of strings */ DTP_HEX, /* list of 32-bit values displayed in hex */ DTP_UINT, /* unsigned int list */ DTP_UINT64, /* unsigned int64 list */ DTP_INTRUPT, /* interrupt-specifier list */ DTP_INTRUPT_EX, /* extended interrupt-specifier list */ DTP_OVR, /* all in /__overrides__ */ DTP_PH, /* phandle */ DTP_PH_REF, /* reference to phandle */ DTP_REG, /* <#address-cells, #size-cells> */ DTP_CLOCKS, /* */ DTP_GPIOS, /* */ DTP_DMAS, /* dma-specifier list */ DTP_OPP1, /* list of operating points, pairs of (kHz,uV) */ DTP_PH_REF_OPP2, /* phandle reference to opp-v2 table */ }; /* simplest, no aliases, doesn't require an existing dt. * use dtr_get_prop_str() for complete. */ char* dtr_get_string(const char *p, int decode); typedef uint32_t dt_uint; /* big-endian */ typedef uint64_t dt_uint64; /* big-endian */ typedef struct _dtr dtr; typedef struct _dtr_obj dtr_obj; dtr *dtr_new(const char *base_path); /* NULL for DTR_ROOT */ void dtr_free(dtr *); int dtr_was_found(dtr *); const char *dtr_base_path(dtr *); char *dtr_messages(dtr *); /* returns a message log */ dtr_obj *dtr_obj_read(dtr *, const char *dtp); void dtr_obj_free(dtr_obj *); int dtr_obj_type(dtr_obj *); char *dtr_obj_alias(dtr_obj *); char *dtr_obj_symbol(dtr_obj *); char *dtr_obj_path(dtr_obj *); /* device tree path */ char *dtr_obj_full_path(dtr_obj *); /* system path */ dtr_obj *dtr_get_parent_obj(dtr_obj *); /* find property/node 'name' relative to node * if node is NULL, then from root */ dtr_obj *dtr_get_prop_obj(dtr *, dtr_obj *node, const char *name); char *dtr_get_prop_str(dtr *, dtr_obj *node, const char *name); uint32_t dtr_get_prop_u32(dtr *, dtr_obj *node, const char *name); uint64_t dtr_get_prop_u64(dtr *, dtr_obj *node, const char *name); /* attempts to render the object as a string */ char* dtr_str(dtr_obj *obj); int dtr_guess_type(dtr_obj *obj); char *dtr_elem_phref(dtr *, dt_uint e, int show_path, const char *extra); char *dtr_elem_hex(dt_uint e); char *dtr_elem_byte(uint8_t e); char *dtr_elem_uint(dt_uint e); char *dtr_list_byte(uint8_t *bytes, unsigned long count); char *dtr_list_hex(dt_uint *list, unsigned long count); int dtr_cellv_find(dtr_obj *obj, char *qprop, int limit); char *dtr_maps_info(dtr *); /* returns hardinfo shell section */ const char *dtr_find_device_tree_root(void); /* write to the message log */ void dtr_msg(dtr *s, char *fmt, ...); /* operating-points v0,v1,v2 */ typedef struct { uint32_t version; /* opp version, 0 = clock-frequency only */ uint32_t phandle; /* v2 only */ uint32_t khz_min; uint32_t khz_max; uint32_t clock_latency_ns; } dt_opp_range; /* free result with g_free() */ dt_opp_range *dtr_get_opp_range(dtr *, const char *name); #endif hardinfo2-hardinfo2-1331e88/includes/e2k/000077500000000000000000000000001474767047500200325ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/includes/e2k/processor-platform.h000066400000000000000000000040551474767047500240500ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2020 EntityFX and MCST Elbrus Team * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef __PROCESSOR_PLATFORM_H__ #define __PROCESSOR_PLATFORM_H__ #include "cpu_util.h" /* E2K /proc/cpuinfo: processor : 0 vendor_id : E8C-SWTX cpu family : 4 model : 7 model name : E8C revision : 2 cpu MHz : 1299.912740 cache0 : level=1 type=Instruction scope=Private size=128K line_size=256 associativity=4 cache1 : level=1 type=Data scope=Private size=64K line_size=32 associativity=4 cache2 : level=2 type=Unified scope=Private size=512K line_size=64 associativity=4 cache3 : level=3 type=Unified scope=Private size=16384K line_size=64 associativity=16 bogomips : 2600.68 */ typedef struct _ProcessorCache ProcessorCache; struct _ProcessorCache { gint level; gint number_of_sets; gint physical_line_partition; gint size; gchar *type; gint ways_of_associativity; gint uid; /* uid is unique among caches with the same (type, level) */ gchar *shared_cpu_list; /* some kernel's don't give a uid, so try shared_cpu_list */ gint phy_sock; }; //e2k processor structure struct _Processor { gint id; gfloat cpu_mhz; gchar *model_name; gchar *vendor_id; gfloat bogomips; gint model, family, revision; GSList *cache; }; #endif /* __PROCESSOR_PLATFORM_H__ */ hardinfo2-hardinfo2-1331e88/includes/egg-markdown.h000066400000000000000000000056751474767047500221210ustar00rootroot00000000000000/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- * * Copyright (C) 2008 Richard Hughes * Copyright (C) 2009 L.Pereira * * Licensed under the GNU General Public License Version 2 * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef __EGG_MARKDOWN_H #define __EGG_MARKDOWN_H #include G_BEGIN_DECLS #define EGG_TYPE_MARKDOWN (egg_markdown_get_type ()) #define EGG_MARKDOWN(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EGG_TYPE_MARKDOWN, EggMarkdown)) #define EGG_MARKDOWN_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), EGG_TYPE_MARKDOWN, EggMarkdownClass)) #define EGG_IS_MARKDOWN(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EGG_TYPE_MARKDOWN)) #define EGG_IS_MARKDOWN_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EGG_TYPE_MARKDOWN)) #define EGG_MARKDOWN_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EGG_TYPE_MARKDOWN, EggMarkdownClass)) #define EGG_MARKDOWN_ERROR (egg_markdown_error_quark ()) #define EGG_MARKDOWN_TYPE_ERROR (egg_markdown_error_get_type ()) #define EGG_MARKDOWN_MAX_LINE_LENGTH 2048 typedef struct EggMarkdownPrivate EggMarkdownPrivate; typedef struct { GObject parent; EggMarkdownPrivate *priv; } EggMarkdown; typedef struct { GObjectClass parent_class; void (* active_changed) (EggMarkdown *self, gboolean active); } EggMarkdownClass; typedef enum { EGG_MARKDOWN_OUTPUT_TEXT, EGG_MARKDOWN_OUTPUT_PANGO, EGG_MARKDOWN_OUTPUT_HTML, EGG_MARKDOWN_OUTPUT_UNKNOWN } EggMarkdownOutput; GType egg_markdown_get_type (void); EggMarkdown *egg_markdown_new (void); gboolean egg_markdown_set_output (EggMarkdown *self, EggMarkdownOutput output); gboolean egg_markdown_set_max_lines (EggMarkdown *self, gint max_lines); gboolean egg_markdown_set_smart_quoting (EggMarkdown *self, gboolean smart_quoting); gboolean egg_markdown_set_escape (EggMarkdown *self, gboolean escape); gboolean egg_markdown_set_autocode (EggMarkdown *self, gboolean autocode); gchar *egg_markdown_parse (EggMarkdown *self, const gchar *text); void egg_markdown_clear (EggMarkdown *self); gchar *egg_markdown_get_link_uri (EggMarkdown *self, const gint link_id); G_END_DECLS #endif /* __EGG_MARKDOWN_H */ hardinfo2-hardinfo2-1331e88/includes/expr.h000066400000000000000000000026571474767047500205120ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef __EXPR_H__ #define __EXPR_H__ typedef struct _MathToken MathToken; typedef enum { TOKEN_OPERATOR, TOKEN_VARIABLE, TOKEN_VALUE } MathTokenType; struct _MathToken { union { gfloat value; gchar op; } val; MathTokenType type; }; #define math_postfix_free math_infix_free GSList *math_infix_to_postfix(GSList *infix); void math_infix_free(GSList *infix, gboolean free_tokens); GSList *math_string_to_infix(gchar *string); GSList *math_string_to_postfix(gchar *string); gfloat math_postfix_eval(GSList *postfix, gfloat at_value); gfloat math_string_eval(gchar *string, gfloat at_value); #endif /* __EXPR_H__ */ hardinfo2-hardinfo2-1331e88/includes/fftbench.h000066400000000000000000000004551474767047500213050ustar00rootroot00000000000000#ifndef __FFTBENCH_H__ #define __FFTBENCH_H__ #include typedef struct _FFTBench FFTBench; struct _FFTBench { double **a, *b, *r; int *p; }; FFTBench *fft_bench_new(void); void fft_bench_run(FFTBench *fftbench); void fft_bench_free(FFTBench *fftbench); #endif /* __FFTBENCH_H__ */ hardinfo2-hardinfo2-1331e88/includes/gettext.h000066400000000000000000000004031474767047500212030ustar00rootroot00000000000000 #ifndef __GETTEXT_H__ #define __GETTEXT_H__ #include #include #include #define _(STRING) gettext(STRING) #define N_(STRING) (STRING) #define C_(CTX, STRING) dgettext(CTX, STRING) #define NC_(CTX, STRING) (STRING) #endif hardinfo2-hardinfo2-1331e88/includes/gpu_util.h000066400000000000000000000031411474767047500213510ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2017 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef __GPU_UTIL_H__ #define __GPU_UTIL_H__ #include #include "pci_util.h" #include "dt_util.h" typedef struct nvgpu { char *model; char *bios_version; char *uuid; } nvgpu; typedef struct gpud { char *id; /* ours */ char *nice_name; char *vendor_str; char *device_str; char *location; uint32_t khz_min, khz_max; /* core */ uint32_t mem_khz_min, mem_khz_max; /* memory */ char *drm_dev; char *sysfs_drm_path; pcid *pci_dev; char *dt_compat, *dt_status, *dt_name, *dt_path; const char *dt_vendor, *dt_device; dt_opp_range *dt_opp; nvgpu *nv_info; /* ... */ struct gpud *next; /* this is a linked list */ } gpud; gpud *gpu_get_device_list(); int gpud_list_count(gpud *); void gpud_list_free(gpud *); void gpud_free(gpud *); #endif hardinfo2-hardinfo2-1331e88/includes/guibench.h000066400000000000000000000016471474767047500213160ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2009 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef __GUIBENCH_H__ #define __GUIBENCH_H__ double guibench(double *frameTime, int *frameCount); #endif /* __GUIBENCH_H__ */ hardinfo2-hardinfo2-1331e88/includes/hardinfo.h000066400000000000000000000177411474767047500213260ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef __HARDINFO_H__ #define __HARDINFO_H__ #include #include #include #include #include #include "config.h" #include "shell.h" #include "vendor.h" #include "gettext.h" #include "info.h" #include "format_early.h" #define HARDINFO2_COPYRIGHT_LATEST_YEAR 2024 typedef enum { MODULE_FLAG_NONE = 0, MODULE_FLAG_NO_REMOTE = 1<<0, MODULE_FLAG_HAS_HELP = 1<<1, MODULE_FLAG_HIDE = 1<<2, MODULE_FLAG_BENCHMARK = 1<<3, } ModuleEntryFlags; typedef struct _ModuleEntry ModuleEntry; typedef struct _ModuleAbout ModuleAbout; typedef struct _FileTypes FileTypes; typedef struct _ProgramParameters ProgramParameters; struct _ProgramParameters { gint create_report; gint force_all_details; /* for create_report, include any "moreinfo" that exists for any item */ gint show_version; gint gui_running; gint skip_benchmarks; gint quiet; gint theme; gint darkmode; gint aborting_benchmarks; /* * OK to use the common parts of HTML(4.0) and Pango Markup * in the value part of a key/value. * Including the (b,big,i,s,sub,sup,small,tt,u) tags. * https://developer.gnome.org/pango/stable/PangoMarkupFormat.html */ gint markup_ok; int fmt_opts; gint report_format; gint max_bench_results; gchar *run_benchmark; gchar *bench_user_note; gchar *result_format; gchar *path_lib; gchar *path_data; gchar *path_locale; gchar *argv0; float scale; }; struct _FileTypes { gchar *name; gchar *mime_type; gchar *extension; gpointer data; }; struct _ModuleEntry { gchar *name; gchar *icon; gpointer callback; gpointer scan_callback; guint32 flags; }; struct _ModuleAbout { const gchar *description; const gchar *author; const gchar *version; const gchar *license; }; /* String utility functions */ void remove_quotes(gchar *str); char *strend(gchar *str, gchar chr); void remove_linefeed(gchar *str); gchar *strreplacechr(gchar *string, gchar *replace, gchar new_char); gchar *strreplace(gchar *string, gchar *replace, gchar *replacement); /* Widget utility functions */ void widget_set_cursor(GtkWidget *widget, GdkCursorType cursor_type); gint tree_view_get_visible_height(GtkTreeView *tv); /* File Chooser utility functions */ void file_chooser_open_expander(GtkWidget *chooser); void file_chooser_add_filters(GtkWidget *chooser, FileTypes *filters); gchar *file_chooser_get_extension(GtkWidget *chooser, FileTypes *filters); gchar *file_chooser_build_filename(GtkWidget *chooser, gchar *extension); gpointer file_types_get_data_by_name(FileTypes *file_types, gchar *name); /* Misc utility functions */ //DISABLED DEBUG_AUTO_FREE as debian does not use Release //#if !(RELEASE == 1) //#define DEBUG_AUTO_FREE 2 //#endif #include "auto_free.h" #define idle_free(ptr) auto_free(ptr) gchar *find_program(gchar *program_name); gchar *size_human_readable(gfloat size); void nonblock_sleep(guint msec); GSList *modules_get_list(void); GSList *modules_load_selected(void); GSList *modules_load_all(void); void module_unload_all(void); gchar *seconds_to_string(unsigned int seconds); gchar *h_strdup_cprintf(const gchar *format, gchar *source, ...) __attribute__((format(gnu_printf, 1, 3))); gchar *h_strconcat(gchar *string1, ...); void h_hash_table_remove_all (GHashTable *hash_table); void module_entry_scan_all_except(ModuleEntry *entries, gint except_entry); void module_entry_scan_all(ModuleEntry *entries); void module_entry_reload(ShellModuleEntry *module_entry); void module_entry_scan(ShellModuleEntry *module_entry); gchar *module_entry_function(ShellModuleEntry *module_entry); const gchar *module_entry_get_note(ShellModuleEntry *module_entry); gchar *module_entry_get_field(ShellModuleEntry * module_entry, gchar * field); gchar *module_entry_get_moreinfo(ShellModuleEntry * module_entry, gchar * field); /* GTK UI stuff */ gint ui_init(int *argc, char ***argv); void parameters_init(int *argc, char ***argv, ProgramParameters *params); extern ProgramParameters params; /* Module stuff */ gchar *module_call_method(gchar *method); gchar *module_call_method_param(gchar * method, gchar * parameter); /* Sysfs stuff */ gfloat h_sysfs_read_float(const gchar *endpoint, const gchar *entry); gint h_sysfs_read_int(const gchar *endpoint, const gchar *entry); gint h_sysfs_read_hex(const gchar *endpoint, const gchar *entry); gchar *h_sysfs_read_string(const gchar *endpoint, const gchar *entry); #define SCAN_START() static gboolean scanned = FALSE; if (reload) scanned = FALSE; if (scanned) {return;} else {DEBUG("SCAN_RELOAD");} #define SCAN_END() scanned = TRUE; #define _CONCAT(a,b) a ## b #define CONCAT(a,b) _CONCAT(a,b) void moreinfo_init(void); void moreinfo_shutdown(void); void moreinfo_add_with_prefix(gchar *prefix, gchar *key, gchar *value); void moreinfo_add(gchar *key, gchar *value); void moreinfo_del_with_prefix(gchar *prefix); void moreinfo_clear(void); gchar *moreinfo_lookup_with_prefix(gchar *prefix, gchar *key); gchar *moreinfo_lookup(gchar *key); #if !GLIB_CHECK_VERSION(2,44,0) /* g_strv_contains() requires glib>2.44 * fallback for older versions in hardinfo/util.c */ gboolean g_strv_contains(const gchar * const * strv, const gchar *str); #endif /* in gg_key_file_parse_string_as_value.c */ gchar * gg_key_file_parse_string_as_value (const gchar *string, const gchar list_separator); gchar *hardinfo_clean_grpname(const gchar *v, int replacing); /* Hardinfo labels that have # are truncated and/or hidden. * Labels can't have $ because that is the delimiter in * moreinfo. * replacing = true will free v */ gchar *hardinfo_clean_label(const gchar *v, int replacing); /* hardinfo uses the values as {ht,x}ml, apparently */ gchar *hardinfo_clean_value(const gchar *v, int replacing); /* Same as hardinfo_spawn_command_line_sync(), but calls shell_status_pulse() * before. */ gboolean hardinfo_spawn_command_line_sync(const gchar *command_line, gchar **standard_output, gchar **standard_error, gint *exit_status, GError **error); /* a marker in text to point out problems, using markup where possible */ const char *problem_marker(); /* a version of g_strescape() that allows escaping extra characters. * use with g_strcompress() as normal. */ gchar * gg_strescape (const gchar *source, const gchar *exceptions, const gchar *extra); /* hinote helpers */ #define note_max_len 1024 #define note_printf(note_buff, fmt, ...) \ snprintf((note_buff) + strlen(note_buff), note_max_len - strlen(note_buff) - 1, \ fmt, ##__VA_ARGS__) #define note_print(note_buff, str) note_printf((note_buff), "%s", str) gboolean note_cond_bullet(gboolean cond, gchar *note_buff, const gchar *desc_str); gboolean note_require_tool(const gchar *tool, gchar *note_buff, const gchar *desc_str); int cpu_procs_cores_threads(int *p, int *c, int *t); gchar *strwrap(const gchar *st, size_t w, gchar delimiter); #endif /* __HARDINFO_H__ */ hardinfo2-hardinfo2-1331e88/includes/help-viewer.h000066400000000000000000000025641474767047500217600ustar00rootroot00000000000000/* * HelpViewer - Simple Help file browser * Copyright (C) 2009 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef __HELP_VIEWER_H__ #define __HELP_VIEWER_H__ typedef struct _HelpViewer HelpViewer; struct _HelpViewer { GtkWidget *window; GtkWidget *status_bar; GtkWidget *btn_back, *btn_forward; GtkWidget *text_view; GtkWidget *text_search; gchar *current_file; gchar *help_directory; GSList *back_stack, *forward_stack; }; HelpViewer *help_viewer_new(const gchar *help_dir, const gchar *help_file); void help_viewer_open_page(HelpViewer *help_viewer, const gchar *page); void help_viewer_destroy(HelpViewer *help_viewer); #endif /* __HELP_VIEWER_H__ */ hardinfo2-hardinfo2-1331e88/includes/ia64/000077500000000000000000000000001474767047500201145ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/includes/ia64/processor-platform.h000066400000000000000000000024011474767047500241230ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef __PROCESSOR_PLATFORM_H__ #define __PROCESSOR_PLATFORM_H__ #include "cpu_util.h" struct _Processor { gint id; gfloat cpu_mhz; /* for devices.c, identical to cpukhz_max/1000 */ cpu_topology_data *cputopo; cpufreq_data *cpufreq; gchar *model_name; gchar *vendor_id; gfloat bogomips; gchar *strmodel; gchar *family, *arch, *archrev, *features; gint model, revision; gint cpu_regs; }; #endif /* __PROCESSOR_PLATFORM_H__ */ hardinfo2-hardinfo2-1331e88/includes/iconcache.h000066400000000000000000000023731474767047500214430ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef __ICONCACHE_H__ #define __ICONCACHE_H__ #include #define DEF_ICON_SIZE 24 #define ICON_SUFFIX(size) "@" #size "x" #size void icon_cache_init(void); GdkPixbuf *icon_cache_get_pixbuf(const gchar *file); GtkWidget *icon_cache_get_image(const gchar *file); GdkPixbuf *icon_cache_get_pixbuf_at_size(const gchar *file, gint wid, gint hei); GtkWidget *icon_cache_get_image_at_size(const gchar *file, gint wid, gint hei); #endif /* __ICONCACHE_H__ */ hardinfo2-hardinfo2-1331e88/includes/info.h000066400000000000000000000075071474767047500204660ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2017 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #pragma once #include #include enum InfoGroupSort { INFO_GROUP_SORT_NONE, INFO_GROUP_SORT_NAME_ASCENDING, INFO_GROUP_SORT_NAME_DESCENDING, INFO_GROUP_SORT_VALUE_ASCENDING, INFO_GROUP_SORT_VALUE_DESCENDING, INFO_GROUP_SORT_TAG_ASCENDING, INFO_GROUP_SORT_TAG_DESCENDING, INFO_GROUP_SORT_MAX, }; struct Info { GArray *groups; const gchar *column_titles[5]; ShellViewType view_type; int reload_interval; gboolean column_headers_visible; gboolean zebra_visible; gboolean normalize_percentage; }; struct InfoGroup { const gchar *name; enum InfoGroupSort sort; GArray *fields; /* scaffolding fields */ const gchar *computed; }; struct InfoField { const gchar *name; const gchar *value; const gchar *icon; int update_interval; gboolean highlight; /* select in GUI, highlight in report (flag:*) */ gboolean report_details; /* show moreinfo() in report (flag:!) */ gboolean value_has_vendor; /* (flag:^) */ gboolean label_is_escaped; /* if the label will need g_strcompress() before display use */ gboolean free_name_on_flatten; gboolean free_value_on_flatten; /* scaffolding fields */ gchar *tag; /* moreinfo() lookup tag */ }; struct Info *info_new(void); void info_remove_group(struct Info *info, guint index); struct InfoGroup *info_add_group(struct Info *info, const gchar *group_name, ...); void info_group_strip_extra(struct InfoGroup *group); void info_add_computed_group(struct Info *info, const gchar *name, const gchar *value); void info_add_computed_group_wo_extra(struct Info *info, const gchar *name, const gchar *value); void info_group_add_field(struct InfoGroup *group, struct InfoField field); void info_group_add_fields(struct InfoGroup *group, ...); void info_group_add_fieldsv(struct InfoGroup *group, va_list ap); struct InfoField info_field_printf(const gchar *name, const gchar *format, ...) __attribute__((format(printf, 2, 3))); #define info_field_full(...) \ (struct InfoField) { __VA_ARGS__ } #define info_field(n, v, ...) \ info_field_full(.name = (n), .value = (v), __VA_ARGS__) #define info_field_update(n, ui, ...) \ info_field_full(.name = (n), .value = "...", .update_interval = (ui), \ __VA_ARGS__) #define info_field_last() \ (struct InfoField) {} void info_set_column_title(struct Info *info, const gchar *column, const gchar *title); void info_set_column_headers_visible(struct Info *info, gboolean setting); void info_set_zebra_visible(struct Info *info, gboolean setting); void info_set_normalize_percentage(struct Info *info, gboolean setting); void info_set_view_type(struct Info *info, ShellViewType setting); void info_set_reload_interval(struct Info *info, int setting); gchar *info_flatten(struct Info *info); struct Info *info_unflatten(const gchar *str); hardinfo2-hardinfo2-1331e88/includes/loadgraph.h000066400000000000000000000033441474767047500214670ustar00rootroot00000000000000/* * Simple Load Graph * Copyright (C) 2006 L. A. F. Pereira * * The Simple Load Graph is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License, version 2.1, as published by the Free Software Foundation. * * The Simple Load Graph is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef __LOADGRAPH_H__ #define __LOADGRAPH_H__ #include #include #include typedef struct _LoadGraph LoadGraph; typedef enum { LG_COLOR_GREEN = 0x4FB05A, LG_COLOR_BLUE = 0x4F58B0, LG_COLOR_RED = 0xB04F4F } LoadGraphColor; LoadGraph *load_graph_new(gint size); void load_graph_destroy(LoadGraph *lg); void load_graph_configure_expose(LoadGraph *lg); GtkWidget *load_graph_get_framed(LoadGraph *lg); void load_graph_update(LoadGraph *lg, gdouble value); void load_graph_update_ex(LoadGraph *lg, guint line, gdouble value); void load_graph_set_color(LoadGraph *lg, LoadGraphColor color); void load_graph_clear(LoadGraph *lg); void load_graph_set_data_suffix(LoadGraph *lg, gchar *suffix); gchar *load_graph_get_data_suffix(LoadGraph *lg); void load_graph_set_title(LoadGraph *lg, const gchar *title); const gchar *load_graph_get_title(LoadGraph *lg); gint load_graph_get_height(LoadGraph *lg); #endif /* __LOADGRAPH_H__ */ hardinfo2-hardinfo2-1331e88/includes/loongarch64/000077500000000000000000000000001474767047500214775ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/includes/loongarch64/processor-platform.h000066400000000000000000000017661474767047500255230ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License v2.0 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef __PROCESSOR_PLATFORM_H__ #define __PROCESSOR_PLATFORM_H__ struct _Processor { gchar *vendor_id; gchar *family; gchar *model_name; gint revision; gfloat cpu_mhz, bogomips; gchar *features; }; #endif /* __PROCESSOR_PLATFORM_H__ */ hardinfo2-hardinfo2-1331e88/includes/m68k/000077500000000000000000000000001474767047500201365ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/includes/m68k/processor-platform.h000066400000000000000000000020131474767047500241440ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef __PROCESSOR_PLATFORM_H__ #define __PROCESSOR_PLATFORM_H__ struct _Processor { gchar *model_name; gfloat bogomips, cpu_mhz; gchar *fpu_name, *mmu_name, *calibration; }; #endif /* __PROCESSOR_PLATFORM_H__ */ hardinfo2-hardinfo2-1331e88/includes/markdown-text-view.h000066400000000000000000000056571474767047500233130ustar00rootroot00000000000000/* * Markdown Text View * GtkTextView subclass that supports Markdown syntax * * Copyright (C) 2009 L.Pereira * Portions Copyright (C) 2007-2008 Richard Hughes * Portions Copyright (C) GTK+ Team (based on hypertext textview demo) * * Licensed under the GNU General Public License Version 2 * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef __MARKDOWN_TEXTVIEW_H__ #define __MARKDOWN_TEXTVIEW_H__ #include #include "egg-markdown.h" G_BEGIN_DECLS #define TYPE_MARKDOWN_TEXTVIEW (markdown_textview_get_type()) #define MARKDOWN_TEXTVIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), TYPE_MARKDOWN_TEXTVIEW, MarkdownTextView)) #define MARKDOWN_TEXTVIEW_CLASS(obj) (G_TYPE_CHECK_CLASS_CAST((obj), MARKDOWN_TEXTVIEW, MarkdownTextViewClass)) #define IS_MARKDOWN_TEXTVIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), TYPE_MARKDOWN_TEXTVIEW)) #define IS_MARKDOWN_TEXTVIEW_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE((obj), TYPE_MARKDOWN_TEXTVIEW)) #define MARKDOWN_TEXTVIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), TYPE_MARKDOWN_TEXTVIEW, MarkdownTextViewClass)) typedef struct _MarkdownTextView MarkdownTextView; typedef struct _MarkdownTextViewClass MarkdownTextViewClass; struct _MarkdownTextView { GtkTextView parent; EggMarkdown *markdown; gboolean hovering_over_link; gchar *image_directory; }; struct _MarkdownTextViewClass { GtkTextViewClass parent_class; void (*link_clicked) (MarkdownTextView *text_view, gchar *uri); void (*hovering_over_link) (MarkdownTextView *text_view, gchar *uri); void (*hovering_over_text) (MarkdownTextView *text_view); void (*file_load_complete) (MarkdownTextView *text_view, gchar *file); }; GtkWidget *markdown_textview_new(); gboolean markdown_textview_load_file(MarkdownTextView * textview, const gchar * file_name); gboolean markdown_textview_set_text(MarkdownTextView * textview, const gchar * text); void markdown_textview_clear(MarkdownTextView * textview); void markdown_textview_set_image_directory(MarkdownTextView * self, const gchar * directory); GType markdown_textview_get_type(); G_END_DECLS #endif /* __MARKDOWN_TEXTVIEW_H__ */ hardinfo2-hardinfo2-1331e88/includes/md5.h000066400000000000000000000015771474767047500202210ustar00rootroot00000000000000/* See md5.c for explanation and copyright information. */ #ifndef MD5_H #define MD5_H /* Unlike previous versions of this code, uint32 need not be exactly 32 bits, merely 32 bits or more. Choosing a data type which is 32 bits instead of 64 is not important; speed is considerably more important. ANSI guarantees that "unsigned long" will be big enough, and always using it seems to have few disadvantages. */ typedef unsigned long uint32; struct MD5Context { uint32 buf[4]; uint32 bits[2]; unsigned char in[64]; }; void MD5Init (struct MD5Context *context); void MD5Update (struct MD5Context *context, unsigned char const *buf, unsigned len); void MD5Final (unsigned char digest[16], struct MD5Context *context); void MD5Transform (uint32 buf[4], const unsigned char in[64]); #endif /* !MD5_H */ hardinfo2-hardinfo2-1331e88/includes/menu.h000066400000000000000000000016301474767047500204660ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef __MENU_H__ #define __MENU_H__ #include void menu_init(Shell *shell); #endif /* __MENU_H__ */ hardinfo2-hardinfo2-1331e88/includes/mips/000077500000000000000000000000001474767047500203215ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/includes/mips/processor-platform.h000066400000000000000000000017621474767047500243410ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef __PROCESSOR_PLATFORM_H__ #define __PROCESSOR_PLATFORM_H__ struct _Processor { gchar *model_name; gchar *vendor_id; gfloat bogomips, cpu_mhz; }; #endif /* __PROCESSOR_PLATFORM_H__ */ hardinfo2-hardinfo2-1331e88/includes/network.h000066400000000000000000000004751474767047500212210ustar00rootroot00000000000000#ifndef __NETWORK_H__ #define __NETWORK_H__ #include "hardinfo.h" extern gchar *smb_shares_list; extern gchar *nfs_shares_list; extern gchar *network_interfaces; extern gchar *network_icons; void scan_net_interfaces(void); void scan_samba(void); void scan_nfs_shared_directories(void); #endif /* __NETWORK_H__ */ hardinfo2-hardinfo2-1331e88/includes/nqueens.h000066400000000000000000000003211474767047500211740ustar00rootroot00000000000000/* * N-Queens Problem Solver * Found somewhere on the Internet; can't remember where. Possibly Wikipedia. */ #ifndef __NQUEENS_H__ #define __NQUEENS_H__ int nqueens(int y); #endif /* __NQUEENS_H__ */ hardinfo2-hardinfo2-1331e88/includes/parisc/000077500000000000000000000000001474767047500206325ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/includes/parisc/processor-platform.h000066400000000000000000000024461474767047500246520ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef __PROCESSOR_PLATFORM_H__ #define __PROCESSOR_PLATFORM_H__ #include "cpu_util.h" struct _Processor { gint id; gfloat cpu_mhz; /* for devices.c, identical to cpukhz_max/1000 */ cpu_topology_data *cputopo; cpufreq_data *cpufreq; gchar *model_name; gchar *vendor_id; gchar *flags; gfloat bogomips; gchar *has_fpu; gchar *strmodel; gchar *cpu_family; gchar *icache_str, *dcache_str; gchar *hversion, *sversion; }; #endif /* __PROCESSOR_PLATFORM_H__ */ hardinfo2-hardinfo2-1331e88/includes/pci_util.h000066400000000000000000000045271474767047500213420ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2017 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef __PCI_UTIL_H__ #define __PCI_UTIL_H__ #include #define SYSFS_PCI_ROOT "/sys/bus/pci/devices" char *pci_address_str(uint32_t dom, uint32_t bus, uint32_t dev, uint32_t func); typedef struct pcid { uint32_t domain; uint32_t bus; uint32_t device; uint32_t function; uint32_t class; uint32_t vendor_id; uint32_t device_id; uint32_t sub_vendor_id; uint32_t sub_device_id; uint32_t revision; char *slot_str; char *class_str; char *vendor_id_str; char *device_id_str; char *sub_vendor_id_str; char *sub_device_id_str; char *driver; /* Kernel driver in use */ char *driver_list; /* Kernel modules */ float pcie_speed_max; /* GT/s */ float pcie_speed_curr; /* GT/s */ uint32_t pcie_width_max; uint32_t pcie_width_curr; /* ... */ } pcid; pcid *pci_get_device(uint32_t dom, uint32_t bus, uint32_t dev, uint32_t func); pcid *pci_get_device_str(const char *addy); #define pcid_new() g_new0(pcid, 1) gint pcid_cmp_by_addy(gconstpointer a, gconstpointer b); void pcid_free(pcid *); typedef GSList* pcid_list; /* examples: * to get all pci devices: * pcid_list list = pci_get_device_list(0, 0); * to get all display controllers: * pcid_list list = pci_get_device_list(0x300, 0x3ff); */ pcid_list pci_get_device_list(uint32_t class_min, uint32_t class_max); #define pcid_list_count(l) g_slist_length(l); #define pcid_list_free(l) g_slist_free_full(l, (GDestroyNotify)pcid_free) const gchar *find_pci_ids_file(); char *pci_lookup_ids_vendor_str(uint32_t id); #endif hardinfo2-hardinfo2-1331e88/includes/ppc/000077500000000000000000000000001474767047500201335ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/includes/ppc/processor-platform.h000066400000000000000000000022511474767047500241450ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef __PROCESSOR_PLATFORM_H__ #define __PROCESSOR_PLATFORM_H__ #include "cpu_util.h" struct _Processor { gint id; gfloat cpu_mhz; /* for devices.c, identical to cpukhz_max/1000 */ cpu_topology_data *cputopo; cpufreq_data *cpufreq; gchar *model_name; gchar *revision; /* gint cache_size; */ gfloat bogomips; }; #endif /* __PROCESSOR_PLATFORM_H__ */ hardinfo2-hardinfo2-1331e88/includes/report.h000066400000000000000000000067151474767047500210460ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef __REPORT_H__ #define __REPORT_H__ #include #include typedef enum { REPORT_FORMAT_HTML, REPORT_FORMAT_TEXT, REPORT_FORMAT_SHELL, N_REPORT_FORMAT } ReportFormat; typedef enum { REPORT_COL_PROGRESS = 1<<0, REPORT_COL_VALUE = 1<<1, REPORT_COL_EXTRA1 = 1<<2, REPORT_COL_EXTRA2 = 1<<3, REPORT_COL_TEXTVALUE= 1<<4 } ReportColumn; typedef struct _ReportDialog ReportDialog; typedef struct _ReportContext ReportContext; struct _ReportContext { ShellModuleEntry *entry; gchar *output; void (*header) (ReportContext *ctx); void (*footer) (ReportContext *ctx); void (*title) (ReportContext *ctx, gchar *text); void (*subtitle) (ReportContext *ctx, gchar *text); void (*subsubtitle) (ReportContext *ctx, gchar *text); void (*keyvalue) (ReportContext *ctx, gchar *key, gchar *value, gsize longest_key); void (*details_start) (ReportContext *ctx, gchar *key, gchar *value, gsize longest_key); void (*details_section) (ReportContext *ctx, gchar *name); void (*details_keyvalue) (ReportContext *ctx, gchar *key, gchar *value, gsize longest_key); void (*details_end) (ReportContext *ctx); ReportFormat format; gboolean first_table; gboolean first_sub_table; gboolean in_details; gboolean show_column_headers; guint columns, parent_columns; GHashTable *column_titles; GHashTable *icon_refs; GHashTable *icon_data; }; struct _ReportDialog { GtkWidget *dialog; GtkWidget *filechooser; GtkWidget *btn_cancel; GtkWidget *btn_generate; GtkWidget *btn_sel_all; GtkWidget *btn_sel_none; GtkWidget *treeview; GtkTreeModel *model; }; void report_dialog_show(GtkTreeModel *model, GtkWidget *parent); ReportContext *report_context_html_new(); ReportContext *report_context_text_new(); ReportContext *report_context_shell_new(); void report_header (ReportContext *ctx); void report_footer (ReportContext *ctx); void report_title (ReportContext *ctx, gchar *text); void report_subtitle (ReportContext *ctx, gchar *text); void report_subsubtitle (ReportContext *ctx, gchar *text); void report_key_value (ReportContext *ctx, gchar *key, gchar *value, gsize longest_key); void report_table (ReportContext *ctx, gchar *text); void report_details (ReportContext *ctx, gchar *key, gchar *value, gchar *details, gsize longest_key); void report_create_from_module_list(ReportContext *ctx, GSList *modules); gchar *report_create_from_module_list_format(GSList *modules, ReportFormat format); void report_context_free(ReportContext *ctx); void report_module_list_free(GSList *modules); #endif /* __REPORT_H__ */ hardinfo2-hardinfo2-1331e88/includes/riscv/000077500000000000000000000000001474767047500204775ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/includes/riscv/processor-platform.h000066400000000000000000000031771474767047500245210ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef __PROCESSOR_PLATFORM_H__ #define __PROCESSOR_PLATFORM_H__ #include "cpu_util.h" typedef struct _ProcessorCache ProcessorCache; struct _ProcessorCache { gint level; gint number_of_sets; gint physical_line_partition; gint size; gchar *type; gint ways_of_associativity; gint uid; /* uid is unique among caches with the same (type, level) */ gchar *shared_cpu_list; /* some kernel's don't give a uid, so try shared_cpu_list */ gint phy_sock; }; struct _Processor { gint id; /* hart */ gfloat cpu_mhz; /* for devices.c, identical to cpukhz_max/1000 */ cpu_topology_data *cputopo; cpufreq_data *cpufreq; gchar *model_name; gchar *mmu, *isa, *uarch; gchar *flags; /* expanded from isa */ gfloat bogomips; /* not used */ GSList *cache; }; #endif /* __PROCESSOR_PLATFORM_H__ */ hardinfo2-hardinfo2-1331e88/includes/s390/000077500000000000000000000000001474767047500200475ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/includes/s390/processor-platform.h000066400000000000000000000022371474767047500240650ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef __PROCESSOR_PLATFORM_H__ #define __PROCESSOR_PLATFORM_H__ #include "cpu_util.h" struct _Processor { gint id; gfloat cpu_mhz; /* for devices.c, identical to cpukhz_max/1000 */ cpu_topology_data *cputopo; cpufreq_data *cpufreq; gchar *model_name; /* vendor_id */ gchar *proc_str; gfloat bogomips; }; #endif /* __PROCESSOR_PLATFORM_H__ */ hardinfo2-hardinfo2-1331e88/includes/sh/000077500000000000000000000000001474767047500177635ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/includes/sh/processor-platform.h000066400000000000000000000020441474767047500237750ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef __PROCESSOR_PLATFORM_H__ #define __PROCESSOR_PLATFORM_H__ struct _Processor { gchar *model_name; gchar *vendor_id; gfloat bogomips, cpu_mhz; gfloat bus_mhz, mod_mhz; gchar *family; }; #endif /* __PROCESSOR_PLATFORM_H__ */ hardinfo2-hardinfo2-1331e88/includes/sha1.h000066400000000000000000000024221474767047500203560ustar00rootroot00000000000000/* * SHA-1 in C * By Steve Reid * Copyright by: hardinfo2 project * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License v2.0 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef __SHA1_H__ #define __SHA1_H__ #include #ifndef LITTLE_ENDIAN #if G_BYTE_ORDER == G_LITTLE_ENDIAN #define LITTLE_ENDIAN /* This should be #define'd if true. */ #endif /* G_BYTE_ORDER */ #endif /* LITTLE_ENDIAN */ typedef struct { guint32 state[20]; guint32 count[2]; guchar buffer[64]; } SHA1_CTX; void SHA1Transform(guint32 state[20], guchar buffer[64]); void SHA1Init(SHA1_CTX* context); void SHA1Update(SHA1_CTX* context, guchar* data, unsigned int len); void SHA1Final(guchar digest[20], SHA1_CTX* context); #endif /* __SHA1_H__ */ hardinfo2-hardinfo2-1331e88/includes/shell.h000066400000000000000000000161751474767047500206430ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef __SHELL_H__ #define __SHELL_H__ #include #include "loadgraph.h" #include "help-viewer.h" typedef struct _Shell Shell; typedef struct _ShellTree ShellTree; typedef struct _ShellInfoTree ShellInfoTree; typedef struct _ShellNote ShellNote; typedef struct _DetailView DetailView; typedef struct _ShellModule ShellModule; typedef struct _ShellModuleMethod ShellModuleMethod; typedef struct _ShellModuleEntry ShellModuleEntry; typedef struct _ShellFieldUpdate ShellFieldUpdate; typedef struct _ShellFieldUpdateSource ShellFieldUpdateSource; typedef enum { SHELL_ORDER_DESCENDING, SHELL_ORDER_ASCENDING, } ShellOrderType; typedef enum { SHELL_PACK_RESIZE = 1 << 0, SHELL_PACK_SHRINK = 1 << 1 } ShellPackOptions; typedef enum { SHELL_VIEW_NORMAL, SHELL_VIEW_DUAL, SHELL_VIEW_LOAD_GRAPH, SHELL_VIEW_PROGRESS, SHELL_VIEW_PROGRESS_DUAL, SHELL_VIEW_DETAIL, SHELL_VIEW_N_VIEWS } ShellViewType; typedef enum { TREE_COL_PBUF, TREE_COL_NAME, TREE_COL_MODULE_ENTRY, TREE_COL_MODULE, TREE_COL_SEL, TREE_NCOL } ShellTreeColumns; typedef enum { INFO_TREE_COL_NAME, INFO_TREE_COL_VALUE, INFO_TREE_COL_DATA, INFO_TREE_COL_PBUF, INFO_TREE_COL_PROGRESS, INFO_TREE_COL_EXTRA1, INFO_TREE_COL_EXTRA2, INFO_TREE_NCOL } ShellInfoTreeColumns; struct _Shell { GtkWidget *window, *vbox; GtkWidget *status, *progress; GtkWidget *notebook; GtkWidget *hbox, *vpaned; GtkWindow *transient_dialog; ShellTree *tree; ShellInfoTree *info_tree; ShellModule *selected_module; ShellModuleEntry *selected; ShellNote *note; DetailView *detail_view; LoadGraph *loadgraph; GtkActionGroup *action_group; GtkUIManager *ui_manager; GSList *merge_ids; ShellViewType view_type; gboolean normalize_percentage; gint _pulses; ShellOrderType _order_type; GKeyFile *hosts; HelpViewer *help_viewer; }; struct _DetailView { GtkWidget *scroll; GtkWidget *view; GtkWidget *detail_box; }; struct _ShellTree { GtkWidget *scroll; GtkWidget *view; GtkTreeModel *model; GtkTreeSelection *selection; GSList *modules; }; struct _ShellInfoTree { GtkWidget *scroll; GtkWidget *view; GtkTreeModel *model; GtkTreeSelection *selection; GtkTreeViewColumn *col_progress, *col_value, *col_extra1, *col_extra2, *col_textvalue; }; struct _ShellNote { GtkWidget *event_box; GtkWidget *label; }; struct _ShellModule { gchar *name; GdkPixbuf *icon; GModule *dll; gconstpointer (*aboutfunc)(void); gchar *(*summaryfunc) (); void (*deinit) (); guchar weight; GSList *entries; }; struct _ShellModuleMethod { gchar *name; gpointer function; }; struct _ShellModuleEntry { gchar *name; GdkPixbuf *icon; gchar *icon_file; gboolean selected; gint number; guint32 flags; gchar *(*func) (); void (*scan_func) (gboolean flag); gchar *(*fieldfunc) (gchar * entry); gchar *(*morefunc) (gchar * entry); gchar *(*notefunc) (gint entry); }; struct _ShellFieldUpdate { ShellModuleEntry *entry; gchar *field_name; }; struct _ShellFieldUpdateSource { guint source_id; ShellFieldUpdate *sfu; }; void shell_init(GSList *modules); void shell_do_reload(gboolean reload); Shell *shell_get_main_shell(); void shell_action_set_enabled(const gchar *action_name, gboolean setting); gboolean shell_action_get_enabled(const gchar *action_name); gboolean shell_action_get_active(const gchar *action_name); void shell_action_set_active(const gchar *action_name, gboolean setting); void shell_action_set_property(const gchar *action_name, const gchar *property, gboolean setting); void shell_set_transient_dialog(GtkWindow *dialog); void shell_set_side_pane_visible(gboolean setting); void shell_set_note_from_entry(ShellModuleEntry *entry); void shell_ui_manager_set_visible(const gchar *path, gboolean setting); void shell_status_update(const gchar *message); void shell_status_pulse(void); void shell_status_set_percentage(gint percentage); void shell_status_set_enabled(gboolean setting); void shell_view_set_enabled(gboolean setting); void shell_clear_timeouts(Shell *shell); void shell_clear_tree_models(Shell *shell); void shell_clear_field_updates(void); void shell_set_title(Shell *shell, char *subtitle); void shell_add_modules_to_gui(gpointer _shell_module, gpointer _shell_tree); /* decode special information in keys * * key syntax: * [$[][]$][#[]] * flags: * [[!][*][^]] * ! = show details (moreinfo) in reports * * = highlight/select this row * ^ = value is/has a vendor string * @ = label is escaped with key_label_escape() */ gboolean key_is_flagged(const gchar *key); /* has $[][]$ at the start of the key */ gboolean key_is_highlighted(const gchar *key); /* flag '*' = select/highlight */ gboolean key_wants_details(const gchar *key); /* flag '!' = report should include the "moreinfo" */ gboolean key_value_has_vendor_string(const gchar *key); /* flag '^' = try and match the value to a vendor */ #define key_label_escape(LBL) (gg_strescape(LBL, NULL, "=$#")) gboolean key_label_is_escaped(const gchar *key); /* flag '@' = the label part is key_label_escape()-d and * needs to be g_strcompress()-ed before use. * key_get_components() will do this automatically for label. */ gchar *key_mi_tag(const gchar *key); /* moreinfo lookup tag */ const gchar *key_get_name(const gchar *key); /* get the key's name, flagged or not */ /* * example for key = "$*!Foo$Bar#7": * flags = "$*!^Foo$" // key_is/wants_*() still works on flags * tag = "Foo" // the moreinfo/icon tag * name = "Bar#7" // the full unique name * label = "Bar" // the label displayed * dis = "7" */ void key_get_components(const gchar *key, gchar **flags, gchar **tag, gchar **name, gchar **label, gchar **dis, gboolean null_empty); #endif /* __SHELL_H__ */ hardinfo2-hardinfo2-1331e88/includes/socket.h000066400000000000000000000022541474767047500210150ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef __HI_SOCKET_H__ #define __HI_SOCKET_H__ typedef struct _Socket Socket; struct _Socket { gint sock; }; Socket *sock_connect(gchar * host, gint port); int sock_write(Socket * s, gchar * str); int sock_read(Socket * s, gchar * buffer, gint size); void sock_close(Socket * s); int sock_ready_to_read(Socket *s); int sock_ready_to_write(Socket *s); #endif /* __HI_SOCKET_H__ */ hardinfo2-hardinfo2-1331e88/includes/sparc/000077500000000000000000000000001474767047500204615ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/includes/sparc/processor-platform.h000066400000000000000000000017721474767047500245020ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef __PROCESSOR_PLATFORM_H__ #define __PROCESSOR_PLATFORM_H__ struct _Processor { gchar *model_name; gchar *has_fpu; gfloat cpu_mhz; gchar *cpucaps; }; #endif /* __PROCESSOR_PLATFORM_H__ */ hardinfo2-hardinfo2-1331e88/includes/spd-decode.h000066400000000000000000001125101474767047500215310ustar00rootroot00000000000000/* * spd-decode.h including SPD vendor database * Copyright (c) 2024 hwspeedy * * Based on decode-dimms.pl * Copyright 1998, 1999 Philip Edelbrock * modified by Christian Zuckschwerdt * modified by Burkart Lingner * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #define UNKIFNULL2(f) ((f) ? f : _("(Unknown)")) #define UNKIFEMPTY2(f) ((*f) ? f : _("(Unknown)")) #define STR_IGNORE(str, ignore) if (SEQ(str, ignore)) { *str = 0; null_if_empty(&str); } #define GET_RAM_TYPE_STR(rt) (ram_types[(rt < N_RAM_TYPES) ? rt : 0]) #define UNKNOWN_MEM_TYPE_STRING _("RAM") typedef enum { UNKNOWN = 0, DIRECT_RAMBUS = 1, RAMBUS = 2, FPM_DRAM = 3, EDO = 4, PIPELINED_NIBBLE = 5, SDR_SDRAM = 6, MULTIPLEXED_ROM = 7, DDR_SGRAM = 8, DDR_SDRAM = 9, DDR2_SDRAM = 10, DDR3_SDRAM = 11, DDR4_SDRAM = 12, DDR5_SDRAM = 13, N_RAM_TYPES = 14 } RamType; static const char *ram_types[] = { "Unknown", "Direct Rambus", "Rambus", "FPM DRAM", "EDO", "Pipelined Nibble", "SDR SDRAM", "Multiplexed ROM", "DDR SGRAM", "DDR SDRAM", "DDR2 SDRAM", "DDR3 SDRAM", "DDR4 SDRAM", "DDR5 SDRAM" }; typedef uint32_t dmi_mem_size; struct dmi_mem_socket; typedef struct { unsigned char *bytes;//allocated char dev[32]; int spd_size; RamType type; int vendor_bank; int vendor_index; int dram_vendor_bank; int dram_vendor_index; char partno[32]; char serialno[32]; const char *form_factor; char type_detail[256]; dmi_mem_size size_MiB; int spd_rev_major; int spd_rev_minor; int week, year; gboolean ddr4_no_ee1004; int match_score; const char *spd_driver;//link to static const char *vendor_str;//links to static const char *dram_vendor_str;//links to static const struct dmi_mem_socket *dmi_socket;//links const Vendor *vendor;//links const Vendor *dram_vendor;//links } spd_data; GSList *spd_scan(); gchar *make_spd_section(spd_data *spd); void spd_data_free(spd_data *s); /* from decode-dimms, in the i2c-tools package: * https://mirrors.edge.kernel.org/pub/software/utils/i2c-tools/ * * STANDARD MANUFACTURERS IDENTIFICATION CODEs * as defined in JEP106 * * As of: 13 August 2024 */ #define VENDORS_BANKS 13 #define VENDORS_ITEMS 128 #define JEDEC_MFG_STR(b,i) ( (b >= 0 && b < VENDORS_BANKS && i < VENDORS_ITEMS) ? vendors[(b)][(i)] : NULL ) static const char* vendors[VENDORS_BANKS][VENDORS_ITEMS] = { {"AMD", "AMI", "Fairchild", "Fujitsu", "GTE", "Harris", "Hitachi", "Inmos", "Intel", "I.T.T.", "Intersil", "Monolithic Memories", "Mostek", "Freescale (former Motorola)", "National", "NEC", "RCA", "Raytheon", "Conexant (Rockwell)", "Seeq", "NXP (former Signetics, Philips Semi.)", "Synertek", "Texas Instruments", "Kioxia Corporation (former Toshiba Memory Corporation)", "Xicor", "Zilog", "Eurotechnique", "Mitsubishi", "Lucent (AT&T)", "Exel", "Atmel", "STMicroelectronics (former SGS/Thomson)", "Lattice Semi.", "NCR", "Wafer Scale Integration", "IBM", "Tristar", "Visic", "Intl. CMOS Technology", "SSSI", "MicrochipTechnology", "Ricoh Ltd.", "VLSI", "Micron Technology", "SK Hynix (former Hyundai Electronics)", "OKI Semiconductor", "ACTEL", "Sharp", "Catalyst", "Panasonic", "IDT", "Cypress", "DEC", "LSI Logic", "Zarlink (former Plessey)", "UTMC", "Thinking Machine", "Thomson CSF", "Integrated CMOS (Vertex)", "Honeywell", "Tektronix", "Oracle Corporation (former Sun Microsystems)", "Silicon Storage Technology", "ProMos/Mosel Vitelic", "Infineon (former Siemens)", "Macronix", "Xerox", "Plus Logic", "Western Digital Technologies (former SanDisk Corporation)", "Elan Circuit Tech.", "European Silicon Str.", "Apple Computer", "Xilinx", "Compaq", "Protocol Engines", "SCI", "Seiko Instruments", "Samsung", "I3 Design System", "Klic", "Crosspoint Solutions", "Alliance Memory Inc", "Tandem", "Hewlett-Packard", "Integrated Silicon Solutions", "Brooktree", "New Media", "MHS Electronic", "Performance Semi.", "Winbond Electronic", "Kawasaki Steel", "Bright Micro", "TECMAR", "Exar", "PCMCIA", "LG Semi (former Goldstar)", "Northern Telecom", "Sanyo", "Array Microsystems", "Crystal Semiconductor", "Analog Devices", "PMC-Sierra", "Asparix", "Convex Computer", "Quality Semiconductor", "Nimbus Technology", "Transwitch", "Micronas (ITT Intermetall)", "Cannon", "Altera", "NEXCOM", "QUALCOMM", "Sony", "Cray Research", "AMS(Austria Micro)", "Vitesse", "Aster Electronics", "Bay Networks (Synoptic)", "Zentrum or ZMD", "TRW", "Thesys", "Solbourne Computer", "Allied-Signal", "Dialog", "Media Vision", "Numonyx Corporation (former Level One Communication)"}, {"Cirrus Logic", "National Instruments", "ILC Data Device", "Alcatel Mietec", "Micro Linear", "Univ. of NC", "JTAG Technologies", "BAE Systems", "Nchip", "Galileo Tech", "Bestlink Systems", "Graychip", "GENNUM", "VideoLogic", "Robert Bosch", "Chip Express", "DATARAM", "United Microelec Corp.", "TCSI", "Smart Modular", "Hughes Aircraft", "Lanstar Semiconductor", "Qlogic", "Kingston", "Music Semi", "Ericsson Components", "SpaSE", "Eon Silicon Devices", "Integrated Silicon Solution (ISSI) (former Programmable Micro Corp)", "DoD", "Integ. Memories Tech.", "Corollary Inc.", "Dallas Semiconductor", "Omnivision", "EIV(Switzerland)", "Novatel Wireless", "Zarlink (former Mitel)", "Clearpoint", "Cabletron", "STEC (former Silicon Technology)", "Vanguard", "Hagiwara Sys-Com", "Vantis", "Celestica", "Century", "Hal Computers", "Rohm Company Ltd.", "Juniper Networks", "Libit Signal Processing", "Mushkin Enhanced Memory", "Tundra Semiconductor", "Adaptec Inc.", "LightSpeed Semi.", "ZSP Corp.", "AMIC Technology", "Adobe Systems", "Dynachip", "PNY Technologies Inc. (former PNY Electronics)", "Newport Digital", "MMC Networks", "T Square", "Seiko Epson", "Broadcom", "Viking Components", "V3 Semiconductor", "Flextronics (former Orbit)", "Suwa Electronics", "Transmeta", "Micron CMS", "American Computer & Digital Components Inc", "Enhance 3000 Inc", "Tower Semiconductor", "CPU Design", "Price Point", "Maxim Integrated Product", "Tellabs", "Centaur Technology", "Unigen Corporation", "Transcend Information", "Memory Card Technology", "CKD Corporation Ltd.", "Capital Instruments, Inc.", "Aica Kogyo, Ltd.", "Linvex Technology", "MSC Vertriebs GmbH", "AKM Company, Ltd.", "Dynamem, Inc.", "NERA ASA", "GSI Technology", "Dane-Elec (C Memory)", "Acorn Computers", "Lara Technology", "Oak Technology, Inc.", "Itec Memory", "Tanisys Technology", "Truevision", "Wintec Industries", "Super PC Memory", "MGV Memory", "Galvantech", "Gadzoox Nteworks", "Multi Dimensional Cons.", "GateField", "Integrated Memory System", "Triscend", "XaQti", "Goldenram", "Clear Logic", "Cimaron Communications", "Nippon Steel Semi. Corp.", "Advantage Memory", "AMCC", "LeCroy", "Yamaha Corporation", "Digital Microwave", "NetLogic Microsystems", "MIMOS Semiconductor", "Advanced Fibre", "BF Goodrich Data.", "Epigram", "Acbel Polytech Inc.", "Apacer Technology", "Admor Memory", "FOXCONN", "Quadratics Superconductor", "3COM"}, {"Camintonn Corporation", "ISOA Incorporated", "Agate Semiconductor", "ADMtek Incorporated", "HYPERTEC", "Adhoc Technologies", "MOSAID Technologies", "Ardent Technologies", "Switchcore", "Cisco Systems, Inc.", "Allayer Technologies", "WorkX AG (Wichman)", "Oasis Semiconductor", "Novanet Semiconductor", "E-M Solutions", "Power General", "Advanced Hardware Arch.", "Inova Semiconductors GmbH", "Telocity", "Delkin Devices", "Symagery Microsystems", "C-Port Corporation", "SiberCore Technologies", "Southland Microsystems", "Malleable Technologies", "Kendin Communications", "Great Technology Microcomputer", "Sanmina Corporation", "HADCO Corporation", "Corsair", "Actrans System Inc.", "ALPHA Technologies", "Silicon Laboratories, Inc. (Cygnal)", "Artesyn Technologies", "Align Manufacturing", "Peregrine Semiconductor", "Chameleon Systems", "Aplus Flash Technology", "MIPS Technologies", "Chrysalis ITS", "ADTEC Corporation", "Kentron Technologies", "Win Technologies", "Tezzaron Semiconductor (former Tachyon Semiconductor)", "Extreme Packet Devices", "RF Micro Devices", "Siemens AG", "Sarnoff Corporation", "Itautec SA (former Itautec Philco SA)", "Radiata Inc.", "Benchmark Elect. (AVEX)", "Legend", "SpecTek Incorporated", "Hi/fn", "Enikia Incorporated", "SwitchOn Networks", "AANetcom Incorporated", "Micro Memory Bank", "ESS Technology", "Virata Corporation", "Excess Bandwidth", "West Bay Semiconductor", "DSP Group", "Newport Communications", "Chip2Chip Incorporated", "Phobos Corporation", "Intellitech Corporation", "Nordic VLSI ASA", "Ishoni Networks", "Silicon Spice", "Alchemy Semiconductor", "Agilent Technologies", "Centillium Communications", "W.L. Gore", "HanBit Electronics", "GlobeSpan", "Element 14", "Pycon", "Saifun Semiconductors", "Sibyte, Incorporated", "MetaLink Technologies", "Feiya Technology", "I & C Technology", "Shikatronics", "Elektrobit", "Megic", "Com-Tier", "Malaysia Micro Solutions", "Hyperchip", "Gemstone Communications", "Anadigm (former Anadyne)", "3ParData", "Mellanox Technologies", "Tenx Technologies", "Helix AG", "Domosys", "Skyup Technology", "HiNT Corporation", "Chiaro", "MDT Technologies GmbH (former MCI Computer GMBH)", "Exbit Technology A/S", "Integrated Technology Express", "AVED Memory", "Legerity", "Jasmine Networks", "Caspian Networks", "nCUBE", "Silicon Access Networks", "FDK Corporation", "High Bandwidth Access", "MultiLink Technology", "BRECIS", "World Wide Packets", "APW", "Chicory Systems", "Xstream Logic", "Fast-Chip", "Zucotto Wireless", "Realchip", "Galaxy Power", "eSilicon", "Morphics Technology", "Accelerant Networks", "Silicon Wave", "SandCraft", "Elpida"}, {"Solectron", "Optosys Technologies", "Buffalo (former Melco)", "TriMedia Technologies", "Cyan Technologies", "Global Locate", "Optillion", "Terago Communications", "Ikanos Communications", "Princeton Technology", "Nanya Technology", "Elite Flash Storage", "Mysticom", "LightSand Communications", "ATI Technologies", "Agere Systems", "NeoMagic", "AuroraNetics", "Golden Empire", "Mushkin", "Tioga Technologies", "Netlist", "TeraLogic", "Cicada Semiconductor", "Centon Electronics", "Tyco Electronics", "Magis Works", "Zettacom", "Cogency Semiconductor", "Chipcon AS", "Aspex Technology", "F5 Networks", "Programmable Silicon Solutions", "ChipWrights", "Acorn Networks", "Quicklogic", "Kingmax Semiconductor", "BOPS", "Flasys", "BitBlitz Communications", "eMemory Technology", "Procket Networks", "Purple Ray", "Trebia Networks", "Delta Electronics", "Onex Communications", "Ample Communications", "Memory Experts Intl", "Astute Networks", "Azanda Network Devices", "Dibcom", "Tekmos", "API NetWorks", "Bay Microsystems", "Firecron Ltd", "Resonext Communications", "Tachys Technologies", "Equator Technology", "Concept Computer", "SILCOM", "3Dlabs", "c't Magazine", "Sanera Systems", "Silicon Packets", "Viasystems Group", "Simtek", "Semicon Devices Singapore", "Satron Handelsges", "Improv Systems", "INDUSYS GmbH", "Corrent", "Infrant Technologies", "Ritek Corp", "empowerTel Networks", "Hypertec", "Cavium Networks", "PLX Technology", "Massana Design", "Intrinsity", "Valence Semiconductor", "Terawave Communications", "IceFyre Semiconductor", "Primarion", "Picochip Designs Ltd", "Silverback Systems", "Jade Star Technologies", "Pijnenburg Securealink", "takeMS - Ultron AG (former Memorysolution GmbH)", "Cambridge Silicon Radio", "Swissbit", "Nazomi Communications", "eWave System", "Rockwell Collins", "Picocel Co., Ltd.", "Alphamosaic Ltd", "Sandburst", "SiCon Video", "NanoAmp Solutions", "Ericsson Technology", "PrairieComm", "Mitac International", "Layer N Networks", "MtekVision", "Allegro Networks", "Marvell Semiconductors", "Netergy Microelectronic", "NVIDIA", "Internet Machines", "Memorysolution GmbH (former Peak Electronics)", "Litchfield Communication", "Accton Technology", "Teradiant Networks", "Scaleo Chip (former Europe Technologies)", "Cortina Systems", "RAM Components", "Raqia Networks", "ClearSpeed", "Matsushita Battery", "Xelerated", "SimpleTech", "Utron Technology", "Astec International", "AVM gmbH", "Redux Communications", "Dot Hill Systems", "TeraChip"}, {"T-RAM Incorporated", "Innovics Wireless", "Teknovus", "KeyEye Communications", "Runcom Technologies", "RedSwitch", "Dotcast", "Silicon Mountain Memory", "Signia Technologies", "Pixim", "Galazar Networks", "White Electronic Designs", "Patriot Scientific", "Neoaxiom Corporation", "3Y Power Technology", "Scaleo Chip (former Europe Technologies)", "Potentia Power Systems", "C-guys Incorporated", "Digital Communications Technology Incorporated", "Silicon-Based Technology", "Fulcrum Microsystems", "Positivo Informatica Ltd", "XIOtech Corporation", "PortalPlayer", "Zhiying Software", "Parker Vision, Inc. (former Direct2Data)", "Phonex Broadband", "Skyworks Solutions", "Entropic Communications", "I'M Intelligent Memory Ltd (former Pacific Force Technology)", "Zensys A/S", "Legend Silicon Corp.", "sci-worx GmbH", "SMSC (former Oasis Silicon Systems)", "Renesas Electronics (former Renesas Technology)", "Raza Microelectronics", "Phyworks", "MediaTek", "Non-cents Productions", "US Modular", "Wintegra Ltd", "Mathstar", "StarCore", "Oplus Technologies", "Mindspeed", "Just Young Computer", "Radia Communications", "OCZ", "Emuzed", "LOGIC Devices", "Inphi Corporation", "Quake Technologies", "Vixel", "SolusTek", "Kongsberg Maritime", "Faraday Technology", "Altium Ltd.", "Insyte", "ARM Ltd.", "DigiVision", "Vativ Technologies", "Endicott Interconnect Technologies", "Pericom", "Bandspeed", "LeWiz Communications", "CPU Technology", "Ramaxel Technology", "DSP Group", "Axis Communications", "Legacy Electronics", "Chrontel", "Powerchip Semiconductor", "MobilEye Technologies", "Excel Semiconductor", "A-DATA Technology", "VirtualDigm", "G Skill Intl", "Quanta Computer", "Yield Microelectronics", "Afa Technologies", "KINGBOX Technology Co. Ltd.", "Ceva", "iStor Networks", "Advance Modules", "Microsoft", "Open-Silicon", "Goal Semiconductor", "ARC International", "Simmtec", "Metanoia", "Key Stream", "Lowrance Electronics", "Adimos", "SiGe Semiconductor", "Fodus Communications", "Credence Systems Corp.", "Genesis Microchip Inc.", "Vihana, Inc.", "WIS Technologies", "GateChange Technologies", "High Density Devices AS", "Synopsys", "Gigaram", "Enigma Semiconductor Inc.", "Century Micro Inc.", "Icera Semiconductor", "Mediaworks Integrated Systems", "O'Neil Product Development", "Supreme Top Technology Ltd.", "MicroDisplay Corporation", "Team Group Inc.", "Sinett Corporation", "Toshiba Corporation", "Tensilica", "SiRF Technology", "Bacoc Inc.", "SMaL Camera Technologies", "Thomson SC", "Airgo Networks", "Wisair Ltd.", "SigmaTel", "Arkados", "Compete IT gmbH Co. KG", "Eudar Technology Inc.", "Focus Enhancements", "Xyratex"}, {"Specular Networks", "Patriot Memory", "U-Chip Technology Corp.", "Silicon Optix", "Greenfield Networks", "CompuRAM GmbH", "Stargen, Inc.", "NetCell Corporation", "Excalibrus Technologies Ltd", "SCM Microsystems", "Xsigo Systems, Inc.", "CHIPS & Systems Inc", "Tier 1 Multichip Solutions", "CWRL Labs", "Teradici", "Gigaram, Inc.", "g2 Microsystems", "PowerFlash Semiconductor", "P.A. Semi, Inc.", "NovaTech Solutions, S.A.", "c2 Microsystems, Inc.", "Level5 Networks", "COS Memory AG", "Innovasic Semiconductor", "02IC Co. Ltd", "Tabula, Inc.", "Crucial Technology", "Chelsio Communications", "Solarflare Communications", "Xambala Inc.", "EADS Astrium", "Terra Semiconductor Inc. (former ATO Semicon Co. Ltd.)", "Imaging Works, Inc.", "Astute Networks, Inc.", "Tzero", "Emulex", "Power-One", "Pulse~LINK Inc.", "Hon Hai Precision Industry", "White Rock Networks Inc.", "Telegent Systems USA, Inc.", "Atrua Technologies, Inc.", "Acbel Polytech Inc.", "eRide Inc.","ULi Electronics Inc.", "Magnum Semiconductor Inc.", "neoOne Technology, Inc.", "Connex Technology, Inc.", "Stream Processors, Inc.", "Focus Enhancements", "Telecis Wireless, Inc.", "uNav Microelectronics", "Tarari, Inc.", "Ambric, Inc.", "Newport Media, Inc.", "VMTS", "Enuclia Semiconductor, Inc.", "Virtium Technology Inc.", "Solid State System Co., Ltd.", "Kian Tech LLC", "Artimi", "Power Quotient International", "Avago Technologies", "ADTechnology", "Sigma Designs", "SiCortex, Inc.", "Ventura Technology Group", "eASIC", "M.H.S. SAS", "Micro Star International", "Rapport Inc.", "Makway International", "Broad Reach Engineering Co.", "Semiconductor Mfg Intl Corp", "SiConnect", "FCI USA Inc.", "Validity Sensors", "Coney Technology Co. Ltd.", "Spans Logic", "Neterion Inc.", "Qimonda", "New Japan Radio Co. Ltd.", "Velogix", "Montalvo Systems", "iVivity Inc.", "Walton Chaintech", "AENEON", "Lorom Industrial Co. Ltd.", "Radiospire Networks", "Sensio Technologies, Inc.", "Nethra Imaging", "Hexon Technology Pte Ltd", "CompuStocx (CSX)", "Methode Electronics, Inc.", "Connect One Ltd.", "Opulan Technologies", "Septentrio NV", "Goldenmars Technology Inc.", "Kreton Corporation", "Cochlear Ltd.", "Altair Semiconductor", "NetEffect, Inc.", "Spansion, Inc.", "Taiwan Semiconductor Mfg", "Emphany Systems Inc.", "ApaceWave Technologies", "Mobilygen Corporation", "Tego", "Cswitch Corporation", "Haier (Beijing) IC Design Co.", "MetaRAM", "Axel Electronics Co. Ltd.", "Tilera Corporation", "Aquantia", "Vivace Semiconductor", "Redpine Signals", "Octalica", "InterDigital Communications", "Avant Technology", "Asrock, Inc.", "Availink", "Quartics, Inc.", "Element CXI", "Innovaciones Microelectronicas", "VeriSilicon Microelectronics", "W5 Networks"}, {"MOVEKING", "Mavrix Technology, Inc.", "CellGuide Ltd.", "Faraday Technology", "Diablo Technologies, Inc.", "Jennic", "Octasic", "Molex Incorporated", "3Leaf Networks", "Bright Micron Technology", "Netxen", "NextWave Broadband Inc.", "DisplayLink", "ZMOS Technology", "Tec-Hill", "Multigig, Inc.", "Amimon", "Euphonic Technologies, Inc.", "BRN Phoenix", "InSilica", "Ember Corporation", "Avexir Technologies Corporation", "Echelon Corporation", "Edgewater Computer Systems", "XMOS Semiconductor Ltd.", "GENUSION, Inc.", "Memory Corp NV", "SiliconBlue Technologies", "Rambus Inc.", "Andes Technology Corporation", "Coronis Systems", "Achronix Semiconductor", "Siano Mobile Silicon Ltd.", "Semtech Corporation", "Pixelworks Inc.", "Gaisler Research AB", "Teranetics", "Toppan Printing Co. Ltd.", "Kingxcon", "Silicon Integrated Systems", "I-O Data Device, Inc.", "NDS Americas Inc.", "Solomon Systech Limited", "On Demand Microelectronics", "Amicus Wireless Inc.", "SMARDTV SNC", "Comsys Communication Ltd.", "Movidia Ltd.", "Javad GNSS, Inc.", "Montage Technology Group", "Trident Microsystems", "Super Talent", "Optichron, Inc.", "Future Waves UK Ltd.", "SiBEAM, Inc.", "Inicore, Inc.", "Virident Systems", "M2000, Inc.", "ZeroG Wireless, Inc.", "Gingle Technology Co. Ltd.", "Space Micro Inc.", "Wilocity", "Novafora, Inc.", "iKoa Corporation", "ASint Technology", "Ramtron", "Plato Networks Inc.", "IPtronics AS", "Infinite-Memories", "Parade Technologies Inc.", "Dune Networks", "GigaDevice Semiconductor", "Modu Ltd.", "CEITEC", "Northrop Grumman", "XRONET Corporation", "Sicon Semiconductor AB", "Atla Electronics Co. Ltd.", "TOPRAM Technology", "Silego Technology Inc.", "Kinglife", "Ability Industries Ltd.", "Silicon Power Computer & Communications", "Augusta Technology, Inc.", "Nantronics Semiconductors", "Hilscher Gesellschaft", "Quixant Ltd.", "Percello Ltd.", "NextIO Inc.", "Scanimetrics Inc.", "FS-Semi Company Ltd.", "Infinera Corporation", "SandForce Inc.", "Lexar Media", "Teradyne Inc.", "Memory Exchange Corp.", "Suzhou Smartek Electronics", "Avantium Corporation", "ATP Electronics Inc.", "Valens Semiconductor Ltd", "Agate Logic, Inc.", "Netronome", "Zenverge, Inc.", "N-trig Ltd", "SanMax Technologies Inc.", "Contour Semiconductor Inc.", "TwinMOS", "Silicon Systems, Inc.", "V-Color Technology Inc.", "Certicom Corporation", "JSC ICC Milandr", "PhotoFast Global Inc.", "InnoDisk Corporation", "Muscle Power", "Energy Micro", "Innofidei", "CopperGate Communications", "Holtek Semiconductor Inc.", "Myson Century, Inc.", "FIDELIX", "Red Digital Cinema", "Densbits Technology", "Zempro", "MoSys", "Provigent", "Triad Semiconductor, Inc."}, {"Siklu Communication Ltd.", "A Force Manufacturing Ltd.", "Strontium", "ALi Corp (former Abilis Systems)", "Siglead, Inc.", "Ubicom, Inc.", "Unifosa Corporation", "Stretch, Inc.", "Lantiq Deutschland GmbH", "Visipro", "EKMemory", "Microelectronics Institute ZTE", "u-blox AG (former Cognovo Ltd)", "Carry Technology Co. Ltd.", "Nokia", "King Tiger Technology", "Sierra Wireless", "HT Micron", "Albatron Technology Co. Ltd.", "Leica Geosystems AG", "BroadLight", "AEXEA", "ClariPhy Communications, Inc.", "Green Plug", "Design Art Networks", "Mach Xtreme Technology Ltd.", "ATO Solutions Co. Ltd.", "Ramsta", "Greenliant Systems, Ltd.", "Teikon", "Antec Hadron", "NavCom Technology, Inc.", "Shanghai Fudan Microelectronics", "Calxeda, Inc.", "JSC EDC Electronics", "Kandit Technology Co. Ltd.", "Ramos Technology", "Goldenmars Technology", "XeL Technology Inc.", "Newzone Corporation", "ShenZhen MercyPower Tech", "Nanjing Yihuo Technology", "Nethra Imaging Inc.", "SiTel Semiconductor BV", "SolidGear Corporation", "Topower Computer Ind Co Ltd.", "Wilocity", "Profichip GmbH", "Gerad Technologies", "Ritek Corporation", "Gomos Technology Limited", "Memoright Corporation", "D-Broad, Inc.", "HiSilicon Technologies", "Syndiant Inc.", "Enverv Inc.", "Cognex", "Xinnova Technology Inc.", "Ultron AG", "Concord Idea Corporation", "AIM Corporation", "Lifetime Memory Products", "Ramsway", "Recore Systems BV", "Haotian Jinshibo Science Tech", "Being Advanced Memory", "Adesto Technologies", "Giantec Semiconductor, Inc.", "HMD Electronics AG", "Gloway International (HK)", "Kingcore", "Anucell Technology Holding", "Accord Software & Systems Pvt. Ltd.", "Active-Semi Inc.", "Denso Corporation", "TLSI Inc.", "Shenzhen Daling Electronic Co. Ltd.", "Mustang", "Orca Systems", "Passif Semiconductor", "GigaDevice Semiconductor (Beijing) Inc.", "Memphis Electronic", "Beckhoff Automation GmbH", "Harmony Semiconductor Corp (former ProPlus Design Solutions)", "Air Computers SRL", "TMT Memory", "Eorex Corporation", "Xingtera", "Netsol", "Bestdon Technology Co. Ltd.", "Baysand Inc.", "Uroad Technology Co. Ltd. (former Triple Grow Industrial Ltd.)", "Wilk Elektronik S.A.", "AAI", "Harman", "Berg Microelectronics Inc.", "ASSIA, Inc.", "Visiontek Products LLC", "OCMEMORY", "Welink Solution Inc.", "Shark Gaming", "Avalanche Technology", "R&D Center ELVEES OJSC", "KingboMars Technology Co. Ltd.", "High Bridge Solutions Industria Eletronica", "Transcend Technology Co. Ltd.", "Everspin Technologies", "Hon-Hai Precision", "Smart Storage Systems", "Toumaz Group", "Zentel Electronics Corporation", "Panram International Corporation", "Silicon Space Technology", "LITE-ON IT Corporation", "Inuitive", "HMicro", "BittWare Inc.", "GLOBALFOUNDRIES", "ACPI Digital Co. Ltd", "Annapurna Labs", "AcSiP Technology Corporation", "Idea! Electronic Systems", "Gowe Technology Co. Ltd", "Hermes Testing Solutions Inc.", "Positivo BGH", "Intelligence Silicon Technology"}, {"3D PLUS", "Diehl Aerospace", "Fairchild", "Mercury Systems", "Sonics Inc.", "Emerson Automation Solutions (former ICC/GE Intelligent Platforms)", "Shenzhen Jinge Information Co. Ltd", "SCWW", "Silicon Motion Inc.", "Anurag", "King Kong", "FROM30 Co. Ltd", "Gowin Semiconductor Corp", "Fremont Micro Devices Ltd", "Ericsson Modems", "Exelis", "Satixfy Ltd", "Galaxy Microsystems Ltd", "Gloway International Co. Ltd", "Lab", "Smart Energy Instruments", "Approved Memory Corporation", "Axell Corporation", "Essencore Limited (former ISD Technology Limited)", "Phytium", "Xi’an UniIC Semiconductors Co Ltd (former Xi'an SinoChip Semiconductor)", "Ambiq Micro", "eveRAM Technology Inc.", "Infomax", "Butterfly Network Inc.", "Shenzhen City Gcai Electronics", "Stack Devices Corporation", "ADK Media Group", "TSP Global Co. Ltd", "HighX", "Shenzhen Elicks Technology", "ISSI/Chingis", "Google Inc.", "Dasima International Development", "Leahkinn Technology Limited", "HIMA Paul Hildebrandt GmbH Co KG", "Keysight Technologies", "Techcomp International (Fastable)", "Ancore Technology Corporation", "Nuvoton", "Korea Uhbele International Group Ltd", "Ikegami Tsushinki Co. Ltd", "RelChip Inc.", "Baikal Electronics", "Nemostech Inc.", "Memorysolution GmbH", "Silicon Integrated Systems Corporation", "Xiede", "BRC (former Multilaser Components)", "Flash Chi", "Jone", "GCT Semiconductor Inc.", "Hong Kong Zetta Device Technology", "Unimemory Technology(s) Pte Ltd", "Cuso", "Kuso", "Uniquify Inc.", "Skymedi Corporation", "Core Chance Co. Ltd", "Tekism Co. Ltd", "Seagate Technology PLC", "Hong Kong Gaia Group Co. Limited", "Gigacom Semiconductor LLC", "V2 Technologies", "TLi", "Neotion", "Lenovo", "Shenzhen Zhongteng Electronic Corp. Ltd", "Compound Photonics", "In2H2 Inc (former Cognimem Technologies Inc)", "Shenzhen Pango Microsystems Co. Ltd", "Vasekey", "Cal-Comp Industria de Semicondutores", "Eyenix Co. Ltd", "Heoriady", "Accelerated Memory Production Inc.", "INVECAS Inc.", "AP Memory", "Douqi Technology", "Etron Technology Inc.", "Indie Semiconductor", "Socionext Inc.", "HGST", "EVGA", "Audience Inc.", "EpicGear", "Vitesse Enterprise Co.", "Foxtronn International Corporation", "Bretelon Inc.", "Graphcore", "Eoplex Inc", "MaxLinear Inc", "ETA Devices", "LOKI", "IMS Electronics Co Ltd", "Dosilicon Co Ltd", "Dolphin Integration", "Shenzhen Mic Electronics Technolog", "Boya Microelectronics Inc", "Geniachip (Roche)", "Axign", "Kingred Electronic Technology Ltd", "Chao Yue Zhuo Computer Business Dept.", "Guangzhou Si Nuo Electronic Technology.", "Crocus Technology Inc", "Creative Chips GmbH", "GE Aviation Systems LLC.", "Asgard", "Good Wealth Technology Ltd", "TriCor Technologies", "Nova-Systems GmbH", "JUHOR", "Zhuhai Douke Commerce Co Ltd", "DSL Memory", "Anvo-Systems Dresden GmbH", "Realtek", "AltoBeam", "Wave Computing", "Beijing TrustNet Technology Co Ltd", "Innovium Inc", "Starsway Technology Limited"}, {"Weltronics Co LTD", "VMware Inc", "Hewlett Packard Enterprise", "INTENSO", "Puya Semiconductor", "MEMORFI", "MSC Technologies GmbH", "Txrui", "SiFive Inc", "Spreadtrum Communications", "XTX Technology Limited", "UMAX Technology", "Shenzhen Yong Sheng Technology", "SNOAMOO (Shenzhen Kai Zhuo Yue)", "Daten Tecnologia LTDA", "Shenzhen XinRuiYan Electronics", "Eta Compute", "Energous", "Raspberry Pi Trading Ltd", "Shenzhen Chixingzhe Tech Co Ltd", "Silicon Mobility", "IQ-Analog Corporation", "Uhnder Inc", "Impinj", "DEPO Computers", "Nespeed Sysems", "Yangtze Memory Technologies Co Ltd", "MemxPro Inc", "Tammuz Co Ltd", "Allwinner Technology", "Shenzhen City Futian District Qing Xuan Tong Computer Trading Firm", "XMC", "Teclast", "Maxsun", "Haiguang Integrated Circuit Design", "RamCENTER Technology", "Phison Electronics Corporation", "Guizhou Huaxintong Semi-Conductor", "Network Intelligence", "Continental Technology (Holdings)", "Guangzhou Huayan Suning Electronic", "Guangzhou Zhouji Electronic Co Ltd", "Shenzhen Giant Hui Kang Tech Co Ltd", "Shenzhen Yilong Innovative Co Ltd", "Neo Forza", "Lyontek Inc", "Shanghai Kuxin Microelectronics Ltd", "Shenzhen Larix Technology Co Ltd", "Qbit Semiconductor Ltd", "Insignis Technology Corporation", "Lanson Memory Co Ltd", "Shenzhen Superway Electronics Co Ltd", "Canaan-Creative Co Ltd", "Black Diamond Memory", "Shenzhen City Parker Baking Electronics", "Shenzhen Baihong Technology Co Ltd", "GEO Semiconductors", "OCPC", "Artery Technology Co Ltd", "Jinyu", "ShenzhenYing Chi Technology Development", "Shenzhen Pengcheng Xin Technology", "Pegasus Semiconductor (Shanghai) Co", "Mythic Inc", "Elmos Semiconductor AG", "Kllisre", "Shenzhen Winconway Technology", "Shenzhen Xingmem Technology Corp", "Gold Key Technology Co Ltd", "Habana Labs Ltd", "Hoodisk Electronics Co Ltd", "SemsoTai (SZ) Technology Co Ltd", "OM Nanotech Pvt. Ltd", "Shenzhen Zhifeng Weiye Technology", "Xinshirui (Shenzhen) Electronics Co", "Guangzhou Zhong Hao Tian Electronic", "Shenzhen Longsys Electronics Co Ltd", "Deciso B.V.", "Puya Semiconductor (Shenzhen)", "Shenzhen Veineda Technology Co Ltd", "Antec Memory", "Cortus SAS", "Dust Leopard", "MyWo AS", "J&A Information Inc", "Shenzhen JIEPEI Technology Co Ltd", "Heidelberg University", "Flexxon PTE Ltd", "Wiliot", "Raysun Electronics International Ltd", "Aquarius Production Company LLC", "MACNICA DHW LTDA", "Intelimem", "Zbit Semiconductor Inc", "Shenzhen Technology Co Ltd", "Signalchip", "Shenzen Recadata Storage Technology", "Hyundai Technology", "Shanghai Fudi Investment Development", "Aixi Technology", "Tecon MT", "Onda Electric Co Ltd", "Jinshen", "Kimtigo Semiconductor (HK) Limited", "IIT Madras", "Shenshan (Shenzhen) Electronic", "Hefei Core Storage Electronic Limited", "Colorful Technology Ltd", "Visenta (Xiamen) Technology Co Ltd", "Roa Logic BV", "NSITEXE Inc", "Hong Kong Hyunion Electronics", "ASK Technology Group Limited", "GIGA-BYTE Technology Co Ltd", "Terabyte Co Ltd", "Hyundai Inc", "EXCELERAM", "PsiKick", "Netac Technology Co Ltd", "PCCOOLER", "Jiangsu Huacun Electronic Technology", "Shenzhen Micro Innovation Industry", "Beijing Tongfang Microelectronics Co", "XZN Storage Technology", "ChipCraft Sp. z.o.o.", "ALLFLASH Technology Limited"}, {"Foerd Technology Co Ltd", "KingSpec", "Codasip GmbH", "SL Link Co Ltd", "Shenzhen Kefu Technology Co Limited", "Shenzhen ZST Electronics Technology", "Kyokuto Electronic Inc", "Warrior Technology", "TRINAMIC Motion Control GmbH & Co", "PixelDisplay Inc", "Shenzhen Futian District Bo Yueda Elec", "Richtek Power", "Shenzhen LianTeng Electronics Co Ltd", "AITC Memory", "UNIC Memory Technology Co Ltd", "Shenzhen Huafeng Science Technology", "CXMT (former Innotron Memory Co Ltd)", "Guangzhou Xinyi Heng Computer Trading Firm", "SambaNova Systems", "V-GEN", "Jump Trading", "Ampere Computing", "Shenzhen Zhongshi Technology Co Ltd", "Shenzhen Zhongtian Bozhong Technology", "Tri-Tech International", "Silicon Intergrated Systems Corporation", "Shenzhen HongDingChen Information", "Plexton Holdings Limited", "AMS (Jiangsu Advanced Memory Semi)", "Wuhan Jing Tian Interconnected Tech Co", "Axia Memory Technology", "Chipset Technology Holding Limited", "Shenzhen Xinshida Technology Co Ltd", "Shenzhen Chuangshifeida Technology", "Guangzhou MiaoYuanJi Technology", "ADVAN Inc", "Shenzhen Qianhai Weishengda Electronic Commerce Company Ltd", "Guangzhou Guang Xie Cheng Trading", "StarRam International Co Ltd", "Shen Zhen XinShenHua Tech Co Ltd", "UltraMemory Inc", "New Coastline Global Tech Industry Co", "Sinker", "Diamond", "PUSKILL", "Guangzhou Hao Jia Ye Technology Co", "Ming Xin Limited", "Barefoot Networks", "Biwin Semiconductor (HK) Co Ltd", "UD INFO Corporation", "Trek Technology (S) PTE Ltd", "Xiamen Kingblaze Technology Co Ltd", "Shenzhen Lomica Technology Co Ltd", "Nuclei System Technology Co Ltd", "Wuhan Xun Zhan Electronic Technology", "Shenzhen Ingacom Semiconductor Ltd", "Zotac Technology Ltd", "Foxline", "Shenzhen Farasia Science Technology", "Efinix Inc", "Hua Nan San Xian Technology Co Ltd", "Goldtech Electronics Co Ltd", "Shanghai Han Rong Microelectronics Co", "Shenzhen Zhongguang Yunhe Trading", "Smart Shine(QingDao) Microelectronics", "Thermaltake Technology Co Ltd", "Shenzhen O'Yang Maile Technology Ltd", "UPMEM", "Chun Well Technology Holding Limited", "Astera Labs Inc", "Winconway", "Advantech Co Ltd", "Chengdu Fengcai Electronic Technology", "The Boeing Company", "Blaize Inc", "Ramonster Technology Co Ltd", "Wuhan Naonongmai Technology Co Ltd", "Shenzhen Hui ShingTong Technology", "Yourlyon", "Fabu Technology", "Shenzhen Yikesheng Technology Co Ltd", "NOR-MEM", "Cervoz Co Ltd", "Bitmain Technologies Inc", "Facebook Inc", "Shenzhen Longsys Electronics Co Ltd", "Guangzhou Siye Electronic Technology", "Silergy", "Adamway", "PZG", "Shenzhen King Power Electronics", "Guangzhou ZiaoFu Tranding Co Ltd", "Shenzhen SKIHOTAR Semiconductor", "PulseRain Technology", "Seeker Technology Limited", "Shenzhen OSCOO Tech Co Ltd", "Shenzhen Yze Technology Co Ltd", "Shenzhen Jieshuo Electronic Commerce", "Gazda", "Hua Wei Technology Co Ltd", "Esperanto Technologies", "JinSheng Electronic (Shenzhen) Co Ltd", "Shenzhen Shi Bolunshuai Technology", "Shanghai Rei Zuan Information Tech", "Fraunhofer IIS", "Kandou Bus SA", "Acer", "Artmem Technology Co Ltd", "Gstar Semiconductor Co Ltd", "ShineDisk", "Shenzhen CHN Technology Co Ltd", "UnionChip Semiconductor Co Ltd", "Tanbassh", "Shenzhen Tianyu Jieyun Intl Logistics", "MCLogic Inc", "Eorex Corporation", "Arm Technology (China) Co Ltd", "Lexar Co Limited", "QinetiQ Group PLC", "Exascend", "Hong Kong Hyunion Electronics Co Ltd", "Shenzhen Banghong Electronics Co Ltd", "MBit Wireless Inc", "Hex Five Security Inc", "ShenZhen Juhor Precision Tech Co Ltd", "Shenzhen Reeinno Technology Co Ltd"}, {"ABIT Electronics (Shenzhen) Co Ltd", "Semidrive", "MyTek Electronics Corp", "Wxilicon Technology Co Ltd", "Shenzhen Meixin Electronics Ltd", "Ghost Wolf", "LiSion Technologies Inc", "Power Active Co Ltd", "Pioneer High Fidelity Taiwan Co. Ltd", "LuoSilk", "Shenzhen Chuangshifeida Technology", "Black Sesame Technologies Inc", "Jiangsu Xinsheng Intelligent Technology", "MLOONG", "Quadratica LLC", "Anpec Electronics", "Xi’an Morebeck Semiconductor Tech Co", "Kingbank Technology Co Ltd", "ITRenew Inc", "Shenzhen Eaget Innovation Tech Ltd", "Jazer", "Xiamen Semiconductor Investment Group", "Guangzhou Longdao Network Tech Co", "Shenzhen Futian SEC Electronic Market", "Allegro Microsystems LLC", "Hunan RunCore Innovation Technology", "C-Corsa Technology", "Zhuhai Chuangfeixin Technology Co Ltd", "Beijing InnoMem Technologies Co Ltd", "YooTin", "Shenzhen Pengxiong Technology Co Ltd", "Dongguan Yingbang Commercial Trading Co", "Shenzhen Ronisys Electronics Co Ltd", "Hongkong Xinlan Guangke Co Ltd", "Apex Microelectronics Co Ltd", "Beijing Hongda Jinming Technology Co Ltd", "Ling Rui Technology (Shenzhen) Co Ltd", "Hongkong Hyunion Electronics Co Ltd", "Starsystems Inc", "Shenzhen Yingjiaxun Industrial Co Ltd", "Dongguan Crown Code Electronic Commerce", "Monolithic Power Systems Inc", "WuHan SenNaiBo E-Commerce Co Ltd", "Hangzhou Hikstorage Technology Co", "Shenzhen Goodix Technology Co Ltd", "Aigo Electronic Technology Co Ltd", "Hefei Konsemi Storage Technology Co Ltd", "Cactus Technologies Limited", "DSIN", "Blu Wireless Technology", "Nanjing UCUN Technology Inc", "Acacia Communications", "Beijinjinshengyihe Technology Co Ltd", "Zyzyx", "T-HEAD Semiconductor Co Ltd", "Shenzhen Hystou Technology Co Ltd", "Syzexion", "Kembona", "Qingdao Thunderobot Technology Co Ltd", "Morse Micro", "Shenzhen Envida Technology Co Ltd", "UDStore Solution Limited", "Shunlie", "Shenzhen Xin Hong Rui Tech Ltd", "Shenzhen Yze Technology Co Ltd", "Shenzhen Huang Pu He Xin Technology", "Xiamen Pengpai Microelectronics Co Ltd", "JISHUN", "Shenzhen WODPOSIT Technology Co", "Unistar", "UNICORE Electronic (Suzhou) Co Ltd", "Axonne Inc", "Shenzhen SOVERECA Technology Co", "Dire Wolf", "Whampoa Core Technology Co Ltd", "CSI Halbleiter GmbH", "ONE Semiconductor", "SimpleMachines Inc", "Shenzhen Chengyi Qingdian Electronic", "Shenzhen Xinlianxin Network Technology", "Vayyar Imaging Ltd", "Paisen Network Technology Co Ltd", "Shenzhen Fengwensi Technology Co Ltd", "Caplink Technology Limited", "JJT Solution Co Ltd", "HOSIN Global Electronics Co Ltd", "Shenzhen KingDisk Century Technology", "SOYO", "DIT Technology Co Ltd", "iFound", "Aril Computer Company", "ASUS", "Shenzhen Ruiyingtong Technology Co", "HANA Micron", "RANSOR", "Axiado Corporation", "Tesla Corporation", "Pingtouge (Shanghai) Semiconductor Co", "S3Plus Technologies SA", "Integrated Silicon Solution Israel Ltd", "GreenWaves Technologies", "NUVIA Inc", "Guangzhou Shuvrwine Technology Co", "Shenzhen Hangshun Chip Technology", "Chengboliwei Electronic Business", "Kowin Memory Technology Co Ltd", "Euronet Technology Inc", "SCY", "Shenzhen Xinhongyusheng Electrical", "PICOCOM", "Shenzhen Toooogo Memory Technology", "VLSI Solution", "Costar Electronics Inc", "Shenzhen Huatop Technology Co Ltd", "Inspur Electronic Information Industry", "Shenzhen Boyuan Computer Technology", "Beijing Welldisk Electronics Co Ltd", "Suzhou EP Semicon Co Ltd", "Zhejiang Dahua Memory Technology", "Virtu Financial", "Datotek International Co Ltd", "Telecom and Microelectronics Industries", "Echo Technology Ltd", "APEX-INFO", "Yingpark", "Shenzhen Bigway Tech Co Ltd"}, {"Beijing Haawking Technology Co Ltd", "Open HW Group", "JHICC", "ncoder AG", "ThinkTech Information Technology Co", "Shenzhen Chixingzhe Technology Co Ltd", "Skywalker", "Shenzhen Kaizhuoyue Electronics Co Ltd", "Shenzhen YC Storage Technology Co Ltd", "Shenzhen Chixingzhe Technology Co", "Wink Semiconductor (Shenzhen) Co Ltd", "AISTOR", "Palma Ceia SemiDesign", "EM Microelectronic-Marin SA", "Shenzhen Monarch Memory Technology"} }; hardinfo2-hardinfo2-1331e88/includes/stock.h000066400000000000000000000020771474767047500206530ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef __STOCK_H__ #define __STOCK_H__ #define HI_STOCK_REFRESH "hi-stock-refresh" #define HI_STOCK_REPORT "hi-stock-report" #define HI_STOCK_SYNC "hi-stock-sync" void stock_icons_init(void); void stock_icon_register(gchar *filename, gchar *stock_id); #endif /* __STOCK_H__ */ hardinfo2-hardinfo2-1331e88/includes/storage_util.h000066400000000000000000000006701474767047500222260ustar00rootroot00000000000000#include "vendor.h" #include "pci_util.h" // udisks2 drive info extended typedef struct u2driveext { udiskd *d; pcid *nvme_controller; struct{ gchar *oui; gchar *vendor; } wwid_oui; vendor_list vendors; } u2driveext; GSList *get_udisks2_drives_ext(); u2driveext* u2drive_ext(udiskd * udisks_drive_data); void u2driveext_free(u2driveext *u); void udisks2_shutdown(void); void storage_shutdown(void); hardinfo2-hardinfo2-1331e88/includes/syncmanager.h000066400000000000000000000025151474767047500220340ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef __SYNCMANAGER_H__ #define __SYNCMANAGER_H__ #include typedef struct _SyncEntry SyncEntry; struct _SyncEntry { const gchar *name; const gchar *file_name; gchar *(*generate_contents_for_upload)(gsize *size); gboolean selected; gboolean optional; }; void sync_manager_add_entry(SyncEntry *entry); void sync_manager_clear_entries(void); void sync_manager_show(GtkWidget *parent); gint sync_manager_count_entries(void); void sync_manager_update_on_startup(int send_benchmark); #endif /* __SYNCMANAGER_H__ */ hardinfo2-hardinfo2-1331e88/includes/test-utils.h000066400000000000000000000012231474767047500216350ustar00rootroot00000000000000#ifdef HAVE_CONFIG_H #include "config.h" #endif #include "libsoup/soup-types.h" void test_init (int argc, char **argv, GOptionEntry *entries); void test_cleanup (void); extern int debug_level, errors; extern gboolean expect_warning; void debug_printf (int level, const char *format, ...) G_GNUC_PRINTF (2, 3); #ifdef HAVE_APACHE void apache_init (void); void apache_cleanup (void); #endif SoupSession *soup_test_session_new (GType type, ...); void soup_test_session_abort_unref (SoupSession *session); SoupServer *soup_test_server_new (gboolean in_own_thread); SoupServer *soup_test_server_new_ssl (gboolean in_own_thread); hardinfo2-hardinfo2-1331e88/includes/udisks2_util.h000066400000000000000000000027601474767047500221500ustar00rootroot00000000000000#include "vendor.h" typedef struct udiskp { gchar *block; gchar *type; gchar *version; gchar *label; guint64 size; struct udiskp* next; } udiskp; enum{ UDSK_INTPVAL_SKIP = 0, UDSK_INTPVAL_DIMENSIONLESS = 1, UDSK_INTPVAL_MILISECONDS = 2, UDSK_INTPVAL_HOURS = 3, UDSK_INTPVAL_SECTORS = 4, UDSK_INTPVAL_CELSIUS = 5, }; typedef struct udisksa { guint8 id; gchar *identifier; gint value; gint worst; gint threshold; gint64 interpreted; guint8 interpreted_unit; // enum struct udisksa* next; } udisksa; typedef struct udiskd { gchar *model; gchar *vendor; gchar *revision; gchar *block_dev; gchar *serial; gchar *wwid; gchar *connection_bus; gchar *partition_table; udiskp *partitions; gboolean ejectable; gboolean removable; gint32 rotation_rate; guint64 size; gchar *media; gchar **media_compatibility; gboolean pm_supported; gboolean aam_supported; gboolean apm_supported; gboolean smart_supported; gboolean smart_enabled; gboolean smart_failing; guint64 smart_poweron; gint64 smart_bad_sectors; gint32 smart_temperature; udisksa *smart_attributes; } udiskd; typedef struct udiskt { gchar *drive; gint32 temperature; } udiskt; void udisks2_init(); void udisks2_shutdown(); GSList *get_udisks2_temps(); GSList *get_udisks2_all_drives_info(); void udiskt_free(udiskt *u); void udiskd_free(udiskd *u); hardinfo2-hardinfo2-1331e88/includes/uidefs.h000066400000000000000000000051461474767047500210070ustar00rootroot00000000000000#ifndef __UIDEFS_H__ #define __UIDEFS_H__ #include "config.h" char *uidefs_str = "" " " " " " " /* " "*/ " " \ " " " " " " " " " " " " " " " " #if GTK_CHECK_VERSION(3, 0, 0) " " " " " " " " " " " " " " " " " " #endif " " " " " " " " " " " " " " " " " " " " " " " " " " " " /* " "*/ " " " " " " ""; #endif /* __UIDEFS_H__ */ hardinfo2-hardinfo2-1331e88/includes/usb_util.h000066400000000000000000000040031474767047500213450ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2017 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef __USB_UTIL_H__ #define __USB_UTIL_H__ /* this is a linked list */ typedef struct usbd { int bus, dev; int vendor_id, product_id; char *vendor; char *product; char *manufacturer; char *device; char *serial; int dev_class; int dev_subclass; int dev_protocol; char *dev_class_str; char *dev_subclass_str; char *dev_protocol_str; char *usb_version; char *device_version; /* bcdDevice */ int max_curr_ma; int speed_mbs; vendor_list vendors; gboolean user_scan; /* not scanned as root */ struct usbi *if_list; struct usbd *next; } usbd; /* another linked list */ typedef struct usbi { int if_number; int if_class; int if_subclass; int if_protocol; char *if_label; char *if_class_str; char *if_subclass_str; char *if_protocol_str; char *driver; struct usbi *next; } usbi; usbd *usb_get_device_list(); int usbd_list_count(usbd *); void usbd_list_free(usbd *); void usb_lookup_ids_vendor_product_str(gint vendor_id, gint product_id, gchar **vendor_str, gchar **product_str); usbd *usb_get_device(int bus, int dev, const gchar* sysfspath); void usbd_free(usbd *); #endif hardinfo2-hardinfo2-1331e88/includes/vendor.h000066400000000000000000000056231474767047500210250ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef __VENDOR_H__ #define __VENDOR_H__ #include "gg_slist.h" typedef GSList* vendor_list; #define vendor_list_append(vl, v) g_slist_append(vl, (Vendor*)v) #define vendor_list_concat(vl, ext) g_slist_concat(vl, ext) vendor_list vendor_list_concat_va(int count, vendor_list vl, ...); /* count = -1 for NULL terminated list */ #define vendor_list_free(vl) g_slist_free(vl) #define vendor_list_remove_duplicates(vl) gg_slist_remove_duplicates(vl) vendor_list vendor_list_remove_duplicates_deep(vendor_list vl); enum { VENDOR_MATCH_RULE_WORD_IGNORE_CASE = 0, VENDOR_MATCH_RULE_WORD_MATCH_CASE = 1, VENDOR_MATCH_RULE_EXACT = 2, VENDOR_MATCH_RULE_WORD_PREFIX_IGNORE_CASE = 3, VENDOR_MATCH_RULE_WORD_PREFIX_MATCH_CASE = 4, VENDOR_MATCH_RULE_WORD_SUFFIX_IGNORE_CASE = 5, VENDOR_MATCH_RULE_WORD_SUFFIX_MATCH_CASE = 6, /* "ST" hits for "ST3600A" but not "AST" or "STMicro" or "STEC" */ VENDOR_MATCH_RULE_NUM_PREFIX_IGNORE_CASE = 7, VENDOR_MATCH_RULE_NUM_PREFIX_MATCH_CASE = 8, }; typedef struct { char *match_string; int match_rule; /* VENDOR_MATCH_RULE_* enum */ char *name; char *name_short; char *url; char *url_support; char *wikipedia; /* wikipedia page title (assumes en:, otherwise include langauge), usually more informative than the vendor's page */ char *note; /* a short stored comment */ char *ansi_color; unsigned long file_line; unsigned long ms_length; unsigned long weight; gboolean has_parens; } Vendor; void vendor_init(void); void vendor_cleanup(void); /* end list of strings with NULL */ const Vendor *vendor_match(const gchar *id_str, ...) __attribute__((sentinel)); vendor_list vendors_match(const gchar *id_str, ...) __attribute__((sentinel)); const gchar *vendor_get_name(const gchar *id_str); const gchar *vendor_get_shortest_name(const gchar *id_str); const gchar *vendor_get_url(const gchar *id_str); gchar *vendor_get_link(const gchar *id_str); gchar *vendor_get_link_from_vendor(const Vendor *v); void vendor_free(Vendor *v); vendor_list vendors_match_core(const gchar *str, int limit); extern gboolean vendor_die_on_error; #endif /* __VENDOR_H__ */ hardinfo2-hardinfo2-1331e88/includes/x86/000077500000000000000000000000001474767047500177765ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/includes/x86/processor-platform.h000066400000000000000000000034761474767047500240220ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef __PROCESSOR_PLATFORM_H__ #define __PROCESSOR_PLATFORM_H__ #include "cpu_util.h" typedef struct _ProcessorCache ProcessorCache; struct _ProcessorCache { gint level; gint number_of_sets; gint physical_line_partition; gint size; gchar *type; gint ways_of_associativity; gint uid; /* uid is unique among caches with the same (type, level) */ gchar *shared_cpu_list; /* some kernel's don't give a uid, so try shared_cpu_list */ gint phy_sock; }; struct _Processor { gchar *model_name; gchar *vendor_id; gchar *flags; gchar *bugs; gchar *pm; /* power management features */ gint cache_size; gfloat bogomips; gchar *microcode; gint id; gfloat cpu_mhz; /* for devices.c, identical to cpukhz_max/1000 */ cpu_topology_data *cputopo; cpufreq_data *cpufreq; gchar *has_fpu; gchar *bug_fdiv, *bug_hlt, *bug_f00f, *bug_coma; gint model, family, stepping; gchar *strmodel; GSList *cache; }; #endif /* __PROCESSOR_PLATFORM_H__ */ hardinfo2-hardinfo2-1331e88/includes/x_util.h000066400000000000000000000057271474767047500210410ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2017 L. A. F. Pereira * This file * Copyright (C) 2017 Burt P. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef __X_UTIL_H__ #define __X_UTIL_H__ /* wayland information (lives here in x_util for now) */ typedef struct { char *xdg_session_type; char *display_name; } wl_info; wl_info *get_walyand_info(); void wl_free(wl_info *); #define VK_MAX_GPU 5 typedef struct { char *vk_instVer; //GPU char *vk_apiVer[VK_MAX_GPU]; char *vk_drvVer[VK_MAX_GPU]; char *vk_vendorId[VK_MAX_GPU]; char *vk_devType[VK_MAX_GPU]; char *vk_devName[VK_MAX_GPU]; char *vk_drvName[VK_MAX_GPU]; char *vk_drvInfo[VK_MAX_GPU]; char *vk_conformVer[VK_MAX_GPU]; } vk_info; typedef struct { char *glx_version; int direct_rendering; char *ogl_vendor, *ogl_renderer; char *ogl_core_version, *ogl_core_sl_version; char *ogl_version, *ogl_sl_version; /* compat */ char *ogles_version, *ogles_sl_version; } glx_info; glx_info *glx_create(); gboolean fill_glx_info(glx_info *glx); void glx_free(glx_info *glx); typedef struct { int number; int px_width; int px_height; int min_px_width; int min_px_height; int max_px_width; int max_px_height; } x_screen; typedef struct { /* I guess it is kindof like gpu? */ int reserved; /* TODO: */ } x_provider; typedef struct { char name[64]; int connected; int screen; /* index into xrr_info.screens[], look there for x screen number */ int px_width; int px_height; int px_offset_x; int px_offset_y; int mm_width; int mm_height; } x_output; typedef struct { int reserved; /* TODO: */ } x_monitor; typedef struct { char *display_name; int screen_count; x_screen *screens; int provider_count; x_provider *providers; int output_count; x_output *outputs; int monitor_count; x_monitor *monitors; } xrr_info; xrr_info *xrr_create(); gboolean fill_xrr_info(xrr_info *xrr); void xrr_free(xrr_info *xrr); typedef struct { int nox; /* complete failure to find X */ char *display_name, *vendor, *version, *release_number; xrr_info *xrr; glx_info *glx; vk_info *vk; /*Vulkan info*/ } xinfo; xinfo *xinfo_get_info(); void xinfo_free(xinfo *xi); #endif hardinfo2-hardinfo2-1331e88/modules/000077500000000000000000000000001474767047500172135ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/modules/benchmark.c000066400000000000000000000755431474767047500213270ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2009 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #define _GNU_SOURCE #include #include #include #include #include #include #include #include #include #include "appf.h" #include "benchmark.h" #include "cpu_util.h" #include "benchmark/bench_results.c" bench_value bench_results[BENCHMARK_N_ENTRIES]; static void do_benchmark(void (*benchmark_function)(void), int entry); static gchar *benchmark_include_results_reverse(bench_value result, const gchar *benchmark); static gchar *benchmark_include_results(bench_value result, const gchar *benchmark); /* ModuleEntry entries, scan_*(), callback_*(), etc. */ #include "benchmark/benches.c" char *bench_value_to_str(bench_value r) { gboolean has_rev = (r.revision >= 0); gboolean has_extra = (*r.extra != 0); char *ret = g_strdup_printf("%lf; %lf; %d", r.result, r.elapsed_time, r.threads_used); if (has_rev || has_extra) ret = appf(ret, "; ", "%d", r.revision); if (has_extra) ret = appf(ret, "; ", "%s", r.extra); return ret; } bench_value bench_value_from_str(const char *str) { bench_value ret = EMPTY_BENCH_VALUE; char rstr[32] = "", estr[32] = "", *p; int t, c, v; char extra[256]; if (str) { /* try to handle floats from locales that use ',' or '.' as decimal sep */ c = sscanf( str, "%[-+0-9.,]; %[-+0-9.,]; %d; %d; %255[^\r\n;|]", rstr, estr, &t, &v, extra); if (c >= 3) { if ((p = strchr(rstr, ','))) { *p = '.'; } if ((p = strchr(estr, ','))) { *p = '.'; } ret.result = g_ascii_strtod(rstr, NULL); ret.elapsed_time = g_ascii_strtod(estr, NULL); ret.threads_used = t; } if (c >= 4) { ret.revision = v; } if (c >= 5) { strcpy(ret.extra, extra); } } return ret; } typedef struct _ParallelBenchTask ParallelBenchTask; struct _ParallelBenchTask { gint thread_number; guint start, end; gpointer data, callback; int *stop; }; static gpointer benchmark_crunch_for_dispatcher(gpointer data) { ParallelBenchTask *pbt = (ParallelBenchTask *)data; gpointer (*callback)(void *data, gint thread_number); gpointer return_value = g_malloc(sizeof(double)); int count = 0; if ((callback = pbt->callback)) { while (!*pbt->stop) { callback(pbt->data, pbt->thread_number); /* don't count if didn't finish in time */ if (!*pbt->stop) count++; } } else { DEBUG("this is thread %p; callback is NULL and it should't be!", g_thread_self()); } g_free(pbt); *(double *)return_value = (double)count; return return_value; } bench_value benchmark_crunch_for(float seconds, gint n_threads, gpointer callback, gpointer callback_data) { int cpu_procs, cpu_cores, cpu_threads, cpu_nodes; int thread_number, stop = 0; GSList *threads = NULL, *t; GTimer *timer = NULL; bench_value ret = EMPTY_BENCH_VALUE; timer = g_timer_new(); cpu_procs_cores_threads_nodes(&cpu_procs, &cpu_cores, &cpu_threads, &cpu_nodes); if (n_threads > 0) ret.threads_used = n_threads; else if (n_threads < 0) ret.threads_used = cpu_cores; else ret.threads_used = cpu_threads; g_timer_start(timer); for (thread_number = 0; thread_number < ret.threads_used; thread_number++) { ParallelBenchTask *pbt = g_new0(ParallelBenchTask, 1); GThread *thread; DEBUG("launching thread %d", thread_number); pbt->thread_number = thread_number; pbt->data = callback_data; pbt->callback = callback; pbt->stop = &stop; #if GLIB_CHECK_VERSION(2,32,0) thread = g_thread_new("dispatcher", (GThreadFunc)benchmark_crunch_for_dispatcher, pbt); #else thread = g_thread_create((GThreadFunc)benchmark_crunch_for_dispatcher, pbt,TRUE,NULL); #endif threads = g_slist_prepend(threads, thread); DEBUG("thread %d launched as context %p", thread_number, thread); } /* wait for time */ // while ( g_timer_elapsed(timer, NULL) < seconds ) { } g_usleep(seconds * 1000000); /* signal all threads to stop */ stop = 1; g_timer_stop(timer); ret.result = 0; DEBUG("waiting for all threads to finish"); for (t = threads; t; t = t->next) { DEBUG("waiting for thread with context %p", t->data); gpointer *rv = g_thread_join((GThread *)t->data); ret.result += *(double *)rv; g_free(rv); } ret.elapsed_time = g_timer_elapsed(timer, NULL); g_slist_free(threads); g_timer_destroy(timer); return ret; } static gpointer benchmark_parallel_for_dispatcher(gpointer data) { ParallelBenchTask *pbt = (ParallelBenchTask *)data; gpointer (*callback)(unsigned int start, unsigned int end, void *data, gint thread_number); gpointer return_value = NULL; if ((callback = pbt->callback)) { DEBUG("this is thread %p; items %d -> %d, data %p", g_thread_self(), pbt->start, pbt->end, pbt->data); return_value = callback(pbt->start, pbt->end, pbt->data, pbt->thread_number); DEBUG("this is thread %p; return value is %p", g_thread_self(), return_value); } else { DEBUG("this is thread %p; callback is NULL and it should't be!", g_thread_self()); } g_free(pbt); return return_value; } /* one call for each thread to be used */ bench_value benchmark_parallel(gint n_threads, gpointer callback, gpointer callback_data) { int cpu_procs, cpu_cores, cpu_threads, cpu_nodes; cpu_procs_cores_threads_nodes(&cpu_procs, &cpu_cores, &cpu_threads, &cpu_nodes); if (n_threads == 0) n_threads = cpu_threads; else if (n_threads == -1) n_threads = cpu_cores; return benchmark_parallel_for(n_threads, 0, n_threads, callback, callback_data); } /* Note: * benchmark_parallel_for(): element [start] included, but [end] is excluded. * callback(): expected to processes elements [start] through [end] * inclusive. */ bench_value benchmark_parallel_for(gint n_threads, guint start, guint end, gpointer callback, gpointer callback_data) { int cpu_procs, cpu_cores, cpu_threads, cpu_nodes; guint iter_per_thread=1, iter, thread_number = 0; GSList *threads = NULL, *t; GTimer *timer; bench_value ret = EMPTY_BENCH_VALUE; timer = g_timer_new(); cpu_procs_cores_threads_nodes(&cpu_procs, &cpu_cores, &cpu_threads, &cpu_nodes); if (n_threads > 0) ret.threads_used = n_threads; else if (n_threads < 0) ret.threads_used = cpu_cores; else ret.threads_used = cpu_threads; while (ret.threads_used > 0) { iter_per_thread = (end - start) / ret.threads_used; if (iter_per_thread == 0) { DEBUG("not enough items per thread; disabling one thread"); ret.threads_used--; } else { break; } } /*DEBUG("Using %d threads across %d logical processors; processing %d elements (%d per thread)", ret.threads_used, cpu_threads, (end - start), iter_per_thread);*/ g_timer_start(timer); for (iter = start; iter < end;) { ParallelBenchTask *pbt = g_new0(ParallelBenchTask, 1); GThread *thread; guint ts = iter, te = iter + iter_per_thread; /* add the remainder of items/iter_per_thread to the last thread */ if (end - te < iter_per_thread) te = end; iter = te; DEBUG("launching thread %d", 1 + thread_number); pbt->thread_number = thread_number++; pbt->start = ts; pbt->end = te - 1; pbt->data = callback_data; pbt->callback = callback; #if GLIB_CHECK_VERSION(2,32,0) thread = g_thread_new("dispatcher", (GThreadFunc)benchmark_parallel_for_dispatcher, pbt); #else thread = g_thread_create((GThreadFunc)benchmark_parallel_for_dispatcher, pbt,TRUE,NULL); #endif threads = g_slist_prepend(threads, thread); DEBUG("thread %d launched as context %p", thread_number, thread); } DEBUG("waiting for all threads to finish"); for (t = threads; t; t = t->next) { DEBUG("waiting for thread with context %p", t->data); gpointer *rv = g_thread_join((GThread *)t->data); if (rv) { if (ret.result == -1.0) ret.result = 0; ret.result += *(double *)rv; } g_free(rv); } g_timer_stop(timer); ret.elapsed_time = g_timer_elapsed(timer, NULL); g_slist_free(threads); g_timer_destroy(timer); DEBUG("finishing; all threads took %f seconds to finish", ret.elapsed_time); return ret; } gchar *hi_more_info(gchar *entry) { const gchar *info = moreinfo_lookup_with_prefix("BENCH", entry); return g_strdup(info ? info : "?"); } gchar *hi_get_field(gchar *field) { const gchar *info = moreinfo_lookup_with_prefix("BENCH", field); return g_strdup(info ? info : field); } static void br_mi_add(char **results_list, bench_result *b, gboolean select) { static unsigned int ri = 0; /* to ensure key is unique */ gchar *rkey, *lbl, *elbl, *this_marker; if (select) { this_marker = format_with_ansi_color(_("This Machine"), "0;30;43", params.fmt_opts); } else { this_marker = ""; } rkey = g_strdup_printf("%s__%d", b->machine->mid, ri++); if(strstr(b->name,"GPU")){//GPU lbl = g_strdup_printf("%s%s%s%s", this_marker, select ? " " : "", b->machine->gpu_name, b->legacy ? problem_marker() : ""); } else if(strstr(b->name,"Storage")){//Storage lbl = g_strdup_printf("%s%s%s%s", this_marker, select ? " " : "", b->machine->storage, b->legacy ? problem_marker() : ""); } else {//CPU lbl = g_strdup_printf("%s%s%s%s", this_marker, select ? " " : "", b->machine->cpu_name, b->legacy ? problem_marker() : ""); } elbl = key_label_escape(lbl); if(strstr(b->name,"GPU")){//GPU *results_list = h_strdup_cprintf("$@%s%s$%s=%.2f\n", *results_list, select ? "*" : "", rkey, elbl, b->bvalue.result); } else if(strstr(b->name,"Storage")){//Storage *results_list = h_strdup_cprintf("$@%s%s$%s=%.2f\n", *results_list, select ? "*" : "", rkey, elbl, b->bvalue.result); } else {//CPU *results_list = h_strdup_cprintf("$@%s%s$%s=%.2f|%s\n", *results_list, select ? "*" : "", rkey, elbl, b->bvalue.result, b->machine->cpu_config); } moreinfo_add_with_prefix("BENCH", rkey, bench_result_more_info(b)); g_free(lbl); g_free(elbl); g_free(rkey); if (*this_marker) g_free(this_marker); } gint bench_result_sort(gconstpointer a, gconstpointer b) { bench_result *A = (bench_result *)a, *B = (bench_result *)b; if (A->bvalue.result < B->bvalue.result) return -1; if (A->bvalue.result > B->bvalue.result) return 1; return 0; } struct append_machine_result_json_data { GSList **result_list; const gchar *benchmark_name; }; static void append_machine_result_json(JsonArray *array, guint index, JsonNode *element_node, gpointer user_data) { struct append_machine_result_json_data *data = user_data; bench_result *result; result = bench_result_benchmarkjson(data->benchmark_name, element_node); *data->result_list = g_slist_append(*data->result_list, result); } static GSList *benchmark_include_results_json(const gchar *path, bench_value r, const gchar *benchmark) { JsonParser *parser; JsonNode *root; GSList *result_list = NULL; GError *error=NULL; DEBUG("Loading benchmark results from JSON file %s", path); parser = json_parser_new(); json_parser_load_from_file(parser, path, &error); if(error){ DEBUG ("Unable to parse JSON %s %s", path, error->message); g_error_free(error); g_object_unref(parser); return result_list; } root = json_parser_get_root(parser); if (json_node_get_node_type(root) != JSON_NODE_OBJECT) goto out; JsonObject *results = json_node_get_object(root); if ( results && json_object_has_member(results,benchmark) ) { JsonArray *machines = json_object_get_array_member(results, benchmark); if (machines) { struct append_machine_result_json_data data = { .result_list = &result_list, .benchmark_name = benchmark, }; json_array_foreach_element(machines, append_machine_result_json, &data); } } out: g_object_unref(parser); return result_list; } static gchar *find_benchmark_conf(void) { const gchar *config_dir = g_get_user_config_dir(); gchar *path; path = g_build_filename(config_dir, "hardinfo2", "benchmark.json", NULL); if (g_file_test(path, G_FILE_TEST_EXISTS)) return path; g_free(path); path = g_build_filename(params.path_data, "benchmark.json", NULL); if (g_file_test(path, G_FILE_TEST_EXISTS)) return path; g_free(path); return NULL; } struct bench_window { int min, max; }; static struct bench_window get_bench_window(GSList *result_list, const bench_result *this_machine) { struct bench_window window = {}; int size = params.max_bench_results; int len = g_slist_length(result_list); if (size == 0) size = 1; else if (size < 0) size = len; int loc = g_slist_index(result_list, this_machine); /* -1 if not found */ if (loc >= 0) { window.min = loc - size / 2; window.max = window.min + size; if (window.min < 0) { window.min = 0; window.max = MIN(size, len); } else if (window.max > len) { window.max = len; window.min = MAX(len - size, 0); } } else { window.min = 0; if(params.max_bench_results==0) window.max = 0; else window.max=size; } //DEBUG("...len: %d, loc: %d, win_size: %d, win: [%d..%d]\n", len, loc, size, window.min, window.max - 1); return window; } static gboolean is_in_bench_window(const struct bench_window *window, int i) { return i >= window->min && i < window->max; } static gchar *benchmark_include_results_internal(bench_value this_machine_value, const gchar *benchmark, ShellOrderType order_type) { bench_result *this_machine; GSList *result_list=NULL, *li; gchar *results = g_strdup(""); gchar *output; gchar *path; gint i; path = find_benchmark_conf(); if (path) { result_list = benchmark_include_results_json( path, this_machine_value, benchmark); } /* this result */ if (this_machine_value.result > 0.0) { this_machine = bench_result_this_machine(benchmark, this_machine_value); result_list = g_slist_prepend(result_list, this_machine); } else { this_machine = NULL; } /* sort */ result_list = g_slist_sort(result_list, bench_result_sort); if (order_type == SHELL_ORDER_DESCENDING) result_list = g_slist_reverse(result_list); /* prepare for shell */ moreinfo_del_with_prefix("BENCH"); const struct bench_window window = get_bench_window(result_list, this_machine); for (i = 0, li = result_list; li; li = g_slist_next(li), i++) { bench_result *br = li->data; if (is_in_bench_window(&window, i)) br_mi_add(&results, br, br == this_machine); bench_result_free(br); /* no longer needed */ } g_slist_free(result_list); if(strstr(benchmark,"GPU")){//GPU output = g_strdup_printf("[$ShellParam$]\n" "Zebra=1\n" "OrderType=%d\n" "ViewType=4\n" "ColumnTitle$Progress=%s\n" /* Results */ "ColumnTitle$TextValue=%s\n" /* GPU */ "ShowColumnHeaders=true\n" "[%s]\n%s", order_type, _("Results"), _("GPU"), benchmark, results); }else if(strstr(benchmark,"Storage")){//Storage output = g_strdup_printf("[$ShellParam$]\n" "Zebra=1\n" "OrderType=%d\n" "ViewType=4\n" "ColumnTitle$Progress=%s\n" /* Results */ "ColumnTitle$TextValue=%s\n" /* GPU */ "ShowColumnHeaders=true\n" "[%s]\n%s", order_type, _("Results"), _("Storage"), benchmark, results); } else {//CPU output = g_strdup_printf("[$ShellParam$]\n" "Zebra=1\n" "OrderType=%d\n" "ViewType=4\n" "ColumnTitle$Extra1=%s\n" /* CPU Clock */ "ColumnTitle$Progress=%s\n" /* Results */ "ColumnTitle$TextValue=%s\n" /* CPU */ "ShowColumnHeaders=true\n" "[%s]\n%s", order_type, _("CPU Config"), _("Results"), _("CPU"), benchmark, results); } g_free(path); g_free(results); return output; } static gchar *benchmark_include_results_reverse(bench_value result, const gchar *benchmark) { return benchmark_include_results_internal(result, benchmark, SHELL_ORDER_DESCENDING); } static gchar *benchmark_include_results(bench_value result, const gchar *benchmark) { return benchmark_include_results_internal(result, benchmark, SHELL_ORDER_ASCENDING); } typedef struct _BenchmarkDialog BenchmarkDialog; struct _BenchmarkDialog { GtkWidget *dialog; bench_value r; }; static gboolean do_benchmark_handler(GIOChannel *source, GIOCondition condition, gpointer data) { BenchmarkDialog *bench_dialog = (BenchmarkDialog *)data; GIOStatus status; gchar *result = NULL; bench_value r = EMPTY_BENCH_VALUE; status = g_io_channel_read_line(source, &result, NULL, NULL, NULL); if (status != G_IO_STATUS_NORMAL) { DEBUG("error while reading benchmark result"); r.result = -1.0f; if(bench_dialog) bench_dialog->r = r; gtk_dialog_response(GTK_DIALOG(bench_dialog->dialog),100); return FALSE; } if(result) r = bench_value_from_str(result); if(result && bench_dialog) bench_dialog->r = r; g_free(result); gtk_dialog_response(GTK_DIALOG(bench_dialog->dialog),GTK_RESPONSE_NONE); return FALSE; } static void do_benchmark(void (*benchmark_function)(void), int entry) { int old_priority = 0; if (params.skip_benchmarks) return; if (params.gui_running && !params.run_benchmark) { gchar *argv[] = {params.argv0, "-b",entries[entry].name,"-n",params.darkmode?"1":"0",NULL}; GPid bench_pid; gint bench_stdout; GtkWidget *bench_dialog = NULL; GtkWidget *bench_image; BenchmarkDialog *benchmark_dialog = NULL; GSpawnFlags spawn_flags = G_SPAWN_STDERR_TO_DEV_NULL; gchar *bench_status; GtkWidget *content_area, *box, *label; bench_value r = EMPTY_BENCH_VALUE; GIOChannel *channel=NULL; guint watch_id; gchar *title; gboolean done=FALSE; bench_results[entry] = r; bench_status = g_strdup_printf(_("Benchmarking: %s."), _(entries[entry].name)); shell_status_update(bench_status); g_free(bench_status); title=g_strdup_printf(_("Benchmarking: %s"),_(entries[entry].name)); bench_dialog = gtk_dialog_new_with_buttons (title, GTK_WINDOW(shell_get_main_shell()->transient_dialog), GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_MODAL, _("Stop"), GTK_RESPONSE_ACCEPT, NULL); g_free(title); content_area = gtk_dialog_get_content_area (GTK_DIALOG(bench_dialog)); bench_image = icon_cache_get_image_at_size(entries[entry].icon, 64, 64); #if GTK_CHECK_VERSION(3,0,0) box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 1); #else box = gtk_hbox_new(FALSE, 1); #endif label = gtk_label_new (_("Please do not move your mouse\nor press any keys.")); #if GTK_CHECK_VERSION(3,0,0) gtk_widget_set_halign (bench_image, GTK_ALIGN_START); #else gtk_misc_set_alignment(GTK_MISC(bench_image), 0.0, 0.0); #endif gtk_box_pack_start (GTK_BOX(box), bench_image, TRUE, TRUE, 10); gtk_box_pack_start (GTK_BOX(box), label, TRUE, TRUE, 10); gtk_container_add (GTK_CONTAINER(content_area), box); gtk_window_set_deletable(GTK_WINDOW(bench_dialog), FALSE); gtk_widget_show_all (bench_dialog); benchmark_dialog = g_new0(BenchmarkDialog, 1); benchmark_dialog->dialog = bench_dialog; benchmark_dialog->r = r; if (!g_path_is_absolute(params.argv0)) { spawn_flags |= G_SPAWN_SEARCH_PATH; } if (g_spawn_async_with_pipes(NULL, argv, NULL, spawn_flags, NULL, NULL, &bench_pid, NULL, &bench_stdout, NULL, NULL)) { channel = g_io_channel_unix_new(bench_stdout); watch_id = g_io_add_watch(channel, G_IO_IN, do_benchmark_handler, benchmark_dialog); switch (gtk_dialog_run(GTK_DIALOG(benchmark_dialog->dialog))) { case GTK_RESPONSE_NONE: if(benchmark_dialog) bench_results[entry] = benchmark_dialog->r; done=TRUE; break; case GTK_RESPONSE_ACCEPT: break; } if(!done) if(watch_id) g_source_remove(watch_id); if(!done) kill(bench_pid, SIGINT); if(!done) params.aborting_benchmarks=1; g_io_channel_unref(channel); if(benchmark_dialog && benchmark_dialog->dialog) gtk_widget_destroy(benchmark_dialog->dialog); g_free(benchmark_dialog); return; } if(benchmark_dialog && benchmark_dialog->dialog) gtk_widget_destroy(benchmark_dialog->dialog); g_free(benchmark_dialog); return; } setpriority(PRIO_PROCESS, 0, -20); benchmark_function(); setpriority(PRIO_PROCESS, 0, old_priority); } gchar *hi_module_get_name(void) { return g_strdup(_("Benchmarks")); } guchar hi_module_get_weight(void) { return 240; } ModuleEntry *hi_module_get_entries(void) { return entries; } const ModuleAbout *hi_module_get_about(void) { static const ModuleAbout ma = { .author = "L. A. F. Pereira", .description = N_("Perform tasks and compare with other systems"), .version = VERSION, .license = "GNU GPL version 2 or later.", }; return &ma; } static gchar *get_benchmark_results(gsize *len) { void (*scan_callback)(gboolean); JsonBuilder *builder; JsonGenerator *generator; bench_machine *this_machine; gchar *out; guint i; for (i = 0; i < G_N_ELEMENTS(entries); i++) { if (!entries[i].name || !entries[i].scan_callback) continue; if (entries[i].flags & MODULE_FLAG_HIDE) continue; scan_callback = entries[i].scan_callback; if (scan_callback) scan_callback(bench_results[i].result < 0.0); } this_machine = bench_machine_this(); builder = json_builder_new(); json_builder_begin_object(builder); for (i = 0; i < G_N_ELEMENTS(entries); i++) { if (!entries[i].name || entries[i].flags & MODULE_FLAG_HIDE) continue; if (bench_results[i].result < 0.0) { /* Benchmark failed? */ continue; } json_builder_set_member_name(builder, entries_english_name[i]); json_builder_begin_object(builder); #define ADD_JSON_VALUE(type, name, value) \ do { \ json_builder_set_member_name(builder, (name)); \ json_builder_add_##type##_value(builder, (value)); \ } while (0) ADD_JSON_VALUE(string, "Board", this_machine->board); ADD_JSON_VALUE(int, "MemoryInKiB", this_machine->memory_kiB); ADD_JSON_VALUE(string, "CpuName", this_machine->cpu_name); ADD_JSON_VALUE(string, "CpuDesc", this_machine->cpu_desc); ADD_JSON_VALUE(string, "CpuConfig", this_machine->cpu_config); ADD_JSON_VALUE(string, "CpuConfig", this_machine->cpu_config); ADD_JSON_VALUE(string, "OpenGlRenderer", this_machine->ogl_renderer); ADD_JSON_VALUE(string, "GpuDesc", this_machine->gpu_desc); ADD_JSON_VALUE(int, "NumCpus", this_machine->processors); ADD_JSON_VALUE(int, "NumCores", this_machine->cores); ADD_JSON_VALUE(int, "NumNodes", this_machine->nodes); ADD_JSON_VALUE(int, "NumThreads", this_machine->threads); ADD_JSON_VALUE(string, "MachineId", this_machine->mid); ADD_JSON_VALUE(int, "PointerBits", this_machine->ptr_bits); ADD_JSON_VALUE(boolean, "DataFromSuperUser", this_machine->is_su_data); ADD_JSON_VALUE(int, "PhysicalMemoryInMiB", this_machine->memory_phys_MiB); ADD_JSON_VALUE(string, "MemoryTypes", this_machine->ram_types); ADD_JSON_VALUE(int, "MachineDataVersion", this_machine->machine_data_version); ADD_JSON_VALUE(string, "MachineType", this_machine->machine_type); ADD_JSON_VALUE(string, "LinuxKernel", this_machine->linux_kernel); ADD_JSON_VALUE(string, "LinuxOS", this_machine->linux_os); ADD_JSON_VALUE(boolean, "Legacy", FALSE); ADD_JSON_VALUE(string, "ExtraInfo", bench_results[i].extra); if(params.bench_user_note){ ADD_JSON_VALUE(string, "UserNote", params.bench_user_note); }else{ ADD_JSON_VALUE(string, "UserNote", ""); } ADD_JSON_VALUE(double, "BenchmarkResult", bench_results[i].result); ADD_JSON_VALUE(double, "ElapsedTime", bench_results[i].elapsed_time); ADD_JSON_VALUE(int, "UsedThreads", bench_results[i].threads_used); ADD_JSON_VALUE(int, "BenchmarkVersion", bench_results[i].revision); ADD_JSON_VALUE(string, "PowerState", this_machine->power_state); ADD_JSON_VALUE(string, "GPU", this_machine->gpu_name); ADD_JSON_VALUE(string, "Storage", this_machine->storage); ADD_JSON_VALUE(string, "VulkanDriver", this_machine->vulkanDriver); ADD_JSON_VALUE(string, "VulkanDevice", this_machine->vulkanDevice); ADD_JSON_VALUE(string, "VulkanVersions", this_machine->vulkanVersions); #undef ADD_JSON_VALUE json_builder_end_object(builder); } json_builder_end_object(builder); generator = json_generator_new(); json_generator_set_root(generator, json_builder_get_root(builder)); json_generator_set_pretty(generator, TRUE); out = json_generator_to_data(generator, len); g_object_unref(generator); g_object_unref(builder); bench_machine_free(this_machine); return out; } static gchar *run_benchmark(gchar *name) { int i; for (i = 0; entries[i].name; i++) { if (g_str_equal(entries[i].name, name)) { void (*scan_callback)(gboolean rescan); if ((scan_callback = entries[i].scan_callback)) { scan_callback(FALSE); #define CHK_RESULT_FORMAT(F) \ (params.result_format && strcmp(params.result_format, F) == 0) if (params.run_benchmark) { if (CHK_RESULT_FORMAT("shell")) { bench_result *b = bench_result_this_machine(name, bench_results[i]); char *temp = bench_result_more_info_complete(b); bench_result_free(b); return temp; } /* defaults to "short" which is below */ } return bench_value_to_str(bench_results[i]); } } } return NULL; } const ShellModuleMethod *hi_exported_methods(void) { static const ShellModuleMethod m[] = { {"runBenchmark", run_benchmark}, {NULL}, }; return m; } void hi_module_init(void) { static SyncEntry se[] = { { .name = N_("Send benchmark results"), .file_name = "benchmark.json", .generate_contents_for_upload = get_benchmark_results, .optional = FALSE, }, { .name = N_("Receive benchmark results"), .file_name = "benchmark.json", .optional = FALSE, }, }; sync_manager_add_entry(&se[1]); sync_manager_add_entry(&se[0]); guint i; for (i = 0; i < G_N_ELEMENTS(entries) - 1 /* account for NULL */; i++) bench_results[i] = (bench_value)EMPTY_BENCH_VALUE; } gchar **hi_module_get_dependencies(void) { static gchar *deps[] = {"devices.so", NULL}; return deps; } hardinfo2-hardinfo2-1331e88/modules/benchmark/000077500000000000000000000000001474767047500211455ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/modules/benchmark/bench_results.c000066400000000000000000000431231474767047500241540ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2020 L. A. F. Pereira * This file: * Copyright (C) 2017 Burt P. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include #include #include #include #include "nice_name.h" /* in dmi_memory.c */ uint64_t memory_devices_get_system_memory_MiB(); gchar *memory_devices_get_system_memory_types_str(); /*!/ Used for an unknown value. Having it in only one place cleans up the .po * line references */ static const char *unk = N_("(Unknown)"); typedef struct { char *board; uint64_t memory_kiB; /* from /proc/meminfo -> MemTotal */ char *cpu_name; char *cpu_desc; char *cpu_config; char *ogl_renderer; char *gpu_desc; int processors; int cores; int threads; int nodes; char *mid; int ptr_bits; /* 32, 64... BENCH_PTR_BITS; 0 for unspecified */ int is_su_data; /* 1 = data collected as root */ uint64_t memory_phys_MiB; /* from DMI/SPD/DTree/Table/Blocks, etc. */ char *ram_types; int machine_data_version; char *machine_type; char *linux_kernel; /*kernelarch*/ char *linux_os; /*distroversion*/ char *power_state; char *gpu_name; char *storage; char *vulkanDriver; char *vulkanDevice; char *vulkanVersions; } bench_machine; typedef struct { char *name; bench_value bvalue; bench_machine *machine; int legacy; /* an old benchmark.conf result */ } bench_result; /* "2x 1400.00 MHz + 2x 800.00 MHz" -> 4400.0 */ static float cpu_config_val(char *str) { char *c = str; int t; float f, r = 0.0; if (str != NULL) { if (strchr(str, 'x')) { while (c != NULL && (sscanf(c, "%dx %f", &t, &f)==2)) { r += f * t; c = strchr(c + 1, '+'); if (c) c++; /* move past the + */ } } else { sscanf(c, "%f", &r); } } return r; } static void gen_machine_id(bench_machine *m) { char *s; if (m) { if (m->mid != NULL) free(m->mid); /* Don't try and translate unknown. The mid string needs to be made of * all untranslated elements.*/ m->mid = g_strdup_printf("%s;%s;%.2f", (m->board != NULL) ? m->board : "(Unknown)", m->cpu_name, cpu_config_val(m->cpu_config)); for (s = m->mid; *s; s++) { if (!isalnum(*s) && *s != '(' && *s != ')' && *s != ';') *s = '_'; } } } bench_machine *bench_machine_new() { return calloc(1, sizeof(bench_machine)); } bench_machine *bench_machine_this() { bench_machine *m = NULL; char *tmp; m = bench_machine_new(); if (m) { m->ptr_bits = BENCH_PTR_BITS; m->is_su_data = (getuid() == 0); m->board = module_call_method("devices::getMotherboard"); m->cpu_name = module_call_method("devices::getProcessorName"); m->cpu_desc = module_call_method("devices::getProcessorDesc"); m->cpu_config = module_call_method("devices::getProcessorFrequencyDesc"); m->gpu_desc = module_call_method("devices::getGPUList"); m->ogl_renderer = module_call_method("computer::getOGLRenderer"); tmp = module_call_method("computer::getMemoryTotal"); m->memory_kiB = strtoull(tmp, NULL, 10); free(tmp); m->memory_phys_MiB = memory_devices_get_system_memory_MiB(); m->ram_types = memory_devices_get_system_memory_types_str(); m->machine_type = module_call_method("computer::getMachineTypeEnglish"); m->linux_kernel = module_call_method("computer::getOSKernel"); m->linux_os = module_call_method("computer::getOS"); m->power_state = module_call_method("devices::getPowerState"); m->gpu_name = module_call_method("devices::getGPUname"); //m->storage = module_call_method("devices::getStorageDevicesModels"); m->storage = module_call_method("devices::getStorageHomeModels"); m->vulkanDriver = module_call_method("computer::getVulkanDriver"); m->vulkanDevice = module_call_method("computer::getVulkanDevice"); m->vulkanVersions = module_call_method("computer::getVulkanVersions"); cpu_procs_cores_threads_nodes(&m->processors, &m->cores, &m->threads, &m->nodes); gen_machine_id(m); } return m; } void bench_machine_free(bench_machine *s) { if (s) { free(s->board); free(s->cpu_name); free(s->cpu_desc); free(s->cpu_config); free(s->mid); free(s->ram_types); free(s->machine_type); free(s->linux_kernel); free(s->linux_os); free(s); } } void bench_result_free(bench_result *s) { if (s) { free(s->name); bench_machine_free(s->machine); g_free(s); } } bench_result *bench_result_this_machine(const char *bench_name, bench_value r) { bench_result *b = NULL; b = malloc(sizeof(bench_result)); if (b) { memset(b, 0, sizeof(bench_result)); b->machine = bench_machine_this(); b->name = strdup(bench_name); b->bvalue = r; b->legacy = 0; } return b; } static void filter_invalid_chars(gchar *str) { gchar *p; for (p = str; *p; p++) { if (*p == '\n' || *p == ';' || *p == '|') *p = '_'; } } static gboolean json_get_boolean(JsonObject *obj, const gchar *key) { if (!json_object_has_member(obj, key)) return FALSE; return json_object_get_boolean_member(obj, key); } static double json_get_double(JsonObject *obj, const gchar *key) { if (!json_object_has_member(obj, key)) return 0; return json_object_get_double_member(obj, key); } static int json_get_int(JsonObject *obj, const gchar *key) { if (!json_object_has_member(obj, key)) return 0; return json_object_get_int_member(obj, key); } static const gchar *json_get_string(JsonObject *obj, const gchar *key) { if (!json_object_has_member(obj, key)) return ""; return json_object_get_string_member(obj, key); } static gchar *json_get_string_dup(JsonObject *obj, const gchar *key) { return g_strdup(json_get_string(obj, key)); } static double parse_frequency(const char *freq) { static locale_t locale; if (!locale) locale = newlocale(LC_NUMERIC_MASK, "C", NULL); return strtod_l(freq, NULL, locale); } static void append_cpu_config(JsonObject *object, const gchar *member_name, JsonNode *member_node, gpointer user_data) { GString *output = user_data; if (output->len) g_string_append(output, ", "); g_string_append_printf(output, "%ldx %.2f %s", (long int)json_node_get_int(member_node), parse_frequency(member_name), _("MHz")); } static gchar *get_cpu_config(JsonObject *machine) { JsonObject *cpu_config_map=NULL; if(json_object_has_member(machine, "CpuConfigMap")) cpu_config_map=json_object_get_object_member(machine, "CpuConfigMap"); if (!cpu_config_map) return json_get_string_dup(machine, "CpuConfig"); GString *output = g_string_new(NULL); json_object_foreach_member(cpu_config_map, append_cpu_config, output); return g_string_free(output, FALSE); } static gchar *get_cpu_desc(JsonObject *machine) { int num_cpus = json_get_int(machine, "NumCpus"); if (!num_cpus) return json_get_string_dup(machine, "CpuDesc"); /* FIXME: This is adapted from processor_describe_default() in * devices.c! */ int num_cores = json_get_int(machine, "NumCores"); int num_threads = json_get_int(machine, "NumThreads"); int num_nodes = json_get_int(machine, "NumNodes"); const char *packs_fmt = ngettext("%d physical processor", "%d physical processors", num_cpus); const char *cores_fmt = ngettext("%d core", "%d cores", num_cores); const char *threads_fmt = ngettext("%d thread", "%d threads", num_threads); char *full_fmt, *ret; if (num_nodes > 1) { const char *nodes_fmt = ngettext("%d NUMA node", "%d NUMA nodes", num_nodes); full_fmt = g_strdup_printf( _(/*!/NP procs; NC cores across NN nodes; NT threads*/ "%s; %s across %s; %s"), packs_fmt, cores_fmt, nodes_fmt, threads_fmt); ret = g_strdup_printf(full_fmt, num_cpus, num_cores * num_nodes, num_nodes, num_threads); } else { full_fmt = g_strdup_printf(_(/*!/NP procs; NC cores; NT threads*/ "%s; %s; %s"), packs_fmt, cores_fmt, threads_fmt); ret = g_strdup_printf(full_fmt, num_cpus, num_cores, num_threads); } free(full_fmt); return ret; } bench_result *bench_result_benchmarkjson(const gchar *bench_name, JsonNode *node) { JsonObject *machine; bench_result *b; if (json_node_get_node_type(node) != JSON_NODE_OBJECT) return NULL; machine = json_node_get_object(node); b = g_new0(bench_result, 1); b->name = g_strdup(bench_name); b->legacy = json_get_boolean(machine, "Legacy"); b->bvalue = (bench_value){ .result = json_get_double(machine, "BenchmarkResult"), .elapsed_time = json_get_double(machine, "ElapsedTime"), .threads_used = json_get_int(machine, "UsedThreads"), .revision = json_get_int(machine, "BenchmarkVersion"),//Revision }; snprintf(b->bvalue.extra, sizeof(b->bvalue.extra), "%s", json_get_string(machine, "ExtraInfo")); filter_invalid_chars(b->bvalue.extra); int nodes = json_get_int(machine, "NumNodes"); if (nodes == 0) nodes = 1; b->machine = bench_machine_new(); *b->machine = (bench_machine){ .board = json_get_string_dup(machine, "Board"), .memory_kiB = json_get_int(machine, "MemoryInKiB"), .cpu_name = json_get_string_dup(machine, "CpuName"), .cpu_desc = get_cpu_desc(machine), .cpu_config = get_cpu_config(machine), .ogl_renderer = json_get_string_dup(machine, "OpenGlRenderer"), .gpu_desc = json_get_string_dup(machine, "GpuDesc"), .processors = json_get_int(machine, "NumCpus"), .cores = json_get_int(machine, "NumCores"), .threads = json_get_int(machine, "NumThreads"), .nodes = nodes, .mid = json_get_string_dup(machine, "MachineId"), .ptr_bits = json_get_int(machine, "PointerBits"), .is_su_data = json_get_boolean(machine, "DataFromSuperUser"), .memory_phys_MiB = json_get_int(machine, "PhysicalMemoryInMiB"), .ram_types = json_get_string_dup(machine, "MemoryTypes"), .machine_data_version = json_get_int(machine, "MachineDataVersion"), .machine_type = json_get_string_dup(machine, "MachineType"), .gpu_name= json_get_string_dup(machine, "GPU"), .storage= json_get_string_dup(machine, "Storage"), }; return b; } static char *bench_result_more_info_less(bench_result *b) { char *memory = NULL; if (b->machine->memory_phys_MiB) { memory = g_strdup_printf("%" PRId64 " %s %s", b->machine->memory_phys_MiB, _("MiB"), b->machine->ram_types); } else { memory = (b->machine->memory_kiB > 0) ? g_strdup_printf("%" PRId64 " %s %s", b->machine->memory_kiB, _("kiB"), problem_marker()) : g_strdup(_(unk)); } char bench_str[256] = ""; if (b->bvalue.revision >= 0) snprintf(bench_str, 127, "%d", b->bvalue.revision); char bits[24] = ""; if (b->machine->ptr_bits) snprintf(bits, 23, _("%d-bit"), b->machine->ptr_bits); char *ret = g_strdup_printf( "[%s]\n" /* threads */ "%s=%d\n" /* elapsed */ "%s=%0.4f %s\n" "%s=%s\n" "%s=%s\n" /* legacy */ "%s%s=%s\n" "[%s]\n" /* board */ "%s=%s\n" /* machine_type */ "%s=%s\n" /* cpu */ "%s=%s\n" /* cpudesc */ "%s=%s\n" /* cpucfg */ "%s=%s\n" /* threads */ "%s=%d\n" /* gpu desc */ "%s=%s\n" /* ogl rend */ "%s=%s\n" /* storage */ "%s=%s\n" /* mem */ "%s=%s\n" /* bits */ "%s=%s\n", _("Benchmark Result"), _("Threads"), b->bvalue.threads_used, _("Elapsed Time"), b->bvalue.elapsed_time, _("seconds"), *bench_str ? _("Revision") : "#Revision", bench_str, *b->bvalue.extra ? _("Extra Information") : "#Extra", b->bvalue.extra, b->legacy ? problem_marker() : "", b->legacy ? _("Note") : "#Note", b->legacy ? _("This result is from an old version of HardInfo. Results " "might not be comparable to current version. Some " "details are missing.") : "", _("Machine"), _("Board"), (b->machine->board != NULL) ? b->machine->board : _(unk), _("Machine Type"), (b->machine->machine_type != NULL) ? b->machine->machine_type : _(unk), _("CPU Name"), b->machine->cpu_name, _("CPU Description"), (b->machine->cpu_desc != NULL) ? b->machine->cpu_desc : _(unk), _("CPU Config"), b->machine->cpu_config, _("Threads Available"), b->machine->threads, _("GPU"), (b->machine->gpu_name != NULL) ? b->machine->gpu_name : (b->machine->gpu_desc != NULL) ? b->machine->gpu_desc : _(unk), _("OpenGL Renderer"), (b->machine->ogl_renderer != NULL) ? b->machine->ogl_renderer : _(unk), _("Storage"), (b->machine->storage != NULL) ? b->machine->storage : _(unk), _("Memory"), memory, b->machine->ptr_bits ? _("Pointer Size") : "#AddySize", bits); free(memory); return ret; } static char *bench_result_more_info_complete(bench_result *b) { char bench_str[256] = ""; strncpy(bench_str, b->name, 127); if (b->bvalue.revision >= 0) snprintf(bench_str + strlen(bench_str), 127, " (r%d)", b->bvalue.revision); char bits[24] = ""; if (b->machine->ptr_bits) snprintf(bits, 23, _("%d-bit"), b->machine->ptr_bits); return g_strdup_printf( "[%s]\n" /* bench name */ "%s=%s\n" /* threads */ "%s=%d\n" /* result */ "%s=%0.2f\n" /* elapsed */ "%s=%0.4f %s\n" "%s=%s\n" /* legacy */ "%s%s=%s\n" "[%s]\n" /* board */ "%s=%s\n" /* machine_type */ "%s=%s\n" /* linux_kernel */ "%s=%s\n" /* linux_os */ "%s=%s\n" /* cpu */ "%s=%s\n" /* cpudesc */ "%s=%s\n" /* cpucfg */ "%s=%s\n" /* threads */ "%s=%d\n" /* gpu desc */ "%s=%s\n" /* ogl rend */ "%s=%s\n" /* storage */ "%s=%s\n" /* mem */ "%s=%" PRId64 " %s\n" /* mem phys */ "%s=%" PRId64 " %s %s\n" /* bits */ "%s=%s\n" "%s=%d\n" "%s=%d\n" "[%s]\n" /* mid */ "%s=%s\n" /* cfg_val */ "%s=%.2f\n", _("Benchmark Result"), _("Benchmark"), bench_str, _("Threads"), b->bvalue.threads_used, _("Result"), b->bvalue.result, _("Elapsed Time"), b->bvalue.elapsed_time, _("seconds"), *b->bvalue.extra ? _("Extra Information") : "#Extra", b->bvalue.extra, b->legacy ? problem_marker() : "", b->legacy ? _("Note") : "#Note", b->legacy ? _("This result is from an old version of HardInfo. Results " "might not be comparable to current version. Some " "details are missing.") : "", _("Machine"), _("Board"), (b->machine->board != NULL) ? b->machine->board : _(unk), _("Machine Type"), (b->machine->machine_type != NULL) ? b->machine->machine_type : _(unk), _("Linux Kernel"), (b->machine->linux_kernel != NULL) ? b->machine->linux_kernel : _(unk), _("Linux OS"), (b->machine->linux_os != NULL) ? b->machine->linux_os : _(unk), _("CPU Name"), b->machine->cpu_name, _("CPU Description"), (b->machine->cpu_desc != NULL) ? b->machine->cpu_desc : _(unk), _("CPU Config"), b->machine->cpu_config, _("Threads Available"), b->machine->threads, _("GPU"), (b->machine->gpu_name != NULL) ? b->machine->gpu_name : (b->machine->gpu_desc != NULL) ? b->machine->gpu_desc : _(unk), _("OpenGL Renderer"), (b->machine->ogl_renderer != NULL) ? b->machine->ogl_renderer : _(unk), _("Storage"), (b->machine->storage != NULL) ? b->machine->storage : _(unk), _("Memory"), b->machine->memory_kiB, _("kiB"), _("Physical Memory"), b->machine->memory_phys_MiB, _("MiB"), b->machine->ram_types, b->machine->ptr_bits ? _("Pointer Size") : "#AddySize", bits, ".machine_data_version", b->machine->machine_data_version, ".is_su_data", b->machine->is_su_data, _("Handles"), _("mid"), b->machine->mid, _("cfg_val"), cpu_config_val(b->machine->cpu_config)); } char *bench_result_more_info(bench_result *b) { // return bench_result_more_info_complete(b); return bench_result_more_info_less(b); } hardinfo2-hardinfo2-1331e88/modules/benchmark/bench_util.c000066400000000000000000000026771474767047500234410ustar00rootroot00000000000000 #include "benchmark.h" #include "md5.h" gchar *get_test_data(gsize min_size) { gchar *bdata_path, *data; gsize data_size; gchar *exp_data, *p; gsize sz; bdata_path = g_build_filename(params.path_data, "benchmark.data", NULL); if (!g_file_get_contents(bdata_path, &data, &data_size, NULL)) { g_free(bdata_path); return NULL; } if (data_size < min_size) { DEBUG("expanding %lu bytes of test data to %lu bytes", data_size, min_size); exp_data = g_malloc(min_size + 1); memcpy(exp_data, data, data_size); p = exp_data + data_size; sz = data_size; while (sz < (min_size - data_size) ) { memcpy(p, data, data_size); p += data_size; sz += data_size; } strncpy(p, data, min_size - sz); g_free(data); data = exp_data; } g_free(bdata_path); return data; } char *digest_to_str(const char *digest, int len) { int max = len * 2; char *ret = malloc(max+1); char *p = ret; memset(ret, 0, max+1); int i = 0; for(; i < len; i++) { unsigned char byte = digest[i]; p += sprintf(p, "%02x", byte); } return ret; } char *md5_digest_str(const char *data, unsigned int len) { struct MD5Context ctx; guchar digest[16]; MD5Init(&ctx); MD5Update(&ctx, (guchar *)data, len); MD5Final(digest, &ctx); return digest_to_str((char *)digest, 16); } hardinfo2-hardinfo2-1331e88/modules/benchmark/benches.c000066400000000000000000000274731474767047500227350ustar00rootroot00000000000000/* * HardInfo - System Information and Benchmark * Copyright (C) 2003-2017 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ /* These are parts of modules/benchmark.c where specific benchmarks are defined. */ #define BENCH_CALLBACK(CN, BN, BID, R) \ gchar *CN() { \ DEBUG("BENCH CALLBACK %s\n",BN); \ params.aborting_benchmarks=0; \ if (R) \ return benchmark_include_results_reverse(bench_results[BID], BN); \ else \ return benchmark_include_results(bench_results[BID], BN); \ } #if(HARDINFO2_QT5) #define BENCH_SCAN_SIMPLE(SN, BF, BID, BN) \ void SN(gboolean reload) { \ static gboolean scanned=FALSE; \ if(params.aborting_benchmarks) return; \ if(reload || bench_results[BID].result<=0.0) scanned = FALSE; \ if(reload){DEBUG("BENCH SCAN RELOAD %s\n",BN);} else if(scanned) {DEBUG("BENCH SCAN OK %s\n",BN);}else{DEBUG("BENCH SCAN %s\n",BN);} \ if(scanned) return; \ if(BID!=BENCHMARK_OPENGL || params.gui_running || params.run_benchmark) \ do_benchmark(BF, BID); \ scanned = TRUE; \ } #else #define BENCH_SCAN_SIMPLE(SN, BF, BID, BN) \ void SN(gboolean reload) { \ static gboolean scanned=FALSE; \ if(params.aborting_benchmarks) return; \ if(reload || bench_results[BID].result<=0.0) scanned = FALSE; \ if(reload){DEBUG("BENCH SCAN RELOAD %s\n",BN);} else if(scanned) {DEBUG("BENCH SCAN OK %s\n",BN);}else{DEBUG("BENCH SCAN %s\n",BN);} \ if(scanned) return; \ do_benchmark(BF, BID); \ scanned = TRUE; \ } #endif #define BENCH_SIMPLE(BID, BN, BF, R) \ BENCH_CALLBACK(callback_##BF, BN, BID, R); \ BENCH_SCAN_SIMPLE(scan_##BF, BF, BID, BN); // ID, NAME, FUNCTION, R (0 = lower is better, 1 = higher is better) BENCH_SIMPLE(BENCHMARK_FIB, "CPU Fibonacci", benchmark_fib, 1); BENCH_SIMPLE(BENCHMARK_NQUEENS, "CPU N-Queens", benchmark_nqueens, 1); BENCH_SIMPLE(BENCHMARK_FFT, "FPU FFT", benchmark_fft, 1); BENCH_SIMPLE(BENCHMARK_RAYTRACE, "FPU Raytracing (Single-thread)", benchmark_raytrace, 1); BENCH_SIMPLE(BENCHMARK_BLOWFISH_SINGLE, "CPU Blowfish (Single-thread)", benchmark_bfish_single, 1); BENCH_SIMPLE(BENCHMARK_BLOWFISH_THREADS, "CPU Blowfish (Multi-thread)", benchmark_bfish_threads, 1); BENCH_SIMPLE(BENCHMARK_BLOWFISH_CORES, "CPU Blowfish (Multi-core)", benchmark_bfish_cores, 1); BENCH_SIMPLE(BENCHMARK_ZLIB, "CPU Zlib", benchmark_zlib, 1); BENCH_SIMPLE(BENCHMARK_CRYPTOHASH, "CPU CryptoHash", benchmark_cryptohash, 1); BENCH_SIMPLE(BENCHMARK_IPERF3_SINGLE, "Internal Network Speed", benchmark_iperf3_single, 1); #if(HARDINFO2_QT5) BENCH_SIMPLE(BENCHMARK_OPENGL, "GPU OpenGL Drawing", benchmark_opengl, 1); #endif BENCH_SIMPLE(BENCHMARK_SBCPU_SINGLE, "SysBench CPU (Single-thread)", benchmark_sbcpu_single, 1); BENCH_SIMPLE(BENCHMARK_SBCPU_ALL, "SysBench CPU (Multi-thread)", benchmark_sbcpu_all, 1); BENCH_SIMPLE(BENCHMARK_SBCPU_QUAD, "SysBench CPU (Four threads)", benchmark_sbcpu_quad, 1); BENCH_SIMPLE(BENCHMARK_MEMORY_SINGLE, "SysBench Memory (Single-thread)", benchmark_memory_single, 1); BENCH_SIMPLE(BENCHMARK_MEMORY_DUAL, "SysBench Memory (Two threads)", benchmark_memory_dual, 1); BENCH_SIMPLE(BENCHMARK_MEMORY_QUAD, "SysBench Memory (Quad threads)", benchmark_memory_quad, 1); BENCH_SIMPLE(BENCHMARK_MEMORY_ALL, "SysBench Memory (Multi-thread)", benchmark_memory_all, 1); BENCH_SIMPLE(BENCHMARK_STORAGE, "Storage R/W Speed", benchmark_storage, 1); BENCH_SIMPLE(BENCHMARK_CACHEMEM, "Cache/Memory", benchmark_cachemem, 1); BENCH_CALLBACK(callback_benchmark_gui, "GPU Drawing", BENCHMARK_GUI, 1); void scan_benchmark_gui(gboolean reload) { static gboolean scanned=FALSE; if(params.aborting_benchmarks) return; if (reload || bench_results[BENCHMARK_GUI].result<=0.0) scanned = FALSE; if (scanned) return; bench_value er = EMPTY_BENCH_VALUE; if (params.run_benchmark) { int argc = 0; ui_init(&argc, NULL); } if (params.gui_running || params.run_benchmark) { do_benchmark(benchmark_gui, BENCHMARK_GUI); } else { bench_results[BENCHMARK_GUI] = er; } scanned = TRUE; } //Note: Same order as entries, used for json to server static char *entries_english_name[] = { "CPU Blowfish (Single-thread)", "CPU Blowfish (Multi-thread)", "CPU Blowfish (Multi-core)", "CPU Zlib", "CPU CryptoHash", "CPU Fibonacci", "CPU N-Queens", "FPU FFT", "FPU Raytracing (Single-thread)", "Internal Network Speed", "SysBench CPU (Single-thread)", "SysBench CPU (Multi-thread)", "SysBench CPU (Four threads)", "SysBench Memory (Single-thread)", "SysBench Memory (Two threads)", "SysBench Memory (Quad threads)", "SysBench Memory (Multi-thread)", "GPU Drawing" #if(HARDINFO2_QT5) ,"GPU OpenGL Drawing" #endif ,"Storage R/W Speed" ,"Cache/Memory" }; static ModuleEntry entries[] = { [BENCHMARK_BLOWFISH_SINGLE] = { N_("CPU Blowfish (Single-thread)"), "blowfish.svg", callback_benchmark_bfish_single, scan_benchmark_bfish_single, MODULE_FLAG_BENCHMARK, }, [BENCHMARK_BLOWFISH_THREADS] = { N_("CPU Blowfish (Multi-thread)"), "blowfish.svg", callback_benchmark_bfish_threads, scan_benchmark_bfish_threads, MODULE_FLAG_BENCHMARK, }, [BENCHMARK_BLOWFISH_CORES] = { N_("CPU Blowfish (Multi-core)"), "blowfish.svg", callback_benchmark_bfish_cores, scan_benchmark_bfish_cores, MODULE_FLAG_BENCHMARK, }, [BENCHMARK_ZLIB] = { N_("CPU Zlib"), "compress.svg", callback_benchmark_zlib, scan_benchmark_zlib, MODULE_FLAG_BENCHMARK, }, [BENCHMARK_CRYPTOHASH] = { N_("CPU CryptoHash"), "cryptohash.svg", callback_benchmark_cryptohash, scan_benchmark_cryptohash, MODULE_FLAG_BENCHMARK, }, [BENCHMARK_FIB] = { N_("CPU Fibonacci"), "nautilus.svg", callback_benchmark_fib, scan_benchmark_fib, MODULE_FLAG_BENCHMARK, }, [BENCHMARK_NQUEENS] = { N_("CPU N-Queens"), "nqueens.svg", callback_benchmark_nqueens, scan_benchmark_nqueens, MODULE_FLAG_BENCHMARK, }, [BENCHMARK_FFT] = { N_("FPU FFT"), "fft.svg", callback_benchmark_fft, scan_benchmark_fft, MODULE_FLAG_BENCHMARK, }, [BENCHMARK_RAYTRACE] = { N_("FPU Raytracing (Single-thread)"), "raytrace.svg", callback_benchmark_raytrace, scan_benchmark_raytrace, MODULE_FLAG_BENCHMARK, }, [BENCHMARK_IPERF3_SINGLE] = { N_("Internal Network Speed"), "network.svg", callback_benchmark_iperf3_single, scan_benchmark_iperf3_single, MODULE_FLAG_BENCHMARK, }, [BENCHMARK_SBCPU_SINGLE] = { N_("SysBench CPU (Single-thread)"), "processor.svg", callback_benchmark_sbcpu_single, scan_benchmark_sbcpu_single, MODULE_FLAG_BENCHMARK, }, [BENCHMARK_SBCPU_ALL] = { N_("SysBench CPU (Multi-thread)"), "processor.svg", callback_benchmark_sbcpu_all, scan_benchmark_sbcpu_all, MODULE_FLAG_BENCHMARK, }, [BENCHMARK_SBCPU_QUAD] = { N_("SysBench CPU (Four threads)"), "processor.svg", callback_benchmark_sbcpu_quad, scan_benchmark_sbcpu_quad, MODULE_FLAG_BENCHMARK|MODULE_FLAG_HIDE, }, [BENCHMARK_MEMORY_SINGLE] = { N_("SysBench Memory (Single-thread)"), "memory.svg", callback_benchmark_memory_single, scan_benchmark_memory_single, MODULE_FLAG_BENCHMARK, }, [BENCHMARK_MEMORY_DUAL] = { N_("SysBench Memory (Two threads)"), "memory.svg", callback_benchmark_memory_dual, scan_benchmark_memory_dual, MODULE_FLAG_BENCHMARK|MODULE_FLAG_HIDE, }, [BENCHMARK_MEMORY_QUAD] = { N_("SysBench Memory (Quad threads)"), "memory.svg", callback_benchmark_memory_quad, scan_benchmark_memory_quad, MODULE_FLAG_BENCHMARK|MODULE_FLAG_HIDE, }, [BENCHMARK_MEMORY_ALL] = { N_("SysBench Memory (Multi-thread)"), "memory.svg", callback_benchmark_memory_all, scan_benchmark_memory_all, MODULE_FLAG_BENCHMARK, }, [BENCHMARK_GUI] = { N_("GPU Drawing"), "monitor.svg", callback_benchmark_gui, scan_benchmark_gui, MODULE_FLAG_BENCHMARK|MODULE_FLAG_NO_REMOTE, }, #if(HARDINFO2_QT5) [BENCHMARK_OPENGL] = { N_("GPU OpenGL Drawing"), "gpu.svg", callback_benchmark_opengl, scan_benchmark_opengl, MODULE_FLAG_BENCHMARK|MODULE_FLAG_NO_REMOTE, }, #endif [BENCHMARK_STORAGE] = { N_("Storage R/W Speed"), "hdd.svg", callback_benchmark_storage, scan_benchmark_storage, MODULE_FLAG_BENCHMARK, }, [BENCHMARK_CACHEMEM] = { N_("Cache/Memory"), "bolt.svg", callback_benchmark_cachemem, scan_benchmark_cachemem, MODULE_FLAG_BENCHMARK, }, {NULL}}; const gchar *hi_note_func(gint entry) { switch (entry) { case BENCHMARK_SBCPU_SINGLE: case BENCHMARK_SBCPU_QUAD: case BENCHMARK_SBCPU_ALL: return _("Alexey Kopytov's sysbench is required.\n" "Results in events/second. Higher is better."); case BENCHMARK_MEMORY_SINGLE: case BENCHMARK_MEMORY_DUAL: case BENCHMARK_MEMORY_QUAD: case BENCHMARK_MEMORY_ALL: return _("Alexey Kopytov's sysbench is required.\n" "Results in MiB/second. Higher is better."); case BENCHMARK_IPERF3_SINGLE: return _("iperf3 is required.\n" "Results in Gbits/s. Higher is better."); case BENCHMARK_CRYPTOHASH: case BENCHMARK_BLOWFISH_SINGLE: case BENCHMARK_BLOWFISH_THREADS: case BENCHMARK_BLOWFISH_CORES: case BENCHMARK_ZLIB: case BENCHMARK_FFT: case BENCHMARK_RAYTRACE: case BENCHMARK_FIB: case BENCHMARK_NQUEENS: return _("Results in HIMarks. Higher is better."); case BENCHMARK_GUI: return _("Results in HIMarks. Higher is better.\n" "Many Desktop Environments only uses software."); case BENCHMARK_STORAGE: case BENCHMARK_CACHEMEM: return _("Results in MB/s. Higher is better."); #if(HARDINFO2_QT5) case BENCHMARK_OPENGL: return _("Results in FPS. Higher is better."); #endif } return NULL; } hardinfo2-hardinfo2-1331e88/modules/benchmark/blowfish.c000066400000000000000000000472471474767047500231440ustar00rootroot00000000000000/* * blowfish.c: C implementation of the Blowfish algorithm. * Copyright (C) 1997 by Paul Kocher * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ /* COMMENTS ON USING THIS CODE: Normal usage is as follows: [1] Allocate a BLOWFISH_CTX. (It may be too big for the stack.) [2] Call Blowfish_Init with a pointer to your BLOWFISH_CTX, a pointer to the key, and the number of bytes in the key. [3] To encrypt a 64-bit block, call Blowfish_Encrypt with a pointer to BLOWFISH_CTX, a pointer to the 32-bit left half of the plaintext and a pointer to the 32-bit right half. The plaintext will be overwritten with the ciphertext. [4] Decryption is the same as encryption except that the plaintext and ciphertext are reversed. Warning #1: The code does not check key lengths. (Caveat encryptor.) Warning #2: Beware that Blowfish keys repeat such that "ab" = "abab". Warning #3: It is normally a good idea to zeroize the BLOWFISH_CTX before freeing it. Warning #4: Endianness conversions are the responsibility of the caller. (To encrypt bytes on a little-endian platforms, you'll probably want to swap bytes around instead of just casting.) Warning #5: Make sure to use a reasonable mode of operation for your application. (If you don't know what CBC mode is, see Warning #7.) Warning #6: This code is susceptible to timing attacks. Warning #7: Security engineering is risky and non-intuitive. Have someone check your work. If you don't know what you are doing, get help. This is code is fast enough for most applications, but is not optimized for speed. If you require this code under a license other than LGPL, please ask. (I can be located using your favorite search engine.) Unfortunately, I do not have time to provide unpaid support for everyone who uses this code. -- Paul Kocher */ #include "hardinfo.h" #include "benchmark.h" #include "blowfish.h" #define N 16 static const guint32 ORIG_P[16 + 2] = { 0x243F6A88L, 0x85A308D3L, 0x13198A2EL, 0x03707344L, 0xA4093822L, 0x299F31D0L, 0x082EFA98L, 0xEC4E6C89L, 0x452821E6L, 0x38D01377L, 0xBE5466CFL, 0x34E90C6CL, 0xC0AC29B7L, 0xC97C50DDL, 0x3F84D5B5L, 0xB5470917L, 0x9216D5D9L, 0x8979FB1BL }; static const guint32 ORIG_S[4][256] = { {0xD1310BA6L, 0x98DFB5ACL, 0x2FFD72DBL, 0xD01ADFB7L, 0xB8E1AFEDL, 0x6A267E96L, 0xBA7C9045L, 0xF12C7F99L, 0x24A19947L, 0xB3916CF7L, 0x0801F2E2L, 0x858EFC16L, 0x636920D8L, 0x71574E69L, 0xA458FEA3L, 0xF4933D7EL, 0x0D95748FL, 0x728EB658L, 0x718BCD58L, 0x82154AEEL, 0x7B54A41DL, 0xC25A59B5L, 0x9C30D539L, 0x2AF26013L, 0xC5D1B023L, 0x286085F0L, 0xCA417918L, 0xB8DB38EFL, 0x8E79DCB0L, 0x603A180EL, 0x6C9E0E8BL, 0xB01E8A3EL, 0xD71577C1L, 0xBD314B27L, 0x78AF2FDAL, 0x55605C60L, 0xE65525F3L, 0xAA55AB94L, 0x57489862L, 0x63E81440L, 0x55CA396AL, 0x2AAB10B6L, 0xB4CC5C34L, 0x1141E8CEL, 0xA15486AFL, 0x7C72E993L, 0xB3EE1411L, 0x636FBC2AL, 0x2BA9C55DL, 0x741831F6L, 0xCE5C3E16L, 0x9B87931EL, 0xAFD6BA33L, 0x6C24CF5CL, 0x7A325381L, 0x28958677L, 0x3B8F4898L, 0x6B4BB9AFL, 0xC4BFE81BL, 0x66282193L, 0x61D809CCL, 0xFB21A991L, 0x487CAC60L, 0x5DEC8032L, 0xEF845D5DL, 0xE98575B1L, 0xDC262302L, 0xEB651B88L, 0x23893E81L, 0xD396ACC5L, 0x0F6D6FF3L, 0x83F44239L, 0x2E0B4482L, 0xA4842004L, 0x69C8F04AL, 0x9E1F9B5EL, 0x21C66842L, 0xF6E96C9AL, 0x670C9C61L, 0xABD388F0L, 0x6A51A0D2L, 0xD8542F68L, 0x960FA728L, 0xAB5133A3L, 0x6EEF0B6CL, 0x137A3BE4L, 0xBA3BF050L, 0x7EFB2A98L, 0xA1F1651DL, 0x39AF0176L, 0x66CA593EL, 0x82430E88L, 0x8CEE8619L, 0x456F9FB4L, 0x7D84A5C3L, 0x3B8B5EBEL, 0xE06F75D8L, 0x85C12073L, 0x401A449FL, 0x56C16AA6L, 0x4ED3AA62L, 0x363F7706L, 0x1BFEDF72L, 0x429B023DL, 0x37D0D724L, 0xD00A1248L, 0xDB0FEAD3L, 0x49F1C09BL, 0x075372C9L, 0x80991B7BL, 0x25D479D8L, 0xF6E8DEF7L, 0xE3FE501AL, 0xB6794C3BL, 0x976CE0BDL, 0x04C006BAL, 0xC1A94FB6L, 0x409F60C4L, 0x5E5C9EC2L, 0x196A2463L, 0x68FB6FAFL, 0x3E6C53B5L, 0x1339B2EBL, 0x3B52EC6FL, 0x6DFC511FL, 0x9B30952CL, 0xCC814544L, 0xAF5EBD09L, 0xBEE3D004L, 0xDE334AFDL, 0x660F2807L, 0x192E4BB3L, 0xC0CBA857L, 0x45C8740FL, 0xD20B5F39L, 0xB9D3FBDBL, 0x5579C0BDL, 0x1A60320AL, 0xD6A100C6L, 0x402C7279L, 0x679F25FEL, 0xFB1FA3CCL, 0x8EA5E9F8L, 0xDB3222F8L, 0x3C7516DFL, 0xFD616B15L, 0x2F501EC8L, 0xAD0552ABL, 0x323DB5FAL, 0xFD238760L, 0x53317B48L, 0x3E00DF82L, 0x9E5C57BBL, 0xCA6F8CA0L, 0x1A87562EL, 0xDF1769DBL, 0xD542A8F6L, 0x287EFFC3L, 0xAC6732C6L, 0x8C4F5573L, 0x695B27B0L, 0xBBCA58C8L, 0xE1FFA35DL, 0xB8F011A0L, 0x10FA3D98L, 0xFD2183B8L, 0x4AFCB56CL, 0x2DD1D35BL, 0x9A53E479L, 0xB6F84565L, 0xD28E49BCL, 0x4BFB9790L, 0xE1DDF2DAL, 0xA4CB7E33L, 0x62FB1341L, 0xCEE4C6E8L, 0xEF20CADAL, 0x36774C01L, 0xD07E9EFEL, 0x2BF11FB4L, 0x95DBDA4DL, 0xAE909198L, 0xEAAD8E71L, 0x6B93D5A0L, 0xD08ED1D0L, 0xAFC725E0L, 0x8E3C5B2FL, 0x8E7594B7L, 0x8FF6E2FBL, 0xF2122B64L, 0x8888B812L, 0x900DF01CL, 0x4FAD5EA0L, 0x688FC31CL, 0xD1CFF191L, 0xB3A8C1ADL, 0x2F2F2218L, 0xBE0E1777L, 0xEA752DFEL, 0x8B021FA1L, 0xE5A0CC0FL, 0xB56F74E8L, 0x18ACF3D6L, 0xCE89E299L, 0xB4A84FE0L, 0xFD13E0B7L, 0x7CC43B81L, 0xD2ADA8D9L, 0x165FA266L, 0x80957705L, 0x93CC7314L, 0x211A1477L, 0xE6AD2065L, 0x77B5FA86L, 0xC75442F5L, 0xFB9D35CFL, 0xEBCDAF0CL, 0x7B3E89A0L, 0xD6411BD3L, 0xAE1E7E49L, 0x00250E2DL, 0x2071B35EL, 0x226800BBL, 0x57B8E0AFL, 0x2464369BL, 0xF009B91EL, 0x5563911DL, 0x59DFA6AAL, 0x78C14389L, 0xD95A537FL, 0x207D5BA2L, 0x02E5B9C5L, 0x83260376L, 0x6295CFA9L, 0x11C81968L, 0x4E734A41L, 0xB3472DCAL, 0x7B14A94AL, 0x1B510052L, 0x9A532915L, 0xD60F573FL, 0xBC9BC6E4L, 0x2B60A476L, 0x81E67400L, 0x08BA6FB5L, 0x571BE91FL, 0xF296EC6BL, 0x2A0DD915L, 0xB6636521L, 0xE7B9F9B6L, 0xFF34052EL, 0xC5855664L, 0x53B02D5DL, 0xA99F8FA1L, 0x08BA4799L, 0x6E85076AL}, {0x4B7A70E9L, 0xB5B32944L, 0xDB75092EL, 0xC4192623L, 0xAD6EA6B0L, 0x49A7DF7DL, 0x9CEE60B8L, 0x8FEDB266L, 0xECAA8C71L, 0x699A17FFL, 0x5664526CL, 0xC2B19EE1L, 0x193602A5L, 0x75094C29L, 0xA0591340L, 0xE4183A3EL, 0x3F54989AL, 0x5B429D65L, 0x6B8FE4D6L, 0x99F73FD6L, 0xA1D29C07L, 0xEFE830F5L, 0x4D2D38E6L, 0xF0255DC1L, 0x4CDD2086L, 0x8470EB26L, 0x6382E9C6L, 0x021ECC5EL, 0x09686B3FL, 0x3EBAEFC9L, 0x3C971814L, 0x6B6A70A1L, 0x687F3584L, 0x52A0E286L, 0xB79C5305L, 0xAA500737L, 0x3E07841CL, 0x7FDEAE5CL, 0x8E7D44ECL, 0x5716F2B8L, 0xB03ADA37L, 0xF0500C0DL, 0xF01C1F04L, 0x0200B3FFL, 0xAE0CF51AL, 0x3CB574B2L, 0x25837A58L, 0xDC0921BDL, 0xD19113F9L, 0x7CA92FF6L, 0x94324773L, 0x22F54701L, 0x3AE5E581L, 0x37C2DADCL, 0xC8B57634L, 0x9AF3DDA7L, 0xA9446146L, 0x0FD0030EL, 0xECC8C73EL, 0xA4751E41L, 0xE238CD99L, 0x3BEA0E2FL, 0x3280BBA1L, 0x183EB331L, 0x4E548B38L, 0x4F6DB908L, 0x6F420D03L, 0xF60A04BFL, 0x2CB81290L, 0x24977C79L, 0x5679B072L, 0xBCAF89AFL, 0xDE9A771FL, 0xD9930810L, 0xB38BAE12L, 0xDCCF3F2EL, 0x5512721FL, 0x2E6B7124L, 0x501ADDE6L, 0x9F84CD87L, 0x7A584718L, 0x7408DA17L, 0xBC9F9ABCL, 0xE94B7D8CL, 0xEC7AEC3AL, 0xDB851DFAL, 0x63094366L, 0xC464C3D2L, 0xEF1C1847L, 0x3215D908L, 0xDD433B37L, 0x24C2BA16L, 0x12A14D43L, 0x2A65C451L, 0x50940002L, 0x133AE4DDL, 0x71DFF89EL, 0x10314E55L, 0x81AC77D6L, 0x5F11199BL, 0x043556F1L, 0xD7A3C76BL, 0x3C11183BL, 0x5924A509L, 0xF28FE6EDL, 0x97F1FBFAL, 0x9EBABF2CL, 0x1E153C6EL, 0x86E34570L, 0xEAE96FB1L, 0x860E5E0AL, 0x5A3E2AB3L, 0x771FE71CL, 0x4E3D06FAL, 0x2965DCB9L, 0x99E71D0FL, 0x803E89D6L, 0x5266C825L, 0x2E4CC978L, 0x9C10B36AL, 0xC6150EBAL, 0x94E2EA78L, 0xA5FC3C53L, 0x1E0A2DF4L, 0xF2F74EA7L, 0x361D2B3DL, 0x1939260FL, 0x19C27960L, 0x5223A708L, 0xF71312B6L, 0xEBADFE6EL, 0xEAC31F66L, 0xE3BC4595L, 0xA67BC883L, 0xB17F37D1L, 0x018CFF28L, 0xC332DDEFL, 0xBE6C5AA5L, 0x65582185L, 0x68AB9802L, 0xEECEA50FL, 0xDB2F953BL, 0x2AEF7DADL, 0x5B6E2F84L, 0x1521B628L, 0x29076170L, 0xECDD4775L, 0x619F1510L, 0x13CCA830L, 0xEB61BD96L, 0x0334FE1EL, 0xAA0363CFL, 0xB5735C90L, 0x4C70A239L, 0xD59E9E0BL, 0xCBAADE14L, 0xEECC86BCL, 0x60622CA7L, 0x9CAB5CABL, 0xB2F3846EL, 0x648B1EAFL, 0x19BDF0CAL, 0xA02369B9L, 0x655ABB50L, 0x40685A32L, 0x3C2AB4B3L, 0x319EE9D5L, 0xC021B8F7L, 0x9B540B19L, 0x875FA099L, 0x95F7997EL, 0x623D7DA8L, 0xF837889AL, 0x97E32D77L, 0x11ED935FL, 0x16681281L, 0x0E358829L, 0xC7E61FD6L, 0x96DEDFA1L, 0x7858BA99L, 0x57F584A5L, 0x1B227263L, 0x9B83C3FFL, 0x1AC24696L, 0xCDB30AEBL, 0x532E3054L, 0x8FD948E4L, 0x6DBC3128L, 0x58EBF2EFL, 0x34C6FFEAL, 0xFE28ED61L, 0xEE7C3C73L, 0x5D4A14D9L, 0xE864B7E3L, 0x42105D14L, 0x203E13E0L, 0x45EEE2B6L, 0xA3AAABEAL, 0xDB6C4F15L, 0xFACB4FD0L, 0xC742F442L, 0xEF6ABBB5L, 0x654F3B1DL, 0x41CD2105L, 0xD81E799EL, 0x86854DC7L, 0xE44B476AL, 0x3D816250L, 0xCF62A1F2L, 0x5B8D2646L, 0xFC8883A0L, 0xC1C7B6A3L, 0x7F1524C3L, 0x69CB7492L, 0x47848A0BL, 0x5692B285L, 0x095BBF00L, 0xAD19489DL, 0x1462B174L, 0x23820E00L, 0x58428D2AL, 0x0C55F5EAL, 0x1DADF43EL, 0x233F7061L, 0x3372F092L, 0x8D937E41L, 0xD65FECF1L, 0x6C223BDBL, 0x7CDE3759L, 0xCBEE7460L, 0x4085F2A7L, 0xCE77326EL, 0xA6078084L, 0x19F8509EL, 0xE8EFD855L, 0x61D99735L, 0xA969A7AAL, 0xC50C06C2L, 0x5A04ABFCL, 0x800BCADCL, 0x9E447A2EL, 0xC3453484L, 0xFDD56705L, 0x0E1E9EC9L, 0xDB73DBD3L, 0x105588CDL, 0x675FDA79L, 0xE3674340L, 0xC5C43465L, 0x713E38D8L, 0x3D28F89EL, 0xF16DFF20L, 0x153E21E7L, 0x8FB03D4AL, 0xE6E39F2BL, 0xDB83ADF7L}, {0xE93D5A68L, 0x948140F7L, 0xF64C261CL, 0x94692934L, 0x411520F7L, 0x7602D4F7L, 0xBCF46B2EL, 0xD4A20068L, 0xD4082471L, 0x3320F46AL, 0x43B7D4B7L, 0x500061AFL, 0x1E39F62EL, 0x97244546L, 0x14214F74L, 0xBF8B8840L, 0x4D95FC1DL, 0x96B591AFL, 0x70F4DDD3L, 0x66A02F45L, 0xBFBC09ECL, 0x03BD9785L, 0x7FAC6DD0L, 0x31CB8504L, 0x96EB27B3L, 0x55FD3941L, 0xDA2547E6L, 0xABCA0A9AL, 0x28507825L, 0x530429F4L, 0x0A2C86DAL, 0xE9B66DFBL, 0x68DC1462L, 0xD7486900L, 0x680EC0A4L, 0x27A18DEEL, 0x4F3FFEA2L, 0xE887AD8CL, 0xB58CE006L, 0x7AF4D6B6L, 0xAACE1E7CL, 0xD3375FECL, 0xCE78A399L, 0x406B2A42L, 0x20FE9E35L, 0xD9F385B9L, 0xEE39D7ABL, 0x3B124E8BL, 0x1DC9FAF7L, 0x4B6D1856L, 0x26A36631L, 0xEAE397B2L, 0x3A6EFA74L, 0xDD5B4332L, 0x6841E7F7L, 0xCA7820FBL, 0xFB0AF54EL, 0xD8FEB397L, 0x454056ACL, 0xBA489527L, 0x55533A3AL, 0x20838D87L, 0xFE6BA9B7L, 0xD096954BL, 0x55A867BCL, 0xA1159A58L, 0xCCA92963L, 0x99E1DB33L, 0xA62A4A56L, 0x3F3125F9L, 0x5EF47E1CL, 0x9029317CL, 0xFDF8E802L, 0x04272F70L, 0x80BB155CL, 0x05282CE3L, 0x95C11548L, 0xE4C66D22L, 0x48C1133FL, 0xC70F86DCL, 0x07F9C9EEL, 0x41041F0FL, 0x404779A4L, 0x5D886E17L, 0x325F51EBL, 0xD59BC0D1L, 0xF2BCC18FL, 0x41113564L, 0x257B7834L, 0x602A9C60L, 0xDFF8E8A3L, 0x1F636C1BL, 0x0E12B4C2L, 0x02E1329EL, 0xAF664FD1L, 0xCAD18115L, 0x6B2395E0L, 0x333E92E1L, 0x3B240B62L, 0xEEBEB922L, 0x85B2A20EL, 0xE6BA0D99L, 0xDE720C8CL, 0x2DA2F728L, 0xD0127845L, 0x95B794FDL, 0x647D0862L, 0xE7CCF5F0L, 0x5449A36FL, 0x877D48FAL, 0xC39DFD27L, 0xF33E8D1EL, 0x0A476341L, 0x992EFF74L, 0x3A6F6EABL, 0xF4F8FD37L, 0xA812DC60L, 0xA1EBDDF8L, 0x991BE14CL, 0xDB6E6B0DL, 0xC67B5510L, 0x6D672C37L, 0x2765D43BL, 0xDCD0E804L, 0xF1290DC7L, 0xCC00FFA3L, 0xB5390F92L, 0x690FED0BL, 0x667B9FFBL, 0xCEDB7D9CL, 0xA091CF0BL, 0xD9155EA3L, 0xBB132F88L, 0x515BAD24L, 0x7B9479BFL, 0x763BD6EBL, 0x37392EB3L, 0xCC115979L, 0x8026E297L, 0xF42E312DL, 0x6842ADA7L, 0xC66A2B3BL, 0x12754CCCL, 0x782EF11CL, 0x6A124237L, 0xB79251E7L, 0x06A1BBE6L, 0x4BFB6350L, 0x1A6B1018L, 0x11CAEDFAL, 0x3D25BDD8L, 0xE2E1C3C9L, 0x44421659L, 0x0A121386L, 0xD90CEC6EL, 0xD5ABEA2AL, 0x64AF674EL, 0xDA86A85FL, 0xBEBFE988L, 0x64E4C3FEL, 0x9DBC8057L, 0xF0F7C086L, 0x60787BF8L, 0x6003604DL, 0xD1FD8346L, 0xF6381FB0L, 0x7745AE04L, 0xD736FCCCL, 0x83426B33L, 0xF01EAB71L, 0xB0804187L, 0x3C005E5FL, 0x77A057BEL, 0xBDE8AE24L, 0x55464299L, 0xBF582E61L, 0x4E58F48FL, 0xF2DDFDA2L, 0xF474EF38L, 0x8789BDC2L, 0x5366F9C3L, 0xC8B38E74L, 0xB475F255L, 0x46FCD9B9L, 0x7AEB2661L, 0x8B1DDF84L, 0x846A0E79L, 0x915F95E2L, 0x466E598EL, 0x20B45770L, 0x8CD55591L, 0xC902DE4CL, 0xB90BACE1L, 0xBB8205D0L, 0x11A86248L, 0x7574A99EL, 0xB77F19B6L, 0xE0A9DC09L, 0x662D09A1L, 0xC4324633L, 0xE85A1F02L, 0x09F0BE8CL, 0x4A99A025L, 0x1D6EFE10L, 0x1AB93D1DL, 0x0BA5A4DFL, 0xA186F20FL, 0x2868F169L, 0xDCB7DA83L, 0x573906FEL, 0xA1E2CE9BL, 0x4FCD7F52L, 0x50115E01L, 0xA70683FAL, 0xA002B5C4L, 0x0DE6D027L, 0x9AF88C27L, 0x773F8641L, 0xC3604C06L, 0x61A806B5L, 0xF0177A28L, 0xC0F586E0L, 0x006058AAL, 0x30DC7D62L, 0x11E69ED7L, 0x2338EA63L, 0x53C2DD94L, 0xC2C21634L, 0xBBCBEE56L, 0x90BCB6DEL, 0xEBFC7DA1L, 0xCE591D76L, 0x6F05E409L, 0x4B7C0188L, 0x39720A3DL, 0x7C927C24L, 0x86E3725FL, 0x724D9DB9L, 0x1AC15BB4L, 0xD39EB8FCL, 0xED545578L, 0x08FCA5B5L, 0xD83D7CD3L, 0x4DAD0FC4L, 0x1E50EF5EL, 0xB161E6F8L, 0xA28514D9L, 0x6C51133CL, 0x6FD5C7E7L, 0x56E14EC4L, 0x362ABFCEL, 0xDDC6C837L, 0xD79A3234L, 0x92638212L, 0x670EFA8EL, 0x406000E0L}, {0x3A39CE37L, 0xD3FAF5CFL, 0xABC27737L, 0x5AC52D1BL, 0x5CB0679EL, 0x4FA33742L, 0xD3822740L, 0x99BC9BBEL, 0xD5118E9DL, 0xBF0F7315L, 0xD62D1C7EL, 0xC700C47BL, 0xB78C1B6BL, 0x21A19045L, 0xB26EB1BEL, 0x6A366EB4L, 0x5748AB2FL, 0xBC946E79L, 0xC6A376D2L, 0x6549C2C8L, 0x530FF8EEL, 0x468DDE7DL, 0xD5730A1DL, 0x4CD04DC6L, 0x2939BBDBL, 0xA9BA4650L, 0xAC9526E8L, 0xBE5EE304L, 0xA1FAD5F0L, 0x6A2D519AL, 0x63EF8CE2L, 0x9A86EE22L, 0xC089C2B8L, 0x43242EF6L, 0xA51E03AAL, 0x9CF2D0A4L, 0x83C061BAL, 0x9BE96A4DL, 0x8FE51550L, 0xBA645BD6L, 0x2826A2F9L, 0xA73A3AE1L, 0x4BA99586L, 0xEF5562E9L, 0xC72FEFD3L, 0xF752F7DAL, 0x3F046F69L, 0x77FA0A59L, 0x80E4A915L, 0x87B08601L, 0x9B09E6ADL, 0x3B3EE593L, 0xE990FD5AL, 0x9E34D797L, 0x2CF0B7D9L, 0x022B8B51L, 0x96D5AC3AL, 0x017DA67DL, 0xD1CF3ED6L, 0x7C7D2D28L, 0x1F9F25CFL, 0xADF2B89BL, 0x5AD6B472L, 0x5A88F54CL, 0xE029AC71L, 0xE019A5E6L, 0x47B0ACFDL, 0xED93FA9BL, 0xE8D3C48DL, 0x283B57CCL, 0xF8D56629L, 0x79132E28L, 0x785F0191L, 0xED756055L, 0xF7960E44L, 0xE3D35E8CL, 0x15056DD4L, 0x88F46DBAL, 0x03A16125L, 0x0564F0BDL, 0xC3EB9E15L, 0x3C9057A2L, 0x97271AECL, 0xA93A072AL, 0x1B3F6D9BL, 0x1E6321F5L, 0xF59C66FBL, 0x26DCF319L, 0x7533D928L, 0xB155FDF5L, 0x03563482L, 0x8ABA3CBBL, 0x28517711L, 0xC20AD9F8L, 0xABCC5167L, 0xCCAD925FL, 0x4DE81751L, 0x3830DC8EL, 0x379D5862L, 0x9320F991L, 0xEA7A90C2L, 0xFB3E7BCEL, 0x5121CE64L, 0x774FBE32L, 0xA8B6E37EL, 0xC3293D46L, 0x48DE5369L, 0x6413E680L, 0xA2AE0810L, 0xDD6DB224L, 0x69852DFDL, 0x09072166L, 0xB39A460AL, 0x6445C0DDL, 0x586CDECFL, 0x1C20C8AEL, 0x5BBEF7DDL, 0x1B588D40L, 0xCCD2017FL, 0x6BB4E3BBL, 0xDDA26A7EL, 0x3A59FF45L, 0x3E350A44L, 0xBCB4CDD5L, 0x72EACEA8L, 0xFA6484BBL, 0x8D6612AEL, 0xBF3C6F47L, 0xD29BE463L, 0x542F5D9EL, 0xAEC2771BL, 0xF64E6370L, 0x740E0D8DL, 0xE75B1357L, 0xF8721671L, 0xAF537D5DL, 0x4040CB08L, 0x4EB4E2CCL, 0x34D2466AL, 0x0115AF84L, 0xE1B00428L, 0x95983A1DL, 0x06B89FB4L, 0xCE6EA048L, 0x6F3F3B82L, 0x3520AB82L, 0x011A1D4BL, 0x277227F8L, 0x611560B1L, 0xE7933FDCL, 0xBB3A792BL, 0x344525BDL, 0xA08839E1L, 0x51CE794BL, 0x2F32C9B7L, 0xA01FBAC9L, 0xE01CC87EL, 0xBCC7D1F6L, 0xCF0111C3L, 0xA1E8AAC7L, 0x1A908749L, 0xD44FBD9AL, 0xD0DADECBL, 0xD50ADA38L, 0x0339C32AL, 0xC6913667L, 0x8DF9317CL, 0xE0B12B4FL, 0xF79E59B7L, 0x43F5BB3AL, 0xF2D519FFL, 0x27D9459CL, 0xBF97222CL, 0x15E6FC2AL, 0x0F91FC71L, 0x9B941525L, 0xFAE59361L, 0xCEB69CEBL, 0xC2A86459L, 0x12BAA8D1L, 0xB6C1075EL, 0xE3056A0CL, 0x10D25065L, 0xCB03A442L, 0xE0EC6E0EL, 0x1698DB3BL, 0x4C98A0BEL, 0x3278E964L, 0x9F1F9532L, 0xE0D392DFL, 0xD3A0342BL, 0x8971F21EL, 0x1B0A7441L, 0x4BA3348CL, 0xC5BE7120L, 0xC37632D8L, 0xDF359F8DL, 0x9B992F2EL, 0xE60B6F47L, 0x0FE3F11DL, 0xE54CDA54L, 0x1EDAD891L, 0xCE6279CFL, 0xCD3E7E6FL, 0x1618B166L, 0xFD2C1D05L, 0x848FD2C5L, 0xF6FB2299L, 0xF523F357L, 0xA6327623L, 0x93A83531L, 0x56CCCD02L, 0xACF08162L, 0x5A75EBB5L, 0x6E163697L, 0x88D273CCL, 0xDE966292L, 0x81B949D0L, 0x4C50901BL, 0x71C65614L, 0xE6C6C7BDL, 0x327A140AL, 0x45E1D006L, 0xC3F27B9AL, 0xC9AA53FDL, 0x62A80F00L, 0xBB25BFE2L, 0x35BDD2F6L, 0x71126905L, 0xB2040222L, 0xB6CBCF7CL, 0xCD769C2BL, 0x53113EC0L, 0x1640E3D3L, 0x38ABBD60L, 0x2547ADF0L, 0xBA38209CL, 0xF746CE76L, 0x77AFA1C5L, 0x20756060L, 0x85CBFE4EL, 0x8AE88DD8L, 0x7AAAF9B0L, 0x4CF9AA7EL, 0x1948C25CL, 0x02FB8A8CL, 0x01C36AE4L, 0xD6EBE1F9L, 0x90D4F869L, 0xA65CDEA0L, 0x3F09252DL, 0xC208E69FL, 0xB74E6132L, 0xCE77E25BL, 0x578FDFE3L, 0x3AC372E6L} }; static guint32 F(BLOWFISH_CTX * ctx, guint32 x) { unsigned short a, b, c, d; guint32 y; d = (unsigned short) (x & 0xFF); x >>= 8; c = (unsigned short) (x & 0xFF); x >>= 8; b = (unsigned short) (x & 0xFF); x >>= 8; a = (unsigned short) (x & 0xFF); y = ctx->S[0][a] + ctx->S[1][b]; y = y ^ ctx->S[2][c]; y = y + ctx->S[3][d]; return y; } void Blowfish_Encrypt(BLOWFISH_CTX * ctx, guint32 *xl, guint32 *xr) { guint32 Xl; guint32 Xr; guint32 temp; short i; Xl = *xl; Xr = *xr; for (i = 0; i < N; ++i) { Xl = Xl ^ ctx->P[i]; Xr = F(ctx, Xl) ^ Xr; temp = Xl; Xl = Xr; Xr = temp; } temp = Xl; Xl = Xr; Xr = temp; Xr = Xr ^ ctx->P[N]; Xl = Xl ^ ctx->P[N + 1]; *xl = Xl; *xr = Xr; } void Blowfish_Decrypt(BLOWFISH_CTX * ctx, guint32 *xl, guint32 *xr) { guint32 Xl; guint32 Xr; guint32 temp; short i; Xl = *xl; Xr = *xr; for (i = N + 1; i > 1; --i) { Xl = Xl ^ ctx->P[i]; Xr = F(ctx, Xl) ^ Xr; /* Exchange Xl and Xr */ temp = Xl; Xl = Xr; Xr = temp; } /* Exchange Xl and Xr */ temp = Xl; Xl = Xr; Xr = temp; Xr = Xr ^ ctx->P[1]; Xl = Xl ^ ctx->P[0]; *xl = Xl; *xr = Xr; } void Blowfish_Init(BLOWFISH_CTX * ctx, unsigned char *key, int keyLen) { int i, j, k; guint32 data, datal, datar; for (i = 0; i < 4; i++) { for (j = 0; j < 256; j++) ctx->S[i][j] = ORIG_S[i][j]; } j = 0; for (i = 0; i < N + 2; ++i) { data = 0x00000000; for (k = 0; k < 4; ++k) { data = (data << 8) | key[j]; j = j + 1; if (j >= keyLen) j = 0; } ctx->P[i] = ORIG_P[i] ^ data; } datal = 0x00000000; datar = 0x00000000; for (i = 0; i < (N + 2-1); i += 2) { Blowfish_Encrypt(ctx, &datal, &datar); ctx->P[i] = datal; ctx->P[i + 1] = datar; } for (i = 0; i < 4; ++i) { for (j = 0; j < (256-1); j += 2) { Blowfish_Encrypt(ctx, &datal, &datar); ctx->S[i][j] = datal; ctx->S[i][j + 1] = datar; } } } hardinfo2-hardinfo2-1331e88/modules/benchmark/blowfish2.c000066400000000000000000000063171474767047500232170ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2017 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "hardinfo.h" #include "benchmark.h" #include "blowfish.h" /* if anything changes in this block, increment revision */ #define BENCH_REVISION 3 #define CRUNCH_TIME 7 #define BENCH_DATA_SIZE 65536 #define BENCH_DATA_MD5 "c25cf5c889f7bead2ff39788eedae37b" #define BLOW_KEY "Has my shampoo arrived?" #define BLOW_KEY_MD5 "6eac709cca51a228bfa70150c9c5a7c4" static gpointer bfish_exec(const void *in_data, gint thread_number) { char key[] = BLOW_KEY; unsigned char *data = NULL; unsigned long data_len = BENCH_DATA_SIZE, i = 0; BLOWFISH_CTX ctx; data = g_malloc(BENCH_DATA_SIZE); if(data){ memcpy(data, in_data, BENCH_DATA_SIZE); Blowfish_Init(&ctx, (guchar *)key, strlen(key)); for(i = 0; i < (data_len-sizeof(guint32)); i += 2*sizeof(guint32)) { Blowfish_Encrypt(&ctx, (guint32 *)&data[i], (guint32 *)&data[i+sizeof(guint32)]); } for(i = 0; i < (data_len-sizeof(guint32)); i += 2*sizeof(guint32)) { Blowfish_Decrypt(&ctx, (guint32 *)&data[i], (guint32 *)&data[i+sizeof(guint32)]); } g_free(data); } return NULL; } void benchmark_bfish_do(int threads, int entry, const char *status) { bench_value r = EMPTY_BENCH_VALUE; gchar *test_data = get_test_data(BENCH_DATA_SIZE); if (!test_data) return; shell_view_set_enabled(FALSE); shell_status_update(status); gchar *k = md5_digest_str(BLOW_KEY, strlen(BLOW_KEY)); if (!SEQ(k, BLOW_KEY_MD5)) bench_msg("test key has different md5sum: expected %s, actual %s", BLOW_KEY_MD5, k); gchar *d = md5_digest_str(test_data, BENCH_DATA_SIZE); if (!SEQ(d, BENCH_DATA_MD5)) bench_msg("test data has different md5sum: expected %s, actual %s", BENCH_DATA_MD5, d); r = benchmark_crunch_for(CRUNCH_TIME, threads, bfish_exec, test_data); r.result /= 100; r.revision = BENCH_REVISION; snprintf(r.extra, 255, "%0.1fs, k:%s, d:%s", (double)CRUNCH_TIME, k, d); g_free(test_data); g_free(k); g_free(d); bench_results[entry] = r; } void benchmark_bfish_threads(void) { benchmark_bfish_do(0, BENCHMARK_BLOWFISH_THREADS, "Performing Blowfish benchmark (multi-thread)..."); } void benchmark_bfish_single(void) { benchmark_bfish_do(1, BENCHMARK_BLOWFISH_SINGLE, "Performing Blowfish benchmark (single-thread)..."); } void benchmark_bfish_cores(void) { benchmark_bfish_do(-1, BENCHMARK_BLOWFISH_CORES, "Performing Blowfish benchmark (multi-core)..."); } hardinfo2-hardinfo2-1331e88/modules/benchmark/cachemem.c000066400000000000000000000066011474767047500230560ustar00rootroot00000000000000/* * hardinfo2 - System Information and Benchmark * Copyright (C) 2024 hardinfo2 project * Written by: hwspeedy * License: GPL2+ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License v2.0 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "hardinfo.h" #include "benchmark.h" #include #include #include #include #include /* if anything changes in this block, increment revision */ #define BENCH_REVISION 2 #define SZ 128L*1024*1024 #define ALIGN (1024*1024) void __attribute__ ((noinline)) mcpy(void *dst, void *src, size_t sz) {memcpy(dst, src, sz);} void cachemem_do_benchmark(char *dst, char *src, long sz, double *res){ double sec; unsigned long long repeat; repeat=1; while(repeat<=(1LL<<60)){ unsigned long long i=0; clock_t start = clock(); while(i0.01) break; if(sec<0.00001) repeat<<=10; else if(sec<0.0001) repeat<<=7; else if(sec<0.001) repeat<<=4; else repeat<<=1; } *res=(sz)/(sec*1024*1024*1024)*repeat; } static bench_value cacchemem_runtest(){ bench_value ret = EMPTY_BENCH_VALUE; char *buf; int i,cachespeed; double res[30]; long sz, l=0; clock_t start=clock(); buf=g_malloc(SZ+SZ+ALIGN); if(!buf) return ret; char *foo = (char*)((((unsigned long)buf) + (ALIGN-1)) & ~(ALIGN-1)); char *bar = foo + SZ; while(l * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "md5.h" #include "sha1.h" #include "benchmark.h" /* if anything changes in this block, increment revision */ #define BENCH_REVISION 3 #define BENCH_DATA_SIZE 65536 #define CRUNCH_TIME 5 #define BENCH_DATA_MD5 "c25cf5c889f7bead2ff39788eedae37b" #define STEPS 250 static gpointer cryptohash_for(void *in_data, gint thread_number) { unsigned int i; struct MD5Context md5_ctx; guchar md5_checksum[16]; SHA1_CTX sha1_ctx; guchar sha1_checksum[20]; for (i = 0;i <= STEPS; i++) { if (i & 1) { //md5_step(in_data, BENCH_DATA_SIZE); MD5Init(&md5_ctx); MD5Update(&md5_ctx, (guchar *)in_data, BENCH_DATA_SIZE); MD5Final(md5_checksum, &md5_ctx); } else { //sha1_step(in_data, BENCH_DATA_SIZE); SHA1Init(&sha1_ctx); SHA1Update(&sha1_ctx, (guchar*)in_data, BENCH_DATA_SIZE); SHA1Final(sha1_checksum, &sha1_ctx); } } return NULL; } void benchmark_cryptohash(void) { bench_value r = EMPTY_BENCH_VALUE; gchar *test_data = get_test_data(BENCH_DATA_SIZE); if (!test_data) return; shell_view_set_enabled(FALSE); shell_status_update("Running CryptoHash benchmark..."); gchar *d = md5_digest_str(test_data, BENCH_DATA_SIZE); if (!SEQ(d, BENCH_DATA_MD5)) bench_msg("test data has different md5sum: expected %s, actual %s", BENCH_DATA_MD5, d); r = benchmark_crunch_for(CRUNCH_TIME, 0, cryptohash_for, test_data); r.revision = BENCH_REVISION; snprintf(r.extra, 255, "r:%d, d:%s", STEPS, d); g_free(test_data); g_free(d); r.result /= 10; bench_results[BENCHMARK_CRYPTOHASH] = r; } hardinfo2-hardinfo2-1331e88/modules/benchmark/drawing.c000066400000000000000000000032371474767047500227510ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "benchmark.h" #include "guibench.h" #define BENCH_REVISION 5 void benchmark_gui(void) { bench_value r = EMPTY_BENCH_VALUE; static double frametime[5]; static int framecount[5]; shell_view_set_enabled(FALSE); shell_status_update("Running GPU Drawing..."); r.result = guibench(frametime,framecount); r.revision = BENCH_REVISION; #if GTK_CHECK_VERSION(3,0,0) snprintf(r.extra, 255, "g:3 f:%0.4f/%0.4f/%0.4f/%0.4f/%0.4f c:%d/%d/%d/%d/%d",frametime[0],frametime[1],frametime[2],frametime[3],frametime[4],framecount[0],framecount[1],framecount[2],framecount[3],framecount[4]); #else snprintf(r.extra, 255, "g:2 f:%0.4f/%0.4f/%0.4f/%0.4f/%0.4f c:%d/%d/%d/%d/%d",frametime[0],frametime[1],frametime[2],frametime[3],frametime[4],framecount[0],framecount[1],framecount[2],framecount[3],framecount[4]); #endif bench_results[BENCHMARK_GUI] = r; } hardinfo2-hardinfo2-1331e88/modules/benchmark/fbench.c000066400000000000000000000514271474767047500225470ustar00rootroot00000000000000/* John Walker's Floating Point Benchmark, derived from... Marinchip Interactive Lens Design System John Walker December 1980 By John Walker https://www.fourmilab.ch/ This program may be used, distributed, and modified freely as long as the origin information is preserved. This is a complete optical design raytracing algorithm, stripped of its user interface and recast into portable C. It not only determines execution speed on an extremely floating point (including trig function) intensive real-world application, it checks accuracy on an algorithm that is exquisitely sensitive to errors. The performance of this program is typically far more sensitive to changes in the efficiency of the trigonometric library routines than the average floating point program. The benchmark may be compiled in two modes. If the symbol INTRIG is defined, built-in trigonometric and square root routines will be used for all calculations. Timings made with INTRIG defined reflect the machine's basic floating point performance for the arithmetic operators. If INTRIG is not defined, the system library functions are used. Results with INTRIG not defined reflect the system's library performance and/or floating point hardware support for trig functions and square root. Results with INTRIG defined are a good guide to general floating point performance, while results with INTRIG undefined indicate the performance of an application which is math function intensive. Special note regarding errors in accuracy: this program has generated numbers identical to the last digit it formats and checks on the following machines, floating point architectures, and languages: Marinchip 9900 QBASIC IBM 370 double-precision (REAL * 8) format IBM PC / XT / AT Lattice C IEEE 64 bit, 80 bit temporaries High C same, in line 80x87 code BASICA "Double precision" Quick BASIC IEEE double precision, software routines Sun 3 C IEEE 64 bit, 80 bit temporaries, in-line 68881 code, in-line FPA code. MicroVAX II C Vax "G" format floating point Macintosh Plus MPW C SANE floating point, IEEE 64 bit format implemented in ROM. Inaccuracies reported by this program should be taken VERY SERIOUSLY INDEED, as the program has been demonstrated to be invariant under changes in floating point format, as long as the format is a recognised double precision format. If you encounter errors, please remember that they are just as likely to be in the floating point editing library or the trigonometric libraries as in the low level operator code. The benchmark assumes that results are basically reliable, and only tests the last result computed against the reference. If you're running on a suspect system you can compile this program with ACCURACY defined. This will generate a version which executes as an infinite loop, performing the ray trace and checking the results on every pass. All incorrect results will be reported. Representative timings are given below. All have been normalised as if run for 1000 iterations. Time in seconds Computer, Compiler, and notes Normal INTRIG 3466.00 4031.00 Commodore 128, 2 Mhz 8510 with software floating point. Abacus Software/Data-Becker Super-C 128, version 3.00, run in fast (2 Mhz) mode. Note: the results generated by this system differed from the reference results in the 8th to 10th decimal place. 3290.00 IBM PC/AT 6 Mhz, Microsoft/IBM BASICA version A3.00. Run with the "/d" switch, software floating point. 2131.50 IBM PC/AT 6 Mhz, Lattice C version 2.14, small model. This version of Lattice compiles subroutine calls which either do software floating point or use the 80x87. The machine on which I ran this had an 80287, but the results were so bad I wonder if it was being used. 1598.00 Macintosh Plus, MPW C, SANE Software floating point. 1582.13 Marinchip 9900 2 Mhz, QBASIC compiler with software floating point. This was a QBASIC version of the program which contained the identical algorithm. 404.00 IBM PC/AT 6 Mhz, Microsoft QuickBASIC version 2.0. Software floating point. 165.15 IBM PC/AT 6 Mhz, Metaware High C version 1.3, small model. This was compiled to call subroutines for floating point, and the machine contained an 80287 which was used by the subroutines. 143.20 Macintosh II, MPW C, SANE calls. I was unable to determine whether SANE was using the 68881 chip or not. 121.80 Sun 3/160 16 Mhz, Sun C. Compiled with -fsoft switch which executes floating point in software. 78.78 110.11 IBM RT PC (Model 6150). IBM AIX 1.0 C compiler with -O switch. 75.2 254.0 Microsoft Quick C 1.0, in-line 8087 instructions, compiled with 80286 optimisation on. (Switches were -Ol -FPi87-G2 -AS). Small memory model. 69.50 IBM PC/AT 6Mhz, Borland Turbo BASIC 1.0. Compiled in "8087 required" mode to generate in-line code for the math coprocessor. 66.96 IBM PC/AT 6Mhz, Microsoft QuickBASIC 4.0. This release of QuickBASIC compiles code for the 80287 math coprocessor. 66.36 206.35 IBM PC/AT 6Mhz, Metaware High C version 1.3, small model. This was compiled with in-line code for the 80287 math coprocessor. Trig functions still call library routines. 63.07 220.43 IBM PC/AT, 6Mhz, Borland Turbo C, in-line 8087 code, small model, word alignment, no stack checking, 8086 code mode. 17.18 Apollo DN-3000, 12 Mhz 68020 with 68881, compiled with in-line code for the 68881 coprocessor. According to Apollo, the library routines are chosen at runtime based on coprocessor presence. Since the coprocessor was present, the library is supposed to use in-line floating point code. 15.55 27.56 VAXstation II GPX. Compiled and executed under VAX/VMS C. 15.14 37.93 Macintosh II, Unix system V. Green Hills 68020 Unix compiler with in-line code for the 68881 coprocessor (-O -ZI switches). 12.69 Sun 3/160 16 Mhz, Sun C. Compiled with -fswitch, which calls a subroutine to select the fastest floating point processor. This was using the 68881. 11.74 26.73 Compaq Deskpro 386, 16 Mhz 80386 with 16 Mhz 80387. Metaware High C version 1.3, compiled with in-line for the math coprocessor (but not optimised for the 80386/80387). Trig functions still call library routines. 8.43 30.49 Sun 3/160 16 Mhz, Sun C. Compiled with -f68881, generating in-line MC68881 instructions. Trig functions still call library routines. 6.29 25.17 Sun 3/260 25 Mhz, Sun C. Compiled with -f68881, generating in-line MC68881 instructions. Trig functions still call library routines. 4.57 Sun 3/260 25 Mhz, Sun FORTRAN 77. Compiled with -O -f68881, generating in-line MC68881 instructions. Trig functions are compiled in-line. This used the FORTRAN 77 version of the program, FBFORT77.F. 4.00 14.20 Sun386i/25 Mhz model 250, Sun C compiler. 4.00 14.00 Sun386i/25 Mhz model 250, Metaware C. 3.10 12.00 Compaq 386/387 25 Mhz running SCO Xenix 2. Compiled with Metaware HighC 386, optimized for 386. 3.00 12.00 Compaq 386/387 25MHZ optimized for 386/387. 2.96 5.17 Sun 4/260, Sparc RISC processor. Sun C, compiled with the -O2 switch for global optimisation. 2.47 COMPAQ 486/25, secondary cache disabled, High C, 486/387, inline f.p., small memory model. 2.20 3.40 Data General Motorola 88000, 16 Mhz, Gnu C. 1.56 COMPAQ 486/25, 128K secondary cache, High C, 486/387, inline f.p., small memory model. 0.66 1.50 DEC Pmax, Mips processor. 0.63 0.91 Sun SparcStation 2, Sun C (SunOS 4.1.1) with -O4 optimisation and "/usr/lib/libm.il" inline floating point. 0.60 1.07 Intel 860 RISC processor, 33 Mhz, Greenhills C compiler. 0.40 0.90 Dec 3MAX, MIPS 3000 processor, -O4. 0.31 0.90 IBM RS/6000, -O. 0.1129 0.2119 Dell Dimension XPS P133c, Pentium 133 MHz, Windows 95, Microsoft Visual C 5.0. 0.0883 0.2166 Silicon Graphics Indigo², MIPS R4400, 175 Mhz, "-O3". 0.0351 0.0561 Dell Dimension XPS R100, Pentium II 400 MHz, Windows 98, Microsoft Visual C 5.0. 0.0312 0.0542 Sun Ultra 2, UltraSPARC V9, 300 MHz, Solaris 2.5.1. 0.00862 0.01074 Dell Inspiron 9100, Pentium 4, 3.4 GHz, gcc -O3. */ #include #include #include #ifndef INTRIG #include #endif #define cot(x) (1.0 / tan(x)) #define TRUE 1 #define FALSE 0 #define max_surfaces 10 /* Local variables */ /*static char tbfr[132];*/ static short current_surfaces; static short paraxial; static double clear_aperture; static double aberr_lspher; static double aberr_osc; static double aberr_lchrom; static double max_lspher; static double max_osc; static double max_lchrom; static double radius_of_curvature; static double object_distance; static double ray_height; static double axis_slope_angle; static double from_index; static double to_index; static double spectral_line[9]; static double s[max_surfaces][5]; static double od_sa[2][2]; /*static char outarr[8][80];*//* Computed output of program goes here */ static int itercount; /* The iteration counter for the main loop in the program is made global so that the compiler should not be allowed to optimise out the loop over the ray tracing code. */ #define ITERATIONS 300 static int niter = ITERATIONS; /* Iteration counter */ #if 0 static char *refarr[] = { /* Reference results. These happen to be derived from a run on Microsoft Quick BASIC on the IBM PC/AT. */ " Marginal ray 47.09479120920 0.04178472683", " Paraxial ray 47.08372160249 0.04177864821", "Longitudinal spherical aberration: -0.01106960671", " (Maximum permissible): 0.05306749907", "Offense against sine condition (coma): 0.00008954761", " (Maximum permissible): 0.00250000000", "Axial chromatic aberration: 0.00448229032", " (Maximum permissible): 0.05306749907" }; #endif /* The test case used in this program is the design for a 4 inch achromatic telescope objective used as the example in Wyld's classic work on ray tracing by hand, given in Amateur Telescope Making, Volume 3. */ static double testcase[4][4] = { {27.05, 1.5137, 63.6, 0.52}, {-16.68, 1, 0, 0.138}, {-16.68, 1.6164, 36.7, 0.38}, {-78.1, 1, 0, 0} }; /* Internal trig functions (used only if INTRIG is defined). These standard functions may be enabled to obtain timings that reflect the machine's floating point performance rather than the speed of its trig function evaluation. */ #ifdef INTRIG /* The following definitions should keep you from getting intro trouble with compilers which don't let you redefine intrinsic functions. */ #define sin I_sin #define cos I_cos #define tan I_tan #define sqrt I_sqrt #define atan I_atan #define atan2 I_atan2 #define asin I_asin #define fabs(x) ((x < 0.0) ? -x : x) #define pic 3.1415926535897932 /* Commonly used constants */ static double pi = pic, twopi = pic * 2.0, piover4 = pic / 4.0, fouroverpi = 4.0 / pic, piover2 = pic / 2.0; /* Coefficients for ATAN evaluation */ static double atanc[] = { 0.0, 0.4636476090008061165, 0.7853981633974483094, 0.98279372324732906714, 1.1071487177940905022, 1.1902899496825317322, 1.2490457723982544262, 1.2924966677897852673, 1.3258176636680324644 }; /* aint(x) Return integer part of number. Truncates towards 0 */ double aint(x) double x; { long l; /* Note that this routine cannot handle the full floating point number range. This function should be in the machine-dependent floating point library! */ l = x; if ((int) (-0.5) != 0 && l < 0) l++; x = l; return x; } /* sin(x) Return sine, x in radians */ static double sin(x) double x; { int sign; double y, r, z; x = (((sign = (x < 0.0)) != 0) ? -x : x); if (x > twopi) x -= (aint(x / twopi) * twopi); if (x > pi) { x -= pi; sign = !sign; } if (x > piover2) x = pi - x; if (x < piover4) { y = x * fouroverpi; z = y * y; r = y * (((((((-0.202253129293E-13 * z + 0.69481520350522E-11) * z - 0.17572474176170806E-8) * z + 0.313361688917325348E-6) * z - 0.365762041821464001E-4) * z + 0.249039457019271628E-2) * z - 0.0807455121882807815) * z + 0.785398163397448310); } else { y = (piover2 - x) * fouroverpi; z = y * y; r = ((((((-0.38577620372E-12 * z + 0.11500497024263E-9) * z - 0.2461136382637005E-7) * z + 0.359086044588581953E-5) * z - 0.325991886926687550E-3) * z + 0.0158543442438154109) * z - 0.308425137534042452) * z + 1.0; } return sign ? -r : r; } /* cos(x) Return cosine, x in radians, by identity */ static double cos(x) double x; { x = (x < 0.0) ? -x : x; if (x > twopi) /* Do range reduction here to limit */ x = x - (aint(x / twopi) * twopi); /* roundoff on add of PI/2 */ return sin(x + piover2); } /* tan(x) Return tangent, x in radians, by identity */ static double tan(x) double x; { return sin(x) / cos(x); } /* sqrt(x) Return square root. Initial guess, then Newton- Raphson refinement */ double sqrt(x) double x; { double c, cl, y; int n; if (x == 0.0) return 0.0; if (x < 0.0) { fprintf(stderr, "\nGood work! You tried to take the square root of %g", x); fprintf(stderr, "\nunfortunately, that is too complex for me to handle.\n"); exit(1); } y = (0.154116 + 1.893872 * x) / (1.0 + 1.047988 * x); c = (y - x / y) / 2.0; cl = 0.0; for (n = 50; c != cl && n--;) { y = y - c; cl = c; c = (y - x / y) / 2.0; } return y; } /* atan(x) Return arctangent in radians, range -pi/2 to pi/2 */ static double atan(x) double x; { int sign, l, y; double a, b, z; x = (((sign = (x < 0.0)) != 0) ? -x : x); l = 0; if (x >= 4.0) { l = -1; x = 1.0 / x; y = 0; goto atl; } else { if (x < 0.25) { y = 0; goto atl; } } y = aint(x / 0.5); z = y * 0.5; x = (x - z) / (x * z + 1); atl: z = x * x; b = ((((893025.0 * z + 49116375.0) * z + 425675250.0) * z + 1277025750.0) * z + 1550674125.0) * z + 654729075.0; a = (((13852575.0 * z + 216602100.0) * z + 891080190.0) * z + 1332431100.0) * z + 654729075.0; a = (a / b) * x + atanc[y]; if (l) a = piover2 - a; return sign ? -a : a; } /* atan2(y,x) Return arctangent in radians of y/x, range -pi to pi */ static double atan2(y, x) double y, x; { double temp; if (x == 0.0) { if (y == 0.0) /* Special case: atan2(0,0) = 0 */ return 0.0; else if (y > 0) return piover2; else return -piover2; } temp = atan(y / x); if (x < 0.0) { if (y >= 0.0) temp += pic; else temp -= pic; } return temp; } /* asin(x) Return arcsine in radians of x */ static double asin(x) double x; { if (fabs(x) > 1.0) { fprintf(stderr, "\nInverse trig functions lose much of their gloss when"); fprintf(stderr, "\ntheir arguments are greater than 1, such as the"); fprintf(stderr, "\nvalue %g you passed.\n", x); exit(1); } return atan2(x, sqrt(1 - x * x)); } #endif /* Calculate passage through surface If the variable PARAXIAL is true, the trace through the surface will be done using the paraxial approximations. Otherwise, the normal trigonometric trace will be done. This routine takes the following inputs: RADIUS_OF_CURVATURE Radius of curvature of surface being crossed. If 0, surface is plane. OBJECT_DISTANCE Distance of object focus from lens vertex. If 0, incoming rays are parallel and the following must be specified: RAY_HEIGHT Height of ray from axis. Only relevant if OBJECT.DISTANCE == 0 AXIS_SLOPE_ANGLE Angle incoming ray makes with axis at intercept FROM_INDEX Refractive index of medium being left TO_INDEX Refractive index of medium being entered. The outputs are the following variables: OBJECT_DISTANCE Distance from vertex to object focus after refraction. AXIS_SLOPE_ANGLE Angle incoming ray makes with axis at intercept after refraction. */ static void transit_surface() { double iang, /* Incidence angle */ rang, /* Refraction angle */ iang_sin, /* Incidence angle sin */ rang_sin, /* Refraction angle sin */ old_axis_slope_angle, sagitta; if (paraxial) { if (radius_of_curvature != 0.0) { if (object_distance == 0.0) { axis_slope_angle = 0.0; iang_sin = ray_height / radius_of_curvature; } else iang_sin = ((object_distance - radius_of_curvature) / radius_of_curvature) * axis_slope_angle; rang_sin = (from_index / to_index) * iang_sin; old_axis_slope_angle = axis_slope_angle; axis_slope_angle = axis_slope_angle + iang_sin - rang_sin; if (object_distance != 0.0) ray_height = object_distance * old_axis_slope_angle; object_distance = ray_height / axis_slope_angle; return; } object_distance = object_distance * (to_index / from_index); axis_slope_angle = axis_slope_angle * (from_index / to_index); return; } if (radius_of_curvature != 0.0) { if (object_distance == 0.0) { axis_slope_angle = 0.0; iang_sin = ray_height / radius_of_curvature; } else { iang_sin = ((object_distance - radius_of_curvature) / radius_of_curvature) * sin(axis_slope_angle); } iang = asin(iang_sin); rang_sin = (from_index / to_index) * iang_sin; old_axis_slope_angle = axis_slope_angle; axis_slope_angle = axis_slope_angle + iang - asin(rang_sin); sagitta = sin((old_axis_slope_angle + iang) / 2.0); sagitta = 2.0 * radius_of_curvature * sagitta * sagitta; object_distance = ((radius_of_curvature * sin(old_axis_slope_angle + iang)) * cot(axis_slope_angle)) + sagitta; return; } rang = -asin((from_index / to_index) * sin(axis_slope_angle)); object_distance = object_distance * ((to_index * cos(-rang)) / (from_index * cos (axis_slope_angle))); axis_slope_angle = -rang; } /* Perform ray trace in specific spectral line */ static void trace_line(int line, double ray_h) { int i; object_distance = 0.0; ray_height = ray_h; from_index = 1.0; for (i = 1; i <= current_surfaces; i++) { radius_of_curvature = s[i][1]; to_index = s[i][2]; if (to_index > 1.0) to_index = to_index + ((spectral_line[4] - spectral_line[line]) / (spectral_line[3] - spectral_line[6])) * ((s[i][2] - 1.0) / s[i][3]); transit_surface(); from_index = to_index; if (i < current_surfaces) object_distance = object_distance - s[i][4]; } } /* Initialise when called the first time */ void fbench() { int i, j; double od_fline, od_cline; spectral_line[1] = 7621.0; /* A */ spectral_line[2] = 6869.955; /* B */ spectral_line[3] = 6562.816; /* C */ spectral_line[4] = 5895.944; /* D */ spectral_line[5] = 5269.557; /* E */ spectral_line[6] = 4861.344; /* F */ spectral_line[7] = 4340.477; /* G' */ spectral_line[8] = 3968.494; /* H */ /* Load test case into working array */ clear_aperture = 4.0; current_surfaces = 4; for (i = 0; i < current_surfaces; i++) for (j = 0; j < 4; j++) s[i + 1][j + 1] = testcase[i][j]; for (itercount = 0; itercount < niter; itercount++) { /* Do main trace in D light */ paraxial = FALSE; trace_line(4, clear_aperture / 2.0); od_sa[0][0] = object_distance; od_sa[0][1] = axis_slope_angle; paraxial = TRUE; trace_line(4, clear_aperture / 2.0); od_sa[1][0] = object_distance; od_sa[1][1] = axis_slope_angle; paraxial = FALSE; /* Trace marginal ray in C */ trace_line(3, clear_aperture / 2.0); od_cline = object_distance; /* Trace marginal ray in F */ trace_line(6, clear_aperture / 2.0); od_fline = object_distance; aberr_lspher = od_sa[1][0] - od_sa[0][0]; aberr_osc = 1.0 - (od_sa[1][0] * od_sa[1][1]) / (sin(od_sa[0][1]) * od_sa[0][0]); aberr_lchrom = od_fline - od_cline; max_lspher = sin(od_sa[0][1]); /* D light */ max_lspher = 0.0000926 / (max_lspher * max_lspher); max_osc = 0.0025; max_lchrom = max_lspher; } } #ifdef __FBENCH_TEST__ int main(void) { fbench(); return 0; } #endif hardinfo2-hardinfo2-1331e88/modules/benchmark/fft.c000066400000000000000000000037201474767047500220720ustar00rootroot00000000000000/* * HardInfo - System Information and Benchmark * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "hardinfo.h" #include "cpu_util.h" #include "benchmark.h" #include "fftbench.h" /* if anything changes in this block, increment revision */ #define BENCH_REVISION 3 #define CRUNCH_TIME 5 static gpointer fft_for(void *in_data, gint thread_number) { FFTBench **benches = (FFTBench **)in_data; fft_bench_run(benches[thread_number]); return NULL; } void benchmark_fft(void) { int cpu_procs, cpu_cores, cpu_threads, cpu_nodes; bench_value r = EMPTY_BENCH_VALUE; int i; FFTBench **benches=NULL; shell_view_set_enabled(FALSE); shell_status_update("Running FFT benchmark..."); cpu_procs_cores_threads_nodes(&cpu_procs, &cpu_cores, &cpu_threads, &cpu_nodes); /* Pre-allocate all benchmarks */ benches = g_new0(FFTBench *, cpu_threads); for (i = 0; i < cpu_threads; i++) {benches[i] = fft_bench_new();} /* Run the benchmark */ r = benchmark_crunch_for(CRUNCH_TIME, 0, fft_for, benches); /* Free up the memory */ for (i = 0; i < cpu_threads; i++) { fft_bench_free(benches[i]); } g_free(benches); r.result /= 100; r.revision = BENCH_REVISION; bench_results[BENCHMARK_FFT] = r; } hardinfo2-hardinfo2-1331e88/modules/benchmark/fftbench.c000066400000000000000000000077631474767047500231050ustar00rootroot00000000000000/* fftbench.c Written by Scott Robert Ladd (scott@coyotegulch.com) No rights reserved. This is public domain software, for use by anyone. A number-crunching benchmark using LUP-decomposition to solve a large linear equation. The code herein is design for the purpose of testing computational performance; error handling is minimal. In fact, this is a weak implementation of the FFT; unfortunately, all of my really nifty FFTs are in commercial code, and I haven't had time to write a new FFT routine for this benchmark. I may add a Hartley transform to the seat, too. Actual benchmark results can be found at: http://scottrobertladd.net/coyotegulch/ Please do not use this information or algorithm in any way that might upset the balance of the universe or otherwise cause a disturbance in the space-time continuum. */ #include #include #include #include #include #include #include "fftbench.h" // embedded random number generator; ala Park and Miller static long seed = 1325; static const long IA = 16807; static const long IM = 2147483647; static const double AM = 4.65661287525E-10; static const long IQ = 127773; static const long IR = 2836; static const long MASK = 123459876; static double random_double() { long k; double result; seed ^= MASK; k = seed / IQ; seed = IA * (seed - k * IQ) - IR * k; if (seed < 0) seed += IM; result = AM * seed; seed ^= MASK; return result; } static const int N = 100; static const int NM1 = 99; // N - 1 //static const int NP1 = 101; // N + 1 static void lup_decompose(FFTBench *fftbench) { int i, j, k, k2=0, t; double p, temp, **a; int *perm = (int *) malloc(sizeof(double) * N); free(fftbench->p); fftbench->p = perm; a = fftbench->a; for (i = 0; i < N; ++i) perm[i] = i; for (k = 0; k < NM1; ++k) { p = 0.0; for (i = k; i < N; ++i) { temp = fabs(a[i][k]); if (temp > p) { p = temp; k2 = i; } } // check for invalid a if (p == 0.0) return; // exchange rows t = perm[k]; perm[k] = perm[k2]; perm[k2] = t; for (i = 0; i < N; ++i) { temp = a[k][i]; a[k][i] = a[k2][i]; a[k2][i] = temp; } for (i = k + 1; i < N; ++i) { a[i][k] /= a[k][k]; for (j = k + 1; j < N; ++j) a[i][j] -= a[i][k] * a[k][j]; } } } static double *lup_solve(FFTBench *fftbench) { int i, j, j2; double sum, u; double *y = (double *) malloc(sizeof(double) * N); double *x = (double *) malloc(sizeof(double) * N); double **a = fftbench->a; double *b = fftbench->b; int *perm = fftbench->p; for (i = 0; i < N; ++i) { y[i] = 0.0; x[i] = 0.0; } for (i = 0; i < N; ++i) { sum = 0.0; j2 = 0; for (j = 1; j <= i; ++j) { sum += a[i][j2] * y[j2]; ++j2; } y[i] = b[perm[i]] - sum; } i = NM1; while (1) { sum = 0.0; u = a[i][i]; for (j = i + 1; j < N; ++j) sum += a[i][j] * x[j]; x[i] = (y[i] - sum) / u; if (i == 0) break; --i; } free(y); return x; } FFTBench *fft_bench_new(void) { FFTBench *fftbench; int i, j; fftbench = g_new0(FFTBench, 1); // generate test data fftbench->a = (double **) malloc(sizeof(double *) * N); for (i = 0; i < N; ++i) { fftbench->a[i] = (double *) malloc(sizeof(double) * N); for (j = 0; j < N; ++j) fftbench->a[i][j] = random_double(); } fftbench->b = (double *) malloc(sizeof(double) * N); fftbench->p = NULL; for (i = 0; i < N; ++i) fftbench->b[i] = random_double(); return fftbench; } void fft_bench_run(FFTBench *fftbench) { lup_decompose(fftbench); double *x = lup_solve(fftbench); free(x); } void fft_bench_free(FFTBench *fftbench) { int i; // clean up for (i = 0; i < N; ++i) free(fftbench->a[i]); free(fftbench->a); free(fftbench->b); free(fftbench->p); free(fftbench->r); g_free(fftbench); } hardinfo2-hardinfo2-1331e88/modules/benchmark/fib.c000066400000000000000000000030631474767047500220530ustar00rootroot00000000000000/* * HardInfo - System Information and Benchmark * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "benchmark.h" /* if anything changes in this block, increment revision */ #define BENCH_REVISION 2 #define ANSWER 25 #define CRUNCH_TIME 5 gulong fib(gulong n) { if (n == 0) return 0; else if (n <= 2) return 1; return fib(n - 1) + fib(n - 2); } static gpointer fib_for(void *in_data, gint thread_number) { fib(ANSWER); return NULL; } void benchmark_fib(void) { bench_value r = EMPTY_BENCH_VALUE; shell_view_set_enabled(FALSE); shell_status_update("Calculating Fibonacci number..."); r = benchmark_crunch_for(CRUNCH_TIME, 0, fib_for, NULL); //r.threads_used = 1; r.result /= 100; r.revision = BENCH_REVISION; snprintf(r.extra, 255, "a:%d", ANSWER); bench_results[BENCHMARK_FIB] = r; } hardinfo2-hardinfo2-1331e88/modules/benchmark/guibench.c000066400000000000000000000151701474767047500231010ustar00rootroot00000000000000/* * hardinfo2 - System Information and Benchmark * Copyright (C) 2024-2024 hwspeedy - hardinfo2 project * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include #include #include #include #include "iconcache.h" #include "config.h" #include "hardinfo.h" #define CRUNCH_TIME 3 static int darkmode; static int count=0; static int testnumber=0; static GTimer *timer,*frametimer; static gdouble score = 0.0f; static GdkPixbuf *pixbufs[3]; static GRand *r; double *frametime; int *framecount; gboolean on_draw (GtkWidget *widget, GdkEventExpose *event, gpointer data) { #if GTK_CHECK_VERSION(3,0,0) const int divfactor[5]={2231,2122,2113,2334,2332}; #else //Note: OLD GTK does not do the same amount of work const int divfactor[5]={12231,12122,12113,12334,12332}; #endif const int iterations[5]={100,300,100,300,100}; int i; cairo_t * cr; GdkWindow* window = gtk_widget_get_window(widget); #if GTK_CHECK_VERSION(3,22,0) cairo_region_t * cairoRegion = cairo_region_create(); GdkDrawingContext * drawingContext; drawingContext = gdk_window_begin_draw_frame (window,cairoRegion); cr = gdk_drawing_context_get_cairo_context (drawingContext); #else cr = gdk_cairo_create(window); #endif g_timer_continue(frametimer); for (i = iterations[testnumber]; i >= 0; i--) { switch(testnumber) { case 0 : //Line Drawing cairo_move_to(cr, g_rand_int_range(r,0,1024), g_rand_int_range(r,0,800)); cairo_set_source_rgb(cr,g_rand_double_range(r,0.2,0.8),g_rand_double_range(r,0.2,0.8),g_rand_double_range(r,0.2,0.8)); cairo_line_to(cr, g_rand_int_range(r,0,1024), g_rand_int_range(r,0,800)); cairo_stroke(cr); break; case 1 : //Shape Drawing cairo_rectangle(cr,g_rand_int_range(r,0,1024-200),g_rand_int_range(r,0,800-200),g_rand_int_range(r,0,400),g_rand_int_range(r,0,300)); cairo_set_source_rgb(cr,g_rand_double_range(r,0.2,0.8),g_rand_double_range(r,0.2,0.8),g_rand_double_range(r,0.2,0.8)); cairo_stroke(cr); break; case 2 : //Filled Shape Drawing cairo_rectangle(cr,g_rand_int_range(r,0,1024-200),g_rand_int_range(r,0,800-200),g_rand_int_range(r,0,400),g_rand_int_range(r,0,300)); if(darkmode){ cairo_set_source_rgb(cr,g_rand_double_range(r,0.0,0.3),g_rand_double_range(r,0.0,0.3),g_rand_double_range(r,0.0,0.3)); }else{ cairo_set_source_rgb(cr,g_rand_double_range(r,0.7,0.9),g_rand_double_range(r,0.7,0.9),g_rand_double_range(r,0.7,0.9)); } cairo_fill(cr); break; case 3 : //Text Drawing cairo_move_to(cr,g_rand_int_range(r,0,1024-100),g_rand_int_range(r,0,800)); cairo_set_font_size(cr,25); cairo_set_source_rgb(cr,g_rand_double_range(r,0.2,0.8),g_rand_double_range(r,0.2,0.8),g_rand_double_range(r,0.2,0.8)); cairo_show_text(cr, "I \342\231\245 hardinfo2"); break; // case 4 : //Icon Blitting gdk_cairo_set_source_pixbuf (cr, pixbufs[g_rand_int_range(r,0,3)],g_rand_int_range(r,0,1024-64), g_rand_int_range(r,0,800-64)); cairo_paint(cr); break; } } g_timer_stop(frametimer); #if GTK_CHECK_VERSION(3,22,0) gdk_window_end_draw_frame(window,drawingContext); #endif count++; if(g_timer_elapsed(timer, NULL) %d =>score:%f (frametime=%f)",testnumber,count,score,g_timer_elapsed(frametimer,NULL)); count=0; testnumber++; //Done if(testnumber>=5){ gtk_main_quit(); } else { g_timer_start(frametimer); g_timer_stop(frametimer); g_timer_start(timer); gtk_widget_queue_draw_area(widget,0,0,1024,800); } } // cleanup #if GTK_CHECK_VERSION(3,22,0) cairo_region_destroy(cairoRegion); #endif return FALSE; } double guibench(double *frameTime, int *frameCount) { #if GTK_CHECK_VERSION(3, 0, 0) GtkCssProvider *provider; provider = gtk_css_provider_new(); #endif GtkWindow * window; frametime=frameTime; framecount=frameCount; DEBUG("GUIBENCH"); pixbufs[0] = icon_cache_get_pixbuf_at_size("hardinfo2.svg",64,64); pixbufs[1] = icon_cache_get_pixbuf_at_size("sync.svg",64,64); pixbufs[2] = icon_cache_get_pixbuf_at_size("report.svg",64,64); r = g_rand_new(); // window setup window = (GtkWindow*)gtk_window_new(GTK_WINDOW_TOPLEVEL); darkmode=(params.max_bench_results==1?1:0); //darkmode set by hardinfo2 #if GTK_CHECK_VERSION(3, 0, 0) if(darkmode){ gtk_css_provider_load_from_data(provider, "window { background-color: rgba(0x0, 0x0, 0x0, 1); } ", -1, NULL); gtk_style_context_add_provider(gtk_widget_get_style_context((GtkWidget *)window), GTK_STYLE_PROVIDER(provider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); } #endif gtk_window_set_default_size (window, 1024, 800); gtk_window_set_position (window, GTK_WIN_POS_CENTER); gtk_window_set_title (window, "GPU Benchmarking..."); g_signal_connect(window, "destroy", gtk_main_quit, NULL); // create the are we can draw in GtkDrawingArea* drawingArea; drawingArea = (GtkDrawingArea*) gtk_drawing_area_new(); gtk_container_add(GTK_CONTAINER(window), (GtkWidget*)drawingArea); #if GTK_CHECK_VERSION(3,0,0) g_signal_connect((GtkWidget*)drawingArea, "draw", G_CALLBACK(on_draw), NULL); #else g_signal_connect((GtkWidget*)drawingArea, "expose-event", G_CALLBACK(on_draw), NULL); #endif frametimer = g_timer_new(); g_timer_stop(frametimer); timer = g_timer_new(); gtk_widget_show_all ((GtkWidget*)window); gtk_main(); g_timer_destroy(timer); g_timer_destroy(frametimer); g_rand_free(r); g_object_unref(pixbufs[0]); g_object_unref(pixbufs[1]); g_object_unref(pixbufs[2]); return score; } hardinfo2-hardinfo2-1331e88/modules/benchmark/iperf3.c000066400000000000000000000073471474767047500225140ustar00rootroot00000000000000/* * HardInfo - System Information and Benchmark * Copyright (C) 2020 Burt P. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "hardinfo.h" #include "benchmark.h" #include #include static int iperf3_version() { int ret = -1.0; int v1 = 0, v2 = 0, v3 = 0, mc = 0; gboolean spawned; gchar *out, *err, *p, *next_nl; spawned = g_spawn_command_line_sync("iperf3 --version", &out, &err, NULL, NULL); if (spawned) { ret = 0; p = out; while((next_nl = strchr(p, '\n'))) { *next_nl = 0; /* version */ mc = sscanf(p, "iperf %d.%d", &v1, &v2); if (mc >= 1) { ret += v1 * 1000000; ret += v2 * 1000; ret += v3; break; } p = next_nl + 1; } g_free(out); g_free(err); } return ret; } static gboolean iperf3_server() { const char* argv[] = { "iperf3", "-s", "--port", "61981", "--one-off", NULL }; return g_spawn_async(NULL, (char**)argv, NULL, G_SPAWN_STDERR_TO_DEV_NULL | G_SPAWN_STDOUT_TO_DEV_NULL | G_SPAWN_SEARCH_PATH, NULL, NULL, NULL, NULL); } static double _get_double(JsonParser *j, const char* path) { double r = NAN; GError *e = NULL; JsonNode *root = json_parser_get_root(j); JsonNode *ra = json_path_query(path, root, &e); if (e) { fprintf (stderr, "json_path_query(%s) error: %s\n", path, e->message); } else { JsonArray *arr = json_node_get_array(ra); r = json_array_get_double_element(arr, 0); } json_node_free(ra); return r; } static bench_value iperf3_client() { bench_value ret = EMPTY_BENCH_VALUE; gboolean spawned; gchar *out, *err; GError *e = NULL; const char cmd_line[] = "iperf3 -c localhost --port 61981 --json --omit 3 --time 5"; spawned = g_spawn_command_line_sync(cmd_line, &out, &err, NULL, NULL); if (spawned) { JsonParser *j = json_parser_new(); if (json_parser_load_from_data(j, out, -1, &e)) { if (e) { fprintf (stderr, "json_parser_load_from_data error: %s\n", e->message); exit(-1); } strncpy(ret.extra, cmd_line, sizeof(ret.extra)-1); ret.threads_used = 1; ret.elapsed_time = _get_double(j, "$.end.sum_received.seconds"); ret.result = _get_double(j, "$.end.sum_received.bits_per_second"); ret.result /= 1000000.0; // now mega ret.result /= 1000.0; // now giga g_object_unref(j); } g_free(out); g_free(err); } return ret; } void benchmark_iperf3_single(void) { bench_value r = EMPTY_BENCH_VALUE; shell_view_set_enabled(FALSE); shell_status_update("Performing iperf3 localhost benchmark (single thread)..."); int v = iperf3_version(); if (v > 0) { iperf3_server(); sleep(1); r = iperf3_client(); r.revision = v; } bench_results[BENCHMARK_IPERF3_SINGLE] = r; } hardinfo2-hardinfo2-1331e88/modules/benchmark/md5.c000066400000000000000000000224531474767047500220040ustar00rootroot00000000000000/* * This code implements the MD5 message-digest algorithm. * The algorithm is due to Ron Rivest. This code was * written by Colin Plumb in 1993, no copyright is claimed. * Copyright by: hardinfo2 project * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include /* for memcpy() and memset() */ /* Add prototype support. */ #ifndef PROTO #if defined (USE_PROTOTYPES) ? USE_PROTOTYPES : defined (__STDC__) #define PROTO(ARGS) ARGS #else #define PROTO(ARGS) () #endif #endif #include "md5.h" #if defined(__OPTIMIZE__) #error You must compile this program without "-O". (Or else the benchmark results may be different!) #endif /* Little-endian byte-swapping routines. Note that these do not depend on the size of datatypes such as uint32, nor do they require us to detect the endianness of the machine we are running on. It is possible they should be macros for speed, but I would be surprised if they were a performance bottleneck for MD5. */ static uint32 getu32(const unsigned char *addr) { return (((((unsigned long) addr[3] << 8) | addr[2]) << 8) | addr[1]) << 8 | addr[0]; } static void putu32(uint32 data, unsigned char *addr) { addr[0] = (unsigned char) data; addr[1] = (unsigned char) (data >> 8); addr[2] = (unsigned char) (data >> 16); addr[3] = (unsigned char) (data >> 24); } /* * Start MD5 accumulation. Set bit count to 0 and buffer to mysterious * initialization constants. */ void MD5Init(struct MD5Context *ctx) { ctx->buf[0] = 0x67452301; ctx->buf[1] = 0xefcdab89; ctx->buf[2] = 0x98badcfe; ctx->buf[3] = 0x10325476; ctx->bits[0] = 0; ctx->bits[1] = 0; } /* * Update context to reflect the concatenation of another buffer full * of bytes. */ void MD5Update(struct MD5Context *ctx, unsigned char const *buf, unsigned len) { uint32 t; /* Update bitcount */ t = ctx->bits[0]; if ((ctx->bits[0] = (t + ((uint32) len << 3)) & 0xffffffff) < t) ctx->bits[1]++; /* Carry from low to high */ ctx->bits[1] += len >> 29; t = (t >> 3) & 0x3f; /* Bytes already in shsInfo->data */ /* Handle any leading odd-sized chunks */ if (t) { unsigned char *p = ctx->in + t; t = 64 - t; if (len < t) { memcpy(p, buf, len); return; } memcpy(p, buf, t); MD5Transform(ctx->buf, ctx->in); buf += t; len -= t; } /* Process data in 64-byte chunks */ while (len >= 64) { memcpy(ctx->in, buf, 64); MD5Transform(ctx->buf, ctx->in); buf += 64; len -= 64; } /* Handle any remaining bytes of data. */ memcpy(ctx->in, buf, len); } /* * Final wrapup - pad to 64-byte boundary with the bit pattern * 1 0* (64-bit count of bits processed, MSB-first) */ void MD5Final(unsigned char digest[16], struct MD5Context *ctx) { unsigned count; unsigned char *p; /* Compute number of bytes mod 64 */ count = (ctx->bits[0] >> 3) & 0x3F; /* Set the first char of padding to 0x80. This is safe since there is always at least one byte free */ p = ctx->in + count; *p++ = 0x80; /* Bytes of padding needed to make 64 bytes */ count = 64 - 1 - count; /* Pad out to 56 mod 64 */ if (count < 8) { /* Two lots of padding: Pad the first block to 64 bytes */ memset(p, 0, count); MD5Transform(ctx->buf, ctx->in); /* Now fill the next block with 56 bytes */ memset(ctx->in, 0, 56); } else { /* Pad block to 56 bytes */ memset(p, 0, count - 8); } /* Append length in bits and transform */ putu32(ctx->bits[0], ctx->in + 56); putu32(ctx->bits[1], ctx->in + 60); MD5Transform(ctx->buf, ctx->in); putu32(ctx->buf[0], digest); putu32(ctx->buf[1], digest + 4); putu32(ctx->buf[2], digest + 8); putu32(ctx->buf[3], digest + 12); memset(ctx, 0, sizeof(*ctx)); /* In case it's sensitive */ } #ifndef ASM_MD5 /* The four core functions - F1 is optimized somewhat */ /* #define F1(x, y, z) (x & y | ~x & z) */ #define F1(x, y, z) (z ^ (x & (y ^ z))) #define F2(x, y, z) F1(z, x, y) #define F3(x, y, z) (x ^ y ^ z) #define F4(x, y, z) (y ^ (x | ~z)) /* This is the central step in the MD5 algorithm. */ #define MD5STEP(f, w, x, y, z, data, s) \ ( w += f(x, y, z) + data, w &= 0xffffffff, w = w<>(32-s), w += x ) /* * The core of the MD5 algorithm, this alters an existing MD5 hash to * reflect the addition of 16 longwords of new data. MD5Update blocks * the data and converts bytes into longwords for this routine. */ void MD5Transform(uint32 buf[4], const unsigned char inraw[64]) { register uint32 a, b, c, d; uint32 in[16]; int i; for (i = 0; i < 16; ++i) in[i] = getu32(inraw + 4 * i); a = buf[0]; b = buf[1]; c = buf[2]; d = buf[3]; MD5STEP(F1, a, b, c, d, in[0] + 0xd76aa478, 7); MD5STEP(F1, d, a, b, c, in[1] + 0xe8c7b756, 12); MD5STEP(F1, c, d, a, b, in[2] + 0x242070db, 17); MD5STEP(F1, b, c, d, a, in[3] + 0xc1bdceee, 22); MD5STEP(F1, a, b, c, d, in[4] + 0xf57c0faf, 7); MD5STEP(F1, d, a, b, c, in[5] + 0x4787c62a, 12); MD5STEP(F1, c, d, a, b, in[6] + 0xa8304613, 17); MD5STEP(F1, b, c, d, a, in[7] + 0xfd469501, 22); MD5STEP(F1, a, b, c, d, in[8] + 0x698098d8, 7); MD5STEP(F1, d, a, b, c, in[9] + 0x8b44f7af, 12); MD5STEP(F1, c, d, a, b, in[10] + 0xffff5bb1, 17); MD5STEP(F1, b, c, d, a, in[11] + 0x895cd7be, 22); MD5STEP(F1, a, b, c, d, in[12] + 0x6b901122, 7); MD5STEP(F1, d, a, b, c, in[13] + 0xfd987193, 12); MD5STEP(F1, c, d, a, b, in[14] + 0xa679438e, 17); MD5STEP(F1, b, c, d, a, in[15] + 0x49b40821, 22); MD5STEP(F2, a, b, c, d, in[1] + 0xf61e2562, 5); MD5STEP(F2, d, a, b, c, in[6] + 0xc040b340, 9); MD5STEP(F2, c, d, a, b, in[11] + 0x265e5a51, 14); MD5STEP(F2, b, c, d, a, in[0] + 0xe9b6c7aa, 20); MD5STEP(F2, a, b, c, d, in[5] + 0xd62f105d, 5); MD5STEP(F2, d, a, b, c, in[10] + 0x02441453, 9); MD5STEP(F2, c, d, a, b, in[15] + 0xd8a1e681, 14); MD5STEP(F2, b, c, d, a, in[4] + 0xe7d3fbc8, 20); MD5STEP(F2, a, b, c, d, in[9] + 0x21e1cde6, 5); MD5STEP(F2, d, a, b, c, in[14] + 0xc33707d6, 9); MD5STEP(F2, c, d, a, b, in[3] + 0xf4d50d87, 14); MD5STEP(F2, b, c, d, a, in[8] + 0x455a14ed, 20); MD5STEP(F2, a, b, c, d, in[13] + 0xa9e3e905, 5); MD5STEP(F2, d, a, b, c, in[2] + 0xfcefa3f8, 9); MD5STEP(F2, c, d, a, b, in[7] + 0x676f02d9, 14); MD5STEP(F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20); MD5STEP(F3, a, b, c, d, in[5] + 0xfffa3942, 4); MD5STEP(F3, d, a, b, c, in[8] + 0x8771f681, 11); MD5STEP(F3, c, d, a, b, in[11] + 0x6d9d6122, 16); MD5STEP(F3, b, c, d, a, in[14] + 0xfde5380c, 23); MD5STEP(F3, a, b, c, d, in[1] + 0xa4beea44, 4); MD5STEP(F3, d, a, b, c, in[4] + 0x4bdecfa9, 11); MD5STEP(F3, c, d, a, b, in[7] + 0xf6bb4b60, 16); MD5STEP(F3, b, c, d, a, in[10] + 0xbebfbc70, 23); MD5STEP(F3, a, b, c, d, in[13] + 0x289b7ec6, 4); MD5STEP(F3, d, a, b, c, in[0] + 0xeaa127fa, 11); MD5STEP(F3, c, d, a, b, in[3] + 0xd4ef3085, 16); MD5STEP(F3, b, c, d, a, in[6] + 0x04881d05, 23); MD5STEP(F3, a, b, c, d, in[9] + 0xd9d4d039, 4); MD5STEP(F3, d, a, b, c, in[12] + 0xe6db99e5, 11); MD5STEP(F3, c, d, a, b, in[15] + 0x1fa27cf8, 16); MD5STEP(F3, b, c, d, a, in[2] + 0xc4ac5665, 23); MD5STEP(F4, a, b, c, d, in[0] + 0xf4292244, 6); MD5STEP(F4, d, a, b, c, in[7] + 0x432aff97, 10); MD5STEP(F4, c, d, a, b, in[14] + 0xab9423a7, 15); MD5STEP(F4, b, c, d, a, in[5] + 0xfc93a039, 21); MD5STEP(F4, a, b, c, d, in[12] + 0x655b59c3, 6); MD5STEP(F4, d, a, b, c, in[3] + 0x8f0ccc92, 10); MD5STEP(F4, c, d, a, b, in[10] + 0xffeff47d, 15); MD5STEP(F4, b, c, d, a, in[1] + 0x85845dd1, 21); MD5STEP(F4, a, b, c, d, in[8] + 0x6fa87e4f, 6); MD5STEP(F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10); MD5STEP(F4, c, d, a, b, in[6] + 0xa3014314, 15); MD5STEP(F4, b, c, d, a, in[13] + 0x4e0811a1, 21); MD5STEP(F4, a, b, c, d, in[4] + 0xf7537e82, 6); MD5STEP(F4, d, a, b, c, in[11] + 0xbd3af235, 10); MD5STEP(F4, c, d, a, b, in[2] + 0x2ad7d2bb, 15); MD5STEP(F4, b, c, d, a, in[9] + 0xeb86d391, 21); buf[0] += a; buf[1] += b; buf[2] += c; buf[3] += d; } #endif #ifdef TEST /* Simple test program. Can use it to manually run the tests from RFC1321 for example. */ #include int main(int argc, char **argv) { struct MD5Context context; unsigned char checksum[16]; int i; int j; if (argc < 2) { fprintf(stderr, "usage: %s string-to-hash\n", argv[0]); exit(1); } for (j = 1; j < argc; ++j) { printf("MD5 (\"%s\") = ", argv[j]); MD5Init(&context); MD5Update(&context, argv[j], strlen(argv[j])); MD5Final(checksum, &context); for (i = 0; i < 16; i++) { printf("%02x", (unsigned int) checksum[i]); } printf("\n"); } return 0; } #endif /* TEST */ hardinfo2-hardinfo2-1331e88/modules/benchmark/nqueens.c000066400000000000000000000024571474767047500227770ustar00rootroot00000000000000/* * N-Queens Problem Solver * Found somewhere on the Internet; can't remember where. Possibly Wikipedia. */ #include #include #include #include "hardinfo.h" #include "benchmark.h" /* if anything changes in this block, increment revision */ #define BENCH_REVISION 3 #define QUEENS 9 #define CRUNCH_TIME 5 bool safe(int x, int y,int *row) { int i; for (i = 1; i <= y; i++) if (row[y - i] == x || row[y - i] == x - i || row[y - i] == x + i) return false; return true; } int nqueens(int y,int *row) { int x; for (x = 0; x < QUEENS; x++) { if (safe((row[y - 1] = x), y - 1, row)) { if (y <= QUEENS) { nqueens(y + 1, row); } else { break; } } } return 0; } static gpointer nqueens_for(void *data, gint thread_number) { int row[QUEENS+1]; nqueens(1,row); return NULL; } void benchmark_nqueens(void) { bench_value r = EMPTY_BENCH_VALUE; shell_view_set_enabled(FALSE); shell_status_update("Running N-Queens benchmark..."); r = benchmark_crunch_for(CRUNCH_TIME, 0, nqueens_for, NULL); r.revision = BENCH_REVISION; snprintf(r.extra, 255, "q:%d", QUEENS-1); r.result /= 25; bench_results[BENCHMARK_NQUEENS] = r; } hardinfo2-hardinfo2-1331e88/modules/benchmark/opengl.c000066400000000000000000000045461474767047500226060ustar00rootroot00000000000000/* * hardinfo2 - System Information and Benchmark * Copyright (C) 2024 hardinfo2 project * License: GPL2+ * * Based on qgears2 by Zack Rusin (Public Domain) * Based on cairogears by David Reveman & Peter Nilsson (Public Domain) * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License v2.0 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "hardinfo.h" #include "benchmark.h" #include /* if anything changes in this block, increment revision */ #define BENCH_REVISION 1 static bench_value opengl_bench(int opengl, int darkmode) { bench_value ret = EMPTY_BENCH_VALUE; gboolean spawned; gchar *out=NULL, *err=NULL; int count, ms,ver,gl; float fps; char *cmd_line; if(opengl) { cmd_line=g_strdup_printf("%s/modules/qgears2 -gl %s",params.path_lib, (darkmode ? "-dark" : "")); } else { cmd_line=g_strdup_printf("%s/modules/qgears2 %s",params.path_lib, (darkmode ? "-dark" : "")); } spawned = g_spawn_command_line_sync(cmd_line, &out, &err, NULL, NULL); g_free(cmd_line); if (spawned && (sscanf(out,"Ver=%d, GL=%d, Result:%d/%d=%f", &ver, &gl, &count, &ms, &fps)==5)) { strncpy(ret.extra, out, sizeof(ret.extra)-1); ret.extra[sizeof(ret.extra)-1]=0; ret.threads_used = 1; ret.elapsed_time = (double)ms/1000; ret.revision = (BENCH_REVISION*100) + ver; ret.result = fps; } g_free(out); g_free(err); return ret; } void benchmark_opengl(void) { bench_value r = EMPTY_BENCH_VALUE; shell_view_set_enabled(FALSE); shell_status_update("Performing opengl benchmark (single thread)..."); r = opengl_bench(1,(params.max_bench_results==1?1:0)); if(r.threads_used!=1) { r = opengl_bench(0,(params.max_bench_results==1?1:0)); } bench_results[BENCHMARK_OPENGL] = r; } hardinfo2-hardinfo2-1331e88/modules/benchmark/raytrace.c000066400000000000000000000030311474767047500231200ustar00rootroot00000000000000/* * HardInfo - System Information and Benchmark * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "benchmark.h" /* if anything changes in this block, increment revision */ #define BENCH_REVISION 2 #define CRUNCH_TIME 5 void fbench(); /* fbench.c */ static gpointer parallel_raytrace(void *in_data, gint thread_number) { fbench(); return NULL; } void benchmark_raytrace(void) { bench_value r = EMPTY_BENCH_VALUE; gchar *test_data = get_test_data(1000); shell_view_set_enabled(FALSE); shell_status_update("Performing John Walker's FBENCH..."); r = benchmark_crunch_for(CRUNCH_TIME, 1, parallel_raytrace, test_data); r.revision = BENCH_REVISION; snprintf(r.extra, 255, "r:%d", 500);//niter from fbench g_free(test_data); r.result /= 10; bench_results[BENCHMARK_RAYTRACE] = r; } hardinfo2-hardinfo2-1331e88/modules/benchmark/sha1.c000066400000000000000000000230331474767047500221460ustar00rootroot00000000000000/* * SHA-1 in C * Written by Steve Reid * Copyright by: hardinfo2 project * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License v2.0 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ /* Test Vectors (from FIPS PUB 180-1) "abc" A9993E36 4706816A BA3E2571 7850C26C 9CD0D89D "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" 84983E44 1C3BD26E BAAE4AA1 F95129E5 E54670F1 A million repetitions of "a" 34AA973C D4C4DAA4 F61EEB2B DBAD2731 6534016F */ /* #define SHA1HANDSOFF * Copies data before messing with it. */ #include #include #include #if defined(__OPTIMIZE__) #error You must compile this program without "-O". #endif #define rol(value, bits) (((value) << (bits)) | ((value) >> (32 - (bits)))) /* blk0() and blk() perform the initial expand. */ /* I got the idea of expanding during the round function from SSLeay */ #ifdef LITTLE_ENDIAN #define blk0(i) (block->l[i] = (rol(block->l[i],24)&0xFF00FF00) \ |(rol(block->l[i],8)&0x00FF00FF)) #else #define blk0(i) block->l[i] #endif #define blk(i) (block->l[i&15] = rol(block->l[(i+13)&15]^block->l[(i+8)&15] \ ^block->l[(i+2)&15]^block->l[i&15],1)) /* (R0+R1), R2, R3, R4 are the different operations used in SHA1 */ #define R0(v,w,x,y,z,i) z+=((w&(x^y))^y)+blk0(i)+0x5A827999+rol(v,5);w=rol(w,30); #define R1(v,w,x,y,z,i) z+=((w&(x^y))^y)+blk(i)+0x5A827999+rol(v,5);w=rol(w,30); #define R2(v,w,x,y,z,i) z+=(w^x^y)+blk(i)+0x6ED9EBA1+rol(v,5);w=rol(w,30); #define R3(v,w,x,y,z,i) z+=(((w|x)&y)|(w&x))+blk(i)+0x8F1BBCDC+rol(v,5);w=rol(w,30); #define R4(v,w,x,y,z,i) z+=(w^x^y)+blk(i)+0xCA62C1D6+rol(v,5);w=rol(w,30); /* Hash a single 512-bit block. This is the core of the algorithm. */ void SHA1Transform(guint32 state[20], guchar buffer[64]) { guint32 a, b, c, d, e; typedef union { guchar c[64]; guint32 l[16]; } CHAR64LONG16; CHAR64LONG16 *block; #ifdef SHA1HANDSOFF static guchar workspace[64]; block = (CHAR64LONG16 *) workspace; memcpy(block, buffer, 64); #else block = (CHAR64LONG16 *) buffer; #endif /* Copy context->state[] to working vars */ a = state[0]; b = state[1]; c = state[2]; d = state[3]; e = state[4]; /* 4 rounds of 20 operations each. Loop unrolled. */ R0(a, b, c, d, e, 0); R0(e, a, b, c, d, 1); R0(d, e, a, b, c, 2); R0(c, d, e, a, b, 3); R0(b, c, d, e, a, 4); R0(a, b, c, d, e, 5); R0(e, a, b, c, d, 6); R0(d, e, a, b, c, 7); R0(c, d, e, a, b, 8); R0(b, c, d, e, a, 9); R0(a, b, c, d, e, 10); R0(e, a, b, c, d, 11); R0(d, e, a, b, c, 12); R0(c, d, e, a, b, 13); R0(b, c, d, e, a, 14); R0(a, b, c, d, e, 15); R1(e, a, b, c, d, 16); R1(d, e, a, b, c, 17); R1(c, d, e, a, b, 18); R1(b, c, d, e, a, 19); R2(a, b, c, d, e, 20); R2(e, a, b, c, d, 21); R2(d, e, a, b, c, 22); R2(c, d, e, a, b, 23); R2(b, c, d, e, a, 24); R2(a, b, c, d, e, 25); R2(e, a, b, c, d, 26); R2(d, e, a, b, c, 27); R2(c, d, e, a, b, 28); R2(b, c, d, e, a, 29); R2(a, b, c, d, e, 30); R2(e, a, b, c, d, 31); R2(d, e, a, b, c, 32); R2(c, d, e, a, b, 33); R2(b, c, d, e, a, 34); R2(a, b, c, d, e, 35); R2(e, a, b, c, d, 36); R2(d, e, a, b, c, 37); R2(c, d, e, a, b, 38); R2(b, c, d, e, a, 39); R3(a, b, c, d, e, 40); R3(e, a, b, c, d, 41); R3(d, e, a, b, c, 42); R3(c, d, e, a, b, 43); R3(b, c, d, e, a, 44); R3(a, b, c, d, e, 45); R3(e, a, b, c, d, 46); R3(d, e, a, b, c, 47); R3(c, d, e, a, b, 48); R3(b, c, d, e, a, 49); R3(a, b, c, d, e, 50); R3(e, a, b, c, d, 51); R3(d, e, a, b, c, 52); R3(c, d, e, a, b, 53); R3(b, c, d, e, a, 54); R3(a, b, c, d, e, 55); R3(e, a, b, c, d, 56); R3(d, e, a, b, c, 57); R3(c, d, e, a, b, 58); R3(b, c, d, e, a, 59); R4(a, b, c, d, e, 60); R4(e, a, b, c, d, 61); R4(d, e, a, b, c, 62); R4(c, d, e, a, b, 63); R4(b, c, d, e, a, 64); R4(a, b, c, d, e, 65); R4(e, a, b, c, d, 66); R4(d, e, a, b, c, 67); R4(c, d, e, a, b, 68); R4(b, c, d, e, a, 69); R4(a, b, c, d, e, 70); R4(e, a, b, c, d, 71); R4(d, e, a, b, c, 72); R4(c, d, e, a, b, 73); R4(b, c, d, e, a, 74); R4(a, b, c, d, e, 75); R4(e, a, b, c, d, 76); R4(d, e, a, b, c, 77); R4(c, d, e, a, b, 78); R4(b, c, d, e, a, 79); /* Add the working vars back into context.state[] */ state[0] += a; state[1] += b; state[2] += c; state[3] += d; state[4] += e; /* Wipe variables */ a = b = c = d = e = 0; } /* SHA1Init - Initialize new context */ void SHA1Init(SHA1_CTX * context) { /* SHA1 initialization constants */ context->state[0] = 0x67452301; context->state[1] = 0xEFCDAB89; context->state[2] = 0x98BADCFE; context->state[3] = 0x10325476; context->state[4] = 0xC3D2E1F0; context->count[0] = context->count[1] = 0; } /* Run your data through this. */ void SHA1Update(SHA1_CTX * context, guchar * data, guint32 len) { guint32 i, j; j = (context->count[0] >> 3) & 63; if ((context->count[0] += len << 3) < (len << 3)) context->count[1]++; context->count[1] += (len >> 29); if ((j + len) > 63) { memcpy(&context->buffer[j], data, (i = 64 - j)); SHA1Transform(context->state, context->buffer); for (; i + 63 < len; i += 64) { SHA1Transform(context->state, &data[i]); } j = 0; } else i = 0; memcpy(&context->buffer[j], &data[i], len - i); } /* Add padding and return the message digest. */ void SHA1Final(guchar digest[20], SHA1_CTX * context) { guint32 i, j; guchar finalcount[8]; for (i = 0; i < 8; i++) { finalcount[i] = (guchar) ((context->count[(i >= 4 ? 0 : 1)] >> ((3 - (i & 3)) * 8)) & 255); /* Endian independent */ } SHA1Update(context, (guchar *) "\200", 1); while ((context->count[0] & 504) != 448) { SHA1Update(context, (guchar *) "\0", 1); } SHA1Update(context, finalcount, 8); /* Should cause a SHA1Transform() */ for (i = 0; i < 20; i++) { digest[i] = (guchar) ((context->state[i >> 2] >> ((3 - (i & 3)) * 8)) & 255); } /* Wipe variables */ i = j = 0; memset(context->buffer, 0, 64); memset(context->state, 0, 20*sizeof(guint32)); memset(context->count, 0, 2*sizeof(guint32)); memset(&finalcount, 0, sizeof(finalcount)); #ifdef SHA1HANDSOFF /* make SHA1Transform overwrite it's own static vars */ SHA1Transform(context->state, context->buffer); #endif } #ifdef SHA1_TEST static char *b32_alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"; static void base32_encode_exactly(guchar * buf, gint len, guchar * encbuf, gint enclen) { gint i = 0; guchar *ip = buf + len; guchar *op = encbuf + enclen; switch (len % 5) { case 0: do { g_assert(op - encbuf >= 8); i = *--ip; /* Input #4 */ *--op = b32_alphabet[i & 0x1f]; /* Ouput #7 */ i >>= 5; /* upper <234>, input #4 */ /* FALLTHROUGH */ case 4: i |= ((guint32) * --ip) << 3; /* had 3 bits in `i' */ *--op = b32_alphabet[i & 0x1f]; /* Output #6 */ i >>= 5; /* upper <401234>, input #3 */ *--op = b32_alphabet[i & 0x1f]; /* Output #5 */ i >>= 5; /* upper <4>, input #3 */ /* FALLTHROUGH */ case 3: i |= ((guint32) * --ip) << 1; /* had 1 bits in `i' */ *--op = b32_alphabet[i & 0x1f]; /* Output #4 */ i >>= 5; /* upper <1234>, input #2 */ /* FALLTHROUGH */ case 2: i |= ((guint32) * --ip) << 4; /* had 4 bits in `i' */ *--op = b32_alphabet[i & 0x1f]; /* Output #3 */ i >>= 5; /* upper <3401234>, input #1 */ *--op = b32_alphabet[i & 0x1f]; /* Output #2 */ i >>= 5; /* upper <34>, input #1 */ /* FALLTHROUGH */ case 1: i |= ((guint32) * --ip) << 2; /* had 2 bits in `i' */ *--op = b32_alphabet[i & 0x1f]; /* Output #1 */ i >>= 5; /* upper <01234>, input #0 */ *--op = b32_alphabet[i & 0x1f]; /* Output #0 */ i >>= 5; /* Holds nothing, MBZ */ g_assert(i == 0); g_assert(op >= encbuf); } while (op > encbuf); } } /*************************************************************/ int main(int argc, char **argv) { gint i, j; SHA1_CTX context; guchar digest[20], buffer[16384]; FILE *file; if (argc > 2) { puts("Public domain SHA-1 implementation - by Steve Reid "); puts("Produces the SHA-1 hash of a file, or stdin if no file is specified."); exit(0); } if (argc < 2) { file = stdin; } else { if (!(file = fopen(argv[1], "rb"))) { fputs("Unable to open file.", stderr); exit(-1); } } SHA1Init(&context); while (!feof(file)) { /* note: what if ferror(file) */ i = fread(buffer, 1, 16384, file); SHA1Update(&context, buffer, i); } SHA1Final(digest, &context); fclose(file); for (i = 0; i < 5; i++) { for (j = 0; j < 4; j++) { printf("%02X", digest[i*4+j]); } putchar(' '); } putchar('\n'); { guchar tmp[33]; tmp[32] = '\0'; base32_encode_exactly(digest, 20, tmp, 32); printf("%s\n", tmp); } exit(0); } #endif /* SHA1_TEST */ hardinfo2-hardinfo2-1331e88/modules/benchmark/storage.c000066400000000000000000000073661474767047500227710ustar00rootroot00000000000000/* * hardinfo2 - System Information and Benchmark * Copyright (C) 2024 hardinfo2 project * License: GPL2+ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License v2.0 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "hardinfo.h" #include "benchmark.h" #include "math.h" /* if anything changes in this block, increment revision */ #define BENCH_REVISION 2 static bench_value storage_runtest() { bench_value ret = EMPTY_BENCH_VALUE; gboolean spawned; gchar *out=NULL, *err=NULL,*s=NULL; int readbytes=0,writebytes=0,i=0; float readspeed=0,writespeed=0; float readtime=0,writetime=0; char reade[5],writee[5]; int t=1; const char cmd_line[] = "sh -c 'cd ~;dd if=/dev/zero of=hardinfo2_testfile bs=1M count=20 oflag=direct;dd of=/dev/zero if=hardinfo2_testfile bs=1M iflag=direct;rm hardinfo2_testfile'"; const char cmd_line_long[] = "sh -c 'cd ~;dd if=/dev/zero of=hardinfo2_testfile bs=1M count=400 oflag=direct;dd of=/dev/zero if=hardinfo2_testfile bs=1M iflag=direct;rm hardinfo2_testfile'"; while(t){ if(t==1) spawned = g_spawn_command_line_sync(cmd_line, &out, &err, NULL, NULL); else spawned = g_spawn_command_line_sync(cmd_line_long, &out, &err, NULL, NULL); if (spawned && err){ i=0; if( (s=strstr(err,"\n")) && (s=strstr(s+1,"\n")) ) { i=sscanf(s+1,"%d",&writebytes); if((i==1) && (s=strstr(s,")")) && (s=strstr(s+1,", ")) ){ i=sscanf(s+2,"%f",&writetime); if((i==1) && (s=strstr(s+2,", "))) i=sscanf(s+2,"%f",&writespeed); else i=0; } else i=0; } if( (i==1) && (s=strstr(s+1,"\n")) && (s=strstr(s+1,"\n")) && (s=strstr(s+1,"\n")) ) { i=sscanf(s+1,"%d",&readbytes); if((i==1) && (s=strstr(s,")")) && (s=strstr(s+1,", ")) ){ i=sscanf(s+2,"%f",&readtime); if((i==1) && (s=strstr(s+2,", "))) i=sscanf(s+2,"%f",&readspeed); else i=0; } else i=0; } if((i==1) && (readtime!=0) && (writetime!=0)){ writespeed=writebytes/writetime; readspeed=readbytes/readtime; ret.elapsed_time = writetime+readtime; ret.result = (writespeed+readspeed)/2/(1024*1024); strcpy(writee,"b/s"); strcpy(reade,"b/s"); if(writespeed>1024) {writespeed/=1024;strcpy(writee,"KB/s");} if(writespeed>1024) {writespeed/=1024;strcpy(writee,"MB/s");} if(writespeed>1024) {writespeed/=1024;strcpy(writee,"GB/s");} if(readspeed>1024) {readspeed/=1024;strcpy(reade,"KB/s");} if(readspeed>1024) {readspeed/=1024;strcpy(reade,"MB/s");} if(readspeed>1024) {readspeed/=1024;strcpy(reade,"GB/s");} sprintf(ret.extra,"Read:%0.2lf %s, Write:%0.2lf %s %s", readspeed,reade,writespeed,writee,(t==2?"(Long)":"") ); } } g_free(out); g_free(err); if((t==1)&&(ret.elapsed_time<0.2)) t=2; else t=0; //second long run x20 - max 4 sec } ret.threads_used = 1; ret.revision = BENCH_REVISION; return ret; } void benchmark_storage(void) { bench_value r = EMPTY_BENCH_VALUE; shell_view_set_enabled(FALSE); shell_status_update("Performing Storage Benchmark..."); r = storage_runtest(); bench_results[BENCHMARK_STORAGE] = r; } hardinfo2-hardinfo2-1331e88/modules/benchmark/sysbench.c000066400000000000000000000204711474767047500231330ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2017 L. A. F. Pereira * Copyright (C) 2019 Burt P. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "hardinfo.h" #include "benchmark.h" #include "cpu_util.h" #define STATMSG "Performing Alexey Kopytov's sysbench memory benchmark" /* known to work with: * sysbench 0.4.12 --> r:4012 * sysbench 1.0.11 --> r:1000011 * sysbench 1.0.15 --> r:1000015 */ struct sysbench_ctx { char *test; int threads; int max_time; char *parms_test; bench_value r; }; int sysbench_version() { int ret = -1; int v1 = 0, v2 = 0, v3 = 0, mc = 0; gboolean spawned; gchar *out, *err, *p, *next_nl; spawned = g_spawn_command_line_sync("sysbench --version", &out, &err, NULL, NULL); if (spawned) { ret = 0; p = out; while((next_nl = strchr(p, '\n'))) { *next_nl = 0; /* version */ mc = sscanf(p, "sysbench %d.%d.%d", &v1, &v2, &v3); if (mc >= 1) { ret += v1 * 1000000; ret += v2 * 1000; ret += v3; break; } p = next_nl + 1; } g_free(out); g_free(err); } return ret; } static gboolean sysbench_run(struct sysbench_ctx *ctx, int expecting_version) { gboolean spawned; gchar *out, *err, *p, *next_nl; int v1 = 0, v2 = 0, v3 = 0, mc = 0; char *pp = NULL; if (!ctx) return FALSE; if (!ctx->test) return FALSE; if (!ctx->parms_test) return FALSE; if (!ctx->threads) ctx->threads = 1; ctx->r.threads_used = ctx->threads; if (!ctx->max_time) ctx->max_time = 7; gchar *cmd_line = NULL; snprintf(ctx->r.extra, 255, "--time=%d %s", ctx->max_time, ctx->parms_test); util_compress_space(ctx->r.extra); if (!expecting_version) expecting_version = sysbench_version(); if (expecting_version < 1000000) { /* v0.x.x: sysbench [general-options]... --test= [test-options]... command */ cmd_line = g_strdup_printf("sysbench --num-threads=%d --max-time=%d --test=%s %s run", ctx->threads, ctx->max_time, ctx->test, ctx->parms_test); } else { /* v1.x.x: sysbench [options]... [testname] [command] */ cmd_line = g_strdup_printf("sysbench --threads=%d --time=%d %s %s run", ctx->threads, ctx->max_time, ctx->parms_test, ctx->test); } //bench_msg("\ncmd_line: %s", cmd_line); spawned = g_spawn_command_line_sync(cmd_line, &out, &err, NULL, NULL); g_free(cmd_line); if (spawned) { p = out; while((next_nl = strchr(p, '\n'))) { *next_nl = 0; if (strstr(p, "Usage:")) { /* We're hosed */ goto sysbench_failed; } /* version */ mc = sscanf(p, "sysbench %d.%d.%d", &v1, &v2, &v3); if (mc >= 1) { ctx->r.revision = 0; ctx->r.revision += v1 * 1000000; ctx->r.revision += v2 * 1000; ctx->r.revision += v3; } /* total_time */ if ((pp = strstr(p, "total time:"))) { pp = strchr(pp, ':') + 1; ctx->r.elapsed_time = strtof(pp, NULL); } /* result */ if (SEQ(ctx->test, "memory") ) { // 57894.30 MiB transferred (5787.59 MiB/sec) if ((pp = strstr(p, " transferred ("))) { pp = strchr(pp, '(') + 1; ctx->r.result = strtof(pp, NULL); } } if (SEQ(ctx->test, "cpu") ) { if (ctx->r.revision < 1000000) { // there is not a nice result line // to grab in version 0.x... // total time: 7.0016s // total number of events: 873 /* should already have "total time:" */ if ((pp = strstr(p, " total number of events:"))) { pp = strchr(pp, ':') + 1; ctx->r.result = strtof(pp, NULL); ctx->r.result /= ctx->r.elapsed_time; } } if (ctx->r.revision >= 1000000) { // events per second: 1674.97 if ((pp = strstr(p, " events per second:"))) { pp = strchr(pp, ':') + 1; ctx->r.result = strtof(pp, NULL); } } } p = next_nl + 1; } g_free(out); g_free(err); } else { bench_msg("\nfailed to spawn sysbench"); sleep(5); } if (ctx->r.result == -1) goto sysbench_failed; return spawned; sysbench_failed: bench_msg("\nfailed to configure sysbench"); g_free(out); g_free(err); return 0; } void benchmark_memory_run(int threads, int result_index) { int cpu_procs, cpu_cores, cpu_threads, cpu_nodes; cpu_procs_cores_threads_nodes(&cpu_procs, &cpu_cores, &cpu_threads, &cpu_nodes); struct sysbench_ctx ctx = { .test = "memory", .threads = threads>0 ? threads : cpu_threads, .parms_test = "", .r = EMPTY_BENCH_VALUE}; int sbv = sysbench_version(); if (BENCH_PTR_BITS > 32 && sbv >= 1000011) { ctx.parms_test = " --memory-block-size=1K" " --memory-total-size=100G" " --memory-scope=global" " --memory-hugetlb=off" " --memory-oper=write" " --memory-access-mode=seq"; } else { /* safer set */ ctx.parms_test = " --memory-block-size=1K" " --memory-total-size=3056M" " --memory-scope=global" " --memory-hugetlb=off" " --memory-oper=write" " --memory-access-mode=seq"; } shell_view_set_enabled(FALSE); char msg[128] = ""; snprintf(msg, 128, "%s (threads: %d)", STATMSG, threads); shell_status_update(msg); sysbench_run(&ctx, sbv); bench_results[result_index] = ctx.r; } void benchmark_memory_single(void) { benchmark_memory_run(1, BENCHMARK_MEMORY_SINGLE); } void benchmark_memory_dual(void) { benchmark_memory_run(2, BENCHMARK_MEMORY_DUAL); } void benchmark_memory_quad(void) { benchmark_memory_run(4, BENCHMARK_MEMORY_QUAD); } void benchmark_memory_all(void) { benchmark_memory_run(0, BENCHMARK_MEMORY_ALL); } void benchmark_sbcpu_single(void) { struct sysbench_ctx ctx = { .test = "cpu", .threads = 1, .parms_test = "--cpu-max-prime=10000", .r = EMPTY_BENCH_VALUE}; shell_view_set_enabled(FALSE); shell_status_update(STATMSG " (single thread)..."); sysbench_run(&ctx, 0); bench_results[BENCHMARK_SBCPU_SINGLE] = ctx.r; } void benchmark_sbcpu_all(void) { int cpu_procs, cpu_cores, cpu_threads, cpu_nodes; cpu_procs_cores_threads_nodes(&cpu_procs, &cpu_cores, &cpu_threads, &cpu_nodes); struct sysbench_ctx ctx = { .test = "cpu", .threads = cpu_threads, .parms_test = "--cpu-max-prime=10000", .r = EMPTY_BENCH_VALUE}; shell_view_set_enabled(FALSE); shell_status_update(STATMSG " (Multi-thread)..."); sysbench_run(&ctx, 0); bench_results[BENCHMARK_SBCPU_ALL] = ctx.r; } void benchmark_sbcpu_quad(void) { struct sysbench_ctx ctx = { .test = "cpu", .threads = 4, .parms_test = "--cpu-max-prime=10000", .r = EMPTY_BENCH_VALUE}; shell_view_set_enabled(FALSE); shell_status_update(STATMSG " (Four thread)..."); sysbench_run(&ctx, 0); bench_results[BENCHMARK_SBCPU_QUAD] = ctx.r; } hardinfo2-hardinfo2-1331e88/modules/benchmark/zlib.c000066400000000000000000000052401474767047500222520ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2017 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include #include #include "benchmark.h" /* zip/unzip 256KB blocks for 7 seconds * result is number of full completions / 100 */ /* if anything changes in this block, increment revision */ #define BENCH_REVISION 3 #define BENCH_DATA_SIZE 262144 #define BENCH_DATA_MD5 "3753b649c4fa9ea4576fc8f89a773de2" #define CRUNCH_TIME 7 #define VERIFY_RESULT 1 static unsigned int zlib_errors = 0; static gpointer zlib_for(void *in_data, gint thread_number) { guchar *compressed; uLong bound = compressBound(BENCH_DATA_SIZE); compressed = malloc(bound); if (!compressed) return NULL; guchar uncompressed[BENCH_DATA_SIZE]; uLong compressedBound = bound; uLong destBound = sizeof(uncompressed); compress(compressed, &compressedBound, in_data, BENCH_DATA_SIZE); uncompress(uncompressed, &destBound, compressed, compressedBound); if (VERIFY_RESULT) { int cr = memcmp(in_data, uncompressed, BENCH_DATA_SIZE); if (!!cr) { zlib_errors++; bench_msg("zlib error: uncompressed != original"); } } free(compressed); return NULL; } void benchmark_zlib(void) { bench_value r = EMPTY_BENCH_VALUE; gchar *test_data = get_test_data(BENCH_DATA_SIZE); if (!test_data) return; shell_view_set_enabled(FALSE); shell_status_update("Running Zlib benchmark..."); gchar *d = md5_digest_str(test_data, BENCH_DATA_SIZE); if (!SEQ(d, BENCH_DATA_MD5)) bench_msg("test data has different md5sum: expected %s, actual %s", BENCH_DATA_MD5, d); r = benchmark_crunch_for(CRUNCH_TIME, 0, zlib_for, test_data); r.result /= 100; r.revision = BENCH_REVISION; snprintf(r.extra, 255, "zlib %s (built against: %s), d:%s, e:%d", zlib_version, ZLIB_VERSION, d, zlib_errors); bench_results[BENCHMARK_ZLIB] = r; g_free(test_data); g_free(d); } hardinfo2-hardinfo2-1331e88/modules/computer.c000066400000000000000000001131171474767047500212210ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2008 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include #include #include #include #include #include #include #include #include #include #include #include "computer.h" #include "dmi_util.h" /* for dmi_get_str() */ #include "dt_util.h" /* for dtr_get_string() */ #include "info.h" #define THISORUNK(t) ( (t) ? t : _("(Unknown)") ) /* Callbacks */ gchar *callback_summary(void); gchar *callback_os(void); gchar *callback_security(void); gchar *callback_modules(void); gchar *callback_boots(void); gchar *callback_locales(void); gchar *callback_memory_usage(); gchar *callback_fs(void); gchar *callback_display(void); gchar *callback_network(void); gchar *callback_users(void); gchar *callback_groups(void); gchar *callback_env_var(void); #if GLIB_CHECK_VERSION(2,14,0) gchar *callback_dev(void); #endif /* GLIB_CHECK_VERSION(2,14,0) */ /* Scan callbacks */ void scan_summary(gboolean reload); void scan_os(gboolean reload); void scan_security(gboolean reload); void scan_modules(gboolean reload); void scan_boots(gboolean reload); void scan_locales(gboolean reload); void scan_fs(gboolean reload); void scan_memory_usage(gboolean reload); void scan_display(gboolean reload); void scan_network(gboolean reload); void scan_users(gboolean reload); void scan_groups(gboolean reload); void scan_env_var(gboolean reload); #if GLIB_CHECK_VERSION(2,14,0) void scan_dev(gboolean reload); #endif /* GLIB_CHECK_VERSION(2,14,0) */ enum { ENTRY_SUMMARY, ENTRY_OS, ENTRY_SECURITY, ENTRY_KMOD, ENTRY_BOOTS, ENTRY_LANGUAGES, ENTRY_MEMORY_USAGE, ENTRY_FS, ENTRY_DISPLAY, ENTRY_ENV, ENTRY_DEVEL, ENTRY_USERS, ENTRY_GROUPS }; static ModuleEntry entries[] = { [ENTRY_SUMMARY] = {N_("Summary"), "summary.svg", callback_summary, scan_summary, MODULE_FLAG_NONE}, [ENTRY_OS] = {N_("Operating System"), "os.svg", callback_os, scan_os, MODULE_FLAG_NONE}, [ENTRY_SECURITY] = {N_("Security"), "security.svg", callback_security, scan_security, MODULE_FLAG_NONE}, [ENTRY_KMOD] = {N_("Kernel Modules"), "module.svg", callback_modules, scan_modules, MODULE_FLAG_NONE}, [ENTRY_BOOTS] = {N_("Boots"), "boot.svg", callback_boots, scan_boots, MODULE_FLAG_NONE}, [ENTRY_LANGUAGES] = {N_("Languages"), "language.svg", callback_locales, scan_locales, MODULE_FLAG_NONE}, [ENTRY_MEMORY_USAGE] = {N_("Memory Usage"), "memory.svg", callback_memory_usage, scan_memory_usage, MODULE_FLAG_NONE}, [ENTRY_FS] = {N_("Filesystems"), "filesystem.svg", callback_fs, scan_fs, MODULE_FLAG_NONE}, [ENTRY_DISPLAY] = {N_("Display"), "monitor.svg", callback_display, scan_display, MODULE_FLAG_NONE}, [ENTRY_ENV] = {N_("Environment Variables"), "environment.svg", callback_env_var, scan_env_var, MODULE_FLAG_NONE}, #if GLIB_CHECK_VERSION(2,14,0) [ENTRY_DEVEL] = {N_("Development"), "devel.svg", callback_dev, scan_dev, MODULE_FLAG_NONE}, #else [ENTRY_DEVEL] = {N_("Development"), "devel.svg", callback_dev, scan_dev, MODULE_FLAG_HIDE}, #endif /* GLIB_CHECK_VERSION(2,14,0) */ [ENTRY_USERS] = {N_("Users"), "users.svg", callback_users, scan_users, MODULE_FLAG_NONE}, [ENTRY_GROUPS] = {N_("Groups"), "users.svg", callback_groups, scan_groups, MODULE_FLAG_NONE}, {NULL}, }; gchar *module_list = NULL; Computer *computer = NULL; gchar *meminfo = NULL; gchar *hi_more_info(gchar * entry) { gchar *info = moreinfo_lookup_with_prefix("COMP", entry); if (info) return g_strdup(info); return g_strdup_printf("[%s]", entry); } /* a g_str_equal() where either may be null */ #define g_str_equal0(a,b) (g_strcmp0(a,b) == 0) gchar *hi_get_field(gchar * field) { gchar *tag, *label; key_get_components(field, NULL, &tag, NULL, &label, NULL, TRUE); gchar *tmp; if (g_str_equal0(label, _("Memory"))) { MemoryInfo *mi = computer_get_memory(); tmp = g_strdup_printf(_("%dMB (%dMB used)"), mi->total, mi->used); g_free(mi); } else if (g_str_equal0(label, _("Uptime"))) { tmp = computer_get_formatted_uptime(); } else if (g_str_equal0(label, _("Date/Time"))) { time_t t = time(NULL); tmp = g_new0(gchar, 64); strftime(tmp, 64, "%c", localtime(&t)); } else if (g_str_equal0(label, _("Load Average"))) { tmp = computer_get_formatted_loadavg(); } else if (g_str_equal0(tag, "entropy")) { tmp = computer_get_entropy_avail(); } else { gchar *info = NULL; if (tag) info = moreinfo_lookup_with_prefix("DEV", tag); else if (label) info = moreinfo_lookup_with_prefix("DEV", label); if (info) tmp = g_strdup(info); else tmp = g_strdup_printf("Unknown field: [tag: %s] label: %s", tag ? tag : "(none)", label ? label : "(empty)"); } return tmp; } void scan_summary(gboolean reload) { SCAN_START(); //gdk_window_freeze_updates(GDK_WINDOW(gtk_widget_get_window(shell_get_main_shell()->info_tree->view))); module_entry_scan_all_except(entries, 0); computer->alsa = computer_get_alsainfo(); //gdk_window_thaw_updates(GDK_WINDOW(gtk_widget_get_window(shell_get_main_shell()->info_tree->view))); SCAN_END(); } void scan_os(gboolean reload) { SCAN_START(); computer->os = computer_get_os(); SCAN_END(); } void scan_security(gboolean reload) { SCAN_START(); //nothing to do here yet SCAN_END(); } void scan_modules(gboolean reload) { SCAN_START(); scan_modules_do(); SCAN_END(); } void scan_boots(gboolean reload) { SCAN_START(); scan_boots_real(); SCAN_END(); } void scan_locales(gboolean reload) { SCAN_START(); scan_os(FALSE); scan_languages(computer->os); SCAN_END(); } void scan_fs(gboolean reload) { SCAN_START(); scan_filesystems(); SCAN_END(); } void scan_memory_usage(gboolean reload) { SCAN_START(); scan_memory_do(); SCAN_END(); } void scan_display(gboolean reload) { SCAN_START(); if (computer->display) computer_free_display(computer->display); computer->display = computer_get_display(); SCAN_END(); } void scan_users(gboolean reload) { SCAN_START(); scan_users_do(); SCAN_END(); } void scan_groups(gboolean reload) { SCAN_START(); scan_groups_do(); SCAN_END(); } #if GLIB_CHECK_VERSION(2,14,0) static gchar *dev_list = NULL; void scan_dev(gboolean reload) { SCAN_START(); guint i; struct { gchar *compiler_name; gchar *version_command; gchar *regex; gboolean read_stdout; } detect_lang[] = { { N_("Scripting Languages"), NULL, FALSE }, { N_("Gambas3 (gbr3)"), "gbr3 --version", "\\d+\\.\\d+\\.\\d+", TRUE }, { N_("Python (default)"), "python -V", "\\d+\\.\\d+\\.\\d+", TRUE }, { N_("Python2"), "python2 -V", "\\d+\\.\\d+\\.\\d+", FALSE }, { N_("Python3"), "python3 -V", "\\d+\\.\\d+\\.\\d+(a|b|rc)?\\d*", TRUE }, { N_("Perl"), "perl -v", "\\d+\\.\\d+\\.\\d+", TRUE }, { N_("Rakudo (Perl6)"), "rakudo -v", "(?<=Rakudo™ v)\\d+\\.\\d+", TRUE }, { N_("PHP"), "php --version", "\\d+\\.\\d+\\.\\S+", TRUE}, { N_("Ruby"), "ruby --version", "\\d+\\.\\d+\\.\\d+", TRUE }, { N_("Bash"), "bash --version", "\\d+\\.\\d+\\.\\d+", TRUE}, { N_("JavaScript (Node.js)"), "node --version", "(?<=v)(\\d\\.?)+", TRUE }, { N_("awk"), "awk --version", "(?<=GNU Awk )\\d+\\.\\d+\\.\\d+", TRUE }, { N_("Compilers"), NULL, FALSE }, { N_("C (GCC)"), "gcc --version", "\\d+\\.\\d+\\.\\d+", TRUE }, { N_("C (Clang)"), "clang --version", "\\d+\\.\\d+\\.\\d+", TRUE }, { N_("D (dmd)"), "dmd --help", "\\d+\\.\\d+", TRUE }, { N_("Gambas3 (gbc3)"), "gbc3 --version", "\\d+\\.\\d+\\.\\d+", TRUE }, { N_("Java"), "javac -version", "\\d+\\.\\d+\\.\\d+", TRUE }, { N_(".NET"), "dotnet --version", "\\d+\\.\\d+\\.\\d+", TRUE }, { N_("Vala"), "valac --version", "\\d+\\.\\d+\\.\\d+", TRUE }, { N_("Haskell (GHC)"), "ghc --version", "\\d+\\.\\d+\\.\\d+", TRUE }, { N_("FreePascal"), "fpc -iV", "\\d+\\.\\d+\\.?\\d*", TRUE }, { N_("Go"), "go version", "\\d+\\.\\d+\\.?\\d* ", TRUE }, { N_("Rust"), "rustc --version", "(?<=rustc )(\\d\\.?)+", TRUE }, { N_("Tools"), NULL, FALSE }, { N_("make"), "make --version", "\\d+\\.\\d+", TRUE }, { N_("ninja"), "ninja --version", "\\d+\\.\\d+\\.\\d+", TRUE }, { N_("GDB"), "gdb --version", "\\d+\\.\\d+\\.?\\d*", TRUE }, { N_("LLDB"), "lldb --version", "(?<=lldb version )(\\d\\.?)+", TRUE }, { N_("strace"), "strace -V", "\\d+\\.\\d+\\.?\\d*", TRUE }, { N_("valgrind"), "valgrind --version", "\\d+\\.\\d+\\.\\S+", TRUE }, { N_("QMake"), "qmake --version", "\\d+\\.\\S+", TRUE}, { N_("CMake"), "cmake --version", "\\d+\\.\\d+\\.?\\d*", TRUE}, { N_("Gambas3 IDE"), "gambas3 --version", "\\d+\\.\\d+\\.\\d+", TRUE }, { N_("Radare2"), "radare2 -v", "(?<=radare2 )(\\d+\\.?)+(-git)?", TRUE }, { N_("ltrace"), "ltrace --version", "(?<=ltrace )\\d+\\.\\d+\\.\\d+", TRUE }, { N_("Powershell"), "pwsh --version", "\\d+\\.\\d+\\.\\d+", TRUE }, }; g_free(dev_list); dev_list = g_strdup(""); for (i = 0; i < G_N_ELEMENTS(detect_lang); i++) { gchar *version = NULL; gchar *output, *ignored; gchar *temp; GRegex *regex; GMatchInfo *match_info; gboolean found; if (!detect_lang[i].regex) { dev_list = h_strdup_cprintf("[%s]\n", dev_list, _(detect_lang[i].compiler_name)); continue; } if (detect_lang[i].read_stdout) { found = hardinfo_spawn_command_line_sync(detect_lang[i].version_command, &output, &ignored, NULL, NULL); } else { found = hardinfo_spawn_command_line_sync(detect_lang[i].version_command, &ignored, &output, NULL, NULL); } g_free(ignored); if (found) { regex = g_regex_new(detect_lang[i].regex, 0, 0, NULL); g_regex_match(regex, output, 0, &match_info); if (g_match_info_matches(match_info)) { version = g_match_info_fetch(match_info, 0); } g_match_info_free(match_info); g_regex_unref(regex); g_free(output); } if (version == NULL) version = strdup(_("Not found")); dev_list = h_strdup_cprintf("%s=%s\n", dev_list, detect_lang[i].compiler_name, version); g_free(version); temp = g_strdup_printf(_("Detecting version: %s"), detect_lang[i].compiler_name); shell_status_update(temp); g_free(temp); } SCAN_END(); } gchar *callback_dev(void) { return g_strdup_printf( "[$ShellParam$]\n" "ViewType=5\n" "ColumnTitle$TextValue=%s\n" /* Program */ "ColumnTitle$Value=%s\n" /* Version */ "ShowColumnHeaders=true\n" "%s", _("Program"), _("Version"), dev_list); } #endif /* GLIB_CHECK_VERSION(2,14,0) */ gchar *callback_memory_usage() { extern gchar *lginterval; return g_strdup_printf("[Memory]\n" "%s\n" "[$ShellParam$]\n" "ViewType=2\n" "LoadGraphSuffix= kB\n" "RescanInterval=2000\n" "ColumnTitle$TextValue=%s\n" "ColumnTitle$Extra1=%s\n" "ColumnTitle$Value=%s\n" "ShowColumnHeaders=true\n" "%s\n", meminfo, _("Field"), _("Description"), _("Value"), /* column labels */ lginterval); } gchar *computer_get_machinetype(int english) { gchar *tmp; GDir *dir; gchar *chassis; if(g_file_test("/proc/xen", G_FILE_TEST_EXISTS)) { DEBUG("/proc/xen found; assuming Xen"); if(english) return g_strdup(N_("Virtual (Xen)")); else return g_strdup(_("Virtual (Xen)")); } tmp = module_call_method("devices::getMotherboard"); if(strstr(tmp, "VirtualBox") != NULL) { g_free(tmp); if(english) return g_strdup(N_("Virtual (VirtualBox)")); else return g_strdup(_("Virtual (VirtualBox)")); } if(strstr(tmp, "VMware") != NULL) { g_free(tmp); if(english) return g_strdup(N_("Virtual (VMware)")); else return g_strdup(_("Virtual (VMware)")); } g_free(tmp); tmp = module_call_method("devices::getStorageDevices"); if((strstr(tmp, "QEMU") != NULL) || (strstr(tmp, "VirtIO") != NULL)) { g_free(tmp); if(english) return g_strdup(N_("Virtual (QEMU)")); else return g_strdup(_("Virtual (QEMU)")); } g_free(tmp); tmp=module_call_method("computer::getOSKernel"); if(strstr(tmp,"WSL2")){ g_free(tmp); return g_strdup("Virtual (WSL2)"); } g_free(tmp); //Physical machine chassis = dmi_chassis_type_str(-1, 0); if (chassis) return chassis; chassis = dtr_get_string("/model", 0); if (chassis) { g_free(chassis); if(english) return g_strdup(N_("Single-board computer")); else return g_strdup(_("Single-board computer")); } if (g_file_test("/proc/pmu/info", G_FILE_TEST_EXISTS)) return g_strdup(_("Laptop")); dir = g_dir_open("/proc/acpi/battery", 0, NULL); if (dir) { const gchar *name = g_dir_read_name(dir); g_dir_close(dir); if (name) return g_strdup(_("Laptop")); } dir = g_dir_open("/sys/class/power_supply", 0, NULL); if (dir) { const gchar *name; while ((name = g_dir_read_name(dir))) { gchar *contents; gchar type[PATH_MAX]; int r; r = snprintf(type, sizeof(type), "%s/%s/type", "/sys/class/power_supply", name); if (r < 0 || r > PATH_MAX) continue; if (g_file_get_contents(type, &contents, NULL, NULL)) { if (g_str_has_prefix(contents, "Battery")) { g_free(contents); g_dir_close(dir); if(english) return g_strdup(N_("Laptop")); else return g_strdup(_("Laptop")); } g_free(contents); } } g_dir_close(dir); } if(english) return g_strdup(N_("Unknown physical machine type")); else return g_strdup(_("Unknown physical machine type")); } gchar *callback_summary(void) { struct Info *info = info_new(); info_set_view_type(info, SHELL_VIEW_DETAIL); info_add_group(info, _("Computer"), info_field(_("Processor"), idle_free(module_call_method("devices::getProcessorNameAndDesc"))), info_field_update(_("Memory"), 1000), info_field_printf(_("Machine Type"), "%s", computer_get_machinetype(0)), info_field(_("Operating System"), computer->os->distro), info_field(_("User Name"), computer->os->username), info_field_update(_("Date/Time"), 1000), info_field_last()); info_add_group(info, _("Display"), info_field_printf(_("Resolution"), _(/* label for resolution */ "%dx%d pixels"), computer->display->width, computer->display->height), info_field(_("Display Adapter"), idle_free(module_call_method("devices::getGPUList"))), info_field(_("OpenGL Renderer"), THISORUNK(computer->display->xi->glx->ogl_renderer)), info_field(_("Session Display Server"), THISORUNK(computer->display->display_server)), info_field_last()); info_add_computed_group(info, _("Audio Devices"), idle_free(computer_get_alsacards(computer))); info_add_computed_group_wo_extra(info, _("Input Devices"), idle_free(module_call_method("devices::getInputDevices"))); info_add_computed_group(info, NULL, /* getPrinters provides group headers */ idle_free(module_call_method("devices::getPrinters"))); info_add_computed_group_wo_extra(info, NULL, /* getStorageDevices provides group headers */ idle_free(module_call_method("devices::getStorageDevices"))); return info_flatten(info); } gchar *callback_os(void) { struct Info *info = info_new(); gchar *distro_icon; gchar *distro; info_set_view_type(info, SHELL_VIEW_DETAIL); distro_icon = computer->os->distroid ? idle_free(g_strdup_printf("LARGEdistros/%s.svg",computer->os->distroid)) : NULL; distro = computer->os->distrocode ? idle_free(g_strdup_printf("%s (%s)", computer->os->distro, computer->os->distrocode)) : computer->os->distro; info_add_group( info, _("Version"), info_field(_("Kernel"), computer->os->kernel), info_field(_("Command Line"), idle_free(strwrap(computer->os->kcmdline,80,' ')) ?: _("Unknown")), info_field(_("Version"), computer->os->kernel_version), info_field(_("C Library"), computer->os->libc), info_field(_("Distribution"), distro, .value_has_vendor = TRUE, .icon = distro_icon), info_field_last()); info_add_group(info, _("Current Session"), info_field(_("Computer Name"), computer->os->hostname), info_field(_("User Name"), computer->os->username), info_field(_("Language"), idle_free(strwrap(computer->os->language,80,';'))), info_field(_("Home Directory"), computer->os->homedir), info_field(_("Desktop Environment"), computer->os->desktop), info_field_last()); info_add_group(info, _("Misc"), info_field_update(_("Uptime"), 1000), info_field_update(_("Load Average"), 10000), info_field_last()); return info_flatten(info); } gchar *callback_security(void) { gchar *st, buffer[100], *systype=NULL; FILE *io; if( (io = fopen("/run/hardinfo2/systype", "r")) ) { if(fgets(buffer, sizeof(buffer), io)) { if(strstr(buffer,"Root")) systype=g_strdup(_("Root Only System")); if(strstr(buffer,"Single")) systype=g_strdup(_("Single User System")); if(strstr(buffer,"Multi")) systype=g_strdup(_("Multi User System")); } } struct Info *info = info_new(); info_set_view_type(info, SHELL_VIEW_DETAIL); info_add_group(info, _("HardInfo2"), info_field(_("HardInfo2 running as"), (getuid() == 0) ? _("Superuser") : _("User")), info_field(_("User System Type"), (systype!=NULL) ? systype : _("Hardinfo2 Service not enabled/started")), info_field_last()); if(systype) idle_free(systype); info_add_group( info, _("Health"), //info_field_update(_("Available entropy in /dev/random"), 1000, .tag = g_strdup("entropy") ), info_field(_("Available entropy in /dev/random"), computer_get_entropy_avail() ), info_field_last()); info_add_group( info, _("Hardening Features"), info_field(_("ASLR"), idle_free(computer_get_aslr())), info_field(_("dmesg"), idle_free(computer_get_dmesg_status())), info_field_last()); info_add_group( info, _("Linux Security Modules"), info_field(_("Modules available"), idle_free(computer_get_lsm())), info_field(_("SELinux status"), computer_get_selinux()), info_field_last()); GDir *dir = g_dir_open("/sys/devices/system/cpu/vulnerabilities", 0, NULL); if (dir) { struct InfoGroup *vulns = info_add_group(info, _("CPU Vulnerabilities"), info_field_last()); vulns->sort = INFO_GROUP_SORT_NAME_ASCENDING; const gchar *vuln; while ((vuln = g_dir_read_name(dir))) { gchar *contents = h_sysfs_read_string( "/sys/devices/system/cpu/vulnerabilities", vuln); if (!contents) continue; const gchar *icon = NULL; if (g_strstr_len(contents, -1, "Not affected") ) icon = "circle_green_check.svg"; if (g_str_has_prefix(contents, "Mitigation:") || g_str_has_prefix(contents, "mitigation:")) icon = "circle_yellow_exclaim.svg"; if (g_strstr_len(contents, -1, "Vulnerable") || g_strstr_len(contents, -1, "vulnerable")) icon = "circle_red_x.svg"; st=strwrap(contents,90,','); g_free(contents); info_group_add_fields(vulns, info_field(g_strdup(vuln), idle_free(st), .icon = icon, .free_name_on_flatten = TRUE), info_field_last()); } g_dir_close(dir); } return info_flatten(info); } gchar *callback_modules(void) { struct Info *info = info_new(); info_add_computed_group(info, _("Loaded Modules"), module_list); info_set_column_title(info, "TextValue", _("Name")); info_set_column_title(info, "Value", _("Description")); info_set_column_headers_visible(info, TRUE); info_set_view_type(info, SHELL_VIEW_DUAL); return info_flatten(info); } gchar *callback_boots(void) { struct Info *info = info_new(); info_add_computed_group(info, _("Boots"), computer->os->boots); info_set_column_title(info, "TextValue", _("Date & Time")); info_set_column_title(info, "Value", _("Kernel Version")); info_set_column_headers_visible(info, TRUE); return info_flatten(info); } gchar *callback_locales(void) { struct Info *info = info_new(); info_add_computed_group(info, _("Available Languages"), computer->os->languages); info_set_column_title(info, "TextValue", _("Language Code")); info_set_column_title(info, "Value", _("Name")); info_set_view_type(info, SHELL_VIEW_DUAL); info_set_column_headers_visible(info, TRUE); return info_flatten(info); } gchar *callback_fs(void) { struct Info *info = info_new(); info_add_computed_group(info, _("Mounted File Systems"), fs_list); info_set_column_title(info, "Extra1", _("Mount Point")); info_set_column_title(info, "Progress", _("Usage")); info_set_column_title(info, "TextValue", _("Device")); info_set_column_headers_visible(info, TRUE); info_set_view_type(info, SHELL_VIEW_PROGRESS_DUAL); info_set_zebra_visible(info, TRUE); info_set_normalize_percentage(info, FALSE); return info_flatten(info); } gchar *callback_display(void) { int n = 0; gchar *screens_str = strdup(""), *outputs_str = strdup(""); xinfo *xi = computer->display->xi; xrr_info *xrr = xi->xrr; glx_info *glx = xi->glx; vk_info *vk = xi->vk; wl_info *wl = computer->display->wl; struct Info *info = info_new(); info_set_view_type(info, SHELL_VIEW_DETAIL); info_add_group(info, _("Session"), info_field(_("Type"), THISORUNK(computer->display->session_type)), info_field_last()); info_add_group(info, _("Wayland"), info_field(_("Current Display Name"), (wl->display_name) ? (wl->display_name) : _("(Not Available)")), info_field_last()); info_add_group(info, _("X Server"), info_field(_("Current Display Name"), THISORUNK(xi->display_name) ), info_field(_("Vendor"), THISORUNK(xi->vendor), .value_has_vendor = TRUE ), info_field(_("Version"), THISORUNK(xi->version) ), info_field(_("Release Number"), THISORUNK(xi->release_number) ), info_field_last()); for (n = 0; n < xrr->screen_count; n++) { gchar *dims = g_strdup_printf(_(/* resolution WxH unit */ "%dx%d pixels"), xrr->screens[n].px_width, xrr->screens[n].px_height); screens_str = h_strdup_cprintf("Screen %d=%s\n", screens_str, xrr->screens[n].number, dims); g_free(dims); } info_add_computed_group(info, _("Screens"), screens_str); for (n = 0; n < xrr->output_count; n++) { gchar *connection = NULL; switch (xrr->outputs[n].connected) { case 0: connection = _("Disconnected"); break; case 1: connection = _("Connected"); break; case -1: default: connection = _("Unknown"); break; } gchar *dims = (xrr->outputs[n].screen == -1) ? g_strdup(_("Unused")) : g_strdup_printf(_("%dx%d pixels, offset (%d, %d)"), xrr->outputs[n].px_width, xrr->outputs[n].px_height, xrr->outputs[n].px_offset_x, xrr->outputs[n].px_offset_y); outputs_str = h_strdup_cprintf("%s=%s; %s\n", outputs_str, xrr->outputs[n].name, connection, dims); g_free(dims); } info_add_computed_group(info, _("Outputs (XRandR)"), outputs_str); info_add_group(info, _("OpenGL (GLX)"), info_field(_("Vendor"), THISORUNK(glx->ogl_vendor), .value_has_vendor = TRUE ), info_field(_("Renderer"), THISORUNK(glx->ogl_renderer) ), info_field(_("Direct Rendering"), glx->direct_rendering ? _("Yes") : _("No")), info_field(_("Version (Compatibility)"), THISORUNK(glx->ogl_version) ), info_field(_("Shading Language Version (Compatibility)"), THISORUNK(glx->ogl_sl_version) ), info_field(_("Version (Core)"), THISORUNK(glx->ogl_core_version) ), info_field(_("Shading Language Version (Core)"), THISORUNK(glx->ogl_core_sl_version) ), info_field(_("Version (ES)"), THISORUNK(glx->ogles_version) ), info_field(_("Shading Language Version (ES)"), THISORUNK(glx->ogles_sl_version) ), info_field(_("GLX Version"), THISORUNK(glx->glx_version) ), info_field_last()); //Search for real vulkan GPU int i=0; while(ivk_devType[i]) && strstr(vk->vk_devType[i],"CPU")) i++; if((i>=VK_MAX_GPU) || !vk->vk_devType[i] || strstr(vk->vk_devType[i],"CPU")) i=0;//not found set to first if any info_add_group(info, _("Vulkan"), info_field(_("Instance Version"), THISORUNK(vk->vk_instVer) ), //GPU info_field(_("Api Version"), THISORUNK(vk->vk_apiVer[i]) ), info_field(_("Driver Version"), THISORUNK(vk->vk_drvVer[i]) ), info_field(_("Vendor"), THISORUNK(vk->vk_vendorId[i]), .value_has_vendor = TRUE ), info_field(_("Device Type"), THISORUNK(vk->vk_devType[i]) ), info_field(_("Device Name"), THISORUNK(vk->vk_devName[i]) ), info_field(_("Driver Name"), THISORUNK(vk->vk_drvName[i]) ), info_field(_("Driver Info"), THISORUNK(vk->vk_drvInfo[i]) ), info_field(_("Conformance Version"), THISORUNK(vk->vk_conformVer[i]) ), info_field_last()); return info_flatten(info); } gchar *callback_users(void) { struct Info *info = info_new(); info_add_computed_group(info, _("Users"), users); info_set_view_type(info, SHELL_VIEW_DUAL); info_set_reload_interval(info, 10000); return info_flatten(info); } gchar *callback_groups(void) { struct Info *info = info_new(); info_add_computed_group(info, _("Group"), groups); info_set_column_title(info, "TextValue", _("Name")); info_set_column_title(info, "Value", _("Group ID")); info_set_column_headers_visible(info, TRUE); info_set_reload_interval(info, 10000); return info_flatten(info); } gchar *get_os_kernel(void) { scan_os(FALSE); return g_strdup(computer->os->kernel); } gchar *get_os(void) { scan_os(FALSE); if(computer->os->distrocode) return g_strdup_printf("%s (%s)",computer->os->distro,computer->os->distrocode); return g_strdup(computer->os->distro); } gchar *get_os_short(void) { scan_os(FALSE); gchar *os=g_strdup(computer->os->distro); strend(os,'-'); if(os[strlen(os)-1]==' ') os[strlen(os)-1]=0; return os; } gchar *get_vulkan_driver(void) { scan_display(FALSE); //Search for real vulkan GPU int i=0; while(idisplay->xi->vk->vk_devType[i]) && strstr(computer->display->xi->vk->vk_devType[i],"CPU")) i++; if((i>=VK_MAX_GPU) || !computer->display->xi->vk->vk_devType[i] || strstr(computer->display->xi->vk->vk_devType[i],"CPU")) i=0;//not found set to first if any return g_strdup_printf("%s V:%s info:%s",THISORUNK(computer->display->xi->vk->vk_drvName[i]),THISORUNK(computer->display->xi->vk->vk_drvVer[i]),THISORUNK(computer->display->xi->vk->vk_drvInfo[i])); } gchar *get_vulkan_device(void) { scan_display(FALSE); //Search for real vulkan GPU int i=0; gchar *st=""; while(idisplay->xi->vk->vk_devType[i]) && strstr(computer->display->xi->vk->vk_devType[i],"CPU")) i++; if((i>=VK_MAX_GPU) || !computer->display->xi->vk->vk_devType[i] || strstr(computer->display->xi->vk->vk_devType[i],"CPU")) i=0;//not found set to first if any if(computer->display->xi->vk->vk_devType[i]){ st=computer->display->xi->vk->vk_devType[i]; if(strstr(computer->display->xi->vk->vk_devType[i],"CPU")) st="CPU"; if(strstr(computer->display->xi->vk->vk_devType[i],"GPU")) st="GPU"; } return g_strdup_printf("%s:%s - %s",st,THISORUNK(computer->display->xi->vk->vk_vendorId[i]),THISORUNK(computer->display->xi->vk->vk_devName[i])); } gchar *get_vulkan_versions(void) { scan_display(FALSE); //Search for real vulkan GPU int i=0; while(idisplay->xi->vk->vk_devType[i]) && strstr(computer->display->xi->vk->vk_devType[i],"CPU")) i++; if((i>=VK_MAX_GPU) || !computer->display->xi->vk->vk_devType[i] || strstr(computer->display->xi->vk->vk_devType[i],"CPU")) i=0;//not found set to first if any return g_strdup_printf("inst:%s api:%s conform:%s type:%s",THISORUNK(computer->display->xi->vk->vk_instVer),THISORUNK(computer->display->xi->vk->vk_apiVer[i]),THISORUNK(computer->display->xi->vk->vk_conformVer[i]),THISORUNK(computer->display->session_type)); } gchar *get_ogl_renderer(void) { scan_display(FALSE); return g_strdup(computer->display->xi->glx->ogl_renderer); } gchar *get_display_summary(void) { scan_display(FALSE); gchar *gpu_list = module_call_method("devices::getGPUList"); gchar *ret = g_strdup_printf( "%s\n" "%dx%d\n" "%s\n" "%s", gpu_list, computer->display->width, computer->display->height, computer->display->display_server, (computer->display->xi->glx->ogl_renderer) ? computer->display->xi->glx->ogl_renderer : "" ); g_free(gpu_list); return ret; } gchar *get_kernel_module_description(gchar *module) { gchar *description; if (!_module_hash_table) { scan_modules(FALSE); } description = g_hash_table_lookup(_module_hash_table, module); if (!description) { return NULL; } return g_strdup(description); } gchar *get_audio_cards(void) { if (!computer->alsa) { computer->alsa = computer_get_alsainfo(); } return computer_get_alsacards(computer); } /* the returned string must stay in kB as it is used * elsewhere with that expectation */ gchar *get_memory_total(void) { scan_memory_usage(FALSE); return moreinfo_lookup ("DEV:MemTotal"); } gchar *get_memory_desc(void) { gchar *avail = g_strdup(get_memory_total()); double k = avail ? (double)strtol(avail, NULL, 10) : 0; if (k) { g_free(avail);avail = NULL; const char *fmt = _(/*/ "usable memory" */ "%0.1f %s available to Linux"); if (k > (2048 * 1024)) avail = g_strdup_printf(fmt, k / (1024*1024), _("GiB") ); else if (k > 2048) avail = g_strdup_printf(fmt, k / 1024, _("MiB") ); else avail = g_strdup_printf(fmt, k, _("KiB") ); } // gchar *mem = module_call_method("devices::getMemDesc"); if (mem) { gchar *ret = g_strdup_printf("%s\n%s", mem, (avail ? avail : "")); g_free(avail); g_free(mem); return ret; } return avail; } static gchar *get_machine_type(void) { return computer_get_machinetype(0); } static gchar *get_machine_type_english(void) { return computer_get_machinetype(1); } const ShellModuleMethod *hi_exported_methods(void) { static const ShellModuleMethod m[] = { {"getOSKernel", get_os_kernel}, {"getOS", get_os}, {"getOSshort", get_os_short}, {"getDisplaySummary", get_display_summary}, {"getOGLRenderer", get_ogl_renderer}, {"getAudioCards", get_audio_cards}, {"getKernelModuleDescription", get_kernel_module_description}, {"getMemoryTotal", get_memory_total}, {"getMemoryDesc", get_memory_desc}, {"getMachineType", get_machine_type}, {"getMachineTypeEnglish", get_machine_type_english}, {"getVulkanDriver", get_vulkan_driver}, {"getVulkanDevice", get_vulkan_device}, {"getVulkanVersions", get_vulkan_versions}, {NULL}, }; return m; } ModuleEntry *hi_module_get_entries(void) { return entries; } gchar *hi_module_get_name(void) { return g_strdup(_("Computer")); } guchar hi_module_get_weight(void) { return 80; } gchar **hi_module_get_dependencies(void) { static gchar *deps[] = { "devices.so", NULL }; return deps; } gchar *hi_module_get_summary(void) { gchar *virt = computer_get_machinetype(0); gchar *machine_type = g_strdup_printf("%s (%s)", _("Motherboard"), (char*)idle_free(virt)); return g_strdup_printf("[%s]\n" "Icon=os.svg\n" "Method=computer::getOSshort\n" "[%s]\n" "Icon=processor.svg\n" "Method=devices::getProcessorNameAndDesc\n" "[%s]\n" "Icon=memory.svg\n" "Method=computer::getMemoryDesc\n" "[%s]\n" "Icon=mb.svg\n" "Method=devices::getMotherboard\n" "[%s]\n" "Icon=monitor.svg\n" "Method=computer::getDisplaySummary\n" "[%s]\n" "Icon=hdd.svg\n" "Method=devices::getStorageDevicesSimple\n" "[%s]\n" "Icon=printer.svg\n" "Method=devices::getPrinters\n" "[%s]\n" "Icon=audio.svg\n" "Method=computer::getAudioCards\n", _("Operating System"), _("Processor"), _("Memory"), (char*)idle_free(machine_type), _("Graphics"), _("Storage"), _("Printers"), _("Audio") ); } void hi_module_deinit(void) { g_hash_table_destroy(memlabels); if (computer->os) { g_free(computer->os->kernel); g_free(computer->os->kcmdline); g_free(computer->os->libc); g_free(computer->os->distrocode); g_free(computer->os->distro); g_free(computer->os->hostname); g_free(computer->os->language); g_free(computer->os->homedir); g_free(computer->os->kernel_version); g_free(computer->os->languages); g_free(computer->os->desktop); g_free(computer->os->username); g_free(computer->os->boots); g_free(computer->os); } computer_free_display(computer->display); if (computer->alsa) { g_slist_free(computer->alsa->cards); g_free(computer->alsa); } g_free(computer->date_time); g_free(computer); moreinfo_del_with_prefix("COMP"); } void hi_module_init(void) { computer = g_new0(Computer, 1); init_memory_labels(); kernel_module_icon_init(); } const ModuleAbout *hi_module_get_about(void) { static const ModuleAbout ma = { .author = "L. A. F. Pereira", .description = N_("Gathers high-level computer information"), .version = VERSION, .license = "GNU GPL version 2 or later.",}; return &ma; } static const gchar *hinote_kmod() { static gchar note[note_max_len] = ""; gboolean ok = TRUE; *note = 0; /* clear */ ok &= note_require_tool("lsmod", note, _("lsmod is required.")); return ok ? NULL : g_strstrip(note); /* remove last \n */ } static const gchar *hinote_display() { static gchar note[note_max_len] = ""; gboolean ok = TRUE; *note = 0; /* clear */ ok &= note_require_tool("xrandr", note, _("X.org's xrandr utility provides additional details when available.")); ok &= note_require_tool("glxinfo", note, _("Mesa's glxinfo utility is required for OpenGL information.")); ok &= note_require_tool("vulkaninfo", note, _("Vulkan's vulkaninfo utility is required for Vulkan information.")); return ok ? NULL : g_strstrip(note); /* remove last \n */ } const gchar *hi_note_func(gint entry) { if (entry == ENTRY_KMOD) { return hinote_kmod(); } else if (entry == ENTRY_DISPLAY) { return hinote_display(); } return NULL; } hardinfo2-hardinfo2-1331e88/modules/computer/000077500000000000000000000000001474767047500210515ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/modules/computer/alsa.c000066400000000000000000000036031474767047500221370ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "hardinfo.h" #include "computer.h" gchar * computer_get_alsacards(Computer * computer) { GSList *p; gchar *tmp = g_strdup_printf("[%s]\n", _("Audio Devices")); gint n = 0; if (computer->alsa) { for (p = computer->alsa->cards; p; p = p->next) { AlsaCard *ac = (AlsaCard *) p->data; tmp = h_strdup_cprintf("%s#%d=%s\n", tmp, _("Audio Adapter"), ++n, ac->friendly_name); } } return tmp; } AlsaInfo * computer_get_alsainfo(void) { AlsaInfo *ai; AlsaCard *ac; FILE *cards; gchar buffer[128]; cards = fopen("/proc/asound/cards", "r"); if (!cards) return NULL; ai = g_new0(AlsaInfo, 1); char *c=(char *)1; while (c && (c=fgets(buffer, 128, cards))) { gchar **tmp; ac = g_new0(AlsaCard, 1); tmp = g_strsplit(buffer, ":", 0); ac->friendly_name = g_strdup(tmp[1]); ai->cards = g_slist_append(ai->cards, ac); g_strfreev(tmp); c=fgets(buffer, 128, cards); /* skip next line */ } fclose(cards); return ai; } hardinfo2-hardinfo2-1331e88/modules/computer/boots.c000066400000000000000000000040661474767047500223510ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include #include "hardinfo.h" #include "computer.h" extern void scan_os(gboolean reload); void scan_boots_real(void) { gchar **tmp; gboolean spawned; gchar *out, *err, *p, *s, *next_nl; int cnt; cnt=0; scan_os(FALSE); if (!computer->os->boots) computer->os->boots = strdup(""); else return; spawned = hardinfo_spawn_command_line_sync("last -F -w", &out, &err, NULL, NULL); if (spawned && out != NULL) { p = out; while((next_nl = strchr(p, '\n'))) { strend(p, '\n'); if (strstr(p, "system boot") && (params.force_all_details || (cnt++<20))) { s = p; while (*s) { if (*s == ' ' && *(s + 1) == ' ') { memmove(s, s + 1, strlen(s) + 1); s--; } else { s++; } } tmp = g_strsplit(p, " ", 0); computer->os->boots = h_strdup_cprintf("\n%s %s %s %s %s=%s", computer->os->boots, tmp[4], tmp[5], tmp[6], tmp[7], tmp[8], tmp[3]); g_strfreev(tmp); } p = next_nl + 1; } g_free(out); g_free(err); } } hardinfo2-hardinfo2-1331e88/modules/computer/display.c000066400000000000000000000047101474767047500226640ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "hardinfo.h" #include "computer.h" DisplayInfo *computer_get_display(void) { DisplayInfo *di = g_new0(DisplayInfo, 1); wl_info *wl = get_walyand_info(); xinfo *xi = xinfo_get_info(); xrr_info *xrr = xi->xrr; di->width = di->height = 0; if (xrr->screen_count > 0) { di->width = xrr->screens[0].px_width; di->height = xrr->screens[0].px_height; } di->vendor = xi->vendor; di->session_type = wl->xdg_session_type; if (strcmp(di->session_type, "x11") == 0 ) { if (xi->nox) { di->display_server = g_strdup(_("(Unknown)")); /* assumed x11 previously, because it wasn't set */ free(wl->xdg_session_type); di->session_type = wl->xdg_session_type = NULL; } else if (xi->vendor && xi->version) di->display_server = g_strdup_printf("%s %s", xi->vendor, xi->version ); else if (xi->vendor && xi->release_number) di->display_server = g_strdup_printf("[X11] %s %s", xi->vendor, xi->release_number ); else di->display_server = g_strdup("X11"); } else if (strcmp(di->session_type, "wayland") == 0 ) { di->display_server = g_strdup("Wayland"); } else if (strcmp(di->session_type, "mir") == 0 ) { di->display_server = g_strdup("Mir"); } else { di->display_server = g_strdup(_("(Unknown)")); } di->xi = xi; di->wl = wl; return di; } void computer_free_display(DisplayInfo *di) { /* fyi: DisplayInfo is in computer.h */ if (di) { free(di->display_server); xinfo_free(di->xi); wl_free(di->wl); free(di); } } hardinfo2-hardinfo2-1331e88/modules/computer/environment.c000066400000000000000000000034031474767047500235610ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2008 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "hardinfo.h" #include "computer.h" gint comparEnv (gpointer a, gpointer b) {return strcmp( (char*)a, (char*)b );} static gchar *_env = NULL; void scan_env_var(gboolean reload) { SCAN_START(); gchar **envlist; gchar *st; gint i; GList *list=NULL, *a; g_free(_env); //read environment to GList _env = g_strdup_printf("[%s]\n", _("Environment Variables") ); for (i = 0, envlist = g_listenv(); envlist[i]; i++) { st=strwrap(g_getenv(envlist[i]),80,':'); list = g_list_prepend(list, g_strdup_printf("%s=%s\n", envlist[i], st)); g_free(st); } g_strfreev(envlist); //sort list=g_list_sort(list,(GCompareFunc)comparEnv); while(list){ _env = h_strdup_cprintf("%s", _env, (char *)list->data); //next and free a=list; list=list->next; free(a->data); g_list_free_1(a); } SCAN_END(); } gchar *callback_env_var(void) { return g_strdup(_env); } hardinfo2-hardinfo2-1331e88/modules/computer/filesystem.c000066400000000000000000000071021474767047500234010ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * * Some code from xfce4-mount-plugin, version 0.4.3 * Copyright (C) 2005 Jean-Baptiste jb_dul@yahoo.com * Distributed under the terms of GNU GPL 2+ - * https://gitlab.xfce.org/panel-plugins/xfce4-mount-plugin/-/blob/master/panel-plugin/mount-plugin.c .* */ #include #include #include "hardinfo.h" #include "computer.h" gchar *fs_list = NULL; void scan_filesystems(void) { FILE *mtab; gchar buf[1024]; struct statfs sfs; int count = 0; g_free(fs_list); fs_list = g_strdup(""); moreinfo_del_with_prefix("COMP:FS"); mtab = fopen("/etc/mtab", "r"); if (!mtab) return; while (fgets(buf, 1024, mtab)) { gfloat size, used, avail; gchar **tmp; tmp = g_strsplit(buf, " ", 0); if (!statfs(tmp[1], &sfs)) { gfloat use_ratio; size = (float) sfs.f_bsize * (float) sfs.f_blocks; avail = (float) sfs.f_bsize * (float) sfs.f_bavail; used = size - avail; if (size == 0.0f) { continue; } if (avail == 0.0f) { use_ratio = 100.0f; } else { use_ratio = 100.0f * (used / size); } gchar *strsize = size_human_readable(size), *stravail = size_human_readable(avail), *strused = size_human_readable(used); gchar *strhash; gboolean rw = strstr(tmp[3], "rw") != NULL; strreplacechr(tmp[0], "#", '_'); strhash = g_strdup_printf("[%s]\n" "%s=%s\n" "%s=%s\n" "%s=%s\n" "%s=%s\n" "%s=%s\n" "%s=%s\n", tmp[0], /* path */ _("Filesystem"), tmp[2], _("Mounted As"), rw ? _("Read-Write") : _("Read-Only"), _("Mount Point"), tmp[1], _("Size"), strsize, _("Used"), strused, _("Available"), stravail); gchar *key = g_strdup_printf("FS%d", ++count); moreinfo_add_with_prefix("COMP", key, strhash); g_free(key); fs_list = h_strdup_cprintf("$FS%d$%s%s=%.2f %% (%s of %s)|%s\n", fs_list, count, tmp[0], rw ? "" : "🔒", use_ratio, stravail, strsize, tmp[1]); g_free(strsize); g_free(stravail); g_free(strused); } g_strfreev(tmp); } fclose(mtab); } hardinfo2-hardinfo2-1331e88/modules/computer/groups.c000066400000000000000000000031561474767047500225410ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2012 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include #include "hardinfo.h" #include "computer.h" gint comparGroups (gpointer a, gpointer b) {return strcmp( (char*)a, (char*)b );} gchar *groups = NULL; void scan_groups_do(void) { struct group *group_; GList *list=NULL, *a; setgrent(); group_ = getgrent(); if (!group_) return; g_free(groups); groups = g_strdup(""); while (group_) { list=g_list_prepend(list,g_strdup_printf("%s=%d\n", group_->gr_name, group_->gr_gid)); group_ = getgrent(); } endgrent(); //sort list=g_list_sort(list,(GCompareFunc)comparGroups); while (list) { groups = h_strdup_cprintf("%s", groups, (char *)list->data); //next and free a=list; list=list->next; free(a->data); g_list_free_1(a); } } hardinfo2-hardinfo2-1331e88/modules/computer/languages.c000066400000000000000000000136021474767047500231650ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "hardinfo.h" #include "computer.h" #include "cpu_util.h" /* for UNKIFNULL() */ typedef struct { gchar name[32]; gchar *title, *source, *address, *email, *language, *territory, *revision, *date, *codeset; } locale_info; void locale_info_free(locale_info *s) { if (s) { g_free(s->title); g_free(s->source); g_free(s->address); g_free(s->email); g_free(s->language); g_free(s->territory); g_free(s->revision); g_free(s->date); g_free(s->codeset); free(s); } } /* TODO: use info_* */ gchar *locale_info_section(locale_info *s) { gchar *name = g_strdup(s->name); gchar *title = g_strdup(s->title), *source = g_strdup(s->source), *address = g_strdup(s->address), *email = g_strdup(s->email), *language = g_strdup(s->language), *territory = g_strdup(s->territory), *revision = g_strdup(s->revision), *date = g_strdup(s->date), *codeset = g_strdup(s->codeset); UNKIFNULL(title); UNKIFNULL(source); UNKIFNULL(address); UNKIFNULL(email); UNKIFNULL(language); UNKIFNULL(territory); UNKIFNULL(revision); UNKIFNULL(date); UNKIFNULL(codeset); /* values may have & */ title = hardinfo_clean_value(title, 1); source = hardinfo_clean_value(source, 1); address = hardinfo_clean_value(address, 1); email = hardinfo_clean_value(email, 1); language = hardinfo_clean_value(language, 1); territory = hardinfo_clean_value(territory, 1); gchar *ret = g_strdup_printf("[%s]\n" /* Name */ "%s=%s (%s)\n" /* Source */ "%s=%s\n" /* Address */ "%s=%s\n" /* Email */ "%s=%s\n" /* Language */ "%s=%s\n" /* Territory */"%s=%s\n" /* Revision */ "%s=%s\n" /* Date */ "%s=%s\n" /* Codeset */ "%s=%s\n", _("Locale Information"), _("Name"), name, title, _("Source"), source, _("Address"), address, _("E-mail"), email, _("Language"), language, _("Territory"), territory, _("Revision"), revision, _("Date"), date, _("Codeset"), codeset ); g_free(name); g_free(title); g_free(source); g_free(address); g_free(email); g_free(language); g_free(territory); g_free(revision); g_free(date); g_free(codeset); return ret; } void scan_languages(OperatingSystem * os) { gboolean spawned; gchar *out, *err, *p, *next_nl; gchar *ret = NULL; locale_info *curr = NULL; int last = 0; spawned = hardinfo_spawn_command_line_sync("locale -va", &out, &err, NULL, NULL); if (spawned) { ret = g_strdup(""); p = out; while(1) { /* `locale -va` doesn't end the last locale block * with an \n, which makes this more complicated */ next_nl = strchr(p, '\n'); if (next_nl == NULL) next_nl = strchr(p, 0); last = (*next_nl == 0) ? 1 : 0; strend(p, '\n'); if (strncmp(p, "locale:", 7) == 0) { curr = g_new0(locale_info, 1); sscanf(p, "locale: %s", curr->name); /* TODO: 'directory:' and 'archive:' */ } else if (strchr(p, '|')) { do {/* get_str() has a continue in it, * how fn frustrating that was to figure out */ gchar **tmp = g_strsplit(p, "|", 2); tmp[0] = g_strstrip(tmp[0]); if (tmp[1]) { tmp[1] = g_strstrip(tmp[1]); get_str("title", curr->title); get_str("source", curr->source); get_str("address", curr->address); get_str("email", curr->email); get_str("language", curr->language); get_str("territory", curr->territory); get_str("revision", curr->revision); get_str("date", curr->date); get_str("codeset", curr->codeset); } g_strfreev(tmp); } while (0); } else if (strstr(p, "------")) { /* do nothing */ } else if (curr) { /* a blank line is the end of a locale */ gchar *li_str = locale_info_section(curr); gchar *clean_title = hardinfo_clean_value(curr->title, 0); /* may contain & */ ret = h_strdup_cprintf("$%s$%s=%s\n", ret, curr->name, curr->name, clean_title); moreinfo_add_with_prefix("COMP", g_strdup(curr->name), li_str); /* becomes owned by moreinfo */ locale_info_free(curr); curr = NULL; g_free(clean_title); } if (last) break; p = next_nl + 1; } g_free(out); g_free(err); } os->languages = ret; } hardinfo2-hardinfo2-1331e88/modules/computer/loadavg.c000066400000000000000000000034261474767047500226370ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "hardinfo.h" #include "computer.h" static gboolean computer_get_loadinfo(LoadInfo *li) { FILE *procloadavg; char buf[64]; int ret; procloadavg = fopen("/proc/loadavg", "r"); if (!procloadavg) return FALSE; if (!fgets(buf, sizeof(buf), procloadavg)) { fclose(procloadavg); return FALSE; } ret = sscanf(buf, "%f %f %f", &li->load1, &li->load5, &li->load15); if (ret != 3) { size_t len = strlen(buf); size_t i; for (i = 0; i < len; i++) { if (buf[i] == '.') buf[i] = ','; } ret = sscanf(buf, "%f %f %f", &li->load1, &li->load5, &li->load15); } fclose(procloadavg); return ret == 3; } gchar * computer_get_formatted_loadavg() { LoadInfo li; if (!computer_get_loadinfo(&li)) return g_strdup(_("Couldn't obtain load average")); return g_strdup_printf("%.2f, %.2f, %.2f", li.load1, li.load5, li.load15); } hardinfo2-hardinfo2-1331e88/modules/computer/memory.c000066400000000000000000000033041474767047500225250ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "hardinfo.h" #include "computer.h" MemoryInfo * computer_get_memory(void) { MemoryInfo *mi; FILE *procmem; gchar buffer[128]; procmem = fopen("/proc/meminfo", "r"); if (!procmem) return NULL; mi = g_new0(MemoryInfo, 1); while (fgets(buffer, 128, procmem)) { gchar **tmp = g_strsplit(buffer, ":", 2); if (tmp[1] == NULL) { g_strfreev(tmp); continue; } tmp[0] = g_strstrip(tmp[0]); tmp[1] = g_strstrip(tmp[1]); get_int("MemTotal", mi->total); get_int("MemFree", mi->free); get_int("Cached", mi->cached); g_strfreev(tmp); } fclose(procmem); mi->used = mi->total - mi->free; mi->total /= 1000; mi->cached /= 1000; mi->used /= 1000; mi->free /= 1000; mi->used -= mi->cached; mi->ratio = 1 - (gdouble) mi->used / mi->total; return mi; } hardinfo2-hardinfo2-1331e88/modules/computer/memory_usage.c000066400000000000000000000224171474767047500237170ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "devices.h" GHashTable *memlabels = NULL; gint comparMem (gpointer a, gpointer b) {return strcmp( (char*)a, (char*)b );} void scan_memory_do(void) { gchar **keys, *tmp, *memstr, *lgstr, *tmp_label, *trans_val; static gint offset = -1; gint i; GList *list=NULL, *a; if (offset == -1) { /* gah. linux 2.4 adds three lines of data we don't need in * /proc/meminfo. * The lines look something like this: * total: used: free: shared: buffers: cached: * Mem: 3301101568 1523159040 1777942528 0 3514368 1450356736 * Swap: 0 0 0 */ gchar *os_kernel = module_call_method("computer::getOSKernel"); if (os_kernel) { offset = strstr(os_kernel, "Linux 2.4") ? 3 : 0; g_free(os_kernel); } else { offset = 0; } } g_file_get_contents("/proc/meminfo", &tmp, NULL, NULL); keys = g_strsplit(tmp, "\n", 0); g_free(tmp); for (i = offset; keys[i]; i++) { gchar **newkeys = g_strsplit(keys[i], ":", 0); if (!newkeys[0]) { g_strfreev(newkeys); break; } g_strstrip(newkeys[0]); g_strstrip(newkeys[1]); /* try to find a localizable label */ tmp = g_hash_table_lookup(memlabels, newkeys[0]); if (tmp) tmp_label = _(tmp); else tmp_label = newkeys[0]; if (strstr(newkeys[1], "kB")) { trans_val = g_strdup_printf("%d %s", atoi(newkeys[1]), _("KiB") ); } else { trans_val = strdup(newkeys[1]); } /*add MemTotal for internal usage*/ //if(strcmp(newkeys[0],"MemTotal")==0) moreinfo_add_with_prefix("DEV", newkeys[0], g_strdup(newkeys[1])); list = g_list_prepend(list, g_strdup_printf("%s=%s=%s\n", newkeys[0], trans_val, tmp_label)); g_free(trans_val); g_strfreev(newkeys); } g_strfreev(keys); //Sort memory information list=g_list_sort(list,(GCompareFunc)comparMem); //add memory information memstr=strdup("");lgstr=strdup(""); while(list){ char **datas = g_strsplit(list->data,"=",3); if (!datas[0]) { g_strfreev(datas); break; } moreinfo_add_with_prefix("DEV", datas[0], g_strdup(datas[1])); tmp = g_strconcat(memstr, datas[0],"=",datas[1],"|",datas[2], "\n", NULL); g_free(memstr); memstr=tmp; tmp = g_strconcat(lgstr,"UpdateInterval$", datas[0], "=1000\n", NULL); g_free(lgstr); lgstr = tmp; g_strfreev(datas); //next and free a=list; list=list->next; free(a->data); g_list_free_1(a); } tmp=meminfo; meminfo = memstr; g_free(tmp); tmp=lginterval; lginterval = lgstr; g_free(tmp); } void init_memory_labels(void) { static const struct { char *proc_label; char *real_label; } proc2real[] = { /* https://docs.kernel.org/filesystems/proc.html */ { "MemTotal", N_("Total physical memory usable by the system") }, { "MemFree", N_("Free memory which is not used for anything") }, { "SwapTotal", N_("Virtual memory, total swap space available") }, { "SwapFree", N_("Virtual memory, remaining swap space available") }, { "SwapCached", N_("Memory present within main memory and in the swapfile") }, { "HighTotal", N_("HighTotal value can vary based on the type of kernel used") }, { "HighFree", N_("Amount of memory that is not directly mapped into kernel space") }, { "LowTotal", N_("LowTotal value can vary based on the type of kernel used") }, { "LowFree", N_("Total and free memory directly mapped into kernel space") }, { "MemAvailable", N_("Available memory for allocation to any process, without swapping") }, { "Buffers", N_("Memory in buffer cache, temporary storage for raw disk blocks") }, { "Cached", N_("Memory in the page cache (diskcache, shared memory, tmpfs and shmem)") }, { "Active", N_("Memory used more recently and not swapped out or reclaimed") }, { "Inactive", N_("Memory not been used recently and can be swapped out or reclaimed") }, { "Active(anon)", N_("Anonymous memory used more recently and not swapped out") }, { "Inactive(anon)", N_("Anonymous memory not been used and can be swapped out") }, { "Active(file)", N_("Pagecache memory been used more recently and not reclaimed") }, { "Inactive(file)", N_("Pagecache memory reclaimable without huge performance impact") }, { "Unevictable", N_("Unevictable pages can't be swapped out for a variety of reasons") }, { "Mlocked", N_("Pages locked to memory using the mlock() system call") }, { "Zswap", N_("Memory consumed by the zswap backend (compressed size)") }, { "Zswapped", N_("Amount of anonymous memory stored in zswap (original size)") }, { "Dirty", N_("Memory waiting to be written back to disk") }, { "Writeback", N_("Memory which is actively being written back to disk") }, { "AnonPages", N_("Non-file backed pages mapped into userspace page tables") }, { "Mapped", N_("Files which have been mmapped, such as libraries") }, { "Shmem", N_("Total memory used by shared memory (shmem) and tmpfs") }, { "KReclaimable", N_("Kernel allocations reclaimable under memory pressure") }, { "Slab", N_("In-kernel data structures cache") }, { "SReclaimable", N_("Part of Slab, that might be reclaimed, such as caches") }, { "SUnreclaim", N_("Part of Slab, that cannot be reclaimed on memory pressure") }, { "KernelStack", N_("Memory consumed by the kernel stacks of all tasks") }, { "PageTables", N_("Memory consumed by userspace page tables") }, { "SecPageTables", N_("Memory consumed by secondary page tables") }, { "NFS_Unstable", N_("Previous counted pages which had been written to the server") }, { "Bounce", N_("Memory used for block device bounce buffers") }, { "WritebackTmp", N_("Memory used by FUSE for temporary writeback buffers") }, { "CommitLimit", N_("Total memory currently available to be allocated on the system") }, { "Committed_AS", N_("The amount of memory presently allocated on the system") }, { "VmallocTotal", N_("Total size of vmalloc virtual address space") }, { "VmallocUsed", N_("Amount of vmalloc area which is used") }, { "VmallocChunk", N_("Largest contiguous block of vmalloc area which is free") }, { "Percpu", N_("Memory allocated to the percpu allocator") }, { "HardwareCorrupted", N_("Amount of memory the kernel identifies as corrupted") }, { "AnonHugePages", N_("Non-file backed huge pages mapped into userspace page tables") }, { "ShmemHugePages", N_("Memory used by shmem and tmpfs allocated with huge pages") }, { "ShmemPmdMapped", N_("Shared memory mapped into userspace with huge pages") }, { "FileHugePages", N_("Memory used for fs data (page cache) allocated with huge pages") }, { "FilePmdMapped", N_("Page cache mapped into userspace with huge pages") }, { "CmaTotal", N_("Memory reserved for the Contiguous Memory Allocator (CMA)") }, { "CmaFree", N_("Free remaining memory in the CMA reserves") }, { "Unaccepted", N_("Amount of unaccepted memory usable by the kernel") }, { "HugePages_Total", N_("Size of the pool of huge pages") }, { "HugePages_Free", N_("Number of huge pages available") }, { "HugePages_Rsvd", N_("Number of huge pages reserved") }, { "HugePages_Surp", N_("Number of huge pages surplus") }, { "Hugepagesize", N_("Huge page size, used in conjunction with hugepages parameter") }, { "Hugetlb", N_("Total amount of memory consumed by huge pages of all sizes") }, { "DirectMap4k", N_("Breakdown of page table sizes of 4k size") }, { "DirectMap2M", N_("Breakdown of page table sizes of 2M size") }, { "DirectMap1G", N_("Breakdown of page table sizes of 1G size") }, { NULL }, }; gint i; memlabels = g_hash_table_new(g_str_hash, g_str_equal); for (i = 0; proc2real[i].proc_label; i++) { g_hash_table_insert(memlabels, proc2real[i].proc_label, _(proc2real[i].real_label)); } } hardinfo2-hardinfo2-1331e88/modules/computer/modules.c000066400000000000000000000321611474767047500226700ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include #include #include "syncmanager.h" #include "computer.h" #include "cpu_util.h" /* for STRIFNULL() */ #include "hardinfo.h" #define GET_STR(field_name, ptr) \ if (!ptr && strstr(tmp[0], field_name)) { \ ptr = g_markup_escape_text(g_strstrip(tmp[1]), strlen(tmp[1])); \ g_strfreev(tmp); \ continue; \ } GHashTable *_module_hash_table = NULL; static gchar *kernel_modules_dir = NULL; enum icons { ICON_INVALID = 0, ICON_AUDIO, ICON_BLUETOOTH, ICON_CAMERA_WEB, ICON_CDROM, ICON_CRYPTOHASH, ICON_DEVICES, ICON_HDD, ICON_INPUTDEVICES, ICON_JOYSTICK, ICON_KEYBOARD, ICON_MEDIA_FLOPPY, ICON_MEDIA_REMOVABLE, ICON_MEMORY, ICON_MONITOR, ICON_MOUSE, ICON_NETWORK, ICON_NETWORK_CONNECTIONS, ICON_NETWORK_INTERFACE, ICON_THERM, ICON_USB, ICON_WIRELESS, ICON_MAX, }; static const char *icon_table[ICON_MAX] = { [ICON_AUDIO] = "audio", [ICON_BLUETOOTH] = "bluetooth", [ICON_CAMERA_WEB] = "camera-web", [ICON_CDROM] = "cdrom", [ICON_CRYPTOHASH] = "cryptohash", [ICON_DEVICES] = "devices", [ICON_HDD] = "hdd", [ICON_INPUTDEVICES] = "inputdevices", [ICON_JOYSTICK] = "joystick", [ICON_KEYBOARD] = "keyboard", [ICON_MEDIA_FLOPPY] = "media-floppy", [ICON_MEDIA_REMOVABLE] = "media-removable", [ICON_MEMORY] = "memory", [ICON_MONITOR] = "monitor", [ICON_MOUSE] = "mouse", [ICON_NETWORK] = "network", [ICON_NETWORK_CONNECTIONS] = "network-connections", [ICON_NETWORK_INTERFACE] = "network-interface", [ICON_THERM] = "therm", [ICON_USB] = "usb", [ICON_WIRELESS] = "wireless", }; /* Keep this sorted by reverse strlen(dir)! */ static const struct { const gchar *dir; enum icons icon; } modules_icons[] = { {"drivers/input/joystick/", ICON_JOYSTICK}, {"drivers/input/keyboard/", ICON_KEYBOARD}, {"drivers/media/usb/uvc/", ICON_CAMERA_WEB}, {"drivers/net/wireless/", ICON_WIRELESS}, {"drivers/net/ethernet/", ICON_NETWORK_INTERFACE}, {"drivers/input/mouse/", ICON_MOUSE}, {"drivers/bluetooth/", ICON_BLUETOOTH}, {"drivers/media/v4l", ICON_CAMERA_WEB}, {"arch/x86/crypto/", ICON_CRYPTOHASH}, {"drivers/crypto/", ICON_CRYPTOHASH}, {"net/bluetooth/", ICON_BLUETOOTH}, {"drivers/input/", ICON_INPUTDEVICES}, {"drivers/cdrom/", ICON_CDROM}, {"drivers/hwmon/", ICON_THERM}, {"drivers/iommu/", ICON_MEMORY}, {"net/wireless/", ICON_WIRELESS}, {"drivers/nvme/", ICON_HDD}, {"net/ethernet/", ICON_NETWORK_INTERFACE}, {"drivers/scsi/", ICON_HDD}, {"drivers/edac/", ICON_MEMORY}, {"drivers/hid/", ICON_INPUTDEVICES}, {"drivers/gpu/", ICON_MONITOR}, {"drivers/i2c/", ICON_MEMORY}, {"drivers/ata/", ICON_HDD}, {"drivers/usb/", ICON_USB}, {"drivers/pci/", ICON_DEVICES}, {"drivers/net/", ICON_NETWORK}, {"drivers/mmc/", ICON_MEDIA_REMOVABLE}, {"crypto/", ICON_CRYPTOHASH}, {"sound/", ICON_AUDIO}, {"net/", ICON_NETWORK_CONNECTIONS}, {"fs/", ICON_MEDIA_FLOPPY}, {}, }; static GHashTable *module_icons; static void build_icon_table_iter(JsonObject *object, const gchar *key, JsonNode *value, gpointer user_data) { char *key_copy = g_strdup(key); char *p; for (p = key_copy; *p; p++) { if (*p == '_') *p = '-'; } enum icons icon; const gchar *value_str = json_node_get_string(value); for (icon = ICON_INVALID; icon < ICON_MAX; icon++) { const char *icon_name = icon_table[icon]; if (!icon_name) continue; if (g_str_equal(value_str, icon_name)) { g_hash_table_insert(module_icons, key_copy, GINT_TO_POINTER(icon)); return; } } g_free(key_copy); } void kernel_module_icon_init(void) { gchar *icon_json; static SyncEntry sync_entry = { .name = N_("Update kernel module icon table"), .file_name = "kernel-module-icons.json", .optional = TRUE, }; sync_manager_add_entry(&sync_entry); icon_json = g_build_filename(g_get_user_config_dir(), "hardinfo2", "kernel-module-icons.json", NULL); module_icons = g_hash_table_new(g_str_hash, g_str_equal); if (!g_file_test(icon_json, G_FILE_TEST_EXISTS)) goto out; JsonParser *parser = json_parser_new(); if (!json_parser_load_from_file(parser, icon_json, NULL)) goto out_destroy_parser; JsonNode *root = json_parser_get_root(parser); if (json_node_get_node_type(root) != JSON_NODE_OBJECT) goto out_destroy_parser; JsonObject *icons = json_node_get_object(root); if (!icons) goto out_destroy_parser; json_object_foreach_member(icons, build_icon_table_iter, NULL); out_destroy_parser: g_object_unref(parser); out: g_free(icon_json); } static const gchar* get_module_icon(const char *modname, const char *path) { char *modname_temp = g_strdup(modname); char *p; for (p = modname_temp; *p; p++) { if (*p == '_') *p = '-'; } gpointer icon = g_hash_table_lookup(module_icons, modname_temp); g_free(modname_temp); if (icon) return icon_table[GPOINTER_TO_INT(icon)]; if (path == NULL) /* modinfo couldn't find module path */ return NULL; if (kernel_modules_dir == NULL) { struct utsname utsbuf; uname(&utsbuf); kernel_modules_dir = g_strdup_printf("/lib/modules/%s/kernel/", utsbuf.release); } if (!g_str_has_prefix(path, kernel_modules_dir)) return NULL; const gchar *path_no_prefix = path + strlen(kernel_modules_dir); //const size_t path_no_prefix_len = strlen(path_no_prefix); int i; for (i = 0; modules_icons[i].dir; i++) { if (g_str_has_prefix(path_no_prefix, modules_icons[i].dir)) return icon_table[modules_icons[i].icon]; } return NULL; } gint compar (gpointer a, gpointer b) {return strcmp( (char*)a, (char*)b );} void scan_modules_do(void) { FILE *lsmod; gchar buffer[1024]; gchar *lsmod_path; gchar *module_icons; GList *list=NULL,*a; const gchar *icon; if (!_module_hash_table) { _module_hash_table = g_hash_table_new(g_str_hash, g_str_equal); } g_free(module_list); kernel_modules_dir = NULL; module_list = NULL; module_icons = NULL; moreinfo_del_with_prefix("COMP:MOD"); lsmod_path = find_program("lsmod"); if (!lsmod_path) return; lsmod = popen(lsmod_path, "r"); if (!lsmod) { g_free(lsmod_path); return; } char *c=fgets(buffer, 1024, lsmod); /* Discards the first line */ if(!c) return; //Sort modules while (fgets(buffer, 1024, lsmod)) { list=g_list_prepend(list,g_strdup(buffer)); } list=g_list_sort(list,(GCompareFunc)compar); while (list) { gchar *buf, *strmodule, *hashkey; gchar *author = NULL, *description = NULL, *license = NULL, *deps = NULL, *vermagic = NULL, *filename = NULL, *srcversion = NULL, *version = NULL, *retpoline = NULL, *intree = NULL, modname[64]; FILE *modi; glong memory; shell_status_pulse(); sscanf(list->data, "%s %ld", modname, &memory); hashkey = g_strdup_printf("MOD%s", modname); buf = g_strdup_printf("/sbin/modinfo %s 2>/dev/null", modname); modi = popen(buf, "r"); while (fgets(buffer, 1024, modi)) { gchar **tmp = g_strsplit(buffer, ":", 2); GET_STR("author", author); GET_STR("description", description); GET_STR("license", license); GET_STR("depends", deps); GET_STR("vermagic", vermagic); GET_STR("filename", filename); GET_STR("srcversion", srcversion); /* so "version" doesn't catch */ GET_STR("version", version); GET_STR("retpoline", retpoline); GET_STR("intree", intree); g_strfreev(tmp); } pclose(modi); g_free(buf); /* old modutils includes quotes in some strings; strip them */ /*remove_quotes(modname); remove_quotes(description); remove_quotes(vermagic); remove_quotes(author); remove_quotes(license); */ /* old modutils displays when there's no value for a given field; this is not desirable in the module name display, so change it to an empty string */ if (description && g_str_equal(description, "<none>")) { g_free(description); description = g_strdup(""); g_hash_table_insert(_module_hash_table, g_strdup(modname), g_strdup_printf("Kernel module (%s)", modname)); } else { g_hash_table_insert(_module_hash_table, g_strdup(modname), g_strdup(description)); } /* append this module to the list of modules */ module_list = h_strdup_cprintf("$%s$%s=%s\n", module_list, hashkey, modname, description ? description : ""); icon = get_module_icon(modname, filename); module_icons = h_strdup_cprintf("Icon$%s$%s=%s.svg\n", module_icons, hashkey, modname, icon ? icon: "module"); STRIFNULL(filename, _("(Not available)")); STRIFNULL(description, _("(Not available)")); STRIFNULL(vermagic, _("(Not available)")); STRIFNULL(author, _("(Not available)")); STRIFNULL(license, _("(Not available)")); STRIFNULL(version, _("(Not available)")); gboolean ry = FALSE, ity = FALSE; if (retpoline && *retpoline == 'Y') ry = TRUE; if (intree && *intree == 'Y') ity = TRUE; g_free(retpoline); g_free(intree); retpoline = g_strdup(ry ? _("Yes") : _("No")); intree = g_strdup(ity ? _("Yes") : _("No")); /* create the module information string */ strmodule = g_strdup_printf("[%s]\n" "%s=%s\n" "%s=%.2f %s\n" "[%s]\n" "%s=%s\n" "%s=%s\n" "%s=%s\n" "%s=%s\n" "%s=%s\n" "%s=%s\n" "[%s]\n" "%s=%s\n" "%s=%s\n", _("Module Information"), _("Path"), filename, _("Used Memory"), memory / 1024.0, _("KiB"), _("Description"), _("Name"), modname, _("Description"), description, _("Version Magic"), vermagic, _("Version"), version, _("In Linus' Tree"), intree, _("Retpoline Enabled"), retpoline, _("Copyright"), _("Author"), author, _("License"), license); /* if there are dependencies, append them to that string */ if (deps && strlen(deps)) { gchar **tmp = g_strsplit(deps, ",", 0); strmodule = h_strconcat(strmodule, "\n[", _("Dependencies"), "]\n", g_strjoinv("=\n", tmp), "=\n", NULL); g_strfreev(tmp); g_free(deps); } moreinfo_add_with_prefix("COMP", hashkey, strmodule); g_free(hashkey); g_free(license); g_free(description); g_free(author); g_free(vermagic); g_free(filename); g_free(srcversion); g_free(version); g_free(retpoline); g_free(intree); //next and free a=list; list=list->next; free(a->data); g_list_free_1(a); } pclose(lsmod); g_free(lsmod_path); g_free(kernel_modules_dir); if (module_list != NULL && module_icons != NULL) { module_list = h_strdup_cprintf("[$ShellParam$]\n%s", module_list, module_icons); } g_free(module_icons); } hardinfo2-hardinfo2-1331e88/modules/computer/os.c000066400000000000000000000652651474767047500216540ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include #include #include #include "hardinfo.h" #include "computer.h" #include "util_sysobj.h" /* for appfsp() */ //find distro for debian/ubuntu bases typedef struct { const char *name; const char *id; const char *aptname; const char *filename; const char *versiontext; } AptFlavor; static const AptFlavor apt_flavors[] = { { "Ubuntu Desktop", "ubuntu", "ubuntu-desktop", "/etc/os-release", "VERSION_ID=" }, { "Ubuntu Server", "ubuntu", "ubuntu-server", "/etc/os-release", "VERSION_ID=" }, { "Ubuntu MATE", "ubuntu-mate", "ubuntu-mate-desktop", "/etc/os-release", "VERSION_ID=" }, { "Ubuntu Budgie", "ubuntu-budgie", "ubuntu-budgie-desktop", "/etc/os-release", "VERSION_ID=" }, { "Ubuntu Kylin", "ubuntu-kylin", "ubuntukylin-desktop", "/etc/os-release", "VERSION_ID=" }, { "Ubuntu Studio", "ubuntu-studio", "ubuntustudio-desktop", "/etc/os-release", "VERSION_ID=" }, { "Xubuntu", "xubuntu", "xubuntu-desktop", "/etc/os-release", "VERSION_ID=" }, { "Kubuntu", "kubuntu", "kubuntu-desktop", "/etc/os-release", "VERSION_ID=" }, { "Lubuntu", "lubuntu", "lubuntu-desktop", "/etc/os-release", "VERSION_ID=" }, { "Edubuntu", "edubuntu", "edubuntu-desktop", "/etc/os-release", "VERSION_ID=" }, { "Parrot Security","parrot", "parrot-updater", "/etc/os-release", "VERSION_ID=" }, { "Bodhi Linux", "bodhi", "bodhi-appcenter", "/etc/bodhi/info", "RELEASE=" }, { "MX Linux", "mxlinux", "mx-welcome", "/etc/mx-version", "MX-" }, { "Raspbian", "raspbian", "raspbian-archive-keyring", "/etc/os-release", "VERSION_ID=" }, { "Armbian", "armbian", "armbian-config", "/etc/armbian-image-release", "VERSION=" }, { "Raspberry Pi", "raspberry-pi", "rpi-update", "/etc/os-release", "VERSION_ID=" }, { "RevyOS", "revyos", "revyos-keyring", "/etc/revyos-release", "BUILD_ID=" }, { "PureOS", "pureos", "pureos-settings", "/etc/os-release", "VERSION_ID=" }, { "Puppy Linux", "puppy", "/etc/DISTRO_SPECS", "/etc/DISTRO_SPECS", "DISTRO_VERSION=" }, { "Ubuntu GNOME", "ubuntu-gnome", "ubuntu-gnome-desktop", "/etc/os-release", "VERSION_ID=" },//dead { NULL } }; void apt_flavors_scan(gchar **pretty_name, gchar **codename, gchar **id, gchar **orig_id, gchar **orig_name) { gboolean spawned; gchar *out, *err, *p, *next_nl,*st,*version; gchar **split, *contents=NULL, **line; gint exit_status; const AptFlavor *f = NULL; gchar *cmd_line = g_strdup("apt-cache policy"); int i = 0, found=0; while(apt_flavors[i].name){ if(apt_flavors[i].aptname[0]!='/') cmd_line = appfsp(cmd_line, "%s", apt_flavors[i].aptname); if((apt_flavors[i].aptname[0]=='/') && g_file_get_contents(apt_flavors[i].aptname, &contents, NULL, NULL)) {found=1;break;} i++; } if(found){ f = &apt_flavors[i]; g_free(contents); } else { spawned = hardinfo_spawn_command_line_sync(cmd_line, &out, &err, &exit_status, NULL); if (spawned) { p = out; while((next_nl = strchr(p, '\n'))) { strend(p, '\n'); int mc = 0; char pkg[32] = ""; if (*p != ' ' && *p != '\t') mc = sscanf(p, "%31s", pkg); if (mc == 1) { strend(pkg, ':'); int i=0; while(apt_flavors[i].name && !SEQ(apt_flavors[i].aptname, pkg)) i++; if(apt_flavors[i].name) f = &apt_flavors[i]; else f=NULL; } else if(g_strstr_len(p, -1, "Installed:") && !g_strstr_len(p, -1, "(none)") ) { found=1; break; } p = next_nl + 1; } g_free(out); g_free(err); } } if(found){ //find version version=NULL; split=NULL; contents=NULL; if (f && f->filename && (strlen(f->filename)>1) && g_file_get_contents(f->filename, &contents, NULL, NULL)){ split = g_strsplit(contents, "\n", 0); if (split) for (line = split; *line; line++) { if (!f->versiontext || (!strlen(f->versiontext) || !strncmp(*line, f->versiontext, strlen(f->versiontext))) ) { if(strlen(f->versiontext)==0) version=g_strdup(contents); else version = g_strdup(*line + strlen(f->versiontext)); strend(version,' '); strend(version,'_'); //clean up version and allow zero length st=version; version=strreplace(version,"\"",""); g_free(st); st=version; version=strreplace(version,"\n",""); g_free(st); if(strlen(version)<1) {g_free(version); version=NULL;} } } } if(version){ st=*pretty_name; *pretty_name=g_strdup_printf("%s %s - %s", f->name, version, st); g_free(st); } else { st=*pretty_name; *pretty_name=g_strdup_printf("%s - %s", f->name, st); g_free(st); } //g_free(*codename);*codename=NULL; if(contents) g_free(contents); if(split) g_strfreev(split); g_free(*id);*id=g_strdup(f->id); } //use from os-release if not found and not native debian if(!found && *orig_id && !g_str_equal(*orig_id,"debian")){ *id=*orig_id; if(*pretty_name && *orig_name){ st=*pretty_name; *pretty_name=g_strdup_printf("%s - %s", *orig_name, st); g_free(st); } if(*orig_name) g_free(*orig_name); } g_free(cmd_line); } static gchar *get_libc_version(void) { static const struct { const char *test_cmd; const char *match_str; const char *lib_name; gboolean try_ver_str; gboolean use_stderr; } libs[] = { { "ldd --version", "GLIBC", N_("GNU C Library"), TRUE, FALSE}, { "ldd --version", "GNU libc", N_("GNU C Library"), TRUE, FALSE}, { "ldconfig -V", "GLIBC", N_("GNU C Library"), TRUE, FALSE}, { "ldconfig -V", "GNU libc", N_("GNU C Library"), TRUE, FALSE}, { "ldconfig -v", "uClibc", N_("uClibc or uClibc-ng"), FALSE, FALSE}, { "diet", "diet version", N_("diet libc"), TRUE, TRUE}, { NULL } }; int i; for (i = 0; libs[i].test_cmd; i++) { gboolean spawned; gchar *out, *err, *p; spawned = hardinfo_spawn_command_line_sync(libs[i].test_cmd, &out, &err, NULL, NULL); if (!spawned) continue; if (libs[i].use_stderr) { p = strend(idle_free(err), '\n'); g_free(out); } else { p = strend(idle_free(out), '\n'); g_free(err); } if (!p || !strstr(p, libs[i].match_str)) continue; if (libs[i].try_ver_str) { /* skip the first word, likely "ldconfig" or name of utility */ const gchar *ver_str = strchr(p, ' '); if (ver_str) { return g_strdup_printf("%s / %s", _(libs[i].lib_name), ver_str + 1); } } return g_strdup(_(libs[i].lib_name)); } return g_strdup(_("Unknown")); } static gchar *detect_kde_version(void) { const gchar *cmd; const gchar *tmp = g_getenv("KDE_SESSION_VERSION"); gchar *out; gboolean spawned; if (tmp && tmp[0] == '4') { cmd = "kwin --version"; } else { cmd = "kcontrol --version"; } spawned = hardinfo_spawn_command_line_sync(cmd, &out, NULL, NULL, NULL); if (!spawned) return NULL; tmp = strstr(idle_free(out), "KDE: "); return tmp ? g_strdup(tmp + strlen("KDE: ")) : NULL; } static gchar *detect_gnome_version(void) { gchar *tmp; gchar *out; gboolean spawned; spawned = hardinfo_spawn_command_line_sync( "gnome-shell --version", &out, NULL, NULL, NULL); if (spawned) { tmp = strstr(idle_free(out), _("GNOME Shell ")); if (tmp) { tmp += strlen(_("GNOME Shell ")); return g_strdup_printf("GNOME %s", strend(tmp, '\n')); } } spawned = hardinfo_spawn_command_line_sync( "gnome-about --gnome-version", &out, NULL, NULL, NULL); if (spawned) { tmp = strstr(idle_free(out), _("Version: ")); if (tmp) { tmp += strlen(_("Version: ")); return g_strdup_printf("GNOME %s", strend(tmp, '\n')); } } return NULL; } static gchar *detect_mate_version(void) { gchar *tmp; gchar *out; gboolean spawned; spawned = hardinfo_spawn_command_line_sync( "mate-about --version", &out, NULL, NULL, NULL); if (spawned) { tmp = strstr(idle_free(out), _("MATE Desktop Environment ")); if (tmp) { tmp += strlen(_("MATE Desktop Environment ")); return g_strdup_printf("MATE %s", strend(tmp, '\n')); } } return NULL; } static gchar *detect_window_manager(void) { const gchar *curdesktop; const gchar* windowman; GdkScreen *screen = gdk_screen_get_default(); #if GTK_CHECK_VERSION(3,0,0) if (GDK_IS_X11_SCREEN(screen)) { #else if (screen && GDK_IS_SCREEN(screen)) { #endif windowman = gdk_x11_screen_get_window_manager_name(screen); } else return g_strdup("Not X11"); if (g_str_equal(windowman, "Xfwm4")) return g_strdup("XFCE 4"); curdesktop = g_getenv("XDG_CURRENT_DESKTOP"); if (curdesktop) { const gchar *desksession = g_getenv("DESKTOP_SESSION"); if (desksession && !g_str_equal(curdesktop, desksession)) return g_strdup(desksession); } return g_strdup_printf(_("Unknown (Window Manager: %s)"), windowman); } static gchar * desktop_with_session_type(const gchar *desktop_env) { const char *tmp; tmp = g_getenv("XDG_SESSION_TYPE"); if (tmp) { if (!g_str_equal(tmp, "unspecified")) return g_strdup_printf(_(/*!/{desktop environment} on {session type}*/ "%s on %s"), desktop_env, tmp); } return g_strdup(desktop_env); } static gchar *detect_xdg_environment(const gchar *env_var) { const gchar *tmp; tmp = g_getenv(env_var); if (!tmp) return NULL; if (g_str_equal(tmp, "GNOME") || g_str_equal(tmp, "gnome")) { gchar *maybe_gnome = detect_gnome_version(); if (maybe_gnome) return maybe_gnome; } if (g_str_equal(tmp, "KDE") || g_str_equal(tmp, "kde")) { gchar *maybe_kde = detect_kde_version(); if (maybe_kde) return maybe_kde; } if (g_str_equal(tmp, "MATE") || g_str_equal(tmp, "mate")) { gchar *maybe_mate = detect_mate_version(); if (maybe_mate) return maybe_mate; } return g_strdup(tmp); } static gchar *detect_desktop_environment(void) { const gchar *tmp; gchar *windowman; windowman = detect_xdg_environment("XDG_CURRENT_DESKTOP"); if (windowman) return windowman; windowman = detect_xdg_environment("XDG_SESSION_DESKTOP"); if (windowman) return windowman; tmp = g_getenv("KDE_FULL_SESSION"); if (tmp) { gchar *maybe_kde = detect_kde_version(); if (maybe_kde) return maybe_kde; } tmp = g_getenv("GNOME_DESKTOP_SESSION_ID"); if (tmp) { gchar *maybe_gnome = detect_gnome_version(); if (maybe_gnome) return maybe_gnome; } windowman = detect_window_manager(); if (windowman) return windowman; if (!g_getenv("DISPLAY")) return g_strdup(_("Terminal")); return g_strdup(_("Unknown")); } gchar *computer_get_dmesg_status(void) { gchar *out = NULL, *err = NULL; int ex = 1, result = 0; hardinfo_spawn_command_line_sync("dmesg", &out, &err, &ex, NULL); g_free(out); g_free(err); result += (getuid() == 0) ? 2 : 0; result += ex ? 1 : 0; switch(result) { case 0: /* readable, user */ return g_strdup(_("User access allowed")); case 1: /* unreadable, user */ return g_strdup(_("User access forbidden")); case 2: /* readable, root */ return g_strdup(_("Access allowed (running as superuser)")); case 3: /* unreadable, root */ return g_strdup(_("Access forbidden? (running as superuser)")); } return g_strdup(_("(Unknown)")); } gchar *computer_get_aslr(void) { switch (h_sysfs_read_int("/proc/sys/kernel", "randomize_va_space")) { case 0: return g_strdup(_("Disabled")); case 1: return g_strdup(_("Partially enabled (mmap base+stack+VDSO base)")); case 2: return g_strdup(_("Fully enabled (mmap base+stack+VDSO base+heap)")); default: return g_strdup(_("Unknown")); } } gchar *computer_get_entropy_avail(void) { gchar tab_entropy_fstr[][32] = { N_(/*!/bits of entropy for rng (0)*/ "(None or not available)"), N_(/*!/bits of entropy for rng (low/poor value)*/ "%d bits (low)"), N_(/*!/bits of entropy for rng (medium value)*/ "%d bits (medium)"), N_(/*!/bits of entropy for rng (high/good value)*/ "%d bits (healthy)") }; gint bits = h_sysfs_read_int("/proc/sys/kernel/random", "entropy_avail"); if (bits > 3000) return g_strdup_printf(_(tab_entropy_fstr[3]), bits); if (bits > 200) return g_strdup_printf(_(tab_entropy_fstr[2]), bits); if (bits > 1) return g_strdup_printf(_(tab_entropy_fstr[1]), bits); return g_strdup_printf(_(tab_entropy_fstr[0]), bits); } gchar *computer_get_language(void) { gchar *tab_lang_env[] = { "LANGUAGE", "LANG", "LC_ALL", "LC_MESSAGES", NULL }; gchar *lc = NULL, *env = NULL, *ret = NULL; gint i = 0; lc = setlocale(LC_ALL, NULL); while (tab_lang_env[i] != NULL) { env = g_strdup( g_getenv(tab_lang_env[i]) ); if (env != NULL) break; i++; } if (env != NULL) if (lc != NULL) ret = g_strdup_printf("%s (%s)", lc, env); else ret = g_strdup_printf("%s", env); else if (lc != NULL) ret = g_strdup_printf("%s", lc); if (ret == NULL) ret = g_strdup( _("(Unknown)") ); return ret; } static Distro parse_os_release(void) { gchar *pretty_name = NULL; gchar *id = NULL; gchar *version = NULL; gchar *codename = NULL; gchar **split, *contents, **line; gchar *orig_id=NULL, *orig_name=NULL; //some overrides the /etc/os-release, so we use usr/lib first and fixes distro via Apt, OLD DISTRO fallback to /etc/os. if (!g_file_get_contents("/usr/lib/os-release", &contents, NULL, NULL)) if (!g_file_get_contents("/etc/os-release", &contents, NULL, NULL)) return (Distro) {}; split = g_strsplit(contents, "\n", 0); g_free(contents); if (!split) return (Distro) {}; for (line = split; *line; line++) { if (!strncmp(*line, "ID=", sizeof("ID=") - 1) && (id == NULL)) { id = g_strdup(*line + strlen("ID=")); } else if (!strncmp(*line, "VERSION_ID=", sizeof("VERSION_ID=") - 1) && (version == NULL)) { version = g_strdup(*line + strlen("VERSION_ID=")); } else if (!strncmp(*line, "CODENAME=", sizeof("CODENAME=") - 1) && (codename == NULL)) { codename = g_strdup(*line + strlen("CODENAME=")); } else if (!strncmp(*line, "VERSION_CODENAME=", sizeof("VERSION_CODENAME=") - 1) && (codename == NULL)) { codename = g_strdup(*line + strlen("VERSION_CODENAME=")); } else if (!strncmp(*line, "PRETTY_NAME=", sizeof("PRETTY_NAME=") - 1) && (pretty_name == NULL)) { pretty_name = g_strdup(*line + strlen("PRETTY_NAME=")); } } g_strfreev(split); //remove ",/n,allow empty if(pretty_name){ contents=pretty_name; pretty_name=strreplace(pretty_name,"\"",""); g_free(contents); // contents=pretty_name; pretty_name=strreplace(pretty_name,"\n",""); g_free(contents); if(strlen(pretty_name)<1) {g_free(pretty_name);pretty_name=NULL;} } if(codename){ contents=codename; codename=strreplace(codename,"\"",""); g_free(contents); // contents=codename; codename=strreplace(codename,"\n",""); g_free(contents); if(strlen(codename)<1) {g_free(codename);codename=NULL;} } if(id){ contents=id; id=strreplace(id,"\"",""); g_free(contents); // contents=id; id=strreplace(id,"\n",""); g_free(contents); // contents=id; id=strreplace(id," ",""); g_free(contents); if(strlen(id)<1) {g_free(id);id=NULL;} } if(version){ contents=version; version=strreplace(version,"\"",""); g_free(contents); // contents=version; version=strreplace(version,"\n",""); g_free(contents); if(strlen(version)<1) {g_free(version);version=NULL;} } //remove codename from pretty name if(pretty_name && codename){ gchar *t; //upper first letter t=g_strdup_printf(" (%s)",codename); t[2]=toupper(t[2]); contents=pretty_name; pretty_name=strreplace(contents,t,""); g_free(t);g_free(contents); //normal t=g_strdup_printf(" (%s)",codename); contents=pretty_name; pretty_name=strreplace(contents,t,""); g_free(t);g_free(contents); //without brackets upper first letter t=g_strdup_printf(" %s",codename); t[1]=toupper(t[1]); contents=pretty_name; pretty_name=strreplace(contents,t,""); g_free(t);g_free(contents); //without brackets normal t=g_strdup_printf(" %s",codename); contents=pretty_name; pretty_name=strreplace(contents,t,""); g_free(t);g_free(contents); g_strstrip(pretty_name); } //Based on Alpine Linux add to distro string if(pretty_name && !g_str_equal(id, "alpine") && g_file_get_contents("/etc/alpine-release", &contents , NULL, NULL) ) { gchar *t,*p=contents; while(*p && ((*p>'9') || (*p<'0'))) p++; if(p) strend(p,' '); else p=""; t=pretty_name; pretty_name=g_strdup_printf("%s - Alpine %s", t,p); g_free(t); g_free(contents); } else //Based on Fedora Linux add to distro string if(pretty_name && !g_str_equal(id, "fedora") && g_file_get_contents("/etc/fedora-release", &contents , NULL, NULL) ) { gchar *t,*p=contents; while(*p && ((*p>'9') || (*p<'0'))) p++; if(p) strend(p,' '); else p=""; t=pretty_name; pretty_name=g_strdup_printf("%s - Fedora %s", t,p); g_free(t); g_free(contents); } else //Based on RedHat Linux add to distro string if(pretty_name && !g_str_equal(id, "rhel") && !g_str_equal(id, "fedora") && g_file_get_contents("/etc/redhat-release", &contents , NULL, NULL) ) { gchar *t,*p=contents; while(*p && ((*p>'9') || (*p<'0'))) p++; if(p) strend(p,' '); else p=""; //FIXME: Add table RHEL->Fedora //RHEL4=>FC3 //RHEL5=>FC6 //RHEL6=>FC12+ //RHEL7=>FC19+ //RHEL8=>FC28 //RHEL9=>FC34 //RHEL10=>FC40 if(g_str_equal(id,"openmandriva")) {/*Mandriva is not based on redhat/fedora anymore - was based on RH5.1*/} else if(atoi(p)>=19){//hmm, distro should have had fedora-release t=pretty_name; pretty_name=g_strdup_printf("%s - Fedora %s", t,p); g_free(t); } else { t=pretty_name; pretty_name=g_strdup_printf("%s - RHEL %s", t,p); g_free(t); } g_free(contents); } //Based on Arch Linux add to distro string if(pretty_name && !g_str_equal(id, "arch") && g_file_get_contents("/etc/arch-release", &contents , NULL, NULL) ) { gchar *t; t=pretty_name; pretty_name=g_strdup_printf("%s - Arch Linux", t); g_free(t); g_free(contents); } //Based on Slackware add to distro string if(pretty_name && !g_str_equal(id, "slackware") && g_file_get_contents("/etc/slackware-version", &contents , NULL, NULL) ) { gchar *t; t=pretty_name; pretty_name=g_strdup_printf("%s - Slackware", t); g_free(t); g_free(contents); } //Based on debian add to distro string if(pretty_name && id && (g_file_get_contents("/etc/debian_version", &contents , NULL, NULL) || g_str_equal(id,"debian")) ) { orig_id=id; id=g_strdup("debian"); orig_name=pretty_name; //debian version check if (!contents || isdigit(contents[0]) || contents[0] != 'D') { if(contents) pretty_name=g_strdup_printf("Debian GNU/Linux %s", contents); else pretty_name=g_strdup_printf("Debian GNU/Linux"); } else { pretty_name=g_strdup(contents); } g_free(contents); } //use APT to find distro if (pretty_name && (g_str_equal(id, "debian") ||g_str_equal(id, "ubuntu")) ) { apt_flavors_scan(&pretty_name,&codename,&id,&orig_id,&orig_name); } if (pretty_name){ g_strstrip(pretty_name); return (Distro) { .distro = pretty_name, .codename = codename, .id = id }; } g_free(pretty_name); g_free(id); g_free(version); g_free(codename); return (Distro) {}; } static Distro detect_distro(void) { static const struct { const gchar *file; const gchar *id; const gchar *override; const gchar *versiontext; } distro_db[] = { #define DB_PREFIX "/etc/" //This table is fallback to check files instead of os-release file and apt (OLD DISTROS) { DB_PREFIX "arch-release", "arch", "Arch Linux" , NULL }, { DB_PREFIX "fatdog-version", "fatdog", NULL, "" }, { DB_PREFIX "debian_version", "debian", "Debian GNU/Linux", "" }, { DB_PREFIX "slackware-version", "slk" }, { DB_PREFIX "mandrake-release", "mdk" }, { DB_PREFIX "mandriva-release", "mdv" }, { DB_PREFIX "fedora-release", "fedora" }, { DB_PREFIX "coas", "coas" }, { DB_PREFIX "environment.corel", "corel" }, { DB_PREFIX "gentoo-release", "gnt" }, { DB_PREFIX "conectiva-release", "cnc" }, { DB_PREFIX "versão-conectiva", "cnc" }, { DB_PREFIX "turbolinux-release", "tl" }, { DB_PREFIX "yellowdog-release", "yd" }, { DB_PREFIX "sabayon-release", "sbn" }, { DB_PREFIX "enlisy-release", "enlsy" }, { DB_PREFIX "SuSE-release", "suse" }, { DB_PREFIX "sun-release", "sun" }, { DB_PREFIX "zenwalk-version", "zen" }, { DB_PREFIX "DISTRO_SPECS", "puppy", "Puppy Linux", "DISTRO_VERSION=" }, { DB_PREFIX "distro-release", "fl" }, { DB_PREFIX "vine-release", "vine" }, { DB_PREFIX "PartedMagic-version", "pmag" }, { DB_PREFIX "NIXOS", "nixos", "NixOS Linux", NULL }, { DB_PREFIX "redhat-release", "redhat" }, #undef DB_PREFIX { NULL, NULL } }; Distro distro; gchar *contents,*t; int i; gchar *version=NULL, **split, **line, *st; distro = parse_os_release(); if (distro.distro) return distro; //if not found via os-release then find distro via files for (i = 0; distro_db[i].file; i++) { if (!g_file_get_contents(distro_db[i].file, &contents, NULL, NULL)) continue; distro.distro=g_strdup(contents); distro.id = g_strdup(distro_db[i].id); //override distro name if (distro_db[i].override) { g_free(distro.distro); distro.distro = g_strdup(distro_db[i].override); } //Add version if (distro.distro && distro_db[i].versiontext) { //find version split = g_strsplit(contents, "\n", 0); if (split) for (line = split; *line; line++) { if (!distro_db[i].versiontext || (!strlen(distro_db[i].versiontext) || !strncmp(*line, distro_db[i].versiontext, strlen(distro_db[i].versiontext)))) { if(strlen(distro_db[i].versiontext)==0) version=g_strdup(contents); else version = g_strdup(*line + strlen(distro_db[i].versiontext)); strend(version,' '); strend(version,'_'); //clean up version and allow zero length st=version; version=strreplace(version,"\"",""); g_free(st); st=version; version=strreplace(version,"\n",""); g_free(st); if(strlen(version)<1) {g_free(version);version=NULL;} } } //add version if(version){ t=distro.distro; distro.distro = g_strdup_printf("%s %s", t, contents), g_free(t); } } g_free(contents); return distro; } return (Distro) { .distro = g_strdup(_("Unknown")) }; } OperatingSystem * computer_get_os(void) { struct utsname utsbuf; OperatingSystem *os; os = g_new0(OperatingSystem, 1); Distro distro = detect_distro(); os->distro = g_strstrip(distro.distro); os->distroid = distro.id; os->distrocode = distro.codename; /* Kernel and hostname info */ uname(&utsbuf); os->kernel_version = g_strdup(utsbuf.version); os->kernel = g_strdup_printf("%s %s (%s)", utsbuf.sysname, utsbuf.release, utsbuf.machine); os->kcmdline = h_sysfs_read_string("/proc", "cmdline"); os->hostname = g_strdup(utsbuf.nodename); os->language = computer_get_language(); os->homedir = g_strdup(g_get_home_dir()); os->username = g_strdup_printf("%s (%s)", g_get_user_name(), g_get_real_name()); os->libc = get_libc_version(); scan_languages(os); os->desktop = detect_desktop_environment(); if (os->desktop) os->desktop = desktop_with_session_type(idle_free(os->desktop)); os->entropy_avail = computer_get_entropy_avail(); return os; } const gchar * computer_get_selinux(void) { int r; gboolean spawned = hardinfo_spawn_command_line_sync("selinuxenabled", NULL, NULL, &r, NULL); if (!spawned) return _("Not installed"); if (r == 0) return _("Enabled"); return _("Disabled"); } gchar * computer_get_lsm(void) { gchar *contents; if (!g_file_get_contents("/sys/kernel/security/lsm", &contents, NULL, NULL)) return g_strdup(_("Unknown")); return contents; } hardinfo2-hardinfo2-1331e88/modules/computer/uptime.c000066400000000000000000000042731474767047500225260ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "hardinfo.h" #include "computer.h" UptimeInfo * computer_get_uptime(void) { UptimeInfo *ui = g_new0(UptimeInfo, 1); FILE *procuptime; gulong minutes; if ((procuptime = fopen("/proc/uptime", "r")) != NULL) { int c=fscanf(procuptime, "%lu", &minutes); if(c==1) ui->minutes = minutes / 60; fclose(procuptime); } else { g_free(ui); return NULL; } ui->hours = ui->minutes / 60; ui->minutes %= 60; ui->days = ui->hours / 24; ui->hours %= 24; return ui; } gchar * computer_get_formatted_uptime() { UptimeInfo *ui; const gchar *days_fmt, *hours_fmt, *minutes_fmt; gchar *full_fmt = NULL, *ret = NULL; ui = computer_get_uptime(); days_fmt = ngettext("%d day", "%d days", ui->days); hours_fmt = ngettext("%d hour", "%d hours", ui->hours); minutes_fmt = ngettext("%d minute", "%d minutes", ui->minutes); if (ui->days < 1) { if (ui->hours < 1) { ret = g_strdup_printf(minutes_fmt, ui->minutes); } else { full_fmt = g_strdup_printf("%s %s", hours_fmt, minutes_fmt); ret = g_strdup_printf(full_fmt, ui->hours, ui->minutes); } } else { full_fmt = g_strdup_printf("%s %s %s", days_fmt, hours_fmt, minutes_fmt); ret = g_strdup_printf(full_fmt, ui->days, ui->hours, ui->minutes); } g_free(full_fmt); g_free(ui); return ret; } hardinfo2-hardinfo2-1331e88/modules/computer/users.c000066400000000000000000000046361474767047500223670ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2009 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "hardinfo.h" #include "computer.h" gint comparUsers (gpointer a, gpointer b) {return strcmp( (char*)a, (char*)b );} gchar *users = NULL; void scan_users_do(void) { struct passwd *passwd_; GList *list=NULL, *a; passwd_ = getpwent(); if (!passwd_) return; if (users) { g_free(users); moreinfo_del_with_prefix("COMP:USER"); } users = g_strdup(""); while (passwd_) { gchar *key = g_strdup_printf("USER%s", passwd_->pw_name); gchar *val = g_strdup_printf("[%s]\n" "%s=%d\n" "%s=%d\n" "%s=%s\n" "%s=%s\n", _("User Information"), _("User ID"), (gint) passwd_->pw_uid, _("Group ID"), (gint) passwd_->pw_gid, _("Home Directory"), passwd_->pw_dir, _("Default Shell"), passwd_->pw_shell); strend(passwd_->pw_gecos, ','); list = g_list_prepend(list, g_strdup_printf("%s,%s,%s,%s", key, passwd_->pw_name, passwd_->pw_gecos, val)); passwd_ = getpwent(); g_free(key); } endpwent(); //sort list=g_list_sort(list,(GCompareFunc)comparUsers); while (list) { char **datas = g_strsplit(list->data,",",4); if (!datas[0]) { g_strfreev(datas); break; } moreinfo_add_with_prefix("COMP", datas[0], datas[3]); users = h_strdup_cprintf("$%s$%s=%s\n", users, datas[0], datas[1], datas[2]); //next and free a=list; list=list->next; free(a->data); g_list_free_1(a); } } hardinfo2-hardinfo2-1331e88/modules/devices.c000066400000000000000000000750041474767047500210070ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef __USE_XOPEN #define __USE_XOPEN #endif /* __USE_XOPEN */ #include #include #include #include #include #include #include #include #include #include "devices.h" #include "dt_util.h" #include "udisks2_util.h" #include "storage_util.h" #include "pci_util.h" #include #include "cpu_util.h" gchar *callback_processors(); gchar *callback_gpu(); gchar *callback_monitors(); gchar *callback_battery(); gchar *callback_pci(); gchar *callback_sensors(); gchar *callback_printers(); gchar *callback_storage(); gchar *callback_input(); gchar *callback_usb(); gchar *callback_dmi(); gchar *callback_dmi_mem(); gchar *callback_firmware(); gchar *callback_dtree(); gchar *callback_device_resources(); void scan_processors(gboolean reload); void scan_gpu(gboolean reload); void scan_monitors(gboolean reload); void scan_battery(gboolean reload); void scan_pci(gboolean reload); void scan_sensors(gboolean reload); void scan_printers(gboolean reload); void scan_storage(gboolean reload); void scan_input(gboolean reload); void scan_usb(gboolean reload); void scan_dmi(gboolean reload); void scan_dmi_mem(gboolean reload); void scan_firmware(gboolean reload); void scan_dtree(gboolean reload); void scan_device_resources(gboolean reload); gboolean root_required_for_resources(void); gboolean spd_decode_show_hinote(const char**); gchar *hi_more_info(gchar *entry); enum { ENTRY_DTREE, ENTRY_DMI, ENTRY_PROCESSOR, ENTRY_GPU, ENTRY_MONITORS, ENTRY_DMI_MEM, ENTRY_PCI, ENTRY_USB, ENTRY_FW, ENTRY_PRINTERS, ENTRY_BATTERY, ENTRY_SENSORS, ENTRY_INPUT, ENTRY_STORAGE, ENTRY_RESOURCES }; static ModuleEntry entries[] = { [ENTRY_PROCESSOR] = {N_("Processor"), "processor.svg", callback_processors, scan_processors, MODULE_FLAG_NONE}, [ENTRY_GPU] = {N_("Graphics Processors"), "gpu.svg", callback_gpu, scan_gpu, MODULE_FLAG_NONE}, [ENTRY_MONITORS] = {N_("Monitors"), "monitor.svg", callback_monitors, scan_monitors, MODULE_FLAG_NONE}, [ENTRY_PCI] = {N_("PCI Devices"), "pci.svg", callback_pci, scan_pci, MODULE_FLAG_NONE}, [ENTRY_USB] = {N_("USB Devices"), "usb.svg", callback_usb, scan_usb, MODULE_FLAG_NONE}, [ENTRY_FW] = {N_("Firmware"), "firmware.svg", callback_firmware, scan_firmware, MODULE_FLAG_NONE}, [ENTRY_PRINTERS] = {N_("Printers"), "printer.svg", callback_printers, scan_printers, MODULE_FLAG_NONE}, [ENTRY_BATTERY] = {N_("Battery"), "battery.svg", callback_battery, scan_battery, MODULE_FLAG_NONE}, [ENTRY_SENSORS] = {N_("Sensors"), "therm.svg", callback_sensors, scan_sensors, MODULE_FLAG_NONE}, [ENTRY_INPUT] = {N_("Input Devices"), "inputdevices.svg", callback_input, scan_input, MODULE_FLAG_NONE}, [ENTRY_STORAGE] = {N_("Storage"), "hdd.svg", callback_storage, scan_storage, MODULE_FLAG_NONE}, [ENTRY_DMI] = {N_("System DMI"), "dmi.svg", callback_dmi, scan_dmi, MODULE_FLAG_NONE}, [ENTRY_DMI_MEM] = {N_("Memory Devices"), "memory.svg", callback_dmi_mem, scan_dmi_mem, MODULE_FLAG_NONE}, #if defined(ARCH_x86) || defined(ARCH_x86_64) [ENTRY_DTREE] = {N_("Device Tree"), "devicetree.svg", callback_dtree, scan_dtree, MODULE_FLAG_HIDE}, #else [ENTRY_DTREE] = {N_("Device Tree"), "devicetree.svg", callback_dtree, scan_dtree, MODULE_FLAG_NONE}, #endif /* x86 or x86_64 */ [ENTRY_RESOURCES] = {N_("Resources"), "resources.svg", callback_device_resources, scan_device_resources, MODULE_FLAG_NONE}, { NULL } }; static GSList *processors = NULL; gchar *printer_list = NULL; gchar *printer_icons = NULL; gchar *pci_list = NULL; gchar *input_list = NULL; gboolean storage_no_nvme = FALSE; gchar *storage_list = NULL; gchar *battery_list = NULL; gchar *powerstate=NULL; gchar *gpuname=NULL; /* in dmi_memory.c */ gchar *memory_devices_get_info(); gchar *memory_devices_get_system_memory_types_str(); gchar *memory_devices_get_system_memory_str(); gboolean memory_devices_hinote(const char **msg); gchar *memory_devices_info = NULL; gchar *memory_devices_desc = NULL; /* in firmware.c */ gchar *firmware_get_info(); gboolean firmware_hinote(const char **msg); gchar *firmware_info = NULL; /* in monitors.c */ gchar *monitors_get_info(); gboolean monitors_hinote(const char **msg); gchar *monitors_info = NULL; #include extern gchar *gpu_summary; const gchar *get_gpu_summary() { if (gpu_summary == NULL) scan_gpu(FALSE); return gpu_summary; } static gint proc_cmp_model_name(Processor *a, Processor *b) { return g_strcmp0(a->model_name, b->model_name); } static gint proc_cmp_max_freq(Processor *a, Processor *b) { if (a->cpu_mhz == b->cpu_mhz) return 0; if (a->cpu_mhz > b->cpu_mhz) return -1; return 1; } gchar *processor_describe_default(GSList * processors) { int packs, cores, threads, nodes; const gchar *packs_fmt, *cores_fmt, *threads_fmt, *nodes_fmt; gchar *ret, *full_fmt; cpu_procs_cores_threads_nodes(&packs, &cores, &threads, &nodes); if (cores > 0) { packs_fmt = ngettext("%d physical processor", "%d physical processors", packs); cores_fmt = ngettext("%d core", "%d cores", cores); threads_fmt = ngettext("%d thread", "%d threads", threads); if (nodes > 1) { nodes_fmt = ngettext("%d NUMA node", "%d NUMA nodes", nodes); full_fmt = g_strdup_printf("%s; %s across %s; %s", packs_fmt, cores_fmt, nodes_fmt, threads_fmt); ret = g_strdup_printf(full_fmt, packs, cores, nodes, threads); } else { full_fmt = g_strdup_printf("%s; %s; %s", packs_fmt, cores_fmt, threads_fmt); ret = g_strdup_printf(full_fmt, packs, cores, threads); } g_free(full_fmt); return ret; } else { //fallback to old method return processor_describe_by_counting_names(processors); } } gchar *processor_name_default(GSList * processors) { gchar *ret = g_strdup(""); GSList *tmp, *l; Processor *p; gchar *cur_str = NULL; gint cur_count = 0; tmp = g_slist_copy(processors); tmp = g_slist_sort(tmp, (GCompareFunc)proc_cmp_model_name); for (l = tmp; l; l = l->next) { p = (Processor*)l->data; if (cur_str == NULL) { cur_str = p->model_name; cur_count = 1; } else { if(g_strcmp0(cur_str, p->model_name)) { ret = h_strdup_cprintf("%s%s", ret, strlen(ret) ? "; " : "", cur_str); cur_str = p->model_name; cur_count = 1; } else { cur_count++; } } } ret = h_strdup_cprintf("%s%s", ret, strlen(ret) ? "; " : "", cur_str); g_slist_free(tmp); return ret; } /* TODO: prefix counts are threads when they should be cores. */ gchar *processor_describe_by_counting_names(GSList * processors) { gchar *ret = g_strdup(""); GSList *tmp, *l; Processor *p; gchar *cur_str = NULL; gint cur_count = 0; tmp = g_slist_copy(processors); tmp = g_slist_sort(tmp, (GCompareFunc)proc_cmp_model_name); for (l = tmp; l; l = l->next) { p = (Processor*)l->data; if (cur_str == NULL) { cur_str = p->model_name; cur_count = 1; } else { if(g_strcmp0(cur_str, p->model_name)) { ret = h_strdup_cprintf("%s%dx %s", ret, strlen(ret) ? " + " : "", cur_count, cur_str); cur_str = p->model_name; cur_count = 1; } else { cur_count++; } } } ret = h_strdup_cprintf("%s%dx %s", ret, strlen(ret) ? " + " : "", cur_count, cur_str); g_slist_free(tmp); return ret; } gchar *get_processor_name(void) { scan_processors(FALSE); return processor_name(processors); } gchar *get_processor_desc(void) { scan_processors(FALSE); return processor_describe(processors); } gchar *get_processor_name_and_desc(void) { scan_processors(FALSE); gchar* name = processor_name(processors); gchar* desc = processor_describe(processors); gchar* nd = g_strdup_printf("%s\n%s", name, desc); g_free(name); g_free(desc); return nd; } gchar *get_storage_devices_simple(void) { scan_storage(FALSE); struct Info *info = info_unflatten(storage_list); if (!info) { return ""; } guint i, fi; struct InfoGroup *group; struct InfoField *field; gchar *storage_devs = NULL, *tmp; GRegex *regex; regex = g_regex_new ("<.*?>", 0, 0, NULL); for (i = 0; i < info->groups->len; i++) { group = &g_array_index(info->groups, struct InfoGroup, info->groups->len - 1); if (!group) continue; info_group_strip_extra(group); for (fi = 0; fi < group->fields->len; fi++) { field = &g_array_index(group->fields, struct InfoField, fi); if (!field->value) continue; tmp = g_regex_replace(regex, field->value, -1, 0, "", 0, NULL); // remove html tags tmp=strreplace(tmp," "," "); storage_devs = h_strdup_cprintf("%s\n", storage_devs, g_strstrip(tmp)); g_free(tmp); } } g_regex_unref(regex); g_free(info); return storage_devs; } gchar *get_storage_home_models(void) { scan_storage(FALSE); if (!storage_list) return ""; gchar *p,*np,*tmp; GRegex *regex; gchar *homepath=NULL,*out=NULL,*err=NULL; gboolean spawned; const char cmd_line[] = "sh -c 'cd ~;df --output=source . |tail -1'"; const char cmd_line1disk[] = "sh -c 'lsblk -l |grep disk|grep -v zram'"; char cmd_lineblk[100]; //lookup home disk by df - only works on newer machines spawned = g_spawn_command_line_sync(cmd_line, &out, &err, NULL, NULL); if(spawned && out){ if(strstr(out,"/dev/") && !strstr(out,"mapper") && !strstr(out,"/dev/root") ) homepath=strdup(out+5); if(strstr(out,"mapper")) { p=strstr(out,"\n"); *p=0; sprintf(cmd_lineblk,"sh -c 'lsblk -l -s %s|tail -1'",out); g_free(out); g_free(err); spawned = g_spawn_command_line_sync(cmd_lineblk, &out, &err, NULL, NULL); if(spawned && out){ p=strstr(out," ")+1;//note: field 4 is size *p=0; homepath=g_strdup(out); } } } g_free(out); g_free(err); if(!homepath) { //simple systems - only 1 disk spawned = g_spawn_command_line_sync(cmd_line1disk, &out, &err, NULL, NULL); if(spawned && out){ if(strstr(out,"disk") && (strstr(out,"\n")==(out+strlen(out)-1)) ) { p=strstr(out," ")+1;//note: field 4 is size *p=0; homepath=strdup(out); } } g_free(out); g_free(err); } if(!homepath) return g_strdup("NoHomePath"); homepath[strlen(homepath)-1]=0; while(homepath[strlen(homepath)-1]>='0' && homepath[strlen(homepath)-1]<='9') homepath[strlen(homepath)-1]=0; if( !strstr(homepath,"sdp") && !strstr(homepath,"vdp") && (homepath[strlen(homepath)-1]=='p') ) homepath[strlen(homepath)-1]=0; //printf("Homepath=%s (%u)\n",homepath,(unsigned int)strlen(homepath)); regex = g_regex_new ("<.*?>", 0, 0, NULL); p=storage_list; while ( (np=strstr(p,"\n")) ){ *np=0; //printf("name=%s\n",p); if(strstr(p,homepath)) { tmp = g_regex_replace(regex, strstr(p,"=")+1, -1, 0, "", 0, NULL); // remove html tags tmp = g_strstrip(strreplace(tmp," "," ")); tmp = g_strstrip(strreplace(tmp,"| ","|")); p=strstr(tmp,"|"); *p=0; p++; g_regex_unref(regex); g_free(homepath); //printf("Homepathmodel=%s\n",g_strdup_printf("%s (%s)",p,tmp)); //return g_strdup_printf("%s (%s)",p,tmp); //printf("Homepathmodel=%s\n",p); return g_strdup(p); } p=np+1; } g_regex_unref(regex); g_free(homepath); return g_strdup("HomePathNotFound"); } gchar *get_storage_devices_models(void) { scan_storage(FALSE); struct Info *info = info_unflatten(storage_list); if (!info) { return ""; } guint i, fi; struct InfoGroup *group; struct InfoField *field; gchar *storage_devs = NULL, *tmp;//,*t,*s; GList *hdlist=NULL; GRegex *regex; regex = g_regex_new ("<.*?>", 0, 0, NULL); for (i = 0; i < info->groups->len; i++) { group = &g_array_index(info->groups, struct InfoGroup, info->groups->len - 1); if (!group) continue; info_group_strip_extra(group); for (fi = 0; fi < group->fields->len; fi++) { field = &g_array_index(group->fields, struct InfoField, fi); if (!field->value) continue; tmp = g_regex_replace(regex, field->value, -1, 0, "", 0, NULL); // remove html tags tmp=g_strstrip(strreplace(tmp," "," ")); if(!g_list_find_custom(hdlist, tmp, (GCompareFunc)g_strcmp0) && !strstr(tmp,"CDROM") && !strstr(tmp,"DVD") && !strstr(tmp," CD")) { storage_devs = h_strdup_cprintf("%s,", storage_devs, tmp); } hdlist=g_list_append(hdlist, tmp); } } g_regex_unref(regex); g_free(info); g_list_free_full(hdlist,g_free); if(storage_devs) storage_devs[strlen(storage_devs)-1]=0; return storage_devs; } gchar *get_storage_devices(void) { scan_storage(FALSE); return storage_list; } gchar *get_printers(void) { scan_printers(FALSE); return printer_list; } gchar *get_input_devices(void) { scan_input(FALSE); return input_list; } gchar *get_processor_count(void) { scan_processors(FALSE); return g_strdup_printf("%d", g_slist_length(processors)); } gchar *get_power_state(void) { scan_battery(FALSE); if(!powerstate) return g_strdup("AC"); return g_strdup(powerstate); } gchar *get_gpuname(void) { scan_gpu(FALSE); if(!gpuname) return g_strdup("Error"); if(strlen(gpuname)>4 && gpuname[3]=='=') { gchar *t=strreplace(g_strdup(gpuname+4),"\n",""); return t; } return g_strdup(gpuname); } gchar *get_mem_desc(void) { scan_dmi_mem(FALSE); return g_strdup(memory_devices_desc); } /* TODO: maybe move into processor.c along with processor_name() etc. * Could mention the big.LITTLE cluster arangement for ARM that kind of thing. * TODO: prefix counts are threads when they should be cores. */ gchar *processor_frequency_desc(GSList * processors) { gchar *ret = g_strdup(""); GSList *tmp, *l; Processor *p; float cur_val = -1; gint cur_count = 0; tmp = g_slist_copy(processors); tmp = g_slist_sort(tmp, (GCompareFunc)proc_cmp_max_freq); for (l = tmp; l; l = l->next) { p = (Processor*)l->data; if (cur_val == -1) { cur_val = p->cpu_mhz; cur_count = 1; } else { if(cur_val != p->cpu_mhz) { ret = h_strdup_cprintf("%s%dx %.2f %s", ret, strlen(ret) ? " + " : "", cur_count, cur_val, _("MHz") ); cur_val = p->cpu_mhz; cur_count = 1; } else { cur_count++; } } } ret = h_strdup_cprintf("%s%dx %.2f %s", ret, strlen(ret) ? " + " : "", cur_count, cur_val, _("MHz")); g_slist_free(tmp); return ret; } gchar *get_processor_frequency_desc(void) { scan_processors(FALSE); return processor_frequency_desc(processors); } gchar *get_processor_max_frequency(void) { GSList *l; Processor *p; float max_freq = 0; scan_processors(FALSE); for (l = processors; l; l = l->next) { p = (Processor*)l->data; if (p->cpu_mhz > max_freq) max_freq = p->cpu_mhz; } if (max_freq == 0.0f) { return g_strdup(N_("Unknown")); } else { return g_strdup_printf("%.2f %s", max_freq, _("MHz") ); } } gchar *get_motherboard(void) { gchar *board_vendor; #if defined(ARCH_x86) || defined(ARCH_x86_64) gchar *board_name, *board_version; gchar *board_part = NULL, *product_part = NULL; const gchar *tmp; gchar *product_name, *product_vendor, *product_version; int b = 0, p = 0; gchar *ret; scan_dmi(FALSE); board_name = dmi_get_str("baseboard-product-name"); board_version = dmi_get_str("baseboard-version"); board_vendor = dmi_get_str("baseboard-manufacturer"); if (board_vendor) { /* attempt to shorten */ tmp = vendor_get_shortest_name(board_vendor); if (tmp && tmp != board_vendor) { g_free(board_vendor); board_vendor = g_strdup(tmp); } } product_name = dmi_get_str("system-product-name"); product_version = dmi_get_str("system-version"); product_vendor = dmi_get_str("system-manufacturer"); if (product_vendor) { /* attempt to shorten */ tmp = vendor_get_shortest_name(product_vendor); if (tmp && tmp != product_vendor) { g_free(product_vendor); product_vendor = g_strdup(tmp); } } if (board_vendor && product_vendor && strcmp(board_vendor, product_vendor) == 0) { /* ignore duplicate vendor */ g_free(product_vendor); product_vendor = NULL; } if (board_name && product_name && strcmp(board_name, product_name) == 0) { /* ignore duplicate name */ g_free(product_name); product_name = NULL; } if (board_version && product_version && strcmp(board_version, product_version) == 0) { /* ignore duplicate version */ g_free(product_version); product_version = NULL; } if (board_name) b += 1; if (board_vendor) b += 2; if (board_version) b += 4; switch(b) { case 1: /* only name */ board_part = g_strdup(board_name); break; case 2: /* only vendor */ board_part = g_strdup(board_vendor); break; case 3: /* only name and vendor */ board_part = g_strdup_printf("%s %s", board_vendor, board_name); break; case 4: /* only version? Seems unlikely */ board_part = g_strdup(board_version); break; case 5: /* only name and version? */ board_part = g_strdup_printf("%s %s", board_name, board_version); break; case 6: /* only vendor and version (like lpereira's Thinkpad) */ board_part = g_strdup_printf("%s %s", board_vendor, board_version); break; case 7: /* all */ board_part = g_strdup_printf("%s %s %s", board_vendor, board_name, board_version); break; } if (product_name) p += 1; if (product_vendor) p += 2; if (product_version) p += 4; switch(p) { case 1: /* only name */ product_part = g_strdup(product_name); break; case 2: /* only vendor */ product_part = g_strdup(product_vendor); break; case 3: /* only name and vendor */ product_part = g_strdup_printf("%s %s", product_vendor, product_name); break; case 4: /* only version? Seems unlikely */ product_part = g_strdup(product_version); break; case 5: /* only name and version? */ product_part = g_strdup_printf("%s %s", product_name, product_version); break; case 6: /* only vendor and version? */ product_part = g_strdup_printf("%s %s", product_vendor, product_version); break; case 7: /* all */ product_part = g_strdup_printf("%s %s %s", product_vendor, product_name, product_version); break; } if (board_part && product_part) { ret = g_strdup_printf("%s (%s)", board_part, product_part); g_free(board_part); g_free(product_part); } else if (board_part) ret = board_part; else if (product_part) ret = product_part; else { if(strstr(module_call_method("computer::getOSKernel"),"WSL2")){ ret = g_strdup(_("WSL2")); } else { ret = g_strdup(_("(Unknown)")); } } g_free(board_name); g_free(board_vendor); g_free(board_version); g_free(product_name); g_free(product_vendor); g_free(product_version); return ret; #endif /* use device tree "model" */ board_vendor = dtr_get_string("/model", 0); if (board_vendor != NULL) return board_vendor; return g_strdup(_("Unknown")); } const ShellModuleMethod *hi_exported_methods(void) { static const ShellModuleMethod m[] = { {"getProcessorCount", get_processor_count}, {"getProcessorName", get_processor_name}, {"getProcessorDesc", get_processor_desc}, {"getProcessorNameAndDesc", get_processor_name_and_desc}, {"getProcessorFrequency", get_processor_max_frequency}, {"getProcessorFrequencyDesc", get_processor_frequency_desc}, {"getStorageDevices", get_storage_devices}, {"getStorageDevicesSimple", get_storage_devices_simple}, {"getStorageDevicesModels", get_storage_devices_models}, {"getStorageHomeModels", get_storage_home_models}, {"getPrinters", get_printers}, {"getInputDevices", get_input_devices}, {"getMotherboard", get_motherboard}, {"getGPUList", get_gpu_summary}, {"getPowerState", get_power_state}, {"getGPUname", get_gpuname}, {"getMemDesc", get_mem_desc}, {NULL}, }; return m; } gchar *hi_more_info(gchar * entry) { gchar *info = moreinfo_lookup_with_prefix("DEV", entry); if (info) return g_strdup(info); return g_strdup("?"); } gchar *hi_get_field(gchar * field) { gchar *info = moreinfo_lookup_with_prefix("DEV", field); if (info) return g_strdup(info); return g_strdup(field); } void scan_dmi(gboolean reload) { SCAN_START(); __scan_dmi(); SCAN_END(); } void scan_dmi_mem(gboolean reload) { SCAN_START(); if (memory_devices_info) g_free(memory_devices_info); memory_devices_info = memory_devices_get_info(); // if (memory_devices_desc) g_free(memory_devices_desc); gchar *st=memory_devices_get_system_memory_str(); if(st) { memory_devices_desc = g_strdup_printf("%s %s",st,memory_devices_get_system_memory_types_str()); } else { memory_devices_desc = NULL; } SCAN_END(); } void scan_monitors(gboolean reload) { SCAN_START(); if (monitors_info) g_free(monitors_info); monitors_info = monitors_get_info(); SCAN_END(); } void scan_firmware(gboolean reload) { SCAN_START(); if (firmware_info) g_free(firmware_info); firmware_info = firmware_get_info(); SCAN_END(); } void scan_dtree(gboolean reload) { SCAN_START(); __scan_dtree(); SCAN_END(); } void scan_processors(gboolean reload) { SCAN_START(); if (!processors) processors = processor_scan(); SCAN_END(); } void scan_battery(gboolean reload) { SCAN_START(); scan_battery_do(); SCAN_END(); } void scan_gpu(gboolean reload) { SCAN_START(); scan_gpu_do(); SCAN_END(); } void scan_pci(gboolean reload) { SCAN_START(); scan_pci_do(); SCAN_END(); } void scan_sensors(gboolean reload) { SCAN_START(); scan_sensors_do(); SCAN_END(); } void scan_printers(gboolean reload) { SCAN_START(); scan_printers_do(); SCAN_END(); } void scan_storage(gboolean reload) { SCAN_START(); g_free(storage_list); storage_list = g_strdup(""); storage_no_nvme = FALSE; if (!__scan_udisks2_devices()) { storage_no_nvme = TRUE; __scan_ide_devices(); __scan_scsi_devices(); } SCAN_END(); } void scan_input(gboolean reload) { SCAN_START(); __scan_input_devices(); SCAN_END(); } void scan_usb(gboolean reload) { SCAN_START(); __scan_usb(); SCAN_END(); } gchar *callback_processors() { return processor_get_info(processors); } gchar *callback_dmi() { return g_strdup_printf("%s" "[$ShellParam$]\n" "ViewType=5\n", dmi_info); } gchar *callback_dmi_mem() { return g_strdup(memory_devices_info); } gchar *callback_monitors() { return g_strdup(monitors_info); } gchar *callback_firmware() { return g_strdup(firmware_info); } gchar *callback_dtree() { return g_strdup_printf("%s" "[$ShellParam$]\n" "ViewType=1\n", dtree_info); } gchar *callback_battery() { return g_strdup_printf("%s\n" "[$ShellParam$]\n" "ViewType=5\n" "ReloadInterval=4000\n", battery_list); } gchar *callback_pci() { return g_strdup(pci_list); } gchar *callback_gpu() { return g_strdup(gpu_list); } gchar *callback_sensors() { return g_strdup_printf("%s\n" "[$ShellParam$]\n" "ViewType=2\n" "LoadGraphSuffix=\n" "ColumnTitle$TextValue=%s\n" "ColumnTitle$Value=%s\n" "ColumnTitle$Extra1=%s\n" "ShowColumnHeaders=true\n" "RescanInterval=5000\n" "%s\n" "%s", sensors, _("Sensor"), _("Value"), SENSORS_GROUP_BY_TYPE ? _("Driver"): _("Type"), lginterval, sensor_icons); } gchar *callback_printers() { return g_strdup_printf("%s\n" "[$ShellParam$]\n" "ViewType=1\n" "ReloadInterval=5000\n" "%s", printer_list, printer_icons); } gchar *callback_storage() { return g_strdup_printf("%s\n" "[$ShellParam$]\n" "ReloadInterval=5000\n" "ColumnTitle$TextValue=%s\n" "ColumnTitle$Value=%s\n" "ColumnTitle$Extra1=%s\n" "ShowColumnHeaders=true\n" "ViewType=1\n%s", storage_list, _("Device"), _("Size"), _("Model"), storage_icons); } gchar *callback_input() { return g_strdup_printf("[Input Devices]\n" "%s" "[$ShellParam$]\n" "ViewType=1\n" "ColumnTitle$TextValue=%s\n" "ColumnTitle$Value=%s\n" "ColumnTitle$Extra1=%s\n" "ShowColumnHeaders=true\n" "ReloadInterval=5000\n%s", input_list, _("Device"), _("Vendor"), _("Type"), input_icons); } gchar *callback_usb() { return g_strdup_printf("%s" "[$ShellParam$]\n" "ViewType=1\n" "ReloadInterval=5000\n%s", usb_list, usb_icons); } ModuleEntry *hi_module_get_entries(void) { return entries; } gchar *hi_module_get_name(void) { return g_strdup(_("Devices")); } guchar hi_module_get_weight(void) { return 85; } void hi_module_init(void) { static SyncEntry entries[] = { { .name = N_("Update PCI ID listing"), .file_name = "pci.ids", .optional = TRUE, }, { .name = N_("Update USB ID listing"), .file_name = "usb.ids", .optional = TRUE, }, { .name = N_("Update EDID vendor codes"), .file_name = "edid.ids", .optional = TRUE, }, { .name = N_("Update IEEE OUI vendor codes"), .file_name = "ieee_oui.ids", .optional = TRUE, }, { .name = N_("Update SD card manufacturer information"), .file_name = "sdcard.ids", .optional = TRUE, }, #ifdef ARCH_x86 #if JSON_CHECK_VERSION(0,20,0) { .name = N_("Update CPU flags database"), .file_name = "cpuflags.json", .optional = TRUE, }, #endif #endif }; guint i; for (i = 0; i < G_N_ELEMENTS(entries); i++) sync_manager_add_entry(&entries[i]); init_cups(); sensor_init(); udisks2_init(); #ifdef ARCH_x86 void cpuflags_x86_init(void); cpuflags_x86_init(); #endif } void hi_module_deinit(void) { moreinfo_del_with_prefix("DEV"); sensor_shutdown(); storage_shutdown(); udisks2_shutdown(); if(cups) g_module_close(cups); } const ModuleAbout *hi_module_get_about(void) { static const ModuleAbout ma = { .author = "L. A. F. Pereira", .description = N_("Gathers information about hardware devices"), .version = VERSION, .license = "GNU GPL version 2 or later.", }; return &ma; } gchar **hi_module_get_dependencies(void) { static gchar *deps[] = { "computer.so", NULL }; return deps; } const gchar *hi_note_func(gint entry) { if (entry == ENTRY_PCI || entry == ENTRY_GPU) { const gchar *ids = find_pci_ids_file(); if (!ids) { return g_strdup(_("A copy of pci.ids is not available on the system.")); } if (ids && strstr(ids, ".min")) { return g_strdup(_("A full pci.ids is not available on the system.")); } } if (entry == ENTRY_RESOURCES) { if (root_required_for_resources()) { return g_strdup(_("Ensure hardinfo2 service is enabled+started: sudo systemctl enable hardinfo2 --now (SystemD distro)\nAdd yourself to hardinfo2 group: sudo usermod -a -G hardinfo2 YOUR_LOGIN\nAnd Logout/Reboot for groups to be updated...")); } } else if (entry == ENTRY_STORAGE){ if (storage_no_nvme) { return g_strdup( _("Any NVMe storage devices present are not listed.\n" "udisks2 is required for NVMe devices.")); } } else if (entry == ENTRY_DMI_MEM){ const char *msg; if (memory_devices_hinote(&msg)) { return msg; } } else if (entry == ENTRY_FW) { const char *msg; if (firmware_hinote(&msg)) { return msg; } } return NULL; } hardinfo2-hardinfo2-1331e88/modules/devices/000077500000000000000000000000001474767047500206355ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/modules/devices/alpha/000077500000000000000000000000001474767047500217225ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/modules/devices/alpha/processor.c000066400000000000000000000056361474767047500241170ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "hardinfo.h" #include "devices.h" #include "cpu_util.h" GSList * processor_scan(void) { Processor *processor; FILE *cpuinfo; gchar buffer[128]; long long hz = 0; cpuinfo = fopen(PROC_CPUINFO, "r"); if (!cpuinfo) return NULL; processor = g_new0(Processor, 1); while (fgets(buffer, 128, cpuinfo)) { gchar **tmp = g_strsplit(buffer, ":", 2); if (tmp[0] && tmp[1]) { tmp[0] = g_strstrip(tmp[0]); tmp[1] = g_strstrip(tmp[1]); get_str("cpu model", processor->model_name); get_float("BogoMIPS", processor->bogomips); get_str("platform string", processor->strmodel); get_str("cycle frequency [Hz]", processor->cycle_frequency_hz_str); } g_strfreev(tmp); } fclose(cpuinfo); gchar *tmp = g_strconcat("Alpha ", processor->model_name, NULL); g_free(processor->model_name); processor->model_name = tmp; if (processor->cycle_frequency_hz_str) { hz = atoll(processor->cycle_frequency_hz_str); processor->cpu_mhz = hz; processor->cpu_mhz /= 1000000; } else processor->cpu_mhz = 0.0f; return g_slist_append(NULL, processor); } gchar *processor_name(GSList * processors) { return processor_name_default(processors); } gchar *processor_describe(GSList * processors) { return processor_describe_default(processors); } gchar * processor_get_info(GSList *processors) { Processor *processor = (Processor *)processors->data; return g_strdup_printf("[%s]\n" "%s=%s\n" "%s=%s\n" "%s=%.2f %s\n" /* frequency */ "%s=%.2f\n" /* bogomips */ "%s=%s\n", /* byte order */ _("Processor"), _("Model"), processor->model_name, _("Platform String"), processor->strmodel, _("Frequency"), processor->cpu_mhz, _("MHz"), _("BogoMips"), processor->bogomips, _("Byte Order"), byte_order_str() ); } hardinfo2-hardinfo2-1331e88/modules/devices/arm/000077500000000000000000000000001474767047500214145ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/modules/devices/arm/arm_data.c000066400000000000000000000242131474767047500233320ustar00rootroot00000000000000/* * rpiz - https://github.com/bp0/rpiz * Copyright (C) 2017 Burt P. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include #include #include "arm_data.h" #ifndef C_ #define C_(Ctx, String) String #endif #ifndef NC_ #define NC_(Ctx, String) String #endif /* sources: * https://unix.stackexchange.com/a/43563 * git:linux/arch/arm/kernel/setup.c * git:linux/arch/arm64/kernel/cpuinfo.c */ static struct { char *name, *meaning; } tab_flag_meaning[] = { /* arm/hw_cap */ { "swp", NC_("arm-flag", /*!/flag:swp*/ "SWP instruction (atomic read-modify-write)") }, { "half", NC_("arm-flag", /*!/flag:half*/ "Half-word loads and stores") }, { "thumb", NC_("arm-flag", /*!/flag:thumb*/ "Thumb (16-bit instruction set)") }, { "26bit", NC_("arm-flag", /*!/flag:26bit*/ "26-Bit Model (Processor status register folded into program counter)") }, { "fastmult", NC_("arm-flag", /*!/flag:fastmult*/ "32x32->64-bit multiplication") }, { "fpa", NC_("arm-flag", /*!/flag:fpa*/ "Floating point accelerator") }, { "vfp", NC_("arm-flag", /*!/flag:vfp*/ "VFP (early SIMD vector floating point instructions)") }, { "edsp", NC_("arm-flag", /*!/flag:edsp*/ "DSP extensions (the 'e' variant of the ARM9 CPUs, and all others above)") }, { "java", NC_("arm-flag", /*!/flag:java*/ "Jazelle (Java bytecode accelerator)") }, { "iwmmxt", NC_("arm-flag", /*!/flag:iwmmxt*/ "SIMD instructions similar to Intel MMX") }, { "crunch", NC_("arm-flag", /*!/flag:crunch*/ "MaverickCrunch coprocessor (if kernel support enabled)") }, { "thumbee", NC_("arm-flag", /*!/flag:thumbee*/ "ThumbEE") }, { "neon", NC_("arm-flag", /*!/flag:neon*/ "Advanced SIMD/NEON on AArch32") }, { "evtstrm", NC_("arm-flag", /*!/flag:evtstrm*/ "Kernel event stream using generic architected timer") }, { "vfpv3", NC_("arm-flag", /*!/flag:vfpv3*/ "VFP version 3") }, { "vfpv3d16", NC_("arm-flag", /*!/flag:vfpv3d16*/ "VFP version 3 with 16 D-registers") }, { "vfpv4", NC_("arm-flag", /*!/flag:vfpv4*/ "VFP version 4 with fast context switching") }, { "vfpd32", NC_("arm-flag", /*!/flag:vfpd32*/ "VFP with 32 D-registers") }, { "tls", NC_("arm-flag", /*!/flag:tls*/ "TLS register") }, { "idiva", NC_("arm-flag", /*!/flag:idiva*/ "SDIV and UDIV hardware division in ARM mode") }, { "idivt", NC_("arm-flag", /*!/flag:idivt*/ "SDIV and UDIV hardware division in Thumb mode") }, { "lpae", NC_("arm-flag", /*!/flag:lpae*/ "40-bit Large Physical Address Extension") }, /* arm/hw_cap2 */ { "pmull", NC_("arm-flag", /*!/flag:pmull*/ "64x64->128-bit F2m multiplication (arch>=8)") }, { "aes", NC_("arm-flag", /*!/flag:aes*/ "Crypto:AES (arch>=8)") }, { "sha1", NC_("arm-flag", /*!/flag:sha1*/ "Crypto:SHA1 (arch>=8)") }, { "sha2", NC_("arm-flag", /*!/flag:sha2*/ "Crypto:SHA2 (arch>=8)") }, { "crc32", NC_("arm-flag", /*!/flag:crc32*/ "CRC32 checksum instructions (arch>=8)") }, /* arm64/hw_cap */ { "fp", NC_("arm-flag", /*!/flag:fp*/ "Floating-point on AArch64 (arch>=8)") }, { "asimd", NC_("arm-flag", /*!/flag:asimd*/ "Advanced SIMD/NEON on AArch64 (arch>=8)") }, { "atomics", NC_("arm-flag", /*!/flag:atomics*/ "Atomic instructions on AArch64 (arch>=8)") }, { "fphp", NC_("arm-flag", /*!/flag:fphp*/ "Half precision floating point on AArch64 (arch>=8)") }, { "asimdhp", NC_("arm-flag", /*!/flag:asimdhp*/ "Advanced SIMD with BFloat16 on AArch64 (arch>=8)") }, { "cpuid", NC_("arm-flag", /*!/flag:cpuid*/ "CPU features can be read on AArch64 (arch>=8)") }, { "asimdrdm", NC_("arm-flag", /*!/flag:asimdrdm*/ "Advanced SIMD rounding Double MulAcc on AArch64 (arch>=8)") }, { "jscvt", NC_("arm-flag", /*!/flag:jscvt*/ "JacaScript conversion on AArch64 (arch>=8)") }, { "fcma", NC_("arm-flag", /*!/flag:fcma*/ "Complex number SIMD on AArch64 (arch>=8)") }, { "lrcpc", NC_("arm-flag", /*!/flag:lrcpc*/ "Weak release consistency on AArch64 (arch>=8)") }, { "dcpop", NC_("arm-flag", /*!/flag:dcpop*/ "Data cache clean to Point of Persistence on AArch64 (arch>=8)") }, { "sha3", NC_("arm-flag", /*!/flag:sha3*/ "SHA-3 instructions on AArch64 (arch>=8)") }, { "sm3", NC_("arm-flag", /*!/flag:sm3*/ "SM3 instructions on AArch64 (arch>=8)") }, { "sm4", NC_("arm-flag", /*!/flag:sm4*/ "SM4 instructions on AArch64 (arch>=8)") }, { "asimddp", NC_("arm-flag", /*!/flag:asimddp*/ "SIMD Dot Product on AArch64 (arch>=8)") }, { "sha512", NC_("arm-flag", /*!/flag:sha512*/ "SHA512 instructions on AArch64 (arch>=8)") }, { "sve", NC_("arm-flag", /*!/flag:sve*/ "Scalable Vector Extension on AArch64 (arch>=8)") }, { NULL, NULL } }; static struct { char *code; char *name; char *more; } tab_arm_arch[] = { { "7", "AArch32", "AArch32 (ARMv7)" }, { "8", "AArch64", "AArch64 (ARMv8)" }, { "AArch32", "AArch32", "AArch32 (ARMv7)" }, { "AArch64", "AArch64", "AArch64 (ARMv8)" }, { NULL, NULL, NULL }, }; static char all_flags[1024] = ""; #define APPEND_FLAG(f) strcat(all_flags, f); strcat(all_flags, " "); const char *arm_flag_list() { int i = 0, built = 0; built = strlen(all_flags); if (!built) { while(tab_flag_meaning[i].name != NULL) { APPEND_FLAG(tab_flag_meaning[i].name); i++; } } return all_flags; } const char *arm_flag_meaning(const char *flag) { int i = 0; if (flag) while(tab_flag_meaning[i].name != NULL) { if (strcmp(tab_flag_meaning[i].name, flag) == 0) { if (tab_flag_meaning[i].meaning != NULL) return C_("arm-flag", tab_flag_meaning[i].meaning); else return NULL; } i++; } return NULL; } #include "util_ids.h" gchar *arm_ids_file = NULL; void find_arm_ids_file() { if (arm_ids_file) return; char *file_search_order[] = { g_build_filename(g_get_user_config_dir(), "hardinfo2", "arm.ids", NULL), g_build_filename(params.path_data, "arm.ids", NULL), NULL }; int n; for(n = 0; file_search_order[n]; n++) { if (!arm_ids_file && !access(file_search_order[n], R_OK)) arm_ids_file = (gchar*) auto_free_on_exit( file_search_order[n] ); else g_free(file_search_order[n]); } } void arm_part(const char *imp_code, const char *part_code, char **imp, char **part) { gchar *qpath = NULL; ids_query_result result = {}; unsigned int i,p; if (!arm_ids_file) find_arm_ids_file(); i = strtol(imp_code, NULL, 0); p = strtol(part_code, NULL, 0); qpath = g_strdup_printf("%02x/%03x", i, p); scan_ids_file(arm_ids_file, qpath, &result, -1); g_free(qpath); if (imp) *imp = result.results[0] ? g_strdup(result.results[0]) : NULL; if (part) *part = result.results[1] ? g_strdup(result.results[1]) : NULL; } const char *arm_arch(const char *cpuinfo_arch_str) { int i = 0; if (cpuinfo_arch_str) while(tab_arm_arch[i].code) { if (strcmp(tab_arm_arch[i].code, cpuinfo_arch_str) == 0) return tab_arm_arch[i].name; i++; } return cpuinfo_arch_str; } const char *arm_arch_more(const char *cpuinfo_arch_str) { int i = 0; if (cpuinfo_arch_str) while(tab_arm_arch[i].code) { if (strcmp(tab_arm_arch[i].code, cpuinfo_arch_str) == 0) return tab_arm_arch[i].more; i++; } return cpuinfo_arch_str; } char *arm_decoded_name(const char *imp, const char *part, const char *var, const char *rev, const char *arch, const char *model_name) { char *dnbuff; char *imp_name = NULL, *part_desc = NULL, *arch_name = NULL; int r = 0, p = 0; dnbuff = malloc(256); if (dnbuff) { memset(dnbuff, 0, 256); if (imp && arch && part && rev) { /* http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0395b/CIHCAGHH.html * variant and revision can be rendered r{variant}p{revision} */ r = strtol(var, NULL, 0); p = strtol(rev, NULL, 0); arm_part(imp, part, &imp_name, &part_desc); arch_name = (char*) arm_arch(arch); if (imp_name || part_desc) { if (arch_name != arch) sprintf(dnbuff, "%s %s r%dp%d (%s)", (imp_name) ? imp_name : imp, (part_desc) ? part_desc : part, r, p, arch_name); else sprintf(dnbuff, "%s %s r%dp%d (arch:%s)", (imp_name) ? imp_name : imp, (part_desc) ? part_desc : part, r, p, arch); } else { /* fallback for now */ sprintf(dnbuff, "%s [imp:%s part:%s r%dp%d arch:%s]", model_name, (imp_name) ? imp_name : imp, (part_desc) ? part_desc : part, r, p, arch); } g_free(imp_name); g_free(part_desc); } else { /* prolly not ARM arch at all */ if (model_name) sprintf(dnbuff, "%s", model_name); else { free(dnbuff); return NULL; } } } return dnbuff; } hardinfo2-hardinfo2-1331e88/modules/devices/arm/arm_data.h000066400000000000000000000030701474767047500233350ustar00rootroot00000000000000/* * rpiz - https://github.com/bp0/rpiz * Copyright (C) 2017 Burt P. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef _ARMDATA_H_ #define _ARMDATA_H_ /* table lookups */ void arm_part(const char *imp_code, const char *part_code, char **imp, char **part); const char *arm_arch(const char *cpuinfo_arch_str); const char *arm_arch_more(const char *cpuinfo_arch_str); /* cpu_implementer, cpu_part, cpu_variant, cpu_revision, cpu_architecture from /proc/cpuinfo * strdup(model_name) is returned as a fallback if not enough data is known */ char *arm_decoded_name( const char *imp, const char *part, const char *var, const char *rev, const char *arch, const char *model_name); /* cpu flags from /proc/cpuinfo */ const char *arm_flag_list(void); /* list of all known flags */ const char *arm_flag_meaning(const char *flag); /* lookup flag meaning */ #endif hardinfo2-hardinfo2-1331e88/modules/devices/arm/processor.c000066400000000000000000000663521474767047500236130ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "hardinfo.h" #include "devices.h" #include "cpu_util.h" #include "dt_util.h" #include "arm_data.h" #include "arm_data.c" enum { ARM_A32 = 0, ARM_A64 = 1, ARM_A32_ON_A64 = 2, }; static const gchar *arm_mode_str[] = { "A32", "A64", "A32 on A64", }; static gchar *__cache_get_info_as_string(GSList *cpu_cache) { gchar *result = g_strdup(""); ProcessorCache *cache; GSList *cache_list; if (!cpu_cache) { return g_strdup(_("Cache information not available=\n")); } for (cache_list = cpu_cache; cache_list; cache_list = cache_list->next) { cache = (ProcessorCache *)cache_list->data; result = h_strdup_cprintf(_("Level %d (%s)=%d-way set-associative, %d sets, %dKB size\n"), result, cache->level, C_("cache-type", cache->type), cache->ways_of_associativity, cache->number_of_sets, cache->size); } return result; } /* This is not used directly, but creates translatable strings for * the type string returned from /sys/.../cache */ //static const char* cache_types[] = { // NC_("cache-type", /*/cache type, as appears in: Level 1 (Data)*/ "Data"), // NC_("cache-type", /*/cache type, as appears in: Level 1 (Instruction)*/ "Instruction"), // NC_("cache-type", /*/cache type, as appears in: Level 2 (Unified)*/ "Unified") //}; static void __cache_obtain_info(Processor *processor) { ProcessorCache *cache; gchar *endpoint, *entry, *index; gchar *uref = NULL; gint i; gint processor_number = processor->id; endpoint = g_strdup_printf("/sys/devices/system/cpu/cpu%d/cache", processor_number); for (i = 0; ; i++) { cache = g_new0(ProcessorCache, 1); index = g_strdup_printf("index%d/", i); entry = g_strconcat(index, "type", NULL); cache->type = h_sysfs_read_string(endpoint, entry); g_free(entry); if (!cache->type) { g_free(cache); g_free(index); goto fail; } entry = g_strconcat(index, "level", NULL); cache->level = h_sysfs_read_int(endpoint, entry); g_free(entry); entry = g_strconcat(index, "number_of_sets", NULL); cache->number_of_sets = h_sysfs_read_int(endpoint, entry); g_free(entry); entry = g_strconcat(index, "physical_line_partition", NULL); cache->physical_line_partition = h_sysfs_read_int(endpoint, entry); g_free(entry); entry = g_strconcat(index, "size", NULL); cache->size = h_sysfs_read_int(endpoint, entry); g_free(entry); entry = g_strconcat(index, "ways_of_associativity", NULL); cache->ways_of_associativity = h_sysfs_read_int(endpoint, entry); g_free(entry); /* unique cache references: id is nice, but share_cpu_list can be * used if it is not available. */ entry = g_strconcat(index, "id", NULL); uref = h_sysfs_read_string(endpoint, entry); g_free(entry); if (uref != NULL && *uref != 0 ) cache->uid = atoi(uref); else cache->uid = -1; g_free(uref); entry = g_strconcat(index, "shared_cpu_list", NULL); cache->shared_cpu_list = h_sysfs_read_string(endpoint, entry); g_free(entry); /* reacharound */ entry = g_strconcat(index, "../../topology/physical_package_id", NULL); cache->phy_sock = h_sysfs_read_int(endpoint, entry); g_free(entry); g_free(index); processor->cache = g_slist_append(processor->cache, cache); } fail: g_free(endpoint); } #define cmp_cache_test(f) if (a->f < b->f) return -1; if (a->f > b->f) return 1; static gint cmp_cache(ProcessorCache *a, ProcessorCache *b) { gint i = 0; cmp_cache_test(phy_sock); i = g_strcmp0(a->type, b->type); if (i!=0) return i; cmp_cache_test(level); cmp_cache_test(size); cmp_cache_test(uid); /* uid is unique among caches with the same (type, level) */ if (a->uid == -1) { /* if id wasn't available, use shared_cpu_list as a unique ref */ i = g_strcmp0(a->shared_cpu_list, b->shared_cpu_list); if (i!=0) return i; } return 0; } static gint cmp_cache_ignore_id(ProcessorCache *a, ProcessorCache *b) { gint i = 0; cmp_cache_test(phy_sock); i = g_strcmp0(a->type, b->type); if (i!=0) return i; cmp_cache_test(level); cmp_cache_test(size); return 0; } gchar *caches_summary(GSList * processors) { gchar *ret = g_strdup_printf("[%s]\n", _("Caches")); GSList *all_cache = NULL, *uniq_cache = NULL; GSList *tmp, *l; Processor *p; ProcessorCache *c, *cur = NULL; gint cur_count = 0; /* create list of all cache references */ for (l = processors; l; l = l->next) { p = (Processor*)l->data; if (p->cache) { tmp = g_slist_copy(p->cache); if (all_cache) { all_cache = g_slist_concat(all_cache, tmp); } else { all_cache = tmp; } } } if (g_slist_length(all_cache) == 0) { ret = h_strdup_cprintf("%s=\n", ret, _("(Not Available)") ); g_slist_free(all_cache); return ret; } /* ignore duplicate references */ all_cache = g_slist_sort(all_cache, (GCompareFunc)cmp_cache); for (l = all_cache; l; l = l->next) { c = (ProcessorCache*)l->data; if (!cur) { cur = c; } else { if (cmp_cache(cur, c) != 0) { uniq_cache = g_slist_prepend(uniq_cache, cur); cur = c; } } } uniq_cache = g_slist_prepend(uniq_cache, cur); uniq_cache = g_slist_reverse(uniq_cache); cur = 0, cur_count = 0; /* count and list caches */ for (l = uniq_cache; l; l = l->next) { c = (ProcessorCache*)l->data; if (!cur) { cur = c; cur_count = 1; } else { if (cmp_cache_ignore_id(cur, c) != 0) { ret = h_strdup_cprintf(_("Level %d (%s)#%d=%dx %dKB (%dKB), %d-way set-associative, %d sets\n"), ret, cur->level, C_("cache-type", cur->type), cur->phy_sock, cur_count, cur->size, cur->size * cur_count, cur->ways_of_associativity, cur->number_of_sets); cur = c; cur_count = 1; } else { cur_count++; } } } ret = h_strdup_cprintf(_("Level %d (%s)#%d=%dx %dKB (%dKB), %d-way set-associative, %d sets\n"), ret, cur->level, C_("cache-type", cur->type), cur->phy_sock, cur_count, cur->size, cur->size * cur_count, cur->ways_of_associativity, cur->number_of_sets); g_slist_free(all_cache); g_slist_free(uniq_cache); return ret; } GSList * processor_scan(void) { GSList *procs = NULL; Processor *processor = NULL; FILE *cpuinfo; gchar buffer[128]; gchar *rep_pname = NULL; GSList *pi = NULL; dtr *dt = dtr_new(NULL); cpuinfo = fopen(PROC_CPUINFO, "r"); if (!cpuinfo) return NULL; #define CHECK_FOR(k) (g_str_has_prefix(tmp[0], k)) while (fgets(buffer, 128, cpuinfo)) { gchar **tmp = g_strsplit(buffer, ":", 2); if (tmp[0] && tmp[1]) { tmp[0] = g_strstrip(tmp[0]); tmp[1] = g_strstrip(tmp[1]); } else { g_strfreev(tmp); continue; } get_str("Processor", rep_pname); if ( CHECK_FOR("processor") ) { /* finish previous */ if (processor) { procs = g_slist_append(procs, processor); } /* start next */ processor = g_new0(Processor, 1); processor->id = atol(tmp[1]); if (rep_pname) processor->linux_name = g_strdup(rep_pname); g_strfreev(tmp); continue; } if (!processor && ( CHECK_FOR("model name") || CHECK_FOR("Features") || CHECK_FOR("BogoMIPS") ) ) { /* single proc/core may not have "processor : n" */ processor = g_new0(Processor, 1); processor->id = 0; if (rep_pname) processor->linux_name = g_strdup(rep_pname); } if (processor) { get_str("model name", processor->linux_name); get_str("Features", processor->flags); get_float("BogoMIPS", processor->bogomips); get_str("CPU implementer", processor->cpu_implementer); get_str("CPU architecture", processor->cpu_architecture); get_str("CPU variant", processor->cpu_variant); get_str("CPU part", processor->cpu_part); get_str("CPU revision", processor->cpu_revision); } g_strfreev(tmp); } if (processor) procs = g_slist_append(procs, processor); g_free(rep_pname); fclose(cpuinfo); /* re-duplicate missing data for /proc/cpuinfo variant that de-duplicated it */ #define REDUP(f) if (dproc && dproc->f && !processor->f) processor->f = g_strdup(dproc->f); Processor *dproc=NULL; GSList *l; l = procs = g_slist_reverse(procs); while (l) { processor = l->data; if (processor->flags) { dproc = processor; } else if (dproc) { REDUP(flags); REDUP(cpu_implementer); REDUP(cpu_architecture); REDUP(cpu_variant); REDUP(cpu_part); REDUP(cpu_revision); } l = g_slist_next(l); } procs = g_slist_reverse(procs); /* data not from /proc/cpuinfo */ for (pi = procs; pi; pi = pi->next) { processor = (Processor *) pi->data; __cache_obtain_info(processor); /* strings can't be null or segfault later */ STRIFNULL(processor->linux_name, _("ARM Processor") ); EMPIFNULL(processor->flags); UNKIFNULL(processor->cpu_implementer); UNKIFNULL(processor->cpu_architecture); UNKIFNULL(processor->cpu_variant); UNKIFNULL(processor->cpu_part); UNKIFNULL(processor->cpu_revision); processor->model_name = arm_decoded_name( processor->cpu_implementer, processor->cpu_part, processor->cpu_variant, processor->cpu_revision, processor->cpu_architecture, processor->linux_name); UNKIFNULL(processor->model_name); /* topo & freq */ processor->cpufreq = cpufreq_new(processor->id); processor->cputopo = cputopo_new(processor->id); if (processor->cpufreq->cpukhz_max) processor->cpu_mhz = processor->cpufreq->cpukhz_max / 1000; else processor->cpu_mhz = 0.0f; /* Try OPP, although if it exists, it should have been available * via cpufreq. */ if (dt && processor->cpu_mhz == 0.0f) { gchar *dt_cpu_path = g_strdup_printf("/cpus/cpu@%d", processor->id); dt_opp_range *opp = dtr_get_opp_range(dt, dt_cpu_path); if (opp) { processor->cpu_mhz = (double)opp->khz_max / 1000; g_free(opp); } g_free(dt_cpu_path); } /* mode */ processor->mode = ARM_A32; if ( processor_has_flag(processor->flags, "pmull") || processor_has_flag(processor->flags, "crc32") ) { #ifdef __aarch64__ processor->mode = ARM_A64; #else processor->mode = ARM_A32_ON_A64; #endif } } dtr_free(dt); return procs; } gchar *processor_get_capabilities_from_flags(gchar * strflags) { gchar **flags, **old; gchar *tmp = NULL; gint j = 0; flags = g_strsplit(strflags, " ", 0); old = flags; while (flags[j]) { const gchar *meaning = arm_flag_meaning( flags[j] ); if (meaning) { tmp = h_strdup_cprintf("%s=%s\n", tmp, flags[j], meaning); } else { tmp = h_strdup_cprintf("%s=\n", tmp, flags[j]); } j++; } if (tmp == NULL || g_strcmp0(tmp, "") == 0) tmp = g_strdup_printf("%s=%s\n", "empty", _("Empty List")); g_strfreev(old); return tmp; } #define khzint_to_mhzdouble(k) (((double)k)/1000) #define cmp_clocks_test(f) if (a->f < b->f) return -1; if (a->f > b->f) return 1; static gint cmp_cpufreq_data(cpufreq_data *a, cpufreq_data *b) { gint i = 0; i = g_strcmp0(a->shared_list, b->shared_list); if (i!=0) return i; cmp_clocks_test(cpukhz_max); cmp_clocks_test(cpukhz_min); return 0; } static gint cmp_cpufreq_data_ignore_affected(cpufreq_data *a, cpufreq_data *b) { cmp_clocks_test(cpukhz_max); cmp_clocks_test(cpukhz_min); return 0; } gchar *clocks_summary(GSList * processors) { gchar *ret = g_strdup_printf("[%s]\n", _("Clocks")); GSList *all_clocks = NULL, *uniq_clocks = NULL; GSList *l; Processor *p; cpufreq_data *c, *cur = NULL; gint cur_count = 0; /* create list of all clock references */ for (l = processors; l; l = l->next) { p = (Processor*)l->data; if (p->cpufreq && p->cpufreq->cpukhz_max > 0) { all_clocks = g_slist_prepend(all_clocks, p->cpufreq); } } if (g_slist_length(all_clocks) == 0) { ret = h_strdup_cprintf("%s=\n", ret, _("(Not Available)") ); g_slist_free(all_clocks); return ret; } /* ignore duplicate references */ all_clocks = g_slist_sort(all_clocks, (GCompareFunc)cmp_cpufreq_data); for (l = all_clocks; l; l = l->next) { c = (cpufreq_data*)l->data; if (!cur) { cur = c; } else { if (cmp_cpufreq_data(cur, c) != 0) { uniq_clocks = g_slist_prepend(uniq_clocks, cur); cur = c; } } } uniq_clocks = g_slist_prepend(uniq_clocks, cur); uniq_clocks = g_slist_reverse(uniq_clocks); cur = 0, cur_count = 0; /* count and list clocks */ for (l = uniq_clocks; l; l = l->next) { c = (cpufreq_data*)l->data; if (!cur) { cur = c; cur_count = 1; } else { if (cmp_cpufreq_data_ignore_affected(cur, c) != 0) { ret = h_strdup_cprintf(_("%.2f-%.2f %s=%dx\n"), ret, khzint_to_mhzdouble(cur->cpukhz_min), khzint_to_mhzdouble(cur->cpukhz_max), _("MHz"), cur_count); cur = c; cur_count = 1; } else { cur_count++; } } } ret = h_strdup_cprintf(_("%.2f-%.2f %s=%dx\n"), ret, khzint_to_mhzdouble(cur->cpukhz_min), khzint_to_mhzdouble(cur->cpukhz_max), _("MHz"), cur_count); g_slist_free(all_clocks); g_slist_free(uniq_clocks); return ret; } gchar * processor_get_detailed_info(Processor *processor) { gchar *tmp_flags, *tmp_imp = NULL, *tmp_part = NULL, *tmp_cache; gchar *tmp_arch, *tmp_cpufreq, *tmp_topology, *ret; tmp_flags = processor_get_capabilities_from_flags(processor->flags); arm_part(processor->cpu_implementer, processor->cpu_part, &tmp_imp, &tmp_part); tmp_arch = (char*)arm_arch_more(processor->cpu_architecture); tmp_topology = cputopo_section_str(processor->cputopo); tmp_cpufreq = cpufreq_section_str(processor->cpufreq); tmp_cache = __cache_get_info_as_string(processor->cache); ret = g_strdup_printf("[%s]\n" "%s=%s\n" /* linux name */ "%s=%s\n" /* decoded name */ "%s=%s\n" /* mode */ "%s=%.2f %s\n" /* frequency */ "%s=%.2f\n" /* bogomips */ "%s=%s\n" /* byte order */ "%s" /* topology */ "%s" /* frequency scaling */ "[%s]\n%s\n" /* cache */ "[%s]\n" /* ARM */ "%s=[%s] %s\n" /* implementer */ "%s=[%s] %s\n" /* part */ "%s=[%s] %s\n" /* architecture */ "%s=%s\n" /* variant */ "%s=%s\n" /* revision */ "[%s]\n" /* flags */ "%s", _("Processor"), _("Linux Name"), processor->linux_name, _("Decoded Name"), processor->model_name, _("Mode"), arm_mode_str[processor->mode], _("Frequency"), processor->cpu_mhz, _("MHz"), _("BogoMips"), processor->bogomips, _("Byte Order"), byte_order_str(), tmp_topology, tmp_cpufreq, _("Cache"), tmp_cache, _("ARM"), _("Implementer"), processor->cpu_implementer, (tmp_imp) ? tmp_imp : "", _("Part"), processor->cpu_part, (tmp_part) ? tmp_part : "", _("Architecture"), processor->cpu_architecture, (tmp_arch) ? tmp_arch : "", _("Variant"), processor->cpu_variant, _("Revision"), processor->cpu_revision, _("Capabilities"), tmp_flags); g_free(tmp_flags); g_free(tmp_cpufreq); g_free(tmp_topology); g_free(tmp_cache); return ret; } gchar *processor_name(GSList *processors) { /* compatible contains a list of compatible hardware, so be careful * with matching order. * ex: "ti,omap3-beagleboard-xm", "ti,omap3450", "ti,omap3"; * matches "omap3 family" first. * ex: "brcm,bcm2837", "brcm,bcm2836"; * would match 2836 when it is a 2837. */ #define UNKSOC "(Unknown)" /* don't translate this */ const struct { char *search_str; char *vendor; char *soc; } dt_compat_searches[] = { { "amlogic,a311d", "Amlogic", "A311D (Vim3)" }, // VIM3 { "apple,t8132", "Apple", "T8132 (M4)" }, { "apple,t8122", "Apple", "T8122 (M3)" }, { "apple,t8112", "Apple", "T8112 (M2)" }, { "apple,t8103", "Apple", "T8103 (M1 A14X)" }, { "apple,t8101", "Apple", "T8101 (M1 A14)" }, { "apple,t6042", "Apple", "T6042 (M4 Ultra)" }, { "apple,t6041", "Apple", "T6041 (M4 Max)" }, { "apple,t6040", "Apple", "T6040 (M4 Pro)" }, { "apple,t6032", "Apple", "T6032 (M3 Ultra)" }, { "apple,t6031", "Apple", "T6031 (M3 Max)" }, { "apple,t6030", "Apple", "T6030 (M3 Pro)" }, { "apple,t6022", "Apple", "T6022 (M2 Ultra)" }, { "apple,t6021", "Apple", "T6021 (M2 Max)" }, { "apple,t6020", "Apple", "T6020 (M2 Pro)" }, { "apple,t6002", "Apple", "T6002 (M1 Ultra)" }, { "apple,t6001", "Apple", "T6001 (M1 Max)" }, { "apple,t6000", "Apple", "T6000 (M1 Pro)" }, { "brcm,bcm2712", "Broadcom", "BCM2712 (RPi5)" }, // RPi 5 { "brcm,bcm2711", "Broadcom", "BCM2711 (RPi4)" }, // RPi 4 { "brcm,bcm2837", "Broadcom", "BCM2837 (RPi3)" }, // RPi 3 { "brcm,bcm2836", "Broadcom", "BCM2836 (RPi2)" }, // RPi 2 { "brcm,bcm2835", "Broadcom", "BCM2835 (RPi1)" }, // RPi 1 { "hardkernel,odroid-c2", "Amlogic", "S905 (C2)" }, // C2 { "hardkernel,odroid-n2", "Amlogic", "S922x (N2)" }, // N2 { "mediatek,mt8173", "MediaTek", "MT8173" }, { "mediatek,mt8183", "MediaTek", "MT8183" }, { "mediatek,mt6895", "MediaTek", "MT6895" }, { "mediatek,mt6799", "MediaTek", "MT6799 (Helio X30)" }, { "mediatek,mt6799", "MediaTek", "MT6799 (Helio X30)" }, { "mediatek,mt6797x", "MediaTek", "MT6797X (Helio X27)" }, { "mediatek,mt6797t", "MediaTek", "MT6797T (Helio X25)" }, { "mediatek,mt6797", "MediaTek", "MT6797 (Helio X20)" }, { "mediatek,mt6757T", "MediaTek", "MT6757T (Helio P25)" }, { "mediatek,mt6757", "MediaTek", "MT6757 (Helio P20)" }, { "mediatek,mt6795", "MediaTek", "MT6795 (Helio X10)" }, { "mediatek,mt6755", "MediaTek", "MT6755 (Helio P10)" }, { "mediatek,mt6750t", "MediaTek", "MT6750T" }, { "mediatek,mt6750", "MediaTek", "MT6750" }, { "mediatek,mt6753", "MediaTek", "MT6753" }, { "mediatek,mt6752", "MediaTek", "MT6752" }, { "mediatek,mt6738", "MediaTek", "MT6738" }, { "mediatek,mt6737t", "MediaTek", "MT6737T" }, { "mediatek,mt6735", "MediaTek", "MT6735" }, { "mediatek,mt6732", "MediaTek", "MT6732" }, { "nvidia,tegra", "nVidia", "Tegra-family" }, { "qcom,pineapple", "Qualcomm", "Pineapple (SD8g3)"}, { "qcom,sm8550", "Qualcomm", "SM8550 (SD8g2)"}, { "qcom,msm8939", "Qualcomm", "Snapdragon 615"}, { "qcom,msm", "Qualcomm", "Snapdragon-family"}, { "rockchip,rk3288", "Rockchip", "RK3288" }, // Asus Tinkerboard { "rockchip,rk3328", "Rockchip", "RK3328" }, // Firefly Renegade { "rockchip,rk3399", "Rockchip", "RK3399" }, // Firefly Renegade Elite { "rockchip,rk32", "Rockchip", "RK32xx-family" }, { "rockchip,rk33", "Rockchip", "RK33xx-family" }, { "rockchip,rk3588", "Rockchip", "RK3588" }, // rk3588-orangepi-5-max { "sprd,sc9863a", "Unisoc", "SC9864A" }, { "ti,omap5432", "Texas Instruments", "OMAP5432" }, { "ti,omap5430", "Texas Instruments", "OMAP5430" }, { "ti,omap4470", "Texas Instruments", "OMAP4470" }, { "ti,omap4460", "Texas Instruments", "OMAP4460" }, { "ti,omap4430", "Texas Instruments", "OMAP4430" }, { "ti,omap3620", "Texas Instruments", "OMAP3620" }, { "ti,omap3450", "Texas Instruments", "OMAP3450" }, { "ti,omap5", "Texas Instruments", "OMAP5-family" }, { "ti,omap4", "Texas Instruments", "OMAP4-family" }, { "ti,omap3", "Texas Instruments", "OMAP3-family" }, { "ti,omap2", "Texas Instruments", "OMAP2-family" }, { "ti,omap1", "Texas Instruments", "OMAP1-family" }, /* Generic vendor names only*/ { "amlogic,", "Amlogic", UNKSOC }, { "allwinner,", "Allwinner", UNKSOC }, { "brcm,", "Broadcom", UNKSOC }, { "mediatek,", "MediaTek", UNKSOC }, { "nvidia,", "nVidia", UNKSOC }, { "qcom,", "Qualcom", UNKSOC }, { "rockchip,", "Rockchip", UNKSOC }, { "ti,", "Texas Instruments", UNKSOC }, { NULL, NULL } }; gchar *ret = NULL; gchar *compat = NULL; int i; compat = dtr_get_string("/compatible", 1); if (compat != NULL) { i = 0; while(dt_compat_searches[i].search_str != NULL) { if (strstr(compat, dt_compat_searches[i].search_str) != NULL) { if(strstr(dt_compat_searches[i].soc,"Unknown")) ret = g_strdup_printf("%s %s (%s)", dt_compat_searches[i].vendor, dt_compat_searches[i].soc, compat); else ret = g_strdup_printf("%s %s", dt_compat_searches[i].vendor, dt_compat_searches[i].soc); break; } i++; } if(!ret) ret = g_strdup_printf("ARM Processor (%s)", compat); g_free(compat); } if(!ret) ret = g_strdup("ARM Processor (NoDT)"); return ret; } gchar *processor_describe(GSList * processors) { return processor_describe_by_counting_names(processors); } gchar *processor_meta(GSList * processors) { gchar *meta_soc = processor_name(processors); gchar *meta_cpu_desc = processor_describe(processors); gchar *meta_cpu_topo = processor_describe_default(processors); gchar *meta_freq_desc = processor_frequency_desc(processors); gchar *meta_clocks = clocks_summary(processors); gchar *meta_caches = caches_summary(processors); gchar *ret = NULL; UNKIFNULL(meta_cpu_desc); ret = g_strdup_printf("[%s]\n" "%s=%s\n" "%s=%s\n" "%s=%s\n" "%s=%s\n" "%s" "%s", _("SOC/Package"), _("Name"), meta_soc, _("Description"), meta_cpu_desc, _("Topology"), meta_cpu_topo, _("Logical CPU Config"), meta_freq_desc, meta_clocks, meta_caches ); g_free(meta_soc); g_free(meta_cpu_desc); g_free(meta_cpu_topo); g_free(meta_freq_desc); g_free(meta_clocks); g_free(meta_caches); return ret; } gchar *processor_get_info(GSList * processors) { Processor *processor; gchar *ret, *tmp, *hashkey; gchar *meta; /* becomes owned by more_info? no need to free? */ GSList *l; gchar *icons=g_strdup(""); tmp = g_strdup_printf("$!CPU_META$%s=\n", _("SOC/Package Information") ); meta = processor_meta(processors); moreinfo_add_with_prefix("DEV", "CPU_META", meta); for (l = processors; l; l = l->next) { processor = (Processor *) l->data; icons = h_strdup_cprintf("Icon$CPU%d$cpu%d=processor.svg\n", icons, processor->id, processor->id); tmp = g_strdup_printf("%s$CPU%d$%s=%.2f %s\n", tmp, processor->id, processor->model_name, processor->cpu_mhz, _("MHz")); hashkey = g_strdup_printf("CPU%d", processor->id); moreinfo_add_with_prefix("DEV", hashkey, processor_get_detailed_info(processor)); g_free(hashkey); } ret = g_strdup_printf("[$ShellParam$]\n" "ViewType=1\n" "ColumnTitle$TextValue=%s\n" "ColumnTitle$Value=%s\n" "ColumnTitle$Extra1=%s\n" "ColumnTitle$Extra2=%s\n" "ShowColumnHeaders=true\n" "%s" "[Processors]\n" "%s", _("Device"), _("Frequency"), _("Model"), _("Socket:Core"), icons, tmp); g_free(tmp); g_free(icons); // now here's something fun... struct Info *i = info_unflatten(ret); g_free(ret); ret = info_flatten(i); return ret; } hardinfo2-hardinfo2-1331e88/modules/devices/battery.c000066400000000000000000000340321474767047500224550ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include #include "hardinfo.h" #include "devices.h" const struct { gchar *key, *name; } ups_fields[] = { { "UPS Status", NULL }, { "STATUS", "Status" }, { "TIMELEFT", "Time Left" }, { "LINEV", "Line Voltage" }, { "LOADPCT", "Load Percent" }, { "UPS Battery Information", NULL }, { "BATTV", "Battery Voltage" }, { "BCHARGE", "Battery Charge" }, { "BATTDATE", "Battery Date" }, { "UPS Information", NULL }, { "APCMODEL", "Model" }, { "FIRMWARE", "Firmware Version" }, { "SERIALNO", "Serial Number" }, { "UPSMODE", "UPS Mode" }, { "CABLE", "Cable" }, { "UPSNAME", "UPS Name" }, { "UPS Nominal Values", NULL }, { "NOMINV", "Voltage" }, { "NOMBATTV", "Battery Voltage" }, { "NOMPOWER", "Power" } }; static void __scan_battery_apcupsd(void) { GHashTable *ups_data; FILE *apcaccess; char buffer[512], *apcaccess_path; guint i; apcaccess_path = find_program("apcaccess"); if (apcaccess_path && (apcaccess = popen(apcaccess_path, "r"))) { /* first line isn't important */ if (fgets(buffer, 512, apcaccess)) { /* allocate the key, value hash table */ ups_data = g_hash_table_new(g_str_hash, g_str_equal); /* read up all the apcaccess' output, saving it in the key, value hash table */ while (fgets(buffer, 512, apcaccess)) { buffer[9] = '\0'; g_hash_table_insert(ups_data, g_strdup(g_strstrip(buffer)), g_strdup(g_strstrip(buffer + 10))); } /* builds the ups info string, respecting the field order as found in ups_fields */ for (i = 0; i < G_N_ELEMENTS(ups_fields); i++) { if (!ups_fields[i].name) { /* there's no name: make a group with the key as its name */ battery_list = h_strdup_cprintf("[%s]\n", battery_list, ups_fields[i].key); } else { /* there's a name: adds a line */ const gchar *name = g_hash_table_lookup(ups_data, ups_fields[i].key); battery_list = h_strdup_cprintf("%s=%s\n", battery_list, ups_fields[i].name, name); } } g_hash_table_destroy(ups_data); } pclose(apcaccess); } g_free(apcaccess_path); } static void __scan_battery_acpi(void) { gchar *acpi_path; gchar *present = NULL; gchar *capacity = NULL; gchar *technology = NULL; gchar *voltage = NULL; gchar *model = NULL, *serial = NULL, *type = NULL; gchar *state = NULL, *rate = NULL; gchar *remaining = NULL; gchar *manufacturer = NULL; acpi_path = g_strdup("/proc/acpi/battery"); if (g_file_test(acpi_path, G_FILE_TEST_EXISTS)) { GDir *acpi; if ((acpi = g_dir_open(acpi_path, 0, NULL))) { const gchar *entry; while ((entry = g_dir_read_name(acpi))) { gchar *path = g_strdup_printf("%s/%s/info", acpi_path, entry); FILE *f; gchar buffer[256]; gdouble charge_rate = 1.0; f = fopen(path, "r"); g_free(path); if (!f) goto cleanup; while (fgets(buffer, 256, f)) { gchar **tmp = g_strsplit(buffer, ":", 2); GET_STR("present", present); GET_STR("design capacity", capacity); GET_STR("battery technology", technology); GET_STR("design voltage", voltage); GET_STR("model number", model); GET_STR("serial number", serial); GET_STR("battery type", type); GET_STR("OEM info", manufacturer); g_strfreev(tmp); } fclose(f); path = g_strdup_printf("%s/%s/state", acpi_path, entry); f = fopen(path, "r"); g_free(path); if (!f) goto cleanup; while (fgets(buffer, 256, f)) { gchar **tmp = g_strsplit(buffer, ":", 2); GET_STR("charging state", state); GET_STR("present rate", rate); GET_STR("remaining capacity", remaining); g_strfreev(tmp); } fclose(f); gchar *tmp = vendor_get_link(manufacturer); g_free(manufacturer); manufacturer = tmp; if (g_str_equal(present, "yes")) { if (remaining && capacity) charge_rate = atof(remaining) / atof(capacity); else charge_rate = 0; battery_list = h_strdup_cprintf(_("\n[Battery: %s]\n" "State=%s (load: %s)\n" "Capacity=%s / %s (%.2f%%)\n" "Battery Technology=%s (%s)\n" "Manufacturer=%s\n" "Model Number=%s\n" "Serial Number=%s\n"), battery_list, entry, state, rate, remaining, capacity, charge_rate * 100.0, technology, type, manufacturer, model, serial); } cleanup: g_free(present); g_free(capacity); g_free(technology); g_free(type); g_free(model); g_free(serial); g_free(state); g_free(remaining); g_free(rate); g_free(manufacturer); present = capacity = technology = type = \ model = serial = state = remaining = rate = manufacturer = NULL; } g_dir_close(acpi); } } g_free(acpi_path); } static gchar * read_contents(const gchar *base, const gchar *key) { gchar *value; gchar *path; path = g_strdup_printf("%s/%s", base, key); if (!path) return NULL; if (!g_file_get_contents(path, &value, NULL, NULL)) { g_free(path); return NULL; } g_free(path); return g_strchomp(value); } static void __scan_battery_sysfs_add_battery(const gchar *name) { gchar *path = g_strdup_printf("/sys/class/power_supply/%s", name); gchar *status, *capacity, *capacity_level, *technology, *manufacturer; gchar *model_name, *serial_number, *charge_full_design=NULL, *charge_full=NULL; gchar *voltage_min_design=NULL,*energy_full_design=NULL; float full_design=-1.0,full_current=-1.0,voltage=-1.0; unsigned long l; if (!path) return; if(name[0]=='A' || strstr(name,"macsmc-ac")){//AC Supply status=read_contents(path, "online"); if(status==NULL) status=g_strdup("1"); if(!strcmp(status,"1")) { g_free(status); status=g_strdup("Attached"); }else{ g_free(powerstate);powerstate=g_strdup("BAT"); g_free(status);status=g_strdup("Not attached"); } battery_list = h_strdup_cprintf(_("\n[AC Power Supply: %s]\n" "Online=%s\n" "AC Power Type=%s\n" ), battery_list, name, status, read_contents(path, "type") ); g_free(status); } if((name[0]=='B') || strstr(name,"CMB") || strstr(name,"macsmc-battery")){//Battery status = read_contents(path, "status"); capacity = read_contents(path, "capacity"); capacity_level = read_contents(path, "capacity_level"); technology = read_contents(path, "technology"); manufacturer = read_contents(path, "manufacturer"); model_name = read_contents(path, "model_name"); serial_number = read_contents(path, "serial_number"); energy_full_design = read_contents(path, "energy_full_design"); charge_full_design = read_contents(path, "charge_full_design"); charge_full = read_contents(path, "charge_full"); voltage_min_design = read_contents(path, "voltage_min_design"); if(voltage_min_design) if(sscanf(voltage_min_design, "%lu", &l)==1) voltage=(float)l/1000000.0;//uV->V if(!charge_full_design && energy_full_design) if(sscanf(energy_full_design, "%lu", &l)==1) full_design=(float)l/(voltage>0?voltage*1000000.0:-1.0);//uWh->Ah if(charge_full_design) if(sscanf(charge_full_design, "%lu", &l)==1) full_design=(float)l/1000000.0;//uAh->Ah if(charge_full) if(sscanf(charge_full, "%lu", &l)==1) full_current=(float)l/1000000.0;//uAh->Ah battery_list = h_strdup_cprintf(_("\n[Battery: %s]\n" "State=%s\n" "Capacity=%s / %s\n" "Battery Health=%.0f %%\n" "Design Full Energy=%.3f Wh\n" "Current Full Energy=%.3f Wh\n" "Design Full Capacity=%.3f Ah\n" "Current Full Capacity=%.3f Ah\n" "Voltage Design=%.3f V\n" "Battery Technology=%s\n" "Manufacturer=%s\n" "Model Number=%s\n" "Serial Number=%s\n"), battery_list, name, status, capacity, capacity_level, full_design>0?(full_current*100.0)/full_design:-1, voltage>0?full_design*voltage:-1, voltage>0?full_current*voltage:-1, full_design, full_current, voltage, technology, manufacturer, model_name, serial_number); if(!strcmp(status,"Discharging")) { g_free(powerstate);powerstate=g_strdup("BAT"); } free(voltage_min_design); free(energy_full_design); free(charge_full_design); free(charge_full); free(status); free(capacity); free(capacity_level); free(technology); free(manufacturer); free(model_name); free(serial_number); } } static void __scan_battery_sysfs(void) { GDir *dir; const gchar *entry; dir = g_dir_open("/sys/class/power_supply", 0, NULL); if (!dir) return; while ((entry = g_dir_read_name(dir))) { __scan_battery_sysfs_add_battery(entry); } g_dir_close(dir); } static void __scan_battery_apm(void) { FILE *procapm; static char *sremaining = NULL, *stotal = NULL; static unsigned int last_time = 0; static int percentage = 0; const char *ac_status[] = { "Battery", "AC Power", "Charging" }; int ac_bat; char apm_bios_ver[16], apm_drv_ver[16]; char trash[10]; if ((procapm = fopen("/proc/apm", "r"))) { int old_percentage = percentage; int c=fscanf(procapm, "%s %s %s 0x%x %s %s %d%%", apm_drv_ver, apm_bios_ver, trash, &ac_bat, trash, trash, &percentage); fclose(procapm); if(c!=7) return; if (last_time == 0) { last_time = time(NULL); sremaining = stotal = NULL; } if (old_percentage - percentage > 0) { if (sremaining && stotal) { g_free(sremaining); g_free(stotal); } int secs_remaining = (time(NULL) - last_time) * percentage / (old_percentage - percentage); sremaining = seconds_to_string(secs_remaining); stotal = seconds_to_string((secs_remaining * 100) / percentage); last_time = time(NULL); } } else { return; } if (stotal && sremaining) { battery_list = h_strdup_cprintf(_("\n[Battery (APM)]\n" "Charge=%d%%\n" "Remaining Charge=%s of %s\n" "Using=%s\n" "APM driver version=%s\n" "APM BIOS version=%s\n"), battery_list, percentage, sremaining, stotal, ac_status[ac_bat], apm_drv_ver, apm_bios_ver); } else { battery_list = h_strdup_cprintf(_("\n[Battery (APM)]\n" "Charge=%d%%\n" "Using=%s\n" "APM driver version=%s\n" "APM BIOS version=%s\n"), battery_list, percentage, ac_status[ac_bat], apm_drv_ver, apm_bios_ver); } } void scan_battery_do(void) { g_free(powerstate);powerstate=g_strdup("AC"); g_free(battery_list); battery_list = g_strdup(""); __scan_battery_sysfs(); __scan_battery_acpi(); __scan_battery_apm(); __scan_battery_apcupsd(); if (*battery_list == '\0') { g_free(battery_list); battery_list = g_strdup_printf("[Power Status]\n Power State=%s\n%s",powerstate, _("[No batteries]\nNo batteries found on this system=\n")); }else{ gchar *t=battery_list; battery_list = g_strdup_printf("[Power Status]\n Power State=%s\n%s",powerstate,t); g_free(t); } } hardinfo2-hardinfo2-1331e88/modules/devices/devicetree.c000066400000000000000000000214421474767047500231230ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ /* * Device Tree support by Burt P. * Sources: * http://elinux.org/Device_Tree_Usage * http://elinux.org/Device_Tree_Mysteries */ #include #include #include #include "hardinfo.h" #include "devices.h" #include "cpu_util.h" #include "dt_util.h" #include "appf.h" gchar *dtree_info = NULL; const char *dtree_mem_str = NULL; /* used by memory devices when nothing else is available */ /* These should really go into CMakeLists.txt */ #if defined(__arm__) #include "devicetree/rpi_data.c" #elif defined(__powerpc__) #include "devicetree/pmac_data.c" #endif static gchar *get_node(dtr *dt, char *np) { gchar *nodes = NULL, *props = NULL, *ret = NULL; gchar *tmp = NULL, *pstr = NULL, *lstr = NULL; gchar *dir_path; const gchar *fn; GDir *dir; dtr_obj *node, *child; props = g_strdup_printf("[%s]\n", _("Properties") ); nodes = g_strdup_printf("[%s]\n", _("Children") ); node = dtr_obj_read(dt, np); dir_path = dtr_obj_full_path(node); dir = g_dir_open(dir_path, 0 , NULL); if (dir) { while((fn = g_dir_read_name(dir)) != NULL) { child = dtr_get_prop_obj(dt, node, fn); pstr = hardinfo_clean_value(dtr_str(child), 1); lstr = hardinfo_clean_label(fn, 0); if (dtr_obj_type(child) == DT_NODE) { tmp = g_strdup_printf("%s%s=%s\n", nodes, lstr, pstr); g_free(nodes); nodes = tmp; } else { tmp = g_strdup_printf("%s%s=%s\n", props, lstr, pstr); g_free(props); props = tmp; } dtr_obj_free(child); g_free(pstr); g_free(lstr); } } g_dir_close(dir); g_free(dir_path); lstr = dtr_obj_alias(node); pstr = dtr_obj_symbol(node); ret = g_strdup_printf("[%s]\n" "%s=%s\n" "%s=%s\n" "%s=%s\n" "%s%s", _("Node"), _("Node Path"), dtr_obj_path(node), _("Alias"), (lstr != NULL) ? lstr : _("(None)"), _("Symbol"), (pstr != NULL) ? pstr : _("(None)"), props, nodes); dtr_obj_free(node); g_free(props); g_free(nodes); return ret; } /* different from dtr_get_string() in that it re-uses the existing dt */ static char *get_dt_string(dtr *dt, char *path, gboolean decode) { char *ret; if (decode) { dtr_obj *obj = dtr_get_prop_obj(dt, NULL, path); ret = dtr_str(obj); dtr_obj_free(obj); } else { ret = dtr_get_prop_str(dt, NULL, path); } return ret; } static gchar *get_summary(dtr *dt) { char *model = NULL, *compat = NULL; char *ret = NULL; model = get_dt_string(dt, "/model", 0); compat = get_dt_string(dt, "/compatible", 1); UNKIFNULL(model); EMPIFNULL(compat); #if defined(__arm__) /* Expand on the DT information from known machines, like RPi. * RPi stores a revision value in /proc/cpuinfo that can be used * to look up details. This is just a nice place to pull it all * together for DT machines, with a nice fallback. * PPC Macs could be handled this way too. They store * machine identifiers in /proc/cpuinfo. */ if (strstr(model, "Raspberry Pi") || strstr(compat, "raspberrypi")) { gchar *gpu_compat = get_dt_string(dt, "/soc/gpu/compatible", 1); gchar *rpi_details = rpi_board_details(); gchar *basic_info; basic_info = g_strdup_printf( "[%s]\n" "%s=%s\n" "%s=%s\n", _("Platform"), _("Compatible"), compat, _("GPU-compatible"), gpu_compat); if (rpi_details) { ret = g_strconcat(rpi_details, basic_info, NULL); g_free(rpi_details); } else { gchar *serial_number = get_dt_string(dt, "/serial-number", 1); ret = g_strdup_printf( "[%s]\n" "%s=%s\n" "%s=%s\n" "%s=%s\n" "%s", _("Raspberry Pi or Compatible"), _("Model"), model, _("Serial Number"), serial_number, _("RCode"), _("No revision code available; unable to lookup model details."), basic_info); g_free(serial_number); } g_free(gpu_compat); g_free(basic_info); } #endif #if defined(__powerpc__) /* Power Macintosh */ if (strstr(compat, "PowerBook") != NULL || strstr(compat, "MacRISC") != NULL || strstr(compat, "Power Macintosh") != NULL) { gchar *mac_details = ppc_mac_details(); if (mac_details) { gchar *serial_number = get_dt_string(dt, "/serial-number", 1); ret = g_strdup_printf( "%s[%s]\n" "%s=%s\n", mac_details, _("More"), _("Serial Number"), serial_number); free(mac_details); free(serial_number); } } #endif /* fallback */ if (!ret) { gchar *serial_number = get_dt_string(dt, "/serial-number", 1); EMPIFNULL(serial_number); ret = g_strdup_printf( "[%s]\n" "%s=%s\n" "%s=%s\n" "%s=%s\n", _("Board"), _("Model"), model, _("Serial Number"), serial_number, _("Compatible"), compat); free(serial_number); } free(model); free(compat); return ret; } static void mi_add(const char *key, const char *value, int report_details) { gchar *ckey, *rkey; ckey = hardinfo_clean_label(key, 0); rkey = g_strdup_printf("%s:%s", "DTREE", ckey); dtree_info = h_strdup_cprintf("$%s%s$%s=\n", dtree_info, (report_details) ? "!" : "", rkey, ckey); moreinfo_add_with_prefix("DEV", rkey, g_strdup(value)); g_free(ckey); g_free(rkey); } static void add_keys(dtr *dt, char *np) { gchar *dir_path, *dt_path; gchar *ftmp, *ntmp; gchar *n_info; const gchar *fn; GDir *dir; dtr_obj *obj; dir_path = g_strdup_printf("%s/%s", dtr_base_path(dt), np); dir = g_dir_open(dir_path, 0 , NULL); if(!dir){ /* add self */ obj = dtr_obj_read(dt, np); dt_path = dtr_obj_path(obj); n_info = get_node(dt, dt_path); mi_add(dt_path, n_info, 0); }else { //dir while((fn = g_dir_read_name(dir)) != NULL) { ftmp = g_strdup_printf("%s/%s", dir_path, fn); if ( g_file_test(ftmp, G_FILE_TEST_IS_DIR) ) { if (strcmp(np, "/") == 0) ntmp = g_strdup_printf("/%s", fn); else ntmp = g_strdup_printf("%s/%s", np, fn); if(strlen(ntmp)>0) add_keys(dt, ntmp); g_free(ntmp); } g_free(ftmp); } g_dir_close(dir); } g_free(dir_path); } static char *msg_section(dtr *dt, int dump) { gchar *aslbl = NULL; gchar *messages = dtr_messages(dt); gchar *ret = g_strdup_printf("[%s]", _("Messages")); gchar **lines = g_strsplit(messages, "\n", 0); int i = 0; while(lines[i] != NULL) { aslbl = hardinfo_clean_label(lines[i], 0); ret = appfnl(ret, "%s=", aslbl); g_free(aslbl); i++; } g_strfreev(lines); if (dump) printf("%s", messages); g_free(messages); return ret; } void __scan_dtree() { dtr *dt = dtr_new(NULL); gchar *summary = get_summary(dt); gchar *maps = dtr_maps_info(dt); gchar *messages = NULL; dtree_info = g_strdup("[Device Tree]\n"); mi_add("Summary", summary, 1); mi_add("Maps", maps, 0); if(dtr_was_found(dt)) add_keys(dt, "/"); messages = msg_section(dt, 0); mi_add("Messages", messages, 0); g_free(summary); g_free(maps); g_free(messages); dtr_free(dt); } hardinfo2-hardinfo2-1331e88/modules/devices/devicetree/000077500000000000000000000000001474767047500227545ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/modules/devices/devicetree/pmac_data.c000066400000000000000000000056231474767047500250370ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "cpu_util.h" /* for PROC_CPUINFO */ static gchar *ppc_mac_details(void) { int i = 0; gchar *ret = NULL; gchar *platform = NULL; gchar *model = NULL; gchar *machine = NULL; gchar *motherboard = NULL; gchar *detected_as = NULL; gchar *pmac_flags = NULL; gchar *l2_cache = NULL; gchar *pmac_gen = NULL; FILE *cpuinfo; gchar buffer[128]; cpuinfo = fopen(PROC_CPUINFO, "r"); if (!cpuinfo) return NULL; while (fgets(buffer, 128, cpuinfo)) { gchar **tmp = g_strsplit(buffer, ":", 2); if (tmp[1] == NULL) { g_strfreev(tmp); continue; } tmp[0] = g_strstrip(tmp[0]); tmp[1] = g_strstrip(tmp[1]); get_str("platform", platform); get_str("model", model); get_str("machine", machine); get_str("motherboard", motherboard); get_str("detected as", detected_as); get_str("pmac flags", pmac_flags); get_str("L2 cache", l2_cache); get_str("pmac-generation", pmac_gen); } fclose(cpuinfo); if (machine == NULL) goto pmd_exit; UNKIFNULL(platform); UNKIFNULL(model); UNKIFNULL(motherboard); UNKIFNULL(detected_as); UNKIFNULL(pmac_flags); UNKIFNULL(l2_cache); UNKIFNULL(pmac_gen); ret = g_strdup_printf("[%s]\n" "%s=%s\n" "%s=%s\n" "%s=%s\n" "%s=%s\n" "%s=%s\n" "%s=%s\n" "%s=%s\n" "%s=%s\n", _("Apple Power Macintosh"), _("Platform"), platform, _("Model"), model, _("Machine"), machine, _("Motherboard"), motherboard, _("Detected as"), detected_as, _("PMAC Flags"), pmac_flags, _("L2 Cache"), l2_cache, _("PMAC Generation"), pmac_gen ); pmd_exit: g_free(platform); g_free(model); g_free(machine); g_free(motherboard); g_free(detected_as); g_free(pmac_flags); g_free(l2_cache); g_free(pmac_gen); return ret; } hardinfo2-hardinfo2-1331e88/modules/devices/devicetree/rpi_data.c000066400000000000000000000206211474767047500247040ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2007 L. A. F. Pereira * This file from: rpiz - https://github.com/bp0/rpiz * Copyright (C) 2017 Burt P. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ static char unk[] = "(Unknown)"; /* information table from: http://elinux.org/RPi_HardwareHistory */ typedef struct { char *value, *intro, *model, *pcb, *mem, *mfg, *soc; } RaspberryPiBoard; static const RaspberryPiBoard rpi_boardinfo[] = { /* Value Introduction Model Name PCB rev. Memory(spec) Manufacturer SOC(spec) * * Raspberry Pi %s */ { unk, unk, unk, unk, unk, unk, NULL }, { "Beta", "Q1 2012", "B (Beta)", unk, "256 MB", "(Beta board)", NULL }, { "0002", "Q1 2012", "B", "1.0", "256 MB", unk, "BCM2835" }, { "0003", "Q3 2012", "B (ECN0001)", "1.0", "256 MB", "(Fuses mod and D14 removed)", NULL }, { "0004", "Q3 2012", "B", "2.0", "256 MB", "Sony", NULL }, { "0005", "Q4 2012", "B", "2.0", "256 MB", "Qisda", NULL }, { "0006", "Q4 2012", "B", "2.0", "256 MB", "Egoman", NULL }, { "0007", "Q1 2013", "A", "2.0", "256 MB", "Egoman", NULL }, { "0008", "Q1 2013", "A", "2.0", "256 MB", "Sony", NULL }, { "0009", "Q1 2013", "A", "2.0", "256 MB", "Qisda", NULL }, { "000d", "Q4 2012", "B", "2.0", "512 MB", "Egoman", NULL }, { "000e", "Q4 2012", "B", "2.0", "512 MB", "Sony", NULL }, { "000f", "Q4 2012", "B", "2.0", "512 MB", "Qisda", NULL }, { "0010", "Q3 2014", "B+", "1.0", "512 MB", "Sony", NULL }, { "0011", "Q2 2014", "Compute Module 1", "1.0", "512 MB", "Sony", NULL }, { "0012", "Q4 2014", "A+", "1.1", "256 MB", "Sony", NULL }, { "0013", "Q1 2015", "B+", "1.2", "512 MB", unk, NULL }, { "0014", "Q2 2014", "Compute Module 1", "1.0", "512 MB", "Embest", NULL }, { "0015", unk, "A+", "1.1", "256 MB/512 MB", "Embest", NULL }, { "a01040", unk, "2 Model B", "1.0", "1024 MB DDR2", "Sony", "BCM2836" }, { "a01041", "Q1 2015", "2 Model B", "1.1", "1024 MB DDR2", "Sony", "BCM2836" }, { "a21041", "Q1 2015", "2 Model B", "1.1", "1024 MB DDR2", "Embest", "BCM2836" }, { "a22042", "Q3 2016", "2 Model B", "1.2", "1024 MB DDR2", "Embest", "BCM2837" }, /* (with BCM2837) */ { "900021", "Q3 2016", "A+", "1.1", "512 MB", "Sony", NULL }, { "900032", "Q2 2016?", "B+", "1.2", "512 MB", "Sony", NULL }, { "900092", "Q4 2015", "Zero", "1.2", "512 MB", "Sony", NULL }, { "900093", "Q2 2016", "Zero", "1.3", "512 MB", "Sony", NULL }, { "920093", "Q4 2016?", "Zero", "1.3", "512 MB", "Embest", NULL }, { "9000c1", "Q1 2017", "Zero W", "1.1", "512 MB", "Sony", NULL }, { "a02082", "Q1 2016", "3 Model B", "1.2", "1024 MB DDR2", "Sony", "BCM2837" }, { "a020a0", "Q1 2017", "Compute Module 3 or CM3 Lite", "1.0", "1024 MB DDR2", "Sony", NULL }, { "a22082", "Q1 2016", "3 Model B", "1.2", "1024 MB DDR2", "Embest", "BCM2837" }, { "a32082", "Q4 2016", "3 Model B", "1.2", "1024 MB DDR2", "Sony Japan", NULL }, { "a020d3", "Q1 2018", "3 Model B+", "1.3", "1024 MB DDR2", "Sony", "BCM2837" }, { "9020e0", "Q4 2018", "3 Model A+", "1.0", "512 MB DDR2", "Sony", "BCM2837" }, { "a03111", "Q2 2019", "4 Model B", "1.0", "1024 MB DDR4", "Sony", "BCM2838" }, { "b03111", "Q2 2019", "4 Model B", "1.0", "2048 MB DDR4", "Sony", "BCM2838" }, { "c03111", "Q2 2019", "4 Model B", "1.1", "4096 MB DDR4", "Sony", "BCM2838" }, { "c03114", "Q2 2020", "4 Model B", "1.4", "8192 MB DDR4", "Sony", "BCM2838" }, { NULL, NULL, NULL, NULL, NULL, NULL, NULL } }; /* return number of chars to skip */ static int rpi_ov_check(const char *r_code) { /* sources differ. prefix is either 1000... or just 1... */ //if (strncmp(r, "1000", 4) == 0) // return 4; if (strncmp(r_code, "1", 1) == 0) return 1; return 0; } static int rpi_code_match(const char* code0, const char* code1) { int c0, c1; if (code0 == NULL || code1 == NULL) return 0; c0 = strtol(code0, NULL, 16); c1 = strtol(code1, NULL, 16); if (c0 && c1) return (c0 == c1) ? 1 : 0; else return (strcmp(code0, code1) == 0) ? 1 : 0; } static int rpi_find_board(const char *r_code) { int i = 0; char *r = (char*)r_code; if (r_code == NULL) return 0; /* ignore the overvolt prefix */ r += rpi_ov_check(r_code); while (rpi_boardinfo[i].value != NULL) { if (rpi_code_match(r, rpi_boardinfo[i].value)) return i; i++; } return 0; } /* ------------------------- */ #include "cpu_util.h" /* for PROC_CPUINFO */ static gchar *rpi_board_details(void) { int i = 0; gchar *ret = NULL; gchar *soc = NULL; gchar *serial = NULL; gchar *revision = NULL; int ov = 0; FILE *cpuinfo; gchar buffer[128]; cpuinfo = fopen(PROC_CPUINFO, "r"); if (!cpuinfo) return NULL; while (fgets(buffer, 128, cpuinfo)) { gchar **tmp = g_strsplit(buffer, ":", 2); if (tmp[1] == NULL) { g_strfreev(tmp); continue; } tmp[0] = g_strstrip(tmp[0]); tmp[1] = g_strstrip(tmp[1]); get_str("Revision", revision); get_str("Hardware", soc); get_str("Serial", serial); } fclose(cpuinfo); if (revision == NULL || soc == NULL) { g_free(soc); g_free(revision); return NULL; } ov = rpi_ov_check(revision); i = rpi_find_board(revision); ret = g_strdup_printf("[%s]\n" "%s=%s %s\n" "%s=%s\n" "%s=%s\n" "%s=%s\n" "%s=%s\n" "%s=%s\n" "%s=%s\n" "%s=%s\n" "%s=%s\n", _("Raspberry Pi"), _("Board Name"), _("Raspberry Pi"), rpi_boardinfo[i].model, _("PCB Revision"), rpi_boardinfo[i].pcb, _("Introduction"), rpi_boardinfo[i].intro, _("Manufacturer"), rpi_boardinfo[i].mfg, _("RCode"), (rpi_boardinfo[i].value != unk) ? rpi_boardinfo[i].value : revision, _("SOC (spec)"), rpi_boardinfo[i].soc, _("Memory (spec)"), rpi_boardinfo[i].mem, _("Serial Number"), serial, _("Permanent overvolt bit"), (ov) ? C_("rpi-ov-bit", "Set") : C_("rpi-ov-bit", "Not set") ); g_free(soc); g_free(revision); if (rpi_boardinfo[i].mem) dtree_mem_str = rpi_boardinfo[i].mem; return ret; } hardinfo2-hardinfo2-1331e88/modules/devices/dmi.c000066400000000000000000000124351474767047500215570ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ /* * DMI support based on patch by Stewart Adam */ #include #include #include "devices.h" #include "dmi_util.h" typedef struct _DMIInfo DMIInfo; struct _DMIInfo { const gchar *name; const gchar *id_str; int group; gboolean maybe_vendor; }; DMIInfo dmi_info_table[] = { { N_("Product"), NULL, 1 }, { N_("Name"), "system-product-name", 0 }, { N_("Family"), "system-product-family", 0 }, { N_("Vendor"), "system-manufacturer", 0, TRUE }, { N_("Version"), "system-version", 0 }, { N_("Serial Number"), "system-serial-number", 0 }, { N_("SKU"), "system-sku", 0 }, { N_("BIOS"), NULL, 1 }, { N_("Date"), "bios-release-date", 0 }, { N_("Vendor"), "bios-vendor", 0, TRUE }, { N_("Version"), "bios-version", 0 }, { N_("Board"), NULL, 1 }, { N_("Name"), "baseboard-product-name", 0 }, { N_("Vendor"), "baseboard-manufacturer", 0, TRUE }, { N_("Version"), "baseboard-version", 0 }, { N_("Serial Number"), "baseboard-serial-number", 0 }, { N_("Asset Tag"), "baseboard-asset-tag", 0 }, { N_("Chassis"), NULL, 1 }, { N_("Vendor"), "chassis-manufacturer", 0, TRUE }, { N_("Type"), "chassis-type", 0 }, { N_("Version"), "chassis-version", 0 }, { N_("Serial Number"), "chassis-serial-number", 0 }, { N_("Asset Tag"), "chassis-asset-tag", 0 }, }; gchar *dmi_info = NULL; static void add_to_moreinfo(const char *group, const char *key, char *value) { char *new_key = g_strconcat("DMI:", group, ":", key, NULL); moreinfo_add_with_prefix("DEV", new_key, g_strdup(g_strstrip(value))); } gboolean dmi_get_info(void) { const gchar *group = NULL; DMIInfo *info; gboolean dmi_succeeded = FALSE; guint i; gchar *value=NULL; if (dmi_info) { g_free(dmi_info); dmi_info = NULL; } for (i = 0; i < G_N_ELEMENTS(dmi_info_table); i++) { info = &dmi_info_table[i]; if (info->group) { group = info->name; dmi_info = h_strdup_cprintf("[%s]\n", dmi_info, _(info->name)); } else if (group && info->id_str) { int state = 3; if (strcmp(info->id_str, "chassis-type") == 0) { value = dmi_chassis_type_str(-1, 1); if (value == NULL) state = (getuid() == 0) ? 0 : 1; } else { switch (dmi_str_status(info->id_str)) { case 0: value = NULL; state = (getuid() == 0) ? 0 : 1; break; case -1: state = 2; value = dmi_get_str_abs(info->id_str); break; case 1: value = dmi_get_str_abs(info->id_str); break; } } switch (state) { case 0: /* no value, root */ case 1: /* no value, no root */ dmi_info = h_strdup_cprintf("%s=%s\n", dmi_info, _(info->name), _("(Not available)")); break; /* case 1: // no value, no root dmi_info = h_strdup_cprintf("%s=%s\n", dmi_info, _(info->name), _("(Not available; Perhaps try " "running hardinfo2 as root.)")); break;*/ case 2: /* ignored value */ if (params.markup_ok) dmi_info = h_strdup_cprintf("%s=%s\n", dmi_info, _(info->name), value); else dmi_info = h_strdup_cprintf("%s=[X]\"%s\"\n", dmi_info, _(info->name), value); break; case 3: /* good value */ { dmi_info = h_strdup_cprintf("%s%s=%s\n", dmi_info, info->maybe_vendor ? "$^$" : "", _(info->name), value); add_to_moreinfo(group, info->name, value); dmi_succeeded = TRUE; break; } } } } if (!dmi_succeeded) { g_free(dmi_info); dmi_info = NULL; } return dmi_succeeded; } void __scan_dmi(void) { gboolean dmi_ok; dmi_ok = dmi_get_info(); if (!dmi_ok) { dmi_info = g_strdup_printf("[%s]\n%s=\n",_("DMI Unavailable"), _("DMI is not available. Perhaps this platform does not provide DMI.")); } } hardinfo2-hardinfo2-1331e88/modules/devices/dmi_memory.c000066400000000000000000001042341474767047500231460ustar00rootroot00000000000000/* * HardInfo2 - System information and benchmark * Copyright (C) 2003-2019 L. A. F. Pereira * Copyright (C) 2019 Burt P. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #define _GNU_SOURCE #include "hardinfo.h" #include #include "devices.h" #include "vendor.h" #include #include "spd-decode.h" #include "util_sysobj.h" /* for appfsp() */ extern const char *dtree_mem_str; /* in devicetree.c */ /* in monitors.c */ gchar **get_output_lines(const char *cmd_line); gboolean no_handles = FALSE; gboolean sketchy_info = FALSE; int dmi_ram_types = 0; /* bits using enum RamType */ /* strings from dmidecode */ static const char empty_mem_str[] = "No Module Installed"; static const char unknown_mfgr_str[] = ""; static const char mobo_location[] = "System Board Or Motherboard"; static const char mobo_shorter[] = "Mainboard"; static const dmi_type dta = 16; /* array */ static const dmi_type dtm = 17; /* socket */ static const char mem_icon[] = "memory.svg"; static const char array_icon[] = "computer.svg"; static const char empty_icon[] = "module.svg"; dmi_mem_size dmi_read_memory_str_to_MiB(const char *memstr) { dmi_mem_size ret = 0, v = 0; char l[7] = ""; /* dmidecode units: "bytes", "kB", "MB", "GB", "TB" */ int mc = sscanf(memstr, "%u %6s", &v, l); if (mc == 2) { if (SEQ(l, "TB")) ret = v * 1024 * 1024; else if (SEQ(l, "GB")) ret = v * 1024; else if (SEQ(l, "MB")) ret = v; else if (SEQ(l, "kB")) { ret = v / 1024; } else if (SEQ(l, "bytes")) { ret = v / (1024 * 1024); } } return ret; } typedef struct { dmi_handle array_handle; gboolean is_main_memory; gchar *locator; gchar *use; gchar *ecc; int devs; int devs_populated; dmi_mem_size size_MiB_max; dmi_mem_size size_MiB_present; dmi_mem_size size_MiB_rom; int ram_types; /* bits using enum RamType */ } dmi_mem_array; dmi_mem_array *dmi_mem_array_new(dmi_handle h) { dmi_mem_array *s = g_new0(dmi_mem_array, 1); s->array_handle = h; s->use = dmidecode_match("Use", &dta, &h); if (SEQ(s->use, "System Memory")) s->is_main_memory = TRUE; s->ecc = dmidecode_match("Error Correction Type", &dta, &h); s->locator = dmidecode_match("Location", &dta, &h); if (SEQ(s->locator, mobo_location)) { g_free(s->locator); s->locator = g_strdup(mobo_shorter); s->is_main_memory = TRUE; } gchar *array_max_size = dmidecode_match("Maximum Capacity", &dta, &h); if (array_max_size) { s->size_MiB_max = dmi_read_memory_str_to_MiB(array_max_size); g_free(array_max_size); } gchar *array_devs = dmidecode_match("Number Of Devices", &dta, &h); if (array_devs) { s->devs = strtol(array_devs, NULL, 10); g_free(array_devs); } return s; } void dmi_mem_array_free(dmi_mem_array* s) { if (s) { g_free(s->locator); g_free(s->use); g_free(s->ecc); g_free(s); } } typedef struct dmi_mem_socket { dmi_handle handle; dmi_handle array_handle; gboolean populated; gchar *locator; gchar *full_locator; gchar *short_locator; gchar *size_str; dmi_mem_size size_MiB; gboolean is_not_ram; /* maybe is_rom, maybe elsewise, but don't include in RAM total */ gboolean is_rom; gchar *type; gchar *type_detail; int ram_type; /* using enum RamType */ gchar *array_locator; gchar *bank_locator; gchar *rank; gchar *form_factor; gchar *speed_str; gchar *configured_clock_str; gchar *voltage_min_str; gchar *voltage_max_str; gchar *voltage_conf_str; gchar *partno; gchar *data_width; gchar *total_width; gchar *mfgr; gboolean has_jedec_mfg_id; int mfgr_bank, mfgr_index; const Vendor *vendor; spd_data *spd; } dmi_mem_socket; typedef struct { gboolean empty; GSList *arrays; GSList *sockets; GSList *spd; dmi_mem_size spd_size_MiB; int spd_ram_types; /* bits using enum RamType */ dmi_mem_size system_memory_MiB; int system_memory_ram_types; /* bits using enum RamType */ /* ->short_locator is unique among *sockets */ gboolean unique_short_locators; } dmi_mem; gboolean null_if_empty(gchar **str) { if (str && *str) { gchar *p = *str; while(p && *p) { if (isalnum(*p)) return FALSE; p++; } *str = NULL; } return TRUE; } dmi_mem_socket *dmi_mem_socket_new(dmi_handle h) { dmi_mem_socket *s = g_new0(dmi_mem_socket, 1); s->handle = h; s->locator = dmidecode_match("Locator", &dtm, &h); s->size_str = dmidecode_match("Size", &dtm, &h); if (s->size_str) s->size_MiB = dmi_read_memory_str_to_MiB(s->size_str); s->bank_locator = dmidecode_match("Bank Locator", &dtm, &h); STR_IGNORE(s->bank_locator, "Unknown"); STR_IGNORE(s->bank_locator, "Not Specified"); null_if_empty(&s->bank_locator); gchar *ah = dmidecode_match("Array Handle", &dtm, &h); STR_IGNORE(ah, "Unknown"); if (ah) { s->array_handle = strtol(ah, NULL, 16); g_free(ah); s->array_locator = dmidecode_match("Location", &dta, &s->array_handle); if (SEQ(s->array_locator, mobo_location)) { g_free(s->array_locator); s->array_locator = g_strdup(mobo_shorter); } } gchar *ah_str = g_strdup_printf("0x%"PRIx32, s->array_handle); gchar *h_str = g_strdup_printf("0x%"PRIx32, s->handle); s->short_locator = g_strdup_printf("%s \u27A4 %s", s->array_locator ? s->array_locator : ah_str, s->locator ? s->locator : h_str); if (s->bank_locator) s->full_locator = g_strdup_printf("%s \u27A4 %s \u27A4 %s", s->array_locator ? s->array_locator : ah_str, s->bank_locator, s->locator ? s->locator : h_str); else s->full_locator = g_strdup(s->short_locator); g_free(ah_str); g_free(h_str); if (!g_str_has_prefix(s->size_str, empty_mem_str)) { s->populated = 1; s->form_factor = dmidecode_match("Form Factor", &dtm, &h); s->type = dmidecode_match("Type", &dtm, &h); STR_IGNORE(s->type, "Unknown"); if (SEQ(s->type, "Flash") || SEQ(s->type, "ROM")) { s->is_rom = TRUE; s->is_not_ram = TRUE; } else { if (SEQ(s->type, "DDR")) s->ram_type = DDR_SDRAM; if (SEQ(s->type, "DDR2")) s->ram_type = DDR2_SDRAM; if (SEQ(s->type, "DDR3")) s->ram_type = DDR3_SDRAM; if (SEQ(s->type, "DDR4")) s->ram_type = DDR4_SDRAM; if (SEQ(s->type, "DDR5")) s->ram_type = DDR5_SDRAM; if (SEQ(s->type, "DRDRAM")) s->ram_type = DIRECT_RAMBUS; if (SEQ(s->type, "RDRAM")) s->ram_type = RAMBUS; if (s->ram_type) dmi_ram_types |= (1 << (s->ram_type-1)); } s->type_detail = dmidecode_match("Type Detail", &dtm, &h); STR_IGNORE(s->type_detail, "None"); s->speed_str = dmidecode_match("Speed", &dtm, &h); s->configured_clock_str = dmidecode_match("Configured Clock Speed", &dtm, &h); if (!s->configured_clock_str) s->configured_clock_str = dmidecode_match("Configured Memory Speed", &dtm, &h); s->voltage_min_str = dmidecode_match("Minimum Voltage", &dtm, &h); s->voltage_max_str = dmidecode_match("Maximum Voltage", &dtm, &h); s->voltage_conf_str = dmidecode_match("Configured Voltage", &dtm, &h); STR_IGNORE(s->voltage_min_str, "Unknown"); STR_IGNORE(s->voltage_max_str, "Unknown"); STR_IGNORE(s->voltage_conf_str, "Unknown"); s->partno = dmidecode_match("Part Number", &dtm, &h); STR_IGNORE(s->partno, "PartNum0"); STR_IGNORE(s->partno, "PartNum1"); STR_IGNORE(s->partno, "PartNum2"); STR_IGNORE(s->partno, "PartNum3"); null_if_empty(&s->partno); s->data_width = dmidecode_match("Data Width", &dtm, &h); s->total_width = dmidecode_match("Total Width", &dtm, &h); s->rank = dmidecode_match("Rank", &dtm, &h); s->mfgr = dmidecode_match("Manufacturer", &dtm, &h); STR_IGNORE(s->mfgr, unknown_mfgr_str); STR_IGNORE(s->mfgr, "Manufacturer0"); STR_IGNORE(s->mfgr, "Manufacturer1"); STR_IGNORE(s->mfgr, "Manufacturer2"); STR_IGNORE(s->mfgr, "Manufacturer3"); STR_IGNORE(s->mfgr, "Unknown"); null_if_empty(&s->mfgr); gchar *mfgr_id_str = dmidecode_match("Module Manufacturer ID", &dtm, &h); STR_IGNORE(mfgr_id_str, "Unknown"); if (mfgr_id_str) { static const char dmi_mfg_id_fmt[] = "Bank %d, Hex 0x%02X"; /* from dmidecode.c */ int mc = sscanf(strstr(mfgr_id_str, "Bank"), dmi_mfg_id_fmt, &s->mfgr_bank, &s->mfgr_index); if (mc > 0 && !s->mfgr) { s->has_jedec_mfg_id = TRUE; s->mfgr = g_strdup(JEDEC_MFG_STR(s->mfgr_bank, s->mfgr_index)); } } /*FIXME: Move to SPD if (s->mfgr && !s->has_jedec_mfg_id && strlen(s->mfgr) == 4) { //Some BIOS put the code bytes into the mfgr string // if they don't know the manufacturer. // It's not always reliable, but what is lost // by trying it? if (isxdigit(s->mfgr[0]) && isxdigit(s->mfgr[1]) && isxdigit(s->mfgr[2]) && isxdigit(s->mfgr[3]) ) { int codes = strtol(s->mfgr, NULL, 16); char *mstr = NULL; decode_ddr34_manufacturer(codes >> 8, codes & 0xff, &mstr, &s->mfgr_bank, &s->mfgr_index); s->has_jedec_mfg_id = TRUE; g_free(s->mfgr); s->mfgr = NULL; if (mstr) s->mfgr = g_strdup(mstr); } }*/ s->vendor = vendor_match(s->mfgr, NULL); } return s; } void dmi_mem_socket_free(dmi_mem_socket* s) { if (s) { g_free(s->locator); g_free(s->full_locator); g_free(s->short_locator); g_free(s->size_str); g_free(s->type); g_free(s->type_detail); g_free(s->bank_locator); g_free(s->rank); g_free(s->array_locator); g_free(s->form_factor); g_free(s->speed_str); g_free(s->configured_clock_str); g_free(s->voltage_min_str); g_free(s->voltage_max_str); g_free(s->voltage_conf_str); g_free(s->partno); g_free(s->data_width); g_free(s->total_width); g_free(s->mfgr); g_free(s); } } dmi_mem_array *dmi_mem_find_array(dmi_mem *s, unsigned int handle) { GSList *l = NULL; for(l = s->arrays; l; l = l->next) { dmi_mem_array *a = (dmi_mem_array*)l->data; if (a->array_handle == handle) return a; } return NULL; } static int dmi_spd_match_score(dmi_mem_socket *s, spd_data *e) { int score = 0; if (SEQ(s->partno, e->partno)) score += 20; if (s->size_MiB == e->size_MiB) score += 10; if (s->vendor == e->vendor) score += 5; return score; } /* fill in missing from SPD */ static void dmi_fill_from_spd(dmi_mem_socket *s) { if (!s->spd) return; if (!s->mfgr && s->spd->vendor_str) { s->mfgr = g_strdup(s->spd->vendor_str); s->vendor = s->spd->vendor; } if (!s->has_jedec_mfg_id) { s->mfgr_bank = s->spd->vendor_bank; s->mfgr_index = s->spd->vendor_index; s->has_jedec_mfg_id = TRUE; } //Always true - FIXME //if (!s->partno && s->spd->partno) s->partno = g_strdup(s->spd->partno); if (!s->form_factor && s->spd->form_factor) s->form_factor = g_strdup(s->spd->form_factor); //Always true - FIXME //if (!s->type_detail && s->spd->type_detail) s->type_detail = g_strdup(s->spd->type_detail); } static dmi_mem_size size_of_online_memory_blocks() { gchar *block_size_bytes_str = NULL; dmi_mem_size block_size_bytes = 0; dmi_mem_size ret = 0; if (g_file_get_contents("/sys/devices/system/memory/block_size_bytes", &block_size_bytes_str, NULL, NULL) ) { block_size_bytes = strtoll(block_size_bytes_str, NULL, 16); } if (!block_size_bytes) return 0; const gchar *f = NULL; GDir *d = g_dir_open("/sys/devices/system/memory", 0, NULL); if (!d) return 0; while((f = g_dir_read_name(d))) { gchar *p = g_strdup_printf("/sys/devices/system/memory/%s/online", f); gchar *ol = NULL; if (g_file_get_contents(p, &ol, NULL, NULL) ) { if (1 == strtol(ol, NULL, 0)) { ret += block_size_bytes; } } g_free(ol); g_free(p); } g_dir_close(d); return ret; } dmi_mem *dmi_mem_new() { dmi_mem *m = g_new0(dmi_mem, 1); dmi_handle_list *hla = dmidecode_handles(&dta); if (hla) { unsigned int i = 0; for(i = 0; i < hla->count; i++) { dmi_handle h = hla->handles[i]; m->arrays = g_slist_append(m->arrays, dmi_mem_array_new(h)); } dmi_handle_list_free(hla); } dmi_handle_list *hlm = dmidecode_handles(&dtm); if (hlm) { unsigned int i = 0; for(i = 0; i < hlm->count; i++) { dmi_handle h = hlm->handles[i]; m->sockets = g_slist_append(m->sockets, dmi_mem_socket_new(h)); } dmi_handle_list_free(hlm); } m->spd = spd_scan(); if (!m->sockets && !m->arrays && !m->spd) { m->empty = 1; goto dmi_mem_new_last_chance; } GSList *l = NULL, *l2 = NULL; /* totals for SPD */ for(l2 = m->spd; l2; l2 = l2->next) { spd_data *e = (spd_data*)l2->data; m->spd_size_MiB += e->size_MiB; if (e->type) m->spd_ram_types |= (1 << (e->type-1)); } m->unique_short_locators = TRUE; for(l = m->sockets; l; l = l->next) { dmi_mem_socket *s = (dmi_mem_socket*)l->data; /* check for duplicate short_locator */ if (m->unique_short_locators) { for(l2 = l->next; l2; l2 = l2->next) { dmi_mem_socket *d = (dmi_mem_socket*)l2->data; if (SEQ(s->short_locator, d->short_locator)) { m->unique_short_locators = FALSE; break; } } } /* update array present devices/size */ dmi_mem_array *a = dmi_mem_find_array(m, s->array_handle); if (a) { if (s->is_not_ram) { if (s->is_rom) a->size_MiB_rom += s->size_MiB; } else { a->size_MiB_present += s->size_MiB; if (s->populated) a->devs_populated++; if (s->ram_type) a->ram_types |= (1 << (s->ram_type-1)); } } } if (m->sockets && m->spd) { /* attempt to match DMI and SPD data */ GSList *sock_queue = g_slist_copy(m->sockets); int loops = g_slist_length(sock_queue) * 4; while(sock_queue) { if (loops-- <= 0) break; /* something is wrong, give up */ spd_data *best = NULL; int best_score = 0; dmi_mem_socket *s = (dmi_mem_socket*)sock_queue->data; /* pop that one off */ sock_queue = g_slist_delete_link(sock_queue, sock_queue); if (!s->populated) continue; for(l2 = m->spd; l2; l2 = l2->next) { spd_data *e = (spd_data*)l2->data; int score = dmi_spd_match_score(s, e); if (score > best_score) { if (score > e->match_score) { best = e; best_score = score; } } } if (best) { if (best->dmi_socket) { /* displace */ dmi_mem_socket *old_sock = best->dmi_socket; old_sock->spd = NULL; sock_queue = g_slist_append(sock_queue, old_sock); best->dmi_socket = s; best->match_score = best_score; s->spd = best; } else { best->dmi_socket = s; best->match_score = best_score; s->spd = best; } } } /* fill any missing data in DMI that is * provided by the matched SPD */ for(l = m->sockets; l; l = l->next) { dmi_mem_socket *s = (dmi_mem_socket*)l->data; dmi_fill_from_spd(s); } } /* end if (m->sockets && m->spd) */ /* Look for arrays with "System Memory" use, * or Mainboard as locator */ for(l = m->arrays; l; l = l->next) { dmi_mem_array *a = (dmi_mem_array*)l->data; if (a->is_main_memory) { m->system_memory_MiB += a->size_MiB_present; m->system_memory_ram_types |= a->ram_types; } } /* If no arrays, then try the SPD total */ if (!m->system_memory_MiB) { m->system_memory_MiB = m->spd_size_MiB; m->system_memory_ram_types |= m->spd_ram_types; } dmi_mem_new_last_chance: if (m->empty) { /* reach */ if (dtree_mem_str) { int rt = 0; m->system_memory_MiB = dmi_read_memory_str_to_MiB(dtree_mem_str); if (strstr(dtree_mem_str, "DDR5")) rt = DDR5_SDRAM; else if (strstr(dtree_mem_str, "DDR4")) rt = DDR4_SDRAM; else if (strstr(dtree_mem_str, "DDR3")) rt = DDR3_SDRAM; else if (strstr(dtree_mem_str, "DDR2")) rt = DDR2_SDRAM; else if (strstr(dtree_mem_str, "DDR")) rt = DDR_SDRAM; else if (strstr(dtree_mem_str, "DRDRAM")) rt = DIRECT_RAMBUS; else if (strstr(dtree_mem_str, "RDRAM")) rt = RAMBUS; if (rt) m->system_memory_ram_types |= (1 << (rt-1)); } } /* Try to sum the online blocks for a physical memory total */ if (!m->system_memory_MiB) m->system_memory_MiB = size_of_online_memory_blocks() / 1024 / 1024; return m; } void dmi_mem_free(dmi_mem* s) { if (s) { g_slist_free_full(s->arrays, (GDestroyNotify)dmi_mem_array_free); g_slist_free_full(s->sockets, (GDestroyNotify)dmi_mem_socket_free); g_slist_free_full(s->spd, (GDestroyNotify)spd_data_free); g_free(s); } } static gchar *tag_make_safe_inplace(gchar *tag) { if (!tag) return tag; if (!g_utf8_validate(tag, -1, NULL)) return tag; //TODO: reconsider gchar *p = tag, *pd = tag; while(*p) { gchar *np = g_utf8_next_char(p); gunichar c = g_utf8_get_char_validated(p, -1); int l = g_unichar_to_utf8(c, NULL); if (l == 1 && g_unichar_isalnum(c)) { g_unichar_to_utf8(c, pd); } else { *pd = '_'; } p = np; pd++; } return tag; } gchar *memory_devices_get_info() { gchar *icons = g_strdup(""); gchar *ret = g_strdup_printf("[%s]\n", _("Memory Device List")); GSList *l = NULL; sketchy_info = FALSE; gchar tag_prefix[] = "DEV"; dmi_mem *mem = dmi_mem_new(); /* Arrays */ for(l = mem->arrays; l; l = l->next) { dmi_mem_array *a = (dmi_mem_array*)l->data; gchar *tag = g_strdup_printf("%s", a->locator); gchar *size_str = NULL, *rom_size_str = NULL; tag_make_safe_inplace(tag); if (a->size_MiB_max > 1024 && (a->size_MiB_max % 1024 == 0) && a->size_MiB_present > 1024 && (a->size_MiB_present % 1024 == 0) ) size_str = g_strdup_printf("%u / %u %s", a->size_MiB_present / 1024, a->size_MiB_max / 1024, _("GiB")); else size_str = g_strdup_printf("%u / %u %s", a->size_MiB_present, a->size_MiB_max, _("MiB")); if (a->size_MiB_max < a->size_MiB_present) { sketchy_info = TRUE; size_str = h_strdup_cprintf(" %s", size_str, problem_marker()); } if (a->size_MiB_rom > 1024 && (a->size_MiB_rom % 1024 == 0)) rom_size_str = g_strdup_printf("%u %s", a->size_MiB_rom / 1024, _("GiB")); else rom_size_str = g_strdup_printf("%u %s", a->size_MiB_rom, _("MiB")); gchar *types_str = NULL; int i; for(i = 1; i < N_RAM_TYPES; i++) { int bit = 1 << (i-1); if (a->ram_types & bit) types_str = appfsp(types_str, "%s", GET_RAM_TYPE_STR(i)); } gchar *details = g_strdup_printf("[%s]\n" "%s=0x%"PRIx32"\n" "%s=%s\n" "%s=%s\n" "%s=%s\n" "%s=%s\n" "%s=%d / %d\n" "%s=[0x%x] %s\n" "%s=%s\n", _("Memory Array"), _("DMI Handle"), a->array_handle, _("Locator"), a->locator ? a->locator : ".", _("Use"), UNKIFNULL2(a->use), _("Error Correction Type"), UNKIFNULL2(a->ecc), _("Size (Present / Max)"), size_str, _("Devices (Populated / Sockets)"), a->devs_populated, a->devs, _("Types Present"), a->ram_types, UNKIFNULL2(types_str), _("ROM Size"), rom_size_str ); moreinfo_add_with_prefix(tag_prefix, tag, details); /* moreinfo now owns *details */ ret = h_strdup_cprintf("$!%s$%s=%s|%s\n", ret, tag, a->locator, UNKIFNULL2(types_str), size_str ); icons = h_strdup_cprintf("Icon$%s$=%s\n", icons, tag, array_icon); g_free(tag); g_free(size_str); g_free(rom_size_str); g_free(types_str); } /* Sockets */ for(l = mem->sockets; l; l = l->next) { dmi_mem_socket *s = (dmi_mem_socket*)l->data; gchar *tag = g_strdup_printf("%s", s->full_locator); tag_make_safe_inplace(tag); if (s->populated) { gchar *size_str = NULL; if (!s->size_str) size_str = g_strdup(_("(Unknown)")); else if (!s->size_MiB) size_str = g_strdup(s->size_str); else size_str = g_strdup_printf("%u %s", s->size_MiB, _("MiB") ); gchar *spd = s->spd ? make_spd_section(s->spd) : NULL; gchar *details = g_strdup_printf("[%s]\n" "%s=0x%"PRIx32", 0x%"PRIx32"\n" "%s=%s\n" "%s=%s\n" "%s=%s\n" "%s=%s / %s\n" "$^$%s=[%02x%02x] %s\n" "%s=%s\n" "%s=%s\n" "%s=%s\n" "%s=%s\n" "%s=%s / %s\n" "%s=%s\n" "%s=%s\n" "%s=%s\n" "%s=%s\n" "%s", /* spd */ _("Memory Socket"), _("DMI Handles (Array, Socket)"), s->array_handle, s->handle, _("Locator"), s->full_locator, _("Bank Locator"), UNKIFNULL2(s->bank_locator), _("Form Factor"), UNKIFNULL2(s->form_factor), _("Type"), UNKIFNULL2(s->type), UNKIFNULL2(s->type_detail), _("Vendor"), s->mfgr_bank, s->mfgr_index, UNKIFNULL2(s->mfgr), _("Part Number"), UNKIFNULL2(s->partno), _("Size"), size_str, _("Rated Speed"), UNKIFNULL2(s->speed_str), _("Configured Speed"), UNKIFNULL2(s->configured_clock_str), _("Data Width/Total Width"), UNKIFNULL2(s->data_width), UNKIFNULL2(s->total_width), _("Rank"), UNKIFNULL2(s->rank), _("Minimum Voltage"), UNKIFNULL2(s->voltage_min_str), _("Maximum Voltage"), UNKIFNULL2(s->voltage_max_str), _("Configured Voltage"), UNKIFNULL2(s->voltage_conf_str), spd ? spd : "" ); g_free(spd); moreinfo_add_with_prefix(tag_prefix, tag, details); /* moreinfo now owns *details */ gchar *mfgr = s->mfgr ? vendor_match_tag(s->mfgr, params.fmt_opts) : NULL; if(!mfgr && s->mfgr) mfgr=g_strdup(s->mfgr); ret = h_strdup_cprintf("$!%s$%s=%s|%s|%s\n", ret, tag, mem->unique_short_locators ? s->short_locator : s->full_locator, UNKIFNULL2(s->partno), size_str, UNKIFNULL2(mfgr) ); icons = h_strdup_cprintf("Icon$%s$=%s\n", icons, tag, mem_icon); g_free(size_str); g_free(mfgr); } else { gchar *details = g_strdup_printf("[%s]\n" "%s=0x%"PRIx32", 0x%"PRIx32"\n" "%s=%s\n" "%s=%s\n" "%s=%s\n", _("Memory Socket"), _("DMI Handles (Array, Socket)"), s->array_handle, s->handle, _("Locator"), s->full_locator, _("Bank Locator"), UNKIFNULL2(s->bank_locator), _("Size"), _("(Empty)") ); moreinfo_add_with_prefix(tag_prefix, tag, details); /* moreinfo now owns *details */ ret = h_strdup_cprintf("$%s$%s=|%s\n", ret, tag, mem->unique_short_locators ? s->short_locator : s->full_locator, _("(Empty)") ); icons = h_strdup_cprintf("Icon$%s$=%s\n", icons, tag, empty_icon); } g_free(tag); } /* No DMI Array, show SPD totals */ if (!mem->arrays && mem->spd) { gchar *key = g_strdup("SPD:*"); gchar *tag = g_strdup(key); tag_make_safe_inplace(tag); gchar *types_str = NULL; gchar *size_str = NULL; if (mem->spd_size_MiB > 1024 && (mem->spd_size_MiB % 1024 == 0) ) size_str = g_strdup_printf("%u %s", mem->spd_size_MiB / 1024, _("GiB")); else size_str = g_strdup_printf("%u %s", mem->spd_size_MiB, _("MiB")); int i; for(i = 1; i < N_RAM_TYPES; i++) { int bit = 1 << (i-1); if (mem->spd_ram_types & bit) types_str = appfsp(types_str, "%s", GET_RAM_TYPE_STR(i)); } gchar *details = g_strdup_printf("[%s]\n" "%s=%s\n" "%s=%d\n" "%s=[0x%x] %s\n", _("Serial Presence Detect (SPD) Summary"), _("Size"), size_str, _("Devices"), g_slist_length(mem->spd), _("Types Present"), mem->spd_ram_types, UNKIFNULL2(types_str) ); moreinfo_add_with_prefix(tag_prefix, tag, details); /* moreinfo now owns *details */ ret = h_strdup_cprintf("$!%s$%s=%s|%s\n", ret, tag, key, UNKIFNULL2(types_str), size_str ); icons = h_strdup_cprintf("Icon$%s$=%s\n", icons, tag, array_icon); g_free(key); g_free(tag); g_free(size_str); g_free(types_str); } /* Unmatched SPD */ for(l = mem->spd; l; l = l->next) { spd_data *s = (spd_data*)l->data; if (s->dmi_socket) continue; /* claimed by DMI */ gchar *key = g_strdup_printf("SPD:%s", s->dev); gchar *tag = g_strdup(key); tag_make_safe_inplace(tag); gchar *vendor_str = NULL; if (s->vendor) { vendor_str = vendor_get_link_from_vendor(s->vendor); } gchar *size_str = NULL; if (!s->size_MiB) size_str = g_strdup(_("(Unknown)")); else size_str = g_strdup_printf("%u %s", s->size_MiB, _("MiB") ); gchar *details = make_spd_section(s); moreinfo_add_with_prefix(tag_prefix, tag, details); /* moreinfo now owns *details */ const gchar *mfgr = s->vendor_str ? vendor_get_shortest_name(s->vendor_str) : NULL; ret = h_strdup_cprintf("$!%s$%s%s=%s|%s|%s\n", ret, tag, key, problem_marker(), UNKIFEMPTY2(s->partno), size_str, UNKIFNULL2(mfgr) ); icons = h_strdup_cprintf("Icon$%s$=%s\n", icons, tag, mem_icon); g_free(vendor_str); g_free(size_str); g_free(key); g_free(tag); } no_handles = FALSE; if(mem->empty) { no_handles = TRUE; g_free(ret); ret = g_strdup_printf("[%s]\n%s=%s\n" "[$ShellParam$]\nViewType=0\n", _("Memory Device List"), _("Result"), _("(Not available - See hint box below)")); } else { ret = h_strdup_cprintf( "[$ShellParam$]\nViewType=1\n" "ColumnTitle$TextValue=%s\n" /* Locator */ "ColumnTitle$Extra1=%s\n" /* Size */ "ColumnTitle$Extra2=%s\n" /* Vendor */ "ColumnTitle$Value=%s\n" /* Part */ "ShowColumnHeaders=true\n" "%s", ret, _("Locator"), _("Size"), _("Vendor"), _("Part"), icons ); } g_free(icons); dmi_mem_free(mem); return ret; } gchar *memory_devices_get_system_memory_types_str() { gchar *ret = NULL, *types_str = NULL; int i, rtypes; dmi_mem *lmem = dmi_mem_new(); rtypes = lmem->system_memory_ram_types; dmi_mem_free(lmem); for(i = 1; i < N_RAM_TYPES; i++) { int bit = 1 << (i-1); if (rtypes & bit) types_str = appfsp(types_str, "%s", GET_RAM_TYPE_STR(i)); } if (types_str) ret = g_strdup(types_str); else ret = g_strdup(UNKNOWN_MEM_TYPE_STRING); g_free(types_str); return ret; } uint64_t memory_devices_get_system_memory_MiB() { dmi_mem *mem = dmi_mem_new(); int ret = (int)mem->system_memory_MiB; dmi_mem_free(mem); return ret; } gchar *memory_devices_get_system_memory_str() { gchar *ret = NULL; dmi_mem_size m = memory_devices_get_system_memory_MiB(); if (m) { if (m > 1024 && (m % 1024 == 0) ) ret = g_strdup_printf("%u %s", m>>10, _("GiB")); else ret = g_strdup_printf("%u %s", m, _("MiB")); } return ret; } static gchar note_state[note_max_len] = ""; gboolean memory_devices_hinote(const char **msg) { *note_state = 0; /* clear */ //check for dmi interface gboolean has_dmi = g_file_test("/sys/firmware/dmi", G_FILE_TEST_IS_DIR); if(!has_dmi) { note_printf(note_state, "%s", _("No DMI available")); *msg=note_state; return TRUE; } gboolean has_dmiaccess = (access("/sys/firmware/dmi/tables/DMI", R_OK)==0) || (access("/sys/firmware/dmi/tables/smbios_entry_point", R_OK)==0) || (access("/run/hardinfo2/dmi_memory", R_OK)==0); gchar *want_dmi = _("dmidecode package installed"); gchar *want_dmiaccess = _("Ensure hardinfo2 service is enabled+started: sudo systemctl enable hardinfo2 --now (SystemD distro)\nAdd yourself to hardinfo2 group: sudo usermod -a -G hardinfo2 YOUR_LOGIN\nAnd Logout/Reboot for groups to be updated..."); gchar *want_at24 = "sudo modprobe at24 (or eeprom) (for SDR, DDR, DDR2, DDR3)"; gchar *want_ee1004 = "sudo modprobe ee1004 (for DDR4)"; gchar *want_spd5118 = "sudo modprobe spd5118 (for DDR5)"; gboolean has_at24_eeprom = g_file_test("/sys/bus/i2c/drivers/at24", G_FILE_TEST_IS_DIR) || g_file_test("/sys/bus/i2c/drivers/eeprom", G_FILE_TEST_IS_DIR); gboolean has_ee1004 = g_file_test("/sys/bus/i2c/drivers/ee1004", G_FILE_TEST_IS_DIR); gboolean has_spd5118 = g_file_test("/sys/bus/i2c/drivers/spd5118", G_FILE_TEST_IS_DIR); note_printf(note_state, "%s\n", _("Memory Information requires more Setup:")); note_print(note_state, "1. "); gboolean has_dmidecode = note_require_tool("dmidecode", note_state, want_dmi); note_print(note_state, " "); note_cond_bullet(has_dmiaccess, note_state, want_dmiaccess); note_print(note_state, "2. "); note_cond_bullet(has_at24_eeprom, note_state, want_at24); note_print(note_state, " "); note_cond_bullet(has_ee1004, note_state, want_ee1004); note_print(note_state, " "); note_cond_bullet(has_spd5118, note_state, want_spd5118); g_strstrip(note_state); /* remove last \n */ gboolean ddr4 = dmi_ram_types & (1<<(DDR4_SDRAM-1)); gboolean ddr5 = dmi_ram_types & (1<<(DDR5_SDRAM-1)); gboolean best_state = FALSE; if (has_dmidecode && has_dmiaccess && ((has_at24_eeprom && !ddr4 && !ddr5) || (has_ee1004 && ddr4) || (has_spd5118 && ddr5) )) best_state = TRUE; if (!best_state) { *msg = note_state; return TRUE; } if (sketchy_info) { *msg = g_strdup( _("\"More often than not, information contained in the DMI tables is inaccurate,\n" "incomplete or simply wrong.\" -dmidecode manual page")); return TRUE; } return FALSE; } hardinfo2-hardinfo2-1331e88/modules/devices/e2k/000077500000000000000000000000001474767047500213165ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/modules/devices/e2k/processor.c000066400000000000000000000327771474767047500235210ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2020 EntityFX and MCST Elbrus Team * modified by Boris Afonot (2022) * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "hardinfo.h" #include "devices.h" #include "cpu_util.h" static gchar *__cache_get_info_as_string(Processor *processor) { gchar *result = g_strdup(""); GSList *cache_list; ProcessorCache *cache; if (!processor->cache) { return g_strdup(_("Cache information not available=\n")); } for (cache_list = processor->cache; cache_list; cache_list = cache_list->next) { cache = (ProcessorCache *)cache_list->data; result = h_strdup_cprintf(_("Level %d (%s)=%d-way set-associative, %d sets, %dKB size\n"), result, cache->level, C_("cache-type", cache->type), cache->ways_of_associativity, cache->number_of_sets, cache->size); } return result; } /* This is not used directly, but creates translatable strings for * the type string returned from /sys/.../cache */ static const char* cache_types[] = { NC_("cache-type", /*/cache type, as appears in: Level 1 (Data)*/ "Data"), NC_("cache-type", /*/cache type, as appears in: Level 1 (Instruction)*/ "Instruction"), NC_("cache-type", /*/cache type, as appears in: Level 2 (Unified)*/ "Unified") }; static void __cache_obtain_info(Processor *processor) { ProcessorCache *cache; gchar *endpoint, *entry, *index; gchar *uref = NULL; gint i; gint processor_number = processor->id; endpoint = g_strdup_printf("/sys/devices/system/cpu/cpu%d/cache", processor_number); for (i = 0; ; i++) { cache = g_new0(ProcessorCache, 1); index = g_strdup_printf("index%d/", i); entry = g_strconcat(index, "type", NULL); cache->type = h_sysfs_read_string(endpoint, entry); g_free(entry); if (!cache->type) { g_free(cache); g_free(index); goto fail; } entry = g_strconcat(index, "level", NULL); cache->level = h_sysfs_read_int(endpoint, entry); g_free(entry); entry = g_strconcat(index, "number_of_sets", NULL); cache->number_of_sets = h_sysfs_read_int(endpoint, entry); g_free(entry); entry = g_strconcat(index, "physical_line_partition", NULL); cache->physical_line_partition = h_sysfs_read_int(endpoint, entry); g_free(entry); entry = g_strconcat(index, "size", NULL); cache->size = h_sysfs_read_int(endpoint, entry); g_free(entry); entry = g_strconcat(index, "ways_of_associativity", NULL); cache->ways_of_associativity = h_sysfs_read_int(endpoint, entry); g_free(entry); /* unique cache references: id is nice, but share_cpu_list can be * used if it is not available. */ entry = g_strconcat(index, "id", NULL); uref = h_sysfs_read_string(endpoint, entry); g_free(entry); if (uref != NULL && *uref != 0 ) cache->uid = atoi(uref); else cache->uid = -1; g_free(uref); entry = g_strconcat(index, "shared_cpu_list", NULL); cache->shared_cpu_list = h_sysfs_read_string(endpoint, entry); g_free(entry); /* reacharound */ entry = g_strconcat(index, "../../topology/physical_package_id", NULL); cache->phy_sock = h_sysfs_read_int(endpoint, entry); g_free(entry); g_free(index); processor->cache = g_slist_append(processor->cache, cache); } fail: g_free(endpoint); } #define cmp_cache_test(f) if (a->f < b->f) return -1; if (a->f > b->f) return 1; static gint cmp_cache(ProcessorCache *a, ProcessorCache *b) { gint i = 0; cmp_cache_test(phy_sock); i = g_strcmp0(a->type, b->type); if (i!=0) return i; cmp_cache_test(level); cmp_cache_test(size); cmp_cache_test(uid); /* uid is unique among caches with the same (type, level) */ if (a->uid == -1) { /* if id wasn't available, use shared_cpu_list as a unique ref */ i = g_strcmp0(a->shared_cpu_list, b->shared_cpu_list); if (i!=0) return i; } return 0; } static gint cmp_cache_ignore_id(ProcessorCache *a, ProcessorCache *b) { gint i = 0; cmp_cache_test(phy_sock); i = g_strcmp0(a->type, b->type); if (i!=0) return i; cmp_cache_test(level); cmp_cache_test(size); return 0; } gchar *caches_summary(GSList * processors) { gchar *ret = g_strdup_printf("[%s]\n", _("Caches")); GSList *all_cache = NULL, *uniq_cache = NULL; GSList *tmp, *l; Processor *p; ProcessorCache *c, *cur = NULL; gint cur_count = 0, i = 0; /* create list of all cache references */ for (l = processors; l; l = l->next) { p = (Processor*)l->data; if (p->cache) { tmp = g_slist_copy(p->cache); if (all_cache) { all_cache = g_slist_concat(all_cache, tmp); } else { all_cache = tmp; } } } if (g_slist_length(all_cache) == 0) { ret = h_strdup_cprintf("%s=\n", ret, _("(Not Available)") ); g_slist_free(all_cache); return ret; } /* ignore duplicate references */ all_cache = g_slist_sort(all_cache, (GCompareFunc)cmp_cache); for (l = all_cache; l; l = l->next) { c = (ProcessorCache*)l->data; if (!cur) { cur = c; } else { if (cmp_cache(cur, c) != 0) { uniq_cache = g_slist_prepend(uniq_cache, cur); cur = c; } } } uniq_cache = g_slist_prepend(uniq_cache, cur); uniq_cache = g_slist_reverse(uniq_cache); cur = 0, cur_count = 0; /* count and list caches */ for (l = uniq_cache; l; l = l->next) { c = (ProcessorCache*)l->data; if (!cur) { cur = c; cur_count = 1; } else { if (cmp_cache_ignore_id(cur, c) != 0) { ret = h_strdup_cprintf(_("Level %d (%s)#%d=%dx %dKB (%dKB), %d-way set-associative, %d sets\n"), ret, cur->level, C_("cache-type", cur->type), cur->phy_sock, cur_count, cur->size, cur->size * cur_count, cur->ways_of_associativity, cur->number_of_sets); cur = c; cur_count = 1; } else { cur_count++; } } } ret = h_strdup_cprintf(_("Level %d (%s)#%d=%dx %dKB (%dKB), %d-way set-associative, %d sets\n"), ret, cur->level, C_("cache-type", cur->type), cur->phy_sock, cur_count, cur->size, cur->size * cur_count, cur->ways_of_associativity, cur->number_of_sets); g_slist_free(all_cache); g_slist_free(uniq_cache); return ret; } static gchar *processor_get_full_name(const gchar *model_name) { if(g_strcmp0(model_name ,"E2S") == 0) return "Elbrus-4C"; else if(g_strcmp0(model_name ,"E1C+") == 0) return "Elbrus-1C+"; else if(g_strcmp0(model_name ,"E2C+DSP") == 0) return "Elbrus-2C+"; else if(g_strcmp0(model_name ,"E8C") == 0) return "Elbrus-8C"; else if(g_strcmp0(model_name ,"E8C2") == 0) return "Elbrus-8CB"; else if(g_strcmp0(model_name ,"E12C") == 0) return "Elbrus-12C"; else if(g_strcmp0(model_name ,"E16C") == 0) return "Elbrus-16C"; else if(g_strcmp0(model_name ,"E2C3") == 0) return "Elbrus-2C3"; else return (gchar *)model_name; } GSList *processor_scan(void) { GSList *procs = NULL, *l = NULL; Processor *processor = NULL; FILE *cpuinfo; gchar buffer[1024]; cpuinfo = fopen(PROC_CPUINFO, "r"); if (!cpuinfo) return NULL; while (fgets(buffer, 1024, cpuinfo)) { gchar **tmp = g_strsplit(buffer, ":", 2); if (!tmp[1] || !tmp[0]) { g_strfreev(tmp); continue; } tmp[0] = g_strstrip(tmp[0]); tmp[1] = g_strstrip(tmp[1]); if (g_str_has_prefix(tmp[0], "processor")) { /* finish previous */ if (processor) procs = g_slist_append(procs, processor); /* start next */ processor = g_new0(Processor, 1); processor->id = atol(tmp[1]); g_strfreev(tmp); continue; } if (processor) { if (g_str_has_prefix(tmp[0], "model name")) { const gchar *model_name = processor_get_full_name(tmp[1]); processor->model_name = g_strdup(model_name); g_strfreev(tmp); continue; } get_str("vendor_id", processor->vendor_id); get_int("cpu family", processor->family); get_int("model", processor->model); get_int("revision", processor->revision); get_float("cpu MHz", processor->cpu_mhz); get_float("bogomips", processor->bogomips); } //populate processor structure g_strfreev(tmp); } //appent to the list if (processor) procs = g_slist_append(procs, processor); for (l = procs; l; l = l->next) { processor = (Processor *) l->data; __cache_obtain_info(processor); } fclose(cpuinfo); return procs; } gchar *processor_name(GSList * processors) { return processor_name_default(processors); } gchar *processor_describe(GSList * processors) { return processor_describe_default(processors); } gchar * processor_get_detailed_info(Processor *processor) { gchar *ret; gchar *cache_info; cache_info = __cache_get_info_as_string(processor); ret = g_strdup_printf("[%s]\n" "$^$%s=%s\n" /* name */ "$^$%s=%s\n" /* vendor */ "%s=%d\n" /* family */ "%s=%d\n" /* model */ "%s=%d\n" /* revision */ "%s=%.2f %s\n" /* frequency */ "%s=%.2f\n" /* bogomips */ "%s=%s\n" /* byte order */ "[%s]\n" /* cache */ "%s\n", _("Processor"), _("Name"), processor->model_name, _("Vendor"), processor->vendor_id, _("Family"), processor->family, _("Model"), processor->model, _("Revision"), processor->revision, _("Frequency"), processor->cpu_mhz, _("MHz"), _("BogoMips"), processor->bogomips, _("Byte Order"), byte_order_str(), _("Cache"), cache_info ); g_free(cache_info); return ret; } //prepare processor info for all cpus gchar *processor_get_info(GSList * processors) { Processor *processor; gchar *ret, *tmp, *hashkey; GSList *l; tmp = g_strdup(""); for (l = processors; l; l = l->next) { processor = (Processor *) l->data; gchar *model_name = g_strdup_printf("MCST %s", processor->model_name); /* change vendor id of 8CB processor for correct parse from vendor.ids */ if (!g_strcmp0(processor->vendor_id, "E8C")) { gchar *orig_vendor_id = processor->vendor_id; processor->vendor_id = g_strdup_printf("%s-SWTX", orig_vendor_id); free(orig_vendor_id); } const Vendor *v = vendor_match(processor->vendor_id, NULL); if (v) tag_vendor(&model_name, 0, v->name_short ? v->name_short : v->name, v->ansi_color, params.fmt_opts); tmp = g_strdup_printf("%s$CPU%d$cpu%d=%.2f %s|%s\n", tmp, processor->id, processor->id, processor->cpu_mhz, _("MHz"), model_name); hashkey = g_strdup_printf("CPU%d", processor->id); moreinfo_add_with_prefix("DEV", hashkey, processor_get_detailed_info(processor)); g_free(hashkey); } ret = g_strdup_printf("[$ShellParam$]\n" "ViewType=1\n" "ColumnTitle$TextValue=%s\n" "ColumnTitle$Value=%s\n" "ColumnTitle$Extra1=%s\n" "ShowColumnHeaders=true\n" "[Processors]\n" "%s", _("Device"), _("Frequency"), _("Model"), tmp); g_free(tmp); return ret; } hardinfo2-hardinfo2-1331e88/modules/devices/firmware.c000066400000000000000000000254601474767047500226240ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2019 L. A. F. Pereira * Copyright (C) 2019 Burt P. * Copyright (C) 2020 Ondrej Čerman * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "hardinfo.h" #include "devices.h" #include #include #include "util_sysobj.h" /* for SEQ() and appf() */ #define fw_msg(msg, ...) fprintf (stderr, "[%s] " msg "\n", __FUNCTION__, ##__VA_ARGS__) /**/ #define FWUPT_INTERFACE "org.freedesktop.fwupd" gboolean fail_no_fwupd = TRUE; char *decode_flags(guint64 flags) { /* https://github.com/hughsie/fwupd/blob/master/libfwupd/fwupd-enums.{h,c} */ static const struct { guint64 b; char *flag, *def; } flag_defs[] = { { (1u << 0), "internal", N_("Device cannot be removed easily") }, { (1u << 1), "updatable", N_("Device is updatable in this or any other mode") }, { (1u << 2), "only-offline", N_("Update can only be done from offline mode") }, { (1u << 3), "require-ac", N_("Requires AC power") }, { (1u << 4), "locked", N_("Is locked and can be unlocked") }, { (1u << 5), "supported", N_("Is found in current metadata") }, { (1u << 6), "needs-bootloader", N_("Requires a bootloader mode to be manually enabled by the user") }, { (1u << 7), "registered", N_("Has been registered with other plugins") }, { (1u << 8), "needs-reboot", N_("Requires a reboot to apply firmware or to reload hardware") }, { (1u << 17), "needs-shutdown", N_("Requires system shutdown to apply firmware") }, { (1u << 9), "reported", N_("Has been reported to a metadata server") }, { (1u << 10), "notified", N_("User has been notified") }, { (1u << 11), "use-runtime-version", N_("Always use the runtime version rather than the bootloader") }, { (1u << 12), "install-parent-first", N_("Install composite firmware on the parent before the child") }, { (1u << 13), "is-bootloader", N_("Is currently in bootloader mode") }, { (1u << 14), "wait-for-replug", N_("The hardware is waiting to be replugged") }, { (1u << 15), "ignore-validation", N_("Ignore validation safety checks when flashing this device") }, { (1u << 18), "another-write-required", N_("Requires the update to be retried with a new plugin") }, { (1u << 19), "no-auto-instance-ids", N_("Do not add instance IDs from the device baseclass") }, { (1u << 20), "needs-activation", N_("Device update needs to be separately activated") }, { (1u << 21), "ensure-semver", N_("Ensure the version is a valid semantic version, e.g. numbers separated with dots") }, { (1u << 16), "trusted", N_("Extra metadata can be exposed about this device") }, { 0, NULL } }; gchar *flag_list = g_strdup(""); int i; for (i = 0; flag_defs[i].flag; i++) { if (flags & flag_defs[i].b) flag_list = appfnl(flag_list, "[%s] %s", flag_defs[i].flag, flag_defs[i].def); } return flag_list; } const char *find_translation(const char *str) { /* TODO: https://github.com/hughsie/fwupd/blob/master/src/README.md */ static const char *translatable[] = { N_("DeviceId"), N_("Guid"), N_("Summary"), N_("Plugin"), N_("Flags"), N_("Vendor"), N_("VendorId"), N_("Version"), N_("VersionBootloader"), N_("Icon"), N_("InstallDuration"), N_("Created"), NULL }; int i; if (!str) return NULL; for (i = 0; translatable[i]; i++) { if (SEQ(str, translatable[i])) return _(translatable[i]); } return str; }; /* map lvfs icon names to hardinfo icon names */ const char *find_icon(const char *lvfs_name) { /* icon names found by looking for fu_device_add_icon () * in the fwupd source. */ static const struct { char *lvfs, *hi; } imap[] = { { "applications-internet", "internet.svg" }, { "audio-card", "audio.svg" }, { "computer", "computer.svg" }, { "drive-harddisk", "hdd.svg" }, { "input-gaming", "joystick.svg" }, { "input-tablet", NULL }, { "network-modem", "wireless.svg" }, { "preferences-desktop-keyboard", "keyboard.svg" }, { "thunderbolt", NULL }, { "touchpad-disabled", NULL }, /* default */ { NULL, "memory.svg" } /* a device with firmware maybe */ }; unsigned int i = 0; for(; imap[i].lvfs; i++) { if (SEQ(imap[i].lvfs, lvfs_name) && imap[i].hi) return imap[i].hi; } return imap[i].hi; } gchar *fwupdmgr_get_devices_info() { struct Info *info = info_new(); struct InfoGroup *this_group = NULL; gboolean has_vendor_field = FALSE; gboolean updatable = FALSE; const Vendor *gv = NULL; int gc = 0; GDBusConnection *conn; GDBusProxy *proxy; GVariant *devices, *value; GVariantIter *deviter, *dictiter, *iter; const gchar *key, *tmpstr; conn = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, NULL); if (!conn) return g_strdup(""); proxy = g_dbus_proxy_new_sync(conn, G_DBUS_PROXY_FLAGS_NONE, NULL, FWUPT_INTERFACE, "/", FWUPT_INTERFACE, NULL, NULL); if (!proxy) { g_object_unref(conn); return g_strdup(""); } fail_no_fwupd = FALSE; devices = g_dbus_proxy_call_sync(proxy, "GetDevices", NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL); if (devices) { g_variant_get(devices, "(aa{sv})", &deviter); while(g_variant_iter_loop(deviter, "a{sv}", &dictiter)){ this_group = info_add_group(info, _("Unknown"), info_field_last()); this_group->sort = INFO_GROUP_SORT_NAME_DESCENDING; has_vendor_field = FALSE; updatable = FALSE; gv = NULL; while (g_variant_iter_loop(dictiter, "{&sv}", &key, &value)) { if (SEQ(key, "Name")) { tmpstr = g_variant_get_string(value, NULL); this_group->name = hardinfo_clean_grpname(tmpstr, 0); gv = vendor_match(tmpstr, NULL); } else if (SEQ(key, "Vendor")) { has_vendor_field = TRUE; tmpstr = g_variant_get_string(value, NULL); const Vendor* v = vendor_match(tmpstr, NULL); if (v) { info_group_add_field(this_group, info_field(_("Vendor"), v->name, .value_has_vendor = TRUE, .free_value_on_flatten = FALSE) ); } else { info_group_add_field(this_group, info_field(_("Vendor"), g_strdup(tmpstr), .free_value_on_flatten = TRUE) ); } } else if (SEQ(key, "Icon")) { g_variant_get(value, "as", &iter); while (g_variant_iter_loop(iter, "s", &tmpstr)) { info_group_add_field(this_group, info_field(_("Icon"), g_strdup(tmpstr), .free_value_on_flatten = TRUE, .icon = g_strdup(find_icon(tmpstr)) ) ); } } else if (SEQ(key, "Guid")) { g_variant_get(value, "as", &iter); while (g_variant_iter_loop(iter, "s", &tmpstr)) { info_group_add_field(this_group, info_field(_("Guid"), g_strdup(tmpstr), .tag = g_strdup_printf("guid%d", gc++), .free_value_on_flatten = TRUE) ); } g_variant_iter_free(iter); } else if (SEQ(key, "Created")) { guint64 created = g_variant_get_uint64(value); GDateTime *dt = g_date_time_new_from_unix_local(created); if (dt) { info_group_add_field(this_group, info_field(_("Created"), g_date_time_format(dt, "%x"), .free_value_on_flatten = TRUE) ); g_date_time_unref(dt); } } else if (SEQ(key, "Flags")) { guint64 flags = g_variant_get_uint64(value); updatable = (gboolean)(flags & (1u << 1)); info_group_add_field(this_group, info_field(_("Flags"), decode_flags(flags), .free_value_on_flatten = TRUE) ); } else { if (g_variant_is_of_type(value, G_VARIANT_TYPE_STRING)) { info_group_add_field(this_group, info_field(find_translation(key), g_variant_dup_string(value, NULL), .free_value_on_flatten = TRUE) ); } } } if (gv && !has_vendor_field) { info_group_add_field(this_group, info_field(_("Vendor"), gv->name, .value_has_vendor = TRUE, .free_value_on_flatten = FALSE) ); } // hide devices that are not updatable if (!updatable) { info_remove_group(info, info->groups->len - 1); } } g_variant_iter_free(deviter); g_variant_unref(devices); } g_object_unref(proxy); g_object_unref(conn); gchar *ret = NULL; if (info->groups->len) { info_set_view_type(info, SHELL_VIEW_DETAIL); //fw_msg("flatten..."); ret = info_flatten(info); //fw_msg("ret: %s", ret); } else { ret = g_strdup_printf("[%s]\n%s=%s\n" "[$ShellParam$]\nViewType=0\n", _("Firmware List"), _("Result"), _("(Not available)") ); } return ret; } gchar *firmware_get_info() { return fwupdmgr_get_devices_info(); } gboolean firmware_hinote(const char **msg) { if (fail_no_fwupd) { *msg = g_strdup( _("Requires the fwupd daemon.")); return TRUE; } return FALSE; } hardinfo2-hardinfo2-1331e88/modules/devices/gpu.c000066400000000000000000000311121474767047500215720ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2017 L. A. F. Pereira * This file * Copyright (C) 2018 Burt P. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "hardinfo.h" #include "devices.h" #include "gpu_util.h" gchar *gpu_list = NULL; gchar *gpu_summary = NULL; void gpu_summary_add(const char *gpu_name) { if (strlen(gpu_summary) == 0) { /* first one */ gpu_summary = h_strdup_cprintf("%s", gpu_summary, gpu_name); } else { /* additional */ gpu_summary = h_strdup_cprintf(" + %s", gpu_summary, gpu_name); } } #define UNKIFNULL_AC(f) (f != NULL) ? f : _("(Unknown)"); static void _gpu_pci_dev(gpud* gpu) { pcid *p = gpu->pci_dev; gchar *str; gchar *vendor, *svendor, *product, *sproduct; gchar *name, *key; gchar *drm_path = NULL; gboolean vendor_is_svendor = (p->vendor_id == p->sub_vendor_id && p->device_id == p->sub_device_id); vendor = UNKIFNULL_AC(p->vendor_id_str); svendor = UNKIFNULL_AC(p->sub_vendor_id_str); product = UNKIFNULL_AC(p->device_id_str); sproduct = UNKIFNULL_AC(p->sub_device_id_str); if (gpu->drm_dev) drm_path = g_strdup_printf("/dev/dri/%s", gpu->drm_dev); else drm_path = g_strdup(_("(Unknown)")); gchar *ven_tag = vendor_match_tag(p->vendor_id_str, params.fmt_opts); gchar *sven_tag = vendor_match_tag(p->sub_vendor_id_str, params.fmt_opts); if (ven_tag) { if (sven_tag && !vendor_is_svendor) { name = g_strdup_printf("%s %s %s", sven_tag, ven_tag, product); } else { name = g_strdup_printf("%s %s", ven_tag, product); } } else { name = g_strdup_printf("%s %s", vendor, product); } g_free(ven_tag); g_free(sven_tag); key = g_strdup_printf("GPU%s", gpu->id); gpu_summary_add((gpu->nice_name) ? gpu->nice_name : name); gpu_list = h_strdup_cprintf("$!%s$%s=%s\n", gpu_list, key, gpu->id, name); gchar *vendor_device_str; if (p->vendor_id == p->sub_vendor_id && p->device_id == p->sub_device_id) { vendor_device_str = g_strdup_printf( /* Vendor */ "$^$%s=[%04x] %s\n" /* Device */ "%s=[%04x] %s\n", _("Vendor"), p->vendor_id, vendor, _("Device"), p->device_id, product); } else { vendor_device_str = g_strdup_printf( /* Vendor */ "$^$%s=[%04x] %s\n" /* Device */ "%s=[%04x] %s\n" /* Sub-device vendor */ "$^$%s=[%04x] %s\n" /* Sub-device */ "%s=[%04x] %s\n", _("Vendor"), p->vendor_id, vendor, _("Device"), p->device_id, product, _("SVendor"), p->sub_vendor_id, svendor, _("SDevice"), p->sub_device_id, sproduct); } gchar *pcie_str; if (p->pcie_width_curr) { pcie_str = g_strdup_printf("[%s]\n" /* Width (max) */ "%s=x%u\n" /* Speed (max) */ "%s=%0.1f %s\n", _("PCI Express"), _("Maximum Link Width"), p->pcie_width_max, _("Maximum Link Speed"), p->pcie_speed_max, _("GT/s") ); } else pcie_str = strdup(""); gchar *nv_str; if (gpu->nv_info) { nv_str = g_strdup_printf("[%s]\n" /* model */ "%s=%s\n" /* bios */ "%s=%s\n" /* uuid */ "%s=%s\n", _("NVIDIA"), _("Model"), gpu->nv_info->model, _("BIOS Version"), gpu->nv_info->bios_version, _("UUID"), gpu->nv_info->uuid ); } else nv_str = strdup(""); gchar *freq = g_strdup(_("(Unknown)")); if (gpu->khz_max > 0) { if (gpu->khz_min > 0 && gpu->khz_min != gpu->khz_max) freq = g_strdup_printf("%0.2f-%0.2f %s", (double) gpu->khz_min / 1000, (double) gpu->khz_max / 1000, _("MHz")); else freq = g_strdup_printf("%0.2f %s", (double) gpu->khz_max / 1000, _("MHz")); } gchar *mem_freq = g_strdup(_("(Unknown)")); if (gpu->mem_khz_max > 0) { if (gpu->mem_khz_min > 0 && gpu->mem_khz_min != gpu->mem_khz_max) mem_freq = g_strdup_printf("%0.2f-%0.2f %s", (double) gpu->mem_khz_min / 1000, (double) gpu->mem_khz_max / 1000, _("MHz")); else mem_freq = g_strdup_printf("%0.2f %s", (double) gpu->mem_khz_max / 1000, _("MHz")); } //Add GPU name from renderer - this is only correct for 1 GPU systems, which are most builds if(gpuname) g_free(gpuname); gchar *t=NULL,*g=module_call_method("computer::getOGLRenderer"); if(g) { int i=1; g=strreplace(g,"(R)",""); g=strreplace(g,"(TM)",""); g=strreplace(g,"(tm)",""); if( strstr(module_call_method("computer::getMachineTypeEnglish"),"irtual") ){//virtual gpuname=g_strdup_printf("GPU=%s\n",module_call_method("computer::getMachineTypeEnglish")); } else if(strlen(g)>7 && g[0]=='l' && g[1]=='l' && g[2]=='v' && g[3]=='m' && g[4]=='p' && g[5]=='i' && g[6]=='p' && g[7]=='e'){ //Software - no hw accelleration drivers if(strstr(vendor_device_str,"ntegrat")){//Integrated gpuname=g_strdup_printf("GPU=Integrated (%s)\n",module_call_method("devices::getProcessorName")); } else {//software render gpuname=g_strdup_printf("GPU=Software (%s)\n",module_call_method("devices::getProcessorName")); } } else if(strlen(g)>10 && g[0]=='D' && g[1]=='3' && g[2]=='D' && g[3]=='1' && g[4]=='2'){//WSL2 t=g+7; while(g[i]){ if((g[i]==')')) g[i]=0; i++; } gpuname=g_strdup_printf("GPU=%s (D3D12)\n",t); } else if(strlen(g)>3 && g[0]=='N' && g[1]=='V' && g[2]!='i' && product && strstr(product,"[") && strstr(product,"]")){//nvidea with NVXXX char *t=strstr(product,"[")+1; char *tt=strstr(product,"]");*tt='\0'; gpuname=g_strdup_printf("GPU=NVidia %s (%s)\n",t,g); } else {//Graphics cards while(g[i]){ if((g[i-1]==' ') && (g[i]=='(')) g[i-1]=0; i++; } gpuname=g_strdup_printf("GPU=%s\n",g); } g_free(g); } else {//unknown as no renderer, try pcie if( strstr(module_call_method("computer::getMachineTypeEnglish"),"irtual") ){//virtual gpuname=g_strdup_printf("GPU=%s\n",module_call_method("computer::getMachineTypeEnglish")); } else { gpuname=g_strdup_printf("GPU=%s\n",((gpu->nice_name) ? gpu->nice_name : name)); } } str = g_strdup_printf("[%s]\n" /* GPU */ "%s\n" /* Location */ "%s=%s\n" /* DRM Dev */ "%s=%s\n" /* Class */ "%s=[%04x] %s\n" "%s" /* Revision */ "%s=%02x\n" "[%s]\n" /* Core freq */ "%s=%s\n" /* Mem freq */ "%s=%s\n" /* NV */ "%s" /* PCIe */ "%s" "[%s]\n" /* Driver */ "%s=%s\n" /* Modules */ "%s=%s\n", _("Device Information"), gpuname, _("Location"), gpu->location, _("DRM Device"), drm_path, _("Class"), p->class, p->class_str, vendor_device_str, _("Revision"), p->revision, _("Clocks"), _("Core"), freq, _("Memory"), mem_freq, nv_str, pcie_str, _("Driver"), _("In Use"), (p->driver) ? p->driver : _("(Unknown)"), _("Kernel Modules"), (p->driver_list) ? p->driver_list : _("(Unknown)") ); moreinfo_add_with_prefix("DEV", key, str); /* str now owned by morinfo */ g_free(drm_path); g_free(pcie_str); g_free(nv_str); g_free(vendor_device_str); g_free(name); g_free(key); } int _dt_soc_gpu(gpud *gpu) { static char UNKSOC[] = "(Unknown)"; /* don't translate this */ gchar *vendor = gpu->vendor_str; gchar *device = gpu->device_str; if (vendor == NULL) vendor = UNKSOC; if (device == NULL) device = UNKSOC; gchar *freq = g_strdup(_("(Unknown)")); if (gpu->khz_max > 0) { if (gpu->khz_min > 0) freq = g_strdup_printf("%0.2f-%0.2f %s", (double) gpu->khz_min / 1000, (double) gpu->khz_max / 1000, _("MHz")); else freq = g_strdup_printf("%0.2f %s", (double) gpu->khz_max / 1000, _("MHz")); } gchar *key = g_strdup(gpu->id); gchar *name = NULL; gchar *vtag = vendor_match_tag(gpu->vendor_str, params.fmt_opts); if (vtag) { name = g_strdup_printf("%s %s", vtag, device); } else { name = (vendor == UNKSOC && device == UNKSOC) ? g_strdup(_("Unknown integrated GPU")) : g_strdup_printf("%s %s", vendor, device); } g_free(vtag); gchar *opp_str; if (gpu->dt_opp) { static const char *freq_src[] = { N_("clock-frequency property"), N_("Operating Points (OPPv1)"), N_("Operating Points (OPPv2)"), }; opp_str = g_strdup_printf("[%s]\n" /* MinFreq */ "%s=%d %s\n" /* MaxFreq */ "%s=%d %s\n" /* Latency */ "%s=%d %s\n" /* Source */ "%s=%s\n", _("Frequency Scaling"), _("Minimum"), gpu->dt_opp->khz_min, _("kHz"), _("Maximum"), gpu->dt_opp->khz_max, _("kHz"), _("Transition Latency"), gpu->dt_opp->clock_latency_ns, _("ns"), _("Source"), _(freq_src[gpu->dt_opp->version]) ); } else opp_str = strdup(""); gpu_summary_add((gpu->nice_name) ? gpu->nice_name : name); gpu_list = h_strdup_cprintf("$!%s$%s=%s\n", gpu_list, key, key, name); if(gpuname) g_free(gpuname); gpuname=g_strdup_printf("GPU=Integrated (%s)\n",module_call_method("devices::getProcessorName")); gchar *str = g_strdup_printf("[%s]\n" /* GPU */ "%s" /* Location */ "%s=%s\n" /* Vendor */ "$^$%s=%s\n" /* Device */ "%s=%s\n" "[%s]\n" /* Freq */ "%s=%s\n" /* opp-v2 */ "%s" "[%s]\n" /* Path */ "%s=%s\n" /* Compat */ "%s=%s\n" /* Status */ "%s=%s\n" /* Name */ "%s=%s\n", _("Device Information"), gpuname, _("Location"), gpu->location, _("Vendor"), vendor, _("Device"), device, _("Clocks"), _("Core"), freq, opp_str, _("Device Tree Node"), _("Path"), gpu->dt_path, _("Compatible"), gpu->dt_compat, _("Status"), gpu->dt_status, _("Name"), gpu->dt_name ); moreinfo_add_with_prefix("DEV", key, str); /* str now owned by morinfo */ g_free(freq); g_free(opp_str); return 1; } void scan_gpu_do(void) { if (gpu_summary) g_free(gpu_summary); if (gpu_list) { moreinfo_del_with_prefix("DEV:GPU"); g_free(gpu_list); } gpu_summary = strdup(""); gpu_list = g_strdup_printf("[%s]\n", _("GPUs")); gpud *gpus = gpu_get_device_list(); gpud *curr = gpus; int c = gpud_list_count(gpus); if (c > 0) { while(curr) { if (curr->pci_dev) { _gpu_pci_dev(curr); } if (curr->dt_compat) { _dt_soc_gpu(curr); } curr=curr->next; } } gpud_list_free(gpus); if (c) gpu_list = g_strconcat(gpu_list, "[$ShellParam$]\n", "ViewType=1\n", NULL); else { /* NO GPU? */ gpu_list = g_strconcat(gpu_list, _("No GPU devices found"), "=\n", NULL); if(gpuname) g_free(gpuname); gpuname = g_strdup("No GPU"); } } hardinfo2-hardinfo2-1331e88/modules/devices/ia64/000077500000000000000000000000001474767047500214005ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/modules/devices/ia64/processor.c000066400000000000000000000153131474767047500235660ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "hardinfo.h" #include "devices.h" #include "cpu_util.h" GSList * processor_scan(void) { GSList *procs = NULL; Processor *processor = NULL; FILE *cpuinfo; gchar buffer[128]; gchar *rep_pname = NULL; GSList *pi = NULL; cpuinfo = fopen(PROC_CPUINFO, "r"); if (!cpuinfo) return NULL; #define CHECK_FOR(k) (g_str_has_prefix(tmp[0], k)) while (fgets(buffer, 128, cpuinfo)) { gchar **tmp = g_strsplit(buffer, ":", 2); if (tmp[0] && tmp[1]) { tmp[0] = g_strstrip(tmp[0]); tmp[1] = g_strstrip(tmp[1]); } else { g_strfreev(tmp); continue; } get_str("Processor", rep_pname); if ( CHECK_FOR("processor") ) { /* finish previous */ if (processor) { procs = g_slist_append(procs, processor); } /* start next */ processor = g_new0(Processor, 1); processor->id = atol(tmp[1]); if (rep_pname) processor->model_name = g_strdup(rep_pname); g_strfreev(tmp); continue; } if (!processor && ( CHECK_FOR("vendor") || CHECK_FOR("arch") || CHECK_FOR("family") ) ) { /* single proc/core may not have "processor : n" */ processor = g_new0(Processor, 1); processor->id = 0; if (rep_pname) processor->model_name = g_strdup(rep_pname); } if (processor) { get_str("vendor", processor->vendor_id); get_str("archrev", processor->archrev); get_str("arch", processor->arch); get_str("family", processor->family); get_str("features", processor->features); get_int("model", processor->model); get_int("revision", processor->revision); get_float("BogoMIPS", processor->bogomips); get_float("cpu MHz", processor->cpu_mhz); get_int("cpu regs", processor->cpu_regs); } g_strfreev(tmp); } if (processor) procs = g_slist_append(procs, processor); g_free(rep_pname); fclose(cpuinfo); /* TODO: redup */ /* data not from /proc/cpuinfo */ for (pi = procs; pi; pi = pi->next) { processor = (Processor *) pi->data; /* strings can't be null or segfault later */ STRIFNULL(processor->model_name, _("IA64 Processor") ); UNKIFNULL(processor->vendor_id); STRIFNULL(processor->arch, "IA-64"); STRIFNULL(processor->archrev, "0"); UNKIFNULL(processor->family); UNKIFNULL(processor->features); /* topo & freq */ processor->cpufreq = cpufreq_new(processor->id); processor->cputopo = cputopo_new(processor->id); if (processor->cpufreq->cpukhz_max) processor->cpu_mhz = processor->cpufreq->cpukhz_max / 1000; } return procs; } gchar *processor_name(GSList * processors) { return processor_name_default(processors); } gchar *processor_describe(GSList * processors) { return processor_describe_default(processors); } gchar * processor_get_detailed_info(Processor *processor) { gchar *tmp_cpufreq, *tmp_topology, *ret; tmp_topology = cputopo_section_str(processor->cputopo); tmp_cpufreq = cpufreq_section_str(processor->cpufreq); ret = g_strdup_printf("[%s]\n" "%s=%s\n" /* name */ "%s=%s\n" /* vendor */ "%s=%s\n" /* arch */ "%s=%s\n" /* archrev */ "%s=%s\n" /* family */ "%s=%d\n" /* model no. */ "%s=%d\n" /* revision */ "%s=%.2f %s\n" /* frequency */ "%s=%.2f\n" /* bogomips */ "%s=%s\n" /* byte order */ "%s=%d\n" /* regs */ "%s=%s\n" /* features */ "%s" /* topology */ "%s" /* frequency scaling */ "%s",/* empty */ _("Processor"), _("Name"), processor->model_name, _("Vendor"), processor->vendor_id, _("Architecture"), processor->arch, _("Architecture Revision"), processor->archrev, _("Family"), processor->family, _("Model"), processor->model, _("Revision"), processor->revision, _("Frequency"), processor->cpu_mhz, _("MHz"), _("BogoMips"), processor->bogomips, _("Byte Order"), byte_order_str(), _("CPU regs"), processor->cpu_regs, _("Features"), processor->features, tmp_topology, tmp_cpufreq, ""); g_free(tmp_cpufreq); g_free(tmp_topology); return ret; } gchar *processor_get_info(GSList * processors) { Processor *processor; if (g_slist_length(processors) > 1) { gchar *ret, *tmp, *hashkey; GSList *l; tmp = g_strdup(""); for (l = processors; l; l = l->next) { processor = (Processor *) l->data; tmp = g_strdup_printf("%s$CPU%d$%s=%.2f %s\n", tmp, processor->id, processor->model_name, processor->cpu_mhz, _("MHz")); hashkey = g_strdup_printf("CPU%d", processor->id); moreinfo_add_with_prefix("DEV", hashkey, processor_get_detailed_info(processor)); g_free(hashkey); } ret = g_strdup_printf("[$ShellParam$]\n" "ViewType=1\n" "[Processors]\n" "%s", tmp); g_free(tmp); return ret; } processor = (Processor *) processors->data; return processor_get_detailed_info(processor); } hardinfo2-hardinfo2-1331e88/modules/devices/inputdevices.c000066400000000000000000000141421474767047500235050ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "hardinfo.h" #include "devices.h" #include "usb_util.h" gchar *input_icons = NULL; static struct { char *name; char *icon; } input_devices[] = { { NULL, "module.svg" }, // UNKNOWN { "Keyboard", "keyboard.svg" }, { "Joystick", "joystick.svg" }, { "Mouse", "mouse.svg" }, { "Speaker", "audio.svg" }, { "Audio", "audio.svg" } }; // source: https://elixir.bootlin.com/linux/v5.9/source/include/uapi/linux/input.h#L251 static const gchar *bus_types[] = { NULL, "PCI", "ISA PnP", "USB", // 0x0 - 0x3 "HIL", "Bluetooth", "Virtual", NULL, // 0x4 - 0x7 NULL, NULL, NULL, NULL, // 0x8 - 0xB NULL, NULL, NULL, NULL, // 0xC - 0xF "ISA", "i8042", "XT Keyboard bus", "RS232", // 0x10 - 0x13 "Game port", "Parallel port", "Amiga bus", "ADB", // 0x14 - 0x17 "I²C", "HOST", "GSC", "Atari bus", // 0x18 - 0x1B "SPI", "RMI", "CEC", "Intel ISHTP" // 0x1C - 0x1F }; #define UNKWNIFNULL(f) ((f) ? f : _("(Unknown)")) #define EMPTYIFNULL(f) ((f) ? f : "") void __scan_input_devices(void) { FILE *dev; gchar buffer[1024]; vendor_list vl = NULL; gchar *tmp, *name = NULL, *phys = NULL; gchar *vendor_str = NULL, *product_str = NULL, *vendor_tags = NULL; gint bus = 0, vendor = 0, product = 0, version = 0; const gchar *bus_str = NULL; int d = 0, n = 0; dev = fopen("/proc/bus/input/devices", "r"); if (!dev) return; if (input_list) { moreinfo_del_with_prefix("DEV:INP"); g_free(input_list); g_free(input_icons); } input_list = g_strdup(""); input_icons = g_strdup(""); while (fgets(buffer, sizeof(buffer), dev)) { tmp = buffer; switch (*tmp) { case 'N': tmp = strreplacechr(tmp + strlen("N: Name="), "=", ':'); name = g_strdup(tmp); remove_quotes(name); break; case 'P': phys = g_strdup(tmp + strlen("P: Phys=")); break; case 'I': sscanf(tmp, "I: Bus=%x Vendor=%x Product=%x Version=%x", &bus, &vendor, &product, &version); break; case 'H': if (strstr(tmp, "kbd")) d = 1; //INPUT_KEYBOARD; else if (strstr(tmp, "js")) d = 2; //INPUT_JOYSTICK; else if (strstr(tmp, "mouse")) d = 3; //INPUT_MOUSE; else d = 0; //INPUT_UNKNOWN; break; case '\n': if (name && strstr(name, "PC Speaker")) { d = 4; // INPUT_PCSPKR } if (d == 0 && g_strcmp0(phys, "ALSA")) { d = 5; // INPUT_AUDIO } if (vendor > 0 && product > 0 && g_str_has_prefix(phys, "usb-")) { usb_lookup_ids_vendor_product_str(vendor, product, &vendor_str, &product_str); } if (bus >= 0 && (guint)bus < sizeof(bus_types) / sizeof(gchar*)) { bus_str = bus_types[bus]; } vl = vendor_list_remove_duplicates_deep(vendors_match(name, vendor_str, NULL)); vendor_tags = vendor_list_ribbon(vl, params.fmt_opts); tmp = g_strdup_printf("INP%d", ++n); input_list = h_strdup_cprintf("$%s$%s=%s|%s\n", input_list, tmp, name, EMPTYIFNULL(vendor_tags), EMPTYIFNULL(input_devices[d].name)); input_icons = h_strdup_cprintf("Icon$%s$%s=%s\n", input_icons, tmp, name, input_devices[d].icon); gchar *strhash = g_strdup_printf("[%s]\n" /* Name */ "$^$%s=%s\n" /* Type */ "%s=%s\n" /* Bus */ "%s=[0x%x] %s\n" /* Vendor */ "$^$%s=[0x%x] %s\n" /* Product */"%s=[0x%x] %s\n" /* Version */"%s=0x%x\n", _("Device Information"), _("Name"), name, _("Type"), UNKWNIFNULL(input_devices[d].name), _("Bus"), bus, UNKWNIFNULL(bus_str), _("Vendor"), vendor, UNKWNIFNULL(vendor_str), _("Product"), product, UNKWNIFNULL(product_str), _("Version"), version ); if (phys && phys[1] != 0) { strhash = h_strdup_cprintf("%s=%s\n", strhash, _("Connected to"), phys); } if (phys && strstr(phys, "ir")) { strhash = h_strdup_cprintf("%s=%s\n", strhash, _("InfraRed port"), _("Yes") ); } moreinfo_add_with_prefix("DEV", tmp, strhash); g_free(tmp); g_free(phys); g_free(name); g_free(vendor_str); g_free(vendor_tags); g_free(product_str); bus_str = NULL; vendor_str = NULL; product_str = NULL; vendor_tags = NULL; } } fclose(dev); } hardinfo2-hardinfo2-1331e88/modules/devices/loongarch64/000077500000000000000000000000001474767047500227635ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/modules/devices/loongarch64/processor.c000066400000000000000000000066551474767047500251620ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "hardinfo.h" #include "devices.h" #include "cpu_util.h" #include "dt_util.h" GSList * processor_scan(void) { Processor *processor; FILE *cpuinfo; gchar buffer[128]; cpuinfo = fopen(PROC_CPUINFO, "r"); if (!cpuinfo) return NULL; processor = g_new0(Processor, 1); while (fgets(buffer, 128, cpuinfo)) { gchar **tmp = g_strsplit(buffer, ":", 2); if (tmp[0] && tmp[1]) { tmp[0] = g_strstrip(tmp[0]); tmp[1] = g_strstrip(tmp[1]); get_str("system type", processor->vendor_id); get_str("CPU Family", processor->family); get_str("Model Name", processor->model_name); get_int("CPU Revision", processor->revision); get_float("CPU MHz", processor->cpu_mhz); get_float("BogoMIPS", processor->bogomips); get_str("Features", processor->features); } g_strfreev(tmp); } fclose(cpuinfo); return g_slist_append(NULL, processor); } gchar *processor_name(GSList * processors) { gchar *ret = NULL; gchar *compat = NULL; compat = dtr_get_string("/compatible", 1); if (compat != NULL) { //FIXME - Add table for incoming compatible DT info ret= g_strdup_printf("Loongarch64 Processor (%s/%s)",processor_name_default(processors), compat); g_free(compat); } if(!ret) ret=g_strdup_printf("Loongarch64 Processor (%s/NoDT)",processor_name_default(processors)); return ret; } gchar *processor_describe(GSList * processors) { return processor_describe_default(processors); } gchar * processor_get_info(GSList *processors) { Processor *processor = (Processor *)processors->data; return g_strdup_printf("[%s]\n" "%s=%s\n" /* vendor */ "%s=%s\n" /* family */ "%s=%s\n" /* name */ "%s=%d\n" /* revision */ "%s=%.2f %s\n" /* frequency */ "%s=%.2f\n" /* bogoMIPS */ "%s=%s\n" /* features */ "%s=%s\n", /* byte order */ _("Processor"), _("System Type"), processor->vendor_id, _("Family"), processor->family, _("Model"), processor->model_name, _("Revision"), processor->revision, _("Frequency"), processor->cpu_mhz, _("MHz"), _("BogoMIPS"), processor->bogomips, _("Features"), processor->features, _("Byte Order"), byte_order_str() ); } hardinfo2-hardinfo2-1331e88/modules/devices/m68k/000077500000000000000000000000001474767047500214225ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/modules/devices/m68k/processor.c000066400000000000000000000057531474767047500236170ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "hardinfo.h" #include "devices.h" #include "cpu_util.h" GSList * processor_scan(void) { Processor *processor; FILE *cpuinfo; gchar buffer[128]; cpuinfo = fopen(PROC_CPUINFO, "r"); if (!cpuinfo) return NULL; processor = g_new0(Processor, 1); while (fgets(buffer, 128, cpuinfo)) { gchar **tmp = g_strsplit(buffer, ":", 2); if (tmp[0] && tmp[1]) { tmp[0] = g_strstrip(tmp[0]); tmp[1] = g_strstrip(tmp[1]); get_str("CPU", processor->model_name); get_str("MMU", processor->mmu_name); get_str("FPU", processor->fpu_name); get_float("Clocking", processor->cpu_mhz); get_float("BogoMips", processor->bogomips); get_str("Calibration", processor->calibration); } g_strfreev(tmp); } gchar *tmp; tmp = g_strconcat("Motorola ", processor->model_name, NULL); g_free(processor->model_name); processor->model_name = tmp; fclose(cpuinfo); return g_slist_append(NULL, processor); } gchar *processor_name(GSList * processors) { return processor_name_default(processors); } gchar *processor_describe(GSList * processors) { return processor_describe_default(processors); } gchar * processor_get_info(GSList *processors) { Processor *processor = (Processor *)processors->data; return g_strdup_printf("[%s]\n" "%s=%s\n" /* cpu */ "%s=%s\n" /* mmu */ "%s=%s\n" /* fpu */ "%s=%.2f %s\n" /* frequency */ "%s=%.2f\n" /* bogomips */ "%s=%s\n" /* byte order */ "%s=%s\n", /* calibration */ _("Processor"), _("Model"), processor->model_name, _("MMU"), processor->mmu_name, _("FPU"), processor->fpu_name, _("Frequency"), processor->cpu_mhz, _("MHz"), _("BogoMips"), processor->bogomips, _("Byte Order"), byte_order_str(), _("Calibration"), processor->calibration ); } hardinfo2-hardinfo2-1331e88/modules/devices/mips/000077500000000000000000000000001474767047500216055ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/modules/devices/mips/processor.c000066400000000000000000000050011474767047500237640ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "hardinfo.h" #include "devices.h" #include "cpu_util.h" GSList * processor_scan(void) { Processor *processor; FILE *cpuinfo; gchar buffer[128]; cpuinfo = fopen(PROC_CPUINFO, "r"); if (!cpuinfo) return NULL; processor = g_new0(Processor, 1); while (fgets(buffer, 128, cpuinfo)) { gchar **tmp = g_strsplit(buffer, ":", 2); if (tmp[0] && tmp[1]) { tmp[0] = g_strstrip(tmp[0]); tmp[1] = g_strstrip(tmp[1]); get_str("system type", processor->vendor_id); get_str("cpu model", processor->model_name); get_float("cpu MHz", processor->cpu_mhz); get_float("BogoMIPS", processor->bogomips); } g_strfreev(tmp); } fclose(cpuinfo); return g_slist_append(NULL, processor); } gchar *processor_name(GSList * processors) { return processor_name_default(processors); } gchar *processor_describe(GSList * processors) { return processor_describe_default(processors); } gchar * processor_get_info(GSList *processors) { Processor *processor = (Processor *)processors->data; return g_strdup_printf("[%s]\n" "%s=%s\n" "%s=%s\n" "%s=%.2f %s\n" /* frequency */ "%s=%.2f\n" /* bogomips */ "%s=%s\n", /* byte order */ _("Processor"), _("Model"), processor->model_name, _("System Type"), processor->vendor_id, _("Frequency"), processor->cpu_mhz, _("MHz"), _("BogoMips"), processor->bogomips, _("Byte Order"), byte_order_str() ); } hardinfo2-hardinfo2-1331e88/modules/devices/monitors.c000066400000000000000000000431231474767047500226560ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2019 L. A. F. Pereira * Copyright (C) 2019 Burt P. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "devices.h" #include #include "util_sysobj.h" #include "util_edid.h" #include "util_ids.h" static const char monitor_icon[] = "monitor.svg"; #define UNKIFNULL2(f) ((f) ? f : _("(Unknown)")) #define UNKIFEMPTY2(f) ((*f) ? f : _("(Unknown)")) #define UNSPECIFNULL2(f) ((f) ? f : _("(Unspecified)")) gboolean no_monitors = FALSE; gchar *edid_ids_file = NULL; gchar *ieee_oui_ids_file = NULL; void find_edid_ids_file() { if (edid_ids_file) return; char *file_search_order[] = { g_build_filename(g_get_user_config_dir(), "hardinfo2", "edid.ids", NULL), g_build_filename(params.path_data, "edid.ids", NULL), NULL }; int n; for(n = 0; file_search_order[n]; n++) { if (!edid_ids_file && !access(file_search_order[n], R_OK)) edid_ids_file = file_search_order[n]; else g_free(file_search_order[n]); } auto_free(edid_ids_file); } void find_ieee_oui_ids_file() { if (ieee_oui_ids_file) return; char *file_search_order[] = { g_build_filename(g_get_user_config_dir(), "hardinfo2", "ieee_oui.ids", NULL), g_build_filename(params.path_data, "ieee_oui.ids", NULL), NULL }; int n; for(n = 0; file_search_order[n]; n++) { if (!ieee_oui_ids_file && !access(file_search_order[n], R_OK)) ieee_oui_ids_file = file_search_order[n]; else g_free(file_search_order[n]); } auto_free(ieee_oui_ids_file); } typedef struct { gchar *drm_path; gchar *drm_connection; gchar *drm_status; gchar *drm_enabled; edid *e; gchar *_vstr; /* use monitor_vendor_str() */ } monitor; #define monitor_new() g_new0(monitor, 1) monitor *monitor_new_from_sysfs(const gchar *sysfs_edid_file) { gchar *edid_bin = NULL; gsize edid_len = 0; if (!sysfs_edid_file || !*sysfs_edid_file) return NULL; monitor *m = monitor_new(); m->drm_path = g_path_get_dirname(sysfs_edid_file); m->drm_connection = g_path_get_basename(m->drm_path); gchar *drm_enabled_file = g_strdup_printf("%s/%s", m->drm_path, "enabled"); gchar *drm_status_file = g_strdup_printf("%s/%s", m->drm_path, "status"); g_file_get_contents(drm_enabled_file, &m->drm_enabled, NULL, NULL); if (m->drm_enabled) g_strstrip(m->drm_enabled); g_file_get_contents(drm_status_file, &m->drm_status, NULL, NULL); if (m->drm_status) g_strstrip(m->drm_status); g_file_get_contents(sysfs_edid_file, &edid_bin, &edid_len, NULL); if (edid_len) m->e = edid_new(edid_bin, edid_len); g_free(drm_enabled_file); g_free(drm_status_file); return m; } void monitor_free(monitor *m) { if (m) { g_free(m->_vstr); g_free(m->drm_connection); edid_free(m->e); g_free(m); } } gchar *monitor_vendor_str(monitor *m, gboolean include_value, gboolean link_name) { if (!m || !m->e) return NULL; edid_ven ven = m->e->ven; gchar v[20] = "", t[4] = ""; ids_query_result result;// = {}; memset(&result,0,sizeof(ids_query_result)); if (ven.type == VEN_TYPE_PNP) { strcpy(v, ven.pnp); strcpy(t, "PNP"); } else if (ven.type == VEN_TYPE_OUI) { strcpy(v, ven.oui_str); strcpy(t, "OUI"); } if (!m->_vstr) { if (ven.type == VEN_TYPE_PNP) { if (!edid_ids_file) find_edid_ids_file(); scan_ids_file(edid_ids_file, v, &result, -1); if (result.results[0]) m->_vstr = g_strdup(result.results[0]); } else if (ven.type == VEN_TYPE_OUI) { if (!ieee_oui_ids_file) find_ieee_oui_ids_file(); scan_ids_file(ieee_oui_ids_file, v, &result, -1); if (result.results[0]) m->_vstr = g_strdup(result.results[0]); } } gchar *ret = NULL; if (include_value) ret = g_strdup_printf("[%s:%s]", t, v); if (m->_vstr) { if (link_name) { gchar *lv = vendor_get_link(m->_vstr); ret = appfsp(ret, "%s", lv); g_free(lv); } else ret = appfsp(ret, "%s", m->_vstr); } else if (!include_value && ven.type == VEN_TYPE_PNP) { ret = appfsp(ret, "%s", ven.pnp); } else ret = appfsp(ret, "%s", _("(Unknown)")); return ret; } gchar *monitor_name(monitor *m, gboolean include_vendor) { if (!m) return NULL; gchar *desc = NULL; edid *e = m->e; if (!e) return g_strdup(_("(Unknown)")); if (include_vendor) { if (e->ven.type != VEN_TYPE_INVALID) { gchar *vstr = monitor_vendor_str(m, FALSE, FALSE); gchar *vtag = vendor_match_tag(vstr, params.fmt_opts); desc = appfsp(desc, "%s", vtag ? vtag : vstr); g_free(vstr); g_free(vtag); } else desc = appfsp(desc, "%s", "Unknown"); } if (e->img_max.diag_in) desc = appfsp(desc, "%s", e->img_max.class_inch); if (e->name) desc = appfsp(desc, "%s", e->name); else desc = appfsp(desc, "%s %s", e->a_or_d ? "Digital" : "Analog", "Display"); return desc; } gchar **get_output_lines(const char *cmd_line) { gboolean spawned; gchar *out, *err; gchar **ret = NULL; spawned = g_spawn_command_line_sync(cmd_line, &out, &err, NULL, NULL); if (spawned) { ret = g_strsplit(out, "\n", -1); g_free(out); g_free(err); } return ret; } static gchar *tag_make_safe_inplace(gchar *tag) { if (!tag) return tag; if (!g_utf8_validate(tag, -1, NULL)) return tag; //TODO: reconsider gchar *p = tag, *pd = tag; while(*p) { gchar *np = g_utf8_next_char(p); gunichar c = g_utf8_get_char_validated(p, -1); int l = g_unichar_to_utf8(c, NULL); if (l == 1 && g_unichar_isalnum(c)) { g_unichar_to_utf8(c, pd); } else { *pd = '_'; } p = np; pd++; } return tag; } static gchar *make_edid_section(monitor *m) { int i; edid *e = m->e; if (e->len) { gchar *vstr = monitor_vendor_str(m, TRUE, FALSE); gchar *dom = NULL; if (!e->dom.is_model_year && e->dom.week && e->dom.year) dom = g_strdup_printf(_("Week %d of %d"), e->dom.week, e->dom.year); else if (e->dom.year) dom = g_strdup_printf("%d", e->dom.year); gchar *bpcc = NULL; if (e->bpc) bpcc = g_strdup_printf("%d", e->bpc); int aok = e->checksum_ok; if (e->ext_blocks_fail) aok = 0; gchar *csum = aok ? _("Ok") : _("Fail"); gchar *iface; if (e->interface && e->di.exists) { gchar *tmp = g_strdup_printf("[%x] %s\n[DI-EXT:%x] %s", e->interface, _(edid_interface(e->interface)), e->di.interface, _(edid_di_interface(e->di.interface)) ); iface = gg_key_file_parse_string_as_value(tmp, '|'); g_free(tmp); } else if (e->di.exists) { iface = g_strdup_printf("[DI-EXT:%x] %s", e->di.interface, _(edid_di_interface(e->di.interface)) ); } else { iface = g_strdup_printf("[%x] %s", e->interface, e->interface ? _(edid_interface(e->interface)) : _("(Unspecified)") ); } gchar *d_list, *ext_list, *dtd_list, *cea_list, *etb_list, *std_list, *svd_list, *sad_list, *didt_list, *did_string_list; etb_list = NULL; for(i = 0; i < e->etb_count; i++) { char *desc = edid_output_describe(&e->etbs[i]); etb_list = appfnl(etb_list, "etb%d=%s", i, desc); g_free(desc); } if (!etb_list) etb_list = g_strdup_printf("%s=\n", _("(Empty List)")); std_list = NULL; for(i = 0; i < e->std_count; i++) { char *desc = edid_output_describe(&e->stds[i].out); std_list = appfnl(std_list, "std%d=%s", i, desc); g_free(desc); } if (!std_list) std_list = g_strdup_printf("%s=\n", _("(Empty List)")); d_list = NULL; for(i = 0; i < 4; i++) { char *desc = edid_base_descriptor_describe(&e->d[i]); d_list = appfnl(d_list, "descriptor%d=%s", i, desc); g_free(desc); } if (!d_list) d_list = g_strdup_printf("%s=\n", _("(Empty List)")); ext_list = NULL; for(i = 0; i < e->ext_blocks; i++) { int type = e->u8[(i+1)*128]; int version = e->u8[(i+1)*128 + 1]; ext_list = appfnl(ext_list, "ext%d = ([%02x:v%02x] %s) %s", i, type, version, _(edid_ext_block_type(type)), e->ext_ok[i] ? "ok" : "fail" ); } if (!ext_list) ext_list = g_strdup_printf("%s=\n", _("(Empty List)")); dtd_list = NULL; for(i = 0; i < e->dtd_count; i++) { char *desc = edid_dtd_describe(&e->dtds[i], 0); dtd_list = appfnl(dtd_list, "dtd%d = %s", i, desc); free(desc); } if (!dtd_list) dtd_list = g_strdup_printf("%s=\n", _("(Empty List)")); cea_list = NULL; for(i = 0; i < e->cea_block_count; i++) { char *desc = edid_cea_block_describe(&e->cea_blocks[i]); cea_list = appfnl(cea_list, "cea_block%d = %s", i, desc); } if (!cea_list) cea_list = g_strdup_printf("%s=\n", _("(Empty List)")); svd_list = NULL; for(i = 0; i < e->svd_count; i++) { char *desc = edid_output_describe(&e->svds[i].out); svd_list = appfnl(svd_list, "svd%d=%s", i, desc); g_free(desc); } if (!svd_list) svd_list = g_strdup_printf("%s=\n", _("(Empty List)")); sad_list = NULL; for(i = 0; i < e->sad_count; i++) { char *desc = edid_cea_audio_describe(&e->sads[i]); sad_list = appfnl(sad_list, "sad%d=%s", i, desc); g_free(desc); } if (!sad_list) sad_list = g_strdup_printf("%s=\n", _("(Empty List)")); didt_list = NULL; for(i = 0; i < e->didt_count; i++) { char *desc = edid_output_describe(&e->didts[i]); didt_list = appfnl(didt_list, "didt%d=%s", i, desc); g_free(desc); } if (!didt_list) didt_list = g_strdup_printf("%s=\n", _("(Empty List)")); did_string_list = NULL; for(i = 0; i < e->did_string_count; i++) { did_string_list = appfnl(did_string_list, "did_string%d=%s", i, e->did_strings[i].str); } if (!did_string_list) did_string_list = g_strdup_printf("%s=\n", _("(Empty List)")); gchar *speakers = NULL; if (e->speaker_alloc_bits) { gchar *spk_tmp = edid_cea_speaker_allocation_describe(e->speaker_alloc_bits, 0); speakers = gg_key_file_parse_string_as_value(spk_tmp, '|'); g_free(spk_tmp); } else speakers = g_strdup(_("(Unspecified)")); gchar *hex = edid_dump_hex(e, 0, 1); gchar *hex_esc = gg_key_file_parse_string_as_value(hex, '|'); g_free(hex); if (params.markup_ok) hex = g_strdup_printf("%s", hex_esc); else hex = g_strdup(hex_esc); g_free(hex_esc); gchar *ret = g_strdup_printf( /* extending "Connection" section */ "%s=%s\n" /* sig type */ "%s=%s\n" /* interface */ "%s=%s\n" /* bpcc */ "%s=%s\n" /* speakers */ "[%s]\n" "%s=%s\n" /* base out */ "%s=%s\n" /* ext out */ "[%s]\n" "$^$%s=%s\n" /* vendor */ "%s=%s\n" /* name */ "%s=[%04x-%08x] %u-%u\n" /* model, n_serial */ "%s=%s\n" /* serial */ "%s=%s\n" /* dom */ "[%s]\n" "%s=%d %s\n" /* size */ "%s=%d.%d\n" /* version */ "%s=%d\n" /* ext block */ "%s=%s\n" /* ext to */ "%s=%s %s\n" /* checksum */ "[%s]\n%s\n" "[%s]\n%s\n" "[%s]\n%s\n" "[%s]\n%s\n" "[%s]\n%s\n" "[%s]\n%s\n" "[%s]\n%s\n" "[%s]\n%s\n" "[%s]\n%s\n" "[%s]\n%s\n" "[%s]\n%s=%s\n" , _("Signal Type"), e->a_or_d ? _("Digital") : _("Analog"), _("Interface"), iface, _("Bits per Color Channel"), UNSPECIFNULL2(bpcc), _("Speaker Allocation"), speakers, _("Output (Max)"), edid_output_src(e->img.src), edid_output_describe(&e->img), edid_output_src(e->img_max.src), edid_output_describe(&e->img_max), _("EDID Device"), _("Vendor"), vstr, _("Name"), e->name, _("Model"), e->product, e->n_serial, e->product, e->n_serial, _("Serial"), UNKIFNULL2(e->serial), _("Manufacture Date"), UNKIFNULL2(dom), _("EDID Meta"), _("Data Size"), e->len, _("bytes"), _("Version"), (int)e->ver_major, (int)e->ver_minor, _("Extension Blocks"), e->ext_blocks, _("Extended to"), e->std ? _(edid_standard(e->std)) : _("(None)"), _("Checksum"), csum, aok ? "" : problem_marker(), _("EDID Descriptors"), d_list, _("Detailed Timing Descriptors (DTD)"), dtd_list, _("Established Timings Bitmap (ETB)"), etb_list, _("Standard Timings (STD)"), std_list, _("E-EDID Extension Blocks"), ext_list, _("EIA/CEA-861 Data Blocks"), cea_list, _("EIA/CEA-861 Short Audio Descriptors"), sad_list, _("EIA/CEA-861 Short Video Descriptors"), svd_list, _("DisplayID Timings"), didt_list, _("DisplayID Strings"), did_string_list, _("Hex Dump"), _("Data"), hex ); g_free(bpcc); g_free(dom); g_free(d_list); g_free(ext_list); g_free(etb_list); g_free(std_list); g_free(dtd_list); g_free(cea_list); g_free(sad_list); g_free(svd_list); g_free(didt_list); g_free(did_string_list); g_free(iface); g_free(vstr); g_free(hex); //printf("ret: %s\n", ret); return ret; } else return g_strdup(""); } gchar *monitors_get_info() { gchar *icons = g_strdup(""); gchar *ret = g_strdup_printf("[%s]\n", _("Monitors")); gchar tag_prefix[] = "DEV"; gchar **edid_files = get_output_lines("find /sys/devices -name edid"); //gchar **edid_files = get_output_lines("find /home/pburt/github/verbose-spork/junk/testing/.testing/edid2/ -name edid.*"); int i, found = 0; for(i = 0; edid_files[i]; i++) { monitor *m = monitor_new_from_sysfs(edid_files[i]); //if (m && m->e->std < STD_DISPLAYID) continue; //if (m && !m->e->interface) continue; //if (m && m->e->interface != 1) continue; if (m && !SEQ(m->drm_status, "disconnected")) { gchar *tag = g_strdup_printf("%d-%s", found, m->drm_connection); tag_make_safe_inplace(tag); gchar *desc = monitor_name(m, TRUE); gchar *edid_section = NULL; edid *e = m->e; if (e && e->checksum_ok) edid_section = make_edid_section(m); gchar *details = g_strdup_printf("[%s]\n" "%s=%s\n" "%s=%s %s\n" "%s\n", _("Connection"), _("DRM"), m->drm_connection, _("Status"), m->drm_status, m->drm_enabled, edid_section ? edid_section : "" ); moreinfo_add_with_prefix(tag_prefix, tag, details); /* moreinfo now owns *details */ ret = h_strdup_cprintf("$!%s$%s=%s\n", ret, tag, m->drm_connection, desc); icons = h_strdup_cprintf("Icon$%s$=%s\n", icons, tag, monitor_icon); g_free(desc); g_free(edid_section); found++; } monitor_free(m); } g_strfreev(edid_files); no_monitors = FALSE; if(!found) { no_monitors = TRUE; g_free(ret); ret = g_strdup_printf("[%s]\n%s=%s\n" "[$ShellParam$]\nViewType=0\n", _("Monitors"), _("Result"), _("(Empty)") ); } else { ret = h_strdup_cprintf( "[$ShellParam$]\nViewType=1\n" "ColumnTitle$TextValue=%s\n" /* DRM connection */ "ColumnTitle$Value=%s\n" /* Name */ "ShowColumnHeaders=true\n" "%s", ret, _("Connection"), _("Name"), icons ); } return ret; } gboolean monitors_hinote(const char **msg) { PARAM_NOT_UNUSED(msg); return FALSE; } hardinfo2-hardinfo2-1331e88/modules/devices/parisc/000077500000000000000000000000001474767047500221165ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/modules/devices/parisc/processor.c000066400000000000000000000145211474767047500243040ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "hardinfo.h" #include "devices.h" #include "cpu_util.h" GSList * processor_scan(void) { GSList *procs = NULL; Processor *processor = NULL; FILE *cpuinfo; gchar buffer[128]; gchar *rep_pname = NULL; GSList *pi = NULL; cpuinfo = fopen(PROC_CPUINFO, "r"); if (!cpuinfo) return NULL; #define CHECK_FOR(k) (g_str_has_prefix(tmp[0], k)) while (fgets(buffer, 128, cpuinfo)) { gchar **tmp = g_strsplit(buffer, ":", 2); if (tmp[0] && tmp[1]) { tmp[0] = g_strstrip(tmp[0]); tmp[1] = g_strstrip(tmp[1]); } else { g_strfreev(tmp); continue; } get_str("Processor", rep_pname); if ( CHECK_FOR("processor") ) { /* finish previous */ if (processor) { procs = g_slist_append(procs, processor); } /* start next */ processor = g_new0(Processor, 1); processor->id = atol(tmp[1]); if (rep_pname) processor->model_name = g_strdup(rep_pname); g_strfreev(tmp); continue; } if (!processor && ( CHECK_FOR("cpu family") || CHECK_FOR("cpu MHz") || CHECK_FOR("cpu") ) ) { /* single proc/core may not have "processor : n" */ processor = g_new0(Processor, 1); processor->id = 0; if (rep_pname) processor->model_name = g_strdup(rep_pname); } if (processor) { get_str("cpu family", processor->cpu_family); get_float("cpu MHz", processor->cpu_mhz); get_str("cpu", processor->model_name); get_float("bogomips", processor->bogomips); get_str("model name", processor->strmodel); get_str("I-cache", processor->icache_str); get_str("D-cache", processor->dcache_str); get_str("hversion", processor->hversion); get_str("sversion", processor->sversion); } g_strfreev(tmp); } if (processor) procs = g_slist_append(procs, processor); g_free(rep_pname); fclose(cpuinfo); /* TODO: redup */ /* data not from /proc/cpuinfo */ for (pi = procs; pi; pi = pi->next) { processor = (Processor *) pi->data; /* strings can't be null or segfault later */ STRIFNULL(processor->model_name, _("PA-RISC Processor") ); STRIFNULL(processor->cpu_family, "PA-RISC"); UNKIFNULL(processor->strmodel); /* topo & freq */ processor->cpufreq = cpufreq_new(processor->id); processor->cputopo = cputopo_new(processor->id); if (processor->cpufreq->cpukhz_max) processor->cpu_mhz = processor->cpufreq->cpukhz_max / 1000; } return procs; } gchar *processor_name(GSList * processors) { return processor_name_default(processors); } gchar *processor_describe(GSList * processors) { return processor_describe_default(processors); } gchar * processor_get_detailed_info(Processor *processor) { gchar *tmp_cpufreq, *tmp_topology, *ret; tmp_topology = cputopo_section_str(processor->cputopo); tmp_cpufreq = cpufreq_section_str(processor->cpufreq); ret = g_strdup_printf("[%s]\n" "%s=%s\n" "%s=%s\n" "%s=%s\n" /* model name */ "%s=%.2f %s\n" /* frequency */ "%s=%.2f\n" /* bogomips */ "%s=%s\n" /* byte order */ "%s=%s\n" /* hversion */ "%s=%s\n" /* sversion */ "[%s]\n" "I-Cache=%s\n" "D-Cache=%s\n" "%s" /* topology */ "%s" /* frequency scaling */ "%s",/* empty */ _("Processor"), _("Model"), processor->model_name, _("Architecture"), processor->cpu_family, _("System"), processor->strmodel, _("Frequency"), processor->cpu_mhz, _("MHz"), _("BogoMips"), processor->bogomips, _("Byte Order"), byte_order_str(), _("HVersion"), processor->hversion, _("SVersion"), processor->sversion, _("Cache"), processor->icache_str, processor->dcache_str, tmp_topology, tmp_cpufreq, ""); g_free(tmp_cpufreq); g_free(tmp_topology); return ret; } gchar *processor_get_info(GSList * processors) { Processor *processor; if (g_slist_length(processors) > 1) { gchar *ret, *tmp, *hashkey; GSList *l; tmp = g_strdup(""); for (l = processors; l; l = l->next) { processor = (Processor *) l->data; tmp = g_strdup_printf("%s$CPU%d$%s=%.2f %s\n", tmp, processor->id, processor->model_name, processor->cpu_mhz, _("MHz")); hashkey = g_strdup_printf("CPU%d", processor->id); moreinfo_add_with_prefix("DEV", hashkey, processor_get_detailed_info(processor)); g_free(hashkey); } ret = g_strdup_printf("[$ShellParam$]\n" "ViewType=1\n" "[Processors]\n" "%s", tmp); g_free(tmp); return ret; } processor = (Processor *) processors->data; return processor_get_detailed_info(processor); } hardinfo2-hardinfo2-1331e88/modules/devices/pci.c000066400000000000000000000177731474767047500215730ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "hardinfo.h" #include "devices.h" #include "pci_util.h" #define UNKIFNULL_AC(f) (f != NULL) ? f : _("(Unknown)"); /*See https://admin.pci-ids.ucw.cz/read/PD */ static const struct { const gchar *icon; uint32_t class; } class2icon[] = { { .class = 0x0102, .icon = "media-floppy.svg" }, { .class = 0x0200, .icon = "network-interface.svg" }, { .class = 0x0c03, .icon = "usb.svg" }, { .class = 0x0c80, .icon = "usb.svg" }, { .class = 0x0400, .icon = "gpu.svg" }, { .class = 0x0402, .icon = "modem.svg" }, { .class = 0x0403, .icon = "audio.svg" }, { .class = 0x0805, .icon = "media-sd.svg" }, { .class = 0x0d11, .icon = "bluetooth.svg" }, { .class = 0x0703, .icon = "modem.svg" }, { .class = 0x0900, .icon = "keyboard.svg" }, { .class = 0x0902, .icon = "mouse.svg" }, { .class = 0x0904, .icon = "joystick.svg" }, { .class = 0x01, .icon = "hdd.svg" }, { .class = 0x02, .icon = "network.svg" }, { .class = 0x03, .icon = "monitor.svg" }, { .class = 0x04, .icon = "audio.svg" }, { .class = 0x05, .icon = "memory.svg" }, /*{ .class = 0x05, .icon = "pcibridge.svg" },*/ { .class = 0x07, .icon = "network-connections.svg" }, /*{ .class = 0x08, .icon = "pcisystem.svg" },*/ { .class = 0x09, .icon = "inputdevices.svg" }, /*{ .class = 0x0a, .icon = "docking.svg" },*/ { .class = 0x0b, .icon = "processor.svg" }, /*{ .class = 0x0c, .icon = "serial.svg" },*/ { .class = 0x0d, .icon = "wireless.svg" }, /*{ .class = 0x0e, .icon = "intelligent.svg" },*/ /*{ .class = 0x0f, .icon = "satellite.svg" },*/ { .class = 0x10, .icon = "cryptohash.svg" }, /*{ .class = 0x11, .icon = "dsp.svg" },*/ /*{ .class = 0x12, .icon = "fpga.svg" },*/ /*{ .class = 0x13, .icon = "instrumentation.svg" },*/ /*{ .class = 0x40, .icon = "coprocessor.svg" },*/ }; static const gchar *find_icon_for_class(uint32_t class) { guint i; for (i = 0; i < G_N_ELEMENTS(class2icon); i++) { if (class2icon[i].class <= 0xff) { if ((class & 0xff00) == class2icon[i].class << 8) return class2icon[i].icon; } else if (class == class2icon[i].class) { return class2icon[i].icon; } } return "pci.svg"; } static gchar *_pci_dev(const pcid *p, gchar *icons) { gchar *str; const gchar *class, *vendor, *svendor, *product, *sproduct, *lproduct; gchar *name, *key; gboolean device_is_sdevice = (p->vendor_id == p->sub_vendor_id && p->device_id == p->sub_device_id); class = UNKIFNULL_AC(p->class_str); vendor = UNKIFNULL_AC(p->vendor_id_str); svendor = UNKIFNULL_AC(p->sub_vendor_id_str); product = UNKIFNULL_AC(p->device_id_str); sproduct = UNKIFNULL_AC(p->sub_device_id_str); lproduct = p->device_id_str ? p->device_id_str : p->class_str; lproduct = UNKIFNULL_AC(lproduct); gchar *ven_tag = vendor_match_tag(p->vendor_id_str, params.fmt_opts); gchar *sven_tag = vendor_match_tag(p->sub_vendor_id_str, params.fmt_opts); if (ven_tag) { if (sven_tag && p->vendor_id != p->sub_vendor_id) { name = g_strdup_printf("%s %s %s", sven_tag, ven_tag, lproduct); } else { name = g_strdup_printf("%s %s", ven_tag, lproduct); } } else { name = g_strdup_printf("%s %s", vendor, lproduct); } g_free(ven_tag); g_free(sven_tag); key = g_strdup_printf("PCI%04x:%02x:%02x.%01x", p->domain, p->bus, p->device, p->function); pci_list = h_strdup_cprintf("$%s$%04x:%02x:%02x.%01x=%s\n", pci_list, key, p->domain, p->bus, p->device, p->function, name); icons = h_strdup_cprintf("Icon$%s$%04x:%02x:%02x.%01x=%s\n", icons, key, p->domain, p->bus, p->device, p->function, find_icon_for_class(p->class)); gchar *vendor_device_str; if (device_is_sdevice) { vendor_device_str = g_strdup_printf( /* Vendor */ "$^$%s=[%04x] %s\n" /* Device */ "%s=[%04x] %s\n", _("Vendor"), p->vendor_id, vendor, _("Device"), p->device_id, product); } else { vendor_device_str = g_strdup_printf( /* Vendor */ "$^$%s=[%04x] %s\n" /* Device */ "%s=[%04x] %s\n" /* Sub-device vendor */ "$^$%s=[%04x] %s\n" /* Sub-device */ "%s=[%04x] %s\n", _("Vendor"), p->vendor_id, vendor, _("Device"), p->device_id, product, _("SVendor"), p->sub_vendor_id, svendor, _("SDevice"), p->sub_device_id, sproduct); } gchar *pcie_str; if (p->pcie_width_curr) { pcie_str = g_strdup_printf("[%s]\n" /* Width */ "%s=x%u\n" /* Width (max) */ "%s=x%u\n" /* Speed */ "%s=%0.1f %s\n" /* Speed (max) */ "%s=%0.1f %s\n", _("PCI Express"), _("Link Width"), p->pcie_width_curr, _("Maximum Link Width"), p->pcie_width_max, _("Link Speed"), p->pcie_speed_curr, _("GT/s"), _("Maximum Link Speed"), p->pcie_speed_max, _("GT/s") ); } else pcie_str = strdup(""); str = g_strdup_printf("[%s]\n" /* Class */ "%s=[%04x] %s\n" "%s" /* Revision */ "%s=%02x\n" /* PCIE? */ "%s" "[%s]\n" /* Driver */ "%s=%s\n" /* Modules */ "%s=%s\n" "[%s]\n" /* Domain */ "%s=%04x\n" /* Bus */ "%s=%02x\n" /* Device */ "%s=%02x\n" /* Function */ "%s=%01x\n", _("Device Information"), _("Class"), p->class, class, vendor_device_str, _("Revision"), p->revision, pcie_str, _("Driver"), _("In Use"), (p->driver) ? p->driver : _("(Unknown)"), _("Kernel Modules"), (p->driver_list) ? p->driver_list : _("(Unknown)"), _("Connection"), _("Domain"), p->domain, _("Bus"), p->bus, _("Device"), p->device, _("Function"), p->function ); g_free(pcie_str); moreinfo_add_with_prefix("DEV", key, str); /* str now owned by morinfo */ g_free(vendor_device_str); g_free(name); g_free(key); return icons; } void scan_pci_do(void) { if (pci_list) { moreinfo_del_with_prefix("DEV:PCI"); g_free(pci_list); } pci_list = g_strdup_printf("[%s]\n", _("PCI Devices")); gchar *pci_icons = g_strdup(""); pcid_list list = pci_get_device_list(0,0); list = g_slist_sort(list, (GCompareFunc)pcid_cmp_by_addy); GSList *l = list; int c = 0; while(l) { pcid *curr = (pcid*)l->data; pci_icons = _pci_dev(curr, pci_icons); c++; l=l->next; } pcid_list_free(list); if (c) { pci_list = g_strconcat(pci_list, "[$ShellParam$]\n", "ViewType=1\n", pci_icons, NULL); } else { /* NO PCI? */ pci_list = g_strconcat(pci_list, _("No PCI devices found"), "=\n", NULL); } g_free(pci_icons); } hardinfo2-hardinfo2-1331e88/modules/devices/ppc/000077500000000000000000000000001474767047500214175ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/modules/devices/ppc/processor.c000066400000000000000000000136671474767047500236170ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "hardinfo.h" #include "devices.h" #include "cpu_util.h" GSList * processor_scan(void) { GSList *procs = NULL; Processor *processor = NULL; FILE *cpuinfo; gchar buffer[128]; gchar *rep_pname = NULL; GSList *pi = NULL; cpuinfo = fopen(PROC_CPUINFO, "r"); if (!cpuinfo) return NULL; #define CHECK_FOR(k) (g_str_has_prefix(tmp[0], k)) while (fgets(buffer, 128, cpuinfo)) { gchar **tmp = g_strsplit(buffer, ":", 2); if (tmp[0] && tmp[1]) { tmp[0] = g_strstrip(tmp[0]); tmp[1] = g_strstrip(tmp[1]); } else { g_strfreev(tmp); continue; } get_str("Processor", rep_pname); if ( CHECK_FOR("processor") ) { /* finish previous */ if (processor) { procs = g_slist_append(procs, processor); } /* start next */ processor = g_new0(Processor, 1); processor->id = atol(tmp[1]); if (rep_pname) processor->model_name = g_strdup(rep_pname); g_strfreev(tmp); continue; } if (!processor && ( CHECK_FOR("cpu") || CHECK_FOR("clock") || CHECK_FOR("revision") ) ) { /* single proc/core may not have "processor : n" */ processor = g_new0(Processor, 1); processor->id = 0; if (rep_pname) processor->model_name = g_strdup(rep_pname); } if (processor) { get_str("cpu", processor->model_name); get_str("revision", processor->revision); get_float("clock", processor->cpu_mhz); get_float("BogoMIPS", processor->bogomips); } g_strfreev(tmp); } if (processor) procs = g_slist_append(procs, processor); g_free(rep_pname); fclose(cpuinfo); /* re-duplicate missing data for /proc/cpuinfo variant that de-duplicated it */ #define REDUP(f) if (dproc->f && !processor->f) processor->f = g_strdup(dproc->f); Processor *dproc; GSList *l; l = procs = g_slist_reverse(procs); while (l) { processor = l->data; if (processor->model_name) { dproc = processor; } else if (dproc) { REDUP(model_name); REDUP(revision); } l = g_slist_next(l); } procs = g_slist_reverse(procs); /* data not from /proc/cpuinfo */ for (pi = procs; pi; pi = pi->next) { processor = (Processor *) pi->data; /* strings can't be null or segfault later */ STRIFNULL(processor->model_name, _("POWER Processor") ); UNKIFNULL(processor->revision); /* topo & freq */ processor->cpufreq = cpufreq_new(processor->id); processor->cputopo = cputopo_new(processor->id); if (processor->cpufreq->cpukhz_max) processor->cpu_mhz = processor->cpufreq->cpukhz_max / 1000; } return procs; } gchar *processor_name(GSList * processors) { return processor_name_default(processors); } gchar *processor_describe(GSList * processors) { return processor_describe_default(processors); } gchar * processor_get_detailed_info(Processor *processor) { gchar *tmp_cpufreq, *tmp_topology, *ret; tmp_topology = cputopo_section_str(processor->cputopo); tmp_cpufreq = cpufreq_section_str(processor->cpufreq); ret = g_strdup_printf("[%s]\n" "%s=%s\n" /* model */ "%s=%s\n" /* revision */ "%s=%.2f %s\n" /* frequency */ "%s=%.2f\n" /* bogomips */ "%s=%s\n" /* byte order */ "%s" /* topology */ "%s" /* frequency scaling */ "%s",/* empty */ _("Processor"), _("Model"), processor->model_name, _("Revision"), processor->revision, _("Frequency"), processor->cpu_mhz, _("MHz"), _("BogoMips"), processor->bogomips, _("Byte Order"), byte_order_str(), tmp_topology, tmp_cpufreq, ""); g_free(tmp_cpufreq); g_free(tmp_topology); return ret; } gchar *processor_get_info(GSList * processors) { Processor *processor; if (g_slist_length(processors) > 1) { gchar *ret, *tmp, *hashkey; GSList *l; tmp = g_strdup(""); for (l = processors; l; l = l->next) { processor = (Processor *) l->data; tmp = g_strdup_printf("%s$CPU%d$%s=%.2f %s\n", tmp, processor->id, processor->model_name, processor->cpu_mhz, _("MHz")); hashkey = g_strdup_printf("CPU%d", processor->id); moreinfo_add_with_prefix("DEV", hashkey, processor_get_detailed_info(processor)); g_free(hashkey); } ret = g_strdup_printf("[$ShellParam$]\n" "ViewType=1\n" "[Processors]\n" "%s", tmp); g_free(tmp); return ret; } processor = (Processor *) processors->data; return processor_get_detailed_info(processor); } hardinfo2-hardinfo2-1331e88/modules/devices/printers.c000066400000000000000000000203541474767047500226530ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _XOPEN_SOURCE #define _XOPEN_SOURCE #endif #include #include #include #include "devices.h" typedef struct _CUPSDest CUPSDest; typedef struct _CUPSOption CUPSOption; struct _CUPSOption { char *name, *value; }; struct _CUPSDest { char *name, *instance; int is_default; int num_options; CUPSOption *options; }; static int (*cups_dests_get) (CUPSDest **dests) = NULL; static int (*cups_dests_free) (int num_dests, CUPSDest *dests) = NULL; static void (*cups_set_server)(const char *server) = NULL; static volatile gboolean cups_init = FALSE; GModule *cups; void init_cups(void) { const char *libcups[] = { "libcups", "libcups.so", "libcups.so.1", "libcups.so.2", NULL }; if (!(cups_dests_get && cups_dests_free)) { int i; for (i = 0; libcups[i] != NULL; i++) { cups = g_module_open(libcups[i], G_MODULE_BIND_LAZY); if (cups) break; } if (!cups) { cups_init = FALSE; return; } if (!g_module_symbol(cups, "cupsGetDests", (gpointer) & cups_dests_get) || !g_module_symbol(cups, "cupsFreeDests", (gpointer) & cups_dests_free) || !g_module_symbol(cups, "cupsSetServer", (gpointer) & cups_set_server)) { g_module_close(cups); cups_init = FALSE; return; } } cups_init = TRUE; } gchar *__cups_callback_ptype(gchar *strvalue) { if (strvalue) { unsigned value = atoi(strvalue); gchar *output = g_strdup("\n"); if (value & 0x0004) output = h_strdup_cprintf(_("\342\232\254 Can do black and white printing=\n"), output); if (value & 0x0008) output = h_strdup_cprintf(_("\342\232\254 Can do color printing=\n"), output); if (value & 0x0010) output = h_strdup_cprintf(_("\342\232\254 Can do duplexing=\n"), output); if (value & 0x0020) output = h_strdup_cprintf(_("\342\232\254 Can do staple output=\n"), output); if (value & 0x0040) output = h_strdup_cprintf(_("\342\232\254 Can do copies=\n"), output); if (value & 0x0080) output = h_strdup_cprintf(_("\342\232\254 Can collate copies=\n"), output); if (value & 0x80000) output = h_strdup_cprintf(_("\342\232\254 Printer is rejecting jobs=\n"), output); if (value & 0x1000000) output = h_strdup_cprintf(_("\342\232\254 Printer was automatically discovered and added=\n"), output); return output; } else { return g_strdup(_("Unknown")); } } gchar *__cups_callback_state(gchar *value) { if (!value) { return g_strdup(_("Unknown")); } if (g_str_equal(value, "3")) { return g_strdup(_("Idle")); } else if (g_str_equal(value, "4")) { return g_strdup(_("Printing a Job")); } else if (g_str_equal(value, "5")) { return g_strdup(_("Stopped")); } else { return g_strdup(_("Unknown")); } } gchar *__cups_callback_state_change_time(gchar *value) { struct tm tm; char buf[255]; if (value) { strptime(value, "%s", &tm); strftime(buf, sizeof(buf), "%c", &tm); return g_strdup(buf); } else { return g_strdup(_("Unknown")); } } gchar *__cups_callback_boolean(gchar *value) { if (value) { return g_strdup(g_str_equal(value, "1") ? _("Yes") : _("No")); } else { return g_strdup(_("Unknown")); } } const struct { char *key, *name; gchar *(*callback)(gchar *value); gboolean maybe_vendor; } cups_fields[] = { { "Printer Information", NULL, NULL }, { "printer-info", "Destination Name", NULL }, { "printer-make-and-model", "Make and Model", NULL, TRUE }, { "Capabilities", NULL, NULL }, { "printer-type", "#", __cups_callback_ptype }, { "Printer State", NULL, NULL }, { "printer-state", "State", __cups_callback_state }, { "printer-state-change-time", "Change Time", __cups_callback_state_change_time }, { "printer-state-reasons", "State Reasons" }, { "Sharing Information", NULL, NULL }, { "printer-is-shared", "Shared?", __cups_callback_boolean }, { "printer-location", "Physical Location" }, { "auth-info-required", "Authentication Required", __cups_callback_boolean }, { "Jobs", NULL, NULL }, { "job-hold-until", "Hold Until", NULL }, { "job-priority", "Priority", NULL }, { "printer-is-accepting-jobs", "Accepting Jobs", __cups_callback_boolean }, { "Media", NULL, NULL }, { "media", "Media", NULL }, { "finishings", "Finishings", NULL }, { "copies", "Copies", NULL }, }; void scan_printers_do(void) { guint num_dests, j, i; CUPSDest *dests; gchar *prn_id, *prn_moreinfo; g_free(printer_list); g_free(printer_icons); if (!cups_init) { init_cups(); } if(!cups_init) { printer_icons = g_strdup(""); printer_list = g_strdup(_("[Printers]\n" "No suitable CUPS library found=")); return; }else{ //only list from our own cups, use ip for faster/secure answer cups_set_server("127.0.0.1"); } /* remove old devices from global device table */ moreinfo_del_with_prefix("DEV:PRN"); num_dests = cups_dests_get(&dests); if (num_dests > 0) { printer_list = g_strdup_printf(_("[Printers (CUPS)]\n")); printer_icons = g_strdup(""); for (i = 0; i < num_dests; i++) { GHashTable *options; options = g_hash_table_new(g_str_hash, g_str_equal); for (j = 0; (int)j < dests[i].num_options; j++) { g_hash_table_insert(options, g_strdup(dests[i].options[j].name), g_strdup(dests[i].options[j].value)); } prn_id = g_strdup_printf("PRN%d", i); printer_list = h_strdup_cprintf("\n$%s$%s=%s\n", printer_list, prn_id, dests[i].name, dests[i].is_default ? ((params.markup_ok) ? "Default" : "(Default)") : ""); printer_icons = h_strdup_cprintf("\nIcon$%s$%s=printer.svg", printer_icons, prn_id, dests[i].name); prn_moreinfo = g_strdup(""); for (j = 0; j < G_N_ELEMENTS(cups_fields); j++) { if (!cups_fields[j].name) { prn_moreinfo = h_strdup_cprintf("[%s]\n", prn_moreinfo, cups_fields[j].key); } else { gchar *temp; temp = g_hash_table_lookup(options, cups_fields[j].key); if (cups_fields[j].callback) { temp = cups_fields[j].callback(temp); } else { if (temp) { /* FIXME Do proper escaping */ temp = g_strdup(strreplacechr(temp, "&=", ' ')); } else { temp = g_strdup(_("Unknown")); } } prn_moreinfo = h_strdup_cprintf("%s%s=%s\n", prn_moreinfo, cups_fields[j].maybe_vendor ? "$^$" : "", cups_fields[j].name, temp); g_free(temp); } } moreinfo_add_with_prefix("DEV", prn_id, prn_moreinfo); g_free(prn_id); g_hash_table_destroy(options); } cups_dests_free(num_dests, dests); } else { printer_list = g_strdup(_("[Printers]\n" "No printers found=\n")); } } hardinfo2-hardinfo2-1331e88/modules/devices/resources.c000066400000000000000000000111331474767047500230120ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2008 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "devices.h" static gchar *_resources = NULL; static gboolean _require_root = FALSE; #if GLIB_CHECK_VERSION(2,14,0) static GRegex *_regex_pci = NULL, *_regex_module = NULL; static gchar *_resource_obtain_name(gchar *name) { gchar *temp; if (!_regex_pci && !_regex_module) { _regex_pci = g_regex_new("^[0-9a-fA-F]{4}:[0-9a-fA-F]{2}:" "[0-9a-fA-F]{2}\\.[0-9a-fA-F]{1}$", 0, 0, NULL); _regex_module = g_regex_new("^[0-9a-zA-Z\\_\\-]+$", 0, 0, NULL); } name = g_strstrip(name); if (g_regex_match(_regex_pci, name, 0, NULL)) { temp = module_call_method_param("devices::getPCIDeviceDescription", name); if (temp) { if (params.markup_ok) return g_strdup_printf("PCI %s", (gchar *)idle_free(temp)); else return g_strdup_printf("PCI %s", (gchar *)idle_free(temp)); } } else if (g_regex_match(_regex_module, name, 0, NULL)) { temp = module_call_method_param("computer::getKernelModuleDescription", name); if (temp) { if (params.markup_ok) return g_strdup_printf("Module %s", (gchar *)idle_free(temp)); else return g_strdup_printf("Module %s", (gchar *)idle_free(temp)); } } return g_strdup(name); } #else static gchar *_resource_obtain_name(gchar *name) { return g_strdup(name); } #endif void scan_device_resources(gboolean reload) { SCAN_START(); FILE *io,*iotmp; gchar buffer[8192];//512cpus*12=6K guint i,t; gint zero_to_zero_addr = 0; struct { gchar *file; gchar *description; } resources[] = { { "/proc/ioports", "[I/O Ports]\n" },//requires root for addresses { "/proc/iomem", "[Memory]\n" },//requires root for addresses { "/proc/dma", "[DMA]\n" }, { "/proc/interrupts", "[IRQ]\n" } }; g_free(_resources); _resources = g_strdup(""); for (i = 0; i < G_N_ELEMENTS(resources); i++) { if ((io = fopen(resources[i].file, "r"))) { _resources = h_strconcat(_resources, resources[i].description, NULL); t=0; //check /run/hardinfo2/(iomem+ioports) exists and use if not root if(getuid() != 0){//not root access if(i==0) { if((iotmp = fopen("/run/hardinfo2/ioports", "r"))){ fclose(io); io = iotmp;iotmp=NULL; } } if(i==1) { if((iotmp = fopen("/run/hardinfo2/iomem", "r"))){ fclose(io); io = iotmp;iotmp=NULL; } } } while (fgets(buffer, sizeof(buffer), io)) { gchar **temp = g_strsplit(buffer, ":", 2); if((i!=3) || (temp[1]!=NULL)){//discard CPU numbers for interrupts that has no : gchar *name=NULL; if(i==3){ //Discard irq counts int a=0; while(*(temp[1]+a)==' ' || (*(temp[1]+a)>='0' && *(temp[1]+a)<='9')) a++; name = _resource_obtain_name(temp[1]+a); } else { name = _resource_obtain_name(temp[1]); } if( ((i==0) && strstr(temp[0], "0000-0000")) || ((i==1) && strstr(temp[0], "000000-000000")) ){ zero_to_zero_addr++; t++; char str[512]; sprintf(str,"%d:%s",t,temp[0]); g_free(temp[0]); temp[0]=strdup(str); } if (params.markup_ok) _resources = h_strdup_cprintf("%s=%s\n", _resources, temp[0], name); else _resources = h_strdup_cprintf(">%s=%s\n", _resources, temp[0], name); g_free(name); } g_strfreev(temp); } fclose(io); } } _require_root = zero_to_zero_addr > 2; SCAN_END(); } gchar *callback_device_resources(void) { return g_strdup(_resources); } gboolean root_required_for_resources(void) { return _require_root; } hardinfo2-hardinfo2-1331e88/modules/devices/riscv/000077500000000000000000000000001474767047500217635ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/modules/devices/riscv/processor.c000066400000000000000000000511031474767047500241460ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ /* source: https://github.com/riscv/riscv-linux/blob/riscv-next/arch/riscv/kernel/cpu.c */ #include "hardinfo.h" #include "devices.h" #include "cpu_util.h" #include "dt_util.h" #include "riscv_data.h" #include "riscv_data.c" static gchar *__cache_get_info_as_string(GSList *cpu_cache) { gchar *result = g_strdup(""); ProcessorCache *cache; GSList *cache_list; if (!cpu_cache) { return g_strdup(_("Cache information not available=\n")); } for (cache_list = cpu_cache; cache_list; cache_list = cache_list->next) { cache = (ProcessorCache *)cache_list->data; result = h_strdup_cprintf(_("Level %d (%s)=%d-way set-associative, %d sets, %dKB size\n"), result, cache->level, C_("cache-type", cache->type), cache->ways_of_associativity, cache->number_of_sets, cache->size); } return result; } /* This is not used directly, but creates translatable strings for * the type string returned from /sys/.../cache */ //static const char* cache_types[] = { // NC_("cache-type", /*/cache type, as appears in: Level 1 (Data)*/ "Data"), // NC_("cache-type", /*/cache type, as appears in: Level 1 (Instruction)*/ "Instruction"), // NC_("cache-type", /*/cache type, as appears in: Level 2 (Unified)*/ "Unified") //}; static void __cache_obtain_info(Processor *processor) { ProcessorCache *cache; gchar *endpoint, *entry, *index; gchar *uref = NULL; gint i; gint processor_number = processor->id; endpoint = g_strdup_printf("/sys/devices/system/cpu/cpu%d/cache", processor_number); for (i = 0; ; i++) { cache = g_new0(ProcessorCache, 1); index = g_strdup_printf("index%d/", i); entry = g_strconcat(index, "type", NULL); cache->type = h_sysfs_read_string(endpoint, entry); g_free(entry); if (!cache->type) { g_free(cache); g_free(index); goto fail; } entry = g_strconcat(index, "level", NULL); cache->level = h_sysfs_read_int(endpoint, entry); g_free(entry); entry = g_strconcat(index, "number_of_sets", NULL); cache->number_of_sets = h_sysfs_read_int(endpoint, entry); g_free(entry); entry = g_strconcat(index, "physical_line_partition", NULL); cache->physical_line_partition = h_sysfs_read_int(endpoint, entry); g_free(entry); entry = g_strconcat(index, "size", NULL); cache->size = h_sysfs_read_int(endpoint, entry); g_free(entry); entry = g_strconcat(index, "ways_of_associativity", NULL); cache->ways_of_associativity = h_sysfs_read_int(endpoint, entry); g_free(entry); /* unique cache references: id is nice, but share_cpu_list can be * used if it is not available. */ entry = g_strconcat(index, "id", NULL); uref = h_sysfs_read_string(endpoint, entry); g_free(entry); if (uref != NULL && *uref != 0 ) cache->uid = atoi(uref); else cache->uid = -1; g_free(uref); entry = g_strconcat(index, "shared_cpu_list", NULL); cache->shared_cpu_list = h_sysfs_read_string(endpoint, entry); g_free(entry); /* reacharound */ entry = g_strconcat(index, "../../topology/physical_package_id", NULL); cache->phy_sock = h_sysfs_read_int(endpoint, entry); g_free(entry); g_free(index); processor->cache = g_slist_append(processor->cache, cache); } fail: g_free(endpoint); } #define cmp_cache_test(f) if (a->f < b->f) return -1; if (a->f > b->f) return 1; static gint cmp_cache(ProcessorCache *a, ProcessorCache *b) { gint i = 0; cmp_cache_test(phy_sock); i = g_strcmp0(a->type, b->type); if (i!=0) return i; cmp_cache_test(level); cmp_cache_test(size); cmp_cache_test(uid); /* uid is unique among caches with the same (type, level) */ if (a->uid == -1) { /* if id wasn't available, use shared_cpu_list as a unique ref */ i = g_strcmp0(a->shared_cpu_list, b->shared_cpu_list); if (i!=0) return i; } return 0; } static gint cmp_cache_ignore_id(ProcessorCache *a, ProcessorCache *b) { gint i = 0; cmp_cache_test(phy_sock); i = g_strcmp0(a->type, b->type); if (i!=0) return i; cmp_cache_test(level); cmp_cache_test(size); return 0; } gchar *caches_summary(GSList * processors) { gchar *ret = g_strdup_printf("[%s]\n", _("Caches")); GSList *all_cache = NULL, *uniq_cache = NULL; GSList *tmp, *l; Processor *p; ProcessorCache *c, *cur = NULL; gint cur_count = 0; /* create list of all cache references */ for (l = processors; l; l = l->next) { p = (Processor*)l->data; if (p->cache) { tmp = g_slist_copy(p->cache); if (all_cache) { all_cache = g_slist_concat(all_cache, tmp); } else { all_cache = tmp; } } } if (g_slist_length(all_cache) == 0) { ret = h_strdup_cprintf("%s=\n", ret, _("(Not Available)") ); g_slist_free(all_cache); return ret; } /* ignore duplicate references */ all_cache = g_slist_sort(all_cache, (GCompareFunc)cmp_cache); for (l = all_cache; l; l = l->next) { c = (ProcessorCache*)l->data; if (!cur) { cur = c; } else { if (cmp_cache(cur, c) != 0) { uniq_cache = g_slist_prepend(uniq_cache, cur); cur = c; } } } uniq_cache = g_slist_prepend(uniq_cache, cur); uniq_cache = g_slist_reverse(uniq_cache); cur = 0, cur_count = 0; /* count and list caches */ for (l = uniq_cache; l; l = l->next) { c = (ProcessorCache*)l->data; if (!cur) { cur = c; cur_count = 1; } else { if (cmp_cache_ignore_id(cur, c) != 0) { ret = h_strdup_cprintf(_("Level %d (%s)#%d=%dx %dKB (%dKB), %d-way set-associative, %d sets\n"), ret, cur->level, C_("cache-type", cur->type), cur->phy_sock, cur_count, cur->size, cur->size * cur_count, cur->ways_of_associativity, cur->number_of_sets); cur = c; cur_count = 1; } else { cur_count++; } } } ret = h_strdup_cprintf(_("Level %d (%s)#%d=%dx %dKB (%dKB), %d-way set-associative, %d sets\n"), ret, cur->level, C_("cache-type", cur->type), cur->phy_sock, cur_count, cur->size, cur->size * cur_count, cur->ways_of_associativity, cur->number_of_sets); g_slist_free(all_cache); g_slist_free(uniq_cache); return ret; } gchar *processor_name(GSList * processors) { /* compatible contains a list of compatible hardware, so be careful * with matching order. * ex: "ti,omap3-beagleboard-xm", "ti,omap3450", "ti,omap3"; * matches "omap3 family" first. * ex: "brcm,bcm2837", "brcm,bcm2836"; * would match 2836 when it is a 2837. */ #define UNKSOC "(Unknown)" /* don't translate this */ const struct { char *search_str; char *vendor; char *soc; } dt_compat_searches[] = { { "allwinner,sun201-d1", "Allwinner", "SUN20I-D1" }, { "sifive,fu540", "SiFive", "FU540" }, { "sifive,fu740", "SiFive", "FU740" }, { "sophgo,sg2042", "Sophgo", "SG2042" }, { "sophgo,cv1800b", "Sophgo", "CV1800B" }, { "sophgo,cv1812h", "Sophgo", "CV1812H" }, { "starfive,jh7100", "StarFive", "JH7100" }, { "starfive,jh7110", "StarFive", "JH7110" }, { "starfive,visionfive-2", "StarFive", "JH7110" }, { "thead,c910", "T-Head", "C910" }, { "thead,light-lpi4a", "T-Head", "TH1520" }, // { "allwinner,", "Allwinner", UNKSOC }, { "canaan,", "Canaan", UNKSOC }, { "microchip,", "MicroChip", UNKSOC }, { "renesas,", "Renesas", UNKSOC }, { "sifive,", "SiFive", UNKSOC }, { "sophgo,", "Sophgo", UNKSOC }, { "starfive,", "StarFive", UNKSOC }, { "thead,", "T-Head", UNKSOC }, { NULL, NULL } }; gchar *ret = NULL; gchar *compat = NULL; int i; compat = dtr_get_string("/compatible", 1); if (compat != NULL) { i = 0; while(dt_compat_searches[i].search_str != NULL) { if (strstr(compat, dt_compat_searches[i].search_str) != NULL) { if(strstr(dt_compat_searches[i].soc,"Unknown")) ret = g_strdup_printf("RISC-V %s %s (%s)", dt_compat_searches[i].vendor, dt_compat_searches[i].soc, compat); else ret = g_strdup_printf("RISC-V %s %s", dt_compat_searches[i].vendor, dt_compat_searches[i].soc); break; } i++; } if(!ret) ret = g_strdup_printf("RISC-V Processor (%s)", compat); g_free(compat); } if(!ret) ret = g_strdup("RISC-V Processor (NoDT)"); return ret; } #define khzint_to_mhzdouble(k) (((double)k)/1000) #define cmp_clocks_test(f) if (a->f < b->f) return -1; if (a->f > b->f) return 1; static gint cmp_cpufreq_data(cpufreq_data *a, cpufreq_data *b) { gint i = 0; i = g_strcmp0(a->shared_list, b->shared_list); if (i!=0) return i; cmp_clocks_test(cpukhz_max); cmp_clocks_test(cpukhz_min); return 0; } static gint cmp_cpufreq_data_ignore_affected(cpufreq_data *a, cpufreq_data *b) { cmp_clocks_test(cpukhz_max); cmp_clocks_test(cpukhz_min); return 0; } gchar *clocks_summary(GSList * processors) { gchar *ret = g_strdup_printf("[%s]\n", _("Clocks")); GSList *all_clocks = NULL, *uniq_clocks = NULL; GSList *l; Processor *p; cpufreq_data *c, *cur = NULL; gint cur_count = 0; /* create list of all clock references */ for (l = processors; l; l = l->next) { p = (Processor*)l->data; if (p->cpufreq && p->cpufreq->cpukhz_max > 0) { all_clocks = g_slist_prepend(all_clocks, p->cpufreq); } } if (g_slist_length(all_clocks) == 0) { ret = h_strdup_cprintf("%s=\n", ret, _("(Not Available)") ); g_slist_free(all_clocks); return ret; } /* ignore duplicate references */ all_clocks = g_slist_sort(all_clocks, (GCompareFunc)cmp_cpufreq_data); for (l = all_clocks; l; l = l->next) { c = (cpufreq_data*)l->data; if (!cur) { cur = c; } else { if (cmp_cpufreq_data(cur, c) != 0) { uniq_clocks = g_slist_prepend(uniq_clocks, cur); cur = c; } } } uniq_clocks = g_slist_prepend(uniq_clocks, cur); uniq_clocks = g_slist_reverse(uniq_clocks); cur = 0, cur_count = 0; /* count and list clocks */ for (l = uniq_clocks; l; l = l->next) { c = (cpufreq_data*)l->data; if (!cur) { cur = c; cur_count = 1; } else { if (cmp_cpufreq_data_ignore_affected(cur, c) != 0) { ret = h_strdup_cprintf(_("%.2f-%.2f %s=%dx\n"), ret, khzint_to_mhzdouble(cur->cpukhz_min), khzint_to_mhzdouble(cur->cpukhz_max), _("MHz"), cur_count); cur = c; cur_count = 1; } else { cur_count++; } } } ret = h_strdup_cprintf(_("%.2f-%.2f %s=%dx\n"), ret, khzint_to_mhzdouble(cur->cpukhz_min), khzint_to_mhzdouble(cur->cpukhz_max), _("MHz"), cur_count); g_slist_free(all_clocks); g_slist_free(uniq_clocks); return ret; } GSList * processor_scan(void) { GSList *procs = NULL; Processor *processor = NULL; FILE *cpuinfo; gchar buffer[128]; gchar *rep_pname = NULL; GSList *pi = NULL; cpuinfo = fopen(PROC_CPUINFO, "r"); if (!cpuinfo) return NULL; #define CHECK_FOR(k) (g_str_has_prefix(tmp[0], k)) while (fgets(buffer, 128, cpuinfo)) { gchar **tmp = g_strsplit(buffer, ":", 2); if (tmp[0] && tmp[1] && !strstr(tmp[0],"isa-") ) {//just drop empty isa-ext tmp[0] = g_strstrip(tmp[0]); tmp[1] = g_strstrip(tmp[1]); } else { g_strfreev(tmp); continue; } //get_str("Processor", rep_pname); if ( CHECK_FOR("processor") ) { /* finish previous */ if (processor) { procs = g_slist_append(procs, processor); } /* start next */ processor = g_new0(Processor, 1); processor->id = atol(tmp[1]); if (rep_pname) processor->model_name = g_strdup(rep_pname); g_strfreev(tmp); continue; } if (!processor && ( CHECK_FOR("mmu") || CHECK_FOR("isa") || CHECK_FOR("uarch") ) ) { /* single proc/core may not have "hart : n" */ processor = g_new0(Processor, 1); processor->id = 0; if (rep_pname) processor->model_name = g_strdup(rep_pname); } if (processor) { get_str("mmu", processor->mmu); get_str("isa", processor->isa); get_str("uarch", processor->uarch); } g_strfreev(tmp); } if (processor) procs = g_slist_append(procs, processor); g_free(rep_pname); fclose(cpuinfo); /* TODO: redup */ /* data not from /proc/cpuinfo */ for (pi = procs; pi; pi = pi->next) { processor = (Processor *) pi->data; __cache_obtain_info(processor); /* strings can't be null or segfault later */ STRIFNULL(processor->model_name, "RISC-V Processor" ); UNKIFNULL(processor->mmu); UNKIFNULL(processor->isa); UNKIFNULL(processor->uarch); processor->flags = riscv_isa_to_flags(processor->isa); /* topo & freq */ processor->cpufreq = cpufreq_new(processor->id); processor->cputopo = cputopo_new(processor->id); if (processor->cpufreq->cpukhz_max) processor->cpu_mhz = processor->cpufreq->cpukhz_max / 1000; else processor->cpu_mhz = 0.0f; } return procs; } gchar *processor_get_capabilities_from_flags(gchar * strflags) { gchar **flags, **old; gchar *tmp = NULL; gint j = 0; flags = g_strsplit(strflags, " ", 0); old = flags; while (flags[j]) { const gchar *meaning = riscv_ext_meaning( flags[j] ); if (meaning) { tmp = h_strdup_cprintf("%s=%s\n", tmp, flags[j], meaning); } else { tmp = h_strdup_cprintf("%s=\n", tmp, flags[j]); } j++; } if (tmp == NULL || g_strcmp0(tmp, "") == 0) tmp = g_strdup_printf("%s=%s\n", "empty", _("Empty List")); g_strfreev(old); return tmp; } gchar *processor_describe(GSList * processors) { return processor_describe_by_counting_names(processors); } gchar *processor_meta(GSList * processors) { gchar *meta_soc = processor_name(processors); gchar *meta_cpu_desc = processor_describe(processors); gchar *meta_cpu_topo = processor_describe_default(processors); gchar *meta_freq_desc = processor_frequency_desc(processors); gchar *meta_clocks = clocks_summary(processors); gchar *meta_caches = caches_summary(processors); gchar *ret = NULL; UNKIFNULL(meta_cpu_desc); ret = g_strdup_printf("[%s]\n" "%s=%s\n" "%s=%s\n" "%s=%s\n" "%s=%s\n" "%s" "%s", _("SOC/Package"), _("Name"), meta_soc, _("Description"), meta_cpu_desc, _("Topology"), meta_cpu_topo, _("Logical CPU Config"), meta_freq_desc, meta_clocks, meta_caches ); g_free(meta_soc); g_free(meta_cpu_desc); g_free(meta_cpu_topo); g_free(meta_freq_desc); g_free(meta_clocks); g_free(meta_caches); return ret; } gchar *processor_get_detailed_info(Processor *processor) { gchar *tmp_flags, *tmp_cpufreq, *tmp_topology, *tmp_cache, *ret; tmp_flags = processor_get_capabilities_from_flags(processor->flags); tmp_topology = cputopo_section_str(processor->cputopo); tmp_cpufreq = cpufreq_section_str(processor->cpufreq); tmp_cache = __cache_get_info_as_string(processor->cache); ret = g_strdup_printf("[%s]\n" "%s=%s\n" /* model */ "%s=%s\n" /* isa */ "%s=%s\n" /* uarch */ "%s=%s\n" /* mmu */ "%s=%.2f %s\n" /* frequency */ "%s=%s\n" /* byte order */ "%s" /* topology */ "%s" /* frequency scaling */ "[%s]\n%s" /* cache */ "[%s]\n" /* extensions */ "%s", _("Processor"), _("Model"), processor->model_name, _("Architecture"), processor->isa, _("uarch"), processor->uarch, _("MMU"), processor->mmu, _("Frequency"), processor->cpu_mhz, _("MHz"), _("Byte Order"), byte_order_str(), tmp_topology, tmp_cpufreq, _("Cache"), tmp_cache, _("Capabilities"), tmp_flags); g_free(tmp_flags); g_free(tmp_cpufreq); g_free(tmp_topology); return ret; } gchar *processor_get_info(GSList * processors) { Processor *processor; gchar *ret, *tmp, *hashkey; gchar *meta; GSList *l; gchar *icons=g_strdup(""); tmp = g_strdup_printf("$!CPU_META$%s=\n", _("SOC/Package Information") ); meta = processor_meta(processors); moreinfo_add_with_prefix("DEV", "CPU_META", meta); for (l = processors; l; l = l->next) { processor = (Processor *) l->data; processor->model_name=processor_name(processors); icons = h_strdup_cprintf("Icon$CPU%d$cpu%d=processor.svg\n", icons, processor->id, processor->id); tmp = g_strdup_printf("%s$CPU%d$%s=%.2f %s\n", tmp, processor->id, processor->model_name, processor->cpu_mhz, _("MHz")); hashkey = g_strdup_printf("CPU%d", processor->id); moreinfo_add_with_prefix("DEV", hashkey, processor_get_detailed_info(processor)); g_free(hashkey); } ret = g_strdup_printf("[$ShellParam$]\n" "ViewType=1\n" "ColumnTitle$TextValue=%s\n" "ColumnTitle$Value=%s\n" "ColumnTitle$Extra1=%s\n" "ColumnTitle$Extra2=%s\n" "ShowColumnHeaders=true\n" "%s" "[Processors]\n" "%s", _("Device"), _("Frequency"), _("Model"), _("Socket:Core"), icons, tmp); g_free(tmp); g_free(icons); // now here's something fun... struct Info *i = info_unflatten(ret); g_free(ret); ret = info_flatten(i); return ret; } hardinfo2-hardinfo2-1331e88/modules/devices/riscv/riscv_data.c000066400000000000000000000177151474767047500242610ustar00rootroot00000000000000/* * rpiz - https://github.com/bp0/rpiz * Copyright (C) 2017 Burt P. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include #include #include #include "riscv_data.h" #ifndef C_ #define C_(Ctx, String) String #endif #ifndef NC_ #define NC_(Ctx, String) String #endif static struct { char *name, *meaning; } tab_ext_meaning[] = { { "RV32", NC_("rv-ext", /*/ext:RV32*/ "RISC-V 32-bit") }, { "RV64", NC_("rv-ext", /*/ext:RV64*/ "RISC-V 64-bit") }, { "RV128", NC_("rv-ext", /*/ext:RV128*/ "RISC-V 128-bit") }, { "E", NC_("rv-ext", /*/ext:E*/ "Base embedded integer instructions (15 registers)") }, { "I", NC_("rv-ext", /*/ext:I*/ "Base integer instructions (31 registers)") }, { "M", NC_("rv-ext", /*/ext:M*/ "Hardware integer multiply and divide") }, { "A", NC_("rv-ext", /*/ext:A*/ "Atomic memory operations") }, { "C", NC_("rv-ext", /*/ext:C*/ "Compressed 16-bit instructions") }, { "F", NC_("rv-ext", /*/ext:F*/ "Floating-point instructions, single-precision") }, { "D", NC_("rv-ext", /*/ext:D*/ "Floating-point instructions, double-precision") }, { "Q", NC_("rv-ext", /*/ext:Q*/ "Floating-point instructions, quad-precision") }, { "B", NC_("rv-ext", /*/ext:B*/ "Bit manipulation instructions") }, { "V", NC_("rv-ext", /*/ext:V*/ "Vector operations") }, { "zk", NC_("rv-ext", /*/ext:Zk*/ "Scalar Cryptography") }, { "zicntr", NC_("rv-ext", /*/ext:ZI*/ "Base Counters and Timers") }, { "zicsr", NC_("rv-ext", /*/ext:ZI*/ "Control and Status Register") }, { "zifencei",NC_("rv-ext", /*/ext:ZI*/ "Instruction-Fetch Fence") }, { "zihpm", NC_("rv-ext", /*/ext:ZI*/ "Hardware performance counters") }, { "zba", NC_("rv-ext", /*/ext:ZB*/ "Accell Index addresses") }, { "zbb", NC_("rv-ext", /*/ext:ZB*/ "Basic bit-manipulation") }, { "S", NC_("rv-ext", /*/ext:S*/ "Supervisor-level Instructions") }, { "U", NC_("rv-ext", /*/ext:U*/ "User Mode") }, { "T", NC_("rv-ext", /*/ext:T*/ "Transactional memory") }, { "P", NC_("rv-ext", /*/ext:P*/ "Packed SIMD instructions") }, { "L", NC_("rv-ext", /*/ext:L*/ "Decimal floating-point instructions") }, { "J", NC_("rv-ext", /*/ext:J*/ "Dynamically translated languages") }, { "N", NC_("rv-ext", /*/ext:N*/ "User-level interrupts") }, { NULL, NULL } }; static char all_extensions[1024] = ""; #define APPEND_EXT(f) strcat(all_extensions, f); strcat(all_extensions, " "); const char *riscv_ext_list() { int i = 0, built = 0; built = strlen(all_extensions); if (!built) { while(tab_ext_meaning[i].name != NULL) { APPEND_EXT(tab_ext_meaning[i].name); i++; } } return all_extensions; } const char *riscv_ext_meaning(const char *ext) { int i = 0, l = 0; char *c = NULL; if (ext) { c = strchr(ext, ':'); /* allow extension:version, ignore version */ if (c != NULL) l = c - ext; else l = strlen(ext); while(tab_ext_meaning[i].name != NULL) { if (strncasecmp(tab_ext_meaning[i].name, ext, l) == 0) { if (tab_ext_meaning[i].meaning != NULL) return C_("rv-ext", tab_ext_meaning[i].meaning); else return NULL; } i++; } } return NULL; } /* see RISC-V spec 2.2: Chapter 22: ISA Subset Naming Conventions */ /* Spec says case-insensitive, but I prefer single-letter extensions * capped and version string (like "2p1") with a lowercase p. */ #define RV_FIX_CASE(fstr,vo) \ p = fstr; while (*p != 0 && *p != ':') { if (!vo) *p = toupper(*p); p++; } \ if (*p == ':') while (*p != 0) { if (*p == 'P') *p = 'p'; p++; } static int riscv_isa_next(const char *isap, char *flag) { char *p = NULL, *start = NULL; char *next_sep = NULL, *next_digit = NULL; int skip_len = 0, tag_len = 0, ver_len = 0; char ext_str[32], ver_str[32]; if (isap == NULL) return 0; /* find start by skipping any '_' */ start = (char*)isap; while (*start != 0 && *start == '_') { start++; skip_len++; }; if (*start == 0) return 0; /* find next '_' or \0 */ p = start; while (*p != 0 && *p != '_') { p++; }; next_sep = p; /* find next digit that may be a version, find length of version */ p = start; while (*p != 0 && !isdigit(*p)) { p++; }; if (isdigit(*p)) next_digit = p; if (next_digit) { while (*p != 0 && (isdigit(*p) || *p == 'p' || *p == 'P') ) { if ((*p == 'p' || *p == 'P') && !isdigit(*(p+1)) ) break; ver_len++; p++; } } /* is next version nearer than next separator */ p = start; if (next_digit && next_digit < next_sep) tag_len = next_digit - p; else { tag_len = next_sep - p; ver_len = 0; } switch(*p) { //case 'X': case 'x': /* custom extension */ case 'Z': case 'z': /* custom extension */ break; default: /* single character (standard) extension */ tag_len = 1; if (next_digit != p+1) ver_len = 0; break; } memset(ext_str, 0, 32); memset(ver_str, 0, 32); if (ver_len) { strncpy(ext_str, p, tag_len); strncpy(ver_str, next_digit, ver_len); sprintf(flag, "%s:%s", ext_str, ver_str); if (tag_len == 1) { RV_FIX_CASE(flag, 0); } else { RV_FIX_CASE(flag, 1); } return skip_len + tag_len + ver_len; } else { strncpy(ext_str, p, tag_len); sprintf(flag, "%s", ext_str); if (tag_len == 1) { RV_FIX_CASE(flag, 0); } return skip_len + tag_len; } } #define FSTR_SIZE 1024 #define RV_CHECK_FOR(e) ( strncasecmp(ps, e, 2) == 0 ) #define ADD_EXT_FLAG(ext,el) memcpy(pd, ext, el); pd[el]=' '; pd[el+1]=0; pd += el + 1; char *riscv_isa_to_flags(const char *isa) { char *flags = NULL, *ps = (char*)isa, *pd = NULL; char flag_buf[256] = ""; int isa_len = 0, tl = 0; if (isa) { isa_len = strlen(isa); flags = malloc(FSTR_SIZE); if (flags) { memset(flags, 0, FSTR_SIZE); ps = (char*)isa; pd = flags; if ( RV_CHECK_FOR("RV") ) { ps += 2; } if ( RV_CHECK_FOR("32") ) { ADD_EXT_FLAG("RV32",4); ps += 2; } else if ( RV_CHECK_FOR("64") ) { ADD_EXT_FLAG("RV64",4); ps += 2; } else if ( RV_CHECK_FOR("128") ) { ADD_EXT_FLAG("RV128",5); ps += 3; } while( (tl = riscv_isa_next(ps, flag_buf)) ) { DEBUG("RISCV ISA: %s (len=%d)",flag_buf,tl); if (flag_buf[0] == 'G') { /* G = IMAFD */ flag_buf[0] = 'I'; ADD_EXT_FLAG(flag_buf,1); flag_buf[0] = 'M'; ADD_EXT_FLAG(flag_buf,1); flag_buf[0] = 'A'; ADD_EXT_FLAG(flag_buf,1); flag_buf[0] = 'F'; ADD_EXT_FLAG(flag_buf,1); flag_buf[0] = 'D'; ADD_EXT_FLAG(flag_buf,1); } else { ADD_EXT_FLAG(flag_buf,tl); } ps += tl; if (ps - isa >= isa_len) break; /* just in case */ } } } return flags; } hardinfo2-hardinfo2-1331e88/modules/devices/riscv/riscv_data.h000066400000000000000000000021321474767047500242510ustar00rootroot00000000000000/* * rpiz - https://github.com/bp0/rpiz * Copyright (C) 2017 Burt P. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef _RISCVDATA_H_ #define _RISCVDATA_H_ /* convert RISC-V ISA string to flags list */ char *riscv_isa_to_flags(const char *isa); /* all known extensions as flags list */ const char *riscv_ext_list(void); /* get meaning of flag */ const char *riscv_ext_meaning(const char *ext); #endif hardinfo2-hardinfo2-1331e88/modules/devices/s390/000077500000000000000000000000001474767047500213335ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/modules/devices/s390/processor.c000066400000000000000000000123121474767047500235150ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "hardinfo.h" #include "devices.h" #include "string.h" #include "cpu_util.h" GSList * processor_scan(void) { GSList *procs = NULL; Processor *processor = NULL; FILE *cpuinfo; gchar buffer[128]; gchar *vendor_id = NULL; gint num_procs = 0; gfloat bogomips = 0.0f; GSList *pi = NULL; cpuinfo = fopen(PROC_CPUINFO, "r"); if (!cpuinfo) return NULL; #define CHECK_FOR(k) (g_str_has_prefix(tmp[0], k)) while (fgets(buffer, 128, cpuinfo)) { gchar **tmp = g_strsplit(buffer, ":", 2); if (tmp[0] && tmp[1]) { tmp[0] = g_strstrip(tmp[0]); tmp[1] = g_strstrip(tmp[1]); } else { g_strfreev(tmp); continue; } get_str("vendor_id", vendor_id); get_int("# processors", num_procs); get_int("bogomips per cpu", bogomips); if ( CHECK_FOR("processor") ) { /* finish previous */ if (processor) { procs = g_slist_append(procs, processor); } /* start next */ processor = g_new0(Processor, 1); if (strlen(tmp[0]) >= 10) processor->id = atol(tmp[0] + 10); /* processor n: ... */ else processor->id = 0; /* idk */ processor->proc_str = g_strdup(tmp[1]); if (vendor_id) processor->model_name = g_strdup(vendor_id); if (bogomips) processor->bogomips = bogomips; g_strfreev(tmp); continue; } g_strfreev(tmp); } if (processor) procs = g_slist_append(procs, processor); g_free(vendor_id); fclose(cpuinfo); /* data not from /proc/cpuinfo */ for (pi = procs; pi; pi = pi->next) { processor = (Processor *) pi->data; /* strings can't be null or segfault later */ STRIFNULL(processor->model_name, _("S390 Processor") ); UNKIFNULL(processor->proc_str); /* topo & freq */ processor->cpufreq = cpufreq_new(processor->id); processor->cputopo = cputopo_new(processor->id); if (processor->cpufreq->cpukhz_max) processor->cpu_mhz = processor->cpufreq->cpukhz_max / 1000; else processor->cpu_mhz = 0.0f; } return procs; } gchar *processor_name(GSList * processors) { return processor_name_default(processors); } gchar *processor_describe(GSList * processors) { return processor_describe_default(processors); } gchar * processor_get_detailed_info(Processor *processor) { gchar *tmp_cpufreq, *tmp_topology, *ret; tmp_topology = cputopo_section_str(processor->cputopo); tmp_cpufreq = cpufreq_section_str(processor->cpufreq); ret = g_strdup_printf("[%s]\n" "%s=%s\n" /* model */ "%s=%s\n" /* proc string */ "%s=%.2f\n" /* bogomips */ "%s=%s\n" /* byte order */ "%s" /* topology */ "%s", /* frequency scaling */ _("Processor"), _("Model"), processor->model_name, _("ID String"), processor->proc_str, _("BogoMips"), processor->bogomips, _("Byte Order"), byte_order_str(), tmp_topology, tmp_cpufreq ); g_free(tmp_cpufreq); g_free(tmp_topology); return ret; } gchar *processor_get_info(GSList * processors) { Processor *processor; if (g_slist_length(processors) > 1) { gchar *ret, *tmp, *hashkey; GSList *l; tmp = g_strdup(""); for (l = processors; l; l = l->next) { processor = (Processor *) l->data; tmp = g_strdup_printf("%s$CPU%d$%s=%.2f %s\n", tmp, processor->id, processor->model_name, processor->cpu_mhz, _("MHz")); hashkey = g_strdup_printf("CPU%d", processor->id); moreinfo_add_with_prefix("DEV", hashkey, processor_get_detailed_info(processor)); g_free(hashkey); } ret = g_strdup_printf("[$ShellParam$]\n" "ViewType=1\n" "[Processors]\n" "%s", tmp); g_free(tmp); return ret; } processor = (Processor *) processors->data; return processor_get_detailed_info(processor); } hardinfo2-hardinfo2-1331e88/modules/devices/sensors.c000066400000000000000000000537211474767047500225050ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "devices.h" #include "expr.h" #include "hardinfo.h" #include "socket.h" #include "udisks2_util.h" #if defined(HAS_LIBSENSORS) && HAS_LIBSENSORS #include #endif gchar *sensors = NULL; gchar *sensor_icons = NULL; GHashTable *sensor_compute = NULL; GHashTable *sensor_labels = NULL; gboolean hwmon_first_run = TRUE; static gchar *last_group = NULL; static void read_sensor_labels(gchar *devname) { FILE *conf; gchar buf[256], *line, *p; gboolean lock = FALSE; gint i; /* Try to open lm-sensors config file sensors3.conf */ conf = fopen("/etc/sensors3.conf", "r"); /* If it fails, try to open sensors.conf */ if (!conf) conf = fopen("/etc/sensors.conf", "r"); if (!conf) { /* Cannot open config file. */ return; } while (fgets(buf, 256, conf)) { line = buf; remove_linefeed(line); strend(line, '#'); if (*line == '\0') { continue; } else if (lock && strstr(line, "label")) { /* label lines */ gchar **names = g_strsplit(strstr(line, "label") + 5, " ", 0); gchar *key = NULL, *value = NULL; for (i = 0; names[i]; i++) { if (names[i][0] == '\0') continue; if (!key) key = g_strdup_printf("%s/%s", devname, names[i]); else if (!value) value = g_strdup(names[i]); else value = g_strconcat(value, " ", names[i], NULL); } remove_quotes(value); g_hash_table_insert(sensor_labels, key, g_strstrip(value)); g_strfreev(names); } else if (lock && strstr(line, "ignore")) { /* ignore lines */ p = strstr(line, "ignore") + 6; if (!strchr(p, ' ')) continue; while (*p == ' ') p++; g_hash_table_insert(sensor_labels, g_strdup_printf("%s/%s", devname, p), "ignore"); } else if (lock && strstr(line, "compute")) { /* compute lines */ strend(line, ','); gchar **formulas = g_strsplit(strstr(line, "compute") + 7, " ", 0); gchar *key = NULL, *formula = NULL; for (i = 0; formulas[i]; i++) { if (formulas[i][0] == '\0') continue; if (!key) key = g_strdup_printf("%s/%s", devname, formulas[i]); else if (!formula) formula = g_strdup(formulas[i]); else formula = g_strconcat(formula, formulas[i], NULL); } g_strfreev(formulas); g_hash_table_insert(sensor_compute, key, math_string_to_postfix(formula)); } else if (g_str_has_prefix(line, "chip")) { /* chip lines (delimiter) */ if (lock == FALSE) { gchar **chips = g_strsplit(line, " ", 0); for (i = 1; chips[i]; i++) { strend(chips[i], '*'); if (g_str_has_prefix(chips[i] + 1, devname)) { lock = TRUE; break; } } g_strfreev(chips); } else { break; } } } fclose(conf); } static void add_sensor(const char *type, const char *sensor, const char *parent, double value, const char *unit, const char *icon) { char key[64]; snprintf(key, sizeof(key), "%s/%s", parent, sensor); if (SENSORS_GROUP_BY_TYPE) { // group by type if (g_strcmp0(last_group, type) != 0) { sensors = h_strdup_cprintf("[%s]\n", sensors, type); g_free(last_group); last_group = g_strdup(type); } sensors = h_strdup_cprintf("$%s$%s=%.2f%s|%s\n", sensors, key, sensor, value, unit, parent); } else { // group by device source / driver if (g_strcmp0(last_group, parent) != 0) { sensors = h_strdup_cprintf("[%s]\n", sensors, parent); g_free(last_group); last_group = g_strdup(parent); } sensors = h_strdup_cprintf("$%s$%s=%.2f%s|%s\n", sensors, key, sensor, value, unit, type); } if (icon != NULL) { sensor_icons = h_strdup_cprintf("Icon$%s$%s=%s.svg\n", sensor_icons, key, sensor, icon); } moreinfo_add_with_prefix("DEV", key, g_strdup_printf("%.2f%s", value, unit)); lginterval = h_strdup_cprintf("UpdateInterval$%s=1000\n", lginterval, key); } static gchar *get_sensor_label_from_conf(gchar *key) { gchar *ret; ret = g_hash_table_lookup(sensor_labels, key); if (ret) return g_strdup(ret); return NULL; } static float adjust_sensor(gchar *key, float value) { GSList *postfix; postfix = g_hash_table_lookup(sensor_compute, key); if (!postfix) return value; return math_postfix_eval(postfix, value); } static char *get_sensor_path(int number, const char *prefix) { return g_strdup_printf("/sys/class/hwmon/hwmon%d/%s", number, prefix); } static char *determine_devname_for_hwmon_path(char *path) { char *tmp, *devname = NULL; // device name tmp = g_strdup_printf("%s/name", path); g_file_get_contents(tmp, &devname, NULL, NULL); g_free(tmp); if (devname) return g_strstrip(devname); // fallback: driver name (from driver link) tmp = g_strdup_printf("%s/device/driver", path); devname = g_file_read_link(tmp, NULL); g_free(tmp); if (!devname) { // fallback: device folder name (from device link) tmp = g_strdup_printf("%s/device", path); devname = g_file_read_link(tmp, NULL); g_free(tmp); } if (devname) { tmp = g_path_get_basename(devname); g_free(devname); return tmp; } return g_strdup("unknown"); } struct HwmonSensor { const char *friendly_name; const char *value_file_regex; const char *value_path_format; const char *label_path_format; const char *key_format; const char *unit; const float adjust_ratio; const char *icon; }; static const struct HwmonSensor hwmon_sensors[] = { { "Fan Speed", "^fan([0-9]+)_input$", "%s/fan%d_input", "%s/fan%d_label", "fan%d", " RPM", 1.0, "fan" }, { "Temperature", "^temp([0-9]+)_input$", "%s/temp%d_input", "%s/temp%d_label", "temp%d", "\302\260C", 1000.0, "therm" }, { "Voltage", "^in([0-9]+)_input$", "%s/in%d_input", "%s/in%d_label", "in%d", "V", 1000.0, "bolt" }, { "Current", "^curr([0-9]+)_input$", "%s/curr%d_input", "%s/curr%d_label", "curr%d", " A", 1000.0, "bolt" }, { "Power", "^power([0-9]+)_input$", "%s/power%d_input", "%s/power%d_label", "power%d", " W", 1000000.0, "bolt" }, { "CPU Voltage", "^cpu([0-9]+)_vid$", "%s/cpu%d_vid", NULL, "cpu%d_vid", " V", 1000.0, "bolt" }, { } }; static const char *hwmon_prefix[] = {"device", "", NULL}; static gboolean read_raw_hwmon_value(gchar *path_hwmon, const gchar *item_path_format, int item_id, gchar **result){ gchar *full_path; gboolean file_result; if (item_path_format == NULL) return FALSE; full_path = g_strdup_printf(item_path_format, path_hwmon, item_id); file_result = g_file_get_contents(full_path, result, NULL, NULL); g_free(full_path); return file_result; } static void read_sensors_hwmon(void) { int hwmon, count, min, max; gchar *path_hwmon, *tmp, *devname, *name, *mon, *key; const char **prefix, *entry; GDir *dir; GRegex *regex; GMatchInfo *match_info; GError *err = NULL; for (prefix = hwmon_prefix; *prefix; prefix++) { hwmon = 0; path_hwmon = get_sensor_path(hwmon, *prefix); while (path_hwmon && g_file_test(path_hwmon, G_FILE_TEST_EXISTS)) { const struct HwmonSensor *sensor; devname = determine_devname_for_hwmon_path(path_hwmon); DEBUG("hwmon%d has device=%s", hwmon, devname); if (hwmon_first_run) { read_sensor_labels(devname); } dir = g_dir_open(path_hwmon, 0, NULL); if (!dir) continue; for (sensor = hwmon_sensors; sensor->friendly_name; sensor++) { DEBUG("current sensor type=%s", sensor->friendly_name); regex = g_regex_new (sensor->value_file_regex, 0, 0, &err); if (err != NULL){ g_free(err); err = NULL; continue; } g_dir_rewind(dir); min = 999; max = -1; while ((entry = g_dir_read_name(dir))) { g_regex_match(regex, entry, 0, &match_info); if (g_match_info_matches(match_info)) { tmp = g_match_info_fetch(match_info, 1); count = atoi(tmp); g_free (tmp); if (count < min){ min = count; } if (count > max){ max = count; } } g_match_info_free(match_info); } g_regex_unref(regex); for (count = min; count <= max; count++) { if (!read_raw_hwmon_value(path_hwmon, sensor->value_path_format, count, &tmp)) { continue; } mon = g_strdup_printf(sensor->key_format, count); key = g_strdup_printf("%s/%s", devname, mon); name = get_sensor_label_from_conf(key); if (name == NULL){ if (read_raw_hwmon_value(path_hwmon, sensor->label_path_format, count, &name)){ name = g_strchomp(name); } else{ name = g_strdup(mon); } } if (!g_str_equal(name, "ignore")) { float adjusted = adjust_sensor(key, atof(tmp) / sensor->adjust_ratio); add_sensor(sensor->friendly_name, name, devname, adjusted, sensor->unit, sensor->icon); } g_free(tmp); g_free(mon); g_free(key); g_free(name); } } g_dir_close(dir); g_free(path_hwmon); g_free(devname); path_hwmon = get_sensor_path(++hwmon, *prefix); } g_free(path_hwmon); } hwmon_first_run = FALSE; } static void read_sensors_acpi(void) { const gchar *path_tz = "/proc/acpi/thermal_zone"; if (g_file_test(path_tz, G_FILE_TEST_EXISTS)) { GDir *tz; if ((tz = g_dir_open(path_tz, 0, NULL))) { const gchar *entry; while ((entry = g_dir_read_name(tz))) { gchar *path = g_strdup_printf("%s/%s/temperature", path_tz, entry); gchar *contents; if (g_file_get_contents(path, &contents, NULL, NULL)) { int temperature; sscanf(contents, "temperature: %d C", &temperature); add_sensor("Temperature", entry, "ACPI Thermal Zone", temperature, "\302\260C", "therm"); } } g_dir_close(tz); } } } // Sensors for Apple PowerPC devices using Windfarm driver. struct WindfarmSensorType { const char *type; const char *icon; const char *file_regex; const char *unit; gboolean with_decimal_p; }; static const struct WindfarmSensorType windfarm_sensor_types[] = { {"Fan", "fan", "^[a-z-]+-fan(-[0-9]+)?$", " RPM", FALSE}, {"Temperature", "therm", "^[a-z-]+-temp(-[0-9]+)?$", "\302\260C", TRUE}, {"Power", "bolt", "^[a-z-]+-power(-[0-9]+)?$", " W", TRUE}, {"Current", "bolt", "^[a-z-]+-current(-[0-9]+)?$", " A", TRUE}, {"Voltage", "bolt", "^[a-z-]+-voltage(-[0-9]+)?$", " V", TRUE}, { } }; static void read_sensors_windfarm(void) { const gchar *path_wf = "/sys/devices/platform/windfarm.0"; GDir *wf; gchar *tmp = NULL; gint v1, v2; double value; wf = g_dir_open(path_wf, 0, NULL); if (wf) { GRegex *regex; GError *err = NULL; const gchar *entry; const struct WindfarmSensorType *sensor; for (sensor = windfarm_sensor_types; sensor->type; sensor++) { DEBUG("current windfarm sensor type=%s", sensor->type); regex = g_regex_new(sensor->file_regex, 0, 0, &err); if (err != NULL) { g_free(err); err = NULL; continue; } g_dir_rewind(wf); while ((entry = g_dir_read_name(wf))) { if (g_regex_match(regex, entry, 0, NULL)) { gchar *path = g_strdup_printf("%s/%s", path_wf, entry); if (g_file_get_contents(path, &tmp, NULL, NULL)) { if (sensor->with_decimal_p) { // format source // https://elixir.free-electrons.com/linux/v5.14/source/drivers/macintosh/windfarm_core.c#L301 sscanf(tmp, "%d.%03d", &v1, &v2); value = v1 + (v2 / 1000.0); } else { value = (double)atoi(tmp); } g_free(tmp); tmp = g_strdup(entry); add_sensor(sensor->type, g_strdelimit(tmp, "-", ' '), "windfarm", value, sensor->unit, sensor->icon); g_free(tmp); } g_free(path); } } g_regex_unref(regex); } g_dir_close(wf); } } static void read_sensors_sys_thermal(void) { const gchar *path_tz = "/sys/class/thermal"; if (g_file_test(path_tz, G_FILE_TEST_EXISTS)) { GDir *tz; if ((tz = g_dir_open(path_tz, 0, NULL))) { const gchar *entry; while ((entry = g_dir_read_name(tz))) { gchar *path = g_strdup_printf("%s/%s/temp", path_tz, entry); gchar *contents; if (g_file_get_contents(path, &contents, NULL, NULL)) { int temperature; sscanf(contents, "%d", &temperature); add_sensor("Temperature", entry, "thermal", temperature / 1000.0, "\302\260C", "therm"); g_free(contents); } } g_dir_close(tz); } } } static void read_sensors_omnibook(void) { const gchar *path_ob = "/proc/omnibook/temperature"; gchar *contents; if (g_file_get_contents(path_ob, &contents, NULL, NULL)) { int temperature; sscanf(contents, "CPU temperature: %d C", &temperature); add_sensor("Temperature", "CPU", "omnibook", temperature, "\302\260C", "therm"); g_free(contents); } } static void read_sensors_hddtemp(void) { Socket *s; gchar buffer[1024]; gint len = 0; if (!(s = sock_connect("127.0.0.1", 7634))) return; while (!len) len = sock_read(s, buffer, sizeof(buffer)); sock_close(s); if (len > 2 && buffer[0] == '|' && buffer[1] == '/') { gchar **disks; int i; disks = g_strsplit(buffer, "||", 0); for (i = 0; disks[i]; i++) { gchar **fields = g_strsplit(disks[i] + 1, "|", 5); /* * 0 -> /dev/hda * 1 -> FUJITSU MHV2080AH * 2 -> 41 * 3 -> C */ const gchar *unit = strcmp(fields[3], "C") ? "\302\260F" : "\302\260C"; add_sensor("Drive Temperature", fields[1], "hddtemp", atoi(fields[2]), unit, "therm"); g_strfreev(fields); } g_strfreev(disks); } } static void read_sensors_udisks2(void) { GSList *node; GSList *temps; udiskt *disk; temps = get_udisks2_temps(); if (temps == NULL) return; for (node = temps; node != NULL; node = node->next) { disk = (udiskt *)node->data; add_sensor("Drive Temperature", disk->drive, "udisks2", disk->temperature, "\302\260C", "therm"); udiskt_free(disk); } g_slist_free(temps); } #if HAS_LIBSENSORS static const struct libsensors_feature_type { const char *type_name; const char *icon; const char *unit; sensors_subfeature_type input; } libsensors_feature_types[SENSORS_FEATURE_MAX] = { [SENSORS_FEATURE_FAN] = {"Fan", "fan", "RPM", SENSORS_SUBFEATURE_FAN_INPUT}, [SENSORS_FEATURE_TEMP] = {"Temperature", "therm", "\302\260C", SENSORS_SUBFEATURE_TEMP_INPUT}, [SENSORS_FEATURE_POWER] = {"Power", "bolt", "W", SENSORS_SUBFEATURE_POWER_INPUT}, [SENSORS_FEATURE_CURR] = {"Current", "bolt", "A", SENSORS_SUBFEATURE_CURR_INPUT}, [SENSORS_FEATURE_IN] = {"Voltage", "bolt", "V", SENSORS_SUBFEATURE_IN_INPUT}, [SENSORS_FEATURE_VID] = {"CPU Voltage", "bolt", "V", SENSORS_SUBFEATURE_VID}, }; static gboolean libsensors_initialized; static int read_sensors_libsensors(void) { char chip_name_buf[512]; const sensors_chip_name *name; int chip_nr = 0; int added_sensors = 0; if (!libsensors_initialized) return 0; while ((name = sensors_get_detected_chips(NULL, &chip_nr))) { const struct sensors_feature *feat; int feat_nr = 0; sensors_snprintf_chip_name(chip_name_buf, 512, name); while ((feat = sensors_get_features(name, &feat_nr))) { const struct libsensors_feature_type *feat_descr; const struct sensors_subfeature *subfeat; double value; feat_descr = &libsensors_feature_types[feat->type]; if (!feat_descr->type_name) continue; subfeat = sensors_get_subfeature(name, feat, feat_descr->input); if (!subfeat) continue; if (!sensors_get_value(name, subfeat->number, &value)) { char *label = sensors_get_label(name, feat); gchar *label_with_chip = g_strdup_printf("%s (%s)", label, chip_name_buf); add_sensor(feat_descr->type_name, label_with_chip, "libsensors", value, feat_descr->unit, feat_descr->icon); free(label_with_chip); free(label); added_sensors++; } } } return added_sensors; } #else static int read_sensors_libsensors(void) { return 0; } #endif void scan_sensors_do(void) { g_free(sensors); g_free(sensor_icons); g_free(last_group); last_group = NULL; sensors = g_strdup(""); sensor_icons = g_strdup(""); g_free(lginterval); lginterval = g_strdup(""); if (read_sensors_libsensors() == 0) { read_sensors_hwmon(); read_sensors_acpi(); read_sensors_sys_thermal(); read_sensors_omnibook(); } read_sensors_windfarm(); read_sensors_hddtemp(); read_sensors_udisks2(); } void sensor_init(void) { #if HAS_LIBSENSORS libsensors_initialized = sensors_init(NULL) == 0; #endif sensor_labels = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free); sensor_compute = g_hash_table_new(g_str_hash, g_str_equal); } void sensor_shutdown(void) { #if HAS_LIBSENSORS sensors_cleanup(); #endif g_hash_table_destroy(sensor_labels); g_hash_table_destroy(sensor_compute); } hardinfo2-hardinfo2-1331e88/modules/devices/sh/000077500000000000000000000000001474767047500212475ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/modules/devices/sh/processor.c000066400000000000000000000062341474767047500234370ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "hardinfo.h" #include "devices.h" #include "cpu_util.h" GSList * processor_scan(void) { Processor *processor; FILE *cpuinfo; gchar buffer[128]; cpuinfo = fopen(PROC_CPUINFO, "r"); if (!cpuinfo) return NULL; processor = g_new0(Processor, 1); while (fgets(buffer, 128, cpuinfo)) { gchar **tmp = g_strsplit(buffer, ":", 2); if (tmp[0] && tmp[1]) { tmp[0] = g_strstrip(tmp[0]); tmp[1] = g_strstrip(tmp[1]); get_str("machine", processor->vendor_id); get_str("cpu type", processor->model_name); get_str("cpu family", processor->family); get_float("cpu clock", processor->cpu_mhz); get_float("bus clock", processor->bus_mhz); get_float("module clock", processor->mod_mhz); get_float("bogomips", processor->bogomips); } g_strfreev(tmp); } fclose(cpuinfo); STRIFNULL(processor->model_name, _("SuperH Processor")); UNKIFNULL(processor->vendor_id); return g_slist_append(NULL, processor); } gchar *processor_name(GSList * processors) { return processor_name_default(processors); } gchar *processor_describe(GSList * processors) { return processor_describe_default(processors); } gchar * processor_get_info(GSList *processors) { Processor *processor = (Processor *)processors->data; return g_strdup_printf("[%s]\n" "%s=%s\n" /* cpu type */ "%s=%s\n" /* machine */ "%s=%s\n" /* family */ "%s=%.2f %s\n" /* frequency */ "%s=%.2f %s\n" /* bus frequency */ "%s=%.2f %s\n" /* module frequency */ "%s=%.2f\n" /* bogomips */ "%s=%s\n", /* byte order */ _("Processor"), _("Name"), processor->model_name, _("Machine"), processor->vendor_id, _("Family"), processor->family, _("Frequency"), processor->cpu_mhz, _("MHz"), _("Bus Frequency"), processor->bus_mhz, _("MHz"), _("Module Frequency"), processor->mod_mhz, _("MHz"), _("BogoMips"), processor->bogomips, _("Byte Order"), byte_order_str() ); } hardinfo2-hardinfo2-1331e88/modules/devices/sparc/000077500000000000000000000000001474767047500217455ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/modules/devices/sparc/processor.c000066400000000000000000000045521474767047500241360ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "hardinfo.h" #include "devices.h" #include "cpu_util.h" GSList * processor_scan(void) { Processor *processor; FILE *cpuinfo; gchar buffer[128]; cpuinfo = fopen(PROC_CPUINFO, "r"); if (!cpuinfo) return NULL; processor = g_new0(Processor, 1); while (fgets(buffer, 128, cpuinfo)) { gchar **tmp = g_strsplit(buffer, ":", 2); if (tmp[0] && tmp[1]) { tmp[0] = g_strstrip(tmp[0]); tmp[1] = g_strstrip(tmp[1]); get_str("cpucaps", processor->cpucaps); get_str("cpu", processor->model_name); get_str("fpu", processor->has_fpu); } g_strfreev(tmp); } fclose(cpuinfo); processor->cpu_mhz = 0.0f; return g_slist_append(NULL, processor); } gchar *processor_name(GSList * processors) { return processor_name_default(processors); } gchar *processor_describe(GSList * processors) { return processor_describe_default(processors); } gchar * processor_get_info(GSList *processors) { Processor *processor = (Processor *)processors->data; return g_strdup_printf("[%s]\n" "%s=%s\n" /* cpu */ "%s=%s\n" /* fpu */ "%s=%s\n" /* byte order */ "%s=%s\n", /* caps */ _("Processor"), _("CPU"), processor->model_name, _("FPU"), processor->has_fpu, _("Byte Order"), byte_order_str(), _("Capabilities"), processor->cpucaps ); } hardinfo2-hardinfo2-1331e88/modules/devices/spd-decode.c000066400000000000000000001367551474767047500230310ustar00rootroot00000000000000/* * spd-decode.c * Copyright (c) 2010 L. A. F. Pereira * modified by Ondrej Čerman (2019) * modified by Burt P. (2019) * Copyright (c) 2024 hwspeedy * * Based on decode-dimms.pl * Copyright 1998, 1999 Philip Edelbrock * modified by Christian Zuckschwerdt * modified by Burkart Lingner * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include #include #include #include "devices.h" #include "hardinfo.h" #include "spd-decode.h" int Crc16 (char *ptr, int count) { int crc, i; crc = 0; while (--count >= 0) { crc = crc ^ (int)*ptr++ << 8; for (i = 0; i < 8; ++i) if (crc & 0x8000) crc = crc << 1 ^ 0x1021; else crc = crc << 1; } return (crc & 0xFFFF); } int parity(int value) { value ^= value >> 16; value ^= value >> 8; value ^= value >> 4; value &= 0xf; return (0x6996 >> value) & 1; } typedef struct { const char *driver; const char *dir_path; const gint max_size; const gboolean use_sysfs; const char *spd_name; } SpdDriver; static const SpdDriver spd_drivers[] = { #ifdef DEBUG { "", "/.", 2048, FALSE, ""}, //scans /eeprom-FILENAME #endif { "espd5216", "/sys/bus/i2c/drivers/espd5216", 2048, TRUE, "espd5216"},//DDR5 { "spd5118", "/sys/bus/i2c/drivers/spd5118", 1024, TRUE, "spd5118"},//DDR5 { "ee1004", "/sys/bus/i2c/drivers/ee1004" , 512, TRUE, "ee1004"},//DDR4 { "at24", "/sys/bus/i2c/drivers/at24" , 256, TRUE, "spd"},//improved detection used for DDR3-- { "eeprom", "/sys/bus/i2c/drivers/eeprom" , 256, TRUE, "eeprom"},//Wildcard DDR3-- /*{ "eeprom-proc", "/proc/sys/dev/sensors" , 256, FALSE, NULL},*/ { NULL } }; int decode_ram_type(unsigned char *bytes) { if (bytes[0] < 4) { switch (bytes[2]) { case 1: return DIRECT_RAMBUS; case 17: return RAMBUS; } } else { switch (bytes[2]) { case 1: return FPM_DRAM; case 2: return EDO; case 3: return PIPELINED_NIBBLE; case 4: return SDR_SDRAM; case 5: return MULTIPLEXED_ROM; case 6: return DDR_SGRAM; case 7: return DDR_SDRAM; case 8: return DDR2_SDRAM; case 9: return DDR2_SDRAM;//FB-DIMM case 10: return DDR2_SDRAM;//FB-DIMM PROBE case 11: return DDR3_SDRAM; case 12: return DDR4_SDRAM; case 14: return DDR4_SDRAM;//DDR4E case 15: return DDR3_SDRAM;//LPDDR3 case 16: return DDR4_SDRAM;//LPDDR4 case 17: return DDR4_SDRAM;//LPDDR4X case 18: return DDR5_SDRAM; case 19: return DDR5_SDRAM;//LPDDR5 case 20: return UNKNOWN;//DDR5_SDRAM;//DDR5 NVDIMM-P case 21: return DDR5_SDRAM;//LPDDR5X } } return UNKNOWN; } void decode_old_manufacturer(spd_data *spd) { if(spd->spd_size>72){ unsigned char first; int ai = 0; int len = 8; unsigned char *bytes = 64 + spd -> bytes; do { ai++; } while ((--len && (*bytes++ == 0x7f))); first = *--bytes; if (ai == 0) spd->vendor_str = "Invalid"; else if (parity(first) != 1) spd->vendor_str = "Invalid"; else spd->vendor_str = (char *)JEDEC_MFG_STR(ai - 1, (first & 0x7f) - 1); } } void decode_manufacturer(spd_data *spd, int MLSB, int MMSB, int CLSB, int CMSB) { if((MLSB>=0) && (MMSB < spd->spd_size)&&(MLSB < spd->spd_size)){ unsigned char McodeLSB=spd->bytes[MLSB]; unsigned char McodeMSB=spd->bytes[MMSB]; //Module if (((McodeMSB == 0) && (McodeLSB == 0)) || ((McodeMSB == 255) && (McodeLSB == 255))) { spd->vendor_str=_("Unspecified"); } else if (parity(McodeMSB) != 1 || parity(McodeLSB) != 1) { spd->vendor_str=_("Invalid"); } else { spd->vendor_bank = McodeLSB & 0x7f; spd->vendor_index = McodeMSB & 0x7f; if (spd->vendor_bank >= VENDORS_BANKS) { spd->vendor_str=NULL; } else spd->vendor_str=(char *)JEDEC_MFG_STR(spd->vendor_bank, spd->vendor_index - 1); } } //CHIP DRAM if((CLSB>=0) && (CLSB < spd->spd_size)&&(CMSB < spd->spd_size)){ unsigned char CcodeLSB=spd->bytes[CLSB]; unsigned char CcodeMSB=spd->bytes[CMSB]; if (((CcodeMSB == 0) && (CcodeLSB == 0)) || ((CcodeMSB == 255) && (CcodeLSB == 255))) { spd->dram_vendor_str=_("Unspecified"); } else if (parity(CcodeMSB) != 1 || parity(CcodeLSB) != 1) { spd->dram_vendor_str=_("Invalid"); } else { spd->dram_vendor_bank = CcodeLSB & 0x7f; spd->dram_vendor_index = CcodeMSB & 0x7f; if (spd->dram_vendor_bank >= VENDORS_BANKS) { spd->dram_vendor_str=NULL; } else spd->dram_vendor_str=(char *)JEDEC_MFG_STR(spd->dram_vendor_bank, spd->dram_vendor_index - 1); } } } void decode_module_date(spd_data *spd, int Week, int Year) { if((Week < spd->spd_size) && (Year < spd->spd_size)){ unsigned char weekb=spd->bytes[Week]; unsigned char yearb=spd->bytes[Year]; if ((yearb == 0x0) || (yearb == 0xff) || (weekb == 0x0) || (weekb == 0xff)) return; spd->week = (weekb>>4) & 0xf; spd->week *= 10; spd->week += weekb & 0xf; spd->year = (yearb>>4) & 0xf; spd->year *= 10; spd->year += yearb & 0xf; spd->year += 2000; } } void decode_module_partno(spd_data *spd, int start, int end) { unsigned int j=0; if( (spd->spd_size > end) ){ int i=start; while(i<=end){ if((spd->bytes[i]>=' ') && (jpartno)-1)) spd->partno[j++]=(char)spd->bytes[i]; i++; } } spd->partno[j]=0; } void decode_module_serialno(spd_data *spd, int SN) { if (spd->spd_size > SN+3) { sprintf(spd->serialno,"0x%02x%02x%02x%02x",spd->bytes[SN],spd->bytes[SN+1],spd->bytes[SN+2],spd->bytes[SN+3]); } } /* -------------------------------------------------- */ /* ----------------------- SDR ---------------------- */ /* -------------------------------------------------- */ void decode_sdr_basic(spd_data *spd){ sprintf(spd->type_detail, "SDR"); decode_module_partno(spd, 73, 90); decode_old_manufacturer(spd); decode_module_serialno(spd, 95); //decode_sdr_module_size if(spd->spd_size > 17){ unsigned char *bytes = spd->bytes; unsigned short i, k = 0; i = (bytes[3] & 0x0f) + (bytes[4] & 0x0f) - 17; if (bytes[5] <= 8 && bytes[17] <= 8) { k = bytes[5] * bytes[17]; } if (i > 0 && i <= 12 && k > 0) { spd->size_MiB = (dmi_mem_size)k * (unsigned short)(1 << i); } else { spd->size_MiB = -1; } } } void decode_sdr_module_timings(unsigned char *bytes, float *tcl, float *trcd, float *trp, float *tras) { float cas[3], ctime; int i, j; for (i = 0, j = 0; j < 7; j++) { if (bytes[18] & 1 << j) { cas[i++] = j + 1; } } ctime = ((bytes[9] >> 4) + (bytes[9] & 0xf)) * 0.1; if (trcd) { *trcd = ceil(bytes[29] / ctime); } if (trp) { *trp = ceil(bytes[27] / ctime); } if (tras) { *tras = ceil(bytes[30] / ctime); } if (tcl) { *tcl = cas[i]; } } void decode_sdr_module_row_address_bits(unsigned char *bytes, char **bits) { char *temp; switch (bytes[3]) { case 0: temp = "Undefined"; break; case 1: temp = "1/16"; break; case 2: temp = "2/27"; break; case 3: temp = "3/18"; break; default: /* printf("%d\n", bytes[3]); */ temp = NULL; } if (bits) { *bits = temp; } } void decode_sdr_module_col_address_bits(unsigned char *bytes, char **bits) { char *temp; switch (bytes[4]) { case 0: temp = "Undefined"; break; case 1: temp = "1/16"; break; case 2: temp = "2/17"; break; case 3: temp = "3/18"; break; default: /*printf("%d\n", bytes[4]); */ temp = NULL; } if (bits) { *bits = temp; } } void decode_sdr_module_number_of_rows(unsigned char *bytes, int *rows) { if (rows) { *rows = bytes[5]; } } void decode_sdr_module_data_with(unsigned char *bytes, int *width) { if (width) { if (bytes[7] > 1) { *width = 0; } else { *width = (bytes[7] * 0xff) + bytes[6]; } } } void decode_sdr_module_interface_signal_levels(unsigned char *bytes, char **signal_levels) { char *temp; switch (bytes[8]) { case 0: temp = "5.0 Volt/TTL"; break; case 1: temp = "LVTTL"; break; case 2: temp = "HSTL 1.5"; break; case 3: temp = "SSTL 3.3"; break; case 4: temp = "SSTL 2.5"; break; case 255: temp = "New Table"; break; default: temp = NULL; } if (signal_levels) { *signal_levels = temp; } } void decode_sdr_module_configuration_type(unsigned char *bytes, char **module_config_type) { char *temp; switch (bytes[11]) { case 0: temp = "No parity"; break; case 1: temp = "Parity"; break; case 2: temp = "ECC"; break; default: temp = NULL; } if (module_config_type) { *module_config_type = temp; } } void decode_sdr_module_refresh_type(unsigned char *bytes, char **refresh_type) { char *temp; if (bytes[12] & 0x80) { temp = "Self refreshing"; } else { temp = "Not self refreshing"; } if (refresh_type) { *refresh_type = temp; } } void decode_sdr_module_refresh_rate(unsigned char *bytes, char **refresh_rate) { char *temp; switch (bytes[12] & 0x7f) { case 0: temp = "Normal (15.625us)"; break; case 1: temp = "Reduced (3.9us)"; break; case 2: temp = "Reduced (7.8us)"; break; case 3: temp = "Extended (31.3us)"; break; case 4: temp = "Extended (62.5us)"; break; case 5: temp = "Extended (125us)"; break; default: temp = NULL; } if (refresh_rate) { *refresh_rate = temp; } } gchar *decode_sdr_sdram_extra(unsigned char *bytes) { int rows, data_width; float tcl, trcd, trp, tras; char *row_address_bits, *col_address_bits, *signal_level; char *module_config_type, *refresh_type, *refresh_rate; decode_sdr_module_timings(bytes, &tcl, &trcd, &trp, &tras); decode_sdr_module_row_address_bits(bytes, &row_address_bits); decode_sdr_module_col_address_bits(bytes, &col_address_bits); decode_sdr_module_number_of_rows(bytes, &rows); decode_sdr_module_data_with(bytes, &data_width); decode_sdr_module_interface_signal_levels(bytes, &signal_level); decode_sdr_module_configuration_type(bytes, &module_config_type); decode_sdr_module_refresh_type(bytes, &refresh_type); decode_sdr_module_refresh_rate(bytes, &refresh_rate); /* TODO: - RAS to CAS delay - Supported CAS latencies - Supported CS latencies - Supported WE latencies - Cycle Time / Access time - SDRAM module attributes - SDRAM device attributes - Row densities - Other misc stuff */ /* expected to continue an [SPD] section */ return g_strdup_printf("%s=%s\n" "%s=%s\n" "%s=%d\n" "%s=%d bits\n" "%s=%s\n" "%s=%s\n" "%s=%s (%s)\n" "[%s]\n" "tCL=%.2f\n" "tRCD=%.2f\n" "tRP=%.2f\n" "tRAS=%.2f\n", _("Row address bits"), row_address_bits ? row_address_bits : _("(Unknown)"), _("Column address bits"), col_address_bits ? col_address_bits : _("(Unknown)"), _("Number of rows"), rows, _("Data width"), data_width, _("Interface signal levels"), signal_level ? signal_level : _("(Unknown)"), _("Configuration type"), module_config_type ? module_config_type : _("(Unknown)"), _("Refresh"), refresh_type, refresh_rate ? refresh_rate : _("Unknown"), _("Timings"), tcl, trcd, trp, tras); } /* -------------------------------------------------- */ /* ----------------------- DDR ---------------------- */ /* -------------------------------------------------- */ void decode_ddr_module_speed(unsigned char *bytes, float *ddrclk, int *pcclk) { float temp, clk; int tbits, pc; temp = (bytes[9] >> 4) + (bytes[9] & 0xf) * 0.1; clk = 2 * (1000 / temp); tbits = (bytes[7] * 256) + bytes[6]; if (bytes[11] == 2 || bytes[11] == 1) { tbits -= 8; } pc = clk * tbits / 8; if (pc % 100 > 50) { pc += 100; } pc -= pc % 100; if (ddrclk) *ddrclk = (int)clk; if (pcclk) *pcclk = pc; } void decode_ddr_basic(spd_data *spd){ decode_old_manufacturer(spd); decode_module_partno(spd, 73, 90); decode_module_serialno(spd, 95); //decode_sdr_module_size unsigned char *bytes = spd->bytes; unsigned short i, k = 0; i = (bytes[3] & 0x0f) + (bytes[4] & 0x0f) - 17; if (bytes[5] <= 8 && bytes[17] <= 8) { k = bytes[5] * bytes[17]; } if (i > 0 && i <= 12 && k > 0) { spd->size_MiB = (dmi_mem_size)k * (unsigned short)(1 << i); } else { spd->size_MiB = -1; } //decode_ddr_module_detail float ddr_clock; int pc_speed; decode_ddr_module_speed(bytes, &ddr_clock, &pc_speed); snprintf(spd->type_detail, 255, "DDR-%.0f (PC-%d)", ddr_clock, pc_speed); } void decode_ddr_module_timings(unsigned char *bytes, float *tcl, float *trcd, float *trp, float *tras) { float ctime; float highest_cas = 0; int i; for (i = 0; i < 7; i++) { if (bytes[18] & (1 << i)) { highest_cas = 1 + i * 0.5f; } } ctime = (bytes[9] >> 4) + (bytes[9] & 0xf) * 0.1; if (trcd) { *trcd = (bytes[29] >> 2) + ((bytes[29] & 3) * 0.25); *trcd = ceil(*trcd / ctime); } if (trp) { *trp = (bytes[27] >> 2) + ((bytes[27] & 3) * 0.25); *trp = ceil(*trp / ctime); } if (tras) { *tras = bytes[30]; *tras = ceil(*tras / ctime); } if (tcl) { *tcl = highest_cas; } } gchar *decode_ddr_sdram_extra(unsigned char *bytes) { float tcl, trcd, trp, tras; decode_ddr_module_timings(bytes, &tcl, &trcd, &trp, &tras); return g_strdup_printf("[%s]\n" "tCL=%.2f\n" "tRCD=%.2f\n" "tRP=%.2f\n" "tRAS=%.2f\n", _("Timings"), tcl, trcd, trp, tras); } /* -------------------------------------------------- */ /* ----------------------- DDR2 --------------------- */ /* -------------------------------------------------- */ float decode_ddr2_module_ctime(unsigned char byte) { float ctime; ctime = (byte >> 4); byte &= 0xf; if (byte <= 9) { ctime += byte * 0.1; } else if (byte == 10) { ctime += 0.25; } else if (byte == 11) { ctime += 0.33; } else if (byte == 12) { ctime += 0.66; } else if (byte == 13) { ctime += 0.75; } return ctime; } void decode_ddr2_module_speed(unsigned char *bytes, float *ddr_clock, int *pc2_speed) { float ctime; float ddrclk; int tbits, pcclk; ctime = decode_ddr2_module_ctime(bytes[9]); ddrclk = 2 * (1000 / ctime); tbits = (bytes[7] * 256) + bytes[6]; if (bytes[11] & 0x03) { tbits -= 8; } pcclk = ddrclk * tbits / 8; pcclk -= pcclk % 100; if (ddr_clock) { *ddr_clock = (int)ddrclk; } if (pc2_speed) { *pc2_speed = pcclk; } } void decode_ddr2_basic(spd_data *spd){ decode_old_manufacturer(spd); decode_module_partno(spd, 73, 90); //decode_ddr_module_size(spd->bytes, &s->size_MiB); //decode_sdr_module_size unsigned char *bytes = spd->bytes; unsigned short i, k = 0; i = (bytes[3] & 0x0f) + (bytes[4] & 0x0f) - 17; if (bytes[5] <= 8 && bytes[17] <= 8) { k = bytes[5] * bytes[17]; } if (i > 0 && i <= 12 && k > 0) { spd->size_MiB = (dmi_mem_size)k * (unsigned short)(1 << i); } else { spd->size_MiB = -1; } //decode_ddr_module_detail(spd->bytes, s->type_detail); float ddr_clock; int pc2_speed; decode_ddr_module_speed(bytes, &ddr_clock, &pc2_speed); snprintf(spd->type_detail, 255, "DDR2-%.0f (PC2-%d)", ddr_clock, pc2_speed); } void decode_ddr2_module_type(unsigned char *bytes, const char **type) { switch (bytes[20]) { case 0x01: *type = "RDIMM (Registered DIMM)"; break; case 0x02: *type = "UDIMM (Unbuffered DIMM)"; break; case 0x04: *type = "SO-DIMM (Small Outline DIMM)"; break; case 0x06: *type = "72b-SO-CDIMM (Small Outline Clocked DIMM, 72-bit data bus)"; break; case 0x07: *type = "72b-SO-RDIMM (Small Outline Registered DIMM, 72-bit data bus)"; break; case 0x08: *type = "Micro-DIMM"; break; case 0x10: *type = "Mini-RDIMM (Mini Registered DIMM)"; break; case 0x20: *type = "Mini-UDIMM (Mini Unbuffered DIMM)"; break; default: *type = NULL; } } void decode_ddr2_module_timings(float ctime, unsigned char *bytes, float *trcd, float *trp, float *tras) { if (trcd) { *trcd = ceil(((bytes[29] >> 2) + ((bytes[29] & 3) * 0.25)) / ctime); } if (trp) { *trp = ceil(((bytes[27] >> 2) + ((bytes[27] & 3) * 0.25)) / ctime); } if (tras) { *tras = ceil(bytes[30] / ctime); } } gboolean decode_ddr2_module_ctime_for_casx(int casx_minus, unsigned char *bytes, float *ctime, float *tcl){ int highest_cas = 0, i, bytei; float ctimev = 0; switch (casx_minus){ case 0: bytei = 9; break; case 1: bytei = 23; break; case 2: bytei = 25; break; default: return FALSE; } for (i = 0; i < 7; i++) { if (bytes[18] & (1 << i)) { highest_cas = i; } } if ((bytes[18] & (1 << (highest_cas-casx_minus))) == 0) return FALSE; ctimev = decode_ddr2_module_ctime(bytes[bytei]); if (ctimev == 0) return FALSE; if (tcl) { *tcl = highest_cas-casx_minus; } if (ctime) { *ctime = ctimev; } return TRUE; } gchar *decode_ddr2_sdram_extra(unsigned char *bytes) { float trcd, trp, tras, ctime, tcl; const char* voltage; gchar *out; int i; switch(bytes[8]){ case 0x0: voltage = "TTL/5 V tolerant"; break; case 0x1: voltage = "LVTTL"; break; case 0x2: voltage = "HSTL 1.5 V"; break; case 0x3: voltage = "SSTL 3.3 V"; break; case 0x4: voltage = "SSTL 2.5 V"; break; case 0x5: voltage = "SSTL 1.8 V"; break; default: voltage = _("(Unknown)"); } /* expected to continue an [SPD] section */ out = g_strdup_printf("%s=%s\n" "[%s]\n", _("Voltage"), voltage, _("JEDEC Timings")); for (i = 0; i <= 2; i++) { if (!decode_ddr2_module_ctime_for_casx(i, bytes, &ctime, &tcl)) break; decode_ddr2_module_timings(ctime, bytes, &trcd, &trp, &tras); out = h_strdup_cprintf("DDR2-%d=%.0f-%.0f-%.0f-%.0f\n", out, (int)(2 * (1000 / ctime)), tcl, trcd, trp, tras); } return out; } /* -------------------------------------------------- */ /* ----------------------- DDR3 --------------------- */ /* -------------------------------------------------- */ void decode_ddr3_module_speed(unsigned char *bytes, float *ddr_clock, int *pc3_speed) { float ctime; float ddrclk; int tbits, pcclk; float mtb = 0.125; if (bytes[10] == 1 && bytes[11] == 8) mtb = 0.125; if (bytes[10] == 1 && bytes[11] == 15) mtb = 0.0625; ctime = mtb * bytes[12]; ddrclk = 2 * (1000 / ctime); tbits = 64; switch (bytes[8]) { case 1: tbits = 16; break; case 4: tbits = 32; break; case 3: case 0xb: tbits = 64; break; } pcclk = ddrclk * tbits / 8; pcclk -= pcclk % 100; if (ddr_clock) { *ddr_clock = (int)ddrclk; } if (pc3_speed) { *pc3_speed = pcclk; } } void decode_ddr3_module_size(unsigned char *bytes, dmi_mem_size *size) { unsigned int sdr_capacity = 256 << (bytes[4] & 0xF); unsigned int sdr_width = 4 << (bytes[7] & 0x7); unsigned int bus_width = 8 << (bytes[8] & 0x7); unsigned int ranks = 1 + ((bytes[7] >> 3) & 0x7); *size = (dmi_mem_size)sdr_capacity / 8 * bus_width / sdr_width * ranks; } void decode_ddr3_module_timings(unsigned char *bytes, float *trcd, float *trp, float *tras, float *tcl) { float ctime; float mtb = 0.125; float taa; if (bytes[10] == 1 && bytes[11] == 8) mtb = 0.125; if (bytes[10] == 1 && bytes[11] == 15) mtb = 0.0625; ctime = mtb * bytes[12]; taa = bytes[16] * mtb; if (trcd) { *trcd = bytes[18] * mtb; } if (trp) { *trp = bytes[20] * mtb; } if (tras) { *tras = (bytes[22] + (bytes[21] & 0xf)) * mtb; } if (tcl) { *tcl = ceil(taa/ctime); } } void decode_ddr3_module_type(unsigned char *bytes, const char **type) { switch (bytes[3]) { case 0x01: *type = "RDIMM (Registered Long DIMM)"; break; case 0x02: *type = "UDIMM (Unbuffered Long DIMM)"; break; case 0x03: *type = "SODIMM (Small Outline DIMM)"; break; default: *type = NULL; } } void decode_ddr3_module_detail(unsigned char *bytes, char *type_detail) { float ddr_clock; int pc3_speed; if (type_detail) { decode_ddr3_module_speed(bytes, &ddr_clock, &pc3_speed); snprintf(type_detail, 255, "DDR3-%.0f (PC3-%d)", ddr_clock, pc3_speed); } } gchar *decode_ddr3_sdram_extra(unsigned char *bytes) { float trcd, trp, tras, tcl; decode_ddr3_module_timings(bytes, &trcd, &trp, &tras, &tcl); int ranks = 1 + ((bytes[7] >> 3) & 0x7); int pins = 4 << (bytes[7] & 0x7); int die_count = (bytes[33] >> 4) & 0x7; int ts = !!(bytes[32] & 0x80); /* expected to continue an [SPD] section */ return g_strdup_printf("%s=%d\n" "%s=%d\n" "%s=%d %s\n" "%s=[%02x] %s\n" "%s=%s%s%s\n" "%s=" "%s%s%s%s%s%s%s%s" "%s%s%s%s%s%s%s\n" "[%s]\n" "tCL=%.0f\n" "tRCD=%.3fns\n" "tRP=%.3fns\n" "tRAS=%.3fns\n", _("Ranks"), ranks, _("IO Pins per Chip"), pins, _("Die count"), die_count, die_count ? "" : _("(Unspecified)"), _("Thermal Sensor"), bytes[32], ts ? _("Present") : _("Not present"), _("Supported Voltages"), (bytes[6] & 4) ? "1.25V " : "", (bytes[6] & 2) ? "1.35V " : "", (bytes[6] & 1) ? "" : "1.5V", _("Supported CAS Latencies"), (bytes[15] & 0x40) ? "18 " : "", (bytes[15] & 0x20) ? "17 " : "", (bytes[15] & 0x10) ? "16 " : "", (bytes[15] & 0x08) ? "15 " : "", (bytes[15] & 0x04) ? "14 " : "", (bytes[15] & 0x02) ? "13 " : "", (bytes[15] & 0x01) ? "12 " : "", (bytes[14] & 0x80) ? "11 " : "", (bytes[14] & 0x40) ? "10 " : "", (bytes[14] & 0x20) ? "9 " : "", (bytes[14] & 0x10) ? "8 " : "", (bytes[14] & 0x08) ? "7 " : "", (bytes[14] & 0x04) ? "6 " : "", (bytes[14] & 0x02) ? "5 " : "", (bytes[14] & 0x01) ? "4" : "", _("Timings"), tcl, trcd, trp, tras ); } /* -------------------------------------------------- */ /* ----------------------- DDR4 --------------------- */ /* -------------------------------------------------- */ char *ddr4_print_spd_timings(int speed, float cas, float trcd, float trp, float tras, float ctime) { return g_strdup_printf("DDR4-%d=%.0f-%.0f-%.0f-%.0f\n", speed, cas, ceil(trcd / ctime - 0.025), ceil(trp / ctime - 0.025), ceil(tras / ctime - 0.025)); } void decode_ddr4_module_size(unsigned char *bytes, dmi_mem_size *size) { int sdrcap = 256 << (bytes[4] & 15); int buswidth = 8 << (bytes[13] & 7); int sdrwidth = 4 << (bytes[12] & 7); int signal_loading = bytes[6] & 3; int lranks_per_dimm = ((bytes[12] >> 3) & 7) + 1; if (signal_loading == 2) lranks_per_dimm *= ((bytes[6] >> 4) & 7) + 1; *size = (dmi_mem_size)sdrcap / 8 * buswidth / sdrwidth * lranks_per_dimm; } void decode_ddr4_module_type(unsigned char *bytes, const char **type) { switch (bytes[3]) { case 0x01: *type = "RDIMM (Registered DIMM)"; break; case 0x02: *type = "UDIMM (Unbuffered DIMM)"; break; case 0x03: *type = "SODIMM (Small Outline Unbuffered DIMM)"; break; case 0x04: *type = "LRDIMM (Load-Reduced DIMM)"; break; case 0x05: *type = "Mini-RDIMM (Mini Registered DIMM)"; break; case 0x06: *type = "Mini-UDIMM (Mini Unbuffered DIMM)"; break; case 0x08: *type = "72b-SO-RDIMM (Small Outline Registered DIMM, 72-bit data bus)"; break; case 0x09: *type = "72b-SO-UDIMM (Small Outline Unbuffered DIMM, 72-bit data bus)"; break; case 0x0c: *type = "16b-SO-UDIMM (Small Outline Unbuffered DIMM, 16-bit data bus)"; break; case 0x0d: *type = "32b-SO-UDIMM (Small Outline Unbuffered DIMM, 32-bit data bus)"; break; default: *type = NULL; } } float ddr4_mtb_ftb_calc(unsigned char b1, signed char b2) { float mtb = 0.125; float ftb = 0.001; return b1 * mtb + b2 * ftb; } void decode_ddr4_module_speed(unsigned char *bytes, float *ddr_clock, int *pc4_speed) { float ctime; float ddrclk; int tbits, pcclk; ctime = ddr4_mtb_ftb_calc(bytes[18], bytes[125]); ddrclk = 2 * (1000 / ctime); tbits = 8 << (bytes[13] & 7); pcclk = ddrclk * tbits / 8; pcclk -= pcclk % 100; if (ddr_clock) { *ddr_clock = (int)ddrclk; } if (pc4_speed) { *pc4_speed = pcclk; } } void decode_ddr4_module_spd_timings(unsigned char *bytes, float speed, char **str) { float ctime, ctime_max, pctime, taa, trcd, trp, tras; int pcas, best_cas, base_cas, ci, i, j; unsigned char cas_support[] = {bytes[20], bytes[21], bytes[22], bytes[23] & 0x1f}; float possible_ctimes[] = {15 / 24.0, 15 / 22.0, 15 / 20.0, 15 / 18.0, 15 / 16.0, 15 / 14.0, 15 / 12.0}; base_cas = bytes[23] & 0x80 ? 23 : 7; ctime = ddr4_mtb_ftb_calc(bytes[18], bytes[125]); ctime_max = ddr4_mtb_ftb_calc(bytes[19], bytes[124]); taa = ddr4_mtb_ftb_calc(bytes[24], bytes[123]); trcd = ddr4_mtb_ftb_calc(bytes[25], bytes[122]); trp = ddr4_mtb_ftb_calc(bytes[26], bytes[121]); tras = (((bytes[27] & 0x0f) << 8) + bytes[28]) * 0.125; *str = ddr4_print_spd_timings((int)speed, ceil(taa / ctime - 0.025), trcd, trp, tras, ctime); for (ci = 0; ci < 7; ci++) { best_cas = 0; pctime = possible_ctimes[ci]; for (i = 3; i >= 0; i--) { for (j = 7; j >= 0; j--) { if ((cas_support[i] & (1 << j)) != 0) { pcas = base_cas + 8 * i + j; if (ceil(taa / pctime) - 0.025 <= pcas) { best_cas = pcas; } } } } if (best_cas > 0 && pctime <= ctime_max && pctime >= ctime) { *str = h_strdup_cprintf( "%s\n", *str, ddr4_print_spd_timings((int)(2000.0 / pctime), best_cas, trcd, trp, tras, pctime)); } } } void detect_ddr4_xmp(unsigned char *bytes, int spd_size, int *majv, int *minv) { if (spd_size > 387){ *majv = 0; *minv = 0; if (bytes[384] == 0x0c && bytes[385] == 0x4a) { // XMP magic number if (majv) *majv = bytes[387] >> 4; if (minv) *minv = bytes[387] & 0xf; } } } void decode_ddr4_xmp(unsigned char *bytes, int spd_size, char **str) { float ctime; float ddrclk, taa, trcd, trp, tras; if (spd_size > 405){ ctime = ddr4_mtb_ftb_calc(bytes[396], bytes[431]); ddrclk = 2 * (1000 / ctime); taa = ddr4_mtb_ftb_calc(bytes[401], bytes[430]); trcd = ddr4_mtb_ftb_calc(bytes[402], bytes[429]); trp = ddr4_mtb_ftb_calc(bytes[403], bytes[428]); tras = (((bytes[404] & 0x0f) << 8) + bytes[405]) * 0.125; *str = g_strdup_printf("[%s]\n" "%s=DDR4 %d MHz\n" "%s=%d.%d V\n" "[%s]\n" "%s", _("XMP Profile"), _("Speed"), (int) ddrclk, _("Voltage"), bytes[393] >> 7, bytes[393] & 0x7f, _("XMP Timings"), ddr4_print_spd_timings((int) ddrclk, ceil(taa/ctime - 0.025), trcd, trp, tras, ctime)); } } void decode_ddr4_module_detail(unsigned char *bytes, char *type_detail) { float ddr_clock; int pc4_speed; if (type_detail) { decode_ddr4_module_speed(bytes, &ddr_clock, &pc4_speed); snprintf(type_detail, 255, "DDR4-%.0f (PC4-%d)", ddr_clock, pc4_speed); } } gchar *decode_ddr4_sdram_extra(unsigned char *bytes, int spd_size) { float ddr_clock; int pc4_speed, xmp_majv = -1, xmp_minv = -1; char *speed_timings = NULL, *xmp_profile = NULL, *xmp = NULL, *manf_date = NULL; gchar *out; decode_ddr4_module_speed(bytes, &ddr_clock, &pc4_speed); decode_ddr4_module_spd_timings(bytes, ddr_clock, &speed_timings); detect_ddr4_xmp(bytes, spd_size, &xmp_majv, &xmp_minv); if (xmp_majv == -1 && xmp_minv == -1) { xmp = NULL; } else if (xmp_majv <= 0 && xmp_minv <= 0) { xmp = g_strdup(_("No")); } else { xmp = g_strdup_printf("%s (revision %d.%d)", _("Yes"), xmp_majv, xmp_minv); if (xmp_majv == 2 && xmp_minv == 0) decode_ddr4_xmp(bytes, spd_size, &xmp_profile); } /* expected to continue an [SPD] section */ out = g_strdup_printf("%s=%s\n" "%s=%s\n" "[%s]\n" "%s\n" "%s", _("Voltage"), bytes[11] & 0x01 ? "1.2 V": _("(Unknown)"), _("XMP"), xmp ? xmp : _("(Unknown)"), _("JEDEC Timings"), speed_timings, xmp_profile ? xmp_profile: ""); g_free(speed_timings); g_free(manf_date); g_free(xmp); g_free(xmp_profile); return out; } /* -------------------------------------------------- */ /* ----------------------- DDR5 --------------------- */ /* -------------------------------------------------- */ void decode_ddr5_module_type(unsigned char *bytes, const char **type) { switch (bytes[3] & 0x0f) { case 0x01: *type = "RDIMM (Registered DIMM)"; break; case 0x02: *type = "UDIMM (Unbuffered DIMM)"; break; case 0x03: *type = "SODIMM (Small Outline Unbuffered DIMM)"; break; case 0x04: *type = "LRDIMM (Load-Reduced DIMM)"; break; case 0x05: *type = "CUDIMM (Clocked Unbuffered DIMM)"; break; case 0x06: *type = "CSOUDIMM (Clocked Small Outline DIMM)"; break; case 0x07: *type = "MRDIMM (Multiplexed Rand DIMM)"; break; case 0x08: *type = "CAMM2 (Compression Attached MM)"; break; case 0x0a: *type = "DDIM (Differential DIMM)"; break; case 0x0b: *type = "Soldered (Solder Down)"; break; default: *type = NULL; } } char *ddr5_print_spd_timings(int speed, float cas, float trcd, float trp, float tras, float ctime) { return g_strdup_printf("DDR5-%d=%.0f-%.0f-%.0f-%.0f\n", speed, cas, ceil(trcd / ctime - 0.025), ceil(trp / ctime - 0.025), ceil(tras / ctime - 0.025)); } void decode_ddr5_module_size(unsigned char *bytes, dmi_mem_size *size) { int sdrcap; int diePerPack; switch(bytes[4] & 31) {//gbit case 0: sdrcap=0;break; case 1: sdrcap=4;break; case 2: sdrcap=8;break; case 3: sdrcap=12;break; case 4: sdrcap=16;break; case 5: sdrcap=24;break; case 6: sdrcap=32;break; case 7: sdrcap=48;break; case 8: sdrcap=64;break; default: sdrcap=0;break; } switch(bytes[4]>>5) { case 0: diePerPack=1;break; case 1: diePerPack=2;break; case 2: diePerPack=2;break; case 3: diePerPack=4;break; case 4: diePerPack=8;break; case 5: diePerPack=16;break; default: diePerPack=1;break; } //MB - multiply by 2 due to 2 32bit channels *size = (dmi_mem_size)sdrcap*2*1024*diePerPack; } float ddr5_mtb_ftb_calc(unsigned char b1, signed char b2) { float mtb = 0.125; float ftb = 0.001; return b1 * mtb + b2 * ftb; } void decode_ddr5_module_speed(unsigned char *bytes, float *ddr_clock, int *pc5_speed) { float ctime; float ddrclk; int pcclk; ctime = (bytes[21]<<8) + bytes[20]; ddrclk = (2000000.0 / ctime); pcclk = ddrclk*8; pcclk -= pcclk % 100; if (ddr_clock) { *ddr_clock = (int)ddrclk; } if (pc5_speed) { *pc5_speed = pcclk; } } void decode_ddr5_module_spd_timings(unsigned char *bytes, float speed, char **str) { float ctime, ctime_max, pctime, taa, trcd, trp, tras; int pcas, best_cas, base_cas, ci, i, j; unsigned char cas_support[] = {bytes[20], bytes[21], bytes[22], bytes[23] & 0x1f}; float possible_ctimes[] = {15 / 24.0, 15 / 22.0, 15 / 20.0, 15 / 18.0, 15 / 16.0, 15 / 14.0, 15 / 12.0}; base_cas = bytes[23] & 0x80 ? 23 : 7; ctime = (bytes[21]<<8) + bytes[20]; ctime_max = (bytes[23]<<8) + bytes[22]; taa = (bytes[31]<<8) + bytes[30]; trcd = (bytes[33]<<8) + bytes[32]; trp = (bytes[35]<<8) + bytes[34]; tras = (bytes[36]<<8) + bytes[35]; *str = ddr5_print_spd_timings((int)speed, ceil(taa / ctime - 0.025), trcd, trp, tras, ctime); for (ci = 0; ci < 7; ci++) { best_cas = 0; pctime = possible_ctimes[ci]; for (i = 3; i >= 0; i--) { for (j = 7; j >= 0; j--) { if ((cas_support[i] & (1 << j)) != 0) { pcas = base_cas + 8 * i + j; if (ceil(taa / pctime) - 0.025 <= pcas) { best_cas = pcas; } } } } if (best_cas > 0 && pctime <= ctime_max && pctime >= ctime) { *str = h_strdup_cprintf( "%s\n", *str, ddr5_print_spd_timings((int)(2000.0 / pctime), best_cas, trcd, trp, tras, pctime)); } } } void detect_ddr5_xmp(unsigned char *bytes, int spd_size, int *majv, int *minv) { /*if (spd_size < 387) return; *majv = 0; *minv = 0; if (bytes[384] != 0x0c || bytes[385] != 0x4a) // XMP magic number return; if (majv) *majv = bytes[387] >> 4; if (minv) *minv = bytes[387] & 0xf;*/ } void decode_ddr5_xmp(unsigned char *bytes, int spd_size, char **str) { /*float ctime; float ddrclk, taa, trcd, trp, tras; if (spd_size < 405) return; ctime = ddr5_mtb_ftb_calc(bytes[396], bytes[431]); ddrclk = 2 * (1000 / ctime); taa = ddr5_mtb_ftb_calc(bytes[401], bytes[430]); trcd = ddr5_mtb_ftb_calc(bytes[402], bytes[429]); trp = ddr5_mtb_ftb_calc(bytes[403], bytes[428]); tras = (((bytes[404] & 0x0f) << 8) + bytes[405]) * 0.125; *str = g_strdup_printf("[%s]\n" "%s=DDR4 %d MHz\n" "%s=%d.%d V\n" "[%s]\n" "%s", _("XMP Profile"), _("Speed"), (int) ddrclk, _("Voltage"), bytes[393] >> 7, bytes[393] & 0x7f, _("XMP Timings"), ddr5_print_spd_timings((int) ddrclk, ceil(taa/ctime - 0.025), trcd, trp, tras, ctime)); */ } void decode_ddr5_module_detail(unsigned char *bytes, char *type_detail) { float ddr_clock; int pc5_speed; if (type_detail) { decode_ddr5_module_speed(bytes, &ddr_clock, &pc5_speed); snprintf(type_detail, 255, "DDR5-%.0f (PC5-%d)", ddr_clock, pc5_speed); } } gchar *decode_ddr5_sdram_extra(unsigned char *bytes, int spd_size) { float ddr_clock; int pc5_speed, xmp_majv = -1, xmp_minv = -1; char *speed_timings = NULL, *xmp_profile = NULL, *xmp = NULL, *manf_date = NULL; gchar *out; decode_ddr5_module_speed(bytes, &ddr_clock, &pc5_speed); decode_ddr5_module_spd_timings(bytes, ddr_clock, &speed_timings); detect_ddr5_xmp(bytes, spd_size, &xmp_majv, &xmp_minv); if (xmp_majv == -1 && xmp_minv == -1) { xmp = NULL; } else if (xmp_majv <= 0 && xmp_minv <= 0) { xmp = g_strdup(_("No")); } else { xmp = g_strdup_printf("%s (revision %d.%d)", _("Yes"), xmp_majv, xmp_minv); if (xmp_majv == 2 && xmp_minv == 0) decode_ddr5_xmp(bytes, spd_size, &xmp_profile); } /* expected to continue an [SPD] section */ out = g_strdup_printf("%s=%s\n" //"%s=%s\n" "[%s]\n" "%s\n" "%s", _("Voltage"), bytes[15]==0 ? "1.1 V": _("(Unknown)"), //_("XMP"), xmp ? xmp : _("(Unknown)"), _("JEDEC Timings"), speed_timings, xmp_profile ? xmp_profile: ""); g_free(speed_timings); g_free(manf_date); g_free(xmp); g_free(xmp_profile); return out; } /*- - - - - - - - - - - SPD EEprom handling - - - - - - - - - -*/ int read_spd(char *spd_path, int offset, size_t size, int use_sysfs, unsigned char *bytes_out) { int data_size = 0; if (use_sysfs) { FILE *spd; gchar *temp_path; temp_path = g_strdup_printf("%s/eeprom", spd_path); if ((spd = fopen(temp_path, "rb"))) { fseek(spd, offset, SEEK_SET); data_size = fread(bytes_out, 1, size, spd); fclose(spd); } g_free(temp_path); } else { FILE *spd; if ((spd = fopen(spd_path, "rb"))) { fseek(spd, offset, SEEK_SET); data_size = fread(bytes_out, 1, size, spd); fclose(spd); } /*OLD unsupported int i; for (i = 0; i <= 3; i++) { FILE *spd; char *temp_path; temp_path = g_strdup_printf("%s/%02x", spd_path, offset + i * 16); if ((spd = fopen(temp_path, "rb"))) { data_size += fread(bytes_out + i * 16, 1, 16, spd); fclose(spd); } g_free(temp_path); }*/ } return data_size; } void spd_data_free(spd_data *s) { g_free(s->bytes);g_free(s); } GSList *decode_dimms2(GSList *eeprom_list, const gchar *driver, gboolean use_sysfs, int max_size) { GSList *eeprom, *dimm_list = NULL; int count = 0; spd_data *s = NULL; for (eeprom = eeprom_list; eeprom; eeprom = eeprom->next, count++) { gchar *spd_path = (gchar*)eeprom->data; s = NULL; s = g_new0(spd_data,1); s->bytes=g_malloc(max_size); memset(s->bytes, 0, max_size); /* clear */ s->spd_size = read_spd(spd_path, 0, max_size, use_sysfs, s->bytes); s->type = decode_ram_type(s->bytes); switch (s->type) { case SDR_SDRAM: decode_sdr_basic(s); break; case DDR_SDRAM: decode_ddr_basic(s); break; case DDR2_SDRAM: decode_ddr2_basic(s); decode_ddr2_module_type(s->bytes, &s->form_factor); decode_module_date(s, 94, 93); decode_module_serialno(s, 95); break; case DDR3_SDRAM: decode_module_partno(s, 128, 145); decode_manufacturer(s, 117, 118, 148, 149); decode_ddr3_module_size(s->bytes, &s->size_MiB); decode_ddr3_module_detail(s->bytes, s->type_detail); decode_ddr3_module_type(s->bytes, &s->form_factor); decode_module_date(s, 121, 120); decode_module_serialno(s, 122); break; case DDR4_SDRAM: decode_module_partno(s, 329, 348); decode_manufacturer(s, 320, 321, 350, 351); decode_ddr4_module_size(s->bytes, &s->size_MiB); decode_ddr4_module_type(s->bytes, &s->form_factor); decode_ddr4_module_detail(s->bytes, s->type_detail); decode_module_date(s, 324, 323); decode_module_serialno(s, 325); break; case DDR5_SDRAM: decode_module_partno(s, 521, 550); decode_manufacturer(s, 512, 513, 552, 553); decode_ddr5_module_size(s->bytes, &s->size_MiB); decode_ddr5_module_type(s->bytes, &s->form_factor); decode_ddr5_module_detail(s->bytes, s->type_detail); decode_module_date(s, 516, 515); decode_module_serialno(s, 517); break; case UNKNOWN: default: DEBUG("Unsupported EEPROM type: %s for %s\n", GET_RAM_TYPE_STR(s->type), spd_path); break; } if (s) { strncpy(s->dev, g_path_get_basename(spd_path), 31); s->spd_driver = driver; switch (s->type) { case SDR_SDRAM: case DDR_SDRAM: case DDR2_SDRAM: s->spd_rev_major = s->bytes[62] >> 4; s->spd_rev_minor = s->bytes[62] & 0xf; break; case DDR3_SDRAM: case DDR4_SDRAM: case DDR5_SDRAM: s->spd_rev_major = s->bytes[1] >> 4; s->spd_rev_minor = s->bytes[1] & 0xf; break; } s->vendor = vendor_match(s->vendor_str, NULL); s->dram_vendor = vendor_match(s->dram_vendor_str, NULL); dimm_list = g_slist_append(dimm_list, s); } } return dimm_list; } GSList *spd_scan() { GDir *dir = NULL; GSList *eeprom_list = NULL, *dimm_list = NULL; gchar *dimm_list_entry, *dir_entry, *name_file, *name; const SpdDriver *driver; gboolean is_spd = FALSE; for (driver = spd_drivers; driver->dir_path; driver++) { if (g_file_test(driver->dir_path, G_FILE_TEST_EXISTS)) { dir = g_dir_open(driver->dir_path, 0, NULL); if (!dir) continue; while ((dir_entry = (char *)g_dir_read_name(dir))) { is_spd = FALSE; if (driver->use_sysfs) { name_file = NULL; name = NULL; if (isdigit(dir_entry[0])) { name_file = g_build_filename(driver->dir_path, dir_entry, "name", NULL); g_file_get_contents(name_file, &name, NULL, NULL); is_spd=g_strcmp0(name, driver->spd_name); g_free(name_file); g_free(name); //check i2c controller is SMBus for eeprom (eeproms autodection is wild, so we improve) if(strstr(driver->spd_name,"eeprom") && is_spd){ name=g_strdup(dir_entry); strend(name,'-'); name_file = g_strdup_printf("/sys/bus/i2c/devices/i2c-%s/name", name); g_free(name); name=NULL; g_file_get_contents(name_file, &name, NULL, NULL); is_spd=0; if(name){ is_spd=(strstr(name, "SMBus")?1:0); g_free(name); } g_free(name_file); } } } else { is_spd = g_str_has_prefix(dir_entry, "eeprom-"); } if (is_spd){ dimm_list_entry = g_strdup_printf("%s/%s", driver->dir_path, dir_entry); eeprom_list = g_slist_prepend(eeprom_list, dimm_list_entry); } } g_dir_close(dir); if (eeprom_list) { dimm_list = decode_dimms2(eeprom_list, driver->driver, driver->use_sysfs, driver->max_size); g_slist_free(eeprom_list); eeprom_list = NULL; } if (dimm_list) break; } } return dimm_list; } gchar *make_spd_section(spd_data *spd) { gchar *ret = NULL; if (spd) { gchar *full_spd = NULL; switch(spd->type) { case SDR_SDRAM: full_spd = decode_sdr_sdram_extra(spd->bytes); break; case DDR_SDRAM: full_spd = decode_ddr_sdram_extra(spd->bytes); break; case DDR2_SDRAM: full_spd = decode_ddr2_sdram_extra(spd->bytes); break; case DDR3_SDRAM: full_spd = decode_ddr3_sdram_extra(spd->bytes); break; case DDR4_SDRAM: full_spd = decode_ddr4_sdram_extra(spd->bytes, spd->spd_size); break; case DDR5_SDRAM: full_spd = decode_ddr5_sdram_extra(spd->bytes, spd->spd_size); break; default: DEBUG("SPD unknown type: %d %s\n", spd->type, ram_types[spd->type]); } gchar *size_str = NULL; if (!spd->size_MiB) size_str = g_strdup(_("(Unknown)")); else if(spd->size_MiB >= 1024) size_str = g_strdup_printf("%u %s", spd->size_MiB>>10, _("GiB") ); else size_str = g_strdup_printf("%u %s", spd->size_MiB, _("MiB") ); gchar *mfg_date_str = NULL; if (spd->year) mfg_date_str = g_strdup_printf("%d / %d", spd->year, spd->week); ret = g_strdup_printf("[%s - %s]\n" "%s=%s (%s)%s\n" "%s=%d.%d\n" "%s=%s\n" "%s=%s\n" "$^$%s=[%02x%02x] %s\n" /* module vendor */ "$^$%s=[%02x%02x] %s\n" /* dram vendor */ "%s=%s\n" /* part */ "%s=%s\n" /* serialno */ "%s=%s\n" /* size */ "%s=%s\n" /* mfg date */ "%s", _("Serial Presence Detect (SPD)"), ram_types[spd->type], _("Source"), spd->dev, spd->spd_driver, (spd->type == DDR4_SDRAM && strcmp(spd->spd_driver, "ee1004") != 0) ? problem_marker() : "", _("SPD Revision"), spd->spd_rev_major, spd->spd_rev_minor, _("Form Factor"), UNKIFNULL2(spd->form_factor), _("Type"), UNKIFEMPTY2(spd->type_detail), _("Module Vendor"), spd->vendor_bank, spd->vendor_index, UNKIFNULL2(spd->vendor_str), _("DRAM Vendor"), spd->dram_vendor_bank, spd->dram_vendor_index, UNKIFNULL2(spd->dram_vendor_str), _("Part Number"), UNKIFEMPTY2(spd->partno), _("Serial Number"), UNKIFEMPTY2(spd->serialno), _("Size"), size_str, _("Manufacturing Date (Year / Week)"), UNKIFNULL2(mfg_date_str), full_spd ? full_spd : "" ); g_free(full_spd); g_free(size_str); g_free(mfg_date_str); } return ret; } hardinfo2-hardinfo2-1331e88/modules/devices/storage.c000066400000000000000000001012201474767047500224410ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2006 L. A. F. Pereira * modified by Ondrej Čerman (2019-2021) * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "hardinfo.h" #include "devices.h" #include "udisks2_util.h" #include "storage_util.h" #define UNKIFNULL_AC(f) (f != NULL) ? f : _("(Unknown)"); gchar *storage_icons = NULL; gchar *nvme_pci_sections(pcid *p) { const gchar *vendor, *svendor, *product, *sproduct; if (!p) return NULL; vendor = UNKIFNULL_AC(p->vendor_id_str); svendor = UNKIFNULL_AC(p->sub_vendor_id_str); product = UNKIFNULL_AC(p->device_id_str); sproduct = UNKIFNULL_AC(p->sub_device_id_str); gchar *vendor_device_str; if (p->vendor_id == p->sub_vendor_id && p->device_id == p->sub_device_id) { vendor_device_str = g_strdup_printf("[%s]\n" /* Vendor */ "$^$%s=[%04x] %s\n" /* Device */ "%s=[%04x] %s\n", _("NVMe Controller"), _("Vendor"), p->vendor_id, vendor, _("Device"), p->device_id, product); } else { vendor_device_str = g_strdup_printf("[%s]\n" /* Vendor */ "$^$%s=[%04x] %s\n" /* Device */ "%s=[%04x] %s\n" /* Sub-device vendor */ "$^$%s=[%04x] %s\n" /* Sub-device */ "%s=[%04x] %s\n", _("NVMe Controller"), _("Vendor"), p->vendor_id, vendor, _("Device"), p->device_id, product, _("SVendor"), p->sub_vendor_id, svendor, _("SDevice"), p->sub_device_id, sproduct); } gchar *pcie_str; if (p->pcie_width_curr) { pcie_str = g_strdup_printf("[%s]\n" /* Addy */ "%s=PCI/%s\n" /* Width (max) */ "%s=x%u\n" /* Speed (max) */ "%s=%0.1f %s\n", _("PCI Express"), _("Location"), p->slot_str, _("Maximum Link Width"), p->pcie_width_max, _("Maximum Link Speed"), p->pcie_speed_max, _("GT/s") ); } else pcie_str = strdup(""); gchar *ret = g_strdup_printf("%s%s", vendor_device_str, pcie_str); g_free(vendor_device_str); g_free(pcie_str); return ret; } gboolean __scan_udisks2_devices(void) { GSList *node, *drives; u2driveext *ext; udiskd *disk; udiskp *part; udisksa *attrib; gchar *udisks2_storage_list = NULL, *features = NULL, *moreinfo = NULL; gchar *devid, *size, *tmp = NULL, *media_comp = NULL, *ven_tag = NULL; const gchar *media_label, *alabel, *icon, *media_curr = NULL; int n = 0, i, j, m; // http://storaged.org/doc/udisks2-api/latest/gdbus-org.freedesktop.UDisks2.Drive.html#gdbus-property-org-freedesktop-UDisks2-Drive.MediaCompatibility static struct { char *media; char *label; char *icon; } media_info[] = { { "thumb", "Thumb-drive", "media-usb" }, { "flash", "Flash Card", "media-sd" }, { "flash_cf", "CompactFlash", "media-sd" }, { "flash_ms", "MemoryStick", "media-sd" }, { "flash_sm", "SmartMedia", "media-sd" }, { "flash_sd", "SD", "media-sd" }, { "flash_sdhc", "SDHC", "media-sd" }, { "flash_sdxc", "SDXC", "media-sd" }, { "flash_mmc", "MMC", "media-sd" }, { "floppy", "Floppy Disk", "media-floppy" }, { "floppy_zip", "Zip Disk", "media-floppy" }, { "floppy_jaz", "Jaz Disk", "media-floppy" }, { "optical", "Optical Disc", "cdrom" }, { "optical_cd", "CD-ROM", "cdrom" }, { "optical_cd_r", "CD-R", "cdrom" }, { "optical_cd_rw", "CD-RW", "cdrom" }, { "optical_dvd", "DVD-ROM", "cdrom" }, { "optical_dvd_r", "DVD-R", "cdrom" }, { "optical_dvd_rw", "DVD-RW", "cdrom" }, { "optical_dvd_ram", "DVD-RAM", "cdrom" }, { "optical_dvd_plus_r", "DVD+R" , "cdrom" }, { "optical_dvd_plus_rw", "DVD+RW" , "cdrom" }, { "optical_dvd_plus_r_dl", "DVD+R DL", "cdrom" }, { "optical_dvd_plus_rw_dl", "DVD+RW DL", "cdrom" }, { "optical_bd", "BD-ROM", "cdrom" }, { "optical_bd_r", "BD-R", "cdrom" }, { "optical_bd_re", "BD-RE", "cdrom" }, { "optical_hddvd", "HD DVD-ROM", "cdrom" }, { "optical_hddvd_r", "HD DVD-R", "cdrom" }, { "optical_hddvd_rw", "HD DVD-RW", "cdrom" }, { "optical_mo", "MO Disc", "cdrom" }, { "optical_mrw", "MRW Media", "cdrom" }, { "optical_mrw_w", "MRW Media (write)", "cdrom" }, { NULL, NULL } }; struct { char *identifier; char *label; } smart_attrib_info[] = { { "raw-read-error-rate", _("Read Error Rate" ) }, { "throughput-performance", _("Throughput Performance") }, { "spin-up-time", _("Spin-Up Time") }, { "start-stop-count", _("Start/Stop Count") }, { "reallocated-sector-count", _("Reallocated Sector Count") }, { "read-channel-margin", _("Read Channel Margin") }, { "seek-error-rate", _("Seek Error Rate") }, { "seek-time-performance", _("Seek Timer Performance") }, { "power-on-hours", _("Power-On Hours") }, { "spin-retry-count", _("Spin Retry Count") }, { "calibration-retry-count", _("Calibration Retry Count") }, { "power-cycle-count", _("Power Cycle Count") }, { "read-soft-error-rate", _("Soft Read Error Rate") }, { "runtime-bad-block-total", _("Runtime Bad Block") }, { "end-to-end-error", _("End-to-End error") }, { "reported-uncorrect", _("Reported Uncorrectable Errors") }, { "command-timeout", _("Command Timeout") }, { "high-fly-writes", _("High Fly Writes") }, { "airflow-temperature-celsius", _("Airflow Temperature") }, { "g-sense-error-rate", _("G-sense Error Rate") }, { "power-off-retract-count", _("Power-off Retract Count") }, { "load-cycle-count", _("Load Cycle Count") }, { "temperature-celsius-2", _("Temperature") }, { "hardware-ecc-recovered", _("Hardware ECC Recovered") }, { "reallocated-event-count", _("Reallocation Event Count") }, { "current-pending-sector", _("Current Pending Sector Count") }, { "offline-uncorrectable", _("Uncorrectable Sector Count") }, { "udma-crc-error-count", _("UltraDMA CRC Error Count") }, { "multi-zone-error-rate", _("Multi-Zone Error Rate") }, { "soft-read-error-rate", _("Soft Read Error Rate") }, { "run-out-cancel", _("Run Out Cancel") }, { "flying-height", _("Flying Height") }, { "spin-high-current", _("Spin High Current") }, { "spin-buzz", _("Spin Buzz") }, { "offline-seek-performance", _("Offline Seek Performance") }, { "disk-shift", _("Disk Shift") }, { "g-sense-error-rate-2", _("G-Sense Error Rate") }, { "loaded-hours", _("Loaded Hours") }, { "load-retry-count", _("Load/Unload Retry Count") }, { "load-friction", _("Load Friction") }, { "load-cycle-count-2", _("Load/Unload Cycle Count") }, { "load-in-time", _("Load-in time") }, { "torq-amp-count", _("Torque Amplification Count") }, { "power-off-retract-count-2", _("Power-Off Retract Count") }, { "head-amplitude", _("GMR Head Amplitude") }, { "temperature-celsius", _("Temperature") }, { "endurance-remaining", _("Endurance Remaining") }, { "power-on-seconds-2", _("Power-On Hours") }, { "good-block-rate", _("Good Block Rate") }, { "head-flying-hours", _("Head Flying Hours") }, { "read-error-retry-rate", _("Read Error Retry Rate") }, { "total-lbas-written", _("Total LBAs Written") }, { "total-lbas-read", _("Total LBAs Read") }, { "wear-leveling-count", _("Wear leveling Count") }, { "used-reserved-blocks-total", _("Total Used Reserved Block Count") }, { "program-fail-count-total", _("Total Program Fail Count") }, { "erase-fail-count-total", _("Total Erase Fail Count") }, { "available-reserved-space", _("Available Reserved Space") }, { "program-fail-count", _("Program Fail Count") }, { "erase-fail-count", _("Erase Fail Count") }, { "ta-increase-count", _("TA Counter Increased") }, { "unused-reserved-blocks", _("Total Unused Reserved Block Count") }, { NULL, NULL } }; moreinfo_del_with_prefix("DEV:UDISKS"); udisks2_storage_list = g_strdup(_("\n[UDisks2]\n")); drives = get_udisks2_drives_ext(); for (node = drives; node != NULL; node = node->next) { ext = (u2driveext *)node->data; disk = ext->d; devid = g_strdup_printf("UDISKS%d", n++); icon = NULL; media_curr = disk->media; if (disk->media){ for (j = 0; media_info[j].media != NULL; j++) { if (g_strcmp0(disk->media, media_info[j].media) == 0) { media_curr = media_info[j].label; break; } } } if (disk->media_compatibility){ for (i = 0; disk->media_compatibility[i] != NULL; i++){ media_label = disk->media_compatibility[i]; for (j = 0; media_info[j].media != NULL; j++) { if (g_strcmp0(disk->media_compatibility[i], media_info[j].media) == 0) { media_label = media_info[j].label; if (icon == NULL) icon = media_info[j].icon; break; } } if (media_comp == NULL){ media_comp = g_strdup(media_label); } else{ media_comp = h_strdup_cprintf(", %s", media_comp, media_label); } } } if (icon == NULL && disk->ejectable && g_strcmp0(disk->connection_bus, "usb") == 0) { icon = "usbfldisk"; } if (icon == NULL){ icon = "hdd"; } size = size_human_readable((gfloat) disk->size); ven_tag = vendor_list_ribbon(ext->vendors, params.fmt_opts); udisks2_storage_list = h_strdup_cprintf("$%s$%s=%s|%s %s\n", udisks2_storage_list, devid, disk->block_dev, size, ven_tag ? ven_tag : "", disk->model); storage_icons = h_strdup_cprintf("Icon$%s$%s=%s.svg\n", storage_icons, devid, disk->model, icon); features = h_strdup_cprintf("%s", features, disk->removable ? _("Removable"): _("Fixed")); if (disk->ejectable) { features = h_strdup_cprintf(", %s", features, _("Ejectable")); } if (disk->smart_supported) { features = h_strdup_cprintf(", %s", features, _("Self-monitoring (S.M.A.R.T.)")); } if (disk->pm_supported) { features = h_strdup_cprintf(", %s", features, _("Power Management")); } if (disk->apm_supported) { features = h_strdup_cprintf(", %s", features, _("Advanced Power Management")); } if (disk->aam_supported) { features = h_strdup_cprintf(", %s", features, _("Automatic Acoustic Management")); } moreinfo = g_strdup_printf(_("[Drive Information]\n" "Model=%s\n"), disk->model); if (disk->vendor && *disk->vendor) { moreinfo = h_strdup_cprintf("$^$%s=%s\n", moreinfo, _("Vendor"), disk->vendor); } moreinfo = h_strdup_cprintf(_("Revision=%s\n" "Block Device=%s\n" "Serial=%s\n" "Size=%s\n" "Features=%s\n"), moreinfo, disk->revision, disk->block_dev, disk->serial, size, features); g_free(size); g_free(ven_tag); if (disk->rotation_rate > 0) { moreinfo = h_strdup_cprintf(_("Rotation Rate=%d RPM\n"), moreinfo, disk->rotation_rate); } if (media_comp || media_curr) { moreinfo = h_strdup_cprintf(_("Media=%s\n" "Media compatibility=%s\n"), moreinfo, media_curr ? media_curr : _("(None)"), media_comp ? media_comp : _("(Unknown)")); } if (disk->connection_bus && strlen(disk->connection_bus) > 0) { moreinfo = h_strdup_cprintf(_("Connection bus=%s\n"), moreinfo, disk->connection_bus); } tmp = NULL; if (disk->wwid) { m = strlen(disk->wwid); if (m > 2 && m % 2 == 0){ for (j = 4; j < m; j = j + 2) { tmp = h_strdup_cprintf("%s%c%c", tmp, j > 4 ? "-": "", disk->wwid[j], disk->wwid[j+1]); } } moreinfo = h_strdup_cprintf("%s=%s\n", moreinfo, g_str_has_prefix(disk->wwid, "nna.") ? _("WWN"): (g_str_has_prefix(disk->wwid, "eui.") ? _("EUI "): "Unknown ID"), tmp); g_free(tmp); } else{ moreinfo = h_strdup_cprintf("%s=%s\n", moreinfo, _("WWN / EUI"), _("(None)")); } if (ext->wwid_oui.oui) { moreinfo = h_strdup_cprintf(_("$^$%s=[%s] %s\n"), moreinfo, _("IEEE OUI"), ext->wwid_oui.oui, ext->wwid_oui.vendor ? ext->wwid_oui.vendor : _("(Unknown)")); } if (ext->nvme_controller) { gchar *nvme = nvme_pci_sections(ext->nvme_controller); if (nvme) moreinfo = h_strdup_cprintf("%s", moreinfo, nvme); g_free(nvme); } if (disk->smart_enabled) { moreinfo = h_strdup_cprintf(_("[Self-monitoring (S.M.A.R.T.)]\n" "Status=%s\n" "Bad Sectors=%" G_GINT64_FORMAT "\n" "Power on time=%" G_GUINT64_FORMAT " days %" G_GUINT64_FORMAT " hours\n" "Temperature=%d°C\n"), moreinfo, disk->smart_failing ? _("Failing"): _("OK"), disk->smart_bad_sectors, disk->smart_poweron/(60*60*24), (disk->smart_poweron/60/60) % 24, disk->smart_temperature); if (disk->smart_attributes != NULL) { moreinfo = h_strdup_cprintf(_("[S.M.A.R.T. Attributes]\n" "Attribute=Value / Normalized / Worst / Threshold\n"), moreinfo); attrib = disk->smart_attributes; while (attrib != NULL){ tmp = g_strdup(""); switch (attrib->interpreted_unit){ case UDSK_INTPVAL_SKIP: tmp = h_strdup_cprintf("-", tmp); break; case UDSK_INTPVAL_MILISECONDS: tmp = h_strdup_cprintf("%" G_GINT64_FORMAT " ms", tmp, attrib->interpreted); break; case UDSK_INTPVAL_HOURS: tmp = h_strdup_cprintf("%" G_GINT64_FORMAT " h", tmp, attrib->interpreted); break; case UDSK_INTPVAL_CELSIUS: tmp = h_strdup_cprintf("%" G_GINT64_FORMAT "°C", tmp, attrib->interpreted); break; case UDSK_INTPVAL_SECTORS: tmp = h_strdup_cprintf(ngettext("%" G_GINT64_FORMAT " sector", "%" G_GINT64_FORMAT " sectors", attrib->interpreted), tmp, attrib->interpreted); break; case UDSK_INTPVAL_DIMENSIONLESS: default: tmp = h_strdup_cprintf("%" G_GINT64_FORMAT, tmp, attrib->interpreted); break; } // pad spaces to next col j = g_utf8_strlen(tmp, -1); if (j < 13) tmp = h_strdup_cprintf("%*c", tmp, 13 - j, ' '); if (attrib->value != -1) tmp = h_strdup_cprintf("%-13d", tmp, attrib->value); else tmp = h_strdup_cprintf("%-13s", tmp, "???"); if (attrib->worst != -1) tmp = h_strdup_cprintf("%-8d", tmp, attrib->worst); else tmp = h_strdup_cprintf("%-8s", tmp, "???"); if (attrib->threshold != -1) tmp = h_strdup_cprintf("%d", tmp, attrib->threshold); else tmp = h_strdup_cprintf("???", tmp); alabel = attrib->identifier; for (i = 0; smart_attrib_info[i].identifier != NULL; i++) { if (g_strcmp0(attrib->identifier, smart_attrib_info[i].identifier) == 0) { alabel = smart_attrib_info[i].label; break; } } moreinfo = h_strdup_cprintf(_("(%d) %s=%s\n"), moreinfo, attrib->id, alabel, tmp); g_free(tmp); attrib = attrib->next; } } } if (disk->partition_table || disk->partitions) { moreinfo = h_strdup_cprintf(_("[Partition table]\n" "Type=%s\n"), moreinfo, disk->partition_table ? disk->partition_table : _("(Unknown)")); if (disk->partitions != NULL) { part = disk->partitions; while (part != NULL){ tmp = size_human_readable((gfloat) part->size); if (part->label) { tmp = h_strdup_cprintf(" - %s", tmp, part->label); } if (part->type && part->version) { tmp = h_strdup_cprintf(" (%s %s)", tmp, part->type, part->version); } else if (part->type) { tmp = h_strdup_cprintf(" (%s)", tmp, part->type); } moreinfo = h_strdup_cprintf(_("Partition %s=%s\n"), moreinfo, part->block, tmp); g_free(tmp); part = part->next; } } } moreinfo_add_with_prefix("DEV", devid, moreinfo); g_free(devid); g_free(features); g_free(media_comp); media_comp = NULL; features = NULL; moreinfo = NULL; devid = NULL; u2driveext_free(ext); } g_slist_free(drives); if (n) { storage_list = h_strconcat(storage_list, udisks2_storage_list, NULL); g_free(udisks2_storage_list); return TRUE; } g_free(udisks2_storage_list); return FALSE; } /* SCSI support by Pascal F.Martin */ void __scan_scsi_devices(void) { FILE *proc_scsi; gchar buffer[256], *buf; gint n = 0; gint scsi_controller = 0; gint scsi_channel = 0; gint scsi_id = 0 ; gint scsi_lun = 0; gchar *vendor = NULL, *revision = NULL, *model = NULL; gchar *scsi_storage_list; /* remove old devices from global device table */ moreinfo_del_with_prefix("DEV:SCSI"); scsi_storage_list = g_strdup(_("\n[SCSI Disks]\n")); int otype = 0; if ((proc_scsi = fopen("/proc/scsi/scsi", "r"))) { otype = 1; } else if ((proc_scsi = popen("lsscsi -c", "r"))) { otype = 2; } if (otype) { while (fgets(buffer, 256, proc_scsi)) { buf = g_strstrip(buffer); if (!strncmp(buf, "Host: scsi", 10)) { sscanf(buf, "Host: scsi%d Channel: %d Id: %d Lun: %d", &scsi_controller, &scsi_channel, &scsi_id, &scsi_lun); n++; } else if (!strncmp(buf, "Vendor: ", 8)) { buf[17] = '\0'; buf[41] = '\0'; buf[53] = '\0'; vendor = g_strdup(g_strstrip(buf + 8)); model = g_strdup_printf("%s %s", vendor, g_strstrip(buf + 24)); revision = g_strdup(g_strstrip(buf + 46)); } else if (!strncmp(buf, "Type: ", 8)) { char *p; gchar *type = NULL, *icon = NULL; if (!(p = strstr(buf, "ANSI SCSI revision"))) { p = strstr(buf, "ANSI SCSI revision"); } if (p != NULL) { while (*(--p) == ' '); *(++p) = 0; static struct { char *type; char *label; char *icon; } type2icon[] = { { "Direct-Access", "Disk", "hdd"}, { "Sequential-Access", "Tape", "tape"}, { "Printer", "Printer", "lpr"}, { "WORM", "CD-ROM", "cdrom"}, { "CD-ROM", "CD-ROM", "cdrom"}, { "Scanner", "Scanner", "scanner"}, { "Flash Disk", "USB Flash Disk", "usbfldisk" }, { NULL, "Generic", "scsi"} }; int i; if (model && strstr(model, "Flash Disk")) { type = "Flash Disk"; icon = "usbfldisk"; } else { for (i = 0; type2icon[i].type != NULL; i++) if (g_str_equal(buf + 8, type2icon[i].type)) break; type = type2icon[i].label; icon = type2icon[i].icon; } } gchar *devid = g_strdup_printf("SCSI%d", n); scsi_storage_list = h_strdup_cprintf("$%s$scsi%d=|%s\n", scsi_storage_list, devid, scsi_controller, model); storage_icons = h_strdup_cprintf("Icon$%s$%s=%s.svg\n", storage_icons, devid, model, icon); gchar *strhash = g_strdup_printf(_("[Device Information]\n" "Model=%s\n"), model); strhash = h_strdup_cprintf("$^$%s=%s\n", strhash, _("Vendor"), model); strhash = h_strdup_cprintf(_("Type=%s\n" "Revision=%s\n" "[SCSI Controller]\n" "Controller=scsi%d\n" "Channel=%d\n" "ID=%d\n" "LUN=%d\n"), strhash, type, revision, scsi_controller, scsi_channel, scsi_id, scsi_lun); moreinfo_add_with_prefix("DEV", devid, strhash); g_free(devid); g_free(model); g_free(revision); g_free(vendor); scsi_controller = scsi_channel = scsi_id = scsi_lun = 0; } } if (otype == 1) fclose(proc_scsi); else if (otype == 2) pclose(proc_scsi); } if (n) { storage_list = h_strconcat(storage_list, scsi_storage_list, NULL); g_free(scsi_storage_list); } } void __scan_ide_devices(void) { FILE *proc_ide; gchar *device, *model=NULL, *media=NULL, *pgeometry = NULL, *lgeometry = NULL; gchar iface; gint n = 0, i = 0, cache, nn = 0; gchar *capab = NULL, *speed = NULL, *driver = NULL, *ide_storage_list; /* remove old devices from global device table */ moreinfo_del_with_prefix("DEV:IDE"); ide_storage_list = g_strdup(_("\n[IDE Disks]\n")); iface = 'a'; for (i = 0; i <= 16; i++) { device = g_strdup_printf("/proc/ide/hd%c/model", iface); if (g_file_test(device, G_FILE_TEST_EXISTS)) { gchar buf[128]; cache = 0; proc_ide = fopen(device, "r"); if (!proc_ide) continue; char *cc=fgets(buf, 128, proc_ide); fclose(proc_ide); if(cc){ buf[strlen(buf) - 1] = 0; model = g_strdup(buf); } g_free(device); device = g_strdup_printf("/proc/ide/hd%c/media", iface); proc_ide = fopen(device, "r"); if (!proc_ide) { free(model); continue; } char *c=fgets(buf, 128, proc_ide); fclose(proc_ide); if(c){ buf[strlen(buf) - 1] = 0; media = g_strdup(buf); } if (g_str_equal(media, "cdrom")) { /* obtain cd-rom drive information from cdrecord */ GTimer *timer; gchar *tmp = g_strdup_printf("cdrecord dev=/dev/hd%c -prcap 2>/dev/stdout", iface); FILE *prcap; if ((prcap = popen(tmp, "r"))) { /* we need a timeout so cdrecord does not try to get information on cd drives with inserted media, which is not possible currently. half second should be enough. */ timer = g_timer_new(); g_timer_start(timer); while (fgets(buf, 128, prcap) && g_timer_elapsed(timer, NULL) < 0.5) { if (g_str_has_prefix(buf, " Does")) { if (g_str_has_suffix(buf, "media\n") && !strstr(buf, "speed")) { gchar *media_type = g_strstrip(strstr(buf, "Does ")); gchar **ttmp = g_strsplit(media_type, " ", 0); capab = h_strdup_cprintf("\nCan %s#%d=%s\n", capab, ttmp[1], ++nn, ttmp[2]); g_strfreev(ttmp); } else if (strstr(buf, "Buffer-Underrun-Free")) { capab = h_strdup_cprintf ("\nSupports BurnProof=%s\n", capab, strstr(buf, "Does not") ? "No" : "Yes"); } else if (strstr(buf, "multi-session")) { capab = h_strdup_cprintf ("\nCan read multi-session CDs=%s\n", capab, strstr(buf, "Does not") ? "No" : "Yes"); } else if (strstr(buf, "audio CDs")) { capab = h_strdup_cprintf ("\nCan play audio CDs=%s\n", capab, strstr(buf, "Does not") ? "No" : "Yes"); } else if (strstr(buf, "PREVENT/ALLOW")) { capab = h_strdup_cprintf ("\nCan lock media=%s\n", capab, strstr(buf, "Does not") ? "No" : "Yes"); } } else if ((strstr(buf, "read") || strstr(buf, "write")) && strstr(buf, "kB/s")) { speed = g_strconcat(speed ? speed : "", strreplacechr(g_strstrip(buf), ":", '='), "\n", NULL); } else if (strstr(buf, "Device seems to be")) { driver = g_strdup_printf(_("Driver=%s\n"), strchr(buf, ':') + 1); } } pclose(prcap); g_timer_destroy(timer); } g_free(tmp); } g_free(device); device = g_strdup_printf("/proc/ide/hd%c/cache", iface); if (g_file_test(device, G_FILE_TEST_EXISTS)) { proc_ide = fopen(device, "r"); if (proc_ide) { if(fscanf(proc_ide, "%d", &cache)!=1) cache=0; fclose(proc_ide); } else { cache = 0; } } g_free(device); device = g_strdup_printf("/proc/ide/hd%c/geometry", iface); if (g_file_test(device, G_FILE_TEST_EXISTS)) { gchar *tmp; proc_ide = fopen(device, "r"); if (proc_ide) { char *c=fgets(buf, 64, proc_ide); if(c){ for (tmp = buf; *tmp; tmp++) { if (*tmp >= '0' && *tmp <= '9') break; } pgeometry = g_strdup(g_strstrip(tmp)); } char *cc=fgets(buf, 64, proc_ide); if(cc){ for (tmp = buf; *tmp; tmp++) { if (*tmp >= '0' && *tmp <= '9') break; } lgeometry = g_strdup(g_strstrip(tmp)); } fclose(proc_ide); } else { pgeometry = g_strdup("Unknown"); lgeometry = g_strdup("Unknown"); } } g_free(device); n++; gchar *devid = g_strdup_printf("IDE%d", n); ide_storage_list = h_strdup_cprintf("$%s$hd%c=|%s\n", ide_storage_list, devid, iface, model); storage_icons = h_strdup_cprintf("Icon$%s$%s=%s.svg\n", storage_icons, devid, model, g_str_equal(media, "cdrom") ? "cdrom" : "hdd"); gchar *strhash = g_strdup_printf(_("[Device Information]\n" "Model=%s\n"), model); strhash = h_strdup_cprintf("$^$%s=%s\n", strhash, _("Vendor"), model); strhash = h_strdup_cprintf(_("Device Name=hd%c\n" "Media=%s\n" "Cache=%dkb\n"), strhash, iface, media, cache); if (driver) { strhash = h_strdup_cprintf("%s\n", strhash, driver); g_free(driver); driver = NULL; } if (pgeometry && lgeometry) { strhash = h_strdup_cprintf(_("[Geometry]\n" "Physical=%s\n" "Logical=%s\n"), strhash, pgeometry, lgeometry); g_free(pgeometry); pgeometry = NULL; g_free(lgeometry); lgeometry = NULL; } if (capab) { strhash = h_strdup_cprintf(_("[Capabilities]\n%s"), strhash, capab); g_free(capab); capab = NULL; } if (speed) { strhash = h_strdup_cprintf(_("[Speeds]\n%s"), strhash, speed); g_free(speed); speed = NULL; } moreinfo_add_with_prefix("DEV", devid, strhash); g_free(devid); g_free(model); } else { g_free(device); } iface++; } if (n) { storage_list = h_strconcat(storage_list, ide_storage_list, NULL); g_free(ide_storage_list); } } hardinfo2-hardinfo2-1331e88/modules/devices/usb.c000066400000000000000000000165511474767047500216020ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2008 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "cpu_util.h" #include "hardinfo.h" #include "devices.h" #include "usb_util.h" gchar *usb_list = NULL; gchar *usb_icons = NULL; #define UNKIFNULL_AC(f) (f != NULL) ? f : _("(Unknown)") #define IARR_END -2 #define IARR_ANY -1 static struct { int class; char *icon; } usb_class_icons[] = { { 0x1, "audio"}, /* Audio */ { 0x2, "modem"}, /* Communications and CDC Control */ { 0x3, "inputdevices"}, /* HID (Human Interface Device) */ { 0x6, "camera-photo"}, /* Still Imaging */ { 0x7, "printer"}, /* Printer */ { 0x8, "media-removable"}, /* Mass storage */ { 0x9, "usb"}, /* Hub */ { 0xe, "camera-web"}, /* Video */ {IARR_END, NULL} }; static struct { int class, subclass, protocol; char *icon; } usb_type_icons[] = { { 0x2, 0x6, IARR_ANY, "network-interface"}, /* Ethernet Networking Control Model */ { 0x3, 0x1, 0x1, "keyboard"}, /* Keyboard */ { 0x3, 0x1, 0x2, "mouse"}, /* Mouse */ {0xe0, 0x1, 0x1, "bluetooth"}, /* Bluetooth Programming Interface */ {IARR_END, IARR_END, IARR_END, NULL}, }; static const char* get_class_icon(int class){ int i = 0; while (usb_class_icons[i].class != IARR_END) { if (usb_class_icons[i].class == class) { return usb_class_icons[i].icon; } i++; } return NULL; } static const char* get_usbif_icon(const usbi *usbif) { int i = 0; while (usb_type_icons[i].class != IARR_END) { if (usb_type_icons[i].class == usbif->if_class && usb_type_icons[i].subclass == usbif->if_subclass && (usb_type_icons[i].protocol == IARR_ANY || usb_type_icons[i].protocol == usbif->if_protocol)) { return usb_type_icons[i].icon; } i++; } return get_class_icon(usbif->if_class); } static const char* get_usbdev_icon(const usbd *u) { const char * icon = NULL; usbi *curr_if; curr_if = u->if_list; while (icon == NULL && curr_if != NULL){ icon = get_usbif_icon(curr_if); curr_if = curr_if->next; } if (icon == NULL){ icon = get_class_icon(u->dev_class); } return icon; } static void _usb_dev(const usbd *u) { gchar *name, *key, *label, *str, *speed; gchar *product, *vendor, *manufacturer, *device; /* don't free */ gchar *interfaces = strdup(""); usbi *i; const char* icon; vendor = UNKIFNULL_AC(u->vendor); product = UNKIFNULL_AC(u->product); manufacturer = UNKIFNULL_AC(u->manufacturer); device = UNKIFNULL_AC(u->device); if (u->vendors) { gchar *ribbon = vendor_list_ribbon(u->vendors, params.fmt_opts); name = g_strdup_printf("%s %s", ribbon, u->product? product: device); } else { name = g_strdup_printf("%s %s", u->vendor? vendor: manufacturer, u->product? product: device); } key = g_strdup_printf("USB%03d:%03d:%03d", u->bus, u->dev, 0); label = g_strdup_printf("%03d:%03d", u->bus, u->dev); icon = get_usbdev_icon(u); usb_list = h_strdup_cprintf("$%s$%s=%s\n", usb_list, key, label, name); usb_icons = h_strdup_cprintf("Icon$%s$%s=%s.svg\n", usb_icons, key, label, icon ? icon: "usb"); if (u->if_list != NULL) { i = u->if_list; while (i != NULL){ interfaces = h_strdup_cprintf("[%s %d %s]\n" /* Class */ "%s=[%d] %s\n" /* Sub-class */ "%s=[%d] %s\n" /* Protocol */ "%s=[%d] %s\n" /* Driver */ "%s=%s\n", interfaces, _("Interface"), i->if_number, i->if_label? i->if_label: "", _("Class"), i->if_class, UNKIFNULL_AC(i->if_class_str), _("Sub-class"), i->if_subclass, UNKIFNULL_AC(i->if_subclass_str), _("Protocol"), i->if_protocol, UNKIFNULL_AC(i->if_protocol_str), _("Driver"), UNKIFNULL_AC(i->driver) ); i = i->next; } } if (u->speed_mbs > 0){ speed = g_strdup_printf("%d %s", u->speed_mbs, _("Mb/s")); } else{ speed = g_strdup(_("Unknown")); } str = g_strdup_printf("[%s]\n" /* Product */ "%s=[0x%04x] %s\n" /* Vendor */ "$^$%s=[0x%04x] %s\n" /* Device */ "%s=%s\n" /* Manufacturer */ "$^$%s=%s\n" /* Max Current */ "%s=%d %s\n" /* USB Version */ "%s=%s\n" /* Speed */ "%s=%s\n" /* Class */ "%s=[%d] %s\n" /* Sub-class */ "%s=[%d] %s\n" /* Protocol */ "%s=[%d] %s\n" /* Dev Version */ "%s=%s\n" /* Serial */ "%s=%s\n" "[%s]\n" /* Bus */ "%s=%03d\n" /* Device */ "%s=%03d\n" /* Interfaces */ "%s", _("Device Information"), _("Product"), u->product_id, product, _("Vendor"), u->vendor_id, vendor, _("Device"), device, _("Manufacturer"), manufacturer, _("Max Current"), u->max_curr_ma, _("mA"), _("USB Version"), u->usb_version, _("Speed"), speed, _("Class"), u->dev_class, UNKIFNULL_AC(u->dev_class_str), _("Sub-class"), u->dev_subclass, UNKIFNULL_AC(u->dev_subclass_str), _("Protocol"), u->dev_protocol, UNKIFNULL_AC(u->dev_protocol_str), _("Device Version"), UNKIFNULL_AC(u->device_version), _("Serial Number"), UNKIFNULL_AC(u->serial), _("Connection"), _("Bus"), u->bus, _("Device"), u->dev, interfaces ); moreinfo_add_with_prefix("DEV", key, str); /* str now owned by morinfo */ g_free(speed); g_free(name); g_free(key); g_free(label); g_free(interfaces); } void __scan_usb(void) { usbd *list = usb_get_device_list(); usbd *curr = list; int c = usbd_list_count(list); if (usb_list) { moreinfo_del_with_prefix("DEV:USB"); g_free(usb_list); } if (usb_icons){ g_free(usb_icons); usb_icons = NULL; } usb_list = g_strdup_printf("[%s]\n", _("USB Devices")); if (c > 0) { while(curr) { _usb_dev(curr); curr=curr->next; } usbd_list_free(list); } else { /* No USB? */ usb_list = g_strconcat(usb_list, _("No USB devices found."), "=\n", NULL); } } hardinfo2-hardinfo2-1331e88/modules/devices/x86/000077500000000000000000000000001474767047500212625ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/modules/devices/x86/processor.c000066400000000000000000000702001474767047500234440ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "hardinfo.h" #include "devices.h" #include "cpu_util.h" #include "nice_name.h" #include "x86_data.h" #include "x86_data.c" /* * This function is partly based on x86cpucaps * by Osamu Kayasono */ void get_processor_strfamily(Processor * processor) { gint family = processor->family; gint model = processor->model; if (g_str_equal(processor->vendor_id, "GenuineIntel")) { if (family == 4) { processor->strmodel = g_strdup("i486 series"); } else if (family == 5) { if (model < 4) { processor->strmodel = g_strdup("Pentium Classic"); } else { processor->strmodel = g_strdup("Pentium MMX"); } } else if (family == 6) { if (model <= 1) { processor->strmodel = g_strdup("Pentium Pro"); } else if (model < 7) { processor->strmodel = g_strdup("Pentium II/Pentium II Xeon/Celeron"); } else if (model == 9) { processor->strmodel = g_strdup("Pentium M"); } else { processor->strmodel = g_strdup("Pentium III/Pentium III Xeon/Celeron/Core Duo/Core Duo 2"); } } else if (family > 6) { processor->strmodel = g_strdup("Pentium 4"); } else { processor->strmodel = g_strdup("i386 class"); } } else if (g_str_equal(processor->vendor_id, "AuthenticAMD")) { if (family == 4) { if (model <= 9) { processor->strmodel = g_strdup("AMD i80486 series"); } else { processor->strmodel = g_strdup("AMD 5x86"); } } else if (family == 5) { if (model <= 3) { processor->strmodel = g_strdup("AMD K5"); } else if (model <= 7) { processor->strmodel = g_strdup("AMD K6"); } else if (model == 8) { processor->strmodel = g_strdup("AMD K6-2"); } else if (model == 9) { processor->strmodel = g_strdup("AMD K6-III"); } else { processor->strmodel = g_strdup("AMD K6-2+/III+"); } } else if (family == 6) { if (model == 1) { processor->strmodel = g_strdup("AMD Athlon (K7)"); } else if (model == 2) { processor->strmodel = g_strdup("AMD Athlon (K75)"); } else if (model == 3) { processor->strmodel = g_strdup("AMD Duron (Spitfire)"); } else if (model == 4) { processor->strmodel = g_strdup("AMD Athlon (Thunderbird)"); } else if (model == 6) { processor->strmodel = g_strdup("AMD Athlon XP/MP/4 (Palomino)"); } else if (model == 7) { processor->strmodel = g_strdup("AMD Duron (Morgan)"); } else if (model == 8) { processor->strmodel = g_strdup("AMD Athlon XP/MP (Thoroughbred)"); } else if (model == 10) { processor->strmodel = g_strdup("AMD Athlon XP/MP (Barton)"); } else { processor->strmodel = g_strdup("AMD Athlon (unknown)"); } } else if (family > 6) { processor->strmodel = g_strdup("AMD Opteron/Athlon64/FX"); } else { processor->strmodel = g_strdup("AMD i386 class"); } } else if (g_str_equal(processor->vendor_id, "CyrixInstead")) { if (family == 4) { processor->strmodel = g_strdup("Cyrix 5x86"); } else if (family == 5) { processor->strmodel = g_strdup("Cyrix M1 (6x86)"); } else if (family == 6) { if (model == 0) { processor->strmodel = g_strdup("Cyrix M2 (6x86MX)"); } else if (model <= 5) { processor->strmodel = g_strdup("VIA Cyrix III (M2 core)"); } else if (model == 6) { processor->strmodel = g_strdup("VIA Cyrix III (WinChip C5A)"); } else if (model == 7) { processor->strmodel = g_strdup("VIA Cyrix III (WinChip C5B/C)"); } else { processor->strmodel = g_strdup("VIA Cyrix III (WinChip C5C-T)"); } } else { processor->strmodel = g_strdup("Cyrix i386 class"); } } else if (g_str_equal(processor->vendor_id, "CentaurHauls")) { if (family == 5) { if (model <= 4) { processor->strmodel = g_strdup("Centaur WinChip C6"); } else if (model <= 8) { processor->strmodel = g_strdup("Centaur WinChip 2"); } else { processor->strmodel = g_strdup("Centaur WinChip 2A"); } } else { processor->strmodel = g_strdup("Centaur i386 class"); } } else if (g_str_equal(processor->vendor_id, "GenuineTMx86")) { processor->strmodel = g_strdup("Transmeta Crusoe TM3x00/5x00"); } else { processor->strmodel = g_strdup("Unknown"); } } static gchar *__cache_get_info_as_string(Processor *processor) { gchar *result = g_strdup(""); GSList *cache_list; ProcessorCache *cache; if (!processor->cache) { return g_strdup(_("Cache information not available=\n")); } for (cache_list = processor->cache; cache_list; cache_list = cache_list->next) { cache = (ProcessorCache *)cache_list->data; result = h_strdup_cprintf(_("Level %d (%s)=%d-way set-associative, %d sets, %dKB size\n"), result, cache->level, C_("cache-type", cache->type), cache->ways_of_associativity, cache->number_of_sets, cache->size); } return result; } /* This is not used directly, but creates translatable strings for * the type string returned from /sys/.../cache */ //static const char* cache_types[] = { // NC_("cache-type", /*/cache type, as appears in: Level 1 (Data)*/ "Data"), // NC_("cache-type", /*/cache type, as appears in: Level 1 (Instruction)*/ "Instruction"), // NC_("cache-type", /*/cache type, as appears in: Level 2 (Unified)*/ "Unified") //}; static void __cache_obtain_info(Processor *processor) { ProcessorCache *cache; gchar *endpoint, *entry, *index; gchar *uref = NULL; gint i; gint processor_number = processor->id; endpoint = g_strdup_printf("/sys/devices/system/cpu/cpu%d/cache", processor_number); for (i = 0; ; i++) { cache = g_new0(ProcessorCache, 1); index = g_strdup_printf("index%d/", i); entry = g_strconcat(index, "type", NULL); cache->type = h_sysfs_read_string(endpoint, entry); g_free(entry); if (!cache->type) { g_free(cache); g_free(index); goto fail; } entry = g_strconcat(index, "level", NULL); cache->level = h_sysfs_read_int(endpoint, entry); g_free(entry); entry = g_strconcat(index, "number_of_sets", NULL); cache->number_of_sets = h_sysfs_read_int(endpoint, entry); g_free(entry); entry = g_strconcat(index, "physical_line_partition", NULL); cache->physical_line_partition = h_sysfs_read_int(endpoint, entry); g_free(entry); entry = g_strconcat(index, "size", NULL); cache->size = h_sysfs_read_int(endpoint, entry); g_free(entry); entry = g_strconcat(index, "ways_of_associativity", NULL); cache->ways_of_associativity = h_sysfs_read_int(endpoint, entry); g_free(entry); /* unique cache references: id is nice, but share_cpu_list can be * used if it is not available. */ entry = g_strconcat(index, "id", NULL); uref = h_sysfs_read_string(endpoint, entry); g_free(entry); if (uref != NULL && *uref != 0 ) cache->uid = atoi(uref); else cache->uid = -1; g_free(uref); entry = g_strconcat(index, "shared_cpu_list", NULL); cache->shared_cpu_list = h_sysfs_read_string(endpoint, entry); g_free(entry); /* reacharound */ entry = g_strconcat(index, "../../topology/physical_package_id", NULL); cache->phy_sock = h_sysfs_read_int(endpoint, entry); g_free(entry); g_free(index); processor->cache = g_slist_append(processor->cache, cache); } fail: g_free(endpoint); } #define khzint_to_mhzdouble(k) (((double)k)/1000) #define cmp_clocks_test(f) if (a->f < b->f) return -1; if (a->f > b->f) return 1; static gint cmp_cpufreq_data(cpufreq_data *a, cpufreq_data *b) { gint i = 0; i = g_strcmp0(a->shared_list, b->shared_list); if (i!=0) return i; cmp_clocks_test(cpukhz_max); cmp_clocks_test(cpukhz_min); return 0; } static gint cmp_cpufreq_data_ignore_affected(cpufreq_data *a, cpufreq_data *b) { cmp_clocks_test(cpukhz_max); cmp_clocks_test(cpukhz_min); return 0; } gchar *clocks_summary(GSList * processors) { gchar *ret = g_strdup_printf("[%s]\n", _("Clocks")); GSList *all_clocks = NULL, *uniq_clocks = NULL; GSList *l; Processor *p; cpufreq_data *c, *cur = NULL; gint cur_count = 0; /* create list of all clock references */ for (l = processors; l; l = l->next) { p = (Processor*)l->data; if (p->cpufreq && p->cpufreq->cpukhz_max > 0) { all_clocks = g_slist_prepend(all_clocks, p->cpufreq); } } if (g_slist_length(all_clocks) == 0) { ret = h_strdup_cprintf("%s=\n", ret, _("(Not Available)") ); g_slist_free(all_clocks); return ret; } /* ignore duplicate references */ all_clocks = g_slist_sort(all_clocks, (GCompareFunc)cmp_cpufreq_data); for (l = all_clocks; l; l = l->next) { c = (cpufreq_data*)l->data; if (!cur) { cur = c; } else { if (cmp_cpufreq_data(cur, c) != 0) { uniq_clocks = g_slist_prepend(uniq_clocks, cur); cur = c; } } } uniq_clocks = g_slist_prepend(uniq_clocks, cur); uniq_clocks = g_slist_reverse(uniq_clocks); cur = 0, cur_count = 0; /* count and list clocks */ for (l = uniq_clocks; l; l = l->next) { c = (cpufreq_data*)l->data; if (!cur) { cur = c; cur_count = 1; } else { if (cmp_cpufreq_data_ignore_affected(cur, c) != 0) { ret = h_strdup_cprintf(_("%.2f-%.2f %s=%dx\n"), ret, khzint_to_mhzdouble(cur->cpukhz_min), khzint_to_mhzdouble(cur->cpukhz_max), _("MHz"), cur_count); cur = c; cur_count = 1; } else { cur_count++; } } } ret = h_strdup_cprintf(_("%.2f-%.2f %s=%dx\n"), ret, khzint_to_mhzdouble(cur->cpukhz_min), khzint_to_mhzdouble(cur->cpukhz_max), _("MHz"), cur_count); g_slist_free(all_clocks); g_slist_free(uniq_clocks); return ret; } #define cmp_cache_test(f) if (a->f < b->f) return -1; if (a->f > b->f) return 1; static gint cmp_cache(ProcessorCache *a, ProcessorCache *b) { gint i = 0; cmp_cache_test(phy_sock); i = g_strcmp0(a->type, b->type); if (i!=0) return i; cmp_cache_test(level); cmp_cache_test(size); cmp_cache_test(uid); /* uid is unique among caches with the same (type, level) */ if (a->uid == -1) { /* if id wasn't available, use shared_cpu_list as a unique ref */ i = g_strcmp0(a->shared_cpu_list, b->shared_cpu_list); if (i!=0) return i; } return 0; } static gint cmp_cache_ignore_id(ProcessorCache *a, ProcessorCache *b) { gint i = 0; cmp_cache_test(phy_sock); i = g_strcmp0(a->type, b->type); if (i!=0) return i; cmp_cache_test(level); cmp_cache_test(size); return 0; } gchar *caches_summary(GSList * processors) { gchar *ret = g_strdup_printf("[%s]\n", _("Caches")); GSList *all_cache = NULL, *uniq_cache = NULL; GSList *tmp, *l; Processor *p; ProcessorCache *c, *cur = NULL; gint cur_count = 0; /* create list of all cache references */ for (l = processors; l; l = l->next) { p = (Processor*)l->data; if (p->cache) { tmp = g_slist_copy(p->cache); if (all_cache) { all_cache = g_slist_concat(all_cache, tmp); } else { all_cache = tmp; } } } if (g_slist_length(all_cache) == 0) { ret = h_strdup_cprintf("%s=\n", ret, _("(Not Available)") ); g_slist_free(all_cache); return ret; } /* ignore duplicate references */ all_cache = g_slist_sort(all_cache, (GCompareFunc)cmp_cache); for (l = all_cache; l; l = l->next) { c = (ProcessorCache*)l->data; if (!cur) { cur = c; } else { if (cmp_cache(cur, c) != 0) { uniq_cache = g_slist_prepend(uniq_cache, cur); cur = c; } } } uniq_cache = g_slist_prepend(uniq_cache, cur); uniq_cache = g_slist_reverse(uniq_cache); cur = 0, cur_count = 0; /* count and list caches */ for (l = uniq_cache; l; l = l->next) { c = (ProcessorCache*)l->data; if (!cur) { cur = c; cur_count = 1; } else { if (cmp_cache_ignore_id(cur, c) != 0) { ret = h_strdup_cprintf(_("Level %d (%s)#%d=%dx %dKB (%dKB), %d-way set-associative, %d sets\n"), ret, cur->level, C_("cache-type", cur->type), cur->phy_sock, cur_count, cur->size, cur->size * cur_count, cur->ways_of_associativity, cur->number_of_sets); cur = c; cur_count = 1; } else { cur_count++; } } } ret = h_strdup_cprintf(_("Level %d (%s)#%d=%dx %dKB (%dKB), %d-way set-associative, %d sets\n"), ret, cur->level, C_("cache-type", cur->type), cur->phy_sock, cur_count, cur->size, cur->size * cur_count, cur->ways_of_associativity, cur->number_of_sets); g_slist_free(all_cache); g_slist_free(uniq_cache); return ret; } #define PROC_SCAN_READ_BUFFER_SIZE 2048 GSList *processor_scan(void) { GSList *procs = NULL, *l = NULL; Processor *processor = NULL; FILE *cpuinfo; gchar *buffer; buffer = g_malloc(PROC_SCAN_READ_BUFFER_SIZE); cpuinfo = fopen(PROC_CPUINFO, "r"); if (!cpuinfo) return NULL; while (fgets(buffer, PROC_SCAN_READ_BUFFER_SIZE, cpuinfo)) { int rlen = strlen(buffer); if (rlen >= PROC_SCAN_READ_BUFFER_SIZE - 1) { fprintf(stderr, "Warning: truncated a line (probably flags list) longer than %d bytes while reading %s.\n", PROC_SCAN_READ_BUFFER_SIZE, PROC_CPUINFO); } gchar **tmp = g_strsplit(buffer, ":", 2); if (!tmp[1] || !tmp[0]) { g_strfreev(tmp); continue; } tmp[0] = g_strstrip(tmp[0]); tmp[1] = g_strstrip(tmp[1]); if (g_str_has_prefix(tmp[0], "processor")) { /* finish previous */ if (processor) procs = g_slist_append(procs, processor); /* start next */ processor = g_new0(Processor, 1); processor->id = atol(tmp[1]); g_strfreev(tmp); continue; } if (processor) { get_str("model name", processor->model_name); get_str("vendor_id", processor->vendor_id); get_str("flags", processor->flags); get_str("bugs", processor->bugs); get_str("power management", processor->pm); get_str("microcode", processor->microcode); get_int("cache size", processor->cache_size); get_float("cpu MHz", processor->cpu_mhz); get_float("bogomips", processor->bogomips); get_str("fpu", processor->has_fpu); get_str("fdiv_bug", processor->bug_fdiv); get_str("hlt_bug", processor->bug_hlt); get_str("f00f_bug", processor->bug_f00f); get_str("coma_bug", processor->bug_coma); /* sep_bug? */ get_int("model", processor->model); get_int("cpu family", processor->family); get_int("stepping", processor->stepping); } g_strfreev(tmp); } fclose(cpuinfo); g_free(buffer); /* finish last */ if (processor) procs = g_slist_append(procs, processor); for (l = procs; l; l = l->next) { processor = (Processor *) l->data; STRIFNULL(processor->microcode, _("(Not Available)") ); get_processor_strfamily(processor); __cache_obtain_info(processor); #define NULLIFNOTYES(f) if (processor->f) if (strcmp(processor->f, "yes") != 0) { g_free(processor->f); processor->f = NULL; } NULLIFNOTYES(bug_fdiv); NULLIFNOTYES(bug_hlt); NULLIFNOTYES(bug_f00f); NULLIFNOTYES(bug_coma); if (processor->bugs == NULL || g_strcmp0(processor->bugs, "") == 0) { g_free(processor->bugs); /* make bugs list on old kernels that don't offer one */ processor->bugs = g_strdup_printf("%s%s%s%s%s%s%s%s%s%s", /* the oldest bug workarounds indicated in /proc/cpuinfo */ processor->bug_fdiv ? " fdiv" : "", processor->bug_hlt ? " _hlt" : "", processor->bug_f00f ? " f00f" : "", processor->bug_coma ? " coma" : "", /* these bug workarounds were reported as "features" in older kernels */ processor_has_flag(processor->flags, "fxsave_leak") ? " fxsave_leak" : "", processor_has_flag(processor->flags, "clflush_monitor") ? " clflush_monitor" : "", processor_has_flag(processor->flags, "11ap") ? " 11ap" : "", processor_has_flag(processor->flags, "tlb_mmatch") ? " tlb_mmatch" : "", processor_has_flag(processor->flags, "apic_c1e") ? " apic_c1e" : "", ""); /* just to make adding lines easier */ g_strchug(processor->bugs); } if (processor->pm == NULL || g_strcmp0(processor->pm, "") == 0) { g_free(processor->pm); /* make power management list on old kernels that don't offer one */ processor->pm = g_strdup_printf("%s%s", /* "hw_pstate" -> "hwpstate" */ processor_has_flag(processor->flags, "hw_pstate") ? " hwpstate" : "", ""); /* just to make adding lines easier */ g_strchug(processor->pm); } /* topo & freq */ processor->cpufreq = cpufreq_new(processor->id); processor->cputopo = cputopo_new(processor->id); if (processor->cpufreq->cpukhz_max) processor->cpu_mhz = processor->cpufreq->cpukhz_max / 1000; nice_name_x86_cpuid_model_string(processor->model_name); } return procs; } gchar *processor_get_capabilities_from_flags(gchar *strflags, gchar *lookup_prefix) { gchar **flags, **old; gchar tmp_flag[64] = ""; const gchar *meaning; gchar *tmp = NULL; gint j = 0, i = 0; flags = g_strsplit(strflags, " ", 0); old = flags; while (flags[j]) { if ( sscanf(flags[j], "[%d]", &i)==1 ) { /* Some flags are indexes, like [13], and that looks like * a new section to hardinfo shell */ tmp = h_strdup_cprintf("(%s%d)=\n", tmp, (lookup_prefix) ? lookup_prefix : "", i ); } else { sprintf(tmp_flag, "%s%s", lookup_prefix, flags[j]); meaning = x86_flag_meaning(tmp_flag); if (meaning) { tmp = h_strdup_cprintf("%s=%s\n", tmp, flags[j], meaning); } else { tmp = h_strdup_cprintf("%s=\n", tmp, flags[j]); } } j++; } if (tmp == NULL || g_strcmp0(tmp, "") == 0) tmp = g_strdup_printf("%s=%s\n", "empty", _("Empty List")); g_strfreev(old); return tmp; } gchar *processor_get_detailed_info(Processor * processor) { gchar *tmp_flags, *tmp_bugs, *tmp_pm, *tmp_cpufreq, *tmp_topology, *ret, *cache_info; tmp_flags = processor_get_capabilities_from_flags(processor->flags, ""); tmp_bugs = processor_get_capabilities_from_flags(processor->bugs, "bug:"); tmp_pm = processor_get_capabilities_from_flags(processor->pm, "pm:"); cache_info = __cache_get_info_as_string(processor); tmp_topology = cputopo_section_str(processor->cputopo); tmp_cpufreq = cpufreq_section_str(processor->cpufreq); ret = g_strdup_printf("[%s]\n" "%s=%s\n" "%s=%d, %d, %d (%s)\n" /* family, model, stepping (decoded name) */ "$^$%s=%s\n" /* vendor */ "%s=%s\n" /* microcode */ "[%s]\n" /* configuration */ "%s=%d %s\n" /* cache size (from cpuinfo) */ "%s=%.2f %s\n" /* frequency */ "%s=%.2f\n" /* bogomips */ "%s=%s\n" /* byte order */ "%s" /* topology */ "%s" /* frequency scaling */ "[%s]\n" /* cache */ "%s\n" "[%s]\n" /* pm */ "%s" "[%s]\n" /* bugs */ "%s" "[%s]\n" /* flags */ "%s", _("Processor"), _("Model Name"), processor->model_name, _("Family, model, stepping"), processor->family, processor->model, processor->stepping, processor->strmodel, _("Vendor"), processor->vendor_id, _("Microcode Version"), processor->microcode, _("Configuration"), _("Cache Size"), processor->cache_size, _("kb"), _("Frequency"), processor->cpu_mhz, _("MHz"), _("BogoMips"), processor->bogomips, _("Byte Order"), byte_order_str(), tmp_topology, tmp_cpufreq, _("Cache"), cache_info, _("Power Management"), tmp_pm, _("Bug Workarounds"), tmp_bugs, _("Capabilities"), tmp_flags ); g_free(tmp_flags); g_free(tmp_bugs); g_free(tmp_pm); g_free(cache_info); g_free(tmp_cpufreq); g_free(tmp_topology); return ret; } gchar *processor_name(GSList * processors) { return processor_name_default(processors); } gchar *processor_describe(GSList * processors) { return processor_describe_default(processors); } gchar *dmi_socket_info() { gchar *ret; dmi_type dt = 4; guint i; dmi_handle_list *hl = dmidecode_handles(&dt); if (!hl) { ret = g_strdup_printf("[%s]\n%s=%s\n", _("Socket Information"), _("Result"), (getuid() == 0) ? _("(Not available)") : _("(Not available; Perhaps try running hardinfo2 as root.)") ); } else { ret = g_strdup(""); for(i = 0; i < hl->count; i++) { dmi_handle h = hl->handles[i]; gchar *upgrade = dmidecode_match("Upgrade", &dt, &h); gchar *socket = dmidecode_match("Socket Designation", &dt, &h); gchar *bus_clock_str = dmidecode_match("External Clock", &dt, &h); gchar *voltage_str = dmidecode_match("Voltage", &dt, &h); gchar *max_speed_str = dmidecode_match("Max Speed", &dt, &h); ret = h_strdup_cprintf("[%s (%d) %s]\n" "%s=0x%x\n" "%s=%s\n" "%s=%s\n" "%s=%s\n" "%s=%s\n", ret, _("CPU Socket"), i, socket, _("DMI Handle"), h, _("Type"), upgrade, _("Voltage"), voltage_str, _("External Clock"), bus_clock_str, _("Max Frequency"), max_speed_str ); g_free(upgrade); g_free(socket); g_free(bus_clock_str); g_free(voltage_str); g_free(max_speed_str); } dmi_handle_list_free(hl); } return ret; } gchar *processor_meta(GSList * processors) { gchar *meta_cpu_name = processor_name(processors); gchar *meta_cpu_desc = processor_describe(processors); gchar *meta_freq_desc = processor_frequency_desc(processors); gchar *meta_clocks = clocks_summary(processors); gchar *meta_caches = caches_summary(processors); gchar *meta_dmi = dmi_socket_info(); gchar *ret = NULL; UNKIFNULL(meta_cpu_desc); ret = g_strdup_printf("[%s]\n" "%s=%s\n" "%s=%s\n" "%s=%s\n" "%s" "%s" "%s", _("Package Information"), _("Name"), meta_cpu_name, _("Topology"), meta_cpu_desc, _("Logical CPU Config"), meta_freq_desc, meta_clocks, meta_caches, meta_dmi); g_free(meta_cpu_desc); g_free(meta_freq_desc); g_free(meta_clocks); g_free(meta_caches); return ret; } gchar *processor_get_info(GSList * processors) { Processor *processor; gchar *ret, *tmp, *hashkey; gchar *meta; /* becomes owned by more_info? no need to free? */ GSList *l; gchar *icons=g_strdup(""); tmp = g_strdup_printf("$!CPU_META$%s=|Summary\n", "all"); meta = processor_meta(processors); moreinfo_add_with_prefix("DEV", "CPU_META", meta); for (l = processors; l; l = l->next) { processor = (Processor *) l->data; gchar *model_name = g_strdup(processor->model_name); const Vendor *v = vendor_match(processor->vendor_id, NULL); if (v) tag_vendor(&model_name, 0, v->name_short ? v->name_short : v->name, v->ansi_color, params.fmt_opts); icons = h_strdup_cprintf("Icon$CPU%d$cpu%d=processor.svg\n", icons, processor->id, processor->id); tmp = g_strdup_printf("%s$CPU%d$cpu%d=%.2f %s|%s|%d:%d\n", tmp, processor->id, processor->id, processor->cpu_mhz, _("MHz"), model_name, processor->cputopo->socket_id, processor->cputopo->core_id); hashkey = g_strdup_printf("CPU%d", processor->id); moreinfo_add_with_prefix("DEV", hashkey, processor_get_detailed_info(processor)); g_free(hashkey); g_free(model_name); } ret = g_strdup_printf("[$ShellParam$]\n" "ViewType=1\n" "ColumnTitle$TextValue=%s\n" "ColumnTitle$Value=%s\n" "ColumnTitle$Extra1=%s\n" "ColumnTitle$Extra2=%s\n" "ShowColumnHeaders=true\n" "%s" "[Processors]\n" "%s", _("Device"), _("Frequency"), _("Model"), _("Socket:Core"), icons, tmp); g_free(tmp); g_free(icons); // now here's something fun... struct Info *i = info_unflatten(ret); g_free(ret); ret = info_flatten(i); return ret; } hardinfo2-hardinfo2-1331e88/modules/devices/x86/x86_data.c000066400000000000000000000651031474767047500230510ustar00rootroot00000000000000/* * rpiz - https://github.com/bp0/rpiz * Copyright (C) 2017 Burt P. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include #include #include #include "x86_data.h" #ifndef C_ #define C_(Ctx, String) String #endif #ifndef NC_ #define NC_(Ctx, String) String #endif /* sources: * https://unix.stackexchange.com/a/43540 * https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/tree/arch/x86/include/asm/cpufeatures.h?id=refs/tags/v4.9 * hardinfo: modules/devices/x86/processor.c */ struct flag_to_meaning { char *name; char *meaning; }; static const struct flag_to_meaning builtin_tab_flag_meaning[] = { /* Intel-defined CPU features, CPUID level 0x00000001 (edx) * See also Wikipedia and table 2-27 in Intel Advanced Vector Extensions Programming Reference */ { "fpu", NC_("x86-flag", /*!/flag:fpu*/ "Onboard FPU (floating point support)") }, { "vme", NC_("x86-flag", /*!/flag:vme*/ "Virtual 8086 mode enhancements") }, { "de", NC_("x86-flag", /*!/flag:de*/ "Debugging Extensions (CR4.DE)") }, { "pse", NC_("x86-flag", /*!/flag:pse*/ "Page Size Extensions (4MB memory pages)") }, { "tsc", NC_("x86-flag", /*!/flag:tsc*/ "Time Stamp Counter (RDTSC)") }, { "msr", NC_("x86-flag", /*!/flag:msr*/ "Model-Specific Registers (RDMSR, WRMSR)") }, { "pae", NC_("x86-flag", /*!/flag:pae*/ "Physical Address Extensions (support for more than 4GB of RAM)") }, { "mce", NC_("x86-flag", /*!/flag:mce*/ "Machine Check Exception") }, { "cx8", NC_("x86-flag", /*!/flag:cx8*/ "CMPXCHG8 instruction (64-bit compare-and-swap)") }, { "apic", NC_("x86-flag", /*!/flag:apic*/ "Onboard APIC") }, { "sep", NC_("x86-flag", /*!/flag:sep*/ "SYSENTER/SYSEXIT") }, { "mtrr", NC_("x86-flag", /*!/flag:mtrr*/ "Memory Type Range Registers") }, { "pge", NC_("x86-flag", /*!/flag:pge*/ "Page Global Enable (global bit in PDEs and PTEs)") }, { "mca", NC_("x86-flag", /*!/flag:mca*/ "Machine Check Architecture") }, { "cmov", NC_("x86-flag", /*!/flag:cmov*/ "CMOV instructions (conditional move) (also FCMOV)") }, { "pat", NC_("x86-flag", /*!/flag:pat*/ "Page Attribute Table") }, { "pse36", NC_("x86-flag", /*!/flag:pse36*/ "36-bit PSEs (huge pages)") }, { "pn", NC_("x86-flag", /*!/flag:pn*/ "Processor serial number") }, { "clflush", NC_("x86-flag", /*!/flag:clflush*/ "Cache Line Flush instruction") }, { "dts", NC_("x86-flag", /*!/flag:dts*/ "Debug Store (buffer for debugging and profiling instructions), or alternately: digital thermal sensor") }, { "acpi", NC_("x86-flag", /*!/flag:acpi*/ "ACPI via MSR (temperature monitoring and clock speed modulation)") }, { "mmx", NC_("x86-flag", /*!/flag:mmx*/ "Multimedia Extensions") }, { "fxsr", NC_("x86-flag", /*!/flag:fxsr*/ "FXSAVE/FXRSTOR, CR4.OSFXSR") }, { "sse", NC_("x86-flag", /*!/flag:sse*/ "Intel SSE vector instructions") }, { "sse2", NC_("x86-flag", /*!/flag:sse2*/ "SSE2") }, { "ss", NC_("x86-flag", /*!/flag:ss*/ "CPU self snoop") }, { "ht", NC_("x86-flag", /*!/flag:ht*/ "Hyper-Threading") }, { "tm", NC_("x86-flag", /*!/flag:tm*/ "Automatic clock control (Thermal Monitor)") }, { "ia64", NC_("x86-flag", /*!/flag:ia64*/ "Intel Itanium Architecture 64-bit (not to be confused with Intel's 64-bit x86 architecture with flag x86-64 or \"AMD64\" bit indicated by flag lm)") }, { "pbe", NC_("x86-flag", /*!/flag:pbe*/ "Pending Break Enable (PBE# pin) wakeup support") }, /* AMD-defined CPU features, CPUID level 0x80000001 * See also Wikipedia and table 2-23 in Intel Advanced Vector Extensions Programming Reference */ { "syscall", NC_("x86-flag", /*!/flag:syscall*/ "SYSCALL (Fast System Call) and SYSRET (Return From Fast System Call)") }, { "mp", NC_("x86-flag", /*!/flag:mp*/ "Multiprocessing Capable.") }, { "nx", NC_("x86-flag", /*!/flag:nx*/ "Execute Disable") }, { "mmxext", NC_("x86-flag", /*!/flag:mmxext*/ "AMD MMX extensions") }, { "fxsr_opt", NC_("x86-flag", /*!/flag:fxsr_opt*/ "FXSAVE/FXRSTOR optimizations") }, { "pdpe1gb", NC_("x86-flag", /*!/flag:pdpe1gb*/ "One GB pages (allows hugepagesz=1G)") }, { "rdtscp", NC_("x86-flag", /*!/flag:rdtscp*/ "Read Time-Stamp Counter and Processor ID") }, { "lm", NC_("x86-flag", /*!/flag:lm*/ "Long Mode (x86-64: amd64, also known as Intel 64, i.e. 64-bit capable)") }, { "3dnow", NC_("x86-flag", /*!/flag:3dnow*/ "3DNow! (AMD vector instructions, competing with Intel's SSE1)") }, { "3dnowext", NC_("x86-flag", /*!/flag:3dnowext*/ "AMD 3DNow! extensions") }, /* Transmeta-defined CPU features, CPUID level 0x80860001 */ { "recovery", NC_("x86-flag", /*!/flag:recovery*/ "CPU in recovery mode") }, { "longrun", NC_("x86-flag", /*!/flag:longrun*/ "Longrun power control") }, { "lrti", NC_("x86-flag", /*!/flag:lrti*/ "LongRun table interface") }, /* Other features, Linux-defined mapping */ { "cxmmx", NC_("x86-flag", /*!/flag:cxmmx*/ "Cyrix MMX extensions") }, { "k6_mtrr", NC_("x86-flag", /*!/flag:k6_mtrr*/ "AMD K6 nonstandard MTRRs") }, { "cyrix_arr", NC_("x86-flag", /*!/flag:cyrix_arr*/ "Cyrix ARRs (= MTRRs)") }, { "centaur_mcr", NC_("x86-flag", /*!/flag:centaur_mcr*/ "Centaur MCRs (= MTRRs)") }, { "constant_tsc", NC_("x86-flag", /*!/flag:constant_tsc*/ "TSC ticks at a constant rate") }, { "up", NC_("x86-flag", /*!/flag:up*/ "SMP kernel running on UP") }, { "art", NC_("x86-flag", /*!/flag:art*/ "Always-Running Timer") }, { "arch_perfmon", NC_("x86-flag", /*!/flag:arch_perfmon*/ "Intel Architectural PerfMon") }, { "pebs", NC_("x86-flag", /*!/flag:pebs*/ "Precise-Event Based Sampling") }, { "bts", NC_("x86-flag", /*!/flag:bts*/ "Branch Trace Store") }, { "rep_good", NC_("x86-flag", /*!/flag:rep_good*/ "rep microcode works well") }, { "acc_power", NC_("x86-flag", /*!/flag:acc_power*/ "AMD accumulated power mechanism") }, { "nopl", NC_("x86-flag", /*!/flag:nopl*/ "The NOPL (0F 1F) instructions") }, { "xtopology", NC_("x86-flag", /*!/flag:xtopology*/ "cpu topology enum extensions") }, { "tsc_reliable", NC_("x86-flag", /*!/flag:tsc_reliable*/ "TSC is known to be reliable") }, { "nonstop_tsc", NC_("x86-flag", /*!/flag:nonstop_tsc*/ "TSC does not stop in C states") }, { "extd_apicid", NC_("x86-flag", /*!/flag:extd_apicid*/ "has extended APICID (8 bits)") }, { "amd_dcm", NC_("x86-flag", /*!/flag:amd_dcm*/ "multi-node processor") }, { "aperfmperf", NC_("x86-flag", /*!/flag:aperfmperf*/ "APERFMPERF") }, { "eagerfpu", NC_("x86-flag", /*!/flag:eagerfpu*/ "Non lazy FPU restore") }, { "nonstop_tsc_s3", NC_("x86-flag", /*!/flag:nonstop_tsc_s3*/ "TSC doesn't stop in S3 state") }, { "mce_recovery", NC_("x86-flag", /*!/flag:mce_recovery*/ "CPU has recoverable machine checks") }, /* Intel-defined CPU features, CPUID level 0x00000001 (ecx) * See also Wikipedia and table 2-26 in Intel Advanced Vector Extensions Programming Reference */ { "pni", NC_("x86-flag", /*!/flag:pni*/ "SSE-3 (\"Prescott New Instructions\")") }, { "pclmulqdq", NC_("x86-flag", /*!/flag:pclmulqdq*/ "Perform a Carry-Less Multiplication of Quadword instruction - accelerator for GCM)") }, { "dtes64", NC_("x86-flag", /*!/flag:dtes64*/ "64-bit Debug Store") }, { "monitor", NC_("x86-flag", /*!/flag:monitor*/ "Monitor/Mwait support (Intel SSE3 supplements)") }, { "ds_cpl", NC_("x86-flag", /*!/flag:ds_cpl*/ "CPL Qual. Debug Store") }, { "vmx", NC_("x86-flag", /*!/flag:vmx*/ "Hardware virtualization, Intel VMX") }, { "smx", NC_("x86-flag", /*!/flag:smx*/ "Safer mode TXT (TPM support)") }, { "est", NC_("x86-flag", /*!/flag:est*/ "Enhanced SpeedStep") }, { "tm2", NC_("x86-flag", /*!/flag:tm2*/ "Thermal Monitor 2") }, { "ssse3", NC_("x86-flag", /*!/flag:ssse3*/ "Supplemental SSE-3") }, { "cid", NC_("x86-flag", /*!/flag:cid*/ "Context ID") }, { "sdbg", NC_("x86-flag", /*!/flag:sdbg*/ "silicon debug") }, { "fma", NC_("x86-flag", /*!/flag:fma*/ "Fused multiply-add") }, { "cx16", NC_("x86-flag", /*!/flag:cx16*/ "CMPXCHG16B") }, { "xtpr", NC_("x86-flag", /*!/flag:xtpr*/ "Send Task Priority Messages") }, { "pdcm", NC_("x86-flag", /*!/flag:pdcm*/ "Performance Capabilities") }, { "pcid", NC_("x86-flag", /*!/flag:pcid*/ "Process Context Identifiers") }, { "dca", NC_("x86-flag", /*!/flag:dca*/ "Direct Cache Access") }, { "sse4_1", NC_("x86-flag", /*!/flag:sse4_1*/ "SSE-4.1") }, { "sse4_2", NC_("x86-flag", /*!/flag:sse4_2*/ "SSE-4.2") }, { "x2apic", NC_("x86-flag", /*!/flag:x2apic*/ "x2APIC") }, { "movbe", NC_("x86-flag", /*!/flag:movbe*/ "Move Data After Swapping Bytes instruction") }, { "popcnt", NC_("x86-flag", /*!/flag:popcnt*/ "Return the Count of Number of Bits Set to 1 instruction (Hamming weight, i.e. bit count)") }, { "tsc_deadline_timer", NC_("x86-flag", /*/flag:tsc_deadline_timer*/ "Tsc deadline timer") }, { "aes/aes-ni", NC_("x86-flag", /*!/flag:aes/aes-ni*/ "Advanced Encryption Standard (New Instructions)") }, { "xsave", NC_("x86-flag", /*!/flag:xsave*/ "Save Processor Extended States: also provides XGETBY,XRSTOR,XSETBY") }, { "avx", NC_("x86-flag", /*!/flag:avx*/ "Advanced Vector Extensions") }, { "f16c", NC_("x86-flag", /*!/flag:f16c*/ "16-bit fp conversions (CVT16)") }, { "rdrand", NC_("x86-flag", /*!/flag:rdrand*/ "Read Random Number from hardware random number generator instruction") }, { "hypervisor", NC_("x86-flag", /*!/flag:hypervisor*/ "Running on a hypervisor") }, /* VIA/Cyrix/Centaur-defined CPU features, CPUID level 0xC0000001 */ { "rng", NC_("x86-flag", /*!/flag:rng*/ "Random Number Generator present (xstore)") }, { "rng_en", NC_("x86-flag", /*!/flag:rng_en*/ "Random Number Generator enabled") }, { "ace", NC_("x86-flag", /*!/flag:ace*/ "on-CPU crypto (xcrypt)") }, { "ace_en", NC_("x86-flag", /*!/flag:ace_en*/ "on-CPU crypto enabled") }, { "ace2", NC_("x86-flag", /*!/flag:ace2*/ "Advanced Cryptography Engine v2") }, { "ace2_en", NC_("x86-flag", /*!/flag:ace2_en*/ "ACE v2 enabled") }, { "phe", NC_("x86-flag", /*!/flag:phe*/ "PadLock Hash Engine") }, { "phe_en", NC_("x86-flag", /*!/flag:phe_en*/ "PHE enabled") }, { "pmm", NC_("x86-flag", /*!/flag:pmm*/ "PadLock Montgomery Multiplier") }, { "pmm_en", NC_("x86-flag", /*!/flag:pmm_en*/ "PMM enabled") }, /* More extended AMD flags: CPUID level 0x80000001, ecx */ { "lahf_lm", NC_("x86-flag", /*!/flag:lahf_lm*/ "Load AH from Flags (LAHF) and Store AH into Flags (SAHF) in long mode") }, { "cmp_legacy", NC_("x86-flag", /*!/flag:cmp_legacy*/ "If yes HyperThreading not valid") }, { "svm", NC_("x86-flag", /*!/flag:svm*/ "\"Secure virtual machine\": AMD-V") }, { "extapic", NC_("x86-flag", /*!/flag:extapic*/ "Extended APIC space") }, { "cr8_legacy", NC_("x86-flag", /*!/flag:cr8_legacy*/ "CR8 in 32-bit mode") }, { "abm", NC_("x86-flag", /*!/flag:abm*/ "Advanced Bit Manipulation") }, { "sse4a", NC_("x86-flag", /*!/flag:sse4a*/ "SSE-4A") }, { "misalignsse", NC_("x86-flag", /*!/flag:misalignsse*/ "indicates if a general-protection exception (#GP) is generated when some legacy SSE instructions operate on unaligned data. Also depends on CR0 and Alignment Checking bit") }, { "3dnowprefetch", NC_("x86-flag", /*!/flag:3dnowprefetch*/ "3DNow prefetch instructions") }, { "osvw", NC_("x86-flag", /*!/flag:osvw*/ "indicates OS Visible Workaround, which allows the OS to work around processor errata.") }, { "ibs", NC_("x86-flag", /*!/flag:ibs*/ "Instruction Based Sampling") }, { "xop", NC_("x86-flag", /*!/flag:xop*/ "extended AVX instructions") }, { "skinit", NC_("x86-flag", /*!/flag:skinit*/ "SKINIT/STGI instructions") }, { "wdt", NC_("x86-flag", /*!/flag:wdt*/ "Watchdog timer") }, { "lwp", NC_("x86-flag", /*!/flag:lwp*/ "Light Weight Profiling") }, { "fma4", NC_("x86-flag", /*!/flag:fma4*/ "4 operands MAC instructions") }, { "tce", NC_("x86-flag", /*!/flag:tce*/ "translation cache extension") }, { "nodeid_msr", NC_("x86-flag", /*!/flag:nodeid_msr*/ "NodeId MSR") }, { "tbm", NC_("x86-flag", /*!/flag:tbm*/ "Trailing Bit Manipulation") }, { "topoext", NC_("x86-flag", /*!/flag:topoext*/ "Topology Extensions CPUID leafs") }, { "perfctr_core", NC_("x86-flag", /*!/flag:perfctr_core*/ "Core Performance Counter Extensions") }, { "perfctr_nb", NC_("x86-flag", /*!/flag:perfctr_nb*/ "NB Performance Counter Extensions") }, { "bpext", NC_("x86-flag", /*!/flag:bpext*/ "data breakpoint extension") }, { "ptsc", NC_("x86-flag", /*!/flag:ptsc*/ "performance time-stamp counter") }, { "perfctr_l2", NC_("x86-flag", /*!/flag:perfctr_l2*/ "L2 Performance Counter Extensions") }, { "mwaitx", NC_("x86-flag", /*!/flag:mwaitx*/ "MWAIT extension (MONITORX/MWAITX)") }, /* Auxiliary flags: Linux defined - For features scattered in various CPUID levels */ { "cpb", NC_("x86-flag", /*!/flag:cpb*/ "AMD Core Performance Boost") }, { "epb", NC_("x86-flag", /*!/flag:epb*/ "IA32_ENERGY_PERF_BIAS support") }, { "hw_pstate", NC_("x86-flag", /*!/flag:hw_pstate*/ "AMD HW-PState") }, { "proc_feedback", NC_("x86-flag", /*!/flag:proc_feedback*/ "AMD ProcFeedbackInterface") }, { "intel_pt", NC_("x86-flag", /*!/flag:intel_pt*/ "Intel Processor Tracing") }, /* Virtualization flags: Linux defined */ { "tpr_shadow", NC_("x86-flag", /*!/flag:tpr_shadow*/ "Intel TPR Shadow") }, { "vnmi", NC_("x86-flag", /*!/flag:vnmi*/ "Intel Virtual NMI") }, { "flexpriority", NC_("x86-flag", /*!/flag:flexpriority*/ "Intel FlexPriority") }, { "ept", NC_("x86-flag", /*!/flag:ept*/ "Intel Extended Page Table") }, { "vpid", NC_("x86-flag", /*!/flag:vpid*/ "Intel Virtual Processor ID") }, { "vmmcall", NC_("x86-flag", /*!/flag:vmmcall*/ "prefer VMMCALL to VMCALL") }, /* Intel-defined CPU features, CPUID level 0x00000007:0 (ebx) */ { "fsgsbase", NC_("x86-flag", /*!/flag:fsgsbase*/ "{RD/WR}{FS/GS}BASE instructions") }, { "tsc_adjust", NC_("x86-flag", /*!/flag:tsc_adjust*/ "TSC adjustment MSR") }, { "bmi1", NC_("x86-flag", /*!/flag:bmi1*/ "1st group bit manipulation extensions") }, { "hle", NC_("x86-flag", /*!/flag:hle*/ "Hardware Lock Elision") }, { "avx2", NC_("x86-flag", /*!/flag:avx2*/ "AVX2 instructions") }, { "smep", NC_("x86-flag", /*!/flag:smep*/ "Supervisor Mode Execution Protection") }, { "bmi2", NC_("x86-flag", /*!/flag:bmi2*/ "2nd group bit manipulation extensions") }, { "erms", NC_("x86-flag", /*!/flag:erms*/ "Enhanced REP MOVSB/STOSB") }, { "invpcid", NC_("x86-flag", /*!/flag:invpcid*/ "Invalidate Processor Context ID") }, { "rtm", NC_("x86-flag", /*!/flag:rtm*/ "Restricted Transactional Memory") }, { "cqm", NC_("x86-flag", /*!/flag:cqm*/ "Cache QoS Monitoring") }, { "mpx", NC_("x86-flag", /*!/flag:mpx*/ "Memory Protection Extension") }, { "avx512f", NC_("x86-flag", /*!/flag:avx512f*/ "AVX-512 foundation") }, { "avx512dq", NC_("x86-flag", /*!/flag:avx512dq*/ "AVX-512 Double/Quad instructions") }, { "rdseed", NC_("x86-flag", /*!/flag:rdseed*/ "The RDSEED instruction") }, { "adx", NC_("x86-flag", /*!/flag:adx*/ "The ADCX and ADOX instructions") }, { "smap", NC_("x86-flag", /*!/flag:smap*/ "Supervisor Mode Access Prevention") }, { "clflushopt", NC_("x86-flag", /*!/flag:clflushopt*/ "CLFLUSHOPT instruction") }, { "clwb", NC_("x86-flag", /*!/flag:clwb*/ "CLWB instruction") }, { "avx512pf", NC_("x86-flag", /*!/flag:avx512pf*/ "AVX-512 Prefetch") }, { "avx512er", NC_("x86-flag", /*!/flag:avx512er*/ "AVX-512 Exponential and Reciprocal") }, { "avx512cd", NC_("x86-flag", /*!/flag:avx512cd*/ "AVX-512 Conflict Detection") }, { "sha_ni", NC_("x86-flag", /*!/flag:sha_ni*/ "SHA1/SHA256 Instruction Extensions") }, { "avx512bw", NC_("x86-flag", /*!/flag:avx512bw*/ "AVX-512 Byte/Word instructions") }, { "avx512vl", NC_("x86-flag", /*!/flag:avx512vl*/ "AVX-512 128/256 Vector Length extensions") }, /* Extended state features, CPUID level 0x0000000d:1 (eax) */ { "xsaveopt", NC_("x86-flag", /*!/flag:xsaveopt*/ "Optimized XSAVE") }, { "xsavec", NC_("x86-flag", /*!/flag:xsavec*/ "XSAVEC") }, { "xgetbv1", NC_("x86-flag", /*!/flag:xgetbv1*/ "XGETBV with ECX = 1") }, { "xsaves", NC_("x86-flag", /*!/flag:xsaves*/ "XSAVES/XRSTORS") }, /* Intel-defined CPU QoS sub-leaf, CPUID level 0x0000000F:0 (edx) */ { "cqm_llc", NC_("x86-flag", /*!/flag:cqm_llc*/ "LLC QoS") }, /* Intel-defined CPU QoS sub-leaf, CPUID level 0x0000000F:1 (edx) */ { "cqm_occup_llc", NC_("x86-flag", /*!/flag:cqm_occup_llc*/ "LLC occupancy monitoring") }, { "cqm_mbm_total", NC_("x86-flag", /*!/flag:cqm_mbm_total*/ "LLC total MBM monitoring") }, { "cqm_mbm_local", NC_("x86-flag", /*!/flag:cqm_mbm_local*/ "LLC local MBM monitoring") }, /* AMD-defined CPU features, CPUID level 0x80000008 (ebx) */ { "clzero", NC_("x86-flag", /*!/flag:clzero*/ "CLZERO instruction") }, { "irperf", NC_("x86-flag", /*!/flag:irperf*/ "instructions retired performance counter") }, /* Thermal and Power Management leaf, CPUID level 0x00000006 (eax) */ { "dtherm", NC_("x86-flag", /*!/flag:dtherm*/ "digital thermal sensor") }, /* formerly dts */ { "ida", NC_("x86-flag", /*!/flag:ida*/ "Intel Dynamic Acceleration") }, { "arat", NC_("x86-flag", /*!/flag:arat*/ "Always Running APIC Timer") }, { "pln", NC_("x86-flag", /*!/flag:pln*/ "Intel Power Limit Notification") }, { "pts", NC_("x86-flag", /*!/flag:pts*/ "Intel Package Thermal Status") }, { "hwp", NC_("x86-flag", /*!/flag:hwp*/ "Intel Hardware P-states") }, { "hwp_notify", NC_("x86-flag", /*!/flag:hwp_notify*/ "HWP notification") }, { "hwp_act_window", NC_("x86-flag", /*!/flag:hwp_act_window*/ "HWP Activity Window") }, { "hwp_epp", NC_("x86-flag", /*!/flag:hwp_epp*/ "HWP Energy Performance Preference") }, { "hwp_pkg_req", NC_("x86-flag", /*!/flag:hwp_pkg_req*/ "HWP package-level request") }, /* AMD SVM Feature Identification, CPUID level 0x8000000a (edx) */ { "npt", NC_("x86-flag", /*!/flag:npt*/ "AMD Nested Page Table support") }, { "lbrv", NC_("x86-flag", /*!/flag:lbrv*/ "AMD LBR Virtualization support") }, { "svm_lock", NC_("x86-flag", /*!/flag:svm_lock*/ "AMD SVM locking MSR") }, { "nrip_save", NC_("x86-flag", /*!/flag:nrip_save*/ "AMD SVM next_rip save") }, { "tsc_scale", NC_("x86-flag", /*!/flag:tsc_scale*/ "AMD TSC scaling support") }, { "vmcb_clean", NC_("x86-flag", /*!/flag:vmcb_clean*/ "AMD VMCB clean bits support") }, { "flushbyasid", NC_("x86-flag", /*!/flag:flushbyasid*/ "AMD flush-by-ASID support") }, { "decodeassists", NC_("x86-flag", /*!/flag:decodeassists*/ "AMD Decode Assists support") }, { "pausefilter", NC_("x86-flag", /*!/flag:pausefilter*/ "AMD filtered pause intercept") }, { "pfthreshold", NC_("x86-flag", /*!/flag:pfthreshold*/ "AMD pause filter threshold") }, { "avic", NC_("x86-flag", /*!/flag:avic*/ "Virtual Interrupt Controller") }, /* Intel-defined CPU features, CPUID level 0x00000007:0 (ecx) */ { "pku", NC_("x86-flag", /*!/flag:pku*/ "Protection Keys for Userspace") }, { "ospke", NC_("x86-flag", /*!/flag:ospke*/ "OS Protection Keys Enable") }, /* AMD-defined CPU features, CPUID level 0x80000007 (ebx) */ { "overflow_recov", NC_("x86-flag", /*!/flag:overflow_recov*/ "MCA overflow recovery support") }, { "succor", NC_("x86-flag", /*!/flag:succor*/ "uncorrectable error containment and recovery") }, { "smca", NC_("x86-flag", /*!/flag:smca*/ "Scalable MCA") }, /* bug workarounds */ { "bug:f00f", NC_("x86-flag", /*!/bug:f00f*/ "Intel F00F bug") }, { "bug:fdiv", NC_("x86-flag", /*!/bug:fdiv*/ "FPU FDIV") }, { "bug:coma", NC_("x86-flag", /*!/bug:coma*/ "Cyrix 6x86 coma") }, { "bug:tlb_mmatch", NC_("x86-flag", /*!/bug:tlb_mmatch*/ "AMD Erratum 383") }, { "bug:apic_c1e", NC_("x86-flag", /*!/bug:apic_c1e*/ "AMD Erratum 400") }, { "bug:11ap", NC_("x86-flag", /*!/bug:11ap*/ "Bad local APIC aka 11AP") }, { "bug:fxsave_leak", NC_("x86-flag", /*!/bug:fxsave_leak*/ "FXSAVE leaks FOP/FIP/FOP") }, { "bug:clflush_monitor", NC_("x86-flag", /*!/bug:clflush_monitor*/ "AAI65, CLFLUSH required before MONITOR") }, { "bug:sysret_ss_attrs", NC_("x86-flag", /*!/bug:sysret_ss_attrs*/ "SYSRET doesn't fix up SS attrs") }, { "bug:espfix", NC_("x86-flag", /*!/bug:espfix*/ "IRET to 16-bit SS corrupts ESP/RSP high bits") }, { "bug:null_seg", NC_("x86-flag", /*!/bug:null_seg*/ "Nulling a selector preserves the base") }, /* see: detect_null_seg_behavior() */ { "bug:swapgs_fence", NC_("x86-flag", /*!/bug:swapgs_fence*/ "SWAPGS without input dep on GS") }, { "bug:monitor", NC_("x86-flag", /*!/bug:monitor*/ "IPI required to wake up remote CPU") }, { "bug:amd_e400", NC_("x86-flag", /*!/bug:amd_e400*/ "AMD Erratum 400") }, { "bug:cpu_insecure", NC_("x86-flag", /*!/bug:cpu_insecure & bug:cpu_meltdown*/ "CPU is affected by meltdown attack and needs kernel page table isolation") }, { "bug:cpu_meltdown", NC_("x86-flag", /*!/bug:cpu_insecure & bug:cpu_meltdown*/ "CPU is affected by meltdown attack and needs kernel page table isolation") }, { "bug:spectre_v1", NC_("x86-flag", /*!/bug:spectre_v1*/ "CPU is affected by Spectre variant 1 attack with conditional branches") }, { "bug:spectre_v2", NC_("x86-flag", /*!/bug:spectre_v2*/ "CPU is affected by Spectre variant 2 attack with indirect branches") }, { "bug:spec_store_bypass", NC_("x86-flag", /*!/bug:spec_store_bypass*/ "CPU is affected by speculative store bypass attack") }, { "bug:l1tf", NC_("x86-flag", /*!/bug:l1tf*/ "CPU is affected by L1 Terminal Fault") }, /* power management * ... from arch/x86/kernel/cpu/powerflags.h */ { "pm:ts", NC_("x86-flag", /*!/flag:pm:ts*/ "temperature sensor") }, { "pm:fid", NC_("x86-flag", /*!/flag:pm:fid*/ "frequency id control") }, { "pm:vid", NC_("x86-flag", /*!/flag:pm:vid*/ "voltage id control") }, { "pm:ttp", NC_("x86-flag", /*!/flag:pm:ttp*/ "thermal trip") }, { "pm:tm", NC_("x86-flag", /*!/flag:pm:tm*/ "hardware thermal control") }, { "pm:stc", NC_("x86-flag", /*!/flag:pm:stc*/ "software thermal control") }, { "pm:100mhzsteps", NC_("x86-flag", /*!/flag:pm:100mhzsteps*/ "100 MHz multiplier control") }, { "pm:hwpstate", NC_("x86-flag", /*!/flag:pm:hwpstate*/ "hardware P-state control") }, { "pm:cpb", NC_("x86-flag", /*!/flag:pm:cpb*/ "core performance boost") }, { "pm:eff_freq_ro", NC_("x86-flag", /*!/flag:pm:eff_freq_ro*/ "Readonly aperf/mperf") }, { "pm:proc_feedback", NC_("x86-flag", /*!/flag:pm:proc_feedback*/ "processor feedback interface") }, { "pm:acc_power", NC_("x86-flag", /*!/flag:pm:acc_power*/ "accumulated power mechanism") }, { NULL, NULL}, }; static struct flag_to_meaning *tab_flag_meaning; //static char all_flags[4096] = ""; #if JSON_CHECK_VERSION(0,20,0) static void build_meaning_table_iter(JsonObject *object, const gchar *member_name, JsonNode *member_node, gpointer user_data) { int *i = user_data; tab_flag_meaning[*i] = (struct flag_to_meaning) { .name = g_strdup(member_name), .meaning = g_strdup(json_node_get_string(member_node)), }; (*i)++; } #endif void cpuflags_x86_init(void) { gchar *flag_json = g_build_filename(g_get_user_config_dir(), "hardinfo2", "cpuflags.json", NULL); gboolean use_builtin_table = TRUE; #if JSON_CHECK_VERSION(0,20,0) if (!g_file_test(flag_json, G_FILE_TEST_EXISTS)) goto use_builtin_table; JsonParser *parser = json_parser_new(); if (!json_parser_load_from_file(parser, flag_json, NULL)) goto use_builtin_table_with_json; JsonNode *root = json_parser_get_root(parser); if (json_node_get_node_type(root) != JSON_NODE_OBJECT) goto use_builtin_table_with_json; JsonObject *x86_flags = json_object_get_object_member(json_node_get_object(root), "x86"); if (!x86_flags) goto use_builtin_table_with_json; tab_flag_meaning = g_new(struct flag_to_meaning, json_object_get_size(x86_flags) + 1); int i = 0; json_object_foreach_member(x86_flags, build_meaning_table_iter, &i); tab_flag_meaning[i] = (struct flag_to_meaning){NULL, NULL}; use_builtin_table = FALSE; use_builtin_table_with_json: g_object_unref(parser); use_builtin_table: #endif g_free(flag_json); if (use_builtin_table) tab_flag_meaning = (struct flag_to_meaning *)builtin_tab_flag_meaning; } const char *x86_flag_meaning(const char *flag) { int i; if (!flag) return NULL; for (i = 0; tab_flag_meaning[i].name; i++) { if (strcmp(tab_flag_meaning[i].name, flag) == 0) { if (tab_flag_meaning[i].meaning != NULL) return C_("x86-flag", tab_flag_meaning[i].meaning); else return NULL; } } return NULL; } hardinfo2-hardinfo2-1331e88/modules/devices/x86/x86_data.h000066400000000000000000000020431474767047500230500ustar00rootroot00000000000000/* * rpiz - https://github.com/bp0/rpiz * Copyright (C) 2017 Burt P. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef _X86DATA_H_ #define _X86DATA_H_ /* cpu flags from /proc/cpuinfo */ const char *x86_flag_list(void); /* list of all known flags */ const char *x86_flag_meaning(const char *flag); /* lookup flag meaning */ #endif hardinfo2-hardinfo2-1331e88/modules/network.c000066400000000000000000000314221474767047500210520ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2008 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "network.h" /* Callbacks */ gchar *callback_network(); gchar *callback_route(); gchar *callback_dns(); gchar *callback_connections(); gchar *callback_shares(); gchar *callback_arp(); gchar *callback_statistics(); /* Scan callbacks */ void scan_network(gboolean reload); void scan_route(gboolean reload); void scan_dns(gboolean reload); void scan_connections(gboolean reload); void scan_shares(gboolean reload); void scan_arp(gboolean reload); void scan_statistics(gboolean reload); static ModuleEntry entries[] = { {N_("Interfaces"), "network-interface.svg", callback_network, scan_network, MODULE_FLAG_NONE}, {N_("IP Connections"), "network-connections.svg", callback_connections, scan_connections, MODULE_FLAG_NONE}, {N_("Routing Table"), "route.svg", callback_route, scan_route, MODULE_FLAG_NONE}, {N_("ARP Table"), "network-arp.svg", callback_arp, scan_arp, MODULE_FLAG_NONE}, {N_("DNS Servers"), "internet.svg", callback_dns, scan_dns, MODULE_FLAG_NONE}, {N_("Statistics"), "network-statistics.svg", callback_statistics, scan_statistics, MODULE_FLAG_NONE}, {N_("Shared Directories"), "shares.svg", callback_shares, scan_shares, MODULE_FLAG_NONE}, {NULL}, }; void scan_shares(gboolean reload) { SCAN_START(); scan_samba(); scan_nfs_shared_directories(); SCAN_END(); } static gchar *__statistics = NULL; void scan_statistics(gboolean reload) { FILE *netstat; gchar buffer[256]; gchar *netstat_path; int line = 0; SCAN_START(); g_free(__statistics); __statistics = g_strdup(""); if ((netstat_path = find_program("netstat"))) { gchar *command_line = g_strdup_printf("%s -s", netstat_path); if ((netstat = popen(command_line, "r"))) { while (fgets(buffer, 256, netstat)) { if (!isspace(buffer[0]) && strchr(buffer, ':')) { gchar *tmp; tmp = g_ascii_strup(strend(buffer, ':'), -1); __statistics = h_strdup_cprintf("[%s]\n", __statistics, tmp); g_free(tmp); } else { gchar *tmp = buffer; while (*tmp && isspace(*tmp)) tmp++; /* the bolded-space/dot used here is a hardinfo shell hack */ if (params.markup_ok) __statistics = h_strdup_cprintf(" #%d=%s\n", __statistics, line++, tmp); else __statistics = h_strdup_cprintf(">#%d=%s\n", __statistics, line++, tmp); } } pclose(netstat); } g_free(command_line); g_free(netstat_path); } SCAN_END(); } static gchar *__nameservers = NULL; void scan_dns(gboolean reload) { FILE *resolv; gchar buffer[256]; SCAN_START(); g_free(__nameservers); __nameservers = g_strdup(""); if ((resolv = fopen("/etc/resolv.conf", "r"))) { while (fgets(buffer, 256, resolv)) { if (g_str_has_prefix(buffer, "nameserver")) { gchar *ip; struct sockaddr_in sa; char hbuf[NI_MAXHOST]; ip = g_strstrip(buffer + sizeof("nameserver")); sa.sin_family = AF_INET; inet_pton(AF_INET,ip,&sa.sin_addr.s_addr); if (getnameinfo((struct sockaddr *)&sa, sizeof(sa), hbuf, sizeof(hbuf), NULL, 0, NI_NAMEREQD)) { __nameservers = h_strdup_cprintf("%s=\n", __nameservers, ip); } else { __nameservers = h_strdup_cprintf("%s=%s\n", __nameservers, ip, hbuf); } shell_status_pulse(); } } fclose(resolv); } SCAN_END(); } void scan_network(gboolean reload) { SCAN_START(); scan_net_interfaces(); SCAN_END(); } static gchar *__routing_table = NULL; void scan_route(gboolean reload) { FILE *route; gchar buffer[256]; gchar *route_path; SCAN_START(); g_free(__routing_table); __routing_table = g_strdup(""); if ((route_path = find_program("route"))) { gchar *command_line = g_strdup_printf("%s -n", route_path); if ((route = popen(command_line, "r"))) { /* eat first two lines */ char *c=fgets(buffer, 256, route); char *cc=NULL; if(c) {cc=fgets(buffer, 256, route);} if(cc) while (fgets(buffer, 256, route)) { buffer[15] = '\0'; buffer[31] = '\0'; buffer[47] = '\0'; buffer[53] = '\0'; __routing_table = h_strdup_cprintf("%s / %s=%s|%s|%s\n", __routing_table, g_strstrip(buffer), g_strstrip(buffer + 16), g_strstrip(buffer + 72), g_strstrip(buffer + 48), g_strstrip(buffer + 32)); } pclose(route); } g_free(command_line); g_free(route_path); } SCAN_END(); } static gchar *__arp_table = NULL; void scan_arp(gboolean reload) { FILE *arp; gchar buffer[256]; SCAN_START(); g_free(__arp_table); __arp_table = g_strdup(""); if ((arp = fopen("/proc/net/arp", "r"))) { /* eat first line */ char *c=fgets(buffer, 256, arp); if(c) while (fgets(buffer, 256, arp)) { buffer[15] = '\0'; buffer[58] = '\0'; __arp_table = h_strdup_cprintf("%s=%s|%s\n", __arp_table, g_strstrip(buffer), g_strstrip(buffer + 72), g_strstrip(buffer + 41)); } fclose(arp); } SCAN_END(); } static gchar *__connections = NULL; void scan_connections(gboolean reload) { FILE *netstat; gchar buffer[256]; gchar *netstat_path; SCAN_START(); g_free(__connections); __connections = g_strdup(""); if ((netstat_path = find_program("netstat"))) { gchar *command_line = g_strdup_printf("%s -an", netstat_path); if ((netstat = popen("netstat -an", "r"))) { while (fgets(buffer, 256, netstat)) { buffer[6] = '\0'; buffer[43] = '\0'; buffer[67] = '\0'; if (g_str_has_prefix(buffer, "tcp") || g_str_has_prefix(buffer, "udp")) { __connections = h_strdup_cprintf("%s=%s|%s|%s\n", __connections, g_strstrip(buffer + 20), /* local address */ g_strstrip(buffer), /* protocol */ g_strstrip(buffer + 44), /* foreign address */ g_strstrip(buffer + 68)); /* state */ } } pclose(netstat); } g_free(command_line); g_free(netstat_path); } SCAN_END(); } gchar *callback_arp() { return g_strdup_printf("[%s]\n" "%s\n" "[$ShellParam$]\n" "ReloadInterval=3000\n" "ColumnTitle$TextValue=%s\n" /* IP Address */ "ColumnTitle$Value=%s\n" /* Interface */ "ColumnTitle$Extra1=%s\n" /* MAC Address */ "ShowColumnHeaders=true\n", _("ARP Table"), __arp_table, _("IP Address"), _("Interface"), _("MAC Address") ); } gchar *callback_shares() { return g_strdup_printf("[%s]\n" "%s\n" "[%s]\n" "%s", _("SAMBA"), smb_shares_list, _("NFS"), nfs_shares_list); } gchar *callback_dns() { return g_strdup_printf("[%s]\n" "%s\n" "[$ShellParam$]\n" "ColumnTitle$TextValue=%s\n" /* IP Address */ "ColumnTitle$Value=%s\n" /* Name */ "ShowColumnHeaders=true\n", _("Name Servers"), __nameservers, _("IP Address"), _("Name") ); } gchar *callback_connections() { return g_strdup_printf("[%s]\n" "%s\n" "[$ShellParam$]\n" "ReloadInterval=3000\n" "ColumnTitle$TextValue=%s\n" /* Local Address */ "ColumnTitle$Value=%s\n" /* Protocol */ "ColumnTitle$Extra1=%s\n" /* Foreign Address */ "ColumnTitle$Extra2=%s\n" /* State */ "ShowColumnHeaders=true\n", _("Connections"), __connections, _("Local Address"), _("Protocol"), _("Foreign Address"), _("State") ); } gchar *callback_network() { return g_strdup_printf("%s\n" "[$ShellParam$]\n" "ReloadInterval=3000\n" "ViewType=1\n" "ColumnTitle$TextValue=%s\n" /* Interface */ "ColumnTitle$Value=%s\n" /* IP Address */ "ColumnTitle$Extra1=%s\n" /* Sent */ "ColumnTitle$Extra2=%s\n" /* Received */ "ShowColumnHeaders=true\n" "%s", network_interfaces, _("Interface"), _("IP Address"), _("Sent"), _("Received"), network_icons); } gchar *callback_route() { return g_strdup_printf("[%s]\n" "%s\n" "[$ShellParam$]\n" "ViewType=0\n" "ReloadInterval=3000\n" "ColumnTitle$TextValue=%s\n" /* Destination / Gateway */ "ColumnTitle$Value=%s\n" /* Interface */ "ColumnTitle$Extra1=%s\n" /* Flags */ "ColumnTitle$Extra2=%s\n" /* Mask */ "ShowColumnHeaders=true\n", _("IP routing table"), __routing_table, _("Destination/Gateway"), _("Interface"), _("Flags"), _("Mask") ); } gchar *callback_statistics() { return g_strdup_printf("%s\n" "[$ShellParam$]\n" "ReloadInterval=3000\n", __statistics); } gchar *hi_more_info(gchar * entry) { gchar *info = moreinfo_lookup_with_prefix("NET", entry); if (info) return g_strdup(info); return g_strdup_printf("[%s]", entry); } ModuleEntry *hi_module_get_entries(void) { return entries; } gchar *hi_module_get_name(void) { return g_strdup(_("Network")); } guchar hi_module_get_weight(void) { return 160; } void hi_module_init(void) { } void hi_module_deinit(void) { moreinfo_del_with_prefix("NET"); g_free(smb_shares_list); g_free(nfs_shares_list); g_free(network_interfaces); g_free(network_icons); g_free(__statistics); g_free(__nameservers); g_free(__arp_table); g_free(__routing_table); g_free(__connections); } const ModuleAbout *hi_module_get_about(void) { static const ModuleAbout ma = { .author = "L. A. F. Pereira", .description = N_("Gathers information about this computer's network connection"), .version = VERSION, .license = "GNU GPL version 2 or later.", }; return &ma; } hardinfo2-hardinfo2-1331e88/modules/network/000077500000000000000000000000001474767047500207045ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/modules/network/net.c000066400000000000000000000376561474767047500216570ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2008 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ /* * Wireless Extension Example * http://www.krugle.org/examples/p-OZYzuisV6gyQIaTu/iwconfig.c */ #include "config.h" #include #include #include #include #include #include #include #include #include #ifdef HAS_LINUX_WE #include #include #else #include #endif /* HAS_LINUX_WE */ #include "hardinfo.h" #include "network.h" gchar *network_interfaces = NULL, *network_icons = NULL; typedef struct _NetInfo NetInfo; struct _NetInfo { char name[16]; int mtu; char speed[30]; int carrier; unsigned char mac[8]; char ip[16]; char mask[16]; char broadcast[16]; #ifdef HAS_LINUX_WE char wi_essid[IW_ESSID_MAX_SIZE + 1]; int wi_rate; int wi_mode, wi_status; gboolean wi_has_txpower; struct iw_param wi_txpower; int wi_quality_level, wi_signal_level, wi_noise_level; gboolean is_wireless; #endif }; #ifdef HAS_LINUX_WE const gchar *wi_operation_modes[] = { NC_("wi-op-mode", "Auto"), NC_("wi-op-mode", "Ad-Hoc"), NC_("wi-op-mode", "Managed"), NC_("wi-op-mode", "Master"), NC_("wi-op-mode", "Repeater"), NC_("wi-op-mode", "Secondary"), NC_("wi-op-mode", "(Unknown)") }; void get_wireless_info(int fd, NetInfo *netinfo) { FILE *wrls; char wbuf[256]; struct iwreq wi_req; int trash; netinfo->is_wireless = FALSE; if ((wrls = fopen("/proc/net/wireless", "r"))) { while (fgets(wbuf, 256, wrls)) { if (strchr(wbuf, ':') && strstr(wbuf, netinfo->name)) { gchar *buf1 = wbuf; netinfo->is_wireless = TRUE; buf1 = strchr(buf1, ':') + 1; if (strchr(buf1, '.')) { sscanf(buf1, "%d %d. %d. %d %d %d %d %d %d %d", &(netinfo->wi_status), &(netinfo->wi_quality_level), &(netinfo->wi_signal_level), &(netinfo->wi_noise_level), &trash, &trash, &trash, &trash, &trash, &trash); } else { sscanf(buf1, "%d %d %d %d %d %d %d %d %d %d", &(netinfo->wi_status), &(netinfo->wi_quality_level), &(netinfo->wi_signal_level), &(netinfo->wi_noise_level), &trash, &trash, &trash, &trash, &trash, &trash); } break; } } fclose(wrls); } if (!netinfo->is_wireless) return; strncpy(wi_req.ifr_name, netinfo->name, 16); /* obtain essid */ wi_req.u.essid.pointer = netinfo->wi_essid; wi_req.u.essid.length = IW_ESSID_MAX_SIZE + 1; wi_req.u.essid.flags = 0; if (ioctl(fd, SIOCGIWESSID, &wi_req) < 0) { strcpy(netinfo->wi_essid, ""); } else { netinfo->wi_essid[wi_req.u.essid.length] = '\0'; } /* obtain bit rate */ if (ioctl(fd, SIOCGIWRATE, &wi_req) < 0) { netinfo->wi_rate = 0; } else { netinfo->wi_rate = wi_req.u.bitrate.value; } /* obtain operation mode */ if (ioctl(fd, SIOCGIWMODE, &wi_req) < 0) { netinfo->wi_mode = 0; } else { if (wi_req.u.mode < 6) { netinfo->wi_mode = wi_req.u.mode; } else { netinfo->wi_mode = 6; } } #if WIRELESS_EXT >= 10 /* obtain txpower */ if (ioctl(fd, SIOCGIWTXPOW, &wi_req) < 0) { netinfo->wi_has_txpower = FALSE; } else { netinfo->wi_has_txpower = TRUE; memcpy(&netinfo->wi_txpower, &wi_req.u.txpower, sizeof(struct iw_param)); } #else netinfo->wi_has_txpower = FALSE; #endif /* WIRELESS_EXT >= 10 */ } #endif /* HAS_LINUX_WE */ void get_net_info(char *if_name, NetInfo * netinfo) { struct ifreq ifr; int fd,s; gchar buf[256]; FILE *sysfs; fd = socket(PF_INET, SOCK_DGRAM, IPPROTO_IP); /* IPv4 */ ifr.ifr_addr.sa_family = AF_INET; memcpy(netinfo->name, if_name, sizeof(netinfo->name)); /* MTU */ strcpy(ifr.ifr_name, if_name); if (ioctl(fd, SIOCGIFMTU, &ifr) < 0) { netinfo->mtu = 0; } else { netinfo->mtu = ifr.ifr_mtu; } /* Carrier */ netinfo->speed[0]=0; sprintf(buf,"/sys/class/net/%s/carrier",if_name); sysfs = fopen(buf, "r"); netinfo->carrier=0; if (sysfs && (fgets(buf, sizeof(buf), sysfs)!=NULL)) sscanf(buf,"%d",&netinfo->carrier); fclose(sysfs); /* Speed */ netinfo->speed[0]=0; sprintf(buf,"/sys/class/net/%s/speed",if_name); sysfs = fopen(buf, "r"); s=0; if (sysfs && (fgets(buf, sizeof(buf), sysfs)!=NULL)) sscanf(buf,"%d",&s); if(netinfo->carrier!=1) sprintf(netinfo->speed,"Not Connected"); else if(s<=0) sprintf(netinfo->speed,"Not Specified"); else if(s<1000) sprintf(netinfo->speed,"%d Mbit",s); else sprintf(netinfo->speed,"%g Gbit",(float)s/1000); fclose(sysfs); /* HW Address */ strcpy(ifr.ifr_name, if_name); if (ioctl(fd, SIOCGIFHWADDR, &ifr) < 0) { memset(netinfo->mac, 0, 8); } else { memcpy(netinfo->mac, ifr.ifr_ifru.ifru_hwaddr.sa_data, 8); } /* IP Address */ strcpy(ifr.ifr_name, if_name); if (ioctl(fd, SIOCGIFADDR, &ifr) < 0) { netinfo->ip[0] = 0; } else { char ipstr[INET_ADDRSTRLEN]; inet_ntop(AF_INET, &((struct sockaddr_in *) &ifr.ifr_addr)->sin_addr, ipstr, INET_ADDRSTRLEN); snprintf(netinfo->ip, sizeof(netinfo->ip), "%s",ipstr); } /* Mask Address */ strcpy(ifr.ifr_name, if_name); if (ioctl(fd, SIOCGIFNETMASK, &ifr) < 0) { netinfo->mask[0] = 0; } else { char ipstr[INET_ADDRSTRLEN]; inet_ntop(AF_INET, &((struct sockaddr_in *) &ifr.ifr_addr)->sin_addr, ipstr, INET_ADDRSTRLEN); snprintf(netinfo->mask, sizeof(netinfo->mask), "%s",ipstr); } /* Broadcast Address */ strcpy(ifr.ifr_name, if_name); if (ioctl(fd, SIOCGIFBRDADDR, &ifr) < 0) { netinfo->broadcast[0] = 0; } else { char ipstr[INET_ADDRSTRLEN]; inet_ntop(AF_INET, &((struct sockaddr_in *) &ifr.ifr_addr)->sin_addr, ipstr, INET_ADDRSTRLEN); snprintf(netinfo->broadcast, sizeof(netinfo->broadcast), "%s",ipstr); } #ifdef HAS_LINUX_WE get_wireless_info(fd, netinfo); #endif shutdown(fd, 0); close(fd); } static struct { char *type; char *label; char *icon; } netdev2type[] = { /* Classic */ { "eth", NC_("net-if-type", "Ethernet"), "network-interface" }, { "lo", NC_("net-if-type", "Loopback"), "network" }, { "ppp", NC_("net-if-type", "Point-to-Point"), "modem" }, { "ath", NC_("net-if-type", "Wireless"), "wireless" }, { "wlan", NC_("net-if-type", "Wireless"), "wireless" }, { "ra", NC_("net-if-type", "Wireless"), "wireless" }, { "wmaster", NC_("net-if-type", "Wireless"), "wireless" }, { "tun", NC_("net-if-type", "Virtual Point-to-Point (TUN)"), "network" }, { "tap", NC_("net-if-type", "Ethernet (TAP)"), "network" }, { "plip", NC_("net-if-type", "Parallel Line Internet Protocol"), "network" }, { "irlan", NC_("net-if-type", "Infrared"), "network" }, { "slip", NC_("net-if-type", "Serial Line Internet Protocol"), "network" }, { "isdn", NC_("net-if-type", "Integrated Services Digital Network"), "modem" }, { "sit", NC_("net-if-type", "IPv6-over-IPv4 Tunnel"), "network" }, { "vmnet8", NC_("net-if-type", "VMWare Virtual Network Interface (NAT)"), "computer" }, { "vmnet", NC_("net-if-type", "VMWare Virtual Network Interface"), "computer" }, { "pan", NC_("net-if-type", "Personal Area Network (PAN)"), "bluetooth" }, { "bnep", NC_("net-if-type", "Bluetooth"), "bluetooth" }, { "br", NC_("net-if-type", "Bridge Interface"), "network" }, { "ham", NC_("net-if-type", "Hamachi Virtual Personal Network"), "network"}, { "net", NC_("net-if-type", "Ethernet"), "network-interface" }, { "ifb", NC_("net-if-type", "Intermediate Functional Block"), "network" }, { "gre", NC_("net-if-type", "GRE Network Tunnel"), "network" }, { "msh", NC_("net-if-type", "Mesh Network"), "wireless" }, { "wmaster", NC_("net-if-type", "Wireless Master Interface"), "wireless" }, { "vboxnet", NC_("net-if-type", "VirtualBox Virtual Network Interface"), "network" }, /* Predictable network interface device names (systemd) */ { "en", NC_("net-if-type", "Ethernet"), "network-interface" }, { "sl", NC_("net-if-type", "Serial Line Internet Protocol"), "network" }, { "wl", NC_("net-if-type", "Wireless"), "wireless" }, { "ww", NC_("net-if-type", "Wireless (WAN)"), "wireless" }, { NULL, NC_("net-if-type", "(Unknown)"), "network" }, }; static void net_get_iface_type(gchar * name, gchar ** type, gchar ** icon, NetInfo *ni) { int i; #ifdef HAS_LINUX_WE if (ni->is_wireless) { *type = "Wireless"; /* translated when used */ *icon = "wireless"; return; } #endif for (i = 0; netdev2type[i].type; i++) { if (g_str_has_prefix(name, netdev2type[i].type)) break; } *type = netdev2type[i].label; /* translated when used */ *icon = netdev2type[i].icon; } #ifdef HAS_LINUX_WE const char *wifi_bars(int signal, int noise) { signal = -signal; if (signal > 80) return "▰▰▰▰▰"; if (signal > 55) return "▰▰▰▰▱"; if (signal > 30) return "▰▰▰▱▱"; if (signal > 15) return "▰▰▱▱▱"; if (signal > 5) return "▰▱▱▱▱"; return "▱▱▱▱▱"; } #endif static void scan_net_interfaces_24(void) { FILE *proc_net; NetInfo ni; gchar buffer[256]; gchar *devid, *detailed; gdouble recv_bytes; gdouble recv_errors; gdouble recv_packets; gdouble trans_bytes; gdouble trans_errors; gdouble trans_packets; if (!g_file_test("/proc/net/dev", G_FILE_TEST_EXISTS)) { if (network_interfaces) { g_free(network_interfaces); network_interfaces = g_strdup_printf("[%s]]\n%s=\n", _("Network Interfaces"), _("None Found") ); } return; } g_free(network_interfaces); g_free(network_icons); network_interfaces = g_strdup_printf("[%s]\n", _("Network Interfaces")); network_icons = g_strdup(""); proc_net = fopen("/proc/net/dev", "r"); if (!proc_net) return; while (fgets(buffer, 256, proc_net)) { if (strchr(buffer, ':')) { gint trash; gchar ifacename[16]; gchar *buf = buffer; gchar *iface_type, *iface_icon; gint i; buf = g_strstrip(buf); memset(ifacename, 0, 16); for (i = 0; buffer[i] != ':' && i < 16; i++) { ifacename[i] = buffer[i]; } buf = strchr(buf, ':') + 1; /* iface: bytes packets errs drop fifo frame compressed multicast */ sscanf(buf, "%lf %lf %lf %d %d %d %d %d %lf %lf %lf", &recv_bytes, &recv_packets, &recv_errors, &trash, &trash, &trash, &trash, &trash, &trans_bytes, &trans_packets, &trans_errors); gdouble recv_mb = recv_bytes / 1048576.0; gdouble trans_mb = trans_bytes / 1048576.0; get_net_info(ifacename, &ni); devid = g_strdup_printf("NET%s", ifacename); network_interfaces = h_strdup_cprintf ("$%s$%s=%s|%.2lf%s|%.2lf%s\n", network_interfaces, devid, ifacename, ni.ip[0] ? ni.ip : "", trans_mb, _("MiB"), recv_mb, _("MiB")); net_get_iface_type(ifacename, &iface_type, &iface_icon, &ni); network_icons = h_strdup_cprintf("Icon$%s$%s=%s.svg\n", network_icons, devid, ifacename, iface_icon); detailed = g_strdup_printf("[%s]\n" "%s=%s\n" /* Interface Type */ "%s=%02x:%02x:%02x:%02x:%02x:%02x\n" /* MAC */ "%s=%d\n" /* MTU */ "%s=%s\n" /* Speed */ "[%s]\n" /*Transfer Details*/ "%s=%.0lf (%.2f%s)\n" /* Bytes Received */ "%s=%.0lf (%.2f%s)\n" /* Bytes Sent */, _("Network Adapter Properties"), _("Interface Type"), C_("net-if-type", iface_type), _("Hardware Address (MAC)"), ni.mac[0], ni.mac[1], ni.mac[2], ni.mac[3], ni.mac[4], ni.mac[5], _("MTU"), ni.mtu, _("Speed"), ni.speed, _("Transfer Details"), _("Bytes Received"), recv_bytes, recv_mb, _("MiB"), _("Bytes Sent"), trans_bytes, trans_mb, _("MiB")); #ifdef HAS_LINUX_WE if (ni.is_wireless) { gchar *txpower; if (ni.wi_has_txpower) { gint mw, dbm; if (ni.wi_txpower.flags & IW_TXPOW_MWATT) { mw = ni.wi_txpower.value; dbm = (int) ceil(10.0 * log10((double) ni.wi_txpower.value)); } else { dbm = ni.wi_txpower.value; mw = (int) floor(pow(10.0, ((double) dbm / 10.0))); } txpower = g_strdup_printf("%d%s (%d%s)", dbm, _("dBm"), mw, _("mW")); } else { txpower = g_strdup(_("(Unknown)")); } detailed = h_strdup_cprintf("\n[%s]\n" "%s=%s\n" /* Network Name (SSID) */ "%s=%d%s\n" /* Bit Rate */ "%s=%s\n" /* Transmission Power */ "%s=%s\n" /* Mode */ "%s=%d\n" /* Status */ "%s=%d\n" /* Link Quality */ "%s=%d %s / %d %s (%s)\n", detailed, _("Wireless Properties"), _("Network Name (SSID)"), ni.wi_essid, _("Bit Rate"), ni.wi_rate / 1000000, _("Mb/s"), _("Transmission Power"), txpower, _("Mode"), C_("wi-op-mode", wi_operation_modes[ni.wi_mode]), _("Status"), ni.wi_status, _("Link Quality"), ni.wi_quality_level, _("Signal / Noise"), ni.wi_signal_level, _("dBm"), ni.wi_noise_level, _("dBm"), wifi_bars(ni.wi_signal_level, ni.wi_noise_level)); g_free(txpower); } #endif if (ni.ip[0] || ni.mask[0] || ni.broadcast[0]) { detailed = h_strdup_cprintf("\n[%s]\n" "%s=%s\n" "%s=%s\n" "%s=%s\n", detailed, _("Internet Protocol (IPv4)"), _("IP Address"), ni.ip[0] ? ni.ip : _("(Not set)"), _("Mask"), ni.mask[0] ? ni.mask : _("(Not set)"), _("Broadcast Address"), ni.broadcast[0] ? ni.broadcast : _("(Not set)") ); } moreinfo_add_with_prefix("NET", devid, detailed); g_free(devid); } } fclose(proc_net); } void scan_net_interfaces(void) { /* FIXME: See if we're running Linux 2.6 and if /sys is mounted, then use that instead of /proc/net/dev */ /* remove old devices from global device table */ moreinfo_del_with_prefix("NET"); scan_net_interfaces_24(); } hardinfo2-hardinfo2-1331e88/modules/network/nfs.c000066400000000000000000000031251474767047500216370ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2009 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "hardinfo.h" #include "network.h" gchar *nfs_shares_list = NULL; void scan_nfs_shared_directories(void) { FILE *exports; gint count = 0; gchar buf[512]; g_free(nfs_shares_list); nfs_shares_list = g_strdup(""); if ((exports = fopen("/etc/exports", "r"))) { while (fgets(buf, 512, exports)) { if (buf[0] != '/') continue; strend(buf, ' '); strend(buf, '\t'); nfs_shares_list = h_strdup_cprintf("%s=\n", nfs_shares_list, buf); count++; } fclose(exports); } if (!count) { g_free(nfs_shares_list); nfs_shares_list = g_strdup("No NFS exports=\n"); } } hardinfo2-hardinfo2-1331e88/modules/network/samba.c000066400000000000000000000065271474767047500221450ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2009 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "hardinfo.h" #include "network.h" gchar *smb_shares_list = NULL; void scan_samba_from_string(gchar *str, gsize length); void scan_samba_usershares(void); void scan_samba(void) { gchar *str; gsize length; if (smb_shares_list) { g_free(smb_shares_list); smb_shares_list = g_strdup(""); } if (g_file_get_contents("/etc/samba/smb.conf", &str, &length, NULL)) { shell_status_update("Scanning SAMBA shares..."); scan_samba_from_string(str, length); g_free(str); } scan_samba_usershares(); } void scan_samba_usershares(void) { gboolean spawned; int status; gchar *out, *err, *p, *next_nl; gchar *usershare, *cmdline; gsize length; spawned = hardinfo_spawn_command_line_sync("net usershare list", &out, &err, &status, NULL); if (spawned && status == 0 && out != NULL) { shell_status_update("Scanning SAMBA user shares..."); p = out; while((next_nl = strchr(p, '\n'))) { cmdline = g_strdup_printf("net usershare info '%s'", strend(p, '\n')); if (hardinfo_spawn_command_line_sync(cmdline, &usershare, NULL, NULL, NULL)) { length = strlen(usershare); scan_samba_from_string(usershare, length); g_free(usershare); } g_free(cmdline); p = next_nl + 1; } g_free(out); g_free(err); } } void scan_samba_from_string(gchar *str, gsize length) { GKeyFile *keyfile; GError *error = NULL; gchar **groups; gint i = 0; keyfile = g_key_file_new(); gchar *_smbconf = str; for (; *_smbconf; _smbconf++) if (*_smbconf == ';') *_smbconf = '\0'; if (!g_key_file_load_from_data(keyfile, str, length, 0, &error)) { smb_shares_list = g_strdup("Cannot parse smb.conf=\n"); if (error) g_error_free(error); goto cleanup; } groups = g_key_file_get_groups(keyfile, NULL); while (groups[i]) { if (g_key_file_has_key(keyfile, groups[i], "path", NULL)) { gchar *path = g_key_file_get_string(keyfile, groups[i], "path", NULL); smb_shares_list = h_strdup_cprintf("%s=%s\n", smb_shares_list, groups[i], path); g_free(path); } i++; } g_strfreev(groups); cleanup: g_key_file_free(keyfile); } hardinfo2-hardinfo2-1331e88/pixmaps/000077500000000000000000000000001474767047500172245ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/pixmaps/audio.svg000066400000000000000000000062031474767047500210470ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/battery.svg000066400000000000000000000046301474767047500214220ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/benchmark.svg000066400000000000000000000032111474767047500216740ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/bg1_dark.jpg000066400000000000000000002472741474767047500214200ustar00rootroot00000000000000ExifII*bj(2ri,,2024:04:28 12:08:3002100100 ^f(n-'-'d   (!%"/#%)*,-,!140+4(+,+  ++++++++++++++++++++++++++++++++++++++++++++++++++ }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?UUZ6ɒ±x\;\+l2*msFYm9`8; U]IຊYŤ(7sAxQl$QӏxU6sx+\_F(39W6Z擋e#jͩB+TdӋd:X(wWa{U*QdPݎiV'B61ot魛\k)Qh3cZ@ք.ziXb2!Uߙ5%X.ک's6qUX#}{֍sq50NqrxQn3[r:nl.N|J:DSYOlt84)SEU11۸L}s*G=HU. ``A,Aրn6C֔P+:K4n r-kBʸcثC#Y!+]Z Z֡ȡJ40HثLDHZ[o6JeTsk1;]TSQ::4lc~ʮ:+# KgW,x2 NOcIGܙKF)e U)ͥt:4{2fHڇ(9'cvBܺ:\Y 0iZsr$wb#+%\RLkCT%|D(ݑL܀x4Wt;wKيBq{6m;_)Tۗ'"m{i+($MԑfdɤՊR9f^]SK%9es)olݎV4uLgx#HaSe{>kKQIi5ڥ#nrhRMؾYF73#K({ps,gבV۱+/5)C{ltR-v ݻdMjk\rbz:#œŪXT+sЁCqBːxR%88j)G@m%ѝd?JJcēLP@(fwt"GS%/sh7[ԤƒĚhei58sB+0VL?pkEγL-})4Ѣ "Kcs Л^eTZFM- *R$)[BFܜV|ͻuN14RI;Vэ39Nf=$p5N*VCW^eJvћ&.[k6t lv5 2Q9ڱd 8VmbzVQ%hVyp;qY9rq篴gd=kUgn?6dUZAʫ18JI}8i'O9{· t4tegF^:Rr3]d#Ul:XcG*bOi'$ww ɜcJùxe+ѽړm $c57eMac[RY`քUBmSU`x5ql"NZa(%"X .89fIXgHG#VJ+sSwc!$,4}gLHrw'5 wJ6dzǩ! ?    (!%"/#%)*,-,!140+4(+,+  ++++++++++++++++++++++++++++++++++++++++++++++++++ }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?Ev&ZkAҕ8 e 1fDJU":2f: EH4v)@S C$ @<zLdҥRs@ )@ŠCd.01HacF%H@ɢf%fT:e!`)\(=)L 4qsC ((BPhCMZ$mL28"6ȜU#6&MRf2 U̜l JE$)n!7Oz{R)h @r Ai RZCUa )ܖɰE;h2E1 "a\P@8 9EZEZzRfEcCf(r; (8%+E`EI`x(\YʊLtPݓ9wDq@ , .).( S&)@ L"E((=hP!S @ (c q@) &(bցE (" P@E&(ǵ&(H.wWc7"='fܼReim:,'u J,l敂@qc3ELT\SH-F8.,#DX^SH@(qH@)(HZCERP4pC$sINi2HT"&K#""b$sI:Ibc Ph41鉑1 R iPP@ c16B4c 2H1 4ac dD隫BNN#6b 01HW P P qC.$jMR.)ÀcH&)(´asLC H^)",!P䱊EıTKC5-*4'U((q J6p \mEc 4b"H6|3Ŧ.1@OjC>jbaڀE JCH" S1@1@ @((?!L @("E&( &( ) ))bE&)s@ " "!q@wr8Lcޥm#UcRPu )'`qMےiRkbS2GOAER"XaiXwh,Fq8w>+øi @(Cp49[[ v(1t,b9ɦ"64c ☆bށF)2aC4%QHaHbb (hPZHdD0iz+)@EKEq7`W#fM&#I CI!hLDl9K@HT֚fS Qb= T%rTͣP& ځ1@ \Rb@ "@0!S$k DU4!S&@QҁFbQ'Jk]0+6͒'U.*FHdqHb@H!1@GBRbh=|ZB[6#8~E<-OB)\YR)S&[URR-G1\p})s0Bd`As0pLsdW;A5jW2 2DWFmXL 4CL"S1 4C( 'z1@ =1@Š@b@(1@z\P0@Pڀ B8" JB(B(6AU!HD"HyPԮ;\K`r@R3t;U\DDqr2 "TJ!c8=(e[BH:@ݦXPcԜR*PHc1sH!7S/cJrEޕJøԬy2ʞ* xL٩ؖ0d&LBdf,EC4ER$T  L - 4K"-T@}0 wP+PajbM1\a4q Mb@0d¸v"OJw!QO4\~xbTR=)a r(V-m;L,#!\V#+LVE0VlF☙L0֦&0 9EJEYj[6-ž-Ep1Yh2qHc1ؤ1P@.(4FUq2fa OJw@RQ<(aEcI;J,50E40q3ր@87C4R&W65R$V③cR)1H)h~x"b4M1 4Ʀ!@4ǞO EAw4\f9b@T7-"dE5,Yp*4D*F< C(RP @PiSqH.=LPbaZc-1~IJ0ZFFr5LP*4lbR2()P%0ԀLs@9AC P@@8)P@-Rq@J((bwA@1c$KOH\\ĜuryG,\N$>;Ӹ4wr 1]4v#ȵ-pR$YFiXT%WƊDi3TfW4`!4h=(z4ɸ$H1ȩl!HU @X_+ڋ8!REVlHcJCǁ@   ( S ! \P(01 1@("E0LDNŚh5j"(jT JNVQL "☄" @'z/z;P1( )w1(h;P04b) 1@ @  LP@˓X b+拱rf4.D/Oz..D&Eb{yRfsepjԎw 1r<v@7Z,Ur9E4=h֋)*OW K0]zQa^`QcU+vm؅!LUv<ƙZVH^YZUj[7Hqv ֗0(g-n^Qe&UpjYJxlP @S w{qXr4'Me$[*U#&'VLGj2)rdj$PhfFE7(~5aCdSDW@Bwf#f؛\LMθm+#ϫ.i3tD6N<Ɗ, ^E42%Ȉ.FELcDM+DzTص"#+F{RJC ^X!*V0+(LZ>:UbJN9y8e "xB:"8ԖDC+a PN"&LB+<L,Z:ɚV4LvAq˜ ~4cu!q@P!^ ]"w&0EPP( !CMFdl84d2 3 aA(ahPCc"efLzHHB0!LEMdA" 2K0TН_65LjYhLQHd @1E! !!!) CLCM%8Q@Ť@ @(b J %0H4!4a!U +Liѝs^+D̤YV"!G@:0haځj@s@ q@PJLP0=h=hM 1@ @VA 稦g-Il#A"p0>$hM5iF%@vhU)ҏTgɥZl9f~D$.O2\+`Q̃e97M}!\ӴInӤL"?b)-$Nq)w +\Mq)s3UF$wv`#+R*L֏b*C ~ԬW0+!00 *fM {PtšEl"tTܤaځ8K"N6RXFN)V thTC"eDgbԉ\bԉUޕLs@#s1 @ǃ! vE 1bL%R)7< :1H=i@SED4Wu2z#"Bbpr)Gրhpf2E'\fQAAH֐-!@% (4P@hHSvFZȪdm5 Bڹ>"{p׿9_LKӡOAqer֦-(0%\0=5LI=Ͳ<|Vq]IhYIc2=P`z+:MJ =;7tC Vnrʛdr0E+XIof@ҹek sͣJ;Zxz¥$Fl۞MhSrVPNy<ݕɌ98+U=RQVEȂJ`ՙ3i$QƉ> | zVwGV<*gqhE(s #>;-%Rlpmڳl,N$L%'JRC(80"2%L2 xCEwSL0CT4 ;$YLfR(v!+LV@74n8=hQD`A7 ") CLLP!)dN3h)q1H.(@(i"@=a(ځzP&DdO4dg҂F H4bPqxj<4R.@ةfe蛡f R>) pb@( C@4p4 JC@Pf585+4P@h453L!LD/T"iYFu3A֭I 4 )P0 1s0f4 J(bP@ @MmlSڥUc!ޘ6qIbГ!<M&TgcDb6RaŜg5*N:2F=nݩ8}GjG%H:>#q8E jO 1o'+-QQތF`ZBQ#h9g7nRDpjZ4?4fP"Tf2lh$oZCs@H";Rv@((ƠL2l12" u@ N9L 9z2MȤ/rf͓-je5%H8P p1EsTY&l`#hbWn h ۔'~N3UnϚ)j nE^r R2ҎTa_CJ-yǴa3KƜZpIjLn_|[rwgMxҹ=OC ksC &Ȯ:H[kKR9fθ^jM 3>J˚BsI r5-be#ӥME0+; Clp w2Z)ʸ9FmMiJVA  H !! 4P$K)L&S!FRE7&DHA!=(@4HaP `4 34 (.hP @ȵ[ .ܦ'M֌ |{ڝɱ1Hhtmv }HPBwі/׌^ :>ZTȝ.2KnOU=+}3R,0o8ĝ8;A F9?ﭥ z0 | -ُDN1K$q?{2_"HK{DF$~4ӗR\ipt`_8E'(_:'~j|.CZٵ\=m3:W98Rb-Ջp,}ˀ }GTB0Oq6IfX8#Dj0B0AD\N#.AVj.'rrlYbd2i0EdrœԚUTv#eS b@ab6P iYM$ i4Rd0ZE\^ !m (CJ(rܯ-jFRWtN\H€ @ ց7P;qE<6hԇȘA$l)FEE! 1 1UÃG*IdmFsV@rЙ &1ԱbP  1s@ri ~J(04(C$\LD z+䁩 p41hM4Z ni18 2YP2i2LA3>{bpqUtv*2ۚMw#40Z!@nw{= @j(j.h1s@\ 3$"q+Vjh[ ,? u-iMi14fLbY9}3Qm9ZP!E064m^K'UcTsH۝[jVI ;ⲳomM is9B(nʡSZ ME)ЉII9Bm6FZK1 W|řR@bRCyуZ.gV -pRKTtf҅Y1\֧e:Z&h2HDHžmhytP+ZCJ\˸Td]83dcֹfjlj fjH:R TKb"RArl4dդc)Ǽ?i9.+O׭f΄(`(!c.; &X3,hHҳlҦF^|lE*$1h6Zd5c$ӸJSZj;(hb0 l}*r<"#Bhr)I n9IԉwdR(B)4 J_(#-ȤGj'*xZ&*mlTu*h)4@XA@ L,,&h †CPց܌M4aCh "@ƚCP!ۨiM!&˧&e :-in*Y&SR1i1Hc J)P@.h-%^H 3@J&&@¨!+ҰH4%!! 5LCS V`NRҭ39@ΚJn%f6)I1%  55qwP; @ @(4u#H8M "@j|!s}ē[տlLQ]pCKaeI S"T@1D =;b@n5W.3i1GU=Y8\զ`ң+uU9mMf5tNqֶMw9d؉$n>dBRZN~ho;O_JWEٴE4E#O`yrmE,z 2$_Njn=-Ã˸ƥ7+"g ;5e^OKyM])I=X@′A5]nF F = vhb“ڪ,Lɚ`[$Rj&n)qDUNiK*cSr3$Բ 5ɈC4pHf#R2flS)JՃ HMFMO=ȩl*.])EiDGzsTj&!U܎QV4\|5UP&tztLĨx3qK)H9RepqHWq֑@E0@4RE4S$c.ҋ-Z&a:wآNF*cё H v@Ġ aA+ ZM4P%!h LPP"hiNƝNsYnv7Ȭ4LzTx4 vVwP P0Bf \Hc@Ԍ(P tP@y^UDBi+,2Uzr@i \fBiLCI11 41 #&B+yiY`d9+`Kf"XPP(#ĉ#ZiOSFXr9S֗8]VUh3b8$Զiz\ ڔ)'{2++ N嫢wGn p4S[PeY-դe)\5fD%yW2qB4`E;XAĩd{ԸH%+wL,\f HE!- `5Z2rj) @h 4 @bPbhLڙ$esL@2NW:Z t%ibA-gS3I#" -"E"AA@ @ `- 򪃐k#'iI31c5s'=y`Uc R)1P1fAW $?uӱ-_Biu2<ȍm>gJV!=(Ƒ@Ĥ)Pqʹ8gE$]46&i\mq Tt{%F9S_A[".y:).+6Δi"ЯZ\ijbP!2=ꑜ=3nX9u&i29"^=ǁT.7$&[6Z&+XA )K]T)H# 4Hv#7pyh IsMg$m QbѲd0Rx!0Fh%\CLB $hzџ(j <)"[3 NJde2H( ;4r:= (=4@S֐؇4aޙ,s@3Ǫ3L&, @Ġ@!4f@ \!s@> a`asH,4f!4P1  Ew%ęe;H{\@ryGH:\N(qޡ5-6Z#N CdѲw' E4@b) r\٠s7欑ZSHڀiր:C Zm!H0 PhL1 4ic-9:TMY=hh," duEWB*Z)H)&6P@HawZNS2!mWD2GZbPLB3) 2,j >.@\d Lh&!ȣoLEl" t#7!@đESHe횖SLA l `RRt*q!9#c8.\SK`4F|ɻ6uª*Ts cn>+=;!//e);*qJ Q$ʞ+Xɴq֥]= ҳ:7BA'Yű$`8AЁ&3QNqTf2o)4\%֥!M"Kj4iڨ1YERVF@⚕W~ZKFuʑI+1Ks>ys!#h9%.+&5)Dҧf̣f 椋8EBs aV u$@9"xC- B(xp3"ZE*ح9bs,F&d))v"u*iV`86)YH4ɻCvԞh2(aJp1 Tꑔ݊2M3%+H*"PP@ ia@ b V4@ 4`a3Hv !bf aQq4JU\<ܗd֙6{zh:3F2F+9Dh7LxtzRM[YI1=qYj]9{DԸ*urLvP+4XE" QTȜG!ȤƵ@<@+Jw9jG9$])6%Ir VrНhQ.MC4E,V(][qZFmH""a3w kmeQseHhLDN(/2 $\[7֐͐k'DXRH5wj+5'q' Hr)Jj⁔ۻJҚ1%q^BIɮyȀ>5U MR:Q,jsEƑ6)\ eb6_j`BE4hfxB@5j2G!Z{^%iCdf1r dVrݕ$=i15&ihaڀ0C ; †,,(&nV(jaA,.h4444&@P@HA-2lHL#d4[iڸ6@uS5++x= PRh٤1li&ʅjHh (h <C %WiZ40B(D˜i2 us֘]rlB@<@+KAA.%9a -Q \T&;R =+K1n"(qPG"R2Z(xL9?*jc$sזf& Uyg֤f5,(rj LϥhZbl4@Mm(.E`U)q@6KAʼ`.}s ֨rhLm#%9_sSLLH'%y lDRZ6DH͎M#E[FsɌw#R"p7/W24Y/؎@ːxZ:ԓ'jLY4)B(']|[kz+S+D rMlaѦOJ8JΘIJT"uH+aW%Zbu-GZ@b aawDܞ9)8H$g-M2v#Ծ#BEwj+ҹDeVh c V &hf `+ aw{+z,@XM@X7P3@h`85";zdJM2'VF=)Uc|cֳu4?Jţ2`╊=X.!Gz9EVmZD61[xn) Ni pE#t!FEBh2&sTew$cZg4ѧh mhz;٥VMdA%S@1M!6cjfSҺ)qbb1n !#+zVmJ%-(*nU.\+n.X8tY2֯q0ڤ:s휱Yl#;hS 4*H qRZMlQPΘ -b,∢jJhG jMPtF#wziq5v\ ANfL|7̠oVqsfWswqvb#[@k!m1YeqP^2{IdCQvSY:L09# )G 95T-sDYhK(*NhnRcPqڢR֕?jq ӌ5)rnDaA,(4 †VɰzwD-;<>{ryI=iV'R m%sRԉUrd~)Xi TشLJ` vzAq٤U"P#Aր;hx!O3R$ C$cC4ZR) abm0040V00N xM:b.)4A'"Y]-!D1Zrȵ䊴d4/ ΘȞ2ysD(9Qrg\,iH5V9ܬ)8uo(Lqd0dVN6glj&$2 { iQrekqԛ5$2HY ҫ\`)v=+H3d'֗3",O &jA&dsh<46p6:U%电]iけODRiҔUN.TRI()bXәW4F Nʠҩ&fu>E+ ڳ.X6BCJkPfӧu{+:NFီRZt܏S0_2)oxrek2=*ߖ Y-ݢO1rm3tԑCҫ+Ov[AsjZ*QVcfRYJTj)m- ǎEa}+d⺜3=HOGҔ*Rx5KN#|v'r+Hަũi19Fu"%fQ1Zz#Po7ܐگO;6(d~TȕI"*pEZwNaژs 1a PC-ڶ5GE[sF2 ,MɤUqɠcL"&4jY%`u#EV2YW`&vy۹,QMBJ 1H~S_+85rQ +."aK*kp R"ǚ(\ sW\KT,JHU,;TB6 &'Xt,¬!XA֯RC^AHI-W2mXp Ȟ95-e "Bs!<ڋ U94 2E5,PԳDA(p4) (Lf$lnjzPF>hP&DˊZ"tIZU1^L1 P|RPHjKHaLP@ (  #֝44\B) 1\]\LRP 43@ `@(4LVaCP+ h`LV@lJӹ.$/;bDw:JqqٖagFihZp* JRi+)Xw'*1xc) 3@ hG'iF8P1å!UQH# 71@("E00;Zw%;RbhH}CEy .%im3p)Kmث$DWEw:h=#jtU34#qC\VTZw)>QAIhCr02y5R*^ʤ42Ճ1&f+mlE3f(zų1ЊfX~fKR$ud )1J=Y]Hgb@9 D"fD1Fһ*1b; arzUmc$ZM2v~4(ܙUhX|@9w@7bB' U&sԌdn[\(~=rjqv4QQ}M7mMcs$]FG#=Ytli#rsH]IkM,*ER̺qM\ʯ;CrZsW9kr?md!Dgɝ$Q]a،f7zuwB$FH,@8L7"d'm(Lɫ 44$H>\[چ53#}>nJrߝ6TQ}_v?gdO;'GrrQNM*$:ʀ ~ufB3Zn?ՖdZ);@Gdi=۾wA>z֌2dc\kTID8aY,c\Б3LVa0=(nŒ}FGZ[]è4h$ Zs w2AUhhq2*MS$ViTشiXw4&i iJҘ%4K+?FmrE)HdSDQ3.4JN"*E@ 8:Pڝ/iً *GQJ\n(q@P@P@(@ FmUJAB<>Xjd%ELM;C@\iS@0H&M.ifXPh@.aa@.b  @9dq$Yiܗdq'NA;v9FM)IQIɒN(Icz2!x4<h<1OBi,#qfE=4 1@ŠBP!S"E0E1 eN#dXqXxLCT%93p)3L[pQ5ڑ:ATUSvik(\̏`1u9=s1vM=ڊiYzNѾӏZoԺf1Z1I0] BE-WSԧO%nJn<T[7:vFGLMKT[OOoD!R&qMdQk^G$ӌTv&JRљ]C8rT+DyA.d3mUz(#V(h, +ך\XĴ"qZc{P1:PP(c谮F 'ERX kQ/"VL:ۂPAwAi RvE%O)f'8؍eN$}Z M19HYX}3VR͌{5ăe^ qnIҬ3aۑWinYK:wjE(PXh P$MIqOW$ŻkGbqC,>7tdK# Qd EԔާϪ,|pT3EY2f+"!E.FRD—)|ĪzR.Jø֋1w @5@2Te)皴e#2kFJlV TV3Xȩ%MKFWx565UB)Xkjc-ڙTQF:jG+O(iCBGpRw3Z E!ځ-L)w И B1@%P4,գ2iTdaqҘFEbJũ(iBP>b'JEB늖#=ib 拀ӸX]   L,(ja٠A†Vitӹj3ީ3FŸs@)Xb L4R,,ժlZdi z((vxPqޥJud8c @€ P!M (E4`440VaZ`1!xW/jh,>It23:IU3qE6+7mqpH'hWLcdpT4(dh*594oZA&#Ch j̻`fY:C!xVNRv!ç`H:'tIqa&C $wR]>Bm"*4h.丣6 -u"ёtd$YI+]T_}liis^M.+WT6n]* hcnMc0d+*5vâ;:&%{t4W0xq1hG&&RM:QZ%)8?JܗMn5v'%RAjwK]|J'$C5 $)Q'X9ך-۾Gp2*“QݑBz#2cHoRtҩ37Bw&JE\MQq4$q9*NzR)J۽2/biR5@@".MG1KBÐ4 vZMF8_jl,֒mA`9>4ݑ$JnEi!PDh"Jݞ?;rR E:1S393g~N`Vܩ<? h#$c48JЁ K܍w)9f8'..Ua iܛ"Ťϻ"Tv1;7phdj2(΋KդQ,RuԭTDrM'Z%,p6TSQR3G 1')؇"~HRe 95w9[eg=\zEgZ;XxUaZezS@ c/hmihJ樌ӊFH<; d9nfjSd =eVfƔ.F Rڐћ ЛeVP *ve42)DNN|4-ܦ+*1ѫ "URy;!"vE'?1bcL,Uh,D+C$!!_;&|١h̓$1N7y;AB[FfGaHCMRMö́<a~䐕PhL8HF\fjw :Dj=bTJj(J..T/cHv$Y 2yAqސPr+ىրɠ|E fdlP܃Jh8$e- -3I{QUivR:{m.PF *(#1S9wkj ;PO^UaRHÑ9CL$4% b؞b3+CGJVr >5BGZTGXQMR3eF2/BGfLj'\c"M)t 4QDEbƊDLZD)4R JƊD{0iqXa+  #-LbiX.MKqi&JU!(FqL.ƈE┢p HL?ҙ S$9d10EȚmҥ(F)Ԁi4"h ہPѤYej DHduP!i (CL4mP@J1@E0iiZ`1FLBD\U9"܁Z4`-Cl Po$^@r6Q, TT\Nޕjd,UE>aC\U⠲/`4Rd:w#v61VfrFHǞ ib(&Ũa} qU{ Q)ţ.ͣ*IS-H8m""9Eji:\ڜ!* Ɠyin4Σ)5&Jr\'*unaJi؎Ѝ)JL:Rfw! E aP 4s@ǡ1i4=E"8]5 Cze⁦0 h~G4k41jCH|qXNV-ѰTZc5'&<*8㿮jt4rkС4jL1M9-`$y/hfONZh5S$i jIs#-^{ԇkIJT| =PJ#$%abDDsHM$<4&RڳiF2̒}K,Nq2nm^6/O,R\UCM tSQd*2)6L$]XI:ldDl!lӱWPW")׊djBԈ]1PѢdLLŦ"( 4 ozQbșScNa2zR0)&)qB*Lc2zS q@52l'Hv&P ,|d) ,XAHt]ɌsJù6쌊 VɠE 95DHdQ@ @-`4hPL ( LPL"E1 +@S3!g";ՙ-6Y/J͛#@ uRE)q;W82š1I)8A,odB9gH4Ff/ۨ#"H RlqB`ћ5i\ƤzMKA IۚtE57.^x]Z2AW2wGsqqilc֢PqB·%O5i!UnΦ7xujth"lssYح*dԴkT6fw!{!sahPq5rQ&GZw#H5D)SLDN8e0pi h3slWKzR-2峠W&/G,D`ִ扃 :d'CWlmye#o^jbܹQ&CĨGUt1Rw k뭊$&ѓEkHQ=-u*^HʵqA,q -`ԦIT8CEg=+<8Er9bwYNsE`c[4j &;ZkfiD N98hWXvH͹~pˍށܪ?/7FP! STO\P%kCtS }E+t#&%P2ۭ"@<6JfmY=)7GAD GaRIAGZ{RfsWKs ,BzRCduv.ФS0zU)ttQ,6C5:@!42 I ) ;]B.!eaZSLΤ%uf@mu&=qvZcp*M,SpHUc(eMϵ&Jei# )X%M*D(Ʉ`UXp)1i#bE֚d:#7qwU\V> \hyYEC,>^rUx&B}*liq=Xw(XsV+z@;f"hdZ`LҘ04C]$!T4 $@(#XC.Dye-jHj $- P1E:4b@@hL@P@E!iT0"ĂST0 dHI ($ ֲhNj .( n8&KCG^Mttsfk,N67,Sa7 :|^yⴌH WsUi A(Omtcaʲ{s.:2exV9{ȹ9K*#A5,m^JTނ*yM˖}ETL*&Cc cIQsKdЄMv?XI;Kd}iXPB:oc+ܧ$w6PtX!64[@֣Br dhx4bz3JŦFE"(%^D1sHl2sM ibҴј^QwFuOk鄹֥(%1)&g*rNrؑ$yV5rw`Gr aVeI~eۗ$m4I$ Rrq٧ÞNA$'mk )DvѨL9ThwztG${rZXs\ݾ.3K4Z7+ajIWɒ>SM$dk6gYȠ*d?Zz錹.ebd n6k?k#Oc 3ny;=Tfq+#Oy y!IّK3MTR%J]dӂ69S.Enl>h FfٟNZ,vx'5%$ L jm\_I4Ar6Dgj md?\QRG)kzNYPv8P:[[nշ>GLj[ҡb 4#"%rxfdǥjf C dcFexc[z2E+mw4 䈜HǑv9ø)c i*_;,=jKb9I9HI`1WM;ʚd 3p*>rFbR^)X|X9h+ÎԬ^X⡣h^h*ĨM "LaBm!j!Z7o40i Pc\S&.GZV)H'E&\.B 2mC)T- @(Mh (E(@P+Z\ϔc!4s'E;<- FOIػ4jc5=( {'ܰMtL9У2V`9&ӝe[4 u1<%h)!&|Կ\ǰ܆50[՚jəp3kK5#G919He#)u5vw"qmIAdvD}.*Zk O{=Y[/QPn#WOH:v[- :_D.ͤ^`~.=nTewkկN`-ӌR=(U:ەՌrMsrZ"KC[}\?`=3T7.2Wevx$E4b8i1P{m$Rc@#@ e=AC.-2(aU5%frƂKqtԔiBPG6X`M4RiA+H[[4+rY^Fw+9! #E-[\ V ziҽi$POsM2ZJɝUcDydw#Id"WJhϚc9\bh>j2h#Pmkv9Y=Iae$v*3L⑪!+8P!"dH& MQ lc/4( =hq@A@_ $fҩ6KrZbU VtOGpN~Bm CkzQ5t}=M'M'<}h 6<Ǖ=Rg{|OqM9[FgxPINt*hW`h@]ŽgX9 Li jx<hN h,n!dE=CCa}\ba֪R:m17pg(43fDT0 <=8? 1(b 03'VVxY{ck^Oi)Y+-єԖ\n(:P fĠ)/Ϻ=@S'AT(N@ R֔⤊Ggsa\ Ipj,P#j+8VfrF4+[3(@8ei VRQ[eU{Xh n1 ,J]yE@F<* 4.(1LFD)HSV/[.VZOmir%I)X4U$sW"L/Hw#fe!i:6&mqOJE4q@_JRJ4RNVlԊ` >GR^8트JVoyyD,9jM7i]$O;;r;}vCy*i.5tu< jWRԬdı#JЛM]hoz;墹wfMK+tѨ )nMT\ɏrjZ1E= c5L68 ,nƆ\X+yR`yZDꣻ `88#0d*P!$ɠ@P0`sڂ^Yp(ѱzSC$U߷ @v&ZfrIx& Gh0R:b:l*&I"`05+k9SLev֠j.b)M jLy?JT.xJjEAjKLYF@BZ9Ă481]t8RG&HIZqH)a@-Xcb1i" pkhPyC#TW3vgJD +zo^:\8cC3%KHL&E4Ȓ7@q֪L(ǩMHPRh)#14V/jYrZ!t"H1m'Uli]2GbΕ2{tcQa|KT#TAjUc]ؠ HJ&/}hW>N}h\rZ,;L;Ұ\rݷǭ`$[SPzbu%[Ꮄ\V&KV'K4+Dz3֋2^Z,%[{ +,(0).0M3sUb,QePXHckZޒO-lZ<ȥ49CFFk~T4tơU"ƪC"p9T->YH(ڝCsC"FҩXRqטԚԋe[&L5XGz321{V8TzR)Tmr4r=*N؍9zɳdYbRQ ֵ3*pM"̒- fu0qZ#)ZqJÑʱlF6M4(Us&<"nF()220i (P"T9ћD$q5+ʐjY]"$P昬;vAQ3H-IfbҪ6$\,dt$difs7& 0jnM" qhh} Hq}.P4ZCRZqp݉qh\xluz~}h "U;5"ޢz! c1a\@E+5IbD1h*W.[ CFfMֳf{ !y.Ik9f4]4cTlb:q]^HZ5R+ICFљZH3ڧT!kojV4UFaRť*:,%;iZ9y=Nձ}R@=zRZVFTQ->O&Q1r*Kڭhe+26{ |B D~{r8u(F;*9laPT^E.KǾWU($O966I\[zܤLp BsO(A lvV}-eSv;vR? Iqg$XGC4 4X\ЏZ,>rN P($(Cd4A$xD@#jE4bAȠcwZwdi-c.#iܚWe(!Gavh &bJ@59Pv ;dt;E:E]FGQVʬFd`qT2ÝRVԅ2 "D1A- @֨W0|cƮ#,I`&+B R*{FH*ޢE #19 0Mv a3@`؀M5b(r {S#d#"UA=}!`ԊВ8@A-b B'E֤J8LnÑzPK`$*S=m3Zр M-~tpx$O] UZIjj4ۉl(s֦رi{1i\[lkEŴ2hsu8eR"Wf6(ҡe”WB+ȕ<)ब`i6䯭hf ,ϒ0P!☬4( qZ"G"&3ځz{P+mm7ȫɦՎ88`IU,kT*c$LL)ܝj-pKle9*>iXӬNAۚO);#@hetH\[ R4P"5I;Ea|EiCEcF})V!6LMUtCD-jǵ>arzw+, NVEX x7TXSVa\g4,0% ,00P@jJ@v49` 4g@\]9;0͙V Qp,WFzU"$hɡhbE"'͛&:G8 l<#)I 5]EB V8Zi2f#h4ZB*lRRjb=srz)uab1z#$!N: ⮞OciO5cD)\PѬYv`j6/*Vftq:"8@;sZA5HLִ9*3ޓ- O5& +$SEݎL+(Sa7sn+e`8/lU(?+9$ǖ;Uw ̂6!L-rX8i1TXrʌZkMA@Shi2@vb3Hhcj C) iqc*%KTj8F.C)<ΣlSApI'4T2ҔPNEű M 4VW!4S'Qvfddڲ \I@ϥMFr$3P78pzhO4%]J4C$f0`}FRA#qF)k1Mm<.gIiMhGHIp1AVint ۡRVtQ݆n_$ڊJN]GvZo\1XiQGZ7a@*(8Lg by|ًm åJȌ ɤ5-Fҙ22\&V=*\F:kI/҅SIZF>]IVs!*%%]_SlRdlsZ6ҦDces[ǥEO,fvQp,zQpPQp;1q 1ڝ ҋ;~=a$TX dP39@Taz9"ԔvbG?7RiM6!HP0AAW 1H` P@ @ LbPhEMɰbPXSBeiG&"*h@踬XqR$cNhJzգ)kCEey R0D\~"hs!{)99^}-gѢl;t>j!G1WhBµGцhR'mWCxEsEI؆L8 qS]2wRhjHnXlm/+=0AIkafl!qVHՔS&-7fDeGPH-۰Y8krf"bɤZ239#px'(!LPRCW-oA +޴ }ὕE8VD${ZCrzR%I'ғBosJŲ'$Pv7t(稫wgS VdsY5fu] 걯$P"foܠ=ɬcmP+H>)XcՁ R" LS1@ C L;:7RȌ<׳BYH洺"݊S\Aj[Br(:Oh(m`ɠ,EC\,-a( @hfP  Hf @CXqLL&ɰƒ4+P  :PJLV VfFReSEҹaU)6R(b#!J(W+4AHѷT4Zd<`4V(;5J$sNMj0p8=($ g\v%)\d 1։3Yd8BfcHH4Eda>mm8>nf*tZeQv)\0X)sR`z6[hD^\`$ vj\ĪVgS'E.E9Pr}h9*XH@ @#PLz06 I':i/,!hǑ"9dY= Ι*4 'i,gE@jg- nN1L$\',_98+1EH(`Zեs+H3ݤ$fr"yȧa\BsHނHe9ɦ!uH 1@(iPPE!=((P@Y@ `!B(S2Ђ:.+( r <hdaQIR"QRh$ZE@ E!Zc-#)Jb`-ZbL # ,4ه4Xw(wjWN&$"ۘ溑ɶq tX|y^X|ˆ谹 ExZdZP9%mKHGjeNYn70,+ǽW[{w6 * 4bD<%i.1׽E((AP+ LV LCPM- 4 ( hiW'x3>hlKT |VX"zE6E4xJN̥4gҢH2E c`{GLZd8 Awc[&("J2cC.*áb4$Nin4$N=EV{e2~T*Qll2$8Zؑa-IENVvePJ  G4mS7-,gB7 $\S;G?JFH1 l8gU(Ztԇi4Z0`EE:nI Qҁ #44q(@ ր吊wQ6/>K0@h)ȠȠMKi %y#9mކt1Y+@/Z, n P>kOqp%(P#ڙ}蹧+؋!L(;>[6Dul8#>LF(Q2Ya{SjF|ȏyL $4rȼ\M\E|[rOZ3Z3s6 2JhɫW kHUvFb95iNL׵u #lfU7RWlK.HFP_ZjdO (R's51]nI +4rh#l26ۅdr)u.'q5hX)QGp`)IY66,Z#@p+#b) 1E49\E#@9aHeYb`rBb2+[}Z + 5D2D~XY S/Smx Jk #9P; ) |1dQ`'m"Wd< TC[6RM/wdƄe=QFλ\;DŒ9u@l$0Kv1u})]XoNFqX`F kfsVܻa1QsE FL)5Sؕ7T`WH^yH 9XH?RhJ]O&ϐi>IT#; aS+{6-Aj4`b P PhT#(|,Ԁ" Rdb+Eda֘9+LEb$wLbښbBqFWbBP@@(RW @zPv%Ԉ\f4å L4@409"Y dHX"Doʥ&Vib#=Ɨ`W1\D6BRD9ZFNf}9 kXW)0&9,P|(-'-ko R;aNЎ3PٺDF= @洌sբ2%ǥ6Ɍmej[6HHZhR12Cd=4ФFQES޳f1)\Ri&wj9.168U&wP8b9CHc 1!0Hl8b 84)yƠ6z1Z*hEeSLP/3IɁ}b'"^*lRd5-&C"T4\YY*M⁤4#1T2>R=rc8aRՍ؏9bh`q12@٠ 8i1 @h040F)M ܞz$ ،$ZcdZE6MrJȃoqU !Va&+(xW]K&1 1**&փws \4n,- “ZD+^>G/(Y6tJ1Lj^EMHc)\JSc`}se4NĹ!ȫ4t9;䔑DVVfO .V4'#VTXM(QAYn8@Mʰ^( DȦ"29O) sHv G 0M\ϹR+ZŜ"֨n= ir:2HbƐpglv% EY)4;4^h<}iq`r3T4̛>IQM2  ]"q(SACD@ =(1 cOJ704hf41K+%ZfN$^*G(NhriܛHAf⥚$V~5!Bu4c,oL+PH {ֱg,CuSS.3k#iA@h P+@&D0,1LzE\AJ0h@q1ҀCU4 $hNE!n3Ҙ% Sus(i[4۸9g \R hi:t#Px?qOqIlu,):yoT{%ѕZI#ժvՑ*dlzRF6EnLxYݼֆRe`zVlHdr拒џsFmqIhVEB^z(h){:ZDi(h@B(`aIdB)BRxbņJ$Az{)MIlrǵB)Ư&NVQfR;u먤Td R9hOv2t-9cJ6,W*jJrOFI5@) a@C ;PP)Cր֤AL4J(U؋J(z,  J.h@ !G&$ %B©D™,cS&+=RX))W&KkqwE!A-ajGFh6cQ 0sO`IdkZBXI8$`VLH%"AHcPyGZK+jE!Ƈ9y ^`*FuWkUh'!Ȕ*2uODv@!jzɁ&LWQb+4eIS9bnT0i4ZB04b3ft'VaƨzS<_!0,5PcDGj,51AWcCigCր@ B(4 p =IܗUqT# S &85H]*[4Q!cH!@C@)N)a8tnZ,E#@@5@o8,,c4 uJC[ tR@(n;fHLp8w (phđ@_1friW1M= i2 ŠLc_@"{dlTe)9MRfO9CC֢l#3Qa\ȾΗ== J@! (a@P@P@v;1WqZW4b: EaRY:5",F%&N( HE74ZJa4b%2qXB1)M"ZLͅ P(Z"Hp1PQ*L8@Ɩ!W桍zRPh@^)&r k';{]gXYܦMQ4U->X]J@CQ)4oNj̳,[v=)]GƠ>ZEؽ.iICnh  cVԀ֘ކ"kcXtZE6;@GJ.*iџ<}kD̤눹8w3q(37sLFY)@\BԬ(s"PUɐqTf ɸ)S( "WE)XRd,,ȜTD$YZARjԚh!j.;j.u;u Wu . ֋E-Enaw{p8p\vu+.J..QEE$hrɆZ.O `..Fhj s']ΣXК[_:P.J63zQك8cdbsVb,SM${P?SN'd|m=ēWkRr1 J=P\) KQN(9,? q1HcbAg$*Q(n@?#P"յ9,ʥ1bgnylUS !sH{ۢLĚRi0%{3CNU+'cdJ2a/u"ތp;SlV/A, p:{ʷFr*և)֕VRJM"RP( P@ (A@P@lȮͰ1E9SڑIU4Ĩ HH%e(M!HbE- C@1Zb.!SǦ&FyI4CDdU`&R-BfElzC#b'ARC0 qR0j%K]g%ukFe2%ar:Rҹv#-+@4 m$iBFF*4i[7JLZgDKr* ) p@ dȢ*OGH:܌Z)gM&37GL{SDO36h"Wڝ؅=hFc+pU D2E%Zdvf!CQHw‘HiԲ uf\ԳX*c ⤱W hX]\,XBha3J`asNf4;hX3G0XawSG0X3Kv4s99\aw|`G0X79`4s4 w BacOÒawUNHa}j;ٙp~k Kqp|p$:|#--GW#} $z$h FWXpd>R!x6#֥Is! IcɁ21! ":BW$y.$56ceY fe-i(P@P@P@(E=C]W8E1\, ڝ*W*Xp"(Qi2Q*C$#(Hc P@4)i&( e;,QqXFN14p eD.OKe@ƗLWRP4X5 %8POvšK9Mb\urf &̒#2c+1rF!7@.`@XU94 ݺ`~9;kȤHՄ`Vl"5 Ҡ1H?J0)M6+w+XQ2V4WdCC S%A )UcsEDҙDe(")P!¨R%S} M1{ԕ+;q߭KENRU(\0HcL v9洊23s[t8+.BjKEgb)GދaV4s@X#LFNEޓe$h8Ee"tRPH4JE*R R2+XH͑0MjDDS!)Xi&!,F3(e晛C 1<LV$C[T]SH# `EG0l@@&D¥\TD]jZ-2JE"JM@RjDl-1TX)P@P@P@P@P@P@(ӰQ\ ]dßSZYB 1ў6m-WeʨofhVҊN{ ϗYIDZilU6 V 4[ h+qi7aIE!q/c@LJ$E,:F19RIX} 184v0Xq:SDmr{2>2e0DP1T4(()T((bH( @P@ :1Ra p,8 P) xZ.11HC(HcPC@&!412YbC!dY樛#(ɠ~i&2n*(B^ͩi8h2u5%HdR$Kft*9&NJ&ճ%Y2H,8kqMz9z&YS1b ՅrGEC-# !PfhiTi05IWQ+X)" 6FG4A#`#)2=L_ w^.KS0 EÃS=_j=ex=@\͝*Z..()yL=(IҀuM ֘Ì  (a=)Ơ1jKL֑i2ұi-22(Ǫ!xR3lD\k6:c#ZPsXnmO,Ri40`!"&LLcuI^fšhw.*,yVd.M615FzHٳ@i " aAV$d8W&āM Eɰ`0f41)R)-F‘i)2ZEKE\n*F% (h4P),H i"hbbM!6^-(Cyܪ-@ 4c$J͸r*Jւ F9Jchc0E;fF?Hrئ+h=Q8ɺ&cؠ$ Rc411a@WjvܢTVN-ڑ4P@ ( (E0٭LFSN¸HaZqWX..V-Ƈ¸٢qCR@04+,+,} Q`zvdm%;0;؄S%ep ɫG4ޥvl; f04faaAVƒA64@ @4 i26Z#"W N¹"}(pB;S 1=haXQI$Z6(*k5fjE(Ajqjaj`7};iz,P¹L9HR0%晚ԡ#֋(=i=&.K3ޙ<^u M!i4 i4 4j h)Р&"Xpjw+l.aas@!4 "5&Ri aQR)"„ ԬQjըjvr 俥O 嶐xC}jQ{DFѕf4=h -@&Hv&3@XLH4f`,,4+ V Hb4[<#.8gRQDzN踹EP3.Z.>QEQڷPf*.ia(W XJ"+Ҹ EE+I#4_qWO)+FTv+ȇӊh"IZ&a80"QrͶQvgGf@j^ed#4AN84Ʌ!)˜ "V]H"2-c%G¶RaMDǃdbaS&Hz& HZaD~/@sJ"ߌN%ơFEETapZdܑWڝ*f(Zd] #aAia@4 zu@MCIcIr@X7 KQqnzCre9noY0FE&Z.ҡH) zHRPH`F˜0!@Qi+Q\!kc5H̪f XH4Kذ:)V&6EaRQ aHb@hi 4.h 01@*FFbm'1wVf%h0/${nSu yeF R1#l@!S'qPRВ94L2H)pNM70I(\7Nj&h4R`Qp @EP (P`f w@!@Nk(>4 vCfp,.p Za7 A`Eu .}-@XMA`0fffh(bf4f4a`@XPiÁV n mcW,zpd/57.ĊH@(!sVfe YэrO j8ٔcF&ZDGEQA,Fiiࢁ\] Nȩh3+jlj1EHLDžMǨ&<A7" aAbP0BE 85 -EʰI4&i\v pdpRZ2TԷRET2EH@ǩ2@iH MPB; S@2ZDf#|k˭ɒaw4G<ҰsIy>R]BO4XǦ M.Qa֎Qhz:=*qG?{)HEm}kZD+pÌPtD%z.ib};HG"fm9Z1)3[E @vilR٬QY55#4(E41OA9F5  1@P@ ^Ph7]gP((s@ 3@4fh4f 3@h4,&yu,&h f; @&huas@XPhi=M13oAs֦кhcW+;I1 @'5D4c13.cZ͙9,El9]D/HWn5,.[iq(dS%@Xr Hq@1\fi hP@ j D-֓- =i JB C@Ĥ@ (b#$q֘tP+2zT4SBfmۀ kc6cO'y[ݏMK459de+qJv $+Ǭ;:Ұ4=iWN=iXw&X./Jøǔc4r'Uljld`M>0>jlЬ4f(H2$9TQ؄LýUحrqVE{F6NsEɳ.-+zqُoi\vdglJVf V9:?$s #cP5'ʎjBI5r9r͞:K0= #S^@sLɧ=j3lʺ|皳36W(f fr5"⊮k93dDk&PRqqWaOrP@ @%&h (h(@ (s5yf 3@hff,,44f  h,v +h4`@X7P p `@XMԂnv`@!j@&hX3Eƒ@-XK4t6\&;zA\ j@H1SHDdGH[bS\#8aRPԆ)lwzӰa h+,tО%EtE5S5FcR)5",r16H)؞aE )Eqڂ% Piw4؄!hi4(LP‸P)"③Z+3@%PJ$ hv>,EM $6RcZEəYQQ]hdB늒 "HޘjJ.=铨}zE!~=hƛOEɱN}h'޴ÖV'NZ1naM܍8Ⱃ;jp56DfHkg7ݓJ6lRdjLMR"cHbd13``i\v%M3Jޭ,fCU'Kب?yjT1YЁT+KSDsr UyfC5#D 3JŹXyv'HPZNyl &e H Zh V6LcZe@‹ S@ @րP`-1 H@PkⰙ,,,&h4u``a7P;h ދu hX7Pnpna7P un,&u pnn qXR֋(Gnv uaA+"dH M`䎇M_(#7"5Jm'ڡH9WƗa\Pԁ"2Ys#n섚E!Hs@ZɐfhAAIJE$B2@Ɛ =i“@Xa4ab)5R(2d$sRP )SPULEaWM8[ULE2VF} s3sM"6-ZdLqHfi(F>QwZ.p@XpɦH@"zU"%.(՘;-$Tn&ʧ$hā藐d(7PrJU$&[1*Hù9v9/NƠ"I44\i 1M1H,!4\v4\ `lBdIpG$֥jp4 iڝNOzs" 4IX˙xVx>yg\'%rhňX<qRѼ* ͣt2a@`+hX  \Q`,  0 B)P(Outu n,&7P @X7Pwu0n,X3EW&4\,a3EM!7 .p`Env-E`J`En`-En㰛XBԮ;h a`r)H 2$SLHL%x j3h͈ܲy.dX.G65+duHxaC"l)H+wS$[Euj_B<44(ib!pI9%mc$T@wpi\Apq 8$S3h @1ƈ-!;4H=)F0"-"##% @€ QLZ]\*:)| ړCL,phHm$VJv$G4]d&- qHjM!aL26Ho4 rLpCUXNJb 4ER"e"Ͷ<aG7N GtK+6hsHƳqL &̫T9c:ճ%gZTyS!t2'hhRRCM IZ&sN%zHLN֘&񎹥bc Q3 *֩7ܞ9xfR:"ڰ2('bdTk倎&)JC (JhBL` 1 H`h@i vjF%(  Ƒ@˙na`E.4\,q3֝gޕXMԇ`h@X7Pu j`H,u . @XBԇ`(XB\v \,!jW L,h-EIqLҸh4\A.1Aq ;jw%Ejw%EjhzdJL-?V]p?Z\]nO VdKn — !#RU &&'4 z!4d^%0sM=K185 2PuHFE YEIF3LWs ԋHIH(~(@5h&óLV` Mi a!q-"F((Z`9h~`MZ06 Jf9 "4XHcR) "W"uZdLZde)X! ` i..1NqE K(ܕ_=\ai&:H޵ae#&+&h;u 0+LCf]!Mmv3$LԖ-"!t4R!xJũ:V4LLmIЉb;&fj9jdLNN%ީCC..R)"eVX$^M&oF V,r`KqERf X#0E&ReY-eI!"JDRX)\ڨBRR;f(z 2l `6jC (P13@h( Q`R4! aPa2(X7 a7 P u nq3Ef5Aa p p4\4\4ffҍ``W/p0&E(U \sNiSL"$SA KDh^48=(踹G+@!jIv€4d#4VR5qH(\)F-'rd5 \!I$QYjXWsHR-"&=}*nZC7`ҹVEbDn*!`H,,-%.# -+1I+AW@Š-`< /C!HŒ5D\xlh =h$C@"\BX.0+0Eac+aZ ´(!C@I~hr{#HݱrDJWF0+ P!eM7 ZETџ"H5ɳ -"#eRdlLjD.^:V4R"dZT+U!68p($SDѽ4q,%Z1IӹhXc1; j Dl3Ai2RjC6iXX،Pg$YG2h~r($c D.ei @RѢddT @bP昂 `z0h#c1 P1š&C*C*w hXBi\4\4\413E3E3E3@h3@if p p W\ `IZ"I$$xU=Q[R)W6 C ( ((I5DH-)CDhzdؑZ ށXp4a+ Xvias@(E#}nÌyd()*( 5M"e4PFwoj,RLyM9<sB@jw)yfIRkh[-!B.$F n$pX=j1jd7q7qhM;q\zP_3@e4>vC93C7D,jMQ Z""6a@ i2dj'^*np)3H+`/hAh9ETt˱'!1K"14Q!P sjsTP0j L0-0ȤP-rX(DIbF25#ޅYƁ2C+ȹRfRʮ>բg,b2(P‚#aHȘR-2'L"r&%a,48qLDi zHb4@P1@Rɦ kHi2RjDf>zTص 1ҝ0K!MKE\n) ( ,,❄&)Xa@ջ hh`=M2Y<}ER3B\aE)P@Ph@ @P@P@PP@ @%-P@ (sLrdH4DHA6 1Xp4a!Xpjb)d.uVi‘H" Dl)HbLcJc b}Xw-1\1@9i dH 4 ibP0a@H@q SƲ)2'QJŦBKE0RW€PL V+P09wDK'Ϯc(@ @P@-P@(h ;P@ @P@P@P@ wp 8`9MQ$rl9ZMN=Z6 2G@hb,EҩHdJa4E)f*SRlhԔ0)E!aZ 4֙,zULD1A x;LP@ "4&FHƕ悮>14CeR1bf@1LQWgAa&- ,C@ @(J`A4yQbh͞>Vf2p5㒳*8DMRZEidN酇DьT,Z'FRHbaKE1MҭTErjAHR"j CZE 4P P;"(PMRLCH @XBi!(4)Rbb2'R!n!֤%h\ZJ K€SB&QTeqV: ) J^Pހ@@P@PP@ @PP@P@ (@S!SA6TMrZ 2l88b cKEHH52,8bf )(H&'\ԳDW~&"%"VQaLR(ЛdҨHEH@Sb"41&7o4i ICC_PROFILElcms@mntrRGB XYZ  acspAPPL-lcms desc @cprt`6wtptchad,rXYZbXYZgXYZrTRC gTRC bTRC chrm4$dmndX$dmdd|$mluc enUS$GIMP built-in sRGBmluc enUSPublic DomainXYZ -sf32 B%nXYZ o8XYZ $XYZ bparaff Y [chrmT|L&g\mluc enUSGIMPmluc enUSsRGBC     C     ޳%%Z6kw=Z軍 F)cm !Q*&.rky[ K,%C:LL j[Ji$BY,-FMάieU8-c  ,DE RJ- ,DRBPKcdAlYz(4!,JCKl@3YAB YILfHVzhYhh[IYI{ζP X2j[@@  !sDsLuϝmUE-+6e6 %RHBTHfXSzj)PJͤe%$[vYt  -cԻkRhW @ H0( (@{*c8͘V7VKbƔZX(͙d Ի(Ll R T"dT$dA\WSUPR$%DK%ssd[w7;nۛA`A*T cYo;"@*H(٩j]Dnye77JkYP e5-Kz˔KFu5[-3flPĖD!,,wTQT3f.ec#K}s˩iaV)!P \u:;$YU @p5-[/FfLkݖ.sb04.-YJ*^РVS9 ("@ d@3s sޚEZYjX,Vn3d!MnkIfA@@$Jq8kRP@:*J ɠ$*\ƈTIc fSs}s*3g6y-j:Mẗ́j]o6ЉHrxBղAb*X $HIRMl*٩b%DT)WSZs]%)@@)  Xw<7w1 )!@( Weayj͘Nvre-Ѵ*ѮZ%fW=rU Jj&X JU՗StD MeUr(DK!NW/NŘ79xoYK(]sSZ+)Ҍnqs2"J e.mQJ9fĴVf3*HnlU5;ܻJ  F@lJ !dp =!JwF=3jn74IXW4.y75u4B5(99kQ%@4( nFzjZXPE  2.,5%C"ЄNwo/| dCVv^P]h1PFt9["beaD  * gIEQD)fQ,3EԆ \:)9e%P!E i,/=3_4R & k~q鞛OV;΢b_7lmkznjuR EJW$DYQ`bLkr,^sU7pU~ur=5#盚Z7efy^T5~ЫV%r)VV-ޥ)Xsk9е *S!h*f (6-m|Kb(()AK$Kbdbb3P ~ygdRfk[t̺4ӡ׍JLJfu5uw/-O65SVtc^ޥ-Oˌs[4Q͑.GIBW-rk2ʑL,P,R4B@ -ΓVt_W>( \Z @ P̤%D&ZqFm1\<NjXbk9uf*t6zee'ۙgye-k545I:U2Sw:Ofumj mtczosZ!1f,ffywŞs'}sntZws[鞜ssWsdX.:tάbz'YbQs;Ԣn|=zNɛ9ٛ2fJKwלfYd`@)V@U(5Fuf}ޗSVZjZ ( fSPZJ%De1f, g5Mt=y.qg+RK^q:[,nߝWdvT.=t禛gXrK3f."jkKf-^ZLJ2dW>kyЖr͛56`; ԊUg8aM( [ fSI:Yw.RдPJrءh @!(db`dsL.sUx\sYfխ2:G[+3,\wsy=g;Ǥe=bil\wyf9d*zg|w)ԶZ b fk+qݜS\`U[ \Mel Tu:ƗIKqV@ fby3ٞ3r[4%sTק=>V^~KC]w[<1ׅfLYEJ\Mىbҙ^H i7eHt,mw.5Lㆹ\E76_]pnI,\ Ȣv\MPėQ5s5LY -ȋRN]f5kE :flPQ(͛χ,4vηYםu_^^-cߎU5^řE)5sjȍ[S%" X2UH@ImDsߎۗ9^~; qa*$Z֦;\uKl,b\&Q̵a͋eKP4,ѹzIHiTR̢Vqg-s:u/+1q|snʾy|F\2&ġ.zH\YPk%:پ)TX5sH Hg6ҙ)19띌;4\Wk%oY:v4ё2bk-fTS&[WF$@ܺ6k\QTP"JHS ff66sԱ-Nu>Chp:;Ͳj!HQf j,="קG5d^bلog[q\u/H\7=qs>YJi*KdUWr՗8TJUܗKE@R% Kr֦tκK%E!aRKP@rJU뛡.,gXrLIfGt^[<}8ӎׄ3S嬕hȒ-$ZvkMM䩩Nҗì%8ޗP%??Jўs],{vg+mЩlE-i5s2Vt5f<۞}I-՝ #ͼ|㔶5f|jXJ2D s\53`XTֳ5sg=s$sfԱiAD.H;uλMn[P@ TfjDf6JԼ5 ^lL/FpN{1o>Ö|~^|ӏXP!q͙ TM( nkjy[.52D6 e6jQAK3fS6u]K~me{Sc\˼n9\eMvͱfqLRԋZKjImXw;58jn_^z|~zv!i]9"lLOBq^D/kyَ}9j|^~3E$ Sv},fwO? K5]ӎs2doy-O bU7.UNJPSE),RQY*j|~x|6|~nR5}sxٔ?!LB &L+%%UH.}VV잌:uyr͜& C2͗㧣;MƳ;n];KVHfk R/N_:3CZ϶_N:2͘1M*\TeiMݚ֫iQG|e6`<:gӛY+О|3g6e{9֥k}gžq}9xp/9ul*CKݝsC˼|˜Лlfiֳֹs(JUѪ}"fN]sO?~|5o[|)̈́Ik=c%ȡe6C;)\KJsd9|8%X@R()TG $Yq\/=>/DsN$5;5e?|J.'0[:t5DEE"sT,禱dՙvϞu5V6`!s2A*@hu[OR}oyerdϫ:jZywˮGwA &9YT (!A2 eV.s`Ժsc盜㬰}O&7=:gDŽ)m}z3$/Mks5B %TEi2Vjk6yr);MK]&V-Jb]VKebs3\,35עg]%͜X7}tTQ-AaI^1E0PE,!VVW1^=su5.uS|>3|sR\8rcũʭPAlKeTJ l:o=$$W+&礍؋d]3w w:ũ!Q`YՏtzgK,g_LRi}S[q|}篫r@3^;:ꔀo|h I*'u*4"P ͑1zRvS:w-gO6tjZNz=bIEXq-fpMJf79R4IeYJB JVB-HЩS*4D)5'|軚ю&@P(<<{:-Ad(!`( /.P]E(  ٍcfҵKzMZXu<ѝbb6K.׾zDg rvN֚Д9kmr̀AjB IaA iT,*9E^H)JX^(>v;f+fO6lRN:ZFt )Yٛnk騢tfǛ|1sP 5ՎsY\ıK ֳR Qq.f4A@Q*% K"Udc^|9.sYك`7nk=CWot@ dSWs]&.涺QT%!,fnkuWFJXxy܎鹮6pLAmM3`zrx\rs FVݚJXEs5k  "Ī*Kg:+XM.iSn^kf_u>}rrXJ@hɠ }yVZjkrwԺ,IYg6tFS6xroK%:뼾t뛠Ys W5-JT.Wo&H*Ġ!@ dT* Bk&:[gZZ@h KHzIJ! }ޜ litKK3QYXYE7-ŞWTRSKK- !SIs r2̰ %4ՖY˕Yα5r԰)yu' gff4IiJeTse'hZ3@ɣ&՟ (ZjZXJIYIYel5-A:;||ˉPJ_Foizf*Udr̲$13sJnnyo2YlH:svg|5,ULBM/`f (ʿ$XҖ(5K dBZP<}9xu˜97*AҾ}]suR\YY"f,dHVQrk&5Ԛ% on\ӶoYFwFcQPѣK.Չ+Ͼ~}b3@CDRH`@A$-=g?5e5EBmtν|i@ş;LIk"Sy,y%jBhF泶uZ3Zw)MDYs` Jh" E(QP!eYe[k:-5sβ5-r Z55osYlrh AJMfZB-n}zΥ;b\4Y UϷfsӗ Y3Yk!Iw;3/9ӜZ=n-^s\L"%U sdZ,):*E( @ARD\YJ%l6T@7ZZ͜/>knK@՚A,aRƙ,J\"-\;\zV6!NZ̹\dff7f7rYY.ݚ1wjK,- wsm J@z\g@@X-M3t 4'E%B˶丛e̴[,+"-.:\me43͓~}(Pue-C6P\T&WR*oeX[4݂Ͽ| vsXPa\΁)*4[AQIf.2d"ɬKK dѓ@VsHndX fm*ʄԩ BbYV-  F]&K%7˔%ZhԔMK%0$HfkP 2!Rf@) @`AjEA dE$%4ղKd4no76k:YeK2q8k~~E_݋7"'ɲ,H6YeYe^,_EWฎ%~qYLR,n,"YeYeYYe^Z͖_e,QE~ CWe&)ŖYfHO/ y,XK(q!YeXcBhkP*ƿ1"lB%!+ˉJ%QE+-eFmn\I"1D? +sP.R^xP\_*eZ?cWc=WxRBFʒv6'YyaWeb'^%֕0A\M۱dDz__a pkYx,O]/c'F-:<2,Tݍ/ηnW&Hŗ|o,LOFm=]SOg--v1ţ"KD4:"(eYbbb)8u,"1jir&B?6B{Hj)a\#űN"fH,Ģ_姩WKht<&B+y+ XYetOjqe/xhh'dt=O0Ȭ.f2e7&'Jc4W:+4QmF$I 8<6)lqc6)QCE-!1(11j4|Z&ɼaph,Z/OV(hk'- % Kf$@\Se^,R!2jV(\챱:#245NT-Cd.+*6K $l6Fbĕ] dםҊ+\5<(Q]t2TŨ|o7e0[4|g|GE3K\T֤ 拷(c&G(mJewQEV^$?ɲ/zTQC\ut5M(=FKEŬ#PNDb6jk)Ta9OQ"g#u^(hO-VPoYcץeYbeQE#XcBb'h:ik$4m] VQ5%EJ9s/vKY|Gz7"f1z4W ,E8hjEؠ ՛MINͬxn>F|Y}mƯidG)/xN|+U xJ)7q!! q} Z6ŦlD(Xe/bŚҷ∮-1PIyӁ@?-ޣIX dgu2>^"1LOo"eģN%bƳXQE+YLO$B'x 蜛'CcORki뤧ϑD懯"o 'Eá+?زon,Y|/-4QCEYb&2ŖXn,!|h͔Ey;>q>'#qGƊ!KIzJzԛoGYE.MY\D5CYhp(lLLYhhEz ^fcXlc戢։?C& WW(2^)n Kr<L{^婢J/74uE+%ŬQkȼX}څ' $/kKz|}7^+}hL@ԉ<8"pq4et|nFOYRܳ5/#Uj4i2R7pw8mDM=[ŖYxJ钋EYyiiY|ލŖYeYeUXP4jZ%טUeE gNS96i[`MJ Qk)-f(8+|,%cZDC4W e5i#YD||||o7qe_R᪼I rFƢ(DXJ%Y'CvQX.RR5ǡi:)בG$-Y-IHosޒNeZxBݤYC Ɗ+)[.7,qo7ϐ o7Uhhq+"4,3R%Mf$O Yikhjx9T?/l֡;ę!1<9ѫ-DzY?1#SO7y'B͚FiDaoNV,eEm薸 n>ǥdŠ,YxB^',V~."ײZe QVKNxHm#jȆh#BFҊ(m6R%> hi҇I,&CȢJOH/MV8 VQ5B}2x} 7YbfaFDEAeHrCԱzp]TQEbFiiHY 脰ѩcT'.;d,+Yg= (2D0& shrEV,r'嬬顡Q23ӯY2(heD%OMyESCȅe $cfGܨӏ f<͢,HFiEb =3\+66<ēPXU+ 5+DT/"^;&7_^҄(X\_yE qb/2JVxppZZ&u0n#/6^eb,Yb$𢲸J$ؘVm+$٥L/Xa:4n,GHXcB!,eIn5LlEXmp(.M z(&K㸾[8=ijiNͅPl,e>F%,$(D\(hhIFT鼣h!&7mGG]v55vYeXxJĮn.h=TYeBd7ѧ?KW T'$#E[mOۗ?񩥳lcD~4J#QEy,H|/\s2,2F'wc[Gy-k,|.,l-YyqyaWUWh)v"O 48y69y#;ŗj~,[q\/ō"J(Dhb Z"ԕb~IE7QeϐS/H?+Y-J>Q^zYe˓V(JV/0 +5^՗8jYŪ}mN{nO'Dxj?;ݿǮKHQ CCEQXy,:4m5Bt)^l"˼} t9ؗHlD&Y-Jk]597뭚/ɡW:Qqdf,&_*KX ?fQX]x!Q(f]  Jۉ(^K6_ pq̿]s&x(Iz!PKHhj^/j%|$1B !u1V_,GؾQJdFXox,q)x| /ZF[^:ӲQʑy]2_e,|X}^x,Z)&)x?l^,L'\ʅ+%U/7qKLOe"Lϲzv8V,LWQLj.ɒe_+Jj@k \ ;,Z'ɱYetm6J6Mbf(l6Q\LRÍX}[y,n7×(Ff7i84$QEbaq>!iIi-ŮK ECV,k,qYe,Ye%Qq㺍/ފ#im(G`m$#Š(Y=*RDheYeY.4IQ,\2hdH5dƫD DMQ^HcDk'Je5/DWD.Ɗ+ցwHc'>$4W }?ldDEq>YeYxc/4mxٻ ]2_]zH} bXh,Yfq|oėy d1ETo7*+Xcb&_}DH}c͋45kC(ōr,5z%,cWόqD>+~E44>hD_QEzK%͢H}U.4>o K,K~Ye+/Bd/".?EHBzVK$d.leX7cYfȿer) 0!1@PAQ`"a2qp?)~'}:\R'؇No{'h!BB3B|^Op4O)JR:]V&OzoR┥:RP'h!t./ !BmkܿJL4B&ix! rxធ|I|OBx\3ӜPh {';5DZ2f&f'2|BLjJRy^(k_ j!56ob\W~%?B3r扝Xzt(zgjDO7yblSbSReDoc| ~DΨQbF6\TZtz7ko=0W~EYE|唹[Y}A8y/x/#V- vkԄB uآe=b4LA#<4vgz)ρؖ^.5ne2GQntJX8LLi}]^{: 1iHjz/It|%jﲔ2 /+z!2'$֧UwQ'IΖt3J ,yxZְ8Mȋ;ǭWۛ-E(\ӑo 3v'J-V )K mәpŽl{(7IN9.t,dXgb$Mo[Y}|O/xҸZ/]/b݄/ >iq{;>=??~zB~.&/ꧪwӨ?'R{Pܽ& 0`@P1p!AQqa?_rDUwc׼ߨ\=@4e?Gc8\q _ƪaq .yyz@h?lY*z_5:|N{Ou"Ӝ}i7(7vGgQjBhTZAkLQEnF{;aܨQECOVC عQW|ih'7 8N~1EQn< ?cltPy*(5E[(e}"(X,Sc857xa>ڛᐠqɳ T8"Z3`O1ϴq#Hq\5!j8XPo MA@8c=Tq|֭>8yue018QEq-!1p 0a@Q`Aq2P"?aJbK:>%Jf 9TrP+: E%­52TbMe=X%6YWg]0L)6ӈ|2N{faf;qO>aU܂sd8˒GJüܩ\vΥ|v 8؆b+6 Iq=EN#< `]3 w7IM3Z\^ДEB_ FTeɼDF ' H$ev&_$~L~N+kMNe+4:A$YTU?"fy; ?{kUMfZl|Y%٦c%:aˌ-=x +\CFP}qLc^QDs' aB#pɞD'p冣cxc 6R,SxpA!JR[yR Y!x&#^OV>/,/*c.a턄&/1 A&M|o$^ A <|}و&a1WACXr/B&^\az(-XBÛBs B t44 2&0Q|Y d'% .1J'bq\_cE-*N5&!V\A5 00$,!:!1112g/1BTǞ}Q .qx$2jTKGOCП-^ˁaLh 'P 12l-Oƃ(xLX¼p|18B+@%leR E} aA21Aa p\ !pEr! ^IxWhw4M{'^bꆣ=-ɈB,\ 4CЂ!8Scpc \ ʔ|X|%_Hb/%2F΀7cB{I>D3&!ԌjQ2aA<Ǎq b8|nj>b ҔɌz?)x]w 0RR_c/_D!!dE0AoAZzD!0hp,444APPW iJ67xwx_ЂsR._/c\(zSD %tx't؟c}DLbPAdBkCCY1/etgۆlz B.W2|Ɔ.R.]k1WoR*= {lB~O= Tɵ@:N@a !1 B c|A=gyKǐ)EB6R/W/cCCE4rLGgݗ=T"|b5@!1;;jb5H=5 F^+T?1(Lyc>2)gD 5 cд&? 5[5)XA Y(_ /3!1kRc7XB cd%{&_& OLoCOPXs,;RqP ŋq˗.^b'o#L{qLu,]Lot q\ćl&ib c֎Y$A n1|)J^ &&@rn!2l CVpE;CgQD= Z_\^N,q jbv XHE C\TkaRQD.!JRqŷBlƆA~/ɐ{DVN~ە ?G/&w;c DC bpW# havC0Bvt! !./>3!1DzCGeM|~Ok,t&9t6 QLJ HH4iVq]. UUfv:X!쐶j.,^(BBBY&Rt0P ؖ. |C(@YNghgd9&Qc"؄$=Wι1>n~Gӡʳn?}&>^bq^Čzb}S{/% 10 LXeA0 (? &,Cf %+LE'J/eX|LLOtƔ04&-spc^ғO իϳX{oXb-e5C%?G|e 'A8,DA!B ! TEa1j|PLX\'C,ǯ B=q1tYFhw PwR~swX:=,1{: o.D؊k;En `C{/_;ЕGvAbQѮ&Oc\aC!= <0be)J]5b,[7p\b'XϘC1v!MaWݗGthSR9"i ;Loh-;UОAqXe(B7y!1\\wW!5gA?x.,zVMU(YCTt{!9txgtnp3.D{J \ d_t?gj cu OLR ˞zrɌNϱFQSX$ eC XP")|/PHce ݭՁJS} ;^a 네8PO?qG@dC}(gQhz*{S{-Pa'F.gPݝ&uNa1]y ŰM~q2L?zhk!ߎE~pO,`5 dĬ?&TxAѠLOq 豹BM1ut|cdƄTïS8.!> /QvB3 h%W >~#C˅F GLhꏐ"46yEُߏ3)J2bx(hRL\Sk7tu ^?y>A{"Ja:;w0 ؋O=!vZB RA΢pAb>~!B'i$5=?e~e$0j;^LKCC۞2qƦ./cI]CW~D~2~O# cw=;i4.A7RSPQ44t: E [= ?^x zJ`ЏuO Zuk>b$(>Q/eb+ bN?G#?v~Nʓut3_zD\ H!{$u4wY=Ƣ=/\o 9S A#?л xYN .{=jnć%DYt^w]?}&G{>_; 1ظzŃ {K)Dqsgltnh.3Z& BStPyBkA )yBs4LaQN r=wMD>I$_?\g_N7LBǴwf= ?XbA(&1> r{cC>M\ p2vǦXbeXԏбO$DbU 7bQtQB@~ k+_L]$P]VNa#!NYK.MkNL{)&?:$ H¸: ,ic мi)C,ql= :bBO4=챝%`~u'LO)JRCFHBeD=ം\ Qex"* ƇI~/C HT)/:p1(Abc1K^̢|:Ԕ!pj0>Ђg|XcšdvZzPL}$}@:.q{x؞0.GIt |܃blǏJRBXc%Oh£E<L lv^J4| б{8J'a'‡Ң cO&-;}X5yv|&DQlR9bkBM$M&R 1]D(1>ƫ~{Khߠ)JR)Kb(Oė -,\]EiEBǁC0H LY=!L=7j xz('Z^_~a~a0*H9L!vX:?( rzf!<rbÉhN111,D!LA o.&R)z)J^GE(C%))нK2D~E=*(c*Rw& bth |Bv=BƆhALLLX&BŬ$(>? W A!rdƇiq2t:1RLLj2Ʒ] _E>!F?l}v)z:(4B)>h7F,HA!!Bd֡2Y8! –k\\B-~,#2k%e K׿'}^&O7bG(4N %g-$<6](J--XƆ/xW]Nxo=Bl\ >ŏO6rd.>,\z㰃BR5c┸)JRxƱk^M;grbӳLйOdƆ_^ )Gg]cABB2BǴ()KhC_Č E d$C!Dn~iO=)|JK ˭hhh^ F7/cC'dMOtҌ!24-D!]ct O?^/:R)KxR CD!0[bo ../1 r|~H 8؜:xYD'G084(^]N R`4S\)JR)JR(1l| CD 8^"ʗbRD8OedOeE0pւe)J' [TR.R/Kד  &L)JQ h]RF[W಑br:u' Q1F‰,xj.>@p'TFᲔxXZ%;γ+k"\')x1WTeE .bQ%,:(LqR)v}y0Q|,EBo c|.Qp[K)ro/8k {"B~p5)0kV)Kr\JKLaccccc!8!d#˩O.x) Art7Bx&)uQ{.@{x= )v'D&,ZLld'̄ą\xRگ#Bt Bb^lJ%Ď~VAsk.^+4R.)t)JR/ 1HHM&Bhk||j\\F}"P)JRA"蘴͖}>.\)JR)K.ѱ𺄡(Mib\&ܣ7“)e۬lo)b EJ6QrM1? .\)JR)J})JRJRF?!>hIK|hgͼ.} /GQo \cmǏ6L/|CQ)Nk)ՉpbkϙJ\)KRF!.RT66=Ht<(Dh3K/Î%.=CՋ)r)JR˭RQBb1lo1B 5>K1 -zFK=Q13~=:.P3QJR*R)JR.HO"-`cֲpXA.6}45aDֶ1@ŚK^K!8R)JR)JR.2\Lh.DHL3"cŽ^ǐc! FRCCCC\PLBC,luH׆N+r)JRe$)J^Kn,O)ux$%1p1|4N e.5rV&5Qch.ŢhLOЃDNIP6RJR/S.QpO-˔Oɓ1dшa11ȸ=51 ,!k'")J_.W/*QGO{5!8ND.ńi8{455cD4M\Y1.1=Bx#zJRo$RgsK&Ad#P\ABPa cCCC&2bD"_)k =?|'~M#2Awd< k ǭ'\e|-z.31kZˉ5p\!bx-!b1ϚiJ\no/4<|Ǐ>c:^5ƉLˏ[/xqBRb xX\|/?J?.^>kBчr(q=~b.Vx>}\.1M={vnV\lcZK-񬺘6 V!qaR1KQ2cǏLueKYJ_b 0\LLLXc_P!<|_Ћʉ)KBbOF^&y-bbe/=c5?"KV!㉔c"/ɍ^1 {٧-oIo=_C{^E%6m$NKm׎;i2=j{}%ߎ<>}D'<(Vqi2Mf#mm? eIoۤuLHo\0CejClܒ7 wY,*?imm4߻mkϾsm^Уw!S?m%-~i-vZq'k+H/(~MvQ^Fꮶl-XN_> ?g lWI$ ˰KXi˾i2iEQmX ߻{}AQ$KHY\n%˦ rV^Iem ߿ym7mö&#yV$2| y6$m&8M}ڕo[o4e&wcwXy4p>'^ۓZZiͶ}K9mO@WanfRmҐ?/' dف{mˇxgA05Yz{]a<ۇiSb;e*Ebݾ~{m{*ݓQ U7,\%1.k5$Koqg|@]:"fVLQDoZKdO,>̕$o[6TrXev\¹Ʋ7s8*nI$I%ܶw6;$҉=~&L4 kőc/)!>ʬo^O];$K<P]'oVћE@uGȖT7'%&mI&]Ep%#-meIƂWl͕\kQ~&zkݽ$Ib].W=W=>xř~(m<5-J5m$asM4emݮ]}%Œ"[InMMdC^H_R Ǟػ2qdJ!^R?=T@I|nBӞ2I_孵\CI@BA(‰cQ% 0q"[Ϭ4v=C/Xe)]WY\أke /R[N zsۻd_0l=*]|1M᭜OWL/)Ul4ռ;p/-ml^a W0?Pu]5eZ'<Tk{mwpmb #s' n?w0)z|t'gX;lJ-}>BiI"%v׳7i={w-oR'H='T?N ~h#'_]dܩfujٟayEy<@[3wT`K5‘,))x5 >ɣKm8$7Y5oe͵+> 3SjJݽcomȽ2gT+l\sUէ !`n)=pBhqٶMq$_of˝Vm O[T>LCz%\.ȜLY|Gyйk }jbmI$ YYU *K@{__񹲁M "ė4gkDmkEՀMє {uKes[h hӬ dr*Ϫ⣰WgƲI-mO/(N#%F$)&p `:-)*-"[mmm{Jh T};_ڥp̴΅)%rYhɢmm VLQ}2r iUi^#\Y6 D]&o eo7X-ϷY{P&U*`&%۴>'eYs,FO $oH_6Bc6ݻ s}@mۿs˿( |N?]k$|Q9V ;hl6u>M`EjtdZmW~2һ,߭a< ĵH/7v@Lٶs[@gn <xJ$(Z[{k7 [ԏDmmݣ!<e7{vYw3 gHYyKk&vkّD[&aYY ;SmAy}[h-^2MMDr >BI:'V},ImMnX&/s+o~y E%|fh.{oWq૒KYܤ̟m}y /}vr}ViݞP֢^# |ďDm}=3P!ymW#V'!QY m$]TP%[S=%'f8o b{mVj"{y4yC@_,͜Y(_{m$< wwoܰٲoޗm`5,1fo L' ulpan:JO猖ܭ?zaҺXIp1Km>߀ݧ8I2ˉ,n%瑷iHD6:D]%"m-ܑ`O}P˗NjJTDLG?l(I^(IJoAx(jGO3yE!aZT_Sn/tm=?r΃SmC{ 6m8N{Ze,_$?~ŪfauHoI#H>oʓ7V͐VDm/Z ~ЈsIAN\kI;bI$w_-bWv)?ZyJmVc=g?_5[,Noi%ȪRaqYHkmmmZ l[S$=X7})f)c4O^Iz !3{?m$%HɼZCs[6!oKH+W ,?tW}S^nBݶ=NI6%)n*C?mimi4OkR vooWm!O'PNCCxDu-8-͖{;%zQ_'ms ego7$^Z @;id_}aPؽs͊cxG%'G- Eo3Ouыu;"M#-/<_ )7MʹmgS:ߢ_+4 bigmko $V0V9oq$C7sf&@INiE%?Gdw&Oˤu# !10A@QqaP`?X(O\`yF1B_|ư˷! NHBBD&BXR"bAg\F)w&/5(>/ &JAv/nf4'8}&B})&!R/.!|XRR YEFnX(R)K_ZR)r{rkdM5z!2l s.x5d!>4)Dˏb|R)JR.QM񌘐hL[/_XЩq2Q5ɲ#F^)c)JR)J6Rx RyxB\Ok++Qy2_' D)rL/hQ Qbbe(&!_D^0*هP ޵e.@QqRqܙDƸBLE!LBKB&'Z!Aو.'K!10hhc?Z&$4=_!pLPf.)1?|WJ0ݍJŔ_&gޯ.}NSJCx5Ԯ aS"hrWf̅)G'O<.pxJDE}<VpQXˍ`Qō Ap/Q7J^]ѿzo'^be)J_\'c[&\e] bFM/Z 5͟F-&Nt.Q2(!J]>- b4'χ\Y!Cj/=Q$*n !!)J/x1"R R, OGbNj?v dLL6P}  N|b txRE.,1YDRf<\ B 0 VKb4%͌B (66$ eQJ nCb{iEHCX  Mgk,Q_B'B|NcЅj<;bL`:JxF'blEX,H]hkĆByFXB]v/Fbm$ItxCz1"t4Z%J N)4%Q*b2 U˞5+!B"& 6/p!>ha'& ct$  " d*pt5*&;d-2PLBD4$wi#I vщ rN*C؅QL!Lk*1N#bF!t6 z$3B'eCYC4?E< 10!܈N#6>ǣID_bFkzR JT\O X""?ъ!~& (L2 0/QsEGP~ X1*$"s&} t&^FbI 1cƄ,mx#t_J~2# O'&&^cHA"LX5t%rQ2R b .^_D> 5BdbHGE"(Mz5bS!le(萔6TMztwO1x5Q6X\h#: ME>/ N !qFy-Bk>WD@52B e24'D1!!^A1Q-x~gXGR , RѾln[A cc6x6N112ٳ& M6; ~kRk'D$,2xZB ] 6d˄U ֯ QXĄhJAdL*hG\4t)j&P w%pCH EŌ($?PkCS!A z ѐɉ(R A~ 2n BDBlx41`'Šp:gBLddM'H(흐LW yF4˭pg싉?a,R̈́9C5K!tRN稰HRЖ/RĬC~ cV#N薸κ*Up#>ơCd?za( c^#"=ѭB S1š!5DRBV.~+AXZ"&BkِE=a1!v4t:ё2!ڱ1ގI_ro"]5&A0C$mP~Y_Z$bN$&on0H#&QHD'/ttBgyN7/.h!px!jx%**4@'ɬYx6v$(~}D()[JQ ƛ흯xA R#}hth[L`[x. ]Ee)J^0Khŏ T?llhvBPkbA!'^L4/V+n߄ze%*Axz' ?&4! FIAaBw^pB˄ 0aAc:BI D!Qam؉bt*pM 4b] B_C"ƅ6؝\_Rb1c7G_KaBQ}乬JA )FǍT&A%gcDb{y5 !!b֠C& <IQZ#A2CHi '_P3rX8#BMHC4#aER D!> hbHA?Ot(܃%_sPHQP+ Єd'Kp9ҕ  o\Ce/)(!1=| 66LK111111 LѺ&Q11e> xǐ!2&Q1<ŨjDpn[6w۷Q#̬Kєam JR)Kܥ)KƗ(ź&B!NLLO[oh!!kyc ƉBK)JR.Rla"! )tٔlHBX ̸TN@ԝ)$ (hLdˍd kSOZ.-zJ^b!L!B؇a5xj5- ! B,be-A \G;## qZbbOsPl4r&ݳ(fBpBBb 6R L$$L%RB\a$L!2CM ыx FBA![! B &̄!B!%K=Ʃ#АիA!2l!BqshA!/m)YYY~ q&M!2'!1$E2RC B 5DcOPXed! B!B! ! $DF! .)E)x&.0XK!|.3X: (аB!2|)K!r,&y11k$Ίw<)>A\n  X')JR DDĮ?a8B!B \!?,&46(%"XЂs+RhNĈ1jBBBp|'ϢeR)JR)IB&BYnŌ\| ?Yr)JQN tuĘа=ccxJ tuu!L!D&zA1Xd1_2>AR)JQ\HH'(:vPĄA+qzL)r2!B(B^P5Ha [)J^ u{xc&'fhbv 6 foF> <ůpgd! !r!8Tb0> ?6ыňz !B|/qcB/9B!8 _~~ X1>)r߂/ܼLBf !B,!>O }V{t! D!r Ō|L__!tt<N-%q51sCŸ.'V.^x'ИxU}K^1v$Bg{ɏ!Sɓe~~pX ˆ;$%xГ.G<z{yz\?vhCb,^WJo>^ԥ.HN!xhx ,M~3DY}{x_bl_1>>LNT^:BXCJ]fJ'\,-_[ɬ03fL_21R!5xH'sZ6=w]P#,2}2bLO>Br¶B 2 1(1X,*˅]gtGnsϙp>,O~֞L6)rS#ob&Z+Cϝ̱nQ2v29.|٣z9Cp/焼)tBBG wN QYpM}աm)~T,Q1:>| Q6{5H!PИcW#Gpj%R=bhe1:AKDt4~k1n XjH*HmDX1TQQ:!CTCu&%Z\\Aty'lҗ ,Qv11221">oKR}= *q 4J/`C{CA;_#)xDLr.HXz>4D&D!:QGţ?mHcm㓑y*%9 1!x>h"SZ7G3I=Hm%cbD{Xd ^a=>FQLjB -(cհ''EX9^p}9EH!cTzHoUֈBYSWCXB^Dk 6yŞ򇉢LmSt>I[}/qJ*XcThL4r|(!=89(PL=)*?D߁ XE8~,< ̡M' R-d![!4!BHNņaC&axbIpOr_Gg8f\ '8m/pH6L|Kubu\\\&] CrVVSppB!Bkz&?pѐ|,QuopQ &%>0jCEQQb4K ǯ=>*\&'+It!3Ba kF{&x4LQe' \S #rU(5C]舨DkX+ G\BJpq(.Sn(/=0<*+4B$$pŧho-&Bo :\1,=ʧ#_E.&ee3bJ6R)KRlrTA,q.-+J&&&Qr6Op8LqhO B7Y,7?uf(hhh?hO/Z5Sk0NQ1%4Ba1Ǣۼ?OĸCD6SR>CjɊ?kރz'1u+T\5piB Go e(=ˏes)vBweL.LetD#XؐxD]uM|~f "e 1e!IG#!6e(˽wGxF$!w%D-(ȟjw]1 3J67$5 A,a2!;饯QpjPXlD!2LHZ)JRJR)DRXPՏHCbl)JRa;!4BeB`:'p$>~XBE(Be)ƌxYN &!)ִLOHA5)J\Bx.hb1"<%d ]K11y&'!;NJR7)JRJ^/5 ShC[:"=XޯdxlD˄ E pKR.ɇu͞)JQ4җF1Dsuxe. ׌z75Y|f!7D&\ntcCC'x9aI`+y)sqpJYf} })iCCD'BUr?G Bb!rX1аK,͡Bc>OQ5JץX2  k Z!bމ5!U\R?2tьhXX>L"!I,42bXA첗jyя)ޖPC.C.4BX& hkW-&iKϙh2c&Q<ҋ SzV">⌥)JR)KL]!1%13JsAj%1b◮BC.( b5pbm1 B&V!5vBj(qKOf_  BBo1<\'L5NQpcC N!B!BALWH~  B&&=6^8e[)J6=z>5Zquุy?s10BwL}跤gұ еO!~=}hcϹ0ǽ`K ({Rv,lXX}Wqc?R{&Կ^ew[nO KCB8!uccWSΪϛ>!:}zf +ygqxD15ЄrU&}ǿXHAz2Y{L1/ubǧN;ޯU4B ~UQJR(__{<8/D<)qq KU)v<|/ȱ󻎏q4d֔#=<"@%qw3\1M %A,.R@p=p `\gX^&b|. y cyIY DJ~ qܯQJOӕ1%JqFEY#;DCzAD[P* P+8"Q>A`, ;bTh* W q*%FG)R) Du,JA`"$"P~'(4:J>a.T̩\TOUTa+H\Ɏ& $GtFX2S@PÐ8 ⢌[:;<1"Ũn-EQ3AurنqqDJ*%DJT%(@&8,AͨyHvJJHŠ:$QgDbSN+|Jeb<|\SȘ<)5(çL_t(4Hŗ28|"[c/ܾ-|Q{jQc`z딳W o\x 6nJ.|Y Q'=`" qDbu? eq±B]YWbP끇SQQcHYqqn9= Rxy%le[eŶPO]>{e3$2Rpd*"-%ąL|s)Ǜ*\$ *{Gǐg# ".Q?iᯋ \u995+`@p4gLB*6$3Ѵm1|q%c0MlmG\wC dÁT[b J.m p h~cܡ33'7˿%Įj0@K"~c\: DpC*2K )d K9Jꞙ鏤TTKp !1GB\x-KASΑͧ("K??wbyKBiI56h0oAG/! eLJIuq]]F<#ӛ馣f j8˪b:{DaLqӁeèC:#L8DJU Yȇ;D1(.Pˏ 3:797 A2J-K~m05 |/ NW%.LiZX46-)v>ReK䂛 mW1[XվG'NN4LjCI5Kt7S >ʙ*HǢf&pPyqjURywɎCs r؃/i$+St4_op&mJb?ٟߘU:FX٨ )RöRCԢdʓCqhݲR)'@2y2~"艱sӅq8oz8^ (c H<i\N bfQ 0.nkƷf\TԡLDwk\ uKGQ x#lB;WrCnV(dɯBe0j9;X)¼Ql1ǹ $V \KYDbR*ԝ"\w}`1 u*H@ܰqH,Be0LLwDay,5ŶoCE*%N*o0͈uZEuO-o_ \n2/pl+cA6;LWStgQ׹Amȹm΅ޖ`X P߹exʗs.0gSr/Yjrβ3\2p/ sSn"TJ_| *!w(=V0oo͢G\ju3T|\_fOäwrv\un9,,Yrܶ9p+9ہ q>Ie*i_:14a~~v:fk v9kB:'eOV-XiD#  B~+ Â$R.3s,5 :gN<ùFTN\\pqTex!q` TIJ}8D\r'_r6M!P/0g)8EaH0o+ q]w$E>Z[\)yךJcLs %3z#YOC.R>|Q$IsXXGIIL0z@abj8c*K7 Ze-epDa%8G78 q.!dj:pZCˀM%h2h( %T+dJ !q86`lEшQ 5xp  j^`lw1iZ忥,ܑb}6QؑJ2)Uޣ@i/ x؅4 Vo7`b\O q3G"Zz,TG/ڎ42"\ `FБ:?ID5IGl;DPa3 ~S3SI\$eFLw[/>j ml3X mqHRD^cpvyz=@ -j~#Kt9fVg/F,{-@_T&d'(KaY!ni6qޒ:R#JP&3ÍL 48u9Iӛ#| AXG\m4P1{Y,䆙Pgo4&un/P2VI8_p+lU\"}<-1sЂhb LJǨ4=0bXߧ2E 5`DQL.M>eD|pȸ)n|J|jU.CqhcP'$5-C(Hb/}>O.+ϲ$L+ M?0kZKr蔃;`1 Es8Jq-c2LQ"v7\ɅN# |7 K%xCn, ۑ2"3 N  0m&GL+2녲ZYo8%I\,D~sm A])EļF~S2Z_%tj&`EBhqUpb% kbipޅ7s0e5?%D%[q Pj Q6Xcubm&ЁId7yap>`/ܼd pu|m%DDp ]ԾnT]`N;;nP6wy>ht6 B+%u,0SAp{"kP$F|x1FYdKC1IPAj;8Q4* YW>laˋf0јɎ#\Y,RyM ASq*f /r`'#Pn(jEDW6uƓo_m%9H;;`hv'~J 7 j\Q&00hPnXCY-,nmG:j(palYmE™Jm԰H\)Qܿ#)%Sr)bWf`1ܵB1~fag:ɰ"X"dh`` `n) G9Rְ&c!m0..^A3%j&,{3y˪ C1ƒh.ԢÎ*6 _,^,qx++JA]A7.\]|m6K+0"G1I昕!ݙt:M"(u#Fv!*Ѹ.01&ϦYk3wQ-ĸ n"^cCFdTTQUE.)b2q',30#PǹQ>`OqE-}E0E1?~?j)|__|F.̳ fN*{5-A`%Fi3:aL:#_Z%6EdK5.8Q xfu6C @ʺopud[̳QSplÞM W jPU:uP@jv#tpdz0=&`q+w EA;K/gJf %W+gRse4ꌏ-F?l}'6৅A@[=b0o phkDpc%BFeq3ʐj1K#]BRw [$5- J);0ᕹ[EY0 1sQ>ȇP `\.*{LE"F0Q?08h!*f 2X55|XLŗ.\l~r T64PC7 8-)) Bҫ80lŇ12MDВ-VX"` όPӦ8bHJybdKF+;N/)A @1}q\IFnP2f`fT @O*V ԱOLm .B!݆%,̙8C _g*2)L#7?hG>o~Kr˗-a Dw+fIgpI Ybw+7.p56q)D %Gnoc!J9$0Ri8:a ZĠө;HT ()j\K R˄_R=m*H6 B]BQ[\H[QW,Ejb2>.U0Լ9a .%r'uè !a|}o ~%-.|An9.+d4bpFo |0zg_|:i\z0L]T%țEKJCY:nd*8Hgob~4ޠLi/K"UE4=n L4k"' 3`uh+@V%pO7ahD? CQH5)Ě}@'s<9Kk԰D:Ks@3),r|@24,0&fGpvqK_&K%]K5-uxHYHQ*v@cqAjQY'!Kx*aZ}֥MD3$5NjJLF z`!/e1v%Kja2%Tq:krҘ\] -d̃?)'Ocq@@KU='k%L:|8YAt$D )6e3Y^1Oy!<q\ܹ|H4g1DA9cE(~GnI\% d%MؔǨ*4J' `Eq1V=A4RxY;>kQP Q enZx-<-F;ܣ+WݲDYt("b q<ïqA^paU 8:w nki7e4?ubl |@c0[0k6W[ L0(b Oq%<4aJDgq(- HUF@S Fm k_jq1)uIJsYî]u.5d\(Ɩ :EoméMKDx,/Or7Q-%;&30 BuQMx) A ZTj L K v$`()_L',,,XGԢ_3Q.H3q"p j`r5hJe vƢ] Z}˄,rZEDlaf.nV]6`vR pCA!sorlrjR\"f L38x?Iq㢸aQ%z,=\J%"3*f)̯E4lfrVoPo*65YPQul^j# Crw][G f(F3` 1wPHa;fឦr;g#J*Y/.`=EʮT1mC:\D Gd7kc3fsyc?z Qt/  nED10?g\ JԮ7J{ \i`a 6 өeGQx!¯Np.8XW\WF \e$䷹inBЧ P%TGLŘ*̨8v+Fu %`}ʠ25K u5%*Y.!3 O\{XEV+|KUUbX#D)qXL1 6CdZ\dVMp莔W WΌGNTk;H c1qU|6Q%a KZB(SVDF8Xb11]@M>YNJe ToOD,?TWY2a7+0F,G *̈¦QDv'Xk9pK>/0eb4; ڜ@˃pj- E$0Va.)nmֈR UBUl+q TasrHq0PM#>aWpӷd#.Œ Q%)%-R3q"0"]S.I+' ܰՆx*QcΣ2j;!1z qX%op cRN!]A7PCQ5esxcg1?"KMrm_|t y&|g\%OW#0&_ " W @P<Ĺ.fWIen$E reBG ƬHg*o, 3]0y\ܦ3@̫( #*ܤʞe#fdZMY:k+ ̽[W_e$i?AИٶHL[EyBT( Ol߹aqsH_8]B1|3zUZb)SNx Q(Jzr6ǎ^ˌFfvrʉ 0Ȗf @Ĭ@TLl3+s |PkZpo%,"wLFnwdfʊwbZeJT(I^J%MB7q`*V`E JbQ5EhB,AV+|1V揨ƷK%i aXPA2[mXuA{ 0mqD/Lt΄ 'qu,›@4H]b2S)LM#%k$`~77E{?I6+]K,,! q"]\*0F 'ol\ r9K IŖSlvQÀj^ni|F Zaipar2ȗ,KyvH9"[%1 ,fB=_` ᦇ\B3j*%CKd  ^ۃNspt%7b}BMe 9_0ƀH [}E E.M,` `50cTaoEB`h(pbqRi5*FIFSD pKzfH3#c+&]`5CPуĬSdE2wX!1+]KWfp[,ų2i-Ab#ƈu2T]d[IGO(`gmCcXs+0J,SK_p U1=r.&1Yb[Tib_ xu\ORCvCX#. _~;v[Ihp*I=ѡqY&$c,Qb"2fc-JCqIi>Bdذq . @FAFԨ0xo^62ǁ?C^`n70c̨Q*0!@REe\8݃֜㥶1[r[U ONO1^N(Oq !yf֦˃V17ؖUqneV[Z,/<&p,S #\ R ̼V\Q{>%#EKc>2HSNN>ØV"<@B5R߈3I2""0 AP$d cP֝f"Y-,b5Sԍd ?od"@`FIn"R5.c:6"DS!En%[>bh@4TJm%lB@(D.OnMI^Ѩml;4)7*h㹚J*K0f#J,-fYIuAZu5 *C մqĤV<be# qGaAT|b%ćhq 7f "FH7qfZ 5 Is5f-%BhMJ,GэM8(R! D<`y&A H$ӐpqbxcE@bi+ݗըԤxJG%MANU5ĭR0^‡W{ ))+GkQS UPqEj 4 f`eLLh],!Qfty#%ZK[,*W !S)9}Ee:&IU1  iR{FV Rp'YVsQP; _,K3.0JDNhqD00+/, BJ"&{b B@LWwl8HPD+Ez  HkKm5+4JLˋjo``!ţm ;3EՂfĭJ,ϙk@`9\ˏPs7n\eܪ\{uH,z# JHZ *0m*)iT;Q⾥5,3~ XR8$ C0K-m bIO0FMo ,"*fh@.K(mz)VFVLu2AVY+ -*5fURSn{@2SX1^ l*8&܇AK8j%V87%~&*024͹Ge (c%PÌ 1 x1cټ3ó rn6&q̰rFGVk[\I:Yъ`섄4Z@"+cC~2 ,Lit׸ 9\3*#I>3RFPLWkX"W j37$GJ VЬ/ƙ-Q[c06n6M_$Nm >KĪ95b1DݰXnB "|ttŨ5;F5_xp:3%lh|L%b#6:`al!tI0]b˔T<%WLF*e~B9$8~p{U3TzYq/2^arMr˩um,[ȗlܦQ*esb5ȶ|X6"- SqT0j|YLf.XnĤj<*NO %тݒ bÉV+(LsU Q.#1`u5S7 K.x6.fetHLC!1l3N,$v®tF6׸@~rˬW* Ϗ^b20f"ӍEDe)ʈ!H"BTdHxVA]UJ+>Oijɦ(24x#/@J Dɡ,)(MF%!g~ UPf# ےX "b!if-Ear*i 8)*KM#%Ljܸ/]ȐҒ}eY&t,`ups$Ԥh Ec*XM∕!%eqR&<"87CYn9G{#GH!n@ǽE^Y18+dT%jºOIm+c B6_ 6qP J|g:^!xޣPQKuݖtטT;?(;/Aڈi03(u5_4BgGpkbR>B7_#-&i>0øx4W2Y9wtZ BrD-0p%0LXÆ0oR"Jy}@A%8~7q#Wp(JRY&ѲhbURumBi@010\76~Hoĸ&`damRԩvqW̐74Gpj+y~kϸ(!#0Tc,0Ɋa'-2 |!LԧRxI`Tl#nwEy%[8>d~FIr D%-P_*c+0{,`%yyAsWV+d xyr # #$ϼϼϼϿ}-fًrrs=d8b%ĹLKQ DKǂi71eBK_f).q .ib6@4̻1pP D4Ankd?hr5[3^0<%|]cgi2DV٘AxֵJa͖^.#w3 Sᇢ0F^j7kGb{G)N⧾4+7/lL25788bPC0, (1ZwW{X@MKg!%25q2>A 0 hX}xY }CQR ms6`0!VP\ح?XU[ ag% a$@T2F]5TKWԻ4|#,q*,n[Ŗe<@9%ps)Hy Q˨2=@ ?U*˻S\lv[&w+(l\X^Ʉ_EGCZ޷p "\s(bm̺40Gpu J`9YoQ-+ad,ApOP̓Jl^Pwg1s0ZZZb 괊aAh`:1*6^p@{q_Pe]_ƽ`w.K3=x`ze@w+w/ f\_2lӅDG1V^ȥ~flIv 5qRBWq"wܨ?Y5sq>m`0V&|PrK[藓5",LDZ?T"2#苅Z_5eu j$mq쎄z iK+7昕{Hvb)ym ˸5QbM=,Z]ĺ1%D;o[W, y\E,Dm(G+2 !pVO(x(I.RRkER2A?H٘cLL1pķs;k0Lc1W+}X -W)RîMPo<[j8bfẌwK 2|6n(@ \lm.#ซ>>I$ /SuM,z2͒A /2ȑÒS}C\(=QQW)SRi?_n !8[-qxn,]ESd>N02}vC 8*a\!E-FfF@me+80ې&H16QR< ԿC|cVR˜LLX8/0o9wM86A>+p"p5:`K36 ;fe`qS f{C0dnyP.¢4ʗ t?x4}M,M,oܿPKc-ŹOۛeA yi% 2, G-Gsέ/}[ƜP> .-p;l\D`"zy=QK3ZFUx':x,%-3_7KyE5wR:5XYE|Dgũo;¢T#olƝJǽ<1) qe˗,˗ Dˋ6H&C&N.(,v\u 8@b==}`ye< |<N;%5H]wSĔGbO]D=yO^.:uP&j e:@`T92;EFq v#0:!3dl鈱I 1IOej(&f EvbPw :婂 ?1oq̿-y\ddd re+b-Ke;|6kN N/ymn[RU%K^BCДFBobJepC#*5PԺK( 1sl8 '/JNZ~7/_Ϩ.R<˭Ex_~圞Pg5V\ pI(XQ6༷Mͦ-ېEQ3q B @nTQ|K4Ixc qkJZ }GXj=%( pq3g[-@+̥oY~e>c qrgE"8啉! Cj$-4 pJLje89^4Qoೂ1 |a *: $Jy aoB5QL ZFr2k#bfJ )o bf(d K6jiY hRj4aZS\8>#["ϔ4 n/L!Tbb G@h7BPz~ qF72K`U O,fk,V@v\ Β p,na#QqWYO"3i g[w;]A^-+OlCyQRD#3s+>쯒S̫希Q\b:`u)i{1wӍ?}}/>/%, L"ӦY "QEw$|P.n8J!#nm Z[1O2^U0؈Ypo,8aw.Ű#r;eiGv]`1x 2J\N4~3Nmr˗.\r˗.\RK#===ԺăO -Xʑc?HuZc6N;HO@b3#*c{ɮ< ̈́4c&b$w.r3/ad WܶxWiI~sNordY,EdY,K% ==%/H5I^e xQ."ōBJ5Ccyߍ-E^433-w0Ԯ+ǘQPqr)>;bWpLʎDO} 6DT!XB7xmssG >|F?IK{{{{{{K%\/ @~8BKk@0}9 Yx8&`r|,<|h%03/RQ0b/凼Do0F@l"ȸk1>bŻ5#^ X[dKeqoY:Gd g[-|%/r'̧[($`L]!z(Ijlx}'f[bo2 Ebx\!4BJid"XˉHϿ 6w-y{: hbï&I'?ilR'%YO,[[}%yx׹gK>pn.2f pN bp02\(Jw4u2%Ɵ ^e!1lGPDHfhm_rTU42# ǹ^ҽC <+eq |Q-7Ɛ? qdSžYII䷞g}YYY,yyllR A0XQ-ō"0 ^jT,,".-,4"Tێ,cbwA|[b𧿆"~o.xpbC<iW\_Y߇}}+i7_j< +x8E 5X#uq<C6cd_/ܿ%p0ΓHPwHnS㨒hyEeSg1oIO"Mpݓ|m0;ۈߑ+e| *Q ‘n?ܷPja á3X< Lj[_6U eÍfj'"#Ƒ*I\;#+s9UJ~ }\rJ9!MXA+$i >` ' @--A9p0۹m|EǷ)4> !ip*6]pŨjuR׈i2Y+`aPT "WD8s*7 0)о@7^S<;Ѓ(0nP`Q'&}q 5.47*ppIi3󺐃7`18wR̴43!| 3hQC8SgG_7 .X *QnҲO2ema7OY,p߁x"^pb*es/#l98tpE ļԳ?!>~:M8&߇n 7 -7~*C:3`Q o D^KQCQ$::ho %0an ˃-C| p f|8㿂 UWkaP@ˌߏ\rmø;&N A0j尤Y>Ǿ[C\ po4@H$EJĝ 5Z.7 Pb\ Q.4I%_YYOi p7 Aܿ-~-mS:p;&(|5D[r9ۀi*:&wPlP`7/_ԿSIY-7m B q<.t8feaMBNp`n^8MA(uhardinfo2-hardinfo2-1331e88/pixmaps/bg2_dark.jpg000066400000000000000000007136741474767047500214230ustar00rootroot00000000000000JFIF,,ICC_PROFILElcms0mntrRGB XYZ  (acspAPPL-lcms desc @cprt`6wtptchad,rXYZbXYZgXYZrTRC gTRC bTRC chrm4$dmndX$dmdd|$mluc enUS$GIMP built-in sRGBmluc enUSPublic DomainXYZ -sf32 B%nXYZ o8XYZ $XYZ bparaff Y [chrmT|L&g\mluc enUSGIMPmluc enUSsRGBC     C     ӭ-QZbRe623mq Vҫ:f \e27"쩖עuc"^Xe6@\ B #!N/_TJfNS*uԬ%h63QF10[! G!!xkt -Sxl"UKMPZzkL y=!eWg\nj %ї&6!p |o+Dꜥ,QխnzspoǝCx~_;ή뙉LtxSrւr:ܪ6!#qbm\Å'-e} UYq\ (u3| `  Gp'k&L >4"AytrNx HUV%Tt%X0UՉ9޿Oal,{3Iú\mxUwoVL6՛=z+iU% iqr1f %@(Ir萐 z{8%\<,ybˁVr]s3z=b00CP (H2>t9hwҀ/*= z{v#6ė qqZs[q}0&H冺ҥT K>n6c亃;0OFaVp^Y=QT=>WYGP-Amұ  z_<6I1Xor@W:܁E\M::ve06梢P*枥ڮ =-Z]GDu>s(J^^~%7Sn.-FO;*p:չ|u.D:w;z7+;M gLߟ-"]n<~*B,6"&@v{vj$3*"pP` ( pL6gOp ٩^dZ˃s___*x1NUTJ%9J҆Hބ%&M2L3>8:4׭v36lc>8|=/9S=K4RH f2(\ u>1l6Wb>v.-ƹ媹U D ճ[@UD+ެl]ʊMz7LuO<^>|y&_Ry=|`\py2{}nn%Zt^aVtVYzg.}ma|f(x!! @miәGgik2`"= ABPq&{R@4@;a#%*XLM_!NBlK7L民0 u3>BzNi̞=+ϱǟZ d |y@;P9jݞږfn'Mz R^͹ zz'֌wO V3ϲ"\RƖݫs8SD^9i޴5<ĢG]X9NwϣE]yL|Z|JQ^ȨAT yL*=}>:4T>`Pr,kb*dGb0-\Kx=Ujf[J٪0NO?J=.ՠ`CJ5y:Ɛp "-)N)jlqn=.^vdt^|t^SKkͫ܏3#.YB&]ϟj i۹9ү$ ]*IZV- Ms;oz<ƥ]سR`o9t0MdwrLE@ 9艁s^L5)U#/t)+Oޯ8gq}+Z<9 `CC`H_ϷSt]WT1寸z7akn{ytxM6Nu^.y`}%Su(:zs7mu:reюUu@srwU2ɘbҷUU˫^zU`ܙ2%VC2˃80@i90=kLd|t(((nE:`>{}<N;n&X5)y^}/w)$@I3$73pX6'3j%7-swn^Cҏkf6N^npk잋:[VAi/Ϝ-mѳ\^^z3_9V)G9NqNK]ON|n~^g 2'6DZgvy{TVW3g̙Nt(HѷH  AT#1"X+\RI>N*_!3Ȯ+-.[]A)EP STZb9&n`ij5LK"kk|s:EgL43+ǟ57tގK =NQ.y˛][F˪yIeU9᳞'&ވ㸂),ɣwJ)ӥ^bwwqt獊kH軓-l39`X-B} % Q-eܢ GV{*kiDr2t 8!aĩyMYpLJj4-4K3XU:vlZnb3i[)wg.~OiVKRѴ\ܩ2S̮E+Z睶-pF3-}-I8by{2>uAjO;J$ 2*Wwg]돦蹵r&Į':o<,\"ː U 0RvH@@sP5ɝ/FG hEHcj}.2`9蹳ýRY 5HS k&wWzWT|YDF{۷{np)zeA&uRϕ9{W=YzN] =U_=s4o l R@A@8 (r' B8jTU`XCr=\;q7EOh7Cpݱ0d>mip5cen'Լ*ͮmz1k1϶Ym=՞3\MDž8KtuZdgiT֢j+ZZR@RcHۢj3{(Nr{\#O-;e:s\&vv 3@H WS[#B~z]z]\fA]+TBEM44!VP:>?{oj_'%qOrR]ttmϭUjhcχY㍶ܳ Sx~vwtc?gvYe;LeP %%|J@X$ !@t ..zkڲZ/nZYILt傐,)P@@!Hge>MkWz\fPȆbϤ4LZi@J̓6ϋߟ4N)sw錹qnff$Mޅ_[^gmN&. Yu-4uޮ\yzDJMЯ\iQfAo< pj[JEvB2ᴶQӳ%xZt;צg[qWgҞ{ Iw5༘H3v`^( [,Sƍ: 9q|Y_ݚ#)k嚴ytiƧX=|5Fؘz>Ӧ)rm ~/WEoLiskO%^2:|^ש=MֹR :t>wgWT,vz"\m5cQ!USQ [Zj){UT !JXEoN-4-Zo(JKt#-tշSiOw|]}m+Z˧ݧG ߨOB9wŦpζ_PZ00+֩Q8<-W9άxé6 \?Az3;"@WJ(jׇ֫ sw`חJ+==\~GF|?s}-v0z1iߧ|O_غuXn{Kxme7:nv.zxnm}hH$2_+=(*ZC>UU4J@@H! @@CPĦoo"9Zt#:۟_éѨ@@@9@@@^?~ydR6@Rw. J`@uǶ&uO--5FUW=oV<3^F]|rsostA*qF6Ve>z}]=wjJUh]1ڈqs im#dBo3P (rKe=k~=٪S|u=2Fg8;"@PAȪZBLmXt0qhb$ eeP;QdXLWK57l'3y&[bҕm"uUSص6=nN-Ƌ (6Ƴkѻ7^\TY@` C(g42Z26.{Γx]+pY0ʕvm,A_(Z4GJyNZpINpJpySul]K4x?}ҥie^TQy@+ϞcNG-F^{AV)׀ ҟ ϻ#ȟ@/+RDżu)$6Uk׎xN/^?]]{n׏5qtmt3f5bP7Sv>r5yS(W|*c(y( ȷrH'HIU[iN/efƴnAs3VWPW[??KQ6 x^H6 `*ٝmTݜ{#ڎd!ӛ׿_Rt4%DZɾi,g~F]d}7e7`;y{ŗvu@ë֦K P$xUuG>u~% 2!S@H*Y( yBC`H@2NM1,}%x7EW (=Bey\zz8򬔖tu[KNyux7WteיWk'˧5e\i]Y]H{`Tʷ}fΟE+yw4dfP"հ$SjrL2kf4@뫆]d@Y3mR}t*̄ӊ {٘v.ǡX4׆t<Զ>7߫}a5OMSf(H@`Z"a ҆()5Gg]/ϥ_ VYkD(bɜV%i$R)@ pgbr@Mǿ@''yGi3Gwz|^.YvX@dq< 99ezz9qӿ\ "n ) J@uMՒ!HJ@H<8ó TZ`[풕#?ӣc}T֞?3~;^y۷M4@ $2j9Ԗ';v~7Mr뵱 %ZvLNԠl@Zb1ƌrc聲^5[/:y,]c-x׏f]5"VVMʸ>h5T 1ȆCtVD r%+f4zoۘ-B2y|ճ$ @Wuu1=lyHL j"@ `!j zHڛד3U-` ]bkGJgESl`WIMWwJ]gҫG]~.+W' Q[erG!yޏѮ,=jK31+UN$yg+J5/JPMA[i0tAɶlѥ+W HpVz;2/l٤p9o?>ɗ84z+Fܼ;4ǛQmVGTeiTV%,jaH5;L)MP2E(* ;(V2UVr[zVDaߥ*wyQ}Lu5pFҽ(d#&UrUGnzޓhm3myx;;kw=+̞kZ91m1pv+9;;斘*5pS$2o2 $彎g<_];MR~{jJ>~u<Ya,J}'Rc>oe8빵\^_0$:=*q~^ޝ=LjbaIARWD(Nm^ <+' ͿC˗ۆW>(ETy_iU#ΰھ2O%Ӓ3}y滺x} e=\E!/-A+T>|;p#˗h74#€>u8o(7)JR$ϵ[0Ufi[϶͸s +g 7 ~Wf22ǟ}?^o~o;8,t앩exaϟ[-:10p0}@@@(0(h{b/i8z:ۼL9qu|ZZtҍ.vEd*%5e`HJ"*cn} }:#YLOL6cчOtoyjuo`V\B#56q};竟~ҫF05іVQi6I)o>%i2Vt[CsUurd6WWVnq}GfmZz踼 ˾W[ޜ%)+ d$ ^P;;rErfVl]6޽*<=nm7tϛԡ>JHlx9izu3NV S:>k|ct]tf=WskӚMnp6dJƵ[-qk۫vuƹ.'gCȉDFg]P4TVJKϕD2P@I]nWoWKJbA]+,I @R) @U)Zq hXp}M{otu;:֑=[ezc/{k]rJL{f\INZPwBF[.㪕S'PW#UW[Sj6t[i6Xsa`59@)maP&oEon=1%۟zϩ<86d2^6{ԎwOzzޑ+Ny/ЎT ttvT%s#R\Us(Q[OͧP$S䖠<&zm볛ݞ-:[-JۣeE^ qHR$/V֡ɰkU=#.=k.rsseu7 HgcEy:-qng?ٹdmꎹ/$ћM Ӧ]l9r-2R̝+_2jdz2~7[_Qtk;\Մ)u@Hkۯ賂ztά.$( F d9=ϤNPe˷]ݣc.SЯEf{tblB2emp0q=Zj;9mnzIBB[P;ɐAuh+g6i o9ҫ>9ӕu7M#:g7Ar/]99Yܢ+K1)zPZaJ֭2ÿ;.Sulʅwxz cW ]} 6Xd1Z+%V#[LoxkŮ933L50=fqրg*Ttڝlm7"'G.G ˧= r5z+g:] TONX?.*}WOZIP۩*]rK~d|Ċ4e8fCڳHuP{z]^MܲV~y+ǭ0 chiչ]v,x(a h5eZUӾy) P"%>iȨ `zdB[y˱V!@H1} (&ES]ẉ~9yuzo%z۬|Wg+mňJ)kMH&kXYiPGI30'F2-SӼExju`1VGUth*V(K~(i.k*Uucb e2>]k~Z#p@HBP|4]}2a֝U^ꄀ:QVzFCsa槪լFN$Vq7*Cw6E V[':)hz|ϗn]Ff<= Tҁ` 5 ]ULVЁԥKԺ.DUG)1خ;joF쫀r,z嬡tʶfyADs'1ugIoLz\;1*|]$֩׵L33JLNJsG$0_OW>EM+'-@gFz}|NN]9OOjViH.uKr0r $Cɛo=+[^c$@2%ht3es ̫='}̷ G(Ϡi܄ @1#3&rY̑-uzT,./Q䙍*ߞk髫W;b ii ,dעkw<,҆N|ZX'8h}l㑧_R0g&֙Rzݾ[*c|xs.ZȱTTҞ2: .jnDqv*U5W*ѫMo5-zYz=d$h%&S3j$j%oNQ+ wtɍ-J,Mˑxrdpywo&0I&Sӿh{:*I \x!@Ha=yԉ(:(uN$/9.j u5o\zCȣg7@@DH YJ\Y=7# ! r'f%y=aNW<7\F۟d~su2ݻMYSo3\#Vh@jg=>{WmU喪#9wOhb2e `2ƍ  BSJ#y. @I֖=\p4 `@ O)c}2B[HC3b%\ˠ,fz+y՝Yq dWcەL1HRT<` G! }9#.eKM{涔w.˓Q\"NJ(ePހn% 0"B&`0R ẋZ3:utqrޯp\&ԖXjUѲ6f"oizt]3MZ=3t׭+ϽwN97UDLO)iҜOfW~T\ nw| ^3K] 硝jBCWE5)C&*i [ؕ755΂z.neYzlU>* ΖGI.ՈGU,'Ƽ2<3a2{E^_x[,$V#FLU/-f҉u![U 9WsG!#3UӚri8ٽiedU3=S3FBGec nS\ ܀r(I:alH(BGv-1׻Ys;6b$ fV;xB$ -ԐPHqz*7%N5{U0qݟ>j֛Qk]!Reχ=yz[=~cjgX&',Pdi^)! H<0V5:%;}^^y>x>֫ŌՖץѓ}b19-׿Ϟ^3ZgWߧspf =YDk:< a]_@1ή’j41G"ZE@ِB֞fh í^4k^VqUSIK-UEk:g iIOpx{TK:.kBT5 Bs&5Ѡsj%ni]g?o5svt׺W-,C+ˏήҕ)f~ 1'^["Q}*\;/2rrqvd,DPC- E&zg麖 U.֙G-P$'*'^iUϧ@,vMĄJ{'ta[\KÜnsYe+mk>ũgz|rJ(s'=)C0H5@Hm%-L9ƹ5n˥YmalSwN[ !E%$&F'cmݓ> 7]ؐ xTH Y6zʫ'CG^ 'Z](;|;笁& P5*-/I (J.+]>#>pLn 4B>cTtGyf^h)CϽKR2RQ, @E=wy5Eu^4厷;YVMJ31jCPHo J祕[NOC=/}wDR7gZEpQ@Hc ˚ D&hzQ<踳֖(׽b8uf;WIeۭ9X t'3ܚ.ߢϟkZ{TPd' +eQ@(ehmtK:dngLm+gwU^KwL;IQuJ w6HGOBd19W嗣oSZRQ@neazU!ge n&N.Vt.g6~oY%It{wY<{,ñӥa`EeP1I*^gfw @v"ۣŚmfٍEU9Nˮg|J52ֵ84M:jWjOSS;2ϗOвqui O_]f3l[))ȐN0*4iʏ_~̇6oJ^^Z=U尾ewaOA\2e V,3rx!G_wʴa%k_D~͆"YW) 3i4&2KE µmҤB׹%HZןnҳ+EEqc;jMܲByTv-yτAљں/qD:,eNeVRPƯa,(F.1dm]x;̓ތ9t#1 RAP9v룙>Oe,htsۙs\eyfU۪|ruYxf-&4_6w=}^~FekP"@&BYL= (A* kYY@ϣBdglwAQjש ҕ%w]4,j%G_>kLXU窇Z{,SL$74 $o6RG}-J9SJᬭq>"RkaWN:vrvÖ0IZcGNh$4tU:]XNB̋u:{5Esnstc;|ø`!2Sf7@KN9|v\)r$%0$`L[ZSI[Q5 8ChZ{b]yLtt"%޺elzZϯQ:ULnRS>6 e-6kUN}t)q^rƪҗjA6T5H^Y^W.]05|~C.Ec $ ,bt:#c]\8={ j(dzo:z^ƱB!9:vsG\yGFEuQ\b;)iѢ{4s6Z[pȐJƍ9$tElזQ^wC<˱H^C+bNZ}.B2uglsKr2.=r\z/o [UʭLsw $!!γE1Q]JR=y7@+ْ^>{:2ˣ;HOgv(=,m,O7~;詤5ֲXgP=cԨyUMKR$-SgqfShϭΝ.i,e@+qUaUxyLQTTA#/C4l nZgvF5S& EKZ3< ݾ{oyV34tV֭r%\Ug'3oSQ4 -W=se|m2B:ijSϑ:֥=O( tdE69 >V- m59ty8Gp=.PVs\jjJYٴW镤\fCv(;3R+H=ƫaj˻V}NM pQCU%Fu4Ե@}n9~z"K|׷U9YQaϠUל8Jv2;͝9M;u<2|L3|O"⎝s*z=:JDѬ*mJNl9Y5֥ub r'%ɀeu綹s2ib\\Hr4גf^r0TɚRʋPrVg͡¼Lcf՞zx:^eϞk+GlkF͜Ν~,ry};]\`*dv]#EMb*d9T@;>S$>ΎHhxآdr˭r{jnV]] E@ךϤw2a$ n;e[B45Ӧ=W_+?CCEb !z &hg'm鎻@0%8'l%(V%[tTɡ˩ׄ˙ -ͻd@[Է.n&<.>5;tEqUmec1V]L㑧~ݪ,w&'iUVeVybm)ZZ1F_=Q \HϏU6hXwI4F6xD蝑RmR΅TyNyִ&s\Ij!:{violFƕtgæG{.<+ӯ?7_B:P'r^voJ7&R.#Qإwfv.Yߧ M .;Ȭ%SE ˾ֶ_ue>w)GUSc%Zs2TYJ-zsn},`'qR0CY̴q yZWX5*Z>9I@mkʠܲkgo/ŊUYzKէ&SKXP0S䎭 hxb,1Ӏ %[9V Hr4yrѡ<4ޑz)R%@iSb˯&;YsƷKNEoYHK ijM c)n}Ix\wlÄْCP%KʪHHvNQ1i2LN[I܉@& 5G*ΙmÁWƀq@ c [o׫sy(6ƭ[99==]Ƚ\nw?۾Y>]lzn$2Eu5=-8M)4Ym"Q|g6[ B.Y31FXPދyծz,Mw4%sl8UYe=S3G*B+βygTBz+zj ØYP,ʒ3stҦZksL)C+c^(K8I*JA^z-zKӁzIH iSvBBM"u6߰s\rk /3%35J%m9\׆ɁAϕTNdC;g_: '`L) 2JR".}=b] @;@[)vOS6ןG/]@㒖-5+d3a0@=..t׷?Ar~\: Ci.ЖJif0ڦ*̰tk3C͏˒kkZ9>kd݊Q 9Y6Y|2)%4" &YbL&RijNLMClCTߟEZ 4D&5ϴԘ;Rk!TÐ<ɣ~V[iDz꡹J0 T'_Oq&opggy՗CWG^^~H z֕Ûmɼi9yRMs42s-ϖu4JNkEpGPt*p)h~k||q8B*ra:yf[M9&%Uܝg4"Z9zwGtv,LBN@,LP)o"}'jUisE(Sv̇6t9+:vqLo:Zƌ4ɡg[ҘKBA^ i;ɢ}\NKޖO"𹮫9!<ӈu Њxsm5ޝ!P'Qa B$Xm*)JT&@Z3S&aHVY6{E+Kz/n}(nӉ+eXIʩ #0=1` GPIUn׃*-c!\TqY+[9Jg7}o^nȲ|%6;(wsHdu qe\lZtyls-G_:5־ 뾱gS{3 u`{:^>ZZ*@]Jkeh .o+e,)?>,UJT ܉zyVR};2L%3>s9bJ& &99Ua$@}I`8j[΍8֡TI0ENz窰F5ttʶZ1hi֓tޜʽyLeM*}n< 5 iӦ< M> 8ȗ; U~NjYV~""\ڠLןO:}zJxmy`4\-48ZmXSa0/>MJ&*\Z_ ˻ uLV̧.Ws-%:ʸ)Uu'Q<>ݦِe͗N )cs|i+:¥ӛ˹]95 ɭtӣXx5Kp= w>w4b鶽ztV+^v͏e۳>Kᗧxc=t_y[of|V4izG\ǟ|:{sONQ`!H0Tdӊ!j΅1@R)&F-y9 *r ;v5C S=wmĺ6+YϪru^epʙB27j]]u[jNqGHlu9uVG3XZhNs:ӗ2Ɖ3-w}m>xj}6`\LV:*8uwGÛj>9ȹL|'|AaL=}O1$]VrH /! "01#23A$4@B5%D"evpSq֝םםݜ6fep'6m g}'z.IL`/ 'HNL5EL3UcʃݫUt>;jV.OG0P6K1)qEU}(+e!Я+Qk]zn|'Y^ h0@V^-j%\8{vF](1TMtʤZh(A;k8N"P 55܈"[^㵒95-kۧh1{pT 6w/-H PggbSx;SWL玠Y(PN+@z #J &-Z@gGݚJl.h)gfMSC%'Ƽ1 qfj+a1hE/=Š ݶxòv|r sHJ, )J͆6P*8_JC> Kb[2VKԯ R}~&F"rn_U8BM&6GMOTkpÏȪoS-gWuFJͮ[+f+=AXtc׋R'NAR uvf^ -å\jvNqzQiM5XJ  yF]/YER+0'~mi 9n{k//7;g$cXg 8{o'(@Y F&oSyefw'Qiv#4ơh?1+4:3?ՈkpjjjjkjjkTm h|;h4 jjmGVKӝVgQ*&u$7 #Q;m4!*tT~Śj64s "c, ˣk|4 z租C~os@SS5OP&kM]g^i'Puߏ{lVv:dOho%)=2엤a3U^lڳO16v5-;b/nN3|kW鐜 :T>uH+Kzr: 9D953hEp7Kfe/se }s#\tx+=E'ǃ&Rܦ~S)^fN\2vnSﭞ^{Vl+qLށ(PmȣQЗ="&k՚{M;i~1Zvn"w}eY"}~C.45ؙy@O-6A_vŁ`4HЏmbYq㷑Z"Qe;WF{1Cp#YJMn`3qȡuq|@K:EbFcTpqgZw驩qAj^6**I N{ZkHkSA vmzֱU}p8ZJ\N8QSl8 7 1lsYҨ1k @jQYvj_5Ǧǔ:NcWV1*n:f$q&<ԭr[*VOLcJoLSkX(,oFTjBǧq"kZ^B@PCmHx3L6Ժ~j>>wa!cߦ^-үﮞAD7jaOnOT0efdޥ?}qGNr,^_1AH?:q-5ӑW 9VZ*<`* ܤ =NJ` M8kÌMŹ מel&w-Kۏ_FmU uߐˬRGLQ6s:kp+z( Ay'C 1LS Nè33Ŧmǘ: +CT̽˲(M5(Ȼgutr7+sDsӖ}:ӫӄ|;TYwA{=m|?P<KyK#z] ,YeMYo;Mќ+񱗸9Cj-S; մHw7 '}#C\'45ͤ؍9.##F)z<08RTSS%Z{U[NW=P>9ms I榕Sn$7j{Z#.wy".mb{ Ȯȷ3Y caXrE3})UW-'˪w#V+"VumCy3e1oihvB&9uK;h{M;Iök,V3wwBg"f$NM;axm߳/?Th=Fݶm-B[d{"mX0Z n`3Tze咦H}ԻoIgDL:w5qBr,Ԝٕ;,נYaR~MU=1y7` rbS) "ɈUn[Oջ}4OƤEqZ*Ͼ}vr+W?p'H*vd4DE(l.Ъ*v;s,Ǫn}Wje965=ؼl%VLO*fwvY#UFÏ%ZmgW nN38=ޝQeX')ÔN vGf,REn1/ a[=&uffXݩs3IdaqXiٯl /y(ۍwO ?/{Xa;鋆׵8LUء 1٭dӄjlO8ѫd^Vrܳ=mYof_߯,WOP?EG?_XD=Ȏ4AoFǖQJ2Zr.[65<4 :<ӌl{knSpN!R :sb-i̋1쫦l| \lߖt>%wg/׎<3?_AnYr;+H3lcFRs?(x0{*Cr*va{p\6;r$"&- ~^BYfnڻ<13{,R on+l4h+b# }݉Uzr>80WaZ==gӫNϥ.ՂXNn'uSq3ڕFI=bOHeNƮ}3nНHhuﶭ8Cuzjpo7iKYHy:k'ic *bvnYhM qU ѐ)XqlWS}cS_:> MB&=UTGcCԮ.]x3#1طQ2&KAu4j,ަ~GaNȨn5R b-:"b":?&c N+u첇\":"8ecFUC3wtu@6T=D'_ g\LVuEO']5Ј񌵶hqЯ$&n^#[|utܮWe<6}|cs??##rO+j%Ŏ3 ڴe_Co=7u#Zr-]OQss}?rϿZ_ViY r')rsXM?Xt͔#utV_*N087q8uuF"=b_MݨcaЌBv!:X0%Curl+-8__Ss1Nb%E父4Ss,n8ַ{g&yGT3$ewS9nr5Xyhyi n~.b4z,)\LfXF=qDkMխV5AyV unp=w4;+~eql_g Tɹ@W[O!#bcC ͓իk%T CqӅdjh@r UCUuBf#Z{zmD5)c ke hAV&g==}jXxso]MMMMtѪGx Cjqv1\{ s>Poi/'sSXD&>#ZHj{h*gd7}ȕx;,EbYӀ' ZQ?2Sg{*6`3}5n3 㿎_ݐ2u=2Jm?Y}!7ݵFEEU eSѷzMmrsJV3Uo46;HY_fM??Mqzv:rTh--FЅўZhRpMtQt2XnEi۴b ̻ ui`tcM- _].@ul] ɒ Qyg>#z8)+z+=C:iyic`msV'*Ԗ {5AbL>X?T}A].J'aq\A׷ZP{͓= M4VW9}ϟMl=J95jeŞ,)P X05w =%5Uۯ nrD%zUnmuۄBJE/Լ>CO>D@GǟE}\\}NXAg;bv4_n"q*̚ǸA qSN:@j%5Fj5]XÔZQOW~E\qhǭ1@ P0YH1SN*-Zcbc#.(w3u8#.!_eov;r2>K EuFz~bS*ŰgrNSpPو#z,K}a>{Cis8޾ (*)fdmzD6^U}m6e>=Owtl3ko~!N}J}F}E}J=B Cuw/Qrt屃!gYŬ`ZG3#3%U2S6`zGCxRFjH;Z.B\s^.Ihs9k".-55 ƪRwlWsknRҿRkezXH']9܇IU,&E+#4`f[QDS恷f 3*nmB}G%Ek+{t`m+ʽyw{,&ۛQ˪3s D&J`Zv)+̛yTyز,EFC dk8uݰNvӻ9҃Vdx)9aӷ|LgㅝcV8'^f徛#do:ҋHYϷǫAi@.fډ8xPOKpiL)?G|wQQmu]A5]2Cnnojxc\D֕eeIN ZoevK$2'9gr7Y~:&_B~>m7%^Z۱cȨܱU_.\²yŊzN'FZbfpw+4~&3{ mg!q:&B;#ܪ=k$ y4nAƶ:rXmY2<]sFBE@ne`^MdĮ '/n}UYo\C-t `Wr(T˪=Fm^TE +;`}9Z; fCrH/Nb{Y6 !GBsT7V&[J2̤&󶡉vA>H)Wez" dh+iZ_ϴvʭ0c_,J̪[Л'+%F,igo]B#LTqwcl>#cq=@qF`<ۅ7;" q;L4Dn+^?9v8“4s{JVyZ&Ճk߸[5c5b{->RE.a[/tZӴT++8}67pK bNgu m`&6A qS4n:05s{R.N>uGEUq!89HK Ib zbҮVdXW>@Q晾/u|r^jkPB71>8 G^q0ZXHny~62D(ե ߌ<뇣@d,N]J5q.Wu]}ȳţ:U/~8GHŴ%ĸK992)[@ٍ-G#_Q;/F:96pQlz3ltvj]W__ߨLGe>'NE|yM2M],5Lз9f_?X" řk*eH>aڽW̩~"&?'zy77e-]>+ŵ6l\pp᫵_ht1= hK2U&BN‡nK_"ς~$J`SU^1NSNJ7I:30db=ۻ%eJ.*͈R؀Å#ԕI@e*]MMdİ. x"L;@=QkQ 2VouMb e+ jzXX.mF-' .%-WqD .!38"]lz R UXV#C03k Ayg|@u9MR˕!ͪ{H2LK?; źPh(v4'q*Ќ{`} eʩP}E^Ȅy77r6%h'-TCTz|o~̓㨿?&}0w+SInOqL5߱LJZUU{cTAH2]%sR= _=ڦ2ZƜyf&Yeu%|,4T\zaU+ ,`y޳9Yٚlv -L0.'-%u0Ȁ#r5&ݽy M BY݇= n"8=$Fl.MqWbqk,n\Ehݶ'sR9%s+E<pv?mu𲔺%hQm{\ !L" WEm.űaOjb[=b_-Xgi0 U8.j4f nıTqjQ߶_VGgSDC:0,wE,ùFl͘r )/R 3a]L{jYt#p\4 F^0* xt`c "`;-UPM !gpǐ#+C.a1g='1ՆަѯPᪧ4V٧'l)8ŐW\2nCH:lY⯘8ZMxU&IZgΜ ]oJ ^-cDa [kBִ8YGr.0h6&'PՏ7c6&t@-`)3s\2^3v*m2#tȧR NllN{Jf*Y:w"'n"w'=E(C1LQ>1p&WB#(x1|> FUy\G)n2թڲ3'E7v8hzy\+اĿR>%'egj-G}ۉ=NRt?s.x"  Ҥ͢1)\LVXս1o,6+=|eYRlxh tCS cըg '(w'rr C;x6;0:Y/p'ʻKcy*e24;k0}'?Jc~o'Q^oQa2KL4=Olg@*X Du2Щb~tp0EǸzؕ~YݹrN?n,ѓzC)U N!Req i綞.13ڴ'dA2Nw'mGsWd[V@$Yí0x7>C.][Y'Oa+o3etT8ԿP}~kUguaD9C,5)Te[+>V ϤJr+Ȳk]7rYvDmr%U^%Uez˦J?Z.R[,В;?XרGL?Mz[PrԾ>`ůc2;\a{yMռLpѱ*U{^Dq867>HIx+~癭SBZY%ak0fxJU&Dj4u~=lK嚾דxjA8[-F*(c*Nb1U\ԥUeu1qTS8vR -(TOAH: 5qznv!+J,5!,?F @9L;iL}Z/*uJIY)< qGp(%kX&迦_ʨZ-a~,DWwo-nlkEK|=VvUOD!BcCjT:Ų&Ii5'7c9NqT@ K{8źF kg!ánj=3j^U$q~+Oe ֟ĉM}?ĝ cɏ߶-XSPt[<+prQS'=AaSWШ3ń\9^0\S?sSnn3t2 c)SXcIe ru3]L;?@c {tuѨ?/P|j>l%Gd_U]^C\zYNP3C. Qrx}EB7V= nRoݯ/t.ﺺl/kE}5q q ؄ȜJ6HeA-~j`ʧ\sE ,G2'{Qrȋc+0z(=Ma=vyg}Mg C^5ž '?gm\_j5-.ظrUݦʱGgՖ?(QYU!XVnI\y=eBzlg\H޶m3e>J' cl\v 6F7f 1e:]-'NųڹcK0`<J"6^@Zgj;6ͳV\o= =@Zl'I{d"3:zp`\L%=IjZOgDÉT:%M;ާ㏅UCV_cszM|ʙ~>ӷZjE[Guqʂ ۑL//glmlCS,G盙qgO}NS0r&gbCl7v*-"%v㲲zxaT_N"dbzU)c״{:'OT@Ǧl*en?W 릧l4lORCk5u3 |m[ߠ_v^ 71hƕీhz_#s'X#zIgkj 8, Kl񞮟gaž5VeҜUZ,֘y 7=EmbZ[C|\uO'gR>RaEZx"]OЧJ?]rF~㞽ťxWofVxÎ7v%6'=f/O;W? 2`Zqbx?XGWaٴ8YϬ*EoX] P d` \PӓP XrjY6\MmPGrr!߸:N'PW~GNr @MB0xgEVL >+RG]GqwըG( w4w]arSwZ cT̔Tk+V%=Zb*Z[KP=+ҡc"jWC}ǰR0603&^mkB^JUk= dUQOT#3$ᢷ+n2kj|R'qgdןFppw&EV^Y#a؇̷Ӓ辞+JfC7\%^XƯL8SAv9ХJTB~;Ѝt#}8j/_"NQ Ue;=4a] fg[v`E.ȸXOv⌕k+TLw#rm;(Uۦͥl;lnF1[, ⴶsGOiu?Gn]0fQx,4aWdUj6%+wUG~Tūʭ4iW`{Zd jEYw.%N㸵7 =776e. T-pԥ5u^8/[YX\-(ݕjCV7\}>'WBw@tzV,?|;gp%r*ܥ732j;y [##ߍ_S'}F/2~MnXq榦jjk#_ņhWg+,?ƄFOV0~0ĬibZȧs.w/MZX<%egmu1κ:k oŃM 82α)aclXÞ߫F/LO{@6ᾱ ՉS.6B3Ch@N߈AA j :v(k^Zn A ikE"jѧaxm6tqقդ 4b.}B,NN®ie,)*uaHc=O{1 TjYʘ}eNȂ$tBe}c=Qm:p2mn(;:/%l Y[D5wv.iQ{ik@Д:[\|PlF(UGi-Ĭ»b>rLU\WJOȎ]}>g{ Rkb}CkTI'ͷo2?Tx?MBw777O#sNSps :~`P%# _uڪ(җU->R~JoT>6~;r9BӜ` 3LuګtJVܗevsS=T]OAӒa^9Oj&T rrC ]E3*/Kvr@re밢'S=r,s^SA{'Zn.f2O Ԍ_T|k>HogQ{(bnrs6&<&c#Q\lNec})kn0^'vm )>|`ukp)b$TKSM˒SVmz+l(;뾯R3 wYJ}D4>LSgϡ-]kJxlWe#`_8;S .*3\'zO=\ʔeH˙L9tF΢.]&dfSڳ%-Llh%H  =F PW\iƇ֬1Z>tϩ.>-meu*X4UÆ14\yagb~2*W٤OiPPcVw,qeX>`A1W{Z*"+8nۍk<{^MqqjSYجkP9$SO`S|Vedq0$mU kf×l6jsk]`L s'ug0fB:ZgCN' ~'|V 1 <x0muZUWj_~8_8M5 ӀhoAY)w6qXӍ+}+=S-@NMq( Zߊ%'{Z: _;_zY`AvKvǁ5?PuFbƌA=UwY<=4\;Y]Y)44e[le-2۞Do*U`>-7śf.on5!ޡ[7m]8k(&B[VV.=gr}ms52FwOZ,W=u+,ig6NwbBpX6 ufac'Z #\O~}TaUAp6 r7,Dnk6(!Bp)h6rqhW䲲 kn1I K}$ǡ x؝.H-7!v5+A*v>,\TƂ°Xk';f f!~Fae -;|Mniw.>?U]veh5#d-C+Sq]$+szjwwJy[/%DnqS53| ۫z XHZ+nw N"5Uo|;&w<%lnVusr4υSNBrssSr~l_6+X *ev}'f (%c;^; |'St^50A5D9;lO;&]sf^gRoZ$j䍑ZÓ\oP{ڧ̠CNoWt~GL[xٻ ~9p4Npm&smaqX}m,d\\uQ5dfBx1I:͕d5r 8 5t:m×q^&>H>' .ֿ)O5u,^X=/zHT'.=F*,V)(Km&#pn0O#0W~d,[N)yQO 4ԫc Oc9g̜C!UL ˜1Y:8JpVeW,XՐ1+5%@=ˮ ۀjks;b;14 -1(UBM~5'0ƫ15\}3ReT^5JRޗK .vj8bOm|8d4"UOjgcȲwl@ M UN?xEM6H}q;Sw h+kKnf(+$`RU-R4zj#{+kfr=Nۓ0To6Ͷ1MA=reQ' D+n2=Y&1FWfjj'lK|11 A9԰dB6=;{_Xzؚ~~? F+]VKOҒd{^+ZU "c[jlcos7]")HejaD:QӨ犳?]LAEa055e? A`d_AuM<8@5c<vrm3vcJ;G_Nc?#nwb"֯MsotʲkZ7Ux}R_]}7ȷ ܁]B >9F }ރ1nl3@bͨ! nj=|:lN@i,b3W,aC2Nm|:(T@R--Aľ`G!_=c,V0~v}i[Zظc[]S#- XXUqk:̲qf&`xF5yʺY(1b`Y +gZQ,!;=0S7OfyݼL^7=}\@%Um% FB3-b" r %K#6+->iƫ|F-qxFB&k5zDV)g1NZD bqRk_kHɚ5CbaEyj][Dahש6{FYؖ0Od[M<3+LfVTLl|/Sgû;]cXN>XrÑˌq!Ke \*^ɮ>Mع.fQaU#42]ߩ[ i* GQ f!FA!Lj5Nٝ;& LFJ()*qgeV_뮾-Z.ͫbBFE3B=*tEA=Nq]׋O.ɮ~kRՃV.:3-r;m5mŴG!=KZP5eQX,Vku[Mͪ6Fq $[@fSըDo~\?S8B fP_8f~gH3~鮇#Va̷U |ifŁ]DDnW$TeGLeGig25fE[ =^WdoA3QLO7f^*9E2ن@O˄>TN3PG:Qv2RYgt">p~RQ*>?"@cx[kkaܛ-#g^f.+We2k?vOJL{6ym n>\-y+27W ̩ln\cz|\gzc۝l5D,Ov=VA8ermbaWlsY6Χ{"{$6靧yaq/a E&rKḱ;"Dg;Wg;B?ƨ&vv,0 <8*4ˀxdNf/1]L^7fsw<<x=9'k Dm}-L>ކ;kbm5*G!>3E;]&ERwML]U%yULث+2Yn(iz+e*RNM;P'8il.+wsP[ܗ,;rط%)Q0e6FY2Xq٬KAo&,[LF@ z& ,a )<\ez#?13A83~q*J*>*:6/Ⱥl0#$SO#0ٙ/ĵʑ(?q SojLD$ZxO|ڪWY.+Cb!>έ{4ճY)]4߀ |A8ĥf mƫ;۷K+(^+g S9MN:No!YzY/PÏ;a@Æ;jӎzkTTs/;@YƩaTU( au+Bܺ&lgZ5XD'g VNʊ MU"rɡ;6/[F;uVmF8C}}َ\+٧Sl[KߍD]ێ܏ńa뾇&Ljd]ONDNS4fklww\KYZmeOɾ~ oP"h77ԝ*0 s۸gf>)Wq9҇~̧T`^/_댠y)^jpzajŲMZ{Q~{855A]!=6?{VR@ab |HV@|`0o Gm Y9CDjʯ?RĘ |#//VkWMIKñ"=F](NYӊw,fDX u`g!?m|D=5778 6n)K'(1G#{!V5jЂ}Mc}ˎc|nnnoF|1:;Uj#qtk79g'x)5Gpcy*%ʱ˯Mk=&C)/yCf@_/ql?R;OgA= ҬFx2{ķQ,&|ut AXM?K `hlno /ss0kn]̯?sz9jSs9] 0XJDlVзU^Xg5Xm@5YbY^ؽڨ+c"К,\۠:W~ޢ?K&g*KVUfW湃wtmzbyKӪF,||縥majj,-T3?&79Gb @'$jqg~榦^k)\ TNS{@^B*1ʬ)2hbJ"[C (UUZ>Ec6mM=F7i1W-A/KnVe# N/ 5e %r $NՑQ*[Lm+v/Iwʨx\-ɭJ43 ,n0Om ZaqSûLLMm<9:fdPNfcȉdӷo^s]-dMka`,7<!1AQ "02a@qB#3RPb$4?+Lrm~O?'1G Umԏd4?LbKSyd"mبl$qYvYb;{/-,5'R}dԴSα?d|5lZ-=\:ؔUuhj^G1kHp)'YFY{:ı;%1!R%pqR_I%8OnQ:'ɼ{M KB5渉}ԏ:u#䔨*3Zeω&tw:uܔfFLY/)MIj嚒g<2Kʟ&8ʽ_f9Y{;5p'{!|1-a?j6槖4Ū~4si|#SB# 斻8S[#nR4pM+dEabDi5ׂRzщYD^;R5Iu=dDG#^#&to_$t(j[vd›,b.={:L_rxRuF|sLGJBD48,!jK9*QqT| U؄Źy(IE/E/ض7m*LoRaCo:GQú܋߹(Y(+$Wf3_lҹhp{}?~!'fOˏ#pu{!Wq'NW :sr>Wsc>ߑ>fLpX^_~_Ʉ(Y\ty8gee|ϰc' %Qi-3D7L^\ENvabY3R]gIMdѼl[#MEq)"6WssJ}<("^%xO׻}UNj|i^~B^[eyY. fQ/yLqM3P4\+K?T_X2Bɭ4j10rpu#EN6=lНJimBIiҟ$*%d%?{[ŒsCZsZXD,f׻YϳQl_sMQBےYhx͟FS9K=h)mpԊQx'{ nGF)b*>%:QV\$JU؄ܮIA>%N2{pilq|)xWW 唹hl owH0ퟀ~O%8ZhN_]\fd}gnIhw65.ʳJ4-:4`"0^<8-mf ٤(Qm4UE$zGf9Wqʹ7OvaA6ρ'l$#OyiT9cO+kS-3ldBL)x)-+{4; /t0WI_~ǚ٨~2jGoY,hFϳZ&Q? ّQTOeSV20ZJmU/K4K7G9&u $R>K >ODqOcEhRocb-OqBW;!?_%l"~#"D8f+Б^H[؄t2jB'B:[&0e5h&aa{sRF*u:골kO]6Ίk1eEXJ[;kcJ4+?b?^a%eeM66ةk߁ V흟iok)>ܵ,V̏$_rS%;DYEw,Y {%w8 yȔ 蒱OC NLNQ%e5#Xg>T+f[UȔmG(bE5yXؕj?܎41r싛/T&!pmƆ֎m/8+!򬳔G[iFʼnYuBrҍh;4lE/}T&iXI,-*c.%4~%mJWZ(UY6 n;3j魉<]CwW woJ,lo$r?mfk}%ȥ8QңIZrxiqG3qLCG'bo"Y,8/fm[eEu~T2.9'9EH+Lٷ))5#wc)Kǹb{_"i/ڦUN kFj\)%]A =_/r.ϟ~۷m1ZFMfs1cDd5ňGŒ$`o)"rzƝQ/s;>Fȧ|qkd~jGKr\?z|qHbw9QKr*ԭVѧQ)Zj0{ysfz{L\McUeFl_44ie<%XZ7:u:?cǃ$|eXWO,;$/@j2vn<V_|_3 ,NG=s>&|\NoLSifqn2W柸aS4{ob(jeQE#l4DkrqEInnLS+… Nm8#6c؜dDy0^Toغeosq3S.(QEeUqHTE"HLJQHh -l&0#~Uig9ۼj.G#9˞GQZ".LM .LJ (/'RSz9%kxZ0qDw1%iы6#Ȯ;"c3/6_G.w˝a4p01\D,MbnQL}k_dxe>wEg-=/E w[bg!$ʍI;yj8xX^LGŜC>< 7tGϒXipcGlN=6%; |zgzݤy#?"Tǂ*4cl|ZS4o4T+$w;_J$_bK͖9FHX1r{x}Cwܲ_VfWbOf$TC֪խm(&y>ۮOSs?_)O&Gll46-x(sz,#MG[f[W9/ڞQkŘP,rv+|NsENqnS#:~FcW¨wm]!Ct%RUe%4iƊ(i)βeb#SS7G&GO) =;HхiKޝ%&ؒrz{-YQ9x,Wq*l~M)Q{Ks[M;'H'52NÎ-ϝuz\LmU{ن?ebςڌ9)#^/$zWsʎj)|[ ^7 č/c,mDEqbR>?\aYy1ZN^B&JXMof,?:l鳥##4tߓErHYVT=^ -eqϱ P'gIؽ$GbÊ"Qrf։#47lYe~/=f/di(I[ҍ%!-8ʽQEe4h%HR'^(\H[%UdlqƝ۹-LfxEelPKtoJbǛÍSĊv< 4F+HXq(J9q"˟lWB%'J9la/2H~NU^J?L٪GVZf΅(%!YRE61'dgIمeXq11&ԙY%0joeF͞UΌcB97\7Y߾#jYzR.:+,tR) 4-KfoĎI[ZPS['=rQ%ُ]1yj/+_r/HEED,=GI.&Jz+p9^䕏c9ࢍ%ʯՍPOdѲF5}QlUks\tk}?L\VCďx:5²5e}|!b/4j 4ugy/AcN1WiY Ix:{ibz'~vfT_Kc>/M Daz cŃb'TIE /5Gprl4yTF_)mmBISR6bYVUg({:W(*$䚤zQMq=Ks?,uER,|?htttpn-?4.QF]piqGN'M85(_T7|yeM(Ē\GsŔ]Zf&NR'|8g&lƻG.iD5#R5#]LTxѐ\PF.>MKC54Z5*)'ڲ-!K5ؗ5 pcK_"W#aHq$MvVn-[E[nC?Z919tJUrM+b߃uSfcTh[$e 6i:mnQeC 'أK)X,Q"YLn`vbdžk"kbJ՘1tu(rbS4(y% e|[[Yk/Y3 Ė [ 3%ùIsVO}LPKr`G7Vi(.uq[N=EB\3`GNiم)&$)Ȍ4(^ b_4S|O11ܙu)P(q#)nOshP+)GrM\5jŔ/J)^MS~M*+Uɔ,;5YrҼ644,=՜wUbѱJV'ZXBS‹471 cs嘻?|1Zf'fJcR?:ns)"UpB)e&#I2RRQ *wv7Df`vlm'sɈ;erJ=%Eqhĕc9lEpclD('TXGbsܔ6{mW'W#1e{;6=9k og;Ⱥؖ|c9|e,=]Ν[ ::mpFuoXi6U)JbvDb䒤9YoJk j ~ I|ek$rЭsF,T]MZ'z_"J;Q#RjK 2QqhqL\^٧f|[aǸDcB3tF:U삶Gl}ʭ2KsJ9d778,(ʶ6|odG Э1JfijH[Q 3Zf> hgfu?^vD\fQmnF&$nᴉK g/}܈bF&#QrS|"1FZދOZme8/)"_5{TVm%CٚjIQe2T*͍Eϵ#]l]CV8_sGLX_slȓG+"*#'48reV=NzMCtشJI#ͯr 6V'NhR#oTiv^dqf8mi%%,Xy:qOIy53S52ٺamR,I%LKĔݟ s0/RgͫN+]K)}/~YrBZ~*K5{El>M5Ѯ1F=٦K/& -su/5GG 4p$ #G&U5/"֥DJw#T15F!> *_{?r=o>!bjj5T[<4ǃ.J"ƒٝH;wjC0ΦcGubҿ꣨dviIUҷɍcǜ&|e{lًV^v]taIVz|xYI&tm1%hu\:b(J4i4N2ؿؼg48ÆBDRD`c⤴`QZ;sYGfI_奟d] t)XejUiO‰$ݒ؎QӞƤk5S)my:czLXbM-6:*+/$^Rehč3c7~G1# <7h-HsQQAy4^˜Jlgy6KҎL86l&N}8߶R5Q^~5嗓I ԅ!#nّIS)‡Oh/O1xD=] RRhbtBz%*؋!]"q8p_Q̔͟}#)a+~N<6|tNQu;onlEYc f5\IIa-rBnk]?l>sS|T|C$Q>Eّƌعvk:vF_s[!;5XΝ,$ƕEbnեKW%:#\#˖5{)Q]ѹy-أ}QuHxri+! %VMiK(4:q"$ăf3 85f. Ou]Öx$%7DqiSGVoླྀ+e.ofgK]*fjtjx57"Rr86$%:[dv1<䗕Rb:|lqU]Ks<v hkGT#':ɝSIQ4DUpj]Ipx01cOL~JwOf=$b*w R9 ^S_~?O%VRC{ ur V^]EܣsVE!֤Ęrq\a*Gz`Oq2ƫ%[Qz;iӳE7lׇ'tK{qy>q~[NKt'f,]Z(rTtQ6귈ok+D{+duZ߱/TbKBXpHİ4 1F>IkvPLw:zGE:#bz]cn#_qȩ-.w6I|eBtʵqqt!ϰ|GZka zF?X~?i-5xEХ!ݍVCT{/'/u8ދiƾ%f=OR_k*VC2jIvGd01\MjMXߓ?'^~NXE6,|I=,Gȯ*[Jx'74Jx:r .H%l#"",=\$M23\#v)3Pر>Ʋźݎ5!xFI3E;ٳ "߁r9b?YfrrΉ!,9> M,MS'N{F忕# w2{%Y>D5Cms?+|L^^XM+aҥj$'P~m_aK+#uWbbFU od|H۳cJ0m81˱P~Kv.ewSn)&>N#-eGFi-FKyg|?ȿccUllRt[{%-.:(QqŻ5;5\FvLrGINe䢬-=swTKgc(QUr'|w##+R-P9%ɪ>K |B|EsUAr4(cDd6ܭΔKkzUfnr81kqbϾ}5 CË% n4DlW솤dVil84;Zg.Q Sཎrbz%%!d;!WʓSQJ=T$>Kr05iʮ 7ܩ.ةv4ϑE7oby#MJ|'.E#Β:m]NOJ!F5tq~(ҊЊ+-ifE#Vh)Gջ)=4J>!=W&+¶1^n$OҸ {Qt3/ qp^[e*"\9IMY~.Q y&wjų9e˽NģYâ.PobU )9_r[pm}GQ,G*cgd]-HLb^Nco,M,R}+IIJo~ +WhUУ>Yӟ%OƗgM?: p4P'b"-r~ #qzj_Qџ#kfO oŚ5/!~{DwC?*BWyoܴj5}B\w8T+zG^O,YKBw"߹(*!%DYo}k%N6_ԫ66-eyjQXzxf$U*$U?tc|l5:&qH|ljugX,[.ՔNlj'ЦM4D,?$Qd eDM84>NO8ʶ/)?!=9?!&e\ Ya=GIL#(w4Timڨ46idxo[}(=Os,};ĸ8RҦGoDV} M=&GC[XiIƔ_߃KzhxD',e?閼[*]}-3]2l>/ĻdGjvnX[o,LYv_$~JMl~܇%&q jhٱ^6Ьs}Qe&G*Ɓv͚M"MO*IҙQFBdž0 4h&}ϧVi2.G9J }| JiU(o{Xc`&8VdˑlV;j%pu Mv5cZgQ.,Ԟ~M{T};K Fw{naR[9M i7ogY/˜cF>jH9.%{b.6IWdeB%^Q{Q/{_,4ÎBFx4KNؚVբSCFOSv^[{v9#Fҷfǂ-)b> XQ,\X-[uR9Jq[]r*bнTQ4G4?܌Ԗ61&LPFcb-e$_ ieZ5#E2W&!~[ (YFi*$섴TJiljCc.EtYB-Ǹ>6TEn(4/QX{KReZ5:,S51{,$TfF <(Q4Fѻ!ǩZvƯBJ4 +(oKi]RhE b[hhMmfMwrDWؗ;|Y[hr^ҍΛi+풍6(oyE?cH^{ pmjeQUbCHj#+;npl׹.f{V!$5IOXrQIj>PG )pTh^E RVM³TW o,۱(F\HohEBLɦGDpoTiQ)94%%m-.ٗaC~ dbD"85MԝzƷDhč={ F_ҹ-ʾƦWg.>bt]䕒Uy\5iL:T 8\+yvY}eQbUqqfX5cf$Td|-϶\~K'L!I?7^B|ǔxhZ{żh3odanX.%.=5+bOի\Bc}/JM3]εMaZlrΡ]٭vd[2S4:{7<jYKeeyN68:d6n-efö#䅚ݘ}$n#Qf.HڙRrtHgHSkaO%-97e3O}3q:%? ?G=[1J/+%}s/ FQt9ċkjk~?Rb:0t5c5L><|9lGLy:|:k?~)u:c)=GS#9&Ҷ5cĆ?D. U#dgIJ8l>+-QfYYRmc Zk7c؏ii$ӷ6(*(;*]ʟ#|?#/q樓;6E$dsk'Esti-^GLOPazou>|3O-*Lr4G LF:J toxXVgBߓJ4Q(nD15nYcᔩI~$Adw_* k5k)Y.6> Ǿ{;BwRd!xo*Yu>FKllxS]#l^zɌMqbePtY>NiFQ^K96-^?7xshLL9.6lZ66-%bR~,lo(-Yv)M'nGd5C>YCJ>tG~MY-̢[Bapr{O҇{:l< aaǑ(7(⭣bv:l$<rRmp9I?.莇n Wj%i-$Փ۱JilFzw!G_/PvZ{zE^?9#4rGPxZ~#~#,TgWƋ"Ozb1q-^ Ho5ش.o77o%_sZ}2EWb,7͚~柹MnzlJ\ fcQCOvQ Nup?WԻT&$~Ʒ. GJ;Ʒ+YwQE/%E32^KlBoXJIN(~=Ѥ,O{F=PSk:QC:;x5CPj59+i=q^cM$Z/*]+HhȄ7{ȧ^Ob{GEX$HprMT5[䙮])+#pJ"ՏaJKTK|^9$jE#Uʍy=4~4zO",Ywrɍ/5+,,/IԾPl#l6Qj2GcrrNk@l[Œ0>apɣӾQ(KCxb+~m{RodCaˢ26J_mx[V[I)Ercrztճ3sm#?}kLC\~KvG UK=m~ M:,ޝ%SU $,R;#myKĎpɮʱaJ-# 򇻱R,/$c?#MD$Ì| >ߑa.~GBebaܙL+qr#/J;ȜSr'[ݑP t?ӮXm6(ǹ~]|x5I,<xx {+<Xs0O_J:xmEAtT_eXO JKv.65ד\| ԌbF$%/K ЃG:`gJ>N|sXkɦ?sL| J_r3o'.b*NNTC5_i*cŃ)irk[k#$2ɻ{aܿ!՗##?&u5Eб:=$W%ه-S1^[#=??}~㕳Mj˲EyZCr,)|5QʑeyGwRgPbOkYf5EVIhG4ܷrt!Df'H1_ئ,;L{Pi7| *ElUCk1cdEj~K|[=W,g CeYeW~}ю\͑>rFdP,{# l'D6t<5#D ݢ8M.L>I$]#9%ڿ-5X|{#r17n*ʲXv҇즗?а Iү(x:0taC҇tcC</Lœ{{%bȦf hE'܌J7^䄈ʏorB?.N r؋܎%8cfMQ. GKͻPbfbA%B8>Pݓ䐰g.̖ d~i~K~c&FN;3Q}(5mbQR{pË܌ke+- w? ft&t,/$!pod,/&ա+KOb7݉{ oT Lz[ tkC+)A# ntN-ɋ >٧D1/bnk,bvOfaш .ɋaq_-mxn55'[$,jt%sx|gHx[$oٚڑGdKSOxz#3?/_EfMrL^eyigN>JqpuȧUO0kq*)Od]OJCTQ=(҇Q{Ns]bбT3MpSpWr7L$kIR4'fo'Dwy^Xj}vh%W >:dᤌOڈ{#{l]-E?ʳsF,+|6_%gyYhn]…rWn=b7oa{B0Nح{+}*K-#}ƕc_ cutjwA"dz%ߑ$9Dg&&ƷR|q#cFևeE|jJ#+Yj->e$airC}NQ-4O$,B1IA|F6/,TG⍯}me,]XeS'*: lv#"F&lIE^~LCVIiݘPz^ZIt]wWN]f.ё<'~ a5[\!b_(C'}j5k;Lrr)嬓5nKkb8}.$F[Q,Z9Wk0'f:sFtEZ6N.Yq5Hv.hѯ~zMVx{1؋hV<9Y/S?Cv,-kt#~dKw|دez nX|QuZ#5ɪIbٚHNi'|$Pi}MrR{AmF쇿b z.?Ruڗ&$ s}9.Թ9ۆT|-RNIfCF,8;QuGQ)ӥl|Iv1e֓dd>%[69EvC2RIEV}_q(y4Wލb!ʷLx;MƋ{迒kFvMT荶J|YDC?h+f~Ž/vigѻβ_)͂ƌXoۆɓ651JrzSi㺤4~)% n"\MS1IWbY^W-SO.3ngӑGcecHxkeٻ0HmQr/A1㈨7at+';^LL.NlNdА\1Ri$58m$_UbH{/(`5ܬ'_yhg {5j,?e7CQV-LqQ9V*xwϱC+e(hb،ur:/dHlyzl ]^|G8Ds -يf& %/Qd]V3'R:f{Ѫd$څ¨%5$ $5[ Ԯ1_Q? F}BOdp=5V۝O#5\HԼN[rԷ.yʭsmisk>hXqlZ[e{D doQ{B^}(5-R~.LM,:iޗ{K(n.G{$edV^ik{-߻w&|iWE":#n٬._bȧ\MJsݴ5.^z ?r٪FAFM2~v[0pL?S]DqV.,X$׈jgBӳHjB&nغ ixB8xW 0싍҈$Gw-jF+n<:݉nc%/&tJ̇xi6[3j8{0e=ъ:=& IJT`WbQ [xP5g$9:!1A Q0a"2@qBPR#3$bCDS?tkelUPD0j5I=ېAcX G|{ʏi^HD"rW bs|Up(gG$PAĚ(kڽͷX$ɨNrjObIM_${K͈IdؓE=r&°}ɶ:d_QJ$]jO2T&5#Q,u4p]!!iM>.) csr's?ݦELf4gviK h4|Z~5۲H(J,nilt$Jlti4"n5(K)Vb( V)IdZ ea/#jlͳV"hkb'lW(QDdۻrgq;w|{Lie^+db(YUv,[-(lU7$%rŇIyJvc.u#^9#|"7?ںJIJwF "G]Mty:1ԧc]'Qp)Ēw7ˏ95өSSٰ֣KN涘osY2NHi i ܃Ie(KG3D/acȤu4KeLlL:M:Ԏ>N+T pfT^$Ҭ΢NTuE5I2_{!W{Kj85(v߱QRIKYI$5u hKȔm$Mѧwe= IM(*Ke8wݳn6U'^֯Ɂ]X1Vկ*{[j5y$+.&8_5жG Nu9fا ZnkM%ʯדHl]5fjhR5m'2];CYN$uS*fbNEETilK87[fWҼ[v&ko`#Sy>3 ucEjJ 'S)4$FM9T7ëJg,TJҎk_WKjqWtUcrjy*t\*o|I$x5b)Ԕ24 Wv*v')$KC?NWRi&"6&o;e6IQ*wUqR`fch)Rƣ>?u9,zNƄ#:s{On:HTh,~]pv9ۆFa\ਧvS6Sp+X2Fb],FJd.!|9%;MNLJuXŦUGO'Rzf$ĩFoSSݝju>N^Nb:I"IUBv:FƸ5fpsê_7*tDݑVnLĕSܥ?੬ypURXU3xUӺ:lWbx:gU~5 OCpW*Q2QE/ UnXѭnikqSO,иcMê䢦Zتv)kFW>I^I%#RJd_o[vSলu7[bًXG>Uk[\4az|OFcΗ㧧PMe:#J݋'Vt~ pS'PRF5$ʼnW5䟃R7|ڮ>U; bRۻ:(SJ><\eb[,ϷJvW^gVYGUd:#q*U' *Lf0S`U6:#f:)m(mRґ%ZDQU53MFt1/"ҮY :sʩuUWQV-< p$3tzjj^ŋ %MAIHOsнUkqz(UeFj|y:jM5Pdd)%8";ǹx싎3St+j*6&{rL F"hsUħb)X[H cJlg^-X*BJė#%J֗"TaE+~qkbSO1Zw"|ٗ74&%F53ReݑڿvѣLJY!,K_Uչo%7F,%i*IUL u(9FGcErSz0L"2 |aAh_Z{)ũrSqn*M%تsRf3lDdqo/nRI%EUFwnո<ʚnw)}= Cf& \ߛtUpRC v2d8RkOT8"]ɈbP5e[tYn+\N^c:qioMR%L64װCիKϥ:ΝGNNénP)اF%Hi:_O> fSU\~I&q0Kf=Կ֒?J^ !U^aB5ԫ_64V&+PG+Kk9]%:Zfg:[䛔Uwڜp+Mk> Lb2NBD帒!x,B5o%V0/-t3"o  ݢF%<^i ^ K'ڽ*T*ƚ4$aiɇU4id $vnc5wj휪*Ću[W Vt$XɅ~=?jb ÓsM$FZ"ê q eUK114a nEj*ӢUzwFT6*bNM*܈YRz®Ŵ^jMvU1\Ϗǧ젥90АMHU-cSNob :=GVϦZWѬhjPTEbaSNȧU5\ ΅pt=+T<:iGG$< -KB(_ :QrrkLzVJ>;X4 %U6q$ujqLuV&v{ =ft<:ptb3+> V2?%ܗ7̋MVP燃V/?M_%8zHIi(`vb%>oS10IC:5ptMċ17"S*R4UVtC6)qJBjѢMF 9Ż,I&QI'-OɭUlj[U4K%}A}MCc_WUVUBr4TөاNPG*< QRnT()^Ke]y:Jun&Z4;K7:_'N9ͪ%ӇLHXoo*5GMহ:!L*0ZJ4fHo6P?nVX}쒜Xܮ۹ACI1Uꦪiq>ߦURM&IlIEiSYϳELRS\"S.N'M,W*z<f|V⤆*f::5)^EC1=;a=(R3򙷳ȷDˑ/r""ga%I*jh>x5xK+zu"kӣ}B nmQEr, 7=ctp,Uf}7s>O^O>'}5}=tùM}MNti<5,ZYJZ,W ++TII진M_5RJ=E rF %CŦ$~+Tesqx(U?KJZ)LvrSFݔZkڡENzEJP)jURW*I; NZp UvaE[*[T}5PiϸUFơV+A xkDmSҢXk亻4&NCW57IHydfUK|Q"_Iti4p4Շv|$*stukukuu[_W]~E_GYV$17t,J\k{!7ʪ]F>D/?Bn1re9ʚJr*Cz^:(XKKDUU.SuU$o%cU^IPZNRuNݬS#m ia' J]]^I7S)1* iraSe LJr*j vroFSliQUz*SN{Y׭pMRn~(\bFGm.ZjEz5S9[X˞I)bI&*Lx9.L/*QS9Y9'qmAYWFQj:bCOTnU cl`akr+ [r| V*!(Cqcsa!nñfh+oݱo::&aV)ajO|ʫ?˲-%44NJJ[5G&R7_{則lWCW'";!R,'7HW6ΕF*hӫӫӨxuLR=,$"0iHw5$ \#U&l5w&a*y&aXtq<ܩ$Ė:D;V'kHN ͇q/: t/ xs^-tܭRåBB^жW=- $̸>ul'6.s>=| Wޏq%fjKIVV=URE5USS!-NTY¥-+'=e4'viT%O'vҫV <%xSU7V4~%U^_' UIlTQhbFrqϱ䩂V{jJ/F Ŋ34I^*N 7"K#|M Seߵ\ŦiA$lIm;)E&̄KA5NZr*O eJ73G\XU]])AWWS ӼS qlDkܑܥFU8%n|)ʨbIpUJw4Cq4Fܣ5'vUO 4<*\OR,I&g4:gF_S1i43De_q)R*tP*6ٓ$~ *T9FN;zj8KZVkDapӥUU3 _Ϩu|W][`'KUSn 0*5?M"P*lE/M+M0FTeFۥT [4wFM vUN  J#j/d϶j- NIJsQd}MHSŌً\ή*qTѨXt 5Ō<%M i.qRt)[db؟[[j۳aT,4E*Mtj'GOG:hzJ:K woaKcTQGE3}:-UwS|o|]ʙN vk5M,S"9,!e v< ɹqvJiӳsLlDޙ9tUKܘ)z\~#(6{ CxtKbS[%I XzMBiUZL:bm0Jyjדk'%ݛ H,Rgs[(Vrm_ɨO!obM/B`->H}8y]k*SMbaӈbzJ)F.mHeச"åS] *XU +Gu.=$$A ƅ҈Q*`J4#AЙ:d4lI(KnOrLPfUsVj[18)IRc)/ȥ(Ӌ#aRó?EVN5T/Q;즭%Uj!3ItGs ,H&.2·%x//K'ηB}񚋥or2b߶;d,AdJ5Hj5DjU>3_7?qZV4RX^ nde1=8Rq?zvDur%oDIK4ΑXmSOԺ^F0=7,.ʞ^Ҹk3R5#R5L}dnsFؒyά+SC*{UPn/ 9764c`P4dc­ѩgPS < Ȫh!bV3h[!ViKFx^alSOSbFl+dYf`5j53S'1dÂW$N[#ZUn*6>2!555E_\p>{7PkFjcoT5#Rfj(.:vz)a&頫sB(G܅vKr#oaz|*Z&$J<_Kb& |6({W%U^:yo& #˛nTbDHL4@DZA{jЭ[oޔK\3%7iCQ;AT(ت*KV#66CI)Fni^afY4Ѧ4t[!4}=<)"l$A+AڦM(‰*5 Y$E67od}&iړm%J +Qܑ S<j. /7AvL*W~I"Y!3|bc+-߿7٬祔X=:g-FAɯiUL[l7Z:Qԥj.2k;3܌Ғ*+[hB۳|ټ~fO؄VEMJ4jKc*Hj5/#. mO&SW},**۳aUWTnU٪u*5FPb7kHօYfp5#Qj:ʾ;b &KJ"<$8Ϳ7 J*=\rL.6^eܞۗvB{JIi4m"cIҍ&A "+ V+%G^ A ccJ{QM5ٯRu):y:]/&I$VQȊIa8&DKʕ&>He_ʼnհ;)3]{5Xܘ5IQ#*ó*gMXsTzC=P>;)=PgM36"P3cσΒfRU2!pڭz|eLP5b:*PыgŪ%{3m ym^Di4'W;M=fMI*I'N3QSMԠp5A,Mſb˞;d幍F#e.Rk5;s_9غߺMo<M,C4ThMgf)w>hIheӁS;an5 sl\Jv+vK.__2&i!+sC{c7SҏQaKbkaՄBMSsbnE_r/4cE5ŔN[~OR(vSj%x,iLҋ*YGt{j5Ok$jl,Or"6&3a[5}Ͳ^3ɏ2L]٧MBolI hA>7-!ܮ>Ε9r]nV9'tBN1.Cͳy,.HĶ#9o綛]@S{ HB|jҡg#EnWdV_5KA8-?ey!$=,ً/sTK~ Z57&U‰*nzvDy/|?_Rul(wlҋ5U6yL^Þ=䜧:{Qubgc:0j~OqQw?ė7&͆$IO-ޔi!B,>܏c#SåSL)[Ó]-|b%IUPSYSME&7"*lnE\( *{RSRSSEʨt,lgO?Ȓ=>؂`rPi. MTJsK7q;A&r%'N3_qsmD$lo]*Rث(UW$I9*u7ka j.uV*h6%&**HTLéK-ǻ $L_uFIDF%:jk,5ZCTȒʭ|R߽nJ>v7m%I=IpFpA 4 5$eCQU.slw*/}ܣr%10'\a){fǒ}̧U׹>졹5q&Ȓg-DNRI$ȽEeUjD+]TB_mDI8IAM,RkOJ|4{#q[ܱ+N*R֠p+R: OJ'jsR,e(I$Md(6$I$I$&J]җ$|ЄGd tޤΛ N4R vOsJB[{0;t$&%"Q r(b nJJ>Nb؂ 6[;Nmy~pQ,f"inU;gdO_{0%_ @}NTl:aS)l-ԩ77#HL*e}ܞ_rŋ,ә$Wp)Ĵpভ'Wr3G"jH#t䦦ꃫVu*u3C4Ti~ %Vk̩ rObb8yJCQ#9ʫ5{)$'OfP4FRr[쟂Dl6aU:TjUbةrAϿv(\1U# $IB{Sq:ORR[k  }-ɤN5%h5MmS;*u nXUJ{2TXk-+Q+l+ُ|SF!i\忳3B+Iljdsaj)3S(sA8[j2viTDGLl2U?mn DYXI2,Jc0/jFV*.8S \ҍ!IP5Aϼ(i"2 NrtԶ̴#ln6>Li4M%kJ)s6EKT; &הQV?2rS-5AM?%GLg?9l}E{8*UKΤuQTd)sSc ƣQk1*pbƾ \Aq96crP)r[,o.JMobOEm)æ%^;d"=$%j%2n/▯b"Di6tkqdWS.m5i/Q#$iNQ2J[9["MF;RC?2ƒW~I3JOqM- ߻ouC4(܉44>r}|$M>HA࿃K6(cQ՜E\trSQB|fcMƹ% 'j"D(7ܹ䆲9{Ywd~ni{$pS( %!e*nE$`V#R9Yw훏i l]j;-Gɥ蜡QAR1RҕϲREUNéh4b444MyЏe=LU>^#Az0:JjQLrSt?ԏqXWf_"}oگ<|٪$yDSTJEoE^N4j:KR[e +6j;9~˱tڍnX1j WWFq骃׮e(Md?9MSy&}ϜQlrWI%5٥I٬k5N Q)y5"MHm<ۋCŚ JcQq*R0i*Ţm)vazhrRڲ gܑ2USː<~O],rloo٨m*tzQQPR w*Nίfڳ~ǩF ub$*ui1(c n8"*TAU*ZnW<͏8 حH8b7{|9SE;PI=N{Jv];,oO~t.6 j%>% ;د$>#ئDjy9{٫'~\{~{'*9=]"FI>ŊGp'>g3iUSs0ŅFQN vȯ*J#|#Qo,mj5Iݖ6$ԹM 94pn53S52|Ojdjbje,7mZSӔ2IL;-=I#~ לvH֘"5#[[qTfTj^IC|{o4J4G"?&+C4$1Z]wDe TS[~ (ɏ݄E\F[W*=${$ܷ64 " i4oo{۹]TQnv6(mO<1H,lmMЩHG*݌C!eN v~5{uIj5FMFQNs+cv6V'{AWVKapWLmofߩ$MKMHԉO/jLVI*y49~ $L&jFP'Q0I"r^E r6 Ho$#E஥&)hjR;ȪqenǹIYI7Z4V[v`IDGȩyK?Jy? T㤂 Gu v%xw%1USjJx6iC[#P*㻟WˑrO|&؇n<~rad#Y5U*M4 Nv;14[1}67{fE Vʭom{(_$%JvŞ^rT,OM6nTnSbv۶s?9؜D'9,$WtUoIlUJ'Iu뒎IF~gTѹ92TtH1'SϓJFo9(VL˹!Q#+.A y.&nT)#-)Q9>?N/$P Bd#Idnl_|dXXjx!4M6IHTilMhlSRɯS5-˗˂r~t--ͻ˕bi&BD&iN{3GN{EґܩHGBBI~Ipn-rCFɈ"b67Y'snvG{eɲ۲}~ڶ_EZqE'$rGU8d3vG~ FQGqgOuIJ܌kq9?(7I#9sb|qۻbDܘ'`9}Xl%\(%}+ }+.7HRM~ k*/i[+nL>yXd75r?ˊ2k2e1rp"j?{\eՈF\M1rRDxc%5eXۥT6q//-}Ѱ_SjݛgesTpO&p7B!1 "2AQaq03Br#@Rb4Ps$CSc?,ɫ Y,M cyܶ=ǺUk= Oz<[?_(܎}xWgm||`^1!I݇Jr U[%TBY}_"W!d;_>-\USZUX|@ÓLx6qFJ'qY7Y41״ʩlBouC* RBzM pYYն;|x_v;P[^^\z*YB︂U_χNf(w[nP&Ϳ%Rza>Ih+ljR?jL(G^ nDZ;:>\G<D*xL(a=.5Ǣԗ*eQ+/e]U3 &霿?ܱ( kagԨ@QNK%ev(utݚ.V@[=І uQtOK#bGPlk)dq}p\UQ,kK&U -x.jU_4mZ@!mu.KK gZQ*fϩ^j=: @ ]eK*mhTfKal V[z,U˂ؕAqRL,1Ӣ#ॆs sV;R4[BZ:z .:1UdKd,JDb+(wœ-sE*ev Ym Fhb!FVwd4VK%*7 aYTREUB-h7)..Ujjs@YY*_*}ӏ9Y)"VP,}.P]0TOForA Cq@UYYad6ppU3*j L웪*XS²Y? jY,:ld 8 xSFӊz[RU-YCsM+TDNCUXyL켶PAPZ*Ϣn8K󪈺w V4&bf()urU{!N1]aF2R 59 #ӊx%J_dW*UฬnEV?z~l1xͣ5=lxƴ {զIRL=j\\"\ax_7n*SStثFD_ "AN#Q3s [.̓,@GO F>5[Y#iM]19lvU!uJڑԬT* YӕU%'mT*B}VUZ}% v5ip\<7@M"wΕivk5{W}ݑwe궀[afueLNҪ kFȢȔLPgaUG;G꠸Oa]GX9ߕ5TʡuTxlw^c{1 ap::/xayRѽӜNX겧U8;" 6x;:PJU,ʭ8ayɘ]: Ld&)dx8x2(3rÍx+g}+ZU4Eظa+eyO*/ ]|^MijޡdY{u8ilgwIC2lt~S^SfѦ⑽PBd2HTM~41JVwsj^K;)m7ҊD^:dT9?`exI(މ4Tc]ԕ9)6mEP('(m*`-kو∲ՕՄAewD0=J[L-VSd oüfVvXTPV]rj? ЪU u R kUTE-bhR}T>mUo.3}h*n XyY-jFRY("8)nUfPYNxadAZ]ۀ Y[=Nmipe=DKoAC#O;P¨*N]"]ȭfg$}Z^ۚ9xX~)ÞqZn7gEO֎ߋ< >S*d!ʷfZRF*h[5'yohtnx쳺Ko5Hm tLѡ;] ++DYRSJQt+km,k5Pe-wu "MWt(8ZrY^jZQĭK'"¿R!V`ey}_(<=IEpx"=Rs^m+̲%LAm*>'UjlŚSy(vUWٴ-o rJ+ξj Tzii4^c5Zr}յξeom0,Lrwrj Bx8 Kal ˭J@sUm Ds+[9[<YZlWB_hJv hBO/;aHSHIUúhwD7U0WƳ@0UoUi췢SǠUioY'dVElͥ@t?Z/Y@quKDΞYJTw7!Zwk7vK&M5soV#^4fG0uX~s ݒZmU bhJ't-Oēwuqom-" V8+G N^X'Pցvg?Sh8Cnz#Qez^[?:uF7ٴ,Qn4C8>&z? hvk9F.2|9ߡUMa'yЪ!XqtR.it fvJ[ND@( haVUq LjT9^ӾSŁm8ӿf(NF;v((Vu/~!7OEPA޳T* hz~3am7B7_\0kdC;=UvJCUm0ټƼZjz ^gsrj.a故<< =Y-q+z|ݖU$z,ײ\'5$Gg=|)̷7Mf:6#g޵K}V˗::俸^S %!  SVJN|^⤊n@B[%|ݗb0NWΫ5%KrkT*m!_eV߲'mh[!G/U,ʑg<#x"P.d0V̯)DzȪY:y’+aDzl Bsf Ud(QYQ^P(ZAn( bqaͯkT҉UqUxB%Q<X v2_bl>&M s meU涟m?|էuJhs raqIZfN&f겜Tc俱UkyTtF<ҵJB%T,kꈌWs4a9RT`Rგ^\*2UfUK0kYG.amQidlƒe$j(*\00/"?r V; Y]UvaSt0HтWim abpVW"Ca>,9X?3V>BmgO/-}ң?1Iro?׵M'Fee[=3'O"OeV[%GES쫃p{)ZVU:VܣLֱ1d;5\q*XB[ aQV[+a!0RgqTlzߗ*95KբD*>V-q|c9U,+6vNቛ*!T*N[+!M€7,C%Ah!ja0eLժ¡RJU3vKd]Uq nThnB΅S-0^dIRUѦ>\G%7d.jdMxZ W*AȢwa\2n И:rM,:֫ oONk̮wba |'bWW@By檌︟vF nxꇂч%bUGXSz7?ڦkUr l-8[^g 1q5%:ܔ*[QF,SUjR|ԚUGdO jAr]#{ꨨ$ݬ{#Cyjƭ[hELQ>a,$S+[Ki@<F6Q5Ue2V{ ZG;.ZvQfy{*!Uq<EKۈp_T ~j\-UC1߲#-Or¿'&@InFb~eB`zx} ou\3lY?ASЏ Cꥸ}5G,w^6TF!gvk%,ިjF2YMQK9-R\z)*((8 UF9_+|1^ tS&x[R={(R&2R X*1VKlPF:tCeVJ u(akV,8 G `W[X[L*7,% e -JU4\3jfNJoT(D ZUZ+5O"H)B4VAo*V@@.f|R?h&*ɍᶇ1k)}Ng˻FF?4xƔ#JtrpMr[}3B4򂳅!@W4Γl۽IMU*RkΓgυ7D!&hI3+sTТքfsҡT(R#I?OxAV}<^rYU2UR 9-q=٬tSEX@X) Y5R#u._qUb߲QJfgvk5=PT ga;EU[~J+e/Yf{-eVe~#W5\Wp!sG  'U²ZtxiȃBYQpP7Ƚ. q!Cl\]`e4;?" Y*fWF .i2 ^Zpz-Ks8\t_?ei0"\Ǔv\}VKZI,#k~ԪRw>H}yd8Q_/u. @-[0#6@mPl+,=!*~Bj~澍IJYFO=l%:Am ՗GAnVn[ElЦU,C sZY7Tуhc!D uc` FO).%.߽̏$sTzef NT#/4ISJ( ɕ] ”etn7AX-2G(ݐNw*&B@.+ǚsHq> E` 'AJ,Ȝk5}tM ToYТYm,ժ&=9ihhTN"j[HdVݞj15Ǫx*VioڛYA 4 +X)VtCᖻ<s!5]*TX ) Pxj$*U7YV%KF^k; V \U{{9֭J .WM Z^-%@ڵG=L,Ud. (8:TkzaDS/N[J[Qh;}QQ4-b!KmGf赱EGVUAEO>Twh!k#gB[hy(c%.._sjXx,TW\9|Ar+:)! -#W%V!m/1UڼʙY,Nr>' YRJ(?h Q' r 8n*[WD9gK[ k>ю  CXAӂ(215롕ѽI pUY/nUmִQa}m1z\0*|@p~cHFo]Ra).k'RY#5*W %a& urA{BkO4X Z*a{%)?Uj)WP,k!ʨ@ 6aY5D*"qw@F+rSr#7nV8nhk-W9ށ F-l1 xDbR%cz":!힋;1lAR)B>xo¦JV/Y{.I\/Y/%ąFi6Mny,=q_ 9̱t_P|Q$q;wUYʬ磌1 iVͭ@YgPnQ֚"HށXjR]lAB.憪UZ W)t,$-k3,e!gwUP+9 QgُU\B{ٞѬV'[V_vV, w2@Ư,)aPD،\p<BEVKoeF709r"vx L$&$1ܖpPֆZd:\XFDx8Zr MDJUlwJ޷z*ѢHT }WUCg](9!z+2 c.D!%C RCN.# A.2$+ńNMNSP\oVʓ.+2tIi"H4\k? Zӑ;꫒74NL&[9"8Nt.$ts檼f|9h`+Wd]5Fhtz-;= k >'eXCXwXdGW޷օfdv|Ժ-ۯ0Xc bRѾ"YdK@Amܪ跮 V=V{@8TYTv[^Z 4]e ANkfSN,u1@ (şrf]eKm=zM!Pk|7zzܩfgMDH*psWC $~eT9>+gW/굘O)QWm-;=ʶ{"ha@Rʶ-|N̊rr0Bg:[}IjAq#Im(SPY;-eϢSp>4TA8o"nѴNC`J wVcΖiz"Ot~J+I[O]t(VO2qo$4c⫢e37Ť:4f p!7.2wT -hi%9Uj]Pr*Ym=Vd4gwXf_V\aUú`%n+5\Uk(2= cDݑ+** wM'M]M jN]c%qEV8)#HK:.1B l*k ZFn`]i8fWV* _xDBI.&HP+~IBE𲒣 i/[!QRIܫE{[qP'[5 ]*.mv);iw^kPs u_\-:v*t,*.#JTӒ N%jTЪ9VF`'GU8s 0u q2գ1ijx"P}ᎋKUim,C]k:d#MN2|-ifTUF,M+%檲օv^aS]_eEBm vV-cU* pAoF̱*y58alLܚʃay Gninb•GD(7;=F UQ%Lh*qA x*!1*[ Ay2 #5 $x]_0M,sO>%bQr!WwsۿܭlqqNo;HN,&K,*417d/[9ވb(jYZò5gu38 tvU*Tw-S[XmYSThp5zxF.1}h+[XU\Y P*#ID9|Ed#'ⱱBsV >C씵>fA@q YU1jP#E j y:E(g*f{ 䀛F4M 9*zܹMգ(3>sZ֎q?ix> @"߽<ܜGZ }.r ,%ZCNXyg5ĭ[F;I[+eP aU4E\=Tjd *ln5>VM g]:硾EdJYg8T4wF:(qӪ2]/6t3 elX4ʉQ@@*B֨ʪ SkDGr@6ѱ#"8VM >krz]?ΞUFNT,d5bM(+ Oox~& ~ Ҭ.HWNЄEs34?q $4ꨳގH uRa:]456 N[Y<Hq1tnFEո ~-ҵ[rYDTaRU-8O%9oC'U꥖?+RN0Jl?UV6S oeaj~_٭oFCp"!K,!ՐU׎hߒ\m1`#H+2ם1$2rC8@hQrAh&J Qv"GTNW~`2,ThX?0YAmB[<7('b]P"J&gsV+Uy\Э_ѝ"n,Yu7΁fpTUB?r=ȯ2UKk9ꩀr؏PSyn@c[Uckb~SD]o㪌aK\޵WT ]@MqZDWNhWj +wŅ<@4o33H]_4UN%yzJzȫWaJT|*/1F/XQGymr (!7,[Uby,3=Vǭ;)הlѣܳ 5^k_JYwROu ÇvW{*asB$e80q[^[{*Y[S,j*f~+=\T= 2?Ȩc}BUWTx"JlE$pU.wTkkb4Ϫ5 J:k!Bה:b;!2 }ujk'&KfwBxX";Z @j۸uv&@_[5Z%䵱;kGU%已l9gM.%@v!MdOE-@Tc\܉^B{Y6r$iT0YS7ٟUOY.ilf PURӸE1VC~6TyTY? ۮ3c.3Ӣln愐uڞ^iT}lnMOM&yռJ7B*Uc1#0Fj@\./Ze6ٍ4@ߡhK 5RK[Ӄaʋ恲7Ҋ0( Vb˪̭-''RM!")<PEώh ;.YhRk52(dO2Y݉iU!AR_?.cI458(dY' QOE5n':jbn<9~) hwfJ+e7Ύba(]YU'sM1]T;N'*1nч6"ª ޲0_Y+]kDhmgsܸ*SD5pBn n7Qg̬P pò[nN$<ְԢ1tDu@n⳹Οil@W dxfshG*vXi$( l*AU4气!*@:S""qVPoIYYICAP]E3I RMҩU@e(!#@DnQ1 h8~GE2OUB\.?sLhT\T. UivfW =%Tq@SU v٧G֫Ea'veVUrSI*~t+'wTՅV1 l| mmM2xcCG-<ɽ7_u#5!-2NH/jsUE-)8rRZZӒ4 ]QFõ80l˂01PoP$޵%eb.FxVӽVo+#CZ?*s^#xXuT13-*Щm窥rIw7 [2]o'f~+XT VU֨ZJ(f0/iދ'-ioPY ew>eK2i%ns6z)k7fJ%§O@UE@qdž}х#{!ft5B]@p%tFkD9F U8gm9jM9_&p3PPKBBkR5 J ^ (S=89D GK[@hdoFhG .R- m7X]h<˽UoӇ<7-(-`5P= Gx.&"J eV Ge\>0Ykq~HDKhZίk ESIE.ģ耢1sRGȣT*rFLiƉP 8*תOj<c 8,ƶh,n:|RaުX*'=0xT.j֟x/R\ @\N׋nhrY6::ø1R֧[K;@ [MVafV 00>L*WF4 쵝?eV1_tM$L(Zw9ޗpRLCPHBfdYeR@]kvTʥC &Vp$@+d-7U_fR_U-[=ŠNgzVMZ0>jSePB̭bu)dRE=ROuGlR4.j U WXSNdFm'f9m8=M%yU[y~"zBײtP,*# R1^zyFZ)p( '!7epIT$ 基+ota>k5Aou‡8GUZ ZFHLօF.9!xyUW~%d!7^cKT+8S'GPnK-wi0_ZN%e Fhet'Ho AsP "8/hvZ4]-x"-,5!!* uQU Q>N3Dk4c Pa6 /W Qf~ S4w4ϊ445GKX,LhT 8N#2d>WBnnm瀧ݦߥ+4K?ƆLY4*TL--/d哔5C%6B~D ݗԇa4rTyE\GudaguJeZFI,pKeA~ڥT@JM;Ut*?$ ek"Z@ ZB:̂e %>ʖvaC3GA`?T#ඛsjwT!ʷɈ궻 Ϛ⎨\o DaLd1g(Ǿd[GNJ+c}3M]%1U%IiUCg&"aAP j]B6–eC[p %*U0Ju4] -<;PBBfIDpXQl G53S%]fS>+p@DC\7VPp ,(SʛJt sD'e~_/ÈP^ZD4C@^Sb˪ `U8Ra;C;Cf1}HTޣB$.]Tפ* 1류N̩n1l 2FNHä{[FTx(5_>Jkcunq1n":A] 7{:m=Y!Z2F(?o* ՙ\JhxC#[<.-W©uUoTiUmޥI3S+eݖ] UGoi_1+_2k,rU@n%EmУRyܶ޳wZ}B?2*á@ͩ\7C63tUJ5T䄽-a^PRAV/\aeJsGS˝rPGX5T[ClF>0Tz/,j{//دĵX x#V"ȬX15TyAEqs_hx`g :䷚w܂FE^SCKW QԼhi4 >gY(,PZիWh'ORlm9ݨHʥ)BY,٬bT5袿gakv@~7XՙaTΕ!bOVMk~VctS@nIY-,nc="Z9-SƵgt  ӢfJ >w&Mw[~EnTY1D M7|aDAhNCڡEqpPuNCgKz5! 7ȨV\MYRn_{:}0 ~[|U}>LuZx˛iu6mRk{oŅ;},P/IsZW@C 4Yb`Hz9B% o.e/A3Ң/1+D>a/z~ZKgS?WCݽp-̣|Ԭ&wՔL^v)P3fQa5SWU-uԸ5̫?t{1: 8tqݍ1r&7 H);R MWDj[PYbj0+MxtwvL/~CQ+]*Ǥ.Y%"CUa8kk3>z%Ujxt`w迄]1ffpD8Me #\MxyΏtV'di`!} QKv[UN~l>ZNĶpE 5CY, ZzygD]wMe랳?%+/S 2Gth|j'C_2>?yE,V[z#QԷ X{zӘ+o͠+IInciꆽ>0LSX87f /@j5uO<<┘ài:\S"/rApQN㋞o؏>5Mv#M ]e7\{E;:1{HJ F|{ž 2o:4 Hf[-W]nHꩥf`]eSBodSIyliC5=#QVyV"q؋'&kypjJ`Apu=ŐAbA8 QL}eǔgk] بWe֚flP]dJ9YV rl^7xuiIhElƫTʩ{^v f'79UN M1٬G;MIT{L?y[O XW4]_H]oTmQP9&lT3hrk1eΪħ>XޟIRg.Yʩ%&8a32TJ>o*UʕWHc?jqoA$Gl]9% I1:Eq EDx jKQ9Ջ"uz3tЀPs`c|mxZB3) mqAB%" U6CX:bMFZD.9[]peˍcڻw4PU {£aޖ3 ]!Tv:9[`K:& z(^+^7FhAn?xj 6ZQ: *5S-7\ EyM,cf06sL$0-{75+l,2(16]a4Rа3($PjdڥFC5!5ʖHDW-?Qo\KsO( :=fG N"Ҏ:qu SZX bLAu h| a Y_Pј?а`)4UuWRX\Zf&vcj\ԍM%&J5pX*ӯYi5Yx e2߃Gǘ x[o0Ysn%ޑ<`24y='ǕҠk :} atTBWGJJ11(-hc(o4" ;r;"2:@I=&!\NjπYJ 5 `S/DGMDWXRRdU[Ꚁ0i`(w;%+;KՆ-O;̗em N."dRn aǬ1#IuDRURq,Ċf8cn؛֊j.э[nRQ`A%*3M7ywX^I<8.E6Co٦t7}v<%jlh &*D=YAݵ\8Po0K9 VKfucmhl4jm}bYJ,zAKg- )I~1Mkđ܃1 ^VZ!*G{Tɿ}Ȗ7e{A:7;/U}4jV<kqw""hbBN?w+w[\I9(i_ M]-ɷ mSRnPri_zF#@îݥ틔ux$0q?9&T2Z1ί? Ak`v>tF,w.QVE7T)Z.a"D4S .A].szלE%O.f obis5)Am5T.r#1Fb{Z:}V5(noi#\9^Ge,bCy~v:+G\b\6w?V6^ 1XSՁO NH{_h4* +N܆b(%0^+݈|UGej"oΛ3<!8.S@-$v)@9ŭD"ds_ &&Jo Ĥ|9ٳ*r|7Pв6eL\8>Y(pJx:Ts=_cg.MXB՟e"6'M+-ڕ/Jx-Si=TH!)7,r;ʐbSMdsQK $ŗԓLzA)kygV4LJASn,Y ŗοiqOG9 .NG`ኗNcF kь$Qn³ #uѮ.BiWN{[CMe V6u6\ UCc6& QSd D]ԀU+hfGq5WZ[@ vf`^@?g䯙0gϯFxlǴ|~~,Ʀb%_3kGŘ5BO 6oû E֏̢Ebgܙ26_ δДWMv%^cܱ5 2jhU8XĪQL=MA'2zʊ`Q U&S^x]ٛq5h@b 2pTb DUS:kt:(25ǼוW6IN`nk+pbU]~ @723DQx0BAߓrA'UʉM}b4gOX!K~2HE.iH)A)n M&*% HMtn} IE컢 Ӷf OSljKzIMϖhWncMx/#?06ZM^] l@Kڱ>쇬}6-d$ gK~%osT's& 5\hJ3* w٦قĩ&bg<$uMszi,îc؉*kѫHSan-+dϼRF0~6CY!?bN//Rr5J2 :ļx /1.zA]oHv?We/ |)ևp~@; T`t)C_.ܦep":8`)ԡB®Ўt{f l4!t%ޟ8M8JS37U~ ]FL-%u#VVwESsyeZY3Og#Ql?}#Rg'seyqM9wWuݰ_0"nXRڽe3q+zBK"aNL길rؾ؄AԷ>*ߩ.]LK1WTWm%.}R5V**?VǡWՆ=hyT h[yfP=1J7k N,Ayj=IĹkn\y 7Qmp\B|ʢjOed^NFS9.d@} QF(TU醆#<|; "Pi룰qY%Nop[˪=es< [547m@*~%m` a[.1EZ0n1pH@K'A|ϒjfj K2bh{CS7[cjlW}7@)_FҐCwY ±e7]Ǝҫ޼^ ($C^*] RĴkb@Rx|}1M\ iqඤ0fa* .s,ݬ6# `&P3KX}Y~^%|4o9\ *iJ7 @#?-f*=X5xknY[.*ZvM3YE3x=Qw47w$P# Kɣ:zByWЋͩvϋ.*6}7 5MhzJL?(F%2XPwzP WKW^G?NM =&CK_@^UưtX/ &b[{*k yz׬jfGhVy/`lKsqb(?B׼OZjYEщ`II+6.gݡK<p h%mwȚʔ'=+m?wAǜ(\ {Dͦ2 8H%s;@* ڈ2ҙu+QG oҭnTXYy !lP)U, cfD 3fyetQAi u%޾K(8&(x!JVxkP@*1lRs9.|kx*q@MPFC6bTri2-+GMbNM 9s,4< 5KբgMERD\1yitQhfw9ǰ|,;I&Ǹ5оeS&$a o݊K&$S7{L )ٴ| *5i¬jjGiD4;UFг#lWI]o$.@3;մ2EV4ªis@*Pz}fḇta`CyGkBn~a/ZAu8/k@Llί Vx os[o(`j&X1019x9_ю}zb2 r;-+4 Tծ( 1C2ybbI?^,qB١^,55ןgcw` u[S"K巀jk4;y]}M+8C%1nZ6fp.M/& joAz_[[OUY壝JucK7UİWrfJZMi]lE3c"%1Y"[smrNV\6B] ƹѿvZ(lkIvܩ N>̋j/IDm}_?9kI4aW-4˥e2~>͌A} Km:iD[[3|-=K6ӕ^5cE07l .NNE.&}zAQJjץٌCVxsKGSѩS5`ܯ)[u !⶘Ma[3zM@k/زqMWYasRҠ!.Lq;@Vq!R[ְ_t?0: Ҵ`̴u]^L/yb\t.^5v+xAsJٮBS/=0/$cK`XfUӾ.]H*Cֻy3.q l6u|5rCm7UAכt SxXa0kʿPc`-g;2 Ƽ^zKW `M><㛀ЧP%4%&Ο3\~jҜhEM. {5džudm7 1eD -|# SYohJ|<:&F[d.+x?K^X6%qpy 2B};@q/y'fʆ\δ_F% wB3`p_Kּq/5k3| З-(j[%Lof$(pOhBsj,7&X=]fkc KUkTL@7m.Z^Yg/Tްnm=ݣYK>[K~+e:ML<,𯭚!nٔ_Hҽk_0K/%Qͨ`qYZ%j27EY3%*$W7 KO1߈WPJs՗Z:}"a 9% zsOkV^U(xH뙿k3/qTVx}#~/S'PMW׹/&ΰ/wK;J,2#(b9*U|ы543{Z8tw1f A,w3N*9ZiwDeհXnal=+5G]և_L^o>|ZÙkwgLm]\| +o]oHkqf@4Kĸe{@!{w+*2[E{L31w& 3@l'蘡MΪơs;(X flW#CGs6[Ch?ĴG+5q`G5F|]ǼlWЧf}<4shz!?Ox'$N̗|SS_@##僫8/ֺeV-ԗ2^~޹05'(f8L`̶j8ʱo)qvpw8&v.L HA_yx˖H4MzPk~+:oļWh撏(Z+JҸӻ\=% yQ"9qeeRo,hGMs m%g2HJr$h{-R ܶzD ˪HO5.q ]h'%?+=GPU,u60a @mV']c\cq$E'W=p"/R,\Gp8)H^7}H?B?Hm˵ B8P^|WxϤr2T[(87L``|E-o 籂* ɉ|u/_(jxtVP>R*(WUkxDbQZ;}3" x{S(TK|^Pk&^],u|h հz0*]]7{Ju2y*6,'FAYE^woQv,G.砅I%gxOןH%"u_H{z [)A .OuiSᝨOkgH,:Y5k~LuMZlA Kqe[U[6(%_ \9"V͑Mo٨4U}rG6J?;Bz}YzΏՄ\ >reg=XBCr-5οx:GJQĠ~R͇hwR!ֲ.:EY8m8?&4UωF:tpfw(۴HP0g oOs\Ә' ]B¿Genpoo0TyJ&upk//>ykU !Z8OdX+:qJru1ЁFܕ:eV([G53yQ xJ?"=P/fC Ϙ?km̶nl +г: Uh.5 nmGY6m7jh:s_ #v2 y;i[&70> G_> 2Y?ET-]sPKAsX8bpYvueg}ؚ15m:1#\{JWyFeBn$&}i, ` sVYq$1&%[P5X[[&myoY^q)pjLnLu`n֮Q|J2ֽ)Ce߹x*![M Y&A׈ 9.o(jbŚxQ񊃂 u u^RjX])w>GBUއ0m!uh@߂zgineݏj^.'CƀY/HgDU[*y;rB͆7ν`YsZk{hJ Ex+nCTzd3D0%"Wɜ3zuq㜖j?3oLqL@%*te/%cw~admܬܨ#-wLq:(`8k^Dxѝ!.\y_Ų<u]%P`M&GͼVa7a#|T( =Zhw,T +am*R$<[m'F'7ŭYdF7GrQ.,rxW5ƧqदVe۬x[[5>,}*8kJ8ЀI೙OCIc p5QоV |Q<_-fe b0f\X[z u`K ^q˖72\ȿD:Bf=W}}f̻&@Dg,. }3, m=h, =@uS#F@ /4<44XB՛e>xe$X/TՔqfKkMy\ ?!<}%3Y@v#r~F0ԗD_s(^Lc6(kCj?[c0OV ҝ74o;iGtu hN AQ\xGnibGB0A i)p4]c5CD!lV8܆0Fr胿-S8hݭfse3]~wy^[1+F1MkMޖi.&ML B\3|uj6|H1PuX曣[j\-+ Qq;\YdКq^&ٺjBڵCBһ;u۩ c,īيhVKPTA+f-pb&Z)*Xa@tEMZ@u :5g'qD@D;]EƜDJt,U>Po U塚jk(i~%c9)]S_6G`eV=rFϔ=Rg]~xZGufHN ؙEK0P{6.Q?r V[3CR) bXH dغ$eHDk.Ws/}ݱQl%X0D4;c6i9sS]){+ZYcOlٖ.\c. Da\Ӭ\)6=`v1T*ebB*XRL NkP]-m1ʂ3M}ݡx=Ko('].M⫤!%1V)\V^eCA_N54v"ZgwE%ݮv|Hm)*qPJ.?d% f;C z;MM`bzUy> Lm ʵPidzB[ =N(4/X}[KsHY9120^ eU@.#ęTMY~ܺu[u_\c҆X`Ky!%8yMn{+]"U&pNxX6cCM]P}&*Xxov}, 5/1*Qų,i, e`b_H'X6sVt찎{Jw{i:.;KS\S\DS-|/*ѩnpSsnB2 dS_8HST_xbA\^.GRv_yt%׃& 5dNT-X485I0C9c^>hx M yƽK⣑TV"7o6M*X">qRk*Yh@*=XTso{܎[>D|v*w:J0w$gy}kRVV,<wgyC@\XpuGM'?E|9Ul#b;k,SG[]=cԨ^&1 {c[XY :PҺ_tƞiyL&e/Q^c a4N`m`*Pi~r}#Z= 1zO@pm!6L [OQ wvxtVH'[dWm6]kp-9õyJxA 00D4W񟦗UN1ӑowF##-Ƀt<dIq1-RΠkU3X\ޜ{1#2uCuPzWq)yF-lQ`7P~M/Zѯz Dz'\}DIɞUbXns!} VȋLY.]7KE[+(P씔7ZIXiܥ-_S/5jtV*;ԴT5/g<{Xg1w}.T:y0OCC|{ԡ"et%J\ +(3Rz(0K9v0{M'm!X FU&vPV9!@A#q]cx]lZ<}8(+.3UZޟ[cBS@jLlo^>L# ){\hs|PQc( 7,Yte(&yWe2%Mkv=:O#WJJC)C|ᚹZ!]GQ5VЬ}Tazų] GI|Hݩ."ﶹ2k=")ĥ֊Rk*B/FT4@\ Sz77WUfe5pȌ6*]WOVTs5;WIGoW(W_7*AM }Fe7UMQ<̱?ڹ >waINf kw!+`{~`xfW.R/x6:nEC~ahf:[Ia:G6Xgpb*2G[?hFYR(^wQظwЅJ#Xs)v:KjThUXECM .sW^C1Kj_7^)VcTj=Dja={e;Bv+ 4Q~zeA>.-ڤm&s=gTyLn ]En zg3d4#FЇl %՚"@DcJyM/[sG4qW)V)2+s+]Q\@o:`odK .4_sf$->Dؙcz,^zCdRZ/5 Re f AEH(4k3AxmM%<-*Ɛ4ֈ^.Rc$@vL]bw4g(GǿyrW.5jJuD1ET̷xd0*'5R e5}VyijpK>*1^;W˜&Փ[:ٴ=5N!+Z ҥR8Ԕ]jϕGgU6"mƦF_KYK@sؘNSw*1K_ar_z^mQ^}ޙ;w+nɞ;W׼wKy9 \[[]rǟfz]*lyB<,oO 6ZK44)]8i38zG +/`wz%!̭UGx32UĵkyH#tKtwrWTּ/:Y5sוjPZ-EUīi꺗P_?Cdy_fcf{ky&ajۢ#zcV"jgy,LFpŽV.9Z+ X B7a]Tn5qdkdtk&&L*n`קHC'a{tҚ߼2vRu._^ƈ~Ponj|3-*9+I;4=o'S`M's!WfC`,oQ5j4%46 zml4rsbj/-oBd>S AUw.6 !}ۦ.PS+m"k.te,Gh5hq|l0]Pcl*]MƵp*@amKv5f۸̣?t<$伏XzqJ/K_n+5-kfm=qKc,ֶtLa8έoz&4{M!k5It ,O;hͺy <JU}? 4 RF/ [\yk p56Wz:>Ka:rK\1 HiJG`ڴh1i!zN l?3Tq(b6@utb^-xtV]ڲ߯1 "/~|@a۬j;]m?&;qy1-nvk,cjk2]yF=Qch1/_ԣTi)R,C@_P413>ERC!WT] Xe9/ 3ULf@Ʈj@]+ z)W(^Ǩπxh6<*)u(\;mͷ"v?rMYzDa殰 k`g)@w8^kRUXJWʙ 2i55Pml?Cݚ;ԛg1[0^߲k޸nq e\囶KPZDe& Wz\ͮ]:IJ3:ؼ:Nu*2Hڏwǻ0HvDi>2 |qRKJ't  )zCC+ģ+^;Ĕh* u4"o.:Qum*s7Mq{x,eD-4uHԐ&x&ʽEH~;u69vE }cRi3@+#n*YxiA/hC\53C٦iD;_i~Z+WUcJwuѬ1-r`:HkgV& t zJ۽s371 &/3I5ssC.]:ˋ\ob4&`Rvq0ʏ.޲J!iZ eǗ/U>!€U۽j,||r 3BAacq 6}L \[ZzD `+́MkjϒK IX4u%[+,fߔ'WY'QeZ k4[B^t7PWSIxUm*OHbLSά5V0 E٠&>K8D'fdC*WSpab5a.l[huX*5y-kmD Aʄ5fT ƾT>"Y4z:7EJ>>gWCD]F6˦j_F4  $;/fTUb(cO s1Ntew߀}7¡4de7RgI|{*~ol"j1iܩdkS_Y$5COՕv+]%g-3۬<.7IXLs Xq=^ꃢf VS;k2;ߏ)SNs#w|#Xᤩ4%uk2)uzT,-eR|-H923tKhݺ5g5x טw_S/I\"7H %-׃]Re`N!Z/β\9Lё&/Ҽ CdVէȟ$1-י^ B **S>Md_,~I#xyHiW ` I]6,ut\94o=>\hR⯼X7b~I~>&G;̻C+jǼkN .zϼ,ZF.j~EnҥM:ZlDF 9*1wQ|*e{]LW1&KTg{.s)lыS"̐^:E|_H &/2tKL1^Xh}Ǜ=]]^kFIľYCp* :A{Xzv%n0j6Di]18RL E5Tѩ_=³C Ʊ>l&+ : A+?#&LZIPo\EW"Zż[S'aNZ@&*u8\<7z~~eKZs o g ]QvU}0:;@=N5#e !UoΒ1a8k.LWb_]YMSb+O~}1ꄩR0]_hH~%,&35~%h:7xs8=i>ʽoCգv`9$.kkt?邃wX)hŬ5cY$|n:_p{`o`M,\m*n6]/:D&-FYZAB}4bf@h%PtC‘EՇѴfRA6MM. Vʉ[JD1%q˸JnKElܶc-&ʯ 'J@! r}"g!Izfm:!8n(_XFlcR2`z,W84NX='Mf!ś(ڏxvS7$Jqs)[x n;ar;KQ5]gX݉OL65b"ql]C]~0>YLސ_@uvBL[;PH=`4c.tM3s0,8u*Qun=役Gz_qL,#X777Ә'OYg') t2PM{'u'e]po!0΋nƭ5t{'dz(&yf0&vYK5]f7^}jZ5X քw۳(.1`M Q5"-z'h.5*뤪T|g:_Pidw<]Ci:K-bpq*i:TP7Τ}EyAoOiykuy.oeL|9,h\>ZԶOhf7s2lwd&&ag%G a"k}DEmEiI E0Qijln~j n/B.J Q+m^a"4vV135ۤ3j ̅E-#~XAEtn*cz\kkn)]oyf*6 Ѵ^Y(03 L&,0Ihcz&Lr-8+:xTZScYGM0tRvEnu]WeE RпjҶa_h%ZfUb{*̓lX!A F\UlKS ;;="C 5#4-އ [B»Ve~-jeyCʘ2d0A&-n71ϭ8W[N#֍B"L3 +U|D2A.01\=`G :ebuIj1H J4eO]{1,VGiEj`%!ttWg4RA4ЭLЃGdnX⣟bR= 5UXՓY½\rfu3 wխi^X̐dLˤjVaS`B CԸJ𱑬P=喾c^O.U2_B m`dxqh *ב\&-}bH]X ^4+Y,l4"WhC84gOo_X3XN3]2ӶL|Ez=D* W.6AͅmooiB"7y/m\dJ4MwɧHr _Jclۙ=HϠɬOx9{uՑ5`\X%O#kPWU}? PUgotfo:K2hx?뾲xW*Cc3ժ1R\𗝧u.twQ>^QyVʃ+5G忢 1,?+7z@09PSTלUAɖ1(v^XTeE@/z=]4Usgڢ/~nkS:7厐s2k lܽɱ_|AZ=B::d:>o)W0ɍ8:]4V_Giv ZCFk--:f7_UUG6VR_{0G+a\;lbU!kWk5}czh#i '+XqG`azT)nǮD302Mw, шJ]Gtpri0slxɪ^RQ:>s8 Cu¬=2$d7 ,j]GU],kf5.T\]hN k:CWҥUWW ΃Ȩ4ޱGxtp0:FXŽH6 bLd* % 4ue̽NzVb{ ]FT^! &aC ^Ah8_pE_RnzpMʡRR1br+F$2TbtuwgiQ6_ryvHkWP_#`V4U*S^n` ;U{MpetQ؛*3^PUNn 2ݡa/?( Ňvi!1-|= LFƗ5-bDU:v/zz5xF`prƒ8t3RDZQ;NStamӶ[r ј|l^WS8WN/>#k|Z!E˽2y2)wEJLk#B+ΑB[;ù,ԶAƴ~Y%imHcy fcjJCd<6]%4Yeg5]Ȇ@LL;lh=3E=˖4tz~cΚt[ ο`+6*hfXU_a8JT+mɌymżWǃ$U(xZnewU>btq R:>?;iT_h;%U.~jեz.f@Uhq/r1%g_o_|\?, 0?F{g1)̾'i` y9ΰnPmy;\*>#_b5[Sj&i,y:b-|KH  c+A#K)R=%Bm/Ǘ2K_Uui>~RxhL\[[6U]m;/V5:ݦ&kۇΙw3:da:vPR(jQŕt^UFe^Ai+_X-O_KB%:6XߥbnRLAylz 2UoXtU&VߑQ$|^;{͢?8:"}/q;hfsHHe lJA^YI%-Ч̏86_B`t,y[]^BwLӥ5FWx2}L  }7SGZԻ%(t@Nb kqЁGOHIѧQ؝GOXLbDhT/rj@bQXCM/0jF7=zJ._X.43eUٔfzN4Df8%ԃ 1+ |`1.Oc4w8ҵTz*#9x .ѡ*B3&mgBi:-P9kjk1^ t.D2_&%vAL4>en~t7RқxV{ON͞})7xWK3+kRоj 7WHoB@إ&^uzMzLX+t)]%olS Uq/`x\Im6jM* (NWT˭.lsY&~GnٖW(u&{KfX,/H|0TzKemC uiRԻ".cwCRq/;BݗRмkz8Nz)sa6tXlvgycmÔـ;&iٖx[>Y;Wۉkƿ>]FCL-le}Ē-P{T֙UsWc{<12X! (3WLLF:d 3|ш 9/ q\TT/Y29qx]@ &h{UXf*5:y=4KM&/3sW Æ koxyf[edU*= &^PTJ'8+'e˘s*R}c1¼^e{Ŝxy\}>abm< }e>:Xyivews(8F,X]VS7S՚5cGl:WapsEQY}1au Еkv{јg'3;a5<1^+- &NmcDlϝ$U^20\91l* L!4te}MK +V``Q;%&0/}Sd?Զ:X g`v>fnЯ;;1Y~D6;4N"]_jn5}*p~pNJQ+G-掖WUDG>9>YC>eN4n^/1t/Z WmaJ!-ֱw锥ڠBmOS9]2$u( ]~Q=b;ͰQGW32S)־q&)\ EnT9P%8|ۍaWS(ZbZ}NTyBVDS@ 6ްjSm':5< Ծq銣m2h^rUL8N[?xJr@H?2+5BbL7+BKËk/8tq(P]lZM=ergRjiqfU f &64hԻ0aakq5Itvi\Uzn"'5< OR 7h.H=4Lt!v[vk(b_y:zϼ!U=\> 'hAC$Vj^YݔZį%vP;*Hܾs]ZyۯIu^XRAf>̴8DiXS>svD3ZZ J~SRzZ8(Y2%a0wTB~"R?i` DSƓ VI}G@hU}&$!]#h7l='xE~a.yQp oҾ}&w^y,:ŷ a:%5R4])*;hX`GEc7'3-h1WHTk"o4,9u,,!ıkB!:20:5'KAkb?כ9_ї{LeS0TB&] N+Bd8[ b&<*&myF>kC`wTe \[a4tcW- SI;Nt[|n=nVenjdum qqxp óHM! .Jvl&?XB`_#zu' Ǐޏ];-8yV78cS@Z(AlU@J'UIbh[2 9qm0UN̥jMnkΈV`Ŧٜ6و”҃R(G%ނ=.vWτ!\LB`hʷ~q;?yn(;}hm:L"xh0 qͼ6 [bcÊ|\We=9]myoLH>n͇w+""e:-Sv; k7KI fyL-}sBÎ)e(.yPamF*qOh&gk8*};]kE":2'[D+^W4Ͳmf.64>J\V<(w/ Lc}鸞|ņMnfQ =;D>a?:hX&w5_Ev6@|DUzTitg6kսqV}b~L:5=OhKEwܱA"%7dG3F< dTZEۣWuなkG%ܳ(B5]]d@Pi[K1'1^%7Y랰/A{;7;JU/)SS^FE@Bo0|*Śk:1XPVi ڇZ"2ڀB:GսĤ1!ՠ=l@=$XTV]_Z k07&%vL貍:)MIg7Mqy5՟6jhջy@x>e擱nZ?2tĮ MglKڕpuFkMJ;S_0ӛq  p6Ei,͈ ;fBۈWF. p8B21HΣ^}aKGUqZfFFhr 'heɭiaE8~'(5ق*rO9S.Au̞vhAK}P!H*\X|>_7SNwqP2-Q<#7^9?)Yh 068n[9LO5Ϟ=v]w̷YM#f7:\em^-se%Ys(ėƕYƏYXv EJ]SI 3RV S P[*i g b1VE])iXw5+z6@1Qpb/*8z ,2,s%&a.}w+j. 7#͌\ } aK.ZȖmGv ?!#dFqP;)/!|L| 2^^R%7EFdB3y%y]g/- @sTZU͔r꽀ĺa0G֏Xww5dݿll 3ٷQ_xѨdk1(= }(ֽ&`<4̠<<TdЖ喚u,{>%\J}^ VHp7SSv9"Ѱ ^ njaz/&.j;4[F%lxuWxwz%y2{SbAmM]U5%kZq4x4h%GiX6l6.EH7#` pf捎*V'|@#ErX40 es*/[l5;%δpyPvGl  -J_w 4L{@rqk`_XT.ivhzKE(: VIߗmUGlFuGDx}aNfeWQ^L8Eb//:45SXo]Lүwx}$7gqd626X fɳF/U+% JP|Kˬ5&}ٛ98a4kO&pgf( GA* G]jNF{$ָp^ĦeGy}u3wfas4_:WV+Mu+8|!0hGU,՗s ,$D|^u򖥀0WȚފ ؿ i刋zX֮txxO6'pT9;8@ 0DΤ}*&dз{ **R bW \h$ԭ›G*󐊃Ԋ"ņLd!R}cuY x|*U&+/iPQEwp;} kb9}P_ve-ffGFeJ݊vTٕz:%N/Z!ځ~U;\2@U5FPH:VʞB4.vTފv2S0+]WBi'xZ sn{t)R=)Q.>,u|>уtyenXi+J'Lc$ bU 5鎲M/Mb°f>řJ++TW 4e2 }f&?r\ͭt{Q0DפbܨkְL]njeRV8:q//Y=? 2z+k*ڹ\)/ PZī\AU hQu|+5U>qЌPkb@sUzK7h(e3n@wEjŗgkY*&'pW2@F=l{KAfL c:4wC`TVk(k.Lk sWofau ݺX\TyE(V5q 9;zMsխ'SK@X488QX-|JS3l*qEF2YFT3]fJ'`lfWs4jv&۬Yܯh9hgOPU5;=1>hHv󻷼nWhǶT\9cmˮb22z:1fwwM6JcAspΐyf:PQ?_ 4 "Qu|2:CT=X,!z;O&*CοhLe%-Ѻ\~D}zJ˜Uλ 14y+cF,~`Ci/5!ʧ%BŝD3dE1eUph ʇZ@J ^ĻT4Cah֠iiP9!u]c̎Sq+?y/yh+uz+m 3@/V]v?R`O3&&ޒfZ8an^EV]Z~`Wך*L7xqycj"saZq홌 w1P{b*"zj0tt p"ԬP/l<^j ՝3oAn" `цĽ/Hk>m.37sCv0ΛW,Q鎁oesWE'PLĿJ[eך曋Y)E_?(hY:M} M'L 1+t.ۿY_=&K )+^սa1(`I҆ ~ZG)p=;=矼ULS~R{xLm}j/UG 0|BQ@r0:9TѤXqSn@rӴCXE ˖q_mjijPt}R .OmUq0zP YrT)MC.1 &jbR:hܰyL L5k74+ -K_(]IP4I_Hn_ ]Dc**9<PM׳(Y( a^Vxkk:tߍk^ ojan󅨾p C.vzLgI,/,V1?1YϜuQ)EWhίϋ.9 JUMͺlBr1kԤb:KERGNMt< ʹs+:o*ދCO ]喕N*jfh+d#Bu։Wnjtb/A7澳sWMebQEAoI'_Hsb2uTY,{eqUN nATb zEkEh9tQc0A|3~f-// @H2k>!w1,PP^Ϝ3jn`5N2J5kg˼SSs&%"%JYqbgRE&tߤ1DlQu/ %*-wMuk^ˈ細)]S W~D7|x'XZOax)Vg"nQ/D]k qW\8צcE#d UJybݳٖC| u"WJ:+DԿt]}Y4[}|<EAf*(o~N. @_< kQWyC CbkX "B\˓KUlMtֳ<οPt,oy2`kU|CX,47evP|:fSS|p@+3aYY̳_W:s@O0 lS,Wβ f%zzJ1}PTϹ4fg_Xj3xU*gREcK6? ۗn7ĪK% g f]&.!n_Lukk{൰P33`|rWYzx`a9;x)( f\,+{A>pM⚕ˋ(<\\3tx uJLsxx˗SThGϜpK嗏x=5wu=Uj {QHݦ7+jqs.ON*癤aRa-۠^f}B}y^؁}$0Q̤^Ǎ =` f7H|A]3V]m)24~",dQV>Ev (v^GL+ 0kS`~1!gm37.% >l[~r:k19|B(5t{0m|MS_5On6:Y@88NZ,'X4^@!ʏT/!+ Z0 ]0&Kzm"IKsߙY}bפ1xJҞwffO7}^#BiFDsCv0e=nG`aP&E 4BOX,=Y; :nh;q-] P4oS t:CHa up;\0=u 02YSP[ EnƖ:J yp!gWSUg%C2eَ`@)2h^UF#Wq-ފriЪBɏ!C(~цӍ Q_"nY2˸uy5ٴ2H\4eoa/5rP=/#!'JX 8&;LV3^tNيFVvzt Y[R8]z3yDlzEj:oåoT! "SxY]bwlPgICFNg^,2&XAXS3q;r>YVݕ}fbcyC`S*4閩U9(|05ZIҀt g`dn+ȚNZ%bUq1*WDȀ%xK;$xȅ yxdW(_}btf;fjӰiLa5.X_reUܵXS v,KȜ7YY>#e7:R"})f)a>x1^5> CZ"xlʫ9?*d}9`2[ ֠)%S,]Jnc(4%f|Tg)SX %buNQFayg}h/iؚ> 8өĒ<3[k sL^]gHfIvkI"JuxG:VTxc󃯍SdE&VTH'3sJD4yQȂg;4b\")VnRLK*E)t>7S{}BA[4[ߤ 5V^3 0aW igZӕD6|\+襍Eq;0>a^%8t #_•Ag=Fkp jLQ׊g)M3WflxT*[-LtX"M"gܚY)CUE^^H N#)x2Zy }QczG!#^Ή5q ֿm{LÜ|;Q-I gLx_  $.Pt?hX.uM7?hayfyQK74ՙB[ߢ8||WseR+RygOM У8TNl2-_2Q~F|=oוge,u=_{)wS/ҰƫI]cU3:nw5J1"x:XWbKjYlL_9mJ s^ң]ffEx)ti#XyKy-vL?M"RA>! =")ͯ߳IgTv0M6r I$W6yl1',᧙2!j8DܐK"I$uəA|#ʔܴ]zF$K5CI>6u^ qL._1s2I$$I#J.O#2= $8v!\ ,?(~I$u6I:h~ZI I$Acn!/!pvk$$iU)APsb4֏K`$i$e}7UI$ > <7k ٝOM+' YXI${fI~?I$̱%p? h1'̇i+2S8J9$-#I%E I$Z'jWj|ye833zY$G/&)-I$„Yfu.S_7tr$ڰqx'K8u=ɭI#oziI$^,]]mZ[qb I%= L2*o^i.I$/2Q~K7艇{tZ4d+iOn=1Y.o&I$XnU= &RʨӰI~ ٣6ysJ"Γ) I$8kށLߨ5^sUڨ<@֑~H};CH}$i2I$͛E /S!ʥ͖#'{ޟK]momި2I$KK[p-Z *rVYvْ[o]~ӍWfI}Hw2I$L|7F |oB@,DL?tQ(.O!%m2I$NN>FU ͘Dᓨ0L~|;]8=:bT5gI9/I$e0°uoZG)I$c77+Y_tseyILI$ T7"f+E6EO4{.mv}mF'blITE$I$l⒮rcZK>$,@d<>+H6L/)E8,YVٳr]CDG[^J+wl"kgqB>tKvl;TfuE3%¶鳷~-?ޟ,Nd:\j]I? ?튩Dn<I%_NƐl,gŐ%C,!<(biiYM*0 quh4>^ +x-+gӵnLBT[%4۟$C`W4Y7QQ=*@VȢ_(rkx&dNXy@Wr)<ȟD%{p]$a`OrR4qmKfitj[a16n9lHHE ϚT;Ceyibv'[}>{bLrgeķ(:;SHftBz5f^:;"V_ۯw\ n'zKĐ,j.a.z.k\ta0hA6:w_;?W#xt<_}ja!% t-SMi?J_څ)KFk{"IxiRkA q e;BB4뙅r[hpOJϹ&S,bI=fI.x[24tuCWMAXҞ/\-,coR_[@HsZ'f@''uH/2I$W6x8Jd1]e^Ih Y0}L֪IGLEoɣ2I$*' pjϻdSERM$ekhV}kI}&]rHsRI$3qK˟9VF3WH>GTdD)Mz0/obI'2I$#a(1ZBn fnv@:f(0CQfMH_RI$~JIX 0v2ԙҰɴU*%xAAs_~'GRI$pVƵI!*pw,᪆sit,H{Ӳ@q2I!rn'n]!1#~s腎5w{$H{III$l7뿝}{'{-{@R{nDf=@6vaROzI6AyI$р|=QͶ`y3}B2{aES+U$HN SNRJFI$߮SH)Ibxr&ڞL'8[ }А|~$k3OSMO8I$/v_=Ś;c{~wE?o+$y_]f $ 3|~}/:KhI$8toݽI~[ΰ\Sw7r $Fj:+(EI$-Ԯ}~c}[p)gޥu.)$L(9)Fr@4I$Cdʓ#c̕{~-}1lV}Ɉ$6(夑i$ZYEW}&RII$L޶di'Y6t9/)$D$I,Ku@m}rMI$BE(q'+7q互k$ >ٗnv%=n;"HԒDҸm~{0o5V;'-DXѦ~ٿm|.)$1i&DS}' RI$I$y& rAtT@Dݪ.&on~P$INM4Gߜץ I$I$j6MJ@11d&iL̩$Z9~&s5I$I$I If2~жh5.jhH ={ǷѼd`O>C5PJB@g*<9g\37vo|i$~z|VsIɲH]mWk?wk >$I!Xo~{|[)^;R%YǗ Utܓdշ&2KFqG.neYH,gEG@!P 9'e϶0m͖{zڈ“$xI$I uAǟGohDݯ֬7O;k .5}ⓛI%/gIC~t|P`0SHu"COr;c3.hK3݊.Zȗ%|I$I\viǶc<8x0Xh xfHcк`ET%݇Tc_8;df5o $b|_ؿ4 l1$W/F MO\*YSǢ‘s7W$Ht (:}p p$E7r$ _瘉叴 mdYm;$K$:eBQq)Hq#v$6Ywy@+c9'q>+(}i$Hd4}0-?jO$I$MGf]&_'=Ej~K^2GA>)azdI$ 4e6/kAzg$K$gpI$%ɫd|7%"I$I$iF)sEm9$[J(;QI&$WFrI$NAK8 VI$I$[ `uMA &I5-7M/s_4l4_ {QvI$I$ol9jӢŠ$IqL6uDv[\#r?g I$I$WibK}t]/ʓv7DݗTAI"3A&~e4siI$I$oោjy/^ 7g`xkil)7uwI7$! mI$I$lI$I$݅Qw:<0gMRЏHI6CU@@$I$2[CSs Y7!.J{aNV"}!C|Hsw-礑6K$I$vQF#NrZT;QN=L'm%>pkd 2$I$)!1 AQ0aq@?mŅk_C߯Pok=OߑϿo]|O/&Ǜ~xJ) βk3$J& أH/%7Hh] e|X𖁽"zKEZFB—ܹX TBEdCA/Ƃ"Ѳb`>I0KNpGex#y,4qӱ 9rxQLLrD` vBuW~kA8χ(*%r[nFtȖ_AHA4QJ ^X_th=ÃXa"tD.CDv& A_a'ΈsfjB{O6Bk=5|ƚ{=*G.CJٶ_-  5h <h.~/Fk㧚b~A#gl4;~bO,sl>d<6O5rmt+~(߮;5-'15f$>ކqwcE-{ĜĤ(H(m(/KX`j?3 LpP^,FLypmuk/HEodn`I&W`60Jh8GgOpX17ӤD'R EE".Ѡ0B;]I շLZDHS֎"3GfOLqǫQ=dvid*C' 1_t.!llHBR"Mˀ!% JZ硝 9@ ʶ9+Ƴ!W6;4i[Ф"+ܣg>P Uew&K^v)0"pR- y2peW$egOa `5-\1#O\ 7~ Aˏj$m4-9tw)sqcoI.?\t>}Gr.T] rRlGBb%<%eEq|v$ʩ.fi"I*D4"D8$))qwCm>z5Z} (xXeLa3^Vc 7S,C L,2B5ɫcA>n PA!1"'~(a{0y"!bOCA *AlU +(m}V_X+7o+ \0]maL0<"=5E8 & *xVh/O'IpI/ĀF4%,!lC8Xh<@bf蟻9 8uo%ܽ1A ECT'wKDk6f`)&E%CD6 lPA#q~Oa8FFF`ѡFTh|Rfdb5[eX,A& @2`FN$$2`W5D De)J> Db6ēa-u[ z.'[="q >"$>#>@euS4E$bͅ!.D= hM1d #%0\}}呲 n5XT0 pk5FqN}YC\yD[aLlAa"3< 4<*$4|)B726 $&D!2R0%7v|8'U޿_SZ?ߞSX\ SWy1*кŐ)_#Ktp@0&7`0d `12[Fhr؂fM8m)w(-\(Pw&V%Y j BA%dG`]&$IfUo0His{N?cЖ!(0] bA!XTE\ <DoQgE)%D 8hX)K9½A17^6Alz Z}E@Ke* 1a|aPň\(4A1z6ZE82t;a]N6A8NDV'n8pi"d?0+C<ӿ] O0Ʌs94w>~P\F n%!aG q=*Q! s!=k 8z4qQr.M AravDNLPaYX `c(@|5c*B&k D\A&v "zCDȺcYB!bWX>$Ij7u#QR HN|who3   J}JK@@*T5yh`(v% ?2VHPQbp?8$wB]"X!1"~,3A &H!s=Wl/J7P݋YEFFFL΃F*ɗ%$EwyȼN/K.!B4*@ XWlѶU@,)Cq:u)4N}"Z%|a>~BXPE yK}Bse *+ DDegdL"+ sDP{'|+@T /=i)r$ kv;!4i>GGglP) ;aq!E 'A~Nb9/lԁlp@&EI#hhlwyme3 Pb{HoL0MOvROC{]cib(@Ь z5FVEhG W떊`~5Fy㌾pD:Z%\\\VQ@иarw'$,ðФb|Q,PsQ> 7@|f$;~~ ;м 4\O3GpAe'65W#:' Ѫa/$W G;a5⍁1?~SUpŦf9#:p$#݁>;y %18魍GCEvn:hS`HlIJ~nc j2- a!L V8 Xv$5JxE|Ts!lMv!eJZ{|[S aOxTkȅPX3Пz< KBEpjc4aw,_15bA]LIѰp`^Y(> 'B{Hd́(lqK,PmŬx|1q4Q=!$@6KgJe,C<8E a%MT"f oQhb ͊c~Ę^؆ߍA Kk1# 'kl0-JRA"@I!.҆p:-m/#>+ʘiW_؁ة$ndM5A\a8O6±G2!o)f&f; YrŐ oℌ!=&?LgA:1 $H׀<;e\tQ1Bh$lqJREmr;p x4#A!?ͯͣw~@>Lklox0"Hra0o83Mwidh;9) BZo!5` bãiEIZ56쾅G ^Rw={t}K/&u ЃY?CL05xK| !,W4,W lAkҦ! RQi! a"]tSKa”W`qNQF#J 3% PE1hc@Qf8l N,DxWlajlDA/EkFa= ㄐy'!GllA$z;a0$z xP-=bgC ǃe 7PET[p&6$؞CH#X\tl a.PJв;tli3p62c^D8Q0b !}6"L 8*KV #Ai(QJMvA`m`^єXphNBEX ܔ&(Yh(/PCaV$Q^CaYbpxb@AF# h劂.%pFC,Q$FӮY{#$Up[bcC^wu OIr / _#~& ZFiSDGmXՅrd 1z(qn8vѺhyYR"[ Vykx# ai0 Fh1.P9ʇ_6%a#L*`!7SA 0ŎvB A<lklD!"wXTl崶lroX " HBat#'D!FPaXd^xC!:b~*cxMa/;eg,*P(UaȀ4 p[$*N^&TB./(^,[D\`dx2 ѩP) NVꙃ,%YF@,>N x sx$b~%IҶ6z0XyoY0O&3-&B NLÚP__.nD#4gC*kTQ3;x3 ex!v6&Z"},T6\5MXW}BCYjcX+4 $] ~;G,JԶL]J9t~  +D؟~!!:BJ 5 IBsn*R hZR/aL0Gi/w0M/xQ/VSd8>젼vvϐ+T4K1Fb;+71xlKpD)+ *ʠ!h?m؆JHp&C{86A 4Qhn=] LXᅄ /@rY5R ) qT""҂"D$ Q+mD=2j wvu"2Gф,t OeDEr_ݍhM ȱPGD 4~MƬ Bx1:;D Kxa0a,0@(XN~\(|O,K A8;A D& (|P6.L*Cw b@XKEbGXTH7HN(xtH C^{7P!nA:D5< :t&q<6#OW mv&K&2 !$Oی1IJД-lџKX@iFF%[[.<4l> DМ o8~ʙ5C6g;2‘jm%A8i:[a#_؜ZDy'@k /#>;PMx|<hOP\c4+'9Hj2p±͢A6CbZ7KК| wEQh A ĉ%;ᤂþH}0R ph6 ()F ߁/$1z9K BM@qB |2i_h L/\@>LvCCIt4\Ex(Պ6 #bh2!錼 (L V:):((SKA7;$EK$(T!@h ܲm<DQ8l6#[TF&Aa+"%FvnNȒCC^.LW3qd7 y HHF}T8< PX=Xi/9ѕШ8S- fn !"I$DXƶ ~X6w `w J&9D7 #& ˀ lZ j V/]z,baNhtox@Jr'q! J CWJ h@7Oy>!-AH%T"J:ӭgM=v$]dv5j C C Ib(Ua\hآL}BhX JCRBԽR88($\E@sٞ; L(2ex@ .G↠ #StN6;LA\ t] ԸD'Eְ7 g: h#41 raWD ɣCu.1:t+ cd 'а"e NPŜ7 KC37ɼT &)=(~q\d"=K*hl"0E=,\\Th܍&$,dwy # ,FϬ @|;B$M$$ M8;#lałR1E*r[ \m-8rx 8K%C`>W8EzzD@rxDb-%*v`Ahy$Nˢ5g7r%J5z❂ h26pwDP"$\*(dL)I.*< lQb=> '`%BIX+1oc j#gFI|!b\pD|4%T$sHixc_DZnL{ maS Ŵ$B"alv~]r[O稕8yq$H}ǨNQMcV }SS'k04my;&ƻJO~_kpEF7F0:D4x0 W(KqF؃l÷s=`Fٔ 3y/ =? on 2| |p@^wG<;Ũ> ЛhKPq\ň XPhH$k t.t m0CHDQ4SX<+D2})Z)`ߑ_ &,7)҆ADž.^kF ǒA@3`N$1&dY6yaI \E0y<)H1BB%0Z$=OcF/LD0l} =<<.zrئQ B(1Q\ E9%9;|Cc:7JQ $\pjD]3z!QǶ& s`°pv FI(OVI a|lw2wG'aB0&D;2akH`80J/]o&~C1l{6V>ɷqƸ ~0]UPn鲻=7\Q^w{??9 |_&'iP8 |6zØTZֆ =3~BM|;9NG8 7G6'pc5_b?J0i98oM':Aw8nV&lI^NH=[ ѱyŰ6HT${2+WRG.>Mq`Bh$xpZtal+4&0C^Lɿ$1*GB'Pً4#؁" ܂F 0hIfzh1B %~|a=4&3MS;9HIPw=6'Z  P כ12'AelR!Q(yYRD(A 4c&89e& 4؝.GnCL řHv;9Î`Ole؛c7@&$.ą7؈4XR ؚhQ9 h<nu?A}+E ZYN1P(XvTRMKHkP4xJ+M{PMpܲKhO_#o?HjlR_2oE70 u t&ؑy4 ,SlȊgn.L$؀̲#hf' l(1pKsY#zM\Ǎˉ^Iӈc`bBp Y;F*^9b:~E pxPϰ$61f{]_cHYGXQ bbS:8EC 3z.uTrw-1#ҍfpK!VbXiM4ƱiL9Bd&$7- h@XW*Z$$Z*0|zM%cᢈV#CT+!xa I X9Nl<K8GH ΤF5ۋ:wk QZdU Ilo5ies: /`H'/0 -uXb&a HQD|dbT UL6AgXB̖X}h-*D bBD5KE I ofπSlçaM jBH ø^бz w-L< ɱ5a1 dƾ݄rᬰ"܌z=׃ (P\ DШeTN譂&% HjH< lL @7H~BFU!dB?# EvB`{`u>} pGI1&!%):a'o>WllzM;34[#*\;-8 RHt*!?e8 "'CA>-0%=mheC4Pݠ)|kgL B KpJ#bi=7F$f[jЌ[A@kE_D8cG&}CKor#110i1P)JB7\V\ ^ !"$ll]Awt ډ"Cw&mcU)W1 Bd' Pj~xA4Ʌ$8>{g7O R | (&'&*0Pj#)a;F,r4B!E+a 7ց{nhG#B ɂ5@!:/8}E,U44A1)r+ m y6U܁ 07"((Y6!be8fgyLb!*%XI%Jc g(ī.ҽ ^ B<' YHՃKel0hm嶑0 cD).,x$A<X8+CBamg^V$J  w, i hhټ hJ5җ-!!VbYQXk~o 0Kz=h] |)v9jŊ bA.|8 `ҐU Ȅxawp!w5,IIxJ#P0Lq&6H|0ɮfG%M!Mh't5@arz]ƕI$ѡ()Hw!DC͕cVFiCpwDPr] }`"+" \m @]b$ athr^GD࿙ڡ㻱0xp__}M1=TC(\t5XXh"Bz*! 1A0Qa@qP?SCE 0B/|M.FXyRq~='Q A!\6( Ǣ.)o }ɏr$=7H4EvrCl   f`ЊK$8z<Oq-ʁ9$EWIƔll' bx h`3)[H+ hA FA4Ĉ929CJQ݂KZ ?r`Aib6!D "n"7&b%s)-Þ:/*Q2)}Kf[(o1r$dK ] uqɷ؁W%(0x&61PudOxF|w07Rt Rv.D!5.>rا ٩h:peBlkc Bz٤W]m.^!1 0g/ 5Յð 'f 0E@k *{B \ Db Ca ɂY0 bEQ.oQJF3 .kq_dt;&:6=c< !Zhhb`/|h4Ɓ&X xL#ZL2,B 6ě i^= I(* bhنPS..ЁHڏs[^FW x7ȇBa}0x^GXdVxT/E<>B; K1/ t5![BYF~^D34Q! , M~ٷbDH h4gؒČA5-ЊI 7w蹧'%AE( RYY)JR K Fva5NVGf)ᵋM,j( 0xMk B '߅!Nk~1{͊502'q8)"L'`.F>$ T ;[,L &v0҈122_ EͦB: `-h$ j]`8 [4LQ_i߰X!?DM~bOo6~7HJ`~pZLn־͆ϣb6o2aD(D<瑵АTn(Ak yZRm!XFтNlQGI 0.QV Mщ( #4ٕ>SD1?a!PyN(@E 'o';S5$W+*;e "?!+?l()po#8^?&a0Dx #KAӊa!o< P*LHe+*Qb5Jj1k_fS^rIW=)Z>ܼLGiDdgc4v!oy!dQ: [h<E, CZ15u=ň_ M|1",Aj2T  (Ea4M^Z7zpN0|X`V6$&֦ QwwØ _(ipPE+bp_hmF +? I<&ekbdtn8DV: Av ٦Sċ?s~?S ?D;~h5m?yB {;!}Kp7y(!uB7IS ^<*ĿI/?#Ձ,wz ?h{o%=ʂ7fM<<-(~S#x*2!dANԝX':C>7`l3$kJ:ƨ4@Sfk'F+_OB`f6DD)?Eqp%?aqZs"D bbtLt=!6˂P&j$- ̅t ]a- 1p`Hˮ G)pq 4@(@@d;}bף->@ߢ?cd/,cV~:>#b!p؋EM,cl\AF$)FS&oa> a{P}pbut:_llo( Ƹ^!4ciѣg/Lpq&6 5>/j]GA.*VT:+:ٴ"x3A(MC|@L> ?+ 5A+j!_3'rdUѧAz$IcO5LxEf^PwAy'5C=(-Impkr+pK5NhH2MY/`b7TX)QҹP={6;6 [2N #cTBK"Re>!:}7h=NdT`%rnX^A~5^86@.?^ 4dXa/ z%Hi D*C^dlbhE>!oupbbRP(l,mBA,k<&IV'iCqa}k"3A0xŏ0GiBLj>rqlDuVy!wB0x&DOQ @rBVX*F:Qu?ipJ?HgIb)a(+O> &Awt<`:K(# ]@ƃ34ي `V? Q3^ &bћAШI7Sڡ4a5 2݇}LA=XڇnO3~**F@Ulw/ᤅ1"0,4Ѓ֜Lb!!lz"Xj4 Lj6JFF!7oa!Cx&\ "Ƌ"qjY BXdXx Eǁ@?`x2ad f-3 d7 h_d5 '݄|Bf1m| qсPɧ f( EbGfo8 ƌ>/PWX]h! z p/itw#bq=lhf8+- ́s* Gl6xt⤧cbxB-ǃ:$ לIoe(~'bR8$3r`e/yҗz,Ɔ(~/BBA։=M\}ˣ"A p;C駀0hQby ` ɗ;:LV#pǃ"]=ٚyE]fB4Tw_9 i ߁u m7ޅaܡDNhmy\i@gLw0m ?ǁ>IbKHJ:\G&xK/ S ;%{ 4s MW1H#)ak93_oBo"7Gf O;L&ƮRF픋ipV+1P0f/K/ }5gbVOW^pĵQvO ]Vjކ lC=y0H 27sJR'' 6'@ex.I'0W}tKCXk~lW>`P$dÞ9eĠh FyXOx^#Vbš='%; 7+(\R@4LH1r(6m\ P>/F X/dd#VƗg cX{ `<6(r L"-lXS ěd&R]N<$F(۴AzCd#7Wpkeʒ 7O`(bD^zw" { B2 2B)N6g]$Z G5!r0l{(}tb p[ KRISkkGŃx4 UK4 4[ оŒn (HqNKT#G1% T3pɂ|} D%xƌI@:46R}͕OICB$5*'~f͑rEF6aF,`4m ($wIt "56c wV 0:2V }07[#^PpuʳMJ5v?4ObEh4o'[1>T)h`63 <%}е ŞHJo1F l5C`9̀v?f>>clXHh R%b=BpY-+էgK3H%DY]elN` Apb w"x3rд8ɣD^<\ŋTCy "ky @k>' h!Ts Ęw>Qe53P ٩ `c-))>ɩYh 9LM 4{R1&fL FOpm {]>`? ĥA jeAS즋.f݉뼟 :cQ&opKtjW5RmhF)NO M$;23qA Ud8$A>q r1r4ht[EO40׹M6*awѭnh49L:]EcЦ½!.ƅD bDBL5$DLo!1#~#f(&ZO J- Gx}K:`2^$%165/"I&=@o{ )G06?m>T\C._&EW @xɊ΄g3gע!Em <1 #Q r@$pXFE( 4b.r.Ŗj((6S&(Cpl!Dko6 ?BZ{kAoDTkz0%Cϟ\ +AFL[hѣ=W \4HKDŽA S(&BDM`)6D"8V5n6M-IE~Y=R7J)e[xbk2D[ƅ-I+[ Cl(kiFS a1\@@Pqa( i C|&Ɔ%: XB!a6;AL$"4xhL 4vY,Zذl>_W`B6(NB vKR#3xI<ݷBBI  o%Q @>,U[D?9F*`JDRb,)8 b\AD"LP&`Avм` bvl/i'CMtu`)0X(lL&!`RRPִ_Se $h x:bFpI8df  5@"pdDL!P4SCwf M43e&'UBp6t5exF t0l!NMXJ^qs3ya&o!bC"B\Q5ƄIp42JF^̪c mRZW>Kj!)F]! B CT>[ y="{b|bA嵊7 +PFBt,0d`6uUsNF@" d ] ׂ@Me,++bb0a3 ==@a8LiH=H7d,1Qc`Hgl^a8`BCGОŠޕu F'KH4QRA4&,XCE!@ 9&ģXC.i<Z a l`ydtwv ,L20 ϓGWx\x V!9Q=a`hmAײ0.&  dB6̱9 t1 Ah46]_&!$;wqpK7Rx @ zLF$,$OocIIѽ p h <- %ЏL3kʧU˾4^oxlGh6A[K xiaRrF)WC HOh'}R A6lX=J(F X^d&A3"bp|I1⚂NDN,FCA4 0B+R -c(;)x=l;OAgC",R¼ADĂ|'6Cj4VB,k a1C$|R /M}$x~"HL!^"8ʘ  =&Q"5C#bdreJm$b^*ljZLеr;}b݄v('@Aqr^B>^;wP$6C;xi.!?LѰ[Cfͨ+FƈŜ@*!" AHjG8,<)^7"ͷŷa7A5"̏a/{G H0 $`<'l X@.HG N \B<\"E+ͬ0X4sd:;o'l(XA B\E\"8.o P\]N 9%a Z.65a< ı2adP$(Bs||P`FV8%&:@>< bn ]< CsZiz(o `.H)`E X*X 2!A5dM !}z'_zABvbd9ox) jm(˜s+Ȉma? rI@ћ"l>2oSja4FG5ehnN``{u#1c Cl]8O]7\C`2,4ظ@h*gp@,D0ne0`MĬ r )jŞbP.TV8;auo@zvЅTlWCpQXE+X` @pߌ!X؃ײ&P@a^a7ph7K'PU_*"ZO űP 2`@I0"oTB`QL'O&aa&)P#h Ӌ=i2']L}w4 A(XjDN |%âXW(&7+EA 8ػ)`G07b7+h?:Bњ4"N{iC` vEGQ)p4F(E&'K}q)J2ؓ)I$a5樨+D¤IBq-N7uѭ(*rAU.ہrb 89L:⾇k݇YVMx Fd?\-"/\܍|ElwHH/n>c}Oa/>JQ," :ca9:7@ Q2R b |:BCAy±( $ %% (N*BS(Bs J= c0H soja;DoHTlx tAbNȄGLOx/ ıq l{roBL8.a>S\S_ f(((.C BKT2uA\ pp5 MFBaHe}4k<q,*$b^ v pY$4VmX㏘0MzL7n, X?`Ph5bcހjBC<1a6 BEѧ|0t1KxHI >s^m"!0u^h& Tˊ\5 hH5GT-1\2:.гA>$^746Kߑ"0 h M{b5XMOWX"UO ;U<\OOIaD H= b# l/Xd޹ǖ@F jkyD*Z1١ईRJ'TSb`UA0!1FӄBh*&2aH.(Nv's7l$pE@m~&P py?Y-ET`l5a~ .᠃c-bX .Q>rBv&!KSH 6 rF=#/6a</ BL^ U$/0`й.{lm1F Ld7 $a/ aIOya H%Ǣ/0$%VHdeJ/Q*0|O8}=2NF6t+XѢ0h&HOYa!}@%x\[h$L7M3H|~apX`أ:dC}p^ Bj;CLe%>ד~ (D`8!  4QG2lL] GC) )kwe/@'Z47y'D3O'QYAeHF(_4z3A,O6zXRWW;t8BO >̩R(zf$4,0蚤6Aؖފ{Bb-H}0.PjK|D т+5eYJ},8GS/g@ܺ}q/O}v}&SjܷжPa:| ZIO@pf WZ?1Q}F +}!A:4U,[0P@,ϬR  =6CQUY8-m~X&)V!Z#[w(v@"`ذh0l丸z+ޝ(Q<QeAxT{ :[ Ԣa2WxXv2*yEf ,g`44!?H,(x%z0R]TQF[,aGH̩Ԇ*UpؐpAx4|[K#urO%)H;rCrxKUB&WNj[)uƹ[n~n]XEE(ӷ<P0=1bЊ mDՁSPc2BSڈjwWG#Q<UIxe Y?yr9Ţ]a [elեTxtLcW&5N0P1;n|J/񛓩9nme&Q/c5_ 14%, &B@'ρ#D]8k-!oy?2yRĬKvQB?}/Ќ ,lxQ=jE n% NO}-^:' !}  {!qvHZeZm J|% X0{.TTTr K!\JJ~C51湏#%\ihncs.lv/T) )Wy``ilt0*N5hSwT 6<^Gn8:b*BVw W>P8M(~D76 :,b^S) 5(#,p*(1?)t՘jaV Īh:2,5L(ҰQ.Ǜ\NWEnm)\E4/9gQ=ȋPH-kΡ غfs9GL&+O[F؎זwB",[V!+Sv.$kSZJYynQu^{UL%^⏡(/`Mb"x"7yqV?W^DQWNB+Qӱ$R:wox:Zz0Mu)t{gR 9X1b A? ?Fh &ЁRT'q/l/w=𫫹 a"9 LdRN`pVש5}YI6M/- b:jv4NxM}4 IO/n]U3УA]ٶLvh̩j7 j!)b%t;!gK3(jk(BT@!%!*̡WN,z[!%)paPBX.-yk9{K0!Z ~lCq,ԃ*A*=C'IkU 8Ӳ̩V(1Ao >80\-bPj$ J g_.uXxui&@dbD d"C]^2,rZ,UbQ)KR6q |!tQP$3vSDJ>l9]:}7V[1H9͊?״ L@9k,KJnv K [/sO<&ę}}f9aء?a_fLCxj;z}`AJk>{oዚ`C+f#MMi՘%7xτ"JM8\xgj1kK//Z-.ǫu4 ;hw bӖ `*IG:&rfNpJk-)PScځ{#8^

7pk ( }_@<.75ăj7) 1N1qst{:1/;.Sf ۡA-ɹF3 =#Q~x!M ,x*aȖљ&4pdt rH74z#c!p}5H+ttU_] -?H4voOͣIvn퐂+7EP4& BEd)WUs=1 0G㽨1eǗ%CD!(uHฅ^ݻMK0) 9C! j/Ĩ*mV\36$^TmoѾ'@ n0,v~`f=[~뚬a ]r<*uށuM %D79}y`=5뤸V IvecEȌ@BYiK2$((PSyDLku%8`Po31(P`N5E}M~0}f=cJ8Y*-abCg%o d9hQ]MKG.p/,<^/e0?,3W=ՊٲD \ m ߘ7N )ӹq͛J.W#$=õ+vV $0q 0'ey*ݚ/YiEUy JHd+̚EhzDzPry`|c"uF',OH4fWHtAX'NbNPNeD+쨶;?AoB/$#.H NɇX9E1mSWzbUYtST;jl1KssD̹Ї4N C*CAW7Je qMлty5EQ%er+PAPyEw(Cu8"H_ }u C1` 44E!mm4:Q QGO1<{0D`Iȕ!ly+2XTQe\^ ,^43m*cyyo!b,E/Rf= eCm0PtNAFIEܸOGɞd;_8b(<N;\2oWS[r#X 1yM_h .UI5F',u0?٦`.A~S|8*ɜg1[c,e!-Wǡc!N02A-b. 7p.ۋQbO˘S fCNbLiN[1;[c W*̠Gx:0̳H1Yaà ϭA/6;*cu5Jlb*,;믴q_CcN`eC C 1?&Iӈrbߞ RkO?&kpKe$~bY7 (!BOR>y_ ?cH!'@6%S0ƭ ,0lׂWi*mk>O, *{xn\<IJ~됁TN288n7&BcTK|c`΃J#2d+xi Q^,$<2Y8L wՌlF14NԷ{lU U-L ±0G}Ed§_]=}%Q!q2_vbisERn^6 ɄS3/eݩ2(ǼLL X4R,։)KSI"q-u:ϨF0BRx!~=ZnilVv$ )p -tyv7)vv$ qmj<1W~\+c׉ZkW(ּzQԀk^4(PV`S[E! {WW Tjјyqrx)`ŮDaڲL:])4PI)!C3PA00 Ãe\"U@of0R>qR @9L&iiSDURPdb 08|v{@ ZA%Qcq v_[,#%e!A7;s2W+c @ՍYNk{&{egMCZ5u>!1b`?^zuX]Zq,y} >`Ďcd^}vOtN↿='Ǣm S馤6I#`oDHQ v4'XϠ{1 5.`!Y*KR "~ެkq=c'L*d1>g 0AVl(>H☤DPY |W7"i\vu>#'Ak ׶=b,ow3r"9ߡ#NoL z!h_k4~-kpe>WG m>lmc],W.[ W}ӴUq#_Ҷ0\+f[;L],niL'hӒri͇W4$ZUncǼ/K2Li}eGT@UGqf1]0n..]%F/G bvwBT,, GI,!06:苞nb!HP-ڨhf$ h`" L-&L}\b>qA-Z89JfǾ"hdтp?HfH[U ^%!JkkC k0%AoLvb"E֨ 2_"M1kJq\j7(.)rE`j3Fc. f fW]VHҵfG'݊қ?; ״N pBGM0 +ߺFͭF(zWNuնB"xwq, 8T=ɡ57Z6_VgظBku9̐_tN-0I}.\sOws. aJwo=X'$#c-q|´ !+7{ *"xQuvohDJ^pW.ҥy4(mb|El"e21- I=PRe;@vR)Ȍ|2RY=!/L}EVwbyM,dÝa8F} i+v*?\njDXc s|`Ôo_IB@u&,T +0u&3= 5haqGm/Uܙ2)ۻ?"u@` san+#}skk] -pi-J?8HL ʲeǣ,8(i;CVhe '4;xg<2UϠ 2b'5HChER$6K_rv|k#]JNT, wNWz˴ l ˟v;L+ T"U+B6C^"/ ^ Ql@y2K`*b,bjٍkFZ@Q\KLoҟAw@Ӄ=UT6DmpaQ bInGZn o#'B`!XgQ?!PRxrȦmLO8Ɐ#һJ3E7-^ciGs9Ȼ ~%Dq5SWw ?K-kl\{@V5`߹7Ȟ/: }QbCT$Tl5~pz*e/Ѱ PP7xeFub[u16]>ɹ m` )IS&eY H4gg|2>IZ]Ԛ<]"KRE}Z0Fix 8ʹnؖ xeۿ؂ *,K:^ yWrC 0f`ZHUU:8{8F0J A-dA=:\/4=(} Qj(:Ju@p +mOhכ¦ k~qjqf~2% xl/1_=sK*~N));|9A9&m ttB?58~TK`ccb&c3 PO -0D}=塥 )@Ѱ8xst =q{# UVmΔx_ӾFRv}g0 -q JD^(DH+ZVcJUOCZ( eQHSq:U|;6.} T?l)c%+;T ^.z] /Iv!muW$y=ܲ"kd?o +"`*)~xXTG;P=HJnriZxHiN>Tg,&ۀ,qģJ>5/_J杸#!v{;kH,@0Gv 㢈Q/1VքY`6N`k} @ iPUԉZǸ&Ǫb `Fpsch,[A4q_\jH1, ,:(\ ` C@"Ze͡ +yvJU?#Is,-t.T"M8I)d54|[ȃx LY4̃T%\wD. 7MR<ژ\&1V(!m? #F `>K ?T!B[KSK1mGm%ABXGQ~/]wp9ElxV"A_oOEvxۂ\ɒ%0-g5:'-tP]i.G&6&ôV/@R NDg6BR [a11o:ψ8?L)4-Y!k'HC%HR8֙XK鋙[@2Xשd0O fi";f5e:o/G^zST wEt0 z:71orib !q@\ yBHU3 GF /*{P`FPq_O{#*t&dJ{ t ! 7-Gz[/iL\z@JRo!S) )p""=GQ qI4FO3"pvh rUBQIҴi ! M*RØVt؏iݦշgk'him6M%5f3,fW35tE@3_ `{:K'6-p-Qa,#<2XO/Lu\[JE^ xC ΂βA ԃ5xvȘF(\b.p7Pq^b.Q[HuԍesO_zdCRlx{&ޛN`*imgPlaә/biWNOWRo)v`UŰpSGe1/?B kF5UB&~LN p~<,<;|O ӡ!ܧ nF1tø_oElW&IϟyQ zX5B){t0reË7{X-  T1տ8{BRA\z`@jKZ+_HhOKfM*+}MKwZ3wѐ_ 3u;m}QD4sS}d-}"[P@]{.ŸA2`Ĭnm\a8w4/^h Cbᜲ"N_w%W\$]:ʈ=!MúQSΡDa[x"@!4S8 D*lNM>%gUz޿sg:,2dS9XQ^'l1k2 ! =Ka \mOBS*s#C⎟e1z=e~Fy's@b<"ۍbo:!=V}~uXF`I"w@nU\뉩S{TNyTA-?uBvi_baI} :^jq nc7,x9,J ) w HƽM1ݯJ/4lQ"u$Sgh'8 knUos _2HcZ\˂ LuJΓFcNBE\@t`RFP4#jCRbbvJR<փth=BomeGEL}.e5B"@}Fj V 9*QqB+Jeܕϔ>^acKlfzaZŌ/񝿉z*v};:PvxSObsX U׸(^ ]C'qUfE?os|XqEFf'@w@vcA@NFtQ>eUKFޅ =/U?cAv0|wz'=Py 2X/#Y-x?2Ӏ@^0S9 Y7HiRȶZT1{d sރ(_1)L>lCw\ĶTF.:OQHsL}G!%12%  깋fL_%+>Q<ǡ].:bzm13E]Gץ[N ]ql4tfBL`X3{ L\T>R>KiG^}Cz`B-M(*+ꘇs ^j,|ޡRo_3fh\2{K"0 t#(+#># S02+Ev,VOc^h9죝Kf'3\FK= *_F`*0(H)Am hBH-luLq(Nk51!rGieB8^}HxӒlO ԡsz m@6Qz2C@ 7WvvT=NڢL#zcnO"l/t< t!RKǭ0AwE{K´ޛtREL0(G|꾰_T[X/J`4JP)UM/hw2?_\dyߴC x0l~̡J+%o5?q,n.5z5(Z}*JJ#(t ѽ.$R-{QqyvFES1!vҥpXaʯ'R85a~j3ƘvfHy<䬅& ,C݄c.~`صKKe| }ʆq&2͑ZHp{Qscjm {j,N!q Vk0], m$a|Lq#j@}Hi*DwXD@@D:(^D;JT nH gM e쭇ڇ欒O!A%e;ԕrFCїZf >. [7x,Y] $/=H ⇯yG9ː >0Flk`DX0VÅ lB`oRPe0M$YJѶ@KƔY7c F5ypȔhȆzƻ+,:> O3EL f+襕X)ɨu}"ˢC`ms u062iO>[ڧ+  Ԝ8C+0-90tBwI=M{#Nb}cP{&0FYHzN|~8@ذ腆"AW_Cp =lP`@!.!g[ KPKUZU3.Xd2#bbmɘri45P}e7 a j_ކK)Q0HP,3ўϣ Hc˧9SrA;05-6A/@.P8h@N{=޴4V=OWDzkP7b0R"͂8J#1+q4JRv%Cn\tMNnz+w'L0bAo ' P^ )_7-FA7}MJ rd2}"b#lQ @m4&zzР" pBVee4YqM PCh[4fxG f0#̢lV_C"'3o~J¹G =I2'"dm~ȀNhY=-%1GeO[bqB+b2c{Ǩip\!@:9/GJ|ߏR7c`kLP#Hf1OJ>%P.l5Mz|ʛeu#\\5{&!=NH s"8̫Ek'2E2[?Xd}ϻfZϵ`V85x-鬞Atd~.r <0,c(/w2o1 'Lt:ⵖѹkfP5kC|x .6*_pFgzB >/EF-Uv(a?2`ЇpGQz(5Dh%Eq=& %ZxW^A~a4/5flgJENF 1`0Z3lNV -g3ð%3(-3j4HQKXh 8=P 7b0)Aݴ J6sY`0JYz+ Կr ,Bk:˭#/b7*^ijY [bnSYppHKK.›w2qF!~q857}P`WA8}r*`&ItԀO !4U^d혈AX$O!&Luq1 {@6ʦ77i-IC\v&ўُzg"* >`! %%ѬFN(xjQl|C·B ͋k-M1(*j{ư_zf5!TKifF&s-1G:E( FB]-1k9_c \/_g5/AXsEDdzCfSE)_Hh$2z0Sapl:#(dys:+#q qtQ3}p̮hyjt}r஀C7i{N>+gH#71,PB58JX B;EeT20WpG\ޚKD @z.b'kZJN ̻e5HNmsʾ˄.5֕ҿ`fDs2i$+qp\C*N!ZEPQie>=wuA.d;i->쯻0jXz4Mi`+,*jk1 `3j`g2S,UU_trC:~b_X@cXK**И`CWygxz!7 +EA:xƑq[Ou& ]=S6QBm_lFޑY)ZDD)pmVVFH|DcO v3OEo?@bb"*_-4.FLKtCLp EЏlpaa;S2`5(xٶHݎЏ V_di:udQyAۼ;o]jXUBNuhi-JN+8 tP=Rk]T f\/PI-1x2@/RG|z [B)O5M.ز.U˨-[h }£Qyƾİm~)dgypc}= 1C/Sբɂ_Vefb`O/$3MJA,vm%WHWJV{ʹ"UTvZ,Z[9%@v {Wׅ@Zd1WCY>ޚOQ /J{No#al>EOtInp$.[Y!\ڎf?n0fgcݔݚ QR$Q L? Jt(!pH0 zB977]h Mm2iЦQHR52 BX3FTkO(,xT>zI6A`(ij,]H")}@po?נ뒹#KTΤh%H3"g"6o`vuVP2X{E@Fn ^,Hlҿhd-E8 X8Cb3W'T)Hgȸf-BbQ^8l'~fTI8(폍Lf92J"af[. bpn ۘ-hYCSy^[b~Sw)K]*.[ (PdWjd8N5f 0!ݠ ɨP0 ,Y7} ʐ.x<$\+'V>dw<YDakN[ϘIH5l`1ץn%b'x2APӯvx'T: rJx;2¡CP.x3cw<J/¥#oc dq g̬Apgg+{Pxw󘥎gpltcoC Eq KL@5auY!n[$}y!n/f!_mBfiE1 8;$!O`[3(M4qA_bq4F*Z=@!ܦ15/%>IPcx، ܐtnr7ͭ &!ׄwb\c$qL񧼥aiW<^ZDl yX{̬p#q N9/Mj 馽/K&݆i| Cw!!2MDh,^bf/bTzR͊$ՙq*)^߲ZSb,jB%!x~r L>q\`m AJȅMO!S@NB|\* ;KbrC7e&+? ˓EyasL&~e5tҨlL@p@3~Lr\jf3N H"TKE'(W U8~frL++ܖ- \UQU"3!r6Az"ډ[bC,"a +fhJGDi/_F>nY ]Y,Oc/T]鮢AFTu.e gBӸֳ : Ǹԫ2;d06MkP r| ,.F#cR{m[\%OB Q.am@ŝcu(oc*{di^<wQT!Q1Yu3EsfA`J,b%_8 #+Mfvĥ^>wo4Daet J#@V$@T i.!@t)F9Llwev󨬓mr l`"B֣,br D-g+KUJbd" Ƹp+4W Ç0UP1 `9ЕP(ˏ7yHFR MHkc+l- W풜H6 J#ypKs#_Фש1gP<|Fy_v複OuW_=LH;rxKud;JXo_O"N(| =z;= t':DBY_ ڋܶϢ/Fݗ#  cTVR[򇵚[+<  T g9 od*I2N.mc%V G -R@3en?đ63NWʏ p3JD Zz>mu5%\Zw5z!8^r^K7j[uM\ĥP,\]4cAV/Qaqݍ_Vh\0 q>6A0Hi 5QW|&Su95s`m(U23bs剕?Vmyz!F~g@[uf. mx.]/ƾ$ކ~[>>IYGQAYʰ0glR(Pw(-^(.JłY;Տ , h(x2u%'wэڮ Ta/A{jjKD{@G+g@j?[;UΌ **JX @u'x/Yg'5t 50@&R4PDp@j p8wGdB_wyƪi=AV:  r/L|" Y΄.˼DyRA[O)!N#+9znvCcH'`e3LkYcb#^s~& -X e`a&s73l6ygiI&f%bjmؗ9.%70TaA`bYW#oMD3X,)_bl _@`ܪ<&ތ4 ĬY薁F~lQꅀbsڑE_BaGK(]rd]RKʒf\F@Mw*eEӠTAuĻqϵ16n娫oc{FIMw%ͪ:eHkV)9TcP0; 3A*!ܶSJCt2F:u`:ghڿYD(ı5 :2xd3bExPN ˎ=v%QNdKrއ=CN];B2Z 4i8g z&s}mJ7{BJ0>PL@F=msHu{prBĬ>81R`(j)Qtfndw` H>#Hj׮hHUJmbTt ^!XF=S*flVЃQYWZ znK:Cs3vd4b% 7-;^fhXaxV;Ƣ(f Z[/3:d96m:zKw0b-%j+swt @QH[Q29[>^}quqd-cityV 4`~"輠ZQfߦ޼ 8's^Oj">G As*>LBFQT#{eKb*x`30}Ȧ. ':IH{%%1;49EW,-};+ST,%8ety(͡EoƒTQ7_ľNlвYa[ J?YC?Rz8Rd:]ĉ dYc'pНy1YܚYC a5tLE4va7Ocp#y@Vn27МAQC1٨UgD2|aYI];Z5[|Cو´9`8F8X No%(2 9.#z:d"/ YHSNg+}8< PūNË_<\Xø?.-ci\QD8QX\e)y-+@ B !r%f/" !zci0yʻNQ2F=;J_-OnadE"@d} qgk  *A}J#%. r`#m2e؀v@//>V6G!}g`q) )1@:1|i5VnSX 0xrBcF_ 5g榟)N}("Kh6y{Cc|=/}G2 ,m%Hh_D,u;{neAjl{{ ro8?x_EF;<1r&҉`Ԗ[*茥[wމܕ8؀Q&j$m<+(k ubHJ|)Le9@sOh9Ϙmtۊm0,ث2ϕUEwp9[}! 0[!kV y&VALL)UAWHQ!}+Lw1?xS~O Ȃ'#VcӍ|FhgQ-<#ˊAϕ]:FDv{ޠ` cYdx!!" ٝ醠^``qwM[QcD kd7xpq̭iedk9`{|183X_dssq)&QV}F@H ƈBbBy`O!+ĖҿFuT÷Mbg uQ鶠=ޮ)LJj4b@ܹ ܰj4}5/ Q(gkJ+X2⪉Iw9px@,HP5tP iQ{a̹zJD(D! 4HyU!$ De^F1P c9piC* n,L0. 3E)6Bg0>j_[ "6xdVG~Aֽ1Ԯazr0b+_q!MtAԈ9@/M}2S̋Dn / Pغ@5W!Dc%SKm1WH6sçnljZdԃDEP4 SDR|@+7N`2U zN$+Жû/4w ,;ػlȫq $4;GF_^b\\1.(|@q\[˽{Cكľ+(kDBBZ-JR@ '/v*1c- ev$2n aupamq^ F hٍ9^t X23+)8=GaUSSWX0ߣiqt@ \Y \ 0bCU0Ē4Bay#VLG\@0A!o)--] ed%Wh/HYȄ^ ˆ51V S؃,i3o/C 4a%nM/PwK֨fbAĝb_kjN$ ;ڂ1o*ly̯,=n.cF(, ⩂¬}im^)q3xtm'ȯΓW72W 0gFR] )N`yy 9}Bʞu„|žf@yG"lE;,K0U>șs-$ u0k@%g 0z6]h?!AǿhJ6H[sW< Ck×EghF aϥ1B"Woy9uȷ-K{NS/u0 u{b8ξL啯iǨn cJ,c}u*Xv$pjK>#彐B_sN@`!\S ](fD1߇Lx%,頏C[Hb0Chsagd;IʇP?0HQn(:Q:5E ɬf!+h(W5 WyU<_@yAd/2aЅ k7Hg#SE#|xB=q_3T+zW{V;"9EVґpGVPJ=*lsS7f] ^Ӣ#]ܗ6#F+ ]rȧ~"@SƔ|!oW(slB/e$\ izEswX0U%YlPi0'\<ɸ 1jPe‚KMA_~%`pR9gj7 wJe@a 'PDQT Ybǻ"9K?to5㤹>E~XЭ%@TioTtPyAE3y;GOp3dK瘂~P aH@_ֺC.UD\|S+]]%Ñc#TYٍMX,yq|pk|1v;U *CBx[ξ O{ͬ#$ӥn&Xhk-=fe9{$" e3?5 \_&2(x!b{#((=%t+[ѝd돹EH }ApddhZ3I{Di#:! 3.+12!8I?>05l`Z_cSfK tP.n꟢kr0;WIQ_?Fp̧t8ïan&J@e]sʋCdb>> Eez XF`W]0Fg[Q$VjFJ(m0}gdTc*#8S@._?]0yJ:,.[-"wĀD v[@9Cfm)ךSiUɯR 3Xw l8=i@6[RvL(>̝A4akf;XQy88r6gwa!v-Nej%D:7j{}j`pAv0xAJ9/` mjаR8wOj/ ̤%% F<빲 2iK:،[gWߤQB$8Zx hOF`' Is0RҨPهYJsfK!c"E(QgSfOPf!eUaX/]2om3+ 5C)0:'@# Yr [Gm%p2@64 wۆ`lҗb&b׶tozЃs`Jk`1SL@Z`F`i!\(yؗT[ &;  IR|Lət?C0s̐|{"d _yC. rBk(ĠU&m%w\L@44'!E:5I"-PGy7"ŝ_h L5蠢 d?ia]va䁯 r{R&w{O'A`/9$u N5,QG(ݚ[0LOF7 RcKնC+T?aܡ)  @3NQs"x `HPbڀ mCp m+Q{вepLǤjsFTT:X+۷!@Hgva =NH;"| IuSJiC Q/MN,WAa MRͤ3B (b ~@](տbb԰5;4ڄֳQHaDs/f3}Y%x^0mCcB[p@N+BوQW5@./t/ʁrUv #Chw*mD,c3 % E/qNH=䤘*#_|`htu"P/`l_UB?`P9/3wl> @aH~g喝*48ecX1i'uyB ds;K? LHwʴnDXfUE -U|JT@Yҡ(,%OxZ wF /:&ts$HKj ʡAS@/K*)jju)&@.1b0w]#js%Xc6@D|DQ:1F 2%_Z0@jv5.>uqtflw)XL!oje"W@-/6E6B =ס-Q)仂4Xzt.9QPom>A WpGSmߧl[9*9' =ضlfr$;p~A)޴30O@!dAu %Szef"(BNT8E5V^D:1@_uZU @pai|3U[j,{)mxJA:zh  {^2rF(yewC"pMyGV t]SHD/:-d%]);ȉzH9EvxFgX]wSK.xYUrvY;]8َrakVBEҳ};*Mk:  EhYcՠd$820bYFk r6rM v}XFmfsL|y8 -6JxX`]Q.(j}c ^ײ8fFA6zDʕ<3ݔb ,:ݎЕ 2^!ˆaqCf.1%0ӗՆmź=Z$a_"XU V0ο/^ዀB$s=7 :~H!t K<{+u]\,oBٚ2>W7[ၝ7;޻;|@vjy|Yn_I+ʸoF\=6 RCvX:XF1(Ug$#j^)hG Bҹ +%ہGSz`rt!i`N@bw'HҀU4҈* ^G fY.tC$ c8JB((б[pf#00 1 xi[V.ccm+kT0&٪;ϐ{ZϢ`'`Ge?d@O1}0mcpB81{Қ )AR}!:Ob:{ :8H^j45_Vc`wLbB^*~2dЁ}aHTbpX e"tjW/ i ֤0&]젋ࡀ&Vц LJ|jmXelRMo/℀FS$@ ;qcT. Ta=tG ")-= A~:=/5 /ױ>!VKţ&&^B% vSY2eYC1ܢFe5a ,0}_ 8÷_@c~V̌?[OR фnm5[PA~ՠQ46BkbH^9Roe4+DcsviMdʿd[{@xrJɢͶpejqOh ]{1+j!FWO^N5g1?V/),0j>`tQKW 8JhIip閗[>diӬ҇pu v%>aPܬB{EAPZoA h1='-#99 .:Ciwhַ^Pf,\uDj3-pBOًﶱCRk. yW,w5; LPKz-PaQvgΐ+oڡYu6hWڅ6~ЪV *BqCb8^! pE@KEj &5W @ ?s1`GL!7>bp䇚ׁ=i0BL9N[.bWЇ;% hA7%Z8USq\t/. \wMY580CBVEH.RY4v6e;57a?Mx͙ $傠 a005v쯜$,PFl0SĠ<_ YAp{" Wc*^RۏLŭN/iސ5f;gM^<8Ԛe24Go[1rW-Ҽb#pJw ̳(S"X:jh'&euW*\lV%Ed8"b#D %S-#%="(Mͮ"(a5@ox/-.0]j`f1􊃈JJgX"+!(v%Ll]Áʣ徭ɃMrEv Q$ r\]PLcWҧC?HE=n2I}4![/tvsT_ Z]q^=d;OH}ەSB.`_b[y r# gZsC~JOʾ(p(W>erJb ;rN Xx9Ja,m2e1Yo5Xx@.Ply.MÔ+B6C Q;Do\+9YvKeNz,z; x9L) - Ij"L%3 QU1'34iPEwNꙄQp>~%(r[z{g 4%HB:8c$S0 zdFIG:0/c @g*Ji0Mm>Cq$w Il/@/J(" ekA16A-K;Y<fkf3bT_iƋ[dM0ܸj @Qmv0}c膦z;u! 7 b5Owo[HE0q)Pzc/a<-mªlӪꐓ촽t[_In*-!X@e@mJEB `b*mbՋg}"'gc~"vO[E1ThE%;D*ab=_$hrȰZȑ g_:J /cD)̪ @%ԀC-VZf@[EEJrUXi@,ӌa3}qbjS ClߴCcXanX:!{e8l+iO~/ASdv I>x(9 kXXS6S1 cqXyJz )-[ Zp\jTF /U.u#7o23pgz =Vr`2F̅?س&$2x^uBk4Ae zSc=ƪ .S5#iEbX^8q$úTZaرA_f~r@ Rs< {[ <żZx@: %|*d!2k?IX; 9:~OV:@24êsru2yzxR99_9n[1nfY2wݕ28_RH/pH+KT]U־uF"ѐ$e6B +bir/;C$l=e0&%1jmD9 )%O%{ҸHeϘiPY{Q=%W9ASx"6 axeE[ XA N&8.8nh 2FZ* $#Tq[ɎͿk  x"q[5( .#st)f R~\寖G\ %f;Kt43祆 1{P!@QtF@TB3"ɑc4zEqE'Km_ LaoApT[fpxp}k}#P %Y.r f(]Y&4Xi|#1ฎOZS0v~ +a\3>"-Wgl&s_8aS_'% X&FNp!h(ێ*Jn{0=Utwo43[>s¼%b8H2Otr,ΓHW8i z~KalV",7YUBW%>T +}zº`c"pCi@yJHPL!iO\ ޲Ө9L`[IKJ l-\b Q$G}Z7Bz"(]z,z;e@ 096?ąAT-F5e\Q,o)%ӳ0Ħqivx-l  A(*[1~8GfF9)NVժB~H2pJNH 13Fldd̒D+@:[fgZm_ wieuؒ "ea CN `ֻAw.m16{3*2j ÷?fT++qF ݎ?hK3աboF%Tr\[zBQO bxԮOɨ[7|AB! X`[a_GѨ"YOÄ(vdst,B%]ߡr= ,1nn/λٗq)SY.2&\ \up|fgȗQ!:Bʜ'|AE 7~f]; +$ks:GzP0G0e !u Uďbh &,{N Tk1ah3,2(QqȊna?(ȇS"^ E҇.>:W[;.L+#h$ 8TA j[`Mx!Eز%Dm0ƽ-sm q[0^W@RDc3FvEmR~ҹ-F,أmO3ƮԀT=$ыx F+|Oy #)JCSĐ.רyp,8AP a1 gKWNG@.xPQ.]w*s*Vpmo.pY^H1Ү bf :i?IEDPLRÀ2=:-&fr*93d &I[}je|NbpF2l Z^=# =TT?e%a^?q&p2a"% ar]gBK+H1c {8-kE*T,nbB PZ8߽QT1,T ՚_إ"ʇp8 2q3~"d)Nr\=5/רq 05MԘ%3A m} /@UR,˱s*b5`3l-Gnt'à_ ?d}%U2)Y\ #awxTCTzRwn5˃pE&בmnZ|=u!T,SktEgQj~&U+ ]"I\^> ]ꀞTMGBTL=@3E=.]]jy Rׅ )5C}Pi UZd0C\Eɨ0*b7Ȱv ,  Y7bFxݳŌ1і`3ܩljzD7C(o2ē e;SVRPz:}!"tPEz^R+B-x}&c1uW覻z0uU0U0ZF5Sewʂ#٪_Ђvd?k#2LkZeSv(Ѩ@f%VᜮJ8 * G1uSewʋK8(#N1RE .)Y`X90#v>?gPvM%ۼj_sZKpBLm9ڪ C tNXh-(?1FڕHFJ?87bm)B`ڿ1+#p2)jw11@-x1Ծ#pN4ʃ-g05p.(V,1^wC nn=eN:@:f^ %/н㬯hPQU_$\:1Vte!T4&wweʓ֨v YQX UwE]Zm2E{BKҠg*UBqMj[0* 6Rz w"E$*c/C"E 67 տk%-)N Uaǁ5 Uه1G +HẖpÊPt)sJ9kc~/ⴷP%e?*IsOf9ҞMF`'nv# Vw)T7Wl6)oXs\~E# u)P,:b&UŞNCF(G:Qe4ĸǢFKezB*l08@E&S_~7u@_%^)8du|ElM~D h{gV!WVrw Uf;}`xӁұxXpcL/`EtZ# oHecJ5.:> UюocK#B7gnv'2%"*{P5d&HW+M Ty(G<}0c\Gĺ\gkKtf.V5-FshfpR*M3"?BupwF&U:%7κ fGFrF>DX 5$]+cQ D ?$tdFl)&{xUkс)GϘ$-?X>(LAlZ >G=64 cjy!EaŒ|KvDKj)b͝e-KX,5O/jn<ǿOe6M|@5Wg::uCa](RI!!2ǐ$PΏ^}"C2lP6ZM&|ʌ!zi!nXboZE T5t%I ֶͺ/^i?" \~1>n='X @A]Jc(%?)nfV\f/!7Xdܶ&ETt,R;rDz p`$`~H@}=UsV?=x]B\nX[kī_sT*mqEzUaH]X`׉dy'i3:G@]|!J2 Zԭ`>uTX008 @7N9RJjG;lGQQ;`?nEcfjkps]00g7L0<7r'Ж;0B1LYZ: TpBըFz*S/1ge=&2@+z Q 3f g$-=ؗaw>p+1Uaڟ>hdR[H_X̶F oq Q/ kҋ=K|/'0濬0w2m oP ,&;%g}2⌃C}srz+T S7 T8 )up_+`}zCox%Y{f+XQޙ\YI.60hަ/ahK@_{\ oG.RәlӹA#{DӢ8Md7 ?1_|ٔcbc=ݡdž^xogyW>ͯ-T;wZZį[aM"KkTQ`*@v, P&\.!ySns z>.kxB >c^hCץ%3%h3Mv/1&MqԜhCȤRDt"mpXdP?XHP*[P`F( N*(aF3g]pHQix7J׸Eƃ( V%i @RcxlfgaqS߿}x,ji9d% >q=fyeK qƪ(0QChYJch;<bT*icj&i:^Cd+Gr@J-{jFsX=LJ['8|+BG*Pզ[W=x <#:pC+4a 4cy׿+L=Ah %VY,b7Zzn7[4MT@MT|5A(}!]_YZY^ekK̼`c$:Kp#2^FB1U-4)i.27!W|CшǡUJtWOUIyLk6Eb2 sb6]3 jysiO\BP11;2#kпҀ&JJ# k i]w;֙2"eZ`*\y!N;W^aļ\!wU|:H9@+-1 ӥ,CmPEbdgF{q^Fg/y` nN1&w !Uc@~q@qxi6?Šq%gr~ uwt^#Cfo}X% ]{@AQ*&.9-̸rGsC}I[,%4 5[H(A#T#qwWl"\*T4ReͥKxQ1Y=|2E0n}uJ/ǠxY љCɤ=gD\J$4xKծ";)3PJ[O]~jy1bxj@v7dB.!oqT43ogsb}) 6 g#`׈L%gf5/M. JjZ/C% 2 oA %o.L[x#0Cd+s*e49=*'!pz.F َ-aE5BMߘpFR8 83M92Կ *7.Va2Jʳ  !̥lDK6*i{V3_rmK mW ,G0d7~cU_V_ү~ ذ:Dw>ϡt1gp}"Lݥܞ Shrky:C GSh7,1cm*PTF\Lʑm<@auL=0n`d0AŴ۱Qp_oUAt-TfztrC'vŸB*l FrkQ0#x"fz_>ޘ֭+`Ht& ӽ*) @hQ%cwya7Yc/ɮCP_۽4GJe\YNj." Ck/G/6q"U"2wӰL~*`֍,uvDJfxp%T1ȦXCلf%J1jydl:{Q;h 4N%j92 \ɚ> )H>݊s($nQ$%ou<fa}XVӥ0Dqaԫ JOЪxPvI.Jyg\}g]`)L^Jp/C`_Nuˢ^'ታuS `dA0\A\k0U]64ٸ1{CQ(\/u sCbt{_s-7]4*S( F w=uxNN4~@fe  ZD`vƿ$Q1Vrn6"YacR،w1Ԁ](ҋd0@D(GK{CotoWJ -Q E(6 D]:(bEBa@)֤B^?Cck}ׁ0l&S8F<6F(D!@1XZҦ ɼ%;KUoP8=THJ0v,} %=Z\Dˆ}i XLMǩ7/ޱ)>#R!Зy‹+_ r3I܀귲fGKұ-R9 j#RkNhW +@`sG s#Q?If%avj+EtAQNҽ ?Ts80 e%֢o֓9`CR++YhnSR#s[NIMfX,Gi\ q0>r{9+cX:bL Zr]E^ >JWBb8]&h4RfzOyϊs+Շ8(&de/3 @>:1{@˩ 4E9̶ܝ#O_V >aoQBgQ}ChXHR#Է sV_@aoD-T:DQ5/Og:jY F8su2O(!ZRUVx*`*f:@:1PG~TZ6υ@@K4՚DD#A +DAqG}Ədt>Zw[*']: nR+F2ZgA}/jl$wҊS!!xh)PL+ptxD D)(/"T˾ &˂,+ gq~aT *zb&8@$li l.w7*qS2 Gt0<)&i*ƨ1F)NB?s %1W <&fEAe4H΀U,SCkGЅM˿]0iaX"7OtVo1`с 4@YkMKw8LJY?XeNZ|Qb>*,BRԜXL-Ce(/AH7t@W,ekAJXrʗJ 7Ӣ8.ӗ2e[o:<|/n`SP1]b9hZF*88r1eUU YT0*ە3ÍY!C@Xۚ@:nX!.qҾm!\9ْy{vwK A]-f`>騲J;sqi4+3bTV5 =4R"ׇ#0 ^.%~D~l LAp]H0 ހd8H(?BfC=mz"5?"RjBCe (@ cgP7Is\dWwQ?i\(_؟2_9F6aXZos)TD d8R% 3LbUI$6O2}3=nU~wٸQ1+K b u5vQhK-n"pk7:K! Gf7kk9qo%Qehdp2AqNQp5l D)yd%<-eGHeN]e칔w8Ħaȱ~Ir} VڦZo{tf\*MZbB]P1qR W #_G8_O\,idSUu=ݯ/i(,eBFxUpDE ,J}KuVBmw]5%ps#v@(e<1k{esy7kIytPg>:aI̿DI dZe-SZˀhÌ9G!iVn@<$Rp-F`QS/P,{& Q/ \WahQ!G5+kL<͖|ƁAV rTAnyw6Qk1V V_D$KTR͡< 6GX|5BQ*n[KU qzB-j[YjS!arAb5uq ހ ʲ[Z;<4Ղ8@-R z7yJF,}1FygQ^¯0t4MXPwsv\6?e1*}`+2t_?; xU~3< IFӢyu1?\2j@ۜFJ>. '*U}QHF?&-9Ӂ}]:'3|?(WYgˀUfVAuAqdP5@@5i˕cW*1c?z!ڝ1KcNι}a.Fk.:Rp7 f} + aB3-yORg !#~Px9 9{NfBДw"wx"|=]#w;^ #gWd^K_Qԋ QR |Lİ:ozd*pBsl]cj\*K/ڍe*N3 $:8}ACӃOxBo02+)s m@4 :Nu}%Njn>e I 7F$CBW||>t?":'4jC0zq.9ww0Wk%=TcNJ_j9,s>9Ќ[nuȼà 5 culxsfA9b2~Rܥ7)ohT,BTR/XZNqc7XV\ġɿv׉AEyz ⢗jj (9:j!:F3 sFP@=#FB w,H5S+i8TY@Z1ϔw 8c2M#CP$4daNb i=.2 s=h`T^<ʁLm;2mʌ[)u4x{"pd@~0_WH$%O5J6uwRuKJm /)8!FU^K@ QL M2~<#-k;F(,RH4No%%Ckc$tj7( A$;l0 KbljԹoP=nel 6h;C*cK9_R,VNm P{J:#}crx軩GTPf*-R ^Vp- q3CeK\D6w)J4>m[Z!Tse2;:,g(s<0.kK⒯ ~[`sM?FAJSGMr è$ &#w017 ICC_PROFILElcms@mntrRGB XYZ  acspAPPL-lcms desc @cprt`6wtptchad,rXYZbXYZgXYZrTRC gTRC bTRC chrm4$dmndX$dmdd|$mluc enUS$GIMP built-in sRGBmluc enUSPublic DomainXYZ -sf32 B%nXYZ o8XYZ $XYZ bparaff Y [chrmT|L&g\mluc enUSGIMPmluc enUSsRGBC     C     ޘlMiHYl=;w+̉\T-L9jl\+ m^zvs\NR'\\ֹ9[U{>`zB)TMc9$޳w"AP|y:Ps}X h!Ҵ^,j$jTgp(vs:jien. N\boB Lrs#BKstx:/M&4q/i-g.yX\ƹksΛMDjeysk9"Ɗt\D@4Vើv=`ZN@U-K 2HPUdI"4s ɌbDf\ k#׺\V\|ӕ%NNcXJheI,bץ\lPe]JSY'[2;psMyòWwj'X&o9նѥsl5=6L‹ ʛʳ)u_;D@ǹnae feYRAC 41 ԡcZ >hCk$W-Y*W;y]kD,eDg8[b ߧX:vRZCqvS;LyvkqjFRo9|3cn(7-r%3[I J"A1Tf΋TJ |{ѷܐAXB.)7rҫ)qP߻[-K+Ra'1NVb9޺c{W@t||}4\S8c]zܴLzbrk=ϔy4o=κ]\5I @#ϢuB9ʤʹW~Gnϳ>mw/>[F+}sOP(0t+GGhF\pIfMlj٭M3f *r/ pw Ro\(]}dB145$`$AIݚ$fVzpEyz:w"4t%J!hZSh6ƵtP\ܵuT3^_TZ#[:'.>wǝwm9vp߮2y維w8޷鮷0evc502SX4:tY7KI6.6ߔ #P( ң8('j LbYuF@S剔/Si{7h.z}<˗>z[yu21)SN4 c'W"aSh%P{W\ZЦb2SU]CVuycǾxskS)ɿ.rŌ ::9P]̏M@)' P=ID(|N*ONtsPJGq/{Q>yGW*QRm'Ov'׮'z9zy /fnra7/.====}9L+oUAӎZdxiΞ qx:cV:q''=4B9̵;xhUQ7OR=qv֛׳)3[>f<}cǒ/݀Y,l^=+&%,#MŪ\[ZI;g\jrzs~zkS<{K뮎js֮Lw~lr^[ymߍ<:y+2uW>ZucWMv.MOGt#9,λ9˵sw/9Д(`sٙ "DX h6OE3k9n{WWvrVVTG͏I6ggq5^Ze5^ATQtIϏn:giǏ:[zS93w+=y'7wt|J:wi]aYK>mG@dQX'W =ö5Sw\fEb|ч3~qzkzWH["jsǣNgG_-ƞ D1s (wLAnZݺq:m_j-rpΩ{V6'*ϙو鯤!uJ!麠Sh6=6o!ٯ眺 7? | =ZtLs{oLV7?3<"o dzY<{<=(r{?J U .[/nmJoGVӚvvQC1s9v9Q!g۞hn$M]>>=:jj4(b03 : Klw#X<|gj+n~Kog1r|fDO|&|:bPOv+є1JJE2Vt U;+0[Nezw%'*Mk~<|_oδDn H^:Q>MGJ@  ,pQJhk-vӼ뜷*gi˞w{5>~^i} 7`fh 2ƙ&jp{^WO,5G?OhfJ ^e34ʨPUǣR}bu [ï\w\#ۣbcǛfZp%-#\WozlyכǏmz 8WL JJ: Z'w1ɬ=ܝ;vi9 8v 0Oƺ,$=:o=:.TKL*={j.G?~}Ezeve8e)cZ[g=F81ŮqL2ҕ[g_=3^o>?I7)~_LF7ǽB( !Mݵ=Zt\|𽵼51R'vH0L [4J(u)B8t^t TۖgW.4א&]yEdng9dˇ_Nk՗BY|SNu?/=:vF<,[>O7NNZXsscӃN=[n|kϟԒe*=!pU*2)svE(V`ek:^c)Ro=׼>mptm99g`ϷE ch ojfF *N/C4fzT Eg2~rxy7A<5-Fӯ>󾗯^<zf7c\볟\$ֳV8]yAˤ*>3BdrVPQ@Mk޼[=ΜI&J ,րgok}vlO4¦Xq/_`hDR=>iZSԫIO#Ǜ3~&ޜvkiӌtN$b98Dgg1&50,wgW[Vm̤4n~ zߖZMSdfu:=|]˞GW{xt3cIΕ2J) 9z\xS~f4*ys/:sW-1NƇ>]z>m8 f3#YF0P:0:ɱC=/&wa_yq#K]5bw\\CgI$# kd $^ت ̠2כ޵o3^wLVZ/1syҶ*Y«Κ;*&%&g/=wڬsc]w:\z+wMX5ijǩ8Z+|! T0 8翆6JoBKq&NOD9 מvϕ ?Δߧ~t|w782@`!*:qܝEBAk5׾{miy&zl/4%hZ}|eӟ}@.?gl=3֞o;^sSkEM%<Ͼ\?E~\ףliY!h"4%V %( NTQ]a!)V.^-MO{FcW6g/,Vuo59R!@!/(3ѓH"XLtǧ\uغTyΙ@F`prԓϾTY~nf.^n?\i<͢\ (Ff80ӂ*sxzgDr}.{knx~珗ޞ3uח&h`b Ɵyc>Qtrvʐk~nJs6T !U3|͇+]* g7>;ǧJr3\S^]}9K8Qw]ܑ]|L@B ;$@槔UP4=qk9(;934~ljMتcMpvo1X)|/mGCL從g/?eYz ^t45EiREwkONyaR+PTmH`)KOG9<^s:֙$ۿ>zz0R|kK4\t^5r{O>n1׾}f<̪m׿t ykZ@ Z &6Pg*QUoucϞ9;w\z(54:uus2Fm4.^]8>N/Nyk^v5O;st;DgK@IϋON{zqh6߯PQ3ׯCp EfFVWHY 鵎gs/wZz~l ބ} ur@3,B]TD$Bk)߯rׇN.xߟ-jC ZAkn[h<:yOv禱Nqш w?'^>zySm'|su뜸aGȡSIhչaNȗ-[9keѯ# zϞ?u׏<{gZ>^\y@/[69W5H 2H^'*Mϣa\4FW =zߣ8n^~~/^rZn5Z*flWMrLY|WH{yLbfB5-۟w-,6k&ڤV$Zr= [rx|/nȭkLfsZG<+\*#TNl݋rE|RM[:ǀ[]j\^\r@mvr tdф1 fg(*>]2P2y< e[k]wS[r㗕L1ZߕEYV\~kgM]V8[~ONqy֚ՎcmF{gQHYsMys};dÿG i1 4"֩3ֶ犐G ljk-럫L,5fz~v\Gky= zˏSKt3f,Yc6' `!b>WY;n}%Sxn]WW{Vڝ3wwJ䤹\s"TZfɾ9\n^f;eEJ ҖjjYt:G~M>?-CTPh0 Hrh`Z/w磶T,qtu˓5Zֻ䉎l\tr1 BOPK\=otӓ۪֫v=w"h&Wxޗ*M&Z1[_ۏFӏBuC-c\ۣ5E&o=ϗϗvzs<.>nSu]jUJ&ڑ A;ʔz/?WCM8dˎy'<fվ29kˉfh19.~zhҹgnWd\qow;9ύ|E>_U.=|[8wdz\;Ҥy:81:}=qϟ]v 5.|o9oslۮsY\|ya# FjE^{>z3ݳs>^{s1 .woɞ3ͼdMTF@15,e : kPwn׿:P(R6{tk[)njTX奔I&~_?[pt>39kgNNZ9Qz;kώ;R2W_$^sVruxwpra zߞ+9TkqI8uw+\y.9|#f'vsgYNr,5A@$ ᧜ZLZgYK[kKsLrКε6 @e($wmssMi+xu_9qykpo7w/[VBQ6q=qrEIsp}<>zg.Ih+{т~Τ8hkJm;-~}oMmӣ}{;9>左aFfWRD|A11\z|*R܉N\4VZR&rhbCޖqy:pzهsNOs5=wLtͫ靸\ܽ:}n:yLϙk0sY%4oZLi]Rzn]m2,k_1=tVss4ڮ3̚T˱I4d<~YUܒZh]=9\ *Nֱ1s36 qZk0̰( 23&Iȼ-M4[F١7uH`:A7J f yߕK;3{V|ݚ1ٙ7pu˛\yW>_RT2M2??*=bi2+94ч$]KIf==mKeIL6ˏn+w}v雙NKaϻa2M (KHf N!@=8h]؅ @'=$sǝז^:{kMd!J[f2nzgj\9zy:9v{YUw<ɾR)j'&󝖻2ub,M3ֵdbF&:y9UNhR[IsnZYfaה1轛H!y2u9qNyԓK\S\u%!gVkhpNIs'F4&Xtv]#^Lwci׮YhⳢT"<+4j:ÞMȺ'+L^('|9H+g|tחnzȺWJI*Μ&[geTMTmK3W$r\Rȶ.9K6?_:@8Y@z}<;oϵ@Y2]zMPREʹ+:,?NX EQ\>뫫QDNѨϚU9Dw>Q*A7=@"rxt“<|ͼftiGG9unOSXo3YqhM35ӶIϳ&$;4LךcMp\5!S <h%ǍX(^;2ỷji#Pf2#ZٱRr,\ܹkKsb.vjj\th3JbBMj:.-"Y. seŬ fx8FzJ\6)PU֢ 2t췑3z6kH L.{3-ky Vn3-~fW]YBYx;+x񢝞kٜkŦ;+*QX.ls/mېՈ h` D4!Ds7\TԳ)9XtB JY2p1ިjN8&ȹY厹b].TRhُV>]$4Y6#}cqCnn;G53v9yzZBύ߈x8{y|K@x-_+5Nu hC1M@! ICmJH T*9mD)9//AV`kqA<^w+)q<^ (j C@ #鋦m=ƴh aEH dI `DRc|Y 3~wgQbzFnfVueԾJs3:$f-b5O ͮ&㎵~o_""0Pji*FvͺfZ b"{.g4;uLQdҚ8t/;r-&n\ڦErM\strlisֺ+윶y`5hf-B-yk[-h:dYͮ\˜u3[uIBRhfiUƙfm17+9NLuxӶg:.묻LNO\sV5)KMSLvk1gf]nA9g?:o֚5"[ao5s5Ç~wwsto\|3ɤE5;v'K Hƒ1 C kK@b%3kLzׄ,Ukk=klVe3ᯯu2/;5OC1V秋 o2\caIU jHڥk4AscgF5!'^5\o\utqx]\v3ծ1zysMNv}tO0k: yCD_5wO (aH nMIAutnnfXx٤=tZjtK2gU73ffRND Nz>~W.{%DLɨ lm˙DqikRs}}+P9J*邤H*@74D oϹ8@^iG]3syӻy:k]Ӟsltcc}7ќ@'m=Rkv4MV01MTARg_)msp޵׼vry-W57ik* e\Mۣksl9ӣC> ģ s"VJ1̀Iz K<~}c[ýX^S~9soW[ftNrvדZs=Hkl$*!Sߒ1m;cQ+R]։ut&r&iz PDkXq3&3dc*swܪŔ(,WjgE^k1yݺMusDŽ9=kVQVP)+}+PB I f58&J Ȣ'6#nYt9i]LsM=3ڎg*my^yrٴr3`JR1Qyz\ff5unF%*魢{XA% KZ(YƝ.hf3ݟPڴ -&ڐ^;;`VGnc.:i:WR ZK923 ܐAԚ[+IC̡MMK^YH FfV&=4ejz'NyfklCap58%/DMx| :٢"kc;7!0 a%i1Iy错qM6!zP+PfLЈcsv-_Eg/:uB9/M-M)39M 1ra_GU;Ϗ[\vQD(c(,RJz# v&@mF QM3u4Y^SrBlggzl K^zn+&3A.}<5btw\ D26KJin=WrJseц\s浝tF7sgk&LZՍ.dkzgez7'|W/L[F8ٺj@Qk`i,8ʀNízX7ֻ緦Xֽ.h]Ӟ痏9޺NFӳ<3t>]s9Y&jYײVْU+Hz\s׿^my2j˛f JLv+^r,Bt^z}Ll9on.gqS2ӱ*\|Y5p\9vwpɥY7g@Vɽ %MB.28Ifsuus۹Rs/Jse]:4sڵ<*k.^;9sv3fqz38OQl5NU4մJGfMrNn'ny7E]޻\)5nqrC4y t*e+ =ٚtA<|kw&ͦ&lT`Cbyӟz$V<]O>aqҀ{l=M'nbrMkNyћf\%Ƴ$vӇǝs{'ڝ8)2SEb s̀ag=t2"om5jj'&yh4A2Zo)םۊdΛkx]t%\:u]9a-<D(SG*<&S϶:?F] @(4"Rlh/YϜ;TRVV띘bNIZ%7Ntnw꜒֓4J" ɹƉfT_ZneKxU΍SJKm5st&y4贶dƆjZ))W X\m \Ie2Ny=]sn]lm"fMAfznZՈ N4cEd+UD>0Q @itM$m8ߢ^iu鳶biZԍffOU/']P8\"it36;kstNMwkIef\K)uqt3IEr7zT: k2DLqƤii苭k3}r輕8"cE`be4UtUMJ9\h3;;^&|V9`( ]W^,^1H{|~;.lPvL48Sh=):N*YPάfFD=l9Zi@ȓs7zUg\)Rzb.;jtϣiؖ`[S5ИyazF:khՕ4 <׽AD@ֈ̣mΉ_-.y\hNF8lwYYݛg^~qk6kqgēuƬR$g\ᝇ΄#Hz2hцqk/mS`Dɼ2\5ͮ,zԦl4f60֚JsNhviq6g1gDugѤ*O"cػDDADD`M̰ntWlGs3s6nKIgOW/#Mǝݞ~v1ZO0'=ff2l"3R& Z_rCfٙ/Ts21HԠW9Z%kKcYj%L'v)@DK"T1EY2bZhήzm h:bRMA:+$M5 oԚ|ξ:?y/z=]c=Ls}Msfz$ef$şk3@tΓ5ILճϲjk4J^i+VrN9kԤ)w:ã1rW.sJUq 1jf4dMyhgDMCNMH֭IRTӛ\: D4':@JE/܏F5&;;:dΈfg\VSh=0E3{tkӝ#F4r+kޖyf2N@j (D׾, A h^x`UѮu:tsT(0=!jH&ImY9̀z>}?W6vO>姣=1SZc|szrMw+|@1W~^8cZbdžϜǫӋSh=7 99np#[rn}][N(֯~n($A\ծ+-M32tXyn kw_G9L5rߦ3ǮgOU:a/(zi yvO&,m3Α̴䪻ӣ|\ ,RJD5q\C&wv"g5ÆX-XBt!5Ӟg5.V #+f2Ɍ^R18R@wɞf]DM3='63R+л`I e=^ ͺgVQwH+@^p%,r`:(+[ak "RPЦ_?VԂ(ahg%PRMkΎlm: [1晐}z({tϝiVsӷNsޏߦ.}.~|MɡeL.yΠwT#={5i.:S;^DlEX y۲] &Z﹭nN4".eo0I]ˢz"$9U6h؈rhltIB;o3(@ DzZ)ҳG^yyc{Zz8rwѝ> Lw=b1zݼC5ծ 4g;eRIyg7 Cwr%®ȚC[̭&=ERI];(n&-k} Y2N&$MMEs7:Xo߭[8cXs`@iΛPϔD˲3kѾ^v|׾͞|Uߛ^nxml>g1/q֞mMe#YNk0\gM=/:M5si4sRD&W`-5LCj.qtf.ܩ)P:3&ytR,̉cT :m9Ei|>i466uN;6ye4$(ȪVUfN;/|oӞ3Lo_iETRxϳZNںiqskpԎ(][Qپ>g}}Z{NoM&Uמxޚ{L洒Z 懪b ^TosyR"TPiHP#e4B{{SmR%@h)QZdșgSzѤpT=kji:%NhKe|\}\N @{ˀoLxXoǬgyO9ۉg맭.fhJ8餖uω({ 2uIg-shm%RʥҬR՚@yqۣ\Ƃk67B\ %&kHLcXNYsN3^iU=nuDw2/-yU:w'Bx_. ?4u$1k9k~sߧ+k9Ni(ٳ~+=yG 3ۢ,J {ȧY&mi1.=|M[磛mEW} @ IeY.tj\̕;9ݶkͼ}WMr3SyS5;7>`ꙉǟ= 7,>ǖӾyZΦrZw&"pxp %Ё <@7}3 ʑpy:I*S=m7Ϟ:# %ϣ~geJSsQNе*iyZ󫔍vgyE6%cm喳GI[;& +>9 uKӛ` 7[כg>)_/\:9nkG>?E;rkԲ'W*A腞tg9uJ#SPC']Z:o9SϤ%Lǣ|Z PFwrwN\ם0HKV\^:NTBrz:ݶ  ,Z>u :Ihtn^^ͯo:-yo>u~ls 5P.:w2=^[~ϋ]oryxw ^/OGttgΙgIįs'@h4/\cI͎)hD%JF,aYr:o|8:=`kCy19֓n.Gh֌.mZkd3ҦfٕخgD;+*v.YMkVvo S-i&k3Y˃s--%H5[^ 鑗AΆBb[ ooRǭ?YLmF1I$٧ 4DN%K̦s333#30񭁁m$I`CDfZaK%/*V!/7nz! o,5h^g`:ř1!/DY)O}TqpF?07+EX:̫զhڣMI;懬{`e22,vj1U)kK++9wpֹwu5uBjB` ffdf\eh|s.m.bW+;zWSyCNwpuƬ߼jCrDx&&S>ng5fRɯ2 &5Zc^X+ANijiGhe;CnmQR2n ėS2XE@baC3i1Q&liԉXNR)zuplͻjE%N5P8---) -zZ?-)E m‚r:wdD,P6U Ad5aۊ9KKJba, Q=~X\ic Q-c+1H oЋhx\Z?kaik~p aKTlR-qU9Lxew8>?_C/pT %4n_ J"C۟.x?x^Bz~]/Z~~_ c-[Ajy8%BfT{oX7'MbncR'phC9K<oӕT4W4 r uoԕYc#Rj#318PbǧB#;XNA)hP12`VqIgU d1xwK Uoyje"3M-ȃCMIȫWdZ[KBeC !-$Z`1egP|u%%Sc-3=:q(ƚifhU im I/KxZF n`gl'nY,=4j,&.'f`fl?+ghqy;oBnSQntcLL;j&LL57]/ibfq 4 . E* 6 y.*)ufN]DI"bmܛTEӃUS/ 38+(9^&B3P1O9@uJXMձqLQP+bbTlTZZ.e:voɜωf6K3333#l&1M*~ƟZܴ----G]:?!zAt&ip&kmˈ0FMy9zm)-\YCԢꙔLNuzwx8/=W2Ioe=s0@c*4^TҦRX1i%--t`a9Rc~CBE ĕjESAMjm,e{(Du"S3ܳAyy^!p/$ҨS{&@@S6b!PcSB**m5i[Ø@r *ҦNZYV3>ykn|"[AL /e[Ź.gQP4NN1L'n ,!E,!?n"/m?o4@ ҷ.>#}=_ѪPsT*dAҡtD~N [PunAѹ8A5|[F}S>6҉No?uIɢA:j*qEZ _Ddt^4QPƵw|.!` p`u0Aw&ӺYLEkbe݆'rufMՙU*dB:3yfłbi6D:+9;՝Л S7Lzsc0yVH*ȵžz^lQ;ԝA!C'/*031Zm)0apSNi'rY$Y.WsC XakM I&S1sԠy~[E=3/X7JH 3b/KqٙD\VN1Eb2=3F^zthz43IؤΜiʜʴiجZX!j֖%F)Lcq0+;:pSU3;jpSQ1%5--ޮ"Xiİ>61Xa_|Uͯ)S0)Ԁ)h iHiZAEC1))ӂ8m)6mmuiim--\^GlO%TDX6oĜ_<im`kE 'Rң^/LrM5Nڒ"/b~,Ny23 jj*= :X 7V!w YЖolF3p/ T{o A}@gPM궄A*T+U TxM|niAǁ^HKֆQ;֘zo Bt7DLA۹fC"sApfX=Du;ܙ4w-;j4Eo*xxm ׉xLWj\ !25Y:O\Be/)ӏUT^(GDV-Uٞ+ARg291WLfbap"u V^,qf_KyxkbnH*x 3=/7d%kL/ nY5S) \QҤT_2mͱ6F@T޳A>Rf&*Ծ&bvFU#*!)vLIջcʰE=(奴KKKsq/-0xLfBaSnZeL`RRh$% MC?( 혧6B8jvab`[L31 eZ5-s뀽.&ZD'2ڹ.b'Tf{eCfzJZ$]mZ{oKKKKBhRP8=xSYE*҉ZO4R Y`"LU-l"tTlEFNV"SǏUzqV0~"*6=B?g %:eVΚWmXŘq*p?_=?:Oד) w/ ,Ȯ ẃH/,jߧ^'Sx8ԬUL2@ nl`^ ͈hP&a& -}L,z̴ n2j `#=[K7uNwTsN `peZ;I}.&B\BxCn%⟖ÉIim3 m"KKyM՛7D,S9iiLs*ԲBqS&[EdII]i[k6y XZ]G9(2-3-B vn$ܟ?*1IۤI** @e4IfȘT")SFJQE"p!X4^fN)vx3={赱ʛhY55xn[ũNlAҼT 9:3n4 …e!D)ZJmK^(8?Hx2BΝ8ɠ[ 5 `&@MLzL`m3iͪjyh͹-NG󥴴򁀖"F8}| mߙhE-M𼾗[Ki&;OJ(*@'P;q%ŏ@T!^>ץJ߯5Xp ^^^_k+OKEKiS7, .N|FU"AP+z[3bLy[DcO;Ξ =@9'eErTƣMSjZQEna!R4*b"neWYd/ *FxLZ`EKQ. o4okKh<@q.bE!ƤI{FoTjS0 (RӑsL 곉uYMj|.@9vXRJ򅈏Xfr UՀa Lvy3 ^1)KYGT&c,#F#,ch. %Ep)mT,МS"\&T N,iS( d AV.<\ޛ`HDZx KN|m:iyHh߇a-0%؀c/=/6ٍH`Ax"8,~CeWNLpuMo! &`+"-U\Z^}gp%EA;S;Qj/ [E5)]!R7Q{u+ukxjZuMz,,1`7LmX:q,kӱIe^oZ%N;7s]^HJJIc Y `bf T~s5- 1u%1:c!9Ib6BL%7FMjRmR&eVgo,``>S#&~XʟOԻaļҙinE7@r ALb^1ihl1'yٓFtf)Ӗzhĉs(1E ɂխ@/ >M5#BJ9Je7+;`#JZ[NcM!DK5$8 l"tC5i Il RQ 53mDIF4^m`@&"UE-*2j_( }t,t:V&Kb}QOk_.T[釅 PK03Z/// pUȴ-KZئZTe*Te>#>| O X[Ŀ?aոj|hAƁcƘ/ A-002Oh|גqAϕ /0ѩ^%d45ZR[N\s⿑iOq# E3:z+ң[\h1ȁ+e[ڐ9fBd!o)oꁙ `Okm-ķ/%bY@*x^/@&i`ުF`M7BjV :jZi⫷N"t4ʩiO ZlG&3a?ax<)TZ"COҞo} 1ZZcciS%[촥T_"ua qp:}>q [6+^0^5C̯Ο$X"-yy:/0*lUBȏ`1 U*yʇ H|V[S7z2RSfmH2ślLDiPx_C6ՠWXihT4ZyR50CLe}6BmL&2,zxĦ0zw1)Tў=LXKsihKZ[̉T74BoˉQyk*r!Nҭ FAe뒯 JX mFhE#KF_!ioҒb)^(y^e2:( 2\V05Sw)!%A2}/T^uiaʨt3(:mZ3iyS+qKF=x{4R9ҷHr YUpdh4YTJ/ 88#r%A.5>`SpM9H{?џ#.?kEfMՙN [ aY563poj3qJ>s* .jɌ.4.Ј'i%A-@ApR vhZ3jֱ2[w4sN9SzuNCӝ)Ӈ:M՛n ^+ 3ߕ6[%@^m3)#@lZ J){T# AhNe!; `RYG ;PVJwno2QZK6N`Ђ<-)(ovNmټ^,A$BZcx!`Pf`&5MИ iq.a,ӼcZhNHnTPuL$2*.'hJ)j[ Uͧo[%0 jdr:E#TS`by٥1:KE`@2M&:>7o*zG>O-ȈZ50k p64K0,nei41O5t/#?AdZt.:z#Qǩ)}}.fT_^_/2@ᅳ32eFm7YkEl=58FRn-Czqq!ء«A}DfX;s++^wK;:nݥs}gr//YUnaK"Jf1bPyUI4cMPڤNէmnM 3Xl"TToKˏ6MAWȰu!wuNw)ROpgUP9@ػ_TjcWf#K5MѾ -!ஂ y!)Y Y0jJC;;b'P7Xz\hzǝvxk97ny"66l(,`00RmeJC$ lI͵dqBl,RBm lYP-1{?\Kj:dX)(ͥ  D-:c'iҚrLG@%2i @j,N 10J۩"A*ULٛsn glC6lYd,z18)些]EAa͘ nKS´B,NԚHFY蕛XT,åjeZL#\ #RVh~^5~6QVoxެҢF!cW7Z ՇN~YLRuZz3V Gw4162/".~.0*=1JBGP,57Rӫ8Ro;q6lz6e Sv4iV( ,W`M+J/Lo=|YT*V0fPtf5ɖ%3nm'Dhj1?-CcU_J1PDF#;'}x>$sP~Ac/׊%?Ĭ.)}Q1Q%3E5E>Eчæ;oU ub.bSrgyO!PS^%b웉C[̦-yih,'K-K/m*\EjࡹtH~f1qqۋv\1q+}Ԗ0ii~iAr9:SW-ԉGQl77+ڕT`J- ju_TCqyop)U7YLՀ:arVh.Y8WF} ʪLm-8Z]/ C -2[_Kk^To33iZjoS0ԌҔe4n*N.(zN.i񲕗I -.5 ux6RV))ղ;HSXu"J5,fڐ"BHBM*ptޔR{S bBV2§,#%Q-0f5Zud|/i2hW4~Hj,l-P-LVtHE{iy}//yV$d`iU<c`֧>ߪƧ՛~XMqm*|j'2ΕͲ!85 "|n-CGֽRKTUVv@t.}Si)6"^e2LkBR^g7&P4cv:_e))V///TnE1ecw麕psT=0j`ӫ|t87DcWc8c7-eĿC@t,,*sΩlZk eu(!Y -X.W873kR&aT^m1=,)@əR0tӕhڤ 5"ӷhy=8$.1p ¶3o"lFf3֖&3 L4KLc|f:-SOya#PH+PVC!'H(RODeU!nXL3iɛbZ(Ako[#=LaAƥ&>n c;?ҥ#gl=2(S۰8TԖSSw](5;L@>>//X j*0`iyS@=M|\ugJtMH:1;TC,Oi!`]R)<w3uܧ2IXLF2Hsc/01t}}4zc ,"WˁUeQjˍZGcLZ~-OV#zAQ4&+YnIKļLa-"nqg %Y̖-E!/ [-³dx4qʵH%%HWZ+@:e*OIABTJGħ 1M`hMiӋ_I7-G0o``g:@V*CxVʩbGbRNVv^^:Yf[-&nhMtӷi<1&*b6)Ud!hA0&igTLLf05l%j̪ՕeqL~2m)TRuJKuv-fkvfڬK5-PL Pg,TRSQjj*T*4 V Rb|X/AW谰)~Fy?m/vШ& a6ۛp@&iZZZZZ? DTME0>GNoRaMZ)joUi^8A ( +^\zV.Cc2s^a EV |WìZ[,%CӐ= OJCC򴶖c>6zƝTqfҹʧHkJz!7>)+ʀ2%?uTNѦe^ 1=?UֽJKԟj͔|GVA'QJRPjq mqkfCd|Q5e¹ʴ醬qRKpCR fứg"3rn c3 @Y2ZgVgV^31? fU j ŖePLF,fN&̘QbІi:&1MTB`m !-2ai$nyvy=Y^ƵpOQTE*vܯ7kϨsLTƤ bCuNMZi$ *gp,ON~Z*4шX@"=IQAQm+2@W҉U^'UolLLmٍ fӁ `F\ͳ1izq/{bmZ.Bc-+8^--1Lb,c-QxeKCDLJ=`ͣb /\7*ppEPvrNQ7tB%Y &b-,4dVj"7HoڛWi緝#)~*?.^o j_AJ7'*b%%YBP\k0Xީ5RfʦZ*c ƜB/6ۘLe3j3!Tol3/h[n+deU ;sXqVjLY]kT-\pH`e) {NҘofN6m򮪂!qcL:O CΝ?Uo)1S&*g2:6D BB&3*a$@r͕"m$Xh) nD̟PrO|j%KS4}y<+ q1"3SsToqW~+y*GtQ|3$ʞ۟R٣kZ̲&Z/>?_R~,xeO粢oT/N" }Ń'A̘"d!~KV:x~'=ȔMok+&ASSҘ*mN3&9#/ v}/ܙ n"CL+`0&j% / pDnHse≺ꈝܑ %n"RϘ\(c 50ԛ2[TyƆ=A3ѲΟaMݏ ܩۆܸSFӮ Jz^OpfT36f"r'|m jE %=i -0!$ B,4PA@LCIZvࠊl& {K V KMSb OԠ`|jCK۹ lֈrlj@R4S&ݳ;}$jXk=-" ]鸀KD∰o1OMʀ fx;V$ՏZ>0{&PQܤ&m&Ć?C~ߣ,|)rMv؂0[KȦ +)jI[X8)eOӯBq,_%}z j?$>>/6 cؖ4jt4J-G^3e u^^^e,"j}Og^/A\4 } LgV>K3U[⟄L4>rhh*bDѽP hS^y[o/ۖX PnTH)yy7'p9)xNh._L/f 13 v*4c*JsDdyCuĢn"7֔޵z>Gj}8w5 iNQg\0ZZZ[ǙÒBUƹKpMeUUbаُL(3iN -M҇ , UxBQLÛK4@F`Dѩ6 ZΑi"n>.zq꩜j:~*c4J-FAQ{NuP"** _\g8L^{U,O0!1 A0@Q"2PaqB3R`#C?T3?gG?Ƒ4g?_g?g?ő4y#h}Hpt1Ů"!2ЯE(~E4ĨѷѷBcD\|g|nWQҍ(Q:mا#[=FkGi>h5 Ttݜ f5y\l+I1j$h83D/S)QLhѢF(GfſW7bTIkFt'#Ts?#TųQѭ} sQh8OLfOJ+ 'ce5CmĤVf[C5"ضtl?RhnR4V#ҪRF B]_b#4 ڿ߶Cd?iMhioG(/=ΚpVl]K4d6EĶ%%cBQY^%P՚7'wIYc{kHtbeYٗb{XGHQTٴҋGF+<$]}{ֶ%w.ޓ޿~ג,#tj5 Ye^q"hLOr,ejKqJ:PN;.Ѥѭ VZ5#H־hl)R,S(ǨF2O-"߷ܿ~e\c[P Ѹu?vzhP+ vR)]ankBMiVSԄjzc(Yґ١7(JH{^l]i%-RQ斅zpմrV,N;|5 /XՕD0Ia&޶ ˣQh56A Bnjv6J(ir.dMВ~vkؾe-v'Yx=W.%+)i6sQgSFo茙'Dm5?YxfOfjJE ,}(dNӒ4|(Eb_ѥ}Qt&)c/ 6x0b.X^o6)ed%DMS~?˾?w]H:,0ĩmT5tkcK(}j,k՗ =$h(vU Xyvq#(!gWk2)bHeYxHԍfkfk5vE$zQq<+ͽ5{wW-ThrŚlCWQB5Ч.hSEsfE3K#N&3 G:^bޅXIҍ(I^qc(zHJz-IQ ~H߂/qhzG-| 8|?o vieDJ+e2eeZMH֍h"zclĴfQc5#fڿm;(S좳YB]WnXMn(vS"iG5"L3- udJZsycO<4Mn#//uk{;,C͟ %'7"/^z6K sbFkLJZ.Koؽv|Ye" S)XB0l|nOlIbВmDKQ]WϱWDucOoo)=aX+xCc%-1 ˦=fz!7v>C!wvO.rǎ:-f3"2JmIYoC1ԍԢ1K,tq~~5e-׷X2C$9؄kZD~W:Jd ԞشZǩZ5#R-)Vx{rP~+/67tQ랱.c,qM;77-,44OF+/bFifhfhf Yhhf.G(T$﯏EV([UU1ƻұBAyݱbsf~J(ұ]I8ܤNHhҩ2H=_{# R,ǜI_bՎ v6-%+ǃ2SCCqcy#ӑ9,cU4,r*D[y9G%}|km-F6hHHnnhN?g5m6ƧjF茿s5#R5#R/k_F[5?YfzSm16!IK $_L}I 9ş$O5l:*ebخݽJَ")} "-X_eҼqti4iiiFiE,^),?(hMEm"m괣ѩ4EnnS(;fpgzeJB~K5+_ H2{ "PXX}K<*ĸb B4I^D'pC+<Xtt,?BB% e{ZY'+!VMDݲ1&%^ĕ?tX\l9VVƪ5vr?) IQeYbx,bs9$9l1Zncy%fjCM[lj7Ŗ^5&5X#o/re>سaQEYF+4QEQE9"՚ QlH-Z|8d.g 4nY3I(^ISoLR;X֣hFA )MqF2+"Imc6F:ѳEzf8)2.LEe#(ݐi1iu.{t.6) {^/6x4NGnİH?!F_cФFw(X䢳*Cv$J"ܱFdQj%ŶmMDc7C>ȫdgMy̞}ȇV_i)RiWjd6٧kPޔu8$ ~+{ X銐bORe(j*V9J՟ȋwK B2Ft. hԙ}fzPe(_ѻ4uzRD$9} S5 [ٿaq\fV/Ev5ۡ&IXp$HvEoxoHݾ^C s'!bhS?iFZ5L2j53S,&[516jeD:K؍е^ܣ"ߒFCZ/ٹ+rQuV4KoQQ/۲^MeF{g횴Avtj៽mEb+R[1 Ȏn>؇bbvpX/Q1f9%e덹20Ӊ]*Ŷ[5|tjh7SNk$'bh^s؊L>/)kuE4&j/f9}((W,khdc5ǿ&5[$lE ŗD(RѶG7bwܹ%/62?x,_졒VAyo-C~ƃJ6\ DU iF*DpP(QAx)x¶Y#]pK T2n/R777UQb)[oEŖX!'EOOÊd\Qf Ix5F/ ^,WYeCbB)-D#u_"tLYEvK[xnz9ofjfMu꘿RFOfi\HmGlW!tij)QnC!tVYP߂{<.D E䋧B43~I[-sILfky[;+I!}XoeF{3S53bMgIOMv2N  fN#GKq;]d/aDaHLRࢊ(({b7+(qIo^_COD=9IhFW7H$ϲ=)cuJT3VR:RU!+dEФ%fŚfYs=DkFQ'hf& ^E8 h=Hjdne5#h_fWk(,MEx+yL {v߽cؓ{ J )[*f$M=6zl?4(yIyTKnQT&НI<dkN L VԒ=k#4٩͋B?R?HZ-_ׂ]Fjc(׷^KiT|f:i.OQX7Ffz9oLskgRGQ$)-BvuhnHW"7.Dӻ?.(j5#WYbeW>rfI_r5JdY,FvsH}{k4$좿#UW]D}֊e1G8-&)W/+F[5t[Ë/wC?ڑb%45]#]wIwa1ŮLRQ,ݱK -ȪY xC״ŗƨRbw12Eװm(FF ,\h^Ļ*݋ܾASbn~CMfS*EHǨIX_ #G#[^XEx(QEbnn4 VE4٦FzlhFieG>FKݢ泹m.ƬD>GHOK:fR!auVWbce{>ޤ5x_ FFTX6-n=B߿bE}/L2}4G'zHQ苢zg^MkȨ>F忢r1bY~/[Ix=G)79C VVxCcE|-hK՚ ?EHa,H[䰈Ŵk3YYxMY3Ӯ> v^#J)v/RCgxX'/?ab\!Je(I] q:Ykdb}HƑ4PDyXhDbBVOR<䨜t5 {.ȻCw򽵷{e -^< eYh5,7E777bS^ -WLZO,lOB䢙Csq*4кrobi-ŗmo~MH+fV^/ۡN;Sfd{no},V(q7f(QOJ+sMGMnVT==ՊexJC8Z(7Es|i(QoԾEѹEw[/]1zmv"č=~vl~OJ;^: )"=׋ lƽ(c"KeY_۱r/Ӎc55YkкؙՎWd]|wxY55 au})"*(S#oY/HE8r9lBG2ٹlܢ,(D֋Ƥ'dLe5H ټeyaI c,2u_scbG3[4_F4QEfGJfiEfG6żŗ/U!FqDzzy"ՊJ)QEQQEJ+4VIJ9͊FOEf#eyO k$<[XB}D|'"=/Ӊ?G]4M%v_en7H{>l*6k ۽ nKc%lGO)V)7]$-#R5YՊRzqFQH})L}6kzbmrKx+KrHL Y^%چ.pK>Y--pbŖ6^/Ttk-.KOI$$b6)}ȱLH3Wh}SYGXTԋ%p)Y4YwkWc(CnSCK|ơJ|_ѹR6)kt[/=9 'ɲ8RcM 6(CEu4%H҉tty!+)Ce.]Պ嗄5X< l;EVP_HWmq?5Oݾ7c&)Н*d48[niKaQECغIPѤi qGAX3^5B$Uux)[M-66͗ej,cK)&,NОۍn=߱bcz'I,r2Ghf߃Dri#4c鞜Mb$igq7bqQh?qGzg+0F"h҈Q( +OɨR5D֘)2]$=tb4OZM͟J4QE"YDYot$k"ג#TKF6ܓz٭vgk5Ͳ.v?5ʸ lWۻ:/݊8^BtIs>Dqr$DvcHhHc!(::}KjE~^F:%o "o5j5lkHLf$^'Īئj4 c"1ollJS!D&Ò\{eg.q4,uwbWXcY^/񰙨W/N/~sEcbYF\K?SۃR3g~eHF/crx5>~JP~Op+5~ EG];HBO>ݞONE~zoޕ0rt_E1.bxFK, |/ !10A@PQ"a2q#BCR`b?qI$q^=KJG08E/CTrI:dQw3I$ozoܘ%/DI$N2&&M{C[s};  /-IɊPv4$F 5,q^}VoP=$I$؂4D)e۫ֈ#D$dђ2%~PػSjO$C2fdN#Th#^7X%G"I$#$Jv&Ffi331U#dI2C%ii-I$I=egmLHЄXpzFuVPԪL2fLI:i$N[EG0V/qC"QW"9, ͊2fL11 ām$WU{ճR)'UV;͚08b;Tb]9B?'^;y~1qz+*ΊUzGdLIŤ{lefs-?&E[$M=rNi6%%=/$d$]9L3Ө00e*&/'GN?=*>n͠Oѕ?C T=&Rى&D7@rY,BI J~ݦ" S&羯7u͙S~Q{v;C]|Mp3fD:~Rdy?8tI/즇^bBCV|iyZ4+;ELHv־unzOitC YF5#aWz[=4=:*^ v%6垓aR c0~NK\2EOU}ZH2LJOBI]euzuF:=:ُ?)^LԤ}1Wdo#d3&̌PfDKzɛ)rHETTQGP=V:Cm͍Fdd"idx2M)x&GIF 5ͭԐb@j-UPWՑtE=5Nq~82pMl.ت`|bJ9J#cOVzε+QƝkfLYݞGЩ$jt Z]jUnԥ(}vҪkuEԞMbx?Sȇ\ ;6vIbN[+.JxuV.{u?.©.z;N0Lh~'71Qpr&drU$UđW:d/̚U"=_ѿ&_HQ=Fz}J3mpkdH\r/cɑJbbCWAN>Dl!11h}G]D=VzB}Fٳ!O]JWFuv=WzL_Tz}z.27!3*ʔFû^E=ɴ1g/Dd=]W SH}U#Ģ dMǷS[SCsMtBԧϸa״"UDIO;*{I#H}VdzjԣҊG)B]) 깫c~ԣxe5 h> }VNʔjJ`t tH̒jʳj,OVv䝯EPf-,I+Cָf/ּ 2Ce#{͗'FnUϿ(TdI$Bj gQzU=**0d;ҥ\.=6`,FIZ tS*ٌ+?"**OK.11FQB{ّ6 Vݕْ|_!ЩmGJS>m?LU`qzhupzU!S.Ly1.a>OO.*. Yt .MI@mZY EI$Ie5~#mѹ2oi1n l$c:ֈq!^:RԫnyїZp0G_Tʞ\vSyvdU Hdx(P;TSF#z)QgCE]ʪKäoވ K M[Gu)"nIANu[8 z"WO"6_Ogi_dhQ&PdI78E[pdOٍ?f4.YM)N}$zKM}zGzGz?Ѥ=$E(ڝV\ق0_f զQQ,əGVԧ͠CԠcJ-MyE/'#I R }>nبOt#W`T5SM5rƟlq+L:#E U hF}Y]|2p&$IFӤGI?F4XKnY*Ϻ-i؍n;Ӕ$m4~*mң&sSO-I&V+eg.dOtui6JJB7t[H[^NqZyp=:WRRlde(U2;|vgBZl؊Ib"UݔJ~ժ+tD7+ޥy Ĉ?;ί܈Ok{AZu=S}hf<YЪ*MIrJOB)Q U~}TdTFFPf2Vt6SL4Z|ğfGn8[[mpAh1AA'iFzɏReT1hZ*誊tr*Dnm cF1Y[D)'EOJdz_įc$I$I#Ү!簊ܩjGWʺ*WM&*  111LNrAFKs{nbIDQ$O] 솭}Rrpx_M4B^K1wə~{PL'CcQOMQTV{jE$MIMK&Y29LȒFQ$I$b菡#1ӂ f꿢\gOG.M$@՛Vik ǻDYvDYiD"+:Q#W s^ +Eg-<ĎW˴!W{$bSϞ+D y$ő&iffHO紵S2l͍HȒI$I$IF@7&&dI"d,ȔI6"^=JdI$ΈSoa?ro|A An;/Qx K#:L(_7I$hG$"wv9Lȑߒo#tjg$ Ed!ǰWC}LEF&&&&"^ 1(r$!ԽII2 -Y-p!dAZ2m?:ECdو{mطw{솅SRդ]J_$T]-.bO'6 W=z hu u|19/4;pH!ڞ7HzP(bV2tgJ|щҭ\)OHչ8wCd82^^QEN-+YSٜV2 bg)7nC ;Ƙ#k;=kZڣ\ʫIw"jt+$t3|wWWy+Q˒#y\*zڏwyZ:0"IWhC1zucȹ&M=56NK$ܖI/쑲Z9[ș>G&Lِmn &Q߳ č;f{qJۏsƠJ7QrUH$͐B{B 5& 7Cpu::UcuޒI$m7~$>Ja6*;`Ɏf !EK̙Kx.F;QH^t>S͔٢4ƘLmte<t=ttЇu='([ [ sI9#DGr7PfVٓy>4'f'cёI+Gft H jCBݎbbpLݐ)Z##LY)1"ۛwkhҳ)ܵzjgڞw|"[Z'g$Z/$ہ6I MY!= 8w*vwlC+5v;OڶPnJcg}C-Iڿ$&ON vJ:^eXC$I"2F'JEKmck${Şkz#=xxM]:1 -D|rYu7~K223&ˑI$$I,N..mU}:jrJ>wykFFDK%K%x%L얄> v "AGf/A#$I!R lJ8&ڏy$@ A=Ư6ؑ J ؔT(GUZ#֨]W6<kn9?#!&ɵWԓ,~ѨYU-rRΕY!Cu^ݒFD~}PDU~trp6u:αtj{tj"'Ibb+I$7d6n-1&&$Z/6E/أ];/)*Ei2fv_,] D1";WqIBpuȥWYGMS# Hh*/fOާP+?GYJtOtg#R*RfS:Uػ˺i]׿c*)'UjtI$ے]I:D&IvMܖK77%̭,DnA##+=gƵQLؑ=2$l6ϻ"x IĂ;,Wj]͑Ɖn;Vϳe:)9GrXSvII$I$I$dI={JO#ɕ|EB<| SVtI$I95g$I$Ica[kq6!1lNY _v /bDioh/"DqnufD{t~/՟V~-mf.,bI|`>t@}qOθƉY1LH#v#DArt=AO:bTA{5r"ؘ4~G~F^vŠ H#}kop=1]粇onMSrRGgϰ\kL^=Zb'v#΅j*{^{~{s}Ȇƅ-*W:޵gU#}7 nn%x7z"6νa:"d/9!1 20AQaq"@3BP#RrbC?K0,XE?fƜ}CSy>{^wS:]3(uǙgb,4<,KoE#F]eEK幩E'#JeT Ih܍(ҏN(vh5)G٤=8&\k.mkMeЛ+C+.XȼTD=JSb=(l+TiƓID,4sO r{,d#l&ФGF.\?ahLS4}&W_ƟS I'zpT6,[$Yi?ÅpKh,u5Nq7<,XJ8L+_wH{2đ͍p%ERR)E3}cMb[\{?h;biƘ_}Eg4[E_GD9Gv ¶> ip3D~K3R.Kx?gN$3,X,{)y,WRˡ68eVZɞ[ TR̔|+ܲ)ws3pQ v,iB\M+3S(ϤC,T) _b5aG"1^+R= &iFRR5O-bbŰ҅9Ӗ2mW?L'9zؕeSE*q,V0.[띬2%[)n"ij>+'ⰼɯQ󽄓\/s_ avq8fRľ#RgQ̪y H-ˢg ?r]8%'=̶\|nJe$r;Kx] ([ AsR5!e3lP.' IIXYZ'gj5#R% Q^4Z_8+ [V|Z/_3DQ?Ěy,X^˕%Y) l2|,ksi-_1OMw¹&cD> +k C៯촱)r'7.E)D¼_xKay=P$[z\>&Qc zM 疔g'Dʢžqª'RĮn٧ \I<('u<;p[y:dx[yoY[sO7GBTQȪTlՄԪHw{\9oEo oygx^+{h]Ŋ_W5j8aUƿw}N{3f,y,,Ou<;n\njR{2RJ<٤}C8>(QҼ&4f|u-4"‹BZL'?xQ_͟uj)S5;"Oq&q8' 1yevST^YƜYN/i}?&s^J8gGDJE ;?G&qqY)|URR~M/aжTPB[D٭奋b28)\m'm?%g䣉"i,XӅ(LhU>i4Frr*[,.nk'')QXG ?X&9wC=W?]To^zx=9?r1;fNv2Q<ߗ]%Vu.='_sR5)j%ij2R,[2_NE*[,po15ГT=n#bښCnИVeKfd0N d%b.%\C%r\IE~OSrg )fTxh+ 9ǿLҗmXHϡ7!"efħ{3+34-0諒K74Ifcž;[~~N]`} ѭyV?sZR5}ɩ+5X,Xq89._XR_%K|T_~Eѡs,X-.x㊛MesQrq8fhԱPxS4YcC4,on(eu8©k)&*՗¬*$<]]FrgԜ~.Mw'Éx^#J nƦl/)7rxIس]4-E/őll<ѥxK#r0ō(,#IbX"4ԙQHIO{W];~8yU|{]߇U˨L)W}[FMdooYWO`w_ =rgŊ9IgYY^K.W5KBG&h) &afșbŨi4KE_e٠i4$)J~/XU~ ?Y˱j.j-e&KDK5ɹece ) U#L"LoV \)(/N8EiCQCKS +6[%*&K9Ngpo '&~="/'EqX[ ҷe6sI|=4*:,Mآ+Ri4M%XcHz\ՖXH)B梅d;[&NG'XOS|YZK*McTQ%SR!VGIN[<<ȇx(uSn!'yTXL,%bw!ޭG-2WdW,|d-2QJDE%"j]ny R.\}\nJsz|X^]c 3ns.ԍHJQzBMR.,/.ܾI<..jF\R3DDb45H)pv-,.\S6~-']p >I9|=ܤ|$2٧~E㖅JWo9Խ2SV) +_$?g H,W+"ώOdXMREgV*M9`B\)L BK@1n&(Kb -%F6Q$ u Wſ3ȱLD!˖/u> '"jLfCu̟Cx ,{bXk˗PR)3Ƥ/XU/1چ_FQr6s5.XYeKwU.\<,ȑ|p]Fa˃$bm(%-+O{,Q;fi)s4SPlE?UiKacJ(B[54ȴr-3FѢHp.7VR4kҍJ,9icIBxq%K㤪t4бIN\6_eNlsD~IR8ȓHuQK#JPKasW٬~Z&[u<%ʟӖLJ&3kV$Xź6O?3Ŗd $͘lkk[O ?o>1o9-.ŒTZW oVS3.r7̕eO IG2ޞbKsԚ~ ><5/&|jFsQ-&U"J|e_&G&^r/14aJ~%ݓKCNg^GP|)wzTN> f_諑6*}II+ DmOR8T МLR/$W D~dYMFxGRÑdWhmw''s넑(luENpr>Kn&MBƃ~M)ÚD [_OM~aɯkslYVK$|d)azIJE=7ƶNGLgمa帞,PQ.NlW gK?M%x.ȷطO# (cOe>X^vżgY_ qb>Yw+YV)oS) %:<W_}cz\[9aY%XCr0^k_EJl4?L()lmX 쪑T'吙ljQ2G?z]GE˝q'R$aКIN]Q#u!˒J5njl%)ۗF8dQ k)U]KI|OmU?D2~)rѳ6M=_5J(;~j4/F<K|I\[-53 8n._,[ <=-x+,z*m+Ώ7WԶFzhNIR4J4T2XiEb~ʖ'nf)g,R8Ws9eۥf钻s-ji.#[5kfѮ?&kejMPMg5Dke(vr~N>pPbŋ)v4#D> 5,uEo9}P7"j::i5˲)U\+ S!&#I,|*}۔*%|4J=\ce+SB4CD> K,U,D]7!<͑ocػuG> ,=X1fepȱR"~, {~sTiobfS͙!,ߓS9=}s!y\EwizUb|u"SY⇓%ǑYctCҩس೸ՋNˡej5a=K6i>#H1)ugIGu4Bb[ Ԧ)cX5Z' (YVۮ,Ȕ^"IJHEbjĦ:%$~Ibddq.) IمO%tU|\Ծwx_ K ῩK)|$MHaErT'ě%Nv1.D~ej-9É)̹jbT}fTE$J$f]ERDױC{ׄ ޱ&Ewg2/-H"jۉ`ŵWyb{ػoO} |7v r><57R|!'..2u}S.\7¥kFk^J4-r(&QC_y!&jNO47\,M)rb(%OV(d)ϱZ|$/\SҜE>눖̍8YEd]cr] ̦eWSԑIМmԪ,s'CC) SD~ @QX"l=T}FZ5/QsQrrX#rY~ %>vR.9zr\LT*܅H] ԧeU}jFi>t$DTE) ") FW|%bM(MSr,%ȕ__bDYR8mt'J]YFX^rO"Ƙ܋c̱!~eL|/"'W,.LJPz̚ᗙH|SK"Ҥh?T%}JKH6DX˚\m쾂E&sﺾ(]ЦwSS'9XsO; }H2d\R%~ND?PN.Kn79ϞI7Ԭ2(N+z0Dzc=_/mJoR ,'cJ͓ẇ>wsv/R"Lk a,1+5% +x4i,-dQ7VO=˚E+Rj]pϹɧ/YEOejE.zS nvg\գ\>Mh֍_Gofzj\=i$qr&\j5.kFj5#T)) fB4#J82j~MOɩ5,P.Yr4UM$ ҍ(aax"qe]gK=Ӆ(qJgqN*',ߎZ"Ɣi(lOGN~ E"Ok+ u:| F_Nɮ/%ߒ%*QdXR[dϱ5<)ÉXS4TdIzgqIˁH<ّbPVq.˔RX҉g>Ǥpȏh %}i(\˕(Of?peX/lc,lmCBr-%kK< ’<CһM}gz N'P:w؃Ic\%YL%R,X%ܑ',|p/ EL.O%>0sˢ[IBWyrƸѓt|9˴HBs)UI6$](j53Y6 ]QdZeHg7GU,+JNBh^ +3eWbQ"m][)Y hrk'[ ܾe%ܟRMq(Zᆏ%4|̭Kx W])YT> P?6ZKC5fpomrS޲w-[8._$Ky{e}{ + ,˲,[ ˨)BN%aQ\"S dxKM7.˼r˚-_ YwsI͜DV"젢ʘwX.$gO,^"p_[DR8QW]I7$q9tD}(]s-i*J9Ԟ,8GK&e'JBN^*P&ܑ~p4}]IE,8Nqa"e5܇3Xl9r%a.X,_u~H5o`?n߽tIx쩕q!+K2GD(B9*]e[qfi\]Ob9v(4("[1|jj=.lfix}˯$).Eq6,e& $< DbN,)?oq3ܹO8//?&SI*/yJ(~9]u XyVp?U>eiW}?tDŽK/2r}Xˍd'OnoOwlS|%[h2bya6Rp&Ymsk9t9CU^Iq~OPBԍH\_sUX^IJ#3;U̡'ke8\UK> qC\^ImLLe}]~4bK0K52WZK}4J|.J^9&V(6EhR5zM*j22xJȫOӌ,a dJ{)!1AQaq 0@?!=:i2Nv hX:0t39  =Bz/M/^@˔+JN#>F"aUe/jB<)5{]?Eo¶^NR<Ҽ ?Ft%e2J2`,@Jԯy!_x_"ĺ $rƠ8/ĵr̳dłQGGThͯi6ǁ=㶉fkվ~ëd`u&h-wa N_$2Gs$40D2f--d(rD(?:E bn4`E[a2c+G)`є #7J~.:_b郩ItK K$6EA) sZjgD+QI2K fkY^F%h|c6m>K7k^_2 8 c>j'@5rd)f ) .b]30Zkfnf LfcKb6dy*2a#nio$"_UfbD]֓-GJJmR ?6R#0--  BhCZ'6Tp6P{7܅7MNzmVXNs0S_%eJxuk>ФRX@:CDOiJq+[Iҝ]4fZ #rRYs!șxp/IwU"1)A13iڕ( Le^P r6SM.m JPc5&")aCv_m\u3ϼ7"%[X8` x;PrԮ=^/Z*%@Y~zKK|zjaY' nJ]^zt_!,ʔi̮zUh]>][]J2fWZ2P®$XœH|"l-r frë °ݸ{'Q4+R/W0!bc'[W*z=*3[9%Ɖ=7tMU?;R ?H#2f3%DZetU5JR5J*Y)̧2*2!q 9U.IJ8p#[ch4]Q#RyrJyDR\XK'rW^cImLWxfZjc &šR;yc(Svx}={=o207 fYz_t= Lv5D-(6!kD*R(pJiq S|&G~!)cPAxQM)b[d ٭@YxrJ<%w8y&z,6/f?4^ RU4Lu73 S^{x$kC78cJXV*\Cs(CJeZ5f[ {wBuo2I{LieJ툃JI8,`V! ,R%n(!3$LM3i(mnU3N s5aẘq%[1%F#ںw\DCZ(/m!Sly{%.8y5&2APNLʕN<hTK7eM"M%)vu%ٝ"r6-ץu.%SX,֠S4x[,:WHꘝ# 9((T\Fɇ@"EԤt\N @K`! Ӯbi&b %#.c| c˘-sO6ũiRڠ"Kh,;\s`RR}gke?!8=agwwz$dU"Tſ]}VFڸ4c(RP.RMnV8kSA )ֺ+Rzk/Zҽ+ydwQ %@ +-Ij!*uP&oP*BS'--m9>pKA@RG ^E+F?1ys)si_>%z Ont*wH2MIG@=8tps_M}kP\bYٮx; rq6T`qgC ~`s68"K%iiXfZJAu$ixq9}ӱ(ǘJ K2T/P/N]?Sc;7mjv/^!h-.oѬW1-+e_/.)-Mn;aӪ܊M>y>'kt J"Nxq)%W'p{)JαrNPq!v8WF)*Q)%Thkl<.̭myN SG`@M#)"5SLA"spWp#xD51RQux6fX @l+ 1&>ҳ̬@Į?^%K4DW͌֗.TqFg2ҧwMQ()ֱ@᧼][̧2J.",|פ2d>#>@(C - Ta*!^/H 1_mj9`5KY*J7FQġ VTɶz+e42Yk6xMo.Wz@rsqՉq~ OBĄZm0J3,}K?X!6oV}.<"уW\D! TWA91ԍuHris-{"*U4!@@:=ߖBrǦKm3f %* FS"m /*$R^mRk+WTPCG4`ÛR>ey e`f?CS5uHèpF*UޠCçr:#.( )\ !:;+iNS`9֛=%jyګģ|%ڰ=|J%6Au*i 3)kz(T^Sf+g_P.+?T,j2^ nX=.Hq6Lf\K`c J'zZ,ۣCA6;(u2278QmK@ KT-?yqbC2ju[~&ZY3k1]4L-|J$Jh] pLn1 {;VӲAAܪs8|F*/B_δn5>f]=Մn5 7?zip+/_'_1_E0n`5 5_5U*,Jl,{Ə_2s9,s 7%SYm<(y`~cOb3Xue*(I{ILXX5[!`TG!+=1jnL XypO||ٚPWxŸUi;[bS#CªtӓO'Z OpH⠺/y^A{HME!>R֏"9c\ XopkYPMDτa4kQ7!%Շ~C@bϙC~?V 쫽 SE|-ݦjWVŘL(d25%״WT2B]Q|J: 15fU-8 @%NO&+BFR8%(t|@h3P޴=don@OKޓ 7#ҢJ֯iqM-^59K>`%r^o5WKG5y7ġ1I]jSoz(Maw⿖0꾆IgFҬfh SIHLHzi)nkKAW~#[rO%鋗)VYuD̊Ѭ ܀e;t-lg W#ᣦo ϲTkR5)4zsrƘl6`J=_\61`;oj禾GǨШ%vcxo2эTW[bg洼Ū^ƶYkLnkMz_f_f4 "_8wa3.jT-s1T#3KS%Ee`qLh<SyS9w_%m)0ǒ߸~ 26VSFop*]nݐ 8i~ޕp|3jv(oi-,;޿h\d@6FۛfqЬi 4|0̡nh)A/ hV17.u-9i$VKє6).2CrEw]*(-p.*B|0S}G8kP6#ϼ7>GQG{@V4byY[{IR +}E["Zz9(*WJK$ ҇G*Qv&x,%mZt5=-e˨b G5 ˙ eE0{0+n5fy*'bSU9txJ]aKHnk W rxa3,M0;Ë)Y B=+L [Z)NI'܁2[6 xE/s/^OADtGA뾸 *i+3R/lxi.}يwX)k߭tkfZt2\_KWW`z(= *giLž}g\U8BrRE~1qZi2lPeˋENtwatfҥAYRtcӅ˥aGHh"UOS},/D:$1QvT u]>:o4=';޴@,cբZCI*L}4mi);(kOOu?J|NVC;T^S%~/ף3+!PP Z!yv*_3/3jFw vS)@1e 'fexG7P_ilof+~ihR m Zof%D#(m0;tO%ֿ)}.4jIni^fĹjkڛRTjr&gH{D 7Obw}}G>UY"Y |iYZ2CqM]~;XG))6hii9~aR6v93ʩy9)hJ.4<]{PGKK%~{A#ԪXǟ`%b |it6.0̼/GEy ^(#8!P_g0*n• ݳ-`3w٬K"ESwDž"< "h׋qr5]a씙轧iq{O :R)_x*8<.hFB;%GF;|J%gvm o2IzNz_T[4ɟ1,oB\ʯz؝C >a[%3\_8w.lCKShﭼmreUw aiVϷGn.P. k;v8P3S*hUYd %_=Je=u$xҥt fm8mšJVz^@`K#Z%FU %v '(a-ލT) Kk\˚`[5!sJ\x9>5OQ ^ZIVؕ1]" ˗h)ɧ={̧5QP[¡y[y\y}#l,*i;CZϢh~bBv|`(nLeܗZpMسJ>#S)E,lrWczr/0V [%ctg@ݖ6*YRW%a OI)QR,D#Efv_)ZEMs逕dqAST Е~(4A٩zp:Bl^jSӊRK^4 qy\.ye77(s_ԣ׺Yu]*TNjZ%z׈j pf1ҦbោmèCb6xZՆ A6!~51- X'V[Pu`^2qДd+\j#U4/ܙB H[40GVp;r}"I"[T}%֙2{ _,nR?%{k|+8$SHĵʙbH`9 b9oHWe;*BQ Uߴ8ϣ`}S DSDykO rK{@d˰uQg6l?EjDɘs<%̱U%tK!謤73Rڃ㯀fWECPcXt7 vF;k;ƣ,`03ZoQp[ev420@>㙩cXWzpm;稗ҳ Sȣm_ v^r H֮iV6RU˚1нUɿEL 3jJ}.#WR4%aM&/??Aİmt D@eHc}^ĥ&"ju}5cG8_߭"ߠK #2 mbiO a>zj=R\qШ+ ,oDt7Lw3| u}t֭:YMnfC F}%Ceӝ",Yt@kT:Bҁ|3z7}>z'WkWy%M8v`@Y43#GtAƍJ74bGFZJ1Wtx@7YJ@؏bh+@֭DP1`xk5>g~"JUBŖV |KO(>|``gI G fWnIGy~׾(ī'c[4F7 Z.S\C&yj{t"վBLT ?- <%v#/A1n^0洘6s/fn1/` Vi%1Q+-޵ P@wvGTIA@oZ4}% >PK|N"|eZB٧s5T]Q, g@)Ő]2 ]~>UM,usr,_g.BhOyqa;0J&C$`ljhmR`/;H;=dKȚ LDcB UCtlbQZKidՊe)q %ˏCmq ULE*Fkle˖-;2_q\6#1訁 ,&+kM iT*zÑKPf) 5}K¤ #+WV=ido[YJ~R.ڌ,G\.-2Bazdoi=w pV ѭMes]a6:kC.exATveLs;'#;%*í +Hj?K:-!c =,5Ư eK-;^]8 lyn}Kt3T]ыS;w ".ҽ{ˇљ^%/:;%š.\e[X_ǼhC2,ήI}jKkW bnvM1@Iv0Jn.=}=^kIXyaAhX3D1.]dYP.reUcpM{H!f tAn ^z[girޑg5oThb,O,Ю*TؗC ^{s) 3Ll-hbs&4Nj3ٙUFe^bSBbPL#,.nKߢ۟avh%eݑ=DXu g#'B}p}G0xA g iajɍ 1c.+Ѽl3܂&M18[{=J`ZU~L yjrÚj"u.~FģawСQz]fL>.8ԥJוt]ytrũJu95V^+* VD Zq31^ 2*"dt: DQۉT)/Es,βMNbrgyݳA8̡:iY70& k@ơl^ZKx*Y{C異3īV}*uY>z*o[.T/iN%SGw0=^'cڇ+Ή6XI_c+hBI/Kk$rNG'J,nB;7o 5CXvjdu܋NT 'GDȃJCXgyQMZE2%`ŝzxe#Ѵ\k ^f|DZsb2;2ⷥ'|8e$8AkXld""mᙞQ/iA4^"]= YD%/5OhS~!Xbu4FUiQl5fB1R87hTpbZ9lt5ia[Dki<-bk-N^qZ *2q+Vs]Y Mud +,/OiOQ7|'/6YT±sYg*߲eR|%P3[Q0J:'} JL,:=H0"%mP ]Ukx^+j7 8\ 0H H%A9S`z4G7 .ì.R; Z2h>1ԱI]2jS^ţKo3 Rʸf>%( 8[[.lx!q7(@ ,/ ˵ i{ƽ렴Ms:y'B9[ܤ h959m̶9ZT܉o %ƈy%<_e/Lk9.oSU_i{{: L[i(aeߡ& ~`,*yzv;W7#4\;6{d)[h5a]MB/FsQ`sIt(fkg]*"aV8Fnq(*Q95cB EDSr2LȇeR[ᆬGSeъ +0VlU,[\;J_de65Wt4ңg%CYPJ\9}rB*Yy~vbhh\3b};Dьe]у`]x&R kQŔ.Mf27*ݺQCetGg>.eMQ+9`I/9"** j]SR'@[^^P7 ԛxÓb$&eUSkCdy(mؔgSz |4VEm̺M+R:<(ֿh4(xצ. T:)ȐT^Ѱpvt@fJb +CxqYW9H(/X"^b`yҥTrL<ʞR1> *3,gG]-0BJљ.Kl]Swipm0M>FA Tt]{L|B(JUQx> zOP_s~հ:J^hHiبu۴Da^eZ{Hk3OO߼X3#/]VJFc)C04ys 8e-d Ѹ<0_)I2NXPg̩yr-QKm'^7'f-Xó1 ? / f{+ɂWQ5 _VИmU^bG\i fMX}qI9H"7v X./ oqD46J^Wmߢ"b?}S)>V f*P+-j~{ŀm5c=oxF?`' {ق݆GnT,XEgOL߯.?S,N~R ~QUeyFKC_Q_yg.*l(B#vӷlA``|~?0Js6ZPn~CJR l 0643%|h."bZXZ2 S|R2 OԣQhw]|3B4EU Jo4'N+H 0jNUcϴOlL*2gWHm78m_h wkjpj 6a2̭\VV`~9W AkuhWgR\Jq3 HO#j%e`^JQOAZfaw9q] eJ(:13pzj:zEL``JRUЩz*0= 1!93ҵQ/A+؛M;GHXI]@ fS,hED[";K&c?Jk_QrIEn#4MRgIO9fKpu;>̯ǣBEm=,^EG"{]z]Tf}1 },MJ*SC;3!% :詻˿ONz.٩@57f!xl t;bm \״J?ݧPsE)cw$4]&\PZ*Ad~ڟ̱xY tϔV|kak WDjj }a\@||/(َ42k;W,,+y5Wbv%9#iqwMPƲpAϏGh~kk,nk"l|!V.Y) }310c4c=R̡ uנ1`m1Cz8{*-j_S.ıH3V0f1ڑLn 6_j:Wv6k)FkspnezS.+[kҽYD #0Z9ff*&'4INBL+e`YeLxy\][MMXQע1}3 C8%\JYzE8ke]xormgmytnq 6bcKOkX4~Y)Qngٶ{ a̺rcIJ9ҟ3'czZ˔%-1+4wMg _S.Ƽ tGCd:XrԮeXlWk,ipىJ!e=3!POd[G%Pn U^^K04)5K;AK*(q?yA&U%j %CL:sJ%[5{uf=;,N.TЊ?>1K ض׊ pt0/L2qz^W7.[vbú{ l.mm} _oX$Vj&l7:Ϙ #ye\_WqZv:髦FTO.ٔ[3Jy$e76{sL~R7g 3Qa زgy.E^Bߒ\ܘ*#P = J$;{zbT}8ad%ajªȯ}&{P݄Sg+eJbX*!Y(f `A9o8od\`ZRr3/q,Ih&Sgg}Zb1bU7 Hoٯ~ȨoP<1ZR<;5i\^_Is{ơJ񳬮3t1㊉iɫڳ$ɽ, lQ?gۼah` "-*!4\VdU'p~'O\.=dãIj߉keaj_LAG2|ʽ6bȷ.&-px̨;zÀnX,CMC:}BTGYy@IhZijb[)Z oz- O+.27h0bUZy)-NB. p2phM>HJD+^!PC/hծfKKL(q@pCrUsW)gUF(ղ | a*a!Mt(>a:S]^)#Ք&ѝ}*T^ +Ҏ(N0-qDG*Up*D:bR1 EAsb$&)D3S`s"ĨpF3sF k|Jy /]w !"Y-6_2C"T3ĨZ[VypE.UǷ̥ͬ! ,{hk(TJy1D B7KH`u:1~+ryo s?ϤNh֧kUBf`K\_={$f;&TcJ'$®uinMQXJ$Ksx.%gi~ta[qQ8M _C}m0g1Rٱ4SCz`;t=MM`KfhzۥխĨ{ٲJ\B t׻ƽEG*e8f?jb2TW/Vt}H(;ly^>^R;yQ%߁u{Gsg Js,O%7g<:Z.( ; +107 NXr[ 3uTFeq-b6ʴѓÚ ؚʢ+*'jƍ"ϰLOe6^aFVbuV-#7s{8[̷yK@bGeϼYol9>9h O/.15iCSMZL{YN0iBVi>arKb$G0wg6L$NaĹH4YX ,5 HNZ)]ekpIA#Bj{Ek5}g.s- f.y.$ X<22j-|XK7,MFIMͰenғGx ]hO ߖ/>%vORU@d6^Yaug4H+&gCe{E,qT'Z(Ԉaijy^-Gr@wq2`itz+IuBw] T'xĻy*QZ@L -\ֻ<.{w&t07E|ʣ)\+kҊt"ܵѶF,|˚:FIrQ2PЎfw@ UpO54Wh˲r[q^RaVn'[[+IJw?q97o{nS=>TrA[,t,yʥs(ݾb1A؉ Yj홆sbU4kx0) -Ӣ3ٰc ȁܩ&eI{mɼ<5Jsni6nIڧ IJ))UEBl2̷k*}ij0.^le1߯WxJyftk l mH9TʙS\YR {G`7"l:`hڰ˛lkɬ;:o?3+qW[ZU*#.ech"\qrMb7i,\ޭ#Y_w*WB:zU(4'sK$ H":2v9-:.b66U+LF]c)Zc+& Y,h2j~%CMHۚBX?~~g>.ZT3 5їܿ@ܸȁ-ijp0%tJXt~ЄM>smwDŽKя[q) L7%9<jf;!¶%,5 !hWR+>qE q#ڗWyMlk6r/gWAx*X1y Ak9CD8"Ļwy}ϙgoUQp)x=-> {LiXh{"$e? *io>~esAǁ"= 8x?ε䃵y1ۇ9,[5$ ˴,tq 6Tc$LVk0Z#5X.jy cLZ~gޥ.YBm^%G\,:MWVQ{K:Zo|GG{TA_9/?Of>n,p{s?s_ƺzޟp|v{b# !C`)6fu*kԂN[gw$a5;Oh1B.dwRScÔ+vwx %b8ky%%ڵɕF2L5lXvKRгZyuWyMLKdJ4k9_e=ڄ J+U(pW3̩ <0E3)mrb8Q)yѢp? rI^&Y?#.0\(A&r:}[Z<ӕ*%لH"|zkUJ9{#2$|GhBpEacH6waPujU}{ܨ.-л+,GjAHSw4.N2 w7R,Itkw7;hfu=TkLWeދZ͢#s?)0z}/$ΏK5a&@z%ѐlHC]We~:WSt]vh._efSI\/xk 5"{7J&0BbY 7qBQU1;BTr -Hb\0@pEӥh{4 `wH&trjxmj1LJm*ς=Lzk7~5m L{Xu^Kz._øz/~MzPnu^}CA`q 9P3tf&RW7L\%؏fveL\ԕ(\\5á tYcּ 3_9 ]Y+i<2ư+7p>b0˴yx^eQ 5bJ+X-* ig*:7ԽM pm9)7%V`y5ҼCŜHZ .j_f~_ pͿ0.e`]هx1nPVl]VZqI|4_wRZC4S7; YkzAnMUXBq25rߡN«=,7#Si0N,ztq<&xSZMb3q#K@gZ2jPPe| >SO4mTZrr.zqd[:7vb1@hs^%KaLq()GalMfl@Ǵeuf+;JF̨]*&E,J^ZCP=:tCEDuIhs>0uǼy@~NaFZp8FLhX{KKy,zT5b\DvxDaG3\]ςFHkr9jqny2%{u@I{y9^*p)-Bmé cpUp1.[._xՐw7 d][q+*f\k~)dd+_ѷ|Q` A! 1ȅJnhB2"(ΙfX(kfoŅ+fTZ6Qr р5BSn;.*pmG.s jQ4$MeEowvҲM;f _bb PW_nMq\6!i m N:|O6Tsb'мEhM5%)dQL:*_;cߝ^ћ(#ŷ?B:SU 2W `ej5Ȅ;DF9v9 1^065ˤH^!-ZTc(m{MDmx.#w0Q+i#1KD"7n9!7ס60:4L,7/3tƌ)̯2=gn8ǞhV_IkıM0s*IkL W*\LBW}43i*b7nD+%Y0Y4FStJJ-kGh[}Vs, 72;;?Prl7iBiȹw.r!5H+\1`:MJB-=7En1ѿh IT}`|n*0"wShbn3D+uF{L5 0*EwrL8C|8g1%8q;;D=onbɊuhԈ`5O\(•m&WjV ~HOV^C_Jgl+*p4NJd L7ft\7ƣzlNFeFw*'klDE韻NJgҿPfƑwcl3׼ZweƔKv'ٿ*mM{D%`_xWvv[rǠ^a@E-rLTv)C~L. ۏ.J0 U8w};1+ ։EY9uhoT0Tb̸9ޥg$|*' "t焪`5~4o${"?8niMT;>pC݂71!&.Vyj ;¥k\Bܼ3r[c?2؊9 &y@ZԼ;:Kڪ5-@{{~I"ަ6-S1JK޷{?R?NcE V7(i)@rQB#e"WEw1[A5xC:w0xq,i cX3ᚃ.2 /UbqNFGF»m{!Yd m!uM^Vb:>%!Z܄; tDEL1`;KLq 7}:]2M`AEim-eoh<%K۟xT>DĨ]b@cbZ_񀥢,t6HRI$`UW n f*k2 #i¢wX=PZ. B5ƽ5s7"Af FUT !u/g4c2чk wa ZAr<$j)e ˥DC2ſl'mW8ta5]$N54'`Gn{_P%ENa0)o(xR8`\;[計tM4! &>covYue SD/]5v`q }#2?8. XZY`tEcTҠ4e*FQM[_1 %m+4!VEfX5MN!@Bj=[W:|/ ߮A;KH2]9V0'%{-CJؿ壄J &Sh^V`(#d?JUP|n#\#͹yS"'0;pk!y:!7iW=Smiب2"wM`|P]9^TsY?[B%H>+`'bՃ!d~|m~8L`{b+d-[)?pvgZ>$ď~cyFyZ N.-R3TEjfЀ9C>0scդ zɭJ;tj&1]mDg}ou R95u/i7) 0{ ʿt,mz{L\v;"%6xMz3;\-s4쓶N8Q5Zx FkWƭ(){cy 0U| 3v:VT bE*@+| JBkʪEij7BchFk;RZfRwC #:/ڡ52 'n&b;-GBt?Kmf>ca#Jx ^i et]@Z ҇Q%tTWǨbC){GE讁C:O\M+]eu%gD3p+hh pŗf3.YOpAT2⥛"mzN1Hg yǡaס? y=.8/Zowdㄙ5 A:o ,vNvږ'VҭNPzdޖZGB+>c]zBP^ӘTMs2!5Bf5sD2&^ibtM<:\STW_{iSEiK )ٱ}EԹml_ļhAb JN*G/h77V;A1m6f'k;_ 궖:k7% +sLc׃JsJ]4wfW]:)Ģ`iF2eCr|4'yK:DY*Y03U߈"Pra_^!7G;RD q/p F~K2fՒ1ة {Dxd < bG$AVo5A\Őm0vt݉yjYdN'dEsҢWFVF!k abڹK;J>+t1rFjf)PW<=#)6V^zp߈[:OO=1\ٵFV>,>"-d8߉F]n`Yp&^{?,n׸"'8B yunJ/0Ծ/^%w鰿{jݔThZjZW:@F#Urc݀1"4gQ(J4kL9+ҡ'w]{)5 \  s4['6jGմcnc|%Q_t8I`(NO>f.PP3"$'iPDo7"}4WYyjlqKE?!pRjSG[ykxTѤ,M,KKʏf ePs~!yl2eXJ<\thM%‡UϼvCV.;4|N4:dV"/:gJtz t6/64|L+GC{W%t:dH4@rیmhobSIWIؾ<PgA2Et٩p5T m3tc‚KgۥA:kKG0C0KEUkoT%+Rx}2xJw`厧*SZU>Hr3Mk[L 9*ˉ  +Rn.'<_I^X%:\nHK |HR:#" [8#Q$ 0=H*<\+e4nDXUyD+8ī H~,m%_4yS.0.h xb=if:AXDxLG _d{'LM&M%OH|R. 3=.fA,m*h+g,:Ik J8?Pʙ~frc>)%GL9{ sSx.k+ f+dPUXq2 P/ۇfby>Z7T^!eFy)S6c\)0<(Bd pJ1_M\;15-|*U)'@֕v Tdؔ9DNyl۶MbYW b fs|s䨯3?IhBxXa9nj\L92).!dZipYZqyvMX{ vT8c}d )>OcY"W7 `c"jt] } 1pVmjХo6Oy)-BKK>1h2r(LN|XiiXR-Fo͐1*Tm:.fFXyz>G"hJ äCEVCTKTU K N5Z".[A_~Nk.0lubhvm;F >RR58sYPYr.&=/d7M.SuÂūۥ\#m*Ztw iW!t&=ĝ`dzVPFffxIs-R7T RjTJFZġ_2Ky;J#ƝO'멚!~p%4xƛ ώMD8&6m9_aWWk!rzd<:Q' bD\. ڷg%>#^F Kp|^؆ crbՒ)M;̲x[xZT&R݄{XtuwiKjimot E6.eWbe536^5f1 ro BPjFnI*$ dv0RVP7KHi/ReGBc-R Dkp(P R@{z)zo=7A?i{j_=O*ImޓJ%"&-@|5#i\aMU m. dƃY|.$ $A' y4\FfBig6RMM~}ߘA$$@'L%)0]ƺ6^wcAd o[%\R m H|H  P7,sk!6Tv\xV6dGv'@9PFl7@ mH8"hF~_0"=j6U/,E 0bI$ A@) E=ڳ@0ړT"77 kEj< $H@ @!#~~&to"LG>!o_FGJI$HY%p(|n߼ZZu|o* 0l9R4 9Ob$ߤ@miW$l"- U$w&= f?X``JI$AP8 9Kg- Ԏ@|v ĒO:]z $`5LI ]#lobH?Oz&VD)g"$9%Ē@ ˠ8r?z%,JlӜS_t=RrP BH w$0(ybSވ@[O黋)w!8wj탼6e@=A$I$$gֹ$)fWm@kXMY![m+&N#YN}N4-A$I$`ƠĬ.@}I5 mYt l^ AI$ ׯZXWAHX*uZozs, b\K

B: ϴ+m}åս)moe9B$@ P tIk qy'PCT o 6T]-Wf]Dd7F,lM AZS`S$I*Soѿ~Ax$I$&'mnȯwI`j9IVji-[m- RlI$(@T b鎍_<6!dھ)bJ_u'nG<֥DH$AϳӭY ]yGB"!N0/{%@$_AL-gnfR _\9&(@ btF|q\Mv^rǻ)Z9H?yt"pk $I$I gB3sK{\Պ+Ot є6URE%rI$A$7@L$%9U9r@G#i3v"~D@[u2UaG  H$;4R\uj܂MII^X?v7NSo=/&4pR$@!Xb~bu,YZƇu?.0|:흆8wB1H$ Ԟ-b :/2o[rF\ wqh<.KkRop|PI$ZI @^GK E|}#ЗF)@.$^FW](d`۰I$JI$D3C Z*>PG81̳Ex.Sj/^~@¨3f@$Sk >/y\ut2qNA_MDAn詗)TM{4 d,Iw{A87o۰s´7 Iv䵒]D dcC$N-C2?pVPtcTw6"XOW:+aOp~j܆|$d%z{O| \JZUAl%0c@CDr^4#eoy$ dLM-CP9=(]`DBzLFVR15^ցajЕ,X<\=#FCVPT <47Mzۃp59^nMĀF2 i>qxI$ 0EvljF]L V鲡OŕKdf`mUWpSI!@)0I}v(6J'Kʸwj&xU &<PC %G A_$"xwL#- KR@e[z~}l{e_$` ѓMV# k`U0\k: ߬'``ٖ$Z%y6iqiHFy tB {2'+fh@D\[B@;-ϒ34뤽 WnG-Ar iY6C,CxCnv D)-dLY;R, &;uƾH-0ԚB(>Qi&asPa= mfZ$e "4XBY{t3'Ojia&ydŢyKm$Jmk|s3Y߈"M<@[f8f;A#gFuvjWR`^Ui7 tcxEߔ;C `;:Ŵ`ň.j)q?KZK4Q 87\2WcH OF$4Ri6`@W}h-`Z*],hDۺ&W>t̝mm4۶i \WCs̹+og1 kk# ״ &QC)m5lm£x~Z4VM{` B'Ff $@(ӀQ!`` -t0=4h=B*VTN]p!E)\^GS`I7Si7-?4$VNKvj\&}2p҃`dCm[l6m C2Iq$M )slH<Ѿw@.zjii&A@˅ )8hRn$Hn}aÕX#etmc˵͜ltp14 |w//Z"d ҡ%0emgXY Drbc!a :` `E8Y Ix D"l3hs,@67?~A!?,w(@6υ6O_`~y8/aOz:!2xbd=2 @I2Cߺ.HaD^" @|a_-hs="LSb$4x+X2&D[kȒsF Qw[¶4[()O0gS"Ė'mf`=t㪇yb`oP( q'z؀6f6ȳ7Op&Fc}r=H(V8:)|v+gP:e>|]3·mP^YtzДY})nD;šb쀐Zf7X8Z0ɘ+^/shӍX_d$ߙI'\z46> 9q)Son{Z#z3DvM#Käp^qTs!u!FhPK\QW*fud~t Pk֟f`"53X&+[ݠ> :Y TL"eJQ t6/u/<)$X! Y/;-IpM?ӴF 'lцp5yM=C6% RR%̥hNe|;],uhpYWu~tABx!}./+HGEGRp?Km2-*->,=~Gƍ1ng~,=Obzݏ2֔V%8OO䞇wރ} |wuelgQZ=:lg͝gk7d_tBuu G?B_6slv2Ӓԇw?Y)/`YV rrGZ;%̫^߼ƮSV /vؽ$Z%띣0vvsP/~* ג|Ysy{G,Q9ld 3-l~˻.2r'n^l|~ aīڈkD*A:z\aǣܽ'd饾/F<@f~܄<_mέ{+q8,-`vͤ7Vi}|m|m}XF 'q~Me^Z8{0K3$vԃƎdpɎzQ>˃0o狅̧;6 qy G~:Ѳx,|?Y㨷J<#̻e/ JybS&&U$x\& Gg7,n97tGph]$,{?!o!֗\>8ޯطm <LٚŦ60ġg~.o}_.N<y,˧sﶞh l9@Jk.=G_ZO{vڗ~'5_.$?~+sseYdוɅ~v=Kr5͘B6m,#.3n_taFl;Ѹ?v{ q'‘N9,?krR'aϩlC@z𙟆\KH\pw#~s%Ġe ,M nfYFCߒ6yZ"r un,'6.sMEZcןDYǗ|gn eя!A%džm഑#`d3KD#uuhK!(LQ ; '-Bͫž֏RaaćSv`2H!|TwO Ѥ~$#Yb'Lg_ۘw2< W|cc8>mn'N^ Va;`#s+ϴ 7dxi.Ah[#ӶL܎|~E;'n/cJ{3Žg_n_%] m-:aFJ, >&Y6l{̂Y 0CdBn3KmgXK%'&2]ּ̱AksŁcx9.@VGxO6y-ws >maclo܂shBeԾ|);=Qg1u{n>|/ˋ~"s~^=ɰ3*G<>r W$Ũl+ !Z}y|[gnܛ~vG薗"_% vq^ 7wl"ݟgsgq!dCLsDO d46yy03F?3wK2 ̲<'Ŷ%]JXټZ]RgrwyLlL0GkjߟHr:‘faAu X:e]ciףZ\;mLϫ/vV!m|XyGkr N-ʾG!O7IYŅŇĊBӲ7ڳ}&U Iao9'D > wqN%-us& Nnx\dY[hZbogs&۳z࿅G-#l[$cߋ'7Y]^ymLy2y }l+o21n6dd~%.K$$ όw1o޴oϷŻg$O܏NǂHKp 'Q,ٷ_3eԺe?c*K3]cտ $[ qz/H<6J,R.̶|>3 eߟ[|2$qlv'0do My5m7ɷ~ϣ>[M|R׻r}~g3;os`ͳcI,3~ [F2[ n,o?soO ~JAe wv<RV$mNر lYxmK%\@O卢Id1 $vq%,r6l Ⱦ;p|1?GYeח'~؋~ĸ`ocn؀㭻XXdgI]qHԧO eL!O:~ ?= Zu v9-Ǻ?+A{Hq!69 4囍o`ܳ?rB___r9' ;i ?]c܇Y)ë Xٞvq!_^3vɏqBb[" ,|3qᆉ=gAmn}O!7⠢GxdBxf->-,X/7l#,2s݊q>&Rld\ {=gg:qvY8ΥH Uϫf#hc2p7- ̑ݧ0mo;| :m{|5xUJ׸GxgWAOv$.|uZm۾̋nάbu3uH!"iB\a&njY 6LHI$ה+%ٶY6xy[>l|ˑ k~W}v0Vɬcw?JKńH5c]%P'<3xܸѷVf=7aںCۋ[v|oNaøo0<$ v8mn-%V{\x e%[g7I*L 3\\y#)'9bf']]nNxl},FZsq%ɧ*ZSV //Qc\0\fX0>dQml/R') ŋi4&ii `㫀I^-. `qIX&<1r]D@6mj#-+ 8;׋;q}gݧ|̰>lb#%N6?2XY"\\r'0dmzA {5Qsng=yv$#l`dp#' cidqͼcl&^w3,8 |ql;HNm!= M9r"g='pIsKYVlAp.l,x ۍ:!ECI&rgjfLq{āx!=Loվ9 .<7o8G#H$~EPW` KKS&Krf$hOv!tܓlIa"^#&^?F}ycx$dR2-:fd5oع ;y]cO?:ydL6m.NE\ Ko_QQгq._zN`Ύ7- `|clpG?a$l;嵸z9zD-;<`Rm&dBz8xMN/|чW _25m̰yn8fE[.|d}1[?y{^3/ɎvCN.~F'?qZ?؆9ag7.[m͒ u FXbBs[{6IvȎhem{ٍ.%ů!W3"~jmnL cw$n$wCnpCc,s:ikkXXd8N.Q:v}O`6 r3 {d;}r,OQHwܻx(x' C|[$O |F?u,~ԏ}~^>kz A^ >kM {Y\Q%]_o 5>2~lm}Y9#9{̲ ,x3OmFx@{m{./me0GGq 6 B-  [%Bt".VY ˋy۫ 'h F67s: eԯRzPY`펭A=x ϱAߣa|jeFx-2] ߍ]]ؤՁsA=Aq&';,$>,ܭKX3n=س7<}'R̅-[q̈;іG=^ N;Xo3'1qTq#XmHգOݴ}ZŃ'Qa B(][tfP9~!=rϙ`R`I3ųw8۹-9c7yus{pc[ H}O(Y፟sfLgw'L`22P"'_/Qy-tkkՇ=['zQ(ͬˢ~xW<,= b{c<,s~?KȻrvo@Dj6Cw#N8sqa%"B[n̺?ΉeqtH < .\Hw,fx߭Zq0q<% ìh??^F.38}L\[9- y1FMݘWw^"|Wٳ+'й0ģ%sςlqP^seqΙ>du`O7]\9!lA9Lp8HGGq |xKc]p_$/.kj.L}"y߅{?A> A&8}G9W|zuVNaq626d??%@vsF2wh܋Ax_<%?IXaG`ƲWѓ HM-̡. 9DQݴfJA/W\G&x\-.]iנY>-Y$s,rb89]BXurr.)>meȪX#^!`?aX!{?$/l/{CQ n@}B.OVo&?6?Ygd{]wvE;k"ۜr'/W"^gͅv՗|8qk-b.|/?8~|`tb 7_}őq@=ܽYsYerݲH`uak!g'QF:~y.F869[oמ[e9lL>,f[!ܵCb`c e-ee[lx̻wίmd$Lϵ֗vgkyrPs%|:=5 B$6=_t${ ,, zNǗgи{'Zs×>R3ԏB27`MAgx:i?sYeխ 8smĝ a8N\mLj9<t}oEiq qr0aC>SV!+?8Cw0pKƝB?msle2jtD cvF^ q|2 K;[sّ.E!=/'rfNGa!j/ Շ$`m O?AjCvܯqŤf^ĸÜ1ϧ$c,򐌸9O#-*ŏ``rtoԝ3/w~? V2whz%B{[eݶ^-mt z8>@Y|X ļKM bg Oro?; ~6FI?T$qݮ}CI, ?s\,PX'~$x bu;^^rd2d}~).mLwp.fu?N$#v`y$r`n͙wl vǃ8vfsd>wW#'A8ftvd-e6Z`Ȱ0mS2ˋ,$,N|K0Az8}'0'l l*8nb}әv<.ÌGŕpȀuNheI?zc''쩻so39 |'g]Ɏ]Ov%+ oa>z?'j<0!lBufV>37>  9=\[88>N؜XX6 r j;XS[ R^gY{`[cćጎ7`ac8m{,㛸ՖGv,,F vh-B+׻Y|F; ;=Éh`7`Y w\lY7B'2C<$8Ë|Q$O~ur{-FG!;@xxF4R~g?6is^rK;CC3LD rܴq^v?O#5׌r"~v3n7[gqegL=Bo^! X6 {pι9f̄JR T${Ֆ;6רorWd<ۑC[l/s&,!LblgBzZ̏e2z2dE@i s,Iqwo?8}ťվ_A\E+gG뫈^a)OS>K9ew!0R,he9nz@$e1<9],˙:F\x%; G~& gc<,X8H[{ sowo!KVRolKmxKmmn|> ؟{AdKቂ"AfnńK00$pl=9*39>&ǹN-zp_\oЋϩbs%0\ {1Vf~K, .߆w=vun|3pG 0k[5tn[ݖ/WRZ9A&#aY97+ qţs&ZF蔄ߧգOҚYZÅ19-d0~e tRsq[1mg6 >yș5 7!ngcNg77 p 6$o #År]*CÉA䜱lqqƎ~PvG2C͍ecwvWԷ'rtP$z\ĕK3rKbTm ï?ѱ vB0@x,}k|:!zcCj:8sddI*2GYp96u4ԱF  ύl,(VtukpQEwQX|loQlِPQl'g$ѱt`z1=|1ij\Cv['2Y> diim--Ŷ _,>k#x0'~ b:aۋ%dOHɕx`o%[_cʅroc&Z<#<-2C0ly D>c5pc-Z;#S!3-ĄM8Wtŧh[8udm~e9O#?޼~bs\R6Pa9shzQ'Sԏh_ob@Moʁ<Ť e[ r-'ϟ >plWV̍8&;8;(Q x.\OL]7/ gbF'2:p,pP+G/pcgȓ\';}?@v0 V/uiw&xű+N=[Χ_jǻ_O2wԖ~9#2s nܟy`O!sa^|#g#_̄wSnl;}n^Ů#.7m2^=Z##^~SERa{.l8x,%ό<ܴۉwؔ?|.L<˄] d.I aa쇸' ,>-0fN xP<$?={2fK,w 6LXp\ 1eC_Db|W L&agYen[xCfYii$&g,\l9k=03 p'nxl}n]O}KzX9}7#|$w0+/%2$ow[2c Ysi m^5!xk+ed/1&b| h7؁\ l,\Ú..zb?-p]"ˤiŏ{petx T/k?ͧ ;l| cY-=_pȹY".X}h1wx-a.rXYs<$^oRLҰ|90lB.y&̾Iߩ1vdwQò[g*e%vwOw}o~}؛'oׁ#>φB]rșv=\]Z/ .s .dNxnnm$;c8 7 _#%jGcE ]Hf9[(:!q %ymmzl> >lӑ~Wow[o:+6?i_o=-rwÒb-0e}윜19juռC<1Yk~Okq*Jy. v&#q'7il~!a7-BN<FZ6:#H@>;_a}}}ާӿćWl\X!Vs$7mx 0W2g~'[1OS.Kg WG~:Q ),5\qҥ S`-˛ }\ $t>悺ZG.:}][Nx~ƧP=wa{?%:_8!7vBIAc KƤ]mz-^,z-j8K5ՌɇѶ,DdO,8,Jsf)#Ըt\0< B}??3V_'Ñc/`0c 0g38?7n٩_[/p~Y:^o-8$g2īs܏ ГzGaܾ,\KQdžp[.]Dl% >Rx ~FNzr ;acvnjfa&,#- 6P5*ŁvPLMM fZNŏ/@~Ҟeqx, g~'s=΅tɟ3ikf\pGV-ZדxcNb 2خ%ׇv]ay -Cm y,w"vId9?8jA\\fBxx|C~ͷQg8d&P t-U_m=}>;,\)$DU2Y稐 s'%9r,'>Zy sru 9x7߅8F9.F+~~KpbYΒ2SDNq{,r̄.x &nNɰ>^ڂjB]2:;rgZ6k.+h;qq91l8:by a#=ZWi$]6zʄٹ98Ɇ'rcO ?O y#q0Ix?4cz6rT&]۴mh nM$ly9LF[E*} e7 ೲ 6Ɔ*9hbOd̏ Xۑ"4&r*ote_"$ݍ:Rd|Te%&iJ\\R/|S-G hJ'DI Hā^QOf٨d!-A*ttkxMFpW\N$j(= l ("z/blK75֬Q$?7ڰKmrHt"""bHmE f&ag+F&4ɛ%qq9Ǘl,\>0ؗo'G/!x! &.>G:pHwO,ӣ5b AVl &Bmlшl\r4P،#+l!h/vo ^Mfx!B| axllPʙDYMEaAA#ThЛ(،LHb_dzٰH9eͽt8=s44`!Xt茘^x(HA}. sOm#E†tV.GLE6#p9cFO ђl5SfhfWkemqбZR쬩(< DL2H)yCwHUFl3"6CEv/[t4 >vDV\S;27qt;B$yGzBV4֋KGJ_ (޼iKQ 7BWq ShH57w(܎B'fYr)0,x1 xjxr-Ʊl(? gcXV~K" MLaMRLZivm؛X4L^{43ݦb^كD)*t$ 1 A4'sMxIBbalJ /&謸!F=#I?vEoBZuq1i = 9xƵ*?޿}O?8K6-6ƭ(X;oHpq#f'[qpFm)rQkN iv& 4}y,Z7XR A4ű;BA8lU`1z##$!_hcJđ_)p!/6OƿߣčTƺ9tNn"A?qm׶*Ԅ7Y_/JVq>W668XobmB]LeTCOCh]p@n 1! hbG-*qе lFi*+cO:'p52*IB#_АBov{.gӿ08!b?/o `Į1pLz,jCFuI%.HFDG +(A4&ELL&i7h^bIhHT'BFQ LW ^ZC{:8^0~m{-ib5N &K)oA0` }&pQ4sT_nUF#.>1(D>oQ3HDXtu7c"W@uhtR e8AQ6&g/qJ4OKG$$v_h$JN|[g7z(E/оw4 <~Drl[y [_k#'׳}1X5Dc?PHB=3 #k^gI刻z&ͭ銎֋QD?}}:6 9L`+5F. t-6'n#Pci杈l Imxn ݡoH܍h V-6-BRJK/D5gI[KsOphgq3?"tSLhXz;(ߋ5Tx+n1 kWɣl551"KteCqD3L +CQc_bQir4[Bf8ed. =]4-roNJbd_mO+7T氘pCЕE߃7<\45b 8pPY`T" eb·nYýظ%(QT'=Qk??c&b&cd&8/O0=2Lbm$g"/;d'wCJj3M S#o g<&LVcpB&4T7Z'&hJXcZ{ƈš (cHm3pBgGHlΆP Б>#ױDۋGL@威5GJ !B6QW|A`D?vi9ȑ#W_GN H Im a~̇~ o cH_5CWe>&/0EM~!%!oZ2v$n׀7h@M(PLFlg!9kĞF3ZC' H%4zlN]l4a~,4$XD͹:VA4Ccnm{b{'.7[;#QJĶƈaƇ#p#I)uk󭎬0deg/fDž^CI1!{.Skh 7 KcnՄD%QDq lSB,[! obtaR[x6T _boOX>0Cmʑ8NO"O h||?Ջb/RxJm c'8$Ba.˯n LM!pB[ޘB؈&q愙^e!7|4Bqsb}J.\m̖8Q0M7FSJb PM Q [Dť cPӂ5,*&ƣy[1Ovy9+!Tfdh_%D?;GiRQIc+D ٽV,IH P%7B*X7O"蒏Pc^Gj߂߲6߁lI6Ϡ|"IeQ%oF"$dtAiԚ.: Aܢ5E 2}rR~ϽZtZ4TDyٿCZ_%NFp:45Iҧġ{,ZcI ! =ͤyFjNDC`p4CAen m$fN=bnjFDXbCZ9=_;'cQaC:g7_:ʲ xXƬC x!kBWOt Ox ɹt$g ^(QǎFd7- 2rEJFcVD &+BabDi!ضCcb5S6nG"\hit[(!QЯR(\&QT຾wfDƊ :&J5=/_5< (Ez(~7}G>hi!'Ȑ5l| :dG li@7p{KU?57?TZ&6E9EK CKi&PGl xl" cn ڿM“NOtXAc5)O؝+O Gu}D%Jj6/-r%' irWS_6PbArْ!)Ț)J\RT5)J6Wm v휛.}h"H9֌5hM#)km|cDDrr7! z""RxMJZ.HyWᏡEYn #D,GD5z)rJQTpCc{)rq1]5x10+ٮ⠡ѣؑFbwtbCJS^ix^ƣxy\> -2E)!}&/_KVjD}C ^C)~ B,5Q {<\\A5n;L#FBf j$4Cm&>U- v4Cu%昽 ֑ch"+l~ ! ڎSJJ ^)orL%"Bf+5Dr(6$0nZ,m7{E|RC+ G`Lڡ!^g;?";>ϳ"t-ppPnDhtH/q&)J\b=d&$"JN'$ DTlhW~橨%Z$F^tY74 mBql45ۂӍV5OsR 6M!KRr$hCؙIqIiF܄m X?^ido&茠H^}8W1ˡ<ӗaOXm"A mll^c>tvI{$2m e7V cb KlQR{cCb'LPkQZᖾDS9!U V"?Ȋnؘtb+j_n[cM/k{ m߳6'8)Rsc#GhJilLQesJ\\\u hhm:&hxJBf 4p *9%ulzaCMp8Z/iIEp&rHm6zNd}>@c_bkM5_ EBk) #Oc]t /LOPצ5HcXTHձQHlu$}iݕh6OFr\RHM9I1mpѡ$VЕұz4RЯ 47G/!umVYi$*OCf N1TʗhulsGAENYiQ7Г:LӐwXch)+b1BNme9q19Q҃~HwX,;h S{Ѽ> Ƙq5"tK)+5o('kՉdMz?hH9'c)}r"mѱi "Z:)"ZbNE5[9 66xHbQ"aD0_9C@kFHA85 }_g+<t[7#\d\'ሣCMs[NĬnEtxsb8bd!H"Z6I('p4OHI!$}bCM})($}dhE\b*BwBq4EX!=1 3@lu&D9У':&5r 䔌ضF=_Y ^N@7DT |τrD)eCأ/5E~/4p< ⓴~D/-O!lfʛ~DAtKKDE [f{&8 AJ4hQ*I!"zdOC|УÆl[]"-H& +//p;z  m11 l>BDu= _GZeГACWT 7\7| mBb!͢d[XG%t 8_/@dȡ|4ќ('ĨQg D $OPסoHCf4'jJ3qOCA*ҴezD/e| f!* E81i R.G(8a6$4BB L/ЕrNHcUAN`BbK$A5苼1,5"f*%]}ea/-N Pb 1k7QЀ )H&#^ AFBsa&PM&C'4Fn5A%|p7ƤdHFC=mEWbi>%D(Ƨ"=|bq4kM߱#Ѝ |"1/a*}Hp7q(8D/};؎arfhv'FI-$OhV8DR[/)~Th\!l+R%Z&IS6j?V_.WtV迏&-~$Xhi8&ؖl^~v r- nx$pD6pRdt5T%lu hA%$jQ!T$k xi>F~ Q6ңp)4X6rlhCpMEBА;F܌F''v+"bSmѢ bTBb[lVXpA=Cb BJ4nr& LBi6CRqf,0)6Lr]6Jk Xm S&Ki4.ǃdz?7 !&>#YE?b3Ru56mLHPJ!lXh rHNH1,CScE'©†5_(8XN! ~5l1d)ߊؓn);f֊h_5ƒ5ț]BsG6u P%Q2S(؇Z 9އZ4I]K ۃQil~ .w͏2?lJH'c_ܛ=O dJ0M NI5SƐe|cbm5:D!a!$Ljh4w ĉFX㑥ηR|B1KS%" ANM aMGSJvBIT{hj94%8=n8CbwJXRWWCp 9$i$$&Dh,C_<au~~KCeA$(P-cB^͉Ae刡Z|8+!2 S! J=D*  2tQi7kb5_'j@FP1&Jp5$qF 0iR1Piu Bo'tFFO!r$S2&bHz# Ί1DLmoN !gߒͿ\_&!D'C!AS!~EdQ(JDidКnF{KF&ěx&&h`4vCЈj&ܢ>Đ2 &_HD: ߬P4E 7x%=|n)GAЕTI$AEG<CB8|T$&! Wec6p >QQ|n6KA O*"" $k~ !$E-$!)1 Q dLm46ox5eZUx/ ,'!BF/2/mp6"d4B!Æ*%Ε.(%5xh/Gx,L1y'Y uuD1CH6#BMl b ^I?/LxX7F11Ȣ~"Cx6'DȞn,. 0j!vk -b3^[6&!JؑnxN|mkGRLL2aq hN$4piB>DQ(ֈQCE 4$؂&{gK4a A1dz8Ŵ11?mrCvoɓ< 4DlAS=h[!wȾBn}"URAD+dɐ(kc!eKD9;b~ 'UKJQ1oV .CU cཎ-꜅Ѓor& =օk 6/l$;CCC1|l/4\,||T b>rh&B .+# hkZ1&4'pxQ_fq\QCyE,z.4hMv$7NL[4-vi L.6BPqI˜xN-31 ;Ml6 ;@_bqFVRbcoX? nEm+PWo~ÐNDM͜JRѶ&Fk~ 'KTrᩄ $Ԍj$MpE?քЯcţPw"?hAmJdv5_iER-'xve 4UBCS~X4O EdIf5hx5|&3lJl J_#e x44#l^)Gtdģ?N#>I '΍lkc4~&qg!{q\5Qz[lJr&9("BBhffF@^J8 M LcTGps5XXG-ߣBa77PeHCiWJDc>be'>X[# CbmZ66(YV{C䁧wj4[,+VCcQ*t5Hͱ$#8cܧG2/CC^6GdDDCH~ q$"3 A |!&%#N.En_cK5 F%=. /㥿^7^ITc1tw~ q*&LLb0otQr*,)JQ?+5Kbޡz PWMb W,6* lO~X $4MC}DD臵+ fʅp0lmaa uHB QK G} 6E1L3 .00Ҩot| KClhx 4pj$p7 ߔx΄LHȂa&s4CDDDC)S{EcMF*PsX%HJ1'XO#PJH.&!>~K*6tAm ]&HhKq/CXO XY/ m?6'Qr7F$dD_+jB_bhJalr7].(fGt M]3cQ=hm.wtlQ:ZYY:/F{O48O4zjTklmqDM4"heJ!6~4(YG$8. ;w 1|"bw"B"C(ࡳ䦍;CbcBTl ύ!6-xHcJщDEBx &] (&`m1#hJCPhӂhӁ/.F9ػtV--#H%\t!'|Pd&| R0L6ˤ"fF6cm1&e;/D  I ps8F1l5T ,n>ގ/b,Y!qBn*?K+ " NtVb_btoXTd(BZ^ b a{NЍ`fL%ȕΉ4hv bw0)DA&PECsΔpm5(6='+6O(D4 acB4!a"!Khizon Z=^ƅ21$d!(CѹƼ$J ~vH]CWC$I{*kd.Ư ) 9t+S FRMr[A,B[(eTY3a-쥱BK'aHmp$n$! h A)!xESLj|#Fh\kC8b65ak+| 5p4O/X4CtmrRx,J$ #f:GмNGE(0lp)"od01ʍwbx cQhe͹?Y|I@VFbn0F"=p& w'npYÆ2d ИV6ţnAER+[h,lqX(`Mb;6pؙXI>B("5%hUF54۝xO!@J4#$bf ٣BoK HH~ǩ*&ҮǴ,pM`"R&[7F"CLZē4?@<2\amN!)⏁)p9*Ƃ2[ +ap5q"E.phA@;xhw24>E^_xyyM2XhHFыKDzj)KR( on ߚa Sƒc!5^KlCbKBa{hc ! xk} 5#IL^Ŵ25B+_cn/{ h6l3GS_bm= 2H,m _ee+Elٱ$~͏%J\_OW AXLAA'5Ml |K2ICT$E{0,e Dp!"% "!BX"bHs4k&!.xD!nR!*>B71īzlk }`ГK4-(frYBaXаW8/28g<;j1R-\@7司f7̸c@d|14Irj y GD o YJc(u\>I0KXĘ xa{J>[6lޞ!O9"p|x\9&om 5p9H.FlE\ш~Yb8:lQHz% Qęm/Dȍ \숈 1EEC!/$L8I-{]!(?E!g2A($%G^RƾQ7|! /?X/ӌ̴+ǍB7_Sieo&$e :4!pIHh2AFcTbLm .A⽚lM"5–:' k$0rpoHEp΂F.`kǬm Q1߂_)!1AQaq 0@?- py"(cO^V䞥%%kp.a̽<#xBp6o!~$.5[W\ ჷk1fخwXr?P qq]cځۘ#J*f-X\C%'1Pҙ b5)S}%hc.cǛ.W^т#]h*&w))tٵ?K0U>诱F;Lێc/eũumk 0WΪ3Rwo~o蕋fx7e_?Jcp>DR͆-f5q(/<3N%X$juZ jn_2jhyl2Z{uHf.|h..Vj/+sWr¥ P:xהH j(1p5g#i l%Nz/ a/!eNנRl8"EJPb8̨z7z2v/ӆ2>*f>+5Qm\EaZl8*6QOoR] 6Ej-UN~kc,'f'0Z}̠"lXRGwd.p 2ڎt+;F.A㤹E7.Ue傋y}V{$srڟt:%sM!{YbSb]G$P#߄o)!\ GfLwB"z߆CW 7RzC+Pi2*̕'ҖXhE KSl r\jN`VTP@7,Wl2m7yYuH XVO]_Fe~U1 ⑀MoáV (O! t0N(pas:E[ӾX%ԺU05 }plu)b/ {DVP! <:6 DgEܻz#y-GCN%|BV\Qxj]Piu@`xIJq@Ƶ+MpG)Yu !]iҎQRUHE4^k GL}K&6T;6}_%SF0,j.Վ/A2^oZn+u :7GDĶ"G>Xʪt( a&W@-g̗![^iІ(OGB9SM^ r 'F /%NRǖUITG&hrhzwU튩W`| 71z Pf=cb@e-1tvÐ} fsc#oop`^1: |@D4e{̶f@a􋠇,[)S!uyt*,0<ĽĮ |D jv0+E܆\;Y8O!]aO!̰km#E`xv@4 _դZV K äQC jJظ 9%uuRftmmˋ3b1VfB0?jcXZFWd@%S.G_iIA/v5`wP&J ]Uq ]ٖ?x>+\]ZMiYJD&dA5|2&Z#::;YL\fkWWA4 USBE'܆>'"_D7GBjq"`6p,ψ8x5b2X_OHNA\ ~%q\%LZ 4ۢ%LU7L7N0/u!,]a) Qk7dEn/=-**rE@5yh*#Y<`  oy]a?Z )88B) FfӪwpg? *Y!lXS.ފ /UtLK oX.S^gpsee 83\Y1k `'mB.!d6A6w^#Z>%%ܬ_$iQ\hzla;mz䊪؁WT`:J[D7  h9=X~1LX Rx]'vtVN&JIL^aR;&Kk?7HƯ,Bmi/֠#)J7XN(/LC-sG$<*Ø6UP-WF"DE)+ߴ '\o)xe N!c%{Jڔ,L~ƒj ,DzAb[b^BgB]s(EP(  8KzJx ?؀ba*(["&-v8FP݊]\UPq!gJ1UYBeb Y\.qaJjJdAFA+hĦn k|KUѮ~n150-%fNb3fyIkJj2 s Dpd0d/PrVAkZD;q6b]AD5JZfR1t+fPHaRR}bS2оѩ (*\K8rD-orfZҖc3Aks"VX@G\c Fo8JdBM%V&*]dh8W)t,IXײzD_yg }yܿǤW GLAɫbE0C.xKˢn M#u2p4Vb e :C$Gk~:W'k aC=@WxfKmAq=#aWdJG[p:[an.66.t4$P^|A W#:Ύ'R⾦=cgJSyq!kx xegw8U5.4@lVW_ٙ`[ AB_Ӌ>Nb\BC=h i U͢㤳 T"٘#'Ie{{ʱ2`EEAҠ/r"S2--@N?FpLcnh X^ #ڱP+qJn]%-#f<0vyԯcQKV5 ĺZ5 Wh#:jڸQ ChnPIkgX+&i 3#J$szEN.g8Mwe.0cc6^C=3h)o+ˆa{=bXZ3t@0H؂+)T{hLdSx2rpߥfFf d%2YM\K#@c%|5 /meWDRR7 IG¼vܛbXnM3eMVpƨwZY`7<~lV߈M7m]\D/ h/('< hړ'hqu9vvH @k]T8lDÏ^>"Jڪ4ob)\ЀsLS)ۂp-xJhNCʠ HUu.]ɧ )yZk4tHBz %\}!x֥CiW5 o$ Csa.RYu#ma8%'W kOHj@]o 5[DK7*YLW /`! )1 cPKqJ=CA AksF"]a2NFQEknJQJLE4CYG1dE=SM~a5]"`.i]BW Mg. Ed}b$cMoMwf-]cPй08If5V|LAP7"W0h}ܺW!ym[Az(@i"{uL:1-NGQ4ЊX+v ߈,`x%ƗQk"fi\_" ETm|S Ap r9âjZ}[|q¸ʟ%d 5WxHZBQ(+R̯p @*ްpIj *o8D-UWh -RR`qb[ԏxF.xq n֕ꐩVn4n ){tz^32s\n[<yNM[78v%l4}iml]$:{4lgCGQ^_xBԟv*m*pդD" {D CW([Jm(eo9+9 DD݈e<>p; X_PVg9OHv*,\fwXic4YL%@0D#VB6QYitā53k3v`y5vPp@1YYpG4Fk+wKx7  A8Pݸ N!Vo1l&h]Z8USbA5|DϴႵ2FaF3_HA>u -BaPR;u x@{Kn%mrd1FAn3 _6 u!ǼuQ&J^+ Ex= mWЏzRm7OX2|'jgOo,Mo ظha[=`}!bN%RGYBQ-ᇒ$ |@ ,2.x:A~,GsM_Sgg:2,F(F\|A;6 U "ufM7F9~q'p:rdˡ 61߼T5} Չ2"55)+j@pD"6]n`Y0@@/ R4%P%̂h~!"h=6t@΀rЯluÇ/'i1Ner3,otRXKeN!Ab&5N@e%@C:ԂH¶#E%n/ ҁYN). [&* y@JTΨn&`G0nsa=iKɳDK5NhBV# mctZ;G>1 4OJn%Cf 1/[* б/ J˛O$K+GӮ)6ypf.-(iJs1zCn 71!+oY"!>4j PD#eTpR,CމfHXx2w ND*^Le P6< nZc ً n*-NṆ 4/@w< ґJ W]*_̡lX:/y0 >myFtbջܜLֶИ}u(O2 (s~`Q:pd}b,sfPJ&]W>1%ⱷ} 1Z Bz}a`` )݅F[ӎnvbtOfhz^׉pl /Ÿ0&U]P6J-,]+`UxjW?)[ <=H"ؙ0B6`xEe wJ\zŘW[*2K";7*1M7~뚩ZkQIU(~ _w;U7qS!5JzӉ_'}0q JQJBΦ%+]P!k=%!XrOIѻ{Qu@{1i j}V~GiPYnhB` 3y&0`&\TYHxY;C,걁09 d+}Flf^q13!"ѣj%r b E&QHERgQoǢѪ# RXNJl0e qTK2GT#LI%@D&/B 0Kt~v4WH5T$W?/uR/]-<Όh<1&g [)Ks{@ 5o %"JdRi2v*ߤA;ȊG<] IwKMe/2 B$+!;L xT=Uu"esoQ_E -KV;*rx1iV&R.{o7k̭"=g5UW@a NGKsX} Ea*/:"ߠ00]<&``«`Kۘ>w>c:b fe+[ ލȹ0^P Pk0>T˟- X2,\ %^v0[6WcBᅚ}^& ^A7SEC{5k|G+;F)v>%|F ^սUip+Ky8@nVQmCKQs5HW;G({@ Q) ^"R-!GOxe}R5ֵK>XP^x}w4ub5 U*K BD*njo (CM1!Zc P+(5,G @^@,(i_|@@x~V.Ӥ4jlF"x30L%  ]qL'x8oؔFb \J0&DiuVf w(yDPSsTfj6W 1 1DR&BQzҽ@noG2UfYAp2 GQ0M1AQp6N+_ZgQ ##Ӟ񚥧w1nGv ZXlZK w*q0FjӘ«  cƩK8JZs"CQӈ{T6_WWD0+Jb3u F~ab]ʬ棕(*l7e .Nj{r\Ee2>Xj>%n^:@P@\K,jce750{ YH4}ALAtF5CDh``*1)DhܥCqZbT%tWL }M7?7lwVc%L`3ݯkw&亀iMwd`k QYRjL@ /3,bq=R\,``%MX@/hJ sqRΓw0k_Nj:}WyzAÂu?&_OH-~G^;`]{Lq5L, [6:^#uƹMRz),`a2"7yc +f . k99[=)ϬRJ"tt]0bhӉRSϏH%L{KS؁2m:HPgıHT8 -jUlCzKQڨ`%]x\|Ǥ4ʘ0T%GRRQK2^>} sod 4UP lf": 6C8ЎL@?ٔB͐Fsqfz5T2qLqZj Mxp׎pBa*;bڬ;u.C?+J{gaZ]hثD *K֪\&J8?+KbzzDU}<Ƌ4e . :n9 -0ދD:l-ͫSi4gM3=:m5-F˃IrV΋·e@̀+9 P#`EJt=* T< 3BB*td/]XEaacH`B/2IbR~`9=帄_9; @+ݪ1Mf̼^f8+b{RsN>͍c \fC'=k,V.77jZ\C@ːXG5pqxg}q,B mM?5 Yb_T([RJtϪyq!4.ĥc9 AwؠyJ0ei[H[l7OMK-.)e.NAJ*~ (ZW=1ȃ)^D*pܥۼld`gm#bkp#0l}^,|n mWf+F aU1o_QU^!*-&ۨ9pbEON!{t^Vs:gNW 5McLrР*3Xn4mA(%TE5 8CJD2SG0 "P썶/eJ./Ecn`7x d,[rpb 1X!g/5񂃇 9%ĹXoQ)1Rp_`AGBU|;U(Dw*Vjx@A+"KN OX"q)UQ%!8 Ux2x7_Y)BDƋX.d }B"lhF5nmU!-CCW&[^H u2EbPmmwV.*T,j݈u"("A}b'G?\nc*Of)e" !|ט*v3P: U2x}58 CQԖ EE 0c^|.eoloԸZ4ǒ en @L73 B Snh@'xx\gRh" er ʓİ+D 8dN!os#q/%o06^݉oAW]U?Q] rP(Lón!*phB_wѶGhg G+s71 R.*r\xk}ixA<.@q vS`+QT8-K{i$srzs#/`E+G#Toq30T5v["jR%el%c*;",Z>ӔGPq9!0@: .݆%q Ƀbf̫S@3!㫤M1`:.+ŋ3Ҫ_q.*#[]C{+c0T >7)/%MUO@rV ԙQt􆟪ܻ[.;g4 uygXgٛK8jj楷b"EuTL< 9,x3R-*r^q7-&ӜK*d̡.N.ɴZ D;8#=~ XQ,vOcqԨl-\9Cu z(lo2xt 6>^#=`Wj,M.~Z΃}14>m+do豈y$ÐI^M|mGd`RKy=`waӣ *8MXL%¬pP&hkt&l' pcij=b +T<61.v \5hb$ݶfX6P~,YAlzTP{XG{r4B5lP{t=CP}^6-aq$'>EkLP>3IAgcrfPZm#]:!ۃq0գ5/~ʺb!EǭV^\EYשjpJ }XnLl3lҀeXh52#cSw 4 a6CX=7MWhUu 2mw[\b_Iw0azO|3㫰^9ષv/va%_;fҘc +K5SM2VQ*ad@4Emp̱ *)0$'E1o{EE¯墣-jzP"ef҆^1iA(9 {< ; }+D J13,4LfC߼M.Q?=M 2Y|X+BWhj)TkBseoW@f_tIuLŋ ph4Ua UZwE@tT+  =5}LձUbaΘc*Ѕ{LdF/pcRV#3-?qªCsI@ǂ >AhZzC J}(To!UcQLXYQĢw̠V`uvGQuVV_}Dԭ:BsШ07zDl1XN/?3V Q74\^S/bFTh>xB`*p Ն+qQB XKwpDiP>t5z*_y sC@NbՂ.y/ݔZ<~ThZWPe4-JCU xUͯZJz S 9Juq,^U~}~ZK_;IVBqr٤Uc̱=@Acx/7q֢umAUT -KZXICP!r $cQ)i^H6AV+JUQoHiJ"Tw6/(+TL!G&i58`ѻ-GiJ!W݌N`׈&k]o-r,mXT*[Hx5/!̨\2*:j:\2iQ*ʏ+Aѻ[V3EF}:}e›DcXpV|Q,%9n7/hB`vI{ E+_PETizTr.삔Un\4OH՜D š@%*\nrǺ\yvV&V1TbV(9U7ŀJ\fE$4o֏\P!(`esҸtܨCwO4U͟?A(ɿ \r/bok~?SG"JD I>(Bڟ{~҆zcwrzA\\o9"X)7Bcyb2a7Z0_|6 =!v~Z#\FhQS&%,+: SPEQA+QMYd_i;y:.1F mҮK?Ek_gG0‘\@@ۆ4>oPM/蠑FMY=+T[6{fbtUq 3C |VefV/TƠ+y7ήix^GX[/H <\߉\1iF޷UƳìR`9WIdYeDMˈ`HqovG^+ڜG|R(\b rJgqQj#W~H%.g,/[v 1a>!+[l3Ŵl5U^-MCT54Cٛ /S#Wh.'O؆aIi8<u(oC#A@(h4FW*X/,Pc0֯0=y (ܿ4w 9,pUv//39ʼs ^_P?x+\Z4M 9U*(.zk*-_DRI̱#2jX+n-פ:ڳi.5)X|8} V ]cp)"Z*3*Q:,V]~wX"l7,Xy$rm`` }b8=E.~ajs,3l+˚+xSc'gHP^D`D1̦+<,SE\7̺9ZOc}05ˬs yeku. |7I2j@32R8ĕ)Qp6}ZBJb0avxs/єI&fBy=I*a#3m*XL1QX !W @.j#Q k`n%]8c1V03nռJ\*,5uC2֪U '\_TǤn;?JRioWд`_}EA"_7V2EE xEJJ816rq.ui wUFk{CY;Kٲ\a~3c(=}W}7WKW򔨁26os{cXa9*,H-uC"`a퟈9" 5r8vuVo|紤,rDʐm2|E6&Z+5 b X` M#j u~r0%5e  :?U[jPtcv~n≮p:pD]O.Pl<@D lQ,^|?jUPḌĹC /1S @DnQne X0 h?h8n>W`Op3wE\_[/?=+u* Ls!"h}-3 7sT ;R[iFyjEKB+2h5~L%^ F̄k$mkET£hXEF5k|E%nSrkkb69*#\ b5~n7l.E~-̕l^H})F*RGG͈/ؗ|D+߄\ h#нsBk~6Tj˸WF ܧ7pt\g >Y?I/ T b{{ lUW*,;f[plAܱn逧ݸ[\ʷ[Sf"@Ev\m1FٕPB}BX` >bJ | ./S6VYU<` V3p.8Zb]d*hĖ>f0tZ޻x}P%Y̿Q0d3de~*^߹m {ը|=(vW M/~Y7Bdwb!-8D3fا=@McP-hiG |";eiUe4Xuz!.+QyPӉF]3z.XE[Ň#Jhn-fx YAIP YlKī3 ά.(U /\v c%FE̺ {15yj8E#bQ'4%ɘbjêRb56=Q VmHqa{\g vz=r{!FBh@2ZGdB} uLV#.nCK4\-e%JⲱLDs, p=`"gzmezE A uoYFC˽ʅU[ j3ĞΞAw`Qd*q- G1g݇];ʭQu tWzzURlzCYa^5&RbYJ}YsQi/$Efve%E*8Z/Y\h2Q[xyBQAA}c@8VD .xp4?QVGy5/Pc4tuY+K }+/+.܏JMZ0<]De[ʖb^*^ICf^,; '8#K-uǼBl5^ wz059*xp +ueV| KրE$p5 #*i. H:-$Jc,M4{Fb)WmD#u\- _fEzh 9a8 "qmq bUcj,rԥT`Vj$#P~?7y`5u5TP5K|S/ 9a*Zb)X/ Lj2HJj [LnGse C0L1rG)Iwӯ1rQ+3[ /z}4v[@8u(_Xx*m.>}cg!ڪsqW0^ K*\bק0(ŗHVp~e(ͨS b&y{JD*9ѺGĬvVri1 W3KuI4x^5FX }]MW*gh`?R:w+xs}`ĭG1;%QO9\-Jwa T =wqa8YKdL68L;_HCN*wk;f 3`F\t-  HJ76e3YhD_L%qua[ C9N=jٗ0 `@jޝ] ia: x@80 0RoGT -BpW/&LEiGX֣rH0a1͕U) ¢ŒW< 99H/U[㖼FƷ&P2m)K@CN%p`4k 1 8ѝǹ^(ץ@y)8/?y~0.Ǽ6^˱`×/Da[U/!A*XI[_h .E XsxQ)EEt {nVmT/XO -z{,J.+źb շPl + Z*'.Rk\`~i%P}cq 9х|X zR-`3`MJÜԿor"<٤Ht܁^M8CPqUAK"s^/1 rNa!^>7%,+vFat0"&J(o,2 aHֲ|W^D?{2E;?pU\"j˹VzFJ+fqRuĥ=)GY9,, qW@f| 8nw>]Z ܆rW#LA@ȏ@[ uvP*_9H.-[9|be~X%C&^#]E#pU |PrX \Uj ,SrnPȳ7-ӱPtTm :8^d0ʙEj! ]VaGj_1)\ˢUP.hǬV҇rrU=tJ8/sRNѷmoPJV? hubR]7jzX:S91{J|Fګ v- s x){{dJÅqz kS1QkrWb)d-Xȫ'5tժQ. J;F.zܽ8 E)Qx|D[F_n#(p LR0V\/F.Q"cYm(4%ã%u+4K{E TyxG, M7~8@i19 o5q*4e2۷-΢X1WqƠ W;ECI sX uYOHoW-8tIZAaN>EI]5l3+t ci_+`Xyf:9`  BsPq[K= @A\dW1ֵ6^ `2~KJ@~Цpg: h~QnJeZ` jo8Zk\61WpEF j"E0mca6=+ݨBhrD%8^{C:KQ3^G; z-6}A FƐ%`5.d=ecQPp dmu&ۖhDqv^6gp͉SSh'u+" ).TMO`0~Y0/=|E Kh G2^.XSq]4?떟6,ҳ(I!UZ'ZD/Ӄ}!ikY]e89\b`}"qH^3?E.}jX^ҟ?K%^L j-෈z b`A\tr֡4`#\dSoP 7l];t`ZQX%Bf)Znt~k]=`QC caQJ+|BB-}ȻmOOX-[4h=^XN˦w@lgSi26dkѫiJXg/J_F̪ ziUpVruyqRTyB .##bDU|/I%%!k7%9_0-e9!b``'"&o 0%Xm'"p)x&2 /AX}XuKRduZ+,nRk_Q-jn&0=jKte;S ~hx/T u*JRrq,I8}CӘ筺Srϼ .A_IlZ K&&B@iE=bZ@/>KUF4YAH+n#_#d3#<]-eװW^^7'"%V bvĕt+!+B2ePUTSiAM7&|Qbf>$! hk;3 uXL "8]D&:o'@?c3e*-祉 uVW] X~c}t.|-~*+CW,cRF fgBj|\? EX.Q=A!,)!XQ-bHSZ-{[7֜vb*nM*Z-x6絇P"@P c[v!k7O8梅.Fl/[i10^]x~bn ;7Po_D sF{x%(cRc 9SpIf j_UWyGYMs]>a' [Us -k1-FoŪ~U'* s/GlҷF8iyz]&U(`-b>_1k]T&@7ם&Z:7 Q ;JۗteNLlwU-4܋P}"!ZxZ9bg;k/+ V b:T(sUJykjZ*as3Kȷ!D\]Hц_Ekj0EVvgҘ+h$' lTEV3q1]j`C2(8#T]t3``w}%#wx\t xW$,81:pI*cZY l̾#MaPJKƄ P^МGB\{)銃_}b8,Xe]T mJpƎ=& *4 V91Թ3jQhg*6ϡ*eLn_侼b8V括03U2(M5` $(1ƫ#w#PQG?0ҩL;r,K⣡X,nCgVjf5gy^%}( ٶVwNz}Lβ}3c U 5>?KVO.q*UDˉZ %NP:^"pzdǤ!bF%sAlNcTx5obLA &IW9P p_[ݱE7 =(3FZ@XSifw fDk^s!'S(2 cMX SZ 31_/W`3%59D~!6ʍBSCkheC0̧QvgE#W`Yem.p)Yw#NJ4A1qhF(DA0.2/ӤJGةwfPΖq+ME *R.g*`2ӈ'm9a8VLZ\IDm#8+Շ ـ״6^E Ġ 0j,XuЗx=B!n-Gf,>РŭWalcДJ+Q=);z(7[z"Tc>%B J3RԜo2=' =#H, 9.`9%Ke&X\YMKTMNc C%Pl&o&ܲj=* 9/X?bۙ=9W*,(q뉝4) ʥZjdccjK-޺bT+͖;L^^ӆWKu%梴!Q3 |WM=j( k"/;UP}@g Y j&.jeU"0Vs m(-pC,:= ^y޶E[]R. ͛A*Ra)3CRм/Rc(#FKb*4)!@FmK쾹K'U&b͹g^<\BDrW{,4'C /.fa@kuhݷBBҟhM8mRPChzL4+(=u<5q0}!un!c!FX?DP eL?h(8b~#E@[41XJ=,.lmRS8ޢQ:y|aT^!\m>XB"'Xաzֲ7b*3QaNH+kjD~a^=|u,ǟR%vΕJ\ A^љ>#h`\utwr0G+ :粂Ϙ-kfߊ(rz{ū/S 4oهRJ#~eVXZW[h=kTKZo:ߴl]hz{%*ApŒ?.J%8^gv"EVb O-^f0fR,O~ʔ!1Ӵ(q &b*N#"EV;0#%U)+` ˏcs]5уq WboQkbVUW(^[It XvR(QYN*Q7n3@g8 )MݯV(3˭ĒX6J CzZ@O^==-$Wу8ĹR9 #2>BQV6_hM4R٠j^2'#~%{6 _s[Vw+|/]0J0WMBV x SpZa<2+&3aT=۔+xs]n]@~K~n75 LFBOh/ݜeDᣩUR۶E`A1l¶{CLh௴[HE1w'&>}!,,tкB&IEBu "oGUȗp@]xc!7XS1JW0j]zjRf%axrzvPæ 寯JߟhMn$e%a{LlazXZ:JCFg׬.3 |Ң)`zJx=bZ(ˮ#K ȩhlKp{f`MԧU]|@&ox 7DXgpJ?(l/*NR_4XI [prhIyy Rֳ( jTEPgp rY`+{riX"5WNx稔%z,33.(pPU4oh UWCjm]l&]HgQ&0QUR*;>+XG_v&9-x>vm0ѹU -wFؖ#))\g/)M I %׆X|fdߒuyx%P"fx.)`[%u,Ʌf-Cnp2֌ǀl5x?"P<KZ1,3&_?2Xwje+=+.%c>!M=f;fwpdR@*οC<<+1t6-iq4:F*WYy/ t4ޱUq0[˯)┊ oZX'.zK S ҺQeXbUmh&[C[J2ڋww.iI>NeBhEf CH V!ÓE;M%i7p:(S蔄(;r6^[+iՉq M4(K:=깊@cس'J~W!p&sNZ&Fc*F+\\cB@s״Q51 5O02il%D/8ξc5&tP1WQ af3nex=3(m՗13EMإ z\lQ.:^s+|:ZU |AR=佡Y-@ELd##RS\֩B7|o˜ZV9P`U16Vkqฐ~%aAnu!F?= S_^k9kBv`2*yIޟDG:U~,ZMƲaw *Ż7wHhlXQWm U.x<鄰:&BS*k!scV˵ep {J2`j9t_ވgH؎o(2Cl*1r6f+QAA"\St c=`G$PF:Vw~Ȓmh]Dn&m>9֑%2@]J .u[v'[-/NK/dy| g|A26O'WO̳лˋ  A,FPlCVAVۍ *3¥d3wtGxN,x{vHٍ7oc(eվdpфE:*{^" MT/Hr7THocXKy)ٴe-ֱ-cl]⢕ 6Zd0ԐA01:;@ EvJdeDB=McqdKzX Sp}G(R IʋF,XD~ 5{N?x !ŒyƨN!@AXXM@Y3 }lւIf:J7D!Rnal( u(t>ęwipq3!Vz,5, ЈHS8 y_MEQS1U Kp+0!P.X"P]P&FF/vB5K  Rb2NĮo&34Fc3X`yfc5} /NI Z:md3_u1d{>v`ҡPLMU`;9@$rnA;0E+/`bΝe`kTm`G!%ym0  '?>:E\uuX'SK::TPb*:,ǏaRAK'!@.ת[&pg؏ld'$eEsZC8$49x!k_!Qnkd kC?e{Ĭ%lO-yK-zW-~4XX bղRB֪!n-oW(AIg0l^bjE>A<\Z:=W(;u'tԽv4F%^7h&TVF1+z/׭nJO_:X/4 -V .7ur,6ICob 9R[tVA+*%*iJ\1r汋WɄo -W爝GdDR0O70k|=r kқ./h"QPbk-2v#Yor0QbD[ WE9/(-x:qx@"7Ujh 7e(f=rЉ:K@"\ =Mc (4 B)5e^o9O:䖧;+z3*`@+r C;}+q/D[{zag{aҗh2c`7 c-3OV{)폢wciE꜍:5}-mS=e7tkoʱ%0" h5 cˌJ8ϤJ٨z U:s,uiRaEdk"{ u.Z&< R#XaGfPUQ7wGHJ:E-oWcVr<{ZQ)xHQ5F'SVf}5]PDulv>qSٴmv5 |Jus)^E>ag8w}>#k)ɵ{G]Cb3V1A,!V^9,H /ƥ&B4of߈@ !J&C_T1}+So<<Ĵݰ:<%R 0 Y%%?RrfWFyWStמ!*ĽK Vv8=8Nb(N!J,ٟk. m X]eqwҺF' sh:B : ΐ$+4o 1fIH ^έN8lkFpqQ('F{Hsp qSǿ:C_)..F Kr EOWLԯx’Tk-B6Qa7|f+1(߉R}/tx\3sz*ajF.znQF1r7DP}e`yP_ ⊥7EYgΤ2{p@%"XH+We +ID:@8 wT,IpP_['l&Etܯ_I܄R)ozv OѯX]e Z^ߩC鹍rbli:Bӕ[j d; a]nXi5e f oRt/[,bʙYa&5ŚŹґR5AC/U9Pl(]sU5 x{A\@ Egt˘s'yw4j/]j;F aR˦%Uc eub_g9[kiGX6Kg[!]__I5e7Aj Tu]-dԩ-ǜJB*V 2R/)~(eJ U/XokIF\]Vp-eIpZ7L#S=L31M$hY`,0uef"գ)i\|lKԴ0/JhUv`ELWtCG -TzQy72—)gWDaa3/Rm|F dY`boRcTnT+F90f#JСW.YA/~`aޤ -[E ϙUc8{j2ǒ֘t|j-Wh/SPiiJ!MR6uzp=+9LVB<~AP^(Ni0{e0 v$=H냛U1C":t@\(BQbi` jyW^G!Hd_I[ *G?눊U(ښ t?qCQ:XP3 uΌ9ssCTƜP/i_р߼zcS%'~꽘\`*˱DPQi}!kAp |GcRHOx.GpqbxYƺCAbOakt&Z4!`RSFm֣"$Č kU F۽Gro%KCf9OxX0uP-lrc_F]5 )RGJvz_@-:b} ccBntHJ-0U*- Lsa T4R( %5M,j`Ђ*ybp=c3z_K*݂ٺ65鈅|%*øN*WJVm-s8_i_T.h -6Xh4aC-zľ2zAQv20Iafт 2j xXF/Ifj-7]8̩t@D3ϘǙ3y=e/ԖVvy`Eɵ,p[Ϭmmcsm<9Cܹ* Rm}+4My Q,j.h=h}+/(Պ}CϾZ:*(r<[0JCV x`>O@QE]b֒ey%]DP b Xvb_o{2:^f5`q t48(+uG¤E`ĭ0 leu/m]*Ew\*]n$hc3E ;HY +g18(d>ߐMbeĵ-ԴP9.{04ޥkQHkyJ˼ͫ0po~%R>6nbLKGL Hb$j0;#}VΠ i5ÔMgPю\GZ 5_=Hrc8(B{˶YM*815֠zL\}cØ(KJ\D}⡬E1XM:eϫoZ,ZFc"֐g]Q [~NI]0V#qiw_ e%U+)R.w3"Uz+s2a90'7qUj8/fp+]7npn;{EVЯZn]5s5b\'h쯷9} LRU +YFd2_fcΡRm f]5FjI._Iwp0aگ WI}b5.S(.~OΖiye!C1w/Fķ,tdqd MIO Lŵ2 0 @ܷ'~0TĴc˸ Y^b͎rF V,[u2!UsD+Xv~eUe&wV۰nv3M',+#WRdE&0îQ[m_s.6AպPI}khJ& LqaTU /"4bsK2b=༡kCYi 2]c{cTrƑKUPژ[>-0h]\ʡ@S금PB7\J@T}J T o[I:­qt4|BnWZ^zGgԌՋIL%H!k:|B[+Dꎘ”.!I SEh="U+d$RWu_6}8TiFLt!P=b\!OIJ7+~dzF+u]%kXi9ix/F 2`.k/owް_3>˷ Z7 b}TƩ9JʪR0w ^{ZJ}U WQ zD.6U)sI-[,pGJWA6iHxbF'O3+cO#"\UvS!w>gA{HSV^AK< ɪ`TIz!rQRpP; {B43d:YǤ. `);Z V4Rӂ& pI5WomO~ц6}U[] *\b )Q і?hEzv3CUa/U0SR48*+С mVA^e{9YPN isL3R*V&-Qx0hN]-TeUTev<7qDN_ipѮD(b#n0OGk.G%D![/_v`[Sae> $+L,؆bہZdKQkzFʟ10 >!/}-{'fXř,<^,N~WU L[hЫ ],ȭpJ`\+Z vԠnhQU(R Pս/Z jub\+:S-f -\v XpqmdIj4`Ci@/hoR@dH Rb0&] џVmxaedžT=,e'laUEE /mIF骕툷[z.b+[T`?2 C^l0-])7OJl%0Dы̆;**,SL<ܱvv1`.Kvkj Ff!wiN%ܴ[}%єX 芨_SGEx}%F \hͫb8} = DJ("A32ƣ׽@sA%qG5ð扃TB|x[V?5j:d>H[oQ1JbR+dl⯈tIQ t:A! lw!xn͍4C]Z I[ɦHUKT3c).4o `Z#@6\[WNQҮTsU&iUh'~= VYkp2C fYЮ?ߤii-Q1sAdږ/eqtJj9b, kFeQ $v!6DE7:awLxU]ؖ$WUajP / ߫?•Lђ(/ I,s[\kyc%gyO9DǬhnS,Z(E7y鈃6ځ + m5 jƲi@əg>%2I`֪țTjk&?~3"m+V!cL&.ՌƦo2(DJZJ/5ِ\̧)sE?|-c_i#JTp(i]D!\xcn(ˉlWzLU%Oihl_qn 4a\"X hEDۼ? IZnG% 5.KPa,e:B ]n O2y{%%H`gp/Kq{mU|*4qhU^cD xaVܭ~. SK>l?;*}B 2zynb:W"14̹uWдAA L"\B JL'`P)YD!W (2^j$9zLS+eA9eQH ,JYY=vRZ[ {Gi[1ըSV5)xb5i(]R\@d< KRgCȖ$>X* u0`7: Qx8iXSegX!%AfF6g@M HVRPSd_N=H#u-5uDb?cR ȏ*BY(ok5C,:Ge/:q=0Ggeem&U~P`)}BRkV9AZ/bW( PyN8WOV*?rǀ<H2=tʠ2_Eh^q`_+wgzKgWcZCڡYw\0/d?50z  ;UA鎻aERYܶ/+-x {6,Jim1;ծ!}GrK`}f!(s ]0kU3VuRMbQ60s 1O.31 aa<+zAKW_Y"@ =tgRGEk)EG 9Q}/CHy(;YF `yv}Ċx ֠]1ļf-N"yb.+g* UОdS'avsw[&@{Ya{dϤ?7W qYnUŹ>|Y&\%Cx@|j{6ESu"@}8<`>p@0'E EWV/5(YQDJҥGk+*;.`^iWn@JZ.Hx &'g԰+6L=*IV,.ܲ0 4&JnxQU~xoO{"aUr>dVR5ܵn~g GUK1羊d+u䨰@Q X/먈M5ǽUTr0NA¹G?&t-13>-O934fih@3mBz<_Bz@@C]k?)H.J[*Zk e:,4%^bղ_+t?P"=) }F%\X 7=Wxԛ 9 Eܪ=c0K#l̝[u 5@0 VB\  1|@\GW/J_K~22"ӔbKԔf%y-8p_8b#SDwir^tÙkD c<0Jݲʲ,T"V1jodE+%J bBǬI{^+6140J'b=Qv-d^/JƳ Ts6ru eˋFNP@ŝs6 mn=B}!R ɭF y=\1z(Rٟh@pb)Vd8v'^~X vpq xfoOүLl{ մC؁ 'K:GM6eտ̣M`nϜF \k˖ C{@}᫖w[%wBZ\W u^ X EsT(0h Ha} MK]G5\\"Y-ft(X\TGqtMj.P`n\2?J*`U!4/3V; P}cE.V7ɨNB4ygFG]*#O5Na:C 1 Q ^sa^^J (7eOYP-ȭE$" Ce^(^XeSYeۆ:]6 84J; ; FἚ+M 5s`cY'3:{[+{=9wf\Pa`ja=űΫt,Ķ~ h i;ض%·cZr_ķec,hW7 %qIy CAZiT8&!V%%=nWr9j /*N _ hAxh𱑀q1foX֮ma)CTaYdƢK1\KWpi0 dZ`I n5æ }-QsF/~ 8 ôɂ #t` KOOTqE}cͮ4*ҫF_rpYؽ[x8Dxnr͋Smʹ1 go&!}oIQC=s)"&h”o=-IJRAwh=A LV ۄ`nyBs*sWe=n5R-q l  *_@٫4҄sux- VzXؚF jYz&o͐#Z0w`U"E+m[Jpd/Ы/ޢE4oޟL6{Z"E_0 ^d8m"1B p n~b V)KPʳ1=c[ ƺ9XA#bڲcq{.cʭEfMJZ=%WB<*@_#K{EF&9ts2, %*x/e0֦ b,^'?MdTqQA)"ݔ2C|"`m((PDB^tD(K.4MnSIwC^+y'mSfJJ\4UyUў1+^ ܢ&T^"@iFm^ͥcMwQ0ψ 5*3L9d}p긂=`7)[zW $ hJ_7͵s.|}.H– _PPde*?P% 0'T"A™1_h -Xg+Pu nP`tn"%dL?h0*(|#$ [10/EC\9*pnX:q dV""X9+u0ü@^Њ 1;bnq]??JeJ.9@p ̥*7 *@M9!U]Jybx5acji߼s[W n50&`*\k/X+90^e⮉OB" HSaAf(ܯ'fPI #arRRYAG4NXe-S_OId 7p. ]u,Lqsqjft̺ \6eի="[:8.ʹ8CEZLB(e"80} jbDȂdpM;9ܦv=KNyhUNg~ݠg1XX.>_}qi}s~X-7E0r fI|Fx(jZMKqN(7F24ۘ ]7NӽqߔŤ@BܨG;@XZ0]%#NĪQӌʄ 6;[d~fLġK*e묑$=l!c @H.n)T#|\h+P(ȚFh2< .N%dtÏT/>ZȒo D!HT1ၧm0gNpąk=&VFBSjt /k҅7HVMkq5AY1v2jɃT>U3^a`  Oܗݗ[nX2sͯyf> `qFvf,J3$+XZ|cdM(oqKbLGuruL \_3&(Z1T*(}Gm){I!Ԫ`nʎKn\5TK޹ نG0v~lmkq2w N r@{JC=BjfZK=GʉQ7`(7G`5PrG*Kߤ4X)D&xeXNǥj:L Q%uvHUbk-_O3cޫ߉u`0UwG@u>%ao+SEUWyRԷmJyV/ߤFr^S暗/EZb)[м%ae(B󀹴D*ڔk "JB4K+Vr\R`R*w2  8D%kDpf+HM1) Hi:FeR)Ë2eR-DPIQ[ڇL7[)mWg] wo~D E`[9+]*CrihiH|b}!l"lڇS;x-+_TKkF1¬l!xV/ _%vit8*TUMm Xx 4Z)~Fs(;<Q),Qt"=?ܮÓ9^"c>EH|y6[C 㗽f~x#7-qjf3 ,bax ^PyN@K =V#胭"lE~M=ϼK9P:OI^'a%G"c$IPP`pt+y&-/?EƼD|7ٹ[LfgAPV<&̈&8;m#edEZܲDI]^y?iGSxtAegaP+hy,]6bbiDi.QT*xW&&b.@X쉥a<KgG҉oJ LFV֖-J%!X E.kN{ei^ʬ( <8IxsQN)lFUQ>aFMBضLDZiaez0a*F. j0AZ~ ^O\l:.5]T]BD3D B=P\AebP+o**қ& ͎눩j`Oi]]0q0q@iJ8̥lۗ%WXE-}Xہrp+ ^8,BNIMHKQ{(NƯx$#u wъP{^ ;;{ b+(B, ;-, 4K8bJƠO&B.4!_ͻ!1uc+&Ln)_F]76 ƛg(H#"؀[o5`J0]&nM)*P`hvnWsjR11n֋c*. _#.Iu'GHlU,T99=3j*:Flaršz Fi[hxL;{i)sg)7?؊xW-)K+q+HqèA} 3v׫wݖQ/*{F8]_0{1j[qh\cog=AmF񩲸;2 ("֦V fQAT:3B8,0,*\J 6٨Iw_wql-,<.#x^ʖGK]Eӹs9hԴ;9 B L}Z؝ #+&YiiQ\zP8\0(qj7]̦=eKLHZI}v0.ۊkJj/ %P }e68k?D@V x|AI0\0VC]%#Yn\aNukDK{XT5*Α\$._^Z#߹'rڳ17һd EL^bڽjޟ$,RK7Cȍ@!J\B\zJULM!){w&[7^% `&7:BY<̕6i~a j0 j@`Xt C258cVQ^;E:K= f,X98th%`+$' YH;-Uw5I.؂J8A + R UVؤ YlzT5A+ qJr0P$mhstJ0@{T!_1<-ϳbP{-Glzc8ӣQZe)-wyzTNe{B8l F㯯j-,.۸mU~`WNpeh"E|؍y];όJ[G iⱊG,d ވAfn=3 kVRQ׉~i71 j+7A*ʔz )U0RCW}]5*:N v#QtQ Y kLUP/$o#hCǴj#xzl :cE L+:yH ZWPk(dg.9A,>Hد pZ8!( Vx*K%hX85 ׬klQR4T\O/ÈAl==e #*`P2j4=tuVW̹WdPZ ʕ_[jjlE>X'c|!E\V RK80A5QKRRnR|@TV-y!{:,1 ^3Œv|N&wʪ0.Zmڝ@%X\޳bC\`4]DL<1=A`\O{8zq؟80Ypc f/GF-܋P  9fV, tXEFǬȍʦ VQ_+"3_b[$:JgZAdzX[D8XXz8 PwQk£E`eQUupOxUŚQ 307X1*y>r[jOw mJb{@3airq%14ϴEx:^X`Hy_2i;0(-n%ʮ0[JͺįYEGY7XTQ#Vʀ6Rhƥʅ`Ifjdwcu VwD-iܭ+Hzݚ/-pJځ3\U؍ + /2Ϯ38;ae;JNdMQ)VaG=6+,$ÃEw77WH,_adk\~u&L>Rdhb<98#,c!FDў͕]a#hsZ{2Cѕ1B.:j+0]B"̫ )Yk0X\^?E8ImS6w3@ܥs 2޽#3ZDpX\GT[X7PETY [j U2tJ^pY[>*3"{ scV7*wVyE7/I5ּ+ rDzS$CwaHr6JcY)Rfզ6 Jf+_2̖47sPcuYS  ೙TJebƨ!"׮Ij>aSåFfTөUrP F*Ib:D )WKo+J\;/ p9AQ66* }0 傉2J+$CPzuP(=yHGH)fKU.&X)ɕ.{!g Mayd :!51X҃" *ո#֧+zc{$8Y՘,{0ٿV.|66 ,*uEJZ2h}.M:bDj"AB J  g .:n*&T̴z5Jka몀Kg>ǵL#ʿhh.Nj$;V"M1 @2Pְ"J}K5BT.0>ѭKHR::ZGɶK KxDí2&OOdZ<Jp7/GGBzu`bbi`ǭƅcp 5@/UQG{T=!i,r}RhW*|Gf\|0/lB= ͵z+3>!B&XlYZp8\K8 @4whAϠrzvJXBy1_21]{Vç !{m)u+ y&:ԹΤO1*mtt9265 Yf>ژP%jR*P"M뙰*uHf@pg2mҧA\w82*g&+j>j&1&/P5{CJAx5قY-TcܱQ@GS@% d@/NJ |`iIX U(iTګ\|M:uvZ,mL\0r.x&kB o'F4b~Ґ|vbQILGy <{ɶ%%t=@@r;^]_V{}.#Z}.$lIEb RXoVBkmyvk"6,;@He0Veco`0# Z*>2zݔ <_* 48hXIm̨p+ɽӅv5K U@弖>ħE Y:hܶSH6L(߇a{n+ءbmKaߴED99a0} Qz _h֋xKKª|Tp ΄2zr|BʭZ԰ C> -ϏX0u)+p׼E,*JW-<"+ \4%$5+~cG=`<[mU1[:@1jW%u& GVT".No2\ZcR7dܪ5mz;Kf(;"-K*]qJSpUY/ TĢ(2:DTDNX63|MJ@G̩Jf ZCp0W[u}5juoҢ@jN:̩j)L2<nSF [k"\(yIJSv*rN* 7 "t{vMų8ԭE)/# 3Kˉmayb6ݕAi@6y8"sPU%:RQ0n$M*Zc9|+|Ď WݫDruo5WٗYkc W׏Y|{֥_yGX06#^f*ـu`1B"ma50LWFVH]#d‹@ҍ0aXhE*9EUUN..03fD 0 @Z"QieG.{CP"zG_Iw2@pG[f0.#@Jd^? P}Z9~Xej7,+Gg%2ѱ36*ŸB)ދkNwzK^rTvftc4݃5->\; %Ut Eu{LmeJ Sb q ;VX="Z9(/N\fO찺T(b)h^c|L~DEd~b&T|7?0ݳP[kp[c،PbZ v>!j  +n3@-CRn[S[C-ҳpY%ǽr6H,@RWֻzj Ae1~5r-Py13c_HN" 3w h +bnQ/X軍95mF}YU>1뤋`5~_,6OKJ<"WکMKc]-amq~HaNU~Pu"P$]CZUKwP8pA˅ؾPTf2Rt20jޡK32qa3 ?+</irzz,8BpfߋjK }/hj`gto$tKTX _-U٩lF>"h2u^bۚy"-x m!Bdf"+bp=HFE)G(.Shq: )b wu6[dbY6! 6Ia.%8kuZ嗌*"7=4Fh0H[Tp(701EJ: <76JaTBi(MzQh3iQPj" p~ђų|OH1nK29ݟ2IVlє3C[ ɉP3Nb6*yaiᳳ`2hP@v]b[qC@G8vM`JLby%עٹHP+y>'KDJgcNQ( Ԏ$V0Z_yZu~"@;@/;;tlwP1\)s66S`Ũ:^6Ve&{\ִh'U&D+ Ptj%4۟ &p9mU2hC!dwaӐ7].EV?QN̑|F-W +%/h%Tk8eNs^1P+"!`7g|F݇Ңq_G#ٌVf*RL+RK_ܸX_%iX7]()rx~ba{jTb7BqĦQt2>0WnE*WxdXhR mGWEt%qhE4z/B"?xX_Kʰqqcf0יP# A04M&w.XyBpR1)a"1E[m%?XVô;:e{,0ۨs:Lr`0i;԰<=a}&j}eTA h\p9pPQ-SLU%F`O[TqRxDS mX,lC(yp[QKNF*j_l3eSļ/*ZYϦHPU2<H)C-P\S5lMc{Ⱘ@/,wL1:$N!YE C"ڪqh3hA捆YqxE+PɃU 5Rb/R/}*"sL+0C%I:`ye1 :5V:Ts~#6շUcC!aEX`[ j(q^DkyS0I_ IhP47KU#C%lvY1]Mn+vK &=)yh" 40{4+_gzʅ}q 5A ֥H "^n /YE²UZ1r7ݥ 0Z\/S|AV4H, q=69'il4K5͓ hݕ+q˜Π B z& ^eJ`/.c??M P`eP. QZE P7B&"SJ:2oW=s5v%"+W۴c%uuhZ q1DU.-18rP\0RFGiB]*N6 |> ܧE t[9xL/P*jBϲ=jr v4ͱU7h@@)D(!H!2{7+ŠѪ Gam]`Qh;4@aN_x`{b=_yc)嫵 _mG0b K,1m,bdN$6֧H򳋭S J(YWT*9xfkԥB_K%-CZ1k3< nEϧF..Cܨj6..Y3s*D[~!5@ 5d!(t3TV R3,\X]O (wB+FˍOE RPJRR@uZ=q7 @ 6"SeOѲ%D"EWz0މfiL.s~/텬蘈3&`{< OVkR{yKL˷n 1 !C FܺsYB\;f V z{HtZ yE ]c7#54/L Rn $-;wKS07WĶeFMlTC׆irո[ N!گhƠ4bCzn-0jő)u#B&V3j3#4z-7Wv-*UO |f$wR^\h%H(mZ4hZɃ ¦-N[1,j' M.v`ce4 QA"ӭOPYU1ll2*7Pa%! ,ŢsFTqKR" Sq4uF<듆 Jq+Z DhuZz߇՛X8NR|Oj6u7ywYfG,,!/e2}PeX3{-#4F[P€-ۅk;3.U)SI> "d|@QvYĥ2tHXV\uljGdZZѸ Fݸh皗c<50ڜbL:?8H1EPFA@`YA[<, @فjCCGX.19GMt]V6:@ nl90Կx5LNFC",C7} ܔ GF%lXh@e40S>.R;j߈4v =to\S|N0&?xrc(b%Sh|$Suv ` fTգ?xT4ccd5g+_Z-IS \BrGX1Dkj+ݕ_2+9 ^TǪ#N\vc쾆P`GXQKNfHM\WF4a0-DoUFtEXGp='V YROwN}EĶ ~\ ?ra ܱOK=. ,[M(19Uf+D(gxd9+_?6G$̞*WѦ n b'ki8{+pԠ 2b E+NEZUL4ӾG5y~ `<ݛhardinfo2-hardinfo2-1331e88/pixmaps/bg3_dark.jpg000066400000000000000000002357511474767047500214170ustar00rootroot00000000000000JFIFHHExifII*bj(1 r2iHHGIMP 2.10.302024:08:25 15:18:15 JFIFC    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?(,((((((((((((((((-3@ EVY#^zrMXS<:.+EXOr}Ua<%3Ԗpƿy~4sgf%l&f?Rhv63H  :Ȼ:T?Φ0(((((((((((K4ddt*V' ߩ$(* ˟jUs\p^#iU'E: (Mrsw+K'h\͢O~F+K'h\͢O~F+K'h\͢Og %3沭 wz(Q@Q@Q@Q@2o2>7??ʀ: :OXt+|$Nh:dJ;5[Ses5g99ڟ.뙦 zGS}WW;zŸ?63>Դ0:vy5"$9ҹZjS("cY׺V*_ʄ6UZok5 a Qchͳ[(DTSVX'p^N;QHaEPEPEPLLOMOOo?IBJFƔԣлFpsHA2j2`pǬ*#s}WW9z?763M.294ҤB29(QE))f< Zr*ſ/] =pdgi54P 6>;vzOfB\ qQ>X/:7ҫw9> UVșv~FX$Vc^(4 (Rx*=|ċ)] *5 r)ŦMOO&S'PA?IBJ|![I#^ߕ8v P@Z@/z2I5[Res4cYUG-$]q=e#YۺwMwM!>t?Ң?Ҫ:J6K XCJ{N.ktL6 6΀1ͻΡ^&#%~FLpF9S-21 JtEl)[B}jZTaGVЊ(l!S XLwIIDwq"&fP0Q-$nFP ZknX+ܒGSY2l-!vkTb,qrpPE[ rzg#"Djddt*8'iZF ~(|![?IBIҖ(#"jCes5n8Snq'Z#JZ9~5zy L6"yxCzU#Ϊ8FNTBDIXGacF?WcK>A41ՙZ2ULèV5U#R|꽀mj>2?Oz}8<1ێ&IX±AⱝEfmȊcPGaϺ2,zH*3Z5̲ۭLE+Ak[ }EX9}z& AZpOPR9Zըy?ʤʥtYHixPN?Vė}ذDU$`7|APIɮi񌛀9|W?2eˎHbB P2V[5R_m%DHm*l4[ ,0LPMKQVdd_[̵b5@.? d3Z^JRntgDpGީ~78m RZPqk6*)yqFI٥]>_i#`j䫱zRw9ᇨ?? BJDrv n=MhG*K0* 5Yv]zh.clE6)y&]G]/%4$ ǵRzwC5Cau9f+鲝eMc#)46= N-]2WVӢnXyQb.~L-SGS=R\vB>Nծ˺!;̤-l7M68VoAOh%$l-#>vczVVU8ϸym(ڎd"C޺;Ids?ZOvZQH *ԤmT| z{ʴRaEP0(/A=0dayg?O177G} ж +G?9r?*eԬC}<|搏AҲHu#/Pb,x424\XzYvyg?L^`¹eK׎ 1C3 G?@uMZ,v^2}bYhߣ q^okU,_+g&4$ȏ8?+7=GP-ϐ{OykA2F&BO{dH5 iD$NQԫBj"e9IqiătU6fsbO4wG@Q@Rdg(&Brk_0da݁~Yj7~OQ?B|0nУ0dayg?s whttp://ns.adobe.com/xap/1.0/ ICC_PROFILElcms0mntrRGB XYZ  acspAPPL-lcms desc @cprt`6wtptchad,rXYZbXYZgXYZrTRC gTRC bTRC chrm4$dmndX$dmdd|$mluc enUS$GIMP built-in sRGBmluc enUSPublic DomainXYZ -sf32 B%nXYZ o8XYZ $XYZ bparaff Y [chrmT|L&g\mluc enUSGIMPmluc enUSsRGBC     C     ۠VRW۶ILERRU%qX&ހ*)Jb \;s3ޮ*d*05[*ʐ37#t70qdzZr*XՅeRfn񺛦d>moEuC9Ȳo&;xAI36x7Mݍ@;xAɻdF@Icn3&@I tufgD3$9n73ĒMf7u~Icf3DMv$c^NO<ր'W{hwW鹝|$v:lhg:ڠIDhwW鹝|$v:ls<]R)HR If7u~Ic?9n=Ē@x;|DޛhwW鹝 Ic7n=J$f3DMEH &,΀|$v:lsqLΆs@<TNMc4I΀^1"Y&%fzv$cft7}잂" "@bDI5@vR]c4I΀ u1K3W>goH;69ΦgCw#bbI$Ƭb (bfIwzl3M_tUٔe,+P3$gS3dB(k $ AdvR;6&s:YfRL;xAu3:NTfF@bH !R*Q'ws1$ng@㩞l+P3$gS3=jեƩ ̶0Yaa%ER#u@f7u~cXk3bSP 3;xAu3:3ƥ^fP ׬LˌQl+  Z֭W +ֽGMGlhwW鹝4Tb[unmZa@|$v:lsqLΆqV#0dLdAUaI|Edru9ړmMkr_6g€s1$ng@#80Ksim3q^rI t: y'ʊȊ#AE bٌk jh;zq.ӽz7+3Vs߼jjEhwW鹝4^&bnJjq L;xAu3:NX&D@AMYVʀo;[yNna}jqEA]jgphwW鹝4&ad`WmUlΦrI t: {'~]VAYU_IIl,,.㣩6wۏ.2bs DJi@f7u~cHbvVTYP3$gS3d 12 ̐AQp5+ j@$vMvAi0@$ȓB\q%&s: iI` Vɼ.l3;xAu3:OAb#0 @ 1 Zqӳs2dvZH9VLӰQϴJ9n73ƱI)gL.s,;xAu3:OAbe dIUI @5+=9-McHgj96ȒMMc&s: j13",*0ky4Ic7n=13 X$I y繩Fҫ9<@%lU44Z$N֗s3M_tFr`ĔXXbbII t: {' "#0A $>ʫˌ$Y/K} wЮv@ @T@f3DM1 LZ jb2gv$cft7}잂bf`YA@Yzgg'nAsyɄ Kߢ#]4»厱(AHJRf7u~cH @|$v:lsqLΆs@ L 59iӏֆ.점lC]әpNƛIW&+Un!d.U s1$ng@#8Ʋ52Ic7n=eAXH4u5k/79Y@_:n:/( v3QK9A`b ^W#;ds1$ng@#(Ċă8@:>goH;69ΦgCw 03,cYttƕahF=wwssƻ [>?9̌e+V sW$Jls1$ng@#"c"L-bg(ĒMn3z0ui #:gJ>u| ͹&fQg;(uHg>0@ֹ*N^9fQa-RAJls1$ng@#8Ċ3e(nYv$cft7}잂@$ڀ m-MFu7W ޓP]:kjb@Zss "Z N]d$Ȳf3DM1``dIfch@|$v:lsqLΆs@Ĩȶ)^{yyNտ>~5es͠-7Ҫ1z [@S3=ySO([JmL {wwTs1$ng@#8 jRzv$cft7}잂ee+<>Ώ=zkmSǯMٝlj֜bz݌u@s˜svNy)G9F<1%l]s1$ng@""L K3@gv$cft7}잂H., kxx_An :s|}t=NrYU 0M kɯ=qZCϞDWP f3DM1g0ԙry>goH;69ΦgCw @uj&|{龜XOӚ|-ִ :@Rޏ>5f+)xץhpy*Vb&s: iVf4+K;xAu3:OAv-yAsguxk΀Ak \vV FߛgZMk@Amuh3M_tL1Ycf:(v$cft7}잂<㮚%0()]QGk@ goH;6538#؞d nwΆfEe& k5x ɩ3Eߚg';,ea.>195@ Kt f3DMUr-@I tǯ6j$ærl{#pbA  s{Wo0X\7qBX#)X9 N]H3M_tP>goH;64{<#vZ$c=شo w,g/vi<.0 u\:-  iWP@f7u~IcrǶmjrMZ:TA&* g㦞?-,uR H: ˝y L`Ax KMݭP6.9n73ĒM'Qr?b_~@KkT5h@kLLV˽ Ƶ1 CKfRk7jSӳ~=:9Z-f1Amj=2,0-տVIn73h"ܮ4PwNp@wm=Yyn#\>:LƔJ RL#ѭ^Ux[ńUO7hoSS =6 _t ~|ԽuʤLNUQ&fKkT޷uv-3pX,ki6s dtyggl;n%Fo3ƴ>o87]μ>K1錵{]5_t6x^><~ l1z^9ijʦ7-2A\g]-kmpw9_\\:'|A_+Ք lrL GM~w{[1Nt{Rk<뮏]Nxn73qsn~-;ӁV*ٜs3=v x<񵫱ntH4q6-c;Ј53:{ע5˭:k>/$jIƍx$Wzyzl6UQzognleċ1kS8K 6_t '.ջb73iGt 3Lcq޳33 l˵r$^3wkSWH1:~SaH74 *og,='Pf)Miwƿ[Q`~fs:Ah֒ ϗZ{#9-.|~;tǛW:22!sK#3(ȓ *aPINi“@3zR@D[cUo-9s7E3[ I6+[ <}'J:g9ԓ4V5uί~frTU%qY%ejݲ2htw` $btV~.<z5tǕ_պu$Ȓc H$AœB,D35wvj<гV>|hrgoH 6k]oCKn- +$AbU=3ald^ysĘZ9Vͷ&1t $4s7ku=7?^n:Y߫! P"G)4d*9V kBk[uٽ{@]fYTkAI&r{tYۦlus332#"@ؔ5pwK`Il|xyH;pk|g&eFiQX\ rG纥 BT@H$&Ze||,͘333#"PK'4(9:\ 举.k.6sZu3Kzz  ZVrN5F s Mb z5֯\=@6{f7 @l f HfE\5nc/eߨ&mfFQ( $jLQ`KSZVum-,$ׯGH7R`L AY'Ɖ`Xtw1?θ|gsV5 $K$ه-WI =_n&Ezh$ؓr73,I3-̣# Rɔ *,K*5;tup,3%s,xryyGӧO4y祀'˷PSzR9Lϑy@ z.H2A5!)& \2,3:f}w~$~fɽ%Iade4FYQR֭Ieg՗M+κ߯ >=VSzoWZ[%s7y,k L e!f&$ !eDI6 @d_]&FFfqdI$ A```RSmU$ę|_,i&DGЧNst&E_IrgH;\T HZvkzlo_DFfFQ&@"IEDcXbbb`Ul$DffdyhxfC:sMٜc@to@.I7cnK#$IdddeHTPĊ"N|xg@;{Z[`y^hA51êo7s1%0<;IZ#f732@$̲2$2$E% ±1+ ̐y !ֽҫÅyf.Ms^xsThP eH$I @HL@@,Y$A&&p Vzkg@ 3,O%>B ʷB^7=(i@ M[-H$@I$@ ߥ KW]8sO==M@m$c6 K{_2fvw˟h@{ҳʀT@ $A@$@ {x@m2Y @( ,s\\̐BC(rΐ{ IgBb`brkQ{-quΐ&G6.1 +-3 !0124@"#3PA$`BpCEr[ s6Ї Do@1Cjp1ŵ *9PuK`$r`8`ԥ &bҌl8,hIp֒dZbp՘bڌXPl,$[I S(R p#a8D'dxBZɴŘ\ FZQCf:E%Ɣ)ad,#a8A8Dde\8t^?-Ŕi!Jq XD 'XNN!0@""b>~|cf)ad8IPN "2BaB/~yM`UЇ9e^|9q7麗a@.}?=1*IdDC~#HCW.ߢ_6P=>p`t# 0 ?N2 !*ߴ}4F0]ߋdxCohCu4p* q?"/c~/,?!P`'ߋdxCohC?냸5J(dL+N_#YH D#e|G25Pj3˙_}?3 W ;ny$;f}ZmUY%Cm&aIXI)0\du/M># 9'Q3>X#S{G7peű(+@Wt.΁Ardm 椂T_N$F$ć ݈6X`QӁ=»GߋdxCohC􋲻B #FfB;d>ENKgm!(ivhviJ$DsIg  t?#e|F /#>0j%`s#ňխd._"h.*q~,Gݑ) O`uNI 4)T#GP_%8EJq#{B"#~$0ns'&/>#ҮGߋdxCohCKF\421iEOm:Q'Z҆IO?)W%_'|Wn@P4 eA4Ě#e|FVY cXcQ<;t1vG?<0OO2C\I_'ߒ3[{tEBӥ\ d>^rLχi߇4FQsc@4Yw~yM`rȂy$wAO:Ak#NlJh!iuhԆ-p3ҟ#$A8Ӛ#e|F -D55@?,Gݑ) 訪F|v}-=rS8Hǫ%!NL:, yzӀi=E&a .zLh1hT >X#S{G'2I+5y|]njM&ېOkK'ۍR \bzA!Q\QңG ߘsǮuZR7Pd/ iԼigM)巇dɎf¾ ,?0YTj!\ :>X#S{G'2W<_ٝ&U.VaPZ2X+:S }&mN'%#[QTAKu?PFR*ia Dyl'QC证4F_zc@}?=>BR$CZ#lDس0#!nt<iSU |iMq!p)Ky)ig'e\gwi2ڱyA]ȎGTaP,# h)Rj%9QP概$PJUJ4b܇mM2YrQST,}UPm/ j6 qI",/8&@CU b>~yM`qEaAl'ؐː$PyzR" uc+VnT-4 s2 ,h'S`i}y6X`YȸqvG?<0OO8~%5$#wU,En9i@}Z[>tL G,IcMB²7(*fx;NM>#1p>~yMaq߬߬,q27#~7#~7#~7#~7#~7#~7#~7#~7#~7#~7#~7#~7#~7#~7#~7#~7#~ISYR,R>u)<+FZKQۀUȞ8KrG^ 9˭7lO N̸1vG?<SRJVK> o})&sZu7+8%^=XW]}aMP$)aq=W=Ye|G:ň"UEzT'e}ƚ&[0|RcKJI(GM,?X#yzclgi/3G=-Z \4q\Ԕ3OKj>e-NII0>." g66ccllm6$#&ݴKTsd%J1klm66ccllm66ccllm!uQ:.F! 퍍 mb؁ mb؁bbqz4ͩ =l@6 l@6 l@qD? ʭN' +| cX%5~>Dy-ҁ mHcvnՍڱV7jXݫaFL,Kh%4(m-?DfK2އ0͠PjjXݫcvnՍڱV7jXݫcvnՍڱV7j w7NvnՍڱV7jXݫcvnՍڱ:\wyoITl7kv7kv7kv7kv7kv meNxRh9 YkB<ΆaM*#sVE65},LFN88dXŐT7R( 5,ZRw)=Ш#3TQ6a2_IU!}:^peRI H:Zq@R"F]䂐AjR*$P)5 =Pby6i R Ն䳪u2Č-1eBq:?ELMICl7RwE,SKlV ܐE.*tmb3ƕ_K9Z 9* &c@qdII@"J%`N4}D Au&+^! 5<G j ARB4SMUh̃IaagB! ?ƳY=LLF@l+uyax̕ϐRԼD@H96T%& $aV>^x8"D " Du'-փd._P6AchPyCZ3 o3<~AI HRyQ'8Q˘rAm)n: HrKЮj<\s+~d.x)fd.(\Pf, B =|LFI} }F j< Ȼ\.6y)ieHWҥdVἶAN$A<q:132[%.^R޷Ec3S䍖:Imp%F-Q3HIXRTcʚ 'H'9)&8nԲR y1F0ĂT8ס$[%hRΠӭ%d P5Q|3y08(. oKE=`9`ن15-j%h" *%"?$kQKZB٘2zeC -R4ZI`SjDݾ N9܏˖֕jOjmM:Am6A mhPF,:lã117\ufIUA*$1ib)$}u%jҌ*F&NbI'SXJANT-%Zר&av+i&UP%INT(WHi0+u_KEYN:H)3}6p~ N}gN= JnH$a'QJnդz#Rס2/;ѼѼѼѼ\\ѽ o}HrF7쑿e (oCKX7,oCJPҁs 0o|X,jQ7ԑ$o#~IHߒrL'q_ ĝY`"uEA oaê(NDj3ҏԸtpo'po'po'po'po'po'po'po'po'po'po'po'pZ!hZ!hZ!hY!i"ED-B D-B $,B $,B $,XHe"EZ!hD-B D-B D-B D-B D-B D-`2 Yj,s \CAK0.!Z%ˎ~RB D-B D-B D-B D-B D-B D-B዆.b዆.b዆.b .b዆.bዊ.]PuB T.]PuB  \1p \1p \1p \1p \1p \1p E0>.ZCB f #/OcK8^L]1tL]1tL]1tL]1tL]1tL]1tLZ!hZ!hY!`I-B D-B D-B D-B D-B I-$ZHB D-B D-B D-B D-B D-B D-B D-B IH}O T4O>eMikw'؛#Z!hZ!hZ!hZ!hZ!hZ!hZ.Erۆì/(0@ P12!`pAQ"?$ZI$xŗ$I͋4I$Ibbży-/ [_Oz-+wbbz-+w]ػ.BI'#ػ.<FV+w]ػ.#bx߱dzLWb-+wbLWbdEػ%IҸy&+v3pOb!p|혲hxXS¬2'=v.}v.꛼lZN+wTެbbt^L[WbދT-bbrI'1o1]gZm1jF&+w4ެI-+u%y֋;j-iZ/bb]Zd:KA--+ujlI5x:} غHZγC[,Z/+غ'Ƴ,*U6e^?zWW;̵)%U*bx֡#3UrWŬ1]*N$zb$]bY^ j7u$:bd|XՠǙk'oeyio2V-+v,k&MNGұo1]jcZI:+5V8$I$I#A<$I$I$I$I$I$b$I$I$NQ$I$I$Hc9$  uAAAAe   /ުRAAAqVeJ (l9n</2O ISZ|9$kqcvGB Td])> U1eCc, wO*}%ItTjv\;, wOG_,ojp 6b'H9RjШ[pE1xI$jj\`½ШYRM':55G&ʜ9\z5 Bj8=}V֥̓NG@|ZU Vz(P$$JA^||U:#noZx~?НwW#Iq<UҷvBI`ըQ]#|#V$I$N+QT{㣩.vpA4(ryHAQ#DfGAx ]2$O/Nx#OOdMH*nWv]~h?ŗnT:nI$I$I$I$I$I$I&I$I6qI$I$I$I$II$I$I$I$I$I$Ж>GUO?\;*ƿJ|P+0 @1PA!pQ`2"a?$#"g##"Y7)$##"]#) (ȖM@K% :B#@T.)P̧B2 @T.)P̧B2I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$9 oP) oP)yޡ{/>wMbB#c)B^}B$I$C)B^}Bֵhe7^ϿZ WֆSzYjoPP;-_ZMb^ku}he7^11 T/ T-(|&ˇֆSzg젂 rwPv\Sz젂H**> 2/cO%׷ZP- F׶ZP- @kPZMzFB҇boPv-o-({Szu JšޡzYh}?ePZM\ŵ*boPzrI<$z JoPR?˨ޤ JoPR{-(z<]C)BJoRyOPCoPR~ ]>_w[E 2/T_QWժeqt غ5 J5he7^`'j+x)n$[ߎں5 J5ޡzCwɒ2jb ZtW}!|#wEbd*%%u(lDkUYn]ڴ;& eENtUʟ7E֙$ojɒ7t3duB([ŋSJH ĦշGhVE_DS_ sbd]DUSF/%^[ub)A֦RZBv,E>6EzM{*Ӎ\ЏVB> ~ $MŘ@ "I$I$M㢬?cњ)J:T )GBnI'L"Jeӂ AOWY~Pqhp)#ϣP$ \2./$RSCg{㿣EJV* Ҩ\$xAشˋZIO$;UiI*EҺpcx#7v\XrOR87_j|t#mEݗ.?V^b-WGJIqv\XMi{jO{mqb=/=GO?^i$I$I'lcI+yw(DAA5y﫷Uf$h1bfSK*࿹ѧʄ}p# {Y_۱"8W9$VZ$OI$dI$O]1#KȒY/i$WcϤ޵mO9L~ڟEtեuI8=ۯ2fLə3&d̙2fLə3&dddI$I$I$I$I$I$y$I$I$I222222$]|Gu_Udݟ j:qQQ0?WQ?W8I??< 1!2q "03@AQaBPr#R`pbC?EuCUA}٩Pw\WtpWn^5^TUQI.k7XU{wG ڍ_w2C,Z.s)F'UCq]¶Wݮ]x ZV@lڝU{wG ڍ_wl (lqb:sbuT?+j5}ٶ#h=P׎EMN⻣mFQa}'MMOxjuT?+j5}ۜ7WGTҁ flջSt[Q:+DerrjU{wG ڍ_vts-ߨEtE:]Y:K{ V;WUӹ3 rjuT?+j5}ڸo.U'EP3 =%; cy;w&UCq]¶Wݸ[:~sxѬ1R~T E8,'cna%~u. DZ1$Υw V2St[QI2tl Yl|Y-o5ouJn d:w*=A}r!H05Xccb<7VUCq]¶W0sb-)^V,F佫HwQ:*3ҨY.ZGsn;y5BIIdF`@ aScp5:Kj_Q% |5c9~NU±GƢw!!h@I@&˕V̒vE89U{wG ڍ_wREQ*k b<8iP*kڝU{wG ؊ hq战YNaJg0cg@ K{yb0^inPw\WtpɅ~ԓlm(ŏ}QFN90^*WUx^*WUx^*WUx^*WUx^*WUAN#T:]sV yVXb=35:KNZzrK->9#wY91WGtxWGtxWGtxWGtxWGtxWGtxWGtxWGtxB)) R AH)StB<+º<+º<+º<+º<+,TdԲ*s#8RR]9\"6ѩPw\WtpJc=GIد@nTSutp:ڠa܆XZVI5N⻣q7(EA:n0]E7W\mn`7!(1آXF~;.+8TJ7jo3kCu.M(!ZҎ6ә^x^ z/W#g4~;.*)Tto$oN.V+A z/W^x^ z/W^x^ z/W}Q@W^^^^PQ4~T܌q\Wq\WYƷlT$z^Ιq\WyUW5^jyDIPwJP2x'=< zk!hϣ`|xcPi`0襓Z4.k$+W5^jyUW5^jyUP&+jyUW5^jy_IuQ)GqyQUW5^jyUQ$f:ɡD+5,qY.db˜S>Pw^&$!^w}UyS*H!q*hAw5Aag\}EA"Ϧ$NgB+%d ' w>PwAO+AU*UN\BJo#}qM *GUM)g^9QNS#5W+V-yBBVKoPw *Vp E+F Jm+X]SSV*9CWH؄M7 J zegrѵn:9S>Pu:TyZ4@bTݬZN.ƹ))J1V LbG4fVU%t~6+hIڴ[SSRRR SS+ѡyJG8BsMn*[D8Wo4}ӪեJ_XǕD%M+iŤkJJUhɧM(<7+hhڶ#ʱ:O* Vjm#֝3܃beY@ hhQ<QEXk΂xPophVΝsUM3*" 'AG򞙆H#/ȡ.V'Hz%_|KjH4SdQ[SqxWiN7:>ΩU<,҆/"xfSp-~Q0WSr єz4XLU8DOYm#|ty*4yQD(! r䲙BN*5\*.-`U5r\:T& 9 #fP"DCɫh~ hGZ#2+Si娋ݒh(rVUY ;M*< dUVy-#[brO- nyOTgFMḕ 0ShBSKg%sQV+l%&įqԲIPhSV)79;D̫gX*^z(ҐˊmpP򟊢V 4F]KHi\ED^PZF*\MRvZK%'J"U8?ZT-PsŞҫ5VMhQ9ݗ9VHA4tw9N0rTAB=\~yG}GuP QsVV*/we`V5(+jZj_B5d%F*n(pd- Bদq謠pXhУ5ei2i3WMCX[O<T>Ƕ²y+j9EFCYϞգq (g !C[鬑~%8#"J1փ< AG:}Z+Gx'RnUDSw . 5IMWZ]jTIz|/O>^ z|/O6SoUy7UM m mB[o m!m-Mz|/O m En ^ z|/Or|!CI #KAaMY*?kKU֫WZ]juU֫WZ]juU֫WZ]juUq\uI0n> !IPATQvd㴷Ē9iI/a9/c;l/u:(Ki[6@&'d-XzJGbMXщ2g,V͸d~JBKpRĽd +ieA˰һbMjY0vrR'+<Q{`Cƌi@3PXmIPfͼZPlIvjxQj i=RNG%HZ/'w5Q'ЛDixJhgj%[?Dz,%n)*^ F^v],2v3''253l !J/ԢA K!!e̝z̙S::CZ  Ka"g7: k}göqZA AѠ6 +wvbn KHJ. r\^dj1yV ᴟ"k{:(0Bԩ8[]M0d}gòqZI @3p*c;l?k +fQd<8WF99~L|cIF(Nv^2:69$=&>:7Ix[ 8H iS. iUa8(4Tx:+B>H8ݳWf\,T]2=Y z{w"* r|+춃Pӷ ;'p ѼcaB(d!NG/ЌldK 3hx$io%#rc;l?kcjQSFNC $YY( Θm *jZŤ1636epX 2Br$LOovN;KF<OL 3 br&yc;l?k9WEH 7 c/}M4-5.PNdyiC'S2$n6C…P10a'+ 1>ea8-Ԏ3=wlr1,z~4//w>DD2++HRvM*GF貃if%edx xDRbihFàPZp[{asY Npxv([L ANC)Ju+Wai,/)' 1tA]>w w "b? W"dih& J&[=wlȉhzd1Ǥ{~C=L ,' $:: jgysy2TVcjஈ|ߟ?+ .\j!yKKR̈67!^Ua8-+1T8ݳW.b)(č~u -\PS%Qh rIE_qCw%HX,!Y0vh\wvBd~T+hdqkЋ\%Bʔ$*oopZ|(`bNDEUؗj=.qLiQMyZK撇%51ؑ*D1  ;gmJcD7!wv*VD]DPIadC1HXWd^٣AaKC)w.OkUn+sDRB:͊I"y jKF0MDCa8-HX {as9IK$)$n\ :+i؎ O7 ,lBؕ¯;k+szSo&@f*ʅF 02!inO *r^vUu%#/`V4%J .a+Nn1oln"h+\A"G- ;'P3$N %b^%lNE$elq(ʽ?Ǒ-3 $bFɰ39[}W6r%.YD{QH'RWCQw?%H#qV{$Csa {}y} Fe6<0y`<0y`<0y`<0y`<0y`lkgtTɐuex Zͭd/ɔ\w #M3.}FR 4Li{11eG;Odf8\.oZCQXrP$JNs9s{T&0J:x#G<"I(CI9syr$*1)JtBRTm:|wߙQ+I І4g =ͷ ;'5" u;)ye9%F-%=p3 u]kUC?Cc{ݪ!acp|z"K2|X CydDZ-3[[ahK'UZ(: njhA MCY9I椴fUm~RP.}/iP喏ò~cڕdC~aQVQ -{^\̓E)-L25 | oPeĂ9<@#OOOOOOOOc`vOuumʐc1D199QK#jR}l{'П&DZ} } } } } } } } l{'П&DZ} } } } OL%-P4ɵϳ>l?ϰ>gI k9=ȇZ6:>glMi6}ϴ>g!/s4 )&+_ b;5TqхTz^cm{OϬϬϬϬϬϬϬϬF/dJ0lah@=GbYu"Z$Tjvm]yJ܇F54.w+#>>>>>>>>>>\:kQя*9JAI(|s[ȿȿȿȿȿȿȿȿȿȿT+bKh *WYCAgڹu1%".Tn>X-F9wg#a?*zq(|9tcb* ^)'.-bB$;gn (, :IvsnLPft Z#<}JQ|+s4LnDe$@TGz2 AdGKt _D"(rd ;'=ioؘ|-GrO,I+OL(ܴȰ2>a)I rF] 5Teo(0CaRsJ"A‡JZD$--!( r%5Պs͗O"٫!5 sըQ,2$n rd ;'z5>Toi IuDڻ3a<2B^uc*#qy*OYi.l&_A JWdDobw䣫Kx`'JeV}2?MnuM0Z' WI,wrQF-9JJK"8ԡ-J5\a"cbP[jIH#n'is4ѨM*PK~ÿİ8]zS#aB[B(ռRB;Ks(^/EIeobh] ✊ɹFZt"LXIs,d ; Q0ѨBU}d Zq"jNI =Ϙl pId1Y]kSHm=2lDgtE.^/vwFr/|'><'6u}?E5"_-7mӰ [݋ "%E䱍cw<,"rNSYui\Blҝ xLX&CR M"ci+-=ʦRz r]- P^]_t!Wet@@@ՒjEU'{=Wq Bu"p#*l%kVdf.|ɂk X]19S9% pB䱡*2d46vK V)_@JVHaZĄ#c{Jb3DI5Z DhS2%Ӟ pՔeY1Y1YC_VW3L!ҙxa Cn$4eyF7^s>z |E!a ,e(L=r6qN[!z6LVw1vPg&9-x_i561>"}zh!@X=H|܏v LD͹d>3*M1HQmsG~ &;$/,!_BbFw 5ԙ "ħQ`T+$=94Y{ 9?dllnFKd_ V$GFl+dU|j2_Q*M$fC*c:̠B[EDFSu=.0@CcX>Ą!~cB F1Ԣ*jgLf>՛RpBG1@a#Y25~іuSfhAmKe}CšnŪU}hL4:>J!p\ ح%)ؕ,CBg HLC :2QFԘDْmn7[fm#MQ0tnQ #%_Z2wi#ԒI$v/ANh$.FXF'.;d*|(BO#Xb$$!V)zEr C4C$:'>Ilx\j [N4*ɖ7/;)'2*–ΣFѰmІArӇ*iaB kRqČ&D }uDhHlr$T>\MYDž҈E,GbP|I /ADW'R/Q |~BX%8كzB5(8 %W\LK4LwEqǶY@׏ Vu2$,M XУ, nzy_Q.\a!,N36=,8!J(J L^u&E|ljD: ЙʸzGq 6in_p& ACCCCXK P*+Ofv+kr%=C*_"o^ d=I)"TV7/b_a %aLZ(DHs@?rIr5r%1%> K2gˎeTy$;(ڏj>}QDNRH1|B"GERf7Ynuf7Ynuf7Ynuf7Yooo7|7|7x7;csnv7;c{ooooooo-:)+m bn *Q|"D(]6:'DtN:'DtN:'DtN:TSuN:7uN:TSuN:TSuN uN:TSuN:TSuN:TSuN:TkjNiy.0ooq3QܒtdbkAZ$ e*KuN:TSuN:TSuN:TSux_5$2ƒI=8l\!fY6rN4\zAʰHO^,1#ȒJl5 e6թmHD4̽GIGQ]n$jn`DR6_ mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmeaWmmmmmmmmmmmmmmmmmmlQ#mmmmmmmmmmmmmmmmmmzIsmmmmmmmmmmmmmmmml"I$mmmmmmmmmmmmmmmmUI$gmmmmmmmmmmmmmmmm I$֖mmmmmmmmmmmmmmmmʒzPmmmmmmmmmmmmmmmmؓmmmmmmmmmmmmmmmm؛mmmmmmmmmmmmmmmmȟmmmmmmmmmmmmmmmmȗmmmmmmmmmmmmmmmmȗmmmmmmmmKmmmmmmmmȗhmmmmmmImmmmmmmmȗcmmmmmmmmmmmmmmȗj em-mYmm۲mmmmmmmȗcPmmmmmmmmȗ?lPmmmmmmmmȗdPmmmmmmmmȗg^dwQmmmmmmmmȗ\d~kPmmmmmmmmȟ d/mIPmmmmmmmmȗ dd/Pmmmmmmmmȗdn?5ϿU6mmmmmmmȗ?d~pchvmmmmmmmȗ4_?dlo>kwmmmmmmmȗddkݯ=)mmmmmmȗ'ϟd1_K=mmmmmmȗەd~}ywԡommmmmmȗ7dmmmmmmmȗdVoO}mmmmmmȗdtmmNfmmmmmmȗϟdXmommmmmmȗdj{}t6ommmRm[mmȗdc}mޛmmmmmȗd\O}|m;mmd ]Mmȗdemom޻mm'0I1mȗ4dw&gmۻmm٪b;6mȗidop(۶㫶mOmm[z!mȗ7d.㩾mۇmm^|'?mȗid}6΀mۇmm|'$?mȗwd{pDmmmL mȗidۿ4'mۗmm7I mȗd]e>fvm mmmȟdq׻~mmm[\k mȗzQdglm۫mm]9$mȗrOd@rl{l6mmlQ$mȗ?NMdȒI$I$I$I$I}~&mmm/H Omȗemmmm&Md6m۫ma)/mȗei&I$m$I,D[m;mkp  mȗnmm>I$Nm_\m[m}O Amȗe>mm>I$NmۮGmۛmmI$mȗxmm>I$Nmmm5O-ؒl$'yI$I$I$Nmfmw6/A mؗ $I$InI$kI$KsmI$DXdؒ-m!c>mi>I$K[m[+mVm~wlcXCm,=Bm]I$omNmܶmqn\mLmņI$h5 Pm˖m' NomF6m-$I$|oѲPmm6b9~߶mwG$I$I$Rim0mڶa>[mf)_ƞI$M2'9m1m8mn{l+mm[L34Ԛpj"Ri^3& ym mnl8NmmI_" 6~_S\X&kmBmhiἴ mmBc$I$J]?c*hm[mieomm ꦶmK<  (Tm;Lmckmm_mmqI%*v̡&Io^$I%Ϛm]}mmmmmmiH$Ng&H$S8h$ZtmOmmmmmmұ$I& $$HZI$mBmmmmmۙGb?|"I} $$I eImϬɭmmmmmb ٟ=NMn vb@ @$IImmmm6mgT6II$E I5mmmmmsDFA K$I$f<-I=mmmmm[VE] !e0ؙ$I$6I)mmmmmlT?QD ?t9$I$3S ݿmmmmm^R_.!|aӂdhI$I$%NRImmmmn󩫬/)6;,I$H$[k,XnI$Ammm6mv K[mߩ‘{-ŚI$ h$I$H%mmm6m`yy-w$'0X-I$II$I$I$I mmmmKm[o_~I$HI$I$I$I$H5mmmm6SMve D@▗I$A$I$I$I$I$I mmm6m#i,ݷnU!2vڍI$A$I$I$I$I$I mmmmIMIͶ9J <@EI$ $I$I$I$I$II$II $I6I$|I$ $I$I$I$I$I$I$I$I$mmm}mmmmo7הI I$I$I$I$I$@?I M$I$I"y$i$I$HhtI$I$I$I$I$I$@I$I$I$`܁II$I$I$I$I$I#oR[oFI$I$H$H$ I$O$1 0!@APQ`paq?QWGS;QEf2DEAExy  QEytҔѧQ*DEJRCj7 (ku""""""""""""""""""""""""""""""""""""""""""""""""""""""""""!C|JR)JR)J\Ҕ)JR.iJR)JRFZܣCo OQDd-hor </}ܣCoC~Shm\F(){ߔ/ҍ=hor#茌]G O)Kchz,>}R)DCCLg = YXF <[X'EK -a}hb$G/'k ^'047?~/BTjN-a%| =hoYЂ*>OB͉NKyhoWԜA~zг{ߔ1t#LC뗏.C~SX2cUдA. O[ű.WZ{ߔ>%4݆X\Rеѡ)Kҵ]4Cb= ]Ua==qb_KП= ] 9ӡ)C_Vjv'еѷ47?z\|gL}/'w'еKFeGz~נվ-s|^47?d>U89퇡-wC>= \hoS $>Q#&1a;ޱvnz;}աmy%U j Aaݰ!fQ?{{SеYbߔ y(&BG!. ۽4GG)Z^[syoT)bO_,B۷{usD-""y?y-Sе#DlJa- OꐂR2!qw6h:GhU|{е硿*&aB!B!B!B!0EB|{|2HuПQ?fzQYIj ²ߨK.OCnzJxJw؞DN&Kʲ ee.cxG֖t7xJDDDDDDDDDDDDDDDDF"""""""""Ĕ"""""""""Qqov令㡾[Rөө-F6+wƯZC|xKөӮGłdXu7qe)ii4I$I$5͉‹q$I$I$I$I$FөHI$I$ y\_AA@׊fo<ښDIeYeYc~0p,,,,i'jYeYeYcSϑLJYeYeYcu^_%/4 TR?D5Obd%#6t7^kס<2(R"?ߒz<|=Y--KcN 6if0z>=%kĦ&Z %DI %Gȑ Am Ql.;ŨoHxF=3 6T5bTО"6<41+E_ \wYjZx/Bpj=^tlj1e>LЄӒ5KŨ&[6o4 GCkGEG膩>c! U򄍬^sK ɲy4#Yu6<õB4)JX {/dXG+2bpB'hr7pxk5 KwVՉQ)D!3OŇa 5"&b_(|hB^_B`fy'Jyބ"E(bzOI IO.K.S L['bU4b2!.}Ceb|/'ZM_$Ɣ6Ľ'!: .=N)Jt1&\ҌHK__|{ߞI O.#b;y} Zw_%./ ]\>}'f$XO_Ms xK-|~k4,,,, ̍ҕ@ ,(ͼ6G6!}dYeYeYeYeYeYeYB!BDD!B!B"""!B!B!B!B x2~!B!B!B)JR)JR)JR)JR++++)YJR)JR)JR)Fž 3aÂR)JR)JR)JR!BaDD!B!B!B!B!B!B/CGN#)!B!B!Bsc!%#vWCMo!A8N-T$Xh?^ٯs'1 !0@AQPq`ap?qA 46ƯdX2+deES Q/dX#(`JRTlFQX]RѩA JRjmqҔVM,ߖjmFO:jmFO:jmFـn+_JWҾ}+_JWҾ}+_JWҾ}+_JWҾ}+_JWҾ}+_JWҾ}+_JWҾ}+_JWS<ѩtN߿VM )JR)JR)JR┥)JRE)JR)JRF7?FZ56ϡ? ^#+$DXzjmC|?Fv:"Es-g4_Fr{eSlE/iQܷW2ѩ} Ǎbx Lbizvn^+h>xCB4;T4Q\F72fqXS=;U4ΊѓZ56ϡW%a,C+4)WUi\F7iJ^4WXY6t#z:קkt4jmC|~Všft#7/Ӽl mJh>Fel5;Oӵ0 ĩR j|֍Moڝn{(Z N+'׽[7{^)KCxiO|֍Moߥ~:e uo }]v6 7^\֍MoD%6CZ6&76,N ӵE)Kͧ5Slf!< G!K:<K,QNcnӎ֍Mo^]u#t(: mP6!Ft/N 踽v6JRN+jmC|?B>m 8aQ}D%2a;揠Qaj>Uzvv)Ro\֍MoބΖ6X453zLlHzQ9녴j_Lu:& ӃP5 R>KF7f]X>c(^`F2UuF;G7_ӵ۱TCz*SlU cٗ.ӻyN׬&vkm؏<N F7D!B2!B!B!B!BpQօawNp*͆=1Nؒ]Gu1 'v6(d,62Wѩ}  x,F;w^i=D3V^UWFRWOГѩl++++++++++++++++++++++++++++++++++++++7]ӸBNJR :/Xizy=)hۃWpHE>>|#/_t1:/_|"E_a kSqBaOih-F"5lj>c  ;ƬZ(߆w}|ѩZ-w׵iRDYz/wέaWS׵VӨ~ޙX|wLLAA@<ǡT&{     7C^RAAK,}<%AA5b:6`,,yXd"/K_/K_׵_/K_u5>Jٌ,," Q0gp=|()J6xEh?kbA+ؙJL$^ڨ}0b_IT{&=1tL.=w|KѷviFlb5l*E2П؞c%Q븥eA}H{<@SgQ'P&'ٮܺ#ṧkcL4ue.߀i~aFM)P˂'{Ѹ)ɪ%;NrHArDDEr&Ѷ-!*^^Hrו. VLLSlo {Ĝu(,1 Y|L!LF/<5RT&;6+efUᢢ@i޹L?x}P˻΋Bpl?QᡫŅ(,+6Q:Dk N>Ht3$xc&B! 1_bGcqq< R7R @C\.HcqQ:#EBh$5) bb9\8 +sS.'׀aFvRHlt&:^Sb&DĤ|'ƚ,PMx>5沋ݖ"xhR)Kظd- ' \B}47eo cD>Rٴ64H]5zVlNV&bLw QבC i9aBb[hQF>}pd/)|&X@fKHV/vo*oNetОl Zq:7mE KI}L<&vRnMH-DZhx~niOJF&v (/5K/ eW锲[+z? jH;ꆚE+6GFyn$p[Mq Ӣf#mc:qBG3e?Gc +ҔѦ.BWm)}ŭG.O13Q*etg>Ȗ=v*Uৱ^~#6z=_|W5΍ބĢwux?Y |_5a|ʷ*t/5"U$>cwX\vVtcu\Пs}ބĺeha\%/\QI l\S/e1*X]X $ h5FfSv^wp? v(i  wIؑkx=HQv )E+)YE~ RvsTjvS)Elk+7o\q9%\59\G R1;UUUy+_ '''''''QEQe_/袾QE z=ll促6%7_L,,,,,,,!B!B""!B!B"" !B!BD!0]bzjab!B!B!B)JR)JR)JR)JR++++)YJR)JR)JR)Iisj)JR)JR)JR)HB!2AB"""!B&!L!B!BBNNc؞=?B!B!B!BJ^җYTa6EhVI4TQqѡ ?-!1AaQ q0@Pp`?"(fEkFk87y ?S8#%8Oڐ̾ ~Y?ث\bhF|51%VU#0Uj_B[-E1C(oYfB?rg؅r<>hԟ`(0ූExW.H[8޿iU  /K>(ʙߎ byіza^-se5d.fT~{|Gobi^Q# b^Wd'H{pˑ 7M,2p@9WO$m,;%2 \>Pv=FxZÀ|w^1MA|=rs 9CK&7@ή椵*fT~g_؟gU-?vξ'XY6u;%32A]Bú,MWߦu[?S'F+b.D'~nLP}V:(:5}V:^/ߦu['F:_/[L??ѯ}V:("O\r;w,Yܳgr;w,Yܳgr;w,Yܳgr;w,Yܳgr;w,Yܳgr;w,Yܳgr;w,Yܳgr*la9(2= emh'F:_/[L8gATkם;^vykם;^vykם;^vykם;^vykם;^vykם;^vykם;^vXKza%a9M#^/ߦu[z(_/ֵkZֵkZֵ_ ?߭kZֵkZֵkZֵkZE[R=dׇKb|wV<|%1R$?&Nxt_#؟gUo8u>GR$?&Nxt_q-bǔǔ[Xď؟gUǬr'GԹ3>^/Z#. O<7 G/u[L8DӗQ eg3 xB! )|u9eXF Y?WDX 1P‹~A-V2 R8YLUAP c-HPM嘄xWXW̝|=XRB6'~nqrO\SB +K18*͇ " )|"yw& qX3P c9̃Z쥗|4J %?иAbb/TnkXBw8ԾDHSWPXF0@pƠ!䊅J-+-L6t??/:5~%DS!Ɍ=? lO39EIfYf#5r" _>ADP+K*bzp‚ɋyNT.;T +è g>Ro2cG8-͉ ֥1X 7֘^& _r=\ ai^1;ԧ[Q/*EP0EalnO5J^/U\%LQWLai'~nqp||w LLc˃M3ˈK+RU e8<2a*e@Ȁͨς1E1`uUɀpHIBvr9*+v8k6±pJ\lF>pl{ ob0FN)^oZ(9|f ^˂a+lO39߆gNS1R 9gKBP0ՁB X gqKyR14T2&*+Vgmn(Xp8rH!S8זҿ0 }&H1`TZ;(@M_>He 2Ƀi\}"ѯ@{L6PUjA^Qə^>b|wVȝ3:r` 90ȹF!*h̸ Fet.j9 F7Nm|WfȰ7oN>DL6^.p"Zl3v\Ů aỵgÉq!fOO̝|yC./&Z22 Q\p <:`|}V:=c:}u@v(:x+aj4&PπJ˶5Z[/S:ڱE\qK+pbK f2.GEPȏxG&XzdO3'F:_/ QT8e1 @ݡlO39aD" ԃSb is.8l-\6Y2)X49Cb}&%[YqD0!SjAldÃ`8LVt`y,G?  $;?_2tkå s`:{8\q=@0J>b|wvȝ:#2%4WDf.lBjR0 yEw,zOs6JT;1s7Vo<z ogѯ*93L#2[L8Dӗ׶q"lA,f\4kEU,'\(̃3^bK8r51abDw2BG^.i :Þ0#WR.6D#geѯ\ n%"!BY gub&QlO39ӗ&-#cAq + _;Ndg;7]n&[y Zxq.+/s4_qL\tسHA U|F9r@lepjQ//:5~CX@LKd% Q™8[L8D8uGLo9?Y5l.A.ɗqŬa`8 昿d[M|a. $5ގ= )aM{0n;L=f;Ǥvo zS`C1TvKQj__ѯjCDVi +Un|s'~nqíY sʟ$o, &@b$vpeb_9g~+KLϔK(b,JqT8q\l0]C?'F:_/¡hRLЇ<5fR+'~nqé?3C5-sJ+AZXjۼ*6J5%kB@-zAJSR'2MZ%q6INBwuHHc0K^($2/.ͧ DҥG.z#/Cr`pu|c뉉0嗊/:5~P95K,V9)x1U>;ΫsXN~oD(Pi.1[aΆ,JItó'lp ,)kpsTek."b08Ϊ;kz`׮fɆZQ0rCԎH _i_tCרI.nq0 _2tkå+^,Np>b|wVȝ3:r`S̋KD92!&A>[SF c_/iJ/H hbnZHn a~F8h hWVl}Eplj_X'Ɂr Hry{Kt,8[kɋ(և$sɤ >"K2Yz;i\Y+WL^o[7`1c[)W'~nqpUR!y v4 [¡7-oբӜ-+Rc-WXs%GX2?*q Pq^ rQ6VR@`h(%#ťp`L| "* `\(oxzߦu[z"t{|YAX7r)@yQT(rh?1XA`Y`"*TiMsNSKKKHLϋKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKIґtԶiSj()sO*@,fxjWQhFm#X49CC"-ʥY S~W g+D'+(1{+zoO2tkå ډk;Ϋs -s5:.Ceg*16[3ʝjiłL<$l)s};ws};ws};ws};ws};/=(iyeGR 3WgJyQE9p"`>s72?[R3[chezG?&ju㌾8(j\>cl|L!O jBĂ+924G%[O2tkå*YL=V:+E@K@"ۜȘm篜UGǞ E(Œ_'lN؝;bv'lN؝;#vG쏩(t'kם;^vyk0QI[Uv'lN؝;bvGԡ,j4Vsox`EQD1ɔT '= il v5+-5Bʅ9l%Lv@ mBcng/b愂B/&Nxt_3k~b|wVUZk=e.=>CYhW߆j+_g~󿓩^]Õ}i3GĖMu`pBJ2.m.H YŇ CʏtWB63 .[ @i\pc3pg&^60}L8fX/:5؟gUƹ,J("Vt(++y/~7Ϙs%lp9(*9=O:9 .券r#s_shuEy0)!l](J]Wwbxs4 1bA<3̤Su^/ߦu[+M􅂮YM\^ >>c~/~C e?ّyg `C82EP? 9XLFs+`pP~;#Qbhd~s&pp!pV7XBẙ _fF̍26`l*8t%2tkå^D*|_ d lRJ -z(9@P5;'Qlّ#fF̍26xBfF̍2u@nK>c~/~iL`X߹ۿs~nV值3#W&d>- alG40""՘`[q~`};vs>`}XG@fWM3';r5aِ[X 6 Xa/ q(*q"4X%KI,^pIx>SϹ}'QGuI}'QGuI}&?!XUs7:5P/b"Ch/0_''=2Oѣ2o*m(Z9S+scAa:O>N:O>N:O>N:O>N:Od51??P=Yr'tI}'I'tI}'I'tH6=a>+^ZEq#E&{`.1p[$XL߉5[S)Mǃ 0`6[$8PaH^oVa"JYj Oq 1Gwg]5%ÃrSӈXX+ܟ_w~/ |7hj&CiCmLqG2e[AI4+Qх5E.p. ;LOsÍ+1?+dR*.قm )Ri;HE ]KbKl@@e0Fb .W[fW15a(F%"\ y7ʫ #_dwW %"]\hK ĤKsTab9Hqѥ|b7<*ŜȨswAGoѯKK&p)̧A71QazF4؊7 { PLy̳ȸ-k|~į&Ss,Zit=(J?Q4 ~@ϼƹXZXWe.TR6t}Fs.+|Y YQN:0H*|HzvTAdiɈmc2W:7 B(oAp%l?φNxt_r/m@F^K34wKdoqUcӜ+X"Iϝ?t&[(e{`<|dKE%Ӡ]ؿ_ʩiAi&q[VxfX)ej斛X.<9&o@/ș!<5q*aLhI%EѾ% *1PW,bb eѯTz/QRi`5Y*/&;WH8&XpCWW%Q&N'=-ۙY̚ 4#f1Kr\,1M\k%,o=hjso.&S7uU,c̣W:hfhV1F,㈁P8%c1"C|dׇKcMڍ0 & e~X!SP'# ~% 2z B3jmKts7((܊P _ҏ d[:#\eE*Jx|,fun6>yr>9< J\8rmc,י~<خYeh|/rgh_'F:/Uqs4|(QbsN*}rO_Idk}ɌyP_(V/ij+>圛~fO3#I680Y֌5 F/(0r*|v7@Z͟ Xa#?K=lnK %^YxK/ aƈIneyي7os?g7 2 e6)usXyxEW-:>7ਨt8QK~? |fd!֪ 2j?,vi%`%c̹u@-|{=0>!p1g[9#@uTQ[2x䟵K"U[w<vJOpLHSn_c*Sf &t,=dQ|1@'AJ/ɔ@jsgFΉyFf &bNIV5ƳQ+t+Uz Զbeπ%%W a*#8U+*K"7 ߃ W!Tͺ_G,wio(f`eqzsM1.[ȂsQJJ>|2tkåYEe|將>>RAc3H,-,& > 5kʥo Q%lўA3?Jтr zN;$s%JcJ~RN~/3+}R.֞[`lsM isIC/rp `F.DUB Ud?(s^(%9)@//J )U0]۾bƢ/9AĺY. !eKѥ% 싩KO 3A|O¤"?R3J_49јg8c w3.>RbJH؁x9p5j=8 P>:5]P S%ρ*nΛ#fCDU#N칑#+V rLxPKsЏG 8Ĥ _9>B Rx6P ?H<re\  j8È(Sr}0{m/cp%pe~~33CNQ (#W[1!=r{At{AuBu,7Qppsg m}@pk(,rai򄚻1F%꜂ƠwÃ0ߪe?tIaKtTѯm6S실nX/*^l\̃RAh )s-; 06}a=1Jlsk*5 0KE(E>J6Z j,rw[ As޸@ryD[8wpQX>aD\Q9~,2CʕWw f F\{ͮhzKZز\|jׁ9^eEy2%.IlN 4uEd&?ӟ]/imp KKgã/A2 *;pE\j\G!G Z1t!kr _ hLu|E>c>*MBImJ\uXX9A˛)VZJ80 "&S'o)|)^p1i`5s鉃-^chr2 K)6&ڕ)vGl HXu)&lW!n."__}YiKx聏r+tr$ K"F@:?8%KL&g5LE2Gx5[t^?$zB QHٌtD5my\O3Z1zҍ|⦸ ܼ9y"![iL1GhTÂ` 2Qh팃 !Np s+OyVkR)sCR\ms)u9p%$pvmŽSF,-WsRX _N'9/"DDiate0եcCQ͊]VgS3+\e5l:^OO<gp<>`!CaGG9a)CC#% /؏ Tl',`"-U|Ø;cȯܥpㄯ"q[ogDfPzLM\3܁hcs0>= eZEjNB5ByH<Q%y&4eD܎,PYpy89O|F/8ڔ!t5h 0CR/2-+c*M+Iʴ|f1&gON;o&y2 3|´i$CH1T:LyL,_qXc<$ĸFJ)~{jO1+L%< %,8A1!:|Ɯ-*6 Z@ (LHh#oԆF Ɉ8C#!{b:5 WrrA,ت(4k+6i<ȊTQusN bsT{E+JzS"v6117ǏSOTY, [|C>&Ppd9TPqS8ߚ>% A/Կ/^Wef z~Ik?J,ؽ{ A4b^8 < %Ă%5~9|ŗ9c*ȸq)h ؕ lL@e,\^8-%(hDBټEeYlw]L(pY lX_\Fo1@5JQJ[z^XJ$P898kъ`3B&@@0V(!!l QJl\A1T J[/fy Jnjha3집pS2[xZ4 br%|@TeAKj_J=Ơ@g0^7U/Ŀbr:|:pfD X/z@>*wmal(<ي<̩PsbT\z^NqG1aEBEH r {6/-Wʸ+f8o&(\}ˊ,1+`\.L Ic`nZtCs(\ ?n0-jabJZ(Qq\LۊHCQZU޷g9P| iQUu|X oM ` 5Eȗ%隠4SEp9.%#W*ujM-W`UKib[o^GiJJT^A3`C -t K)Pb+<|#̐+_ׂfTT sP'1#,ibNԟO&Q QE`x8M*Q*6P0qԂVoOK$.gasAJ9P. f7eLtck&2nI62ʮRi%Ɵ[:1hk~36Yݔ&ZD|3z`?2 zx~ DRdd2ܥW\ a_^q6Jo+ɉ+7 `G44UK6+Cӝ`U{ 2ș99^a߹6مxK]aMqE3L@n(0o7krb|mKpZ uLЉNQXL0q}JbQrΩZ 94>%0m9 {pH$jr7~9z\|q9-Yۃ \9*"9Z^ 1 e/ibuԇ7Q>q0'h_hi)(i+!" \WZXL 0|Px8[&xNZn q%QCstZO&S3Q';d34$XKG3G$i$݂1de# NA\m9˜~QuTa_``5%%W )/ %Ǩs>ojQp f%g`3#n- M#c} %TrcrƑ]pS%o7dj&5͋Y>41D*hF&eY+hF-OKU1yQq`bNlSQѪ^~]R_""UD@5*2(/ŸH?f( 0c Ei`葄 %Pc|~cLN#ؘ֚oqξf./Bi3f'+6"}Amf"ǒţ˓) crUB`LHIZ%<|ਖ਼ (/<»kƒs6OcLL.5 Ԋ-7ģb1rl9#rXlrf`s2O1c=R#" ZXlJ^:La:PAbe2%Pn_OA$ÅJF 8 DA32?ȁzPy>5X<E9F6x H 3~r| UlJHV/0]@cPH6^O.)ft:/xs2d80\8*dg6}WW^ssnuyuu/LSN֝;fv쿹qn~|RPbqʐWшNl2:r;~h "q_5@t^?q~__-._F5F'V)\n:< ҾZUL^ltgZbTE/Ugh;_viӵkN;_viӵkN;_viӵkN;_wwwwwwwwwo{ϩ>>w>{>~>}GK>y>y>y>y>y>y>i?;;;;;;;;>[w>}N}N}N}N}N}N}N}N}N}N}N}N}N}N}N}N}N}N}N}N}N}N}N}N}N}N}LFXjPݜcwCR2.b9jy7 18$KemJ1" 0wwwwwwwwwwwwwwwwwwwwwwwwwwl&؛?bl&؛?bl&؛?bl}cM6>gM6~gM6>g?d&6~ɳMmod&6vbl&؛?bl&؛?bl&؛?bl&؛?bl&؛?bl&؛?blc0SKpiDA!dكyJNl}"Kaaf'&^W2YPBjʅ夦JEU\9E=fײm{&ײm{&ײm{&ײm{&ײm{&ײm{&ײm{&ײm{&ײm{&ײm{&ײm{&ײm{&ײm{&o{o{o{ C?t}tq:l||||||||y7No{o{o{o{o{o{o{o{o{o{o{o{oM6o{!;-(b97 Bj,YƟq3}CB@;tAAesÀ-@|+D9_KLFo{o{o{o{o{o{o{o{o{o{o{o{o{Sw-hh85C\xOdLQ RgH⣞)^ZJ h~zj9ש|nٙ,1L@0oʆ^ *yKiP2'# ]w,Up/Sw%cG #ooZ3oC9|\2b_Xb! kq8ug?hardinfo2-hardinfo2-1331e88/pixmaps/bg3_light.jpg000066400000000000000000001632301474767047500215750ustar00rootroot00000000000000JFIFHH ExifII*bj(1 r2iHHGIMP 2.10.302024:08:25 15:26:09  JFIFC    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?(aEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPE(fH\?Do EL}uR>]&CG@7Ro_Z]&1'1K5[āMfȥi((((((((((()-#} $~ϸ?*ФEPPǤ zKa'iSZ5Ғ1րE[迭= UZE[迭= UZE[迭= U46rBQE(((()-#} -'CG ?*Фu4u=%vMEw@xO³GkGJU'@.M-46xi6h8ȢzR0($UYV!P?/Sչ5 )Cqڡ U*c?;)斀 ( ( ( ( FKHt(KIPQCg??hv!Aڔ`sўs@zKKx_h?շZZG? -#\4@KsIiG'bQȥEQE F`I)j=~TZr'˱bsW.R#t|6}{RziH` L`)TၠE(R@ EFd= SA0R7?J?*YOZiA@PǤԧ 梻IݠfVߍii+4oƮ1AP#^JmQmP2:h[|Th[|TjmQmPt G'G"1Iv P8ܿ)T2ےqajbqj9AbFi\,cld ]b 8MP EP"E- n QJN4R(*I#0;2 j8ƙ!vB#NnZvQ&CSANRԌ:c6@ITVFlmڇ_S[Qn$͎j/R[$(.(`0RӼߝR@dZ$!ʞ%Ccj5N&,XJZFR=EXt Uq!O*ƹzS0ǩ-3 jko>(A19%6\(^UcO JS@M)dS3=7R[l{TZPjY|vC/Fu ~֣BҪɨqHE?*_ɡaL {' [ܴ2d򧨠y5s숑ެe9C$)+=(P#{d`wUxc"zw&B=*:|t}S2*Cu6iAץK:N^--TUQEB`ԂİȗZA֮D~QIZtGgoƬ$/ޜ}5P,ǀqOVIՙbdtE I~T O$0lDZ@I9vKJ |g3)îEUf8r)\,d'<#;GH5VYoSUyۓ좉:/hS84YO @!JQK0h TR#&*4'ILaES(zx~uWmbDXxຏƳ1F(l G_ΥPT cސA=S70jacތQp6ZQ*u1EBA "`|QԯbMC1@Vҫ)8UA"= skgO͈+p~"hӏB{3̻0+^x==K9/9p*QJA`P.zM$#@I$sw,{h(((W ՍSF)ѽ??:1E??:7UqF( 7http://ns.adobe.com/xap/1.0/ ICC_PROFILElcms0mntrRGB XYZ  $acspAPPL-lcms desc @cprt`6wtptchad,rXYZbXYZgXYZrTRC gTRC bTRC chrm4$dmndX$dmdd|$mluc enUS$GIMP built-in sRGBmluc enUSPublic DomainXYZ -sf32 B%nXYZ o8XYZ $XYZ bparaff Y [chrmT|L&g\mluc enUSGIMPmluc enUSsRGBC     C     TXM-"*V $AmhAUjV I$ k{@U+,$I$SRHlltYIIIbjI&AjJ>a873$SؕӌIH҄ӌIHҽ%@>]8h+.`JƕJN0tZc%cJs@˧:-1}9ҠӌHc%cJs@˧:-1̂$HI@$H$H A$@$  mn+Wӝ*>]8h3 JƕJN0tZ2ִ.@ N di_NttE)3k=Ue@敎PXҾPF2R5|T 敎PXҾP"Rɖ>]8hJF+:1}9ҠԂA"$R(N0tZ1{碢XTHJN di_Nt+dUJӌdk^PfXH  $P|ycT2V4:TM-ӌdk^ ,!dX+:1}9Ҡ5-U@SKftE)׼z&E TT'V:u@c%cJs@BWKeZH UF2R5t d4*AB愨TDk` di_Nt(* ί(N0tZ1{sP*(.jAIQirIPL+Ăt\d3)+Wӝ*,-%ί47uy@|qьk=3Bj3,XX3 + %@N*䥗ҖR31[*KJƕJ i(eK1ʚJu3ӌdk^\$B ,b fnT's_Llyiku$ΖkeJc%cJs@Ec;.V;\֭(N0tZ1{TȱAR I8 !@YkyɛUP^BeP ٽL@c%cJs@E"S)*Qo7K5i@|qьk=T$$6$ȡ`J8?.\;wXL(H722V4:TX\ hIVZӌdk^$T*XT ̸%@rGIѩyrfP:W2E$٭DJƕJ @73[Ft>]8hJFT*T%BLzNO(]8hJF! $ BL7'S93jce,iAY)EJL@ ƕk@$ di_NtAbi@|qьk= %Q4T*ykK BB( e&PQiZ$+Wӝ*,,R i hF2R5|T*QT@*,Y߼V^8bg -FyDPSH΀3)$RXHX涨 2V4:TXZII$IZҀtE)׾z*eH,X%@xz3pnxXZ1]m2Q1̛a!`h(  di_Nt$ARŨZKtE)׾z*J(T P:[rV/e\yܹNjn2e2UuNt $ XJƕJ I*I%"M-ӌdk^fX̒ygwֽ֦3n1;6mJe"(:-2%{ lQ`jy`VW1}9Ҡ"H ȫ[4˧:-HֽPTJ4%@Q>|َo5żcxk*ƼΘ򖤂Ծt t:O48={@ 2V4:TX\$.V hN0tZ1{碠ATȒ Kqg[yϯy9^/0Ek4S7e/!|AW)z@ezJƕJ iR,+V˧:-HֽP/=ɾhytvvsZ j@"Isg.xxν c%cJs@E SAifӌdk^imuT~|98dLg%5MS6P!)u|ٗ=JY[9sS &c%cJs@EVBR,F2R5|T=8闢ZR[bL hn*eq=LjR[2+ ^1}9Ҡ"2V]KS|qьk:G.l.S\uΚ_O,+ 2*z,Fvgo91@hzJƕJ b Y242h.`c%"x̚>7 ^ *ofs&3,a$%6yY^1}9Ҡ"jL`HYԈV|qќa'sy` E(fTDpoK@I(РT9 nzUαT3X+Wӝ* 0>]8hfzϛT(QQM1 {mRD zQPAZ8,۫䠊ID4: J_P )AC0Ah+Ε J˧:-Gūb 9䘽a]@*}VpAAg\iotX),^0j>6s Dw|pGAE5̠Xߎ,u: R XAbօL}9Ҡ'EN㮹"edrG)cZ,^0j@'7μ:˃@J ZȎ=c:}wbRjS. Mg.x${,+ΕO%3jRI 5f59/@ktGVͩZ0pa(թR 3:[6i*igNz&o,ˏۯ=uyi`@],4:TO<;;*9f|*h^1 Zս)YڝqfelPٹw7[I""R6==3fYBSH9id,+ΕO>@tNxo^sfXH /W0Հ+62y뎱:6z&XZν5WlH흞N|:X&ʘ?kD(Vwz1m@ H͖YWӝ*ǍgK=v ,X3SJ j線/$cbtU椀W6^>sY6Yfi_NtL H Cǚ-⽢MA%-˚fTω,ZV*uս%L5pRz1ÍfZf<4@E;g/.] a,͖YWӝ*Bd`````bADAR 4/nRwgi8ڲ6b[IeV4̽Z&84r $6:{́31ʲLʀ8uI NS*f\؃K3*hAR *zyP'OIm E-btILZ" .h&˱4$jy1͞]Yî,ud$\(i=9-k3"ƅJhAP\FLlxټծ)&"LMSBIZ:X&V@ "V_6 J]O#3̀P>^ ^Eԙ*P( J;=}g΀}+%e & 5\ݻ:KKDբ D@ |2]t44 ܒN #؊kN[8lrX" JLPE"` {:e,Uj`( @@G5[x T3݌NzZKB+^yT01s}]M( R@)F@ǡҀ.YxX@ dIe7eUVQ%* V'ءB 6oAN~fu(4 @%KKy%fK- AfU4I,ZJƞ~eNy,,ADc2ֶmdjصHR!H I X'V\we-VE+TۍcPh͚JL^_*g:k`s^hVGkvPbXvn2h"@$k4ŖDi$DWPJ*R/r[9}T6x]3 $yl'uIZK2YRMZ$Z DAH*RHRI1jO>H.@&>oP'7I&^.SYrIPȠ[Ѱ 5-%A5h51$*TBZ.NrK(I9l] .q0Π9 P$H $ u4$]/si%vq@IA@h}Fw4-rACٔQ@fy @ H ך&$܀\ϖ5P >  ,}67ir-e7ǹ `B 4zY׵  y6IpI 0 1!03@2P"A#`p4$BE/5YnB5 ԹrT(^z.pZZZZFk B%r7H*8LE0 +)wX/R.\ഴ$BQ00tJ,B6|?KH"H*8LE0 M#;sPnh% QD8LDA(gp MF=G3rtb<b<b<b<b<%IRT%IR%IRT%IRT%IR%IRT%IRT%IR%IRT%IRT%IR%IRT%IRT%IR%IRT%K.Rrx}G3H              2sX3g9?nzhT4* CBPШhT4* CBPШhT4* CBPШhT4* CBPШhT4* CBPШhT4* CBPШhT4* CBPШ9w gpr w3X3g9T3g I$y9ʠܰ>y>߽PnXor 3b߽PnXoarNw *rNID9Tit:o\-:8,w3TNw *rEX9_#>Aq83g ޢ 'g݈;sA`|(9dj ^S1gpϷT^w *rx뻑],ڣA?p]\J]Dwow *rxwr9v3Qܷuf\b1ʪȬVW i£]O* ܢf&Nc;sA`9Yr*j촴v/)1HjCj5 t}Z&(f%UzTIS ܢd卉W;sA`(8E"2WnK$ ʺ2rp'S-}Qc뎬-B)tlE*-rxw(rK.D؏3g9T¹2VFkT3K4A}gWM)*+ވb9PGbܰ 2ѥ+sQw *rDު"flEi+VԩTsYԕT]Q^MBDA>G3 ND56*N$Qh傥K(;'W.kkȏը7,7r'+;sA`|93hەZSTùOeȽG3 D;U`u:.jMN1!/Eނ}r^]oTùE\IbAa;Ngpr7,jsSiGQ -?]Kb/M]GzQ ../.$hGgw *rvj]K}\Z8xϽFbT"ܞ{Aa;A6gpr7,rfxEzޕZ*"*79?FM5jUQ2"y9ʠܰ>ʤbz1\R|.*=6E.,ùDͪZXZ"@W~#UQ6wMURQ-+m>T-;BUd'׾&H..G%[r4Ц{}rxw(Iqqx"wJflB:i*QQes]5G;R\O}yʛmER7:M=czQsb5DfuueWRZ8 r*IM_j=;%﷎*NQz懍zm* ܢzx3g9T8v"TsicH2RjUR6ԉ#%[" Aa;N\n#UN)ujSQaDOfH(NKùD.G3 J,>{>{>{>{>{>{>{>{>{>{_9rF8\0*TڽWaUW{WPnXoI$ly9ʠܒguވnI\$ OM/a^ZBN, AGawb<0ЭzDe|-I$I$I$I$I$I$I$I$I$Jubr]J_lQ{.tV-fJ-E uQVݨ7,7y9 K^-s^eLK5AAA!!!?AA/-N!A?$ rTI#oqۨPrsQRuѳw 'J ѣ=G;+xK!PO-Gn]DrTeڜw* gpróVGMx-㵃W?؃$ֶ1]eT;X3g# ON%ovMҷF)mlӆ^%v7e^^^^9dnXo8E)7RjԹn н н н н н н н н н rʷDKн н н н н L;}&szzzzzz ĹҔH#b*` SEM4TSEM4TQ̴nXo^'j9:LDjڵ 42j\*h*h*h*h*9x)MU4TSEM4TSEM4TSIL+vλ賍%4TSEM4TSEM4TQiva=ڊ)MYLcNMwTʫmXڬ7,7,ahr)ԉ4)}"ku;+j@P;\͓ ƺ 3v%6A*F>d1I[9S$Vprp[ݵr4ZW(-oiy2ET^ Ю%x*}i%xoq[7AiiMF S& q~÷7WKAi7AnLo~%(-y5Kj'%rx}B]Bv}}h`TTڦ0}%a`P}o#XnXo"b ?j}nQlAT܎%J5h 4hi٦:.j'nܰcERAqqTZ*%'m?ni}s 'SJS主*XW(G5APVJ"C]u; SNާw+ -f H.=.6^U\rDsmV}Tw;)[OFikXAj2Iɴ^*3h1APTڟaލ>_qERJZv"wk k1) QqZ*{FWOK裹Ozlv|ZB੩)a|Q`)FTP1et%>/=p;UFqvUU\\NpZZ*tMZp{(G5>OF#}v0v2EuJ1T ^򠩓 g/tjq7F/~K"8I. K rsR= |KH Mpi9#jڂ-gTA\\#$^=z.H  3Z$bk骔hWb*m˾}\cETxWTLX9VUJbUƍGj5Gz ܮHdc(42sF{\rRiS6ޟVwQjZ`ʤn!HW-૊Wh> w_Gp,VUђF\3)m,NTK/ RB!RHs凭YV}GbfO|+Ȯ쳣B줿'%čF`FvWb)3w?MʢZ6ȃFKf I Zakے"#T]>?ޗQaS~{ȩH=G Q=6vIXVv1!MA\R#[""*e9PpIɅ\Vu΂ U /;>L 0 IM;b) E?Ȏ <1k *|ҡN>3 6}7R_€$3W)Ώ|uj'Qi)i(RQ!]ձVRZpPF*qQ1lY8$PBvH.$S\JgMe*\(JS C]?MSJ%T;+%L*j Ϝ䜹4Ԥ6W/y/_A=*&LX -A&LUkНM7.EQ$F֋Ԙ.%! m@{X_A=J*Z+RPF`I'b.XbAp\L%%eGJc\zQG r߲"-'R4xknNsW٥5Q)&%ά" #TyKDUB;.H*/C W"fFRC,FPGOjiof9HrhWJ[bN \/qCHZh", ۂ#|I/T'6XҲn֛Wd+8_/q ZYErR%UfצR\HZ-TY F3sFZԑ*?iS=Vlm8nu2{֣CmwJDrСJ #('mnknؒ% \2U\ϯjjjk)O>Sϔ>]C>]C>eCT>eC>mS>mS>mS>mS>mS>]S>]S>]S>UST>]CT>UC@>t@>t@>t@>t@>t|7@*} ztޜ%xTӀ;ޝ>bޛȩЫ*wj(8E6SQwqn͡dtY;EqAnM^;%CT@;lx#hc x t1Nf1Nyhc h$l͡tY:C tY:Cyж#h[vNMt:O΃ M`^:5 tY: 406dTA6&а/ {jQ,ȩ" Q.m aS:T'1chCpY:T}ƧeAmn "Zm I*mhTqUEo;f`m g$hNQ-o7dQxCFqqǦqqqqqwqqt6888㏿⸢((J(((((((EQEQE]ILp(sݑ 0/SGO@h9к\vaN.И 8['%4QElCt (17y\6lȡ0l r'sVM~or6` =P~aˋӐ`38_<'38DQA8G@<]Pw)qqqqqqv]vG\qpqǻqqqqqqq ?0!2@ 01Pq"AQ`apBRb?ǟ@QhҲZ -^kJ-J1ZyJ-J)PxCVjVj!kUB6kmV燞xyfkUB6k|2!R!R!R!R!R!R!R!R!R!R!R)R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R"6k|zϯ[[{}x޳EmVY込Zmoq+B"6k|zϯ[[{cjh†ڭ=)^j 2 l5kU_q؎ja.b്zYոDb dZmo\ moMpIQLmV펓i;>)\uakU/v|agPZmoJ\mgc4ZmoIyOQikU: mVզTmoH+t,6 5!kUGÅmV?BbևXڭ= ^hEmV g~,}K:ޒ;_e;i99pqFڊ)W*q[[{]9DXb0 iRg&ZmoIz vApQP(mqN љh[[{Қ\MAve@v¾tq*6k|zQL=0x`:)!\IҋXڭ=LX\[h.[[8*R*R+"*R*R*R*R*R*R*R*R*R*R*R*R*R*R*R*R*R)6k{f !p(+'nl*mVZ`Z1\=ibveQkU?"*-%W΍XN+Zmox# tH1SŬmV~z-a98bZmouJ z ?+UY):s8v_ V6-fI,ޠ]\'F/7 m4"6jk5vek;cc|ыXګb ƅ,pK7Ɩ:!kU5LSᥚehgjkU7GkSj G 1SkPLj Br1BʄO}mEm8YAYNTp`X= ǃ%t vPdc akY0Y2Tf9Q40YS2SRw ]\T(SťʋNQˀCa9EsQ(Rf#.\.`˗1id5s%T|wD&%˕0"\+Z pkd0 glX.QĿ;oPg+?Ph(gSaE|!s5ĹYu yNe| ځ$(^;/\TZr/\Dގ7Y[_4ڋQhPVor2/Ƌ;,eYQh?ͥ+8)׊rs C* sYQ'5u1s- !3ŧF_~2"*!)O<'" )sS_ND\oρ )̇;8~xZep#E5N8m, u!p p/>9t]Et]Et]Et]EtYgY,?şc7MS~)ߋ5Ζ?1]? Y`q1qJ} <'x0!wgF!;E=q/ձ N-!1AQa 0q@P`p?!E#!-h4؞!Ȥ8jŪ9|Cfm$6ObGۧWVZ'9gIlH@u3߃sɏaxRjJOG9Il=df #4~Y_a%塓aBv3߃cX^Տ1Xa%c7k0M1TcՏ1XaGc7kˮБa%辵1O3`M~5c7ьՇ#v39fs3g39fs3g39fs3g g39fs3g3939fs3g399fs3r|_F3W bh~\^L,rp~ '~ '~ '~ '~ '~ 'ំ~ '~ '~ '~ '~ '~ '~ '~ '_z13z{0@z1#:f0@$:hc5t7FW8]tWd7YgNE.ñ- CZfmkcDc5t7?6PG2,%cBK3#Grײ`52eLf:fD/&]؆i2hp? }$L;/c5t7H Cv2o\ȺDi'+؁(,4 &3WA2 !D$ݡ67dKW-L Y9Fk LD+hcYjۉ_e00VD" Ehc5t)cw2+hGa&hyBUE.щkkQݤ< ^h,w *ۡ!! ep<3+#IZͮ;qf`aH"n$DVegKr2ؖ\" (x&tdt$AGHn0 w2es>|! 9 6OQZ 4aɯSXI h!Aqti]gL`5$Օ"!B!4;L(j4!=ϥEэeǹ}``gLCR4-ĥEqKE/4;1b‘/Jm6'[m@K?ȈoR&1g }’A)0gh1 隆hK]QL(R\I}_wfgֆq+,kBH'u~ljr^kp51tP "c5t7B=$ʽ;9$:ibGw# ;"ر _Zbaܾ\7tBMu5SLְޮ*ޝ3WA3yt?$"ⱹk5(dπzDKC,;"ˤA<FmaC_e0bX)r6챚 隦Y4,+eh,q#11J.KҼEDc!'`5{|BvSYƾ`b^:!]tVOyQxbޢ1xBBE&N_gҘmC}_e0:&E]3WA3tBJoy煊Wա!C`?Lީ$z$_e00J՗egL]/܈Sȭ =/#v/b4+d%(4CaN%}3M}òT챚 ˪UHv; PiH)l'xÊ5.;v}ZGd"`꞉)2{h2HN X]tcU$Y,3B`=5JY9q"dYPsye?E }qC_e00* GcXc5t7ZUVXyqF" h _0%XkZHcf``6ȞƱ챚 雬ԉH5jcD N㐞W5+D7i5}5htgG^%or""bF]3WA3vd|IIPUɄ^CdMCd޹teM"8Gؿ<Ub-O1F`aH D2챚 零O-ditHUyA sqaXk+k}}64~&`aԡ8brL OagL^ԉ:@bHt- #֨aΣ,D3þй FdhC`O zi(j3oj9Ķ-y| ISij*dN<] \:[ɟRrI鞞Nz]tupm32 {6JjwTM7͏-e(dXEzC)!%TZ:f6[B %ΆAHӌR!!bL]xcxyb`@1b$LɮN#*jb.ɸFH8--------------------------------------؋lf45tIC A w?ٯMf%K+ (sћX3qNXc7E 3L0ٖ#KCdp/#} _D6G!!8ľ%X&lllllllll#dq/} F,2g&9zXTo:7BE": DՂ{ƿPHf՛L@@In GІ"%;/ v4г[ࠎCЉLlhYkj{S\=./7o1WwX2}jflI5}oMG31.Tφ1ٮ ~Is!YGfimz>yBDgMs]`cy1<ǘ rc(N7j1w97jXakI<ǜcy1<ǜcy9<ǘT˷fy1<ǘcyK<<gcy1<ǘ KCTjƒ\!s Uɹt1hGyDr#G"9ȎD:35b!& FLp&_EdNq!+/,E ЋC1o˻a 'a裯Ф/5c ˓Hx#982&`d HW gj6xi&B1ܞ7"6&G-Fqin4xf޶шߦdMy%OrD&L"{ɓI{+ma|1._4@~\u1/ O2ҧ/D:\&~GSυX`L䷬E&F%x0]!o7? kx1ss; ھU& T:1(5EЀ8Yϓ Ob<t7M:u@74.*)0=IlIYH]PD{tGQB Qwq75*l~ٲ ㇑ 2M<>G}ϱ˒ ^D{F z]czg!U灰:! *Si)n "2r4B!YYȨe&"M4oߋFƾka"Xf( HALKs"n%0NG hH{on{hNVOQ+{:cӒ0g-٭_Ʊbb:&01-oH0(&qqP+F9-$" J} d;]`p+1#I[ t#'_›r ' d˼C.6%&okg$W"m &La&݅T$;F9r4ސaP$OV5"$.ؑ.nma"Nn9=KIb?p9l1N&x5OD%&hI>I2ŏ2QrH,P I$JK$7OaAk",Y01-Eñ/Pn9HfsiYEȻ,k$pNt՞D$J y}F>2'"f^PIQ;?t7R/b!&)|D"IBZ.UxCjtAtNhpK"!*CQqbx!k%ɸQ%H,GA!)bD!|L.53)Gbc繘}-F4**@qsA(m˒hŦ7Sv}=/Y9勶M4j.2~vXƕEfQ1I A#P!#+PV7qSy5ŋZX&Ź;9H+̋7%˃2B4ǯ'TK(/ ]Wi:&" hjƿ251tSypdbṮULiԵ.cuhڄ HQīVWe&QX?flgU8B ER$2̄p@{I1iiuڭ)Dk ۔ƗcKiC 1>AQBYFC%WCX|$B'9Wξuf2$ _k$G8p#G8p#G8p#G @:BB @!: @dd{$%D95)ߦE <^ww$H"D$H"D$H"D$H"D$L"D$H"D$H"D$H"D nRBU11v$Pe`I$H"D$H"D$H"D @ @ @ @ @ @ @.LQԒ1d}-O @ @ @'\(F[#5xNql0K!j~~K]MT6#>qBܗǔ>&/I4O{_Y mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm1mmmmmmmmmmmmmmmmmm⧈ŶmmmmmmmmmmmmmmmmmT6ҌնmmmmmmmmmmmmmmmmԹImmmmmmmmmmmmmmmbI5ߥmmmmmmmmmmmmmmmyII'mڵmmmmmmmmmmmmmmmm$mmڵmmmmmmmmmmmmmmme$mmmڵmmmmmmmmmmmmmmme.mmmڵmmmmmmmmmmmmmmmu&mmmڵmmmmmmmmmmmmmmme&mmmڵmmmmmmmmmmmmmmme&mmmڵmmmmmmm}mmmmmmme&mmmڵA"RH)PH($JE $K6mmmmmmme&mmmڵ@mmmmmmme&mmmڵ$4$i$ɤM%Immmmmmmm&mmmڵmmmMmmm6mmmmmmme&mmMڵmmmmmmm6mmmmmmme&m޲ ڵmmmmmmm6mmmmmmme&mTjMڵo߻Mmmmm6mmmmmmme&mmmڵzBo"mmmm6mmmmmmme&mm ڵ^mcEmmmmq6mmmmmmmm&mm ڵ6M)mmm6mmmmmmm}&m=mڵ66mmmm[mmmmmmm}&mAڵI--Ammmo0[mmmmmmmm&m&yFڵC7mmmq_2mmmmmmm&m|ڵ2(\NKmm0emmmmmmm&m1Mڵ+vt@mmI6=6mmmmmm}&moMڵv7mmm mmmmmmm}&mk;jڵo߶gXmmmo;m&2mmmmmmm&m[[4Mڵm{e|mmmXm4Bfmmmmmmm&mQςmڵm+bΝmme_m6$[Mcmmmmmmm&m%Ͷڵmp|jm$mmrm6DKe*mmmmmm&m8]hMڵmhmm3xmIe:mmmmm}&m ]Mڵmmm۲ mdI$MmmOm}&mMڵmۛo6ömmT$m$I$-mmdmm&mmڵmgazmmtm$I$Mmm(I_mm&m#_Mڵmtmmmvm$I$-mmEH3me&m@Spmڵmn]Aimmܭ#m$I$-mq^Ime&m)ɳڵm}Emm̴]m$I$-mpԒI$ome&mF˶-ڵmOٓMmmۘ19 ۥdI$-mەx $?me&m-ڵmmmmX&)sdI$mی$ me&md!ڵmm%mm]W]YdI$mߤ%p$me&m]MڵmmMmmkfLmI$=mmR'$me&maڵmmmmmmC. I$}mIz5y$me&m3޶ڵmmmmmnV DI$ݶmIT$me&mͬ.ڵS DI$ݶm H%u$me&m"FڵQ$I$I$I$I$'dI$=mn$/me&m6r@ڵdQw DI$mA$?mm&mmk(ڵ 6]me-rI$m H$Eme&mmlڵ}mmԒI$mp$[ tDI$Ͷm[p$me&mmmڵmmmԒI$m/SDI$ mۡx Cme&mmmڵ#mmmԒI$il/\dI$m,ÒA KI$M&mmmA/I$I$ItI$[m۽jf$I$$IPMsfߐ F&mmmm&I$+NZ$I$mCm&mmmȾA&mmzdI$mؐh$I$m5DK0xIm&mmmwߖmDI$Asm]$I$6m-KBMm&mmmfܾm0K`I$!M9I$I$mv$euAm&mmmfm%RII$/6ߛ&I$I$&m7 ;龵im&mmo`62I1I$I$Ih5m2I$I$m?8m&mm906*dbI$ ;lSmRI$I$m@mmm&mg%KHpaZ:II,mBI$I%6m/[mTmm'l䔹!O86W==Е49bI$I$fVm]]mfmm&]Ѐe>#ض'}OX.I$I%AmIl*:g6mm-D o6ˮlI7?AI$I$h[mm&Zh]6mm-.}T$ZxI$I$`mmmimmv?l$J6Or0IzWI$I%ۺmmmmmm"_I$ N$ uI$I%;h mmmmmm*I$KیϿIAI$5I$I-mmmmm&DB"m{fh$A:eiM؀5mmmmmnW}9 f 8 lmÀmmmmmF{?߆T]$Om]@Elm@/mmmmmn,~o߾Ai']mB$o$&'-PA@mmmmh%{YcpmI0LI mmmmD$o}yc- mmmm(d_/o] vg5,X 5mmmmlg?_6myPzeH %mmmm'_ߦ| l@5mmmmm>oIXJmGmmm$y~Y%aI;lI$@I$@$|I$II$@j9@$I$I$I$I H$I$I$I$I [!$I$I i$I$I$ID $I$I$I$`: A$ 01!@PAQ`paq?ID/I$޿%I9n $z} /[uo*'U~_W>U}9$I&sU7HUбqUuwռ]6OBò1-cUb;WiBXU_ꩵcjκ/fOIBꪼj?t}ljYWcsQsQUnu{ЯcU~t 9Q9D61T$r7]Uニ4>QDH`ynE!]_UbM4; EytjnO,nBgDSˣIp@BnhhˬA!U~rHQkV/ɣihBzDq0*3 ’B^?=Nm xM$rrCYUK$@k̲ y! C!A`k^k|w13,UY6LƳ=[FW     y  -b'#&u.:\뮣ȵ Luw_O"5-$IdxdeY_"#^GʲI$I$G͒I$$I$Q$%I#ȉ$I$I$-~z\I$I$H6]9$ C!d22 C!d2Qd HUD d2'ޞ%bvͥY$'t]/ǵN cAs&!T%hbf6TY{ԭ, udPi[.-A B I+"H5EUmha[p35(,|غ YwA4'VdzUXy%71a"-{1eĦI$VŹ>Fw_JxXb,1e\ GCQUD}t+t-_a(QQtX4 itluъqt>  t`#3D.fh&oUዕs3Ē(%[t8 A[8!GY$ڨm "?, MLN*<\t`>MF٤]SCCE(S]D!p!*4>eT М5tXx sH#@Md$0ݼӥ(g.5&lؑwMבsٞSX^Mъ-o2q|nwDHf߫ o$hjh(vuH?CR)LN%$wF6,BdLjv҂ pp,hB'Ŏm6%. Yj:Z/+@IATCFDJ:-D]cxbr4cMfb^ZPꬋH\QxD&#E%$BO8 PR7,K $I-QS)!87bH ÞEHj>|B /z4Z bD?Zz%"PՓrgVׂ&6CXXTh8e}cdNŠά/_u<woDG-=:>\Z P R gr7W8Ȅ%ՅIQ% ɤJ OC $Q)cbY1ZzjhgV*9oCuzƣF ö:ѤԣP>hgV́#"Ux"D}Qi}KՅiV-HY_P>ѽKՅАce bh1qOC43 ʋlyIJ$dI>!i}Ɔuah_ dUDZ)׈lt9dKC:RS|ӡ^z Zzt%$CIՅS5Xtv{P7Xҝ$huX_)tTh#OCCVtzSzHܻ:3 姑d$ΡiC6Sl-=43 w|Ҩr#Wj-|ROCX_2Z5Aq6!ѐ̒!kyyi}Vua|Ι\2&!<≴!ѣE׃$@> CYֆua|ބLj+2nGVp[}ov:6$vƥDI$;Յ_Y%`qq' [x2}QZzN Lm!pJ\ά/$:HnmG"^[[tbG76X$%&L2dɓ&4E4T"I"D&H"D$H1d$H2DFh$YVdɓ&L2dɓ0̑1ht̙2zcp@Lo"A#ȘCn[ bnW[$nIBFHטW1tciHp&]= rdHP>s6Cr$!3OSBCgTɒ'OχGz EZQC&PI b޺qɈWIr!e ^kϛCbAOc܃]QՑb ]χ1'ǚpLORPڲE1bUe&WMz5I$Ibz%~ О̓׋$MS:Z>V#NSI$I$k^&/ PrDΫ(j nI'L,G$MrzB! B Q&51&ћ#HcH v c"< $F"*{;⌘$TI,ѓu- xozzT~N+-&::I6AkF*V_{hsՙA6H982LM?&J^>*ќQ\["V?6,jDqN*[GI07'<ܑ7M1! EnoTz8:<)$JEqS"_HRF+xc_|tQI&$ V,tCp|tU!(G-H? p'?A*I$I$I5"(uj;'̒l{ VWz} H"DQ jL) K dhk,OBCc]zStV3t} JCgȁৱsb+豌CU؅l\{0';%ozM$dmbcШuN Gn T6%]!. ,l{ttV,gڭVTZycuXGzj,%?T=,;'1UFb3舷oNjdI&lI {DWb(Ī։=&/ؒ\oY&o'xhtU)$ZЌIr7L|GNolW;j/~ipo oȱV9Y:!)$M֦ԛ $흫 +yEIEK45wrH"D$H"D$H"DI$IdDD$I$K%K$"Y-$H"BM~$Kta2$H"D$H"D$H"D%Ɯ0`ǘ$$rR$K&G`Ǐ\XײnlS2(Ȁ$SY'NQ8@'Q\)Qf(n\I?-!1AQaq 0@Pp`?DZȟȈ..^DLbnXS_26oAoF|艄НXMW+X/xoCx@``?%O:W0Z[#w+EGB)2`׌7@o^Pᯌ8/O?O?WIԞ'[b#tLV~-WAtA@VU4O.ޛA6u~k@Iϴ|\7PvoyK=A!@ ^.j?po#?z@=U.&MkK=7;[5O܃G2VV\EɿWrVRzooc2nc֗Rzooe/VRzOO[=w+K=7=ԞDOMԳDOM1j:Ou>}S'Ou>}SOi>}SOu>}ISOu>}SOu>}SOu>}SCd- ŕG{{=+K=7U 8>})SOE>})SOE>})SOE>})SOE>})SOE>})SOE>})SOE.|%{SHs+)O̭.鱁V,B!B!B wB!BB!B2j}x?2{l?iO=G{{= wԞo6zJ~ [`K 9;l~Bt 9Nޤp` `FG-C)>.tWS@J2{ˣ` B 5Tn)G**)8? Ѝdi KCA+V$T%Л j@qs 2CR +bo@YP2_Q3Et@c{ MkaXS8W-}n) /U6ZݎguO'hOogv6v\8U7ⴺ{^=Ow7T""7ԔcI{Qִ{B@ë́V&u8y.8䄂XDʷL1Z@c!9BUֱQ]E <ެ\z((mW|&8{@՛rx󎬱J10*&u/cX )Nާp\%ac~k2n{^>{U,@FÌhCpH@Y3z Uo=#_)j%3[_uWp|0ӽtcP>e0* 8Ipg&;5qOogv'} k*kfVijOMO[5zl?V/XFpY^0t /wh"_cTu )N*fg?TD#c~jrs &[ 0"ahigCΈʗDOJ]Y*K:Je;5ԞnjؙӵtC> φg?:Dg|3> φg?g|3> φg?g|3> φg?g|3> φg?g0U RfL։\jf$TKYɀ%d|&{#zpӼ2>Se|зoy%e"Q aHum{)Nޤ6͏,[]ƻslK֗Rzo}835zE2e0h(kniV#t9zC(zf}Al(v1 tP[tX޼=HhwBhCcHk2F_xb(}hE+ľpf}=8%,tp& ѝΰOM4i+0fv:>1 ubſIbqi'Oi>}I'Oi>}I'Oi>}I'Oi>}I'Oi>5kǓZk0<Ϙ`DGy.7Ȁų`})SOq\6_>}|,p[3ah]svh Bp4tDJfEs4w6q/A vZMz?O)(3`p$4#'̕W==z'9֗Rzo}Á ²bUr8y1~]|k?SnTrY-:ĽܚE RpGp1"|N20X6yZ"s816M\CMߕOog~eiu'tw*T f;U>.вBrluqzʆ%EUbb2ʑ;M noL6Ӝ9{vf:> x0H7l;GDOMͿB=fRwP;?gu׻:5zuQ[S2~^oR^ïyR~ۨ5yDv7 P:#?>3ό?>3όQOw(b"/rݽstP" "ό?O>3ό?>3ό?O>3ό?>ό?YAYPgNOOOOOOOOY"ڮf&Jh2װs!djr䜿$'N_r䜿$ 3Vƨad<bq wRp2*XvV*Kgt%2(Owwwwwwwwq$Oz-wwwwrsPyhَըLqRY\c>}3gϱc>X5@ @U'5h[ATj1=b& C p|&WM8=Srt lmIl[Biir F6S\xeHil0nt_wB^;Q,.D0 )򗥻DX n׳3< $/iO0?-lx]|ʸCӶ wD u@ :nP@n%%4w_aILP)zJ 8T+Xa \J&C;zY!xz3Cpj٦[ e}֟z'`VaRrn|C ZM2`F0O9@pgd֍IR8Y0+[@j]+4]DV1u務9\wYN7ts/_Sw H;JjV\M˟hAQ:?_ax}v!reqZr/ gK*^+H wN^ЮVS7n'y_X< VD?q[V`2F"ab\$ܮxHgbk)ɤcX3MEխG;*ywtp4nwz|^Q4![ 7>}vQST9#T'"7 )՞[q{ܹWf׀@{vӗ(Ai[5K4xK]G}eKAb? MAP-*s} |pY' r 8#uW ~ X=&;Sl) ֈmSǰ6 l嚒۩^艬ݼ zEyL|1@֥8cKǂq`0Vi]3Sb»$eݻaiˁ]f+Wݫ[5j%h,VGT "Mfi)N+$@-8DŽt9DifX۠! 7PyfiL'rϑEi؈:$՝>n9M;h+ª_`Yu˜Je>J)J<lZw9:ᬬD#ޥ {Y*zVhDql!n%a vjw|^uKKeywu `.WYe ;׸〷\((M2n] 'I8ZAF.ZO(_ IUar+.d@- vnŮ._XS(l,e_eg];P%1sisU6(J%:H)*3]]7@L+O^@Љ F0j\2zHD-rB}N#4,VެE,x:@`ѧ^˚c.qf{ Rlߺ9Q+8bND@ܸar\Jwh{Qr ʐp'/ "rH7R/68KUKlFX?Ւa~w `2sƱ&o &rxH0Ch 0Kh!TAX{0؜v[[KX_V/PbM;=tSltn:) tۅoOMXT<NA Њ ,zJD o"V5|^9A Q/b^Ő' f=#du`V!@ U>]G>K2ܘ8O =¸ZGC>se aUP-hӤW1a4E8+ŊKbWt^馭M0t^&˽V( p Nn{"an,kp#f$hyk#)$7oqype82h/jw&Z{ Zt?i+fMnUDKڗi=ntR\<ـ. a!.z/NL_̃ w!(p&) j [ĕp(b*(Mp) 4:b5B28ỡ̄5LYy?Dnp~C-cqZ,uWޚz0;l'th tSYo_#Urޒj?548+ͻXna ؕ/cHcq^Qж0[+XF|![G3 ĥj Śⷭ Ejz`ͬ49]2buubK*uf^&nQ83(:Rr YmD[Uo@h9q &`.TTlGw. TVmq(Y2E{zA{nBl&4`: \14@[ { Ƒ.wf\Tg=+yP$[ 74B[=INSQYrJd, <0nY1}?5h"8הK6 rPDU1m(Ֆ`TDb Vb9q3)@0"3H}kGhb\_`/j去v(/SûYm`Hkܥ5&Xĭn!BPk)W"8VwDXlCi29GKwJ+Ƨб-B˨e%poy/8Ս |BuEn[ nuY.h"be +LoTӎsS)OzWAblPHiu٫LKlLAtڷfl4/?R d J0`4AmKn#%+RR] UO2)Q ,^tqCfe% B\M*FR,>hn5J9JH *ek:>Q0JqF">!K"{Fjv;F`[#kؠء݅IJGQ%k{kbb!ի)v#0@s7U±h 2qhƳ-uAk4۶$LeAVT\"n/5 (́45vM!ȎsuM^mwm&TMy:[ |35@^BH &{nu.Z.yA`\To·=ɹ$}E!o\닖y˔EtG jVk*b]g 4#y-x3\q>|97FHzK7\9{7˰\#-Z vMPdC/", !1C=M9/ar4riDI ~˘cz:gCsx^|c;9*.Y]QE&K41ܣb_ 4xQ9"žLr=RyΨVVS N6J+D)^?`ǚHik4l A-ips^cSaF$*䩭kxB:N[O3׆Hf]k[ߴ+,N,ǜ(߸o?cúex[CPb qvv X"Tx;(`3T{wb>[gB.h,; GG>Zd{z05KwK& mh$fxqd$Ketf)VP*#2,Xg?}#Hg?١G "#%!B~>ϣOOOlSkDŽWK_O8\>̃))-u@_duV۳fPEQw:Ѿv`BE}Djÿ1UN7>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;+ŕexY^,W+ŕδNs9NJexY^,JgZW3s9NN糞o#uxY^,3:ҼY^,W+ŕexYgZs^,W+ŕexpQμн*`R25WU[ 9{Xf Q.[S)Ŕqe8YN,S)Ŕqe8YN,S)Ŕqe8YN,S)NaNaws'2s427x7J0mä)Wʸ=~s@x@R2r˥q)ҝ)ҝ)ҝ)ҝ)ҝ)ҝ)ҝ)ҝ)ҝ)ҝ)ҝ)ҝ)ҝi֝i֝i֝i֔g^uZuZuZuZuZuZuZuZuZuys9泚δNNNNNNNNNNNNNNWW?Q4Q,${hrn<f>D5w!ƒ'T[3=ֺ%v4KQ*!\6}9+hKVEK.8j_KNryEҰRvڝ F( H9` '{P=J_jsErE;vI$ sJHTxID1nI[B6E-QZW*w؊ (#ZqqІ|f'Tƙ ^jkʰ|J'O&Q5tmL{5+'m)).zd8.Rm@+ ̆8Z̑oP~`*A=j4=iq@aT87HOz#D@*4H&ZLp2}(ǴDgҴZشسo,@X{->fnX)Jz #rڵq@;fg~$6VI.+D0[?Qw(ld鑓\4$ 8ΛncnۭzvrA 2p+NX؆*ZYJvrf] ZFF0wzcK] q ]H5(DF8SARǽ!^cGz .T 9J+cTb-:S8 ׎;h[FI%хer5jQ&6, U8<)F2X̔`=)^1z"]$炧:ux͵$oucʖBڡ9ܚZKR9-@2w&1.KW 0ogSwGQNQ51B##''NbcTk֧7m4GNoM=JSnn8T`8QcQd1^Ϳ( ѢڋѢժ,:29?)LeXH+nosX-rZ"/="$'k[Z\]Kr#HXL)]qB mܹefN,}*RԪƅɷӬ幐jXW7*Reťˆfo9=?NɘWv R3@y~(NL2H0=VeEٝ]+Ч[C5?!]f ͔OWJm6WeP̀`n@aa<+.sSn@8NEzRgz:=/P=,.=?5{;wE+e4kD@#soSsX\g%)Cg$AwLⲩ=+fP#cz᨝ZR HEZ( r:WƺrtJ}h:KdF<O|=eV4m]-yZI6J՜9D|1py$qML9޾ 8GMf'yk$![p2l䀵U_sB+[heF3ϥg`t&CnzuSJ- v]>˼nvϽSG7#Gq\GLqjhL$$U($i0[o#⭡6Tf%+tu^Aaƭ$ґ~$2sܮs楹|yfMi;`G*p8DT:*k6zKT`9kt%(#MܶM0 *:Rr]=vv8Dt31U'9=ZӱҖis1+G%#6inn4M] mR두zqihKkxenO}h3rKQkdMU!9]˱:R dyI,) bLǫgj; 5I'5i4Q1]R4`r0 s[Lְ#=JnDܼO#b(ꉮbj˝950dئQ ּNaxyy. {9 n FwJ.:ؗS403pp0hSd6s:GyrܖXcڧK܉Cv&LC!Dţ3ZXf6}*%T9 \gB+=+!s1 0%VLw%A㊮`4RjԇruJN֭L|.UOqV901di]YE#hӎU'KlHZV$;X9ʪFԤ ;':UiXǝQP4V.sS1qS\kycaWROg) "Xg BᲤi2qLBM.#ޚ\dg8}*fR0"8\cKG8\IN1Ndi H0\h8lҸ>]ўqcjLM]7,tOwf+2{<ñ=}}s c6GP~0zR4w4 Pަ; nt!wۯAp0#.gn@\Bn>T`sދn 9|R ~ 7sڕnpϵ!;Iހu< `.q@C:А)2q(=3@ zgրph?xt1<)E?JBOU8{{P{C"$@JbDt.x(/Q    (!%"/#%)*,-,!140+4(+,+  ++++++++++++++++++++++++++++++++++++++++++++++++++ }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?T I;P( 4,Eg#fd"A*IA&Ԑ :! RM M%/4 g<0$#4;Q`! v )GB@ct*; Ѹdbt"m;6$q!g/#ucީm1Ґ B/ad_kdC$V_)@JqM(1QaX:zʤ8UfW+> C8La,A )4\v$pc; XHB(Ɏy44HΊUҝ; J°9a5C&&(nP\wLSƓb%rn!^DH)'5d5ؙag5j($P)DƮv᳎jlU3p.E¹YKewf* iI\MԮ!Ls@+"Ic@"L bð`TRC |7+8ߎ)\Wk7=,1I1"$g dRMR{ !! w@:!`zUX 1P;Ĩc$)ZeIv =ؑZcjByBx4!šs@=)R9p{S l ?-(cNvFF= '͐Ư^i!&jHeTI$D}AC,I"F̑yM&IO.8I;Ki\Wu(s@k,6Sgaq׊n-+OJHJT5*({FG3B @@P@P@I\4aڀ tiAE+WNNۤs8jwcܝI!@P)!yUƤMEr[W#bXLP+ ZyR)0 fBSHT;pqI@ȠSW-j{jg$ /QLbENM8z!nh\P\._MN,ML nu**;}nII'P)e]YE4v`mn\dS8u2=xHmm)[R-("" qE i)7\.)S7ƒiT&U!-Dր<YqȦ1LѺ09vYGgf9$rݜ4 C`ܛӸ1qHC5: )Զ&.8HAzӸ4) Zhd1R(r{J͐)A6 Sav741r6*OK$n?)+$TҀҐ9&f/)E~&VoEbj Py U e<\2)\a2J6ԫ+[HN:Ԉ#ypQW7= %"Rb"$ zWJ.*/bR!(s%P@)?$Wd&r 4w@$H.$nRhycNN;U6 HEēJlC (@&g8v\niX,8C RJ4ኢOJM 8&7֑#b5I*{~ÏVmiڌ1SO0Jc!^}j*! yTU!4a|ȡ;1fHBs|nLEȸ(P{ZYԎ;1(84Jfy'lq ԁ0.. !\qaw}f+ƣ0GJvwv#4H`A,#"nXX砦l` ]&!QCM yt2=XVber 5E!XpRH `$*@SϽU9W&C&TXx^ U1TDL*Z$qF֓Cc; '"g poZwȡH ( ( ( N">Y8 4p:LIm3H>n#1'nv1k1%((( ( W68 h?*YqW(\ 'R)P@ :f PP@Ge `LR ( (*a)\ n2i đ28&ZOUr^dR$:P!A#ցy''Eh: 3@ (CB" ,' Z(\4nӂ9 XF1R%) &9jB$ۑVXg0UzS"C)t(恈:␇PJ1VCoBj#5:OJ^i4)ZJP%;~6ZMR_(4r>QZV6@c:T5RƀG4ѨP 1,5$FU1 #kEb(b^ČRKjwD WCS&` &EH"()2+^UԾTUa3[C6zhKЪ[W"Iq2OnTҰ$U8!z8C&B1V}{5 LHp2ǵ 6섵!qP؛#,jnHgLRL)1Cj7fB$';K5 D-wT( +yeG6d }ڥ ԀҀ PsU =j@(($W cͷ8ÌtPF̉vMt( %9u#N@( (GP(S\LKu AOϯJQKfLX  mQ@h8LRhED1g m]i+\qI݌a@4"4"@CR/4 Xmہ9NXwh:SW˜dqNuCJgӵZ!fQzSX䜓FḇކI!y`z1Ԑ&1ސ 1`I䁜U'qrD;8㊤Z$R 9OBP8a1@Xh>8rz%QCH! V)sEM4+P9J(QJajH0WHCY2:RhM dR)M@ⓈFlSaXfμұ6Fb Ja bQk FWzv :)p(  UP o<6y8+Z;B6Y~^D ; Mc9POY^țج0ǒ %m٬f٫q첅QnQk]hȹ-Y؍A& "D*;jvCR(p(\Q. +늋FNNj NSN!4J( ( ( cX9U֩IQIh)P@P brcc1--j( rHAu  M;ht(1Ba=E6 (PP@ @ @3YE л䐐aZѽWw>xܠ:Ib 7gtsi`#"#"F) PJZ;P) @M p)!! C &*(hLQy,n~Jn5 _(&=-k v°#`+-@aGJc1!A=J.J^1@CzcL3p#4R9j:B@g Z,+ p]K/8RҸJ°( VafL5Eb9JV@a(qµ6&k6h@w!4X 76 3 MXkە?1E "mb;Hi^Ċ$:SA L|lG @f\@ d⡐TMO17\@4\CqNDHvqN`@P@P@P@P@Pۏ-ipث|L; @-՛n Ulx@ (M@1L"Ґ8H y(@'ք!qP0P bHݗw\Q̨Pٌ): vPēI'2y?44l,гyl}xTmK-EnjH 6994  {h' .m#Sve(B(@.(`HSLcG\TR> ULhq 9iS1ÜR&& aqHB$Sái NxZ▣N)k\GAI!$4[V9ҁ8ΘT1í=F.pxc&i\Wz\x9(Z@\Ri\\ҁ1WޘnjS0)$EbHٓ;q#40i}N*cȞ VėFT<2!Ă(((Onдnc$Pݣv)@mnd%S։+J94NzPޖ*Vw k`rqX6FMɹ"RW0\C/ޥ @xq\C׊B r@<ȠbRP@2@ZJ( ( D,`iA]pF*]U *2M (``ր'hA|vJ.[Z@ @P1@ @->$.SM+#@P@ 5E Č !]j"Z84& ){E }F4A5pk'K 0[4z( J(GC49P>hM4[f;1E44)i.]ӮlYK6u֢-uZP4-\E<Gi7[تH @ 5$M;14aBP!yc<ޘs@< SvLʘ) < M4giQ%c/iC֐9(P2VcI]TpU(ةB# )*vuV.bXkdM!j9O1$b)8ޘ& ;Ё֚ЧLbfQޚ, V(hFs%\.bq"Dd8'snResZ.ޕ+C&G0 Ư3J\C9֩ `9FqRI d'f *@ҾIhӠ 'ދ39q*phaOkL#MTJ䜜ܑ֚c4dhztJW VfMuq\Mfc;ԈzKD4F)Ww搀3@ H#`%  @P@ ڀ ( ݚ4hFzVJ $Q49`*[ 3H @P@P@ =(H\Sm @8VhXU VHaXaXT@)5p ,;U❇a+ `Ԓ4yn拊SW$UHNððnqj^Kiʏo5i_4 ^ 0!(Mgb,0!Mcn^" cTךr6bOZlrB*qyOyx7F .eGzlhmR!H ȉ5$ 4!09rŖQ#aC7q@ѸLfIqX͕Zd1QY 4%pHnhfH*1V` U}*c8J'nPHbp`qIUF1{{c@-%P@-%P@ ƽ^88#\ ϙmܩP"ŌmuB*nUgqa.Yd8%cQ'wq2 ( ( (z `)(3;#ҀEz!Hb6Ƅ8@CHCJe!Υ[Ձ18ݧ+aFǥhXrvhpܪTk+a (ڨz G(\ІNbB9V*j, i=$㊫~Ky;J"Iq85E;R@5@( B&&av❇`E╅b9WH"!p@Ё0i!"AҨpqT sbasL`x96)tQ,fҐ\䁊Ǹ֋XRjyEI+B!.X9 )4w!:a Ұ"sM!HWXvjC03䓕#sަvLЁI$F R'bIa85vRm,~fԂYFN5"us%+H\ Sܷ I\A# b/9Zh Pȧ4B09R2e6X6=6c͑v?A hv%($`% 0 p(z@ @P@Ie i6GRU8"iP@`@ @ ( pSa@NI` 4qH6FIL@P@4h}Zm ( ( Qޘ/`[yRxAܙmIP /{4@+¹;}+E'k;XgZD9LQB0 TPVFUm ZnJ 4I4TTGAMI740f n(#+QOVLMxK2rW{ԢI6@j`401L,,KЀ=FiM;'tF)P)&b.E⨫VCM8W=h@H+ǽZq)8 $zR@M2SEjƀ1@(ڐ.+Z>ѓSWcWc#!4CFR7PTNY)ށ$;4QYs"yUޮ\p9XCUר5V.IJ#Dp\v`Qan㞔]vM$":Z"4L9La {IWgʪ!c4kbwcN)Ĉ&)r‘Ed u⥢Z"*1QbDP4\-.>,&Z#d9|TX r#yYe- .5&]xИԀjDlT`22d@3* zZ.% (,P ކ8<\Yr5"z3@ րP B$i#VUbjȪD/nJ@Pho)H (ʼnP tpH@P@9. })$HtΈCI=43KQ#2ETڰ֤PP@>4gpuKYUW=BQ rm@ ( (pE9W$giU%eG0 j8@%: H4(5fbl)M>#$WElSxzvaaa8 #RwGoZ|ĖK)w dSII) ,"=j ƲfBh56&˜Ұ4W|Y3&(N=ahD+D2ZE$H8Ք4jzb 0}) @)sqD.dO| Z\ºg'"&mǭEtNKD4DÑP-  0J°(1=!Xȡbc8R9H$^p:T4KC% `v[$UĤN Ve9qX͍Y#tڸ|dT܇ 91Q&aa1ZAa1 )?A֝ V+@_u9F68`ݣ]NAN#3 f)XJ$2q5J-a6ȩNNI4SL 0ܴV2%XHǧTdUP@P@Zi(EWl+ZYn$ G TZ PH**@J(,Z(;j %=R=F:SRYNAӺ< @%P@PPdRcU_Qu&L vGwrlqub:P@PUXh(LcjIPQ@h %lik8i&ؓl6X,) JCAL=)"լIJb˅%}xU踴EeCsL[Q%wr>pɍ皩%Щ%ѕ8Mh9b<*;(XV3jn6)3HAi{;(4VLzSCC4R4$PNn6zsުñ ,-֪Uϥƒ䜚qt(zC$3@E)$+); QaXp4qC`%uYc2 lVn %B!UI t."(D>ODZ%02=Mjh=U&ZdZ&Zc)AI{Pnt-KEs1ZϜϘcHsas %4s1b%t0tΩnD_ni9 z `s!X;P2׳Mg $ 3ϽSjrR6;RP!(ڟfڛ7nݷΫX*%-0J@;a=mޘ H1Z1ϭ;jl ,0E; N3v0xExQޝBҕI$*@J@%bi!h!XPwwMlz ( ^O>^Q@zuP8 ( ('ټvݛo=*}ۊ؂dNJi!)顡e!Hh.6ۻ 7'v4(|nCN2i4ڴqΏ,~l`##dx0(`( bð1"HH8,c=\84ܤ܌`{rhs8N2[90ctv8c sCi{+ ZvqLwҘ␉n't1 gnFrs@R3TY$eCpJ <拎HL7 0W T0z4k̋Tɩ2Y֗m=sHBqLcRE" 2EE܎d#RI->QDAG7B~3H#6A&xٜ)&$U\gd"IHNz֊Ec5Y(ZWwdfƥ\`2F(@9 E!hT@ h4Gjbn*&Hwj.B0sҎ`pM!R04Ӱ$QU!<3i#p ~11sSabDvdRA:q\2d (;'CDXeH4JC b-]޽DAO֪SHmܧ<ѤlDm;ZB |L$:)Ŵ =z9f-ij=i!5XʀaO*hRⲰR*:2t$u֬,2 @ТϷNI\b0 c@75"ިn8q 4OQLB_jsL<*b[tGJBPV6KH B2`S  `In:4yn۟ƚz)@FFOjm)$NhD)e%Nx  Cր@<$czX @ րQ! rۊLMYr84Ca*Q Vi<Ѡ)DTGE故b9Bhay,jYaQ򷰃q4j"T-Rړ`њXUO$>mV}֐)qI0+r'<ֱ-JTLʺL}+hHÜāWڏPHC@;D(1l۶\TrTX1ڋq1ϭh  RY*}٠)P۽6)r3J\o/m@1o=F @!B#HъcL! H4SӊPxC 8n}1@G'4qlS L#Px`1 jyf),VB.~`Hj,eHJi@){dI"`66m;զysBFhzSiG\N*sN/q,XԮNb"0)\T;TԐ 搉%Qq UJ)=ROGq/ RH*u PSw۽Ҳ y]d7c9sL*XFBozhiyP),/jcր9"k K5R.\Gҁ ;`ᚤPv z`M1C+ xأU'br[ )[@"(rq@ @5 zS\n4P@P@>GZ`61M*|N:$H5?_Zr>dsHW ҸqH=Q٘Wn i[FF,iiSYqnѹB zZH0S;3aIsHDVXb P ݜ {դR8,2tŢb)1S 4ƅ I\W#u)() ,+F|fqոh4c@(484ϲKGˌZ'RMih5\O{DHb rsrӔZrזRrZa=HWvUcb`+7&9Or1ZD%3Zrr1ɦ1y sU`FiX,BPfDj%:qNrD&1@ ZcҘMXJ3ypE0D*Qv#98␬( vg#11pqLbhXQҘvm.+iqцbFIM]8臃Uʸ-N㸡qLdRLpsTշVzV& Nq1 bc$QIC1R|8ʅʈx5<cVw*\S1U4%{fhQIĖdoY&n$ 01Y6:*,a[d=@T1bevRMec; eҕaց<eH5v!drHnM1Wii&)".NM "U@zD,AZj$0_)V)XVPJ°E #a =ztw\/JfG#4RNvz 9G0\_5}ye+br%W'&B1LD9n9mY|3.W4Uld@J#v,ǹMFx5"E;!BAid2Y}4.(Xe"df;-'Čع!L\rYI*v9PeblB#>2چf*D%╀J@ZWʎGgHj"W֐#[>sD8#l}ޝ5+bVsD޺5%r1k.m,rzj@bM"4mQb^N%;*3+&8@hN1L -fu"Ҝ[NRP`S_&<`P޴4\ :͓"]GA* J"@9[0rhh$Ddpv_zn *jF&iP@)@%(P@V6n;3vI4@PH`x)\w)PLb cM h )XV sRXpĂ2[jj]l#wa7q7qA4+ v+ 21ڦXi@ CЍU"{S`}j$5W*ph 0)0L\ 10$eǞn~ZR$ ֪XpQЊ#ħRɱ]L8*B?ieUf Z9CIғVDOd296$1Ss Q܌7R0ӹI j;6E čjI2vv(}kG"Wyrx܈lz.+![ ShXkgF⧔ J!(M SŠQhRj8ԫVE3&NkHŕx&3\4;yX=kDbA'XVdP6WS F(VF⒕sJn#4Ze4֮wxq{aP;Ұ*$&WEgrlFeK+&t+)Al%m {Ҋf`(ugUjVaud 8IűVb'EX8 ;N=cR l&b"WX-nHv*{Ӌ @&`]=(БH#R;1֩A1U"pqIHAȤ3L #s5Il,,yE'M /5e1E#Ds֍ŹVAʉD9] (G$a=r:ԸWt6h桢 2OMfCEr0k31M  0sVCu杆=i!̅rv".Qr MiظGmbT3IASblFG|ܨ3[ib6lsL 6O5 06C fɬ"؆2{T؛ q^РįJ)Z7}$ֵQԵTҴQ-DFL)4+#!9Bũ敤vjҰq3Z:LIjgvF++61iXDeA!Z,NsE/qgvucHz}I<}#2k,Dx0 ==ѿi gt\qпVӟSl0jdiҬ .皾TU5$w0=>Q#m!\b#THLtm;i QV U։Xb49#r!b'Zc.FN.ڻ~=ni!9i8 8YbG'?vf=NX+r8dba*SƎ8CId$I±ٮwKFl5L,5H"hW#1HG]@FᑞO!JYa]QpDܼ;L[Uѷ?Z6\j4]\w3Ms#I#ucކܗ&" 9zCBc"Q+BarZXՖ4\Sp+uQS784Jb;@fO-Xj_;5C4 \ c4ր[XMHn]Z!b:X]X,I4F(=z*Bh}@"ewPk̥eQQm qz`5#Fj.EsF[{4}ۍM$SI#jiXV%RqR*9zІ*Xv$UXPsM(TP3MS(zLb1'cI&IC%树\;Xs@QLd*( uV4 $8zؖPߐ BATl G qBbu*Fj]Dv!OW7xr1S 4"L H ;hq67\A# P@N)36 _z@HY-44)`)U=E!sL YPG$rڦm+&Δ9v8o@]&)XV SCҀH YQƠŋy,+0 -YTQPFx2M1ՔI93#:8um'dpEN㔮Ǝ!!=jV h 48}) :P1G0E1(Ia늒FK%T9CZZ T%_5\r*G356PwHoj7aj)2ջAr\G&転=˓SBjXLp>=yX=>qJ*NǽgR#JΧ#ZGJԛ*铻ь`2MTL^ž5 E1@ :Pnh#|E.7IIBqB'B6j[H !qҨh0A8ҘmAϥ;hh4i+RL.P.=\M1ܕ2&WZ)L**ӸDTK8?J9r3VP 1ϵ \D.hsJb`. +Ei@AFv21@X zE܊vLcҀ8IUX,A$*@J@Ujחu=?+ʮS (  $ր Pg{:d3DvbQ[ܱ8# ȥp4;ҹ; iҸ4+Qր&N, 1&k913 :OIX~ߩߩN 4= P@ILր%hY5V7|$uBp3r?Յ~;βX+GjĽGme#Eq@HB9"#-5٘׊+ЋC# 0r*a 5w1G0 Z."}CCCf@LHaR!Mar)XE8$hB"*{#LCMrv~2JGeaXTJ\Ph(ˍ9yq۝4cH$71jN%P M44 T7Υ늸 _E!4 +^HZ`/@)恊0$֨ .e8 Rjշ!zsM `hH& r9QSҁ1OZV #Ү(nI.v(TslGsJn9"4Kq)DeQ6%cFi03NXpE0.}*F)=E-H93$**ʽ=)r"6ypP)ntUfsUFHaj)xrxWо[=UӡZtBN@8EX,H-2«ٕB&n#:r?\cz@ @~j fmȭh˖iRiI3hb21N FA#ҭ!\+A#6IAj/"@t>fGI91wdր*U b;4X`$H++I"B>WDщ9;;'m,99$v&A\➈7\"mAJ KЃX"+rx G d.JKفg. @ҥ"aRN)0vH`sHPwij!vpWi*(TtQqcmXRHbm,XGJnʑݤ"@F;yNH€ IE*,375@`N[=i z֑y`0?j-&)5#4lF6ĕ ( 1B6MXZI1Oz@P@=+TmqT1G k44L#T$],-4\sE;UXbsB c0/SҙCv ƅ8bS8v<ԒH7$=xU;SVSsRHphQ2b~uI㎵E1Uat8 ,^jւX(-mf1Srn>i-Ib8u9"΢דn S?_Z/bG9AoJ)3X.h$#_JY"H)ʯ#LQ\҈qQ*lf%_P ZS242Nir%GjV&ZaOW}cj,1׮*\@4@g(ZxQE#sY( ;%Sg\"at@ ȠiJ qƀ'BcJA8=GMmLf 9Ȫ HŠ nΆ9#]!vMTJJ#ISրHh( ( ( (mc{ :SAizS(e!nW-ɲy!ɦZ)Ӱ=zU) `@@ m#=,<v'6Z.z jzQ֚F1Lbq@ viv'\ߏzqQJHEȬRqM4U' UR®òaXBG4Jq]=*$c}*2Bh'SYHC*Iր%)6ʅ }JlH`"vu9T.XHKDBTњC[Mxf|M:]UIoZV60Eaas3Qf|޵JtR̍-w)ɦVhyuW88.]sq¢ٙT\*t渥)ER]=X:Sf8!@yl."r.-̔5D=SFqӸ iA@SHj@u R=Z}-Zd@j)lZI$z_</oz滲;/A &4 cBzp#u1 ;ip#1-F7cSۿ) HN=3L 9å40ށ1zsB8bNJ79@(ATYby588(r=iSD lxL>&Z[M+ Đ.2=Fj׻Q|pIi7Jh0憁b❂śef9r\+Lv  sE`Q`4d;5qї3@U*CB&@ֳh1 q֎T.R= RyF$,UhBaAAN~j\dSh5R1~gr{)s)fʪ vj#ʊ 5+ n9d;j_@h Qr皡&! μ<=_ ٴRua0\U!xj[Kkd2X\\ihf9jvӘUe#nsp>WZ?y ;f7vgdvBQ7< lֺ#^T"S|]j2X,3(@z4s rzʓ[? NG8y$U>J-' m;Z1m'1'/8[r}A]zqz,@s*,Jwm+[R0"EfQ֩ƲN`80)XV)ȪXW֪ J8db9Vbh^*nሡb"Us2E \Sܔf\m^R%sga !Đ#TR%bx5hEeZ ,,Ӱ!A4KCB)2-I#֟(d'C%2֧@H!f84X@hj" C! ب`[4Yth'Ta7aڥv, )42*@ M0Üw( @P@,-wAnDrIbP@X 86 \Ҁ,JRXhbw^jޯD-k+ Jysw+h'& (M8/͸pq)PZdk̫̫dmTs^n+rS$z:ץfK',U!svLbִ(.{׋ſn͆<-ƽ<62|t>P J!meokq\ r+:<6M0LC2_⬡AS@YbRuRKpm-5Фi. `;1BԎbb !)4".*RD;fW~[ O_M6.hA)X 5V@2)vg"ľVN>lIB'qNZna$[&=8a8q(HU$G\#GH-;$3mOjODK!l)zJv8 9oqu&FU4Y/˱HnIcFT1M&H` |2dg#q)Ť4X~RsC68B(0 ;E&txJW *{T\ INͳΞB"*_;QΤhEڹQaj e˚ C69)"T7HGde];]+d>۔ܩ"ҮFpQP? VX<_@ @&]D9s]1z\к;OH&x}9]p}V )*H UȎ3VQfdd qJdw#֩^L=)MXBdz!ҧi"6 F1UqC"HI]U@2@udr; VIYIXgVvѦ#M!ph!1{VB%$LB <Ҹ +g$@! =)cgRK` TPÑjwr[+7*<{Xn 5Rԅjl2'=*XH9ǿ4PI2hN#"bǥ!G4X 涒b0=?7r 0)HՊdT`@Iq;H*^ @%Zy-͔h KIZV`@ @8d!@44)6Q *= mnEH4mkHu14@hɪ,1iH.+crdQkDR'*3JՄ+u҉ )ȝV2F2D ED+R3o56&8A! *Ror=X; hHQC1!xVF;R$8TE_5F#Cʨ}ޭ7fZo̦TXXV1YUXo=h2h=i8NHbPSӊcWք"M;OZ4JQ*vCK7`@#, )i6&W[< Umr{F)!F3gv,*"[ #c3e{ڢZb'A(o7H5!_B# ( *<{WeJl9lLqR!܍=(hM7lГ)FE/Ryɩif.[ ޘuҐ zҸ\vMq\pQW j9265HcCSK%5Ub7&q.:?W=_ .vVܰל?\Jt5:;[C}μd:wm?bs&0DϚ*[A&޲?!O_V5V*'3~Aڟ6F6N=ϠFu);:]+lػ9zx|/w{*huo]F NIetDh{z-LiC? kzU dEVQ10 ;3ޅI4f'nNi&ikK3VW"g(QB79BN-H;)IitIqe((ʪ 屜Vvm&!B֒v^O5b% 11 8"H=>g~+ݾ*Q&!ԄFS'sS`Aj@rDel.2y8%a/l1!x(gj$WpV]5 (!lT,ķ,z@84@  d ) C@ F;Pt>c'0hA#8=h  amle&Kh 1/C*wԍn QaؚYpFBdFG$q}*lRVO^xQ֘U%Ul"jJa7Q`ث ax杇`E83HCRbdPd T\(9ϥK'G7S8ߩ>umn5VEeSscx|?Q01?xzW"GE)G n<J2mdX!YՐ֎V%S68'-g1dur}MzqNVܴmFA#M(Tco+ (j$g %77~[k`L=;-ߠ.v󴏽Q&-3]ݘ9$23-ZV&ٝ†$ҋ t$88q*%%($c SIݘi٣fAIj)EKrǃC8b3&%fzQa|<6 NDhH^v&ӵ;RiJ=BRr+U]9Ҫ-f+s`;+HEa>(#1 CaْƹHTAP=(i\P:c* Ɠ\R" cl1۱8s]LR|l c*085c3bAdby>D[]e>Tg>TYkhYəs&7]5Kb/&9$~ZB] !.\EksAU&QƭΕe&@h&0☄$bjQ)Sq;( ߎI1 `ykQ1 n޴UwIzAHC..bG*[Ry C`D_jn"7qҡ# Cb+vYI$r1f=Ib@<\GSM 7;xӼf)ʞhAvkh- Rv!}4^5+=xq :Vj$lVcx@FƐ |<LԌn=P @9@ ?(Gq@{ktz":+֒) HN 8@h 8@lwq=[\N8mlV0@ "-ks^:vzCDUJ%rV]¨ZLeOhhbaҚcf'kHj\ ۽WX'-ܘ[9l1#(V.51U"" p`砫[ p84-tdteQ -R>tGЛR[x`sRIdb f b/Ah'\D 8P@ uWVV {xMm+Xٶ"?!<L (X%x&Ibb!ʰi,DjμK?tZ;L*DLw* YO|[dUe)`""*j-hw@DB&"4[I!'JN 1A (DXsCb!vPBv D,k6"&Z"2OZ !KnanM@74p29JflOJalRq  QЊ;1E)0+J.e#KǽO0$G#g8:EmCvk@ig.h4qP@ @7/k70p77w r#Fu j% &--Mn+5"8vY4OP1ʼn:"&YFwr(n-{BPZ'rDXɸ$tV CppzOqY=gBYyDhޒD񡪊)"UJY AgSH[)tGQXc͍w75WSfyTٓZC##i#8"VTٝ:=B-zQQ s]:.h\Ni Oj`Ko!"!5[)%mعo[c)4c&WsqړO]cyI-˷ʌ3{̹i?19#tAE-(CnVzڜ ͡y\=7q޹[DUJ#I1J¿0ͤ\w(I]Jr5cgc;;B%TlM.֤ DN.sUZEiH"VPd-Vv)\Wi. LqxZWǪWb@Op>"R} R:"\:ȕS-7&R7<:%[kS8pls!_lr+);^ Xy\ >RIMZf mpH{f"hUJrDP (d [ĊK{?,Θy@SiWs :ÏJiim: F;fCZjaqT4sɧ;@i3.DMSedlI-P"Ki#eizwiN.KBdІwxȫ@*i\BlJRb*}+6"0Ik6"&b"jdsR!5"sR!C6ݽ4AyD̻Fzз:X6~QCjBg4!*N}\A4\f -R140u!!9=h^NN1I'KrRt !kW$]i8qͦAa\8#ύyY">^.ztPZ"RHSQ܍cr.C ʴ mwg` ʹNKHcVrZGrqFU€Z^%)/xJ6=*kC^p?U'3[͓vr tVV:)Ub.!O=cFq4PN3  Jf K%8)9YD!O+)],_ : upw3uQV'"@КSAg)e*Q["v泔3F˶3XDa=cB=K> 8HIx,簧vc&nWJn;O\UX ;f@09Dj+QQv}ŎZEZ*- [Y;2wGQg`)Bub[(rNIkEsD +D&Q:+{mI\^|3Ν9)1h{IRdz%H p 3+wke qT`޹ms ltB'8뎵Gmլ <6zW QKfKmR#ӭLN"J'ky/!BJq(2e;#i;;>ހ4})4EJU\w&"&H3JM=#*JAEw O(?),=*9R9Q 7"rEYXv)QM-H ե,[d|2є%tiIQ\\挹Y1 IjrT ar MrA 0Q̑<`LS'ecgܧ# #'1EsJ(f];lJ{RX Ph<{Rm{S9V@sQO1"i6Kd5 q:R(JWǪRfJ:sH#'ԶCcqSry\W2 '(#ހ!9߷L>$PO玘 M2JITxGR{ohho)|I`f"oQڀF %|>+I^bnILBf?tث%^zVfɐ08jQ )#]ʸLJSR 4D`)^)\t`y`XNIi1 `qR nj@z$"EX܂(vba.d$6ۚM+Z@% WiHa@A@€(P0BlS'=Kq4RG n2.'y9 WHLCvHc6`J)!FN;S=1Wi)١^@b3@l$4j1sH#=(|qC@@P#K(3ٯZ.{sV:'JSqf˟e +?hed#E2:VȾa&$hзa:nğΓŭY7(<J9S &U`w,*l%r1BZ^ڒ㌠-z{r6O+4Xu&S1xhϫ<1XdaUyw Fƪ6$²IHϨSJB$&܇Q$2I t@n) Wvߔw[ bOJIK`.D9 W:#D?:qZY4W8*Ib:sN iJsDNvEƶhgjM3%;τ';<֧<֣e\)e=SLJ|.Cv1YJ8k FDoWyh[ٖf,MvSN<\n⺖JPhFϻh(RKre$(`dj.Kc9I2rj,GjIT\.asTbr$U\/97 n8 B!\P(>"_Ʋ-qWܰOʓ%12O:!'H`B#US@4>8qy2i0@4/@ (r(ܯ*Oq@:-kJ_扳@Es2C*&*=,s?C4 SЎ!20e$09vaеtn ͐v9kD.JŖY&w"tRc`M &[ĴVqZ!T,zBf,ݫI=}kL;1⨑TȤbJ͈T0"aP0#0;q`FGBۺ$JDu 9GC(IEH 8 l &B8%@`…ޛC-]O T̓y>gکxsH, 704PLr.u4wEkKԂ´J̆RFF;ihQ=jFIFa~𦮶}) p(N)0,7L *})j1>NjWJ ZIHL4JV6`g߿">kkX3ڵmVV,\#nZ"*`8vibSc3Æ9?Z:b[r.'nG#UƷ zlD&8󢚍oqRQ-ff dӊRw$7%q5qTuBrz֖,'4 ( <  YY V-VFR*RWKQ&&TyKl4!?.@D$ҏ F:hk۰Ul橵 $H*|M܆P 4֠ILoq̽hbdAHLǵEȸLҸ=c様bdȹ_JmfY6Ԑ+fE$tn:QdɐHŇ8*ұi~s55;RIAWwr$%C9"Al^J9TP 3Wi9u·AI%&A'854泍&ٜiK$VB3]I/vc:HP)x hHcjw:.'%cL/fe''ӊRKEpmG*FHtgg ;~& ]ʸ'S(E^%h%EsέьY]HE5*i*hf\fP78K:0,u*8]"Ec`v:RYaC3eXEe{4,yl#z⥐nJ°n`ae2tȸ #j,EL{+>!I=Y9(ֺ1ubۙUcŽïWk+]\)\W%Y9JE!l,, Y`.lr=Mg{{g$"8Mm-ʒD sYϔ$1cb5DUD9"YFr2\z J\R-0& lNEfL~xRHr)B2(1Lw .;h?5kfB+Q9n¡فtDqG#orzzB:OyZ쑲sV`@z (HzPAL@P@vfNQOzhK~?zPBo?hQ B25@8=j櫘w#(EUr7BzLw!h*r&ڭH.Db \ø‡>i."T|17fVuϽh=*f2ONj!%I#,'Z]=j"6 m tRЮ@М4J -\O((\i=!PV{~*BFQ;"Q c,pO.P-q$gu j=DaK.F`9KwªGpl}6G_UɲʣҐڀ@ JZS( Z`R;imnhdN39=hgө;$Pr.QreFr&'rLsl͐vHn9E殣z"$X##kSfl5ofӔ.S&Y~Uj#5{j3fl ٚRcXcp\a =@"@' ,8tY, Gszlf`_l ީLv`Xd8u }(M5&Ĩ#/$&w"`=(m n$qSdܷe*,Fz3Τ\H"WҬlg*1hQBp\Pi+ AU ~AIE.V)4J (+CMG!V 13Rub\niwvi%;fW; z7CIjl"ȥfq]j\e?1Spn Eg$rkUE2œ7S[Q[ڝFzT1@q\.F .as-.f.a|#.vO9¹QÙf0+\\x8dO;;'la\V|vH!Z\̞v="Z&K'!*%&C-.fQһ3$*Tݢn֋1"'"\+R.. R K3]|Qj1~ gPĒ=mԾt'JVq}n˖c P?CUH ()~ A@ @P@P@9Xߪ.P00GNK ր=}ʵJ=GLhwaq6.;().4;1;4j~JCDr&j\¹ar63Umn\.FUOI95Jbl y4c[pz)I L5y@9FЭ;\ЮG䯵+Ƙ¸ƍqRK 0x 7,$FqQʅqm<B w^s urHݐ4,U>{f#fۇ \F"elA)Ì1IV+b qɡҜ3h`@Vu%̏s3K3IЁ^)Xw#R "%GqA@ q!- c,,HUrr93J\ R\S `>"U dz{S꫃LB(v(^r =Ҕ=vY J1\[۴k;jF+juDG,c+_I69M6@.7L΢f`s_^*FiLѸxث)#Zi3DVdpcpX;U9&rMYR3 wgֳr1RHTR. 9@xV]5Y@GM$٬edٻmh/&gUu\/Y r.14*I]Is;R܂Hؗ XRO&b8đWrS隭6oqP.$`bG,ybqߥ74/E3!XV'ec^2i(&;x~Uҗ,{!UJ zԻl'Pw=sETfeUpp*\WJA,30U1³P@qԥwq%v*(r6F:ӿ4=f7q'ū|}T>]L|zߔהx25<),$lq稨Vi& UrFI6=qqQ3ګ*n ˾,WKKH\ZC]b@ v4%[0?zثl {h&! 1zW pPxj9C<|a4C4X9GNir)7I< O)<8NirXa_P+9CB4$6QCҰX]XV X,XkPԅEM*gb 4/!htEӭS0w= -P@|PP@P@=-09ӈtlÊ̠:]sۏ_i UXvZa;\#iBU0jHj$OzTHM W쐬{ Ƽ9OيZb߶2C`{$ i6`(hAxHP ! =U\rM Mp8!sSq 2jn!̧!a MDZmАzT0#5 !iI}ڀ"5% PN9!eQ0|ݧmQ)Xb) /nFܣc 7[6I|6$6IY(lr(AH`I /a@% U(T gؕr0ƤvP08!gQa0 "%Dlӱ-U4+JLI&ˋ3o$*|)\cXw#9¸3Es7iyK.)PqEqwqNE⃚aqON'bUǥ_rܐ,r-⫚Q{$:?Ukhy}4)ϰrFCX~PG\զBL$(qu?:\W- vGupi$cR#Ju%dhH+}=u͹wgf [DcE'޹'swg$n{pׅJڝ5OsjpeE*dHզcGqS#+(T$JnZi79lT{5h%hZرD#d v)8++l+Z+،;Eq+r)ǒI恇@gPhi r  d* V8֤D$,C楁l*FRf@oBz:RҰK9څbx܀jZ@VT{Ұ1Q`$X"D.dRI\`ifiXxF3IV#hL{m(mRߓy; @Q-Hev}w2 c' Tr\iR0@ X@hgQfb?xqOm܁Ci ;Q` s@E(G=B) s<"췳g smfc8'1l^HDS0[82QF\)Keo5SzagUG9+ZIm1Ldw (A t"ENh7%X,P ]qDLp)؛Q8!V >ssW71UwgTS S!(W97WfA1)k-y *9ۂZbsEOE%Дl":MTwixaFYCHP)'{XI'9K" ;Y2{2ddZMl0\;nzr'/@1VV A-: ?1c6cRМҊij!PhE)P7|܏NCTp:c:R h;P1z"Ln9Oj(N5,lӒֹj}Z_CZ84rRzRՔu->ҷzmJKqnַt4Ƿ("b$(ڛq,G;lاY+^b#aklafvI';]zPCUI5W1YdpsRD4)S;S*6hCE=Z%L(&Ldb"0R0cv'++gQ j(5=a%#`ԦRrMj 6^*dq.Y-'t5dtP@DK@P@PsJih'S:MG1\]ߙ~}bixY] ܆ܠXMX1@/N [թ.A v`CyzzW?*TN(a45Hey;ֈS%"mʒ:tP(䚴!Ig)=D b#)3dq֡ ! Kt楈c*X r$t`0`rh!"GL^tѶ&ԵAIg@G*[O`"aR20,+SsO'M;80ix24rYfVG,@>NMS{RDw O- d媓-3^o1cYdjB8h4ɷK 'ұ3*4V1!9{ױbx"1gYrbY9sһc+2+܀ApBF%ON{Vc]FNxU\.#H0s.aLqNhх8?h $t= bG'qwT1# i]wWEK'FV.9=kPhuT!X7Hdqm2m2$R3U+B]NB.8u'HD3ǽC Ud!dD(aJ1$; HkiJ jR#XHʛk9JNiP0BJ! rN)p!P\Ҹ xg8lLF:#g47p}I9b %U-Nx53F8{j'|F<gC@ h 4P  206Mf@ n ċ|R P=*~(i<2$A=dmtJ|[Wɹ{ҕވdDUc.꫌S4ݵ-4Ad\)# ?betvq@ȯrU9& ŇrEvwTh^$0*lP58J-I:CriFSz,BvQYəIk s9g6 9Q⋃b>8!i@b(.N:n]SRWבW1*hj]FT~K=Ԋ Y!C )HV`-5Er>,Ҹ7@瞃5`qաKksc6ܬ;cҼ/5o0rl{P[H ( (2Ls̞fcq:|#_^sM5gS\׵#WP֜}I/yc[aOT+J8bR(+hRs[!{V)dpp›V`3<昉Ѿ\h dppBc[n9*G0%O|tM} m_A@6,-,LfHűRx)w:)vb&s3\u9a7S-Lvm ];aMEhBd;դ@u#u_.L,1-j$nJ}7a7gq8hZ#U`G.Gh$8S\7j.qc^6*rIՙ-FI *ʍzwMY!]@i-p${eSRb O*'9Üpj|'Äire`$E\(̱HxM'4B ;#.2yՁ!!cw& @qLb" Tȶ"b& kӛ]c}v(9yl@q/CS)Lyo}l&+B7'o8M5*(Pv@;66#]T#ZA @Mj4/+t>iJv-0$Cԁs JW9ϭ;}n]Wgm1-dҲ[ɕ$TajT.Yr}i$Ue9nŒy49 CQO YEm鴮YJv4%A\R8qGKmH]rpY1zZ,+؁^7 G(9={(/R 9 (L4=ɖDPF'ZE)$Hn$I=Se fUY׷SK~jd@{KirIpL jpqÃv!{e9u$Շ9&RcXJݎrS\Efq3ZB84\wfblhj.+^$qEQ%>`[;Qđ0`sRwb 1ގ`6`%i(Px9>a7*;Sb\u;ո 3&}連4(@S4<*)*C`81U  + 0M ŅlsY8MvN+XV< CtȒ%V'KD4XW `&ZC+N(qEF֨8Qt ؎f >l\yy |X (48^YA_o+[fcRGA0E{oē.;<19p6b;@P@P7Jͺ5ah'??7|^s:ș0 1Up% Z7G[Q*r戚vr8aWЯѺ1q&"NFU!@zƊ̀iqd0 i"hxJ@0 WHBfȟ9Bp8 ]P_0ˌTRk@P#Q>,NŒͮU(jl1??HȤ J1h@`,!LC42sJvʂ9Ї¨*c8t2`}h5"1 ާpJr31HwpҰ KBn%2ɸw}Kc9K'ӭsJ䏥RL,k;w=jldy5WKF|$RNG',錋ш4LҖ|2)*!d[*JVD@1ڳFIfPyC;ZHܾIsUDj2HBRNO4 (u,Fqi .TasF2qVHyv!dbqZrFI _1mRk-ʋtz3ءХrIcgXщcgb7}/ ElFoX~s4dS]O*r)N7EԻ DQ24/f;e v0B!0; 8\z3()C@4riግ=:w /RX2M4HH#M)zn;<*]ռ%elMI4~9BQ[P2U-0_ݩ9I㳵}(ϭ L. '=h֘ĠB*@NBx%&aB*49)# v3f*94Ӹ ;(\<̚9㗓T5"eڭ2K #/+ ۣ6%/I'pDsڨbi[p/E䁔6~zҳ = \qCP᜕PJM [9 (EEŭ#RhqHFxd\lDYF#R!#K4?5Kьfc5CE (2z :i3 ̧c^ +uagsL፴Sĩ(iP@P@zP-r) )vN}ϵs^YIrI!bO~c>/C:>5fH B3@ ܄Zҫ(J`"9~.25t۫б!1!5R&@F})d 0r>HdU4d zJQ{RM\EWjLL5 1楈k6\ #6s$-֠ .!0KNHI*V\l@0az1HDd񚑍 s֕xCS:S{SB?Zv$j~vgSB6DNMpE\C{) %XXz zu@ gE6d]H#кRtBMES08kh. }G4sZ&ߙdqf3nϝ8bwp+;[{$ЖsSʂ#3$2bO\n]kCEE b'7Fx&.oR)Lpk*l f 1M)]x0~c33r:GSoSE!늖P+$#NHC`ơ{̃+bhdEO,GQ{LAJr坋2O4A!]p!";SݹPPz{Mnut{ tVVX 084v`v`^i8hix9Lb.iYV r(;>fwCRHpQژŌʢf*/wQ; $x8q*^L6zzӺWDji"IB1Zd wUFu4Ԙ$H%[0pyqzjF1X +@ p@Rni I? u@;C8>Ԙt4:Eb&$Y<G?^8`z zЎhUFEFE&<28a/q.CKS30#&HZ*_9R{B⋈RpjDJllZ~@~" G=X4JaR&}i4y!W2P@W纕b:P0ISg+zdv݋;M0Hh#ij ad(4SSpP 'qְ3.BTzׯ7i̖0bč4iqPqMU0R=iDN{p"tzT6pkD_a& 䍶5RZREC[LN.F۝ i|c<Bsnp)ؒ9l&eF Q+#Br*ZbO1U3&C%d˜uq y` ,+ Jb$Tɢ¹<1u2!t fp+gҘ`s1@44BqHOZ[EaRD6Kw b$!bNW(k[ -nh LC9˓,O7qh*2dA@Bs=M,baPl5LW EĀr0~Zr'b{Tf I) \؛`8$s&_ޢ2TPpkKq 8cb J9twT 2(I^%J-;3=@$vq%"P&FMGWL^.3NI8]-9V*^=,6ΔWfIc3+;8J!Hd6!Rwg'ֆJP@'ʸsLaZ4idz RcN#frewZ|;]Mw1zbw"=: h1s`(ҁ:Ӹ4\cqLgllF0cNr2)Tvp}MGh20b{ H?(.gQUuaX``OZW OCb }"E V1٦1šō;]y4;ZAQҝFT2PRRn`l})X'z,dgLҰ#a5D2OYKQblL)9DNXxV23^18|OЕr F+̒,05r(h (=(/P\]rowѸ<2{pӼyN:[w[fidB\IolOȋꒆ`P+nLWl_**B_O?h'RQGh=~~s׷s<@h Fn|: w;7WP퉻$@ ,))I1޴)nkE[|mCF`jTd" ƽj*t݁9c]oJ81bGi)Ҵ\둚wB*ԄU5b *j9sP8)57ShǮiŴ",_y\v$sYSMFĘ MDB0Ki)G ;wʊ );DO^5j"+iQ C t` \ @Xr(J)7$m4XW$1<v$Z*:a.~ZVP!etgHdDfɯm4  ~=)'pLI؆)n|TւG,݂"ܙz❅q>q2ע¹٦hȳ3#>LRS(h$6TdKEIj'i*8>քSf'y!vLmASi=LyJ/eX[`zg#8M=wsڱ6ttT@JT&7 |Rn$y9UMnC,lMWWb0Դ3>gH4BڡEu y_4wΦbGaw$2$!$\z '?u|2`RD]H HhE-0#lN!CpzCHd⑰րiɤ)0.>mͫluĶy6hR#)GaU;FHF6;!:"[kZn p94Sb0è4l;ي@9G4 0*8t)1I$4fh@)I0LqpzZ@< T1zZ`#+2[T4.O0eVrg]u (1.T9=4ҸPiri49N*CsL &)s\.IRLFC#$pbOZiL zաTP$4q : ѶM=RЋQHk9"Z,++6(1Ԭ+Xeg=Ex.xӹJP`AxӦӳ޲pɒd8ER@-8 3/[ Фr #[ WcL ( (֜3wgWeCsWQ6ho0cMkKZv `uQ;ֱ-cYn8iTvmc8b7#^%:Zʱohuj.0h|D*@u! @hF9JB _Jnb$H 6!51VnJ2K6RwQUnIVŒ5,\f\B,CI螠:KFW׷C\vJ5`حUY9! )!0#oj aFĶNbs!M&r>Ԯ; Ha_#و^љZy'UNB u+IJ.U{WCXwɥaA+V3;rUJ <i؛KfDRIW"ew,X-ERQ@$ҌQ[,:ԀLC"T)t4R,BH3sOpNs6egi3*8$1 S$ IHRޥ"j+(cP3I#CMBJIR@!ڐ9(@?&}\{9(r;aK +C4;sow5SG YW09jMlZq! :LbaA_9ݚwwTQsi ! Lqݨʬ:/ZWOqB)a4OZBR1HLSҘfL 3ց )4qY 1JihAT.2)u' \ ` ^(Xw=8y~Og;q҄0*HH*r9Ce!QLb pi;<$U(pƇ>Hd p#(嵽D70j/uVߴ)'LYfeTzVUƴu+fhKX$[݆ºȝbHc ŽBZ'=y¸'8LJ敄.hA54Ѐ5@bFE(C:S@2($V&ڱ65m,*-sNdqcSNb<|[rHUmu-XSZ@vMU=F}jX㊤"8a.֓veԶ!Nݬ<&:hl$"0qV;RhJ'(RE7d~bKq2bG1|Я"u@P%BO[st,~EojIEl+5fP\jM\|*; P,ck:v$HŜSNB ;Eq.D qI-r K͟Z}C{qF&7Tm,iFj6mح'އd̵Z+©8V.R&x*g .9 ԴT'CшL,|.~@r IV+u s=Yiĉg5uGeW`;dZ%好# ʸ&ġc4ei`€%e"8$Lj̇0JwVf1M3E^ uL0cq;Gg.1I;P!Aze 3ҁ {b`/4l' PSBcCj4&bmϹ5FEzR" P1(&As@=1@3RK;rY4ޠ)9JG"B䏥44EבHb0,nI"͂7E=K"#;* zbļ? p© qB@`w=F*:@ 41تn..,1CpqږEx lҧ[z)0,FVm I${0*hjR#5E[DI|1'Dְq0hOPڐn-`\O#΢PAs2Euзp?a,:&0&OUUS5jUKeD|#G1׃jHNEhRk*=k'dg{=+e81S׷ J1FXpl1CR+lkL!EbEktlvG'Qkr@<E6GzMYuK 4ݛoOc^ezɮRpan9 1oOHvaz+F"jGA^bzS65B X11AT!aƥ\֗(2{Ӱ3(H- )X. rIX7N*%$lqlFg\ 6wZ݋wd{` }4ldff](\RD0=;νR!OV,{W\b2>!EPVyBxVU4B&MEj"ʓenIi"1yRs5@1ЕvHLM>g#\"i0aʵa3Q$rh!\qr(vJ{XH) c›sh2q#q7;X’]DX3ar픿boqgvYJH!;{֗D|*4rT~>\楱\X#^tey8!)X9TRx6#]h+wD>o\S;o6cʞ4] H`ߚh ɚ9?7~)؎vŦNrǧ8v-N ثuS 2E @ޯB`}ikHb;Tp\.)|M;sIoAOܓN87;izVAR2E5 JRL͕]56,!$*OʥF;I~f9Be[jہ'ssnZCsY6NJ_ֳ ,$E&XբY+DhV\Y 3Iɔ$U"4ke֪ \ҷŽs+x҄vCB޵(qlaSnwr;z#r婬fc2܇嬑3c7 ozaUh0AhSdht%.D?G.DXm !e9Npj(( A{S'+`UlSHDmN:SBzs. !ZB\i )1\y xev3ijbe3\s+ԁS*&3(FhhX97zVɜ,j{t'>jGjIkxP>aQ:Ko6ުQw]qF܀q}:g֦^$Ym=PO-?gzxݕjPl%5k$Ueg Y31Lr[c۲b)t3FOgT殍:0(Oh )]:ՠݕzik˴\Va&QG{!s5-+ښPvۇ!XOzDgKPQ[@ TدR*RZ@ @!H@*N! He]hx%Heɍ*HI4''z@*)Pn6žMR} OњB).ip?1 ^I >i;\j." Ir5s)"PyL`\w:u 0h hi-΋O 0ZӸ-J Ҁx+H mulg8ƞR&aE^۸7tV=EL9W槠!Zc)6 @=x w3"zU^\P0jz)SL TZ(PipbW1i>\." hB)ӸU 6wKdlW"7޾JZHR`T$ qSa P1F0zK6ee5sZh^GұfMr ARM T *L>w*L&Uư& ab&3%m w?ڈIZ/yd$zIKv޽9ȵ'ݬfO5xf  Q`=;!$|z|=dBJ¸ Qa\c 犤"-ʽOUv(Hw.+ +xJWdDzՌQ@4\!ޚҨz(m担" aNg\4AKl 3K[q WKmDH+]v[R;iY.O4FC5iJ.-}Zi/8=CIvK'+tBX})= 'hԣ) I}PI3`OS޺"VH9+jj"kb#v*u }kd{\}q$"I6b5ƒ֡[6Jv騭)㎵Q%9d؉媉Tw[z2?'4օI#Y!lnҦ aY!UPq'":c;6¶E2lp*.2( E{fCF2kD.X`̼&6h6@AFjѢEsڊuvdg6н[Ye xGun.;EIe\ ښ"#g4FѓIDIA"SҐ91A ;@4!@zR)Vz`z@'=@rSCC*4!S,F0\|8qi\@-⤑0i8HA'E;@4F=hbހ@s(Dc'p(IE.,Ž6H bh>jq*QuJ EӸ!9#cxCȦ0Q BAlvH19nwHcUHp'86qNF]@ N.T9r艛v&la۶R>SBP19Et̵41jYPѪd`沺n¹)9 ;P!cSp84iٛ$XsJɅ:.N;zQ!2i-S8f%H(,䞦WɢFRYED%ɐ4~bE6xzͻY,v$"Ѫ[V<բT)7ݟfnhp;g! q@!Z.!2HZ&YL 6'pWO2hW%Uʒڢ*fq犆q\H!fF ^g*jU6i;HU4&[jɶI$6 tA]J>c;(ag4Z2r}(ac1SXʚOjJTeR&d/459=Pv7\6(چ"h45W*o4p )w BiS@lYvy wl-Ҫ)=QIԒH2(`U)45& [j*( OMhGR\.#}`=!=1A`5R1Lb0-ڍ֞d6?-S(I DKpI߇AW+BjI 1QS 0}BG B&&0>&۠"¨d ВGA =t9YW`>4Zn]X@HYH 2S̛.@ZL TPRaqԈxrsYJR$Z'nC޳OR" &i#ep{F-nBL$jyg ZVVgf 3ҧ"l8nGF x)FLt!LL98B[C[E&V irddVFI= G4./#9W0PFSOȊJIJI2*+\ Qq^h n7"Űf`sVs5"vg&@ p2ڄ3)w ⺮DG~]iKN=iɮNhU 0Ī8瞴 &FہTI6ZA1VW$/nj%;!kgV+ӡK3Bc2i5fMLvǯ*y]r9',rzb0I '9$(Vvw,,zZB +Jwq8|Žd+Y =ơk:֣L܉2ߥTW*$Rہx"eXExU|2P|$w +`SV[yp)V!ߓR;G<]!{EMmogG?·&&+o=AXZw3q.G8$s,CD927O$A.{!l$M"c "2+*#c鞵*Nh+9Gq"OxߝU"^vAU˹ Qnj ֹJIUSV9[T#%'!xʺwDğG2eU);DaHB RHqE4q n#d e74jk͞`69!~afCH6I'=1zGm[)J6F3RгIIF%;mYwE6S]L_:eS$cQX/d}Pbh0}0ҋ 0ur6P+ɨ/aH@)h9(kp@& TC,0~_N}ꤕA"IojV@)J ȠUr6jS1]R=5ݙxlCK r{RVQrct9(WRgeAJnf,Lc@)E9h1}W,kK- YCbp=i]]ܸb# 5*cHԳdjKLH5h\zA !$mH)F4J@(4bX\P1+.(1[6xl+RE JE\]ʋHr.OACz31P5t[ tn<\{sV.)XgrɧG*^6b6yZլRz = SJ.6sC@K`PMOz+;g$֋#gG܄(M&J*=h)B,7֞یgW('*?. =h&)e4*O`)x@ bix ހ'4=p&Gj4ۓҝG`q Ujhcbw{bSX`Qd(4\hr/bF3RmD=Xm86)X C 3:%PxVUܾQoq sG(DsQaT,cz\rU Cswgϩ1BҮ 8x+#`Z]i#-7u; FC$Saȡ!X5x 2OjebMnR TKBY i3"N6(IsBp@,1, iD2y\cLm(bU՛J> ۥEg`ҴHI S(q}iZ@"yxP+4l=*Zf69+6H Ċwzg.~hHGq4Z%ᐤE;kiܛ (YV4{ ?&W`GU&y`3“eciwB,soҿR|ɗPnUg܇VSB`Xkfq/M|;*:dc?YƓ9T2PFz4V8piB⤴BR4Wu-2%0CDDqR; R"_(I巖N7cvbEPPZ"yg\.qP۶hBJ2*a@P;1hn}1HFba@U=)BHYT2&2)WIvc]O @{X.u v\ 5#pUXH3'Tk! hIUe mWzJ8&K};jV($`Rw1s oh8iR⋰*%â\s@8tbh;xdYjoB 3yQ;ij.)H`4V֘1>94T @\p'ҘG! i1#Q{ ;TXqfxoqD%̮'UךD&l|ڤd qYOB4mQ]ݵLsk9 ,О(6Z,2j{Q[c#Z.P۬*sҪSqW&ڔ5T̥ 恋A#`84N*[IBmdPPRP#K1(=3U]aE!)iC@ ڀ#c" I R -0dPX|Ya ޹Y/lQpP1'));p8]L8׆f60|K4]OLPp( u1 4pnQv"-YI2fH8Eh2;A 5M0hy&Mp:c Pp0w|S2ijin pp$i S4ݵi p fw ;iǗMUy踮92D:BH9 ٦"E5 HjXsJ<=.P&QZ'G}j*H*$ =+)@85$Hnh`9fPz`W6GiM MnFS@DG5c&| 亢K) (cYx#CarE†|<}r &%;H LWmgra57(&ثIw2F6J+4/H"EԈplW(L(X R64 jCFEv+P⛻)7=ik͹M&a>0LbA0P(~zIJ{DF,rʻU7zI6/vqDRoWa&cK0JW%+OC#Fܧ4ZvVбmd&:5h<}* Tau{Tdv9cLgZW ʫ(96[C%F"Px RP!zMrmK>j.OF*,I9\ZF$ [tǞI8aT278b3wHlM 6*zi;j*++(g8IEQ EyK0q59X+!ʍq]Ʊ,yMn@2xIP؀z敀Xdb8~4 "#FqE\Ԍ TܞA,Ն!wn'&)آ$I#y . 28cY;oOZz 85%A<.dn? -@  = euf%bg4%&(ܪ @wslֶG1 N_.Ȋ(uXi8p}(w'"1}i$Rli  ⋊&eʿ .KB.U/֐Xin)i B:i1Ԇ4K|s^;Qa)&Q f:bLdFam46 (jw O.zcmjq#H$f ]˼sRh,0K2F#bATI!P}(lr:PJ`(@pSCD(;n4 -HR@)zp(-\.1$eqԶ9G[ֆѐHg\#r*U$cpZ>qM]nd@4!p) ZB LL6oqBކN3WC.Fh#l;0exsRoZ5EY y0Q+XDR,zkk1cCe"MMbW,KDy֍ *ۍ*KJIm*3[ LԴȩu $==mQ2ݔuNW2ۆ~آ8 NO  t88:S8M|aS8fWi ʮs~;c%@##*O'>Vv z5B&ܸb6^(-6W5% ;ã0Ge qOq?#6Hʯr@^oN"8j1RjPH@y1phS%U$S@)h1T ހH*0XNݍM<1gTҚ^Gbi`@ޘ'r<: @98b3֖ B#U1$E!F2) N).(S1@0@ 0Pu9L(=h=hGCc,"ː$ :B$&Vuܠ=i.0\%qZ#twE4L})"D+޽ԬdUAL} Wlw1ʒ+npvyId Bot6eLD:QWFl\i2_ZӐfCCȡeܽ44~jl.RY@rp֎QҰ_i;\DRMF¹1NøƝ}x 拠N'=:toty5.(N#qIZ.RMKXۚm&z4bUr{|:96sM0f훩PELer?cI+)8V#9 ݸI$w)4.p I&Ũ.Jq:+m:Gc:.ŒnsXRҮJ訶PhF~ PH=+r~c֝a@ ܂I"!$M$r:eA+ك`_palq srȧp'|75!6v5{Yyx撈sM1;g;h5:dʋ#gY!|qvļ1D(e|oP0S,tn;  Iܘ9̭%G*G+7]-'kC(u4z6p3-{ ⋈PCsL' g<!U۞wf@ !=(4\v9EYP8CbBn !Hz q@ց/~Zݝ_BmȆ;֐9@X<>i^Y;I(,.T2dPȢa2%4!ihΔr>7:▏q8s\]˿_94ITOJE 4gހ. En ($?kR".VXRnyU4bzSwh\Z@-;@ )! A׊)]CvvBXQrJMAvk#&( M01j. K6ITZh;Q4/^5ԀQҋҘ )9SGJZ ޘ'ꜮSwV!T/j(#Wh9H,:Sɦ!P1HLݎI=M V r,zTa{_ZQr90ý!zu<i44O4PxY'$R E(T :iq.E&qE 4\Wu eRi\CW#n֛N4RZ@SHE2dj֌HCp9az*ܳM%aFjI'=@ p< m:U=hG@=)AR QpxR) 1piS)94s;=O]@g9!ژ>CJ@?w;㗊b09j.1p;zЄ:VUisSnV"Ԅn(bb@Bq612h1#0DaٖVܹOJ+$P5XnPqۜv=ch`!& QN$2  #=iL7Z@ z0v}LsN;p*A\#+<叭ݾZDD "f*nH fYv `W**`T\&PzQq =M:QpdQpI uӸPsGnXԢ,PE%> 3ӎԞ!c# J zRf0D\ObXҸ ~1@ cuȠ Q7~⫛BmF> f՝nIv{42-^ٷ+Rw@d.@G(*y;XtLXsṪ dTR^f. 4F QHdJLŝI=22c64;Oy ͨ >QڇPcENJ"M $w$ JwіdI$<1͔L$3!!!Ԑ֘XuWYteh`"in (!Uڀ"FqH[8Z9FqPl>2Sd=(U`$VaAzqȯn-cM؝E 1391%egf 6 YzsP9'j'qH+$oZnWZ $Kp)j pԀ:^ހ =i}kD =j*O*ĀME9ho 0n;hv4V$%kR6uw\mA)XdnpjXI"1sϥ0x45sdhb+#4`!C<SRka5r zԌsblSL }N+yG67mnM\bpJwzPJ0ÂIhLM |Jw "n ݏ\LesJiji:#`\RJ]>dHaDVV*23dѢ"$QEA-Dgݎ1.mҐ@1jL`B;]\hXgc֐ҁ #4 PK(V?CwUrOH \`-$vDxՀI>KQzZ -qj,9WCP@Lha!=(PFQuڱ*IF}h,3Id4n:8Vdk֑B4恊=h Jl辂ȳRPVFhQQPڻOLք@JE @R{i84q((E~)A@!:!A8whiޛhR eӯ֚fvfcNMKwwdwroC߷h~~V|)P`0 FdBv`HX'NHn(ІbsHZ4rMc6!Y$pzRA Qa gkh9$HB Ñ14nPgpNMr?M(jJsPEe=:Q{$<<$n) ;h@ q1!U = =h( !XЮ@ Bv%2/jO@ 0{3bX9#֝O+!M!x#pCHa@f7`|?wt7k4hzRI'f2iZYZG98TIYb3@ H 8SP!E'zRq@\33Ҁ^EY0+sh:6CΟޕ0d  G cik+1t  $V%vzwA G^4x1""!aN;P1)\B))XI'ibE==(`(#(s8L`s  Qp@8㞽ܜ\@8`ޘ@H,5T pQT>R}i$r*wIbZB=逝~+E$aK+֟+[l(R`!lq ݚW :p5 (`T'WW vsZmaYFh dnSL1,9<"Ɛ 4c@=U`n) hWqzF+![`0q+Ƌ'2Nqq ns pXp=h ⍤Qyf8ҾYմtٖ)r@9 it$U# q2_/j~RwJi.E8J|hP'@.8y!pE.X)PNր$"RFi;n6=Rh}hg@ @w_zVѝ ]SQcMۛ;@]Ğœ*1ث0Jc]Ėw vf6OACw@j@=M Dde8,R*cWhLM *nT  J'$PP!^h9 S@,;"F̉< Ԁi'!;dhcAr9j"1ӥ!&@ Nz Au$u1 =hr>08hrh6 8=(C4\Qp c4 i4dX*8?A'tFz(J  @ ZOJ@h0NyUgϵTUMdg&RSGo4Y2T󦘥X I):9Ycx63MI`MaƋ(.EH aWsM ژO4Pi.U@gH)=y!r1L9biSthD;cRU}#+ylG1qҕ]O>(>.(CȡjJG!E*<(p(zF<Ph4 9ϵNDmR1$ɻUխaڤB0P; #"uiҋsLvp1f> i%cYgT\NM =+P<2;@ *]~RrEC֐(`&'HRdx&6~Y_'ަ _4)d@lA'^{v@=DI37W@PG1)@=z'?,"2x &#fۇ CϸIދHdw1\K{wHr"*v&knPpi1y 0*~_C@ sڀ%#w\+=jZc1yeJր0!Hh@0H@IpTa$ XpyF}E!@LD$*D{(ɦV¹4V;Ґb{PR=h4fzRNFh8z+FqmnF{PxO@~4f 95v^v8Y/Ef9b}i@i LBsH'a3@+iF|>S[$z(Z@+0E0H@[Y1'KEygvV!J\ֱCXPPܠ<N)B(iCրc1P:恊vW'J.h}hqBW@ (?!8<Ticǽ05=K<K' k1u23;}9┤۸"jcp2(@)S8)7ďqCA Ұ4ghY`zP Hi&))4 ژApG*FF$]&rF:Buh `-soнy?'Uuk R!y4AP;xHR2>POzzުr@9 EL .qw@X]v~ )~yݩ. N;yہҝ pR F'8I6G(`!|t.9,ŏSCzԀzҘB$Jz֩VCfjWx?z`s@ 4C@(9'8lzPii$w\v܍qM+bVQ"^H(&WflҐ'esXS/ cq@?ZCҀԀQPB{iVD}y%&RRFsR( op瑞=Irk P~4ݺ 'mDL& {SURXbCHJ&h 6s], "]{)U'&N N14\ g x1 BoCHCb'` @[37sUn>[1ҝ '"CU\}itsڐ$I0%RtFL֚rTP^21M"pE0rBx0R By810 ދn*4!H&SJhZsր-_ʟ`@0wݓU& ;+m,cԀVXtlc4dʋpLr487"jz4V)6Dg4zS#H4(qm_@i4\u>"p8+vQLD!I7Ӱ aCP)M58 '{PQ`uRrqښsȊ2sCV`d) . 8Ber+Q0MR,V-u)it(`Ԗ9C;,xYUaӰ-u#֐nqJdIdy$b,iݱZ, NwbWܸЕ~IlzR,҉%gګ(SnIY bp⋊N !)EvXغgĮ&q@GBf cր ڀl8ʘIl:,Q>J1[IqraVrE;k$VP !:s,op#lКL{XA^ Bx(.0P "gΏ;nG?aC$0pCZnawgdtH~S)"Q(ƐRQNԽ[jEO C&*N3jJJt7 &/r֤( {;e'q$(€ u( & (90)шL {rjԀT)  a)gځZozB}*؊9S$|b IS`8`0_41BH*~i) q֞4t'HU,>ȪҐjW 1Z` }7f֐S`5 =*mzu9Ҙ-J` J@5㱡ifHPIeܤ/Ϸi]P{.4UI֜CR mr3CWa"U`-[j7V 9QVTc֠ ztPp/mLˈr6qkLor6ggk4+6098Z .F 8qޘ 95tIbޕQWzFi\,?M-\, H62,eE]SYԀ'i9#֋;=)ma˟1}N?:kh"q1$kOoa6?ϐ%ϕ~Z9d)g$(PNv`O$Ҵgc97XjH)l!3P2HHW)73M&"ZAqY FA`)4'@( iSS .63G9Hq@ă@ .G,6秦zU 1RY nhs担'+4 Ŗ"eI#qU<؉X1s@ ϵ3xt!Hdk3pRd#ˏfwڄ'rd%jUF0[/*Fnvm-['MI@nf.6@P{UXb][Iw,2 @Po-MSKVARP@v0#,zw|R<21GSGj4ŘS@%bʹip'|yro#g } ʤk%" bsSvL[kTCڑ@((A"PKU'P @ 1@SϠpB#nPxlc4IkA9i^N|0 @j& Q`S) ip>@ iIq X[g6msžE_'>].W9'P!IY[g&0m\|ri:@9xS1 @ AaĀok{@!'|R4dqFiŴ @@ nԀnmG!ov9j6 =D,1g94r7#'4 D| q못JEH@4S{WV*֌`_,HXha8jJqJM+ !9H $M/=hALbtO]zKٌaqI#_0Oj-\Um?Q*d$R_p2!dYR*3I5CpX HԀkycDy#dWIzŭf~Lw: @d*q}6( -̶ ltkT&ё 4=vmAtc1x^3OhLP22]>X1#ETbԌ)tx&-&0bW˜Za4 P` sҁ4YNsvcy2FW@2:a?  0G^\-^\,-s2OZd 2}KAEӸqpF(WNNhP`2;z! (L #V li޵QOA.ݞ@$@7 hv#1M09Lb~P@s@8s@=Fwz|Xma7|cZ.!(|S()mjm7pb Qaz,+4@O@jri@+Lm޴|LpQ[#JІ(`+v$đTHR{n-n +6.>$D9q^F=)YX搉y~8@nm1a1Ê\"yO3 ƅkjmc4mn0Xn,ˏ|UPH*`Pdhb7Xr \t},+uzC(v!GS@Hb:v:kiIJyi;yښeaԌU\EڀYu0w9 tE6쉔U%IopܬR #(O mc-W 9%YRVm*0OҝRV#̒3cI++]\wHW"*@H (Ġe/Ry1I7&&0QzJ&Y% dbhMLb)9{ O<P@.x 0]ʉrWJVDJ;T>92J1RF)M'!(@@ wC@ƀbu4Q`j@44qJc`q@1l0qBPV[@;ЀSӥ0`$@lf9?J].\aDP\l/sBZ pr(ҀpZܢG;Ry\n)BOA0@p(q@ Lt@$#HGاc8V 3L @0b P!B. ;1b 3ڄx#=(%$x&GJ@(7_zp`/VG>jh@#-ԫ=ȑ,J/ANN =jD1@+0SYA##Tdg'@FE( `GqB`) 7zt`Gҟ@ccN;I mnKh kqMy0U8fT<0\2$|8K@"]}jt($2EnXm8N09Wup9s֐$vxx4t3@.( RZ3 ⋁$(T[^iV BcYr֋4LCҐI41LWk$v#4&6(LjL 04bϹX"1"[ fh#՘Ӻ gIZB0jnT3*ME4PP@( zR" v㰃 S 8BRrMF@5Qvi-E Ehz .1 !T4AՂ4 pX i74  J/j`( 4CHh9ZUj`=U#69(۵1@4IZQpq@ =})ed$7Q &p35"1L9A)5 Z(NqG6%*A#"ʻ\)5 694\1N!|)\@ߌS '?Z@$f=vT`g5 '?IA1\v5Kv f[{HdQ."i nl3m7cۓ(@0HbzE*Fg/iBX^Aި9\-ԖW!q) LbsT}F)w9]J1-~[.0cwg5dw!$U(Q1jPVrT7ր1iA@sրݽ)0N0hzXM 줱VwZC?E<`I-M6R%!8ןJ8 C @ wz`#rr)`Szkxu*è"h#)55–K2gCsW;t"hiRHVii@91̌@P~{ @qw+=(\DBb ssEaH`ig4sMr3NybUaK@Xo v[ bvqH`qYHakB~' luUrkhU,(E%< Б@+@\0$JvHN0'Qچ%$CcGWdFeA tnIh!@P@:ý 84LFW%JCm2"LԉJ`@\@hý1jPހ,3qɔ85rV!=8zӰ ڀQpSL)1i9hw`78BdznIpr(UR00}O@4zxFnN|le~U^{SR[*}@ PۻqOKC jJABMb;uI{=& e\ sZi Ӄ@h.x1 +l:v,$~R20>[ )bx=\A0DԀ)(^!# #!*ø4Ӷ4H#ʮ6un<ӳs!M`p &.{P 4!px(`@% P $hXh0@c*jY WEeR@n֒70$h(t+Fvcoq$\1"-Ґ<}iJ.GZMRrڀ Iqs5ľl4 RVD"q@<>t@Dopi'qP[ p>Le&ycHG&7(qӸSwdGsHcg41TPk~@/jJi6 UQ(ܘpr? r[¬gcٻjjMUN(tM.K}esdbQ̋9#ŭ %!;shb#BKR:zQƼC1!F&IRRpxz`&ӌZ@+1` (8@ j|#1p>\qM !QdDB1n4+-u NZ`&}踅(֐ ;sMLH0@GZ (q8v4@ tNEg@*{И5P)P{HΪ 8pI&5A' 2M .ϧ\ݫ yF٤Q,|[73;}5nw;}(Qcjy¾@€ Sր-]x7l]vS{(%QRXbbWA@Kk$qKxDɃ+mhAH( pIo"0<m4D&*͐1ց7-%.i3@ P@ hL"hg4 )w bBS 8)r䞔Z,&H`vOj@!ga3@ } R 1Lb{P%HDn\69#i`1@hzPN0RK3M;Hq@ '&qHS=(`" J p#6zz(Qހހ@:=:[MN@1JWFL ZT3]mt(EB$]z V&bO qJ4zR@U#m>ՖGsH#a 0=MPM+t Crsװ4i h'R#pLBrL29VaQk$2OKXTr'rR1Z!ɦK $F̑I-溘EoI!ք:\ B*䞔q`Whݞ\Cg¹Upi163}Tenj3S`qHcy"j- y%&Ղ`cUréGΐ"1ց 1@ QՔE<aZ$:4cYZ+R2[Sig֪6cך@!Jʲ{i@hFGS7) F:ah7 zv+`'49im9n})i<@ %!☃qێޔ04׊W]FAP@P@ qJ( Z8jth8D;&WcH x"C"G˹Gi+VY]43c?2(I-\< A(n!Ub EP=%P@3@dzn})pc H֘ 8bq@g@AiYc94۸1i$6zީ5D)K&y4aH@+ãp[y\`ǯէaor<- vԤƊR1N`Zv1$䁚A@ =i Qy>=Tc׭ qӥ4u1q1}hB08nE b d8o3Mɵa$q$VFIM; jKS5 KKyb;UڛWuq$gqH`Q)ݙ`8Za@8mP@䯰iP@-)$=CHALށ5MF}Jq-MvR6㔮RQZ @ZczfYنAwF{ԈALaҐPbw9ؽ3woF@>jxrGi s@1@ JOy`.CzZچ=D'~\z@ @)<fۙAq|#HFzY2;P 0<L " *SՈ)&:@Q `zH`+1ր=ԀGWU7p,麕֜rˌ6&& @L͘`L@-]i&s<+OzdM[*F749/ځ QȢONcbO @M8SP6-c@C?;v ݞF)ҐQ@ He!fjqjܛDb(JX)%v6-KΈES㡡0Ng ( L@qi0)#<  <@ A=[\ҢRբK2vm5rd}* !PM!@ĎQcT-%c (2GCciՄ--ʶhI!t=c4 $RYNqMw"1s@@S@ @ : s%hP. KI{Uy_$,~O©5b[iܬIWV#i2F#(Ò7bRwwd (vy$hnI%d02GI: SIg1(c(yby!PP u4P@P@0Mc*݈D-%(Ī*ǵRWcDfB 498 Cҁ4h$picM! (0NpҋXʖVg`!E`NE4ސ>,n`ق2H]rrGJWd !]##7!=E!\R˜O8 ހ%Ha\sTbD:R ` m/$Dd (R`X:M~[vq9!Rڐ 1L1ןJ,NhAP\#K?*@fՀ}żu 0S\wHJF]NA$IrIf9$)4{gXĮ#]NM5 :^xS@ }Bբܮ!O_=ْ@nxO#;f b'{#H#]SroqXZ7"L3S(VX#}T+4FXdz 8r=hå  c0 9E$H?Z9x##4x. goSVw+EH.9lc8 uIo*!f%8`j9(@h@zĞ@oz\f 2B"6B:尅vNi̔06%->@0cڛ6tt&IP FsVrݑ:f@KRM$j9F3E1hg@ @ zҀ (%/ ( ( ( tBY2OӶ-DGcH "F@&Wdt hardinfo2-hardinfo2-1331e88/pixmaps/bg4_light.jpg000066400000000000000000004145421474767047500216030ustar00rootroot00000000000000JFIFExifII*bj(1 r2iGIMP 2.10.382024:08:19 11:51:34 http://ns.adobe.com/xap/1.0/ ICC_PROFILElcms@mntrRGB XYZ  acspAPPL-lcms desc @cprt`6wtptchad,rXYZbXYZgXYZrTRC gTRC bTRC chrm4$dmndX$dmdd|$mluc enUS$GIMP built-in sRGBmluc enUSPublic DomainXYZ -sf32 B%nXYZ o8XYZ $XYZ bparaff Y [chrmT|L&g\mluc enUSGIMPmluc enUSsRGBC     C     n[2QkzvLf 0DJ;W]rVt]qj&@"M$suHIIψc3|]kuMI2d2su޲kAbAmPT8>19Hʹ$@mn2 r6mbܓR&ڱ fn lT*k1WUvRML]5ZXL0*5jj$9:TzRyWjeՒ2E[2Nsy szںRe͎yaieYEI-a$3y1I,;iM" wyh͑B (C .fh Aܩ M&jҕ21 be3A@uZNg8PG+dVaVU@HLJg,]fpI[s0YLڠgm^\9` $lɻNs4` `#N\M2)` E\!Nl%EojR֪,$GjJj {Њ5AIWmzsVvfDyƚmZRn C31IUk g,Y9s1<ؐR jYb;&P1H[b &GjfP,Yw14 lPCBw:D$f{F0#ZV$ow>rzbyf) pVؠ*2K mRLcU4֪A[g9PH1LgK2cg&suw馜<*$fYHLR;4vLr6a b EVH@0 E5%\2M$I#1JwZ42eGF)YzEW4jsjeI])nJ&ITcϓkt֩QCD)j$̕Hˆ%,L&g{z,9)PBDBU nᙒf0 BgF>`o\BIcFo2s3Hdmq:1P05֧·Yg]1dַkhĵuZ@i2UFVJ(IM$y2 2D):7K,Iqc*!iŮHUeV59=-Τ19332P{q&]\!Būr#0] ,YiްbW1ZS@\P@8k״eڎpb)CU 4P )eTٙZj>.&ZE3u2i3sKQFֺ3[.EsVںbDZ srziKМj(EX$ 5LF&:vLZQu9kYeD΍fʚH*YQWY̱M!HUgYŠb4@/zMj3:LTi6ډ2k*kT$z2ْ]95k@EM 9LRB"I[ѭ*g eIzjLșZ]j frݻ|\CHfTUR3h)D)[2T(ie*My13#<)rʹf&$ [(Ӷ\&v2]ώh3 Wt-E V]h((R^e\N2"RU-U>p/T5֪WDr$:89bpC ks8P՜uʚrkKBKtVFRffjFUʚf!t!h^VSUP(uwYgǜ]@nn.% ]uXǙשNBD7֪2DWn#Fc3qcIu9:̽F!UV&frI@0Bh$bK֪=mՕCWNMWvA eA2˶vvMCZW&ըPHYѾD -Z5jd؊NϓD"9WHzfxcc gtt]sfr& &n&5%zL]x$*s U4C*M!Q%]BWNe[I5g.:aND(Z%ꮨJ̭܈XưyGFRFr&MmmTTLe31RĎionRf-Jؓ9s0y,N\771h5#*^$M.!qbeM6ٱKL n`SH5VL1mkW]wRkMt"Ԍ魏iWM\+Vę*g19ȺkMe,u`Qv9v,eH]kD$'.3JT4MZ8$IVbv֠Fiψm_o>nYұ̂"6kVUYGLN|T1u3!Ag! h7!;wƩuWBUEuP)"f3wT=h2M7wVJVDۙg&2e;tեwIn dAjމ8-EV T@sk9f+C9l\27,)yʹS@LݺZI9uT6,],3fqΨ4g0 ( (}9&n귫bBJ֫TUt^JCT}\at +G֔L) --(Z*s}.YgG>|:i#^ f֨lc>}&t#ϛzk٩ B2*ma7ʲKc2"8yJL8Su3!@CT٭j3&i)R@c{q@LUstUsag5j37cJ֒9@Jtk{2Wtkr+c9bRitZfJKzk sUntDkUmD3$" ;(ۦgzc2gjr42K2QkYѩAÌ͉͉Jet'e"JFtHe-",ÞET*!ݡmDVMc2[3R;5LZLhlR9L5]s[Zҍ7֑ZԒ5&Յ$uV܀$J+Z֒x/7,zƇ^jcgc9J*MdҺS8Rc3":в(瓗ybE"$K0QD;4:]g"DRUEd4 dTyX!u#/m) +[q{ڑڮIjQ%۶vK%ekd0ިtوS32K,jfW[/_>x1: 3tFf@HII×nyF7K.f'VmNxTk%Òr2+ "bB)9y\fg9kY'NA];$&&nN,x$9"* Yr-ܤKT홀wD=jURSJ[։D4ZZ -APXeFvP*9~_; ЁG+%.D*Ehi5rfvg\Ie)߇.ySYB(¶nbh(.T0 jFΖVic3lY:@mUt2Raf@:R+z%;HUL9nէbX:] HT$URVeI2:l͒c;c?'sjI0NIߵ5 "5fݚ4C+3leTSJ&:W2b؜s[!z#94==Ƙҩ e "֖F nNm`q{ݐ)-ZL5jfb3۷AUȻi*#VnBhDh\\Od>x>>T޾z25B-[YVD˦iiLؕ:f)˙(179&E4Ts5U0AhfMnsW9ls@׻.e^tlaZ U@9et)l̒U])լ%/9ԝ[.g<=E$IfZQrk8jUtZɢT:˟|cxl3#P:~˿+DZzm12hk3IeҤ9d@'LBA'>Ϝ 41IbMkl dC @1]64۫+{RP괜UeihڴJV1{|//lc_+Z1*uKmϜO]/Y|קu%UM3҆uDs):d5sI4/NN c4H4<*ȖhDFM#j MZݩeWgN ZPr58Zv+Izj³ zug{z9;wS~x{{+2m.VZnhK}Dk_#vg|κ>[tyתU'H'BHӛW1D'T syPMYΙVfyf(wJfE5#B;8sd`\97 եh*Z@CFZMjm &yַZIϞ=jc8Yf'D͹oiT#'yׇ^\t>|t}Ӡ&։2ސ$iIdF'@#HʮHB =#>{dFzz*fRNSZoe+4Md4a0"1I3<$Y˶( jg9v#m1*9L{zh[WZkzkWiuV&ZkՊkKRetHvDžkDдpR*d.Mۗ>^ݷ=֜g&ڑ(g.EBTT%^qcLdߡu5s֋ƪ&ɩҤ&NksS)1J;fC8@Û5"2΢dJLesaѷ.Fy"]pS t}]ޛ]Q:c=<ӣ iUg=\o^oS3uIׯ.ytry{&ٺiR^0˙ytk~\="/9ƮzjVr1IRVss5>,Fjh>K>ls&{SSSa g3)24IBYg:LFSQ̥H)A"_6ȊuJB04h {n֚ޛ޻bmޜILJo6;g{y^j\Js~1GeIKQytRMӧZc:\ E=:g43@⤹jfTygF,a@gkZgV*cW-"S)2Ls')dl,dye"r Z=ig/Z$o5'^ˍ  [8gL{zۧM5[a-|>>}3qXtў1ϕI|/۶kB3-*N~pB gn|NNRW.[jŪ٬cUrRərFi H&#)L.[* qwYK1Wu2U].bMYQ1}'W.9oxt<ן;qjք9@+sե\9*M"^|Lg"mLvЩ\3.w3R9*JLa!jMl:#YՋfV-Fʮ~l͜9RDDe3UR8BL8[hʪii2lMY% :\ 9i}__yipN/Gdk|}Nd\PڪL\W=/'nzϞy˒7H-wïI6/9[iX̼54jJgLfZFyI~nAVFtjU[6Ɠj:wcH$bj"c9lܳj(5DU­H!Pm4Q)kQbHCO~Nݸz@Vf٨jHI$dEDb&rsd#N-.s"Q3e]7&*g4heZ;#7+& Pe0FUZB}J{YckN#n|σ1{5B\̹{s7%g,+quE#AD tt\%Lc! 9$d@<<> ZJMM*UI$Dl;JdI"*%3Y΁n#6V*.ʱ1)Wy=ےFqUv3yqޟW6&HOGÛiޯh[yHELϟ?^4gVVu\cTQ/9-!X9ˋ*8HZy!N[h 'E|)`+UcV4fRTI+Df0zH\uR@WB)U(\= k Umq"PҒk%$V^=9G.^Ws:jЄ:8ߟ<9:/8WQҲ!ӑ 2r4qs.*cnxߟ8փL&@?;8O (O(<d[efV5szv5r-PLgJL EvLeM7" f$&hI14LYBle0,*Mnz&s<}NW4TֵEyw.{v|=[62A:9s{_Cן[I֤rCK̩4ZiԛsnjDmـ/u\UgaXYn碢YV3ɑIlH$F5RkT*Lڄu3vl &ǧ lʳHduGU4tpz}\7H% r^qrNQ9Q (թ" URkJGjG&O.5'N |,y5`x?Cy}yA@e'yz|緟e7}kTX?Kj%ȓ-VQQL-^fUV˪,5ҏI˻_JDz9\m",Ǐsz֌l^^OcW>\&ek%C3&R;YP9z1ZKJ˛Y.ƴ._ {1[>v?zHho}c 8=o|W95dUdje\U2,L# Ĺf]j́C&-*I]N-O3}9[MucT*LL5ۈ;< }v=j YW]Ndͼ)P1IZґ( 3LmW"\T^eH6熚c73yH7/ju2ykͼzV}o4 \gL-l٪gR\Ȩ/3L$ {\z"ͱmQZMiy=e4eDVM#9HLٙ^vs(EpojטP=VVWb.m!H-*TESVRMih2ꮩ.ڇR*jɵ#le=3Buy]rq31U\laGOX*iҤ+3\s:9&ӟjzήWLrkqʕ9bʍ3j2QKs>\<ڼ\7-d2@+5;FK驖)^knv[B)*F1@P *c-[&KP֮* hTiy(q\5lڪ&8ZP H&٤T *+%f5Û\nت:fcK̸\ۗ=fLwnzǦ**\:gqnDQͭr:sfң"eL(˱l [a.;k؆VPC5utTƚL*KF̲tg:JUgnZ+VJ«-3*"4w56άMM\cL&ԀX"X%#%d"]e ʴltbTe!{]ZZY6N+Ib3i"n!l*.e9vj_Qlbl)mQ#nٖդ#f2$-@bˆw#}5˘\l`dYʻsL1՚.A#ZՖbsKk<匉rLMU$dk5o Eh+h4ꓒ"ckJN VNAfig{\ɠcb[%nrdĶIV: W[&IKFͅ06HHZyz 5W#u,\dtfRM3HBkuq] w.j!LՌU4z:ϟ*E5tڧMӟ6!% L9UϚ-R5E *friϧy8ʬ0&Gj$@` SInf.- !10A"2#@34$B%ູ=bCC~;x# i'phg?臥qt/V[QcH9cHyJK2zn6P(?׻t]8}cPqrwj)OU1+%Һ$P\JXzlZT7$Pp@JCcc},nbȔqk/H8=^?j۪ߙ6?"W~-~J񪤠F._O/5Z["cx>Į1H!U_C6,NDi}/Iz/my,_"k1%W t)Sr/Leb.z~7>2DFǚc"_ㄜ%)9Kr\Tڌ2/Q zr(-&9,28"| MӍ'_zz*}?Emuj~]UJ׮xҦHZuuqTeDHB,dS]_fNqFN;|m[߫G F;t{+_Gb/QEt-q($ʦ$5҄bv7$4(bcWcQQu u\z%mp#+*:Ʒ_[QZe [EvoUtPn% WFK*,Q< zN!1X( !lǾNP91'V{kdV8p+2׮8+.JN5HpzR9蛮 f<OK32|YO8dJ{Lq0"_Z߭u&5BT6Yj.Iƛ9ӂy}2O720rkN.xӍ.NPpiVEnE{J^6]魹lL4&6LbMQupH5&IzotWyQ~J)8=~zj%k8=ψd4̙FI>u96NRj﫝Ǘ#Je0O'xˋZzRB,x*8PEmjtC,ߗ?_hQ_Q, b'9:$eֻEltTF1o,ci28ܣx?ujqCl/Z[% ,ǦJ8&}HE~)5ETVWXI=(7qnX|]/Y[)IZ7ゲBQ5=ROMMxx>OҶLe-129 CcT=?"YqI"cTZəɸ􋧯>Lc]a!#ƩQWu>ǍC Grpqg&Hx]M 4D֨Lq࡜~.L+Wj"Sx6֤QoD1k|{CgyzIqi$?48/T3vBr8ߋ,LrDLb ?Sۓj.87X%o _kX+rzEP9dQ_|w)KEO)vq{nsy:~g>N%&%ޥ!e!Zpq>T!U(4ғ_SsZEvq$rEqEtL]챽'֊8(z[g"/!zp83Gt(H$$;+JTFee cdcJ\s @~^-{'F9c_En:h1j1~Ycc&GԅNT{OOMQ'O+Z#P!54ד\ cqVKclQDy-pXPR\EWMr9IKWӿƽ> ~z1&/uˋ RɦYf\p5myuqe%͗_#?"9a@pq(㸥!E}t( gOqCD >bGG=Q[G.{̻hZqt}֩V%Xz_'!2Gb1J4#e~uEP,L{xb c'c<{Rju{^]4Gr^QZJRJ6XE UjGʏgGuJm T9_KVHG>sݘ0<ÅA9Uer>ÑȌ$lpDOcVI8okWJIq$8 G!LYBB%#d%GXՒD[BCR:+S\d#U}(+Q+,vQD_;,DEި1btR!sCGG.G;a>rJ˞_6q_e"N[~p&Zrܣ#(4pc3_/},_=%Y%˽xPEy=ǒXʙKJN=^)Hlɖ;W#ؕs9SCE8)W;=.?q-q:#^<N.:=7nj(Ơڮ=UEW#[GuI&:#(P^O%ba>^ӣg:kd(b֪̑i~^Z-z[7j!.p7UFx>Dd$Y'\zF\|vx YaBhĬQ83џ|_/&){rʎCc,oJ>m4Iˤd7~-xED#)Iȕ刌MВ(^5]Q_+ b|R!l8şJ>=jE/dPˑ~ g,i "ZSw_2l?EYccɦ)%峒9S2{my2Lk%7,{nS37}z$/WŪGIqv3ǻf>y%'zr$||r_ޒSoHDn&HbGK&.JX Pś'(jUɢK!8"pYH(WHűV;n(mjECÍɇÏUK>y|l4 jc_.kG!g˿ɏ$YǤ"BD adr8B9%k)*Y(0r8 I< ҈$IٍynEࣈc=PEQ]z_2 '>T,%#Vc+iG'!P63QD zem{QmvHQJ8>%[#i9^6VRxRN>;q#l Sg7eH̏,Q]kU6_xl+yt+1#G$4P5d۱O>-.~9Kjqlp7/qĚD(2Hr3mH9Xp%f$_%b{MD?PE) 7cV.?$/DdUȕףp&TJ\p%/EW>7= ?V8N'Gq8q8289|xQe#uBMN:G ߾В)Qࡳ>Z\>-r^V1ƢN@qGG";܋~.G!+rg?-{,r,r9,ro,V?u?,}}}}r>>>әW"989|(|3,s9gȲI{fȤ/.D|*(FOe_DŸ~?1!%"X袎"ĝMp (,콯_мŨD~?|VanPuWK,6Yg"h|yԲX.+3,aRwDnL. Esg';W H>8 cqwؽ4u_n&ϓ-}Wq$Fqխȫf,?8,e9<3Z!z1OT66_e(5M$Pq%&L5*~ *+Xbn3lX% ջL+tsFx9[ы2\t3Ex^\PV^2(//iGO^ &SLN% '"99=ߌr U*q'òґg"$5N$^PQ_{K "?1Jǒ_'Q?j''1cpCPYcelYcmvch7cG/p"JS0|cU8{%$.^]x|Fj'O/M{W'OtSqH|c.U7Kj kRG/lj>#/B(c}ĺ|k9?cٗ!?:\ő]g&2q(he24S8Onq'rE⻸YV!qi ȗ#lLXjQK(Q=WGeu'B;z_(J2GbP vEsMO_5E oХ}(&u2$$PJ^>So:xq/R|. 44Jvs,iq:k%%4㋢Z/\ㄔ^֬r=j~O}s?~d~2R g^Q&={((UykexJ*pq#?1p<% IBEy:hO<2Yln8gWygvI4^q[;9+ZEBܿ?qRXǙ(.7u9/>oUg1ڡ^("92Jx?X}_N-[nr,tz>쾗vz]?[ZJ/#<ʺq!R0GWk9dcQ$QGlDUJ(Q*M#yG̢X3ia|WwWEo<^Ov-{#lNj^ŗ/H Ye?3' [43K%4KXѱsrkPBԵ1ϋ*·  ((JdMۣģԿQMCڛpp!7mI'ŕ}0+Uoz_׿#M-]j^kh)S[OvY8y9E|؞W7j;q%/ODJ$Yg\lWŢ'!˚eKc-1v*-zGo (z֭p_u^x"<2CR)'#oEv0rac!Կ,Y!HrEiq[ʗJ<%Q轨ؠVG5)S#nB?%xвJ"\ڑ\T13޳5(f/,?OX,rغ=0?,Rѧ6'+.HNj%Q9ǐWXkwf39U/W+zD<| 2EQD/q(%U$Қ YI/rm>غ^zrgzqDCT,B/OH^*C?ƍǤtc$xG=Bv6PDf)>%QZGZNr+}d(œVK""OtHeZ,Q_u8m _EĕmCD]UV O/j/-cZ"g"lOD[Q8CD֣y/vJ6J4c|)Jg3}Z+kK=ij1UjT}Q^LxWeEij!2"/{ɡD&9Q3O9՜݋y" x/D68'VL$)~eN%/Wl]eX%"E e~Z+{^5ѱni1QpyJҙzpϺDr Z91ҧ,*O%8rq0X)%ZK_&K#괊Eb.8xg.ȡ(1~ [{Ru[z&E[O/ D'dZg/Xߛ9 B&<bL̨4HGؿ(=eoWG"cQbi>Jk4JBZZT)Q/./*-#t_z}kls= )Vr9Dg'ɷ7c{H^V5d Pn# r&es,KÑr,cW2s[CE殾8)?",xJK|iNޡ&vLuOƿeEYȲCh /{eYe r%L^$XE\zYz3_-mSug,yLhhc[PIx}k^6EX;u^R*~𗅩E( *OEH ,>K{UG'IEi/[jz9 ݉\R#zm^ZN+ZďKHJܓ0K-8^C9>C?ZKU]>??>&ȟ ՈY%-aX{Rq64-!DX׺/",^/kkoޫh#Z1"^Yei CN%m8cRǑ<OĬYȽ=3铋Fr&DKUǍ#$xhgr;,NݖYbcejb{O(?]=jSg+$>Kqˢ4/ Y%U Ƚ23&_l|F@K^Eo*E r.q̚r#qi΋eGs998˕,q&K˖Dy8Yt^Ը~b9_E9y/Lzz~[YcNn^)V[_n{Y{-&NoIY~[rI 9&x3GPiG#M&IDͦ3qBJG$8ȲRi"+N5aL{ǜ$+O=[(b՗{ZKRnˊg4E зet`UcHmjDOv}\O\r42QH%#,) dD.lGI:/,:J'2]% .Xq/tf?l"NÕ!8YGO4F/QՑt&*x??JG׍Z{L9QCqi=%ZKư(y?ȑCk9ĕ1=Jt.b}ub]85EXcHWFEce_6xY暊PyY)62J}[N:[[F[||-|?FUj/h!)0Zȫ~oZu%r,)EA1} 6=;I\jqxY'nSsk`Ոt=}lȳOV7=$!4i:2J2/1(V'\gŽ9dgZ7tQZGlٵѕB/OUb^g㖞&-X]?tA)KƢ񫶱qqB*sHHzDI?֟[?D=5[GjōI!'ȞhSoDD别:=i"{VQl$,GB"̦ŗN=/ypOOG3 ?Z}WKq|e=TT x 8HE<i YzQVrnXtYʵʺI~;yqBb#1K%y?K^5518Ŏ>5ki]/zP҆88FMt}_,% ޿XYe5Aej:z?/itc M7NOZQ'ūZeL ==u].NQShJNLeO&7>%8I}K+ I69Yn1wZM*gK߈ӓMEH"_{[iPrYz_Oze? z{brpcxVT>nRn]ߖэǗI$zq.?~:qȧ&F.R%y'OId巑n/9KWu#7 QKaap8(ťX\O#2Fzz~z' -BjL>a',}%F J2BErS- !01A@PQaq"`2BRb?BOIP-'!Z,WAbl8L;aOLU+8Ea0qr0x`S 4thP* *:"ku-jZ&fA\t~t"ΒضyQQ`Tmlݎ8*9@QDT9@+A"<"Dpq$ۚTX-+Z"иfJE 6|{QQQE8"MQ^;wQ^.8pзAxW`YT b*Qf e\h"CuC?_ƢD3H<@,%Ãj;?՘8|b Ub3|NN*c:ө(V*c-j{/UEJj`AC*LQl8:00L5V*3ԲsPr"4qk5u78㫆wU4vHQ{NUEGEA.5V)qbeԋI~5#8 3Wˣjm+58+x;:d' q*.s8S"uQ GCAv~VҨ I&~%{!sx W,X Y=ޒ%AbP Ple/6UiZөWҟ(6P[H!é 9DE4j24 4:XհJ/k4Ԡ#@bVf꿓VѬ1ic|u|8OԄ1Ȟfy‹_#<$} 3vG"3sI5VYsW8?7_|M?`N OM sFxƠ'QE>jY[ݻpQUARCj!955gf]9LA(A4as=V TPhDQ=,f,+O&xeY  %B5MGW4'`MZ&iD !gm7y㈎vݿb~@0OVsE:LȚA% X&af\ jcT;q*? Иf~`ɉC^gQEW`gsHU1gT g0`>"1ȇM\CvPoh*<@;sC]6գ t3&N`)W ӡ O!M:F*Npa0*erեn诀qSWS XMy(0XQ4#N!T~uC`![eoȄ+<\⣷gg{sC{:y#0l(:gcd YqC{z|lՎ384;")wS=A"CDug4V9’;@:h6\{&~,Q\ř4:ŎECO uEUE4Lܷl?NvOE>]M}"(6-'X *^Tu.]`kFS;^Fgx98SyhJ̻W8T5ptbpG_ f6U{nzcQN)f{﫝Qqawf-zx4QEh'@9Q90XON`1a4am;N:"(㎘<}؉dCۺ|V2h|(TQldߖ ƿ xw/M2 ƌͽkc#] 1ס7Sw;P_۳)-HACSERkպ?c~p7E* rhs!lW}O:=( gcE;+yiOT0a ꮙ`SɵFJN F\6sxǼbCh(Gp:F[,bGG.yA^ 5͜l3 Pf);4U8>.@fY|FFa!TtWUs#NDȜCA1W.v~y*jEHUxv7Y{T.P9 o#QHȼc8Nh7Qh0ϾPTP&Q1=Ik: E:9Lf?%v86`#v\ ЇKfhl%eGU]Ā&E ADAxDR6wo r6ck|S꽻wjI,Z0IaԐbT8l׏cEm!NmөY]P'{ڭP{m"W356N!`mqù,َ Fڂ>ʱXq0LSq an:[:=Ӫ(! 7* Un09EC;yO(Lvt{H{m';_X`QX7\{si3r2T'u׫2و*ޢ 3EUP -zgp9W /qjz'SrW"VDfbU ƪ\p ,(f:IBzJajaaNx-[ Po*=(j6+ Ȉ!m ySPq\ >xZJi,1jTPSn.,F˪$v4[ =lxd7yQfɊ (E{8m08k⤓REUQEUD_bb /4؃0lfOP5s:Zڡ$n[Tɷlv8pw0Vx5s9e^mQE41 *6莘QXn dPTڻE  H?qG~!bb>(i$Dtfbz35(Uf$ g1*C Iu7~EU쓚1L8[^ꢀE^*fdӬu \]̾g;TS7(%BgTP_liAH.:i7PŰ[V#ͬuhA~P;QZ!]_aǯjCkA G:R|54sђۃ|iAL;XyRl&.qٚg "* \ лp蹫RuynyW #kT4XAc3`䂼tPz n* @Zhq^`3Wm(EEh@E ; EHO TE4p(M`1E qc9|!ii3F8*|9~:^':=n)*ofWqOl8#!ALh&&kZcq*h"$k Pܶ4]U>OTϓ15i"#4 `Ͼ p ESV CW4梄:jO54jv3Ei| 99ՈST^Ѐur*O6W4q$a MZFgѨ1 ou}8O(F`3<9t4ANTV#dy<Qf,TG(5;0Y˚P8~_ _~9&y'<"D@T@EAa~-0cEgWaQ@"M&H5k\CZW9'.k>=.{s~Z3Ni@Bg'4P\/u7TZC`an3X_VfuX!TaugDH'?\+QO3XfiŦ 98tQN =-pӧN, ]Au!L3#AipExBh㠚rgQX~鲔)nc(SYy@g(bL y` ! Gg"f iGg5pTn(EyBO3I6D 28UQWGyKJi&&P8T] 3;%GՆ45p1E<"30ӈ1\ҳ.|xPWSYU xAX4S:8zVuyM%vUg i? TT<;t_Sɚt7:`sfzM0k; x"8`ʮhQTEn=R` .@G4:՛|x3EQPD⢱<8&8qq'kb>=pcé.guYJp1^bHQ}M:u(1@"V((ET_Ө3xa*xL+.Z` AgUU 3# Pjp8v0IA<ؗKyCh=CU3WìuV> 1D,Q$B!|9a0gEy3O,:qN() /AcI6 ?mC4ϏJXjC(gTiXLpa*yF .G80(#tE3Ng~'H?fxiZ5r'40#L:f5Y08E3<y!,ך@**Ǡ=c`ô*vWsCtCE?Plq`UMewhƃM4F$iq*炊:PKn XQ(,Tpb31qEC ZAFn]WI5BgT7E?tћ({:j*=O4j9źUU{MAA4<4oPAbg7-y5Q@">SHTO7jp&` h8F.o4oB؍;lWA\!4Aء'cn;pBJ vbӍ-L(X^띜[݈뎧s{Lď`U*]VKmx81DsU`qد„1<;G:^,Ӎ 3c9 !10AQ"@aq2PBR#b3`rS?E*tg=ļ`=o F:sغ>a+RamT_m ~i(0#!排۳U@' |kXFB]Dl%]xT֧%Дu[ A]EԖ s|gC劬ryiØ7yqh^RS/=SEl$t`V]#JxlDEE^G pmLCi*@,]96kDv6ۘ9J)gt@&^ѻJW je!wSt (*4GX%8^Un&;k^t5؋^qK+.د+U b K]tFIoj%(^e7a9@z]T[vJL>4wr6]qNxBd*1uqBmޗΡ*gZ 0eKꉃ+s t(jB>'=J̃:k(wˠ{=x.ڂ,,Sj`q$(3?'ٓf$;/|DMT=ᆕm_J q,-h,cRχDds 'Фҏ5 r! MkGm 4uqY:wHW@f2'͛) ^ V 0\4SA,V0)"רL^x`eA΋灡w$l^M@+O@q|D!$C* }XU@ҳ)Ro.$˲uÇt>+;+翙Gt.7!!3bI(q_SҎkJT^XZ.Q주PT/K6+xJPi7MSx Ayه_jO:;@`-/@=IKW`D[P !p5<[+< N *[^iCʆB'EFu ꩧή"3qge:K7.+GBUٝQe'{@6-}!uZ 9, S[w6c(]~|hݑ t=ԤE_ۺ@ÜitSHkiwzQLG n4o/nn;]Pr˾f@@AزnsfY{a'AT?M*#J9FQGM`KxmR׸d,V52P k%x!ȗƤn*Tcf{#mWZ+^3fh* ו}M{lx(XE]Qc~RXÆ{J&_nR2ĭL,ϳX7u96S޻0锶>Z3!(Vg@| XmY]Zg~y%._Fi;5M* sEGP:5h۵A]t*;ddt^H~b~oڻAGރh#4nAJ|-T]p͉}gՏSsZA Z7응0j@&wJ^B6各>hƇE [Zo}36~L. 'm0S/иQWypfݕz{9b1;u@JߊJyakL {T;Y\L)FXNbX7׼m.~17,g;3Y%|70Jc ߄+E5$J .M+/޷U۱FVP׍ǩ[K"ݥ%Q ~bTKJoQ!3/O]ۆJ]2kM@f4J kfvhYs#u[D_"!Eo iR=0dp)ub}/&u\K)+^%{S)EΣ,UV~ar@J=A8*G;-vjXJu]+۱`]vDJ1( Ch+?GvwzMl8{$y:\VɊ{+kپaW٬?VSx>7eg=,G(qz%7O:|*c^Ö*d׻Znkhì5V@UY۲ZyޮxoJԿ*Gbby h^*rTsLs=lYISgC4&)^~qٔ 皌χ5,yVXZfF.-zÚ9kzI {wyݲ={qƲ*5Ч@ӝ\EgqBf_"xkd 5b_Be!~G>A,rθ047h n9`H ۵K5[k5JmAd$-B1P{iUrΕ]t,@^^3\mΩj0^NjGÇ]kY(kAQ l#Z+x^[E4i O4qJڪ3Qwbê&5Eoy |Q1Х2<@]AKxA뒑dq%7 <{陜޿ 2ʑH$TlF!n-*۵/no6T;a!]Ә#aHy?Q۝u?(<`ri\+j7zVBӺz FK:Ϻ3}Mޠu=(ZI(ÉB'R M+^fMY>y Ax}4ۧ )DΔ-pV1RWjGNy@.a%DՈJRM;ǟ{nSWur:јIWHMC(`jf/)n yZС v6v6ѵf]%ڻ*ƻԦfevΊ'cݠD{X˼C٨T6t=8b b u2V ZJ|6cz g|7ooI>3=򲂭YiMbp{a}Əuz]`1VCIac` 7C] /\!dW|>Iy ymhX&o X.-` AM.1d!e YD LM}DoޗpLYZWB;qv* WK)J-k,<ׅh=Q/KbgL͙,Pu_ݝy_u}<OR|F|n"-͛-h#k #hcyb[5HhaYvQX{hƥEt9VCXxHN cPqwRVfovtkkmً}ȼO>>bN JU-5؁h/v챴pv,ëed}i)jj]ٵ/)`҈l"Dzm ZXAne n>>)7HsB54q-ƪnb&(9l. pĻa#X3 ]ǘX#߈fRv̧QqfdP7ak0AZd: zX.d =)>ZWg*GJA#h)$.F z:I6tPx}jv޼/:ck};=U+ E ONT?H-YAȻ]gjUk7m "ۊEՌ̬e5w٭"_DW k׀= bjKƋlqHVR!qA@iǝ8Bga(C{A@F6Zx SI)jk7*igB!Ұ~(8I ^F;LE 6tƒ`W=E"!Q4}T1sbθڴO rX(Q(R t{v%4\xew@M q-lvRIE)!{µޖ,btTB;/7 ühN/)+(؁W/<к a5&#+Rt2`5]jMVDA jEHP4DS@#)7@)gAuU[BUKÃҦ&gg $GvW]DH`h x`TmO fyw]@݌/u@H N`E(b݌0Av'aJ>Ħ0i6ZUVޢZe 2!l2P҉~hx gb[M8l v(e4>c#QmP<д[r X:yrjA03utE+< Zc8YGh8Z.^-ڀy>jM! 5.k6Ű@R\ԋA_E|AN#yѵF!J `%:bTIM{0x,bwb ޴9Seb6t|1T1J.X⧝^;#%^M9 +(7u>:/"ھ$b7㲻f_sUs/³+Iپ)utٶ^y36,s+X `P1C?*z_&A+nYXJI` J9\GL3u-b`JtUnitUaZLMFmG4=/$Ml iJygd*8nDSj@naavzsde9-s_GfO^rb'8 ݄Z FYwgΫq0+JJأl/+\T%m` R8cDy탳K v~q])йB-vQҎYn:9FIyэ%lvLQ-Q/`64 -K18+ه  #QQ/l&ck}̰~tBVrH=!x*J]>[Έ)cGt7-`kBoj/ +v t]%HLxi:*NU!{F]ޮcbPͱ) ڂtBSB KtԣING~"P H0/敦W^V@Z`˫<AφO kQK mj1:KT0kʍ{foLcCN/qp>dyE(z`JqBгu~ZC'  H7P}!Eta=cںCB[1#fR&% 6FCO S|_}%xq@Ww#B~DLKgS!F%Srk`v0uAޔβ|:_+DS%^ Gv`]h+|mFt& lAْ^@Y](q^خ(QKrge0ZnuC:(D_ʞQ[ Iޑx>r4T+{$nP1PdNUf'қ> a142tjBPsQc`NNm#xC<0 77樐v;xi\ t/sRs$k7ސ09ּMVRAvE6o7N&L S@qBLU1W[5lR<~C0}7e'_ TΔ4yWҘWfE70(!1AQaq 0?!33B#jwq3x.+ZQx8~峨*7+ a#,Nl2`p&gh G$&F`Vq)! 鳽jayO%gS0UeR#,%Y|O.kP|42w(5H4T70`P 7c,G\l6K)L55K{1„pTkxTWN.fVdv,e-6gIzun/|#;u4+.2kRmq-jз3Q|0m J%$H(&gYP^)`*`E } 5pj D%1A \" ! 1x;/qPN}@9xZ1G x$\GUn)^V00$t 9B"7 .c#.#DMIXwflXW:9M8[r |㣀cb/燂t5RǕe^uŪXc`M?2 ]K!^\ 1Q)^'^bdpX}Jn,U! oPu (¢vTpr.s<ié&6gq5G;lh8.bjcNrp"X/F Q:+=eQH KQ94R毆ju)6ER"w(D(4eJ&wc,bZ fE"uDT0VZ:ʍ_xĪZ=DĴV 5BˬѼC:*ݽʷ{ OhԶb,qqAYb<bպT$˅yojn\k킦Q)n:qJ`%3Leu*xiU&SWÊkUnN;~ŶJ[ *pS GSmFF:O[33,14׎>+S F|ĸH%l pD\31bWg"-xV2eV 0^[k^gԶu F;::Pi(#%䋎%L]06h຾ DYh"0P .cWF%1ܧK4['"*7 :\*㹒o-.!uZ]WZ*w O?T~%fAȹc(aF%pWw5:-N>"鎀 ι!_8 kPRpFu\;41P X83 |Ahp'Sju6PSHcͲ@aCg~p#HǨ"fm cp%B^LKK}Al[ wq ޶X 1I  \GSxL3?5녤Kp4c0pKpY\w θpAا C Uq,%ߙq#␌5L&ο2\P5u7 KV }PӜ333\?m7|kgebk31}T=&X K;!Wn|qeiu;>c z!lG&CQ!XCLA,⻃q|e̺2ةO V^a5vA)gq1|V':^:ĭJi1-Kjw367sqaLb;/[2TQqk΍,j_f^a(1eŵP.zL"J2KN4Bm8!W*WpP 4%5{^,BWB̢TTܼô} j&Qi۸7e˃RՏG lW7Qz EbM /&ωk,/䎿n=&a9)3 {L'R,XG_M-ӈjZx9{q柘Sspjjԣ$c4^ , `)ɩXԴe[u^@S Ľ`&&[L}D pHX{bu.8GUQ«]G]Mw)F V8E~hU׌i^/#:Tp7 yܬQ͡"k٧(SF#|g%fESI|HKFNG! KG\%`7f3FLye-K}&53y7 7 ꗦr/X!>D+w\54VeK@#pYn:Ԣ\ U 70'dG-}1ihO< s_05f5p$T1 fOP(滨JmŌ8j_D(APJA]y2J=5h0乸ֵ3 N^pk|H^_F8;Noo|h Ɲ?G  $,BgqԲQ4p}JYeŴ,!ZYQܯ|b r0ݠq}Cq<2V! %'Lo0jPcٽʙl(ͷq;Q@"*V=UStuqg9n68XK C7STgI n*#(J fS% KZ bcsIg5q i-"mjuJc%b4 7IdYQNWKJ~-pFsZ+8<@Gιg%=BpV[N0ǒ;{WzGr@jup![[Q,ɉPeo=F!AFR*crjQqYO){PmfYc]֠>#F,&3ɟ2DD)7\-A:GduY,}ZcZJ1o~pq Ts~yN=.f*pc_3WN:ٳǹ\8f(c&JB㩄8{D0T.ۉfCoqw7وf j)0. rgQm^!mZ-%ľP/ȏs(i \C3PS/1F[*jYs ʧ,^\Yp@E&fg<\(s3:U OtRBj j*UyZ;Sl$Ma(ZیWJ\N zUkql׃!N6ш PpᮞIt,l?K7ɮ0ea!@GQ._`&.su񎣨Kj 툈RDUe ȑ ,ԶpT5GP ` 5;hjY1Ke.Op/s_l.w-S PTt o^ PU}b{tmTy]b,г w\(v*4yC CY)[Xpjgj疢fbG]%ttz5cfҢ|0qv4aL*㹌@Cz .bbQMCR+&)e_q椖n73LsE%.L^԰ KS@,}`fmjcS™PXJPJ \ LKJ0s*TrmljSdD UE.0f 17(|!q نu il(c)oơAĮ.1噛L¢p{Χs30ÏX|6[SMʗ8daRRV+:5vI QH.E aګy~zrU8q[$Ix()4-yoEJ/xeb7ܱ^^MGx n*UT a : TG?̨s6+0̵G[a+2 Eiq G2F 08Kl,fQ0 6&.qS(c̨<°MŔGpbhgphmo-Cbz 8f 4\e6X2`@ǀ qF•xǂ\;UՎU7EIԴx*d $ GΓƂy⫎:Q2keL.zNbVP5,NtBģPWE+ŽeT$2+'W1*Q-TP[clM#hFZPQ\7Lި S=J>ˈ9oUW.؊3PFr2 C-bze[[b݈2컾f!&=#Dݣ̕fn:( #djĨƫ\xK[p3]xpQl<pTŊ)|w*`b;i9U? VNh#jaζG-_}FJp"ys{>nS;TT+E*@Y21W\1$K4#PJXF ]b #FL u.ŒE %2VQaZ‚P\Z\q15/r;!2UqP*O<fL>#7R wJpjrD(p:"QJ*WFYb9SWNIw3.MTq"f ,$P\Qi*q121zpAdaMQf=뎿'd98Q3B f@F' *@m)ɽE2YHGx0 thBK5FФO,R8'): sxQYeYW(pjƇqLTq&S6`zq#Yk -Ŭڣhv=uQ(YP<^tAVb>IJ[W`>Ԥ`f';>%jK.iAhkڇfZºxR0ޥޢElD5DɀpHnػ8qD0k4l"S:PFZ6s2s %ܣ+Np=3G,GsPk"Ene;[[Pm@DNEdtA^a3ʆly^ SV-M<-bkA-@r^~J:Li3&YkWXJ# q ZE5`3,olʙoQ`|B ,ru:RaP{P{\s|- T[߈oH agK!pgCT^ ȸ+26>) = ?0 J`;E/1YWs\[r Sq`J[ k1 |2prԙቊ*2Qau̦.= %,P/3Y*yP^}.GQl@GS~ʺ 9\,7:gd pgC`62w L%gZ/0&5`cP"D#:nwiA gzQce0"uaCqap"|0Nb( QgXs\bmЭ>Nbf彅_Tu+h*.EJqkT<1rXn#-NQ~e@PPr0N!KۋJP}CTO*wxC ʩQ*Y_lq䔔ep&r߀S p0VbXU& d5al>nxL!Or3|bK7Iŏxj]`L |=ATgRfe.Vwz1Pu U%g̫}S@14HʢeDn30#. ' < cnP*aкa;f7~Q|u֘ .X0TFwF+x%N+~%/Lpܬ\JɌiVUۢRb̾."Ggwpp_rjL-=&)qY+(un-)$/!;wzߨ]cs5?)QZ+f_A!sOsă"pOYą42d!q@;f([j").f %"">X Rݦn>$m(9a[@SHxF㆘B/|7O`f( u&sS@WJ(CPGn~V Tt ;@ `vyJBjc@%<]?46EY]xE@r+\8'{_7/IEWbڳ\ h=N?*^5\\TA_(7-{ a]F ].e’KJ_JF ^%D"r30b,Kۈjwer Ȣ:;ܩSRV|\E閃=: p*0IUat(* @<>Ie^C5%x:& 1/\X[@X0=  eT^'+Sn}P=2񩚩\+x0s"Z%pPa.YXhqzL: l|F<EDžg.%4j$0Y ^bDn!OԮH{]bt%Զj)D"<ʹUC,H\R 'a;8$ V oNMyVWm0ܽCJ9KDԲطLQ, o"&k̹~1A%tٍb/2KZ%&9+ %DpN=BSGYQ>)nKU8?u niQ +HY) +~LdXu@0jmr:A'1Pf1 66kqRYput:tjTp^muY pMgZw l}s&j_f-q<(x3 ABo3`P S;!hæe]S. bvSHQPվc:bCrԯ&QW`w1%Бa6%ߨ|vx <ch-8QbT`F5 '!Q'Rk1+ oY0[+?^ ,0w\vC w2Sk2G%>c+LyvX1x<.<dv d62G\\0%J*7fzU=M.߼Wo!.4nT<#QR&\NγkLuNKL#2SܼcQ880)lo) cFϟ}İW"(!AJt+$_p9PʯĶIGyGNXħ 7/aCpl|P @+p*{bZݮ׍GႭ8Sy<MDMⲧ\xSU[i( S* 5,eHnl jR˺7s"4Bmof8YX!-(@YXs- $bzu*he#}pݷ\zgԵUHt]6|Fq\xR alԦ2`*fpGn3g7bvrN1lc Lxlk& ںC08!+q_M(7Ej\`|//U~Hbx;^]0²|A(@ŭ& 8n%Fcp%\x"%6n 6h&6JL 5PBx01|}ʄ%e w>e4sz꫸( x8eJ >bxҼtz|.>"[+p|DSlKXjOJJW;3cH_}TUS̵]}ORߩ &v_ܭsnqH%}0hm_| "ʄ ZfDg I#ː _c#0*vf. 05LPU?kGQKe- ~89q@F1)CENṑvr;"1Zku RY1_6 Է(Nent&bSw*bcܤ|_F;9%Q z &rZ@Vً2=B(*]. >11!ӿ٩GP B| - b rc`w @:>-CZbY!!B.R+)+mU]C*M@Tc Mp(D%ǢQk?6.KyZ*~hEc5bKX#(.syևAzǾ;Csj˺U{E_a 22%U8!yPE C̭V"q2vGܻ bP;fmB`8_v1iK(nK 7` %@#pGX "aψ0x|Ym%I\P%g_SMA@sL+=U8Ou}õ״ E1/i9arpxk0s5Z-{c)TuR$Uj}=EDO+Nk5և"\K \slqX BQF1=GMqR.7l1@^b%0g^`3 Jg:$^QG3ޣ`_zLcY%t9gXd|QB*NRCyaܲeȦ9)(J0`e``e%% Jqh *,|C&?5G6qa_?J8RV&"R!325Qp(Ty,HD5ZR2m~-$BX-T<Dz*[LgR%E5rFO VG*KGI7CI̥Fzq 3ݮ5# MpP,l8aPuh~r/M\HݯUBϯ8u"Ss }_Tg3o<#CWdz&^Y|._ˏL#w^XtV8026\7wYV>эc6F0Js@n"^aV5`7O3QpT:G8gW\zAbLk6d``1 F[.@i<3`qK*Aj]=CI6c 3}FucNX(/X1 ܹz7B|[. re*5O$"s-)_=qcmkw )<cBʈb̳q~b!`ZV`,BͲ7V_X/0[Y IwHY窸(*\vJ^LNL{Ԧ;[Qh=f/PXҵę ַhQu9y A K vBJm#,ה 03]BTǸOw(|R [q+-4͍T$ܽrBaoŗ>[gܥȋ |Dkƅg1qlC AW&.:0n[R<~ǕE2Q̜"YtVwL*jU2EV"ivQv 7`sV*r4= pFak|qV7 L)bY0:0p77 zøXZ3YW? GFlA@ͱJ޼@KYo0X-fhcrM75_KrRvfw`H31.X_d|FCOKQL\*b cZ\W7D }@]!/*y!f ήg̸3  ze통aS)M!8JL6;U` 3o3aBXo.M1cl<k72!&ufKU%w.ZoQA+[p"%ٮ` H5>-WK w+8jqmT3:ɼ9 zwד.C *0_\-i2_aj닗UY (F۳l@_ԫF=GDV>)A 3+Ĭ,m/e2K OTA nb03 OG1}ż¡x-6T˧1޷4RV[H͗_ 8 SDk4v%'GJ%GPMJRB4|>RAEdH5*hV РӸJ5l/afV]VqYC !L+8̻zEIQ)IU֠5WRp]%Լx!oܢP}B۔ted ;AA" [u2/>`E V%f**Kb|-%!>a}!z]7ʱW)LTwї㋀Bf x ʕNBr-­tpVaI"П+.Eł闵+zwR7KbxrB7 *C PẸj, |jz'Ql5ʄ0{z Vճ2 H톧Nb,r /RV0HY@Ѧg$Hd Tke Q>b1: .?p6mCw+^ Goshq4# l,{_ f[#;?/K_a 0M]cq^uIr0#kKI:R)QJ5s X[?SQE7p.\ƙ1,Bx*5QO3'!~m׸ 5CPBlKlK9?J`5| R=p(dBNʌg-f}l>j6n 0%lHxAi3d#O6. UJae  jF%A { QaSiwqJEFaUKJFTQ%˘7(wl֪?g׸CZ a 5%[]PJ%I*u)Iw7a닖\/0Rl]q0Uçoa.2}+ [JV x70! EP[ZW(Rp,Z.-VB<%D g/ԸWfBo6PW/pk/?^@nvF.fİ|>HSa_qn:M; ;c7@RP`"n4]1M+l*c%e1tg>a9h--q6+SgLH(2AeߕDlU#"{/UqeM Z[\ s.:qܤ~Q 7,2g07PhZcuϛ&8.!,n(8x(_\Ù> jwR:niܹqĹ;l{Fѝ昢(m(G=VU $1I _ʥ(@cr+5O1L@D7{ 7Si*yo`f}Lt{iZo7 CN*  ug[+[-cpl A홉p7h0|A4TRR:QD2RЮ W Gpl\2eTW`˻*+(k| ʹ?3_KA}"l7&/M]*:-6joSxiQZ@ⱉ!xU>`v.RJJ6"&.2>"¶?OGPXEUn*7PDq1JZWKK#om Ay ͽwb ˋ0 ._6GUOLcdǵlc}QLǹҤ~$;~ ુoP\KG0U7R/(X \GUY1,/D7#k0Ru N-qA}_zfVoKWK,yvѵ?`]/ۆ6غ2_y}1 _Tphc0S$Yz- mɷwJi :xӍ )R+W(};7/-9Ad2B%Uma|; ze gOPolp 3h%Kn[Q:/w9pW\c#e0&o<2o1Lr/Roɕ+bm=J*WOuQK.=|EL 7W:qo)=Ŏsh(pUHSH*h<%;7F{߈eLWixJO̙_q?Q`̴/ &ʻ 53 "m/R\p:`U;&p\g|L;~!C+EBp!uRzd,7]@BVz-cو~̶Z{ϘPgm?,o; ķ,gJsh+qxlRթࡔ0oxeZ8 2B MP֡uUHERTWspTu328eUbp<ƣ|Xf|K^ටE)~8GXRR/ A. /[=T/+LJؕW'A܎l̩a}{eB._-=F׈z gRL/2jX$#z/Q[%E &bPAܳ>`4L&ьcKQZa֢F`L\B0], f/[=Eǹ&c*-Y =P =ESAbUepüKA85*6tἐmʇjRqLBd2tSqY6%mk|^lrNˎ%-SJҪ  +9ed4IY:g:|y.%B UwG%Wq)Kir q\ #jA5X34߈732}D\mRݼM" ,.%j @$(wU3 B`˃˹pL1ƒqnQ%W>yk̜_8&uzH^ 31s/pZ<}S]S s@˗p;M9bDwpCO¢\How+0%Pԩvxj2dI}6=;o:[`xWx ­`BrUܺi JY'O1jnXyeZQ&V1ߩDDe{ۋɸ}? *_P1†'W:ܯqܼL~i)W1qU B*Ay1U ?Qi\,\P=¦nV/s.>ANڙ<7y<>n@F&WW|T zJ%@FXQYST0PEa\ƣvO(-8"=uDrAX^١5Wy(;5NlsIBUClAx!ru*nȑSL<ܑt6XWJ{ ٗ+)Nԥg)x^5=+D@t]Fg|+cy5s/7Q`:OC GYPYVM,RtJ [rX; x ;L %k&e p>\J>Wb{|"\w.&e)A\|eJMRԴ">zYʇ~5r5Mn.Ķ7|od5Tc-³{L%CSa{80;.FnT CT͗q-[&"ET4KI 21?(USmSp Z{M=K# ) ewg?u\3qzwRK_w:1pŘDvc\_1rVs6K$!2 Aw:1z;:LD_SoW 7B/D1vn30FjhTBJܻVsL"aLC}YKQJ<ч[pDU+ /2iY(oXpvK&G\1W\Ju0m;6 3[TKVX(2c'^0{C Už.'O&f<W6 7XClnl9%:ǹb;1Wͪoe(ܠUS"'7&9f2#Nr\ljӹhGz# Uq;ofX8$`;1mCk-d-3h(/CreI P;w, IU]4;U~p^GRe8LUKsYP0DUq /IІ"&Q]rV8 $!Z)) \Ůep6˗.S#Ft3|.dQB1o3& |Ēg:VsQ]m0DUQ̷U y - }IB؃qma Cz pP;DD1*`]|a9~k2Ə e;"ܥ%J LV#6DŮp0Qٸ`Z1(b,%6 rچka,FM5"Ń0=ܥ]`ji݄PT7UR:w)&k\P*[ ,S N -eZH+aE'n򊱩BbzAb 8ZĹ#|FƜӹx<#ɮS`zq_0<rfijL'PNksnAYKf.x# [QQUƘ'gHQ舻 =m'9ר3K/O<, Ə Bfc|wS{8iq-=Fq+j &bfX@יˋP\N0b)SA"A`}JsA;NRb9L6pDZ2!B*aTР. aDm|;&tj-\d:'۝%J8ʸ \NAɞ(9.W|+iC[.Yy\opXa1#@^QC*桡(S7so6[RNbPI/稟Qyw 0"g

  •  QTw0›G"_j9u3Vzzju:s]Al9]q[%RJF֣eCh'l Bp-tޡ @ԭ n SY"̡ ꒟@`*6/ ڣc,MDс3:^Bߨ4.wfn 8~ gk0£ƭv^Py )L.fЇ̹u]E+ Œ{^!2UTLԵXq˩~`aCB1Hs3z⦑OTi0 ;1a>. \NK'hqY;x!BpDeOn.K끠LfȠ =Ńhhʄ-j/Cg&@:DIs7C$&R~ >} soPcHQMê\4CŐJ!^FZ+r.-QmXBhw%̾@AWY1fFS}K\z[j^KTK2c7VU+S EewzĶ%EI qpGH-\J![Ik^DPsT)zq7M&N MƆBBȅkLa4\仝.&h?| :9,\{.F!3 gq,UAl^_ :jY4 k{剛Ka%ySi{Yb/vnyci75.DY F {<ĂbJnJ(}q4 P qPHM4@[ƥmWPA/aטW`ph)el|}y QYwQ@R~,ŗ3\f0e{ܸ#n˿Pm.nC)Y`U̧1zWu9(y,5dU 9:jV"NYEi:;w.dX3 '=! LvdMR%} ZnKXgcͻ+v 9e]ZаG>^b:(9QHP&ȭ1uz8Ykq(p.Zw qr̯2KSgeZ#X:YpƆ)ٸ8#(Haem5]Ҫ[,YaeJyIJAI AKtKQj]P7h/!YXʈ[PE,VpLu/1 EV/1 SQ tk΅q;K _peC}EBZ4EaCaw>`P3}NJp8xx#I~튌r9kQ3C.6f jX_p_?QJgpg2W*Qd.aW 1CK4A*QTS|6oုpOlFF#*~nvFܺ!K˞;>|TT]b;,?r[/ 7յl* )f(Ө푆ੁfw+ψ75@H K.7LLY42^";7F"{i*d3V^%&!I1Knߡ|> I"ƐgbFt-¬&":f-t.Ơ[v:|G,Ŭaƈ6p j =11PJlV\iU\2 7 `dB~e 4͔r4P>c b mWPbX#sLE%:;V:i;TUDZ|J]-z2䁠.585yَbXo6e&xt:cKWF-&S7-`\FP{Oq#T߸_WMvu&/ ˺Zӹ;}&)3RbP5oP@t,nQ(1|%M(#+y9R5X4FU4U29 ict0LBp+üpHT􊿩ujo*(PѨe \]%+T0Hja28W;  fLMJn=)cW56!@6HQu*CX׉1hR&Ub`*M"RK ǂryj bMy6P样{M}EcǸ?dn`m`LNR; h1Wd Ĺ&!UR L\+QZҽb m %%)iqn\j Yqg\W R΂g]}I*93[E{OMae7qFe%]{s*l OWjY#S a,h~`;уq2XpjdF D>EFf1mB^\5;F:&R&J%cp'+\i J*`n K !zu)- ZX \hfUsB=KmW>w1c\;Ϙn A]Wq3/40?. i[ -ܻv3TuY.`jcv]F:"K7/#`ޕ˔S,֡ZܫsQyxgQ!3q2(<#g@(9E@ϙ`FP,Gya6bib=Ln$*3 }Ts:W p13%e14{!yPb8Xm^"+1/X8ScZ52^-aӫ1f:3Q!K&wǸp&WFe'TMp3qE#7OVdWHeh"7NzFS5<Z6,Y}F5KpLʼnqg,MPɨنV a0*.>QOp\өWp kMl,mϩAVaO8ZRUq"Zټ/ôuV qs2 YXǸNyZ d]Wsa)n;C6ĝC-6 lb1+0o9gıɩ.39'By @EwtBnB0J^V5zdP$Pj;q*)MbXQ4FY~ *lw rG&0+0T-^ 75lfr"%VnDjj:,uۚ4.(E/ٯL ]JLT3P-a4UA6B9bеChB F6\` yZF r_8%Ӧ9(q TRZb,3ND(fsYNP=\Y낺cH,̣*-3*lo\nFs^'"lb ZGD<7Xx,ݳuFj0hb::2Q]1-^Эȍ1>j BרBkAMN!X}DXJI{[ ѩLmw LXؑXe{is:>J odJZ}E̥Lp(xbb݉8Ȧ ]Kb%|n'q@Jn% -pEǓjFkw4< B!&V!0US8?`TwPtG–q %`fsin(yP~ttGsiHQ EVط9YjXJAZQS\39 +bD]PABAS,_D 7E $&2荐뢥ݱ\&^ƘpSU6->˪s/d%brN3nZ-Y톡 F(xʾURwzKe5:p_ϔRƺW z _\:Y|h vFF:T`瀆8u C(oJ/1k>a*Z 0Z*>/5bf!W+j0`K-?y_C.jVaU*/7&>#VGR雁W9B EA##vT^Y01GS:p\>]n-u!S.nʕ11W( RUyĦbF.&u}L^#K`=؈Bj2 Ҍf!E_9MU勀 iG`c>eOGqj E`4`hȶ4K<ˮw BpE8n!' pZtQs11A*o}(hdlԳ*PC`<WOs3|˄TT!]Χ|;x *ߙ2k\y&bTf/3Wuef6bӄPSI Qٯ3׈F)kA_+w)S%&qrrVVUo3XPL6o*ݹ As;╁ Vڲ#S.=C{B*Djѻ4QKjeQ0l5 %ſhq!d0+~g0qyu s3]B/痛u3QtpCN3cp j,k X_0Qo81@{a]}qzlx`la)1\*[#8W~u_p1=9Zgkw)Wy(.D4>"5}1ͺ-'*#NUr &Nfbm 5ܿf`$KіC< 4 ?֭; db2co̯p#I<חp X{Q3mhj7NUC;*!~%hJy"eehk5 n0}bumR^/_KB1\uTtqG ,YGȣ_\ ] sS#:1.2З2&"em^Qa6]E3t*4i-/Axu;t8D8y eq 4L-)|[-jjѢ@P빙8QGjFhOvv2&^f\)jң+1R. v;aGRb+w#[͸),ԷQ\.ᗨ,Hƙ#7_X>K-\uEڶ1a ! t kׯ3M|:Vcj6fgK5xVȕ,5Vopbgy59}Dj¥`MAgqq5 `)бJ#.<}y(^yc{8%By\^w"Y^o.><:u<x y"*͹ h3,xia]ܸ\̸azZR;nX?c(EGG(]ɼ xKÇ5D^Zs3 < @m exP|YZJUK||mJ#; B 2;|6 zop4NqhY WQ^c6[Q,Dh e*Z(WS5+ܬ Jɩa*ϴbMB6pa. 80c mnĢ7PA$)x GP!:bT ~ Ρ])\^K"ͅJYhY"_ 01ƒO0pB5BP^fFZ?}H I#ĒH$H"I$ m5wgiK]75ZwIH!$ o$I$H 2@j2|{ROثY'ج:{$}xAĒI`y8 I Vl:[ ti#йaKo($A$q R$)A#0Ywu]k0`lEyLU.`zv&H'!4A4 &0A;A WZ]?5v3S%:s? L@RW{|Kb0&A#$IA9ɶɈ!Y4iK߹^1&ɬ$? $5RBfy<=U Lvb9Fi6 M I$@BF{u]JyFT$m`<֟<)sA4 c I㽔~^iN]+szPGmOՓߜs` I$I$bJlm-JHƦ [_KN_Cka xH$Q$f#-5QMXxn*0d̑2l|_a!I&A$afiQ ,t/3CpnO!ZHϫ? #m~=>IJ.{^k~dW2W=P4`7iȕӅuO궧{;s[]gO߰h.B㌶ΚaEb0PfOO1|/dQQ@Ҩ5.JU !nIxOvKm"vH {u|{Ϥ-M#ÐcC{A;9r=i8>NڤD~$~FZhzofWs)e$@֘>b/10 c SPa<x5օ !k>A.Jb$I#,`>ME$[!m7 ku V A!-O)c L 5rpeCiRLܑ8 I%ef$# $I$g=_t؎ƊPB/o2op %TS2XL^& 'AI$_1oO>LLWHRcIg:g+]r/ 'EfJ<|^[C $r6lW*&BÁ!AO:Z}]#"1'߀+R|']k J{?o%#\p"4hOFb76W\Sc_x䄩{9;FMmĚ[=VY$H{b8_KOvm}n.Ȇ!hKyc)dhh.u.$4 nim2Zr}P}aPAyJ ,<]#( zzY% },$*Bn/}t^݌?X|bpAZE{II6 opXI.*?m|n~ ;Úe@o "Ibߵi"d` `+Mգ7n0Zw;#nI"HB`qE^0` &YZ_FG!ZԾo52 KeK}ez:oF <]˗r7Bu1C緭z:e"DA5P=V`{$KwM0WQ1n<5rwdǾI$I#un7xoKj%s,DtqRqWᬶ%__`I6I&84dq]Qdxʵ;Λ{x Z2DR%rERbv0j^V" II$IzsݸK=ޫCti@*_Rd z}e 2I0II$ Y G5Ϣi˜gIv6%}4$/CtnsW~I&I$IʡIJD]E٬!X2ϻK #@_lP^'II$3gݰowd3m \_lAfHMRf?q) II'7x\=(hK0Dŭ1~6N'wR30s7S!}=I6I#AGL:@Ը;4ȿZ*AaCA%jcC ɕL_`D 5]ʦos_z/(Dլ]AHS~"64)8BSrbF> 0Ķezc|3n~ئ6mSэ é{=t9,w%Lj4ZawdqsΗSj'Z NSh/D^ki#'K`Xmo]g7H?CDll\O04u=r),6_!>lF\3xljkaFJ)2>/B>?,.M e^~j|wc oUSPz}Fk=1.f-Ҵ{ӂ~''ҭVK@oS [x&^~kW;db[6^t@ըw[)uyMjsRd`_ޢQRx՞R^΅y%9cc{W%uͲ$Ž\2SDn)'Ij/[Wٜ<*\X_|YKIX ;,jJW+dkKXH6 ~WRoK鲞XorPeGG ڮ R.^z<DΚmZy}%'ZQOa `Vx:^@K?دZFْGilHgwݒ7J0$ͧ4 @osd7ym%/o~'êCYi<WHXSCC0|68_\]zDԷiǑ:ncE%_BEKmIּo~yM3>B y?+M)NΐЅ/קVuln_~q2rvmӽH?DVֹR0jB霭wxW,yǿtOmS};ǬS|ŃoS66oF/H}zi3'M :=5\1~nl֞( g4COfHG9&v%c-~~/ڬwd?JZF $C%LNT1+}74gK]_o{?ߖwmq=\ پ3{9vvvsۡ..-k߲ 0/%{M`uˆZg-d;%=uoZ%nIK=%s 6`Qao&tݜrulb A@ "I[mNhEhFGm mH KD2=|<|@GYƤ!hRm:k*]$s vi}wee#;"҃_6I:;2 8xUQE[ۺ}  !ߖ .A_{f|OEٕͦl c,`!, 3Wm , &mN3CM,\À]L WBf=2V_[^@IIyd4I]va{C![l3+6[wo}fPr  #Y8%CA剏3{oo]"%SkLmoA 'FqixeCBM%kTeB3߁ܒ  @'@l &7;6)M#ytoK)z(@s$ l=o T߿l4y؈_ 0l< dyP4@ͯN[xH9 ~m}F$H$$I$(' !01A@QaqP`?69`XV%I""(^Uz{@U1RX4n e3w^ 5p:GHBE \Blþ>w*à\x(eEI&Fb֨y} JMYE eQE7X.sr袸VРSrM]i !6Tl\\, T k5 L4\Mc[`.-ZFcE0͍T؋SZR)A"5A\`|P10h beʼnԫwφo# ;FseEJEE-/b:]+Kʆv9X ,ŸX1g\@~.GBLK E*5rPuhhbyo=@qʆPrpX%TKPS5P츸cW.ݔBlLJٲ~ahШұT.YFט54b j;'4$(led5+\_b=FwۨO*hc#*vGrw)hip o) o_#TP.Njܪ}#ڭ 44"AE E*1)PD7].eÆw7vè6(J,;rQP^1(R)ñ"~ yljqwD+.X΋87&;Ap.,O4t9+5h[EИcP҅$Cw ߅-Zz+qBRiMp! #p\[بj B0nN,CC(kܺ5AOIԁC]&pЯN`S:;^QQe+16*NBJXPpHlfAzTFf𿁿p9J;41A @Dym^;ZU zcYBڤ8fhT$cT͍Vb (kῖPy %^ɴRlբš HBΕX ZБjm}] A`=CqM+E(|;~J7:PX(]`Sġgeŗ7eC:*!CE(a[[*,Y=6l's ⷙ;; JEU ,r,8hN,|Ab5 YqbcWP Fimd\)Z|A*/Q;+xRv\v(ixPx9062 ض~tFhUA/61wy+'n.87Q(1 Ѝ(4t-)z1Bp5 BXu7%ΡCph>qYC*/7!p-7`SJظ!6(%'YeX(t/ؽ Ɔ"E ueE$4ᜲEB*lX2Bhj!s4/%*E]jR \ H% ұa+ғOLy HY&rPcwʍP^*|mo&+@S͵٪,l5 wU`S{}oXI4\Pv$3qT1cB[*Y၉ -'XT'pNU5{xo  p 7jc,N5SJLC.l"pcFⅲmM2KO좢-uMs{Ş:0N:ƕ2?D//04ŌZ(' ЬhQ,xwpX(N;e\_ۇXbA)i < +mbBEe!9nv1ލѺC cqblJCX\Y|k$^$B= ^3RWsnp>ǎ.t-Й[,Dwrc=\i\ /V=娄U]CǮʟU Jۡi[:]ئiDŭjBS{m!$FCi+ vxژ1S߃IؑEE 5\^|sk3NCGܔPjI)->^SvPj 4X IjcG/uR1E_!i'lEy;n(ݨ} AL Z4֋z%l3K;)=Ce 3LQ@t*{QQpԱss_͞H4]vEo5"{*TWcryEaSHT04PYeX@'wCv 4 hƊðmZj/PҊO*j(t)b;mvSz(VQBvSG[m@!WTTU7bI*BңL-WCڕ,_QF Zv(H(_sj%[5meeP~J)(B`h4y?EA!2C\eYG c*vhEE M( |MoZ GCfT!Bj6\l؋)-ѡF:R S4$me*\Yq@PQl(BP\_kJBBJM#=JBǧ RLve?QD3n H.&Tw Š= <,n6QEV eW=CHTk! jQPД+7G2SFLԡbC X5Ъ"P$FP ,(@RHYe$$u/c63p)\RYBbbLjǂyY\2N JI elz6"tXZ R pa8dVLEkݕ HC:kTQEYScc \l,A C N6o?K欁"PE!~Àn.  ]0mBꙨcik; 8=T*BcVEBBP,,baѷNQb kBU 1J:\QyH$J$ -*vΨ6^aF6/ Z#@@,[DZ%ha  m;,nn,>ttX*Y/'6\/"5$]ZQ5uቈAp[ji5g`(NPUZg\[ Q X) c6Ye\,l+R,(x7ɸ`)_)EXYHBA'Bh[: :@jvELlPkjz) vp.qe,bg(BTqx." >6}; v'oKFQ~ )@bhm-?a;4.B+RX(DKln:p##U1qx^5W&ecb`n٥؁  - 8 N=HԂCc(QTZcJ%P' pXQ+䬱VŵE0͖1h"8\wX&Be8\' q0Mav#ˣX2KtS:YZ%خ˒ Cu}D6EE/t$ByٹpL|MʲЕ+lllv*ٴ쿲Va(LZF"嫸,ݽ7Q62ɿ PƆZv> ׁ2~Sxjz?awc/fcc}J '4X쬧VhP %vYYqxhMiYeŹYh;)zЃ"ſ↬t>>X :Gn.C,d߱/Q_) V C5 ޖ- mPuYcj_[}-,*(pƨpL]5jƅsEb+: qؔ!5{:[CR,,Px?d+,4P)M c+|=rT(Cx-a( Vg9^Ѫ{좽丼6YuIW+.PhoeV1((Cܔ6ʡ %,L萸YllP7BgCĄmc0}nj٘O kRRcivhj{% NQEJ+ݗ7&\,Ye~U#X<Ć-˶T\lRGi &[4*- >(BQC-E͖X`Ûe (tlj dQBAbD &0‡ hN OR;!7 n[W3 ! 5eʡ]PSSEceX8b,epd*Pz7 Q MX:BE °M{!<+lT1z# %>ͭikz5eD뚰MVGlԨKG.S1^!`xG_̮5QPg' ŗt~SvV7MGX8oMX`ksMf$)$.'e,Bup |x\-OeW Zt ]M\YX`nJ I[=KUwu7[GǮg#Y!ن\_{Txɶw{uƸ$0гR?blx/s=o0r%BX:T{);K@*GSX{땯-dv'kbG[6@oxpBmx m>"+!Ÿ%`(V.&ſM P{s4'_ $ $p-_5 ^;^mعSr0,p7_ Cj*! 10A@QaqP?)47VN)ò*8 nlQlbBb<:$14!_0_ b@Oc90c@.PDJj.h).1b('^BO ̑)F I2גq WO’-؅O&+>;=aЄ&#ze)r"D>%(Ư&&Bp=rL:᩼$LRrUf44&6\7!#gB@ZH|4|,M(hG~c1k qr= Rrk05|n/:SQ?aQ:14FD? " 0xY Diao `LSY{6A㡿fL ;.)J,45 aBx z ')'py'!MyB:3wL dS"9 vBβb<6Cy$5>)f\H,{D.lQZιK!C\'(Bao7i(&}w.\buķ<7xc,(c7H˄$>Y{iE5IEȃ+5>j}y60!#)pXCf#ԣ\ JLTRb# - <#4+f(q%& \^5#)Eĸ&n育%[V&!UƱpKacs|_ ǶFI ^B4gax~0CW(W\ho M.2P 񶧀0tl|le7R,A!\[v rb|1y.45F&!=] )Sk 1 a]$}/w-QW%'> 6j|aX OSy&'Qx5LXgc&!q)8R h L.$" x0Jm ZͲcʡ/8AɸQn !0,=)^xؿqqC}ˊFmYA -j44SHf 1Q075k \^~ )| ŋP)|I=['&L'GLAV1ouc(O㗉`Ȅ3`tHKS\oyZ KaD<$Be.&]HD$Ѷ~ѨBd6H}% b h!KFgcO7IVP;#5z6;hY~^K"Ln[.HBq:1M~N؇DڄC)O裥BFf}| 'pƜMmhiV<(L&k,exph;cUxHpJRӎO ]"DO2JFyU;4 z N=ˡ~xKA"^e&;%]v&zfab Rza R І)t7 . ƍ)t$M^FSL^ UIM | me0ŲB~zʔcJ>a }@.( }bQB bxXK?DAwi,M ! sb e5X(I<#"4Sb*Mѿo M.6#FƤec+.*x$1ơS( CFB*7섣μ"wLjU*~dgkma5?ҧR4 1 '. e*Q _CD]p=+ڢTl Gb0d #4C%2~|Ą x~qo18b;7 &:OAh4}db_քݓX58ED 6\ 'Q S&^>.ʬǡ! ae0Ӥ - 6<Ŕ?]k,$B" MhIz(bF%ķ옃3`U43k_a"TN+>MX}L74cC!ZQlF_Y{M-lb`PN J]f t$AmAJQ oc Vz3 f?TѢ?q.kmЙK!eNӃFFFu&8P 4 Ja1$Y/dv]0abf ttV07pm$#}nN AaIZ4zC* 7%T+pktR7 wߙv ,#[X ,ǚ0JM5S L/<;h!5h F&7XX($=Ac&h+ /;VaLAYCf\2JT3v ``B߲`e hH4~ȸ#S n O/7R(DJRgо#7i䴧ox\!B¾&4A#HM=k 9t;j5>{EOD"bX <5eF ´l'װ"P^7% #Aj&m;1ȼ(÷к"bH)1 /F5 cRа!256&\kdhܘi!a4Pk)x\,Mo%ɠh$hDCv XiJ z37;9CeGlWٱlx Z? z$@ c<~ |eBbbbxi\*%IoWeG-=(q 4 MoB !R!b G=[\"jFQq/Qe71EQ{ Y$"Ɇ<o OLM +K Hk\&!fFMĶ:7Й(45]tio4 I-J.J\/?֢p.n)N$uX[!АǛh|MGx4TNEXB¹H\= BuT$f r5$6_#`Q]Г}×Q>o,z\.[ HJU_M~p]hgCCB O1bxY#ɱƆfP,Qc| &NlD-,UáMB;D;[nvhl[P] rr>Fu"e?cFQ/r{8R]AhSZiRcWi=t)T=$JN2BaYBb6 1Qab5a7zJ b 2+hB"{JXkHcpIxvucy,'{Ëe(6E M5V Ц4$=a 7IYJV^i6d&-mЮcW?s<QA( JhLBOߡ 0Xem4x .j[I!g^s0F45g3ZkL= g~‚YV! ll=4i*;pلL$+g}(ݡMXH3L!$ [ŘO cT)+7 ob $ E:b6#Á=lf۱64VE[ahİ,%6}❋lo؝5(14>oBhpXx!" b?\%E}c>v%dAbGCWPI hupТbZЍGLQ1hU#a/XM%\@CA,</pxltHSFH\⦊kA4BejYBxh ?x!pRSE(.荅Q ҅ML9t}.TŽMM $R&Gjhh7F!7D͏pt+a8>xhq(q1c'R\,?sXhd&[V $UrEǂM<ҔO+NȒP9J1.4߶1!!n@ v n"Jl.NhԽ =Q{MR|`d@o0DJ\'\"K3Lc e)D(ڸ!fllXwEXQC=!(lS[(J?dv $ &~')h\6&!=-v+A"F OB4R$N3(?G\AWDFi.& 2mH5icpB1(loAp(:!mF[4~]#iL4?XcXFY &rP;'ZB"BSa% )Z3c^lM5CsYJ5=  vw tmkW} 5K]bj ,1>Ĥ#S\;o Ѡ汣BX)LCFQ"ZPz.fa6EQV!C66u2[ŲoEU*)Z~#o\DϢ$/!ZYH$CZ}- b%؄X~ o `w0 ބ"( 5:) d j/,4;Z  amB_Vl4M՚S Ɗ/&Bp`yAUQ&DԗEişE~\jƻ.nZ7F[&4]M (IxA 1f +D$4A5 &A(-Gu~i,bxeMUA E23ЂPBZ'"#;h7&OI./Ŕk0߮PWnIpᨱhkh%vLQ 8UXM(= {HJ[u J8LLi=c9ܢ….iMҚ._ TA(Li t ::5iw %c Mh6?CtS/l] 0fu 5nx%|6_bt${.*wSLKE(.)?Fӱ-F5Y5а^(͋/&Xay\]∩76z\mMBy攪ETlD܄ojvrRbJ5J\R§RI-">Ťh /H[z]ᗂ>e)x,/?wU ?\:rQ n^=a1L:y-<.)J׵)J\6'3\D' ӬHgBËcDF[4/XN7`~1EfbqqMA:]a9,ׇqpocym5^/ѫ%|*{Bztp)pl:bdZ(Oeڏ?|m.d~s* !C~K0NOyO\&kr?mx'MTX\dkCiero  os)h:󀸟Lpl*ǮTtcɻq z[cTQ6tGA&<0xxu+Ξr6YMW(8:ӈK♎%o6<.Rhu2iXx~pe߄ o ƚ9k0F M2Ý_ñ"ec񷍭&!&x>v- 8Q&8Ukb8.|#.gK"## U^K/15Y!&Xס`)D>^hH{>~ A~G;.9)Ӏ1ta;ѢjU: .GW31d56v}AOL?er_dތ;(H(" <`u/f6.(¸ͪ妵0oCu( ҋxI"˖q\z&S>B9'=^xG DZy;Ȃu ʹ|`= d&4j vO+x"0'#m(!r7n׉ CX/ŚEw72a *:s+jaycgy'1EE=bA, x<5$  RkJs b x qyR9"݊ я+_>o%6/zP“̺Fyl=缬z>36 d)EgۛPeaO q%PDXWS<,5כO"=xW ]k9zcUoxMxxE<`@8;$?|j LsZoz kFuO)!1AQ aq0@?WAI0@5$H3hcDsfp\0F9$Lfv]>@7A1F@@pc%B`DY0NVALp@ )mlb,h>,ib6t6;xF SE84#Sح?|x\c$QMG dp t0.X `<\0acyCC/mt k&s!\ "i=O4 (%h ָ C0بBOfcϗA/ͻ0>k!nuh5K^ J^.1qz%B|?9'y}ƒiB&sIaRP!ځbZD2j̀ %,"7]XO4.@/fue>cz3%`g u,)vog$dv%'nϚ6=ciP]^>f {l ˛~ˏ! h$>dpbY$&x8,$B B 4L"i֌:Hh b4LR ޘX@C ܁|΀azDb~1@T_@g45C\Lhmonyݱߓ׳`Rs-TEEz Jq3y *4xntcݚ`v 1  Z P̎[Hm!ܮy@_ u " Qnj:>/g]*N 3ԁ;:.Lx5y3KaW7}i4a˶xU xa+Ρk+fvx=UxBX h3  Ґ-2vP؁>` 83f V~R4L%6No>^)kHy +} l?"](ClKY߇7,?uXgCⱷ2u@R 8Dܛbr4bv?xL W8T}v 48F M` 20)eDj@$ԙȿ|&xӔ@6xc} Io =Sbm Zw C;cac⏱}u`xQIhH JG`,K!!ʼ{C}gY%8fcz\4r ]%Ӂ ,s A DPDKm$ZX.'MIR0o,R6gX^@O6\7_Fں،Š# O _ٺ^_a^^ĭ3` <_ ^}-5T h,bĩ >Or`T`Ӱ.h"4*KRF*$@[ xl}G{eF B/m:l1 ݍ獍UnW,x*3Z% ;L5g?`s~>Gܗ%_. g<rLm<1D%(P KB`Ʉ$a,;rP`Jk3v3o̟/, ,S$;t!ϧ0(ݍ`d=59 d񉳑XX#-wQ [@d{> G9@1 @bhIc6*y( X x3N FU:qF[xxV6¬5'?y˶_# waNܷ1ѪN_e28-q(1XzpχË!`)A삈^Ă +|b!A(bOhg +[ĉ2`+$$17j73s'%I4&D}]}p@>Nyڿ5?!]ye?]"σtOwCX` 6*sHK&9*)}b$ ~:_Cd A1U`Nnse1J)) W׹( UBL%;Fmx$3PGL{qi=>Wgo n'%w>cDϞlXȃa c[x}4Q>׃^2ȓr_*!(ŗI;0C@z^Iv)l+ 5"!1cm t9 yH-32AIyىk8I RzB@ pt? 0~F2FAM!>%d.2!bv>+ݒ-k`xl6{7yų}R_u' }rkZR @[c3&!BrC͎*@y=YY\hF" |䂎0XXÀCrV 9 L5$q,@#R*ԉ$s Ѕ 4σOW`yc,(Ggo gnϙl6 id>H3DSfh.(=H"P=@(HcВrኄ 1()d4!c0*QH> J@^ $/Bc\d/ S$n`(^:˅[D>cJ`Y6pcXy>}2;3O ݙ '˺"]a(LG>"b˘71Bi11d DƹhOL!d]@@!0 $d`)D-naXL}xBOsJ QFHGe*ScWiS{#Jt:Le>n ! uJ &C&H? 4\8l $a#0_!=K <;:'AE<[/#0O)!i tVHe{p `eTzI?x``)ǀ{ XaH}"5bC$|f} H?J"Yu>i}vz"+ظ BxRݝckXc8dKB" 'Cpԙo$ef р='؝Y5̩4@|vI(3NdtA2/ bM1L [#CB(ُ-Հ($lq@g!oеʼ 9\|S)%>o%A{;珿z( <_DRivt0$ yZ<V(F3 PѴ%#lR F0`|=P`x l^Lf,\X06bii`0#ׁ=$H&J6 , @MD^a  6'q4*s=~*.-qLnQ*^O#$$,G +u实U 6Gı{"YӊE3aJ5&XZj"{ vx lD" !,h,8=A&"O7!غ>d#$dqA"(?`BaP2WjVA!= D.tSPma}\?5eˍGNǡ2J6Т)yV49́X@BXELjH.):C,pĐeV4؅՟! @\ wحT#L#@ '2fAs m!:b_Ȏ^4C \C0Ahhā}/+ޱ$2b'f&G V^SE)`6dx슯6s`W }}*]|gl %|xZEXHMƠLܱto!Gy@  L7F H$@f?*e h-ʆi!]&PBYHbښ6G2qhr;gyABk 7_#L' #r&8C~@0f!K+<?V}r_ö{OL 33c#Οַ# 000t NHxױD:N  n񦘇GE>!x@h@{L h,i<+ OX Hס,-,A91KRHABo|Te,FUl8r`(03]$R@#V =kIPWfp-fb8'cΠ}pAf;cq<qyoM1yƖ"5#Z o? `#{0bHkN O 0||Aa":z"4X- yDCN N!QB!,I>F & sy${8ÓD $N j`T k)Egt7M^_C!tĀT?z}yQϧAs$׊}}k#+{Ae{ #q8KFMх_Q9*3 fJ!;*bP1L `*$gA0H.E[2u $Ijh9$CAF[ ON DU!*#{W0pALr(Y@n0!=Pq /` nL?|oWFOS6MFzMA?𑰪x=<#Q4eT6@/d@ܔ@ ;#RS ZQ\%M8Q<4 `7Y96+l6y"Mʼcx4^4huLrn'WbcD ?OaTvIpĠ/Z}1#o):Xѵ#Ao I)d07x_1"OB#= |?|| 3PЊ9a'6ba]ОC45 $#@@"@"!L)=pdtI!# B>d!x9$ !>7?\ JC 9C(Z)  .+dMJCZOM(kAۢlA$*0B%Ѯ蕏o09 p^!aPs4ͧ?Ǎc]*>@o'mw҄`LRth$u#zC`ݿ i*u .k|Co;D5f@;=0,Jr9% 90 2ȑ_o' FF.I  X}Hp1H@ ȭ\&1'#:b!Hrl^"J0i  M]d&U >% :ad{^ 2 p7b`#Vg󍍱6@` w䃸߄NħC,˲z&MҚW*Ӏ$.<O`;Cn63" D!CG,58l$- @EbfksrڝEcEl H) 0*EA{)[y/idTCct'kЬj((D覗hI5Eq(lCc91a,)i%I AbI$pa;TI3G>{MyoBxJ%C;E#a{@oހꟆ @apYυ}.Kgc}2(b472`$d] 䐾l%0N 0P`y*YEkkbL4-dPWFC\XT4!!%{lƠkpFnbd[u4˟Bi("(˜I]6|#"4=9II\OP)ѕp'&'ô"ocr:`hl܈R'&6BHؙrHՎhrK$ CBVpQp% pC b/YTN$ t~mbdEI(f e4J3q$B2nf$b/6D0n* @%hQ963gNsBjqbZ@πfĘbSd2I[NHGVhڱ>B9) d% As^Գg/'٫)T T61v.jHmN 6 a|x0@!p'iDЛ¡H.&cqO2̓=! /:Vy (ka~XQ 0 Z5vD@H!ZhWX d a6C! \@E !UV4}PP!a΍>MډH1cZH(Z#]:!T{ȍ+4DpvI\Z&/t'xtR:Ijy "!Ҕ GDY<:?IwO=Ȥ&ݐ1 ~Ȓ 躱a#h} @zsoƟe1%fb4O4VŠ5eE^{cvl! y_Yo  h#{8R,.Bf3#di M(#7 LRMkP\\ m=l 1)%C(!%ױP(\p;A+$^Nxt ˨425 =5?d)S*EM&Pt+Gl93|($M 5%V@`ߠm+Bv&J/XaZ%0ϬMl7apא>U8=c:N'x Q$hHBBe=': !1 Vl m4 VQH `8A':$ ts,9/6*s (ȺiUVn\6Ʀb`Vh-U1GDHm!/%B3C/bQC BF a(REaIW=ЕBr  =t4'Iz-S5jS=x2(H"sdQȦcmSB`9&LSD`-I ױIν %*Å^\fHTCRg,FAH-쾼S]P1̬9h߆ Bm ?,,iXсi, +3o`F툃gЫD;& &ehA@^+ ZcRdaG:hkw4-Ж2C!#Z_@Q=A|4Hy}RT*[grS} qp)t[buZ=c_R I J }>ZD~ДEGT)SKٮvR2w&5C[h3v…ql1__q:rMSYXs 1A'hMGk4ok$ L:X-bjK<6;KvG<_a]_W *C}lw`B=bH &%(oC w5Yc%P4 %> LiA;$@-]b0F6sٙhZ}@U I)ɒ)Oxnd,Q(M C ڄH'K b|1ˆ+dY#)*)k9Y9LHI iC%"RD)`3Š/DtwrXO+8RMhbqBN&P5)1pV9!GFvUH*d'CV=)C6&J8Rl&2vՏNt8 :2VD@L,5 %Nm/Ȉ/iLŝdd$\3?>l,{*LaP,,M~LQl.ACHpBBl' R#ѹO_̊*H4Rٓ @M;[!`7?*Me@QӎP)H0z5hY2 fQ\'%NJ[rֈ $ңLxŅ1A BXm |0LCߒ!TPx4Q/輸6i.NEz [#ntA&T"&!cSk`T5 Qж } l@2p|sZ16{bȓxcO4 Mp!@ X*UԌQ6B2!A'ea /f!A,:l ID 4];T/IpDD$/9!)Lh;%lSy`@((܏h!;YJIM( b.{- Arp7m Sb?bRhi U"A(w(ۥ0^ h$KxK ֹ ƑCRmIc@ؒP6M(sHy L X݇ua>~3$0>W@@ V{C,N/42& )j^ ;.Mґ Pcj,NSBT2pH9oCOrv{d(I8P:m$M!73nvK\>@6VDszQy1xZ7"_RrĈI$Fyɳ_~@ xH EǴ߱kHVTdl r^fSTЗ`KHU8+6$dAcݦM?ςQ P 4! ĸ7І\(ZݐcR:M[i[<8;pT%Cm„ :5̞5]v'3Kd[IZ1)]Д C73HsI' 7$*,^M}I |N9kc|de)45heV #b6,%E0$qXOK##쳠"=xT, "7~e1' ^=e B=r0}p (lL $߀)&vX A7o[>@`5,R'$cUÝm%R[{*+&C\t $p5vlr/8;sot5' G?gȟ"a{w.ԠgCx$O&jpC-7aG_D`$>Ak1_w=(Y?숟g09"0N`o;bE2\ӿcuĺ6K9AbZ @܉!FM+;|żP ũ_'GD] eF@ܤ:e"tK:#K TD-_%/ccѬH T>Q (D* iiMܟR&*);E|HiY/@i's6E9z id;.bbR =!4x~ب} #65:]-;5PS}IlDŽ2s ,|~CG*ql!xJb= }FR@)I6\ B'+k<6QpM5HNE=Sb97)9:Y^1-XgŘiHN@3a7x*4E?#dAB"D0ȁȔඖ Ąҋp uWƣ6 Q r_:!`Dk)hJ51J  EؚCp ȷB;`$AH,g#[*>Bqb!sCxB َΩ۔*"f"W" \dbSVDdNpk Y#-WFkI>G7:86yZCrKT5Dܒ8j'wo6=.ƽCB +U;#im"hB66TniQͦ@hL?|[MW'S1*V@^@Ck6?hdd&ͥ dh#dKNYjH3DDJV`!?8*; IHsc S xOd^d $BThЊa!*"FJagne>P-Ԁ(yEtK&<&%D&t F^CI!'iKu(S.2d4D8~H䴜H$6L%ILObDAz=/V݃i`@0b(CM-hU#M횭9#PQR͟ϔ1)7T0P4(&V91Hd!V݌2TFJ|~ kL$CiM m0Kt܄†r[8*}AuTmHS`πQӱ&l,1Jl<1Cz)!(@! IFDrmh Gnl7bV[o0!-r1 x UYh-"#7-'PnC0$;r(4 E@!zI }E2#ϱs#J1#*>ŔOFh#V*)vUs)B$)LrS)7zXߴ = RN)Nk%2$=IMd?Jρ/PJQbxט }jp'IaKrY@6N؂3 pG00n(X!e` _ˌ4O00B?ZZn e'mL w*Cԟ G5zibT[, UHpE?kQAM00 `(5R5k -!$jb{"ji ?OB?H%кď1 A2Bsh1&`iˎh4ʩ;Gp!(A+b1MFױ\)%O^@ " x/9sWL5 D%#4b:##bp ,nbxO7#T8,*׷t:2n 04$ ,Au'|6-BA4 :l7*!8tfM`yHfm Ѿg3"sK-GB眎_c=/hO.Nگp2*8ŒfU 8`.lX܍bMiNl0_{8|"[`+TH6#BV[B@LHU:fHE*~,V!Ǣxo@I"yj eFѸON" ?P5H߱ $pBP}Дa!EjPp'{rx8 @9B3|_.9WlF: P#ȱ@a:S rˉB2/?( ; (]%S8S# r_ )Be` m@@݊ @Z26d'CI懠a59޸-(ZAbԏIp'!$4$Y?6rJǻB'b%kxW\,5CR5臃Vs$ƓGdF !v&D߈Laʰ=M Y;QR''  #؄h&-8m#f*X>+iR$|5S-9{/K W Bl["@pt잍;2&[.S0lx>8鄪h195Tp%`Z |o@>- 7 b AFR !@R41DUZx9:N!0- " [+BD}/ݡ&H]!H܉H|eA*D˓|R%PA2ȃ7<'xV' pa KFY,@ SAi#lH]eM .Y)@; ,{K%e߱8G4t'Hr`zRcTRv#1h4`CfQ PdA &<=q!E->PܡPLBBwR!!Ll`M֥ D#d# H2K6)K0mIغ}ueAʚ/q S;ll&Ą,bV-"FIM;@[#A`2||=䀽.SQ0p$Fi#̈́$fw  [x9VH P|( U$k;Q693`^& Poc$h6wX㛳cN0M2DM$!RhśFnA!& arP& j_#g"R~QO؂jE" y˜ oI}[lvLO>R5`i# ,%"|HnCdkĠNı!8j(D1ۘab" M@9rLjCnDv,'4L` F#sS"^\KnMs;HXeˌ$twhMC(M.[hfIaAx,m> B"J4{1!#󐈢.\$ԍZ=3 D~!8P_7c?QlrCGæ3"(0`J(5, (Nܛ=c6MlsA2v."[ӦVk=͉ N!)-pI4{ X1HB -:JE]llbኢ81=rJbr7 ih^lDքBi9K+NRtCn|#-["T= ^ THBh I[]x4v)C72X\z'4d$$Dma \ &pDԳj~2j> Ԩ H֧b} $)*Đc oˆShN<WY6ra:pKyQ#c# I bYVnI C! 0䘩$bRHu(Qc`D Ȝcܵk쐾+#=H"oCy[C%咺 +1A@ M{T@K OdcDHEmbA (MȠ&E.D*TQS9'DM&Ή$W2M_= |p.3Q$i"G臀 4'hILQW 5$P+蛶-^iHq!!M (ޟ"[F%!D{/ง`YBCttVvi6exTvD`\y2W,O K+͹ p#'hX!-"P@`fr+1 }c W8[:c=#%̍?}윒\jSKpeEB 9b.djHŲh!v;vГhfe9? jY"# -.HubP%P6P::Viw"֥ʍi\ EhҦmi!Iobwa O) ))GaQ2m/)PR !mTΈG i >DiR6Qw[A@ߴ7+h2@%rM9Rja0gr7-!߇C!$| P.9S>Z 9<-`+ttqeC @!+Y3'KhpHȂ%%CJu%shLI#g*|SAٶ@K,/ai3CE+-Oq4 Y<Ҫm4o!6DKi4Zb{Z($&@"x3lBDJnd[Qdt-k%sWTө?$C$Q&hӱT8ZcqDUV_ViDN.?$ܱ@u" |sgsG!/v jW25XAk rqf]$=@„:0\q8_LeFID C $$lT/m 0[x*v,Qj0"Xp!͉G [gT\^FBf8DaCHb:XB$(7}ُc퉤VӑleR^"!"SM'BL4Ôm s}7t>D'v5M-Wg(bVNJ(8ٷ}G%6)dMXcs`ɔAN螤$=-r3Q)s9kCܣuT2F-ۑ6k(U6+b-Z+[UWA I! b%(Fh#aK`@Hu= N`~| c ; P%0<OnD9 ,h"ͬ(Ƕs)NՉRJ 66CMIE_e5ՍI!#%NSL$G46>5k($n_"ps i hALc9iLƎ[&zn"LZ[a!5ԧz hm#b+C9 cEb4 ڑh #*iN%v6˽ 6)%b]iHS Q(SJdw+:!GfQO(Q$Ed  &~TAdTQ&)eaL <z)-ˑ a!:|![ I@֡&墇BM2eG⒋BlFE&%$hLlS "6td|YgԈ'A. }]ƽCd8(XlB";KrB& lRMK~!իi[ZcslcMxjWȑXi=!(L)u74%;E)X' n-"G۞ %KQ2).YC)@ݳ`'L?Gc dTP rӝ"rMAd zPM+i +oƎ\|| m'rsC̓ `$c0xBطV&2CH^I x0hU( K5H#F4o6aUd̤Mhr[R#؁`Dᓝr@J`:$ebs)eH5\1D}$˜6_#C,h'No0QKu)) sOK TCӡ >Ď+ȩikhnز5&DJ"SB^j%|/CH.V_3c ~ĴBfƖjvI&(8ؐqNZ{ZcW#n9RN[c 9=58Y.c @QrC| M>6'bhVcN * L>'bڥoOrNIK!v?h!!6:Or$a0s)\ ucEDh,N # 06+";J> o lZ' #`$ [WA@T$6އ Y :70 a` =.jy`yn1lHF)r Lsj-%pvITjRk"fZťKhn:r {uڒP@${!D}kjiĢM7#2vہcMG#c'OinPn4 N|R0lݭWȔnIq1L | ]%J׷#-Ji={tkRbv ̌P| йj؁"P{V\ƅ%;ZJ;RVI)Jۍ{I9JB Uv|BOIS؍K:ס@%b~>{C0< *$/.h$.1! @R &Hd rI p 쐆 0M"XEdz ea!CD;#PcڝDd5q*dأ\v,d85PL>"mBghJ8MChz"BPHsD{| j]Є}4 [:9JJJUT#Dy%Pps/zN Ri't1[ $38آh5-/7Dc胿B =BHKI0ݦ /mB%Hdpj.`YwYzC܁`}b!}l0*F+baA V](tH2H^ 5b%d'Hbvc8cy&OdM)OvgK؟'+S' zE6ļmN"'Vɳl |/d)#`ݻ(N6+$,G_m+D !JS%DoS|@ƐN mRlczRlpi(Bɸe&hD&)$ދ!-7d6hCMbm{= m$۷,&)Jv7l؄Z aiab𿄮%$olR(Xw۵T T/ G 3ܪa /ᇆ*=}`}<6Xy~V"5PF"||0zY ANeI]+c@$ouCpNXC0w>@ȩ $!՝!Ķt!0ȵ7gbV~‹bKrDFcBE'8c}!."4| \70M.Bb'j^2ulR Xn8V Yd*qO$9xYp_~%*ck!({] G@CHr}1b`V'dPhfH)ەIxI&Q 9j400&'À=q #7a|/$݂%.6kLš̂?<%Ǧ $J"y]ImxVJp@8F@z@R cΰ.&t`MPYCABT6t&UZ,(;Vә&,"J %ѪO[{I,E&^'$596#$D$=$I4/+ШȹH0M9 V!:CDp:8PEe#mȗŵ-x,踠L hbzHZ%P7~V s4?D0+@I[ !PP3A`I;q$nWߊt  ֏f:c~1o)lpss$Hycb8ħ3ԕZ H&%4p 4%`8@h2`Fix  XX u %/Nv&NdcMC46c&dSMV<&`B!L (KIȉt$ӕT!kG2 ֐)tm6#\a5ԎBLѢ{EJD֎DV &d46/[DX`9- S!cD\n:`l*߱-#7Ƣ[R`?F`1g9kaL`dwǯuoo,oc`pP x 0dB i {>Ah^hӐDvF] fs.l.v"P/.O_Ȓ)QSQ$׳yqu&( +fE1+SN„"&=5cA%UQ 7 rzB-\'c ʀ V,4i `JLG}gĉrw9Hd&Y|=t#At&:ֶ0f>R cXCz$jpS!8@a *&xp*5yA.'@QH,UB M62\]HؔLA$L4+[*%ɿ.A) .0؀uBb$$ӘL Z$S Cr#Pjb#jA&`1|rT(Y&@g*$ 9̝, W@e!a'|?L뗘pN% %y*Rh k2j!D=MxaO8ײ z7ˆ >OMjАEA :Q@0(8ؤOD6dd9aNB0&ؗCaH:dOd7 *PNX5#A߲dcF'Zؔ@z"D =cC:ml+P?rД @9V G7_$tpHb{Ny«& KQ)噉_Wxr_k8B<;:g @Dɦ0.BM2 6 %K #꒤Ja$4L\ⵟh&%.4%0T6섬 #cOgH8rpE~h'J6Àf!b[ 9:&X/QQрfRiȐ䑐 2N:8NM,XW˼q͸#d~78"Vg0-J\l9/Zx"*"-?a0*D `jiGP80M08bTc5 4 HE+4CH0Tȉh.x)6 ZB!`{ /@qByTܩ&XLЀC@ߑ`W\Acwï7d[sM,COB*~O< :Ph،$-@/ 쿜eyx5{ :i[Ivl*F2]DH.&neѸx4.$@RDz[>T=WҰ,Fz?Fr; } y`/4*hi'=@}%VR?~ #8t @ u BA +|t/Brt%`",jQGiy喁y_&yu?ŋ-X.ϯX_ߟbQňO@547c*ۿ @A&@I7rTXD'uFn&ž,/*ؕ٦G)0h;ngPȄV rx @.I>/0Qg7Q t($] jHE&i!``rAC2q*<ư,/ "R K=3Af >4QCw1."9=03|ɀg_<!!„|/@>o .(s#@[1 _-CbMdA$8!&U^ V0(=zG6oE#'qJ[/aF4D`*I1~T"+.l$~5c WbX G,p޳. H(66$%Q` f=i*#-f" 8[˖x &yA FP 5g-! iPSmd k P0$yjВQ6X?5 30&D&h D|H%|fȣ *'숎B~#`_ s!y@ jOe?v(Q) KoS^V qq6&̿sAqI͵Dw8`~̡x&%otKA a^' .b m11*%W-˻qCGG,"?O nA豰 Ѧ YBS.)!bGM\<K4JMlHt~8jml0pW 0F "4޵Bj_(i*@_^% c R7? tQ<0jU=π}esLa~?1=s"lhnP04%( \ &YHJ,ɴDmEBo ̀Xڗl/u XuOz%>@$4a؀A% c큖PZV @#~~Ty8Lj/6Q=)z~?%` 7H}kaa 2XB .>C!6!`6HbA5*^\iRÛw0řcJ@^H @|8mEP!o~ BwWZ I#V?ĩ|8K/$(@ʽU4 BBNcLdž{jkevQu;@ ѷmNJ wnXREEqǬ1V(Rc#ʞ0[@QK& )isV A~ A/I١ G02L>7źy@tī_ </w֭w|YSg!`Uej|<{N`ʼ'ex,|87^:) +DzF-buV0~!$M8zI4> C`*5) `?±&g|}l hT^Nm.͂0C\CR,ş kQg- JyqZb\71R8`XōV i9"G7؇RAM'(9:TN2+ ``(l}٥eX&4zd@эQb@Om Qg s/H^ u9lXYH2ׅ&9Ύq\|O }0@шߋNшʬ(zo&@wjf}L}3`0 p hWIE0xx`@t\,yc9F5б* P$ ypgFvS΀+T;vķ=I}< z<=((Ǐ㚦Hz0٣7D!?3h-d\U倰&=WB);o5bx9v L1u?x96< iņ> #G@21A{N K (~e1Cˈ &'hC bc$ a D?x͈A~/mW @/yyZr鄳{dE@.|rKUHGqӎ1y_OO!ҝVZ;O/ώ,)C !@Eq*8G^pU_ fo*TDJj̄x7fs[D {|YԄpsݼ?l}M8H.ȶ>(VCb1=_ G\5]V7WBLP@! gS5^ߏ󛛿.a϶w瀂>E@Fk^` ka;y;>] } Ѯ,1LJʻ :Mxbxhdg;)]qR: mT.j@ HݟCc_v6c( oNͧ+~ 4?O#,Vg)gwƈ=c{]d,i 7#i>ߎNq<_~尠w7c0 *mԅqaב|Ȃ ]RD$$xLnȉ0cr 9~[ aR|s!P>|8OSKO&|fMsVË"^(=~Eb%T^u8OnT_ 4w @4üހp8y|zޞK&'sBLpPUU">}i!x}TVuyc_$?R\l7$z)l3_&?׊-PF!&  eZ_'SOYN@ `ySIH . ݰZt~3L9xSm>^֟ 4YC1CLD~Ǔ* ~yk [!XUdb [ 6%X 97mH sXʈm/>cLm7?sLjc@ ('_=ymލ}y~A\0 'LqbGOhn]чTCod|ٻB6 1 Vo ]2~97VLhN7=ש"BezEwGt:q۲Q`XC~?a67I![fxr_·~~Dcr_1 x rO1?R=,eq,6~~{;n9mUu!؆EA lX jׯEEG ;;`oX2g\ ܆Ԟ UP W3} S.YJAi\Zz΋1A#4  QN⸾Q\>}E򏨢⸾Y\9>\wЕmY 0#x~tx O4b>&}h\O(rnQZ.&Kvn1B) 1KTq*43#EP0 ( ( ( ( (ROJ昅 ;& @€ ( ( ( ( ( ( ( ( (2@$ &c b2z@,\@brV+UP@P@P@{qʏNxoM>k9Dr:6+X  ( ( (JbSXP"Hc26Sjޣq]kb$~t <81sTBd)P@P@ )L(tyyPvihvtОQ޿0#rR,6Q(884!؍s: w= @'i +7cKAـYV\L,71U%= ?+uO@:0a4$zb@8,.=Xk0?;@XL??,=Vl|,;lѠgoΖZJx ( ( ( ( ( (lvLANϽ;4% ( ( ( ( ( ( ( ( (# cuƅ4M TA# ?]3LBP@.)@@P@ F4YOc!?zKCjˋ|{J8ֆ!@P@P@P#@ 8u'aden@h:. L ( ((ɠ(% (Cf !@$I8a2YA CDROJV 7Z7,Hh C +L> 9+0.RDM&4TaFsӰXO0V0vy{tH4aRfjCEgk_9`!4 Ґ> P?1Xge!aً³tMM B ( ( ( ( ( (h .@ '& ( ( ( ( ( ( Q֐ W@€ (pP0cA"4q,&@(c@q4 Hv@s@ҹ~%F,FECge:ILδHs3Lb0ib(@1QұGdBßz2Z90ϩ}TMZP@P@P@شp@B fH3E wdcM1rYG iЬzPnĦ  ( (E )LĠ-i]EYCC(,(P@R.5@P@P@.)8N- i p8 &A! 0PM!\iCVP@P@P@P@3BR !La@(@XS@ !S@ Oih8@4j[7&L 즚i&\hL*njԎe3{f]rDÚ|tcfm-dž(m\.'}h}hE5*ÓEƷ937XLh `~iZ<`=lrɡ_Ԅ"9"ur}jcH}Tf!2@ (2DxԴj'Rv2 Z@>̄E&4\}OE!OE*tiĦ@PA`r(֙ (P@a`&qS4~T&y@r7b(gVqRݑF\bӹ,pQc H?J.7Fl){RH@z\>.FZM+9%cB\g_!=Er} #sš`.2j8xw=P]WRgԣ$H<LsҋfH.H?J,;~%F9=~fb ER CJyX5:Q74u`ҋAEOҋ. z)noiyƝo C$w[~h_Oҕg'$SjPh ( r0TZ鋹U77͌}(<@8Jw!.hzzʀ Pa=*,t~ߕp:ʀ2ѝR'¹T SBn7'bڝOoʋ Ib!T4>Ro aOȡ&3P4PhP@8:< )eZ!@ ( ( (3&|)0~4CcikT=OFR=j(Jc ( ?jTY \@R*)P@P@w(;LBP@P@(@q4 ( PI昇 b@i||.) Xn9C&AfJ$*N脒C8[RKu3&]Ӯc=p*4c`@⋙Fø Oe#%1Zw9%؜ZcJw' m~~ts ˰mr֝.m#+]d8cv+8Gu舱Bh۲;`6Ow8Z' ޟ6X^FUԁךQr- v:EL=i܎B*nZ񭓡a RL[-]Y'ކdvfz+ Yس>6%,WvqVxԯc4_Arsq#Gz/Bx乍4ػR"q FiLD%ȩcV92x&h;8lodcO9A zax@)i\i0" L )12AS! QIu>Rge'&i ЗAj\4Tѿ3Ugvy/+ 3X5pch)m^")5Ec Q좊D>ns+RJRKAv `]GЪU[z!PJ淄nF3$w0c5 V+ r %EV*,s\r$e$E8վ\ބ7)rh#9R[D{R&Ġ.4 (6䓚Z #jC$Gq6(+@ڙLWB=i*4Yn0E٩5#nqA-yPsbΔ a@P1@*($Wvc֐1LhC@  ( (A,PirH~&!B`^I*}RnH%1Pj4D0Dl9( (A@€u L#B3h ( A=I.{QZ`0Sq)SGZsPK B) J`P0!)P!(S3jhr+&zEk$E+#6I#—0*39634qsEq6&] |9P`QvW*Қl4hK*4n+h&وyHLSDX=EdÔ0(ԮT.sad(+昬)M+h9GZ3#+x}V2ڀ%ĉ*Xiԝrs:ԻZ1I\@*8= PܷAT{C֎4 1H9sR݊nk)aĄxֲ~X`S(2QրƎHJ`; ( j}(2 @s!ց)JAqh 8AIOx lN}ߟ"5*'CccjDi9v:@Y7 Ajsiܿfɡ:Ԙ{&XOҤjTf. MosN6힆d"X-  ed3)sT6'[ʎb}lG*WaaU) 2h,<ՇOdMMRJe!EiPߠr}2rGE؎ wN!ޟ0:`mϽ>b}CQq0i6d46K5tjlo]Hut$ 6ԼE\}TىհH'FF~S\G*B ,D5[0';m bzXsY%)(fsWEj$ƅ}ke+5c'b}YJ/v9d,ۙ9]w>kI)hH Mm4&=M1$4HCg&N㰆)GRh +',IX_xt>QGٚr1EÔ_&_z.+ȽM OSL; r.ǫZQ&BfjǪÇ?JyZcHah%0 (ZqzblT+RwE lcL(J( (FM ,#9qt!nFw  ?[e3ޚ$JPƩ`"=i"Ħ@ԬL.dٳqKWv"f;\ih ր Z'h`><˒]yo#2zǑBֱGqJbzP1pi @ @! &١nd԰rq9 -?i0N?խQ'Q<ѩQTʪnE j G=4!'Rgtcb(,(h*&, Yq4,?1R٪.-M\d8EW2F zqN̶̈Qq] %Oҋaj.\lj AFOIH!N_\,wR=4KL֖u MDO6?1TE帅G>Rd/ڢ+ .b'(98 çzt1o" G ֞>rOLSF$B`x&ܙRT}SsE$gۤBP8aIMebjLXgB,O i8ֳ {Vn~86lQn5f4Ќ֙#[)%}7?֓fEX;P- 54Ffj[56OLzyC[B>(u}_oʪ02Oʟ(e)ضiZ΢V=<u' J>XnH}+U-&% r:d*;;._VD(rsE\Ckp5%srWg;HgMzT< sZFc]6< Q<`j@<\E}*VܹJv?1|a<֤a AE_)XC$io _5 <֦٠V.$ Wڕwa۵$Kqʋ J6e&0  ) 0P`)*S!( (E cP/2b)s\i|桂_BƋ%Dٔzh*P@2h~TDGP#D5(J`P@P@> 7 4@@$R- ހ$ToN$.u!Hؐ=(hV)=F,\.\^ mDԳjqLymh 5)э㊣jq0;fؔģ /@`ՅpZTt.cOf7Z..@MD2JM$9ⳛ;F c 1.h iy+ ɀ EaaZ j,/xBXV<lR+@]i!7; ֩!{I1wZv3qqaiiY; vAOA6 >-}h]cH|@4XJOae5q"oCE:[,ohO͌MA[q?0qP䎺Tt!:k);KsVm`:f_h$9LU|"becRc!1A"(\Y ~?:D_3ȫ1mos/>a{'_DhuJ.FhH~"1s:RI r2M'"M1Ԣv8jyMfvS*\l#HrÐRE(;D7`9jnhGuCt?)lf*9WOSy3ZO㊎__(MsGG9&UxߌJOґ9jD)9buz ,-C Xb(`XXaAE GaݓGr9RݯV).LV=毥; Pҁ84 v CE |SC4̅q "إ .? cT! ^i"A8VN$O1r@R!PPr[.F`V.ܒ8XeH s5cԄsM K[]hMnwbO\ktӁ'Mzv<\s} uMe @Ҁ`0hph`tH.Pi[\6WWi4d(Fblo.Hy!P@;M2@( ׭ H1AV P@@Rr/B/a0EE 4Q#4#z؁n⥍lR4€ (MM֘\FXP@4恍4<.{1 ZmMր(,!PD3(:V8qB#Zm(  ! 1"X2 9*A20 @LF&iN2u&2]1ڡSO[L"IDJV4=\-ȃ<)1V졉`F=kl!Ii2c2urDzҹHU85ptt/1#+?{Cl:>WdgHXu0[F>F-ZFTkT]fcʓXb2*8'ڧ4٨|"{SLtLqM*s̫'t;\k6H c-Wq^(ܡn]gPGyq@|{jQLy#@V$ H 䑊)JzshR&ʰ8ZT|4&Trۢ\FLɖ'*ӹźS)XɻhRA4N)I~?/Cf$ӱj)-sSa[0֧¶l"7c2*S:c뱊hflK'q:(-EN_Ԃ8ii:0GAf#"kªJb V8 jX (SCE\ fAϽ*R 3!S@C'2bpGց4h) 2("Uc*lJ(O ;*)Jʩ!-nY@o~(hMo|CD&-3LhJL9cJ瞔|iDF qZ#lZxrdT.xs1rԦ{\J6 T gEbM\Ql3hKu&l|;-U!؊E0Ҙ4| hbD84tB7qSm`ڞ @z;>J( &AߘѨo-Et2E8=p\GH.mzv=PM$b/㥨CF$Ѩ&2u.#(4 Z@<.N{>aޕt"#VxDJd<ғ:0Rf!+0ɠ$??eV!H:.EvUd&fQ*ERj>ڗR"g#C:EX62qMZ)lBz3֑-JĞ:SJ e/eB%D*DMK+LJc  (x?յ& b֘JE;R,J`(4-& S!S3eN1EG14ր;&L&M!(HNh2VL?I1p#N[b1({s@@zPւPCӊ`ȩ4Pl[Ež{Yɝ46g&l)SDT:&2~ c-'²S??\5NJ&a#fyHMKI-֚4JLӑ9I5Q* ?+29ֺqxB6Ei8j \.! hki3ڹQ9ة@r1PKѝ\/tcvtҐ?s{mnf&\']G-Y;1'֩1GLVT2#b0qLFJZ,,x R#"{?6b0*}(.؂6ւ"GO֐\o٤'Ԇ-d ~'B9h~!0˜lS66'Zl `qI19XU4 Hh-j[% v9(dj d(a@?5qP{c# *rh-674\vҀ*KЍaiqi=0LQ&O"ph#AK PRn(Ff2'ѧjヅZ֠hB{1Qe;\ {\Ӂq KrwY#ى=릎,, 7WQ T`=8R3anIJb/,z/1E fҸ.H! xjcz@ 2{'1rZ'MB}?QvNRs;?싏sJ夊MT8)!i Jbc8`} &kMZmJGCRcVrI݈sA2;0۝d{t  (jykCoQA>X&!'4 ɰEa1@X(Z =i2͏R2i"E" >,/T$r&\#.z.&4S{PQ :uakZ>I{Ã]k2J:\7p++3u+R8nl zPQm`߸R$,VR]ֺLR+)6ljZZO4h}NEY*zVgRʦ]&)oZ͛ Fz[%v}QVJTC3.=Eic:kP !\MK:i8c& 0L*Y\H35B5V@.f  B"@7NM@4) wKF0>ZDZ "@C1Xԑ  %1lz6(]&K)Z :P8> =D q 3̮H;l]qbxX.;ˎ$N 0DaԐ0it]H7."x8shZb܊For4ѴF9P1Қ!Ӌ,JCiuptG&jsR!]ic%|S ×Sֆ)HeN1<\Ԟn*HO-Vbrx+\|ZQh`w+ ޗ1j&T%Aۡ+ y}Wq٤VcBÌw()Y"oZw޴\,5xb¬<\9+('BOI?:W*YB?:.$V< hrxk7#i4;MO9$eoΟ8}RAWH>Ǯ?:\F'ؿcooΎp%hF$`s,;5DU La@j̝Tjyح9⵹=(x9l 36X[S .֚@S%KKfSn Che"Gz bLJcv%Pˎ&҂Aa@ ) jdiI]NjloRNZl >[C!;1n$W)bSwd$Lbgq@\d@0sCЍ|)j[tf898gUDGz)BRK+l[I},xUg]}?As=2(\]hϡVH,Ld0E#9Z @ҪIdT7iQpŻH['"qv?< YZ>=)`)"Р"] 9_I,@h$&?R4.E&8nV/rzRbSn@ H?GmJT$DR߹_Ҁ$b)>ԁn Eb)N%ޤ]v %BvM#(,F;/TR ;y4lPĠ+bnh^“sL@X鷰zgH!MҫC'&Ɠ = Qn-@4iiU=sK@Iғ "$7$Q皖B&pN8|TIԦ.>"Tt4a]osVXz +ONj0tHdAr0+1?tt]_4 1v4&_C@!cާ*; ґ7Jy i6%2Ы$7LIv _>E egPZ Pt)X)P aZhejALb :H5QR,Vx`NAYD0d,ƥa`F)de'y+45As?WR o]P{̒cq⻡emPrs[R(M3T#JV*2Hh})1Hʌ9r{6v(YsPΊQ6[zRo-`F.FF6sWJV2DGaVJOSe_t==jl8d|U# )&V~2"b-P@(MZ`˲lR$\K'ΈJGaތұka'3ڂY]:B.3hɥsEr,4=^⋀Ҹ=( *"J捅ߖ2=jyhvq8*FKb85v0RtP@lښ1k'[r2yTsu 4 ڙ!@"AW(n c6 z%LKpui&;RbԀ,]E cZFL)"PX hBb9D*$vQR*UZ>IOzJ\nѵx[ܰ"V;0LDB+ƫ3ӂԆ7~YGTk(pɞqY4I(Tg+M @6+EIt"UDC-:Ӹ$YFsTzPjjɑ/ғ*ų5=CRV:CSa-LLC/5$ʓOz 9U5ր=jQu1Cpb\C4ؾEϪԝa\M15Ցn>3=N:̷Rn# PmsT5c&uZB21WLfFhDd`iRlD#4)DO. 6PeW&(Dа>@:l;& 'xϭ)yb@K \ا'iT&6/&D'sAVÚa`ċ-J&D26[L3Sd]H;46RdFksA:S:`IsbDrD=ECxdD*}題1 F\dPM=1Q}+HĢi#kdyvb Eti9R˦qg5NzFQ@ NrՆ `3ZETHY#,QlU] $qt3bzhAv.lާ]GD-A4;ʇ–rA@E4qQS# 㠬RZ#p (7SFU5FqVHacuFR"5w AP(FFց>ԇrxnZ$®h/Z<0 Tjކ0ȔsJMTW:2\gW:9 Z`zȤ:ͳ?1S8k#9U'w 0B8DNʕִF "SsǸdUvNJ"~6P҄OªaQ`hEI7&+$ Y&RrzTQ2Q,LsAc$T#6Wjd@YGԻQЈ=hU ұV ❁@i,!9SW߯![{3gT`(4\}¤K֨n_Ў-'=SιQrf#iBΕ- BmX(ԮgDtVfМEEyH+4 ߞbQ }/z.Z.Gmd(l_֕C֋W*Zfj@z H@\( p.€Ըќp0})Bif\:ΡXwG4a>a4zQQfryv)6ͯ{+qXGD`Y!aS5)t5QdR唵..(EPVi4&_ZJ$r]m韠s 'ȸ4qԍ60}hF$$sփtd0 =}\zΕ=J-i)4{Zvvkio*NA=}\9qBƥ;Qhw*Ѡ0N:-WSV3-NnbxU3vz>Ԟ7\ޚ*IV`6C4eqAH NqC6Zrޣó,xCb:FAqO'UFU$!40ey~# P}ܸHF.NHL(m/21ch%triE ÑAMJc( \ŏAVBn֕46LI:y `1LAvd7m•ˉ)6|I/FkrGzЎz'{XۏpN.4&#+.{̧r hZSmFdeU+j(ɞhP!:+U$Lš1Xx)lhX1^"y>Dw '=铠 "Nv㚖iOs8a3ՀVf@/j)kȂmzF͜qS8&%IZVG$;94 hY{P! bHmn$` cf#HR=P5*e$Fb ǕJRG]acxuG<~t_a?Xy{Vcy:,Շo΋a?Xy{VܞXt'Q#il#g >-&mNbgA=2cHl~cΈzƍ?θfK1ΡMrٲF)hn|'5\FI4+yWvahʒz:$̫6vH`8531Z>K|2nQObHq$31[Şh 2l%֥֒Sޮy4 ( A";NЁZyӓ!29MYހ @X6{⁤yr?̪ $cIj3FED 3֓hR'xW$ZJF${D:66.g#Z @h5*Ylv`V G!L9C`V`|RQTm9&P1æ BrzTˍͨژyYlڌLtEhyUe,290m6R#iR-HFXH{֙bht?z% '4 )kPveC֨9[n)JaRLEeL>/m@7Z`!AbTa;0&N;EU&eayd,-TdCqTnh.B2s\utw:3 `׏Z71k+@|EtQ^} k#렬)¥All(Y ɻJ^-ճĬ5̰71g ]*0@W#ٕN4$4R)4Jn<*#œwq֠xmµ$RenzGj  (wI`z;K#R8*4Def=Đh=E,Rl5(mG,xsôeJ$n*c~ԍj1#TK֙@h( 1@ Pfh+dyUbTI1;QjHQ˚.h8LXǡeb'ޠ{IP)lgR%*9[2*D!1C؅X9-HTQ#ÍJ5n4jsO>0lG1ՈUp(lEEYmٝΔ?μ1ܙ?_ R"[Ҧ1m"gP.5SeU5`plh`)UOjQVW"ⲖE4ctEjb:>d?z8grEc( W[%$d+'@=*JZ")0ld w4\ͫ,LN[Kfq:=;I(En GU:m_6lsSֲeB=8phZ @ ;fL{)ٜ??\NlrB>uз&[X>KriCL(ETwp)+ήpu,0Ԛ$qzW6؅#Ҙʱ0-CԹr8P>,"QRI oM$s2^;D稙r=/pnjz›e>]sRQ+hV Eѱyj pz\"Uؠm_/tZ Њ Ra bEcԛ>9}+ ); H^ⳃi6w5 \IMks?8,]H$s\OSHESLȫLt ԺH$*q=jIEĴ>R7P[)Pb+vfl =iX™txs"RhdIG;JZtxsM% 1L zPKe@4ٛ+MaRƶ*R@S@4! gD FTc;^!屁\sj%߳ؒ6>6i%N~ l=8JArB)ڕ鵩j)cW ʛoZ) I=n.iGC"\: jmJm6:ץMqr'c{V<w)؎b+DI܎d\Gj B Qҁޙwְ欎Y굪lGI ?NFVx4r2bbguGPvB)6pivJ,W+1 !011@r1HM1XPz)|_-hF'ÑjM4Nz)daIJ14MЉvO@'4c-۲YKrzTǥnSD71(lP+I=hX~R؈!x'IiM+*mT&cIT6u64RЁS=uxƖSʯ~"X5qS"/3CKD+: hDZL4s'NW؛~jk`wTⲼWL#=K2Z3Ŝn K N?gvX=LsKF)_ګ}|XNM֌ }.#A*W9$&̳xZѝ[ l#P+r;mc7ZA= P# x.\P86eQe_2h`HA,Ԇ.?R@€E48gDIIS%tovqex7Z pOSq<X;uO>27qZQQ7ȅ܊H Ԝŗl'U9Z!)\g'ަѽ٤kJ*ȭ$n\@RF*k׊io .9 uAj\`SKE7 ף '3€r"L΋A4h)I@hBn4 H|7Zq9y&1wS@90`3MajG#]mMےԮfY*LiAB.*uVA Xy41$Fz AAA% ZTQUe4_qy:(B=(Z) ChF˰cHiK`WiƜ'Mo/($uC'+c~دqDAŊR9X!cp>po`qsnfXd`xF3-sV80NPO'mNhW&{ htu5H ?>HӅb*| cc['Aıh3Q&4T!\#g\҂ Wcx2"'6:T 8hnFs78+C:ڗL[%N=*Bsݕ\–ҧfRrA(;聠C@J:\:G*\v[AJqvRQv9ˑЎ%[Gh)nWD䊉S0ZAY PPP0,X0[$/C K/[)|;Gbx~ts#4ؾl_Η0.cQÏTtSCĻ"lcG'P͒LO(OI10=)ؚWF)B:wG= 3@9X%T"rX,&MҘrP 9Co4g5QIͼĂ$jsZ9KBݥֲ !zӹ*w/AC*UhA? {#_H/!}^!+j7hyYZuР[h%+Us1E'w Q$ p2(^& 41@␮M`R#DܜBӹK!c10RРͭDf=i,i"`P$J4-:S4Hb$cʣ4'+ڢ_Z-i?xTT:GW#N=ZnG;*楘46B3L0K1r"ԐeS|yVmPϽŒ*L)ZhOqsȢIF808⁲=DbT/`FZ 9P&E+  C)4kj_aFsҳ;y.0ޞZb#v$ceR(,Q؜}78i5&024b5=KVyn<|sǕV#cY:fwF13Fݻ!<# MF YٷqQ9$w0y~DL3u8rT*̟ty#v;oRCɩr4QKae\J(P|xQrI1]d*HG4d Er *SVӰmJ$jf;N)$+PO0o>6+h `sb'2yqt3@s1wf1s17+3 ƝÙsEÙhz7ZfZbbZ,I0kRz]J[C60(Eʶ/CTM‚I`e!} )#f;WB:d,ZH#$KC@/&@d}Ʃ$~ubʁcfX=+9JXB#qXJzrvUhot]I \dBJ7](GJfM";wc# 29@fi͡Y *w'YW#&IU<8SQ3VC=o!n >V/ia#>a#>iirjX{HE9X{H+Sbs]ۛy)"UDbtwn$R1v\{hm1?$סZ͔$O#{TXWf0#"C ( QLbP!{Qpbb`C{RX( P((ղgl4}5CO#6t$J/ Gm Ya#)&vIK1f䞤ІI܌5ƒZM\W,Y\<EF,8emTNmvƣI۴n۸ǵo R2Ua$@z0bP1SCE榍6>K9ʽ-rk?W=('Lh7&Dʽ@hHH> ~P1\?:irݜFq֘6Vy?AI4֜ƃ$ǥQ b9lN Z&< iI^& ޕ˪\6vnm 5W69kE%3;wh 銸PIE3EoР-bB1( (AǦ ,ZeThyɠvb?̧*p":40Q+(ұ.vVfhҘ֤3Q |naJg(  A)(#Ab @r];Qq10i„cڐX( P+ (/TDCҭ؉[jTVc.;~fi,̋4irW )&D @ Qa)Ru'vŶ^MVA} ՉHL-{hwDž#˹".{hd(>A} ^"3\|%V%<,dȌCEln6̚#5&jphzS(*NblniK'䪬Uyj W*o_ j 72o3c5֌GT?ZFդqi=PvP3[_@+-HC {zR!S=ڒ:XiJz4k(% (&ڏ1EMtN~5ep3I/IzV8+5pSq*9]@WR}*Bl5a\>s꿕;"UתTXb6;i12LHNWI1*X$o> hn;2ED3<Pj 8@o5, P@ *zP4M 2~bEF~/M*nh\?.a{&Cqc<|wLb6Ja)Aq82i4R̃ wopPTQpnu} W)ұRD(i @.(.ß5=3M;MO-^>T c] Hd<⑛de!icQG{W$˾v>w?M-͙/5ce29 HC2y@m; b3ޓ1hqF/rv59LԖ\ ?*)39{9zP1(,SM 7 P@PaxA=lJ•UZCz˘[H7Z5 pwp)4czοZ$~;Cc9c`"D'E͡aRq=*QRc._9DX?h1ztCHLJP@ h|jw*.7A)E ڙM MK$`F*L<3N#=DKhC85Qg<:;xx5E@B)Qh\zb)O6xV5v:p;v$WRN&Q`ha`ha`}ha`}ha` hq!*0ʹyXg)Wa N8j ?*b?oW+U~{ v(GҚ*&ހ?x±BGd\*vh6WZކ-N#'cNfrFzsY84BD{2,K.HpMI j[#jf K2DV|JE: }}MdJWKs(8 G0/kOidyi;NhH.iq'*c_̻n4cLUtm7W,xf b}'YXpv&V~$f.r&v<[*摧̎ZcBmTb?:cZvHULq+K}sҢ7QFjSwh^?:}t~t`a G@X F  &!( 'Aqhmx"}hY֥Bpt66W8Aآó8'ɬ(#<@G*.]$ ƘmL6Bd=84,Dd>eZ.hR&&*G%I8iHazn8>ԓQT916SVpjKhv:{M-΃?Eܫ!?¢K1d],ZAR`ȩ=~EfcdWA*cIrgTmփPs#PfTRsb Mo84;s6*6CчjOol{@ʱVMIV2ݴddtLH1 &2֗RIg)$`SGZLLduK0kb"@dKgКHBmRH IGlʅ'h;Pa֕dP@"* "4HzqLD@` h(#Ld-ҥ7MH̷l)\u6\RU {Y2JI$QTvfͅYr}j=MRv41ÌFi$ 401>v0L!t&F=I4iv4 Mv=I431d 7RW; Mi#ҭ؅Zʫ A6ox4ulU9v)l?cWc  )Ru>tS cJ5yL/mIBLH&Do[l#\U=L6(߇%?V tV0e9j1۳VU#s^7O,D)} dEܒIlRd> #)C7 L!Z"9 ;֨%(*XqH-LS-=#mCqpy#hK)jՎ[Ĺ`zޔ;Rq<R.zcW];SP 5g;q$`657MXY3} XC҂D4P@P@P@@Nh,3?棡IVĀCud^"1C%%гl6b#?Y>c,I:b<\֖,h(N"H5fK[='RsRӹ5ks*Tp)r/7x=JGC~S" [rCD104h#=?3XPJ2=+ZoHD4ǧE"}ና[WTkfQ dܡ&e%r9am@ İcLCw9.9ϵ]5 @9PXQw,UT* ̀_jhcf^@Z=֠rd~aAILG)L:uKoJ~ocTDm oGINLd8"ՌHs[-^Sh̉qLĬN(f@EQP4JzPUb7>`e E2Q(d<\ݪKR-2S&[Pe8eV=Wi߲;c$փ69XRIVi>V4d(R{P4}(+iRJ2i`i!>BcSb&TyU~ E7aE6YhZ&PvB !Z=zP ?ʶ^5Mr; (`3@ :pg S J5y,?mIB#LHC֑GA랦b?oW_+5d`ZҞ2uE5HPj+u1=nCg#I-ΉϕhjD^G H؃n̽s".gm)m<ִr?]Uҟ9$3wM 2G+Clu{sL;u-s],F2"4'$Reҝ?M ɲ֑R+6')3P2+ڔ*F,m EďzbiW$K,Ucl{RcsA,u\Q S5Hq *z椝Q4sMgjC+2VBM066i g9; lli2QЁ9lS)5_38e9&ѩjܟu.f?#j~̎ `N6UMCHUU݈tu4~k zlCy``L'7Lw2K'4mXˁfDc8h),y&4 #,Z" JL/C&ґhdi!:sI37kLBEǒ{P^PZOJK"|U4X҆TR/Nm"*'9I>8$>HGIJIqTe;TJZ˞䖏NGlWEz:^:2(]W2rs9k(kq%Ws-(^E0ec[cl7v^EEaaE(TsN+Q3OUaS5A@u?+95f2ܒ GqDJv5H9b2~flO5&-B4C7T?"5uXFgD PȈmIM6r0Vs-MAXTIni-@ڿ p5u3}{nG\c2©Pck`ϿVilEW;ܜԂ*=K`캜]t;W]*m$Qꈱ(2=Y&kNWQ/@xFL?/hdG#(P@P@P@:οF,K=s~ L%ox[~?Sfْk?P&;~~ЙEr4t4ɉGJ[`2sS}<]*D:1UQS )O'?o)::}IʵPΓId(4G{+fܡ>7:e v̭7ޤdDi144\3hdG&efT?zZ.,q=EKw`u hHbh‘H8JmiXA$2T~^X 1HPcJ,2'qAjw%2FsL> LGJ l-~4 B2:x#\U^T:Ҽ&k+Qfi:L%<V5)0LЃ TbV?+~znCJʒ@ zYwXPW3h'62zZi2h5,LOt?eSZ)h`;&" 0Z\ E&56ϭs2h'pv;AA<]A\BKh!*]Dyz`$vʧ=E'Z'mƗlc:+7K) on;8/Dxa>q?!UhI1RsՇ*^&ԱRa*~i'n~Xx3IrHr&5U#L4_pԱbC7RN.Y@FZ- plb"pK-j=܊2Wc5 Hrڳ&$y5B fv[7lm>ⰔmNi`J35$^U@K6,Ŕ$[ɪދq$2]rk9T!_J`:zsrZ [tBjOc-ԩ$4t7jYaT#r9*&) >T+J+Tv+ ҟ*pP zP_ISe #+6v$#fe?L[WCP@P@P@PzFm f`=I՗Fcɨh/`1yDr1RC8dXQz]Afygڕ2ml\P*@hՕt{{"v'Ihe&sPRΒ[ SoqMi haTIFM.C>=}pvnB>Z gI$S2SC,kGsT;5ҢL2әԙ#&9>𦆋mЊCg9I-E*Mb)DbbĠA@!8p} 4HNE-(:G1c#>P3+RT1E9~\\:UD]sA6z@O84XHESH W1+A!T &qHIPxitu 5^~arOqTnB#ךchSWl]\#e{*}&rdm©Gw0RHaȿ&ەKc;^ZD*@ Z!"H 2, P֘"sdqvEƛ٤q["g[5+[Q*bw9!ACy:TDBr@ClǨOrҨI C=Vah)E;S%Bi !JU>f.4+v4+zLVzEr1#2\Zri0TySܒ'#ƓESp5=(6d gU-H95fp"1iOʚ. -{4@PJC:R( *qҮ Mi+)*].8HtRB `KR|Pʂ-+&^+!􎴬lc*)37#&Dd>TM2N(l(]!'ҡDZVE {lddt'q 8\db0U\r*fb'4Pƒ?w5Q[3~rN:G"StZw;tg8}oc]i.i֓.dz.8I$ tGB6 lǭRg][tgbIxgO%O/Vc;ZdV2JTFꖅCKIF8E[z,9ú&}]K#9ec?Ě]i ~w eҧ̛,>j1kN0%!j|i;MY R @9gD^5rFv#UcIX6g[~UV9>7oʋ}oߕ4ɿ*,6%QE04 ( Q@ X&޴Y@XТ GzvDHL构WDZnR 'h>Z 5u> Ou,lfTi=B 5; !O7?o)n9 UTgJ>j1c+ i!@G{W5Ce~ҢK1]4',DF&*02xoϵ0`zPsV#j/TmҚ-ALZKw*ԙ1 @ h)#P ÿA <( ׽d:|T0EW 8To(qA#ҁX\J0`P+ }i`jq#89Hi$MlM.vv$?9Mn:IcI +StƌT_WrIfYtۆU6? iEAVg K z)o[-=6tӞ=SVD`}IjuQ98&d9@H+EXO44بnzsF}:ŭ#d(|X+]tެ&%ŹI= 8hk.Ah@N*R%Pc^;ԇv>)gN"A}hepp"oÊ$b9RPECǥQDTDsJ=}Tfoh&"3D'R8Bkdy3rt˧*dzQIq\TO:ԠՑQ]"ބSt^fäzTPn4xq.᎕W,D=(AR"vh@?i$G KjCz]-˃b{j*;ph}:G9Xe `$2tۋPrG54BIcK4lCב&"b۞l6/H)!ǓZ(sTa"LL3.afQsh|-Ŭ_tr3[+[x|-+ZE/aWY!8[׊hDm1<+d 's8F֦qЈIhOxW$Uu9. VTGDe- $Bk5`br'rm4hc=h6˥.Ubfe?պFzҩ8T0Q2E@>hq\:Αw_4rurX/ܢOy<dWI 8#"R p1R24J( (s@4f |?WI mWR}3uin*6,B`-aZZ@iҸ繿C8T(\Y/ڂ9ETj$1<Hv?r5[5ntw"T  /к;S: %J0҃)LzFq89ؾczҰ$91CHF4"Ƈ9LaVa z@Ɓ) %lpx{F!biqZ0 uqғ.䂲g.9H)E!xޓ4䈅RVfhɤH4@0ʂg'b"y{Rv dؖ?LҒԸ1)I &7f6ՊO/Px$B'ԦyVVJ +ҶD"~ҙY3(a&Qj݁}j[+$9M1[ҹmjJM kDLė!@㚦Ff΅J"}ks-EX,hw[>B/}#3ñ<6, zMΞOJwGs_C+l>|s.zԓ1i?R 4n_AeZ?Z;w@<؋i:i6#'_QPΊqA QaXrйj\8H튲 &;P  .Rp IZպA:,mQ=1q{Rf"Ӏ$kbȨ4I 8~{zӰ?9EޤNOl=xQ244 +]#ӭz䜭-ʢHI"\ȋV;FV x>^XmZũ?տҒw2[,]:V/cjtKR*9ef[!92GҐ*6ek}_ +36X]Oh_ʨ6>3d~T=dGZK~r"ypSQȇ:tHA1\VG) rE+D9b*[7Km)\@IvՊˀzfg35N知2nٰ}!J!@m: z b+Z,d2ep!_jAr- (Mfhؓ.g2R(C;$(P@P@P$>pՇI'ÚhhEDvI`>27x|"@}rբ)4I9oaY)Qr|9e~ر? =dߐaݗoRLii2rs{sXi?WGsfb9A7'JV0HɊRj NG?"-D>Jfg(Ε-%rU_$R4Q] yrD$RD9 sT+\~9]@9I0ZC^461A)-̡zI#U$_jAʄ$_IVAV- aZƢcHZ%R'4DA2n'M#QQ(SI@M15m5jlPV (GNMݐadFFR#*R*~pj'sGKKGb=aQ.uGq q\SBgnWf+ڑo~Tmy }B1 i.%ˡ ("yTpFCxWG!,\\AI+6+T;vǟCWZo/Ҩȏi*4ݯ@ }}*c}Ƞj\:?D q ͣ ZdJ*3~G=R:H~'R S qrs`J@*`8]lT 1o!1vi;@#5R1P@P@P@@q*CAQ4o͖|ޙ/;"G+ER&͢D̆S*N|ade9f_CU}Z&^Չ?/~щ??=}^!\?5B"uȑ{zVʚ[9g99H:elr@U]3􉶥♬I(4Le{튖g"u`=($KZ%۴S쒞BR"ݝOT=( :?)5Qu@?mDeI?θf&hi沍DFkQ. GL[¡2f%~O|]Ȍ&s$eGhfN=U@@ACpi=$ܸ?Jc#E>_p抎ݼk zVHtI {Ze oY/ޯN] 042H1ȦC;ѴbL1Z,;; L,Mm;A2ȟyNELq]yڴCck ұbZ`ы!䈣`8qM; 5h gE-ѐ޽7qh8 Er(9+\74aWasќg 5R.Úv3cQNrE?h>P  ( (Ss9 PsEYi"9Ȣ_z ưзZhhYatC몞̳^v3$he!ք tJpX8Bql}*KWJF)A#+Ig6:f)d\JFZՅ\GT$>b85M1G8ZN7BN惫*(&ޣrc>qHَk8r"M3vH#UUȳWc,, `\i4 [fR 4!LQP$XG3hA Q8(ЩzR˶zL$͕'֋ṳT=h9ؔ3NEH'Lס g4hoy]dPx#T"@' ( 4tCD5[:JRy61n'=+bB+HT5[3EP{l.gJ5 mۭ.8E[vc7VUE $u>znM_ȗOxWkzw *J 񥉗c Ӓ4T]>? cjc[L+у9k-Hd.ŝDzl)W|n1;S i1)18eQ]EF҅N0MpT)Iw2lWsE{ƫcԣk]3Wjv`;-uFF6ӜR Ȧ[4Ց4hMҐX1(Mi u ޘޓ.HM 'HƦÌxR}*(D\CGMh<'4XD}- )0})\v2hDPM#8JlM6ԶZEk$e24h+3 ֩5tO_5cht ^tƆ6: Hi]ޣtnX]]}JЩ]z L0qB!N*$Ig[[iTPz}+dB(, :P5ZB^kQ]9\$Ru`rڜ:Sjy1q3oכSc{q6HGRv挰jq!;gXMFky<8ֶUԍ6nֲ*9P9Ij%20kxOTPڪ[rGUk+U,4ݫK1ݑ^,nTLKs pԜ ``RuD\M͏r]2L+2H}b6mi1-jTa6 @ ;0s@ ϵ&+-.'@ݖ⹪2wmW~đq`ZCV*6c]Ao f4eM܊k34Q$<Й-#.@wWL]̜lhhyƴW5icqV+7 )Ob:P1p3TG)ȔDU!TfrCLJ6U-ҋ²2i\v 0OIv+S$ۚ穪D2Tpe{ SdirRu@4LU#jh_k*yN1- 0f ~@nUJv^!#VQmRAn-[irKѕ sֹU.xVM*u#W#iJT!k1ǃ!IƚCVK}5i yҎ0q$cLrQȭH qȫޤB@ (H~)tSIQܖs'ܦsq 8Us4C+[3nrd&HԶ+(YA*4cUUeϸI5!f-p汉k Rټaԫ9YPzjs̅ l9ٷ Hf= 0:?zlb`3TH@SaܺG9ҨR'I^)H$2H_k ՠF.H<ғ ,ݛ9$%1 ֘-ݛ6֪+=GP\Xdr vc8bH91~tȎ[6 1=i CI4+‹mq֋rg+-D @ieűfPsދ:L΋ ?`!/`>'J>E__֋A`꥽='KX.)1E\OdUi"9pEST`8U4(dHz0bP@ Z"b>HSKm_֙ Z]I,Yxe}K>OTJ@ րCCX 'DeTSͫ?p$\V_΋\IvMŢC4]ƍXL&qVk %#vRzvP㫿ŝ{PKpM{yERErKVJFZEhMzYl3qzoU~vӎf-*0qE!NdZǙSF<\08jĪX+9H55!e:P(82q-sUXZD'0[++aҩ;Փa -#SLbU;y5R-nP\@5(jWCԿc?hSu !#V3%4 ;ʥH^*.{l|2*#GIWfsWC9]Sgy.ʳ$ɶeelgI2y 釴+P,*Gi ubH&lbjcMR*>&("@楲@\m zL":oIb 0S!8lyqXM"g4ď Dij╍ԈbÚv&L>њ54O_5m@k̖Bw3ğ!]TC_ 2z1Ǩ$(ebsȡ\siI\wq:*A:IdŻ8R(ܸh+lAd\Swz#Y5BT,@ytt:3^-:ȼ.rvڥ-7oyrfp7oJnQ]i›R&,L4J(hX:L #I1dR=qPib)89JDјfm`bcOSR;XaҰI4(M~t0V:=9R u R)8,R-1 2\z"* 1@nTD (bT{P; ,(1*W䉋qҀf!R1 '5LЪMIr?pU#x ޝG"Բ$W=i1(DaK=r=6\rcH[r.K3u!@3R!E;R.&0Ѿ#<= x:*=iEԿҰČ}HIgAE*Fnb+jq$bATZ%ݹd:룹NW9[魎zWsF-~FgG$|8'fY.aюbCܪIYe)I6y}B?衭, }?$ռ@!0>g44ZiMh8nw r>) $NnJ2l]/X/7c?'9XJnMo1k F&lvw{sjnSXJVhKC#2WI\73m3 u'Q' `W] ^V^9]2Қh|Jwকr ژa"2vQ,ݩl(OBÍĸ)!jEi20i$7":愆 BA`Zb3InVaȤa3$N8 2X%'~/ʮybd?O]4C&P(H7\d$XC!S=ya =kuv4gs6ihޗ-s,yeN=l87Qrлi@=Zps4R8ҕ%1s@jY*Rs%(ar{qRzfH$8})Xw%1H BCz.6Kj8?ց&Og3@-amۯJjS/ZwR\dy>\Br3ҕK$ۥ;q+b ! 7чE9rԉIV&`@Qڡӹ67fx彩v%Z+[''ީBunLb- E;Ua\md@\x<`ICZSEPKlIb4 )p(dP@Hi8ϵfHli/CgL*[ h耽随g*Y稠@ ([_=uT8AQe1<4jWy0O=~ęLcH8d4MEcx:g?Uf @@kyxtHmmB.Es+ A{!*r^6ȸt:/z 㱕C%MF=aG \MT$'aqa'.Y4S*j6Fn-J!"䃁#_?ϟO(k@H>ojYjY bI lHÎZV!`sMz4':*= OPeD 0H;'ٵXg&+KS8Ї8H e6e$rT=X-ver+Ze8vGMa(݅(NԉYi HiV2pmht^|ajתAki2把Q"ⷜ.bܐ; 3wE3㠮W"7#)9=Ec)39$ڠ|U9PN%;DT8.r"QU#ڊvRw!EX](NFDNApThhL_i4왟YUprERg >`8P6hLv'ڋI aAH l30RńS&IjJJT4''_n=`R4 r?JtKbI΋Q:G=&g")1(4 L5/񠸓Egl,"bc۞ؠ+Q?)lUEhH`2 щ0=3ḚC@Jp8qS==F4 c>he-d3Se{d`F;%&v>qkZC݀l\S&kBu'C VI0:V +F 'zw6Dp1^Z>?JdܱPI'$kI+n*+E4ѵ:rW"Z*D"Ȯԗ+4y&]$W亏czi,B20HNf\P\lADy4& ?;.?ח[a/oC\n7⑺}F?Ze%3&#h##+2JaaTM]'`esԵqֵHw,} ;4X.6YP+6zTln8Hb|w?\Њ{ʁS$'5# H`@((Pn8j?1۟ޓh@oަnaoJV+ +ȧph}>zAtxϥMąת@B$2aI43w $_#tP "(8j`#,3.sT[J!9Q]2/"Zl.DDQb4,&%!E(u@RХz˚vL$&3Q)ب)/Zp{t@!rOZ zB(dQ-] ҲpL94-oNO&@Y< 8tFw: -Ge%}TZu>[1V8JZ{[#\擇2x&;c8ksCg}?%?"rT:?]Fdzܳ&3-OP*;-;n"0*O[9]3SgLyhg[r<մc5W{S7%"]~\\E{fƵ)1@KSICy/w8ȷ6n<~^hzk\r=ոq[[d#=khTOtIx4$AnLӯwI%آЎ̮ۜgR*4E᱋k"ts\n:3!Zp3ELJ% +NJi4К ^-1õ1aEM˱;->϶ysX{2qޜ'r$=FJcL5V ɐiXb,q֥ OZi$&9:3piRhCpbdȣL7~/©yu_kk2юV'4c2s6,5rA=\)0ܩ-`cN>@;JT61ʹqU b9S d(jY2*{2RgE&u&ZͳЅ'߭+}{bj[gYzj,>)4j$ !hH|ry)SH!hP@fAHce+b3 ÊVqEvu*8 #">U?M u*g( AB!$EAh҄GLmkOhdYndLRq@"HHih:`LjE'ަ@}i2/fVX0^6 Om$Of sWwCgSk#&ua$Fد>6xP\|^T孖>ŶMֽXWrxfnu x-&zT7ʺoA0yW^\-dQTeU33J<ߩi{Հ5fua)IByE\c_cEmGxb([ :)͵&h#GTe#GTd&?G| }bѶ*=p=K|8 ȃRۍ&o+/l吪-SQda;>1!&VЩ]3+YXЌ*lfFHn1zMj[6Ϝ隲%?S#Fb}&7Yp2xO4Ѳq% 4Kւ$TS%3#z!fsI ,"A)FO&^)̄.a@jH =(k)ZhM 9a67" pPz=E8"1UbRAEQp: :18W#Rʅr^E.a4EZ9Y7:a}r(Af`~KZL"aAK)'S,C!/LYІL+!"JFj[PK'֓3{EzSc P]hrzE%əJ 8mR)]*'xM>pn,Ur84*vyֈ/xTu9k[)Zѵy@gֲ6{k\~G|}[H|Q{$DQ0돻ת̇$rĐ+127Y#:RERHւI_qL(JDFt&<~Nk7{z\ڭӑYrUY7,XƳPWBa(%lo&8Z;7Ec[؞"qޓ)n],iH)~əPrqsR賨kg + - 9}F̊;}EQY+ZSfHጮtw~*nvG:9~}+~鬨-xO&)m4k9$s)i^ax}:bG?"jΩBMܽ*+c4QmlEXrľy !=# Q@L@tܷR_iOc2/֦EQVQqĂ6#=(/ީ` BD s]TPR5#aY(9af?(E cނ˓M#1ɰҸCU$p*GavrL\)2c9Hrmlcڂ(A6dRLXrց'йX҇4ɳ)4r2ɀb+$@{S:OjBqa( |9CϓS9CϗQr\CϗSBHiLqϵ&;@(v"hI捪Gei,NKՕL䛸SŤ ۏeIt I2ƯGyj"$ȺGc8ș;3$fUZ4ݖ|܃T&ਠV&&Th2gv*€^V~@4K#f2{Fqiڂ=hC%!Ah*%F i4X_~r=+RRMK3cT3R1V hL kČV,x&*hd."M J n6Xq( rn>کHXPZ%a@MP4!tL&bv46B=+.q#q[m;1]~,"t/?nvvfiJ72x+|{/40CiGreDdsRr > b~53GJӾݼ˃VNbwFׅ`>,g 9DZ\vA'ۣ`k+K<5HEt#R*I֦]M3ufs?f_/?CQcM΋1hgkw"[mp1EQKXVq%iXUzqN_J㘣t+:F,O.+%-沔.[-|?2d?4*~ac\A9>h2#QSQBV!?Fk~UWP˻++]fmA2yjzLeidX-qLFSdP T,@=iA&R( z MV-prC濎H="y*4[ɒ ҀiL#C9(BMi $ &h[˔}bSV+wje+@B,ځs" G\ȎfҁziJd=BPRH ;{ a(hA0#2ԬDrI⋐B!(a@ :Jg@1@Sr|Zw4ƑvgĚ(T"Im'֚/}JS%)<?:ii,rb@2ڐ"]T~HLOb%@5?AC%lC0r1A5P0njU]jF6ID]κebp•ǻS@EE\l9E;ʆZ) E18D!.8ibyE"V=h$JP(Hݣu`pTTN7gA_\l +Q6WXEG)$e-~O H/ u0<$1(PiEhs^YE'a;J6eZEY':C\B-Uja'mƪP;u9غ̷-.@hWM`D;+{y-ь*I'+Qբ;QU£WEHT0&){]R3ϧV|̡Лj_I0^sH"0ɱ3MM0/l)cc89L{*qRMGFXt48܆^ԫL +֩XNALA@{RX^ȒxPB,cxdXsE93$JzhG'Za_KAtUQFGPI@JfD70w4eh'1ԙ$DHf.zdFFrw" p01VB:eM7D;3-,hx(n-1+@y9Rӹko )U'fAGAlkWBW^)7 v*/J/^-V͌=)E7ݩdHi3CFط7RgE%֖~bg&_*u/7[u?1@r7\MCo|h9Mџz檵:c q1Gs9Α><?uSt58'JjW1 V}voʗpهҵ2Oε4yy]ԪނboSX˹(z_p|&]'iߛQbfcҩOc)358/˷?I}1byF'1 b.â#P/ZsS(ۻFiq:dtl63A5UĢWpl?:lrC#pPo8ʃ:NFPA94\fl ;鱯e2-leD;7j,a0jUCA.#|O#oJCSh6A:p*Ƒ[҃E SaXN#%`hܝ@a{qL})1XRA,l{)#F[ HƢGʁr&\o@Jwn&&;l}sI0,qL踌KdT1q'1yjc)2;#2mI$ǖO$;r dtbc#(\H~$ & i# n]6.$79ʞSR9 b(>#XCtwқfi@,Ҥ+>b+D9 aA ?JQbH.KqNk9ĨtJS\u ٢v6?*LɘM#Z{ԯΎPYOB1Q&eHnY&}G5Q;Qt+'\_WiJ,K4քw:]7?c=]Θ&̘b*[ROaE89Xiʶ͊ܲ+ͦcIkATF_@.TwF)Ro/vtэu5]C~ W;F.KO]ixv*،ٛPc-Q-("*) Nq@ pv6zb.3R-M"սվ~$TcʤT QaP'R$?\Ld>¤H|tځ615Q&OlP>d9RvΑ zĻp?*ZŎAP?ikp`8B] & r\Aܑ*RnoOґjh'SʐSlr?JD["GM ,;·LR) dPR4-q`,T\m1P0?פW\jo?*d9G3!R8U$O2*=)ؖƙX`U$JD 1@&C,HMH ٖpGjJ$L @,r2xrK&s)6G5667gtY,ޤ-xG%"n'J OR_9n>r{X4Eރ;j81 XQ#CLƙ[fLD[^x}c 98RÔ,WX BM;E/jRduI0[TP~CIQ=!-U`E6AN*X+zc&4rizJTHb7ZpD1BFb^j)ؽ 6 =ұ6[nߐr.bzSs$l jZQ52e+@Jv^{VU#sU#l"ygDݵ*3?Ӧ'xXLa$&@?)-B_(fY3~Nk+_,ަKq}""3U !7z6A1ID}l$i)%zft4Lc1cr}*@ XҹI ɴdp-i`23Xliht>1>\Qd FIzަ&H&+Ns&hF3dUFaiw`i\M.}*BhԲE|ҹg&lց+8֚+ :+?_IOs_Z:0k3.c)]bx8#pKfUW3kW_CO*ٓ2^h]-B4Ic'%¤/z4/j#4C=KDHz1bf\Ph h4MƑ >SXT:㱬kϪ6bS'57BWZ[D`ob~A h=J5w:A;p;QQ!ȼ9|Q:gÑZfiTkfk?}>g3ZM.P )zz ,!̆'s4kMƠLjN:4X|z&)إ)nqH~̈I<ʃ7P ")A?4BGCBlT옾A?;"REc$+c '=N:b&[bby $'LCzK/Bij HV0Ep` nzҰKy`cqޫ)=9aٌ1loiܗMRHF/{LZ Y,$ Nc&P@y[; c`|[b3#ELQv͸s֥H} E\-R`F;'wtHҕ+M0dT@'FuM'fuPSڡ,I.zrV2xW8%*wǝ>SI)}(L,BWH,(bcNaa"PE16\|&U'HBE(n4!N2N(h- G<(I*$EP)H Ha@<SHºt2O9>NZ\d k7E8F%ۑ$ jʾ%̰6b SpE^6i'yH-\ӅNPIޣS'Sel\fHKYr.L#bH5vzRlɣcCK $unI-zsKp] `1޴LT(GuJDE lE# '- TKƱްRԝѕ48)4U`T$A^j[)!%#!!ai"JO"+rܗI)qYhwETlKwA\4xV2ѵB%7~M`ꉙ: 9\ .A'E٠pa'Eهf #M*xö}+qcȊ#lSnw]q9%jX`{Rt!ȯ,5ʼSH";@>MOSh ݐ.mΖۏ2c"cezV ّ\Ks1R *5rvV!9Pi2HgJFrخjLsA" bZSIZ]֟𾹬*PAA=V¡Qhg{ uh*[Na͜I27ަ =- }uwWùr;ّQ~7E+=MR0=km0+{Q]D37Yc=7,Պ?ZbHO֙A?@ xC">5 1iԳ4Sr݌n̋!϶YrK_T`St"G02>aF%0QTukbQzgR+2GsEz|d˧NsiԹtIm߈xOSH#RXH84vQi9;bh+Ti`oΗ1~ɐ^H֎b}mmwFϭ>by5,fxzb #op=i e=.ٮ،q֒ɔ5[!u-n4erյ],r*J P7uǩsF,h Sf'AT̪F !%jV݋D1( s@89l@&œ$0iHjX4V~ oMIBR$|xS)ʃ(èz[ fԂDTN^EQGC:T߻<Բ%! =E bM'N3fiijdBI7+)fVf-CōB)X Lv4,kPȑP*Nyn9*,)8A8P9lU=jNv An~BHQE_A&+b:SDR8ZRWFm<++3\^uHd=-s#5]sY}6#H.rN*Mk&cZS !юkwJ&)'һR$: YmI@SֳZuzu"0U9Emm E2RF855 +4yL^U!bqֺYj[ۧ^e6ʑ݊8 F1ړ2zɳޚԻwlCk Pnև/snJF1&B=9è9%sQڝ\BҡSb2EK6"B & 4 V;|I Q N$ѰM"p ;zVrJ&D ?¹Tp حhaH cSa]V7Q[n#PBzAtt M!6@s"uY 4sLLa;XJCvs&bxa4b kNr6z"mv3+13u[0{R$pE&dv'֩2Y 2HgJFr؂Ɉ' ܽalhpN3Jsm#袗1  \Fo 9hfn-r?"TKLcQypqXz4bU7?[lr_0UZ7~C?T{Yv0|AǪZ9֖:M;\Ra 5ެ~ъ-#PW}-IBݸ#in7PvUfe!=+Dp{{̮@}@G~tceHz`.~Vz]=(ѦsQ&v3G~5esBIm=kT R3Ed_kv;T7EMX×V{F@ReΑ}r"o>M &d^jӼD5P{Ю'4KiQ`SCuMM<3qI_:^}$r2*9q5/n>͡f2ΔV*A1:N-ȓ\W_?>d5k~·)w3FݑA4Wr#H /'iKl"φX(2gM3#bUXw,YR&4xl ZlESR`N0c(Hz4mhe Y9N`I'Ph PRN5r=qE+l1@kԓT"JRz 5brEN=yCQ"; |F,^=y5K@ƭ3~tfӊ'$>TެyY4@C!#W'4bjJRrH+5G |0CܦkxtH #,q:ɝYe{ZJD5jluypN(J,%6P~zf|fc ;yb3D0 E%z)P߈4ʧaDteEqǸhweopRe^r*֩g%ҠK;#t m-+-6W 4 wψ"h{^kص?&5"FFiCbZ8,J=B؀Ci2=9ɕzȽjztW>dlqحR'h`A h\UK~$qҨ[6D aʥnfҰc!>TL] D,rwQc(ɶ??wEK9Nx58$+MZ; (9r!wbØ &-fq@%HZ \T=`$&Z"MzRHGyڪv)i ځ݈$b]dPc $ޥe[{4\m>jQf|֙W+hTn&d4YEHgJ~酩Iy6:TrTKNLx܉5E?OEC:mbb4#(|Lđ 9ALҢHtx!eN:@iQJlZv7M4\A(kBQ}Hȳ-u$RnV:űΓ\{QuیLM[R'YcGh1kcsOcFl*u+W 8"KRM2K  jhhC1kR"ibhd1ǵ5b0s7Z,T]CY?OɨT~O7-x &37q9ƶWs'qу5JFj%#;!HMd2EP8l.fdֆ@=*L:EN %8sK qv^46݃q`,[@]fP+G 9Y(hh-ʐ@ I(CJ[h!&&8PEg\RhZ+Zh"!ApHl\S cC +;=1H莃r(.㕱u!_,ZТO֦”+0Uh^ Z 4bA惢$z&9zPfƊ "{9#֑QlV∮ؙ#WLFjǡMpThP?oc{tRM)ȤT, q3DJ\#yl`Ӓ$Wu:Q)j蹋DMA#NqLLlI#6FwRBƑM 1bhJE9m_Jf#R:HećcgޚFkFK[i8Ҩ6ޒV@ Z e$=ci\|W jW"HdR%$ɽLgn4n63\5N\*Eu4Vk]"Qbm?e)_| rnVTW)S5P9P* ʂB'Oab.˕i9%b3ҚcCUrMZ&\`D{4eRz ҉ uN 늓Eet>g#ߔ67)A"OjrHXͰ8+M'ޭ$߶*̤SaH搉Bkѱэs3ьoK< RsZ]dw69U:|~5VoL*_+^S(>ұAZ,Z,t~tEq~ꢓIFp*=0~r OA7QGC=E zӰ6.j3u Ҩ{-x5g}L&dPj(4\ɍ;B㷭E%#)3XR޵u[[nmv>[@owCFj ]C7egPfjzȒhmG+!6f(QΛ&[U,E+hh.频f@=hHI^OP"~t7$Y5,,}h"-"mzX}鵠<2~FDBw&uiT'4Uũ#7S yZ+^1nFKs'"@}G)&P;Nb<1h$̫L*WŽ[Tr#ݒyaBDP9"&e\d/rʣ54aE!SAyBW&9详^O4a-nm^k WbG&u)h JJI&d]LتKS)lW$n,.`E7ZM 䑮j$h0ح,G#{~tzlc+O,v*RG4+#jAf/ƚ+q`Ƙ9`Q)0b8@+!كE1YLPUuZd@|3ptѴD4٨84ɭ-n-ðQ" C`Bl|LEb(9M iEZ6:S IbԎw!A%6'r l 岠/BSFw9P̤Ga+0t8aⳜ.d/nJgf |(%zN?og:ٵ~Jh9-e _b ݳFo#]}k%T-k0Qԑ]&"b ,6C! ɓE/P4*最KqApvܨ@FhsOrgU' kB&\5br%&ÔvRZn )f:mǹA[#c;5@և0TIGQTh|*X")EQ`N5S@sXʡؼŶV{crNG8\9RqJ沱WOʷ<{DhOSQaBzʋ:''{D( ?;:643iұCcS.C#Ʒ!Key:c"9?ґ0܊kŷk)Hu4"6Q2MrOw ֓ϭ5 [=Jv J*Z1Рj!ZLAi%3+M)FӦoJ )# g'KcbƠ30yh5yxB1H-`6z!0?!#T-e`sz;rITzu(ސYKqק\SHN% <UbZA$ɢĖ̤SRǶWDgXgb-4EƾX䜚|qhZvT^ID )A gbiCh8nDhr" dFvEQNyj^ӆ2=赆*'Ҙ[BɊf2HCBE"f!jv6Iғ4J^&bѤPr]IQb.P˾i?*=Gٗ%#c={X?OʚyC.}Dj!}>~T{h{|y^,V"} ^.h&UqR^DCArL؟s[,4"A (#⥙A-3)$|(MÐjDT4\2AbQ9 rIjZU34ȰGrG{I6J-a#BWBĭšfыC)\439E4`ip+2YNk9M莪e5+gC0Ii1QN[)ՅD(1+\qgKIͻ78}LfZξ.]Tޣ\ME*OwEckVuXx4''ґc(!Trig@r!A'h4NQH|ԓ)2pib֜1p=W@ƴ=hEOP"ՋvV{++7UNB + TD,hzV|Ia>v)=DNV>: /qThMɨčIjJGG8R@pGNqΡ95ɰtLn`>%${ˑy:VT#ŕI a7F1] dUG; @\( p.:>,еc ֳ.l 1b@Uػ%v"5,M"9ն 2.  {$fU^ `W$h[a汒=4֥yi/Vcs*c|˯Em'`z "w.rjMƚJȮ~3Ez02HR-Ⱊ=8%ےp*0{ |>d^$Lgs!֮)"ӎɜ/ZY]X%&+Af ,lI'νi?*+Gfϴ.pq?oOʟ8sǸXDGRGJ||SxXsT?JP<~p?*.t+}?Ȣ 9EVEC1aϽZ8縀L ڕf\ӆ.Ӻ54 @#4dS:'R({ǔqLjw縦.r֞N3H= 57>9P:@ys4]~ Uc^1ޓ]K2d}M&?iNIH9 #2jFS@3OJ}~hE}9ǥ;BO^@}F}OXP.(mt#؁ܢbi(؇G( R\~ZA@{ @;H^iܥi؀ܡ)1E"ݭ¡ )+Kٿ#-1yjHNnbⳛINIɒ'R`SX&18ERiwW QkDՕ8Zf/BpƹRkQhwt-U\ ۱8A\{ѧsHR=]*)䖰 g'4Lnr#y({ 1AcE sS;D84\Pqq1e6Z~/[( չHfcp%ǩsc7GjX1W`aǥ4HBCs'MHML7; Ǭ=6_ڲr|aQxV= ;泓8gy!V4z> kCr }1ҳf^:@:ʱ~U;xс,1tm r]?~8dTdS.5M?Z{V/nn=noƏj۠kƏhۢ+[/`?iʍU'c' ޴F^ĩha=IkN75.$Ϋ}Ҳ/dt?G=?XJrR$'LO\}DŽVv\!tIw%ىD?#4{IwO]8x-(4{IwOGpr<?#4?{Əi.t' t%4x"0קƟp$2<O/h oOBO?i.?{Əi.tOof_?h̆N2!?==?GqY te,x'h=x'h+ /=4_?4{Iw h'h O]A|K{4_?4{Yw h~GhA4_?4{Iwt?4{Iwo ,9?MT}Drx1]g\Ɠ.g!ƅR]rF؄J#9h4c^y9ȭ32j(ڙHC=->_QJ3+W[8dMփ[wyP}ML6.`lKR֩qLE :["[ 3 Hf)'L)iQ@ I74E ߞOb s?$O;'%\rͼfLDrӸs=%"ś-֥HN]{'-pՎ;q\g/B?CTљ8G3܆~̧^`F(ǚhl{kU'[G*3+q[5#X9|cJR!#וc0mmM hÂ1] (flЉfǖFSpB$b6SVY7R(dD 4XkBդvdm̋M1їti#27;j{ۭkqe{˵1lzPu9w+hE-C8=䖅 FEY1=kXMܦաǧJeD}QcfKe8"Qh5A\:b 8WLN8CvcjcY:JJB"T`kLfwsN.ucfq@((BdqPEU 敂.h,Oak9EtCJ3p(ޅXD^I55@$z) :ih,xFaZ侧DYrq 4\n̤Q'5(&3T \?5WCOgE[,P \ғV #TYL%쭰Q)\–ULڧ^֌)mQzFүJgŬ)a J ( R iKtQf^ݮsc,jq7|:??ih;kL3QqP3@h0 Z( (9( L (ffP@Bi\\=@Ph K9\QeSb|UEx2Jlg'FYK1.++N*4Qc"#e0yQ%IʢlNErj"JdCJsV45D 8lc2YmOzNVNvQoZčulR+ &GY>FcX<+HFw1HlWZzL[6Ps\v CGJdI[`sY nY_V4q,->`ݵ5Hɓ 0(..1ؠ^ƀ#fs cM \RrE.} T-`)0ܯ%ķ zsJ娕Lta\9X԰].x׍INhI-ٔ0+j0/E, =j*rKbk;׈y֖-]ő\{Pv)FPc4Vh5Ч~)DhBqAHU aqt|Z{0r`jcro\5.q֓Ik+_6R +'4ker|??fj50xz{&۹O֞Ls׭vDȦ84 Zu 'Ka!<b授,,XJKrzJϭc)9IȖnN"*Xqަ5ޭ.֋b#jнʸf=ig"Hb3֨#P5UY]**JVBIM]P|~t$jP;KXΒ8ks*]M%>l{7VԺgReR'W=*<҇ !?J(F׸>Z!<h$;??u?i$;0h|݅$O+2 ZJNGczvfz-k<+**Zi6UFDg51r} !<U9!<h$;??`pgtZ}Οy֋OrCy3iHw:Z->O≧MKrC)[|ޘkʯk=#8{|tF9!<;OrCy#->O^~Qޛ3IZr em G1d=~iEi0Rf!br1WPGsFk akw ;Jԩ+3ط5P9 \4]: UWb|֭'Ѫ׸Ρ0jl6jåuw(Rҹ$\Qi2OX]iKG+v/YX{Ckv5MǢ1JDrK\d)BID֬@Uh 8@(48@ Qd,1Eh-F Ms\r|gkNHt/Z88@(4▀QÊ4@j44B 0=(o?( K9-WwQM}TrT=?3X8幏}gs%4jv1Zq#xW> W-`U4G]:Lw8 "Uk:φʀc<ơI2Nշ\l=P/[ =:yqEtWwqu(S, (n*W,3 M*;/"AAb%t ; UvF8)b$<C!95H, C*=ԺvjAُq҂[.w8j@sR oҹ7L?ݤ̦@zҹ+[G RFjno\]9>O| ͕Ki68 4&EJ]QdB`I+?C:2U#;?J7=UKsv3w,pHLzPQC3^I4&ajW:"Y=4&E 8i\@ZӜGrk97K7ҹ*-3ף-ZLDݷcJWbӰ]CjmiAQA(P)"s)T:FA&PI7]-IXt*PVug$|TثLlaSc.O+D(=hФ$*0#h$i DmsI6H7_+!bȗ4Qk\mʄ-Rq 85)vV2yC4P Շ*0Xr Շ*0Xr Շ*0Xr Շ*0Xr ه*0Xr /jÕ\QCRSRhVhaڰAZ~Շ*0Xr Շ*09PyjÕh9PyjÕh9Pya!rj\ELQq4d G9=_WFU632ef6qLYp\jv4x$'o*G5 ۑ{RsQ;܊-JH1lm,\ѓRhnO>#۹0=ESy#Qn#QwT>~h.`1l84樓9s\nSSc_d/!$cZZIpܘ-Ēm=?&3yøy4ʇT3{ eD#}(N&OCVHH :9ԊxՇgTj$Z݌ +{TrsT6?1zl:!qԖaÔ=hpI{gg>ͭ q":HTz5W$.,43Nqޮ%-R7gڂ?I6A  >Id>̅IdXyG$2HI|9'9|9g.?O>úHtY?G$0Ca}o|#AF;1Hk*S&iRf-Ph$i2Z!#`Չ9|)4)gb˜NlRɴhʽvD@T"9lM sЍ]qLɰ, ; i4Rn&(=*lZEFcM"$,;SkǽcsiXũ\`=EMjM$p5I2 jc&\- 2᾵,Eh Ȭ>֩uuvc}'Uڡ_j^ُڣ#]^Xv9[FuEt^艔OZ-_)C; ml=C[3_W\J('Z5/}g/~ʶuK&?XlmA1kY+&+ P@ERBeGI\c BfF rĎ"?+dgj+S{ ֶqKs}G5XlwEq, kV2oQ¢HpHwPq7aQQ0yFF9shaQ0 9ҤVU=h$ Rey^8fN8HY@Ʀ2I9T"WoC1{9Bʳ2k6{bsg7WgA<2@,9d!8șm&#;VȇZ$s,1S( [K" ($ХR1v*8Xb;xeIpjc28KenX`(Vb֫ɐ j.BD.aTi_!u.qڿv*{p¬侥#XxUcȃ&.00QfԡusQ8J誑qT2ԜFH ELגp4XhWfj-be6sw Z Ԑ)E͢I|ѴxBY&[=jlAǭRc4Ëԙ#p)c=[: i5I(R(dXa@ :PQԣUy!@ҭ vH|Sen3 Dp:;Qep3Mfj̍B?{84LٴgNMmcH3Ui $lu(jǨ[( z7f[кP<Z9qViU-8$EsRB/6Xy|rzt8vB܂`k',@~x=i KQr!Ps]ij%poO(w$i#2Q:acXshP!n^#ӛL&Yx|gRgC)\{UE>Mz2 MKGUބ%+q(7dvB7g"TՕOcnOc3Y,םH ޸k;3Oqm"s/M;1Z"/M;饨.:Vah9nPԊH҄rkHm85$25kĎz 죱#3XyelqOs{G5X:Aq,!]t3hdcYՒeAZ{2+8S=XXn/!uMZuMZuMZuMZ)oH~MF* 3 j` fֈsF/ M EFcI"gq}ZsQޢ$s2b0~i&8\/siѫB+ooVGwtUO:2Rmin-51k8(]xzRw983P=QTvd@7m }JO-c'.L/.XZ|-+Xˡ+sUwrsֳr;M|TWZY| v}MiB?jMC)sjS-=* jtM.MsV+vZ"lg(H'P1֙IW ^PHSEMP QJ& bmS GWay;Nm5 3g#5Σ@C! 2 f`Ov9c>sr=jdZ\s9))B SWU瑌Uҭ6\Y@1"z QhI"$LٍL]ާ6{E*Z:nOu+oRZxő1U03>XW=''q$QRp*3q`ʄo&.v*33JRbgQ}EB;"~T9HA'(Ly էh>fImLUW!AҫQs3jnØRØ BBj>klTsR݁T%x_E52~v&O\f\Ry?axÙ6Jw'$RjnpH}\*6gn99sVZvzТ5R6[?WU%½8$(9z;=t.k)уѝ> zι4O$'|8<ΥJ!΁\+H3;XcXжc|ֱjܜ2}*{.{46kE)4Ti&Ŋr@Ҫ7hRgoJІvbNE5bj籇(Mruc>Bѭ5#QBTcҷ9kU3}5\ߙ+i0HFE$i$A%˫Ѣ~ڤ=IQ{$kAQؠ[ʎv;H bdҦ{He\Q;8g,O}F; )RqN*c;'kphscQԨ'bxYٿ"/iX6GzÜ`L~ʶSE[c9XQ#R.c^u_jMXWLsRv C{St:2{bSFP3BʻpV2͡ `~NbHXUƑL 1H=#n22C1I-ٹGPnAxd.FA}" gMSJQjE[F"t$ҕ=ѵEMLȠ3!R0?*d>Gq-{j  faL vOG;WGcZOnsfer;5_sHlv^d4 ,@޵ dR&71z 91z 9{)bsR(AiQ΃H) i&Lw_uت{VE@ɬ%cg{nf; qm )P lXM Sp}!Z)l]CFI "tU)YQМCVK7jֲs\7T#E+_ma"HWTT*n)K˕0YԚhtXOgMrt=$X6tnR(\$z]Βَ:ӝD Tw'KȶMR:2+n^jTr.iY׋/(|'աc4֨ABP/gkTu6Lnn%"6zP_8y08t(ޓA΀}F) ?xPƚ`%. %õI,H(1^Hh(DRe39jۈVP>#F<ۚ "EhIߏƓ:`C 5 оԞ~u&(K.U"Z͟h'Z1BzPicaHnhRgD"㠠MLj WҁP e)ݐ)39""bK1F9&.fݸؤ*YXASRV=>3;NdKa3ҦHՍT1!U~gSd7 d4($iuc=NqVc) Lα>wa)8#RZUn~aX&45 GUdCѦԈfP#`u_CR{ۡ-@Wpfi?˃Al~. j bD*@a ֒:@tindDGSLrW9nԲa_Tu#tt;AsLej>:uw!~_JFZbgRGV)Os7M{7?$V/TݎtmOҡr#cԎ3tG4!2lL q@8LI3Adr}DH#R%#\&BS (B;pz+&p+3gֳQ-miv-U-YL1P2?=NeOҰjΒoU7+5, ZKrop+8ɖdxHdcvSzS橱H8⎢8nw^h5QgMp~.{dPsK"1Z&~iܾz|󳝥QҪ-Ψ-NNB?o:m??XnC)f%s\8."Qh^LS,!H4"9 V[o$u*?P\RWh-z5D `U??6.qàJt3'YỵZgedk"(W4dүd'8OZȲHȣ,n\Dd3ʕ|r@~Ҡ 8>X>$PVT }{JLV$T6xhp:8ڙ{Jk-.HpZ9 }Z9 }Z9 }G(PjIN;dW u^*{2´8%uzP;`P;eLgDR@W# ]NsEpzJ";K(o 4\b2cLCE\.&K #%4͢ނ6V0Hhe ރ =GI #[4=dRT&m ~Ѳ̱c2N:PO;آHZ 3W]9eJiO, ,<,PZ NURdIGژIoֆjԨ6?@u3zd3?MF#(gTP9ܨ ӱ.lڠE]DTʩ"]TRe.8ϵU.뚞T8ԑz3&"7cH3AjL>q`VNH3Mqh)^# W37=)0Z$Pt"G 9੹oq4v,L緽b٭dPd\zwЧ=ys+U ]-4qUT3=8jTau?mTSسǫ}+;v?] hi=>!9ct淌t:Yu1m?^3hv˖a qB^+TjkUː4+zLď2"NT5y>#9!~aBeliEPĠA@֑ڑL4\HLޏg[rI7\56*?^5zqwl&ս\$+1h9;}!+Qٜw-zMQu1szyfƭ~('$iLNkutEZH]Xʚ歱z>=>CI| պ=32YQ\G\cbͣyOC\aW"LڙmE#{@͞W-HkV2X/خ[+j;Ď9z h'C2uJ59&vOF+*}^wSG0Loi0EsY4j9_oJiM\O <~9C̣9D=/G8rx9wg&z^薋u̢nb}k4پ_%U)4ɖń|Թmzِ 1h`8+HS? P^jG*ND(,4А`U-j,stH})L8h#$5!fg4>5,@% Q@(+HR8`2B6Ag2ZqfcAM?#)2Xi6zc$i&"I%n~TId,@})ąQ8TFg#d7 _ʩuObpxṟrZ 1hi@se8 F:4֙.d nra~GJR$ϏIcb@9ˉ3dZ~qH͔4Zh=hgD6IlY8Tb2\VI4RXÁ֑ qޙ=hǹ=ԣ#Qk;Z sDRKΧ?#/#2:4 AQ3h8*-M%I&8#7d{G#UdD!@$QJ2:n=iLNKGz7֪M,PKfEM%2kqXH$V*1iFd`NEurSd<8>棑`_s'h_Қدj6S?Jr"^F+ru1؂\DLH [1ж*L0ئg41>PSP0Lnq 'Ig*͕Y?䯿ȸlvp5lkB]֯g4YFaڲE5t$29hhnݷ7ǠBRHy@sřIHNRBioQ>Yֲ{ r>dsȰ'nٔY0iʃIsֺsEYʗkDa-HM35bh֑lE6Px4ՋJl+\M͢5#4dw/3Dp.րց\YwZ }i İ2\LqD$HcX z&tS3mr}**FYc1ً>X_ 5zW}( .: |_j.XUeX|qP繳qapxҴrJ/.qNtiCbjnI |)2"بoŽ*7fjisMtE{GGq]~yOlsc)E;ke`b14M2zm53uH}E)ZeqS5-֮Z#Ȣ$ PeYIhnU1a͹C]Jz1SSdoCs,*Rv:Mk)T[O9/tYRdvbՊsmI[ZMQܧ`ΕSKZLVdbP[ g/D[nʔRiFRխ,̒I܁` AY4X'mĎ`Ҁty*6՝F01T%2L?(f zb^o[ƑʜӋ5qCdLB#We/.9gxvsO>g"'Y^2tGc+sf}OM)DorR TL,Ԥ2HGdNV* S2݌ڻ^ښ8_մ^m`*Es!KjhWB (yځ] 9@#!B܇uPm<բg iqE;b،DIi M/ H8sAW@1h.ҥ) A"-(` ;vI! -r,,=⥗{} {FH4Q}S15h~bi04hz{j$b0洉40Peb{s6mIvūhb[(%AϽMff^+q hVe)ٙ [UcN{ո89 j7Eu;p1j4TQ@1"oXʒo5)B91BOs9^jH`g,nJ 6TEVwe<1lQkΎT/o>ಹir}Ka&g֋v΂z}jdu؋z}k f):ۜPZY\=h?ܥv/fjA /LvHi۴r=j.A˟ƱMTo%1}4-lw[;E8t*T_ovTeu+p+\cҵsc)DqKsUǑJvR ~_M Ӝ"b CEfp SW59i&r*dqKrgb@覤O#q4{q+[F!6sSMXnj#fhݨfh{0@ه?ٌ?y=nW.$G` mjA*yN7&2Q(F鏷xN+&{"tWM?|/נ*lg'g*'P]sFNj@R^͵QlwTdTd:?RT}V%ðZKxvK~i½ɲ} \h$CRt21U[$" !dl3A[1XUB1A!؋a 2l!fITԼ'h&;iq=iQa=*IdPghq)](:;P r+IIɕ{9ػrh?(AV##aE&X|J,+ƀHHAAh194! 6!Ț9 eL̇LU#92Re+>R\^lR@ège7q.g>,鍋z!dN6}B'MIYhYL{}DiJѾQVDGva\ǴJiDc'ҵ9leR<)tRyzvIC|ڇC@$sY)P@4kOq<騢"XեJv)~̞7@dJ4Ԁd_;$(H#ޛWf!Wq5pv'EWHͻyvp"h.TZbY)7cIIN"FsWʖNm=i6H½vC+HA.RiJ#U3rl}& r}i1=>t- ӎMs#+x|F֏k&562ɭ8P0 N Tv2FrF3&YA#%@y#424P(dnph:c yo֋#=h Ȼ{S  hB‸c{Bd-R2]4i4;rQIW+'8r])g8Bf2i e\'LqW&{\EqRZ L`hxe"h,1:6)'KV,@nc8,s@y怹l[a@+ȣ&FEI#&jbbMm[43U  Ir۟Pfg})>H#l╎ec8#Eܥz}mſ UjYa@d SeqdGQ y!{K 29xӱ$2O4ɹd~T C4z_ʐ\:+"5'L+Y.Wn1҅kYUw$ZQ} zs@d-;Lldh @@OJPҀځ 1l"恉({!pyr#AJvcPdlpxm/~qLH*mb1(%]c\g>šEy ~)&Ur <ӱe+xApލJ,셬]rgT7``/&r[[vX6 nQ$*zz,;h3?:," Sr 5<fr+sk&=(;㩎: 花ї}U{Gjnnxna OskKcx'Zs,>ޟ UǮ qOم?cʻV~E? =j{9vE?c =whg.Ȼ_?e.]Z1#U{9vU܅u(??ObħVU{9v' G֨t|j}*X??]wh??R.Ȼ&\zn$ċS4۴Dh+XrWwG֤˰Wp֏RT\V˰rGFNLht.Z_h??7N]]֏T)vU?{)vEpբOZ.E=A%E{-Q!բC'_S|kE—`]]Z G(2'2X g.^̅hKg(/*Q |SocKuv$Q1ZFqVwX^5֌'G58\qE]HcTDGqR3f;3LEph$vLIh$MnjH<߾+j@r:gD]v?1ɠ@[2yF1q2\&/JH)Έvɴ RCi1qHJ)=de@E6Ѝ% E"Aiȼ#=I32;l񦈛Eʃ5DAVh#JGBhc1+3S#VR`Z?1T2nGt$J@ A=f:jbRf5Ӛ8iX#&KX #2nʄzԛEܚ &r$$ АR9QXILQbݸ&1/ɸ6?~1 VZDzG> YZ` J'@c)HA%o7 vHqq1rxL.'`m40n.!9m@/۠}Ҹs۠`t?'۠a~i0}}ʕØ>J(Psۭ#@s Ҹs ?#E}pxFØ>T?#H9t?pAQp}Ҹs ʋ>jpt?b{ T#7S$'U'- w2.E!Yp(4%VjQRg#NG#L2/Ap2RrzsEl*8y4a'vIrnjcD0h6BVsց@ j *#6ץ2Yue!%:Xg3H Bd Q\n#_ޑJn #ELO.>*@A2IH!4Xwp esLW,O4ЏPC9|8&/yZiqP/g"ӡ~͖#Ӣ {Tf+FNGQ1d[.XaZΘvg`VmP7A>mddJq1͵ T9ۡi*5B+3@ʮx@]@ Yh?hv?{ruzh ] <ߥp~4E$O0X 6^6,pGOz@C+#g}0)AH>">z+,=Eq7{Gs@\p !})4 aP @`4Pۥ16P{[l[h(dlXHD`cE$JJxR)4|Iĸ*f&nj,TcdmdgH,NjJ ZJ`- w`"Jd\(U@4RI??: @/?t~t)a綊8+N(P4e$fkڣ{`|®'#Z1ORI0֋ yiG* ryiG* ryiG* rykG* rykG* 8֗* 寭>T-}hA`֎T-}iykEXr BD:zv#2H$aEIԁ=IYT" +&trAwf;1T.$i /9*A5/TfBFLѲr7k[̳+]&wGc>6wH7}`os{V}IHrcYpii`L 9`VGH,WaavJm=*aaA> <@ w[1LhYNpM(qZ.7pFM!$qրa4B֘oPym.1@P:@@ˠ,*(/;(ʘXU('4vA%ʾ(%2(g 0ZN8i)"rsҁ1r8┫ ԴQ7?t,R A cAX.R ڀJ;4֋v#c`b bl?/gz#}MU}M hs0ަ3 hs0ަ3 hs0ަ3 hs0ަ3 Ayq43 i3 ֋3 hs0ަ3 hs0ަ3 hs0ަ3 hs0ަ3 hs0ަ3 hs0ަ3 hs0ަ3 hs0ަ3 hs0ަ3 hs0ަ3 i4$\L@yJ,(6 =)5Oz/F4ig$ΕDeFhP)dP&HU\NJ]Uh2b;iUw`f?Z4Vj}84cZ?/Zb(`a iz?:Av;˙$ PRr¥94k>Z]⁍f%H &&cHXdI#Ԛx16T"vnX9Fҋ p (pZ,ZE'+ na\PM!shWS xTS"͖4XP(_/>Ƌ6?ΘBhݬ`0 05 9&n ]TqߚL#R[?wɣC>YK$lPrQ^%oZGJaEjsTssG Gjio!k6P$7+ښBG#oZ5$.}jIL( )0 րrܾ 7ZcSI *J{~ _%}?ZB(z~ˆP=fM=C寥,zP <ڀ"#Chhhhhh`ʜ `7ހ @{ziրCrM0B+m鈏As|Hҡ3e'J4&=$h4Xw;bKyطxRczz h a %P&ekl{fL \3@h4f @4 @3@if 3@h4f 3@h4f  NĢh5b\B[Ve:vdyC6xH1 *9jKbo`Ce[w=fɬPyTdѭ<q@Dch e#(146!X#yK ShmXϊLq/+:RFnpE2!ށ= .AqEȔ.I$;`4?H,X4\vapڝɰyc"l rni\Q WJdCq`<Ќ?e<r &aEڣ;z$&du?CP"Xdds@{R h-Ojx{XOa Nd>s'})D(.3PsiXWdI0io}("1`0( 0}(@ S@e (%1=h`LZlvP"M ((r)@ /@`@\7yPȠChP@P@ F8D~iaX>?ΐHD"g4eA TFr>@(F%MSCɦZb.X|̚9kRh{%fh֦,}GJqr=E+Pސgj*2[Q- ( (UXb@ @b P1@(b P1@(b P(*XE\A|t%Kkt+m,ww.Z&"r}.%3 CE+ OS)(uTeqDh Ř u2du12?v e޹)\YB7CMʱDdbGj\Qac H\@w.Fl}sry+"OAUjCHm#Sb\%{ӱ- sN(-%; X;ucQKw`gCڐW9Alyq@)Ǥ:yhR;Tpi22NxBS  ($R.`xy`')y '&1ހ,@Q!?ަ1( (P@P@P@P@hݍL.6ASP}GL=~t؉V>ޣ^>ޣ=}:>ߝ>ߝ>ߝ>ߝ>ߝ>ߝ>ߝ>ߝ>ߝ>ߝ؏΁{ 0ETPkXyו@cY#ĸzդdU;Ȧfҝq708cހ[4 KC" kS#IT[0RcH\I))DnwdR7%Pqɦn=iz(xR'\4 $~$T4F!QmbĿbi Qp.vgowy J!hDu覀&S'pE 1Y=yG+@ x`h[t`zPcڐ 7M0 o@4 O)h-h-iyOLM&kzPPdtbC@hByO@4 <[tt4 <<_)h 7&@kzP1|AM[tM)h:M@-h-h4yo@4yO@hoʀoʀҐ% *D x(70Os,Z!p  U,$AL1HLP]Apid!IJ(~4P 3@h-! `a@P@P a@ ((4 ()@LZ.+<T$lVF٪F) 5DFc4 zM I͞E"giI ׹1pIƞcsRh͢F4h4QCN 4!عN 7٩h*F 2BYCERۂElSjۚvltpl`wdPP ="|3LȞLbS'a|j ǵy?4y}>hf9#h3'=(y7@I&MhdMhd!D< '0f `#ͻRmP1hff mG4Ma\IҀ`ci!|Ma>ɦ4X``q @ P0߃6 4}@ɠ_h٤?a`G4}_i7`(v| 0$6+n9@ ( CYsJShdRD&jOLPlH(4M ;ǭ;4 `3E3E3@\)s@] v M+4€h 怺 ɤA@ z\Zt>dA@A@]O Z2hh3@]4 3@}h@ Z@4  f3@ =4@f3@h43f=ORGU7SQHnoZacz=#zѨ{F/޴ 0[֘5h{FgIƳ9&w"ŒCCNsC+ ڱ|PRRO_ҀuY0V\'2Xa+Enҙ"l_JhV&GҁǠh!:z@s΀$a c@Q NJ*r 0%*2MzPK ϭ+x4H9nZLUI#9,Vzc%XXҀ]G4d DRIhH~j8?0"X˞ K)#T7q1Ą)݌RQ>hdFm0PP쪪IRRf`+7 HD2c0$C $dPF)]HQ@L ##,QF R9/#ր!y L G @Jq@2 HBE+J@@$-)U\9֘U#.pAP t2kl$O+/0 +B~qҘlAJB! +ghg!v2x Q *̠$Sk]')Q NbI()#&`ԡrFG@2Xf eX` (sLa@w}HFy,3@ceE0}(& ֐ X )S ┖J̌9"ȉyI+( ˸H 0# 4#@2䑚FǖtUoeY#)\ sT Qh= 0Z.q ~T}h-|5Sʑd_CJd_`'ҰZC@(4>= 'ٗҀ--M'V2Ӱ:aZ,+ uƋ _CE~X.{ҋJZ gQ@4X(8 S[2(,8`J,4XWh(Pwc a4EqYp:QaY2 FqPܿS{T>Xm.㰢@7X:±@㎔Xiª\g4X,[Eg_J>ξwy~yYLX9dP@=(x28O; sd恐I8+uf41@ ( % Z( (F99+>G (@ qP1(  ( L ((@bPj8 Z(  @P@3@z!GZ#^ #a? 8!v, P'B(AJX3LP0**U(.@P(@b)ޮ`R)iks@9Q 6Z *ʹE(T *ĵ0d2;CL4%ש4HʹrD6LQÊC1 8.\R!!}i9 * 2h( JQր<:<oZ 6%h M@B_Z8sށ ( ( P@P!E(@Ҁ Ҁ HcSޔH@h ( ( ( ( ( ( PCր @5E0Z`b .b @zJZP@%P@J(hbwB043@~(<(o1}ip) v(@:q@O@ަ1O@ާ,OSP08@€ <{P *h (FJ?oJFPx4 c(ÿҀ[@ X6'?J(Vasc90J(3gcU F84az~,X9@X gvq09#9@"{Q`ҰH *F4 '&&=0(1O(:ڀ"+>31@ ǭJaӰj5&)=)>&c68FcP1 ('D\Ґy- ll =(ܚ(a@#nz6Zk((a@P@.@ @>`P P1:!cS<Ơ9>a1rsMS\4"OSLs֘丕CQ+%}Cq!QDTzSݦ e0@/)P) 8,bb2h LPmb_0Rc8zuDh_(JT}}(#W,MZkgi_,!<@iY#4'lP(ҁE8.Fh(vR]0e) :@"U՘*l DV ҐbP@I c@4 oS@(1@q@phE/(@.}逄(P =Sp$P0H018.(oS'4ݽGEgoo΋Qn}ZcBTQyF B8COZP(& hZH FlP|@& ( (QhhPHa@P@ @h(a+H L踆yT(Q4 ,0 *MY+(B@P{T  Fz1( 9C8qBjFsa &PfhS(Ƞ46P 6P "P@ELBj@<3@h01Px;PP J (G Ҁ ҀƧ)}((1M~TxeXz!y$N(ޔloJ67[Ҁ$Us@ Rmb&@ h@.@pW €nnx4n@@@@@@@ @;@>" 3E(hP@ Fh)?hK<4SPѰ3b (vLan477Z]ƀqqA0hhw&@qqq'& ( (hardinfo2-hardinfo2-1331e88/pixmaps/bg5_light.jpg000066400000000000000000003510551474767047500216030ustar00rootroot00000000000000JFIF%%ExifII*bj(1 r2i%%GIMP 2.10.382024:08:19 11:52:16 http://ns.adobe.com/xap/1.0/ ICC_PROFILElcms@mntrRGB XYZ  acspAPPL-lcms desc @cprt`6wtptchad,rXYZbXYZgXYZrTRC gTRC bTRC chrm4$dmndX$dmdd|$mluc enUS$GIMP built-in sRGBmluc enUSPublic DomainXYZ -sf32 B%nXYZ o8XYZ $XYZ bparaff Y [chrmT|L&g\mluc enUSGIMPmluc enUSsRGBC     C     X 1!bY)DBn@D@0*h\ mHZR% ipZXۮK\ PJW Ċu,b`HX( F"$T *PTQ"lP 5H @ &K@8gxӻ  0dČN@"d敂TdCU`$r͉hdX45@%JQ wǣ;I ~[@ j[G4F@4h&Rʔ&+T4.@MAR5"򰔴 DjP$t jAKDRPʙh/.=y_OkX -ʐ7A \FC-j"F4$؇)eM$*6 P:b󢱹5r̵톸+@j$I@(- BAlz\W$ /6=coO lL̻>o f4e*`@ʕ `4, )IGvBAX  @F BRDbF FЩG/Y5O$^F XgϯӃ$mY Rܩа[2sLRD-@*P#R r 03M5$vK5\P 5@-pRdX o R8'>=zwTPq7!j!Lҹ~S\@W(JLD A!U4$H wǥsʮ@%]o~RF(PpPszcN\nxZ^,sۣYnr j *Ur2(˵0spgr'Ok @TP$jB]^TZKADgs>iTH\ yXҖo]9lH57-j_6z3oO^|.FW9ΐB&ҕ3QPRn&X c:cXlU&봗 r]<*jcR@YTTT+chk zeb(h@(PIBpQ LnvK93։^inƺs2B̈́0AI6)e%NK۪A yֱ#P˟Kn;]y"ֲ}s5˱&KI R4k=Σ|PMsscNӅoĮD H@BlE63 ! PGJeЈ=21@@P[$jXrc>+@*B G44LQ˪W&+qRQd$%*"mKR% WM|}:ykFy}\c^fMeHZ(P$K 0P 4͂#\\ƄQ@[I4RHuZ#Tk .mN6QzQXyI0J(s뗣kg|wcXj4;5˦o\ё4NY=,WS٦awW_@chdTI$sJDР CV HU5Z4 ,ii#JXMVzReyJӦ뎸[-Si<*\I"AʺzF BLC=>[O9>~FYWF9hf^٨^iAqsW/,69p ^,e\t (RJXM0%MS3q#Q74 ,PZ5A!m"@yX5V$sSy,NגwT>ĦQ)Vݡwj$3Vs> BzmYJ0Y*Z2l3*Z]Wd,-,םt}=zf)^fZ~dPIM(-jcli VЉ52ƄFRruzg(P&I ז{19̯Kf<:s#{֚)wȚˬ.&V9ko{<ɓPH(=4MRq -:0e!}:ZqL!˿,hzqj}$o5M0˽fz{ͻ<\ɾbk\RWb`rIU&+49:ְ ;v5^=X3/=MC6"IQ;@HZHMPĂ &3J4dh Ydhh rj o=k~xלTA5)33tY>Ι;-onWYg7듕[ro|6,$\gj59UdѬ]c1z[cm:Vn(z1;}ytʈAA($r.ia)h9pLϨP^m.s"nSI\5(D4(qK(CbAHfvZXLSJv>9=NG9z^>zu ,o 9/F}ȭ0cIa Ea+l'9 y9jWnvᳫ-9Xm(W:]ouaIE= n&ƬiJžgr1 f93޹,6WO/zP((<7W,"ۖU4ܶsqp:V{g.rISZc{ܺV*HW'Dvɮ9oM:R*kzk@9ǫ],۹h_'˧ oFJhK^jh^$tZSs(ZvI>|Υ^X*ZބJtRggQ.z'my!kӓ緩t nA9U%A(P@ <@[y8,"5β)5hT:3Dg]\^:mO- V+Iߜ&37?Ny׳ӓW;|oSKmI שAs^})L39”ݲt3M^W"cLwn\ zvVr=gI3KhT€3|1yߟDsѾ=yX#P6y@cEj(HYfljY%)g~{=:yw4EjeZ.[/IɏM㶚jbdk:sޘ ӑ4j7jW[緧Ik˺HYbDܕԝ m:n6ajJMoZ1@=7\Țԑsz*$-3u_+ߐ%|z;2.vq.Ah *z1k ;Ƽ $)2E 1%mM4DgK_/WGN6,ܺ_W7.s\kvZFfY{^H,|7[mS^4Qo.I1+M2T(T֮ҙ<*U9XzKSKmoYP7c<IN>+YE`%M0&v i:L Z$ܓB&Ƹ-sG_WW 5,E 7.Z%N&R:we휸 rO[9|Ku̹pD_NMq;u:fY羴7c De1y'uoԼrng9zz䕑^Nc}7'$ַjrrF;<*JAJ!ʬj@ ,\H,`j.RĖ245SNt%OdbŭN>>7M9^( Rs>sg4S޸pӥ-(t͚So3{\{ўܱu޹7۫ P:B*$~9 J5ڳ͒5gq=E+Gθu>5t; =hUo<ǭG:˹ԱaӖ蕌2y跞n\N۾kg),o|gtd twXc9!a!m)&6nO[Zn=(= #.g~Fw" k5uzEbtY>TS3n.X-i N:uA+D dDs[Ǯ:oRkWQJ]uz 9|䤳kyg$/\cK0+ngY1ۻB;)ȸEզo玬$]ӯiEן81uۯ*/>@ D%V0) @LLcC+.k;RZ{zK"G5kfvpEs q#s(UD3̼s餠$ۅkWv]:J5WNL^2M[|OC=S9̻]tފ,&z5L&s%g2t޺oYJc;3:XXN쾞>qt×2 4b,k]֥((@lM*D 3W(e+zǥ nt|3M+;u6xZ&@\Ҁfy[2%!ګ]q,Җ9MBeVz5ߌeqS:讲zmZ04Zl\'-*fs:$2^.'3S (uYXmDo=w}C $,jR eƘƩ-dK*)^{iUMie+5Z/)Yu_7iQVkS76U3f2THi2皀,!"H@J}՛ŭN&^|;syRNtWSxv5e&3M ޱַ31ks =Ny3PmpF7KqT pR*a =˚l#]q @}rW4o>}@vZi++kXir5Fվm;%Ro.g5c,yEtޓ, ]*ꌤ<{S%9]+fs4ՋFV%Bs (aWנ"2Tcyw[*"Qk͕ rM.oZg@pc >9 2jW2S+WV\fvܹ}9e=O<\yQDQns*K$g kdtLs5tE&&tԲ5٧.ᖦ]2s kfݨ%I:nϕg]Y;[ϧoi[̒i@BnMo>\Z$wOKq{seo&s7ilԻN'>y93y^ZgDR9o[mh:L)R+f]Sd\LLﮕuU*ҳNyXt A ϧ5Ǡ4=? 8p÷Qק.ᕙtWj"2Ewv&HW6ҙFjyߵ8Nu2o]MfĕRuNgFy-*6kwt7u~6s7ilz.I6Jvg&34ӨytvFeJPR4Vc;bt./Jִ1Tfsjm96Y.3e \EKoRׇO1q 1ӿ&@J%}\ZrTtʦk%Zkb82'L6FvNlڭʙ7&՜( GzfiϚcbt9t25[99137O:VP&t6:anJ4DEZ$oǟw:su:tZ!^5J1KTZA5D3V^uIN]z8q%r޹ϳZkǜo7M2O:3=lY(,$wOCQE $bSUSiz8v:(3Ӌ\]<~\3'\nnYBn*zyCF"MEgT WEUr54Sh,ffcofa9v&ypCtƇ/CJ<}m|̼jN}u&zk63ˏ=)ק*Pj(6\c\EfٽtG>Ȩ wvrs(c,sD Ѯ瓪,ʵf[.(B9 fG]"YFQ NƼ-Y@IK63 } 924iu 9ZK׮czus:+Ͻ<M8yp5u W\S'}ˍ9'<_'^.gL@"Y"@@(QH&z9S7s>PEfm͋:eId+;c kwN\W{FMg3}Z #'*B,^ˣN޶5^ZS,Zeg^nc*u.3m7cьlireZX5k,ɴtr'6PrtO.thV֭E:C\Q .+0NkǾ%֭m8*pa*%[bRUnRrRnA7v4 1˩2\RP3ElҐWݕ^Yz.|dPլ[HH(ial҄mKHͫ:-緡!1ˡֵɆ]i+:g<wq?=Q֚T .E5uَ}XYDZ5 33hr͌C 547s.MȚiD =M0ɞSE;D9KшG59';],F]ʧoTZ _5LP*ACκw}zm2gE[܋94]1WZcoXVm]UԨwqn7qiGg,u<{yNċG4TM\e˚+5vEclnη~yy&fNyǦotR+fs\]'EPgzrOYʼk, ˖]”lmf9ק5vs/)M:%s885qw-JD/]Į6%賚i&/*Խj! )gGNDM1%Õ)fs;nZvqϝ8Vj'ENc4Qj秎}|tۦ8$2z&Nkgmsc=Eh ef(s52X![rS(Gp#C9ff9WxN~mykhe6:k:nsOG5KNoa`5.\WV]+)vNi{.3mD/M+ \ "c9cg5Zͩ4LUT.lots;9%4jFy3nt\f&ajC43\:36kï&7ieZv$&yai2]L6{Iֳ\9@IٸoN]q͸u Ա5B@PX.jN[]{澓<%Y0sQlHn3w  aȓK5L]7tbsoylӯZyә9,قUNw0u˾;DMP8A@2 -Xƒ;z=ua:hVMU1Lsi9ќ浮w@` 3sZAt_>1}Uu31m\דLΩ>v&7 \Vu qλ2˦Z Xts K1ޣfh K0%vDx['Ng.Ex{фϜՙ9,WY6%^^]p1}fTZXӱ(hs[v|݊"jY y'hiQ63Ӣ=Dҩ<]:ju=1ysMtݫTgtr4KyYzzlL-KkU^<1%.zRآ(G-*\RSJI CέF<%{Ռϻ:2霌ҋ `^m71W1J+BA@;(S 9K E&Zeo*EM0ދgqК9MX8ѮLҼƛmRo^/$ qhUq5ֳ<^7Rog &^sJPF]jfM4G99sAeC fحhHHR(IZ4ZɼG>ǻ8}gm1oә<,/Lyn]NN=NZreD:PcԾQ[B)jɖ@\|lRV h2s-RAYׯ9)9*4ԅozS}33DPiT+=&YgOSK-jaX.7isLͰHSg貤0@P #<hrK'V3zsLg8޷vjG>xkTA5(q8Dg[qgJr4,v4 =hU<(8PH8Gt};}xeuLkJ ^t͹ɾ^'@B%P4%҅rVjsT!Iuz4Kw1/+~e6;kYk-js$@1]. tg7]W3%8ˣ]4e洉y=Trk{.iz󚓑ӛu p0M !]z*ζgm%P#TFvPD :J+ 3ďalXwzc^"b3v%-Xzsnqz|J KeӶ&kRe2r7낚3hh9]CDd E鼺卸j1ytZHZyNttˑ'[FMeNfW99ӚYk.5 kf]z)K.1|kminBMʹ TP2Bn9뷞3ƯR1y뇳 9Vw~uTĭ^s:)]4;h%hb.p:<˾}qb.+ZItTP 3I.tKr7Pzt]stMA6vWXbo.\ sљ^ybTlmkTʍ3DHLȬT:gi?-sllv^XǎyܲYMp˩ɾ>;rtspػvɑS+4^HUxӲ)Ӄ漴^ :5v$kZ 1"cb[=6ԋyrպ Luթ&LR\wNUmל4ybY,uZԊLԃ75ZPgz.YK^w{W =2k (*SN]NM9O(-:Ӧu2B0㽻fj˖핑KרWg=RutTƲ4VsuիDgymvi3r@#[ޕuќcvSUELֽ9lױϿ9᝻ ZQYi%DV;E EA:c5fw;'k%)z36"ΫqQ'ͷ.zxzk+{ޤfަxvgZufnΎuԓI^Uȳ2wyܵ\,|-2 1:t%s^% R753/myuw&RjKkMe9p!Z"PU$j5:1ۖl5нmU4R V]ˮ5N +e+2ՙΫ5i1ۦVk-Νsj='WNќ;k5JUDZJI3ѻHcG=`UfS3wB͔+Ne˙%;#J:dyXW46 f]Ve JRj.hk+nz4A:];mӞ\9V!Nurk=wq4IHf+3*젂Di)J,pRiWן^-QӾќv\2tPHchz"9Bk<)]ޕF n'3ItL3j^sE9Q":k:ֳWyM! @b7cS(5c3sktkIT,ȃ%\r=p)&r,Lc)JLF-;DD֣^ӳ;d};g'c] hB67]REsک 2qunK!ֵ՜4Ieە3WgTT1\w,4I,C$CKI-3w4WJL7jTP m9w÷K *r :@0Bٖ1d D4k*:73:-ɡ$&޲˙SJ3֋ecYtZFsyRAʽs:/ҋovZLuhB"&J ]:Nl(Ȁ0$-I "NvɻhQeLK NtR E QZXNi97áӧ:A@P@0C1ANd”4}rѧ5[ڙrɭ$so&z'$Zeu:ZJ+9Q\33r]-fhJZD2u]. H:eZsDV@DbD 0d 63V31LVoe)@ơHh=uT@hK٬6"Mn%\3fȮ2ޣTS;9 d6frsYsOT;f[NwHI氻'-5$!éD@  c+2Ա6"ʒP8G4r^fI$HYۻ&ͳ)Bg$1Uh9ru]bUrұuU`!fYъGnRgzbܱu7"@`1eB Ca[&m&Q2HZ'4dGD JZ:rܭf8͹\٘^Kzl֔RZevZ঑ʳ6wd5@eEE۳[ͻFr`PURb(T!J汝;v*JFIXHi̼nb$ hv ke;cN|M/.]dθ$Žv0s\5&05,a ch,! @ 2DKCuu)P#i"̭a  @R J lӻy5r+7gFr9dVPHI2vd((P HPPDQ @0ɝ65j]8 I @t@3!dZFS$M];IE3.ƚ@`Th@@$`0J 0#5eQb(͎OB8-EdE]9@Q4Թ(ePˀ@P+%eeI+4˒Vjj.h*"I$UQM3HT"QQI@E23TUI P:A!AZ pAh4@t^mC F0(D)R.JXTQ2""pJ"Ri.1.3bh$άq@* M2I8T*IJ*e)N@@ C $<ԪfrD۴]Zf`%e eH 0 @1@P 1! 042 @0@2TJ Щ%f@@1ĚVqWfb.&ޙ7 @2F Q` b!` V(BYd0Zh6 D.5DR, i BPD 1!* 1P  EMHXE* h D ($!X 18 naD* (C pR!@@@ 1P"D [ @@sI, $@PKFH$@ B$  `!H"5CJ ,BTCQ0F1( @?+1 !20A"3@BP#`C8QEQEQEQEQEIFsN+11;yLyy<N{_W222,̋Ƚ#e_C{e*YEYed9vYeddY˺0ɵN>Lȿ7x<6xmo#x-1%*mۏbx<QH5 %QF%VQEc+ጨ^=~(ƻLLF11+()QE$bcݙ5Ktӏ}Y(>O'Yglyy-O$$;FO;[:D'Cj+:l^Nj+#kz?[^E7CdҧHR5tS=>yV`ƨe({@F=(dQt=RIy/OOUo=j"IOabU۫J5v`${GS#,R5|/$ J .5gH15}> tUteeYedeXdd?̶]ˏ|Kg.)xGmEmw'稅+_h#JdKR'mg|xh.܇+:l 5Htijv+|[*z|ei>~ 1Vb%u8i/wEo Rl=j̋,2,|Y}t=b]KӦY[W΅[&i9;{&^):>7\&,|1o*m/^?gE"ࢷTR) 2eػ]픱"[yU%xR}-~adK'ύϱbuQK! m8nqPᢇ׶&&&%QF&"_*"nܶ{CًvjEM>vY:fkm <[K;tΙ#335>3n0$w >|mExx٫:l(.{-F&,pk5y<[XO袌ieHHBK1[")PGPsD-Ljihp>8-Cm]ۗ\vD%ٔ}ir?v=՘##~Ghu:T꒞DyLͿWgdI=/u#mS-I"Q)~>EYd&oe&EՏ[؇}{Wj>ІYNVQ *11#=ȑEtgog' Hs];*Sym-|x$#3Nv}[Ch{~O0χۥxKgC~0DQ]y~G/LR9y֯Wtu'#k~x5lɏeűf"3O-}Mn~4̌222Աꤱ]g>5عWE$_bg24(!IW'/226_rF;R]t56EyKh:[9?!Sy+[Z..L͙Ff٧&%5fFFFhrdO΋:gL1ƿOLX-֢hc쏶>8ك!_dG[d=OZV.j 65ڴgM6tci=HkSތv4Ēeg#9Fr2r.Br22픯A΄itdtݽ":NGFCUsĽ-T}ς< dy:u25=Kx'{WOR{>{|FXoziE#4Gh#)S_PCuztGR3=fk+M婫F 楼y\q/w}uv{-qiqy2:,05=YR,EYȟ%{Q復IM4>tZ&IKx~t~/o"/LN}p)U6>#iiu@;!/.5\bRi =];?LO1K1%+:4>淦jbjy\q?gx_]M.)!pk|JXR:Ԗ\t`+.'\~/nKsFR5}k|F%~-d}\N8/_=b1+[r-g( tґ}Uˡi⣥C[MF}(EV`0f0esEΗ{?Wil| k%؆[4oWhYdd]:]Ql=OqdzKbv.-%^ڼ#wb=GG'<:dcu/嬜ta?!*hB22222,hs(Gq^f>v~'SSu!dO{KJ1$CfGY̽aVԮǥ zZ=:-&t $dZ2FFG-ux .'j.p-u fWe3~'KD\ᾞh]]˚SOizp̌klvN/XpGEtQFOM!i!sGEtF |W:|=?!Wiv#)QBh/p38 CڈJGQV,OV.ǻu_ƕ3IV˷T3Cv'CsČl]L4#u32p>$" IFDc#Τ{!Nӟ΢:#J{>V O'MOW۷M~Z}bEvsٚVɉ3݈;jTLӣR+ ٣ejSQ]GڣuF,Qf.$dN7"QHON(=ϱ=ˍع:gOҶQȖKi9x}u-=NJ!_n{C^U=lFKvYӕ4N Is{G!yo7A~!+5#[ŘCE;\tH!F48p&~'KN%CUQ)Fhhsoy=iT\3 y\9TRE \5sMӧ=;}!i2qǧKwt:,3tgHocKsd&i>k/ՙbOQ?lC{>?ԇRRPċtё1Yf쐅(s:h!lo!i)j{;[KbBos#L05YEv/1ԅ==X}>ھ{C6[}%*11|+?^%x5_fLə2<>7{.6d=(D#S؊ٟ̏(iW'O Jd}Mi»4BQ?R3>i{WG^W>ԊE#U,4U˧($3fFCz(:]SuN|˅f#,n#Σ#)c kHҖq?}xJY(d5*045=(Ї;jJRFgX?333?X\q%&&bHrcI;[<E#*\M^Hq"XY4g4=HЏ>/Yvd) KWijqi%Kho|/.hw߫{hS*EHO/hC4SK[E!/_c]]bV8ѩ.Y#59!υDbV=GNYG=ijD2آCf8Zŋ\(·+,׻QU/cc]14_lFR5[KmQE"{ܮiC^%UmE- EyQkt2fLə&fzO OS%GT-LObl\vf9^I=:7b؇d|}ezT"#_JU{ض{@SؔXW{> R֗}(E5H-:k-On,ZJvȽoԕ<ٛ!+5=jFΛ!6|.6g$x/-viN];>isGbNBJ5m}>$ɜx! Fjimx5>cV8t)Ȅ,d];~WuiJ羷}ϵA\MnM?/:X\ٱ#D5Y?c[hƷ|eDu(c,GVijPZu,S:TzYt-zcelkr'ȹǦt(HC>̽Ļ"^oLB#$sufMIC_ 1*Y=[#C_c6uYmj;fEڊ0f Zձ]Jos[ 5(T&/̓\leCd񫙙~əե-K4/:y/9tFKkrW3SR-k/'vRf薮$e>vLLJ+j(QElE{k]f8ƛ,rf,ŋğf6MWgَ"O͖YeY; DV [#Ck&&&#Y{YeV,Zm %Xr[7f/mФ#$7}2kk LHqq|tFЁ%RRg=QݙmJDmvu7h˽Kf[Kf0YF(k/;{jKcԲ7S,ei2|ddddd)P'eYeYe~C;zOteRp\G>{/f3tIGFCD9ʉ{rNJǦQEbbV\,{ߏ-vtN:'DzTnM  %GDGQDGTGHD G4 GDGD |GD\[2GxKo_~$9',Qr"i5hɡ;_kr3TcBvd"ʲJ>dӗ?rT#_|VbK˕?S[or=Q1$>.h젉-lqmDbt74Әjr͒< `"_F$ղ~۹~c,^ ^w1*ٺeYe'b?#h%'҉.6Y:2%[{OMyYe;^KgO%lۭ{Iy^My~}hJ=:%Ԏ,OyqvJ ?j}kHR7oq&'b&$:Tk$1?1uN:T꣪uGYduCBFPq[z7{6?^˟~?Mo}^W;cl."Ol=im?.<<\D.vj$'?MeJ`4Vacvb5FmBF5B["x??Tkr~&+~3323323,Nk/ts(Ɠ[˕ B*5jԢRɋyqڅg~d=˝o}_n~3"N#$5}6a-߶_1F-LEHŔd;reX~߇eYevX/ lȈ˝om^K2r^T[e,BQ <5dNf|#Uq.a<#e粼PC@}χ˕,5>,/gbeb[W,"~jTȑJ|"jzE{)5=RUHQ%ًs&@ @|F-=Ylڽ,-5Nڶv! GHx)E"܏f(j1VP}ɩ:ĥn'٩jj/d_ks&@gl?#~A-=gb(1o/S[o+(\e~K(^;=yDbE?"J%`%RKh###"^̉dwSG:Ĺ#^ؘϑv>#Xgq-=%Vղ5>.m%hvoڼ_W鳦hhŘwC(ɣNVI|1L:^kv-}v:^ư?*T9^uɽwe#[9Q [8Z;,jr5Nǿ{Oht\إlܢ]~]>/m"\ iKݑSh)KS%^T'eYdg1;5(me^˕,Ϸ###"RMm7{P칱?"TYe^^Yfs29h]}D%&;QxK̢YdOWLYCe6tPZ(}bbWe3o"FC10*.W?m%5o>F%;o ƷLhM#L^9[j1ٍ 4t[{QE5wLR$dirdLnߍP$Vw#W[ϸl2лy1Oh0%>0c#; jz{TO1n:~p0(rE޻y٫J3hr1;|ܟCu:PCuC)C:gPCuQ:جecyDE嶘q#&&"> ;Ke O%6GM hHYfFE_}̢(YR/o1em[-C~2i:3FhDu"u"u"u"u"u"g:::::::::DD#:D6-,iPZ,[Kh6W3eYk2<Ȇ$-4tТ$7Cbo{{dXYeY.;}i{wFff)4nOQEQEQEQEQEQEQEQEQCn+L~vRљb>+Q#[$bb%]ё)bto% /)/]QEo[YeQBD((wQEGHt俊,'tُcb(HZfh%ߧEvlQ1F$Q[J"JML14O墊+pF(v2#" ^K>s"q(7{QEmCf7{t75BJV,ڊ+_ ^_eVtW)PݭFA)j&]hIӱ_ёؼ Ƚ,,,_颊(FF]m*wUFN7R<*ld[(P]QEVQEQEQEmEQEQEVQEEQEQEQEQEQ0%,VgGPs+0߃#=0k,,####",̌222222,Ȳ,Ȳ̋222,22,Ƚ2,#"22222,((N>,Ȳ222.̌1lQ((Q(-j쭯db[1l3xCݗk fQ{4UCƚ22,,̌2,̙fEeYeYfEdddYfEYf#`t:GH#tΙ( o{{VbvV͕f-1l-v^~ ,ٖ'L3t:gL3````````````J4B99#R4i/8~/3D"qĢ+.uWEvwQEQE>4{/UΡ7Asޯk,-QE_ _u_EWcVbbQEQEcf=ؑF%v5VQE|Q_,+4Q[WeE594)^E|TVڙeQEVVX_eV^ؘQEvБEo|QEQ]x/⢊((_,/䢊+⭫j-|QE+ !10A@2PB"`aQpq?jQG[s+gѯz]<39{rS)W1N9csνE9NN~,Lf_Ey YeEYz&Y^l__gw0. ,qx:h|QJF_ֳ셈6g ҏ%O8888*8"p%ϟ?J??V8*rTqc{QQEVQSEmE5 WQBW1^NOxf̱sl\7e6[-X<|c䌟[2\(Yfd!9LP?xJBՙpYe6,he ϵJe.^#5 dbтQH"hc*Qj(ިijG<Ȳ,ŖYy gg!‡ ^,z:.L+(X<ElxE,J2%i[2hPφ'<{P]l8/bq(CPȱt}TP?^Pφ'3Oe/eMN17s|F& E왒cE[KET$&юW+v\\ީH\q6YkZV4CС~15[3 [1ơM..Ҕ./PQEk-&c~nQVxN F(u~)b Ru ,Q⌿1VexQEGQE((B3f8t}b8PlF&\pĢd=5f"-lHЌJ+u(z.Z2qLXrS)tTr`/nC!e#g%h(zbbelpWp/E/E ]J+)c,,.,ñz|4yd^RBuVx!bQZly^.D[ЙUCv-ZYF#\#[]zWB1Sj,3f^+ق2GŗEYEE Lς1;֊(+g P٘F#ddpqzsGC}>mf"BgBP KTbҴBz#h>\QEiG~1zsQL !CF Eֵ?!iqcE v-Qe2LK=+U9ŲF(gSGxOZ MF&FGj49^ V[eٓ<#F#!BC lqeEG--r2set4W3!p>b}T1౭JZVBu=MNB(O!* Ep? .Ůcc먭c=W?+ҺD1ˆ)b1*fG9BPסJ8dtcc~C^-6x&5[v>!l2cT.|1B u,Z!K*, #sT# l˖dV ZcW&7ܡ..̅,F#BF#\)~T!`3!ZNU]B(2G>(+؎x+BK󑒣=*2 _[8^/[gbe:Q|ݸRgd!!.C`.>̹2t1!C,Rh †Av!#=?bBcU(C2GүGј >. g鐡pYg^g,B2c0ƅ:OBڷ(N.f] fX2d(rХh-,OK*~C f"3'B9c9Xw л+Gq1Elf*epS2Vb=!C ֽEC2\GfF1H1Ɗf(Db ;3.- vbp S <[9-C3ʜWV5#>J*Tw#ᘅ1bVQbBW%gT}2be22Vx̻*kІ!C! r^+EcjpP׹lX{(xxшve2n.LDϣE̵"p؛<", c!KLo(E{c)Uc-lˎ6qE{*! ӇQBY ޗW 2,NǭM+ХBME)^F8Bz>N3/R/\{.+uNl{RP8P؆-0*ٚJGԱVBe(eZ,|inz8RE„}pe3'GіV-OF1_lRO)#1_peq(Pċ?ȸZ塏ӏ,(υ{h O?Npz9ieaӅ{/v}Be|]mzMeYPbIc(oJ+\ c&3|ϢTpq|ǭ>GeEmEQEQEcZ/MC҇Ezj(c(Ǣ\T7FBF1t$QBC>NQelvť¯E_zLGd' qPctcb*ϓJ⊊EQSVx (E hսuQu +f1HDZ-ẙ(t"u y&ppYg 8-YvppppYe#,ڦ(qSe͞LMﭽХ\VTf1F(~e= T-袊((9:*(vb$4C-1eP c/!\pŗhmD"b)b5 XOgPˇ#.ļ}I eYB/E)y) J΄|"1+}!tP+vQEQE(Z&>D:1op )DZYe^ȭ:ıK?LǡJ(b;(]]F.Q",|>>3Yex%R)f= ,b8qCzΕ*{*(f#8(X(ǡJQP*K. }(_| !gG[G hHSc1hKzW l*qeQEQ^!1Kb!v1. 1>B**Ƌ+2.h+J(KX!hяR;K::-eYeX:;Ң(((QQ(QhZ-EԾŽQB -;*qg.u +V!R*?mEYe͋6&YgY<&yGyg<"G3EQEQEbbcn:-UO%QcڷN؆)]#<YzYzqeȱ B9r(Qb {,0Tc<h1#}> .M,P؋1*,P bEi8SW :RZ}Yqe0lKF!#cjǩR(KT8jМSc(x(S)e%QEQEQj,](cQԣ&=Jϣ(PУK[8p|-p}h(+t#>z|ǩQx'GQQEc!zО+FZ11[7b>g?1TS)e2LS)K) LP^΢Cөqeb.(C؆.?qqqszQEQEbC,oD-j.V>(#.sCr1>\;!3Q~=Pzb|O.((OԢ`\Yey[<,ˋ,,ˌpYp(q(ޮEED|,{>X!QPyX؇)ibbGʛ5[d-1.(Gʄ9z8^4QE EF' 99z9Z4! 9ʖ)elq~?rҡzԶ'ԯOP;*-,]W=pGإZ!l*J,c), C8B{>ĴC| c/32nPEt|՗hpX]%hȳ ?pel׵C~]b(BRBe+*P<,,zP ɣ͞L}J(8H~QEhnxzֹ E*>%P YeՖ&\P*+Zj?]5cZ"͗ ,Z!P˗&^ѳVQZgF>jǪ-{:C*eeAbzE\V3QEQEEQEQQETEQB8"̅,s{!8b"fO()_pZ|S9)2LS9)NNJe3LS)e2E2e3t p,^BG[pզ^WQe_\-(ĢzK^J=͗gyoX&,[,~MŌj&^\_O/RѲ,/'*W>ze |7ܗ X7qxҊC;O-~/~X풋,| !vWF謨Ye\P(Lk hh>ƟN3<"Ū~^7 O_,P"yKN_٪B*W/wj>C~b4|j4qxYyq|/%|v=EAqNQ dxeYeȱGɚ7|r>GyQsѷhJU V<_2^z<ʝ0k$\~^㟱lE9b0pr '7/k)}DOײ812R|_.>Åⱎ,ಢ<,Z}>E˛^H] GijBDQPĹ+bqeHFϰOr s!(k57-Fb.= Q& ܾ&8C.W#jңnkC*$\R/O.ģMicpP 3I}_+.mE,+'_gbQšzCEGFT,Х= }5˼۲x;nmT-'9ĮEcE EOqYey]b1KQNj(jz,k͗*(eŖXQ^Jz6Q|f<#,(q*;GW#^2,F:CG\~C,/XX(q~Eb׬<QRʇe :2ܾƸ_4Hx  x״Nuưܶ_8Xjzqxm7?WςVZ::{.g%X<?٧U 'rT4x#G<8C{,,M PĆX4Jaqe_"YeI|NWq~<cp~+w,X>y5( cb24^橨'O͏bpPį~_T!|x})#bj\>S4ʼnWdt%xK+(zl E>)7 XmH8<,Yŋ4泹x/b(m B}E45CFJ*(' 68X1iIJy1?iN>~rEQ4;BBx5׭CC,:|ES ZqB (K፞FeY6y!jB;q(ܢ G[x}(4y1 fGQEHI  IvVk|=#bsPW.fy1M P-"jB'bx^u抆Nc4:QLV.7鵏w*\(bN\!3H6Yce~777<5)bf cEb%ܸ?i덚 ,jB.UaYQE`.lPYqpQQeTZOXF >+,...,O3ru FMqXp;/}Hw+;|+;T!y<c>kh.R*,sEa X.gZ1Ȱs|f1;;,Ey⊊/R*hCȲ<"<#z/KC[[O,X7w ]|7;pQS\x<},,,,,bT,ߪT<,˗ѠbEQEQEQEo] \*,y}zeYŠqN*(q(Ģ(V΅Ηܯӱ5FNw77777B(l*lP_gbcbYlZ|;,]g8Iehp.eYeNT\X\Xq~X,o+]Q 5ti,/@>ǂ,,bbH,e~ q8bPs 24u/Ee E,k*k!Ƅ&1Bܬub(٧E K+,,}VQz?6'76Yqb?9bT~C5M(qԾbW Z:N- Џ~eY|.u>w 폾=F+?  \1w=3/n7Bn/a .rѧ| „Kԣh,lNL C  մIyUԕB/QF%9_zPn)Q J_p‘&NmEܥI2hLDyVL2dOġ ahE` D)/'n'JF''B&&&|3Il&'4ht6ڲ:Lx'^yG%9bxX}{rDu)#TwU~D@ġD J'Xg'|% _IQ}Oթ vY2gn[vUjs7U@xYy}@+ &LNsGs@ ?ƅBjyjMs_%1Kh֒z-h͕^UMj"TI9)AFj}1j%A_L3/0jOs錦9D ^yjHpKs@V9)*kh̢0w!&L(Y44%$K8ո6WvL2dɓ&LvVS3CTlZfdɓwF̐5O νըmT4 54(jd1 A fY'j}sAFĕƃFKzv g-%W1^P/6dvMdhd؛jzFj̽B3nE@@  #XsÄ(` y@ >u1_~8|wOObez=FMM_7O@?d'&+B9Q_+!1 AQaq0@P`?!W)Dx h\?]u2𠱉)F͛'܅lB3f͑BЌb}_xͱe y(Iu ]'^Х诂by+-z(O?*!gu~ 2 J!BB1jQ=   {O4 з+ąI6R C0 !{wIA4D@7|B— W;1Qjp_^SFA-E=cCEBy! >H֐ABFDD$ G@$c?/Hz5 !t]HChI I("}xQE+*(tF/_ , x~)ywLAWE9bnzUg*ǯ /_pQE BaE _YYYYYYYX?#b~pB'SbS8uϞ'?D,1mrhN?qV~ǰߐ1ңFJHD|>H*G.<#A*o(ƇH OV,^KjI4&*0è66/0k4*WDTTk}QQQC,V}chct}/X~Z֐Mz>/r̆섻uP!CQأ#hlz.Bə6 Wk|x^uR݊'}OaSOA -L" 2Gc4b~v::_E <*F 2f)2fO N!7 "=0Zxn fAA6|Q}a!/8>~1J_>k06%F/!jq]3}K(^4#tY!|]cV2j!X Umh>) Sa+ѯ#BYЕB%"tj[FVPL6FR?X?BMktbhHM 9po͚'п (_/OJ?<.bϰXG?3xb?][ FTQ]Z]}X8~#B>j rA,,eQe QYP2"'XGl/Yu by&!nR!k4f͑e/JR4l|Sׯ51!n^/G `)~F8h:f<L#*T@ՐFT_Lo}l09xiJ=Cq'thɾcf_Lp0yOA0_rq0}9\e`Luh鎎 zj/x~k L_XDz. FTѣBƈ4/0jZ$I6*枆a ]f+O G/ơv8ap.EyCss9_~M3bbßL!_$:F~JK_? ->'?$Ij5^Q'?Rf0YCBYM&~Q+0|r8:cJ&^).M P4čp%F؁-=3=? Ѹn1Z -]lPx9B_E} ƚ -ůxΏ!Ndo.X) zPl3׏)o(~MBՇUJG4DjEy  (QF.ExlOOCh*UmR΅umz>I(jĊӎ j2 +6* Yׁ;u E[CNOħJ QQPe=.NN<`2%HLaQKPFj=aGM`͵~xWݰg"R7q >ɣT U0Gbvo҄jMI2!<"  #䈈LM {^dǡcL>aq0D(l\˕&<ޱcL%JgGֿЧsCSˁH!Rvgh[Ucz(1.I84Cb3`—| Z~8%cfxz,Ct\\w'8~ N'CH~O71Z"5Ob7A)QgY`[REAz:_܏W23A}(&s[к0J.[+2V߅Д<1*XoClHWGYe8qeb!GXQ6gC9{ScQhaKѴKCvhS:EJ}}f= ~dL8HqøI_CXn#ak-?$ dB6:GW3|)hmkbb0}2B"jc0B-;% tuMz.R Ζ:@iJ\8}Aa-25P_E8>N4.t!,^kByy&.ƪ(:+b:jN(ȧ.^^QE!Cl  ^#S:>,#1PKpa [BTOk;p:Be!6 KK%~n'yD 7 >3-gӘGH)}M&_C$ 7. s '&"!\bɉD'EB?A̺#V 0!d%:h;C K2@xqatOj#apS4tro^:4EnSBXH!;L@tld,&5a!Z~&D$Jbd-?= Lo^4qm}RbYBx>A]C=apgcX)τpT-q*@R_0CWnMst{d-dzV& qfzb֙Cٸ{. X_'FŜ6yJˊR}1h,O^ٞ<23 _aIc E?12>}(Wh}w$&)$}9VV}xp6:N7$鮍ļHNF> 2lxz# 9 c1,-!O$ ]t[uYeLy]B4-io33 Ǟ.)=p8yrtWX lR7xxWl$FĠEn(F?'~s(Z܌14uc[ qOGΆtkV7BăX\%(*x-JrP 3ODE0dHu\Qq:^7=<{a|C_aCƈXH>3eqΏƶ1!+d$BW-N/hgK?/"5QC]=cRdX}`9Ci HqL8Z(xqKWHOCA:3 '`j gXL:Ɓs< }Tc6$'H[xOH}f)kFئh=?amtq3,ܞH_Y̋L#! LMeNLV^QDr4eO>~ NbXpغ` .j?iJt3SbB u kOS>ϭHK(94G1\::h)J\SY,J#5i3hT^񘘪~'p}%nFObt^,K>"O p OP{BD>k} n$=J_cf?/d$CG“ rcOTs,ԟ=̀"51z -m .##xK0dlBY‰!De i"Gu|8eG7ӣdwJ pMqsvw5GttǓa]!{(=vt>k1=M 'G\::8b'06(`q  l\*ypU$ "ԣ)H~ j#tU "ΰÆ*̣BL.?c#$Yє2Fk{PlLћzxW+5pQeJִB ?r.tm6.1 a |z٣E|2pLE=|!~{-4Owhb"~sRtzNtM~kV+ئBЄ%&TN?cw?ힱl(cWHx) 3w?.QhQ } o}?cS#z"B Qr]'c{: AH(PKoLcyW_LSQ-s5Ϲk/$zd4 =e6\#}hImtC,Z}Yc:c9c'Պp#ThM{1'eFǩHR% Y$^ x*$(B!+yk5]b9 9?$'.lVFAf~SSnq1ŋ=8w ,.ѸbEDDA$|o#v{c_ '$-\  lJ{.' |O_>Of|E/L> Aߐ= Ns| \Zض{7epZD$A D=lf; e{!h^Ì\~;pl|Tϊ' 좆m3 lK7Y{#,b6h4Rm&=dbQgЏ ln1 I@p9YQ>%K3;2 R:#2CCp#&[p}zbCRͲE>4t)F[VzH]k.dDZ@ζp3(x>Bl[1tbB]G '!ͿLډ?3~H9sF?X$tћ+(xQ6$1O@kEN2FWL7 rW/ź31Q?$R^^'|N&HfsmV|Ţ=h,'h> ߄:J,Eo$uBI&$҃@\b6 K/q8xA^?GɎHš6h lCZ2ǿQN">loHNԁ#7Emh4-9f'/FphI{b}IPՆX@Y{&5}`7`{a?A✣N18#"$45e/L^Y- 8=< ܲ ,AI'[,dMQCHFctY$_Йc?hj|D=bTih5ѭw N4.ötEHtW)pOo{,3e[9^k89 z8)1 'ВFt:uW,0? )P0Qe!xMbAo X ;; Q|~#w8ΉJfL" *i%#M L50Cafж7hBK!j4K """%ObP40=B8MtH9 F:P!?#EMhcb!O]??&3?ciWݡ!8?Ҋ,zћ:86.QnB~D8eiOx{%.=i%-@I/ܧQG.@Eإf։+cxD z5<Aϸ1{_$2I6:BpQL6ߣr<'6FʥOVFR2B7\k*3Ɣ|5UGOqAù7^'>PG=,zbшF:tQ"Л͝v NK:cb8o *&?d_+Η>>M{pXzs[MB|1 RJ4å> \+䯖~ߤh ش"FEmEe@R$3##e8Qdwy=,y~y=ctM"3cwaA3(LM_ <-o38cR%7tR)# rddddddd>m-nֱ16x [Pjкj Tm~_>4PlA;]PH.t{(QQzXR6! \9OF{7tuoDI Bf|&#CY^lXXHMx':9=mWEIQa"M~+7Lk+!Y0ę$I$틣U!+eEYe떲h1=&4`j͖R)飏(L,Xo>O}TS IGmLʫD6f*bpfŒ_^1(9z$4-lv$! PkCufa IJG;؆&BxsZI _RF$$= LNQ.xtբ:,Խ tEP[|xِ~'~OQס:} 5hc]ťDGJո"%BQXr5[(^&jCkS>H#䏑Ltæ1 Ìnsnu+c>??>>>}}xc&S9XH41͐R#I !Ş(w=\LkeNF+z#4/B}APV>~ {5h>BXD= 1[* LV,VQ3H;_g'Ça$MBQ0a"E񝑊 g> Z>Nh< tj5ccTq6^Pj;h@! 7H;=YEa!Brl&1"6 0/ +X!7WWWWWW__|}E|}W_~|A *ITp'JacH6АGc JU E13C #  [:BCMz!ЖbYn?O~ ЛOG>O3bPXgHV2 1Uľo;?zЍ1 uPrpnGIFtd-dċ$hHݜ;>1kxe4| '!m! _!+4T0@A*KJ4DL #;D}/p)|~JR)KJR)JRH?ō=(R6~p$?#EB:c[ẉRAcLjX$:4+Xn}lSPFYPgH-1!CLpSc08<>2ӑÞ R?8bu)JR)JQDDDDDB ~b>>>V)Nb鄦+:jY` 6M`BRAx112F%Oฺ tMC(QlHƨ֞*Y_&] G#cB!BBQYcd'hhNh9~H'$ma՘#@E-.g!Oy|c -) a GR8Sb RZcYP +]D?ɣ?CВ}Jmw_\VHB;}R:_CjJ'iE1OI k ͛6l!ptat(\+++X~ N= ~(c$!QOkg0j' #;Gg^t*2d߲_^ JB((%lhF#$-lQ/CpBzǏq TFڊuJR _pӬRvp9!Q8Fg!4J Og hlZ;jT0At;pBuJq/o\*`)'HԌҷ*AlvB*8CDB ?FLTK a?C9~\<GB;XQDA&ìC #Ih]b4zVK_zL[G:Gpm4E:DXsBf_KO%>CQ'G҄Zb;x_:t:GGpXbZ:B.,sk }0u92DhׇBP#( hH_'qk  $&PI$^0Ɇt𹅂IpMhhDE, ?,R.%bqbh!(P% 3GGąxHԅ dݟ)ob&÷qFǎķ "LYQBAh-6#~i3gfj3BG3?x,6( =eFPb?+WM !%2qt8zT`6x/MbBLXSdz,Nc;C6l,(GTR[RB" 4h dQ+T>4Ƅnp²=ΊF{GA37lK(I7Med&aexCc~@G~ )5CFhLqdE#BZ}&X_C7DQ9a}ǃb '}DS D)S! IG7j6}+{L-}8#H gLMH|B@i)QA4:C)kRt/X6ecE9<>LkмMqƒ>`l~$-Ў>>>>>>>>> >>eJQmb!S 匆N-ׁ譚1jưFe5mݑ$X‡bZ˜&LI[ 3+##bR<L/leXK4VWPL%AAAA$AAAAIF(Hkf)c>d8w Bt0Mmcb(T& B=h'h& lJ#/7F|ktzuRfMDN Qlk;>pgoW%|YA0c[H#濒eeeeeeeeeWEeeeeeeeeeeeeeeeeeeeeeee(bV -"$ 63Cy>4hlBR -kLRGI8'b+f 2Rl'L H!!3YJR%pP˲r>M)JRXO)JR)JR)J\!\;V* L!=Bp-_?GQVbQD΄'Ajr?`?Bgk;g&'Kh$*_B!B!B!<%E#p`MBT7MDS{Xe(1=~+pHe!#\@3LYXBHWD\o RmPK/䯒J/俒/俒?,,,,,좄:6l=8ѿl{CV#^} ؄F>8$סSg1_L +ூ +࿂ ++ூ +௃do___#( +ூ+ூ /ூ +ூ|PĐЙ|4AX0F. WU%!8/о~ T#| tӃLN-?;`5bѳա _^7w ( Q?BTTTAQQW VQEE67ٟhIJ? A?D\NKX^֍vwvy, K'A;K.1/\5Z;77ϰUq3F'x7rrsEmY:{ I$iB͵3s4%A'1ON=ZˈK0zbr 닧ID꣫eE5@I$EbQc>ѐ^ 6+ڥZ&r!%(})!w1n^ӝ~ kӋzmn¡}MD愧vB:.*sἹv ,anVR X雽Mwb}Kϕ9K/"HUavv-QCu*HdbR#WU4%}O7+^8%%wCq VdQ*c{bABqmB +1U$z#V -\,ee'X3!tPuf; ڶ^с hm.R Hvk?I¶Fz2@qI>)BWת.$%A?;';D1$+{&e,ަ7m=C깝=D9_,NG{#rY$I(ϦbCU+m_~ D%}Zm:S=*ojWBIe7mWljƳ]ݛ[FaB m:@㨷qk3D (Xa:QN2h D)56~m5*p .`trK:n@WB91Z`Ugr_I$U<mo{ouJp%+b6=$e'Δq^^8 .nvd>/2ZP v9"ntm7ebLcnqwSt%c@YBIЖlI.8jFEm 8t]`_,Jp2Jm,6b҆ow]#URa3 >%/8${I/COSLiDm$݃&ENwLwԃ zO_S AYѹe2hqoqe;mb Q'X;k Y6}9>0L!d lp6W3ȝBݏwfUmb3`76Y0Ow\o'nL1= )J}pL rBvE<"8#E?CWؓ--+Sl*/VGMKAL3N1Si9 ' ԓ>NH߶mbew"ƢomyW;'~k:?Vp pa<ׂb.Q\&_p@&<6 fSE?[Z 8Ѻ1'C[>cZ$O@76Ɩnb= cu8C.=)|j~­A$I1,ކSQVanK~۝y;YR=XDvY9[Lj3?0jatv\}͙ RLTƖeٻP/mT VXV}}peר'SûEOC4]"T~oc0a hv!M/\.n-{1YC M{P }Vh m [:ݖjI)s`}ZYgqwKąaT*"֮ؕNÉA= $P&4 ڀ̶G$ ?)ٚmN̤eglO|wuۆ5E? Pz~tY gǂ(sԳFRn ٰE${ґM2O2r6Si L2Wg)F\mҐQE.51JxQ,vA&X-^ퟸn(# (:Fܻ+$-"[¯^ !4{l- j ({ϛsg3lu/j<وKFjTPwH|ܰڕZ KwMdIԶ͎6lD)DyrlSr𘗁dle0derX$I $I$I$I$HbEtv!\%Ƅ#<HiLdp "E$-"+]$KH<Ώf`$?Rj2~g)Po3;NO{!mߠ6mOHTɋn鷞eMmް_]ЪiSOGF}="$H@#ۚy"j_liƋ&V NmP$I_ o5o(6WX@!YV= )MHRoM _Ŧ?qx)Y[Ǝ5oȳQE,8=/;n}_[ 8o] E# .@0]:Ԁ}15JNhB1 xl5usd;fotsMkm)bgc)F]qFGQCnk@9ΝjP2Dg5kRxfo ,@J1<ćC Mۨ |""I#:Y,.ǻS%oB$kT6[N}%ܭK}4Բl'Gf3C;8CaKvFi/Éuq#? J?ҙB7>1!د~քp3h,"-s[Di_cS?"3nna 4t['T2I#辒~_̻ͣjTߍlָv<萊d9p`Ii Wq|o:w)t`zGcmaIi?CdAL>#?omAHpbk 6IdۗC9E4n?mopw;~7>Y;|"_̜foۜ_ &Libn~i\$LL!I4C隅[/+* Ҭ}}wog 5I6mJKIjcZ_)Q٣}DݻyMjCsܼ6m]mmm&MTYKUOQ1;}C~i$P $I$I"m۝85n __m}n/bh w"ݠ6o_|*mmZ&?j=Iy}/?Ƿ_wV hĔH; PO$27l$i'Mˮml`[h6o Ggv7'ħ b>UK6GnSBAcjGm }؝.?؟nN^i-NGD5`$o[}{omMͶ?kn~ ImmmommY%m-Km6}oݿmmnIimI}L/}f\mm}}m}}mm}^o{$!1 A0Qa@qP`?0۲B;,6%wkvF6&,<Ldx6(O~sLOXeL WereYW?.3w2~4l84^݌mjٰ-ݢ"?g|o,زx ;xc:~:27pPkj\9PcWwwSm,m|'bYg'QdqZo ]ǨiȟDg Rfjun&Z[gnMᤳu/w\0wt#|C$آȒm!toa 9(勋x/l~OիVdleO?3mGEɚ^&D926mmmmmmZjխ0 >+<'oqhwdD -;8UZ;)l5DmZA[9R_d!_X MXM1gi-D?cGt'me/|zX";U5Y/XvL!ը\@c-Q6f^+2SZInvB6pw 6bѻ2g"Cq<ŵs,wדЈi["ɋ maaa ,8N?W؝M gmGAD:!aa ,9.$'=|G֌ }͜Ds,[ sYsc&I(V2;NY2$ƖZ ܭVs "VܯQ?8^CϧQx3K%&&!{ z4;dxd8oq G*m8}Eo<=-mm^ x,>ǩ?3dGuqA8u.1%G2fr$s cad 896+e r8.[m򛥳Kc2`#ՖY*Fq sl;go'of| t9fx dv8femg! lϥ!ZO/Ͳ`(:_7-"o iu=rƥg,XYߜdߟ9xx8fVdpc_KBBI8\K637KnSv,yD[$ݻ o&g<0~qIg p9#'/p,Χ!prZ ldC&Hۧ?I$J^՝ pi]]?Bc>>}9J{{ =jsM-pݻ\(ߐ%Pas ~@k{ Kj׮0 ׶p5ғaK{jTkF2n`GL%OoBx`xH,@*`<^ym7mg/t '"`m[jAVSň_3Yf||rٿ `m ,,>`+!x| qg/ Ƿ.˲̎~ݳ>^d=op85Lű,N2 &&K3{xx$x=[2n'AAs,"ݟM|^x0ˋy.|<_<7yl\l,FNW8Y Z'C%ld |; fah|;Ror98oVQXeY fq92<S~|R[A3.o ĝXW7 OvjT 2w:N!_|Lo2 b2Pp'}}Mk۵g2N8,-$`wZp]{"6) Zo孽py3F:م`,~ (#ņpI^f|պ?{z#00V/oÜ52G)./Ŀ-Q͘.@Hsټpx Ƿzί lzɲ"E|xo\# fɷRH,, J_16SxR} 7=_լg嬜eikPl,,lՅ2P=jb=,h88<` e8e]W/d'yb1]g{azOwYLSYHG7aEkW2лJ" n"e!.!-|q1:r@ ,B/Mo% wRJXÃ3˲3G0\s[fr8~[-{ܳV]:L˶=}=^8w0d۹13Σ6͎_K EdՇS]^'ܜA7C ,yiᇹq{lH]|N,ۃ퇋WRXVbaVkc)] M ߹1^y ,''~D[o $i ~`3Akc{ŜdYeYd>w4VZ 峨z$mݑpv&n6 ׫:rb,Ŵn;ܰc'|G-v/Eܞ[ vy8opYg bIj[$"6]OسBKӁ$ ,,8C$/7OX[ $ ^WrN & A s#7=l' Fmg[,?zl#/G?c>,?Zp8oqp2Kf l<6mෛTE^6%#<_/;eFu.Emr^M/ 6xȷwVm7qˏ''Blw6O6c{E&,e`8% ,,$pVAeԶmD߰Id|-qV{ 2;nv%=lMmx $8OXYYݍt3噏" ^ cd? /V ^p 8.@\ឭm[mo<!9b&W/kl#ȟ &M| 'G9Yl)2][mSBOVu96lɉ=xz3~--9eC8g9dIysg,A<~r#Ջcc?Y[| -#ga~ö-F86megD<={zmiܲ[1`lm쏫zHd]YeA$ << x - ,{c 6.m3a \[6;dp gK_ceɎ>_L#bWhnB [Y,{Aw}&_rϿq==>_MѶoK#x$Ɇ/^/Ŗuccccc<~qwDs~piݠv|mo'e'|-tL> Ar%ȡe/>#>ėA$&0\]^ݓ"Em^$ NjծnHr;wؿa]ulx3dƧyxl4e6 KL]I ylq/VZj+,넇r%Wc$ DLXf~s䄶i#R[&4۬,23q#Wd3.K]!*]!y}~6^;eJrgKv18nFKŦՉZǸDhzg?b>ί8kw?ŵwdJ2:H#WWSm ui"EզBX{prA%Kţaɜo ole:z] xeɖoQqvx%3eB22'QߑixLqluy6,uq%aϻ١ԝ|<5jըkdyz!ajնmQmnVVmM* wmvf=7fyaS#msk{mgȼpzdR!K[pd^r ,]Sܶ??k8oV2] y>-~;ΣQz/Y vEc%zx1bӓw/ƳwBg &Շ=^>=/Df{SÂP)䗿pE ×ax~^8\b/\m6Wrdp o2~ *Ȟ-6[7]&~O8~N=Lzs$ЏAܣ=3u`錳a'|^_5Zq+W8}KbKxׂ$C`ݐ ՛<8% LDFG=I~^Rpa9eqb{Yp,,,,,,,,,@@7xF ٗODɎ-{x'kc eI˫Km.my.2vv1Cuy6"z&lg/W|,vp!N,9,-mmmmmmmmmmmme3;˯9I,ObI B]t3ٳ,.$aBeNC'nI'I+,6.ןYy 7G omm-!Pe'3˫mZjիVl`g8ݷfqzc}z]/Gw#2:<ozw;5o;+N>Jv&&5n>'#WWWWRLWz8`:aaaa9WWRpGl~O|p>m O8ް3o9䜻ewfgAz mS;//\ps' 8=xxcccc"E4k-B#FV㇮V2m---~o3n? 19+`KmvCxg o {x䏍<x':pO;x>ӆ؞Y[6Kcmmmmmmmmmmme[y'vpKGX,xd;rU-!ZO ^ZNFE [.:8 ߜd8gx߃lnA<QgY",-,/2;z'{~ݖ'MmIG/vo޲m&^dfp-G3YVZڵjի[[X[M,6l0!-85tA=u~:lO-,<8g 2# L;pշ"K3տ ۶ dǿ s^;@eO">ɼG"D]]r{_s6-,lgx[dV6sfY0 6+Q>Gw Ԗ^BJY[6}ko=XȺlٺ|oW-o[v5qYmeyx'c,> ^!vv=&l=gPzDgq:dF 8HfH2MqV!B^;,,,,,,,Wsa:"330c:$w ].>3a6eXuy~WYe',ȵ0 8eo,y.ڵjիV[nիVZjիVZjիVZ*x>]YdSƬLۻXɗsccƶ$_ZqicyI?~v{ 3.o ?F"A{K(A< ;#1ml3]fnտ/'Է#ͤ Hmp۾Y{mmx mX@%Ilm ,8ܽs1qmlomx* w%j;?A6mv#|k Dmyߍmm~66ߍ~vmm믽(a,znuioZI  Ke$Mܯ]]]YgeYeYYeYeYeYeYeYeeYgYeYeYeYeYeYeYxomm󥥥WWWW\uuuuuuuuuurZjչrDjS}33>39'c~7~62իVZjվ}ZnݻV[VZj [Vmo- 83>όy3yxxxx'>3,x8-m6mmx}!~ϲY,ggm y,K m?m-,{m߀N,>7,}.ߌϬ>Υ{8m|m6' !10A@QqPa`p?(ؙJRL)JR)JRhy?'y'~v2WttT)*::)VuttuEe—gttQ!|k&ɝd"׈B Dy)Z؟ ǿpbGDŮB !B2K!Bh_yKϟiGf'MkŌ_ B 磧g{ةv+]16/ǐBl0LDZjy3 gfYYXvvV6vR㼢2e/l'xQt=yB|(#b_ vQ21qege͐%ʔL)JRiJR*)JR!|T gq Q2)z+ sB\Ɍ\:::5:&tttutttt/cW71] *>༩K# ʓF%BHB$B! l' btD:1?hn + bmZ&^EhS& Ԅ FB;###! p0#(a81!BdDD ip&vcA;#K)*x6^ĂBZ)1i;B!M!M'6uk?y?Ǒ$H}B7RhHjA%L\&1!к<dWˆ<<x׌_,~|SXfٵC'BD!2 /3o"b~Hcĸ1cfhHv#;;;;+;;;ˏIvS} E'xAxNjY1X0Nv&=aY䱱2612[c DˋRrząy؞,hLGZŢcDz}pE18(<}cD =Xl|/; J6R)JR)F>`.y|=b bNG D}oxhM$'P)վ( :LoD$>+a EEGD&,Z/DwF}cphj}c7W_U % j2+! ;El !ddxNb/O2Q<,~K! j24% zC Rz LBDLi?(L!7<>R/X7He.Bc.9ZŷPXSRӳV,x1XD[xc=b-$8x7z\ٌ@Vaz:t=r=B51Cx=&/GV#Eb$m7++(cVx.W_[8y! bc x0MX$j.Q|,]PaBL"QȆb={L}G%ǨlnDcFbЙE.Rne!>LZПM6 A n#.:?g Jh,b5tx=Cu$1z/EoeYe!k4,hLc 4$Wa(M6<_>=r\g}IQ1.ץBwPHۥL^^H!6yrwXzb (5bD1F , O#!BQ &?rlFx#VX ľ Ͽ L.R/ʄ#>4 I$KDH}z,n СT"nj\ˊ˖yi1ĸR'kVt 9k=B6Ń:V(z>UĄbCtC'/ m~*(JR 7'< Ә>eZ23V<c31Q1^8C$6>}:gѼzF/5PG_ŐcF!ac<.4_cˮd7>ɞO\m?x^1Kb= cG+,Qk׏| ,Z &zM[2 }Q5DlPZu X0lLABI!ƆNƺ< i^>&.+϶7BGdDx n1|=rBA11eXFޯ1°>Q8Bl!D$":""CB<'txrCjqH~*1n Aj<7KC؄zM=A9QD l/# (O<|b|/ E/CDŨN"!N/ȵ#Bi4V&WDxv6?V7'dпd ,Xpd&1!bOQ\2. ZD4:0qB#= ~xCČ;hi FlmG8J,McBr=!x1 npm!,xx =qJ\!(&/|6-&4dxY7jcix^3emnhY5o ū<}x<~ЏC)+;O\]DR?ҳY?e#?Bb"Br ĥ-lPL"eFfTQv&h)rnSbb5.Tu:1 <;k DC{ TTA_&R~4/1 7`'Z7Tnuv`qon C|Q3BlOo>1x#.6,cl2槫/ Q4AS OD(hP>؝. ҃MƒY{ yGb#BHF]c\â468>lXBCJ.Fu1>$"EO/XbQ11D,_S+ʱ\1HAKcG蝱t=,'I } ^BIno1?b;Ь"zx&1W!2'sxD qZpH/] mZeLh&! RҌŌA'D1ԁ CЫdc] ᮄ'x\N!v% BŐ|1.BpS,e{^1 Q~w^BD&60X0Ţ=H~ (F&RH0H; RbD&NBrIe)a!1xD=eWGzw0׍A &PM$$,BI7l()JRe*/"2<tvAxIQrz CXȏ_Lplf6vHm'xR:(ۥo 6YXjJRImc~ GGw?~o'O؟????K)bbt} :cu12b6. pr"LAHMjHCpa4ƺHbŌBEDc1>g$>DžD} Qh ,Cь\_J1=\H;c]}=cP^k,b 2d,j5ă;KKL{MF!2CE6 z[.OƄ>c&1<3* F~k3lUmӸ^ĈBbD D- d~ğ(!JFL 3z L" Dz'BIx6 z#D431q1sJz<,$=c+FcG<ƌIK?xDe*OFAztz!PTzUCUFX;.ʘ?|_DI$l٥11Yxy:>ť ~  %F%)F,ah 5Q: gcX43vh:y=} d ./;:#h@d .Vt %EVFBawPKBD!1=.cLhA"}F!lI.Q\iK)JZLt4OED!z871;:X¯\nt;d%IX%(·64p\ ^BB`ud=Id41|N ~q-Xϡi{8Bʼn**j")%6&I }v3'sD&,|&QV&1D!7.BBYKq.B g!!SOw## Aؤ_% _C_?B~:v ??C~EBvHD rCb(,=\Б C1Lb|gx[J^.)K)qJ&RbDy9+Z<%e/L|AAF^Zx^(qb|ŸQZ bĹO|)r&!7N+)JRBT)JR)JR.QyR˳^Ld!B Q#ֈ$O5D> LCbNb&p7/%?_8Bbȼq-c䇉e.G?εBZB'!B!B!B[A񜘘&_)Kf%,-]B|0;&'Bd!L!9!N0!B!9Bd'ãytuLeR'JQ>.wz qeQr! ˰ >IyhK+!B!L!B4!>.~]/̿ !/w'OW*!1AQaq 0@P? h.1ƧrS,=ʝx%úyEu'ha Ͳ:V=gb(Hi3Q3 f{Ӥ:PZz(#pё"&ݖGWDc0_vq7wrwJ yIy%tBquٟC@ķ0ܨQi]&Mw"䛎PFG4h=c(ji(1g6|khm_ G@Kj'RDH/6̩cguC,e4b#'q[ Lq0Gsr`E`wҸչl3VRF Kxz8qR-B65N&fRS(<@86|EUtxI I8m; CǮ}bZSjwgqSKy6SlzI,:[|^ŋPmgwS8TAōpm WP,(ۃOf=XVSՔekM-yee(Yo 7-5m);0~yiEzOU1rNf~[\4@аcg}ޘ 2PUlNM3H78s.yyyg2[S<OI"0 ?2 )A//"d{htS0s}__MKTR5 q3B>;05K1nBxO IINwtz_NtXB5oH@.acYq[- !$ԱNI,*\j/ B ؇=*+֪XAb]ntNG8άY T'xt2.wǙ[L;Ϲ)-cq]3^GNsNEu9P˓zJıP. EaWo:) G' Hz'hD?zԾ+X_(!'dnv} SaR6 x"5d6D/0@f_.yGpqhTS&&! !9JAq1e `󅠴.?3bDbY 9HHo0|8bEYڋ+7 }Ԧ#s3dTMKua`ADAsvC蛀Glި\lP4`†9\1h*eUuʼnhRL Ow+s;s3Zmwa5ENtʠ&Fomp"+wmyͦ%Ѥ68prpMr}"6u,2fHVu&;K *2qf4T.҉ih@{$6rcqD*67䔲ەIZt_Xg =d5`*9AfƥgJ87*ˆл1f+zXayn;гi5ySyʻB[DVY &6"٘r}Bлmr[//T'V%pFiD08=sV-\TGgP;:FmC~"w4:%g?_;R;"#ӽL"s|Aj+K.pHB@ Bl ausU]DW="V<مjCO _NoQ#QW2RJJHYn`6;n;=-Y햬iM[AʷDj7h-qMLtςw Kks=z=I i'FYxiXQq vOC,I4u/(qVQwΠ{"%:bt ÔV);?dO~axI ȳ5y!Lh?eJ%F((3SGXàX#2k. M8Ga!;DFL2LauVfps0_sìSƸMq4$ ;OP>gfDCR t~! W[KEFX$VcNRS /4~&|q0nVt'bWO>c9_ELv(p;Ijm*l͜k|7+ґ{tNr qJs}!)P*x`4qa|L-ۅ)n+?3,?eh"$3\kTnnaZj{gVQC8m:ç.`&4Np3gw4o㯭-3JdX Xja\Q`NU cM)^~phFgJ Be!S}f HN/t-/h);JYYRhᦺ# ̉*e_X=L,uKu,@-'v'kJt;\CҐdU6}. Dyn^\8 n^#>u~CXYOYOX.n3n< @3 ojcoo&!=w7/XxD/%a9kxaHDl%͗yȄ}we }PDn)BL;0PV+ eB@c3e5-VYZ#˻L̈nʉ<i`qԱ{M㚅/o0]B"_0g̺=(|ϑ9pStN"X[zᥰ 7X=.3(c t " Cl^l0-\1H C QJj-P \(ہ:K¥Qwi;n)S) '?XxS|:i:nM W l[}dUj/h3H WQH g)m& -V9oϲ|T)J7>Wh%/K5f\ϐ@97cAC7i Fȴȍ&q CpwW,FjRc9p Gl8|$@aTE~&@镧J!5T0RÔ5tkfS V|'U{Ѓtw.~F w-Jhg|9$ =?Y2~>qt0fgKa9#eF^a3ut=f86:23w3m+SsIf)d}-/Y1퉐ɭCG񆐍raA9&P/+ O?C.0|1vv*yD#)3ķϨ%&:sNE7*v";$<ǚ r?*&Q!bfRQ :.`C4t90 lC#ܦ q0AEyeJ()Ev;lNS;,^6 s7^aW8Y.]]~JDbp4M *%NҵXM0}ͲX$K H(h1a:WCzežfLq.TZQ6ѽv+8cNbN-'BscRO5zNOVWIFRgZ2.i6%PaWf>K5Y6ݮ#kd{!aJDJўKZU&L,*,S)Vm xSi?a pg??1KӀ: K@lVY~b=&#d9<9/>V[gXb-*m|92I@4͋{=˕syO)^l<`̫t=e3 UUMG|6l8;_10K.?ӎ>H!O87.ckYqGSa/d79XBt0#S0Xj*DC;;GX16>H+Uu)قءGX%/7P{gkT[ܴ*xop7S3p7@U2CS^haS]ҕ^=%DP̘+Jk/x#ao[D0WBSq^`;_sésiw"[ubN?O?OR,rLF*Ōj(pR1C3 bs0mbFbZ*n; BZj"2jJM؅H)7o.(Kmajh q>t{PJPttMC;p' k(oט{I%]3|&d ؾҡA!C-^XX@~rFRcaCd[wQ*6&@7(c>D /hd ( SW.J:1 lƴwR2IC:d9gaHw*UNᶮen.%`:p)+)SYY610.X9*i5+I6nueq`ÆH2PūneFo<Ѐ+&Jv. U@ܦ$Y@۴4 <Čk]B#ԭfŸSU9ѕuccEu}ys/#S~ L\ZtI2./[@;mYo84yiX.u YfPq_2cr: AI(":@Oo:fYSgK%._Q (GI6xa7sL[8[-}S6लP fi}'<PMG N !30GC__(yS U!_KIGw( Cs 5AvC߯8?j=xZ4ugW}K06Yds П "_yicGh;8ЍZDfpQRѰEʖyf/CAjХg&{Rks\x{JSĆ6KP,rXl%u̘aEpCLiSЂj; @Y1s. 9BLSbAݕ]G *;` ʸQh@L\k`(geRf0v4#/?"1GL8=L!l;O!^epn|L%_YP+-@(*Vn.Ŋ-9L9N:˹06]ve֦-20@Jz!'P7w0Wu8h'2Ur0~ȏ8ܡhF@"xsβNoY̘9v7$Yr<1błY\IsLHpy p2ԯ8k!Lχ>1 Uy 6vJ Dk\'?\ pn1< tkM㤥×,⠁jEV/1Y1xY$9FFMי_Y5'˟`biSs'3||vRI\DvU_cM*ZwߴG %w'әҪ)@ws2Q (-B07W&Sc̽ -r31F9Yo:&I4S *W>T+y\OfQNħ)x 0pfA%(R^hA t0,_n`E˨+_}')jЇOj_d=&zD&ږT f)7:"qFe!p|9@Pa*&.\9M s (%ԫaGeUյɔ"fp@C ~"J՗?? J0udEA K!}p4̵0n^:+1ׅ)eTW|>ɋ>*[ ̑VI㆓MMpM*TMe8`Y,%dx Ĺ)-*3C 6+oP+|!Ku*)0#2,Gof(*@3f~&&n,5p7@sp R'ƅRU;@;Xys1$L>eͿ7 ^rɄYZ ?D~HC=;J2_|6xa) ;,+0pYnsdž゜(htF#-f~Lc*E}*U\/:P']=xGm1.I̝&2lgj0?F<3F(z8 $B`[=3 ajMb-5NyĠ,Ց}rZ3JJNqX:L1 'C1~-EV]1I~!+UNFs!c-o'N y)[!M!F\"R!%;%7,Ļ_-83چgpg)D\]%9&GB.$Uщ3p i\&*734_dѢ]&'PCe`g2Qi"I7͓˃u#SY>1:k`YSKs8>߈!i9#PB=: U}ky*+ !mRꖶ?s)jyD.B(B[/+n4^l>qbNsx}y*UVû\ˢPU!I_AX!W}e ]Q= |2oHH)I0pD+ls=ӜӅ^%G-C:abEܸA@q>e!S=2K9nm6膪f0T1Y&PHE_R o6'Yh`ǭbn K{cu1eV߇)?O:G,w VX,V .W X#S7Uj]6g1!6*Apħ,50bOOK!h?[?i6;ܭXO>A[ecA{0Z:GP$6@V۸f[{`Xq wR2-ՂO!!6pPwM%!ulV$7&(231/\3_U71usDn, לܱ7Նs&x|M[ym? }M5FB8jG(q >7MuN(C)CTw0>G֭Pak5D &S9f赔?'O0籁o(`jG'& a~ӃCLG]knii ǦJ ɦjid&XF!<ύGrs5 uf!MeZE9((9]M>X-Tr2-s2Lfr]U"Y|a'?'m,=vSԺ^|Fπn`uRņj+T0jUXy;=8 Uإkե1]O6faf(̋KXbVR4BȈ\fJk/axXe!yw (o| &l?ii2w#P y/1B P#hi8&4ax)䖮qc`uXSN"(Ī:q)`̉^] ħ<'4;cA!ynej) zL&->#U,rE 6s|$1U&`i-| @.*K MbB,SZ菖.Zl ͵xH;6W8g h( #\ hB>1ޠX\ qІUDptL㔱vAC(?OTDy%>Rӹ-Lǜ`f>2g||ㄨ0&A1}rm%K'T4yXc*[(s&&%bSU+bN`2Xd_\Q*1cSՂJ ľ+(xuim(o7!RS`L?)ca%APl` '?HuR.ˬk묳gŕX#D)q0ef5gnpsL1 Zz׃q"NroxJ Z() MǘAyGg->y>;hO>O7<~&r&۩_vMSn 76)Ys6-=P'pXwb_M𣬽*=[bՅf|FPhѲԪC5bOd@rDJ2ḑ2L|ȗz@ b;f[@^I. f;ĸ5Q5N&5obѕfF/_XԸl5_0:b3g\{/)'O+U͟Q^W?`dFu4@|jjL32poDzDXB qG9Gua3?d3%f>Z5HlaejM&YCe9 74U [j9F2)F~h,ZEICLZ2@=+mb+C`Im|'U/M^ng1q*5[S_p S6el0W!f5ؗ ]bȳq%=\0DJ]K`$sp50)̺Z)]Lf޳Mc{#%EB- R=A!7x'?Ѣ`06;HS4*{Lr(\DD]y(Ex!o ?iQc,p;NmKIL; K.5@{ZJ= ={<{K*0-^DЛUP6wU`z%P T 9;}MV@}MGjhMDQ yK\pfűԵǸe7l\{ X1/=c&4LdS| 4pehoLr/,3lm+eäaO0Bju6?ivd LaCºQ/=_*E]EO!y-jaVtmeVC!B5J:E k,-s}Ss\Buf*Ck/ oDMj9`72E Y*йh)E#qU7W'dl_id7P&g_\qJr39_7[V)σw?1"Br3WS6V~^K)"+n XA+ϺeLH]Jw&Cp03!7>7NI0g3VqEn'>AcLOmpd#o>#MK̳qpM\Z"[z2߷(h?)*v>,T)cbQ/xx ~Rn1H*1Q:vȟ@Wi Kua`Ϙ +D$Un71:3u߉qiR,-3r8dj2YTj i:&Kp5)wݨ)}̸sKK)r,B6gx;!xfkFbh;~u%!J4-NḪ[W--- yǻ;Pئ@_I@Ä$K;_s;P1Nwk/zjw\2!dGNYpim;%]rs aC9p@k'hRFL_noG"G%fN8k F|U_)` !-g-b]Ÿ H>sq S.GDW~SlJpWw J74>Qsy6" QZ܅N $Y'xٗ2gUo 3|NԸT'8Deoe#k!RS/[GYτUxWHn/b /~bHsX0fOHn : )?&a#_HmA+J*l%OJXTp#MtAǘb\,V*6ʯ vx')ˉ?-|V Axi~aZGT/̮rl;8ZDdBGD9 92矿ut!X@"pAkrCG H-f^0U06e0/s?FС/p `U4xSnpvp0/~sc?Q!K.]UNcK|O'ZwGx> hLZpZ7>An/. ,tVWv 0S90NVqF ҽgzw{NBSU(:1!s X#KB<讫& Ehccٺ>|E#k oxtj,H!-,e|^K`Os?^c++s#4E (\$EUMFex*eyV/|L殳9xΑ-aҠx%SZ>),C6¬b*9nQ VV zUyL |f #;]ø8 =&Ŕ/0\;,aneD3áwQG ӗXJ¥'(YJ0%S5:hh <@buK4~"l㔬 KB 0GPgb"),H)*N*^b Dba4NQkQR‰ee)V~%/_1 ;K%!TqX_0VKoD4<)&?$ʃļ8~W*_(=&~*e5٘)(c]@`ᕽ2l$9Oo~&MR4n\O427kfG+KwԺSzu|TEjaQfa2C6ܐ0v"Z<t93TA"9 D)ԗ6pjm`rM9YJ/p HF*;xsg"dH6j;V,\JU{J(FMTۀ]1qSTfV"%KhF8B%0Q* &k K? aPN\- &)s̆Ñ"Xh$1b+5܎aTԺwqis}D}K9h7i!E[zY97s*踹oE1]$ۊ^Ɉ~ ȑF7?Qٷ0pt|RK+ ir]\{0|@J*h_8([mCiCs} Mž4ó)ss3#y\3uUyUXQXPtp)SiQG$RZ`ŠygJ+<EITHnW0nWm;`Grsh얋 )޸/-Ft{˟)iqّZ C}i;2ne+O'yAeGL0{D2Pcßh 50S4m@yXab`,[pU{}NtYnzL'QтǔRK͐l_(ol%) sdajQ.NI܏B0@sVxo []1Z~#H5j%u#Y'U;xjVSqJy:4 pJĽsJ+2W)}a5Qjdlc40qnd\ 6{MLu1cYnh/PrFR2І\+Kӣ TG1+IÖrXf;6.¿;j8s m g~n!|X&-MwxLx@5+毼FXKv2mJs&>(<ۆ -d 3\g.@c/9Z|S6FU_̵WjzSK7\xO^U.3FP:R63QIv5-L,N4܊3LiwjTc[G$Dݷ Ūu$]R0Xփ>gbo昏SR(qŋ1ܺb8%AsV(B1 61fow__<58)"fS W%2"EƻU-՗ݖue ̈ ?+Sxb9 xJ ͠T34 T1h(d楠@PQֿǚf_Q'XNZjw04;HnZ w5-WMP>`R40FW2ӹ3=Q#wKAgr OGpU7E*~hĭB 7_CRo(M̓-#Rh+' *]ql&7,LR aV`ZAjD:m 3ˮgBYJuOS4ᒎ E&c̣ kJ+11* 7s"WlW;¢̱CW\L tfd.e`G~p^~Xq6AJǘϙ؝؝؝.2FJq[ZVJܣT Ju,u5w:1W,SdGa~lv>!#<%ۼI=A=K/d2` t<Ʋ=„gr^uDtԺ)"SɓYH.̤\3/`Ȗc,)?1l%ИkMñv/3RJDOݨjGܣOXQO$>94RXOx[7X`P SYCy0Q0EDŽx )ܫQ+GPzbbpF*T[Zt? ia3;D(MP+2ni+V"e)h;\@8+fzi/17  +0T^}nR) ] jhR6:&52Q z(s9p+?ϙJXW='*Sk1 >)Es{hP먥 :kb4@zޞ>˹*{]/q@1jClòtJ{\Q{&Y(%:{8cZF9ȹ%ƕdb1kE_0Z{5X W9=ϲ-ui<{qL9bU Ln$[u+r1ظ Ubx[lF k(_f."PQ)'bQ QiYfF]j: ǹ܄nP,b- (஫jdlm4m5c[;Gu]'y<ޣ}Cv_Sc۔8>ԾlwVʋ`j s&'YEڳhq"6%tq%͊;raam`\q;cnr(K?%+RyK9u\,P[M^nh3iGmؿR޾6ApЗ^J#*Mgv~sޟGp/' u%g᜵-KnڛԔ#JW (4o(T+zO1 r8ms )@m EjF2b(iWS+ʫ)sef}Z5>'hbtM`.Be4?,n$^Pr*T2َ J gm͸nEH+ 5k~"- D'y(^QgkvSz7_e7LPR`c,dB^b䱷\o+~t ^&y b|ǭ|ǫo0:Ǿ8"NR+Q D5csVpۉ 45H9 P2aulpd\eN@XƤx^aeS5LA_hvL_8ьmiQ_I%sy-]AeSJz%O)~~%O#=D3qᛷG68PVǚl9E5|M?a~!>iJGަ;z1<s\?er.A9`)yf=":Cp=Ajs|s|s|pf͏N|shǨzܽ);/w~_u}w~_|sm;/O;o7jg_?B&1 0z'+3 ?}Ávq֞xb5i73GXF [}1\ZDOe2J .X)Zw,Kv Ns0x[@7*7sBʋVjVXΊ+:MAo&*-@-xk՜b҆;+3 ̼?X` t%Xbf)#E 4 Q.|;UN=34O>\u p&HOoJj+N~(qL*ı $[_cymT23C5HyDY[\49E7f~pkWG9y cc)^BNMTNNhA]<öV^EC=FYSPc><̙_יv ̛zG)G:v*(}GDZ+BV®]׆yt,NDVnm|~'̏?x8~(sG#oD;w1cy;wࡘ;w1cy/|;Wp\p!Ne]UYg kVd2s1L-N[5Qc;hJ %Ajn͇#o eb{n`!Cq2V̵C3D.+0LE%WpYd 2h**|XX9Q* B,{%C(@h V$[>tJVܭn>e;zZ*xD mAB~ 7Sof ~o[dInKAˮ O[iiiiin\%\2E~luB4TT+역V3:+Z";"01)oH&Z1#nIVxpFBH䜘c<1s9C4XVJ1wN]1 .sK=Lu`73{䳴56=H0wq,o䆕.B'2 ]p2,\J9biQ%Fy*@$ vnj Z`Bp(%L y=k}Q--)< .>yOؽ]Ƣ2)-iљ6cS0X[tUҧ9I]jbQ C,;ko+Vgqو  Vb IWi*~&ڱA2LS XJyCeeۜK+Y#{G-Ay$Bΐ U1jVv. b_ 6meMogO54O_K/>랱b TӤ0%v؝v '`9S<Ȏ:NyO/12\-4j$t[Ѧ$CI14)=JEFxSdyB,|D[Vg0 )~AHan!6^r/ߙ:p2V7"wa5zK7Rte`7ī>/Iܣ; '->?:2&/?CX0~0(F1 rKK&eP4i)ӓa%LvM'(6Jz~}1~_ AlAhz/2wNSoUL(v%K;Q3s(5Ex+~T). ӕJ=J@żk? jac2HQ*[6TJ&MJ*gCaepE42/MblģBxx \[s""!΋0 CĬα:srꦿpXך0 AV*ٔJ2Qՙ^9 tލ t@ Mtl5]%h}#c@/RR +:C%]=J`Q\УWAAЕyz=C!V%9 /Dzͯ-^}Os=^~I `,.7͞;Dv5krONog/ ӿ13&ρ&0k&x \1hޥ(N%rU5[FO tz认"+=~"Xb f:N9CESx_2r=`%̡jV 6ČL\&-. \ 5~윗XimEۼz.tͷ\25)npF "Ew#Yx *'hJuH+0a? |Ii|lVt\7yi7๣vXfD:0?0%1lբeMʥ4yd){)lskh r`[+jsv<;̚`V1C.7_x-PּǤ.6G} 2h^jv '`,Uo|L0M%%HŶoL:ӨBXQ\9\Pp^Wl;R*V,`֥,K.5SlyVn-F$y~<˥y)F G,i 1s{ ZnwpBpGsy&BH$k7yxϓ6<6a1Uo9& kO䟹ۀo]aZ(d ϒf2f|&N^ 9T5nzpCSNS? ۃiEm1;,3f3I2ٌ* *R#=d% gl5Ɵ3WNd1L1%ܤQ$*4nWHz ɰR+H1]%YSo)"p:wR9QSg2|ɧ߄+f5y\svϘ~̫̋7) S>t3lZ(--"Xq2+^`hsf?l &m iܺ+S8"Cm pr˟&05 |&huݘ TՉ rSNS?MXFRe\y yUtGPfػxS\:ΓԠZj%LDFmkw,y&GMQfx+R:3@ۯY*!-mz2%FZQ0]`f+TzZ0SmɉdW=r*}MLq(O6#M䉸6gHwK}Z|B oT&#(WiJu 3xAĕN `:(7(`r{PIr|D @y$})Ka;߈^f;Se,~X΢ ُb*=lNIE9bNwX,q xYMͳM>с=TcԱ S;&AXXS2tMq9r.̹dE3>S=ZQ.0VPԲJ~&ˈQ3i\='03 ܥyfG6+_g"Kw((T\EYX e~G*g1'<Ŗ􉹂QxKeK֥(ˋG/SSkt#OK 3(m[@П(M>bf ~e?,SABPu`7WI d:%Dsdj˴i) ;@U좗DQh# n'; r ij[x%vrSQ.k_hז*+L\Ut=Gs/:G? qG\\jP6q ֥B*C1qi\\4ysOD,^c\P=bD!HVg{5\HqВ]PP'a]X9\;[#]L9Mx;Oݓw<,ʾcuW#*L /4yc`E$%$`Wqh .`KKEˋrpjXK%%q`;} (O> 2#DE2>` E,Z,WvQ螥|9>7 7n8 zߘ#CqAgOYwdF9Q 7ߗ isOhy|| !&e27"L:`G fH7h-kkBʫ;*&LV/, Y jYh:h0P2k^!LQvO>л Rn=Ls&KBֆHJ  ;k.xFEo;2(TLVPN|PZ@3FÒcJ3P->!a);-fm|,1;';?;?;?;v?:gWt.v{=d`0/J= `nvO=B?hǧgNKbvȳ=(8< ts| rpV{NѪ2{9w=:XboX6.Wl& Me:D1@!o(a0#Tnq Qp+fy᲋,"n& zȭ1K:RAR!_Lu!]P`M |ː[]ʦ[)D9MEӶ99O2 DBLOz[ԗ IE#\"ZWK ـ6U#<97k2 E.]S;/p=́-!q#VvwgvwgvwgvwgvwzwNNNNNNNNNNݔ8 T+qN9;#PTVblm)sLo©pW3pPQ2ɤX$/J4S-Fi9GK-sAm8kf C B$1b>Ish1kxf1ui\:hr" ģw(@ϗhkXa.ؗKZ JqlӃ$ny|/İm}re]$&s'H P\`YfFȯ6(Uu uqiJ~ib:3;3;wgywgywgywgywgywgyYȓ(8(7{R `XBq[3o0T\CܺeC p1B,A_yRPJMK+{ͩ܅Zljŀ/6=ǘThC'cax"h( ̾WWXNpFz+cIJ$BRA9| o++P؝w+))+IkFDY~eE^.D`44gjRhwB|&Տ%ۅ1KTYneu-[܋.%u-[Yneu-[Yneu-[Yn6&p[X[]/C,^p)ARJj`+Q\NӺ;u}!5;ga;֋tڏY;Nw K9NwӾ)wu;N)w{4Wp@A0g@ يW*i~`]SNۖc]?OjШLFXg^\V1= $T;.X+̀;T9{A]o$ x9O <'yG OxŞ + QixxH%G4gx3ok˅)S%leh/CJ3 T*SE q" Q3"MYtf:3*1Q(1k$e Y)J9fIb̢aS_9JJ~bSAk2SaĘb*op)cd,*\q1kԖNw'z;ގw;߉TNG=O>8=rw>s6'Y?A?K>:Sw'{w'{ }L?w%ޣ}DOW[@[G01)vYԅgYgYd`\BfGA$K3͌Ӕ"2 +)({uBD:dee`%aD 9 k@iPjU"08qeLdž"b8Ja6DẒĩ¢zJIl"2%`jԍWK "򤼁tċyDAG<t0,:-K=ʲSq|@t`SW!^7|N +; j';G:'a/󏉀moCvN/IFANւ0\4Ls)y/=9W13FGsv߉<%-f; JVlLT0-𷍲ؽ>xƳE&H n7[ 9. -FFc5ңeہ]en{LLL_8Աr.%<+Vʗ뙈tDNr;̣qnFv< 1Y,tl2KKGI }Ewh ;ӽS)iL;ܖj,#ٍe2TNNNN2Yx1߁\)&mڦ pWv%BÙ*sm2ɉvYLD`MG& >2|Au:TVVٯʩjV#22%Tǂ!'EG:;IQ}'(ԩMtJX͑+V^cKNJpN)ԝZ?E2iiLL+R 1+_Y~^Wy. Kt`0bv'w%MOL*INS7RŹtvbbt/QCmA9)愢r`%xt%1ylB"gO*6x eb1T*!:8 Kx-f K!U ~8TH95( bqq)pRuƻ<ӹ} dV Jʤ,[9{KEs>H 1vR(Jo7aN}XɎZ:-// 76ҧ*să2F [,Y=hP;Fҡx2jB$@ɢ.H-lr"dX(%{!;+1 @@v@~)恍$(Ҁ `@X3@X%,PHǵ #=hUA gށ:P@zQ@aށPv;Pp R 0(P($Uh4+㚤U/N*QQH\chqV#V ~5V$F85%O:LAހ?*`%!H Fhv T"jT=j)l ApZ9ϵZB1)V41)) !pU,v+6;՛c f@;fr) jy} M΅y4LzVRV'd.\N!R#S%0 2 eћD=)% L % @ () .h;( _JLP@.HHP@PhOzJZ%P>SFhRtyJIsϭZE\6 TDj$uQ2}kDIH; (#RɩǏJ1sFBj9ØB1׊fZޕf5z\tHYJ,OqW47IBTx"|D\VrfsMHzW zц▻5+f]s<`qz"18b6ץʥ5w,OQ\Uκx˨pq;*͎?J&fб&EQn*Y}Ea&+<:ȓ sHNPc&&)$SG%IX$Uqʡ(#Gd,@RKqhA}+;܇,kQcQ#9r"XJFe늞S͈qJ {HʠکYTqI(&P4!xJW)H`$iɔT $^E"JMl"E9d+_rEۚIn PWiȂyaBƻ DlktHEFkh+9j花؈ȖȚ;"N{Q:Ř-2Vrs)U/BWV92hCI)Ƚn]NU9{dthgJcH'` $t&\9klXW 曈\kڱ0[!nh#Qw Sei4] 8*Do #1Q NWTh@ܒ0 ߞrSxQʄpi #bsWdPA\s `} e(&>br+tQp#8o֜ yu;Кz.kni4EZF1M3ZS)H[[&Y̭Ig2H#^\jMJi?d`7*׵B|S[BtQ|ӯgA=+Śi00}+16H'd8g$0Y`ގS';Mfe) V9HF#8D)\dsEa~HNHnI"Uמ8NLl.;{fc@8kԧbF@ШE丕YU8xҊ+qI#eO^OT]Xg3%- mHs΁S غ]%\wiQ9\Jw˒V&O͎jF}+QC#wQme#hTKH$ކғ@z+ٙ7; ċ&}4&f"g`@޾-WY(Ƥ< L ZHcd!h#;ar0xv=)J ){DT2+xX"+U[4HI=Y"s}jZp^_#>vB+ R>} 2\Q;L~ʋ# z9@թ1^HT$|Hʲ$HEW\ 3&D֨iAL&((=(P1E `v P:P@PHbP!;1h(P@0 A@~z9@P0  (8'ZvvQE{xضXaAOԙT6A'BmNnYVvcАaLbzء0Aba:PZ!pRAޡa{ gr(@bJ"'J͚r5eYW(+6J"fֳe @20EtRrInC$ N"9'E[\X0qܼTW[*f‚:V1քEy_[{gc.bGt(;&l8kJN;·*Q{W D9mbܔ0;7b &5u``@܆6E,0G5H 8 Vd 1E]ùAE|# p)6\hI#yA kEBLaeՑ; 8fZR'!G#Au+ ;ke9$TΒd^YpzWA9hL2OQ7ԞȻEwRc5a &IXbc"Tư8Qqve"PIQٝ1'`~`ڽPTؓGѥ]-̚q)\۲dTףNfIЎBOQV"oҚ4CAGZ u,>93CRs9Sz+9]#TD'MAOvZ(F!,I9DLCVߥa* ưu@U\b@5V$qu}sQ44*x=+ĩ7LEUq&Wpia$A@c#xgLhѲt=Mc"$l@94; Χ9khC]Gz%+0~SusKc tF 2'HPq׽bLǴR-!Pȧq؝x"Dr%u8"Nw(fUΘot}R9MZ$jIiEW$&YɰhLrhЫ,}pk ,g&# s)ʘ"̼VɒU\Jc @htP@ P(xPހ (bR (A@ M!Ê(P  J(E;(X;1 ހ P@ (vbZbIa\zGp;`hOl1YC+Ӻpƪ9a eG^iFr1tBqCM4*QLa@ (Rd c"Relh^*(fh^hQXZBY6U5ʰqSqĊ=+)H=Ee)2Ԑ~ut$[{Ws+I)Emr[ա 3kFl@*B=a%t2#Jf3brp"yըvH(EhȄ$+IH YJC {SlL縦{#ӓ8p2kU73)4EϦs^ DFX?թИS:8'Թ!sH\~tu9zjAU@,dg)ՄhnkLYTw=ԼCR"ưucF^bueqT)jw! E}jF4沕Uܫ 'ڰu",x9٢BsYDu⡶H6ҹ@ ,Kr#Hy柲0;"$O*}xOXɖ 9vSj&rH1<цk.f"OW\kEWͤPH U{Hr,Z&.Jⱝ(a5sr)T`I6I4["9:49H'ʒ\ ,kS8hU|3(N TL2Һ#"Ԯ@µLhgz9a@Z`(h! mP@ 4 3@ @ @SM(F#qH+-3@€q@ ? P0h \i\3\;PL)=UqBJ,a&q@4P}ʘq-]i$Ӻ2fm2;ZD팹RhC'[өћӟr9&yQʽ Qo{a@(e-KK QrbCf#AH Y9VfpJ&; npzTaE!bV9  QzGkxWks6Ii JZrO־zSz׊D!;F L_5ٓ'hrH꫹ ]Πg'[GyQ] {1*0-ƽl-X-4ÌeGs^F5 0>KKd`*z TYUW)I#^3MƫkΩETVV1jHAN׵R@!\ø7+ pR4mCcRrN)i_WaaI\5)+*zm<4-+1\BBqTHs]GD%(Wz,q]Pvľ! ~u]θKb92@mi$"gf'ڲOZ朊, L'SfM&P921n溢Rl?yP~^Mg'ie(NMs9v桶ěj dURd"3Srx#d8nDK Ti[(RK4LVKrHUKlA a?ZjΈr(7*0HEWXLX*53͛ktErDjMUTvr\@p{PB& ;B.J7pheP@nھ6n97FzJ('#n|Wz:(cͩ u S;ꦔ_sjsr7rzf|H=Eu&НS) @R)%$ -C) PV Ͳ&+6aÚL(dHP:2feV-e&1VmGC`JҶ^tބKRq3L^{X.4h*88iO#VL4^FCx\JA@m 5Yv+`j$ 'ִTg^$ࢨ@2&(@qja>r/24'5k nLf*wGcXT$#19E-*HCXZkc7`8,IjPzl6yzq1i R2%⺖ D͖j! c&HfV2æƮ-!0ONh."OlQ%EܙdblKdwdl`ff2a L*lc&850O+DNT:+I!a։u+ɑsT`{cL,@R5sG[FNDtFGDY]T͓">4ZzLaL :Co !kl݊VNF&afTЩ"H;*4TbG5ܮ0A>*$cF(qRC{ӵ29f\b(mw ñ\Ҩ}Z8PRk $jf{WWCliړYHaڲG+bsj$] 4'r6Fi^ҕ©V5d̵++E28\=ֳQ Yc(m|~c{VQ%6AZ3$U\*nPEBmP\BM槞۔[FCC*ɮL^1\~j7OؕeȎY(h*oÑj' =*Ir}rR8#ҝCrԅч`qXʒ6Uj|m` TZ Mu:a\qߌ\%$e8&Y,ŻH(WDkI 4۪>a+sM\M |*;c *asn}UI@-ⳕFe*̸O\ovKH]F =*[.1lo+5"n۴ϕQִkبAP CZ\I1 *dR֫F ְ:jg`2G 5h.M2 *n㸒EU*Nr)K}kͫN]rF 8gJgP1̀wR sEP;R8š l Z$*ߍ"TNi1YbzͲKQi 8DhMY9{P̊+l]}k9B3cj;>R..1Y_ljO#5.<3,ֺ!YeGI!$7"9&&AM;r)YHṈ <J32q͙Fr(L#aTLֵH)H2SڵH2bkSbC;V&#' :N%%f)q@WNw1Cc!lP`9Ͻ1( ץ+g<=i iz@(vǥ!)=XU,;E0J; P}q@a@g4r}@ Cd@ 818,] 4,,~P++TgM DpÎƽUT(1XWslbJsqP$*@FER^EP;wq\$RLCnǐoPk Hiy5 #j籯l;StECcins./S7θ%H2fU-uC =W} F?0+zwuNĖ 1L5'hc-.]IWbL02jKvMVK 5R{2xʃ)N-v%Ў8\_5NH4N#U Sޢ|͕.^2VRgD!7\¤C+peR6ZFD) §)MrC|(Z.Aۥe핮lPglԱ GM)JE,ZPL e$1Uy㌓Xq6>5+ Cm@=X43v:k9AH>[ ثyҦWVc9dw1&+P:fj p9=Rٴi&G"t* ҷA, |++ dQaMٓ{lg"Gjhby8$n#4B3[.' Ss,dXN:XՍ*愒I*u{"1(4:a()>WGTpqDm1Xx is3*(Hфv O<֖FD9^$ΐ"dڱlthAvgak!a4U/c"7v?S֩$4UpOOz!nԚ֒؅-L5$r=J'Vd\ &LF 3Ca;R!) LRq@ P!;b&P:w%7mUR$( 4AsRab* (yA81a4JWvP! vp'ګ,.1NN8LCQ@\bGLØS@FsYFChF 3)Sla_ʺ#FƱ0rAP5-:g&b>^{R V[9q":RRo.AZ{C7%^J}b!V-zLct9ld8E^k6Q{܆ɔ ZJR2 [tW3(k(pڽJ-\ش\HnU8YTɼQb-&g?6Jq%Et^IָjfPi+yIB69Yb%#M!GjVsNdtfQY+GuQ`]ZR:^*FhiԌօ;R0bqOjn,nm,{#k3Ϝz?Pd t'ahF1F; @NM,G+0!lH>+Dz0ݤ<v4eB5QlH8ұqT"btҟg=LΒW_eaE):42sG6NϭકV`=b3UMЀ+drVfm2kE+ր$eR1Z<1 5pNM"dEq Lw3HM{Q)lu'v:V[q^QID=HkXjϕ6?#}+ pmI֩̐`phB*\ifW)b:qVF :+"]4þg({瞆Z!r`OT7e&Śج>b )Y2$ú@9SZMF((#8*G$TSnqYm@i7ċt4fЧ%Q tX$PtB ;زIqH,H%UL_~x*rň21bzQ)"2W,L$*Ur-!cqQҹi#SRV$\i&wFKv4DȠgD03MFL|c'=+'!8Ȅxdb5E71Gr+hմLgBs)WȰPHK3[*-fI9kl2u@*Niqԙ^w qWcέ>CkTU,d(FrnJӮ-` 03 .A-_SIA[ v5 a#Mة-)܇ں#x!6V%!W8=NRw"<\8U-uu) HisoRsJeW3ޓ4CIriʁ ="w?( bN"t(:`=̐\.î)4)IlgvFS 1C J!}h(Wr04!FI'ZD9U^J4frFrv,X#@vBP@z0P~4P@4 (%~!'#* KTtZ2PGT'C)!W\+.ðk4C%P9>F#9#HLx4OsĐc<*Pq4pt15ϩ&he,>+Zp0-J)Ycz5^åyhcԄǁ\4e&Q" ͈TvarE56dܙGJ&TqP̥"dC3sN5vf2X7N}kY[Y3 "DUYbjy8Ҳros'aRHMU)փ ;q\9PkXV6f3t׉U-[Z(gKʖrڰ%?<}+v'J2: Kmp-gfyh'#s(h DӰz2[tvyeƳdz\jrƴNx>NZF.咠V,G5b,UY+91Uz+X.fZ $f) %AZE$@펝MU#to b(ҶUj" ֚=d\늇b&ʌ$5H`(wa@P@ @ 1@- PJ ($P!45DjJv8 :}+5VLXJn1)־2(s[9$MG*>Vrb;+F)j']v,I5Q比F7 :qG18-`B!ZrkRHe1UaRdoJ_ڼNcՅEQ\Pp8/BENj\ELC2CfrH͒H'eVmEcQ5 GfɰަLP?*DI⑄A#f) nqr"3R#!8Pjn*3qw1u ,ng u)#ԡVJNe&9 5#Zډ[` <N>t2u Vƚn"‹VscR&+hCZ1Hc kR#n-m9>Y*`݆Jzһ ۢ* 3ENF}40ctR՝TՑ\F̍ +Nd^AsִF] 6/AHƮ37mocS\y0ߥDnevQZ&zba7YD̿1'%V=jUN2dddUInq䮄rٗ_>}V>O+gv=Rao IU98k&WE_,Y׊fil bVHE(+M\iW $?ZR:qS(n1 \HI8BqZ$h'Z ȥMςNj%^1ܵM`f`2+xqݖm )\mrXm֗% ui!xRyd+h([[%"xIbuӚ[h\~5J-?쎕,G$,z*PcR3lxIc}8(;a&1t眆c9G, |rHR5J ym*wȊz'𲹙"=ҳckhGXk1+d j 16Vchp+TRLG*w=DTJzդCFN;]B 8VhXv#=I`r{ x>Dʌ,3ץi GL$X-摨P1rN:bV-Gr-Hx③CTHFG,Pݍ4l@KK+nmX5 ?QNRv-B}8^|uG!Vrױ*RO\:Qec3V~'R(uaI&j2 RIyp$.рLGEkr!e:U_i+בgt*Usk )MJ%rk#n@>AS喃' #\&G!YiO'8+npk׼&f ]Uׯ=EMID)l+G,:ghhC>ڸꄮ 85Ѻc5&!R4HEI"ԛ$J͖MVr`Xdڹ2Ժp~(a8UJvܨLF?sV+OKuW)_r*L$փr"hݺE(6qԚ)[HjHozv(1UvҢCdCuc'Ta~B9pNBsY96 zqZQvCԲe+hU&F»)'8 }3YKmb(MFk'^r:(OVo]θa`(wbYEҡR?Z R Qq?\SȌ#1e8pi1ܔHy_ZPppHaG(F0=COT!D@MH1Ү81( BiYI=(5QB\mQԟK*2fkN+&n4-- c& c֐€BdnR *=%!:qiTiO #p4[1ʸF?µa#\dBCAG8𯝩 AFƲz&MJ HL j d_OZinN8H">V(ڙ"֚oQ(ZE- ݂x1X\N1ҡ5 a'iҩ"'!J0!Z1Z$Q5k1- Y#9 rlW+#3ªk3$Pdr޾(F8TM#MGlo$ms=kST0ȎiFzbz ttu.'!$GJ&;dkrUqI#礢*I Qth5Ck)0,[\^øy3)ӹe;\ ͘]s Es&њbIk $o(k3 穅 3 Qȧ=k4h%! *KSSRDRQ =dD޹9TyuRKd+ЄHc8u``ԥ!b+ͫkhFA kઽ M 2yyl+]:zͻֶ1TV]X+/fzSVGdpЉ͑Ozf `Aphz hVj,'N5X'ȝv@QF(4q0{ʋi 2Pg'qC`XYIECfHAa؊QsՂF)ǩrnLr}hr@.Ac1`TY `•! HaH(S18!=H@ ڐP@h  @ )PREz!(`(#FQ+' ЉA-{tpMhʲRFiʛ@H=5 >fmPc&.@Pa9 c8M%؇$AsRjəBRxӧjgNQI5tGHNPOOJ.a)Ɂ8& U#6q5<ȎM\d+ХC$IIQZ! +T H,qV>VWhX:r*wchRcPc#$lr bkcңFۣ99?JkѱTA# E@LӰ`1E0}PJX@Xa@(̠1@9c8=c6OM;) r;G+G18(HWS),_jO&Xsԕg<!9j)3Ei'@ @8H,OZ@P0L@@@(&) 1@((1 & !@G'޽T&N 'gZ`pCEfr,ڙՄN R>>9!33nrzVn!*4E$9Jۓ&mco5X #޲r-;ma2k6HYb$U*\G9lOҵDLD%͒)= Kc*C۸iAIK>u޽>Zx3 Љ#;ס*OFMkng)z}:P)S ֩Dr#.19;Z9d(-6#F{ʓ jrqV1ILќp%;Wx'׊V#,H7>i^( Wtqؑ 'R`!kh֑kU57QHtDtR5DkDhI$0MU37+!c3Z(^(dO#JV{nm-c.Ǯ;ȤK D)*9e\Znhޝo´o h1U63$٥aO.y%*=+=# 5B4go_)FQW*V&i1Y>VW=Mn޻kfFx{IkH;.`#ڳlcA}+7&d Th\0#jj..$ih84ACROPk Ň"N2rkNKN84X<QPR0iU7$=(P;zP!3ϥ $#Fa9})2GL6 H) abHh  PϞi\c'Ha3@!h@ @S A@}(`X@j(4a`04 C/Dskصa9xoJ[W $; ˔0vyl{+ e)_bֻC*<9Aq>DK0C$٢+6)P1I ATHQY1 =6T1QRKdj 6f*d6Jj $_֑`JSXdu%x&̩`Ol/~#=-+{n̅dq^e|4KSq@ s%9XIrJwE\JݎvApiQ\QQrGHOJڔW(1d r5m ڕ(Zޚ8DCHb MjjQ ҴM"+f+[[5-eΐ-\i'&!VޝoDSOFʅYt Z^v;n~j_m,'3COԖD v9=qa[ _ ]+L7q\Д%Msz?zkFgCJdxk䑔r29I 0NrpzҒvDN?!#zSi{WRWN5р+'wKX9=e :H#Sl͌LT؃U4_KlciOsQͱnNzT8KAtvdIψUkmR xY!O*2z[\_[FqۑilrV2{XHx=yigZҌj\׭wbnь5㲐>Vz_B, "d+k8YdS Z .W!\WL'}J>ԭcUAiisX`V|ñ;1C}080<s! |'CP!H@X+E+ՕJ,۸DXjC2ç=1x  sPOv9aH ( !;( )XA04 @ ;((i(6䐱pFxkٱJxD׮j`H%*p{:wGUїddH/?ո9}Ey:Nrpq匉%),)F Sqzu P#VnCБC0'VraqB*[@:ʹbf (PٛdcP (!ッTH)/| #&v2m/lqxa+ѣ\v-N2ђ[0 r EZ\GcДćw9-i!'<''vI!@qZF =k%k([ &HjBj=+D4։kK|> vl~?3EM u-k1W^=(yJ1CRKcTÒC3uV$he;y 'g=HB10`ZLY2Ŧ$*TV@y=Y)jjaѸB29=Tىi>Z`YQ8=,>-=$cpy] $r b_֕MrTNk@3=s1_rj!@UbJ}k&DNLTᑊ sNY!'&d$U*RHA¸~[2N:P =ZAaHJcTllp='!RA9ȱ (Q%}V5)'ҰeV9OokTg=\R>m^kՎ /vnl`ƱacD4V jckٔ6wֻx aּ^ E1 OY٢C jySNTD8Rn7DѝӚ%NWqEb\)݌g?mS2n*BKT,1`J9+e}ΜʗKG(p]V2ׁTy+w2,(*+XɏE9CRbeKJF2c}v>u%b2x"pԕSTqH($OzP8l]T-i Po$~"WjƳ3 0sŵ𝲚F6(-K<ץC5ܒAeZ׌ΨU*kt͓sz w@ oΐ P1T)z 88ښv-F9vힿJͧZcʕ9Qӑ=Dȃɥav{ƬHflBrJ 3.:ʾtq̮(8ҕc]s*nW3o#x)2F=;XqH<@. ϥ44a8+ )RwzqLNh 4ds)XwV0P@@(L7;g"^bqRu@ 1@23ڀjd'V.4uF8n*P@c~;1! +tѹF)`EsЄ :cc4;sHhkT$kɭJDlkDHwVi;b$" qCEX$Ȳ cXJ.>}MX'9Q>)TtJ[Q[t@N1Wh;gANȤ$[i7OQ:qT:;=N+%C^|Jly5pܟ22_^ƮW 0 xe16kRSWC+BƞaFPk:ԄQ5$iBժj.8q8#sU֨,8DFMeiئjN&N r=+r#zjL4;r RHl;ZB߆S))\rgP(Y`:V0dw0mng>pnHU4iamȸʞ8#.Fʨ8Ks9+lm!Cޜtr5(ݑJ` q. IPy,A%j +yOvZw9XWF&9aI1L#:E12$+nА7'+E&#%ԉX C(tl يȦI0:4rpCD"n[YvdK2̴e[OAz\ 'ĐtQދdVGe4\w'l">a8V>t2dldt?CSqrEp6{O,p dEo(kAF"q޼EtDUH#;خT1NgR[+/9kdE!fz)+v sC/"et3uຒC5,d|w?ೕ.uՔ2Y",W5 mvgwOʄ&BrF>|-,%GQSЖ9~v,="I mp9SC3r,8#ZV0yCީ# Q3S Q!s(3rB@ǨW$aMJ̸Tq"VhgR4E!r=kr4;ڥ1\CL[ SQc}b}mP2џE#rVcVD2;e320U c= cUE+:CoĂ&t)`{zҧ5tUēr$!b{[- z5)hFS%gg?ތ 8NG Se )xS>ZfѸY9_QPtfKCQǡ ,M Z *TgҚJ{JۥDЮE$+#erS+2ra\? И#8$;hQ!r{viFx6nh\iO` 0ˁtdеxw cp}j.2)0*㪟i\D 3&>Rh2d6fU'+CG; 7܍XUBȖYBkw檭U4R\ƩQ+$HM#TmZ{Y FjfR;RSq#Z}Y-'3iBz#?jTYMxCYT4zڶXE(xz+qi~5m̥"e'(J)Hiwq&@G?(?Ռ]IRIrIm;2s^in2ZALFLS>=)*rC G-<|x\ZV-J"̪7da\}1oC*}w^9$F u2VQZ$!EhHI =(pL|*z>fWd38cR84]xDmBp bɣ8 a*]Fp*3_H륅r3Dh -ۙNlcj0;iЄv(3ڷaj 9{} cV6'd?h9 qkɯ MV򘵴yHOW*mKخrK"Pzܐ,jKR%&2DR,ڝEU KUtiГ$+m t#w")Lʖy9ShM1$JL?>6;G('w>.% HT `(ދ$a 8/m#i\Q`sE -X(  @@ LA@1U??!:P{f7tpUᔌ`UJƑ,rm5<{6ŔE2mab+'R̵3䉣l0{tꩫtZgXF?zT7r$g k2-e WЊL}Ɨؖv$qI& $*=9)R CZG2s`PCG[JWy\7\2vYHG8ێ1U$sNcQȫs $vsmZ~"[ oj,eb0I麚n4ɑ rb(;IXJJ B\Ѭ]̶,.9oQj[lħ>T-FkRx H JZ1hP1WLP[i&kd%jkT4!R\Lu{)1[j;%Yj"#f""ciji'>ƝSK!3HҒ,XhTU@Ue Q )دASt<%z69JN]f?('*۱Wh%P€԰ ɞL9vqq:Vi_bZJQp9r`T=pT3qNxrTu1OA X9 p3ֶpҩ¶{W3J6+2bʛT4 ʞtAxRɷ)J!bTnil1[i n>Th)g1+LjVu2AcB( ܚ|%VnR"'һtHRz(r 4: 2~Uw[4r޴-:E2l;̇ns3OTZCb;sW"L =8f2ci FDsO#V;.)JR.vLۍ.ImT#] IYH0H8eaҍYAD=ƥ[X,neWM,W4ΫKb5=Zeܐ8袺爥cdjZ-$I'@?yup}JZ=ځɻ$U g)bp kx]r"U!Scǝ7NJꎆlQZZb @!m$)$Dj-"&㏥ZDI#5iE"H>gLݑERGDb@iI[?ߕGֹg.{b)og rq:b]X{E,f&bG0Y:)-bvIw+=LI BM5rZݨl !Pr{0"5R"{OgrֲNT؊V֝Gtw&HKwXlea= |v/ *cD=HzZȓ&hQ_ުpwFMzLIk r|Ļrk>g~c)42CqKSn"#(V.6=v W}L]3xS>XG<{QasWapuQbݒvx^]D2eTHrнz"qB71.PJvb=I6x2F߳늭*iY8ϣ)s?Nkӗ=1J=Ym$v5SDm˩ X,>xp{V3N*Fi`?:.NZmX< IZ1 RkH&H9E$DƩLb$6mM-}H<U #XݙP?.d#FzsTR#f d"3d7#=*CXqL L"l Bk90jc'm#U5icFT=l:ddzבV +{"kЅ^eis ?ҹjB=a|l1srlsڥ U{6C$߈MS]C \cqϽm=n;oBk_dO-Ȯdup+H{a $=vҝ{¨ݞ3})lg$5$PpTL`i 9 @MJp5Ė9Up}j*B54Ԛ:7W02'>7=P}eUMy{hL +t\e]FlhBeS*ϙF)`2XHIH +td7Xʲ_M,ecZVd0Kc?1FbIҰd Cf2$QRbA\7EiN6K=k谹$5fxhQ^wG;PljhRE"&5hFDM`T∙jt"'ϥZ7 qϡF ªfRGUi]vC-j̱+0?=H#0[kb#Ҵ޹ I0HPkl,>;%/=cUFCji%p6*aCwfn.uy_ 2hlq]9!Sq8=hUVPؠgo͸>o)X  !(P@P0P4b 1ހ8@ PPZ/mYa1++aecx}zpMN-1'֓ -42qާEt)RC.n.HDyRN?F.*q[!G教w1M[ʅU鷊MJ%\>2Tg8)3"_-?+V:=O6tY\WSis-8 "1hVV4M;JW=AB۹7IڥW'8\x 0}$qO"FO.:g'3r#3c?Jj{f45ܣ1)??8c&I.7/#wTP?Υb5׿tӣ9-̚#AvtZŒZz)h|ߎq\ҋ9eJ6U~t*c¥*6ocWNЇ6$11OCR8;nËg 7鎕´y+~"bK.'C\(NkdE!e_F)1~zqq޻!^#QC, Y\W97RH!@qԳZqzĴ:gC^Rhi tEZ1Hc hHi8٫THR)"&5Fi gF?4.Ƀnezu A[YC]*$ܷJsDr1CQKv\愍RqTHf1{f)Li \1 zd+2Y@Ҹ 5~%'4'ʲrJtw`;{Unn<"yp@幮sP.pdN=EhT}(%&)$؄֋̗$Ү)+*gMyqltL5r ڹ.!ͮwEo5NQ]J0ԘF T}Cy渉"y AcsAuX֌_ƛGNy);{4 |%\v.W Pgd _+8P 0#"yV2l|vJ',yj]iȖɤF3ݫ;&B#8ڙ7b6l:~5qSU{Iw)rxc]sjNOS;cŹdpG Ҝ'ٍM]h! W:v{ZԞ?gzڢPV9Eُ+"BuscsOMDIxYGU)5ݚԙ  = l>Vg'4!ʞ5JRj3"G'I+jƩYXu̢`%h0:p+ԕ8+rNW' lbE*,n#POcHr(&h2j)Wtݤ9Kbd^--{ &Z$1(c"!c"#&ŤFƝHZEF$ZDLNW׮zSz3XΚU3gֱjTZIϖ6VE)"鄔2:#7:F=Dm1Vc9;zL MlE ݈CcOJj)ðPdt#"n6u%H>(Đ vu+ v@@8=kɜcB7p;['h+صe]{we?x*LQ"Dp/eqc]?kďj|+۶/rZH*%Yb%mVf2cHb#XFi yNKw)BxAC\OBZ@ F# i dQ"29$W ZO6!0+hBC-ٮx6Aҵ[ԖK4gژOSod*}2|mv憒=縳^?ސ ESzH i&v<Ek:Hڕyz6GxgC'p=V!Tr{C7s^{M˱'ڱ0r&Tap9(୍Mj68\}kYɩ6!bGA]Py1g.rlZ"QvHdOyբ UrxFDlKFT ޤvL"17ti3"`qZX$R\ǎj65Ey(Z$iÁ"}ktFyK3sM \'ֹ,qԴ1R1: Y+Fˑ&Q@vU-@ P|w6In~toP@ v3@ 1Fh ȑȊ$1@ p,W0@s@@XyqThp#hĻS>K:VȞ+?J9rWHeP>;gwڴk+jW*2xl%LAL5`&=k19F5>-ɱ::[ETjh98 E JR!a9I֤LAsT5' 7 oM'#E,ZY&:n|+Us8IH\ҹ'#_~574ta 4Z$f<1Lktkʦ>k nf.[G>ǟV$׺=amsǭQ]'+cRBVDL41RBFұ\XUIUcO:aD[ }z$BNգ(5h"'Z5HG*1Virq[E"Z A7 rU' cI<㌞6#Z̀27qΓ*,hTtH Hb@% n~_JI$I@ Ps1)@ @@P@ Ha@Pހ bS$t)A\Ji 4R Qt*(WcֹnXO\!&'1UһcEZb.V8ק(J0]rcY2S0_$+8s3U'a8.( vjqEcVo9]dnQ}TԎ<_nb+x^0`\1J̛̳γK&Qۆ^?:)'O ?Vqȃcܨ;^hG}<#COk9ބddcȓA֪2g4I*I֭\S3#ޢڋ۱ PsIpz 9?1@\q` sSNnM.J]KWt*F喌Qy2|a'qrŦ*2;v5RqĀFAw9BdY=9r}i)A" Zz& qCT؍h 后JVпI $K89T]ğ/!avgOc"w͟d)cBZORAD ֩36woҢ(b(+^sI]lSwM{xjЫ9űIH"&5h"&5EDƩ"#fH"2iE cTh~yI ц'I?IO^N7PDMl?z3qBO{ז[Oc] {1LchjJԶId3;z CTƫ$`U93o5/CEᴷN#=};TZ8XI"߈koX02EZ9ّ1BǸ[cGu$ƒ''*ZƐG+E<:w\P lf o\Q2nqGlcTR!OƮƨkH{JV${<1^:}@Pd2= vӱw,Y| W-Hitdh,3mǮ_zy۵ h"CHGt=:O qԏO9Ir5jmh RXZ,hFy NW+U$ljllY;~SZF.:4t%BV'W,6R0kiQ~8<)t(-JeTUYU ~֪,W}GG'9sr9_Z"pm۩3)QWyzh1e۲P>t_Z{(+_٢KoOc]0|Ș۠C!BѾVDǨrm)ղ5=$X+e̊G;SU(TTw?7xd3v!*4}5,,K6k]p "X|D=zx|Lj1̮ڊH ZFR-1H߯H"6?a&*"Mhj1PĠAj4rcdM E7V2K.G]0Ʊm2^ÍMġ*\'OaW,>\+,l=Ժ`}Hrw~VݤTD9! yŠJNFaH`%\>QA 9Zb=G"($L|ϡPb2JM 6$HD,JF L͜-;պL"0U +d%wvN=6%SٳV 9})"2<Sw>=E&k [FE>ENYPv?jQ.QQr+YP.̚Qour?rA"t@f \m7` kH `O9s7*NOH$Y1=R4YOz@/MHz @ (uPPP@4P@ Z`dS<0T9 8oPqOƐހf,ǻJ(9p(h˷9hHOGqʭ(ނ=Yͧi5CPcA8ao Gc*{,e1i&'$x(F71S(5xLE@> -˖V5iK3$cV_ǣ};ZKC]:J|Y.7CFЭњ`-=M\Esn -֩TsZBImO 6WxH@F#I1't5J|]y+jHmhݛ/Z̤̻gs"~k1lwy;6{p}{U4e+Z+m`ण7+An%;u`J$9fj]ѓ<搆s1[ %8#t:JB2I?4;xYyRxˍzJ7m=HPC, $Q'һ ¼֏ods+,ə~N?aEkSJ N0IfayrBZ\o#yXS%&Ёn;o&K$j̥WLf$6*&=#jS| 9_l,A KW\  %FJ ѾC "|, qOF)ӳv&,_nzySIEۡ*-1 R6%ϸZ~GKsGmQ$g'ZhbF8l"&cVDd5Hc!<=s;$FFF1ǿze5z"0)i Ʃ'R(צѸVnw+u"ywJY|c£e؅2ɄјZ(+'ӜڕŒ6V`x?J'ܹsݖpG[%#6-FM:}:ӳЋN/a=EfՂ&SqGzF'2?1av`ǐh-Muo X$&f}T%ԗ62af Au܀߯5\JR90LR!kxEarfM-,82m9͕b9hb8cOOO¢ܤNRkIܩl6CVdbB띶F͸al4)1 ͓TG_;(ܜjwڔq*yh?rB݉u 1bB w 6k] -*IU%xsȎRԖ=E"~! dW.Tcʵ6Ӑ;nJOd(gɖ݇,r}E'&F! oC*,W;xԖ?ʲ[J$T9Y?Eֆ 35Q(HzK~ ;W[G5|"($S221Grfys)"a»hBۜu$"!$jiǺ<Ϡ]9XBLAVQL 0܎jhR-"$'Ҫ5J*"6ARwj.Ł%qB7.fLZF#+Őv{Zfi%%Q\x =uTg~2bB@q\.?v_bղcPXzn¸ 29x nce\,|&B$c e+0& R49?\rLR4Pڀր (HPiR(րE8IޘnG0HP3()rO  {@q):S@@)@ ]FIl'!W89ISpiM\⥉pg4G(qمmQJ8sNaԱa[py+OޓgU)E\8uK u[ B=y4tjSqm bcWm ̱LU]9IB?r^߇4kڊ*I.#qa~j{Ӓy\m$ 2ZڹNlmSĶ3" {`|/4*SWAEsSg+u"#Mr_pC2 篸R%7z%B^ۤ5F* TIV]^;XG/"Hەމ`P1r|[~(ݖvnZ7|傻Q<4zߘǥ6+%PN~y3Gz7WE:ۙJcAItQ)v ̀ qҲqݻ+h ,!Opjw2B%A8)90RFG_z:I }+UG0F;n RH\Ö @G 7 JC%I*=(>R"PZ0cQ]M$K6p>bSh"@p }5;ErRpA9*=cTndC@%S''( Яw"q=ԓH@'1C\͓r"[Zqgl+e]\\M'N~Q}i+Y-Yv +o%fl} d%ՉHVgmB{6ݒIm"琒J7 V~viwbחx"/CP^y%R^B>sPޥ$_َ6e+Y?N+NhROBͥRZ>]/%fasOMy[(_eMђFQ{=*cX|'z)4۸md(jUPLcB)"&gqh">hv RvvH1mľ1VuEX`,cWo> A(v H)e#=朋fMPyjxdG4!wk^m!'tƣ%(i#X\0`u/t鋾ESa\ HPcgn)bɷ9_rԒ(N9@ @ @ w*c(@j R3׊`!0~ @XQyw^ҘN@-s@ @ q@hF]rA9(:ly:{ގ#P)@$pT"M?~;Wܩ6ga1-擹}y=jcjpּ6E ] |3}8jrhbX45-m"\p%F߀O穦2n&1^K{U$M9x7(:rȈ[=$i#NOƜm{lɩR\2tMd $"OTL #<՝Kt2sȁFxOZB! n;S:"{SszU6)s~[B,i۵©S~ K}'1VUI8={u5Hi> l} Rw*xHΟ<אZZ[w9DY#7)J`}v%АW:iYӣ)+t{8JZ&(zֿḪ%7?ƴ@␘Ih8'֩sKQUm"20+BadA˚9nRF-,;ʤwHmOV>QdV.rp̊T_G}o@e?u׀ZƍiQv:Rb&rǭ{j+Y$IpN8V3d[= ^cySm9S@*-EaoDROYʬb&] qiw@av*Q8zJ=7k7V% ^t5#hU$7 |p{ |cmOҵs$2%l@9'Nsv3#TH ?J "/1?-hvJs?{4;WjN>O\Ϡ #p2Jʘ8cnO52R{Gs5cF;خI<|W rWq F+"g7"5\#R&OظZ]KpUindJ_NPIFLMlQjv[>T*W., $%aXsb遍eS/ 1ͫ-H !RXd1n. (|zp?hW4!{f^#b֊\U-wFf\);O_ɊNSnxn=O$:\%fX*O dWfPy{ޘ{Tڒ"!Ha^|*keScx;C?cWtm%miZ1pӑÏC\𓏼r/ d$Nnc)Xm[K0/=z1P78kjqMl1CFF΃OJ Ù`TQIpn+gNZNC_;Vh;\ *?c٫Z9OCBD|?)! EHjkV!~t1xb ZF;*wpGݏa@ `}mbwRe<#,2[()TqS#6+$`bpYh9}0K-h?VJ*ɘqS[$r5ijq?EN橻4@`>`=UtKN$0G9kDgȕ"?/9Qq+)fkWܤK<0\ ӊ)$Woj#DFO;>KlzD;sjYKfeg:U6F%4HmuuS3Ju'GRiUA٣N&7GFӫҫ`q'8Ncd܄7֙B6S!+ AHpFE v=cVVf`?^c㬵~NcM>HEdxf*8T9b` kS$lǻJ y溷f^j27rĢ(ʕa { ^;#uJ(I)",8Lc 0=A4J0+M 2 2=5ա`UDѫ;ـpǧҹhYܾdLdqsHX< >0!}6YIVEcH\2S7 yq$CHFDҞ|W@GJ*o_p#_\2=4*n?tIo?Ta8r+& 22v>(`Mm*rc'q{GQ&,X8BNY+3 @=ot.,BV 6bY'z4Fw2ݩ|Ș93!lh% b7s0}[<鲽wi=#!K6l}8!qB=*:e3<_ |?R}]5R"i W2#Ia$nVa#mr .ƌ7љE80ǒ ~g3K= +W[ L HVjCsw4?cc\t1U(?taS}aW0xu)81º̅A@41DǎhJ!s7]ю Ԝ-s(XrzUŝ0nᕏlU`uݥPeW^2OC[(\ϝoج\g5z Jp 5-x`1Cҹ݉1xc*E[@ZQF;g*~7@B'sJ]@UKnC2pLn;sS{J⡈AmE#YJJ+R98aR "R0hP({P?:@)PqڀhKa NV]Sq=r-)\ VR[P@ @i ;P)}(4SA#1 6 (m8<(zPv @ @ )vu( @=]&|3 T4v=*uTq^3mؑzIЉak3)C+###WEDo;RKaO)'?xRЭjs0_iէRzuhT-P[a<&)w&b[-n##ːuhHJ)jlYq$~e$0*#юGGɞ59.(g*O[)Cv]ќ˰_x ZҥgQْ$7I 0'*R!*GjӖ5U*V9Tr7 v"c=*]tT#?^JV.=\\ (V&)mɌZ΂~aN~S}f`bdp~!\n}yOOcZ$kNG l\:Kr>HV\В+hbB"V%Hu\  [(Fe81+dRo,+Dl犥n\EGQ)u ԙtg(|XW]V0q)Ob״{hWV]NF:#R?rykxat: t䱭7- vH?t̪֒R6gG|ў}EyKCqIOU07ܑѯLj7*Ef4G8HάR-(iLq7mbqycjFR[RD%6\|FָPh˕ñv+98@;+ϕ&[^f5\~BF'%:T6a0,s$lI 5h܏hu@S&?F~keE bI#B<Ҵi!6QyFc)Xr+ H0FM+p #>r[#m_ֺlܶ%,Gyy}Id2LZb~QM$; !P[9$ ʲ;^9~9p(=vN΀"uǍ:}2{qr8Rx$?cR6V3n!xdFA~8jv#1r|:ҝS9ӾZ$#R=IbCRTe5v\.=6i", K4֊e(bO#l-;'Tʬ)dώd zL棰9Or"[)'pl..\֝tl'EU1]ǧ!fUFcu &Gm9qǩ^Q)}1C@$lB>7)8bUu3\\ˎǃY_BH#3J#R)1i3yʳwEϨ9IY[6YWģYKJr kYA%bFV6@zW:c;Gqӵa89%%9 澃{ju[릞Zb aisѪ4DLVDLFyAIuJz4ΘŦ#ȋ]@Q}Έ]d Çox㚴į3'nj5Q%@xMR30BSc#Dȩ)t+hrEdclyC8F?R+baa1}2Ea) v VnHPr;ڹvBQɌs b..ɀC!AUVj-j $\y"P,##wnk6bv%;jP{goJCCCAPa,.!xs@ p();P`=OA@ hH+Ҁ϶((( PRP( PH@ A@-&(P7EVd`7)=!. 9Tex?᎘踣$P? Cc'Jޕ::=YYE<`z72d2˜w,={UFsSϨ5-c6c_W*2SoPڹcgaCwފUgFVoVd=K,R6':rᇧm5,Y]PG1Qp: ҶFĴ)7-u1a\oOz^BZ c?.6{U .V+w AuӒ:wspwk8rLdqkH);JzDI?,Һ^f_W?_idOP$XžcHqHJ$a${Zԑ#Ȧ(  A}) njq=&IO1*:@KScƌ X@'D'bի@TΌ8#ֹ*Skdhq@Wg΀a%KyU՞G!UŘe&y纂8#X' c󩓐w"RMͺ6>!R*p15ϰ !fIT0ޝn |ȮZvGUJܷkY[r˸tQ٘Ų]7Dxfid;a,` z>d$rz}Si .S7d訇(^M3ov=IHc&D16pv5l*5l._ GMxZOUtzkq[X} $ ڽ."QVzϭN/aAziq)* D ҭ3Ti7,@G'I˱PP,dme<3`N֍Y[2q:(s~JIܥ 1,9a?ҷZvŢ)8BKz9R=*Ѫ b)*(qӚ(L6[m{R*3s;p iǥ>R+А}AYȒM)Faɏ qdfq׿dnɝdH:f 8r0t#֐(dh9FэpcHv"9ebTe@Trg0D8 yz~5Vܡ0 pR7cE\)䊐!,pTuqF{-?ZM,qRP:b4ڀƀ ;@ @cqPO8)-q<R0 (@V cP(9(@ J&1XV#[+/=-ΪɷI#?2k֫N5W,OÇOJ~ ,=&ǽ.2"e'kU+HTe&EXbDWmNHQ\6h|:;wmF: C!hZblemўVim:H:,C {jn΢z2ȻYJ3+ӈ1FO[Z5cm2Lsڹ3HldMtƢJ 0MN=X .\O4W@XNqc]AI'TQ:RHbBK_<Ɯv-A5҉6*n$W Mj ltCޢ;L7$u8?ɧyO7=Ҳ7'׸-l%FM8e@Ӹ=A&]88=G #= $OuQ BHH>½*z#Jq e{^Tmkd]j{#ԥ$WGy=X[(%5{MΥsڹksAT{ȓFDۑ\]*%huk9֌7*+xg1|ʱx:#Q\I;bt+5JmTW+.I픀G֯J~=JUZvGCvpL!lb+0ְ!59 n:Sp$*H#J롋?`&Rdt^SWBh'*B:ⓥC#bY1,ǩN,4˶c,r퍻7EcNȕ2i/ngEc$ Z]q:J-ORGsڀĖ-{d{2$xՉU2ٳ''nد=*?sN-H.U"%#p8VTuFs)df *UDi3nø{vv.R:M#C97k'c5_߶Тke8|g ^u\~U4a0eGfjyzIZDHb#^US u!'w5&&1w% U)PRZ5+˫Ekt1QNZ U:]}uFW} hDM?CTZ#چtB=V"F?Y23m>ǥiu7YڼV5)),^-@ÑZF 6H)pOr8EV! ؅>t~AzDj@{t"$,Gacb*˟{$oj pE=3P'})T(F5X Ͱ$=35J! i#7 Fn94b&Tu>,qebu=(; :)yHΡd O58Efc C @ ހ `(>JQPG9t@\P<Yp'"v˱\9#¼N];۹i-a2}p99.F1h̴Q$,AkѭJ5ccKLc#ﯡ`凕D%`q0gPB7W 4d斅ds8WD&Zٺ?-vMJ'cXg'N=KuJĨ~r>Z­;ꎟaȯi Yd$ UMa mP"yIpȯ^jW\c)hҘ/xz\8t7CŅNW&>[IGp +[eef>2MW2Il5+WJ[Hx *zI8H #ІtX8Q s;d"H KӏSOe"N>UxTR_i 4$7`xKv,;VU'G̪|p?!^(:$Z[":[s/*{7(kcj5yC&?Nk q Q5ڧ][}՝=>Xn;Ʌ̱HQf^};ViEU}jU\qwRltRa#$GUІ1hQ&Ok0pÏ\cF9#yH#a'}4氐G˓59v IHEˠZIpĀ*uS-]ql!DF %;89~M!nIe2 aSRZ^\ 3rxǷYN7Aq,uҀ`)I5 -t9r,XtzLH?xǂzRrFX}) r6?L熦28*yq#n1[i\Hd^pM)C|\|Åpe:VF\PI;|їY:rhU TW 8kͣ# Q85g}ܘo:uJ/+J <+CЇ"ǞHiJAaN>LL `8|zxP#=Gdr> Cw1mBOh %=haX%SH\S /S@i@֖6 Z⩚SԛVM07_ڼYl.$q4~Uq9O{9z֔3v1 WF&Ey\U ޻Wo]Q7qEjV) VEP!AHiLV\qL@0CL*zjFѱ sc}H})ꆄL,z皤uE g?aVrYq 9դhZNdlR6NR2g lEsժcLq!d. *BBHPXNV0NkN42kH$ÊwFgUVl8EbuD*:ߎuE*Y ==r++ Nףn+0\gLМb3X{[>Q\8 ,hi\gk}:m֢8̚ Hu@#qh1'' Lڀ}hz!9P@- 9Ll) uxu(-+H#>#y֐bsL(;R `)3liPH:PAL@4i 'ӽ03P!h^+l SN6s֘)S=ǵ}N_{U=M&Pmr{Wv"k.I()EqG|~#*28j'+&4Ni>Ra}N~׹[)^2dsVpyxrIf 3zuu+p OJ/Dgur ~`}ɮp}30-rO?R'(ʰI\?poRQR;=K21e=4n{"Fm[F37=?PT_F$Rxe=EZHl>&0 .Pw{{WO@!@XR07p3w9-72ma<&ZP]wJXkXG49kdɥ::^:2BHm.lnd3ca s[R3CpyQkԥr g/=:WdVWzu[q(!VZ  ih)EaE14v*Oo-OquUʮ K&L 2ʞh]yfZl^@>FavQQNB8J"Px4IJ'YJ䱑F\s HBd*={9\]}y8ʎ{ E!(<{Y0,Mwha& -$6##m+{,mrzxeP5Įp`S'd뿲.TEsm4`6>JƱƚ%KY&wOУ&0h1Q{)I8t!f^#?MMi2Yc=K}EmnR$S׮>*|\e@FFq߭c@ )=zP:Ҁq ( !-#)!0u€O!@wt4Q} P1;( s۹[#0;_.t(B$@@ 's:͔V-+pXkIjoJW+Mi8`>SzEU(RS^gJ`{gzeMƯSvce9#ֳGI `ǨTB;hȊ⟦0WZn:Go b8Xj^s݄%2x Gl'ybd7_")*,6*,ơ'*㌱0*:!Xd8.wjϧhj?%&Pʽ:Y?H(. J>$>)Jɹ@pƺ"Ց w$]?\p GVg2X!|N8>ƼF|Ԧ709SYi)Ƣ%K` "G[-NTt{ne3D)Bڡa.]HyaQWF̹kDgԏn, j}+@~SUė \*{Tr+'#Q*Q7f@o#,VOVb H<va1wveiEmKmS]П3"kt]6eCմp{W0~얆SRǢbBXP+Q~OP9doYJW) =JG8T40;գDB\kDhwq F"uћ*4nQks25B,hdpOIVy\*gJ擊*Fgg t;׷`-, +qڲYKv2MVi[kɡf rsсLHnY%v$+HW^$l{쁱tQ(FTzuzGa؏(69qgc,CXb{n=+ ˔##!G[1RRvN3$")R4U~l&dGqJDIWfٴQ,d *oqؙao/ |]:FkTbHx-8+]ʤ*SΛn&oYνe(-YjkyrWϜ"`W\1"jn]m` ø'*:M٢c8ǥpr$A2vm*B~lO:C;8JN}?:ʹ4C~'a~<2/q$Pc>_!0I#<;G oՑ+d}3T@+qљ/E\dJtݭcpEoje @.hp=GLC}}ipH,f(<0Q(0Gj@ސpCfPGcLGn&v+!^5aX03ίr]'wedMBp|Hh ޱ:`JW3`^î)$|܊WСz2p~C >z(,W8hHzSZCHR"YJ7ب5$3J%@1ȩl(.:Y$"OCe=6"nCY-i,۷RzEc텤N2)e8a?ZNR@=]tSGOMm&Y\'DuG5:t1FdM#C1Uz"㟧5UK9͖_v,GWR\Kl'k`P֣fWBYJ7J6VSv 9am9=d«Zh^#P8-܁c-Ni(-J{1&_>o"S]RUB0vuۑ鞿'$~,0@(JpXΡ'p eU°N?KaF-(mkv}B 4w#ʢ ;pVˬK ta5cM1zhԚZ'rOŨΡoiIT{QTfXeLۊ֜p-YBiFoA~qKb1QN$]l .;t5VD--_ ԴdŧVL\$'+*лb,yS,q+͕5@z~c>W"A㒵"Ce~=? W*oV-H(zU*o5W*7${cDZd wGn{zT;" gA$asTr2OH <ZYI-dR Blp}) NN3ZDzŘD%BX*jf8wQq+)'bֶַ11 bFl``8`3p7#s^f5rt01O6sZG($CXWc$Kc_WYb``qb}XgR11KW*E8y=e*}SA,sw9Mei3:(vg&;]Anb;px&=w$8/d BGG隩mmaYTȫ*cO+5t:8!c%U(FRr-GC>*%Z"h6=}9lYQYϙ%_•F遹N?+RbH9qȠB?%P=֛}q[0~l22fnQzPJ*`fbv0}F(BsEM<` B(cӭ wb3N QpOSJ~d J."XhǷҋl) W`½ogw(!yIUMC xVyX$t\bH a޾gAҕʛkǛ+VxboU*RF՚_Ik*8?mobexy!Za,==xmbw{wn>+wNO75o!"֐m,x?R9)!{X>$ldbܔаH\ֆC9&954TWc@Wu QgVH?Ƣhf&EGsǵyS\̮Q=T,3[|$ F9b}g֗!HݥfyO\r *NshhUfEe0֤ ?#x۟qHh{H0~$R.Ga{2-,K8r'á i㽻 -x.bM6K;3pӾ!iR:w ۱fG6mT H?@HbHZHP[] y$ t4)KUЫ}\+rW<jSgk:NE %03w_W1۲OR)y$So)ʮO8&&/$H^l`HF=Mrw&E@SH~xI7mƴ{CNr<+ #b)mlq"9ǥu!bUix]:+I؟U^)ӦӁӥm+JPn=J+r돹j9}CidqEY"R CLhFښFZ)1F6pN?gDbFFOj&d,i[r&%:t^i۬)9V?+~γox¿k.M{ gNRWJ0ñ{,͞7|t ۻ=X'ȒyT_!vB#8b+Gb6"3#F#B:3Y4#@N:ISx^.eGPqO\6M1#rXdvB}@4}(!a zP1ц|]ڪl8 +S dܽʠfvk;F#]1*C;s֮SV5Hhn 2[W<%ԗR(aZs Ӛgxur2ZOg4nUz9ѱ*;vr+\.v*;xmk&.Y܂ߗqB;JznA?֪Q!ky!çS=P.YAv DJKW֕ J)2Y5mNP2DwB >#+r>*,1>R)y@Av0 `>9)RH#@3ǩژ/{w@J(u"e2BY<Z$KdVDڤ&N3ڪ`HlcsT42G2oIGE&j-Yv0OW:n'yEȁ#+V> PJ۲wc9K m׵t>@.195VcR#HS$dJ倣? n6؍SU$S!o'~SoX]m#ѣ(Mk';S=%Z(;i#PHQ g*Ni⯰l|LAGu$M%7fP@Tnl}M#ZxYTzӪ4 L 'Ja7Lrя-G:SC IjRe1W b<㺟QQJr4IWNw FpI]R͵Jʯ+>u^$uм+&QF6CcWDI9}X3N͜9CqyilpS5npԙs**W);@tC tX)/fjSVC" =8mNPZ(I$`mh;M- rmio7h%hʔ'c8(u&$Ek)5Y-噻`SnVBlOz}6xTd52iF5L%2ZMĞ" X"Z*n++Dyn+mh(Z'Mh6WERͬ`i PwуR'Ό*9'uE}os ,E]Zue-U!ScZH~E^2qzw#>k$yQOִijow+Sret2ym+\E."|AVqYTYF}G+>Mɳ8b{dP! $y/hNKI db@Zդff>Sq^5J0m8aXil֖玌;v#sP0fPqM;MGy;xg%L:kFܯr[jW!T)$t3}VVn,R]FTyf@3=@JcF5fɡbA#`Lڝ4v]<l^{dc?K4Gזw7PK# ojecȭԮkih]/C t[-i1s4/kg4s7Gog{jIбtɹkdO'ͷN(vw#k4Ksx*rD/y1D*έFcwoPvhYXgd/N7{%x:UoR"تwc\2Pz"_tX޻+x`GziJ?3I,n%S<9'=*ܟf!ozW$S; k AS8CVq[҂6)_9kԥ&Ʊ=dN'$VbH}OCϨ4zBg;wTH( ( 1' ?#M#Dg;W$S-h(7槝\$3 R\mhN{7a)eCˮ+hG0ܨS g >.dcm) p*2׭nrUڗC9z{֑ve2ZGuU΃ 2 J9ffR.YlduؤƩҒǠBIÿyK:Fmn 1XM`ǧNyJr>G-H>7WK"*0*)(Ad(yYwu銙XQl˜՞=<hj㵶+wqH ГӶƱ* G*xp_³ihJ"q([Fl1CeOCQ.).d- Tp~~'մP;|dHDE$F(u!?Ľ O'a+`1;`y_ƕ$۟@->z1#ԬRRh pi 0h@\cb (Ҁ=G0oP+7RL.K.Tv )c5cbqi IP}A2H-P*;ga\HW#.: Qגh iʼZs ZM$ hÏjdl]^ ؐ]3ʟq>t̥7>9V@0l望 wv&I$4\O+-2P8#^+]!M-bA^B9d'#:7A=tF1^֚]d0!/(Ԝ{+RSަJ.]Bid~fG5TԗNW˫}YVZljN],[ٸ~r䣜c׎qFI ƄYK`,L$>z="N쏥TJ>Q۰ Qp8%-u"Q)$eRn*4e-bk*!|8 \(sZ{UEclyOcVT{hrwx5M#xHR*0wXې6,Nĭr#gFO[ͱB1bFq{ӓݘ֭ ib(Xș\NYwv:WZxYo ;G `{ |IdM=IT"fVL]]aEzs J-ʗB{4\ )b\lWLya>W![Llи3*}5[Xtu)bhs;.IAƕ?bΜ]5+G!XnOm{Uե=bƳ19.yHqI$'+QmfrvLUi&Dӊf"hwI< R;2xGItD$WOo~@ >jTswjάKflp=848CЩ9=s]*(%=z5Dadf<1$c'2N9YMaq\bj1Aʓ:f"B]NFOЎƻb\obkxG(Y8ij[0^LcfOJ  }N*RQOȀCK1@8LLgjKTY`۩kTDTnr%żqF۝?#WڧBm2)P: SEr' 0=f7|a31'MŎblvI PEV+Ucd# |dz}k t߳1$T ]W}* \c\.J;*2!IUؑGsR9J:g5-I8*8V!g<$QA1[WODJ YVgoCIL°II *=VKN9Zgc|(S^筇︒Y6y1N5frI¤$gF]NAJT()GRƥ~ڋ")HܽO֦JbGq6+|ROeƍޭoox%&bL·}kRZLsM%-[HSk`-kHw:Jw(IyZY]SfՔ/-L=zvMFI x⹍ÙX/sHV6 kBy"tgbQXgzNV4?O)P~t95`\zw+]">TSvƖxXv\1b)RA= Jiy_ǽ;d\pzh.DW'#ɢ*@- @@ @GL~T@udb0GQ@8 .}!4NI֝ lIScD%z țLfM"Qv-w'XeEwC8 sYݢ ȸ?3qZԤkOQ~%W'+҇ZLʤ!}F([T<(KGȐ| )4dD8K)}eHm0ʛاW+;]tYWIRs%42#FD-4U,;Rc!#{\Bk hp0FCTᭇwۻ#xXc(VOB' F@뚫2zcm%<֝u]5J/ؙmB>^4l|D)zk:xTZQ[!3 =-AZn+ѲS0WOW 9ޚٞuL}׺]MrQORTK'8E\#`VnR0ի;DG*{ vS*7i$.6N'5 D+Er4Dd.q,yzQZ/ .x1ok'?ht?^ Ynz\J([C5;x̌F@}MtN`|dWSQZFIN>qpeKl2G ƪq2k$b/<ڧɒ4"oJMh 蕊&3* qǭe*fR[4vXIXdoIKJQմuGFRe#HMI)I,BI}LB& hVUYZ"h-.'PD.~_jN 2zX;I0ӃB}AZU5mتk҄_gȖy{o4(9ǹXJvD 7SqZy-+GTc pK^*9dkK?±󞈍Gn0@jc?2-3eI4 hHtҏ/R@䰍 V]gXݪYyv%,CtYjtgy[Ahik,Ү\[r]Ij B,q`zM4 EKOIq4{9$;7uU6\JHHJqZLRUK67rNksovKV,Ľ+̤(+6dɐ{TIIb uFd+ӧ6!5c9r{ ("I!?ʺ#ϩ%ԀfhcK @ @a7ss>MXrn  jdFh_L6d}ΪQsB:Tш&;_:>j3rR/d+0ewttBjZOв5uIIhnH4U^ayyAµs&0049Q͹e![ڸװdTwoNh)~enݿ#W)&oKiHi}QWWY3KG{zn8 <8դ*4Dz3|:·MH$ieep0 }3ڰ ; 8;bdÕϷ e;SN±v+^ǻ+u;8v$hH֯}it!&KRvj,;5`G]G$E碟}{U%z/FPP@,>z[q#wGrz}(M#.DZAn0 5 i?͇¥@6>#E )b谅(Q drD3v)XsHa@ @O@W_?ۏ (՜Љ%I$b Ft=r~) TE98⁀;)R =hjC,ģc,F5,e*txa_E:%V3N.ɷa#{866r̎AqGf]-\v85ɊOٽT,sYӊ<'{3kG]ڸ;V{0\K!?`=7qN*E,&[[b@c=yq;F $)ܙJ%$yAt9fY;wQRLȒ3epU4_aG=UqZmʲ2<`N.4G,r*c<{$;_TM#BzzVs{+ Jv䫏̥6c Ա+ͩ ܑsrTƠZd,m&ϥzq9hk ^0W!gkh!bIՃT`uˀF9[^U]*o6쌩H5͌vKrwBQJk hԚx cc_fT̈8B8U(H@e!r)# 5 ! C@ ((0@-&21@z$ 1<֑Lh<7mWʗngRsc'^2CM1eIB,$hPMH#^F*J,1 b/BdO{.9 pGFZp Q\N ]pIgN5U_Bxh]ɽdVVWDӭ !6D}ϰ=z{e$aǥG1H, *2xJ%TR\r7"\ձM6E2 7/tUM8#PtywvHągZ'+ylo֋. ^=i4cOJZ~ fp8'UvDZn$#bg4^whL8萚 ]>Id@vr0Ƕ+8YI\ _I۹&qڹ9%v/g{oNmkg!'}1Ȯ:9qSv*jS$ùVuWajS&ܤHf99?CSvci +Qx5\k#1$$I>c{zTMT9Y7b157$F=) P~]94Ӄ@F+یL:{SH\vqR޻ m nM;d,8ڕc1fsJh z@ ((Z6ͥܖV 5Z%2vHNO!?0?tku- dhdE CMn4ɔwPXRX ԌFO֤f E_H=T`)%w}rkMـ\ÇujU)Ɲ`8e8e2]iGAηQb3} s F=`!c k6~^5re `1Z4JA;uO)j,(\ʠsRi7B% I­3-F$r5kSRC>N.de`8Y2=Ep%jg ӘhcԏZ4o8.[-Rh![y"WFz}yҲ5FTzz%?eQ z:W@ QpNтR M;t>lVynAJgoKTW'$sutDF¯#Rr>ldSK"fJKEb@Щ!ll`kjQV$5H-fM2lFIbH ZqW":Wu&+2˰|yM-ٟs@>X|DzqT1%w~HZBgqNrb+gwRũ4P; bBS@o *-D5F1nj͒#B:#Hdx0j\S["S$zVN-)oZqFkNȺ'rL(WN|ґӧjNgrNwgl~c T]xWQ/ʓ_ T[I GzYJ 9\=# 2k ӫ%TT,&lyH2e#laqT=Hmr?&x6or&|jh.tO5.(ps43F1(2Gd*&6Z?{RN۔aZ0H94mn%}"˨$KA0#%|AA"id@a_w?bީhZ]d\ƱnZi #i!U't#Qa1IFݽE 7f[D_m ̥ lK%rČ}kGȘɭ2!Vp%##?*̡F6,z4diA:lA$ٲvbFO>1B9RPNM0 HE>2A\EZ{͂JU)p[# ks<>!ȬЊR%U=ԁ"pNh89M H;æOZ¤:%pA=*RWbi؄cZ.tXL̾q\KO;{"ͭMelsk՗MGdA깮 bYv#Q;Zܽy%) &O# zT&DP[O4D5NZʬ"5-^٣ x#8TU6BbLT5Tk0I]0"SI]n3 2?R{l)\5P:\^ӱNC %Z6\G)fGR)g-7P&u-H`sqBFzԪJ=XF94l} yo1Y4->]?)]Ttf8YL@\?Zu-OV!"N^DgQm%+"FqGܰJl21Rn'9aF㫋~33*ӹ:lgNx sYPW1k}Hg)b5h',JPW8' bfCb)e+ < ]O융$9t׳-N2@z]9*1o}k=W=tӝ=L=vUv[L[ wP_,.[Xda/}}r.l$?x|~zgڟ"D68b "@#5Xr@ FAq؂??jMPeյl0ܡ[S?kXqj,sCf+t*ۀ?B1YR[#$ٔ\֤<|A)`tA櫉M[ăW5Ƣ1̌[Ǒ̤.*Ðdڸiͼ\LA|Nz4y^Jr+ i0zniV;9'W|#Tb*{փՎ(ٮ,?%ה'G\zS2΢V8gMJ\r=kUpwV*ɪtθPPE(Ȭփ䴮mv#Q,,{2OToѢ[!%Sqtp|/C'R0eZϘPof[imR݀r=?JRT#9Ÿy+ZKBRw&6$Fc⹤'$4ao$;2GM`dݎiT] ųJʬhRzkz^Lp$^|ړDbDڀ PM@qڪ*̗Pj,FuBR1F"R|٘^<73PݒRq]';fL}+'=H ]0Q،V9E @S 8P;#TZS"#Z>Z.tA! #E@8ޝq7ƃ>TrYk{ՙj'Jհ$prK0]я`]Uo V3 KOKW"MbRӋb,56#.2>^z2bv68bI,}Ҫ4!"i2r8eYjԞfHW 9'Vr)G.D"PΒ2>nMf+"K6r1Š˙PpKNX۝PЂ'1"c$U=#?ڛ%H9qSk j>  `*hN 'ktԌdJ%`ޢt Z6pxwș. x;>J!á:sIu_dY]>[ tR#v* $sSq^ON3HҸ'10!4J<hbfhOϑ@XQ-,1fQ󧌍sE"G+K+1rxuֹ'VR6ذTw=+&fr[B[vҝ~8cCv9!!R:2:rkBJ 2H=ׯBcpq21V-8Q^E cvCwEl]YJ= P #ǽC/4$#uOݓm2ˎ=@}+EwrF 'vP'"L/ZFo-$N0R@!0|H\Ҕn\&jlN򢟲+=gFKY AF8'(hQJ* QQ9&ն`!$u%%f<&:4jgf=qZҧʮz5q^Jcg,YAp1U&*"[x.sɮӎL*=+!]1I9RRwl|nJدsnF}wB[:Nk1'{Vh3{Hv|;Zp8$g̪%zMwo s^-^9U(O UR5Frӹ2+ʏᮯ<:hض=џҹeԢ3SD$BǯQL˛S4.K.zQ[)fz47)Cj[GBS7.3 5!pNN>T-\Bu12BM?sӢaHy]$22: t4R,ƿdfIrW>"U4l.,\kF({Jd9#3W6t{GV(Hv=&4o9kbl088c׎!MEPXHdO*7Lte"K@Їu 3+JXhIcNƖ]cTf0ppcJi sb'45MQ,}T!49pAyIUrlV>٬Ӹ4DhVdĜ` )a^k'P%_>ss)4I5(h>ʸ^޳fOFcGy ڴXxAʣ+N`,Ōk۲EAT?=V:Hw xA 侠iţ$Dq|H$(WaDiA\΂PfY 'P6`7ު׻Iou3\`ʆN}\Mn&0)y+zz֊ܫk# OJҥyN641ԧ49YEsμN1f>rE5*KsV]d HH-k;Fi[) INp{bc5=?U ;1]07F*<Hq)V;=N+h[-ΘRU,4,hsG]M9W4`&2\bd}*$Rh%qeyW1J7j'n<qz{U'bh]6rW3\SZD\KF)b*e,8;XWղص aWw=L(Sq1BWXNGx5&t4e 9a\\Ŋi%& #ϠrD$j 1PûՀuQr[$+ӥ91Hkc$SǽlS[رF9 k֌W#@Gj9gQ23hrqhP@% iu4cQƩڨ*@2)" K/ {v4ӱ*`1ڮM # 7Hd8TEYqH"c81[74QDڸ0<U*Qu))nnY~OG+t5rJNQup%Aa\A-\f t#~aa-;w\{ BQH#5+I /%]>9E4_leRxstf)86&~cILն,x]FjfXBmΛLGM0Bdsy~꣈SrI$tgtg+4v:l+ 0]=A&9c>QĽđP\#Rs[zO#n^EX F9?Z)QMIh$w3ڒ)$awsz~ӗ%SB1܈r[f:m^k{ЮHaKHW7'fv9J2Z[W|q?[*Ivh|R\ҒV# 59nllNREұhLeIa@KÁ]H‘֯h 'ӥ:tm8b}iIAEZR7h8?`sMǰFl;TwAj!zhLҐ@1J@JRQ2L*FH-!Fh2vIqo!>%Cϫ"uHsEZ1yq*yDpŎK6yTj8\,jsY1PTIZE\GZ1A0z"xNt5ѝ8zΜbM n1)ꌋsLLx=DZjihZc18&jJgFcl)gM7Sz}iʔ\tHEaӸ5D8䀊Q*i^OJv*66?J~`ۦBqV5a9'[PȮ*\>p45G)5wBnkX*kB;+lvV%9I%ͫVZGu ÒRd_\`uzβAc"XLjYtY~HG q6܆HֳzlH0:r)v X]pO3Tڑ1 ~fYR㶘дLyOZ.=20Z>SĺzHh(@YYJ lzT)/wbS,[Vߜc'֔eܦ6'}ljÃs]-(Yn4fX DA#XWe$@\Bx'ro$P08[Hf$9HI-c3>w .Mr8+&ۉL<.+[b,'|`+L5{ #44LoʧƓV*XgJW[0g4c4f.L^_ݻޥXxnZĸLyn|"}{i%;O̹:{xyى9 !PCFzŕr"P;0jlP OJ.#qPH) r1Z@3 ⸪bg5f|kRoq2E :nU9zVUUOo!S׹(P \`֪7+2f^J>&PvoC (x ާV2ٙ0T zSgCzzjG5j<c#*I*8Y++~􍧣.Y=Jglu^tiqRVT8Ud՛P>e tL [U"(TnۅsQ1ڸR2qlCGUSz459Dno۾\prdCx"aKPBI:n^MH8;XKgk%۔`?v3[&SQE̦9T9Skx-j\] nՃ)M/ʾc "!C@#nt$%Ay-;Z^=ehC`?xVNvdԭr%\C#ƲdW \0,$;ag->'VCm#ƇVĈdj @IVrq]IhQi,_?βx}Lejl:L[4`Ge}rovKeČv3l(vPf6j[ MiN7JӦfһa6·3c[Eɑ; V9f9 1nQ+簠A@P@OC#TQ UH`$I4cE!4΄rjZp =mJWEG"~U69= :QM۩5)]UI_^ߝH>cGENs97 ' J?\TJGs4lHr5X3ž_BD+)R}(%$)Ce6ʝּqzXp,ZW m9L{V}*,`1'M̐2JXQ%ɦ)"II&M ;OQ>j5%-$4E|=m*o1o9\ß?ưR̊QL#r^[GCM$Q[hiꑜ0,]JNL³csWov,1i1 ; 0Hӽ>RyZi#1SX.˳M,LMۨXQT+eGc;Tync޵>%-؀0Sg.Zt4ܛԁJ)#fv!oOa) PҌ9]"d;_k1) p0:g8bV:U QB*\ E.Y"#WQ("FL`U敺l,h `Wd:0V!PjOA$e ±8}>aKr\:InF޼$c*Kk̃o6c)~(!Lc$6Vd֔&in2o%mÜ+?1˝{NGdRz(Wŝhcd*%Fr1ҥVIjS zW*\[(-uTgv<,6 f7(1^I3x}[Un.+FE$9wIXH,xwQ^UG˃qҦs&cnXsfMn':5]:h$F_.Uc֪%%>cZ^=EpI%I )8B$)05g&!5FM95Q@SVY;ֱGi܊P@" h'ҙ"'GS:߾*DoFf֑F%+TEت&Y`qnwTKA1< $Eߐ5 Kv4^YdG-; `+9)g&!3Աn;ֽ8TSwpG!-Dv)A+ʫKcQ@ Nđ˟Vn@E9n,Fg5Z ZUBMw|8t`Ѕ`߇>k}(p+sht3徚gkXYWxǙc=Ӥsv~M@PSPf그8EUbA]B* cP4f6>`P+7x16,r[mZ<6o'\%Rۗdd7Hm6|dVj[FQv9or}GSrBqҺdq+g+98Ml3}jf$ʤ׽((&i='HCՊCh&IC-b轌q؆شChzMks=99ФݣK=EQHcjF!_K@;RY;ҵVJ/b0Azd_dod(TB"D}}j%$#A, sNQi\,A9CATr@LSrQpML"i )01@SXG)$֎RY"IlzCc"!EmH@%j Z12j2K"\v ø$C.:7t?YQ5tdpYe6c[ud-n uFTV<''?ٮ^>GP<ۚC: ݀rqJ4Fn"5{s#~.0CaI =>oZ%% )=7Tj鞄Fc`5rwM$1JPҨ{=4;qҺ^m",N0}kUB[-tf2%$W~uJU- Y&>IbExn\ 2?ZדWƒ -^^cc!eېpq”"RZAhAOZʃ5xUs2PJ|mrE]($0#" Z: N>wǨimM8Hwvs+iTrIGzԕ8j!Ab6\ZQb"OC^$J2`+Bi1aYʖaC#MLԼű p~1ȾQ:"χ,cɴ@aֳ*rTM۪1L{{q^,kg-H͂F8?ٓeKJ׉<Ͳ*NPV6RQﭮm|ҕ!pᇦ{])N,֍ Ed~ 'z7g:bl4[b.F2EuӣV1sbKvW8 :Τ̅iF")&qPOҵ\+ե #6NJ3lCҶH͌j# 2 [("5GIO^+D6Ŧ@P@P@zSTH_om= v;iƱQAD9VA#zfZvQQpn*1ɭQC;U"rbWx9˰oֹN';M])I;.<#kԍ{/|wK#duI4Qal󏩯>kR9CosϽ`HqB=@l.%A-ÜVџs,M ۤfD&jE5kBh4P*:9&M[TU לPcvUW î(.ZeuKq|33^UQh]dT69*zEL~oQLEDXm^ԙcm[R KBz qOa£Z3-ٷuSqa(1ڐVۓ@ ֪#g`v8(:b Z@=qF%Ƹlp') xP:R)cU& T@#XA΋ ӍIA NďSOVɠ۶XfPvyu~nƫ泊;8gy(9RY9٢WfgA <ںWGJI!:{帮Hg(ݴ5 ۹ qiGOJBsCÐVba^:VEM zT\e ,=o1z{5JH Y8NED6K8:JV)r7$*[ˆÃAU[FLE$?oqN3ڡȥ LE$BL -mK*޸;{ҽ8ae>,nYѲz0] aT +Gzԗ2.#zh 11<7~Ip,Cr5j%© cs&pHSӧSjZؙ"_tա̹aYД<9IŊO;$;ӕZ+A-\iNFT#Y`kg/1(>e-͔/Z#(=NGɒ- nR`kx6Ʊf\ZF u8"u58d™@P@5t5YЩ6Ng1Աa@8ȢL(C9všDNrMRFD2#T09"i>wܸ@9&Riru~uF&R[Ew8'ȹ5Ȏf5Eg ?yjͤ7qUC1lrNk;"[q?@;֊bo~RM j{RءIUjcm (M&"&lg'ֱiYD%M2FAxH' yɸ0K41 F6E_[~~4=bn#jL l\CmdOU1BUP9U+et3#v$dh341ij/8բIvDc\ I=FƋ pV-@P@' u4&唻l ][ I5#?)ɧrƭ( ˱뚮h^d9Noқ SԒ+ڲiΈLA $IsHԀL`uq@4  1|rl#9%ܙBEtqZ]OFgdIo=zU"dW;FۇzB$r(ȩF:f1AR>p"n!SR2ƤdѦOdʿJC%UzCHǁ@ 2OPހ Tr{P\뚡`! \O,{rL)Di4K$DsVQ+E' ǥX*@7q1[w4DQ3fضAqdP?qܪMnib65EFNJv-"-O5V|е5@7U X\wvNK9隵F*/A"(cb;NU`?mz-)C~a,Lew.Z!ڑ :\VR眧'28`Rln#$⳷TCDB!sN۸e8T%tPV.x>ռpKS #=[+dot,} xBra<&Ӗgv4GQui]G$>BqBӃ\b7)6+R 8H$lfc"'-Qp)OEmq`FBSJ-ByZ*6gKA+IO2$ TB(<:_j"C DHՏ) ɽX\ ک]!yq/_ViY j;o 梤LfG2^TQRV&(P97I$BV*lI9$k9YlJIc)2R3s@42eptb(ҘF5GA1r~tg$3SNTA" q&jbNjApT/f#:޹j(hS&X!1'(u""M*[9JչI@֊eFFm#_JPL#t5JeHH+yPzӌ8ص=w=&T-=l$c^dGJ6XʄMP^#V3Wq.Ǡռ]m{jXDh=}I"xTt}ڹ繛erc"Vz5AdvIzd _J2JԴI$+KN FYW2;WEFq5mIhE!(z{[Crh0]\0xkrk{SoOkݐXsWtrv*QIێ+TrT) M)P@\TD,}QWF1nCHBdm5Gz؈2}hՍxS.$r3MJK[3+I2Fh翵jsuESLҟ{ 0FB**t"[8W$M,H\b?;"rs'tCXWKuf\ZaۚLb05b$FV8;SԖpH:~ukS+mRijrhA[w2IP{ұm-Dqzf-Je Hj=hE USټ`Vl5:= PqM1m?aڨq'z V T`H2.Upq(؄BeرXq޷̜A#Tzy>mE,?rTwֹdБqQrC<4\ mF#(JSI`9U9%F"xʕu7ڪF3掱(X}.67"#4ڕ=hq@ #J@sڀJ@0+u*瑞jpo݄S)S):ʞ\h0{*䔹Z!+TػzҰ 9T=('p~A e*XC׵!8 1@P '5@#ށ4 RN(?Z9oVʝel7~H#}E9بb3["&~r>ZHY9ZF(#'rCR駹j(xi%b`zf"D# @QKu/)ې~vޚM&UqUsEMI)g$c8Q-o=>Q̙xc:=Imިb Ce]DJ׺:),m.Y"e.JcRRq*%dT P\fʍ+;3gbzrMl6QHi52e Y ɱa&\`42b` P'i#=*ᇜ.⪏`r@Nj*{Q,\b\n Iה-1P98j"5o&zН\GMc}S2C+3*m= Y"p6®Zђ[YZ9&>0sp{nEiNlu r׭[3)R,{c=M:a}[`b?ν(Wќ8t$r+uZB7+Ÿ~ӱrܘ+W&f0CqҲt3d 改l33P3ljz#T4d? P{1㱣pRZ'}̤uDL)F"(UW1Mg/D]]N*z+èwR)UUN$g WBqUN n1r⹱%SXž!1RBqVXlDJK|'i r X@'&G؂)P@U"!cV4h:w T-Ng:A*#0)ٵ<4e+avz4F&tҺ#1E#] X(=q\-99ȋ OAҹخHrxT̙"Q)؎a 9YZc/'*$k9Mn`X=M6p\Uh͖>X,8&rLH_@10G!C\RnbHҡܤX9s$b徔iR9i9K+ 11Q'm@Zv2l(Tb`SRh$别%Dwe¨&qMZ7\҉cHq@)2,@=9$#)[ęs㜜ꐝfpk/j9$Yb r;T]3v88qJ3N°I4O&۸aD[. EU# s&!2nepsj5Go+TnLtM;JBz`d*Y`C(ȽͰѰʷS^gJjk̪{5nlߒy9uH 8 n\2)Z6 6Gzn)PL[^1a*QD,䂭{UU4UbF(dG g:j[N>Oq$1 Ğ8=h($4%MPi15cR`%c)W<sA`EgpjVNx!Bszl0 WBJ Jw_c&րY Byk;{ښi^pTrD]K({R hA!?#Rh,4NGPbnueSZH\׺5Nju+j_du?-W''։3|< +GX,~جsFjXk*@C+=1]-sI.#&sp1O9Trι}nDNwF-Dk6=gR*'ԇ]*+2yz '=&ҠcHǸ=E?Bl*L6W̠n>8OTrUWt)z]fj*ڵXXol7M%t1]pE**H[㷵ny#-R9t ;𐪽jUv.FcIΓrƢ+\GI<WףY @PX "o~FC=:rq*lJT^ėcѨWDNerS޺`;`P`gtE1E79c[$672G(5RDL:`f1ԩ&+X\w3 M%r(Sr02OsJjȖ;v~\Q؝DcF~ՀW!q"`?Ʈ1HF-6I.vih-JXQ<͜+TE_F3 ʂs5fXTǰ1p ?*`JEq $qNIJ= '$!Q@+6C)!EdK,A?v=nE;FF=jl0 i˜ de1c4$=W4 6.1ZY e?e("ԇĘ9,}Tr)Ek+27.Qj m̬.rkEe:M#'ޞWH)r;k Iz*dCa'4 cE c(rlWMY'h#qW4h( y$ѽDr`SeIϥg*ƑJIdq:3c0+=YE~A0;t@[G5tJT8㸠CA8ҁDC ͔LUSq/c0iPA` (A q891=h? J`No"!?]3)QԂ+o;Ua=˖-" zxɵda:<ĪdkY9]'tcys =EuӚ;I]!cj#{inX.9"$E 'S(J8 ) Bk90k)15&vs`ZVBtC)=t B)0JSXYkrX)5̪EHgPNvǽsb0㎢Z"ũvp%b+b}ކRAjΥK>dfɡ_rv&佣ܗ"b_=qpёru r6<`SFMAt=AbTS+Jt.!F JB==+УS&Gbz~ ܛg]+h;nriÐAF<`%Xr)`:ZdI3sǵDttѯ-K:yg#"N#$S-+t>POT6ZPSh1䌽ViIDk h$99?ң١RKwD&%ܛ!SJgR YC&qJR3/n5 ) O$j%6T$&XۚFA790lmؗ ~V1'p*94957‚9* i5!^*n2tޓ*IZUc) PH ``P!h!^ryLCJg+1@dFi RcGBkц4I,mqZFԉY2$J@W 냜S˹$y*nX˫6G#WE&c$%2c RF,R2鍙=ٶKyJ(jRVbhy\`cKԒ)S5Q4Wa66n H?-ͱEV 'U$6Tܩ#NFs[(xąWce6|fAubWљʬ FW `5w6Z;l`E$[GT|HT7CJ U#AG.W ҥĐ/h$Q3Y3t4YVʒ=jy_*&k)IRI"qnGKI-p~STƴfrԺ]Bm_G˔ W9l̤*~q?y3i}фY2{njf-f3YFr$ּŒnEE}ӵPje)C) aQU*3\TgjN2Z ʷ"HtF-lrrZaJ>]0]]KU= oșZ$hH]~3{EiȌ/j @QdUeNTIczɦ4D,jiA6?T"5_zg\cr"xZ6H=ꑪEwa׿J#HHP9 RFd2U4]DIu O\mm ?U݉wh:x;VFӁi@cq\e(qM<2 pi^µVzi EF zqֶs9\ӧs?N?W]Kigm>ys:'_G {"ڋ:ӽ50f\T܎q[p:؊+l͚ʚ&PISј)J;.QE|dFzP؟RZ`2pZ;G4BGVlVmӿB{$MKw4޴V!x @I&lL304.d81tcڙ@ 1&Ęư=-:CCXnZ_}hq'򈫷D+ gYȫ*|Ås] O~MM٭˴(Vjr]JU '>Q&W3а;[UȳcL~Pwn6(0z-j8Ed]Y x޹jQuB}JJA kdɷ$ּɓ`.A pN9Ȭ(@&$t4A^p 5 LӊLbcfH`$vx<gށhAGjJChLB8aܫ8o?WWe5dqMC- bV&ٝ~kT(>FnWfdv"KFWdz\Wli+D32H >3Њ98\s 0=zV]jܩCӿQ*<ۃg\(J6v%sF8`3\T4KBr:S%ĭ3bG#DIibF֩" r;u5H`~F#Ɖ19''>F -{g3DcGqӊRMB5wIГ-v1X*psڻT=ىV1)P@( 58jzp,)1'v y AkI~D6zl98j͡ &O\%Yr{3XL==})X&~6iXHAVeh;HQ`hI#;7&GqIڲ[m_\*-Td t)`Lz:ғtc$1‘˔>zv42mtS!Vnq=) TO&o W8RθT(a#dLAy4&r+I nrluRf'rF )wQTpI+^Ez|)ܰ9籮Fɓ&AT\Lq)M;+Ȇ3ukjXODH +T]DͱLb \rͲTqqq;@QỏĀqiOKΞ[9UkRqp|+ԃLmjޮD᪝G"`.A[qiA'4{4@ZP@ L5I$Bƨ!$ΘDnrΨDi<ڨ!sU#DC#wVEIkT*\K1ԎblA'ktjbA&,dN aԺ -㔂wq}f>8䐍ǩV)lK[촙nHǷ~5nrUF$p(2MPsdy1[[{5Sr{JΟUp W ӹ;GZPĀ1ǹY6l=rO>¦` |nз˖ކg*jHӎGLgY:㟖ġ9,?r;83wSXEGZ.U@ G bVa )X9X#i:Z"60d!I_z3_h vq~UY0W? V9#{ X!N%n'):TQ$,s!빎 [ndnϔiN܃11ڽ 𣉻C6|AByƳG3 y pUs$WLi]]uryѶXaċOzVS7MX|M#*pq~i4I$N$_QpyZYR[ݻ<'=keFMk-;`O\R&n_vH8OV2tǤI9bl<>iXQ qNH-">6HN*O8h"& |Th}끊ensB9abq۷DteV2-D/"Y" < c7fe;ֺLAL 4\WB&HC0$:ԶЉͿ@'B\ iT)^]ICMsI0*81qVHVYGJAJ$ĎՌƆmun9ǽ&N2>K{"2N{ԚBE"0еx=& QCCNŋI^8`~SP l٭eR`w,}zg֕Q19OM3݉969W򚋚( dr K:"Hqǥg#d r+ Nι L㜚H+ vQtl*gqEj>Tca6VreR)Y)^0Yd509+!t(UTwHAЎwgx+ilcp۳/>X.r-E"̊Xr8I F@kQJ:&Lt]qCT-$Q:4YSkqأGYTV{a[yMn(D2E JL@- chZ5Dg9~x3x6aFLUiA)8E8>QE _,·5D$Ոf;a) ֈKpg5u!@[MqMQ#YBH)Iɭ㇄VjViEwWNv5yUnZpvY%pɹeU̖ǡOԤ3}fNLw恜 s@{^gb{+)e .718R KĂ0BhRh H sV8IJyʟ©̓jI\r*9n%Y!*r9@dHQP1zwƐRjCnGQxI 9X'Zm Af1p;~U#E4 B%YP's9dd'gUJ,Ae'n~cTMJعDgU'963֚ Sؤk2DOjjT;vԚ, r?u{QiRec1eEMt15v1rYG>]~&jݐ-;=ĬwtOoE6uV'dېH}h̎4X}%Qþ2#a{ZΜ面ouܠ)'#:u2ef\w:$O4&[L6KBcY5際1#bEǧ4v=XHxzi'֐j>0QKAN>Hʒ)GP44@U 2""TOOi%&h$~QYL O5*6#>*2W~cR{NB&c%H vƍ%һ#(\>škSg\N60)Qȭ@z6:M J|-J%sĐ1SbyE hXk7Lv)"y"F jjs* ;'a$L5&uPJpMTKy!:qYS+dӨ׺" lr+9)&"\%mprjy؞wЌRՏaik "`x2:2X2"H2Ө>U{DᝣeV)Dlѓ8^2TqEqbhi#5KBzW殕W 8Vbq0n;>9EQ%5d)5r+ߨZ'+T@OCҘұ *0ݪ6x9e ;>9AA$xzj 8c9(m"\lU#o*MaRAY'jD`Lf'J"TH"FdPH8mɼJgcBI\Z#t=#2nF]OVՌ4ldRcaGTnVrd; ʖ0N$#A)r$˱ߕa#l)d9WB7 zz{;r`2F>QT2mI2 MTGLQ*A*̩$zVSQkm/Qk4[[֖ zsu  e8X9$SR!X`dL: 6U.xZp0U$}°VɌf cv.\$(Kk"ktD)2VmO ȥ\:ժmʤVەtWe8XU6[XP/ⶱʷ:tLK9ڱcf̷m \Y\xhGRc@:`!\Qaʐ 2;U&!O"WoOғCɡ!P 8t#\Rq+q[Ff)1'Lr2'^c=GrI.FPYնk9Υ\P T36NJLA2v**MA2ץI[b+(-#2~_jgj*[NƧtP+OsѲz=cҁ^BTֈ;:Vg8lZ$hQء 12H$=B.ˎkLͰ T ˕p,`3њoqșWuC('$kE-\< Gv= FyWzrΥMmp8s35a&( yRظU98#ÇCL2!?:3 p9F:l[ E2# ޵M3|%+NV#1S'~k + ;I\E9j\mʟz9CaN{Cw *sX \x\u,h1#`(E@ 0+e! D BgJN25湉Ed0),mg$W$#ksNpL{HG* ]Od uGJF+G%ک;5>vv'ڱG$]ع5f(iudZӨgR1c]Q*MlrsKЕ$gx}52B)wqڹe Oj^:\f1{֊NWW4a$!oN:VъG\K$lTfLs֓:!ћ-ԯ8Xe;y\fRd c=_+7S7(aZ/)w(Uw4Ԯӱ1Z(#uM"2xi PPh {T% G)FFQYJ!e!) LB'3z|E`w )J*JDL1x;-6q\-x#Q2D|0珧ZV pFsҲ1I8Msކ4( qPiHC`0I 0XN6;hT+(# =2isJo5,^0ƌsX8L%V*2J!ϡ?jZ9} ͎<DՊu1^gMطi+}_hi6R]Guj]5"|.G*Jd2}y3Xm Sֵ(e7Xt vdd̥&Ty#M=~Q6I]qD60FR(_ǘQ}e⡥њr=Tn.7rJ= X+) r{ɤ٤bHoZfM@hNIL !b9`9bDW乶#Lqi ȝh 'e^Z`!8Ns~̌wV(/ӱ#)KMoTBj*FAI$L0wu$%ȳ8b3z}+ef)Ů$C6#\AZ#dm1?ֵrQ &*9v%7JBrlCX9Sp =)3^e ZR[I'aS֌U#:Wq3ԑLcq@ z~4:Oրc}p2(ݹ?@wlXyVaqfs楴ںVY4Qp[TcvQ!Lc߽dF"VM/SRT5|E7@}F25@vmf9$[(bH={sxRfCdnfRuiHk)]FȤm.qhFkcoNuVs5hr )d^Gqܡ%PAP 9F\2Uf|\V:ӹ]A@,M }z s9XمYbU#]([g3Uv#`Tvk|۹î~z$.d$)*ϸ-~IYJFb":}9!1yЅh(E!i P%X$bv{d9$c*%fVs;{?02GV3ֻ?!T-eb+EI"I+ La@e !tJwtbz zսTv2XO̍뎣C'S)+d5\͹ 8 gj$0j&R0 X6d8 ⡱ n84Akۡ98@)Fk*՘>GNocG& jO U B6rB"2 CN`{4HьJqhH_Z$T>bQ8ңY[RR 0GQX-2kKmeW8@b!?QM8* UDT;l`֪Z$@GkђُܻPzrim$Gz֩L_ '#_,̙f,c(r_c9l=kZ5v3f.,>؉g@+tU;&C5(uHhSV^F +;I^NҶ}L5Uq -/5d%YUJښS1sW-ć+iB)4bT*l!}H RqjMU8LAHC*#ۚ9 91]5fq_XmG2PzS&֌)>ᜀGqfK\[y9E7=U%[B 1ި=DZ_oFՌS8WT]-P Q@$nr-Ah(.0THuػ D*=x\g9Kbϵ\ 9nV7Hjgq`{i!TZni(P'hlc={Rwե6 =R4PBボ R5,!޳sRRZNZ$Xsڳ I4FR{Tp_r% 롉Sp@<MMYи>Ԧn]Oώ=+,zjF0r:ݎ˦XE0EGkBd69ǞֳkS9$]$9e,Dc6Pͳ(9 9T= ੥ jёaW %7qO/;Wc1^1~W5gf7ӥg6T׳Ib;H*N)$QW  tF&SEp6gV6dȫHc QTa%rE cs**8dcS#h'52nwrFBM2ݒN`OoV1-!%P{M9UYKr؈3Ϙ7e[{`C HQVE>zR#x}K7泞!GDiaI&Wo^ܖ+ p¹$1ȤRw"ƚC<(eȤ}!j/a4 +Go hi+m=`W0[jL*w55i |tQz=AQH4r%r+h`PTz$IW[Ic֦UhrJ;a]J,F;sU[:BoeA*٪j@Q<Z.l DsT<B ]ЂHUw%U2x^z#%I̭u2CKr;4\0Ha$bǽ!ic `r}jIl5 Xkrn._CQsAgv(9˘@riӯ:oBn(O4(%,\[<(z!sH[BrN;+jQޤ)$gV2c&PWM=zu]ΥM!yRS9սI_ֻcP1L9Әgb p=d5r# ް7*X՞F*rk5K2텗tg ~i$D]0$ⶱ ,$g][YSoS3XzW tH EZbT`N;z։ܛO64QB`!sVq_*HS MUi ȹ'=+Δm8)0Y9NԶ2-K Ī~dԮdufO6ɠ;x r5)#x2K9u/m)+;mhA (a1*Ju*hhOjM<*Ǡ%dGTrCd׏>ҳ+)aCxaыA)%O2d1u"qqqR1@814)n%!V:`x]ckD'S(A;q`b9NV0%:TWFYh<ѽ̩z6%!N\m7,eqY*2,nA**+[Ѩ#u Rg* `sɧV$(3Q:\UsVL0~e5KwW J㞵QJZ26./RӸ>;E 8Jj6 293RWF,V\r*N QI!61Z#)H5FRգmȄD{p#agfm*I; )%]`WQИJ'ӹ.9qr*qNĠFA ZΈ#dsڙӎwb=%BpmTOb40#rQ2s 4ҹN+jwY$m]ԩ'N1r XqU:fjN3rIYH9;BTRw4p:R b3Ҁd}i  vF#+ZBNS,'`\Z:m;n$|9[BVdtEȋ(JLs|d+)VHY36}Eb1yW;aEw9cՕ:Rܞ+;QBǓhD4V' 7RQ'\$ۓ4ƢǂO9[$Tڤ2:n]Fs[ƥiY`!^!F\e՛!ֹ,ΨLl0Ǩ5*Q`F;z r-m/>Ԇ_A #=GHCyH2W{PfǶG`q#\@K 괹Z3SVf+{g͹_xE<5V常n܌#a{)u J_]@Q1PB=HϠ5*mYbQ94'i4&}+sHeې8 tSdkBQğBzPR͸Wg \)XY\X0Bv㌎+X̖+8Zv4XC *5B.8XB\?QZ[+cPAG++,ۡ :qL)OfejDIڹjHiMe,Sh5'зV+تwtdI#iQI8oʴܷ%3$kTN&Pb#w4:]J/#~v`Тџ>8sm'p$V;msI1`څQ/s/hR=j+o ֪LjT(Ex"zG+j3-F茓3iێqWbn *T9y1@e89oJ2判kV_JJn*hI'gd#>O.ZІkaT_+.4!2@ SQE!5]VP]ШCAr}ZR%_"B}d+2 9`pGjOAEPs Z. #i#=)%Cte=wΆFIzCUʞLv;_4`x\zka1>٢l*SoF6o$4\?zSvc' ^T0= V}Ҭ2ʝ}7 m -s\\q*9=떦PLy#{^Ĩvjäd>keȬ0p}*U^4ý Z-րuW ,cwF ;|Osҹdtkh$ F"'i,8f|y=AN(I:֐:d%^FA{Fػo&@'= c(E]r{V|ܺ8vnD'k9d-ZM8=+V/5׃:TPzt5@W֋I֓C)2 4l)-8a2*=c0т3cPr5EޠEiwqA Ey 4PT0@rqm V@nفUE&hFҥ<E\k|yfnRK5 Cѩcp*szۛc^;`2Wm Y۳'n4jtQkFһ!.c,G_5'q8+MxU8nlrdPk΁҄fD\ zTpwqϗzUNb@)M;.Mv6"US]Ѓ+1$;V5D1iI w0 :jrG>xDK>sKcWBX+3hiNR)ue n4$s_(#,Ry$'s=3UcuO׊fhŵqg&*RRF7񲌜z(l4ɍaTeFw41p1Tt-8>$78'PG#HdIJD69Q5 '883~ŴpXG3Xcm SF2#<+,Dd̗QG#99biDvn?Jz"`9, B랔NVC-&.ߥvQڴ[ 29sף;8cڸ,Z=H"=O\~Td=j pzTeb.1,MҰ)QXj AǵU.DmQ֚HqLs&Ti&aK$|1T1jͻǮj-$8$ҎV;3 WbcӃLP !2= ;ǩ! FsJPXMH9 ַ+֑f5_b\0 FqNQLW3/4#m?ʲqhY5Cg .eqea8ja{)@\Qǥ#S֘{ blv7'S&0[Չg+XFy ~e8~2)9#'YA %{T]9✉dF`(PaVϖaj| ^kBT5 NNO4nԟdY2z Z123j҇h`< dm#boopp@\qbnhD9L+ZwMs 9=qڜ]>ұmD#+\W{vsXΗbԈz}EbE6߼OֵKZE^ZRLɦ2H2:cErQGhi ).N*LԹ\ 4idtB WT*]Q[b hƉ%QÕ>';l`= 8den.))JcR4mCYriC" r2JeD|54=".~oZ'Y2tB&r&1YCք"Drxa^Wt2>Oeka@;0/>QZv@8`~5-](Ӹ5",iM+cˋ4r3PoeI%Qh1YXDžo>kng8v,́GQZBmlrTr9/S];Iӷ ZjX+ctl0Eghɒ̹鲬zk2SVg3\Y9V= pbZ54;>×cFxfi}8k&USHԑ"؄Vȉ֎t"!~V=zb*192\KT܌Z֫- ]Oj4e/YO@#k4cT$f5БhQaBI34bBsUc[Xa=iQJ c BdN kdpΙv6, 8\Td<-H= A,NIP@#73+DТ nL؁ `~uWWxnL΁*W;7B)A6EmDsbeܑ+.CMiefB:Q]MAGcŋ7\I/ATat'R f`O >NRzXjҒ̚0ǑZU zV4NF})h{XOnbXޭ36!'#(#|٨屧5$lztD91WKpzRԉb0illSkECZ|p6} 4D eVqLuA#ڭT>&Eͼ99*\4JF9#5hMgGJcSBH޹% )\EvLh[]TJ+qޞ^XJyGz8Z HbS Z^)`'J`ꔀr3TGJ@ oxe*H(MӢ2 ?)KsR-!GNfH\/pzQCԍyr#>;n%u8ڭLV"1Ehdjw}k9R4bhq\FIYF:U g[!@%1(`/%0SLRAL*ps]1H mI?)ֺSfPKbP XB` \خ8FOSMR(0@8'PZ\hҖ Ee3$=7&wœ#y5+c`8'Z$#*r8dɽ~KLr@)ƽǽMʱj#O,X8hbtP)\ !4\L-=N ( ( ( 3@'ʒ>ޕJBq _lJ02u 8M!Bx EsʗcE#anѐڐPSց )@@(40 ֊@8j3pzWDjb2Ik.K"Y0+@Lnk" O@OYʢB'͜dsԨKCDiF[V43lp;|tHRwhՌAybb9eܑ-I,r}u[-P<.~3F3>%H (f @ cۥ40˴g޳5Gz(wDS+x` b:OT\J2brNޣgcOO¢JMoZ~~kϩ^bғ\3%@Hdg"t_ơ&ɔT\ͱR3r3lFu 7 O5&)g=M½9õ N+Ч:C;C#kГehAbyiр^9ϝ9te[C*3ӦiC吒2!G|}wD󁊤)r5I[) N*G9ڶHТShhlf;@ϰN%+rb:)RV*#`=)NE1(q֐ =)Vd=)b%˶=xgZ]M4s(4JGr}NDc[FqNƊ~l+D,Wd?Wt)1apF:(4/lfj PcV8nIU9GtrG=q\U$&q=HlrOBk&<#d=M:RlphLCN0qP0U$zҳ Mm -Ɯ[1xNr骗Vd{V6K %Ub9BB90h1S[Jvr&[' 65QҔGQlҌ:a=JpJ4{ FO HbPҝ1=*,\n  @NðݜqKRzHw:*[-! RiT-nf4v`Zs+٢6:u Hц0rT,cI36dɔT6.(cLZB3loN>G)nf؀^04f5M-s*\ޘkjX6{vxb.Wg'&J6AewpJ Iy>탻HzXj~٢с^㡯Y[Fd;L9$ ׶+[ș ֘} *XA)Xl1B>b7QsfܪF8M!a44 ƀ֘)q1FaFCHb+m'jCpNb9Wҷi4zC#[oE" &qW%I=8&%vC(` 8=>' !#i :2@W>ZvӜ(rOTMQ0O>\ MHŘs."8+5,4sa!Ӹ h}i5qC:Vn6b/Ҙ .+V;7f@_2ئ-ˑ{{;n2.V>a+sT䊡{Ux:r,8(=!\BJ\ rJhBw(rzSPh=:VLTsŨSӰXBpa'hEgb@ƠrG4Љ\DEԶ"$f"z( ( ( (+F2 9XfxCib!((h@4S@ (IsZF@XC=kju9H,͙bczT&7U )+ii77q4ya2{W:e)uH KMf$ݙF2r9l9֦OLTL0(HTX,LGP*\ d&xe!3qYܻzMM2IFZ)\ =bAzM"AԴ el9vZq@,c{sYJdTLt:)f&L S&3}Rb>^+ \Ѓ& Yz_&wƊV[`@ׅCzPNO+dΠ Ԕ lU%s9IV2HNG+:c)"CgkϫBOގ.!#Ql=kq #`ש\v79ҶQܦ8-\^͊$P:PuSI?G;:8 |H,,OSL0~UҬNەJzGBbwR9929)  g5@/8@(0`;R ! U)MlfS(n!h$5 K]~ U$mS FE)܀s((nҶa9)؇$}ON+rǪ9#޹$Nx%+sX.BAǽC-21ΐï4!(+qڄl;РcHRqց֭1 מ}1VcT@5-=u=qӸ R&C#L) #'X&K$*iL!219)\ l؞j"H#۰QN)2YP~b>IbO8LB28Jø3AHD8yc5@1#9L@FsYe\9NZFg 隤H1 qv1褐Ru0ǠjiP  ( ( ( (aGsm*a @!ހPL )j!׏bk^Vf= `%QJa(YM܎[Xaܰ.'MT7ߓ\r쐝J) rwb28?PZ QttCKPa:7eX\Re$T2-!@sTqG52 J3(1 Aځ]#pA)Q֒±ָj#2. rI6KFR9蠚8yda*uGҺG4vcj88]Vʠ;z)lg]8J[a*yB3}֎`O0Bӥ$7ƐsXB#¡1Ȫ8IqqC1mA:5JM|ut9RVV2GІF<}WB.gfNx149:ITa \ϵZfRċQmGYxpL婱@5ґ'N@&w)"Jߕ$iS@}*.NE[m(&gwf30tMSQzSug'*\9A[@ùP9l=Xh1,zdֱL%3f$;G1yw4sQ$Kq1^2.«gj`}kU'cVخ 8#ɰT\ɩXi=iTص!Iր:v#sޝ[#5W$\gH9BxqU֩H9c߀-WpF6BFf'}=k6٪+^63c' $P?ӸrEF{P2 SbG+ QPH@X65H2<EWO(9a2ujf1#/Ez*HԖG r R''@ @€Hҕ< ByH)HIHԚQR͢⥚$)6A1v"q(Mk C确]ZN/@Ki}-Ա<kvq 3w9<ѡ͐J#z~7Y c xEH <ЂD+/!X(9Q*Qdxt cڲq)*8|cC(i:Sȉ cNp)$#զz˴ǰ47}\&f9v~DqN"]șDnH2x9\Զ$-hdTFEʥc#sZ$e'qP9[Yܻ|B ?$zz'y;wc4n[?SM%4@chq:̨Tc'Teq;u⋗rXm'zR"UaKMnXg KSP[sJSx!{`"6AT!Er˖ŽdQGe:)Ot$z4;^ SDcba*fysJc$O@+v!dԖ'E2 Hv9hˁ֤.O=})ܔϥ]ހ;4FScHk6k{\;R% 8M0^j֢h994I+x?19Xp0Ni֓@7$ҰLf_J❉~P}؛@haPZ@3C%^@ uCL`S~% PMJF*G4Ȉ H1@1zϱrlJLDZ*:RZDjnQ"ΐ:CqJ\s\4}i$󨸍@P@P@P@P@$)bq޴jk`(FRP@L Q@0PC j(2ET'NAg^ct⴯&&֔Įv )!H@) -!b)(7I뎵&CTDJAdȄ楰$XUi¤.Y(;Hu׼yӏ)xAS1|w&;f%*HJlQϵM$8}(,r)HT`N"I暈6)#SW! 9QHiHzi C+.ŀ p˓bl #Ip=I%B2nDzRR:IsZGU(r/c UԂOA̪8;\k9E<\ZqJqӥ%OjE1he*#wm"9e5.[Mp0>ѯ*2AVr&088++hq5UKz}\)O#IE wj,rμ!O֝nȚ\p5Ir&,[,G^I#"?Z0lDʼr= aF\iX/#(jGc[$ I8<6ɥBrw⥠2J#`6s؏¦RX3@*,CCXg4:7(#Z. KEXf++qr(1}(HCrpj21ީ29xI!{hA8֋ƕR\8CdzS 8aҸ884h)1!҄j"Jd]a4 +pBh-RdAfFSjV-1?:(瞔<|Ne@j[*㚆ZM!cRp@E,@ ICC_PROFILElcms@mntrRGB XYZ  acspAPPL-lcms desc @cprt`6wtptchad,rXYZbXYZgXYZrTRC gTRC bTRC chrm4$dmndX$dmdd|$mluc enUS$GIMP built-in sRGBmluc enUSPublic DomainXYZ -sf32 B%nXYZ o8XYZ $XYZ bparaff Y [chrmT|L&g\mluc enUSGIMPmluc enUSsRGBC     C     <3bTiqn7j]',.%ŭt Hcs'BXE(,)T*yˤU˶3ՎLǿN7RNZTnr!K[IԴ!rtr90n[Jy @ $0@wuM4kInT(jڦ MMh=I+$f^SQ.̫d2Jr  i&4_Tl610nYYW^:hk~7%.UM5ijmMKIKt,L ['=Й-$$C+r@ ub0@yMVvM& ڦSTnlEўzgrm߮q%>r%6>L:R G#WJz!4m6+LvƅruS2^ @R 2.uQg]8T; AR&je/@b@WvM:!RQ.Ћ v|2O]0 IU:fK&)a]J(jCiڪl oXzrб0$& (i5%y,ά鎚M4:2LP4'V]ewr[5o;YN՜iFvY)`d ` e5ݎ\P\D6CXC %եZfɨ9wK29-8ʹfi`ꕋRu;qVfٙ}MfᦱVNZt,Mr% 2XH֐cYr^􀪗fz(Mbe0rvsR5,ΌcǾxۚ`$ ` `U*[;t\tӆJm&*&D7Z7q-v knnipͬE]I n}5OiSTKR( jSmڻ-LC*M^VՇn|v8tjb7ZL#<-gW醺 0] c@}DJ)0@ w4sb.MkۓH+]9ٔM[)&!*h!Bd2 9r'=xssN[HT$)':&LvYt-.|$l`W$cWBZt2뇣 `JZ!JItc=lqGi}39pk;i͢䴝 :::+(}qܬn:@iRZ"r\es)uQtS*iVgyR9MdrTf$sWuh0)hB! i#7+D :E66吣^oM%T5KV117,LK)8ϣ`k!C1kD^9ZycL*=eW>m NG+F-i>mwMj)=s` HTNt'10eH=)]e6g)otcj'\3 2D =5"eSI)$cN҇2i#chIU@ݕgyܮ}7eym2k7A!Ƽ؝k|ҝ,uX IQ.K̝ycm1i 7Jrr3hon]Jnf#mۢz6zMDe,V*W2-\re|ej16$48+*NkL ")bBΆ@ Hj@4 PyEPlLuJKh"+;uڷ4Eѓ/\.ӕ"Iu$iSH>E};KʞdZs2Ei9z+:iy<ꊈriD\lz]֦l=k$T IʸSaU $rVe ah IPL@eZ4"bj$TC.iiin4/<y'HriCtiR+9}ScA4iYig^|4:zIFVrV3SqUJw::Z"8:JΨ©k.y=9wh1IXӜŘ--zit;L<:$KB1RFwκydMlAb4-fV إ0t6>SL, I׫'Z B`-UH:2|95 T7bMdցF-4] r󮉘{br6"ޝ9c Jz9F/IJx^^ʞF7{9aś8X۷ KpTˉ` `P#'W4.\*%$f]J O|CYyatQ|뷌B4j:PJ^b%bS@)L^\Ry^-rO+b3J377Β Ɵd,}3Ӈ[C)&&䨲[NLkAP&\ ڕ8KԼR;p ol77SԦ$L9z~{ rl4i297:pRa#U`hM1Ȑ$6 I AR瞏\@CIP\X,:el>7Չ@C 16L%Sѝi5bcrԠ@ IơV!(x!Lljn$e%LBi`4ˡqwiqS4Ze\TIӪAܽ1lS\'4ICH%4jPT8c@` hZЯDE<,*J?2ַGɉ4T"+ 1f OhY )Cmm 11Wϭkl"nDJ Hĵ3OY]i1p ˸aJrLdL5IטOLgz9 L;u\oͳTIBhSBB)9i1R MJfR&@ iHLҹ5.#I:LEM!M"rNzjhDUtB{K&꒗8Id:Mr;w4eZZ'BNFP4JEkh`k]1bZ]sMilVn:SQ$ˤBu+45D !1,@@ 0m;(3͈gm2y1+5 pf唘w@es$ƔDC6K>c^jP^4ۧO&]| h IΫ7A8a%)C@aA i B%*D6a I < V:y|:a@9Ci)@9e ,CM:y`+X*GՕ-12f:j7pzsKLhT6Z`$PMGJIKb:TeЩ ەV4`633ӧϷt i. +]NPVbHIDK%@l`!@2,R I&џN #Nm8ϫ78\FlHM0=eI5wZfMAnC뇣)6#YfM6 = L1niH[rLT̮IR6i7L J*f#I FENtyyq1PGx0)ןJ9bK *#L1ӐXl9s)L4kIzM_6϶Q$fUd E15(r0ɒ10M5, 4:@0jKhmG{rzO*CNs8F 4`-諡=%Әji*ms;ˠiJ:rJУ>y4 HJRLGOJ4d&p.ӦU6Ɗkj:;6^sU}cjr M MnUeZrmvK02 j;b @@0% QĘ `[(bgx[\>ǣOK1yelRL:3R$6=SإkyZNo1L y:UPVRw-e-OVnۗ}i)H ol'fHR^!.3d \T-+wCMd &9-Mi.⫛]9j%brJTӤKvE⨆B)Sm!K`6`ˣ<=;\αUxyO,VJa$i&4SCwU<4`S4l3s15Dmſ\1\HR@)@NܺWJ=\b61y="Te9i5i llFw%LEPhΐ).(IE԰&$"S"X.;!Q> 1 @-b{V)c;ɇF c/M\^=M&dBf& "L1*y2F dYV(4 hj)]'Ew4P_Nyԕ¾eI4==u xt!6 * N}8^u86VLR&C@9!9LRbzn\ui4MXC b:nI~CLJQ3=[h->I輪uЮ4pbB’4TDUZW6K{dm&̒A%#*Xi#{U* [OX!hEAgiGT*4vJ8ӟ9J@9l.dt}\$<إs"4TDPxrf<@Mc@4 CKCIڰvK<㛫+]kIUVa-!9T+ܚe!i5c|ͤVU:m&bXq\TDIVvG4˹.^9cȆc{Dk+0Jαłb].k#1ӫmRtc9mRb M mQy((BlI$ir0՝fB֓cµS"rVn@YB{soR3HDL2yT Jw1B}vMpMat8iH3њik7$w̉@YҗBmSps5]tt4 J3\718Ȫ46el4חyMnDF /IzңA&fckh,U!qivPZ 1Z>( `K=3FUR4O(+ߟ]&Its1NUWu 6ʼn2c$`nu4+AںN+E6 +dVX!o5 LۖoH@=%ϦR==3RR:&jNJSI3JiQRuBt<jXؐ0M@6* Qi*Ո^YV IjӚ%JM.hi6R8kHFus4+~}ugT)IZtRIP%R[:_^pvs[XiԱNLPZ2.VR썢b4˟^"Fj醛eZMLLєƤHحmf'DHZe<Ӑ0nrrb@Z@L*Ri]r+(]WfҥpE%ՎR d-`N=M,lz.{P۠7[ӎXl3-%Pew(NXO\skVZZ4jMJJM&YMc@l+)래ܲ۟KianIgl JpX,SyP۔K)0@@5yޒʆ[;g=Kĥwvo(͓/è+y^ILlAKӣF:MRֲϣW?i e(s%Y$ZKFy5 '\Gi+jVi8Ud _dDJ+ &9mm/GlJ]L62E7#Ɓ^`سԔjU̴`1XmҖ@0;NAQPlV\]ܽp-U͢(H?2;9.*F|ss* aQ9}Yxqrkɾ5 -*F*HDiOwO?V "szu-*!Cx W3pC[2hc[CS) <<+SՏ>bH%ӕE Ity7gx+CVp 4; d4Bd @$SB3THug](깪H|=Yox:ˏCjXd*^{vt6trTT:]fX&-$h^U.iRH .Meڊϟ^ ,6ІK oE9}xaHKQ_=CrMmQ/HLZH"P ^B& 6\ e%%-8y:}Ɯ.ӻ4brƁ4QN^[y WNXͅ˻ғ3ϳQӓni*C\xi&4tB«\,(~2޶yCxQ-)`@_J4P/ LCbE=.)mW=ա3Q[.\R@14C9%& l>wm*LNPIR3R@2hI/xPLw3n\e$'24!N3ZIieD "F ڲN UPr-2v6Hl!i3@< CxJ*Zk}c>ˑRNYƘUZ+iCc\"6TTUVVQlecJ)稴g3]Dڕʴ6T0UMs+H IQcϧ ckm'.[DiǿG>^Tv]8s"M)m9DB5qn @ ]bSNI65iw^z< 1+,&: k`Pb|!TNӴP1gYyeΪSZ2Ӂ@6k4%UK@W(%^5tLP%W҅I"5yQ#W;蒑D:rgXazOM-dUashܶHJSQ(/G4'T8pU7;o3Ji hHz!6W2NouzCrtZժe ,tk*RCjhB@M+@ԏt@KҕXd%2['*XstqnETΔ`0@ОkWu$V*rMMX4!i"\r f[v9sוզIlԝ-Rysw͗M*%fnPƓ@Tr{NWϥ鎜GV;\1hv5ɷG>D),HX iGc@f L,M@40,qER\#NiCF$׽MK8 D4KtRu-þ.Qӎ2,䑓h̴1-H^Ny9j& @61 M&8Fs`ě44֥ k"  6HNunzƲ DXKsU׆\=r` 1l'qm''~][Eӕ4E)vE"8k[hN^]\KL8z S-44x\H 4&%&`&[y@kTihaA  iaFz-[ b!%+^ޱǿRr Խi3 H|$R-9+ek5D֙i3VTn 'Y+1ۙ:U*rizGS5E&WH"Zi9֪= 8E`ԛN\'Jh \Ԫ('h欩QMN"F˜ `urt5N&˟lwmhvŤ(Gr94**2]1R om; }JG^ T!G+j[Dia-ԝ"]pmEVkiXaӆyDCY[ʣF-@` ^ 8wʅi80ڳT鬕.@  `>Iꥰ:z3I%\X 4)MLkW&2:m,yڑ}w.u9sT!4+2\jehnZ&9]n.\ͦ:b h@ FֺөuN}uΡS0і:*[i$6$>vh--4@< MTn3kvW}cj`6Qe5!nvp,r  @tϫw<: KXIHrM(ί ul }腆.mHIBe:`9M2lҳNnnʆ3- nfm+p.W]3<ɧ|:RXT WOFZk%-^Upo|Wk dNP6%w+6&'l٫A'5ܣFjir'6/%-4g|@7V"]Dg5Z* M1f\NiXhxMZ4cjʧ yw $FbLt:E:T:VeEM\RϬ]RisވiNer !Ms/3L ޖwFܺY%)M)'`HnƯwiMh "ҳkj` R$su8t 6hL $rle՞NFf}wUJIrȨ::>mNXjS"[_E5ts6*n"9EMKE9z %ꝡ'(IĸNB1y4['$jsҜEr!ssͧW.O4T%JslM7i .R\sWNv0l cZgL^b` œSETug;B{5B9l)M 3YLJ6@hU<^=uͼXTGThj$&6!CrHL!TRny#0' (nHL!! AQ.U&:Ği蝷EmE$Pizn5MUS 3o)MkFM}PgXP2H ,M5HASD@9(ҹ] =B>sI(b)=ӲEPI SRH-s[msOG R*I&A[#xXELiyrd6 ` Jw`zcZ0I7yK@X7,L$!bC![m%T)UH-`4 lz"r";EeSՙ܊6GK,^3@ʧ([V*KE)uEsIJ[v. 1[snK(4M42Qu6Cr&sm Ld$Y4ijӄP:b SX!bC lZT䡁Bɫa>giYR@aHCl EE:B-{1.8ncבbb6ݚ"]"m:EKJ;u'Μ%i/M!HEfԀ+<Y=)169qUN{5ap.rm2Ls-44PRUlcH0bA#R@hL`JSM*t& 5C#|@41 "ӵ[i=M.xnsh@9w*iCM{V@)#:tp{藼)jRIbm ΉW8Ke5 )jՎ2\j!Vo73R b&S[ơysk.#=\P9rBHM4Ɖ (%A,!d@`S SV4hd+ jX6ƩUFSS,BfueAB6F.R=u:s/I{ R( )` <*M 10N9I֕ey` SfTdfW|{is"#J!iYQH 9dܰCcbPb0(bn] j|JR$)1sѴ廎fHX٬KS%@ҺTʵnmj@drYסϧdf @J@JL(,$CHH8᧮^役.gWΉjZ&3fM-M95.iHTT`b4ؘ2& 0K`P h@c6TChHA| R`ӡ tU )]+jjAU.1gYIWi &$@% Ě!M cPj1Әimd9-FI- +6$i6I Z G% ,Kc`l!!Mi6& $i:CM Z,0Η!mBI64P$1vA!E&MzU-Hft3ְԡ@ h-$rMCAc7#H+9nt5Msk kY٫]<ϣ)5RTJ@*Bi T&$ XL`M4@@*b``PRbt7"FYQ* !01@"2AP#3B`̌#-VJR+Ĕ<} *_I=LxuY{߁&|vKM=ℎuʯ {V`Ŧ(" w_Խ _f~EJJoe{W7͋XNC"QJŤ|F4P`U+%ԲТJڊ*tf̙oz*NEI$hnI&{1gŤ|f)(JJ#UW}NDU#?m7M=t=dJc7/CVKcVk\ok̞U6b>jXsqxj>2ZGώ(ėB{=3D0011(hN_ԡ={(]_գ-eTr"(lC&=B[QE #hNaR*PНX*>S=fHJ"HhlEY% Db[E #_3>1_VXȫp"-}b5\k3MĎƊ(r.r>C.c T'e"{dw!ѓDE m7~{*? - |,EcC)#chȱ 6l%DuHK C_InJuђ,iζpp[0cf:ض#4YlKDTE=I1鸸j4)'!|~ (袹rm}K2-N88,t~=$IP㓫&eC,fQ0YfO{JSߚQV5DZDSQkd.h[Yehr%mmJ5NB1E|3WfKeš- s( (HuTVD]8Ԏ$!hHdތƷ|{&#>(F>F!m[.V9rc(1(Krƶ_|gɊN~zϐve>F'[{.aH#,/Ż3DBQf['qB[8OO1:E#Y:EqӝG.сi&DGϞCoxq:ddأht)b9dvJ8lB(5EYUc0'(2Ye^ތ3;BM~B=f[=:zz{8);gڅnfD1gSq#r>2ZuP>2x\W$m>V1#p2-1[6KbӌI8crDa8}{jū2SMN9B[uˋVjiw G))qj^:%x rfψjkͱu$dHHž|(,-92:&0FtdRQ- NjJG% d+HQEx_PL/jZ$զCW2R٢i ndhǎqVEl/H\ʋ[z)%rZMKJ iA7c>\EdV/;#cgk Gibe}lG M.O'm\XQ[BmMQ1J^Kވ%ozl}lY.o\F~(2'5HkĤcI3B¥bZYfHzzBVVY`cJoj~qRСMjDw#^zm5$7}*1CAX54I2WȟLqԜE55=:4dj#qf1iJ^ >-Fd%&4;1LQ++YSf"1q#* M2e,vӆBWJ#GSGvjq:y)V8m)1#N&*qS%QTf׷e-1w7(:jPH)dFq))mn/SČBI$)=dCY 8S54q{'GbЌs\{;35#MJ- JzutSTVBBQw1f)m([>EhȪONĨJφŦֶ%) QUCV_Ӕ{d)InF%xcjZ]cFfґ(ct(]dm7&cdc F)pɥPw^[ڶl膰B:#zJECmm岋dtS' $Bx+o[QEnغ[y_\=^Bw"#JOZR>(s|n஌0J:PZ'CqR%-y@%螤b?s[QӑL)',eAhOZB9_̙\p#)NdZf>*!e4.-y|_OhDMˊ}ʑ򶳓r."zx23p#%%ؐ[Y^{{=~Eš&-4,P1qN$Ү(˶^r~ !Ko{5[؝4=Two۟Пt6TWiNgz#8#,2aJM$ԛxb 7FUCg\Ԛ[/-x(KBicK~Il^L>&cE&u!ƏDQgvQ ‰6EI#i^c'EL_n>m}ok bȡE-nU_ջ{zZcTixB'M 1M1HI% g))&|Q=+-d J ])I׃ /=FGZڄzj8-:1ڏ[Vl{&& .B4NDΥe|12?bM-N$18A(OV{,g_wV$^#i4' {_[^r{)_HkJe)eو*(ڱCԙ-,tYB#;_GM4>K&Z:ڹ. V/i$2QZ5rv4'gU 9"I/ 쬅?[X=723$ݗ+KJ"IJBg[HˬVْ#m+CVcCzBeՂ?2S)\ 9IqH:t{bעpZ-ߎ)6JѾ7=.I4)F.{?~(~;5\jʣ"Q;ld#6| 7x8d~)vK02hCTPee fI֔LϊHzJ R:w){oOv-) 8?(RMy/wBcmm^%rprm=LCg5nqC3LաOSMy}2RU)²^4}x2odSD2m}bH#jL!3zkςDt։-v61i {GR*OL/69Ɋ.BV|m(_+n/Ri_!ЭCHZr5"e/ib^GeeX (ne/.S\uԒFeۄV]l${GMQb &dd:tT [hMȶuϭOZ1DIP>NJ%1 3·5 _-m"2qqٞϿeI׊)^eA":br['FmБDf=IHfYdd5(Kt۞D4`x7-b !f{e^Hcr1WJOdl}m~$ն)tHLi1ʐՎr>7!8E 6)M99ByȞoM_!]-5kQL/eC nD䈨HRI%_+x9pTQTt^d##Ť((rMS*?Ք&*Q8f]8G:PR#&(%cwN)υJOL:5mNd?WJ2OVXF1zR%1dojتE%rEe$b$rnK{?E tu#.klS:ݱ:[e[d3L~'/Ie( Zi3דME8BSՊSQ-I7/g$,Y/zD͗{T(} lRMZ5OԊ%rrqsMmhNPn?QU2F-J=$G C>)\I~ZTBTSq2,houNZ}bɧ-'=yJ\R+/Y/KJ$RK:2QIlh7GFKf% 5b=k#SBHԒWtSK:Ceb:mkoNgƢE+wEKZiNDeSۈ[u(&$5_y'!iQDヮ8ؿdؘvڴ$$dklкD⏚U:sx57 UODΠQq'M%թ̻c:DgK~,WZE,W~eTzcD&,dKK]/پRXݡG(ꟖuNd^E'~P~iHQHvT =z>ȾG[bQ Nq==J'=Y21rũKV_ %=5 9":2QҒUm<\l>jc-94,T=\ߟ%%j2rPpS${{E%(~5ЙSD/$w'V^qMC.CN 91#&|Sl] A_n'.q~5/ҕ29-ފ1"j.IhQ>6evұХq)2(L^ n>epz5%9=I=9D"h mn.,LhVN Eq3p]L"Qp+1bӣXQiE3eGHVҏo0OUI9A܍M<Z$P?Iv9^Z|iƚVH(96iKߓP1iz9=1>袱VХdĄRq"8+=3u~$i)$3ī G8N]N])YiǼ bi߱2ue$|bHދګm]"RCr:k55KL6-1z)dG4U)ڨ>5[jT .2I%+ej_PLIFW(qYWiiɟ5%AWQv:9\%!-Njhj3dd8YN>4XzkPpR.#J-DQ#$~x\'iGiGB$+5p!7ZLqވ [W#Jq0S֟CȔZk9'P[R9iC2I%.s*?"(&{Ć{VLWkP)(\ez{z3w%'ն;6_z|j-5"e&lSB۾?$'imeОq/<2S[KN[UڎIG?*M]FI$cew񺌣{f5/YifFYH(^r?_4z#iiKV?7Q:cw¹"gGReZ,tnm/zm2,RD薬ݽ.&4:MQ#u;1k:Syں>WqkOM✿'''n:l\F]m~&J'2pzooN=6:Y84n.9?!1G{ݱiҎ8 4=j:&%&5\ ɚxעt543Jxڇ$ke$!22+RZR# E|syԥ(8bIiGfPYgexeEdCڍ=zOԡ'|=DQ0`Թ$6[bJ)2:q{#r>&t;HzYPnUZ#r MjC_0TV96Y%M%SKVRBеdegG2TB$C^*q>YiA!v;sPȸȜ픖RH*{ґ8,GdPtUq'JFcPMG6ot_N.nj+CGs>;:|%ᕊ-l8x5=' #4=Չ3EmzM;Fq*=uxӕԑ"J12DzJ5Cm6.W>~JόDղM̲gHQl#m8r#D}UW"z*Ox[mw9$:rIWe>ahF3qn4.D~yz=~D{%,[V;bGI9x[Le[:ݾ5%]3٭MŬqnܨrt{OON_+~:BX8IN#T"2WNq%v&K6JC|"QҢťBI(Gou2[JoeW rf'BBǯb^:vIb#Բ:$YL\1{Qb%(Fu[4FY84i*.,&X[lƏ"%P’Y[,PHNǶ%lDcg1!/2&~&gE䤱o]fqs˭/'D{K*/2" qoٵCFfC}sl3= ";Whj^eOHSbGiC#'J-bZZvEmؐ=Y(9wYV̛b)""f>_0[w-EwE섅qqO!:~GbJ+UWO޷2#*zp6QET(B(~G'.[YbMѱiFC|=[UWGEЭh!e{!qjq2X4>jx,I^\a+ޙ[J F8u¸">7CbJCvұVQIT7Eqp2Ev-Ȟ'_k$ϹM|'OR6J(1%DyE巳iX9rBeFLZhbKPmbE,r˫ݏ#+giiTM9b8_Q1G=hNN>4wn-6{(^t=+M=d>5ޅ% ^m췲1rK b%ZQҍ%XԱtY=Z%* .ǍŦ(r=EP?-иY=J%,F&>+ExJd5NJD.4(3ёv-ȏb" 5[?t^͓{U+|W ޼+^ӌz/ Hn"FE"/ofEEpFCb|^pHw1B+P._Y}GӢ2r/e77b~_1Kc1VX[[V_:B&G@Ƌ/z$QEn[9QYor^:+?_rHHHٍx,O{[1E"=j.LQ- !10AQ@Paq"2`RB?(IӄeLY|Y'5XLw_Q__Xfe΄vJCˉXweT(TV8/zeg1YydJ#*j/{԰,עFR)e4Px{,\+ЉJ67gdb,֍Lef/Bi՞2뼲/ ohbqli.g/ R[,ՈЊCu/bj$L5xX[\IA,%{h^(Q4E513~՞Bw%5wlXP&FfcFEI,\EXQXCUb~!>6wE!J(Ybe&p,2K'Bw$55 ,l^,׊gc2LRFQEf%(.55%1^(qᡡq!p^^%/R(V+:M"+8K,KlYM"#J,{8{_[MQl(hwa1 5 QyضP(Q{#m,6)~Q+XܷשI3YQ5QE aK -ıV55h/l3_ō52h*WyIꢰXRΡV.r-2_fel8%u d ō z袳LJűoI[SQm#_ѩ6~9YE?BeQ{+eqRŊaa{oce5h֍V] beu^ܑ2HbY"/?q%l/l#RTʳ=cfRPkbI1L/K,y">Vq/]7e eXbV%mqFU[!?=^Oj v8(^cr;cS"T+줍Q5r4'E^cYdyZ.Yeej78X?!6"F.e_N~?}e8ddX1BIeLlS*d&j5^(v]+ ұG|cٲI> x 3?)%R4tX{g$iקWJB#B(pW"PF89%8o op_8~(ѤM p"/n2SUz$*/x9lpwXևFI^4N:&&O@hXC/g,Q+šrQО// Ƕ8},kbnX_fSd|e폓pKK4CUQX{U K;C/:YUƟĿ5W eo7ll׫U W~#J["PqE bU颿^6~4iI[j]n$ǭ<#IE/8,jN_{E|}N["ؐTV,:.N ;5xŋ/ec(]Gx袘,Xq1yD+ 1JEopK-vVHE|) 2.Τ/BH*ƫe ,g49K y${YxdGlGwHB/l죲YpZfoN4l/4Av9Ѯ_DZؿFNVBwΰc'+WHz:*E/"XĶnX{V+efMH5Y*+JZdeB'$4{59*>r2EV8ڐ޶_ &YcoV)<՝lAF1ʾ JC~~".Uv#'K\q·twLq8E9IX_{wjUvpjF"ՓؾD+K] ) Y݋d,nc~9UTxtvQݝbJQxB~5EaOȎ iMVFYvy<7/[|S,eckdd)'(YԇF> 1xIJ:S+6?ܤN%qi|QT/~8Ȕ\}(\ (ȿ(~&xӈ5ƅO7EB)$ѩtCȼIITwXk؞%迁أCYt3"QPIPŕE⎋ GQ. _ԛlUᒊc_"tw1%gkC_XtWՓJF &dOWJ 9QfұtBZdB`*菑VF?E#]d[T:wvYXzkmatWK-z蔛Ք]kej}~C5/$T[^ |156_c?[] ?vC]D5B/K*z-5LH~NUH^:+?#FSelsS/_~m+ Y8/ 5PC|xP4pVɯPWdԗEc.J:)kâƊP/viHe~Hm1Kqy٩{d} BIeS[|GByj.gj_^eeIYkrdCbt4&|z#;VBG^=<#PFH/(_>qSWSvi4ڇ4wȸK$آE*cVr:;&՝v/ e_$9tviD,>y#)"k䷈$\ ƓT_ݚVZЅ9- !5 ߶*:(|tjYh]櫯+ cl|aHŚ?+}BoNj\3Ycv3U)F /U[,*=Wؾ\NNИ7,[EԲvk4wFQv(٤p,\:~hfR^~(Q9 ԑvl5W?u},qBv.:4){6Fiv.NP2-1<'+:.eWxHJ:1@[<9>4(>$y9~XIHpR%i9FTFeX<~T44'hr4ɚ,Z%gyP4elD 4_(iv'| ^1((%K/V% ܧՍ\QcA[mZ,RÒD!˼EF$4J4RG%#p&E1) [?X蓏bE;,wI35da )t7C,Yo{5JObDic.f- HVXՆV/ct+{_ґIxq*(G9T'RJΙKTؼHKN, DP/7[(Z ]xŎWĖtYRbv)i.74袎+EmHmQY#GVm B|ؕOE^eĊ+="hi3JCMlKdɨ~935"y))\JΎ~Ⱥ"l|fGovUEXv.%DZhM Y#:? >VF|jlfJ(kojc?EDe Re^S++EXƏ+NMZ/PV9ӱȝ tcGlKc#Ctw{{6wJ!Z.eW_Bؖg9 Z:E)xؼ&|$uȠ؛ܶVX(UedB[m#򿂥.Yx(v[[?UR-SWѡQ$kعŢ1[/$s-%P2.ʱ)zά1" QK625 IbRGfur4Df'~"E=!*#(Qtk9lӱoLjC{V5DchL;K$|vO$"P˱FXcyFo">FhN͗+72HU߶8hE!XƵ2^΋UQ2JEØjDCvy!\XXS/P7W֒2-٤[E2IqY{Վ- ~8ѫ'\j#eQX)",q~ѤJБ4'R5 [4,0,h|V(TQXYQȣEfMvVHj΄En_NƆ볮 PGmxhDyB;/gd5_ȯmKmb̶4,v_fsgf"V: q,BUgcBcȥL_'4b{ڹߤX41xķP"Oezl|pvE PŖWvvWkrcJ6F_jچtq(x~V^7~nEj%Wƾ4Y?##||b+5%ؐOYVƷi,,NƊ*X~LlRUO6^,̣M)YxM}öQƫ 6IDXIz\M&!bC3L^+QH/{{IP!]SHx~FEa?elo(ea?SkFX9+얫"r QYC!9*L^?"QYsH~RRGE^^ްBxeaΎνEkzCx!lo KhB?!m"b5 "{蔨BX]{E,sH~OL^93B[,WP(DdXЎ׭H+ۡR%㾆ʇ2Y{hV'{ls@M@KtcN$gDYfxȣYO;De|njPFqsǵe#"2E\CH\a"R&)'ߡx9"u/4( /E N'F 1DؽP^?Ez;~B罚FQBCڑi{#TΑ{44YؠWeqV,cKV;#{S-I X(kr/%Sb}){!ߠg,kwcCԺ8)- mbe?(6hJ܄5E$茬.(E{nOci*$OP(qjeȓ_Nl+F;+?J$Ty/WGcUhBXSXնתs']fʲ(hD9eQD&/z^^%"S?.x^+oJeE8hkgBLEok ѩ6(%N(F(,,_Q$$Q&/Q^1m2X,[Yx4&9ezZ#%#,N&GƱ{ڲPNj~kƿQ lEzYy8"/f\q(ЛF2vi__cc;+2O{NMm[*İuUnj䏏H=?jtY _.e?U^q9BF(5w/_W(롢0#5E좨e\sSOunhjx줱rvK(b^(hY^/ej&,4K!,=bXbY)^{{*(^ղEȿMd"2LLnHsEAԢKMO=Ymp'EC~(w6jb{K(/'g^WYy#*ˑg}Z,jC[7G6[yF-Y)٤Լ R.P^KY¤'m#![r(j/'+By!lY6Y˲PZ6OR%&7<MP(x)c{Gz%K:ʲP6"ˣ Xee2$nbvQ3j5lO١ Fwٍ|[u=$i"LPKkceP$vJFII ;K4:+# 4/O;/4NP^vh469P\%{h8v?FW"^ Hʖ+:J/eKYT!&45Gy4,ڲX?B -?>͉jQ$%g_F8(w󖜴qɦ m>MI?2)?3O٥n:.vE g+&RY%b~Ί(u[7*͖X㸟3+$c]=)*|OV&6Q).|2kO=4)r(8$1it? 1Ee[k+׶.r;n4ICDq#n/*;Z(6*J%e/itFI՗={S1&FGJBtfЎB3N$ׁ,8$WڲW+ey(ߎti.vJ:ձ+"Tq)Q(e:'RR|Dr\Q(pC࿲)? Q8׆8d>d1Xʊ;Ζv'fd:#+%'ce~4*%φ*ļʊ(I1ČM<ڳU UVI :"OPr՟#Kf+įX2dآDS(GNSƊ~Vmj5I|e(ɲQH_S*\E} fQ?d&ХycF2yIXvkbwU|hҐ3r6^!#R V)e8jT\7n<x),ELqxBt&> p/+V>2^tpri#Kh ZSE?J9*S8c)yTX^~*_ɧqRbaK ?ɥ#PlP]>ƫdbsMT pE8՝w9ʹYZYK丮O4c9exCܰD o[XߋzhCrN(qk<<]15d͚y"26T%8HHP3ļ\󾬤qL=1>&V> 9k*}zy0#|_QG;ɫ= YWeaկꇋ79!2Y&|1š(Qo"kﭒbBwkE?)l{Hbi M8aذ(_Kk#O}#ה'hP'G d1+bb 5B*ɥ.M>n6)sOco&s/;/%CĊѦ+ElrCMYWQGKDV ? R%ܤ8)6%BB\y)xMinYY$x|Hk;9++}FQP\G ,hLj\ }oÒg$PEPo:֋.~%4QBIعY~L-2\$9UKU]|w|, ޙ-QV)}E r6>J{+:e,,EuN4'cBw!!OitZQEd XkoYIp~Epzn/*']y~,9@b *O+WBzx4!|== ˴'.ԸcN 5kvFE^ϝ7bn,MMDdQliCTiG]"NR8$~10>K3R̐j/gyW&> \ቤK'rZ%kIOPcNS&WXn5WR946h,Q|oPȕnj+?UI?C)e^./ gP o2qtk_wEJxl겈~QbB}DB9e]UѦ-y٪f8e^Wx2X[d9t7E,; /d[]8dn$c971F֑H+MgG] ОQK9MRg.J%]|_˼Y1 -73ACi跗Wn05#(i|>6ܰdŁ(k'j\5}9pjbIE,X߅JJHc%tsܿ {(yjɢg;;W^ͱ_ϒYi_'2YjF,c/!}B~'MTQcW|F_crrƹξܿfr*+g{+yVU譗g, =ǖz]#f%g/BE2l%{,v4'y8x[SK-wН} yɺ>?LB^=&إ'4= gE fa[Y{o*YIjTbCKʬXlXfYy]<:Й߃RC٥qw*rSŎC"\62򯲊FkeY{s)'0'QR줋abY.l"Hґ^ȇLo6D[5#S; aP&W7cQz|_cc/Je|gYvQgK1lxjX1_ه+[_9_LLcEueUyWeq5"rlM  &t5 /4j/:lCT4&jqF+W~k+XB(IՉ3UwW_Ytw5~_f%+c\nyXks=wbzՍ lHGDXm,5:uL=91`#x;ȹ'*$]hm.j#ʅ濱>K:#+᝗]du~ ,{(笿Y~skeNC95g;՚EeQQ\V:vZ\J]ljI(|p&Y?4!ɏ'=Db67~B/adY?ˡn{?Y]wM%VxMjTV"W6]Cw0x"9L^*:|>`ąa} g&'|2$*]~*!*ޢfPChmpDpVɸwBؗT%7%,dQmiCm^.eeEyGIG5RTHHYwjPL PI<)4ϏEbroS$.xj9,ɕ[-{,?v7geo缗D%ࢶH̼m9b!HJWhBE ZjȣLPI٤J:mz_aiT>!;QY$zt#b[WDV\E65^:^Ž/>rH[|4P691S*qCDiIȮcy6 /ɤ(PJ?9:ھO,GQ.9>k&p$$KGf|Z["ƙ/qO8ĉBIX#b[WDVך5^WTQ^'"؍ip4pTz|rzhQH'6U¦,8:4eS|Mt(ڴGǂR]ۭN"T]t_7敯,ZloQ/2Ծ7t,͢ 4/J4RGoPK9wXsdjo~d6Zxʍ% ܷ,UZ52٠KIN?m QU2/6J3OnʼUkѦ5bn ..ɪϼ43O1pF$k푛͢8 $WV<貾ηm[Tu] oR\3(>@V' jvJ5^1b_dD:^$/QI "Bee^Qlfͯllvj9WХcJTvI5cV$ĶYcf/*Н;#%4baeO$C%{hXwel~kdmhk*N'CmM"]%L%^'*5|1qNIK% 421{Eȳ{# gg{YЊ^-Ov-nj9bEd|\V)g8fxd! FkEI荷ȶWK6Y٤QK=E,/mVV^M{w 8ԍg,QNwByVzϏQE)":5j$9O+8"#f1j99O+˿iE{;/+ʼ<𧥉5#Q4 +tԉ+e䳒vH4Vs4(J}k%kr՚kTWElIC֐eeYVTVv^_SCm6i^BGc=&PՍVwƆkq+=9Wf%kr>2#B޼ڝMذ ?gYYe5DÞ?^W*ʅ%#Icyj<c$%*D9_D竌5ŋ~!/^V^TVU䡬%QEv-|;eY^NMHH*e/%*)+8MK" [.?c~N=y(k+4(91uL҄'w5k9mpI_(CVi+E-,ȗڥE%eY4fF,VNBЗ~z{/E'j(Bb{cV,"Q5\1y4Nsz%Cxh`F_ k=Y'*=G9dLLbvdehlYQYYeزW;;! ݩ"٤bc^{Z(x,YbtYĨ^NO)3fɦņ\(GY_^i&^i? W117cce=V[{#Ԉ[lOؐd '12;CCޝy1} Q^W ^Yy~QV9krH rCYVI}R(hqdg׷zeYu&e͋*4_Kjdp~ŇpK7cBd͉Jnʢ𱍎C'6,#^%D]=Ȭ,+Yb8{9g"8+PKF{WV/}_]eйȒY-rC4LU_'d茬jɱ2,^*+C^5~/KN9 Ey(lp:!1 AQa"0@2PqR`bBpr#?-nS 3_2:~=ez_BMϝS8B㴟Ooj0sy ;/;eL=; $nwzP)JvlfF=<7lإ{vǐ *k9(~۪6}()uJVEWc2:#QVνqtЦOv?6 ѥoC^(X7B][n/Ы%ԯizSmWF^RXЭa #:e齟bOEc˪"$:)svB'{027og+P"UjOuհ/aKp+P 笝B.g'g*A7H1tY8=/Х .+{J1>ڨ:]UjoВ{BWjkuplEڠ=tne .E#e]r5dI*HF+ЂF%YNsk1ʤ\AST" +qƩr;Y2$)Ñ2ouo];[KG=$קj UQ,0u&Z7$u4(s(D!_>2iw䯲 ʔ3_B #r9iF%={VN[D${*OkAj!y:?['3Y?#-R5-aUJ.BBw4?8t'/l#/MNeGȕ3qbi0fR&FAUB,Yn-GC88%dhr(m*%7*|[ c<*ɃNݾ]sĪJ82,p .jGGrP܎J]u6GC|0&YMTUKJ׾bؔ7\8늑7bm*NtaRQ[cdF*QGֽ[NZS!BND jȲU m :U]>0tK<'ćkQi(/;&XSMR0<) <*Bc{Atj(/ʤYd} Q,{4L8}RnK"egt2mlDCTLʬGu^- ƈ ̲k= 7`+tT\E4[R[Y;:RoJ)¾rQTegW9a Ro&VPHW {r(ix~˪tRm>-tx{B Wا 5[;2:7 1&#Il+ΝmjܶSvj,hj|VF nA-nTX߼)~B9V'#ʖMH" q*GerJɛkOԫlj2AW9QISJh=u9"}ۡp{XS->wE{I:~4RDG8V)S$Ԉ5+b$WڨEOr[^%Ʉk*f*EM4?#,)̿" ʗD( sHq;3"zvL[T() &Id۽L4&ׯRo} ߧ̪]NU `WmiQ?q"Rj20UR}ZLPP^"Z"Qw)fǥM}{g->-5Cwt*i;%UHťD-"R}&Z:kpHԖ=+>QUr7Z:A`+hkh۠܆2{u$tLRSpIFnEKDeUcpUᴩs:ZI&C62]uR|($676j:U=Ff.hE[58m':hhGT蛜änʥDZaS #Ʀv-ɨҭǠR365rR1x}~Јe"e*S j`*rbA0jMo|6 m++5e泩JGW7՛/&O[MQgNJedoSL4*B]8x'Wt LJԕ8wduSe՜848kD kIdC75NE sZ JrxmdsSQU$IK!j~SevsCE'2k\)"S^{ bV.K!rOS?FMV4%fSZ*ĶRsmY6w&lkdE(&·'zZH*:*Rk,l=D"#UOrlƆdF\wʺ6WSk9 W2/sA #ԛ~Y|toNVT$d |5l͠f7 z6jЎB/aNDQmg. ê eYko8^fk*4R;ʔ!M?,}N[2sJj/ E%zd-a%)dQ Λ6~WNT܈:r]Y&r %lHI}P4~ecaml' 8G *fSѭ$p5QvSAW_]&g]K)np;-IMdaaGE_1ս%FX-O.:;oԏ{gTAq{AQ&.q lD.[It'~E7IY]LÖRB95O#YlN+*i2GTDgfQ fF܊e.$GFG4W͢e? 'f>+"3AvFe[*a$M׹a V؊A?r [_ mIĐO2t T׵t% jR#܎rj:'o[(8##)+7%SrJiVqYzfN..mtN(2Qu#Alٔ aQ~$Edo zm~lD)WfXQé*#Eȣ|H㤡iQj QoaK W"ɒkvBt4!9e' #*DcEA9j0>bY89(qU4D) #[k&&iw5neY+25RuU6^rBMg2|ϊF3MRBfC{Rc gw1 gl*-p߭`UZ Ą}WJFlr#i(}N'b"} $Zeⱘ?1ț\hܟ h7G 5RfCEЏb/{S$2: )ף[l,}e OڳM[+|G oF<ɐc:q!iK< KCUpFc-<j$D(I!ʿ"!t2!_6,S7k[}/]=jD&h1_kٛ|{4QQS堨T^kv׫nQߪ7+S .:+:ΔTJvoQWQN-Ц?2Rf T9P:\QIZk|] V퇡Ff"N$\u%U4,3v DhD6:1҂*(aF-k"h=P{'GOB<026qfMiheP| J(ow*n5АUX贤UvTuM1r6MȹE3(i QErkʎa;55Aҝ(eG2UPVMT%phG1a%.ӃlJGqCZ7̡⋣!FZa|2ksАV0+ )+~;ҾUOcb:[jjMW#n ct9DNo݌! nfkZbtAH_rTAh=G&nB>J~* EV(;e:A= GNV!e3E%zm죠º i9ET{o']5 465#jɂo45 +ג g$yhq!1&ǥlmџsJ:* s^1N!CE9B|_{ qYU|kȚ$r^${_+#Xù#VR0N*ݛy؄Ep"+Py&`l>$IJH[ߩWsT{Dک`! .e%~xMMTeo4Nb۫SO$R/ncsP/y#Rсװ*fovױN.tCg(OoPEJm~݄⎾\.T^`" -qfӧotTڲt鍖GIN\ Mr+ ʣSELgϼ BnMKH]O߰eFqU+eC^0V%~]ˈm]G밶|ƷHEΗ"Sߵ^vнjc]h*j"fk+u|;~hmc7FOvH^v;62g?jB ՕrQ3k x)NTrUSܕrc A{9Ĺ$eHFFzQKH. !.z^_>z 6C\n8ZØhŽ=P?R=@pG˧ȹ$nt0h*/hMϗOSo(~,Ćå|;GNq=M<:v׽ttwyyL J:Sei'+:I }8(ּZAI\udzB7k!*SKdB@?gͿ*!1AQa q0@P?!| /J' q\w/_κ'MtJ g@ֺ\.WWԳ=t7֥Du]M^uS%^A0 .&zEw˨\F]Lʄ;n3.US0db?`/1.`خߠe=78x̧#*j=#^gĕ^?pf"^9NϤ~RU#G0Aԕܭ}uR p St^rK:%į]JK},cxUa ߪKwee SHb_.a.$Hm/𜾆t%LyU?MJ槕<ϾcxJ@-* SP)0A ^֧1ۍMq ND sIWJEqz&KADUx^|KgAϤ_OLR*\Jз8t$9@5݆̭P{]ᗼzղ/A:s%Ǐ2|}ox'<;5ritˌ@1#Ma-a~WE]+<*/C}IK譋KSqF9}5X]q_F)u*B=[}K;瑄x@lX8WJ龷c3)G@BʬE.aU*WBs87&C.Y]@C-zh+J'TPzigAF*1o|2x/w%]ofPaԆ z\Bjสme4"\=F$61ˮz4D=? GE_C@Ԯ-.Fez*]Fo^T*j#"^=*T9>尩W"1?qWr05[K{BTQ#t1įG?`\ Ka"ht]}}OX.9N *Oqb1nbϓ`;wԮnG\"p|JjbIHKUS/B VSL]ǽUt,ݰ!N1tL ǡCҺ DU}Au >8_MTwQ8qMz @􍋜>rT@`ʪek5Ϟ+&Y J=*Ƣw`_Er|mzXdhJ0X&|3V0K\j\ZA(,}WQ*}xzBR_J_"i&+N:*Xn{ YC F L{£u,y#FK:%LM>ʔj;R\+*m!9B>Ed(Ť "*w0iZa`!Ҡv:,4;FڕdB2gArʸ)U<˴(fLd))+Zq(fj=pSSh_~CRgmTTBU!ј9?諕.ZA\JElM,Qq֌lD5%˅%R:E(fBLk.]A ]%m^2ۙ{D.I%WM%z>"v8ҠLULJ|0^#"{Em\jT 2s}t!SU KQY]Mj_xķH3/\x!~'1PerP/> ]d'^pNݳkǙWuv7pyFɖw^b"BI1徥^hhC^z,z֦-j .tKǭe\b!}.f6U=/bSqďPb1qV;zY)010f)LÈUݛϔ6EӀmV/&~g5g2ryM]K>:j]Eo+2F7Y6ebceJ *%y[z~.4BWBBNR\r1ʦBTvsWoSXr[۫ԁ(>qpBs\4bTK" =?22ž'앷xc.  4)wenjRjSW53ZX&ᵣK;aAl1V#1 z ׉/C_/s248'?ĤC]C} ހ٩gBxLtOO,T6w\ pf%SQ;P$gx\CeUvq<Ź/}Rf[POb378Dt2~5!zgC>\xDĬe<h,DjM6M_psQOaTKgxjܢ \ VN= B9:(1!IycՏJ9L9(*\Dh8=50 mYUS'/0jrK1q*mUr7q+6 C}!zX:(s=e/(k/>\ ʌ%L"3G2ف)eAy>L/4RDpNIf#g=ydTsP;A, CYDsW=W7o,F]DY/{cק0,DVgA(,^V.W[J,7sDf/U^Y/ ]eJ >uMyw3QX&  TU(T2 r}W(Cp(< .^1,8؍4p~UL7s%*+νH89[LMynYfdBI )E鳣%c-%W&郑x +p.54Ɇ 4YQϊWϪ)(0 fH|. "^p9*xuf Qcʁ賽#J{Pj)]ӪvxY~#";7Al;:qK5KC?}t\Q啮M'YKħM;zޘnڗUp%̹_֦7JfGn-'A)Gq8aX8emAJkx#d,B0eU-ӵ$*`!43Q ,|c\ahsSw˿JWp~xc+ZMT{+>[AB>_=f{5Kh=8-\OܬbQ2tB"~!ϼ -Y.XJqe$cXF=9j_̼~1eCk=1l /> \{Uԫ|Ʀ)wŜjYnUV" XZb,jL{o! kދhWf ?109ա s: rqk^h0ˣTWgw>/ay2Ի<\w,v dr@Ur?nLbxovX0;Sqlud%92:*0/3|jZM:3+Aq,iUr~;t/U{83/85s8fI  ؓ4lJڨ^3/bYбK`#0kӸ F $ _EQsNH`IH\Oq˗SJYm+4I@y58} Bikwv'YTįYLP/-K,ڨ\qd098e?5Yy׉Gc5.Gqy?Q-f7rLqaT meD\7{5Kv݉Jعz' ғWAqn54#./?o14o4L+3'!{rԬ]QK vb=$_ QM Wc^fZtUG co4H Cc}Gk̡ATvz?'-t T#-x:4is*#z砕OM*B DfzPuਖ2*P3^bYi7Uof;%֪'/EC'f^s/&C\qf 3irR}͈q4>#\M]DG և1{v~PwwLo,_ 3g 딊{Z1oc7quR{yFDw^%6KYR,[y(Aj*fΖMtTδ)|tSS F'oa k <Z<Wb-Җ1y%W1~?-i&dטmG˗;G ɉaQnWq'.?fJf N"[*ʓݷ*9H扑gv[sRЯ9f^;< q* CWD ^t9뭅?@ԥ VֱIW o)W}urJXra\ t^h1r޼P#ʌxe̹Jtf1~`\ {;B{3,@XEXݦ6%w+~N, 9ExLʚ,1!ݓ.nkۥ7\l\ )+7Gi<@rfp1A,3Hh"KqC2^_Ed;MP\^_ 7=WDQm> 7w]Ɛ+qKP9aM]r&~&nG-q3ϿR(>w[W)w=Yd}14pGf-UY|"?RzRA.ע^=#e{A3¸3( 7̻dEVK`h=5L~%k90_q*Dܑ)w=deгTC IX7ѩGiwnUuHf|n_jޫq+9#FPGxf^;W_gP4.| 3Ϙ\li, ҭq. 6\d L^q5iNW'fVEAkwƛ?!0~۴ N?HfၭH\CQÝ1QmXǗ3f -3}dSWjEق>-Lj!M՘ˑ#;! ’mWO$|~Q89>{Kdj1gK-o6u& NJ-M˹W?IKqK=7Yӷmb`a̡gyXsy63|9Y뼡Fljl/YSd,BWudÓb-vN#5G9>߄ Q,hRe0`t:8`r!T}L_yـ[)L~`V9_-)RU-yGmf-j&}| S%b*|L^bJ׼Qq[{|Bezـ•r3{xؙQ^Ŭ{ b᏶R=rpl\^z"ƿabc ."ֱT4-Hu?R^;@- (ԫ0]򖕑/f%Vs ܚkTYnX_Ļ}Jv- %Y/ajWUئa<seQ׷Ե!Vd{ ) ݣ 9ri'1r&j}(C:ƛ9 K㻼kS/` Br' f7y v?}Q-ʿT\W0}8÷[||6'bӰ{K 0q{l<20v/ X-o05GrC|f\Im@-j~1~C@vW#F\(F93J0<2вP<&b=ӈ*nt^ե ൶ opF>ȉ\B{a5J_E:YqvԻ]o>:^Pp{dCrs9rCF@fn./7 jUCXk#ĵ[$2*81lziH@9]FpK &iVY}ws/7L⫶ {IGcU ^W\D͛<+ѺPXD - Roù4ڷfK[yنSg}vClBL#l)ĽBvTǺqplW{<5,%E2pS5(l}aAsa^!˷x,G.ez.\}3u ʙ |j}cSRipm6t"Y)LTC;|jY?eֵ1s7*UO'Q|0V@@:|BHؖK&EW_=^x{P{9KZ>T`1qNk p˳h(ZO3:2wia^N69B Xp~'b di!aSM0&|N&`w"]?UP~pМXW@2W[HncΈ+lE aoxP+唴3 9}CҼe.9W_LE:,e;J8bD Vɕts)H@W%dTq+G~<\߫-+̪uQ{$=EL׈订@Y 82{sOrY5%>8_ MerQ!ӏQfaxw_$W(/xVȎ#؛֥ͯשI˦:MkpLw[*52.;] {-jE0Kor8Jſ3 }e-&1^9ӝOz3 pk ›J9Ի`OpoXQ(0ϴtp쉸^"3*XbaM_V2z]TF_ aYh*ȍ=ȧFF-xkȄM?. azT [9C]9 skKL}5G`{Cx7YS.L Kn@$^irj'lnv(w!h>Nn hZ7EQ>eu?L^"}#RYPkKh]O[)u0jXpᚡ ;%f5/=m{rwXPT|Js.U ~b\Bf%XUZ?%pG6"=B?BbGKb0 İJcA#(A^iʭ~ߨZk!/DQw9NeJ ^@aׅwIosS ~9a㨞&5v3{Ʒ{b43FǘY!f~HW0̴c`GSNIyM'B{ Uf*HI~Ogr <@R|D_UT.0Qڌe*F훬` s Q0|͖>7vF\J2Ugw)˟+g,z`^!Z}عP훏ibnmīay6'p|D/yHc%mܥV=?m>9fv[;t%+,r E;q+"Ԛc2A;Br(kW %-^;#{@eubcx-Yb;Y9}BWWa Aj*-VyX_="{,Eϔ9Բf2sZ0)c,J4흥w)-AjT,1de\mkMt|2pYpUk%E8DZչ9,wjvV!3Ī!jż4!k~ o*9<`,̵JC{p]nea`j^(GgonQ4[0 j#movZ8@';D3.{iԪdqcop+ƔdE]ե0eɩb:H"<2w]3P;&M A1}2q o&!a5ȗo).ƞޝL>%CrF"k;Hf떉˲Q kZȑ b<&_+R}!Şoy̨[z+w <IHRa >1x>f@+JU]Vp0 '$&1P e驧xi>gmڷr_ur4"U ]M.}nI2_m.Uľy16 Q6qNQO6 ?Xcyu>Trq2ХLxĿG9e"-#@Qx̍DĖ+02r{J*Wc 4XK|"/JynoqG)aJ*ߴ2?[D++Ꭱ@+ѭ2ǪD}lC=ؼ]>?s0F3ud*_X]Çv#eZמ8سf0b],[DG}rejJ[@]PXFwx?k{(ܴRӉS̲1]7*]ys"Jv14*Ŭ1w-9ɦPbԵHwH-3R.j3X,xBg!tK08 !Y"-R*Ɖ^˷ f)d>cAgO?\rJ٦CY44oĢh}[BU^?Y| $.IoAzc%i{Ŷۋb3n7F\/0)g '-jw{2[P7QW,<8f,S4OTpضVAuASӟTeД#G| e#ih\Aso2I̸( u/WfO ;;Բif>e]pi3[q(\|7sD=4y</, =]V1CbF,)a?H:DB 69ZG+;)JS_*-G=79~ĥ$(ڳ} V)6$?dCɈ]saSbk\_L_#LN~e{OW<9>%;F e&}JXU{Cԯa[?ߞ@3V#~aeA. xW3-<:V%yEY3vi64ƌ/ k2E\)yo%:e!Q5lJ&w[גñYb-a)dn!_=f. k1X`T^㊀-lNe!W&#@p~7F]cVs@Q!ꃹJdKkỘoׁ?ijk'ٻT @ ؍(| */*129JzTQ<\erܭ>CSS_b1{1*1\2Ȗ%eq$F$;% ̿aL[6q9Ad2RaD!3g*>S*..Ȗ *039~SG3ߘ$+3ע Fw@R#n\GE,'2]0#++|2Pΐ-#D&jۼ&,ry H%/[6/Zo )>.e^ @ 2/%*+Ln&g;Bp.|@.umN%L`yg9LJ q;ЏvX5r7'7tc{&3mdck㏉jc/'ybꭾg#Q.{_CT˙Ym.F|&%j?}*ıN eRߌ"WK Mﴤ]uf jl<yr,M}ˆ&y*o;O> `w*,[_~ =}c N=@|:DFȬpq㙊jr;Qd?`%˲ L(ث=l%N+edv%aWF\<@8RyH S]wXbPZtf_,k=YDᡸ9J(`>y8eifVC1*ȒƘY2F%veh+-ڏ.&ckp)㙄]®ҽPNql%S]VՙRXJ͆.)Opff{S~%.Ǡ8JӸ=_0/,_+*;7A]|aKNtL.w# vp)-oQ[ˌ'axfe2 0\eЂ?EK/5,C+Q{0[ݝaLxj+14ӱ1N%3,`UeFy]\ _U_(6Ơhi]JqK \_3,RvT(qsEj{5P,eWF04]U6/\l鞀-Rj"%%ER*ib"~~ZǏxXֽS9l4?Eq3f|#T#0[0@"{tPE]}f{M* Fח%~hΔ;0V97)2[\Ȼ[R`FlTpYˉBNnZaWLs $yK+ =b{Na|%ވx;K"ې|K W7* 3._L%oa=9PE|LT@ꙥbGԮRYtKasoWw92=, ^YT_j4{>e)K2q dKw;~^v21*̕X^=܁iOUZa*\y"O a/bkncBb w;Q]byV3܄Gg_3)w 7c&yiؘa9v'Z&gTr+SC 5-o\ s.V]֪Qv:s6 V9Z`l)!һndЗ<% J3_IJfhFZ wcP4SLcOxe+U7MzO@!c_:z\Xn#3=)A >a_i\ {̹x諮M ZE ?1K7sވxo1Ipb(.^췹*U1]7Ohb%h,}ʍT-%@ꮇ瘨1켹]j`EGtGxqMnL mq_x3fkŎ,WMKxgs3m/v{Jpâĸ5qFTj^8Cg1.N0W>c5NF F>Є@״6z? b_EWħi}(Tc_r݂m}dsL`1@Yr + 3& 5Zl^iFT=fgǵ<ߢ_2+:u } =+*=z=Aj[bFN-|@ 1 +Anm߳,JkAAj%]vt,>/Js K_0QlArN Q/i$JQGa=T_]*EWF9U;y\D h7p+l3,LʤAA!pz@a0S{8Rce`(E:[3={YxFjS*8.13cLtS^&"iifqBWCРw龜t( i6o8:HN)QWf9c=Va`nm"1}I];!} }o!Ƭ ;wFt% xWH$1 i5c'Ulv |l}IPĬcyh> F ee8E\A=ѹ%8 ]XcEpL|r5<+0aԗ/Dbsdcjq)Yz!k[nakkEF"^~/eCQuK ;LVZz.{x`w߻2@lg1= u+f KG8Y̷> EܱX( s԰UϢ tb}A")u̩D̮jGP=!k4"s田!ESSlɝK*kz1e߼h6q tEc7 b<=[Sdmh\s>MrW&5J5v=vg@@` t%99Zc]j EvoQ;C8fuJT.@OʕeK= GS5q3XDfTm)xhe2-L3qfaq8K#߉γ-R\oU!1SuOms:N[2.A5|K.$fa?s=L\,'f]Uo0 |{Jp=Xc7qڦO0s KTmX rłلq5J^|AM\cD 8e,;2L t7^"$Gʛr|K\ex(^E.rVf>ŲgOUE@íK^3^pW3eB Ňp!˹/,f/swt ߪJG71QpfCr"9zU^N՗ [4 Gp;b)r\K%*{1:%?pcJ39 ņ:D[5|0 uUt RjS-:k1ߵK-}3(kQ6˼~fE%E@Z瑂-a#y%ubJ3rPCVj({_;+-![)|K19 `+$t%H<s7.CMKa2Dc f ıOע&dJ.,E-̶  ~Dž?]ؔ \b 52^u:;=@Rz6Cԩ29[]ۉW1∾ٴaqmDŽWIK7}T]Ebۆ"6.T)& Pm-Ʈ+5^LY2jdD=:+.Ⱦg]ŒJ;B1Θ%>rx"7%baтR(]-bc&lAt 4`椭Mţэe[sIT)䮕 vPr-gf8 F^101oyYcu }JŒr؜U&501UMʮDꮗ7*:&="| (ڹPQҠA]PASkLz>:Ra|®F~X&J^PQCb04 P;#~:,M*%?R5<2v{d3P;`G3yi̥9Z{'n5+Jr,* xO'A;Jr`>kP^Ѥ3~]+dcs5X8O h>бy`@*es {hhbKKhq0盘z?pjg}*ĹYu %BQ.%tNR9nBZnʲiE]j7g1(9uJBةܦW @̊ѭEXt *~2 E9 fNOik*w4zZ,v:SLCMf:=T=O]*tb\75k.Ba;?%hoOx\BY,V!}+ UNR]6 *]ž:C2'Fu`MOl4@Ոm3{O qDCut El[!Jil~vw!GD[<@޺DPs;N]pJ# pm0LYWؚ2TS|.<;B ?deL=Nǹzږ7-ăO,U4LB Crt T5 t̩@|iA"6*Ka鮯K20EҮɓՖ\x/JM0e՝1;twNHAM{Mw1<楍ekObD9s/ qm+x蚲~oMue  jEe@ 0ϯ(ԝ\3®eB?8/9L,@V '2 ?B>?wW6y_! nW`ZoPhyC lvJu*JUMFԙrP=)U cd~ȱ4h7(ݦ%jb%y[X3Ff/Y"&[CO[R_+;`)8];5wֺ7ңCUeu-/G> PW鸫5/j[Oܠ&ݷXinfq+ǬPs|?jY+[zY)-ow)K@q6)b%r7ly>NQ3o$ oiRǺu,9ԭ](L9wyd^TmmXvJBJ+t:e\zJKt]PwAp(ElWF^%JGCkXQYXcoOEnh^H1Fg ̊;@iQC1PVb}5ЙDͧg_2s7T%uK"'~7yC2:īwz*_J/GP*+ZzS7ݍ @"F!1abbw o_Ri|O0&Mt SR"VUĔФ'#&ycjm6s,kNDzKl;zu|: P\g=aJ\ J]JY\WJI9qwk/ht]#N5,P䉙ДJIf%K])>VzBTdjUv\P^((Ub)R:Կ@x)Hz/JǣuY.NӁ*7HJzkUEPf`]qK%s/g.WJȌ)seA<-ú ,Xd/~8P!$>tVٔ$ b I8N;G;@G,J`GQ_eB o\j/zne,2binF2ĵq IɁ.hCD.BO)dVRrˌ6+ߥĩR|tҠC_$΋Sf1 ^*9R8f#fjr% xpqsBڸ$!辌Ke+ʶ qUu5;:3"pWS+ s= ]j< BTCfT]Hb:u f},?%DUf#,2ĥS= ɑe\$@Lnw#VT=OKG]1 gXBu 56WzhaE7ߣ)RWS?j> {_؋?h|!+QUeMt#1JVa}s;,}*j\kqF? kxm'PZe}LG>Pf*TB1 :W J+I=,xT!gyqŧMb }#Ё*11@8j 5{BuмSpo]ugLwpAS,AN N{pvvU~`2B3Ln\:ˏAǤS~]jW=R sHGSx:8-#0p=2fM}dB[leӌYIRX@D#١I}K% ,Zզ$a'#>V9pHn`فJ$ mahB F ═ᥗ P}H$ XYu48>023=ύtqI$$[f+9u>D`HiyI8$Sd5j(I$k%85i2/sD~%(] 52QEEKI$ *͇)2]^9+kJ&UF2BR9xVqٻgk@/}[`E`LPE+H,mzQ`<^] -t==$IH2` 0,|UD.K "Ap7&}{C:  n1k$kw;\RLa0N 9)t` t)(M_mCnp"ouRc( 0)6Ȗ8$Ŕ/<9ZFT&rD ;gDpY18!l؂>[TAM'׊$Ui k4M#ET^r.= 60D]&yq!$$| OOx`jQl Xh F8훬5b-;o'eމ)aՈU2nDgdZt,'ϛ?=!nDڜ $4ox/NLA91Bm.zg w@Ē[X~/1JO<K䥑!ݬWݱe7zo;ڛ~=o$l\ L(i{#DPWnx gZ ~Im./y!-P,Q O$hIY|4@yAXXI[;&6A$%OguXOO}zy'slK2rEI+)݇lϮ^ZcE؝jB<)T5YL}؇\fQ*G ;;L[i3J (N5 pD,y8 b28U:k~/KⰾKA=+$\hRƦ Б`_v&a쪷g<~/b$]18qmy|k礒W`X$CD2ø}~L'$0v\PnI eVqS CsBr:9;f^];9$%mGC#692@41P2pD N[Qso,l9%}-3D&u#~SBOƉ `B5|}qZvDޜu1p9$o,ވ@M?03gʫs)㯦~dȭio}u ަ˛Hl¤}/9|u9m#S#8M`;>z!imВ:oq(7nm•q9JM^V[lc|B$:~eOl[8L O^Ăt/V6pgȝ{ ݔwn:l5^Au9$U ]9$mp$lşml 9h̰ + /EWkD8;;JR$o?%^r(뿬.&Y{%$ P9[pk PTr1d8=mbqMӳhf+ *v͚jKDAty,:dŽIFG?T(dA]y-3xwRKBMH-ذqI"da]dÖ~qnmĦ)[Y[Zy&䖛$mj1T(qh\vw?[mBIJ[GkZ$YutC^AMl dL]ڭcړm3c J@TY\خ"KZd\Ub$o^\|R)b۔ i~A;(NvЊ9ATb-1PsJnP#PS6Ǩԇ@P*B-6*mk _ l !bj|}#ԁ˼ VBm1lػ=|Eesaùo?x?%)cc,fk$ӗȗESGm˶w ?nq$u$|2]-zҶYQ7ck5[6h5OFFXix9){f)JsǬL^-C7R ä ݱ.+Y ^D\\Y7+!k>w^mPH+n |ʑbW󪒾 1!d F+.-t4CqU]1رuIm 뜶g;~Y\JznC #]kxZU ͮBk%LiY^6?l JS(|G~> !>TTjAt \=mتeeJLLj  *|5<,Qeoykq8Ը]L RRH h:asOM q ǧVvL&άR]¯ - sF\e7t3%_p ?o u'Ӥ'{8Ai|!m_Y?!kYp$_6i7j&{է*Iύ -N[m`~m`s?Hi`Q;ГNn&zRh[Vd(<En mε<8I6 N*dx~דGu<_s*}-`?d^m1mR&5f3ЀEB٦C-@#ި1Oh6yIǮ 5l*} ms|r$;(_-nmj sD{|FH ٨ b;j6)ɶ o[)5 /m jD)Tk:yOX# Sf (öy>1> -;(G;G+|{3[%.9զ+C-#P/mL5( }vEb~۩إqkNǟQ$p]ц W*SNԏ,7\ 49YPA,VxDo?۝$YN"368PɢiͶ[bkؿ۟gZ)֍ܗ7=RX]:嚷էSHFX ~GA=?b-tosB&U `Q$7鸯"mv$[@-k3/(b0)\lEKR-:8pE|%y<c{1#*4$89R$YW*0guovX13#$Ii4–u{AÚ[OZ˞/C]#6[%s:ԗw!q\sJ'zȹ8jIu`UIp\i(?K* ǷO{bdKXD%݁2a5(EdAO6);lN7W.$1w.!M9)$yA)& bCR]͙59aq?= $2m{YCZW%sR8mvWbi嫘z(*MD&VjTI)ɮ|2ene7P Ke1u1=ޤ%TNyKm̨RIII%Ha!Kګ~y)\k,k6 ?Ma o`M(I$R$ʹ?>)sCIc6AU[ DDjl; weV ^f{=r ,󼳆}ve7}üC %V~@! ,GGQyɒ /Gr6TcdVŐq!܇P{<`dVU߆Yy\ a d댟 AA!Ym6L͙O+}DAÀ:eikf#;3)9$ğ؁[a7~ "9 &`˽rY,<2Co9mLjxGÃ,mH$-21$-A=dB݉7Ւq'b%6'aٞ` ?2ݽ \o98rp6 ğD/V>vHb$bg!Dp#陖3.H͗<'#08a0xbBMճR˽ 6&'-Y`u+ 6gAqKq,gV`,SI߆EնDs L˶>~JR@öզ1/6ll]Cx(bm?N8@D Ygq&* u.rT= >vx=O.Y /ۂ{wbYݾɉ/6=Av7$Ia̰Pw)myY)eq%#AYdAdc180tQ6-Yz?vgxxRC/dO87,}/[rDC!m fN qiy߀D/}xG>!uqt}&{2 %8_Sh"dH<vK0ِ{gn,$rDv}B ~7b`B#Q=f7>,2ommcpvie#A  'vԩ ),2} G>a4ȎYMD%dpȒ`s% A;A/%a}=uC׆pRG  Ʋp녇Ld? "8 mJW&,Hbz/~ws>)-itco%qX6H,Ӹ]a|A3!)Rضb696s4q6%"{ z~ݰApAppŖ-ZA#~lXXr[envZ}MJ/71<.eX؂0:> ے/;)gxrm!sElG9Ym?R-Oޑ{mg" f #kXTn~ w&&JƖH88U|-{ w|6v` 6 p#d̲Bum! P;oaaaζC]Շ>$myue] ܵ3۱(*K ahg!>ւ}R|#_hАr.3ZH>߆^>,,!n^3 IIcPb6 *?VO ׆2φ~n}pfL'x2^.9^Y"XwlIj $:!?W< |@͓yǧľ~я,-7pg^_!`%G-EvI,͔#Ðr캳 0r˻my-p"K2$._zeK:-q%oPLubY` s]S^6pZC-~4]rm i;{gsz`>yn-xK O/bb6y Fbrm{! JĶmQga7ogɶ|=ۜ L; hK{~@ acZ{81{fRu&})H^ fo0[=QvX,BF!gr &Y A w)kc f!Nq Wjj[k6ݛؔϖ0h>2l؞'GQG-(⁶ReRx䰜yټg3dOo]XCi˳r!Hj0K~_O`Y6,"PSRW7/w; 6~Gaϊ/8ʇ!2wjЈ ]L|]ϊV=@1'%%0mcdnbu"Yؼ)oNG?WB JE 5ͰgFxI!>f(}}? l_pr'$Y`Åm|vӃ~y?bN3<=dܛy >oXV6ٗS)1t^X"BH#,lY^sm[`cnXl.>1x}VΝ2̲aV{-KY8sc><^1x{ʻ[՜g ,k/{-eR@|k=`Yhq͂=R%]gW/==ÐK"%xgտ\,rf ce!vn \7ho7sU\cFP? ϫ-8\YgY{luik6ϟ,:şltϼ 7F{uho,y(׶z쁏cd,l?ch֧cc12&K c@ {oc$K2l V1 m|xry^<<0XJF\6=^.tZk-Z#S%,z^eYJ<6 |մjX ` jmp] Uo\iĥafeuǖxϊ z_A+sm ܷl;D|998O?sb! !%Kc:ѯa Ԃ15q %m<g7}_!>Ϯ3c5۾et2>qdXXbY6S/xԐ}12[3|ԢaC>p6&q|zic,~:NfJA?D,=} LK.>8>ݖ6;8&hL[a~,~m3խԭ bYxnE 6̎,%~Vc߆8=>ޒl-폩=y%IϚA yohu`bI3\.m'E~,S[]9=8DA$,>&>2۫}]Qd{$kadV/`:',ePrlAz3ݷMp%P@^~>=Gx rxa;dn8Yd M]smpu: X#>'KGw}rٞn^6Q,!hϾV>Eoxa"?sg=wt}λR陘{=ZM%|v.B얖u(rFS,<[ՅPilD2 zc]s[z_VǂZu'd>Nsp$;)I(sg GݖG^ˮ3rsߟz_p$}N?߶c>:mz>Aru9HOc?b"-L}}K ەK>ޙ'1mDv{Cه>X+˰6 @3~|!}?ݜk,=w \  ͶY֖Ot.wQx;Cgui^wtè}O+6v21>n#FսzÒT828uP~@+y}G+VP~F8;<{-?V71Lv|.:caR6^1層wގ$]n/e ~HX$fٞj>F_ۨÀc4w)u&_d1GCc,&r,$ϖGoû<Оg]Gtaqc#7`;!/pN7'a/v󌺋!a:]ZdBv;De閺Ͱqڝ_?}_1ވ}cscQ{Dv;CωB7,c@; [lyw~?x~ۖ6d:]{6r$wݹ;?|/FO_ah>^ywJY`B]ݽxY:=6>^G}ww>Q],][q۶V'܃-ux>l'wܟKp鑗O&\e6]Fw|n9&fHf>Yog-.%1Rv D7 ctwϲY#/ F_|F$K82 Kvp?Q:r}Y;;oB.xXych v݃d{2%Koe`VtYdy w78k)6޲_-;`Mbz d\c}I&h<?{Z%_vtg3g! >l7~Q/`$?Ս`\B]f̵e pr2s7'uHG&ggųqΒ#{M d?!}F!@;#dΥ"==_x!yw-aIʲsFRcAtK߳Ye 3:> 8>O;/-F@Q.N 'lf׵ w[,{ v(r$w.ǤI1< ]%ch{^'XsmٱZ}`qaM0'<~.#܃8I' %NvR0~[Qaw,Al} XFCl jq Ppo:N{JuivvdQ2{%,1eV$|K儷5{fdu݈l2X=Gճ)#Ǩfx{¶0[^}hX}m7:L?ǜ5`;;PxXv>:Nv Iu!Aa.ǬGvNkkW ;7'iiuw3QCKcw>o}}0}!0wv{voI~Nܛo ,~Yg83sN,?'~.sZ[Btfcdu7G\C܌:&Z Ngo{2h>M<{hWJcD jO^Y=xK~ 51݂u=G8=ΝXe˷lw}ţ'5M4߸0Έ{J;!R%W}-KOrg#I埜 4'}{8ui!g1]@oӻ_yfZIO :xޒ-Du!qh}^ų: t_ '/ " 3d\)2dN΋:~"v?Ere*]Z(7Wp>g^#gw9Z=VK ug{w9g7XxAe錮Gˮ6߆2R/ D&Ð;HN'rջgCvx?K,$}6c-$ΤO=C']跽oYz0m 3Ͻ3l,u.{5v~Yϩ70u|.߂W|-/`$ޥ[#OSs@vCkm>gV~NPggR.76~][gluyA[z2Q^?b,"$d׉5l͒|K~x8Zo)G(v:ԃ[~[8߫pmK^f`]izQ{wPFA3YfY#e\lC%ӹTx*j;lCܱϨǻ=S%iN EԏԯFwϨǰ==_|omw YpGmN =GD΋ v̓_g?E ifF/6,"L0d=Dflv"Z loRݬgEc:yozwǒ[p@ZӳOv~qm*߈dh:-dnݷYg.|r=IG'Ӷ|!OU>ȪIW!S-Ky.Hs$thgA"Aѱ]$QqXo~߆Վa#^$BnHmm˴o-6 ; I [H#43 &{$]@.Dn;aKݮu 鳾|"s^t7m2GvVOYx3Cl޶{A^w w3ԏ> {:ԑ&2=dckaV= aZ^eؽAu[:O~uXg4[XV~ 8}av8_F-}7F&ނNΣ<;Pz0oon8o}^gh|`wox%_*2qHv|@= hQweK̔zǖ՞#;azqƸ#''v~P?%m=Go^팓l; ;({'z]X}xu=s{dNia%ᛝ+C5Ē<`N}؜" ;o܍VC,奶qo9u ؇Є{`y({{lQL"Z]7O8#B=@n,cP5/܃/s^1A2+k'IԢD߆!I2R4Zrg:Ӏ:)5ZnYR_2wy8 :{Nxj{$V;g_|w݇?O,'̇.fDY%ȁa?>#^^ywXw`"zZViՏg},$' #ӻH~9$e+D$Y-.)6=Y&v Gkb|8>IS1}%x9 OnurVD>Ğ&ƽhsx_k:v-'+X ;=!DL'=m [ ?Pw'%Ƕc؆]N;~a!|N#dR{8yltdWIN{_kf0ݖ m/mfbW3,,Krô狼dC' TrܗQC}(kVw3/n6 H ~$|pryy/uq[ݑ`6R9F,;KIcRVΖINy-d .c{>ß y/2ȳ }Fxq6O3~%ܽC4Fc#o%Nlno?dS/VA=/H2ղ؛'Ջopi ?f[yv#="uuGVhD+ 6&YfZ$>>LV3r1X[rL^ujN*;اL6Բl$Ad[wnKO܇)iȺ$f3VGVbgK&</׷Ԃmy!ldqA> lٔio/侈2 5Nӫ;X. Zt#\'3x'Rw 2uԝܡհ!m+"_"x3̱Y;@LCF# O]]HQt"QgB1r9? y"Of cv厣PrO:>ݾ:э`u-{wCG! N7e';/%'3lN s#ҖN}/cg9eJ\Msb>?\9D6=I:flWs"ާ'P̂13e'Rv@Ngo#a}v9Yq/w]] @* ܔqef+ޘd:Ww#l3լ;w %{gɻﳀ2!#=I/zY /:SMh[ >Fgp8C}!2S`}=fM.fSX^ "/)Īw݁< e{wZZ}̺/6{C*H==>/,t\<ώZ[1dq(_i$ ^ gvO0Hgԁ1ݑV^^$ $l GwYCltR?S,Ȃi.P;dX''ad/&?/ty{d-mvw%.}|6B鎾| d8y|wW]gVu~}Mu!c;z #SӑF`Y*`e;ܛ8_ז"z FEB-w/M.L >Xp7O0:D/Z n1g鞽IG 83^{E Q ݐ{].R95z!?!dr_=Ԣp۳LS >q6| "C ԶCn۴aBq22cc,.~;j_v8ytvJ= l_~$0f//qd/Gc8ܴ0"[o|Z]Kϫ#S#Ȏ#u"0-û8ye lxt1Ջ!pg1V]bd Y(w.>,eq~ɒ~N.Cp;& ϻ$ȃ|&@mϮ_vw=#P&actņ b1#6&m-xi wwy!o1F, Ao2Cw0{l>'_Mq2?_g)%pk;'[uc}!m-cLG_h;|oc H]R-2O} =-%_!ތtaྸ2 0Y$)JCA%%%smWRnýHju ?">^C,VX<`>!u>ܕ~d! 3 ]F[ͺ! GlmrMN xz Lh?,#%|6_k2F ua X#ogcyo7߁/vʰ-g/2Ì~d2/FȖRP0O`|J'/={g bd\g3e?,ΎA_ɭ / `ي͜K,tɶݪfnOsն[m }B>0f0xծ2?Lb9Cāݢ#"W_vN,"8Ya$l^H_j߹3fܘxr_ڝ6ϯ0q3l^=!%<#Gݰp=ÓU,+ FIěr{=[Y &>內&4pd=ZL $2h/SS.fa|b1^Num2l7H냆]eg/̖KM-~T?P2_Li3:qlamYV15{ȲVdAIICtن:ul>=;Ćxfеͨ6&6IOW&/\pgZ-mN)B@lg?g>ВCܷߒ>A;}6?g~Z}ٖYy-8lxߏN 0NْYʱoClf7VYDBagq,E:y&[r_2ηoX56̂"s3SGu6=Hz-r߆I|mե>{?ݖq!HFWN㐞KtX_p,d)$&ᜌr,m}o egXy8"boI]O\yM'ɖf#V۴8(t䱷3.qG~Ȯn &h6s|e#n|Wl?1Q93G|yoN3{9$we 7| cG:yi p\/e Z{l2YI/w=Kor,>?$A' ,6!l` qwÁ=9 9YuCm9g;.,.p/2-6M,o,"'q~@g,: uu u - _ N4\y <2&9:-mx܇xS.%vȽ8`Ob gy$do &󟿞Ya}]plJl?S/PZ%dpYdIY~/#^AGԂwb_fͼdeܶqNwc8 uԯM3B2!lgȈ ܐ@l3olnm2VGlp?B0PKk^ o,Kqrv6 Y&G,v` % N,>q q"^Gi 6z? e-S7C fϲlrt#>S|gR xtiqH 3c#3{p{ំpn k#SO&1[6 aJ5Ϫ wV8YcfGp-d"ݾM@[K Bx\yol2rg#mom>2,PY<7KԻu$ywl7ٺsV|R goNcomA%L2&i0}Ii twdN%O\(OS#l2ġ v/?\ eߐ1,c]m9,Oj-0I\,]5{O%]}X=m_,jl,,?",}$#B,g{-o *^]/ktw:Jh^}:qBDM%xlC>ycR_*!1 AQa0q@P?8~b,X$XCkKl"m PAi|02sٺ!F m6y B 3 DwIeZԼ,$Cd,dfYtis}@swAp_rYD99#>]DͰBPeX,m]86xSo,OA>Sgțw"cY݄薻/9zG@]D|"82&7aOJ͖$7y,bMYmF%CUڗ},,c zbAZXۿɲ>9`(H/$Rf8Aw pGu\SdD.$1'0|[ Cvxg{va~YB'S G~KeV}礢)䯹mρF P>;m3+Y|-Sl_l I7xB#ݶ~ʁ7lͽXIa1sNy0 {nXgSkf.˴.g CnE݌A3lo Ų,b doc2>1b!=;ړ#oa"xe~m>漼 JI YOu$yHm27?quD7ߎ̲,!/ov72!տ ,\,[=A~47ԔՖ4&nz^4c|Yvq?U7<-sD }2זN!tG 6%237.>Y:[Ƣ[v1ߗ·pbd%:c ?͟ m>:㣃g=xfc}A{5%ed`Xu 8 uA$Ym\!U"pmp[kjPYg'A.wM̶iRՏDzeH[Zط ܧPx}Dnڝl>'mᙳb!c>2-Rr$&!`'BpYYa^qŋy;d.FX3/+l,8SFn]ۄ'0k0O}I'v,qn quF F`K^nk,:_ն81d#್,J6g;aܺ:ymyٞde+dPCyj}_BͰ`|󉰝 "ڽL͒eL@/RNq }d&##$-n ߃lCxK,y8e 0c8r[mGedl=K@[zkõEzɗe/3Ёn@@#@v/gśv[HH^OK5%cjs[dg-vH,88,ue!AN3,mp;xlr I~f6ں{k ;dg3$}qw/)gwR}~./P- 6VpاL[[lVM7dC#g#o |GCdMf^,윰6"VpXYfl07Pq ~dͧxrrӀlLP]"2pq=2쿘(@ XWv0-bwwR''R>E٦6l#ޓ{q@ŐYlw%-~R3yC(31m7}0y xlKl<8N7/FB}- \AZcƎKB+?V۴`{`/tBu )5O@#tie g 1xp,'X, 6N}HCg43 {xor1?IBu丙L gxLاr^6+>~=Gv@೓7O[?%,$z; SO}~hnj[^;avFlN>9ſ ,AK 0CԐȺ!M^Jd٥Q3tc`CĦ_O j;.dز ;wGm]z1d I%^nD@Iķe#љm/Cy=CVG##:(ddQ#ȶg_ g}ݼgam #^:^Ȟ6^g0v^Mɟ`Yu ZlNd)3pA'yoݣ7[sDH'v,Ua !{^»1?AN_5 c1ϟ8C߶ȕs<ٖϲ#(*bx9! Ka=p؎H89s#Gmd&zxy:p !ѵvc !ӫ 98\KRZ=a"דV#(ziz/ 8~rl; =Yg IOg^[_KRYeYFXeƫd"2ri|t>< ݎcz-,?2|]@L{i9[mY"S%c 3>&^-lߤlYeg =lˏ^̎';CYld 3T5lA~іZ<ԉ[gÆ}E"-ymſ yx%-~]|2:Ņ~GYfr[`ᢄ$6PY'"pfIy+=nA>WaҾH:wk}U%Y,۬%ҷFeӰ,)UgO}%-ώ - ǐ{3dm B2R]I>߆Z7MR}v'O,pE xL;9P||b_B `a}ji;ax3;!̔uc`#:-7# 0yhw~`|Snldd0lw? .mYf;nIhěR[eY>6x iiGH`ч%6G9y:(joScaܹm&MHoi{3(6A}fCӹ}gcGKlC.'ic BsݝEnprG+mpr`>! qt}9쥜W_ fg2,{7~. rHԊt~MNF"Vspi=JM.AUX =%[}YԬ35ݶc:C{돲|۪ r?<| Ւ ?w1Mk`>4K 1>_ܤ-^qOeMugÿ>p/VG;8K*X^6<:r3 #FNU:@"oܥ=}6H`81lV7g)I=Gna I]B%QB<=Egqߵ,,,- ԓoZ RѺ%yN`:I 2woգ:6)kDwՏ{DDq!cumM:Ngze8N"0_[sIm"~ľ^w n5$'þp#n!Xq=NgGqV*[>#dmrm _%kJ䬂p~vGbCHED؂>9g 6w Pt 7?P?FHJPiBSgtrݝی5v?A5G]f?VBi c VAޭJmjĘ-بO>[@;Ө]:7k,ǿ$"lvHamdwHqtgY;[}yt^=k$a- /O%#9YIo%e7CgGuq3>G̲R !{-=jX>!_$\zId"Ǎ:ߌ. sAGW/N`|=m[wE%2UrIN/ټ׾?EަOm1\_@ a3Ȝ6䵷8/]M c#'Ӹz<8ev簸#jO^w7~SͰ3^C9ǹ,>]cOr- mgR^&?uھ,q6߰S[vxϐ|=X* wgpd}K.a<ٞY8OoH/=-ӅlA+_WS/I>$o,?-Hk8UٔCyyad)ГWR=]=}:Jvyݒx8vM%`Xgs!}lc1v8p鱟_ :%F6=Ǣ\cux[%| Ack,Aݺ>ΞK}=l}J꽿$hK^@ /?8~"/ qpNR+hg? |8v8-/;f'r1]i~`pg\ד̓~ԫ`nCxä6N_ܷċ7L ?-&y{䟘Rf,i"_ݼOi1{ߩp~&ᖇ~버b7`7> 'S3|DOm<'o[fAϫ7.7ݝk;fu~`c=N1PIvu8KOT>۩Fzf >Gq&[o9ǖY[x#1ej#pw~4OMd'~?xI8A 0cx3m:ckWߩ1zvx[H=gYT~욐/L>${c/MvgWgu-2:rwow]'WtbEe`ײgz$,㯮#P{sZ6N`1:~z&ߩ/3n굂K ^;Z YdY soԎ1a 2]O֗]̯OD]<&IOKoPS>{`Oeԝc}{=Om{=[2gu3J~';Wm _JӸ ,Dۼ^Au]$|H!> Â#;|]MYҏmdhcqXqbdfD7omfX]F:ϡ/&UmsۭY>`<>;,,>7M&o37lv (-!l߄fw>u߶w1kHԙv'});XCUᰮNfN<6ѷ8'o:6N=>nV/ s^$eRl7]aαdY‡y+WS e@,w>C/-!wR0! MQD}Y`KUͽ??C"}g$)2;,]ux>tJ^Ɲl.ɛ+6s;6ޭ-p~ C pKl8vk+ ~gX@A 1//.6MCiݱ^GG ,#z:යL@Z}x[Jwk;uO]m:wt{.=!;a0>Yyma8ڳG#W!e;oe } p3rK;$]q;;on 88A锺:.>+5^agI!NYaIT}潟 Ϣvy\6\^N{a7`|U埦 q݌ӬtelO!{vzm#fvطeII Uo nOx0xGbo_E߭KztKdԷ;#:'gWo 7I(1Zl8&pi0#I5կRXtG#N#d-O,g!ut;c˲ϵm9G!۴[ׇї?PRih ]D8/݃|\mx#s)GF]'KDOߦisIeedIdua=A}L:'׉~luh9c{Û Nuhi=0Kl$7I(퐽Dw]O 42]N?4!ԁS@ɵȻZm<ĹKn΄/(d _V/lf@8Y"MW-{~ۦD[_Wv~dYXq|(p'cرò7rY{:Eg;w-w: _67=d%i+.v_~3cȁ~A{ׂwv.dqvY%"ɤF(i/i,{&?;?WQ~?3ջ" zlXd1 :"ߵ0w=zwG9yeC 8 dQl=wz:av9qwfq ,{Mtok`G`#ΏݱA` Lt?n׳ -Ӊ,Xvc쾆zS6ܶHtp'YͿͼG 6bG<\ǤvajtnDC=,56g]Cݝr?D9'1o]>CLd͔8k"?t.G C_6.7V]?l1j=yCz|a'.2.;!OLJiݏ_?`'<%WR?6!w?v{9v^Mk .o-{ =\$̞?0GN#]hX~ًݲW{V} &<=۽G%}]L&L 5ԿL1 V8N gӄ~f\YoE3colD}plY{鎾v>!Yo# wOH`6mG {3c&'vHCg=HRT?St]̰΃ղʬ@X`{gߤ~ eA)Ű[=q ɟ d$wĎ[=wtwï690O`lٓnަO,!ovՋ:Kν-1Zs$65;7BjFdl ۫6]#'`ttC= v`{rop #:άn)ILe"^ 8Џ'=ǻA e4G2k'.:zؗݛퟎ/j` ,!fYI }ĝ ;GR- ߁ˮڻmc >A/Cz}B:de}f鞎v:wwCQ&'zh=7Xcld'݇Se;mlĤ]gS| ˷2~ `D?`,܃QN~8\M12 gn^ܿWeSo%džK6m~gvCsfY:/ɕgݬKo䶼mLuvN8=6w1ίPBY4`N{ba+ǞIwnPzMѱ6X]ّїr(ԝ˦yduB9_ :?ulnKD;fdgWi=m/ٿ5::tAd;=^ذSPݽGVvg><ID. V:?|Uh0{˾;߹!Wz!,zpgzlmlHK-Gvrrt-0'G ?0F5u+޽I/[=1gvÀMڗy#IXpnmﻫsAvYZ=_ݟ-=`,ܛ{nq],لml[m_-{S^d:,pMg Ag|gt:(Osapz1>k,o N }Rc\,wO/kIͰԮ6O2|dc9:t%/Y78h[A KtǓLJGŶvyD~n}^ِmݟca^K2acA/m`e:-lz1͟nj!6/7|,$螇i]p*Π;N]f]zu! 聛v:'z+, ˖9!Ad/w G C١@'lwe V[pfܻ}l Z[y6|I] k%mCY I#,R!ޢecw%QlFʹ%Azwev<7@c 3-gWLؖ ܉ntdsK' l[#kρ /zWoZd|; F67\y!4a2e琛eg,eV,z {$gl.DA'/Np ##73I AܺwşP+{vI'Dɵc]HvMṠH@6MdY 6D ς.{`eR݂]g>=Zó‘]O X6,6Ype~p28 Hǒ{rej0> ߲&ݳv.7^D"go, Hy&@m2e_6gq@2GkɌe# lsW'i-|Iv[=GC %̲rr,'!Nt="Wdo#ի xwzp>3 ~/=lȀYO917F_Ox7/q nλ p'Om".3`o,eqՌXL`?,303Jޮ. cs;K 5 :?zԵ݅qŸ#@0Ky5-+ّPICu !5|wl kyc/}o8fɜox&1e3< vXş-}>[$!`J:!wWYՋ`lw™ٚknëJwjNj:{h$#QT+uLao o 쭖66-['Y?=K[?6O~o%2Irft'W I_~.vrݳD,-& exCmO-}|][Eس zỮYgL%d׍!eշV۳vEϩ77waht6pr [se! C>O^1|$ >0^ mCFw0>ݙ<<]7~G 6v%)?14`.뗅ۼOS[Nafgyx ~zw~$=oV3$- Ce.L> y8IJw5p"J8Y̴au+u?<YΑn[=#mXǨz.ypm2ӖXUJL^{ylH 3݇"L%.)k<-z$Zlu1=üp_o8DԶ)6Z{UbM됳m60ٗ+g[aף9f~{o5QSY ,,eF:O㎮(6;ޚI͙< nزX%|e'a]ߛ!ܸ-72!8: w܆wH<&aV I B_ Hou.KqSݹ?q~mg.Sao G s,yqOF4X$/.;qmnXo-[[$VAN=K 9Xn%sN<Ծ,i'&]V*5=`'SenI7|D8[]w fYI8X˒> ;na0>eY.я>)2:@fq䜿,`$&GvJe[{fG~hXsPMN͝[=i=ysT 9_#"W;~0=dOe/ v8[e߃/`_e Pۼe)t&:r~#eeD4 >>XN8qlIO, 3^.OV܈dazَ:uϹ̣H0dq'ce<`?t V&GRpl2O\}%C"C',,ut=S%Yݟ:{}zYfv^wD [f`_ig?T'Yb#6gA8'M'2}JvÒ+6{@u{d@,6]{1.ш 7dщgY˙߳!a}(x9g`cɨ' 3n= /!DIACgoۮ]y ;w,Yeky){ͷ]Դ>CE!Y˜5im+~=.;[lϑl2FCx1n,e=g-'mēzO<>IV~7\) sنݒ܁ J{37ݻ6UZH{$Bȶ--FwMo;fc8_B0Ku|to0lq37.™D̳Ct^7 ? $~,I5кN۶~e]QZybh!x&`1XQŚHm86R2[\7G[öէ7wYg;mx~FLXJo6D$~P=Xdgvx.bs]e ?$v-:=<&&nu񗁰?RXČG?\m =KLիr3w?,npn?HVHm{&g-xxI,kc7rX yGdagWvBzɰ>^W|c 3,u|Nq=HrW`X&b@YdY=qe2z2B0t';7w;m}c`e~ 3{~8M #岴9o ku3q&Q[#aC aN'B=z`kƄOO^E|`-`;\w/zDu1$L;c$3̋VYVwuleʱ!%gĆTyr]Y!fp͌_-cZuu88Kke3.]^|Ce xc|3礖Xsۼ=so&:{?!m o_feZ~[ %#"n0eKb;n9*-l'RK<: Cߐ cp%y{63x>+>cBϸ1b,$j,7^7ߋ?"yߖs(?ynp''=u S%-[trm?6߆Xq0wr-B9l8!taխԻϼ/<-2ϖp[~'҄M$]VMx  m 'mr&sq۳dA7%~yVMy6^gϛ:^ O.7Y?]^YeADg,ÕDDC;cg'$>Ag9>|6~OB-*!1AQaq 0@P?x'"+PܫG}ƥݴUZ:FG~r Mc{S{_{c,i*N{+ xhq%%F~㋕$ H R]@߬@<%,U1Ed*%n`\}@ h+â./eT=.fKƉy^.,yr mgh/(pz e߃ ڼ\WqEYqo!UԶ"|owhX.MZ/O1_B L217NOHg)$ArzjحPdaB5rĨX-ԱEቇP \E{Jݑ G+] @ Z㸱F2J2E˦0Xnby>(|e"p-Q$ G A~Ɏ ׆]7ia5ZCm<@CWoxpɥza˹pUㅢ3XQ4hu L HKWhh-c;\}-`wΣߎ廿MUdlu/[#^~.fei)8KM!*Zi:ec(i,xUvK ym7A%Y}y(}CW5&ORX+t@<#ȪX/f0+%A~yٛX0V6ӳeóvc̵ 3$LGQ8U +6I(e:0{?G ]n62 Zci HucJ*4U^!|gܲ*ø%ʯ")mE趐+軘~c XB_0.U \Yd qOwҢyl b&\'7W0U9=&kn"+q5|A^%-ZyuqܽJ̩~X&RtsQ-}xe ѿ4S'3ĻXza|ʌ!UQ-`ЁUJzF% I*8c#\ Wj%D: Ok8f>q)^bJ<{b̞N(JPsvYѨQQWnoAޙmP2@,#:&,grKrJb湢KID`c\/D+0b4~y[(q=) ]m[O4,0db]RU$lԥXXS<3)ɚݦjJ$\C"- -]a.:fߢ} cH"Zg 4ЫĭK&g^bZTRXabʍfe;;*!Trt*Bї[ 7s$䎹eco1U~`\BF9F3?"F8W]CԔhK-{c Q7N]S]5+q6J@}4\\U]a' L Q躄+ 3j݆Un$KRP)/nuHe)_DA ʸ,9qV 7e3-፶a"GVH]&X.1z,_r U 7P/Jp%G`n^#\LXpTk_Y^fqG] ;<Č~ MC6ʫ[IPaJ]|@0bkS,f8%˨Fp #@ qUt6Z\=CfwQ#Y=8j؜wf`x: +;0[kPsͫ8SW0*R݅F.4N8b)kp 4*:)e a-69--3 (UEj{_&h ѤE!H9|(6w4P jTw c`i>Y?hWS*`9,PYgзEҝrOs]*%y2M)p|}-2KRT3Pcg"lejFRݱmqܴtn]1f-p6Pm^a#Ϥ-o1EBuтbUm(7@SFW 0_ShtD!S=Q(h+qjHv_2bT1QXnygk&%wD adcLU40_676 `[Z~"uIt axok!B&\. v8cdaI@V1"dqW`I2N}tX KF4q0858)B%4) a3؞ϫUPup/KPw VjlM pofd/w7 mc=CUg9W]CяQR%#̨ έ ac`Yg/F@U?c3D¿ih !F p%) 2}Ĵ!=Ɔ+za\bUSKĤ]֕Rŷr':5Nkj+, vK~Rʬ-2wi0՗ չ495Ӌ)s.y|L+ 5؀;*-BőWզ5ܺf[BU$捯slm6yoAoRb5A^qpЖ %LTtU&JXu+P[ ^3Q%E"s.[gor _y6q$E Q~l_0 l*VW04 UNP1jsd@?oopQx.W-fV*[;ZZ4Uk8p> B]*Ԯϸ'RGTpZ*@"^Ŷm@zR|ABD%c1}ISy#mq91i =zJ kj:03>aX. уi,4+ H Ry 5Nc ) .e0C2\I\1=1CDn$b7,rAK "rDRw~(TVnZ0ݖ&;.)2xco_h!?h>*&v]L37sN0F% lWEf?xV߯p֧ʨ0LKqh-ezAt#I #վТPU9!H0iWP־MMhp&B%@ʎHWwD2 +U\@t5 K(,Lr9EU}-9!C%-s*V/\odP@7KzKW3[.7e>P \ƛAFWqU-ܢt(Qs7.baE/iR@ p#+TUX׊Zdo1a&&\TRԬEUs3b]3 9 0,J:aAG-~_ ޢ|..}bGtѹwoKaM9RuInx̧-GTiI<Ibw* TAt[u*); ySmHbbH6Y*ld2` GK iW+mZ0&QBy ձl~`4XIl)ONS ` އ L T hWEa:pFQ"A .q4TyRgX-ҫ_J!eF}Og ;E"A2+^[ 0j,\xX8"pK3nbtn(%>}E-)׈%R+;y1`;4d/e8p\|Mú5 P E5K&7}xU1R,֑}̪05WoYEIsuLvdz]H0}.ֲ(C){#oDK0 +oMTY0SLfurȚ iH-^ĸFΡ/x9P&$ )a"V`_2Oᒥ3Q,̵lUOPB8Yr?  T]~vT<&yP:tu^SjчP -aɂYSw#G qܨ]A& R1 q0DWJy\1+LmDDG.\@@Q19̮ )_,jd]Y7cv@*aM\$7|G:/ f-B )/S{%EM"Rf'^0iPyPW` SPUFL6 K6Jju-8u/{ cZQS[̦XSN!Ơp*~ci`P[!уx(E= !R¥:? j ]B.]2ޥ-ڡ1Ef\R* z̵?֍gE-URKu-aP[UM?+ -.O DŮHZ1il{: iƢb+$J{9踁 ,s08_1+z֒-,X* ] f-)uSBȹR+ UKá*&*l/}PP3{AfN &I/}7^0Dlu<!jN1 Vᒱ^5%MFי^Nh)#JuMܢeuq SıJ?JZ.X㓑~Ff`= _ ^<0c#$"+΢)6K1KPH&XRbP &F@ zV*QΠ2a_V;slnk9;V e.5yyVg62֭Vzܡc&R0eh _$UJAḈ쩒{CB MZ9 ($.ܦ Zcm mNwc'Ȝp߽DQኌ^Kmp"WSx-cg|V~'ju5pLH'H=@ SSmgs-TX 4]M= ɃF9V)` nB;apFGPv}17 9{ [P&>9ya3: ?m@.X"~dN_`PXp0HL~BVyGeO ihE\E@{;3PR3ģJZ\M/:.LbU@Tōlz`w!2LwĎX{@0'P904Z71)MG_O. R&Y(LD3,l˸ `{¥;9Vf5,[y{fy!)l$wG.qH/lkQJ.16 si`# &b~fW/Qiz<@X[x^#\4_H@ͷ$Q̾|:gh7+9akWr+(Q&*̥+nw4J5-$SA+E9PQ7P:9#e&]MU!Rvv}@Z }V)\WqbyaE0q46{-q`uUH KMjc"6S:pc% bZSD9EZc;qXUb:&x80Bn-@ @w,ebo-]yb^#rmU Kq(0b[ Wņ ^/Wf.E4U)`/nVJixeJWg w鿫 L ?JP;\CPu)gRB^ tJ2]q:QgKqSgduc78 x#" 4Rw6q̸1K0h&XRk7,9bZp} kC/ O0Te'P*J-F&- 54V_QU#?)ozc\[L+؃(V_, U{_x7n `)\98R.u5JЇG{H0t%1P\SNI ` J[r{ ɒlRt=j yln>ƌr<4iSf˫>`. bpenG C'x $ 2Dpb N ̱<14;fWitRzW6!t!cɶ{`WKg0Tp4ܼtqKuxOeSw݀vj[QÑ*8T2RKo<˂r!'Sr`wqdbŪ퉅ULt CĸrK̻h] ?ABHoPʕ갖T)gUmC A.\A]QzKՀ2[!F+T,kiI)lrñ(shqD%Yd k,y>`q }⋘P1w.qF@;Km^F2^b t,|a9:a:(mD] - .."ֹ > `%q2L砶Rh[q-ac Kc\Um ӯQ-WI c#8Ms2ӒYݖf@;5\"-,E+w7^瀏PB4+>P۸1Qd4F"?@莦S|i~%"&d,ӕ'% Fʸ/j,U+pMmA;}T {\b=K]s$Vz)Ī~#dtybFM SW\]%[S0nNc8bKW0 .Ux ʺE{*oh)>JE  _Զ}(rlDt4Ō:E:C2-"-`wz"'$8gKF DMo虘]7NL$+x`xmbلId!TŚ bL`p |k/Q HHl͡P l%2 q$Uo *`ͩWwRU+ˣ SXKm5z%*xUm|a%8~%P4p!V}(hO/6gV7sjV1,AST?h[R@e*4>/ TIv"S(xd̲[VϘk6$8fwfA|crچ-טn5ҢC`kggZ65Q* ܉Ժ(y`{,H HL2)<@`]a8sqKbsD+BQ;^SvX7HtfVCfOL4VFǞ/OLJR< з/[rKUEx,Hq0KuWu~ϣ &lh[Ja9"8j)ISܮ,h2X3>qi5aÛ9xYx;|K%S)MA1lw 6&"tƧ> C̵ ء<$j) DRٕ#'?-s&}-@u_n)f\!5Ƴ74ophu/1K*^:،ZQ.3Dj2\ ~D;6SY*_>J>X-iP%0br% 1X?hQ|opm"@ D˗&- u b|bx]XM>`y{ > V4K"> ;dmT"8Q箞)U.JfOsԿ˽GwߟGf 5>x_VybW9z 8Ϳ,pjXLʽUJ6V-Tb&?u2кޑer‡/=-_+򝟉V0a}EL$IfJJttbJ[62oSG̠.u=~`cl3\Ɛ`fY_qqLZ ^U`\zpn8j~_KӰ?E@WX^"YVԴr"Lh!Z-o%Ш̿6sUVp͢]U[嘀#JOVVDUt_Y`;fC"c0Z\/EP1HihR+bΡ:"Țo'AjGQc=Gze*1S- i~栦 0M H{J/[~bt% Qs@^^ umW;z~Ta1\ 򡩕qT0eqX⠗W*ǨظrF.|~QlF5,}d4 rt(gCj ,r JUJX #F^2Ki@_N8U^r+E_zP[R}3ģy e@p0m -q*:o%kpBAlq~aeVd\hbd@5R . d*׫M?2*Y+ĬXUbTYp=GeW쟌Bcf@2Gk!  >JV9צQWug1Z2ƢGL_hՃ@Q4}!EÁdw 'vU39~rQħY -ռ5+ hP}F*X)//肋@dZ}eYEBm_sNuxmK$NY2YP-y,WG1.NXKuu1SG7J` 5m#@prFJa 8k܊ #2 c)-#ψOLف5(h?Ľ++L<>BFP4:7E_ELS CZU@ ީ`G'JaLUDuR!ty2L ۆW9V]zP+'*KSw51 vd|cb 'a6>P1Jr fǵt!B>@S,CJ . փM?0A~s&Ŧy5G"7P\ t%(\eL!/sW`GD*i]=> +z*bJې2u) Qnm\Rͳu!ju ~h4Q [$( 3У?,/Qfq,k葱F>g(-y>'by sh4E#[j0m=81=8^;XfpڵP" M[]v'Ζ6nB68c4CVN$Zi< (2sj}ܸcumn+Ҹ(oʭ2{h 0Rhߓ@SĊEgLՊ UqpCyAaqn-~81iff#%eo/sBwWV/G6 Ao/#WFJe)y4\Z,@86訨*)Ah>!NF76?1yr}jA[>Х-?=MRඥ0p(dB9|#s7#eDS),JvAK RgU?xuki*Ѳ| Ee@D;+d (Xb_xn@c/u2p!*ZSH >ȫNrpgW˶8%g`y*ڊ0h ,;Iټ&D WhlqCiGVrL\`V!%T^zY>)}zEk-CXRp4[mܱ0qؚa#<7)׆~x`׷5U4a9?q_+~ay24 5٥*%W ssSC3S$UƆ Җ36 q!Mr2X^QrE2EisDšnQɟCvr4dPqGsAkA4],/ݦ`F־pz o$QѠ`@F˅|Ϋ2YǤjD>Л,ȗG vji-.ܠFh20l#C%Z#+fe*x?6Ba =l^ڴ>"W5D_4*1Aa,Pĭv\/lUc!z ʭ)B @8wq-/5Xa4߄ Z./ƫq 0K+7tXOƋ! ŸReq[_R*̲y9q^"84R?1ŖK̠@+}nd8Yn J PR$@0 *G>4†Q\/x]AZ>,3R' *u<@8N&81S|5 */+0AGTҔ)13  tǁ6R-:\c/JKޛJV^޹"ƚOC-BV*_DN.<}fқ݆a5kUiJܻ=d^}ήp*(H/Cu7R.>o#mlRnbvܰDVr1.J-'!lYEE0Z@|2`nR9 kFC=ʇ"u7FG!µO=,%:*^\[JTL޳ī!0o(s]|WbzJK@Nq$ҥ.O< uwpڷ9.X>9h(+37цV~",aOrj6n8 ]L( ^&N=aD!zx b(*:)PrWC-fFšp@@bX!W̪ D$hQJZI.ܞf*F@gZ1lyy] 0Qp*T/~nKw)Ry}D: JZ&Ȭ,OX]tǂ,MY+oUO .&l"hǦhVV@Pt``s{p@+0Zxj,e Q>)*m* X^wX#=ۧ[? P|O1h/KFxsO.ye{vL k`"-k8A[Vv Z1B*m AZAzo6A٪)PAx,)+m~H+,KVSi̱O[?qՒ/[X;r__ަac[,7`jR-y~򧄶;_^3nZ?GQAZJgDA^_d1hKK>~сKyZ276ڂE~|7 id\xy-pG=JWV2Epr F-#߈PG}*s*;"+>` ?d|{JJ-e݊C)v3uÈՎ\})Ԛvk}x=Qb6z2Π:\ҿxk߬`-QHssS{Xז^)zzLlxh~7- a"̱7ÎTze@)[fZ ?ۀjj6];,{k%g>`ru#Ro )5o" \P!Tn3sSëX>aDs̸`n䊯 AEnZtg4B?b)#]ZHQ2Z(i\kԲ@huW2yX6]-׹0=53w*iptEPWsi A՜ņV|ː *rb*L_ W> ĉrqL.#lGP TTx_2MN6\ J臔iY%P-3T`~GQM/^J:C! ?$p0ӊ. qB*jVЀB/~#hs˫.Y9c3m6\M0UmsM-y{.>!`B?'() *ȭUA{"!@wz7ƹ~ ;^~#(p_'ZSx Gvҿ[Wyl. i[k$}DJ5lj-LlXT F k%Vn}9eV~!0INq~ҷX2CcW>7_o_aIz@,oN ?ȲL$.rխȊY2 /GO q?UlsX_WNpK3W0QEh6O7 FecFD#;Y?:YoQ hL 5ץ~;?h7ԲGM\q6;2iv_0/ekQO,s, *OiolX#B'==_}EO_'Ii$Qk=ͮ i `+!/[0*;bUbX 5 5*ڶ)؊K\,Y#Tc= *\*45p8٨ڏ3##L75:Z@Vݷ*\PW)i^Z'oT%V.Lޏ0Щx|A䡜p^2hh@⸊5 ͺ=yGa_%f+]}x(wp6nʺܱl3YZ(u|1(\9 QdB/!iyBS4TQ񤯴ɷ)ߓ̸Ov?bUx W71<׊fBV|w*Y  Ⴕ5b]5=(כQr^VMCnYlnMS //,\Ax o"m J[}DR%|D^,y}_%ZQ 0LѨXÎ=KtZ@,36>}ZLqff%:hvC'[U0 jWq.]#Eq ! ^bZ"ku8"Q$Wa 8| GqXlCi \Vi`R"ʭ?q\u !Wu^I[S0+yTBE24ugTj\yELH&%C<27 borTQ@kkhhW7-ݑ[V.~xs!j4|oN ԞQw60۫%GvFM׫p#! Yd}D%u)/h؛ B0/J># srP*T0-vL ix)l[Q~O/̯B_ڵ =w c yj  ĵ1C+V0;cG]Jk!nOy+Q` Yo0]Z,X[Ŀ&@-d*egԤJ]|y!]QKhYH4 V)ϯGgY[գ)+y7YqA5]/7;^`m(P*"D 6kaA |WJYf ؛}j*!\%w/+S`[%}/⯌kwoQ*E0 ENkĖ@) 4bK~ekv] Hw M[1K]J= h(65;L<삔| \G< :A%|~`.xj3MH^q,ʼn/Cwgdi.% o%4X.qJ<H iZ  4 2A׵7mϘ Ƽ \<`ϠhT9aV45߸`àǺ@qg6lΣt|D7jںZxFǏ;o=[btV.d24*i䈻)d4W >`Vx| $,B0(Az֊۬bHrs,Eh\qfM~uZ6]z@6A)/DE*@E9aӶVp3`${iVW'-#|D%iQ/u@Z8}p BKj G,u^n%|HBF1oG>=J8ds+E$-#!ܖ Û8|P24_(Z5Q,L>=Je P5%pZߎOόׄ+Qe{%dUT*L_4)%EomkHm ` ]~Z,Шg1u_(?:7ʤԴa[m)wS,7ͽr Oq(0t:TfOJJ2`*Y%h) [{bˠޚ*bx3% # 78zah*}c|?82[3\Jȏ*,ez/m;9}^BL[kP'D ^-KQݵ(ƋΥR FGSwY.`qQUC1~:>]d65C5=*ay N=MiF%Ȩ-ƪ#(QKt#@ KMxS_3Hj#i16mO]*m(bgW\h{^1W,6$d}Ǧ^91%@Vy?MG ?oԶd4 |dc6nn èP-^><wXj7AbJ,nR7ZapF*M1OK)_ 2ZX ^--hIv9(YyżCdb_B![z'ԩd6_hYǖ4/$/ٹlz A4Σn @ƩGCbeGMndKG X1@,/zmbDG -mqj X%-؏"^@ Q1ab-u%vPߨA8x5RX*Sz ]T573 HY}50s-Jژ 7̪DBZhODE!=-M{"3 0>eb+`YWe-v Fv cXp'ny uwA.cPw/%G@f`>>=g/@ݬYAy]b➣`I\R+pn1Hr  h*e 켉zxH0N(rcQَ;=^㔿FdEC(vw#6enR.@ئ,a -Pnl_~!FW ̛jx_OtyK-(S)ɴn[xQi.2CljNsxyj Z:e1pze^YoXiI"5띑F^gq} E⢮)Jp-|B 8Yb neR7~˺3re-R6(L}Ċx]0=g#L|E5=d"x EύK5yp#R\n7&09vJNM,'07/5OOT @# sߦf|W\c~`@!]F(|?-  r>]c5C|D, L)XJ= D# Bӵl3D]@|pGeYqW`(;P82=0[vz*=0\29.Zج0*ٞ% +ٚa DTgDfW6Pg?y0ҡMv2{U=[L:R5D CDe˛B^#i2:]V+vE 4y_R??Էz6Nq.1ARVAbʥ9Ƅ񘫈f B!kۡPCL2ǐx2Wo~- >R,}HQxK'F0%͊1 39)߉yk D#pGP!iW~S/aOմp,nR\Y!Di_75CAx5^]~7/,k\ /W[2,:3  R;i<53|E.)F舭:]mdbX@S u',1TyUW@@E5T3 ].~Ѫgc^ʵ * i[WOT$9,-%=1wd,QdWo=DJ]xKó~`(]mAɠxXzVn0Y9b&14g5 427*C" L,Y{<4vy>%L:jRf t](Jc:{;#-a0őn:pӎ35P42`fǘPEA^amEm4v[1F - 5cq[YCjaAv<_/h9oOF98-Ru8Lm#`4 X+]ܣ͎ ry]Do(#g$>p&}ރ(]T<hμkcfTQ/ zirjyKY]PͿ])<;1!I4_DVE޶yDij):c%4ao-|0Lh|HpApa'=I {c+*cqTz:PKTle4,^% ;/ hxO*j*@+[} lFAw\u~OS<JXh|E6¿UZ?tג910Qz=:M`׈l%u|%ȕ [SHkod]:yݷ q7AQm@47OD- 4M^ T\hѽf6cstfm/R%`Q1Jbчt6/qԖك?~phB_DVr0l(32\rȀ)~5Ч4>DZJb;\JxFO&5|Fmrs *}mh٪z@ORڊsv=$~ 8@F8QfzjH=X=G\%2f^&g N6\Ka a{GAԖ<0_q.meĴw-z>T*vG79)J$k/KhuRHT-,9beDFA( z'5|׈f2_H"h"7WI>ȕ 9>y%bcܢdnPw$QKD}H툭|8z"`|>80Un'30 %ULP2kr f4eKxJF{S 09W:bQ[u]B̤]{uA+a>z@d~`ClfTQ3Kp>^n@p@F|u*D͐ra>%Zo{ƦM{Cjфv]^d݌~%*]0elJ)Sh6f{n*QchS]EZcZC/Z(,=ͦ%\ 8 ACJdH\ZZ0E.n^eT!q&7z%YDvniV"T9"iNUBqO߰ g*5* iVw]z]|n & ˨e[̺ـUGZUk=5 ku{A(E$uVa~qn Uu}VHKt *sחxz r--9-x %p ` "$.*Qyg_w5)îc(2/dSdf90 ch ~Q Ij•@!f/>;⻱_X[p)O)wpqS"t|rǪLVy )s-TYvd@FSqr p~``rJ F]Y 5IqByk0JQ KS5Y6_"%#H6us5YXX:05 n6 nX`v~Yj0m՞'ozx@j 7-|[%, 1KL%^_-5,k`.FFpuZ V x&iJFvp1~|[r0&f] Y|~%joqpӼ \>yI)"/;Tqnm0;'eBC՚)4`ArcȆ+Ƭޣv5_0- Y+BX\M.ke%RkE-Gq}PXmh;bJ y qx R0]AZX&ӹ|tZ SmLY+Kui)G6bJ+ܴE׋,Rq0Ž뇹aʸp`}vG8ı.-j(oVA0m滶Tm|KD;Tfri;t{#@5߹V@atƣy&"PXRř] ZUg4C[-MJkōR3_-S#:!$!?<]y yyP/'G/lvvy X _ f68` o1YKn%eNZlkncedBtёUi2_3ig VM{6S"V\^%q )B !{nXTLN^b:OS;яpmz_ bTX%Un %ہeoN/yJp|q36'1N>Ilhjj̞"|Ui(6 ; 9ޖ4XK#zc c& (V}=D)BBpy%Q -2eaA])998_rj[6̊\Qxѓ0a!-$@A NX ( ؉I9MK%5܇g Usp{u@阦`ޠX-k!( v_ih^MKZ'(u\Ԯ`b27"Kx\dtP6״A)V1Oi9}]3]ѧIJlT^ؼfWbܰ2xF\ VDY@eRŹ]S?b#[+i.R7 MCZ^D@ .R(8KN^H-?`w,\A`A sƢwB.y ACJTp[4\n9ى 0&eK!kiH68 dZ 趇@gtpcJ顦R*;g'TbŊWuTA4lb xJf: ]w[#Q;6kp6W/>HS5lAeK5[`H%oD_qyt6*Nڑ .@q`0g{dk#4x=]KiC*v&"P8}fTKI1KKsfW}Åm=xM;7#C3(j1:=#V}nwuDf8/$\ҲfAJ͟F!Dhہ9y_!x:"1w@ZWd55oliמ s%1Q0B&.Euæ,U7-+VU}pMAA8#!>mؕCpIٳEαET@G!MhifUR1U4Z+_o∷ ƙ@qL8,UV?ywG-.W$^cCET'J0`,Glş TPsR,ԣ6cpۡZ-+:F W8ݵ"Sn;7mX0)w !oq7Ar-Z?R=뗦:&k+K5 W5;Aj[2@P5L eukbZNZp$ @?fMh&`û$eĪkF흟ߙV;PטsCYʉG|{U㈉W#-+ʗZBQ% ݋]qcFE  j[ 0B[D+tFf}H^a-G~c}DrEM=?.$k%CGAyEAvMwt\Et%J@FܪVa 1 Ǹ(eib\Fi[Xz~"O~eb3U3vSkN "=#Gf?]& _dۈ6`Ң8"3'gPۖ˷Sp/lJ6ls[1!v%QwXakħ4Ѱhhart(:`%lx9yKliSAZQBL!qEwjߴU2} #w~&vsAj->}gcJNf1;m g50xh`8G6[1i)md^Αх6?xVTcp̌.QYR );Yz}KsX< Vm[Y*0+0 &4&`Ӈ&+/b1u,QO0)T] PlL}Eu\0 GsJcc-`- Pp5]yYOn=]Mj Tiݶ|lXhiqBAHvԾ>a$ l~DX};רX/'UV~ҎeChwcI̡e?Ԡquu~!u0h>U}跟Ur9ynP'ZsT7UlJɽj{uNٜOPs ]nT1Aya@:` (e`PKtXDV^] [BY{eB]0rճj%g71`ĢA>aP ]g|]3#XY|VYG=@[a"E؇yA#qZ/qj6cq+8S8)W9:_BUN%jtea5vo܅krFaxkpsp(G1Is5^e[:p ϢŖ4҄a4 cEu=>UO)P{D@U-kb#Vc50m,*U6i_tJeFL-ׂ>LJUwɻ((Ub\[UEL;F|X%<U`E[kK , խ!`wpX|>ehenrOdW1ܡX9 V28a-0X)sD.8eJHR-,*o1orΠQ#fD[JQ(5ZeL`w sU"j\@265B# FF$mUN;{#=!72x8lV[uz*`CMԼ(VhN!/Mj>!J䘈BIu ȼ:a={gcRj;J.V^R ,'y6l|KVҋ*/r5ǎ5eaxL3F gfd{aj4\-(@& !/>%y3ɻˎ 7H0BG.VuMadmLj~1]gcP.Y,`kөY0 Ve0 RX=nZepFh maRG/YbpQfr"ptER"-fobG ga;Na*~Hs+"19\A:0J[|ClቊyZгO0/8 pQ~D|db.eQ9/EP}fƩ\f*`'L"cfG1 ]+U K*NeRfj7~:Zl||vC~p]ĩEI&ơ# M(TF P9̢z*䀲fܼ>+2[#;-fGw^" ]bz_5*~b[,k<Ŕ1Z*.z`}IIaz|q.w$(qik *03I0\ɜ"`F뉿f9xO$5oEʚٕBU-[T8AHm :SCged"8ԾL8Zz6`nN\&d *WKoGij%81!^͜a|3.qA6Ty7е,z`o8ӁM@lv*1'" P%t*ʝEBҚWQl,Z2 }" G*3*G5 q /w,r;"WgX$ȼjSXqtVS-5k mk,pP}CY&ϘU]36Ƙ eZhVU*&C n(6Ybܲ֒Pխ_Eh]j3RFq JE@} Rc/nEZ#!+>-%-[ns1N"?4)"aq1S3 X,KX!_?68 N^oEi\T rkXcΑ &̾_K0|"Ԥ DZ\+mKSMR}PqQQK Tjg"T0MWF v.߼u0ij<2d&e3JBT`/P)¶GuS/3k1ud̓w~n]˴.wpi^f.ޓO*_jLhږ%#먼UEUnrr+"fZKY'˭q{UʬtK;;z%S=< *A Lz{f<2嘭FCVDT~YE7Mvv 7Y7cZZT&e(YKC稢ä!< Y-cpuAAv  5:aBq8Y'O -~(h<'Y:Kz̤[b8OqnS2OhkGe̸,@7RkĺUrP=<~^ sPWGL+tH1 Ə qJi%>⦨ۦ<:XV'q>(Rë&{OkdTLL7bAT[e0~H R8X79?h`kpl~ 5^Mu Q_~x%ҸdR˨4|ŨV5^=G̯P !BZg1h`@#Ad!G=%OEQ#-K pPfcGil |% oYE1S5,L遲>*mXDR1,r𬶵YrP̴mUso'6э$ DW6g u2Ѧ[*9bh4݄zouUlxDnLn"\KS <˖,0r|M0% +KUTuAk -l>bExJU`-"KG_=M;X 0ͣ,DEޥʂ-'T=MU3\gޕYS92p&X00A5M{i{ͺ]c1qw."NDQ0٧ݔ(9FV јKك6XWqUM'ȔኬLFpA=1ٲm1DruDV yY+1'~gsK!8䬋A)c z"4<Պ@2y;Lٱ%d:/0|KeAgbSIdVنBH~.#QL0$@c(fbD(1&ow2=xĵ."jjNgoSKL[eEd5ԹhK~ ՝+0Z.ZV(>`PL7ym6晄eYyK\*V/w Ú8ʘ̤pݛBD-#M^Ӹ#sݾ1+j1`Ws]q b4,fG9:_*mk-}-SNia͵@.⥜~3Fm#UvrxOg>e2%'N7*Em;vQ|F?KP++:٪1Ri*8/,hOAT­gs<ʅ{ 57\E4MkX ibHFtr4%0HqiWdҢLs5#0E*_+1}0cp!` _̻rQBU© s?M5 bVRTHA i0-E u&Hfe1\|L~" A (\(L:f2,`Y;@`XԔs( sJz7%m/%-Kn"Ҩ7BZU +d y+B4Ҵ,Fdpme_m?կV %R)6L`u+.6d,_q4?vڶYק)]~bmA`8Fc^>Bq+]-(,vTi)qL[!l;VrK,U2&wdI*|,=cR6j2Zk9+lU7^#Dww!4r.{!\C(QD{-|5;5T ]Aiw2\g*#"|oJ6sؼ3 >#K ^%QzሖxG7iԯ%p,i>4krT@eo:0Xq 8&A8曦<dRZ7bY( 5yi_7jp\2dipф^/RZw2)+:\ X]6uL{@̭K.SV.ܷ"\)M,tYb##*7+(Lp2Q9]?i|FKYelS)+s/ s&\Dcdyn]-wn \`N#EBSGڣ6kP-QQJuV*qbD)KNwZ8x L@5eVTJ1+W7+0ǘe1"AYTEM9}45 Hg"L/)C&GnĶ]!cdƮ|x͋qܶ倵-m!K!:iE1SpZ=K rfhrf=<ƭwMEx!^B; TbSw6,Ee-2"j ᖠI!+OZ `%yBgs\'p ]OQs Kl|@pbZGCx̾0sySvx52;bBu#Q5N+" x &ÃJQOJMEreyEطYk$7le7F" f Ex{IJp#MႊhKb-%7 ,0sKedUee}Իm(.C [f(Ͷ[P,3EV~GufLIc1@9aQmUK0*".m+0Tn00(`Q(7{0 n^AE K+*dN%%[ qQx~aYw-.GY&%gQs352 R5Qi{#`KuwXQu ]cU]q3j`%kch XVncKF/@lxjYMYAQc)#7-pHmM/ӒѸoBGD8M;%b+"_I2-f`[QW(xs-D')X{!ោ2:,dWpo[(5_j6 KX 7x%-8[+])h8bi"FA † ƻ-@J5+-@LWl0b(;aĶ񉑔:TAU *PH!Ke߸ hvO S -u v Rz%~uk T@wZX '(yHm5p)s(C){3,b%aX9,#\Eh :IIaV3re%' ,& ^j]ؕ?D W/3U;'R1]+[@DjY稊7-Wcl)xJ YUQ+VeɒQ)$a6fޡXN%q(V]Tk.b7M^Wx"Tf:xK"TZnkT9P_ƣ@2j%fy&x=Jb i46*6.hem:?mwgl5 ̺^$R)^VDcN> cZ.-@}23 xKX這uTSVvN 4laI̮biSI0_(sH׸T̽l!..WtB;ko31/6("W3+ fE6`L%K*q:.pF{dWtSqfe"7tpLJܮ,9u.BRS p&gU o4yqC[დ X£a3uYP2L1kJP>ҀLU M\ma]ݚ"hM@ HȵV1+[3dVGW0GѡpUjZ ļ7g-g/SW/r,*D GR㨑'1C1+( ["c0`yZ 0ӁeJ:∬~!SWou9V<10l# f\|"cC^Y#.ʘZ%_"p8ME텥JUZJ  vu+ AqwԠ{]֐ \x8wsoK`wAibx.@PlGP5#wfʝu2MPDT[S]lbap*UDvNT i #H.V:%vkr>%MLh,-g 7rcjx֥Sd@-ԥ n<1al\)NnYY>%IB8{]`ݼw72om;sNo/k.c.Z-mmnW lHAtw̧Q # EtG|@N%LƟ*b2籁 2"9vs?@˃Pn LYl:${Lqm(zbRr01qPn 2D;`%^a"Q+?,."V co'XVTnt]EV+%nأP5x㙚siVqMjV;ϙVoL P1R/2ωD) .iF^ؙEklq -?X]%\eR@T5wV'/̩Ϙ&G*`9}Ŋ:ymΠ7 7Ks.(zLO95@oc@(^ \ۚ{70#ܣbgFc tu0*NgA;UBU:?兲9~"P"E:" ]@4s*"]U{H>ƦD4c[Oq0n4^`;xLv6ʽp%8)8paBTߡZK.JkAWbW{(a]!FJjiu+X%ᅛyY+7}0Tfm r*y"c"4FOftٍoW,QTiVJCR0?x\x8 8\[]$(2D,;8FiXˊcY:*elw971.,vA?0 jZR(SHS盆Z!,j*4g#QT\o /֢qݼWS~LBʯAD |EG `w uUp\Z 5î?AH5 ʟ6zJ "hr.ߙjUCn4mH/7m2\ܳW*B>7D7-J |BIrJU87x.ԧ~&\9 sj8g^M@s)Zjh #k8K6QmYĵu|F$nP ?0&_hPe3u <]#Xp @v?Ž][W2G {`l/>Ȗ/(]AK-*9 ~ * N 2U#_'YeC))Y4٨rwXZw0a<@_0 ^¼w&i+Y}'0Q骗V(7TLwnob(hhX.q3 -H6Ri 7 \Ac9B S/@Z.v}CE1 !hq-ܲcL2DJeQ4Qce%OuP~#[a~!`F 8&kL"Pܙ,*U2z\ۧFb*n(P&Ή|@VO%}̽%/ws`JiP-%AUWZ"KiqPL XWyܡ-[c,e*[ >f;uh!|6>`&* K.Xd\K[ + &g/ӷӌ7v &Kf8YO]Xp.O(6шAel`ib~"_P4o0wּ`-*{%jK\\LRObxA^.ohywo̸.{('+!l⁘ńy#Y}S:|K^ ͨ ݭP6]3-0D`Cn0J9Tހ(1% LZы . UwkZ9edHj]ʦ2cfHaWWK=@G< o)K^u%+)f "UGlJ*JŻ"Q/RP7 ģ>tq*FWka>D9E=N!DZ*̽q*ژ6C@YY%l"pbK@P<\h6 pw}%+)aĥriSF (^ U#\_Rծ\+ĺ6b=xz96?|7LL]yz0Z aj P%u,²#K2B:gtZVrj;UuDkZSixjn =^qؘws25G(㘃 dY+eswy+ -MʥaUµmA: B-C> #_H= &}|@>^h A7U}{zZ<̌ZtZuF]~I&ަt60sŒ,:;-[g(jBxD7(u1~\EhS2Uݼ yg%E+#8%iD;[>8PR6mu?]RdA2m%nGy+F#aF(0R߉{&"X|\AUl{X#!_r( ( !Ϙ`Q%f菫tOCw6!2qDo%<2m%CaxCs K[X(4`]M\<9!eQ0D4\`q7+`gRUU|/Ĺt}?hardinfo2-hardinfo2-1331e88/pixmaps/blowfish.svg000066400000000000000000000133171474767047500215670ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/bluetooth.svg000066400000000000000000000013741474767047500217570ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/bolt.svg000066400000000000000000000012121474767047500207010ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/boot.svg000066400000000000000000000041471474767047500207160ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/camera-photo.svg000066400000000000000000000044731474767047500223340ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/camera-web.svg000066400000000000000000000027521474767047500217560ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/cdrom.svg000066400000000000000000000013061474767047500210510ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/circle_green_check.svg000066400000000000000000000016341474767047500235270ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/circle_red_x.svg000066400000000000000000000014761474767047500223770ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/circle_yellow_exclaim.svg000066400000000000000000000011521474767047500243020ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/close.svg000066400000000000000000000013621474767047500210540ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/compress.svg000066400000000000000000000162721474767047500216100ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/computer.svg000066400000000000000000000073521474767047500216120ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/cryptohash.svg000066400000000000000000000030571474767047500221360ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/dev_removable.svg000066400000000000000000000050241474767047500225600ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/devel.svg000066400000000000000000000146361474767047500210560ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/devices.svg000066400000000000000000000132671474767047500214000ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/devicetree.svg000066400000000000000000000170351474767047500220720ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/dialog-error.svg000066400000000000000000000010351474767047500223320ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/dialog-information.svg000066400000000000000000000115261474767047500235340ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/dialog-warning.svg000066400000000000000000000012221474767047500226440ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/000077500000000000000000000000001474767047500207135ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/pixmaps/distros/almalinux.svg000066400000000000000000000046221474767047500234320ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/alpine.svg000066400000000000000000000022421474767047500227040ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/alt.svg000066400000000000000000000137041474767047500222210ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/arch.svg000066400000000000000000000035221474767047500223530ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/armbian.svg000066400000000000000000000303121474767047500230440ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/artix.svg000066400000000000000000000036311474767047500225660ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/astra.svg000066400000000000000000000033301474767047500225450ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/bodhi.svg000066400000000000000000000361451474767047500225320ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/centos.svg000066400000000000000000000025701474767047500227330ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/clear-linux-os.svg000066400000000000000000000066721474767047500243110ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/debian.svg000066400000000000000000000067451474767047500226720ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/devuan.svg000066400000000000000000000007761474767047500227300ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/edubuntu.svg000066400000000000000000000023271474767047500232730ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/endeavouros.svg000066400000000000000000000112441474767047500237700ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/fedora-asahi-remix.svg000066400000000000000000000013051474767047500251000ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/fedora.svg000066400000000000000000000021731474767047500226770ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/garuda.svg000066400000000000000000000247311474767047500227060ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/gentoo.svg000066400000000000000000000055251474767047500227360ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/kali.svg000066400000000000000000000164551474767047500223670ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/kubuntu.svg000066400000000000000000000033571474767047500231410ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/liguros.svg000066400000000000000000000020601474767047500231160ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/linuxmint.svg000066400000000000000000000013341474767047500234640ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/lubuntu.svg000066400000000000000000000026311474767047500231340ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/mageia.svg000066400000000000000000000020041474767047500226530ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/manjaro.svg000066400000000000000000000004151474767047500230630ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/mxlinux.svg000066400000000000000000000013411474767047500231370ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/nixos.svg000066400000000000000000000017111474767047500225740ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/nobara.svg000066400000000000000000000014541474767047500227020ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/ol.svg000066400000000000000000000551411474767047500220540ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/openmandriva.svg000066400000000000000000000011071474767047500241160ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/opensuse-tumbleweed.svg000066400000000000000000000053171474767047500254360ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/opensuse.svg000066400000000000000000000027351474767047500233040ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/parrot.svg000066400000000000000000000022731474767047500227470ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/pclinuxos.svg000066400000000000000000000166231474767047500234700ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/pop.svg000066400000000000000000000023401474767047500222310ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/postmarketos.svg000066400000000000000000000005631474767047500241730ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/puppy.svg000066400000000000000000000220131474767047500226070ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/pureos.svg000066400000000000000000000025561474767047500227610ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/raspberry-pi.svg000066400000000000000000000107331474767047500240570ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/raspbian.svg000066400000000000000000000175541474767047500232470ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/rebornos.svg000066400000000000000000000017061474767047500232710ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/revyos.svg000066400000000000000000000023021474767047500227600ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/rhel.svg000066400000000000000000000071551474767047500223760ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/rocky.svg000066400000000000000000000005751474767047500225720ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/slackware.svg000066400000000000000000000102151474767047500234070ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/slint.svg000066400000000000000000000012551474767047500225700ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/sysrescue.svg000066400000000000000000000526071474767047500234730ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/ubuntu-budgie.svg000066400000000000000000000026451474767047500242220ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/ubuntu-gnome.svg000066400000000000000000000015011474767047500240560ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/ubuntu-kylin.svg000066400000000000000000000103341474767047500241030ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/ubuntu-mate.svg000066400000000000000000000030041474767047500236770ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/ubuntu-studio.svg000066400000000000000000000037111474767047500242650ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/ubuntu.svg000066400000000000000000000024001474767047500227520ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/ultramarine.svg000066400000000000000000000005611474767047500237610ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/void.svg000066400000000000000000000056411474767047500224030ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/xubuntu.svg000066400000000000000000000052231474767047500231500ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/distros/zorin.svg000066400000000000000000000005441474767047500226000ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/dmi.svg000066400000000000000000000076441474767047500205310ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/environment.svg000066400000000000000000000016311474767047500223120ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/fan.svg000066400000000000000000000065771474767047500205300ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/fft.svg000066400000000000000000000033011474767047500205210ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/filesystem.svg000066400000000000000000000114661474767047500221410ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/firmware.svg000066400000000000000000000041601474767047500215620ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/gpu.svg000066400000000000000000000064521474767047500205470ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/hardinfo2.svg000066400000000000000000000126121474767047500216230ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/hdd.svg000066400000000000000000000052651474767047500205140ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/home.svg000066400000000000000000000012411474767047500206730ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/inputdevices.svg000066400000000000000000000063231474767047500224530ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/internet.svg000066400000000000000000000044171474767047500216030ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/joystick.svg000066400000000000000000000033221474767047500216040ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/keyboard.svg000066400000000000000000000102461474767047500215500ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/language.svg000066400000000000000000000016561474767047500215400ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/mb.svg000066400000000000000000000155221474767047500203500ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/media-floppy.svg000066400000000000000000000015161474767047500223360ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/media-removable.svg000066400000000000000000000047601474767047500230050ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/media-sd.svg000066400000000000000000000040151474767047500214300ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/media-usb.svg000066400000000000000000000030321474767047500216110ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/memory.svg000066400000000000000000000063661474767047500212700ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/modem.svg000066400000000000000000000044521474767047500210530ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/module.svg000066400000000000000000000030741474767047500212360ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/monitor.svg000066400000000000000000000025411474767047500214360ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/mouse.svg000066400000000000000000000032031474767047500210730ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/nautilus.svg000066400000000000000000000232271474767047500216170ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/network-arp.svg000066400000000000000000000010161474767047500222140ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/network-connections.svg000066400000000000000000000065251474767047500237660ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/network-interface.svg000066400000000000000000000033611474767047500233770ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/network-statistics.svg000066400000000000000000000026301474767047500236270ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/network.svg000066400000000000000000000103321474767047500214350ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/nqueens.svg000066400000000000000000000013111474767047500214170ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/os.svg000066400000000000000000000053421474767047500203720ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/pci.svg000066400000000000000000000056741474767047500205340ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/pcmcia.svg000066400000000000000000000061101474767047500211770ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/printer.svg000066400000000000000000000057211474767047500214350ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/processor.svg000066400000000000000000000146161474767047500217740ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/raytrace.svg000066400000000000000000000033541474767047500215640ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/refresh.svg000066400000000000000000000013401474767047500214010ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/report-bug.svg000066400000000000000000000011411474767047500220300ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/report.svg000066400000000000000000000050331474767047500212610ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/resources.svg000066400000000000000000000117331474767047500217640ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/route.svg000066400000000000000000000012361474767047500211050ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/security.svg000066400000000000000000000167021474767047500216220ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/shares.svg000066400000000000000000000060651474767047500212410ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/summary.svg000066400000000000000000000010051474767047500214360ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/sync.svg000066400000000000000000000022731474767047500207250ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/therm.svg000066400000000000000000000025451474767047500210720ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/usb.svg000066400000000000000000000030551474767047500205410ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/users.svg000066400000000000000000000156751474767047500211240ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/pixmaps/wireless.svg000066400000000000000000000035521474767047500216070ustar00rootroot00000000000000 hardinfo2-hardinfo2-1331e88/po/000077500000000000000000000000001474767047500161615ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/po/CMakeLists.txt000066400000000000000000000002261474767047500207210ustar00rootroot00000000000000include(Translations) add_translations_directory("hardinfo2") add_translations_catalog("hardinfo2" ../shell/ ../modules/ ../hardinfo2/ ../includes/ ) hardinfo2-hardinfo2-1331e88/po/NEW000066400000000000000000000012461474767047500165400ustar00rootroot00000000000000# FIX-LANGUAGE translations for PACKAGE package # FIX-LANGUAGE translation for PACKAGE. # Copyright (C) HardInfo Project # This file is distributed under the same license as the PACKAGE package. # FIX-YOUR-NAME # msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-02-28 08:09+0100\n" "PO-Revision-Date: FIX-DATE-2016-06-10 12:11+0200\n" "Last-Translator: \n" "Language-Team: \n" "Language: FIX-LANGUAGE-2LETTER-SMALLCAPS\n" "X-Poedit-Basepath: ../\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 1.8.7.1\n" hardinfo2-hardinfo2-1331e88/po/README.md000066400000000000000000000043261474767047500174450ustar00rootroot00000000000000Translators =========== Before starting translation of the words/texts, that we have in the program, the po files needs to be updated - cd po (Always be in the po folder) - ./updatepo.sh (Updates po from source code and shows status) When done the .po files are ready to be changed, thanx for helping with translation. Status ------ This is an example of status of the different languages including your own after editing - use the ./updatepo.sh hardinfo2.pot now has 1312 strings (-1), with 62 c-format strings - [ ] da.po : (377 / 1312 remain untranslated, needs work/fuzzy: 0) - [ ] de.po : (836 / 1312 remain untranslated, needs work/fuzzy: 2) - [ ] es.po : (434 / 1312 remain untranslated, needs work/fuzzy: 18) - [ ] fr.po : (851 / 1312 remain untranslated, needs work/fuzzy: 0) - [ ] hu.po : (1146 / 1312 remain untranslated, needs work/fuzzy: 0) - [ ] ko.po : (208 / 1312 remain untranslated, needs work/fuzzy: 0) - [ ] pt_BR.po : (337 / 1312 remain untranslated, needs work/fuzzy: 0) - [ ] pt.po : (197 / 1312 remain untranslated, needs work/fuzzy: 0) - [ ] ru.po : (151 / 1312 remain untranslated, needs work/fuzzy: 0) - [ ] tr.po : (150 / 1312 remain untranslated, needs work/fuzzy: 0) - [ ] zh_CN.po : (968 / 1312 remain untranslated, needs work/fuzzy: 0) Needs work/fuzzy typically has to do with spaces/periods at begin/end of translation. Editing ------- Use the poedit program installed by: - apt install poedit (Debian flavours) - yum install poedit (Redhat flabours) Start the program: - poedit ./xx.po (xx=LANGUAGE-2LETTER-SMALL-CAPS) NOTE: In poedit please only do translation and use find, validate and save. New Language ------------ - cp NEW xx.po (xx=LANGUAGE-2LETTER-SMALL-CAPS) - emacs ./xx.po (edit the empty po and change all CHANGE-* accordingly) - ./updatepo.sh (updates the po with all the words/text we have in the program and shows status) - ready to edit - see above Backup and Commit to GitHub --------------------------- - git add xx.po (If you have made a new language translation) - git commit xx.po (Just commit your changed translation file to local repo) - git push (Push it to github) It is better to make a git push too much than loose all your great work. hardinfo2-hardinfo2-1331e88/po/da.po000066400000000000000000004674131474767047500171240ustar00rootroot00000000000000# Danish translations for hardinfo2 package # Danish translation for hardinfo2. # Copyright (C) HardInfo2 Project # This file is distributed under the same license as the hardinfo2 package. # hwspeedy # msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-10-24 00:10+0200\n" "PO-Revision-Date: 2024-10-24 00:14+0200\n" "Last-Translator: hwspeedy\n" "Language-Team: \n" "Language: da\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Poedit-Basepath: ..\n" "X-Generator: Poedit 3.0.1\n" #: hardinfo2/cpu_util.c:29 msgid "Little Endian" msgstr "Lille Indianer" #: hardinfo2/cpu_util.c:31 msgid "Big Endian" msgstr "Stor Indianer" #: hardinfo2/cpu_util.c:205 hardinfo2/cpu_util.c:216 modules/devices/gpu.c:262 msgid "Frequency Scaling" msgstr "Frekvensskalering" #: hardinfo2/cpu_util.c:206 modules/devices/gpu.c:263 msgid "Minimum" msgstr "" #: hardinfo2/cpu_util.c:206 hardinfo2/cpu_util.c:207 hardinfo2/cpu_util.c:208 #: hardinfo2/dt_util.c:590 modules/devices/gpu.c:263 modules/devices/gpu.c:264 msgid "kHz" msgstr "" #: hardinfo2/cpu_util.c:207 modules/devices/gpu.c:264 msgid "Maximum" msgstr "Maksimum" #: hardinfo2/cpu_util.c:208 msgid "Current" msgstr "Aktuelt" #: hardinfo2/cpu_util.c:209 modules/devices/gpu.c:265 msgid "Transition Latency" msgstr "Overgangsforsinkelse" #: hardinfo2/cpu_util.c:209 modules/devices/gpu.c:265 msgid "ns" msgstr "" #: hardinfo2/cpu_util.c:210 msgid "Governor" msgstr "Guvernør" #: hardinfo2/cpu_util.c:211 hardinfo2/cpu_util.c:217 modules/devices.c:842 #: modules/devices/gpu.c:209 modules/devices/pci.c:169 modules/devices/usb.c:139 msgid "Driver" msgstr "Driver" #: hardinfo2/cpu_util.c:223 modules/computer.c:801 #: modules/devices/arm/processor.c:195 modules/devices/arm/processor.c:477 #: modules/devices/e2k/processor.c:178 modules/devices/riscv/processor.c:185 #: modules/devices/riscv/processor.c:346 modules/devices/x86/processor.c:283 #: modules/devices/x86/processor.c:387 modules/devices/x86/processor.c:525 msgid "(Not Available)" msgstr "(Ikke tilgængelig)" #: hardinfo2/cpu_util.c:231 hardinfo2/cpu_util.c:233 msgid "Socket" msgstr "Sokkel" #: hardinfo2/cpu_util.c:236 hardinfo2/cpu_util.c:238 modules/devices/gpu.c:205 #: modules/devices/gpu.c:295 msgid "Core" msgstr "Kerne" #: hardinfo2/cpu_util.c:241 msgid "Book" msgstr "Bog" #: hardinfo2/cpu_util.c:243 msgid "Drawer" msgstr "Skuffe" #: hardinfo2/cpu_util.c:249 modules/devices/arm/processor.c:706 #: modules/devices/riscv/processor.c:551 modules/devices/x86/processor.c:751 msgid "Topology" msgstr "Topologi" #: hardinfo2/cpu_util.c:250 msgid "ID" msgstr "" #: hardinfo2/dmi_util.c:25 msgid "BIOS Information" msgstr "" #: hardinfo2/dmi_util.c:26 modules/devices/parisc/processor.c:157 msgid "System" msgstr "" #: hardinfo2/dmi_util.c:27 msgid "Base Board" msgstr "Bundplade" #: hardinfo2/dmi_util.c:28 modules/devices/dmi.c:54 msgid "Chassis" msgstr "" #: hardinfo2/dmi_util.c:29 modules/computer.c:580 modules/computer.c:1144 #: modules/devices/alpha/processor.c:87 modules/devices/arm/processor.c:563 #: modules/devices.c:99 modules/devices/e2k/processor.c:357 #: modules/devices/ia64/processor.c:159 #: modules/devices/loongarch64/processor.c:93 #: modules/devices/m68k/processor.c:83 modules/devices/mips/processor.c:74 #: modules/devices/parisc/processor.c:154 modules/devices/ppc/processor.c:157 #: modules/devices/riscv/processor.c:583 modules/devices/s390/processor.c:131 #: modules/devices/sh/processor.c:83 modules/devices/sparc/processor.c:74 #: modules/devices/x86/processor.c:647 msgid "Processor" msgstr "" #: hardinfo2/dmi_util.c:30 msgid "Memory Controller" msgstr "Hukommelsescontroller" #: hardinfo2/dmi_util.c:31 msgid "Memory Module" msgstr "Hukommelsesmodul" #: hardinfo2/dmi_util.c:32 modules/devices/arm/processor.c:572 #: modules/devices/e2k/processor.c:366 modules/devices/parisc/processor.c:163 #: modules/devices/riscv/processor.c:592 modules/devices/x86/processor.c:663 msgid "Cache" msgstr "" #: hardinfo2/dmi_util.c:33 msgid "Port Connector" msgstr "Port-stik" #: hardinfo2/dmi_util.c:34 msgid "System Slots" msgstr "Systempladser" #: hardinfo2/dmi_util.c:35 msgid "On Board Devices" msgstr "Indbyggede enheder" #: hardinfo2/dmi_util.c:36 msgid "OEM Strings" msgstr "" #: hardinfo2/dmi_util.c:37 msgid "System Configuration Options" msgstr "Systemkonfigurationsindstillinger" #: hardinfo2/dmi_util.c:38 msgid "BIOS Language" msgstr "BIOS-sprog" #: hardinfo2/dmi_util.c:39 msgid "Group Associations" msgstr "Koncernforeninger" #: hardinfo2/dmi_util.c:40 msgid "System Event Log" msgstr "Systemhændelseslog" #: hardinfo2/dmi_util.c:41 msgid "Physical Memory Array" msgstr "" #: hardinfo2/dmi_util.c:42 msgid "Memory Device" msgstr "Hukommelsesenhed" #: hardinfo2/dmi_util.c:43 msgid "32-bit Memory Error" msgstr "32-bit hukommelsesfejl" #: hardinfo2/dmi_util.c:44 msgid "Memory Array Mapped Address" msgstr "" #: hardinfo2/dmi_util.c:45 msgid "Memory Device Mapped Address" msgstr "" #: hardinfo2/dmi_util.c:46 msgid "Built-in Pointing Device" msgstr "Indbygget pegeredskab" #: hardinfo2/dmi_util.c:47 msgid "Portable Battery" msgstr "Bærbart batteri" #: hardinfo2/dmi_util.c:48 msgid "System Reset" msgstr "Systemnulstilling" #: hardinfo2/dmi_util.c:49 msgid "Hardware Security" msgstr "Hardwaresikkerhed" #: hardinfo2/dmi_util.c:50 msgid "System Power Controls" msgstr "" #: hardinfo2/dmi_util.c:51 msgid "Voltage Probe" msgstr "Spændingssonde" #: hardinfo2/dmi_util.c:52 msgid "Cooling Device" msgstr "Køleanordning" #: hardinfo2/dmi_util.c:53 msgid "Temperature Probe" msgstr "Temperatursonde" #: hardinfo2/dmi_util.c:54 msgid "Electrical Current Probe" msgstr "Elektrisk strømsonde" #: hardinfo2/dmi_util.c:55 msgid "Out-of-band Remote Access" msgstr "Out-of-band fjernadgang" #: hardinfo2/dmi_util.c:56 msgid "Boot Integrity Services" msgstr "" #: hardinfo2/dmi_util.c:57 msgid "System Boot" msgstr "Systemstart" #: hardinfo2/dmi_util.c:58 msgid "64-bit Memory Error" msgstr "64-bit hukommelsesfejl" #: hardinfo2/dmi_util.c:59 msgid "Management Device" msgstr "" #: hardinfo2/dmi_util.c:60 msgid "Management Device Component" msgstr "" #: hardinfo2/dmi_util.c:61 msgid "Management Device Threshold Data" msgstr "" #: hardinfo2/dmi_util.c:62 msgid "Memory Channel" msgstr "" #: hardinfo2/dmi_util.c:63 msgid "IPMI Device" msgstr "IPMI-enhed" #: hardinfo2/dmi_util.c:64 msgid "Power Supply" msgstr "Strømforsyning" #: hardinfo2/dmi_util.c:65 msgid "Additional Information" msgstr "Yderligere oplysninger" #: hardinfo2/dmi_util.c:66 msgid "Onboard Device" msgstr "Indbygget enhed" #: hardinfo2/dmi_util.c:233 msgid "Invalid chassis type (0)" msgstr "Ugyldig chassistype (0)" #: hardinfo2/dmi_util.c:234 hardinfo2/dmi_util.c:235 msgid "Unknown chassis type" msgstr "Ukendt chassistype" #: hardinfo2/dmi_util.c:236 msgid "Desktop" msgstr "" #: hardinfo2/dmi_util.c:237 msgid "Low-profile Desktop" msgstr "Desktop med lav profil" #: hardinfo2/dmi_util.c:238 msgid "Pizza Box" msgstr "Pizzaboks" #: hardinfo2/dmi_util.c:239 msgid "Mini Tower" msgstr "Minitårn" #: hardinfo2/dmi_util.c:240 msgid "Tower" msgstr "Tårn" #: hardinfo2/dmi_util.c:241 msgid "Portable" msgstr "Bærbar" #: hardinfo2/dmi_util.c:242 modules/computer.c:408 modules/computer.c:417 #: modules/computer.c:440 modules/computer.c:442 msgid "Laptop" msgstr "Bærbar" #: hardinfo2/dmi_util.c:243 msgid "Notebook" msgstr "Notesbog" #: hardinfo2/dmi_util.c:244 msgid "Handheld" msgstr "Håndholdt" #: hardinfo2/dmi_util.c:245 msgid "Docking Station" msgstr "Dokkestation" #: hardinfo2/dmi_util.c:246 msgid "All-in-one" msgstr "Alt-i-én" #: hardinfo2/dmi_util.c:247 msgid "Subnotebook" msgstr "Undernotesbog" #: hardinfo2/dmi_util.c:248 msgid "Space-saving" msgstr "Pladsbesparende" #: hardinfo2/dmi_util.c:249 msgid "Lunch Box" msgstr "Madkasse" #: hardinfo2/dmi_util.c:250 msgid "Main Server Chassis" msgstr "Hovedserverchassis" #: hardinfo2/dmi_util.c:251 msgid "Expansion Chassis" msgstr "Udvidelseschassis" #: hardinfo2/dmi_util.c:252 msgid "Sub Chassis" msgstr "Underchassis" #: hardinfo2/dmi_util.c:253 msgid "Bus Expansion Chassis" msgstr "Busudvidelseschassis" #: hardinfo2/dmi_util.c:254 msgid "Peripheral Chassis" msgstr "Perifert chassis" #: hardinfo2/dmi_util.c:255 msgid "RAID Chassis" msgstr "" #: hardinfo2/dmi_util.c:256 msgid "Rack Mount Chassis" msgstr "" #: hardinfo2/dmi_util.c:257 msgid "Sealed-case PC" msgstr "Pc med forseglet etui" #: hardinfo2/dmi_util.c:258 msgid "Multi-system" msgstr "Multisystem" #: hardinfo2/dmi_util.c:259 msgid "CompactPCI" msgstr "" #: hardinfo2/dmi_util.c:260 msgid "AdvancedTCA" msgstr "" #: hardinfo2/dmi_util.c:261 msgid "Blade" msgstr "Klinge" #: hardinfo2/dmi_util.c:262 msgid "Blade Enclosing" msgstr "Klingeindkapsling" #: hardinfo2/dmi_util.c:263 msgid "Tablet" msgstr "" #: hardinfo2/dmi_util.c:264 msgid "Convertible" msgstr "Cabriolet" #: hardinfo2/dmi_util.c:265 msgid "Detachable" msgstr "Aftagelig" #: hardinfo2/dmi_util.c:266 msgid "IoT Gateway" msgstr "" #: hardinfo2/dmi_util.c:267 msgid "Embedded PC" msgstr "" #: hardinfo2/dmi_util.c:268 msgid "Mini PC" msgstr "" #: hardinfo2/dmi_util.c:269 msgid "Stick PC" msgstr "" #: hardinfo2/dt_util.c:1175 msgid "phandle Map" msgstr "phandle Kort" #: hardinfo2/dt_util.c:1176 msgid "Alias Map" msgstr "Alias ​​Kort" #: hardinfo2/dt_util.c:1177 msgid "Symbol Map" msgstr "Symbolkort" #. !/ %d will be latest year of copyright #: hardinfo2/hardinfo.c:108 #, c-format msgid "" "Copyright (C) 2003-2023 L. A. F. Pereira. 2024-%d Hardinfo2 Project.\n" "\n" msgstr "" "Copyright (C) 2003-2023 L. A. F. Pereira. 2024-%d Hardinfo2 Project.\n" "\n" #: hardinfo2/hardinfo.c:110 #, c-format msgid "" "Compile-time options:\n" " Release version: %s (%s)\n" " LibSoup version: %s\n" " Data : %s\n" " Library : %s\n" " Locale : %s\n" " Compiled for : %s\n" msgstr "" "Indstillinger for kompileringstid:\n" " Udgivelsesversion: %s (%s)\n" " LibSoup version : %s\n" " Data : %s\n" " Library : %s\n" " Locale : %s\n" " Compiled for : %s\n" #: hardinfo2/hardinfo.c:118 msgid "3.0" msgstr "3,0" #: hardinfo2/hardinfo.c:153 #, c-format msgid "Unknown benchmark ``%s''\n" msgstr "Ukendt benchmark ``%s''\n" #: hardinfo2/hardinfo.c:192 msgid "Don't know what to do. Exiting." msgstr "Ved ikke hvad jeg skal gøre." #: hardinfo2/usb_util.c:293 modules/devices/devicetree.c:90 #: modules/devices/devicetree.c:91 modules/devices/monitors.c:411 #: modules/devices/storage.c:306 modules/devices/storage.c:328 msgid "(None)" msgstr "(Ingen)" #: hardinfo2/util.c:100 modules/computer/uptime.c:54 #, c-format msgid "%d day" msgid_plural "%d days" msgstr[0] "" msgstr[1] "" #: hardinfo2/util.c:101 modules/computer/uptime.c:55 #, c-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "" msgstr[1] "" #: hardinfo2/util.c:102 modules/computer/uptime.c:56 #, c-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "" msgstr[1] "" #: hardinfo2/util.c:103 #, c-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "" msgstr[1] "" #: hardinfo2/util.c:124 #, c-format msgid "%.1f B" msgstr "" #: hardinfo2/util.c:126 #, c-format msgid "%.1f KiB" msgstr "" #: hardinfo2/util.c:128 #, c-format msgid "%.1f MiB" msgstr "" #: hardinfo2/util.c:130 #, c-format msgid "%.1f GiB" msgstr "" #: hardinfo2/util.c:132 #, c-format msgid "%.1f TiB" msgstr "" #: hardinfo2/util.c:134 #, c-format msgid "%.1f PiB" msgstr "" #: hardinfo2/util.c:283 msgid "Error" msgstr "Fejl" #: hardinfo2/util.c:283 hardinfo2/util.c:299 msgid "Warning" msgstr "Advarsel" #: hardinfo2/util.c:298 msgid "Fatal Error" msgstr "Fatal fejl" #: hardinfo2/util.c:325 msgid "do not print status messages to standard output" msgstr "udskriv ikke statusmeddelelser til standardoutput" #: hardinfo2/util.c:331 msgid "creates a report and prints to standard output" msgstr "opretter en rapport og udskriver til standardoutput" #: hardinfo2/util.c:337 msgid "chooses a report format ([text], html)" msgstr "vælger et rapportformat ([tekst], html)" #: hardinfo2/util.c:343 msgid "run single benchmark eg. -b 'FPU FFT' (Default all Benchmarks runs)" msgstr "" "run single benchmark f.eks. -b 'FPU FFT' (normalt kører alle benchmarks)" #: hardinfo2/util.c:349 msgid "" "user note attached to benchmark results. (updating/synchronize with server)" msgstr "brugernote knyttet til benchmarkresultater." #: hardinfo2/util.c:355 msgid "benchmark result format ([short], conf, shell)" msgstr "benchmark resultatformat ([short], conf, shell)" #: hardinfo2/util.c:361 msgid "" "maximum number of benchmark results to include (-1 for no limit, default is " "50)" msgstr "" "maksimalt antal benchmarkresultater, der skal inkluderes (-1 for ingen " "grænse, standard er 50)" #: hardinfo2/util.c:367 msgid "shows program version and quit" msgstr "viser programversion og afslutte" #: hardinfo2/util.c:373 msgid "do not run benchmarks" msgstr "kør ikke benchmarks" #: hardinfo2/util.c:379 msgid "show all details" msgstr "vis alle detaljer" #: hardinfo2/util.c:384 msgid "- System Information and Benchmark" msgstr "- Systeminformation og benchmark" #: hardinfo2/util.c:394 #, c-format msgid "" "Unrecognized arguments.\n" "Try ``%s --help'' for more information.\n" msgstr "" "Ugenkendte argumenter.\n" "Prøv ``%s --help'' for at få flere oplysninger.\n" #: hardinfo2/util.c:867 #, c-format msgid "Scanning: %s..." msgstr "" #: hardinfo2/util.c:877 shell/shell.c:303 shell/shell.c:877 shell/shell.c:2114 msgid "Done." msgstr "Færdig." #: hardinfo2/vendor.c:213 msgid "Update vendor list" msgstr "Opdater leverandørliste" #: hardinfo2/vendor.c:218 msgid "Check Update Version" msgstr "Tjek opdateringsversion" #: hardinfo2/vendor.c:391 modules/computer.c:630 modules/computer.c:829 #: modules/computer/os.c:196 modules/computer/os.c:378 modules/computer/os.c:413 #: modules/computer/os.c:745 modules/computer/os.c:806 modules/devices.c:464 #: modules/devices.c:614 modules/devices/firmware.c:149 #: modules/devices/printers.c:106 modules/devices/printers.c:113 #: modules/devices/printers.c:123 modules/devices/printers.c:138 #: modules/devices/printers.c:147 modules/devices/printers.c:256 #: modules/devices/spd-decode.c:364 modules/devices/usb.c:149 msgid "Unknown" msgstr "Ukendt" #: shell/callbacks.c:457 shell/shell.c:531 msgid "System Information and Benchmark" msgstr "Systemoplysninger og benchmark" #: shell/callbacks.c:461 msgid "" "HardInfo2 is free software; you can redistribute it and/or modify it under " "the terms of the GNU General Public License as published by the Free Software " "Foundation, version 2 or later.\n" "\n" "This program is distributed in the hope that it will be useful, but WITHOUT " "ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS " "FOR A PARTICULAR PURPOSE. See the GNU General Public License for more " "details.\n" "\n" "You should have received a copy of the GNU General Public License along with " "this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin St, Fifth Floor, Boston, MA 02110-1301 USA" msgstr "" "HardInfo2 er gratis software; du kan videredistribuere det og/eller ændre det " "i henhold til betingelserne i GNU General Public License som udgivet af Free " "Software Foundation, version 2 eller nyere.\n" "\n" "Dette program distribueres i håb om, at det vil være nyttigt, men UDEN NOGEN " "GARANTI; uden selv den underforståede garanti for SALGBARHED eller EGNETHED " "TIL ET BESTEMT FORMÅL. Se GNU General Public License for flere detaljer.\n" "\n" "Du skulle have modtaget en kopi af GNU General Public License sammen med " "dette program; hvis ikke, skriv til Free Software Foundation, Inc., 51 " "Franklin St, Fifth Floor, Boston, MA 02110-1301 USA" #: shell/menu.c:37 msgid "_Information" msgstr "_Oplysninger" #: shell/menu.c:38 msgid "_View" msgstr "_Visning" #: shell/menu.c:40 msgid "_Theme" msgstr "_Tema" #: shell/menu.c:42 msgid "_Help" msgstr "_Hjælp" #: shell/menu.c:46 msgid "Generate _Report" msgstr "Generer _Rapport" #: shell/menu.c:47 msgid "Generates a report with detailed system information" msgstr "Genererer en rapport med detaljerede systemoplysninger" #: shell/menu.c:51 shell/syncmanager.c:692 msgid "Synchronize" msgstr "Synkroniser" #: shell/menu.c:52 msgid "Send benchmark results and receive updated data from the network" msgstr "Send benchmarkresultater og modtag opdaterede data fra netværket" #: shell/menu.c:62 msgid "_Refresh" msgstr "_Opdater" #: shell/menu.c:67 msgid "_Open HardInfo2 Web Site" msgstr "_Åbn HardInfo2-webstedet" #: shell/menu.c:72 msgid "_Report bug" msgstr "_Rapportér fejl" #: shell/menu.c:77 msgid "_About HardInfo2" msgstr "_Om HardInfo2" #: shell/menu.c:78 msgid "Displays program version information" msgstr "Viser oplysninger om programversion" #: shell/menu.c:82 msgid "_Quit" msgstr "_Afslut" #: shell/menu.c:89 msgid "_Side Pane" msgstr "_Siderude" #: shell/menu.c:90 msgid "Toggles side pane visibility" msgstr "Skifter siderudens synlighed" #: shell/menu.c:93 msgid "_Toolbar" msgstr "_Værktøjslinje" #: shell/menu.c:97 msgid "Synchronize on startup" msgstr "Synkroniser ved opstart" #: shell/menu.c:102 msgid "Disable Theme" msgstr "Deaktiver tema" #: shell/menu.c:106 msgid "Theme Motherboard" msgstr "Tema bundkort" #: shell/menu.c:110 msgid "Theme Graffiti" msgstr "Tema Graffiti" #: shell/menu.c:114 msgid "Theme Anime PC" msgstr "" #: shell/menu.c:118 msgid "Theme Tux Star" msgstr "Tema Tux Star" #: shell/menu.c:122 msgid "Theme PixArt" msgstr "Tema PixArt" #: shell/menu.c:126 msgid "Theme Silicon" msgstr "Tema Silicium" #: shell/report.c:833 shell/report.c:841 msgid "Save File" msgstr "Gem fil" #: shell/report.c:836 shell/report.c:1315 shell/syncmanager.c:778 msgid "_Cancel" msgstr "_Annuller" #: shell/report.c:838 msgid "_Save" msgstr "_Gem" #: shell/report.c:1016 msgid "Cannot create ReportContext. Programming bug?" msgstr "Kan ikke oprette Rapport indhold." #: shell/report.c:1036 msgid "Open the report with your web browser?" msgstr "Åbne rapporten med din webbrowser?" #: shell/report.c:1039 msgid "_No" msgstr "_Nej" #: shell/report.c:1040 msgid "_Open" msgstr "_Åben" #: shell/report.c:1071 msgid "Generating report..." msgstr "Generer rapport..." #: shell/report.c:1081 msgid "Report saved." msgstr "Rapport gemt." #: shell/report.c:1083 msgid "Error while creating the report." msgstr "Fejl under oprettelse af rapporten." #: shell/report.c:1185 msgid "Generate Report" msgstr "Generer rapport" #: shell/report.c:1211 msgid "" "Generate Report\n" "Please choose the information that you wish to view in your report:" msgstr "" "Generer rapport\n" "Vælg de oplysninger, du ønsker at se i din rapport:" #: shell/report.c:1281 msgid "Select _None" msgstr "Vælg _Ingen" #: shell/report.c:1292 msgid "Select _All" msgstr "Vælg _Alle" #: shell/report.c:1325 msgid "_Generate" msgstr "_Generer" #: shell/shell.c:526 #, c-format msgid "%s - System Information and Benchmark" msgstr "%s - Systemoplysninger og benchmark" #: shell/shell.c:862 msgid "Loading modules..." msgstr "Indlæser moduler..." #: shell/shell.c:1633 msgid "URL" msgstr "" #: shell/shell.c:1640 msgid "Support URL" msgstr "" #: shell/shell.c:1651 msgid "Wikipedia" msgstr "" #: shell/shell.c:1984 #, c-format msgid "%s → Summary" msgstr "%s → Resume" #: shell/shell.c:2090 msgid "Updating..." msgstr "Opdaterer..." #: shell/syncmanager.c:80 msgid "" "Synchronize with Central Database\n" "The following information may be synchronized\n" "with the HardInfo2 central database." msgstr "" "Synkroniser med central database\n" "Følgende information kan synkroniseres\n" "med den centrale HardInfo-database." #: shell/syncmanager.c:84 msgid "" "Synchronizing\n" "This may take some time." msgstr "" "Synkroniserer\n" "Dette kan tage noget tid." #: shell/syncmanager.c:546 msgid "(canceled)" msgstr "(annulleret)" #: shell/syncmanager.c:562 msgid "(failed)" msgstr "(mislykkedes)" #: shell/syncmanager.c:658 modules/benchmark.c:923 msgid "Send benchmark results" msgstr "Send benchmarkresultater" #: shell/syncmanager.c:765 msgid "Privacy Policy" msgstr "Privatlivspolitik" #: shell/syncmanager.c:787 msgid "_Synchronize" msgstr "_Synkroniser" #: shell/syncmanager.c:836 #, c-format msgid "Synchronizing: %s" msgstr "Synkroniserer: %s" #: modules/benchmark/benches.c:136 msgid "CPU Blowfish (Single-thread)" msgstr "CPU Blowfish (Enkelt-tråd)" #: modules/benchmark/benches.c:144 msgid "CPU Blowfish (Multi-thread)" msgstr "CPU Blowfish (Multi-tråd)" #: modules/benchmark/benches.c:152 msgid "CPU Blowfish (Multi-core)" msgstr "CPU Blowfish (Multi-kerne)" #: modules/benchmark/benches.c:160 msgid "CPU Zlib" msgstr "" #: modules/benchmark/benches.c:168 msgid "CPU CryptoHash" msgstr "" #: modules/benchmark/benches.c:176 msgid "CPU Fibonacci" msgstr "" #: modules/benchmark/benches.c:184 msgid "CPU N-Queens" msgstr "CPU N-Dronninger" #: modules/benchmark/benches.c:192 msgid "FPU FFT" msgstr "" #: modules/benchmark/benches.c:200 msgid "FPU Raytracing (Single-thread)" msgstr "FPU Raytracing (Enkelt-tråd)" #: modules/benchmark/benches.c:208 msgid "Internal Network Speed" msgstr "Intern Netværkshastighed" #: modules/benchmark/benches.c:216 msgid "SysBench CPU (Single-thread)" msgstr "SysBench CPU (Enkelt-tråd)" #: modules/benchmark/benches.c:224 msgid "SysBench CPU (Multi-thread)" msgstr "SysBench CPU (Multi-tråd)" #: modules/benchmark/benches.c:232 msgid "SysBench CPU (Four threads)" msgstr "SysBench CPU (Fire tråde)" #: modules/benchmark/benches.c:240 msgid "SysBench Memory (Single-thread)" msgstr "SysBench Memory (Enkelt-tråd)" #: modules/benchmark/benches.c:248 msgid "SysBench Memory (Two threads)" msgstr "SysBench Memory (To tråde)" #: modules/benchmark/benches.c:256 msgid "SysBench Memory (Quad threads)" msgstr "SysBench Memory (Fire tråde)" #: modules/benchmark/benches.c:264 msgid "SysBench Memory (Multi-thread)" msgstr "SysBench Memory (Multi-tråd)" #: modules/benchmark/benches.c:272 msgid "GPU Drawing" msgstr "GPU-tegning" #: modules/benchmark/benches.c:281 msgid "GPU OpenGL Drawing" msgstr "" #: modules/benchmark/benches.c:290 msgid "Storage R/W Speed" msgstr "" #: modules/benchmark/benches.c:304 msgid "" "Alexey Kopytov's sysbench is required.\n" "Results in events/second. Higher is better." msgstr "" "Alexey Kopytovs sysbench er påkrævet.\n" "Resultater i hændelser/sekund. Højere er bedre." #: modules/benchmark/benches.c:310 msgid "" "Alexey Kopytov's sysbench is required.\n" "Results in MiB/second. Higher is better." msgstr "" "Alexey Kopytovs sysbench er påkrævet.\n" "Resultater i MiB/sekund. Højere er bedre." #: modules/benchmark/benches.c:313 msgid "" "iperf3 is required.\n" "Results in Gbits/s. Higher is better." msgstr "" "iperf3 er påkrævet.\n" "Resultater i Gbits/s. Højere er bedre." #: modules/benchmark/benches.c:324 msgid "Results in HIMarks. Higher is better." msgstr "Resultater i HIMarks.Højere er bedre." #: modules/benchmark/benches.c:326 msgid "" "Results in HIMarks. Higher is better.\n" "Many Desktop Environments only uses software." msgstr "" #: modules/benchmark/benches.c:329 msgid "Results in MB/s. Higher is better." msgstr "" #: modules/benchmark/benches.c:332 msgid "Results in FPS. Higher is better." msgstr "" #. !/ Used for an unknown value. Having it in only one place cleans up the .po #. * line references #: modules/benchmark/bench_results.c:34 modules/computer.c:41 #: modules/computer/display.c:40 modules/computer/display.c:57 #: modules/computer/os.c:400 modules/computer/os.c:457 modules/devices.c:596 #: modules/devices/dmi_memory.c:699 modules/devices/dmi_memory.c:835 #: modules/devices/gpu.c:40 modules/devices/gpu.c:58 modules/devices/gpu.c:122 #: modules/devices/gpu.c:130 modules/devices/gpu.c:210 modules/devices/gpu.c:211 #: modules/devices/gpu.c:230 modules/devices/inputdevices.c:51 #: modules/devices/monitors.c:28 modules/devices/monitors.c:29 #: modules/devices/monitors.c:155 modules/devices/monitors.c:164 #: modules/devices/pci.c:25 modules/devices/pci.c:170 modules/devices/pci.c:171 #: modules/devices/spd-decode.c:358 modules/devices/spd-decode.c:359 #: modules/devices/spd-decode.c:362 modules/devices/spd-decode.c:363 #: modules/devices/spd-decode.c:584 modules/devices/spd-decode.c:899 #: modules/devices/spd-decode.c:900 modules/devices/spd-decode.c:1111 #: modules/devices/spd-decode.c:1350 modules/devices/storage.c:27 #: modules/devices/storage.c:307 modules/devices/storage.c:336 #: modules/devices/storage.c:431 modules/devices/usb.c:29 #: modules/network/net.c:460 includes/cpu_util.h:11 includes/spd-decode.h:24 #: includes/spd-decode.h:25 msgid "(Unknown)" msgstr "(Ukendt)" #: modules/benchmark/bench_results.c:261 modules/devices/alpha/processor.c:90 #: modules/devices/arm/processor.c:511 modules/devices/arm/processor.c:524 #: modules/devices/arm/processor.c:567 modules/devices/arm/processor.c:739 #: modules/devices.c:430 modules/devices.c:438 modules/devices.c:466 #: modules/devices/e2k/processor.c:363 modules/devices/e2k/processor.c:400 #: modules/devices/gpu.c:125 modules/devices/gpu.c:127 modules/devices/gpu.c:133 #: modules/devices/gpu.c:135 modules/devices/gpu.c:233 modules/devices/gpu.c:235 #: modules/devices/ia64/processor.c:167 modules/devices/ia64/processor.c:196 #: modules/devices/loongarch64/processor.c:98 #: modules/devices/m68k/processor.c:87 modules/devices/mips/processor.c:77 #: modules/devices/parisc/processor.c:158 modules/devices/parisc/processor.c:191 #: modules/devices/ppc/processor.c:160 modules/devices/ppc/processor.c:187 #: modules/devices/riscv/processor.c:380 modules/devices/riscv/processor.c:393 #: modules/devices/riscv/processor.c:588 modules/devices/riscv/processor.c:623 #: modules/devices/s390/processor.c:160 modules/devices/sh/processor.c:87 #: modules/devices/sh/processor.c:88 modules/devices/sh/processor.c:89 #: modules/devices/x86/processor.c:317 modules/devices/x86/processor.c:330 #: modules/devices/x86/processor.c:658 modules/devices/x86/processor.c:789 msgid "MHz" msgstr "" #: modules/benchmark/bench_results.c:293 modules/devices.c:177 #, c-format msgid "%d physical processor" msgid_plural "%d physical processors" msgstr[0] "" msgstr[1] "" #: modules/benchmark/bench_results.c:294 modules/devices.c:178 #, c-format msgid "%d core" msgid_plural "%d cores" msgstr[0] "" msgstr[1] "" #: modules/benchmark/bench_results.c:295 modules/devices.c:179 #, c-format msgid "%d thread" msgid_plural "%d threads" msgstr[0] "" msgstr[1] "" #: modules/benchmark/bench_results.c:300 modules/devices.c:181 #, c-format msgid "%d NUMA node" msgid_plural "%d NUMA nodes" msgstr[0] "" msgstr[1] "" #. !/NP procs; NC cores across NN nodes; NT threads #: modules/benchmark/bench_results.c:304 #, c-format msgid "%s; %s across %s; %s" msgstr "%s; %s over %s; %s" #. !/NP procs; NC cores; NT threads #: modules/benchmark/bench_results.c:309 #, c-format msgid "%s; %s; %s" msgstr "%s; %s; %s" #: modules/benchmark/bench_results.c:383 modules/benchmark/bench_results.c:508 #: modules/computer.c:1041 modules/devices/dmi_memory.c:639 #: modules/devices/dmi_memory.c:649 modules/devices/dmi_memory.c:703 #: modules/devices/dmi_memory.c:791 modules/devices/dmi_memory.c:837 #: modules/devices/dmi_memory.c:920 modules/devices/spd-decode.c:1354 #: modules/network/net.c:416 modules/network/net.c:440 modules/network/net.c:441 msgid "MiB" msgstr "" #: modules/benchmark/bench_results.c:388 modules/benchmark/bench_results.c:507 msgid "kiB" msgstr "" #: modules/benchmark/bench_results.c:396 modules/benchmark/bench_results.c:452 #, c-format msgid "%d-bit" msgstr "" #: modules/benchmark/bench_results.c:417 modules/benchmark/bench_results.c:482 msgid "Benchmark Result" msgstr "Benchmark Resultat" #: modules/benchmark/bench_results.c:417 modules/benchmark/bench_results.c:482 msgid "Threads" msgstr "Tråde" #: modules/benchmark/bench_results.c:418 modules/benchmark/bench_results.c:484 msgid "Elapsed Time" msgstr "Forløbet tid" #: modules/benchmark/bench_results.c:418 modules/benchmark/bench_results.c:484 msgid "seconds" msgstr "sekunder" #: modules/benchmark/bench_results.c:419 modules/computer/languages.c:101 #: modules/devices/arm/processor.c:578 modules/devices/e2k/processor.c:362 #: modules/devices/gpu.c:203 modules/devices/ia64/processor.c:166 #: modules/devices/loongarch64/processor.c:97 modules/devices/pci.c:167 #: modules/devices/ppc/processor.c:159 msgid "Revision" msgstr "" #: modules/benchmark/bench_results.c:420 modules/benchmark/bench_results.c:485 msgid "Extra Information" msgstr "Ekstra information" #: modules/benchmark/bench_results.c:422 modules/benchmark/bench_results.c:487 msgid "Note" msgstr "Bemærk" #: modules/benchmark/bench_results.c:423 modules/benchmark/bench_results.c:488 msgid "" "This result is from an old version of HardInfo. Results might not be " "comparable to current version. Some details are missing." msgstr "" #: modules/benchmark/bench_results.c:427 modules/benchmark/bench_results.c:492 #: modules/devices/devicetree/pmac_data.c:81 modules/devices/sh/processor.c:85 msgid "Machine" msgstr "Maskin" #: modules/benchmark/bench_results.c:428 modules/benchmark/bench_results.c:492 #: modules/devices/devicetree.c:207 modules/devices/dmi.c:48 msgid "Board" msgstr "Bestyrelsen" #: modules/benchmark/bench_results.c:429 modules/benchmark/bench_results.c:494 #: modules/computer.c:583 msgid "Machine Type" msgstr "Maskintype" #: modules/benchmark/bench_results.c:430 modules/benchmark/bench_results.c:497 msgid "CPU Name" msgstr "CPU navn" #: modules/benchmark/bench_results.c:431 modules/benchmark/bench_results.c:498 msgid "CPU Description" msgstr "CPU-beskrivelse" #: modules/benchmark/bench_results.c:432 modules/benchmark/bench_results.c:500 #: modules/benchmark.c:600 msgid "CPU Config" msgstr "CPU Konfig" #: modules/benchmark/bench_results.c:433 modules/benchmark/bench_results.c:500 msgid "Threads Available" msgstr "Tråde tilgængelige" #: modules/benchmark/bench_results.c:434 modules/benchmark/bench_results.c:501 #: modules/benchmark.c:578 msgid "GPU" msgstr "" #: modules/benchmark/bench_results.c:435 modules/benchmark/bench_results.c:503 #: modules/computer.c:595 msgid "OpenGL Renderer" msgstr "" #: modules/benchmark/bench_results.c:436 modules/benchmark/bench_results.c:505 #: modules/benchmark.c:589 modules/computer.c:1145 modules/devices.c:109 msgid "Storage" msgstr "Lagerplads" #: modules/benchmark/bench_results.c:437 modules/benchmark/bench_results.c:507 #: modules/computer.c:140 modules/computer.c:582 modules/computer.c:1144 #: modules/devices/gpu.c:206 msgid "Memory" msgstr "Hukommelse" #: modules/benchmark/bench_results.c:438 modules/benchmark/bench_results.c:509 msgid "Pointer Size" msgstr "Pointer Størrelse" #: modules/benchmark/bench_results.c:482 msgid "Benchmark" msgstr "" #: modules/benchmark/bench_results.c:483 modules/devices/dmi_memory.c:859 #: modules/devices/firmware.c:245 modules/devices/monitors.c:495 #: modules/devices/x86/processor.c:692 msgid "Result" msgstr "Resultat" #: modules/benchmark/bench_results.c:495 msgid "Linux Kernel" msgstr "Linux-kerne" #: modules/benchmark/bench_results.c:496 msgid "Linux OS" msgstr "" #: modules/benchmark/bench_results.c:507 msgid "Physical Memory" msgstr "Fysisk hukommelse" #: modules/benchmark/bench_results.c:511 msgid "Handles" msgstr "Håndtag" #: modules/benchmark/bench_results.c:511 msgid "mid" msgstr "midt" #: modules/benchmark/bench_results.c:512 msgid "cfg_val" msgstr "" #: modules/benchmark.c:351 msgid "This Machine" msgstr "Denne maskine" #: modules/benchmark.c:577 modules/benchmark.c:588 modules/benchmark.c:600 msgid "Results" msgstr "Resultater" #: modules/benchmark.c:601 modules/devices/sparc/processor.c:75 msgid "CPU" msgstr "" #: modules/benchmark.c:679 #, c-format msgid "Benchmarking: %s." msgstr "" #: modules/benchmark.c:683 #, c-format msgid "Benchmarking: %s" msgstr "" #: modules/benchmark.c:687 msgid "Stop" msgstr "" #: modules/benchmark.c:700 msgid "" "Please do not move your mouse\n" "or press any keys." msgstr "" "Venligst ikke flytte musen\n" "eller trykke på taster." #: modules/benchmark.c:759 msgid "Benchmarks" msgstr "" #: modules/benchmark.c:769 msgid "Perform tasks and compare with other systems" msgstr "Udfør opgaver og sammenlign med andre systemer" #: modules/benchmark.c:929 msgid "Receive benchmark results" msgstr "Modtag benchmarkresultater" #: modules/computer/alsa.c:26 modules/computer.c:599 msgid "Audio Devices" msgstr "Lydudstyr" #: modules/computer/alsa.c:34 msgid "Audio Adapter" msgstr "Lydadapter" #: modules/computer.c:96 modules/devices/firmware.c:74 msgid "Summary" msgstr "Sammendrag" #: modules/computer.c:97 modules/computer.c:585 modules/computer.c:1143 msgid "Operating System" msgstr "Operativsystem" #: modules/computer.c:98 msgid "Security" msgstr "Sikkerhed" #: modules/computer.c:99 modules/devices/gpu.c:211 modules/devices/pci.c:171 msgid "Kernel Modules" msgstr "Kernemoduler" #: modules/computer.c:100 modules/computer.c:741 msgid "Boots" msgstr "Opstart" #: modules/computer.c:101 msgid "Languages" msgstr "Sprog" #: modules/computer.c:102 msgid "Memory Usage" msgstr "Hukommelsesbrug" #: modules/computer.c:103 msgid "Filesystems" msgstr "Filsystemer" #: modules/computer.c:104 modules/computer.c:590 msgid "Display" msgstr "Visning" #: modules/computer.c:105 modules/computer/environment.c:37 msgid "Environment Variables" msgstr "Miljøvariabler" #: modules/computer.c:107 modules/computer.c:109 msgid "Development" msgstr "Udvikling" #: modules/computer.c:111 modules/computer.c:884 msgid "Users" msgstr "Brugere" #: modules/computer.c:112 msgid "Groups" msgstr "Grupper" #: modules/computer.c:142 #, c-format msgid "%dMB (%dMB used)" msgstr "%dMB (%dMB brugt)" #: modules/computer.c:144 modules/computer.c:646 msgid "Uptime" msgstr "Oppetid" #: modules/computer.c:146 modules/computer.c:587 msgid "Date/Time" msgstr "Dato/Tid" #: modules/computer.c:151 modules/computer.c:647 msgid "Load Average" msgstr "Belastningsgennemsnit" #: modules/computer.c:266 msgid "Scripting Languages" msgstr "Skriftsprog" #: modules/computer.c:267 msgid "Gambas3 (gbr3)" msgstr "" #: modules/computer.c:268 msgid "Python (default)" msgstr "Python (standard)" #: modules/computer.c:269 msgid "Python2" msgstr "" #: modules/computer.c:270 msgid "Python3" msgstr "" #: modules/computer.c:271 msgid "Perl" msgstr "" #: modules/computer.c:272 msgid "Rakudo (Perl6)" msgstr "" #: modules/computer.c:273 msgid "PHP" msgstr "" #: modules/computer.c:274 msgid "Ruby" msgstr "" #: modules/computer.c:275 msgid "Bash" msgstr "" #: modules/computer.c:276 msgid "JavaScript (Node.js)" msgstr "" #: modules/computer.c:277 msgid "awk" msgstr "aak" #: modules/computer.c:278 msgid "Compilers" msgstr "Kompilatorer" #: modules/computer.c:279 msgid "C (GCC)" msgstr "" #: modules/computer.c:280 msgid "C (Clang)" msgstr "C (Klang)" #: modules/computer.c:281 msgid "D (dmd)" msgstr "" #: modules/computer.c:282 msgid "Gambas3 (gbc3)" msgstr "" #: modules/computer.c:283 msgid "Java" msgstr "" #: modules/computer.c:284 msgid ".NET" msgstr "" #: modules/computer.c:285 msgid "Vala" msgstr "" #: modules/computer.c:286 msgid "Haskell (GHC)" msgstr "" #: modules/computer.c:287 msgid "FreePascal" msgstr "" #: modules/computer.c:288 msgid "Go" msgstr "Gå" #: modules/computer.c:289 msgid "Rust" msgstr "" #: modules/computer.c:290 msgid "Tools" msgstr "Værktøj" #: modules/computer.c:291 msgid "make" msgstr "" #: modules/computer.c:292 msgid "ninja" msgstr "" #: modules/computer.c:293 msgid "GDB" msgstr "" #: modules/computer.c:294 msgid "LLDB" msgstr "" #: modules/computer.c:295 msgid "strace" msgstr "" #: modules/computer.c:296 msgid "valgrind" msgstr "" #: modules/computer.c:297 msgid "QMake" msgstr "" #: modules/computer.c:298 msgid "CMake" msgstr "CMaver" #: modules/computer.c:299 msgid "Gambas3 IDE" msgstr "" #: modules/computer.c:300 msgid "Radare2" msgstr "" #: modules/computer.c:301 msgid "ltrace" msgstr "" #: modules/computer.c:302 msgid "Powershell" msgstr "" #: modules/computer.c:343 msgid "Not found" msgstr "Ikke fundet" #: modules/computer.c:348 #, c-format msgid "Detecting version: %s" msgstr "Opdager version: %s" #: modules/computer.c:366 msgid "Program" msgstr "" #: modules/computer.c:366 modules/computer.c:629 modules/computer.c:631 #: modules/computer.c:807 modules/computer/modules.c:371 #: modules/devices/dmi.c:41 modules/devices/dmi.c:47 modules/devices/dmi.c:51 #: modules/devices/dmi.c:57 modules/devices/firmware.c:75 #: modules/devices/inputdevices.c:146 modules/devices/monitors.c:409 msgid "Version" msgstr "" #: modules/computer.c:385 msgid "Field" msgstr "Mark" #: modules/computer.c:385 modules/computer.c:730 modules/computer/modules.c:369 #: modules/computer/modules.c:370 modules/devices/arm/processor.c:705 #: modules/devices/riscv/processor.c:550 msgid "Description" msgstr "Beskrivelse" #: modules/computer.c:385 modules/devices.c:841 msgid "Value" msgstr "Værdi" #: modules/computer.c:402 modules/computer.c:404 msgid "Single-board computer" msgstr "Enkeltbordscomputer" #: modules/computer.c:455 modules/computer.c:457 msgid "Unknown physical machine type" msgstr "Ukendt fysisk maskintype" #: modules/computer.c:479 modules/computer.c:480 modules/computer.c:527 #: modules/computer.c:529 msgid "Virtual (VMware)" msgstr "Virtuel (VMware)" #: modules/computer.c:482 modules/computer.c:483 modules/computer.c:484 #: modules/computer.c:485 msgid "Virtual (QEMU)" msgstr "Virtuel (QEMU)" #: modules/computer.c:487 modules/computer.c:488 msgid "Virtual (Unknown)" msgstr "Virtuel (ukendt)" #: modules/computer.c:490 modules/computer.c:491 modules/computer.c:492 #: modules/computer.c:520 modules/computer.c:522 msgid "Virtual (VirtualBox)" msgstr "" #: modules/computer.c:494 modules/computer.c:495 modules/computer.c:496 #: modules/computer.c:511 modules/computer.c:513 msgid "Virtual (Xen)" msgstr "Virtuel (Xen)" #: modules/computer.c:498 msgid "Virtual (hypervisor present)" msgstr "Virtuel (hypervisor til stede)" #: modules/computer.c:579 modules/computer.c:1097 msgid "Computer" msgstr "" #: modules/computer.c:586 modules/computer.c:640 msgid "User Name" msgstr "Brugernavn" #: modules/computer.c:591 msgid "Resolution" msgstr "" #: modules/computer.c:591 modules/computer.c:812 #, c-format msgid "%dx%d pixels" msgstr "" #: modules/computer.c:593 msgid "Display Adapter" msgstr "Skærmadapter" #: modules/computer.c:596 msgid "Session Display Server" msgstr "" #: modules/computer.c:601 modules/devices.c:108 msgid "Input Devices" msgstr "Inputenheder" #: modules/computer.c:629 msgid "Kernel" msgstr "Kerne" #: modules/computer.c:630 msgid "Command Line" msgstr "Kommandolinje" #: modules/computer.c:632 msgid "C Library" msgstr "C Bibliotek" #: modules/computer.c:633 msgid "Distribution" msgstr "Uddeling" #: modules/computer.c:638 msgid "Current Session" msgstr "Nuværende session" #: modules/computer.c:639 msgid "Computer Name" msgstr "Computernavn" #: modules/computer.c:641 modules/computer/languages.c:99 msgid "Language" msgstr "Sprog" #: modules/computer.c:642 modules/computer/users.c:53 msgid "Home Directory" msgstr "Boligkartotek" #: modules/computer.c:643 msgid "Desktop Environment" msgstr "Skrivebordsmiljø" #: modules/computer.c:646 msgid "Misc" msgstr "Diverset" #: modules/computer.c:660 msgid "HardInfo2" msgstr "" #: modules/computer.c:661 msgid "HardInfo2 running as" msgstr "HardInfo2 kører som" #: modules/computer.c:662 msgid "Superuser" msgstr "Superbruger" #: modules/computer.c:662 msgid "User" msgstr "Bruger" #: modules/computer.c:666 msgid "Health" msgstr "Sundhed" #: modules/computer.c:668 msgid "Available entropy in /dev/random" msgstr "Tilgængelig entropi i /dev/random" #: modules/computer.c:672 msgid "Hardening Features" msgstr "Hærdende funktioner" #: modules/computer.c:673 msgid "ASLR" msgstr "" #: modules/computer.c:674 msgid "dmesg" msgstr "" #: modules/computer.c:678 msgid "Linux Security Modules" msgstr "Linux sikkerhedsmoduler" #: modules/computer.c:679 msgid "Modules available" msgstr "Moduler til rådighed" #: modules/computer.c:680 msgid "SELinux status" msgstr "" #: modules/computer.c:686 msgid "CPU Vulnerabilities" msgstr "CPU-sårbarheder" #: modules/computer.c:727 msgid "Loaded Modules" msgstr "Indlæste moduler" #: modules/computer.c:729 modules/computer.c:757 modules/computer.c:897 #: modules/computer/languages.c:95 modules/computer/modules.c:369 #: modules/devices/arm/processor.c:704 modules/devices/dmi.c:38 #: modules/devices/dmi.c:49 modules/devices/e2k/processor.c:358 #: modules/devices/gpu.c:301 modules/devices/ia64/processor.c:160 #: modules/devices/inputdevices.c:141 modules/devices/monitors.c:403 #: modules/devices/monitors.c:505 modules/devices/riscv/processor.c:549 #: modules/devices/sh/processor.c:84 modules/devices/x86/processor.c:750 #: modules/network.c:333 msgid "Name" msgstr "Navn" #: modules/computer.c:743 msgid "Date & Time" msgstr "Dato" #: modules/computer.c:744 msgid "Kernel Version" msgstr "" #: modules/computer.c:754 msgid "Available Languages" msgstr "" #: modules/computer.c:756 msgid "Language Code" msgstr "" #: modules/computer.c:768 msgid "Mounted File Systems" msgstr "" #: modules/computer.c:770 modules/computer/filesystem.c:89 msgid "Mount Point" msgstr "" #: modules/computer.c:771 msgid "Usage" msgstr "" #: modules/computer.c:772 modules/devices/arm/processor.c:756 #: modules/devices.c:865 modules/devices.c:879 #: modules/devices/e2k/processor.c:416 modules/devices/gpu.c:85 #: modules/devices/gpu.c:93 modules/devices/gpu.c:293 modules/devices/pci.c:123 #: modules/devices/pci.c:131 modules/devices/pci.c:175 #: modules/devices/riscv/processor.c:640 modules/devices/storage.c:48 #: modules/devices/storage.c:57 modules/devices/usb.c:172 #: modules/devices/usb.c:184 modules/devices/x86/processor.c:810 msgid "Device" msgstr "" #: modules/computer.c:795 msgid "Session" msgstr "" #: modules/computer.c:796 modules/devices.c:842 modules/devices.c:879 #: modules/devices/dmi.c:56 modules/devices/dmi_memory.c:729 #: modules/devices/inputdevices.c:142 modules/devices/spd-decode.c:1377 #: modules/devices/x86/processor.c:715 msgid "Type" msgstr "" #: modules/computer.c:799 msgid "Wayland" msgstr "" #: modules/computer.c:800 modules/computer.c:805 msgid "Current Display Name" msgstr "" #: modules/computer.c:804 msgid "X Server" msgstr "" #: modules/computer.c:806 modules/computer.c:846 modules/computer.c:869 #: modules/devices.c:879 modules/devices/dmi.c:40 modules/devices/dmi.c:46 #: modules/devices/dmi.c:50 modules/devices/dmi.c:55 #: modules/devices/dmi_memory.c:730 modules/devices/dmi_memory.c:873 #: modules/devices/e2k/processor.c:359 modules/devices/firmware.c:75 #: modules/devices/firmware.c:167 modules/devices/firmware.c:172 #: modules/devices/firmware.c:219 modules/devices/gpu.c:84 #: modules/devices/gpu.c:92 modules/devices/gpu.c:292 #: modules/devices/ia64/processor.c:161 modules/devices/inputdevices.c:144 #: modules/devices/monitors.c:402 modules/devices/pci.c:122 #: modules/devices/pci.c:130 modules/devices/storage.c:47 #: modules/devices/storage.c:56 modules/devices/storage.c:282 #: modules/devices/storage.c:572 modules/devices/storage.c:777 #: modules/devices/usb.c:171 modules/devices/x86/processor.c:654 msgid "Vendor" msgstr "" #: modules/computer.c:808 msgid "Release Number" msgstr "" #: modules/computer.c:816 msgid "Screens" msgstr "Skærme" #: modules/computer.c:822 msgid "Disconnected" msgstr "Afbrudt" #: modules/computer.c:825 msgid "Connected" msgstr "Forbundet" #: modules/computer.c:833 msgid "Unused" msgstr "Ubrugt" #: modules/computer.c:834 #, c-format msgid "%dx%d pixels, offset (%d, %d)" msgstr "" #: modules/computer.c:843 msgid "Outputs (XRandR)" msgstr "Output (XRandR)" #: modules/computer.c:845 msgid "OpenGL (GLX)" msgstr "" #: modules/computer.c:847 msgid "Renderer" msgstr "Gengiver" #: modules/computer.c:848 msgid "Direct Rendering" msgstr "Direkte gengivelse" #: modules/computer.c:849 modules/computer/modules.c:351 #: modules/computer/modules.c:352 modules/devices/inputdevices.c:153 #: modules/devices/printers.c:145 modules/devices/spd-decode.c:888 #: modules/devices/spd-decode.c:1100 msgid "Yes" msgstr "Ja" #: modules/computer.c:849 modules/computer/modules.c:351 #: modules/computer/modules.c:352 modules/devices/printers.c:145 #: modules/devices/spd-decode.c:886 modules/devices/spd-decode.c:1097 msgid "No" msgstr "Nej" #: modules/computer.c:850 msgid "Version (Compatibility)" msgstr "Version (kompatibilitet)" #: modules/computer.c:851 msgid "Shading Language Version (Compatibility)" msgstr "Shading Language Version (kompatibilitet)" #: modules/computer.c:852 msgid "Version (Core)" msgstr "Version (kerne)" #: modules/computer.c:853 msgid "Shading Language Version (Core)" msgstr "" #: modules/computer.c:854 msgid "Version (ES)" msgstr "" #: modules/computer.c:855 msgid "Shading Language Version (ES)" msgstr "" #: modules/computer.c:856 msgid "GLX Version" msgstr "GLX-version" #: modules/computer.c:864 msgid "Vulkan" msgstr "" #: modules/computer.c:865 msgid "Instance Version" msgstr "" #: modules/computer.c:867 msgid "Api Version" msgstr "" #: modules/computer.c:868 msgid "Driver Version" msgstr "" #: modules/computer.c:870 msgid "Device Type" msgstr "" #: modules/computer.c:871 msgid "Device Name" msgstr "" #: modules/computer.c:872 msgid "Driver Name" msgstr "" #: modules/computer.c:873 msgid "Driver Info" msgstr "" #: modules/computer.c:874 msgid "Conformance Version" msgstr "" #: modules/computer.c:895 msgid "Group" msgstr "Gruppe" #: modules/computer.c:898 modules/computer/users.c:52 msgid "Group ID" msgstr "Gruppe ID" #: modules/computer.c:1037 #, c-format msgid "%0.1f %s available to Linux" msgstr "%0.1f %s tilgængelig for Linux" #: modules/computer.c:1039 modules/devices/dmi_memory.c:637 #: modules/devices/dmi_memory.c:647 modules/devices/dmi_memory.c:789 #: modules/devices/dmi_memory.c:918 modules/devices/spd-decode.c:1352 msgid "GiB" msgstr "" #: modules/computer.c:1043 modules/computer/memory_usage.c:73 #: modules/computer/modules.c:369 msgid "KiB" msgstr "" #: modules/computer.c:1116 modules/devices/devicetree/pmac_data.c:82 msgid "Motherboard" msgstr "Bundkort" #: modules/computer.c:1144 msgid "Graphics" msgstr "Grafik" #: modules/computer.c:1145 modules/devices.c:105 msgid "Printers" msgstr "Printere" #: modules/computer.c:1145 msgid "Audio" msgstr "Lyd" #: modules/computer.c:1194 msgid "Gathers high-level computer information" msgstr "Indsamler computerinformation på højt niveau" #: modules/computer.c:1205 msgid "lsmod is required." msgstr "lsmod er påkrævet." #: modules/computer.c:1213 msgid "" "X.org's xrandr utility provides additional details when " "available." msgstr "" "X.org's xrandr-værktøj giver yderligere detaljer, når det er " "tilgængeligt." #: modules/computer.c:1214 msgid "Mesa's glxinfo utility is required for OpenGL information." msgstr "" "Mesa's glxinfo-værktøj er påkrævet for OpenGL-oplysninger." #: modules/computer.c:1215 msgid "" "Vulkan's vulkaninfo utility is required for Vulkan information." msgstr "" #: modules/computer/filesystem.c:87 msgid "Filesystem" msgstr "Filsystem" #: modules/computer/filesystem.c:88 msgid "Mounted As" msgstr "Monteret som" #: modules/computer/filesystem.c:88 msgid "Read-Write" msgstr "Læs-Skriv" #: modules/computer/filesystem.c:88 msgid "Read-Only" msgstr "Skrivebeskyttet" #: modules/computer/filesystem.c:90 modules/devices.c:865 #: modules/devices/dmi_memory.c:733 modules/devices/dmi_memory.c:766 #: modules/devices/dmi_memory.c:805 modules/devices/dmi_memory.c:872 #: modules/devices/spd-decode.c:1384 msgid "Size" msgstr "Str" #: modules/computer/filesystem.c:91 msgid "Used" msgstr "Brugt" #: modules/computer/filesystem.c:92 msgid "Available" msgstr "Tilgængelig" #: modules/computer/languages.c:94 msgid "Locale Information" msgstr "Lokal information" #: modules/computer/languages.c:96 modules/devices/gpu.c:266 #: modules/devices/spd-decode.c:1373 msgid "Source" msgstr "Kilde" #: modules/computer/languages.c:97 msgid "Address" msgstr "Adresse" #: modules/computer/languages.c:98 msgid "E-mail" msgstr "" #: modules/computer/languages.c:100 msgid "Territory" msgstr "Territorium" #: modules/computer/languages.c:102 modules/devices/dmi.c:45 msgid "Date" msgstr "Dato" #: modules/computer/languages.c:103 msgid "Codeset" msgstr "Kodesæt" #: modules/computer/loadavg.c:64 msgid "Couldn't obtain load average" msgstr "Kunne ikke opnå belastningsgennemsnit" #: modules/computer/memory_usage.c:131 msgid "Total physical memory usable by the system" msgstr "Samlet fysisk hukommelse, der kan bruges af systemet" #: modules/computer/memory_usage.c:132 msgid "Free memory which is not used for anything" msgstr "Fri hukommelse som ikke bruges til noget" #: modules/computer/memory_usage.c:133 msgid "Virtual memory, total swap space available" msgstr "Virtuel hukommelse, samlet swapplads tilgængelig" #: modules/computer/memory_usage.c:134 msgid "Virtual memory, remaining swap space available" msgstr "Virtuel hukommelse, resterende swap-plads tilgængelig" #: modules/computer/memory_usage.c:135 msgid "Memory present within main memory and in the swapfile" msgstr "Hukommelse til stede i hovedhukommelsen og i swapfilen" #: modules/computer/memory_usage.c:136 msgid "HighTotal value can vary based on the type of kernel used" msgstr "HighTotal værdi kan variere baseret på den anvendte type kerne" #: modules/computer/memory_usage.c:137 msgid "Amount of memory that is not directly mapped into kernel space" msgstr "Mængde hukommelse, der ikke er direkte mappet til kerneplads" #: modules/computer/memory_usage.c:138 msgid "LowTotal value can vary based on the type of kernel used" msgstr "LowTotal værdi kan variere baseret på den anvendte type kerne" #: modules/computer/memory_usage.c:139 msgid "Total and free memory directly mapped into kernel space" msgstr "Samlet og ledig hukommelse direkte kortlagt i kernerummet" #: modules/computer/memory_usage.c:140 msgid "Available memory for allocation to any process, without swapping" msgstr "Tilgængelig hukommelse til allokering til enhver proces uden ombytning" #: modules/computer/memory_usage.c:141 msgid "Memory in buffer cache, temporary storage for raw disk blocks" msgstr "Hukommelse i buffercache, midlertidig lagring til rå diskblokke" #: modules/computer/memory_usage.c:142 msgid "Memory in the page cache (diskcache, shared memory, tmpfs and shmem)" msgstr "Hukommelse i sidecachen (diskcache, delt hukommelse, tmpfs og shmem)" #: modules/computer/memory_usage.c:143 msgid "Memory used more recently and not swapped out or reclaimed" msgstr "Hukommelse brugt for nylig og ikke skiftet ud eller genvundet" #: modules/computer/memory_usage.c:144 msgid "Memory not been used recently and can be swapped out or reclaimed" msgstr "Hukommelsen er ikke brugt for nylig og kan skiftes ud eller genvindes" #: modules/computer/memory_usage.c:145 msgid "Anonymous memory used more recently and not swapped out" msgstr "Anonym hukommelse brugt for nylig og ikke skiftet ud" #: modules/computer/memory_usage.c:146 msgid "Anonymous memory not been used and can be swapped out" msgstr "Anonym hukommelse er ikke brugt og kan skiftes ud" #: modules/computer/memory_usage.c:147 msgid "Pagecache memory been used more recently and not reclaimed" msgstr "Pagecache-hukommelse er blevet brugt for nylig og ikke genvundet" #: modules/computer/memory_usage.c:148 msgid "Pagecache memory reclaimable without huge performance impact" msgstr "" "Pagecache-hukommelse, der kan genvindes uden stor indvirkning på ydeevnen" #: modules/computer/memory_usage.c:149 msgid "Unevictable pages can't be swapped out for a variety of reasons" msgstr "Uundgåelige sider kan ikke udskiftes af forskellige årsager" #: modules/computer/memory_usage.c:150 msgid "Pages locked to memory using the mlock() system call" msgstr "Sider låst til hukommelsen ved hjælp af mlock()-systemkaldet" #: modules/computer/memory_usage.c:151 msgid "Memory consumed by the zswap backend (compressed size)" msgstr "Hukommelse forbrugt af zswap-backend (komprimeret størrelse)" #: modules/computer/memory_usage.c:152 msgid "Amount of anonymous memory stored in zswap (original size)" msgstr "Mængden af ​​anonym hukommelse gemt i zswap (oprindelig størrelse)" #: modules/computer/memory_usage.c:153 msgid "Memory waiting to be written back to disk" msgstr "Hukommelse venter på at blive skrevet tilbage til disken" #: modules/computer/memory_usage.c:154 msgid "Memory which is actively being written back to disk" msgstr "Hukommelse som aktivt skrives tilbage til disken" #: modules/computer/memory_usage.c:155 msgid "Non-file backed pages mapped into userspace page tables" msgstr "Ikke-fil-understøttede sider kortlagt i brugerområde-sidetabeller" #: modules/computer/memory_usage.c:156 msgid "Files which have been mmapped, such as libraries" msgstr "Filer, der er blevet mmappet, såsom biblioteker" #: modules/computer/memory_usage.c:157 msgid "Total memory used by shared memory (shmem) and tmpfs" msgstr "Total hukommelse brugt af delt hukommelse (shmem) og tmpfs" #: modules/computer/memory_usage.c:158 msgid "Kernel allocations reclaimable under memory pressure" msgstr "Kerneallokeringer kan genvindes under hukommelsestryk" #: modules/computer/memory_usage.c:159 msgid "In-kernel data structures cache" msgstr "In-kernel datastruktur cache" #: modules/computer/memory_usage.c:160 msgid "Part of Slab, that might be reclaimed, such as caches" msgstr "Del af Slab, der kan genvindes, såsom caches" #: modules/computer/memory_usage.c:161 msgid "Part of Slab, that cannot be reclaimed on memory pressure" msgstr "En del af Slab, der ikke kan genvindes på hukommelsestryk" #: modules/computer/memory_usage.c:162 msgid "Memory consumed by the kernel stacks of all tasks" msgstr "Hukommelse forbrugt af kernestakkene for alle opgaver" #: modules/computer/memory_usage.c:163 msgid "Memory consumed by userspace page tables" msgstr "Hukommelse forbrugt af brugerrumssidetabeller" #: modules/computer/memory_usage.c:164 msgid "Memory consumed by secondary page tables" msgstr "Hukommelse forbrugt af sekundære sidetabeller" #: modules/computer/memory_usage.c:165 msgid "Previous counted pages which had been written to the server" msgstr "Tidligere talte sider, som var blevet skrevet til serveren" #: modules/computer/memory_usage.c:166 msgid "Memory used for block device bounce buffers" msgstr "Hukommelse brugt til blokering af enhedsbounce buffere" #: modules/computer/memory_usage.c:167 msgid "Memory used by FUSE for temporary writeback buffers" msgstr "Hukommelse brugt af FUSE til midlertidige tilbageskrivningsbuffere" #: modules/computer/memory_usage.c:168 msgid "Total memory currently available to be allocated on the system" msgstr "" "Total hukommelse, der i øjeblikket er tilgængelig til at blive allokeret på " "systemet" #: modules/computer/memory_usage.c:169 msgid "The amount of memory presently allocated on the system" msgstr "Mængden af ​​hukommelse, der i øjeblikket er allokeret til systemet" #: modules/computer/memory_usage.c:170 msgid "Total size of vmalloc virtual address space" msgstr "Samlet størrelse af vmalloc virtuelt adresserum" #: modules/computer/memory_usage.c:171 msgid "Amount of vmalloc area which is used" msgstr "Mængde af vmalloc-areal, der bruges" #: modules/computer/memory_usage.c:172 msgid "Largest contiguous block of vmalloc area which is free" msgstr "Største sammenhængende blok af vmalloc-området, som er frit" #: modules/computer/memory_usage.c:173 msgid "Memory allocated to the percpu allocator" msgstr "Hukommelse allokeret til percpu-allokatoren" #: modules/computer/memory_usage.c:174 msgid "Amount of memory the kernel identifies as corrupted" msgstr "Mængde hukommelse, som kernen identificerer som beskadiget" #: modules/computer/memory_usage.c:175 msgid "Non-file backed huge pages mapped into userspace page tables" msgstr "Ikke-fil-understøttede enorme sider kortlagt i brugerrum-sidetabeller" #: modules/computer/memory_usage.c:176 msgid "Memory used by shmem and tmpfs allocated with huge pages" msgstr "Hukommelse brugt af shmem og tmpf'er tildelt med enorme sider" #: modules/computer/memory_usage.c:177 msgid "Shared memory mapped into userspace with huge pages" msgstr "Delt hukommelse kortlagt til brugerområdet med enorme sider" #: modules/computer/memory_usage.c:178 msgid "Memory used for fs data (page cache) allocated with huge pages" msgstr "Hukommelse brugt til fs-data (sidecache) tildelt med enorme sider" #: modules/computer/memory_usage.c:179 msgid "Page cache mapped into userspace with huge pages" msgstr "Sidecache kortlagt til brugerrum med enorme sider" #: modules/computer/memory_usage.c:180 msgid "Memory reserved for the Contiguous Memory Allocator (CMA)" msgstr "Hukommelse reserveret til Contiguous Memory Allocator (CMA)" #: modules/computer/memory_usage.c:181 msgid "Free remaining memory in the CMA reserves" msgstr "Fri resterende hukommelse i CMA-reserverne" #: modules/computer/memory_usage.c:182 msgid "Amount of unaccepted memory usable by the kernel" msgstr "Mængde af uaccepteret hukommelse, der kan bruges af kernen" #: modules/computer/memory_usage.c:183 msgid "Size of the pool of huge pages" msgstr "Størrelse af puljen af ​​enorme sider" #: modules/computer/memory_usage.c:184 msgid "Number of huge pages available" msgstr "Antal store sider tilgængelige" #: modules/computer/memory_usage.c:185 msgid "Number of huge pages reserved" msgstr "Antal reserverede enorme sider" #: modules/computer/memory_usage.c:186 msgid "Number of huge pages surplus" msgstr "Antal store siders overskud" #: modules/computer/memory_usage.c:187 msgid "Huge page size, used in conjunction with hugepages parameter" msgstr "Enorm sidestørrelse, brugt i forbindelse med hugepages-parameteren" #: modules/computer/memory_usage.c:188 msgid "Total amount of memory consumed by huge pages of all sizes" msgstr "Samlet mængde hukommelse forbrugt af enorme sider i alle størrelser" #: modules/computer/memory_usage.c:189 msgid "Breakdown of page table sizes of 4k size" msgstr "Opdeling af sidetabelstørrelser på 4k størrelse" #: modules/computer/memory_usage.c:190 msgid "Breakdown of page table sizes of 2M size" msgstr "Opdeling af sidetabelstørrelser på 2M størrelse" #: modules/computer/memory_usage.c:191 msgid "Breakdown of page table sizes of 1G size" msgstr "Opdeling af sidetabelstørrelser i 1G-størrelse" #: modules/computer/modules.c:168 msgid "Update kernel module icon table" msgstr "Opdater kernemodul-ikontabel" #: modules/computer/modules.c:337 modules/computer/modules.c:338 #: modules/computer/modules.c:339 modules/computer/modules.c:340 #: modules/computer/modules.c:341 modules/computer/modules.c:342 #: modules/devices/dmi.c:117 modules/devices/firmware.c:245 #: modules/devices/x86/processor.c:694 msgid "(Not available)" msgstr "(Ikke tilgængelig)" #: modules/computer/modules.c:368 msgid "Module Information" msgstr "Modulinformation" #: modules/computer/modules.c:368 modules/devices/gpu.c:298 msgid "Path" msgstr "Sti" #: modules/computer/modules.c:368 msgid "Used Memory" msgstr "Brugt hukommelse" #: modules/computer/modules.c:370 msgid "Version Magic" msgstr "" #: modules/computer/modules.c:371 msgid "In Linus' Tree" msgstr "I Linus' træ" #: modules/computer/modules.c:372 msgid "Retpoline Enabled" msgstr "Retpoline aktiveret" #: modules/computer/modules.c:372 msgid "Copyright" msgstr "Ophavsret" #: modules/computer/modules.c:372 msgid "Author" msgstr "Forfatter" #: modules/computer/modules.c:373 msgid "License" msgstr "Licens" #: modules/computer/modules.c:379 msgid "Dependencies" msgstr "Afhængigheder" #: modules/computer/os.c:153 modules/computer/os.c:154 modules/computer/os.c:155 #: modules/computer/os.c:156 msgid "GNU C Library" msgstr "GNU C bibliotek" #: modules/computer/os.c:157 msgid "uClibc or uClibc-ng" msgstr "uClibc eller uClibc-ng" #: modules/computer/os.c:158 msgid "diet libc" msgstr "diæt libc" #: modules/computer/os.c:229 modules/computer/os.c:232 msgid "GNOME Shell " msgstr "" #: modules/computer/os.c:240 modules/computer/os.c:243 msgid "Version: " msgstr "" #: modules/computer/os.c:261 modules/computer/os.c:264 msgid "MATE Desktop Environment " msgstr "" #: modules/computer/os.c:297 #, c-format msgid "Unknown (Window Manager: %s)" msgstr "Ukendt (Window Manager: %s)" #. !/{desktop environment} on {session type} #: modules/computer/os.c:308 #, c-format msgid "%s on %s" msgstr "%s på %s" #: modules/computer/os.c:376 msgid "Terminal" msgstr "" #: modules/computer/os.c:392 msgid "User access allowed" msgstr "Brugeradgang tilladt" #: modules/computer/os.c:394 msgid "User access forbidden" msgstr "Brugeradgang forbudt" #: modules/computer/os.c:396 msgid "Access allowed (running as superuser)" msgstr "Adgang tilladt (kører som superbruger)" #: modules/computer/os.c:398 msgid "Access forbidden? (running as superuser)" msgstr "Adgang forbudt? " #: modules/computer/os.c:407 modules/computer/os.c:797 msgid "Disabled" msgstr "Invalideret" #: modules/computer/os.c:409 msgid "Partially enabled (mmap base+stack+VDSO base)" msgstr "Delvist aktiveret (mmap base stack VDSO base)" #: modules/computer/os.c:411 msgid "Fully enabled (mmap base+stack+VDSO base+heap)" msgstr "Fuldt aktiveret (mmap base stack VDSO base heap)" #. !/bits of entropy for rng (0) #: modules/computer/os.c:420 msgid "(None or not available)" msgstr "(Ingen eller ikke tilgængelig)" #. !/bits of entropy for rng (low/poor value) #: modules/computer/os.c:421 #, c-format msgid "%d bits (low)" msgstr "%d bit (lav)" #. !/bits of entropy for rng (medium value) #: modules/computer/os.c:422 #, c-format msgid "%d bits (medium)" msgstr "%d bit (medium)" #. !/bits of entropy for rng (high/good value) #: modules/computer/os.c:423 #, c-format msgid "%d bits (healthy)" msgstr "%d bits (sundt)" #: modules/computer/os.c:792 msgid "Not installed" msgstr "Ikke installeret" #: modules/computer/os.c:795 msgid "Enabled" msgstr "Aktiveret" #: modules/computer/users.c:50 msgid "User Information" msgstr "Brugerinformation" #: modules/computer/users.c:51 msgid "User ID" msgstr "Bruger-id" #: modules/computer/users.c:54 msgid "Default Shell" msgstr "" #: modules/devices/alpha/processor.c:88 modules/devices/arm/processor.c:756 #: modules/devices.c:865 modules/devices/devicetree.c:162 #: modules/devices/devicetree.c:208 modules/devices/devicetree/pmac_data.c:80 #: modules/devices/e2k/processor.c:361 modules/devices/e2k/processor.c:416 #: modules/devices/gpu.c:116 modules/devices/ia64/processor.c:165 #: modules/devices/loongarch64/processor.c:96 #: modules/devices/m68k/processor.c:84 modules/devices/mips/processor.c:75 #: modules/devices/monitors.c:404 modules/devices/parisc/processor.c:155 #: modules/devices/ppc/processor.c:158 modules/devices/riscv/processor.c:584 #: modules/devices/riscv/processor.c:640 modules/devices/s390/processor.c:132 #: modules/devices/x86/processor.c:810 msgid "Model" msgstr "" #: modules/devices/alpha/processor.c:89 msgid "Platform String" msgstr "Platformstreng" #: modules/devices/alpha/processor.c:90 modules/devices/arm/processor.c:567 #: modules/devices/arm/processor.c:756 modules/devices/e2k/processor.c:363 #: modules/devices/e2k/processor.c:416 modules/devices/ia64/processor.c:167 #: modules/devices/loongarch64/processor.c:98 #: modules/devices/m68k/processor.c:87 modules/devices/mips/processor.c:77 #: modules/devices/parisc/processor.c:158 modules/devices/ppc/processor.c:160 #: modules/devices/riscv/processor.c:588 modules/devices/riscv/processor.c:640 #: modules/devices/sh/processor.c:87 modules/devices/x86/processor.c:658 #: modules/devices/x86/processor.c:810 msgid "Frequency" msgstr "Frekvens" #: modules/devices/alpha/processor.c:91 modules/devices/arm/processor.c:568 #: modules/devices/e2k/processor.c:364 modules/devices/ia64/processor.c:168 #: modules/devices/m68k/processor.c:88 modules/devices/mips/processor.c:78 #: modules/devices/parisc/processor.c:159 modules/devices/ppc/processor.c:161 #: modules/devices/s390/processor.c:134 modules/devices/sh/processor.c:90 #: modules/devices/x86/processor.c:659 msgid "BogoMips" msgstr "" #: modules/devices/alpha/processor.c:92 modules/devices/arm/processor.c:569 #: modules/devices/e2k/processor.c:365 modules/devices/ia64/processor.c:169 #: modules/devices/loongarch64/processor.c:101 #: modules/devices/m68k/processor.c:89 modules/devices/mips/processor.c:79 #: modules/devices/parisc/processor.c:160 modules/devices/ppc/processor.c:162 #: modules/devices/riscv/processor.c:589 modules/devices/s390/processor.c:135 #: modules/devices/sh/processor.c:91 modules/devices/sparc/processor.c:77 #: modules/devices/x86/processor.c:660 msgid "Byte Order" msgstr "Byteordre" #. !/flag:swp #: modules/devices/arm/arm_data.c:42 msgctxt "arm-flag" msgid "SWP instruction (atomic read-modify-write)" msgstr "SWP instruktion (atomic read-modify-write)" #. !/flag:half #: modules/devices/arm/arm_data.c:43 msgctxt "arm-flag" msgid "Half-word loads and stores" msgstr "Halvords læs og lagre" #. !/flag:thumb #: modules/devices/arm/arm_data.c:44 msgctxt "arm-flag" msgid "Thumb (16-bit instruction set)" msgstr "Thumb (16-bit instruktionssæt)" #. !/flag:26bit #: modules/devices/arm/arm_data.c:45 msgctxt "arm-flag" msgid "26-Bit Model (Processor status register folded into program counter)" msgstr "26-Bit Model (Processorstatusregister foldet ind i programtæller)" #. !/flag:fastmult #: modules/devices/arm/arm_data.c:46 msgctxt "arm-flag" msgid "32x32->64-bit multiplication" msgstr "32x32->64-bit multiplikation" #. !/flag:fpa #: modules/devices/arm/arm_data.c:47 msgctxt "arm-flag" msgid "Floating point accelerator" msgstr "Flydepunktsaccelerator" #. !/flag:vfp #: modules/devices/arm/arm_data.c:48 msgctxt "arm-flag" msgid "VFP (early SIMD vector floating point instructions)" msgstr "VFP (tidlige SIMD vektor flydende komma instruktioner)" #. !/flag:edsp #: modules/devices/arm/arm_data.c:49 msgctxt "arm-flag" msgid "DSP extensions (the 'e' variant of the ARM9 CPUs, and all others above)" msgstr "DSP-udvidelser ('e'-varianten af ​​ARM9 CPU'erne og alle andre ovenfor)" #. !/flag:java #: modules/devices/arm/arm_data.c:50 msgctxt "arm-flag" msgid "Jazelle (Java bytecode accelerator)" msgstr "" #. !/flag:iwmmxt #: modules/devices/arm/arm_data.c:51 msgctxt "arm-flag" msgid "SIMD instructions similar to Intel MMX" msgstr "SIMD-instruktioner, der ligner Intel MMX" #. !/flag:crunch #: modules/devices/arm/arm_data.c:52 msgctxt "arm-flag" msgid "MaverickCrunch coprocessor (if kernel support enabled)" msgstr "MaverickCrunch coprocessor (hvis kerneunderstøttelse er aktiveret)" #. !/flag:thumbee #: modules/devices/arm/arm_data.c:53 msgctxt "arm-flag" msgid "ThumbEE" msgstr "" #. !/flag:neon #: modules/devices/arm/arm_data.c:54 msgctxt "arm-flag" msgid "Advanced SIMD/NEON on AArch32" msgstr "Avanceret SIMD/NEON på AArch32" #. !/flag:evtstrm #: modules/devices/arm/arm_data.c:55 msgctxt "arm-flag" msgid "Kernel event stream using generic architected timer" msgstr "Kernehændelsesstream ved hjælp af generisk arkitektoneret timer" #. !/flag:vfpv3 #: modules/devices/arm/arm_data.c:56 msgctxt "arm-flag" msgid "VFP version 3" msgstr "" #. !/flag:vfpv3d16 #: modules/devices/arm/arm_data.c:57 msgctxt "arm-flag" msgid "VFP version 3 with 16 D-registers" msgstr "VFP version 3 med 16 D-registre" #. !/flag:vfpv4 #: modules/devices/arm/arm_data.c:58 msgctxt "arm-flag" msgid "VFP version 4 with fast context switching" msgstr "VFP version 4 med hurtig kontekstskift" #. !/flag:vfpd32 #: modules/devices/arm/arm_data.c:59 msgctxt "arm-flag" msgid "VFP with 32 D-registers" msgstr "VFP med 32 D-registre" #. !/flag:tls #: modules/devices/arm/arm_data.c:60 msgctxt "arm-flag" msgid "TLS register" msgstr "" #. !/flag:idiva #: modules/devices/arm/arm_data.c:61 msgctxt "arm-flag" msgid "SDIV and UDIV hardware division in ARM mode" msgstr "SDIV og UDIV hardwareopdeling i ARM-tilstand" #. !/flag:idivt #: modules/devices/arm/arm_data.c:62 msgctxt "arm-flag" msgid "SDIV and UDIV hardware division in Thumb mode" msgstr "SDIV og UDIV hardware division i Thumb mode" #. !/flag:lpae #: modules/devices/arm/arm_data.c:63 msgctxt "arm-flag" msgid "40-bit Large Physical Address Extension" msgstr "40-bit stor fysisk adresseudvidelse" #. !/flag:pmull #: modules/devices/arm/arm_data.c:65 msgctxt "arm-flag" msgid "64x64->128-bit F2m multiplication (arch>=8)" msgstr "64x64->128-bit F2m multiplikation (arch>=8)" #. !/flag:aes #: modules/devices/arm/arm_data.c:66 msgctxt "arm-flag" msgid "Crypto:AES (arch>=8)" msgstr "" #. !/flag:sha1 #: modules/devices/arm/arm_data.c:67 msgctxt "arm-flag" msgid "Crypto:SHA1 (arch>=8)" msgstr "" #. !/flag:sha2 #: modules/devices/arm/arm_data.c:68 msgctxt "arm-flag" msgid "Crypto:SHA2 (arch>=8)" msgstr "" #. !/flag:crc32 #: modules/devices/arm/arm_data.c:69 msgctxt "arm-flag" msgid "CRC32 checksum instructions (arch>=8)" msgstr "CRC32 kontrolsum instruktioner (arch>=8)" #. !/flag:fp #: modules/devices/arm/arm_data.c:71 msgctxt "arm-flag" msgid "Floating-point on AArch64 (arch>=8)" msgstr "" #. !/flag:asimd #: modules/devices/arm/arm_data.c:72 msgctxt "arm-flag" msgid "Advanced SIMD/NEON on AArch64 (arch>=8)" msgstr "Avanceret SIMD/NEON på AArch64 (arch>=8)" #. !/flag:atomics #: modules/devices/arm/arm_data.c:73 msgctxt "arm-flag" msgid "Atomic instructions on AArch64 (arch>=8)" msgstr "" #. !/flag:fphp #: modules/devices/arm/arm_data.c:74 msgctxt "arm-flag" msgid "Half precision floating point on AArch64 (arch>=8)" msgstr "" #. !/flag:asimdhp #: modules/devices/arm/arm_data.c:75 msgctxt "arm-flag" msgid "Advanced SIMD with BFloat16 on AArch64 (arch>=8)" msgstr "" #. !/flag:cpuid #: modules/devices/arm/arm_data.c:76 msgctxt "arm-flag" msgid "CPU features can be read on AArch64 (arch>=8)" msgstr "" #. !/flag:asimdrdm #: modules/devices/arm/arm_data.c:77 msgctxt "arm-flag" msgid "Advanced SIMD rounding Double MulAcc on AArch64 (arch>=8)" msgstr "" #. !/flag:jscvt #: modules/devices/arm/arm_data.c:78 msgctxt "arm-flag" msgid "JacaScript conversion on AArch64 (arch>=8)" msgstr "" #. !/flag:fcma #: modules/devices/arm/arm_data.c:79 msgctxt "arm-flag" msgid "Complex number SIMD on AArch64 (arch>=8)" msgstr "" #. !/flag:lrcpc #: modules/devices/arm/arm_data.c:80 msgctxt "arm-flag" msgid "Weak release consistency on AArch64 (arch>=8)" msgstr "" #. !/flag:dcpop #: modules/devices/arm/arm_data.c:81 msgctxt "arm-flag" msgid "Data cache clean to Point of Persistence on AArch64 (arch>=8)" msgstr "" #. !/flag:sha3 #: modules/devices/arm/arm_data.c:82 msgctxt "arm-flag" msgid "SHA-3 instructions on AArch64 (arch>=8)" msgstr "" #. !/flag:sm3 #: modules/devices/arm/arm_data.c:83 msgctxt "arm-flag" msgid "SM3 instructions on AArch64 (arch>=8)" msgstr "" #. !/flag:sm4 #: modules/devices/arm/arm_data.c:84 msgctxt "arm-flag" msgid "SM4 instructions on AArch64 (arch>=8)" msgstr "" #. !/flag:asimddp #: modules/devices/arm/arm_data.c:85 msgctxt "arm-flag" msgid "SIMD Dot Product on AArch64 (arch>=8)" msgstr "" #. !/flag:sha512 #: modules/devices/arm/arm_data.c:86 msgctxt "arm-flag" msgid "SHA512 instructions on AArch64 (arch>=8)" msgstr "" #. !/flag:sve #: modules/devices/arm/arm_data.c:87 msgctxt "arm-flag" msgid "Scalable Vector Extension on AArch64 (arch>=8)" msgstr "" #: modules/devices/arm/processor.c:46 modules/devices/e2k/processor.c:30 #: modules/devices/riscv/processor.c:36 modules/devices/x86/processor.c:149 msgid "Cache information not available=\n" msgstr "Cache information ikke tilgængelig=\n" #: modules/devices/arm/processor.c:52 modules/devices/e2k/processor.c:36 #: modules/devices/riscv/processor.c:42 modules/devices/x86/processor.c:155 #, c-format msgid "Level %d (%s)=%d-way set-associative, %d sets, %dKB size\n" msgstr "Niveau %d (%s)=%d-vejs sæt-associativ, %d sæt, %dKB størrelse\n" #: modules/devices/arm/processor.c:174 modules/devices/e2k/processor.c:157 #: modules/devices/riscv/processor.c:164 modules/devices/x86/processor.c:366 msgid "Caches" msgstr "Cache" #: modules/devices/arm/processor.c:225 modules/devices/arm/processor.c:242 #: modules/devices/e2k/processor.c:208 modules/devices/e2k/processor.c:225 #: modules/devices/riscv/processor.c:215 modules/devices/riscv/processor.c:232 #: modules/devices/x86/processor.c:417 modules/devices/x86/processor.c:434 #, c-format msgid "Level %d (%s)#%d=%dx %dKB (%dKB), %d-way set-associative, %d sets\n" msgstr "Niveau %d (%s)#%d=%dx %dKB (%dKB), %d-way set-associative, %d sets\n" #: modules/devices/arm/processor.c:365 msgid "ARM Processor" msgstr "ARM-processor" #: modules/devices/arm/processor.c:436 modules/devices/riscv/processor.c:522 #: modules/devices/x86/processor.c:609 msgid "Empty List" msgstr "Tom liste" #: modules/devices/arm/processor.c:461 modules/devices/gpu.c:204 #: modules/devices/gpu.c:294 modules/devices/riscv/processor.c:330 #: modules/devices/x86/processor.c:267 msgid "Clocks" msgstr "Ure" #: modules/devices/arm/processor.c:507 modules/devices/arm/processor.c:520 #: modules/devices/riscv/processor.c:376 modules/devices/riscv/processor.c:389 #: modules/devices/x86/processor.c:313 modules/devices/x86/processor.c:326 #, c-format msgid "%.2f-%.2f %s=%dx\n" msgstr "" #: modules/devices/arm/processor.c:564 msgid "Linux Name" msgstr "Linux navn" #: modules/devices/arm/processor.c:565 msgid "Decoded Name" msgstr "Afkodet navn" #: modules/devices/arm/processor.c:566 modules/network/net.c:476 msgid "Mode" msgstr "" #: modules/devices/arm/processor.c:573 msgid "ARM" msgstr "" #: modules/devices/arm/processor.c:574 msgid "Implementer" msgstr "Iværksætter" #: modules/devices/arm/processor.c:575 modules/devices/dmi_memory.c:874 msgid "Part" msgstr "Del" #: modules/devices/arm/processor.c:576 modules/devices/ia64/processor.c:162 #: modules/devices/parisc/processor.c:156 modules/devices/riscv/processor.c:585 msgid "Architecture" msgstr "Arkitektur" #: modules/devices/arm/processor.c:577 msgid "Variant" msgstr "" #: modules/devices/arm/processor.c:579 modules/devices/riscv/processor.c:593 #: modules/devices/sparc/processor.c:78 modules/devices/x86/processor.c:666 msgid "Capabilities" msgstr "Kompetencer" #: modules/devices/arm/processor.c:703 modules/devices/riscv/processor.c:548 msgid "SOC/Package" msgstr "SOC/Pakke" #: modules/devices/arm/processor.c:707 modules/devices/riscv/processor.c:552 #: modules/devices/x86/processor.c:752 msgid "Logical CPU Config" msgstr "Logisk CPU Config" #: modules/devices/arm/processor.c:726 modules/devices/riscv/processor.c:608 msgid "SOC/Package Information" msgstr "SOC/pakkeoplysninger" #: modules/devices/arm/processor.c:756 modules/devices/riscv/processor.c:640 #: modules/devices/x86/processor.c:810 msgid "Socket:Core" msgstr "" #: modules/devices/battery.c:178 #, c-format msgid "" "\n" "[Battery: %s]\n" "State=%s (load: %s)\n" "Capacity=%s / %s (%.2f%%)\n" "Battery Technology=%s (%s)\n" "Manufacturer=%s\n" "Model Number=%s\n" "Serial Number=%s\n" msgstr "" "\n" "[Batteri: %s]\n" "Status=%s (belastning: %s)\n" "Kapacitet=%s / %s (%.2f%%)\n" "Batteriteknologi=%s (%s)\n" "Producent=%s\n" "Model Nummer=%s\n" "Serial Nummer=%s\n" #: modules/devices/battery.c:260 #, c-format msgid "" "\n" "[AC Power Supply: %s]\n" "Online=%s\n" "AC Power Type=%s\n" msgstr "" #: modules/devices/battery.c:291 #, c-format msgid "" "\n" "[Battery: %s]\n" "State=%s\n" "Capacity=%s / %s\n" "Battery Health=%.0f %%\n" "Design Full Energy=%.3f Wh\n" "Current Full Energy=%.3f Wh\n" "Design Full Capacity=%.3f Ah\n" "Current Full Capacity=%.3f Ah\n" "Voltage Design=%.3f V\n" "Battery Technology=%s\n" "Manufacturer=%s\n" "Model Number=%s\n" "Serial Number=%s\n" msgstr "" #: modules/devices/battery.c:400 #, c-format msgid "" "\n" "[Battery (APM)]\n" "Charge=%d%%\n" "Remaining Charge=%s of %s\n" "Using=%s\n" "APM driver version=%s\n" "APM BIOS version=%s\n" msgstr "" "\n" "[Batteri (APM)]\n" "Opladning=%d%%\n" "Resterende opladning=%s af %s\n" "Bruger=%s\n" "APM-driverversion=%s\n" "APM BIOS-version=%s\n" #: modules/devices/battery.c:412 #, c-format msgid "" "\n" "[Battery (APM)]\n" "Charge=%d%%\n" "Using=%s\n" "APM driver version=%s\n" "APM BIOS version=%s\n" msgstr "" "\n" "[Batteri (APM)]\n" "Opladning=%d%%\n" "Bruger=%s\n" "APM-driverversion=%s\n" "APM BIOS-version=%s\n" #: modules/devices/battery.c:441 msgid "" "[No batteries]\n" "No batteries found on this system=\n" msgstr "" "[Ingen batterier]\n" "Ingen batterier fundet på dette system=\n" #: modules/devices.c:100 msgid "Graphics Processors" msgstr "Grafikprocessorer" #: modules/devices.c:101 modules/devices/monitors.c:449 #: modules/devices/monitors.c:495 msgid "Monitors" msgstr "Monitorer" #: modules/devices.c:102 modules/devices/pci.c:196 msgid "PCI Devices" msgstr "PCI-enheder" #: modules/devices.c:103 modules/devices/usb.c:211 msgid "USB Devices" msgstr "USB-enheder" #: modules/devices.c:104 msgid "Firmware" msgstr "" #: modules/devices.c:106 msgid "Battery" msgstr "Batteri" #: modules/devices.c:107 msgid "Sensors" msgstr "Sensorer" #: modules/devices.c:110 msgid "System DMI" msgstr "" #: modules/devices.c:111 msgid "Memory Devices" msgstr "Hukommelsesenheder" #: modules/devices.c:113 modules/devices.c:115 msgid "Device Tree" msgstr "Enhedstræ" #: modules/devices.c:117 msgid "Resources" msgstr "Ressourcer" #: modules/devices.c:594 msgid "WSL2" msgstr "" #: modules/devices.c:841 msgid "Sensor" msgstr "" #: modules/devices.c:899 modules/devices/dmi_memory.c:806 msgid "Devices" msgstr "Enheder" #: modules/devices.c:911 msgid "Update PCI ID listing" msgstr "Opdater PCI ID-liste" #: modules/devices.c:916 msgid "Update USB ID listing" msgstr "Opdater USB ID-liste" #: modules/devices.c:921 msgid "Update EDID vendor codes" msgstr "Opdater EDID-leverandørkoder" #: modules/devices.c:926 msgid "Update IEEE OUI vendor codes" msgstr "Opdater IEEE OUI-leverandørkoder" #: modules/devices.c:931 msgid "Update SD card manufacturer information" msgstr "Opdater SD-kortproducentoplysninger" #: modules/devices.c:938 msgid "Update CPU flags database" msgstr "Opdater CPU-flagdatabase" #: modules/devices.c:973 msgid "Gathers information about hardware devices" msgstr "Samler information om hardwareenheder" #: modules/devices.c:994 msgid "A copy of pci.ids is not available on the system." msgstr "En kopi af pci.ids er ikke tilgængelig på systemet." #: modules/devices.c:997 msgid "A full pci.ids is not available on the system." msgstr "En fuld pci.ids er ikke tilgængelig på systemet." #: modules/devices.c:1002 msgid "" "Ensure hardinfo2 service is enabled+started: sudo systemctl enable hardinfo2 " "--now (SystemD distro)\n" "Add yourself to hardinfo2 group: sudo usermod -a -G hardinfo2 YOUR_LOGIN\n" "And Logout/Reboot for groups to be updated..." msgstr "" "Check at hardinfo2 service er enabled+startet: sudo systemctl enable " "hardinfo2 --now (SystemD distro)\n" "Tilføj dig selv til hardinfo2 gruppen: sudo usermod -a -G hardinfo2 " "DIT_LOGIN\n" "Og Logud/Reboot for at grupper opdateres..." #: modules/devices.c:1008 msgid "" "Any NVMe storage devices present are not listed.\n" "udisks2 is required for NVMe devices." msgstr "" "Eventuelle tilstedeværende NVMe-lagerenheder er ikke på listen.\n" "udisks2 er påkrævet for NVMe-enheder." #: modules/devices/devicetree.c:51 msgid "Properties" msgstr "Ejendomme" #: modules/devices/devicetree.c:52 msgid "Children" msgstr "Børn" #: modules/devices/devicetree.c:88 msgid "Node" msgstr "Knudepunkt" #: modules/devices/devicetree.c:89 msgid "Node Path" msgstr "Knudesti" #: modules/devices/devicetree.c:90 msgid "Alias" msgstr "" #: modules/devices/devicetree.c:91 msgid "Symbol" msgstr "" #: modules/devices/devicetree.c:144 modules/devices/devicetree/pmac_data.c:79 msgid "Platform" msgstr "" #: modules/devices/devicetree.c:145 modules/devices/devicetree.c:210 #: modules/devices/gpu.c:299 msgid "Compatible" msgstr "Kompatibel" #: modules/devices/devicetree.c:146 msgid "GPU-compatible" msgstr "GPU-kompatibel" #: modules/devices/devicetree.c:161 msgid "Raspberry Pi or Compatible" msgstr "Raspberry Pi eller kompatibel" #: modules/devices/devicetree.c:163 modules/devices/devicetree.c:190 #: modules/devices/devicetree.c:209 modules/devices/devicetree/rpi_data.c:169 #: modules/devices/dmi.c:42 modules/devices/dmi.c:52 modules/devices/dmi.c:58 #: modules/devices/spd-decode.c:1383 modules/devices/usb.c:181 msgid "Serial Number" msgstr "Serienummer" #: modules/devices/devicetree.c:164 modules/devices/devicetree/rpi_data.c:166 msgid "RCode" msgstr "" #: modules/devices/devicetree.c:164 msgid "No revision code available; unable to lookup model details." msgstr "Ingen revisionskode tilgængelig;" #: modules/devices/devicetree.c:189 msgid "More" msgstr "Mere" #: modules/devices/devicetree.c:270 msgid "Messages" msgstr "Beskeder" #: modules/devices/devicetree/pmac_data.c:78 msgid "Apple Power Macintosh" msgstr "" #: modules/devices/devicetree/pmac_data.c:83 msgid "Detected as" msgstr "Opdaget som" #: modules/devices/devicetree/pmac_data.c:84 msgid "PMAC Flags" msgstr "PMAC Flag" #: modules/devices/devicetree/pmac_data.c:85 msgid "L2 Cache" msgstr "" #: modules/devices/devicetree/pmac_data.c:86 msgid "PMAC Generation" msgstr "" #: modules/devices/devicetree/rpi_data.c:161 #: modules/devices/devicetree/rpi_data.c:162 msgid "Raspberry Pi" msgstr "" #: modules/devices/devicetree/rpi_data.c:162 msgid "Board Name" msgstr "Bestyrelsesnavn" #: modules/devices/devicetree/rpi_data.c:163 msgid "PCB Revision" msgstr "PCB-revision" #: modules/devices/devicetree/rpi_data.c:164 msgid "Introduction" msgstr "Introduktion" #: modules/devices/devicetree/rpi_data.c:165 modules/devices/usb.c:173 msgid "Manufacturer" msgstr "Producent" #: modules/devices/devicetree/rpi_data.c:167 msgid "SOC (spec)" msgstr "SOC (spec.)" #: modules/devices/devicetree/rpi_data.c:168 msgid "Memory (spec)" msgstr "Hukommelse (spec.)" #: modules/devices/devicetree/rpi_data.c:170 msgid "Permanent overvolt bit" msgstr "" #: modules/devices/devicetree/rpi_data.c:170 msgctxt "rpi-ov-bit" msgid "Set" msgstr "Sæt" #: modules/devices/devicetree/rpi_data.c:170 msgctxt "rpi-ov-bit" msgid "Not set" msgstr "Ikke indstillet" #: modules/devices/dmi.c:37 modules/devices/inputdevices.c:145 #: modules/devices/usb.c:170 msgid "Product" msgstr "Produkt" #: modules/devices/dmi.c:39 modules/devices/e2k/processor.c:360 #: modules/devices/ia64/processor.c:164 #: modules/devices/loongarch64/processor.c:95 modules/devices/sh/processor.c:86 msgid "Family" msgstr "Familien" #: modules/devices/dmi.c:43 msgid "SKU" msgstr "" #: modules/devices/dmi.c:44 msgid "BIOS" msgstr "" #: modules/devices/dmi.c:53 modules/devices/dmi.c:59 msgid "Asset Tag" msgstr "" #: modules/devices/dmi.c:161 msgid "DMI Unavailable" msgstr "DMI ikke tilgængelig" #: modules/devices/dmi.c:162 msgid "DMI is not available. Perhaps this platform does not provide DMI." msgstr "DMI er ikke tilgængelig." #: modules/devices/dmi_memory.c:620 modules/devices/dmi_memory.c:859 msgid "Memory Device List" msgstr "Liste over hukommelsesenheder" #: modules/devices/dmi_memory.c:668 msgid "Memory Array" msgstr "" #: modules/devices/dmi_memory.c:669 modules/devices/x86/processor.c:714 msgid "DMI Handle" msgstr "DMI Håndtag" #: modules/devices/dmi_memory.c:670 modules/devices/dmi_memory.c:726 #: modules/devices/dmi_memory.c:764 modules/devices/dmi_memory.c:871 msgid "Locator" msgstr "Lokator" #: modules/devices/dmi_memory.c:671 msgid "Use" msgstr "Brug" #: modules/devices/dmi_memory.c:672 msgid "Error Correction Type" msgstr "Fejlretningstype" #: modules/devices/dmi_memory.c:673 msgid "Size (Present / Max)" msgstr "Størrelse (nuværende / maks.)" #: modules/devices/dmi_memory.c:674 msgid "Devices (Populated / Sockets)" msgstr "Enheder (befolket/stikkontakter)" #: modules/devices/dmi_memory.c:675 modules/devices/dmi_memory.c:807 msgid "Types Present" msgstr "Typer Til stede" #: modules/devices/dmi_memory.c:676 msgid "ROM Size" msgstr "ROM størrelse" #: modules/devices/dmi_memory.c:724 modules/devices/dmi_memory.c:762 msgid "Memory Socket" msgstr "Hukommelsesstik" #: modules/devices/dmi_memory.c:725 modules/devices/dmi_memory.c:763 msgid "DMI Handles (Array, Socket)" msgstr "DMI-håndtag (array, socket)" #: modules/devices/dmi_memory.c:727 modules/devices/dmi_memory.c:765 msgid "Bank Locator" msgstr "" #: modules/devices/dmi_memory.c:728 modules/devices/spd-decode.c:1376 msgid "Form Factor" msgstr "" #: modules/devices/dmi_memory.c:732 modules/devices/spd-decode.c:1382 msgid "Part Number" msgstr "Varenummer" #: modules/devices/dmi_memory.c:734 msgid "Rated Speed" msgstr "Nominel hastighed" #: modules/devices/dmi_memory.c:735 msgid "Configured Speed" msgstr "Konfigureret hastighed" #: modules/devices/dmi_memory.c:736 msgid "Data Width/Total Width" msgstr "" #: modules/devices/dmi_memory.c:737 msgid "Rank" msgstr "Rang" #: modules/devices/dmi_memory.c:738 msgid "Minimum Voltage" msgstr "Minimumsspænding" #: modules/devices/dmi_memory.c:739 msgid "Maximum Voltage" msgstr "Maksimal spænding" #: modules/devices/dmi_memory.c:740 msgid "Configured Voltage" msgstr "Konfigureret spænding" #: modules/devices/dmi_memory.c:766 modules/devices/dmi_memory.c:773 #: modules/devices/monitors.c:495 msgid "(Empty)" msgstr "(Tom)" #: modules/devices/dmi_memory.c:804 msgid "Serial Presence Detect (SPD) Summary" msgstr "Serial Presence Detect (SPD) resumé" #: modules/devices/dmi_memory.c:860 msgid "(Not available - See hint box below)" msgstr "(Ikke tilgængelig - Se tipboks nedenfor)" #: modules/devices/dmi_memory.c:932 msgid "No DMI available" msgstr "" #: modules/devices/dmi_memory.c:937 msgid "dmidecode package installed" msgstr "dmidecode pakken installeret" #: modules/devices/dmi_memory.c:948 msgid "Memory Information requires more Setup:" msgstr "Hukommelsesoplysninger kræver mere opsætning:" #: modules/devices/dmi_memory.c:976 msgid "" "\"More often than not, information contained in the DMI tables is " "inaccurate,\n" "incomplete or simply wrong.\" -dmidecode manual page" msgstr "" "\"Ofte end ikke er oplysningerne i DMI-tabellerne unøjagtige,\n" "ufuldstændige eller simpelthen forkerte.\" -dmidecode manualside" #: modules/devices/e2k/processor.c:51 msgctxt "cache-type" msgid "Data" msgstr "" #: modules/devices/e2k/processor.c:52 msgctxt "cache-type" msgid "Instruction" msgstr "" #: modules/devices/e2k/processor.c:53 msgctxt "cache-type" msgid "Unified" msgstr "" #: modules/devices/firmware.c:36 msgid "Device cannot be removed easily" msgstr "Enhed kan ikke fjernes nemt" #: modules/devices/firmware.c:37 msgid "Device is updatable in this or any other mode" msgstr "Enheden kan opdateres i denne eller enhver anden tilstand" #: modules/devices/firmware.c:38 msgid "Update can only be done from offline mode" msgstr "Opdatering kan kun udføres fra offlinetilstand" #: modules/devices/firmware.c:39 msgid "Requires AC power" msgstr "Kræver vekselstrøm" #: modules/devices/firmware.c:40 msgid "Is locked and can be unlocked" msgstr "Er låst og kan låses op" #: modules/devices/firmware.c:41 msgid "Is found in current metadata" msgstr "Findes i aktuelle metadata" #: modules/devices/firmware.c:42 msgid "Requires a bootloader mode to be manually enabled by the user" msgstr "" "Kræver en bootloader-tilstand for at blive aktiveret manuelt af brugeren" #: modules/devices/firmware.c:43 msgid "Has been registered with other plugins" msgstr "Er blevet registreret med andre plugins" #: modules/devices/firmware.c:44 msgid "Requires a reboot to apply firmware or to reload hardware" msgstr "Kræver en genstart for at anvende firmware eller genindlæse hardware" #: modules/devices/firmware.c:45 msgid "Requires system shutdown to apply firmware" msgstr "Kræver systemlukning for at anvende firmware" #: modules/devices/firmware.c:46 msgid "Has been reported to a metadata server" msgstr "Er blevet rapporteret til en metadataserver" #: modules/devices/firmware.c:47 msgid "User has been notified" msgstr "Brugeren er blevet underrettet" #: modules/devices/firmware.c:48 msgid "Always use the runtime version rather than the bootloader" msgstr "Brug altid runtime-versionen i stedet for bootloaderen" #: modules/devices/firmware.c:49 msgid "Install composite firmware on the parent before the child" msgstr "Installer sammensat firmware på forælderen før barnet" #: modules/devices/firmware.c:50 msgid "Is currently in bootloader mode" msgstr "Er i øjeblikket i bootloader-tilstand" #: modules/devices/firmware.c:51 msgid "The hardware is waiting to be replugged" msgstr "Hardwaren venter på at blive tilsluttet igen" #: modules/devices/firmware.c:52 msgid "Ignore validation safety checks when flashing this device" msgstr "Ignorer valideringssikkerhedstjek, når denne enhed blinker" #: modules/devices/firmware.c:53 msgid "Requires the update to be retried with a new plugin" msgstr "Kræver, at opdateringen prøves igen med et nyt plugin" #: modules/devices/firmware.c:54 msgid "Do not add instance IDs from the device baseclass" msgstr "Tilføj ikke instans-id'er fra enhedsbasisklassen" #: modules/devices/firmware.c:55 msgid "Device update needs to be separately activated" msgstr "Enhedsopdatering skal aktiveres separat" #: modules/devices/firmware.c:56 msgid "" "Ensure the version is a valid semantic version, e.g. numbers separated with " "dots" msgstr "Sørg for, at versionen er en gyldig semantisk version, f.eks. " #: modules/devices/firmware.c:57 msgid "Extra metadata can be exposed about this device" msgstr "Ekstra metadata kan afsløres om denne enhed" #: modules/devices/firmware.c:74 msgid "DeviceId" msgstr "" #: modules/devices/firmware.c:74 modules/devices/firmware.c:187 msgid "Guid" msgstr "Vejledning" #: modules/devices/firmware.c:74 msgid "Plugin" msgstr "" #: modules/devices/firmware.c:74 modules/devices/firmware.c:205 #: modules/network.c:381 msgid "Flags" msgstr "Flag" #: modules/devices/firmware.c:75 msgid "VendorId" msgstr "" #: modules/devices/firmware.c:75 msgid "VersionBootloader" msgstr "" #: modules/devices/firmware.c:76 modules/devices/firmware.c:179 msgid "Icon" msgstr "Ikon" #: modules/devices/firmware.c:76 msgid "InstallDuration" msgstr "Installationsvarighed" #: modules/devices/firmware.c:76 modules/devices/firmware.c:197 msgid "Created" msgstr "Oprettet" #: modules/devices/firmware.c:244 msgid "Firmware List" msgstr "Firmwareliste" #: modules/devices/firmware.c:257 msgid "Requires the fwupd daemon." msgstr "Kræver fwupd-dæmonen." #: modules/devices/gpu.c:94 modules/devices/pci.c:132 #: modules/devices/storage.c:58 msgid "SVendor" msgstr "" #: modules/devices/gpu.c:95 modules/devices/pci.c:133 #: modules/devices/storage.c:59 msgid "SDevice" msgstr "SDenhed" #: modules/devices/gpu.c:103 modules/devices/pci.c:143 #: modules/devices/storage.c:68 msgid "PCI Express" msgstr "" #: modules/devices/gpu.c:104 modules/devices/pci.c:145 #: modules/devices/storage.c:70 msgid "Maximum Link Width" msgstr "Maksimal forbindelsesbredde" #: modules/devices/gpu.c:105 modules/devices/pci.c:147 #: modules/devices/storage.c:71 msgid "Maximum Link Speed" msgstr "Maksimal forbindelseshastighed" #: modules/devices/gpu.c:105 modules/devices/pci.c:146 modules/devices/pci.c:147 #: modules/devices/storage.c:71 msgid "GT/s" msgstr "" #: modules/devices/gpu.c:115 msgid "NVIDIA" msgstr "" #: modules/devices/gpu.c:117 msgid "BIOS Version" msgstr "BIOS-version" #: modules/devices/gpu.c:118 msgid "UUID" msgstr "" #: modules/devices/gpu.c:197 modules/devices/gpu.c:289 #: modules/devices/inputdevices.c:140 modules/devices/pci.c:164 #: modules/devices/usb.c:169 msgid "Device Information" msgstr "Enhedsoplysninger" #: modules/devices/gpu.c:199 modules/devices/gpu.c:291 #: modules/devices/storage.c:69 msgid "Location" msgstr "Placering" #: modules/devices/gpu.c:200 msgid "DRM Device" msgstr "DRM-enhed" #: modules/devices/gpu.c:201 modules/devices/pci.c:165 modules/devices/usb.c:136 #: modules/devices/usb.c:177 msgid "Class" msgstr "Klasse" #: modules/devices/gpu.c:210 modules/devices/pci.c:170 msgid "In Use" msgstr "I brug" #: modules/devices/gpu.c:245 msgid "Unknown integrated GPU" msgstr "Ukendt integreret GPU" #: modules/devices/gpu.c:253 msgid "clock-frequency property" msgstr "clock-frekvens egenskab" #: modules/devices/gpu.c:254 msgid "Operating Points (OPPv1)" msgstr "" #: modules/devices/gpu.c:255 msgid "Operating Points (OPPv2)" msgstr "" #: modules/devices/gpu.c:297 msgid "Device Tree Node" msgstr "" #: modules/devices/gpu.c:300 modules/devices/monitors.c:475 #: modules/network/net.c:477 msgid "Status" msgstr "" #: modules/devices/gpu.c:317 msgid "GPUs" msgstr "GPU'er" #: modules/devices/gpu.c:341 msgid "No GPU devices found" msgstr "Ingen GPU-enheder fundet" #: modules/devices/ia64/processor.c:108 msgid "IA64 Processor" msgstr "IA64 processor" #: modules/devices/ia64/processor.c:163 msgid "Architecture Revision" msgstr "Arkitekturrevision" #: modules/devices/ia64/processor.c:170 msgid "CPU regs" msgstr "" #: modules/devices/ia64/processor.c:171 #: modules/devices/loongarch64/processor.c:100 msgid "Features" msgstr "Funktioner" #: modules/devices/inputdevices.c:143 modules/devices/pci.c:174 #: modules/devices/usb.c:183 msgid "Bus" msgstr "" #: modules/devices/inputdevices.c:149 msgid "Connected to" msgstr "Forbundet til" #: modules/devices/inputdevices.c:153 msgid "InfraRed port" msgstr "Infrarød port" #: modules/devices/loongarch64/processor.c:94 #: modules/devices/mips/processor.c:76 msgid "System Type" msgstr "Systemtype" #: modules/devices/loongarch64/processor.c:99 msgid "BogoMIPS" msgstr "" #: modules/devices/m68k/processor.c:85 modules/devices/riscv/processor.c:587 msgid "MMU" msgstr "" #: modules/devices/m68k/processor.c:86 modules/devices/sparc/processor.c:76 msgid "FPU" msgstr "" #: modules/devices/m68k/processor.c:90 msgid "Calibration" msgstr "Kalibrering" #: modules/devices/monitors.c:30 modules/devices/monitors.c:257 #: modules/devices/monitors.c:350 modules/devices/spd-decode.c:699 msgid "(Unspecified)" msgstr "(Uspecificeret)" #: modules/devices/monitors.c:232 #, c-format msgid "Week %d of %d" msgstr "Uge %d af %d" #: modules/devices/monitors.c:242 msgid "Ok" msgstr "" #: modules/devices/monitors.c:242 msgid "Fail" msgstr "Mislykkedes" #: modules/devices/monitors.c:270 modules/devices/monitors.c:278 #: modules/devices/monitors.c:286 modules/devices/monitors.c:297 #: modules/devices/monitors.c:305 modules/devices/monitors.c:312 #: modules/devices/monitors.c:320 modules/devices/monitors.c:328 #: modules/devices/monitors.c:336 modules/devices/monitors.c:342 msgid "(Empty List)" msgstr "(Tom liste)" #: modules/devices/monitors.c:394 msgid "Signal Type" msgstr "Signaltype" #: modules/devices/monitors.c:394 msgid "Digital" msgstr "" #: modules/devices/monitors.c:394 msgid "Analog" msgstr "" #: modules/devices/monitors.c:395 modules/devices/usb.c:135 #: modules/network.c:311 modules/network.c:364 modules/network.c:381 msgid "Interface" msgstr "Grænseflade" #: modules/devices/monitors.c:396 msgid "Bits per Color Channel" msgstr "Bits pr. farvekanal" #: modules/devices/monitors.c:397 msgid "Speaker Allocation" msgstr "Speakertildeling" #: modules/devices/monitors.c:398 msgid "Output (Max)" msgstr "Output (maks.)" #: modules/devices/monitors.c:401 msgid "EDID Device" msgstr "EDID-enhed" #: modules/devices/monitors.c:405 msgid "Serial" msgstr "Serie" #: modules/devices/monitors.c:406 msgid "Manufacture Date" msgstr "Fremstillingsdato" #: modules/devices/monitors.c:407 msgid "EDID Meta" msgstr "" #: modules/devices/monitors.c:408 msgid "Data Size" msgstr "Datastørrelse" #: modules/devices/monitors.c:408 msgid "bytes" msgstr "" #: modules/devices/monitors.c:410 msgid "Extension Blocks" msgstr "Forlængerblokke" #: modules/devices/monitors.c:411 msgid "Extended to" msgstr "Udvidet til" #: modules/devices/monitors.c:412 msgid "Checksum" msgstr "Tjeksum" #: modules/devices/monitors.c:413 msgid "EDID Descriptors" msgstr "EDID-beskrivelser" #: modules/devices/monitors.c:414 msgid "Detailed Timing Descriptors (DTD)" msgstr "" #: modules/devices/monitors.c:415 msgid "Established Timings Bitmap (ETB)" msgstr "" #: modules/devices/monitors.c:416 msgid "Standard Timings (STD)" msgstr "" #: modules/devices/monitors.c:417 msgid "E-EDID Extension Blocks" msgstr "E-EDID forlængelsesblokke" #: modules/devices/monitors.c:418 msgid "EIA/CEA-861 Data Blocks" msgstr "EIA/CEA-861 Datablokke" #: modules/devices/monitors.c:419 msgid "EIA/CEA-861 Short Audio Descriptors" msgstr "EIA/CEA-861 korte lydbeskrivelser" #: modules/devices/monitors.c:420 msgid "EIA/CEA-861 Short Video Descriptors" msgstr "EIA/CEA-861 korte videobeskrivelser" #: modules/devices/monitors.c:421 msgid "DisplayID Timings" msgstr "" #: modules/devices/monitors.c:422 msgid "DisplayID Strings" msgstr "" #: modules/devices/monitors.c:423 msgid "Hex Dump" msgstr "Hexdump" #: modules/devices/monitors.c:423 msgid "Data" msgstr "" #: modules/devices/monitors.c:473 modules/devices/monitors.c:504 #: modules/devices/pci.c:172 modules/devices/usb.c:182 msgid "Connection" msgstr "Forbindelse" #: modules/devices/monitors.c:474 msgid "DRM" msgstr "" #: modules/devices/parisc/processor.c:107 msgid "PA-RISC Processor" msgstr "PA-RISC-processor" #: modules/devices/parisc/processor.c:161 msgid "HVersion" msgstr "HVversion" #: modules/devices/parisc/processor.c:162 msgid "SVersion" msgstr "SVversion" #: modules/devices/pci.c:144 msgid "Link Width" msgstr "Link Bredde" #: modules/devices/pci.c:146 msgid "Link Speed" msgstr "Linkhastighed" #: modules/devices/pci.c:173 msgid "Domain" msgstr "Domæne" #: modules/devices/pci.c:176 msgid "Function" msgstr "Funktion" #: modules/devices/pci.c:217 msgid "No PCI devices found" msgstr "Ingen PCI-enheder fundet" #: modules/devices/ppc/processor.c:117 msgid "POWER Processor" msgstr "POWER-processor" #: modules/devices/printers.c:88 msgid "⚬ Can do black and white printing=\n" msgstr "⚬ Kan lave sort/hvid udskrivning=\n" #: modules/devices/printers.c:90 msgid "⚬ Can do color printing=\n" msgstr "⚬ Kan lave farveprint=\n" #: modules/devices/printers.c:92 msgid "⚬ Can do duplexing=\n" msgstr "⚬ Kan udføre duplexing=\n" #: modules/devices/printers.c:94 msgid "⚬ Can do staple output=\n" msgstr "⚬ Kan hæfte output=\n" #: modules/devices/printers.c:96 msgid "⚬ Can do copies=\n" msgstr "⚬ Kan lave kopier=\n" #: modules/devices/printers.c:98 msgid "⚬ Can collate copies=\n" msgstr "⚬ Kan sortere kopier=\n" #: modules/devices/printers.c:100 msgid "⚬ Printer is rejecting jobs=\n" msgstr "⚬ Printeren afviser job=\n" #: modules/devices/printers.c:102 msgid "⚬ Printer was automatically discovered and added=\n" msgstr "⚬ Printeren blev automatisk fundet og tilføjet=\n" #: modules/devices/printers.c:117 msgid "Idle" msgstr "Tomgang" #: modules/devices/printers.c:119 msgid "Printing a Job" msgstr "Udskrivning af et job" #: modules/devices/printers.c:121 msgid "Stopped" msgstr "Stoppet" #: modules/devices/printers.c:200 msgid "" "[Printers]\n" "No suitable CUPS library found=" msgstr "" "[Printere]\n" "Intet passende CUPS-bibliotek fundet=" #: modules/devices/printers.c:213 msgid "[Printers (CUPS)]\n" msgstr "[Printere (CUPS)]\n" #: modules/devices/printers.c:277 msgid "" "[Printers]\n" "No printers found=\n" msgstr "" "[Printere]\n" "Ingen printere fundet=\n" #: modules/devices/riscv/processor.c:586 msgid "uarch" msgstr "" #: modules/devices/riscv/riscv_data.c:37 msgctxt "rv-ext" msgid "RISC-V 32-bit" msgstr "" #: modules/devices/riscv/riscv_data.c:38 msgctxt "rv-ext" msgid "RISC-V 64-bit" msgstr "" #: modules/devices/riscv/riscv_data.c:39 msgctxt "rv-ext" msgid "RISC-V 128-bit" msgstr "" #: modules/devices/riscv/riscv_data.c:40 msgctxt "rv-ext" msgid "Base embedded integer instructions (15 registers)" msgstr "Base indlejrede heltalsinstruktioner (15 registre)" #: modules/devices/riscv/riscv_data.c:41 msgctxt "rv-ext" msgid "Base integer instructions (31 registers)" msgstr "Base heltal instruktioner (31 registre)" #: modules/devices/riscv/riscv_data.c:42 msgctxt "rv-ext" msgid "Hardware integer multiply and divide" msgstr "Hardware heltal gange og dividere" #: modules/devices/riscv/riscv_data.c:43 msgctxt "rv-ext" msgid "Atomic memory operations" msgstr "Atomiske hukommelsesoperationer" #: modules/devices/riscv/riscv_data.c:44 msgctxt "rv-ext" msgid "Compressed 16-bit instructions" msgstr "Komprimeret 16-bit instruktioner" #: modules/devices/riscv/riscv_data.c:45 msgctxt "rv-ext" msgid "Floating-point instructions, single-precision" msgstr "Flydende komma instruktioner, enkelt-præcision" #: modules/devices/riscv/riscv_data.c:46 msgctxt "rv-ext" msgid "Floating-point instructions, double-precision" msgstr "Flydende komma instruktioner, dobbelt-præcision" #: modules/devices/riscv/riscv_data.c:47 msgctxt "rv-ext" msgid "Floating-point instructions, quad-precision" msgstr "Flydende komma instruktioner, quad-præcision" #: modules/devices/riscv/riscv_data.c:48 msgctxt "rv-ext" msgid "Bit manipulation instructions" msgstr "Bit manipulation instruktioner" #: modules/devices/riscv/riscv_data.c:49 msgctxt "rv-ext" msgid "Vector operations" msgstr "Vektoroperationer" #: modules/devices/riscv/riscv_data.c:50 msgctxt "rv-ext" msgid "Scalar Cryptography" msgstr "Skalær kryptografi" #: modules/devices/riscv/riscv_data.c:51 msgctxt "rv-ext" msgid "Base Counters and Timers" msgstr "" #: modules/devices/riscv/riscv_data.c:52 msgctxt "rv-ext" msgid "Control and Status Register" msgstr "" #: modules/devices/riscv/riscv_data.c:53 msgctxt "rv-ext" msgid "Instruction-Fetch Fence" msgstr "" #: modules/devices/riscv/riscv_data.c:54 msgctxt "rv-ext" msgid "Hardware performance counters" msgstr "" #: modules/devices/riscv/riscv_data.c:55 msgctxt "rv-ext" msgid "Accell Index addresses" msgstr "" #: modules/devices/riscv/riscv_data.c:56 msgctxt "rv-ext" msgid "Basic bit-manipulation" msgstr "" #: modules/devices/riscv/riscv_data.c:57 msgctxt "rv-ext" msgid "Supervisor-level Instructions" msgstr "Instruktioner på supervisorniveau" #: modules/devices/riscv/riscv_data.c:58 msgctxt "rv-ext" msgid "User Mode" msgstr "Brugertilstand" #: modules/devices/riscv/riscv_data.c:59 msgctxt "rv-ext" msgid "Transactional memory" msgstr "Transaktionshukommelse" #: modules/devices/riscv/riscv_data.c:60 msgctxt "rv-ext" msgid "Packed SIMD instructions" msgstr "Pakket SIMD instruktioner" #: modules/devices/riscv/riscv_data.c:61 msgctxt "rv-ext" msgid "Decimal floating-point instructions" msgstr "Decimal flydende komma instruktioner" #: modules/devices/riscv/riscv_data.c:62 msgctxt "rv-ext" msgid "Dynamically translated languages" msgstr "Dynamisk oversatte sprog" #: modules/devices/riscv/riscv_data.c:63 msgctxt "rv-ext" msgid "User-level interrupts" msgstr "Bruger-niveau afbrydes" #: modules/devices/s390/processor.c:92 msgid "S390 Processor" msgstr "S390 processor" #: modules/devices/s390/processor.c:133 msgid "ID String" msgstr "ID-streng" #: modules/devices/sh/processor.c:55 msgid "SuperH Processor" msgstr "SuperH-processor" #: modules/devices/sh/processor.c:88 msgid "Bus Frequency" msgstr "Bus Hyppighed" #: modules/devices/sh/processor.c:89 msgid "Module Frequency" msgstr "Modulfrekvens" #: modules/devices/spd-decode.c:128 modules/devices/spd-decode.c:144 msgid "Unspecified" msgstr "" #: modules/devices/spd-decode.c:130 modules/devices/spd-decode.c:146 msgid "Invalid" msgstr "Ugyldig" #: modules/devices/spd-decode.c:358 msgid "Row address bits" msgstr "Rækkeadressebits" #: modules/devices/spd-decode.c:359 msgid "Column address bits" msgstr "Søjleadressebits" #: modules/devices/spd-decode.c:360 msgid "Number of rows" msgstr "Antal rækker" #: modules/devices/spd-decode.c:361 msgid "Data width" msgstr "Databredde" #: modules/devices/spd-decode.c:362 msgid "Interface signal levels" msgstr "Grænsefladesignalniveauer" #: modules/devices/spd-decode.c:363 msgid "Configuration type" msgstr "Konfigurationstype" #: modules/devices/spd-decode.c:364 msgid "Refresh" msgstr "Opdater" #: modules/devices/spd-decode.c:365 modules/devices/spd-decode.c:442 #: modules/devices/spd-decode.c:721 msgid "Timings" msgstr "Tidspunkter" #: modules/devices/spd-decode.c:589 modules/devices/spd-decode.c:858 #: modules/devices/spd-decode.c:899 modules/devices/spd-decode.c:1111 #: modules/devices/x86/processor.c:716 msgid "Voltage" msgstr "Spænding" #: modules/devices/spd-decode.c:590 modules/devices/spd-decode.c:901 #: modules/devices/spd-decode.c:1113 msgid "JEDEC Timings" msgstr "" #: modules/devices/spd-decode.c:697 msgid "Ranks" msgstr "Ranger" #: modules/devices/spd-decode.c:698 msgid "IO Pins per Chip" msgstr "" #: modules/devices/spd-decode.c:699 msgid "Die count" msgstr "Døbetælling" #: modules/devices/spd-decode.c:700 msgid "Thermal Sensor" msgstr "Termisk sensor" #: modules/devices/spd-decode.c:700 msgid "Present" msgstr "Nuværende" #: modules/devices/spd-decode.c:700 msgid "Not present" msgstr "Ikke til stede" #: modules/devices/spd-decode.c:701 msgid "Supported Voltages" msgstr "Understøttede spændinger" #: modules/devices/spd-decode.c:705 msgid "Supported CAS Latencies" msgstr "Understøttede CAS-forsinkelser" #: modules/devices/spd-decode.c:856 msgid "XMP Profile" msgstr "XMP-profil" #: modules/devices/spd-decode.c:857 modules/devices/usb.c:176 #: modules/network/net.c:438 msgid "Speed" msgstr "Hastighed" #: modules/devices/spd-decode.c:859 msgid "XMP Timings" msgstr "" #: modules/devices/spd-decode.c:900 msgid "XMP" msgstr "" #: modules/devices/spd-decode.c:1372 msgid "Serial Presence Detect (SPD)" msgstr "" #: modules/devices/spd-decode.c:1375 msgid "SPD Revision" msgstr "" #: modules/devices/spd-decode.c:1378 msgid "Module Vendor" msgstr "Modulleverandør" #: modules/devices/spd-decode.c:1380 msgid "DRAM Vendor" msgstr "DRAM Sælger" #: modules/devices/spd-decode.c:1385 msgid "Manufacturing Date (Year / Week)" msgstr "Fremstillingsdato (år / uge)" #: modules/devices/storage.c:46 modules/devices/storage.c:55 msgid "NVMe Controller" msgstr "NVMe-controller" #: modules/devices/storage.c:138 msgid "Read Error Rate" msgstr "Læs fejlrate" #: modules/devices/storage.c:139 msgid "Throughput Performance" msgstr "" #: modules/devices/storage.c:140 msgid "Spin-Up Time" msgstr "Spin-up tid" #: modules/devices/storage.c:141 msgid "Start/Stop Count" msgstr "Start/stoptælling" #: modules/devices/storage.c:142 msgid "Reallocated Sector Count" msgstr "Omfordelt Sektortælling" #: modules/devices/storage.c:143 msgid "Read Channel Margin" msgstr "Læs Channel Margin" #: modules/devices/storage.c:144 msgid "Seek Error Rate" msgstr "" #: modules/devices/storage.c:145 msgid "Seek Timer Performance" msgstr "" #: modules/devices/storage.c:146 modules/devices/storage.c:185 msgid "Power-On Hours" msgstr "Tændingstimer" #: modules/devices/storage.c:147 msgid "Spin Retry Count" msgstr "Spin Genforsøg Count" #: modules/devices/storage.c:148 msgid "Calibration Retry Count" msgstr "Kalibrering Gentæller" #: modules/devices/storage.c:149 msgid "Power Cycle Count" msgstr "" #: modules/devices/storage.c:150 modules/devices/storage.c:167 msgid "Soft Read Error Rate" msgstr "" #: modules/devices/storage.c:151 msgid "Runtime Bad Block" msgstr "" #: modules/devices/storage.c:152 msgid "End-to-End error" msgstr "Ende-til-ende fejl" #: modules/devices/storage.c:153 msgid "Reported Uncorrectable Errors" msgstr "Rapporteret ukorrigerbare fejl" #: modules/devices/storage.c:154 msgid "Command Timeout" msgstr "Kommando timeout" #: modules/devices/storage.c:155 msgid "High Fly Writes" msgstr "Høj flue skriver" #: modules/devices/storage.c:156 msgid "Airflow Temperature" msgstr "Luftstrømstemperatur" #: modules/devices/storage.c:157 msgid "G-sense Error Rate" msgstr "G-sense fejlrate" #: modules/devices/storage.c:158 msgid "Power-off Retract Count" msgstr "" #: modules/devices/storage.c:159 msgid "Load Cycle Count" msgstr "Belastningscyklustælling" #: modules/devices/storage.c:160 modules/devices/storage.c:183 msgid "Temperature" msgstr "Temperatur" #: modules/devices/storage.c:161 msgid "Hardware ECC Recovered" msgstr "Hardware ECC gendannet" #: modules/devices/storage.c:162 msgid "Reallocation Event Count" msgstr "Optælling af omfordelingsbegivenheder" #: modules/devices/storage.c:163 msgid "Current Pending Sector Count" msgstr "Nuværende afventende sektortælling" #: modules/devices/storage.c:164 msgid "Uncorrectable Sector Count" msgstr "Ukorrigerbar sektortælling" #: modules/devices/storage.c:165 msgid "UltraDMA CRC Error Count" msgstr "UltraDMA CRC-fejlantal" #: modules/devices/storage.c:166 msgid "Multi-Zone Error Rate" msgstr "Multi-Zone fejlrate" #: modules/devices/storage.c:168 msgid "Run Out Cancel" msgstr "Run Out Annuller" #: modules/devices/storage.c:169 msgid "Flying Height" msgstr "Flyvehøjde" #: modules/devices/storage.c:170 msgid "Spin High Current" msgstr "Spin høj strøm" #: modules/devices/storage.c:171 msgid "Spin Buzz" msgstr "" #: modules/devices/storage.c:172 msgid "Offline Seek Performance" msgstr "Offline søgeydelse" #: modules/devices/storage.c:173 msgid "Disk Shift" msgstr "Diskskift" #: modules/devices/storage.c:174 msgid "G-Sense Error Rate" msgstr "G-Sense fejlrate" #: modules/devices/storage.c:175 msgid "Loaded Hours" msgstr "Belastede timer" #: modules/devices/storage.c:176 msgid "Load/Unload Retry Count" msgstr "Load/Unload Gentæller" #: modules/devices/storage.c:177 msgid "Load Friction" msgstr "Belastningsfriktion" #: modules/devices/storage.c:178 msgid "Load/Unload Cycle Count" msgstr "Load/Unload cyklustælling" #: modules/devices/storage.c:179 msgid "Load-in time" msgstr "Indlæsningstid" #: modules/devices/storage.c:180 msgid "Torque Amplification Count" msgstr "Momentforstærkningstælling" #: modules/devices/storage.c:181 msgid "Power-Off Retract Count" msgstr "" #: modules/devices/storage.c:182 msgid "GMR Head Amplitude" msgstr "GMR hovedamplitude" #: modules/devices/storage.c:184 msgid "Endurance Remaining" msgstr "Udholdenhed Resterende" #: modules/devices/storage.c:186 msgid "Good Block Rate" msgstr "God blokeringsrate" #: modules/devices/storage.c:187 msgid "Head Flying Hours" msgstr "" #: modules/devices/storage.c:188 msgid "Read Error Retry Rate" msgstr "Læsefejl Prøv igen" #: modules/devices/storage.c:189 msgid "Total LBAs Written" msgstr "Skrevne LBA'er i alt" #: modules/devices/storage.c:190 msgid "Total LBAs Read" msgstr "Samlet LBA læst" #: modules/devices/storage.c:191 msgid "Wear leveling Count" msgstr "Slidudjævningstæller" #: modules/devices/storage.c:192 msgid "Total Used Reserved Block Count" msgstr "Samlet antal brugte reserverede blokeringer" #: modules/devices/storage.c:193 msgid "Total Program Fail Count" msgstr "Samlet antal programfejl" #: modules/devices/storage.c:194 msgid "Total Erase Fail Count" msgstr "" #: modules/devices/storage.c:195 msgid "Available Reserved Space" msgstr "Tilgængelig reserveret plads" #: modules/devices/storage.c:196 msgid "Program Fail Count" msgstr "Program fejltælling" #: modules/devices/storage.c:197 msgid "Erase Fail Count" msgstr "Slet antal fejl" #: modules/devices/storage.c:198 msgid "TA Counter Increased" msgstr "TA tæller forhøjet" #: modules/devices/storage.c:199 msgid "Total Unused Reserved Block Count" msgstr "Total ubrugt reserveret blokantal" #: modules/devices/storage.c:204 msgid "" "\n" "[UDisks2]\n" msgstr "" #: modules/devices/storage.c:257 msgid "Removable" msgstr "Aftagelig" #: modules/devices/storage.c:257 msgid "Fixed" msgstr "Fixet" #: modules/devices/storage.c:260 msgid "Ejectable" msgstr "Skastbar" #: modules/devices/storage.c:263 msgid "Self-monitoring (S.M.A.R.T.)" msgstr "Selvovervågning (S.M.A.R.T.)" #: modules/devices/storage.c:266 modules/devices/x86/processor.c:664 msgid "Power Management" msgstr "Strømstyring" #: modules/devices/storage.c:269 msgid "Advanced Power Management" msgstr "Avanceret strømstyring" #: modules/devices/storage.c:272 msgid "Automatic Acoustic Management" msgstr "Automatisk akustisk styring" #: modules/devices/storage.c:275 #, c-format msgid "" "[Drive Information]\n" "Model=%s\n" msgstr "" #: modules/devices/storage.c:285 #, c-format msgid "" "Revision=%s\n" "Block Device=%s\n" "Serial=%s\n" "Size=%s\n" "Features=%s\n" msgstr "" "Revision=%s\n" "Bloker enhed=%s\n" "Serial=%s\n" "Størrelse=%s\n" "Funktioner=%s\n" #: modules/devices/storage.c:300 #, c-format msgid "Rotation Rate=%d RPM\n" msgstr "Rotationshastighed=%d RPM\n" #: modules/devices/storage.c:303 #, c-format msgid "" "Media=%s\n" "Media compatibility=%s\n" msgstr "" "Media=%s\n" "Mediekompatibilitet=%s\n" #: modules/devices/storage.c:310 #, c-format msgid "Connection bus=%s\n" msgstr "Forbindelsesbus=%s\n" #: modules/devices/storage.c:322 msgid "WWN" msgstr "" #: modules/devices/storage.c:323 msgid "EUI " msgstr "" #: modules/devices/storage.c:328 msgid "WWN / EUI" msgstr "" #: modules/devices/storage.c:332 #, c-format msgid "$^$%s=[%s] %s\n" msgstr "" #: modules/devices/storage.c:334 msgid "IEEE OUI" msgstr "" #: modules/devices/storage.c:346 msgid "" "[Self-monitoring (S.M.A.R.T.)]\n" "Status=%s\n" "Bad Sectors=%" msgstr "" "[Selvovervågning (S.M.A.R.T.)]\n" "Status=%s\n" "Dårlige sektorer=%" #: modules/devices/storage.c:352 msgid "Failing" msgstr "Svigter" #: modules/devices/storage.c:352 msgid "OK" msgstr "" #: modules/devices/storage.c:358 msgid "" "[S.M.A.R.T. Attributes]\n" "Attribute=Value / Normalized / Worst / Threshold\n" msgstr "" "[S.M.A.R.T. Attributes]\n" "Attribute=Værdi / Normaliceret / Værst / Grænseværdi\n" #: modules/devices/storage.c:381 msgid "%" msgid_plural "%" msgstr[0] "" msgstr[1] "" #: modules/devices/storage.c:419 #, c-format msgid "(%d) %s=%s\n" msgstr "" #: modules/devices/storage.c:428 #, c-format msgid "" "[Partition table]\n" "Type=%s\n" msgstr "" "[Partitionstabel]\n" "Type=%s\n" #: modules/devices/storage.c:447 #, c-format msgid "Partition %s=%s\n" msgstr "" #: modules/devices/storage.c:496 msgid "" "\n" "[SCSI Disks]\n" msgstr "" "\n" "[SCSI-diske]\n" #: modules/devices/storage.c:567 modules/devices/storage.c:773 #, c-format msgid "" "[Device Information]\n" "Model=%s\n" msgstr "" "[Enhedsoplysninger]\n" "Model=%s\n" #: modules/devices/storage.c:574 #, c-format msgid "" "Type=%s\n" "Revision=%s\n" "[SCSI Controller]\n" "Controller=scsi%d\n" "Channel=%d\n" "ID=%d\n" "LUN=%d\n" msgstr "" "Type=%s\n" "Revision=%s\n" "[SCSI-controller]\n" "Controller=scsi%d\n" "Kanal=%d\n" "ID=%d\n" "LUN=%d\n" #: modules/devices/storage.c:621 msgid "" "\n" "[IDE Disks]\n" msgstr "" "\n" "[IDE-diske]\n" #: modules/devices/storage.c:707 #, c-format msgid "Driver=%s\n" msgstr "" #: modules/devices/storage.c:779 #, c-format msgid "" "Device Name=hd%c\n" "Media=%s\n" "Cache=%dkb\n" msgstr "" "Enhedsnavn=hd%c\n" "Media=%s\n" "Cache=%dkb\n" #: modules/devices/storage.c:789 #, c-format msgid "" "[Geometry]\n" "Physical=%s\n" "Logical=%s\n" msgstr "" "[Geometri]\n" "Fysisk=%s\n" "Logisk=%s\n" #: modules/devices/storage.c:799 #, c-format msgid "" "[Capabilities]\n" "%s" msgstr "" "[Kompetencer]\n" "%s" #: modules/devices/storage.c:806 #, c-format msgid "" "[Speeds]\n" "%s" msgstr "" "[Hastigheder]\n" "%s" #: modules/devices/usb.c:137 modules/devices/usb.c:178 msgid "Sub-class" msgstr "Underklasse" #: modules/devices/usb.c:138 modules/devices/usb.c:179 modules/network.c:348 msgid "Protocol" msgstr "Protokol" #: modules/devices/usb.c:146 modules/network/net.c:474 msgid "Mb/s" msgstr "" #: modules/devices/usb.c:174 msgid "Max Current" msgstr "Max Strøm" #: modules/devices/usb.c:174 msgid "mA" msgstr "" #: modules/devices/usb.c:175 msgid "USB Version" msgstr "USB-version" #: modules/devices/usb.c:180 msgid "Device Version" msgstr "Enhedsversion" #: modules/devices/usb.c:222 msgid "No USB devices found." msgstr "Ingen USB-enheder fundet." #: modules/devices/x86/processor.c:648 msgid "Model Name" msgstr "" #: modules/devices/x86/processor.c:649 msgid "Family, model, stepping" msgstr "" #: modules/devices/x86/processor.c:655 msgid "Microcode Version" msgstr "" #: modules/devices/x86/processor.c:656 msgid "Configuration" msgstr "" #: modules/devices/x86/processor.c:657 msgid "Cache Size" msgstr "" #: modules/devices/x86/processor.c:657 msgid "kb" msgstr "" #: modules/devices/x86/processor.c:665 msgid "Bug Workarounds" msgstr "" #: modules/devices/x86/processor.c:692 msgid "Socket Information" msgstr "" #: modules/devices/x86/processor.c:695 msgid "(Not available; Perhaps try running hardinfo2 as root.)" msgstr "" #: modules/devices/x86/processor.c:713 msgid "CPU Socket" msgstr "" #: modules/devices/x86/processor.c:717 msgid "External Clock" msgstr "" #: modules/devices/x86/processor.c:718 msgid "Max Frequency" msgstr "" #: modules/devices/x86/processor.c:749 msgid "Package Information" msgstr "" #. !/flag:fpu #: modules/devices/x86/x86_data.c:48 msgctxt "x86-flag" msgid "Onboard FPU (floating point support)" msgstr "" #. !/flag:vme #: modules/devices/x86/x86_data.c:49 msgctxt "x86-flag" msgid "Virtual 8086 mode enhancements" msgstr "" #. !/flag:de #: modules/devices/x86/x86_data.c:50 msgctxt "x86-flag" msgid "Debugging Extensions (CR4.DE)" msgstr "" #. !/flag:pse #: modules/devices/x86/x86_data.c:51 msgctxt "x86-flag" msgid "Page Size Extensions (4MB memory pages)" msgstr "" #. !/flag:tsc #: modules/devices/x86/x86_data.c:52 msgctxt "x86-flag" msgid "Time Stamp Counter (RDTSC)" msgstr "" #. !/flag:msr #: modules/devices/x86/x86_data.c:53 msgctxt "x86-flag" msgid "Model-Specific Registers (RDMSR, WRMSR)" msgstr "Modelspecifikke registre (RDMSR, WRMSR)" #. !/flag:pae #: modules/devices/x86/x86_data.c:54 msgctxt "x86-flag" msgid "Physical Address Extensions (support for more than 4GB of RAM)" msgstr "Physical Address Extensions (understøttelse af mere end 4 GB RAM)" #. !/flag:mce #: modules/devices/x86/x86_data.c:55 msgctxt "x86-flag" msgid "Machine Check Exception" msgstr "Udtagelse af maskinkontrol" #. !/flag:cx8 #: modules/devices/x86/x86_data.c:56 msgctxt "x86-flag" msgid "CMPXCHG8 instruction (64-bit compare-and-swap)" msgstr "CMPXCHG8 instruktion (64-bit sammenligne-og-bytte)" #. !/flag:apic #: modules/devices/x86/x86_data.c:57 msgctxt "x86-flag" msgid "Onboard APIC" msgstr "" #. !/flag:sep #: modules/devices/x86/x86_data.c:58 msgctxt "x86-flag" msgid "SYSENTER/SYSEXIT" msgstr "" #. !/flag:mtrr #: modules/devices/x86/x86_data.c:59 msgctxt "x86-flag" msgid "Memory Type Range Registers" msgstr "" #. !/flag:pge #: modules/devices/x86/x86_data.c:60 msgctxt "x86-flag" msgid "Page Global Enable (global bit in PDEs and PTEs)" msgstr "Page Global Enable (global bit i PDE'er og PTE'er)" #. !/flag:mca #: modules/devices/x86/x86_data.c:61 msgctxt "x86-flag" msgid "Machine Check Architecture" msgstr "Maskintjek arkitektur" #. !/flag:cmov #: modules/devices/x86/x86_data.c:62 msgctxt "x86-flag" msgid "CMOV instructions (conditional move) (also FCMOV)" msgstr "CMOV instruktioner (betinget træk) (også FCMOV)" #. !/flag:pat #: modules/devices/x86/x86_data.c:63 msgctxt "x86-flag" msgid "Page Attribute Table" msgstr "Sideattributtabel" #. !/flag:pse36 #: modules/devices/x86/x86_data.c:64 msgctxt "x86-flag" msgid "36-bit PSEs (huge pages)" msgstr "36-bit PSE'er (store sider)" #. !/flag:pn #: modules/devices/x86/x86_data.c:65 msgctxt "x86-flag" msgid "Processor serial number" msgstr "Processorens serienummer" #. !/flag:clflush #: modules/devices/x86/x86_data.c:66 msgctxt "x86-flag" msgid "Cache Line Flush instruction" msgstr "Cache Line Flush instruktion" #. !/flag:dts #: modules/devices/x86/x86_data.c:67 msgctxt "x86-flag" msgid "" "Debug Store (buffer for debugging and profiling instructions), or " "alternately: digital thermal sensor" msgstr "" "Debug Store (buffer til debugging og profileringsinstruktioner), eller " "alternativt: digital termisk sensor" #. !/flag:acpi #: modules/devices/x86/x86_data.c:68 msgctxt "x86-flag" msgid "ACPI via MSR (temperature monitoring and clock speed modulation)" msgstr "ACPI via MSR (temperaturovervågning og clockhastighedsmodulation)" #. !/flag:mmx #: modules/devices/x86/x86_data.c:69 msgctxt "x86-flag" msgid "Multimedia Extensions" msgstr "Multimedieudvidelser" #. !/flag:fxsr #: modules/devices/x86/x86_data.c:70 msgctxt "x86-flag" msgid "FXSAVE/FXRSTOR, CR4.OSFXSR" msgstr "" #. !/flag:sse #: modules/devices/x86/x86_data.c:71 msgctxt "x86-flag" msgid "Intel SSE vector instructions" msgstr "Intel SSE vektor instruktioner" #. !/flag:sse2 #: modules/devices/x86/x86_data.c:72 msgctxt "x86-flag" msgid "SSE2" msgstr "" #. !/flag:ss #: modules/devices/x86/x86_data.c:73 msgctxt "x86-flag" msgid "CPU self snoop" msgstr "CPU selv snoop" #. !/flag:ht #: modules/devices/x86/x86_data.c:74 msgctxt "x86-flag" msgid "Hyper-Threading" msgstr "" #. !/flag:tm #: modules/devices/x86/x86_data.c:75 msgctxt "x86-flag" msgid "Automatic clock control (Thermal Monitor)" msgstr "Automatisk urkontrol (Thermal Monitor)" #. !/flag:ia64 #: modules/devices/x86/x86_data.c:76 msgctxt "x86-flag" msgid "" "Intel Itanium Architecture 64-bit (not to be confused with Intel's 64-bit x86 " "architecture with flag x86-64 or \"AMD64\" bit indicated by flag lm)" msgstr "" "Intel Itanium Architecture 64-bit (ikke at forveksle med Intels 64-bit x86-" "arkitektur med flag x86-64 eller \"AMD64\" bit angivet med flag lm)" #. !/flag:pbe #: modules/devices/x86/x86_data.c:77 msgctxt "x86-flag" msgid "Pending Break Enable (PBE# pin) wakeup support" msgstr "Pending Break Enable (PBE" #. !/flag:syscall #: modules/devices/x86/x86_data.c:80 msgctxt "x86-flag" msgid "SYSCALL (Fast System Call) and SYSRET (Return From Fast System Call)" msgstr "" #. !/flag:mp #: modules/devices/x86/x86_data.c:81 msgctxt "x86-flag" msgid "Multiprocessing Capable." msgstr "" #. !/flag:nx #: modules/devices/x86/x86_data.c:82 msgctxt "x86-flag" msgid "Execute Disable" msgstr "" #. !/flag:mmxext #: modules/devices/x86/x86_data.c:83 msgctxt "x86-flag" msgid "AMD MMX extensions" msgstr "" #. !/flag:fxsr_opt #: modules/devices/x86/x86_data.c:84 msgctxt "x86-flag" msgid "FXSAVE/FXRSTOR optimizations" msgstr "" #. !/flag:pdpe1gb #: modules/devices/x86/x86_data.c:85 msgctxt "x86-flag" msgid "One GB pages (allows hugepagesz=1G)" msgstr "" #. !/flag:rdtscp #: modules/devices/x86/x86_data.c:86 msgctxt "x86-flag" msgid "Read Time-Stamp Counter and Processor ID" msgstr "" #. !/flag:lm #: modules/devices/x86/x86_data.c:87 msgctxt "x86-flag" msgid "Long Mode (x86-64: amd64, also known as Intel 64, i.e. 64-bit capable)" msgstr "" #. !/flag:3dnow #: modules/devices/x86/x86_data.c:88 msgctxt "x86-flag" msgid "3DNow! (AMD vector instructions, competing with Intel's SSE1)" msgstr "3DNow! " #. !/flag:3dnowext #: modules/devices/x86/x86_data.c:89 msgctxt "x86-flag" msgid "AMD 3DNow! extensions" msgstr "AMD 3DNow! " #. !/flag:recovery #: modules/devices/x86/x86_data.c:91 msgctxt "x86-flag" msgid "CPU in recovery mode" msgstr "CPU i gendannelsestilstand" #. !/flag:longrun #: modules/devices/x86/x86_data.c:92 msgctxt "x86-flag" msgid "Longrun power control" msgstr "" #. !/flag:lrti #: modules/devices/x86/x86_data.c:93 msgctxt "x86-flag" msgid "LongRun table interface" msgstr "LongRun tabelgrænseflade" #. !/flag:cxmmx #: modules/devices/x86/x86_data.c:95 msgctxt "x86-flag" msgid "Cyrix MMX extensions" msgstr "Cyrix MMX udvidelser" #. !/flag:k6_mtrr #: modules/devices/x86/x86_data.c:96 msgctxt "x86-flag" msgid "AMD K6 nonstandard MTRRs" msgstr "AMD K6 ikke-standard MTRR'er" #. !/flag:cyrix_arr #: modules/devices/x86/x86_data.c:97 msgctxt "x86-flag" msgid "Cyrix ARRs (= MTRRs)" msgstr "Cyrix ARR'er (= MTRR'er)" #. !/flag:centaur_mcr #: modules/devices/x86/x86_data.c:98 msgctxt "x86-flag" msgid "Centaur MCRs (= MTRRs)" msgstr "Centaur MCR'er (= MTRR'er)" #. !/flag:constant_tsc #: modules/devices/x86/x86_data.c:99 msgctxt "x86-flag" msgid "TSC ticks at a constant rate" msgstr "TSC tikker med konstant hastighed" #. !/flag:up #: modules/devices/x86/x86_data.c:100 msgctxt "x86-flag" msgid "SMP kernel running on UP" msgstr "SMP-kerne kører på UP" #. !/flag:art #: modules/devices/x86/x86_data.c:101 msgctxt "x86-flag" msgid "Always-Running Timer" msgstr "Always-running timer" #. !/flag:arch_perfmon #: modules/devices/x86/x86_data.c:102 msgctxt "x86-flag" msgid "Intel Architectural PerfMon" msgstr "" #. !/flag:pebs #: modules/devices/x86/x86_data.c:103 msgctxt "x86-flag" msgid "Precise-Event Based Sampling" msgstr "Præcis-hændelsesbaseret prøveudtagning" #. !/flag:bts #: modules/devices/x86/x86_data.c:104 msgctxt "x86-flag" msgid "Branch Trace Store" msgstr "" #. !/flag:rep_good #: modules/devices/x86/x86_data.c:105 msgctxt "x86-flag" msgid "rep microcode works well" msgstr "rep mikrokode fungerer godt" #. !/flag:acc_power #: modules/devices/x86/x86_data.c:106 msgctxt "x86-flag" msgid "AMD accumulated power mechanism" msgstr "AMD akkumuleret kraftmekanisme" #. !/flag:nopl #: modules/devices/x86/x86_data.c:107 msgctxt "x86-flag" msgid "The NOPL (0F 1F) instructions" msgstr "NOPL (0F 1F) instruktionerne" #. !/flag:xtopology #: modules/devices/x86/x86_data.c:108 msgctxt "x86-flag" msgid "cpu topology enum extensions" msgstr "cpu topologi enum extensions" #. !/flag:tsc_reliable #: modules/devices/x86/x86_data.c:109 msgctxt "x86-flag" msgid "TSC is known to be reliable" msgstr "TSC er kendt for at være pålidelig" #. !/flag:nonstop_tsc #: modules/devices/x86/x86_data.c:110 msgctxt "x86-flag" msgid "TSC does not stop in C states" msgstr "TSC stopper ikke i C-tilstande" #. !/flag:extd_apicid #: modules/devices/x86/x86_data.c:111 msgctxt "x86-flag" msgid "has extended APICID (8 bits)" msgstr "har udvidet APICID (8 bit)" #. !/flag:amd_dcm #: modules/devices/x86/x86_data.c:112 msgctxt "x86-flag" msgid "multi-node processor" msgstr "" #. !/flag:aperfmperf #: modules/devices/x86/x86_data.c:113 msgctxt "x86-flag" msgid "APERFMPERF" msgstr "" #. !/flag:eagerfpu #: modules/devices/x86/x86_data.c:114 msgctxt "x86-flag" msgid "Non lazy FPU restore" msgstr "Ikke doven FPU-gendannelse" #. !/flag:nonstop_tsc_s3 #: modules/devices/x86/x86_data.c:115 msgctxt "x86-flag" msgid "TSC doesn't stop in S3 state" msgstr "TSC stopper ikke i S3-tilstand" #. !/flag:mce_recovery #: modules/devices/x86/x86_data.c:116 msgctxt "x86-flag" msgid "CPU has recoverable machine checks" msgstr "CPU har gendannes maskintjek" #. !/flag:pni #: modules/devices/x86/x86_data.c:119 msgctxt "x86-flag" msgid "SSE-3 (\"Prescott New Instructions\")" msgstr "" #. !/flag:pclmulqdq #: modules/devices/x86/x86_data.c:120 msgctxt "x86-flag" msgid "" "Perform a Carry-Less Multiplication of Quadword instruction - accelerator for " "GCM)" msgstr "" "Udfør en Carry-Less Multiplikation af Quadword-instruktion - accelerator for " "GCM)" #. !/flag:dtes64 #: modules/devices/x86/x86_data.c:121 msgctxt "x86-flag" msgid "64-bit Debug Store" msgstr "" #. !/flag:monitor #: modules/devices/x86/x86_data.c:122 msgctxt "x86-flag" msgid "Monitor/Mwait support (Intel SSE3 supplements)" msgstr "Monitor/Mwait-understøttelse (Intel SSE3-tillæg)" #. !/flag:ds_cpl #: modules/devices/x86/x86_data.c:123 msgctxt "x86-flag" msgid "CPL Qual. Debug Store" msgstr "CPL Qual. " #. !/flag:vmx #: modules/devices/x86/x86_data.c:124 msgctxt "x86-flag" msgid "Hardware virtualization, Intel VMX" msgstr "Hardwarevirtualisering, Intel VMX" #. !/flag:smx #: modules/devices/x86/x86_data.c:125 msgctxt "x86-flag" msgid "Safer mode TXT (TPM support)" msgstr "Safer mode TXT (TPM-understøttelse)" #. !/flag:est #: modules/devices/x86/x86_data.c:126 msgctxt "x86-flag" msgid "Enhanced SpeedStep" msgstr "" #. !/flag:tm2 #: modules/devices/x86/x86_data.c:127 msgctxt "x86-flag" msgid "Thermal Monitor 2" msgstr "Termisk skærm 2" #. !/flag:ssse3 #: modules/devices/x86/x86_data.c:128 msgctxt "x86-flag" msgid "Supplemental SSE-3" msgstr "Supplerende SSE-3" #. !/flag:cid #: modules/devices/x86/x86_data.c:129 msgctxt "x86-flag" msgid "Context ID" msgstr "Kontekst-id" #. !/flag:sdbg #: modules/devices/x86/x86_data.c:130 msgctxt "x86-flag" msgid "silicon debug" msgstr "silicium debug" #. !/flag:fma #: modules/devices/x86/x86_data.c:131 msgctxt "x86-flag" msgid "Fused multiply-add" msgstr "Smeltet multiplicer-add" #. !/flag:cx16 #: modules/devices/x86/x86_data.c:132 msgctxt "x86-flag" msgid "CMPXCHG16B" msgstr "" #. !/flag:xtpr #: modules/devices/x86/x86_data.c:133 msgctxt "x86-flag" msgid "Send Task Priority Messages" msgstr "Send meddelelser om opgaveprioritet" #. !/flag:pdcm #: modules/devices/x86/x86_data.c:134 msgctxt "x86-flag" msgid "Performance Capabilities" msgstr "Ydeevne" #. !/flag:pcid #: modules/devices/x86/x86_data.c:135 msgctxt "x86-flag" msgid "Process Context Identifiers" msgstr "Proceskontekstidentifikatorer" #. !/flag:dca #: modules/devices/x86/x86_data.c:136 msgctxt "x86-flag" msgid "Direct Cache Access" msgstr "Direkte Cache-adgang" #. !/flag:sse4_1 #: modules/devices/x86/x86_data.c:137 msgctxt "x86-flag" msgid "SSE-4.1" msgstr "" #. !/flag:sse4_2 #: modules/devices/x86/x86_data.c:138 msgctxt "x86-flag" msgid "SSE-4.2" msgstr "" #. !/flag:x2apic #: modules/devices/x86/x86_data.c:139 msgctxt "x86-flag" msgid "x2APIC" msgstr "" #. !/flag:movbe #: modules/devices/x86/x86_data.c:140 msgctxt "x86-flag" msgid "Move Data After Swapping Bytes instruction" msgstr "Flyt data efter at have byttet bytes instruktion" #. !/flag:popcnt #: modules/devices/x86/x86_data.c:141 msgctxt "x86-flag" msgid "" "Return the Count of Number of Bits Set to 1 instruction (Hamming weight, i.e. " "bit count)" msgstr "" "Return antallet af bits indstillet til 1 instruktion (Hammingvægt, dvs. " "bitantal)" #: modules/devices/x86/x86_data.c:142 msgctxt "x86-flag" msgid "Tsc deadline timer" msgstr "" #. !/flag:aes/aes-ni #: modules/devices/x86/x86_data.c:143 msgctxt "x86-flag" msgid "Advanced Encryption Standard (New Instructions)" msgstr "Advanced Encryption Standard (nye instruktioner)" #. !/flag:xsave #: modules/devices/x86/x86_data.c:144 msgctxt "x86-flag" msgid "Save Processor Extended States: also provides XGETBY,XRSTOR,XSETBY" msgstr "Save Processor Extended States: giver også XGETBY,XRSTOR,XSETBY" #. !/flag:avx #: modules/devices/x86/x86_data.c:145 msgctxt "x86-flag" msgid "Advanced Vector Extensions" msgstr "Avancerede vektorudvidelser" #. !/flag:f16c #: modules/devices/x86/x86_data.c:146 msgctxt "x86-flag" msgid "16-bit fp conversions (CVT16)" msgstr "16-bit fp-konverteringer (CVT16)" #. !/flag:rdrand #: modules/devices/x86/x86_data.c:147 msgctxt "x86-flag" msgid "Read Random Number from hardware random number generator instruction" msgstr "" "Læs tilfældigt nummer fra hardware-instruktion til generator af tilfældige tal" #. !/flag:hypervisor #: modules/devices/x86/x86_data.c:148 msgctxt "x86-flag" msgid "Running on a hypervisor" msgstr "Kører på en hypervisor" #. !/flag:rng #: modules/devices/x86/x86_data.c:150 msgctxt "x86-flag" msgid "Random Number Generator present (xstore)" msgstr "Rendom Number Generator til stede (xstore)" #. !/flag:rng_en #: modules/devices/x86/x86_data.c:151 msgctxt "x86-flag" msgid "Random Number Generator enabled" msgstr "Random Number Generator aktiveret" #. !/flag:ace #: modules/devices/x86/x86_data.c:152 msgctxt "x86-flag" msgid "on-CPU crypto (xcrypt)" msgstr "on-CPU krypto (xcrypt)" #. !/flag:ace_en #: modules/devices/x86/x86_data.c:153 msgctxt "x86-flag" msgid "on-CPU crypto enabled" msgstr "on-CPU crypto aktiveret" #. !/flag:ace2 #: modules/devices/x86/x86_data.c:154 msgctxt "x86-flag" msgid "Advanced Cryptography Engine v2" msgstr "" #. !/flag:ace2_en #: modules/devices/x86/x86_data.c:155 msgctxt "x86-flag" msgid "ACE v2 enabled" msgstr "ACE v2 aktiveret" #. !/flag:phe #: modules/devices/x86/x86_data.c:156 msgctxt "x86-flag" msgid "PadLock Hash Engine" msgstr "" #. !/flag:phe_en #: modules/devices/x86/x86_data.c:157 msgctxt "x86-flag" msgid "PHE enabled" msgstr "PHE aktiveret" #. !/flag:pmm #: modules/devices/x86/x86_data.c:158 msgctxt "x86-flag" msgid "PadLock Montgomery Multiplier" msgstr "PadLock Montgomery Multiplikator" #. !/flag:pmm_en #: modules/devices/x86/x86_data.c:159 msgctxt "x86-flag" msgid "PMM enabled" msgstr "PMM aktiveret" #. !/flag:lahf_lm #: modules/devices/x86/x86_data.c:161 msgctxt "x86-flag" msgid "Load AH from Flags (LAHF) and Store AH into Flags (SAHF) in long mode" msgstr "Indlæs AH fra flag (LAHF) og gem AH i flag (SAHF) i lang tilstand" #. !/flag:cmp_legacy #: modules/devices/x86/x86_data.c:162 msgctxt "x86-flag" msgid "If yes HyperThreading not valid" msgstr "Hvis ja HyperThreading ikke gyldig" #. !/flag:svm #: modules/devices/x86/x86_data.c:163 msgctxt "x86-flag" msgid "\"Secure virtual machine\": AMD-V" msgstr "\"Sikker virtuel maskine\": AMD-V" #. !/flag:extapic #: modules/devices/x86/x86_data.c:164 msgctxt "x86-flag" msgid "Extended APIC space" msgstr "Udvidet APIC-plads" #. !/flag:cr8_legacy #: modules/devices/x86/x86_data.c:165 msgctxt "x86-flag" msgid "CR8 in 32-bit mode" msgstr "CR8 i 32-bit tilstand" #. !/flag:abm #: modules/devices/x86/x86_data.c:166 msgctxt "x86-flag" msgid "Advanced Bit Manipulation" msgstr "Avanceret bitmanipulation" #. !/flag:sse4a #: modules/devices/x86/x86_data.c:167 msgctxt "x86-flag" msgid "SSE-4A" msgstr "" #. !/flag:misalignsse #: modules/devices/x86/x86_data.c:168 msgctxt "x86-flag" msgid "" "indicates if a general-protection exception (#GP) is generated when some " "legacy SSE instructions operate on unaligned data. Also depends on CR0 and " "Alignment Checking bit" msgstr "angiver om en generel beskyttelsesundtagelse (" #. !/flag:3dnowprefetch #: modules/devices/x86/x86_data.c:169 msgctxt "x86-flag" msgid "3DNow prefetch instructions" msgstr "" #. !/flag:osvw #: modules/devices/x86/x86_data.c:170 msgctxt "x86-flag" msgid "" "indicates OS Visible Workaround, which allows the OS to work around processor " "errata." msgstr "" #. !/flag:ibs #: modules/devices/x86/x86_data.c:171 msgctxt "x86-flag" msgid "Instruction Based Sampling" msgstr "" #. !/flag:xop #: modules/devices/x86/x86_data.c:172 msgctxt "x86-flag" msgid "extended AVX instructions" msgstr "" #. !/flag:skinit #: modules/devices/x86/x86_data.c:173 msgctxt "x86-flag" msgid "SKINIT/STGI instructions" msgstr "" #. !/flag:wdt #: modules/devices/x86/x86_data.c:174 msgctxt "x86-flag" msgid "Watchdog timer" msgstr "" #. !/flag:lwp #: modules/devices/x86/x86_data.c:175 msgctxt "x86-flag" msgid "Light Weight Profiling" msgstr "" #. !/flag:fma4 #: modules/devices/x86/x86_data.c:176 msgctxt "x86-flag" msgid "4 operands MAC instructions" msgstr "" #. !/flag:tce #: modules/devices/x86/x86_data.c:177 msgctxt "x86-flag" msgid "translation cache extension" msgstr "" #. !/flag:nodeid_msr #: modules/devices/x86/x86_data.c:178 msgctxt "x86-flag" msgid "NodeId MSR" msgstr "" #. !/flag:tbm #: modules/devices/x86/x86_data.c:179 msgctxt "x86-flag" msgid "Trailing Bit Manipulation" msgstr "" #. !/flag:topoext #: modules/devices/x86/x86_data.c:180 msgctxt "x86-flag" msgid "Topology Extensions CPUID leafs" msgstr "Topology Extensions CPUID blade" #. !/flag:perfctr_core #: modules/devices/x86/x86_data.c:181 msgctxt "x86-flag" msgid "Core Performance Counter Extensions" msgstr "" #. !/flag:perfctr_nb #: modules/devices/x86/x86_data.c:182 msgctxt "x86-flag" msgid "NB Performance Counter Extensions" msgstr "" #. !/flag:bpext #: modules/devices/x86/x86_data.c:183 msgctxt "x86-flag" msgid "data breakpoint extension" msgstr "udvidelse af databrudpunkt" #. !/flag:ptsc #: modules/devices/x86/x86_data.c:184 msgctxt "x86-flag" msgid "performance time-stamp counter" msgstr "tidsstempeltæller for ydeevne" #. !/flag:perfctr_l2 #: modules/devices/x86/x86_data.c:185 msgctxt "x86-flag" msgid "L2 Performance Counter Extensions" msgstr "" #. !/flag:mwaitx #: modules/devices/x86/x86_data.c:186 msgctxt "x86-flag" msgid "MWAIT extension (MONITORX/MWAITX)" msgstr "MWAIT udvidelse (MONITORX/MWAITX)" #. !/flag:cpb #: modules/devices/x86/x86_data.c:188 msgctxt "x86-flag" msgid "AMD Core Performance Boost" msgstr "" #. !/flag:epb #: modules/devices/x86/x86_data.c:189 msgctxt "x86-flag" msgid "IA32_ENERGY_PERF_BIAS support" msgstr "IA32_ENERGY_PERF_BIAS understøttelse" #. !/flag:hw_pstate #: modules/devices/x86/x86_data.c:190 msgctxt "x86-flag" msgid "AMD HW-PState" msgstr "AMD HW-PSstate" #. !/flag:proc_feedback #: modules/devices/x86/x86_data.c:191 msgctxt "x86-flag" msgid "AMD ProcFeedbackInterface" msgstr "AMD ProcFeedback Interface" #. !/flag:intel_pt #: modules/devices/x86/x86_data.c:192 msgctxt "x86-flag" msgid "Intel Processor Tracing" msgstr "Intel-processorsporing" #. !/flag:tpr_shadow #: modules/devices/x86/x86_data.c:194 msgctxt "x86-flag" msgid "Intel TPR Shadow" msgstr "" #. !/flag:vnmi #: modules/devices/x86/x86_data.c:195 msgctxt "x86-flag" msgid "Intel Virtual NMI" msgstr "" #. !/flag:flexpriority #: modules/devices/x86/x86_data.c:196 msgctxt "x86-flag" msgid "Intel FlexPriority" msgstr "" #. !/flag:ept #: modules/devices/x86/x86_data.c:197 msgctxt "x86-flag" msgid "Intel Extended Page Table" msgstr "Intel udvidet sidetabel" #. !/flag:vpid #: modules/devices/x86/x86_data.c:198 msgctxt "x86-flag" msgid "Intel Virtual Processor ID" msgstr "" #. !/flag:vmmcall #: modules/devices/x86/x86_data.c:199 msgctxt "x86-flag" msgid "prefer VMMCALL to VMCALL" msgstr "foretrækker VMMCALL frem for VMCALL" #. !/flag:fsgsbase #: modules/devices/x86/x86_data.c:201 msgctxt "x86-flag" msgid "{RD/WR}{FS/GS}BASE instructions" msgstr "{RD/WR}{FS/GS}BASE-instruktioner" #. !/flag:tsc_adjust #: modules/devices/x86/x86_data.c:202 msgctxt "x86-flag" msgid "TSC adjustment MSR" msgstr "TSC justering MSR" #. !/flag:bmi1 #: modules/devices/x86/x86_data.c:203 msgctxt "x86-flag" msgid "1st group bit manipulation extensions" msgstr "1. gruppe bitmanipulationsudvidelser" #. !/flag:hle #: modules/devices/x86/x86_data.c:204 msgctxt "x86-flag" msgid "Hardware Lock Elision" msgstr "" #. !/flag:avx2 #: modules/devices/x86/x86_data.c:205 msgctxt "x86-flag" msgid "AVX2 instructions" msgstr "AVX2 instruktioner" #. !/flag:smep #: modules/devices/x86/x86_data.c:206 msgctxt "x86-flag" msgid "Supervisor Mode Execution Protection" msgstr "" #. !/flag:bmi2 #: modules/devices/x86/x86_data.c:207 msgctxt "x86-flag" msgid "2nd group bit manipulation extensions" msgstr "2. gruppe bitmanipulationsudvidelser" #. !/flag:erms #: modules/devices/x86/x86_data.c:208 msgctxt "x86-flag" msgid "Enhanced REP MOVSB/STOSB" msgstr "Forbedret REP MOVSB/STOSB" #. !/flag:invpcid #: modules/devices/x86/x86_data.c:209 msgctxt "x86-flag" msgid "Invalidate Processor Context ID" msgstr "Ugyldiggør processorkontekst-id" #. !/flag:rtm #: modules/devices/x86/x86_data.c:210 msgctxt "x86-flag" msgid "Restricted Transactional Memory" msgstr "Begrænset transaktionshukommelse" #. !/flag:cqm #: modules/devices/x86/x86_data.c:211 msgctxt "x86-flag" msgid "Cache QoS Monitoring" msgstr "Cache QoS-overvågning" #. !/flag:mpx #: modules/devices/x86/x86_data.c:212 msgctxt "x86-flag" msgid "Memory Protection Extension" msgstr "Udvidelse til hukommelsesbeskyttelse" #. !/flag:avx512f #: modules/devices/x86/x86_data.c:213 msgctxt "x86-flag" msgid "AVX-512 foundation" msgstr "AVX-512 fundament" #. !/flag:avx512dq #: modules/devices/x86/x86_data.c:214 msgctxt "x86-flag" msgid "AVX-512 Double/Quad instructions" msgstr "AVX-512 Dobbelt/Quad instruktioner" #. !/flag:rdseed #: modules/devices/x86/x86_data.c:215 msgctxt "x86-flag" msgid "The RDSEED instruction" msgstr "RDSEED-instruktionen" #. !/flag:adx #: modules/devices/x86/x86_data.c:216 msgctxt "x86-flag" msgid "The ADCX and ADOX instructions" msgstr "ADCX- og ADOX-instruktionerne" #. !/flag:smap #: modules/devices/x86/x86_data.c:217 msgctxt "x86-flag" msgid "Supervisor Mode Access Prevention" msgstr "Forebyggelse af adgang til supervisortilstand" #. !/flag:clflushopt #: modules/devices/x86/x86_data.c:218 msgctxt "x86-flag" msgid "CLFLUSHOPT instruction" msgstr "CLFLUSHOPT instruktion" #. !/flag:clwb #: modules/devices/x86/x86_data.c:219 msgctxt "x86-flag" msgid "CLWB instruction" msgstr "CLWB instruktion" #. !/flag:avx512pf #: modules/devices/x86/x86_data.c:220 msgctxt "x86-flag" msgid "AVX-512 Prefetch" msgstr "" #. !/flag:avx512er #: modules/devices/x86/x86_data.c:221 msgctxt "x86-flag" msgid "AVX-512 Exponential and Reciprocal" msgstr "AVX-512 Eksponentiel og gensidig" #. !/flag:avx512cd #: modules/devices/x86/x86_data.c:222 msgctxt "x86-flag" msgid "AVX-512 Conflict Detection" msgstr "AVX-512 Konfliktdetektion" #. !/flag:sha_ni #: modules/devices/x86/x86_data.c:223 msgctxt "x86-flag" msgid "SHA1/SHA256 Instruction Extensions" msgstr "SHA1/SHA256 Instruktionsudvidelser" #. !/flag:avx512bw #: modules/devices/x86/x86_data.c:224 msgctxt "x86-flag" msgid "AVX-512 Byte/Word instructions" msgstr "AVX-512 Byte/Word instruktioner" #. !/flag:avx512vl #: modules/devices/x86/x86_data.c:225 msgctxt "x86-flag" msgid "AVX-512 128/256 Vector Length extensions" msgstr "AVX-512 128/256 Vector Længde forlængere" #. !/flag:xsaveopt #: modules/devices/x86/x86_data.c:227 msgctxt "x86-flag" msgid "Optimized XSAVE" msgstr "Optimeret XSAVE" #. !/flag:xsavec #: modules/devices/x86/x86_data.c:228 msgctxt "x86-flag" msgid "XSAVEC" msgstr "" #. !/flag:xgetbv1 #: modules/devices/x86/x86_data.c:229 msgctxt "x86-flag" msgid "XGETBV with ECX = 1" msgstr "XGETBV med ECX = 1" #. !/flag:xsaves #: modules/devices/x86/x86_data.c:230 msgctxt "x86-flag" msgid "XSAVES/XRSTORS" msgstr "" #. !/flag:cqm_llc #: modules/devices/x86/x86_data.c:232 msgctxt "x86-flag" msgid "LLC QoS" msgstr "" #. !/flag:cqm_occup_llc #: modules/devices/x86/x86_data.c:234 msgctxt "x86-flag" msgid "LLC occupancy monitoring" msgstr "LLC belægningsovervågning" #. !/flag:cqm_mbm_total #: modules/devices/x86/x86_data.c:235 msgctxt "x86-flag" msgid "LLC total MBM monitoring" msgstr "LLC total MBM-overvågning" #. !/flag:cqm_mbm_local #: modules/devices/x86/x86_data.c:236 msgctxt "x86-flag" msgid "LLC local MBM monitoring" msgstr "LLC lokal MBM-overvågning" #. !/flag:clzero #: modules/devices/x86/x86_data.c:238 msgctxt "x86-flag" msgid "CLZERO instruction" msgstr "CLZERO instruktion" #. !/flag:irperf #: modules/devices/x86/x86_data.c:239 msgctxt "x86-flag" msgid "instructions retired performance counter" msgstr "instruktioner pensioneret præstationstæller" #. !/flag:dtherm #: modules/devices/x86/x86_data.c:241 msgctxt "x86-flag" msgid "digital thermal sensor" msgstr "digital termisk sensor" #. !/flag:ida #: modules/devices/x86/x86_data.c:242 msgctxt "x86-flag" msgid "Intel Dynamic Acceleration" msgstr "" #. !/flag:arat #: modules/devices/x86/x86_data.c:243 msgctxt "x86-flag" msgid "Always Running APIC Timer" msgstr "Always running APIC Timer" #. !/flag:pln #: modules/devices/x86/x86_data.c:244 msgctxt "x86-flag" msgid "Intel Power Limit Notification" msgstr "" #. !/flag:pts #: modules/devices/x86/x86_data.c:245 msgctxt "x86-flag" msgid "Intel Package Thermal Status" msgstr "Intel-pakke termisk status" #. !/flag:hwp #: modules/devices/x86/x86_data.c:246 msgctxt "x86-flag" msgid "Intel Hardware P-states" msgstr "Intel Hardware P-tilstande" #. !/flag:hwp_notify #: modules/devices/x86/x86_data.c:247 msgctxt "x86-flag" msgid "HWP notification" msgstr "HWP-meddelelse" #. !/flag:hwp_act_window #: modules/devices/x86/x86_data.c:248 msgctxt "x86-flag" msgid "HWP Activity Window" msgstr "HWP aktivitetsvindue" #. !/flag:hwp_epp #: modules/devices/x86/x86_data.c:249 msgctxt "x86-flag" msgid "HWP Energy Performance Preference" msgstr "" #. !/flag:hwp_pkg_req #: modules/devices/x86/x86_data.c:250 msgctxt "x86-flag" msgid "HWP package-level request" msgstr "HWP anmodning på pakkeniveau" #. !/flag:npt #: modules/devices/x86/x86_data.c:252 msgctxt "x86-flag" msgid "AMD Nested Page Table support" msgstr "" #. !/flag:lbrv #: modules/devices/x86/x86_data.c:253 msgctxt "x86-flag" msgid "AMD LBR Virtualization support" msgstr "AMD LBR Virtualiseringsunderstøttelse" #. !/flag:svm_lock #: modules/devices/x86/x86_data.c:254 msgctxt "x86-flag" msgid "AMD SVM locking MSR" msgstr "AMD SVM låsende MSR" #. !/flag:nrip_save #: modules/devices/x86/x86_data.c:255 msgctxt "x86-flag" msgid "AMD SVM next_rip save" msgstr "AMD SVM next_rip gem" #. !/flag:tsc_scale #: modules/devices/x86/x86_data.c:256 msgctxt "x86-flag" msgid "AMD TSC scaling support" msgstr "AMD TSC-skaleringsunderstøttelse" #. !/flag:vmcb_clean #: modules/devices/x86/x86_data.c:257 msgctxt "x86-flag" msgid "AMD VMCB clean bits support" msgstr "AMD VMCB clean bits understøtter" #. !/flag:flushbyasid #: modules/devices/x86/x86_data.c:258 msgctxt "x86-flag" msgid "AMD flush-by-ASID support" msgstr "AMD flush-by-ASID-understøttelse" #. !/flag:decodeassists #: modules/devices/x86/x86_data.c:259 msgctxt "x86-flag" msgid "AMD Decode Assists support" msgstr "" #. !/flag:pausefilter #: modules/devices/x86/x86_data.c:260 msgctxt "x86-flag" msgid "AMD filtered pause intercept" msgstr "AMD-filtreret pauseaflytning" #. !/flag:pfthreshold #: modules/devices/x86/x86_data.c:261 msgctxt "x86-flag" msgid "AMD pause filter threshold" msgstr "AMD pausefiltertærskel" #. !/flag:avic #: modules/devices/x86/x86_data.c:262 msgctxt "x86-flag" msgid "Virtual Interrupt Controller" msgstr "" #. !/flag:pku #: modules/devices/x86/x86_data.c:264 msgctxt "x86-flag" msgid "Protection Keys for Userspace" msgstr "Beskyttelsesnøgler til brugerrum" #. !/flag:ospke #: modules/devices/x86/x86_data.c:265 msgctxt "x86-flag" msgid "OS Protection Keys Enable" msgstr "OS beskyttelsesnøgler aktiveret" #. !/flag:overflow_recov #: modules/devices/x86/x86_data.c:267 msgctxt "x86-flag" msgid "MCA overflow recovery support" msgstr "MCA overløbsgendannelsesstøtte" #. !/flag:succor #: modules/devices/x86/x86_data.c:268 msgctxt "x86-flag" msgid "uncorrectable error containment and recovery" msgstr "ukorrigerbar fejlindeholdelse og gendannelse" #. !/flag:smca #: modules/devices/x86/x86_data.c:269 msgctxt "x86-flag" msgid "Scalable MCA" msgstr "Skalerbar MCA" #. !/bug:f00f #: modules/devices/x86/x86_data.c:272 msgctxt "x86-flag" msgid "Intel F00F bug" msgstr "Intel F00F fejl" #. !/bug:fdiv #: modules/devices/x86/x86_data.c:273 msgctxt "x86-flag" msgid "FPU FDIV" msgstr "" #. !/bug:coma #: modules/devices/x86/x86_data.c:274 msgctxt "x86-flag" msgid "Cyrix 6x86 coma" msgstr "Cyrix 6x86 koma" #. !/bug:tlb_mmatch #: modules/devices/x86/x86_data.c:275 msgctxt "x86-flag" msgid "AMD Erratum 383" msgstr "" #. !/bug:apic_c1e #. !/bug:amd_e400 #: modules/devices/x86/x86_data.c:276 modules/devices/x86/x86_data.c:285 msgctxt "x86-flag" msgid "AMD Erratum 400" msgstr "" #. !/bug:11ap #: modules/devices/x86/x86_data.c:277 msgctxt "x86-flag" msgid "Bad local APIC aka 11AP" msgstr "Dårlig lokal APIC aka 11AP" #. !/bug:fxsave_leak #: modules/devices/x86/x86_data.c:278 msgctxt "x86-flag" msgid "FXSAVE leaks FOP/FIP/FOP" msgstr "FXSAVE lækker FOP/FIP/FOP" #. !/bug:clflush_monitor #: modules/devices/x86/x86_data.c:279 msgctxt "x86-flag" msgid "AAI65, CLFLUSH required before MONITOR" msgstr "AAI65, CLFLUSH påkrævet før MONITOR" #. !/bug:sysret_ss_attrs #: modules/devices/x86/x86_data.c:280 msgctxt "x86-flag" msgid "SYSRET doesn't fix up SS attrs" msgstr "SYSRET retter ikke SS-attr" #. !/bug:espfix #: modules/devices/x86/x86_data.c:281 msgctxt "x86-flag" msgid "IRET to 16-bit SS corrupts ESP/RSP high bits" msgstr "IRET til 16-bit SS korrumperer ESP/RSP høje bits" #. !/bug:null_seg #: modules/devices/x86/x86_data.c:282 msgctxt "x86-flag" msgid "Nulling a selector preserves the base" msgstr "Nulering af en vælger bevarer basen" #. !/bug:swapgs_fence #: modules/devices/x86/x86_data.c:283 msgctxt "x86-flag" msgid "SWAPGS without input dep on GS" msgstr "SWAPGS uden input dep på GS" #. !/bug:monitor #: modules/devices/x86/x86_data.c:284 msgctxt "x86-flag" msgid "IPI required to wake up remote CPU" msgstr "IPI påkrævet for at vække fjern-CPU" #. !/bug:cpu_insecure & bug:cpu_meltdown #: modules/devices/x86/x86_data.c:286 modules/devices/x86/x86_data.c:287 msgctxt "x86-flag" msgid "CPU is affected by meltdown attack and needs kernel page table isolation" msgstr "" "CPU er påvirket af nedsmeltningsangreb og har brug for isolering af " "kernesidetabel" #. !/bug:spectre_v1 #: modules/devices/x86/x86_data.c:288 msgctxt "x86-flag" msgid "CPU is affected by Spectre variant 1 attack with conditional branches" msgstr "CPU er påvirket af Spectre variant 1-angreb med betingede forgreninger" #. !/bug:spectre_v2 #: modules/devices/x86/x86_data.c:289 msgctxt "x86-flag" msgid "CPU is affected by Spectre variant 2 attack with indirect branches" msgstr "CPU er påvirket af Spectre variant 2-angreb med indirekte grene" #. !/bug:spec_store_bypass #: modules/devices/x86/x86_data.c:290 msgctxt "x86-flag" msgid "CPU is affected by speculative store bypass attack" msgstr "CPU er påvirket af spekulativt butiksbypass-angreb" #. !/bug:l1tf #: modules/devices/x86/x86_data.c:291 msgctxt "x86-flag" msgid "CPU is affected by L1 Terminal Fault" msgstr "CPU er påvirket af L1 Terminal Fault" #. !/flag:pm:ts #: modules/devices/x86/x86_data.c:294 msgctxt "x86-flag" msgid "temperature sensor" msgstr "temperaturføler" #. !/flag:pm:fid #: modules/devices/x86/x86_data.c:295 msgctxt "x86-flag" msgid "frequency id control" msgstr "frekvens id kontrol" #. !/flag:pm:vid #: modules/devices/x86/x86_data.c:296 msgctxt "x86-flag" msgid "voltage id control" msgstr "spændings-id kontrol" #. !/flag:pm:ttp #: modules/devices/x86/x86_data.c:297 msgctxt "x86-flag" msgid "thermal trip" msgstr "termisk tur" #. !/flag:pm:tm #: modules/devices/x86/x86_data.c:298 msgctxt "x86-flag" msgid "hardware thermal control" msgstr "termisk hardwarestyring" #. !/flag:pm:stc #: modules/devices/x86/x86_data.c:299 msgctxt "x86-flag" msgid "software thermal control" msgstr "software termisk kontrol" #. !/flag:pm:100mhzsteps #: modules/devices/x86/x86_data.c:300 msgctxt "x86-flag" msgid "100 MHz multiplier control" msgstr "100 MHz multiplikatorstyring" #. !/flag:pm:hwpstate #: modules/devices/x86/x86_data.c:301 msgctxt "x86-flag" msgid "hardware P-state control" msgstr "hardware P-tilstand kontrol" #. !/flag:pm:cpb #: modules/devices/x86/x86_data.c:302 msgctxt "x86-flag" msgid "core performance boost" msgstr "kerneydelsesforøgelse" #. !/flag:pm:eff_freq_ro #: modules/devices/x86/x86_data.c:303 msgctxt "x86-flag" msgid "Readonly aperf/mperf" msgstr "Læsebeskyttet aperf/perf" #. !/flag:pm:proc_feedback #: modules/devices/x86/x86_data.c:304 msgctxt "x86-flag" msgid "processor feedback interface" msgstr "" #. !/flag:pm:acc_power #: modules/devices/x86/x86_data.c:305 msgctxt "x86-flag" msgid "accumulated power mechanism" msgstr "akkumuleret kraftmekanisme" #: modules/network.c:61 msgid "Interfaces" msgstr "Grænseflader" #: modules/network.c:62 msgid "IP Connections" msgstr "IP-forbindelser" #: modules/network.c:63 msgid "Routing Table" msgstr "Rute Tabel" #: modules/network.c:64 modules/network.c:310 msgid "ARP Table" msgstr "ARP Tabel" #: modules/network.c:65 msgid "DNS Servers" msgstr "DNS-servere" #: modules/network.c:66 msgid "Statistics" msgstr "Statistik" #: modules/network.c:67 msgid "Shared Directories" msgstr "Delte mapper" #: modules/network.c:311 modules/network.c:333 modules/network.c:364 #: modules/network/net.c:495 msgid "IP Address" msgstr "IP-adresse" #: modules/network.c:311 msgid "MAC Address" msgstr "MAC-adresse" #: modules/network.c:320 msgid "SAMBA" msgstr "" #: modules/network.c:321 msgid "NFS" msgstr "" #: modules/network.c:332 msgid "Name Servers" msgstr "Navneservere" #: modules/network.c:347 msgid "Connections" msgstr "Forbindelser" #: modules/network.c:348 msgid "Local Address" msgstr "Lokal adresse" #: modules/network.c:348 msgid "Foreign Address" msgstr "Udlandsadresse" #: modules/network.c:348 msgid "State" msgstr "Stat" #: modules/network.c:364 msgid "Sent" msgstr "Sendt" #: modules/network.c:364 msgid "Received" msgstr "Modtaget" #: modules/network.c:380 msgid "IP routing table" msgstr "IP routing tabel" #: modules/network.c:381 msgid "Destination/Gateway" msgstr "" #: modules/network.c:381 modules/network/net.c:496 msgid "Mask" msgstr "Maske" #: modules/network.c:409 msgid "Network" msgstr "Netværk" #: modules/network.c:442 msgid "Gathers information about this computer's network connection" msgstr "Indsamler oplysninger om denne computers netværksforbindelse" #: modules/network/net.c:74 msgctxt "wi-op-mode" msgid "Auto" msgstr "" #: modules/network/net.c:75 msgctxt "wi-op-mode" msgid "Ad-Hoc" msgstr "Ad-hoc" #: modules/network/net.c:76 msgctxt "wi-op-mode" msgid "Managed" msgstr "Bestyret" #: modules/network/net.c:77 msgctxt "wi-op-mode" msgid "Master" msgstr "Mester" #: modules/network/net.c:78 msgctxt "wi-op-mode" msgid "Repeater" msgstr "" #: modules/network/net.c:79 msgctxt "wi-op-mode" msgid "Secondary" msgstr "Sekundær" #: modules/network/net.c:80 msgctxt "wi-op-mode" msgid "(Unknown)" msgstr "(Ukendt)" #: modules/network/net.c:268 modules/network/net.c:288 modules/network/net.c:296 msgctxt "net-if-type" msgid "Ethernet" msgstr "" #: modules/network/net.c:269 msgctxt "net-if-type" msgid "Loopback" msgstr "" #: modules/network/net.c:270 msgctxt "net-if-type" msgid "Point-to-Point" msgstr "Punkt-til-punkt" #: modules/network/net.c:271 modules/network/net.c:272 modules/network/net.c:273 #: modules/network/net.c:274 modules/network/net.c:298 msgctxt "net-if-type" msgid "Wireless" msgstr "Trådløs" #: modules/network/net.c:275 msgctxt "net-if-type" msgid "Virtual Point-to-Point (TUN)" msgstr "" #: modules/network/net.c:276 msgctxt "net-if-type" msgid "Ethernet (TAP)" msgstr "" #: modules/network/net.c:277 msgctxt "net-if-type" msgid "Parallel Line Internet Protocol" msgstr "" #: modules/network/net.c:278 msgctxt "net-if-type" msgid "Infrared" msgstr "Infrarød" #: modules/network/net.c:279 modules/network/net.c:297 msgctxt "net-if-type" msgid "Serial Line Internet Protocol" msgstr "" #: modules/network/net.c:280 msgctxt "net-if-type" msgid "Integrated Services Digital Network" msgstr "" #: modules/network/net.c:281 msgctxt "net-if-type" msgid "IPv6-over-IPv4 Tunnel" msgstr "IPv6-over-IPv4-tunnel" #: modules/network/net.c:282 msgctxt "net-if-type" msgid "VMWare Virtual Network Interface (NAT)" msgstr "" #: modules/network/net.c:283 msgctxt "net-if-type" msgid "VMWare Virtual Network Interface" msgstr "" #: modules/network/net.c:284 msgctxt "net-if-type" msgid "Personal Area Network (PAN)" msgstr "" #: modules/network/net.c:285 msgctxt "net-if-type" msgid "Bluetooth" msgstr "" #: modules/network/net.c:286 msgctxt "net-if-type" msgid "Bridge Interface" msgstr "Bridgegrænseflade" #: modules/network/net.c:287 msgctxt "net-if-type" msgid "Hamachi Virtual Personal Network" msgstr "" #: modules/network/net.c:289 msgctxt "net-if-type" msgid "Intermediate Functional Block" msgstr "Mellem funktionsblok" #: modules/network/net.c:290 msgctxt "net-if-type" msgid "GRE Network Tunnel" msgstr "GRE netværkstunnel" #: modules/network/net.c:291 msgctxt "net-if-type" msgid "Mesh Network" msgstr "Mesh netværk" #: modules/network/net.c:292 msgctxt "net-if-type" msgid "Wireless Master Interface" msgstr "Trådløs mastergrænseflade" #: modules/network/net.c:293 msgctxt "net-if-type" msgid "VirtualBox Virtual Network Interface" msgstr "" #: modules/network/net.c:299 msgctxt "net-if-type" msgid "Wireless (WAN)" msgstr "Trådløs (WAN)" #: modules/network/net.c:301 msgctxt "net-if-type" msgid "(Unknown)" msgstr "(Ukendt)" #: modules/network/net.c:364 modules/network/net.c:374 msgid "Network Interfaces" msgstr "Netværksgrænseflader" #: modules/network/net.c:364 msgid "None Found" msgstr "Ingen fundet" #: modules/network/net.c:431 msgid "Network Adapter Properties" msgstr "Netværksadapteregenskaber" #: modules/network/net.c:432 msgid "Interface Type" msgstr "Grænsefladetype" #: modules/network/net.c:433 msgid "Hardware Address (MAC)" msgstr "Hardwareadresse (MAC)" #: modules/network/net.c:437 msgid "MTU" msgstr "" #: modules/network/net.c:439 msgid "Transfer Details" msgstr "Overførselsoplysninger" #: modules/network/net.c:440 msgid "Bytes Received" msgstr "Bytes modtaget" #: modules/network/net.c:441 msgid "Bytes Sent" msgstr "Bytes sendt" #: modules/network/net.c:458 modules/network/net.c:480 modules/network/net.c:481 msgid "dBm" msgstr "" #: modules/network/net.c:458 msgid "mW" msgstr "" #: modules/network/net.c:472 msgid "Wireless Properties" msgstr "Trådløse egenskaber" #: modules/network/net.c:473 msgid "Network Name (SSID)" msgstr "Netværksnavn (SSID)" #: modules/network/net.c:474 msgid "Bit Rate" msgstr "Bithastighed" #: modules/network/net.c:475 msgid "Transmission Power" msgstr "Transmissionseffekt" #: modules/network/net.c:478 msgid "Link Quality" msgstr "Linkkvalitet" #: modules/network/net.c:479 msgid "Signal / Noise" msgstr "Signal / Støj" #: modules/network/net.c:494 msgid "Internet Protocol (IPv4)" msgstr "Internetprotokol (IPv4)" #: modules/network/net.c:495 modules/network/net.c:496 modules/network/net.c:498 msgid "(Not set)" msgstr "(Ikke indstillet)" #: modules/network/net.c:497 msgid "Broadcast Address" msgstr "Udsendelsesadresse" #: includes/spd-decode.h:28 msgid "RAM" msgstr "" #, c-format #~ msgid "" #~ "\n" #~ "[Battery: %s]\n" #~ "State=%s\n" #~ "Capacity=%s / %s\n" #~ "Battery Technology=%s\n" #~ "Manufacturer=%s\n" #~ "Model Number=%s\n" #~ "Serial Number=%s\n" #~ msgstr "" #~ "\n" #~ "[Batteri: %s]\n" #~ "State=%s\n" #~ "Kapacitet=%s / %s\n" #~ "Batteriteknologi=%s\n" #~ "Producent=%s\n" #~ "Modelnummer=%s\n" #~ "Serienummer=%s\n" #~ msgid "Resource information requires superuser privileges" #~ msgstr "Resourceinformation kræver superbrugerrettigheder" hardinfo2-hardinfo2-1331e88/po/de.po000066400000000000000000004504661474767047500171300ustar00rootroot00000000000000# German translations for PACKAGE package # German translation for PACKAGE. # Copyright (C) 2016 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Alexander Münch , 2016. # msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-10-06 01:42+0200\n" "PO-Revision-Date: 2016-06-10 12:11+0200\n" "Last-Translator: Alexander Münch \n" "Language-Team: German\n" "Language: de\n" "X-Poedit-Basepath: ../\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 1.8.7.1\n" #: hardinfo2/cpu_util.c:29 msgid "Little Endian" msgstr "" #: hardinfo2/cpu_util.c:31 msgid "Big Endian" msgstr "" #: hardinfo2/cpu_util.c:205 hardinfo2/cpu_util.c:216 modules/devices/gpu.c:262 msgid "Frequency Scaling" msgstr "" #: hardinfo2/cpu_util.c:206 modules/devices/gpu.c:263 msgid "Minimum" msgstr "" #: hardinfo2/cpu_util.c:206 hardinfo2/cpu_util.c:207 hardinfo2/cpu_util.c:208 #: hardinfo2/dt_util.c:590 modules/devices/gpu.c:263 modules/devices/gpu.c:264 msgid "kHz" msgstr "" #: hardinfo2/cpu_util.c:207 modules/devices/gpu.c:264 msgid "Maximum" msgstr "" #: hardinfo2/cpu_util.c:208 msgid "Current" msgstr "" #: hardinfo2/cpu_util.c:209 modules/devices/gpu.c:265 msgid "Transition Latency" msgstr "Übergangslatenz" #: hardinfo2/cpu_util.c:209 modules/devices/gpu.c:265 msgid "ns" msgstr "" #: hardinfo2/cpu_util.c:210 msgid "Governor" msgstr "" #: hardinfo2/cpu_util.c:211 hardinfo2/cpu_util.c:217 modules/devices.c:842 #: modules/devices/gpu.c:209 modules/devices/pci.c:148 #: modules/devices/usb.c:139 msgid "Driver" msgstr "Treiber" #: hardinfo2/cpu_util.c:223 modules/computer.c:801 #: modules/devices/arm/processor.c:255 modules/devices/e2k/processor.c:178 #: modules/devices/x86/processor.c:283 modules/devices/x86/processor.c:387 #: modules/devices/x86/processor.c:525 msgid "(Not Available)" msgstr "(Nicht verfügbar)" #: hardinfo2/cpu_util.c:231 hardinfo2/cpu_util.c:233 msgid "Socket" msgstr "Sockel" #: hardinfo2/cpu_util.c:236 hardinfo2/cpu_util.c:238 modules/devices/gpu.c:205 #: modules/devices/gpu.c:295 msgid "Core" msgstr "Kern" #: hardinfo2/cpu_util.c:241 msgid "Book" msgstr "" #: hardinfo2/cpu_util.c:243 msgid "Drawer" msgstr "Zeichner" #: hardinfo2/cpu_util.c:249 modules/devices/arm/processor.c:480 #: modules/devices/x86/processor.c:751 msgid "Topology" msgstr "Topologie" #: hardinfo2/cpu_util.c:250 msgid "ID" msgstr "" #: hardinfo2/dmi_util.c:25 msgid "BIOS Information" msgstr "" #: hardinfo2/dmi_util.c:26 modules/devices/parisc/processor.c:157 msgid "System" msgstr "" #: hardinfo2/dmi_util.c:27 msgid "Base Board" msgstr "Basisplatine" #: hardinfo2/dmi_util.c:28 modules/devices/dmi.c:54 msgid "Chassis" msgstr "" #: hardinfo2/dmi_util.c:29 modules/computer.c:580 modules/computer.c:1144 #: modules/devices/alpha/processor.c:87 modules/devices/arm/processor.c:340 #: modules/devices.c:99 modules/devices/e2k/processor.c:357 #: modules/devices/ia64/processor.c:159 #: modules/devices/loongarch64/processor.c:93 #: modules/devices/m68k/processor.c:83 modules/devices/mips/processor.c:74 #: modules/devices/parisc/processor.c:154 modules/devices/ppc/processor.c:157 #: modules/devices/riscv/processor.c:241 modules/devices/s390/processor.c:131 #: modules/devices/sh/processor.c:83 modules/devices/sparc/processor.c:74 #: modules/devices/x86/processor.c:647 msgid "Processor" msgstr "Prozessor" #: hardinfo2/dmi_util.c:30 msgid "Memory Controller" msgstr "Speichercontroller" #: hardinfo2/dmi_util.c:31 msgid "Memory Module" msgstr "Speichermodul" #: hardinfo2/dmi_util.c:32 modules/devices/e2k/processor.c:366 #: modules/devices/parisc/processor.c:163 modules/devices/x86/processor.c:663 msgid "Cache" msgstr "" #: hardinfo2/dmi_util.c:33 msgid "Port Connector" msgstr "Port-Anschluss" #: hardinfo2/dmi_util.c:34 msgid "System Slots" msgstr "Systemsteckplätze" #: hardinfo2/dmi_util.c:35 msgid "On Board Devices" msgstr "Onboard-Geräte" #: hardinfo2/dmi_util.c:36 msgid "OEM Strings" msgstr "" #: hardinfo2/dmi_util.c:37 msgid "System Configuration Options" msgstr "Systemkonfigurationsoptionen" #: hardinfo2/dmi_util.c:38 msgid "BIOS Language" msgstr "BIOS Sprache" #: hardinfo2/dmi_util.c:39 msgid "Group Associations" msgstr "Gruppenverbände" #: hardinfo2/dmi_util.c:40 msgid "System Event Log" msgstr "Systemereignisprotokoll" #: hardinfo2/dmi_util.c:41 msgid "Physical Memory Array" msgstr "Physisches Speicher-Array" #: hardinfo2/dmi_util.c:42 msgid "Memory Device" msgstr "Speichergerät" #: hardinfo2/dmi_util.c:43 msgid "32-bit Memory Error" msgstr "32-bit Speicherfehler" #: hardinfo2/dmi_util.c:44 msgid "Memory Array Mapped Address" msgstr "Zugeordnete Speicher-Array Adresse" #: hardinfo2/dmi_util.c:45 msgid "Memory Device Mapped Address" msgstr "Zugeordnete Adresse des Speichergeräts" #: hardinfo2/dmi_util.c:46 msgid "Built-in Pointing Device" msgstr "Eingebautes Zeigegerät" #: hardinfo2/dmi_util.c:47 msgid "Portable Battery" msgstr "Portable Batterie" #: hardinfo2/dmi_util.c:48 msgid "System Reset" msgstr "Systemrücksetzung" #: hardinfo2/dmi_util.c:49 msgid "Hardware Security" msgstr "Hardware-Sicherheit" #: hardinfo2/dmi_util.c:50 msgid "System Power Controls" msgstr "Systemenergiekontrolle" #: hardinfo2/dmi_util.c:51 msgid "Voltage Probe" msgstr "Spannungssonde" #: hardinfo2/dmi_util.c:52 msgid "Cooling Device" msgstr "Kühlgerät" #: hardinfo2/dmi_util.c:53 msgid "Temperature Probe" msgstr "Temperaturprobe" #: hardinfo2/dmi_util.c:54 msgid "Electrical Current Probe" msgstr "Elektrische Stromsonde" #: hardinfo2/dmi_util.c:55 msgid "Out-of-band Remote Access" msgstr "'Out-of-band' Fernzugriff" #: hardinfo2/dmi_util.c:56 msgid "Boot Integrity Services" msgstr "Boot-Integritätsdienste" #: hardinfo2/dmi_util.c:57 msgid "System Boot" msgstr "Systemstart" #: hardinfo2/dmi_util.c:58 msgid "64-bit Memory Error" msgstr "64-bit Speicherfehler" #: hardinfo2/dmi_util.c:59 msgid "Management Device" msgstr "Verwaltungsgerät" #: hardinfo2/dmi_util.c:60 msgid "Management Device Component" msgstr "Verwaltungsgerätkomponente" #: hardinfo2/dmi_util.c:61 msgid "Management Device Threshold Data" msgstr "Schwellenwertdaten des Verwaltungsgeräts" #: hardinfo2/dmi_util.c:62 msgid "Memory Channel" msgstr "Speicherkanal" #: hardinfo2/dmi_util.c:63 msgid "IPMI Device" msgstr "IPMI Gerät" #: hardinfo2/dmi_util.c:64 msgid "Power Supply" msgstr "Energieversorgung" #: hardinfo2/dmi_util.c:65 msgid "Additional Information" msgstr "Zusätzliche Information" #: hardinfo2/dmi_util.c:66 msgid "Onboard Device" msgstr "Onboard-Gerät" #: hardinfo2/dmi_util.c:233 msgid "Invalid chassis type (0)" msgstr "Ungültiger Gehäusetyp (0)" #: hardinfo2/dmi_util.c:234 hardinfo2/dmi_util.c:235 msgid "Unknown chassis type" msgstr "Ungültiger Gehäusetyp" #: hardinfo2/dmi_util.c:236 msgid "Desktop" msgstr "" #: hardinfo2/dmi_util.c:237 msgid "Low-profile Desktop" msgstr "" #: hardinfo2/dmi_util.c:238 msgid "Pizza Box" msgstr "" #: hardinfo2/dmi_util.c:239 msgid "Mini Tower" msgstr "" #: hardinfo2/dmi_util.c:240 msgid "Tower" msgstr "" #: hardinfo2/dmi_util.c:241 msgid "Portable" msgstr "" #: hardinfo2/dmi_util.c:242 modules/computer.c:408 modules/computer.c:417 #: modules/computer.c:440 modules/computer.c:442 msgid "Laptop" msgstr "" #: hardinfo2/dmi_util.c:243 msgid "Notebook" msgstr "" #: hardinfo2/dmi_util.c:244 msgid "Handheld" msgstr "" #: hardinfo2/dmi_util.c:245 msgid "Docking Station" msgstr "" #: hardinfo2/dmi_util.c:246 msgid "All-in-one" msgstr "" #: hardinfo2/dmi_util.c:247 msgid "Subnotebook" msgstr "" #: hardinfo2/dmi_util.c:248 msgid "Space-saving" msgstr "" #: hardinfo2/dmi_util.c:249 msgid "Lunch Box" msgstr "" #: hardinfo2/dmi_util.c:250 msgid "Main Server Chassis" msgstr "Hauptservergehäuse " #: hardinfo2/dmi_util.c:251 msgid "Expansion Chassis" msgstr "Erweiterungsgehäuse" #: hardinfo2/dmi_util.c:252 msgid "Sub Chassis" msgstr "" #: hardinfo2/dmi_util.c:253 msgid "Bus Expansion Chassis" msgstr "Buserweiterungs-Chassis" #: hardinfo2/dmi_util.c:254 msgid "Peripheral Chassis" msgstr "Peripheriegehäuse" #: hardinfo2/dmi_util.c:255 msgid "RAID Chassis" msgstr "RAID-Gehäuse" #: hardinfo2/dmi_util.c:256 msgid "Rack Mount Chassis" msgstr "Rackmontage-Chassis" #: hardinfo2/dmi_util.c:257 msgid "Sealed-case PC" msgstr "Versiegeltes Gehäuse" #: hardinfo2/dmi_util.c:258 msgid "Multi-system" msgstr "Multisystem" #: hardinfo2/dmi_util.c:259 msgid "CompactPCI" msgstr "" #: hardinfo2/dmi_util.c:260 msgid "AdvancedTCA" msgstr "" #: hardinfo2/dmi_util.c:261 msgid "Blade" msgstr "" #: hardinfo2/dmi_util.c:262 msgid "Blade Enclosing" msgstr "" #: hardinfo2/dmi_util.c:263 msgid "Tablet" msgstr "" #: hardinfo2/dmi_util.c:264 msgid "Convertible" msgstr "" #: hardinfo2/dmi_util.c:265 msgid "Detachable" msgstr "Abnehmbar" #: hardinfo2/dmi_util.c:266 msgid "IoT Gateway" msgstr "" #: hardinfo2/dmi_util.c:267 msgid "Embedded PC" msgstr "" #: hardinfo2/dmi_util.c:268 msgid "Mini PC" msgstr "" #: hardinfo2/dmi_util.c:269 msgid "Stick PC" msgstr "" #: hardinfo2/dt_util.c:1175 msgid "phandle Map" msgstr "phandle-Karte" #: hardinfo2/dt_util.c:1176 msgid "Alias Map" msgstr "Alias-Karte" #: hardinfo2/dt_util.c:1177 msgid "Symbol Map" msgstr "Symbol-Karte" #. !/ %d will be latest year of copyright #: hardinfo2/hardinfo.c:104 #, c-format msgid "" "Copyright (C) 2003-2023 L. A. F. Pereira. 2024-%d Hardinfo2 Project.\n" "\n" msgstr "" #: hardinfo2/hardinfo.c:106 #, c-format msgid "" "Compile-time options:\n" " Release version: %s (%s)\n" " LibSoup version: %s\n" " Data : %s\n" " Library : %s\n" " Locale : %s\n" " Compiled for : %s\n" msgstr "" #: hardinfo2/hardinfo.c:114 msgid "3.0" msgstr "" #: hardinfo2/hardinfo.c:149 #, c-format msgid "Unknown benchmark ``%s''\n" msgstr "" #: hardinfo2/hardinfo.c:188 msgid "Don't know what to do. Exiting." msgstr "Weiß nicht was zu tun ist. Beende." #: hardinfo2/usb_util.c:293 modules/devices/devicetree.c:90 #: modules/devices/devicetree.c:91 modules/devices/monitors.c:411 #: modules/devices/storage.c:306 modules/devices/storage.c:328 msgid "(None)" msgstr "(Nichts)" #: hardinfo2/util.c:100 modules/computer/uptime.c:54 #, c-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d Tag" msgstr[1] "%d Tage" #: hardinfo2/util.c:101 modules/computer/uptime.c:55 #, c-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d Stunde" msgstr[1] "%d Stunden" #: hardinfo2/util.c:102 modules/computer/uptime.c:56 #, c-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d Minute" msgstr[1] "%d Minuten" #: hardinfo2/util.c:103 #, c-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d Sekunde" msgstr[1] "%d Sekunden" #: hardinfo2/util.c:124 #, c-format msgid "%.1f B" msgstr "%.1f Byte(s)" #: hardinfo2/util.c:126 #, c-format msgid "%.1f KiB" msgstr "%.1f KiB" #: hardinfo2/util.c:128 #, c-format msgid "%.1f MiB" msgstr "%.1f MiB" #: hardinfo2/util.c:130 #, c-format msgid "%.1f GiB" msgstr "%.1f GiB" #: hardinfo2/util.c:132 #, c-format msgid "%.1f TiB" msgstr "%.1f TiB" #: hardinfo2/util.c:134 #, c-format msgid "%.1f PiB" msgstr "%.1f PiB" #: hardinfo2/util.c:283 msgid "Error" msgstr "Fehler" #: hardinfo2/util.c:283 hardinfo2/util.c:299 msgid "Warning" msgstr "Warnung" #: hardinfo2/util.c:298 msgid "Fatal Error" msgstr "Kritischer Fehler" #: hardinfo2/util.c:325 msgid "do not print status messages to standard output" msgstr "" #: hardinfo2/util.c:331 msgid "creates a report and prints to standard output" msgstr "Erstellt einen Report und leitet ihn zum 'Standard-Output' weiter" #: hardinfo2/util.c:337 msgid "chooses a report format ([text], html)" msgstr "Wählt ein Reportformat ([text], html)" #: hardinfo2/util.c:343 msgid "run single benchmark eg. -b 'FPU FFT' (Default all Benchmarks runs)" msgstr "" #: hardinfo2/util.c:349 msgid "" "user note attached to benchmark results. (updating/synchronize with server)" msgstr "" #: hardinfo2/util.c:355 msgid "benchmark result format ([short], conf, shell)" msgstr "Benchmarkergebnisformat ([short], conf, shell)" #: hardinfo2/util.c:361 msgid "" "maximum number of benchmark results to include (-1 for no limit, default is " "50)" msgstr "" "Maximale Anzahl an Benchmark-Ergebnissen zum einbeziehen (-1 für kein Limit, " "Standard ist 50)" #: hardinfo2/util.c:367 msgid "shows program version and quit" msgstr "Zeigt Programmversion und beendet" #: hardinfo2/util.c:373 msgid "do not run benchmarks" msgstr "Keine Benchmarks ausführen" #: hardinfo2/util.c:379 msgid "show all details" msgstr "Alle Details anzeigen" #: hardinfo2/util.c:384 msgid "- System Information and Benchmark" msgstr "" #: hardinfo2/util.c:394 #, c-format msgid "" "Unrecognized arguments.\n" "Try ``%s --help'' for more information.\n" msgstr "" "Argumente nicht erkannt.\n" "Versuche ``%s --help'' für mehr Informationen.\n" #: hardinfo2/util.c:869 #, c-format msgid "Scanning: %s..." msgstr "Scanne: %s..." #: hardinfo2/util.c:879 shell/shell.c:303 shell/shell.c:925 shell/shell.c:2163 msgid "Done." msgstr "Fertig." #: hardinfo2/vendor.c:213 msgid "Update vendor list" msgstr "" #: hardinfo2/vendor.c:218 msgid "Check Update Version" msgstr "" #: hardinfo2/vendor.c:391 modules/computer.c:630 modules/computer.c:829 #: modules/computer/os.c:196 modules/computer/os.c:378 #: modules/computer/os.c:413 modules/computer/os.c:741 #: modules/computer/os.c:802 modules/devices.c:464 modules/devices.c:614 #: modules/devices/firmware.c:149 modules/devices/printers.c:106 #: modules/devices/printers.c:113 modules/devices/printers.c:123 #: modules/devices/printers.c:138 modules/devices/printers.c:147 #: modules/devices/printers.c:256 modules/devices/spd-decode.c:364 #: modules/devices/usb.c:149 msgid "Unknown" msgstr "Unbekannt" #: shell/callbacks.c:457 shell/shell.c:522 msgid "System Information and Benchmark" msgstr "" #: shell/callbacks.c:462 msgid "" "HardInfo2 is free software; you can redistribute it and/or modify it under " "the terms of the GNU General Public License as published by the Free " "Software Foundation, version 2 or later.\n" "\n" "This program is distributed in the hope that it will be useful, but WITHOUT " "ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " "FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " "more details.\n" "\n" "You should have received a copy of the GNU General Public License along with " "this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin St, Fifth Floor, Boston, MA 02110-1301 USA" msgstr "" #: shell/menu.c:43 msgid "_Information" msgstr "_Informationen" #: shell/menu.c:44 msgid "_View" msgstr "_Ansicht" #: shell/menu.c:46 msgid "_Theme" msgstr "" #: shell/menu.c:48 msgid "_Help" msgstr "_Hilfe" #: shell/menu.c:52 msgid "Generate _Report" msgstr "_Bericht generieren" #: shell/menu.c:53 msgid "Generates a report with detailed system information" msgstr "" #: shell/menu.c:57 shell/syncmanager.c:692 msgid "Synchronize" msgstr "" #: shell/menu.c:58 msgid "Send benchmark results and receive updated data from the network" msgstr "" #: shell/menu.c:73 msgid "_Refresh" msgstr "_Aktualisieren" #: shell/menu.c:78 msgid "_Open HardInfo2 Web Site" msgstr "HardInfo2-_Webseite öffnen" #: shell/menu.c:83 msgid "_Report bug" msgstr "Fehler _melden" #: shell/menu.c:88 msgid "_About HardInfo2" msgstr "_Über HardInfo2" #: shell/menu.c:89 msgid "Displays program version information" msgstr "" #: shell/menu.c:93 msgid "_Quit" msgstr "_Beenden" #: shell/menu.c:100 msgid "_Side Pane" msgstr "_Seitenleiste" #: shell/menu.c:101 msgid "Toggles side pane visibility" msgstr "" #: shell/menu.c:104 msgid "_Toolbar" msgstr "_Symbolleiste" #: shell/menu.c:108 msgid "Synchronize on startup" msgstr "" #: shell/menu.c:113 msgid "Disable Theme" msgstr "" #: shell/menu.c:117 msgid "Theme Motherboard" msgstr "" #: shell/menu.c:121 msgid "Theme Graffiti" msgstr "" #: shell/menu.c:125 msgid "Theme Anime PC" msgstr "" #: shell/menu.c:129 msgid "Theme Tux Star" msgstr "" #: shell/menu.c:133 msgid "Theme PixArt" msgstr "" #: shell/menu.c:137 msgid "Theme Silicon" msgstr "" #: shell/report.c:772 shell/report.c:780 msgid "Save File" msgstr "Datei speichern" #: shell/report.c:775 shell/report.c:1252 shell/syncmanager.c:780 msgid "_Cancel" msgstr "_Abbrechen" #: shell/report.c:777 msgid "_Save" msgstr "_Speichern" #: shell/report.c:952 msgid "Cannot create ReportContext. Programming bug?" msgstr "Kann 'ReportContext' nicht erstellen. Programmierbug?" #: shell/report.c:972 msgid "Open the report with your web browser?" msgstr "Den Bericht in deinem Webbrowser öffnen?" #: shell/report.c:975 msgid "_No" msgstr "_Nein" #: shell/report.c:976 msgid "_Open" msgstr "_Öffnen" #: shell/report.c:1007 msgid "Generating report..." msgstr "Generiere Bericht…" #: shell/report.c:1017 msgid "Report saved." msgstr "Bericht gespeichert." #: shell/report.c:1019 msgid "Error while creating the report." msgstr "Fehler beim Erzeugen des Berichts." #: shell/report.c:1121 msgid "Generate Report" msgstr "Bericht generieren" #: shell/report.c:1146 msgid "" "Generate Report\n" "Please choose the information that you wish to view in your report:" msgstr "" "Bericht generieren\n" "Bitte wähle die Informationen, die du in deinen Bereich einbeziehen möchtest:" #: shell/report.c:1218 msgid "Select _None" msgstr "_Nichts auswählen" #: shell/report.c:1229 msgid "Select _All" msgstr "_Alles auswählen" #: shell/report.c:1262 msgid "_Generate" msgstr "_Generieren" #: shell/shell.c:517 #, c-format msgid "%s - System Information and Benchmark" msgstr "" #: shell/shell.c:910 msgid "Loading modules..." msgstr "Lade Module..." #: shell/shell.c:1681 msgid "URL" msgstr "" #: shell/shell.c:1688 msgid "Support URL" msgstr "" #: shell/shell.c:1699 msgid "Wikipedia" msgstr "" #: shell/shell.c:2033 #, c-format msgid "%s → Summary" msgstr "%s → Zusammenfassung" #: shell/shell.c:2139 msgid "Updating..." msgstr "Aktualisiere…" #: shell/syncmanager.c:80 msgid "" "Synchronize with Central Database\n" "The following information may be synchronized\n" "with the HardInfo2 central database." msgstr "" "Synchronisieren mit zentraler Datenbank\n" "Die folgenden Informationen können mit der\n" "zentralen HardInfo2-Datenbank synchronisiert werden." #: shell/syncmanager.c:84 msgid "" "Synchronizing\n" "This may take some time." msgstr "" "Synchronisiere\n" "Dies kann kurz dauern." #: shell/syncmanager.c:546 msgid "(canceled)" msgstr "(abgebrochen)" #: shell/syncmanager.c:562 msgid "(failed)" msgstr "(gescheitert)" #: shell/syncmanager.c:658 modules/benchmark.c:932 msgid "Send benchmark results" msgstr "Übermittle Benchmark-Ergebnisse" #: shell/syncmanager.c:767 msgid "Privacy Policy" msgstr "" #: shell/syncmanager.c:789 msgid "_Synchronize" msgstr "_Synchronisieren" #: shell/syncmanager.c:838 #, c-format msgid "Synchronizing: %s" msgstr "" #: modules/benchmark/benches.c:136 msgid "CPU Blowfish (Single-thread)" msgstr "" #: modules/benchmark/benches.c:144 msgid "CPU Blowfish (Multi-thread)" msgstr "" #: modules/benchmark/benches.c:152 msgid "CPU Blowfish (Multi-core)" msgstr "" #: modules/benchmark/benches.c:160 msgid "CPU Zlib" msgstr "" #: modules/benchmark/benches.c:168 msgid "CPU CryptoHash" msgstr "CPU Crypto-Hash" #: modules/benchmark/benches.c:176 msgid "CPU Fibonacci" msgstr "CPU Fibonacci" #: modules/benchmark/benches.c:184 msgid "CPU N-Queens" msgstr "CPU Damenproblem" #: modules/benchmark/benches.c:192 msgid "FPU FFT" msgstr "FPU FFT" #: modules/benchmark/benches.c:200 msgid "FPU Raytracing (Single-thread)" msgstr "" #: modules/benchmark/benches.c:208 msgid "Internal Network Speed" msgstr "" #: modules/benchmark/benches.c:216 msgid "SysBench CPU (Single-thread)" msgstr "" #: modules/benchmark/benches.c:224 msgid "SysBench CPU (Multi-thread)" msgstr "" #: modules/benchmark/benches.c:232 msgid "SysBench CPU (Four threads)" msgstr "SysBench CPU (Vier threads)" #: modules/benchmark/benches.c:240 msgid "SysBench Memory (Single-thread)" msgstr "" #: modules/benchmark/benches.c:248 msgid "SysBench Memory (Two threads)" msgstr "SysBench Memory (Zwei threads)" #: modules/benchmark/benches.c:256 msgid "SysBench Memory (Quad threads)" msgstr "" #: modules/benchmark/benches.c:264 msgid "SysBench Memory (Multi-thread)" msgstr "" #: modules/benchmark/benches.c:272 msgid "GPU Drawing" msgstr "GPU Zeichnen" #: modules/benchmark/benches.c:281 msgid "GPU OpenGL Drawing" msgstr "" #: modules/benchmark/benches.c:290 msgid "Storage R/W Speed" msgstr "" #: modules/benchmark/benches.c:304 msgid "" "Alexey Kopytov's sysbench is required.\n" "Results in events/second. Higher is better." msgstr "" "Alexey Kopytov's sysbench wird benötigt.\n" "Ergebnisse in events/Sekunde. Höhere Werte sind besser." #: modules/benchmark/benches.c:310 msgid "" "Alexey Kopytov's sysbench is required.\n" "Results in MiB/second. Higher is better." msgstr "" "Alexey Kopytov's sysbench wird benötigt.\n" "Ergebnisse in MiB/Sekunde. Höhere Werte sind besser." #: modules/benchmark/benches.c:313 msgid "" "iperf3 is required.\n" "Results in Gbits/s. Higher is better." msgstr "" #: modules/benchmark/benches.c:324 msgid "Results in HIMarks. Higher is better." msgstr "Ergebnisse in HIMarks. Höhere Werte sind besser." #: modules/benchmark/benches.c:326 msgid "" "Results in HIMarks. Higher is better.\n" "Many Desktop Environments only uses software." msgstr "" #: modules/benchmark/benches.c:329 msgid "Results in MB/s. Higher is better." msgstr "" #: modules/benchmark/benches.c:332 msgid "Results in FPS. Higher is better." msgstr "" #. !/ Used for an unknown value. Having it in only one place cleans up the .po #. * line references #: modules/benchmark/bench_results.c:34 modules/computer.c:41 #: modules/computer/display.c:40 modules/computer/display.c:57 #: modules/computer/os.c:400 modules/computer/os.c:457 modules/devices.c:596 #: modules/devices/dmi_memory.c:699 modules/devices/dmi_memory.c:835 #: modules/devices/gpu.c:40 modules/devices/gpu.c:58 modules/devices/gpu.c:122 #: modules/devices/gpu.c:130 modules/devices/gpu.c:210 #: modules/devices/gpu.c:211 modules/devices/gpu.c:230 #: modules/devices/inputdevices.c:51 modules/devices/monitors.c:28 #: modules/devices/monitors.c:29 modules/devices/monitors.c:155 #: modules/devices/monitors.c:164 modules/devices/pci.c:25 #: modules/devices/pci.c:149 modules/devices/pci.c:150 #: modules/devices/spd-decode.c:358 modules/devices/spd-decode.c:359 #: modules/devices/spd-decode.c:362 modules/devices/spd-decode.c:363 #: modules/devices/spd-decode.c:584 modules/devices/spd-decode.c:899 #: modules/devices/spd-decode.c:900 modules/devices/spd-decode.c:1111 #: modules/devices/spd-decode.c:1350 modules/devices/storage.c:27 #: modules/devices/storage.c:307 modules/devices/storage.c:336 #: modules/devices/storage.c:431 modules/devices/usb.c:29 #: modules/network/net.c:460 includes/cpu_util.h:11 includes/spd-decode.h:24 #: includes/spd-decode.h:25 msgid "(Unknown)" msgstr "" #: modules/benchmark/bench_results.c:261 modules/devices/alpha/processor.c:90 #: modules/devices/arm/processor.c:289 modules/devices/arm/processor.c:302 #: modules/devices/arm/processor.c:344 modules/devices/arm/processor.c:509 #: modules/devices.c:430 modules/devices.c:438 modules/devices.c:466 #: modules/devices/e2k/processor.c:363 modules/devices/e2k/processor.c:400 #: modules/devices/gpu.c:125 modules/devices/gpu.c:127 #: modules/devices/gpu.c:133 modules/devices/gpu.c:135 #: modules/devices/gpu.c:233 modules/devices/gpu.c:235 #: modules/devices/ia64/processor.c:167 modules/devices/ia64/processor.c:196 #: modules/devices/loongarch64/processor.c:98 #: modules/devices/m68k/processor.c:87 modules/devices/mips/processor.c:77 #: modules/devices/parisc/processor.c:158 #: modules/devices/parisc/processor.c:191 modules/devices/ppc/processor.c:160 #: modules/devices/ppc/processor.c:187 modules/devices/riscv/processor.c:246 #: modules/devices/riscv/processor.c:276 modules/devices/s390/processor.c:160 #: modules/devices/sh/processor.c:87 modules/devices/sh/processor.c:88 #: modules/devices/sh/processor.c:89 modules/devices/x86/processor.c:317 #: modules/devices/x86/processor.c:330 modules/devices/x86/processor.c:658 #: modules/devices/x86/processor.c:790 msgid "MHz" msgstr "" #: modules/benchmark/bench_results.c:293 modules/devices.c:177 #, c-format msgid "%d physical processor" msgid_plural "%d physical processors" msgstr[0] "" msgstr[1] "" #: modules/benchmark/bench_results.c:294 modules/devices.c:178 #, c-format msgid "%d core" msgid_plural "%d cores" msgstr[0] "" msgstr[1] "" #: modules/benchmark/bench_results.c:295 modules/devices.c:179 #, c-format msgid "%d thread" msgid_plural "%d threads" msgstr[0] "" msgstr[1] "" #: modules/benchmark/bench_results.c:300 modules/devices.c:181 #, c-format msgid "%d NUMA node" msgid_plural "%d NUMA nodes" msgstr[0] "" msgstr[1] "" #. !/NP procs; NC cores across NN nodes; NT threads #: modules/benchmark/bench_results.c:304 #, c-format msgid "%s; %s across %s; %s" msgstr "" #. !/NP procs; NC cores; NT threads #: modules/benchmark/bench_results.c:309 #, c-format msgid "%s; %s; %s" msgstr "" #: modules/benchmark/bench_results.c:383 modules/benchmark/bench_results.c:508 #: modules/computer.c:1041 modules/devices/dmi_memory.c:639 #: modules/devices/dmi_memory.c:649 modules/devices/dmi_memory.c:703 #: modules/devices/dmi_memory.c:791 modules/devices/dmi_memory.c:837 #: modules/devices/dmi_memory.c:920 modules/devices/spd-decode.c:1354 #: modules/network/net.c:416 modules/network/net.c:440 #: modules/network/net.c:441 msgid "MiB" msgstr "" #: modules/benchmark/bench_results.c:388 modules/benchmark/bench_results.c:507 msgid "kiB" msgstr "" #: modules/benchmark/bench_results.c:396 modules/benchmark/bench_results.c:452 #, c-format msgid "%d-bit" msgstr "" #: modules/benchmark/bench_results.c:417 modules/benchmark/bench_results.c:482 msgid "Benchmark Result" msgstr "Benchmark Ergebnisse" #: modules/benchmark/bench_results.c:417 modules/benchmark/bench_results.c:482 msgid "Threads" msgstr "" #: modules/benchmark/bench_results.c:418 modules/benchmark/bench_results.c:484 msgid "Elapsed Time" msgstr "Vergangene Zeit" #: modules/benchmark/bench_results.c:418 modules/benchmark/bench_results.c:484 msgid "seconds" msgstr "Sekunden" #: modules/benchmark/bench_results.c:419 modules/computer/languages.c:101 #: modules/devices/arm/processor.c:354 modules/devices/e2k/processor.c:362 #: modules/devices/gpu.c:203 modules/devices/ia64/processor.c:166 #: modules/devices/loongarch64/processor.c:97 modules/devices/pci.c:146 #: modules/devices/ppc/processor.c:159 msgid "Revision" msgstr "" #: modules/benchmark/bench_results.c:420 modules/benchmark/bench_results.c:485 msgid "Extra Information" msgstr "Zusätzliche Information" #: modules/benchmark/bench_results.c:422 modules/benchmark/bench_results.c:487 msgid "Note" msgstr "Hinweis" #: modules/benchmark/bench_results.c:423 modules/benchmark/bench_results.c:488 msgid "" "This result is from an old version of HardInfo. Results might not be " "comparable to current version. Some details are missing." msgstr "" #: modules/benchmark/bench_results.c:427 modules/benchmark/bench_results.c:492 #: modules/devices/devicetree/pmac_data.c:81 modules/devices/sh/processor.c:85 msgid "Machine" msgstr "Maschine" #: modules/benchmark/bench_results.c:428 modules/benchmark/bench_results.c:492 #: modules/devices/devicetree.c:207 modules/devices/dmi.c:48 msgid "Board" msgstr "" #: modules/benchmark/bench_results.c:429 modules/benchmark/bench_results.c:494 #: modules/computer.c:583 msgid "Machine Type" msgstr "Maschinen-Typ" #: modules/benchmark/bench_results.c:430 modules/benchmark/bench_results.c:497 msgid "CPU Name" msgstr "" #: modules/benchmark/bench_results.c:431 modules/benchmark/bench_results.c:498 msgid "CPU Description" msgstr "CPU Beschreibung" #: modules/benchmark/bench_results.c:432 modules/benchmark/bench_results.c:500 #: modules/benchmark.c:601 msgid "CPU Config" msgstr "CPU Konfiguration" #: modules/benchmark/bench_results.c:433 modules/benchmark/bench_results.c:500 msgid "Threads Available" msgstr "Threads verfügbar" #: modules/benchmark/bench_results.c:434 modules/benchmark/bench_results.c:501 #: modules/benchmark.c:579 msgid "GPU" msgstr "" #: modules/benchmark/bench_results.c:435 modules/benchmark/bench_results.c:503 #: modules/computer.c:595 msgid "OpenGL Renderer" msgstr "OpenGL-Renderer" #: modules/benchmark/bench_results.c:436 modules/benchmark/bench_results.c:505 #: modules/benchmark.c:590 modules/computer.c:1145 modules/devices.c:109 msgid "Storage" msgstr "Speicher" #: modules/benchmark/bench_results.c:437 modules/benchmark/bench_results.c:507 #: modules/computer.c:140 modules/computer.c:582 modules/computer.c:1144 #: modules/devices/gpu.c:206 msgid "Memory" msgstr "Hauptspeicher" #: modules/benchmark/bench_results.c:438 modules/benchmark/bench_results.c:509 msgid "Pointer Size" msgstr "" #: modules/benchmark/bench_results.c:482 msgid "Benchmark" msgstr "" #: modules/benchmark/bench_results.c:483 modules/devices/dmi_memory.c:859 #: modules/devices/firmware.c:245 modules/devices/monitors.c:495 #: modules/devices/x86/processor.c:692 msgid "Result" msgstr "Ergebnis" #: modules/benchmark/bench_results.c:495 msgid "Linux Kernel" msgstr "" #: modules/benchmark/bench_results.c:496 msgid "Linux OS" msgstr "" #: modules/benchmark/bench_results.c:507 msgid "Physical Memory" msgstr "" #: modules/benchmark/bench_results.c:511 msgid "Handles" msgstr "" #: modules/benchmark/bench_results.c:511 msgid "mid" msgstr "" #: modules/benchmark/bench_results.c:512 msgid "cfg_val" msgstr "" #: modules/benchmark.c:352 msgid "This Machine" msgstr "" #: modules/benchmark.c:578 modules/benchmark.c:589 modules/benchmark.c:601 msgid "Results" msgstr "Ergebnisse" #: modules/benchmark.c:602 modules/devices/sparc/processor.c:75 msgid "CPU" msgstr "" #: modules/benchmark.c:678 #, c-format msgid "Benchmarking: %s." msgstr "Benchmarke: %s." #: modules/benchmark.c:685 msgid "Stop" msgstr "" #: modules/benchmark.c:697 msgid "" "Please do not move your mouse\n" "or press any keys." msgstr "" #: modules/benchmark.c:767 msgid "Benchmarks" msgstr "Benchmarks" #: modules/benchmark.c:777 msgid "Perform tasks and compare with other systems" msgstr "Erledigt Aufgaben und vergleicht die Ergebnisse mit anderen Systemen" #: modules/benchmark.c:938 msgid "Receive benchmark results" msgstr "Lade Benchmark-Ergebnisse" #: modules/computer/alsa.c:26 modules/computer.c:599 msgid "Audio Devices" msgstr "Audio-Geräte" #: modules/computer/alsa.c:34 msgid "Audio Adapter" msgstr "Audio-Adapter" #: modules/computer.c:96 modules/devices/firmware.c:74 msgid "Summary" msgstr "Zusammenfassung" #: modules/computer.c:97 modules/computer.c:585 modules/computer.c:1143 msgid "Operating System" msgstr "Betriebssystem" #: modules/computer.c:98 msgid "Security" msgstr "Sicherheit" #: modules/computer.c:99 modules/devices/gpu.c:211 modules/devices/pci.c:150 msgid "Kernel Modules" msgstr "Kernel-Module" #: modules/computer.c:100 modules/computer.c:741 msgid "Boots" msgstr "Systemstarts" #: modules/computer.c:101 msgid "Languages" msgstr "Sprachen" #: modules/computer.c:102 msgid "Memory Usage" msgstr "SPeicherbenutzung" #: modules/computer.c:103 msgid "Filesystems" msgstr "Dateisysteme" #: modules/computer.c:104 modules/computer.c:590 msgid "Display" msgstr "Anzeige" #: modules/computer.c:105 modules/computer/environment.c:37 msgid "Environment Variables" msgstr "Umgebungsvariablen" #: modules/computer.c:107 modules/computer.c:109 msgid "Development" msgstr "Entwicklung" #: modules/computer.c:111 modules/computer.c:884 msgid "Users" msgstr "Benutzer" #: modules/computer.c:112 msgid "Groups" msgstr "Gruppen" #: modules/computer.c:142 #, c-format msgid "%dMB (%dMB used)" msgstr "%dMB (%dMB benutzt)" #: modules/computer.c:144 modules/computer.c:646 msgid "Uptime" msgstr "Betriebszeit" #: modules/computer.c:146 modules/computer.c:587 msgid "Date/Time" msgstr "Datum/Zeit" #: modules/computer.c:151 modules/computer.c:647 msgid "Load Average" msgstr "Durchschnittliche Belastung" #: modules/computer.c:266 msgid "Scripting Languages" msgstr "Script-Sprachen" #: modules/computer.c:267 msgid "Gambas3 (gbr3)" msgstr "" #: modules/computer.c:268 msgid "Python (default)" msgstr "Python (Voreinstellung)" #: modules/computer.c:269 msgid "Python2" msgstr "" #: modules/computer.c:270 msgid "Python3" msgstr "" #: modules/computer.c:271 msgid "Perl" msgstr "Perl" #: modules/computer.c:272 msgid "Rakudo (Perl6)" msgstr "" #: modules/computer.c:273 msgid "PHP" msgstr "PHP" #: modules/computer.c:274 msgid "Ruby" msgstr "Ruby" #: modules/computer.c:275 msgid "Bash" msgstr "Bash" #: modules/computer.c:276 msgid "JavaScript (Node.js)" msgstr "" #: modules/computer.c:277 msgid "awk" msgstr "" #: modules/computer.c:278 msgid "Compilers" msgstr "Compiler" #: modules/computer.c:279 msgid "C (GCC)" msgstr "C (GCC)" #: modules/computer.c:280 msgid "C (Clang)" msgstr "C (Clang)" #: modules/computer.c:281 msgid "D (dmd)" msgstr "D (dmd)" #: modules/computer.c:282 msgid "Gambas3 (gbc3)" msgstr "" #: modules/computer.c:283 msgid "Java" msgstr "Java" #: modules/computer.c:284 msgid ".NET" msgstr "" #: modules/computer.c:285 msgid "Vala" msgstr "Vala" #: modules/computer.c:286 msgid "Haskell (GHC)" msgstr "Haskell (GHC)" #: modules/computer.c:287 msgid "FreePascal" msgstr "FreePascal" #: modules/computer.c:288 msgid "Go" msgstr "" #: modules/computer.c:289 msgid "Rust" msgstr "" #: modules/computer.c:290 msgid "Tools" msgstr "Werkzeuge" #: modules/computer.c:291 msgid "make" msgstr "make" #: modules/computer.c:292 msgid "ninja" msgstr "" #: modules/computer.c:293 msgid "GDB" msgstr "GDB" #: modules/computer.c:294 msgid "LLDB" msgstr "" #: modules/computer.c:295 msgid "strace" msgstr "strace" #: modules/computer.c:296 msgid "valgrind" msgstr "valgrind" #: modules/computer.c:297 msgid "QMake" msgstr "QMake" #: modules/computer.c:298 msgid "CMake" msgstr "" #: modules/computer.c:299 msgid "Gambas3 IDE" msgstr "" #: modules/computer.c:300 msgid "Radare2" msgstr "" #: modules/computer.c:301 msgid "ltrace" msgstr "" #: modules/computer.c:302 msgid "Powershell" msgstr "" #: modules/computer.c:343 msgid "Not found" msgstr "Nicht gefunden" #: modules/computer.c:348 #, c-format msgid "Detecting version: %s" msgstr "" #: modules/computer.c:366 msgid "Program" msgstr "Programm" #: modules/computer.c:366 modules/computer.c:629 modules/computer.c:631 #: modules/computer.c:807 modules/computer/modules.c:372 #: modules/devices/dmi.c:41 modules/devices/dmi.c:47 modules/devices/dmi.c:51 #: modules/devices/dmi.c:57 modules/devices/firmware.c:75 #: modules/devices/inputdevices.c:146 modules/devices/monitors.c:409 msgid "Version" msgstr "" #: modules/computer.c:385 msgid "Field" msgstr "" #: modules/computer.c:385 modules/computer.c:730 modules/computer/modules.c:370 #: modules/computer/modules.c:371 modules/devices/arm/processor.c:479 msgid "Description" msgstr "Beschreibung" #: modules/computer.c:385 modules/devices.c:841 msgid "Value" msgstr "Wert" #: modules/computer.c:402 modules/computer.c:404 msgid "Single-board computer" msgstr "" #: modules/computer.c:455 modules/computer.c:457 msgid "Unknown physical machine type" msgstr "Unbekannter physischer Maschinentyp" #: modules/computer.c:479 modules/computer.c:480 modules/computer.c:527 #: modules/computer.c:529 msgid "Virtual (VMware)" msgstr "Virtuell (VMware)" #: modules/computer.c:482 modules/computer.c:483 modules/computer.c:484 #: modules/computer.c:485 msgid "Virtual (QEMU)" msgstr "Virtuell (QEMU)" #: modules/computer.c:487 modules/computer.c:488 msgid "Virtual (Unknown)" msgstr "Virtuell (Unbekannt)" #: modules/computer.c:490 modules/computer.c:491 modules/computer.c:492 #: modules/computer.c:520 modules/computer.c:522 msgid "Virtual (VirtualBox)" msgstr "Virtuell (VirtualBox)" #: modules/computer.c:494 modules/computer.c:495 modules/computer.c:496 #: modules/computer.c:511 modules/computer.c:513 msgid "Virtual (Xen)" msgstr "Virtuell (Xen)" #: modules/computer.c:498 msgid "Virtual (hypervisor present)" msgstr "Virtuell (Hypervisor vorhanden)" #: modules/computer.c:579 modules/computer.c:1097 msgid "Computer" msgstr "Computer" #: modules/computer.c:586 modules/computer.c:640 msgid "User Name" msgstr "Benutzername" #: modules/computer.c:591 msgid "Resolution" msgstr "Auflösung" #: modules/computer.c:591 modules/computer.c:812 #, c-format msgid "%dx%d pixels" msgstr "%dx%d Pixel" #: modules/computer.c:593 msgid "Display Adapter" msgstr "" #: modules/computer.c:596 msgid "Session Display Server" msgstr "Sitzungsanzeigeserver" #: modules/computer.c:601 modules/devices.c:108 msgid "Input Devices" msgstr "Eingabegeräte" #: modules/computer.c:629 msgid "Kernel" msgstr "" #: modules/computer.c:630 msgid "Command Line" msgstr "Befehlszeile" #: modules/computer.c:632 msgid "C Library" msgstr "C-Library" #: modules/computer.c:633 msgid "Distribution" msgstr "" #: modules/computer.c:638 msgid "Current Session" msgstr "Aktuelle Sitzung" #: modules/computer.c:639 msgid "Computer Name" msgstr "Computername" #: modules/computer.c:641 modules/computer/languages.c:99 msgid "Language" msgstr "Sprache" #: modules/computer.c:642 modules/computer/users.c:53 msgid "Home Directory" msgstr "Stammverzeichnis" #: modules/computer.c:643 msgid "Desktop Environment" msgstr "Desktop-Umgebung" #: modules/computer.c:646 msgid "Misc" msgstr "Verschiedenes" #: modules/computer.c:660 msgid "HardInfo2" msgstr "" #: modules/computer.c:661 msgid "HardInfo2 running as" msgstr "HardInfo2 läuft als" #: modules/computer.c:662 msgid "Superuser" msgstr "" #: modules/computer.c:662 msgid "User" msgstr "Benutzer" #: modules/computer.c:666 msgid "Health" msgstr "Gesundheit" #: modules/computer.c:668 msgid "Available entropy in /dev/random" msgstr "Verfügbare Entropie in /dev/random" #: modules/computer.c:672 msgid "Hardening Features" msgstr "Härtungsmerkmale" #: modules/computer.c:673 msgid "ASLR" msgstr "" #: modules/computer.c:674 msgid "dmesg" msgstr "" #: modules/computer.c:678 msgid "Linux Security Modules" msgstr "Linux Sicherheitsmodule" #: modules/computer.c:679 msgid "Modules available" msgstr "Module verfügbar" #: modules/computer.c:680 msgid "SELinux status" msgstr "" #: modules/computer.c:686 msgid "CPU Vulnerabilities" msgstr "CPU Schwachstellen" #: modules/computer.c:727 msgid "Loaded Modules" msgstr "Geladene Module" #: modules/computer.c:729 modules/computer.c:757 modules/computer.c:897 #: modules/computer/languages.c:95 modules/computer/modules.c:370 #: modules/devices/arm/processor.c:478 modules/devices/dmi.c:38 #: modules/devices/dmi.c:49 modules/devices/e2k/processor.c:358 #: modules/devices/gpu.c:301 modules/devices/ia64/processor.c:160 #: modules/devices/inputdevices.c:141 modules/devices/monitors.c:403 #: modules/devices/monitors.c:505 modules/devices/sh/processor.c:84 #: modules/devices/x86/processor.c:750 modules/network.c:333 msgid "Name" msgstr "Name" #: modules/computer.c:743 msgid "Date & Time" msgstr "Datum & Uhrzeit" #: modules/computer.c:744 msgid "Kernel Version" msgstr "Kernel-Version" #: modules/computer.c:754 msgid "Available Languages" msgstr "" #: modules/computer.c:756 msgid "Language Code" msgstr "Sprach-Code" #: modules/computer.c:768 msgid "Mounted File Systems" msgstr "Gemountete Dateisysteme" #: modules/computer.c:770 modules/computer/filesystem.c:89 msgid "Mount Point" msgstr "Mount-Punkt" #: modules/computer.c:771 msgid "Usage" msgstr "Verwendung" #: modules/computer.c:772 modules/devices.c:865 modules/devices.c:879 #: modules/devices/e2k/processor.c:416 modules/devices/gpu.c:85 #: modules/devices/gpu.c:93 modules/devices/gpu.c:293 modules/devices/pci.c:102 #: modules/devices/pci.c:110 modules/devices/pci.c:154 #: modules/devices/storage.c:48 modules/devices/storage.c:57 #: modules/devices/usb.c:172 modules/devices/usb.c:184 #: modules/devices/x86/processor.c:811 msgid "Device" msgstr "Gerät" #: modules/computer.c:795 msgid "Session" msgstr "Sitzung" #: modules/computer.c:796 modules/devices.c:842 modules/devices.c:879 #: modules/devices/dmi.c:56 modules/devices/dmi_memory.c:729 #: modules/devices/inputdevices.c:142 modules/devices/spd-decode.c:1377 #: modules/devices/x86/processor.c:715 msgid "Type" msgstr "Typ" #: modules/computer.c:799 msgid "Wayland" msgstr "" #: modules/computer.c:800 modules/computer.c:805 msgid "Current Display Name" msgstr "Derzeitiger Display-Name" #: modules/computer.c:804 msgid "X Server" msgstr "" #: modules/computer.c:806 modules/computer.c:846 modules/computer.c:869 #: modules/devices.c:879 modules/devices/dmi.c:40 modules/devices/dmi.c:46 #: modules/devices/dmi.c:50 modules/devices/dmi.c:55 #: modules/devices/dmi_memory.c:730 modules/devices/dmi_memory.c:873 #: modules/devices/e2k/processor.c:359 modules/devices/firmware.c:75 #: modules/devices/firmware.c:167 modules/devices/firmware.c:172 #: modules/devices/firmware.c:219 modules/devices/gpu.c:84 #: modules/devices/gpu.c:92 modules/devices/gpu.c:292 #: modules/devices/ia64/processor.c:161 modules/devices/inputdevices.c:144 #: modules/devices/monitors.c:402 modules/devices/pci.c:101 #: modules/devices/pci.c:109 modules/devices/storage.c:47 #: modules/devices/storage.c:56 modules/devices/storage.c:282 #: modules/devices/storage.c:572 modules/devices/storage.c:777 #: modules/devices/usb.c:171 modules/devices/x86/processor.c:654 msgid "Vendor" msgstr "Hersteller" #: modules/computer.c:808 msgid "Release Number" msgstr "Release-Nummer" #: modules/computer.c:816 msgid "Screens" msgstr "Bildschirme" #: modules/computer.c:822 msgid "Disconnected" msgstr "Getrennt" #: modules/computer.c:825 msgid "Connected" msgstr "Verbunden" #: modules/computer.c:833 msgid "Unused" msgstr "Unbenutzt" #: modules/computer.c:834 #, c-format msgid "%dx%d pixels, offset (%d, %d)" msgstr "" #: modules/computer.c:843 msgid "Outputs (XRandR)" msgstr "" #: modules/computer.c:845 msgid "OpenGL (GLX)" msgstr "" #: modules/computer.c:847 msgid "Renderer" msgstr "" #: modules/computer.c:848 msgid "Direct Rendering" msgstr "Direct-Rendering" #: modules/computer.c:849 modules/computer/modules.c:352 #: modules/computer/modules.c:353 modules/devices/inputdevices.c:153 #: modules/devices/printers.c:145 modules/devices/spd-decode.c:888 #: modules/devices/spd-decode.c:1100 msgid "Yes" msgstr "Ja" #: modules/computer.c:849 modules/computer/modules.c:352 #: modules/computer/modules.c:353 modules/devices/printers.c:145 #: modules/devices/spd-decode.c:886 modules/devices/spd-decode.c:1097 msgid "No" msgstr "Nein" #: modules/computer.c:850 msgid "Version (Compatibility)" msgstr "Version (Kompatibilität)" #: modules/computer.c:851 msgid "Shading Language Version (Compatibility)" msgstr "Shading Sprachversion (Kompatibilität)" #: modules/computer.c:852 msgid "Version (Core)" msgstr "Version (Kern)" #: modules/computer.c:853 msgid "Shading Language Version (Core)" msgstr "Shading-Sprachversion (Kern)" #: modules/computer.c:854 msgid "Version (ES)" msgstr "" #: modules/computer.c:855 msgid "Shading Language Version (ES)" msgstr "Shading-Sprachversion (ES)" #: modules/computer.c:856 msgid "GLX Version" msgstr "" #: modules/computer.c:864 msgid "Vulkan" msgstr "" #: modules/computer.c:865 msgid "Instance Version" msgstr "" #: modules/computer.c:867 msgid "Api Version" msgstr "" #: modules/computer.c:868 msgid "Driver Version" msgstr "" #: modules/computer.c:870 msgid "Device Type" msgstr "" #: modules/computer.c:871 msgid "Device Name" msgstr "" #: modules/computer.c:872 msgid "Driver Name" msgstr "" #: modules/computer.c:873 msgid "Driver Info" msgstr "" #: modules/computer.c:874 msgid "Conformance Version" msgstr "" #: modules/computer.c:895 msgid "Group" msgstr "Gruppe" #: modules/computer.c:898 modules/computer/users.c:52 msgid "Group ID" msgstr "Gruppen-ID" #: modules/computer.c:1037 #, c-format msgid "%0.1f %s available to Linux" msgstr "%0.1f %s verfügbar bei Linux" #: modules/computer.c:1039 modules/devices/dmi_memory.c:637 #: modules/devices/dmi_memory.c:647 modules/devices/dmi_memory.c:789 #: modules/devices/dmi_memory.c:918 modules/devices/spd-decode.c:1352 msgid "GiB" msgstr "" #: modules/computer.c:1043 modules/computer/memory_usage.c:73 #: modules/computer/modules.c:370 msgid "KiB" msgstr "" #: modules/computer.c:1116 modules/devices/devicetree/pmac_data.c:82 msgid "Motherboard" msgstr "" #: modules/computer.c:1144 msgid "Graphics" msgstr "Grafik" #: modules/computer.c:1145 modules/devices.c:105 msgid "Printers" msgstr "Drucker" #: modules/computer.c:1145 msgid "Audio" msgstr "" #: modules/computer.c:1194 msgid "Gathers high-level computer information" msgstr "Sammelt high-level Computer-Informationen" #: modules/computer.c:1205 msgid "lsmod is required." msgstr "" #: modules/computer.c:1213 msgid "" "X.org's xrandr utility provides additional details when " "available." msgstr "" #: modules/computer.c:1214 msgid "" "Mesa's glxinfo utility is required for OpenGL information." msgstr "" #: modules/computer.c:1215 msgid "" "Vulkan's vulkaninfo utility is required for Vulkan information." msgstr "" #: modules/computer/filesystem.c:87 msgid "Filesystem" msgstr "Dateisystem" #: modules/computer/filesystem.c:88 msgid "Mounted As" msgstr "Gemounted als" #: modules/computer/filesystem.c:88 msgid "Read-Write" msgstr "Lesen-Schreiben" #: modules/computer/filesystem.c:88 msgid "Read-Only" msgstr "Nur lesen" #: modules/computer/filesystem.c:90 modules/devices.c:865 #: modules/devices/dmi_memory.c:733 modules/devices/dmi_memory.c:766 #: modules/devices/dmi_memory.c:805 modules/devices/dmi_memory.c:872 #: modules/devices/spd-decode.c:1384 msgid "Size" msgstr "Größe" #: modules/computer/filesystem.c:91 msgid "Used" msgstr "Benutzt" #: modules/computer/filesystem.c:92 msgid "Available" msgstr "Verfügbar" #: modules/computer/languages.c:94 msgid "Locale Information" msgstr "Lokale Information" #: modules/computer/languages.c:96 modules/devices/gpu.c:266 #: modules/devices/spd-decode.c:1373 msgid "Source" msgstr "Quelle" #: modules/computer/languages.c:97 msgid "Address" msgstr "Adresse" #: modules/computer/languages.c:98 msgid "E-mail" msgstr "" #: modules/computer/languages.c:100 msgid "Territory" msgstr "Gebiet" #: modules/computer/languages.c:102 modules/devices/dmi.c:45 msgid "Date" msgstr "Datum" #: modules/computer/languages.c:103 msgid "Codeset" msgstr "" #: modules/computer/loadavg.c:64 msgid "Couldn't obtain load average" msgstr "Konnte Durchschnittsbelastung nicht abrufen" #: modules/computer/memory_usage.c:131 msgid "Total physical memory usable by the system" msgstr "" #: modules/computer/memory_usage.c:132 msgid "Free memory which is not used for anything" msgstr "" #: modules/computer/memory_usage.c:133 msgid "Virtual memory, total swap space available" msgstr "" #: modules/computer/memory_usage.c:134 msgid "Virtual memory, remaining swap space available" msgstr "" #: modules/computer/memory_usage.c:135 msgid "Memory present within main memory and in the swapfile" msgstr "" #: modules/computer/memory_usage.c:136 msgid "HighTotal value can vary based on the type of kernel used" msgstr "" #: modules/computer/memory_usage.c:137 msgid "Amount of memory that is not directly mapped into kernel space" msgstr "" #: modules/computer/memory_usage.c:138 msgid "LowTotal value can vary based on the type of kernel used" msgstr "" #: modules/computer/memory_usage.c:139 msgid "Total and free memory directly mapped into kernel space" msgstr "" #: modules/computer/memory_usage.c:140 msgid "Available memory for allocation to any process, without swapping" msgstr "" #: modules/computer/memory_usage.c:141 msgid "Memory in buffer cache, temporary storage for raw disk blocks" msgstr "" #: modules/computer/memory_usage.c:142 msgid "Memory in the page cache (diskcache, shared memory, tmpfs and shmem)" msgstr "" #: modules/computer/memory_usage.c:143 msgid "Memory used more recently and not swapped out or reclaimed" msgstr "" #: modules/computer/memory_usage.c:144 msgid "Memory not been used recently and can be swapped out or reclaimed" msgstr "" #: modules/computer/memory_usage.c:145 msgid "Anonymous memory used more recently and not swapped out" msgstr "" #: modules/computer/memory_usage.c:146 msgid "Anonymous memory not been used and can be swapped out" msgstr "" #: modules/computer/memory_usage.c:147 msgid "Pagecache memory been used more recently and not reclaimed" msgstr "" #: modules/computer/memory_usage.c:148 msgid "Pagecache memory reclaimable without huge performance impact" msgstr "" #: modules/computer/memory_usage.c:149 msgid "Unevictable pages can't be swapped out for a variety of reasons" msgstr "" #: modules/computer/memory_usage.c:150 msgid "Pages locked to memory using the mlock() system call" msgstr "" #: modules/computer/memory_usage.c:151 msgid "Memory consumed by the zswap backend (compressed size)" msgstr "" #: modules/computer/memory_usage.c:152 msgid "Amount of anonymous memory stored in zswap (original size)" msgstr "" #: modules/computer/memory_usage.c:153 msgid "Memory waiting to be written back to disk" msgstr "" #: modules/computer/memory_usage.c:154 msgid "Memory which is actively being written back to disk" msgstr "" #: modules/computer/memory_usage.c:155 msgid "Non-file backed pages mapped into userspace page tables" msgstr "" #: modules/computer/memory_usage.c:156 msgid "Files which have been mmapped, such as libraries" msgstr "" #: modules/computer/memory_usage.c:157 msgid "Total memory used by shared memory (shmem) and tmpfs" msgstr "" #: modules/computer/memory_usage.c:158 msgid "Kernel allocations reclaimable under memory pressure" msgstr "" #: modules/computer/memory_usage.c:159 msgid "In-kernel data structures cache" msgstr "" #: modules/computer/memory_usage.c:160 msgid "Part of Slab, that might be reclaimed, such as caches" msgstr "" #: modules/computer/memory_usage.c:161 msgid "Part of Slab, that cannot be reclaimed on memory pressure" msgstr "" #: modules/computer/memory_usage.c:162 msgid "Memory consumed by the kernel stacks of all tasks" msgstr "" #: modules/computer/memory_usage.c:163 msgid "Memory consumed by userspace page tables" msgstr "" #: modules/computer/memory_usage.c:164 msgid "Memory consumed by secondary page tables" msgstr "" #: modules/computer/memory_usage.c:165 msgid "Previous counted pages which had been written to the server" msgstr "" #: modules/computer/memory_usage.c:166 msgid "Memory used for block device bounce buffers" msgstr "" #: modules/computer/memory_usage.c:167 msgid "Memory used by FUSE for temporary writeback buffers" msgstr "" #: modules/computer/memory_usage.c:168 msgid "Total memory currently available to be allocated on the system" msgstr "" #: modules/computer/memory_usage.c:169 msgid "The amount of memory presently allocated on the system" msgstr "" #: modules/computer/memory_usage.c:170 msgid "Total size of vmalloc virtual address space" msgstr "" #: modules/computer/memory_usage.c:171 msgid "Amount of vmalloc area which is used" msgstr "" #: modules/computer/memory_usage.c:172 msgid "Largest contiguous block of vmalloc area which is free" msgstr "" #: modules/computer/memory_usage.c:173 msgid "Memory allocated to the percpu allocator" msgstr "" #: modules/computer/memory_usage.c:174 msgid "Amount of memory the kernel identifies as corrupted" msgstr "" #: modules/computer/memory_usage.c:175 msgid "Non-file backed huge pages mapped into userspace page tables" msgstr "" #: modules/computer/memory_usage.c:176 msgid "Memory used by shmem and tmpfs allocated with huge pages" msgstr "" #: modules/computer/memory_usage.c:177 msgid "Shared memory mapped into userspace with huge pages" msgstr "" #: modules/computer/memory_usage.c:178 msgid "Memory used for fs data (page cache) allocated with huge pages" msgstr "" #: modules/computer/memory_usage.c:179 msgid "Page cache mapped into userspace with huge pages" msgstr "" #: modules/computer/memory_usage.c:180 msgid "Memory reserved for the Contiguous Memory Allocator (CMA)" msgstr "" #: modules/computer/memory_usage.c:181 msgid "Free remaining memory in the CMA reserves" msgstr "" #: modules/computer/memory_usage.c:182 msgid "Amount of unaccepted memory usable by the kernel" msgstr "" #: modules/computer/memory_usage.c:183 msgid "Size of the pool of huge pages" msgstr "" #: modules/computer/memory_usage.c:184 msgid "Number of huge pages available" msgstr "" #: modules/computer/memory_usage.c:185 msgid "Number of huge pages reserved" msgstr "" #: modules/computer/memory_usage.c:186 msgid "Number of huge pages surplus" msgstr "" #: modules/computer/memory_usage.c:187 msgid "Huge page size, used in conjunction with hugepages parameter" msgstr "" #: modules/computer/memory_usage.c:188 msgid "Total amount of memory consumed by huge pages of all sizes" msgstr "" #: modules/computer/memory_usage.c:189 msgid "Breakdown of page table sizes of 4k size" msgstr "" #: modules/computer/memory_usage.c:190 msgid "Breakdown of page table sizes of 2M size" msgstr "" #: modules/computer/memory_usage.c:191 msgid "Breakdown of page table sizes of 1G size" msgstr "" #: modules/computer/modules.c:168 msgid "Update kernel module icon table" msgstr "" #: modules/computer/modules.c:338 modules/computer/modules.c:339 #: modules/computer/modules.c:340 modules/computer/modules.c:341 #: modules/computer/modules.c:342 modules/computer/modules.c:343 #: modules/devices/dmi.c:117 modules/devices/firmware.c:245 #: modules/devices/x86/processor.c:694 msgid "(Not available)" msgstr "(Nicht verfübar)" #: modules/computer/modules.c:369 msgid "Module Information" msgstr "Modul-Information" #: modules/computer/modules.c:369 modules/devices/gpu.c:298 msgid "Path" msgstr "Pfad" #: modules/computer/modules.c:369 msgid "Used Memory" msgstr "Benutzter Speicher" #: modules/computer/modules.c:371 msgid "Version Magic" msgstr "" #: modules/computer/modules.c:372 msgid "In Linus' Tree" msgstr "" #: modules/computer/modules.c:373 msgid "Retpoline Enabled" msgstr "Retpoline aktiviert" #: modules/computer/modules.c:373 msgid "Copyright" msgstr "Urheberrechte" #: modules/computer/modules.c:373 msgid "Author" msgstr "Autor" #: modules/computer/modules.c:374 msgid "License" msgstr "Lizenz" #: modules/computer/modules.c:380 msgid "Dependencies" msgstr "Abhängigkeiten" #: modules/computer/os.c:153 modules/computer/os.c:154 #: modules/computer/os.c:155 modules/computer/os.c:156 msgid "GNU C Library" msgstr "" #: modules/computer/os.c:157 msgid "uClibc or uClibc-ng" msgstr "uClibc oder uClibc-ng" #: modules/computer/os.c:158 msgid "diet libc" msgstr "" #: modules/computer/os.c:229 modules/computer/os.c:232 msgid "GNOME Shell " msgstr "" #: modules/computer/os.c:240 modules/computer/os.c:243 msgid "Version: " msgstr "" #: modules/computer/os.c:261 modules/computer/os.c:264 msgid "MATE Desktop Environment " msgstr "" #: modules/computer/os.c:297 #, c-format msgid "Unknown (Window Manager: %s)" msgstr "Unbekannt (Fenstermanager: %s)" #. !/{desktop environment} on {session type} #: modules/computer/os.c:308 #, c-format msgid "%s on %s" msgstr "%s auf %s" #: modules/computer/os.c:376 msgid "Terminal" msgstr "" #: modules/computer/os.c:392 msgid "User access allowed" msgstr "Benutzerzugriff erlaubt" #: modules/computer/os.c:394 msgid "User access forbidden" msgstr "Benutzerzugriff verboten" #: modules/computer/os.c:396 msgid "Access allowed (running as superuser)" msgstr "Zugriff erlaubt (läuft als superuser)" #: modules/computer/os.c:398 msgid "Access forbidden? (running as superuser)" msgstr "Zugriff verboten? (läuft als superuser)" #: modules/computer/os.c:407 modules/computer/os.c:793 msgid "Disabled" msgstr "Deaktiviert" #: modules/computer/os.c:409 msgid "Partially enabled (mmap base+stack+VDSO base)" msgstr "Teilweise aktiviert (mmap base+stack+VDSO Basis)" #: modules/computer/os.c:411 msgid "Fully enabled (mmap base+stack+VDSO base+heap)" msgstr "Voll aktiviert (mmap base+stack+VDSO base+heap)" #. !/bits of entropy for rng (0) #: modules/computer/os.c:420 msgid "(None or not available)" msgstr "(Keiner oder keiner verfügbar)" #. !/bits of entropy for rng (low/poor value) #: modules/computer/os.c:421 #, c-format msgid "%d bits (low)" msgstr "%d bits (klein)" #. !/bits of entropy for rng (medium value) #: modules/computer/os.c:422 #, c-format msgid "%d bits (medium)" msgstr "" #. !/bits of entropy for rng (high/good value) #: modules/computer/os.c:423 #, c-format msgid "%d bits (healthy)" msgstr "%d bits (gesund)" #: modules/computer/os.c:788 msgid "Not installed" msgstr "Nicht installiert" #: modules/computer/os.c:791 msgid "Enabled" msgstr "Aktiviert" #: modules/computer/users.c:50 msgid "User Information" msgstr "Benutzerinformation" #: modules/computer/users.c:51 msgid "User ID" msgstr "Benutzer-ID" #: modules/computer/users.c:54 msgid "Default Shell" msgstr "" #: modules/devices/alpha/processor.c:88 modules/devices.c:865 #: modules/devices/devicetree.c:162 modules/devices/devicetree.c:208 #: modules/devices/devicetree/pmac_data.c:80 #: modules/devices/e2k/processor.c:361 modules/devices/e2k/processor.c:416 #: modules/devices/gpu.c:116 modules/devices/ia64/processor.c:165 #: modules/devices/loongarch64/processor.c:96 #: modules/devices/m68k/processor.c:84 modules/devices/mips/processor.c:75 #: modules/devices/monitors.c:404 modules/devices/parisc/processor.c:155 #: modules/devices/ppc/processor.c:158 modules/devices/riscv/processor.c:242 #: modules/devices/s390/processor.c:132 modules/devices/x86/processor.c:811 msgid "Model" msgstr "Modell" #: modules/devices/alpha/processor.c:89 msgid "Platform String" msgstr "" #: modules/devices/alpha/processor.c:90 modules/devices/arm/processor.c:344 #: modules/devices/e2k/processor.c:363 modules/devices/e2k/processor.c:416 #: modules/devices/ia64/processor.c:167 #: modules/devices/loongarch64/processor.c:98 #: modules/devices/m68k/processor.c:87 modules/devices/mips/processor.c:77 #: modules/devices/parisc/processor.c:158 modules/devices/ppc/processor.c:160 #: modules/devices/riscv/processor.c:246 modules/devices/sh/processor.c:87 #: modules/devices/x86/processor.c:658 modules/devices/x86/processor.c:811 msgid "Frequency" msgstr "Taktfrequenz" #: modules/devices/alpha/processor.c:91 modules/devices/arm/processor.c:345 #: modules/devices/e2k/processor.c:364 modules/devices/ia64/processor.c:168 #: modules/devices/m68k/processor.c:88 modules/devices/mips/processor.c:78 #: modules/devices/parisc/processor.c:159 modules/devices/ppc/processor.c:161 #: modules/devices/s390/processor.c:134 modules/devices/sh/processor.c:90 #: modules/devices/x86/processor.c:659 msgid "BogoMips" msgstr "" #: modules/devices/alpha/processor.c:92 modules/devices/arm/processor.c:346 #: modules/devices/e2k/processor.c:365 modules/devices/ia64/processor.c:169 #: modules/devices/loongarch64/processor.c:101 #: modules/devices/m68k/processor.c:89 modules/devices/mips/processor.c:79 #: modules/devices/parisc/processor.c:160 modules/devices/ppc/processor.c:162 #: modules/devices/riscv/processor.c:247 modules/devices/s390/processor.c:135 #: modules/devices/sh/processor.c:91 modules/devices/sparc/processor.c:77 #: modules/devices/x86/processor.c:660 msgid "Byte Order" msgstr "Byte-Reihenfolge" #. !/flag:swp #: modules/devices/arm/arm_data.c:42 msgctxt "arm-flag" msgid "SWP instruction (atomic read-modify-write)" msgstr "" #. !/flag:half #: modules/devices/arm/arm_data.c:43 msgctxt "arm-flag" msgid "Half-word loads and stores" msgstr "Halbwörter-Ladung und Lagerung" #. !/flag:thumb #: modules/devices/arm/arm_data.c:44 msgctxt "arm-flag" msgid "Thumb (16-bit instruction set)" msgstr "" #. !/flag:26bit #: modules/devices/arm/arm_data.c:45 msgctxt "arm-flag" msgid "26-Bit Model (Processor status register folded into program counter)" msgstr "" "26-Bit Modell (Prozessor-Status register zusammengeklappt im Programmzähler)" #. !/flag:fastmult #: modules/devices/arm/arm_data.c:46 msgctxt "arm-flag" msgid "32x32->64-bit multiplication" msgstr "32x32->64-bit Multiplikation" #. !/flag:fpa #: modules/devices/arm/arm_data.c:47 msgctxt "arm-flag" msgid "Floating point accelerator" msgstr "Floating point Beschleuniger" #. !/flag:vfp #: modules/devices/arm/arm_data.c:48 msgctxt "arm-flag" msgid "VFP (early SIMD vector floating point instructions)" msgstr "" #. !/flag:edsp #: modules/devices/arm/arm_data.c:49 msgctxt "arm-flag" msgid "DSP extensions (the 'e' variant of the ARM9 CPUs, and all others above)" msgstr "" #. !/flag:java #: modules/devices/arm/arm_data.c:50 msgctxt "arm-flag" msgid "Jazelle (Java bytecode accelerator)" msgstr "Jazelle (Java bytecode Beschleuniger)" #. !/flag:iwmmxt #: modules/devices/arm/arm_data.c:51 msgctxt "arm-flag" msgid "SIMD instructions similar to Intel MMX" msgstr "SIMD Anweisung ähnlich zu Intel MMX" #. !/flag:crunch #: modules/devices/arm/arm_data.c:52 msgctxt "arm-flag" msgid "MaverickCrunch coprocessor (if kernel support enabled)" msgstr "MaverickCrunch coprocessor (falls kernel Unterstützung aktiviert)" #. !/flag:thumbee #: modules/devices/arm/arm_data.c:53 msgctxt "arm-flag" msgid "ThumbEE" msgstr "" #. !/flag:neon #: modules/devices/arm/arm_data.c:54 msgctxt "arm-flag" msgid "Advanced SIMD/NEON on AArch32" msgstr "Erweitertes SIMD/NEON auf AArch32" #. !/flag:evtstrm #: modules/devices/arm/arm_data.c:55 msgctxt "arm-flag" msgid "Kernel event stream using generic architected timer" msgstr "Kernel event stream benutzt generischen architektonischen timer" #. !/flag:vfpv3 #: modules/devices/arm/arm_data.c:56 msgctxt "arm-flag" msgid "VFP version 3" msgstr "" #. !/flag:vfpv3d16 #: modules/devices/arm/arm_data.c:57 msgctxt "arm-flag" msgid "VFP version 3 with 16 D-registers" msgstr "VFP Version 3 mit 16 D-Registern" #. !/flag:vfpv4 #: modules/devices/arm/arm_data.c:58 msgctxt "arm-flag" msgid "VFP version 4 with fast context switching" msgstr "VFP version 4 mit schnellen Kontextwechsel" #. !/flag:vfpd32 #: modules/devices/arm/arm_data.c:59 msgctxt "arm-flag" msgid "VFP with 32 D-registers" msgstr "VFP mit 32 D-Registern" #. !/flag:tls #: modules/devices/arm/arm_data.c:60 msgctxt "arm-flag" msgid "TLS register" msgstr "TLS Register" #. !/flag:idiva #: modules/devices/arm/arm_data.c:61 msgctxt "arm-flag" msgid "SDIV and UDIV hardware division in ARM mode" msgstr "SDIV und UDIV hardware Teilung in ARM mode" #. !/flag:idivt #: modules/devices/arm/arm_data.c:62 msgctxt "arm-flag" msgid "SDIV and UDIV hardware division in Thumb mode" msgstr "SDIV und UDIV hardware Teilung in Thumb mode" #. !/flag:lpae #: modules/devices/arm/arm_data.c:63 msgctxt "arm-flag" msgid "40-bit Large Physical Address Extension" msgstr "" #. !/flag:pmull #: modules/devices/arm/arm_data.c:65 msgctxt "arm-flag" msgid "64x64->128-bit F2m multiplication (arch>=8)" msgstr "" #. !/flag:aes #: modules/devices/arm/arm_data.c:66 msgctxt "arm-flag" msgid "Crypto:AES (arch>=8)" msgstr "" #. !/flag:sha1 #: modules/devices/arm/arm_data.c:67 msgctxt "arm-flag" msgid "Crypto:SHA1 (arch>=8)" msgstr "" #. !/flag:sha2 #: modules/devices/arm/arm_data.c:68 msgctxt "arm-flag" msgid "Crypto:SHA2 (arch>=8)" msgstr "" #. !/flag:crc32 #: modules/devices/arm/arm_data.c:69 msgctxt "arm-flag" msgid "CRC32 checksum instructions (arch>=8)" msgstr "CRC32 checksum Anweisungen (arch>=8)" #. !/flag:fp #: modules/devices/arm/arm_data.c:71 msgctxt "arm-flag" msgid "Floating-point on AArch64 (arch>=8)" msgstr "" #. !/flag:asimd #: modules/devices/arm/arm_data.c:72 msgctxt "arm-flag" msgid "Advanced SIMD/NEON on AArch64 (arch>=8)" msgstr "Erweitertes SIMD/NEON auf AArch64 (arch>=8)" #. !/flag:atomics #: modules/devices/arm/arm_data.c:73 msgctxt "arm-flag" msgid "Atomic instructions on AArch64 (arch>=8)" msgstr "" #. !/flag:fphp #: modules/devices/arm/arm_data.c:74 msgctxt "arm-flag" msgid "Half precision floating point on AArch64 (arch>=8)" msgstr "" #. !/flag:asimdhp #: modules/devices/arm/arm_data.c:75 msgctxt "arm-flag" msgid "Advanced SIMD with BFloat16 on AArch64 (arch>=8)" msgstr "" #. !/flag:cpuid #: modules/devices/arm/arm_data.c:76 msgctxt "arm-flag" msgid "CPU features can be read on AArch64 (arch>=8)" msgstr "" #. !/flag:asimdrdm #: modules/devices/arm/arm_data.c:77 msgctxt "arm-flag" msgid "Advanced SIMD rounding Double MulAcc on AArch64 (arch>=8)" msgstr "" #. !/flag:jscvt #: modules/devices/arm/arm_data.c:78 msgctxt "arm-flag" msgid "JacaScript conversion on AArch64 (arch>=8)" msgstr "" #. !/flag:fcma #: modules/devices/arm/arm_data.c:79 msgctxt "arm-flag" msgid "Complex number SIMD on AArch64 (arch>=8)" msgstr "" #. !/flag:lrcpc #: modules/devices/arm/arm_data.c:80 msgctxt "arm-flag" msgid "Weak release consistency on AArch64 (arch>=8)" msgstr "" #. !/flag:dcpop #: modules/devices/arm/arm_data.c:81 msgctxt "arm-flag" msgid "Data cache clean to Point of Persistence on AArch64 (arch>=8)" msgstr "" #. !/flag:sha3 #: modules/devices/arm/arm_data.c:82 msgctxt "arm-flag" msgid "SHA-3 instructions on AArch64 (arch>=8)" msgstr "" #. !/flag:sm3 #: modules/devices/arm/arm_data.c:83 msgctxt "arm-flag" msgid "SM3 instructions on AArch64 (arch>=8)" msgstr "" #. !/flag:sm4 #: modules/devices/arm/arm_data.c:84 msgctxt "arm-flag" msgid "SM4 instructions on AArch64 (arch>=8)" msgstr "" #. !/flag:asimddp #: modules/devices/arm/arm_data.c:85 msgctxt "arm-flag" msgid "SIMD Dot Product on AArch64 (arch>=8)" msgstr "" #. !/flag:sha512 #: modules/devices/arm/arm_data.c:86 msgctxt "arm-flag" msgid "SHA512 instructions on AArch64 (arch>=8)" msgstr "" #. !/flag:sve #: modules/devices/arm/arm_data.c:87 msgctxt "arm-flag" msgid "Scalable Vector Extension on AArch64 (arch>=8)" msgstr "" #: modules/devices/arm/processor.c:143 msgid "ARM Processor" msgstr "ARM Prozessor" #: modules/devices/arm/processor.c:214 modules/devices/riscv/processor.c:211 #: modules/devices/x86/processor.c:609 msgid "Empty List" msgstr "Leere Liste" #: modules/devices/arm/processor.c:239 modules/devices/gpu.c:204 #: modules/devices/gpu.c:294 modules/devices/x86/processor.c:267 msgid "Clocks" msgstr "" #: modules/devices/arm/processor.c:285 modules/devices/arm/processor.c:298 #: modules/devices/x86/processor.c:313 modules/devices/x86/processor.c:326 #, c-format msgid "%.2f-%.2f %s=%dx\n" msgstr "" #: modules/devices/arm/processor.c:341 msgid "Linux Name" msgstr "" #: modules/devices/arm/processor.c:342 msgid "Decoded Name" msgstr "Dekodierter Name" #: modules/devices/arm/processor.c:343 modules/network/net.c:476 msgid "Mode" msgstr "Modus" #: modules/devices/arm/processor.c:349 msgid "ARM" msgstr "" #: modules/devices/arm/processor.c:350 msgid "Implementer" msgstr "Implementierer" #: modules/devices/arm/processor.c:351 modules/devices/dmi_memory.c:874 msgid "Part" msgstr "" #: modules/devices/arm/processor.c:352 modules/devices/ia64/processor.c:162 #: modules/devices/parisc/processor.c:156 modules/devices/riscv/processor.c:243 msgid "Architecture" msgstr "Architektur" #: modules/devices/arm/processor.c:353 msgid "Variant" msgstr "Variante" #: modules/devices/arm/processor.c:355 modules/devices/riscv/processor.c:250 #: modules/devices/sparc/processor.c:78 modules/devices/x86/processor.c:666 msgid "Capabilities" msgstr "Fähigkeiten" #: modules/devices/arm/processor.c:477 msgid "SOC/Package" msgstr "" #: modules/devices/arm/processor.c:481 modules/devices/x86/processor.c:752 msgid "Logical CPU Config" msgstr "Logische CPU Konfiguration" #: modules/devices/arm/processor.c:498 msgid "SOC/Package Information" msgstr "" #: modules/devices/battery.c:178 #, c-format msgid "" "\n" "[Battery: %s]\n" "State=%s (load: %s)\n" "Capacity=%s / %s (%.2f%%)\n" "Battery Technology=%s (%s)\n" "Manufacturer=%s\n" "Model Number=%s\n" "Serial Number=%s\n" msgstr "" "\n" "[Akku: %s]\n" "Status=%s (load: %s)\n" "Kapazität=%s / %s (%.2f%%)\n" "Akku-Technologie=%s (%s)\n" "Hersteller=%s\n" "Modellnummer=%s\n" "Seriennummer=%s\n" #: modules/devices/battery.c:257 #, c-format msgid "" "\n" "[AC Power Supply: %s]\n" "Online=%s\n" "AC Power Type=%s\n" msgstr "" #: modules/devices/battery.c:279 #, c-format msgid "" "\n" "[Battery: %s]\n" "State=%s\n" "Capacity=%s / %s\n" "Battery Technology=%s\n" "Manufacturer=%s\n" "Model Number=%s\n" "Serial Number=%s\n" msgstr "" "\n" "[Akku: %s]\n" "Status=%s\n" "Kapazität=%s / %s\n" "Akku-Technologie=%s\n" "Hersteller=%s\n" "Modellnummer=%s\n" "Seriennummer=%s\n" #: modules/devices/battery.c:372 #, fuzzy, c-format msgid "" "\n" "[Battery (APM)]\n" "Charge=%d%%\n" "Remaining Charge=%s of %s\n" "Using=%s\n" "APM driver version=%s\n" "APM BIOS version=%s\n" msgstr "" "\n" "[Akku (APM)]\n" "Ladung=%d%%\n" "Verbleibende Ladung=%s von %s\n" "Using=%s\n" "APM Driver-Version=%s\n" "APM BIOS-Version=%s\n" #: modules/devices/battery.c:384 #, fuzzy, c-format msgid "" "\n" "[Battery (APM)]\n" "Charge=%d%%\n" "Using=%s\n" "APM driver version=%s\n" "APM BIOS version=%s\n" msgstr "" "\n" "[Akku (APM)]\n" "Ladung=%d%%\n" "Using=%s\n" "APM Driver-Version=%s\n" "APM BIOS-Version=%s\n" #: modules/devices/battery.c:413 msgid "" "[No batteries]\n" "No batteries found on this system=\n" msgstr "" "[Keine Akkus]\n" "Keine Akkus in diesem System gefunden=\n" #: modules/devices.c:100 msgid "Graphics Processors" msgstr "Grafikprozessoren" #: modules/devices.c:101 modules/devices/monitors.c:449 #: modules/devices/monitors.c:495 msgid "Monitors" msgstr "Bildschirme" #: modules/devices.c:102 modules/devices/pci.c:175 msgid "PCI Devices" msgstr "PCI-Geräte" #: modules/devices.c:103 modules/devices/usb.c:211 msgid "USB Devices" msgstr "USB-Geräte" #: modules/devices.c:104 msgid "Firmware" msgstr "" #: modules/devices.c:106 msgid "Battery" msgstr "Akku" #: modules/devices.c:107 msgid "Sensors" msgstr "Sensoren" #: modules/devices.c:110 msgid "System DMI" msgstr "" #: modules/devices.c:111 msgid "Memory Devices" msgstr "Speichergeräte" #: modules/devices.c:113 modules/devices.c:115 msgid "Device Tree" msgstr "" #: modules/devices.c:117 msgid "Resources" msgstr "Ressourcen" #: modules/devices.c:594 msgid "WSL2" msgstr "" #: modules/devices.c:841 msgid "Sensor" msgstr "" #: modules/devices.c:899 modules/devices/dmi_memory.c:806 msgid "Devices" msgstr "Geräte" #: modules/devices.c:911 msgid "Update PCI ID listing" msgstr "" #: modules/devices.c:916 msgid "Update USB ID listing" msgstr "" #: modules/devices.c:921 msgid "Update EDID vendor codes" msgstr "" #: modules/devices.c:926 msgid "Update IEEE OUI vendor codes" msgstr "" #: modules/devices.c:931 msgid "Update SD card manufacturer information" msgstr "" #: modules/devices.c:938 msgid "Update CPU flags database" msgstr "" #: modules/devices.c:973 msgid "Gathers information about hardware devices" msgstr "Sammelt Informationen über die Hardware-Geräte" #: modules/devices.c:994 msgid "A copy of pci.ids is not available on the system." msgstr "" #: modules/devices.c:997 msgid "A full pci.ids is not available on the system." msgstr "" #: modules/devices.c:1002 msgid "Resource information requires superuser privileges" msgstr "" #: modules/devices.c:1008 msgid "" "Any NVMe storage devices present are not listed.\n" "udisks2 is required for NVMe devices." msgstr "" #: modules/devices/devicetree.c:51 msgid "Properties" msgstr "Eigenschaften" #: modules/devices/devicetree.c:52 msgid "Children" msgstr "" #: modules/devices/devicetree.c:88 msgid "Node" msgstr "" #: modules/devices/devicetree.c:89 msgid "Node Path" msgstr "" #: modules/devices/devicetree.c:90 msgid "Alias" msgstr "" #: modules/devices/devicetree.c:91 msgid "Symbol" msgstr "" #: modules/devices/devicetree.c:144 modules/devices/devicetree/pmac_data.c:79 msgid "Platform" msgstr "Plattform" #: modules/devices/devicetree.c:145 modules/devices/devicetree.c:210 #: modules/devices/gpu.c:299 msgid "Compatible" msgstr "Kompatibel" #: modules/devices/devicetree.c:146 msgid "GPU-compatible" msgstr "GPU-kompatibel" #: modules/devices/devicetree.c:161 msgid "Raspberry Pi or Compatible" msgstr "Raspberry Pi oder kompatibles" #: modules/devices/devicetree.c:163 modules/devices/devicetree.c:190 #: modules/devices/devicetree.c:209 modules/devices/devicetree/rpi_data.c:169 #: modules/devices/dmi.c:42 modules/devices/dmi.c:52 modules/devices/dmi.c:58 #: modules/devices/spd-decode.c:1383 modules/devices/usb.c:181 msgid "Serial Number" msgstr "Seriennummer" #: modules/devices/devicetree.c:164 modules/devices/devicetree/rpi_data.c:166 msgid "RCode" msgstr "" #: modules/devices/devicetree.c:164 msgid "No revision code available; unable to lookup model details." msgstr "Kein Revisionscode verfügbar; unfähig Modelldetails abzurufen" #: modules/devices/devicetree.c:189 msgid "More" msgstr "Mehr" #: modules/devices/devicetree.c:270 msgid "Messages" msgstr "Nachrichten" #: modules/devices/devicetree/pmac_data.c:78 msgid "Apple Power Macintosh" msgstr "" #: modules/devices/devicetree/pmac_data.c:83 msgid "Detected as" msgstr "Erkannt als" #: modules/devices/devicetree/pmac_data.c:84 msgid "PMAC Flags" msgstr "" #: modules/devices/devicetree/pmac_data.c:85 msgid "L2 Cache" msgstr "" #: modules/devices/devicetree/pmac_data.c:86 msgid "PMAC Generation" msgstr "" #: modules/devices/devicetree/rpi_data.c:161 #: modules/devices/devicetree/rpi_data.c:162 msgid "Raspberry Pi" msgstr "" #: modules/devices/devicetree/rpi_data.c:162 msgid "Board Name" msgstr "" #: modules/devices/devicetree/rpi_data.c:163 msgid "PCB Revision" msgstr "" #: modules/devices/devicetree/rpi_data.c:164 msgid "Introduction" msgstr "Einführung" #: modules/devices/devicetree/rpi_data.c:165 modules/devices/usb.c:173 msgid "Manufacturer" msgstr "Hersteller" #: modules/devices/devicetree/rpi_data.c:167 msgid "SOC (spec)" msgstr "SOC (Spezifikation)" #: modules/devices/devicetree/rpi_data.c:168 msgid "Memory (spec)" msgstr "Speicher (Spezifikation)" #: modules/devices/devicetree/rpi_data.c:170 msgid "Permanent overvolt bit" msgstr "Permanenter Überspannungsbit " #: modules/devices/devicetree/rpi_data.c:170 msgctxt "rpi-ov-bit" msgid "Set" msgstr "Eingestellt" #: modules/devices/devicetree/rpi_data.c:170 msgctxt "rpi-ov-bit" msgid "Not set" msgstr "Nicht eingestellt" #: modules/devices/dmi.c:37 modules/devices/inputdevices.c:145 #: modules/devices/usb.c:170 msgid "Product" msgstr "Produkt" #: modules/devices/dmi.c:39 modules/devices/e2k/processor.c:360 #: modules/devices/ia64/processor.c:164 #: modules/devices/loongarch64/processor.c:95 modules/devices/sh/processor.c:86 msgid "Family" msgstr "Familie" #: modules/devices/dmi.c:43 msgid "SKU" msgstr "" #: modules/devices/dmi.c:44 msgid "BIOS" msgstr "" #: modules/devices/dmi.c:53 modules/devices/dmi.c:59 msgid "Asset Tag" msgstr "" #: modules/devices/dmi.c:161 msgid "DMI Unavailable" msgstr "DMI nicht verfügbar" #: modules/devices/dmi.c:162 msgid "DMI is not available. Perhaps this platform does not provide DMI." msgstr "" "DMI ist nicht verfügbar. Vielleicht stellt diese Plattform DMI nicht bereit." #: modules/devices/dmi_memory.c:620 modules/devices/dmi_memory.c:859 msgid "Memory Device List" msgstr "Speichergeräteliste" #: modules/devices/dmi_memory.c:668 msgid "Memory Array" msgstr "Speicher Array" #: modules/devices/dmi_memory.c:669 modules/devices/x86/processor.c:714 msgid "DMI Handle" msgstr "" #: modules/devices/dmi_memory.c:670 modules/devices/dmi_memory.c:726 #: modules/devices/dmi_memory.c:764 modules/devices/dmi_memory.c:871 msgid "Locator" msgstr "" #: modules/devices/dmi_memory.c:671 msgid "Use" msgstr "" #: modules/devices/dmi_memory.c:672 msgid "Error Correction Type" msgstr "Fehlerkorrekturtyp" #: modules/devices/dmi_memory.c:673 msgid "Size (Present / Max)" msgstr "Größe (Present / Max)" #: modules/devices/dmi_memory.c:674 msgid "Devices (Populated / Sockets)" msgstr "" #: modules/devices/dmi_memory.c:675 modules/devices/dmi_memory.c:807 msgid "Types Present" msgstr "" #: modules/devices/dmi_memory.c:676 msgid "ROM Size" msgstr "" #: modules/devices/dmi_memory.c:724 modules/devices/dmi_memory.c:762 msgid "Memory Socket" msgstr "Speichersockel" #: modules/devices/dmi_memory.c:725 modules/devices/dmi_memory.c:763 msgid "DMI Handles (Array, Socket)" msgstr "" #: modules/devices/dmi_memory.c:727 modules/devices/dmi_memory.c:765 msgid "Bank Locator" msgstr "" #: modules/devices/dmi_memory.c:728 modules/devices/spd-decode.c:1376 msgid "Form Factor" msgstr "Formfaktor" #: modules/devices/dmi_memory.c:732 modules/devices/spd-decode.c:1382 msgid "Part Number" msgstr "Artikelnummer" #: modules/devices/dmi_memory.c:734 msgid "Rated Speed" msgstr "Nenngeschwindigkeit" #: modules/devices/dmi_memory.c:735 msgid "Configured Speed" msgstr "Konfigurierte Geschwindigkeit" #: modules/devices/dmi_memory.c:736 msgid "Data Width/Total Width" msgstr "Datenbreite/Gesamtbreite" #: modules/devices/dmi_memory.c:737 msgid "Rank" msgstr "" #: modules/devices/dmi_memory.c:738 msgid "Minimum Voltage" msgstr "Minimale Spannung" #: modules/devices/dmi_memory.c:739 msgid "Maximum Voltage" msgstr "Maximale Spannung" #: modules/devices/dmi_memory.c:740 msgid "Configured Voltage" msgstr "Konfigurierte Spannung" #: modules/devices/dmi_memory.c:766 modules/devices/dmi_memory.c:773 #: modules/devices/monitors.c:495 msgid "(Empty)" msgstr "(Leer)" #: modules/devices/dmi_memory.c:804 msgid "Serial Presence Detect (SPD) Summary" msgstr "Serial Presence Detect (SPD) Zusammenfassung" #: modules/devices/dmi_memory.c:860 msgid "(Not available - See hint box below)" msgstr "" #: modules/devices/dmi_memory.c:932 msgid "No DMI available" msgstr "" #: modules/devices/dmi_memory.c:937 msgid "dmidecode package installed" msgstr "" #: modules/devices/dmi_memory.c:948 msgid "Memory Information requires more Setup:" msgstr "" #: modules/devices/dmi_memory.c:976 msgid "" "\"More often than not, information contained in the DMI tables is " "inaccurate,\n" "incomplete or simply wrong.\" -dmidecode manual page" msgstr "" #: modules/devices/e2k/processor.c:30 modules/devices/x86/processor.c:149 msgid "Cache information not available=\n" msgstr "" #: modules/devices/e2k/processor.c:36 modules/devices/x86/processor.c:155 #, c-format msgid "Level %d (%s)=%d-way set-associative, %d sets, %dKB size\n" msgstr "" #: modules/devices/e2k/processor.c:51 msgctxt "cache-type" msgid "Data" msgstr "" #: modules/devices/e2k/processor.c:52 msgctxt "cache-type" msgid "Instruction" msgstr "" #: modules/devices/e2k/processor.c:53 msgctxt "cache-type" msgid "Unified" msgstr "" #: modules/devices/e2k/processor.c:157 modules/devices/x86/processor.c:366 msgid "Caches" msgstr "" #: modules/devices/e2k/processor.c:208 modules/devices/e2k/processor.c:225 #: modules/devices/x86/processor.c:417 modules/devices/x86/processor.c:434 #, c-format msgid "Level %d (%s)#%d=%dx %dKB (%dKB), %d-way set-associative, %d sets\n" msgstr "" #: modules/devices/firmware.c:36 msgid "Device cannot be removed easily" msgstr "Gerät kann nicht einfach entfernt werden" #: modules/devices/firmware.c:37 msgid "Device is updatable in this or any other mode" msgstr "Gerät ist updatebar in diesem oder jedem anderen Modus" #: modules/devices/firmware.c:38 msgid "Update can only be done from offline mode" msgstr "Update kann nur im offline Modus ausgeführt werden" #: modules/devices/firmware.c:39 msgid "Requires AC power" msgstr "Benötigt angestecktes Stromkabel" #: modules/devices/firmware.c:40 msgid "Is locked and can be unlocked" msgstr "Ist gesperrt und kann nicht entsperrt werden" #: modules/devices/firmware.c:41 msgid "Is found in current metadata" msgstr "Wurde in derzeitigen Metadaten gefunden" #: modules/devices/firmware.c:42 msgid "Requires a bootloader mode to be manually enabled by the user" msgstr "Bootloader Modus muss manuell vom Benutzer aktiviert werden" #: modules/devices/firmware.c:43 msgid "Has been registered with other plugins" msgstr "" #: modules/devices/firmware.c:44 msgid "Requires a reboot to apply firmware or to reload hardware" msgstr "" "Benötigt einen Neustart um Firmware zu verwenden oder neu laden der Hardware" #: modules/devices/firmware.c:45 msgid "Requires system shutdown to apply firmware" msgstr "Benötigt Systemabschaltung um Firmware zu aktivieren" #: modules/devices/firmware.c:46 msgid "Has been reported to a metadata server" msgstr "Wurde an einen Metadaten Server übermittelt" #: modules/devices/firmware.c:47 msgid "User has been notified" msgstr "Benutzer wurde informiert" #: modules/devices/firmware.c:48 msgid "Always use the runtime version rather than the bootloader" msgstr "Benutze immer die Laufzeitversion anstelle des Bootloaders" #: modules/devices/firmware.c:49 msgid "Install composite firmware on the parent before the child" msgstr "" #: modules/devices/firmware.c:50 msgid "Is currently in bootloader mode" msgstr "Ist zurzeit im Bootloader-Modus" #: modules/devices/firmware.c:51 msgid "The hardware is waiting to be replugged" msgstr "Die Hardware wartet darauf wieder eingesteckt zu werden" #: modules/devices/firmware.c:52 msgid "Ignore validation safety checks when flashing this device" msgstr "" "Ignoriere Validierungs-Sicherheitschecks wenn dieses Gerät geflashed wird" #: modules/devices/firmware.c:53 msgid "Requires the update to be retried with a new plugin" msgstr "" #: modules/devices/firmware.c:54 msgid "Do not add instance IDs from the device baseclass" msgstr "" #: modules/devices/firmware.c:55 msgid "Device update needs to be separately activated" msgstr "" #: modules/devices/firmware.c:56 msgid "" "Ensure the version is a valid semantic version, e.g. numbers separated with " "dots" msgstr "" #: modules/devices/firmware.c:57 msgid "Extra metadata can be exposed about this device" msgstr "" #: modules/devices/firmware.c:74 msgid "DeviceId" msgstr "" #: modules/devices/firmware.c:74 modules/devices/firmware.c:187 msgid "Guid" msgstr "" #: modules/devices/firmware.c:74 msgid "Plugin" msgstr "" #: modules/devices/firmware.c:74 modules/devices/firmware.c:205 #: modules/network.c:381 msgid "Flags" msgstr "" #: modules/devices/firmware.c:75 msgid "VendorId" msgstr "" #: modules/devices/firmware.c:75 msgid "VersionBootloader" msgstr "" #: modules/devices/firmware.c:76 modules/devices/firmware.c:179 msgid "Icon" msgstr "" #: modules/devices/firmware.c:76 msgid "InstallDuration" msgstr "Installationsdauer" #: modules/devices/firmware.c:76 modules/devices/firmware.c:197 msgid "Created" msgstr "Erstellt" #: modules/devices/firmware.c:244 msgid "Firmware List" msgstr "Firmware Liste" #: modules/devices/firmware.c:257 msgid "Requires the fwupd daemon." msgstr "" #: modules/devices/gpu.c:94 modules/devices/pci.c:111 #: modules/devices/storage.c:58 msgid "SVendor" msgstr "" #: modules/devices/gpu.c:95 modules/devices/pci.c:112 #: modules/devices/storage.c:59 msgid "SDevice" msgstr "" #: modules/devices/gpu.c:103 modules/devices/pci.c:122 #: modules/devices/storage.c:68 msgid "PCI Express" msgstr "" #: modules/devices/gpu.c:104 modules/devices/pci.c:124 #: modules/devices/storage.c:70 msgid "Maximum Link Width" msgstr "Maximale Linkbreite" #: modules/devices/gpu.c:105 modules/devices/pci.c:126 #: modules/devices/storage.c:71 msgid "Maximum Link Speed" msgstr "Maximale Linkgeschwindigkeit" #: modules/devices/gpu.c:105 modules/devices/pci.c:125 #: modules/devices/pci.c:126 modules/devices/storage.c:71 msgid "GT/s" msgstr "" #: modules/devices/gpu.c:115 msgid "NVIDIA" msgstr "" #: modules/devices/gpu.c:117 msgid "BIOS Version" msgstr "" #: modules/devices/gpu.c:118 msgid "UUID" msgstr "" #: modules/devices/gpu.c:197 modules/devices/gpu.c:289 #: modules/devices/inputdevices.c:140 modules/devices/pci.c:143 #: modules/devices/usb.c:169 msgid "Device Information" msgstr "Geräteinformation" #: modules/devices/gpu.c:199 modules/devices/gpu.c:291 #: modules/devices/storage.c:69 msgid "Location" msgstr "Ort" #: modules/devices/gpu.c:200 msgid "DRM Device" msgstr "DRM Gerät" #: modules/devices/gpu.c:201 modules/devices/pci.c:144 #: modules/devices/usb.c:136 modules/devices/usb.c:177 msgid "Class" msgstr "Klasse" #: modules/devices/gpu.c:210 modules/devices/pci.c:149 msgid "In Use" msgstr "In Benutzung" #: modules/devices/gpu.c:245 msgid "Unknown integrated GPU" msgstr "Unbekannte integrierte GPU" #: modules/devices/gpu.c:253 msgid "clock-frequency property" msgstr "Taktfrequenz Eigenschaft" #: modules/devices/gpu.c:254 msgid "Operating Points (OPPv1)" msgstr "" #: modules/devices/gpu.c:255 msgid "Operating Points (OPPv2)" msgstr "" #: modules/devices/gpu.c:297 msgid "Device Tree Node" msgstr "" #: modules/devices/gpu.c:300 modules/devices/monitors.c:475 #: modules/network/net.c:477 msgid "Status" msgstr "" #: modules/devices/gpu.c:317 msgid "GPUs" msgstr "" #: modules/devices/gpu.c:341 msgid "No GPU devices found" msgstr "Keine GPU-Geräte gefunden" #: modules/devices/ia64/processor.c:108 msgid "IA64 Processor" msgstr "IA64 Prozessor" #: modules/devices/ia64/processor.c:163 msgid "Architecture Revision" msgstr "Architektur-Revision" #: modules/devices/ia64/processor.c:170 msgid "CPU regs" msgstr "" #: modules/devices/ia64/processor.c:171 #: modules/devices/loongarch64/processor.c:100 msgid "Features" msgstr "Funktionen" #: modules/devices/inputdevices.c:143 modules/devices/pci.c:153 #: modules/devices/usb.c:183 msgid "Bus" msgstr "" #: modules/devices/inputdevices.c:149 msgid "Connected to" msgstr "Verbunden mit" #: modules/devices/inputdevices.c:153 msgid "InfraRed port" msgstr "Infrarot Port" #: modules/devices/loongarch64/processor.c:94 #: modules/devices/mips/processor.c:76 msgid "System Type" msgstr "Systemtyp" #: modules/devices/loongarch64/processor.c:99 msgid "BogoMIPS" msgstr "" #: modules/devices/m68k/processor.c:85 modules/devices/riscv/processor.c:245 msgid "MMU" msgstr "" #: modules/devices/m68k/processor.c:86 modules/devices/sparc/processor.c:76 msgid "FPU" msgstr "" #: modules/devices/m68k/processor.c:90 msgid "Calibration" msgstr "Kalibration" #: modules/devices/monitors.c:30 modules/devices/monitors.c:257 #: modules/devices/monitors.c:350 modules/devices/spd-decode.c:699 msgid "(Unspecified)" msgstr "(Nicht spezifiziert)" #: modules/devices/monitors.c:232 #, c-format msgid "Week %d of %d" msgstr "Woche %d von %d" #: modules/devices/monitors.c:242 msgid "Ok" msgstr "" #: modules/devices/monitors.c:242 msgid "Fail" msgstr "" #: modules/devices/monitors.c:270 modules/devices/monitors.c:278 #: modules/devices/monitors.c:286 modules/devices/monitors.c:297 #: modules/devices/monitors.c:305 modules/devices/monitors.c:312 #: modules/devices/monitors.c:320 modules/devices/monitors.c:328 #: modules/devices/monitors.c:336 modules/devices/monitors.c:342 msgid "(Empty List)" msgstr "(Leere Liste)" #: modules/devices/monitors.c:394 msgid "Signal Type" msgstr "Signaltyp" #: modules/devices/monitors.c:394 msgid "Digital" msgstr "" #: modules/devices/monitors.c:394 msgid "Analog" msgstr "" #: modules/devices/monitors.c:395 modules/devices/usb.c:135 #: modules/network.c:311 modules/network.c:364 modules/network.c:381 msgid "Interface" msgstr "Schnittstelle" #: modules/devices/monitors.c:396 msgid "Bits per Color Channel" msgstr "Bits pro Farbkanal" #: modules/devices/monitors.c:397 msgid "Speaker Allocation" msgstr "Lautsprecherzuordnung" #: modules/devices/monitors.c:398 msgid "Output (Max)" msgstr "Ausgang (Max)" #: modules/devices/monitors.c:401 msgid "EDID Device" msgstr "EDID Geräte" #: modules/devices/monitors.c:405 msgid "Serial" msgstr "Seriell" #: modules/devices/monitors.c:406 msgid "Manufacture Date" msgstr "Herstellungsdatum" #: modules/devices/monitors.c:407 msgid "EDID Meta" msgstr "" #: modules/devices/monitors.c:408 msgid "Data Size" msgstr "Datengröße" #: modules/devices/monitors.c:408 msgid "bytes" msgstr "" #: modules/devices/monitors.c:410 msgid "Extension Blocks" msgstr "Erweiterungsblöcke" #: modules/devices/monitors.c:411 msgid "Extended to" msgstr "Erweitert um" #: modules/devices/monitors.c:412 msgid "Checksum" msgstr "Prüfsumme" #: modules/devices/monitors.c:413 msgid "EDID Descriptors" msgstr "EDID-Deskriptoren" #: modules/devices/monitors.c:414 msgid "Detailed Timing Descriptors (DTD)" msgstr "Detaillierte Timing-Deskriptoren (DTD)" #: modules/devices/monitors.c:415 msgid "Established Timings Bitmap (ETB)" msgstr "Etablierte Timings Bitmap (ETB)" #: modules/devices/monitors.c:416 msgid "Standard Timings (STD)" msgstr "" #: modules/devices/monitors.c:417 msgid "E-EDID Extension Blocks" msgstr "" #: modules/devices/monitors.c:418 msgid "EIA/CEA-861 Data Blocks" msgstr "EIA/CEA-861 Datenblöcke" #: modules/devices/monitors.c:419 msgid "EIA/CEA-861 Short Audio Descriptors" msgstr "" #: modules/devices/monitors.c:420 msgid "EIA/CEA-861 Short Video Descriptors" msgstr "" #: modules/devices/monitors.c:421 msgid "DisplayID Timings" msgstr "" #: modules/devices/monitors.c:422 msgid "DisplayID Strings" msgstr "" #: modules/devices/monitors.c:423 msgid "Hex Dump" msgstr "" #: modules/devices/monitors.c:423 msgid "Data" msgstr "Daten" #: modules/devices/monitors.c:473 modules/devices/monitors.c:504 #: modules/devices/pci.c:151 modules/devices/usb.c:182 msgid "Connection" msgstr "Verbindung" #: modules/devices/monitors.c:474 msgid "DRM" msgstr "" #: modules/devices/parisc/processor.c:107 msgid "PA-RISC Processor" msgstr "" #: modules/devices/parisc/processor.c:161 msgid "HVersion" msgstr "" #: modules/devices/parisc/processor.c:162 msgid "SVersion" msgstr "" #: modules/devices/pci.c:123 msgid "Link Width" msgstr "Linkbreite" #: modules/devices/pci.c:125 msgid "Link Speed" msgstr "Linkgeschwindigkeit" #: modules/devices/pci.c:152 msgid "Domain" msgstr "" #: modules/devices/pci.c:155 msgid "Function" msgstr "Funktion" #: modules/devices/pci.c:196 msgid "No PCI devices found" msgstr "Keine PCI-Geräte gefunden" #: modules/devices/ppc/processor.c:117 msgid "POWER Processor" msgstr "POWER Prozessor" #: modules/devices/printers.c:88 msgid "⚬ Can do black and white printing=\n" msgstr "⚬ Kann schwarz/weiß drucken=\n" #: modules/devices/printers.c:90 msgid "⚬ Can do color printing=\n" msgstr "⚬ Kann farbig drucken=\n" #: modules/devices/printers.c:92 msgid "⚬ Can do duplexing=\n" msgstr "⚬ Kann zweiseitig drucken (Duplexdruck)=\n" #: modules/devices/printers.c:94 msgid "⚬ Can do staple output=\n" msgstr "⚬ Kann Ausdrucke stapeln=\n" #: modules/devices/printers.c:96 msgid "⚬ Can do copies=\n" msgstr "⚬ Kann kopieren=\n" #: modules/devices/printers.c:98 msgid "⚬ Can collate copies=\n" msgstr "⚬ Kann Ausdruck sortieren=\n" #: modules/devices/printers.c:100 msgid "⚬ Printer is rejecting jobs=\n" msgstr "⚬ Drucker weist Aufträge zurück=\n" #: modules/devices/printers.c:102 msgid "⚬ Printer was automatically discovered and added=\n" msgstr "⚬ Drucker wurde automatisch entdeckt und hinzugefügt=\n" #: modules/devices/printers.c:117 msgid "Idle" msgstr "Leerlauf" #: modules/devices/printers.c:119 msgid "Printing a Job" msgstr "Drucke einen Auftrag" #: modules/devices/printers.c:121 msgid "Stopped" msgstr "Gestoppt" #: modules/devices/printers.c:200 msgid "" "[Printers]\n" "No suitable CUPS library found=" msgstr "" "[Drucker]\n" "Keine passende CUPS-Bibliothek gefunden=" #: modules/devices/printers.c:213 msgid "[Printers (CUPS)]\n" msgstr "[Drucker (CUPS)]\n" #: modules/devices/printers.c:277 msgid "" "[Printers]\n" "No printers found=\n" msgstr "" "[Printers]\n" "Keine Drucker gefunden=\n" #: modules/devices/riscv/processor.c:244 msgid "uarch" msgstr "" #: modules/devices/riscv/riscv_data.c:37 msgctxt "rv-ext" msgid "RISC-V 32-bit" msgstr "" #: modules/devices/riscv/riscv_data.c:38 msgctxt "rv-ext" msgid "RISC-V 64-bit" msgstr "" #: modules/devices/riscv/riscv_data.c:39 msgctxt "rv-ext" msgid "RISC-V 128-bit" msgstr "" #: modules/devices/riscv/riscv_data.c:40 msgctxt "rv-ext" msgid "Base embedded integer instructions (15 registers)" msgstr "Basis eingebetteter Integer-Anweisungen (15 Register)" #: modules/devices/riscv/riscv_data.c:41 msgctxt "rv-ext" msgid "Base integer instructions (31 registers)" msgstr "Basis eingebetteter Integer-Anweisungen (31 Register)" #: modules/devices/riscv/riscv_data.c:42 msgctxt "rv-ext" msgid "Hardware integer multiply and divide" msgstr "Hardware Integer multiplizieren und dividieren" #: modules/devices/riscv/riscv_data.c:43 msgctxt "rv-ext" msgid "Atomic memory operations" msgstr "Atomare Speicheroperationen" #: modules/devices/riscv/riscv_data.c:44 msgctxt "rv-ext" msgid "Compressed 16-bit instructions" msgstr "Komprimierte 16-bit Instruktionen" #: modules/devices/riscv/riscv_data.c:45 msgctxt "rv-ext" msgid "Floating-point instructions, single-precision" msgstr "" #: modules/devices/riscv/riscv_data.c:46 msgctxt "rv-ext" msgid "Floating-point instructions, double-precision" msgstr "" #: modules/devices/riscv/riscv_data.c:47 msgctxt "rv-ext" msgid "Floating-point instructions, quad-precision" msgstr "" #: modules/devices/riscv/riscv_data.c:48 msgctxt "rv-ext" msgid "Bit manipulation instructions" msgstr "" #: modules/devices/riscv/riscv_data.c:49 msgctxt "rv-ext" msgid "Vector operations" msgstr "" #: modules/devices/riscv/riscv_data.c:50 msgctxt "rv-ext" msgid "Scalar Cryptography" msgstr "" #: modules/devices/riscv/riscv_data.c:51 msgctxt "rv-ext" msgid "Base Counters and Timers" msgstr "" #: modules/devices/riscv/riscv_data.c:52 msgctxt "rv-ext" msgid "Control and Status Register" msgstr "" #: modules/devices/riscv/riscv_data.c:53 msgctxt "rv-ext" msgid "Instruction-Fetch Fence" msgstr "" #: modules/devices/riscv/riscv_data.c:54 msgctxt "rv-ext" msgid "Hardware performance counters" msgstr "" #: modules/devices/riscv/riscv_data.c:55 msgctxt "rv-ext" msgid "Accell Index addresses" msgstr "" #: modules/devices/riscv/riscv_data.c:56 msgctxt "rv-ext" msgid "Basic bit-manipulation" msgstr "" #: modules/devices/riscv/riscv_data.c:57 msgctxt "rv-ext" msgid "Supervisor-level Instructions" msgstr "" #: modules/devices/riscv/riscv_data.c:58 msgctxt "rv-ext" msgid "User Mode" msgstr "" #: modules/devices/riscv/riscv_data.c:59 msgctxt "rv-ext" msgid "Transactional memory" msgstr "" #: modules/devices/riscv/riscv_data.c:60 msgctxt "rv-ext" msgid "Packed SIMD instructions" msgstr "" #: modules/devices/riscv/riscv_data.c:61 msgctxt "rv-ext" msgid "Decimal floating-point instructions" msgstr "" #: modules/devices/riscv/riscv_data.c:62 msgctxt "rv-ext" msgid "Dynamically translated languages" msgstr "" #: modules/devices/riscv/riscv_data.c:63 msgctxt "rv-ext" msgid "User-level interrupts" msgstr "" #: modules/devices/s390/processor.c:92 msgid "S390 Processor" msgstr "" #: modules/devices/s390/processor.c:133 msgid "ID String" msgstr "" #: modules/devices/sh/processor.c:55 msgid "SuperH Processor" msgstr "" #: modules/devices/sh/processor.c:88 msgid "Bus Frequency" msgstr "" #: modules/devices/sh/processor.c:89 msgid "Module Frequency" msgstr "" #: modules/devices/spd-decode.c:128 modules/devices/spd-decode.c:144 msgid "Unspecified" msgstr "" #: modules/devices/spd-decode.c:130 modules/devices/spd-decode.c:146 msgid "Invalid" msgstr "" #: modules/devices/spd-decode.c:358 msgid "Row address bits" msgstr "" #: modules/devices/spd-decode.c:359 msgid "Column address bits" msgstr "" #: modules/devices/spd-decode.c:360 msgid "Number of rows" msgstr "" #: modules/devices/spd-decode.c:361 msgid "Data width" msgstr "" #: modules/devices/spd-decode.c:362 msgid "Interface signal levels" msgstr "" #: modules/devices/spd-decode.c:363 msgid "Configuration type" msgstr "" #: modules/devices/spd-decode.c:364 msgid "Refresh" msgstr "" #: modules/devices/spd-decode.c:365 modules/devices/spd-decode.c:442 #: modules/devices/spd-decode.c:721 msgid "Timings" msgstr "" #: modules/devices/spd-decode.c:589 modules/devices/spd-decode.c:858 #: modules/devices/spd-decode.c:899 modules/devices/spd-decode.c:1111 #: modules/devices/x86/processor.c:716 msgid "Voltage" msgstr "" #: modules/devices/spd-decode.c:590 modules/devices/spd-decode.c:901 #: modules/devices/spd-decode.c:1113 msgid "JEDEC Timings" msgstr "" #: modules/devices/spd-decode.c:697 msgid "Ranks" msgstr "" #: modules/devices/spd-decode.c:698 msgid "IO Pins per Chip" msgstr "" #: modules/devices/spd-decode.c:699 msgid "Die count" msgstr "" #: modules/devices/spd-decode.c:700 msgid "Thermal Sensor" msgstr "" #: modules/devices/spd-decode.c:700 msgid "Present" msgstr "" #: modules/devices/spd-decode.c:700 msgid "Not present" msgstr "" #: modules/devices/spd-decode.c:701 msgid "Supported Voltages" msgstr "" #: modules/devices/spd-decode.c:705 msgid "Supported CAS Latencies" msgstr "" #: modules/devices/spd-decode.c:856 msgid "XMP Profile" msgstr "" #: modules/devices/spd-decode.c:857 modules/devices/usb.c:176 #: modules/network/net.c:438 msgid "Speed" msgstr "" #: modules/devices/spd-decode.c:859 msgid "XMP Timings" msgstr "" #: modules/devices/spd-decode.c:900 msgid "XMP" msgstr "" #: modules/devices/spd-decode.c:1372 msgid "Serial Presence Detect (SPD)" msgstr "" #: modules/devices/spd-decode.c:1375 msgid "SPD Revision" msgstr "" #: modules/devices/spd-decode.c:1378 msgid "Module Vendor" msgstr "Modulhersteller" #: modules/devices/spd-decode.c:1380 msgid "DRAM Vendor" msgstr "DRAM Hersteller" #: modules/devices/spd-decode.c:1385 msgid "Manufacturing Date (Year / Week)" msgstr "" #: modules/devices/storage.c:46 modules/devices/storage.c:55 msgid "NVMe Controller" msgstr "" #: modules/devices/storage.c:138 msgid "Read Error Rate" msgstr "" #: modules/devices/storage.c:139 msgid "Throughput Performance" msgstr "" #: modules/devices/storage.c:140 msgid "Spin-Up Time" msgstr "" #: modules/devices/storage.c:141 msgid "Start/Stop Count" msgstr "" #: modules/devices/storage.c:142 msgid "Reallocated Sector Count" msgstr "" #: modules/devices/storage.c:143 msgid "Read Channel Margin" msgstr "" #: modules/devices/storage.c:144 msgid "Seek Error Rate" msgstr "" #: modules/devices/storage.c:145 msgid "Seek Timer Performance" msgstr "" #: modules/devices/storage.c:146 modules/devices/storage.c:185 msgid "Power-On Hours" msgstr "" #: modules/devices/storage.c:147 msgid "Spin Retry Count" msgstr "" #: modules/devices/storage.c:148 msgid "Calibration Retry Count" msgstr "" #: modules/devices/storage.c:149 msgid "Power Cycle Count" msgstr "" #: modules/devices/storage.c:150 modules/devices/storage.c:167 msgid "Soft Read Error Rate" msgstr "" #: modules/devices/storage.c:151 msgid "Runtime Bad Block" msgstr "" #: modules/devices/storage.c:152 msgid "End-to-End error" msgstr "" #: modules/devices/storage.c:153 msgid "Reported Uncorrectable Errors" msgstr "" #: modules/devices/storage.c:154 msgid "Command Timeout" msgstr "" #: modules/devices/storage.c:155 msgid "High Fly Writes" msgstr "" #: modules/devices/storage.c:156 msgid "Airflow Temperature" msgstr "" #: modules/devices/storage.c:157 msgid "G-sense Error Rate" msgstr "" #: modules/devices/storage.c:158 msgid "Power-off Retract Count" msgstr "" #: modules/devices/storage.c:159 msgid "Load Cycle Count" msgstr "" #: modules/devices/storage.c:160 modules/devices/storage.c:183 msgid "Temperature" msgstr "" #: modules/devices/storage.c:161 msgid "Hardware ECC Recovered" msgstr "" #: modules/devices/storage.c:162 msgid "Reallocation Event Count" msgstr "" #: modules/devices/storage.c:163 msgid "Current Pending Sector Count" msgstr "" #: modules/devices/storage.c:164 msgid "Uncorrectable Sector Count" msgstr "" #: modules/devices/storage.c:165 msgid "UltraDMA CRC Error Count" msgstr "" #: modules/devices/storage.c:166 msgid "Multi-Zone Error Rate" msgstr "" #: modules/devices/storage.c:168 msgid "Run Out Cancel" msgstr "" #: modules/devices/storage.c:169 msgid "Flying Height" msgstr "" #: modules/devices/storage.c:170 msgid "Spin High Current" msgstr "" #: modules/devices/storage.c:171 msgid "Spin Buzz" msgstr "" #: modules/devices/storage.c:172 msgid "Offline Seek Performance" msgstr "" #: modules/devices/storage.c:173 msgid "Disk Shift" msgstr "" #: modules/devices/storage.c:174 msgid "G-Sense Error Rate" msgstr "" #: modules/devices/storage.c:175 msgid "Loaded Hours" msgstr "" #: modules/devices/storage.c:176 msgid "Load/Unload Retry Count" msgstr "" #: modules/devices/storage.c:177 msgid "Load Friction" msgstr "" #: modules/devices/storage.c:178 msgid "Load/Unload Cycle Count" msgstr "" #: modules/devices/storage.c:179 msgid "Load-in time" msgstr "" #: modules/devices/storage.c:180 msgid "Torque Amplification Count" msgstr "" #: modules/devices/storage.c:181 msgid "Power-Off Retract Count" msgstr "" #: modules/devices/storage.c:182 msgid "GMR Head Amplitude" msgstr "" #: modules/devices/storage.c:184 msgid "Endurance Remaining" msgstr "" #: modules/devices/storage.c:186 msgid "Good Block Rate" msgstr "" #: modules/devices/storage.c:187 msgid "Head Flying Hours" msgstr "" #: modules/devices/storage.c:188 msgid "Read Error Retry Rate" msgstr "" #: modules/devices/storage.c:189 msgid "Total LBAs Written" msgstr "" #: modules/devices/storage.c:190 msgid "Total LBAs Read" msgstr "" #: modules/devices/storage.c:191 msgid "Wear leveling Count" msgstr "" #: modules/devices/storage.c:192 msgid "Total Used Reserved Block Count" msgstr "" #: modules/devices/storage.c:193 msgid "Total Program Fail Count" msgstr "" #: modules/devices/storage.c:194 msgid "Total Erase Fail Count" msgstr "" #: modules/devices/storage.c:195 msgid "Available Reserved Space" msgstr "" #: modules/devices/storage.c:196 msgid "Program Fail Count" msgstr "" #: modules/devices/storage.c:197 msgid "Erase Fail Count" msgstr "" #: modules/devices/storage.c:198 msgid "TA Counter Increased" msgstr "" #: modules/devices/storage.c:199 msgid "Total Unused Reserved Block Count" msgstr "" #: modules/devices/storage.c:204 msgid "" "\n" "[UDisks2]\n" msgstr "" #: modules/devices/storage.c:257 msgid "Removable" msgstr "" #: modules/devices/storage.c:257 msgid "Fixed" msgstr "" #: modules/devices/storage.c:260 msgid "Ejectable" msgstr "" #: modules/devices/storage.c:263 msgid "Self-monitoring (S.M.A.R.T.)" msgstr "" #: modules/devices/storage.c:266 modules/devices/x86/processor.c:664 msgid "Power Management" msgstr "" #: modules/devices/storage.c:269 msgid "Advanced Power Management" msgstr "" #: modules/devices/storage.c:272 msgid "Automatic Acoustic Management" msgstr "" #: modules/devices/storage.c:275 #, c-format msgid "" "[Drive Information]\n" "Model=%s\n" msgstr "" #: modules/devices/storage.c:285 #, c-format msgid "" "Revision=%s\n" "Block Device=%s\n" "Serial=%s\n" "Size=%s\n" "Features=%s\n" msgstr "" #: modules/devices/storage.c:300 #, c-format msgid "Rotation Rate=%d RPM\n" msgstr "" #: modules/devices/storage.c:303 #, c-format msgid "" "Media=%s\n" "Media compatibility=%s\n" msgstr "" #: modules/devices/storage.c:310 #, c-format msgid "Connection bus=%s\n" msgstr "" #: modules/devices/storage.c:322 msgid "WWN" msgstr "" #: modules/devices/storage.c:323 msgid "EUI " msgstr "" #: modules/devices/storage.c:328 msgid "WWN / EUI" msgstr "" #: modules/devices/storage.c:332 #, c-format msgid "$^$%s=[%s] %s\n" msgstr "" #: modules/devices/storage.c:334 msgid "IEEE OUI" msgstr "" #: modules/devices/storage.c:346 msgid "" "[Self-monitoring (S.M.A.R.T.)]\n" "Status=%s\n" "Bad Sectors=%" msgstr "" #: modules/devices/storage.c:352 msgid "Failing" msgstr "" #: modules/devices/storage.c:352 msgid "OK" msgstr "" #: modules/devices/storage.c:358 msgid "" "[S.M.A.R.T. Attributes]\n" "Attribute=Value / Normalized / Worst / Threshold\n" msgstr "" #: modules/devices/storage.c:381 msgid "%" msgid_plural "%" msgstr[0] "" msgstr[1] "" #: modules/devices/storage.c:419 #, c-format msgid "(%d) %s=%s\n" msgstr "" #: modules/devices/storage.c:428 #, c-format msgid "" "[Partition table]\n" "Type=%s\n" msgstr "" #: modules/devices/storage.c:447 #, c-format msgid "Partition %s=%s\n" msgstr "" #: modules/devices/storage.c:496 msgid "" "\n" "[SCSI Disks]\n" msgstr "" "\n" "[SCSI-Geräte]\n" #: modules/devices/storage.c:567 modules/devices/storage.c:773 #, c-format msgid "" "[Device Information]\n" "Model=%s\n" msgstr "" "[Geräte-Informationen]\n" "Modell=%s\n" #: modules/devices/storage.c:574 #, c-format msgid "" "Type=%s\n" "Revision=%s\n" "[SCSI Controller]\n" "Controller=scsi%d\n" "Channel=%d\n" "ID=%d\n" "LUN=%d\n" msgstr "" #: modules/devices/storage.c:621 msgid "" "\n" "[IDE Disks]\n" msgstr "" "\n" "[IDE-Geräte]\n" #: modules/devices/storage.c:707 #, c-format msgid "Driver=%s\n" msgstr "Treiber=%s\n" #: modules/devices/storage.c:779 #, c-format msgid "" "Device Name=hd%c\n" "Media=%s\n" "Cache=%dkb\n" msgstr "" #: modules/devices/storage.c:789 #, c-format msgid "" "[Geometry]\n" "Physical=%s\n" "Logical=%s\n" msgstr "" "[Geometrie]\n" "Physikalisch=%s\n" "Logisch=%s\n" #: modules/devices/storage.c:799 #, c-format msgid "" "[Capabilities]\n" "%s" msgstr "" "[Fähigkeiten]\n" "%s" #: modules/devices/storage.c:806 #, c-format msgid "" "[Speeds]\n" "%s" msgstr "" "[Geschwindigkeiten]\n" "%s" #: modules/devices/usb.c:137 modules/devices/usb.c:178 msgid "Sub-class" msgstr "" #: modules/devices/usb.c:138 modules/devices/usb.c:179 modules/network.c:348 msgid "Protocol" msgstr "Protokoll" #: modules/devices/usb.c:146 modules/network/net.c:474 msgid "Mb/s" msgstr "" #: modules/devices/usb.c:174 msgid "Max Current" msgstr "" #: modules/devices/usb.c:174 msgid "mA" msgstr "" #: modules/devices/usb.c:175 msgid "USB Version" msgstr "" #: modules/devices/usb.c:180 msgid "Device Version" msgstr "" #: modules/devices/usb.c:222 msgid "No USB devices found." msgstr "" #: modules/devices/x86/processor.c:648 msgid "Model Name" msgstr "" #: modules/devices/x86/processor.c:649 msgid "Family, model, stepping" msgstr "Familie, Modell, Stufung" #: modules/devices/x86/processor.c:655 msgid "Microcode Version" msgstr "" #: modules/devices/x86/processor.c:656 msgid "Configuration" msgstr "Konfiguration" #: modules/devices/x86/processor.c:657 msgid "Cache Size" msgstr "Cache-Größe" #: modules/devices/x86/processor.c:657 msgid "kb" msgstr "" #: modules/devices/x86/processor.c:665 msgid "Bug Workarounds" msgstr "" #: modules/devices/x86/processor.c:692 msgid "Socket Information" msgstr "" #: modules/devices/x86/processor.c:695 msgid "(Not available; Perhaps try running hardinfo2 as root.)" msgstr "" #: modules/devices/x86/processor.c:713 msgid "CPU Socket" msgstr "" #: modules/devices/x86/processor.c:717 msgid "External Clock" msgstr "" #: modules/devices/x86/processor.c:718 msgid "Max Frequency" msgstr "" #: modules/devices/x86/processor.c:749 msgid "Package Information" msgstr "" #: modules/devices/x86/processor.c:811 msgid "Socket:Core" msgstr "" #. !/flag:fpu #: modules/devices/x86/x86_data.c:48 msgctxt "x86-flag" msgid "Onboard FPU (floating point support)" msgstr "" #. !/flag:vme #: modules/devices/x86/x86_data.c:49 msgctxt "x86-flag" msgid "Virtual 8086 mode enhancements" msgstr "" #. !/flag:de #: modules/devices/x86/x86_data.c:50 msgctxt "x86-flag" msgid "Debugging Extensions (CR4.DE)" msgstr "" #. !/flag:pse #: modules/devices/x86/x86_data.c:51 msgctxt "x86-flag" msgid "Page Size Extensions (4MB memory pages)" msgstr "" #. !/flag:tsc #: modules/devices/x86/x86_data.c:52 msgctxt "x86-flag" msgid "Time Stamp Counter (RDTSC)" msgstr "" #. !/flag:msr #: modules/devices/x86/x86_data.c:53 msgctxt "x86-flag" msgid "Model-Specific Registers (RDMSR, WRMSR)" msgstr "" #. !/flag:pae #: modules/devices/x86/x86_data.c:54 msgctxt "x86-flag" msgid "Physical Address Extensions (support for more than 4GB of RAM)" msgstr "" #. !/flag:mce #: modules/devices/x86/x86_data.c:55 msgctxt "x86-flag" msgid "Machine Check Exception" msgstr "" #. !/flag:cx8 #: modules/devices/x86/x86_data.c:56 msgctxt "x86-flag" msgid "CMPXCHG8 instruction (64-bit compare-and-swap)" msgstr "" #. !/flag:apic #: modules/devices/x86/x86_data.c:57 msgctxt "x86-flag" msgid "Onboard APIC" msgstr "" #. !/flag:sep #: modules/devices/x86/x86_data.c:58 msgctxt "x86-flag" msgid "SYSENTER/SYSEXIT" msgstr "" #. !/flag:mtrr #: modules/devices/x86/x86_data.c:59 msgctxt "x86-flag" msgid "Memory Type Range Registers" msgstr "" #. !/flag:pge #: modules/devices/x86/x86_data.c:60 msgctxt "x86-flag" msgid "Page Global Enable (global bit in PDEs and PTEs)" msgstr "" #. !/flag:mca #: modules/devices/x86/x86_data.c:61 msgctxt "x86-flag" msgid "Machine Check Architecture" msgstr "" #. !/flag:cmov #: modules/devices/x86/x86_data.c:62 msgctxt "x86-flag" msgid "CMOV instructions (conditional move) (also FCMOV)" msgstr "" #. !/flag:pat #: modules/devices/x86/x86_data.c:63 msgctxt "x86-flag" msgid "Page Attribute Table" msgstr "" #. !/flag:pse36 #: modules/devices/x86/x86_data.c:64 msgctxt "x86-flag" msgid "36-bit PSEs (huge pages)" msgstr "" #. !/flag:pn #: modules/devices/x86/x86_data.c:65 msgctxt "x86-flag" msgid "Processor serial number" msgstr "" #. !/flag:clflush #: modules/devices/x86/x86_data.c:66 msgctxt "x86-flag" msgid "Cache Line Flush instruction" msgstr "" #. !/flag:dts #: modules/devices/x86/x86_data.c:67 msgctxt "x86-flag" msgid "" "Debug Store (buffer for debugging and profiling instructions), or " "alternately: digital thermal sensor" msgstr "" #. !/flag:acpi #: modules/devices/x86/x86_data.c:68 msgctxt "x86-flag" msgid "ACPI via MSR (temperature monitoring and clock speed modulation)" msgstr "" #. !/flag:mmx #: modules/devices/x86/x86_data.c:69 msgctxt "x86-flag" msgid "Multimedia Extensions" msgstr "" #. !/flag:fxsr #: modules/devices/x86/x86_data.c:70 msgctxt "x86-flag" msgid "FXSAVE/FXRSTOR, CR4.OSFXSR" msgstr "" #. !/flag:sse #: modules/devices/x86/x86_data.c:71 msgctxt "x86-flag" msgid "Intel SSE vector instructions" msgstr "" #. !/flag:sse2 #: modules/devices/x86/x86_data.c:72 msgctxt "x86-flag" msgid "SSE2" msgstr "" #. !/flag:ss #: modules/devices/x86/x86_data.c:73 msgctxt "x86-flag" msgid "CPU self snoop" msgstr "" #. !/flag:ht #: modules/devices/x86/x86_data.c:74 msgctxt "x86-flag" msgid "Hyper-Threading" msgstr "" #. !/flag:tm #: modules/devices/x86/x86_data.c:75 msgctxt "x86-flag" msgid "Automatic clock control (Thermal Monitor)" msgstr "" #. !/flag:ia64 #: modules/devices/x86/x86_data.c:76 msgctxt "x86-flag" msgid "" "Intel Itanium Architecture 64-bit (not to be confused with Intel's 64-bit " "x86 architecture with flag x86-64 or \"AMD64\" bit indicated by flag lm)" msgstr "" #. !/flag:pbe #: modules/devices/x86/x86_data.c:77 msgctxt "x86-flag" msgid "Pending Break Enable (PBE# pin) wakeup support" msgstr "" #. !/flag:syscall #: modules/devices/x86/x86_data.c:80 msgctxt "x86-flag" msgid "SYSCALL (Fast System Call) and SYSRET (Return From Fast System Call)" msgstr "" #. !/flag:mp #: modules/devices/x86/x86_data.c:81 msgctxt "x86-flag" msgid "Multiprocessing Capable." msgstr "" #. !/flag:nx #: modules/devices/x86/x86_data.c:82 msgctxt "x86-flag" msgid "Execute Disable" msgstr "" #. !/flag:mmxext #: modules/devices/x86/x86_data.c:83 msgctxt "x86-flag" msgid "AMD MMX extensions" msgstr "" #. !/flag:fxsr_opt #: modules/devices/x86/x86_data.c:84 msgctxt "x86-flag" msgid "FXSAVE/FXRSTOR optimizations" msgstr "" #. !/flag:pdpe1gb #: modules/devices/x86/x86_data.c:85 msgctxt "x86-flag" msgid "One GB pages (allows hugepagesz=1G)" msgstr "" #. !/flag:rdtscp #: modules/devices/x86/x86_data.c:86 msgctxt "x86-flag" msgid "Read Time-Stamp Counter and Processor ID" msgstr "" #. !/flag:lm #: modules/devices/x86/x86_data.c:87 msgctxt "x86-flag" msgid "Long Mode (x86-64: amd64, also known as Intel 64, i.e. 64-bit capable)" msgstr "" #. !/flag:3dnow #: modules/devices/x86/x86_data.c:88 msgctxt "x86-flag" msgid "3DNow! (AMD vector instructions, competing with Intel's SSE1)" msgstr "" #. !/flag:3dnowext #: modules/devices/x86/x86_data.c:89 msgctxt "x86-flag" msgid "AMD 3DNow! extensions" msgstr "" #. !/flag:recovery #: modules/devices/x86/x86_data.c:91 msgctxt "x86-flag" msgid "CPU in recovery mode" msgstr "" #. !/flag:longrun #: modules/devices/x86/x86_data.c:92 msgctxt "x86-flag" msgid "Longrun power control" msgstr "" #. !/flag:lrti #: modules/devices/x86/x86_data.c:93 msgctxt "x86-flag" msgid "LongRun table interface" msgstr "" #. !/flag:cxmmx #: modules/devices/x86/x86_data.c:95 msgctxt "x86-flag" msgid "Cyrix MMX extensions" msgstr "" #. !/flag:k6_mtrr #: modules/devices/x86/x86_data.c:96 msgctxt "x86-flag" msgid "AMD K6 nonstandard MTRRs" msgstr "" #. !/flag:cyrix_arr #: modules/devices/x86/x86_data.c:97 msgctxt "x86-flag" msgid "Cyrix ARRs (= MTRRs)" msgstr "" #. !/flag:centaur_mcr #: modules/devices/x86/x86_data.c:98 msgctxt "x86-flag" msgid "Centaur MCRs (= MTRRs)" msgstr "" #. !/flag:constant_tsc #: modules/devices/x86/x86_data.c:99 msgctxt "x86-flag" msgid "TSC ticks at a constant rate" msgstr "" #. !/flag:up #: modules/devices/x86/x86_data.c:100 msgctxt "x86-flag" msgid "SMP kernel running on UP" msgstr "" #. !/flag:art #: modules/devices/x86/x86_data.c:101 msgctxt "x86-flag" msgid "Always-Running Timer" msgstr "" #. !/flag:arch_perfmon #: modules/devices/x86/x86_data.c:102 msgctxt "x86-flag" msgid "Intel Architectural PerfMon" msgstr "" #. !/flag:pebs #: modules/devices/x86/x86_data.c:103 msgctxt "x86-flag" msgid "Precise-Event Based Sampling" msgstr "" #. !/flag:bts #: modules/devices/x86/x86_data.c:104 msgctxt "x86-flag" msgid "Branch Trace Store" msgstr "" #. !/flag:rep_good #: modules/devices/x86/x86_data.c:105 msgctxt "x86-flag" msgid "rep microcode works well" msgstr "" #. !/flag:acc_power #: modules/devices/x86/x86_data.c:106 msgctxt "x86-flag" msgid "AMD accumulated power mechanism" msgstr "" #. !/flag:nopl #: modules/devices/x86/x86_data.c:107 msgctxt "x86-flag" msgid "The NOPL (0F 1F) instructions" msgstr "" #. !/flag:xtopology #: modules/devices/x86/x86_data.c:108 msgctxt "x86-flag" msgid "cpu topology enum extensions" msgstr "" #. !/flag:tsc_reliable #: modules/devices/x86/x86_data.c:109 msgctxt "x86-flag" msgid "TSC is known to be reliable" msgstr "" #. !/flag:nonstop_tsc #: modules/devices/x86/x86_data.c:110 msgctxt "x86-flag" msgid "TSC does not stop in C states" msgstr "" #. !/flag:extd_apicid #: modules/devices/x86/x86_data.c:111 msgctxt "x86-flag" msgid "has extended APICID (8 bits)" msgstr "" #. !/flag:amd_dcm #: modules/devices/x86/x86_data.c:112 msgctxt "x86-flag" msgid "multi-node processor" msgstr "" #. !/flag:aperfmperf #: modules/devices/x86/x86_data.c:113 msgctxt "x86-flag" msgid "APERFMPERF" msgstr "" #. !/flag:eagerfpu #: modules/devices/x86/x86_data.c:114 msgctxt "x86-flag" msgid "Non lazy FPU restore" msgstr "" #. !/flag:nonstop_tsc_s3 #: modules/devices/x86/x86_data.c:115 msgctxt "x86-flag" msgid "TSC doesn't stop in S3 state" msgstr "" #. !/flag:mce_recovery #: modules/devices/x86/x86_data.c:116 msgctxt "x86-flag" msgid "CPU has recoverable machine checks" msgstr "" #. !/flag:pni #: modules/devices/x86/x86_data.c:119 msgctxt "x86-flag" msgid "SSE-3 (\"Prescott New Instructions\")" msgstr "" #. !/flag:pclmulqdq #: modules/devices/x86/x86_data.c:120 msgctxt "x86-flag" msgid "" "Perform a Carry-Less Multiplication of Quadword instruction - accelerator " "for GCM)" msgstr "" #. !/flag:dtes64 #: modules/devices/x86/x86_data.c:121 msgctxt "x86-flag" msgid "64-bit Debug Store" msgstr "" #. !/flag:monitor #: modules/devices/x86/x86_data.c:122 msgctxt "x86-flag" msgid "Monitor/Mwait support (Intel SSE3 supplements)" msgstr "" #. !/flag:ds_cpl #: modules/devices/x86/x86_data.c:123 msgctxt "x86-flag" msgid "CPL Qual. Debug Store" msgstr "" #. !/flag:vmx #: modules/devices/x86/x86_data.c:124 msgctxt "x86-flag" msgid "Hardware virtualization, Intel VMX" msgstr "" #. !/flag:smx #: modules/devices/x86/x86_data.c:125 msgctxt "x86-flag" msgid "Safer mode TXT (TPM support)" msgstr "" #. !/flag:est #: modules/devices/x86/x86_data.c:126 msgctxt "x86-flag" msgid "Enhanced SpeedStep" msgstr "" #. !/flag:tm2 #: modules/devices/x86/x86_data.c:127 msgctxt "x86-flag" msgid "Thermal Monitor 2" msgstr "" #. !/flag:ssse3 #: modules/devices/x86/x86_data.c:128 msgctxt "x86-flag" msgid "Supplemental SSE-3" msgstr "" #. !/flag:cid #: modules/devices/x86/x86_data.c:129 msgctxt "x86-flag" msgid "Context ID" msgstr "" #. !/flag:sdbg #: modules/devices/x86/x86_data.c:130 msgctxt "x86-flag" msgid "silicon debug" msgstr "" #. !/flag:fma #: modules/devices/x86/x86_data.c:131 msgctxt "x86-flag" msgid "Fused multiply-add" msgstr "" #. !/flag:cx16 #: modules/devices/x86/x86_data.c:132 msgctxt "x86-flag" msgid "CMPXCHG16B" msgstr "" #. !/flag:xtpr #: modules/devices/x86/x86_data.c:133 msgctxt "x86-flag" msgid "Send Task Priority Messages" msgstr "" #. !/flag:pdcm #: modules/devices/x86/x86_data.c:134 msgctxt "x86-flag" msgid "Performance Capabilities" msgstr "" #. !/flag:pcid #: modules/devices/x86/x86_data.c:135 msgctxt "x86-flag" msgid "Process Context Identifiers" msgstr "" #. !/flag:dca #: modules/devices/x86/x86_data.c:136 msgctxt "x86-flag" msgid "Direct Cache Access" msgstr "" #. !/flag:sse4_1 #: modules/devices/x86/x86_data.c:137 msgctxt "x86-flag" msgid "SSE-4.1" msgstr "" #. !/flag:sse4_2 #: modules/devices/x86/x86_data.c:138 msgctxt "x86-flag" msgid "SSE-4.2" msgstr "" #. !/flag:x2apic #: modules/devices/x86/x86_data.c:139 msgctxt "x86-flag" msgid "x2APIC" msgstr "" #. !/flag:movbe #: modules/devices/x86/x86_data.c:140 msgctxt "x86-flag" msgid "Move Data After Swapping Bytes instruction" msgstr "" #. !/flag:popcnt #: modules/devices/x86/x86_data.c:141 msgctxt "x86-flag" msgid "" "Return the Count of Number of Bits Set to 1 instruction (Hamming weight, i." "e. bit count)" msgstr "" #: modules/devices/x86/x86_data.c:142 msgctxt "x86-flag" msgid "Tsc deadline timer" msgstr "" #. !/flag:aes/aes-ni #: modules/devices/x86/x86_data.c:143 msgctxt "x86-flag" msgid "Advanced Encryption Standard (New Instructions)" msgstr "" #. !/flag:xsave #: modules/devices/x86/x86_data.c:144 msgctxt "x86-flag" msgid "Save Processor Extended States: also provides XGETBY,XRSTOR,XSETBY" msgstr "" #. !/flag:avx #: modules/devices/x86/x86_data.c:145 msgctxt "x86-flag" msgid "Advanced Vector Extensions" msgstr "" #. !/flag:f16c #: modules/devices/x86/x86_data.c:146 msgctxt "x86-flag" msgid "16-bit fp conversions (CVT16)" msgstr "" #. !/flag:rdrand #: modules/devices/x86/x86_data.c:147 msgctxt "x86-flag" msgid "Read Random Number from hardware random number generator instruction" msgstr "" #. !/flag:hypervisor #: modules/devices/x86/x86_data.c:148 msgctxt "x86-flag" msgid "Running on a hypervisor" msgstr "" #. !/flag:rng #: modules/devices/x86/x86_data.c:150 msgctxt "x86-flag" msgid "Random Number Generator present (xstore)" msgstr "" #. !/flag:rng_en #: modules/devices/x86/x86_data.c:151 msgctxt "x86-flag" msgid "Random Number Generator enabled" msgstr "" #. !/flag:ace #: modules/devices/x86/x86_data.c:152 msgctxt "x86-flag" msgid "on-CPU crypto (xcrypt)" msgstr "" #. !/flag:ace_en #: modules/devices/x86/x86_data.c:153 msgctxt "x86-flag" msgid "on-CPU crypto enabled" msgstr "" #. !/flag:ace2 #: modules/devices/x86/x86_data.c:154 msgctxt "x86-flag" msgid "Advanced Cryptography Engine v2" msgstr "" #. !/flag:ace2_en #: modules/devices/x86/x86_data.c:155 msgctxt "x86-flag" msgid "ACE v2 enabled" msgstr "" #. !/flag:phe #: modules/devices/x86/x86_data.c:156 msgctxt "x86-flag" msgid "PadLock Hash Engine" msgstr "" #. !/flag:phe_en #: modules/devices/x86/x86_data.c:157 msgctxt "x86-flag" msgid "PHE enabled" msgstr "" #. !/flag:pmm #: modules/devices/x86/x86_data.c:158 msgctxt "x86-flag" msgid "PadLock Montgomery Multiplier" msgstr "" #. !/flag:pmm_en #: modules/devices/x86/x86_data.c:159 msgctxt "x86-flag" msgid "PMM enabled" msgstr "" #. !/flag:lahf_lm #: modules/devices/x86/x86_data.c:161 msgctxt "x86-flag" msgid "Load AH from Flags (LAHF) and Store AH into Flags (SAHF) in long mode" msgstr "" #. !/flag:cmp_legacy #: modules/devices/x86/x86_data.c:162 msgctxt "x86-flag" msgid "If yes HyperThreading not valid" msgstr "" #. !/flag:svm #: modules/devices/x86/x86_data.c:163 msgctxt "x86-flag" msgid "\"Secure virtual machine\": AMD-V" msgstr "" #. !/flag:extapic #: modules/devices/x86/x86_data.c:164 msgctxt "x86-flag" msgid "Extended APIC space" msgstr "" #. !/flag:cr8_legacy #: modules/devices/x86/x86_data.c:165 msgctxt "x86-flag" msgid "CR8 in 32-bit mode" msgstr "" #. !/flag:abm #: modules/devices/x86/x86_data.c:166 msgctxt "x86-flag" msgid "Advanced Bit Manipulation" msgstr "" #. !/flag:sse4a #: modules/devices/x86/x86_data.c:167 msgctxt "x86-flag" msgid "SSE-4A" msgstr "" #. !/flag:misalignsse #: modules/devices/x86/x86_data.c:168 msgctxt "x86-flag" msgid "" "indicates if a general-protection exception (#GP) is generated when some " "legacy SSE instructions operate on unaligned data. Also depends on CR0 and " "Alignment Checking bit" msgstr "" #. !/flag:3dnowprefetch #: modules/devices/x86/x86_data.c:169 msgctxt "x86-flag" msgid "3DNow prefetch instructions" msgstr "" #. !/flag:osvw #: modules/devices/x86/x86_data.c:170 msgctxt "x86-flag" msgid "" "indicates OS Visible Workaround, which allows the OS to work around " "processor errata." msgstr "" #. !/flag:ibs #: modules/devices/x86/x86_data.c:171 msgctxt "x86-flag" msgid "Instruction Based Sampling" msgstr "" #. !/flag:xop #: modules/devices/x86/x86_data.c:172 msgctxt "x86-flag" msgid "extended AVX instructions" msgstr "" #. !/flag:skinit #: modules/devices/x86/x86_data.c:173 msgctxt "x86-flag" msgid "SKINIT/STGI instructions" msgstr "" #. !/flag:wdt #: modules/devices/x86/x86_data.c:174 msgctxt "x86-flag" msgid "Watchdog timer" msgstr "" #. !/flag:lwp #: modules/devices/x86/x86_data.c:175 msgctxt "x86-flag" msgid "Light Weight Profiling" msgstr "" #. !/flag:fma4 #: modules/devices/x86/x86_data.c:176 msgctxt "x86-flag" msgid "4 operands MAC instructions" msgstr "" #. !/flag:tce #: modules/devices/x86/x86_data.c:177 msgctxt "x86-flag" msgid "translation cache extension" msgstr "" #. !/flag:nodeid_msr #: modules/devices/x86/x86_data.c:178 msgctxt "x86-flag" msgid "NodeId MSR" msgstr "" #. !/flag:tbm #: modules/devices/x86/x86_data.c:179 msgctxt "x86-flag" msgid "Trailing Bit Manipulation" msgstr "" #. !/flag:topoext #: modules/devices/x86/x86_data.c:180 msgctxt "x86-flag" msgid "Topology Extensions CPUID leafs" msgstr "" #. !/flag:perfctr_core #: modules/devices/x86/x86_data.c:181 msgctxt "x86-flag" msgid "Core Performance Counter Extensions" msgstr "" #. !/flag:perfctr_nb #: modules/devices/x86/x86_data.c:182 msgctxt "x86-flag" msgid "NB Performance Counter Extensions" msgstr "" #. !/flag:bpext #: modules/devices/x86/x86_data.c:183 msgctxt "x86-flag" msgid "data breakpoint extension" msgstr "" #. !/flag:ptsc #: modules/devices/x86/x86_data.c:184 msgctxt "x86-flag" msgid "performance time-stamp counter" msgstr "" #. !/flag:perfctr_l2 #: modules/devices/x86/x86_data.c:185 msgctxt "x86-flag" msgid "L2 Performance Counter Extensions" msgstr "" #. !/flag:mwaitx #: modules/devices/x86/x86_data.c:186 msgctxt "x86-flag" msgid "MWAIT extension (MONITORX/MWAITX)" msgstr "" #. !/flag:cpb #: modules/devices/x86/x86_data.c:188 msgctxt "x86-flag" msgid "AMD Core Performance Boost" msgstr "" #. !/flag:epb #: modules/devices/x86/x86_data.c:189 msgctxt "x86-flag" msgid "IA32_ENERGY_PERF_BIAS support" msgstr "" #. !/flag:hw_pstate #: modules/devices/x86/x86_data.c:190 msgctxt "x86-flag" msgid "AMD HW-PState" msgstr "" #. !/flag:proc_feedback #: modules/devices/x86/x86_data.c:191 msgctxt "x86-flag" msgid "AMD ProcFeedbackInterface" msgstr "" #. !/flag:intel_pt #: modules/devices/x86/x86_data.c:192 msgctxt "x86-flag" msgid "Intel Processor Tracing" msgstr "" #. !/flag:tpr_shadow #: modules/devices/x86/x86_data.c:194 msgctxt "x86-flag" msgid "Intel TPR Shadow" msgstr "" #. !/flag:vnmi #: modules/devices/x86/x86_data.c:195 msgctxt "x86-flag" msgid "Intel Virtual NMI" msgstr "" #. !/flag:flexpriority #: modules/devices/x86/x86_data.c:196 msgctxt "x86-flag" msgid "Intel FlexPriority" msgstr "" #. !/flag:ept #: modules/devices/x86/x86_data.c:197 msgctxt "x86-flag" msgid "Intel Extended Page Table" msgstr "" #. !/flag:vpid #: modules/devices/x86/x86_data.c:198 msgctxt "x86-flag" msgid "Intel Virtual Processor ID" msgstr "" #. !/flag:vmmcall #: modules/devices/x86/x86_data.c:199 msgctxt "x86-flag" msgid "prefer VMMCALL to VMCALL" msgstr "" #. !/flag:fsgsbase #: modules/devices/x86/x86_data.c:201 msgctxt "x86-flag" msgid "{RD/WR}{FS/GS}BASE instructions" msgstr "" #. !/flag:tsc_adjust #: modules/devices/x86/x86_data.c:202 msgctxt "x86-flag" msgid "TSC adjustment MSR" msgstr "" #. !/flag:bmi1 #: modules/devices/x86/x86_data.c:203 msgctxt "x86-flag" msgid "1st group bit manipulation extensions" msgstr "" #. !/flag:hle #: modules/devices/x86/x86_data.c:204 msgctxt "x86-flag" msgid "Hardware Lock Elision" msgstr "" #. !/flag:avx2 #: modules/devices/x86/x86_data.c:205 msgctxt "x86-flag" msgid "AVX2 instructions" msgstr "" #. !/flag:smep #: modules/devices/x86/x86_data.c:206 msgctxt "x86-flag" msgid "Supervisor Mode Execution Protection" msgstr "" #. !/flag:bmi2 #: modules/devices/x86/x86_data.c:207 msgctxt "x86-flag" msgid "2nd group bit manipulation extensions" msgstr "" #. !/flag:erms #: modules/devices/x86/x86_data.c:208 msgctxt "x86-flag" msgid "Enhanced REP MOVSB/STOSB" msgstr "" #. !/flag:invpcid #: modules/devices/x86/x86_data.c:209 msgctxt "x86-flag" msgid "Invalidate Processor Context ID" msgstr "" #. !/flag:rtm #: modules/devices/x86/x86_data.c:210 msgctxt "x86-flag" msgid "Restricted Transactional Memory" msgstr "" #. !/flag:cqm #: modules/devices/x86/x86_data.c:211 msgctxt "x86-flag" msgid "Cache QoS Monitoring" msgstr "" #. !/flag:mpx #: modules/devices/x86/x86_data.c:212 msgctxt "x86-flag" msgid "Memory Protection Extension" msgstr "" #. !/flag:avx512f #: modules/devices/x86/x86_data.c:213 msgctxt "x86-flag" msgid "AVX-512 foundation" msgstr "" #. !/flag:avx512dq #: modules/devices/x86/x86_data.c:214 msgctxt "x86-flag" msgid "AVX-512 Double/Quad instructions" msgstr "" #. !/flag:rdseed #: modules/devices/x86/x86_data.c:215 msgctxt "x86-flag" msgid "The RDSEED instruction" msgstr "" #. !/flag:adx #: modules/devices/x86/x86_data.c:216 msgctxt "x86-flag" msgid "The ADCX and ADOX instructions" msgstr "" #. !/flag:smap #: modules/devices/x86/x86_data.c:217 msgctxt "x86-flag" msgid "Supervisor Mode Access Prevention" msgstr "" #. !/flag:clflushopt #: modules/devices/x86/x86_data.c:218 msgctxt "x86-flag" msgid "CLFLUSHOPT instruction" msgstr "" #. !/flag:clwb #: modules/devices/x86/x86_data.c:219 msgctxt "x86-flag" msgid "CLWB instruction" msgstr "" #. !/flag:avx512pf #: modules/devices/x86/x86_data.c:220 msgctxt "x86-flag" msgid "AVX-512 Prefetch" msgstr "" #. !/flag:avx512er #: modules/devices/x86/x86_data.c:221 msgctxt "x86-flag" msgid "AVX-512 Exponential and Reciprocal" msgstr "" #. !/flag:avx512cd #: modules/devices/x86/x86_data.c:222 msgctxt "x86-flag" msgid "AVX-512 Conflict Detection" msgstr "" #. !/flag:sha_ni #: modules/devices/x86/x86_data.c:223 msgctxt "x86-flag" msgid "SHA1/SHA256 Instruction Extensions" msgstr "" #. !/flag:avx512bw #: modules/devices/x86/x86_data.c:224 msgctxt "x86-flag" msgid "AVX-512 Byte/Word instructions" msgstr "" #. !/flag:avx512vl #: modules/devices/x86/x86_data.c:225 msgctxt "x86-flag" msgid "AVX-512 128/256 Vector Length extensions" msgstr "" #. !/flag:xsaveopt #: modules/devices/x86/x86_data.c:227 msgctxt "x86-flag" msgid "Optimized XSAVE" msgstr "" #. !/flag:xsavec #: modules/devices/x86/x86_data.c:228 msgctxt "x86-flag" msgid "XSAVEC" msgstr "" #. !/flag:xgetbv1 #: modules/devices/x86/x86_data.c:229 msgctxt "x86-flag" msgid "XGETBV with ECX = 1" msgstr "" #. !/flag:xsaves #: modules/devices/x86/x86_data.c:230 msgctxt "x86-flag" msgid "XSAVES/XRSTORS" msgstr "" #. !/flag:cqm_llc #: modules/devices/x86/x86_data.c:232 msgctxt "x86-flag" msgid "LLC QoS" msgstr "" #. !/flag:cqm_occup_llc #: modules/devices/x86/x86_data.c:234 msgctxt "x86-flag" msgid "LLC occupancy monitoring" msgstr "" #. !/flag:cqm_mbm_total #: modules/devices/x86/x86_data.c:235 msgctxt "x86-flag" msgid "LLC total MBM monitoring" msgstr "" #. !/flag:cqm_mbm_local #: modules/devices/x86/x86_data.c:236 msgctxt "x86-flag" msgid "LLC local MBM monitoring" msgstr "" #. !/flag:clzero #: modules/devices/x86/x86_data.c:238 msgctxt "x86-flag" msgid "CLZERO instruction" msgstr "" #. !/flag:irperf #: modules/devices/x86/x86_data.c:239 msgctxt "x86-flag" msgid "instructions retired performance counter" msgstr "" #. !/flag:dtherm #: modules/devices/x86/x86_data.c:241 msgctxt "x86-flag" msgid "digital thermal sensor" msgstr "" #. !/flag:ida #: modules/devices/x86/x86_data.c:242 msgctxt "x86-flag" msgid "Intel Dynamic Acceleration" msgstr "" #. !/flag:arat #: modules/devices/x86/x86_data.c:243 msgctxt "x86-flag" msgid "Always Running APIC Timer" msgstr "" #. !/flag:pln #: modules/devices/x86/x86_data.c:244 msgctxt "x86-flag" msgid "Intel Power Limit Notification" msgstr "" #. !/flag:pts #: modules/devices/x86/x86_data.c:245 msgctxt "x86-flag" msgid "Intel Package Thermal Status" msgstr "" #. !/flag:hwp #: modules/devices/x86/x86_data.c:246 msgctxt "x86-flag" msgid "Intel Hardware P-states" msgstr "" #. !/flag:hwp_notify #: modules/devices/x86/x86_data.c:247 msgctxt "x86-flag" msgid "HWP notification" msgstr "" #. !/flag:hwp_act_window #: modules/devices/x86/x86_data.c:248 msgctxt "x86-flag" msgid "HWP Activity Window" msgstr "" #. !/flag:hwp_epp #: modules/devices/x86/x86_data.c:249 msgctxt "x86-flag" msgid "HWP Energy Performance Preference" msgstr "" #. !/flag:hwp_pkg_req #: modules/devices/x86/x86_data.c:250 msgctxt "x86-flag" msgid "HWP package-level request" msgstr "" #. !/flag:npt #: modules/devices/x86/x86_data.c:252 msgctxt "x86-flag" msgid "AMD Nested Page Table support" msgstr "" #. !/flag:lbrv #: modules/devices/x86/x86_data.c:253 msgctxt "x86-flag" msgid "AMD LBR Virtualization support" msgstr "" #. !/flag:svm_lock #: modules/devices/x86/x86_data.c:254 msgctxt "x86-flag" msgid "AMD SVM locking MSR" msgstr "" #. !/flag:nrip_save #: modules/devices/x86/x86_data.c:255 msgctxt "x86-flag" msgid "AMD SVM next_rip save" msgstr "" #. !/flag:tsc_scale #: modules/devices/x86/x86_data.c:256 msgctxt "x86-flag" msgid "AMD TSC scaling support" msgstr "" #. !/flag:vmcb_clean #: modules/devices/x86/x86_data.c:257 msgctxt "x86-flag" msgid "AMD VMCB clean bits support" msgstr "" #. !/flag:flushbyasid #: modules/devices/x86/x86_data.c:258 msgctxt "x86-flag" msgid "AMD flush-by-ASID support" msgstr "" #. !/flag:decodeassists #: modules/devices/x86/x86_data.c:259 msgctxt "x86-flag" msgid "AMD Decode Assists support" msgstr "" #. !/flag:pausefilter #: modules/devices/x86/x86_data.c:260 msgctxt "x86-flag" msgid "AMD filtered pause intercept" msgstr "" #. !/flag:pfthreshold #: modules/devices/x86/x86_data.c:261 msgctxt "x86-flag" msgid "AMD pause filter threshold" msgstr "" #. !/flag:avic #: modules/devices/x86/x86_data.c:262 msgctxt "x86-flag" msgid "Virtual Interrupt Controller" msgstr "" #. !/flag:pku #: modules/devices/x86/x86_data.c:264 msgctxt "x86-flag" msgid "Protection Keys for Userspace" msgstr "" #. !/flag:ospke #: modules/devices/x86/x86_data.c:265 msgctxt "x86-flag" msgid "OS Protection Keys Enable" msgstr "" #. !/flag:overflow_recov #: modules/devices/x86/x86_data.c:267 msgctxt "x86-flag" msgid "MCA overflow recovery support" msgstr "" #. !/flag:succor #: modules/devices/x86/x86_data.c:268 msgctxt "x86-flag" msgid "uncorrectable error containment and recovery" msgstr "" #. !/flag:smca #: modules/devices/x86/x86_data.c:269 msgctxt "x86-flag" msgid "Scalable MCA" msgstr "" #. !/bug:f00f #: modules/devices/x86/x86_data.c:272 msgctxt "x86-flag" msgid "Intel F00F bug" msgstr "" #. !/bug:fdiv #: modules/devices/x86/x86_data.c:273 msgctxt "x86-flag" msgid "FPU FDIV" msgstr "" #. !/bug:coma #: modules/devices/x86/x86_data.c:274 msgctxt "x86-flag" msgid "Cyrix 6x86 coma" msgstr "" #. !/bug:tlb_mmatch #: modules/devices/x86/x86_data.c:275 msgctxt "x86-flag" msgid "AMD Erratum 383" msgstr "" #. !/bug:apic_c1e #. !/bug:amd_e400 #: modules/devices/x86/x86_data.c:276 modules/devices/x86/x86_data.c:285 msgctxt "x86-flag" msgid "AMD Erratum 400" msgstr "" #. !/bug:11ap #: modules/devices/x86/x86_data.c:277 msgctxt "x86-flag" msgid "Bad local APIC aka 11AP" msgstr "" #. !/bug:fxsave_leak #: modules/devices/x86/x86_data.c:278 msgctxt "x86-flag" msgid "FXSAVE leaks FOP/FIP/FOP" msgstr "" #. !/bug:clflush_monitor #: modules/devices/x86/x86_data.c:279 msgctxt "x86-flag" msgid "AAI65, CLFLUSH required before MONITOR" msgstr "" #. !/bug:sysret_ss_attrs #: modules/devices/x86/x86_data.c:280 msgctxt "x86-flag" msgid "SYSRET doesn't fix up SS attrs" msgstr "" #. !/bug:espfix #: modules/devices/x86/x86_data.c:281 msgctxt "x86-flag" msgid "IRET to 16-bit SS corrupts ESP/RSP high bits" msgstr "" #. !/bug:null_seg #: modules/devices/x86/x86_data.c:282 msgctxt "x86-flag" msgid "Nulling a selector preserves the base" msgstr "" #. !/bug:swapgs_fence #: modules/devices/x86/x86_data.c:283 msgctxt "x86-flag" msgid "SWAPGS without input dep on GS" msgstr "" #. !/bug:monitor #: modules/devices/x86/x86_data.c:284 msgctxt "x86-flag" msgid "IPI required to wake up remote CPU" msgstr "" #. !/bug:cpu_insecure & bug:cpu_meltdown #: modules/devices/x86/x86_data.c:286 modules/devices/x86/x86_data.c:287 msgctxt "x86-flag" msgid "" "CPU is affected by meltdown attack and needs kernel page table isolation" msgstr "" #. !/bug:spectre_v1 #: modules/devices/x86/x86_data.c:288 msgctxt "x86-flag" msgid "CPU is affected by Spectre variant 1 attack with conditional branches" msgstr "" #. !/bug:spectre_v2 #: modules/devices/x86/x86_data.c:289 msgctxt "x86-flag" msgid "CPU is affected by Spectre variant 2 attack with indirect branches" msgstr "" #. !/bug:spec_store_bypass #: modules/devices/x86/x86_data.c:290 msgctxt "x86-flag" msgid "CPU is affected by speculative store bypass attack" msgstr "" #. !/bug:l1tf #: modules/devices/x86/x86_data.c:291 msgctxt "x86-flag" msgid "CPU is affected by L1 Terminal Fault" msgstr "" #. !/flag:pm:ts #: modules/devices/x86/x86_data.c:294 msgctxt "x86-flag" msgid "temperature sensor" msgstr "" #. !/flag:pm:fid #: modules/devices/x86/x86_data.c:295 msgctxt "x86-flag" msgid "frequency id control" msgstr "" #. !/flag:pm:vid #: modules/devices/x86/x86_data.c:296 msgctxt "x86-flag" msgid "voltage id control" msgstr "" #. !/flag:pm:ttp #: modules/devices/x86/x86_data.c:297 msgctxt "x86-flag" msgid "thermal trip" msgstr "" #. !/flag:pm:tm #: modules/devices/x86/x86_data.c:298 msgctxt "x86-flag" msgid "hardware thermal control" msgstr "" #. !/flag:pm:stc #: modules/devices/x86/x86_data.c:299 msgctxt "x86-flag" msgid "software thermal control" msgstr "" #. !/flag:pm:100mhzsteps #: modules/devices/x86/x86_data.c:300 msgctxt "x86-flag" msgid "100 MHz multiplier control" msgstr "" #. !/flag:pm:hwpstate #: modules/devices/x86/x86_data.c:301 msgctxt "x86-flag" msgid "hardware P-state control" msgstr "" #. !/flag:pm:cpb #: modules/devices/x86/x86_data.c:302 msgctxt "x86-flag" msgid "core performance boost" msgstr "" #. !/flag:pm:eff_freq_ro #: modules/devices/x86/x86_data.c:303 msgctxt "x86-flag" msgid "Readonly aperf/mperf" msgstr "" #. !/flag:pm:proc_feedback #: modules/devices/x86/x86_data.c:304 msgctxt "x86-flag" msgid "processor feedback interface" msgstr "" #. !/flag:pm:acc_power #: modules/devices/x86/x86_data.c:305 msgctxt "x86-flag" msgid "accumulated power mechanism" msgstr "" #: modules/network.c:61 msgid "Interfaces" msgstr "Schnittstellen" #: modules/network.c:62 msgid "IP Connections" msgstr "IP-Verbindungen" #: modules/network.c:63 msgid "Routing Table" msgstr "Routing-Tabelle" #: modules/network.c:64 modules/network.c:310 msgid "ARP Table" msgstr "ARP-Tabelle" #: modules/network.c:65 msgid "DNS Servers" msgstr "DNS-Server" #: modules/network.c:66 msgid "Statistics" msgstr "Statistiken" #: modules/network.c:67 msgid "Shared Directories" msgstr "Freigegebene Verzeichnisse" #: modules/network.c:311 modules/network.c:333 modules/network.c:364 #: modules/network/net.c:495 msgid "IP Address" msgstr "IP-Adresse" #: modules/network.c:311 msgid "MAC Address" msgstr "MAC-Adresse" #: modules/network.c:320 msgid "SAMBA" msgstr "" #: modules/network.c:321 msgid "NFS" msgstr "" #: modules/network.c:332 msgid "Name Servers" msgstr "DNS-Server" #: modules/network.c:347 msgid "Connections" msgstr "" #: modules/network.c:348 msgid "Local Address" msgstr "Lokale Adresse" #: modules/network.c:348 msgid "Foreign Address" msgstr "Fremde Adresse" #: modules/network.c:348 msgid "State" msgstr "Status" #: modules/network.c:364 msgid "Sent" msgstr "Gesendet" #: modules/network.c:364 msgid "Received" msgstr "Empfangen" #: modules/network.c:380 msgid "IP routing table" msgstr "" #: modules/network.c:381 msgid "Destination/Gateway" msgstr "Ziel/Vorgaberoute" #: modules/network.c:381 modules/network/net.c:496 msgid "Mask" msgstr "Netz-Maske" #: modules/network.c:409 msgid "Network" msgstr "Netzwerk" #: modules/network.c:442 msgid "Gathers information about this computer's network connection" msgstr "Sammelt Informationen über die Netzwerk-Verbindung dieses Computers" #: modules/network/net.c:74 msgctxt "wi-op-mode" msgid "Auto" msgstr "" #: modules/network/net.c:75 msgctxt "wi-op-mode" msgid "Ad-Hoc" msgstr "" #: modules/network/net.c:76 msgctxt "wi-op-mode" msgid "Managed" msgstr "" #: modules/network/net.c:77 msgctxt "wi-op-mode" msgid "Master" msgstr "" #: modules/network/net.c:78 msgctxt "wi-op-mode" msgid "Repeater" msgstr "" #: modules/network/net.c:79 msgctxt "wi-op-mode" msgid "Secondary" msgstr "" #: modules/network/net.c:80 msgctxt "wi-op-mode" msgid "(Unknown)" msgstr "" #: modules/network/net.c:268 modules/network/net.c:288 #: modules/network/net.c:296 msgctxt "net-if-type" msgid "Ethernet" msgstr "" #: modules/network/net.c:269 msgctxt "net-if-type" msgid "Loopback" msgstr "" #: modules/network/net.c:270 msgctxt "net-if-type" msgid "Point-to-Point" msgstr "" #: modules/network/net.c:271 modules/network/net.c:272 #: modules/network/net.c:273 modules/network/net.c:274 #: modules/network/net.c:298 msgctxt "net-if-type" msgid "Wireless" msgstr "" #: modules/network/net.c:275 msgctxt "net-if-type" msgid "Virtual Point-to-Point (TUN)" msgstr "" #: modules/network/net.c:276 msgctxt "net-if-type" msgid "Ethernet (TAP)" msgstr "" #: modules/network/net.c:277 msgctxt "net-if-type" msgid "Parallel Line Internet Protocol" msgstr "" #: modules/network/net.c:278 msgctxt "net-if-type" msgid "Infrared" msgstr "" #: modules/network/net.c:279 modules/network/net.c:297 msgctxt "net-if-type" msgid "Serial Line Internet Protocol" msgstr "" #: modules/network/net.c:280 msgctxt "net-if-type" msgid "Integrated Services Digital Network" msgstr "" #: modules/network/net.c:281 msgctxt "net-if-type" msgid "IPv6-over-IPv4 Tunnel" msgstr "" #: modules/network/net.c:282 msgctxt "net-if-type" msgid "VMWare Virtual Network Interface (NAT)" msgstr "" #: modules/network/net.c:283 msgctxt "net-if-type" msgid "VMWare Virtual Network Interface" msgstr "" #: modules/network/net.c:284 msgctxt "net-if-type" msgid "Personal Area Network (PAN)" msgstr "" #: modules/network/net.c:285 msgctxt "net-if-type" msgid "Bluetooth" msgstr "" #: modules/network/net.c:286 msgctxt "net-if-type" msgid "Bridge Interface" msgstr "" #: modules/network/net.c:287 msgctxt "net-if-type" msgid "Hamachi Virtual Personal Network" msgstr "" #: modules/network/net.c:289 msgctxt "net-if-type" msgid "Intermediate Functional Block" msgstr "" #: modules/network/net.c:290 msgctxt "net-if-type" msgid "GRE Network Tunnel" msgstr "" #: modules/network/net.c:291 msgctxt "net-if-type" msgid "Mesh Network" msgstr "" #: modules/network/net.c:292 msgctxt "net-if-type" msgid "Wireless Master Interface" msgstr "" #: modules/network/net.c:293 msgctxt "net-if-type" msgid "VirtualBox Virtual Network Interface" msgstr "" #: modules/network/net.c:299 msgctxt "net-if-type" msgid "Wireless (WAN)" msgstr "" #: modules/network/net.c:301 msgctxt "net-if-type" msgid "(Unknown)" msgstr "" #: modules/network/net.c:364 modules/network/net.c:374 msgid "Network Interfaces" msgstr "" #: modules/network/net.c:364 msgid "None Found" msgstr "" #: modules/network/net.c:431 msgid "Network Adapter Properties" msgstr "" #: modules/network/net.c:432 msgid "Interface Type" msgstr "" #: modules/network/net.c:433 msgid "Hardware Address (MAC)" msgstr "" #: modules/network/net.c:437 msgid "MTU" msgstr "" #: modules/network/net.c:439 msgid "Transfer Details" msgstr "" #: modules/network/net.c:440 msgid "Bytes Received" msgstr "" #: modules/network/net.c:441 msgid "Bytes Sent" msgstr "" #: modules/network/net.c:458 modules/network/net.c:480 #: modules/network/net.c:481 msgid "dBm" msgstr "" #: modules/network/net.c:458 msgid "mW" msgstr "" #: modules/network/net.c:472 msgid "Wireless Properties" msgstr "" #: modules/network/net.c:473 msgid "Network Name (SSID)" msgstr "" #: modules/network/net.c:474 msgid "Bit Rate" msgstr "" #: modules/network/net.c:475 msgid "Transmission Power" msgstr "" #: modules/network/net.c:478 msgid "Link Quality" msgstr "" #: modules/network/net.c:479 msgid "Signal / Noise" msgstr "" #: modules/network/net.c:494 msgid "Internet Protocol (IPv4)" msgstr "" #: modules/network/net.c:495 modules/network/net.c:496 #: modules/network/net.c:498 msgid "(Not set)" msgstr "" #: modules/network/net.c:497 msgid "Broadcast Address" msgstr "" #: includes/spd-decode.h:28 msgid "RAM" msgstr "" #, c-format #~ msgid "Module \"%s\" depends on module \"%s\", load it?" #~ msgstr "Module \"%s\" ist von Modul \"%s\" abhängig, lade Modul?" #, c-format #~ msgid "Module \"%s\" depends on module \"%s\"." #~ msgstr "Modul \"%s\" ist von Modul \"%s\" abhängig" #~ msgid "_Open..." #~ msgstr "_Öffnen..." #~ msgid "Manufacturing Date (Week / Year)" #~ msgstr "Herstellungsdatum (Woche / Jahr)" #~ msgid "_Copy to Clipboard" #~ msgstr "In die Zwischenablage _kopieren" #~ msgid "Copy to clipboard" #~ msgstr "In die Zwischenablage kopieren" #~ msgid "dmidecode utility available" #~ msgstr "dmidecode Dienstprogramm verfügbar" #~ msgid " ... and HardInfo2 running with superuser privileges" #~ msgstr "... und HardInfo2 läuft mit superuser Privilegien" #~ msgid "" #~ " ... or ee1004 module loaded and configured! " #~ "(for DDR4)" #~ msgstr "" #~ " ... or ee1004 Module geladen und konfiguriert! (für DDR4)" #~ msgid "Memory information requires one or both of the following:" #~ msgstr "Speicherinformation benötigt eins oder beides von folgendem:" #, c-format #~ msgid "" #~ "Written by %s\n" #~ "Licensed under %s" #~ msgstr "" #~ "Programmiert von %s\n" #~ "Lizenziert unter %s" #, c-format #~ msgid "No about information is associated with the %s module." #~ msgstr "Keine 'Über' Information ist mit dem Modul %s verbunden" #~ msgid "User Note" #~ msgstr "User-Hinweis" #~ msgid "" #~ "This result is from an old version of HardInfo2. Results might not be " #~ "comparable to current version. Some details are missing." #~ msgstr "" #~ "Dieses Ergebnis stammt von einer früheren Version von Hardinfo. " #~ "Ergebnisse stimmen möglicherweise nicht mit der derzeitigen Version " #~ "überein" #~ msgid "Total Memory" #~ msgstr "Gesamter Speicher" #~ msgid "Free Memory" #~ msgstr "Freier Speicher" #~ msgid "High Memory" #~ msgstr "Hoher Speicher" #~ msgid "Free High Memory" #~ msgstr "Freier hoher Speicher" #~ msgid "Low Memory" #~ msgstr "Geringer Speicher" #~ msgid "Free Low Memory" #~ msgstr "freier geringer Speicher" #~ msgid "Virtual Memory" #~ msgstr "Virtueller Speicher" #~ msgid "Free Virtual Memory" #~ msgstr "Freier virtueller Speicher" #~ msgid "(Not available; Perhaps try running HardInfo2 as root.)" #~ msgstr "" #~ "(Nicht verfügbar; Vielleicht versuchen Hardinfo als root zu starten.)" #~ msgid "DMI is not available; Perhaps try running HardInfo2 as root." #~ msgstr "" #~ "DMI nicht verfügbar; Vielleicht versuchen HardInfo2 als root zu starten." #~ msgid "RISC-V Processor" #~ msgstr "RISC-V Prozessor" #, c-format #~ msgid "" #~ "Modules:\n" #~ "%-20s %-15s %-12s\n" #~ msgstr "" #~ "Module:\n" #~ "%-20s %-15s %-12s\n" #~ msgid "File Name" #~ msgstr "Dateiname" #, c-format #~ msgid "Unknown benchmark ``%s'' or benchmark.so not loaded" #~ msgstr "Unbekannter Benchmark ``%s'' oder benchmark.so nicht geladen" #~ msgid "run benchmark; requires benchmark.so to be loaded" #~ msgstr "Starte Benchmark; benchmark.so muss geladen sein" #~ msgid "note attached to benchmark results" #~ msgstr "Hinweis angehängt an Benchmark-Ergebnisse" #~ msgid "lists modules" #~ msgstr "listet Module auf" #~ msgid "specify module to load" #~ msgstr "gibt Modul zum laden an" #~ msgid "automatically load module dependencies" #~ msgstr "Lädt Modul-Abhängigkeiten automatisch" #~ msgid "run in XML-RPC server mode" #~ msgstr "Starte in XML-RPC server Modus" #~ msgid "- System Profiler and Benchmark tool" #~ msgstr "- System-Profiler und Benchmark-Werkzeug" #, c-format #~ msgid "" #~ "No module could be loaded. Check permissions on \"%s\" and try again." #~ msgstr "" #~ "Kein Modul konnte geladen werden. Überprüfe Berechtigung von \"%s\" und " #~ "versuche es erneut" #~ msgid "" #~ "No module could be loaded. Please use hardinfo2 -l to list all available " #~ "modules and try again with a valid module list." #~ msgstr "" #~ "Kein Modul konnte geladen werden. Bitte führe hardinfo2 -l aus um alle " #~ "Module anzuzeigen und versuche es mit einer gültigen Liste erneut" #~ msgid "Contributors:" #~ msgstr "Mitwirkende:" #~ msgid "Based on work by:" #~ msgstr "Basierend auf der Arbeit von:" #~ msgid "MD5 implementation by Colin Plumb (see md5.c for details)" #~ msgstr "MD5 Implementierung von Colin Plumb (md5.c für Details)" #~ msgid "SHA1 implementation by Steve Reid (see sha1.c for details)" #~ msgstr "SHA1 Implementierung von Steve Reid (sha1.c für Details)" #~ msgid "Blowfish implementation by Paul Kocher (see blowfich.c for details)" #~ msgstr "Blowfish Implementierung von Paul Kocher (blowfich.c für Details)" #~ msgid "Raytracing benchmark by John Walker (see fbench.c for details)" #~ msgstr "Raytracing Benchmark von John Walker (fbench.c für Details)" #~ msgid "FFT benchmark by Scott Robert Ladd (see fftbench.c for details)" #~ msgstr "FFT Benchmark von Scott Robert Ladd (fftbench.c für Details)" #~ msgid "Some code partly based on x86cpucaps by Osamu Kayasono" #~ msgstr "Einiger code teilweise basierend auf x86cpucaps von Osamu Kayasono" #~ msgid "Vendor list based on GtkSysInfo by Pissens Sebastien" #~ msgstr "Verkäuferliste basiert auf GtkSysInfo von Pissens Sebastien" #~ msgid "DMI support based on code by Stewart Adam" #~ msgstr "DMI Support basiert auf Code von Stewart Adam" #~ msgid "SCSI support based on code by Pascal F. Martin" #~ msgstr "SCSI Support basiert auf code von Pascal F. Martin" #~ msgid "Tango Project" #~ msgstr "Tango Projekt" #~ msgid "The GNOME Project" #~ msgstr "Das GNOME Projekt" #~ msgid "VMWare, Inc. (USB icon from VMWare Workstation 6)" #~ msgstr "VMWare, Inc. (USB icon von VMWare Workstation 6)" #~ msgid "System information and benchmark tool" #~ msgstr "System-Informationen und Benchmark-Werkzeug" #~ msgid "translator-credits" #~ msgstr "Übersetzer-Anerkennungen" #~ msgid "About _Modules" #~ msgstr "Über _Module" #~ msgid "_Network Updater..." #~ msgstr "_Netzwerk-Updater…" #, c-format #~ msgid "%s - System Information" #~ msgstr "%s - System-Informationen" #~ msgid "System Information" #~ msgstr "System-Informationen" #~ msgid "" #~ "HardInfo2 was compiled without libsoup support. (Network Updater requires " #~ "it.)" #~ msgstr "" #~ "HardInfo2 wurde ohne libsoup-Support kompiliert. (Netzwerk-Updater " #~ "benötigt es.)" #, c-format #~ msgid "%s (error #%d)" #~ msgstr "%s (Fehlercode #%d)" #~ msgid "Could not parse XML-RPC response" #~ msgstr "Konnte XML-RPC Antwort nicht parsen" #, c-format #~ msgid "" #~ "Server says it supports API version %d, but this version of HardInfo2 " #~ "only supports API version %d." #~ msgstr "" #~ "Server sagt er supportet API Version %d, aber diese Version von Hardinfo " #~ "unterstützt nur API Version %d" #~ msgid "Contacting HardInfo2 Central Database" #~ msgstr "Kontaktiere zentrale HardInfo2-Datenbank" #~ msgid "Cleaning up" #~ msgstr "Aufräumen" #~ msgid "Network Updater" #~ msgstr "Netzwerk-Updater" #~ msgid "FPU Raytracing" #~ msgstr "FPU Raytracing" #~ msgid "Results in MiB/second. Higher is better." #~ msgstr "Ergebnisse in MiB/Sekunde. Höhere Werte sind besser." #~ msgid "Results in seconds. Lower is better." #~ msgstr "Ergebnisse in Sekunden. Niedrigere Werte sind besser." #~ msgid "" #~ "Benchmarking. Please do not move your mouse\n" #~ "or press any keys." #~ msgstr "" #~ "Benchmarke. Bitte bewege den Mauszeiger nicht\n" #~ "und drücke keine Tasten." #~ msgid "Cancel" #~ msgstr "Abbrechen" #~ msgid "Update CPU feature database" #~ msgstr "Aktualisiere CPU-Merkmale Datenbank" #~ msgid "Ressource information requires superuser privileges" #~ msgstr "Ressourceinformation benötigt Superuser Rechte" #~ msgid " eeprom module loaded (for SDR, DDR, DDR2, DDR3)" #~ msgstr "eeprom Module geladen (für SDR, DDR, DDR2, DDR3)" #~ msgid "Requires the fwupdmgr utility." #~ msgstr "Benötigt das fwupdmgr Dienstprogramm" #, c-format #~ msgid "Vendor=%s\n" #~ msgstr "Hersteller=%s\n" #~ msgid "Couldn't find a Web browser to open URL %s." #~ msgstr "Konnte keinen Web-Browser finden, um die URL %s zu öffnen." #~ msgid "CPU Blowfish" #~ msgstr "CPU Blowfish" #~ msgid "CSharp (Mono, old)" #~ msgstr "CSharp (Mono, old)" #~ msgid "CSharp (Mono)" #~ msgstr "CSharp (Mono)" #~ msgid "DMI" #~ msgstr "DMI" #~ msgid "Memory SPD" #~ msgstr "Hauptspeicher (SPD)" #~ msgid "Vendor=%s (%s)\n" #~ msgstr "Hersteller=%s (%s)\n" #~ msgid "X11 Vendor" #~ msgstr "X11-Hersteller" #~ msgid "Extensions" #~ msgstr "Erweiterungen" #~ msgid "Monitor %d=%dx%d pixels\n" #~ msgstr "Bildschirm %d=%dx%d Pixel\n" #~ msgid " (model unknown)" #~ msgstr " (unbekanntes Modell)" #~ msgid " (vendor unknown)" #~ msgstr " (unbekannter Hersteller)" #~ msgid "CPU Clock" #~ msgstr "CPU-Takt" #~ msgid "%s$CPU%d$%s=%.2fMHz\n" #~ msgstr "%s$CPU%d$%s=%.2fMHz\n" hardinfo2-hardinfo2-1331e88/po/es.po000066400000000000000000005112651474767047500171420ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: hardinfo2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-10-06 01:42+0200\n" "PO-Revision-Date: 2020-05-10 16:56+0200\n" "Last-Translator: micrococo\n" "Language-Team:\n" "Language: es\n" "X-Poedit-Basepath: ../\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: Spanish\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Lokalize 20.04.0\n" #: hardinfo2/cpu_util.c:29 msgid "Little Endian" msgstr "Little Endian" #: hardinfo2/cpu_util.c:31 msgid "Big Endian" msgstr "Big Endian" #: hardinfo2/cpu_util.c:205 hardinfo2/cpu_util.c:216 modules/devices/gpu.c:262 msgid "Frequency Scaling" msgstr "Escalado de frecuencias" #: hardinfo2/cpu_util.c:206 modules/devices/gpu.c:263 msgid "Minimum" msgstr "Mínimo" #: hardinfo2/cpu_util.c:206 hardinfo2/cpu_util.c:207 hardinfo2/cpu_util.c:208 #: hardinfo2/dt_util.c:590 modules/devices/gpu.c:263 modules/devices/gpu.c:264 msgid "kHz" msgstr "KHz" #: hardinfo2/cpu_util.c:207 modules/devices/gpu.c:264 msgid "Maximum" msgstr "Máximo" #: hardinfo2/cpu_util.c:208 msgid "Current" msgstr "Actual" #: hardinfo2/cpu_util.c:209 modules/devices/gpu.c:265 msgid "Transition Latency" msgstr "Latencia de transición" #: hardinfo2/cpu_util.c:209 modules/devices/gpu.c:265 msgid "ns" msgstr "ns" #: hardinfo2/cpu_util.c:210 msgid "Governor" msgstr "Gobernador" #: hardinfo2/cpu_util.c:211 hardinfo2/cpu_util.c:217 modules/devices.c:842 #: modules/devices/gpu.c:209 modules/devices/pci.c:148 #: modules/devices/usb.c:139 msgid "Driver" msgstr "Manejador" #: hardinfo2/cpu_util.c:223 modules/computer.c:801 #: modules/devices/arm/processor.c:255 modules/devices/e2k/processor.c:178 #: modules/devices/x86/processor.c:283 modules/devices/x86/processor.c:387 #: modules/devices/x86/processor.c:525 msgid "(Not Available)" msgstr "(no disponible)" #: hardinfo2/cpu_util.c:231 hardinfo2/cpu_util.c:233 msgid "Socket" msgstr "Zócalo" #: hardinfo2/cpu_util.c:236 hardinfo2/cpu_util.c:238 modules/devices/gpu.c:205 #: modules/devices/gpu.c:295 msgid "Core" msgstr "Núcleo" #: hardinfo2/cpu_util.c:241 #, fuzzy msgid "Book" msgstr "Asentamientos" #: hardinfo2/cpu_util.c:243 #, fuzzy msgid "Drawer" msgstr "Dibujado" #: hardinfo2/cpu_util.c:249 modules/devices/arm/processor.c:480 #: modules/devices/x86/processor.c:751 msgid "Topology" msgstr "Topología" #: hardinfo2/cpu_util.c:250 msgid "ID" msgstr "Identificador" #: hardinfo2/dmi_util.c:25 msgid "BIOS Information" msgstr "Información del BIOS" #: hardinfo2/dmi_util.c:26 modules/devices/parisc/processor.c:157 msgid "System" msgstr "Sistema" #: hardinfo2/dmi_util.c:27 msgid "Base Board" msgstr "Placa base" #: hardinfo2/dmi_util.c:28 modules/devices/dmi.c:54 msgid "Chassis" msgstr "Chasis" #: hardinfo2/dmi_util.c:29 modules/computer.c:580 modules/computer.c:1144 #: modules/devices/alpha/processor.c:87 modules/devices/arm/processor.c:340 #: modules/devices.c:99 modules/devices/e2k/processor.c:357 #: modules/devices/ia64/processor.c:159 #: modules/devices/loongarch64/processor.c:93 #: modules/devices/m68k/processor.c:83 modules/devices/mips/processor.c:74 #: modules/devices/parisc/processor.c:154 modules/devices/ppc/processor.c:157 #: modules/devices/riscv/processor.c:241 modules/devices/s390/processor.c:131 #: modules/devices/sh/processor.c:83 modules/devices/sparc/processor.c:74 #: modules/devices/x86/processor.c:647 msgid "Processor" msgstr "Procesador" #: hardinfo2/dmi_util.c:30 msgid "Memory Controller" msgstr "Controlador de memoria" #: hardinfo2/dmi_util.c:31 msgid "Memory Module" msgstr "Módulo de memoria" #: hardinfo2/dmi_util.c:32 modules/devices/e2k/processor.c:366 #: modules/devices/parisc/processor.c:163 modules/devices/x86/processor.c:663 msgid "Cache" msgstr "Caché" #: hardinfo2/dmi_util.c:33 msgid "Port Connector" msgstr "Conector de puerto" #: hardinfo2/dmi_util.c:34 msgid "System Slots" msgstr "Zócalos del sistema" #: hardinfo2/dmi_util.c:35 msgid "On Board Devices" msgstr "Dispositivos embebidos" #: hardinfo2/dmi_util.c:36 #, fuzzy msgid "OEM Strings" msgstr "Textos del fabricante" #: hardinfo2/dmi_util.c:37 msgid "System Configuration Options" msgstr "Opciones de configuración del sistema" #: hardinfo2/dmi_util.c:38 msgid "BIOS Language" msgstr "Idioma del BIOS" #: hardinfo2/dmi_util.c:39 msgid "Group Associations" msgstr "Asociaciones de grupo" #: hardinfo2/dmi_util.c:40 msgid "System Event Log" msgstr "Registro de eventos del sistema" #: hardinfo2/dmi_util.c:41 msgid "Physical Memory Array" msgstr "Matriz de memoria física" #: hardinfo2/dmi_util.c:42 msgid "Memory Device" msgstr "Dispositivo de memoria" #: hardinfo2/dmi_util.c:43 msgid "32-bit Memory Error" msgstr "Error de memoria de 32 bits" #: hardinfo2/dmi_util.c:44 msgid "Memory Array Mapped Address" msgstr "Dirección asignada de matriz de memoria" #: hardinfo2/dmi_util.c:45 msgid "Memory Device Mapped Address" msgstr "Dirección asignada de dispositivo de memoria" #: hardinfo2/dmi_util.c:46 msgid "Built-in Pointing Device" msgstr "Dispositivo apuntador embebido" #: hardinfo2/dmi_util.c:47 msgid "Portable Battery" msgstr "Batería portátil" #: hardinfo2/dmi_util.c:48 msgid "System Reset" msgstr "Reinicio del sistema" #: hardinfo2/dmi_util.c:49 msgid "Hardware Security" msgstr "Seguridad del hardware" #: hardinfo2/dmi_util.c:50 msgid "System Power Controls" msgstr "Controles de energía del sistema" #: hardinfo2/dmi_util.c:51 msgid "Voltage Probe" msgstr "Prueba de voltaje" #: hardinfo2/dmi_util.c:52 msgid "Cooling Device" msgstr "Dispositivo de refrigeración" #: hardinfo2/dmi_util.c:53 msgid "Temperature Probe" msgstr "Prueba de temperatura" #: hardinfo2/dmi_util.c:54 msgid "Electrical Current Probe" msgstr "Prueba de corriente eléctrica" #: hardinfo2/dmi_util.c:55 msgid "Out-of-band Remote Access" msgstr "Acceso remoto fuera de banda" #: hardinfo2/dmi_util.c:56 msgid "Boot Integrity Services" msgstr "Servicios de integridad del arranque" #: hardinfo2/dmi_util.c:57 msgid "System Boot" msgstr "Sistema de arranque" #: hardinfo2/dmi_util.c:58 msgid "64-bit Memory Error" msgstr "Error de memoria de 64 bits" #: hardinfo2/dmi_util.c:59 msgid "Management Device" msgstr "Dispositivo de gestión" #: hardinfo2/dmi_util.c:60 msgid "Management Device Component" msgstr "Componente de dispositivo de gestión" #: hardinfo2/dmi_util.c:61 msgid "Management Device Threshold Data" msgstr "" #: hardinfo2/dmi_util.c:62 msgid "Memory Channel" msgstr "Canal de memoria" #: hardinfo2/dmi_util.c:63 msgid "IPMI Device" msgstr "Dispositivo IPMI" #: hardinfo2/dmi_util.c:64 msgid "Power Supply" msgstr "Fuente de alimentación" #: hardinfo2/dmi_util.c:65 msgid "Additional Information" msgstr "Información adicional" #: hardinfo2/dmi_util.c:66 msgid "Onboard Device" msgstr "Dispositivo embebido" #: hardinfo2/dmi_util.c:233 msgid "Invalid chassis type (0)" msgstr "Tipo de chasis no válido (0)" #: hardinfo2/dmi_util.c:234 hardinfo2/dmi_util.c:235 msgid "Unknown chassis type" msgstr "Tipo de chasis desconocido" #: hardinfo2/dmi_util.c:236 msgid "Desktop" msgstr "De escritorio" #: hardinfo2/dmi_util.c:237 msgid "Low-profile Desktop" msgstr "De bajo rendimiento" #: hardinfo2/dmi_util.c:238 msgid "Pizza Box" msgstr "Caja de pizza" #: hardinfo2/dmi_util.c:239 msgid "Mini Tower" msgstr "Minitorre" #: hardinfo2/dmi_util.c:240 msgid "Tower" msgstr "Torre" #: hardinfo2/dmi_util.c:241 msgid "Portable" msgstr "Portátil" #: hardinfo2/dmi_util.c:242 modules/computer.c:408 modules/computer.c:417 #: modules/computer.c:440 modules/computer.c:442 msgid "Laptop" msgstr "Portátil" #: hardinfo2/dmi_util.c:243 msgid "Notebook" msgstr "Portátil" #: hardinfo2/dmi_util.c:244 msgid "Handheld" msgstr "De bolsillo" #: hardinfo2/dmi_util.c:245 msgid "Docking Station" msgstr "Estacion fija" #: hardinfo2/dmi_util.c:246 msgid "All-in-one" msgstr "Todo en uno" #: hardinfo2/dmi_util.c:247 msgid "Subnotebook" msgstr "Subportátil" #: hardinfo2/dmi_util.c:248 msgid "Space-saving" msgstr "PC Espacio-pequeño" #: hardinfo2/dmi_util.c:249 msgid "Lunch Box" msgstr "PC caja" #: hardinfo2/dmi_util.c:250 msgid "Main Server Chassis" msgstr "Servidor principal" #: hardinfo2/dmi_util.c:251 msgid "Expansion Chassis" msgstr "Carcasa de expansión" #: hardinfo2/dmi_util.c:252 msgid "Sub Chassis" msgstr "Sub servidor" #: hardinfo2/dmi_util.c:253 msgid "Bus Expansion Chassis" msgstr "Expansion de bus acoplable" #: hardinfo2/dmi_util.c:254 msgid "Peripheral Chassis" msgstr "Carcasa de periférico" #: hardinfo2/dmi_util.c:255 msgid "RAID Chassis" msgstr "RAID acoplable" #: hardinfo2/dmi_util.c:256 msgid "Rack Mount Chassis" msgstr "Rack de montaje acoplable" #: hardinfo2/dmi_util.c:257 msgid "Sealed-case PC" msgstr "PC sellada" #: hardinfo2/dmi_util.c:258 msgid "Multi-system" msgstr "Multisistema" #: hardinfo2/dmi_util.c:259 msgid "CompactPCI" msgstr "" #: hardinfo2/dmi_util.c:260 msgid "AdvancedTCA" msgstr "" #: hardinfo2/dmi_util.c:261 msgid "Blade" msgstr "" #: hardinfo2/dmi_util.c:262 msgid "Blade Enclosing" msgstr "" #: hardinfo2/dmi_util.c:263 msgid "Tablet" msgstr "Tableta" #: hardinfo2/dmi_util.c:264 msgid "Convertible" msgstr "Convertible" #: hardinfo2/dmi_util.c:265 msgid "Detachable" msgstr "Desmontable" #: hardinfo2/dmi_util.c:266 msgid "IoT Gateway" msgstr "" #: hardinfo2/dmi_util.c:267 msgid "Embedded PC" msgstr "" #: hardinfo2/dmi_util.c:268 msgid "Mini PC" msgstr "" #: hardinfo2/dmi_util.c:269 msgid "Stick PC" msgstr "" #: hardinfo2/dt_util.c:1175 msgid "phandle Map" msgstr "Mapa manejado" #: hardinfo2/dt_util.c:1176 msgid "Alias Map" msgstr "Mapa de alias" #: hardinfo2/dt_util.c:1177 msgid "Symbol Map" msgstr "Mapa de símbolos" #. !/ %d will be latest year of copyright #: hardinfo2/hardinfo.c:104 #, c-format msgid "" "Copyright (C) 2003-2023 L. A. F. Pereira. 2024-%d Hardinfo2 Project.\n" "\n" msgstr "" #: hardinfo2/hardinfo.c:106 #, c-format msgid "" "Compile-time options:\n" " Release version: %s (%s)\n" " LibSoup version: %s\n" " Data : %s\n" " Library : %s\n" " Locale : %s\n" " Compiled for : %s\n" msgstr "" #: hardinfo2/hardinfo.c:114 msgid "3.0" msgstr "" #: hardinfo2/hardinfo.c:149 #, c-format msgid "Unknown benchmark ``%s''\n" msgstr "" #: hardinfo2/hardinfo.c:188 msgid "Don't know what to do. Exiting." msgstr "No se puede determinar qué hacer. Saliendo." #: hardinfo2/usb_util.c:293 modules/devices/devicetree.c:90 #: modules/devices/devicetree.c:91 modules/devices/monitors.c:411 #: modules/devices/storage.c:306 modules/devices/storage.c:328 msgid "(None)" msgstr "(ninguno)" #: hardinfo2/util.c:100 modules/computer/uptime.c:54 #, c-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d día" msgstr[1] "%d días" #: hardinfo2/util.c:101 modules/computer/uptime.c:55 #, c-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d hora" msgstr[1] "%d horas" #: hardinfo2/util.c:102 modules/computer/uptime.c:56 #, c-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d minuto" msgstr[1] "%d minutos" #: hardinfo2/util.c:103 #, c-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d segundo" msgstr[1] "%d segundos" #: hardinfo2/util.c:124 #, c-format msgid "%.1f B" msgstr "%.1f B" #: hardinfo2/util.c:126 #, c-format msgid "%.1f KiB" msgstr "%.1f KiB" #: hardinfo2/util.c:128 #, c-format msgid "%.1f MiB" msgstr "%.1f MiB" #: hardinfo2/util.c:130 #, c-format msgid "%.1f GiB" msgstr "%.1f GiB" #: hardinfo2/util.c:132 #, c-format msgid "%.1f TiB" msgstr "%.1f TiB" #: hardinfo2/util.c:134 #, c-format msgid "%.1f PiB" msgstr "%.1f PiB" #: hardinfo2/util.c:283 msgid "Error" msgstr "Error" #: hardinfo2/util.c:283 hardinfo2/util.c:299 msgid "Warning" msgstr "Advertencia" #: hardinfo2/util.c:298 msgid "Fatal Error" msgstr "Error fatal" #: hardinfo2/util.c:325 msgid "do not print status messages to standard output" msgstr "" #: hardinfo2/util.c:331 msgid "creates a report and prints to standard output" msgstr "crea un reporte y lo imprime en la salida estándar" #: hardinfo2/util.c:337 msgid "chooses a report format ([text], html)" msgstr "elige un formato de reporte ([texto], html)" #: hardinfo2/util.c:343 msgid "run single benchmark eg. -b 'FPU FFT' (Default all Benchmarks runs)" msgstr "" #: hardinfo2/util.c:349 msgid "" "user note attached to benchmark results. (updating/synchronize with server)" msgstr "" #: hardinfo2/util.c:355 msgid "benchmark result format ([short], conf, shell)" msgstr "" "formato del resultado de la prueba de rendimiento ([corto], conf, shell)" #: hardinfo2/util.c:361 msgid "" "maximum number of benchmark results to include (-1 for no limit, default is " "50)" msgstr "" "número máximo de resultados de pruebas de rendimiento a incluir (-1 para " "ilimitados, 50 por defecto)" #: hardinfo2/util.c:367 msgid "shows program version and quit" msgstr "muestra la versión del programa y sale" #: hardinfo2/util.c:373 msgid "do not run benchmarks" msgstr "no ejecutar pruebas de rendimiento" #: hardinfo2/util.c:379 msgid "show all details" msgstr "mostrar todos los detalles" #: hardinfo2/util.c:384 msgid "- System Information and Benchmark" msgstr "" #: hardinfo2/util.c:394 #, c-format msgid "" "Unrecognized arguments.\n" "Try ``%s --help'' for more information.\n" msgstr "" "Argumentos no reconocidos.\n" "Pruebe ``%s --help'' para obtener más información.\n" #: hardinfo2/util.c:869 #, c-format msgid "Scanning: %s..." msgstr "Escaneando: %s..." #: hardinfo2/util.c:879 shell/shell.c:303 shell/shell.c:925 shell/shell.c:2163 msgid "Done." msgstr "Hecho." #: hardinfo2/vendor.c:213 msgid "Update vendor list" msgstr "" #: hardinfo2/vendor.c:218 msgid "Check Update Version" msgstr "" #: hardinfo2/vendor.c:391 modules/computer.c:630 modules/computer.c:829 #: modules/computer/os.c:196 modules/computer/os.c:378 #: modules/computer/os.c:413 modules/computer/os.c:741 #: modules/computer/os.c:802 modules/devices.c:464 modules/devices.c:614 #: modules/devices/firmware.c:149 modules/devices/printers.c:106 #: modules/devices/printers.c:113 modules/devices/printers.c:123 #: modules/devices/printers.c:138 modules/devices/printers.c:147 #: modules/devices/printers.c:256 modules/devices/spd-decode.c:364 #: modules/devices/usb.c:149 msgid "Unknown" msgstr "Desconocido" #: shell/callbacks.c:457 shell/shell.c:522 msgid "System Information and Benchmark" msgstr "" #: shell/callbacks.c:462 msgid "" "HardInfo2 is free software; you can redistribute it and/or modify it under " "the terms of the GNU General Public License as published by the Free " "Software Foundation, version 2 or later.\n" "\n" "This program is distributed in the hope that it will be useful, but WITHOUT " "ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " "FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " "more details.\n" "\n" "You should have received a copy of the GNU General Public License along with " "this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin St, Fifth Floor, Boston, MA 02110-1301 USA" msgstr "" #: shell/menu.c:43 msgid "_Information" msgstr "_Información" #: shell/menu.c:44 msgid "_View" msgstr "_Ver" #: shell/menu.c:46 msgid "_Theme" msgstr "" #: shell/menu.c:48 msgid "_Help" msgstr "_Ayuda" #: shell/menu.c:52 msgid "Generate _Report" msgstr "Generar _reporte" #: shell/menu.c:53 msgid "Generates a report with detailed system information" msgstr "" #: shell/menu.c:57 shell/syncmanager.c:692 msgid "Synchronize" msgstr "" #: shell/menu.c:58 msgid "Send benchmark results and receive updated data from the network" msgstr "" #: shell/menu.c:73 msgid "_Refresh" msgstr "_Actualizar" #: shell/menu.c:78 msgid "_Open HardInfo2 Web Site" msgstr "_Abrir sitio web de Hardinfo" #: shell/menu.c:83 msgid "_Report bug" msgstr "_Reportar un error" #: shell/menu.c:88 msgid "_About HardInfo2" msgstr "_Acerca de Hardinfo" #: shell/menu.c:89 msgid "Displays program version information" msgstr "Muestra la información de versión del programa" #: shell/menu.c:93 msgid "_Quit" msgstr "_Salir" #: shell/menu.c:100 msgid "_Side Pane" msgstr "_Panel lateral" #: shell/menu.c:101 msgid "Toggles side pane visibility" msgstr "Conmuta la visibilidad del panel lateral" #: shell/menu.c:104 msgid "_Toolbar" msgstr "_Barra de herramientas" #: shell/menu.c:108 msgid "Synchronize on startup" msgstr "" #: shell/menu.c:113 msgid "Disable Theme" msgstr "" #: shell/menu.c:117 msgid "Theme Motherboard" msgstr "" #: shell/menu.c:121 msgid "Theme Graffiti" msgstr "" #: shell/menu.c:125 msgid "Theme Anime PC" msgstr "" #: shell/menu.c:129 msgid "Theme Tux Star" msgstr "" #: shell/menu.c:133 msgid "Theme PixArt" msgstr "" #: shell/menu.c:137 msgid "Theme Silicon" msgstr "" #: shell/report.c:772 shell/report.c:780 msgid "Save File" msgstr "Guardar archivo" #: shell/report.c:775 shell/report.c:1252 shell/syncmanager.c:780 msgid "_Cancel" msgstr "_Cancelar" #: shell/report.c:777 msgid "_Save" msgstr "Guardar" #: shell/report.c:952 msgid "Cannot create ReportContext. Programming bug?" msgstr "No se puede crear ReportContext. ¿Error del programa?" #: shell/report.c:972 msgid "Open the report with your web browser?" msgstr "¿Abrir el reporte en el navegador web?" #: shell/report.c:975 msgid "_No" msgstr "_No" #: shell/report.c:976 msgid "_Open" msgstr "Abrir" #: shell/report.c:1007 msgid "Generating report..." msgstr "Generando reporte..." #: shell/report.c:1017 msgid "Report saved." msgstr "Reporte guardado." #: shell/report.c:1019 msgid "Error while creating the report." msgstr "Error al crear el reporte." #: shell/report.c:1121 msgid "Generate Report" msgstr "Generar reporte" #: shell/report.c:1146 msgid "" "Generate Report\n" "Please choose the information that you wish to view in your report:" msgstr "" "Generar reporte\n" "Por favor, elija la información que desea ver en el reporte:" #: shell/report.c:1218 msgid "Select _None" msgstr "_Deseleccionar todo" #: shell/report.c:1229 msgid "Select _All" msgstr "_Seleccionar todo" #: shell/report.c:1262 msgid "_Generate" msgstr "_Generar" #: shell/shell.c:517 #, c-format msgid "%s - System Information and Benchmark" msgstr "" #: shell/shell.c:910 msgid "Loading modules..." msgstr "Cargando módulos..." #: shell/shell.c:1681 msgid "URL" msgstr "" #: shell/shell.c:1688 msgid "Support URL" msgstr "" #: shell/shell.c:1699 msgid "Wikipedia" msgstr "" #: shell/shell.c:2033 #, c-format msgid "%s → Summary" msgstr "%s → Resumen" #: shell/shell.c:2139 msgid "Updating..." msgstr "Actualizando..." #: shell/syncmanager.c:80 msgid "" "Synchronize with Central Database\n" "The following information may be synchronized\n" "with the HardInfo2 central database." msgstr "" "Sincronizar con la base de datos central\n" "La siguiente información puede ser sincronizada\n" "con la base de datos central de Hardinfo." #: shell/syncmanager.c:84 msgid "" "Synchronizing\n" "This may take some time." msgstr "" "Sincronizando\n" "Esto puede tardar un poco." #: shell/syncmanager.c:546 msgid "(canceled)" msgstr "(cancelado)" #: shell/syncmanager.c:562 msgid "(failed)" msgstr "(error)" #: shell/syncmanager.c:658 modules/benchmark.c:932 msgid "Send benchmark results" msgstr "Enviar resultados de las pruebas de rendimiento" #: shell/syncmanager.c:767 msgid "Privacy Policy" msgstr "" #: shell/syncmanager.c:789 msgid "_Synchronize" msgstr "_Sincronizar" #: shell/syncmanager.c:838 #, c-format msgid "Synchronizing: %s" msgstr "" #: modules/benchmark/benches.c:136 msgid "CPU Blowfish (Single-thread)" msgstr "CPU Blowfish (un hilo)" #: modules/benchmark/benches.c:144 msgid "CPU Blowfish (Multi-thread)" msgstr "CPU Blowfish (multihilo)" #: modules/benchmark/benches.c:152 msgid "CPU Blowfish (Multi-core)" msgstr "CPU Blowfish (multinúcleo)" #: modules/benchmark/benches.c:160 msgid "CPU Zlib" msgstr "CPU Zlib" #: modules/benchmark/benches.c:168 msgid "CPU CryptoHash" msgstr "" #: modules/benchmark/benches.c:176 msgid "CPU Fibonacci" msgstr "" #: modules/benchmark/benches.c:184 msgid "CPU N-Queens" msgstr "CPU N-Reinas" #: modules/benchmark/benches.c:192 msgid "FPU FFT" msgstr "FPU FFT" #: modules/benchmark/benches.c:200 msgid "FPU Raytracing (Single-thread)" msgstr "" #: modules/benchmark/benches.c:208 msgid "Internal Network Speed" msgstr "" #: modules/benchmark/benches.c:216 msgid "SysBench CPU (Single-thread)" msgstr "SysBench de CPU (un hilo)" #: modules/benchmark/benches.c:224 msgid "SysBench CPU (Multi-thread)" msgstr "SysBench de CPU (multihilo)" #: modules/benchmark/benches.c:232 msgid "SysBench CPU (Four threads)" msgstr "SysBench de CPU (cuatro hilos)" #: modules/benchmark/benches.c:240 msgid "SysBench Memory (Single-thread)" msgstr "SysBench de memoria (un hilo)" #: modules/benchmark/benches.c:248 msgid "SysBench Memory (Two threads)" msgstr "SysBench de memoria (dos hilos)" #: modules/benchmark/benches.c:256 msgid "SysBench Memory (Quad threads)" msgstr "" #: modules/benchmark/benches.c:264 msgid "SysBench Memory (Multi-thread)" msgstr "" #: modules/benchmark/benches.c:272 msgid "GPU Drawing" msgstr "GPU dibujado" #: modules/benchmark/benches.c:281 msgid "GPU OpenGL Drawing" msgstr "" #: modules/benchmark/benches.c:290 msgid "Storage R/W Speed" msgstr "" #: modules/benchmark/benches.c:304 msgid "" "Alexey Kopytov's sysbench is required.\n" "Results in events/second. Higher is better." msgstr "" "Se requiere sysbench de Alexey Kopytov.\n" "Resultados en eventos/segundo. Más alto es mejor." #: modules/benchmark/benches.c:310 msgid "" "Alexey Kopytov's sysbench is required.\n" "Results in MiB/second. Higher is better." msgstr "" "Se requiere sysbench de Alexey Kopytov.\n" "Resultados en MiB/segundo. Más alto es mejor." #: modules/benchmark/benches.c:313 msgid "" "iperf3 is required.\n" "Results in Gbits/s. Higher is better." msgstr "" #: modules/benchmark/benches.c:324 msgid "Results in HIMarks. Higher is better." msgstr "Resultados en HIMarks. Más alto es mejor." #: modules/benchmark/benches.c:326 msgid "" "Results in HIMarks. Higher is better.\n" "Many Desktop Environments only uses software." msgstr "" #: modules/benchmark/benches.c:329 msgid "Results in MB/s. Higher is better." msgstr "" #: modules/benchmark/benches.c:332 msgid "Results in FPS. Higher is better." msgstr "" #. !/ Used for an unknown value. Having it in only one place cleans up the .po #. * line references #: modules/benchmark/bench_results.c:34 modules/computer.c:41 #: modules/computer/display.c:40 modules/computer/display.c:57 #: modules/computer/os.c:400 modules/computer/os.c:457 modules/devices.c:596 #: modules/devices/dmi_memory.c:699 modules/devices/dmi_memory.c:835 #: modules/devices/gpu.c:40 modules/devices/gpu.c:58 modules/devices/gpu.c:122 #: modules/devices/gpu.c:130 modules/devices/gpu.c:210 #: modules/devices/gpu.c:211 modules/devices/gpu.c:230 #: modules/devices/inputdevices.c:51 modules/devices/monitors.c:28 #: modules/devices/monitors.c:29 modules/devices/monitors.c:155 #: modules/devices/monitors.c:164 modules/devices/pci.c:25 #: modules/devices/pci.c:149 modules/devices/pci.c:150 #: modules/devices/spd-decode.c:358 modules/devices/spd-decode.c:359 #: modules/devices/spd-decode.c:362 modules/devices/spd-decode.c:363 #: modules/devices/spd-decode.c:584 modules/devices/spd-decode.c:899 #: modules/devices/spd-decode.c:900 modules/devices/spd-decode.c:1111 #: modules/devices/spd-decode.c:1350 modules/devices/storage.c:27 #: modules/devices/storage.c:307 modules/devices/storage.c:336 #: modules/devices/storage.c:431 modules/devices/usb.c:29 #: modules/network/net.c:460 includes/cpu_util.h:11 includes/spd-decode.h:24 #: includes/spd-decode.h:25 msgid "(Unknown)" msgstr "(desconocido)" #: modules/benchmark/bench_results.c:261 modules/devices/alpha/processor.c:90 #: modules/devices/arm/processor.c:289 modules/devices/arm/processor.c:302 #: modules/devices/arm/processor.c:344 modules/devices/arm/processor.c:509 #: modules/devices.c:430 modules/devices.c:438 modules/devices.c:466 #: modules/devices/e2k/processor.c:363 modules/devices/e2k/processor.c:400 #: modules/devices/gpu.c:125 modules/devices/gpu.c:127 #: modules/devices/gpu.c:133 modules/devices/gpu.c:135 #: modules/devices/gpu.c:233 modules/devices/gpu.c:235 #: modules/devices/ia64/processor.c:167 modules/devices/ia64/processor.c:196 #: modules/devices/loongarch64/processor.c:98 #: modules/devices/m68k/processor.c:87 modules/devices/mips/processor.c:77 #: modules/devices/parisc/processor.c:158 #: modules/devices/parisc/processor.c:191 modules/devices/ppc/processor.c:160 #: modules/devices/ppc/processor.c:187 modules/devices/riscv/processor.c:246 #: modules/devices/riscv/processor.c:276 modules/devices/s390/processor.c:160 #: modules/devices/sh/processor.c:87 modules/devices/sh/processor.c:88 #: modules/devices/sh/processor.c:89 modules/devices/x86/processor.c:317 #: modules/devices/x86/processor.c:330 modules/devices/x86/processor.c:658 #: modules/devices/x86/processor.c:790 msgid "MHz" msgstr "MHz" #: modules/benchmark/bench_results.c:293 modules/devices.c:177 #, c-format msgid "%d physical processor" msgid_plural "%d physical processors" msgstr[0] "%d procesador real" msgstr[1] "%d procesadores reales" #: modules/benchmark/bench_results.c:294 modules/devices.c:178 #, c-format msgid "%d core" msgid_plural "%d cores" msgstr[0] "%d núcleo" msgstr[1] "%d núcleos" #: modules/benchmark/bench_results.c:295 modules/devices.c:179 #, c-format msgid "%d thread" msgid_plural "%d threads" msgstr[0] "%d hilo" msgstr[1] "%d hilos" #: modules/benchmark/bench_results.c:300 modules/devices.c:181 #, c-format msgid "%d NUMA node" msgid_plural "%d NUMA nodes" msgstr[0] "" msgstr[1] "" #. !/NP procs; NC cores across NN nodes; NT threads #: modules/benchmark/bench_results.c:304 #, c-format msgid "%s; %s across %s; %s" msgstr "" #. !/NP procs; NC cores; NT threads #: modules/benchmark/bench_results.c:309 #, c-format msgid "%s; %s; %s" msgstr "" #: modules/benchmark/bench_results.c:383 modules/benchmark/bench_results.c:508 #: modules/computer.c:1041 modules/devices/dmi_memory.c:639 #: modules/devices/dmi_memory.c:649 modules/devices/dmi_memory.c:703 #: modules/devices/dmi_memory.c:791 modules/devices/dmi_memory.c:837 #: modules/devices/dmi_memory.c:920 modules/devices/spd-decode.c:1354 #: modules/network/net.c:416 modules/network/net.c:440 #: modules/network/net.c:441 msgid "MiB" msgstr "MiB" #: modules/benchmark/bench_results.c:388 modules/benchmark/bench_results.c:507 msgid "kiB" msgstr "" #: modules/benchmark/bench_results.c:396 modules/benchmark/bench_results.c:452 #, c-format msgid "%d-bit" msgstr "" #: modules/benchmark/bench_results.c:417 modules/benchmark/bench_results.c:482 msgid "Benchmark Result" msgstr "Resultado de la prueba de rendimiento" #: modules/benchmark/bench_results.c:417 modules/benchmark/bench_results.c:482 msgid "Threads" msgstr "Hilos" #: modules/benchmark/bench_results.c:418 modules/benchmark/bench_results.c:484 msgid "Elapsed Time" msgstr "Tiempo transcurrido" #: modules/benchmark/bench_results.c:418 modules/benchmark/bench_results.c:484 msgid "seconds" msgstr "segundos" #: modules/benchmark/bench_results.c:419 modules/computer/languages.c:101 #: modules/devices/arm/processor.c:354 modules/devices/e2k/processor.c:362 #: modules/devices/gpu.c:203 modules/devices/ia64/processor.c:166 #: modules/devices/loongarch64/processor.c:97 modules/devices/pci.c:146 #: modules/devices/ppc/processor.c:159 msgid "Revision" msgstr "Revisión" #: modules/benchmark/bench_results.c:420 modules/benchmark/bench_results.c:485 msgid "Extra Information" msgstr "Información adicional" #: modules/benchmark/bench_results.c:422 modules/benchmark/bench_results.c:487 msgid "Note" msgstr "Nota" #: modules/benchmark/bench_results.c:423 modules/benchmark/bench_results.c:488 msgid "" "This result is from an old version of HardInfo. Results might not be " "comparable to current version. Some details are missing." msgstr "" #: modules/benchmark/bench_results.c:427 modules/benchmark/bench_results.c:492 #: modules/devices/devicetree/pmac_data.c:81 modules/devices/sh/processor.c:85 msgid "Machine" msgstr "Máquina" #: modules/benchmark/bench_results.c:428 modules/benchmark/bench_results.c:492 #: modules/devices/devicetree.c:207 modules/devices/dmi.c:48 msgid "Board" msgstr "Tarjeta" #: modules/benchmark/bench_results.c:429 modules/benchmark/bench_results.c:494 #: modules/computer.c:583 msgid "Machine Type" msgstr "Tipo de equipo" #: modules/benchmark/bench_results.c:430 modules/benchmark/bench_results.c:497 msgid "CPU Name" msgstr "Nombre de la CPU" #: modules/benchmark/bench_results.c:431 modules/benchmark/bench_results.c:498 msgid "CPU Description" msgstr "Descripción de la CPU" #: modules/benchmark/bench_results.c:432 modules/benchmark/bench_results.c:500 #: modules/benchmark.c:601 msgid "CPU Config" msgstr "Características de la CPU" #: modules/benchmark/bench_results.c:433 modules/benchmark/bench_results.c:500 msgid "Threads Available" msgstr "Hilos disponibles" #: modules/benchmark/bench_results.c:434 modules/benchmark/bench_results.c:501 #: modules/benchmark.c:579 msgid "GPU" msgstr "" #: modules/benchmark/bench_results.c:435 modules/benchmark/bench_results.c:503 #: modules/computer.c:595 msgid "OpenGL Renderer" msgstr "Renderizador de OpenGL" #: modules/benchmark/bench_results.c:436 modules/benchmark/bench_results.c:505 #: modules/benchmark.c:590 modules/computer.c:1145 modules/devices.c:109 msgid "Storage" msgstr "Almacenamiento" #: modules/benchmark/bench_results.c:437 modules/benchmark/bench_results.c:507 #: modules/computer.c:140 modules/computer.c:582 modules/computer.c:1144 #: modules/devices/gpu.c:206 msgid "Memory" msgstr "Memoria" #: modules/benchmark/bench_results.c:438 modules/benchmark/bench_results.c:509 msgid "Pointer Size" msgstr "Tamaño del puntero" #: modules/benchmark/bench_results.c:482 msgid "Benchmark" msgstr "Prueba de rendimiento" #: modules/benchmark/bench_results.c:483 modules/devices/dmi_memory.c:859 #: modules/devices/firmware.c:245 modules/devices/monitors.c:495 #: modules/devices/x86/processor.c:692 msgid "Result" msgstr "Resultado" #: modules/benchmark/bench_results.c:495 msgid "Linux Kernel" msgstr "" #: modules/benchmark/bench_results.c:496 msgid "Linux OS" msgstr "" #: modules/benchmark/bench_results.c:507 msgid "Physical Memory" msgstr "" #: modules/benchmark/bench_results.c:511 msgid "Handles" msgstr "" #: modules/benchmark/bench_results.c:511 msgid "mid" msgstr "" #: modules/benchmark/bench_results.c:512 msgid "cfg_val" msgstr "" #: modules/benchmark.c:352 msgid "This Machine" msgstr "" #: modules/benchmark.c:578 modules/benchmark.c:589 modules/benchmark.c:601 msgid "Results" msgstr "Resultados" #: modules/benchmark.c:602 modules/devices/sparc/processor.c:75 msgid "CPU" msgstr "CPU" #: modules/benchmark.c:678 #, c-format msgid "Benchmarking: %s." msgstr "Ejecutando prueba de rendimiento: %s." #: modules/benchmark.c:685 msgid "Stop" msgstr "" #: modules/benchmark.c:697 msgid "" "Please do not move your mouse\n" "or press any keys." msgstr "" #: modules/benchmark.c:767 msgid "Benchmarks" msgstr "Pruebas de rendimiento" #: modules/benchmark.c:777 msgid "Perform tasks and compare with other systems" msgstr "Realizar tareas y comparar con otros sistemas" #: modules/benchmark.c:938 msgid "Receive benchmark results" msgstr "Recibir resultados de las pruebas de rendimiento" #: modules/computer/alsa.c:26 modules/computer.c:599 msgid "Audio Devices" msgstr "Dispositivos de sonido" #: modules/computer/alsa.c:34 msgid "Audio Adapter" msgstr "Adaptador de sonido" #: modules/computer.c:96 modules/devices/firmware.c:74 msgid "Summary" msgstr "Resumen" #: modules/computer.c:97 modules/computer.c:585 modules/computer.c:1143 msgid "Operating System" msgstr "Sistema operativo" #: modules/computer.c:98 msgid "Security" msgstr "Seguridad" #: modules/computer.c:99 modules/devices/gpu.c:211 modules/devices/pci.c:150 msgid "Kernel Modules" msgstr "Módulos del kernel" #: modules/computer.c:100 modules/computer.c:741 msgid "Boots" msgstr "Arranques" #: modules/computer.c:101 msgid "Languages" msgstr "Idiomas" #: modules/computer.c:102 msgid "Memory Usage" msgstr "Uso de memoria" #: modules/computer.c:103 msgid "Filesystems" msgstr "Sistemas de archivos" #: modules/computer.c:104 modules/computer.c:590 msgid "Display" msgstr "Pantalla" #: modules/computer.c:105 modules/computer/environment.c:37 msgid "Environment Variables" msgstr "Variables de entorno" #: modules/computer.c:107 modules/computer.c:109 msgid "Development" msgstr "Desarrollo" #: modules/computer.c:111 modules/computer.c:884 msgid "Users" msgstr "Usuarios" #: modules/computer.c:112 msgid "Groups" msgstr "Grupos" #: modules/computer.c:142 #, c-format msgid "%dMB (%dMB used)" msgstr "%dMB (%dMB usados)" #: modules/computer.c:144 modules/computer.c:646 msgid "Uptime" msgstr "Tiempo activo" #: modules/computer.c:146 modules/computer.c:587 msgid "Date/Time" msgstr "Fecha/Hora" #: modules/computer.c:151 modules/computer.c:647 msgid "Load Average" msgstr "Promedio de carga" #: modules/computer.c:266 msgid "Scripting Languages" msgstr "Lenguajes de scripting" #: modules/computer.c:267 msgid "Gambas3 (gbr3)" msgstr "" #: modules/computer.c:268 msgid "Python (default)" msgstr "" #: modules/computer.c:269 msgid "Python2" msgstr "" #: modules/computer.c:270 msgid "Python3" msgstr "" #: modules/computer.c:271 msgid "Perl" msgstr "" #: modules/computer.c:272 msgid "Rakudo (Perl6)" msgstr "" #: modules/computer.c:273 msgid "PHP" msgstr "" #: modules/computer.c:274 msgid "Ruby" msgstr "" #: modules/computer.c:275 msgid "Bash" msgstr "" #: modules/computer.c:276 msgid "JavaScript (Node.js)" msgstr "" #: modules/computer.c:277 msgid "awk" msgstr "" #: modules/computer.c:278 msgid "Compilers" msgstr "Compiladores" #: modules/computer.c:279 msgid "C (GCC)" msgstr "" #: modules/computer.c:280 msgid "C (Clang)" msgstr "" #: modules/computer.c:281 msgid "D (dmd)" msgstr "" #: modules/computer.c:282 msgid "Gambas3 (gbc3)" msgstr "" #: modules/computer.c:283 msgid "Java" msgstr "" #: modules/computer.c:284 msgid ".NET" msgstr "" #: modules/computer.c:285 msgid "Vala" msgstr "" #: modules/computer.c:286 msgid "Haskell (GHC)" msgstr "" #: modules/computer.c:287 msgid "FreePascal" msgstr "" #: modules/computer.c:288 msgid "Go" msgstr "" #: modules/computer.c:289 msgid "Rust" msgstr "" #: modules/computer.c:290 msgid "Tools" msgstr "Herramientas" #: modules/computer.c:291 msgid "make" msgstr "" #: modules/computer.c:292 msgid "ninja" msgstr "" #: modules/computer.c:293 msgid "GDB" msgstr "" #: modules/computer.c:294 msgid "LLDB" msgstr "" #: modules/computer.c:295 msgid "strace" msgstr "" #: modules/computer.c:296 msgid "valgrind" msgstr "" #: modules/computer.c:297 msgid "QMake" msgstr "" #: modules/computer.c:298 msgid "CMake" msgstr "" #: modules/computer.c:299 msgid "Gambas3 IDE" msgstr "" #: modules/computer.c:300 msgid "Radare2" msgstr "" #: modules/computer.c:301 msgid "ltrace" msgstr "" #: modules/computer.c:302 msgid "Powershell" msgstr "" #: modules/computer.c:343 msgid "Not found" msgstr "No encontrado" #: modules/computer.c:348 #, c-format msgid "Detecting version: %s" msgstr "Detectando versión: %s" #: modules/computer.c:366 msgid "Program" msgstr "Programa" #: modules/computer.c:366 modules/computer.c:629 modules/computer.c:631 #: modules/computer.c:807 modules/computer/modules.c:372 #: modules/devices/dmi.c:41 modules/devices/dmi.c:47 modules/devices/dmi.c:51 #: modules/devices/dmi.c:57 modules/devices/firmware.c:75 #: modules/devices/inputdevices.c:146 modules/devices/monitors.c:409 msgid "Version" msgstr "Versión" #: modules/computer.c:385 msgid "Field" msgstr "Campo" #: modules/computer.c:385 modules/computer.c:730 modules/computer/modules.c:370 #: modules/computer/modules.c:371 modules/devices/arm/processor.c:479 msgid "Description" msgstr "Descripción" #: modules/computer.c:385 modules/devices.c:841 msgid "Value" msgstr "Valor" #: modules/computer.c:402 modules/computer.c:404 msgid "Single-board computer" msgstr "" #: modules/computer.c:455 modules/computer.c:457 msgid "Unknown physical machine type" msgstr "Tipo de equipo físico desconocido" #: modules/computer.c:479 modules/computer.c:480 modules/computer.c:527 #: modules/computer.c:529 msgid "Virtual (VMware)" msgstr "" #: modules/computer.c:482 modules/computer.c:483 modules/computer.c:484 #: modules/computer.c:485 msgid "Virtual (QEMU)" msgstr "" #: modules/computer.c:487 modules/computer.c:488 msgid "Virtual (Unknown)" msgstr "Virtual (desconocido)" #: modules/computer.c:490 modules/computer.c:491 modules/computer.c:492 #: modules/computer.c:520 modules/computer.c:522 msgid "Virtual (VirtualBox)" msgstr "" #: modules/computer.c:494 modules/computer.c:495 modules/computer.c:496 #: modules/computer.c:511 modules/computer.c:513 msgid "Virtual (Xen)" msgstr "" #: modules/computer.c:498 msgid "Virtual (hypervisor present)" msgstr "Virtual (hipervisor presente)" #: modules/computer.c:579 modules/computer.c:1097 msgid "Computer" msgstr "Equipo" #: modules/computer.c:586 modules/computer.c:640 msgid "User Name" msgstr "Nombre de usuario" #: modules/computer.c:591 msgid "Resolution" msgstr "Resolución" #: modules/computer.c:591 modules/computer.c:812 #, c-format msgid "%dx%d pixels" msgstr "%dx%d píxeles" #: modules/computer.c:593 msgid "Display Adapter" msgstr "" #: modules/computer.c:596 msgid "Session Display Server" msgstr "Servidor gráfico de la sesión" #: modules/computer.c:601 modules/devices.c:108 msgid "Input Devices" msgstr "Dispositivos de entrada" #: modules/computer.c:629 msgid "Kernel" msgstr "Núcleo" #: modules/computer.c:630 msgid "Command Line" msgstr "Orden de la terminal" #: modules/computer.c:632 msgid "C Library" msgstr "Biblioteca C" #: modules/computer.c:633 msgid "Distribution" msgstr "Distribución" #: modules/computer.c:638 msgid "Current Session" msgstr "Sesión actual" #: modules/computer.c:639 msgid "Computer Name" msgstr "Nombre del equipo" #: modules/computer.c:641 modules/computer/languages.c:99 msgid "Language" msgstr "Idioma" #: modules/computer.c:642 modules/computer/users.c:53 msgid "Home Directory" msgstr "Directorio personal" #: modules/computer.c:643 msgid "Desktop Environment" msgstr "Entorno de escritorio" #: modules/computer.c:646 msgid "Misc" msgstr "Otras" #: modules/computer.c:660 msgid "HardInfo2" msgstr "" #: modules/computer.c:661 msgid "HardInfo2 running as" msgstr "HardInfo2 funcionando en modo" #: modules/computer.c:662 msgid "Superuser" msgstr "Administrador" #: modules/computer.c:662 msgid "User" msgstr "Usuario" #: modules/computer.c:666 msgid "Health" msgstr "Salud" #: modules/computer.c:668 msgid "Available entropy in /dev/random" msgstr "Entropía disponible en /dev/random" #: modules/computer.c:672 msgid "Hardening Features" msgstr "Funciones de protección" #: modules/computer.c:673 msgid "ASLR" msgstr "" #: modules/computer.c:674 msgid "dmesg" msgstr "" #: modules/computer.c:678 msgid "Linux Security Modules" msgstr "Módulos de seguridad de Linux" #: modules/computer.c:679 msgid "Modules available" msgstr "Módulos disponibles" #: modules/computer.c:680 msgid "SELinux status" msgstr "Estado de SELinux" #: modules/computer.c:686 msgid "CPU Vulnerabilities" msgstr "Vulnerabilidades de la CPU" #: modules/computer.c:727 msgid "Loaded Modules" msgstr "Módulos cargados" #: modules/computer.c:729 modules/computer.c:757 modules/computer.c:897 #: modules/computer/languages.c:95 modules/computer/modules.c:370 #: modules/devices/arm/processor.c:478 modules/devices/dmi.c:38 #: modules/devices/dmi.c:49 modules/devices/e2k/processor.c:358 #: modules/devices/gpu.c:301 modules/devices/ia64/processor.c:160 #: modules/devices/inputdevices.c:141 modules/devices/monitors.c:403 #: modules/devices/monitors.c:505 modules/devices/sh/processor.c:84 #: modules/devices/x86/processor.c:750 modules/network.c:333 msgid "Name" msgstr "Nombre" #: modules/computer.c:743 msgid "Date & Time" msgstr "Fecha y hora" #: modules/computer.c:744 msgid "Kernel Version" msgstr "Versión del kernel" #: modules/computer.c:754 msgid "Available Languages" msgstr "Idiomas disponibles" #: modules/computer.c:756 msgid "Language Code" msgstr "Código del idioma" #: modules/computer.c:768 msgid "Mounted File Systems" msgstr "Sistemas de archivos montados" #: modules/computer.c:770 modules/computer/filesystem.c:89 msgid "Mount Point" msgstr "Punto de montaje" #: modules/computer.c:771 msgid "Usage" msgstr "Uso" #: modules/computer.c:772 modules/devices.c:865 modules/devices.c:879 #: modules/devices/e2k/processor.c:416 modules/devices/gpu.c:85 #: modules/devices/gpu.c:93 modules/devices/gpu.c:293 modules/devices/pci.c:102 #: modules/devices/pci.c:110 modules/devices/pci.c:154 #: modules/devices/storage.c:48 modules/devices/storage.c:57 #: modules/devices/usb.c:172 modules/devices/usb.c:184 #: modules/devices/x86/processor.c:811 msgid "Device" msgstr "Dispositivo" #: modules/computer.c:795 msgid "Session" msgstr "Sesión" #: modules/computer.c:796 modules/devices.c:842 modules/devices.c:879 #: modules/devices/dmi.c:56 modules/devices/dmi_memory.c:729 #: modules/devices/inputdevices.c:142 modules/devices/spd-decode.c:1377 #: modules/devices/x86/processor.c:715 msgid "Type" msgstr "Tipo" #: modules/computer.c:799 msgid "Wayland" msgstr "" #: modules/computer.c:800 modules/computer.c:805 msgid "Current Display Name" msgstr "Nombre de la pantalla actual" #: modules/computer.c:804 msgid "X Server" msgstr "Servidor X" #: modules/computer.c:806 modules/computer.c:846 modules/computer.c:869 #: modules/devices.c:879 modules/devices/dmi.c:40 modules/devices/dmi.c:46 #: modules/devices/dmi.c:50 modules/devices/dmi.c:55 #: modules/devices/dmi_memory.c:730 modules/devices/dmi_memory.c:873 #: modules/devices/e2k/processor.c:359 modules/devices/firmware.c:75 #: modules/devices/firmware.c:167 modules/devices/firmware.c:172 #: modules/devices/firmware.c:219 modules/devices/gpu.c:84 #: modules/devices/gpu.c:92 modules/devices/gpu.c:292 #: modules/devices/ia64/processor.c:161 modules/devices/inputdevices.c:144 #: modules/devices/monitors.c:402 modules/devices/pci.c:101 #: modules/devices/pci.c:109 modules/devices/storage.c:47 #: modules/devices/storage.c:56 modules/devices/storage.c:282 #: modules/devices/storage.c:572 modules/devices/storage.c:777 #: modules/devices/usb.c:171 modules/devices/x86/processor.c:654 msgid "Vendor" msgstr "Proveedor" #: modules/computer.c:808 msgid "Release Number" msgstr "Número de versión" #: modules/computer.c:816 msgid "Screens" msgstr "Pantallas" #: modules/computer.c:822 msgid "Disconnected" msgstr "Desconectado" #: modules/computer.c:825 msgid "Connected" msgstr "Conectado" #: modules/computer.c:833 msgid "Unused" msgstr "Sin usar" #: modules/computer.c:834 #, c-format msgid "%dx%d pixels, offset (%d, %d)" msgstr "%dx%d píxeles, desplazamiento (%d, %d)" #: modules/computer.c:843 msgid "Outputs (XRandR)" msgstr "Salidas (XRandR)" #: modules/computer.c:845 msgid "OpenGL (GLX)" msgstr "" #: modules/computer.c:847 msgid "Renderer" msgstr "Renderizador" #: modules/computer.c:848 msgid "Direct Rendering" msgstr "Renderizado directo" #: modules/computer.c:849 modules/computer/modules.c:352 #: modules/computer/modules.c:353 modules/devices/inputdevices.c:153 #: modules/devices/printers.c:145 modules/devices/spd-decode.c:888 #: modules/devices/spd-decode.c:1100 msgid "Yes" msgstr "Sí" #: modules/computer.c:849 modules/computer/modules.c:352 #: modules/computer/modules.c:353 modules/devices/printers.c:145 #: modules/devices/spd-decode.c:886 modules/devices/spd-decode.c:1097 msgid "No" msgstr "No" #: modules/computer.c:850 msgid "Version (Compatibility)" msgstr "Versión (compatibilidad)" #: modules/computer.c:851 msgid "Shading Language Version (Compatibility)" msgstr "Versión del lenguaje de sombreado (compatibilidad)" #: modules/computer.c:852 msgid "Version (Core)" msgstr "Versión (núcleo)" #: modules/computer.c:853 msgid "Shading Language Version (Core)" msgstr "Versión del lenguaje de sombreado (núcleo)" #: modules/computer.c:854 msgid "Version (ES)" msgstr "Versión (ES)" #: modules/computer.c:855 msgid "Shading Language Version (ES)" msgstr "Versión del lenguaje de sombreado (ES)" #: modules/computer.c:856 msgid "GLX Version" msgstr "Versión de GLX" #: modules/computer.c:864 msgid "Vulkan" msgstr "" #: modules/computer.c:865 msgid "Instance Version" msgstr "" #: modules/computer.c:867 msgid "Api Version" msgstr "" #: modules/computer.c:868 msgid "Driver Version" msgstr "" #: modules/computer.c:870 msgid "Device Type" msgstr "" #: modules/computer.c:871 msgid "Device Name" msgstr "" #: modules/computer.c:872 msgid "Driver Name" msgstr "" #: modules/computer.c:873 msgid "Driver Info" msgstr "" #: modules/computer.c:874 msgid "Conformance Version" msgstr "" #: modules/computer.c:895 msgid "Group" msgstr "Grupo" #: modules/computer.c:898 modules/computer/users.c:52 msgid "Group ID" msgstr "Identificador de grupo" #: modules/computer.c:1037 #, c-format msgid "%0.1f %s available to Linux" msgstr "%0.1f %s disponible para Linux" #: modules/computer.c:1039 modules/devices/dmi_memory.c:637 #: modules/devices/dmi_memory.c:647 modules/devices/dmi_memory.c:789 #: modules/devices/dmi_memory.c:918 modules/devices/spd-decode.c:1352 msgid "GiB" msgstr "GiB" #: modules/computer.c:1043 modules/computer/memory_usage.c:73 #: modules/computer/modules.c:370 msgid "KiB" msgstr "KiB" #: modules/computer.c:1116 modules/devices/devicetree/pmac_data.c:82 msgid "Motherboard" msgstr "Placa base" #: modules/computer.c:1144 msgid "Graphics" msgstr "Gráficos" #: modules/computer.c:1145 modules/devices.c:105 msgid "Printers" msgstr "Impresoras" #: modules/computer.c:1145 msgid "Audio" msgstr "Sonido" #: modules/computer.c:1194 msgid "Gathers high-level computer information" msgstr "Obtiene información de alto nivel del equipo" #: modules/computer.c:1205 msgid "lsmod is required." msgstr "" #: modules/computer.c:1213 msgid "" "X.org's xrandr utility provides additional details when " "available." msgstr "" #: modules/computer.c:1214 msgid "" "Mesa's glxinfo utility is required for OpenGL information." msgstr "" #: modules/computer.c:1215 msgid "" "Vulkan's vulkaninfo utility is required for Vulkan information." msgstr "" #: modules/computer/filesystem.c:87 msgid "Filesystem" msgstr "Sistema de archivos" #: modules/computer/filesystem.c:88 msgid "Mounted As" msgstr "Modo de montaje" #: modules/computer/filesystem.c:88 msgid "Read-Write" msgstr "Lectura-escritura" #: modules/computer/filesystem.c:88 msgid "Read-Only" msgstr "Solo lectura" #: modules/computer/filesystem.c:90 modules/devices.c:865 #: modules/devices/dmi_memory.c:733 modules/devices/dmi_memory.c:766 #: modules/devices/dmi_memory.c:805 modules/devices/dmi_memory.c:872 #: modules/devices/spd-decode.c:1384 msgid "Size" msgstr "Tamaño" #: modules/computer/filesystem.c:91 msgid "Used" msgstr "Usado" #: modules/computer/filesystem.c:92 msgid "Available" msgstr "Disponible" #: modules/computer/languages.c:94 msgid "Locale Information" msgstr "Información regional" #: modules/computer/languages.c:96 modules/devices/gpu.c:266 #: modules/devices/spd-decode.c:1373 msgid "Source" msgstr "Origen" #: modules/computer/languages.c:97 msgid "Address" msgstr "Dirección" #: modules/computer/languages.c:98 msgid "E-mail" msgstr "Correo electrónico" #: modules/computer/languages.c:100 msgid "Territory" msgstr "Territorio" #: modules/computer/languages.c:102 modules/devices/dmi.c:45 msgid "Date" msgstr "Fecha" #: modules/computer/languages.c:103 msgid "Codeset" msgstr "" #: modules/computer/loadavg.c:64 msgid "Couldn't obtain load average" msgstr "No se puede obtener la carga promedio" #: modules/computer/memory_usage.c:131 msgid "Total physical memory usable by the system" msgstr "" #: modules/computer/memory_usage.c:132 msgid "Free memory which is not used for anything" msgstr "" #: modules/computer/memory_usage.c:133 msgid "Virtual memory, total swap space available" msgstr "" #: modules/computer/memory_usage.c:134 msgid "Virtual memory, remaining swap space available" msgstr "" #: modules/computer/memory_usage.c:135 msgid "Memory present within main memory and in the swapfile" msgstr "" #: modules/computer/memory_usage.c:136 msgid "HighTotal value can vary based on the type of kernel used" msgstr "" #: modules/computer/memory_usage.c:137 msgid "Amount of memory that is not directly mapped into kernel space" msgstr "" #: modules/computer/memory_usage.c:138 msgid "LowTotal value can vary based on the type of kernel used" msgstr "" #: modules/computer/memory_usage.c:139 msgid "Total and free memory directly mapped into kernel space" msgstr "" #: modules/computer/memory_usage.c:140 msgid "Available memory for allocation to any process, without swapping" msgstr "" #: modules/computer/memory_usage.c:141 msgid "Memory in buffer cache, temporary storage for raw disk blocks" msgstr "" #: modules/computer/memory_usage.c:142 msgid "Memory in the page cache (diskcache, shared memory, tmpfs and shmem)" msgstr "" #: modules/computer/memory_usage.c:143 msgid "Memory used more recently and not swapped out or reclaimed" msgstr "" #: modules/computer/memory_usage.c:144 msgid "Memory not been used recently and can be swapped out or reclaimed" msgstr "" #: modules/computer/memory_usage.c:145 msgid "Anonymous memory used more recently and not swapped out" msgstr "" #: modules/computer/memory_usage.c:146 msgid "Anonymous memory not been used and can be swapped out" msgstr "" #: modules/computer/memory_usage.c:147 msgid "Pagecache memory been used more recently and not reclaimed" msgstr "" #: modules/computer/memory_usage.c:148 msgid "Pagecache memory reclaimable without huge performance impact" msgstr "" #: modules/computer/memory_usage.c:149 msgid "Unevictable pages can't be swapped out for a variety of reasons" msgstr "" #: modules/computer/memory_usage.c:150 msgid "Pages locked to memory using the mlock() system call" msgstr "" #: modules/computer/memory_usage.c:151 msgid "Memory consumed by the zswap backend (compressed size)" msgstr "" #: modules/computer/memory_usage.c:152 msgid "Amount of anonymous memory stored in zswap (original size)" msgstr "" #: modules/computer/memory_usage.c:153 msgid "Memory waiting to be written back to disk" msgstr "" #: modules/computer/memory_usage.c:154 msgid "Memory which is actively being written back to disk" msgstr "" #: modules/computer/memory_usage.c:155 msgid "Non-file backed pages mapped into userspace page tables" msgstr "" #: modules/computer/memory_usage.c:156 msgid "Files which have been mmapped, such as libraries" msgstr "" #: modules/computer/memory_usage.c:157 msgid "Total memory used by shared memory (shmem) and tmpfs" msgstr "" #: modules/computer/memory_usage.c:158 msgid "Kernel allocations reclaimable under memory pressure" msgstr "" #: modules/computer/memory_usage.c:159 msgid "In-kernel data structures cache" msgstr "" #: modules/computer/memory_usage.c:160 msgid "Part of Slab, that might be reclaimed, such as caches" msgstr "" #: modules/computer/memory_usage.c:161 msgid "Part of Slab, that cannot be reclaimed on memory pressure" msgstr "" #: modules/computer/memory_usage.c:162 msgid "Memory consumed by the kernel stacks of all tasks" msgstr "" #: modules/computer/memory_usage.c:163 msgid "Memory consumed by userspace page tables" msgstr "" #: modules/computer/memory_usage.c:164 msgid "Memory consumed by secondary page tables" msgstr "" #: modules/computer/memory_usage.c:165 msgid "Previous counted pages which had been written to the server" msgstr "" #: modules/computer/memory_usage.c:166 msgid "Memory used for block device bounce buffers" msgstr "" #: modules/computer/memory_usage.c:167 msgid "Memory used by FUSE for temporary writeback buffers" msgstr "" #: modules/computer/memory_usage.c:168 msgid "Total memory currently available to be allocated on the system" msgstr "" #: modules/computer/memory_usage.c:169 msgid "The amount of memory presently allocated on the system" msgstr "" #: modules/computer/memory_usage.c:170 msgid "Total size of vmalloc virtual address space" msgstr "" #: modules/computer/memory_usage.c:171 msgid "Amount of vmalloc area which is used" msgstr "" #: modules/computer/memory_usage.c:172 msgid "Largest contiguous block of vmalloc area which is free" msgstr "" #: modules/computer/memory_usage.c:173 msgid "Memory allocated to the percpu allocator" msgstr "" #: modules/computer/memory_usage.c:174 msgid "Amount of memory the kernel identifies as corrupted" msgstr "" #: modules/computer/memory_usage.c:175 msgid "Non-file backed huge pages mapped into userspace page tables" msgstr "" #: modules/computer/memory_usage.c:176 msgid "Memory used by shmem and tmpfs allocated with huge pages" msgstr "" #: modules/computer/memory_usage.c:177 msgid "Shared memory mapped into userspace with huge pages" msgstr "" #: modules/computer/memory_usage.c:178 msgid "Memory used for fs data (page cache) allocated with huge pages" msgstr "" #: modules/computer/memory_usage.c:179 msgid "Page cache mapped into userspace with huge pages" msgstr "" #: modules/computer/memory_usage.c:180 msgid "Memory reserved for the Contiguous Memory Allocator (CMA)" msgstr "" #: modules/computer/memory_usage.c:181 msgid "Free remaining memory in the CMA reserves" msgstr "" #: modules/computer/memory_usage.c:182 msgid "Amount of unaccepted memory usable by the kernel" msgstr "" #: modules/computer/memory_usage.c:183 msgid "Size of the pool of huge pages" msgstr "" #: modules/computer/memory_usage.c:184 msgid "Number of huge pages available" msgstr "" #: modules/computer/memory_usage.c:185 msgid "Number of huge pages reserved" msgstr "" #: modules/computer/memory_usage.c:186 msgid "Number of huge pages surplus" msgstr "" #: modules/computer/memory_usage.c:187 msgid "Huge page size, used in conjunction with hugepages parameter" msgstr "" #: modules/computer/memory_usage.c:188 msgid "Total amount of memory consumed by huge pages of all sizes" msgstr "" #: modules/computer/memory_usage.c:189 msgid "Breakdown of page table sizes of 4k size" msgstr "" #: modules/computer/memory_usage.c:190 msgid "Breakdown of page table sizes of 2M size" msgstr "" #: modules/computer/memory_usage.c:191 msgid "Breakdown of page table sizes of 1G size" msgstr "" #: modules/computer/modules.c:168 msgid "Update kernel module icon table" msgstr "" #: modules/computer/modules.c:338 modules/computer/modules.c:339 #: modules/computer/modules.c:340 modules/computer/modules.c:341 #: modules/computer/modules.c:342 modules/computer/modules.c:343 #: modules/devices/dmi.c:117 modules/devices/firmware.c:245 #: modules/devices/x86/processor.c:694 msgid "(Not available)" msgstr "(no disponible)" #: modules/computer/modules.c:369 msgid "Module Information" msgstr "Información del módulo" #: modules/computer/modules.c:369 modules/devices/gpu.c:298 msgid "Path" msgstr "Ruta" #: modules/computer/modules.c:369 msgid "Used Memory" msgstr "Memoria usada" #: modules/computer/modules.c:371 msgid "Version Magic" msgstr "Número mágico de versión" #: modules/computer/modules.c:372 msgid "In Linus' Tree" msgstr "En el árbol de Linus" #: modules/computer/modules.c:373 msgid "Retpoline Enabled" msgstr "Retpoline habilitado" #: modules/computer/modules.c:373 msgid "Copyright" msgstr "" #: modules/computer/modules.c:373 msgid "Author" msgstr "Autor" #: modules/computer/modules.c:374 msgid "License" msgstr "Licencia" #: modules/computer/modules.c:380 msgid "Dependencies" msgstr "Dependencias" #: modules/computer/os.c:153 modules/computer/os.c:154 #: modules/computer/os.c:155 modules/computer/os.c:156 msgid "GNU C Library" msgstr "Biblioteca C de GNU" #: modules/computer/os.c:157 msgid "uClibc or uClibc-ng" msgstr "uClibc o uClibc-ng" #: modules/computer/os.c:158 msgid "diet libc" msgstr "diet libc" #: modules/computer/os.c:229 modules/computer/os.c:232 msgid "GNOME Shell " msgstr "" #: modules/computer/os.c:240 modules/computer/os.c:243 msgid "Version: " msgstr "Versión: " #: modules/computer/os.c:261 modules/computer/os.c:264 msgid "MATE Desktop Environment " msgstr "Entorno de escritorio MATE " #: modules/computer/os.c:297 #, c-format msgid "Unknown (Window Manager: %s)" msgstr "Desconocido (Gestor de ventanas: %s)" #. !/{desktop environment} on {session type} #: modules/computer/os.c:308 #, c-format msgid "%s on %s" msgstr "%s en %s" #: modules/computer/os.c:376 msgid "Terminal" msgstr "Terminal" #: modules/computer/os.c:392 msgid "User access allowed" msgstr "Acceso de usuario permitido" #: modules/computer/os.c:394 msgid "User access forbidden" msgstr "Acceso de usuario prohibido" #: modules/computer/os.c:396 msgid "Access allowed (running as superuser)" msgstr "Acceso permitido (en ejecución como administrador)" #: modules/computer/os.c:398 msgid "Access forbidden? (running as superuser)" msgstr "¿Acceso prohibido? (en ejecución como administrador)" #: modules/computer/os.c:407 modules/computer/os.c:793 msgid "Disabled" msgstr "Deshabilitado" #: modules/computer/os.c:409 msgid "Partially enabled (mmap base+stack+VDSO base)" msgstr "Parcialmente habilitado (mmap base+stack+VDSO base)" #: modules/computer/os.c:411 msgid "Fully enabled (mmap base+stack+VDSO base+heap)" msgstr "Totalmente habilitado (mmap base+stack+VDSO base+heap)" #. !/bits of entropy for rng (0) #: modules/computer/os.c:420 msgid "(None or not available)" msgstr "(ninguno o no disponible)" #. !/bits of entropy for rng (low/poor value) #: modules/computer/os.c:421 #, c-format msgid "%d bits (low)" msgstr "%d bits (bajo)" #. !/bits of entropy for rng (medium value) #: modules/computer/os.c:422 #, c-format msgid "%d bits (medium)" msgstr "%d bits (medio)" #. !/bits of entropy for rng (high/good value) #: modules/computer/os.c:423 #, c-format msgid "%d bits (healthy)" msgstr "%d bits (saludable)" #: modules/computer/os.c:788 msgid "Not installed" msgstr "No instalado" #: modules/computer/os.c:791 msgid "Enabled" msgstr "Habilitado" #: modules/computer/users.c:50 msgid "User Information" msgstr "Información de usuario" #: modules/computer/users.c:51 msgid "User ID" msgstr "Identificador de usuario" #: modules/computer/users.c:54 msgid "Default Shell" msgstr "Intérprete de órdenes predefinido" #: modules/devices/alpha/processor.c:88 modules/devices.c:865 #: modules/devices/devicetree.c:162 modules/devices/devicetree.c:208 #: modules/devices/devicetree/pmac_data.c:80 #: modules/devices/e2k/processor.c:361 modules/devices/e2k/processor.c:416 #: modules/devices/gpu.c:116 modules/devices/ia64/processor.c:165 #: modules/devices/loongarch64/processor.c:96 #: modules/devices/m68k/processor.c:84 modules/devices/mips/processor.c:75 #: modules/devices/monitors.c:404 modules/devices/parisc/processor.c:155 #: modules/devices/ppc/processor.c:158 modules/devices/riscv/processor.c:242 #: modules/devices/s390/processor.c:132 modules/devices/x86/processor.c:811 msgid "Model" msgstr "Modelo" #: modules/devices/alpha/processor.c:89 msgid "Platform String" msgstr "Plataforma" #: modules/devices/alpha/processor.c:90 modules/devices/arm/processor.c:344 #: modules/devices/e2k/processor.c:363 modules/devices/e2k/processor.c:416 #: modules/devices/ia64/processor.c:167 #: modules/devices/loongarch64/processor.c:98 #: modules/devices/m68k/processor.c:87 modules/devices/mips/processor.c:77 #: modules/devices/parisc/processor.c:158 modules/devices/ppc/processor.c:160 #: modules/devices/riscv/processor.c:246 modules/devices/sh/processor.c:87 #: modules/devices/x86/processor.c:658 modules/devices/x86/processor.c:811 msgid "Frequency" msgstr "Frecuencia" #: modules/devices/alpha/processor.c:91 modules/devices/arm/processor.c:345 #: modules/devices/e2k/processor.c:364 modules/devices/ia64/processor.c:168 #: modules/devices/m68k/processor.c:88 modules/devices/mips/processor.c:78 #: modules/devices/parisc/processor.c:159 modules/devices/ppc/processor.c:161 #: modules/devices/s390/processor.c:134 modules/devices/sh/processor.c:90 #: modules/devices/x86/processor.c:659 msgid "BogoMips" msgstr "BogoMips" #: modules/devices/alpha/processor.c:92 modules/devices/arm/processor.c:346 #: modules/devices/e2k/processor.c:365 modules/devices/ia64/processor.c:169 #: modules/devices/loongarch64/processor.c:101 #: modules/devices/m68k/processor.c:89 modules/devices/mips/processor.c:79 #: modules/devices/parisc/processor.c:160 modules/devices/ppc/processor.c:162 #: modules/devices/riscv/processor.c:247 modules/devices/s390/processor.c:135 #: modules/devices/sh/processor.c:91 modules/devices/sparc/processor.c:77 #: modules/devices/x86/processor.c:660 msgid "Byte Order" msgstr "Orden de bytes" #. !/flag:swp #: modules/devices/arm/arm_data.c:42 msgctxt "arm-flag" msgid "SWP instruction (atomic read-modify-write)" msgstr "Instrucción SWP (lectura-modificación-escritura atómica)" #. !/flag:half #: modules/devices/arm/arm_data.c:43 msgctxt "arm-flag" msgid "Half-word loads and stores" msgstr "Carga y almacenamiento de medias palabras" #. !/flag:thumb #: modules/devices/arm/arm_data.c:44 msgctxt "arm-flag" msgid "Thumb (16-bit instruction set)" msgstr "Thumb (conjunto de instrucciones de 16 bits)" #. !/flag:26bit #: modules/devices/arm/arm_data.c:45 msgctxt "arm-flag" msgid "26-Bit Model (Processor status register folded into program counter)" msgstr "" "Modelo de 26 bits (registro de estado del procesador plegado en el contador " "del programa)" #. !/flag:fastmult #: modules/devices/arm/arm_data.c:46 msgctxt "arm-flag" msgid "32x32->64-bit multiplication" msgstr "Multiplicación 32x32->64-bit" #. !/flag:fpa #: modules/devices/arm/arm_data.c:47 msgctxt "arm-flag" msgid "Floating point accelerator" msgstr "Acelerador de punto flotante" #. !/flag:vfp #: modules/devices/arm/arm_data.c:48 #, fuzzy msgctxt "arm-flag" msgid "VFP (early SIMD vector floating point instructions)" msgstr "VFP (vector SIMD temprano de instrucciones de punto flotante)" #. !/flag:edsp #: modules/devices/arm/arm_data.c:49 msgctxt "arm-flag" msgid "DSP extensions (the 'e' variant of the ARM9 CPUs, and all others above)" msgstr "" "Extensiones DSP (la variante 'e' de las CPU ARM9 y todas las posteriores)" #. !/flag:java #: modules/devices/arm/arm_data.c:50 msgctxt "arm-flag" msgid "Jazelle (Java bytecode accelerator)" msgstr "Jazelle (acelerador de código intermedio de Java)" #. !/flag:iwmmxt #: modules/devices/arm/arm_data.c:51 msgctxt "arm-flag" msgid "SIMD instructions similar to Intel MMX" msgstr "Instrucciones SIMD parecidas a las MMX de Intel" #. !/flag:crunch #: modules/devices/arm/arm_data.c:52 msgctxt "arm-flag" msgid "MaverickCrunch coprocessor (if kernel support enabled)" msgstr "Coprocesador MaverickCrunch (si está habilitado en el kernel)" #. !/flag:thumbee #: modules/devices/arm/arm_data.c:53 msgctxt "arm-flag" msgid "ThumbEE" msgstr "" #. !/flag:neon #: modules/devices/arm/arm_data.c:54 msgctxt "arm-flag" msgid "Advanced SIMD/NEON on AArch32" msgstr "SIMD/NEON avanzado en AArch32" #. !/flag:evtstrm #: modules/devices/arm/arm_data.c:55 #, fuzzy msgctxt "arm-flag" msgid "Kernel event stream using generic architected timer" msgstr "" "Secuencia de eventos del kernel con temporizador de arquitectura genérico" #. !/flag:vfpv3 #: modules/devices/arm/arm_data.c:56 msgctxt "arm-flag" msgid "VFP version 3" msgstr "VFP versión 3" #. !/flag:vfpv3d16 #: modules/devices/arm/arm_data.c:57 msgctxt "arm-flag" msgid "VFP version 3 with 16 D-registers" msgstr "VFP versión 3 con 16 registros D" #. !/flag:vfpv4 #: modules/devices/arm/arm_data.c:58 msgctxt "arm-flag" msgid "VFP version 4 with fast context switching" msgstr "VFP versión 4 con cambio de contexto rápido" #. !/flag:vfpd32 #: modules/devices/arm/arm_data.c:59 msgctxt "arm-flag" msgid "VFP with 32 D-registers" msgstr "VFP con 32 registros D" #. !/flag:tls #: modules/devices/arm/arm_data.c:60 msgctxt "arm-flag" msgid "TLS register" msgstr "Registro TLS" #. !/flag:idiva #: modules/devices/arm/arm_data.c:61 msgctxt "arm-flag" msgid "SDIV and UDIV hardware division in ARM mode" msgstr "División por hardware SDIV y UDIV en modo ARM" #. !/flag:idivt #: modules/devices/arm/arm_data.c:62 msgctxt "arm-flag" msgid "SDIV and UDIV hardware division in Thumb mode" msgstr "División por hardware SDIV y UDIV en modo Thumb" #. !/flag:lpae #: modules/devices/arm/arm_data.c:63 #, fuzzy msgctxt "arm-flag" msgid "40-bit Large Physical Address Extension" msgstr "Extensión de direcciones físicas larga de 40-bit" #. !/flag:pmull #: modules/devices/arm/arm_data.c:65 #, fuzzy msgctxt "arm-flag" msgid "64x64->128-bit F2m multiplication (arch>=8)" msgstr "64x64->128-bit F2m multiplicadores (arch>=8)" #. !/flag:aes #: modules/devices/arm/arm_data.c:66 msgctxt "arm-flag" msgid "Crypto:AES (arch>=8)" msgstr "Cifrado:AES (arch>=8)" #. !/flag:sha1 #: modules/devices/arm/arm_data.c:67 msgctxt "arm-flag" msgid "Crypto:SHA1 (arch>=8)" msgstr "Cifrado:SHA1 (arch>=8)" #. !/flag:sha2 #: modules/devices/arm/arm_data.c:68 msgctxt "arm-flag" msgid "Crypto:SHA2 (arch>=8)" msgstr "Cifrado:SHA2 (arch>=8)" #. !/flag:crc32 #: modules/devices/arm/arm_data.c:69 msgctxt "arm-flag" msgid "CRC32 checksum instructions (arch>=8)" msgstr "Instrucciones de suma de comprobación CRC32 (arch>=8)" #. !/flag:fp #: modules/devices/arm/arm_data.c:71 msgctxt "arm-flag" msgid "Floating-point on AArch64 (arch>=8)" msgstr "" #. !/flag:asimd #: modules/devices/arm/arm_data.c:72 msgctxt "arm-flag" msgid "Advanced SIMD/NEON on AArch64 (arch>=8)" msgstr "SIMD/NEON avanzado en AArch64 (arch>=8)" #. !/flag:atomics #: modules/devices/arm/arm_data.c:73 msgctxt "arm-flag" msgid "Atomic instructions on AArch64 (arch>=8)" msgstr "" #. !/flag:fphp #: modules/devices/arm/arm_data.c:74 msgctxt "arm-flag" msgid "Half precision floating point on AArch64 (arch>=8)" msgstr "" #. !/flag:asimdhp #: modules/devices/arm/arm_data.c:75 msgctxt "arm-flag" msgid "Advanced SIMD with BFloat16 on AArch64 (arch>=8)" msgstr "" #. !/flag:cpuid #: modules/devices/arm/arm_data.c:76 msgctxt "arm-flag" msgid "CPU features can be read on AArch64 (arch>=8)" msgstr "" #. !/flag:asimdrdm #: modules/devices/arm/arm_data.c:77 msgctxt "arm-flag" msgid "Advanced SIMD rounding Double MulAcc on AArch64 (arch>=8)" msgstr "" #. !/flag:jscvt #: modules/devices/arm/arm_data.c:78 msgctxt "arm-flag" msgid "JacaScript conversion on AArch64 (arch>=8)" msgstr "" #. !/flag:fcma #: modules/devices/arm/arm_data.c:79 msgctxt "arm-flag" msgid "Complex number SIMD on AArch64 (arch>=8)" msgstr "" #. !/flag:lrcpc #: modules/devices/arm/arm_data.c:80 msgctxt "arm-flag" msgid "Weak release consistency on AArch64 (arch>=8)" msgstr "" #. !/flag:dcpop #: modules/devices/arm/arm_data.c:81 msgctxt "arm-flag" msgid "Data cache clean to Point of Persistence on AArch64 (arch>=8)" msgstr "" #. !/flag:sha3 #: modules/devices/arm/arm_data.c:82 msgctxt "arm-flag" msgid "SHA-3 instructions on AArch64 (arch>=8)" msgstr "" #. !/flag:sm3 #: modules/devices/arm/arm_data.c:83 msgctxt "arm-flag" msgid "SM3 instructions on AArch64 (arch>=8)" msgstr "" #. !/flag:sm4 #: modules/devices/arm/arm_data.c:84 msgctxt "arm-flag" msgid "SM4 instructions on AArch64 (arch>=8)" msgstr "" #. !/flag:asimddp #: modules/devices/arm/arm_data.c:85 msgctxt "arm-flag" msgid "SIMD Dot Product on AArch64 (arch>=8)" msgstr "" #. !/flag:sha512 #: modules/devices/arm/arm_data.c:86 msgctxt "arm-flag" msgid "SHA512 instructions on AArch64 (arch>=8)" msgstr "" #. !/flag:sve #: modules/devices/arm/arm_data.c:87 msgctxt "arm-flag" msgid "Scalable Vector Extension on AArch64 (arch>=8)" msgstr "" #: modules/devices/arm/processor.c:143 msgid "ARM Processor" msgstr "Procesador ARM" #: modules/devices/arm/processor.c:214 modules/devices/riscv/processor.c:211 #: modules/devices/x86/processor.c:609 msgid "Empty List" msgstr "Lista vacía" #: modules/devices/arm/processor.c:239 modules/devices/gpu.c:204 #: modules/devices/gpu.c:294 modules/devices/x86/processor.c:267 msgid "Clocks" msgstr "Frecuencias de reloj" #: modules/devices/arm/processor.c:285 modules/devices/arm/processor.c:298 #: modules/devices/x86/processor.c:313 modules/devices/x86/processor.c:326 #, c-format msgid "%.2f-%.2f %s=%dx\n" msgstr "" #: modules/devices/arm/processor.c:341 msgid "Linux Name" msgstr "" #: modules/devices/arm/processor.c:342 msgid "Decoded Name" msgstr "Nombre decodificado" #: modules/devices/arm/processor.c:343 modules/network/net.c:476 msgid "Mode" msgstr "Modo" #: modules/devices/arm/processor.c:349 msgid "ARM" msgstr "ARM" #: modules/devices/arm/processor.c:350 msgid "Implementer" msgstr "Implementador" #: modules/devices/arm/processor.c:351 modules/devices/dmi_memory.c:874 msgid "Part" msgstr "Parte" #: modules/devices/arm/processor.c:352 modules/devices/ia64/processor.c:162 #: modules/devices/parisc/processor.c:156 modules/devices/riscv/processor.c:243 msgid "Architecture" msgstr "Arquitectura" #: modules/devices/arm/processor.c:353 msgid "Variant" msgstr "Variante" #: modules/devices/arm/processor.c:355 modules/devices/riscv/processor.c:250 #: modules/devices/sparc/processor.c:78 modules/devices/x86/processor.c:666 msgid "Capabilities" msgstr "Capacidades" #: modules/devices/arm/processor.c:477 msgid "SOC/Package" msgstr "SOC/Paquete" #: modules/devices/arm/processor.c:481 modules/devices/x86/processor.c:752 msgid "Logical CPU Config" msgstr "Configuración lógica de la CPU" #: modules/devices/arm/processor.c:498 msgid "SOC/Package Information" msgstr "Información del SOC/Paquete" #: modules/devices/battery.c:178 #, c-format msgid "" "\n" "[Battery: %s]\n" "State=%s (load: %s)\n" "Capacity=%s / %s (%.2f%%)\n" "Battery Technology=%s (%s)\n" "Manufacturer=%s\n" "Model Number=%s\n" "Serial Number=%s\n" msgstr "" "\n" "[Batería: %s]\n" "Estado=%s (carga: %s)\n" "Capacidad=%s / %s (%.2f%%)\n" "Tecnología de la batería=%s (%s)\n" "Fabricante=%s\n" "Número de modelo=%s\n" "Número de serie=%s\n" #: modules/devices/battery.c:257 #, c-format msgid "" "\n" "[AC Power Supply: %s]\n" "Online=%s\n" "AC Power Type=%s\n" msgstr "" #: modules/devices/battery.c:279 #, c-format msgid "" "\n" "[Battery: %s]\n" "State=%s\n" "Capacity=%s / %s\n" "Battery Technology=%s\n" "Manufacturer=%s\n" "Model Number=%s\n" "Serial Number=%s\n" msgstr "" "\n" "[Batería: %s]\n" "Estado=%s\n" "Capacidad=%s / %s\n" "Tecnología de la batería=%s\n" "Fabricante=%s\n" "Número de modelo=%s\n" "Número de serie=%s\n" #: modules/devices/battery.c:372 #, c-format msgid "" "\n" "[Battery (APM)]\n" "Charge=%d%%\n" "Remaining Charge=%s of %s\n" "Using=%s\n" "APM driver version=%s\n" "APM BIOS version=%s\n" msgstr "" "\n" "[Batería (APM)]\n" "Carga=%d%%\n" "Carga restante=%s de %s\n" "En uso=%s\n" "Versión del controlador de APM=%s\n" "Versión de APM del BIOS=%s\n" #: modules/devices/battery.c:384 #, c-format msgid "" "\n" "[Battery (APM)]\n" "Charge=%d%%\n" "Using=%s\n" "APM driver version=%s\n" "APM BIOS version=%s\n" msgstr "" "\n" "[Batería (APM)]\n" "Carga=%d%%\n" "En uso=%s\n" "Versión del controlador de APM=%s\n" "Versión de APM del BIOS=%s\n" #: modules/devices/battery.c:413 msgid "" "[No batteries]\n" "No batteries found on this system=\n" msgstr "" "[No hay baterías]\n" "No se han encontrado baterías en el sistema=\n" #: modules/devices.c:100 msgid "Graphics Processors" msgstr "Procesadores gráficos" #: modules/devices.c:101 modules/devices/monitors.c:449 #: modules/devices/monitors.c:495 msgid "Monitors" msgstr "Monitores" #: modules/devices.c:102 modules/devices/pci.c:175 msgid "PCI Devices" msgstr "Dispositivos PCI" #: modules/devices.c:103 modules/devices/usb.c:211 msgid "USB Devices" msgstr "Dispositivos USB" #: modules/devices.c:104 msgid "Firmware" msgstr "" #: modules/devices.c:106 msgid "Battery" msgstr "Batería" #: modules/devices.c:107 msgid "Sensors" msgstr "Sensores" #: modules/devices.c:110 msgid "System DMI" msgstr "Sistema DMI" #: modules/devices.c:111 msgid "Memory Devices" msgstr "Dispositivos de memoria" #: modules/devices.c:113 modules/devices.c:115 msgid "Device Tree" msgstr "Árbol de dispositivos" #: modules/devices.c:117 msgid "Resources" msgstr "Recursos" #: modules/devices.c:594 msgid "WSL2" msgstr "" #: modules/devices.c:841 msgid "Sensor" msgstr "Sensor" #: modules/devices.c:899 modules/devices/dmi_memory.c:806 msgid "Devices" msgstr "Dispositivos" #: modules/devices.c:911 msgid "Update PCI ID listing" msgstr "Actualizar el listado de identificadores PCI" #: modules/devices.c:916 msgid "Update USB ID listing" msgstr "" #: modules/devices.c:921 msgid "Update EDID vendor codes" msgstr "" #: modules/devices.c:926 msgid "Update IEEE OUI vendor codes" msgstr "" #: modules/devices.c:931 msgid "Update SD card manufacturer information" msgstr "" #: modules/devices.c:938 msgid "Update CPU flags database" msgstr "" #: modules/devices.c:973 msgid "Gathers information about hardware devices" msgstr "Obtiene información acerca de los dispositivos de hardware" #: modules/devices.c:994 msgid "A copy of pci.ids is not available on the system." msgstr "" #: modules/devices.c:997 msgid "A full pci.ids is not available on the system." msgstr "" #: modules/devices.c:1002 msgid "Resource information requires superuser privileges" msgstr "La información de recursos require privilegios de administrador" #: modules/devices.c:1008 msgid "" "Any NVMe storage devices present are not listed.\n" "udisks2 is required for NVMe devices." msgstr "" #: modules/devices/devicetree.c:51 msgid "Properties" msgstr "Propiedades" #: modules/devices/devicetree.c:52 msgid "Children" msgstr "Hijos" #: modules/devices/devicetree.c:88 msgid "Node" msgstr "Nodo" #: modules/devices/devicetree.c:89 msgid "Node Path" msgstr "Ruta de nodo" #: modules/devices/devicetree.c:90 msgid "Alias" msgstr "Alias" #: modules/devices/devicetree.c:91 msgid "Symbol" msgstr "Símbolo" #: modules/devices/devicetree.c:144 modules/devices/devicetree/pmac_data.c:79 msgid "Platform" msgstr "Plataforma" #: modules/devices/devicetree.c:145 modules/devices/devicetree.c:210 #: modules/devices/gpu.c:299 msgid "Compatible" msgstr "Compatible" #: modules/devices/devicetree.c:146 msgid "GPU-compatible" msgstr "Compatible con GPU" #: modules/devices/devicetree.c:161 msgid "Raspberry Pi or Compatible" msgstr "Raspberry Pi o compatible" #: modules/devices/devicetree.c:163 modules/devices/devicetree.c:190 #: modules/devices/devicetree.c:209 modules/devices/devicetree/rpi_data.c:169 #: modules/devices/dmi.c:42 modules/devices/dmi.c:52 modules/devices/dmi.c:58 #: modules/devices/spd-decode.c:1383 modules/devices/usb.c:181 msgid "Serial Number" msgstr "Número de serie" #: modules/devices/devicetree.c:164 modules/devices/devicetree/rpi_data.c:166 msgid "RCode" msgstr "" #: modules/devices/devicetree.c:164 msgid "No revision code available; unable to lookup model details." msgstr "" "No hay código de revisión disponible; no se pueden obtener detalles del " "modelo." #: modules/devices/devicetree.c:189 msgid "More" msgstr "Más" #: modules/devices/devicetree.c:270 msgid "Messages" msgstr "Mensajes" #: modules/devices/devicetree/pmac_data.c:78 msgid "Apple Power Macintosh" msgstr "Power Macintosh de Apple" #: modules/devices/devicetree/pmac_data.c:83 msgid "Detected as" msgstr "Detectado como" #: modules/devices/devicetree/pmac_data.c:84 msgid "PMAC Flags" msgstr "Indicadores de PMAC" #: modules/devices/devicetree/pmac_data.c:85 msgid "L2 Cache" msgstr "Cache L2" #: modules/devices/devicetree/pmac_data.c:86 msgid "PMAC Generation" msgstr "Generación de PMAC" #: modules/devices/devicetree/rpi_data.c:161 #: modules/devices/devicetree/rpi_data.c:162 msgid "Raspberry Pi" msgstr "Raspberry Pi" #: modules/devices/devicetree/rpi_data.c:162 msgid "Board Name" msgstr "Nombre de la tarjeta" #: modules/devices/devicetree/rpi_data.c:163 msgid "PCB Revision" msgstr "Revisión de PCB" #: modules/devices/devicetree/rpi_data.c:164 msgid "Introduction" msgstr "Presentado" #: modules/devices/devicetree/rpi_data.c:165 modules/devices/usb.c:173 msgid "Manufacturer" msgstr "Fabricante" #: modules/devices/devicetree/rpi_data.c:167 #, fuzzy msgid "SOC (spec)" msgstr "SOC (specifi)" #: modules/devices/devicetree/rpi_data.c:168 #, fuzzy msgid "Memory (spec)" msgstr "Memoria (specif)" #: modules/devices/devicetree/rpi_data.c:170 msgid "Permanent overvolt bit" msgstr "Bit de sobrevoltage permanente" #: modules/devices/devicetree/rpi_data.c:170 msgctxt "rpi-ov-bit" msgid "Set" msgstr "Asignado" #: modules/devices/devicetree/rpi_data.c:170 msgctxt "rpi-ov-bit" msgid "Not set" msgstr "No asignado" #: modules/devices/dmi.c:37 modules/devices/inputdevices.c:145 #: modules/devices/usb.c:170 msgid "Product" msgstr "Producto" #: modules/devices/dmi.c:39 modules/devices/e2k/processor.c:360 #: modules/devices/ia64/processor.c:164 #: modules/devices/loongarch64/processor.c:95 modules/devices/sh/processor.c:86 msgid "Family" msgstr "Familia" #: modules/devices/dmi.c:43 msgid "SKU" msgstr "" #: modules/devices/dmi.c:44 msgid "BIOS" msgstr "" #: modules/devices/dmi.c:53 modules/devices/dmi.c:59 msgid "Asset Tag" msgstr "Etiqueta de propiedad" #: modules/devices/dmi.c:161 msgid "DMI Unavailable" msgstr "DMI no disponible" #: modules/devices/dmi.c:162 msgid "DMI is not available. Perhaps this platform does not provide DMI." msgstr "DMI no está disponible. Puede que esta plataforma no proporcione DMI." #: modules/devices/dmi_memory.c:620 modules/devices/dmi_memory.c:859 msgid "Memory Device List" msgstr "Lista de dispositivos de memoria" #: modules/devices/dmi_memory.c:668 msgid "Memory Array" msgstr "Matriz de memoria" #: modules/devices/dmi_memory.c:669 modules/devices/x86/processor.c:714 msgid "DMI Handle" msgstr "" #: modules/devices/dmi_memory.c:670 modules/devices/dmi_memory.c:726 #: modules/devices/dmi_memory.c:764 modules/devices/dmi_memory.c:871 msgid "Locator" msgstr "Localizador" #: modules/devices/dmi_memory.c:671 msgid "Use" msgstr "" #: modules/devices/dmi_memory.c:672 msgid "Error Correction Type" msgstr "Tipo de corrección de errores" #: modules/devices/dmi_memory.c:673 msgid "Size (Present / Max)" msgstr "Tamaño (Presente / Máximo)" #: modules/devices/dmi_memory.c:674 msgid "Devices (Populated / Sockets)" msgstr "Dispositivos (Usados / Zócalos)" #: modules/devices/dmi_memory.c:675 modules/devices/dmi_memory.c:807 msgid "Types Present" msgstr "Tipos presentes" #: modules/devices/dmi_memory.c:676 msgid "ROM Size" msgstr "" #: modules/devices/dmi_memory.c:724 modules/devices/dmi_memory.c:762 msgid "Memory Socket" msgstr "Zócalo de memoria" #: modules/devices/dmi_memory.c:725 modules/devices/dmi_memory.c:763 msgid "DMI Handles (Array, Socket)" msgstr "" #: modules/devices/dmi_memory.c:727 modules/devices/dmi_memory.c:765 msgid "Bank Locator" msgstr "Localizador de banco" #: modules/devices/dmi_memory.c:728 modules/devices/spd-decode.c:1376 msgid "Form Factor" msgstr "Factor de forma" #: modules/devices/dmi_memory.c:732 modules/devices/spd-decode.c:1382 msgid "Part Number" msgstr "" #: modules/devices/dmi_memory.c:734 msgid "Rated Speed" msgstr "Velocidad nominal" #: modules/devices/dmi_memory.c:735 msgid "Configured Speed" msgstr "Velocidad configurada" #: modules/devices/dmi_memory.c:736 msgid "Data Width/Total Width" msgstr "Ancho de datos/Ancho total" #: modules/devices/dmi_memory.c:737 msgid "Rank" msgstr "Rango" #: modules/devices/dmi_memory.c:738 msgid "Minimum Voltage" msgstr "Voltaje mínimo" #: modules/devices/dmi_memory.c:739 msgid "Maximum Voltage" msgstr "Voltaje máximo" #: modules/devices/dmi_memory.c:740 msgid "Configured Voltage" msgstr "Voltaje configurado" #: modules/devices/dmi_memory.c:766 modules/devices/dmi_memory.c:773 #: modules/devices/monitors.c:495 msgid "(Empty)" msgstr "(Vacío)" #: modules/devices/dmi_memory.c:804 msgid "Serial Presence Detect (SPD) Summary" msgstr "Resumen de la Detección de presencia física (SPD)" #: modules/devices/dmi_memory.c:860 msgid "(Not available - See hint box below)" msgstr "" #: modules/devices/dmi_memory.c:932 msgid "No DMI available" msgstr "" #: modules/devices/dmi_memory.c:937 msgid "dmidecode package installed" msgstr "" #: modules/devices/dmi_memory.c:948 msgid "Memory Information requires more Setup:" msgstr "" #: modules/devices/dmi_memory.c:976 msgid "" "\"More often than not, information contained in the DMI tables is " "inaccurate,\n" "incomplete or simply wrong.\" -dmidecode manual page" msgstr "" "«La mayoría de las veces, la información contenida en las tablas de DMI es " "inexacta,\n" "incompleta o simplemente incorrecta». -página del manual de dmidecode" #: modules/devices/e2k/processor.c:30 modules/devices/x86/processor.c:149 msgid "Cache information not available=\n" msgstr "Información de caché no disponible=\n" #: modules/devices/e2k/processor.c:36 modules/devices/x86/processor.c:155 #, c-format msgid "Level %d (%s)=%d-way set-associative, %d sets, %dKB size\n" msgstr "" "Nivel %d (%s)=%d-vías asociativa por conjuntos, %d conjuntos, %dKB de " "tamaño\n" #: modules/devices/e2k/processor.c:51 msgctxt "cache-type" msgid "Data" msgstr "Datos" #: modules/devices/e2k/processor.c:52 msgctxt "cache-type" msgid "Instruction" msgstr "Instrucciones" #: modules/devices/e2k/processor.c:53 msgctxt "cache-type" msgid "Unified" msgstr "Unificada" #: modules/devices/e2k/processor.c:157 modules/devices/x86/processor.c:366 msgid "Caches" msgstr "Cachés" #: modules/devices/e2k/processor.c:208 modules/devices/e2k/processor.c:225 #: modules/devices/x86/processor.c:417 modules/devices/x86/processor.c:434 #, c-format msgid "Level %d (%s)#%d=%dx %dKB (%dKB), %d-way set-associative, %d sets\n" msgstr "" "Nivel %d (%s)#%d=%dx %dKB (%dKB), %d-vías asociativa por conjuntos, %d " "conjuntos\n" #: modules/devices/firmware.c:36 msgid "Device cannot be removed easily" msgstr "El dispositivo no puede extraerse fácilmente" #: modules/devices/firmware.c:37 msgid "Device is updatable in this or any other mode" msgstr "El dispositivo se puede actualizar en este o cualquier otro modo" #: modules/devices/firmware.c:38 msgid "Update can only be done from offline mode" msgstr "" #: modules/devices/firmware.c:39 msgid "Requires AC power" msgstr "Require corriente alterna" #: modules/devices/firmware.c:40 msgid "Is locked and can be unlocked" msgstr "Está bloqueado y no puede desbloquearse" #: modules/devices/firmware.c:41 msgid "Is found in current metadata" msgstr "Se encuentra en los metadatos actuales" #: modules/devices/firmware.c:42 msgid "Requires a bootloader mode to be manually enabled by the user" msgstr "" "Requiere que el usuario habilite manualmente un modo del cargador de arranque" #: modules/devices/firmware.c:43 msgid "Has been registered with other plugins" msgstr "Ha sido registrado con otros complementos" #: modules/devices/firmware.c:44 msgid "Requires a reboot to apply firmware or to reload hardware" msgstr "Requiere reiniciar para aplicar el firmware o recargar el hardware" #: modules/devices/firmware.c:45 msgid "Requires system shutdown to apply firmware" msgstr "Requiere apagar el sistema para aplicar el firmware" #: modules/devices/firmware.c:46 msgid "Has been reported to a metadata server" msgstr "Ha sido reportado a un servidor de metadatos" #: modules/devices/firmware.c:47 msgid "User has been notified" msgstr "El usuario ha sido notificado" #: modules/devices/firmware.c:48 msgid "Always use the runtime version rather than the bootloader" msgstr "" #: modules/devices/firmware.c:49 msgid "Install composite firmware on the parent before the child" msgstr "" #: modules/devices/firmware.c:50 msgid "Is currently in bootloader mode" msgstr "Está actualmente en modo cargador de arranque" #: modules/devices/firmware.c:51 msgid "The hardware is waiting to be replugged" msgstr "El hardware está a la espera de ser reconectado" #: modules/devices/firmware.c:52 msgid "Ignore validation safety checks when flashing this device" msgstr "" "Ignorar las comprobaciones de seguridad de validación al actualizar este " "dispositivo" #: modules/devices/firmware.c:53 msgid "Requires the update to be retried with a new plugin" msgstr "" "Requiere que la actualización se vuelva a intentar con un nuevo complemento" #: modules/devices/firmware.c:54 msgid "Do not add instance IDs from the device baseclass" msgstr "" "No añada identificaciones de instancia de la clase base del dispositivo" #: modules/devices/firmware.c:55 msgid "Device update needs to be separately activated" msgstr "La actualización del dispositivo debe ser activada por separado" #: modules/devices/firmware.c:56 msgid "" "Ensure the version is a valid semantic version, e.g. numbers separated with " "dots" msgstr "" "Asegúrese de que la versión es una versión semántica válida, por ejemplo, " "números separados por puntos" #: modules/devices/firmware.c:57 msgid "Extra metadata can be exposed about this device" msgstr "Se pueden exponer metadatos adicionales sobre este dispositivo" #: modules/devices/firmware.c:74 msgid "DeviceId" msgstr "" #: modules/devices/firmware.c:74 modules/devices/firmware.c:187 msgid "Guid" msgstr "" #: modules/devices/firmware.c:74 msgid "Plugin" msgstr "Complemento" #: modules/devices/firmware.c:74 modules/devices/firmware.c:205 #: modules/network.c:381 msgid "Flags" msgstr "Indicadores" #: modules/devices/firmware.c:75 msgid "VendorId" msgstr "" #: modules/devices/firmware.c:75 msgid "VersionBootloader" msgstr "" #: modules/devices/firmware.c:76 modules/devices/firmware.c:179 msgid "Icon" msgstr "Icono" #: modules/devices/firmware.c:76 msgid "InstallDuration" msgstr "" #: modules/devices/firmware.c:76 modules/devices/firmware.c:197 msgid "Created" msgstr "Creado" #: modules/devices/firmware.c:244 msgid "Firmware List" msgstr "Lista de firmware" #: modules/devices/firmware.c:257 msgid "Requires the fwupd daemon." msgstr "" #: modules/devices/gpu.c:94 modules/devices/pci.c:111 #: modules/devices/storage.c:58 msgid "SVendor" msgstr "" #: modules/devices/gpu.c:95 modules/devices/pci.c:112 #: modules/devices/storage.c:59 msgid "SDevice" msgstr "" #: modules/devices/gpu.c:103 modules/devices/pci.c:122 #: modules/devices/storage.c:68 msgid "PCI Express" msgstr "" #: modules/devices/gpu.c:104 modules/devices/pci.c:124 #: modules/devices/storage.c:70 msgid "Maximum Link Width" msgstr "Ancho máximo del enlace" #: modules/devices/gpu.c:105 modules/devices/pci.c:126 #: modules/devices/storage.c:71 msgid "Maximum Link Speed" msgstr "Velocidad máxima del enlace" #: modules/devices/gpu.c:105 modules/devices/pci.c:125 #: modules/devices/pci.c:126 modules/devices/storage.c:71 msgid "GT/s" msgstr "" #: modules/devices/gpu.c:115 msgid "NVIDIA" msgstr "" #: modules/devices/gpu.c:117 msgid "BIOS Version" msgstr "Versión del BIOS" #: modules/devices/gpu.c:118 msgid "UUID" msgstr "" #: modules/devices/gpu.c:197 modules/devices/gpu.c:289 #: modules/devices/inputdevices.c:140 modules/devices/pci.c:143 #: modules/devices/usb.c:169 msgid "Device Information" msgstr "Información del dispositivo" #: modules/devices/gpu.c:199 modules/devices/gpu.c:291 #: modules/devices/storage.c:69 msgid "Location" msgstr "Ubicación" #: modules/devices/gpu.c:200 msgid "DRM Device" msgstr "Dispositivo DRM" #: modules/devices/gpu.c:201 modules/devices/pci.c:144 #: modules/devices/usb.c:136 modules/devices/usb.c:177 msgid "Class" msgstr "Clase" #: modules/devices/gpu.c:210 modules/devices/pci.c:149 msgid "In Use" msgstr "En uso" #: modules/devices/gpu.c:245 msgid "Unknown integrated GPU" msgstr "GPU integrada desconocida" #: modules/devices/gpu.c:253 msgid "clock-frequency property" msgstr "" #: modules/devices/gpu.c:254 msgid "Operating Points (OPPv1)" msgstr "" #: modules/devices/gpu.c:255 msgid "Operating Points (OPPv2)" msgstr "" #: modules/devices/gpu.c:297 msgid "Device Tree Node" msgstr "Nodo del árbol de dispositivos" #: modules/devices/gpu.c:300 modules/devices/monitors.c:475 #: modules/network/net.c:477 msgid "Status" msgstr "Estado" #: modules/devices/gpu.c:317 msgid "GPUs" msgstr "" #: modules/devices/gpu.c:341 msgid "No GPU devices found" msgstr "No se han encontrado procesadores de gráficos (GPU)" #: modules/devices/ia64/processor.c:108 msgid "IA64 Processor" msgstr "Procesador IA64" #: modules/devices/ia64/processor.c:163 msgid "Architecture Revision" msgstr "Revisión de la arquitectura" #: modules/devices/ia64/processor.c:170 msgid "CPU regs" msgstr "Registros de la CPU" #: modules/devices/ia64/processor.c:171 #: modules/devices/loongarch64/processor.c:100 msgid "Features" msgstr "Características" #: modules/devices/inputdevices.c:143 modules/devices/pci.c:153 #: modules/devices/usb.c:183 msgid "Bus" msgstr "Bus" #: modules/devices/inputdevices.c:149 msgid "Connected to" msgstr "Conectado a" #: modules/devices/inputdevices.c:153 msgid "InfraRed port" msgstr "Puerto infrarrojo" #: modules/devices/loongarch64/processor.c:94 #: modules/devices/mips/processor.c:76 msgid "System Type" msgstr "Tipo de sistema" #: modules/devices/loongarch64/processor.c:99 msgid "BogoMIPS" msgstr "" #: modules/devices/m68k/processor.c:85 modules/devices/riscv/processor.c:245 msgid "MMU" msgstr "MMU" #: modules/devices/m68k/processor.c:86 modules/devices/sparc/processor.c:76 msgid "FPU" msgstr "FPU" #: modules/devices/m68k/processor.c:90 msgid "Calibration" msgstr "Calibración" #: modules/devices/monitors.c:30 modules/devices/monitors.c:257 #: modules/devices/monitors.c:350 modules/devices/spd-decode.c:699 msgid "(Unspecified)" msgstr "(Sin especificar)" #: modules/devices/monitors.c:232 #, c-format msgid "Week %d of %d" msgstr "Semana %d de %d" #: modules/devices/monitors.c:242 msgid "Ok" msgstr "Correcto" #: modules/devices/monitors.c:242 msgid "Fail" msgstr "Error" #: modules/devices/monitors.c:270 modules/devices/monitors.c:278 #: modules/devices/monitors.c:286 modules/devices/monitors.c:297 #: modules/devices/monitors.c:305 modules/devices/monitors.c:312 #: modules/devices/monitors.c:320 modules/devices/monitors.c:328 #: modules/devices/monitors.c:336 modules/devices/monitors.c:342 msgid "(Empty List)" msgstr "(Lista vacía)" #: modules/devices/monitors.c:394 msgid "Signal Type" msgstr "Tipo de señal" #: modules/devices/monitors.c:394 msgid "Digital" msgstr "Digital" #: modules/devices/monitors.c:394 msgid "Analog" msgstr "Analógica" #: modules/devices/monitors.c:395 modules/devices/usb.c:135 #: modules/network.c:311 modules/network.c:364 modules/network.c:381 msgid "Interface" msgstr "Interfaz" #: modules/devices/monitors.c:396 msgid "Bits per Color Channel" msgstr "Bits por canal de color" #: modules/devices/monitors.c:397 msgid "Speaker Allocation" msgstr "" #: modules/devices/monitors.c:398 msgid "Output (Max)" msgstr "Salida (Máx.)" #: modules/devices/monitors.c:401 msgid "EDID Device" msgstr "Dispositivo EDID" #: modules/devices/monitors.c:405 msgid "Serial" msgstr "Número de serie" #: modules/devices/monitors.c:406 msgid "Manufacture Date" msgstr "Fecha de fabricación" #: modules/devices/monitors.c:407 msgid "EDID Meta" msgstr "Metadatos del EDID" #: modules/devices/monitors.c:408 msgid "Data Size" msgstr "Tamaño de datos" #: modules/devices/monitors.c:408 msgid "bytes" msgstr "" #: modules/devices/monitors.c:410 msgid "Extension Blocks" msgstr "Bloques de extensión" #: modules/devices/monitors.c:411 msgid "Extended to" msgstr "Extendido hasta" #: modules/devices/monitors.c:412 msgid "Checksum" msgstr "Suma de verificación" #: modules/devices/monitors.c:413 msgid "EDID Descriptors" msgstr "Descriptores EDID" #: modules/devices/monitors.c:414 msgid "Detailed Timing Descriptors (DTD)" msgstr "Descriptores de temporización detallados (DTD)" #: modules/devices/monitors.c:415 msgid "Established Timings Bitmap (ETB)" msgstr "Mapa de bits de tiempos establecidos (ETB)" #: modules/devices/monitors.c:416 msgid "Standard Timings (STD)" msgstr "Cronometraje estándar (STD)" #: modules/devices/monitors.c:417 msgid "E-EDID Extension Blocks" msgstr "Bloques de extensión E-EDID" #: modules/devices/monitors.c:418 msgid "EIA/CEA-861 Data Blocks" msgstr "Bloques de datos EIA/CEA-861" #: modules/devices/monitors.c:419 msgid "EIA/CEA-861 Short Audio Descriptors" msgstr "Descriptores de audio cortos EIA/CEA-861" #: modules/devices/monitors.c:420 msgid "EIA/CEA-861 Short Video Descriptors" msgstr "Descriptores de vídeo cortos EIA/CEA-861" #: modules/devices/monitors.c:421 msgid "DisplayID Timings" msgstr "" #: modules/devices/monitors.c:422 msgid "DisplayID Strings" msgstr "" #: modules/devices/monitors.c:423 msgid "Hex Dump" msgstr "Volcado hexadecimal" #: modules/devices/monitors.c:423 msgid "Data" msgstr "Datos" #: modules/devices/monitors.c:473 modules/devices/monitors.c:504 #: modules/devices/pci.c:151 modules/devices/usb.c:182 msgid "Connection" msgstr "Conexión" #: modules/devices/monitors.c:474 msgid "DRM" msgstr "" #: modules/devices/parisc/processor.c:107 msgid "PA-RISC Processor" msgstr "Procesador PA-RISC" #: modules/devices/parisc/processor.c:161 msgid "HVersion" msgstr "HVersion" #: modules/devices/parisc/processor.c:162 msgid "SVersion" msgstr "SVersion" #: modules/devices/pci.c:123 msgid "Link Width" msgstr "Ancho del enlace" #: modules/devices/pci.c:125 msgid "Link Speed" msgstr "Velocidad del enlace" #: modules/devices/pci.c:152 msgid "Domain" msgstr "Dominio" #: modules/devices/pci.c:155 msgid "Function" msgstr "Función" #: modules/devices/pci.c:196 msgid "No PCI devices found" msgstr "No se han encontrado dispositivos PCI" #: modules/devices/ppc/processor.c:117 msgid "POWER Processor" msgstr "Procesador POWER" #: modules/devices/printers.c:88 msgid "⚬ Can do black and white printing=\n" msgstr "⚬ Puede imprimir en blanco y negro=\n" #: modules/devices/printers.c:90 msgid "⚬ Can do color printing=\n" msgstr "⚬ Puede imprimir en color=\n" #: modules/devices/printers.c:92 msgid "⚬ Can do duplexing=\n" msgstr "⚬ Puede hacer duplicados=\n" #: modules/devices/printers.c:94 msgid "⚬ Can do staple output=\n" msgstr "⚬ Puede grapar la salida=\n" #: modules/devices/printers.c:96 msgid "⚬ Can do copies=\n" msgstr "⚬ Puede hacer copias=\n" #: modules/devices/printers.c:98 msgid "⚬ Can collate copies=\n" msgstr "⚬ Puede intercalar copias=\n" #: modules/devices/printers.c:100 msgid "⚬ Printer is rejecting jobs=\n" msgstr "⚬ La impresora está rechazando trabajos=\n" #: modules/devices/printers.c:102 msgid "⚬ Printer was automatically discovered and added=\n" msgstr "⚬ La impresora fue encontrada automáticamente y agregada=\n" #: modules/devices/printers.c:117 msgid "Idle" msgstr "En reposo" #: modules/devices/printers.c:119 msgid "Printing a Job" msgstr "Imprimiendo un trabajo" #: modules/devices/printers.c:121 msgid "Stopped" msgstr "Detenido" #: modules/devices/printers.c:200 msgid "" "[Printers]\n" "No suitable CUPS library found=" msgstr "" "[Impresoras]\n" "No se ha encontrado ninguna biblioteca CUPS adecuada=" #: modules/devices/printers.c:213 msgid "[Printers (CUPS)]\n" msgstr "[Impresoras (CUPS)]\n" #: modules/devices/printers.c:277 msgid "" "[Printers]\n" "No printers found=\n" msgstr "" "[Impresoras]\n" "No se han encontrado impresoras=\n" #: modules/devices/riscv/processor.c:244 msgid "uarch" msgstr "uarch" #: modules/devices/riscv/riscv_data.c:37 msgctxt "rv-ext" msgid "RISC-V 32-bit" msgstr "RISC-V 32-bit" #: modules/devices/riscv/riscv_data.c:38 msgctxt "rv-ext" msgid "RISC-V 64-bit" msgstr "RISC-V 64-bit" #: modules/devices/riscv/riscv_data.c:39 msgctxt "rv-ext" msgid "RISC-V 128-bit" msgstr "RISC-V 128-bit" #: modules/devices/riscv/riscv_data.c:40 #, fuzzy msgctxt "rv-ext" msgid "Base embedded integer instructions (15 registers)" msgstr "Instrucciones de enteros embebidas base (15 registros)" #: modules/devices/riscv/riscv_data.c:41 #, fuzzy msgctxt "rv-ext" msgid "Base integer instructions (31 registers)" msgstr "Instrucciones de enteros base (31 registros)" #: modules/devices/riscv/riscv_data.c:42 msgctxt "rv-ext" msgid "Hardware integer multiply and divide" msgstr "Multiplicación y división de enteros por hardware" #: modules/devices/riscv/riscv_data.c:43 msgctxt "rv-ext" msgid "Atomic memory operations" msgstr "Operaciones de memoria atómicas" #: modules/devices/riscv/riscv_data.c:44 msgctxt "rv-ext" msgid "Compressed 16-bit instructions" msgstr "Instrucciones comprimidas de 16 bits" #: modules/devices/riscv/riscv_data.c:45 msgctxt "rv-ext" msgid "Floating-point instructions, single-precision" msgstr "Instrucciones de punto-flotante, precision simple" #: modules/devices/riscv/riscv_data.c:46 msgctxt "rv-ext" msgid "Floating-point instructions, double-precision" msgstr "Instrucciones de punto-flotante, precision doble" #: modules/devices/riscv/riscv_data.c:47 msgctxt "rv-ext" msgid "Floating-point instructions, quad-precision" msgstr "Instrucciones de punto-flotante, precision cuádruple" #: modules/devices/riscv/riscv_data.c:48 msgctxt "rv-ext" msgid "Bit manipulation instructions" msgstr "Instrucciones de manipulación de bits" #: modules/devices/riscv/riscv_data.c:49 msgctxt "rv-ext" msgid "Vector operations" msgstr "Operaciones de vectores" #: modules/devices/riscv/riscv_data.c:50 msgctxt "rv-ext" msgid "Scalar Cryptography" msgstr "" #: modules/devices/riscv/riscv_data.c:51 msgctxt "rv-ext" msgid "Base Counters and Timers" msgstr "" #: modules/devices/riscv/riscv_data.c:52 msgctxt "rv-ext" msgid "Control and Status Register" msgstr "" #: modules/devices/riscv/riscv_data.c:53 msgctxt "rv-ext" msgid "Instruction-Fetch Fence" msgstr "" #: modules/devices/riscv/riscv_data.c:54 msgctxt "rv-ext" msgid "Hardware performance counters" msgstr "" #: modules/devices/riscv/riscv_data.c:55 msgctxt "rv-ext" msgid "Accell Index addresses" msgstr "" #: modules/devices/riscv/riscv_data.c:56 msgctxt "rv-ext" msgid "Basic bit-manipulation" msgstr "" #: modules/devices/riscv/riscv_data.c:57 msgctxt "rv-ext" msgid "Supervisor-level Instructions" msgstr "" #: modules/devices/riscv/riscv_data.c:58 msgctxt "rv-ext" msgid "User Mode" msgstr "" #: modules/devices/riscv/riscv_data.c:59 msgctxt "rv-ext" msgid "Transactional memory" msgstr "Memoria transaccional" #: modules/devices/riscv/riscv_data.c:60 msgctxt "rv-ext" msgid "Packed SIMD instructions" msgstr "Instrucciones SIMD empaquetadas" #: modules/devices/riscv/riscv_data.c:61 msgctxt "rv-ext" msgid "Decimal floating-point instructions" msgstr "Instrucciones de punto-flotante decimales" #: modules/devices/riscv/riscv_data.c:62 msgctxt "rv-ext" msgid "Dynamically translated languages" msgstr "Idiomas traducidos dinámicamente" #: modules/devices/riscv/riscv_data.c:63 msgctxt "rv-ext" msgid "User-level interrupts" msgstr "Interrupciones de nivel de usuario" #: modules/devices/s390/processor.c:92 msgid "S390 Processor" msgstr "Procesador S390" #: modules/devices/s390/processor.c:133 msgid "ID String" msgstr "Cadena de identificación" #: modules/devices/sh/processor.c:55 msgid "SuperH Processor" msgstr "Procesador SuperH" #: modules/devices/sh/processor.c:88 msgid "Bus Frequency" msgstr "Frecuencia del Bus" #: modules/devices/sh/processor.c:89 msgid "Module Frequency" msgstr "Frecuencia modular" #: modules/devices/spd-decode.c:128 modules/devices/spd-decode.c:144 msgid "Unspecified" msgstr "" #: modules/devices/spd-decode.c:130 modules/devices/spd-decode.c:146 msgid "Invalid" msgstr "Inválido" #: modules/devices/spd-decode.c:358 msgid "Row address bits" msgstr "Bits de dirección de fila" #: modules/devices/spd-decode.c:359 msgid "Column address bits" msgstr "Bits de dirección de columna" #: modules/devices/spd-decode.c:360 msgid "Number of rows" msgstr "Número de filas" #: modules/devices/spd-decode.c:361 msgid "Data width" msgstr "Ancho de datos" #: modules/devices/spd-decode.c:362 msgid "Interface signal levels" msgstr "Niveles de señal de la interfaz" #: modules/devices/spd-decode.c:363 msgid "Configuration type" msgstr "Tipo de configuración" #: modules/devices/spd-decode.c:364 msgid "Refresh" msgstr "Actualizar" #: modules/devices/spd-decode.c:365 modules/devices/spd-decode.c:442 #: modules/devices/spd-decode.c:721 msgid "Timings" msgstr "Cronometraje" #: modules/devices/spd-decode.c:589 modules/devices/spd-decode.c:858 #: modules/devices/spd-decode.c:899 modules/devices/spd-decode.c:1111 #: modules/devices/x86/processor.c:716 msgid "Voltage" msgstr "Voltaje" #: modules/devices/spd-decode.c:590 modules/devices/spd-decode.c:901 #: modules/devices/spd-decode.c:1113 msgid "JEDEC Timings" msgstr "" #: modules/devices/spd-decode.c:697 msgid "Ranks" msgstr "Rangos" #: modules/devices/spd-decode.c:698 msgid "IO Pins per Chip" msgstr "Pines de E/S por chip" #: modules/devices/spd-decode.c:699 msgid "Die count" msgstr "" #: modules/devices/spd-decode.c:700 msgid "Thermal Sensor" msgstr "Sensor térmico" #: modules/devices/spd-decode.c:700 msgid "Present" msgstr "Presente" #: modules/devices/spd-decode.c:700 msgid "Not present" msgstr "No presente" #: modules/devices/spd-decode.c:701 msgid "Supported Voltages" msgstr "Voltajes admitidos" #: modules/devices/spd-decode.c:705 msgid "Supported CAS Latencies" msgstr "Latencias CAS admitidas" #: modules/devices/spd-decode.c:856 msgid "XMP Profile" msgstr "Perfil XMP" #: modules/devices/spd-decode.c:857 modules/devices/usb.c:176 #: modules/network/net.c:438 msgid "Speed" msgstr "Velocidad" #: modules/devices/spd-decode.c:859 msgid "XMP Timings" msgstr "" #: modules/devices/spd-decode.c:900 msgid "XMP" msgstr "" #: modules/devices/spd-decode.c:1372 msgid "Serial Presence Detect (SPD)" msgstr "Detección de presencia física (SPD)" #: modules/devices/spd-decode.c:1375 msgid "SPD Revision" msgstr "Revisión de SPD" #: modules/devices/spd-decode.c:1378 msgid "Module Vendor" msgstr "Fabricante del módulo" #: modules/devices/spd-decode.c:1380 msgid "DRAM Vendor" msgstr "Fabricante de la DRAM" #: modules/devices/spd-decode.c:1385 msgid "Manufacturing Date (Year / Week)" msgstr "" #: modules/devices/storage.c:46 modules/devices/storage.c:55 msgid "NVMe Controller" msgstr "" #: modules/devices/storage.c:138 msgid "Read Error Rate" msgstr "Tasa de errores de lectura" #: modules/devices/storage.c:139 msgid "Throughput Performance" msgstr "" #: modules/devices/storage.c:140 msgid "Spin-Up Time" msgstr "" #: modules/devices/storage.c:141 msgid "Start/Stop Count" msgstr "" #: modules/devices/storage.c:142 msgid "Reallocated Sector Count" msgstr "Número de sectores reasignados" #: modules/devices/storage.c:143 msgid "Read Channel Margin" msgstr "" #: modules/devices/storage.c:144 msgid "Seek Error Rate" msgstr "" #: modules/devices/storage.c:145 msgid "Seek Timer Performance" msgstr "" #: modules/devices/storage.c:146 modules/devices/storage.c:185 msgid "Power-On Hours" msgstr "Horas encendido" #: modules/devices/storage.c:147 msgid "Spin Retry Count" msgstr "" #: modules/devices/storage.c:148 msgid "Calibration Retry Count" msgstr "" #: modules/devices/storage.c:149 msgid "Power Cycle Count" msgstr "" #: modules/devices/storage.c:150 modules/devices/storage.c:167 msgid "Soft Read Error Rate" msgstr "" #: modules/devices/storage.c:151 msgid "Runtime Bad Block" msgstr "" #: modules/devices/storage.c:152 msgid "End-to-End error" msgstr "" #: modules/devices/storage.c:153 msgid "Reported Uncorrectable Errors" msgstr "Errores incorregibles reportados" #: modules/devices/storage.c:154 msgid "Command Timeout" msgstr "Tiempo de espera del comando" #: modules/devices/storage.c:155 msgid "High Fly Writes" msgstr "" #: modules/devices/storage.c:156 msgid "Airflow Temperature" msgstr "Temperatura del aire" #: modules/devices/storage.c:157 msgid "G-sense Error Rate" msgstr "" #: modules/devices/storage.c:158 msgid "Power-off Retract Count" msgstr "" #: modules/devices/storage.c:159 msgid "Load Cycle Count" msgstr "Contador de ciclos de carga" #: modules/devices/storage.c:160 modules/devices/storage.c:183 msgid "Temperature" msgstr "Temperatura" #: modules/devices/storage.c:161 msgid "Hardware ECC Recovered" msgstr "" #: modules/devices/storage.c:162 msgid "Reallocation Event Count" msgstr "Número de eventos de reasignación" #: modules/devices/storage.c:163 msgid "Current Pending Sector Count" msgstr "Número actual de sectores pendientes" #: modules/devices/storage.c:164 msgid "Uncorrectable Sector Count" msgstr "Número de sectores incorregibles" #: modules/devices/storage.c:165 msgid "UltraDMA CRC Error Count" msgstr "" #: modules/devices/storage.c:166 msgid "Multi-Zone Error Rate" msgstr "" #: modules/devices/storage.c:168 msgid "Run Out Cancel" msgstr "" #: modules/devices/storage.c:169 msgid "Flying Height" msgstr "" #: modules/devices/storage.c:170 msgid "Spin High Current" msgstr "" #: modules/devices/storage.c:171 msgid "Spin Buzz" msgstr "" #: modules/devices/storage.c:172 msgid "Offline Seek Performance" msgstr "" #: modules/devices/storage.c:173 msgid "Disk Shift" msgstr "" #: modules/devices/storage.c:174 msgid "G-Sense Error Rate" msgstr "" #: modules/devices/storage.c:175 msgid "Loaded Hours" msgstr "" #: modules/devices/storage.c:176 msgid "Load/Unload Retry Count" msgstr "Número de reintentos de carga y descarga" #: modules/devices/storage.c:177 msgid "Load Friction" msgstr "" #: modules/devices/storage.c:178 msgid "Load/Unload Cycle Count" msgstr "Número de ciclos de carga y descarga" #: modules/devices/storage.c:179 msgid "Load-in time" msgstr "" #: modules/devices/storage.c:180 msgid "Torque Amplification Count" msgstr "" #: modules/devices/storage.c:181 msgid "Power-Off Retract Count" msgstr "" #: modules/devices/storage.c:182 msgid "GMR Head Amplitude" msgstr "" #: modules/devices/storage.c:184 msgid "Endurance Remaining" msgstr "" #: modules/devices/storage.c:186 msgid "Good Block Rate" msgstr "" #: modules/devices/storage.c:187 msgid "Head Flying Hours" msgstr "" #: modules/devices/storage.c:188 msgid "Read Error Retry Rate" msgstr "" #: modules/devices/storage.c:189 msgid "Total LBAs Written" msgstr "Total de LBAs escritas" #: modules/devices/storage.c:190 msgid "Total LBAs Read" msgstr "Total de LBAs leídas" #: modules/devices/storage.c:191 msgid "Wear leveling Count" msgstr "" #: modules/devices/storage.c:192 msgid "Total Used Reserved Block Count" msgstr "" #: modules/devices/storage.c:193 msgid "Total Program Fail Count" msgstr "" #: modules/devices/storage.c:194 msgid "Total Erase Fail Count" msgstr "" #: modules/devices/storage.c:195 msgid "Available Reserved Space" msgstr "" #: modules/devices/storage.c:196 msgid "Program Fail Count" msgstr "" #: modules/devices/storage.c:197 msgid "Erase Fail Count" msgstr "" #: modules/devices/storage.c:198 msgid "TA Counter Increased" msgstr "" #: modules/devices/storage.c:199 msgid "Total Unused Reserved Block Count" msgstr "" #: modules/devices/storage.c:204 msgid "" "\n" "[UDisks2]\n" msgstr "" #: modules/devices/storage.c:257 msgid "Removable" msgstr "Extraíble" #: modules/devices/storage.c:257 msgid "Fixed" msgstr "Fijo" #: modules/devices/storage.c:260 msgid "Ejectable" msgstr "Extraíble" #: modules/devices/storage.c:263 msgid "Self-monitoring (S.M.A.R.T.)" msgstr "" #: modules/devices/storage.c:266 modules/devices/x86/processor.c:664 msgid "Power Management" msgstr "Gestión de energía" #: modules/devices/storage.c:269 msgid "Advanced Power Management" msgstr "Gestión de energía avanzada" #: modules/devices/storage.c:272 msgid "Automatic Acoustic Management" msgstr "Gestión acústica automática" #: modules/devices/storage.c:275 #, c-format msgid "" "[Drive Information]\n" "Model=%s\n" msgstr "" "[Información de la unidad]\n" "Modelo=%s\n" #: modules/devices/storage.c:285 #, c-format msgid "" "Revision=%s\n" "Block Device=%s\n" "Serial=%s\n" "Size=%s\n" "Features=%s\n" msgstr "" "Revisión=%s\n" "Dispositivo de bloques=%s\n" "Número de serie=%s\n" "Tamaño=%s\n" "Características=%s\n" #: modules/devices/storage.c:300 #, c-format msgid "Rotation Rate=%d RPM\n" msgstr "Velocidad de rotación=%d RPM\n" #: modules/devices/storage.c:303 #, c-format msgid "" "Media=%s\n" "Media compatibility=%s\n" msgstr "" #: modules/devices/storage.c:310 #, c-format msgid "Connection bus=%s\n" msgstr "Bus de conexión=%s\n" #: modules/devices/storage.c:322 msgid "WWN" msgstr "" #: modules/devices/storage.c:323 msgid "EUI " msgstr "" #: modules/devices/storage.c:328 msgid "WWN / EUI" msgstr "" #: modules/devices/storage.c:332 #, c-format msgid "$^$%s=[%s] %s\n" msgstr "" #: modules/devices/storage.c:334 msgid "IEEE OUI" msgstr "" #: modules/devices/storage.c:346 msgid "" "[Self-monitoring (S.M.A.R.T.)]\n" "Status=%s\n" "Bad Sectors=%" msgstr "" #: modules/devices/storage.c:352 msgid "Failing" msgstr "Fallando" #: modules/devices/storage.c:352 msgid "OK" msgstr "Correcto" #: modules/devices/storage.c:358 msgid "" "[S.M.A.R.T. Attributes]\n" "Attribute=Value / Normalized / Worst / Threshold\n" msgstr "" #: modules/devices/storage.c:381 msgid "%" msgid_plural "%" msgstr[0] "" msgstr[1] "" #: modules/devices/storage.c:419 #, c-format msgid "(%d) %s=%s\n" msgstr "" #: modules/devices/storage.c:428 #, c-format msgid "" "[Partition table]\n" "Type=%s\n" msgstr "" "[Tabla de particiones]\n" "Tipo=%s\n" #: modules/devices/storage.c:447 #, c-format msgid "Partition %s=%s\n" msgstr "Partición %s=%s\n" #: modules/devices/storage.c:496 msgid "" "\n" "[SCSI Disks]\n" msgstr "" "\n" "[Discos SCSI]\n" #: modules/devices/storage.c:567 modules/devices/storage.c:773 #, c-format msgid "" "[Device Information]\n" "Model=%s\n" msgstr "" "[Información de. dispositivo]\n" "Modelo=%s\n" #: modules/devices/storage.c:574 #, c-format msgid "" "Type=%s\n" "Revision=%s\n" "[SCSI Controller]\n" "Controller=scsi%d\n" "Channel=%d\n" "ID=%d\n" "LUN=%d\n" msgstr "" "Tipo=%s\n" "Revisión=%s\n" "[Controladora SCSI]\n" "Controladora=scsi%d\n" "Canal=%d\n" "ID=%d\n" "LUN=%d\n" #: modules/devices/storage.c:621 msgid "" "\n" "[IDE Disks]\n" msgstr "" "\n" "[Discos IDE]\n" #: modules/devices/storage.c:707 #, c-format msgid "Driver=%s\n" msgstr "Controlador=%s\n" #: modules/devices/storage.c:779 #, c-format msgid "" "Device Name=hd%c\n" "Media=%s\n" "Cache=%dkb\n" msgstr "" "Nombre del dispositivo=hd%c\n" "Medio=%s\n" "Caché=%dkb\n" #: modules/devices/storage.c:789 #, c-format msgid "" "[Geometry]\n" "Physical=%s\n" "Logical=%s\n" msgstr "" "[Geometría]\n" "Física=%s\n" "Lógica=%s\n" #: modules/devices/storage.c:799 #, c-format msgid "" "[Capabilities]\n" "%s" msgstr "" "[Capacidades]\n" "%s" #: modules/devices/storage.c:806 #, c-format msgid "" "[Speeds]\n" "%s" msgstr "" "[Velocidades]\n" "%s" #: modules/devices/usb.c:137 modules/devices/usb.c:178 msgid "Sub-class" msgstr "Subclase" #: modules/devices/usb.c:138 modules/devices/usb.c:179 modules/network.c:348 msgid "Protocol" msgstr "Protocolo" #: modules/devices/usb.c:146 modules/network/net.c:474 msgid "Mb/s" msgstr "Mb/s" #: modules/devices/usb.c:174 msgid "Max Current" msgstr "Corriente máxima" #: modules/devices/usb.c:174 msgid "mA" msgstr "" #: modules/devices/usb.c:175 msgid "USB Version" msgstr "Versión de USB" #: modules/devices/usb.c:180 msgid "Device Version" msgstr "Versión del dispositivo" #: modules/devices/usb.c:222 msgid "No USB devices found." msgstr "No se han encontrado dispositivos USB." #: modules/devices/x86/processor.c:648 msgid "Model Name" msgstr "Nombre del modelo" #: modules/devices/x86/processor.c:649 msgid "Family, model, stepping" msgstr "Familia, modelo, escalado" #: modules/devices/x86/processor.c:655 msgid "Microcode Version" msgstr "Versión del microcódigo" #: modules/devices/x86/processor.c:656 msgid "Configuration" msgstr "Configuración" #: modules/devices/x86/processor.c:657 msgid "Cache Size" msgstr "Tamaño de la caché" #: modules/devices/x86/processor.c:657 msgid "kb" msgstr "kb" #: modules/devices/x86/processor.c:665 msgid "Bug Workarounds" msgstr "" #: modules/devices/x86/processor.c:692 msgid "Socket Information" msgstr "Información del zócalo" #: modules/devices/x86/processor.c:695 msgid "(Not available; Perhaps try running hardinfo2 as root.)" msgstr "" #: modules/devices/x86/processor.c:713 msgid "CPU Socket" msgstr "Zócalo de la CPU" #: modules/devices/x86/processor.c:717 msgid "External Clock" msgstr "Reloj externo" #: modules/devices/x86/processor.c:718 msgid "Max Frequency" msgstr "Frecuencia máxima" #: modules/devices/x86/processor.c:749 msgid "Package Information" msgstr "Información del paquete" #: modules/devices/x86/processor.c:811 msgid "Socket:Core" msgstr "Zócalo:Núcleo" #. !/flag:fpu #: modules/devices/x86/x86_data.c:48 msgctxt "x86-flag" msgid "Onboard FPU (floating point support)" msgstr "FPU embebido (soporte de punto flotante)" #. !/flag:vme #: modules/devices/x86/x86_data.c:49 msgctxt "x86-flag" msgid "Virtual 8086 mode enhancements" msgstr "Virtual 8086 modo ampliado" #. !/flag:de #: modules/devices/x86/x86_data.c:50 msgctxt "x86-flag" msgid "Debugging Extensions (CR4.DE)" msgstr "Extensiones de depuración (CR4.DE)" #. !/flag:pse #: modules/devices/x86/x86_data.c:51 msgctxt "x86-flag" msgid "Page Size Extensions (4MB memory pages)" msgstr "Extensiones de tamaño de página (páginas de memoria de 4MB)" #. !/flag:tsc #: modules/devices/x86/x86_data.c:52 msgctxt "x86-flag" msgid "Time Stamp Counter (RDTSC)" msgstr "" #. !/flag:msr #: modules/devices/x86/x86_data.c:53 msgctxt "x86-flag" msgid "Model-Specific Registers (RDMSR, WRMSR)" msgstr "Registros específicos del modelo (RDMSR, WRMSR)" #. !/flag:pae #: modules/devices/x86/x86_data.c:54 msgctxt "x86-flag" msgid "Physical Address Extensions (support for more than 4GB of RAM)" msgstr "Extension de direcciones físicas (soporte para más de 4GB de RAM)" #. !/flag:mce #: modules/devices/x86/x86_data.c:55 msgctxt "x86-flag" msgid "Machine Check Exception" msgstr "" #. !/flag:cx8 #: modules/devices/x86/x86_data.c:56 msgctxt "x86-flag" msgid "CMPXCHG8 instruction (64-bit compare-and-swap)" msgstr "Instrucciones CMPXCHG8 (64-bit compare-and-swap)" #. !/flag:apic #: modules/devices/x86/x86_data.c:57 msgctxt "x86-flag" msgid "Onboard APIC" msgstr "APIC embebida" #. !/flag:sep #: modules/devices/x86/x86_data.c:58 msgctxt "x86-flag" msgid "SYSENTER/SYSEXIT" msgstr "" #. !/flag:mtrr #: modules/devices/x86/x86_data.c:59 msgctxt "x86-flag" msgid "Memory Type Range Registers" msgstr "Registros de rango de tipo de Memoria" #. !/flag:pge #: modules/devices/x86/x86_data.c:60 msgctxt "x86-flag" msgid "Page Global Enable (global bit in PDEs and PTEs)" msgstr "Habilitador de pagina global (global bit in PDEs and PTEs)" #. !/flag:mca #: modules/devices/x86/x86_data.c:61 msgctxt "x86-flag" msgid "Machine Check Architecture" msgstr "Revisor de arquitectura de maquina" #. !/flag:cmov #: modules/devices/x86/x86_data.c:62 msgctxt "x86-flag" msgid "CMOV instructions (conditional move) (also FCMOV)" msgstr "Instrucciones CMOV (movimiento condicional) (también FCMOV)" #. !/flag:pat #: modules/devices/x86/x86_data.c:63 msgctxt "x86-flag" msgid "Page Attribute Table" msgstr "Tabla de atributos de página" #. !/flag:pse36 #: modules/devices/x86/x86_data.c:64 msgctxt "x86-flag" msgid "36-bit PSEs (huge pages)" msgstr "" #. !/flag:pn #: modules/devices/x86/x86_data.c:65 msgctxt "x86-flag" msgid "Processor serial number" msgstr "Número de serie del procesador" #. !/flag:clflush #: modules/devices/x86/x86_data.c:66 msgctxt "x86-flag" msgid "Cache Line Flush instruction" msgstr "" #. !/flag:dts #: modules/devices/x86/x86_data.c:67 #, fuzzy msgctxt "x86-flag" msgid "" "Debug Store (buffer for debugging and profiling instructions), or " "alternately: digital thermal sensor" msgstr "" "Guardado de depurado (buffer para depurado y pruebas de instrucciones), o " "alternativamente: sensor de temperatura digital" #. !/flag:acpi #: modules/devices/x86/x86_data.c:68 msgctxt "x86-flag" msgid "ACPI via MSR (temperature monitoring and clock speed modulation)" msgstr "" "ACPI mediante MSR (monitor de temperatura y modulación de velocidad de reloj)" #. !/flag:mmx #: modules/devices/x86/x86_data.c:69 msgctxt "x86-flag" msgid "Multimedia Extensions" msgstr "Extensiones multimedia" #. !/flag:fxsr #: modules/devices/x86/x86_data.c:70 msgctxt "x86-flag" msgid "FXSAVE/FXRSTOR, CR4.OSFXSR" msgstr "FXSAVE/FXRSTOR, CR4.OSFXSR" #. !/flag:sse #: modules/devices/x86/x86_data.c:71 msgctxt "x86-flag" msgid "Intel SSE vector instructions" msgstr "Instrucciones de vectores Intel SSE" #. !/flag:sse2 #: modules/devices/x86/x86_data.c:72 msgctxt "x86-flag" msgid "SSE2" msgstr "SSE2" #. !/flag:ss #: modules/devices/x86/x86_data.c:73 msgctxt "x86-flag" msgid "CPU self snoop" msgstr "" #. !/flag:ht #: modules/devices/x86/x86_data.c:74 msgctxt "x86-flag" msgid "Hyper-Threading" msgstr "" #. !/flag:tm #: modules/devices/x86/x86_data.c:75 msgctxt "x86-flag" msgid "Automatic clock control (Thermal Monitor)" msgstr "Control automático del reloj (Monitor de temperatura)" #. !/flag:ia64 #: modules/devices/x86/x86_data.c:76 msgctxt "x86-flag" msgid "" "Intel Itanium Architecture 64-bit (not to be confused with Intel's 64-bit " "x86 architecture with flag x86-64 or \"AMD64\" bit indicated by flag lm)" msgstr "" "Arquitectura Intel Itanium 64-bit (no confundir con la arquitectura Intel de " "64-bit x86 con indicador x86-64 o el bit «AMD64» denotado por el indicador " "lm)" #. !/flag:pbe #: modules/devices/x86/x86_data.c:77 msgctxt "x86-flag" msgid "Pending Break Enable (PBE# pin) wakeup support" msgstr "" #. !/flag:syscall #: modules/devices/x86/x86_data.c:80 msgctxt "x86-flag" msgid "SYSCALL (Fast System Call) and SYSRET (Return From Fast System Call)" msgstr "" #. !/flag:mp #: modules/devices/x86/x86_data.c:81 msgctxt "x86-flag" msgid "Multiprocessing Capable." msgstr "Capacidad de multiproceso." #. !/flag:nx #: modules/devices/x86/x86_data.c:82 msgctxt "x86-flag" msgid "Execute Disable" msgstr "" #. !/flag:mmxext #: modules/devices/x86/x86_data.c:83 msgctxt "x86-flag" msgid "AMD MMX extensions" msgstr "Extensiones MMX de AMD" #. !/flag:fxsr_opt #: modules/devices/x86/x86_data.c:84 msgctxt "x86-flag" msgid "FXSAVE/FXRSTOR optimizations" msgstr "Optimizaciones FXSAVE/FXRSTOR" #. !/flag:pdpe1gb #: modules/devices/x86/x86_data.c:85 #, fuzzy msgctxt "x86-flag" msgid "One GB pages (allows hugepagesz=1G)" msgstr "Paginas One GB (permite hugepagesz=1G)" #. !/flag:rdtscp #: modules/devices/x86/x86_data.c:86 msgctxt "x86-flag" msgid "Read Time-Stamp Counter and Processor ID" msgstr "" #. !/flag:lm #: modules/devices/x86/x86_data.c:87 msgctxt "x86-flag" msgid "Long Mode (x86-64: amd64, also known as Intel 64, i.e. 64-bit capable)" msgstr "" "Modo largo (x86-64: amd64, también conocido como Intel 64, es decir, " "compatible con 64 bits)" #. !/flag:3dnow #: modules/devices/x86/x86_data.c:88 msgctxt "x86-flag" msgid "3DNow! (AMD vector instructions, competing with Intel's SSE1)" msgstr "" "3DNow! (Instrucciones de vectores de AMD, competencia a las SSE1 de Intel)" #. !/flag:3dnowext #: modules/devices/x86/x86_data.c:89 msgctxt "x86-flag" msgid "AMD 3DNow! extensions" msgstr "Extensiones 3DNow! de AMD" #. !/flag:recovery #: modules/devices/x86/x86_data.c:91 msgctxt "x86-flag" msgid "CPU in recovery mode" msgstr "CPU en modo recuperación" #. !/flag:longrun #: modules/devices/x86/x86_data.c:92 msgctxt "x86-flag" msgid "Longrun power control" msgstr "Control de energía de Longrun" #. !/flag:lrti #: modules/devices/x86/x86_data.c:93 msgctxt "x86-flag" msgid "LongRun table interface" msgstr "Interfaz de tabla de LongRun" #. !/flag:cxmmx #: modules/devices/x86/x86_data.c:95 msgctxt "x86-flag" msgid "Cyrix MMX extensions" msgstr "" #. !/flag:k6_mtrr #: modules/devices/x86/x86_data.c:96 msgctxt "x86-flag" msgid "AMD K6 nonstandard MTRRs" msgstr "" #. !/flag:cyrix_arr #: modules/devices/x86/x86_data.c:97 msgctxt "x86-flag" msgid "Cyrix ARRs (= MTRRs)" msgstr "" #. !/flag:centaur_mcr #: modules/devices/x86/x86_data.c:98 msgctxt "x86-flag" msgid "Centaur MCRs (= MTRRs)" msgstr "" #. !/flag:constant_tsc #: modules/devices/x86/x86_data.c:99 msgctxt "x86-flag" msgid "TSC ticks at a constant rate" msgstr "El TSC hace tictac a un ritmo constante" #. !/flag:up #: modules/devices/x86/x86_data.c:100 msgctxt "x86-flag" msgid "SMP kernel running on UP" msgstr "" #. !/flag:art #: modules/devices/x86/x86_data.c:101 msgctxt "x86-flag" msgid "Always-Running Timer" msgstr "" #. !/flag:arch_perfmon #: modules/devices/x86/x86_data.c:102 #, fuzzy msgctxt "x86-flag" msgid "Intel Architectural PerfMon" msgstr "Arquitectura Intel PerfMon" #. !/flag:pebs #: modules/devices/x86/x86_data.c:103 msgctxt "x86-flag" msgid "Precise-Event Based Sampling" msgstr "" #. !/flag:bts #: modules/devices/x86/x86_data.c:104 msgctxt "x86-flag" msgid "Branch Trace Store" msgstr "" #. !/flag:rep_good #: modules/devices/x86/x86_data.c:105 msgctxt "x86-flag" msgid "rep microcode works well" msgstr "" #. !/flag:acc_power #: modules/devices/x86/x86_data.c:106 msgctxt "x86-flag" msgid "AMD accumulated power mechanism" msgstr "Mecanismo de energía acumulada de AMD" #. !/flag:nopl #: modules/devices/x86/x86_data.c:107 msgctxt "x86-flag" msgid "The NOPL (0F 1F) instructions" msgstr "Las instrucciones NOPL (0F 1F)" #. !/flag:xtopology #: modules/devices/x86/x86_data.c:108 msgctxt "x86-flag" msgid "cpu topology enum extensions" msgstr "extensiones de enumeración de topología de CPU" #. !/flag:tsc_reliable #: modules/devices/x86/x86_data.c:109 msgctxt "x86-flag" msgid "TSC is known to be reliable" msgstr "Se sabe que el TSC es fiable" #. !/flag:nonstop_tsc #: modules/devices/x86/x86_data.c:110 msgctxt "x86-flag" msgid "TSC does not stop in C states" msgstr "El TSC no se detiene en los estados C" #. !/flag:extd_apicid #: modules/devices/x86/x86_data.c:111 msgctxt "x86-flag" msgid "has extended APICID (8 bits)" msgstr "tiene extensiones APICID (8 bits)" #. !/flag:amd_dcm #: modules/devices/x86/x86_data.c:112 msgctxt "x86-flag" msgid "multi-node processor" msgstr "procesador mutinodo" #. !/flag:aperfmperf #: modules/devices/x86/x86_data.c:113 msgctxt "x86-flag" msgid "APERFMPERF" msgstr "APERFMPERF" #. !/flag:eagerfpu #: modules/devices/x86/x86_data.c:114 msgctxt "x86-flag" msgid "Non lazy FPU restore" msgstr "" #. !/flag:nonstop_tsc_s3 #: modules/devices/x86/x86_data.c:115 msgctxt "x86-flag" msgid "TSC doesn't stop in S3 state" msgstr "El TSC no se detiene en el estado S3" #. !/flag:mce_recovery #: modules/devices/x86/x86_data.c:116 msgctxt "x86-flag" msgid "CPU has recoverable machine checks" msgstr "La CPU tiene comprobaciones de máquina recuperables" #. !/flag:pni #: modules/devices/x86/x86_data.c:119 msgctxt "x86-flag" msgid "SSE-3 (\"Prescott New Instructions\")" msgstr "SSE-3 («Nuevas instrucciones Prescott»)" #. !/flag:pclmulqdq #: modules/devices/x86/x86_data.c:120 msgctxt "x86-flag" msgid "" "Perform a Carry-Less Multiplication of Quadword instruction - accelerator " "for GCM)" msgstr "" #. !/flag:dtes64 #: modules/devices/x86/x86_data.c:121 msgctxt "x86-flag" msgid "64-bit Debug Store" msgstr "Almacenamiento de depuración de 64 bits" #. !/flag:monitor #: modules/devices/x86/x86_data.c:122 msgctxt "x86-flag" msgid "Monitor/Mwait support (Intel SSE3 supplements)" msgstr "" #. !/flag:ds_cpl #: modules/devices/x86/x86_data.c:123 msgctxt "x86-flag" msgid "CPL Qual. Debug Store" msgstr "" #. !/flag:vmx #: modules/devices/x86/x86_data.c:124 msgctxt "x86-flag" msgid "Hardware virtualization, Intel VMX" msgstr "Virtualización de hardware, Intel VMX" #. !/flag:smx #: modules/devices/x86/x86_data.c:125 msgctxt "x86-flag" msgid "Safer mode TXT (TPM support)" msgstr "" #. !/flag:est #: modules/devices/x86/x86_data.c:126 msgctxt "x86-flag" msgid "Enhanced SpeedStep" msgstr "SpeedStep ampliado" #. !/flag:tm2 #: modules/devices/x86/x86_data.c:127 msgctxt "x86-flag" msgid "Thermal Monitor 2" msgstr "Monitor térmico 2" #. !/flag:ssse3 #: modules/devices/x86/x86_data.c:128 msgctxt "x86-flag" msgid "Supplemental SSE-3" msgstr "Suplemento SSE-3" #. !/flag:cid #: modules/devices/x86/x86_data.c:129 msgctxt "x86-flag" msgid "Context ID" msgstr "Identificador de contexto" #. !/flag:sdbg #: modules/devices/x86/x86_data.c:130 msgctxt "x86-flag" msgid "silicon debug" msgstr "" #. !/flag:fma #: modules/devices/x86/x86_data.c:131 msgctxt "x86-flag" msgid "Fused multiply-add" msgstr "" #. !/flag:cx16 #: modules/devices/x86/x86_data.c:132 msgctxt "x86-flag" msgid "CMPXCHG16B" msgstr "CMPXCHG16B" #. !/flag:xtpr #: modules/devices/x86/x86_data.c:133 msgctxt "x86-flag" msgid "Send Task Priority Messages" msgstr "Enviar mensajes de prioridad de la tarea" #. !/flag:pdcm #: modules/devices/x86/x86_data.c:134 msgctxt "x86-flag" msgid "Performance Capabilities" msgstr "Capacidades de rendimiento" #. !/flag:pcid #: modules/devices/x86/x86_data.c:135 msgctxt "x86-flag" msgid "Process Context Identifiers" msgstr "Identificadores del contexto del proceso" #. !/flag:dca #: modules/devices/x86/x86_data.c:136 msgctxt "x86-flag" msgid "Direct Cache Access" msgstr "Acceso directo a la caché" #. !/flag:sse4_1 #: modules/devices/x86/x86_data.c:137 msgctxt "x86-flag" msgid "SSE-4.1" msgstr "SSE-4.1" #. !/flag:sse4_2 #: modules/devices/x86/x86_data.c:138 msgctxt "x86-flag" msgid "SSE-4.2" msgstr "SSE-4.2" #. !/flag:x2apic #: modules/devices/x86/x86_data.c:139 msgctxt "x86-flag" msgid "x2APIC" msgstr "x2APIC" #. !/flag:movbe #: modules/devices/x86/x86_data.c:140 msgctxt "x86-flag" msgid "Move Data After Swapping Bytes instruction" msgstr "" #. !/flag:popcnt #: modules/devices/x86/x86_data.c:141 msgctxt "x86-flag" msgid "" "Return the Count of Number of Bits Set to 1 instruction (Hamming weight, i." "e. bit count)" msgstr "" "Instrucción que devuelve el recuento del número de bits establecidos a 1 " "(Hamming weight, es decir, recuento de bits)" #: modules/devices/x86/x86_data.c:142 msgctxt "x86-flag" msgid "Tsc deadline timer" msgstr "" #. !/flag:aes/aes-ni #: modules/devices/x86/x86_data.c:143 msgctxt "x86-flag" msgid "Advanced Encryption Standard (New Instructions)" msgstr "Estándar de cifrado avanzado (nuevas instrucciones)" #. !/flag:xsave #: modules/devices/x86/x86_data.c:144 msgctxt "x86-flag" msgid "Save Processor Extended States: also provides XGETBY,XRSTOR,XSETBY" msgstr "" "Guardar estados extendidos del procesador: también proporciona XGETBY, " "XRSTOR, XSETBY" #. !/flag:avx #: modules/devices/x86/x86_data.c:145 msgctxt "x86-flag" msgid "Advanced Vector Extensions" msgstr "Extensiones vectoriales avanzadas" #. !/flag:f16c #: modules/devices/x86/x86_data.c:146 msgctxt "x86-flag" msgid "16-bit fp conversions (CVT16)" msgstr "conversiones de punto flotante de 16 bits (CVT16)" #. !/flag:rdrand #: modules/devices/x86/x86_data.c:147 #, fuzzy msgctxt "x86-flag" msgid "Read Random Number from hardware random number generator instruction" msgstr "" "Lector de Numeros Aleatorios desde generador de instruccion de aleatorios de " "Hardware" #. !/flag:hypervisor #: modules/devices/x86/x86_data.c:148 msgctxt "x86-flag" msgid "Running on a hypervisor" msgstr "Ejecutándose en un hipervisor" #. !/flag:rng #: modules/devices/x86/x86_data.c:150 msgctxt "x86-flag" msgid "Random Number Generator present (xstore)" msgstr "Generador de números aleatorios presente (xstore)" #. !/flag:rng_en #: modules/devices/x86/x86_data.c:151 msgctxt "x86-flag" msgid "Random Number Generator enabled" msgstr "Generador de números aleatorios habilitado" #. !/flag:ace #: modules/devices/x86/x86_data.c:152 msgctxt "x86-flag" msgid "on-CPU crypto (xcrypt)" msgstr "Cifrado en CPU (xcrypt)" #. !/flag:ace_en #: modules/devices/x86/x86_data.c:153 msgctxt "x86-flag" msgid "on-CPU crypto enabled" msgstr "Cifrado en CPU habilitado" #. !/flag:ace2 #: modules/devices/x86/x86_data.c:154 msgctxt "x86-flag" msgid "Advanced Cryptography Engine v2" msgstr "Motor de criptografía avanzada v2" #. !/flag:ace2_en #: modules/devices/x86/x86_data.c:155 msgctxt "x86-flag" msgid "ACE v2 enabled" msgstr "ACE v2 habilitado" #. !/flag:phe #: modules/devices/x86/x86_data.c:156 msgctxt "x86-flag" msgid "PadLock Hash Engine" msgstr "" #. !/flag:phe_en #: modules/devices/x86/x86_data.c:157 msgctxt "x86-flag" msgid "PHE enabled" msgstr "PHE habilitado" #. !/flag:pmm #: modules/devices/x86/x86_data.c:158 msgctxt "x86-flag" msgid "PadLock Montgomery Multiplier" msgstr "" #. !/flag:pmm_en #: modules/devices/x86/x86_data.c:159 msgctxt "x86-flag" msgid "PMM enabled" msgstr "PMM habilitado" #. !/flag:lahf_lm #: modules/devices/x86/x86_data.c:161 #, fuzzy msgctxt "x86-flag" msgid "Load AH from Flags (LAHF) and Store AH into Flags (SAHF) in long mode" msgstr "" "Carga AH desde indicadores (LAHF) y almacena AH en indicadores (SAHF) en " "modo largo" #. !/flag:cmp_legacy #: modules/devices/x86/x86_data.c:162 msgctxt "x86-flag" msgid "If yes HyperThreading not valid" msgstr "En caso afirmativo, HyperThreading no es válido" #. !/flag:svm #: modules/devices/x86/x86_data.c:163 msgctxt "x86-flag" msgid "\"Secure virtual machine\": AMD-V" msgstr "«Maquina virtual segura»: AMD-V" #. !/flag:extapic #: modules/devices/x86/x86_data.c:164 msgctxt "x86-flag" msgid "Extended APIC space" msgstr "" #. !/flag:cr8_legacy #: modules/devices/x86/x86_data.c:165 msgctxt "x86-flag" msgid "CR8 in 32-bit mode" msgstr "CR8 en modo de 32 bits" #. !/flag:abm #: modules/devices/x86/x86_data.c:166 msgctxt "x86-flag" msgid "Advanced Bit Manipulation" msgstr "Manipulación avanzada de bits" #. !/flag:sse4a #: modules/devices/x86/x86_data.c:167 msgctxt "x86-flag" msgid "SSE-4A" msgstr "SSE-4A" #. !/flag:misalignsse #: modules/devices/x86/x86_data.c:168 msgctxt "x86-flag" msgid "" "indicates if a general-protection exception (#GP) is generated when some " "legacy SSE instructions operate on unaligned data. Also depends on CR0 and " "Alignment Checking bit" msgstr "" "Indica si se genera una excepción de protección general (#GP) cuando algunas " "instrucciones heredadas de SSE funcionan con datos no alineados. También " "depende de CR0 y del bit de comprobación de alineación" #. !/flag:3dnowprefetch #: modules/devices/x86/x86_data.c:169 msgctxt "x86-flag" msgid "3DNow prefetch instructions" msgstr "Instrucciones de captación previa de 3DNow" #. !/flag:osvw #: modules/devices/x86/x86_data.c:170 msgctxt "x86-flag" msgid "" "indicates OS Visible Workaround, which allows the OS to work around " "processor errata." msgstr "" #. !/flag:ibs #: modules/devices/x86/x86_data.c:171 msgctxt "x86-flag" msgid "Instruction Based Sampling" msgstr "" #. !/flag:xop #: modules/devices/x86/x86_data.c:172 msgctxt "x86-flag" msgid "extended AVX instructions" msgstr "instrucciones AVX extendidas" #. !/flag:skinit #: modules/devices/x86/x86_data.c:173 msgctxt "x86-flag" msgid "SKINIT/STGI instructions" msgstr "Instrucciones SKINIT/STGI" #. !/flag:wdt #: modules/devices/x86/x86_data.c:174 msgctxt "x86-flag" msgid "Watchdog timer" msgstr "Temporizador de vigilancia" #. !/flag:lwp #: modules/devices/x86/x86_data.c:175 msgctxt "x86-flag" msgid "Light Weight Profiling" msgstr "" #. !/flag:fma4 #: modules/devices/x86/x86_data.c:176 msgctxt "x86-flag" msgid "4 operands MAC instructions" msgstr "" #. !/flag:tce #: modules/devices/x86/x86_data.c:177 msgctxt "x86-flag" msgid "translation cache extension" msgstr "" #. !/flag:nodeid_msr #: modules/devices/x86/x86_data.c:178 msgctxt "x86-flag" msgid "NodeId MSR" msgstr "" #. !/flag:tbm #: modules/devices/x86/x86_data.c:179 msgctxt "x86-flag" msgid "Trailing Bit Manipulation" msgstr "" #. !/flag:topoext #: modules/devices/x86/x86_data.c:180 msgctxt "x86-flag" msgid "Topology Extensions CPUID leafs" msgstr "" #. !/flag:perfctr_core #: modules/devices/x86/x86_data.c:181 msgctxt "x86-flag" msgid "Core Performance Counter Extensions" msgstr "" #. !/flag:perfctr_nb #: modules/devices/x86/x86_data.c:182 msgctxt "x86-flag" msgid "NB Performance Counter Extensions" msgstr "Extensiones del contador de rendimiento NB" #. !/flag:bpext #: modules/devices/x86/x86_data.c:183 msgctxt "x86-flag" msgid "data breakpoint extension" msgstr "" #. !/flag:ptsc #: modules/devices/x86/x86_data.c:184 msgctxt "x86-flag" msgid "performance time-stamp counter" msgstr "" #. !/flag:perfctr_l2 #: modules/devices/x86/x86_data.c:185 msgctxt "x86-flag" msgid "L2 Performance Counter Extensions" msgstr "Extensiones del contador de rendimiento L2" #. !/flag:mwaitx #: modules/devices/x86/x86_data.c:186 msgctxt "x86-flag" msgid "MWAIT extension (MONITORX/MWAITX)" msgstr "" #. !/flag:cpb #: modules/devices/x86/x86_data.c:188 msgctxt "x86-flag" msgid "AMD Core Performance Boost" msgstr "" #. !/flag:epb #: modules/devices/x86/x86_data.c:189 msgctxt "x86-flag" msgid "IA32_ENERGY_PERF_BIAS support" msgstr "" #. !/flag:hw_pstate #: modules/devices/x86/x86_data.c:190 msgctxt "x86-flag" msgid "AMD HW-PState" msgstr "" #. !/flag:proc_feedback #: modules/devices/x86/x86_data.c:191 msgctxt "x86-flag" msgid "AMD ProcFeedbackInterface" msgstr "" #. !/flag:intel_pt #: modules/devices/x86/x86_data.c:192 msgctxt "x86-flag" msgid "Intel Processor Tracing" msgstr "" #. !/flag:tpr_shadow #: modules/devices/x86/x86_data.c:194 msgctxt "x86-flag" msgid "Intel TPR Shadow" msgstr "" #. !/flag:vnmi #: modules/devices/x86/x86_data.c:195 msgctxt "x86-flag" msgid "Intel Virtual NMI" msgstr "" #. !/flag:flexpriority #: modules/devices/x86/x86_data.c:196 msgctxt "x86-flag" msgid "Intel FlexPriority" msgstr "" #. !/flag:ept #: modules/devices/x86/x86_data.c:197 msgctxt "x86-flag" msgid "Intel Extended Page Table" msgstr "" #. !/flag:vpid #: modules/devices/x86/x86_data.c:198 msgctxt "x86-flag" msgid "Intel Virtual Processor ID" msgstr "" #. !/flag:vmmcall #: modules/devices/x86/x86_data.c:199 msgctxt "x86-flag" msgid "prefer VMMCALL to VMCALL" msgstr "" #. !/flag:fsgsbase #: modules/devices/x86/x86_data.c:201 msgctxt "x86-flag" msgid "{RD/WR}{FS/GS}BASE instructions" msgstr "" #. !/flag:tsc_adjust #: modules/devices/x86/x86_data.c:202 msgctxt "x86-flag" msgid "TSC adjustment MSR" msgstr "" #. !/flag:bmi1 #: modules/devices/x86/x86_data.c:203 msgctxt "x86-flag" msgid "1st group bit manipulation extensions" msgstr "" #. !/flag:hle #: modules/devices/x86/x86_data.c:204 msgctxt "x86-flag" msgid "Hardware Lock Elision" msgstr "" #. !/flag:avx2 #: modules/devices/x86/x86_data.c:205 msgctxt "x86-flag" msgid "AVX2 instructions" msgstr "Instrucciones AVX2" #. !/flag:smep #: modules/devices/x86/x86_data.c:206 msgctxt "x86-flag" msgid "Supervisor Mode Execution Protection" msgstr "" #. !/flag:bmi2 #: modules/devices/x86/x86_data.c:207 msgctxt "x86-flag" msgid "2nd group bit manipulation extensions" msgstr "" #. !/flag:erms #: modules/devices/x86/x86_data.c:208 msgctxt "x86-flag" msgid "Enhanced REP MOVSB/STOSB" msgstr "" #. !/flag:invpcid #: modules/devices/x86/x86_data.c:209 msgctxt "x86-flag" msgid "Invalidate Processor Context ID" msgstr "" #. !/flag:rtm #: modules/devices/x86/x86_data.c:210 msgctxt "x86-flag" msgid "Restricted Transactional Memory" msgstr "Memoria transaccional restringida" #. !/flag:cqm #: modules/devices/x86/x86_data.c:211 msgctxt "x86-flag" msgid "Cache QoS Monitoring" msgstr "" #. !/flag:mpx #: modules/devices/x86/x86_data.c:212 msgctxt "x86-flag" msgid "Memory Protection Extension" msgstr "Extensión de protección de la memoria" #. !/flag:avx512f #: modules/devices/x86/x86_data.c:213 msgctxt "x86-flag" msgid "AVX-512 foundation" msgstr "" #. !/flag:avx512dq #: modules/devices/x86/x86_data.c:214 msgctxt "x86-flag" msgid "AVX-512 Double/Quad instructions" msgstr "" #. !/flag:rdseed #: modules/devices/x86/x86_data.c:215 msgctxt "x86-flag" msgid "The RDSEED instruction" msgstr "La instrucción RDSEED" #. !/flag:adx #: modules/devices/x86/x86_data.c:216 msgctxt "x86-flag" msgid "The ADCX and ADOX instructions" msgstr "Las instrucciones ADCX y ADOX" #. !/flag:smap #: modules/devices/x86/x86_data.c:217 msgctxt "x86-flag" msgid "Supervisor Mode Access Prevention" msgstr "Prevención de acceso en modo supervisor" #. !/flag:clflushopt #: modules/devices/x86/x86_data.c:218 msgctxt "x86-flag" msgid "CLFLUSHOPT instruction" msgstr "Instrucción CLFLUSHOPT" #. !/flag:clwb #: modules/devices/x86/x86_data.c:219 msgctxt "x86-flag" msgid "CLWB instruction" msgstr "Instrucción CLWB" #. !/flag:avx512pf #: modules/devices/x86/x86_data.c:220 msgctxt "x86-flag" msgid "AVX-512 Prefetch" msgstr "" #. !/flag:avx512er #: modules/devices/x86/x86_data.c:221 msgctxt "x86-flag" msgid "AVX-512 Exponential and Reciprocal" msgstr "" #. !/flag:avx512cd #: modules/devices/x86/x86_data.c:222 msgctxt "x86-flag" msgid "AVX-512 Conflict Detection" msgstr "" #. !/flag:sha_ni #: modules/devices/x86/x86_data.c:223 msgctxt "x86-flag" msgid "SHA1/SHA256 Instruction Extensions" msgstr "" #. !/flag:avx512bw #: modules/devices/x86/x86_data.c:224 msgctxt "x86-flag" msgid "AVX-512 Byte/Word instructions" msgstr "" #. !/flag:avx512vl #: modules/devices/x86/x86_data.c:225 msgctxt "x86-flag" msgid "AVX-512 128/256 Vector Length extensions" msgstr "" #. !/flag:xsaveopt #: modules/devices/x86/x86_data.c:227 msgctxt "x86-flag" msgid "Optimized XSAVE" msgstr "XSAVE optimizada" #. !/flag:xsavec #: modules/devices/x86/x86_data.c:228 msgctxt "x86-flag" msgid "XSAVEC" msgstr "" #. !/flag:xgetbv1 #: modules/devices/x86/x86_data.c:229 msgctxt "x86-flag" msgid "XGETBV with ECX = 1" msgstr "XGETBV con ECX = 1" #. !/flag:xsaves #: modules/devices/x86/x86_data.c:230 msgctxt "x86-flag" msgid "XSAVES/XRSTORS" msgstr "" #. !/flag:cqm_llc #: modules/devices/x86/x86_data.c:232 msgctxt "x86-flag" msgid "LLC QoS" msgstr "" #. !/flag:cqm_occup_llc #: modules/devices/x86/x86_data.c:234 msgctxt "x86-flag" msgid "LLC occupancy monitoring" msgstr "" #. !/flag:cqm_mbm_total #: modules/devices/x86/x86_data.c:235 msgctxt "x86-flag" msgid "LLC total MBM monitoring" msgstr "" #. !/flag:cqm_mbm_local #: modules/devices/x86/x86_data.c:236 msgctxt "x86-flag" msgid "LLC local MBM monitoring" msgstr "" #. !/flag:clzero #: modules/devices/x86/x86_data.c:238 msgctxt "x86-flag" msgid "CLZERO instruction" msgstr "Instrucción CLZERO" #. !/flag:irperf #: modules/devices/x86/x86_data.c:239 msgctxt "x86-flag" msgid "instructions retired performance counter" msgstr "" #. !/flag:dtherm #: modules/devices/x86/x86_data.c:241 msgctxt "x86-flag" msgid "digital thermal sensor" msgstr "sensor térmico digital" #. !/flag:ida #: modules/devices/x86/x86_data.c:242 msgctxt "x86-flag" msgid "Intel Dynamic Acceleration" msgstr "Aceleración dinámica de Intel" #. !/flag:arat #: modules/devices/x86/x86_data.c:243 msgctxt "x86-flag" msgid "Always Running APIC Timer" msgstr "" #. !/flag:pln #: modules/devices/x86/x86_data.c:244 msgctxt "x86-flag" msgid "Intel Power Limit Notification" msgstr "" #. !/flag:pts #: modules/devices/x86/x86_data.c:245 msgctxt "x86-flag" msgid "Intel Package Thermal Status" msgstr "" #. !/flag:hwp #: modules/devices/x86/x86_data.c:246 msgctxt "x86-flag" msgid "Intel Hardware P-states" msgstr "Hardware de estado de rendimiento (P-state) de Intel" #. !/flag:hwp_notify #: modules/devices/x86/x86_data.c:247 msgctxt "x86-flag" msgid "HWP notification" msgstr "Notificación del HWP" #. !/flag:hwp_act_window #: modules/devices/x86/x86_data.c:248 msgctxt "x86-flag" msgid "HWP Activity Window" msgstr "Ventana de actividad del HWP" #. !/flag:hwp_epp #: modules/devices/x86/x86_data.c:249 msgctxt "x86-flag" msgid "HWP Energy Performance Preference" msgstr "Preferencia de rendimiento energético del HWP" #. !/flag:hwp_pkg_req #: modules/devices/x86/x86_data.c:250 msgctxt "x86-flag" msgid "HWP package-level request" msgstr "" #. !/flag:npt #: modules/devices/x86/x86_data.c:252 msgctxt "x86-flag" msgid "AMD Nested Page Table support" msgstr "Soporte de tabla de páginas anidadas de AMD" #. !/flag:lbrv #: modules/devices/x86/x86_data.c:253 msgctxt "x86-flag" msgid "AMD LBR Virtualization support" msgstr "" #. !/flag:svm_lock #: modules/devices/x86/x86_data.c:254 msgctxt "x86-flag" msgid "AMD SVM locking MSR" msgstr "" #. !/flag:nrip_save #: modules/devices/x86/x86_data.c:255 msgctxt "x86-flag" msgid "AMD SVM next_rip save" msgstr "" #. !/flag:tsc_scale #: modules/devices/x86/x86_data.c:256 msgctxt "x86-flag" msgid "AMD TSC scaling support" msgstr "" #. !/flag:vmcb_clean #: modules/devices/x86/x86_data.c:257 msgctxt "x86-flag" msgid "AMD VMCB clean bits support" msgstr "" #. !/flag:flushbyasid #: modules/devices/x86/x86_data.c:258 msgctxt "x86-flag" msgid "AMD flush-by-ASID support" msgstr "" #. !/flag:decodeassists #: modules/devices/x86/x86_data.c:259 msgctxt "x86-flag" msgid "AMD Decode Assists support" msgstr "" #. !/flag:pausefilter #: modules/devices/x86/x86_data.c:260 msgctxt "x86-flag" msgid "AMD filtered pause intercept" msgstr "" #. !/flag:pfthreshold #: modules/devices/x86/x86_data.c:261 msgctxt "x86-flag" msgid "AMD pause filter threshold" msgstr "" #. !/flag:avic #: modules/devices/x86/x86_data.c:262 msgctxt "x86-flag" msgid "Virtual Interrupt Controller" msgstr "Controlador de interrupciones virtuales" #. !/flag:pku #: modules/devices/x86/x86_data.c:264 msgctxt "x86-flag" msgid "Protection Keys for Userspace" msgstr "Claves de protección para el espacio de usuario" #. !/flag:ospke #: modules/devices/x86/x86_data.c:265 msgctxt "x86-flag" msgid "OS Protection Keys Enable" msgstr "" #. !/flag:overflow_recov #: modules/devices/x86/x86_data.c:267 msgctxt "x86-flag" msgid "MCA overflow recovery support" msgstr "Soporte de recuperación de desbordamiento de MCA" #. !/flag:succor #: modules/devices/x86/x86_data.c:268 msgctxt "x86-flag" msgid "uncorrectable error containment and recovery" msgstr "contención y recuperación de errores no corregibles" #. !/flag:smca #: modules/devices/x86/x86_data.c:269 msgctxt "x86-flag" msgid "Scalable MCA" msgstr "MCA escalable" #. !/bug:f00f #: modules/devices/x86/x86_data.c:272 msgctxt "x86-flag" msgid "Intel F00F bug" msgstr "Fallo F00F de Intel" #. !/bug:fdiv #: modules/devices/x86/x86_data.c:273 msgctxt "x86-flag" msgid "FPU FDIV" msgstr "" #. !/bug:coma #: modules/devices/x86/x86_data.c:274 msgctxt "x86-flag" msgid "Cyrix 6x86 coma" msgstr "" #. !/bug:tlb_mmatch #: modules/devices/x86/x86_data.c:275 msgctxt "x86-flag" msgid "AMD Erratum 383" msgstr "" #. !/bug:apic_c1e #. !/bug:amd_e400 #: modules/devices/x86/x86_data.c:276 modules/devices/x86/x86_data.c:285 msgctxt "x86-flag" msgid "AMD Erratum 400" msgstr "" #. !/bug:11ap #: modules/devices/x86/x86_data.c:277 msgctxt "x86-flag" msgid "Bad local APIC aka 11AP" msgstr "APIC local malo, alias 11AP" #. !/bug:fxsave_leak #: modules/devices/x86/x86_data.c:278 #, fuzzy msgctxt "x86-flag" msgid "FXSAVE leaks FOP/FIP/FOP" msgstr "FXSAVE tiene fugas FOP/FIP/FOP" #. !/bug:clflush_monitor #: modules/devices/x86/x86_data.c:279 msgctxt "x86-flag" msgid "AAI65, CLFLUSH required before MONITOR" msgstr "AAI65, CLFLUSH requeridos antes de MONITOR" #. !/bug:sysret_ss_attrs #: modules/devices/x86/x86_data.c:280 msgctxt "x86-flag" msgid "SYSRET doesn't fix up SS attrs" msgstr "" #. !/bug:espfix #: modules/devices/x86/x86_data.c:281 msgctxt "x86-flag" msgid "IRET to 16-bit SS corrupts ESP/RSP high bits" msgstr "IRET a SS de 16 bits corrompe los bits altos ESP/RSP" #. !/bug:null_seg #: modules/devices/x86/x86_data.c:282 msgctxt "x86-flag" msgid "Nulling a selector preserves the base" msgstr "Anular un selector preserva la base" #. !/bug:swapgs_fence #: modules/devices/x86/x86_data.c:283 msgctxt "x86-flag" msgid "SWAPGS without input dep on GS" msgstr "SWAPGS sin entrada dep en GS" #. !/bug:monitor #: modules/devices/x86/x86_data.c:284 msgctxt "x86-flag" msgid "IPI required to wake up remote CPU" msgstr "Se requiere IPI para despertar CPU remotas" #. !/bug:cpu_insecure & bug:cpu_meltdown #: modules/devices/x86/x86_data.c:286 modules/devices/x86/x86_data.c:287 msgctxt "x86-flag" msgid "" "CPU is affected by meltdown attack and needs kernel page table isolation" msgstr "" "La CPU está afectada por el ataque meltdown y necesita el aislamiento de " "tabla de páginas del kernel" #. !/bug:spectre_v1 #: modules/devices/x86/x86_data.c:288 msgctxt "x86-flag" msgid "CPU is affected by Spectre variant 1 attack with conditional branches" msgstr "" "La CPU está afectada por la variante 1 del ataque Spectre con ramificaciones " "condicionales" #. !/bug:spectre_v2 #: modules/devices/x86/x86_data.c:289 msgctxt "x86-flag" msgid "CPU is affected by Spectre variant 2 attack with indirect branches" msgstr "" "La CPU esta afectada por la variante 2 del ataque Spectre con ramificaciones " "indirectas" #. !/bug:spec_store_bypass #: modules/devices/x86/x86_data.c:290 msgctxt "x86-flag" msgid "CPU is affected by speculative store bypass attack" msgstr "" #. !/bug:l1tf #: modules/devices/x86/x86_data.c:291 msgctxt "x86-flag" msgid "CPU is affected by L1 Terminal Fault" msgstr "La CPU está afectada por el fallo de la terminal L1" #. !/flag:pm:ts #: modules/devices/x86/x86_data.c:294 msgctxt "x86-flag" msgid "temperature sensor" msgstr "sensor de temperatura" #. !/flag:pm:fid #: modules/devices/x86/x86_data.c:295 msgctxt "x86-flag" msgid "frequency id control" msgstr "identificador del control de frecuencia" #. !/flag:pm:vid #: modules/devices/x86/x86_data.c:296 msgctxt "x86-flag" msgid "voltage id control" msgstr "identificador del control de voltaje" #. !/flag:pm:ttp #: modules/devices/x86/x86_data.c:297 msgctxt "x86-flag" msgid "thermal trip" msgstr "límite térmico" #. !/flag:pm:tm #: modules/devices/x86/x86_data.c:298 msgctxt "x86-flag" msgid "hardware thermal control" msgstr "control término por hardware" #. !/flag:pm:stc #: modules/devices/x86/x86_data.c:299 msgctxt "x86-flag" msgid "software thermal control" msgstr "control término por software" #. !/flag:pm:100mhzsteps #: modules/devices/x86/x86_data.c:300 msgctxt "x86-flag" msgid "100 MHz multiplier control" msgstr "Control del multiplicador de 100 MHz" #. !/flag:pm:hwpstate #: modules/devices/x86/x86_data.c:301 msgctxt "x86-flag" msgid "hardware P-state control" msgstr "control del estado de rendimiento del hardware (P-state)" #. !/flag:pm:cpb #: modules/devices/x86/x86_data.c:302 msgctxt "x86-flag" msgid "core performance boost" msgstr "aumento del rendimiento del núcleo" #. !/flag:pm:eff_freq_ro #: modules/devices/x86/x86_data.c:303 msgctxt "x86-flag" msgid "Readonly aperf/mperf" msgstr "aperf/mperf de solo lectura" #. !/flag:pm:proc_feedback #: modules/devices/x86/x86_data.c:304 msgctxt "x86-flag" msgid "processor feedback interface" msgstr "interfaz de retroalimentación del procesador" #. !/flag:pm:acc_power #: modules/devices/x86/x86_data.c:305 msgctxt "x86-flag" msgid "accumulated power mechanism" msgstr "mecanismo de energía acumulada" #: modules/network.c:61 msgid "Interfaces" msgstr "Interfaces" #: modules/network.c:62 msgid "IP Connections" msgstr "Conexiones IP" #: modules/network.c:63 msgid "Routing Table" msgstr "Tabla de enrutamiento" #: modules/network.c:64 modules/network.c:310 msgid "ARP Table" msgstr "Tabla ARP" #: modules/network.c:65 msgid "DNS Servers" msgstr "Servidores DNS" #: modules/network.c:66 msgid "Statistics" msgstr "Estadísticas" #: modules/network.c:67 msgid "Shared Directories" msgstr "Directorios compartidos" #: modules/network.c:311 modules/network.c:333 modules/network.c:364 #: modules/network/net.c:495 msgid "IP Address" msgstr "Dirección IP" #: modules/network.c:311 msgid "MAC Address" msgstr "Dirección MAC" #: modules/network.c:320 msgid "SAMBA" msgstr "SAMBA" #: modules/network.c:321 msgid "NFS" msgstr "NFS" #: modules/network.c:332 msgid "Name Servers" msgstr "Servidores de nombres" #: modules/network.c:347 msgid "Connections" msgstr "Conexiones" #: modules/network.c:348 msgid "Local Address" msgstr "Dirección local" #: modules/network.c:348 msgid "Foreign Address" msgstr "Dirección remota" #: modules/network.c:348 msgid "State" msgstr "Estado" #: modules/network.c:364 msgid "Sent" msgstr "Enviado" #: modules/network.c:364 msgid "Received" msgstr "Recibido" #: modules/network.c:380 msgid "IP routing table" msgstr "Tabla de enrutamiento IP" #: modules/network.c:381 msgid "Destination/Gateway" msgstr "Destino/Puerta de enlace" #: modules/network.c:381 modules/network/net.c:496 msgid "Mask" msgstr "Máscara" #: modules/network.c:409 msgid "Network" msgstr "Red" #: modules/network.c:442 msgid "Gathers information about this computer's network connection" msgstr "Recopila información sobre la conexión de red de este ordenador" #: modules/network/net.c:74 msgctxt "wi-op-mode" msgid "Auto" msgstr "Automático" #: modules/network/net.c:75 msgctxt "wi-op-mode" msgid "Ad-Hoc" msgstr "Ad hoc" #: modules/network/net.c:76 msgctxt "wi-op-mode" msgid "Managed" msgstr "Gestionada" #: modules/network/net.c:77 msgctxt "wi-op-mode" msgid "Master" msgstr "Maestra" #: modules/network/net.c:78 msgctxt "wi-op-mode" msgid "Repeater" msgstr "Repetidor" #: modules/network/net.c:79 msgctxt "wi-op-mode" msgid "Secondary" msgstr "Secundaria" #: modules/network/net.c:80 msgctxt "wi-op-mode" msgid "(Unknown)" msgstr "(desconocido)" #: modules/network/net.c:268 modules/network/net.c:288 #: modules/network/net.c:296 msgctxt "net-if-type" msgid "Ethernet" msgstr "Ethernet" #: modules/network/net.c:269 #, fuzzy msgctxt "net-if-type" msgid "Loopback" msgstr "Loopback" #: modules/network/net.c:270 msgctxt "net-if-type" msgid "Point-to-Point" msgstr "Punto a punto" #: modules/network/net.c:271 modules/network/net.c:272 #: modules/network/net.c:273 modules/network/net.c:274 #: modules/network/net.c:298 msgctxt "net-if-type" msgid "Wireless" msgstr "Inalámbrica" #: modules/network/net.c:275 msgctxt "net-if-type" msgid "Virtual Point-to-Point (TUN)" msgstr "Punto a punto virtual (TUN)" #: modules/network/net.c:276 msgctxt "net-if-type" msgid "Ethernet (TAP)" msgstr "Ethernet (TAP)" #: modules/network/net.c:277 msgctxt "net-if-type" msgid "Parallel Line Internet Protocol" msgstr "Protocolo de internet de línea paralela" #: modules/network/net.c:278 msgctxt "net-if-type" msgid "Infrared" msgstr "Infrarroja" #: modules/network/net.c:279 modules/network/net.c:297 msgctxt "net-if-type" msgid "Serial Line Internet Protocol" msgstr "Protocolo de internet de línea serie" #: modules/network/net.c:280 msgctxt "net-if-type" msgid "Integrated Services Digital Network" msgstr "Red digital de servicios integrados" #: modules/network/net.c:281 msgctxt "net-if-type" msgid "IPv6-over-IPv4 Tunnel" msgstr "Túnel IPv6 sobre IPv4" #: modules/network/net.c:282 msgctxt "net-if-type" msgid "VMWare Virtual Network Interface (NAT)" msgstr "Interfaz de red virtual de VMWare (NAT)" #: modules/network/net.c:283 msgctxt "net-if-type" msgid "VMWare Virtual Network Interface" msgstr "Interfaz de red virtual de VMWare" #: modules/network/net.c:284 msgctxt "net-if-type" msgid "Personal Area Network (PAN)" msgstr "Red de área personal (PAN)" #: modules/network/net.c:285 msgctxt "net-if-type" msgid "Bluetooth" msgstr "Bluetooth" #: modules/network/net.c:286 msgctxt "net-if-type" msgid "Bridge Interface" msgstr "Interfaz puente" #: modules/network/net.c:287 msgctxt "net-if-type" msgid "Hamachi Virtual Personal Network" msgstr "Red personal virtual de Hamachi" #: modules/network/net.c:289 msgctxt "net-if-type" msgid "Intermediate Functional Block" msgstr "Bloque funcional intermedio" #: modules/network/net.c:290 msgctxt "net-if-type" msgid "GRE Network Tunnel" msgstr "Túnel de red GRE" #: modules/network/net.c:291 msgctxt "net-if-type" msgid "Mesh Network" msgstr "Red de malla" #: modules/network/net.c:292 msgctxt "net-if-type" msgid "Wireless Master Interface" msgstr "Interfaz inalámbrica maestra" #: modules/network/net.c:293 msgctxt "net-if-type" msgid "VirtualBox Virtual Network Interface" msgstr "Interfaz de red virtual de VirtualBox" #: modules/network/net.c:299 msgctxt "net-if-type" msgid "Wireless (WAN)" msgstr "Inalámbrica (WAN)" #: modules/network/net.c:301 msgctxt "net-if-type" msgid "(Unknown)" msgstr "(desconocida)" #: modules/network/net.c:364 modules/network/net.c:374 msgid "Network Interfaces" msgstr "Interfaces de red" #: modules/network/net.c:364 msgid "None Found" msgstr "Ninguna encontrada" #: modules/network/net.c:431 msgid "Network Adapter Properties" msgstr "Propiedades del adaptador de red" #: modules/network/net.c:432 msgid "Interface Type" msgstr "Tipo de interfaz" #: modules/network/net.c:433 msgid "Hardware Address (MAC)" msgstr "Dirección física (MAC)" #: modules/network/net.c:437 msgid "MTU" msgstr "MTU" #: modules/network/net.c:439 msgid "Transfer Details" msgstr "Detalles de la transferencia" #: modules/network/net.c:440 msgid "Bytes Received" msgstr "Bytes recibidos" #: modules/network/net.c:441 msgid "Bytes Sent" msgstr "Bytes enviados" #: modules/network/net.c:458 modules/network/net.c:480 #: modules/network/net.c:481 msgid "dBm" msgstr "dBm" #: modules/network/net.c:458 msgid "mW" msgstr "mW" #: modules/network/net.c:472 msgid "Wireless Properties" msgstr "Propiedades inalámbricas" #: modules/network/net.c:473 msgid "Network Name (SSID)" msgstr "Nombre de red (SSID)" #: modules/network/net.c:474 msgid "Bit Rate" msgstr "Tasa de bits" #: modules/network/net.c:475 msgid "Transmission Power" msgstr "Potencia de transmisión" #: modules/network/net.c:478 msgid "Link Quality" msgstr "Calidad del enlace" #: modules/network/net.c:479 msgid "Signal / Noise" msgstr "Señal / Ruido" #: modules/network/net.c:494 msgid "Internet Protocol (IPv4)" msgstr "Protocolo de internet (IPv4)" #: modules/network/net.c:495 modules/network/net.c:496 #: modules/network/net.c:498 msgid "(Not set)" msgstr "(sin asignar)" #: modules/network/net.c:497 msgid "Broadcast Address" msgstr "Dirección de difusión" #: includes/spd-decode.h:28 msgid "RAM" msgstr "RAM" #, c-format #~ msgid "Module \"%s\" depends on module \"%s\", load it?" #~ msgstr "El módulo «%s» depende del módulo «%s»; ¿desea cargarlo?" #, c-format #~ msgid "Module \"%s\" depends on module \"%s\"." #~ msgstr "El módulo «%s» depende del módulo «%s»." #~ msgid "_Open..." #~ msgstr "_Abrir..." #~ msgid "Spin/Flavor" #~ msgstr "Variante" #~ msgid "Manufacturing Date (Week / Year)" #~ msgstr "Fecha de fabricación (Semana / Año)" #~ msgid "_Copy to Clipboard" #~ msgstr "_Copiar al portapapeles" #~ msgid "Copy to clipboard" #~ msgstr "Copiar al portapapeles" #~ msgid "dmidecode utility available" #~ msgstr "dmidecode utilidad no disponible" #~ msgid " ... and HardInfo2 running with superuser privileges" #~ msgstr "" #~ " ... y HardInfo2 ejecutándose con privilegios de administrador" #~ msgid "" #~ " ... or ee1004 module loaded and configured! " #~ "(for DDR4)" #~ msgstr "" #~ " ... o el módulo ee1004 cargado ¡y configurado! (para DDR4)" #~ msgid "Memory information requires one or both of the following:" #~ msgstr "" #~ "La información sobre la memoria requiere de al menos uno de lo " #~ "siguiente:" #, c-format #~ msgid "" #~ "Written by %s\n" #~ "Licensed under %s" #~ msgstr "" #~ "Escrito por %s\n" #~ "Licencia bajo %s" #, c-format #~ msgid "No about information is associated with the %s module." #~ msgstr "No hay información «acerca de» asociada al módulo %s." #~ msgid "User Note" #~ msgstr "Nota de usuario" #~ msgid "" #~ "This result is from an old version of HardInfo2. Results might not be " #~ "comparable to current version. Some details are missing." #~ msgstr "" #~ "El resultado es de una versión antigua de HardInfo2. Los resultados " #~ "pueden no ser comparables con la versión actual. Faltan algunos detalles." #~ msgid "Total Memory" #~ msgstr "Memoria total" #~ msgid "Free Memory" #~ msgstr "Memoria Libre" #~ msgid "Cached Swap" #~ msgstr "Intercambio" #~ msgid "High Memory" #~ msgstr "Memoria alta" #~ msgid "Free High Memory" #~ msgstr "Memoria alta libre" #~ msgid "Low Memory" #~ msgstr "Memoria base" #~ msgid "Free Low Memory" #~ msgstr "Memoria base libre" #~ msgid "Virtual Memory" #~ msgstr "Memoria virtual" #~ msgid "Free Virtual Memory" #~ msgstr "Memoria virtual libre" #~ msgid "(Not available; Perhaps try running HardInfo2 as root.)" #~ msgstr "" #~ "(no disponible; puede que funcione ejecutando HardInfo2 como " #~ "administrador.)" #~ msgid "DMI is not available; Perhaps try running HardInfo2 as root." #~ msgstr "" #~ "DMI no disponible; puede que funcione ejecutando HardInfo2 como " #~ "administrador." #~ msgid "RISC-V Processor" #~ msgstr "Procesador RISC-V" #, c-format #~ msgid "" #~ "Copyright (C) 2003-%d L. A. F. Pereira. See COPYING for details.\n" #~ "\n" #~ msgstr "" #~ "Copyright (C) 2003-%d L. A. F. Pereira. Vea COPYING para obtener más " #~ "detalles.\n" #~ "\n" #, c-format #~ msgid "" #~ "Compile-time options:\n" #~ " Release version: %s (%s)\n" #~ " BinReloc enabled: %s\n" #~ " Data prefix: %s\n" #~ " Library prefix: %s\n" #~ " Compiled for: %s\n" #~ msgstr "" #~ "Opciones de compilación:\n" #~ " Versión de producción: %s (%s)\n" #~ " BinReloc habilitado: %s\n" #~ " Prefijo de datos: %s\n" #~ " Prefijo de biblioteca: %s\n" #~ " Compilado para: %s\n" #, c-format #~ msgid "" #~ "Failed to find runtime data.\n" #~ "\n" #~ "• Is HardInfo2 correctly installed?\n" #~ "• See if %s and %s exists and you have read permission." #~ msgstr "" #~ "Error al buscar los datos de ejecución.\n" #~ "\n" #~ "• ¿HardInfo2 está correctamente instalado?\n" #~ "• Vea si %s y %s existen y si tiene permiso para lectura." #, c-format #~ msgid "" #~ "Modules:\n" #~ "%-20s %-15s %-12s\n" #~ msgstr "" #~ "Módulos:\n" #~ "%-20s %-15s %-12s\n" #~ msgid "File Name" #~ msgstr "Nombre de archivo" #, c-format #~ msgid "Unknown benchmark ``%s'' or benchmark.so not loaded" #~ msgstr "" #~ "Prueba de rendimiento``%s'' desconocida o no está cargado benchmark.so" #~ msgid "run benchmark; requires benchmark.so to be loaded" #~ msgstr "ejecutar prueba de rendimiento; requiere la carga de benchmark.so" #~ msgid "note attached to benchmark results" #~ msgstr "nota añadida al resultado de la prueba de rendimiento" #~ msgid "lists modules" #~ msgstr "listas de módulos" #~ msgid "specify module to load" #~ msgstr "especificar módulo a cargar" #~ msgid "automatically load module dependencies" #~ msgstr "cargar automáticamente las dependencias de los módulos" #~ msgid "run in XML-RPC server mode" #~ msgstr "ejecutar en modo servidor XML-RPC" #~ msgid "- System Profiler and Benchmark tool" #~ msgstr "- Analizador de sistema y herramienta de prueba de rendimiento" #, c-format #~ msgid "" #~ "No module could be loaded. Check permissions on \"%s\" and try again." #~ msgstr "" #~ "No se puede cargar ningún módulo. Verifique los permisos en «%s» y pruebe " #~ "de nuevo." #~ msgid "" #~ "No module could be loaded. Please use hardinfo2 -l to list all available " #~ "modules and try again with a valid module list." #~ msgstr "" #~ "No se puede cargar ningún módulo. Por favor, use hardinfo2 -l para listar " #~ "todos los módulos disponibles y pruebe de nuevo con una lista válida de " #~ "módulos." #~ msgid "Author:" #~ msgstr "Autor:" #~ msgid "Contributors:" #~ msgstr "Colaboradores:" #~ msgid "Based on work by:" #~ msgstr "Basado en el trabajo de:" #~ msgid "MD5 implementation by Colin Plumb (see md5.c for details)" #~ msgstr "Implementación de MD5 por Colin Plumb (ver md5.c para los detalles)" #~ msgid "SHA1 implementation by Steve Reid (see sha1.c for details)" #~ msgstr "" #~ "Implementación de SHA1 por Steve Reid (ver sha1.c para los detalles)" #~ msgid "Blowfish implementation by Paul Kocher (see blowfich.c for details)" #~ msgstr "" #~ "Implementación de Blowfish por Paul Kocher (ver blowfich.c para los " #~ "detalles)" #~ msgid "Raytracing benchmark by John Walker (see fbench.c for details)" #~ msgstr "" #~ "Prueba de rendimiento de trazado de rayos por John Walker (ver fbench.c " #~ "para los detalles)" #~ msgid "FFT benchmark by Scott Robert Ladd (see fftbench.c for details)" #~ msgstr "" #~ "Prueba de rendimiento de FFT por Scott Robert Ladd (ver fftbench.c para " #~ "los detalles)" #~ msgid "Some code partly based on x86cpucaps by Osamu Kayasono" #~ msgstr "" #~ "Parte del código parcialmente basado en x86cpucaps por Osamu Kayasono" #~ msgid "Vendor list based on GtkSysInfo by Pissens Sebastien" #~ msgstr "Lista de proveedores basada en GtkSysInfo por Pissens Sebastien" #~ msgid "DMI support based on code by Stewart Adam" #~ msgstr "Soporte DMI basado en código de Stewart Adam" #~ msgid "SCSI support based on code by Pascal F. Martin" #~ msgstr "Soporte SCSI basado en código de Pascal F. Martin" #~ msgid "Tango Project" #~ msgstr "Proyecto Tango" #~ msgid "The GNOME Project" #~ msgstr "El proyecto GNOME" #~ msgid "VMWare, Inc. (USB icon from VMWare Workstation 6)" #~ msgstr "VMWare, Inc. (icono USB de VMWare Workstation 6)" #~ msgid "System information and benchmark tool" #~ msgstr "Herramienta de información y pruebas de rendimiento del sistema" #~ msgid "translator-credits" #~ msgstr "créditos de traducción" #~ msgid "_Remote" #~ msgstr "_Remoto" #~ msgid "About _Modules" #~ msgstr "Acerca de los _módulos" #~ msgid "_Network Updater..." #~ msgstr "_Actualizador por red..." #, c-format #~ msgid "%s - System Information" #~ msgstr "%s - Información del sistema" #~ msgid "System Information" #~ msgstr "Información del sistema" #~ msgid "" #~ "HardInfo2 was compiled without libsoup support. (Network Updater requires " #~ "it.)" #~ msgstr "" #~ "HardInfo2 fue compilado sin soporte libsoup. (El actualizador por red lo " #~ "requiere.)" #, c-format #~ msgid "%s (error #%d)" #~ msgstr "%s (error #%d)" #~ msgid "Could not parse XML-RPC response" #~ msgstr "No se ha podido procesar la respuesta XML-RPC" #, c-format #~ msgid "" #~ "Server says it supports API version %d, but this version of HardInfo2 " #~ "only supports API version %d." #~ msgstr "" #~ "El servidor dice que soporta la versión de la API %d, pero esta versión " #~ "de HardInfo2 solo soporta la versión de la API %d." #~ msgid "Contacting HardInfo2 Central Database" #~ msgstr "Contactando base de datos central de Hardinfo" #~ msgid "Cleaning up" #~ msgstr "Limpiando" #, c-format #~ msgid "" #~ "Failed while performing \"%s\". Please file a bug report if this problem " #~ "persists. (Use the Help→Report bug option.)\n" #~ "\n" #~ "Details: %s" #~ msgstr "" #~ "Error realizando «%s». Por favor, reporte el error si este problema " #~ "persiste. (Use la opción Ayuda→Reportar error.)\n" #~ "\n" #~ "Detalles: %s" #, c-format #~ msgid "" #~ "Failed while performing \"%s\". Please file a bug report if this problem " #~ "persists. (Use the Help→Report bug option.)" #~ msgstr "" #~ "Error realizando «%s». Por favor, reporte el error si este problema " #~ "persiste. (Use la opción Ayuda→Reportar error.)" #~ msgid "Network Updater" #~ msgstr "Actualizador por red" #~ msgid "FPU Raytracing" #~ msgstr "FPU trazado de rayos" #~ msgid "SysBench Memory" #~ msgstr "SysBench de memoria" #~ msgid "Results in MiB/second. Higher is better." #~ msgstr "Resultados en MiB/segundo. Más alto es mejor." #~ msgid "Results in seconds. Lower is better." #~ msgstr "Resultados en segundos. Más bajo es mejor." #~ msgid "" #~ "Benchmarking. Please do not move your mouse\n" #~ "or press any keys." #~ msgstr "" #~ "Ejecutando prueba de rendimiento.\n" #~ "Por favor, no mueva el ratón ni pulse ninguna tecla." #~ msgid "Cancel" #~ msgstr "Cancelar" #~ msgid "Update CPU feature database" #~ msgstr "Actualizar la base de datos de características de CPU" #~ msgid "" #~ "Any NVMe storage devices present are not listed.\n" #~ "udisksd is required for NVMe devices." #~ msgstr "" #~ "Cualquier dispositivo de almacenamiento NVMe presente no está en la lista." #~ "Se requiere udisksd para los dispositivos NVMe." #~ msgid " eeprom module loaded (for SDR, DDR, DDR2, DDR3)" #~ msgstr " el módulo eeprom cargado (para SDR, DDR, DDR2, DDR3)" #~ msgid "Requires the fwupdmgr utility." #~ msgstr "Requiere la utilidad fwupdmgr." #, c-format #~ msgid "Vendor=%s\n" #~ msgstr "Fabricante=%s\n" #, c-format #~ msgid "" #~ "[Self-monitoring (S.M.A.R.T.)]\n" #~ "Status=%s\n" #~ "Bad Sectors=%ld\n" #~ "Power on time=%d days %d hours\n" #~ "Temperature=%d°C\n" #~ msgstr "" #~ "[Self-monitoring (S.M.A.R.T.)]\n" #~ "Estado=%s\n" #~ "Sectores defectuosos=%ld\n" #~ "Tiempo encendido=%d días %d horas \n" #~ "Temperatura=%d°C\n" #~ msgid "" #~ "[S.M.A.R.T. Attributes]\n" #~ "Attribute=Normalized Value / Worst / Threshold\n" #~ msgstr "" #~ "[Atributos de S.M.A.R.T.]\n" #~ "Atributo=Valor normalizado / Peor / Umbral\n" #~ msgid "Thread" #~ msgstr "Hilo" #~ msgid "chooses a report format (text, html)" #~ msgstr "elige un formato para el reporte (texto, html)" #~ msgid "Couldn't find a Web browser to open URL %s." #~ msgstr "No se pudo encontrar un navegador Web para abrir la URL %s." #~ msgid "CSharp (Mono, old)" #~ msgstr "CSharp (Mono, antiguo)" #~ msgid "DMI" #~ msgstr "DMI" #~ msgid "Memory SPD" #~ msgstr "Memoria SPD" #~ msgid "" #~ "[SPD]\n" #~ "Please load the eeprom module to obtain information about memory SPD=\n" #~ "[$ShellParam$]\n" #~ "ReloadInterval=500\n" #~ msgstr "" #~ "[SPD]\n" #~ "Por favor carge el modulo eeprom para obtener información de memorias " #~ "SPD=\n" #~ "[$ShellParam$]\n" #~ "ReloadInterval=500\n" #~ msgid "" #~ "[SPD]\n" #~ "Reading memory SPD not supported on this system=\n" #~ msgstr "" #~ "[SPD]\n" #~ "Lectura de memorias no soportado en este sistema=\n" #~ msgid "SPD" #~ msgstr "SPD" #~ msgid "Bank" #~ msgstr "Ranura" #~ msgid "Vendor=%s (%s)\n" #~ msgstr "Proveedor=%s (%s)\n" #~ msgid "Unknown benchmark ``%s'' or libbenchmark.so not loaded" #~ msgstr "Benchmark desconocido ``%s'' o no se cargó libbenchmark.so" #~ msgid "%s Module" #~ msgstr "%s módulo" #~ msgid "X11 Vendor" #~ msgstr "Proveedor X11" #~ msgid "OpenGL" #~ msgstr "OpenGL (3D)" #~ msgid "Extensions" #~ msgstr "Extensiones" #~ msgid "Monitor %d=%dx%d pixels\n" #~ msgstr "Monitor %d=%dx%d pixels\n" #~ msgid " (model unknown)" #~ msgstr " (modelo desconocido)" #~ msgid " (vendor unknown)" #~ msgstr " (proveedor desconocido)" #~ msgid "Latency" #~ msgstr "Latencia" #~ msgid "Bus Master" #~ msgstr "Bus Maestro" #~ msgid "Kernel modules" #~ msgstr "Modulos" #~ msgid "OEM Vendor" #~ msgstr "Vendedor OEM" #~ msgid "I/O ports at" #~ msgstr "Puertos I/O en" #~ msgid "Bus, device, function" #~ msgstr "Bus, dispositivo, funcion" #~ msgid "Unknown USB %.2f Device (class %d)" #~ msgstr "USB desconocido %.2f (class %d)" #~ msgid "Vendor ID" #~ msgstr "ID Vendedor" #~ msgid "Product ID" #~ msgstr "ID Producto" #~ msgid "Port" #~ msgstr "Puerto" #~ msgid "Level" #~ msgstr "Nivel" #~ msgid "pixels" #~ msgstr "pixeles" hardinfo2-hardinfo2-1331e88/po/fr.po000066400000000000000000004545371474767047500171520ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Yolateng0 , 2014. # msgid "" msgstr "" "Project-Id-Version: hardinfo2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-10-06 01:42+0200\n" "PO-Revision-Date: 2019-11-18\n" "Last-Translator: yolateng0 \n" "Language-Team: KreizennDafar\n" "Language: fr\n" "X-Poedit-Basepath: ../\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" "X-Generator: Poedit 1.5.4\n" #: hardinfo2/cpu_util.c:29 msgid "Little Endian" msgstr "Little Endian" #: hardinfo2/cpu_util.c:31 msgid "Big Endian" msgstr "Big Endian" #: hardinfo2/cpu_util.c:205 hardinfo2/cpu_util.c:216 modules/devices/gpu.c:262 msgid "Frequency Scaling" msgstr "Echelle de Fréquence" #: hardinfo2/cpu_util.c:206 modules/devices/gpu.c:263 msgid "Minimum" msgstr "Minimum" #: hardinfo2/cpu_util.c:206 hardinfo2/cpu_util.c:207 hardinfo2/cpu_util.c:208 #: hardinfo2/dt_util.c:590 modules/devices/gpu.c:263 modules/devices/gpu.c:264 msgid "kHz" msgstr "kHz" #: hardinfo2/cpu_util.c:207 modules/devices/gpu.c:264 msgid "Maximum" msgstr "Maximum" #: hardinfo2/cpu_util.c:208 msgid "Current" msgstr "Actuel" #: hardinfo2/cpu_util.c:209 modules/devices/gpu.c:265 msgid "Transition Latency" msgstr "Latence de transition" #: hardinfo2/cpu_util.c:209 modules/devices/gpu.c:265 msgid "ns" msgstr "ns" #: hardinfo2/cpu_util.c:210 msgid "Governor" msgstr "Governor" #: hardinfo2/cpu_util.c:211 hardinfo2/cpu_util.c:217 modules/devices.c:842 #: modules/devices/gpu.c:209 modules/devices/pci.c:148 #: modules/devices/usb.c:139 msgid "Driver" msgstr "Driver" #: hardinfo2/cpu_util.c:223 modules/computer.c:801 #: modules/devices/arm/processor.c:255 modules/devices/e2k/processor.c:178 #: modules/devices/x86/processor.c:283 modules/devices/x86/processor.c:387 #: modules/devices/x86/processor.c:525 msgid "(Not Available)" msgstr "(Non Disponible)" #: hardinfo2/cpu_util.c:231 hardinfo2/cpu_util.c:233 msgid "Socket" msgstr "Socket" #: hardinfo2/cpu_util.c:236 hardinfo2/cpu_util.c:238 modules/devices/gpu.c:205 #: modules/devices/gpu.c:295 msgid "Core" msgstr "Coeur" #: hardinfo2/cpu_util.c:241 msgid "Book" msgstr "Book" #: hardinfo2/cpu_util.c:243 msgid "Drawer" msgstr "Drawer" #: hardinfo2/cpu_util.c:249 modules/devices/arm/processor.c:480 #: modules/devices/x86/processor.c:751 msgid "Topology" msgstr "Topologie" #: hardinfo2/cpu_util.c:250 msgid "ID" msgstr "ID" #: hardinfo2/dmi_util.c:25 msgid "BIOS Information" msgstr "Informations du BIOS" #: hardinfo2/dmi_util.c:26 modules/devices/parisc/processor.c:157 msgid "System" msgstr "Système" #: hardinfo2/dmi_util.c:27 msgid "Base Board" msgstr "Base Carte Mère" #: hardinfo2/dmi_util.c:28 modules/devices/dmi.c:54 msgid "Chassis" msgstr "Châssis" #: hardinfo2/dmi_util.c:29 modules/computer.c:580 modules/computer.c:1144 #: modules/devices/alpha/processor.c:87 modules/devices/arm/processor.c:340 #: modules/devices.c:99 modules/devices/e2k/processor.c:357 #: modules/devices/ia64/processor.c:159 #: modules/devices/loongarch64/processor.c:93 #: modules/devices/m68k/processor.c:83 modules/devices/mips/processor.c:74 #: modules/devices/parisc/processor.c:154 modules/devices/ppc/processor.c:157 #: modules/devices/riscv/processor.c:241 modules/devices/s390/processor.c:131 #: modules/devices/sh/processor.c:83 modules/devices/sparc/processor.c:74 #: modules/devices/x86/processor.c:647 msgid "Processor" msgstr "Processeur" #: hardinfo2/dmi_util.c:30 msgid "Memory Controller" msgstr "Controleur de mémoire" #: hardinfo2/dmi_util.c:31 msgid "Memory Module" msgstr "Module Mémoire" #: hardinfo2/dmi_util.c:32 modules/devices/e2k/processor.c:366 #: modules/devices/parisc/processor.c:163 modules/devices/x86/processor.c:663 msgid "Cache" msgstr "Cache" #: hardinfo2/dmi_util.c:33 msgid "Port Connector" msgstr "Connecteur de port" #: hardinfo2/dmi_util.c:34 msgid "System Slots" msgstr "Slots Système" #: hardinfo2/dmi_util.c:35 msgid "On Board Devices" msgstr "Appareils Périphériques" #: hardinfo2/dmi_util.c:36 msgid "OEM Strings" msgstr "Fabricant OEM " #: hardinfo2/dmi_util.c:37 msgid "System Configuration Options" msgstr "Options Configuration Système" #: hardinfo2/dmi_util.c:38 msgid "BIOS Language" msgstr "Langue du BIOS" #: hardinfo2/dmi_util.c:39 msgid "Group Associations" msgstr "Associations" #: hardinfo2/dmi_util.c:40 msgid "System Event Log" msgstr "Log évènement Système" #: hardinfo2/dmi_util.c:41 msgid "Physical Memory Array" msgstr "Tableau Mémoire Physique" #: hardinfo2/dmi_util.c:42 msgid "Memory Device" msgstr "Périphérique Mémoire" #: hardinfo2/dmi_util.c:43 msgid "32-bit Memory Error" msgstr "Erreur Mémoire 32-bit" #: hardinfo2/dmi_util.c:44 msgid "Memory Array Mapped Address" msgstr "Mappage Tableau Mémoire " #: hardinfo2/dmi_util.c:45 msgid "Memory Device Mapped Address" msgstr "Mappage Périphérique Mémoire" #: hardinfo2/dmi_util.c:46 msgid "Built-in Pointing Device" msgstr "Périphérique de Pointage Présent" #: hardinfo2/dmi_util.c:47 msgid "Portable Battery" msgstr "Batterie Portable" #: hardinfo2/dmi_util.c:48 msgid "System Reset" msgstr "Reset Système" #: hardinfo2/dmi_util.c:49 msgid "Hardware Security" msgstr "Sécurité Hardware" #: hardinfo2/dmi_util.c:50 msgid "System Power Controls" msgstr "Contrôle Puissance Système" #: hardinfo2/dmi_util.c:51 msgid "Voltage Probe" msgstr "Sonde de Tension" #: hardinfo2/dmi_util.c:52 msgid "Cooling Device" msgstr "dispositif de refroidissement Cooling" #: hardinfo2/dmi_util.c:53 msgid "Temperature Probe" msgstr "Sonde de Température" #: hardinfo2/dmi_util.c:54 msgid "Electrical Current Probe" msgstr "Sonde Courant Electrique" #: hardinfo2/dmi_util.c:55 msgid "Out-of-band Remote Access" msgstr "Accès Contrôle à Distance" #: hardinfo2/dmi_util.c:56 msgid "Boot Integrity Services" msgstr "Services de Boot" #: hardinfo2/dmi_util.c:57 msgid "System Boot" msgstr "Système de Boot" #: hardinfo2/dmi_util.c:58 msgid "64-bit Memory Error" msgstr "Erreur Mémoire 64-bit" #: hardinfo2/dmi_util.c:59 msgid "Management Device" msgstr "Disposiif Périphérique" #: hardinfo2/dmi_util.c:60 msgid "Management Device Component" msgstr "Dispositif des Composants Périphériques" #: hardinfo2/dmi_util.c:61 msgid "Management Device Threshold Data" msgstr "Dispositif de Seuil Mémoire de Périphériques" #: hardinfo2/dmi_util.c:62 msgid "Memory Channel" msgstr "Canal Mémoire" #: hardinfo2/dmi_util.c:63 msgid "IPMI Device" msgstr "Périphérique IPMI" #: hardinfo2/dmi_util.c:64 msgid "Power Supply" msgstr "Alimentation électrique" #: hardinfo2/dmi_util.c:65 msgid "Additional Information" msgstr "Informations Supplémentaires" #: hardinfo2/dmi_util.c:66 msgid "Onboard Device" msgstr "Périphériques Embarqués" #: hardinfo2/dmi_util.c:233 msgid "Invalid chassis type (0)" msgstr "Type de châssis Invalide (0)" #: hardinfo2/dmi_util.c:234 hardinfo2/dmi_util.c:235 msgid "Unknown chassis type" msgstr "Type de châssis inconnu" #: hardinfo2/dmi_util.c:236 msgid "Desktop" msgstr "Ordinateur de bureau" #: hardinfo2/dmi_util.c:237 msgid "Low-profile Desktop" msgstr "PC Low-Profile" #: hardinfo2/dmi_util.c:238 msgid "Pizza Box" msgstr "Pizza Box" #: hardinfo2/dmi_util.c:239 msgid "Mini Tower" msgstr "Mini Tour" #: hardinfo2/dmi_util.c:240 msgid "Tower" msgstr "Tour" #: hardinfo2/dmi_util.c:241 msgid "Portable" msgstr "Portable" #: hardinfo2/dmi_util.c:242 modules/computer.c:408 modules/computer.c:417 #: modules/computer.c:440 modules/computer.c:442 msgid "Laptop" msgstr "Portable" #: hardinfo2/dmi_util.c:243 msgid "Notebook" msgstr "Notebook" #: hardinfo2/dmi_util.c:244 msgid "Handheld" msgstr "Appareil Portatif" #: hardinfo2/dmi_util.c:245 msgid "Docking Station" msgstr "Station d'accueil" #: hardinfo2/dmi_util.c:246 msgid "All-in-one" msgstr "Tout en Un" #: hardinfo2/dmi_util.c:247 msgid "Subnotebook" msgstr "Subnotebook" #: hardinfo2/dmi_util.c:248 msgid "Space-saving" msgstr "Space-saving" #: hardinfo2/dmi_util.c:249 msgid "Lunch Box" msgstr "Lunch Box" #: hardinfo2/dmi_util.c:250 msgid "Main Server Chassis" msgstr "Châssis du serveur principal" #: hardinfo2/dmi_util.c:251 msgid "Expansion Chassis" msgstr "Extension de Châssis" #: hardinfo2/dmi_util.c:252 msgid "Sub Chassis" msgstr "Sous Châssis" #: hardinfo2/dmi_util.c:253 msgid "Bus Expansion Chassis" msgstr "Châssis BUS Extension" #: hardinfo2/dmi_util.c:254 msgid "Peripheral Chassis" msgstr "Châssis Périphériques" #: hardinfo2/dmi_util.c:255 msgid "RAID Chassis" msgstr "Châssis RAID" #: hardinfo2/dmi_util.c:256 msgid "Rack Mount Chassis" msgstr "Châssis de Montage Rack" #: hardinfo2/dmi_util.c:257 msgid "Sealed-case PC" msgstr "Boîtier étanche" #: hardinfo2/dmi_util.c:258 msgid "Multi-system" msgstr "Système Multiple" #: hardinfo2/dmi_util.c:259 msgid "CompactPCI" msgstr "CompactPCI" #: hardinfo2/dmi_util.c:260 msgid "AdvancedTCA" msgstr "AdvancedTCA" #: hardinfo2/dmi_util.c:261 msgid "Blade" msgstr "Blade" #: hardinfo2/dmi_util.c:262 msgid "Blade Enclosing" msgstr "Blade Enclosing" #: hardinfo2/dmi_util.c:263 msgid "Tablet" msgstr "Tablette" #: hardinfo2/dmi_util.c:264 msgid "Convertible" msgstr "Convertible" #: hardinfo2/dmi_util.c:265 msgid "Detachable" msgstr "Detachable" #: hardinfo2/dmi_util.c:266 msgid "IoT Gateway" msgstr "Iot Passerelle" #: hardinfo2/dmi_util.c:267 msgid "Embedded PC" msgstr "PC embarqué" #: hardinfo2/dmi_util.c:268 msgid "Mini PC" msgstr "Mini PC" #: hardinfo2/dmi_util.c:269 msgid "Stick PC" msgstr "Stick PC" #: hardinfo2/dt_util.c:1175 msgid "phandle Map" msgstr "Map Descriptif" #: hardinfo2/dt_util.c:1176 msgid "Alias Map" msgstr "Map Alias" #: hardinfo2/dt_util.c:1177 msgid "Symbol Map" msgstr "Symbol Map" #. !/ %d will be latest year of copyright #: hardinfo2/hardinfo.c:104 #, c-format msgid "" "Copyright (C) 2003-2023 L. A. F. Pereira. 2024-%d Hardinfo2 Project.\n" "\n" msgstr "" #: hardinfo2/hardinfo.c:106 #, c-format msgid "" "Compile-time options:\n" " Release version: %s (%s)\n" " LibSoup version: %s\n" " Data : %s\n" " Library : %s\n" " Locale : %s\n" " Compiled for : %s\n" msgstr "" #: hardinfo2/hardinfo.c:114 msgid "3.0" msgstr "" #: hardinfo2/hardinfo.c:149 #, c-format msgid "Unknown benchmark ``%s''\n" msgstr "" #: hardinfo2/hardinfo.c:188 msgid "Don't know what to do. Exiting." msgstr "Que faire. Sortir." #: hardinfo2/usb_util.c:293 modules/devices/devicetree.c:90 #: modules/devices/devicetree.c:91 modules/devices/monitors.c:411 #: modules/devices/storage.c:306 modules/devices/storage.c:328 msgid "(None)" msgstr "(Aucun)" #: hardinfo2/util.c:100 modules/computer/uptime.c:54 #, c-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d jour" msgstr[1] "%d jours" #: hardinfo2/util.c:101 modules/computer/uptime.c:55 #, c-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d heure" msgstr[1] "%d heures" #: hardinfo2/util.c:102 modules/computer/uptime.c:56 #, c-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d minute" msgstr[1] "%d minutes" #: hardinfo2/util.c:103 #, c-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d seconde" msgstr[1] "%d secondes" #: hardinfo2/util.c:124 #, c-format msgid "%.1f B" msgstr "%.1f B" #: hardinfo2/util.c:126 #, c-format msgid "%.1f KiB" msgstr "%.1f KiB" #: hardinfo2/util.c:128 #, c-format msgid "%.1f MiB" msgstr "%.1f MiB" #: hardinfo2/util.c:130 #, c-format msgid "%.1f GiB" msgstr "%.1f GiB" #: hardinfo2/util.c:132 #, c-format msgid "%.1f TiB" msgstr "%.1f TiB" #: hardinfo2/util.c:134 #, c-format msgid "%.1f PiB" msgstr "%.1f PiB" #: hardinfo2/util.c:283 msgid "Error" msgstr "Erreur" #: hardinfo2/util.c:283 hardinfo2/util.c:299 msgid "Warning" msgstr "Attention" #: hardinfo2/util.c:298 msgid "Fatal Error" msgstr "Erreur Fatale" #: hardinfo2/util.c:325 msgid "do not print status messages to standard output" msgstr "" #: hardinfo2/util.c:331 msgid "creates a report and prints to standard output" msgstr "créer un rapport et imprimer sur la sortie standard" #: hardinfo2/util.c:337 msgid "chooses a report format ([text], html)" msgstr "Choisir format du rapport ([text], html)" #: hardinfo2/util.c:343 msgid "run single benchmark eg. -b 'FPU FFT' (Default all Benchmarks runs)" msgstr "" #: hardinfo2/util.c:349 msgid "" "user note attached to benchmark results. (updating/synchronize with server)" msgstr "" #: hardinfo2/util.c:355 msgid "benchmark result format ([short], conf, shell)" msgstr "Format Résultat du benchmark ([court], conf, shell)" #: hardinfo2/util.c:361 msgid "" "maximum number of benchmark results to include (-1 for no limit, default is " "50)" msgstr "Nombre max de benchmark à inclure (-1 aucune limite, defaut est 50)" #: hardinfo2/util.c:367 msgid "shows program version and quit" msgstr "Affiche la version du programme et quitter" #: hardinfo2/util.c:373 msgid "do not run benchmarks" msgstr "Ne pas activer de Benchmark" #: hardinfo2/util.c:379 msgid "show all details" msgstr "Voir tous les détails" #: hardinfo2/util.c:384 msgid "- System Information and Benchmark" msgstr "" #: hardinfo2/util.c:394 #, c-format msgid "" "Unrecognized arguments.\n" "Try ``%s --help'' for more information.\n" msgstr "" "commandes inconnues.\n" "Essayer ``%s --help'' pour plus d'informations.\n" #: hardinfo2/util.c:869 #, c-format msgid "Scanning: %s..." msgstr "Scanne: %s..." #: hardinfo2/util.c:879 shell/shell.c:303 shell/shell.c:925 shell/shell.c:2163 msgid "Done." msgstr "Réalisé." #: hardinfo2/vendor.c:213 msgid "Update vendor list" msgstr "" #: hardinfo2/vendor.c:218 msgid "Check Update Version" msgstr "" #: hardinfo2/vendor.c:391 modules/computer.c:630 modules/computer.c:829 #: modules/computer/os.c:196 modules/computer/os.c:378 #: modules/computer/os.c:413 modules/computer/os.c:741 #: modules/computer/os.c:802 modules/devices.c:464 modules/devices.c:614 #: modules/devices/firmware.c:149 modules/devices/printers.c:106 #: modules/devices/printers.c:113 modules/devices/printers.c:123 #: modules/devices/printers.c:138 modules/devices/printers.c:147 #: modules/devices/printers.c:256 modules/devices/spd-decode.c:364 #: modules/devices/usb.c:149 msgid "Unknown" msgstr "Inconnu" #: shell/callbacks.c:457 shell/shell.c:522 msgid "System Information and Benchmark" msgstr "" #: shell/callbacks.c:462 msgid "" "HardInfo2 is free software; you can redistribute it and/or modify it under " "the terms of the GNU General Public License as published by the Free " "Software Foundation, version 2 or later.\n" "\n" "This program is distributed in the hope that it will be useful, but WITHOUT " "ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " "FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " "more details.\n" "\n" "You should have received a copy of the GNU General Public License along with " "this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin St, Fifth Floor, Boston, MA 02110-1301 USA" msgstr "" #: shell/menu.c:43 msgid "_Information" msgstr "_Information" #: shell/menu.c:44 msgid "_View" msgstr "_Voir" #: shell/menu.c:46 msgid "_Theme" msgstr "" #: shell/menu.c:48 msgid "_Help" msgstr "_Aide" #: shell/menu.c:52 msgid "Generate _Report" msgstr "Générer _Rapport" #: shell/menu.c:53 msgid "Generates a report with detailed system information" msgstr "" #: shell/menu.c:57 shell/syncmanager.c:692 msgid "Synchronize" msgstr "" #: shell/menu.c:58 msgid "Send benchmark results and receive updated data from the network" msgstr "" #: shell/menu.c:73 msgid "_Refresh" msgstr "_Rafraichir" #: shell/menu.c:78 msgid "_Open HardInfo2 Web Site" msgstr "_HardInfo2 Site Web" #: shell/menu.c:83 msgid "_Report bug" msgstr "_Rapporter un bug" #: shell/menu.c:88 msgid "_About HardInfo2" msgstr "_A Propos de HardInfo2" #: shell/menu.c:89 msgid "Displays program version information" msgstr "Affiche les informations de version du programme" #: shell/menu.c:93 msgid "_Quit" msgstr "_Quitter" #: shell/menu.c:100 msgid "_Side Pane" msgstr "_Volet latéral" #: shell/menu.c:101 msgid "Toggles side pane visibility" msgstr "Basculer visibilité du panneau latéral " #: shell/menu.c:104 msgid "_Toolbar" msgstr "_Barre d'outils" #: shell/menu.c:108 msgid "Synchronize on startup" msgstr "" #: shell/menu.c:113 msgid "Disable Theme" msgstr "" #: shell/menu.c:117 msgid "Theme Motherboard" msgstr "" #: shell/menu.c:121 msgid "Theme Graffiti" msgstr "" #: shell/menu.c:125 msgid "Theme Anime PC" msgstr "" #: shell/menu.c:129 msgid "Theme Tux Star" msgstr "" #: shell/menu.c:133 msgid "Theme PixArt" msgstr "" #: shell/menu.c:137 msgid "Theme Silicon" msgstr "" #: shell/report.c:772 shell/report.c:780 msgid "Save File" msgstr "Sauvegarder le fichier" #: shell/report.c:775 shell/report.c:1252 shell/syncmanager.c:780 msgid "_Cancel" msgstr "Annuler" #: shell/report.c:777 msgid "_Save" msgstr "_Sauvegarder" #: shell/report.c:952 msgid "Cannot create ReportContext. Programming bug?" msgstr "Impossible de créer un rapport général. Bug?" #: shell/report.c:972 msgid "Open the report with your web browser?" msgstr "Ouvrez le rapport dans votre navigateur Web?" #: shell/report.c:975 msgid "_No" msgstr "_Non" #: shell/report.c:976 msgid "_Open" msgstr "_Ouvrir" #: shell/report.c:1007 msgid "Generating report..." msgstr "Création du rapport..." #: shell/report.c:1017 msgid "Report saved." msgstr "Rapport sauvegardé" #: shell/report.c:1019 msgid "Error while creating the report." msgstr "Erreur lors de la création du rapport." #: shell/report.c:1121 msgid "Generate Report" msgstr "Réalisation du Rapport" #: shell/report.c:1146 msgid "" "Generate Report\n" "Please choose the information that you wish to view in your report:" msgstr "" " Générer un rapport \n" " Choisissez les informations que vous souhaitez afficher dans votre rapport:" #: shell/report.c:1218 msgid "Select _None" msgstr "Désélectionner _Tout" #: shell/report.c:1229 msgid "Select _All" msgstr "Sélectionner _Tout" #: shell/report.c:1262 msgid "_Generate" msgstr "_Création" #: shell/shell.c:517 #, c-format msgid "%s - System Information and Benchmark" msgstr "" #: shell/shell.c:910 msgid "Loading modules..." msgstr "Chargement des modules..." #: shell/shell.c:1681 msgid "URL" msgstr "" #: shell/shell.c:1688 msgid "Support URL" msgstr "" #: shell/shell.c:1699 msgid "Wikipedia" msgstr "" #: shell/shell.c:2033 #, c-format msgid "%s → Summary" msgstr "%s → Résumé" #: shell/shell.c:2139 msgid "Updating..." msgstr "Mise à jour..." #: shell/syncmanager.c:80 msgid "" "Synchronize with Central Database\n" "The following information may be synchronized\n" "with the HardInfo2 central database." msgstr "" "Synchroniser avec la base de données centrale\n" "Les informations suivantes seront synchronisées\n" "avec la base de données de HardInfo2." #: shell/syncmanager.c:84 msgid "" "Synchronizing\n" "This may take some time." msgstr "" "Synchronisation\n" "Cela peut prendre un certain temps." #: shell/syncmanager.c:546 msgid "(canceled)" msgstr "(annuler)" #: shell/syncmanager.c:562 msgid "(failed)" msgstr "(échec)" #: shell/syncmanager.c:658 modules/benchmark.c:932 msgid "Send benchmark results" msgstr "Envoyer vos résultats de benchmark" #: shell/syncmanager.c:767 msgid "Privacy Policy" msgstr "" #: shell/syncmanager.c:789 msgid "_Synchronize" msgstr "_Synchronisation" #: shell/syncmanager.c:838 #, c-format msgid "Synchronizing: %s" msgstr "" #: modules/benchmark/benches.c:136 msgid "CPU Blowfish (Single-thread)" msgstr "CPU Blowfish (Single-thread)" #: modules/benchmark/benches.c:144 msgid "CPU Blowfish (Multi-thread)" msgstr "CPU Blowfish (Multi-thread)" #: modules/benchmark/benches.c:152 msgid "CPU Blowfish (Multi-core)" msgstr "CPU Blowfish (Multi-core)" #: modules/benchmark/benches.c:160 msgid "CPU Zlib" msgstr "Test CPU Zlib" #: modules/benchmark/benches.c:168 msgid "CPU CryptoHash" msgstr "Test CPU CryptoHash" #: modules/benchmark/benches.c:176 msgid "CPU Fibonacci" msgstr "Test CPU Fibonacci " #: modules/benchmark/benches.c:184 msgid "CPU N-Queens" msgstr "Test CPU N-Queens" #: modules/benchmark/benches.c:192 msgid "FPU FFT" msgstr "Test FPU FFT" #: modules/benchmark/benches.c:200 msgid "FPU Raytracing (Single-thread)" msgstr "" #: modules/benchmark/benches.c:208 msgid "Internal Network Speed" msgstr "" #: modules/benchmark/benches.c:216 msgid "SysBench CPU (Single-thread)" msgstr "SysBench CPU (Single-thread)" #: modules/benchmark/benches.c:224 msgid "SysBench CPU (Multi-thread)" msgstr "SysBench CPU (Multi-thread)" #: modules/benchmark/benches.c:232 msgid "SysBench CPU (Four threads)" msgstr "SysBench CPU (Four threads)" #: modules/benchmark/benches.c:240 msgid "SysBench Memory (Single-thread)" msgstr "SysBench Memory (Single-thread)" #: modules/benchmark/benches.c:248 msgid "SysBench Memory (Two threads)" msgstr "SysBench Memory (Two threads)" #: modules/benchmark/benches.c:256 msgid "SysBench Memory (Quad threads)" msgstr "" #: modules/benchmark/benches.c:264 msgid "SysBench Memory (Multi-thread)" msgstr "" #: modules/benchmark/benches.c:272 msgid "GPU Drawing" msgstr "Test GPU Drawing" #: modules/benchmark/benches.c:281 msgid "GPU OpenGL Drawing" msgstr "" #: modules/benchmark/benches.c:290 msgid "Storage R/W Speed" msgstr "" #: modules/benchmark/benches.c:304 msgid "" "Alexey Kopytov's sysbench is required.\n" "Results in events/second. Higher is better." msgstr "" "Alexey Kopytov's sysbench est nécessaire.\n" "Resultats en événements/second. Plus c'est élevé, meilleur est le résultat." #: modules/benchmark/benches.c:310 msgid "" "Alexey Kopytov's sysbench is required.\n" "Results in MiB/second. Higher is better." msgstr "" "Alexey Kopytov's sysbench est nécessaire.\n" "Resultats en MiB/second. Plus c'est élevé, meilleur est le résultat." #: modules/benchmark/benches.c:313 msgid "" "iperf3 is required.\n" "Results in Gbits/s. Higher is better." msgstr "" #: modules/benchmark/benches.c:324 msgid "Results in HIMarks. Higher is better." msgstr "Résultats en HIMarks. Plus c'est élevé, meilleur est le résultat." #: modules/benchmark/benches.c:326 msgid "" "Results in HIMarks. Higher is better.\n" "Many Desktop Environments only uses software." msgstr "" #: modules/benchmark/benches.c:329 msgid "Results in MB/s. Higher is better." msgstr "" #: modules/benchmark/benches.c:332 msgid "Results in FPS. Higher is better." msgstr "" #. !/ Used for an unknown value. Having it in only one place cleans up the .po #. * line references #: modules/benchmark/bench_results.c:34 modules/computer.c:41 #: modules/computer/display.c:40 modules/computer/display.c:57 #: modules/computer/os.c:400 modules/computer/os.c:457 modules/devices.c:596 #: modules/devices/dmi_memory.c:699 modules/devices/dmi_memory.c:835 #: modules/devices/gpu.c:40 modules/devices/gpu.c:58 modules/devices/gpu.c:122 #: modules/devices/gpu.c:130 modules/devices/gpu.c:210 #: modules/devices/gpu.c:211 modules/devices/gpu.c:230 #: modules/devices/inputdevices.c:51 modules/devices/monitors.c:28 #: modules/devices/monitors.c:29 modules/devices/monitors.c:155 #: modules/devices/monitors.c:164 modules/devices/pci.c:25 #: modules/devices/pci.c:149 modules/devices/pci.c:150 #: modules/devices/spd-decode.c:358 modules/devices/spd-decode.c:359 #: modules/devices/spd-decode.c:362 modules/devices/spd-decode.c:363 #: modules/devices/spd-decode.c:584 modules/devices/spd-decode.c:899 #: modules/devices/spd-decode.c:900 modules/devices/spd-decode.c:1111 #: modules/devices/spd-decode.c:1350 modules/devices/storage.c:27 #: modules/devices/storage.c:307 modules/devices/storage.c:336 #: modules/devices/storage.c:431 modules/devices/usb.c:29 #: modules/network/net.c:460 includes/cpu_util.h:11 includes/spd-decode.h:24 #: includes/spd-decode.h:25 msgid "(Unknown)" msgstr "(Inconnu)" #: modules/benchmark/bench_results.c:261 modules/devices/alpha/processor.c:90 #: modules/devices/arm/processor.c:289 modules/devices/arm/processor.c:302 #: modules/devices/arm/processor.c:344 modules/devices/arm/processor.c:509 #: modules/devices.c:430 modules/devices.c:438 modules/devices.c:466 #: modules/devices/e2k/processor.c:363 modules/devices/e2k/processor.c:400 #: modules/devices/gpu.c:125 modules/devices/gpu.c:127 #: modules/devices/gpu.c:133 modules/devices/gpu.c:135 #: modules/devices/gpu.c:233 modules/devices/gpu.c:235 #: modules/devices/ia64/processor.c:167 modules/devices/ia64/processor.c:196 #: modules/devices/loongarch64/processor.c:98 #: modules/devices/m68k/processor.c:87 modules/devices/mips/processor.c:77 #: modules/devices/parisc/processor.c:158 #: modules/devices/parisc/processor.c:191 modules/devices/ppc/processor.c:160 #: modules/devices/ppc/processor.c:187 modules/devices/riscv/processor.c:246 #: modules/devices/riscv/processor.c:276 modules/devices/s390/processor.c:160 #: modules/devices/sh/processor.c:87 modules/devices/sh/processor.c:88 #: modules/devices/sh/processor.c:89 modules/devices/x86/processor.c:317 #: modules/devices/x86/processor.c:330 modules/devices/x86/processor.c:658 #: modules/devices/x86/processor.c:790 msgid "MHz" msgstr "MHz" #: modules/benchmark/bench_results.c:293 modules/devices.c:177 #, c-format msgid "%d physical processor" msgid_plural "%d physical processors" msgstr[0] "%d processeur physique" msgstr[1] "%d processeurs physiques" #: modules/benchmark/bench_results.c:294 modules/devices.c:178 #, c-format msgid "%d core" msgid_plural "%d cores" msgstr[0] "%d coeur" msgstr[1] "%d coeurs" #: modules/benchmark/bench_results.c:295 modules/devices.c:179 #, c-format msgid "%d thread" msgid_plural "%d threads" msgstr[0] "" msgstr[1] "" #: modules/benchmark/bench_results.c:300 modules/devices.c:181 #, c-format msgid "%d NUMA node" msgid_plural "%d NUMA nodes" msgstr[0] "" msgstr[1] "" #. !/NP procs; NC cores across NN nodes; NT threads #: modules/benchmark/bench_results.c:304 #, c-format msgid "%s; %s across %s; %s" msgstr "" #. !/NP procs; NC cores; NT threads #: modules/benchmark/bench_results.c:309 #, c-format msgid "%s; %s; %s" msgstr "" #: modules/benchmark/bench_results.c:383 modules/benchmark/bench_results.c:508 #: modules/computer.c:1041 modules/devices/dmi_memory.c:639 #: modules/devices/dmi_memory.c:649 modules/devices/dmi_memory.c:703 #: modules/devices/dmi_memory.c:791 modules/devices/dmi_memory.c:837 #: modules/devices/dmi_memory.c:920 modules/devices/spd-decode.c:1354 #: modules/network/net.c:416 modules/network/net.c:440 #: modules/network/net.c:441 msgid "MiB" msgstr "" #: modules/benchmark/bench_results.c:388 modules/benchmark/bench_results.c:507 msgid "kiB" msgstr "kiB" #: modules/benchmark/bench_results.c:396 modules/benchmark/bench_results.c:452 #, c-format msgid "%d-bit" msgstr "%d-bit" #: modules/benchmark/bench_results.c:417 modules/benchmark/bench_results.c:482 msgid "Benchmark Result" msgstr "Résultats du Benchmark" #: modules/benchmark/bench_results.c:417 modules/benchmark/bench_results.c:482 msgid "Threads" msgstr "Threads" #: modules/benchmark/bench_results.c:418 modules/benchmark/bench_results.c:484 msgid "Elapsed Time" msgstr "Temps écoulé" #: modules/benchmark/bench_results.c:418 modules/benchmark/bench_results.c:484 msgid "seconds" msgstr "secondes" #: modules/benchmark/bench_results.c:419 modules/computer/languages.c:101 #: modules/devices/arm/processor.c:354 modules/devices/e2k/processor.c:362 #: modules/devices/gpu.c:203 modules/devices/ia64/processor.c:166 #: modules/devices/loongarch64/processor.c:97 modules/devices/pci.c:146 #: modules/devices/ppc/processor.c:159 msgid "Revision" msgstr "Révision" #: modules/benchmark/bench_results.c:420 modules/benchmark/bench_results.c:485 msgid "Extra Information" msgstr "Informations supplémentaires" #: modules/benchmark/bench_results.c:422 modules/benchmark/bench_results.c:487 msgid "Note" msgstr "Notes" #: modules/benchmark/bench_results.c:423 modules/benchmark/bench_results.c:488 msgid "" "This result is from an old version of HardInfo. Results might not be " "comparable to current version. Some details are missing." msgstr "" #: modules/benchmark/bench_results.c:427 modules/benchmark/bench_results.c:492 #: modules/devices/devicetree/pmac_data.c:81 modules/devices/sh/processor.c:85 msgid "Machine" msgstr "Machine" #: modules/benchmark/bench_results.c:428 modules/benchmark/bench_results.c:492 #: modules/devices/devicetree.c:207 modules/devices/dmi.c:48 msgid "Board" msgstr "Carte" #: modules/benchmark/bench_results.c:429 modules/benchmark/bench_results.c:494 #: modules/computer.c:583 msgid "Machine Type" msgstr "Type de machine" #: modules/benchmark/bench_results.c:430 modules/benchmark/bench_results.c:497 msgid "CPU Name" msgstr "Nom du CPU" #: modules/benchmark/bench_results.c:431 modules/benchmark/bench_results.c:498 msgid "CPU Description" msgstr "Description du CPU" #: modules/benchmark/bench_results.c:432 modules/benchmark/bench_results.c:500 #: modules/benchmark.c:601 msgid "CPU Config" msgstr "Configuration du CPU" #: modules/benchmark/bench_results.c:433 modules/benchmark/bench_results.c:500 msgid "Threads Available" msgstr "Sujets disponibles" #: modules/benchmark/bench_results.c:434 modules/benchmark/bench_results.c:501 #: modules/benchmark.c:579 msgid "GPU" msgstr "GPU" #: modules/benchmark/bench_results.c:435 modules/benchmark/bench_results.c:503 #: modules/computer.c:595 msgid "OpenGL Renderer" msgstr "OpenGL Rendu" #: modules/benchmark/bench_results.c:436 modules/benchmark/bench_results.c:505 #: modules/benchmark.c:590 modules/computer.c:1145 modules/devices.c:109 msgid "Storage" msgstr "Stockage" #: modules/benchmark/bench_results.c:437 modules/benchmark/bench_results.c:507 #: modules/computer.c:140 modules/computer.c:582 modules/computer.c:1144 #: modules/devices/gpu.c:206 msgid "Memory" msgstr "Mémoire" #: modules/benchmark/bench_results.c:438 modules/benchmark/bench_results.c:509 msgid "Pointer Size" msgstr "Taille du Pointeur" #: modules/benchmark/bench_results.c:482 msgid "Benchmark" msgstr "Outil d'évaluation" #: modules/benchmark/bench_results.c:483 modules/devices/dmi_memory.c:859 #: modules/devices/firmware.c:245 modules/devices/monitors.c:495 #: modules/devices/x86/processor.c:692 msgid "Result" msgstr "Résultat" #: modules/benchmark/bench_results.c:495 msgid "Linux Kernel" msgstr "" #: modules/benchmark/bench_results.c:496 msgid "Linux OS" msgstr "" #: modules/benchmark/bench_results.c:507 msgid "Physical Memory" msgstr "" #: modules/benchmark/bench_results.c:511 msgid "Handles" msgstr "identifiants" #: modules/benchmark/bench_results.c:511 msgid "mid" msgstr "mid" #: modules/benchmark/bench_results.c:512 msgid "cfg_val" msgstr "cfg_val" #: modules/benchmark.c:352 msgid "This Machine" msgstr "" #: modules/benchmark.c:578 modules/benchmark.c:589 modules/benchmark.c:601 msgid "Results" msgstr "Résultats" #: modules/benchmark.c:602 modules/devices/sparc/processor.c:75 msgid "CPU" msgstr "CPU" #: modules/benchmark.c:678 #, c-format msgid "Benchmarking: %s." msgstr "Benchmarking: %s." #: modules/benchmark.c:685 msgid "Stop" msgstr "" #: modules/benchmark.c:697 msgid "" "Please do not move your mouse\n" "or press any keys." msgstr "" #: modules/benchmark.c:767 msgid "Benchmarks" msgstr "Benchmarks" #: modules/benchmark.c:777 msgid "Perform tasks and compare with other systems" msgstr "Effectuer des tâches et les comparer avec d'autres systèmes" #: modules/benchmark.c:938 msgid "Receive benchmark results" msgstr "Recevoir les résultats de benchmark" #: modules/computer/alsa.c:26 modules/computer.c:599 msgid "Audio Devices" msgstr "Matériels Audio" #: modules/computer/alsa.c:34 msgid "Audio Adapter" msgstr "Adapteur Audio" #: modules/computer.c:96 modules/devices/firmware.c:74 msgid "Summary" msgstr "Résumé" #: modules/computer.c:97 modules/computer.c:585 modules/computer.c:1143 msgid "Operating System" msgstr "Systeme d'exploitation" #: modules/computer.c:98 msgid "Security" msgstr "Sécurité" #: modules/computer.c:99 modules/devices/gpu.c:211 modules/devices/pci.c:150 msgid "Kernel Modules" msgstr "Modules du kernel" #: modules/computer.c:100 modules/computer.c:741 msgid "Boots" msgstr "Boots" #: modules/computer.c:101 msgid "Languages" msgstr "Langues" #: modules/computer.c:102 msgid "Memory Usage" msgstr "Usage de Mémoire" #: modules/computer.c:103 msgid "Filesystems" msgstr "Fichiers Système" #: modules/computer.c:104 modules/computer.c:590 msgid "Display" msgstr "Affichage" #: modules/computer.c:105 modules/computer/environment.c:37 msgid "Environment Variables" msgstr "Variables d'environnement" #: modules/computer.c:107 modules/computer.c:109 msgid "Development" msgstr "Developpement" #: modules/computer.c:111 modules/computer.c:884 msgid "Users" msgstr "Utilisateurs" #: modules/computer.c:112 msgid "Groups" msgstr "Groupes" #: modules/computer.c:142 #, c-format msgid "%dMB (%dMB used)" msgstr "%dMB (%dMB utilisées)" #: modules/computer.c:144 modules/computer.c:646 msgid "Uptime" msgstr "durée de fonctionnent" #: modules/computer.c:146 modules/computer.c:587 msgid "Date/Time" msgstr "Date/Heure" #: modules/computer.c:151 modules/computer.c:647 msgid "Load Average" msgstr "Nombre de chargements" #: modules/computer.c:266 msgid "Scripting Languages" msgstr "Langage de script" #: modules/computer.c:267 msgid "Gambas3 (gbr3)" msgstr "Gambas3 (gbr3)" #: modules/computer.c:268 msgid "Python (default)" msgstr "Python (default)" #: modules/computer.c:269 msgid "Python2" msgstr "Python2" #: modules/computer.c:270 msgid "Python3" msgstr "Python3" #: modules/computer.c:271 msgid "Perl" msgstr "Perl" #: modules/computer.c:272 msgid "Rakudo (Perl6)" msgstr "" #: modules/computer.c:273 msgid "PHP" msgstr "PHP" #: modules/computer.c:274 msgid "Ruby" msgstr "Ruby" #: modules/computer.c:275 msgid "Bash" msgstr "Bash" #: modules/computer.c:276 msgid "JavaScript (Node.js)" msgstr "JavaScript (Node.js)" #: modules/computer.c:277 msgid "awk" msgstr "awk" #: modules/computer.c:278 msgid "Compilers" msgstr "Compilateurs" #: modules/computer.c:279 msgid "C (GCC)" msgstr "C (GCC)" #: modules/computer.c:280 msgid "C (Clang)" msgstr "C (Clang)" #: modules/computer.c:281 msgid "D (dmd)" msgstr "D (dmd)" #: modules/computer.c:282 msgid "Gambas3 (gbc3)" msgstr "Gambas3 (gbc3)" #: modules/computer.c:283 msgid "Java" msgstr "Java" #: modules/computer.c:284 msgid ".NET" msgstr "" #: modules/computer.c:285 msgid "Vala" msgstr "Vala" #: modules/computer.c:286 msgid "Haskell (GHC)" msgstr "Haskell (GHC)" #: modules/computer.c:287 msgid "FreePascal" msgstr "FreePascal" #: modules/computer.c:288 msgid "Go" msgstr "Go" #: modules/computer.c:289 msgid "Rust" msgstr "Rust" #: modules/computer.c:290 msgid "Tools" msgstr "Outils" #: modules/computer.c:291 msgid "make" msgstr "make" #: modules/computer.c:292 msgid "ninja" msgstr "ninja" #: modules/computer.c:293 msgid "GDB" msgstr "" #: modules/computer.c:294 msgid "LLDB" msgstr "" #: modules/computer.c:295 msgid "strace" msgstr "" #: modules/computer.c:296 msgid "valgrind" msgstr "" #: modules/computer.c:297 msgid "QMake" msgstr "" #: modules/computer.c:298 msgid "CMake" msgstr "" #: modules/computer.c:299 msgid "Gambas3 IDE" msgstr "" #: modules/computer.c:300 msgid "Radare2" msgstr "" #: modules/computer.c:301 msgid "ltrace" msgstr "" #: modules/computer.c:302 msgid "Powershell" msgstr "" #: modules/computer.c:343 msgid "Not found" msgstr "Non trouvé" #: modules/computer.c:348 #, c-format msgid "Detecting version: %s" msgstr "Version détectée: %s" #: modules/computer.c:366 msgid "Program" msgstr "Programme" #: modules/computer.c:366 modules/computer.c:629 modules/computer.c:631 #: modules/computer.c:807 modules/computer/modules.c:372 #: modules/devices/dmi.c:41 modules/devices/dmi.c:47 modules/devices/dmi.c:51 #: modules/devices/dmi.c:57 modules/devices/firmware.c:75 #: modules/devices/inputdevices.c:146 modules/devices/monitors.c:409 msgid "Version" msgstr "Version" #: modules/computer.c:385 msgid "Field" msgstr "Champ" #: modules/computer.c:385 modules/computer.c:730 modules/computer/modules.c:370 #: modules/computer/modules.c:371 modules/devices/arm/processor.c:479 msgid "Description" msgstr "" #: modules/computer.c:385 modules/devices.c:841 msgid "Value" msgstr "Valeur" #: modules/computer.c:402 modules/computer.c:404 msgid "Single-board computer" msgstr "Ordinateur monocarte" #: modules/computer.c:455 modules/computer.c:457 msgid "Unknown physical machine type" msgstr "Type de machine inconnu" #: modules/computer.c:479 modules/computer.c:480 modules/computer.c:527 #: modules/computer.c:529 msgid "Virtual (VMware)" msgstr "Virtualisation (VMware)" #: modules/computer.c:482 modules/computer.c:483 modules/computer.c:484 #: modules/computer.c:485 msgid "Virtual (QEMU)" msgstr "Virtualisation (QEMU)" #: modules/computer.c:487 modules/computer.c:488 msgid "Virtual (Unknown)" msgstr "Virtualisation (Inconnu)" #: modules/computer.c:490 modules/computer.c:491 modules/computer.c:492 #: modules/computer.c:520 modules/computer.c:522 msgid "Virtual (VirtualBox)" msgstr "Virtualisation (VirtualBox)" #: modules/computer.c:494 modules/computer.c:495 modules/computer.c:496 #: modules/computer.c:511 modules/computer.c:513 msgid "Virtual (Xen)" msgstr "Virtualisation (Xen" #: modules/computer.c:498 msgid "Virtual (hypervisor present)" msgstr "Virtualisation (hypervisor present) " #: modules/computer.c:579 modules/computer.c:1097 msgid "Computer" msgstr "Ordinateur" #: modules/computer.c:586 modules/computer.c:640 msgid "User Name" msgstr "Utilisateur" #: modules/computer.c:591 msgid "Resolution" msgstr "Résolution" #: modules/computer.c:591 modules/computer.c:812 #, c-format msgid "%dx%d pixels" msgstr "%dx%d pixels" #: modules/computer.c:593 msgid "Display Adapter" msgstr "" #: modules/computer.c:596 msgid "Session Display Server" msgstr "Serveur d'affichage de session" #: modules/computer.c:601 modules/devices.c:108 msgid "Input Devices" msgstr "Périphériques d'entrée" #: modules/computer.c:629 msgid "Kernel" msgstr "" #: modules/computer.c:630 msgid "Command Line" msgstr "" #: modules/computer.c:632 msgid "C Library" msgstr "" #: modules/computer.c:633 msgid "Distribution" msgstr "" #: modules/computer.c:638 msgid "Current Session" msgstr "Session en cours" #: modules/computer.c:639 msgid "Computer Name" msgstr "Nom de l'Ordinateur" #: modules/computer.c:641 modules/computer/languages.c:99 msgid "Language" msgstr "Langue" #: modules/computer.c:642 modules/computer/users.c:53 msgid "Home Directory" msgstr "Dossier Home" #: modules/computer.c:643 msgid "Desktop Environment" msgstr "Environnement de bureau" #: modules/computer.c:646 msgid "Misc" msgstr "Divers" #: modules/computer.c:660 msgid "HardInfo2" msgstr "" #: modules/computer.c:661 msgid "HardInfo2 running as" msgstr "" #: modules/computer.c:662 msgid "Superuser" msgstr "" #: modules/computer.c:662 msgid "User" msgstr "" #: modules/computer.c:666 msgid "Health" msgstr "" #: modules/computer.c:668 msgid "Available entropy in /dev/random" msgstr "Entropie disponible dans /dev/random" #: modules/computer.c:672 msgid "Hardening Features" msgstr "" #: modules/computer.c:673 msgid "ASLR" msgstr "" #: modules/computer.c:674 msgid "dmesg" msgstr "" #: modules/computer.c:678 msgid "Linux Security Modules" msgstr "" #: modules/computer.c:679 msgid "Modules available" msgstr "" #: modules/computer.c:680 msgid "SELinux status" msgstr "" #: modules/computer.c:686 msgid "CPU Vulnerabilities" msgstr "" #: modules/computer.c:727 msgid "Loaded Modules" msgstr "Modules chargés" #: modules/computer.c:729 modules/computer.c:757 modules/computer.c:897 #: modules/computer/languages.c:95 modules/computer/modules.c:370 #: modules/devices/arm/processor.c:478 modules/devices/dmi.c:38 #: modules/devices/dmi.c:49 modules/devices/e2k/processor.c:358 #: modules/devices/gpu.c:301 modules/devices/ia64/processor.c:160 #: modules/devices/inputdevices.c:141 modules/devices/monitors.c:403 #: modules/devices/monitors.c:505 modules/devices/sh/processor.c:84 #: modules/devices/x86/processor.c:750 modules/network.c:333 msgid "Name" msgstr "Nom" #: modules/computer.c:743 msgid "Date & Time" msgstr "Date et Heure" #: modules/computer.c:744 msgid "Kernel Version" msgstr "" #: modules/computer.c:754 msgid "Available Languages" msgstr "Langues disponibles" #: modules/computer.c:756 msgid "Language Code" msgstr "Langage Code" #: modules/computer.c:768 msgid "Mounted File Systems" msgstr "Systèmes de fichiers montés" #: modules/computer.c:770 modules/computer/filesystem.c:89 msgid "Mount Point" msgstr "Point de montage" #: modules/computer.c:771 msgid "Usage" msgstr "" #: modules/computer.c:772 modules/devices.c:865 modules/devices.c:879 #: modules/devices/e2k/processor.c:416 modules/devices/gpu.c:85 #: modules/devices/gpu.c:93 modules/devices/gpu.c:293 modules/devices/pci.c:102 #: modules/devices/pci.c:110 modules/devices/pci.c:154 #: modules/devices/storage.c:48 modules/devices/storage.c:57 #: modules/devices/usb.c:172 modules/devices/usb.c:184 #: modules/devices/x86/processor.c:811 msgid "Device" msgstr "Périphérique" #: modules/computer.c:795 msgid "Session" msgstr "" #: modules/computer.c:796 modules/devices.c:842 modules/devices.c:879 #: modules/devices/dmi.c:56 modules/devices/dmi_memory.c:729 #: modules/devices/inputdevices.c:142 modules/devices/spd-decode.c:1377 #: modules/devices/x86/processor.c:715 msgid "Type" msgstr "" #: modules/computer.c:799 msgid "Wayland" msgstr "" #: modules/computer.c:800 modules/computer.c:805 msgid "Current Display Name" msgstr "Nom de l'affichage actuel" #: modules/computer.c:804 msgid "X Server" msgstr "" #: modules/computer.c:806 modules/computer.c:846 modules/computer.c:869 #: modules/devices.c:879 modules/devices/dmi.c:40 modules/devices/dmi.c:46 #: modules/devices/dmi.c:50 modules/devices/dmi.c:55 #: modules/devices/dmi_memory.c:730 modules/devices/dmi_memory.c:873 #: modules/devices/e2k/processor.c:359 modules/devices/firmware.c:75 #: modules/devices/firmware.c:167 modules/devices/firmware.c:172 #: modules/devices/firmware.c:219 modules/devices/gpu.c:84 #: modules/devices/gpu.c:92 modules/devices/gpu.c:292 #: modules/devices/ia64/processor.c:161 modules/devices/inputdevices.c:144 #: modules/devices/monitors.c:402 modules/devices/pci.c:101 #: modules/devices/pci.c:109 modules/devices/storage.c:47 #: modules/devices/storage.c:56 modules/devices/storage.c:282 #: modules/devices/storage.c:572 modules/devices/storage.c:777 #: modules/devices/usb.c:171 modules/devices/x86/processor.c:654 msgid "Vendor" msgstr "Fabricant" #: modules/computer.c:808 msgid "Release Number" msgstr "Numéro de version" #: modules/computer.c:816 msgid "Screens" msgstr "Ecrans" #: modules/computer.c:822 msgid "Disconnected" msgstr "Déconnecté" #: modules/computer.c:825 msgid "Connected" msgstr "Connecté" #: modules/computer.c:833 msgid "Unused" msgstr "Non utilisé" #: modules/computer.c:834 #, c-format msgid "%dx%d pixels, offset (%d, %d)" msgstr "" #: modules/computer.c:843 msgid "Outputs (XRandR)" msgstr "" #: modules/computer.c:845 msgid "OpenGL (GLX)" msgstr "" #: modules/computer.c:847 msgid "Renderer" msgstr "Moteur de rendu" #: modules/computer.c:848 msgid "Direct Rendering" msgstr "" #: modules/computer.c:849 modules/computer/modules.c:352 #: modules/computer/modules.c:353 modules/devices/inputdevices.c:153 #: modules/devices/printers.c:145 modules/devices/spd-decode.c:888 #: modules/devices/spd-decode.c:1100 msgid "Yes" msgstr "Oui" #: modules/computer.c:849 modules/computer/modules.c:352 #: modules/computer/modules.c:353 modules/devices/printers.c:145 #: modules/devices/spd-decode.c:886 modules/devices/spd-decode.c:1097 msgid "No" msgstr "Non" #: modules/computer.c:850 msgid "Version (Compatibility)" msgstr "Version (compatible)" #: modules/computer.c:851 msgid "Shading Language Version (Compatibility)" msgstr "Shading Language Version (Compatibilité)" #: modules/computer.c:852 msgid "Version (Core)" msgstr "Version (Coeur)" #: modules/computer.c:853 msgid "Shading Language Version (Core)" msgstr "" #: modules/computer.c:854 msgid "Version (ES)" msgstr "" #: modules/computer.c:855 msgid "Shading Language Version (ES)" msgstr "" #: modules/computer.c:856 msgid "GLX Version" msgstr "" #: modules/computer.c:864 msgid "Vulkan" msgstr "" #: modules/computer.c:865 msgid "Instance Version" msgstr "" #: modules/computer.c:867 msgid "Api Version" msgstr "" #: modules/computer.c:868 msgid "Driver Version" msgstr "" #: modules/computer.c:870 msgid "Device Type" msgstr "" #: modules/computer.c:871 msgid "Device Name" msgstr "" #: modules/computer.c:872 msgid "Driver Name" msgstr "" #: modules/computer.c:873 msgid "Driver Info" msgstr "" #: modules/computer.c:874 msgid "Conformance Version" msgstr "" #: modules/computer.c:895 msgid "Group" msgstr "" #: modules/computer.c:898 modules/computer/users.c:52 msgid "Group ID" msgstr "" #: modules/computer.c:1037 #, c-format msgid "%0.1f %s available to Linux" msgstr "" #: modules/computer.c:1039 modules/devices/dmi_memory.c:637 #: modules/devices/dmi_memory.c:647 modules/devices/dmi_memory.c:789 #: modules/devices/dmi_memory.c:918 modules/devices/spd-decode.c:1352 msgid "GiB" msgstr "" #: modules/computer.c:1043 modules/computer/memory_usage.c:73 #: modules/computer/modules.c:370 msgid "KiB" msgstr "" #: modules/computer.c:1116 modules/devices/devicetree/pmac_data.c:82 msgid "Motherboard" msgstr "Carte Mère" #: modules/computer.c:1144 msgid "Graphics" msgstr "Graphiques" #: modules/computer.c:1145 modules/devices.c:105 msgid "Printers" msgstr "Imprimantes" #: modules/computer.c:1145 msgid "Audio" msgstr "" #: modules/computer.c:1194 msgid "Gathers high-level computer information" msgstr "Collecte des informations de l'ordinateur" #: modules/computer.c:1205 msgid "lsmod is required." msgstr "" #: modules/computer.c:1213 msgid "" "X.org's xrandr utility provides additional details when " "available." msgstr "" #: modules/computer.c:1214 msgid "" "Mesa's glxinfo utility is required for OpenGL information." msgstr "" #: modules/computer.c:1215 msgid "" "Vulkan's vulkaninfo utility is required for Vulkan information." msgstr "" #: modules/computer/filesystem.c:87 msgid "Filesystem" msgstr "Système de fichiers" #: modules/computer/filesystem.c:88 msgid "Mounted As" msgstr "Monté sur" #: modules/computer/filesystem.c:88 msgid "Read-Write" msgstr "Lecture-Ecriture" #: modules/computer/filesystem.c:88 msgid "Read-Only" msgstr "Lecture seule" #: modules/computer/filesystem.c:90 modules/devices.c:865 #: modules/devices/dmi_memory.c:733 modules/devices/dmi_memory.c:766 #: modules/devices/dmi_memory.c:805 modules/devices/dmi_memory.c:872 #: modules/devices/spd-decode.c:1384 msgid "Size" msgstr "Taille" #: modules/computer/filesystem.c:91 msgid "Used" msgstr "Utilisé" #: modules/computer/filesystem.c:92 msgid "Available" msgstr "Disponible" #: modules/computer/languages.c:94 msgid "Locale Information" msgstr "Inforamtion Locale" #: modules/computer/languages.c:96 modules/devices/gpu.c:266 #: modules/devices/spd-decode.c:1373 msgid "Source" msgstr "" #: modules/computer/languages.c:97 msgid "Address" msgstr "Adresse" #: modules/computer/languages.c:98 msgid "E-mail" msgstr "" #: modules/computer/languages.c:100 msgid "Territory" msgstr "Territoire" #: modules/computer/languages.c:102 modules/devices/dmi.c:45 msgid "Date" msgstr "" #: modules/computer/languages.c:103 msgid "Codeset" msgstr "" #: modules/computer/loadavg.c:64 msgid "Couldn't obtain load average" msgstr "Impossible d'obtenir la moyenne de charge" #: modules/computer/memory_usage.c:131 msgid "Total physical memory usable by the system" msgstr "" #: modules/computer/memory_usage.c:132 msgid "Free memory which is not used for anything" msgstr "" #: modules/computer/memory_usage.c:133 msgid "Virtual memory, total swap space available" msgstr "" #: modules/computer/memory_usage.c:134 msgid "Virtual memory, remaining swap space available" msgstr "" #: modules/computer/memory_usage.c:135 msgid "Memory present within main memory and in the swapfile" msgstr "" #: modules/computer/memory_usage.c:136 msgid "HighTotal value can vary based on the type of kernel used" msgstr "" #: modules/computer/memory_usage.c:137 msgid "Amount of memory that is not directly mapped into kernel space" msgstr "" #: modules/computer/memory_usage.c:138 msgid "LowTotal value can vary based on the type of kernel used" msgstr "" #: modules/computer/memory_usage.c:139 msgid "Total and free memory directly mapped into kernel space" msgstr "" #: modules/computer/memory_usage.c:140 msgid "Available memory for allocation to any process, without swapping" msgstr "" #: modules/computer/memory_usage.c:141 msgid "Memory in buffer cache, temporary storage for raw disk blocks" msgstr "" #: modules/computer/memory_usage.c:142 msgid "Memory in the page cache (diskcache, shared memory, tmpfs and shmem)" msgstr "" #: modules/computer/memory_usage.c:143 msgid "Memory used more recently and not swapped out or reclaimed" msgstr "" #: modules/computer/memory_usage.c:144 msgid "Memory not been used recently and can be swapped out or reclaimed" msgstr "" #: modules/computer/memory_usage.c:145 msgid "Anonymous memory used more recently and not swapped out" msgstr "" #: modules/computer/memory_usage.c:146 msgid "Anonymous memory not been used and can be swapped out" msgstr "" #: modules/computer/memory_usage.c:147 msgid "Pagecache memory been used more recently and not reclaimed" msgstr "" #: modules/computer/memory_usage.c:148 msgid "Pagecache memory reclaimable without huge performance impact" msgstr "" #: modules/computer/memory_usage.c:149 msgid "Unevictable pages can't be swapped out for a variety of reasons" msgstr "" #: modules/computer/memory_usage.c:150 msgid "Pages locked to memory using the mlock() system call" msgstr "" #: modules/computer/memory_usage.c:151 msgid "Memory consumed by the zswap backend (compressed size)" msgstr "" #: modules/computer/memory_usage.c:152 msgid "Amount of anonymous memory stored in zswap (original size)" msgstr "" #: modules/computer/memory_usage.c:153 msgid "Memory waiting to be written back to disk" msgstr "" #: modules/computer/memory_usage.c:154 msgid "Memory which is actively being written back to disk" msgstr "" #: modules/computer/memory_usage.c:155 msgid "Non-file backed pages mapped into userspace page tables" msgstr "" #: modules/computer/memory_usage.c:156 msgid "Files which have been mmapped, such as libraries" msgstr "" #: modules/computer/memory_usage.c:157 msgid "Total memory used by shared memory (shmem) and tmpfs" msgstr "" #: modules/computer/memory_usage.c:158 msgid "Kernel allocations reclaimable under memory pressure" msgstr "" #: modules/computer/memory_usage.c:159 msgid "In-kernel data structures cache" msgstr "" #: modules/computer/memory_usage.c:160 msgid "Part of Slab, that might be reclaimed, such as caches" msgstr "" #: modules/computer/memory_usage.c:161 msgid "Part of Slab, that cannot be reclaimed on memory pressure" msgstr "" #: modules/computer/memory_usage.c:162 msgid "Memory consumed by the kernel stacks of all tasks" msgstr "" #: modules/computer/memory_usage.c:163 msgid "Memory consumed by userspace page tables" msgstr "" #: modules/computer/memory_usage.c:164 msgid "Memory consumed by secondary page tables" msgstr "" #: modules/computer/memory_usage.c:165 msgid "Previous counted pages which had been written to the server" msgstr "" #: modules/computer/memory_usage.c:166 msgid "Memory used for block device bounce buffers" msgstr "" #: modules/computer/memory_usage.c:167 msgid "Memory used by FUSE for temporary writeback buffers" msgstr "" #: modules/computer/memory_usage.c:168 msgid "Total memory currently available to be allocated on the system" msgstr "" #: modules/computer/memory_usage.c:169 msgid "The amount of memory presently allocated on the system" msgstr "" #: modules/computer/memory_usage.c:170 msgid "Total size of vmalloc virtual address space" msgstr "" #: modules/computer/memory_usage.c:171 msgid "Amount of vmalloc area which is used" msgstr "" #: modules/computer/memory_usage.c:172 msgid "Largest contiguous block of vmalloc area which is free" msgstr "" #: modules/computer/memory_usage.c:173 msgid "Memory allocated to the percpu allocator" msgstr "" #: modules/computer/memory_usage.c:174 msgid "Amount of memory the kernel identifies as corrupted" msgstr "" #: modules/computer/memory_usage.c:175 msgid "Non-file backed huge pages mapped into userspace page tables" msgstr "" #: modules/computer/memory_usage.c:176 msgid "Memory used by shmem and tmpfs allocated with huge pages" msgstr "" #: modules/computer/memory_usage.c:177 msgid "Shared memory mapped into userspace with huge pages" msgstr "" #: modules/computer/memory_usage.c:178 msgid "Memory used for fs data (page cache) allocated with huge pages" msgstr "" #: modules/computer/memory_usage.c:179 msgid "Page cache mapped into userspace with huge pages" msgstr "" #: modules/computer/memory_usage.c:180 msgid "Memory reserved for the Contiguous Memory Allocator (CMA)" msgstr "" #: modules/computer/memory_usage.c:181 msgid "Free remaining memory in the CMA reserves" msgstr "" #: modules/computer/memory_usage.c:182 msgid "Amount of unaccepted memory usable by the kernel" msgstr "" #: modules/computer/memory_usage.c:183 msgid "Size of the pool of huge pages" msgstr "" #: modules/computer/memory_usage.c:184 msgid "Number of huge pages available" msgstr "" #: modules/computer/memory_usage.c:185 msgid "Number of huge pages reserved" msgstr "" #: modules/computer/memory_usage.c:186 msgid "Number of huge pages surplus" msgstr "" #: modules/computer/memory_usage.c:187 msgid "Huge page size, used in conjunction with hugepages parameter" msgstr "" #: modules/computer/memory_usage.c:188 msgid "Total amount of memory consumed by huge pages of all sizes" msgstr "" #: modules/computer/memory_usage.c:189 msgid "Breakdown of page table sizes of 4k size" msgstr "" #: modules/computer/memory_usage.c:190 msgid "Breakdown of page table sizes of 2M size" msgstr "" #: modules/computer/memory_usage.c:191 msgid "Breakdown of page table sizes of 1G size" msgstr "" #: modules/computer/modules.c:168 msgid "Update kernel module icon table" msgstr "" #: modules/computer/modules.c:338 modules/computer/modules.c:339 #: modules/computer/modules.c:340 modules/computer/modules.c:341 #: modules/computer/modules.c:342 modules/computer/modules.c:343 #: modules/devices/dmi.c:117 modules/devices/firmware.c:245 #: modules/devices/x86/processor.c:694 msgid "(Not available)" msgstr "(Non disponible)" #: modules/computer/modules.c:369 msgid "Module Information" msgstr "" #: modules/computer/modules.c:369 modules/devices/gpu.c:298 msgid "Path" msgstr "Chemin" #: modules/computer/modules.c:369 msgid "Used Memory" msgstr "Usage de la mémoire" #: modules/computer/modules.c:371 msgid "Version Magic" msgstr "" #: modules/computer/modules.c:372 msgid "In Linus' Tree" msgstr "" #: modules/computer/modules.c:373 msgid "Retpoline Enabled" msgstr "" #: modules/computer/modules.c:373 msgid "Copyright" msgstr "" #: modules/computer/modules.c:373 msgid "Author" msgstr "Auteur" #: modules/computer/modules.c:374 msgid "License" msgstr "" #: modules/computer/modules.c:380 msgid "Dependencies" msgstr "Dépendances" #: modules/computer/os.c:153 modules/computer/os.c:154 #: modules/computer/os.c:155 modules/computer/os.c:156 msgid "GNU C Library" msgstr "" #: modules/computer/os.c:157 msgid "uClibc or uClibc-ng" msgstr "" #: modules/computer/os.c:158 msgid "diet libc" msgstr "" #: modules/computer/os.c:229 modules/computer/os.c:232 msgid "GNOME Shell " msgstr "" #: modules/computer/os.c:240 modules/computer/os.c:243 msgid "Version: " msgstr "" #: modules/computer/os.c:261 modules/computer/os.c:264 msgid "MATE Desktop Environment " msgstr "" #: modules/computer/os.c:297 #, c-format msgid "Unknown (Window Manager: %s)" msgstr "(gestionnaire de fenêtres: %s) inconnu" #. !/{desktop environment} on {session type} #: modules/computer/os.c:308 #, c-format msgid "%s on %s" msgstr "" #: modules/computer/os.c:376 msgid "Terminal" msgstr "Terminal" #: modules/computer/os.c:392 msgid "User access allowed" msgstr "" #: modules/computer/os.c:394 msgid "User access forbidden" msgstr "" #: modules/computer/os.c:396 msgid "Access allowed (running as superuser)" msgstr "" #: modules/computer/os.c:398 msgid "Access forbidden? (running as superuser)" msgstr "" #: modules/computer/os.c:407 modules/computer/os.c:793 msgid "Disabled" msgstr "" #: modules/computer/os.c:409 msgid "Partially enabled (mmap base+stack+VDSO base)" msgstr "" #: modules/computer/os.c:411 msgid "Fully enabled (mmap base+stack+VDSO base+heap)" msgstr "" #. !/bits of entropy for rng (0) #: modules/computer/os.c:420 msgid "(None or not available)" msgstr "(Aucun ou non disponible)" #. !/bits of entropy for rng (low/poor value) #: modules/computer/os.c:421 #, c-format msgid "%d bits (low)" msgstr "%d bits (lent)" #. !/bits of entropy for rng (medium value) #: modules/computer/os.c:422 #, c-format msgid "%d bits (medium)" msgstr "%d bits (moyen)" #. !/bits of entropy for rng (high/good value) #: modules/computer/os.c:423 #, c-format msgid "%d bits (healthy)" msgstr "%d bits (élévé)" #: modules/computer/os.c:788 msgid "Not installed" msgstr "" #: modules/computer/os.c:791 msgid "Enabled" msgstr "" #: modules/computer/users.c:50 msgid "User Information" msgstr "Information Utilisateur" #: modules/computer/users.c:51 msgid "User ID" msgstr "ID utilisateur" #: modules/computer/users.c:54 msgid "Default Shell" msgstr "Shell par défaut" #: modules/devices/alpha/processor.c:88 modules/devices.c:865 #: modules/devices/devicetree.c:162 modules/devices/devicetree.c:208 #: modules/devices/devicetree/pmac_data.c:80 #: modules/devices/e2k/processor.c:361 modules/devices/e2k/processor.c:416 #: modules/devices/gpu.c:116 modules/devices/ia64/processor.c:165 #: modules/devices/loongarch64/processor.c:96 #: modules/devices/m68k/processor.c:84 modules/devices/mips/processor.c:75 #: modules/devices/monitors.c:404 modules/devices/parisc/processor.c:155 #: modules/devices/ppc/processor.c:158 modules/devices/riscv/processor.c:242 #: modules/devices/s390/processor.c:132 modules/devices/x86/processor.c:811 msgid "Model" msgstr "Modèle" #: modules/devices/alpha/processor.c:89 msgid "Platform String" msgstr "" #: modules/devices/alpha/processor.c:90 modules/devices/arm/processor.c:344 #: modules/devices/e2k/processor.c:363 modules/devices/e2k/processor.c:416 #: modules/devices/ia64/processor.c:167 #: modules/devices/loongarch64/processor.c:98 #: modules/devices/m68k/processor.c:87 modules/devices/mips/processor.c:77 #: modules/devices/parisc/processor.c:158 modules/devices/ppc/processor.c:160 #: modules/devices/riscv/processor.c:246 modules/devices/sh/processor.c:87 #: modules/devices/x86/processor.c:658 modules/devices/x86/processor.c:811 msgid "Frequency" msgstr "Fréquence" #: modules/devices/alpha/processor.c:91 modules/devices/arm/processor.c:345 #: modules/devices/e2k/processor.c:364 modules/devices/ia64/processor.c:168 #: modules/devices/m68k/processor.c:88 modules/devices/mips/processor.c:78 #: modules/devices/parisc/processor.c:159 modules/devices/ppc/processor.c:161 #: modules/devices/s390/processor.c:134 modules/devices/sh/processor.c:90 #: modules/devices/x86/processor.c:659 msgid "BogoMips" msgstr "" #: modules/devices/alpha/processor.c:92 modules/devices/arm/processor.c:346 #: modules/devices/e2k/processor.c:365 modules/devices/ia64/processor.c:169 #: modules/devices/loongarch64/processor.c:101 #: modules/devices/m68k/processor.c:89 modules/devices/mips/processor.c:79 #: modules/devices/parisc/processor.c:160 modules/devices/ppc/processor.c:162 #: modules/devices/riscv/processor.c:247 modules/devices/s390/processor.c:135 #: modules/devices/sh/processor.c:91 modules/devices/sparc/processor.c:77 #: modules/devices/x86/processor.c:660 msgid "Byte Order" msgstr "" #. !/flag:swp #: modules/devices/arm/arm_data.c:42 msgctxt "arm-flag" msgid "SWP instruction (atomic read-modify-write)" msgstr "" #. !/flag:half #: modules/devices/arm/arm_data.c:43 msgctxt "arm-flag" msgid "Half-word loads and stores" msgstr "" #. !/flag:thumb #: modules/devices/arm/arm_data.c:44 msgctxt "arm-flag" msgid "Thumb (16-bit instruction set)" msgstr "" #. !/flag:26bit #: modules/devices/arm/arm_data.c:45 msgctxt "arm-flag" msgid "26-Bit Model (Processor status register folded into program counter)" msgstr "" "26-Bit Model (Registre d'état du cpu incorporé dans le compteur de programme)" #. !/flag:fastmult #: modules/devices/arm/arm_data.c:46 msgctxt "arm-flag" msgid "32x32->64-bit multiplication" msgstr "" #. !/flag:fpa #: modules/devices/arm/arm_data.c:47 msgctxt "arm-flag" msgid "Floating point accelerator" msgstr "" #. !/flag:vfp #: modules/devices/arm/arm_data.c:48 msgctxt "arm-flag" msgid "VFP (early SIMD vector floating point instructions)" msgstr "" #. !/flag:edsp #: modules/devices/arm/arm_data.c:49 msgctxt "arm-flag" msgid "DSP extensions (the 'e' variant of the ARM9 CPUs, and all others above)" msgstr "" #. !/flag:java #: modules/devices/arm/arm_data.c:50 msgctxt "arm-flag" msgid "Jazelle (Java bytecode accelerator)" msgstr "" #. !/flag:iwmmxt #: modules/devices/arm/arm_data.c:51 msgctxt "arm-flag" msgid "SIMD instructions similar to Intel MMX" msgstr "" #. !/flag:crunch #: modules/devices/arm/arm_data.c:52 msgctxt "arm-flag" msgid "MaverickCrunch coprocessor (if kernel support enabled)" msgstr "" #. !/flag:thumbee #: modules/devices/arm/arm_data.c:53 msgctxt "arm-flag" msgid "ThumbEE" msgstr "" #. !/flag:neon #: modules/devices/arm/arm_data.c:54 msgctxt "arm-flag" msgid "Advanced SIMD/NEON on AArch32" msgstr "" #. !/flag:evtstrm #: modules/devices/arm/arm_data.c:55 msgctxt "arm-flag" msgid "Kernel event stream using generic architected timer" msgstr "" #. !/flag:vfpv3 #: modules/devices/arm/arm_data.c:56 msgctxt "arm-flag" msgid "VFP version 3" msgstr "" #. !/flag:vfpv3d16 #: modules/devices/arm/arm_data.c:57 msgctxt "arm-flag" msgid "VFP version 3 with 16 D-registers" msgstr "" #. !/flag:vfpv4 #: modules/devices/arm/arm_data.c:58 msgctxt "arm-flag" msgid "VFP version 4 with fast context switching" msgstr "" #. !/flag:vfpd32 #: modules/devices/arm/arm_data.c:59 msgctxt "arm-flag" msgid "VFP with 32 D-registers" msgstr "" #. !/flag:tls #: modules/devices/arm/arm_data.c:60 msgctxt "arm-flag" msgid "TLS register" msgstr "" #. !/flag:idiva #: modules/devices/arm/arm_data.c:61 msgctxt "arm-flag" msgid "SDIV and UDIV hardware division in ARM mode" msgstr "" #. !/flag:idivt #: modules/devices/arm/arm_data.c:62 msgctxt "arm-flag" msgid "SDIV and UDIV hardware division in Thumb mode" msgstr "" #. !/flag:lpae #: modules/devices/arm/arm_data.c:63 msgctxt "arm-flag" msgid "40-bit Large Physical Address Extension" msgstr "" #. !/flag:pmull #: modules/devices/arm/arm_data.c:65 msgctxt "arm-flag" msgid "64x64->128-bit F2m multiplication (arch>=8)" msgstr "" #. !/flag:aes #: modules/devices/arm/arm_data.c:66 msgctxt "arm-flag" msgid "Crypto:AES (arch>=8)" msgstr "" #. !/flag:sha1 #: modules/devices/arm/arm_data.c:67 msgctxt "arm-flag" msgid "Crypto:SHA1 (arch>=8)" msgstr "" #. !/flag:sha2 #: modules/devices/arm/arm_data.c:68 msgctxt "arm-flag" msgid "Crypto:SHA2 (arch>=8)" msgstr "" #. !/flag:crc32 #: modules/devices/arm/arm_data.c:69 msgctxt "arm-flag" msgid "CRC32 checksum instructions (arch>=8)" msgstr "" #. !/flag:fp #: modules/devices/arm/arm_data.c:71 msgctxt "arm-flag" msgid "Floating-point on AArch64 (arch>=8)" msgstr "" #. !/flag:asimd #: modules/devices/arm/arm_data.c:72 msgctxt "arm-flag" msgid "Advanced SIMD/NEON on AArch64 (arch>=8)" msgstr "" #. !/flag:atomics #: modules/devices/arm/arm_data.c:73 msgctxt "arm-flag" msgid "Atomic instructions on AArch64 (arch>=8)" msgstr "" #. !/flag:fphp #: modules/devices/arm/arm_data.c:74 msgctxt "arm-flag" msgid "Half precision floating point on AArch64 (arch>=8)" msgstr "" #. !/flag:asimdhp #: modules/devices/arm/arm_data.c:75 msgctxt "arm-flag" msgid "Advanced SIMD with BFloat16 on AArch64 (arch>=8)" msgstr "" #. !/flag:cpuid #: modules/devices/arm/arm_data.c:76 msgctxt "arm-flag" msgid "CPU features can be read on AArch64 (arch>=8)" msgstr "" #. !/flag:asimdrdm #: modules/devices/arm/arm_data.c:77 msgctxt "arm-flag" msgid "Advanced SIMD rounding Double MulAcc on AArch64 (arch>=8)" msgstr "" #. !/flag:jscvt #: modules/devices/arm/arm_data.c:78 msgctxt "arm-flag" msgid "JacaScript conversion on AArch64 (arch>=8)" msgstr "" #. !/flag:fcma #: modules/devices/arm/arm_data.c:79 msgctxt "arm-flag" msgid "Complex number SIMD on AArch64 (arch>=8)" msgstr "" #. !/flag:lrcpc #: modules/devices/arm/arm_data.c:80 msgctxt "arm-flag" msgid "Weak release consistency on AArch64 (arch>=8)" msgstr "" #. !/flag:dcpop #: modules/devices/arm/arm_data.c:81 msgctxt "arm-flag" msgid "Data cache clean to Point of Persistence on AArch64 (arch>=8)" msgstr "" #. !/flag:sha3 #: modules/devices/arm/arm_data.c:82 msgctxt "arm-flag" msgid "SHA-3 instructions on AArch64 (arch>=8)" msgstr "" #. !/flag:sm3 #: modules/devices/arm/arm_data.c:83 msgctxt "arm-flag" msgid "SM3 instructions on AArch64 (arch>=8)" msgstr "" #. !/flag:sm4 #: modules/devices/arm/arm_data.c:84 msgctxt "arm-flag" msgid "SM4 instructions on AArch64 (arch>=8)" msgstr "" #. !/flag:asimddp #: modules/devices/arm/arm_data.c:85 msgctxt "arm-flag" msgid "SIMD Dot Product on AArch64 (arch>=8)" msgstr "" #. !/flag:sha512 #: modules/devices/arm/arm_data.c:86 msgctxt "arm-flag" msgid "SHA512 instructions on AArch64 (arch>=8)" msgstr "" #. !/flag:sve #: modules/devices/arm/arm_data.c:87 msgctxt "arm-flag" msgid "Scalable Vector Extension on AArch64 (arch>=8)" msgstr "" #: modules/devices/arm/processor.c:143 msgid "ARM Processor" msgstr "Processeur ARM" #: modules/devices/arm/processor.c:214 modules/devices/riscv/processor.c:211 #: modules/devices/x86/processor.c:609 msgid "Empty List" msgstr "Liste Vide" #: modules/devices/arm/processor.c:239 modules/devices/gpu.c:204 #: modules/devices/gpu.c:294 modules/devices/x86/processor.c:267 msgid "Clocks" msgstr "" #: modules/devices/arm/processor.c:285 modules/devices/arm/processor.c:298 #: modules/devices/x86/processor.c:313 modules/devices/x86/processor.c:326 #, c-format msgid "%.2f-%.2f %s=%dx\n" msgstr "" #: modules/devices/arm/processor.c:341 msgid "Linux Name" msgstr "Nom version Linux" #: modules/devices/arm/processor.c:342 msgid "Decoded Name" msgstr "" #: modules/devices/arm/processor.c:343 modules/network/net.c:476 msgid "Mode" msgstr "" #: modules/devices/arm/processor.c:349 msgid "ARM" msgstr "" #: modules/devices/arm/processor.c:350 msgid "Implementer" msgstr "" #: modules/devices/arm/processor.c:351 modules/devices/dmi_memory.c:874 msgid "Part" msgstr "" #: modules/devices/arm/processor.c:352 modules/devices/ia64/processor.c:162 #: modules/devices/parisc/processor.c:156 modules/devices/riscv/processor.c:243 msgid "Architecture" msgstr "" #: modules/devices/arm/processor.c:353 msgid "Variant" msgstr "" #: modules/devices/arm/processor.c:355 modules/devices/riscv/processor.c:250 #: modules/devices/sparc/processor.c:78 modules/devices/x86/processor.c:666 msgid "Capabilities" msgstr "Capacités" #: modules/devices/arm/processor.c:477 msgid "SOC/Package" msgstr "" #: modules/devices/arm/processor.c:481 modules/devices/x86/processor.c:752 msgid "Logical CPU Config" msgstr "" #: modules/devices/arm/processor.c:498 msgid "SOC/Package Information" msgstr "" #: modules/devices/battery.c:178 #, c-format msgid "" "\n" "[Battery: %s]\n" "State=%s (load: %s)\n" "Capacity=%s / %s (%.2f%%)\n" "Battery Technology=%s (%s)\n" "Manufacturer=%s\n" "Model Number=%s\n" "Serial Number=%s\n" msgstr "" "\n" "[Batterie: %s]\n" "Etat=%s (load: %s)\n" "Capacité=%s / %s (%.2f%%)\n" "Technologie=%s (%s)\n" "Fabriquant=%s\n" "Modele=%s\n" "Numéro de série=%s\n" #: modules/devices/battery.c:257 #, c-format msgid "" "\n" "[AC Power Supply: %s]\n" "Online=%s\n" "AC Power Type=%s\n" msgstr "" #: modules/devices/battery.c:279 #, c-format msgid "" "\n" "[Battery: %s]\n" "State=%s\n" "Capacity=%s / %s\n" "Battery Technology=%s\n" "Manufacturer=%s\n" "Model Number=%s\n" "Serial Number=%s\n" msgstr "" #: modules/devices/battery.c:372 #, c-format msgid "" "\n" "[Battery (APM)]\n" "Charge=%d%%\n" "Remaining Charge=%s of %s\n" "Using=%s\n" "APM driver version=%s\n" "APM BIOS version=%s\n" msgstr "" "\n" "[Battery (APM)]\n" "Charge=%d%%\n" "Charge restante=%s of %s\n" "Etat=%s\n" "APM driver version=%s\n" "APM BIOS version=%s\n" #: modules/devices/battery.c:384 #, c-format msgid "" "\n" "[Battery (APM)]\n" "Charge=%d%%\n" "Using=%s\n" "APM driver version=%s\n" "APM BIOS version=%s\n" msgstr "" "\n" "[Battery (APM)]\n" "Charge=%d%%\n" "Etat=%s\n" "APM driver version=%s\n" "APM BIOS version=%s\n" #: modules/devices/battery.c:413 msgid "" "[No batteries]\n" "No batteries found on this system=\n" msgstr "" "[Aucune batterie]\n" "Aucune batterie trouvée sur ce système=\n" #: modules/devices.c:100 msgid "Graphics Processors" msgstr "Processeurs Graphiques" #: modules/devices.c:101 modules/devices/monitors.c:449 #: modules/devices/monitors.c:495 msgid "Monitors" msgstr "" #: modules/devices.c:102 modules/devices/pci.c:175 msgid "PCI Devices" msgstr "Périphériques PCI" #: modules/devices.c:103 modules/devices/usb.c:211 msgid "USB Devices" msgstr "Périphériques USB" #: modules/devices.c:104 msgid "Firmware" msgstr "" #: modules/devices.c:106 msgid "Battery" msgstr "Batterie" #: modules/devices.c:107 msgid "Sensors" msgstr "Capteurs" #: modules/devices.c:110 msgid "System DMI" msgstr "" #: modules/devices.c:111 msgid "Memory Devices" msgstr "" #: modules/devices.c:113 modules/devices.c:115 msgid "Device Tree" msgstr "Arborescence matériel" #: modules/devices.c:117 msgid "Resources" msgstr "Ressources" #: modules/devices.c:594 msgid "WSL2" msgstr "" #: modules/devices.c:841 msgid "Sensor" msgstr "Capteur" #: modules/devices.c:899 modules/devices/dmi_memory.c:806 msgid "Devices" msgstr "Périphériques" #: modules/devices.c:911 msgid "Update PCI ID listing" msgstr "Mise à jour de la liste ID PCI " #: modules/devices.c:916 msgid "Update USB ID listing" msgstr "" #: modules/devices.c:921 msgid "Update EDID vendor codes" msgstr "" #: modules/devices.c:926 msgid "Update IEEE OUI vendor codes" msgstr "" #: modules/devices.c:931 msgid "Update SD card manufacturer information" msgstr "" #: modules/devices.c:938 msgid "Update CPU flags database" msgstr "" #: modules/devices.c:973 msgid "Gathers information about hardware devices" msgstr "Collecte des informations des périphériques" #: modules/devices.c:994 msgid "A copy of pci.ids is not available on the system." msgstr "" #: modules/devices.c:997 msgid "A full pci.ids is not available on the system." msgstr "" #: modules/devices.c:1002 msgid "Resource information requires superuser privileges" msgstr "" "L'information sur ces ressources nécessite des privilèges de super-" "utilisateur" #: modules/devices.c:1008 msgid "" "Any NVMe storage devices present are not listed.\n" "udisks2 is required for NVMe devices." msgstr "" #: modules/devices/devicetree.c:51 msgid "Properties" msgstr "Propriétés" #: modules/devices/devicetree.c:52 msgid "Children" msgstr "" #: modules/devices/devicetree.c:88 msgid "Node" msgstr "" #: modules/devices/devicetree.c:89 msgid "Node Path" msgstr "" #: modules/devices/devicetree.c:90 msgid "Alias" msgstr "" #: modules/devices/devicetree.c:91 msgid "Symbol" msgstr "Symbole" #: modules/devices/devicetree.c:144 modules/devices/devicetree/pmac_data.c:79 msgid "Platform" msgstr "Plateforme" #: modules/devices/devicetree.c:145 modules/devices/devicetree.c:210 #: modules/devices/gpu.c:299 msgid "Compatible" msgstr "Similaire" #: modules/devices/devicetree.c:146 msgid "GPU-compatible" msgstr "" #: modules/devices/devicetree.c:161 msgid "Raspberry Pi or Compatible" msgstr "Raspberry Pi ou Similaire" #: modules/devices/devicetree.c:163 modules/devices/devicetree.c:190 #: modules/devices/devicetree.c:209 modules/devices/devicetree/rpi_data.c:169 #: modules/devices/dmi.c:42 modules/devices/dmi.c:52 modules/devices/dmi.c:58 #: modules/devices/spd-decode.c:1383 modules/devices/usb.c:181 msgid "Serial Number" msgstr "Numéro de série" #: modules/devices/devicetree.c:164 modules/devices/devicetree/rpi_data.c:166 msgid "RCode" msgstr "" #: modules/devices/devicetree.c:164 msgid "No revision code available; unable to lookup model details." msgstr "" "Aucun code de révision n'est disponible; il n'est pas possible de consulter " "les détails du modèle." #: modules/devices/devicetree.c:189 msgid "More" msgstr "Plus" #: modules/devices/devicetree.c:270 msgid "Messages" msgstr "" #: modules/devices/devicetree/pmac_data.c:78 msgid "Apple Power Macintosh" msgstr "" #: modules/devices/devicetree/pmac_data.c:83 msgid "Detected as" msgstr "Détecté comme" #: modules/devices/devicetree/pmac_data.c:84 msgid "PMAC Flags" msgstr "" #: modules/devices/devicetree/pmac_data.c:85 msgid "L2 Cache" msgstr "" #: modules/devices/devicetree/pmac_data.c:86 msgid "PMAC Generation" msgstr "" #: modules/devices/devicetree/rpi_data.c:161 #: modules/devices/devicetree/rpi_data.c:162 msgid "Raspberry Pi" msgstr "" #: modules/devices/devicetree/rpi_data.c:162 msgid "Board Name" msgstr "Nom de la carte" #: modules/devices/devicetree/rpi_data.c:163 msgid "PCB Revision" msgstr "" #: modules/devices/devicetree/rpi_data.c:164 msgid "Introduction" msgstr "" #: modules/devices/devicetree/rpi_data.c:165 modules/devices/usb.c:173 msgid "Manufacturer" msgstr "Fabricant" #: modules/devices/devicetree/rpi_data.c:167 msgid "SOC (spec)" msgstr "" #: modules/devices/devicetree/rpi_data.c:168 msgid "Memory (spec)" msgstr "Memoire (spec)" #: modules/devices/devicetree/rpi_data.c:170 msgid "Permanent overvolt bit" msgstr "" #: modules/devices/devicetree/rpi_data.c:170 msgctxt "rpi-ov-bit" msgid "Set" msgstr "Sélectionné" #: modules/devices/devicetree/rpi_data.c:170 msgctxt "rpi-ov-bit" msgid "Not set" msgstr "Non séléctionné" #: modules/devices/dmi.c:37 modules/devices/inputdevices.c:145 #: modules/devices/usb.c:170 msgid "Product" msgstr "Produit" #: modules/devices/dmi.c:39 modules/devices/e2k/processor.c:360 #: modules/devices/ia64/processor.c:164 #: modules/devices/loongarch64/processor.c:95 modules/devices/sh/processor.c:86 msgid "Family" msgstr "Famille" #: modules/devices/dmi.c:43 msgid "SKU" msgstr "" #: modules/devices/dmi.c:44 msgid "BIOS" msgstr "" #: modules/devices/dmi.c:53 modules/devices/dmi.c:59 msgid "Asset Tag" msgstr "" #: modules/devices/dmi.c:161 msgid "DMI Unavailable" msgstr "" #: modules/devices/dmi.c:162 msgid "DMI is not available. Perhaps this platform does not provide DMI." msgstr "" #: modules/devices/dmi_memory.c:620 modules/devices/dmi_memory.c:859 msgid "Memory Device List" msgstr "" #: modules/devices/dmi_memory.c:668 msgid "Memory Array" msgstr "" #: modules/devices/dmi_memory.c:669 modules/devices/x86/processor.c:714 msgid "DMI Handle" msgstr "" #: modules/devices/dmi_memory.c:670 modules/devices/dmi_memory.c:726 #: modules/devices/dmi_memory.c:764 modules/devices/dmi_memory.c:871 msgid "Locator" msgstr "" #: modules/devices/dmi_memory.c:671 msgid "Use" msgstr "" #: modules/devices/dmi_memory.c:672 msgid "Error Correction Type" msgstr "" #: modules/devices/dmi_memory.c:673 msgid "Size (Present / Max)" msgstr "" #: modules/devices/dmi_memory.c:674 msgid "Devices (Populated / Sockets)" msgstr "" #: modules/devices/dmi_memory.c:675 modules/devices/dmi_memory.c:807 msgid "Types Present" msgstr "" #: modules/devices/dmi_memory.c:676 msgid "ROM Size" msgstr "" #: modules/devices/dmi_memory.c:724 modules/devices/dmi_memory.c:762 msgid "Memory Socket" msgstr "" #: modules/devices/dmi_memory.c:725 modules/devices/dmi_memory.c:763 msgid "DMI Handles (Array, Socket)" msgstr "" #: modules/devices/dmi_memory.c:727 modules/devices/dmi_memory.c:765 msgid "Bank Locator" msgstr "" #: modules/devices/dmi_memory.c:728 modules/devices/spd-decode.c:1376 msgid "Form Factor" msgstr "" #: modules/devices/dmi_memory.c:732 modules/devices/spd-decode.c:1382 msgid "Part Number" msgstr "" #: modules/devices/dmi_memory.c:734 msgid "Rated Speed" msgstr "" #: modules/devices/dmi_memory.c:735 msgid "Configured Speed" msgstr "" #: modules/devices/dmi_memory.c:736 msgid "Data Width/Total Width" msgstr "" #: modules/devices/dmi_memory.c:737 msgid "Rank" msgstr "" #: modules/devices/dmi_memory.c:738 msgid "Minimum Voltage" msgstr "" #: modules/devices/dmi_memory.c:739 msgid "Maximum Voltage" msgstr "" #: modules/devices/dmi_memory.c:740 msgid "Configured Voltage" msgstr "" #: modules/devices/dmi_memory.c:766 modules/devices/dmi_memory.c:773 #: modules/devices/monitors.c:495 msgid "(Empty)" msgstr "" #: modules/devices/dmi_memory.c:804 msgid "Serial Presence Detect (SPD) Summary" msgstr "" #: modules/devices/dmi_memory.c:860 msgid "(Not available - See hint box below)" msgstr "" #: modules/devices/dmi_memory.c:932 msgid "No DMI available" msgstr "" #: modules/devices/dmi_memory.c:937 msgid "dmidecode package installed" msgstr "" #: modules/devices/dmi_memory.c:948 msgid "Memory Information requires more Setup:" msgstr "" #: modules/devices/dmi_memory.c:976 msgid "" "\"More often than not, information contained in the DMI tables is " "inaccurate,\n" "incomplete or simply wrong.\" -dmidecode manual page" msgstr "" #: modules/devices/e2k/processor.c:30 modules/devices/x86/processor.c:149 msgid "Cache information not available=\n" msgstr "Information du cache non valable=\n" #: modules/devices/e2k/processor.c:36 modules/devices/x86/processor.c:155 #, c-format msgid "Level %d (%s)=%d-way set-associative, %d sets, %dKB size\n" msgstr "" #: modules/devices/e2k/processor.c:51 msgctxt "cache-type" msgid "Data" msgstr "Données" #: modules/devices/e2k/processor.c:52 msgctxt "cache-type" msgid "Instruction" msgstr "Instructions" #: modules/devices/e2k/processor.c:53 msgctxt "cache-type" msgid "Unified" msgstr "uniformisé" #: modules/devices/e2k/processor.c:157 modules/devices/x86/processor.c:366 msgid "Caches" msgstr "" #: modules/devices/e2k/processor.c:208 modules/devices/e2k/processor.c:225 #: modules/devices/x86/processor.c:417 modules/devices/x86/processor.c:434 #, c-format msgid "Level %d (%s)#%d=%dx %dKB (%dKB), %d-way set-associative, %d sets\n" msgstr "" #: modules/devices/firmware.c:36 msgid "Device cannot be removed easily" msgstr "" #: modules/devices/firmware.c:37 msgid "Device is updatable in this or any other mode" msgstr "" #: modules/devices/firmware.c:38 msgid "Update can only be done from offline mode" msgstr "" #: modules/devices/firmware.c:39 msgid "Requires AC power" msgstr "" #: modules/devices/firmware.c:40 msgid "Is locked and can be unlocked" msgstr "" #: modules/devices/firmware.c:41 msgid "Is found in current metadata" msgstr "" #: modules/devices/firmware.c:42 msgid "Requires a bootloader mode to be manually enabled by the user" msgstr "" #: modules/devices/firmware.c:43 msgid "Has been registered with other plugins" msgstr "" #: modules/devices/firmware.c:44 msgid "Requires a reboot to apply firmware or to reload hardware" msgstr "" #: modules/devices/firmware.c:45 msgid "Requires system shutdown to apply firmware" msgstr "" #: modules/devices/firmware.c:46 msgid "Has been reported to a metadata server" msgstr "" #: modules/devices/firmware.c:47 msgid "User has been notified" msgstr "" #: modules/devices/firmware.c:48 msgid "Always use the runtime version rather than the bootloader" msgstr "" #: modules/devices/firmware.c:49 msgid "Install composite firmware on the parent before the child" msgstr "" #: modules/devices/firmware.c:50 msgid "Is currently in bootloader mode" msgstr "" #: modules/devices/firmware.c:51 msgid "The hardware is waiting to be replugged" msgstr "" #: modules/devices/firmware.c:52 msgid "Ignore validation safety checks when flashing this device" msgstr "" #: modules/devices/firmware.c:53 msgid "Requires the update to be retried with a new plugin" msgstr "" #: modules/devices/firmware.c:54 msgid "Do not add instance IDs from the device baseclass" msgstr "" #: modules/devices/firmware.c:55 msgid "Device update needs to be separately activated" msgstr "" #: modules/devices/firmware.c:56 msgid "" "Ensure the version is a valid semantic version, e.g. numbers separated with " "dots" msgstr "" #: modules/devices/firmware.c:57 msgid "Extra metadata can be exposed about this device" msgstr "" #: modules/devices/firmware.c:74 msgid "DeviceId" msgstr "" #: modules/devices/firmware.c:74 modules/devices/firmware.c:187 msgid "Guid" msgstr "" #: modules/devices/firmware.c:74 msgid "Plugin" msgstr "" #: modules/devices/firmware.c:74 modules/devices/firmware.c:205 #: modules/network.c:381 msgid "Flags" msgstr "" #: modules/devices/firmware.c:75 msgid "VendorId" msgstr "" #: modules/devices/firmware.c:75 msgid "VersionBootloader" msgstr "" #: modules/devices/firmware.c:76 modules/devices/firmware.c:179 msgid "Icon" msgstr "" #: modules/devices/firmware.c:76 msgid "InstallDuration" msgstr "" #: modules/devices/firmware.c:76 modules/devices/firmware.c:197 msgid "Created" msgstr "" #: modules/devices/firmware.c:244 msgid "Firmware List" msgstr "" #: modules/devices/firmware.c:257 msgid "Requires the fwupd daemon." msgstr "" #: modules/devices/gpu.c:94 modules/devices/pci.c:111 #: modules/devices/storage.c:58 msgid "SVendor" msgstr "" #: modules/devices/gpu.c:95 modules/devices/pci.c:112 #: modules/devices/storage.c:59 msgid "SDevice" msgstr "" #: modules/devices/gpu.c:103 modules/devices/pci.c:122 #: modules/devices/storage.c:68 msgid "PCI Express" msgstr "" #: modules/devices/gpu.c:104 modules/devices/pci.c:124 #: modules/devices/storage.c:70 msgid "Maximum Link Width" msgstr "" #: modules/devices/gpu.c:105 modules/devices/pci.c:126 #: modules/devices/storage.c:71 msgid "Maximum Link Speed" msgstr "" #: modules/devices/gpu.c:105 modules/devices/pci.c:125 #: modules/devices/pci.c:126 modules/devices/storage.c:71 msgid "GT/s" msgstr "" #: modules/devices/gpu.c:115 msgid "NVIDIA" msgstr "" #: modules/devices/gpu.c:117 msgid "BIOS Version" msgstr "" #: modules/devices/gpu.c:118 msgid "UUID" msgstr "" #: modules/devices/gpu.c:197 modules/devices/gpu.c:289 #: modules/devices/inputdevices.c:140 modules/devices/pci.c:143 #: modules/devices/usb.c:169 msgid "Device Information" msgstr "Information matériel" #: modules/devices/gpu.c:199 modules/devices/gpu.c:291 #: modules/devices/storage.c:69 msgid "Location" msgstr "" #: modules/devices/gpu.c:200 msgid "DRM Device" msgstr "" #: modules/devices/gpu.c:201 modules/devices/pci.c:144 #: modules/devices/usb.c:136 modules/devices/usb.c:177 msgid "Class" msgstr "" #: modules/devices/gpu.c:210 modules/devices/pci.c:149 msgid "In Use" msgstr "En cours" #: modules/devices/gpu.c:245 msgid "Unknown integrated GPU" msgstr "GPU intégré inconnu" #: modules/devices/gpu.c:253 msgid "clock-frequency property" msgstr "" #: modules/devices/gpu.c:254 msgid "Operating Points (OPPv1)" msgstr "" #: modules/devices/gpu.c:255 msgid "Operating Points (OPPv2)" msgstr "" #: modules/devices/gpu.c:297 msgid "Device Tree Node" msgstr "" #: modules/devices/gpu.c:300 modules/devices/monitors.c:475 #: modules/network/net.c:477 msgid "Status" msgstr "Etats" #: modules/devices/gpu.c:317 msgid "GPUs" msgstr "" #: modules/devices/gpu.c:341 msgid "No GPU devices found" msgstr "" #: modules/devices/ia64/processor.c:108 msgid "IA64 Processor" msgstr "" #: modules/devices/ia64/processor.c:163 msgid "Architecture Revision" msgstr "" #: modules/devices/ia64/processor.c:170 msgid "CPU regs" msgstr "" #: modules/devices/ia64/processor.c:171 #: modules/devices/loongarch64/processor.c:100 msgid "Features" msgstr "Caractéristiques" #: modules/devices/inputdevices.c:143 modules/devices/pci.c:153 #: modules/devices/usb.c:183 msgid "Bus" msgstr "" #: modules/devices/inputdevices.c:149 msgid "Connected to" msgstr "Connecté à" #: modules/devices/inputdevices.c:153 msgid "InfraRed port" msgstr "Port infrarouge" #: modules/devices/loongarch64/processor.c:94 #: modules/devices/mips/processor.c:76 msgid "System Type" msgstr "Type de système" #: modules/devices/loongarch64/processor.c:99 msgid "BogoMIPS" msgstr "" #: modules/devices/m68k/processor.c:85 modules/devices/riscv/processor.c:245 msgid "MMU" msgstr "" #: modules/devices/m68k/processor.c:86 modules/devices/sparc/processor.c:76 msgid "FPU" msgstr "" #: modules/devices/m68k/processor.c:90 msgid "Calibration" msgstr "Calibrage" #: modules/devices/monitors.c:30 modules/devices/monitors.c:257 #: modules/devices/monitors.c:350 modules/devices/spd-decode.c:699 msgid "(Unspecified)" msgstr "" #: modules/devices/monitors.c:232 #, c-format msgid "Week %d of %d" msgstr "" #: modules/devices/monitors.c:242 msgid "Ok" msgstr "" #: modules/devices/monitors.c:242 msgid "Fail" msgstr "" #: modules/devices/monitors.c:270 modules/devices/monitors.c:278 #: modules/devices/monitors.c:286 modules/devices/monitors.c:297 #: modules/devices/monitors.c:305 modules/devices/monitors.c:312 #: modules/devices/monitors.c:320 modules/devices/monitors.c:328 #: modules/devices/monitors.c:336 modules/devices/monitors.c:342 msgid "(Empty List)" msgstr "" #: modules/devices/monitors.c:394 msgid "Signal Type" msgstr "" #: modules/devices/monitors.c:394 msgid "Digital" msgstr "" #: modules/devices/monitors.c:394 msgid "Analog" msgstr "" #: modules/devices/monitors.c:395 modules/devices/usb.c:135 #: modules/network.c:311 modules/network.c:364 modules/network.c:381 msgid "Interface" msgstr "" #: modules/devices/monitors.c:396 msgid "Bits per Color Channel" msgstr "" #: modules/devices/monitors.c:397 msgid "Speaker Allocation" msgstr "" #: modules/devices/monitors.c:398 msgid "Output (Max)" msgstr "" #: modules/devices/monitors.c:401 msgid "EDID Device" msgstr "" #: modules/devices/monitors.c:405 msgid "Serial" msgstr "" #: modules/devices/monitors.c:406 msgid "Manufacture Date" msgstr "" #: modules/devices/monitors.c:407 msgid "EDID Meta" msgstr "" #: modules/devices/monitors.c:408 msgid "Data Size" msgstr "" #: modules/devices/monitors.c:408 msgid "bytes" msgstr "" #: modules/devices/monitors.c:410 msgid "Extension Blocks" msgstr "" #: modules/devices/monitors.c:411 msgid "Extended to" msgstr "" #: modules/devices/monitors.c:412 msgid "Checksum" msgstr "" #: modules/devices/monitors.c:413 msgid "EDID Descriptors" msgstr "" #: modules/devices/monitors.c:414 msgid "Detailed Timing Descriptors (DTD)" msgstr "" #: modules/devices/monitors.c:415 msgid "Established Timings Bitmap (ETB)" msgstr "" #: modules/devices/monitors.c:416 msgid "Standard Timings (STD)" msgstr "" #: modules/devices/monitors.c:417 msgid "E-EDID Extension Blocks" msgstr "" #: modules/devices/monitors.c:418 msgid "EIA/CEA-861 Data Blocks" msgstr "" #: modules/devices/monitors.c:419 msgid "EIA/CEA-861 Short Audio Descriptors" msgstr "" #: modules/devices/monitors.c:420 msgid "EIA/CEA-861 Short Video Descriptors" msgstr "" #: modules/devices/monitors.c:421 msgid "DisplayID Timings" msgstr "" #: modules/devices/monitors.c:422 msgid "DisplayID Strings" msgstr "" #: modules/devices/monitors.c:423 msgid "Hex Dump" msgstr "" #: modules/devices/monitors.c:423 msgid "Data" msgstr "" #: modules/devices/monitors.c:473 modules/devices/monitors.c:504 #: modules/devices/pci.c:151 modules/devices/usb.c:182 msgid "Connection" msgstr "" #: modules/devices/monitors.c:474 msgid "DRM" msgstr "" #: modules/devices/parisc/processor.c:107 msgid "PA-RISC Processor" msgstr "" #: modules/devices/parisc/processor.c:161 msgid "HVersion" msgstr "" #: modules/devices/parisc/processor.c:162 msgid "SVersion" msgstr "" #: modules/devices/pci.c:123 msgid "Link Width" msgstr "" #: modules/devices/pci.c:125 msgid "Link Speed" msgstr "" #: modules/devices/pci.c:152 msgid "Domain" msgstr "Domaine" #: modules/devices/pci.c:155 msgid "Function" msgstr "Fonction" #: modules/devices/pci.c:196 msgid "No PCI devices found" msgstr "Aucun matériel PCI trouvé" #: modules/devices/ppc/processor.c:117 msgid "POWER Processor" msgstr "" #: modules/devices/printers.c:88 msgid "⚬ Can do black and white printing=\n" msgstr "⚬ Impression en noir et blanc =\n" #: modules/devices/printers.c:90 msgid "⚬ Can do color printing=\n" msgstr "⚬ Imprimer en couleur=\n" #: modules/devices/printers.c:92 msgid "⚬ Can do duplexing=\n" msgstr "⚬ Imprimer recto verso=\n" #: modules/devices/printers.c:94 msgid "⚬ Can do staple output=\n" msgstr "⚬ Agrafer les feuilles imprimées=\n" #: modules/devices/printers.c:96 msgid "⚬ Can do copies=\n" msgstr "⚬ Réaliser copies=\n" #: modules/devices/printers.c:98 msgid "⚬ Can collate copies=\n" msgstr "⚬ Assembler des copies=\n" #: modules/devices/printers.c:100 msgid "⚬ Printer is rejecting jobs=\n" msgstr "⚬ Imprimante rejette cette tâche=\n" #: modules/devices/printers.c:102 msgid "⚬ Printer was automatically discovered and added=\n" msgstr "⚬ Imprimante a été automatiquement détectée et ajoutée=\n" #: modules/devices/printers.c:117 msgid "Idle" msgstr "Inoccupée" #: modules/devices/printers.c:119 msgid "Printing a Job" msgstr "Impression" #: modules/devices/printers.c:121 msgid "Stopped" msgstr "Arrêtée" #: modules/devices/printers.c:200 msgid "" "[Printers]\n" "No suitable CUPS library found=" msgstr "" "[Printers]\n" "Aucune librairie CUPS trouvée=" #: modules/devices/printers.c:213 msgid "[Printers (CUPS)]\n" msgstr "[Imprimantes (CUPS)]\n" #: modules/devices/printers.c:277 msgid "" "[Printers]\n" "No printers found=\n" msgstr "" "[Imprimantes]\n" "Aucune imprimante trouvée=\n" #: modules/devices/riscv/processor.c:244 msgid "uarch" msgstr "" #: modules/devices/riscv/riscv_data.c:37 msgctxt "rv-ext" msgid "RISC-V 32-bit" msgstr "" #: modules/devices/riscv/riscv_data.c:38 msgctxt "rv-ext" msgid "RISC-V 64-bit" msgstr "" #: modules/devices/riscv/riscv_data.c:39 msgctxt "rv-ext" msgid "RISC-V 128-bit" msgstr "" #: modules/devices/riscv/riscv_data.c:40 msgctxt "rv-ext" msgid "Base embedded integer instructions (15 registers)" msgstr "Instructions embarquées (15 registres)" #: modules/devices/riscv/riscv_data.c:41 msgctxt "rv-ext" msgid "Base integer instructions (31 registers)" msgstr "Instructions intégrées (31 registres)" #: modules/devices/riscv/riscv_data.c:42 msgctxt "rv-ext" msgid "Hardware integer multiply and divide" msgstr "" #: modules/devices/riscv/riscv_data.c:43 msgctxt "rv-ext" msgid "Atomic memory operations" msgstr "Opérations de mémoire atomique" #: modules/devices/riscv/riscv_data.c:44 msgctxt "rv-ext" msgid "Compressed 16-bit instructions" msgstr "Instructions 16 bits compressées" #: modules/devices/riscv/riscv_data.c:45 msgctxt "rv-ext" msgid "Floating-point instructions, single-precision" msgstr "Floating-point instructions, simple-precision" #: modules/devices/riscv/riscv_data.c:46 msgctxt "rv-ext" msgid "Floating-point instructions, double-precision" msgstr "" #: modules/devices/riscv/riscv_data.c:47 msgctxt "rv-ext" msgid "Floating-point instructions, quad-precision" msgstr "" #: modules/devices/riscv/riscv_data.c:48 msgctxt "rv-ext" msgid "Bit manipulation instructions" msgstr "" #: modules/devices/riscv/riscv_data.c:49 msgctxt "rv-ext" msgid "Vector operations" msgstr "" #: modules/devices/riscv/riscv_data.c:50 msgctxt "rv-ext" msgid "Scalar Cryptography" msgstr "" #: modules/devices/riscv/riscv_data.c:51 msgctxt "rv-ext" msgid "Base Counters and Timers" msgstr "" #: modules/devices/riscv/riscv_data.c:52 msgctxt "rv-ext" msgid "Control and Status Register" msgstr "" #: modules/devices/riscv/riscv_data.c:53 msgctxt "rv-ext" msgid "Instruction-Fetch Fence" msgstr "" #: modules/devices/riscv/riscv_data.c:54 msgctxt "rv-ext" msgid "Hardware performance counters" msgstr "" #: modules/devices/riscv/riscv_data.c:55 msgctxt "rv-ext" msgid "Accell Index addresses" msgstr "" #: modules/devices/riscv/riscv_data.c:56 msgctxt "rv-ext" msgid "Basic bit-manipulation" msgstr "" #: modules/devices/riscv/riscv_data.c:57 msgctxt "rv-ext" msgid "Supervisor-level Instructions" msgstr "" #: modules/devices/riscv/riscv_data.c:58 msgctxt "rv-ext" msgid "User Mode" msgstr "" #: modules/devices/riscv/riscv_data.c:59 msgctxt "rv-ext" msgid "Transactional memory" msgstr "" #: modules/devices/riscv/riscv_data.c:60 msgctxt "rv-ext" msgid "Packed SIMD instructions" msgstr "" #: modules/devices/riscv/riscv_data.c:61 msgctxt "rv-ext" msgid "Decimal floating-point instructions" msgstr "" #: modules/devices/riscv/riscv_data.c:62 msgctxt "rv-ext" msgid "Dynamically translated languages" msgstr "" #: modules/devices/riscv/riscv_data.c:63 msgctxt "rv-ext" msgid "User-level interrupts" msgstr "" #: modules/devices/s390/processor.c:92 msgid "S390 Processor" msgstr "" #: modules/devices/s390/processor.c:133 msgid "ID String" msgstr "" #: modules/devices/sh/processor.c:55 msgid "SuperH Processor" msgstr "" #: modules/devices/sh/processor.c:88 msgid "Bus Frequency" msgstr "Fréquence BUS" #: modules/devices/sh/processor.c:89 msgid "Module Frequency" msgstr "Fréquence Modules" #: modules/devices/spd-decode.c:128 modules/devices/spd-decode.c:144 msgid "Unspecified" msgstr "" #: modules/devices/spd-decode.c:130 modules/devices/spd-decode.c:146 msgid "Invalid" msgstr "" #: modules/devices/spd-decode.c:358 msgid "Row address bits" msgstr "" #: modules/devices/spd-decode.c:359 msgid "Column address bits" msgstr "" #: modules/devices/spd-decode.c:360 msgid "Number of rows" msgstr "" #: modules/devices/spd-decode.c:361 msgid "Data width" msgstr "" #: modules/devices/spd-decode.c:362 msgid "Interface signal levels" msgstr "" #: modules/devices/spd-decode.c:363 msgid "Configuration type" msgstr "" #: modules/devices/spd-decode.c:364 msgid "Refresh" msgstr "" #: modules/devices/spd-decode.c:365 modules/devices/spd-decode.c:442 #: modules/devices/spd-decode.c:721 msgid "Timings" msgstr "" #: modules/devices/spd-decode.c:589 modules/devices/spd-decode.c:858 #: modules/devices/spd-decode.c:899 modules/devices/spd-decode.c:1111 #: modules/devices/x86/processor.c:716 msgid "Voltage" msgstr "" #: modules/devices/spd-decode.c:590 modules/devices/spd-decode.c:901 #: modules/devices/spd-decode.c:1113 msgid "JEDEC Timings" msgstr "" #: modules/devices/spd-decode.c:697 msgid "Ranks" msgstr "" #: modules/devices/spd-decode.c:698 msgid "IO Pins per Chip" msgstr "" #: modules/devices/spd-decode.c:699 msgid "Die count" msgstr "" #: modules/devices/spd-decode.c:700 msgid "Thermal Sensor" msgstr "" #: modules/devices/spd-decode.c:700 msgid "Present" msgstr "" #: modules/devices/spd-decode.c:700 msgid "Not present" msgstr "" #: modules/devices/spd-decode.c:701 msgid "Supported Voltages" msgstr "" #: modules/devices/spd-decode.c:705 msgid "Supported CAS Latencies" msgstr "" #: modules/devices/spd-decode.c:856 msgid "XMP Profile" msgstr "" #: modules/devices/spd-decode.c:857 modules/devices/usb.c:176 #: modules/network/net.c:438 msgid "Speed" msgstr "" #: modules/devices/spd-decode.c:859 msgid "XMP Timings" msgstr "" #: modules/devices/spd-decode.c:900 msgid "XMP" msgstr "" #: modules/devices/spd-decode.c:1372 msgid "Serial Presence Detect (SPD)" msgstr "" #: modules/devices/spd-decode.c:1375 msgid "SPD Revision" msgstr "" #: modules/devices/spd-decode.c:1378 msgid "Module Vendor" msgstr "" #: modules/devices/spd-decode.c:1380 msgid "DRAM Vendor" msgstr "" #: modules/devices/spd-decode.c:1385 msgid "Manufacturing Date (Year / Week)" msgstr "" #: modules/devices/storage.c:46 modules/devices/storage.c:55 msgid "NVMe Controller" msgstr "" #: modules/devices/storage.c:138 msgid "Read Error Rate" msgstr "" #: modules/devices/storage.c:139 msgid "Throughput Performance" msgstr "" #: modules/devices/storage.c:140 msgid "Spin-Up Time" msgstr "" #: modules/devices/storage.c:141 msgid "Start/Stop Count" msgstr "" #: modules/devices/storage.c:142 msgid "Reallocated Sector Count" msgstr "" #: modules/devices/storage.c:143 msgid "Read Channel Margin" msgstr "" #: modules/devices/storage.c:144 msgid "Seek Error Rate" msgstr "" #: modules/devices/storage.c:145 msgid "Seek Timer Performance" msgstr "" #: modules/devices/storage.c:146 modules/devices/storage.c:185 msgid "Power-On Hours" msgstr "" #: modules/devices/storage.c:147 msgid "Spin Retry Count" msgstr "" #: modules/devices/storage.c:148 msgid "Calibration Retry Count" msgstr "" #: modules/devices/storage.c:149 msgid "Power Cycle Count" msgstr "" #: modules/devices/storage.c:150 modules/devices/storage.c:167 msgid "Soft Read Error Rate" msgstr "" #: modules/devices/storage.c:151 msgid "Runtime Bad Block" msgstr "" #: modules/devices/storage.c:152 msgid "End-to-End error" msgstr "" #: modules/devices/storage.c:153 msgid "Reported Uncorrectable Errors" msgstr "" #: modules/devices/storage.c:154 msgid "Command Timeout" msgstr "" #: modules/devices/storage.c:155 msgid "High Fly Writes" msgstr "" #: modules/devices/storage.c:156 msgid "Airflow Temperature" msgstr "" #: modules/devices/storage.c:157 msgid "G-sense Error Rate" msgstr "" #: modules/devices/storage.c:158 msgid "Power-off Retract Count" msgstr "" #: modules/devices/storage.c:159 msgid "Load Cycle Count" msgstr "" #: modules/devices/storage.c:160 modules/devices/storage.c:183 msgid "Temperature" msgstr "" #: modules/devices/storage.c:161 msgid "Hardware ECC Recovered" msgstr "" #: modules/devices/storage.c:162 msgid "Reallocation Event Count" msgstr "" #: modules/devices/storage.c:163 msgid "Current Pending Sector Count" msgstr "" #: modules/devices/storage.c:164 msgid "Uncorrectable Sector Count" msgstr "" #: modules/devices/storage.c:165 msgid "UltraDMA CRC Error Count" msgstr "" #: modules/devices/storage.c:166 msgid "Multi-Zone Error Rate" msgstr "" #: modules/devices/storage.c:168 msgid "Run Out Cancel" msgstr "" #: modules/devices/storage.c:169 msgid "Flying Height" msgstr "" #: modules/devices/storage.c:170 msgid "Spin High Current" msgstr "" #: modules/devices/storage.c:171 msgid "Spin Buzz" msgstr "" #: modules/devices/storage.c:172 msgid "Offline Seek Performance" msgstr "" #: modules/devices/storage.c:173 msgid "Disk Shift" msgstr "" #: modules/devices/storage.c:174 msgid "G-Sense Error Rate" msgstr "" #: modules/devices/storage.c:175 msgid "Loaded Hours" msgstr "" #: modules/devices/storage.c:176 msgid "Load/Unload Retry Count" msgstr "" #: modules/devices/storage.c:177 msgid "Load Friction" msgstr "" #: modules/devices/storage.c:178 msgid "Load/Unload Cycle Count" msgstr "" #: modules/devices/storage.c:179 msgid "Load-in time" msgstr "" #: modules/devices/storage.c:180 msgid "Torque Amplification Count" msgstr "" #: modules/devices/storage.c:181 msgid "Power-Off Retract Count" msgstr "" #: modules/devices/storage.c:182 msgid "GMR Head Amplitude" msgstr "" #: modules/devices/storage.c:184 msgid "Endurance Remaining" msgstr "" #: modules/devices/storage.c:186 msgid "Good Block Rate" msgstr "" #: modules/devices/storage.c:187 msgid "Head Flying Hours" msgstr "" #: modules/devices/storage.c:188 msgid "Read Error Retry Rate" msgstr "" #: modules/devices/storage.c:189 msgid "Total LBAs Written" msgstr "" #: modules/devices/storage.c:190 msgid "Total LBAs Read" msgstr "" #: modules/devices/storage.c:191 msgid "Wear leveling Count" msgstr "" #: modules/devices/storage.c:192 msgid "Total Used Reserved Block Count" msgstr "" #: modules/devices/storage.c:193 msgid "Total Program Fail Count" msgstr "" #: modules/devices/storage.c:194 msgid "Total Erase Fail Count" msgstr "" #: modules/devices/storage.c:195 msgid "Available Reserved Space" msgstr "" #: modules/devices/storage.c:196 msgid "Program Fail Count" msgstr "" #: modules/devices/storage.c:197 msgid "Erase Fail Count" msgstr "" #: modules/devices/storage.c:198 msgid "TA Counter Increased" msgstr "" #: modules/devices/storage.c:199 msgid "Total Unused Reserved Block Count" msgstr "" #: modules/devices/storage.c:204 msgid "" "\n" "[UDisks2]\n" msgstr "" #: modules/devices/storage.c:257 msgid "Removable" msgstr "" #: modules/devices/storage.c:257 msgid "Fixed" msgstr "" #: modules/devices/storage.c:260 msgid "Ejectable" msgstr "" #: modules/devices/storage.c:263 msgid "Self-monitoring (S.M.A.R.T.)" msgstr "" #: modules/devices/storage.c:266 modules/devices/x86/processor.c:664 msgid "Power Management" msgstr "" #: modules/devices/storage.c:269 msgid "Advanced Power Management" msgstr "" #: modules/devices/storage.c:272 msgid "Automatic Acoustic Management" msgstr "" #: modules/devices/storage.c:275 #, c-format msgid "" "[Drive Information]\n" "Model=%s\n" msgstr "" #: modules/devices/storage.c:285 #, c-format msgid "" "Revision=%s\n" "Block Device=%s\n" "Serial=%s\n" "Size=%s\n" "Features=%s\n" msgstr "" #: modules/devices/storage.c:300 #, c-format msgid "Rotation Rate=%d RPM\n" msgstr "" #: modules/devices/storage.c:303 #, c-format msgid "" "Media=%s\n" "Media compatibility=%s\n" msgstr "" #: modules/devices/storage.c:310 #, c-format msgid "Connection bus=%s\n" msgstr "" #: modules/devices/storage.c:322 msgid "WWN" msgstr "" #: modules/devices/storage.c:323 msgid "EUI " msgstr "" #: modules/devices/storage.c:328 msgid "WWN / EUI" msgstr "" #: modules/devices/storage.c:332 #, c-format msgid "$^$%s=[%s] %s\n" msgstr "" #: modules/devices/storage.c:334 msgid "IEEE OUI" msgstr "" #: modules/devices/storage.c:346 msgid "" "[Self-monitoring (S.M.A.R.T.)]\n" "Status=%s\n" "Bad Sectors=%" msgstr "" #: modules/devices/storage.c:352 msgid "Failing" msgstr "" #: modules/devices/storage.c:352 msgid "OK" msgstr "" #: modules/devices/storage.c:358 msgid "" "[S.M.A.R.T. Attributes]\n" "Attribute=Value / Normalized / Worst / Threshold\n" msgstr "" #: modules/devices/storage.c:381 msgid "%" msgid_plural "%" msgstr[0] "" msgstr[1] "" #: modules/devices/storage.c:419 #, c-format msgid "(%d) %s=%s\n" msgstr "" #: modules/devices/storage.c:428 #, c-format msgid "" "[Partition table]\n" "Type=%s\n" msgstr "" #: modules/devices/storage.c:447 #, c-format msgid "Partition %s=%s\n" msgstr "" #: modules/devices/storage.c:496 msgid "" "\n" "[SCSI Disks]\n" msgstr "" "\n" "[Disques SCSI]\n" #: modules/devices/storage.c:567 modules/devices/storage.c:773 #, c-format msgid "" "[Device Information]\n" "Model=%s\n" msgstr "" "[Informations des périphériques]\n" "Modele=%s\n" #: modules/devices/storage.c:574 #, c-format msgid "" "Type=%s\n" "Revision=%s\n" "[SCSI Controller]\n" "Controller=scsi%d\n" "Channel=%d\n" "ID=%d\n" "LUN=%d\n" msgstr "" "Type=%s\n" "Revision=%s\n" "[SCSI Controller]\n" "Controleur=scsi%d\n" "Channel=%d\n" "ID=%d\n" "LUN=%d\n" #: modules/devices/storage.c:621 msgid "" "\n" "[IDE Disks]\n" msgstr "" "\n" "[Disques IDE]\n" #: modules/devices/storage.c:707 #, c-format msgid "Driver=%s\n" msgstr "Driver=%s\n" #: modules/devices/storage.c:779 #, c-format msgid "" "Device Name=hd%c\n" "Media=%s\n" "Cache=%dkb\n" msgstr "" "Nom du Périphérique=hd%c\n" "Media=%s\n" "Cache=%dkb\n" #: modules/devices/storage.c:789 #, c-format msgid "" "[Geometry]\n" "Physical=%s\n" "Logical=%s\n" msgstr "" "[Geometry]\n" "Physique=%s\n" "Logique=%s\n" #: modules/devices/storage.c:799 #, c-format msgid "" "[Capabilities]\n" "%s" msgstr "" "[Capacités]\n" "%s" #: modules/devices/storage.c:806 #, c-format msgid "" "[Speeds]\n" "%s" msgstr "" "[Vitesses]\n" "%s" #: modules/devices/usb.c:137 modules/devices/usb.c:178 msgid "Sub-class" msgstr "" #: modules/devices/usb.c:138 modules/devices/usb.c:179 modules/network.c:348 msgid "Protocol" msgstr "" #: modules/devices/usb.c:146 modules/network/net.c:474 msgid "Mb/s" msgstr "" #: modules/devices/usb.c:174 msgid "Max Current" msgstr "" #: modules/devices/usb.c:174 msgid "mA" msgstr "" #: modules/devices/usb.c:175 msgid "USB Version" msgstr "" #: modules/devices/usb.c:180 msgid "Device Version" msgstr "Version du périphériques" #: modules/devices/usb.c:222 msgid "No USB devices found." msgstr "Aucun périphérique USB trouvé" #: modules/devices/x86/processor.c:648 msgid "Model Name" msgstr "Nom du modèle" #: modules/devices/x86/processor.c:649 msgid "Family, model, stepping" msgstr "Famille, modèle, stepping" #: modules/devices/x86/processor.c:655 msgid "Microcode Version" msgstr "" #: modules/devices/x86/processor.c:656 msgid "Configuration" msgstr "" #: modules/devices/x86/processor.c:657 msgid "Cache Size" msgstr "Taille du Cache" #: modules/devices/x86/processor.c:657 msgid "kb" msgstr "" #: modules/devices/x86/processor.c:665 msgid "Bug Workarounds" msgstr "" #: modules/devices/x86/processor.c:692 msgid "Socket Information" msgstr "" #: modules/devices/x86/processor.c:695 msgid "(Not available; Perhaps try running hardinfo2 as root.)" msgstr "" #: modules/devices/x86/processor.c:713 msgid "CPU Socket" msgstr "" #: modules/devices/x86/processor.c:717 msgid "External Clock" msgstr "" #: modules/devices/x86/processor.c:718 msgid "Max Frequency" msgstr "" #: modules/devices/x86/processor.c:749 msgid "Package Information" msgstr "" #: modules/devices/x86/processor.c:811 msgid "Socket:Core" msgstr "" #. !/flag:fpu #: modules/devices/x86/x86_data.c:48 msgctxt "x86-flag" msgid "Onboard FPU (floating point support)" msgstr "" #. !/flag:vme #: modules/devices/x86/x86_data.c:49 msgctxt "x86-flag" msgid "Virtual 8086 mode enhancements" msgstr "" #. !/flag:de #: modules/devices/x86/x86_data.c:50 msgctxt "x86-flag" msgid "Debugging Extensions (CR4.DE)" msgstr "" #. !/flag:pse #: modules/devices/x86/x86_data.c:51 msgctxt "x86-flag" msgid "Page Size Extensions (4MB memory pages)" msgstr "" #. !/flag:tsc #: modules/devices/x86/x86_data.c:52 msgctxt "x86-flag" msgid "Time Stamp Counter (RDTSC)" msgstr "" #. !/flag:msr #: modules/devices/x86/x86_data.c:53 msgctxt "x86-flag" msgid "Model-Specific Registers (RDMSR, WRMSR)" msgstr "" #. !/flag:pae #: modules/devices/x86/x86_data.c:54 msgctxt "x86-flag" msgid "Physical Address Extensions (support for more than 4GB of RAM)" msgstr "" #. !/flag:mce #: modules/devices/x86/x86_data.c:55 msgctxt "x86-flag" msgid "Machine Check Exception" msgstr "" #. !/flag:cx8 #: modules/devices/x86/x86_data.c:56 msgctxt "x86-flag" msgid "CMPXCHG8 instruction (64-bit compare-and-swap)" msgstr "" #. !/flag:apic #: modules/devices/x86/x86_data.c:57 msgctxt "x86-flag" msgid "Onboard APIC" msgstr "" #. !/flag:sep #: modules/devices/x86/x86_data.c:58 msgctxt "x86-flag" msgid "SYSENTER/SYSEXIT" msgstr "" #. !/flag:mtrr #: modules/devices/x86/x86_data.c:59 msgctxt "x86-flag" msgid "Memory Type Range Registers" msgstr "" #. !/flag:pge #: modules/devices/x86/x86_data.c:60 msgctxt "x86-flag" msgid "Page Global Enable (global bit in PDEs and PTEs)" msgstr "" #. !/flag:mca #: modules/devices/x86/x86_data.c:61 msgctxt "x86-flag" msgid "Machine Check Architecture" msgstr "" #. !/flag:cmov #: modules/devices/x86/x86_data.c:62 msgctxt "x86-flag" msgid "CMOV instructions (conditional move) (also FCMOV)" msgstr "" #. !/flag:pat #: modules/devices/x86/x86_data.c:63 msgctxt "x86-flag" msgid "Page Attribute Table" msgstr "" #. !/flag:pse36 #: modules/devices/x86/x86_data.c:64 msgctxt "x86-flag" msgid "36-bit PSEs (huge pages)" msgstr "" #. !/flag:pn #: modules/devices/x86/x86_data.c:65 msgctxt "x86-flag" msgid "Processor serial number" msgstr "" #. !/flag:clflush #: modules/devices/x86/x86_data.c:66 msgctxt "x86-flag" msgid "Cache Line Flush instruction" msgstr "" #. !/flag:dts #: modules/devices/x86/x86_data.c:67 msgctxt "x86-flag" msgid "" "Debug Store (buffer for debugging and profiling instructions), or " "alternately: digital thermal sensor" msgstr "" #. !/flag:acpi #: modules/devices/x86/x86_data.c:68 msgctxt "x86-flag" msgid "ACPI via MSR (temperature monitoring and clock speed modulation)" msgstr "" #. !/flag:mmx #: modules/devices/x86/x86_data.c:69 msgctxt "x86-flag" msgid "Multimedia Extensions" msgstr "Plugins Multimédia" #. !/flag:fxsr #: modules/devices/x86/x86_data.c:70 msgctxt "x86-flag" msgid "FXSAVE/FXRSTOR, CR4.OSFXSR" msgstr "" #. !/flag:sse #: modules/devices/x86/x86_data.c:71 msgctxt "x86-flag" msgid "Intel SSE vector instructions" msgstr "" #. !/flag:sse2 #: modules/devices/x86/x86_data.c:72 msgctxt "x86-flag" msgid "SSE2" msgstr "" #. !/flag:ss #: modules/devices/x86/x86_data.c:73 msgctxt "x86-flag" msgid "CPU self snoop" msgstr "" #. !/flag:ht #: modules/devices/x86/x86_data.c:74 msgctxt "x86-flag" msgid "Hyper-Threading" msgstr "" #. !/flag:tm #: modules/devices/x86/x86_data.c:75 msgctxt "x86-flag" msgid "Automatic clock control (Thermal Monitor)" msgstr "" #. !/flag:ia64 #: modules/devices/x86/x86_data.c:76 msgctxt "x86-flag" msgid "" "Intel Itanium Architecture 64-bit (not to be confused with Intel's 64-bit " "x86 architecture with flag x86-64 or \"AMD64\" bit indicated by flag lm)" msgstr "" "Intel Itanium Architecture 64-bit (à ne pas confondre avec le 64-bit " "d'Intel) Architecture x86 avec drapeau x86-64 ou \"AMD64\" bit indiqué par " "drapeau lm)" #. !/flag:pbe #: modules/devices/x86/x86_data.c:77 msgctxt "x86-flag" msgid "Pending Break Enable (PBE# pin) wakeup support" msgstr "Prise en charge du réveil Pending Break Enable (broche PBE#)" #. !/flag:syscall #: modules/devices/x86/x86_data.c:80 msgctxt "x86-flag" msgid "SYSCALL (Fast System Call) and SYSRET (Return From Fast System Call)" msgstr "" #. !/flag:mp #: modules/devices/x86/x86_data.c:81 msgctxt "x86-flag" msgid "Multiprocessing Capable." msgstr "" #. !/flag:nx #: modules/devices/x86/x86_data.c:82 msgctxt "x86-flag" msgid "Execute Disable" msgstr "" #. !/flag:mmxext #: modules/devices/x86/x86_data.c:83 msgctxt "x86-flag" msgid "AMD MMX extensions" msgstr "" #. !/flag:fxsr_opt #: modules/devices/x86/x86_data.c:84 msgctxt "x86-flag" msgid "FXSAVE/FXRSTOR optimizations" msgstr "" #. !/flag:pdpe1gb #: modules/devices/x86/x86_data.c:85 msgctxt "x86-flag" msgid "One GB pages (allows hugepagesz=1G)" msgstr "" #. !/flag:rdtscp #: modules/devices/x86/x86_data.c:86 msgctxt "x86-flag" msgid "Read Time-Stamp Counter and Processor ID" msgstr "" #. !/flag:lm #: modules/devices/x86/x86_data.c:87 msgctxt "x86-flag" msgid "Long Mode (x86-64: amd64, also known as Intel 64, i.e. 64-bit capable)" msgstr "" #. !/flag:3dnow #: modules/devices/x86/x86_data.c:88 msgctxt "x86-flag" msgid "3DNow! (AMD vector instructions, competing with Intel's SSE1)" msgstr "" #. !/flag:3dnowext #: modules/devices/x86/x86_data.c:89 msgctxt "x86-flag" msgid "AMD 3DNow! extensions" msgstr "" #. !/flag:recovery #: modules/devices/x86/x86_data.c:91 msgctxt "x86-flag" msgid "CPU in recovery mode" msgstr "CPU en mode recovery" #. !/flag:longrun #: modules/devices/x86/x86_data.c:92 msgctxt "x86-flag" msgid "Longrun power control" msgstr "" #. !/flag:lrti #: modules/devices/x86/x86_data.c:93 msgctxt "x86-flag" msgid "LongRun table interface" msgstr "" #. !/flag:cxmmx #: modules/devices/x86/x86_data.c:95 msgctxt "x86-flag" msgid "Cyrix MMX extensions" msgstr "" #. !/flag:k6_mtrr #: modules/devices/x86/x86_data.c:96 msgctxt "x86-flag" msgid "AMD K6 nonstandard MTRRs" msgstr "" #. !/flag:cyrix_arr #: modules/devices/x86/x86_data.c:97 msgctxt "x86-flag" msgid "Cyrix ARRs (= MTRRs)" msgstr "" #. !/flag:centaur_mcr #: modules/devices/x86/x86_data.c:98 msgctxt "x86-flag" msgid "Centaur MCRs (= MTRRs)" msgstr "" #. !/flag:constant_tsc #: modules/devices/x86/x86_data.c:99 msgctxt "x86-flag" msgid "TSC ticks at a constant rate" msgstr "" #. !/flag:up #: modules/devices/x86/x86_data.c:100 msgctxt "x86-flag" msgid "SMP kernel running on UP" msgstr "" #. !/flag:art #: modules/devices/x86/x86_data.c:101 msgctxt "x86-flag" msgid "Always-Running Timer" msgstr "" #. !/flag:arch_perfmon #: modules/devices/x86/x86_data.c:102 msgctxt "x86-flag" msgid "Intel Architectural PerfMon" msgstr "" #. !/flag:pebs #: modules/devices/x86/x86_data.c:103 msgctxt "x86-flag" msgid "Precise-Event Based Sampling" msgstr "" #. !/flag:bts #: modules/devices/x86/x86_data.c:104 msgctxt "x86-flag" msgid "Branch Trace Store" msgstr "" #. !/flag:rep_good #: modules/devices/x86/x86_data.c:105 msgctxt "x86-flag" msgid "rep microcode works well" msgstr "" #. !/flag:acc_power #: modules/devices/x86/x86_data.c:106 msgctxt "x86-flag" msgid "AMD accumulated power mechanism" msgstr "" #. !/flag:nopl #: modules/devices/x86/x86_data.c:107 msgctxt "x86-flag" msgid "The NOPL (0F 1F) instructions" msgstr "" #. !/flag:xtopology #: modules/devices/x86/x86_data.c:108 msgctxt "x86-flag" msgid "cpu topology enum extensions" msgstr "" #. !/flag:tsc_reliable #: modules/devices/x86/x86_data.c:109 msgctxt "x86-flag" msgid "TSC is known to be reliable" msgstr "" #. !/flag:nonstop_tsc #: modules/devices/x86/x86_data.c:110 msgctxt "x86-flag" msgid "TSC does not stop in C states" msgstr "" #. !/flag:extd_apicid #: modules/devices/x86/x86_data.c:111 msgctxt "x86-flag" msgid "has extended APICID (8 bits)" msgstr "" #. !/flag:amd_dcm #: modules/devices/x86/x86_data.c:112 msgctxt "x86-flag" msgid "multi-node processor" msgstr "" #. !/flag:aperfmperf #: modules/devices/x86/x86_data.c:113 msgctxt "x86-flag" msgid "APERFMPERF" msgstr "" #. !/flag:eagerfpu #: modules/devices/x86/x86_data.c:114 msgctxt "x86-flag" msgid "Non lazy FPU restore" msgstr "" #. !/flag:nonstop_tsc_s3 #: modules/devices/x86/x86_data.c:115 msgctxt "x86-flag" msgid "TSC doesn't stop in S3 state" msgstr "" #. !/flag:mce_recovery #: modules/devices/x86/x86_data.c:116 msgctxt "x86-flag" msgid "CPU has recoverable machine checks" msgstr "" #. !/flag:pni #: modules/devices/x86/x86_data.c:119 msgctxt "x86-flag" msgid "SSE-3 (\"Prescott New Instructions\")" msgstr "" #. !/flag:pclmulqdq #: modules/devices/x86/x86_data.c:120 msgctxt "x86-flag" msgid "" "Perform a Carry-Less Multiplication of Quadword instruction - accelerator " "for GCM)" msgstr "" #. !/flag:dtes64 #: modules/devices/x86/x86_data.c:121 msgctxt "x86-flag" msgid "64-bit Debug Store" msgstr "" #. !/flag:monitor #: modules/devices/x86/x86_data.c:122 msgctxt "x86-flag" msgid "Monitor/Mwait support (Intel SSE3 supplements)" msgstr "" #. !/flag:ds_cpl #: modules/devices/x86/x86_data.c:123 msgctxt "x86-flag" msgid "CPL Qual. Debug Store" msgstr "" #. !/flag:vmx #: modules/devices/x86/x86_data.c:124 msgctxt "x86-flag" msgid "Hardware virtualization, Intel VMX" msgstr "" #. !/flag:smx #: modules/devices/x86/x86_data.c:125 msgctxt "x86-flag" msgid "Safer mode TXT (TPM support)" msgstr "" #. !/flag:est #: modules/devices/x86/x86_data.c:126 msgctxt "x86-flag" msgid "Enhanced SpeedStep" msgstr "" #. !/flag:tm2 #: modules/devices/x86/x86_data.c:127 msgctxt "x86-flag" msgid "Thermal Monitor 2" msgstr "" #. !/flag:ssse3 #: modules/devices/x86/x86_data.c:128 msgctxt "x86-flag" msgid "Supplemental SSE-3" msgstr "" #. !/flag:cid #: modules/devices/x86/x86_data.c:129 msgctxt "x86-flag" msgid "Context ID" msgstr "" #. !/flag:sdbg #: modules/devices/x86/x86_data.c:130 msgctxt "x86-flag" msgid "silicon debug" msgstr "" #. !/flag:fma #: modules/devices/x86/x86_data.c:131 msgctxt "x86-flag" msgid "Fused multiply-add" msgstr "" #. !/flag:cx16 #: modules/devices/x86/x86_data.c:132 msgctxt "x86-flag" msgid "CMPXCHG16B" msgstr "" #. !/flag:xtpr #: modules/devices/x86/x86_data.c:133 msgctxt "x86-flag" msgid "Send Task Priority Messages" msgstr "Envoyer des messages des tâches prioritaires" #. !/flag:pdcm #: modules/devices/x86/x86_data.c:134 msgctxt "x86-flag" msgid "Performance Capabilities" msgstr "Capacités de performance" #. !/flag:pcid #: modules/devices/x86/x86_data.c:135 msgctxt "x86-flag" msgid "Process Context Identifiers" msgstr "" #. !/flag:dca #: modules/devices/x86/x86_data.c:136 msgctxt "x86-flag" msgid "Direct Cache Access" msgstr "" #. !/flag:sse4_1 #: modules/devices/x86/x86_data.c:137 msgctxt "x86-flag" msgid "SSE-4.1" msgstr "" #. !/flag:sse4_2 #: modules/devices/x86/x86_data.c:138 msgctxt "x86-flag" msgid "SSE-4.2" msgstr "" #. !/flag:x2apic #: modules/devices/x86/x86_data.c:139 msgctxt "x86-flag" msgid "x2APIC" msgstr "" #. !/flag:movbe #: modules/devices/x86/x86_data.c:140 msgctxt "x86-flag" msgid "Move Data After Swapping Bytes instruction" msgstr "Déplacer les données après l'instruction d'échange d'octets" #. !/flag:popcnt #: modules/devices/x86/x86_data.c:141 msgctxt "x86-flag" msgid "" "Return the Count of Number of Bits Set to 1 instruction (Hamming weight, i." "e. bit count)" msgstr "" "Retourne le nombre de bits réglé à 1 instruction (poids de Hamming, i.e. " "nombre de bits)" #: modules/devices/x86/x86_data.c:142 msgctxt "x86-flag" msgid "Tsc deadline timer" msgstr "" #. !/flag:aes/aes-ni #: modules/devices/x86/x86_data.c:143 msgctxt "x86-flag" msgid "Advanced Encryption Standard (New Instructions)" msgstr "Norme de chriffrement avancée (nouvelles instructions)" #. !/flag:xsave #: modules/devices/x86/x86_data.c:144 msgctxt "x86-flag" msgid "Save Processor Extended States: also provides XGETBY,XRSTOR,XSETBY" msgstr "" "Save Processor Extended States : fournit également XGETBY,XRSTOR,XSETBY" #. !/flag:avx #: modules/devices/x86/x86_data.c:145 msgctxt "x86-flag" msgid "Advanced Vector Extensions" msgstr "" #. !/flag:f16c #: modules/devices/x86/x86_data.c:146 msgctxt "x86-flag" msgid "16-bit fp conversions (CVT16)" msgstr "" #. !/flag:rdrand #: modules/devices/x86/x86_data.c:147 msgctxt "x86-flag" msgid "Read Random Number from hardware random number generator instruction" msgstr "" "Lecture d'un nombre aléatoire à partir de l'instruction du générateur de " "nombres aléatoires matériel" #. !/flag:hypervisor #: modules/devices/x86/x86_data.c:148 msgctxt "x86-flag" msgid "Running on a hypervisor" msgstr "" #. !/flag:rng #: modules/devices/x86/x86_data.c:150 msgctxt "x86-flag" msgid "Random Number Generator present (xstore)" msgstr "Générateur de chriffrement présent (xstore)" #. !/flag:rng_en #: modules/devices/x86/x86_data.c:151 msgctxt "x86-flag" msgid "Random Number Generator enabled" msgstr "Générateur de chriffrement présent" #. !/flag:ace #: modules/devices/x86/x86_data.c:152 msgctxt "x86-flag" msgid "on-CPU crypto (xcrypt)" msgstr "" #. !/flag:ace_en #: modules/devices/x86/x86_data.c:153 msgctxt "x86-flag" msgid "on-CPU crypto enabled" msgstr "" #. !/flag:ace2 #: modules/devices/x86/x86_data.c:154 msgctxt "x86-flag" msgid "Advanced Cryptography Engine v2" msgstr "" #. !/flag:ace2_en #: modules/devices/x86/x86_data.c:155 msgctxt "x86-flag" msgid "ACE v2 enabled" msgstr "" #. !/flag:phe #: modules/devices/x86/x86_data.c:156 msgctxt "x86-flag" msgid "PadLock Hash Engine" msgstr "" #. !/flag:phe_en #: modules/devices/x86/x86_data.c:157 msgctxt "x86-flag" msgid "PHE enabled" msgstr "" #. !/flag:pmm #: modules/devices/x86/x86_data.c:158 msgctxt "x86-flag" msgid "PadLock Montgomery Multiplier" msgstr "" #. !/flag:pmm_en #: modules/devices/x86/x86_data.c:159 msgctxt "x86-flag" msgid "PMM enabled" msgstr "" #. !/flag:lahf_lm #: modules/devices/x86/x86_data.c:161 msgctxt "x86-flag" msgid "Load AH from Flags (LAHF) and Store AH into Flags (SAHF) in long mode" msgstr "" #. !/flag:cmp_legacy #: modules/devices/x86/x86_data.c:162 msgctxt "x86-flag" msgid "If yes HyperThreading not valid" msgstr "" #. !/flag:svm #: modules/devices/x86/x86_data.c:163 msgctxt "x86-flag" msgid "\"Secure virtual machine\": AMD-V" msgstr "" #. !/flag:extapic #: modules/devices/x86/x86_data.c:164 msgctxt "x86-flag" msgid "Extended APIC space" msgstr "" #. !/flag:cr8_legacy #: modules/devices/x86/x86_data.c:165 msgctxt "x86-flag" msgid "CR8 in 32-bit mode" msgstr "" #. !/flag:abm #: modules/devices/x86/x86_data.c:166 msgctxt "x86-flag" msgid "Advanced Bit Manipulation" msgstr "" #. !/flag:sse4a #: modules/devices/x86/x86_data.c:167 msgctxt "x86-flag" msgid "SSE-4A" msgstr "" #. !/flag:misalignsse #: modules/devices/x86/x86_data.c:168 msgctxt "x86-flag" msgid "" "indicates if a general-protection exception (#GP) is generated when some " "legacy SSE instructions operate on unaligned data. Also depends on CR0 and " "Alignment Checking bit" msgstr "" "indique si une exception de protection générale (#GP) est généréelorsque " "certaines instructions SSE héritées fonctionnent sur des données non " "alignées.Dépend aussi de CR0 et contrôle d'alignement des octets" #. !/flag:3dnowprefetch #: modules/devices/x86/x86_data.c:169 msgctxt "x86-flag" msgid "3DNow prefetch instructions" msgstr "" #. !/flag:osvw #: modules/devices/x86/x86_data.c:170 msgctxt "x86-flag" msgid "" "indicates OS Visible Workaround, which allows the OS to work around " "processor errata." msgstr "" #. !/flag:ibs #: modules/devices/x86/x86_data.c:171 msgctxt "x86-flag" msgid "Instruction Based Sampling" msgstr "" #. !/flag:xop #: modules/devices/x86/x86_data.c:172 msgctxt "x86-flag" msgid "extended AVX instructions" msgstr "" #. !/flag:skinit #: modules/devices/x86/x86_data.c:173 msgctxt "x86-flag" msgid "SKINIT/STGI instructions" msgstr "" #. !/flag:wdt #: modules/devices/x86/x86_data.c:174 msgctxt "x86-flag" msgid "Watchdog timer" msgstr "" #. !/flag:lwp #: modules/devices/x86/x86_data.c:175 msgctxt "x86-flag" msgid "Light Weight Profiling" msgstr "" #. !/flag:fma4 #: modules/devices/x86/x86_data.c:176 msgctxt "x86-flag" msgid "4 operands MAC instructions" msgstr "" #. !/flag:tce #: modules/devices/x86/x86_data.c:177 msgctxt "x86-flag" msgid "translation cache extension" msgstr "" #. !/flag:nodeid_msr #: modules/devices/x86/x86_data.c:178 msgctxt "x86-flag" msgid "NodeId MSR" msgstr "" #. !/flag:tbm #: modules/devices/x86/x86_data.c:179 msgctxt "x86-flag" msgid "Trailing Bit Manipulation" msgstr "" #. !/flag:topoext #: modules/devices/x86/x86_data.c:180 msgctxt "x86-flag" msgid "Topology Extensions CPUID leafs" msgstr "" #. !/flag:perfctr_core #: modules/devices/x86/x86_data.c:181 msgctxt "x86-flag" msgid "Core Performance Counter Extensions" msgstr "" #. !/flag:perfctr_nb #: modules/devices/x86/x86_data.c:182 msgctxt "x86-flag" msgid "NB Performance Counter Extensions" msgstr "" #. !/flag:bpext #: modules/devices/x86/x86_data.c:183 msgctxt "x86-flag" msgid "data breakpoint extension" msgstr "" #. !/flag:ptsc #: modules/devices/x86/x86_data.c:184 msgctxt "x86-flag" msgid "performance time-stamp counter" msgstr "" #. !/flag:perfctr_l2 #: modules/devices/x86/x86_data.c:185 msgctxt "x86-flag" msgid "L2 Performance Counter Extensions" msgstr "" #. !/flag:mwaitx #: modules/devices/x86/x86_data.c:186 msgctxt "x86-flag" msgid "MWAIT extension (MONITORX/MWAITX)" msgstr "" #. !/flag:cpb #: modules/devices/x86/x86_data.c:188 msgctxt "x86-flag" msgid "AMD Core Performance Boost" msgstr "" #. !/flag:epb #: modules/devices/x86/x86_data.c:189 msgctxt "x86-flag" msgid "IA32_ENERGY_PERF_BIAS support" msgstr "" #. !/flag:hw_pstate #: modules/devices/x86/x86_data.c:190 msgctxt "x86-flag" msgid "AMD HW-PState" msgstr "" #. !/flag:proc_feedback #: modules/devices/x86/x86_data.c:191 msgctxt "x86-flag" msgid "AMD ProcFeedbackInterface" msgstr "" #. !/flag:intel_pt #: modules/devices/x86/x86_data.c:192 msgctxt "x86-flag" msgid "Intel Processor Tracing" msgstr "" #. !/flag:tpr_shadow #: modules/devices/x86/x86_data.c:194 msgctxt "x86-flag" msgid "Intel TPR Shadow" msgstr "" #. !/flag:vnmi #: modules/devices/x86/x86_data.c:195 msgctxt "x86-flag" msgid "Intel Virtual NMI" msgstr "" #. !/flag:flexpriority #: modules/devices/x86/x86_data.c:196 msgctxt "x86-flag" msgid "Intel FlexPriority" msgstr "" #. !/flag:ept #: modules/devices/x86/x86_data.c:197 msgctxt "x86-flag" msgid "Intel Extended Page Table" msgstr "" #. !/flag:vpid #: modules/devices/x86/x86_data.c:198 msgctxt "x86-flag" msgid "Intel Virtual Processor ID" msgstr "" #. !/flag:vmmcall #: modules/devices/x86/x86_data.c:199 msgctxt "x86-flag" msgid "prefer VMMCALL to VMCALL" msgstr "" #. !/flag:fsgsbase #: modules/devices/x86/x86_data.c:201 msgctxt "x86-flag" msgid "{RD/WR}{FS/GS}BASE instructions" msgstr "" #. !/flag:tsc_adjust #: modules/devices/x86/x86_data.c:202 msgctxt "x86-flag" msgid "TSC adjustment MSR" msgstr "" #. !/flag:bmi1 #: modules/devices/x86/x86_data.c:203 msgctxt "x86-flag" msgid "1st group bit manipulation extensions" msgstr "" #. !/flag:hle #: modules/devices/x86/x86_data.c:204 msgctxt "x86-flag" msgid "Hardware Lock Elision" msgstr "" #. !/flag:avx2 #: modules/devices/x86/x86_data.c:205 msgctxt "x86-flag" msgid "AVX2 instructions" msgstr "" #. !/flag:smep #: modules/devices/x86/x86_data.c:206 msgctxt "x86-flag" msgid "Supervisor Mode Execution Protection" msgstr "" #. !/flag:bmi2 #: modules/devices/x86/x86_data.c:207 msgctxt "x86-flag" msgid "2nd group bit manipulation extensions" msgstr "" #. !/flag:erms #: modules/devices/x86/x86_data.c:208 msgctxt "x86-flag" msgid "Enhanced REP MOVSB/STOSB" msgstr "" #. !/flag:invpcid #: modules/devices/x86/x86_data.c:209 msgctxt "x86-flag" msgid "Invalidate Processor Context ID" msgstr "" #. !/flag:rtm #: modules/devices/x86/x86_data.c:210 msgctxt "x86-flag" msgid "Restricted Transactional Memory" msgstr "" #. !/flag:cqm #: modules/devices/x86/x86_data.c:211 msgctxt "x86-flag" msgid "Cache QoS Monitoring" msgstr "" #. !/flag:mpx #: modules/devices/x86/x86_data.c:212 msgctxt "x86-flag" msgid "Memory Protection Extension" msgstr "" #. !/flag:avx512f #: modules/devices/x86/x86_data.c:213 msgctxt "x86-flag" msgid "AVX-512 foundation" msgstr "" #. !/flag:avx512dq #: modules/devices/x86/x86_data.c:214 msgctxt "x86-flag" msgid "AVX-512 Double/Quad instructions" msgstr "" #. !/flag:rdseed #: modules/devices/x86/x86_data.c:215 msgctxt "x86-flag" msgid "The RDSEED instruction" msgstr "" #. !/flag:adx #: modules/devices/x86/x86_data.c:216 msgctxt "x86-flag" msgid "The ADCX and ADOX instructions" msgstr "" #. !/flag:smap #: modules/devices/x86/x86_data.c:217 msgctxt "x86-flag" msgid "Supervisor Mode Access Prevention" msgstr "" #. !/flag:clflushopt #: modules/devices/x86/x86_data.c:218 msgctxt "x86-flag" msgid "CLFLUSHOPT instruction" msgstr "" #. !/flag:clwb #: modules/devices/x86/x86_data.c:219 msgctxt "x86-flag" msgid "CLWB instruction" msgstr "" #. !/flag:avx512pf #: modules/devices/x86/x86_data.c:220 msgctxt "x86-flag" msgid "AVX-512 Prefetch" msgstr "" #. !/flag:avx512er #: modules/devices/x86/x86_data.c:221 msgctxt "x86-flag" msgid "AVX-512 Exponential and Reciprocal" msgstr "" #. !/flag:avx512cd #: modules/devices/x86/x86_data.c:222 msgctxt "x86-flag" msgid "AVX-512 Conflict Detection" msgstr "" #. !/flag:sha_ni #: modules/devices/x86/x86_data.c:223 msgctxt "x86-flag" msgid "SHA1/SHA256 Instruction Extensions" msgstr "" #. !/flag:avx512bw #: modules/devices/x86/x86_data.c:224 msgctxt "x86-flag" msgid "AVX-512 Byte/Word instructions" msgstr "" #. !/flag:avx512vl #: modules/devices/x86/x86_data.c:225 msgctxt "x86-flag" msgid "AVX-512 128/256 Vector Length extensions" msgstr "" #. !/flag:xsaveopt #: modules/devices/x86/x86_data.c:227 msgctxt "x86-flag" msgid "Optimized XSAVE" msgstr "" #. !/flag:xsavec #: modules/devices/x86/x86_data.c:228 msgctxt "x86-flag" msgid "XSAVEC" msgstr "" #. !/flag:xgetbv1 #: modules/devices/x86/x86_data.c:229 msgctxt "x86-flag" msgid "XGETBV with ECX = 1" msgstr "" #. !/flag:xsaves #: modules/devices/x86/x86_data.c:230 msgctxt "x86-flag" msgid "XSAVES/XRSTORS" msgstr "" #. !/flag:cqm_llc #: modules/devices/x86/x86_data.c:232 msgctxt "x86-flag" msgid "LLC QoS" msgstr "" #. !/flag:cqm_occup_llc #: modules/devices/x86/x86_data.c:234 msgctxt "x86-flag" msgid "LLC occupancy monitoring" msgstr "" #. !/flag:cqm_mbm_total #: modules/devices/x86/x86_data.c:235 msgctxt "x86-flag" msgid "LLC total MBM monitoring" msgstr "" #. !/flag:cqm_mbm_local #: modules/devices/x86/x86_data.c:236 msgctxt "x86-flag" msgid "LLC local MBM monitoring" msgstr "" #. !/flag:clzero #: modules/devices/x86/x86_data.c:238 msgctxt "x86-flag" msgid "CLZERO instruction" msgstr "" #. !/flag:irperf #: modules/devices/x86/x86_data.c:239 msgctxt "x86-flag" msgid "instructions retired performance counter" msgstr "" #. !/flag:dtherm #: modules/devices/x86/x86_data.c:241 msgctxt "x86-flag" msgid "digital thermal sensor" msgstr "" #. !/flag:ida #: modules/devices/x86/x86_data.c:242 msgctxt "x86-flag" msgid "Intel Dynamic Acceleration" msgstr "" #. !/flag:arat #: modules/devices/x86/x86_data.c:243 msgctxt "x86-flag" msgid "Always Running APIC Timer" msgstr "" #. !/flag:pln #: modules/devices/x86/x86_data.c:244 msgctxt "x86-flag" msgid "Intel Power Limit Notification" msgstr "" #. !/flag:pts #: modules/devices/x86/x86_data.c:245 msgctxt "x86-flag" msgid "Intel Package Thermal Status" msgstr "" #. !/flag:hwp #: modules/devices/x86/x86_data.c:246 msgctxt "x86-flag" msgid "Intel Hardware P-states" msgstr "" #. !/flag:hwp_notify #: modules/devices/x86/x86_data.c:247 msgctxt "x86-flag" msgid "HWP notification" msgstr "" #. !/flag:hwp_act_window #: modules/devices/x86/x86_data.c:248 msgctxt "x86-flag" msgid "HWP Activity Window" msgstr "" #. !/flag:hwp_epp #: modules/devices/x86/x86_data.c:249 msgctxt "x86-flag" msgid "HWP Energy Performance Preference" msgstr "" #. !/flag:hwp_pkg_req #: modules/devices/x86/x86_data.c:250 msgctxt "x86-flag" msgid "HWP package-level request" msgstr "" #. !/flag:npt #: modules/devices/x86/x86_data.c:252 msgctxt "x86-flag" msgid "AMD Nested Page Table support" msgstr "" #. !/flag:lbrv #: modules/devices/x86/x86_data.c:253 msgctxt "x86-flag" msgid "AMD LBR Virtualization support" msgstr "" #. !/flag:svm_lock #: modules/devices/x86/x86_data.c:254 msgctxt "x86-flag" msgid "AMD SVM locking MSR" msgstr "" #. !/flag:nrip_save #: modules/devices/x86/x86_data.c:255 msgctxt "x86-flag" msgid "AMD SVM next_rip save" msgstr "" #. !/flag:tsc_scale #: modules/devices/x86/x86_data.c:256 msgctxt "x86-flag" msgid "AMD TSC scaling support" msgstr "" #. !/flag:vmcb_clean #: modules/devices/x86/x86_data.c:257 msgctxt "x86-flag" msgid "AMD VMCB clean bits support" msgstr "" #. !/flag:flushbyasid #: modules/devices/x86/x86_data.c:258 msgctxt "x86-flag" msgid "AMD flush-by-ASID support" msgstr "" #. !/flag:decodeassists #: modules/devices/x86/x86_data.c:259 msgctxt "x86-flag" msgid "AMD Decode Assists support" msgstr "" #. !/flag:pausefilter #: modules/devices/x86/x86_data.c:260 msgctxt "x86-flag" msgid "AMD filtered pause intercept" msgstr "" #. !/flag:pfthreshold #: modules/devices/x86/x86_data.c:261 msgctxt "x86-flag" msgid "AMD pause filter threshold" msgstr "" #. !/flag:avic #: modules/devices/x86/x86_data.c:262 msgctxt "x86-flag" msgid "Virtual Interrupt Controller" msgstr "" #. !/flag:pku #: modules/devices/x86/x86_data.c:264 msgctxt "x86-flag" msgid "Protection Keys for Userspace" msgstr "" #. !/flag:ospke #: modules/devices/x86/x86_data.c:265 msgctxt "x86-flag" msgid "OS Protection Keys Enable" msgstr "" #. !/flag:overflow_recov #: modules/devices/x86/x86_data.c:267 msgctxt "x86-flag" msgid "MCA overflow recovery support" msgstr "" #. !/flag:succor #: modules/devices/x86/x86_data.c:268 msgctxt "x86-flag" msgid "uncorrectable error containment and recovery" msgstr "" #. !/flag:smca #: modules/devices/x86/x86_data.c:269 msgctxt "x86-flag" msgid "Scalable MCA" msgstr "" #. !/bug:f00f #: modules/devices/x86/x86_data.c:272 msgctxt "x86-flag" msgid "Intel F00F bug" msgstr "" #. !/bug:fdiv #: modules/devices/x86/x86_data.c:273 msgctxt "x86-flag" msgid "FPU FDIV" msgstr "" #. !/bug:coma #: modules/devices/x86/x86_data.c:274 msgctxt "x86-flag" msgid "Cyrix 6x86 coma" msgstr "" #. !/bug:tlb_mmatch #: modules/devices/x86/x86_data.c:275 msgctxt "x86-flag" msgid "AMD Erratum 383" msgstr "" #. !/bug:apic_c1e #. !/bug:amd_e400 #: modules/devices/x86/x86_data.c:276 modules/devices/x86/x86_data.c:285 msgctxt "x86-flag" msgid "AMD Erratum 400" msgstr "" #. !/bug:11ap #: modules/devices/x86/x86_data.c:277 msgctxt "x86-flag" msgid "Bad local APIC aka 11AP" msgstr "" #. !/bug:fxsave_leak #: modules/devices/x86/x86_data.c:278 msgctxt "x86-flag" msgid "FXSAVE leaks FOP/FIP/FOP" msgstr "" #. !/bug:clflush_monitor #: modules/devices/x86/x86_data.c:279 msgctxt "x86-flag" msgid "AAI65, CLFLUSH required before MONITOR" msgstr "" #. !/bug:sysret_ss_attrs #: modules/devices/x86/x86_data.c:280 msgctxt "x86-flag" msgid "SYSRET doesn't fix up SS attrs" msgstr "" #. !/bug:espfix #: modules/devices/x86/x86_data.c:281 msgctxt "x86-flag" msgid "IRET to 16-bit SS corrupts ESP/RSP high bits" msgstr "" #. !/bug:null_seg #: modules/devices/x86/x86_data.c:282 msgctxt "x86-flag" msgid "Nulling a selector preserves the base" msgstr "" #. !/bug:swapgs_fence #: modules/devices/x86/x86_data.c:283 msgctxt "x86-flag" msgid "SWAPGS without input dep on GS" msgstr "" #. !/bug:monitor #: modules/devices/x86/x86_data.c:284 msgctxt "x86-flag" msgid "IPI required to wake up remote CPU" msgstr "" #. !/bug:cpu_insecure & bug:cpu_meltdown #: modules/devices/x86/x86_data.c:286 modules/devices/x86/x86_data.c:287 msgctxt "x86-flag" msgid "" "CPU is affected by meltdown attack and needs kernel page table isolation" msgstr "" #. !/bug:spectre_v1 #: modules/devices/x86/x86_data.c:288 msgctxt "x86-flag" msgid "CPU is affected by Spectre variant 1 attack with conditional branches" msgstr "" #. !/bug:spectre_v2 #: modules/devices/x86/x86_data.c:289 msgctxt "x86-flag" msgid "CPU is affected by Spectre variant 2 attack with indirect branches" msgstr "" #. !/bug:spec_store_bypass #: modules/devices/x86/x86_data.c:290 msgctxt "x86-flag" msgid "CPU is affected by speculative store bypass attack" msgstr "" #. !/bug:l1tf #: modules/devices/x86/x86_data.c:291 msgctxt "x86-flag" msgid "CPU is affected by L1 Terminal Fault" msgstr "" #. !/flag:pm:ts #: modules/devices/x86/x86_data.c:294 msgctxt "x86-flag" msgid "temperature sensor" msgstr "" #. !/flag:pm:fid #: modules/devices/x86/x86_data.c:295 msgctxt "x86-flag" msgid "frequency id control" msgstr "" #. !/flag:pm:vid #: modules/devices/x86/x86_data.c:296 msgctxt "x86-flag" msgid "voltage id control" msgstr "" #. !/flag:pm:ttp #: modules/devices/x86/x86_data.c:297 msgctxt "x86-flag" msgid "thermal trip" msgstr "" #. !/flag:pm:tm #: modules/devices/x86/x86_data.c:298 msgctxt "x86-flag" msgid "hardware thermal control" msgstr "" #. !/flag:pm:stc #: modules/devices/x86/x86_data.c:299 msgctxt "x86-flag" msgid "software thermal control" msgstr "" #. !/flag:pm:100mhzsteps #: modules/devices/x86/x86_data.c:300 msgctxt "x86-flag" msgid "100 MHz multiplier control" msgstr "" #. !/flag:pm:hwpstate #: modules/devices/x86/x86_data.c:301 msgctxt "x86-flag" msgid "hardware P-state control" msgstr "" #. !/flag:pm:cpb #: modules/devices/x86/x86_data.c:302 msgctxt "x86-flag" msgid "core performance boost" msgstr "" #. !/flag:pm:eff_freq_ro #: modules/devices/x86/x86_data.c:303 msgctxt "x86-flag" msgid "Readonly aperf/mperf" msgstr "" #. !/flag:pm:proc_feedback #: modules/devices/x86/x86_data.c:304 msgctxt "x86-flag" msgid "processor feedback interface" msgstr "" #. !/flag:pm:acc_power #: modules/devices/x86/x86_data.c:305 msgctxt "x86-flag" msgid "accumulated power mechanism" msgstr "" #: modules/network.c:61 msgid "Interfaces" msgstr "Interfaces" #: modules/network.c:62 msgid "IP Connections" msgstr "Connections IP" #: modules/network.c:63 msgid "Routing Table" msgstr "Table de Routage" #: modules/network.c:64 modules/network.c:310 msgid "ARP Table" msgstr "Table ARP" #: modules/network.c:65 msgid "DNS Servers" msgstr "Serveurs DNS" #: modules/network.c:66 msgid "Statistics" msgstr "Statistiques" #: modules/network.c:67 msgid "Shared Directories" msgstr "Dossiers d'interopérabilités" #: modules/network.c:311 modules/network.c:333 modules/network.c:364 #: modules/network/net.c:495 msgid "IP Address" msgstr "Addresse IP" #: modules/network.c:311 msgid "MAC Address" msgstr "Adresse MAC" #: modules/network.c:320 msgid "SAMBA" msgstr "" #: modules/network.c:321 msgid "NFS" msgstr "" #: modules/network.c:332 msgid "Name Servers" msgstr "Nom des Serveurs" #: modules/network.c:347 msgid "Connections" msgstr "" #: modules/network.c:348 msgid "Local Address" msgstr "Adresse Locale" #: modules/network.c:348 msgid "Foreign Address" msgstr "" #: modules/network.c:348 msgid "State" msgstr "Etat" #: modules/network.c:364 msgid "Sent" msgstr "Envoyé" #: modules/network.c:364 msgid "Received" msgstr "Reçue" #: modules/network.c:380 msgid "IP routing table" msgstr "" #: modules/network.c:381 msgid "Destination/Gateway" msgstr "" #: modules/network.c:381 modules/network/net.c:496 msgid "Mask" msgstr "" #: modules/network.c:409 msgid "Network" msgstr "Réseau" #: modules/network.c:442 msgid "Gathers information about this computer's network connection" msgstr "Collecte des informations sur les connexions réseau de cet ordinateur" #: modules/network/net.c:74 msgctxt "wi-op-mode" msgid "Auto" msgstr "" #: modules/network/net.c:75 msgctxt "wi-op-mode" msgid "Ad-Hoc" msgstr "" #: modules/network/net.c:76 msgctxt "wi-op-mode" msgid "Managed" msgstr "" #: modules/network/net.c:77 msgctxt "wi-op-mode" msgid "Master" msgstr "" #: modules/network/net.c:78 msgctxt "wi-op-mode" msgid "Repeater" msgstr "" #: modules/network/net.c:79 msgctxt "wi-op-mode" msgid "Secondary" msgstr "" #: modules/network/net.c:80 msgctxt "wi-op-mode" msgid "(Unknown)" msgstr "(Inconnu)" #: modules/network/net.c:268 modules/network/net.c:288 #: modules/network/net.c:296 msgctxt "net-if-type" msgid "Ethernet" msgstr "" #: modules/network/net.c:269 msgctxt "net-if-type" msgid "Loopback" msgstr "" #: modules/network/net.c:270 msgctxt "net-if-type" msgid "Point-to-Point" msgstr "" #: modules/network/net.c:271 modules/network/net.c:272 #: modules/network/net.c:273 modules/network/net.c:274 #: modules/network/net.c:298 msgctxt "net-if-type" msgid "Wireless" msgstr "" #: modules/network/net.c:275 msgctxt "net-if-type" msgid "Virtual Point-to-Point (TUN)" msgstr "" #: modules/network/net.c:276 msgctxt "net-if-type" msgid "Ethernet (TAP)" msgstr "" #: modules/network/net.c:277 msgctxt "net-if-type" msgid "Parallel Line Internet Protocol" msgstr "" #: modules/network/net.c:278 msgctxt "net-if-type" msgid "Infrared" msgstr "InfraRouge" #: modules/network/net.c:279 modules/network/net.c:297 msgctxt "net-if-type" msgid "Serial Line Internet Protocol" msgstr "" #: modules/network/net.c:280 msgctxt "net-if-type" msgid "Integrated Services Digital Network" msgstr "" #: modules/network/net.c:281 msgctxt "net-if-type" msgid "IPv6-over-IPv4 Tunnel" msgstr "" #: modules/network/net.c:282 msgctxt "net-if-type" msgid "VMWare Virtual Network Interface (NAT)" msgstr "" #: modules/network/net.c:283 msgctxt "net-if-type" msgid "VMWare Virtual Network Interface" msgstr "" #: modules/network/net.c:284 msgctxt "net-if-type" msgid "Personal Area Network (PAN)" msgstr "" #: modules/network/net.c:285 msgctxt "net-if-type" msgid "Bluetooth" msgstr "" #: modules/network/net.c:286 msgctxt "net-if-type" msgid "Bridge Interface" msgstr "" #: modules/network/net.c:287 msgctxt "net-if-type" msgid "Hamachi Virtual Personal Network" msgstr "" #: modules/network/net.c:289 msgctxt "net-if-type" msgid "Intermediate Functional Block" msgstr "" #: modules/network/net.c:290 msgctxt "net-if-type" msgid "GRE Network Tunnel" msgstr "" #: modules/network/net.c:291 msgctxt "net-if-type" msgid "Mesh Network" msgstr "Réseau Mesh" #: modules/network/net.c:292 msgctxt "net-if-type" msgid "Wireless Master Interface" msgstr "Principale Interface Sans Fil" #: modules/network/net.c:293 msgctxt "net-if-type" msgid "VirtualBox Virtual Network Interface" msgstr "" #: modules/network/net.c:299 msgctxt "net-if-type" msgid "Wireless (WAN)" msgstr "" #: modules/network/net.c:301 msgctxt "net-if-type" msgid "(Unknown)" msgstr "(Inconnu)" #: modules/network/net.c:364 modules/network/net.c:374 msgid "Network Interfaces" msgstr "Interfaces Réseau" #: modules/network/net.c:364 msgid "None Found" msgstr "Non Trouvé" #: modules/network/net.c:431 msgid "Network Adapter Properties" msgstr "" #: modules/network/net.c:432 msgid "Interface Type" msgstr "Type d'Interfaces" #: modules/network/net.c:433 msgid "Hardware Address (MAC)" msgstr "" #: modules/network/net.c:437 msgid "MTU" msgstr "" #: modules/network/net.c:439 msgid "Transfer Details" msgstr "" #: modules/network/net.c:440 msgid "Bytes Received" msgstr "Bytes reçues" #: modules/network/net.c:441 msgid "Bytes Sent" msgstr "Bytes Envoyées" #: modules/network/net.c:458 modules/network/net.c:480 #: modules/network/net.c:481 msgid "dBm" msgstr "" #: modules/network/net.c:458 msgid "mW" msgstr "" #: modules/network/net.c:472 msgid "Wireless Properties" msgstr "" #: modules/network/net.c:473 msgid "Network Name (SSID)" msgstr "Nom du Réseau (SSID)" #: modules/network/net.c:474 msgid "Bit Rate" msgstr "" #: modules/network/net.c:475 msgid "Transmission Power" msgstr "" #: modules/network/net.c:478 msgid "Link Quality" msgstr "" #: modules/network/net.c:479 msgid "Signal / Noise" msgstr "" #: modules/network/net.c:494 msgid "Internet Protocol (IPv4)" msgstr "Protocol Internet (IPV4)" #: modules/network/net.c:495 modules/network/net.c:496 #: modules/network/net.c:498 msgid "(Not set)" msgstr "(Aucun)" #: modules/network/net.c:497 msgid "Broadcast Address" msgstr "Adresse Broadcast" #: includes/spd-decode.h:28 msgid "RAM" msgstr "" #, c-format #~ msgid "Module \"%s\" depends on module \"%s\", load it?" #~ msgstr "Module \"%s\" depends du module \"%s\", le charger?" #, c-format #~ msgid "Module \"%s\" depends on module \"%s\"." #~ msgstr "Module \"%s\" depends du module \"%s\"." #~ msgid "_Open..." #~ msgstr "_Ouvrir..." #~ msgid "Perl6 (VM)" #~ msgstr "Perl6 (VM)" #~ msgid "Perl6" #~ msgstr "Perl6" #~ msgid "C♯ (mcs)" #~ msgstr "C♯ (mcs)" #~ msgid "_Copy to Clipboard" #~ msgstr "_Copier dans le presse-papier" #~ msgid "Copy to clipboard" #~ msgstr "Copie dans le presse-papier" #, c-format #~ msgid "" #~ "Written by %s\n" #~ "Licensed under %s" #~ msgstr "" #~ "Ecrit par %s\n" #~ "Sous Licence %s" #, c-format #~ msgid "No about information is associated with the %s module." #~ msgstr "Pas d'information associée à ce module %s." #~ msgid "User Note" #~ msgstr "Notes utilisateur" #~ msgid "" #~ "This result is from an old version of HardInfo2. Results might not be " #~ "comparable to current version. Some details are missing." #~ msgstr "" #~ "Ce résultat provient d'une ancienne version de HardInfo2. Les résultats " #~ "peuvent ne pas êtrecomparable à la version actuelle. Il manque quelques " #~ "détails." #~ msgid "Total Memory" #~ msgstr "Mémoire totale" #~ msgid "Free Memory" #~ msgstr "Mémoire libre" #~ msgid "Cached Swap" #~ msgstr "Swap Cache" #~ msgid "(Not available; Perhaps try running HardInfo2 as root.)" #~ msgstr "" #~ "(Non disponible; essayez peut-être d'exécuter HardInfo2 en tant que root.)" #, c-format #~ msgid "" #~ "Copyright (C) 2003-%d L. A. F. Pereira. See COPYING for details.\n" #~ "\n" #~ msgstr "" #~ "Copyright (C) 2003-%d L. A. F. Pereira. voir COPYING pour les details.\n" #~ "\n" #, c-format #~ msgid "" #~ "Compile-time options:\n" #~ " Release version: %s (%s)\n" #~ " BinReloc enabled: %s\n" #~ " Data prefix: %s\n" #~ " Library prefix: %s\n" #~ " Compiled for: %s\n" #~ msgstr "" #~ "Compile-time options:\n" #~ " \"Release\" version: %s (%s)\n" #~ " BinReloc activé: %s\n" #~ " Data prefix: %s\n" #~ " Library prefix: %s\n" #~ " Compilation: %s\n" #, c-format #~ msgid "" #~ "Failed to find runtime data.\n" #~ "\n" #~ "• Is HardInfo2 correctly installed?\n" #~ "• See if %s and %s exists and you have read permission." #~ msgstr "" #~ "Impossible de trouver les données d'exécution.\n" #~ "\n" #~ "• Est ce que HardInfo2 est correctement installé?\n" #~ "• Voir si %s et %s existent et que vous ayez bien les privilèges " #~ "nécessaires." #, c-format #~ msgid "" #~ "Modules:\n" #~ "%-20s %-15s %-12s\n" #~ msgstr "Modules:\n" #~ msgid "File Name" #~ msgstr "Nom du fichier" #, c-format #~ msgid "Unknown benchmark ``%s'' or benchmark.so not loaded" #~ msgstr "Benchmark inconnu ``%s'' ou benchmark.so non chargé" #~ msgid "run benchmark; requires benchmark.so to be loaded" #~ msgstr "Envoyer le benchmark; nécessite benchmark.so" #~ msgid "note attached to benchmark results" #~ msgstr "notes attachées aux résultats du benchmark " #~ msgid "lists modules" #~ msgstr "Listes des modules" #~ msgid "specify module to load" #~ msgstr "spécifie les modules à charger" #~ msgid "automatically load module dependencies" #~ msgstr "charger automatiquement les dépendances entre modules" #~ msgid "run in XML-RPC server mode" #~ msgstr "fonctionner en mode serveur XML-RPC" #~ msgid "- System Profiler and Benchmark tool" #~ msgstr "- Profil du Systeme et outil d'évaluation Benchmark" #, c-format #~ msgid "" #~ "No module could be loaded. Check permissions on \"%s\" and try again." #~ msgstr "" #~ "Aucun module peut être chargé. Vérifiez les permissions sur \"%s\" et " #~ "essayer à nouveau." #~ msgid "" #~ "No module could be loaded. Please use hardinfo2 -l to list all available " #~ "modules and try again with a valid module list." #~ msgstr "" #~ "Aucun module peut être chargé. S'il vous plaît utiliser hardinfo2 -l pour " #~ "répertorier tous les modules disponibles et essayez à nouveau avec une " #~ "liste de modules valides." #~ msgid "Author:" #~ msgstr "Auteur:" #~ msgid "Contributors:" #~ msgstr "Contributeurs:" #~ msgid "Based on work by:" #~ msgstr "Basé sur le travail de:" #~ msgid "MD5 implementation by Colin Plumb (see md5.c for details)" #~ msgstr "Implémentation MD5 par Colin Plumb (détails voir md5.c)" #~ msgid "SHA1 implementation by Steve Reid (see sha1.c for details)" #~ msgstr "implémentation SHA1 par Steve Reid (détails voir sha1.c)" #~ msgid "Blowfish implementation by Paul Kocher (see blowfich.c for details)" #~ msgstr "Implémentation Blowfish par Paul Kocher (voir blowchih.c)" #~ msgid "Raytracing benchmark by John Walker (see fbench.c for details)" #~ msgstr "Raytracing benchmark par John Walker (détails voir fbench.c)" #~ msgid "FFT benchmark by Scott Robert Ladd (see fftbench.c for details)" #~ msgstr "FFT benchmark par Scott Robert Ladd (détails voir fftbench.c)" #~ msgid "Some code partly based on x86cpucaps by Osamu Kayasono" #~ msgstr "Une partie du code est basée sur x86cpucaps par Osamu Kayasono" #~ msgid "Vendor list based on GtkSysInfo by Pissens Sebastien" #~ msgstr "" #~ "La liste des fabricants est basée sur GtkSysInfo par Pissens Sebastien" #~ msgid "DMI support based on code by Stewart Adam" #~ msgstr "Les supports DMI sont basés sur le code de Stewart Adam" #~ msgid "SCSI support based on code by Pascal F. Martin" #~ msgstr "Les supports SCSI sont basés sur le code de Pascal F. Martin" #~ msgid "Tango Project" #~ msgstr "Projet Tango" #~ msgid "The GNOME Project" #~ msgstr "Projet Gnome" #~ msgid "VMWare, Inc. (USB icon from VMWare Workstation 6)" #~ msgstr "VMWare, Inc. (icône USB VMWare Workstation 6)" #~ msgid "System information and benchmark tool" #~ msgstr "Information du systeme et outil d'évaluation" #~ msgid "" #~ "HardInfo2 is free software; you can redistribute it and/or modify it " #~ "under the terms of the GNU General Public License as published by the " #~ "Free Software Foundation, version 2.\n" #~ "\n" #~ "This program is distributed in the hope that it will be useful, but " #~ "WITHOUT ANY WARRANTY; without even the implied warranty of " #~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General " #~ "Public License for more details.\n" #~ "\n" #~ "You should have received a copy of the GNU General Public License along " #~ "with this program; if not, write to the Free Software Foundation, Inc., " #~ "51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA" #~ msgstr "" #~ "HardInfo2 is free software; you can redistribute it and/or modify it " #~ "under the terms of the GNU General Public License as published by the " #~ "Free Software Foundation, version 2.\n" #~ "\n" #~ "This program is distributed in the hope that it will be useful, but " #~ "WITHOUT ANY WARRANTY; without even the implied warranty of " #~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General " #~ "Public License for more details.\n" #~ "\n" #~ "Recevoir une copie de GNU General Public License de ce programme ou " #~ "écrire à the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, " #~ "Boston, MA 02110-1301 USA" #~ msgid "translator-credits" #~ msgstr "Crédits Traducteurs" #~ msgid "_Remote" #~ msgstr "_Périphériques distants" #~ msgid "About _Modules" #~ msgstr "A propos des _modules" #~ msgid "_Network Updater..." #~ msgstr "_Mise à jour des données" #, c-format #~ msgid "%s - System Information" #~ msgstr "%s - Informations du Système" #~ msgid "System Information" #~ msgstr "Informations du Système" #~ msgid "" #~ "HardInfo2 was compiled without libsoup support. (Network Updater requires " #~ "it.)" #~ msgstr "" #~ "HARDiNFO a été compilé sans le support libsoup. (Exigé pour mise à jour " #~ "des données.)" #, c-format #~ msgid "%s (error #%d)" #~ msgstr "%s (erreur #%d)" #~ msgid "Could not parse XML-RPC response" #~ msgstr "Impossible d'analyser la réponse XML-RPC" #, c-format #~ msgid "" #~ "Server says it supports API version %d, but this version of HardInfo2 " #~ "only supports API version %d." #~ msgstr "" #~ "Le serveur dit qu'il supporte la version de l'API %d, mais cette version " #~ "de HARDiNFO supporte seulement le support version de l'API %d." #~ msgid "Contacting HardInfo2 Central Database" #~ msgstr "En contact avec la base de données centrale du site HardInfo2" #~ msgid "Cleaning up" #~ msgstr "Nettoyage" #, c-format #~ msgid "" #~ "Failed while performing \"%s\". Please file a bug report if this problem " #~ "persists. (Use the Help→Report bug option.)\n" #~ "\n" #~ "Details: %s" #~ msgstr "" #~ "Échec lors de l'exécution de \"%s\". S'il vous plaît remplissez un " #~ "rapport de bug si ce problème persiste. (Utilisez l'option Aide → Rapport " #~ "de Bug.)\n" #~ "\n" #~ "Détails: %s" #, c-format #~ msgid "" #~ "Failed while performing \"%s\". Please file a bug report if this problem " #~ "persists. (Use the Help→Report bug option.)" #~ msgstr "" #~ "Échec lors de l'exécution de \"%s\". S'il vous plaît remplissez un " #~ "rapport de bug si ce problème persiste. (Utilisez l'option Aide → Rapport " #~ "de Bug.)" #~ msgid "Network Updater" #~ msgstr "Mises à jour" #~ msgid "FPU Raytracing" #~ msgstr "Test FPU Raytracing" #~ msgid "SysBench Memory" #~ msgstr "SysBench Mémoire" #~ msgid "Results in MiB/second. Higher is better." #~ msgstr "" #~ "Résultats en MiB/seconde. Plus c'est élevé, meilleur est le résultat." #~ msgid "Results in seconds. Lower is better." #~ msgstr "Résultats en secondes. Plus c'est bas, meilleur est le résultat." #~ msgid "" #~ "Benchmarking. Please do not move your mouse\n" #~ "or press any keys." #~ msgstr "" #~ "Evaluation en court. S'il vous plaît ne pas déplacer\n" #~ "votre souris ou appuyer sur les touches" #~ msgid "Cancel" #~ msgstr "Annuler" #~ msgid "Update CPU feature database" #~ msgstr "Mise à jour des bases de données caractéristiques CPU" #, c-format #~ msgid "Vendor=%s\n" #~ msgstr "Vendeur=%s\n" #~ msgid "chooses a report format (text, html)" #~ msgstr "choisir un format de rapport (texte, html)" #~ msgid "Couldn't find a Web browser to open URL %s." #~ msgstr "Impossible de trouver un navigateur Web pour ouvrir l'URL %s." #~ msgid "CPU Blowfish" #~ msgstr "Test CPU Blowfish" #~ msgid "CSharp (Mono, old)" #~ msgstr "CSharp (Mono, old)" #~ msgid "CSharp (Mono)" #~ msgstr "CSharp (Mono)" #~ msgid "DMI" #~ msgstr "DMI" #~ msgid "Memory SPD" #~ msgstr "Mémoire SPD" #~ msgid "" #~ "[SPD]\n" #~ "Please load the eeprom module to obtain information about memory SPD=\n" #~ "[$ShellParam$]\n" #~ "ReloadInterval=500\n" #~ msgstr "" #~ "[SPD]\n" #~ "Télécharger le module eeprom pour avoir les informations de mémoire SPD=\n" #~ "[$ShellParam$]\n" #~ msgid "Vendor=%s (%s)\n" #~ msgstr "Vendeur=%s (%s)\n" #~ msgid "Unknown benchmark ``%s'' or libbenchmark.so not loaded" #~ msgstr "Benchmark inconnu ``%s'' ou libbenchmark.so non chargé" #~ msgid "%s Module" #~ msgstr "%s Module" #~ msgid "Monitor %d=%dx%d pixels\n" #~ msgstr "Moniteur %d=%dx%d pixels\n" #~ msgid " (model unknown)" #~ msgstr " (modèle inconnu)" #~ msgid " (vendor unknown)" #~ msgstr " (Fabricant inconnu)" hardinfo2-hardinfo2-1331e88/po/hardinfo2.pot000066400000000000000000004061251474767047500205710ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-10-24 00:10+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" #: hardinfo2/cpu_util.c:29 msgid "Little Endian" msgstr "" #: hardinfo2/cpu_util.c:31 msgid "Big Endian" msgstr "" #: hardinfo2/cpu_util.c:205 hardinfo2/cpu_util.c:216 modules/devices/gpu.c:262 msgid "Frequency Scaling" msgstr "" #: hardinfo2/cpu_util.c:206 modules/devices/gpu.c:263 msgid "Minimum" msgstr "" #: hardinfo2/cpu_util.c:206 hardinfo2/cpu_util.c:207 hardinfo2/cpu_util.c:208 #: hardinfo2/dt_util.c:590 modules/devices/gpu.c:263 modules/devices/gpu.c:264 msgid "kHz" msgstr "" #: hardinfo2/cpu_util.c:207 modules/devices/gpu.c:264 msgid "Maximum" msgstr "" #: hardinfo2/cpu_util.c:208 msgid "Current" msgstr "" #: hardinfo2/cpu_util.c:209 modules/devices/gpu.c:265 msgid "Transition Latency" msgstr "" #: hardinfo2/cpu_util.c:209 modules/devices/gpu.c:265 msgid "ns" msgstr "" #: hardinfo2/cpu_util.c:210 msgid "Governor" msgstr "" #: hardinfo2/cpu_util.c:211 hardinfo2/cpu_util.c:217 modules/devices.c:842 #: modules/devices/gpu.c:209 modules/devices/pci.c:169 #: modules/devices/usb.c:139 msgid "Driver" msgstr "" #: hardinfo2/cpu_util.c:223 modules/computer.c:801 #: modules/devices/arm/processor.c:195 modules/devices/arm/processor.c:477 #: modules/devices/e2k/processor.c:178 modules/devices/riscv/processor.c:185 #: modules/devices/riscv/processor.c:346 modules/devices/x86/processor.c:283 #: modules/devices/x86/processor.c:387 modules/devices/x86/processor.c:525 msgid "(Not Available)" msgstr "" #: hardinfo2/cpu_util.c:231 hardinfo2/cpu_util.c:233 msgid "Socket" msgstr "" #: hardinfo2/cpu_util.c:236 hardinfo2/cpu_util.c:238 modules/devices/gpu.c:205 #: modules/devices/gpu.c:295 msgid "Core" msgstr "" #: hardinfo2/cpu_util.c:241 msgid "Book" msgstr "" #: hardinfo2/cpu_util.c:243 msgid "Drawer" msgstr "" #: hardinfo2/cpu_util.c:249 modules/devices/arm/processor.c:706 #: modules/devices/riscv/processor.c:551 modules/devices/x86/processor.c:751 msgid "Topology" msgstr "" #: hardinfo2/cpu_util.c:250 msgid "ID" msgstr "" #: hardinfo2/dmi_util.c:25 msgid "BIOS Information" msgstr "" #: hardinfo2/dmi_util.c:26 modules/devices/parisc/processor.c:157 msgid "System" msgstr "" #: hardinfo2/dmi_util.c:27 msgid "Base Board" msgstr "" #: hardinfo2/dmi_util.c:28 modules/devices/dmi.c:54 msgid "Chassis" msgstr "" #: hardinfo2/dmi_util.c:29 modules/computer.c:580 modules/computer.c:1144 #: modules/devices/alpha/processor.c:87 modules/devices/arm/processor.c:563 #: modules/devices.c:99 modules/devices/e2k/processor.c:357 #: modules/devices/ia64/processor.c:159 #: modules/devices/loongarch64/processor.c:93 #: modules/devices/m68k/processor.c:83 modules/devices/mips/processor.c:74 #: modules/devices/parisc/processor.c:154 modules/devices/ppc/processor.c:157 #: modules/devices/riscv/processor.c:583 modules/devices/s390/processor.c:131 #: modules/devices/sh/processor.c:83 modules/devices/sparc/processor.c:74 #: modules/devices/x86/processor.c:647 msgid "Processor" msgstr "" #: hardinfo2/dmi_util.c:30 msgid "Memory Controller" msgstr "" #: hardinfo2/dmi_util.c:31 msgid "Memory Module" msgstr "" #: hardinfo2/dmi_util.c:32 modules/devices/arm/processor.c:572 #: modules/devices/e2k/processor.c:366 modules/devices/parisc/processor.c:163 #: modules/devices/riscv/processor.c:592 modules/devices/x86/processor.c:663 msgid "Cache" msgstr "" #: hardinfo2/dmi_util.c:33 msgid "Port Connector" msgstr "" #: hardinfo2/dmi_util.c:34 msgid "System Slots" msgstr "" #: hardinfo2/dmi_util.c:35 msgid "On Board Devices" msgstr "" #: hardinfo2/dmi_util.c:36 msgid "OEM Strings" msgstr "" #: hardinfo2/dmi_util.c:37 msgid "System Configuration Options" msgstr "" #: hardinfo2/dmi_util.c:38 msgid "BIOS Language" msgstr "" #: hardinfo2/dmi_util.c:39 msgid "Group Associations" msgstr "" #: hardinfo2/dmi_util.c:40 msgid "System Event Log" msgstr "" #: hardinfo2/dmi_util.c:41 msgid "Physical Memory Array" msgstr "" #: hardinfo2/dmi_util.c:42 msgid "Memory Device" msgstr "" #: hardinfo2/dmi_util.c:43 msgid "32-bit Memory Error" msgstr "" #: hardinfo2/dmi_util.c:44 msgid "Memory Array Mapped Address" msgstr "" #: hardinfo2/dmi_util.c:45 msgid "Memory Device Mapped Address" msgstr "" #: hardinfo2/dmi_util.c:46 msgid "Built-in Pointing Device" msgstr "" #: hardinfo2/dmi_util.c:47 msgid "Portable Battery" msgstr "" #: hardinfo2/dmi_util.c:48 msgid "System Reset" msgstr "" #: hardinfo2/dmi_util.c:49 msgid "Hardware Security" msgstr "" #: hardinfo2/dmi_util.c:50 msgid "System Power Controls" msgstr "" #: hardinfo2/dmi_util.c:51 msgid "Voltage Probe" msgstr "" #: hardinfo2/dmi_util.c:52 msgid "Cooling Device" msgstr "" #: hardinfo2/dmi_util.c:53 msgid "Temperature Probe" msgstr "" #: hardinfo2/dmi_util.c:54 msgid "Electrical Current Probe" msgstr "" #: hardinfo2/dmi_util.c:55 msgid "Out-of-band Remote Access" msgstr "" #: hardinfo2/dmi_util.c:56 msgid "Boot Integrity Services" msgstr "" #: hardinfo2/dmi_util.c:57 msgid "System Boot" msgstr "" #: hardinfo2/dmi_util.c:58 msgid "64-bit Memory Error" msgstr "" #: hardinfo2/dmi_util.c:59 msgid "Management Device" msgstr "" #: hardinfo2/dmi_util.c:60 msgid "Management Device Component" msgstr "" #: hardinfo2/dmi_util.c:61 msgid "Management Device Threshold Data" msgstr "" #: hardinfo2/dmi_util.c:62 msgid "Memory Channel" msgstr "" #: hardinfo2/dmi_util.c:63 msgid "IPMI Device" msgstr "" #: hardinfo2/dmi_util.c:64 msgid "Power Supply" msgstr "" #: hardinfo2/dmi_util.c:65 msgid "Additional Information" msgstr "" #: hardinfo2/dmi_util.c:66 msgid "Onboard Device" msgstr "" #: hardinfo2/dmi_util.c:233 msgid "Invalid chassis type (0)" msgstr "" #: hardinfo2/dmi_util.c:234 hardinfo2/dmi_util.c:235 msgid "Unknown chassis type" msgstr "" #: hardinfo2/dmi_util.c:236 msgid "Desktop" msgstr "" #: hardinfo2/dmi_util.c:237 msgid "Low-profile Desktop" msgstr "" #: hardinfo2/dmi_util.c:238 msgid "Pizza Box" msgstr "" #: hardinfo2/dmi_util.c:239 msgid "Mini Tower" msgstr "" #: hardinfo2/dmi_util.c:240 msgid "Tower" msgstr "" #: hardinfo2/dmi_util.c:241 msgid "Portable" msgstr "" #: hardinfo2/dmi_util.c:242 modules/computer.c:408 modules/computer.c:417 #: modules/computer.c:440 modules/computer.c:442 msgid "Laptop" msgstr "" #: hardinfo2/dmi_util.c:243 msgid "Notebook" msgstr "" #: hardinfo2/dmi_util.c:244 msgid "Handheld" msgstr "" #: hardinfo2/dmi_util.c:245 msgid "Docking Station" msgstr "" #: hardinfo2/dmi_util.c:246 msgid "All-in-one" msgstr "" #: hardinfo2/dmi_util.c:247 msgid "Subnotebook" msgstr "" #: hardinfo2/dmi_util.c:248 msgid "Space-saving" msgstr "" #: hardinfo2/dmi_util.c:249 msgid "Lunch Box" msgstr "" #: hardinfo2/dmi_util.c:250 msgid "Main Server Chassis" msgstr "" #: hardinfo2/dmi_util.c:251 msgid "Expansion Chassis" msgstr "" #: hardinfo2/dmi_util.c:252 msgid "Sub Chassis" msgstr "" #: hardinfo2/dmi_util.c:253 msgid "Bus Expansion Chassis" msgstr "" #: hardinfo2/dmi_util.c:254 msgid "Peripheral Chassis" msgstr "" #: hardinfo2/dmi_util.c:255 msgid "RAID Chassis" msgstr "" #: hardinfo2/dmi_util.c:256 msgid "Rack Mount Chassis" msgstr "" #: hardinfo2/dmi_util.c:257 msgid "Sealed-case PC" msgstr "" #: hardinfo2/dmi_util.c:258 msgid "Multi-system" msgstr "" #: hardinfo2/dmi_util.c:259 msgid "CompactPCI" msgstr "" #: hardinfo2/dmi_util.c:260 msgid "AdvancedTCA" msgstr "" #: hardinfo2/dmi_util.c:261 msgid "Blade" msgstr "" #: hardinfo2/dmi_util.c:262 msgid "Blade Enclosing" msgstr "" #: hardinfo2/dmi_util.c:263 msgid "Tablet" msgstr "" #: hardinfo2/dmi_util.c:264 msgid "Convertible" msgstr "" #: hardinfo2/dmi_util.c:265 msgid "Detachable" msgstr "" #: hardinfo2/dmi_util.c:266 msgid "IoT Gateway" msgstr "" #: hardinfo2/dmi_util.c:267 msgid "Embedded PC" msgstr "" #: hardinfo2/dmi_util.c:268 msgid "Mini PC" msgstr "" #: hardinfo2/dmi_util.c:269 msgid "Stick PC" msgstr "" #: hardinfo2/dt_util.c:1175 msgid "phandle Map" msgstr "" #: hardinfo2/dt_util.c:1176 msgid "Alias Map" msgstr "" #: hardinfo2/dt_util.c:1177 msgid "Symbol Map" msgstr "" #. !/ %d will be latest year of copyright #: hardinfo2/hardinfo.c:108 #, c-format msgid "" "Copyright (C) 2003-2023 L. A. F. Pereira. 2024-%d Hardinfo2 Project.\n" "\n" msgstr "" #: hardinfo2/hardinfo.c:110 #, c-format msgid "" "Compile-time options:\n" " Release version: %s (%s)\n" " LibSoup version: %s\n" " Data : %s\n" " Library : %s\n" " Locale : %s\n" " Compiled for : %s\n" msgstr "" #: hardinfo2/hardinfo.c:118 msgid "3.0" msgstr "" #: hardinfo2/hardinfo.c:153 #, c-format msgid "Unknown benchmark ``%s''\n" msgstr "" #: hardinfo2/hardinfo.c:192 msgid "Don't know what to do. Exiting." msgstr "" #: hardinfo2/usb_util.c:293 modules/devices/devicetree.c:90 #: modules/devices/devicetree.c:91 modules/devices/monitors.c:411 #: modules/devices/storage.c:306 modules/devices/storage.c:328 msgid "(None)" msgstr "" #: hardinfo2/util.c:100 modules/computer/uptime.c:54 #, c-format msgid "%d day" msgid_plural "%d days" msgstr[0] "" msgstr[1] "" #: hardinfo2/util.c:101 modules/computer/uptime.c:55 #, c-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "" msgstr[1] "" #: hardinfo2/util.c:102 modules/computer/uptime.c:56 #, c-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "" msgstr[1] "" #: hardinfo2/util.c:103 #, c-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "" msgstr[1] "" #: hardinfo2/util.c:124 #, c-format msgid "%.1f B" msgstr "" #: hardinfo2/util.c:126 #, c-format msgid "%.1f KiB" msgstr "" #: hardinfo2/util.c:128 #, c-format msgid "%.1f MiB" msgstr "" #: hardinfo2/util.c:130 #, c-format msgid "%.1f GiB" msgstr "" #: hardinfo2/util.c:132 #, c-format msgid "%.1f TiB" msgstr "" #: hardinfo2/util.c:134 #, c-format msgid "%.1f PiB" msgstr "" #: hardinfo2/util.c:283 msgid "Error" msgstr "" #: hardinfo2/util.c:283 hardinfo2/util.c:299 msgid "Warning" msgstr "" #: hardinfo2/util.c:298 msgid "Fatal Error" msgstr "" #: hardinfo2/util.c:325 msgid "do not print status messages to standard output" msgstr "" #: hardinfo2/util.c:331 msgid "creates a report and prints to standard output" msgstr "" #: hardinfo2/util.c:337 msgid "chooses a report format ([text], html)" msgstr "" #: hardinfo2/util.c:343 msgid "run single benchmark eg. -b 'FPU FFT' (Default all Benchmarks runs)" msgstr "" #: hardinfo2/util.c:349 msgid "" "user note attached to benchmark results. (updating/synchronize with server)" msgstr "" #: hardinfo2/util.c:355 msgid "benchmark result format ([short], conf, shell)" msgstr "" #: hardinfo2/util.c:361 msgid "" "maximum number of benchmark results to include (-1 for no limit, default is " "50)" msgstr "" #: hardinfo2/util.c:367 msgid "shows program version and quit" msgstr "" #: hardinfo2/util.c:373 msgid "do not run benchmarks" msgstr "" #: hardinfo2/util.c:379 msgid "show all details" msgstr "" #: hardinfo2/util.c:384 msgid "- System Information and Benchmark" msgstr "" #: hardinfo2/util.c:394 #, c-format msgid "" "Unrecognized arguments.\n" "Try ``%s --help'' for more information.\n" msgstr "" #: hardinfo2/util.c:867 #, c-format msgid "Scanning: %s..." msgstr "" #: hardinfo2/util.c:877 shell/shell.c:303 shell/shell.c:877 shell/shell.c:2114 msgid "Done." msgstr "" #: hardinfo2/vendor.c:213 msgid "Update vendor list" msgstr "" #: hardinfo2/vendor.c:218 msgid "Check Update Version" msgstr "" #: hardinfo2/vendor.c:391 modules/computer.c:630 modules/computer.c:829 #: modules/computer/os.c:196 modules/computer/os.c:378 #: modules/computer/os.c:413 modules/computer/os.c:745 #: modules/computer/os.c:806 modules/devices.c:464 modules/devices.c:614 #: modules/devices/firmware.c:149 modules/devices/printers.c:106 #: modules/devices/printers.c:113 modules/devices/printers.c:123 #: modules/devices/printers.c:138 modules/devices/printers.c:147 #: modules/devices/printers.c:256 modules/devices/spd-decode.c:364 #: modules/devices/usb.c:149 msgid "Unknown" msgstr "" #: shell/callbacks.c:457 shell/shell.c:531 msgid "System Information and Benchmark" msgstr "" #: shell/callbacks.c:461 msgid "" "HardInfo2 is free software; you can redistribute it and/or modify it under " "the terms of the GNU General Public License as published by the Free " "Software Foundation, version 2 or later.\n" "\n" "This program is distributed in the hope that it will be useful, but WITHOUT " "ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " "FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " "more details.\n" "\n" "You should have received a copy of the GNU General Public License along with " "this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin St, Fifth Floor, Boston, MA 02110-1301 USA" msgstr "" #: shell/menu.c:37 msgid "_Information" msgstr "" #: shell/menu.c:38 msgid "_View" msgstr "" #: shell/menu.c:40 msgid "_Theme" msgstr "" #: shell/menu.c:42 msgid "_Help" msgstr "" #: shell/menu.c:46 msgid "Generate _Report" msgstr "" #: shell/menu.c:47 msgid "Generates a report with detailed system information" msgstr "" #: shell/menu.c:51 shell/syncmanager.c:692 msgid "Synchronize" msgstr "" #: shell/menu.c:52 msgid "Send benchmark results and receive updated data from the network" msgstr "" #: shell/menu.c:62 msgid "_Refresh" msgstr "" #: shell/menu.c:67 msgid "_Open HardInfo2 Web Site" msgstr "" #: shell/menu.c:72 msgid "_Report bug" msgstr "" #: shell/menu.c:77 msgid "_About HardInfo2" msgstr "" #: shell/menu.c:78 msgid "Displays program version information" msgstr "" #: shell/menu.c:82 msgid "_Quit" msgstr "" #: shell/menu.c:89 msgid "_Side Pane" msgstr "" #: shell/menu.c:90 msgid "Toggles side pane visibility" msgstr "" #: shell/menu.c:93 msgid "_Toolbar" msgstr "" #: shell/menu.c:97 msgid "Synchronize on startup" msgstr "" #: shell/menu.c:102 msgid "Disable Theme" msgstr "" #: shell/menu.c:106 msgid "Theme Motherboard" msgstr "" #: shell/menu.c:110 msgid "Theme Graffiti" msgstr "" #: shell/menu.c:114 msgid "Theme Anime PC" msgstr "" #: shell/menu.c:118 msgid "Theme Tux Star" msgstr "" #: shell/menu.c:122 msgid "Theme PixArt" msgstr "" #: shell/menu.c:126 msgid "Theme Silicon" msgstr "" #: shell/report.c:833 shell/report.c:841 msgid "Save File" msgstr "" #: shell/report.c:836 shell/report.c:1315 shell/syncmanager.c:778 msgid "_Cancel" msgstr "" #: shell/report.c:838 msgid "_Save" msgstr "" #: shell/report.c:1016 msgid "Cannot create ReportContext. Programming bug?" msgstr "" #: shell/report.c:1036 msgid "Open the report with your web browser?" msgstr "" #: shell/report.c:1039 msgid "_No" msgstr "" #: shell/report.c:1040 msgid "_Open" msgstr "" #: shell/report.c:1071 msgid "Generating report..." msgstr "" #: shell/report.c:1081 msgid "Report saved." msgstr "" #: shell/report.c:1083 msgid "Error while creating the report." msgstr "" #: shell/report.c:1185 msgid "Generate Report" msgstr "" #: shell/report.c:1211 msgid "" "Generate Report\n" "Please choose the information that you wish to view in your report:" msgstr "" #: shell/report.c:1281 msgid "Select _None" msgstr "" #: shell/report.c:1292 msgid "Select _All" msgstr "" #: shell/report.c:1325 msgid "_Generate" msgstr "" #: shell/shell.c:526 #, c-format msgid "%s - System Information and Benchmark" msgstr "" #: shell/shell.c:862 msgid "Loading modules..." msgstr "" #: shell/shell.c:1633 msgid "URL" msgstr "" #: shell/shell.c:1640 msgid "Support URL" msgstr "" #: shell/shell.c:1651 msgid "Wikipedia" msgstr "" #: shell/shell.c:1984 #, c-format msgid "%s → Summary" msgstr "" #: shell/shell.c:2090 msgid "Updating..." msgstr "" #: shell/syncmanager.c:80 msgid "" "Synchronize with Central Database\n" "The following information may be synchronized\n" "with the HardInfo2 central database." msgstr "" #: shell/syncmanager.c:84 msgid "" "Synchronizing\n" "This may take some time." msgstr "" #: shell/syncmanager.c:546 msgid "(canceled)" msgstr "" #: shell/syncmanager.c:562 msgid "(failed)" msgstr "" #: shell/syncmanager.c:658 modules/benchmark.c:923 msgid "Send benchmark results" msgstr "" #: shell/syncmanager.c:765 msgid "Privacy Policy" msgstr "" #: shell/syncmanager.c:787 msgid "_Synchronize" msgstr "" #: shell/syncmanager.c:836 #, c-format msgid "Synchronizing: %s" msgstr "" #: modules/benchmark/benches.c:136 msgid "CPU Blowfish (Single-thread)" msgstr "" #: modules/benchmark/benches.c:144 msgid "CPU Blowfish (Multi-thread)" msgstr "" #: modules/benchmark/benches.c:152 msgid "CPU Blowfish (Multi-core)" msgstr "" #: modules/benchmark/benches.c:160 msgid "CPU Zlib" msgstr "" #: modules/benchmark/benches.c:168 msgid "CPU CryptoHash" msgstr "" #: modules/benchmark/benches.c:176 msgid "CPU Fibonacci" msgstr "" #: modules/benchmark/benches.c:184 msgid "CPU N-Queens" msgstr "" #: modules/benchmark/benches.c:192 msgid "FPU FFT" msgstr "" #: modules/benchmark/benches.c:200 msgid "FPU Raytracing (Single-thread)" msgstr "" #: modules/benchmark/benches.c:208 msgid "Internal Network Speed" msgstr "" #: modules/benchmark/benches.c:216 msgid "SysBench CPU (Single-thread)" msgstr "" #: modules/benchmark/benches.c:224 msgid "SysBench CPU (Multi-thread)" msgstr "" #: modules/benchmark/benches.c:232 msgid "SysBench CPU (Four threads)" msgstr "" #: modules/benchmark/benches.c:240 msgid "SysBench Memory (Single-thread)" msgstr "" #: modules/benchmark/benches.c:248 msgid "SysBench Memory (Two threads)" msgstr "" #: modules/benchmark/benches.c:256 msgid "SysBench Memory (Quad threads)" msgstr "" #: modules/benchmark/benches.c:264 msgid "SysBench Memory (Multi-thread)" msgstr "" #: modules/benchmark/benches.c:272 msgid "GPU Drawing" msgstr "" #: modules/benchmark/benches.c:281 msgid "GPU OpenGL Drawing" msgstr "" #: modules/benchmark/benches.c:290 msgid "Storage R/W Speed" msgstr "" #: modules/benchmark/benches.c:304 msgid "" "Alexey Kopytov's sysbench is required.\n" "Results in events/second. Higher is better." msgstr "" #: modules/benchmark/benches.c:310 msgid "" "Alexey Kopytov's sysbench is required.\n" "Results in MiB/second. Higher is better." msgstr "" #: modules/benchmark/benches.c:313 msgid "" "iperf3 is required.\n" "Results in Gbits/s. Higher is better." msgstr "" #: modules/benchmark/benches.c:324 msgid "Results in HIMarks. Higher is better." msgstr "" #: modules/benchmark/benches.c:326 msgid "" "Results in HIMarks. Higher is better.\n" "Many Desktop Environments only uses software." msgstr "" #: modules/benchmark/benches.c:329 msgid "Results in MB/s. Higher is better." msgstr "" #: modules/benchmark/benches.c:332 msgid "Results in FPS. Higher is better." msgstr "" #. !/ Used for an unknown value. Having it in only one place cleans up the .po #. * line references #: modules/benchmark/bench_results.c:34 modules/computer.c:41 #: modules/computer/display.c:40 modules/computer/display.c:57 #: modules/computer/os.c:400 modules/computer/os.c:457 modules/devices.c:596 #: modules/devices/dmi_memory.c:699 modules/devices/dmi_memory.c:835 #: modules/devices/gpu.c:40 modules/devices/gpu.c:58 modules/devices/gpu.c:122 #: modules/devices/gpu.c:130 modules/devices/gpu.c:210 #: modules/devices/gpu.c:211 modules/devices/gpu.c:230 #: modules/devices/inputdevices.c:51 modules/devices/monitors.c:28 #: modules/devices/monitors.c:29 modules/devices/monitors.c:155 #: modules/devices/monitors.c:164 modules/devices/pci.c:25 #: modules/devices/pci.c:170 modules/devices/pci.c:171 #: modules/devices/spd-decode.c:358 modules/devices/spd-decode.c:359 #: modules/devices/spd-decode.c:362 modules/devices/spd-decode.c:363 #: modules/devices/spd-decode.c:584 modules/devices/spd-decode.c:899 #: modules/devices/spd-decode.c:900 modules/devices/spd-decode.c:1111 #: modules/devices/spd-decode.c:1350 modules/devices/storage.c:27 #: modules/devices/storage.c:307 modules/devices/storage.c:336 #: modules/devices/storage.c:431 modules/devices/usb.c:29 #: modules/network/net.c:460 includes/cpu_util.h:11 includes/spd-decode.h:24 #: includes/spd-decode.h:25 msgid "(Unknown)" msgstr "" #: modules/benchmark/bench_results.c:261 modules/devices/alpha/processor.c:90 #: modules/devices/arm/processor.c:511 modules/devices/arm/processor.c:524 #: modules/devices/arm/processor.c:567 modules/devices/arm/processor.c:739 #: modules/devices.c:430 modules/devices.c:438 modules/devices.c:466 #: modules/devices/e2k/processor.c:363 modules/devices/e2k/processor.c:400 #: modules/devices/gpu.c:125 modules/devices/gpu.c:127 #: modules/devices/gpu.c:133 modules/devices/gpu.c:135 #: modules/devices/gpu.c:233 modules/devices/gpu.c:235 #: modules/devices/ia64/processor.c:167 modules/devices/ia64/processor.c:196 #: modules/devices/loongarch64/processor.c:98 #: modules/devices/m68k/processor.c:87 modules/devices/mips/processor.c:77 #: modules/devices/parisc/processor.c:158 #: modules/devices/parisc/processor.c:191 modules/devices/ppc/processor.c:160 #: modules/devices/ppc/processor.c:187 modules/devices/riscv/processor.c:380 #: modules/devices/riscv/processor.c:393 modules/devices/riscv/processor.c:588 #: modules/devices/riscv/processor.c:623 modules/devices/s390/processor.c:160 #: modules/devices/sh/processor.c:87 modules/devices/sh/processor.c:88 #: modules/devices/sh/processor.c:89 modules/devices/x86/processor.c:317 #: modules/devices/x86/processor.c:330 modules/devices/x86/processor.c:658 #: modules/devices/x86/processor.c:789 msgid "MHz" msgstr "" #: modules/benchmark/bench_results.c:293 modules/devices.c:177 #, c-format msgid "%d physical processor" msgid_plural "%d physical processors" msgstr[0] "" msgstr[1] "" #: modules/benchmark/bench_results.c:294 modules/devices.c:178 #, c-format msgid "%d core" msgid_plural "%d cores" msgstr[0] "" msgstr[1] "" #: modules/benchmark/bench_results.c:295 modules/devices.c:179 #, c-format msgid "%d thread" msgid_plural "%d threads" msgstr[0] "" msgstr[1] "" #: modules/benchmark/bench_results.c:300 modules/devices.c:181 #, c-format msgid "%d NUMA node" msgid_plural "%d NUMA nodes" msgstr[0] "" msgstr[1] "" #. !/NP procs; NC cores across NN nodes; NT threads #: modules/benchmark/bench_results.c:304 #, c-format msgid "%s; %s across %s; %s" msgstr "" #. !/NP procs; NC cores; NT threads #: modules/benchmark/bench_results.c:309 #, c-format msgid "%s; %s; %s" msgstr "" #: modules/benchmark/bench_results.c:383 modules/benchmark/bench_results.c:508 #: modules/computer.c:1041 modules/devices/dmi_memory.c:639 #: modules/devices/dmi_memory.c:649 modules/devices/dmi_memory.c:703 #: modules/devices/dmi_memory.c:791 modules/devices/dmi_memory.c:837 #: modules/devices/dmi_memory.c:920 modules/devices/spd-decode.c:1354 #: modules/network/net.c:416 modules/network/net.c:440 #: modules/network/net.c:441 msgid "MiB" msgstr "" #: modules/benchmark/bench_results.c:388 modules/benchmark/bench_results.c:507 msgid "kiB" msgstr "" #: modules/benchmark/bench_results.c:396 modules/benchmark/bench_results.c:452 #, c-format msgid "%d-bit" msgstr "" #: modules/benchmark/bench_results.c:417 modules/benchmark/bench_results.c:482 msgid "Benchmark Result" msgstr "" #: modules/benchmark/bench_results.c:417 modules/benchmark/bench_results.c:482 msgid "Threads" msgstr "" #: modules/benchmark/bench_results.c:418 modules/benchmark/bench_results.c:484 msgid "Elapsed Time" msgstr "" #: modules/benchmark/bench_results.c:418 modules/benchmark/bench_results.c:484 msgid "seconds" msgstr "" #: modules/benchmark/bench_results.c:419 modules/computer/languages.c:101 #: modules/devices/arm/processor.c:578 modules/devices/e2k/processor.c:362 #: modules/devices/gpu.c:203 modules/devices/ia64/processor.c:166 #: modules/devices/loongarch64/processor.c:97 modules/devices/pci.c:167 #: modules/devices/ppc/processor.c:159 msgid "Revision" msgstr "" #: modules/benchmark/bench_results.c:420 modules/benchmark/bench_results.c:485 msgid "Extra Information" msgstr "" #: modules/benchmark/bench_results.c:422 modules/benchmark/bench_results.c:487 msgid "Note" msgstr "" #: modules/benchmark/bench_results.c:423 modules/benchmark/bench_results.c:488 msgid "" "This result is from an old version of HardInfo. Results might not be " "comparable to current version. Some details are missing." msgstr "" #: modules/benchmark/bench_results.c:427 modules/benchmark/bench_results.c:492 #: modules/devices/devicetree/pmac_data.c:81 modules/devices/sh/processor.c:85 msgid "Machine" msgstr "" #: modules/benchmark/bench_results.c:428 modules/benchmark/bench_results.c:492 #: modules/devices/devicetree.c:207 modules/devices/dmi.c:48 msgid "Board" msgstr "" #: modules/benchmark/bench_results.c:429 modules/benchmark/bench_results.c:494 #: modules/computer.c:583 msgid "Machine Type" msgstr "" #: modules/benchmark/bench_results.c:430 modules/benchmark/bench_results.c:497 msgid "CPU Name" msgstr "" #: modules/benchmark/bench_results.c:431 modules/benchmark/bench_results.c:498 msgid "CPU Description" msgstr "" #: modules/benchmark/bench_results.c:432 modules/benchmark/bench_results.c:500 #: modules/benchmark.c:600 msgid "CPU Config" msgstr "" #: modules/benchmark/bench_results.c:433 modules/benchmark/bench_results.c:500 msgid "Threads Available" msgstr "" #: modules/benchmark/bench_results.c:434 modules/benchmark/bench_results.c:501 #: modules/benchmark.c:578 msgid "GPU" msgstr "" #: modules/benchmark/bench_results.c:435 modules/benchmark/bench_results.c:503 #: modules/computer.c:595 msgid "OpenGL Renderer" msgstr "" #: modules/benchmark/bench_results.c:436 modules/benchmark/bench_results.c:505 #: modules/benchmark.c:589 modules/computer.c:1145 modules/devices.c:109 msgid "Storage" msgstr "" #: modules/benchmark/bench_results.c:437 modules/benchmark/bench_results.c:507 #: modules/computer.c:140 modules/computer.c:582 modules/computer.c:1144 #: modules/devices/gpu.c:206 msgid "Memory" msgstr "" #: modules/benchmark/bench_results.c:438 modules/benchmark/bench_results.c:509 msgid "Pointer Size" msgstr "" #: modules/benchmark/bench_results.c:482 msgid "Benchmark" msgstr "" #: modules/benchmark/bench_results.c:483 modules/devices/dmi_memory.c:859 #: modules/devices/firmware.c:245 modules/devices/monitors.c:495 #: modules/devices/x86/processor.c:692 msgid "Result" msgstr "" #: modules/benchmark/bench_results.c:495 msgid "Linux Kernel" msgstr "" #: modules/benchmark/bench_results.c:496 msgid "Linux OS" msgstr "" #: modules/benchmark/bench_results.c:507 msgid "Physical Memory" msgstr "" #: modules/benchmark/bench_results.c:511 msgid "Handles" msgstr "" #: modules/benchmark/bench_results.c:511 msgid "mid" msgstr "" #: modules/benchmark/bench_results.c:512 msgid "cfg_val" msgstr "" #: modules/benchmark.c:351 msgid "This Machine" msgstr "" #: modules/benchmark.c:577 modules/benchmark.c:588 modules/benchmark.c:600 msgid "Results" msgstr "" #: modules/benchmark.c:601 modules/devices/sparc/processor.c:75 msgid "CPU" msgstr "" #: modules/benchmark.c:679 #, c-format msgid "Benchmarking: %s." msgstr "" #: modules/benchmark.c:683 #, c-format msgid "Benchmarking: %s" msgstr "" #: modules/benchmark.c:687 msgid "Stop" msgstr "" #: modules/benchmark.c:700 msgid "" "Please do not move your mouse\n" "or press any keys." msgstr "" #: modules/benchmark.c:759 msgid "Benchmarks" msgstr "" #: modules/benchmark.c:769 msgid "Perform tasks and compare with other systems" msgstr "" #: modules/benchmark.c:929 msgid "Receive benchmark results" msgstr "" #: modules/computer/alsa.c:26 modules/computer.c:599 msgid "Audio Devices" msgstr "" #: modules/computer/alsa.c:34 msgid "Audio Adapter" msgstr "" #: modules/computer.c:96 modules/devices/firmware.c:74 msgid "Summary" msgstr "" #: modules/computer.c:97 modules/computer.c:585 modules/computer.c:1143 msgid "Operating System" msgstr "" #: modules/computer.c:98 msgid "Security" msgstr "" #: modules/computer.c:99 modules/devices/gpu.c:211 modules/devices/pci.c:171 msgid "Kernel Modules" msgstr "" #: modules/computer.c:100 modules/computer.c:741 msgid "Boots" msgstr "" #: modules/computer.c:101 msgid "Languages" msgstr "" #: modules/computer.c:102 msgid "Memory Usage" msgstr "" #: modules/computer.c:103 msgid "Filesystems" msgstr "" #: modules/computer.c:104 modules/computer.c:590 msgid "Display" msgstr "" #: modules/computer.c:105 modules/computer/environment.c:37 msgid "Environment Variables" msgstr "" #: modules/computer.c:107 modules/computer.c:109 msgid "Development" msgstr "" #: modules/computer.c:111 modules/computer.c:884 msgid "Users" msgstr "" #: modules/computer.c:112 msgid "Groups" msgstr "" #: modules/computer.c:142 #, c-format msgid "%dMB (%dMB used)" msgstr "" #: modules/computer.c:144 modules/computer.c:646 msgid "Uptime" msgstr "" #: modules/computer.c:146 modules/computer.c:587 msgid "Date/Time" msgstr "" #: modules/computer.c:151 modules/computer.c:647 msgid "Load Average" msgstr "" #: modules/computer.c:266 msgid "Scripting Languages" msgstr "" #: modules/computer.c:267 msgid "Gambas3 (gbr3)" msgstr "" #: modules/computer.c:268 msgid "Python (default)" msgstr "" #: modules/computer.c:269 msgid "Python2" msgstr "" #: modules/computer.c:270 msgid "Python3" msgstr "" #: modules/computer.c:271 msgid "Perl" msgstr "" #: modules/computer.c:272 msgid "Rakudo (Perl6)" msgstr "" #: modules/computer.c:273 msgid "PHP" msgstr "" #: modules/computer.c:274 msgid "Ruby" msgstr "" #: modules/computer.c:275 msgid "Bash" msgstr "" #: modules/computer.c:276 msgid "JavaScript (Node.js)" msgstr "" #: modules/computer.c:277 msgid "awk" msgstr "" #: modules/computer.c:278 msgid "Compilers" msgstr "" #: modules/computer.c:279 msgid "C (GCC)" msgstr "" #: modules/computer.c:280 msgid "C (Clang)" msgstr "" #: modules/computer.c:281 msgid "D (dmd)" msgstr "" #: modules/computer.c:282 msgid "Gambas3 (gbc3)" msgstr "" #: modules/computer.c:283 msgid "Java" msgstr "" #: modules/computer.c:284 msgid ".NET" msgstr "" #: modules/computer.c:285 msgid "Vala" msgstr "" #: modules/computer.c:286 msgid "Haskell (GHC)" msgstr "" #: modules/computer.c:287 msgid "FreePascal" msgstr "" #: modules/computer.c:288 msgid "Go" msgstr "" #: modules/computer.c:289 msgid "Rust" msgstr "" #: modules/computer.c:290 msgid "Tools" msgstr "" #: modules/computer.c:291 msgid "make" msgstr "" #: modules/computer.c:292 msgid "ninja" msgstr "" #: modules/computer.c:293 msgid "GDB" msgstr "" #: modules/computer.c:294 msgid "LLDB" msgstr "" #: modules/computer.c:295 msgid "strace" msgstr "" #: modules/computer.c:296 msgid "valgrind" msgstr "" #: modules/computer.c:297 msgid "QMake" msgstr "" #: modules/computer.c:298 msgid "CMake" msgstr "" #: modules/computer.c:299 msgid "Gambas3 IDE" msgstr "" #: modules/computer.c:300 msgid "Radare2" msgstr "" #: modules/computer.c:301 msgid "ltrace" msgstr "" #: modules/computer.c:302 msgid "Powershell" msgstr "" #: modules/computer.c:343 msgid "Not found" msgstr "" #: modules/computer.c:348 #, c-format msgid "Detecting version: %s" msgstr "" #: modules/computer.c:366 msgid "Program" msgstr "" #: modules/computer.c:366 modules/computer.c:629 modules/computer.c:631 #: modules/computer.c:807 modules/computer/modules.c:371 #: modules/devices/dmi.c:41 modules/devices/dmi.c:47 modules/devices/dmi.c:51 #: modules/devices/dmi.c:57 modules/devices/firmware.c:75 #: modules/devices/inputdevices.c:146 modules/devices/monitors.c:409 msgid "Version" msgstr "" #: modules/computer.c:385 msgid "Field" msgstr "" #: modules/computer.c:385 modules/computer.c:730 modules/computer/modules.c:369 #: modules/computer/modules.c:370 modules/devices/arm/processor.c:705 #: modules/devices/riscv/processor.c:550 msgid "Description" msgstr "" #: modules/computer.c:385 modules/devices.c:841 msgid "Value" msgstr "" #: modules/computer.c:402 modules/computer.c:404 msgid "Single-board computer" msgstr "" #: modules/computer.c:455 modules/computer.c:457 msgid "Unknown physical machine type" msgstr "" #: modules/computer.c:479 modules/computer.c:480 modules/computer.c:527 #: modules/computer.c:529 msgid "Virtual (VMware)" msgstr "" #: modules/computer.c:482 modules/computer.c:483 modules/computer.c:484 #: modules/computer.c:485 msgid "Virtual (QEMU)" msgstr "" #: modules/computer.c:487 modules/computer.c:488 msgid "Virtual (Unknown)" msgstr "" #: modules/computer.c:490 modules/computer.c:491 modules/computer.c:492 #: modules/computer.c:520 modules/computer.c:522 msgid "Virtual (VirtualBox)" msgstr "" #: modules/computer.c:494 modules/computer.c:495 modules/computer.c:496 #: modules/computer.c:511 modules/computer.c:513 msgid "Virtual (Xen)" msgstr "" #: modules/computer.c:498 msgid "Virtual (hypervisor present)" msgstr "" #: modules/computer.c:579 modules/computer.c:1097 msgid "Computer" msgstr "" #: modules/computer.c:586 modules/computer.c:640 msgid "User Name" msgstr "" #: modules/computer.c:591 msgid "Resolution" msgstr "" #: modules/computer.c:591 modules/computer.c:812 #, c-format msgid "%dx%d pixels" msgstr "" #: modules/computer.c:593 msgid "Display Adapter" msgstr "" #: modules/computer.c:596 msgid "Session Display Server" msgstr "" #: modules/computer.c:601 modules/devices.c:108 msgid "Input Devices" msgstr "" #: modules/computer.c:629 msgid "Kernel" msgstr "" #: modules/computer.c:630 msgid "Command Line" msgstr "" #: modules/computer.c:632 msgid "C Library" msgstr "" #: modules/computer.c:633 msgid "Distribution" msgstr "" #: modules/computer.c:638 msgid "Current Session" msgstr "" #: modules/computer.c:639 msgid "Computer Name" msgstr "" #: modules/computer.c:641 modules/computer/languages.c:99 msgid "Language" msgstr "" #: modules/computer.c:642 modules/computer/users.c:53 msgid "Home Directory" msgstr "" #: modules/computer.c:643 msgid "Desktop Environment" msgstr "" #: modules/computer.c:646 msgid "Misc" msgstr "" #: modules/computer.c:660 msgid "HardInfo2" msgstr "" #: modules/computer.c:661 msgid "HardInfo2 running as" msgstr "" #: modules/computer.c:662 msgid "Superuser" msgstr "" #: modules/computer.c:662 msgid "User" msgstr "" #: modules/computer.c:666 msgid "Health" msgstr "" #: modules/computer.c:668 msgid "Available entropy in /dev/random" msgstr "" #: modules/computer.c:672 msgid "Hardening Features" msgstr "" #: modules/computer.c:673 msgid "ASLR" msgstr "" #: modules/computer.c:674 msgid "dmesg" msgstr "" #: modules/computer.c:678 msgid "Linux Security Modules" msgstr "" #: modules/computer.c:679 msgid "Modules available" msgstr "" #: modules/computer.c:680 msgid "SELinux status" msgstr "" #: modules/computer.c:686 msgid "CPU Vulnerabilities" msgstr "" #: modules/computer.c:727 msgid "Loaded Modules" msgstr "" #: modules/computer.c:729 modules/computer.c:757 modules/computer.c:897 #: modules/computer/languages.c:95 modules/computer/modules.c:369 #: modules/devices/arm/processor.c:704 modules/devices/dmi.c:38 #: modules/devices/dmi.c:49 modules/devices/e2k/processor.c:358 #: modules/devices/gpu.c:301 modules/devices/ia64/processor.c:160 #: modules/devices/inputdevices.c:141 modules/devices/monitors.c:403 #: modules/devices/monitors.c:505 modules/devices/riscv/processor.c:549 #: modules/devices/sh/processor.c:84 modules/devices/x86/processor.c:750 #: modules/network.c:333 msgid "Name" msgstr "" #: modules/computer.c:743 msgid "Date & Time" msgstr "" #: modules/computer.c:744 msgid "Kernel Version" msgstr "" #: modules/computer.c:754 msgid "Available Languages" msgstr "" #: modules/computer.c:756 msgid "Language Code" msgstr "" #: modules/computer.c:768 msgid "Mounted File Systems" msgstr "" #: modules/computer.c:770 modules/computer/filesystem.c:89 msgid "Mount Point" msgstr "" #: modules/computer.c:771 msgid "Usage" msgstr "" #: modules/computer.c:772 modules/devices/arm/processor.c:756 #: modules/devices.c:865 modules/devices.c:879 #: modules/devices/e2k/processor.c:416 modules/devices/gpu.c:85 #: modules/devices/gpu.c:93 modules/devices/gpu.c:293 modules/devices/pci.c:123 #: modules/devices/pci.c:131 modules/devices/pci.c:175 #: modules/devices/riscv/processor.c:640 modules/devices/storage.c:48 #: modules/devices/storage.c:57 modules/devices/usb.c:172 #: modules/devices/usb.c:184 modules/devices/x86/processor.c:810 msgid "Device" msgstr "" #: modules/computer.c:795 msgid "Session" msgstr "" #: modules/computer.c:796 modules/devices.c:842 modules/devices.c:879 #: modules/devices/dmi.c:56 modules/devices/dmi_memory.c:729 #: modules/devices/inputdevices.c:142 modules/devices/spd-decode.c:1377 #: modules/devices/x86/processor.c:715 msgid "Type" msgstr "" #: modules/computer.c:799 msgid "Wayland" msgstr "" #: modules/computer.c:800 modules/computer.c:805 msgid "Current Display Name" msgstr "" #: modules/computer.c:804 msgid "X Server" msgstr "" #: modules/computer.c:806 modules/computer.c:846 modules/computer.c:869 #: modules/devices.c:879 modules/devices/dmi.c:40 modules/devices/dmi.c:46 #: modules/devices/dmi.c:50 modules/devices/dmi.c:55 #: modules/devices/dmi_memory.c:730 modules/devices/dmi_memory.c:873 #: modules/devices/e2k/processor.c:359 modules/devices/firmware.c:75 #: modules/devices/firmware.c:167 modules/devices/firmware.c:172 #: modules/devices/firmware.c:219 modules/devices/gpu.c:84 #: modules/devices/gpu.c:92 modules/devices/gpu.c:292 #: modules/devices/ia64/processor.c:161 modules/devices/inputdevices.c:144 #: modules/devices/monitors.c:402 modules/devices/pci.c:122 #: modules/devices/pci.c:130 modules/devices/storage.c:47 #: modules/devices/storage.c:56 modules/devices/storage.c:282 #: modules/devices/storage.c:572 modules/devices/storage.c:777 #: modules/devices/usb.c:171 modules/devices/x86/processor.c:654 msgid "Vendor" msgstr "" #: modules/computer.c:808 msgid "Release Number" msgstr "" #: modules/computer.c:816 msgid "Screens" msgstr "" #: modules/computer.c:822 msgid "Disconnected" msgstr "" #: modules/computer.c:825 msgid "Connected" msgstr "" #: modules/computer.c:833 msgid "Unused" msgstr "" #: modules/computer.c:834 #, c-format msgid "%dx%d pixels, offset (%d, %d)" msgstr "" #: modules/computer.c:843 msgid "Outputs (XRandR)" msgstr "" #: modules/computer.c:845 msgid "OpenGL (GLX)" msgstr "" #: modules/computer.c:847 msgid "Renderer" msgstr "" #: modules/computer.c:848 msgid "Direct Rendering" msgstr "" #: modules/computer.c:849 modules/computer/modules.c:351 #: modules/computer/modules.c:352 modules/devices/inputdevices.c:153 #: modules/devices/printers.c:145 modules/devices/spd-decode.c:888 #: modules/devices/spd-decode.c:1100 msgid "Yes" msgstr "" #: modules/computer.c:849 modules/computer/modules.c:351 #: modules/computer/modules.c:352 modules/devices/printers.c:145 #: modules/devices/spd-decode.c:886 modules/devices/spd-decode.c:1097 msgid "No" msgstr "" #: modules/computer.c:850 msgid "Version (Compatibility)" msgstr "" #: modules/computer.c:851 msgid "Shading Language Version (Compatibility)" msgstr "" #: modules/computer.c:852 msgid "Version (Core)" msgstr "" #: modules/computer.c:853 msgid "Shading Language Version (Core)" msgstr "" #: modules/computer.c:854 msgid "Version (ES)" msgstr "" #: modules/computer.c:855 msgid "Shading Language Version (ES)" msgstr "" #: modules/computer.c:856 msgid "GLX Version" msgstr "" #: modules/computer.c:864 msgid "Vulkan" msgstr "" #: modules/computer.c:865 msgid "Instance Version" msgstr "" #: modules/computer.c:867 msgid "Api Version" msgstr "" #: modules/computer.c:868 msgid "Driver Version" msgstr "" #: modules/computer.c:870 msgid "Device Type" msgstr "" #: modules/computer.c:871 msgid "Device Name" msgstr "" #: modules/computer.c:872 msgid "Driver Name" msgstr "" #: modules/computer.c:873 msgid "Driver Info" msgstr "" #: modules/computer.c:874 msgid "Conformance Version" msgstr "" #: modules/computer.c:895 msgid "Group" msgstr "" #: modules/computer.c:898 modules/computer/users.c:52 msgid "Group ID" msgstr "" #: modules/computer.c:1037 #, c-format msgid "%0.1f %s available to Linux" msgstr "" #: modules/computer.c:1039 modules/devices/dmi_memory.c:637 #: modules/devices/dmi_memory.c:647 modules/devices/dmi_memory.c:789 #: modules/devices/dmi_memory.c:918 modules/devices/spd-decode.c:1352 msgid "GiB" msgstr "" #: modules/computer.c:1043 modules/computer/memory_usage.c:73 #: modules/computer/modules.c:369 msgid "KiB" msgstr "" #: modules/computer.c:1116 modules/devices/devicetree/pmac_data.c:82 msgid "Motherboard" msgstr "" #: modules/computer.c:1144 msgid "Graphics" msgstr "" #: modules/computer.c:1145 modules/devices.c:105 msgid "Printers" msgstr "" #: modules/computer.c:1145 msgid "Audio" msgstr "" #: modules/computer.c:1194 msgid "Gathers high-level computer information" msgstr "" #: modules/computer.c:1205 msgid "lsmod is required." msgstr "" #: modules/computer.c:1213 msgid "" "X.org's xrandr utility provides additional details when " "available." msgstr "" #: modules/computer.c:1214 msgid "" "Mesa's glxinfo utility is required for OpenGL information." msgstr "" #: modules/computer.c:1215 msgid "" "Vulkan's vulkaninfo utility is required for Vulkan information." msgstr "" #: modules/computer/filesystem.c:87 msgid "Filesystem" msgstr "" #: modules/computer/filesystem.c:88 msgid "Mounted As" msgstr "" #: modules/computer/filesystem.c:88 msgid "Read-Write" msgstr "" #: modules/computer/filesystem.c:88 msgid "Read-Only" msgstr "" #: modules/computer/filesystem.c:90 modules/devices.c:865 #: modules/devices/dmi_memory.c:733 modules/devices/dmi_memory.c:766 #: modules/devices/dmi_memory.c:805 modules/devices/dmi_memory.c:872 #: modules/devices/spd-decode.c:1384 msgid "Size" msgstr "" #: modules/computer/filesystem.c:91 msgid "Used" msgstr "" #: modules/computer/filesystem.c:92 msgid "Available" msgstr "" #: modules/computer/languages.c:94 msgid "Locale Information" msgstr "" #: modules/computer/languages.c:96 modules/devices/gpu.c:266 #: modules/devices/spd-decode.c:1373 msgid "Source" msgstr "" #: modules/computer/languages.c:97 msgid "Address" msgstr "" #: modules/computer/languages.c:98 msgid "E-mail" msgstr "" #: modules/computer/languages.c:100 msgid "Territory" msgstr "" #: modules/computer/languages.c:102 modules/devices/dmi.c:45 msgid "Date" msgstr "" #: modules/computer/languages.c:103 msgid "Codeset" msgstr "" #: modules/computer/loadavg.c:64 msgid "Couldn't obtain load average" msgstr "" #: modules/computer/memory_usage.c:131 msgid "Total physical memory usable by the system" msgstr "" #: modules/computer/memory_usage.c:132 msgid "Free memory which is not used for anything" msgstr "" #: modules/computer/memory_usage.c:133 msgid "Virtual memory, total swap space available" msgstr "" #: modules/computer/memory_usage.c:134 msgid "Virtual memory, remaining swap space available" msgstr "" #: modules/computer/memory_usage.c:135 msgid "Memory present within main memory and in the swapfile" msgstr "" #: modules/computer/memory_usage.c:136 msgid "HighTotal value can vary based on the type of kernel used" msgstr "" #: modules/computer/memory_usage.c:137 msgid "Amount of memory that is not directly mapped into kernel space" msgstr "" #: modules/computer/memory_usage.c:138 msgid "LowTotal value can vary based on the type of kernel used" msgstr "" #: modules/computer/memory_usage.c:139 msgid "Total and free memory directly mapped into kernel space" msgstr "" #: modules/computer/memory_usage.c:140 msgid "Available memory for allocation to any process, without swapping" msgstr "" #: modules/computer/memory_usage.c:141 msgid "Memory in buffer cache, temporary storage for raw disk blocks" msgstr "" #: modules/computer/memory_usage.c:142 msgid "Memory in the page cache (diskcache, shared memory, tmpfs and shmem)" msgstr "" #: modules/computer/memory_usage.c:143 msgid "Memory used more recently and not swapped out or reclaimed" msgstr "" #: modules/computer/memory_usage.c:144 msgid "Memory not been used recently and can be swapped out or reclaimed" msgstr "" #: modules/computer/memory_usage.c:145 msgid "Anonymous memory used more recently and not swapped out" msgstr "" #: modules/computer/memory_usage.c:146 msgid "Anonymous memory not been used and can be swapped out" msgstr "" #: modules/computer/memory_usage.c:147 msgid "Pagecache memory been used more recently and not reclaimed" msgstr "" #: modules/computer/memory_usage.c:148 msgid "Pagecache memory reclaimable without huge performance impact" msgstr "" #: modules/computer/memory_usage.c:149 msgid "Unevictable pages can't be swapped out for a variety of reasons" msgstr "" #: modules/computer/memory_usage.c:150 msgid "Pages locked to memory using the mlock() system call" msgstr "" #: modules/computer/memory_usage.c:151 msgid "Memory consumed by the zswap backend (compressed size)" msgstr "" #: modules/computer/memory_usage.c:152 msgid "Amount of anonymous memory stored in zswap (original size)" msgstr "" #: modules/computer/memory_usage.c:153 msgid "Memory waiting to be written back to disk" msgstr "" #: modules/computer/memory_usage.c:154 msgid "Memory which is actively being written back to disk" msgstr "" #: modules/computer/memory_usage.c:155 msgid "Non-file backed pages mapped into userspace page tables" msgstr "" #: modules/computer/memory_usage.c:156 msgid "Files which have been mmapped, such as libraries" msgstr "" #: modules/computer/memory_usage.c:157 msgid "Total memory used by shared memory (shmem) and tmpfs" msgstr "" #: modules/computer/memory_usage.c:158 msgid "Kernel allocations reclaimable under memory pressure" msgstr "" #: modules/computer/memory_usage.c:159 msgid "In-kernel data structures cache" msgstr "" #: modules/computer/memory_usage.c:160 msgid "Part of Slab, that might be reclaimed, such as caches" msgstr "" #: modules/computer/memory_usage.c:161 msgid "Part of Slab, that cannot be reclaimed on memory pressure" msgstr "" #: modules/computer/memory_usage.c:162 msgid "Memory consumed by the kernel stacks of all tasks" msgstr "" #: modules/computer/memory_usage.c:163 msgid "Memory consumed by userspace page tables" msgstr "" #: modules/computer/memory_usage.c:164 msgid "Memory consumed by secondary page tables" msgstr "" #: modules/computer/memory_usage.c:165 msgid "Previous counted pages which had been written to the server" msgstr "" #: modules/computer/memory_usage.c:166 msgid "Memory used for block device bounce buffers" msgstr "" #: modules/computer/memory_usage.c:167 msgid "Memory used by FUSE for temporary writeback buffers" msgstr "" #: modules/computer/memory_usage.c:168 msgid "Total memory currently available to be allocated on the system" msgstr "" #: modules/computer/memory_usage.c:169 msgid "The amount of memory presently allocated on the system" msgstr "" #: modules/computer/memory_usage.c:170 msgid "Total size of vmalloc virtual address space" msgstr "" #: modules/computer/memory_usage.c:171 msgid "Amount of vmalloc area which is used" msgstr "" #: modules/computer/memory_usage.c:172 msgid "Largest contiguous block of vmalloc area which is free" msgstr "" #: modules/computer/memory_usage.c:173 msgid "Memory allocated to the percpu allocator" msgstr "" #: modules/computer/memory_usage.c:174 msgid "Amount of memory the kernel identifies as corrupted" msgstr "" #: modules/computer/memory_usage.c:175 msgid "Non-file backed huge pages mapped into userspace page tables" msgstr "" #: modules/computer/memory_usage.c:176 msgid "Memory used by shmem and tmpfs allocated with huge pages" msgstr "" #: modules/computer/memory_usage.c:177 msgid "Shared memory mapped into userspace with huge pages" msgstr "" #: modules/computer/memory_usage.c:178 msgid "Memory used for fs data (page cache) allocated with huge pages" msgstr "" #: modules/computer/memory_usage.c:179 msgid "Page cache mapped into userspace with huge pages" msgstr "" #: modules/computer/memory_usage.c:180 msgid "Memory reserved for the Contiguous Memory Allocator (CMA)" msgstr "" #: modules/computer/memory_usage.c:181 msgid "Free remaining memory in the CMA reserves" msgstr "" #: modules/computer/memory_usage.c:182 msgid "Amount of unaccepted memory usable by the kernel" msgstr "" #: modules/computer/memory_usage.c:183 msgid "Size of the pool of huge pages" msgstr "" #: modules/computer/memory_usage.c:184 msgid "Number of huge pages available" msgstr "" #: modules/computer/memory_usage.c:185 msgid "Number of huge pages reserved" msgstr "" #: modules/computer/memory_usage.c:186 msgid "Number of huge pages surplus" msgstr "" #: modules/computer/memory_usage.c:187 msgid "Huge page size, used in conjunction with hugepages parameter" msgstr "" #: modules/computer/memory_usage.c:188 msgid "Total amount of memory consumed by huge pages of all sizes" msgstr "" #: modules/computer/memory_usage.c:189 msgid "Breakdown of page table sizes of 4k size" msgstr "" #: modules/computer/memory_usage.c:190 msgid "Breakdown of page table sizes of 2M size" msgstr "" #: modules/computer/memory_usage.c:191 msgid "Breakdown of page table sizes of 1G size" msgstr "" #: modules/computer/modules.c:168 msgid "Update kernel module icon table" msgstr "" #: modules/computer/modules.c:337 modules/computer/modules.c:338 #: modules/computer/modules.c:339 modules/computer/modules.c:340 #: modules/computer/modules.c:341 modules/computer/modules.c:342 #: modules/devices/dmi.c:117 modules/devices/firmware.c:245 #: modules/devices/x86/processor.c:694 msgid "(Not available)" msgstr "" #: modules/computer/modules.c:368 msgid "Module Information" msgstr "" #: modules/computer/modules.c:368 modules/devices/gpu.c:298 msgid "Path" msgstr "" #: modules/computer/modules.c:368 msgid "Used Memory" msgstr "" #: modules/computer/modules.c:370 msgid "Version Magic" msgstr "" #: modules/computer/modules.c:371 msgid "In Linus' Tree" msgstr "" #: modules/computer/modules.c:372 msgid "Retpoline Enabled" msgstr "" #: modules/computer/modules.c:372 msgid "Copyright" msgstr "" #: modules/computer/modules.c:372 msgid "Author" msgstr "" #: modules/computer/modules.c:373 msgid "License" msgstr "" #: modules/computer/modules.c:379 msgid "Dependencies" msgstr "" #: modules/computer/os.c:153 modules/computer/os.c:154 #: modules/computer/os.c:155 modules/computer/os.c:156 msgid "GNU C Library" msgstr "" #: modules/computer/os.c:157 msgid "uClibc or uClibc-ng" msgstr "" #: modules/computer/os.c:158 msgid "diet libc" msgstr "" #: modules/computer/os.c:229 modules/computer/os.c:232 msgid "GNOME Shell " msgstr "" #: modules/computer/os.c:240 modules/computer/os.c:243 msgid "Version: " msgstr "" #: modules/computer/os.c:261 modules/computer/os.c:264 msgid "MATE Desktop Environment " msgstr "" #: modules/computer/os.c:297 #, c-format msgid "Unknown (Window Manager: %s)" msgstr "" #. !/{desktop environment} on {session type} #: modules/computer/os.c:308 #, c-format msgid "%s on %s" msgstr "" #: modules/computer/os.c:376 msgid "Terminal" msgstr "" #: modules/computer/os.c:392 msgid "User access allowed" msgstr "" #: modules/computer/os.c:394 msgid "User access forbidden" msgstr "" #: modules/computer/os.c:396 msgid "Access allowed (running as superuser)" msgstr "" #: modules/computer/os.c:398 msgid "Access forbidden? (running as superuser)" msgstr "" #: modules/computer/os.c:407 modules/computer/os.c:797 msgid "Disabled" msgstr "" #: modules/computer/os.c:409 msgid "Partially enabled (mmap base+stack+VDSO base)" msgstr "" #: modules/computer/os.c:411 msgid "Fully enabled (mmap base+stack+VDSO base+heap)" msgstr "" #. !/bits of entropy for rng (0) #: modules/computer/os.c:420 msgid "(None or not available)" msgstr "" #. !/bits of entropy for rng (low/poor value) #: modules/computer/os.c:421 #, c-format msgid "%d bits (low)" msgstr "" #. !/bits of entropy for rng (medium value) #: modules/computer/os.c:422 #, c-format msgid "%d bits (medium)" msgstr "" #. !/bits of entropy for rng (high/good value) #: modules/computer/os.c:423 #, c-format msgid "%d bits (healthy)" msgstr "" #: modules/computer/os.c:792 msgid "Not installed" msgstr "" #: modules/computer/os.c:795 msgid "Enabled" msgstr "" #: modules/computer/users.c:50 msgid "User Information" msgstr "" #: modules/computer/users.c:51 msgid "User ID" msgstr "" #: modules/computer/users.c:54 msgid "Default Shell" msgstr "" #: modules/devices/alpha/processor.c:88 modules/devices/arm/processor.c:756 #: modules/devices.c:865 modules/devices/devicetree.c:162 #: modules/devices/devicetree.c:208 modules/devices/devicetree/pmac_data.c:80 #: modules/devices/e2k/processor.c:361 modules/devices/e2k/processor.c:416 #: modules/devices/gpu.c:116 modules/devices/ia64/processor.c:165 #: modules/devices/loongarch64/processor.c:96 #: modules/devices/m68k/processor.c:84 modules/devices/mips/processor.c:75 #: modules/devices/monitors.c:404 modules/devices/parisc/processor.c:155 #: modules/devices/ppc/processor.c:158 modules/devices/riscv/processor.c:584 #: modules/devices/riscv/processor.c:640 modules/devices/s390/processor.c:132 #: modules/devices/x86/processor.c:810 msgid "Model" msgstr "" #: modules/devices/alpha/processor.c:89 msgid "Platform String" msgstr "" #: modules/devices/alpha/processor.c:90 modules/devices/arm/processor.c:567 #: modules/devices/arm/processor.c:756 modules/devices/e2k/processor.c:363 #: modules/devices/e2k/processor.c:416 modules/devices/ia64/processor.c:167 #: modules/devices/loongarch64/processor.c:98 #: modules/devices/m68k/processor.c:87 modules/devices/mips/processor.c:77 #: modules/devices/parisc/processor.c:158 modules/devices/ppc/processor.c:160 #: modules/devices/riscv/processor.c:588 modules/devices/riscv/processor.c:640 #: modules/devices/sh/processor.c:87 modules/devices/x86/processor.c:658 #: modules/devices/x86/processor.c:810 msgid "Frequency" msgstr "" #: modules/devices/alpha/processor.c:91 modules/devices/arm/processor.c:568 #: modules/devices/e2k/processor.c:364 modules/devices/ia64/processor.c:168 #: modules/devices/m68k/processor.c:88 modules/devices/mips/processor.c:78 #: modules/devices/parisc/processor.c:159 modules/devices/ppc/processor.c:161 #: modules/devices/s390/processor.c:134 modules/devices/sh/processor.c:90 #: modules/devices/x86/processor.c:659 msgid "BogoMips" msgstr "" #: modules/devices/alpha/processor.c:92 modules/devices/arm/processor.c:569 #: modules/devices/e2k/processor.c:365 modules/devices/ia64/processor.c:169 #: modules/devices/loongarch64/processor.c:101 #: modules/devices/m68k/processor.c:89 modules/devices/mips/processor.c:79 #: modules/devices/parisc/processor.c:160 modules/devices/ppc/processor.c:162 #: modules/devices/riscv/processor.c:589 modules/devices/s390/processor.c:135 #: modules/devices/sh/processor.c:91 modules/devices/sparc/processor.c:77 #: modules/devices/x86/processor.c:660 msgid "Byte Order" msgstr "" #. !/flag:swp #: modules/devices/arm/arm_data.c:42 msgctxt "arm-flag" msgid "SWP instruction (atomic read-modify-write)" msgstr "" #. !/flag:half #: modules/devices/arm/arm_data.c:43 msgctxt "arm-flag" msgid "Half-word loads and stores" msgstr "" #. !/flag:thumb #: modules/devices/arm/arm_data.c:44 msgctxt "arm-flag" msgid "Thumb (16-bit instruction set)" msgstr "" #. !/flag:26bit #: modules/devices/arm/arm_data.c:45 msgctxt "arm-flag" msgid "26-Bit Model (Processor status register folded into program counter)" msgstr "" #. !/flag:fastmult #: modules/devices/arm/arm_data.c:46 msgctxt "arm-flag" msgid "32x32->64-bit multiplication" msgstr "" #. !/flag:fpa #: modules/devices/arm/arm_data.c:47 msgctxt "arm-flag" msgid "Floating point accelerator" msgstr "" #. !/flag:vfp #: modules/devices/arm/arm_data.c:48 msgctxt "arm-flag" msgid "VFP (early SIMD vector floating point instructions)" msgstr "" #. !/flag:edsp #: modules/devices/arm/arm_data.c:49 msgctxt "arm-flag" msgid "DSP extensions (the 'e' variant of the ARM9 CPUs, and all others above)" msgstr "" #. !/flag:java #: modules/devices/arm/arm_data.c:50 msgctxt "arm-flag" msgid "Jazelle (Java bytecode accelerator)" msgstr "" #. !/flag:iwmmxt #: modules/devices/arm/arm_data.c:51 msgctxt "arm-flag" msgid "SIMD instructions similar to Intel MMX" msgstr "" #. !/flag:crunch #: modules/devices/arm/arm_data.c:52 msgctxt "arm-flag" msgid "MaverickCrunch coprocessor (if kernel support enabled)" msgstr "" #. !/flag:thumbee #: modules/devices/arm/arm_data.c:53 msgctxt "arm-flag" msgid "ThumbEE" msgstr "" #. !/flag:neon #: modules/devices/arm/arm_data.c:54 msgctxt "arm-flag" msgid "Advanced SIMD/NEON on AArch32" msgstr "" #. !/flag:evtstrm #: modules/devices/arm/arm_data.c:55 msgctxt "arm-flag" msgid "Kernel event stream using generic architected timer" msgstr "" #. !/flag:vfpv3 #: modules/devices/arm/arm_data.c:56 msgctxt "arm-flag" msgid "VFP version 3" msgstr "" #. !/flag:vfpv3d16 #: modules/devices/arm/arm_data.c:57 msgctxt "arm-flag" msgid "VFP version 3 with 16 D-registers" msgstr "" #. !/flag:vfpv4 #: modules/devices/arm/arm_data.c:58 msgctxt "arm-flag" msgid "VFP version 4 with fast context switching" msgstr "" #. !/flag:vfpd32 #: modules/devices/arm/arm_data.c:59 msgctxt "arm-flag" msgid "VFP with 32 D-registers" msgstr "" #. !/flag:tls #: modules/devices/arm/arm_data.c:60 msgctxt "arm-flag" msgid "TLS register" msgstr "" #. !/flag:idiva #: modules/devices/arm/arm_data.c:61 msgctxt "arm-flag" msgid "SDIV and UDIV hardware division in ARM mode" msgstr "" #. !/flag:idivt #: modules/devices/arm/arm_data.c:62 msgctxt "arm-flag" msgid "SDIV and UDIV hardware division in Thumb mode" msgstr "" #. !/flag:lpae #: modules/devices/arm/arm_data.c:63 msgctxt "arm-flag" msgid "40-bit Large Physical Address Extension" msgstr "" #. !/flag:pmull #: modules/devices/arm/arm_data.c:65 msgctxt "arm-flag" msgid "64x64->128-bit F2m multiplication (arch>=8)" msgstr "" #. !/flag:aes #: modules/devices/arm/arm_data.c:66 msgctxt "arm-flag" msgid "Crypto:AES (arch>=8)" msgstr "" #. !/flag:sha1 #: modules/devices/arm/arm_data.c:67 msgctxt "arm-flag" msgid "Crypto:SHA1 (arch>=8)" msgstr "" #. !/flag:sha2 #: modules/devices/arm/arm_data.c:68 msgctxt "arm-flag" msgid "Crypto:SHA2 (arch>=8)" msgstr "" #. !/flag:crc32 #: modules/devices/arm/arm_data.c:69 msgctxt "arm-flag" msgid "CRC32 checksum instructions (arch>=8)" msgstr "" #. !/flag:fp #: modules/devices/arm/arm_data.c:71 msgctxt "arm-flag" msgid "Floating-point on AArch64 (arch>=8)" msgstr "" #. !/flag:asimd #: modules/devices/arm/arm_data.c:72 msgctxt "arm-flag" msgid "Advanced SIMD/NEON on AArch64 (arch>=8)" msgstr "" #. !/flag:atomics #: modules/devices/arm/arm_data.c:73 msgctxt "arm-flag" msgid "Atomic instructions on AArch64 (arch>=8)" msgstr "" #. !/flag:fphp #: modules/devices/arm/arm_data.c:74 msgctxt "arm-flag" msgid "Half precision floating point on AArch64 (arch>=8)" msgstr "" #. !/flag:asimdhp #: modules/devices/arm/arm_data.c:75 msgctxt "arm-flag" msgid "Advanced SIMD with BFloat16 on AArch64 (arch>=8)" msgstr "" #. !/flag:cpuid #: modules/devices/arm/arm_data.c:76 msgctxt "arm-flag" msgid "CPU features can be read on AArch64 (arch>=8)" msgstr "" #. !/flag:asimdrdm #: modules/devices/arm/arm_data.c:77 msgctxt "arm-flag" msgid "Advanced SIMD rounding Double MulAcc on AArch64 (arch>=8)" msgstr "" #. !/flag:jscvt #: modules/devices/arm/arm_data.c:78 msgctxt "arm-flag" msgid "JacaScript conversion on AArch64 (arch>=8)" msgstr "" #. !/flag:fcma #: modules/devices/arm/arm_data.c:79 msgctxt "arm-flag" msgid "Complex number SIMD on AArch64 (arch>=8)" msgstr "" #. !/flag:lrcpc #: modules/devices/arm/arm_data.c:80 msgctxt "arm-flag" msgid "Weak release consistency on AArch64 (arch>=8)" msgstr "" #. !/flag:dcpop #: modules/devices/arm/arm_data.c:81 msgctxt "arm-flag" msgid "Data cache clean to Point of Persistence on AArch64 (arch>=8)" msgstr "" #. !/flag:sha3 #: modules/devices/arm/arm_data.c:82 msgctxt "arm-flag" msgid "SHA-3 instructions on AArch64 (arch>=8)" msgstr "" #. !/flag:sm3 #: modules/devices/arm/arm_data.c:83 msgctxt "arm-flag" msgid "SM3 instructions on AArch64 (arch>=8)" msgstr "" #. !/flag:sm4 #: modules/devices/arm/arm_data.c:84 msgctxt "arm-flag" msgid "SM4 instructions on AArch64 (arch>=8)" msgstr "" #. !/flag:asimddp #: modules/devices/arm/arm_data.c:85 msgctxt "arm-flag" msgid "SIMD Dot Product on AArch64 (arch>=8)" msgstr "" #. !/flag:sha512 #: modules/devices/arm/arm_data.c:86 msgctxt "arm-flag" msgid "SHA512 instructions on AArch64 (arch>=8)" msgstr "" #. !/flag:sve #: modules/devices/arm/arm_data.c:87 msgctxt "arm-flag" msgid "Scalable Vector Extension on AArch64 (arch>=8)" msgstr "" #: modules/devices/arm/processor.c:46 modules/devices/e2k/processor.c:30 #: modules/devices/riscv/processor.c:36 modules/devices/x86/processor.c:149 msgid "Cache information not available=\n" msgstr "" #: modules/devices/arm/processor.c:52 modules/devices/e2k/processor.c:36 #: modules/devices/riscv/processor.c:42 modules/devices/x86/processor.c:155 #, c-format msgid "Level %d (%s)=%d-way set-associative, %d sets, %dKB size\n" msgstr "" #: modules/devices/arm/processor.c:174 modules/devices/e2k/processor.c:157 #: modules/devices/riscv/processor.c:164 modules/devices/x86/processor.c:366 msgid "Caches" msgstr "" #: modules/devices/arm/processor.c:225 modules/devices/arm/processor.c:242 #: modules/devices/e2k/processor.c:208 modules/devices/e2k/processor.c:225 #: modules/devices/riscv/processor.c:215 modules/devices/riscv/processor.c:232 #: modules/devices/x86/processor.c:417 modules/devices/x86/processor.c:434 #, c-format msgid "Level %d (%s)#%d=%dx %dKB (%dKB), %d-way set-associative, %d sets\n" msgstr "" #: modules/devices/arm/processor.c:365 msgid "ARM Processor" msgstr "" #: modules/devices/arm/processor.c:436 modules/devices/riscv/processor.c:522 #: modules/devices/x86/processor.c:609 msgid "Empty List" msgstr "" #: modules/devices/arm/processor.c:461 modules/devices/gpu.c:204 #: modules/devices/gpu.c:294 modules/devices/riscv/processor.c:330 #: modules/devices/x86/processor.c:267 msgid "Clocks" msgstr "" #: modules/devices/arm/processor.c:507 modules/devices/arm/processor.c:520 #: modules/devices/riscv/processor.c:376 modules/devices/riscv/processor.c:389 #: modules/devices/x86/processor.c:313 modules/devices/x86/processor.c:326 #, c-format msgid "%.2f-%.2f %s=%dx\n" msgstr "" #: modules/devices/arm/processor.c:564 msgid "Linux Name" msgstr "" #: modules/devices/arm/processor.c:565 msgid "Decoded Name" msgstr "" #: modules/devices/arm/processor.c:566 modules/network/net.c:476 msgid "Mode" msgstr "" #: modules/devices/arm/processor.c:573 msgid "ARM" msgstr "" #: modules/devices/arm/processor.c:574 msgid "Implementer" msgstr "" #: modules/devices/arm/processor.c:575 modules/devices/dmi_memory.c:874 msgid "Part" msgstr "" #: modules/devices/arm/processor.c:576 modules/devices/ia64/processor.c:162 #: modules/devices/parisc/processor.c:156 modules/devices/riscv/processor.c:585 msgid "Architecture" msgstr "" #: modules/devices/arm/processor.c:577 msgid "Variant" msgstr "" #: modules/devices/arm/processor.c:579 modules/devices/riscv/processor.c:593 #: modules/devices/sparc/processor.c:78 modules/devices/x86/processor.c:666 msgid "Capabilities" msgstr "" #: modules/devices/arm/processor.c:703 modules/devices/riscv/processor.c:548 msgid "SOC/Package" msgstr "" #: modules/devices/arm/processor.c:707 modules/devices/riscv/processor.c:552 #: modules/devices/x86/processor.c:752 msgid "Logical CPU Config" msgstr "" #: modules/devices/arm/processor.c:726 modules/devices/riscv/processor.c:608 msgid "SOC/Package Information" msgstr "" #: modules/devices/arm/processor.c:756 modules/devices/riscv/processor.c:640 #: modules/devices/x86/processor.c:810 msgid "Socket:Core" msgstr "" #: modules/devices/battery.c:178 #, c-format msgid "" "\n" "[Battery: %s]\n" "State=%s (load: %s)\n" "Capacity=%s / %s (%.2f%%)\n" "Battery Technology=%s (%s)\n" "Manufacturer=%s\n" "Model Number=%s\n" "Serial Number=%s\n" msgstr "" #: modules/devices/battery.c:260 #, c-format msgid "" "\n" "[AC Power Supply: %s]\n" "Online=%s\n" "AC Power Type=%s\n" msgstr "" #: modules/devices/battery.c:291 #, c-format msgid "" "\n" "[Battery: %s]\n" "State=%s\n" "Capacity=%s / %s\n" "Battery Health=%.0f %%\n" "Design Full Energy=%.3f Wh\n" "Current Full Energy=%.3f Wh\n" "Design Full Capacity=%.3f Ah\n" "Current Full Capacity=%.3f Ah\n" "Voltage Design=%.3f V\n" "Battery Technology=%s\n" "Manufacturer=%s\n" "Model Number=%s\n" "Serial Number=%s\n" msgstr "" #: modules/devices/battery.c:400 #, c-format msgid "" "\n" "[Battery (APM)]\n" "Charge=%d%%\n" "Remaining Charge=%s of %s\n" "Using=%s\n" "APM driver version=%s\n" "APM BIOS version=%s\n" msgstr "" #: modules/devices/battery.c:412 #, c-format msgid "" "\n" "[Battery (APM)]\n" "Charge=%d%%\n" "Using=%s\n" "APM driver version=%s\n" "APM BIOS version=%s\n" msgstr "" #: modules/devices/battery.c:441 msgid "" "[No batteries]\n" "No batteries found on this system=\n" msgstr "" #: modules/devices.c:100 msgid "Graphics Processors" msgstr "" #: modules/devices.c:101 modules/devices/monitors.c:449 #: modules/devices/monitors.c:495 msgid "Monitors" msgstr "" #: modules/devices.c:102 modules/devices/pci.c:196 msgid "PCI Devices" msgstr "" #: modules/devices.c:103 modules/devices/usb.c:211 msgid "USB Devices" msgstr "" #: modules/devices.c:104 msgid "Firmware" msgstr "" #: modules/devices.c:106 msgid "Battery" msgstr "" #: modules/devices.c:107 msgid "Sensors" msgstr "" #: modules/devices.c:110 msgid "System DMI" msgstr "" #: modules/devices.c:111 msgid "Memory Devices" msgstr "" #: modules/devices.c:113 modules/devices.c:115 msgid "Device Tree" msgstr "" #: modules/devices.c:117 msgid "Resources" msgstr "" #: modules/devices.c:594 msgid "WSL2" msgstr "" #: modules/devices.c:841 msgid "Sensor" msgstr "" #: modules/devices.c:899 modules/devices/dmi_memory.c:806 msgid "Devices" msgstr "" #: modules/devices.c:911 msgid "Update PCI ID listing" msgstr "" #: modules/devices.c:916 msgid "Update USB ID listing" msgstr "" #: modules/devices.c:921 msgid "Update EDID vendor codes" msgstr "" #: modules/devices.c:926 msgid "Update IEEE OUI vendor codes" msgstr "" #: modules/devices.c:931 msgid "Update SD card manufacturer information" msgstr "" #: modules/devices.c:938 msgid "Update CPU flags database" msgstr "" #: modules/devices.c:973 msgid "Gathers information about hardware devices" msgstr "" #: modules/devices.c:994 msgid "A copy of pci.ids is not available on the system." msgstr "" #: modules/devices.c:997 msgid "A full pci.ids is not available on the system." msgstr "" #: modules/devices.c:1002 msgid "" "Ensure hardinfo2 service is enabled+started: sudo systemctl enable hardinfo2 " "--now (SystemD distro)\n" "Add yourself to hardinfo2 group: sudo usermod -a -G hardinfo2 YOUR_LOGIN\n" "And Logout/Reboot for groups to be updated..." msgstr "" #: modules/devices.c:1008 msgid "" "Any NVMe storage devices present are not listed.\n" "udisks2 is required for NVMe devices." msgstr "" #: modules/devices/devicetree.c:51 msgid "Properties" msgstr "" #: modules/devices/devicetree.c:52 msgid "Children" msgstr "" #: modules/devices/devicetree.c:88 msgid "Node" msgstr "" #: modules/devices/devicetree.c:89 msgid "Node Path" msgstr "" #: modules/devices/devicetree.c:90 msgid "Alias" msgstr "" #: modules/devices/devicetree.c:91 msgid "Symbol" msgstr "" #: modules/devices/devicetree.c:144 modules/devices/devicetree/pmac_data.c:79 msgid "Platform" msgstr "" #: modules/devices/devicetree.c:145 modules/devices/devicetree.c:210 #: modules/devices/gpu.c:299 msgid "Compatible" msgstr "" #: modules/devices/devicetree.c:146 msgid "GPU-compatible" msgstr "" #: modules/devices/devicetree.c:161 msgid "Raspberry Pi or Compatible" msgstr "" #: modules/devices/devicetree.c:163 modules/devices/devicetree.c:190 #: modules/devices/devicetree.c:209 modules/devices/devicetree/rpi_data.c:169 #: modules/devices/dmi.c:42 modules/devices/dmi.c:52 modules/devices/dmi.c:58 #: modules/devices/spd-decode.c:1383 modules/devices/usb.c:181 msgid "Serial Number" msgstr "" #: modules/devices/devicetree.c:164 modules/devices/devicetree/rpi_data.c:166 msgid "RCode" msgstr "" #: modules/devices/devicetree.c:164 msgid "No revision code available; unable to lookup model details." msgstr "" #: modules/devices/devicetree.c:189 msgid "More" msgstr "" #: modules/devices/devicetree.c:270 msgid "Messages" msgstr "" #: modules/devices/devicetree/pmac_data.c:78 msgid "Apple Power Macintosh" msgstr "" #: modules/devices/devicetree/pmac_data.c:83 msgid "Detected as" msgstr "" #: modules/devices/devicetree/pmac_data.c:84 msgid "PMAC Flags" msgstr "" #: modules/devices/devicetree/pmac_data.c:85 msgid "L2 Cache" msgstr "" #: modules/devices/devicetree/pmac_data.c:86 msgid "PMAC Generation" msgstr "" #: modules/devices/devicetree/rpi_data.c:161 #: modules/devices/devicetree/rpi_data.c:162 msgid "Raspberry Pi" msgstr "" #: modules/devices/devicetree/rpi_data.c:162 msgid "Board Name" msgstr "" #: modules/devices/devicetree/rpi_data.c:163 msgid "PCB Revision" msgstr "" #: modules/devices/devicetree/rpi_data.c:164 msgid "Introduction" msgstr "" #: modules/devices/devicetree/rpi_data.c:165 modules/devices/usb.c:173 msgid "Manufacturer" msgstr "" #: modules/devices/devicetree/rpi_data.c:167 msgid "SOC (spec)" msgstr "" #: modules/devices/devicetree/rpi_data.c:168 msgid "Memory (spec)" msgstr "" #: modules/devices/devicetree/rpi_data.c:170 msgid "Permanent overvolt bit" msgstr "" #: modules/devices/devicetree/rpi_data.c:170 msgctxt "rpi-ov-bit" msgid "Set" msgstr "" #: modules/devices/devicetree/rpi_data.c:170 msgctxt "rpi-ov-bit" msgid "Not set" msgstr "" #: modules/devices/dmi.c:37 modules/devices/inputdevices.c:145 #: modules/devices/usb.c:170 msgid "Product" msgstr "" #: modules/devices/dmi.c:39 modules/devices/e2k/processor.c:360 #: modules/devices/ia64/processor.c:164 #: modules/devices/loongarch64/processor.c:95 modules/devices/sh/processor.c:86 msgid "Family" msgstr "" #: modules/devices/dmi.c:43 msgid "SKU" msgstr "" #: modules/devices/dmi.c:44 msgid "BIOS" msgstr "" #: modules/devices/dmi.c:53 modules/devices/dmi.c:59 msgid "Asset Tag" msgstr "" #: modules/devices/dmi.c:161 msgid "DMI Unavailable" msgstr "" #: modules/devices/dmi.c:162 msgid "DMI is not available. Perhaps this platform does not provide DMI." msgstr "" #: modules/devices/dmi_memory.c:620 modules/devices/dmi_memory.c:859 msgid "Memory Device List" msgstr "" #: modules/devices/dmi_memory.c:668 msgid "Memory Array" msgstr "" #: modules/devices/dmi_memory.c:669 modules/devices/x86/processor.c:714 msgid "DMI Handle" msgstr "" #: modules/devices/dmi_memory.c:670 modules/devices/dmi_memory.c:726 #: modules/devices/dmi_memory.c:764 modules/devices/dmi_memory.c:871 msgid "Locator" msgstr "" #: modules/devices/dmi_memory.c:671 msgid "Use" msgstr "" #: modules/devices/dmi_memory.c:672 msgid "Error Correction Type" msgstr "" #: modules/devices/dmi_memory.c:673 msgid "Size (Present / Max)" msgstr "" #: modules/devices/dmi_memory.c:674 msgid "Devices (Populated / Sockets)" msgstr "" #: modules/devices/dmi_memory.c:675 modules/devices/dmi_memory.c:807 msgid "Types Present" msgstr "" #: modules/devices/dmi_memory.c:676 msgid "ROM Size" msgstr "" #: modules/devices/dmi_memory.c:724 modules/devices/dmi_memory.c:762 msgid "Memory Socket" msgstr "" #: modules/devices/dmi_memory.c:725 modules/devices/dmi_memory.c:763 msgid "DMI Handles (Array, Socket)" msgstr "" #: modules/devices/dmi_memory.c:727 modules/devices/dmi_memory.c:765 msgid "Bank Locator" msgstr "" #: modules/devices/dmi_memory.c:728 modules/devices/spd-decode.c:1376 msgid "Form Factor" msgstr "" #: modules/devices/dmi_memory.c:732 modules/devices/spd-decode.c:1382 msgid "Part Number" msgstr "" #: modules/devices/dmi_memory.c:734 msgid "Rated Speed" msgstr "" #: modules/devices/dmi_memory.c:735 msgid "Configured Speed" msgstr "" #: modules/devices/dmi_memory.c:736 msgid "Data Width/Total Width" msgstr "" #: modules/devices/dmi_memory.c:737 msgid "Rank" msgstr "" #: modules/devices/dmi_memory.c:738 msgid "Minimum Voltage" msgstr "" #: modules/devices/dmi_memory.c:739 msgid "Maximum Voltage" msgstr "" #: modules/devices/dmi_memory.c:740 msgid "Configured Voltage" msgstr "" #: modules/devices/dmi_memory.c:766 modules/devices/dmi_memory.c:773 #: modules/devices/monitors.c:495 msgid "(Empty)" msgstr "" #: modules/devices/dmi_memory.c:804 msgid "Serial Presence Detect (SPD) Summary" msgstr "" #: modules/devices/dmi_memory.c:860 msgid "(Not available - See hint box below)" msgstr "" #: modules/devices/dmi_memory.c:932 msgid "No DMI available" msgstr "" #: modules/devices/dmi_memory.c:937 msgid "dmidecode package installed" msgstr "" #: modules/devices/dmi_memory.c:948 msgid "Memory Information requires more Setup:" msgstr "" #: modules/devices/dmi_memory.c:976 msgid "" "\"More often than not, information contained in the DMI tables is " "inaccurate,\n" "incomplete or simply wrong.\" -dmidecode manual page" msgstr "" #: modules/devices/e2k/processor.c:51 msgctxt "cache-type" msgid "Data" msgstr "" #: modules/devices/e2k/processor.c:52 msgctxt "cache-type" msgid "Instruction" msgstr "" #: modules/devices/e2k/processor.c:53 msgctxt "cache-type" msgid "Unified" msgstr "" #: modules/devices/firmware.c:36 msgid "Device cannot be removed easily" msgstr "" #: modules/devices/firmware.c:37 msgid "Device is updatable in this or any other mode" msgstr "" #: modules/devices/firmware.c:38 msgid "Update can only be done from offline mode" msgstr "" #: modules/devices/firmware.c:39 msgid "Requires AC power" msgstr "" #: modules/devices/firmware.c:40 msgid "Is locked and can be unlocked" msgstr "" #: modules/devices/firmware.c:41 msgid "Is found in current metadata" msgstr "" #: modules/devices/firmware.c:42 msgid "Requires a bootloader mode to be manually enabled by the user" msgstr "" #: modules/devices/firmware.c:43 msgid "Has been registered with other plugins" msgstr "" #: modules/devices/firmware.c:44 msgid "Requires a reboot to apply firmware or to reload hardware" msgstr "" #: modules/devices/firmware.c:45 msgid "Requires system shutdown to apply firmware" msgstr "" #: modules/devices/firmware.c:46 msgid "Has been reported to a metadata server" msgstr "" #: modules/devices/firmware.c:47 msgid "User has been notified" msgstr "" #: modules/devices/firmware.c:48 msgid "Always use the runtime version rather than the bootloader" msgstr "" #: modules/devices/firmware.c:49 msgid "Install composite firmware on the parent before the child" msgstr "" #: modules/devices/firmware.c:50 msgid "Is currently in bootloader mode" msgstr "" #: modules/devices/firmware.c:51 msgid "The hardware is waiting to be replugged" msgstr "" #: modules/devices/firmware.c:52 msgid "Ignore validation safety checks when flashing this device" msgstr "" #: modules/devices/firmware.c:53 msgid "Requires the update to be retried with a new plugin" msgstr "" #: modules/devices/firmware.c:54 msgid "Do not add instance IDs from the device baseclass" msgstr "" #: modules/devices/firmware.c:55 msgid "Device update needs to be separately activated" msgstr "" #: modules/devices/firmware.c:56 msgid "" "Ensure the version is a valid semantic version, e.g. numbers separated with " "dots" msgstr "" #: modules/devices/firmware.c:57 msgid "Extra metadata can be exposed about this device" msgstr "" #: modules/devices/firmware.c:74 msgid "DeviceId" msgstr "" #: modules/devices/firmware.c:74 modules/devices/firmware.c:187 msgid "Guid" msgstr "" #: modules/devices/firmware.c:74 msgid "Plugin" msgstr "" #: modules/devices/firmware.c:74 modules/devices/firmware.c:205 #: modules/network.c:381 msgid "Flags" msgstr "" #: modules/devices/firmware.c:75 msgid "VendorId" msgstr "" #: modules/devices/firmware.c:75 msgid "VersionBootloader" msgstr "" #: modules/devices/firmware.c:76 modules/devices/firmware.c:179 msgid "Icon" msgstr "" #: modules/devices/firmware.c:76 msgid "InstallDuration" msgstr "" #: modules/devices/firmware.c:76 modules/devices/firmware.c:197 msgid "Created" msgstr "" #: modules/devices/firmware.c:244 msgid "Firmware List" msgstr "" #: modules/devices/firmware.c:257 msgid "Requires the fwupd daemon." msgstr "" #: modules/devices/gpu.c:94 modules/devices/pci.c:132 #: modules/devices/storage.c:58 msgid "SVendor" msgstr "" #: modules/devices/gpu.c:95 modules/devices/pci.c:133 #: modules/devices/storage.c:59 msgid "SDevice" msgstr "" #: modules/devices/gpu.c:103 modules/devices/pci.c:143 #: modules/devices/storage.c:68 msgid "PCI Express" msgstr "" #: modules/devices/gpu.c:104 modules/devices/pci.c:145 #: modules/devices/storage.c:70 msgid "Maximum Link Width" msgstr "" #: modules/devices/gpu.c:105 modules/devices/pci.c:147 #: modules/devices/storage.c:71 msgid "Maximum Link Speed" msgstr "" #: modules/devices/gpu.c:105 modules/devices/pci.c:146 #: modules/devices/pci.c:147 modules/devices/storage.c:71 msgid "GT/s" msgstr "" #: modules/devices/gpu.c:115 msgid "NVIDIA" msgstr "" #: modules/devices/gpu.c:117 msgid "BIOS Version" msgstr "" #: modules/devices/gpu.c:118 msgid "UUID" msgstr "" #: modules/devices/gpu.c:197 modules/devices/gpu.c:289 #: modules/devices/inputdevices.c:140 modules/devices/pci.c:164 #: modules/devices/usb.c:169 msgid "Device Information" msgstr "" #: modules/devices/gpu.c:199 modules/devices/gpu.c:291 #: modules/devices/storage.c:69 msgid "Location" msgstr "" #: modules/devices/gpu.c:200 msgid "DRM Device" msgstr "" #: modules/devices/gpu.c:201 modules/devices/pci.c:165 #: modules/devices/usb.c:136 modules/devices/usb.c:177 msgid "Class" msgstr "" #: modules/devices/gpu.c:210 modules/devices/pci.c:170 msgid "In Use" msgstr "" #: modules/devices/gpu.c:245 msgid "Unknown integrated GPU" msgstr "" #: modules/devices/gpu.c:253 msgid "clock-frequency property" msgstr "" #: modules/devices/gpu.c:254 msgid "Operating Points (OPPv1)" msgstr "" #: modules/devices/gpu.c:255 msgid "Operating Points (OPPv2)" msgstr "" #: modules/devices/gpu.c:297 msgid "Device Tree Node" msgstr "" #: modules/devices/gpu.c:300 modules/devices/monitors.c:475 #: modules/network/net.c:477 msgid "Status" msgstr "" #: modules/devices/gpu.c:317 msgid "GPUs" msgstr "" #: modules/devices/gpu.c:341 msgid "No GPU devices found" msgstr "" #: modules/devices/ia64/processor.c:108 msgid "IA64 Processor" msgstr "" #: modules/devices/ia64/processor.c:163 msgid "Architecture Revision" msgstr "" #: modules/devices/ia64/processor.c:170 msgid "CPU regs" msgstr "" #: modules/devices/ia64/processor.c:171 #: modules/devices/loongarch64/processor.c:100 msgid "Features" msgstr "" #: modules/devices/inputdevices.c:143 modules/devices/pci.c:174 #: modules/devices/usb.c:183 msgid "Bus" msgstr "" #: modules/devices/inputdevices.c:149 msgid "Connected to" msgstr "" #: modules/devices/inputdevices.c:153 msgid "InfraRed port" msgstr "" #: modules/devices/loongarch64/processor.c:94 #: modules/devices/mips/processor.c:76 msgid "System Type" msgstr "" #: modules/devices/loongarch64/processor.c:99 msgid "BogoMIPS" msgstr "" #: modules/devices/m68k/processor.c:85 modules/devices/riscv/processor.c:587 msgid "MMU" msgstr "" #: modules/devices/m68k/processor.c:86 modules/devices/sparc/processor.c:76 msgid "FPU" msgstr "" #: modules/devices/m68k/processor.c:90 msgid "Calibration" msgstr "" #: modules/devices/monitors.c:30 modules/devices/monitors.c:257 #: modules/devices/monitors.c:350 modules/devices/spd-decode.c:699 msgid "(Unspecified)" msgstr "" #: modules/devices/monitors.c:232 #, c-format msgid "Week %d of %d" msgstr "" #: modules/devices/monitors.c:242 msgid "Ok" msgstr "" #: modules/devices/monitors.c:242 msgid "Fail" msgstr "" #: modules/devices/monitors.c:270 modules/devices/monitors.c:278 #: modules/devices/monitors.c:286 modules/devices/monitors.c:297 #: modules/devices/monitors.c:305 modules/devices/monitors.c:312 #: modules/devices/monitors.c:320 modules/devices/monitors.c:328 #: modules/devices/monitors.c:336 modules/devices/monitors.c:342 msgid "(Empty List)" msgstr "" #: modules/devices/monitors.c:394 msgid "Signal Type" msgstr "" #: modules/devices/monitors.c:394 msgid "Digital" msgstr "" #: modules/devices/monitors.c:394 msgid "Analog" msgstr "" #: modules/devices/monitors.c:395 modules/devices/usb.c:135 #: modules/network.c:311 modules/network.c:364 modules/network.c:381 msgid "Interface" msgstr "" #: modules/devices/monitors.c:396 msgid "Bits per Color Channel" msgstr "" #: modules/devices/monitors.c:397 msgid "Speaker Allocation" msgstr "" #: modules/devices/monitors.c:398 msgid "Output (Max)" msgstr "" #: modules/devices/monitors.c:401 msgid "EDID Device" msgstr "" #: modules/devices/monitors.c:405 msgid "Serial" msgstr "" #: modules/devices/monitors.c:406 msgid "Manufacture Date" msgstr "" #: modules/devices/monitors.c:407 msgid "EDID Meta" msgstr "" #: modules/devices/monitors.c:408 msgid "Data Size" msgstr "" #: modules/devices/monitors.c:408 msgid "bytes" msgstr "" #: modules/devices/monitors.c:410 msgid "Extension Blocks" msgstr "" #: modules/devices/monitors.c:411 msgid "Extended to" msgstr "" #: modules/devices/monitors.c:412 msgid "Checksum" msgstr "" #: modules/devices/monitors.c:413 msgid "EDID Descriptors" msgstr "" #: modules/devices/monitors.c:414 msgid "Detailed Timing Descriptors (DTD)" msgstr "" #: modules/devices/monitors.c:415 msgid "Established Timings Bitmap (ETB)" msgstr "" #: modules/devices/monitors.c:416 msgid "Standard Timings (STD)" msgstr "" #: modules/devices/monitors.c:417 msgid "E-EDID Extension Blocks" msgstr "" #: modules/devices/monitors.c:418 msgid "EIA/CEA-861 Data Blocks" msgstr "" #: modules/devices/monitors.c:419 msgid "EIA/CEA-861 Short Audio Descriptors" msgstr "" #: modules/devices/monitors.c:420 msgid "EIA/CEA-861 Short Video Descriptors" msgstr "" #: modules/devices/monitors.c:421 msgid "DisplayID Timings" msgstr "" #: modules/devices/monitors.c:422 msgid "DisplayID Strings" msgstr "" #: modules/devices/monitors.c:423 msgid "Hex Dump" msgstr "" #: modules/devices/monitors.c:423 msgid "Data" msgstr "" #: modules/devices/monitors.c:473 modules/devices/monitors.c:504 #: modules/devices/pci.c:172 modules/devices/usb.c:182 msgid "Connection" msgstr "" #: modules/devices/monitors.c:474 msgid "DRM" msgstr "" #: modules/devices/parisc/processor.c:107 msgid "PA-RISC Processor" msgstr "" #: modules/devices/parisc/processor.c:161 msgid "HVersion" msgstr "" #: modules/devices/parisc/processor.c:162 msgid "SVersion" msgstr "" #: modules/devices/pci.c:144 msgid "Link Width" msgstr "" #: modules/devices/pci.c:146 msgid "Link Speed" msgstr "" #: modules/devices/pci.c:173 msgid "Domain" msgstr "" #: modules/devices/pci.c:176 msgid "Function" msgstr "" #: modules/devices/pci.c:217 msgid "No PCI devices found" msgstr "" #: modules/devices/ppc/processor.c:117 msgid "POWER Processor" msgstr "" #: modules/devices/printers.c:88 msgid "⚬ Can do black and white printing=\n" msgstr "" #: modules/devices/printers.c:90 msgid "⚬ Can do color printing=\n" msgstr "" #: modules/devices/printers.c:92 msgid "⚬ Can do duplexing=\n" msgstr "" #: modules/devices/printers.c:94 msgid "⚬ Can do staple output=\n" msgstr "" #: modules/devices/printers.c:96 msgid "⚬ Can do copies=\n" msgstr "" #: modules/devices/printers.c:98 msgid "⚬ Can collate copies=\n" msgstr "" #: modules/devices/printers.c:100 msgid "⚬ Printer is rejecting jobs=\n" msgstr "" #: modules/devices/printers.c:102 msgid "⚬ Printer was automatically discovered and added=\n" msgstr "" #: modules/devices/printers.c:117 msgid "Idle" msgstr "" #: modules/devices/printers.c:119 msgid "Printing a Job" msgstr "" #: modules/devices/printers.c:121 msgid "Stopped" msgstr "" #: modules/devices/printers.c:200 msgid "" "[Printers]\n" "No suitable CUPS library found=" msgstr "" #: modules/devices/printers.c:213 msgid "[Printers (CUPS)]\n" msgstr "" #: modules/devices/printers.c:277 msgid "" "[Printers]\n" "No printers found=\n" msgstr "" #: modules/devices/riscv/processor.c:586 msgid "uarch" msgstr "" #: modules/devices/riscv/riscv_data.c:37 msgctxt "rv-ext" msgid "RISC-V 32-bit" msgstr "" #: modules/devices/riscv/riscv_data.c:38 msgctxt "rv-ext" msgid "RISC-V 64-bit" msgstr "" #: modules/devices/riscv/riscv_data.c:39 msgctxt "rv-ext" msgid "RISC-V 128-bit" msgstr "" #: modules/devices/riscv/riscv_data.c:40 msgctxt "rv-ext" msgid "Base embedded integer instructions (15 registers)" msgstr "" #: modules/devices/riscv/riscv_data.c:41 msgctxt "rv-ext" msgid "Base integer instructions (31 registers)" msgstr "" #: modules/devices/riscv/riscv_data.c:42 msgctxt "rv-ext" msgid "Hardware integer multiply and divide" msgstr "" #: modules/devices/riscv/riscv_data.c:43 msgctxt "rv-ext" msgid "Atomic memory operations" msgstr "" #: modules/devices/riscv/riscv_data.c:44 msgctxt "rv-ext" msgid "Compressed 16-bit instructions" msgstr "" #: modules/devices/riscv/riscv_data.c:45 msgctxt "rv-ext" msgid "Floating-point instructions, single-precision" msgstr "" #: modules/devices/riscv/riscv_data.c:46 msgctxt "rv-ext" msgid "Floating-point instructions, double-precision" msgstr "" #: modules/devices/riscv/riscv_data.c:47 msgctxt "rv-ext" msgid "Floating-point instructions, quad-precision" msgstr "" #: modules/devices/riscv/riscv_data.c:48 msgctxt "rv-ext" msgid "Bit manipulation instructions" msgstr "" #: modules/devices/riscv/riscv_data.c:49 msgctxt "rv-ext" msgid "Vector operations" msgstr "" #: modules/devices/riscv/riscv_data.c:50 msgctxt "rv-ext" msgid "Scalar Cryptography" msgstr "" #: modules/devices/riscv/riscv_data.c:51 msgctxt "rv-ext" msgid "Base Counters and Timers" msgstr "" #: modules/devices/riscv/riscv_data.c:52 msgctxt "rv-ext" msgid "Control and Status Register" msgstr "" #: modules/devices/riscv/riscv_data.c:53 msgctxt "rv-ext" msgid "Instruction-Fetch Fence" msgstr "" #: modules/devices/riscv/riscv_data.c:54 msgctxt "rv-ext" msgid "Hardware performance counters" msgstr "" #: modules/devices/riscv/riscv_data.c:55 msgctxt "rv-ext" msgid "Accell Index addresses" msgstr "" #: modules/devices/riscv/riscv_data.c:56 msgctxt "rv-ext" msgid "Basic bit-manipulation" msgstr "" #: modules/devices/riscv/riscv_data.c:57 msgctxt "rv-ext" msgid "Supervisor-level Instructions" msgstr "" #: modules/devices/riscv/riscv_data.c:58 msgctxt "rv-ext" msgid "User Mode" msgstr "" #: modules/devices/riscv/riscv_data.c:59 msgctxt "rv-ext" msgid "Transactional memory" msgstr "" #: modules/devices/riscv/riscv_data.c:60 msgctxt "rv-ext" msgid "Packed SIMD instructions" msgstr "" #: modules/devices/riscv/riscv_data.c:61 msgctxt "rv-ext" msgid "Decimal floating-point instructions" msgstr "" #: modules/devices/riscv/riscv_data.c:62 msgctxt "rv-ext" msgid "Dynamically translated languages" msgstr "" #: modules/devices/riscv/riscv_data.c:63 msgctxt "rv-ext" msgid "User-level interrupts" msgstr "" #: modules/devices/s390/processor.c:92 msgid "S390 Processor" msgstr "" #: modules/devices/s390/processor.c:133 msgid "ID String" msgstr "" #: modules/devices/sh/processor.c:55 msgid "SuperH Processor" msgstr "" #: modules/devices/sh/processor.c:88 msgid "Bus Frequency" msgstr "" #: modules/devices/sh/processor.c:89 msgid "Module Frequency" msgstr "" #: modules/devices/spd-decode.c:128 modules/devices/spd-decode.c:144 msgid "Unspecified" msgstr "" #: modules/devices/spd-decode.c:130 modules/devices/spd-decode.c:146 msgid "Invalid" msgstr "" #: modules/devices/spd-decode.c:358 msgid "Row address bits" msgstr "" #: modules/devices/spd-decode.c:359 msgid "Column address bits" msgstr "" #: modules/devices/spd-decode.c:360 msgid "Number of rows" msgstr "" #: modules/devices/spd-decode.c:361 msgid "Data width" msgstr "" #: modules/devices/spd-decode.c:362 msgid "Interface signal levels" msgstr "" #: modules/devices/spd-decode.c:363 msgid "Configuration type" msgstr "" #: modules/devices/spd-decode.c:364 msgid "Refresh" msgstr "" #: modules/devices/spd-decode.c:365 modules/devices/spd-decode.c:442 #: modules/devices/spd-decode.c:721 msgid "Timings" msgstr "" #: modules/devices/spd-decode.c:589 modules/devices/spd-decode.c:858 #: modules/devices/spd-decode.c:899 modules/devices/spd-decode.c:1111 #: modules/devices/x86/processor.c:716 msgid "Voltage" msgstr "" #: modules/devices/spd-decode.c:590 modules/devices/spd-decode.c:901 #: modules/devices/spd-decode.c:1113 msgid "JEDEC Timings" msgstr "" #: modules/devices/spd-decode.c:697 msgid "Ranks" msgstr "" #: modules/devices/spd-decode.c:698 msgid "IO Pins per Chip" msgstr "" #: modules/devices/spd-decode.c:699 msgid "Die count" msgstr "" #: modules/devices/spd-decode.c:700 msgid "Thermal Sensor" msgstr "" #: modules/devices/spd-decode.c:700 msgid "Present" msgstr "" #: modules/devices/spd-decode.c:700 msgid "Not present" msgstr "" #: modules/devices/spd-decode.c:701 msgid "Supported Voltages" msgstr "" #: modules/devices/spd-decode.c:705 msgid "Supported CAS Latencies" msgstr "" #: modules/devices/spd-decode.c:856 msgid "XMP Profile" msgstr "" #: modules/devices/spd-decode.c:857 modules/devices/usb.c:176 #: modules/network/net.c:438 msgid "Speed" msgstr "" #: modules/devices/spd-decode.c:859 msgid "XMP Timings" msgstr "" #: modules/devices/spd-decode.c:900 msgid "XMP" msgstr "" #: modules/devices/spd-decode.c:1372 msgid "Serial Presence Detect (SPD)" msgstr "" #: modules/devices/spd-decode.c:1375 msgid "SPD Revision" msgstr "" #: modules/devices/spd-decode.c:1378 msgid "Module Vendor" msgstr "" #: modules/devices/spd-decode.c:1380 msgid "DRAM Vendor" msgstr "" #: modules/devices/spd-decode.c:1385 msgid "Manufacturing Date (Year / Week)" msgstr "" #: modules/devices/storage.c:46 modules/devices/storage.c:55 msgid "NVMe Controller" msgstr "" #: modules/devices/storage.c:138 msgid "Read Error Rate" msgstr "" #: modules/devices/storage.c:139 msgid "Throughput Performance" msgstr "" #: modules/devices/storage.c:140 msgid "Spin-Up Time" msgstr "" #: modules/devices/storage.c:141 msgid "Start/Stop Count" msgstr "" #: modules/devices/storage.c:142 msgid "Reallocated Sector Count" msgstr "" #: modules/devices/storage.c:143 msgid "Read Channel Margin" msgstr "" #: modules/devices/storage.c:144 msgid "Seek Error Rate" msgstr "" #: modules/devices/storage.c:145 msgid "Seek Timer Performance" msgstr "" #: modules/devices/storage.c:146 modules/devices/storage.c:185 msgid "Power-On Hours" msgstr "" #: modules/devices/storage.c:147 msgid "Spin Retry Count" msgstr "" #: modules/devices/storage.c:148 msgid "Calibration Retry Count" msgstr "" #: modules/devices/storage.c:149 msgid "Power Cycle Count" msgstr "" #: modules/devices/storage.c:150 modules/devices/storage.c:167 msgid "Soft Read Error Rate" msgstr "" #: modules/devices/storage.c:151 msgid "Runtime Bad Block" msgstr "" #: modules/devices/storage.c:152 msgid "End-to-End error" msgstr "" #: modules/devices/storage.c:153 msgid "Reported Uncorrectable Errors" msgstr "" #: modules/devices/storage.c:154 msgid "Command Timeout" msgstr "" #: modules/devices/storage.c:155 msgid "High Fly Writes" msgstr "" #: modules/devices/storage.c:156 msgid "Airflow Temperature" msgstr "" #: modules/devices/storage.c:157 msgid "G-sense Error Rate" msgstr "" #: modules/devices/storage.c:158 msgid "Power-off Retract Count" msgstr "" #: modules/devices/storage.c:159 msgid "Load Cycle Count" msgstr "" #: modules/devices/storage.c:160 modules/devices/storage.c:183 msgid "Temperature" msgstr "" #: modules/devices/storage.c:161 msgid "Hardware ECC Recovered" msgstr "" #: modules/devices/storage.c:162 msgid "Reallocation Event Count" msgstr "" #: modules/devices/storage.c:163 msgid "Current Pending Sector Count" msgstr "" #: modules/devices/storage.c:164 msgid "Uncorrectable Sector Count" msgstr "" #: modules/devices/storage.c:165 msgid "UltraDMA CRC Error Count" msgstr "" #: modules/devices/storage.c:166 msgid "Multi-Zone Error Rate" msgstr "" #: modules/devices/storage.c:168 msgid "Run Out Cancel" msgstr "" #: modules/devices/storage.c:169 msgid "Flying Height" msgstr "" #: modules/devices/storage.c:170 msgid "Spin High Current" msgstr "" #: modules/devices/storage.c:171 msgid "Spin Buzz" msgstr "" #: modules/devices/storage.c:172 msgid "Offline Seek Performance" msgstr "" #: modules/devices/storage.c:173 msgid "Disk Shift" msgstr "" #: modules/devices/storage.c:174 msgid "G-Sense Error Rate" msgstr "" #: modules/devices/storage.c:175 msgid "Loaded Hours" msgstr "" #: modules/devices/storage.c:176 msgid "Load/Unload Retry Count" msgstr "" #: modules/devices/storage.c:177 msgid "Load Friction" msgstr "" #: modules/devices/storage.c:178 msgid "Load/Unload Cycle Count" msgstr "" #: modules/devices/storage.c:179 msgid "Load-in time" msgstr "" #: modules/devices/storage.c:180 msgid "Torque Amplification Count" msgstr "" #: modules/devices/storage.c:181 msgid "Power-Off Retract Count" msgstr "" #: modules/devices/storage.c:182 msgid "GMR Head Amplitude" msgstr "" #: modules/devices/storage.c:184 msgid "Endurance Remaining" msgstr "" #: modules/devices/storage.c:186 msgid "Good Block Rate" msgstr "" #: modules/devices/storage.c:187 msgid "Head Flying Hours" msgstr "" #: modules/devices/storage.c:188 msgid "Read Error Retry Rate" msgstr "" #: modules/devices/storage.c:189 msgid "Total LBAs Written" msgstr "" #: modules/devices/storage.c:190 msgid "Total LBAs Read" msgstr "" #: modules/devices/storage.c:191 msgid "Wear leveling Count" msgstr "" #: modules/devices/storage.c:192 msgid "Total Used Reserved Block Count" msgstr "" #: modules/devices/storage.c:193 msgid "Total Program Fail Count" msgstr "" #: modules/devices/storage.c:194 msgid "Total Erase Fail Count" msgstr "" #: modules/devices/storage.c:195 msgid "Available Reserved Space" msgstr "" #: modules/devices/storage.c:196 msgid "Program Fail Count" msgstr "" #: modules/devices/storage.c:197 msgid "Erase Fail Count" msgstr "" #: modules/devices/storage.c:198 msgid "TA Counter Increased" msgstr "" #: modules/devices/storage.c:199 msgid "Total Unused Reserved Block Count" msgstr "" #: modules/devices/storage.c:204 msgid "" "\n" "[UDisks2]\n" msgstr "" #: modules/devices/storage.c:257 msgid "Removable" msgstr "" #: modules/devices/storage.c:257 msgid "Fixed" msgstr "" #: modules/devices/storage.c:260 msgid "Ejectable" msgstr "" #: modules/devices/storage.c:263 msgid "Self-monitoring (S.M.A.R.T.)" msgstr "" #: modules/devices/storage.c:266 modules/devices/x86/processor.c:664 msgid "Power Management" msgstr "" #: modules/devices/storage.c:269 msgid "Advanced Power Management" msgstr "" #: modules/devices/storage.c:272 msgid "Automatic Acoustic Management" msgstr "" #: modules/devices/storage.c:275 #, c-format msgid "" "[Drive Information]\n" "Model=%s\n" msgstr "" #: modules/devices/storage.c:285 #, c-format msgid "" "Revision=%s\n" "Block Device=%s\n" "Serial=%s\n" "Size=%s\n" "Features=%s\n" msgstr "" #: modules/devices/storage.c:300 #, c-format msgid "Rotation Rate=%d RPM\n" msgstr "" #: modules/devices/storage.c:303 #, c-format msgid "" "Media=%s\n" "Media compatibility=%s\n" msgstr "" #: modules/devices/storage.c:310 #, c-format msgid "Connection bus=%s\n" msgstr "" #: modules/devices/storage.c:322 msgid "WWN" msgstr "" #: modules/devices/storage.c:323 msgid "EUI " msgstr "" #: modules/devices/storage.c:328 msgid "WWN / EUI" msgstr "" #: modules/devices/storage.c:332 #, c-format msgid "$^$%s=[%s] %s\n" msgstr "" #: modules/devices/storage.c:334 msgid "IEEE OUI" msgstr "" #: modules/devices/storage.c:346 msgid "" "[Self-monitoring (S.M.A.R.T.)]\n" "Status=%s\n" "Bad Sectors=%" msgstr "" #: modules/devices/storage.c:352 msgid "Failing" msgstr "" #: modules/devices/storage.c:352 msgid "OK" msgstr "" #: modules/devices/storage.c:358 msgid "" "[S.M.A.R.T. Attributes]\n" "Attribute=Value / Normalized / Worst / Threshold\n" msgstr "" #: modules/devices/storage.c:381 msgid "%" msgid_plural "%" msgstr[0] "" msgstr[1] "" #: modules/devices/storage.c:419 #, c-format msgid "(%d) %s=%s\n" msgstr "" #: modules/devices/storage.c:428 #, c-format msgid "" "[Partition table]\n" "Type=%s\n" msgstr "" #: modules/devices/storage.c:447 #, c-format msgid "Partition %s=%s\n" msgstr "" #: modules/devices/storage.c:496 msgid "" "\n" "[SCSI Disks]\n" msgstr "" #: modules/devices/storage.c:567 modules/devices/storage.c:773 #, c-format msgid "" "[Device Information]\n" "Model=%s\n" msgstr "" #: modules/devices/storage.c:574 #, c-format msgid "" "Type=%s\n" "Revision=%s\n" "[SCSI Controller]\n" "Controller=scsi%d\n" "Channel=%d\n" "ID=%d\n" "LUN=%d\n" msgstr "" #: modules/devices/storage.c:621 msgid "" "\n" "[IDE Disks]\n" msgstr "" #: modules/devices/storage.c:707 #, c-format msgid "Driver=%s\n" msgstr "" #: modules/devices/storage.c:779 #, c-format msgid "" "Device Name=hd%c\n" "Media=%s\n" "Cache=%dkb\n" msgstr "" #: modules/devices/storage.c:789 #, c-format msgid "" "[Geometry]\n" "Physical=%s\n" "Logical=%s\n" msgstr "" #: modules/devices/storage.c:799 #, c-format msgid "" "[Capabilities]\n" "%s" msgstr "" #: modules/devices/storage.c:806 #, c-format msgid "" "[Speeds]\n" "%s" msgstr "" #: modules/devices/usb.c:137 modules/devices/usb.c:178 msgid "Sub-class" msgstr "" #: modules/devices/usb.c:138 modules/devices/usb.c:179 modules/network.c:348 msgid "Protocol" msgstr "" #: modules/devices/usb.c:146 modules/network/net.c:474 msgid "Mb/s" msgstr "" #: modules/devices/usb.c:174 msgid "Max Current" msgstr "" #: modules/devices/usb.c:174 msgid "mA" msgstr "" #: modules/devices/usb.c:175 msgid "USB Version" msgstr "" #: modules/devices/usb.c:180 msgid "Device Version" msgstr "" #: modules/devices/usb.c:222 msgid "No USB devices found." msgstr "" #: modules/devices/x86/processor.c:648 msgid "Model Name" msgstr "" #: modules/devices/x86/processor.c:649 msgid "Family, model, stepping" msgstr "" #: modules/devices/x86/processor.c:655 msgid "Microcode Version" msgstr "" #: modules/devices/x86/processor.c:656 msgid "Configuration" msgstr "" #: modules/devices/x86/processor.c:657 msgid "Cache Size" msgstr "" #: modules/devices/x86/processor.c:657 msgid "kb" msgstr "" #: modules/devices/x86/processor.c:665 msgid "Bug Workarounds" msgstr "" #: modules/devices/x86/processor.c:692 msgid "Socket Information" msgstr "" #: modules/devices/x86/processor.c:695 msgid "(Not available; Perhaps try running hardinfo2 as root.)" msgstr "" #: modules/devices/x86/processor.c:713 msgid "CPU Socket" msgstr "" #: modules/devices/x86/processor.c:717 msgid "External Clock" msgstr "" #: modules/devices/x86/processor.c:718 msgid "Max Frequency" msgstr "" #: modules/devices/x86/processor.c:749 msgid "Package Information" msgstr "" #. !/flag:fpu #: modules/devices/x86/x86_data.c:48 msgctxt "x86-flag" msgid "Onboard FPU (floating point support)" msgstr "" #. !/flag:vme #: modules/devices/x86/x86_data.c:49 msgctxt "x86-flag" msgid "Virtual 8086 mode enhancements" msgstr "" #. !/flag:de #: modules/devices/x86/x86_data.c:50 msgctxt "x86-flag" msgid "Debugging Extensions (CR4.DE)" msgstr "" #. !/flag:pse #: modules/devices/x86/x86_data.c:51 msgctxt "x86-flag" msgid "Page Size Extensions (4MB memory pages)" msgstr "" #. !/flag:tsc #: modules/devices/x86/x86_data.c:52 msgctxt "x86-flag" msgid "Time Stamp Counter (RDTSC)" msgstr "" #. !/flag:msr #: modules/devices/x86/x86_data.c:53 msgctxt "x86-flag" msgid "Model-Specific Registers (RDMSR, WRMSR)" msgstr "" #. !/flag:pae #: modules/devices/x86/x86_data.c:54 msgctxt "x86-flag" msgid "Physical Address Extensions (support for more than 4GB of RAM)" msgstr "" #. !/flag:mce #: modules/devices/x86/x86_data.c:55 msgctxt "x86-flag" msgid "Machine Check Exception" msgstr "" #. !/flag:cx8 #: modules/devices/x86/x86_data.c:56 msgctxt "x86-flag" msgid "CMPXCHG8 instruction (64-bit compare-and-swap)" msgstr "" #. !/flag:apic #: modules/devices/x86/x86_data.c:57 msgctxt "x86-flag" msgid "Onboard APIC" msgstr "" #. !/flag:sep #: modules/devices/x86/x86_data.c:58 msgctxt "x86-flag" msgid "SYSENTER/SYSEXIT" msgstr "" #. !/flag:mtrr #: modules/devices/x86/x86_data.c:59 msgctxt "x86-flag" msgid "Memory Type Range Registers" msgstr "" #. !/flag:pge #: modules/devices/x86/x86_data.c:60 msgctxt "x86-flag" msgid "Page Global Enable (global bit in PDEs and PTEs)" msgstr "" #. !/flag:mca #: modules/devices/x86/x86_data.c:61 msgctxt "x86-flag" msgid "Machine Check Architecture" msgstr "" #. !/flag:cmov #: modules/devices/x86/x86_data.c:62 msgctxt "x86-flag" msgid "CMOV instructions (conditional move) (also FCMOV)" msgstr "" #. !/flag:pat #: modules/devices/x86/x86_data.c:63 msgctxt "x86-flag" msgid "Page Attribute Table" msgstr "" #. !/flag:pse36 #: modules/devices/x86/x86_data.c:64 msgctxt "x86-flag" msgid "36-bit PSEs (huge pages)" msgstr "" #. !/flag:pn #: modules/devices/x86/x86_data.c:65 msgctxt "x86-flag" msgid "Processor serial number" msgstr "" #. !/flag:clflush #: modules/devices/x86/x86_data.c:66 msgctxt "x86-flag" msgid "Cache Line Flush instruction" msgstr "" #. !/flag:dts #: modules/devices/x86/x86_data.c:67 msgctxt "x86-flag" msgid "" "Debug Store (buffer for debugging and profiling instructions), or " "alternately: digital thermal sensor" msgstr "" #. !/flag:acpi #: modules/devices/x86/x86_data.c:68 msgctxt "x86-flag" msgid "ACPI via MSR (temperature monitoring and clock speed modulation)" msgstr "" #. !/flag:mmx #: modules/devices/x86/x86_data.c:69 msgctxt "x86-flag" msgid "Multimedia Extensions" msgstr "" #. !/flag:fxsr #: modules/devices/x86/x86_data.c:70 msgctxt "x86-flag" msgid "FXSAVE/FXRSTOR, CR4.OSFXSR" msgstr "" #. !/flag:sse #: modules/devices/x86/x86_data.c:71 msgctxt "x86-flag" msgid "Intel SSE vector instructions" msgstr "" #. !/flag:sse2 #: modules/devices/x86/x86_data.c:72 msgctxt "x86-flag" msgid "SSE2" msgstr "" #. !/flag:ss #: modules/devices/x86/x86_data.c:73 msgctxt "x86-flag" msgid "CPU self snoop" msgstr "" #. !/flag:ht #: modules/devices/x86/x86_data.c:74 msgctxt "x86-flag" msgid "Hyper-Threading" msgstr "" #. !/flag:tm #: modules/devices/x86/x86_data.c:75 msgctxt "x86-flag" msgid "Automatic clock control (Thermal Monitor)" msgstr "" #. !/flag:ia64 #: modules/devices/x86/x86_data.c:76 msgctxt "x86-flag" msgid "" "Intel Itanium Architecture 64-bit (not to be confused with Intel's 64-bit " "x86 architecture with flag x86-64 or \"AMD64\" bit indicated by flag lm)" msgstr "" #. !/flag:pbe #: modules/devices/x86/x86_data.c:77 msgctxt "x86-flag" msgid "Pending Break Enable (PBE# pin) wakeup support" msgstr "" #. !/flag:syscall #: modules/devices/x86/x86_data.c:80 msgctxt "x86-flag" msgid "SYSCALL (Fast System Call) and SYSRET (Return From Fast System Call)" msgstr "" #. !/flag:mp #: modules/devices/x86/x86_data.c:81 msgctxt "x86-flag" msgid "Multiprocessing Capable." msgstr "" #. !/flag:nx #: modules/devices/x86/x86_data.c:82 msgctxt "x86-flag" msgid "Execute Disable" msgstr "" #. !/flag:mmxext #: modules/devices/x86/x86_data.c:83 msgctxt "x86-flag" msgid "AMD MMX extensions" msgstr "" #. !/flag:fxsr_opt #: modules/devices/x86/x86_data.c:84 msgctxt "x86-flag" msgid "FXSAVE/FXRSTOR optimizations" msgstr "" #. !/flag:pdpe1gb #: modules/devices/x86/x86_data.c:85 msgctxt "x86-flag" msgid "One GB pages (allows hugepagesz=1G)" msgstr "" #. !/flag:rdtscp #: modules/devices/x86/x86_data.c:86 msgctxt "x86-flag" msgid "Read Time-Stamp Counter and Processor ID" msgstr "" #. !/flag:lm #: modules/devices/x86/x86_data.c:87 msgctxt "x86-flag" msgid "Long Mode (x86-64: amd64, also known as Intel 64, i.e. 64-bit capable)" msgstr "" #. !/flag:3dnow #: modules/devices/x86/x86_data.c:88 msgctxt "x86-flag" msgid "3DNow! (AMD vector instructions, competing with Intel's SSE1)" msgstr "" #. !/flag:3dnowext #: modules/devices/x86/x86_data.c:89 msgctxt "x86-flag" msgid "AMD 3DNow! extensions" msgstr "" #. !/flag:recovery #: modules/devices/x86/x86_data.c:91 msgctxt "x86-flag" msgid "CPU in recovery mode" msgstr "" #. !/flag:longrun #: modules/devices/x86/x86_data.c:92 msgctxt "x86-flag" msgid "Longrun power control" msgstr "" #. !/flag:lrti #: modules/devices/x86/x86_data.c:93 msgctxt "x86-flag" msgid "LongRun table interface" msgstr "" #. !/flag:cxmmx #: modules/devices/x86/x86_data.c:95 msgctxt "x86-flag" msgid "Cyrix MMX extensions" msgstr "" #. !/flag:k6_mtrr #: modules/devices/x86/x86_data.c:96 msgctxt "x86-flag" msgid "AMD K6 nonstandard MTRRs" msgstr "" #. !/flag:cyrix_arr #: modules/devices/x86/x86_data.c:97 msgctxt "x86-flag" msgid "Cyrix ARRs (= MTRRs)" msgstr "" #. !/flag:centaur_mcr #: modules/devices/x86/x86_data.c:98 msgctxt "x86-flag" msgid "Centaur MCRs (= MTRRs)" msgstr "" #. !/flag:constant_tsc #: modules/devices/x86/x86_data.c:99 msgctxt "x86-flag" msgid "TSC ticks at a constant rate" msgstr "" #. !/flag:up #: modules/devices/x86/x86_data.c:100 msgctxt "x86-flag" msgid "SMP kernel running on UP" msgstr "" #. !/flag:art #: modules/devices/x86/x86_data.c:101 msgctxt "x86-flag" msgid "Always-Running Timer" msgstr "" #. !/flag:arch_perfmon #: modules/devices/x86/x86_data.c:102 msgctxt "x86-flag" msgid "Intel Architectural PerfMon" msgstr "" #. !/flag:pebs #: modules/devices/x86/x86_data.c:103 msgctxt "x86-flag" msgid "Precise-Event Based Sampling" msgstr "" #. !/flag:bts #: modules/devices/x86/x86_data.c:104 msgctxt "x86-flag" msgid "Branch Trace Store" msgstr "" #. !/flag:rep_good #: modules/devices/x86/x86_data.c:105 msgctxt "x86-flag" msgid "rep microcode works well" msgstr "" #. !/flag:acc_power #: modules/devices/x86/x86_data.c:106 msgctxt "x86-flag" msgid "AMD accumulated power mechanism" msgstr "" #. !/flag:nopl #: modules/devices/x86/x86_data.c:107 msgctxt "x86-flag" msgid "The NOPL (0F 1F) instructions" msgstr "" #. !/flag:xtopology #: modules/devices/x86/x86_data.c:108 msgctxt "x86-flag" msgid "cpu topology enum extensions" msgstr "" #. !/flag:tsc_reliable #: modules/devices/x86/x86_data.c:109 msgctxt "x86-flag" msgid "TSC is known to be reliable" msgstr "" #. !/flag:nonstop_tsc #: modules/devices/x86/x86_data.c:110 msgctxt "x86-flag" msgid "TSC does not stop in C states" msgstr "" #. !/flag:extd_apicid #: modules/devices/x86/x86_data.c:111 msgctxt "x86-flag" msgid "has extended APICID (8 bits)" msgstr "" #. !/flag:amd_dcm #: modules/devices/x86/x86_data.c:112 msgctxt "x86-flag" msgid "multi-node processor" msgstr "" #. !/flag:aperfmperf #: modules/devices/x86/x86_data.c:113 msgctxt "x86-flag" msgid "APERFMPERF" msgstr "" #. !/flag:eagerfpu #: modules/devices/x86/x86_data.c:114 msgctxt "x86-flag" msgid "Non lazy FPU restore" msgstr "" #. !/flag:nonstop_tsc_s3 #: modules/devices/x86/x86_data.c:115 msgctxt "x86-flag" msgid "TSC doesn't stop in S3 state" msgstr "" #. !/flag:mce_recovery #: modules/devices/x86/x86_data.c:116 msgctxt "x86-flag" msgid "CPU has recoverable machine checks" msgstr "" #. !/flag:pni #: modules/devices/x86/x86_data.c:119 msgctxt "x86-flag" msgid "SSE-3 (\"Prescott New Instructions\")" msgstr "" #. !/flag:pclmulqdq #: modules/devices/x86/x86_data.c:120 msgctxt "x86-flag" msgid "" "Perform a Carry-Less Multiplication of Quadword instruction - accelerator " "for GCM)" msgstr "" #. !/flag:dtes64 #: modules/devices/x86/x86_data.c:121 msgctxt "x86-flag" msgid "64-bit Debug Store" msgstr "" #. !/flag:monitor #: modules/devices/x86/x86_data.c:122 msgctxt "x86-flag" msgid "Monitor/Mwait support (Intel SSE3 supplements)" msgstr "" #. !/flag:ds_cpl #: modules/devices/x86/x86_data.c:123 msgctxt "x86-flag" msgid "CPL Qual. Debug Store" msgstr "" #. !/flag:vmx #: modules/devices/x86/x86_data.c:124 msgctxt "x86-flag" msgid "Hardware virtualization, Intel VMX" msgstr "" #. !/flag:smx #: modules/devices/x86/x86_data.c:125 msgctxt "x86-flag" msgid "Safer mode TXT (TPM support)" msgstr "" #. !/flag:est #: modules/devices/x86/x86_data.c:126 msgctxt "x86-flag" msgid "Enhanced SpeedStep" msgstr "" #. !/flag:tm2 #: modules/devices/x86/x86_data.c:127 msgctxt "x86-flag" msgid "Thermal Monitor 2" msgstr "" #. !/flag:ssse3 #: modules/devices/x86/x86_data.c:128 msgctxt "x86-flag" msgid "Supplemental SSE-3" msgstr "" #. !/flag:cid #: modules/devices/x86/x86_data.c:129 msgctxt "x86-flag" msgid "Context ID" msgstr "" #. !/flag:sdbg #: modules/devices/x86/x86_data.c:130 msgctxt "x86-flag" msgid "silicon debug" msgstr "" #. !/flag:fma #: modules/devices/x86/x86_data.c:131 msgctxt "x86-flag" msgid "Fused multiply-add" msgstr "" #. !/flag:cx16 #: modules/devices/x86/x86_data.c:132 msgctxt "x86-flag" msgid "CMPXCHG16B" msgstr "" #. !/flag:xtpr #: modules/devices/x86/x86_data.c:133 msgctxt "x86-flag" msgid "Send Task Priority Messages" msgstr "" #. !/flag:pdcm #: modules/devices/x86/x86_data.c:134 msgctxt "x86-flag" msgid "Performance Capabilities" msgstr "" #. !/flag:pcid #: modules/devices/x86/x86_data.c:135 msgctxt "x86-flag" msgid "Process Context Identifiers" msgstr "" #. !/flag:dca #: modules/devices/x86/x86_data.c:136 msgctxt "x86-flag" msgid "Direct Cache Access" msgstr "" #. !/flag:sse4_1 #: modules/devices/x86/x86_data.c:137 msgctxt "x86-flag" msgid "SSE-4.1" msgstr "" #. !/flag:sse4_2 #: modules/devices/x86/x86_data.c:138 msgctxt "x86-flag" msgid "SSE-4.2" msgstr "" #. !/flag:x2apic #: modules/devices/x86/x86_data.c:139 msgctxt "x86-flag" msgid "x2APIC" msgstr "" #. !/flag:movbe #: modules/devices/x86/x86_data.c:140 msgctxt "x86-flag" msgid "Move Data After Swapping Bytes instruction" msgstr "" #. !/flag:popcnt #: modules/devices/x86/x86_data.c:141 msgctxt "x86-flag" msgid "" "Return the Count of Number of Bits Set to 1 instruction (Hamming weight, i." "e. bit count)" msgstr "" #: modules/devices/x86/x86_data.c:142 msgctxt "x86-flag" msgid "Tsc deadline timer" msgstr "" #. !/flag:aes/aes-ni #: modules/devices/x86/x86_data.c:143 msgctxt "x86-flag" msgid "Advanced Encryption Standard (New Instructions)" msgstr "" #. !/flag:xsave #: modules/devices/x86/x86_data.c:144 msgctxt "x86-flag" msgid "Save Processor Extended States: also provides XGETBY,XRSTOR,XSETBY" msgstr "" #. !/flag:avx #: modules/devices/x86/x86_data.c:145 msgctxt "x86-flag" msgid "Advanced Vector Extensions" msgstr "" #. !/flag:f16c #: modules/devices/x86/x86_data.c:146 msgctxt "x86-flag" msgid "16-bit fp conversions (CVT16)" msgstr "" #. !/flag:rdrand #: modules/devices/x86/x86_data.c:147 msgctxt "x86-flag" msgid "Read Random Number from hardware random number generator instruction" msgstr "" #. !/flag:hypervisor #: modules/devices/x86/x86_data.c:148 msgctxt "x86-flag" msgid "Running on a hypervisor" msgstr "" #. !/flag:rng #: modules/devices/x86/x86_data.c:150 msgctxt "x86-flag" msgid "Random Number Generator present (xstore)" msgstr "" #. !/flag:rng_en #: modules/devices/x86/x86_data.c:151 msgctxt "x86-flag" msgid "Random Number Generator enabled" msgstr "" #. !/flag:ace #: modules/devices/x86/x86_data.c:152 msgctxt "x86-flag" msgid "on-CPU crypto (xcrypt)" msgstr "" #. !/flag:ace_en #: modules/devices/x86/x86_data.c:153 msgctxt "x86-flag" msgid "on-CPU crypto enabled" msgstr "" #. !/flag:ace2 #: modules/devices/x86/x86_data.c:154 msgctxt "x86-flag" msgid "Advanced Cryptography Engine v2" msgstr "" #. !/flag:ace2_en #: modules/devices/x86/x86_data.c:155 msgctxt "x86-flag" msgid "ACE v2 enabled" msgstr "" #. !/flag:phe #: modules/devices/x86/x86_data.c:156 msgctxt "x86-flag" msgid "PadLock Hash Engine" msgstr "" #. !/flag:phe_en #: modules/devices/x86/x86_data.c:157 msgctxt "x86-flag" msgid "PHE enabled" msgstr "" #. !/flag:pmm #: modules/devices/x86/x86_data.c:158 msgctxt "x86-flag" msgid "PadLock Montgomery Multiplier" msgstr "" #. !/flag:pmm_en #: modules/devices/x86/x86_data.c:159 msgctxt "x86-flag" msgid "PMM enabled" msgstr "" #. !/flag:lahf_lm #: modules/devices/x86/x86_data.c:161 msgctxt "x86-flag" msgid "Load AH from Flags (LAHF) and Store AH into Flags (SAHF) in long mode" msgstr "" #. !/flag:cmp_legacy #: modules/devices/x86/x86_data.c:162 msgctxt "x86-flag" msgid "If yes HyperThreading not valid" msgstr "" #. !/flag:svm #: modules/devices/x86/x86_data.c:163 msgctxt "x86-flag" msgid "\"Secure virtual machine\": AMD-V" msgstr "" #. !/flag:extapic #: modules/devices/x86/x86_data.c:164 msgctxt "x86-flag" msgid "Extended APIC space" msgstr "" #. !/flag:cr8_legacy #: modules/devices/x86/x86_data.c:165 msgctxt "x86-flag" msgid "CR8 in 32-bit mode" msgstr "" #. !/flag:abm #: modules/devices/x86/x86_data.c:166 msgctxt "x86-flag" msgid "Advanced Bit Manipulation" msgstr "" #. !/flag:sse4a #: modules/devices/x86/x86_data.c:167 msgctxt "x86-flag" msgid "SSE-4A" msgstr "" #. !/flag:misalignsse #: modules/devices/x86/x86_data.c:168 msgctxt "x86-flag" msgid "" "indicates if a general-protection exception (#GP) is generated when some " "legacy SSE instructions operate on unaligned data. Also depends on CR0 and " "Alignment Checking bit" msgstr "" #. !/flag:3dnowprefetch #: modules/devices/x86/x86_data.c:169 msgctxt "x86-flag" msgid "3DNow prefetch instructions" msgstr "" #. !/flag:osvw #: modules/devices/x86/x86_data.c:170 msgctxt "x86-flag" msgid "" "indicates OS Visible Workaround, which allows the OS to work around " "processor errata." msgstr "" #. !/flag:ibs #: modules/devices/x86/x86_data.c:171 msgctxt "x86-flag" msgid "Instruction Based Sampling" msgstr "" #. !/flag:xop #: modules/devices/x86/x86_data.c:172 msgctxt "x86-flag" msgid "extended AVX instructions" msgstr "" #. !/flag:skinit #: modules/devices/x86/x86_data.c:173 msgctxt "x86-flag" msgid "SKINIT/STGI instructions" msgstr "" #. !/flag:wdt #: modules/devices/x86/x86_data.c:174 msgctxt "x86-flag" msgid "Watchdog timer" msgstr "" #. !/flag:lwp #: modules/devices/x86/x86_data.c:175 msgctxt "x86-flag" msgid "Light Weight Profiling" msgstr "" #. !/flag:fma4 #: modules/devices/x86/x86_data.c:176 msgctxt "x86-flag" msgid "4 operands MAC instructions" msgstr "" #. !/flag:tce #: modules/devices/x86/x86_data.c:177 msgctxt "x86-flag" msgid "translation cache extension" msgstr "" #. !/flag:nodeid_msr #: modules/devices/x86/x86_data.c:178 msgctxt "x86-flag" msgid "NodeId MSR" msgstr "" #. !/flag:tbm #: modules/devices/x86/x86_data.c:179 msgctxt "x86-flag" msgid "Trailing Bit Manipulation" msgstr "" #. !/flag:topoext #: modules/devices/x86/x86_data.c:180 msgctxt "x86-flag" msgid "Topology Extensions CPUID leafs" msgstr "" #. !/flag:perfctr_core #: modules/devices/x86/x86_data.c:181 msgctxt "x86-flag" msgid "Core Performance Counter Extensions" msgstr "" #. !/flag:perfctr_nb #: modules/devices/x86/x86_data.c:182 msgctxt "x86-flag" msgid "NB Performance Counter Extensions" msgstr "" #. !/flag:bpext #: modules/devices/x86/x86_data.c:183 msgctxt "x86-flag" msgid "data breakpoint extension" msgstr "" #. !/flag:ptsc #: modules/devices/x86/x86_data.c:184 msgctxt "x86-flag" msgid "performance time-stamp counter" msgstr "" #. !/flag:perfctr_l2 #: modules/devices/x86/x86_data.c:185 msgctxt "x86-flag" msgid "L2 Performance Counter Extensions" msgstr "" #. !/flag:mwaitx #: modules/devices/x86/x86_data.c:186 msgctxt "x86-flag" msgid "MWAIT extension (MONITORX/MWAITX)" msgstr "" #. !/flag:cpb #: modules/devices/x86/x86_data.c:188 msgctxt "x86-flag" msgid "AMD Core Performance Boost" msgstr "" #. !/flag:epb #: modules/devices/x86/x86_data.c:189 msgctxt "x86-flag" msgid "IA32_ENERGY_PERF_BIAS support" msgstr "" #. !/flag:hw_pstate #: modules/devices/x86/x86_data.c:190 msgctxt "x86-flag" msgid "AMD HW-PState" msgstr "" #. !/flag:proc_feedback #: modules/devices/x86/x86_data.c:191 msgctxt "x86-flag" msgid "AMD ProcFeedbackInterface" msgstr "" #. !/flag:intel_pt #: modules/devices/x86/x86_data.c:192 msgctxt "x86-flag" msgid "Intel Processor Tracing" msgstr "" #. !/flag:tpr_shadow #: modules/devices/x86/x86_data.c:194 msgctxt "x86-flag" msgid "Intel TPR Shadow" msgstr "" #. !/flag:vnmi #: modules/devices/x86/x86_data.c:195 msgctxt "x86-flag" msgid "Intel Virtual NMI" msgstr "" #. !/flag:flexpriority #: modules/devices/x86/x86_data.c:196 msgctxt "x86-flag" msgid "Intel FlexPriority" msgstr "" #. !/flag:ept #: modules/devices/x86/x86_data.c:197 msgctxt "x86-flag" msgid "Intel Extended Page Table" msgstr "" #. !/flag:vpid #: modules/devices/x86/x86_data.c:198 msgctxt "x86-flag" msgid "Intel Virtual Processor ID" msgstr "" #. !/flag:vmmcall #: modules/devices/x86/x86_data.c:199 msgctxt "x86-flag" msgid "prefer VMMCALL to VMCALL" msgstr "" #. !/flag:fsgsbase #: modules/devices/x86/x86_data.c:201 msgctxt "x86-flag" msgid "{RD/WR}{FS/GS}BASE instructions" msgstr "" #. !/flag:tsc_adjust #: modules/devices/x86/x86_data.c:202 msgctxt "x86-flag" msgid "TSC adjustment MSR" msgstr "" #. !/flag:bmi1 #: modules/devices/x86/x86_data.c:203 msgctxt "x86-flag" msgid "1st group bit manipulation extensions" msgstr "" #. !/flag:hle #: modules/devices/x86/x86_data.c:204 msgctxt "x86-flag" msgid "Hardware Lock Elision" msgstr "" #. !/flag:avx2 #: modules/devices/x86/x86_data.c:205 msgctxt "x86-flag" msgid "AVX2 instructions" msgstr "" #. !/flag:smep #: modules/devices/x86/x86_data.c:206 msgctxt "x86-flag" msgid "Supervisor Mode Execution Protection" msgstr "" #. !/flag:bmi2 #: modules/devices/x86/x86_data.c:207 msgctxt "x86-flag" msgid "2nd group bit manipulation extensions" msgstr "" #. !/flag:erms #: modules/devices/x86/x86_data.c:208 msgctxt "x86-flag" msgid "Enhanced REP MOVSB/STOSB" msgstr "" #. !/flag:invpcid #: modules/devices/x86/x86_data.c:209 msgctxt "x86-flag" msgid "Invalidate Processor Context ID" msgstr "" #. !/flag:rtm #: modules/devices/x86/x86_data.c:210 msgctxt "x86-flag" msgid "Restricted Transactional Memory" msgstr "" #. !/flag:cqm #: modules/devices/x86/x86_data.c:211 msgctxt "x86-flag" msgid "Cache QoS Monitoring" msgstr "" #. !/flag:mpx #: modules/devices/x86/x86_data.c:212 msgctxt "x86-flag" msgid "Memory Protection Extension" msgstr "" #. !/flag:avx512f #: modules/devices/x86/x86_data.c:213 msgctxt "x86-flag" msgid "AVX-512 foundation" msgstr "" #. !/flag:avx512dq #: modules/devices/x86/x86_data.c:214 msgctxt "x86-flag" msgid "AVX-512 Double/Quad instructions" msgstr "" #. !/flag:rdseed #: modules/devices/x86/x86_data.c:215 msgctxt "x86-flag" msgid "The RDSEED instruction" msgstr "" #. !/flag:adx #: modules/devices/x86/x86_data.c:216 msgctxt "x86-flag" msgid "The ADCX and ADOX instructions" msgstr "" #. !/flag:smap #: modules/devices/x86/x86_data.c:217 msgctxt "x86-flag" msgid "Supervisor Mode Access Prevention" msgstr "" #. !/flag:clflushopt #: modules/devices/x86/x86_data.c:218 msgctxt "x86-flag" msgid "CLFLUSHOPT instruction" msgstr "" #. !/flag:clwb #: modules/devices/x86/x86_data.c:219 msgctxt "x86-flag" msgid "CLWB instruction" msgstr "" #. !/flag:avx512pf #: modules/devices/x86/x86_data.c:220 msgctxt "x86-flag" msgid "AVX-512 Prefetch" msgstr "" #. !/flag:avx512er #: modules/devices/x86/x86_data.c:221 msgctxt "x86-flag" msgid "AVX-512 Exponential and Reciprocal" msgstr "" #. !/flag:avx512cd #: modules/devices/x86/x86_data.c:222 msgctxt "x86-flag" msgid "AVX-512 Conflict Detection" msgstr "" #. !/flag:sha_ni #: modules/devices/x86/x86_data.c:223 msgctxt "x86-flag" msgid "SHA1/SHA256 Instruction Extensions" msgstr "" #. !/flag:avx512bw #: modules/devices/x86/x86_data.c:224 msgctxt "x86-flag" msgid "AVX-512 Byte/Word instructions" msgstr "" #. !/flag:avx512vl #: modules/devices/x86/x86_data.c:225 msgctxt "x86-flag" msgid "AVX-512 128/256 Vector Length extensions" msgstr "" #. !/flag:xsaveopt #: modules/devices/x86/x86_data.c:227 msgctxt "x86-flag" msgid "Optimized XSAVE" msgstr "" #. !/flag:xsavec #: modules/devices/x86/x86_data.c:228 msgctxt "x86-flag" msgid "XSAVEC" msgstr "" #. !/flag:xgetbv1 #: modules/devices/x86/x86_data.c:229 msgctxt "x86-flag" msgid "XGETBV with ECX = 1" msgstr "" #. !/flag:xsaves #: modules/devices/x86/x86_data.c:230 msgctxt "x86-flag" msgid "XSAVES/XRSTORS" msgstr "" #. !/flag:cqm_llc #: modules/devices/x86/x86_data.c:232 msgctxt "x86-flag" msgid "LLC QoS" msgstr "" #. !/flag:cqm_occup_llc #: modules/devices/x86/x86_data.c:234 msgctxt "x86-flag" msgid "LLC occupancy monitoring" msgstr "" #. !/flag:cqm_mbm_total #: modules/devices/x86/x86_data.c:235 msgctxt "x86-flag" msgid "LLC total MBM monitoring" msgstr "" #. !/flag:cqm_mbm_local #: modules/devices/x86/x86_data.c:236 msgctxt "x86-flag" msgid "LLC local MBM monitoring" msgstr "" #. !/flag:clzero #: modules/devices/x86/x86_data.c:238 msgctxt "x86-flag" msgid "CLZERO instruction" msgstr "" #. !/flag:irperf #: modules/devices/x86/x86_data.c:239 msgctxt "x86-flag" msgid "instructions retired performance counter" msgstr "" #. !/flag:dtherm #: modules/devices/x86/x86_data.c:241 msgctxt "x86-flag" msgid "digital thermal sensor" msgstr "" #. !/flag:ida #: modules/devices/x86/x86_data.c:242 msgctxt "x86-flag" msgid "Intel Dynamic Acceleration" msgstr "" #. !/flag:arat #: modules/devices/x86/x86_data.c:243 msgctxt "x86-flag" msgid "Always Running APIC Timer" msgstr "" #. !/flag:pln #: modules/devices/x86/x86_data.c:244 msgctxt "x86-flag" msgid "Intel Power Limit Notification" msgstr "" #. !/flag:pts #: modules/devices/x86/x86_data.c:245 msgctxt "x86-flag" msgid "Intel Package Thermal Status" msgstr "" #. !/flag:hwp #: modules/devices/x86/x86_data.c:246 msgctxt "x86-flag" msgid "Intel Hardware P-states" msgstr "" #. !/flag:hwp_notify #: modules/devices/x86/x86_data.c:247 msgctxt "x86-flag" msgid "HWP notification" msgstr "" #. !/flag:hwp_act_window #: modules/devices/x86/x86_data.c:248 msgctxt "x86-flag" msgid "HWP Activity Window" msgstr "" #. !/flag:hwp_epp #: modules/devices/x86/x86_data.c:249 msgctxt "x86-flag" msgid "HWP Energy Performance Preference" msgstr "" #. !/flag:hwp_pkg_req #: modules/devices/x86/x86_data.c:250 msgctxt "x86-flag" msgid "HWP package-level request" msgstr "" #. !/flag:npt #: modules/devices/x86/x86_data.c:252 msgctxt "x86-flag" msgid "AMD Nested Page Table support" msgstr "" #. !/flag:lbrv #: modules/devices/x86/x86_data.c:253 msgctxt "x86-flag" msgid "AMD LBR Virtualization support" msgstr "" #. !/flag:svm_lock #: modules/devices/x86/x86_data.c:254 msgctxt "x86-flag" msgid "AMD SVM locking MSR" msgstr "" #. !/flag:nrip_save #: modules/devices/x86/x86_data.c:255 msgctxt "x86-flag" msgid "AMD SVM next_rip save" msgstr "" #. !/flag:tsc_scale #: modules/devices/x86/x86_data.c:256 msgctxt "x86-flag" msgid "AMD TSC scaling support" msgstr "" #. !/flag:vmcb_clean #: modules/devices/x86/x86_data.c:257 msgctxt "x86-flag" msgid "AMD VMCB clean bits support" msgstr "" #. !/flag:flushbyasid #: modules/devices/x86/x86_data.c:258 msgctxt "x86-flag" msgid "AMD flush-by-ASID support" msgstr "" #. !/flag:decodeassists #: modules/devices/x86/x86_data.c:259 msgctxt "x86-flag" msgid "AMD Decode Assists support" msgstr "" #. !/flag:pausefilter #: modules/devices/x86/x86_data.c:260 msgctxt "x86-flag" msgid "AMD filtered pause intercept" msgstr "" #. !/flag:pfthreshold #: modules/devices/x86/x86_data.c:261 msgctxt "x86-flag" msgid "AMD pause filter threshold" msgstr "" #. !/flag:avic #: modules/devices/x86/x86_data.c:262 msgctxt "x86-flag" msgid "Virtual Interrupt Controller" msgstr "" #. !/flag:pku #: modules/devices/x86/x86_data.c:264 msgctxt "x86-flag" msgid "Protection Keys for Userspace" msgstr "" #. !/flag:ospke #: modules/devices/x86/x86_data.c:265 msgctxt "x86-flag" msgid "OS Protection Keys Enable" msgstr "" #. !/flag:overflow_recov #: modules/devices/x86/x86_data.c:267 msgctxt "x86-flag" msgid "MCA overflow recovery support" msgstr "" #. !/flag:succor #: modules/devices/x86/x86_data.c:268 msgctxt "x86-flag" msgid "uncorrectable error containment and recovery" msgstr "" #. !/flag:smca #: modules/devices/x86/x86_data.c:269 msgctxt "x86-flag" msgid "Scalable MCA" msgstr "" #. !/bug:f00f #: modules/devices/x86/x86_data.c:272 msgctxt "x86-flag" msgid "Intel F00F bug" msgstr "" #. !/bug:fdiv #: modules/devices/x86/x86_data.c:273 msgctxt "x86-flag" msgid "FPU FDIV" msgstr "" #. !/bug:coma #: modules/devices/x86/x86_data.c:274 msgctxt "x86-flag" msgid "Cyrix 6x86 coma" msgstr "" #. !/bug:tlb_mmatch #: modules/devices/x86/x86_data.c:275 msgctxt "x86-flag" msgid "AMD Erratum 383" msgstr "" #. !/bug:apic_c1e #. !/bug:amd_e400 #: modules/devices/x86/x86_data.c:276 modules/devices/x86/x86_data.c:285 msgctxt "x86-flag" msgid "AMD Erratum 400" msgstr "" #. !/bug:11ap #: modules/devices/x86/x86_data.c:277 msgctxt "x86-flag" msgid "Bad local APIC aka 11AP" msgstr "" #. !/bug:fxsave_leak #: modules/devices/x86/x86_data.c:278 msgctxt "x86-flag" msgid "FXSAVE leaks FOP/FIP/FOP" msgstr "" #. !/bug:clflush_monitor #: modules/devices/x86/x86_data.c:279 msgctxt "x86-flag" msgid "AAI65, CLFLUSH required before MONITOR" msgstr "" #. !/bug:sysret_ss_attrs #: modules/devices/x86/x86_data.c:280 msgctxt "x86-flag" msgid "SYSRET doesn't fix up SS attrs" msgstr "" #. !/bug:espfix #: modules/devices/x86/x86_data.c:281 msgctxt "x86-flag" msgid "IRET to 16-bit SS corrupts ESP/RSP high bits" msgstr "" #. !/bug:null_seg #: modules/devices/x86/x86_data.c:282 msgctxt "x86-flag" msgid "Nulling a selector preserves the base" msgstr "" #. !/bug:swapgs_fence #: modules/devices/x86/x86_data.c:283 msgctxt "x86-flag" msgid "SWAPGS without input dep on GS" msgstr "" #. !/bug:monitor #: modules/devices/x86/x86_data.c:284 msgctxt "x86-flag" msgid "IPI required to wake up remote CPU" msgstr "" #. !/bug:cpu_insecure & bug:cpu_meltdown #: modules/devices/x86/x86_data.c:286 modules/devices/x86/x86_data.c:287 msgctxt "x86-flag" msgid "" "CPU is affected by meltdown attack and needs kernel page table isolation" msgstr "" #. !/bug:spectre_v1 #: modules/devices/x86/x86_data.c:288 msgctxt "x86-flag" msgid "CPU is affected by Spectre variant 1 attack with conditional branches" msgstr "" #. !/bug:spectre_v2 #: modules/devices/x86/x86_data.c:289 msgctxt "x86-flag" msgid "CPU is affected by Spectre variant 2 attack with indirect branches" msgstr "" #. !/bug:spec_store_bypass #: modules/devices/x86/x86_data.c:290 msgctxt "x86-flag" msgid "CPU is affected by speculative store bypass attack" msgstr "" #. !/bug:l1tf #: modules/devices/x86/x86_data.c:291 msgctxt "x86-flag" msgid "CPU is affected by L1 Terminal Fault" msgstr "" #. !/flag:pm:ts #: modules/devices/x86/x86_data.c:294 msgctxt "x86-flag" msgid "temperature sensor" msgstr "" #. !/flag:pm:fid #: modules/devices/x86/x86_data.c:295 msgctxt "x86-flag" msgid "frequency id control" msgstr "" #. !/flag:pm:vid #: modules/devices/x86/x86_data.c:296 msgctxt "x86-flag" msgid "voltage id control" msgstr "" #. !/flag:pm:ttp #: modules/devices/x86/x86_data.c:297 msgctxt "x86-flag" msgid "thermal trip" msgstr "" #. !/flag:pm:tm #: modules/devices/x86/x86_data.c:298 msgctxt "x86-flag" msgid "hardware thermal control" msgstr "" #. !/flag:pm:stc #: modules/devices/x86/x86_data.c:299 msgctxt "x86-flag" msgid "software thermal control" msgstr "" #. !/flag:pm:100mhzsteps #: modules/devices/x86/x86_data.c:300 msgctxt "x86-flag" msgid "100 MHz multiplier control" msgstr "" #. !/flag:pm:hwpstate #: modules/devices/x86/x86_data.c:301 msgctxt "x86-flag" msgid "hardware P-state control" msgstr "" #. !/flag:pm:cpb #: modules/devices/x86/x86_data.c:302 msgctxt "x86-flag" msgid "core performance boost" msgstr "" #. !/flag:pm:eff_freq_ro #: modules/devices/x86/x86_data.c:303 msgctxt "x86-flag" msgid "Readonly aperf/mperf" msgstr "" #. !/flag:pm:proc_feedback #: modules/devices/x86/x86_data.c:304 msgctxt "x86-flag" msgid "processor feedback interface" msgstr "" #. !/flag:pm:acc_power #: modules/devices/x86/x86_data.c:305 msgctxt "x86-flag" msgid "accumulated power mechanism" msgstr "" #: modules/network.c:61 msgid "Interfaces" msgstr "" #: modules/network.c:62 msgid "IP Connections" msgstr "" #: modules/network.c:63 msgid "Routing Table" msgstr "" #: modules/network.c:64 modules/network.c:310 msgid "ARP Table" msgstr "" #: modules/network.c:65 msgid "DNS Servers" msgstr "" #: modules/network.c:66 msgid "Statistics" msgstr "" #: modules/network.c:67 msgid "Shared Directories" msgstr "" #: modules/network.c:311 modules/network.c:333 modules/network.c:364 #: modules/network/net.c:495 msgid "IP Address" msgstr "" #: modules/network.c:311 msgid "MAC Address" msgstr "" #: modules/network.c:320 msgid "SAMBA" msgstr "" #: modules/network.c:321 msgid "NFS" msgstr "" #: modules/network.c:332 msgid "Name Servers" msgstr "" #: modules/network.c:347 msgid "Connections" msgstr "" #: modules/network.c:348 msgid "Local Address" msgstr "" #: modules/network.c:348 msgid "Foreign Address" msgstr "" #: modules/network.c:348 msgid "State" msgstr "" #: modules/network.c:364 msgid "Sent" msgstr "" #: modules/network.c:364 msgid "Received" msgstr "" #: modules/network.c:380 msgid "IP routing table" msgstr "" #: modules/network.c:381 msgid "Destination/Gateway" msgstr "" #: modules/network.c:381 modules/network/net.c:496 msgid "Mask" msgstr "" #: modules/network.c:409 msgid "Network" msgstr "" #: modules/network.c:442 msgid "Gathers information about this computer's network connection" msgstr "" #: modules/network/net.c:74 msgctxt "wi-op-mode" msgid "Auto" msgstr "" #: modules/network/net.c:75 msgctxt "wi-op-mode" msgid "Ad-Hoc" msgstr "" #: modules/network/net.c:76 msgctxt "wi-op-mode" msgid "Managed" msgstr "" #: modules/network/net.c:77 msgctxt "wi-op-mode" msgid "Master" msgstr "" #: modules/network/net.c:78 msgctxt "wi-op-mode" msgid "Repeater" msgstr "" #: modules/network/net.c:79 msgctxt "wi-op-mode" msgid "Secondary" msgstr "" #: modules/network/net.c:80 msgctxt "wi-op-mode" msgid "(Unknown)" msgstr "" #: modules/network/net.c:268 modules/network/net.c:288 #: modules/network/net.c:296 msgctxt "net-if-type" msgid "Ethernet" msgstr "" #: modules/network/net.c:269 msgctxt "net-if-type" msgid "Loopback" msgstr "" #: modules/network/net.c:270 msgctxt "net-if-type" msgid "Point-to-Point" msgstr "" #: modules/network/net.c:271 modules/network/net.c:272 #: modules/network/net.c:273 modules/network/net.c:274 #: modules/network/net.c:298 msgctxt "net-if-type" msgid "Wireless" msgstr "" #: modules/network/net.c:275 msgctxt "net-if-type" msgid "Virtual Point-to-Point (TUN)" msgstr "" #: modules/network/net.c:276 msgctxt "net-if-type" msgid "Ethernet (TAP)" msgstr "" #: modules/network/net.c:277 msgctxt "net-if-type" msgid "Parallel Line Internet Protocol" msgstr "" #: modules/network/net.c:278 msgctxt "net-if-type" msgid "Infrared" msgstr "" #: modules/network/net.c:279 modules/network/net.c:297 msgctxt "net-if-type" msgid "Serial Line Internet Protocol" msgstr "" #: modules/network/net.c:280 msgctxt "net-if-type" msgid "Integrated Services Digital Network" msgstr "" #: modules/network/net.c:281 msgctxt "net-if-type" msgid "IPv6-over-IPv4 Tunnel" msgstr "" #: modules/network/net.c:282 msgctxt "net-if-type" msgid "VMWare Virtual Network Interface (NAT)" msgstr "" #: modules/network/net.c:283 msgctxt "net-if-type" msgid "VMWare Virtual Network Interface" msgstr "" #: modules/network/net.c:284 msgctxt "net-if-type" msgid "Personal Area Network (PAN)" msgstr "" #: modules/network/net.c:285 msgctxt "net-if-type" msgid "Bluetooth" msgstr "" #: modules/network/net.c:286 msgctxt "net-if-type" msgid "Bridge Interface" msgstr "" #: modules/network/net.c:287 msgctxt "net-if-type" msgid "Hamachi Virtual Personal Network" msgstr "" #: modules/network/net.c:289 msgctxt "net-if-type" msgid "Intermediate Functional Block" msgstr "" #: modules/network/net.c:290 msgctxt "net-if-type" msgid "GRE Network Tunnel" msgstr "" #: modules/network/net.c:291 msgctxt "net-if-type" msgid "Mesh Network" msgstr "" #: modules/network/net.c:292 msgctxt "net-if-type" msgid "Wireless Master Interface" msgstr "" #: modules/network/net.c:293 msgctxt "net-if-type" msgid "VirtualBox Virtual Network Interface" msgstr "" #: modules/network/net.c:299 msgctxt "net-if-type" msgid "Wireless (WAN)" msgstr "" #: modules/network/net.c:301 msgctxt "net-if-type" msgid "(Unknown)" msgstr "" #: modules/network/net.c:364 modules/network/net.c:374 msgid "Network Interfaces" msgstr "" #: modules/network/net.c:364 msgid "None Found" msgstr "" #: modules/network/net.c:431 msgid "Network Adapter Properties" msgstr "" #: modules/network/net.c:432 msgid "Interface Type" msgstr "" #: modules/network/net.c:433 msgid "Hardware Address (MAC)" msgstr "" #: modules/network/net.c:437 msgid "MTU" msgstr "" #: modules/network/net.c:439 msgid "Transfer Details" msgstr "" #: modules/network/net.c:440 msgid "Bytes Received" msgstr "" #: modules/network/net.c:441 msgid "Bytes Sent" msgstr "" #: modules/network/net.c:458 modules/network/net.c:480 #: modules/network/net.c:481 msgid "dBm" msgstr "" #: modules/network/net.c:458 msgid "mW" msgstr "" #: modules/network/net.c:472 msgid "Wireless Properties" msgstr "" #: modules/network/net.c:473 msgid "Network Name (SSID)" msgstr "" #: modules/network/net.c:474 msgid "Bit Rate" msgstr "" #: modules/network/net.c:475 msgid "Transmission Power" msgstr "" #: modules/network/net.c:478 msgid "Link Quality" msgstr "" #: modules/network/net.c:479 msgid "Signal / Noise" msgstr "" #: modules/network/net.c:494 msgid "Internet Protocol (IPv4)" msgstr "" #: modules/network/net.c:495 modules/network/net.c:496 #: modules/network/net.c:498 msgid "(Not set)" msgstr "" #: modules/network/net.c:497 msgid "Broadcast Address" msgstr "" #: includes/spd-decode.h:28 msgid "RAM" msgstr "" hardinfo2-hardinfo2-1331e88/po/hu.po000066400000000000000000004114301474767047500171400ustar00rootroot00000000000000# Hungarian translation for hardinfo2 package. # Copyright (C) HardInfo2 Project # This file is distributed under the same license as the hardinfo2 package. # ViBE , 2024. # msgid "" msgstr "" "Project-Id-Version: hardinfo2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-10-06 01:42+0200\n" "PO-Revision-Date: 2024-05-20 13:19+0200\n" "Last-Translator: ViBE \n" "Language-Team: Hungarian \n" "Language: hu\n" "X-Poedit-Basepath: ../\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #: hardinfo2/cpu_util.c:29 msgid "Little Endian" msgstr "" #: hardinfo2/cpu_util.c:31 msgid "Big Endian" msgstr "" #: hardinfo2/cpu_util.c:205 hardinfo2/cpu_util.c:216 modules/devices/gpu.c:262 msgid "Frequency Scaling" msgstr "" #: hardinfo2/cpu_util.c:206 modules/devices/gpu.c:263 msgid "Minimum" msgstr "" #: hardinfo2/cpu_util.c:206 hardinfo2/cpu_util.c:207 hardinfo2/cpu_util.c:208 #: hardinfo2/dt_util.c:590 modules/devices/gpu.c:263 modules/devices/gpu.c:264 msgid "kHz" msgstr "kHz" #: hardinfo2/cpu_util.c:207 modules/devices/gpu.c:264 msgid "Maximum" msgstr "" #: hardinfo2/cpu_util.c:208 msgid "Current" msgstr "" #: hardinfo2/cpu_util.c:209 modules/devices/gpu.c:265 msgid "Transition Latency" msgstr "" #: hardinfo2/cpu_util.c:209 modules/devices/gpu.c:265 msgid "ns" msgstr "" #: hardinfo2/cpu_util.c:210 msgid "Governor" msgstr "" #: hardinfo2/cpu_util.c:211 hardinfo2/cpu_util.c:217 modules/devices.c:842 #: modules/devices/gpu.c:209 modules/devices/pci.c:148 #: modules/devices/usb.c:139 msgid "Driver" msgstr "" #: hardinfo2/cpu_util.c:223 modules/computer.c:801 #: modules/devices/arm/processor.c:255 modules/devices/e2k/processor.c:178 #: modules/devices/x86/processor.c:283 modules/devices/x86/processor.c:387 #: modules/devices/x86/processor.c:525 msgid "(Not Available)" msgstr "" #: hardinfo2/cpu_util.c:231 hardinfo2/cpu_util.c:233 msgid "Socket" msgstr "" #: hardinfo2/cpu_util.c:236 hardinfo2/cpu_util.c:238 modules/devices/gpu.c:205 #: modules/devices/gpu.c:295 msgid "Core" msgstr "" #: hardinfo2/cpu_util.c:241 msgid "Book" msgstr "" #: hardinfo2/cpu_util.c:243 msgid "Drawer" msgstr "" #: hardinfo2/cpu_util.c:249 modules/devices/arm/processor.c:480 #: modules/devices/x86/processor.c:751 msgid "Topology" msgstr "" #: hardinfo2/cpu_util.c:250 msgid "ID" msgstr "" #: hardinfo2/dmi_util.c:25 msgid "BIOS Information" msgstr "" #: hardinfo2/dmi_util.c:26 modules/devices/parisc/processor.c:157 msgid "System" msgstr "" #: hardinfo2/dmi_util.c:27 msgid "Base Board" msgstr "" #: hardinfo2/dmi_util.c:28 modules/devices/dmi.c:54 msgid "Chassis" msgstr "" #: hardinfo2/dmi_util.c:29 modules/computer.c:580 modules/computer.c:1144 #: modules/devices/alpha/processor.c:87 modules/devices/arm/processor.c:340 #: modules/devices.c:99 modules/devices/e2k/processor.c:357 #: modules/devices/ia64/processor.c:159 #: modules/devices/loongarch64/processor.c:93 #: modules/devices/m68k/processor.c:83 modules/devices/mips/processor.c:74 #: modules/devices/parisc/processor.c:154 modules/devices/ppc/processor.c:157 #: modules/devices/riscv/processor.c:241 modules/devices/s390/processor.c:131 #: modules/devices/sh/processor.c:83 modules/devices/sparc/processor.c:74 #: modules/devices/x86/processor.c:647 msgid "Processor" msgstr "Processzor" #: hardinfo2/dmi_util.c:30 msgid "Memory Controller" msgstr "" #: hardinfo2/dmi_util.c:31 msgid "Memory Module" msgstr "" #: hardinfo2/dmi_util.c:32 modules/devices/e2k/processor.c:366 #: modules/devices/parisc/processor.c:163 modules/devices/x86/processor.c:663 msgid "Cache" msgstr "" #: hardinfo2/dmi_util.c:33 msgid "Port Connector" msgstr "" #: hardinfo2/dmi_util.c:34 msgid "System Slots" msgstr "" #: hardinfo2/dmi_util.c:35 msgid "On Board Devices" msgstr "" #: hardinfo2/dmi_util.c:36 msgid "OEM Strings" msgstr "" #: hardinfo2/dmi_util.c:37 msgid "System Configuration Options" msgstr "" #: hardinfo2/dmi_util.c:38 msgid "BIOS Language" msgstr "" #: hardinfo2/dmi_util.c:39 msgid "Group Associations" msgstr "" #: hardinfo2/dmi_util.c:40 msgid "System Event Log" msgstr "" #: hardinfo2/dmi_util.c:41 msgid "Physical Memory Array" msgstr "" #: hardinfo2/dmi_util.c:42 msgid "Memory Device" msgstr "" #: hardinfo2/dmi_util.c:43 msgid "32-bit Memory Error" msgstr "" #: hardinfo2/dmi_util.c:44 msgid "Memory Array Mapped Address" msgstr "" #: hardinfo2/dmi_util.c:45 msgid "Memory Device Mapped Address" msgstr "" #: hardinfo2/dmi_util.c:46 msgid "Built-in Pointing Device" msgstr "" #: hardinfo2/dmi_util.c:47 msgid "Portable Battery" msgstr "" #: hardinfo2/dmi_util.c:48 msgid "System Reset" msgstr "" #: hardinfo2/dmi_util.c:49 msgid "Hardware Security" msgstr "" #: hardinfo2/dmi_util.c:50 msgid "System Power Controls" msgstr "" #: hardinfo2/dmi_util.c:51 msgid "Voltage Probe" msgstr "" #: hardinfo2/dmi_util.c:52 msgid "Cooling Device" msgstr "" #: hardinfo2/dmi_util.c:53 msgid "Temperature Probe" msgstr "" #: hardinfo2/dmi_util.c:54 msgid "Electrical Current Probe" msgstr "" #: hardinfo2/dmi_util.c:55 msgid "Out-of-band Remote Access" msgstr "" #: hardinfo2/dmi_util.c:56 msgid "Boot Integrity Services" msgstr "" #: hardinfo2/dmi_util.c:57 msgid "System Boot" msgstr "" #: hardinfo2/dmi_util.c:58 msgid "64-bit Memory Error" msgstr "" #: hardinfo2/dmi_util.c:59 msgid "Management Device" msgstr "" #: hardinfo2/dmi_util.c:60 msgid "Management Device Component" msgstr "" #: hardinfo2/dmi_util.c:61 msgid "Management Device Threshold Data" msgstr "" #: hardinfo2/dmi_util.c:62 msgid "Memory Channel" msgstr "" #: hardinfo2/dmi_util.c:63 msgid "IPMI Device" msgstr "" #: hardinfo2/dmi_util.c:64 msgid "Power Supply" msgstr "" #: hardinfo2/dmi_util.c:65 msgid "Additional Information" msgstr "" #: hardinfo2/dmi_util.c:66 msgid "Onboard Device" msgstr "" #: hardinfo2/dmi_util.c:233 msgid "Invalid chassis type (0)" msgstr "" #: hardinfo2/dmi_util.c:234 hardinfo2/dmi_util.c:235 msgid "Unknown chassis type" msgstr "" #: hardinfo2/dmi_util.c:236 msgid "Desktop" msgstr "" #: hardinfo2/dmi_util.c:237 msgid "Low-profile Desktop" msgstr "" #: hardinfo2/dmi_util.c:238 msgid "Pizza Box" msgstr "" #: hardinfo2/dmi_util.c:239 msgid "Mini Tower" msgstr "" #: hardinfo2/dmi_util.c:240 msgid "Tower" msgstr "" #: hardinfo2/dmi_util.c:241 msgid "Portable" msgstr "" #: hardinfo2/dmi_util.c:242 modules/computer.c:408 modules/computer.c:417 #: modules/computer.c:440 modules/computer.c:442 msgid "Laptop" msgstr "" #: hardinfo2/dmi_util.c:243 msgid "Notebook" msgstr "" #: hardinfo2/dmi_util.c:244 msgid "Handheld" msgstr "" #: hardinfo2/dmi_util.c:245 msgid "Docking Station" msgstr "" #: hardinfo2/dmi_util.c:246 msgid "All-in-one" msgstr "" #: hardinfo2/dmi_util.c:247 msgid "Subnotebook" msgstr "" #: hardinfo2/dmi_util.c:248 msgid "Space-saving" msgstr "" #: hardinfo2/dmi_util.c:249 msgid "Lunch Box" msgstr "" #: hardinfo2/dmi_util.c:250 msgid "Main Server Chassis" msgstr "" #: hardinfo2/dmi_util.c:251 msgid "Expansion Chassis" msgstr "" #: hardinfo2/dmi_util.c:252 msgid "Sub Chassis" msgstr "" #: hardinfo2/dmi_util.c:253 msgid "Bus Expansion Chassis" msgstr "" #: hardinfo2/dmi_util.c:254 msgid "Peripheral Chassis" msgstr "" #: hardinfo2/dmi_util.c:255 msgid "RAID Chassis" msgstr "" #: hardinfo2/dmi_util.c:256 msgid "Rack Mount Chassis" msgstr "" #: hardinfo2/dmi_util.c:257 msgid "Sealed-case PC" msgstr "" #: hardinfo2/dmi_util.c:258 msgid "Multi-system" msgstr "" #: hardinfo2/dmi_util.c:259 msgid "CompactPCI" msgstr "" #: hardinfo2/dmi_util.c:260 msgid "AdvancedTCA" msgstr "" #: hardinfo2/dmi_util.c:261 msgid "Blade" msgstr "" #: hardinfo2/dmi_util.c:262 msgid "Blade Enclosing" msgstr "" #: hardinfo2/dmi_util.c:263 msgid "Tablet" msgstr "" #: hardinfo2/dmi_util.c:264 msgid "Convertible" msgstr "" #: hardinfo2/dmi_util.c:265 msgid "Detachable" msgstr "" #: hardinfo2/dmi_util.c:266 msgid "IoT Gateway" msgstr "" #: hardinfo2/dmi_util.c:267 msgid "Embedded PC" msgstr "" #: hardinfo2/dmi_util.c:268 msgid "Mini PC" msgstr "" #: hardinfo2/dmi_util.c:269 msgid "Stick PC" msgstr "" #: hardinfo2/dt_util.c:1175 msgid "phandle Map" msgstr "" #: hardinfo2/dt_util.c:1176 msgid "Alias Map" msgstr "" #: hardinfo2/dt_util.c:1177 msgid "Symbol Map" msgstr "" #. !/ %d will be latest year of copyright #: hardinfo2/hardinfo.c:104 #, c-format msgid "" "Copyright (C) 2003-2023 L. A. F. Pereira. 2024-%d Hardinfo2 Project.\n" "\n" msgstr "" #: hardinfo2/hardinfo.c:106 #, c-format msgid "" "Compile-time options:\n" " Release version: %s (%s)\n" " LibSoup version: %s\n" " Data : %s\n" " Library : %s\n" " Locale : %s\n" " Compiled for : %s\n" msgstr "" #: hardinfo2/hardinfo.c:114 msgid "3.0" msgstr "" #: hardinfo2/hardinfo.c:149 #, c-format msgid "Unknown benchmark ``%s''\n" msgstr "" #: hardinfo2/hardinfo.c:188 msgid "Don't know what to do. Exiting." msgstr "" #: hardinfo2/usb_util.c:293 modules/devices/devicetree.c:90 #: modules/devices/devicetree.c:91 modules/devices/monitors.c:411 #: modules/devices/storage.c:306 modules/devices/storage.c:328 msgid "(None)" msgstr "" #: hardinfo2/util.c:100 modules/computer/uptime.c:54 #, c-format msgid "%d day" msgid_plural "%d days" msgstr[0] "" msgstr[1] "" #: hardinfo2/util.c:101 modules/computer/uptime.c:55 #, c-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "" msgstr[1] "" #: hardinfo2/util.c:102 modules/computer/uptime.c:56 #, c-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "" msgstr[1] "" #: hardinfo2/util.c:103 #, c-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "" msgstr[1] "" #: hardinfo2/util.c:124 #, c-format msgid "%.1f B" msgstr "" #: hardinfo2/util.c:126 #, c-format msgid "%.1f KiB" msgstr "" #: hardinfo2/util.c:128 #, c-format msgid "%.1f MiB" msgstr "" #: hardinfo2/util.c:130 #, c-format msgid "%.1f GiB" msgstr "" #: hardinfo2/util.c:132 #, c-format msgid "%.1f TiB" msgstr "" #: hardinfo2/util.c:134 #, c-format msgid "%.1f PiB" msgstr "" #: hardinfo2/util.c:283 msgid "Error" msgstr "" #: hardinfo2/util.c:283 hardinfo2/util.c:299 msgid "Warning" msgstr "" #: hardinfo2/util.c:298 msgid "Fatal Error" msgstr "" #: hardinfo2/util.c:325 msgid "do not print status messages to standard output" msgstr "" #: hardinfo2/util.c:331 msgid "creates a report and prints to standard output" msgstr "" #: hardinfo2/util.c:337 msgid "chooses a report format ([text], html)" msgstr "" #: hardinfo2/util.c:343 msgid "run single benchmark eg. -b 'FPU FFT' (Default all Benchmarks runs)" msgstr "" #: hardinfo2/util.c:349 msgid "" "user note attached to benchmark results. (updating/synchronize with server)" msgstr "" #: hardinfo2/util.c:355 msgid "benchmark result format ([short], conf, shell)" msgstr "" #: hardinfo2/util.c:361 msgid "" "maximum number of benchmark results to include (-1 for no limit, default is " "50)" msgstr "" #: hardinfo2/util.c:367 msgid "shows program version and quit" msgstr "" #: hardinfo2/util.c:373 msgid "do not run benchmarks" msgstr "" #: hardinfo2/util.c:379 msgid "show all details" msgstr "" #: hardinfo2/util.c:384 msgid "- System Information and Benchmark" msgstr "" #: hardinfo2/util.c:394 #, c-format msgid "" "Unrecognized arguments.\n" "Try ``%s --help'' for more information.\n" msgstr "" #: hardinfo2/util.c:869 #, c-format msgid "Scanning: %s..." msgstr "" #: hardinfo2/util.c:879 shell/shell.c:303 shell/shell.c:925 shell/shell.c:2163 msgid "Done." msgstr "Kész." #: hardinfo2/vendor.c:213 msgid "Update vendor list" msgstr "" #: hardinfo2/vendor.c:218 msgid "Check Update Version" msgstr "" #: hardinfo2/vendor.c:391 modules/computer.c:630 modules/computer.c:829 #: modules/computer/os.c:196 modules/computer/os.c:378 #: modules/computer/os.c:413 modules/computer/os.c:741 #: modules/computer/os.c:802 modules/devices.c:464 modules/devices.c:614 #: modules/devices/firmware.c:149 modules/devices/printers.c:106 #: modules/devices/printers.c:113 modules/devices/printers.c:123 #: modules/devices/printers.c:138 modules/devices/printers.c:147 #: modules/devices/printers.c:256 modules/devices/spd-decode.c:364 #: modules/devices/usb.c:149 msgid "Unknown" msgstr "Ismeretlen" #: shell/callbacks.c:457 shell/shell.c:522 msgid "System Information and Benchmark" msgstr "Rendszer-információ és teljesítménymérés" #: shell/callbacks.c:462 msgid "" "HardInfo2 is free software; you can redistribute it and/or modify it under " "the terms of the GNU General Public License as published by the Free " "Software Foundation, version 2 or later.\n" "\n" "This program is distributed in the hope that it will be useful, but WITHOUT " "ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " "FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " "more details.\n" "\n" "You should have received a copy of the GNU General Public License along with " "this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin St, Fifth Floor, Boston, MA 02110-1301 USA" msgstr "" #: shell/menu.c:43 msgid "_Information" msgstr "_Információ" #: shell/menu.c:44 msgid "_View" msgstr "_Nézet" #: shell/menu.c:46 msgid "_Theme" msgstr "" #: shell/menu.c:48 msgid "_Help" msgstr "_Súgó" #: shell/menu.c:52 msgid "Generate _Report" msgstr "_Jelentés" #: shell/menu.c:53 msgid "Generates a report with detailed system information" msgstr "" #: shell/menu.c:57 shell/syncmanager.c:692 msgid "Synchronize" msgstr "Feltöltés" #: shell/menu.c:58 msgid "Send benchmark results and receive updated data from the network" msgstr "" #: shell/menu.c:73 msgid "_Refresh" msgstr "_Frissítés" #: shell/menu.c:78 msgid "_Open HardInfo2 Web Site" msgstr "HardInfo2 honlap _megnyitása" #: shell/menu.c:83 msgid "_Report bug" msgstr "_Hibabejelentés" #: shell/menu.c:88 msgid "_About HardInfo2" msgstr "_Névjegy" #: shell/menu.c:89 msgid "Displays program version information" msgstr "" #: shell/menu.c:93 msgid "_Quit" msgstr "_Kilépés" #: shell/menu.c:100 msgid "_Side Pane" msgstr "_Oldalsáv" #: shell/menu.c:101 msgid "Toggles side pane visibility" msgstr "" #: shell/menu.c:104 msgid "_Toolbar" msgstr "_Eszköztár" #: shell/menu.c:108 msgid "Synchronize on startup" msgstr "Feltöltés indításkor" #: shell/menu.c:113 msgid "Disable Theme" msgstr "" #: shell/menu.c:117 msgid "Theme Motherboard" msgstr "" #: shell/menu.c:121 msgid "Theme Graffiti" msgstr "" #: shell/menu.c:125 msgid "Theme Anime PC" msgstr "" #: shell/menu.c:129 msgid "Theme Tux Star" msgstr "" #: shell/menu.c:133 msgid "Theme PixArt" msgstr "" #: shell/menu.c:137 msgid "Theme Silicon" msgstr "" #: shell/report.c:772 shell/report.c:780 msgid "Save File" msgstr "" #: shell/report.c:775 shell/report.c:1252 shell/syncmanager.c:780 msgid "_Cancel" msgstr "_Mégse" #: shell/report.c:777 msgid "_Save" msgstr "_Mentés" #: shell/report.c:952 msgid "Cannot create ReportContext. Programming bug?" msgstr "" #: shell/report.c:972 msgid "Open the report with your web browser?" msgstr "Megnyitja a jelentést böngészőben?" #: shell/report.c:975 msgid "_No" msgstr "_Nem" #: shell/report.c:976 msgid "_Open" msgstr "_Megnyitás" #: shell/report.c:1007 msgid "Generating report..." msgstr "Jelentés létrehozása..." #: shell/report.c:1017 msgid "Report saved." msgstr "" #: shell/report.c:1019 msgid "Error while creating the report." msgstr "" #: shell/report.c:1121 msgid "Generate Report" msgstr "Jelentés" #: shell/report.c:1146 msgid "" "Generate Report\n" "Please choose the information that you wish to view in your report:" msgstr "" "Jelentés készítése a rendszerről\n" "Kérem, válassza ki mely elemek szerepeljenek a jelentésben:" #: shell/report.c:1218 msgid "Select _None" msgstr "Egyik _sem" #: shell/report.c:1229 msgid "Select _All" msgstr "_Összes" #: shell/report.c:1262 msgid "_Generate" msgstr "_Létrehozás" #: shell/shell.c:517 #, c-format msgid "%s - System Information and Benchmark" msgstr "" #: shell/shell.c:910 msgid "Loading modules..." msgstr "Modulok betöltése..." #: shell/shell.c:1681 msgid "URL" msgstr "" #: shell/shell.c:1688 msgid "Support URL" msgstr "" #: shell/shell.c:1699 msgid "Wikipedia" msgstr "Wikipedia" #: shell/shell.c:2033 #, c-format msgid "%s → Summary" msgstr "%s → Összegzés" #: shell/shell.c:2139 msgid "Updating..." msgstr "Frissítés..." #: shell/syncmanager.c:80 msgid "" "Synchronize with Central Database\n" "The following information may be synchronized\n" "with the HardInfo2 central database." msgstr "" "Hardveradatok feltöltése központi adatbázisba\n" "Az alábbi adatok kerülnek feltöltésre a HardInfo2 adatbázisába." #: shell/syncmanager.c:84 msgid "" "Synchronizing\n" "This may take some time." msgstr "" "Feltöltés\n" "Ez eltarthat egy ideig." #: shell/syncmanager.c:546 msgid "(canceled)" msgstr "(megszakítva)" #: shell/syncmanager.c:562 msgid "(failed)" msgstr "" #: shell/syncmanager.c:658 modules/benchmark.c:932 msgid "Send benchmark results" msgstr "" #: shell/syncmanager.c:767 msgid "Privacy Policy" msgstr "Adatvédelmi irányelv" #: shell/syncmanager.c:789 msgid "_Synchronize" msgstr "Fel_töltés" #: shell/syncmanager.c:838 #, c-format msgid "Synchronizing: %s" msgstr "" #: modules/benchmark/benches.c:136 msgid "CPU Blowfish (Single-thread)" msgstr "" #: modules/benchmark/benches.c:144 msgid "CPU Blowfish (Multi-thread)" msgstr "" #: modules/benchmark/benches.c:152 msgid "CPU Blowfish (Multi-core)" msgstr "" #: modules/benchmark/benches.c:160 msgid "CPU Zlib" msgstr "" #: modules/benchmark/benches.c:168 msgid "CPU CryptoHash" msgstr "" #: modules/benchmark/benches.c:176 msgid "CPU Fibonacci" msgstr "" #: modules/benchmark/benches.c:184 msgid "CPU N-Queens" msgstr "" #: modules/benchmark/benches.c:192 msgid "FPU FFT" msgstr "" #: modules/benchmark/benches.c:200 msgid "FPU Raytracing (Single-thread)" msgstr "" #: modules/benchmark/benches.c:208 msgid "Internal Network Speed" msgstr "" #: modules/benchmark/benches.c:216 msgid "SysBench CPU (Single-thread)" msgstr "" #: modules/benchmark/benches.c:224 msgid "SysBench CPU (Multi-thread)" msgstr "" #: modules/benchmark/benches.c:232 msgid "SysBench CPU (Four threads)" msgstr "" #: modules/benchmark/benches.c:240 msgid "SysBench Memory (Single-thread)" msgstr "" #: modules/benchmark/benches.c:248 msgid "SysBench Memory (Two threads)" msgstr "" #: modules/benchmark/benches.c:256 msgid "SysBench Memory (Quad threads)" msgstr "" #: modules/benchmark/benches.c:264 msgid "SysBench Memory (Multi-thread)" msgstr "" #: modules/benchmark/benches.c:272 msgid "GPU Drawing" msgstr "" #: modules/benchmark/benches.c:281 msgid "GPU OpenGL Drawing" msgstr "" #: modules/benchmark/benches.c:290 msgid "Storage R/W Speed" msgstr "" #: modules/benchmark/benches.c:304 msgid "" "Alexey Kopytov's sysbench is required.\n" "Results in events/second. Higher is better." msgstr "" #: modules/benchmark/benches.c:310 msgid "" "Alexey Kopytov's sysbench is required.\n" "Results in MiB/second. Higher is better." msgstr "" #: modules/benchmark/benches.c:313 msgid "" "iperf3 is required.\n" "Results in Gbits/s. Higher is better." msgstr "" #: modules/benchmark/benches.c:324 msgid "Results in HIMarks. Higher is better." msgstr "" #: modules/benchmark/benches.c:326 msgid "" "Results in HIMarks. Higher is better.\n" "Many Desktop Environments only uses software." msgstr "" #: modules/benchmark/benches.c:329 msgid "Results in MB/s. Higher is better." msgstr "" #: modules/benchmark/benches.c:332 msgid "Results in FPS. Higher is better." msgstr "" #. !/ Used for an unknown value. Having it in only one place cleans up the .po #. * line references #: modules/benchmark/bench_results.c:34 modules/computer.c:41 #: modules/computer/display.c:40 modules/computer/display.c:57 #: modules/computer/os.c:400 modules/computer/os.c:457 modules/devices.c:596 #: modules/devices/dmi_memory.c:699 modules/devices/dmi_memory.c:835 #: modules/devices/gpu.c:40 modules/devices/gpu.c:58 modules/devices/gpu.c:122 #: modules/devices/gpu.c:130 modules/devices/gpu.c:210 #: modules/devices/gpu.c:211 modules/devices/gpu.c:230 #: modules/devices/inputdevices.c:51 modules/devices/monitors.c:28 #: modules/devices/monitors.c:29 modules/devices/monitors.c:155 #: modules/devices/monitors.c:164 modules/devices/pci.c:25 #: modules/devices/pci.c:149 modules/devices/pci.c:150 #: modules/devices/spd-decode.c:358 modules/devices/spd-decode.c:359 #: modules/devices/spd-decode.c:362 modules/devices/spd-decode.c:363 #: modules/devices/spd-decode.c:584 modules/devices/spd-decode.c:899 #: modules/devices/spd-decode.c:900 modules/devices/spd-decode.c:1111 #: modules/devices/spd-decode.c:1350 modules/devices/storage.c:27 #: modules/devices/storage.c:307 modules/devices/storage.c:336 #: modules/devices/storage.c:431 modules/devices/usb.c:29 #: modules/network/net.c:460 includes/cpu_util.h:11 includes/spd-decode.h:24 #: includes/spd-decode.h:25 msgid "(Unknown)" msgstr "(ismeretlen)" #: modules/benchmark/bench_results.c:261 modules/devices/alpha/processor.c:90 #: modules/devices/arm/processor.c:289 modules/devices/arm/processor.c:302 #: modules/devices/arm/processor.c:344 modules/devices/arm/processor.c:509 #: modules/devices.c:430 modules/devices.c:438 modules/devices.c:466 #: modules/devices/e2k/processor.c:363 modules/devices/e2k/processor.c:400 #: modules/devices/gpu.c:125 modules/devices/gpu.c:127 #: modules/devices/gpu.c:133 modules/devices/gpu.c:135 #: modules/devices/gpu.c:233 modules/devices/gpu.c:235 #: modules/devices/ia64/processor.c:167 modules/devices/ia64/processor.c:196 #: modules/devices/loongarch64/processor.c:98 #: modules/devices/m68k/processor.c:87 modules/devices/mips/processor.c:77 #: modules/devices/parisc/processor.c:158 #: modules/devices/parisc/processor.c:191 modules/devices/ppc/processor.c:160 #: modules/devices/ppc/processor.c:187 modules/devices/riscv/processor.c:246 #: modules/devices/riscv/processor.c:276 modules/devices/s390/processor.c:160 #: modules/devices/sh/processor.c:87 modules/devices/sh/processor.c:88 #: modules/devices/sh/processor.c:89 modules/devices/x86/processor.c:317 #: modules/devices/x86/processor.c:330 modules/devices/x86/processor.c:658 #: modules/devices/x86/processor.c:790 msgid "MHz" msgstr "MHz" #: modules/benchmark/bench_results.c:293 modules/devices.c:177 #, c-format msgid "%d physical processor" msgid_plural "%d physical processors" msgstr[0] "%d fizikai processzor" msgstr[1] "%d fizikai processzor" #: modules/benchmark/bench_results.c:294 modules/devices.c:178 #, c-format msgid "%d core" msgid_plural "%d cores" msgstr[0] "%d mag" msgstr[1] "%d mag" #: modules/benchmark/bench_results.c:295 modules/devices.c:179 #, c-format msgid "%d thread" msgid_plural "%d threads" msgstr[0] "%d futtatási szál" msgstr[1] "%d futtatási szál" #: modules/benchmark/bench_results.c:300 modules/devices.c:181 #, c-format msgid "%d NUMA node" msgid_plural "%d NUMA nodes" msgstr[0] "" msgstr[1] "" #. !/NP procs; NC cores across NN nodes; NT threads #: modules/benchmark/bench_results.c:304 #, c-format msgid "%s; %s across %s; %s" msgstr "" #. !/NP procs; NC cores; NT threads #: modules/benchmark/bench_results.c:309 #, c-format msgid "%s; %s; %s" msgstr "" #: modules/benchmark/bench_results.c:383 modules/benchmark/bench_results.c:508 #: modules/computer.c:1041 modules/devices/dmi_memory.c:639 #: modules/devices/dmi_memory.c:649 modules/devices/dmi_memory.c:703 #: modules/devices/dmi_memory.c:791 modules/devices/dmi_memory.c:837 #: modules/devices/dmi_memory.c:920 modules/devices/spd-decode.c:1354 #: modules/network/net.c:416 modules/network/net.c:440 #: modules/network/net.c:441 msgid "MiB" msgstr "MiB" #: modules/benchmark/bench_results.c:388 modules/benchmark/bench_results.c:507 msgid "kiB" msgstr "kiB" #: modules/benchmark/bench_results.c:396 modules/benchmark/bench_results.c:452 #, c-format msgid "%d-bit" msgstr "" #: modules/benchmark/bench_results.c:417 modules/benchmark/bench_results.c:482 msgid "Benchmark Result" msgstr "" #: modules/benchmark/bench_results.c:417 modules/benchmark/bench_results.c:482 msgid "Threads" msgstr "" #: modules/benchmark/bench_results.c:418 modules/benchmark/bench_results.c:484 msgid "Elapsed Time" msgstr "" #: modules/benchmark/bench_results.c:418 modules/benchmark/bench_results.c:484 msgid "seconds" msgstr "másodperc" #: modules/benchmark/bench_results.c:419 modules/computer/languages.c:101 #: modules/devices/arm/processor.c:354 modules/devices/e2k/processor.c:362 #: modules/devices/gpu.c:203 modules/devices/ia64/processor.c:166 #: modules/devices/loongarch64/processor.c:97 modules/devices/pci.c:146 #: modules/devices/ppc/processor.c:159 msgid "Revision" msgstr "Változat" #: modules/benchmark/bench_results.c:420 modules/benchmark/bench_results.c:485 msgid "Extra Information" msgstr "" #: modules/benchmark/bench_results.c:422 modules/benchmark/bench_results.c:487 msgid "Note" msgstr "" #: modules/benchmark/bench_results.c:423 modules/benchmark/bench_results.c:488 msgid "" "This result is from an old version of HardInfo. Results might not be " "comparable to current version. Some details are missing." msgstr "" #: modules/benchmark/bench_results.c:427 modules/benchmark/bench_results.c:492 #: modules/devices/devicetree/pmac_data.c:81 modules/devices/sh/processor.c:85 msgid "Machine" msgstr "" #: modules/benchmark/bench_results.c:428 modules/benchmark/bench_results.c:492 #: modules/devices/devicetree.c:207 modules/devices/dmi.c:48 msgid "Board" msgstr "Alaplap" #: modules/benchmark/bench_results.c:429 modules/benchmark/bench_results.c:494 #: modules/computer.c:583 msgid "Machine Type" msgstr "Gép típusa" #: modules/benchmark/bench_results.c:430 modules/benchmark/bench_results.c:497 msgid "CPU Name" msgstr "" #: modules/benchmark/bench_results.c:431 modules/benchmark/bench_results.c:498 msgid "CPU Description" msgstr "" #: modules/benchmark/bench_results.c:432 modules/benchmark/bench_results.c:500 #: modules/benchmark.c:601 msgid "CPU Config" msgstr "Konfiguráció" #: modules/benchmark/bench_results.c:433 modules/benchmark/bench_results.c:500 msgid "Threads Available" msgstr "" #: modules/benchmark/bench_results.c:434 modules/benchmark/bench_results.c:501 #: modules/benchmark.c:579 msgid "GPU" msgstr "" #: modules/benchmark/bench_results.c:435 modules/benchmark/bench_results.c:503 #: modules/computer.c:595 msgid "OpenGL Renderer" msgstr "" #: modules/benchmark/bench_results.c:436 modules/benchmark/bench_results.c:505 #: modules/benchmark.c:590 modules/computer.c:1145 modules/devices.c:109 msgid "Storage" msgstr "Háttértár" #: modules/benchmark/bench_results.c:437 modules/benchmark/bench_results.c:507 #: modules/computer.c:140 modules/computer.c:582 modules/computer.c:1144 #: modules/devices/gpu.c:206 msgid "Memory" msgstr "Memória" #: modules/benchmark/bench_results.c:438 modules/benchmark/bench_results.c:509 msgid "Pointer Size" msgstr "" #: modules/benchmark/bench_results.c:482 msgid "Benchmark" msgstr "" #: modules/benchmark/bench_results.c:483 modules/devices/dmi_memory.c:859 #: modules/devices/firmware.c:245 modules/devices/monitors.c:495 #: modules/devices/x86/processor.c:692 msgid "Result" msgstr "" #: modules/benchmark/bench_results.c:495 msgid "Linux Kernel" msgstr "" #: modules/benchmark/bench_results.c:496 msgid "Linux OS" msgstr "" #: modules/benchmark/bench_results.c:507 msgid "Physical Memory" msgstr "" #: modules/benchmark/bench_results.c:511 msgid "Handles" msgstr "" #: modules/benchmark/bench_results.c:511 msgid "mid" msgstr "" #: modules/benchmark/bench_results.c:512 msgid "cfg_val" msgstr "" #: modules/benchmark.c:352 msgid "This Machine" msgstr "Ez a gép" #: modules/benchmark.c:578 modules/benchmark.c:589 modules/benchmark.c:601 msgid "Results" msgstr "" #: modules/benchmark.c:602 modules/devices/sparc/processor.c:75 msgid "CPU" msgstr "" #: modules/benchmark.c:678 #, c-format msgid "Benchmarking: %s." msgstr "" #: modules/benchmark.c:685 msgid "Stop" msgstr "Megszakítás" #: modules/benchmark.c:697 msgid "" "Please do not move your mouse\n" "or press any keys." msgstr "" #: modules/benchmark.c:767 msgid "Benchmarks" msgstr "" #: modules/benchmark.c:777 msgid "Perform tasks and compare with other systems" msgstr "" #: modules/benchmark.c:938 msgid "Receive benchmark results" msgstr "" #: modules/computer/alsa.c:26 modules/computer.c:599 msgid "Audio Devices" msgstr "" #: modules/computer/alsa.c:34 msgid "Audio Adapter" msgstr "" #: modules/computer.c:96 modules/devices/firmware.c:74 msgid "Summary" msgstr "Összegzés" #: modules/computer.c:97 modules/computer.c:585 modules/computer.c:1143 msgid "Operating System" msgstr "Operációs rendszer" #: modules/computer.c:98 msgid "Security" msgstr "Biztonság" #: modules/computer.c:99 modules/devices/gpu.c:211 modules/devices/pci.c:150 msgid "Kernel Modules" msgstr "Kernelmodulok" #: modules/computer.c:100 modules/computer.c:741 msgid "Boots" msgstr "Rendszerindítás" #: modules/computer.c:101 msgid "Languages" msgstr "Nyelv" #: modules/computer.c:102 msgid "Memory Usage" msgstr "Memória-használat" #: modules/computer.c:103 msgid "Filesystems" msgstr "Háttértárak" #: modules/computer.c:104 modules/computer.c:590 msgid "Display" msgstr "Megjelenítés" #: modules/computer.c:105 modules/computer/environment.c:37 msgid "Environment Variables" msgstr "Környezeti változók" #: modules/computer.c:107 modules/computer.c:109 msgid "Development" msgstr "Fejlesztői eszközök" #: modules/computer.c:111 modules/computer.c:884 msgid "Users" msgstr "Felhasználók" #: modules/computer.c:112 msgid "Groups" msgstr "Csoportok" #: modules/computer.c:142 #, c-format msgid "%dMB (%dMB used)" msgstr "%dMB (%dMB használatban)" #: modules/computer.c:144 modules/computer.c:646 msgid "Uptime" msgstr "Üzemidő" #: modules/computer.c:146 modules/computer.c:587 msgid "Date/Time" msgstr "Dátum és idő" #: modules/computer.c:151 modules/computer.c:647 msgid "Load Average" msgstr "Terhelés" #: modules/computer.c:266 msgid "Scripting Languages" msgstr "" #: modules/computer.c:267 msgid "Gambas3 (gbr3)" msgstr "" #: modules/computer.c:268 msgid "Python (default)" msgstr "" #: modules/computer.c:269 msgid "Python2" msgstr "" #: modules/computer.c:270 msgid "Python3" msgstr "" #: modules/computer.c:271 msgid "Perl" msgstr "" #: modules/computer.c:272 msgid "Rakudo (Perl6)" msgstr "" #: modules/computer.c:273 msgid "PHP" msgstr "" #: modules/computer.c:274 msgid "Ruby" msgstr "" #: modules/computer.c:275 msgid "Bash" msgstr "" #: modules/computer.c:276 msgid "JavaScript (Node.js)" msgstr "" #: modules/computer.c:277 msgid "awk" msgstr "" #: modules/computer.c:278 msgid "Compilers" msgstr "" #: modules/computer.c:279 msgid "C (GCC)" msgstr "" #: modules/computer.c:280 msgid "C (Clang)" msgstr "" #: modules/computer.c:281 msgid "D (dmd)" msgstr "" #: modules/computer.c:282 msgid "Gambas3 (gbc3)" msgstr "" #: modules/computer.c:283 msgid "Java" msgstr "" #: modules/computer.c:284 msgid ".NET" msgstr "" #: modules/computer.c:285 msgid "Vala" msgstr "" #: modules/computer.c:286 msgid "Haskell (GHC)" msgstr "" #: modules/computer.c:287 msgid "FreePascal" msgstr "" #: modules/computer.c:288 msgid "Go" msgstr "" #: modules/computer.c:289 msgid "Rust" msgstr "" #: modules/computer.c:290 msgid "Tools" msgstr "" #: modules/computer.c:291 msgid "make" msgstr "" #: modules/computer.c:292 msgid "ninja" msgstr "" #: modules/computer.c:293 msgid "GDB" msgstr "" #: modules/computer.c:294 msgid "LLDB" msgstr "" #: modules/computer.c:295 msgid "strace" msgstr "" #: modules/computer.c:296 msgid "valgrind" msgstr "" #: modules/computer.c:297 msgid "QMake" msgstr "" #: modules/computer.c:298 msgid "CMake" msgstr "" #: modules/computer.c:299 msgid "Gambas3 IDE" msgstr "" #: modules/computer.c:300 msgid "Radare2" msgstr "" #: modules/computer.c:301 msgid "ltrace" msgstr "" #: modules/computer.c:302 msgid "Powershell" msgstr "" #: modules/computer.c:343 msgid "Not found" msgstr "Nem található" #: modules/computer.c:348 #, c-format msgid "Detecting version: %s" msgstr "" #: modules/computer.c:366 msgid "Program" msgstr "" #: modules/computer.c:366 modules/computer.c:629 modules/computer.c:631 #: modules/computer.c:807 modules/computer/modules.c:372 #: modules/devices/dmi.c:41 modules/devices/dmi.c:47 modules/devices/dmi.c:51 #: modules/devices/dmi.c:57 modules/devices/firmware.c:75 #: modules/devices/inputdevices.c:146 modules/devices/monitors.c:409 msgid "Version" msgstr "" #: modules/computer.c:385 msgid "Field" msgstr "" #: modules/computer.c:385 modules/computer.c:730 modules/computer/modules.c:370 #: modules/computer/modules.c:371 modules/devices/arm/processor.c:479 msgid "Description" msgstr "" #: modules/computer.c:385 modules/devices.c:841 msgid "Value" msgstr "Érték" #: modules/computer.c:402 modules/computer.c:404 msgid "Single-board computer" msgstr "" #: modules/computer.c:455 modules/computer.c:457 msgid "Unknown physical machine type" msgstr "" #: modules/computer.c:479 modules/computer.c:480 modules/computer.c:527 #: modules/computer.c:529 msgid "Virtual (VMware)" msgstr "" #: modules/computer.c:482 modules/computer.c:483 modules/computer.c:484 #: modules/computer.c:485 msgid "Virtual (QEMU)" msgstr "" #: modules/computer.c:487 modules/computer.c:488 msgid "Virtual (Unknown)" msgstr "" #: modules/computer.c:490 modules/computer.c:491 modules/computer.c:492 #: modules/computer.c:520 modules/computer.c:522 msgid "Virtual (VirtualBox)" msgstr "" #: modules/computer.c:494 modules/computer.c:495 modules/computer.c:496 #: modules/computer.c:511 modules/computer.c:513 msgid "Virtual (Xen)" msgstr "" #: modules/computer.c:498 msgid "Virtual (hypervisor present)" msgstr "" #: modules/computer.c:579 modules/computer.c:1097 msgid "Computer" msgstr "Számítógép" #: modules/computer.c:586 modules/computer.c:640 msgid "User Name" msgstr "Felhasználó neve" #: modules/computer.c:591 msgid "Resolution" msgstr "Felbontás" #: modules/computer.c:591 modules/computer.c:812 #, c-format msgid "%dx%d pixels" msgstr "%dx%d képpont" #: modules/computer.c:593 msgid "Display Adapter" msgstr "" #: modules/computer.c:596 msgid "Session Display Server" msgstr "" #: modules/computer.c:601 modules/devices.c:108 msgid "Input Devices" msgstr "Beviteli eszközök" #: modules/computer.c:629 msgid "Kernel" msgstr "Kernel" #: modules/computer.c:630 msgid "Command Line" msgstr "Indítási paraméter" #: modules/computer.c:632 msgid "C Library" msgstr "" #: modules/computer.c:633 msgid "Distribution" msgstr "Kiadás" #: modules/computer.c:638 msgid "Current Session" msgstr "Jelenlegi munkamenet" #: modules/computer.c:639 msgid "Computer Name" msgstr "Számítógép neve" #: modules/computer.c:641 modules/computer/languages.c:99 msgid "Language" msgstr "Nyelv" #: modules/computer.c:642 modules/computer/users.c:53 msgid "Home Directory" msgstr "Saját könyvtár" #: modules/computer.c:643 msgid "Desktop Environment" msgstr "Asztali környezet" #: modules/computer.c:646 msgid "Misc" msgstr "Egyéb" #: modules/computer.c:660 msgid "HardInfo2" msgstr "HardInfo2" #: modules/computer.c:661 msgid "HardInfo2 running as" msgstr "A HardInfo2 jelenleg" #: modules/computer.c:662 msgid "Superuser" msgstr "rendszergazdai jogosultsággal fut" #: modules/computer.c:662 msgid "User" msgstr "felhasználói jogosultsággal fut" #: modules/computer.c:666 msgid "Health" msgstr "" #: modules/computer.c:668 msgid "Available entropy in /dev/random" msgstr "" #: modules/computer.c:672 msgid "Hardening Features" msgstr "" #: modules/computer.c:673 msgid "ASLR" msgstr "" #: modules/computer.c:674 msgid "dmesg" msgstr "dmesg" #: modules/computer.c:678 msgid "Linux Security Modules" msgstr "" #: modules/computer.c:679 msgid "Modules available" msgstr "" #: modules/computer.c:680 msgid "SELinux status" msgstr "" #: modules/computer.c:686 msgid "CPU Vulnerabilities" msgstr "" #: modules/computer.c:727 msgid "Loaded Modules" msgstr "Betöltött modulok" #: modules/computer.c:729 modules/computer.c:757 modules/computer.c:897 #: modules/computer/languages.c:95 modules/computer/modules.c:370 #: modules/devices/arm/processor.c:478 modules/devices/dmi.c:38 #: modules/devices/dmi.c:49 modules/devices/e2k/processor.c:358 #: modules/devices/gpu.c:301 modules/devices/ia64/processor.c:160 #: modules/devices/inputdevices.c:141 modules/devices/monitors.c:403 #: modules/devices/monitors.c:505 modules/devices/sh/processor.c:84 #: modules/devices/x86/processor.c:750 modules/network.c:333 msgid "Name" msgstr "" #: modules/computer.c:743 msgid "Date & Time" msgstr "Dátum és idő" #: modules/computer.c:744 msgid "Kernel Version" msgstr "Kernel verzió" #: modules/computer.c:754 msgid "Available Languages" msgstr "" #: modules/computer.c:756 msgid "Language Code" msgstr "" #: modules/computer.c:768 msgid "Mounted File Systems" msgstr "Csatolt fájlrendszerek" #: modules/computer.c:770 modules/computer/filesystem.c:89 msgid "Mount Point" msgstr "Csatolási pont" #: modules/computer.c:771 msgid "Usage" msgstr "" #: modules/computer.c:772 modules/devices.c:865 modules/devices.c:879 #: modules/devices/e2k/processor.c:416 modules/devices/gpu.c:85 #: modules/devices/gpu.c:93 modules/devices/gpu.c:293 modules/devices/pci.c:102 #: modules/devices/pci.c:110 modules/devices/pci.c:154 #: modules/devices/storage.c:48 modules/devices/storage.c:57 #: modules/devices/usb.c:172 modules/devices/usb.c:184 #: modules/devices/x86/processor.c:811 msgid "Device" msgstr "Eszköz" #: modules/computer.c:795 msgid "Session" msgstr "Munkamenet" #: modules/computer.c:796 modules/devices.c:842 modules/devices.c:879 #: modules/devices/dmi.c:56 modules/devices/dmi_memory.c:729 #: modules/devices/inputdevices.c:142 modules/devices/spd-decode.c:1377 #: modules/devices/x86/processor.c:715 msgid "Type" msgstr "Típus" #: modules/computer.c:799 msgid "Wayland" msgstr "Wayland" #: modules/computer.c:800 modules/computer.c:805 msgid "Current Display Name" msgstr "" #: modules/computer.c:804 msgid "X Server" msgstr "" #: modules/computer.c:806 modules/computer.c:846 modules/computer.c:869 #: modules/devices.c:879 modules/devices/dmi.c:40 modules/devices/dmi.c:46 #: modules/devices/dmi.c:50 modules/devices/dmi.c:55 #: modules/devices/dmi_memory.c:730 modules/devices/dmi_memory.c:873 #: modules/devices/e2k/processor.c:359 modules/devices/firmware.c:75 #: modules/devices/firmware.c:167 modules/devices/firmware.c:172 #: modules/devices/firmware.c:219 modules/devices/gpu.c:84 #: modules/devices/gpu.c:92 modules/devices/gpu.c:292 #: modules/devices/ia64/processor.c:161 modules/devices/inputdevices.c:144 #: modules/devices/monitors.c:402 modules/devices/pci.c:101 #: modules/devices/pci.c:109 modules/devices/storage.c:47 #: modules/devices/storage.c:56 modules/devices/storage.c:282 #: modules/devices/storage.c:572 modules/devices/storage.c:777 #: modules/devices/usb.c:171 modules/devices/x86/processor.c:654 msgid "Vendor" msgstr "Gyártó" #: modules/computer.c:808 msgid "Release Number" msgstr "" #: modules/computer.c:816 msgid "Screens" msgstr "" #: modules/computer.c:822 msgid "Disconnected" msgstr "" #: modules/computer.c:825 msgid "Connected" msgstr "" #: modules/computer.c:833 msgid "Unused" msgstr "" #: modules/computer.c:834 #, c-format msgid "%dx%d pixels, offset (%d, %d)" msgstr "" #: modules/computer.c:843 msgid "Outputs (XRandR)" msgstr "" #: modules/computer.c:845 msgid "OpenGL (GLX)" msgstr "" #: modules/computer.c:847 msgid "Renderer" msgstr "" #: modules/computer.c:848 msgid "Direct Rendering" msgstr "" #: modules/computer.c:849 modules/computer/modules.c:352 #: modules/computer/modules.c:353 modules/devices/inputdevices.c:153 #: modules/devices/printers.c:145 modules/devices/spd-decode.c:888 #: modules/devices/spd-decode.c:1100 msgid "Yes" msgstr "Igen" #: modules/computer.c:849 modules/computer/modules.c:352 #: modules/computer/modules.c:353 modules/devices/printers.c:145 #: modules/devices/spd-decode.c:886 modules/devices/spd-decode.c:1097 msgid "No" msgstr "Nem" #: modules/computer.c:850 msgid "Version (Compatibility)" msgstr "" #: modules/computer.c:851 msgid "Shading Language Version (Compatibility)" msgstr "" #: modules/computer.c:852 msgid "Version (Core)" msgstr "" #: modules/computer.c:853 msgid "Shading Language Version (Core)" msgstr "" #: modules/computer.c:854 msgid "Version (ES)" msgstr "" #: modules/computer.c:855 msgid "Shading Language Version (ES)" msgstr "" #: modules/computer.c:856 msgid "GLX Version" msgstr "" #: modules/computer.c:864 msgid "Vulkan" msgstr "" #: modules/computer.c:865 msgid "Instance Version" msgstr "" #: modules/computer.c:867 msgid "Api Version" msgstr "" #: modules/computer.c:868 msgid "Driver Version" msgstr "" #: modules/computer.c:870 msgid "Device Type" msgstr "" #: modules/computer.c:871 msgid "Device Name" msgstr "" #: modules/computer.c:872 msgid "Driver Name" msgstr "" #: modules/computer.c:873 msgid "Driver Info" msgstr "" #: modules/computer.c:874 msgid "Conformance Version" msgstr "" #: modules/computer.c:895 msgid "Group" msgstr "" #: modules/computer.c:898 modules/computer/users.c:52 msgid "Group ID" msgstr "" #: modules/computer.c:1037 #, c-format msgid "%0.1f %s available to Linux" msgstr "%0.1f %s elérhető a rendszer számára" #: modules/computer.c:1039 modules/devices/dmi_memory.c:637 #: modules/devices/dmi_memory.c:647 modules/devices/dmi_memory.c:789 #: modules/devices/dmi_memory.c:918 modules/devices/spd-decode.c:1352 msgid "GiB" msgstr "GiB" #: modules/computer.c:1043 modules/computer/memory_usage.c:73 #: modules/computer/modules.c:370 msgid "KiB" msgstr "KiB" #: modules/computer.c:1116 modules/devices/devicetree/pmac_data.c:82 msgid "Motherboard" msgstr "Alaplap" #: modules/computer.c:1144 msgid "Graphics" msgstr "Grafikus vezérlő" #: modules/computer.c:1145 modules/devices.c:105 msgid "Printers" msgstr "Nyomtatók" #: modules/computer.c:1145 msgid "Audio" msgstr "Hang" #: modules/computer.c:1194 msgid "Gathers high-level computer information" msgstr "" #: modules/computer.c:1205 msgid "lsmod is required." msgstr "" #: modules/computer.c:1213 msgid "" "X.org's xrandr utility provides additional details when " "available." msgstr "" #: modules/computer.c:1214 msgid "" "Mesa's glxinfo utility is required for OpenGL information." msgstr "" #: modules/computer.c:1215 msgid "" "Vulkan's vulkaninfo utility is required for Vulkan information." msgstr "" #: modules/computer/filesystem.c:87 msgid "Filesystem" msgstr "Fájlrendszer" #: modules/computer/filesystem.c:88 msgid "Mounted As" msgstr "" #: modules/computer/filesystem.c:88 msgid "Read-Write" msgstr "" #: modules/computer/filesystem.c:88 msgid "Read-Only" msgstr "" #: modules/computer/filesystem.c:90 modules/devices.c:865 #: modules/devices/dmi_memory.c:733 modules/devices/dmi_memory.c:766 #: modules/devices/dmi_memory.c:805 modules/devices/dmi_memory.c:872 #: modules/devices/spd-decode.c:1384 msgid "Size" msgstr "Méret" #: modules/computer/filesystem.c:91 msgid "Used" msgstr "Foglalt" #: modules/computer/filesystem.c:92 msgid "Available" msgstr "Szabad" #: modules/computer/languages.c:94 msgid "Locale Information" msgstr "" #: modules/computer/languages.c:96 modules/devices/gpu.c:266 #: modules/devices/spd-decode.c:1373 msgid "Source" msgstr "Forrás" #: modules/computer/languages.c:97 msgid "Address" msgstr "Honlap" #: modules/computer/languages.c:98 msgid "E-mail" msgstr "E-mail cím" #: modules/computer/languages.c:100 msgid "Territory" msgstr "Terület" #: modules/computer/languages.c:102 modules/devices/dmi.c:45 msgid "Date" msgstr "Kiadás dátuma" #: modules/computer/languages.c:103 msgid "Codeset" msgstr "Kódlap" #: modules/computer/loadavg.c:64 msgid "Couldn't obtain load average" msgstr "" #: modules/computer/memory_usage.c:131 msgid "Total physical memory usable by the system" msgstr "" #: modules/computer/memory_usage.c:132 msgid "Free memory which is not used for anything" msgstr "" #: modules/computer/memory_usage.c:133 msgid "Virtual memory, total swap space available" msgstr "" #: modules/computer/memory_usage.c:134 msgid "Virtual memory, remaining swap space available" msgstr "" #: modules/computer/memory_usage.c:135 msgid "Memory present within main memory and in the swapfile" msgstr "" #: modules/computer/memory_usage.c:136 msgid "HighTotal value can vary based on the type of kernel used" msgstr "" #: modules/computer/memory_usage.c:137 msgid "Amount of memory that is not directly mapped into kernel space" msgstr "" #: modules/computer/memory_usage.c:138 msgid "LowTotal value can vary based on the type of kernel used" msgstr "" #: modules/computer/memory_usage.c:139 msgid "Total and free memory directly mapped into kernel space" msgstr "" #: modules/computer/memory_usage.c:140 msgid "Available memory for allocation to any process, without swapping" msgstr "" #: modules/computer/memory_usage.c:141 msgid "Memory in buffer cache, temporary storage for raw disk blocks" msgstr "" #: modules/computer/memory_usage.c:142 msgid "Memory in the page cache (diskcache, shared memory, tmpfs and shmem)" msgstr "" #: modules/computer/memory_usage.c:143 msgid "Memory used more recently and not swapped out or reclaimed" msgstr "" #: modules/computer/memory_usage.c:144 msgid "Memory not been used recently and can be swapped out or reclaimed" msgstr "" #: modules/computer/memory_usage.c:145 msgid "Anonymous memory used more recently and not swapped out" msgstr "" #: modules/computer/memory_usage.c:146 msgid "Anonymous memory not been used and can be swapped out" msgstr "" #: modules/computer/memory_usage.c:147 msgid "Pagecache memory been used more recently and not reclaimed" msgstr "" #: modules/computer/memory_usage.c:148 msgid "Pagecache memory reclaimable without huge performance impact" msgstr "" #: modules/computer/memory_usage.c:149 msgid "Unevictable pages can't be swapped out for a variety of reasons" msgstr "" #: modules/computer/memory_usage.c:150 msgid "Pages locked to memory using the mlock() system call" msgstr "" #: modules/computer/memory_usage.c:151 msgid "Memory consumed by the zswap backend (compressed size)" msgstr "" #: modules/computer/memory_usage.c:152 msgid "Amount of anonymous memory stored in zswap (original size)" msgstr "" #: modules/computer/memory_usage.c:153 msgid "Memory waiting to be written back to disk" msgstr "" #: modules/computer/memory_usage.c:154 msgid "Memory which is actively being written back to disk" msgstr "" #: modules/computer/memory_usage.c:155 msgid "Non-file backed pages mapped into userspace page tables" msgstr "" #: modules/computer/memory_usage.c:156 msgid "Files which have been mmapped, such as libraries" msgstr "" #: modules/computer/memory_usage.c:157 msgid "Total memory used by shared memory (shmem) and tmpfs" msgstr "" #: modules/computer/memory_usage.c:158 msgid "Kernel allocations reclaimable under memory pressure" msgstr "" #: modules/computer/memory_usage.c:159 msgid "In-kernel data structures cache" msgstr "" #: modules/computer/memory_usage.c:160 msgid "Part of Slab, that might be reclaimed, such as caches" msgstr "" #: modules/computer/memory_usage.c:161 msgid "Part of Slab, that cannot be reclaimed on memory pressure" msgstr "" #: modules/computer/memory_usage.c:162 msgid "Memory consumed by the kernel stacks of all tasks" msgstr "" #: modules/computer/memory_usage.c:163 msgid "Memory consumed by userspace page tables" msgstr "" #: modules/computer/memory_usage.c:164 msgid "Memory consumed by secondary page tables" msgstr "" #: modules/computer/memory_usage.c:165 msgid "Previous counted pages which had been written to the server" msgstr "" #: modules/computer/memory_usage.c:166 msgid "Memory used for block device bounce buffers" msgstr "" #: modules/computer/memory_usage.c:167 msgid "Memory used by FUSE for temporary writeback buffers" msgstr "" #: modules/computer/memory_usage.c:168 msgid "Total memory currently available to be allocated on the system" msgstr "" #: modules/computer/memory_usage.c:169 msgid "The amount of memory presently allocated on the system" msgstr "" #: modules/computer/memory_usage.c:170 msgid "Total size of vmalloc virtual address space" msgstr "" #: modules/computer/memory_usage.c:171 msgid "Amount of vmalloc area which is used" msgstr "" #: modules/computer/memory_usage.c:172 msgid "Largest contiguous block of vmalloc area which is free" msgstr "" #: modules/computer/memory_usage.c:173 msgid "Memory allocated to the percpu allocator" msgstr "" #: modules/computer/memory_usage.c:174 msgid "Amount of memory the kernel identifies as corrupted" msgstr "" #: modules/computer/memory_usage.c:175 msgid "Non-file backed huge pages mapped into userspace page tables" msgstr "" #: modules/computer/memory_usage.c:176 msgid "Memory used by shmem and tmpfs allocated with huge pages" msgstr "" #: modules/computer/memory_usage.c:177 msgid "Shared memory mapped into userspace with huge pages" msgstr "" #: modules/computer/memory_usage.c:178 msgid "Memory used for fs data (page cache) allocated with huge pages" msgstr "" #: modules/computer/memory_usage.c:179 msgid "Page cache mapped into userspace with huge pages" msgstr "" #: modules/computer/memory_usage.c:180 msgid "Memory reserved for the Contiguous Memory Allocator (CMA)" msgstr "" #: modules/computer/memory_usage.c:181 msgid "Free remaining memory in the CMA reserves" msgstr "" #: modules/computer/memory_usage.c:182 msgid "Amount of unaccepted memory usable by the kernel" msgstr "" #: modules/computer/memory_usage.c:183 msgid "Size of the pool of huge pages" msgstr "" #: modules/computer/memory_usage.c:184 msgid "Number of huge pages available" msgstr "" #: modules/computer/memory_usage.c:185 msgid "Number of huge pages reserved" msgstr "" #: modules/computer/memory_usage.c:186 msgid "Number of huge pages surplus" msgstr "" #: modules/computer/memory_usage.c:187 msgid "Huge page size, used in conjunction with hugepages parameter" msgstr "" #: modules/computer/memory_usage.c:188 msgid "Total amount of memory consumed by huge pages of all sizes" msgstr "" #: modules/computer/memory_usage.c:189 msgid "Breakdown of page table sizes of 4k size" msgstr "" #: modules/computer/memory_usage.c:190 msgid "Breakdown of page table sizes of 2M size" msgstr "" #: modules/computer/memory_usage.c:191 msgid "Breakdown of page table sizes of 1G size" msgstr "" #: modules/computer/modules.c:168 msgid "Update kernel module icon table" msgstr "" #: modules/computer/modules.c:338 modules/computer/modules.c:339 #: modules/computer/modules.c:340 modules/computer/modules.c:341 #: modules/computer/modules.c:342 modules/computer/modules.c:343 #: modules/devices/dmi.c:117 modules/devices/firmware.c:245 #: modules/devices/x86/processor.c:694 msgid "(Not available)" msgstr "(Nem elérhető)" #: modules/computer/modules.c:369 msgid "Module Information" msgstr "" #: modules/computer/modules.c:369 modules/devices/gpu.c:298 msgid "Path" msgstr "" #: modules/computer/modules.c:369 msgid "Used Memory" msgstr "" #: modules/computer/modules.c:371 msgid "Version Magic" msgstr "" #: modules/computer/modules.c:372 msgid "In Linus' Tree" msgstr "" #: modules/computer/modules.c:373 msgid "Retpoline Enabled" msgstr "" #: modules/computer/modules.c:373 msgid "Copyright" msgstr "Szerzői jog" #: modules/computer/modules.c:373 msgid "Author" msgstr "Készítők" #: modules/computer/modules.c:374 msgid "License" msgstr "Licenc" #: modules/computer/modules.c:380 msgid "Dependencies" msgstr "Függőségek" #: modules/computer/os.c:153 modules/computer/os.c:154 #: modules/computer/os.c:155 modules/computer/os.c:156 msgid "GNU C Library" msgstr "" #: modules/computer/os.c:157 msgid "uClibc or uClibc-ng" msgstr "" #: modules/computer/os.c:158 msgid "diet libc" msgstr "" #: modules/computer/os.c:229 modules/computer/os.c:232 msgid "GNOME Shell " msgstr "" #: modules/computer/os.c:240 modules/computer/os.c:243 msgid "Version: " msgstr "" #: modules/computer/os.c:261 modules/computer/os.c:264 msgid "MATE Desktop Environment " msgstr "" #: modules/computer/os.c:297 #, c-format msgid "Unknown (Window Manager: %s)" msgstr "Ismeretlen (Ablakkezelő: %s)" #. !/{desktop environment} on {session type} #: modules/computer/os.c:308 #, c-format msgid "%s on %s" msgstr "" #: modules/computer/os.c:376 msgid "Terminal" msgstr "" #: modules/computer/os.c:392 msgid "User access allowed" msgstr "" #: modules/computer/os.c:394 msgid "User access forbidden" msgstr "" #: modules/computer/os.c:396 msgid "Access allowed (running as superuser)" msgstr "" #: modules/computer/os.c:398 msgid "Access forbidden? (running as superuser)" msgstr "" #: modules/computer/os.c:407 modules/computer/os.c:793 msgid "Disabled" msgstr "" #: modules/computer/os.c:409 msgid "Partially enabled (mmap base+stack+VDSO base)" msgstr "" #: modules/computer/os.c:411 msgid "Fully enabled (mmap base+stack+VDSO base+heap)" msgstr "" #. !/bits of entropy for rng (0) #: modules/computer/os.c:420 msgid "(None or not available)" msgstr "(Nincs vagy nem elérhető)" #. !/bits of entropy for rng (low/poor value) #: modules/computer/os.c:421 #, c-format msgid "%d bits (low)" msgstr "" #. !/bits of entropy for rng (medium value) #: modules/computer/os.c:422 #, c-format msgid "%d bits (medium)" msgstr "" #. !/bits of entropy for rng (high/good value) #: modules/computer/os.c:423 #, c-format msgid "%d bits (healthy)" msgstr "" #: modules/computer/os.c:788 msgid "Not installed" msgstr "" #: modules/computer/os.c:791 msgid "Enabled" msgstr "" #: modules/computer/users.c:50 msgid "User Information" msgstr "" #: modules/computer/users.c:51 msgid "User ID" msgstr "" #: modules/computer/users.c:54 msgid "Default Shell" msgstr "" #: modules/devices/alpha/processor.c:88 modules/devices.c:865 #: modules/devices/devicetree.c:162 modules/devices/devicetree.c:208 #: modules/devices/devicetree/pmac_data.c:80 #: modules/devices/e2k/processor.c:361 modules/devices/e2k/processor.c:416 #: modules/devices/gpu.c:116 modules/devices/ia64/processor.c:165 #: modules/devices/loongarch64/processor.c:96 #: modules/devices/m68k/processor.c:84 modules/devices/mips/processor.c:75 #: modules/devices/monitors.c:404 modules/devices/parisc/processor.c:155 #: modules/devices/ppc/processor.c:158 modules/devices/riscv/processor.c:242 #: modules/devices/s390/processor.c:132 modules/devices/x86/processor.c:811 msgid "Model" msgstr "" #: modules/devices/alpha/processor.c:89 msgid "Platform String" msgstr "" #: modules/devices/alpha/processor.c:90 modules/devices/arm/processor.c:344 #: modules/devices/e2k/processor.c:363 modules/devices/e2k/processor.c:416 #: modules/devices/ia64/processor.c:167 #: modules/devices/loongarch64/processor.c:98 #: modules/devices/m68k/processor.c:87 modules/devices/mips/processor.c:77 #: modules/devices/parisc/processor.c:158 modules/devices/ppc/processor.c:160 #: modules/devices/riscv/processor.c:246 modules/devices/sh/processor.c:87 #: modules/devices/x86/processor.c:658 modules/devices/x86/processor.c:811 msgid "Frequency" msgstr "Órajel" #: modules/devices/alpha/processor.c:91 modules/devices/arm/processor.c:345 #: modules/devices/e2k/processor.c:364 modules/devices/ia64/processor.c:168 #: modules/devices/m68k/processor.c:88 modules/devices/mips/processor.c:78 #: modules/devices/parisc/processor.c:159 modules/devices/ppc/processor.c:161 #: modules/devices/s390/processor.c:134 modules/devices/sh/processor.c:90 #: modules/devices/x86/processor.c:659 msgid "BogoMips" msgstr "" #: modules/devices/alpha/processor.c:92 modules/devices/arm/processor.c:346 #: modules/devices/e2k/processor.c:365 modules/devices/ia64/processor.c:169 #: modules/devices/loongarch64/processor.c:101 #: modules/devices/m68k/processor.c:89 modules/devices/mips/processor.c:79 #: modules/devices/parisc/processor.c:160 modules/devices/ppc/processor.c:162 #: modules/devices/riscv/processor.c:247 modules/devices/s390/processor.c:135 #: modules/devices/sh/processor.c:91 modules/devices/sparc/processor.c:77 #: modules/devices/x86/processor.c:660 msgid "Byte Order" msgstr "" #. !/flag:swp #: modules/devices/arm/arm_data.c:42 msgctxt "arm-flag" msgid "SWP instruction (atomic read-modify-write)" msgstr "" #. !/flag:half #: modules/devices/arm/arm_data.c:43 msgctxt "arm-flag" msgid "Half-word loads and stores" msgstr "" #. !/flag:thumb #: modules/devices/arm/arm_data.c:44 msgctxt "arm-flag" msgid "Thumb (16-bit instruction set)" msgstr "" #. !/flag:26bit #: modules/devices/arm/arm_data.c:45 msgctxt "arm-flag" msgid "26-Bit Model (Processor status register folded into program counter)" msgstr "" #. !/flag:fastmult #: modules/devices/arm/arm_data.c:46 msgctxt "arm-flag" msgid "32x32->64-bit multiplication" msgstr "" #. !/flag:fpa #: modules/devices/arm/arm_data.c:47 msgctxt "arm-flag" msgid "Floating point accelerator" msgstr "" #. !/flag:vfp #: modules/devices/arm/arm_data.c:48 msgctxt "arm-flag" msgid "VFP (early SIMD vector floating point instructions)" msgstr "" #. !/flag:edsp #: modules/devices/arm/arm_data.c:49 msgctxt "arm-flag" msgid "DSP extensions (the 'e' variant of the ARM9 CPUs, and all others above)" msgstr "" #. !/flag:java #: modules/devices/arm/arm_data.c:50 msgctxt "arm-flag" msgid "Jazelle (Java bytecode accelerator)" msgstr "" #. !/flag:iwmmxt #: modules/devices/arm/arm_data.c:51 msgctxt "arm-flag" msgid "SIMD instructions similar to Intel MMX" msgstr "" #. !/flag:crunch #: modules/devices/arm/arm_data.c:52 msgctxt "arm-flag" msgid "MaverickCrunch coprocessor (if kernel support enabled)" msgstr "" #. !/flag:thumbee #: modules/devices/arm/arm_data.c:53 msgctxt "arm-flag" msgid "ThumbEE" msgstr "" #. !/flag:neon #: modules/devices/arm/arm_data.c:54 msgctxt "arm-flag" msgid "Advanced SIMD/NEON on AArch32" msgstr "" #. !/flag:evtstrm #: modules/devices/arm/arm_data.c:55 msgctxt "arm-flag" msgid "Kernel event stream using generic architected timer" msgstr "" #. !/flag:vfpv3 #: modules/devices/arm/arm_data.c:56 msgctxt "arm-flag" msgid "VFP version 3" msgstr "" #. !/flag:vfpv3d16 #: modules/devices/arm/arm_data.c:57 msgctxt "arm-flag" msgid "VFP version 3 with 16 D-registers" msgstr "" #. !/flag:vfpv4 #: modules/devices/arm/arm_data.c:58 msgctxt "arm-flag" msgid "VFP version 4 with fast context switching" msgstr "" #. !/flag:vfpd32 #: modules/devices/arm/arm_data.c:59 msgctxt "arm-flag" msgid "VFP with 32 D-registers" msgstr "" #. !/flag:tls #: modules/devices/arm/arm_data.c:60 msgctxt "arm-flag" msgid "TLS register" msgstr "" #. !/flag:idiva #: modules/devices/arm/arm_data.c:61 msgctxt "arm-flag" msgid "SDIV and UDIV hardware division in ARM mode" msgstr "" #. !/flag:idivt #: modules/devices/arm/arm_data.c:62 msgctxt "arm-flag" msgid "SDIV and UDIV hardware division in Thumb mode" msgstr "" #. !/flag:lpae #: modules/devices/arm/arm_data.c:63 msgctxt "arm-flag" msgid "40-bit Large Physical Address Extension" msgstr "" #. !/flag:pmull #: modules/devices/arm/arm_data.c:65 msgctxt "arm-flag" msgid "64x64->128-bit F2m multiplication (arch>=8)" msgstr "" #. !/flag:aes #: modules/devices/arm/arm_data.c:66 msgctxt "arm-flag" msgid "Crypto:AES (arch>=8)" msgstr "" #. !/flag:sha1 #: modules/devices/arm/arm_data.c:67 msgctxt "arm-flag" msgid "Crypto:SHA1 (arch>=8)" msgstr "" #. !/flag:sha2 #: modules/devices/arm/arm_data.c:68 msgctxt "arm-flag" msgid "Crypto:SHA2 (arch>=8)" msgstr "" #. !/flag:crc32 #: modules/devices/arm/arm_data.c:69 msgctxt "arm-flag" msgid "CRC32 checksum instructions (arch>=8)" msgstr "" #. !/flag:fp #: modules/devices/arm/arm_data.c:71 msgctxt "arm-flag" msgid "Floating-point on AArch64 (arch>=8)" msgstr "" #. !/flag:asimd #: modules/devices/arm/arm_data.c:72 msgctxt "arm-flag" msgid "Advanced SIMD/NEON on AArch64 (arch>=8)" msgstr "" #. !/flag:atomics #: modules/devices/arm/arm_data.c:73 msgctxt "arm-flag" msgid "Atomic instructions on AArch64 (arch>=8)" msgstr "" #. !/flag:fphp #: modules/devices/arm/arm_data.c:74 msgctxt "arm-flag" msgid "Half precision floating point on AArch64 (arch>=8)" msgstr "" #. !/flag:asimdhp #: modules/devices/arm/arm_data.c:75 msgctxt "arm-flag" msgid "Advanced SIMD with BFloat16 on AArch64 (arch>=8)" msgstr "" #. !/flag:cpuid #: modules/devices/arm/arm_data.c:76 msgctxt "arm-flag" msgid "CPU features can be read on AArch64 (arch>=8)" msgstr "" #. !/flag:asimdrdm #: modules/devices/arm/arm_data.c:77 msgctxt "arm-flag" msgid "Advanced SIMD rounding Double MulAcc on AArch64 (arch>=8)" msgstr "" #. !/flag:jscvt #: modules/devices/arm/arm_data.c:78 msgctxt "arm-flag" msgid "JacaScript conversion on AArch64 (arch>=8)" msgstr "" #. !/flag:fcma #: modules/devices/arm/arm_data.c:79 msgctxt "arm-flag" msgid "Complex number SIMD on AArch64 (arch>=8)" msgstr "" #. !/flag:lrcpc #: modules/devices/arm/arm_data.c:80 msgctxt "arm-flag" msgid "Weak release consistency on AArch64 (arch>=8)" msgstr "" #. !/flag:dcpop #: modules/devices/arm/arm_data.c:81 msgctxt "arm-flag" msgid "Data cache clean to Point of Persistence on AArch64 (arch>=8)" msgstr "" #. !/flag:sha3 #: modules/devices/arm/arm_data.c:82 msgctxt "arm-flag" msgid "SHA-3 instructions on AArch64 (arch>=8)" msgstr "" #. !/flag:sm3 #: modules/devices/arm/arm_data.c:83 msgctxt "arm-flag" msgid "SM3 instructions on AArch64 (arch>=8)" msgstr "" #. !/flag:sm4 #: modules/devices/arm/arm_data.c:84 msgctxt "arm-flag" msgid "SM4 instructions on AArch64 (arch>=8)" msgstr "" #. !/flag:asimddp #: modules/devices/arm/arm_data.c:85 msgctxt "arm-flag" msgid "SIMD Dot Product on AArch64 (arch>=8)" msgstr "" #. !/flag:sha512 #: modules/devices/arm/arm_data.c:86 msgctxt "arm-flag" msgid "SHA512 instructions on AArch64 (arch>=8)" msgstr "" #. !/flag:sve #: modules/devices/arm/arm_data.c:87 msgctxt "arm-flag" msgid "Scalable Vector Extension on AArch64 (arch>=8)" msgstr "" #: modules/devices/arm/processor.c:143 msgid "ARM Processor" msgstr "" #: modules/devices/arm/processor.c:214 modules/devices/riscv/processor.c:211 #: modules/devices/x86/processor.c:609 msgid "Empty List" msgstr "" #: modules/devices/arm/processor.c:239 modules/devices/gpu.c:204 #: modules/devices/gpu.c:294 modules/devices/x86/processor.c:267 msgid "Clocks" msgstr "Órajelek" #: modules/devices/arm/processor.c:285 modules/devices/arm/processor.c:298 #: modules/devices/x86/processor.c:313 modules/devices/x86/processor.c:326 #, c-format msgid "%.2f-%.2f %s=%dx\n" msgstr "" #: modules/devices/arm/processor.c:341 msgid "Linux Name" msgstr "" #: modules/devices/arm/processor.c:342 msgid "Decoded Name" msgstr "" #: modules/devices/arm/processor.c:343 modules/network/net.c:476 msgid "Mode" msgstr "" #: modules/devices/arm/processor.c:349 msgid "ARM" msgstr "" #: modules/devices/arm/processor.c:350 msgid "Implementer" msgstr "" #: modules/devices/arm/processor.c:351 modules/devices/dmi_memory.c:874 msgid "Part" msgstr "" #: modules/devices/arm/processor.c:352 modules/devices/ia64/processor.c:162 #: modules/devices/parisc/processor.c:156 modules/devices/riscv/processor.c:243 msgid "Architecture" msgstr "" #: modules/devices/arm/processor.c:353 msgid "Variant" msgstr "" #: modules/devices/arm/processor.c:355 modules/devices/riscv/processor.c:250 #: modules/devices/sparc/processor.c:78 modules/devices/x86/processor.c:666 msgid "Capabilities" msgstr "" #: modules/devices/arm/processor.c:477 msgid "SOC/Package" msgstr "" #: modules/devices/arm/processor.c:481 modules/devices/x86/processor.c:752 msgid "Logical CPU Config" msgstr "" #: modules/devices/arm/processor.c:498 msgid "SOC/Package Information" msgstr "" #: modules/devices/battery.c:178 #, c-format msgid "" "\n" "[Battery: %s]\n" "State=%s (load: %s)\n" "Capacity=%s / %s (%.2f%%)\n" "Battery Technology=%s (%s)\n" "Manufacturer=%s\n" "Model Number=%s\n" "Serial Number=%s\n" msgstr "" "\n" "[Telep: %s]\n" "Állapot=%s (load: %s)\n" "Töltöttség=%s / %s (%.2f%%)\n" "Technológia=%s (%s)\n" "Gyártó=%s\n" "Típus=%s\n" "Sorozatszám=%s\n" #: modules/devices/battery.c:257 #, c-format msgid "" "\n" "[AC Power Supply: %s]\n" "Online=%s\n" "AC Power Type=%s\n" msgstr "" #: modules/devices/battery.c:279 #, c-format msgid "" "\n" "[Battery: %s]\n" "State=%s\n" "Capacity=%s / %s\n" "Battery Technology=%s\n" "Manufacturer=%s\n" "Model Number=%s\n" "Serial Number=%s\n" msgstr "" "\n" "[Telep: %s]\n" "Állapot=%s\n" "Töltöttség=%s / %s\n" "Technológia=%s\n" "Gyártó=%s\n" "Típus=%s\n" "Sorozatszám=%s\n" #: modules/devices/battery.c:372 #, c-format msgid "" "\n" "[Battery (APM)]\n" "Charge=%d%%\n" "Remaining Charge=%s of %s\n" "Using=%s\n" "APM driver version=%s\n" "APM BIOS version=%s\n" msgstr "" #: modules/devices/battery.c:384 #, c-format msgid "" "\n" "[Battery (APM)]\n" "Charge=%d%%\n" "Using=%s\n" "APM driver version=%s\n" "APM BIOS version=%s\n" msgstr "" #: modules/devices/battery.c:413 msgid "" "[No batteries]\n" "No batteries found on this system=\n" msgstr "" #: modules/devices.c:100 msgid "Graphics Processors" msgstr "" #: modules/devices.c:101 modules/devices/monitors.c:449 #: modules/devices/monitors.c:495 msgid "Monitors" msgstr "" #: modules/devices.c:102 modules/devices/pci.c:175 msgid "PCI Devices" msgstr "" #: modules/devices.c:103 modules/devices/usb.c:211 msgid "USB Devices" msgstr "" #: modules/devices.c:104 msgid "Firmware" msgstr "" #: modules/devices.c:106 msgid "Battery" msgstr "" #: modules/devices.c:107 msgid "Sensors" msgstr "" #: modules/devices.c:110 msgid "System DMI" msgstr "" #: modules/devices.c:111 msgid "Memory Devices" msgstr "" #: modules/devices.c:113 modules/devices.c:115 msgid "Device Tree" msgstr "" #: modules/devices.c:117 msgid "Resources" msgstr "" #: modules/devices.c:594 msgid "WSL2" msgstr "" #: modules/devices.c:841 msgid "Sensor" msgstr "" #: modules/devices.c:899 modules/devices/dmi_memory.c:806 msgid "Devices" msgstr "" #: modules/devices.c:911 msgid "Update PCI ID listing" msgstr "" #: modules/devices.c:916 msgid "Update USB ID listing" msgstr "" #: modules/devices.c:921 msgid "Update EDID vendor codes" msgstr "" #: modules/devices.c:926 msgid "Update IEEE OUI vendor codes" msgstr "" #: modules/devices.c:931 msgid "Update SD card manufacturer information" msgstr "" #: modules/devices.c:938 msgid "Update CPU flags database" msgstr "" #: modules/devices.c:973 msgid "Gathers information about hardware devices" msgstr "" #: modules/devices.c:994 msgid "A copy of pci.ids is not available on the system." msgstr "" #: modules/devices.c:997 msgid "A full pci.ids is not available on the system." msgstr "" #: modules/devices.c:1002 msgid "Resource information requires superuser privileges" msgstr "" #: modules/devices.c:1008 msgid "" "Any NVMe storage devices present are not listed.\n" "udisks2 is required for NVMe devices." msgstr "" #: modules/devices/devicetree.c:51 msgid "Properties" msgstr "Tulajdonságok" #: modules/devices/devicetree.c:52 msgid "Children" msgstr "" #: modules/devices/devicetree.c:88 msgid "Node" msgstr "" #: modules/devices/devicetree.c:89 msgid "Node Path" msgstr "" #: modules/devices/devicetree.c:90 msgid "Alias" msgstr "" #: modules/devices/devicetree.c:91 msgid "Symbol" msgstr "" #: modules/devices/devicetree.c:144 modules/devices/devicetree/pmac_data.c:79 msgid "Platform" msgstr "" #: modules/devices/devicetree.c:145 modules/devices/devicetree.c:210 #: modules/devices/gpu.c:299 msgid "Compatible" msgstr "" #: modules/devices/devicetree.c:146 msgid "GPU-compatible" msgstr "" #: modules/devices/devicetree.c:161 msgid "Raspberry Pi or Compatible" msgstr "" #: modules/devices/devicetree.c:163 modules/devices/devicetree.c:190 #: modules/devices/devicetree.c:209 modules/devices/devicetree/rpi_data.c:169 #: modules/devices/dmi.c:42 modules/devices/dmi.c:52 modules/devices/dmi.c:58 #: modules/devices/spd-decode.c:1383 modules/devices/usb.c:181 msgid "Serial Number" msgstr "Sorozatszám" #: modules/devices/devicetree.c:164 modules/devices/devicetree/rpi_data.c:166 msgid "RCode" msgstr "" #: modules/devices/devicetree.c:164 msgid "No revision code available; unable to lookup model details." msgstr "" #: modules/devices/devicetree.c:189 msgid "More" msgstr "" #: modules/devices/devicetree.c:270 msgid "Messages" msgstr "" #: modules/devices/devicetree/pmac_data.c:78 msgid "Apple Power Macintosh" msgstr "" #: modules/devices/devicetree/pmac_data.c:83 msgid "Detected as" msgstr "" #: modules/devices/devicetree/pmac_data.c:84 msgid "PMAC Flags" msgstr "" #: modules/devices/devicetree/pmac_data.c:85 msgid "L2 Cache" msgstr "" #: modules/devices/devicetree/pmac_data.c:86 msgid "PMAC Generation" msgstr "" #: modules/devices/devicetree/rpi_data.c:161 #: modules/devices/devicetree/rpi_data.c:162 msgid "Raspberry Pi" msgstr "" #: modules/devices/devicetree/rpi_data.c:162 msgid "Board Name" msgstr "" #: modules/devices/devicetree/rpi_data.c:163 msgid "PCB Revision" msgstr "" #: modules/devices/devicetree/rpi_data.c:164 msgid "Introduction" msgstr "" #: modules/devices/devicetree/rpi_data.c:165 modules/devices/usb.c:173 msgid "Manufacturer" msgstr "" #: modules/devices/devicetree/rpi_data.c:167 msgid "SOC (spec)" msgstr "" #: modules/devices/devicetree/rpi_data.c:168 msgid "Memory (spec)" msgstr "" #: modules/devices/devicetree/rpi_data.c:170 msgid "Permanent overvolt bit" msgstr "" #: modules/devices/devicetree/rpi_data.c:170 msgctxt "rpi-ov-bit" msgid "Set" msgstr "" #: modules/devices/devicetree/rpi_data.c:170 msgctxt "rpi-ov-bit" msgid "Not set" msgstr "" #: modules/devices/dmi.c:37 modules/devices/inputdevices.c:145 #: modules/devices/usb.c:170 msgid "Product" msgstr "" #: modules/devices/dmi.c:39 modules/devices/e2k/processor.c:360 #: modules/devices/ia64/processor.c:164 #: modules/devices/loongarch64/processor.c:95 modules/devices/sh/processor.c:86 msgid "Family" msgstr "Család" #: modules/devices/dmi.c:43 msgid "SKU" msgstr "" #: modules/devices/dmi.c:44 msgid "BIOS" msgstr "" #: modules/devices/dmi.c:53 modules/devices/dmi.c:59 msgid "Asset Tag" msgstr "" #: modules/devices/dmi.c:161 msgid "DMI Unavailable" msgstr "DMI nem elérhető" #: modules/devices/dmi.c:162 msgid "DMI is not available. Perhaps this platform does not provide DMI." msgstr "" "DMI nem elérhető. Lehetséges, hogy az alaplap nem közöl DMI adatokat." #: modules/devices/dmi_memory.c:620 modules/devices/dmi_memory.c:859 msgid "Memory Device List" msgstr "" #: modules/devices/dmi_memory.c:668 msgid "Memory Array" msgstr "" #: modules/devices/dmi_memory.c:669 modules/devices/x86/processor.c:714 msgid "DMI Handle" msgstr "" #: modules/devices/dmi_memory.c:670 modules/devices/dmi_memory.c:726 #: modules/devices/dmi_memory.c:764 modules/devices/dmi_memory.c:871 msgid "Locator" msgstr "" #: modules/devices/dmi_memory.c:671 msgid "Use" msgstr "" #: modules/devices/dmi_memory.c:672 msgid "Error Correction Type" msgstr "" #: modules/devices/dmi_memory.c:673 msgid "Size (Present / Max)" msgstr "" #: modules/devices/dmi_memory.c:674 msgid "Devices (Populated / Sockets)" msgstr "" #: modules/devices/dmi_memory.c:675 modules/devices/dmi_memory.c:807 msgid "Types Present" msgstr "" #: modules/devices/dmi_memory.c:676 msgid "ROM Size" msgstr "" #: modules/devices/dmi_memory.c:724 modules/devices/dmi_memory.c:762 msgid "Memory Socket" msgstr "" #: modules/devices/dmi_memory.c:725 modules/devices/dmi_memory.c:763 msgid "DMI Handles (Array, Socket)" msgstr "" #: modules/devices/dmi_memory.c:727 modules/devices/dmi_memory.c:765 msgid "Bank Locator" msgstr "" #: modules/devices/dmi_memory.c:728 modules/devices/spd-decode.c:1376 msgid "Form Factor" msgstr "" #: modules/devices/dmi_memory.c:732 modules/devices/spd-decode.c:1382 msgid "Part Number" msgstr "" #: modules/devices/dmi_memory.c:734 msgid "Rated Speed" msgstr "" #: modules/devices/dmi_memory.c:735 msgid "Configured Speed" msgstr "" #: modules/devices/dmi_memory.c:736 msgid "Data Width/Total Width" msgstr "" #: modules/devices/dmi_memory.c:737 msgid "Rank" msgstr "" #: modules/devices/dmi_memory.c:738 msgid "Minimum Voltage" msgstr "" #: modules/devices/dmi_memory.c:739 msgid "Maximum Voltage" msgstr "" #: modules/devices/dmi_memory.c:740 msgid "Configured Voltage" msgstr "" #: modules/devices/dmi_memory.c:766 modules/devices/dmi_memory.c:773 #: modules/devices/monitors.c:495 msgid "(Empty)" msgstr "" #: modules/devices/dmi_memory.c:804 msgid "Serial Presence Detect (SPD) Summary" msgstr "" #: modules/devices/dmi_memory.c:860 msgid "(Not available - See hint box below)" msgstr "" #: modules/devices/dmi_memory.c:932 msgid "No DMI available" msgstr "" #: modules/devices/dmi_memory.c:937 msgid "dmidecode package installed" msgstr "" #: modules/devices/dmi_memory.c:948 msgid "Memory Information requires more Setup:" msgstr "" #: modules/devices/dmi_memory.c:976 msgid "" "\"More often than not, information contained in the DMI tables is " "inaccurate,\n" "incomplete or simply wrong.\" -dmidecode manual page" msgstr "" #: modules/devices/e2k/processor.c:30 modules/devices/x86/processor.c:149 msgid "Cache information not available=\n" msgstr "" #: modules/devices/e2k/processor.c:36 modules/devices/x86/processor.c:155 #, c-format msgid "Level %d (%s)=%d-way set-associative, %d sets, %dKB size\n" msgstr "" #: modules/devices/e2k/processor.c:51 msgctxt "cache-type" msgid "Data" msgstr "" #: modules/devices/e2k/processor.c:52 msgctxt "cache-type" msgid "Instruction" msgstr "" #: modules/devices/e2k/processor.c:53 msgctxt "cache-type" msgid "Unified" msgstr "" #: modules/devices/e2k/processor.c:157 modules/devices/x86/processor.c:366 msgid "Caches" msgstr "Gyorsítótárak" #: modules/devices/e2k/processor.c:208 modules/devices/e2k/processor.c:225 #: modules/devices/x86/processor.c:417 modules/devices/x86/processor.c:434 #, c-format msgid "Level %d (%s)#%d=%dx %dKB (%dKB), %d-way set-associative, %d sets\n" msgstr "" #: modules/devices/firmware.c:36 msgid "Device cannot be removed easily" msgstr "" #: modules/devices/firmware.c:37 msgid "Device is updatable in this or any other mode" msgstr "" #: modules/devices/firmware.c:38 msgid "Update can only be done from offline mode" msgstr "" #: modules/devices/firmware.c:39 msgid "Requires AC power" msgstr "" #: modules/devices/firmware.c:40 msgid "Is locked and can be unlocked" msgstr "" #: modules/devices/firmware.c:41 msgid "Is found in current metadata" msgstr "" #: modules/devices/firmware.c:42 msgid "Requires a bootloader mode to be manually enabled by the user" msgstr "" #: modules/devices/firmware.c:43 msgid "Has been registered with other plugins" msgstr "" #: modules/devices/firmware.c:44 msgid "Requires a reboot to apply firmware or to reload hardware" msgstr "" #: modules/devices/firmware.c:45 msgid "Requires system shutdown to apply firmware" msgstr "" #: modules/devices/firmware.c:46 msgid "Has been reported to a metadata server" msgstr "" #: modules/devices/firmware.c:47 msgid "User has been notified" msgstr "" #: modules/devices/firmware.c:48 msgid "Always use the runtime version rather than the bootloader" msgstr "" #: modules/devices/firmware.c:49 msgid "Install composite firmware on the parent before the child" msgstr "" #: modules/devices/firmware.c:50 msgid "Is currently in bootloader mode" msgstr "" #: modules/devices/firmware.c:51 msgid "The hardware is waiting to be replugged" msgstr "" #: modules/devices/firmware.c:52 msgid "Ignore validation safety checks when flashing this device" msgstr "" #: modules/devices/firmware.c:53 msgid "Requires the update to be retried with a new plugin" msgstr "" #: modules/devices/firmware.c:54 msgid "Do not add instance IDs from the device baseclass" msgstr "" #: modules/devices/firmware.c:55 msgid "Device update needs to be separately activated" msgstr "" #: modules/devices/firmware.c:56 msgid "" "Ensure the version is a valid semantic version, e.g. numbers separated with " "dots" msgstr "" #: modules/devices/firmware.c:57 msgid "Extra metadata can be exposed about this device" msgstr "" #: modules/devices/firmware.c:74 msgid "DeviceId" msgstr "" #: modules/devices/firmware.c:74 modules/devices/firmware.c:187 msgid "Guid" msgstr "" #: modules/devices/firmware.c:74 msgid "Plugin" msgstr "" #: modules/devices/firmware.c:74 modules/devices/firmware.c:205 #: modules/network.c:381 msgid "Flags" msgstr "" #: modules/devices/firmware.c:75 msgid "VendorId" msgstr "" #: modules/devices/firmware.c:75 msgid "VersionBootloader" msgstr "" #: modules/devices/firmware.c:76 modules/devices/firmware.c:179 msgid "Icon" msgstr "" #: modules/devices/firmware.c:76 msgid "InstallDuration" msgstr "" #: modules/devices/firmware.c:76 modules/devices/firmware.c:197 msgid "Created" msgstr "" #: modules/devices/firmware.c:244 msgid "Firmware List" msgstr "" #: modules/devices/firmware.c:257 msgid "Requires the fwupd daemon." msgstr "" #: modules/devices/gpu.c:94 modules/devices/pci.c:111 #: modules/devices/storage.c:58 msgid "SVendor" msgstr "" #: modules/devices/gpu.c:95 modules/devices/pci.c:112 #: modules/devices/storage.c:59 msgid "SDevice" msgstr "" #: modules/devices/gpu.c:103 modules/devices/pci.c:122 #: modules/devices/storage.c:68 msgid "PCI Express" msgstr "" #: modules/devices/gpu.c:104 modules/devices/pci.c:124 #: modules/devices/storage.c:70 msgid "Maximum Link Width" msgstr "" #: modules/devices/gpu.c:105 modules/devices/pci.c:126 #: modules/devices/storage.c:71 msgid "Maximum Link Speed" msgstr "" #: modules/devices/gpu.c:105 modules/devices/pci.c:125 #: modules/devices/pci.c:126 modules/devices/storage.c:71 msgid "GT/s" msgstr "" #: modules/devices/gpu.c:115 msgid "NVIDIA" msgstr "" #: modules/devices/gpu.c:117 msgid "BIOS Version" msgstr "" #: modules/devices/gpu.c:118 msgid "UUID" msgstr "" #: modules/devices/gpu.c:197 modules/devices/gpu.c:289 #: modules/devices/inputdevices.c:140 modules/devices/pci.c:143 #: modules/devices/usb.c:169 msgid "Device Information" msgstr "Eszköz tulajdonságai" #: modules/devices/gpu.c:199 modules/devices/gpu.c:291 #: modules/devices/storage.c:69 msgid "Location" msgstr "" #: modules/devices/gpu.c:200 msgid "DRM Device" msgstr "" #: modules/devices/gpu.c:201 modules/devices/pci.c:144 #: modules/devices/usb.c:136 modules/devices/usb.c:177 msgid "Class" msgstr "Osztály" #: modules/devices/gpu.c:210 modules/devices/pci.c:149 msgid "In Use" msgstr "Használatban" #: modules/devices/gpu.c:245 msgid "Unknown integrated GPU" msgstr "Ismeretlen integrált grafikus vezérlő" #: modules/devices/gpu.c:253 msgid "clock-frequency property" msgstr "" #: modules/devices/gpu.c:254 msgid "Operating Points (OPPv1)" msgstr "" #: modules/devices/gpu.c:255 msgid "Operating Points (OPPv2)" msgstr "" #: modules/devices/gpu.c:297 msgid "Device Tree Node" msgstr "" #: modules/devices/gpu.c:300 modules/devices/monitors.c:475 #: modules/network/net.c:477 msgid "Status" msgstr "" #: modules/devices/gpu.c:317 msgid "GPUs" msgstr "" #: modules/devices/gpu.c:341 msgid "No GPU devices found" msgstr "Nem található dedikált grafikus vezérlő" #: modules/devices/ia64/processor.c:108 msgid "IA64 Processor" msgstr "" #: modules/devices/ia64/processor.c:163 msgid "Architecture Revision" msgstr "" #: modules/devices/ia64/processor.c:170 msgid "CPU regs" msgstr "" #: modules/devices/ia64/processor.c:171 #: modules/devices/loongarch64/processor.c:100 msgid "Features" msgstr "" #: modules/devices/inputdevices.c:143 modules/devices/pci.c:153 #: modules/devices/usb.c:183 msgid "Bus" msgstr "Busz" #: modules/devices/inputdevices.c:149 msgid "Connected to" msgstr "" #: modules/devices/inputdevices.c:153 msgid "InfraRed port" msgstr "" #: modules/devices/loongarch64/processor.c:94 #: modules/devices/mips/processor.c:76 msgid "System Type" msgstr "" #: modules/devices/loongarch64/processor.c:99 msgid "BogoMIPS" msgstr "" #: modules/devices/m68k/processor.c:85 modules/devices/riscv/processor.c:245 msgid "MMU" msgstr "" #: modules/devices/m68k/processor.c:86 modules/devices/sparc/processor.c:76 msgid "FPU" msgstr "" #: modules/devices/m68k/processor.c:90 msgid "Calibration" msgstr "" #: modules/devices/monitors.c:30 modules/devices/monitors.c:257 #: modules/devices/monitors.c:350 modules/devices/spd-decode.c:699 msgid "(Unspecified)" msgstr "" #: modules/devices/monitors.c:232 #, c-format msgid "Week %d of %d" msgstr "%d. hét, %d" #: modules/devices/monitors.c:242 msgid "Ok" msgstr "Rendben" #: modules/devices/monitors.c:242 msgid "Fail" msgstr "" #: modules/devices/monitors.c:270 modules/devices/monitors.c:278 #: modules/devices/monitors.c:286 modules/devices/monitors.c:297 #: modules/devices/monitors.c:305 modules/devices/monitors.c:312 #: modules/devices/monitors.c:320 modules/devices/monitors.c:328 #: modules/devices/monitors.c:336 modules/devices/monitors.c:342 msgid "(Empty List)" msgstr "" #: modules/devices/monitors.c:394 msgid "Signal Type" msgstr "" #: modules/devices/monitors.c:394 msgid "Digital" msgstr "Digitális" #: modules/devices/monitors.c:394 msgid "Analog" msgstr "Analóg" #: modules/devices/monitors.c:395 modules/devices/usb.c:135 #: modules/network.c:311 modules/network.c:364 modules/network.c:381 msgid "Interface" msgstr "" #: modules/devices/monitors.c:396 msgid "Bits per Color Channel" msgstr "" #: modules/devices/monitors.c:397 msgid "Speaker Allocation" msgstr "" #: modules/devices/monitors.c:398 msgid "Output (Max)" msgstr "" #: modules/devices/monitors.c:401 msgid "EDID Device" msgstr "" #: modules/devices/monitors.c:405 msgid "Serial" msgstr "" #: modules/devices/monitors.c:406 msgid "Manufacture Date" msgstr "" #: modules/devices/monitors.c:407 msgid "EDID Meta" msgstr "" #: modules/devices/monitors.c:408 msgid "Data Size" msgstr "" #: modules/devices/monitors.c:408 msgid "bytes" msgstr "" #: modules/devices/monitors.c:410 msgid "Extension Blocks" msgstr "" #: modules/devices/monitors.c:411 msgid "Extended to" msgstr "" #: modules/devices/monitors.c:412 msgid "Checksum" msgstr "" #: modules/devices/monitors.c:413 msgid "EDID Descriptors" msgstr "" #: modules/devices/monitors.c:414 msgid "Detailed Timing Descriptors (DTD)" msgstr "" #: modules/devices/monitors.c:415 msgid "Established Timings Bitmap (ETB)" msgstr "" #: modules/devices/monitors.c:416 msgid "Standard Timings (STD)" msgstr "" #: modules/devices/monitors.c:417 msgid "E-EDID Extension Blocks" msgstr "" #: modules/devices/monitors.c:418 msgid "EIA/CEA-861 Data Blocks" msgstr "" #: modules/devices/monitors.c:419 msgid "EIA/CEA-861 Short Audio Descriptors" msgstr "" #: modules/devices/monitors.c:420 msgid "EIA/CEA-861 Short Video Descriptors" msgstr "" #: modules/devices/monitors.c:421 msgid "DisplayID Timings" msgstr "" #: modules/devices/monitors.c:422 msgid "DisplayID Strings" msgstr "" #: modules/devices/monitors.c:423 msgid "Hex Dump" msgstr "" #: modules/devices/monitors.c:423 msgid "Data" msgstr "" #: modules/devices/monitors.c:473 modules/devices/monitors.c:504 #: modules/devices/pci.c:151 modules/devices/usb.c:182 msgid "Connection" msgstr "Csatlakozó" #: modules/devices/monitors.c:474 msgid "DRM" msgstr "" #: modules/devices/parisc/processor.c:107 msgid "PA-RISC Processor" msgstr "" #: modules/devices/parisc/processor.c:161 msgid "HVersion" msgstr "" #: modules/devices/parisc/processor.c:162 msgid "SVersion" msgstr "" #: modules/devices/pci.c:123 msgid "Link Width" msgstr "" #: modules/devices/pci.c:125 msgid "Link Speed" msgstr "" #: modules/devices/pci.c:152 msgid "Domain" msgstr "" #: modules/devices/pci.c:155 msgid "Function" msgstr "" #: modules/devices/pci.c:196 msgid "No PCI devices found" msgstr "Nem található PCI eszköz" #: modules/devices/ppc/processor.c:117 msgid "POWER Processor" msgstr "" #: modules/devices/printers.c:88 msgid "⚬ Can do black and white printing=\n" msgstr "" #: modules/devices/printers.c:90 msgid "⚬ Can do color printing=\n" msgstr "" #: modules/devices/printers.c:92 msgid "⚬ Can do duplexing=\n" msgstr "" #: modules/devices/printers.c:94 msgid "⚬ Can do staple output=\n" msgstr "" #: modules/devices/printers.c:96 msgid "⚬ Can do copies=\n" msgstr "" #: modules/devices/printers.c:98 msgid "⚬ Can collate copies=\n" msgstr "" #: modules/devices/printers.c:100 msgid "⚬ Printer is rejecting jobs=\n" msgstr "" #: modules/devices/printers.c:102 msgid "⚬ Printer was automatically discovered and added=\n" msgstr "" #: modules/devices/printers.c:117 msgid "Idle" msgstr "" #: modules/devices/printers.c:119 msgid "Printing a Job" msgstr "" #: modules/devices/printers.c:121 msgid "Stopped" msgstr "" #: modules/devices/printers.c:200 msgid "" "[Printers]\n" "No suitable CUPS library found=" msgstr "" #: modules/devices/printers.c:213 msgid "[Printers (CUPS)]\n" msgstr "" #: modules/devices/printers.c:277 msgid "" "[Printers]\n" "No printers found=\n" msgstr "" #: modules/devices/riscv/processor.c:244 msgid "uarch" msgstr "" #: modules/devices/riscv/riscv_data.c:37 msgctxt "rv-ext" msgid "RISC-V 32-bit" msgstr "" #: modules/devices/riscv/riscv_data.c:38 msgctxt "rv-ext" msgid "RISC-V 64-bit" msgstr "" #: modules/devices/riscv/riscv_data.c:39 msgctxt "rv-ext" msgid "RISC-V 128-bit" msgstr "" #: modules/devices/riscv/riscv_data.c:40 msgctxt "rv-ext" msgid "Base embedded integer instructions (15 registers)" msgstr "" #: modules/devices/riscv/riscv_data.c:41 msgctxt "rv-ext" msgid "Base integer instructions (31 registers)" msgstr "" #: modules/devices/riscv/riscv_data.c:42 msgctxt "rv-ext" msgid "Hardware integer multiply and divide" msgstr "" #: modules/devices/riscv/riscv_data.c:43 msgctxt "rv-ext" msgid "Atomic memory operations" msgstr "" #: modules/devices/riscv/riscv_data.c:44 msgctxt "rv-ext" msgid "Compressed 16-bit instructions" msgstr "" #: modules/devices/riscv/riscv_data.c:45 msgctxt "rv-ext" msgid "Floating-point instructions, single-precision" msgstr "" #: modules/devices/riscv/riscv_data.c:46 msgctxt "rv-ext" msgid "Floating-point instructions, double-precision" msgstr "" #: modules/devices/riscv/riscv_data.c:47 msgctxt "rv-ext" msgid "Floating-point instructions, quad-precision" msgstr "" #: modules/devices/riscv/riscv_data.c:48 msgctxt "rv-ext" msgid "Bit manipulation instructions" msgstr "" #: modules/devices/riscv/riscv_data.c:49 msgctxt "rv-ext" msgid "Vector operations" msgstr "" #: modules/devices/riscv/riscv_data.c:50 msgctxt "rv-ext" msgid "Scalar Cryptography" msgstr "" #: modules/devices/riscv/riscv_data.c:51 msgctxt "rv-ext" msgid "Base Counters and Timers" msgstr "" #: modules/devices/riscv/riscv_data.c:52 msgctxt "rv-ext" msgid "Control and Status Register" msgstr "" #: modules/devices/riscv/riscv_data.c:53 msgctxt "rv-ext" msgid "Instruction-Fetch Fence" msgstr "" #: modules/devices/riscv/riscv_data.c:54 msgctxt "rv-ext" msgid "Hardware performance counters" msgstr "" #: modules/devices/riscv/riscv_data.c:55 msgctxt "rv-ext" msgid "Accell Index addresses" msgstr "" #: modules/devices/riscv/riscv_data.c:56 msgctxt "rv-ext" msgid "Basic bit-manipulation" msgstr "" #: modules/devices/riscv/riscv_data.c:57 msgctxt "rv-ext" msgid "Supervisor-level Instructions" msgstr "" #: modules/devices/riscv/riscv_data.c:58 msgctxt "rv-ext" msgid "User Mode" msgstr "" #: modules/devices/riscv/riscv_data.c:59 msgctxt "rv-ext" msgid "Transactional memory" msgstr "" #: modules/devices/riscv/riscv_data.c:60 msgctxt "rv-ext" msgid "Packed SIMD instructions" msgstr "" #: modules/devices/riscv/riscv_data.c:61 msgctxt "rv-ext" msgid "Decimal floating-point instructions" msgstr "" #: modules/devices/riscv/riscv_data.c:62 msgctxt "rv-ext" msgid "Dynamically translated languages" msgstr "" #: modules/devices/riscv/riscv_data.c:63 msgctxt "rv-ext" msgid "User-level interrupts" msgstr "" #: modules/devices/s390/processor.c:92 msgid "S390 Processor" msgstr "" #: modules/devices/s390/processor.c:133 msgid "ID String" msgstr "" #: modules/devices/sh/processor.c:55 msgid "SuperH Processor" msgstr "" #: modules/devices/sh/processor.c:88 msgid "Bus Frequency" msgstr "" #: modules/devices/sh/processor.c:89 msgid "Module Frequency" msgstr "" #: modules/devices/spd-decode.c:128 modules/devices/spd-decode.c:144 msgid "Unspecified" msgstr "" #: modules/devices/spd-decode.c:130 modules/devices/spd-decode.c:146 msgid "Invalid" msgstr "" #: modules/devices/spd-decode.c:358 msgid "Row address bits" msgstr "" #: modules/devices/spd-decode.c:359 msgid "Column address bits" msgstr "" #: modules/devices/spd-decode.c:360 msgid "Number of rows" msgstr "" #: modules/devices/spd-decode.c:361 msgid "Data width" msgstr "" #: modules/devices/spd-decode.c:362 msgid "Interface signal levels" msgstr "" #: modules/devices/spd-decode.c:363 msgid "Configuration type" msgstr "" #: modules/devices/spd-decode.c:364 msgid "Refresh" msgstr "" #: modules/devices/spd-decode.c:365 modules/devices/spd-decode.c:442 #: modules/devices/spd-decode.c:721 msgid "Timings" msgstr "" #: modules/devices/spd-decode.c:589 modules/devices/spd-decode.c:858 #: modules/devices/spd-decode.c:899 modules/devices/spd-decode.c:1111 #: modules/devices/x86/processor.c:716 msgid "Voltage" msgstr "" #: modules/devices/spd-decode.c:590 modules/devices/spd-decode.c:901 #: modules/devices/spd-decode.c:1113 msgid "JEDEC Timings" msgstr "" #: modules/devices/spd-decode.c:697 msgid "Ranks" msgstr "" #: modules/devices/spd-decode.c:698 msgid "IO Pins per Chip" msgstr "" #: modules/devices/spd-decode.c:699 msgid "Die count" msgstr "" #: modules/devices/spd-decode.c:700 msgid "Thermal Sensor" msgstr "" #: modules/devices/spd-decode.c:700 msgid "Present" msgstr "" #: modules/devices/spd-decode.c:700 msgid "Not present" msgstr "" #: modules/devices/spd-decode.c:701 msgid "Supported Voltages" msgstr "" #: modules/devices/spd-decode.c:705 msgid "Supported CAS Latencies" msgstr "" #: modules/devices/spd-decode.c:856 msgid "XMP Profile" msgstr "" #: modules/devices/spd-decode.c:857 modules/devices/usb.c:176 #: modules/network/net.c:438 msgid "Speed" msgstr "Sebesség" #: modules/devices/spd-decode.c:859 msgid "XMP Timings" msgstr "" #: modules/devices/spd-decode.c:900 msgid "XMP" msgstr "" #: modules/devices/spd-decode.c:1372 msgid "Serial Presence Detect (SPD)" msgstr "" #: modules/devices/spd-decode.c:1375 msgid "SPD Revision" msgstr "" #: modules/devices/spd-decode.c:1378 msgid "Module Vendor" msgstr "" #: modules/devices/spd-decode.c:1380 msgid "DRAM Vendor" msgstr "" #: modules/devices/spd-decode.c:1385 msgid "Manufacturing Date (Year / Week)" msgstr "" #: modules/devices/storage.c:46 modules/devices/storage.c:55 msgid "NVMe Controller" msgstr "NVMe-vezérlő" #: modules/devices/storage.c:138 msgid "Read Error Rate" msgstr "" #: modules/devices/storage.c:139 msgid "Throughput Performance" msgstr "" #: modules/devices/storage.c:140 msgid "Spin-Up Time" msgstr "" #: modules/devices/storage.c:141 msgid "Start/Stop Count" msgstr "" #: modules/devices/storage.c:142 msgid "Reallocated Sector Count" msgstr "" #: modules/devices/storage.c:143 msgid "Read Channel Margin" msgstr "" #: modules/devices/storage.c:144 msgid "Seek Error Rate" msgstr "" #: modules/devices/storage.c:145 msgid "Seek Timer Performance" msgstr "" #: modules/devices/storage.c:146 modules/devices/storage.c:185 msgid "Power-On Hours" msgstr "" #: modules/devices/storage.c:147 msgid "Spin Retry Count" msgstr "" #: modules/devices/storage.c:148 msgid "Calibration Retry Count" msgstr "" #: modules/devices/storage.c:149 msgid "Power Cycle Count" msgstr "" #: modules/devices/storage.c:150 modules/devices/storage.c:167 msgid "Soft Read Error Rate" msgstr "" #: modules/devices/storage.c:151 msgid "Runtime Bad Block" msgstr "" #: modules/devices/storage.c:152 msgid "End-to-End error" msgstr "" #: modules/devices/storage.c:153 msgid "Reported Uncorrectable Errors" msgstr "" #: modules/devices/storage.c:154 msgid "Command Timeout" msgstr "" #: modules/devices/storage.c:155 msgid "High Fly Writes" msgstr "" #: modules/devices/storage.c:156 msgid "Airflow Temperature" msgstr "" #: modules/devices/storage.c:157 msgid "G-sense Error Rate" msgstr "" #: modules/devices/storage.c:158 msgid "Power-off Retract Count" msgstr "" #: modules/devices/storage.c:159 msgid "Load Cycle Count" msgstr "" #: modules/devices/storage.c:160 modules/devices/storage.c:183 msgid "Temperature" msgstr "Hőmérséklet" #: modules/devices/storage.c:161 msgid "Hardware ECC Recovered" msgstr "" #: modules/devices/storage.c:162 msgid "Reallocation Event Count" msgstr "" #: modules/devices/storage.c:163 msgid "Current Pending Sector Count" msgstr "" #: modules/devices/storage.c:164 msgid "Uncorrectable Sector Count" msgstr "" #: modules/devices/storage.c:165 msgid "UltraDMA CRC Error Count" msgstr "" #: modules/devices/storage.c:166 msgid "Multi-Zone Error Rate" msgstr "" #: modules/devices/storage.c:168 msgid "Run Out Cancel" msgstr "" #: modules/devices/storage.c:169 msgid "Flying Height" msgstr "" #: modules/devices/storage.c:170 msgid "Spin High Current" msgstr "" #: modules/devices/storage.c:171 msgid "Spin Buzz" msgstr "" #: modules/devices/storage.c:172 msgid "Offline Seek Performance" msgstr "" #: modules/devices/storage.c:173 msgid "Disk Shift" msgstr "" #: modules/devices/storage.c:174 msgid "G-Sense Error Rate" msgstr "" #: modules/devices/storage.c:175 msgid "Loaded Hours" msgstr "" #: modules/devices/storage.c:176 msgid "Load/Unload Retry Count" msgstr "" #: modules/devices/storage.c:177 msgid "Load Friction" msgstr "" #: modules/devices/storage.c:178 msgid "Load/Unload Cycle Count" msgstr "" #: modules/devices/storage.c:179 msgid "Load-in time" msgstr "" #: modules/devices/storage.c:180 msgid "Torque Amplification Count" msgstr "" #: modules/devices/storage.c:181 msgid "Power-Off Retract Count" msgstr "" #: modules/devices/storage.c:182 msgid "GMR Head Amplitude" msgstr "" #: modules/devices/storage.c:184 msgid "Endurance Remaining" msgstr "" #: modules/devices/storage.c:186 msgid "Good Block Rate" msgstr "" #: modules/devices/storage.c:187 msgid "Head Flying Hours" msgstr "" #: modules/devices/storage.c:188 msgid "Read Error Retry Rate" msgstr "" #: modules/devices/storage.c:189 msgid "Total LBAs Written" msgstr "" #: modules/devices/storage.c:190 msgid "Total LBAs Read" msgstr "" #: modules/devices/storage.c:191 msgid "Wear leveling Count" msgstr "" #: modules/devices/storage.c:192 msgid "Total Used Reserved Block Count" msgstr "" #: modules/devices/storage.c:193 msgid "Total Program Fail Count" msgstr "" #: modules/devices/storage.c:194 msgid "Total Erase Fail Count" msgstr "" #: modules/devices/storage.c:195 msgid "Available Reserved Space" msgstr "" #: modules/devices/storage.c:196 msgid "Program Fail Count" msgstr "" #: modules/devices/storage.c:197 msgid "Erase Fail Count" msgstr "" #: modules/devices/storage.c:198 msgid "TA Counter Increased" msgstr "" #: modules/devices/storage.c:199 msgid "Total Unused Reserved Block Count" msgstr "" #: modules/devices/storage.c:204 msgid "" "\n" "[UDisks2]\n" msgstr "" #: modules/devices/storage.c:257 msgid "Removable" msgstr "" #: modules/devices/storage.c:257 msgid "Fixed" msgstr "" #: modules/devices/storage.c:260 msgid "Ejectable" msgstr "" #: modules/devices/storage.c:263 msgid "Self-monitoring (S.M.A.R.T.)" msgstr "Önellenőrzés (S.M.A.R.T.)" #: modules/devices/storage.c:266 modules/devices/x86/processor.c:664 msgid "Power Management" msgstr "" #: modules/devices/storage.c:269 msgid "Advanced Power Management" msgstr "" #: modules/devices/storage.c:272 msgid "Automatic Acoustic Management" msgstr "" #: modules/devices/storage.c:275 #, c-format msgid "" "[Drive Information]\n" "Model=%s\n" msgstr "" #: modules/devices/storage.c:285 #, c-format msgid "" "Revision=%s\n" "Block Device=%s\n" "Serial=%s\n" "Size=%s\n" "Features=%s\n" msgstr "" #: modules/devices/storage.c:300 #, c-format msgid "Rotation Rate=%d RPM\n" msgstr "" #: modules/devices/storage.c:303 #, c-format msgid "" "Media=%s\n" "Media compatibility=%s\n" msgstr "" #: modules/devices/storage.c:310 #, c-format msgid "Connection bus=%s\n" msgstr "" #: modules/devices/storage.c:322 msgid "WWN" msgstr "" #: modules/devices/storage.c:323 msgid "EUI " msgstr "" #: modules/devices/storage.c:328 msgid "WWN / EUI" msgstr "" #: modules/devices/storage.c:332 #, c-format msgid "$^$%s=[%s] %s\n" msgstr "" #: modules/devices/storage.c:334 msgid "IEEE OUI" msgstr "" #: modules/devices/storage.c:346 msgid "" "[Self-monitoring (S.M.A.R.T.)]\n" "Status=%s\n" "Bad Sectors=%" msgstr "" #: modules/devices/storage.c:352 msgid "Failing" msgstr "" #: modules/devices/storage.c:352 msgid "OK" msgstr "Rendben" #: modules/devices/storage.c:358 msgid "" "[S.M.A.R.T. Attributes]\n" "Attribute=Value / Normalized / Worst / Threshold\n" msgstr "" #: modules/devices/storage.c:381 msgid "%" msgid_plural "%" msgstr[0] "" msgstr[1] "" #: modules/devices/storage.c:419 #, c-format msgid "(%d) %s=%s\n" msgstr "" #: modules/devices/storage.c:428 #, c-format msgid "" "[Partition table]\n" "Type=%s\n" msgstr "" #: modules/devices/storage.c:447 #, c-format msgid "Partition %s=%s\n" msgstr "" #: modules/devices/storage.c:496 msgid "" "\n" "[SCSI Disks]\n" msgstr "" #: modules/devices/storage.c:567 modules/devices/storage.c:773 #, c-format msgid "" "[Device Information]\n" "Model=%s\n" msgstr "" #: modules/devices/storage.c:574 #, c-format msgid "" "Type=%s\n" "Revision=%s\n" "[SCSI Controller]\n" "Controller=scsi%d\n" "Channel=%d\n" "ID=%d\n" "LUN=%d\n" msgstr "" #: modules/devices/storage.c:621 msgid "" "\n" "[IDE Disks]\n" msgstr "" #: modules/devices/storage.c:707 #, c-format msgid "Driver=%s\n" msgstr "" #: modules/devices/storage.c:779 #, c-format msgid "" "Device Name=hd%c\n" "Media=%s\n" "Cache=%dkb\n" msgstr "" #: modules/devices/storage.c:789 #, c-format msgid "" "[Geometry]\n" "Physical=%s\n" "Logical=%s\n" msgstr "" #: modules/devices/storage.c:799 #, c-format msgid "" "[Capabilities]\n" "%s" msgstr "" #: modules/devices/storage.c:806 #, c-format msgid "" "[Speeds]\n" "%s" msgstr "" #: modules/devices/usb.c:137 modules/devices/usb.c:178 msgid "Sub-class" msgstr "" #: modules/devices/usb.c:138 modules/devices/usb.c:179 modules/network.c:348 msgid "Protocol" msgstr "" #: modules/devices/usb.c:146 modules/network/net.c:474 msgid "Mb/s" msgstr "" #: modules/devices/usb.c:174 msgid "Max Current" msgstr "" #: modules/devices/usb.c:174 msgid "mA" msgstr "" #: modules/devices/usb.c:175 msgid "USB Version" msgstr "" #: modules/devices/usb.c:180 msgid "Device Version" msgstr "" #: modules/devices/usb.c:222 msgid "No USB devices found." msgstr "Nem található USB eszköz" #: modules/devices/x86/processor.c:648 msgid "Model Name" msgstr "" #: modules/devices/x86/processor.c:649 msgid "Family, model, stepping" msgstr "" #: modules/devices/x86/processor.c:655 msgid "Microcode Version" msgstr "" #: modules/devices/x86/processor.c:656 msgid "Configuration" msgstr "" #: modules/devices/x86/processor.c:657 msgid "Cache Size" msgstr "" #: modules/devices/x86/processor.c:657 msgid "kb" msgstr "" #: modules/devices/x86/processor.c:665 msgid "Bug Workarounds" msgstr "" #: modules/devices/x86/processor.c:692 msgid "Socket Information" msgstr "" #: modules/devices/x86/processor.c:695 msgid "(Not available; Perhaps try running hardinfo2 as root.)" msgstr "" #: modules/devices/x86/processor.c:713 msgid "CPU Socket" msgstr "" #: modules/devices/x86/processor.c:717 msgid "External Clock" msgstr "" #: modules/devices/x86/processor.c:718 msgid "Max Frequency" msgstr "" #: modules/devices/x86/processor.c:749 msgid "Package Information" msgstr "" #: modules/devices/x86/processor.c:811 msgid "Socket:Core" msgstr "" #. !/flag:fpu #: modules/devices/x86/x86_data.c:48 msgctxt "x86-flag" msgid "Onboard FPU (floating point support)" msgstr "" #. !/flag:vme #: modules/devices/x86/x86_data.c:49 msgctxt "x86-flag" msgid "Virtual 8086 mode enhancements" msgstr "" #. !/flag:de #: modules/devices/x86/x86_data.c:50 msgctxt "x86-flag" msgid "Debugging Extensions (CR4.DE)" msgstr "" #. !/flag:pse #: modules/devices/x86/x86_data.c:51 msgctxt "x86-flag" msgid "Page Size Extensions (4MB memory pages)" msgstr "" #. !/flag:tsc #: modules/devices/x86/x86_data.c:52 msgctxt "x86-flag" msgid "Time Stamp Counter (RDTSC)" msgstr "" #. !/flag:msr #: modules/devices/x86/x86_data.c:53 msgctxt "x86-flag" msgid "Model-Specific Registers (RDMSR, WRMSR)" msgstr "" #. !/flag:pae #: modules/devices/x86/x86_data.c:54 msgctxt "x86-flag" msgid "Physical Address Extensions (support for more than 4GB of RAM)" msgstr "" #. !/flag:mce #: modules/devices/x86/x86_data.c:55 msgctxt "x86-flag" msgid "Machine Check Exception" msgstr "" #. !/flag:cx8 #: modules/devices/x86/x86_data.c:56 msgctxt "x86-flag" msgid "CMPXCHG8 instruction (64-bit compare-and-swap)" msgstr "" #. !/flag:apic #: modules/devices/x86/x86_data.c:57 msgctxt "x86-flag" msgid "Onboard APIC" msgstr "" #. !/flag:sep #: modules/devices/x86/x86_data.c:58 msgctxt "x86-flag" msgid "SYSENTER/SYSEXIT" msgstr "" #. !/flag:mtrr #: modules/devices/x86/x86_data.c:59 msgctxt "x86-flag" msgid "Memory Type Range Registers" msgstr "" #. !/flag:pge #: modules/devices/x86/x86_data.c:60 msgctxt "x86-flag" msgid "Page Global Enable (global bit in PDEs and PTEs)" msgstr "" #. !/flag:mca #: modules/devices/x86/x86_data.c:61 msgctxt "x86-flag" msgid "Machine Check Architecture" msgstr "" #. !/flag:cmov #: modules/devices/x86/x86_data.c:62 msgctxt "x86-flag" msgid "CMOV instructions (conditional move) (also FCMOV)" msgstr "" #. !/flag:pat #: modules/devices/x86/x86_data.c:63 msgctxt "x86-flag" msgid "Page Attribute Table" msgstr "" #. !/flag:pse36 #: modules/devices/x86/x86_data.c:64 msgctxt "x86-flag" msgid "36-bit PSEs (huge pages)" msgstr "" #. !/flag:pn #: modules/devices/x86/x86_data.c:65 msgctxt "x86-flag" msgid "Processor serial number" msgstr "" #. !/flag:clflush #: modules/devices/x86/x86_data.c:66 msgctxt "x86-flag" msgid "Cache Line Flush instruction" msgstr "" #. !/flag:dts #: modules/devices/x86/x86_data.c:67 msgctxt "x86-flag" msgid "" "Debug Store (buffer for debugging and profiling instructions), or " "alternately: digital thermal sensor" msgstr "" #. !/flag:acpi #: modules/devices/x86/x86_data.c:68 msgctxt "x86-flag" msgid "ACPI via MSR (temperature monitoring and clock speed modulation)" msgstr "" #. !/flag:mmx #: modules/devices/x86/x86_data.c:69 msgctxt "x86-flag" msgid "Multimedia Extensions" msgstr "" #. !/flag:fxsr #: modules/devices/x86/x86_data.c:70 msgctxt "x86-flag" msgid "FXSAVE/FXRSTOR, CR4.OSFXSR" msgstr "" #. !/flag:sse #: modules/devices/x86/x86_data.c:71 msgctxt "x86-flag" msgid "Intel SSE vector instructions" msgstr "" #. !/flag:sse2 #: modules/devices/x86/x86_data.c:72 msgctxt "x86-flag" msgid "SSE2" msgstr "" #. !/flag:ss #: modules/devices/x86/x86_data.c:73 msgctxt "x86-flag" msgid "CPU self snoop" msgstr "" #. !/flag:ht #: modules/devices/x86/x86_data.c:74 msgctxt "x86-flag" msgid "Hyper-Threading" msgstr "" #. !/flag:tm #: modules/devices/x86/x86_data.c:75 msgctxt "x86-flag" msgid "Automatic clock control (Thermal Monitor)" msgstr "" #. !/flag:ia64 #: modules/devices/x86/x86_data.c:76 msgctxt "x86-flag" msgid "" "Intel Itanium Architecture 64-bit (not to be confused with Intel's 64-bit " "x86 architecture with flag x86-64 or \"AMD64\" bit indicated by flag lm)" msgstr "" #. !/flag:pbe #: modules/devices/x86/x86_data.c:77 msgctxt "x86-flag" msgid "Pending Break Enable (PBE# pin) wakeup support" msgstr "" #. !/flag:syscall #: modules/devices/x86/x86_data.c:80 msgctxt "x86-flag" msgid "SYSCALL (Fast System Call) and SYSRET (Return From Fast System Call)" msgstr "" #. !/flag:mp #: modules/devices/x86/x86_data.c:81 msgctxt "x86-flag" msgid "Multiprocessing Capable." msgstr "" #. !/flag:nx #: modules/devices/x86/x86_data.c:82 msgctxt "x86-flag" msgid "Execute Disable" msgstr "" #. !/flag:mmxext #: modules/devices/x86/x86_data.c:83 msgctxt "x86-flag" msgid "AMD MMX extensions" msgstr "" #. !/flag:fxsr_opt #: modules/devices/x86/x86_data.c:84 msgctxt "x86-flag" msgid "FXSAVE/FXRSTOR optimizations" msgstr "" #. !/flag:pdpe1gb #: modules/devices/x86/x86_data.c:85 msgctxt "x86-flag" msgid "One GB pages (allows hugepagesz=1G)" msgstr "" #. !/flag:rdtscp #: modules/devices/x86/x86_data.c:86 msgctxt "x86-flag" msgid "Read Time-Stamp Counter and Processor ID" msgstr "" #. !/flag:lm #: modules/devices/x86/x86_data.c:87 msgctxt "x86-flag" msgid "Long Mode (x86-64: amd64, also known as Intel 64, i.e. 64-bit capable)" msgstr "" #. !/flag:3dnow #: modules/devices/x86/x86_data.c:88 msgctxt "x86-flag" msgid "3DNow! (AMD vector instructions, competing with Intel's SSE1)" msgstr "" #. !/flag:3dnowext #: modules/devices/x86/x86_data.c:89 msgctxt "x86-flag" msgid "AMD 3DNow! extensions" msgstr "" #. !/flag:recovery #: modules/devices/x86/x86_data.c:91 msgctxt "x86-flag" msgid "CPU in recovery mode" msgstr "" #. !/flag:longrun #: modules/devices/x86/x86_data.c:92 msgctxt "x86-flag" msgid "Longrun power control" msgstr "" #. !/flag:lrti #: modules/devices/x86/x86_data.c:93 msgctxt "x86-flag" msgid "LongRun table interface" msgstr "" #. !/flag:cxmmx #: modules/devices/x86/x86_data.c:95 msgctxt "x86-flag" msgid "Cyrix MMX extensions" msgstr "" #. !/flag:k6_mtrr #: modules/devices/x86/x86_data.c:96 msgctxt "x86-flag" msgid "AMD K6 nonstandard MTRRs" msgstr "" #. !/flag:cyrix_arr #: modules/devices/x86/x86_data.c:97 msgctxt "x86-flag" msgid "Cyrix ARRs (= MTRRs)" msgstr "" #. !/flag:centaur_mcr #: modules/devices/x86/x86_data.c:98 msgctxt "x86-flag" msgid "Centaur MCRs (= MTRRs)" msgstr "" #. !/flag:constant_tsc #: modules/devices/x86/x86_data.c:99 msgctxt "x86-flag" msgid "TSC ticks at a constant rate" msgstr "" #. !/flag:up #: modules/devices/x86/x86_data.c:100 msgctxt "x86-flag" msgid "SMP kernel running on UP" msgstr "" #. !/flag:art #: modules/devices/x86/x86_data.c:101 msgctxt "x86-flag" msgid "Always-Running Timer" msgstr "" #. !/flag:arch_perfmon #: modules/devices/x86/x86_data.c:102 msgctxt "x86-flag" msgid "Intel Architectural PerfMon" msgstr "" #. !/flag:pebs #: modules/devices/x86/x86_data.c:103 msgctxt "x86-flag" msgid "Precise-Event Based Sampling" msgstr "" #. !/flag:bts #: modules/devices/x86/x86_data.c:104 msgctxt "x86-flag" msgid "Branch Trace Store" msgstr "" #. !/flag:rep_good #: modules/devices/x86/x86_data.c:105 msgctxt "x86-flag" msgid "rep microcode works well" msgstr "" #. !/flag:acc_power #: modules/devices/x86/x86_data.c:106 msgctxt "x86-flag" msgid "AMD accumulated power mechanism" msgstr "" #. !/flag:nopl #: modules/devices/x86/x86_data.c:107 msgctxt "x86-flag" msgid "The NOPL (0F 1F) instructions" msgstr "" #. !/flag:xtopology #: modules/devices/x86/x86_data.c:108 msgctxt "x86-flag" msgid "cpu topology enum extensions" msgstr "" #. !/flag:tsc_reliable #: modules/devices/x86/x86_data.c:109 msgctxt "x86-flag" msgid "TSC is known to be reliable" msgstr "" #. !/flag:nonstop_tsc #: modules/devices/x86/x86_data.c:110 msgctxt "x86-flag" msgid "TSC does not stop in C states" msgstr "" #. !/flag:extd_apicid #: modules/devices/x86/x86_data.c:111 msgctxt "x86-flag" msgid "has extended APICID (8 bits)" msgstr "" #. !/flag:amd_dcm #: modules/devices/x86/x86_data.c:112 msgctxt "x86-flag" msgid "multi-node processor" msgstr "" #. !/flag:aperfmperf #: modules/devices/x86/x86_data.c:113 msgctxt "x86-flag" msgid "APERFMPERF" msgstr "" #. !/flag:eagerfpu #: modules/devices/x86/x86_data.c:114 msgctxt "x86-flag" msgid "Non lazy FPU restore" msgstr "" #. !/flag:nonstop_tsc_s3 #: modules/devices/x86/x86_data.c:115 msgctxt "x86-flag" msgid "TSC doesn't stop in S3 state" msgstr "" #. !/flag:mce_recovery #: modules/devices/x86/x86_data.c:116 msgctxt "x86-flag" msgid "CPU has recoverable machine checks" msgstr "" #. !/flag:pni #: modules/devices/x86/x86_data.c:119 msgctxt "x86-flag" msgid "SSE-3 (\"Prescott New Instructions\")" msgstr "" #. !/flag:pclmulqdq #: modules/devices/x86/x86_data.c:120 msgctxt "x86-flag" msgid "" "Perform a Carry-Less Multiplication of Quadword instruction - accelerator " "for GCM)" msgstr "" #. !/flag:dtes64 #: modules/devices/x86/x86_data.c:121 msgctxt "x86-flag" msgid "64-bit Debug Store" msgstr "" #. !/flag:monitor #: modules/devices/x86/x86_data.c:122 msgctxt "x86-flag" msgid "Monitor/Mwait support (Intel SSE3 supplements)" msgstr "" #. !/flag:ds_cpl #: modules/devices/x86/x86_data.c:123 msgctxt "x86-flag" msgid "CPL Qual. Debug Store" msgstr "" #. !/flag:vmx #: modules/devices/x86/x86_data.c:124 msgctxt "x86-flag" msgid "Hardware virtualization, Intel VMX" msgstr "" #. !/flag:smx #: modules/devices/x86/x86_data.c:125 msgctxt "x86-flag" msgid "Safer mode TXT (TPM support)" msgstr "" #. !/flag:est #: modules/devices/x86/x86_data.c:126 msgctxt "x86-flag" msgid "Enhanced SpeedStep" msgstr "" #. !/flag:tm2 #: modules/devices/x86/x86_data.c:127 msgctxt "x86-flag" msgid "Thermal Monitor 2" msgstr "" #. !/flag:ssse3 #: modules/devices/x86/x86_data.c:128 msgctxt "x86-flag" msgid "Supplemental SSE-3" msgstr "" #. !/flag:cid #: modules/devices/x86/x86_data.c:129 msgctxt "x86-flag" msgid "Context ID" msgstr "" #. !/flag:sdbg #: modules/devices/x86/x86_data.c:130 msgctxt "x86-flag" msgid "silicon debug" msgstr "" #. !/flag:fma #: modules/devices/x86/x86_data.c:131 msgctxt "x86-flag" msgid "Fused multiply-add" msgstr "" #. !/flag:cx16 #: modules/devices/x86/x86_data.c:132 msgctxt "x86-flag" msgid "CMPXCHG16B" msgstr "" #. !/flag:xtpr #: modules/devices/x86/x86_data.c:133 msgctxt "x86-flag" msgid "Send Task Priority Messages" msgstr "" #. !/flag:pdcm #: modules/devices/x86/x86_data.c:134 msgctxt "x86-flag" msgid "Performance Capabilities" msgstr "" #. !/flag:pcid #: modules/devices/x86/x86_data.c:135 msgctxt "x86-flag" msgid "Process Context Identifiers" msgstr "" #. !/flag:dca #: modules/devices/x86/x86_data.c:136 msgctxt "x86-flag" msgid "Direct Cache Access" msgstr "" #. !/flag:sse4_1 #: modules/devices/x86/x86_data.c:137 msgctxt "x86-flag" msgid "SSE-4.1" msgstr "" #. !/flag:sse4_2 #: modules/devices/x86/x86_data.c:138 msgctxt "x86-flag" msgid "SSE-4.2" msgstr "" #. !/flag:x2apic #: modules/devices/x86/x86_data.c:139 msgctxt "x86-flag" msgid "x2APIC" msgstr "" #. !/flag:movbe #: modules/devices/x86/x86_data.c:140 msgctxt "x86-flag" msgid "Move Data After Swapping Bytes instruction" msgstr "" #. !/flag:popcnt #: modules/devices/x86/x86_data.c:141 msgctxt "x86-flag" msgid "" "Return the Count of Number of Bits Set to 1 instruction (Hamming weight, i." "e. bit count)" msgstr "" #: modules/devices/x86/x86_data.c:142 msgctxt "x86-flag" msgid "Tsc deadline timer" msgstr "" #. !/flag:aes/aes-ni #: modules/devices/x86/x86_data.c:143 msgctxt "x86-flag" msgid "Advanced Encryption Standard (New Instructions)" msgstr "" #. !/flag:xsave #: modules/devices/x86/x86_data.c:144 msgctxt "x86-flag" msgid "Save Processor Extended States: also provides XGETBY,XRSTOR,XSETBY" msgstr "" #. !/flag:avx #: modules/devices/x86/x86_data.c:145 msgctxt "x86-flag" msgid "Advanced Vector Extensions" msgstr "" #. !/flag:f16c #: modules/devices/x86/x86_data.c:146 msgctxt "x86-flag" msgid "16-bit fp conversions (CVT16)" msgstr "" #. !/flag:rdrand #: modules/devices/x86/x86_data.c:147 msgctxt "x86-flag" msgid "Read Random Number from hardware random number generator instruction" msgstr "" #. !/flag:hypervisor #: modules/devices/x86/x86_data.c:148 msgctxt "x86-flag" msgid "Running on a hypervisor" msgstr "" #. !/flag:rng #: modules/devices/x86/x86_data.c:150 msgctxt "x86-flag" msgid "Random Number Generator present (xstore)" msgstr "" #. !/flag:rng_en #: modules/devices/x86/x86_data.c:151 msgctxt "x86-flag" msgid "Random Number Generator enabled" msgstr "" #. !/flag:ace #: modules/devices/x86/x86_data.c:152 msgctxt "x86-flag" msgid "on-CPU crypto (xcrypt)" msgstr "" #. !/flag:ace_en #: modules/devices/x86/x86_data.c:153 msgctxt "x86-flag" msgid "on-CPU crypto enabled" msgstr "" #. !/flag:ace2 #: modules/devices/x86/x86_data.c:154 msgctxt "x86-flag" msgid "Advanced Cryptography Engine v2" msgstr "" #. !/flag:ace2_en #: modules/devices/x86/x86_data.c:155 msgctxt "x86-flag" msgid "ACE v2 enabled" msgstr "" #. !/flag:phe #: modules/devices/x86/x86_data.c:156 msgctxt "x86-flag" msgid "PadLock Hash Engine" msgstr "" #. !/flag:phe_en #: modules/devices/x86/x86_data.c:157 msgctxt "x86-flag" msgid "PHE enabled" msgstr "" #. !/flag:pmm #: modules/devices/x86/x86_data.c:158 msgctxt "x86-flag" msgid "PadLock Montgomery Multiplier" msgstr "" #. !/flag:pmm_en #: modules/devices/x86/x86_data.c:159 msgctxt "x86-flag" msgid "PMM enabled" msgstr "" #. !/flag:lahf_lm #: modules/devices/x86/x86_data.c:161 msgctxt "x86-flag" msgid "Load AH from Flags (LAHF) and Store AH into Flags (SAHF) in long mode" msgstr "" #. !/flag:cmp_legacy #: modules/devices/x86/x86_data.c:162 msgctxt "x86-flag" msgid "If yes HyperThreading not valid" msgstr "" #. !/flag:svm #: modules/devices/x86/x86_data.c:163 msgctxt "x86-flag" msgid "\"Secure virtual machine\": AMD-V" msgstr "" #. !/flag:extapic #: modules/devices/x86/x86_data.c:164 msgctxt "x86-flag" msgid "Extended APIC space" msgstr "" #. !/flag:cr8_legacy #: modules/devices/x86/x86_data.c:165 msgctxt "x86-flag" msgid "CR8 in 32-bit mode" msgstr "" #. !/flag:abm #: modules/devices/x86/x86_data.c:166 msgctxt "x86-flag" msgid "Advanced Bit Manipulation" msgstr "" #. !/flag:sse4a #: modules/devices/x86/x86_data.c:167 msgctxt "x86-flag" msgid "SSE-4A" msgstr "" #. !/flag:misalignsse #: modules/devices/x86/x86_data.c:168 msgctxt "x86-flag" msgid "" "indicates if a general-protection exception (#GP) is generated when some " "legacy SSE instructions operate on unaligned data. Also depends on CR0 and " "Alignment Checking bit" msgstr "" #. !/flag:3dnowprefetch #: modules/devices/x86/x86_data.c:169 msgctxt "x86-flag" msgid "3DNow prefetch instructions" msgstr "" #. !/flag:osvw #: modules/devices/x86/x86_data.c:170 msgctxt "x86-flag" msgid "" "indicates OS Visible Workaround, which allows the OS to work around " "processor errata." msgstr "" #. !/flag:ibs #: modules/devices/x86/x86_data.c:171 msgctxt "x86-flag" msgid "Instruction Based Sampling" msgstr "" #. !/flag:xop #: modules/devices/x86/x86_data.c:172 msgctxt "x86-flag" msgid "extended AVX instructions" msgstr "" #. !/flag:skinit #: modules/devices/x86/x86_data.c:173 msgctxt "x86-flag" msgid "SKINIT/STGI instructions" msgstr "" #. !/flag:wdt #: modules/devices/x86/x86_data.c:174 msgctxt "x86-flag" msgid "Watchdog timer" msgstr "" #. !/flag:lwp #: modules/devices/x86/x86_data.c:175 msgctxt "x86-flag" msgid "Light Weight Profiling" msgstr "" #. !/flag:fma4 #: modules/devices/x86/x86_data.c:176 msgctxt "x86-flag" msgid "4 operands MAC instructions" msgstr "" #. !/flag:tce #: modules/devices/x86/x86_data.c:177 msgctxt "x86-flag" msgid "translation cache extension" msgstr "" #. !/flag:nodeid_msr #: modules/devices/x86/x86_data.c:178 msgctxt "x86-flag" msgid "NodeId MSR" msgstr "" #. !/flag:tbm #: modules/devices/x86/x86_data.c:179 msgctxt "x86-flag" msgid "Trailing Bit Manipulation" msgstr "" #. !/flag:topoext #: modules/devices/x86/x86_data.c:180 msgctxt "x86-flag" msgid "Topology Extensions CPUID leafs" msgstr "" #. !/flag:perfctr_core #: modules/devices/x86/x86_data.c:181 msgctxt "x86-flag" msgid "Core Performance Counter Extensions" msgstr "" #. !/flag:perfctr_nb #: modules/devices/x86/x86_data.c:182 msgctxt "x86-flag" msgid "NB Performance Counter Extensions" msgstr "" #. !/flag:bpext #: modules/devices/x86/x86_data.c:183 msgctxt "x86-flag" msgid "data breakpoint extension" msgstr "" #. !/flag:ptsc #: modules/devices/x86/x86_data.c:184 msgctxt "x86-flag" msgid "performance time-stamp counter" msgstr "" #. !/flag:perfctr_l2 #: modules/devices/x86/x86_data.c:185 msgctxt "x86-flag" msgid "L2 Performance Counter Extensions" msgstr "" #. !/flag:mwaitx #: modules/devices/x86/x86_data.c:186 msgctxt "x86-flag" msgid "MWAIT extension (MONITORX/MWAITX)" msgstr "" #. !/flag:cpb #: modules/devices/x86/x86_data.c:188 msgctxt "x86-flag" msgid "AMD Core Performance Boost" msgstr "" #. !/flag:epb #: modules/devices/x86/x86_data.c:189 msgctxt "x86-flag" msgid "IA32_ENERGY_PERF_BIAS support" msgstr "" #. !/flag:hw_pstate #: modules/devices/x86/x86_data.c:190 msgctxt "x86-flag" msgid "AMD HW-PState" msgstr "" #. !/flag:proc_feedback #: modules/devices/x86/x86_data.c:191 msgctxt "x86-flag" msgid "AMD ProcFeedbackInterface" msgstr "" #. !/flag:intel_pt #: modules/devices/x86/x86_data.c:192 msgctxt "x86-flag" msgid "Intel Processor Tracing" msgstr "" #. !/flag:tpr_shadow #: modules/devices/x86/x86_data.c:194 msgctxt "x86-flag" msgid "Intel TPR Shadow" msgstr "" #. !/flag:vnmi #: modules/devices/x86/x86_data.c:195 msgctxt "x86-flag" msgid "Intel Virtual NMI" msgstr "" #. !/flag:flexpriority #: modules/devices/x86/x86_data.c:196 msgctxt "x86-flag" msgid "Intel FlexPriority" msgstr "" #. !/flag:ept #: modules/devices/x86/x86_data.c:197 msgctxt "x86-flag" msgid "Intel Extended Page Table" msgstr "" #. !/flag:vpid #: modules/devices/x86/x86_data.c:198 msgctxt "x86-flag" msgid "Intel Virtual Processor ID" msgstr "" #. !/flag:vmmcall #: modules/devices/x86/x86_data.c:199 msgctxt "x86-flag" msgid "prefer VMMCALL to VMCALL" msgstr "" #. !/flag:fsgsbase #: modules/devices/x86/x86_data.c:201 msgctxt "x86-flag" msgid "{RD/WR}{FS/GS}BASE instructions" msgstr "" #. !/flag:tsc_adjust #: modules/devices/x86/x86_data.c:202 msgctxt "x86-flag" msgid "TSC adjustment MSR" msgstr "" #. !/flag:bmi1 #: modules/devices/x86/x86_data.c:203 msgctxt "x86-flag" msgid "1st group bit manipulation extensions" msgstr "" #. !/flag:hle #: modules/devices/x86/x86_data.c:204 msgctxt "x86-flag" msgid "Hardware Lock Elision" msgstr "" #. !/flag:avx2 #: modules/devices/x86/x86_data.c:205 msgctxt "x86-flag" msgid "AVX2 instructions" msgstr "" #. !/flag:smep #: modules/devices/x86/x86_data.c:206 msgctxt "x86-flag" msgid "Supervisor Mode Execution Protection" msgstr "" #. !/flag:bmi2 #: modules/devices/x86/x86_data.c:207 msgctxt "x86-flag" msgid "2nd group bit manipulation extensions" msgstr "" #. !/flag:erms #: modules/devices/x86/x86_data.c:208 msgctxt "x86-flag" msgid "Enhanced REP MOVSB/STOSB" msgstr "" #. !/flag:invpcid #: modules/devices/x86/x86_data.c:209 msgctxt "x86-flag" msgid "Invalidate Processor Context ID" msgstr "" #. !/flag:rtm #: modules/devices/x86/x86_data.c:210 msgctxt "x86-flag" msgid "Restricted Transactional Memory" msgstr "" #. !/flag:cqm #: modules/devices/x86/x86_data.c:211 msgctxt "x86-flag" msgid "Cache QoS Monitoring" msgstr "" #. !/flag:mpx #: modules/devices/x86/x86_data.c:212 msgctxt "x86-flag" msgid "Memory Protection Extension" msgstr "" #. !/flag:avx512f #: modules/devices/x86/x86_data.c:213 msgctxt "x86-flag" msgid "AVX-512 foundation" msgstr "" #. !/flag:avx512dq #: modules/devices/x86/x86_data.c:214 msgctxt "x86-flag" msgid "AVX-512 Double/Quad instructions" msgstr "" #. !/flag:rdseed #: modules/devices/x86/x86_data.c:215 msgctxt "x86-flag" msgid "The RDSEED instruction" msgstr "" #. !/flag:adx #: modules/devices/x86/x86_data.c:216 msgctxt "x86-flag" msgid "The ADCX and ADOX instructions" msgstr "" #. !/flag:smap #: modules/devices/x86/x86_data.c:217 msgctxt "x86-flag" msgid "Supervisor Mode Access Prevention" msgstr "" #. !/flag:clflushopt #: modules/devices/x86/x86_data.c:218 msgctxt "x86-flag" msgid "CLFLUSHOPT instruction" msgstr "" #. !/flag:clwb #: modules/devices/x86/x86_data.c:219 msgctxt "x86-flag" msgid "CLWB instruction" msgstr "" #. !/flag:avx512pf #: modules/devices/x86/x86_data.c:220 msgctxt "x86-flag" msgid "AVX-512 Prefetch" msgstr "" #. !/flag:avx512er #: modules/devices/x86/x86_data.c:221 msgctxt "x86-flag" msgid "AVX-512 Exponential and Reciprocal" msgstr "" #. !/flag:avx512cd #: modules/devices/x86/x86_data.c:222 msgctxt "x86-flag" msgid "AVX-512 Conflict Detection" msgstr "" #. !/flag:sha_ni #: modules/devices/x86/x86_data.c:223 msgctxt "x86-flag" msgid "SHA1/SHA256 Instruction Extensions" msgstr "" #. !/flag:avx512bw #: modules/devices/x86/x86_data.c:224 msgctxt "x86-flag" msgid "AVX-512 Byte/Word instructions" msgstr "" #. !/flag:avx512vl #: modules/devices/x86/x86_data.c:225 msgctxt "x86-flag" msgid "AVX-512 128/256 Vector Length extensions" msgstr "" #. !/flag:xsaveopt #: modules/devices/x86/x86_data.c:227 msgctxt "x86-flag" msgid "Optimized XSAVE" msgstr "" #. !/flag:xsavec #: modules/devices/x86/x86_data.c:228 msgctxt "x86-flag" msgid "XSAVEC" msgstr "" #. !/flag:xgetbv1 #: modules/devices/x86/x86_data.c:229 msgctxt "x86-flag" msgid "XGETBV with ECX = 1" msgstr "" #. !/flag:xsaves #: modules/devices/x86/x86_data.c:230 msgctxt "x86-flag" msgid "XSAVES/XRSTORS" msgstr "" #. !/flag:cqm_llc #: modules/devices/x86/x86_data.c:232 msgctxt "x86-flag" msgid "LLC QoS" msgstr "" #. !/flag:cqm_occup_llc #: modules/devices/x86/x86_data.c:234 msgctxt "x86-flag" msgid "LLC occupancy monitoring" msgstr "" #. !/flag:cqm_mbm_total #: modules/devices/x86/x86_data.c:235 msgctxt "x86-flag" msgid "LLC total MBM monitoring" msgstr "" #. !/flag:cqm_mbm_local #: modules/devices/x86/x86_data.c:236 msgctxt "x86-flag" msgid "LLC local MBM monitoring" msgstr "" #. !/flag:clzero #: modules/devices/x86/x86_data.c:238 msgctxt "x86-flag" msgid "CLZERO instruction" msgstr "" #. !/flag:irperf #: modules/devices/x86/x86_data.c:239 msgctxt "x86-flag" msgid "instructions retired performance counter" msgstr "" #. !/flag:dtherm #: modules/devices/x86/x86_data.c:241 msgctxt "x86-flag" msgid "digital thermal sensor" msgstr "" #. !/flag:ida #: modules/devices/x86/x86_data.c:242 msgctxt "x86-flag" msgid "Intel Dynamic Acceleration" msgstr "" #. !/flag:arat #: modules/devices/x86/x86_data.c:243 msgctxt "x86-flag" msgid "Always Running APIC Timer" msgstr "" #. !/flag:pln #: modules/devices/x86/x86_data.c:244 msgctxt "x86-flag" msgid "Intel Power Limit Notification" msgstr "" #. !/flag:pts #: modules/devices/x86/x86_data.c:245 msgctxt "x86-flag" msgid "Intel Package Thermal Status" msgstr "" #. !/flag:hwp #: modules/devices/x86/x86_data.c:246 msgctxt "x86-flag" msgid "Intel Hardware P-states" msgstr "" #. !/flag:hwp_notify #: modules/devices/x86/x86_data.c:247 msgctxt "x86-flag" msgid "HWP notification" msgstr "" #. !/flag:hwp_act_window #: modules/devices/x86/x86_data.c:248 msgctxt "x86-flag" msgid "HWP Activity Window" msgstr "" #. !/flag:hwp_epp #: modules/devices/x86/x86_data.c:249 msgctxt "x86-flag" msgid "HWP Energy Performance Preference" msgstr "" #. !/flag:hwp_pkg_req #: modules/devices/x86/x86_data.c:250 msgctxt "x86-flag" msgid "HWP package-level request" msgstr "" #. !/flag:npt #: modules/devices/x86/x86_data.c:252 msgctxt "x86-flag" msgid "AMD Nested Page Table support" msgstr "" #. !/flag:lbrv #: modules/devices/x86/x86_data.c:253 msgctxt "x86-flag" msgid "AMD LBR Virtualization support" msgstr "" #. !/flag:svm_lock #: modules/devices/x86/x86_data.c:254 msgctxt "x86-flag" msgid "AMD SVM locking MSR" msgstr "" #. !/flag:nrip_save #: modules/devices/x86/x86_data.c:255 msgctxt "x86-flag" msgid "AMD SVM next_rip save" msgstr "" #. !/flag:tsc_scale #: modules/devices/x86/x86_data.c:256 msgctxt "x86-flag" msgid "AMD TSC scaling support" msgstr "" #. !/flag:vmcb_clean #: modules/devices/x86/x86_data.c:257 msgctxt "x86-flag" msgid "AMD VMCB clean bits support" msgstr "" #. !/flag:flushbyasid #: modules/devices/x86/x86_data.c:258 msgctxt "x86-flag" msgid "AMD flush-by-ASID support" msgstr "" #. !/flag:decodeassists #: modules/devices/x86/x86_data.c:259 msgctxt "x86-flag" msgid "AMD Decode Assists support" msgstr "" #. !/flag:pausefilter #: modules/devices/x86/x86_data.c:260 msgctxt "x86-flag" msgid "AMD filtered pause intercept" msgstr "" #. !/flag:pfthreshold #: modules/devices/x86/x86_data.c:261 msgctxt "x86-flag" msgid "AMD pause filter threshold" msgstr "" #. !/flag:avic #: modules/devices/x86/x86_data.c:262 msgctxt "x86-flag" msgid "Virtual Interrupt Controller" msgstr "" #. !/flag:pku #: modules/devices/x86/x86_data.c:264 msgctxt "x86-flag" msgid "Protection Keys for Userspace" msgstr "" #. !/flag:ospke #: modules/devices/x86/x86_data.c:265 msgctxt "x86-flag" msgid "OS Protection Keys Enable" msgstr "" #. !/flag:overflow_recov #: modules/devices/x86/x86_data.c:267 msgctxt "x86-flag" msgid "MCA overflow recovery support" msgstr "" #. !/flag:succor #: modules/devices/x86/x86_data.c:268 msgctxt "x86-flag" msgid "uncorrectable error containment and recovery" msgstr "" #. !/flag:smca #: modules/devices/x86/x86_data.c:269 msgctxt "x86-flag" msgid "Scalable MCA" msgstr "" #. !/bug:f00f #: modules/devices/x86/x86_data.c:272 msgctxt "x86-flag" msgid "Intel F00F bug" msgstr "" #. !/bug:fdiv #: modules/devices/x86/x86_data.c:273 msgctxt "x86-flag" msgid "FPU FDIV" msgstr "" #. !/bug:coma #: modules/devices/x86/x86_data.c:274 msgctxt "x86-flag" msgid "Cyrix 6x86 coma" msgstr "" #. !/bug:tlb_mmatch #: modules/devices/x86/x86_data.c:275 msgctxt "x86-flag" msgid "AMD Erratum 383" msgstr "" #. !/bug:apic_c1e #. !/bug:amd_e400 #: modules/devices/x86/x86_data.c:276 modules/devices/x86/x86_data.c:285 msgctxt "x86-flag" msgid "AMD Erratum 400" msgstr "" #. !/bug:11ap #: modules/devices/x86/x86_data.c:277 msgctxt "x86-flag" msgid "Bad local APIC aka 11AP" msgstr "" #. !/bug:fxsave_leak #: modules/devices/x86/x86_data.c:278 msgctxt "x86-flag" msgid "FXSAVE leaks FOP/FIP/FOP" msgstr "" #. !/bug:clflush_monitor #: modules/devices/x86/x86_data.c:279 msgctxt "x86-flag" msgid "AAI65, CLFLUSH required before MONITOR" msgstr "" #. !/bug:sysret_ss_attrs #: modules/devices/x86/x86_data.c:280 msgctxt "x86-flag" msgid "SYSRET doesn't fix up SS attrs" msgstr "" #. !/bug:espfix #: modules/devices/x86/x86_data.c:281 msgctxt "x86-flag" msgid "IRET to 16-bit SS corrupts ESP/RSP high bits" msgstr "" #. !/bug:null_seg #: modules/devices/x86/x86_data.c:282 msgctxt "x86-flag" msgid "Nulling a selector preserves the base" msgstr "" #. !/bug:swapgs_fence #: modules/devices/x86/x86_data.c:283 msgctxt "x86-flag" msgid "SWAPGS without input dep on GS" msgstr "" #. !/bug:monitor #: modules/devices/x86/x86_data.c:284 msgctxt "x86-flag" msgid "IPI required to wake up remote CPU" msgstr "" #. !/bug:cpu_insecure & bug:cpu_meltdown #: modules/devices/x86/x86_data.c:286 modules/devices/x86/x86_data.c:287 msgctxt "x86-flag" msgid "" "CPU is affected by meltdown attack and needs kernel page table isolation" msgstr "" #. !/bug:spectre_v1 #: modules/devices/x86/x86_data.c:288 msgctxt "x86-flag" msgid "CPU is affected by Spectre variant 1 attack with conditional branches" msgstr "" #. !/bug:spectre_v2 #: modules/devices/x86/x86_data.c:289 msgctxt "x86-flag" msgid "CPU is affected by Spectre variant 2 attack with indirect branches" msgstr "" #. !/bug:spec_store_bypass #: modules/devices/x86/x86_data.c:290 msgctxt "x86-flag" msgid "CPU is affected by speculative store bypass attack" msgstr "" #. !/bug:l1tf #: modules/devices/x86/x86_data.c:291 msgctxt "x86-flag" msgid "CPU is affected by L1 Terminal Fault" msgstr "" #. !/flag:pm:ts #: modules/devices/x86/x86_data.c:294 msgctxt "x86-flag" msgid "temperature sensor" msgstr "" #. !/flag:pm:fid #: modules/devices/x86/x86_data.c:295 msgctxt "x86-flag" msgid "frequency id control" msgstr "" #. !/flag:pm:vid #: modules/devices/x86/x86_data.c:296 msgctxt "x86-flag" msgid "voltage id control" msgstr "" #. !/flag:pm:ttp #: modules/devices/x86/x86_data.c:297 msgctxt "x86-flag" msgid "thermal trip" msgstr "" #. !/flag:pm:tm #: modules/devices/x86/x86_data.c:298 msgctxt "x86-flag" msgid "hardware thermal control" msgstr "" #. !/flag:pm:stc #: modules/devices/x86/x86_data.c:299 msgctxt "x86-flag" msgid "software thermal control" msgstr "" #. !/flag:pm:100mhzsteps #: modules/devices/x86/x86_data.c:300 msgctxt "x86-flag" msgid "100 MHz multiplier control" msgstr "" #. !/flag:pm:hwpstate #: modules/devices/x86/x86_data.c:301 msgctxt "x86-flag" msgid "hardware P-state control" msgstr "" #. !/flag:pm:cpb #: modules/devices/x86/x86_data.c:302 msgctxt "x86-flag" msgid "core performance boost" msgstr "" #. !/flag:pm:eff_freq_ro #: modules/devices/x86/x86_data.c:303 msgctxt "x86-flag" msgid "Readonly aperf/mperf" msgstr "" #. !/flag:pm:proc_feedback #: modules/devices/x86/x86_data.c:304 msgctxt "x86-flag" msgid "processor feedback interface" msgstr "" #. !/flag:pm:acc_power #: modules/devices/x86/x86_data.c:305 msgctxt "x86-flag" msgid "accumulated power mechanism" msgstr "" #: modules/network.c:61 msgid "Interfaces" msgstr "" #: modules/network.c:62 msgid "IP Connections" msgstr "" #: modules/network.c:63 msgid "Routing Table" msgstr "" #: modules/network.c:64 modules/network.c:310 msgid "ARP Table" msgstr "" #: modules/network.c:65 msgid "DNS Servers" msgstr "DNS-kiszolgálók" #: modules/network.c:66 msgid "Statistics" msgstr "" #: modules/network.c:67 msgid "Shared Directories" msgstr "" #: modules/network.c:311 modules/network.c:333 modules/network.c:364 #: modules/network/net.c:495 msgid "IP Address" msgstr "IP-cím" #: modules/network.c:311 msgid "MAC Address" msgstr "MAC-cím" #: modules/network.c:320 msgid "SAMBA" msgstr "" #: modules/network.c:321 msgid "NFS" msgstr "" #: modules/network.c:332 msgid "Name Servers" msgstr "" #: modules/network.c:347 msgid "Connections" msgstr "" #: modules/network.c:348 msgid "Local Address" msgstr "" #: modules/network.c:348 msgid "Foreign Address" msgstr "" #: modules/network.c:348 msgid "State" msgstr "Állapot" #: modules/network.c:364 msgid "Sent" msgstr "" #: modules/network.c:364 msgid "Received" msgstr "" #: modules/network.c:380 msgid "IP routing table" msgstr "" #: modules/network.c:381 msgid "Destination/Gateway" msgstr "" #: modules/network.c:381 modules/network/net.c:496 msgid "Mask" msgstr "" #: modules/network.c:409 msgid "Network" msgstr "Hálózat" #: modules/network.c:442 msgid "Gathers information about this computer's network connection" msgstr "Adatok összegyűjtése a számítógép hálózati kapcsolatairól" #: modules/network/net.c:74 msgctxt "wi-op-mode" msgid "Auto" msgstr "" #: modules/network/net.c:75 msgctxt "wi-op-mode" msgid "Ad-Hoc" msgstr "" #: modules/network/net.c:76 msgctxt "wi-op-mode" msgid "Managed" msgstr "" #: modules/network/net.c:77 msgctxt "wi-op-mode" msgid "Master" msgstr "" #: modules/network/net.c:78 msgctxt "wi-op-mode" msgid "Repeater" msgstr "Jelismétlő" #: modules/network/net.c:79 msgctxt "wi-op-mode" msgid "Secondary" msgstr "" #: modules/network/net.c:80 msgctxt "wi-op-mode" msgid "(Unknown)" msgstr "(ismeretlen)" #: modules/network/net.c:268 modules/network/net.c:288 #: modules/network/net.c:296 msgctxt "net-if-type" msgid "Ethernet" msgstr "" #: modules/network/net.c:269 msgctxt "net-if-type" msgid "Loopback" msgstr "" #: modules/network/net.c:270 msgctxt "net-if-type" msgid "Point-to-Point" msgstr "" #: modules/network/net.c:271 modules/network/net.c:272 #: modules/network/net.c:273 modules/network/net.c:274 #: modules/network/net.c:298 msgctxt "net-if-type" msgid "Wireless" msgstr "" #: modules/network/net.c:275 msgctxt "net-if-type" msgid "Virtual Point-to-Point (TUN)" msgstr "" #: modules/network/net.c:276 msgctxt "net-if-type" msgid "Ethernet (TAP)" msgstr "" #: modules/network/net.c:277 msgctxt "net-if-type" msgid "Parallel Line Internet Protocol" msgstr "" #: modules/network/net.c:278 msgctxt "net-if-type" msgid "Infrared" msgstr "Infravörös" #: modules/network/net.c:279 modules/network/net.c:297 msgctxt "net-if-type" msgid "Serial Line Internet Protocol" msgstr "" #: modules/network/net.c:280 msgctxt "net-if-type" msgid "Integrated Services Digital Network" msgstr "" #: modules/network/net.c:281 msgctxt "net-if-type" msgid "IPv6-over-IPv4 Tunnel" msgstr "" #: modules/network/net.c:282 msgctxt "net-if-type" msgid "VMWare Virtual Network Interface (NAT)" msgstr "" #: modules/network/net.c:283 msgctxt "net-if-type" msgid "VMWare Virtual Network Interface" msgstr "" #: modules/network/net.c:284 msgctxt "net-if-type" msgid "Personal Area Network (PAN)" msgstr "" #: modules/network/net.c:285 msgctxt "net-if-type" msgid "Bluetooth" msgstr "Bluetooth" #: modules/network/net.c:286 msgctxt "net-if-type" msgid "Bridge Interface" msgstr "" #: modules/network/net.c:287 msgctxt "net-if-type" msgid "Hamachi Virtual Personal Network" msgstr "" #: modules/network/net.c:289 msgctxt "net-if-type" msgid "Intermediate Functional Block" msgstr "" #: modules/network/net.c:290 msgctxt "net-if-type" msgid "GRE Network Tunnel" msgstr "" #: modules/network/net.c:291 msgctxt "net-if-type" msgid "Mesh Network" msgstr "" #: modules/network/net.c:292 msgctxt "net-if-type" msgid "Wireless Master Interface" msgstr "" #: modules/network/net.c:293 msgctxt "net-if-type" msgid "VirtualBox Virtual Network Interface" msgstr "" #: modules/network/net.c:299 msgctxt "net-if-type" msgid "Wireless (WAN)" msgstr "" #: modules/network/net.c:301 msgctxt "net-if-type" msgid "(Unknown)" msgstr "" #: modules/network/net.c:364 modules/network/net.c:374 msgid "Network Interfaces" msgstr "" #: modules/network/net.c:364 msgid "None Found" msgstr "" #: modules/network/net.c:431 msgid "Network Adapter Properties" msgstr "" #: modules/network/net.c:432 msgid "Interface Type" msgstr "" #: modules/network/net.c:433 msgid "Hardware Address (MAC)" msgstr "" #: modules/network/net.c:437 msgid "MTU" msgstr "" #: modules/network/net.c:439 msgid "Transfer Details" msgstr "" #: modules/network/net.c:440 msgid "Bytes Received" msgstr "" #: modules/network/net.c:441 msgid "Bytes Sent" msgstr "" #: modules/network/net.c:458 modules/network/net.c:480 #: modules/network/net.c:481 msgid "dBm" msgstr "dBm" #: modules/network/net.c:458 msgid "mW" msgstr "mW" #: modules/network/net.c:472 msgid "Wireless Properties" msgstr "" #: modules/network/net.c:473 msgid "Network Name (SSID)" msgstr "" #: modules/network/net.c:474 msgid "Bit Rate" msgstr "Bitsűrűség" #: modules/network/net.c:475 msgid "Transmission Power" msgstr "" #: modules/network/net.c:478 msgid "Link Quality" msgstr "" #: modules/network/net.c:479 msgid "Signal / Noise" msgstr "Jel / zaj" #: modules/network/net.c:494 msgid "Internet Protocol (IPv4)" msgstr "" #: modules/network/net.c:495 modules/network/net.c:496 #: modules/network/net.c:498 msgid "(Not set)" msgstr "" #: modules/network/net.c:497 msgid "Broadcast Address" msgstr "" #: includes/spd-decode.h:28 msgid "RAM" msgstr "" #~ msgid "_Open..." #~ msgstr "_Megnyitás..." #~ msgid "(Not available; Perhaps try running HardInfo2 as root.)" #~ msgstr "" #~ "(Nem elérhető; Próbálja meg rendszergazdaként futtatni a HardInfo2-t!)" #~ msgid "DMI is not available; Perhaps try running HardInfo2 as root." #~ msgstr "" #~ "DMI nem elérhető; Próbálja meg rendszergazdaként futtatni a HardInfo2-t!" #~ msgid "_Copy to Clipboard" #~ msgstr "_Másolás vágólapra" #~ msgid "Copy to clipboard" #~ msgstr "Másolás vágólapra" hardinfo2-hardinfo2-1331e88/po/ko.po000066400000000000000000005140701474767047500171410ustar00rootroot00000000000000msgid "" msgstr "" "Project-Id-Version: hardinfo2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-10-06 01:42+0200\n" "PO-Revision-Date: 2022-09-28\n" "Last-Translator: Yunji Lee\n" "Language-Team: \n" "Language: ko\n" "X-Poedit-Basepath: ../\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 2.3\n" "Plural-Forms: nplurals=1; plural=0;\n" #: hardinfo2/cpu_util.c:29 msgid "Little Endian" msgstr "리틀 엔디안" #: hardinfo2/cpu_util.c:31 msgid "Big Endian" msgstr "빅엔디안" #: hardinfo2/cpu_util.c:205 hardinfo2/cpu_util.c:216 modules/devices/gpu.c:262 msgid "Frequency Scaling" msgstr "주파수 스케일링" #: hardinfo2/cpu_util.c:206 modules/devices/gpu.c:263 msgid "Minimum" msgstr "최소값" #: hardinfo2/cpu_util.c:206 hardinfo2/cpu_util.c:207 hardinfo2/cpu_util.c:208 #: hardinfo2/dt_util.c:590 modules/devices/gpu.c:263 modules/devices/gpu.c:264 msgid "kHz" msgstr "kHz" #: hardinfo2/cpu_util.c:207 modules/devices/gpu.c:264 msgid "Maximum" msgstr "최대값" #: hardinfo2/cpu_util.c:208 msgid "Current" msgstr "현재" #: hardinfo2/cpu_util.c:209 modules/devices/gpu.c:265 msgid "Transition Latency" msgstr "전환 지연" #: hardinfo2/cpu_util.c:209 modules/devices/gpu.c:265 msgid "ns" msgstr "ns" #: hardinfo2/cpu_util.c:210 msgid "Governor" msgstr "거버너" #: hardinfo2/cpu_util.c:211 hardinfo2/cpu_util.c:217 modules/devices.c:842 #: modules/devices/gpu.c:209 modules/devices/pci.c:148 #: modules/devices/usb.c:139 msgid "Driver" msgstr "드라이버" #: hardinfo2/cpu_util.c:223 modules/computer.c:801 #: modules/devices/arm/processor.c:255 modules/devices/e2k/processor.c:178 #: modules/devices/x86/processor.c:283 modules/devices/x86/processor.c:387 #: modules/devices/x86/processor.c:525 msgid "(Not Available)" msgstr "(사용할 수 없습니다)" #: hardinfo2/cpu_util.c:231 hardinfo2/cpu_util.c:233 msgid "Socket" msgstr "소켓" #: hardinfo2/cpu_util.c:236 hardinfo2/cpu_util.c:238 modules/devices/gpu.c:205 #: modules/devices/gpu.c:295 msgid "Core" msgstr "코어" #: hardinfo2/cpu_util.c:241 msgid "Book" msgstr "" #: hardinfo2/cpu_util.c:243 msgid "Drawer" msgstr "" #: hardinfo2/cpu_util.c:249 modules/devices/arm/processor.c:480 #: modules/devices/x86/processor.c:751 msgid "Topology" msgstr "토폴로지" #: hardinfo2/cpu_util.c:250 msgid "ID" msgstr "ID" #: hardinfo2/dmi_util.c:25 msgid "BIOS Information" msgstr "BIOS 정보" #: hardinfo2/dmi_util.c:26 modules/devices/parisc/processor.c:157 msgid "System" msgstr "시스템" #: hardinfo2/dmi_util.c:27 msgid "Base Board" msgstr "베이스 보드" #: hardinfo2/dmi_util.c:28 modules/devices/dmi.c:54 msgid "Chassis" msgstr "시스템 장치" #: hardinfo2/dmi_util.c:29 modules/computer.c:580 modules/computer.c:1144 #: modules/devices/alpha/processor.c:87 modules/devices/arm/processor.c:340 #: modules/devices.c:99 modules/devices/e2k/processor.c:357 #: modules/devices/ia64/processor.c:159 #: modules/devices/loongarch64/processor.c:93 #: modules/devices/m68k/processor.c:83 modules/devices/mips/processor.c:74 #: modules/devices/parisc/processor.c:154 modules/devices/ppc/processor.c:157 #: modules/devices/riscv/processor.c:241 modules/devices/s390/processor.c:131 #: modules/devices/sh/processor.c:83 modules/devices/sparc/processor.c:74 #: modules/devices/x86/processor.c:647 msgid "Processor" msgstr "프로세서" #: hardinfo2/dmi_util.c:30 msgid "Memory Controller" msgstr "메모리 컨트롤러" #: hardinfo2/dmi_util.c:31 msgid "Memory Module" msgstr "메모리 모듈" #: hardinfo2/dmi_util.c:32 modules/devices/e2k/processor.c:366 #: modules/devices/parisc/processor.c:163 modules/devices/x86/processor.c:663 msgid "Cache" msgstr "캐시" #: hardinfo2/dmi_util.c:33 msgid "Port Connector" msgstr "포트 커넥터" #: hardinfo2/dmi_util.c:34 msgid "System Slots" msgstr "시스템 슬롯" #: hardinfo2/dmi_util.c:35 msgid "On Board Devices" msgstr "온보드 장치" #: hardinfo2/dmi_util.c:36 msgid "OEM Strings" msgstr "OEM 문자열" #: hardinfo2/dmi_util.c:37 msgid "System Configuration Options" msgstr "시스템 구성 옵션" #: hardinfo2/dmi_util.c:38 msgid "BIOS Language" msgstr "BIOS 언어" #: hardinfo2/dmi_util.c:39 msgid "Group Associations" msgstr "그룹 연결" #: hardinfo2/dmi_util.c:40 msgid "System Event Log" msgstr "시스템 이벤트 로그" #: hardinfo2/dmi_util.c:41 msgid "Physical Memory Array" msgstr "물리적 메모리 배열" #: hardinfo2/dmi_util.c:42 msgid "Memory Device" msgstr "메모리 장치" #: hardinfo2/dmi_util.c:43 msgid "32-bit Memory Error" msgstr "32비트 메모리 오류" #: hardinfo2/dmi_util.c:44 msgid "Memory Array Mapped Address" msgstr "메모리 배열 매핑 주소" #: hardinfo2/dmi_util.c:45 msgid "Memory Device Mapped Address" msgstr "메모리 장치 매핑 주소" #: hardinfo2/dmi_util.c:46 msgid "Built-in Pointing Device" msgstr "내장 포인팅 장치" #: hardinfo2/dmi_util.c:47 msgid "Portable Battery" msgstr "휴대용 배터리" #: hardinfo2/dmi_util.c:48 msgid "System Reset" msgstr "시스템 리셋" #: hardinfo2/dmi_util.c:49 msgid "Hardware Security" msgstr "하드웨어 보안" #: hardinfo2/dmi_util.c:50 msgid "System Power Controls" msgstr "시스템 전원 제어" #: hardinfo2/dmi_util.c:51 msgid "Voltage Probe" msgstr "전압 프로브" #: hardinfo2/dmi_util.c:52 msgid "Cooling Device" msgstr "냉각 장치" #: hardinfo2/dmi_util.c:53 msgid "Temperature Probe" msgstr "온도 프로브" #: hardinfo2/dmi_util.c:54 msgid "Electrical Current Probe" msgstr "전류 프로브" #: hardinfo2/dmi_util.c:55 msgid "Out-of-band Remote Access" msgstr "대역 외 원격 액세스" #: hardinfo2/dmi_util.c:56 msgid "Boot Integrity Services" msgstr "부팅 무결성 서비스" #: hardinfo2/dmi_util.c:57 msgid "System Boot" msgstr "시스템 부팅" #: hardinfo2/dmi_util.c:58 msgid "64-bit Memory Error" msgstr "64비트 메모리 오류" #: hardinfo2/dmi_util.c:59 msgid "Management Device" msgstr "관리 장치" #: hardinfo2/dmi_util.c:60 msgid "Management Device Component" msgstr "관리 장치 구성 요소" #: hardinfo2/dmi_util.c:61 msgid "Management Device Threshold Data" msgstr "관리 장치 임계값 데이터" #: hardinfo2/dmi_util.c:62 msgid "Memory Channel" msgstr "메모리 채널" #: hardinfo2/dmi_util.c:63 msgid "IPMI Device" msgstr "IPMI 장치" #: hardinfo2/dmi_util.c:64 msgid "Power Supply" msgstr "전원 공급 장치" #: hardinfo2/dmi_util.c:65 msgid "Additional Information" msgstr "추가 정보" #: hardinfo2/dmi_util.c:66 msgid "Onboard Device" msgstr "온보드 장치" #: hardinfo2/dmi_util.c:233 msgid "Invalid chassis type (0)" msgstr "잘못된 시스템 장치 유형(0)" #: hardinfo2/dmi_util.c:234 hardinfo2/dmi_util.c:235 msgid "Unknown chassis type" msgstr "알 수 없는 시스템 장치 유형" #: hardinfo2/dmi_util.c:236 msgid "Desktop" msgstr "데스크탑" #: hardinfo2/dmi_util.c:237 msgid "Low-profile Desktop" msgstr "로우 프로파일 데스크탑" #: hardinfo2/dmi_util.c:238 msgid "Pizza Box" msgstr "" #: hardinfo2/dmi_util.c:239 msgid "Mini Tower" msgstr "" #: hardinfo2/dmi_util.c:240 msgid "Tower" msgstr "" #: hardinfo2/dmi_util.c:241 msgid "Portable" msgstr "휴대용" #: hardinfo2/dmi_util.c:242 modules/computer.c:408 modules/computer.c:417 #: modules/computer.c:440 modules/computer.c:442 msgid "Laptop" msgstr "랩탑" #: hardinfo2/dmi_util.c:243 msgid "Notebook" msgstr "노트북" #: hardinfo2/dmi_util.c:244 msgid "Handheld" msgstr "휴대용" #: hardinfo2/dmi_util.c:245 msgid "Docking Station" msgstr "도킹 스테이션" #: hardinfo2/dmi_util.c:246 msgid "All-in-one" msgstr "올인원" #: hardinfo2/dmi_util.c:247 msgid "Subnotebook" msgstr "서브노트북" #: hardinfo2/dmi_util.c:248 msgid "Space-saving" msgstr "공간 절약" #: hardinfo2/dmi_util.c:249 msgid "Lunch Box" msgstr "" #: hardinfo2/dmi_util.c:250 msgid "Main Server Chassis" msgstr "주 서버 시스템 장치" #: hardinfo2/dmi_util.c:251 msgid "Expansion Chassis" msgstr "확장 시스템 장치" #: hardinfo2/dmi_util.c:252 msgid "Sub Chassis" msgstr "서브 시스템 장치" #: hardinfo2/dmi_util.c:253 msgid "Bus Expansion Chassis" msgstr "버스 확장 시스템 장치" #: hardinfo2/dmi_util.c:254 msgid "Peripheral Chassis" msgstr "주변 시스템 장치" #: hardinfo2/dmi_util.c:255 msgid "RAID Chassis" msgstr "RAID 시스템 장치" #: hardinfo2/dmi_util.c:256 msgid "Rack Mount Chassis" msgstr "랙 마운트 시스템 장치" #: hardinfo2/dmi_util.c:257 msgid "Sealed-case PC" msgstr "밀폐형 PC 케이스" #: hardinfo2/dmi_util.c:258 msgid "Multi-system" msgstr "다중 시스템" #: hardinfo2/dmi_util.c:259 msgid "CompactPCI" msgstr "" #: hardinfo2/dmi_util.c:260 msgid "AdvancedTCA" msgstr "" #: hardinfo2/dmi_util.c:261 msgid "Blade" msgstr "블레이드" #: hardinfo2/dmi_util.c:262 msgid "Blade Enclosing" msgstr "블레이드 인클로징" #: hardinfo2/dmi_util.c:263 msgid "Tablet" msgstr "태블릿" #: hardinfo2/dmi_util.c:264 msgid "Convertible" msgstr "컨버터블" #: hardinfo2/dmi_util.c:265 msgid "Detachable" msgstr "탈부착 가능" #: hardinfo2/dmi_util.c:266 msgid "IoT Gateway" msgstr "IoT 게이트웨이" #: hardinfo2/dmi_util.c:267 msgid "Embedded PC" msgstr "임베디드 PC" #: hardinfo2/dmi_util.c:268 msgid "Mini PC" msgstr "미니 PC" #: hardinfo2/dmi_util.c:269 msgid "Stick PC" msgstr "스틱 PC" #: hardinfo2/dt_util.c:1175 msgid "phandle Map" msgstr "" #: hardinfo2/dt_util.c:1176 msgid "Alias Map" msgstr "별칭 맵" #: hardinfo2/dt_util.c:1177 msgid "Symbol Map" msgstr "심볼 맵" #. !/ %d will be latest year of copyright #: hardinfo2/hardinfo.c:104 #, c-format msgid "" "Copyright (C) 2003-2023 L. A. F. Pereira. 2024-%d Hardinfo2 Project.\n" "\n" msgstr "" #: hardinfo2/hardinfo.c:106 #, c-format msgid "" "Compile-time options:\n" " Release version: %s (%s)\n" " LibSoup version: %s\n" " Data : %s\n" " Library : %s\n" " Locale : %s\n" " Compiled for : %s\n" msgstr "" #: hardinfo2/hardinfo.c:114 msgid "3.0" msgstr "" #: hardinfo2/hardinfo.c:149 #, c-format msgid "Unknown benchmark ``%s''\n" msgstr "" #: hardinfo2/hardinfo.c:188 msgid "Don't know what to do. Exiting." msgstr "무엇을해야할지 모르겠습니다. 종료합니다." #: hardinfo2/usb_util.c:293 modules/devices/devicetree.c:90 #: modules/devices/devicetree.c:91 modules/devices/monitors.c:411 #: modules/devices/storage.c:306 modules/devices/storage.c:328 msgid "(None)" msgstr "(없음)" #: hardinfo2/util.c:100 modules/computer/uptime.c:54 #, c-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d일" #: hardinfo2/util.c:101 modules/computer/uptime.c:55 #, c-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d시간" #: hardinfo2/util.c:102 modules/computer/uptime.c:56 #, c-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d분" #: hardinfo2/util.c:103 #, c-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d초" #: hardinfo2/util.c:124 #, c-format msgid "%.1f B" msgstr "%.1f B" #: hardinfo2/util.c:126 #, c-format msgid "%.1f KiB" msgstr "%.1f KiB" #: hardinfo2/util.c:128 #, c-format msgid "%.1f MiB" msgstr "%.1f MiB" #: hardinfo2/util.c:130 #, c-format msgid "%.1f GiB" msgstr "%.1fGiB" #: hardinfo2/util.c:132 #, c-format msgid "%.1f TiB" msgstr "%.1f TiB" #: hardinfo2/util.c:134 #, c-format msgid "%.1f PiB" msgstr "%.1f PiB" #: hardinfo2/util.c:283 msgid "Error" msgstr "오류" #: hardinfo2/util.c:283 hardinfo2/util.c:299 msgid "Warning" msgstr "경고" #: hardinfo2/util.c:298 msgid "Fatal Error" msgstr "치명적 오류" #: hardinfo2/util.c:325 msgid "do not print status messages to standard output" msgstr "상태 메시지를 표준 출력으로 인쇄하지 않습니다." #: hardinfo2/util.c:331 msgid "creates a report and prints to standard output" msgstr "보고서를 만들고 표준 출력으로 인쇄합니다." #: hardinfo2/util.c:337 msgid "chooses a report format ([text], html)" msgstr "보고서 형식([텍스트], html)을 선택합니다." #: hardinfo2/util.c:343 msgid "run single benchmark eg. -b 'FPU FFT' (Default all Benchmarks runs)" msgstr "" #: hardinfo2/util.c:349 msgid "" "user note attached to benchmark results. (updating/synchronize with server)" msgstr "" #: hardinfo2/util.c:355 msgid "benchmark result format ([short], conf, shell)" msgstr "벤치마크 결과 형식([짧은], conf, 셸)" #: hardinfo2/util.c:361 msgid "" "maximum number of benchmark results to include (-1 for no limit, default is " "50)" msgstr "포함할 최대 벤치마크 결과 수(무제한의 경우 -1, 기본값은 50)" #: hardinfo2/util.c:367 msgid "shows program version and quit" msgstr "프로그램 버전을 표시하고 종료" #: hardinfo2/util.c:373 msgid "do not run benchmarks" msgstr "벤치마크를 실행하지 마십시오" #: hardinfo2/util.c:379 msgid "show all details" msgstr "모든 세부 정보 표시" #: hardinfo2/util.c:384 msgid "- System Information and Benchmark" msgstr "" #: hardinfo2/util.c:394 #, c-format msgid "" "Unrecognized arguments.\n" "Try ``%s --help'' for more information.\n" msgstr "" "인식할 수 없는 인수입니다.\n" "자세한 내용은 ``%s --help''를 시도하십시오.\n" #: hardinfo2/util.c:869 #, c-format msgid "Scanning: %s..." msgstr "스캔 중: %s..." #: hardinfo2/util.c:879 shell/shell.c:303 shell/shell.c:925 shell/shell.c:2163 msgid "Done." msgstr "완료." #: hardinfo2/vendor.c:213 msgid "Update vendor list" msgstr "공급업체 목록 업데이트" #: hardinfo2/vendor.c:218 msgid "Check Update Version" msgstr "" #: hardinfo2/vendor.c:391 modules/computer.c:630 modules/computer.c:829 #: modules/computer/os.c:196 modules/computer/os.c:378 #: modules/computer/os.c:413 modules/computer/os.c:741 #: modules/computer/os.c:802 modules/devices.c:464 modules/devices.c:614 #: modules/devices/firmware.c:149 modules/devices/printers.c:106 #: modules/devices/printers.c:113 modules/devices/printers.c:123 #: modules/devices/printers.c:138 modules/devices/printers.c:147 #: modules/devices/printers.c:256 modules/devices/spd-decode.c:364 #: modules/devices/usb.c:149 msgid "Unknown" msgstr "알 수 없음" #: shell/callbacks.c:457 shell/shell.c:522 msgid "System Information and Benchmark" msgstr "" #: shell/callbacks.c:462 msgid "" "HardInfo2 is free software; you can redistribute it and/or modify it under " "the terms of the GNU General Public License as published by the Free " "Software Foundation, version 2 or later.\n" "\n" "This program is distributed in the hope that it will be useful, but WITHOUT " "ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " "FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " "more details.\n" "\n" "You should have received a copy of the GNU General Public License along with " "this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin St, Fifth Floor, Boston, MA 02110-1301 USA" msgstr "" #: shell/menu.c:43 msgid "_Information" msgstr "정보(_I)" #: shell/menu.c:44 msgid "_View" msgstr "보기(_V)" #: shell/menu.c:46 msgid "_Theme" msgstr "" #: shell/menu.c:48 msgid "_Help" msgstr "도움말(_H)" #: shell/menu.c:52 msgid "Generate _Report" msgstr "보고서 생성(_R)" #: shell/menu.c:53 msgid "Generates a report with detailed system information" msgstr "자세한 시스템 정보가 포함된 보고서 생성" #: shell/menu.c:57 shell/syncmanager.c:692 msgid "Synchronize" msgstr "동기화" #: shell/menu.c:58 msgid "Send benchmark results and receive updated data from the network" msgstr "벤치마크 결과 전송 및 네트워크에서 업데이트된 데이터 수신" #: shell/menu.c:73 msgid "_Refresh" msgstr "새로고침(_R)" #: shell/menu.c:78 msgid "_Open HardInfo2 Web Site" msgstr "HardInfo2 웹사이트 열기(_O)" #: shell/menu.c:83 msgid "_Report bug" msgstr "버그 신고(_R)" #: shell/menu.c:88 msgid "_About HardInfo2" msgstr "Hardinfo 정보(_A)" #: shell/menu.c:89 msgid "Displays program version information" msgstr "프로그램 버전 정보 표시" #: shell/menu.c:93 msgid "_Quit" msgstr "끝내기(_Q)" #: shell/menu.c:100 msgid "_Side Pane" msgstr "사이드바(_S)" #: shell/menu.c:101 msgid "Toggles side pane visibility" msgstr "측면 창 가시성 전환" #: shell/menu.c:104 msgid "_Toolbar" msgstr "도구모음(_T)" #: shell/menu.c:108 msgid "Synchronize on startup" msgstr "" #: shell/menu.c:113 msgid "Disable Theme" msgstr "" #: shell/menu.c:117 msgid "Theme Motherboard" msgstr "" #: shell/menu.c:121 msgid "Theme Graffiti" msgstr "" #: shell/menu.c:125 msgid "Theme Anime PC" msgstr "" #: shell/menu.c:129 msgid "Theme Tux Star" msgstr "" #: shell/menu.c:133 msgid "Theme PixArt" msgstr "" #: shell/menu.c:137 msgid "Theme Silicon" msgstr "" #: shell/report.c:772 shell/report.c:780 msgid "Save File" msgstr "파일을 저장" #: shell/report.c:775 shell/report.c:1252 shell/syncmanager.c:780 msgid "_Cancel" msgstr "취소(_C)" #: shell/report.c:777 msgid "_Save" msgstr "저장(_S)" #: shell/report.c:952 msgid "Cannot create ReportContext. Programming bug?" msgstr "ReportContext를 생성할 수 없습니다. 프로그래밍 버그?" #: shell/report.c:972 msgid "Open the report with your web browser?" msgstr "웹 브라우저로 보고서를 여시겠습니까?" #: shell/report.c:975 msgid "_No" msgstr "아니오(_N)" #: shell/report.c:976 msgid "_Open" msgstr "열기(_O)" #: shell/report.c:1007 msgid "Generating report..." msgstr "보고서 생성 중..." #: shell/report.c:1017 msgid "Report saved." msgstr "보고서가 저장되었습니다." #: shell/report.c:1019 msgid "Error while creating the report." msgstr "보고서를 만드는 동안 오류가 발생했습니다." #: shell/report.c:1121 msgid "Generate Report" msgstr "보고서 생성" #: shell/report.c:1146 msgid "" "Generate Report\n" "Please choose the information that you wish to view in your report:" msgstr "" "보고서 생성\n" "보고서에서 보고 싶은 정보를 선택하십시오:" #: shell/report.c:1218 msgid "Select _None" msgstr "선택 안함(_N)" #: shell/report.c:1229 msgid "Select _All" msgstr "모두 선택(_A)" #: shell/report.c:1262 msgid "_Generate" msgstr "생성(_G)" #: shell/shell.c:517 #, c-format msgid "%s - System Information and Benchmark" msgstr "" #: shell/shell.c:910 msgid "Loading modules..." msgstr "모듈 로드 중..." #: shell/shell.c:1681 msgid "URL" msgstr "URL" #: shell/shell.c:1688 msgid "Support URL" msgstr "지원 URL" #: shell/shell.c:1699 msgid "Wikipedia" msgstr "위키피디아" #: shell/shell.c:2033 #, c-format msgid "%s → Summary" msgstr "%s → 요약" #: shell/shell.c:2139 msgid "Updating..." msgstr "업데이트 중..." #: shell/syncmanager.c:80 msgid "" "Synchronize with Central Database\n" "The following information may be synchronized\n" "with the HardInfo2 central database." msgstr "" "중앙 데이터베이스와 동기화\n" "다음 정보가 동기화될 수 있습니다.\n" "HardInfo2 중앙 데이터베이스와 함께." #: shell/syncmanager.c:84 msgid "" "Synchronizing\n" "This may take some time." msgstr "" "동기화 중\n" "시간이 다소 걸릴 수 있습니다." #: shell/syncmanager.c:546 msgid "(canceled)" msgstr "(취소 된)" #: shell/syncmanager.c:562 msgid "(failed)" msgstr "(실패한)" #: shell/syncmanager.c:658 modules/benchmark.c:932 msgid "Send benchmark results" msgstr "벤치마크 결과 보내기" #: shell/syncmanager.c:767 msgid "Privacy Policy" msgstr "개인 정보 정책" #: shell/syncmanager.c:789 msgid "_Synchronize" msgstr "동기화(_S)" #: shell/syncmanager.c:838 #, c-format msgid "Synchronizing: %s" msgstr "" #: modules/benchmark/benches.c:136 msgid "CPU Blowfish (Single-thread)" msgstr "CPU Blowfish (단일 스레드)" #: modules/benchmark/benches.c:144 msgid "CPU Blowfish (Multi-thread)" msgstr "CPU Blowfish (다중 스레드)" #: modules/benchmark/benches.c:152 msgid "CPU Blowfish (Multi-core)" msgstr "CPU Blowfish (다중 코어)" #: modules/benchmark/benches.c:160 msgid "CPU Zlib" msgstr "" #: modules/benchmark/benches.c:168 msgid "CPU CryptoHash" msgstr "" #: modules/benchmark/benches.c:176 msgid "CPU Fibonacci" msgstr "" #: modules/benchmark/benches.c:184 msgid "CPU N-Queens" msgstr "" #: modules/benchmark/benches.c:192 msgid "FPU FFT" msgstr "FPU FFT" #: modules/benchmark/benches.c:200 msgid "FPU Raytracing (Single-thread)" msgstr "" #: modules/benchmark/benches.c:208 msgid "Internal Network Speed" msgstr "" #: modules/benchmark/benches.c:216 msgid "SysBench CPU (Single-thread)" msgstr "SysBench CPU(단일 스레드)" #: modules/benchmark/benches.c:224 msgid "SysBench CPU (Multi-thread)" msgstr "SysBench CPU(다중 스레드)" #: modules/benchmark/benches.c:232 msgid "SysBench CPU (Four threads)" msgstr "SysBench CPU(4개 스레드)" #: modules/benchmark/benches.c:240 msgid "SysBench Memory (Single-thread)" msgstr "SysBench 메모리(단일 스레드)" #: modules/benchmark/benches.c:248 msgid "SysBench Memory (Two threads)" msgstr "SysBench 메모리(2개의 스레드)" #: modules/benchmark/benches.c:256 msgid "SysBench Memory (Quad threads)" msgstr "" #: modules/benchmark/benches.c:264 msgid "SysBench Memory (Multi-thread)" msgstr "" #: modules/benchmark/benches.c:272 msgid "GPU Drawing" msgstr "GPU 도면" #: modules/benchmark/benches.c:281 msgid "GPU OpenGL Drawing" msgstr "" #: modules/benchmark/benches.c:290 msgid "Storage R/W Speed" msgstr "" #: modules/benchmark/benches.c:304 msgid "" "Alexey Kopytov's sysbench is required.\n" "Results in events/second. Higher is better." msgstr "" "Alexey Kopytov의 sysbench가 필요합니다.\n" "events/초의 결과입니다. 높을수록 좋습니다." #: modules/benchmark/benches.c:310 msgid "" "Alexey Kopytov's sysbench is required.\n" "Results in MiB/second. Higher is better." msgstr "" "Alexey Kopytov의 sysbench가 필요합니다.\n" "MiB/초 단위의 결과입니다. 높을수록 좋습니다." #: modules/benchmark/benches.c:313 msgid "" "iperf3 is required.\n" "Results in Gbits/s. Higher is better." msgstr "" #: modules/benchmark/benches.c:324 msgid "Results in HIMarks. Higher is better." msgstr "HIMark의 결과입니다. 높을수록 좋습니다." #: modules/benchmark/benches.c:326 msgid "" "Results in HIMarks. Higher is better.\n" "Many Desktop Environments only uses software." msgstr "" #: modules/benchmark/benches.c:329 msgid "Results in MB/s. Higher is better." msgstr "" #: modules/benchmark/benches.c:332 msgid "Results in FPS. Higher is better." msgstr "" #. !/ Used for an unknown value. Having it in only one place cleans up the .po #. * line references #: modules/benchmark/bench_results.c:34 modules/computer.c:41 #: modules/computer/display.c:40 modules/computer/display.c:57 #: modules/computer/os.c:400 modules/computer/os.c:457 modules/devices.c:596 #: modules/devices/dmi_memory.c:699 modules/devices/dmi_memory.c:835 #: modules/devices/gpu.c:40 modules/devices/gpu.c:58 modules/devices/gpu.c:122 #: modules/devices/gpu.c:130 modules/devices/gpu.c:210 #: modules/devices/gpu.c:211 modules/devices/gpu.c:230 #: modules/devices/inputdevices.c:51 modules/devices/monitors.c:28 #: modules/devices/monitors.c:29 modules/devices/monitors.c:155 #: modules/devices/monitors.c:164 modules/devices/pci.c:25 #: modules/devices/pci.c:149 modules/devices/pci.c:150 #: modules/devices/spd-decode.c:358 modules/devices/spd-decode.c:359 #: modules/devices/spd-decode.c:362 modules/devices/spd-decode.c:363 #: modules/devices/spd-decode.c:584 modules/devices/spd-decode.c:899 #: modules/devices/spd-decode.c:900 modules/devices/spd-decode.c:1111 #: modules/devices/spd-decode.c:1350 modules/devices/storage.c:27 #: modules/devices/storage.c:307 modules/devices/storage.c:336 #: modules/devices/storage.c:431 modules/devices/usb.c:29 #: modules/network/net.c:460 includes/cpu_util.h:11 includes/spd-decode.h:24 #: includes/spd-decode.h:25 msgid "(Unknown)" msgstr "(알 수 없음)" #: modules/benchmark/bench_results.c:261 modules/devices/alpha/processor.c:90 #: modules/devices/arm/processor.c:289 modules/devices/arm/processor.c:302 #: modules/devices/arm/processor.c:344 modules/devices/arm/processor.c:509 #: modules/devices.c:430 modules/devices.c:438 modules/devices.c:466 #: modules/devices/e2k/processor.c:363 modules/devices/e2k/processor.c:400 #: modules/devices/gpu.c:125 modules/devices/gpu.c:127 #: modules/devices/gpu.c:133 modules/devices/gpu.c:135 #: modules/devices/gpu.c:233 modules/devices/gpu.c:235 #: modules/devices/ia64/processor.c:167 modules/devices/ia64/processor.c:196 #: modules/devices/loongarch64/processor.c:98 #: modules/devices/m68k/processor.c:87 modules/devices/mips/processor.c:77 #: modules/devices/parisc/processor.c:158 #: modules/devices/parisc/processor.c:191 modules/devices/ppc/processor.c:160 #: modules/devices/ppc/processor.c:187 modules/devices/riscv/processor.c:246 #: modules/devices/riscv/processor.c:276 modules/devices/s390/processor.c:160 #: modules/devices/sh/processor.c:87 modules/devices/sh/processor.c:88 #: modules/devices/sh/processor.c:89 modules/devices/x86/processor.c:317 #: modules/devices/x86/processor.c:330 modules/devices/x86/processor.c:658 #: modules/devices/x86/processor.c:790 msgid "MHz" msgstr "MHz" #: modules/benchmark/bench_results.c:293 modules/devices.c:177 #, c-format msgid "%d physical processor" msgid_plural "%d physical processors" msgstr[0] "%d개의 물리적 프로세서" #: modules/benchmark/bench_results.c:294 modules/devices.c:178 #, c-format msgid "%d core" msgid_plural "%d cores" msgstr[0] "%d 코어" #: modules/benchmark/bench_results.c:295 modules/devices.c:179 #, c-format msgid "%d thread" msgid_plural "%d threads" msgstr[0] "%d 스레드" #: modules/benchmark/bench_results.c:300 modules/devices.c:181 #, c-format msgid "%d NUMA node" msgid_plural "%d NUMA nodes" msgstr[0] "%d NUMA 노드" #. !/NP procs; NC cores across NN nodes; NT threads #: modules/benchmark/bench_results.c:304 #, c-format msgid "%s; %s across %s; %s" msgstr "%s; %s에서 %s; %s" #. !/NP procs; NC cores; NT threads #: modules/benchmark/bench_results.c:309 #, c-format msgid "%s; %s; %s" msgstr "%s; %s; %s" #: modules/benchmark/bench_results.c:383 modules/benchmark/bench_results.c:508 #: modules/computer.c:1041 modules/devices/dmi_memory.c:639 #: modules/devices/dmi_memory.c:649 modules/devices/dmi_memory.c:703 #: modules/devices/dmi_memory.c:791 modules/devices/dmi_memory.c:837 #: modules/devices/dmi_memory.c:920 modules/devices/spd-decode.c:1354 #: modules/network/net.c:416 modules/network/net.c:440 #: modules/network/net.c:441 msgid "MiB" msgstr "MiB" #: modules/benchmark/bench_results.c:388 modules/benchmark/bench_results.c:507 msgid "kiB" msgstr "kiB" #: modules/benchmark/bench_results.c:396 modules/benchmark/bench_results.c:452 #, c-format msgid "%d-bit" msgstr "%d비트" #: modules/benchmark/bench_results.c:417 modules/benchmark/bench_results.c:482 msgid "Benchmark Result" msgstr "벤치마크 결과" #: modules/benchmark/bench_results.c:417 modules/benchmark/bench_results.c:482 msgid "Threads" msgstr "스레드" #: modules/benchmark/bench_results.c:418 modules/benchmark/bench_results.c:484 msgid "Elapsed Time" msgstr "경과 시간" #: modules/benchmark/bench_results.c:418 modules/benchmark/bench_results.c:484 msgid "seconds" msgstr "초" #: modules/benchmark/bench_results.c:419 modules/computer/languages.c:101 #: modules/devices/arm/processor.c:354 modules/devices/e2k/processor.c:362 #: modules/devices/gpu.c:203 modules/devices/ia64/processor.c:166 #: modules/devices/loongarch64/processor.c:97 modules/devices/pci.c:146 #: modules/devices/ppc/processor.c:159 msgid "Revision" msgstr "개정" #: modules/benchmark/bench_results.c:420 modules/benchmark/bench_results.c:485 msgid "Extra Information" msgstr "추가 정보" #: modules/benchmark/bench_results.c:422 modules/benchmark/bench_results.c:487 msgid "Note" msgstr "메모" #: modules/benchmark/bench_results.c:423 modules/benchmark/bench_results.c:488 msgid "" "This result is from an old version of HardInfo. Results might not be " "comparable to current version. Some details are missing." msgstr "" #: modules/benchmark/bench_results.c:427 modules/benchmark/bench_results.c:492 #: modules/devices/devicetree/pmac_data.c:81 modules/devices/sh/processor.c:85 msgid "Machine" msgstr "머신" #: modules/benchmark/bench_results.c:428 modules/benchmark/bench_results.c:492 #: modules/devices/devicetree.c:207 modules/devices/dmi.c:48 msgid "Board" msgstr "보드" #: modules/benchmark/bench_results.c:429 modules/benchmark/bench_results.c:494 #: modules/computer.c:583 msgid "Machine Type" msgstr "머신 유형" #: modules/benchmark/bench_results.c:430 modules/benchmark/bench_results.c:497 msgid "CPU Name" msgstr "CPU 이름" #: modules/benchmark/bench_results.c:431 modules/benchmark/bench_results.c:498 msgid "CPU Description" msgstr "CPU 설명" #: modules/benchmark/bench_results.c:432 modules/benchmark/bench_results.c:500 #: modules/benchmark.c:601 msgid "CPU Config" msgstr "CPU 구성" #: modules/benchmark/bench_results.c:433 modules/benchmark/bench_results.c:500 msgid "Threads Available" msgstr "사용 가능한 스레드" #: modules/benchmark/bench_results.c:434 modules/benchmark/bench_results.c:501 #: modules/benchmark.c:579 msgid "GPU" msgstr "GPU" #: modules/benchmark/bench_results.c:435 modules/benchmark/bench_results.c:503 #: modules/computer.c:595 msgid "OpenGL Renderer" msgstr "OpenGL 렌더러" #: modules/benchmark/bench_results.c:436 modules/benchmark/bench_results.c:505 #: modules/benchmark.c:590 modules/computer.c:1145 modules/devices.c:109 msgid "Storage" msgstr "저장장치" #: modules/benchmark/bench_results.c:437 modules/benchmark/bench_results.c:507 #: modules/computer.c:140 modules/computer.c:582 modules/computer.c:1144 #: modules/devices/gpu.c:206 msgid "Memory" msgstr "메모리" #: modules/benchmark/bench_results.c:438 modules/benchmark/bench_results.c:509 msgid "Pointer Size" msgstr "포인터 크기" #: modules/benchmark/bench_results.c:482 msgid "Benchmark" msgstr "벤치마크" #: modules/benchmark/bench_results.c:483 modules/devices/dmi_memory.c:859 #: modules/devices/firmware.c:245 modules/devices/monitors.c:495 #: modules/devices/x86/processor.c:692 msgid "Result" msgstr "결과" #: modules/benchmark/bench_results.c:495 msgid "Linux Kernel" msgstr "" #: modules/benchmark/bench_results.c:496 msgid "Linux OS" msgstr "" #: modules/benchmark/bench_results.c:507 msgid "Physical Memory" msgstr "물리적 메모리" #: modules/benchmark/bench_results.c:511 msgid "Handles" msgstr "핸들" #: modules/benchmark/bench_results.c:511 msgid "mid" msgstr "중반" #: modules/benchmark/bench_results.c:512 msgid "cfg_val" msgstr "" #: modules/benchmark.c:352 msgid "This Machine" msgstr "이 머신" #: modules/benchmark.c:578 modules/benchmark.c:589 modules/benchmark.c:601 msgid "Results" msgstr "결과" #: modules/benchmark.c:602 modules/devices/sparc/processor.c:75 msgid "CPU" msgstr "CPU" #: modules/benchmark.c:678 #, c-format msgid "Benchmarking: %s." msgstr "벤치마킹: %s." #: modules/benchmark.c:685 msgid "Stop" msgstr "" #: modules/benchmark.c:697 msgid "" "Please do not move your mouse\n" "or press any keys." msgstr "" #: modules/benchmark.c:767 msgid "Benchmarks" msgstr "벤치마크" #: modules/benchmark.c:777 msgid "Perform tasks and compare with other systems" msgstr "작업 수행 및 다른 시스템과 비교" #: modules/benchmark.c:938 msgid "Receive benchmark results" msgstr "벤치마크 결과 수신" #: modules/computer/alsa.c:26 modules/computer.c:599 msgid "Audio Devices" msgstr "오디오 장치" #: modules/computer/alsa.c:34 msgid "Audio Adapter" msgstr "오디오 어댑터" #: modules/computer.c:96 modules/devices/firmware.c:74 msgid "Summary" msgstr "요약" #: modules/computer.c:97 modules/computer.c:585 modules/computer.c:1143 msgid "Operating System" msgstr "운영체제" #: modules/computer.c:98 msgid "Security" msgstr "보안" #: modules/computer.c:99 modules/devices/gpu.c:211 modules/devices/pci.c:150 msgid "Kernel Modules" msgstr "커널 모듈" #: modules/computer.c:100 modules/computer.c:741 msgid "Boots" msgstr "부팅" #: modules/computer.c:101 msgid "Languages" msgstr "언어" #: modules/computer.c:102 msgid "Memory Usage" msgstr "메모리 사용량" #: modules/computer.c:103 msgid "Filesystems" msgstr "파일 시스템" #: modules/computer.c:104 modules/computer.c:590 msgid "Display" msgstr "디스플레이" #: modules/computer.c:105 modules/computer/environment.c:37 msgid "Environment Variables" msgstr "환경 변수" #: modules/computer.c:107 modules/computer.c:109 msgid "Development" msgstr "개발" #: modules/computer.c:111 modules/computer.c:884 msgid "Users" msgstr "사용자" #: modules/computer.c:112 msgid "Groups" msgstr "그룹" #: modules/computer.c:142 #, c-format msgid "%dMB (%dMB used)" msgstr "%dMB(%dMB 사용)" #: modules/computer.c:144 modules/computer.c:646 msgid "Uptime" msgstr "가동 시간" #: modules/computer.c:146 modules/computer.c:587 msgid "Date/Time" msgstr "날짜/시간" #: modules/computer.c:151 modules/computer.c:647 msgid "Load Average" msgstr "평균 대기" #: modules/computer.c:266 msgid "Scripting Languages" msgstr "스크립팅 언어" #: modules/computer.c:267 msgid "Gambas3 (gbr3)" msgstr "Gambas3 (gbr3)" #: modules/computer.c:268 msgid "Python (default)" msgstr "파이썬 (기본값)" #: modules/computer.c:269 msgid "Python2" msgstr "파이썬2" #: modules/computer.c:270 msgid "Python3" msgstr "파이썬3" #: modules/computer.c:271 msgid "Perl" msgstr "펄" #: modules/computer.c:272 msgid "Rakudo (Perl6)" msgstr "" #: modules/computer.c:273 msgid "PHP" msgstr "PHP" #: modules/computer.c:274 msgid "Ruby" msgstr "루비" #: modules/computer.c:275 msgid "Bash" msgstr "Bash" #: modules/computer.c:276 msgid "JavaScript (Node.js)" msgstr "자바스크립트 (Node.js)" #: modules/computer.c:277 msgid "awk" msgstr "" #: modules/computer.c:278 msgid "Compilers" msgstr "컴파일러" #: modules/computer.c:279 msgid "C (GCC)" msgstr "C (GCC)" #: modules/computer.c:280 msgid "C (Clang)" msgstr "C(클랭)" #: modules/computer.c:281 msgid "D (dmd)" msgstr "D (dmd)" #: modules/computer.c:282 msgid "Gambas3 (gbc3)" msgstr "" #: modules/computer.c:283 msgid "Java" msgstr "자바" #: modules/computer.c:284 msgid ".NET" msgstr "" #: modules/computer.c:285 msgid "Vala" msgstr "발라" #: modules/computer.c:286 msgid "Haskell (GHC)" msgstr "하스켈(GHC)" #: modules/computer.c:287 msgid "FreePascal" msgstr "프리 파스칼" #: modules/computer.c:288 msgid "Go" msgstr "" #: modules/computer.c:289 msgid "Rust" msgstr "Rust" #: modules/computer.c:290 msgid "Tools" msgstr "도구" #: modules/computer.c:291 msgid "make" msgstr "make" #: modules/computer.c:292 msgid "ninja" msgstr "ninja" #: modules/computer.c:293 msgid "GDB" msgstr "GDB" #: modules/computer.c:294 msgid "LLDB" msgstr "LLDB" #: modules/computer.c:295 msgid "strace" msgstr "" #: modules/computer.c:296 msgid "valgrind" msgstr "" #: modules/computer.c:297 msgid "QMake" msgstr "" #: modules/computer.c:298 msgid "CMake" msgstr "CMake" #: modules/computer.c:299 msgid "Gambas3 IDE" msgstr "" #: modules/computer.c:300 msgid "Radare2" msgstr "Radare2" #: modules/computer.c:301 msgid "ltrace" msgstr "" #: modules/computer.c:302 msgid "Powershell" msgstr "파워쉘" #: modules/computer.c:343 msgid "Not found" msgstr "찾을 수 없음" #: modules/computer.c:348 #, c-format msgid "Detecting version: %s" msgstr "버전 감지 중: %s" #: modules/computer.c:366 msgid "Program" msgstr "프로그램" #: modules/computer.c:366 modules/computer.c:629 modules/computer.c:631 #: modules/computer.c:807 modules/computer/modules.c:372 #: modules/devices/dmi.c:41 modules/devices/dmi.c:47 modules/devices/dmi.c:51 #: modules/devices/dmi.c:57 modules/devices/firmware.c:75 #: modules/devices/inputdevices.c:146 modules/devices/monitors.c:409 msgid "Version" msgstr "버전" #: modules/computer.c:385 msgid "Field" msgstr "필드" #: modules/computer.c:385 modules/computer.c:730 modules/computer/modules.c:370 #: modules/computer/modules.c:371 modules/devices/arm/processor.c:479 msgid "Description" msgstr "설명" #: modules/computer.c:385 modules/devices.c:841 msgid "Value" msgstr "값" #: modules/computer.c:402 modules/computer.c:404 msgid "Single-board computer" msgstr "싱글 보드 컴퓨터" #: modules/computer.c:455 modules/computer.c:457 msgid "Unknown physical machine type" msgstr "알 수 없는 물리적 머신 유형" #: modules/computer.c:479 modules/computer.c:480 modules/computer.c:527 #: modules/computer.c:529 msgid "Virtual (VMware)" msgstr "가상(VMware)" #: modules/computer.c:482 modules/computer.c:483 modules/computer.c:484 #: modules/computer.c:485 msgid "Virtual (QEMU)" msgstr "가상(QEMU)" #: modules/computer.c:487 modules/computer.c:488 msgid "Virtual (Unknown)" msgstr "가상(알 수 없음)" #: modules/computer.c:490 modules/computer.c:491 modules/computer.c:492 #: modules/computer.c:520 modules/computer.c:522 msgid "Virtual (VirtualBox)" msgstr "가상(VirtualBox)" #: modules/computer.c:494 modules/computer.c:495 modules/computer.c:496 #: modules/computer.c:511 modules/computer.c:513 msgid "Virtual (Xen)" msgstr "가상(Xen)" #: modules/computer.c:498 msgid "Virtual (hypervisor present)" msgstr "가상(하이퍼바이저 있음)" #: modules/computer.c:579 modules/computer.c:1097 msgid "Computer" msgstr "컴퓨터" #: modules/computer.c:586 modules/computer.c:640 msgid "User Name" msgstr "사용자 이름" #: modules/computer.c:591 msgid "Resolution" msgstr "해결" #: modules/computer.c:591 modules/computer.c:812 #, c-format msgid "%dx%d pixels" msgstr "%dx%d픽셀" #: modules/computer.c:593 msgid "Display Adapter" msgstr "디스플레이 어댑터" #: modules/computer.c:596 msgid "Session Display Server" msgstr "세션 디스플레이 서버" #: modules/computer.c:601 modules/devices.c:108 msgid "Input Devices" msgstr "입력 장치" #: modules/computer.c:629 msgid "Kernel" msgstr "커널" #: modules/computer.c:630 msgid "Command Line" msgstr "명령줄" #: modules/computer.c:632 msgid "C Library" msgstr "C 라이브러리" #: modules/computer.c:633 msgid "Distribution" msgstr "분포" #: modules/computer.c:638 msgid "Current Session" msgstr "현재 세션" #: modules/computer.c:639 msgid "Computer Name" msgstr "컴퓨터 이름" #: modules/computer.c:641 modules/computer/languages.c:99 msgid "Language" msgstr "언어" #: modules/computer.c:642 modules/computer/users.c:53 msgid "Home Directory" msgstr "홈 디렉토리" #: modules/computer.c:643 msgid "Desktop Environment" msgstr "데스크탑 환경" #: modules/computer.c:646 msgid "Misc" msgstr "기타" #: modules/computer.c:660 msgid "HardInfo2" msgstr "" #: modules/computer.c:661 msgid "HardInfo2 running as" msgstr "다음으로 실행되는 HardInfo2" #: modules/computer.c:662 msgid "Superuser" msgstr "수퍼유저" #: modules/computer.c:662 msgid "User" msgstr "사용자" #: modules/computer.c:666 msgid "Health" msgstr "상태" #: modules/computer.c:668 msgid "Available entropy in /dev/random" msgstr "/dev/random에서 사용 가능한 엔트로피" #: modules/computer.c:672 msgid "Hardening Features" msgstr "Hardening 기능" #: modules/computer.c:673 msgid "ASLR" msgstr "ASLR" #: modules/computer.c:674 msgid "dmesg" msgstr "dmesg" #: modules/computer.c:678 msgid "Linux Security Modules" msgstr "Linux 보안 모듈" #: modules/computer.c:679 msgid "Modules available" msgstr "사용 가능한 모듈" #: modules/computer.c:680 msgid "SELinux status" msgstr "SELinux 상태" #: modules/computer.c:686 msgid "CPU Vulnerabilities" msgstr "CPU 취약점" #: modules/computer.c:727 msgid "Loaded Modules" msgstr "로드된 모듈" #: modules/computer.c:729 modules/computer.c:757 modules/computer.c:897 #: modules/computer/languages.c:95 modules/computer/modules.c:370 #: modules/devices/arm/processor.c:478 modules/devices/dmi.c:38 #: modules/devices/dmi.c:49 modules/devices/e2k/processor.c:358 #: modules/devices/gpu.c:301 modules/devices/ia64/processor.c:160 #: modules/devices/inputdevices.c:141 modules/devices/monitors.c:403 #: modules/devices/monitors.c:505 modules/devices/sh/processor.c:84 #: modules/devices/x86/processor.c:750 modules/network.c:333 msgid "Name" msgstr "이름" #: modules/computer.c:743 msgid "Date & Time" msgstr "날짜 & 시간" #: modules/computer.c:744 msgid "Kernel Version" msgstr "커널 버전" #: modules/computer.c:754 msgid "Available Languages" msgstr "사용 가능한 언어" #: modules/computer.c:756 msgid "Language Code" msgstr "언어 코드" #: modules/computer.c:768 msgid "Mounted File Systems" msgstr "마운트된 파일 시스템" #: modules/computer.c:770 modules/computer/filesystem.c:89 msgid "Mount Point" msgstr "마운트 포인트" #: modules/computer.c:771 msgid "Usage" msgstr "사용량" #: modules/computer.c:772 modules/devices.c:865 modules/devices.c:879 #: modules/devices/e2k/processor.c:416 modules/devices/gpu.c:85 #: modules/devices/gpu.c:93 modules/devices/gpu.c:293 modules/devices/pci.c:102 #: modules/devices/pci.c:110 modules/devices/pci.c:154 #: modules/devices/storage.c:48 modules/devices/storage.c:57 #: modules/devices/usb.c:172 modules/devices/usb.c:184 #: modules/devices/x86/processor.c:811 msgid "Device" msgstr "장치" #: modules/computer.c:795 msgid "Session" msgstr "세션" #: modules/computer.c:796 modules/devices.c:842 modules/devices.c:879 #: modules/devices/dmi.c:56 modules/devices/dmi_memory.c:729 #: modules/devices/inputdevices.c:142 modules/devices/spd-decode.c:1377 #: modules/devices/x86/processor.c:715 msgid "Type" msgstr "유형" #: modules/computer.c:799 msgid "Wayland" msgstr "웨이랜드" #: modules/computer.c:800 modules/computer.c:805 msgid "Current Display Name" msgstr "현재 표시 이름" #: modules/computer.c:804 msgid "X Server" msgstr "X 서버" #: modules/computer.c:806 modules/computer.c:846 modules/computer.c:869 #: modules/devices.c:879 modules/devices/dmi.c:40 modules/devices/dmi.c:46 #: modules/devices/dmi.c:50 modules/devices/dmi.c:55 #: modules/devices/dmi_memory.c:730 modules/devices/dmi_memory.c:873 #: modules/devices/e2k/processor.c:359 modules/devices/firmware.c:75 #: modules/devices/firmware.c:167 modules/devices/firmware.c:172 #: modules/devices/firmware.c:219 modules/devices/gpu.c:84 #: modules/devices/gpu.c:92 modules/devices/gpu.c:292 #: modules/devices/ia64/processor.c:161 modules/devices/inputdevices.c:144 #: modules/devices/monitors.c:402 modules/devices/pci.c:101 #: modules/devices/pci.c:109 modules/devices/storage.c:47 #: modules/devices/storage.c:56 modules/devices/storage.c:282 #: modules/devices/storage.c:572 modules/devices/storage.c:777 #: modules/devices/usb.c:171 modules/devices/x86/processor.c:654 msgid "Vendor" msgstr "공급자" #: modules/computer.c:808 msgid "Release Number" msgstr "릴리즈 번호" #: modules/computer.c:816 msgid "Screens" msgstr "스크린" #: modules/computer.c:822 msgid "Disconnected" msgstr "연결 끊김" #: modules/computer.c:825 msgid "Connected" msgstr "연결됨" #: modules/computer.c:833 msgid "Unused" msgstr "미사용" #: modules/computer.c:834 #, c-format msgid "%dx%d pixels, offset (%d, %d)" msgstr "%dx%d 픽셀, 오프셋(%d, %d)" #: modules/computer.c:843 msgid "Outputs (XRandR)" msgstr "출력(XRandR)" #: modules/computer.c:845 msgid "OpenGL (GLX)" msgstr "" #: modules/computer.c:847 msgid "Renderer" msgstr "렌더러" #: modules/computer.c:848 msgid "Direct Rendering" msgstr "직접 렌더링" #: modules/computer.c:849 modules/computer/modules.c:352 #: modules/computer/modules.c:353 modules/devices/inputdevices.c:153 #: modules/devices/printers.c:145 modules/devices/spd-decode.c:888 #: modules/devices/spd-decode.c:1100 msgid "Yes" msgstr "네" #: modules/computer.c:849 modules/computer/modules.c:352 #: modules/computer/modules.c:353 modules/devices/printers.c:145 #: modules/devices/spd-decode.c:886 modules/devices/spd-decode.c:1097 msgid "No" msgstr "아니오" #: modules/computer.c:850 msgid "Version (Compatibility)" msgstr "버전(호환성)" #: modules/computer.c:851 msgid "Shading Language Version (Compatibility)" msgstr "셰이딩 언어 버전 (호환성)" #: modules/computer.c:852 msgid "Version (Core)" msgstr "버전(코어)" #: modules/computer.c:853 msgid "Shading Language Version (Core)" msgstr "셰이딩 언어 버전(코어)" #: modules/computer.c:854 msgid "Version (ES)" msgstr "버전 (ES)" #: modules/computer.c:855 msgid "Shading Language Version (ES)" msgstr "셰이딩 언어 버전(ES)" #: modules/computer.c:856 msgid "GLX Version" msgstr "GLX 버전" #: modules/computer.c:864 msgid "Vulkan" msgstr "" #: modules/computer.c:865 msgid "Instance Version" msgstr "" #: modules/computer.c:867 msgid "Api Version" msgstr "" #: modules/computer.c:868 msgid "Driver Version" msgstr "" #: modules/computer.c:870 msgid "Device Type" msgstr "" #: modules/computer.c:871 msgid "Device Name" msgstr "" #: modules/computer.c:872 msgid "Driver Name" msgstr "" #: modules/computer.c:873 msgid "Driver Info" msgstr "" #: modules/computer.c:874 msgid "Conformance Version" msgstr "" #: modules/computer.c:895 msgid "Group" msgstr "그룹" #: modules/computer.c:898 modules/computer/users.c:52 msgid "Group ID" msgstr "그룹 ID" #: modules/computer.c:1037 #, c-format msgid "%0.1f %s available to Linux" msgstr "Linux에서 %0.1f %s 사용 가능" #: modules/computer.c:1039 modules/devices/dmi_memory.c:637 #: modules/devices/dmi_memory.c:647 modules/devices/dmi_memory.c:789 #: modules/devices/dmi_memory.c:918 modules/devices/spd-decode.c:1352 msgid "GiB" msgstr "" #: modules/computer.c:1043 modules/computer/memory_usage.c:73 #: modules/computer/modules.c:370 msgid "KiB" msgstr "" #: modules/computer.c:1116 modules/devices/devicetree/pmac_data.c:82 msgid "Motherboard" msgstr "메인보드" #: modules/computer.c:1144 msgid "Graphics" msgstr "그래픽" #: modules/computer.c:1145 modules/devices.c:105 msgid "Printers" msgstr "프린터" #: modules/computer.c:1145 msgid "Audio" msgstr "오디오" #: modules/computer.c:1194 msgid "Gathers high-level computer information" msgstr "고급 컴퓨터 정보 수집" #: modules/computer.c:1205 msgid "lsmod is required." msgstr "lsmod가 필요합니다." #: modules/computer.c:1213 msgid "" "X.org's xrandr utility provides additional details when " "available." msgstr "" "X.org의 xrandr 유틸리티는 사용 가능한 경우 추가 세부정보를 제공" "합니다." #: modules/computer.c:1214 msgid "" "Mesa's glxinfo utility is required for OpenGL information." msgstr "Mesa의 glxinfo 유틸리티는 OpenGL 정보에 필요합니다." #: modules/computer.c:1215 msgid "" "Vulkan's vulkaninfo utility is required for Vulkan information." msgstr "" #: modules/computer/filesystem.c:87 msgid "Filesystem" msgstr "파일 시스템" #: modules/computer/filesystem.c:88 msgid "Mounted As" msgstr "마운트" #: modules/computer/filesystem.c:88 msgid "Read-Write" msgstr "읽기-쓰기" #: modules/computer/filesystem.c:88 msgid "Read-Only" msgstr "읽기 전용" #: modules/computer/filesystem.c:90 modules/devices.c:865 #: modules/devices/dmi_memory.c:733 modules/devices/dmi_memory.c:766 #: modules/devices/dmi_memory.c:805 modules/devices/dmi_memory.c:872 #: modules/devices/spd-decode.c:1384 msgid "Size" msgstr "크기" #: modules/computer/filesystem.c:91 msgid "Used" msgstr "사용됨" #: modules/computer/filesystem.c:92 msgid "Available" msgstr "사용 가능" #: modules/computer/languages.c:94 msgid "Locale Information" msgstr "로케일 정보" #: modules/computer/languages.c:96 modules/devices/gpu.c:266 #: modules/devices/spd-decode.c:1373 msgid "Source" msgstr "소스" #: modules/computer/languages.c:97 msgid "Address" msgstr "주소" #: modules/computer/languages.c:98 msgid "E-mail" msgstr "이메일" #: modules/computer/languages.c:100 msgid "Territory" msgstr "영역" #: modules/computer/languages.c:102 modules/devices/dmi.c:45 msgid "Date" msgstr "날짜" #: modules/computer/languages.c:103 msgid "Codeset" msgstr "코드셋" #: modules/computer/loadavg.c:64 msgid "Couldn't obtain load average" msgstr "로드 평균을 가져올 수 없습니다." #: modules/computer/memory_usage.c:131 msgid "Total physical memory usable by the system" msgstr "" #: modules/computer/memory_usage.c:132 msgid "Free memory which is not used for anything" msgstr "" #: modules/computer/memory_usage.c:133 msgid "Virtual memory, total swap space available" msgstr "" #: modules/computer/memory_usage.c:134 msgid "Virtual memory, remaining swap space available" msgstr "" #: modules/computer/memory_usage.c:135 msgid "Memory present within main memory and in the swapfile" msgstr "" #: modules/computer/memory_usage.c:136 msgid "HighTotal value can vary based on the type of kernel used" msgstr "" #: modules/computer/memory_usage.c:137 msgid "Amount of memory that is not directly mapped into kernel space" msgstr "" #: modules/computer/memory_usage.c:138 msgid "LowTotal value can vary based on the type of kernel used" msgstr "" #: modules/computer/memory_usage.c:139 msgid "Total and free memory directly mapped into kernel space" msgstr "" #: modules/computer/memory_usage.c:140 msgid "Available memory for allocation to any process, without swapping" msgstr "" #: modules/computer/memory_usage.c:141 msgid "Memory in buffer cache, temporary storage for raw disk blocks" msgstr "" #: modules/computer/memory_usage.c:142 msgid "Memory in the page cache (diskcache, shared memory, tmpfs and shmem)" msgstr "" #: modules/computer/memory_usage.c:143 msgid "Memory used more recently and not swapped out or reclaimed" msgstr "" #: modules/computer/memory_usage.c:144 msgid "Memory not been used recently and can be swapped out or reclaimed" msgstr "" #: modules/computer/memory_usage.c:145 msgid "Anonymous memory used more recently and not swapped out" msgstr "" #: modules/computer/memory_usage.c:146 msgid "Anonymous memory not been used and can be swapped out" msgstr "" #: modules/computer/memory_usage.c:147 msgid "Pagecache memory been used more recently and not reclaimed" msgstr "" #: modules/computer/memory_usage.c:148 msgid "Pagecache memory reclaimable without huge performance impact" msgstr "" #: modules/computer/memory_usage.c:149 msgid "Unevictable pages can't be swapped out for a variety of reasons" msgstr "" #: modules/computer/memory_usage.c:150 msgid "Pages locked to memory using the mlock() system call" msgstr "" #: modules/computer/memory_usage.c:151 msgid "Memory consumed by the zswap backend (compressed size)" msgstr "" #: modules/computer/memory_usage.c:152 msgid "Amount of anonymous memory stored in zswap (original size)" msgstr "" #: modules/computer/memory_usage.c:153 msgid "Memory waiting to be written back to disk" msgstr "" #: modules/computer/memory_usage.c:154 msgid "Memory which is actively being written back to disk" msgstr "" #: modules/computer/memory_usage.c:155 msgid "Non-file backed pages mapped into userspace page tables" msgstr "" #: modules/computer/memory_usage.c:156 msgid "Files which have been mmapped, such as libraries" msgstr "" #: modules/computer/memory_usage.c:157 msgid "Total memory used by shared memory (shmem) and tmpfs" msgstr "" #: modules/computer/memory_usage.c:158 msgid "Kernel allocations reclaimable under memory pressure" msgstr "" #: modules/computer/memory_usage.c:159 msgid "In-kernel data structures cache" msgstr "" #: modules/computer/memory_usage.c:160 msgid "Part of Slab, that might be reclaimed, such as caches" msgstr "" #: modules/computer/memory_usage.c:161 msgid "Part of Slab, that cannot be reclaimed on memory pressure" msgstr "" #: modules/computer/memory_usage.c:162 msgid "Memory consumed by the kernel stacks of all tasks" msgstr "" #: modules/computer/memory_usage.c:163 msgid "Memory consumed by userspace page tables" msgstr "" #: modules/computer/memory_usage.c:164 msgid "Memory consumed by secondary page tables" msgstr "" #: modules/computer/memory_usage.c:165 msgid "Previous counted pages which had been written to the server" msgstr "" #: modules/computer/memory_usage.c:166 msgid "Memory used for block device bounce buffers" msgstr "" #: modules/computer/memory_usage.c:167 msgid "Memory used by FUSE for temporary writeback buffers" msgstr "" #: modules/computer/memory_usage.c:168 msgid "Total memory currently available to be allocated on the system" msgstr "" #: modules/computer/memory_usage.c:169 msgid "The amount of memory presently allocated on the system" msgstr "" #: modules/computer/memory_usage.c:170 msgid "Total size of vmalloc virtual address space" msgstr "" #: modules/computer/memory_usage.c:171 msgid "Amount of vmalloc area which is used" msgstr "" #: modules/computer/memory_usage.c:172 msgid "Largest contiguous block of vmalloc area which is free" msgstr "" #: modules/computer/memory_usage.c:173 msgid "Memory allocated to the percpu allocator" msgstr "" #: modules/computer/memory_usage.c:174 msgid "Amount of memory the kernel identifies as corrupted" msgstr "" #: modules/computer/memory_usage.c:175 msgid "Non-file backed huge pages mapped into userspace page tables" msgstr "" #: modules/computer/memory_usage.c:176 msgid "Memory used by shmem and tmpfs allocated with huge pages" msgstr "" #: modules/computer/memory_usage.c:177 msgid "Shared memory mapped into userspace with huge pages" msgstr "" #: modules/computer/memory_usage.c:178 msgid "Memory used for fs data (page cache) allocated with huge pages" msgstr "" #: modules/computer/memory_usage.c:179 msgid "Page cache mapped into userspace with huge pages" msgstr "" #: modules/computer/memory_usage.c:180 msgid "Memory reserved for the Contiguous Memory Allocator (CMA)" msgstr "" #: modules/computer/memory_usage.c:181 msgid "Free remaining memory in the CMA reserves" msgstr "" #: modules/computer/memory_usage.c:182 msgid "Amount of unaccepted memory usable by the kernel" msgstr "" #: modules/computer/memory_usage.c:183 msgid "Size of the pool of huge pages" msgstr "" #: modules/computer/memory_usage.c:184 msgid "Number of huge pages available" msgstr "" #: modules/computer/memory_usage.c:185 msgid "Number of huge pages reserved" msgstr "" #: modules/computer/memory_usage.c:186 msgid "Number of huge pages surplus" msgstr "" #: modules/computer/memory_usage.c:187 msgid "Huge page size, used in conjunction with hugepages parameter" msgstr "" #: modules/computer/memory_usage.c:188 msgid "Total amount of memory consumed by huge pages of all sizes" msgstr "" #: modules/computer/memory_usage.c:189 msgid "Breakdown of page table sizes of 4k size" msgstr "" #: modules/computer/memory_usage.c:190 msgid "Breakdown of page table sizes of 2M size" msgstr "" #: modules/computer/memory_usage.c:191 msgid "Breakdown of page table sizes of 1G size" msgstr "" #: modules/computer/modules.c:168 msgid "Update kernel module icon table" msgstr "" #: modules/computer/modules.c:338 modules/computer/modules.c:339 #: modules/computer/modules.c:340 modules/computer/modules.c:341 #: modules/computer/modules.c:342 modules/computer/modules.c:343 #: modules/devices/dmi.c:117 modules/devices/firmware.c:245 #: modules/devices/x86/processor.c:694 msgid "(Not available)" msgstr "(사용할 수 없습니다)" #: modules/computer/modules.c:369 msgid "Module Information" msgstr "모듈 정보" #: modules/computer/modules.c:369 modules/devices/gpu.c:298 msgid "Path" msgstr "경로" #: modules/computer/modules.c:369 msgid "Used Memory" msgstr "사용한 메모리" #: modules/computer/modules.c:371 msgid "Version Magic" msgstr "" #: modules/computer/modules.c:372 msgid "In Linus' Tree" msgstr "" #: modules/computer/modules.c:373 msgid "Retpoline Enabled" msgstr "리트폴린 활성화" #: modules/computer/modules.c:373 msgid "Copyright" msgstr "저작권" #: modules/computer/modules.c:373 msgid "Author" msgstr "원작자" #: modules/computer/modules.c:374 msgid "License" msgstr "특허" #: modules/computer/modules.c:380 msgid "Dependencies" msgstr "종속성" #: modules/computer/os.c:153 modules/computer/os.c:154 #: modules/computer/os.c:155 modules/computer/os.c:156 msgid "GNU C Library" msgstr "GNU C 라이브러리" #: modules/computer/os.c:157 msgid "uClibc or uClibc-ng" msgstr "uClibc 또는 uClibc-ng" #: modules/computer/os.c:158 msgid "diet libc" msgstr "" #: modules/computer/os.c:229 modules/computer/os.c:232 msgid "GNOME Shell " msgstr "그놈 쉘 " #: modules/computer/os.c:240 modules/computer/os.c:243 msgid "Version: " msgstr "버전: " #: modules/computer/os.c:261 modules/computer/os.c:264 msgid "MATE Desktop Environment " msgstr "MATE 데스크탑 환경 " #: modules/computer/os.c:297 #, c-format msgid "Unknown (Window Manager: %s)" msgstr "알 수 없음(창 관리자: %s)" #. !/{desktop environment} on {session type} #: modules/computer/os.c:308 #, c-format msgid "%s on %s" msgstr "%s의 %s" #: modules/computer/os.c:376 msgid "Terminal" msgstr "터미널" #: modules/computer/os.c:392 msgid "User access allowed" msgstr "사용자 액세스 허용" #: modules/computer/os.c:394 msgid "User access forbidden" msgstr "사용자 액세스 금지" #: modules/computer/os.c:396 msgid "Access allowed (running as superuser)" msgstr "액세스 허용(수퍼유저로 실행)" #: modules/computer/os.c:398 msgid "Access forbidden? (running as superuser)" msgstr "액세스 금지? (수퍼유저로 실행)" #: modules/computer/os.c:407 modules/computer/os.c:793 msgid "Disabled" msgstr "비활성화" #: modules/computer/os.c:409 msgid "Partially enabled (mmap base+stack+VDSO base)" msgstr "부분적으로 활성화됨(mmap base+stack+VDSO base)" #: modules/computer/os.c:411 msgid "Fully enabled (mmap base+stack+VDSO base+heap)" msgstr "완전히 활성화됨(mmap base+stack+VDSO base+heap)" #. !/bits of entropy for rng (0) #: modules/computer/os.c:420 msgid "(None or not available)" msgstr "(없음 또는 사용할 수 없음)" #. !/bits of entropy for rng (low/poor value) #: modules/computer/os.c:421 #, c-format msgid "%d bits (low)" msgstr "%d비트(낮음)" #. !/bits of entropy for rng (medium value) #: modules/computer/os.c:422 #, c-format msgid "%d bits (medium)" msgstr "%d비트(중간)" #. !/bits of entropy for rng (high/good value) #: modules/computer/os.c:423 #, c-format msgid "%d bits (healthy)" msgstr "%d비트(정상)" #: modules/computer/os.c:788 msgid "Not installed" msgstr "설치되지 않음" #: modules/computer/os.c:791 msgid "Enabled" msgstr "활성화됨" #: modules/computer/users.c:50 msgid "User Information" msgstr "사용자 정보" #: modules/computer/users.c:51 msgid "User ID" msgstr "사용자 ID" #: modules/computer/users.c:54 msgid "Default Shell" msgstr "기본 셸" #: modules/devices/alpha/processor.c:88 modules/devices.c:865 #: modules/devices/devicetree.c:162 modules/devices/devicetree.c:208 #: modules/devices/devicetree/pmac_data.c:80 #: modules/devices/e2k/processor.c:361 modules/devices/e2k/processor.c:416 #: modules/devices/gpu.c:116 modules/devices/ia64/processor.c:165 #: modules/devices/loongarch64/processor.c:96 #: modules/devices/m68k/processor.c:84 modules/devices/mips/processor.c:75 #: modules/devices/monitors.c:404 modules/devices/parisc/processor.c:155 #: modules/devices/ppc/processor.c:158 modules/devices/riscv/processor.c:242 #: modules/devices/s390/processor.c:132 modules/devices/x86/processor.c:811 msgid "Model" msgstr "모델" #: modules/devices/alpha/processor.c:89 msgid "Platform String" msgstr "플랫폼 문자열" #: modules/devices/alpha/processor.c:90 modules/devices/arm/processor.c:344 #: modules/devices/e2k/processor.c:363 modules/devices/e2k/processor.c:416 #: modules/devices/ia64/processor.c:167 #: modules/devices/loongarch64/processor.c:98 #: modules/devices/m68k/processor.c:87 modules/devices/mips/processor.c:77 #: modules/devices/parisc/processor.c:158 modules/devices/ppc/processor.c:160 #: modules/devices/riscv/processor.c:246 modules/devices/sh/processor.c:87 #: modules/devices/x86/processor.c:658 modules/devices/x86/processor.c:811 msgid "Frequency" msgstr "주파수" #: modules/devices/alpha/processor.c:91 modules/devices/arm/processor.c:345 #: modules/devices/e2k/processor.c:364 modules/devices/ia64/processor.c:168 #: modules/devices/m68k/processor.c:88 modules/devices/mips/processor.c:78 #: modules/devices/parisc/processor.c:159 modules/devices/ppc/processor.c:161 #: modules/devices/s390/processor.c:134 modules/devices/sh/processor.c:90 #: modules/devices/x86/processor.c:659 msgid "BogoMips" msgstr "" #: modules/devices/alpha/processor.c:92 modules/devices/arm/processor.c:346 #: modules/devices/e2k/processor.c:365 modules/devices/ia64/processor.c:169 #: modules/devices/loongarch64/processor.c:101 #: modules/devices/m68k/processor.c:89 modules/devices/mips/processor.c:79 #: modules/devices/parisc/processor.c:160 modules/devices/ppc/processor.c:162 #: modules/devices/riscv/processor.c:247 modules/devices/s390/processor.c:135 #: modules/devices/sh/processor.c:91 modules/devices/sparc/processor.c:77 #: modules/devices/x86/processor.c:660 msgid "Byte Order" msgstr "바이트 순서" #. !/flag:swp #: modules/devices/arm/arm_data.c:42 msgctxt "arm-flag" msgid "SWP instruction (atomic read-modify-write)" msgstr "SWP 명령(원자 읽기-수정-쓰기)" #. !/flag:half #: modules/devices/arm/arm_data.c:43 msgctxt "arm-flag" msgid "Half-word loads and stores" msgstr "하프워드 로드 및 저장" #. !/flag:thumb #: modules/devices/arm/arm_data.c:44 msgctxt "arm-flag" msgid "Thumb (16-bit instruction set)" msgstr "Thumb(16비트 명령어 세트)" #. !/flag:26bit #: modules/devices/arm/arm_data.c:45 msgctxt "arm-flag" msgid "26-Bit Model (Processor status register folded into program counter)" msgstr "26비트 모델(프로그램 카운터에 접힌 프로세서 상태 레지스터)" #. !/flag:fastmult #: modules/devices/arm/arm_data.c:46 msgctxt "arm-flag" msgid "32x32->64-bit multiplication" msgstr "32x32->64비트 증식" #. !/flag:fpa #: modules/devices/arm/arm_data.c:47 msgctxt "arm-flag" msgid "Floating point accelerator" msgstr "부동 소수점 가속기" #. !/flag:vfp #: modules/devices/arm/arm_data.c:48 msgctxt "arm-flag" msgid "VFP (early SIMD vector floating point instructions)" msgstr "VFP(초기 SIMD 벡터 부동 소수점 명령어)" #. !/flag:edsp #: modules/devices/arm/arm_data.c:49 msgctxt "arm-flag" msgid "DSP extensions (the 'e' variant of the ARM9 CPUs, and all others above)" msgstr "DSP 확장(ARM9 CPU의 'e' 변형 및 위의 다른 모든 CPU)" #. !/flag:java #: modules/devices/arm/arm_data.c:50 msgctxt "arm-flag" msgid "Jazelle (Java bytecode accelerator)" msgstr "Jazelle(자바 바이트코드 가속기)" #. !/flag:iwmmxt #: modules/devices/arm/arm_data.c:51 msgctxt "arm-flag" msgid "SIMD instructions similar to Intel MMX" msgstr "Intel MMX와 유사한 SIMD 명령어" #. !/flag:crunch #: modules/devices/arm/arm_data.c:52 msgctxt "arm-flag" msgid "MaverickCrunch coprocessor (if kernel support enabled)" msgstr "MaverickCrunch 보조 프로세서(커널 지원이 활성화된 경우)" #. !/flag:thumbee #: modules/devices/arm/arm_data.c:53 msgctxt "arm-flag" msgid "ThumbEE" msgstr "" #. !/flag:neon #: modules/devices/arm/arm_data.c:54 msgctxt "arm-flag" msgid "Advanced SIMD/NEON on AArch32" msgstr "AArch32의 고급 SIMD/NEON" #. !/flag:evtstrm #: modules/devices/arm/arm_data.c:55 msgctxt "arm-flag" msgid "Kernel event stream using generic architected timer" msgstr "일반 아키텍처 타이머를 사용하는 커널 이벤트 스트림" #. !/flag:vfpv3 #: modules/devices/arm/arm_data.c:56 msgctxt "arm-flag" msgid "VFP version 3" msgstr "VFP 버전 3" #. !/flag:vfpv3d16 #: modules/devices/arm/arm_data.c:57 msgctxt "arm-flag" msgid "VFP version 3 with 16 D-registers" msgstr "16개의 D 레지스터가 있는 VFP 버전 3" #. !/flag:vfpv4 #: modules/devices/arm/arm_data.c:58 msgctxt "arm-flag" msgid "VFP version 4 with fast context switching" msgstr "빠른 컨텍스트 전환이 가능한 VFP 버전 4" #. !/flag:vfpd32 #: modules/devices/arm/arm_data.c:59 msgctxt "arm-flag" msgid "VFP with 32 D-registers" msgstr "32개의 D 레지스터가 있는 VFP" #. !/flag:tls #: modules/devices/arm/arm_data.c:60 msgctxt "arm-flag" msgid "TLS register" msgstr "TLS 레지스터" #. !/flag:idiva #: modules/devices/arm/arm_data.c:61 msgctxt "arm-flag" msgid "SDIV and UDIV hardware division in ARM mode" msgstr "ARM 모드에서 SDIV 및 UDIV 하드웨어 분할" #. !/flag:idivt #: modules/devices/arm/arm_data.c:62 msgctxt "arm-flag" msgid "SDIV and UDIV hardware division in Thumb mode" msgstr "Thumb 모드의 SDIV 및 UDIV 하드웨어 분할" #. !/flag:lpae #: modules/devices/arm/arm_data.c:63 msgctxt "arm-flag" msgid "40-bit Large Physical Address Extension" msgstr "40비트 대형 물리적 주소 확장" #. !/flag:pmull #: modules/devices/arm/arm_data.c:65 msgctxt "arm-flag" msgid "64x64->128-bit F2m multiplication (arch>=8)" msgstr "64x64->128비트 F2m 증식(arch>=8)" #. !/flag:aes #: modules/devices/arm/arm_data.c:66 msgctxt "arm-flag" msgid "Crypto:AES (arch>=8)" msgstr "암호화:AES (arch>=8)" #. !/flag:sha1 #: modules/devices/arm/arm_data.c:67 msgctxt "arm-flag" msgid "Crypto:SHA1 (arch>=8)" msgstr "암호화:SHA1(arch>=8)" #. !/flag:sha2 #: modules/devices/arm/arm_data.c:68 msgctxt "arm-flag" msgid "Crypto:SHA2 (arch>=8)" msgstr "암호화:SHA2 (arch>=8)" #. !/flag:crc32 #: modules/devices/arm/arm_data.c:69 msgctxt "arm-flag" msgid "CRC32 checksum instructions (arch>=8)" msgstr "CRC32 체크섬 명령어(arch>=8)" #. !/flag:fp #: modules/devices/arm/arm_data.c:71 msgctxt "arm-flag" msgid "Floating-point on AArch64 (arch>=8)" msgstr "" #. !/flag:asimd #: modules/devices/arm/arm_data.c:72 msgctxt "arm-flag" msgid "Advanced SIMD/NEON on AArch64 (arch>=8)" msgstr "AArch64의 고급 SIMD/NEON(arch>=8)" #. !/flag:atomics #: modules/devices/arm/arm_data.c:73 msgctxt "arm-flag" msgid "Atomic instructions on AArch64 (arch>=8)" msgstr "" #. !/flag:fphp #: modules/devices/arm/arm_data.c:74 msgctxt "arm-flag" msgid "Half precision floating point on AArch64 (arch>=8)" msgstr "" #. !/flag:asimdhp #: modules/devices/arm/arm_data.c:75 msgctxt "arm-flag" msgid "Advanced SIMD with BFloat16 on AArch64 (arch>=8)" msgstr "" #. !/flag:cpuid #: modules/devices/arm/arm_data.c:76 msgctxt "arm-flag" msgid "CPU features can be read on AArch64 (arch>=8)" msgstr "" #. !/flag:asimdrdm #: modules/devices/arm/arm_data.c:77 msgctxt "arm-flag" msgid "Advanced SIMD rounding Double MulAcc on AArch64 (arch>=8)" msgstr "" #. !/flag:jscvt #: modules/devices/arm/arm_data.c:78 msgctxt "arm-flag" msgid "JacaScript conversion on AArch64 (arch>=8)" msgstr "" #. !/flag:fcma #: modules/devices/arm/arm_data.c:79 msgctxt "arm-flag" msgid "Complex number SIMD on AArch64 (arch>=8)" msgstr "" #. !/flag:lrcpc #: modules/devices/arm/arm_data.c:80 msgctxt "arm-flag" msgid "Weak release consistency on AArch64 (arch>=8)" msgstr "" #. !/flag:dcpop #: modules/devices/arm/arm_data.c:81 msgctxt "arm-flag" msgid "Data cache clean to Point of Persistence on AArch64 (arch>=8)" msgstr "" #. !/flag:sha3 #: modules/devices/arm/arm_data.c:82 msgctxt "arm-flag" msgid "SHA-3 instructions on AArch64 (arch>=8)" msgstr "" #. !/flag:sm3 #: modules/devices/arm/arm_data.c:83 msgctxt "arm-flag" msgid "SM3 instructions on AArch64 (arch>=8)" msgstr "" #. !/flag:sm4 #: modules/devices/arm/arm_data.c:84 msgctxt "arm-flag" msgid "SM4 instructions on AArch64 (arch>=8)" msgstr "" #. !/flag:asimddp #: modules/devices/arm/arm_data.c:85 msgctxt "arm-flag" msgid "SIMD Dot Product on AArch64 (arch>=8)" msgstr "" #. !/flag:sha512 #: modules/devices/arm/arm_data.c:86 msgctxt "arm-flag" msgid "SHA512 instructions on AArch64 (arch>=8)" msgstr "" #. !/flag:sve #: modules/devices/arm/arm_data.c:87 msgctxt "arm-flag" msgid "Scalable Vector Extension on AArch64 (arch>=8)" msgstr "" #: modules/devices/arm/processor.c:143 msgid "ARM Processor" msgstr "ARM 프로세서" #: modules/devices/arm/processor.c:214 modules/devices/riscv/processor.c:211 #: modules/devices/x86/processor.c:609 msgid "Empty List" msgstr "빈 목록" #: modules/devices/arm/processor.c:239 modules/devices/gpu.c:204 #: modules/devices/gpu.c:294 modules/devices/x86/processor.c:267 msgid "Clocks" msgstr "클럭" #: modules/devices/arm/processor.c:285 modules/devices/arm/processor.c:298 #: modules/devices/x86/processor.c:313 modules/devices/x86/processor.c:326 #, c-format msgid "%.2f-%.2f %s=%dx\n" msgstr "%.2f-%.2f %s=%dx\n" #: modules/devices/arm/processor.c:341 msgid "Linux Name" msgstr "리눅스 이름" #: modules/devices/arm/processor.c:342 msgid "Decoded Name" msgstr "디코딩된 이름" #: modules/devices/arm/processor.c:343 modules/network/net.c:476 msgid "Mode" msgstr "모드" #: modules/devices/arm/processor.c:349 msgid "ARM" msgstr "" #: modules/devices/arm/processor.c:350 msgid "Implementer" msgstr "구현자" #: modules/devices/arm/processor.c:351 modules/devices/dmi_memory.c:874 msgid "Part" msgstr "부품" #: modules/devices/arm/processor.c:352 modules/devices/ia64/processor.c:162 #: modules/devices/parisc/processor.c:156 modules/devices/riscv/processor.c:243 msgid "Architecture" msgstr "아키텍처" #: modules/devices/arm/processor.c:353 msgid "Variant" msgstr "변형" #: modules/devices/arm/processor.c:355 modules/devices/riscv/processor.c:250 #: modules/devices/sparc/processor.c:78 modules/devices/x86/processor.c:666 msgid "Capabilities" msgstr "기능" #: modules/devices/arm/processor.c:477 msgid "SOC/Package" msgstr "SOC/패키지" #: modules/devices/arm/processor.c:481 modules/devices/x86/processor.c:752 msgid "Logical CPU Config" msgstr "논리적 CPU 구성" #: modules/devices/arm/processor.c:498 msgid "SOC/Package Information" msgstr "SOC/패키지 정보" #: modules/devices/battery.c:178 #, c-format msgid "" "\n" "[Battery: %s]\n" "State=%s (load: %s)\n" "Capacity=%s / %s (%.2f%%)\n" "Battery Technology=%s (%s)\n" "Manufacturer=%s\n" "Model Number=%s\n" "Serial Number=%s\n" msgstr "" "\n" "[배터리: %s]\n" "상태=%s(로드: %s)\n" "용량=%s / %s(%.2f%%)\n" "배터리 기술=%s(%s)\n" "제조업체=%s\n" "모델 번호=%s\n" "시리얼넘버=%s\n" #: modules/devices/battery.c:257 #, c-format msgid "" "\n" "[AC Power Supply: %s]\n" "Online=%s\n" "AC Power Type=%s\n" msgstr "" #: modules/devices/battery.c:279 #, c-format msgid "" "\n" "[Battery: %s]\n" "State=%s\n" "Capacity=%s / %s\n" "Battery Technology=%s\n" "Manufacturer=%s\n" "Model Number=%s\n" "Serial Number=%s\n" msgstr "" "\n" "[배터리: %s]\n" "상태=%s\n" "용량=%s / %s\n" "배터리 기술=%s\n" "제조업체=%s\n" "모델 번호=%s\n" "시리얼넘버=%s\n" #: modules/devices/battery.c:372 #, c-format msgid "" "\n" "[Battery (APM)]\n" "Charge=%d%%\n" "Remaining Charge=%s of %s\n" "Using=%s\n" "APM driver version=%s\n" "APM BIOS version=%s\n" msgstr "" "\n" "[배터리(APM)]\n" "요금=%d%%\n" "남은 충전량=%s/%s\n" "사용=%s\n" "APM 드라이버 버전=%s\n" "APM BIOS 버전=%s\n" #: modules/devices/battery.c:384 #, c-format msgid "" "\n" "[Battery (APM)]\n" "Charge=%d%%\n" "Using=%s\n" "APM driver version=%s\n" "APM BIOS version=%s\n" msgstr "" "\n" "[배터리(APM)]\n" "요금=%d%%\n" "사용=%s\n" "APM 드라이버 버전=%s\n" "APM BIOS 버전=%s\n" #: modules/devices/battery.c:413 msgid "" "[No batteries]\n" "No batteries found on this system=\n" msgstr "" "[배터리 없음]\n" "이 시스템에서 배터리를 찾을 수 없음=\n" #: modules/devices.c:100 msgid "Graphics Processors" msgstr "그래픽 프로세서" #: modules/devices.c:101 modules/devices/monitors.c:449 #: modules/devices/monitors.c:495 msgid "Monitors" msgstr "모니터" #: modules/devices.c:102 modules/devices/pci.c:175 msgid "PCI Devices" msgstr "PCI 장치" #: modules/devices.c:103 modules/devices/usb.c:211 msgid "USB Devices" msgstr "USB 장치" #: modules/devices.c:104 msgid "Firmware" msgstr "펌웨어" #: modules/devices.c:106 msgid "Battery" msgstr "배터리" #: modules/devices.c:107 msgid "Sensors" msgstr "센서" #: modules/devices.c:110 msgid "System DMI" msgstr "시스템 DMI" #: modules/devices.c:111 msgid "Memory Devices" msgstr "메모리 장치" #: modules/devices.c:113 modules/devices.c:115 msgid "Device Tree" msgstr "장치 트리" #: modules/devices.c:117 msgid "Resources" msgstr "자원" #: modules/devices.c:594 msgid "WSL2" msgstr "" #: modules/devices.c:841 msgid "Sensor" msgstr "센서" #: modules/devices.c:899 modules/devices/dmi_memory.c:806 msgid "Devices" msgstr "장치" #: modules/devices.c:911 msgid "Update PCI ID listing" msgstr "PCI ID 목록 업데이트" #: modules/devices.c:916 msgid "Update USB ID listing" msgstr "USB ID 목록 업데이트" #: modules/devices.c:921 msgid "Update EDID vendor codes" msgstr "EDID 공급업체 코드 업데이트" #: modules/devices.c:926 msgid "Update IEEE OUI vendor codes" msgstr "IEEE OUI 공급업체 코드 업데이트" #: modules/devices.c:931 msgid "Update SD card manufacturer information" msgstr "SD 카드 제조업체 정보 업데이트" #: modules/devices.c:938 msgid "Update CPU flags database" msgstr "CPU 플래그 데이터베이스 업데이트" #: modules/devices.c:973 msgid "Gathers information about hardware devices" msgstr "하드웨어 장치에 대한 정보 수집" #: modules/devices.c:994 msgid "A copy of pci.ids is not available on the system." msgstr "시스템에서 pci.ids 사본을 사용할 수 없습니다." #: modules/devices.c:997 msgid "A full pci.ids is not available on the system." msgstr "전체 pci.ids는 시스템에서 사용할 수 없습니다." #: modules/devices.c:1002 msgid "Resource information requires superuser privileges" msgstr "리소스 정보에는 수퍼유저 권한이 필요합니다." #: modules/devices.c:1008 msgid "" "Any NVMe storage devices present are not listed.\n" "udisks2 is required for NVMe devices." msgstr "" #: modules/devices/devicetree.c:51 msgid "Properties" msgstr "속성" #: modules/devices/devicetree.c:52 msgid "Children" msgstr "하위" #: modules/devices/devicetree.c:88 msgid "Node" msgstr "노드" #: modules/devices/devicetree.c:89 msgid "Node Path" msgstr "노드 경로" #: modules/devices/devicetree.c:90 msgid "Alias" msgstr "별칭" #: modules/devices/devicetree.c:91 msgid "Symbol" msgstr "상징" #: modules/devices/devicetree.c:144 modules/devices/devicetree/pmac_data.c:79 msgid "Platform" msgstr "플랫폼" #: modules/devices/devicetree.c:145 modules/devices/devicetree.c:210 #: modules/devices/gpu.c:299 msgid "Compatible" msgstr "호환 가능" #: modules/devices/devicetree.c:146 msgid "GPU-compatible" msgstr "GPU 호환" #: modules/devices/devicetree.c:161 msgid "Raspberry Pi or Compatible" msgstr "라즈베리 파이 또는 호환 가능" #: modules/devices/devicetree.c:163 modules/devices/devicetree.c:190 #: modules/devices/devicetree.c:209 modules/devices/devicetree/rpi_data.c:169 #: modules/devices/dmi.c:42 modules/devices/dmi.c:52 modules/devices/dmi.c:58 #: modules/devices/spd-decode.c:1383 modules/devices/usb.c:181 msgid "Serial Number" msgstr "시리얼넘버" #: modules/devices/devicetree.c:164 modules/devices/devicetree/rpi_data.c:166 msgid "RCode" msgstr "R코드" #: modules/devices/devicetree.c:164 msgid "No revision code available; unable to lookup model details." msgstr "사용 가능한 개정 코드가 없습니다. 모델 세부 정보를 조회할 수 없습니다." #: modules/devices/devicetree.c:189 msgid "More" msgstr "더" #: modules/devices/devicetree.c:270 msgid "Messages" msgstr "메시지" #: modules/devices/devicetree/pmac_data.c:78 msgid "Apple Power Macintosh" msgstr "애플 파워 매킨토시" #: modules/devices/devicetree/pmac_data.c:83 msgid "Detected as" msgstr "다음으로 감지됨" #: modules/devices/devicetree/pmac_data.c:84 msgid "PMAC Flags" msgstr "PMAC 플래그" #: modules/devices/devicetree/pmac_data.c:85 msgid "L2 Cache" msgstr "L2 캐시" #: modules/devices/devicetree/pmac_data.c:86 msgid "PMAC Generation" msgstr "PMAC 생성" #: modules/devices/devicetree/rpi_data.c:161 #: modules/devices/devicetree/rpi_data.c:162 msgid "Raspberry Pi" msgstr "라즈베리 파이" #: modules/devices/devicetree/rpi_data.c:162 msgid "Board Name" msgstr "보드 이름" #: modules/devices/devicetree/rpi_data.c:163 msgid "PCB Revision" msgstr "PCB 개정판" #: modules/devices/devicetree/rpi_data.c:164 msgid "Introduction" msgstr "소개" #: modules/devices/devicetree/rpi_data.c:165 modules/devices/usb.c:173 msgid "Manufacturer" msgstr "제조사" #: modules/devices/devicetree/rpi_data.c:167 msgid "SOC (spec)" msgstr "SOC(사양)" #: modules/devices/devicetree/rpi_data.c:168 msgid "Memory (spec)" msgstr "메모리(사양)" #: modules/devices/devicetree/rpi_data.c:170 msgid "Permanent overvolt bit" msgstr "영구 과전압 비트" #: modules/devices/devicetree/rpi_data.c:170 msgctxt "rpi-ov-bit" msgid "Set" msgstr "설정" #: modules/devices/devicetree/rpi_data.c:170 msgctxt "rpi-ov-bit" msgid "Not set" msgstr "설정되지 않음" #: modules/devices/dmi.c:37 modules/devices/inputdevices.c:145 #: modules/devices/usb.c:170 msgid "Product" msgstr "제품" #: modules/devices/dmi.c:39 modules/devices/e2k/processor.c:360 #: modules/devices/ia64/processor.c:164 #: modules/devices/loongarch64/processor.c:95 modules/devices/sh/processor.c:86 msgid "Family" msgstr "제품군" #: modules/devices/dmi.c:43 msgid "SKU" msgstr "SKU" #: modules/devices/dmi.c:44 msgid "BIOS" msgstr "바이오스" #: modules/devices/dmi.c:53 modules/devices/dmi.c:59 msgid "Asset Tag" msgstr "자산 태그" #: modules/devices/dmi.c:161 msgid "DMI Unavailable" msgstr "DMI를 사용할 수 없음" #: modules/devices/dmi.c:162 msgid "DMI is not available. Perhaps this platform does not provide DMI." msgstr "DMI를 사용할 수 없습니다. 아마도 이 플랫폼은 DMI를 제공하지 않습니다." #: modules/devices/dmi_memory.c:620 modules/devices/dmi_memory.c:859 msgid "Memory Device List" msgstr "메모리 장치 목록" #: modules/devices/dmi_memory.c:668 msgid "Memory Array" msgstr "메모리 배열" #: modules/devices/dmi_memory.c:669 modules/devices/x86/processor.c:714 msgid "DMI Handle" msgstr "DMI 핸들" #: modules/devices/dmi_memory.c:670 modules/devices/dmi_memory.c:726 #: modules/devices/dmi_memory.c:764 modules/devices/dmi_memory.c:871 msgid "Locator" msgstr "로케이터" #: modules/devices/dmi_memory.c:671 msgid "Use" msgstr "사용" #: modules/devices/dmi_memory.c:672 msgid "Error Correction Type" msgstr "오류 수정 유형" #: modules/devices/dmi_memory.c:673 msgid "Size (Present / Max)" msgstr "사이즈(현재/최대)" #: modules/devices/dmi_memory.c:674 msgid "Devices (Populated / Sockets)" msgstr "장치(Populated / 소켓)" #: modules/devices/dmi_memory.c:675 modules/devices/dmi_memory.c:807 msgid "Types Present" msgstr "존재하는 유형" #: modules/devices/dmi_memory.c:676 msgid "ROM Size" msgstr "ROM 크기" #: modules/devices/dmi_memory.c:724 modules/devices/dmi_memory.c:762 msgid "Memory Socket" msgstr "메모리 소켓" #: modules/devices/dmi_memory.c:725 modules/devices/dmi_memory.c:763 msgid "DMI Handles (Array, Socket)" msgstr "DMI 핸들(배열, 소켓)" #: modules/devices/dmi_memory.c:727 modules/devices/dmi_memory.c:765 msgid "Bank Locator" msgstr "" #: modules/devices/dmi_memory.c:728 modules/devices/spd-decode.c:1376 msgid "Form Factor" msgstr "폼 팩터" #: modules/devices/dmi_memory.c:732 modules/devices/spd-decode.c:1382 msgid "Part Number" msgstr "부품 번호" #: modules/devices/dmi_memory.c:734 msgid "Rated Speed" msgstr "정격 속도" #: modules/devices/dmi_memory.c:735 msgid "Configured Speed" msgstr "" #: modules/devices/dmi_memory.c:736 msgid "Data Width/Total Width" msgstr "데이터 너비/총 너비" #: modules/devices/dmi_memory.c:737 msgid "Rank" msgstr "계급" #: modules/devices/dmi_memory.c:738 msgid "Minimum Voltage" msgstr "최소 전압" #: modules/devices/dmi_memory.c:739 msgid "Maximum Voltage" msgstr "최대 전압" #: modules/devices/dmi_memory.c:740 msgid "Configured Voltage" msgstr "" #: modules/devices/dmi_memory.c:766 modules/devices/dmi_memory.c:773 #: modules/devices/monitors.c:495 msgid "(Empty)" msgstr "(비어 있는)" #: modules/devices/dmi_memory.c:804 msgid "Serial Presence Detect (SPD) Summary" msgstr "직렬 프레즌스 검출(SPD) 요약" #: modules/devices/dmi_memory.c:860 msgid "(Not available - See hint box below)" msgstr "" #: modules/devices/dmi_memory.c:932 msgid "No DMI available" msgstr "" #: modules/devices/dmi_memory.c:937 msgid "dmidecode package installed" msgstr "" #: modules/devices/dmi_memory.c:948 msgid "Memory Information requires more Setup:" msgstr "" #: modules/devices/dmi_memory.c:976 msgid "" "\"More often than not, information contained in the DMI tables is " "inaccurate,\n" "incomplete or simply wrong.\" -dmidecode manual page" msgstr "" "\"DMI 테이블에 포함된 정보가 부정확한 경우가 많습니다.\n" "불완전하거나 단순히 잘못되었습니다.\" -dmidecode 매뉴얼 페이지" #: modules/devices/e2k/processor.c:30 modules/devices/x86/processor.c:149 msgid "Cache information not available=\n" msgstr "캐시 정보를 사용할 수 없음=\n" #: modules/devices/e2k/processor.c:36 modules/devices/x86/processor.c:155 #, c-format msgid "Level %d (%s)=%d-way set-associative, %d sets, %dKB size\n" msgstr "수준 %d(%s)=%d 방향 집합 연관, %d 집합, %dKB 크기\n" #: modules/devices/e2k/processor.c:51 msgctxt "cache-type" msgid "Data" msgstr "데이터" #: modules/devices/e2k/processor.c:52 msgctxt "cache-type" msgid "Instruction" msgstr "설명" #: modules/devices/e2k/processor.c:53 msgctxt "cache-type" msgid "Unified" msgstr "통합" #: modules/devices/e2k/processor.c:157 modules/devices/x86/processor.c:366 msgid "Caches" msgstr "캐시" #: modules/devices/e2k/processor.c:208 modules/devices/e2k/processor.c:225 #: modules/devices/x86/processor.c:417 modules/devices/x86/processor.c:434 #, c-format msgid "Level %d (%s)#%d=%dx %dKB (%dKB), %d-way set-associative, %d sets\n" msgstr "수준 %d(%s)#%d=%dx %dKB(%dKB), %d-방향 집합 연관, %d 집합\n" #: modules/devices/firmware.c:36 msgid "Device cannot be removed easily" msgstr "장치를 쉽게 제거할 수 없음" #: modules/devices/firmware.c:37 msgid "Device is updatable in this or any other mode" msgstr "이 모드 또는 다른 모드에서 장치를 업데이트할 수 있습니다." #: modules/devices/firmware.c:38 msgid "Update can only be done from offline mode" msgstr "업데이트는 오프라인 모드에서만 수행할 수 있습니다." #: modules/devices/firmware.c:39 msgid "Requires AC power" msgstr "AC 전원 필요" #: modules/devices/firmware.c:40 msgid "Is locked and can be unlocked" msgstr "잠겨 있고 잠금 해제 가능" #: modules/devices/firmware.c:41 msgid "Is found in current metadata" msgstr "현재 메타데이터에서 발견됨" #: modules/devices/firmware.c:42 msgid "Requires a bootloader mode to be manually enabled by the user" msgstr "사용자가 수동으로 활성화하려면 부트로더 모드가 필요합니다." #: modules/devices/firmware.c:43 msgid "Has been registered with other plugins" msgstr "다른 플러그인에 등록되었습니다." #: modules/devices/firmware.c:44 msgid "Requires a reboot to apply firmware or to reload hardware" msgstr "펌웨어를 적용하거나 하드웨어를 다시 로드하려면 재부팅해야 합니다." #: modules/devices/firmware.c:45 msgid "Requires system shutdown to apply firmware" msgstr "펌웨어를 적용하려면 시스템을 종료해야 합니다." #: modules/devices/firmware.c:46 msgid "Has been reported to a metadata server" msgstr "메타데이터 서버에 보고되었습니다." #: modules/devices/firmware.c:47 msgid "User has been notified" msgstr "사용자에게 알림이 전송되었습니다." #: modules/devices/firmware.c:48 msgid "Always use the runtime version rather than the bootloader" msgstr "항상 부트로더보다 런타임 버전을 사용하십시오." #: modules/devices/firmware.c:49 msgid "Install composite firmware on the parent before the child" msgstr "하위보다 먼저 상위에 복합 펌웨어 설치" #: modules/devices/firmware.c:50 msgid "Is currently in bootloader mode" msgstr "현재 부트로더 모드에 있습니다." #: modules/devices/firmware.c:51 msgid "The hardware is waiting to be replugged" msgstr "하드웨어가 다시 연결되기를 기다리고 있습니다." #: modules/devices/firmware.c:52 msgid "Ignore validation safety checks when flashing this device" msgstr "이 장치를 플래싱할 때 유효성 검사 안전 확인을 무시합니다." #: modules/devices/firmware.c:53 msgid "Requires the update to be retried with a new plugin" msgstr "새 플러그인으로 업데이트를 다시 시도해야 합니다." #: modules/devices/firmware.c:54 msgid "Do not add instance IDs from the device baseclass" msgstr "장치 기본 클래스에서 인스턴스 ID를 추가하지 마십시오." #: modules/devices/firmware.c:55 msgid "Device update needs to be separately activated" msgstr "기기 업데이트는 별도로 활성화해야 합니다." #: modules/devices/firmware.c:56 msgid "" "Ensure the version is a valid semantic version, e.g. numbers separated with " "dots" msgstr "버전이 유효한 의미 버전인지 확인하십시오. 예. 점으로 구분된 숫자" #: modules/devices/firmware.c:57 msgid "Extra metadata can be exposed about this device" msgstr "이 기기에 대한 추가 메타데이터가 노출될 수 있습니다." #: modules/devices/firmware.c:74 msgid "DeviceId" msgstr "장치ID" #: modules/devices/firmware.c:74 modules/devices/firmware.c:187 msgid "Guid" msgstr "가이드" #: modules/devices/firmware.c:74 msgid "Plugin" msgstr "플러그인" #: modules/devices/firmware.c:74 modules/devices/firmware.c:205 #: modules/network.c:381 msgid "Flags" msgstr "플래그" #: modules/devices/firmware.c:75 msgid "VendorId" msgstr "공급자ID" #: modules/devices/firmware.c:75 msgid "VersionBootloader" msgstr "버전 부트로더" #: modules/devices/firmware.c:76 modules/devices/firmware.c:179 msgid "Icon" msgstr "아이콘" #: modules/devices/firmware.c:76 msgid "InstallDuration" msgstr "설치 기간" #: modules/devices/firmware.c:76 modules/devices/firmware.c:197 msgid "Created" msgstr "생성일" #: modules/devices/firmware.c:244 msgid "Firmware List" msgstr "펌웨어 목록" #: modules/devices/firmware.c:257 msgid "Requires the fwupd daemon." msgstr "fwupd 데몬이 필요합니다." #: modules/devices/gpu.c:94 modules/devices/pci.c:111 #: modules/devices/storage.c:58 msgid "SVendor" msgstr "" #: modules/devices/gpu.c:95 modules/devices/pci.c:112 #: modules/devices/storage.c:59 msgid "SDevice" msgstr "" #: modules/devices/gpu.c:103 modules/devices/pci.c:122 #: modules/devices/storage.c:68 msgid "PCI Express" msgstr "PCI 익스프레스" #: modules/devices/gpu.c:104 modules/devices/pci.c:124 #: modules/devices/storage.c:70 msgid "Maximum Link Width" msgstr "최대 링크 너비" #: modules/devices/gpu.c:105 modules/devices/pci.c:126 #: modules/devices/storage.c:71 msgid "Maximum Link Speed" msgstr "최대 링크 속도" #: modules/devices/gpu.c:105 modules/devices/pci.c:125 #: modules/devices/pci.c:126 modules/devices/storage.c:71 msgid "GT/s" msgstr "GT/s" #: modules/devices/gpu.c:115 msgid "NVIDIA" msgstr "" #: modules/devices/gpu.c:117 msgid "BIOS Version" msgstr "BIOS 버전" #: modules/devices/gpu.c:118 msgid "UUID" msgstr "UUID" #: modules/devices/gpu.c:197 modules/devices/gpu.c:289 #: modules/devices/inputdevices.c:140 modules/devices/pci.c:143 #: modules/devices/usb.c:169 msgid "Device Information" msgstr "디바이스 정보" #: modules/devices/gpu.c:199 modules/devices/gpu.c:291 #: modules/devices/storage.c:69 msgid "Location" msgstr "위치" #: modules/devices/gpu.c:200 msgid "DRM Device" msgstr "DRM 장치" #: modules/devices/gpu.c:201 modules/devices/pci.c:144 #: modules/devices/usb.c:136 modules/devices/usb.c:177 msgid "Class" msgstr "클래스" #: modules/devices/gpu.c:210 modules/devices/pci.c:149 msgid "In Use" msgstr "사용" #: modules/devices/gpu.c:245 msgid "Unknown integrated GPU" msgstr "알 수 없는 통합 GPU" #: modules/devices/gpu.c:253 msgid "clock-frequency property" msgstr "클럭 주파수 속성" #: modules/devices/gpu.c:254 msgid "Operating Points (OPPv1)" msgstr "" #: modules/devices/gpu.c:255 msgid "Operating Points (OPPv2)" msgstr "" #: modules/devices/gpu.c:297 msgid "Device Tree Node" msgstr "장치 트리 노드" #: modules/devices/gpu.c:300 modules/devices/monitors.c:475 #: modules/network/net.c:477 msgid "Status" msgstr "상태" #: modules/devices/gpu.c:317 msgid "GPUs" msgstr "" #: modules/devices/gpu.c:341 msgid "No GPU devices found" msgstr "GPU 장치를 찾을 수 없습니다." #: modules/devices/ia64/processor.c:108 msgid "IA64 Processor" msgstr "IA64 프로세서" #: modules/devices/ia64/processor.c:163 msgid "Architecture Revision" msgstr "아키텍처 개정" #: modules/devices/ia64/processor.c:170 msgid "CPU regs" msgstr "CPU 규정" #: modules/devices/ia64/processor.c:171 #: modules/devices/loongarch64/processor.c:100 msgid "Features" msgstr "특징" #: modules/devices/inputdevices.c:143 modules/devices/pci.c:153 #: modules/devices/usb.c:183 msgid "Bus" msgstr "버스" #: modules/devices/inputdevices.c:149 msgid "Connected to" msgstr "연결됨" #: modules/devices/inputdevices.c:153 msgid "InfraRed port" msgstr "적외선 포트" #: modules/devices/loongarch64/processor.c:94 #: modules/devices/mips/processor.c:76 msgid "System Type" msgstr "시스템 유형" #: modules/devices/loongarch64/processor.c:99 msgid "BogoMIPS" msgstr "" #: modules/devices/m68k/processor.c:85 modules/devices/riscv/processor.c:245 msgid "MMU" msgstr "MMU" #: modules/devices/m68k/processor.c:86 modules/devices/sparc/processor.c:76 msgid "FPU" msgstr "FPU" #: modules/devices/m68k/processor.c:90 msgid "Calibration" msgstr "교정" #: modules/devices/monitors.c:30 modules/devices/monitors.c:257 #: modules/devices/monitors.c:350 modules/devices/spd-decode.c:699 msgid "(Unspecified)" msgstr "(미지정)" #: modules/devices/monitors.c:232 #, c-format msgid "Week %d of %d" msgstr "%d주/%d주" #: modules/devices/monitors.c:242 msgid "Ok" msgstr "확인" #: modules/devices/monitors.c:242 msgid "Fail" msgstr "실패" #: modules/devices/monitors.c:270 modules/devices/monitors.c:278 #: modules/devices/monitors.c:286 modules/devices/monitors.c:297 #: modules/devices/monitors.c:305 modules/devices/monitors.c:312 #: modules/devices/monitors.c:320 modules/devices/monitors.c:328 #: modules/devices/monitors.c:336 modules/devices/monitors.c:342 msgid "(Empty List)" msgstr "(빈 목록)" #: modules/devices/monitors.c:394 msgid "Signal Type" msgstr "신호 유형" #: modules/devices/monitors.c:394 msgid "Digital" msgstr "디지털" #: modules/devices/monitors.c:394 msgid "Analog" msgstr "아날로그" #: modules/devices/monitors.c:395 modules/devices/usb.c:135 #: modules/network.c:311 modules/network.c:364 modules/network.c:381 msgid "Interface" msgstr "인터페이스" #: modules/devices/monitors.c:396 msgid "Bits per Color Channel" msgstr "색상 채널당 비트 수" #: modules/devices/monitors.c:397 msgid "Speaker Allocation" msgstr "스피커 할당" #: modules/devices/monitors.c:398 msgid "Output (Max)" msgstr "출력(최대)" #: modules/devices/monitors.c:401 msgid "EDID Device" msgstr "EDID 장치" #: modules/devices/monitors.c:405 msgid "Serial" msgstr "시리얼넘버" #: modules/devices/monitors.c:406 msgid "Manufacture Date" msgstr "제조 일자" #: modules/devices/monitors.c:407 msgid "EDID Meta" msgstr "EDID 메타" #: modules/devices/monitors.c:408 msgid "Data Size" msgstr "데이터 크기" #: modules/devices/monitors.c:408 msgid "bytes" msgstr "바이트" #: modules/devices/monitors.c:410 msgid "Extension Blocks" msgstr "확장 블록" #: modules/devices/monitors.c:411 msgid "Extended to" msgstr "확장" #: modules/devices/monitors.c:412 msgid "Checksum" msgstr "체크섬" #: modules/devices/monitors.c:413 msgid "EDID Descriptors" msgstr "EDID 디스크립터" #: modules/devices/monitors.c:414 msgid "Detailed Timing Descriptors (DTD)" msgstr "세부 타이밍 디스크립터(DTD)" #: modules/devices/monitors.c:415 msgid "Established Timings Bitmap (ETB)" msgstr "타이밍 비트맵(ETB) 설립" #: modules/devices/monitors.c:416 msgid "Standard Timings (STD)" msgstr "표준 타이밍(STD)" #: modules/devices/monitors.c:417 msgid "E-EDID Extension Blocks" msgstr "E-EDID 확장 블록" #: modules/devices/monitors.c:418 msgid "EIA/CEA-861 Data Blocks" msgstr "EIA/CEA-861 데이터 블록" #: modules/devices/monitors.c:419 msgid "EIA/CEA-861 Short Audio Descriptors" msgstr "EIA/CEA-861 짧은 오디오 디스크립터" #: modules/devices/monitors.c:420 msgid "EIA/CEA-861 Short Video Descriptors" msgstr "EIA/CEA-861 짧은 비디오 디스크립터" #: modules/devices/monitors.c:421 msgid "DisplayID Timings" msgstr "DisplayID 타이밍" #: modules/devices/monitors.c:422 msgid "DisplayID Strings" msgstr "DisplayID 문자열" #: modules/devices/monitors.c:423 msgid "Hex Dump" msgstr "16진수 덤프" #: modules/devices/monitors.c:423 msgid "Data" msgstr "데이터" #: modules/devices/monitors.c:473 modules/devices/monitors.c:504 #: modules/devices/pci.c:151 modules/devices/usb.c:182 msgid "Connection" msgstr "연결" #: modules/devices/monitors.c:474 msgid "DRM" msgstr "DRM" #: modules/devices/parisc/processor.c:107 msgid "PA-RISC Processor" msgstr "PA-RISC 프로세서" #: modules/devices/parisc/processor.c:161 msgid "HVersion" msgstr "H버전" #: modules/devices/parisc/processor.c:162 msgid "SVersion" msgstr "S버전" #: modules/devices/pci.c:123 msgid "Link Width" msgstr "링크 폭" #: modules/devices/pci.c:125 msgid "Link Speed" msgstr "링크 속도" #: modules/devices/pci.c:152 msgid "Domain" msgstr "도메인" #: modules/devices/pci.c:155 msgid "Function" msgstr "기능" #: modules/devices/pci.c:196 msgid "No PCI devices found" msgstr "PCI 장치를 찾을 수 없습니다" #: modules/devices/ppc/processor.c:117 msgid "POWER Processor" msgstr "파워 프로세서" #: modules/devices/printers.c:88 msgid "⚬ Can do black and white printing=\n" msgstr "⚬ 흑백 인쇄 가능=\n" #: modules/devices/printers.c:90 msgid "⚬ Can do color printing=\n" msgstr "⚬ 컬러 인쇄 가능=\n" #: modules/devices/printers.c:92 msgid "⚬ Can do duplexing=\n" msgstr "⚬ 양면 인쇄 가능=\n" #: modules/devices/printers.c:94 msgid "⚬ Can do staple output=\n" msgstr "⚬ 스테이플 출력 가능=\n" #: modules/devices/printers.c:96 msgid "⚬ Can do copies=\n" msgstr "⚬ 복사 가능=\n" #: modules/devices/printers.c:98 msgid "⚬ Can collate copies=\n" msgstr "⚬ 한 부씩 복사 가능=\n" #: modules/devices/printers.c:100 msgid "⚬ Printer is rejecting jobs=\n" msgstr "⚬ 프린터가 작업을 거부하고 있습니다=\n" #: modules/devices/printers.c:102 msgid "⚬ Printer was automatically discovered and added=\n" msgstr "⚬ 프린터가 자동으로 검색되어 추가됨=\n" #: modules/devices/printers.c:117 msgid "Idle" msgstr "대기중" #: modules/devices/printers.c:119 msgid "Printing a Job" msgstr "작업 인쇄" #: modules/devices/printers.c:121 msgid "Stopped" msgstr "중지됨" #: modules/devices/printers.c:200 msgid "" "[Printers]\n" "No suitable CUPS library found=" msgstr "" "[프린터]\n" "적합한 CUPS 라이브러리를 찾을 수 없음=" #: modules/devices/printers.c:213 msgid "[Printers (CUPS)]\n" msgstr "[프린터(CUPS)]\n" #: modules/devices/printers.c:277 msgid "" "[Printers]\n" "No printers found=\n" msgstr "" "[프린터]\n" "프린터를 찾을 수 없음=\n" #: modules/devices/riscv/processor.c:244 msgid "uarch" msgstr "uarch" #: modules/devices/riscv/riscv_data.c:37 msgctxt "rv-ext" msgid "RISC-V 32-bit" msgstr "RISC-V 32비트" #: modules/devices/riscv/riscv_data.c:38 msgctxt "rv-ext" msgid "RISC-V 64-bit" msgstr "RISC-V 64비트" #: modules/devices/riscv/riscv_data.c:39 msgctxt "rv-ext" msgid "RISC-V 128-bit" msgstr "RISC-V 128비트" #: modules/devices/riscv/riscv_data.c:40 msgctxt "rv-ext" msgid "Base embedded integer instructions (15 registers)" msgstr "기본 임베디드 정수 명령어(15개 레지스터)" #: modules/devices/riscv/riscv_data.c:41 msgctxt "rv-ext" msgid "Base integer instructions (31 registers)" msgstr "기본 정수 명령어(31개 레지스터)" #: modules/devices/riscv/riscv_data.c:42 msgctxt "rv-ext" msgid "Hardware integer multiply and divide" msgstr "하드웨어 정수 곱하기 및 나누기" #: modules/devices/riscv/riscv_data.c:43 msgctxt "rv-ext" msgid "Atomic memory operations" msgstr "원자 메모리 작업" #: modules/devices/riscv/riscv_data.c:44 msgctxt "rv-ext" msgid "Compressed 16-bit instructions" msgstr "압축된 16비트 명령어" #: modules/devices/riscv/riscv_data.c:45 msgctxt "rv-ext" msgid "Floating-point instructions, single-precision" msgstr "부동 소수점 명령어, 단일 정밀도" #: modules/devices/riscv/riscv_data.c:46 msgctxt "rv-ext" msgid "Floating-point instructions, double-precision" msgstr "부동 소수점 명령어, 이중 정밀도" #: modules/devices/riscv/riscv_data.c:47 msgctxt "rv-ext" msgid "Floating-point instructions, quad-precision" msgstr "부동 소수점 명령어, 쿼드 정밀도" #: modules/devices/riscv/riscv_data.c:48 msgctxt "rv-ext" msgid "Bit manipulation instructions" msgstr "비트 조작 명령" #: modules/devices/riscv/riscv_data.c:49 msgctxt "rv-ext" msgid "Vector operations" msgstr "벡터 연산" #: modules/devices/riscv/riscv_data.c:50 msgctxt "rv-ext" msgid "Scalar Cryptography" msgstr "" #: modules/devices/riscv/riscv_data.c:51 msgctxt "rv-ext" msgid "Base Counters and Timers" msgstr "" #: modules/devices/riscv/riscv_data.c:52 msgctxt "rv-ext" msgid "Control and Status Register" msgstr "" #: modules/devices/riscv/riscv_data.c:53 msgctxt "rv-ext" msgid "Instruction-Fetch Fence" msgstr "" #: modules/devices/riscv/riscv_data.c:54 msgctxt "rv-ext" msgid "Hardware performance counters" msgstr "" #: modules/devices/riscv/riscv_data.c:55 msgctxt "rv-ext" msgid "Accell Index addresses" msgstr "" #: modules/devices/riscv/riscv_data.c:56 msgctxt "rv-ext" msgid "Basic bit-manipulation" msgstr "" #: modules/devices/riscv/riscv_data.c:57 msgctxt "rv-ext" msgid "Supervisor-level Instructions" msgstr "" #: modules/devices/riscv/riscv_data.c:58 msgctxt "rv-ext" msgid "User Mode" msgstr "" #: modules/devices/riscv/riscv_data.c:59 msgctxt "rv-ext" msgid "Transactional memory" msgstr "트랜잭션 메모리" #: modules/devices/riscv/riscv_data.c:60 msgctxt "rv-ext" msgid "Packed SIMD instructions" msgstr "포장된 SIMD 명령" #: modules/devices/riscv/riscv_data.c:61 msgctxt "rv-ext" msgid "Decimal floating-point instructions" msgstr "10진수 부동 소수점 명령어" #: modules/devices/riscv/riscv_data.c:62 msgctxt "rv-ext" msgid "Dynamically translated languages" msgstr "동적으로 번역된 언어" #: modules/devices/riscv/riscv_data.c:63 msgctxt "rv-ext" msgid "User-level interrupts" msgstr "사용자 수준 인터럽트" #: modules/devices/s390/processor.c:92 msgid "S390 Processor" msgstr "S390 프로세서" #: modules/devices/s390/processor.c:133 msgid "ID String" msgstr "ID 문자열" #: modules/devices/sh/processor.c:55 msgid "SuperH Processor" msgstr "슈퍼H 프로세서" #: modules/devices/sh/processor.c:88 msgid "Bus Frequency" msgstr "버스 주파수" #: modules/devices/sh/processor.c:89 msgid "Module Frequency" msgstr "모듈 주파수" #: modules/devices/spd-decode.c:128 modules/devices/spd-decode.c:144 msgid "Unspecified" msgstr "" #: modules/devices/spd-decode.c:130 modules/devices/spd-decode.c:146 msgid "Invalid" msgstr "유효하지 않은" #: modules/devices/spd-decode.c:358 msgid "Row address bits" msgstr "행 주소 비트" #: modules/devices/spd-decode.c:359 msgid "Column address bits" msgstr "열 주소 비트" #: modules/devices/spd-decode.c:360 msgid "Number of rows" msgstr "행 수" #: modules/devices/spd-decode.c:361 msgid "Data width" msgstr "데이터 너비" #: modules/devices/spd-decode.c:362 msgid "Interface signal levels" msgstr "인터페이스 신호 레벨" #: modules/devices/spd-decode.c:363 msgid "Configuration type" msgstr "구성 유형" #: modules/devices/spd-decode.c:364 msgid "Refresh" msgstr "새로고침" #: modules/devices/spd-decode.c:365 modules/devices/spd-decode.c:442 #: modules/devices/spd-decode.c:721 msgid "Timings" msgstr "타이밍" #: modules/devices/spd-decode.c:589 modules/devices/spd-decode.c:858 #: modules/devices/spd-decode.c:899 modules/devices/spd-decode.c:1111 #: modules/devices/x86/processor.c:716 msgid "Voltage" msgstr "전압" #: modules/devices/spd-decode.c:590 modules/devices/spd-decode.c:901 #: modules/devices/spd-decode.c:1113 msgid "JEDEC Timings" msgstr "JEDEC 타이밍" #: modules/devices/spd-decode.c:697 msgid "Ranks" msgstr "순위" #: modules/devices/spd-decode.c:698 msgid "IO Pins per Chip" msgstr "칩당 IO 핀" #: modules/devices/spd-decode.c:699 msgid "Die count" msgstr "다이 카운트" #: modules/devices/spd-decode.c:700 msgid "Thermal Sensor" msgstr "" #: modules/devices/spd-decode.c:700 msgid "Present" msgstr "존재" #: modules/devices/spd-decode.c:700 msgid "Not present" msgstr "존재하지 않음" #: modules/devices/spd-decode.c:701 msgid "Supported Voltages" msgstr "지원되는 전압" #: modules/devices/spd-decode.c:705 msgid "Supported CAS Latencies" msgstr "지원되는 CAS 대기 시간" #: modules/devices/spd-decode.c:856 msgid "XMP Profile" msgstr "XMP 프로필" #: modules/devices/spd-decode.c:857 modules/devices/usb.c:176 #: modules/network/net.c:438 msgid "Speed" msgstr "속도" #: modules/devices/spd-decode.c:859 msgid "XMP Timings" msgstr "XMP 타이밍" #: modules/devices/spd-decode.c:900 msgid "XMP" msgstr "XMP" #: modules/devices/spd-decode.c:1372 msgid "Serial Presence Detect (SPD)" msgstr "직렬 프레즌스 검출(SPD)" #: modules/devices/spd-decode.c:1375 msgid "SPD Revision" msgstr "SPD 개정판" #: modules/devices/spd-decode.c:1378 msgid "Module Vendor" msgstr "모듈 공급업체" #: modules/devices/spd-decode.c:1380 msgid "DRAM Vendor" msgstr "DRAM 공급업체" #: modules/devices/spd-decode.c:1385 msgid "Manufacturing Date (Year / Week)" msgstr "" #: modules/devices/storage.c:46 modules/devices/storage.c:55 msgid "NVMe Controller" msgstr "NVMe 컨트롤러" #: modules/devices/storage.c:138 msgid "Read Error Rate" msgstr "읽기 오류율" #: modules/devices/storage.c:139 msgid "Throughput Performance" msgstr "처리 성능" #: modules/devices/storage.c:140 msgid "Spin-Up Time" msgstr "스핀업 시간" #: modules/devices/storage.c:141 msgid "Start/Stop Count" msgstr "시작/중지 카운트" #: modules/devices/storage.c:142 msgid "Reallocated Sector Count" msgstr "재분배된 섹터 개수" #: modules/devices/storage.c:143 msgid "Read Channel Margin" msgstr "채널 마진 읽기" #: modules/devices/storage.c:144 msgid "Seek Error Rate" msgstr "탐색 오류율" #: modules/devices/storage.c:145 msgid "Seek Timer Performance" msgstr "타이머 성능 추구" #: modules/devices/storage.c:146 modules/devices/storage.c:185 msgid "Power-On Hours" msgstr "전원 켜기 시간" #: modules/devices/storage.c:147 msgid "Spin Retry Count" msgstr "회전 재시도 횟수" #: modules/devices/storage.c:148 msgid "Calibration Retry Count" msgstr "교정 재시도 횟수" #: modules/devices/storage.c:149 msgid "Power Cycle Count" msgstr "전원 주기 횟수" #: modules/devices/storage.c:150 modules/devices/storage.c:167 msgid "Soft Read Error Rate" msgstr "소프트 읽기 오류율" #: modules/devices/storage.c:151 msgid "Runtime Bad Block" msgstr "런타임 불량 블록" #: modules/devices/storage.c:152 msgid "End-to-End error" msgstr "종단 간 오류" #: modules/devices/storage.c:153 msgid "Reported Uncorrectable Errors" msgstr "보고된 수정 불가능한 오류" #: modules/devices/storage.c:154 msgid "Command Timeout" msgstr "명령 시간 초과" #: modules/devices/storage.c:155 msgid "High Fly Writes" msgstr "하이 플라이 쓰기" #: modules/devices/storage.c:156 msgid "Airflow Temperature" msgstr "에어플로우 온도" #: modules/devices/storage.c:157 msgid "G-sense Error Rate" msgstr "G-sense 오류율" #: modules/devices/storage.c:158 msgid "Power-off Retract Count" msgstr "전원 끄기 철회 카운트" #: modules/devices/storage.c:159 msgid "Load Cycle Count" msgstr "로드 사이클 수" #: modules/devices/storage.c:160 modules/devices/storage.c:183 msgid "Temperature" msgstr "온도" #: modules/devices/storage.c:161 msgid "Hardware ECC Recovered" msgstr "하드웨어 ECC 복구됨" #: modules/devices/storage.c:162 msgid "Reallocation Event Count" msgstr "재할당 이벤트 수" #: modules/devices/storage.c:163 msgid "Current Pending Sector Count" msgstr "현재 보류 중인 섹터 수" #: modules/devices/storage.c:164 msgid "Uncorrectable Sector Count" msgstr "수정할 수 없는 섹터 수" #: modules/devices/storage.c:165 msgid "UltraDMA CRC Error Count" msgstr "UltraDMA CRC 오류 수" #: modules/devices/storage.c:166 msgid "Multi-Zone Error Rate" msgstr "다중 영역 오류율" #: modules/devices/storage.c:168 msgid "Run Out Cancel" msgstr "실행 취소" #: modules/devices/storage.c:169 msgid "Flying Height" msgstr "플라잉 하이트" #: modules/devices/storage.c:170 msgid "Spin High Current" msgstr "스핀 하이 커런트" #: modules/devices/storage.c:171 msgid "Spin Buzz" msgstr "스핀 버즈" #: modules/devices/storage.c:172 msgid "Offline Seek Performance" msgstr "오프라인 검색 성능" #: modules/devices/storage.c:173 msgid "Disk Shift" msgstr "디스크 시프트" #: modules/devices/storage.c:174 msgid "G-Sense Error Rate" msgstr "G-Sense 오류율" #: modules/devices/storage.c:175 msgid "Loaded Hours" msgstr "로드 시간" #: modules/devices/storage.c:176 msgid "Load/Unload Retry Count" msgstr "로드/언로드 재시도 횟수" #: modules/devices/storage.c:177 msgid "Load Friction" msgstr "" #: modules/devices/storage.c:178 msgid "Load/Unload Cycle Count" msgstr "로드/언로드 주기 수" #: modules/devices/storage.c:179 msgid "Load-in time" msgstr "로딩 시간" #: modules/devices/storage.c:180 msgid "Torque Amplification Count" msgstr "Torque 증폭 횟수" #: modules/devices/storage.c:181 msgid "Power-Off Retract Count" msgstr "전원 끄기 철회 카운트" #: modules/devices/storage.c:182 msgid "GMR Head Amplitude" msgstr "GMR 헤드 진폭" #: modules/devices/storage.c:184 msgid "Endurance Remaining" msgstr "남은 수명" #: modules/devices/storage.c:186 msgid "Good Block Rate" msgstr "좋은 차단율" #: modules/devices/storage.c:187 msgid "Head Flying Hours" msgstr "헤드 플라잉 시간" #: modules/devices/storage.c:188 msgid "Read Error Retry Rate" msgstr "읽기 오류 재시도 비율" #: modules/devices/storage.c:189 msgid "Total LBAs Written" msgstr "작성된 총 LBA" #: modules/devices/storage.c:190 msgid "Total LBAs Read" msgstr "읽은 총 LBA" #: modules/devices/storage.c:191 msgid "Wear leveling Count" msgstr "웨어 레벨링 카운트" #: modules/devices/storage.c:192 msgid "Total Used Reserved Block Count" msgstr "사용된 총 예약 블록 수" #: modules/devices/storage.c:193 msgid "Total Program Fail Count" msgstr "총 프로그램 실패 횟수" #: modules/devices/storage.c:194 msgid "Total Erase Fail Count" msgstr "총 지우기 실패 횟수" #: modules/devices/storage.c:195 msgid "Available Reserved Space" msgstr "사용 가능한 예약 공간" #: modules/devices/storage.c:196 msgid "Program Fail Count" msgstr "프로그램 실패 횟수" #: modules/devices/storage.c:197 msgid "Erase Fail Count" msgstr "실패 횟수 지우기" #: modules/devices/storage.c:198 msgid "TA Counter Increased" msgstr "TA 카운터 증가" #: modules/devices/storage.c:199 msgid "Total Unused Reserved Block Count" msgstr "총 미사용 예약 블록 수" #: modules/devices/storage.c:204 msgid "" "\n" "[UDisks2]\n" msgstr "" "\n" "[UDisks2]\n" #: modules/devices/storage.c:257 msgid "Removable" msgstr "" #: modules/devices/storage.c:257 msgid "Fixed" msgstr "고정된" #: modules/devices/storage.c:260 msgid "Ejectable" msgstr "배출 가능" #: modules/devices/storage.c:263 msgid "Self-monitoring (S.M.A.R.T.)" msgstr "자가 모니터링(S.M.A.R.T.)" #: modules/devices/storage.c:266 modules/devices/x86/processor.c:664 msgid "Power Management" msgstr "전원 관리" #: modules/devices/storage.c:269 msgid "Advanced Power Management" msgstr "고급 전원 관리" #: modules/devices/storage.c:272 msgid "Automatic Acoustic Management" msgstr "자동 음향 관리" #: modules/devices/storage.c:275 #, c-format msgid "" "[Drive Information]\n" "Model=%s\n" msgstr "" "[드라이브 정보]\n" "모델=%s\n" #: modules/devices/storage.c:285 #, c-format msgid "" "Revision=%s\n" "Block Device=%s\n" "Serial=%s\n" "Size=%s\n" "Features=%s\n" msgstr "" "개정=%s\n" "블록 장치=%s\n" "시리얼넘버=%s\n" "크기=%s\n" "기능=%s\n" #: modules/devices/storage.c:300 #, c-format msgid "Rotation Rate=%d RPM\n" msgstr "회전율=%d RPM\n" #: modules/devices/storage.c:303 #, c-format msgid "" "Media=%s\n" "Media compatibility=%s\n" msgstr "" "미디어=%s\n" "미디어 호환성=%s\n" #: modules/devices/storage.c:310 #, c-format msgid "Connection bus=%s\n" msgstr "연결 버스=%s\n" #: modules/devices/storage.c:322 msgid "WWN" msgstr "WWN" #: modules/devices/storage.c:323 msgid "EUI " msgstr "EUI " #: modules/devices/storage.c:328 msgid "WWN / EUI" msgstr "WWN / EUI" #: modules/devices/storage.c:332 #, c-format msgid "$^$%s=[%s] %s\n" msgstr "$^$%s=[%s] %s\n" #: modules/devices/storage.c:334 msgid "IEEE OUI" msgstr "IEEE OUI" #: modules/devices/storage.c:346 msgid "" "[Self-monitoring (S.M.A.R.T.)]\n" "Status=%s\n" "Bad Sectors=%" msgstr "" "[자체 모니터링(S.M.A.R.T.)]\n" "상태=%s\n" "불량 섹터=%" #: modules/devices/storage.c:352 msgid "Failing" msgstr "실패" #: modules/devices/storage.c:352 msgid "OK" msgstr "확인" #: modules/devices/storage.c:358 msgid "" "[S.M.A.R.T. Attributes]\n" "Attribute=Value / Normalized / Worst / Threshold\n" msgstr "" "[S.M.A.R.T. 속성]\n" "속성=값/정규화/최저값/임계값\n" #: modules/devices/storage.c:381 msgid "%" msgid_plural "%" msgstr[0] "%" #: modules/devices/storage.c:419 #, c-format msgid "(%d) %s=%s\n" msgstr "(%d) %s=%s\n" #: modules/devices/storage.c:428 #, c-format msgid "" "[Partition table]\n" "Type=%s\n" msgstr "" "[파티션 테이블]\n" "유형=%s\n" #: modules/devices/storage.c:447 #, c-format msgid "Partition %s=%s\n" msgstr "파티션 %s=%s\n" #: modules/devices/storage.c:496 msgid "" "\n" "[SCSI Disks]\n" msgstr "" "\n" "[SCSI 디스크]\n" #: modules/devices/storage.c:567 modules/devices/storage.c:773 #, c-format msgid "" "[Device Information]\n" "Model=%s\n" msgstr "" "[기기 정보]\n" "모델=%s\n" #: modules/devices/storage.c:574 #, c-format msgid "" "Type=%s\n" "Revision=%s\n" "[SCSI Controller]\n" "Controller=scsi%d\n" "Channel=%d\n" "ID=%d\n" "LUN=%d\n" msgstr "" "유형=%s\n" "개정=%s\n" "[SCSI 컨트롤러]\n" "컨트롤러=scsi%d\n" "채널=%d\n" "아이디=%d\n" "LUN=%d\n" #: modules/devices/storage.c:621 msgid "" "\n" "[IDE Disks]\n" msgstr "" "\n" "[IDE 디스크]\n" #: modules/devices/storage.c:707 #, c-format msgid "Driver=%s\n" msgstr "드라이버=%s\n" #: modules/devices/storage.c:779 #, c-format msgid "" "Device Name=hd%c\n" "Media=%s\n" "Cache=%dkb\n" msgstr "" "장치 이름=hd%c\n" "미디어=%s\n" "캐시=%dkb\n" #: modules/devices/storage.c:789 #, c-format msgid "" "[Geometry]\n" "Physical=%s\n" "Logical=%s\n" msgstr "" "[기하학]\n" "물리적=%s\n" "논리=%s\n" #: modules/devices/storage.c:799 #, c-format msgid "" "[Capabilities]\n" "%s" msgstr "" "[능력]\n" "%s" #: modules/devices/storage.c:806 #, c-format msgid "" "[Speeds]\n" "%s" msgstr "" "[속도]\n" "%s" #: modules/devices/usb.c:137 modules/devices/usb.c:178 msgid "Sub-class" msgstr "서브클래스" #: modules/devices/usb.c:138 modules/devices/usb.c:179 modules/network.c:348 msgid "Protocol" msgstr "프로토콜" #: modules/devices/usb.c:146 modules/network/net.c:474 msgid "Mb/s" msgstr "Mb/초" #: modules/devices/usb.c:174 msgid "Max Current" msgstr "최대 전류" #: modules/devices/usb.c:174 msgid "mA" msgstr "" #: modules/devices/usb.c:175 msgid "USB Version" msgstr "USB 버전" #: modules/devices/usb.c:180 msgid "Device Version" msgstr "장치 버전" #: modules/devices/usb.c:222 msgid "No USB devices found." msgstr "USB 장치를 찾을 수 없습니다." #: modules/devices/x86/processor.c:648 msgid "Model Name" msgstr "모델명" #: modules/devices/x86/processor.c:649 msgid "Family, model, stepping" msgstr "제품군, 모델, 스테핑" #: modules/devices/x86/processor.c:655 msgid "Microcode Version" msgstr "마이크로코드 버전" #: modules/devices/x86/processor.c:656 msgid "Configuration" msgstr "구성" #: modules/devices/x86/processor.c:657 msgid "Cache Size" msgstr "캐시 크기" #: modules/devices/x86/processor.c:657 msgid "kb" msgstr "kb" #: modules/devices/x86/processor.c:665 msgid "Bug Workarounds" msgstr "버그 해결 방법" #: modules/devices/x86/processor.c:692 msgid "Socket Information" msgstr "소켓 정보" #: modules/devices/x86/processor.c:695 msgid "(Not available; Perhaps try running hardinfo2 as root.)" msgstr "" #: modules/devices/x86/processor.c:713 msgid "CPU Socket" msgstr "CPU 소켓" #: modules/devices/x86/processor.c:717 msgid "External Clock" msgstr "외부 클럭" #: modules/devices/x86/processor.c:718 msgid "Max Frequency" msgstr "최대 주파수" #: modules/devices/x86/processor.c:749 msgid "Package Information" msgstr "패키지 정보" #: modules/devices/x86/processor.c:811 msgid "Socket:Core" msgstr "소켓: 코어" #. !/flag:fpu #: modules/devices/x86/x86_data.c:48 msgctxt "x86-flag" msgid "Onboard FPU (floating point support)" msgstr "온보드 FPU(부동 소수점 지원)" #. !/flag:vme #: modules/devices/x86/x86_data.c:49 msgctxt "x86-flag" msgid "Virtual 8086 mode enhancements" msgstr "가상 8086 모드 개선 사항" #. !/flag:de #: modules/devices/x86/x86_data.c:50 msgctxt "x86-flag" msgid "Debugging Extensions (CR4.DE)" msgstr "디버깅 확장(CR4.DE)" #. !/flag:pse #: modules/devices/x86/x86_data.c:51 msgctxt "x86-flag" msgid "Page Size Extensions (4MB memory pages)" msgstr "페이지 크기 확장(4MB 메모리 페이지)" #. !/flag:tsc #: modules/devices/x86/x86_data.c:52 msgctxt "x86-flag" msgid "Time Stamp Counter (RDTSC)" msgstr "타임스탬프 카운터(RDTSC)" #. !/flag:msr #: modules/devices/x86/x86_data.c:53 msgctxt "x86-flag" msgid "Model-Specific Registers (RDMSR, WRMSR)" msgstr "모델별 레지스터(RDMSR, WRMSR)" #. !/flag:pae #: modules/devices/x86/x86_data.c:54 msgctxt "x86-flag" msgid "Physical Address Extensions (support for more than 4GB of RAM)" msgstr "물리적 주소 확장(4GB 이상의 RAM 지원)" #. !/flag:mce #: modules/devices/x86/x86_data.c:55 msgctxt "x86-flag" msgid "Machine Check Exception" msgstr "머신 점검 예외" #. !/flag:cx8 #: modules/devices/x86/x86_data.c:56 msgctxt "x86-flag" msgid "CMPXCHG8 instruction (64-bit compare-and-swap)" msgstr "CMPXCHG8 명령어(64비트 비교 및 교환)" #. !/flag:apic #: modules/devices/x86/x86_data.c:57 msgctxt "x86-flag" msgid "Onboard APIC" msgstr "온보드 APIC" #. !/flag:sep #: modules/devices/x86/x86_data.c:58 msgctxt "x86-flag" msgid "SYSENTER/SYSEXIT" msgstr "SYSENTER/SYSEXIT" #. !/flag:mtrr #: modules/devices/x86/x86_data.c:59 msgctxt "x86-flag" msgid "Memory Type Range Registers" msgstr "메모리 유형 범위 레지스터" #. !/flag:pge #: modules/devices/x86/x86_data.c:60 msgctxt "x86-flag" msgid "Page Global Enable (global bit in PDEs and PTEs)" msgstr "페이지 전역 활성화(PDE 및 PTE의 전역 비트)" #. !/flag:mca #: modules/devices/x86/x86_data.c:61 msgctxt "x86-flag" msgid "Machine Check Architecture" msgstr "머신 체크 아키텍처" #. !/flag:cmov #: modules/devices/x86/x86_data.c:62 msgctxt "x86-flag" msgid "CMOV instructions (conditional move) (also FCMOV)" msgstr "CMOV 명령(조건부 이동)(FCMOV도 포함)" #. !/flag:pat #: modules/devices/x86/x86_data.c:63 msgctxt "x86-flag" msgid "Page Attribute Table" msgstr "페이지 속성 테이블" #. !/flag:pse36 #: modules/devices/x86/x86_data.c:64 msgctxt "x86-flag" msgid "36-bit PSEs (huge pages)" msgstr "36비트 PSE(거대한 페이지)" #. !/flag:pn #: modules/devices/x86/x86_data.c:65 msgctxt "x86-flag" msgid "Processor serial number" msgstr "프로세서 시리얼넘버" #. !/flag:clflush #: modules/devices/x86/x86_data.c:66 msgctxt "x86-flag" msgid "Cache Line Flush instruction" msgstr "캐시 라인 플러시 명령" #. !/flag:dts #: modules/devices/x86/x86_data.c:67 msgctxt "x86-flag" msgid "" "Debug Store (buffer for debugging and profiling instructions), or " "alternately: digital thermal sensor" msgstr "" "디버그 저장소(디버깅 및 프로파일링 명령어용 버퍼) 또는 대안: 디지털 열 센서" #. !/flag:acpi #: modules/devices/x86/x86_data.c:68 msgctxt "x86-flag" msgid "ACPI via MSR (temperature monitoring and clock speed modulation)" msgstr "MSR을 통한 ACPI(온도 모니터링 및 클럭 속도 변조)" #. !/flag:mmx #: modules/devices/x86/x86_data.c:69 msgctxt "x86-flag" msgid "Multimedia Extensions" msgstr "멀티미디어 확장" #. !/flag:fxsr #: modules/devices/x86/x86_data.c:70 msgctxt "x86-flag" msgid "FXSAVE/FXRSTOR, CR4.OSFXSR" msgstr "FXSAVE/FXRSTOR, CR4.OSFXSR" #. !/flag:sse #: modules/devices/x86/x86_data.c:71 msgctxt "x86-flag" msgid "Intel SSE vector instructions" msgstr "인텔 SSE 벡터 지침" #. !/flag:sse2 #: modules/devices/x86/x86_data.c:72 msgctxt "x86-flag" msgid "SSE2" msgstr "SSE2" #. !/flag:ss #: modules/devices/x86/x86_data.c:73 msgctxt "x86-flag" msgid "CPU self snoop" msgstr "CPU 자체 스눕" #. !/flag:ht #: modules/devices/x86/x86_data.c:74 msgctxt "x86-flag" msgid "Hyper-Threading" msgstr "하이퍼 스레딩" #. !/flag:tm #: modules/devices/x86/x86_data.c:75 msgctxt "x86-flag" msgid "Automatic clock control (Thermal Monitor)" msgstr "자동 클럭 제어(Thermal Monitor)" #. !/flag:ia64 #: modules/devices/x86/x86_data.c:76 msgctxt "x86-flag" msgid "" "Intel Itanium Architecture 64-bit (not to be confused with Intel's 64-bit " "x86 architecture with flag x86-64 or \"AMD64\" bit indicated by flag lm)" msgstr "" "Intel Itanium Architecture 64비트(플래그 x86-64 또는 플래그 lm으로 표시된 " "\"AMD64\" 비트가 있는 Intel의 64비트 x86 아키텍처와 혼동하지 마십시오)" #. !/flag:pbe #: modules/devices/x86/x86_data.c:77 msgctxt "x86-flag" msgid "Pending Break Enable (PBE# pin) wakeup support" msgstr "보류 중인 중단 활성화(PBE# 핀) 웨이크업 지원" #. !/flag:syscall #: modules/devices/x86/x86_data.c:80 msgctxt "x86-flag" msgid "SYSCALL (Fast System Call) and SYSRET (Return From Fast System Call)" msgstr "SYSCALL(빠른 시스템 호출) 및 SYSRET(빠른 시스템 호출에서 반환)" #. !/flag:mp #: modules/devices/x86/x86_data.c:81 msgctxt "x86-flag" msgid "Multiprocessing Capable." msgstr "다중 처리 가능." #. !/flag:nx #: modules/devices/x86/x86_data.c:82 msgctxt "x86-flag" msgid "Execute Disable" msgstr "실행 비활성화" #. !/flag:mmxext #: modules/devices/x86/x86_data.c:83 msgctxt "x86-flag" msgid "AMD MMX extensions" msgstr "AMD MMX 확장" #. !/flag:fxsr_opt #: modules/devices/x86/x86_data.c:84 msgctxt "x86-flag" msgid "FXSAVE/FXRSTOR optimizations" msgstr "FXSAVE/FXRSTOR 최적화" #. !/flag:pdpe1gb #: modules/devices/x86/x86_data.c:85 msgctxt "x86-flag" msgid "One GB pages (allows hugepagesz=1G)" msgstr "1GB 페이지(hugepagesz=1G 허용)" #. !/flag:rdtscp #: modules/devices/x86/x86_data.c:86 msgctxt "x86-flag" msgid "Read Time-Stamp Counter and Processor ID" msgstr "타임스탬프 카운터 및 프로세서 ID 읽기" #. !/flag:lm #: modules/devices/x86/x86_data.c:87 msgctxt "x86-flag" msgid "Long Mode (x86-64: amd64, also known as Intel 64, i.e. 64-bit capable)" msgstr "긴 모드(x86-64: amd64, Intel 64라고도 함, 즉 64비트 지원)" #. !/flag:3dnow #: modules/devices/x86/x86_data.c:88 msgctxt "x86-flag" msgid "3DNow! (AMD vector instructions, competing with Intel's SSE1)" msgstr "3DNow! (AMD 벡터 명령어, 인텔의 SSE1과 경쟁)" #. !/flag:3dnowext #: modules/devices/x86/x86_data.c:89 msgctxt "x86-flag" msgid "AMD 3DNow! extensions" msgstr "AMD 3DNow! 확장" #. !/flag:recovery #: modules/devices/x86/x86_data.c:91 msgctxt "x86-flag" msgid "CPU in recovery mode" msgstr "복구 모드의 CPU" #. !/flag:longrun #: modules/devices/x86/x86_data.c:92 msgctxt "x86-flag" msgid "Longrun power control" msgstr "롱런 파워 컨트롤" #. !/flag:lrti #: modules/devices/x86/x86_data.c:93 msgctxt "x86-flag" msgid "LongRun table interface" msgstr "롱런 테이블 인터페이스" #. !/flag:cxmmx #: modules/devices/x86/x86_data.c:95 msgctxt "x86-flag" msgid "Cyrix MMX extensions" msgstr "Cyrix MMX 확장" #. !/flag:k6_mtrr #: modules/devices/x86/x86_data.c:96 msgctxt "x86-flag" msgid "AMD K6 nonstandard MTRRs" msgstr "AMD K6 비표준 MTRR" #. !/flag:cyrix_arr #: modules/devices/x86/x86_data.c:97 msgctxt "x86-flag" msgid "Cyrix ARRs (= MTRRs)" msgstr "Cyrix ARR (= MTRR)" #. !/flag:centaur_mcr #: modules/devices/x86/x86_data.c:98 msgctxt "x86-flag" msgid "Centaur MCRs (= MTRRs)" msgstr "" #. !/flag:constant_tsc #: modules/devices/x86/x86_data.c:99 msgctxt "x86-flag" msgid "TSC ticks at a constant rate" msgstr "TSC가 일정한 비율로 째깍거림" #. !/flag:up #: modules/devices/x86/x86_data.c:100 msgctxt "x86-flag" msgid "SMP kernel running on UP" msgstr "UP에서 실행되는 SMP 커널" #. !/flag:art #: modules/devices/x86/x86_data.c:101 msgctxt "x86-flag" msgid "Always-Running Timer" msgstr "항상 실행되는 타이머" #. !/flag:arch_perfmon #: modules/devices/x86/x86_data.c:102 msgctxt "x86-flag" msgid "Intel Architectural PerfMon" msgstr "인텔 아키텍처 PerfMon" #. !/flag:pebs #: modules/devices/x86/x86_data.c:103 msgctxt "x86-flag" msgid "Precise-Event Based Sampling" msgstr "정확한 이벤트 기반 샘플링" #. !/flag:bts #: modules/devices/x86/x86_data.c:104 msgctxt "x86-flag" msgid "Branch Trace Store" msgstr "브랜치 트레이스 스토어" #. !/flag:rep_good #: modules/devices/x86/x86_data.c:105 msgctxt "x86-flag" msgid "rep microcode works well" msgstr "rep 마이크로코드가 잘 작동합니다." #. !/flag:acc_power #: modules/devices/x86/x86_data.c:106 msgctxt "x86-flag" msgid "AMD accumulated power mechanism" msgstr "AMD 축적 전력 메커니즘" #. !/flag:nopl #: modules/devices/x86/x86_data.c:107 msgctxt "x86-flag" msgid "The NOPL (0F 1F) instructions" msgstr "NOPL(0F 1F) 명령어" #. !/flag:xtopology #: modules/devices/x86/x86_data.c:108 msgctxt "x86-flag" msgid "cpu topology enum extensions" msgstr "CPU 토폴로지 열거형 확장" #. !/flag:tsc_reliable #: modules/devices/x86/x86_data.c:109 msgctxt "x86-flag" msgid "TSC is known to be reliable" msgstr "TSC는 신뢰할 수 있는 것으로 알려져 있습니다." #. !/flag:nonstop_tsc #: modules/devices/x86/x86_data.c:110 msgctxt "x86-flag" msgid "TSC does not stop in C states" msgstr "TSC는 C 상태에서 멈추지 않습니다." #. !/flag:extd_apicid #: modules/devices/x86/x86_data.c:111 msgctxt "x86-flag" msgid "has extended APICID (8 bits)" msgstr "확장 APICID(8비트)가 있습니다." #. !/flag:amd_dcm #: modules/devices/x86/x86_data.c:112 msgctxt "x86-flag" msgid "multi-node processor" msgstr "다중 노드 프로세서" #. !/flag:aperfmperf #: modules/devices/x86/x86_data.c:113 msgctxt "x86-flag" msgid "APERFMPERF" msgstr "APERFMPERF" #. !/flag:eagerfpu #: modules/devices/x86/x86_data.c:114 msgctxt "x86-flag" msgid "Non lazy FPU restore" msgstr "비 지연 FPU 복원" #. !/flag:nonstop_tsc_s3 #: modules/devices/x86/x86_data.c:115 msgctxt "x86-flag" msgid "TSC doesn't stop in S3 state" msgstr "TSC는 S3 상태에서 멈추지 않습니다." #. !/flag:mce_recovery #: modules/devices/x86/x86_data.c:116 msgctxt "x86-flag" msgid "CPU has recoverable machine checks" msgstr "CPU에는 복구 가능한 머신 검사가 있습니다." #. !/flag:pni #: modules/devices/x86/x86_data.c:119 msgctxt "x86-flag" msgid "SSE-3 (\"Prescott New Instructions\")" msgstr "SSE-3(\"Prescott 새 지침\")" #. !/flag:pclmulqdq #: modules/devices/x86/x86_data.c:120 msgctxt "x86-flag" msgid "" "Perform a Carry-Less Multiplication of Quadword instruction - accelerator " "for GCM)" msgstr "" #. !/flag:dtes64 #: modules/devices/x86/x86_data.c:121 msgctxt "x86-flag" msgid "64-bit Debug Store" msgstr "64비트 디버그 저장소" #. !/flag:monitor #: modules/devices/x86/x86_data.c:122 msgctxt "x86-flag" msgid "Monitor/Mwait support (Intel SSE3 supplements)" msgstr "모니터/Mwait 지원(Intel SSE3 보완)" #. !/flag:ds_cpl #: modules/devices/x86/x86_data.c:123 msgctxt "x86-flag" msgid "CPL Qual. Debug Store" msgstr "CPL Qual. 디버그 스토어" #. !/flag:vmx #: modules/devices/x86/x86_data.c:124 msgctxt "x86-flag" msgid "Hardware virtualization, Intel VMX" msgstr "하드웨어 가상화, Intel VMX" #. !/flag:smx #: modules/devices/x86/x86_data.c:125 msgctxt "x86-flag" msgid "Safer mode TXT (TPM support)" msgstr "안전 모드 TXT(TPM 지원)" #. !/flag:est #: modules/devices/x86/x86_data.c:126 msgctxt "x86-flag" msgid "Enhanced SpeedStep" msgstr "향상된 스피드스텝" #. !/flag:tm2 #: modules/devices/x86/x86_data.c:127 msgctxt "x86-flag" msgid "Thermal Monitor 2" msgstr "" #. !/flag:ssse3 #: modules/devices/x86/x86_data.c:128 msgctxt "x86-flag" msgid "Supplemental SSE-3" msgstr "보충 SSE-3" #. !/flag:cid #: modules/devices/x86/x86_data.c:129 msgctxt "x86-flag" msgid "Context ID" msgstr "컨텍스트 ID" #. !/flag:sdbg #: modules/devices/x86/x86_data.c:130 msgctxt "x86-flag" msgid "silicon debug" msgstr "실리콘 디버그" #. !/flag:fma #: modules/devices/x86/x86_data.c:131 msgctxt "x86-flag" msgid "Fused multiply-add" msgstr "융합 곱셈 더하기" #. !/flag:cx16 #: modules/devices/x86/x86_data.c:132 msgctxt "x86-flag" msgid "CMPXCHG16B" msgstr "CMPXCHG16B" #. !/flag:xtpr #: modules/devices/x86/x86_data.c:133 msgctxt "x86-flag" msgid "Send Task Priority Messages" msgstr "작업 우선 순위 메시지 보내기" #. !/flag:pdcm #: modules/devices/x86/x86_data.c:134 msgctxt "x86-flag" msgid "Performance Capabilities" msgstr "성능 기능" #. !/flag:pcid #: modules/devices/x86/x86_data.c:135 msgctxt "x86-flag" msgid "Process Context Identifiers" msgstr "프로세스 컨텍스트 식별자" #. !/flag:dca #: modules/devices/x86/x86_data.c:136 msgctxt "x86-flag" msgid "Direct Cache Access" msgstr "직접 캐시 액세스" #. !/flag:sse4_1 #: modules/devices/x86/x86_data.c:137 msgctxt "x86-flag" msgid "SSE-4.1" msgstr "SSE-4.1" #. !/flag:sse4_2 #: modules/devices/x86/x86_data.c:138 msgctxt "x86-flag" msgid "SSE-4.2" msgstr "SSE-4.2" #. !/flag:x2apic #: modules/devices/x86/x86_data.c:139 msgctxt "x86-flag" msgid "x2APIC" msgstr "x2APIC" #. !/flag:movbe #: modules/devices/x86/x86_data.c:140 msgctxt "x86-flag" msgid "Move Data After Swapping Bytes instruction" msgstr "바이트 교체 후 데이터 이동 명령어" #. !/flag:popcnt #: modules/devices/x86/x86_data.c:141 msgctxt "x86-flag" msgid "" "Return the Count of Number of Bits Set to 1 instruction (Hamming weight, i." "e. bit count)" msgstr "1 명령어로 설정된 비트 수 반환(해밍 가중치, 즉 비트 수)" #: modules/devices/x86/x86_data.c:142 msgctxt "x86-flag" msgid "Tsc deadline timer" msgstr "Tsc 마감 타이머" #. !/flag:aes/aes-ni #: modules/devices/x86/x86_data.c:143 msgctxt "x86-flag" msgid "Advanced Encryption Standard (New Instructions)" msgstr "고급 암호화 표준(새 지침)" #. !/flag:xsave #: modules/devices/x86/x86_data.c:144 msgctxt "x86-flag" msgid "Save Processor Extended States: also provides XGETBY,XRSTOR,XSETBY" msgstr "프로세서 확장 상태 저장: XGETBY, XRSTOR, XSETBY도 제공" #. !/flag:avx #: modules/devices/x86/x86_data.c:145 msgctxt "x86-flag" msgid "Advanced Vector Extensions" msgstr "고급 벡터 확장" #. !/flag:f16c #: modules/devices/x86/x86_data.c:146 msgctxt "x86-flag" msgid "16-bit fp conversions (CVT16)" msgstr "16비트 fp 변환(CVT16)" #. !/flag:rdrand #: modules/devices/x86/x86_data.c:147 msgctxt "x86-flag" msgid "Read Random Number from hardware random number generator instruction" msgstr "하드웨어 난수 생성기 명령어에서 난수 읽기" #. !/flag:hypervisor #: modules/devices/x86/x86_data.c:148 msgctxt "x86-flag" msgid "Running on a hypervisor" msgstr "하이퍼바이저에서 실행" #. !/flag:rng #: modules/devices/x86/x86_data.c:150 msgctxt "x86-flag" msgid "Random Number Generator present (xstore)" msgstr "난수 생성기 존재(xstore)" #. !/flag:rng_en #: modules/devices/x86/x86_data.c:151 msgctxt "x86-flag" msgid "Random Number Generator enabled" msgstr "난수 생성기 활성화됨" #. !/flag:ace #: modules/devices/x86/x86_data.c:152 msgctxt "x86-flag" msgid "on-CPU crypto (xcrypt)" msgstr "CPU 암호화(xcrypt)" #. !/flag:ace_en #: modules/devices/x86/x86_data.c:153 msgctxt "x86-flag" msgid "on-CPU crypto enabled" msgstr "on-CPU 암호화 활성화" #. !/flag:ace2 #: modules/devices/x86/x86_data.c:154 msgctxt "x86-flag" msgid "Advanced Cryptography Engine v2" msgstr "고급 암호화 엔진 v2" #. !/flag:ace2_en #: modules/devices/x86/x86_data.c:155 msgctxt "x86-flag" msgid "ACE v2 enabled" msgstr "ACE v2 활성화" #. !/flag:phe #: modules/devices/x86/x86_data.c:156 msgctxt "x86-flag" msgid "PadLock Hash Engine" msgstr "PadLock 해시 엔진" #. !/flag:phe_en #: modules/devices/x86/x86_data.c:157 msgctxt "x86-flag" msgid "PHE enabled" msgstr "PHE 활성화" #. !/flag:pmm #: modules/devices/x86/x86_data.c:158 msgctxt "x86-flag" msgid "PadLock Montgomery Multiplier" msgstr "PadLock 몽고메리 승수" #. !/flag:pmm_en #: modules/devices/x86/x86_data.c:159 msgctxt "x86-flag" msgid "PMM enabled" msgstr "PMM 활성화" #. !/flag:lahf_lm #: modules/devices/x86/x86_data.c:161 msgctxt "x86-flag" msgid "Load AH from Flags (LAHF) and Store AH into Flags (SAHF) in long mode" msgstr "Long 모드에서 플래그(LAHF)에서 AH 로드 및 플래그(SAHF)에 AH 저장" #. !/flag:cmp_legacy #: modules/devices/x86/x86_data.c:162 msgctxt "x86-flag" msgid "If yes HyperThreading not valid" msgstr "'예'인 경우 하이퍼스레딩이 유효하지 않음" #. !/flag:svm #: modules/devices/x86/x86_data.c:163 msgctxt "x86-flag" msgid "\"Secure virtual machine\": AMD-V" msgstr "\"보안 가상 머신\": AMD-V" #. !/flag:extapic #: modules/devices/x86/x86_data.c:164 msgctxt "x86-flag" msgid "Extended APIC space" msgstr "확장된 APIC 공간" #. !/flag:cr8_legacy #: modules/devices/x86/x86_data.c:165 msgctxt "x86-flag" msgid "CR8 in 32-bit mode" msgstr "32비트 모드의 CR8" #. !/flag:abm #: modules/devices/x86/x86_data.c:166 msgctxt "x86-flag" msgid "Advanced Bit Manipulation" msgstr "고급 비트 조작" #. !/flag:sse4a #: modules/devices/x86/x86_data.c:167 msgctxt "x86-flag" msgid "SSE-4A" msgstr "SSE-4A" #. !/flag:misalignsse #: modules/devices/x86/x86_data.c:168 msgctxt "x86-flag" msgid "" "indicates if a general-protection exception (#GP) is generated when some " "legacy SSE instructions operate on unaligned data. Also depends on CR0 and " "Alignment Checking bit" msgstr "" "일부 레거시 SSE 명령어가 정렬되지 않은 데이터에서 작동할 때 일반 보호 예외" "(#GP)가 생성되는지 여부를 나타냅니다. 또한 CR0 및 Alignment Checking 비트에 " "따라 다릅니다." #. !/flag:3dnowprefetch #: modules/devices/x86/x86_data.c:169 msgctxt "x86-flag" msgid "3DNow prefetch instructions" msgstr "3DNow 프리페치 지침" #. !/flag:osvw #: modules/devices/x86/x86_data.c:170 msgctxt "x86-flag" msgid "" "indicates OS Visible Workaround, which allows the OS to work around " "processor errata." msgstr "" "OS가 프로세서 정오표를 해결할 수 있도록 하는 OS Visible Workaround를 나타냅니" "다." #. !/flag:ibs #: modules/devices/x86/x86_data.c:171 msgctxt "x86-flag" msgid "Instruction Based Sampling" msgstr "명령어 기반 샘플링" #. !/flag:xop #: modules/devices/x86/x86_data.c:172 msgctxt "x86-flag" msgid "extended AVX instructions" msgstr "확장 AVX 명령어" #. !/flag:skinit #: modules/devices/x86/x86_data.c:173 msgctxt "x86-flag" msgid "SKINIT/STGI instructions" msgstr "SKINIT/STGI 지침" #. !/flag:wdt #: modules/devices/x86/x86_data.c:174 msgctxt "x86-flag" msgid "Watchdog timer" msgstr "워치독 타이머" #. !/flag:lwp #: modules/devices/x86/x86_data.c:175 msgctxt "x86-flag" msgid "Light Weight Profiling" msgstr "경량 프로파일링" #. !/flag:fma4 #: modules/devices/x86/x86_data.c:176 msgctxt "x86-flag" msgid "4 operands MAC instructions" msgstr "4 피연산자 MAC 명령어" #. !/flag:tce #: modules/devices/x86/x86_data.c:177 msgctxt "x86-flag" msgid "translation cache extension" msgstr "번역 캐시 확장" #. !/flag:nodeid_msr #: modules/devices/x86/x86_data.c:178 msgctxt "x86-flag" msgid "NodeId MSR" msgstr "노드 ID MSR" #. !/flag:tbm #: modules/devices/x86/x86_data.c:179 msgctxt "x86-flag" msgid "Trailing Bit Manipulation" msgstr "후행 비트 조작" #. !/flag:topoext #: modules/devices/x86/x86_data.c:180 msgctxt "x86-flag" msgid "Topology Extensions CPUID leafs" msgstr "토폴로지 확장 CPUID 리프" #. !/flag:perfctr_core #: modules/devices/x86/x86_data.c:181 msgctxt "x86-flag" msgid "Core Performance Counter Extensions" msgstr "핵심 성능 카운터 확장" #. !/flag:perfctr_nb #: modules/devices/x86/x86_data.c:182 msgctxt "x86-flag" msgid "NB Performance Counter Extensions" msgstr "NB 성능 카운터 확장" #. !/flag:bpext #: modules/devices/x86/x86_data.c:183 msgctxt "x86-flag" msgid "data breakpoint extension" msgstr "데이터 중단점 확장" #. !/flag:ptsc #: modules/devices/x86/x86_data.c:184 msgctxt "x86-flag" msgid "performance time-stamp counter" msgstr "성능 타임스탬프 카운터" #. !/flag:perfctr_l2 #: modules/devices/x86/x86_data.c:185 msgctxt "x86-flag" msgid "L2 Performance Counter Extensions" msgstr "L2 성능 카운터 확장" #. !/flag:mwaitx #: modules/devices/x86/x86_data.c:186 msgctxt "x86-flag" msgid "MWAIT extension (MONITORX/MWAITX)" msgstr "MWAIT 확장(MONITORX/MWAITX)" #. !/flag:cpb #: modules/devices/x86/x86_data.c:188 msgctxt "x86-flag" msgid "AMD Core Performance Boost" msgstr "AMD 코어 성능 부스트" #. !/flag:epb #: modules/devices/x86/x86_data.c:189 msgctxt "x86-flag" msgid "IA32_ENERGY_PERF_BIAS support" msgstr "IA32_ENERGY_PERF_BIAS 지원" #. !/flag:hw_pstate #: modules/devices/x86/x86_data.c:190 msgctxt "x86-flag" msgid "AMD HW-PState" msgstr "AMD HW-P 상태" #. !/flag:proc_feedback #: modules/devices/x86/x86_data.c:191 msgctxt "x86-flag" msgid "AMD ProcFeedbackInterface" msgstr "AMD ProcFeedback인터페이스" #. !/flag:intel_pt #: modules/devices/x86/x86_data.c:192 msgctxt "x86-flag" msgid "Intel Processor Tracing" msgstr "인텔 프로세서 추적" #. !/flag:tpr_shadow #: modules/devices/x86/x86_data.c:194 msgctxt "x86-flag" msgid "Intel TPR Shadow" msgstr "인텔 TPR 섀도우" #. !/flag:vnmi #: modules/devices/x86/x86_data.c:195 msgctxt "x86-flag" msgid "Intel Virtual NMI" msgstr "인텔 가상 NMI" #. !/flag:flexpriority #: modules/devices/x86/x86_data.c:196 msgctxt "x86-flag" msgid "Intel FlexPriority" msgstr "인텔 플렉스우선순위" #. !/flag:ept #: modules/devices/x86/x86_data.c:197 msgctxt "x86-flag" msgid "Intel Extended Page Table" msgstr "인텔 확장 페이지 테이블" #. !/flag:vpid #: modules/devices/x86/x86_data.c:198 msgctxt "x86-flag" msgid "Intel Virtual Processor ID" msgstr "인텔 가상 프로세서 ID" #. !/flag:vmmcall #: modules/devices/x86/x86_data.c:199 msgctxt "x86-flag" msgid "prefer VMMCALL to VMCALL" msgstr "VMCALL보다 VMMCALL 선호" #. !/flag:fsgsbase #: modules/devices/x86/x86_data.c:201 msgctxt "x86-flag" msgid "{RD/WR}{FS/GS}BASE instructions" msgstr "{RD/WR}{FS/GS}기본 지침" #. !/flag:tsc_adjust #: modules/devices/x86/x86_data.c:202 msgctxt "x86-flag" msgid "TSC adjustment MSR" msgstr "TSC 조정 MSR" #. !/flag:bmi1 #: modules/devices/x86/x86_data.c:203 msgctxt "x86-flag" msgid "1st group bit manipulation extensions" msgstr "첫 번째 그룹 비트 조작 확장" #. !/flag:hle #: modules/devices/x86/x86_data.c:204 msgctxt "x86-flag" msgid "Hardware Lock Elision" msgstr "하드웨어 잠금 제거" #. !/flag:avx2 #: modules/devices/x86/x86_data.c:205 msgctxt "x86-flag" msgid "AVX2 instructions" msgstr "AVX2 지침" #. !/flag:smep #: modules/devices/x86/x86_data.c:206 msgctxt "x86-flag" msgid "Supervisor Mode Execution Protection" msgstr "감독자 모드 실행 보호" #. !/flag:bmi2 #: modules/devices/x86/x86_data.c:207 msgctxt "x86-flag" msgid "2nd group bit manipulation extensions" msgstr "두 번째 그룹 비트 조작 확장" #. !/flag:erms #: modules/devices/x86/x86_data.c:208 msgctxt "x86-flag" msgid "Enhanced REP MOVSB/STOSB" msgstr "향상된 REP MOVSB/STOSB" #. !/flag:invpcid #: modules/devices/x86/x86_data.c:209 msgctxt "x86-flag" msgid "Invalidate Processor Context ID" msgstr "프로세서 컨텍스트 ID 무효화" #. !/flag:rtm #: modules/devices/x86/x86_data.c:210 msgctxt "x86-flag" msgid "Restricted Transactional Memory" msgstr "제한된 트랜잭션 메모리" #. !/flag:cqm #: modules/devices/x86/x86_data.c:211 msgctxt "x86-flag" msgid "Cache QoS Monitoring" msgstr "캐시 QoS 모니터링" #. !/flag:mpx #: modules/devices/x86/x86_data.c:212 msgctxt "x86-flag" msgid "Memory Protection Extension" msgstr "메모리 보호 확장" #. !/flag:avx512f #: modules/devices/x86/x86_data.c:213 msgctxt "x86-flag" msgid "AVX-512 foundation" msgstr "AVX-512 파운데이션" #. !/flag:avx512dq #: modules/devices/x86/x86_data.c:214 msgctxt "x86-flag" msgid "AVX-512 Double/Quad instructions" msgstr "AVX-512 더블/쿼드 명령어" #. !/flag:rdseed #: modules/devices/x86/x86_data.c:215 msgctxt "x86-flag" msgid "The RDSEED instruction" msgstr "RDSEED 명령어" #. !/flag:adx #: modules/devices/x86/x86_data.c:216 msgctxt "x86-flag" msgid "The ADCX and ADOX instructions" msgstr "ADCX 및 ADOX 명령어" #. !/flag:smap #: modules/devices/x86/x86_data.c:217 msgctxt "x86-flag" msgid "Supervisor Mode Access Prevention" msgstr "감독자 모드 접근 방지" #. !/flag:clflushopt #: modules/devices/x86/x86_data.c:218 msgctxt "x86-flag" msgid "CLFLUSHOPT instruction" msgstr "CLFLUSHOPT 명령어" #. !/flag:clwb #: modules/devices/x86/x86_data.c:219 msgctxt "x86-flag" msgid "CLWB instruction" msgstr "CLWB 명령" #. !/flag:avx512pf #: modules/devices/x86/x86_data.c:220 msgctxt "x86-flag" msgid "AVX-512 Prefetch" msgstr "AVX-512 프리페치" #. !/flag:avx512er #: modules/devices/x86/x86_data.c:221 msgctxt "x86-flag" msgid "AVX-512 Exponential and Reciprocal" msgstr "AVX-512 지수 및 역수" #. !/flag:avx512cd #: modules/devices/x86/x86_data.c:222 msgctxt "x86-flag" msgid "AVX-512 Conflict Detection" msgstr "AVX-512 충돌 감지" #. !/flag:sha_ni #: modules/devices/x86/x86_data.c:223 msgctxt "x86-flag" msgid "SHA1/SHA256 Instruction Extensions" msgstr "SHA1/SHA256 명령어 확장" #. !/flag:avx512bw #: modules/devices/x86/x86_data.c:224 msgctxt "x86-flag" msgid "AVX-512 Byte/Word instructions" msgstr "AVX-512 바이트/워드 명령어" #. !/flag:avx512vl #: modules/devices/x86/x86_data.c:225 msgctxt "x86-flag" msgid "AVX-512 128/256 Vector Length extensions" msgstr "AVX-512 128/256 벡터 길이 확장" #. !/flag:xsaveopt #: modules/devices/x86/x86_data.c:227 msgctxt "x86-flag" msgid "Optimized XSAVE" msgstr "최적화된 XSAVE" #. !/flag:xsavec #: modules/devices/x86/x86_data.c:228 msgctxt "x86-flag" msgid "XSAVEC" msgstr "" #. !/flag:xgetbv1 #: modules/devices/x86/x86_data.c:229 msgctxt "x86-flag" msgid "XGETBV with ECX = 1" msgstr "ECX가 있는 XGETBV = 1" #. !/flag:xsaves #: modules/devices/x86/x86_data.c:230 msgctxt "x86-flag" msgid "XSAVES/XRSTORS" msgstr "XSAVES/XRSTORS" #. !/flag:cqm_llc #: modules/devices/x86/x86_data.c:232 msgctxt "x86-flag" msgid "LLC QoS" msgstr "LLC QoS" #. !/flag:cqm_occup_llc #: modules/devices/x86/x86_data.c:234 msgctxt "x86-flag" msgid "LLC occupancy monitoring" msgstr "LLC 점유 모니터링" #. !/flag:cqm_mbm_total #: modules/devices/x86/x86_data.c:235 msgctxt "x86-flag" msgid "LLC total MBM monitoring" msgstr "LLC 총 MBM 모니터링" #. !/flag:cqm_mbm_local #: modules/devices/x86/x86_data.c:236 msgctxt "x86-flag" msgid "LLC local MBM monitoring" msgstr "LLC 로컬 MBM 모니터링" #. !/flag:clzero #: modules/devices/x86/x86_data.c:238 msgctxt "x86-flag" msgid "CLZERO instruction" msgstr "CLZERO 명령" #. !/flag:irperf #: modules/devices/x86/x86_data.c:239 msgctxt "x86-flag" msgid "instructions retired performance counter" msgstr "지침 폐기된 성능 카운터" #. !/flag:dtherm #: modules/devices/x86/x86_data.c:241 msgctxt "x86-flag" msgid "digital thermal sensor" msgstr "" #. !/flag:ida #: modules/devices/x86/x86_data.c:242 msgctxt "x86-flag" msgid "Intel Dynamic Acceleration" msgstr "인텔 동적 가속" #. !/flag:arat #: modules/devices/x86/x86_data.c:243 msgctxt "x86-flag" msgid "Always Running APIC Timer" msgstr "항상 실행 중인 APIC 타이머" #. !/flag:pln #: modules/devices/x86/x86_data.c:244 msgctxt "x86-flag" msgid "Intel Power Limit Notification" msgstr "인텔 전력 제한 알림" #. !/flag:pts #: modules/devices/x86/x86_data.c:245 msgctxt "x86-flag" msgid "Intel Package Thermal Status" msgstr "" #. !/flag:hwp #: modules/devices/x86/x86_data.c:246 msgctxt "x86-flag" msgid "Intel Hardware P-states" msgstr "인텔 하드웨어 P-상태" #. !/flag:hwp_notify #: modules/devices/x86/x86_data.c:247 msgctxt "x86-flag" msgid "HWP notification" msgstr "HWP 알림" #. !/flag:hwp_act_window #: modules/devices/x86/x86_data.c:248 msgctxt "x86-flag" msgid "HWP Activity Window" msgstr "HWP 활동 창" #. !/flag:hwp_epp #: modules/devices/x86/x86_data.c:249 msgctxt "x86-flag" msgid "HWP Energy Performance Preference" msgstr "HWP 에너지 성능 선호도" #. !/flag:hwp_pkg_req #: modules/devices/x86/x86_data.c:250 msgctxt "x86-flag" msgid "HWP package-level request" msgstr "HWP 패키지 수준 요청" #. !/flag:npt #: modules/devices/x86/x86_data.c:252 msgctxt "x86-flag" msgid "AMD Nested Page Table support" msgstr "AMD 중첩 페이지 테이블 지원" #. !/flag:lbrv #: modules/devices/x86/x86_data.c:253 msgctxt "x86-flag" msgid "AMD LBR Virtualization support" msgstr "AMD LBR 가상화 지원" #. !/flag:svm_lock #: modules/devices/x86/x86_data.c:254 msgctxt "x86-flag" msgid "AMD SVM locking MSR" msgstr "AMD SVM 잠금 MSR" #. !/flag:nrip_save #: modules/devices/x86/x86_data.c:255 msgctxt "x86-flag" msgid "AMD SVM next_rip save" msgstr "AMD SVM next_rip 저장" #. !/flag:tsc_scale #: modules/devices/x86/x86_data.c:256 msgctxt "x86-flag" msgid "AMD TSC scaling support" msgstr "AMD TSC 확장 지원" #. !/flag:vmcb_clean #: modules/devices/x86/x86_data.c:257 msgctxt "x86-flag" msgid "AMD VMCB clean bits support" msgstr "AMD VMCB 클린 비트 지원" #. !/flag:flushbyasid #: modules/devices/x86/x86_data.c:258 msgctxt "x86-flag" msgid "AMD flush-by-ASID support" msgstr "AMD Flush-by-ASID 지원" #. !/flag:decodeassists #: modules/devices/x86/x86_data.c:259 msgctxt "x86-flag" msgid "AMD Decode Assists support" msgstr "AMD 디코드 어시스트 지원" #. !/flag:pausefilter #: modules/devices/x86/x86_data.c:260 msgctxt "x86-flag" msgid "AMD filtered pause intercept" msgstr "AMD 필터링된 일시 중지 인터셉트" #. !/flag:pfthreshold #: modules/devices/x86/x86_data.c:261 msgctxt "x86-flag" msgid "AMD pause filter threshold" msgstr "AMD 일시 중지 필터 임계값" #. !/flag:avic #: modules/devices/x86/x86_data.c:262 msgctxt "x86-flag" msgid "Virtual Interrupt Controller" msgstr "가상 인터럽트 컨트롤러" #. !/flag:pku #: modules/devices/x86/x86_data.c:264 msgctxt "x86-flag" msgid "Protection Keys for Userspace" msgstr "사용자 공간에 대한 보호 키" #. !/flag:ospke #: modules/devices/x86/x86_data.c:265 msgctxt "x86-flag" msgid "OS Protection Keys Enable" msgstr "OS 보호 키 활성화" #. !/flag:overflow_recov #: modules/devices/x86/x86_data.c:267 msgctxt "x86-flag" msgid "MCA overflow recovery support" msgstr "MCA 오버플로 복구 지원" #. !/flag:succor #: modules/devices/x86/x86_data.c:268 msgctxt "x86-flag" msgid "uncorrectable error containment and recovery" msgstr "수정 불가능한 오류 억제 및 복구" #. !/flag:smca #: modules/devices/x86/x86_data.c:269 msgctxt "x86-flag" msgid "Scalable MCA" msgstr "확장 가능한 MCA" #. !/bug:f00f #: modules/devices/x86/x86_data.c:272 msgctxt "x86-flag" msgid "Intel F00F bug" msgstr "인텔 F00F 버그" #. !/bug:fdiv #: modules/devices/x86/x86_data.c:273 msgctxt "x86-flag" msgid "FPU FDIV" msgstr "FPU FDIV" #. !/bug:coma #: modules/devices/x86/x86_data.c:274 msgctxt "x86-flag" msgid "Cyrix 6x86 coma" msgstr "" #. !/bug:tlb_mmatch #: modules/devices/x86/x86_data.c:275 msgctxt "x86-flag" msgid "AMD Erratum 383" msgstr "" #. !/bug:apic_c1e #. !/bug:amd_e400 #: modules/devices/x86/x86_data.c:276 modules/devices/x86/x86_data.c:285 msgctxt "x86-flag" msgid "AMD Erratum 400" msgstr "" #. !/bug:11ap #: modules/devices/x86/x86_data.c:277 msgctxt "x86-flag" msgid "Bad local APIC aka 11AP" msgstr "잘못된 로컬 APIC(일명 11AP)" #. !/bug:fxsave_leak #: modules/devices/x86/x86_data.c:278 msgctxt "x86-flag" msgid "FXSAVE leaks FOP/FIP/FOP" msgstr "FXSAVE 유출 FOP/FIP/FOP" #. !/bug:clflush_monitor #: modules/devices/x86/x86_data.c:279 msgctxt "x86-flag" msgid "AAI65, CLFLUSH required before MONITOR" msgstr "AAI65, MONITOR 전에 CLFLUSH 필요" #. !/bug:sysret_ss_attrs #: modules/devices/x86/x86_data.c:280 msgctxt "x86-flag" msgid "SYSRET doesn't fix up SS attrs" msgstr "SYSRET은 SS 속성을 수정하지 않습니다." #. !/bug:espfix #: modules/devices/x86/x86_data.c:281 msgctxt "x86-flag" msgid "IRET to 16-bit SS corrupts ESP/RSP high bits" msgstr "16비트 SS에 대한 IRET는 ESP/RSP 상위 비트를 손상시킵니다." #. !/bug:null_seg #: modules/devices/x86/x86_data.c:282 msgctxt "x86-flag" msgid "Nulling a selector preserves the base" msgstr "선택자를 Null하면 기본이 유지됩니다." #. !/bug:swapgs_fence #: modules/devices/x86/x86_data.c:283 msgctxt "x86-flag" msgid "SWAPGS without input dep on GS" msgstr "GS에 입력 dep가 없는 SWAPGS" #. !/bug:monitor #: modules/devices/x86/x86_data.c:284 msgctxt "x86-flag" msgid "IPI required to wake up remote CPU" msgstr "원격 CPU를 깨우기 위해 필요한 IPI" #. !/bug:cpu_insecure & bug:cpu_meltdown #: modules/devices/x86/x86_data.c:286 modules/devices/x86/x86_data.c:287 msgctxt "x86-flag" msgid "" "CPU is affected by meltdown attack and needs kernel page table isolation" msgstr "" "CPU는 멜트다운 공격의 영향을 받고 커널 페이지 테이블 격리가 필요합니다." #. !/bug:spectre_v1 #: modules/devices/x86/x86_data.c:288 msgctxt "x86-flag" msgid "CPU is affected by Spectre variant 1 attack with conditional branches" msgstr "CPU는 조건부 분기를 사용하는 Spectre 변형 1 공격의 영향을 받습니다." #. !/bug:spectre_v2 #: modules/devices/x86/x86_data.c:289 msgctxt "x86-flag" msgid "CPU is affected by Spectre variant 2 attack with indirect branches" msgstr "CPU는 간접 분기를 사용한 Spectre 변형 2 공격의 영향을 받습니다." #. !/bug:spec_store_bypass #: modules/devices/x86/x86_data.c:290 msgctxt "x86-flag" msgid "CPU is affected by speculative store bypass attack" msgstr "CPU는 투기적 저장소 우회 공격의 영향을 받습니다." #. !/bug:l1tf #: modules/devices/x86/x86_data.c:291 msgctxt "x86-flag" msgid "CPU is affected by L1 Terminal Fault" msgstr "CPU는 L1 터미널 오류의 영향을 받습니다." #. !/flag:pm:ts #: modules/devices/x86/x86_data.c:294 msgctxt "x86-flag" msgid "temperature sensor" msgstr "온도 센서" #. !/flag:pm:fid #: modules/devices/x86/x86_data.c:295 msgctxt "x86-flag" msgid "frequency id control" msgstr "주파수 ID 제어" #. !/flag:pm:vid #: modules/devices/x86/x86_data.c:296 msgctxt "x86-flag" msgid "voltage id control" msgstr "전압 ID 제어" #. !/flag:pm:ttp #: modules/devices/x86/x86_data.c:297 msgctxt "x86-flag" msgid "thermal trip" msgstr "" #. !/flag:pm:tm #: modules/devices/x86/x86_data.c:298 msgctxt "x86-flag" msgid "hardware thermal control" msgstr "" #. !/flag:pm:stc #: modules/devices/x86/x86_data.c:299 msgctxt "x86-flag" msgid "software thermal control" msgstr "" #. !/flag:pm:100mhzsteps #: modules/devices/x86/x86_data.c:300 msgctxt "x86-flag" msgid "100 MHz multiplier control" msgstr "100MHz 승수 제어" #. !/flag:pm:hwpstate #: modules/devices/x86/x86_data.c:301 msgctxt "x86-flag" msgid "hardware P-state control" msgstr "하드웨어 P-상태 제어" #. !/flag:pm:cpb #: modules/devices/x86/x86_data.c:302 msgctxt "x86-flag" msgid "core performance boost" msgstr "코어 성능 향상" #. !/flag:pm:eff_freq_ro #: modules/devices/x86/x86_data.c:303 msgctxt "x86-flag" msgid "Readonly aperf/mperf" msgstr "읽기 전용 aperf/mperf" #. !/flag:pm:proc_feedback #: modules/devices/x86/x86_data.c:304 msgctxt "x86-flag" msgid "processor feedback interface" msgstr "프로세서 피드백 인터페이스" #. !/flag:pm:acc_power #: modules/devices/x86/x86_data.c:305 msgctxt "x86-flag" msgid "accumulated power mechanism" msgstr "축적된 동력 메커니즘" #: modules/network.c:61 msgid "Interfaces" msgstr "인터페이스" #: modules/network.c:62 msgid "IP Connections" msgstr "IP 연결" #: modules/network.c:63 msgid "Routing Table" msgstr "라우팅 테이블" #: modules/network.c:64 modules/network.c:310 msgid "ARP Table" msgstr "ARP 테이블" #: modules/network.c:65 msgid "DNS Servers" msgstr "DNS 서버" #: modules/network.c:66 msgid "Statistics" msgstr "통계" #: modules/network.c:67 msgid "Shared Directories" msgstr "공유 디렉토리" #: modules/network.c:311 modules/network.c:333 modules/network.c:364 #: modules/network/net.c:495 msgid "IP Address" msgstr "IP 주소" #: modules/network.c:311 msgid "MAC Address" msgstr "MAC 주소" #: modules/network.c:320 msgid "SAMBA" msgstr "삼바" #: modules/network.c:321 msgid "NFS" msgstr "NFS" #: modules/network.c:332 msgid "Name Servers" msgstr "네임서버" #: modules/network.c:347 msgid "Connections" msgstr "연결" #: modules/network.c:348 msgid "Local Address" msgstr "지역 주소" #: modules/network.c:348 msgid "Foreign Address" msgstr "해외 주소" #: modules/network.c:348 msgid "State" msgstr "상태" #: modules/network.c:364 msgid "Sent" msgstr "업로드" #: modules/network.c:364 msgid "Received" msgstr "다운로드" #: modules/network.c:380 msgid "IP routing table" msgstr "IP 라우팅 테이블" #: modules/network.c:381 msgid "Destination/Gateway" msgstr "대상/게이트웨이" #: modules/network.c:381 modules/network/net.c:496 msgid "Mask" msgstr "마스크" #: modules/network.c:409 msgid "Network" msgstr "네트워크" #: modules/network.c:442 msgid "Gathers information about this computer's network connection" msgstr "이 컴퓨터의 네트워크 연결에 대한 정보를 수집합니다." #: modules/network/net.c:74 msgctxt "wi-op-mode" msgid "Auto" msgstr "자동" #: modules/network/net.c:75 msgctxt "wi-op-mode" msgid "Ad-Hoc" msgstr "애드 혹" #: modules/network/net.c:76 msgctxt "wi-op-mode" msgid "Managed" msgstr "관리" #: modules/network/net.c:77 msgctxt "wi-op-mode" msgid "Master" msgstr "주인" #: modules/network/net.c:78 msgctxt "wi-op-mode" msgid "Repeater" msgstr "중계기" #: modules/network/net.c:79 msgctxt "wi-op-mode" msgid "Secondary" msgstr "보조" #: modules/network/net.c:80 msgctxt "wi-op-mode" msgid "(Unknown)" msgstr "(알 수 없음)" #: modules/network/net.c:268 modules/network/net.c:288 #: modules/network/net.c:296 msgctxt "net-if-type" msgid "Ethernet" msgstr "이더넷" #: modules/network/net.c:269 msgctxt "net-if-type" msgid "Loopback" msgstr "루프백" #: modules/network/net.c:270 msgctxt "net-if-type" msgid "Point-to-Point" msgstr "p2p" #: modules/network/net.c:271 modules/network/net.c:272 #: modules/network/net.c:273 modules/network/net.c:274 #: modules/network/net.c:298 msgctxt "net-if-type" msgid "Wireless" msgstr "무선" #: modules/network/net.c:275 msgctxt "net-if-type" msgid "Virtual Point-to-Point (TUN)" msgstr "가상 p2p(TUN)" #: modules/network/net.c:276 msgctxt "net-if-type" msgid "Ethernet (TAP)" msgstr "이더넷(TAP)" #: modules/network/net.c:277 msgctxt "net-if-type" msgid "Parallel Line Internet Protocol" msgstr "병렬 회선 인터넷 프로토콜" #: modules/network/net.c:278 msgctxt "net-if-type" msgid "Infrared" msgstr "적외선" #: modules/network/net.c:279 modules/network/net.c:297 msgctxt "net-if-type" msgid "Serial Line Internet Protocol" msgstr "직렬 회선 인터넷 프로토콜" #: modules/network/net.c:280 msgctxt "net-if-type" msgid "Integrated Services Digital Network" msgstr "통합 서비스 디지털 네트워크" #: modules/network/net.c:281 msgctxt "net-if-type" msgid "IPv6-over-IPv4 Tunnel" msgstr "IPv6-over-IPv4 터널" #: modules/network/net.c:282 msgctxt "net-if-type" msgid "VMWare Virtual Network Interface (NAT)" msgstr "VMWare 가상 네트워크 인터페이스(NAT)" #: modules/network/net.c:283 msgctxt "net-if-type" msgid "VMWare Virtual Network Interface" msgstr "VMWare 가상 네트워크 인터페이스" #: modules/network/net.c:284 msgctxt "net-if-type" msgid "Personal Area Network (PAN)" msgstr "개인 영역 네트워크(PAN)" #: modules/network/net.c:285 msgctxt "net-if-type" msgid "Bluetooth" msgstr "블루투스" #: modules/network/net.c:286 msgctxt "net-if-type" msgid "Bridge Interface" msgstr "브리지 인터페이스" #: modules/network/net.c:287 msgctxt "net-if-type" msgid "Hamachi Virtual Personal Network" msgstr "Hamachi 가상 개인 네트워크" #: modules/network/net.c:289 msgctxt "net-if-type" msgid "Intermediate Functional Block" msgstr "중급 기능 블록" #: modules/network/net.c:290 msgctxt "net-if-type" msgid "GRE Network Tunnel" msgstr "GRE 네트워크 터널" #: modules/network/net.c:291 msgctxt "net-if-type" msgid "Mesh Network" msgstr "메쉬 네트워크" #: modules/network/net.c:292 msgctxt "net-if-type" msgid "Wireless Master Interface" msgstr "무선 마스터 인터페이스" #: modules/network/net.c:293 msgctxt "net-if-type" msgid "VirtualBox Virtual Network Interface" msgstr "VirtualBox 가상 네트워크 인터페이스" #: modules/network/net.c:299 msgctxt "net-if-type" msgid "Wireless (WAN)" msgstr "무선(WAN)" #: modules/network/net.c:301 msgctxt "net-if-type" msgid "(Unknown)" msgstr "(알 수 없음)" #: modules/network/net.c:364 modules/network/net.c:374 msgid "Network Interfaces" msgstr "네트워크 인터페이스" #: modules/network/net.c:364 msgid "None Found" msgstr "찾을 수 없음" #: modules/network/net.c:431 msgid "Network Adapter Properties" msgstr "네트워크 어댑터 속성" #: modules/network/net.c:432 msgid "Interface Type" msgstr "인터페이스 유형" #: modules/network/net.c:433 msgid "Hardware Address (MAC)" msgstr "하드웨어 주소(MAC)" #: modules/network/net.c:437 msgid "MTU" msgstr "MTU" #: modules/network/net.c:439 msgid "Transfer Details" msgstr "전송 세부 정보" #: modules/network/net.c:440 msgid "Bytes Received" msgstr "수신된 바이트" #: modules/network/net.c:441 msgid "Bytes Sent" msgstr "보낸 바이트" #: modules/network/net.c:458 modules/network/net.c:480 #: modules/network/net.c:481 msgid "dBm" msgstr "dBm" #: modules/network/net.c:458 msgid "mW" msgstr "mW" #: modules/network/net.c:472 msgid "Wireless Properties" msgstr "무선 속성" #: modules/network/net.c:473 msgid "Network Name (SSID)" msgstr "네트워크 이름(SSID)" #: modules/network/net.c:474 msgid "Bit Rate" msgstr "비트 전송률" #: modules/network/net.c:475 msgid "Transmission Power" msgstr "전송 전력" #: modules/network/net.c:478 msgid "Link Quality" msgstr "링크 품질" #: modules/network/net.c:479 msgid "Signal / Noise" msgstr "신호/노이즈" #: modules/network/net.c:494 msgid "Internet Protocol (IPv4)" msgstr "인터넷 프로토콜(IPv4)" #: modules/network/net.c:495 modules/network/net.c:496 #: modules/network/net.c:498 msgid "(Not set)" msgstr "(설정되지 않음)" #: modules/network/net.c:497 msgid "Broadcast Address" msgstr "브로드캐스트 주소" #: includes/spd-decode.h:28 msgid "RAM" msgstr "램" #, c-format #~ msgid "Module \"%s\" depends on module \"%s\", load it?" #~ msgstr "모듈 \"%s\"은 모듈 \"%s\"에 종속되어 있습니다. 로드하시겠습니까?" #, c-format #~ msgid "Module \"%s\" depends on module \"%s\"." #~ msgstr "모듈 \"%s\"은(는) 모듈 \"%s\"에 종속됩니다." #~ msgid "_Open..." #~ msgstr "열기...(_O)" #~ msgid "Perl6 (VM)" #~ msgstr "펄6(VM)" #~ msgid "Perl6" #~ msgstr "펄6" #~ msgid "C♯ (mcs)" #~ msgstr "C♯ (MC)" #~ msgid "Spin/Flavor" #~ msgstr "스핀/플레이버" #~ msgid "Manufacturing Date (Week / Year)" #~ msgstr "제조일자(주/년)" #~ msgid "_Copy to Clipboard" #~ msgstr "클립 보드에 복사(_C)" #~ msgid "Copy to clipboard" #~ msgstr "클립 보드에 복사" #~ msgid "dmidecode utility available" #~ msgstr "dmidecode 유틸리티 사용 가능" #~ msgid " ... and HardInfo2 running with superuser privileges" #~ msgstr " ... 수퍼유저 권한으로 실행되는 HardInfo2" #~ msgid "" #~ " at24 (or eeprom) module loaded (for SDR, DDR, DDR2, DDR3)" #~ msgstr " at24(또는 eeprom) 모듈 로드(SDR, DDR, DDR2, DDR3용)" #~ msgid "" #~ " ... or ee1004 module loaded and configured! " #~ "(for DDR4)" #~ msgstr "" #~ " ... 또는 ee1004 모듈이 로드되고 구성되었습니다!(DDR4용)" #~ msgid "Memory information requires one or both of the following:" #~ msgstr "메모리 정보에는 다음 중 하나 또는 둘 다가 필요합니다." #, c-format #~ msgid "" #~ "Written by %s\n" #~ "Licensed under %s" #~ msgstr "" #~ "작성자: %s\n" #~ "%s에 따라 라이선스가 부여됨" #, c-format #~ msgid "No about information is associated with the %s module." #~ msgstr "%s 모듈과 연결된 정보가 없습니다." #~ msgid "User Note" #~ msgstr "사용자 노트" #~ msgid "" #~ "This result is from an old version of HardInfo2. Results might not be " #~ "comparable to current version. Some details are missing." #~ msgstr "" #~ "이 결과는 이전 버전의 HardInfo에서 가져온 것입니다. 결과는 현재 버전과 비" #~ "교되지 않을 수 있습니다. 일부 세부정보가 누락되었습니다." #~ msgid "Total Memory" #~ msgstr "총 메모리" #~ msgid "Free Memory" #~ msgstr "여유 메모리" #~ msgid "Cached Swap" #~ msgstr "캐시된 스왑" #~ msgid "High Memory" #~ msgstr "높은 메모리" #~ msgid "Free High Memory" #~ msgstr "무료 대용량 메모리" #~ msgid "Low Memory" #~ msgstr "메모리 부족" #~ msgid "Free Low Memory" #~ msgstr "여유 메모리 부족" #~ msgid "Virtual Memory" #~ msgstr "가상 메모리" #~ msgid "Free Virtual Memory" #~ msgstr "여유 가상 메모리" #~ msgid "(Not available; Perhaps try running HardInfo2 as root.)" #~ msgstr "(사용할 수 없습니다. 하드 정보를 루트로 실행해보십시오.)" #~ msgid "DMI is not available; Perhaps try running HardInfo2 as root." #~ msgstr "DMI를 사용할 수 없습니다. 아마도 HardInfo를 루트로 실행해 보십시오." #~ msgid "RISC-V Processor" #~ msgstr "RISC-V 프로세서" #~ msgid "" #~ "Copyright (C) 2003-%d L. A. F. Pereira. See COPYING for details.\n" #~ "\n" #~ msgstr "" #~ "Copyright (C) 2003-%d L. A. F. Pereira. 자세한 내용은 복사를 참조하십시" #~ "오.\n" #~ "\n" #~ msgid "" #~ "Compile-time options:\n" #~ " Release version: %s (%s)\n" #~ " BinReloc enabled: %s\n" #~ " Data prefix: %s\n" #~ " Library prefix: %s\n" #~ " Compiled for: %s\n" #~ msgstr "" #~ "컴파일 시간 옵션:\n" #~ " 릴리스 버전: %s(%s)\n" #~ " BinReloc 활성화됨: %s\n" #~ " 데이터 접두사: %s\n" #~ " 라이브러리 접두사: %s\n" #~ " 컴파일 대상: %s\n" #~ msgid "" #~ "Failed to find runtime data.\n" #~ "\n" #~ "• Is HardInfo2 correctly installed?\n" #~ "• See if %s and %s exists and you have read permission." #~ msgstr "" #~ "런타임 데이터를 찾지 못했습니다.\n" #~ "\n" #~ "• HardInfo가 올바르게 설치되어 있습니까?\n" #~ "• %s 및 %s이(가) 존재하고 읽기 권한이 있는지 확인합니다." #~ msgid "" #~ "Modules:\n" #~ "%-20s %-15s %-12s\n" #~ msgstr "" #~ "모듈:\n" #~ "%-20초 %-15초 %-12초\n" #~ msgid "File Name" #~ msgstr "파일 이름" #~ msgid "Unknown benchmark ``%s'' or benchmark.so not loaded" #~ msgstr "" #~ "알 수 없는 벤치마크 ``%s'' 또는 벤치마크.그래서 로드되지 않았습니다." #~ msgid "run benchmark; requires benchmark.so to be loaded" #~ msgstr "실행 벤치마크; 로드하려면 벤치마크.so가 필요합니다" #~ msgid "note attached to benchmark results" #~ msgstr "벤치마크 결과에 첨부된 메모" #~ msgid "lists modules" #~ msgstr "모듈 나열" #~ msgid "specify module to load" #~ msgstr "로드할 모듈 지정" #~ msgid "automatically load module dependencies" #~ msgstr "모듈 종속성을 자동으로 로드" #~ msgid "run in XML-RPC server mode" #~ msgstr "XML-RPC 서버 모드에서 실행" #~ msgid "- System Profiler and Benchmark tool" #~ msgstr "- 시스템 프로파일러 및 벤치마크 도구" #~ msgid "" #~ "No module could be loaded. Check permissions on \"%s\" and try again." #~ msgstr "" #~ "모듈을 로드할 수 없습니다. \"%s\"에 대한 권한을 확인하고 다시 시도하십시" #~ "오." #~ msgid "" #~ "No module could be loaded. Please use hardinfo2 -l to list all available " #~ "modules and try again with a valid module list." #~ msgstr "" #~ "모듈을 로드할 수 없습니다. hardinfo2 -l을 사용하여 사용 가능한 모든 모듈" #~ "을 나열하고 유효한 모듈 목록으로 다시 시도하십시오." #~ msgid "Author:" #~ msgstr "원작자:" #~ msgid "Contributors:" #~ msgstr "기여자:" #~ msgid "Based on work by:" #~ msgstr "작업 기준:" #~ msgid "MD5 implementation by Colin Plumb (see md5.c for details)" #~ msgstr "Colin Plumb의 MD5 구현(자세한 내용은 md5.c 참조)" #~ msgid "SHA1 implementation by Steve Reid (see sha1.c for details)" #~ msgstr "Steve Reid의 SHA1 구현(자세한 내용은 sha1.c 참조)" #~ msgid "Blowfish implementation by Paul Kocher (see blowfich.c for details)" #~ msgstr "Paul Kocher의 Blowfish 구현(자세한 내용은 blowfich.c 참조)" #~ msgid "Raytracing benchmark by John Walker (see fbench.c for details)" #~ msgstr "John Walker의 Raytracing 벤치마크(자세한 내용은 fbench.c 참조)" #~ msgid "FFT benchmark by Scott Robert Ladd (see fftbench.c for details)" #~ msgstr "Scott Robert Ladd의 FFT 벤치마크(자세한 내용은 fftbench.c 참조)" #~ msgid "Some code partly based on x86cpucaps by Osamu Kayasono" #~ msgstr "Osamu Kayasono의 x86cpucaps에 부분적으로 기반한 일부 코드" #~ msgid "Vendor list based on GtkSysInfo by Pissens Sebastien" #~ msgstr "Pissen Sebastien의 GtkSysInfo 기반 공급업체 목록" #~ msgid "DMI support based on code by Stewart Adam" #~ msgstr "Stewart Adam의 코드 기반 DMI 지원" #~ msgid "SCSI support based on code by Pascal F. Martin" #~ msgstr "Pascal F. Martin의 코드 기반 SCSI 지원" #~ msgid "Tango Project" #~ msgstr "탱고 프로젝트" #~ msgid "The GNOME Project" #~ msgstr "그놈 프로젝트" #~ msgid "VMWare, Inc. (USB icon from VMWare Workstation 6)" #~ msgstr "VMWare, Inc.(VMWare Workstation 6의 USB 아이콘)" #~ msgid "epicbard (Fan icon, CC BY-SA 3.0)" #~ msgstr "epicbard (팬 아이콘, CC BY-SA 3.0)" #~ msgid "System information and benchmark tool" #~ msgstr "시스템 정보 및 벤치마크 도구" #~ msgid "" #~ "HardInfo2 is free software; you can redistribute it and/or modify it " #~ "under the terms of the GNU General Public License as published by the " #~ "Free Software Foundation, version 2.\n" #~ "\n" #~ "This program is distributed in the hope that it will be useful, but " #~ "WITHOUT ANY WARRANTY; without even the implied warranty of " #~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General " #~ "Public License for more details.\n" #~ "\n" #~ "You should have received a copy of the GNU General Public License along " #~ "with this program; if not, write to the Free Software Foundation, Inc., " #~ "51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA" #~ msgstr "" #~ "HardInfo는 무료 소프트웨어입니다. 자유 소프트웨어 재단(Free Software " #~ "Foundation) 버전 2에서 발행한 GNU 일반 공중 사용 허가서(GNU General " #~ "Public License) 조건에 따라 이를 재배포 및/또는 수정할 수 있습니다.\n" #~ "\n" #~ "이 프로그램은 유용하기를 바라며 배포되지만 어떠한 보증도 하지 않습니다. 상" #~ "품성 또는 특정 목적에의 적합성에 대한 묵시적 보증도 없이. 자세한 내용은 " #~ "GNU 일반 공중 사용 허가서를 참조하십시오.\n" #~ "\n" #~ "이 프로그램과 함께 GNU General Public License 사본을 받았어야 합니다. 그렇" #~ "지 않은 경우 Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, " #~ "Boston, MA 02110-1301 USA에 문의하십시오." #~ msgid "translator-credits" #~ msgstr "번역가 크레딧" #~ msgid "_Remote" #~ msgstr "원격(_R)" #~ msgid "About _Modules" #~ msgstr "모듈 정보(_M)" #~ msgid "%s - System Information" #~ msgstr "%s - 시스템 정보" #~ msgid "System Information" #~ msgstr "시스템 정보" #~ msgid "" #~ "HardInfo2 was compiled without libsoup support. (Network Updater requires " #~ "it.)" #~ msgstr "" #~ "HardInfo는 libsoup 지원 없이 컴파일되었습니다. (네트워크 업데이터에 필요합" #~ "니다.)" #~ msgid "" #~ "Failed while performing \"%s\". Please file a bug report if this problem " #~ "persists. (Use the Help→Report bug option.)\n" #~ "\n" #~ "Details: %s" #~ msgstr "" #~ "\"%s\"을(를) 수행하는 동안 실패했습니다. 이 문제가 지속되면 버그 보고서를 " #~ "제출하십시오. (도움말→버그 신고 옵션을 사용하세요.)\n" #~ "\n" #~ "세부 정보: %s" #~ msgid "" #~ "Failed while performing \"%s\". Please file a bug report if this problem " #~ "persists. (Use the Help→Report bug option.)" #~ msgstr "" #~ "\"%s\"을(를) 수행하는 동안 실패했습니다. 이 문제가 지속되면 버그 보고서를 " #~ "제출하십시오. (도움말→버그 신고 옵션을 사용하세요.)" #~ msgid "" #~ "Benchmarking. Please do not move your mouse\n" #~ "or press any keys." #~ msgstr "벤치마킹. 마우스를 움직이거나 키를 누르지 마십시오." #~ msgid "Cancel" #~ msgstr "취소" #~ msgid "FPU Raytracing" #~ msgstr "FPU 레이트레이싱" #~ msgid "SysBench Memory" #~ msgstr "SysBench 메모리" #~ msgid "Results in MiB/second. Higher is better." #~ msgstr "MiB/초 단위의 결과입니다. 높을수록 좋습니다." #~ msgid "Results in seconds. Lower is better." #~ msgstr "초 단위의 결과입니다. 낮을수록 좋습니다." #~ msgid "" #~ "Any NVMe storage devices present are not listed.\n" #~ "udisksd is required for NVMe devices." #~ msgstr "" #~ "존재하는 모든 NVMe 스토리지 장치가 나열되지 않습니다.\n" #~ "udisksd는 NVMe 장치에 필요합니다." #~ msgctxt "x86-flag" #~ msgid "" #~ "Perform a Carry-Less Multiplication of Quadword instruction - accelerator " #~ "for GCM" #~ msgstr "쿼드워드 명령어의 캐리리스 곱셈 수행 - GCM용 가속기" hardinfo2-hardinfo2-1331e88/po/pt.po000066400000000000000000005210711474767047500171520ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # # Translators: # Hugo Carvalho , 2022. # msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-10-06 01:42+0200\n" "PO-Revision-Date: 2022-12-05 14:12+0000\n" "Last-Translator: Hugo Carvalho \n" "Language-Team: \n" "Language: pt\n" "X-Poedit-Basepath: ../\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 3.2.2\n" #: hardinfo2/cpu_util.c:29 msgid "Little Endian" msgstr "Little Endian" #: hardinfo2/cpu_util.c:31 msgid "Big Endian" msgstr "Big Endian" #: hardinfo2/cpu_util.c:205 hardinfo2/cpu_util.c:216 modules/devices/gpu.c:262 msgid "Frequency Scaling" msgstr "Escala de frequência" #: hardinfo2/cpu_util.c:206 modules/devices/gpu.c:263 msgid "Minimum" msgstr "Mínimo" #: hardinfo2/cpu_util.c:206 hardinfo2/cpu_util.c:207 hardinfo2/cpu_util.c:208 #: hardinfo2/dt_util.c:590 modules/devices/gpu.c:263 modules/devices/gpu.c:264 msgid "kHz" msgstr "kHz" #: hardinfo2/cpu_util.c:207 modules/devices/gpu.c:264 msgid "Maximum" msgstr "Máximo" #: hardinfo2/cpu_util.c:208 msgid "Current" msgstr "Atual" #: hardinfo2/cpu_util.c:209 modules/devices/gpu.c:265 msgid "Transition Latency" msgstr "Latência de transição" #: hardinfo2/cpu_util.c:209 modules/devices/gpu.c:265 msgid "ns" msgstr "ns" #: hardinfo2/cpu_util.c:210 msgid "Governor" msgstr "Governor" #: hardinfo2/cpu_util.c:211 hardinfo2/cpu_util.c:217 modules/devices.c:842 #: modules/devices/gpu.c:209 modules/devices/pci.c:148 #: modules/devices/usb.c:139 msgid "Driver" msgstr "Driver" #: hardinfo2/cpu_util.c:223 modules/computer.c:801 #: modules/devices/arm/processor.c:255 modules/devices/e2k/processor.c:178 #: modules/devices/x86/processor.c:283 modules/devices/x86/processor.c:387 #: modules/devices/x86/processor.c:525 msgid "(Not Available)" msgstr "(Indisponível)" #: hardinfo2/cpu_util.c:231 hardinfo2/cpu_util.c:233 msgid "Socket" msgstr "Socket" #: hardinfo2/cpu_util.c:236 hardinfo2/cpu_util.c:238 modules/devices/gpu.c:205 #: modules/devices/gpu.c:295 msgid "Core" msgstr "Núcleo" #: hardinfo2/cpu_util.c:241 msgid "Book" msgstr "Livro" #: hardinfo2/cpu_util.c:243 msgid "Drawer" msgstr "Gaveta" #: hardinfo2/cpu_util.c:249 modules/devices/arm/processor.c:480 #: modules/devices/x86/processor.c:751 msgid "Topology" msgstr "Topologia" #: hardinfo2/cpu_util.c:250 msgid "ID" msgstr "ID" #: hardinfo2/dmi_util.c:25 msgid "BIOS Information" msgstr "Informação da BIOS" #: hardinfo2/dmi_util.c:26 modules/devices/parisc/processor.c:157 msgid "System" msgstr "Sistema" #: hardinfo2/dmi_util.c:27 msgid "Base Board" msgstr "Placa base" #: hardinfo2/dmi_util.c:28 modules/devices/dmi.c:54 msgid "Chassis" msgstr "Chassis" #: hardinfo2/dmi_util.c:29 modules/computer.c:580 modules/computer.c:1144 #: modules/devices/alpha/processor.c:87 modules/devices/arm/processor.c:340 #: modules/devices.c:99 modules/devices/e2k/processor.c:357 #: modules/devices/ia64/processor.c:159 #: modules/devices/loongarch64/processor.c:93 #: modules/devices/m68k/processor.c:83 modules/devices/mips/processor.c:74 #: modules/devices/parisc/processor.c:154 modules/devices/ppc/processor.c:157 #: modules/devices/riscv/processor.c:241 modules/devices/s390/processor.c:131 #: modules/devices/sh/processor.c:83 modules/devices/sparc/processor.c:74 #: modules/devices/x86/processor.c:647 msgid "Processor" msgstr "Processador" #: hardinfo2/dmi_util.c:30 msgid "Memory Controller" msgstr "Controlador de memória" #: hardinfo2/dmi_util.c:31 msgid "Memory Module" msgstr "Módulo de memória" #: hardinfo2/dmi_util.c:32 modules/devices/e2k/processor.c:366 #: modules/devices/parisc/processor.c:163 modules/devices/x86/processor.c:663 msgid "Cache" msgstr "Cache" #: hardinfo2/dmi_util.c:33 msgid "Port Connector" msgstr "Conector de porta" #: hardinfo2/dmi_util.c:34 msgid "System Slots" msgstr "Slots do sistema" #: hardinfo2/dmi_util.c:35 msgid "On Board Devices" msgstr "Dispositivos on board" #: hardinfo2/dmi_util.c:36 msgid "OEM Strings" msgstr "OEM Strings" #: hardinfo2/dmi_util.c:37 msgid "System Configuration Options" msgstr "Opções de configuração do sistema" #: hardinfo2/dmi_util.c:38 msgid "BIOS Language" msgstr "Idioma do BIOS" #: hardinfo2/dmi_util.c:39 msgid "Group Associations" msgstr "Associações de grupo" #: hardinfo2/dmi_util.c:40 msgid "System Event Log" msgstr "Relatório de eventos do sistema" #: hardinfo2/dmi_util.c:41 msgid "Physical Memory Array" msgstr "Conjunto de memória física" #: hardinfo2/dmi_util.c:42 msgid "Memory Device" msgstr "Dispositivo de memória" #: hardinfo2/dmi_util.c:43 msgid "32-bit Memory Error" msgstr "Erro de memória 32 bits" #: hardinfo2/dmi_util.c:44 msgid "Memory Array Mapped Address" msgstr "Endereço do conjunto de memória mapeado" #: hardinfo2/dmi_util.c:45 msgid "Memory Device Mapped Address" msgstr "Endereço do dispositivo de memória mapeado" #: hardinfo2/dmi_util.c:46 msgid "Built-in Pointing Device" msgstr "Dispositivo apontador embutido" #: hardinfo2/dmi_util.c:47 msgid "Portable Battery" msgstr "Bateria portátil" #: hardinfo2/dmi_util.c:48 msgid "System Reset" msgstr "Reinício do sistema" #: hardinfo2/dmi_util.c:49 msgid "Hardware Security" msgstr "Segurança do hardware" #: hardinfo2/dmi_util.c:50 msgid "System Power Controls" msgstr "Controlos de energia do sistema" #: hardinfo2/dmi_util.c:51 msgid "Voltage Probe" msgstr "Sondagem de voltagem" #: hardinfo2/dmi_util.c:52 msgid "Cooling Device" msgstr "Dispositivo de refrigeração" #: hardinfo2/dmi_util.c:53 msgid "Temperature Probe" msgstr "Sondagem de temperatura" #: hardinfo2/dmi_util.c:54 msgid "Electrical Current Probe" msgstr "Sondagem de corrente elétrica" #: hardinfo2/dmi_util.c:55 msgid "Out-of-band Remote Access" msgstr "Acesso remoto fora da banda" #: hardinfo2/dmi_util.c:56 msgid "Boot Integrity Services" msgstr "Serviços de integridade de arranque" #: hardinfo2/dmi_util.c:57 msgid "System Boot" msgstr "Arranque do sistema" #: hardinfo2/dmi_util.c:58 msgid "64-bit Memory Error" msgstr "Erro de memória de 64 bits" #: hardinfo2/dmi_util.c:59 msgid "Management Device" msgstr "Dispositivo de gestão" #: hardinfo2/dmi_util.c:60 msgid "Management Device Component" msgstr "Componente do dispositivo de gestão" #: hardinfo2/dmi_util.c:61 msgid "Management Device Threshold Data" msgstr "Dados do limiar do dispositivo de gestão" #: hardinfo2/dmi_util.c:62 msgid "Memory Channel" msgstr "Canal de memória" #: hardinfo2/dmi_util.c:63 msgid "IPMI Device" msgstr "Dispositivo IPMI" #: hardinfo2/dmi_util.c:64 msgid "Power Supply" msgstr "Fonte de alimentação" #: hardinfo2/dmi_util.c:65 msgid "Additional Information" msgstr "Informação adicional" #: hardinfo2/dmi_util.c:66 msgid "Onboard Device" msgstr "Dispositivo onboard" #: hardinfo2/dmi_util.c:233 msgid "Invalid chassis type (0)" msgstr "Tipo de chassi inválido (0)" #: hardinfo2/dmi_util.c:234 hardinfo2/dmi_util.c:235 msgid "Unknown chassis type" msgstr "Tipo de chassi desconhecido" #: hardinfo2/dmi_util.c:236 msgid "Desktop" msgstr "Desktop" #: hardinfo2/dmi_util.c:237 msgid "Low-profile Desktop" msgstr "Desktop de baixo perfil" #: hardinfo2/dmi_util.c:238 msgid "Pizza Box" msgstr "Caixa de pizza" #: hardinfo2/dmi_util.c:239 msgid "Mini Tower" msgstr "Mini torre" #: hardinfo2/dmi_util.c:240 msgid "Tower" msgstr "Torre" #: hardinfo2/dmi_util.c:241 msgid "Portable" msgstr "Portátil" #: hardinfo2/dmi_util.c:242 modules/computer.c:408 modules/computer.c:417 #: modules/computer.c:440 modules/computer.c:442 msgid "Laptop" msgstr "Laptop" #: hardinfo2/dmi_util.c:243 msgid "Notebook" msgstr "Notebook" #: hardinfo2/dmi_util.c:244 msgid "Handheld" msgstr "Handheld" #: hardinfo2/dmi_util.c:245 msgid "Docking Station" msgstr "Estação de ancoragem" #: hardinfo2/dmi_util.c:246 msgid "All-in-one" msgstr "All-in-one" #: hardinfo2/dmi_util.c:247 msgid "Subnotebook" msgstr "Subnotebook" #: hardinfo2/dmi_util.c:248 msgid "Space-saving" msgstr "Poupança de espaço" #: hardinfo2/dmi_util.c:249 msgid "Lunch Box" msgstr "Lancheira" #: hardinfo2/dmi_util.c:250 msgid "Main Server Chassis" msgstr "Chassis do servidor principal" #: hardinfo2/dmi_util.c:251 msgid "Expansion Chassis" msgstr "Chassis de expansão" #: hardinfo2/dmi_util.c:252 msgid "Sub Chassis" msgstr "Sub chassis" #: hardinfo2/dmi_util.c:253 msgid "Bus Expansion Chassis" msgstr "Chassis de expansão de barramento" #: hardinfo2/dmi_util.c:254 msgid "Peripheral Chassis" msgstr "Chassis periférico" #: hardinfo2/dmi_util.c:255 msgid "RAID Chassis" msgstr "Chassis RAID" #: hardinfo2/dmi_util.c:256 msgid "Rack Mount Chassis" msgstr "Chassis de montagem em rack" #: hardinfo2/dmi_util.c:257 msgid "Sealed-case PC" msgstr "PC com caixa selada" #: hardinfo2/dmi_util.c:258 msgid "Multi-system" msgstr "Multi-sistema" #: hardinfo2/dmi_util.c:259 msgid "CompactPCI" msgstr "PCI compacto" #: hardinfo2/dmi_util.c:260 msgid "AdvancedTCA" msgstr "TCA avançado" #: hardinfo2/dmi_util.c:261 msgid "Blade" msgstr "Palheta" #: hardinfo2/dmi_util.c:262 msgid "Blade Enclosing" msgstr "Juntada de palheta" #: hardinfo2/dmi_util.c:263 msgid "Tablet" msgstr "Tablet" #: hardinfo2/dmi_util.c:264 msgid "Convertible" msgstr "Conversível" #: hardinfo2/dmi_util.c:265 msgid "Detachable" msgstr "Destacável" #: hardinfo2/dmi_util.c:266 msgid "IoT Gateway" msgstr "Passagem IoT" #: hardinfo2/dmi_util.c:267 msgid "Embedded PC" msgstr "PC embutido" #: hardinfo2/dmi_util.c:268 msgid "Mini PC" msgstr "PC mini" #: hardinfo2/dmi_util.c:269 msgid "Stick PC" msgstr "PC colocado" #: hardinfo2/dt_util.c:1175 msgid "phandle Map" msgstr "Mapa de phandle" #: hardinfo2/dt_util.c:1176 msgid "Alias Map" msgstr "Mapa de alias" #: hardinfo2/dt_util.c:1177 msgid "Symbol Map" msgstr "Mapa de símbolo" #. !/ %d will be latest year of copyright #: hardinfo2/hardinfo.c:104 #, c-format msgid "" "Copyright (C) 2003-2023 L. A. F. Pereira. 2024-%d Hardinfo2 Project.\n" "\n" msgstr "" #: hardinfo2/hardinfo.c:106 #, c-format msgid "" "Compile-time options:\n" " Release version: %s (%s)\n" " LibSoup version: %s\n" " Data : %s\n" " Library : %s\n" " Locale : %s\n" " Compiled for : %s\n" msgstr "" #: hardinfo2/hardinfo.c:114 msgid "3.0" msgstr "" #: hardinfo2/hardinfo.c:149 #, c-format msgid "Unknown benchmark ``%s''\n" msgstr "" #: hardinfo2/hardinfo.c:188 msgid "Don't know what to do. Exiting." msgstr "Não sabe o que fazer. A sair." #: hardinfo2/usb_util.c:293 modules/devices/devicetree.c:90 #: modules/devices/devicetree.c:91 modules/devices/monitors.c:411 #: modules/devices/storage.c:306 modules/devices/storage.c:328 msgid "(None)" msgstr "(Nenhum)" #: hardinfo2/util.c:100 modules/computer/uptime.c:54 #, c-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d dia" msgstr[1] "%d dias" #: hardinfo2/util.c:101 modules/computer/uptime.c:55 #, c-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d hora" msgstr[1] "%d horas" #: hardinfo2/util.c:102 modules/computer/uptime.c:56 #, c-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d minuto" msgstr[1] "%d minutos" #: hardinfo2/util.c:103 #, c-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d segundo" msgstr[1] "%d segundos" #: hardinfo2/util.c:124 #, c-format msgid "%.1f B" msgstr "%.1f B" #: hardinfo2/util.c:126 #, c-format msgid "%.1f KiB" msgstr "%.1f KiB" #: hardinfo2/util.c:128 #, c-format msgid "%.1f MiB" msgstr "%.1f MiB" #: hardinfo2/util.c:130 #, c-format msgid "%.1f GiB" msgstr "%.1f GiB" #: hardinfo2/util.c:132 #, c-format msgid "%.1f TiB" msgstr "%.1f TiB" #: hardinfo2/util.c:134 #, c-format msgid "%.1f PiB" msgstr "%.1f PiB" #: hardinfo2/util.c:283 msgid "Error" msgstr "Erro" #: hardinfo2/util.c:283 hardinfo2/util.c:299 msgid "Warning" msgstr "Aviso" #: hardinfo2/util.c:298 msgid "Fatal Error" msgstr "Erro fatal" #: hardinfo2/util.c:325 msgid "do not print status messages to standard output" msgstr "" #: hardinfo2/util.c:331 msgid "creates a report and prints to standard output" msgstr "cria um relatório e mostra pela saída padrão" #: hardinfo2/util.c:337 msgid "chooses a report format ([text], html)" msgstr "escolhe um formato de relatório ([texto], html)" #: hardinfo2/util.c:343 msgid "run single benchmark eg. -b 'FPU FFT' (Default all Benchmarks runs)" msgstr "" #: hardinfo2/util.c:349 msgid "" "user note attached to benchmark results. (updating/synchronize with server)" msgstr "" #: hardinfo2/util.c:355 msgid "benchmark result format ([short], conf, shell)" msgstr "formato de resultado de benchmark ([short], conf, shell)" #: hardinfo2/util.c:361 msgid "" "maximum number of benchmark results to include (-1 for no limit, default is " "50)" msgstr "" "número máximo de resultados de benchmark a incluir (-1 para sem limite, " "padrão é 50)" #: hardinfo2/util.c:367 msgid "shows program version and quit" msgstr "executar no modo do servidor XML-RPC" #: hardinfo2/util.c:373 msgid "do not run benchmarks" msgstr "não execute benchmarks" #: hardinfo2/util.c:379 msgid "show all details" msgstr "mostrar todos os detalhes" #: hardinfo2/util.c:384 msgid "- System Information and Benchmark" msgstr "" #: hardinfo2/util.c:394 #, c-format msgid "" "Unrecognized arguments.\n" "Try ``%s --help'' for more information.\n" msgstr "" "Argumentos não reconhecidos.\n" "Experimente ``%s --help'' para mais informação\n" #: hardinfo2/util.c:869 #, c-format msgid "Scanning: %s..." msgstr "A analisar: %s..." #: hardinfo2/util.c:879 shell/shell.c:303 shell/shell.c:925 shell/shell.c:2163 msgid "Done." msgstr "Concluído." #: hardinfo2/vendor.c:213 msgid "Update vendor list" msgstr "" #: hardinfo2/vendor.c:218 msgid "Check Update Version" msgstr "" #: hardinfo2/vendor.c:391 modules/computer.c:630 modules/computer.c:829 #: modules/computer/os.c:196 modules/computer/os.c:378 #: modules/computer/os.c:413 modules/computer/os.c:741 #: modules/computer/os.c:802 modules/devices.c:464 modules/devices.c:614 #: modules/devices/firmware.c:149 modules/devices/printers.c:106 #: modules/devices/printers.c:113 modules/devices/printers.c:123 #: modules/devices/printers.c:138 modules/devices/printers.c:147 #: modules/devices/printers.c:256 modules/devices/spd-decode.c:364 #: modules/devices/usb.c:149 msgid "Unknown" msgstr "Desconhecido" #: shell/callbacks.c:457 shell/shell.c:522 msgid "System Information and Benchmark" msgstr "" #: shell/callbacks.c:462 msgid "" "HardInfo2 is free software; you can redistribute it and/or modify it under " "the terms of the GNU General Public License as published by the Free " "Software Foundation, version 2 or later.\n" "\n" "This program is distributed in the hope that it will be useful, but WITHOUT " "ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " "FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " "more details.\n" "\n" "You should have received a copy of the GNU General Public License along with " "this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin St, Fifth Floor, Boston, MA 02110-1301 USA" msgstr "" #: shell/menu.c:43 msgid "_Information" msgstr "_Informação" #: shell/menu.c:44 msgid "_View" msgstr "_Vista View" #: shell/menu.c:46 msgid "_Theme" msgstr "" #: shell/menu.c:48 msgid "_Help" msgstr "_Ajuda" #: shell/menu.c:52 msgid "Generate _Report" msgstr "Gerar_relatório" #: shell/menu.c:53 msgid "Generates a report with detailed system information" msgstr "" #: shell/menu.c:57 shell/syncmanager.c:692 msgid "Synchronize" msgstr "" #: shell/menu.c:58 msgid "Send benchmark results and receive updated data from the network" msgstr "" #: shell/menu.c:73 msgid "_Refresh" msgstr "_Atualizar" #: shell/menu.c:78 msgid "_Open HardInfo2 Web Site" msgstr "_Abrir site do HardInfo2" #: shell/menu.c:83 msgid "_Report bug" msgstr "_Reportar bug" #: shell/menu.c:88 msgid "_About HardInfo2" msgstr "_Acerca do Hardinfo" #: shell/menu.c:89 msgid "Displays program version information" msgstr "Exibe informação da versão do programa" #: shell/menu.c:93 msgid "_Quit" msgstr "_Sair" #: shell/menu.c:100 msgid "_Side Pane" msgstr "_Painel lateral" #: shell/menu.c:101 msgid "Toggles side pane visibility" msgstr "Alterna a visibilidade do painel lateral" #: shell/menu.c:104 msgid "_Toolbar" msgstr "_Barra de ferramentas" #: shell/menu.c:108 msgid "Synchronize on startup" msgstr "" #: shell/menu.c:113 msgid "Disable Theme" msgstr "" #: shell/menu.c:117 msgid "Theme Motherboard" msgstr "" #: shell/menu.c:121 msgid "Theme Graffiti" msgstr "" #: shell/menu.c:125 msgid "Theme Anime PC" msgstr "" #: shell/menu.c:129 msgid "Theme Tux Star" msgstr "" #: shell/menu.c:133 msgid "Theme PixArt" msgstr "" #: shell/menu.c:137 msgid "Theme Silicon" msgstr "" #: shell/report.c:772 shell/report.c:780 msgid "Save File" msgstr "Guardar ficheiro" #: shell/report.c:775 shell/report.c:1252 shell/syncmanager.c:780 msgid "_Cancel" msgstr "_Cancelar" #: shell/report.c:777 msgid "_Save" msgstr "_Guardar" #: shell/report.c:952 msgid "Cannot create ReportContext. Programming bug?" msgstr "Não é possível criar ReportContext. Erro de programação?" #: shell/report.c:972 msgid "Open the report with your web browser?" msgstr "Abrir o relatório com o seu navegador da web?" #: shell/report.c:975 msgid "_No" msgstr "_Não" #: shell/report.c:976 msgid "_Open" msgstr "_Abrir" #: shell/report.c:1007 msgid "Generating report..." msgstr "A gerar relatório ..." #: shell/report.c:1017 msgid "Report saved." msgstr "Relatório guardado." #: shell/report.c:1019 msgid "Error while creating the report." msgstr "Erro ao criar o relatório." #: shell/report.c:1121 msgid "Generate Report" msgstr "Gerar relatório" #: shell/report.c:1146 msgid "" "Generate Report\n" "Please choose the information that you wish to view in your report:" msgstr "" "Gerar relatório\n" "Escolha a informação que quer visualizar no seu relatório:" #: shell/report.c:1218 msgid "Select _None" msgstr "Selecionar_Nenhuma" #: shell/report.c:1229 msgid "Select _All" msgstr "Selecionar_tudo" #: shell/report.c:1262 msgid "_Generate" msgstr "_Gerar" #: shell/shell.c:517 #, c-format msgid "%s - System Information and Benchmark" msgstr "" #: shell/shell.c:910 msgid "Loading modules..." msgstr "A carregar módulos ..." #: shell/shell.c:1681 msgid "URL" msgstr "" #: shell/shell.c:1688 msgid "Support URL" msgstr "" #: shell/shell.c:1699 msgid "Wikipedia" msgstr "" #: shell/shell.c:2033 #, c-format msgid "%s → Summary" msgstr "%s → Resumo" #: shell/shell.c:2139 msgid "Updating..." msgstr "A atualizar..." #: shell/syncmanager.c:80 msgid "" "Synchronize with Central Database\n" "The following information may be synchronized\n" "with the HardInfo2 central database." msgstr "" #: shell/syncmanager.c:84 msgid "" "Synchronizing\n" "This may take some time." msgstr "" "A sincronizar\n" "Isto pode demorar um pouco." #: shell/syncmanager.c:546 msgid "(canceled)" msgstr "(cancelado)" #: shell/syncmanager.c:562 msgid "(failed)" msgstr "(falhou)" #: shell/syncmanager.c:658 modules/benchmark.c:932 msgid "Send benchmark results" msgstr "Enviar resultados de benchmark" #: shell/syncmanager.c:767 msgid "Privacy Policy" msgstr "" #: shell/syncmanager.c:789 msgid "_Synchronize" msgstr "_Sincronizar" #: shell/syncmanager.c:838 #, c-format msgid "Synchronizing: %s" msgstr "" #: modules/benchmark/benches.c:136 msgid "CPU Blowfish (Single-thread)" msgstr "CPU Blowfish (Processamento unitário)" #: modules/benchmark/benches.c:144 msgid "CPU Blowfish (Multi-thread)" msgstr "CPU Blowfish (Processamento múltiplo)" #: modules/benchmark/benches.c:152 msgid "CPU Blowfish (Multi-core)" msgstr "CPU Blowfish (Núcleo múltiplo)" #: modules/benchmark/benches.c:160 msgid "CPU Zlib" msgstr "CPU Zlib" #: modules/benchmark/benches.c:168 msgid "CPU CryptoHash" msgstr "CPU CryptoHash" #: modules/benchmark/benches.c:176 msgid "CPU Fibonacci" msgstr "CPU Fibonacci" #: modules/benchmark/benches.c:184 msgid "CPU N-Queens" msgstr "CPU N-Queens" #: modules/benchmark/benches.c:192 msgid "FPU FFT" msgstr "FPU FFT" #: modules/benchmark/benches.c:200 msgid "FPU Raytracing (Single-thread)" msgstr "" #: modules/benchmark/benches.c:208 msgid "Internal Network Speed" msgstr "" #: modules/benchmark/benches.c:216 msgid "SysBench CPU (Single-thread)" msgstr "SysBench CPU (Processamento unitário)" #: modules/benchmark/benches.c:224 msgid "SysBench CPU (Multi-thread)" msgstr "SysBench (Processamento múltiplo)" #: modules/benchmark/benches.c:232 msgid "SysBench CPU (Four threads)" msgstr "CPU SysBench (quatro threads)" #: modules/benchmark/benches.c:240 msgid "SysBench Memory (Single-thread)" msgstr "Memória SysBench (thread-único)" #: modules/benchmark/benches.c:248 msgid "SysBench Memory (Two threads)" msgstr "Memória SysBench (dois threads)" #: modules/benchmark/benches.c:256 msgid "SysBench Memory (Quad threads)" msgstr "" #: modules/benchmark/benches.c:264 msgid "SysBench Memory (Multi-thread)" msgstr "" #: modules/benchmark/benches.c:272 msgid "GPU Drawing" msgstr "Desenho de GPU" #: modules/benchmark/benches.c:281 msgid "GPU OpenGL Drawing" msgstr "" #: modules/benchmark/benches.c:290 msgid "Storage R/W Speed" msgstr "" #: modules/benchmark/benches.c:304 msgid "" "Alexey Kopytov's sysbench is required.\n" "Results in events/second. Higher is better." msgstr "" "sysbench de Alexey Kopytov é requerido.\n" "Resultados em eventos/segundo. Maior é melhor." #: modules/benchmark/benches.c:310 msgid "" "Alexey Kopytov's sysbench is required.\n" "Results in MiB/second. Higher is better." msgstr "" "sysbench de Alexey Kopytov é requerido.\n" "Resultados em MiB/segundo. Maior é melhor." #: modules/benchmark/benches.c:313 msgid "" "iperf3 is required.\n" "Results in Gbits/s. Higher is better." msgstr "" #: modules/benchmark/benches.c:324 msgid "Results in HIMarks. Higher is better." msgstr "Resultados em HIMarks. Mais alto é melhor." #: modules/benchmark/benches.c:326 msgid "" "Results in HIMarks. Higher is better.\n" "Many Desktop Environments only uses software." msgstr "" #: modules/benchmark/benches.c:329 msgid "Results in MB/s. Higher is better." msgstr "" #: modules/benchmark/benches.c:332 msgid "Results in FPS. Higher is better." msgstr "" #. !/ Used for an unknown value. Having it in only one place cleans up the .po #. * line references #: modules/benchmark/bench_results.c:34 modules/computer.c:41 #: modules/computer/display.c:40 modules/computer/display.c:57 #: modules/computer/os.c:400 modules/computer/os.c:457 modules/devices.c:596 #: modules/devices/dmi_memory.c:699 modules/devices/dmi_memory.c:835 #: modules/devices/gpu.c:40 modules/devices/gpu.c:58 modules/devices/gpu.c:122 #: modules/devices/gpu.c:130 modules/devices/gpu.c:210 #: modules/devices/gpu.c:211 modules/devices/gpu.c:230 #: modules/devices/inputdevices.c:51 modules/devices/monitors.c:28 #: modules/devices/monitors.c:29 modules/devices/monitors.c:155 #: modules/devices/monitors.c:164 modules/devices/pci.c:25 #: modules/devices/pci.c:149 modules/devices/pci.c:150 #: modules/devices/spd-decode.c:358 modules/devices/spd-decode.c:359 #: modules/devices/spd-decode.c:362 modules/devices/spd-decode.c:363 #: modules/devices/spd-decode.c:584 modules/devices/spd-decode.c:899 #: modules/devices/spd-decode.c:900 modules/devices/spd-decode.c:1111 #: modules/devices/spd-decode.c:1350 modules/devices/storage.c:27 #: modules/devices/storage.c:307 modules/devices/storage.c:336 #: modules/devices/storage.c:431 modules/devices/usb.c:29 #: modules/network/net.c:460 includes/cpu_util.h:11 includes/spd-decode.h:24 #: includes/spd-decode.h:25 msgid "(Unknown)" msgstr "(Desconhecido)" #: modules/benchmark/bench_results.c:261 modules/devices/alpha/processor.c:90 #: modules/devices/arm/processor.c:289 modules/devices/arm/processor.c:302 #: modules/devices/arm/processor.c:344 modules/devices/arm/processor.c:509 #: modules/devices.c:430 modules/devices.c:438 modules/devices.c:466 #: modules/devices/e2k/processor.c:363 modules/devices/e2k/processor.c:400 #: modules/devices/gpu.c:125 modules/devices/gpu.c:127 #: modules/devices/gpu.c:133 modules/devices/gpu.c:135 #: modules/devices/gpu.c:233 modules/devices/gpu.c:235 #: modules/devices/ia64/processor.c:167 modules/devices/ia64/processor.c:196 #: modules/devices/loongarch64/processor.c:98 #: modules/devices/m68k/processor.c:87 modules/devices/mips/processor.c:77 #: modules/devices/parisc/processor.c:158 #: modules/devices/parisc/processor.c:191 modules/devices/ppc/processor.c:160 #: modules/devices/ppc/processor.c:187 modules/devices/riscv/processor.c:246 #: modules/devices/riscv/processor.c:276 modules/devices/s390/processor.c:160 #: modules/devices/sh/processor.c:87 modules/devices/sh/processor.c:88 #: modules/devices/sh/processor.c:89 modules/devices/x86/processor.c:317 #: modules/devices/x86/processor.c:330 modules/devices/x86/processor.c:658 #: modules/devices/x86/processor.c:790 msgid "MHz" msgstr "MHz" #: modules/benchmark/bench_results.c:293 modules/devices.c:177 #, c-format msgid "%d physical processor" msgid_plural "%d physical processors" msgstr[0] "%d processador físico" msgstr[1] "%d processadores físicos" #: modules/benchmark/bench_results.c:294 modules/devices.c:178 #, c-format msgid "%d core" msgid_plural "%d cores" msgstr[0] "%d núcleo" msgstr[1] "%d núcleos" #: modules/benchmark/bench_results.c:295 modules/devices.c:179 #, c-format msgid "%d thread" msgid_plural "%d threads" msgstr[0] "%d thread" msgstr[1] "%d threads" #: modules/benchmark/bench_results.c:300 modules/devices.c:181 #, c-format msgid "%d NUMA node" msgid_plural "%d NUMA nodes" msgstr[0] "" msgstr[1] "" #. !/NP procs; NC cores across NN nodes; NT threads #: modules/benchmark/bench_results.c:304 #, c-format msgid "%s; %s across %s; %s" msgstr "" #. !/NP procs; NC cores; NT threads #: modules/benchmark/bench_results.c:309 #, c-format msgid "%s; %s; %s" msgstr "%s; %s; %s" #: modules/benchmark/bench_results.c:383 modules/benchmark/bench_results.c:508 #: modules/computer.c:1041 modules/devices/dmi_memory.c:639 #: modules/devices/dmi_memory.c:649 modules/devices/dmi_memory.c:703 #: modules/devices/dmi_memory.c:791 modules/devices/dmi_memory.c:837 #: modules/devices/dmi_memory.c:920 modules/devices/spd-decode.c:1354 #: modules/network/net.c:416 modules/network/net.c:440 #: modules/network/net.c:441 msgid "MiB" msgstr "MiB" #: modules/benchmark/bench_results.c:388 modules/benchmark/bench_results.c:507 msgid "kiB" msgstr "kIB" #: modules/benchmark/bench_results.c:396 modules/benchmark/bench_results.c:452 #, c-format msgid "%d-bit" msgstr "%d-bit" #: modules/benchmark/bench_results.c:417 modules/benchmark/bench_results.c:482 msgid "Benchmark Result" msgstr "Resultado de referência" #: modules/benchmark/bench_results.c:417 modules/benchmark/bench_results.c:482 msgid "Threads" msgstr "Tópicos" #: modules/benchmark/bench_results.c:418 modules/benchmark/bench_results.c:484 msgid "Elapsed Time" msgstr "Tempo gasto" #: modules/benchmark/bench_results.c:418 modules/benchmark/bench_results.c:484 msgid "seconds" msgstr "segundos" #: modules/benchmark/bench_results.c:419 modules/computer/languages.c:101 #: modules/devices/arm/processor.c:354 modules/devices/e2k/processor.c:362 #: modules/devices/gpu.c:203 modules/devices/ia64/processor.c:166 #: modules/devices/loongarch64/processor.c:97 modules/devices/pci.c:146 #: modules/devices/ppc/processor.c:159 msgid "Revision" msgstr "Revisão" #: modules/benchmark/bench_results.c:420 modules/benchmark/bench_results.c:485 msgid "Extra Information" msgstr "Informação extra" #: modules/benchmark/bench_results.c:422 modules/benchmark/bench_results.c:487 msgid "Note" msgstr "Nota" #: modules/benchmark/bench_results.c:423 modules/benchmark/bench_results.c:488 msgid "" "This result is from an old version of HardInfo. Results might not be " "comparable to current version. Some details are missing." msgstr "" #: modules/benchmark/bench_results.c:427 modules/benchmark/bench_results.c:492 #: modules/devices/devicetree/pmac_data.c:81 modules/devices/sh/processor.c:85 msgid "Machine" msgstr "Máquina" #: modules/benchmark/bench_results.c:428 modules/benchmark/bench_results.c:492 #: modules/devices/devicetree.c:207 modules/devices/dmi.c:48 msgid "Board" msgstr "Placa" #: modules/benchmark/bench_results.c:429 modules/benchmark/bench_results.c:494 #: modules/computer.c:583 msgid "Machine Type" msgstr "Tipo de machina" #: modules/benchmark/bench_results.c:430 modules/benchmark/bench_results.c:497 msgid "CPU Name" msgstr "Nome da CPU" #: modules/benchmark/bench_results.c:431 modules/benchmark/bench_results.c:498 msgid "CPU Description" msgstr "Descrição da CPU" #: modules/benchmark/bench_results.c:432 modules/benchmark/bench_results.c:500 #: modules/benchmark.c:601 msgid "CPU Config" msgstr "Configurações da CPU" #: modules/benchmark/bench_results.c:433 modules/benchmark/bench_results.c:500 msgid "Threads Available" msgstr "Tópicos disponíveis" #: modules/benchmark/bench_results.c:434 modules/benchmark/bench_results.c:501 #: modules/benchmark.c:579 msgid "GPU" msgstr "GPU" #: modules/benchmark/bench_results.c:435 modules/benchmark/bench_results.c:503 #: modules/computer.c:595 msgid "OpenGL Renderer" msgstr "Renderizador OpenGL" #: modules/benchmark/bench_results.c:436 modules/benchmark/bench_results.c:505 #: modules/benchmark.c:590 modules/computer.c:1145 modules/devices.c:109 msgid "Storage" msgstr "Armazenamento" #: modules/benchmark/bench_results.c:437 modules/benchmark/bench_results.c:507 #: modules/computer.c:140 modules/computer.c:582 modules/computer.c:1144 #: modules/devices/gpu.c:206 msgid "Memory" msgstr "Memória" #: modules/benchmark/bench_results.c:438 modules/benchmark/bench_results.c:509 msgid "Pointer Size" msgstr "Tamanho do ponteiro" #: modules/benchmark/bench_results.c:482 msgid "Benchmark" msgstr "Referência" #: modules/benchmark/bench_results.c:483 modules/devices/dmi_memory.c:859 #: modules/devices/firmware.c:245 modules/devices/monitors.c:495 #: modules/devices/x86/processor.c:692 msgid "Result" msgstr "Resultado" #: modules/benchmark/bench_results.c:495 msgid "Linux Kernel" msgstr "" #: modules/benchmark/bench_results.c:496 msgid "Linux OS" msgstr "" #: modules/benchmark/bench_results.c:507 msgid "Physical Memory" msgstr "" #: modules/benchmark/bench_results.c:511 msgid "Handles" msgstr "Alças" #: modules/benchmark/bench_results.c:511 msgid "mid" msgstr "mid" #: modules/benchmark/bench_results.c:512 msgid "cfg_val" msgstr "cfg_val" #: modules/benchmark.c:352 msgid "This Machine" msgstr "" #: modules/benchmark.c:578 modules/benchmark.c:589 modules/benchmark.c:601 msgid "Results" msgstr "Resultados" #: modules/benchmark.c:602 modules/devices/sparc/processor.c:75 msgid "CPU" msgstr "CPU" #: modules/benchmark.c:678 #, c-format msgid "Benchmarking: %s." msgstr "Benchmarking: %s." #: modules/benchmark.c:685 msgid "Stop" msgstr "" #: modules/benchmark.c:697 msgid "" "Please do not move your mouse\n" "or press any keys." msgstr "" #: modules/benchmark.c:767 msgid "Benchmarks" msgstr "Benchmarks" #: modules/benchmark.c:777 msgid "Perform tasks and compare with other systems" msgstr "Execute tarefas e compare com outros sistemas" #: modules/benchmark.c:938 msgid "Receive benchmark results" msgstr "Receber resultados de benchmark" #: modules/computer/alsa.c:26 modules/computer.c:599 msgid "Audio Devices" msgstr "Dispositivos de áudio" #: modules/computer/alsa.c:34 msgid "Audio Adapter" msgstr "Adaptador de áudio" #: modules/computer.c:96 modules/devices/firmware.c:74 msgid "Summary" msgstr "Resumo" #: modules/computer.c:97 modules/computer.c:585 modules/computer.c:1143 msgid "Operating System" msgstr "Sistema operacional" #: modules/computer.c:98 msgid "Security" msgstr "Segurança" #: modules/computer.c:99 modules/devices/gpu.c:211 modules/devices/pci.c:150 msgid "Kernel Modules" msgstr "Módulos do kernel" #: modules/computer.c:100 modules/computer.c:741 msgid "Boots" msgstr "Boots" #: modules/computer.c:101 msgid "Languages" msgstr "Idiomas" #: modules/computer.c:102 msgid "Memory Usage" msgstr "Uso de memória" #: modules/computer.c:103 msgid "Filesystems" msgstr "Sistema de arquivos" #: modules/computer.c:104 modules/computer.c:590 msgid "Display" msgstr "Ecrã" #: modules/computer.c:105 modules/computer/environment.c:37 msgid "Environment Variables" msgstr "Variáveis do ambiente" #: modules/computer.c:107 modules/computer.c:109 msgid "Development" msgstr "Desenvolvimento" #: modules/computer.c:111 modules/computer.c:884 msgid "Users" msgstr "Utilizadores" #: modules/computer.c:112 msgid "Groups" msgstr "Grupos" #: modules/computer.c:142 #, c-format msgid "%dMB (%dMB used)" msgstr "%dMB (%dMB usado)" #: modules/computer.c:144 modules/computer.c:646 msgid "Uptime" msgstr "Tempo de atividade" #: modules/computer.c:146 modules/computer.c:587 msgid "Date/Time" msgstr "Data hora" #: modules/computer.c:151 modules/computer.c:647 msgid "Load Average" msgstr "Carga média" #: modules/computer.c:266 msgid "Scripting Languages" msgstr "Idiomas de script" #: modules/computer.c:267 msgid "Gambas3 (gbr3)" msgstr "Gambas3 (gbr3)" #: modules/computer.c:268 msgid "Python (default)" msgstr "Python (padrão)" #: modules/computer.c:269 msgid "Python2" msgstr "Python2" #: modules/computer.c:270 msgid "Python3" msgstr "Python3" #: modules/computer.c:271 msgid "Perl" msgstr "Perl" #: modules/computer.c:272 msgid "Rakudo (Perl6)" msgstr "" #: modules/computer.c:273 msgid "PHP" msgstr "PHP" #: modules/computer.c:274 msgid "Ruby" msgstr "Rubi" #: modules/computer.c:275 msgid "Bash" msgstr "Bash" #: modules/computer.c:276 msgid "JavaScript (Node.js)" msgstr "JavaScript (Node.js)" #: modules/computer.c:277 msgid "awk" msgstr "awk" #: modules/computer.c:278 msgid "Compilers" msgstr "Compiladores" #: modules/computer.c:279 msgid "C (GCC)" msgstr "C (GCC)" #: modules/computer.c:280 msgid "C (Clang)" msgstr "C (Clang)" #: modules/computer.c:281 msgid "D (dmd)" msgstr "D (dmd)" #: modules/computer.c:282 msgid "Gambas3 (gbc3)" msgstr "Gambas3 (gbc3)" #: modules/computer.c:283 msgid "Java" msgstr "Java" #: modules/computer.c:284 msgid ".NET" msgstr "" #: modules/computer.c:285 msgid "Vala" msgstr "Vala" #: modules/computer.c:286 msgid "Haskell (GHC)" msgstr "Haskell (GHC)" #: modules/computer.c:287 msgid "FreePascal" msgstr "FreePascal" #: modules/computer.c:288 msgid "Go" msgstr "Vai" #: modules/computer.c:289 msgid "Rust" msgstr "Rust" #: modules/computer.c:290 msgid "Tools" msgstr "Ferramentas" #: modules/computer.c:291 msgid "make" msgstr "fazer" #: modules/computer.c:292 msgid "ninja" msgstr "ninja" #: modules/computer.c:293 msgid "GDB" msgstr "GDB" #: modules/computer.c:294 msgid "LLDB" msgstr "LLDB" #: modules/computer.c:295 msgid "strace" msgstr "strace" #: modules/computer.c:296 msgid "valgrind" msgstr "valgrind" #: modules/computer.c:297 msgid "QMake" msgstr "Qmake" #: modules/computer.c:298 msgid "CMake" msgstr "Cmake" #: modules/computer.c:299 msgid "Gambas3 IDE" msgstr "IDE Gambas3" #: modules/computer.c:300 msgid "Radare2" msgstr "Radare2" #: modules/computer.c:301 msgid "ltrace" msgstr "ltrace" #: modules/computer.c:302 msgid "Powershell" msgstr "" #: modules/computer.c:343 msgid "Not found" msgstr "Não encontrado" #: modules/computer.c:348 #, c-format msgid "Detecting version: %s" msgstr "Detectando a versão: %s" #: modules/computer.c:366 msgid "Program" msgstr "Programa" #: modules/computer.c:366 modules/computer.c:629 modules/computer.c:631 #: modules/computer.c:807 modules/computer/modules.c:372 #: modules/devices/dmi.c:41 modules/devices/dmi.c:47 modules/devices/dmi.c:51 #: modules/devices/dmi.c:57 modules/devices/firmware.c:75 #: modules/devices/inputdevices.c:146 modules/devices/monitors.c:409 msgid "Version" msgstr "Versão" #: modules/computer.c:385 msgid "Field" msgstr "Field" #: modules/computer.c:385 modules/computer.c:730 modules/computer/modules.c:370 #: modules/computer/modules.c:371 modules/devices/arm/processor.c:479 msgid "Description" msgstr "Descrição" #: modules/computer.c:385 modules/devices.c:841 msgid "Value" msgstr "Valor" #: modules/computer.c:402 modules/computer.c:404 msgid "Single-board computer" msgstr "Computador de placa única" #: modules/computer.c:455 modules/computer.c:457 msgid "Unknown physical machine type" msgstr "Tipo de máquina física desconhecida" #: modules/computer.c:479 modules/computer.c:480 modules/computer.c:527 #: modules/computer.c:529 msgid "Virtual (VMware)" msgstr "Virtual (VMware)" #: modules/computer.c:482 modules/computer.c:483 modules/computer.c:484 #: modules/computer.c:485 msgid "Virtual (QEMU)" msgstr "Virtual (QEMU)" #: modules/computer.c:487 modules/computer.c:488 msgid "Virtual (Unknown)" msgstr "Virtual (desconhecido)" #: modules/computer.c:490 modules/computer.c:491 modules/computer.c:492 #: modules/computer.c:520 modules/computer.c:522 msgid "Virtual (VirtualBox)" msgstr "Virtual (VirtualBox)" #: modules/computer.c:494 modules/computer.c:495 modules/computer.c:496 #: modules/computer.c:511 modules/computer.c:513 msgid "Virtual (Xen)" msgstr "Virtual (Xen)" #: modules/computer.c:498 msgid "Virtual (hypervisor present)" msgstr "Virtual (presente do hipervisor)" #: modules/computer.c:579 modules/computer.c:1097 msgid "Computer" msgstr "Computador" #: modules/computer.c:586 modules/computer.c:640 msgid "User Name" msgstr "Nome de utilizador" #: modules/computer.c:591 msgid "Resolution" msgstr "Resolução" #: modules/computer.c:591 modules/computer.c:812 #, c-format msgid "%dx%d pixels" msgstr "%dx%d pixels" #: modules/computer.c:593 msgid "Display Adapter" msgstr "" #: modules/computer.c:596 msgid "Session Display Server" msgstr "Servidor de exibição de sessão" #: modules/computer.c:601 modules/devices.c:108 msgid "Input Devices" msgstr "Dispositivos de entrada" #: modules/computer.c:629 msgid "Kernel" msgstr "Kernel" #: modules/computer.c:630 msgid "Command Line" msgstr "Linha de comando" #: modules/computer.c:632 msgid "C Library" msgstr "Biblioteca C" #: modules/computer.c:633 msgid "Distribution" msgstr "Distribuição" #: modules/computer.c:638 msgid "Current Session" msgstr "Sessão atual" #: modules/computer.c:639 msgid "Computer Name" msgstr "Nome do computador" #: modules/computer.c:641 modules/computer/languages.c:99 msgid "Language" msgstr "Idioma" #: modules/computer.c:642 modules/computer/users.c:53 msgid "Home Directory" msgstr "Diretório Home" #: modules/computer.c:643 msgid "Desktop Environment" msgstr "Ambiente de trabalho" #: modules/computer.c:646 msgid "Misc" msgstr "Misc" #: modules/computer.c:660 msgid "HardInfo2" msgstr "HardInfo2" #: modules/computer.c:661 msgid "HardInfo2 running as" msgstr "Executar o HardInfo2 como" #: modules/computer.c:662 msgid "Superuser" msgstr "Administrador" #: modules/computer.c:662 msgid "User" msgstr "Utilizador" #: modules/computer.c:666 msgid "Health" msgstr "Estado" #: modules/computer.c:668 msgid "Available entropy in /dev/random" msgstr "Entropia disponível em / dev / random" #: modules/computer.c:672 msgid "Hardening Features" msgstr "Recursos de proteção" #: modules/computer.c:673 msgid "ASLR" msgstr "ASLR" #: modules/computer.c:674 msgid "dmesg" msgstr "dmesg" #: modules/computer.c:678 msgid "Linux Security Modules" msgstr "Módulos de segurança do Linux" #: modules/computer.c:679 msgid "Modules available" msgstr "Módulos disponíveis" #: modules/computer.c:680 msgid "SELinux status" msgstr "Estado do SELinux" #: modules/computer.c:686 msgid "CPU Vulnerabilities" msgstr "Vulnerabilidades da CPU" #: modules/computer.c:727 msgid "Loaded Modules" msgstr "Módulos carregados" #: modules/computer.c:729 modules/computer.c:757 modules/computer.c:897 #: modules/computer/languages.c:95 modules/computer/modules.c:370 #: modules/devices/arm/processor.c:478 modules/devices/dmi.c:38 #: modules/devices/dmi.c:49 modules/devices/e2k/processor.c:358 #: modules/devices/gpu.c:301 modules/devices/ia64/processor.c:160 #: modules/devices/inputdevices.c:141 modules/devices/monitors.c:403 #: modules/devices/monitors.c:505 modules/devices/sh/processor.c:84 #: modules/devices/x86/processor.c:750 modules/network.c:333 msgid "Name" msgstr "Nome" #: modules/computer.c:743 msgid "Date & Time" msgstr "Data e hora" #: modules/computer.c:744 msgid "Kernel Version" msgstr "Versão do kernel" #: modules/computer.c:754 msgid "Available Languages" msgstr "Idiomas disponíveis" #: modules/computer.c:756 msgid "Language Code" msgstr "Código de Idioma" #: modules/computer.c:768 msgid "Mounted File Systems" msgstr "Sistemas de ficheiros montado" #: modules/computer.c:770 modules/computer/filesystem.c:89 msgid "Mount Point" msgstr "Ponto de montagem" #: modules/computer.c:771 msgid "Usage" msgstr "Utilização" #: modules/computer.c:772 modules/devices.c:865 modules/devices.c:879 #: modules/devices/e2k/processor.c:416 modules/devices/gpu.c:85 #: modules/devices/gpu.c:93 modules/devices/gpu.c:293 modules/devices/pci.c:102 #: modules/devices/pci.c:110 modules/devices/pci.c:154 #: modules/devices/storage.c:48 modules/devices/storage.c:57 #: modules/devices/usb.c:172 modules/devices/usb.c:184 #: modules/devices/x86/processor.c:811 msgid "Device" msgstr "Dispositivo" #: modules/computer.c:795 msgid "Session" msgstr "Sessão" #: modules/computer.c:796 modules/devices.c:842 modules/devices.c:879 #: modules/devices/dmi.c:56 modules/devices/dmi_memory.c:729 #: modules/devices/inputdevices.c:142 modules/devices/spd-decode.c:1377 #: modules/devices/x86/processor.c:715 msgid "Type" msgstr "Tipo" #: modules/computer.c:799 msgid "Wayland" msgstr "Wayland" #: modules/computer.c:800 modules/computer.c:805 msgid "Current Display Name" msgstr "Nome do ecrã atual" #: modules/computer.c:804 msgid "X Server" msgstr "Servidor X" #: modules/computer.c:806 modules/computer.c:846 modules/computer.c:869 #: modules/devices.c:879 modules/devices/dmi.c:40 modules/devices/dmi.c:46 #: modules/devices/dmi.c:50 modules/devices/dmi.c:55 #: modules/devices/dmi_memory.c:730 modules/devices/dmi_memory.c:873 #: modules/devices/e2k/processor.c:359 modules/devices/firmware.c:75 #: modules/devices/firmware.c:167 modules/devices/firmware.c:172 #: modules/devices/firmware.c:219 modules/devices/gpu.c:84 #: modules/devices/gpu.c:92 modules/devices/gpu.c:292 #: modules/devices/ia64/processor.c:161 modules/devices/inputdevices.c:144 #: modules/devices/monitors.c:402 modules/devices/pci.c:101 #: modules/devices/pci.c:109 modules/devices/storage.c:47 #: modules/devices/storage.c:56 modules/devices/storage.c:282 #: modules/devices/storage.c:572 modules/devices/storage.c:777 #: modules/devices/usb.c:171 modules/devices/x86/processor.c:654 msgid "Vendor" msgstr "Fabricante" #: modules/computer.c:808 msgid "Release Number" msgstr "Número da versão" #: modules/computer.c:816 msgid "Screens" msgstr "Ecrãs" #: modules/computer.c:822 msgid "Disconnected" msgstr "Desligado" #: modules/computer.c:825 msgid "Connected" msgstr "Ligado" #: modules/computer.c:833 msgid "Unused" msgstr "Não utilizado" #: modules/computer.c:834 #, c-format msgid "%dx%d pixels, offset (%d, %d)" msgstr "%dx%d pixéis, deslocamento (%d, %d)" #: modules/computer.c:843 msgid "Outputs (XRandR)" msgstr "Saídas (XRandR)" #: modules/computer.c:845 msgid "OpenGL (GLX)" msgstr "OpenGL (GLX)" #: modules/computer.c:847 msgid "Renderer" msgstr "Renderizador" #: modules/computer.c:848 msgid "Direct Rendering" msgstr "Renderização direta" #: modules/computer.c:849 modules/computer/modules.c:352 #: modules/computer/modules.c:353 modules/devices/inputdevices.c:153 #: modules/devices/printers.c:145 modules/devices/spd-decode.c:888 #: modules/devices/spd-decode.c:1100 msgid "Yes" msgstr "Sim" #: modules/computer.c:849 modules/computer/modules.c:352 #: modules/computer/modules.c:353 modules/devices/printers.c:145 #: modules/devices/spd-decode.c:886 modules/devices/spd-decode.c:1097 msgid "No" msgstr "Não" #: modules/computer.c:850 msgid "Version (Compatibility)" msgstr "Versão (compatibilidade)" #: modules/computer.c:851 msgid "Shading Language Version (Compatibility)" msgstr "Versão da linguagem de sombreamento (compatibilidade)" #: modules/computer.c:852 msgid "Version (Core)" msgstr "Versão (núcleo)" #: modules/computer.c:853 msgid "Shading Language Version (Core)" msgstr "Versão de linguagem de sombreamento (núcleo)" #: modules/computer.c:854 msgid "Version (ES)" msgstr "Versão (ES)" #: modules/computer.c:855 msgid "Shading Language Version (ES)" msgstr "Versão da linguagem de sombreamento (ES)" #: modules/computer.c:856 msgid "GLX Version" msgstr "Versão GLX" #: modules/computer.c:864 msgid "Vulkan" msgstr "" #: modules/computer.c:865 msgid "Instance Version" msgstr "" #: modules/computer.c:867 msgid "Api Version" msgstr "" #: modules/computer.c:868 msgid "Driver Version" msgstr "" #: modules/computer.c:870 msgid "Device Type" msgstr "" #: modules/computer.c:871 msgid "Device Name" msgstr "" #: modules/computer.c:872 msgid "Driver Name" msgstr "" #: modules/computer.c:873 msgid "Driver Info" msgstr "" #: modules/computer.c:874 msgid "Conformance Version" msgstr "" #: modules/computer.c:895 msgid "Group" msgstr "Grupo" #: modules/computer.c:898 modules/computer/users.c:52 msgid "Group ID" msgstr "ID do Grupo" #: modules/computer.c:1037 #, c-format msgid "%0.1f %s available to Linux" msgstr "%0.1f%s disponível para Linux" #: modules/computer.c:1039 modules/devices/dmi_memory.c:637 #: modules/devices/dmi_memory.c:647 modules/devices/dmi_memory.c:789 #: modules/devices/dmi_memory.c:918 modules/devices/spd-decode.c:1352 msgid "GiB" msgstr "GiB" #: modules/computer.c:1043 modules/computer/memory_usage.c:73 #: modules/computer/modules.c:370 msgid "KiB" msgstr "KiB" #: modules/computer.c:1116 modules/devices/devicetree/pmac_data.c:82 msgid "Motherboard" msgstr "Placa-mãe" #: modules/computer.c:1144 msgid "Graphics" msgstr "Gráficos" #: modules/computer.c:1145 modules/devices.c:105 msgid "Printers" msgstr "Impressoras" #: modules/computer.c:1145 msgid "Audio" msgstr "Áudio" #: modules/computer.c:1194 msgid "Gathers high-level computer information" msgstr "Reúne informação do computador de alto nível" #: modules/computer.c:1205 msgid "lsmod is required." msgstr "" #: modules/computer.c:1213 msgid "" "X.org's xrandr utility provides additional details when " "available." msgstr "" #: modules/computer.c:1214 msgid "" "Mesa's glxinfo utility is required for OpenGL information." msgstr "" #: modules/computer.c:1215 msgid "" "Vulkan's vulkaninfo utility is required for Vulkan information." msgstr "" #: modules/computer/filesystem.c:87 msgid "Filesystem" msgstr "Sistema de ficheiros" #: modules/computer/filesystem.c:88 msgid "Mounted As" msgstr "Montado como" #: modules/computer/filesystem.c:88 msgid "Read-Write" msgstr "Leitura-escrita" #: modules/computer/filesystem.c:88 msgid "Read-Only" msgstr "Apenas-leitura" #: modules/computer/filesystem.c:90 modules/devices.c:865 #: modules/devices/dmi_memory.c:733 modules/devices/dmi_memory.c:766 #: modules/devices/dmi_memory.c:805 modules/devices/dmi_memory.c:872 #: modules/devices/spd-decode.c:1384 msgid "Size" msgstr "Tamanho" #: modules/computer/filesystem.c:91 msgid "Used" msgstr "Utilizado" #: modules/computer/filesystem.c:92 msgid "Available" msgstr "Disponível" #: modules/computer/languages.c:94 msgid "Locale Information" msgstr "Informação local" #: modules/computer/languages.c:96 modules/devices/gpu.c:266 #: modules/devices/spd-decode.c:1373 msgid "Source" msgstr "Fonte" #: modules/computer/languages.c:97 msgid "Address" msgstr "Endereço" #: modules/computer/languages.c:98 msgid "E-mail" msgstr "E-mail" #: modules/computer/languages.c:100 msgid "Territory" msgstr "Território" #: modules/computer/languages.c:102 modules/devices/dmi.c:45 msgid "Date" msgstr "Data" #: modules/computer/languages.c:103 msgid "Codeset" msgstr "Conjunto de códigos" #: modules/computer/loadavg.c:64 msgid "Couldn't obtain load average" msgstr "Não foi possível obter a média de carga" #: modules/computer/memory_usage.c:131 msgid "Total physical memory usable by the system" msgstr "" #: modules/computer/memory_usage.c:132 msgid "Free memory which is not used for anything" msgstr "" #: modules/computer/memory_usage.c:133 msgid "Virtual memory, total swap space available" msgstr "" #: modules/computer/memory_usage.c:134 msgid "Virtual memory, remaining swap space available" msgstr "" #: modules/computer/memory_usage.c:135 msgid "Memory present within main memory and in the swapfile" msgstr "" #: modules/computer/memory_usage.c:136 msgid "HighTotal value can vary based on the type of kernel used" msgstr "" #: modules/computer/memory_usage.c:137 msgid "Amount of memory that is not directly mapped into kernel space" msgstr "" #: modules/computer/memory_usage.c:138 msgid "LowTotal value can vary based on the type of kernel used" msgstr "" #: modules/computer/memory_usage.c:139 msgid "Total and free memory directly mapped into kernel space" msgstr "" #: modules/computer/memory_usage.c:140 msgid "Available memory for allocation to any process, without swapping" msgstr "" #: modules/computer/memory_usage.c:141 msgid "Memory in buffer cache, temporary storage for raw disk blocks" msgstr "" #: modules/computer/memory_usage.c:142 msgid "Memory in the page cache (diskcache, shared memory, tmpfs and shmem)" msgstr "" #: modules/computer/memory_usage.c:143 msgid "Memory used more recently and not swapped out or reclaimed" msgstr "" #: modules/computer/memory_usage.c:144 msgid "Memory not been used recently and can be swapped out or reclaimed" msgstr "" #: modules/computer/memory_usage.c:145 msgid "Anonymous memory used more recently and not swapped out" msgstr "" #: modules/computer/memory_usage.c:146 msgid "Anonymous memory not been used and can be swapped out" msgstr "" #: modules/computer/memory_usage.c:147 msgid "Pagecache memory been used more recently and not reclaimed" msgstr "" #: modules/computer/memory_usage.c:148 msgid "Pagecache memory reclaimable without huge performance impact" msgstr "" #: modules/computer/memory_usage.c:149 msgid "Unevictable pages can't be swapped out for a variety of reasons" msgstr "" #: modules/computer/memory_usage.c:150 msgid "Pages locked to memory using the mlock() system call" msgstr "" #: modules/computer/memory_usage.c:151 msgid "Memory consumed by the zswap backend (compressed size)" msgstr "" #: modules/computer/memory_usage.c:152 msgid "Amount of anonymous memory stored in zswap (original size)" msgstr "" #: modules/computer/memory_usage.c:153 msgid "Memory waiting to be written back to disk" msgstr "" #: modules/computer/memory_usage.c:154 msgid "Memory which is actively being written back to disk" msgstr "" #: modules/computer/memory_usage.c:155 msgid "Non-file backed pages mapped into userspace page tables" msgstr "" #: modules/computer/memory_usage.c:156 msgid "Files which have been mmapped, such as libraries" msgstr "" #: modules/computer/memory_usage.c:157 msgid "Total memory used by shared memory (shmem) and tmpfs" msgstr "" #: modules/computer/memory_usage.c:158 msgid "Kernel allocations reclaimable under memory pressure" msgstr "" #: modules/computer/memory_usage.c:159 msgid "In-kernel data structures cache" msgstr "" #: modules/computer/memory_usage.c:160 msgid "Part of Slab, that might be reclaimed, such as caches" msgstr "" #: modules/computer/memory_usage.c:161 msgid "Part of Slab, that cannot be reclaimed on memory pressure" msgstr "" #: modules/computer/memory_usage.c:162 msgid "Memory consumed by the kernel stacks of all tasks" msgstr "" #: modules/computer/memory_usage.c:163 msgid "Memory consumed by userspace page tables" msgstr "" #: modules/computer/memory_usage.c:164 msgid "Memory consumed by secondary page tables" msgstr "" #: modules/computer/memory_usage.c:165 msgid "Previous counted pages which had been written to the server" msgstr "" #: modules/computer/memory_usage.c:166 msgid "Memory used for block device bounce buffers" msgstr "" #: modules/computer/memory_usage.c:167 msgid "Memory used by FUSE for temporary writeback buffers" msgstr "" #: modules/computer/memory_usage.c:168 msgid "Total memory currently available to be allocated on the system" msgstr "" #: modules/computer/memory_usage.c:169 msgid "The amount of memory presently allocated on the system" msgstr "" #: modules/computer/memory_usage.c:170 msgid "Total size of vmalloc virtual address space" msgstr "" #: modules/computer/memory_usage.c:171 msgid "Amount of vmalloc area which is used" msgstr "" #: modules/computer/memory_usage.c:172 msgid "Largest contiguous block of vmalloc area which is free" msgstr "" #: modules/computer/memory_usage.c:173 msgid "Memory allocated to the percpu allocator" msgstr "" #: modules/computer/memory_usage.c:174 msgid "Amount of memory the kernel identifies as corrupted" msgstr "" #: modules/computer/memory_usage.c:175 msgid "Non-file backed huge pages mapped into userspace page tables" msgstr "" #: modules/computer/memory_usage.c:176 msgid "Memory used by shmem and tmpfs allocated with huge pages" msgstr "" #: modules/computer/memory_usage.c:177 msgid "Shared memory mapped into userspace with huge pages" msgstr "" #: modules/computer/memory_usage.c:178 msgid "Memory used for fs data (page cache) allocated with huge pages" msgstr "" #: modules/computer/memory_usage.c:179 msgid "Page cache mapped into userspace with huge pages" msgstr "" #: modules/computer/memory_usage.c:180 msgid "Memory reserved for the Contiguous Memory Allocator (CMA)" msgstr "" #: modules/computer/memory_usage.c:181 msgid "Free remaining memory in the CMA reserves" msgstr "" #: modules/computer/memory_usage.c:182 msgid "Amount of unaccepted memory usable by the kernel" msgstr "" #: modules/computer/memory_usage.c:183 msgid "Size of the pool of huge pages" msgstr "" #: modules/computer/memory_usage.c:184 msgid "Number of huge pages available" msgstr "" #: modules/computer/memory_usage.c:185 msgid "Number of huge pages reserved" msgstr "" #: modules/computer/memory_usage.c:186 msgid "Number of huge pages surplus" msgstr "" #: modules/computer/memory_usage.c:187 msgid "Huge page size, used in conjunction with hugepages parameter" msgstr "" #: modules/computer/memory_usage.c:188 msgid "Total amount of memory consumed by huge pages of all sizes" msgstr "" #: modules/computer/memory_usage.c:189 msgid "Breakdown of page table sizes of 4k size" msgstr "" #: modules/computer/memory_usage.c:190 msgid "Breakdown of page table sizes of 2M size" msgstr "" #: modules/computer/memory_usage.c:191 msgid "Breakdown of page table sizes of 1G size" msgstr "" #: modules/computer/modules.c:168 msgid "Update kernel module icon table" msgstr "" #: modules/computer/modules.c:338 modules/computer/modules.c:339 #: modules/computer/modules.c:340 modules/computer/modules.c:341 #: modules/computer/modules.c:342 modules/computer/modules.c:343 #: modules/devices/dmi.c:117 modules/devices/firmware.c:245 #: modules/devices/x86/processor.c:694 msgid "(Not available)" msgstr "(Indisponível)" #: modules/computer/modules.c:369 msgid "Module Information" msgstr "Informação do módulo" #: modules/computer/modules.c:369 modules/devices/gpu.c:298 msgid "Path" msgstr "Caminho" #: modules/computer/modules.c:369 msgid "Used Memory" msgstr "Memória utilizada" #: modules/computer/modules.c:371 msgid "Version Magic" msgstr "Versão Magic" #: modules/computer/modules.c:372 msgid "In Linus' Tree" msgstr "Na árvore de Linus" #: modules/computer/modules.c:373 msgid "Retpoline Enabled" msgstr "Retpoline ativado" #: modules/computer/modules.c:373 msgid "Copyright" msgstr "Direitos de autor" #: modules/computer/modules.c:373 msgid "Author" msgstr "Autor" #: modules/computer/modules.c:374 msgid "License" msgstr "Licença" #: modules/computer/modules.c:380 msgid "Dependencies" msgstr "Dependências" #: modules/computer/os.c:153 modules/computer/os.c:154 #: modules/computer/os.c:155 modules/computer/os.c:156 msgid "GNU C Library" msgstr "Biblioteca GNU C" #: modules/computer/os.c:157 msgid "uClibc or uClibc-ng" msgstr "uClibc ou uClibc-ng" #: modules/computer/os.c:158 msgid "diet libc" msgstr "diet libc" #: modules/computer/os.c:229 modules/computer/os.c:232 msgid "GNOME Shell " msgstr "GNOME Shell " #: modules/computer/os.c:240 modules/computer/os.c:243 msgid "Version: " msgstr "Versão: " #: modules/computer/os.c:261 modules/computer/os.c:264 msgid "MATE Desktop Environment " msgstr "Ambiente de trabalho MATE" #: modules/computer/os.c:297 #, c-format msgid "Unknown (Window Manager: %s)" msgstr "Desconhecido (Gestor de janelas: %s)" #. !/{desktop environment} on {session type} #: modules/computer/os.c:308 #, c-format msgid "%s on %s" msgstr "%s em %s" #: modules/computer/os.c:376 msgid "Terminal" msgstr "Terminal" #: modules/computer/os.c:392 msgid "User access allowed" msgstr "Acesso ao utilizador permitido" #: modules/computer/os.c:394 msgid "User access forbidden" msgstr "Acesso ao utilizador proibido" #: modules/computer/os.c:396 msgid "Access allowed (running as superuser)" msgstr "Acesso permitido (a executar como administrador)" #: modules/computer/os.c:398 msgid "Access forbidden? (running as superuser)" msgstr "Acesso proibido? (a executar como administrador)" #: modules/computer/os.c:407 modules/computer/os.c:793 msgid "Disabled" msgstr "Desativado" #: modules/computer/os.c:409 msgid "Partially enabled (mmap base+stack+VDSO base)" msgstr "Parcialmente ativado (base mmap+stack+base VDSO)" #: modules/computer/os.c:411 msgid "Fully enabled (mmap base+stack+VDSO base+heap)" msgstr "Totalmente ativado (base mmap+stack+base VDSO+heap)" #. !/bits of entropy for rng (0) #: modules/computer/os.c:420 msgid "(None or not available)" msgstr "(Nenhum ou não disponível)" #. !/bits of entropy for rng (low/poor value) #: modules/computer/os.c:421 #, c-format msgid "%d bits (low)" msgstr "%d bits (baixo)" #. !/bits of entropy for rng (medium value) #: modules/computer/os.c:422 #, c-format msgid "%d bits (medium)" msgstr "%d bits (médio)" #. !/bits of entropy for rng (high/good value) #: modules/computer/os.c:423 #, c-format msgid "%d bits (healthy)" msgstr "%d bits (saudável)" #: modules/computer/os.c:788 msgid "Not installed" msgstr "Não instalado" #: modules/computer/os.c:791 msgid "Enabled" msgstr "Ativado" #: modules/computer/users.c:50 msgid "User Information" msgstr "Informação do utilizador" #: modules/computer/users.c:51 msgid "User ID" msgstr "ID do utilizador" #: modules/computer/users.c:54 msgid "Default Shell" msgstr "Shell predefinido" #: modules/devices/alpha/processor.c:88 modules/devices.c:865 #: modules/devices/devicetree.c:162 modules/devices/devicetree.c:208 #: modules/devices/devicetree/pmac_data.c:80 #: modules/devices/e2k/processor.c:361 modules/devices/e2k/processor.c:416 #: modules/devices/gpu.c:116 modules/devices/ia64/processor.c:165 #: modules/devices/loongarch64/processor.c:96 #: modules/devices/m68k/processor.c:84 modules/devices/mips/processor.c:75 #: modules/devices/monitors.c:404 modules/devices/parisc/processor.c:155 #: modules/devices/ppc/processor.c:158 modules/devices/riscv/processor.c:242 #: modules/devices/s390/processor.c:132 modules/devices/x86/processor.c:811 msgid "Model" msgstr "Modelo" #: modules/devices/alpha/processor.c:89 msgid "Platform String" msgstr "String de plataforma" #: modules/devices/alpha/processor.c:90 modules/devices/arm/processor.c:344 #: modules/devices/e2k/processor.c:363 modules/devices/e2k/processor.c:416 #: modules/devices/ia64/processor.c:167 #: modules/devices/loongarch64/processor.c:98 #: modules/devices/m68k/processor.c:87 modules/devices/mips/processor.c:77 #: modules/devices/parisc/processor.c:158 modules/devices/ppc/processor.c:160 #: modules/devices/riscv/processor.c:246 modules/devices/sh/processor.c:87 #: modules/devices/x86/processor.c:658 modules/devices/x86/processor.c:811 msgid "Frequency" msgstr "Frequência" #: modules/devices/alpha/processor.c:91 modules/devices/arm/processor.c:345 #: modules/devices/e2k/processor.c:364 modules/devices/ia64/processor.c:168 #: modules/devices/m68k/processor.c:88 modules/devices/mips/processor.c:78 #: modules/devices/parisc/processor.c:159 modules/devices/ppc/processor.c:161 #: modules/devices/s390/processor.c:134 modules/devices/sh/processor.c:90 #: modules/devices/x86/processor.c:659 msgid "BogoMips" msgstr "BogoMips" #: modules/devices/alpha/processor.c:92 modules/devices/arm/processor.c:346 #: modules/devices/e2k/processor.c:365 modules/devices/ia64/processor.c:169 #: modules/devices/loongarch64/processor.c:101 #: modules/devices/m68k/processor.c:89 modules/devices/mips/processor.c:79 #: modules/devices/parisc/processor.c:160 modules/devices/ppc/processor.c:162 #: modules/devices/riscv/processor.c:247 modules/devices/s390/processor.c:135 #: modules/devices/sh/processor.c:91 modules/devices/sparc/processor.c:77 #: modules/devices/x86/processor.c:660 msgid "Byte Order" msgstr "Ordem de Bytes" #. !/flag:swp #: modules/devices/arm/arm_data.c:42 msgctxt "arm-flag" msgid "SWP instruction (atomic read-modify-write)" msgstr "Instrução SWP (atomic leitura-modificar-escrita)" #. !/flag:half #: modules/devices/arm/arm_data.c:43 msgctxt "arm-flag" msgid "Half-word loads and stores" msgstr "Carga e armazenamento de meia-palavra" #. !/flag:thumb #: modules/devices/arm/arm_data.c:44 msgctxt "arm-flag" msgid "Thumb (16-bit instruction set)" msgstr "Thumb (16-bit instruction set)" #. !/flag:26bit #: modules/devices/arm/arm_data.c:45 msgctxt "arm-flag" msgid "26-Bit Model (Processor status register folded into program counter)" msgstr "" "Modelo de 26 bits (registo de estado do processador dobrado no contador de " "programa)" #. !/flag:fastmult #: modules/devices/arm/arm_data.c:46 msgctxt "arm-flag" msgid "32x32->64-bit multiplication" msgstr "32x32-> multiplicação de 64 bits" #. !/flag:fpa #: modules/devices/arm/arm_data.c:47 msgctxt "arm-flag" msgid "Floating point accelerator" msgstr "Acelerador de ponto flutuante" #. !/flag:vfp #: modules/devices/arm/arm_data.c:48 msgctxt "arm-flag" msgid "VFP (early SIMD vector floating point instructions)" msgstr "VFP (instruções iniciais de ponto flutuante de vetor SIMD)" #. !/flag:edsp #: modules/devices/arm/arm_data.c:49 msgctxt "arm-flag" msgid "DSP extensions (the 'e' variant of the ARM9 CPUs, and all others above)" msgstr "Extensões DSP (a variante 'e' das CPUs ARM9 e todas as outras acima)" #. !/flag:java #: modules/devices/arm/arm_data.c:50 msgctxt "arm-flag" msgid "Jazelle (Java bytecode accelerator)" msgstr "Jazelle (acelerador de bytecode Java)" #. !/flag:iwmmxt #: modules/devices/arm/arm_data.c:51 msgctxt "arm-flag" msgid "SIMD instructions similar to Intel MMX" msgstr "Instruções SIMD semelhantes ao Intel MMX" #. !/flag:crunch #: modules/devices/arm/arm_data.c:52 msgctxt "arm-flag" msgid "MaverickCrunch coprocessor (if kernel support enabled)" msgstr "Coprocessador MaverickCrunch (se o suporte ao kernel estiver ativado)" #. !/flag:thumbee #: modules/devices/arm/arm_data.c:53 msgctxt "arm-flag" msgid "ThumbEE" msgstr "ThumbEE" #. !/flag:neon #: modules/devices/arm/arm_data.c:54 msgctxt "arm-flag" msgid "Advanced SIMD/NEON on AArch32" msgstr "Avançado SIMD / NEON em AArch32" #. !/flag:evtstrm #: modules/devices/arm/arm_data.c:55 msgctxt "arm-flag" msgid "Kernel event stream using generic architected timer" msgstr "Fluxo de eventos do kernel usando o temporizador arquitetado genérico" #. !/flag:vfpv3 #: modules/devices/arm/arm_data.c:56 msgctxt "arm-flag" msgid "VFP version 3" msgstr "Versão 3 do VFP" #. !/flag:vfpv3d16 #: modules/devices/arm/arm_data.c:57 msgctxt "arm-flag" msgid "VFP version 3 with 16 D-registers" msgstr "VFP versão 3 com 16 registos D" #. !/flag:vfpv4 #: modules/devices/arm/arm_data.c:58 msgctxt "arm-flag" msgid "VFP version 4 with fast context switching" msgstr "VFP versão 4 com comutação rápida de contexto" #. !/flag:vfpd32 #: modules/devices/arm/arm_data.c:59 msgctxt "arm-flag" msgid "VFP with 32 D-registers" msgstr "VFP com 32 registos D" #. !/flag:tls #: modules/devices/arm/arm_data.c:60 msgctxt "arm-flag" msgid "TLS register" msgstr "Registo TLS" #. !/flag:idiva #: modules/devices/arm/arm_data.c:61 msgctxt "arm-flag" msgid "SDIV and UDIV hardware division in ARM mode" msgstr "Divisão de hardware SDIV e UDIV no modo ARM" #. !/flag:idivt #: modules/devices/arm/arm_data.c:62 msgctxt "arm-flag" msgid "SDIV and UDIV hardware division in Thumb mode" msgstr "Divisão de hardware SDIV e UDIV no modo Thumb" #. !/flag:lpae #: modules/devices/arm/arm_data.c:63 msgctxt "arm-flag" msgid "40-bit Large Physical Address Extension" msgstr "Extensão de endereço físico grande de 40 bits" #. !/flag:pmull #: modules/devices/arm/arm_data.c:65 msgctxt "arm-flag" msgid "64x64->128-bit F2m multiplication (arch>=8)" msgstr "64x64-> multiplicação F2m de 128 bits (arco> 8)" #. !/flag:aes #: modules/devices/arm/arm_data.c:66 msgctxt "arm-flag" msgid "Crypto:AES (arch>=8)" msgstr "Criptografia: AES (arco> 8)" #. !/flag:sha1 #: modules/devices/arm/arm_data.c:67 msgctxt "arm-flag" msgid "Crypto:SHA1 (arch>=8)" msgstr "Criptografia: SHA1 (arco> 8)" #. !/flag:sha2 #: modules/devices/arm/arm_data.c:68 msgctxt "arm-flag" msgid "Crypto:SHA2 (arch>=8)" msgstr "Criptografia: SHA2 (arco> 8)" #. !/flag:crc32 #: modules/devices/arm/arm_data.c:69 msgctxt "arm-flag" msgid "CRC32 checksum instructions (arch>=8)" msgstr "Instruções de soma de verificação CRC32 (arco> 8)" #. !/flag:fp #: modules/devices/arm/arm_data.c:71 msgctxt "arm-flag" msgid "Floating-point on AArch64 (arch>=8)" msgstr "" #. !/flag:asimd #: modules/devices/arm/arm_data.c:72 msgctxt "arm-flag" msgid "Advanced SIMD/NEON on AArch64 (arch>=8)" msgstr "Avançado SIMD / NEON em AArch64 (arco> 8)" #. !/flag:atomics #: modules/devices/arm/arm_data.c:73 msgctxt "arm-flag" msgid "Atomic instructions on AArch64 (arch>=8)" msgstr "" #. !/flag:fphp #: modules/devices/arm/arm_data.c:74 msgctxt "arm-flag" msgid "Half precision floating point on AArch64 (arch>=8)" msgstr "" #. !/flag:asimdhp #: modules/devices/arm/arm_data.c:75 msgctxt "arm-flag" msgid "Advanced SIMD with BFloat16 on AArch64 (arch>=8)" msgstr "" #. !/flag:cpuid #: modules/devices/arm/arm_data.c:76 msgctxt "arm-flag" msgid "CPU features can be read on AArch64 (arch>=8)" msgstr "" #. !/flag:asimdrdm #: modules/devices/arm/arm_data.c:77 msgctxt "arm-flag" msgid "Advanced SIMD rounding Double MulAcc on AArch64 (arch>=8)" msgstr "" #. !/flag:jscvt #: modules/devices/arm/arm_data.c:78 msgctxt "arm-flag" msgid "JacaScript conversion on AArch64 (arch>=8)" msgstr "" #. !/flag:fcma #: modules/devices/arm/arm_data.c:79 msgctxt "arm-flag" msgid "Complex number SIMD on AArch64 (arch>=8)" msgstr "" #. !/flag:lrcpc #: modules/devices/arm/arm_data.c:80 msgctxt "arm-flag" msgid "Weak release consistency on AArch64 (arch>=8)" msgstr "" #. !/flag:dcpop #: modules/devices/arm/arm_data.c:81 msgctxt "arm-flag" msgid "Data cache clean to Point of Persistence on AArch64 (arch>=8)" msgstr "" #. !/flag:sha3 #: modules/devices/arm/arm_data.c:82 msgctxt "arm-flag" msgid "SHA-3 instructions on AArch64 (arch>=8)" msgstr "" #. !/flag:sm3 #: modules/devices/arm/arm_data.c:83 msgctxt "arm-flag" msgid "SM3 instructions on AArch64 (arch>=8)" msgstr "" #. !/flag:sm4 #: modules/devices/arm/arm_data.c:84 msgctxt "arm-flag" msgid "SM4 instructions on AArch64 (arch>=8)" msgstr "" #. !/flag:asimddp #: modules/devices/arm/arm_data.c:85 msgctxt "arm-flag" msgid "SIMD Dot Product on AArch64 (arch>=8)" msgstr "" #. !/flag:sha512 #: modules/devices/arm/arm_data.c:86 msgctxt "arm-flag" msgid "SHA512 instructions on AArch64 (arch>=8)" msgstr "" #. !/flag:sve #: modules/devices/arm/arm_data.c:87 msgctxt "arm-flag" msgid "Scalable Vector Extension on AArch64 (arch>=8)" msgstr "" #: modules/devices/arm/processor.c:143 msgid "ARM Processor" msgstr "Processador ARM" #: modules/devices/arm/processor.c:214 modules/devices/riscv/processor.c:211 #: modules/devices/x86/processor.c:609 msgid "Empty List" msgstr "Lista vazia" #: modules/devices/arm/processor.c:239 modules/devices/gpu.c:204 #: modules/devices/gpu.c:294 modules/devices/x86/processor.c:267 msgid "Clocks" msgstr "Clocks Relógios" #: modules/devices/arm/processor.c:285 modules/devices/arm/processor.c:298 #: modules/devices/x86/processor.c:313 modules/devices/x86/processor.c:326 #, c-format msgid "%.2f-%.2f %s=%dx\n" msgstr "%.2f-%.2f %s=%dx\n" #: modules/devices/arm/processor.c:341 msgid "Linux Name" msgstr "Nome Linux" #: modules/devices/arm/processor.c:342 msgid "Decoded Name" msgstr "Nome decodificado" #: modules/devices/arm/processor.c:343 modules/network/net.c:476 msgid "Mode" msgstr "Modo" #: modules/devices/arm/processor.c:349 msgid "ARM" msgstr "ARM" #: modules/devices/arm/processor.c:350 msgid "Implementer" msgstr "Implementador" #: modules/devices/arm/processor.c:351 modules/devices/dmi_memory.c:874 msgid "Part" msgstr "Parte" #: modules/devices/arm/processor.c:352 modules/devices/ia64/processor.c:162 #: modules/devices/parisc/processor.c:156 modules/devices/riscv/processor.c:243 msgid "Architecture" msgstr "Arquitetura" #: modules/devices/arm/processor.c:353 msgid "Variant" msgstr "Variante" #: modules/devices/arm/processor.c:355 modules/devices/riscv/processor.c:250 #: modules/devices/sparc/processor.c:78 modules/devices/x86/processor.c:666 msgid "Capabilities" msgstr "Capacidades" #: modules/devices/arm/processor.c:477 msgid "SOC/Package" msgstr "SOC/Pacote" #: modules/devices/arm/processor.c:481 modules/devices/x86/processor.c:752 msgid "Logical CPU Config" msgstr "Configuração lógica da CPU" #: modules/devices/arm/processor.c:498 msgid "SOC/Package Information" msgstr "SOC/Informações do pacote" #: modules/devices/battery.c:178 #, c-format msgid "" "\n" "[Battery: %s]\n" "State=%s (load: %s)\n" "Capacity=%s / %s (%.2f%%)\n" "Battery Technology=%s (%s)\n" "Manufacturer=%s\n" "Model Number=%s\n" "Serial Number=%s\n" msgstr "" "\n" "[Bateria: %s]\n" "Estado=%s (load: %s)\n" "Capacidade=%s / %s (%.2f%%)\n" "Tecnologia de Baterias=%s (%s)\n" "Fabricante=%s\n" "Número do modelo=%s\n" "Número de série=%s\n" #: modules/devices/battery.c:257 #, c-format msgid "" "\n" "[AC Power Supply: %s]\n" "Online=%s\n" "AC Power Type=%s\n" msgstr "" #: modules/devices/battery.c:279 #, c-format msgid "" "\n" "[Battery: %s]\n" "State=%s\n" "Capacity=%s / %s\n" "Battery Technology=%s\n" "Manufacturer=%s\n" "Model Number=%s\n" "Serial Number=%s\n" msgstr "" "\n" "[Bateria: %s]\n" "Estado=%s\n" "Capacidade=%s / %s\n" "Tecnologia de bateria=%s\n" "Fabricante=%s\n" "Número do Modelo=%s\n" "Número de série=%s\n" #: modules/devices/battery.c:372 #, c-format msgid "" "\n" "[Battery (APM)]\n" "Charge=%d%%\n" "Remaining Charge=%s of %s\n" "Using=%s\n" "APM driver version=%s\n" "APM BIOS version=%s\n" msgstr "" "\n" "[Bateria (APM)]\n" "Carregar=%d%%\n" "Carga carregamento restante=%s of %s\n" "Usando=%s\n" "APM driver versão=%s\n" "APM BIOS versão=%s\n" #: modules/devices/battery.c:384 #, c-format msgid "" "\n" "[Battery (APM)]\n" "Charge=%d%%\n" "Using=%s\n" "APM driver version=%s\n" "APM BIOS version=%s\n" msgstr "" "\n" "[Bateria (APM)]\n" "Carga Carregar=%d%%\n" "Usando=%s\n" "APM driver versão=%s\n" "APM BIOS versão=%s\n" #: modules/devices/battery.c:413 msgid "" "[No batteries]\n" "No batteries found on this system=\n" msgstr "" "[Sem baterias]\n" "Nenhuma bateria encontrada neste sistema=\n" #: modules/devices.c:100 msgid "Graphics Processors" msgstr "Processadores Gráficos" #: modules/devices.c:101 modules/devices/monitors.c:449 #: modules/devices/monitors.c:495 msgid "Monitors" msgstr "Monitores" #: modules/devices.c:102 modules/devices/pci.c:175 msgid "PCI Devices" msgstr "Dispositivos PCI" #: modules/devices.c:103 modules/devices/usb.c:211 msgid "USB Devices" msgstr "Dispositivos USB" #: modules/devices.c:104 msgid "Firmware" msgstr "Firmware" #: modules/devices.c:106 msgid "Battery" msgstr "Bateria" #: modules/devices.c:107 msgid "Sensors" msgstr "Sensores" #: modules/devices.c:110 msgid "System DMI" msgstr "Sistema DMI" #: modules/devices.c:111 msgid "Memory Devices" msgstr "Dispositivos de memória" #: modules/devices.c:113 modules/devices.c:115 msgid "Device Tree" msgstr "Árvore de Dispositivos" #: modules/devices.c:117 msgid "Resources" msgstr "Recursos" #: modules/devices.c:594 msgid "WSL2" msgstr "" #: modules/devices.c:841 msgid "Sensor" msgstr "Sensor" #: modules/devices.c:899 modules/devices/dmi_memory.c:806 msgid "Devices" msgstr "Dispositivos" #: modules/devices.c:911 msgid "Update PCI ID listing" msgstr "Atualizar lista de IDs de PCI" #: modules/devices.c:916 msgid "Update USB ID listing" msgstr "" #: modules/devices.c:921 msgid "Update EDID vendor codes" msgstr "" #: modules/devices.c:926 msgid "Update IEEE OUI vendor codes" msgstr "" #: modules/devices.c:931 msgid "Update SD card manufacturer information" msgstr "" #: modules/devices.c:938 msgid "Update CPU flags database" msgstr "" #: modules/devices.c:973 msgid "Gathers information about hardware devices" msgstr "Reúne informações sobre dispositivos de hardware" #: modules/devices.c:994 msgid "A copy of pci.ids is not available on the system." msgstr "" #: modules/devices.c:997 msgid "A full pci.ids is not available on the system." msgstr "" #: modules/devices.c:1002 msgid "Resource information requires superuser privileges" msgstr "Reúne informações sobre dispositivos de hardware" #: modules/devices.c:1008 msgid "" "Any NVMe storage devices present are not listed.\n" "udisks2 is required for NVMe devices." msgstr "" #: modules/devices/devicetree.c:51 msgid "Properties" msgstr "Propriedades" #: modules/devices/devicetree.c:52 msgid "Children" msgstr "Crianças" #: modules/devices/devicetree.c:88 msgid "Node" msgstr "Node nó" #: modules/devices/devicetree.c:89 msgid "Node Path" msgstr "Caminho do Nó Node Path" #: modules/devices/devicetree.c:90 msgid "Alias" msgstr "Alias" #: modules/devices/devicetree.c:91 msgid "Symbol" msgstr "Símbolo" #: modules/devices/devicetree.c:144 modules/devices/devicetree/pmac_data.c:79 msgid "Platform" msgstr "Plataforma" #: modules/devices/devicetree.c:145 modules/devices/devicetree.c:210 #: modules/devices/gpu.c:299 msgid "Compatible" msgstr "Compatível" #: modules/devices/devicetree.c:146 msgid "GPU-compatible" msgstr "Compatível com GPU" #: modules/devices/devicetree.c:161 msgid "Raspberry Pi or Compatible" msgstr "Raspberry Pi ou compatível" #: modules/devices/devicetree.c:163 modules/devices/devicetree.c:190 #: modules/devices/devicetree.c:209 modules/devices/devicetree/rpi_data.c:169 #: modules/devices/dmi.c:42 modules/devices/dmi.c:52 modules/devices/dmi.c:58 #: modules/devices/spd-decode.c:1383 modules/devices/usb.c:181 msgid "Serial Number" msgstr "Número de série" #: modules/devices/devicetree.c:164 modules/devices/devicetree/rpi_data.c:166 msgid "RCode" msgstr "RCode" #: modules/devices/devicetree.c:164 msgid "No revision code available; unable to lookup model details." msgstr "" "Nenhum código de revisão disponível; incapaz de pesquisar detalhes do modelo." #: modules/devices/devicetree.c:189 msgid "More" msgstr "Mais" #: modules/devices/devicetree.c:270 msgid "Messages" msgstr "Mensagens" #: modules/devices/devicetree/pmac_data.c:78 msgid "Apple Power Macintosh" msgstr "Apple Power Macintosh" #: modules/devices/devicetree/pmac_data.c:83 msgid "Detected as" msgstr "Detectado como" #: modules/devices/devicetree/pmac_data.c:84 msgid "PMAC Flags" msgstr "Bandeiras do PMAC" #: modules/devices/devicetree/pmac_data.c:85 msgid "L2 Cache" msgstr "L2 Cache" #: modules/devices/devicetree/pmac_data.c:86 msgid "PMAC Generation" msgstr "Geração PMAC" #: modules/devices/devicetree/rpi_data.c:161 #: modules/devices/devicetree/rpi_data.c:162 msgid "Raspberry Pi" msgstr "Raspberry Pi" #: modules/devices/devicetree/rpi_data.c:162 msgid "Board Name" msgstr "Nome da placa" #: modules/devices/devicetree/rpi_data.c:163 msgid "PCB Revision" msgstr "Revisão PCB" #: modules/devices/devicetree/rpi_data.c:164 msgid "Introduction" msgstr "Introdução" #: modules/devices/devicetree/rpi_data.c:165 modules/devices/usb.c:173 msgid "Manufacturer" msgstr "Fabricante" #: modules/devices/devicetree/rpi_data.c:167 msgid "SOC (spec)" msgstr "SOC (spec)" #: modules/devices/devicetree/rpi_data.c:168 msgid "Memory (spec)" msgstr "Memoria (spec)" #: modules/devices/devicetree/rpi_data.c:170 msgid "Permanent overvolt bit" msgstr "Bit permanente de sobretensão" #: modules/devices/devicetree/rpi_data.c:170 msgctxt "rpi-ov-bit" msgid "Set" msgstr "Conjunto" #: modules/devices/devicetree/rpi_data.c:170 msgctxt "rpi-ov-bit" msgid "Not set" msgstr "Não configurado" #: modules/devices/dmi.c:37 modules/devices/inputdevices.c:145 #: modules/devices/usb.c:170 msgid "Product" msgstr "Produto" #: modules/devices/dmi.c:39 modules/devices/e2k/processor.c:360 #: modules/devices/ia64/processor.c:164 #: modules/devices/loongarch64/processor.c:95 modules/devices/sh/processor.c:86 msgid "Family" msgstr "Família" #: modules/devices/dmi.c:43 msgid "SKU" msgstr "SKU" #: modules/devices/dmi.c:44 msgid "BIOS" msgstr "BIOS" #: modules/devices/dmi.c:53 modules/devices/dmi.c:59 msgid "Asset Tag" msgstr "Asset Tag Tag de patrimônio" #: modules/devices/dmi.c:161 msgid "DMI Unavailable" msgstr "DMI indisponível" #: modules/devices/dmi.c:162 msgid "DMI is not available. Perhaps this platform does not provide DMI." msgstr "O DMI não está disponível. Talvez esta plataforma não fornece DMI." #: modules/devices/dmi_memory.c:620 modules/devices/dmi_memory.c:859 msgid "Memory Device List" msgstr "Lista dos dispositivos de memória" #: modules/devices/dmi_memory.c:668 msgid "Memory Array" msgstr "Matriz de memória" #: modules/devices/dmi_memory.c:669 modules/devices/x86/processor.c:714 msgid "DMI Handle" msgstr "Identificador DMI" #: modules/devices/dmi_memory.c:670 modules/devices/dmi_memory.c:726 #: modules/devices/dmi_memory.c:764 modules/devices/dmi_memory.c:871 msgid "Locator" msgstr "Localizador" #: modules/devices/dmi_memory.c:671 msgid "Use" msgstr "Usar" #: modules/devices/dmi_memory.c:672 msgid "Error Correction Type" msgstr "Tipo de correção de erro" #: modules/devices/dmi_memory.c:673 msgid "Size (Present / Max)" msgstr "Tamanho (atual / máx)" #: modules/devices/dmi_memory.c:674 msgid "Devices (Populated / Sockets)" msgstr "Dispositivos (Populated / Sockets)" #: modules/devices/dmi_memory.c:675 modules/devices/dmi_memory.c:807 msgid "Types Present" msgstr "Tipos apresentados" #: modules/devices/dmi_memory.c:676 msgid "ROM Size" msgstr "" #: modules/devices/dmi_memory.c:724 modules/devices/dmi_memory.c:762 msgid "Memory Socket" msgstr "Socket de memória" #: modules/devices/dmi_memory.c:725 modules/devices/dmi_memory.c:763 msgid "DMI Handles (Array, Socket)" msgstr "Identificadores DMI (matriz, socket)" #: modules/devices/dmi_memory.c:727 modules/devices/dmi_memory.c:765 msgid "Bank Locator" msgstr "Localizador de banco" #: modules/devices/dmi_memory.c:728 modules/devices/spd-decode.c:1376 msgid "Form Factor" msgstr "Fator de forma" #: modules/devices/dmi_memory.c:732 modules/devices/spd-decode.c:1382 msgid "Part Number" msgstr "Número da Parte" #: modules/devices/dmi_memory.c:734 msgid "Rated Speed" msgstr "Velocidade nominal" #: modules/devices/dmi_memory.c:735 msgid "Configured Speed" msgstr "Velocidade configurada" #: modules/devices/dmi_memory.c:736 msgid "Data Width/Total Width" msgstr "Largura dos dados/Largura total" #: modules/devices/dmi_memory.c:737 msgid "Rank" msgstr "Ranque" #: modules/devices/dmi_memory.c:738 msgid "Minimum Voltage" msgstr "Voltagem mínima" #: modules/devices/dmi_memory.c:739 msgid "Maximum Voltage" msgstr "Voltagem máxima" #: modules/devices/dmi_memory.c:740 msgid "Configured Voltage" msgstr "Voltagem configurada" #: modules/devices/dmi_memory.c:766 modules/devices/dmi_memory.c:773 #: modules/devices/monitors.c:495 msgid "(Empty)" msgstr "(Vazio)" #: modules/devices/dmi_memory.c:804 msgid "Serial Presence Detect (SPD) Summary" msgstr "Resumo do Serial Presence Detect (SPD)" #: modules/devices/dmi_memory.c:860 msgid "(Not available - See hint box below)" msgstr "" #: modules/devices/dmi_memory.c:932 msgid "No DMI available" msgstr "" #: modules/devices/dmi_memory.c:937 msgid "dmidecode package installed" msgstr "" #: modules/devices/dmi_memory.c:948 msgid "Memory Information requires more Setup:" msgstr "" #: modules/devices/dmi_memory.c:976 msgid "" "\"More often than not, information contained in the DMI tables is " "inaccurate,\n" "incomplete or simply wrong.\" -dmidecode manual page" msgstr "" "\"Na maioria das vezes, as informações contidas nas tabelas DMI são " "imprecisas,\n" "incompletas ou simplesmente incorretas. Página do manual \" -" "dmidecode" #: modules/devices/e2k/processor.c:30 modules/devices/x86/processor.c:149 msgid "Cache information not available=\n" msgstr "Informações de cache não disponíveis=\n" #: modules/devices/e2k/processor.c:36 modules/devices/x86/processor.c:155 #, c-format msgid "Level %d (%s)=%d-way set-associative, %d sets, %dKB size\n" msgstr "" "Nível %d (%s)=%d-maneira conjunto-associativa, %d conjuntos, %dKB tamanho\n" #: modules/devices/e2k/processor.c:51 msgctxt "cache-type" msgid "Data" msgstr "Data" #: modules/devices/e2k/processor.c:52 msgctxt "cache-type" msgid "Instruction" msgstr "Instrução" #: modules/devices/e2k/processor.c:53 msgctxt "cache-type" msgid "Unified" msgstr "Unificado" #: modules/devices/e2k/processor.c:157 modules/devices/x86/processor.c:366 msgid "Caches" msgstr "Caches" #: modules/devices/e2k/processor.c:208 modules/devices/e2k/processor.c:225 #: modules/devices/x86/processor.c:417 modules/devices/x86/processor.c:434 #, c-format msgid "Level %d (%s)#%d=%dx %dKB (%dKB), %d-way set-associative, %d sets\n" msgstr "" "Level %d (%s)#%d=%dx %dKB (%dKB), %d-maneira conjunta-associativa, %d " "Conjuntos\n" #: modules/devices/firmware.c:36 msgid "Device cannot be removed easily" msgstr "O dispositivo não pode ser removido facilmente" #: modules/devices/firmware.c:37 msgid "Device is updatable in this or any other mode" msgstr "O dispositivo será atualizado neste ou em qualquer outro modo" #: modules/devices/firmware.c:38 msgid "Update can only be done from offline mode" msgstr "Atualização apenas pode ser feita a partir do modo offline" #: modules/devices/firmware.c:39 msgid "Requires AC power" msgstr "Precisa de energia AC" #: modules/devices/firmware.c:40 msgid "Is locked and can be unlocked" msgstr "Está bloqueado e pode ser desbloqueado" #: modules/devices/firmware.c:41 msgid "Is found in current metadata" msgstr "Encontrado no atual banco de metadados" #: modules/devices/firmware.c:42 msgid "Requires a bootloader mode to be manually enabled by the user" msgstr "" "Precisa de um modo bootloader para ser manualmente ativado pelo utilizador" #: modules/devices/firmware.c:43 msgid "Has been registered with other plugins" msgstr "Foi registrado com outros plugins" #: modules/devices/firmware.c:44 msgid "Requires a reboot to apply firmware or to reload hardware" msgstr "Requer um reinício para aplicar o firmware ou recarregar o hardware" #: modules/devices/firmware.c:45 msgid "Requires system shutdown to apply firmware" msgstr "Requer o encerrar do sistema para aplicar o firmware" #: modules/devices/firmware.c:46 msgid "Has been reported to a metadata server" msgstr "Foi relatado a um servidor de metadados" #: modules/devices/firmware.c:47 msgid "User has been notified" msgstr "O utilizador foi notificado" #: modules/devices/firmware.c:48 msgid "Always use the runtime version rather than the bootloader" msgstr "" "Use sempre a versão de tempo de execução em vez do carregador de arranque" #: modules/devices/firmware.c:49 msgid "Install composite firmware on the parent before the child" msgstr "Instalar firmware composto no antecessor antes do sucessor" #: modules/devices/firmware.c:50 msgid "Is currently in bootloader mode" msgstr "Está usando o modo bootloader" #: modules/devices/firmware.c:51 msgid "The hardware is waiting to be replugged" msgstr "O hardware está aguardando para ser replugado" #: modules/devices/firmware.c:52 msgid "Ignore validation safety checks when flashing this device" msgstr "" "Ignorar as verificações de segurança de validação ao apagar este dispositivo" #: modules/devices/firmware.c:53 msgid "Requires the update to be retried with a new plugin" msgstr "Requer atualização para ser testado com um novo plugin" #: modules/devices/firmware.c:54 msgid "Do not add instance IDs from the device baseclass" msgstr "Não adicione IDs de instância da classe base do dispositivo" #: modules/devices/firmware.c:55 msgid "Device update needs to be separately activated" msgstr "A atualização de dispositivos precisa ser ativada separadamente" #: modules/devices/firmware.c:56 msgid "" "Ensure the version is a valid semantic version, e.g. numbers separated with " "dots" msgstr "" "Certifique-se de que a versão é uma versão semântica válida, por exemplo, " "números separados por pontos" #: modules/devices/firmware.c:57 msgid "Extra metadata can be exposed about this device" msgstr "Metadados extras podem ser expostos sobre este dispositivo" #: modules/devices/firmware.c:74 msgid "DeviceId" msgstr "DeviceId" #: modules/devices/firmware.c:74 modules/devices/firmware.c:187 msgid "Guid" msgstr "Guid" #: modules/devices/firmware.c:74 msgid "Plugin" msgstr "Plugin" #: modules/devices/firmware.c:74 modules/devices/firmware.c:205 #: modules/network.c:381 msgid "Flags" msgstr "Sinalizadores" #: modules/devices/firmware.c:75 msgid "VendorId" msgstr "ID do vendedor" #: modules/devices/firmware.c:75 msgid "VersionBootloader" msgstr "Versão do bootloader" #: modules/devices/firmware.c:76 modules/devices/firmware.c:179 msgid "Icon" msgstr "Ícone" #: modules/devices/firmware.c:76 msgid "InstallDuration" msgstr "Duração da instalação" #: modules/devices/firmware.c:76 modules/devices/firmware.c:197 msgid "Created" msgstr "Criado" #: modules/devices/firmware.c:244 msgid "Firmware List" msgstr "Lista de firmware" #: modules/devices/firmware.c:257 msgid "Requires the fwupd daemon." msgstr "" #: modules/devices/gpu.c:94 modules/devices/pci.c:111 #: modules/devices/storage.c:58 msgid "SVendor" msgstr "SVendor" #: modules/devices/gpu.c:95 modules/devices/pci.c:112 #: modules/devices/storage.c:59 msgid "SDevice" msgstr "SDevice" #: modules/devices/gpu.c:103 modules/devices/pci.c:122 #: modules/devices/storage.c:68 msgid "PCI Express" msgstr "PCI Express" #: modules/devices/gpu.c:104 modules/devices/pci.c:124 #: modules/devices/storage.c:70 msgid "Maximum Link Width" msgstr "Largura máxima da ligação" #: modules/devices/gpu.c:105 modules/devices/pci.c:126 #: modules/devices/storage.c:71 msgid "Maximum Link Speed" msgstr "Velocidade máxima da ligação" #: modules/devices/gpu.c:105 modules/devices/pci.c:125 #: modules/devices/pci.c:126 modules/devices/storage.c:71 msgid "GT/s" msgstr "GT/s" #: modules/devices/gpu.c:115 msgid "NVIDIA" msgstr "NVIDIA" #: modules/devices/gpu.c:117 msgid "BIOS Version" msgstr "Versão do BIOS" #: modules/devices/gpu.c:118 msgid "UUID" msgstr "UUID" #: modules/devices/gpu.c:197 modules/devices/gpu.c:289 #: modules/devices/inputdevices.c:140 modules/devices/pci.c:143 #: modules/devices/usb.c:169 msgid "Device Information" msgstr "Informação de dispositivo" #: modules/devices/gpu.c:199 modules/devices/gpu.c:291 #: modules/devices/storage.c:69 msgid "Location" msgstr "Localização" #: modules/devices/gpu.c:200 msgid "DRM Device" msgstr "Dispositivo DRM" #: modules/devices/gpu.c:201 modules/devices/pci.c:144 #: modules/devices/usb.c:136 modules/devices/usb.c:177 msgid "Class" msgstr "Classe" #: modules/devices/gpu.c:210 modules/devices/pci.c:149 msgid "In Use" msgstr "Em uso" #: modules/devices/gpu.c:245 msgid "Unknown integrated GPU" msgstr "GPU integrado desconhecido" #: modules/devices/gpu.c:253 msgid "clock-frequency property" msgstr "propriedade da frequência-clock" #: modules/devices/gpu.c:254 msgid "Operating Points (OPPv1)" msgstr "Operating Points (OPPv1)" #: modules/devices/gpu.c:255 msgid "Operating Points (OPPv2)" msgstr "Operating Points (OPPv2)" #: modules/devices/gpu.c:297 msgid "Device Tree Node" msgstr "Device Tree Node" #: modules/devices/gpu.c:300 modules/devices/monitors.c:475 #: modules/network/net.c:477 msgid "Status" msgstr "Estado" #: modules/devices/gpu.c:317 msgid "GPUs" msgstr "GPUs" #: modules/devices/gpu.c:341 msgid "No GPU devices found" msgstr "Nenhum dispositivo GPU encontrado" #: modules/devices/ia64/processor.c:108 msgid "IA64 Processor" msgstr "Processador IA64" #: modules/devices/ia64/processor.c:163 msgid "Architecture Revision" msgstr "Revisão de Arquitetura" #: modules/devices/ia64/processor.c:170 msgid "CPU regs" msgstr "Regs da CPU" #: modules/devices/ia64/processor.c:171 #: modules/devices/loongarch64/processor.c:100 msgid "Features" msgstr "Características" #: modules/devices/inputdevices.c:143 modules/devices/pci.c:153 #: modules/devices/usb.c:183 msgid "Bus" msgstr "Bus" #: modules/devices/inputdevices.c:149 msgid "Connected to" msgstr "Conectado a" #: modules/devices/inputdevices.c:153 msgid "InfraRed port" msgstr "Porta de infravermelhos" #: modules/devices/loongarch64/processor.c:94 #: modules/devices/mips/processor.c:76 msgid "System Type" msgstr "Tipo de sistema" #: modules/devices/loongarch64/processor.c:99 msgid "BogoMIPS" msgstr "" #: modules/devices/m68k/processor.c:85 modules/devices/riscv/processor.c:245 msgid "MMU" msgstr "MMU" #: modules/devices/m68k/processor.c:86 modules/devices/sparc/processor.c:76 msgid "FPU" msgstr "FPU" #: modules/devices/m68k/processor.c:90 msgid "Calibration" msgstr "Calibração" #: modules/devices/monitors.c:30 modules/devices/monitors.c:257 #: modules/devices/monitors.c:350 modules/devices/spd-decode.c:699 msgid "(Unspecified)" msgstr "(Não especificado)" #: modules/devices/monitors.c:232 #, c-format msgid "Week %d of %d" msgstr "Semana %d de %d" #: modules/devices/monitors.c:242 msgid "Ok" msgstr "Aceitar" #: modules/devices/monitors.c:242 msgid "Fail" msgstr "Falha" #: modules/devices/monitors.c:270 modules/devices/monitors.c:278 #: modules/devices/monitors.c:286 modules/devices/monitors.c:297 #: modules/devices/monitors.c:305 modules/devices/monitors.c:312 #: modules/devices/monitors.c:320 modules/devices/monitors.c:328 #: modules/devices/monitors.c:336 modules/devices/monitors.c:342 msgid "(Empty List)" msgstr "(Lista vazia)" #: modules/devices/monitors.c:394 msgid "Signal Type" msgstr "Tipo de sinal" #: modules/devices/monitors.c:394 msgid "Digital" msgstr "Digital" #: modules/devices/monitors.c:394 msgid "Analog" msgstr "Analógico" #: modules/devices/monitors.c:395 modules/devices/usb.c:135 #: modules/network.c:311 modules/network.c:364 modules/network.c:381 msgid "Interface" msgstr "Interface" #: modules/devices/monitors.c:396 msgid "Bits per Color Channel" msgstr "Bits por canal de cores" #: modules/devices/monitors.c:397 msgid "Speaker Allocation" msgstr "Alocação de altifalante" #: modules/devices/monitors.c:398 msgid "Output (Max)" msgstr "Saída (Máx.)" #: modules/devices/monitors.c:401 msgid "EDID Device" msgstr "Dispositivo EDID" #: modules/devices/monitors.c:405 msgid "Serial" msgstr "Série" #: modules/devices/monitors.c:406 msgid "Manufacture Date" msgstr "Data de fabrico" #: modules/devices/monitors.c:407 msgid "EDID Meta" msgstr "EDID Meta" #: modules/devices/monitors.c:408 msgid "Data Size" msgstr "Tamanho dos dados" #: modules/devices/monitors.c:408 msgid "bytes" msgstr "bytes" #: modules/devices/monitors.c:410 msgid "Extension Blocks" msgstr "Blocos de extensão" #: modules/devices/monitors.c:411 msgid "Extended to" msgstr "Estendido para" #: modules/devices/monitors.c:412 msgid "Checksum" msgstr "Código" #: modules/devices/monitors.c:413 msgid "EDID Descriptors" msgstr "Descritores EDID" #: modules/devices/monitors.c:414 msgid "Detailed Timing Descriptors (DTD)" msgstr "Detailed Timing Descriptors (DTD)" #: modules/devices/monitors.c:415 msgid "Established Timings Bitmap (ETB)" msgstr "Established Timings Bitmap (ETB)" #: modules/devices/monitors.c:416 msgid "Standard Timings (STD)" msgstr "Standard Timings (STD)" #: modules/devices/monitors.c:417 msgid "E-EDID Extension Blocks" msgstr "Blocos de extensão E-EDID" #: modules/devices/monitors.c:418 msgid "EIA/CEA-861 Data Blocks" msgstr "EIA/CEA-861 Blocos de dados" #: modules/devices/monitors.c:419 msgid "EIA/CEA-861 Short Audio Descriptors" msgstr "EIA/CEA-861 Descritores de áudio curtos" #: modules/devices/monitors.c:420 msgid "EIA/CEA-861 Short Video Descriptors" msgstr "EIA/CEA-861 Descritores de vídeo curtos" #: modules/devices/monitors.c:421 msgid "DisplayID Timings" msgstr "DisplayID Timings" #: modules/devices/monitors.c:422 msgid "DisplayID Strings" msgstr "DisplayID Strings" #: modules/devices/monitors.c:423 msgid "Hex Dump" msgstr "Hex Dump" #: modules/devices/monitors.c:423 msgid "Data" msgstr "Data" #: modules/devices/monitors.c:473 modules/devices/monitors.c:504 #: modules/devices/pci.c:151 modules/devices/usb.c:182 msgid "Connection" msgstr "Ligação" #: modules/devices/monitors.c:474 msgid "DRM" msgstr "DRM" #: modules/devices/parisc/processor.c:107 msgid "PA-RISC Processor" msgstr "Processador PA-RISC" #: modules/devices/parisc/processor.c:161 msgid "HVersion" msgstr "HVersion" #: modules/devices/parisc/processor.c:162 msgid "SVersion" msgstr "SVersion" #: modules/devices/pci.c:123 msgid "Link Width" msgstr "Largura da ligação" #: modules/devices/pci.c:125 msgid "Link Speed" msgstr "Velocidade da ligação" #: modules/devices/pci.c:152 msgid "Domain" msgstr "Domínio" #: modules/devices/pci.c:155 msgid "Function" msgstr "Função" #: modules/devices/pci.c:196 msgid "No PCI devices found" msgstr "Nenhum dispositivo PCI encontrado" #: modules/devices/ppc/processor.c:117 msgid "POWER Processor" msgstr "Processador POWER" #: modules/devices/printers.c:88 msgid "⚬ Can do black and white printing=\n" msgstr "⚬ Pode fazer impressão a preto e branco=\n" #: modules/devices/printers.c:90 msgid "⚬ Can do color printing=\n" msgstr "⚬ Pode fazer impressão colorido=\n" #: modules/devices/printers.c:92 msgid "⚬ Can do duplexing=\n" msgstr "⚬ Pode fazer duplex=\n" #: modules/devices/printers.c:94 msgid "⚬ Can do staple output=\n" msgstr "⚬Pode fazer a saída de grampos=\n" #: modules/devices/printers.c:96 msgid "⚬ Can do copies=\n" msgstr "⚬ pode fazer copias=\n" #: modules/devices/printers.c:98 msgid "⚬ Can collate copies=\n" msgstr "⚬ Pode agrupar cópias=\n" #: modules/devices/printers.c:100 msgid "⚬ Printer is rejecting jobs=\n" msgstr "⚬ A impressora está a rejeitar trabalhos=\n" #: modules/devices/printers.c:102 msgid "⚬ Printer was automatically discovered and added=\n" msgstr "⚬A impressora foi descoberta e adicionada automaticamente=\n" #: modules/devices/printers.c:117 msgid "Idle" msgstr "Inactiva" #: modules/devices/printers.c:119 msgid "Printing a Job" msgstr "Imprimindo um trabalho" #: modules/devices/printers.c:121 msgid "Stopped" msgstr "Parada" #: modules/devices/printers.c:200 msgid "" "[Printers]\n" "No suitable CUPS library found=" msgstr "" "[Impressoras]\n" "Nenhuma biblioteca apropriada do CUPS encontrada=" #: modules/devices/printers.c:213 msgid "[Printers (CUPS)]\n" msgstr "[Impressoras (CUPS)]\n" #: modules/devices/printers.c:277 msgid "" "[Printers]\n" "No printers found=\n" msgstr "" "[Impressoras]\n" "Nenhuma impressora encontrada=\n" #: modules/devices/riscv/processor.c:244 msgid "uarch" msgstr "uarch" #: modules/devices/riscv/riscv_data.c:37 msgctxt "rv-ext" msgid "RISC-V 32-bit" msgstr "RISC-V 32-bit" #: modules/devices/riscv/riscv_data.c:38 msgctxt "rv-ext" msgid "RISC-V 64-bit" msgstr "RISC-V 64-bit" #: modules/devices/riscv/riscv_data.c:39 msgctxt "rv-ext" msgid "RISC-V 128-bit" msgstr "RISC-V 128-bit" #: modules/devices/riscv/riscv_data.c:40 msgctxt "rv-ext" msgid "Base embedded integer instructions (15 registers)" msgstr "Instruções de inteiros embutidos na base (15 registadores)" #: modules/devices/riscv/riscv_data.c:41 msgctxt "rv-ext" msgid "Base integer instructions (31 registers)" msgstr "Instruções de base inteira (31 registos)" #: modules/devices/riscv/riscv_data.c:42 msgctxt "rv-ext" msgid "Hardware integer multiply and divide" msgstr "O número inteiro de hardware multiplica-se e divide-se" #: modules/devices/riscv/riscv_data.c:43 msgctxt "rv-ext" msgid "Atomic memory operations" msgstr "Operações de memória atómica" #: modules/devices/riscv/riscv_data.c:44 msgctxt "rv-ext" msgid "Compressed 16-bit instructions" msgstr "Instruções de 16 bits compactadas" #: modules/devices/riscv/riscv_data.c:45 msgctxt "rv-ext" msgid "Floating-point instructions, single-precision" msgstr "Instruções de ponto flutuante, precisão única" #: modules/devices/riscv/riscv_data.c:46 msgctxt "rv-ext" msgid "Floating-point instructions, double-precision" msgstr "Instruções de ponto flutuante, precisão dupla" #: modules/devices/riscv/riscv_data.c:47 msgctxt "rv-ext" msgid "Floating-point instructions, quad-precision" msgstr "Instruções de ponto flutuante, precisão quádrupla" #: modules/devices/riscv/riscv_data.c:48 msgctxt "rv-ext" msgid "Bit manipulation instructions" msgstr "Instruções de manipulação de bits" #: modules/devices/riscv/riscv_data.c:49 msgctxt "rv-ext" msgid "Vector operations" msgstr "Operações vetoriais" #: modules/devices/riscv/riscv_data.c:50 msgctxt "rv-ext" msgid "Scalar Cryptography" msgstr "" #: modules/devices/riscv/riscv_data.c:51 msgctxt "rv-ext" msgid "Base Counters and Timers" msgstr "" #: modules/devices/riscv/riscv_data.c:52 msgctxt "rv-ext" msgid "Control and Status Register" msgstr "" #: modules/devices/riscv/riscv_data.c:53 msgctxt "rv-ext" msgid "Instruction-Fetch Fence" msgstr "" #: modules/devices/riscv/riscv_data.c:54 msgctxt "rv-ext" msgid "Hardware performance counters" msgstr "" #: modules/devices/riscv/riscv_data.c:55 msgctxt "rv-ext" msgid "Accell Index addresses" msgstr "" #: modules/devices/riscv/riscv_data.c:56 msgctxt "rv-ext" msgid "Basic bit-manipulation" msgstr "" #: modules/devices/riscv/riscv_data.c:57 msgctxt "rv-ext" msgid "Supervisor-level Instructions" msgstr "" #: modules/devices/riscv/riscv_data.c:58 msgctxt "rv-ext" msgid "User Mode" msgstr "" #: modules/devices/riscv/riscv_data.c:59 msgctxt "rv-ext" msgid "Transactional memory" msgstr "Memória transacional" #: modules/devices/riscv/riscv_data.c:60 msgctxt "rv-ext" msgid "Packed SIMD instructions" msgstr "Instruções embaladas SIMD" #: modules/devices/riscv/riscv_data.c:61 msgctxt "rv-ext" msgid "Decimal floating-point instructions" msgstr "Instruções decimais de ponto flutuante" #: modules/devices/riscv/riscv_data.c:62 msgctxt "rv-ext" msgid "Dynamically translated languages" msgstr "Idiomas dinamicamente traduzidos" #: modules/devices/riscv/riscv_data.c:63 msgctxt "rv-ext" msgid "User-level interrupts" msgstr "Interrupções no nível do utilizador" #: modules/devices/s390/processor.c:92 msgid "S390 Processor" msgstr "Processador S390" #: modules/devices/s390/processor.c:133 msgid "ID String" msgstr "String de ID" #: modules/devices/sh/processor.c:55 msgid "SuperH Processor" msgstr "Processador SuperH" #: modules/devices/sh/processor.c:88 msgid "Bus Frequency" msgstr "Frequência de Barramento" #: modules/devices/sh/processor.c:89 msgid "Module Frequency" msgstr "Frequência do Módulo" #: modules/devices/spd-decode.c:128 modules/devices/spd-decode.c:144 msgid "Unspecified" msgstr "" #: modules/devices/spd-decode.c:130 modules/devices/spd-decode.c:146 msgid "Invalid" msgstr "Inválido" #: modules/devices/spd-decode.c:358 msgid "Row address bits" msgstr "Bits de endereço de linha" #: modules/devices/spd-decode.c:359 msgid "Column address bits" msgstr "Bits de endereço de coluna" #: modules/devices/spd-decode.c:360 msgid "Number of rows" msgstr "Número de linhas" #: modules/devices/spd-decode.c:361 msgid "Data width" msgstr "Largura da data" #: modules/devices/spd-decode.c:362 msgid "Interface signal levels" msgstr "Níveis de sinal de interface" #: modules/devices/spd-decode.c:363 msgid "Configuration type" msgstr "Tipo de configuração" #: modules/devices/spd-decode.c:364 msgid "Refresh" msgstr "Atualizar" #: modules/devices/spd-decode.c:365 modules/devices/spd-decode.c:442 #: modules/devices/spd-decode.c:721 msgid "Timings" msgstr "Tempos" #: modules/devices/spd-decode.c:589 modules/devices/spd-decode.c:858 #: modules/devices/spd-decode.c:899 modules/devices/spd-decode.c:1111 #: modules/devices/x86/processor.c:716 msgid "Voltage" msgstr "Voltagem" #: modules/devices/spd-decode.c:590 modules/devices/spd-decode.c:901 #: modules/devices/spd-decode.c:1113 msgid "JEDEC Timings" msgstr "JEDEC Timings" #: modules/devices/spd-decode.c:697 msgid "Ranks" msgstr "Ranks" #: modules/devices/spd-decode.c:698 msgid "IO Pins per Chip" msgstr "Pinos de E/S por chip" #: modules/devices/spd-decode.c:699 msgid "Die count" msgstr "Die count" #: modules/devices/spd-decode.c:700 msgid "Thermal Sensor" msgstr "Sensor termal" #: modules/devices/spd-decode.c:700 msgid "Present" msgstr "Presente" #: modules/devices/spd-decode.c:700 msgid "Not present" msgstr "Não presente" #: modules/devices/spd-decode.c:701 msgid "Supported Voltages" msgstr "Voltagens suportadas" #: modules/devices/spd-decode.c:705 msgid "Supported CAS Latencies" msgstr "Voltagens CAS suportadas" #: modules/devices/spd-decode.c:856 msgid "XMP Profile" msgstr "Perfil XMP" #: modules/devices/spd-decode.c:857 modules/devices/usb.c:176 #: modules/network/net.c:438 msgid "Speed" msgstr "Velocidade" #: modules/devices/spd-decode.c:859 msgid "XMP Timings" msgstr "XMP Timings" #: modules/devices/spd-decode.c:900 msgid "XMP" msgstr "XMP" #: modules/devices/spd-decode.c:1372 msgid "Serial Presence Detect (SPD)" msgstr "Serial Presence Detect (SPD)" #: modules/devices/spd-decode.c:1375 msgid "SPD Revision" msgstr "Revisão SPD" #: modules/devices/spd-decode.c:1378 msgid "Module Vendor" msgstr "Fabricante do módulo" #: modules/devices/spd-decode.c:1380 msgid "DRAM Vendor" msgstr "Fabricante de DRAM" #: modules/devices/spd-decode.c:1385 msgid "Manufacturing Date (Year / Week)" msgstr "" #: modules/devices/storage.c:46 modules/devices/storage.c:55 msgid "NVMe Controller" msgstr "" #: modules/devices/storage.c:138 msgid "Read Error Rate" msgstr "Ler taxa de erros" #: modules/devices/storage.c:139 msgid "Throughput Performance" msgstr "Capacidades de desempenho" #: modules/devices/storage.c:140 msgid "Spin-Up Time" msgstr "Tempo de Rotação" #: modules/devices/storage.c:141 msgid "Start/Stop Count" msgstr "Número de Paragens/Arranques" #: modules/devices/storage.c:142 msgid "Reallocated Sector Count" msgstr "Contagem de sectores realocados" #: modules/devices/storage.c:143 msgid "Read Channel Margin" msgstr "Margem do Canal de Leitura" #: modules/devices/storage.c:144 msgid "Seek Error Rate" msgstr "Taxa de Erros de Posicionamento" #: modules/devices/storage.c:145 msgid "Seek Timer Performance" msgstr "Performance de temporizador de procura" #: modules/devices/storage.c:146 modules/devices/storage.c:185 msgid "Power-On Hours" msgstr "Horas de Funcionamento" #: modules/devices/storage.c:147 msgid "Spin Retry Count" msgstr "Número de Repetições da Rotação" #: modules/devices/storage.c:148 msgid "Calibration Retry Count" msgstr "Contagem de tentativas de calibração" #: modules/devices/storage.c:149 msgid "Power Cycle Count" msgstr "Número de Ciclos de Energia" #: modules/devices/storage.c:150 modules/devices/storage.c:167 msgid "Soft Read Error Rate" msgstr "Taxa de Erros de Leitura Leves" #: modules/devices/storage.c:151 msgid "Runtime Bad Block" msgstr "Runtime Bad Block" #: modules/devices/storage.c:152 msgid "End-to-End error" msgstr "Erro Ponto-a-Ponto" #: modules/devices/storage.c:153 msgid "Reported Uncorrectable Errors" msgstr "Erros Incorrigíveis Detectados" #: modules/devices/storage.c:154 msgid "Command Timeout" msgstr "Tempo-Limite do Comando Expirado" #: modules/devices/storage.c:155 msgid "High Fly Writes" msgstr "Escritas Desviadas Elevadas" #: modules/devices/storage.c:156 msgid "Airflow Temperature" msgstr "Sensor de temperatura" #: modules/devices/storage.c:157 msgid "G-sense Error Rate" msgstr "Taxa de Erros do Sensor-G" #: modules/devices/storage.c:158 msgid "Power-off Retract Count" msgstr "Contagem de retratação de desligar" #: modules/devices/storage.c:159 msgid "Load Cycle Count" msgstr "Número de Ciclos de Carregamento" #: modules/devices/storage.c:160 modules/devices/storage.c:183 msgid "Temperature" msgstr "Temperatura" #: modules/devices/storage.c:161 msgid "Hardware ECC Recovered" msgstr "ECC por 'Hardware' Recuperado" #: modules/devices/storage.c:162 msgid "Reallocation Event Count" msgstr "Número de Eventos de Realocação" #: modules/devices/storage.c:163 msgid "Current Pending Sector Count" msgstr "Número de Sectores Pendentes Actuais" #: modules/devices/storage.c:164 msgid "Uncorrectable Sector Count" msgstr "Contagem de sectores incorrigíveis" #: modules/devices/storage.c:165 msgid "UltraDMA CRC Error Count" msgstr "Número de Erros CRC do UltraDMA" #: modules/devices/storage.c:166 msgid "Multi-Zone Error Rate" msgstr "Taxa de erro de várias zonas" #: modules/devices/storage.c:168 msgid "Run Out Cancel" msgstr "_Cancelar" #: modules/devices/storage.c:169 msgid "Flying Height" msgstr "Altura das Cabeças" #: modules/devices/storage.c:170 msgid "Spin High Current" msgstr "Corrente Alta de Rotação" #: modules/devices/storage.c:171 msgid "Spin Buzz" msgstr "Toques de Rotação" #: modules/devices/storage.c:172 msgid "Offline Seek Performance" msgstr "Performance de Posicionamento Desligado" #: modules/devices/storage.c:173 msgid "Disk Shift" msgstr "Desvio do Disco" #: modules/devices/storage.c:174 msgid "G-Sense Error Rate" msgstr "Taxa de Erros do Sensor-G" #: modules/devices/storage.c:175 msgid "Loaded Hours" msgstr "Horas de Carga" #: modules/devices/storage.c:176 msgid "Load/Unload Retry Count" msgstr "Número de Repetições do Carregamento/Descarregamento" #: modules/devices/storage.c:177 msgid "Load Friction" msgstr "Fricção no Carregamento" #: modules/devices/storage.c:178 msgid "Load/Unload Cycle Count" msgstr "Número de Ciclos de Carregamento/Descarregamento" #: modules/devices/storage.c:179 msgid "Load-in time" msgstr "Tempo de carregamento" #: modules/devices/storage.c:180 msgid "Torque Amplification Count" msgstr "Número de Amplificações do Binário" #: modules/devices/storage.c:181 msgid "Power-Off Retract Count" msgstr "Número de retrações ao desligar" #: modules/devices/storage.c:182 msgid "GMR Head Amplitude" msgstr "Amplitude das Cabeças GMR" #: modules/devices/storage.c:184 msgid "Endurance Remaining" msgstr "Performance Restante" #: modules/devices/storage.c:186 msgid "Good Block Rate" msgstr "Good Block Rate" #: modules/devices/storage.c:187 msgid "Head Flying Hours" msgstr "Head Flying Hours" #: modules/devices/storage.c:188 msgid "Read Error Retry Rate" msgstr "Taxa de Repetição dos Erros de Leitura" #: modules/devices/storage.c:189 msgid "Total LBAs Written" msgstr "Total LBAs Written" #: modules/devices/storage.c:190 msgid "Total LBAs Read" msgstr "Total LBAs Read" #: modules/devices/storage.c:191 msgid "Wear leveling Count" msgstr "" #: modules/devices/storage.c:192 msgid "Total Used Reserved Block Count" msgstr "" #: modules/devices/storage.c:193 msgid "Total Program Fail Count" msgstr "" #: modules/devices/storage.c:194 msgid "Total Erase Fail Count" msgstr "" #: modules/devices/storage.c:195 msgid "Available Reserved Space" msgstr "" #: modules/devices/storage.c:196 msgid "Program Fail Count" msgstr "" #: modules/devices/storage.c:197 msgid "Erase Fail Count" msgstr "" #: modules/devices/storage.c:198 msgid "TA Counter Increased" msgstr "" #: modules/devices/storage.c:199 msgid "Total Unused Reserved Block Count" msgstr "" #: modules/devices/storage.c:204 msgid "" "\n" "[UDisks2]\n" msgstr "" "\n" "[UDisks2]\n" #: modules/devices/storage.c:257 msgid "Removable" msgstr "Removível" #: modules/devices/storage.c:257 msgid "Fixed" msgstr "Fixo" #: modules/devices/storage.c:260 msgid "Ejectable" msgstr "Ejetável" #: modules/devices/storage.c:263 msgid "Self-monitoring (S.M.A.R.T.)" msgstr "Monitorização automática (S.M.A.R.T.)" #: modules/devices/storage.c:266 modules/devices/x86/processor.c:664 msgid "Power Management" msgstr "Gestão de energia" #: modules/devices/storage.c:269 msgid "Advanced Power Management" msgstr "Gestão avançada de energia" #: modules/devices/storage.c:272 msgid "Automatic Acoustic Management" msgstr "Gestão acústica automática" #: modules/devices/storage.c:275 #, c-format msgid "" "[Drive Information]\n" "Model=%s\n" msgstr "" "[Informação da unidade]\n" "Modelo=%s\n" #: modules/devices/storage.c:285 #, c-format msgid "" "Revision=%s\n" "Block Device=%s\n" "Serial=%s\n" "Size=%s\n" "Features=%s\n" msgstr "" "Revisão=%s\n" "Dispositivo de bloqueio=%s\n" "Série=%s\n" "Tamanho=%s\n" "Funcionalidades=%s\n" #: modules/devices/storage.c:300 #, c-format msgid "Rotation Rate=%d RPM\n" msgstr "Taxa de rotação=%d RPM\n" #: modules/devices/storage.c:303 #, c-format msgid "" "Media=%s\n" "Media compatibility=%s\n" msgstr "" "Mídia=%s\n" "Compatibilidade da mídia=%s\n" #: modules/devices/storage.c:310 #, c-format msgid "Connection bus=%s\n" msgstr "Barramento de ligação=%s\n" #: modules/devices/storage.c:322 msgid "WWN" msgstr "" #: modules/devices/storage.c:323 msgid "EUI " msgstr "" #: modules/devices/storage.c:328 msgid "WWN / EUI" msgstr "" #: modules/devices/storage.c:332 #, c-format msgid "$^$%s=[%s] %s\n" msgstr "" #: modules/devices/storage.c:334 msgid "IEEE OUI" msgstr "" #: modules/devices/storage.c:346 msgid "" "[Self-monitoring (S.M.A.R.T.)]\n" "Status=%s\n" "Bad Sectors=%" msgstr "" #: modules/devices/storage.c:352 msgid "Failing" msgstr "Falhando" #: modules/devices/storage.c:352 msgid "OK" msgstr "OK" #: modules/devices/storage.c:358 msgid "" "[S.M.A.R.T. Attributes]\n" "Attribute=Value / Normalized / Worst / Threshold\n" msgstr "" #: modules/devices/storage.c:381 msgid "%" msgid_plural "%" msgstr[0] "" msgstr[1] "" #: modules/devices/storage.c:419 #, c-format msgid "(%d) %s=%s\n" msgstr "" #: modules/devices/storage.c:428 #, c-format msgid "" "[Partition table]\n" "Type=%s\n" msgstr "" "[Tabela de partição]\n" "Tipo=%s\n" #: modules/devices/storage.c:447 #, c-format msgid "Partition %s=%s\n" msgstr "Partição %s=%s\n" #: modules/devices/storage.c:496 msgid "" "\n" "[SCSI Disks]\n" msgstr "" "\n" "[SCSI Discos]\n" #: modules/devices/storage.c:567 modules/devices/storage.c:773 #, c-format msgid "" "[Device Information]\n" "Model=%s\n" msgstr "" "[Informação de dispositivo]\n" "Modelo=%s\n" #: modules/devices/storage.c:574 #, c-format msgid "" "Type=%s\n" "Revision=%s\n" "[SCSI Controller]\n" "Controller=scsi%d\n" "Channel=%d\n" "ID=%d\n" "LUN=%d\n" msgstr "" "Tipo=%s\n" "Revisão=%s\n" "[SCSI Controlador]\n" "Controlador=scsi%d\n" "Chanal=%d\n" "ID=%d\n" "LUN=%d\n" #: modules/devices/storage.c:621 msgid "" "\n" "[IDE Disks]\n" msgstr "" "\n" "[IDE Discos]\n" #: modules/devices/storage.c:707 #, c-format msgid "Driver=%s\n" msgstr "Driver=%s\n" #: modules/devices/storage.c:779 #, c-format msgid "" "Device Name=hd%c\n" "Media=%s\n" "Cache=%dkb\n" msgstr "" "Nome do dispositivo=hd%c\n" "mídia=%s\n" "Cache=%dkb\n" #: modules/devices/storage.c:789 #, c-format msgid "" "[Geometry]\n" "Physical=%s\n" "Logical=%s\n" msgstr "" "[Geometria]\n" "Físico=%s\n" "Lógico=%s\n" #: modules/devices/storage.c:799 #, c-format msgid "" "[Capabilities]\n" "%s" msgstr "" "[Capacidades]\n" "%s" #: modules/devices/storage.c:806 #, c-format msgid "" "[Speeds]\n" "%s" msgstr "" "[Velocidades]\n" "%s" #: modules/devices/usb.c:137 modules/devices/usb.c:178 msgid "Sub-class" msgstr "Subclasse" #: modules/devices/usb.c:138 modules/devices/usb.c:179 modules/network.c:348 msgid "Protocol" msgstr "Protocolo" #: modules/devices/usb.c:146 modules/network/net.c:474 msgid "Mb/s" msgstr "Mb/s" #: modules/devices/usb.c:174 msgid "Max Current" msgstr "Corrente máxima" #: modules/devices/usb.c:174 msgid "mA" msgstr "mA" #: modules/devices/usb.c:175 msgid "USB Version" msgstr "Versão do USB" #: modules/devices/usb.c:180 msgid "Device Version" msgstr "Versão do dispositivo" #: modules/devices/usb.c:222 msgid "No USB devices found." msgstr "Nenhum dispositivo USB encontrado." #: modules/devices/x86/processor.c:648 msgid "Model Name" msgstr "Nome do modelo" #: modules/devices/x86/processor.c:649 msgid "Family, model, stepping" msgstr "Família, modelo, pisar Stpeping" #: modules/devices/x86/processor.c:655 msgid "Microcode Version" msgstr "Versão do microcódigo" #: modules/devices/x86/processor.c:656 msgid "Configuration" msgstr "Configuração" #: modules/devices/x86/processor.c:657 msgid "Cache Size" msgstr "Tamanho do Cache" #: modules/devices/x86/processor.c:657 msgid "kb" msgstr "kb" #: modules/devices/x86/processor.c:665 msgid "Bug Workarounds" msgstr "Soluções alternativas para insetos" #: modules/devices/x86/processor.c:692 msgid "Socket Information" msgstr "Informação Socket" #: modules/devices/x86/processor.c:695 msgid "(Not available; Perhaps try running hardinfo2 as root.)" msgstr "" #: modules/devices/x86/processor.c:713 msgid "CPU Socket" msgstr "CPU Socket" #: modules/devices/x86/processor.c:717 msgid "External Clock" msgstr "Clock externo" #: modules/devices/x86/processor.c:718 msgid "Max Frequency" msgstr "Frequência máxima" #: modules/devices/x86/processor.c:749 msgid "Package Information" msgstr "Informação do pacote" #: modules/devices/x86/processor.c:811 msgid "Socket:Core" msgstr "Socket:Núcleo" #. !/flag:fpu #: modules/devices/x86/x86_data.c:48 msgctxt "x86-flag" msgid "Onboard FPU (floating point support)" msgstr "FPU a bordo (suporte a ponto flutuante)" #. !/flag:vme #: modules/devices/x86/x86_data.c:49 msgctxt "x86-flag" msgid "Virtual 8086 mode enhancements" msgstr "Aprimoramentos do modo virtual 8086" #. !/flag:de #: modules/devices/x86/x86_data.c:50 msgctxt "x86-flag" msgid "Debugging Extensions (CR4.DE)" msgstr "Extensões de Depuração (CR4.DE)" #. !/flag:pse #: modules/devices/x86/x86_data.c:51 msgctxt "x86-flag" msgid "Page Size Extensions (4MB memory pages)" msgstr "Extensões de tamanho de página (4MB de páginas de memória)" #. !/flag:tsc #: modules/devices/x86/x86_data.c:52 msgctxt "x86-flag" msgid "Time Stamp Counter (RDTSC)" msgstr "Contador de Carimbo de Tempo (RDTSC)" #. !/flag:msr #: modules/devices/x86/x86_data.c:53 msgctxt "x86-flag" msgid "Model-Specific Registers (RDMSR, WRMSR)" msgstr "Registros Específicos do Modelo (RDMSR, WRMSR)" #. !/flag:pae #: modules/devices/x86/x86_data.c:54 msgctxt "x86-flag" msgid "Physical Address Extensions (support for more than 4GB of RAM)" msgstr "Extensões de endereço físico (suporte para mais de 4 GB de RAM)" #. !/flag:mce #: modules/devices/x86/x86_data.c:55 msgctxt "x86-flag" msgid "Machine Check Exception" msgstr "Exceção de Verificação de Máquina" #. !/flag:cx8 #: modules/devices/x86/x86_data.c:56 msgctxt "x86-flag" msgid "CMPXCHG8 instruction (64-bit compare-and-swap)" msgstr "Instrução CMPXCHG8 (comparação-e-swap de 64 bits)" #. !/flag:apic #: modules/devices/x86/x86_data.c:57 msgctxt "x86-flag" msgid "Onboard APIC" msgstr "APIC a bordo" #. !/flag:sep #: modules/devices/x86/x86_data.c:58 msgctxt "x86-flag" msgid "SYSENTER/SYSEXIT" msgstr "SYSENTER / SYSEXIT" #. !/flag:mtrr #: modules/devices/x86/x86_data.c:59 msgctxt "x86-flag" msgid "Memory Type Range Registers" msgstr "Registros de intervalo de tipo de memória" #. !/flag:pge #: modules/devices/x86/x86_data.c:60 msgctxt "x86-flag" msgid "Page Global Enable (global bit in PDEs and PTEs)" msgstr "Page Global Enable (global bit in PDEs and PTEs)" #. !/flag:mca #: modules/devices/x86/x86_data.c:61 msgctxt "x86-flag" msgid "Machine Check Architecture" msgstr "Arquitetura de verificação de máquinas" #. !/flag:cmov #: modules/devices/x86/x86_data.c:62 msgctxt "x86-flag" msgid "CMOV instructions (conditional move) (also FCMOV)" msgstr "Instruções CMOV (movimento condicional) (também FCMOV)" #. !/flag:pat #: modules/devices/x86/x86_data.c:63 msgctxt "x86-flag" msgid "Page Attribute Table" msgstr "Tabela de Atributos da Página" #. !/flag:pse36 #: modules/devices/x86/x86_data.c:64 msgctxt "x86-flag" msgid "36-bit PSEs (huge pages)" msgstr "PSEs de 36 bits (páginas enormes)" #. !/flag:pn #: modules/devices/x86/x86_data.c:65 msgctxt "x86-flag" msgid "Processor serial number" msgstr "Número de série do processador" #. !/flag:clflush #: modules/devices/x86/x86_data.c:66 msgctxt "x86-flag" msgid "Cache Line Flush instruction" msgstr "Instrução de limpeza de linha de cache" #. !/flag:dts #: modules/devices/x86/x86_data.c:67 msgctxt "x86-flag" msgid "" "Debug Store (buffer for debugging and profiling instructions), or " "alternately: digital thermal sensor" msgstr "" "Armazenamento de Depuração (buffer para instruções de depuração e criação de " "perfil) ou alternativamente: sensor térmico digital" #. !/flag:acpi #: modules/devices/x86/x86_data.c:68 msgctxt "x86-flag" msgid "ACPI via MSR (temperature monitoring and clock speed modulation)" msgstr "" "ACPI via MSR (monitoramento de temperatura e modulação de velocidade do " "clock)" #. !/flag:mmx #: modules/devices/x86/x86_data.c:69 msgctxt "x86-flag" msgid "Multimedia Extensions" msgstr "Extensões Multimídia" #. !/flag:fxsr #: modules/devices/x86/x86_data.c:70 msgctxt "x86-flag" msgid "FXSAVE/FXRSTOR, CR4.OSFXSR" msgstr "FXSAVE/FXRSTOR, CR4.OSFXSR" #. !/flag:sse #: modules/devices/x86/x86_data.c:71 msgctxt "x86-flag" msgid "Intel SSE vector instructions" msgstr "Instruções vetoriais Intel SSE" #. !/flag:sse2 #: modules/devices/x86/x86_data.c:72 msgctxt "x86-flag" msgid "SSE2" msgstr "SSE2" #. !/flag:ss #: modules/devices/x86/x86_data.c:73 msgctxt "x86-flag" msgid "CPU self snoop" msgstr "Snoop auto CPU" #. !/flag:ht #: modules/devices/x86/x86_data.c:74 msgctxt "x86-flag" msgid "Hyper-Threading" msgstr "Hyper-Threading" #. !/flag:tm #: modules/devices/x86/x86_data.c:75 msgctxt "x86-flag" msgid "Automatic clock control (Thermal Monitor)" msgstr "Controle de relógio automático (Monitor térmico)" #. !/flag:ia64 #: modules/devices/x86/x86_data.c:76 msgctxt "x86-flag" msgid "" "Intel Itanium Architecture 64-bit (not to be confused with Intel's 64-bit " "x86 architecture with flag x86-64 or \"AMD64\" bit indicated by flag lm)" msgstr "" "Arquitetura Intel Itanium de 64 bits (não deve ser confundida com a " "arquitetura x86 de 64 bits da Intel com o sinalizador x86-64 ou bit " "\"AMD64\" indicado pelo sinalizador lm)" #. !/flag:pbe #: modules/devices/x86/x86_data.c:77 msgctxt "x86-flag" msgid "Pending Break Enable (PBE# pin) wakeup support" msgstr "Suporte à ativação de interrupção pendente (PBE # pin)" #. !/flag:syscall #: modules/devices/x86/x86_data.c:80 msgctxt "x86-flag" msgid "SYSCALL (Fast System Call) and SYSRET (Return From Fast System Call)" msgstr "" "SYSCALL (Chamada Rápida do Sistema) e SYSRET (Retorno da Chamada Rápida do " "Sistema)" #. !/flag:mp #: modules/devices/x86/x86_data.c:81 msgctxt "x86-flag" msgid "Multiprocessing Capable." msgstr "Multiprocessamento Capaz." #. !/flag:nx #: modules/devices/x86/x86_data.c:82 msgctxt "x86-flag" msgid "Execute Disable" msgstr "Executar Desativar" #. !/flag:mmxext #: modules/devices/x86/x86_data.c:83 msgctxt "x86-flag" msgid "AMD MMX extensions" msgstr "Extensões AMD MMX" #. !/flag:fxsr_opt #: modules/devices/x86/x86_data.c:84 msgctxt "x86-flag" msgid "FXSAVE/FXRSTOR optimizations" msgstr "Otimizações FXSAVE / FXRSTOR" #. !/flag:pdpe1gb #: modules/devices/x86/x86_data.c:85 msgctxt "x86-flag" msgid "One GB pages (allows hugepagesz=1G)" msgstr "Um GB páginas (permite hugepagesz = 1G)" #. !/flag:rdtscp #: modules/devices/x86/x86_data.c:86 msgctxt "x86-flag" msgid "Read Time-Stamp Counter and Processor ID" msgstr "Leitura do Contador de Carimbo de Tempo e ID do Processador" #. !/flag:lm #: modules/devices/x86/x86_data.c:87 msgctxt "x86-flag" msgid "Long Mode (x86-64: amd64, also known as Intel 64, i.e. 64-bit capable)" msgstr "" "Modo Longo (x86-64: amd64, também conhecido como Intel 64, ou seja, " "capacidade para 64 bits)" #. !/flag:3dnow #: modules/devices/x86/x86_data.c:88 msgctxt "x86-flag" msgid "3DNow! (AMD vector instructions, competing with Intel's SSE1)" msgstr "3DNow! (Instruções vetoriais AMD, competindo com o SSE1 da Intel)" #. !/flag:3dnowext #: modules/devices/x86/x86_data.c:89 msgctxt "x86-flag" msgid "AMD 3DNow! extensions" msgstr "AMD 3DNow! extensões" #. !/flag:recovery #: modules/devices/x86/x86_data.c:91 msgctxt "x86-flag" msgid "CPU in recovery mode" msgstr "CPU no modo de recuperação" #. !/flag:longrun #: modules/devices/x86/x86_data.c:92 msgctxt "x86-flag" msgid "Longrun power control" msgstr "Controle de potência Longrun" #. !/flag:lrti #: modules/devices/x86/x86_data.c:93 msgctxt "x86-flag" msgid "LongRun table interface" msgstr "Interface de mesa LongRun" #. !/flag:cxmmx #: modules/devices/x86/x86_data.c:95 msgctxt "x86-flag" msgid "Cyrix MMX extensions" msgstr "Extensões Cyrix MMX" #. !/flag:k6_mtrr #: modules/devices/x86/x86_data.c:96 msgctxt "x86-flag" msgid "AMD K6 nonstandard MTRRs" msgstr "MTRRs fora do padrão AMD K6" #. !/flag:cyrix_arr #: modules/devices/x86/x86_data.c:97 msgctxt "x86-flag" msgid "Cyrix ARRs (= MTRRs)" msgstr "Cyrix ARRs (= MTRRs)" #. !/flag:centaur_mcr #: modules/devices/x86/x86_data.c:98 msgctxt "x86-flag" msgid "Centaur MCRs (= MTRRs)" msgstr "MCRs Centauros (= MTRRs)" #. !/flag:constant_tsc #: modules/devices/x86/x86_data.c:99 msgctxt "x86-flag" msgid "TSC ticks at a constant rate" msgstr "TSC carrapatos a uma taxa constante" #. !/flag:up #: modules/devices/x86/x86_data.c:100 msgctxt "x86-flag" msgid "SMP kernel running on UP" msgstr "Kernel SMP rodando em UP" #. !/flag:art #: modules/devices/x86/x86_data.c:101 msgctxt "x86-flag" msgid "Always-Running Timer" msgstr "Temporizador sempre em funcionamento" #. !/flag:arch_perfmon #: modules/devices/x86/x86_data.c:102 msgctxt "x86-flag" msgid "Intel Architectural PerfMon" msgstr "Intel Architectural PerfMon" #. !/flag:pebs #: modules/devices/x86/x86_data.c:103 msgctxt "x86-flag" msgid "Precise-Event Based Sampling" msgstr "Amostragem baseada em eventos precisos" #. !/flag:bts #: modules/devices/x86/x86_data.c:104 msgctxt "x86-flag" msgid "Branch Trace Store" msgstr "Loja de Rastreamento de Filial" #. !/flag:rep_good #: modules/devices/x86/x86_data.c:105 msgctxt "x86-flag" msgid "rep microcode works well" msgstr "microcódigo rep funciona bem" #. !/flag:acc_power #: modules/devices/x86/x86_data.c:106 msgctxt "x86-flag" msgid "AMD accumulated power mechanism" msgstr "AMD acumulou mecanismo de energia" #. !/flag:nopl #: modules/devices/x86/x86_data.c:107 msgctxt "x86-flag" msgid "The NOPL (0F 1F) instructions" msgstr "Instruções do NOPL (0F 1F)" #. !/flag:xtopology #: modules/devices/x86/x86_data.c:108 msgctxt "x86-flag" msgid "cpu topology enum extensions" msgstr "extensões da enologia da topologia da cpu" #. !/flag:tsc_reliable #: modules/devices/x86/x86_data.c:109 msgctxt "x86-flag" msgid "TSC is known to be reliable" msgstr "TSC é conhecido por ser confiável" #. !/flag:nonstop_tsc #: modules/devices/x86/x86_data.c:110 msgctxt "x86-flag" msgid "TSC does not stop in C states" msgstr "TSC não pára em estados C" #. !/flag:extd_apicid #: modules/devices/x86/x86_data.c:111 msgctxt "x86-flag" msgid "has extended APICID (8 bits)" msgstr "estendeu APICID (8 bits)" #. !/flag:amd_dcm #: modules/devices/x86/x86_data.c:112 msgctxt "x86-flag" msgid "multi-node processor" msgstr "processador multi-nó" #. !/flag:aperfmperf #: modules/devices/x86/x86_data.c:113 msgctxt "x86-flag" msgid "APERFMPERF" msgstr "APERFMPERF" #. !/flag:eagerfpu #: modules/devices/x86/x86_data.c:114 msgctxt "x86-flag" msgid "Non lazy FPU restore" msgstr "Restauração de FPU não preguiçosa" #. !/flag:nonstop_tsc_s3 #: modules/devices/x86/x86_data.c:115 msgctxt "x86-flag" msgid "TSC doesn't stop in S3 state" msgstr "TSC não pára no estado S3" #. !/flag:mce_recovery #: modules/devices/x86/x86_data.c:116 msgctxt "x86-flag" msgid "CPU has recoverable machine checks" msgstr "A CPU tem verificações de máquina recuperáveis" #. !/flag:pni #: modules/devices/x86/x86_data.c:119 msgctxt "x86-flag" msgid "SSE-3 (\"Prescott New Instructions\")" msgstr "SSE-3 (\"Prescott Novas instruções\")" #. !/flag:pclmulqdq #: modules/devices/x86/x86_data.c:120 msgctxt "x86-flag" msgid "" "Perform a Carry-Less Multiplication of Quadword instruction - accelerator " "for GCM)" msgstr "" "Executar uma multiplicação sem carga do acelerador de instruções do Quadword " "para o GCM)" #. !/flag:dtes64 #: modules/devices/x86/x86_data.c:121 msgctxt "x86-flag" msgid "64-bit Debug Store" msgstr "Armazenamento de depuração de 64 bits" #. !/flag:monitor #: modules/devices/x86/x86_data.c:122 msgctxt "x86-flag" msgid "Monitor/Mwait support (Intel SSE3 supplements)" msgstr "Suporte Monitor / Mwait (suplementos Intel SSE3)" #. !/flag:ds_cpl #: modules/devices/x86/x86_data.c:123 msgctxt "x86-flag" msgid "CPL Qual. Debug Store" msgstr "CPL Qual. Loja de Depuração" #. !/flag:vmx #: modules/devices/x86/x86_data.c:124 msgctxt "x86-flag" msgid "Hardware virtualization, Intel VMX" msgstr "Virtualização de hardware, Intel VMX" #. !/flag:smx #: modules/devices/x86/x86_data.c:125 msgctxt "x86-flag" msgid "Safer mode TXT (TPM support)" msgstr "Modo mais seguro TXT (suporte a TPM)" #. !/flag:est #: modules/devices/x86/x86_data.c:126 msgctxt "x86-flag" msgid "Enhanced SpeedStep" msgstr "Enhanced SpeedStep" #. !/flag:tm2 #: modules/devices/x86/x86_data.c:127 msgctxt "x86-flag" msgid "Thermal Monitor 2" msgstr "Monitor Térmico 2" #. !/flag:ssse3 #: modules/devices/x86/x86_data.c:128 msgctxt "x86-flag" msgid "Supplemental SSE-3" msgstr "Suplemento SSE-3" #. !/flag:cid #: modules/devices/x86/x86_data.c:129 msgctxt "x86-flag" msgid "Context ID" msgstr "ID de contexto" #. !/flag:sdbg #: modules/devices/x86/x86_data.c:130 msgctxt "x86-flag" msgid "silicon debug" msgstr "depuração de silício" #. !/flag:fma #: modules/devices/x86/x86_data.c:131 msgctxt "x86-flag" msgid "Fused multiply-add" msgstr "Fusão multiplica-adiciona" #. !/flag:cx16 #: modules/devices/x86/x86_data.c:132 msgctxt "x86-flag" msgid "CMPXCHG16B" msgstr "CMPXCHG16B" #. !/flag:xtpr #: modules/devices/x86/x86_data.c:133 msgctxt "x86-flag" msgid "Send Task Priority Messages" msgstr "Enviar mensagens de prioridade de tarefa" #. !/flag:pdcm #: modules/devices/x86/x86_data.c:134 msgctxt "x86-flag" msgid "Performance Capabilities" msgstr "Capacidades de desempenho" #. !/flag:pcid #: modules/devices/x86/x86_data.c:135 msgctxt "x86-flag" msgid "Process Context Identifiers" msgstr "Identificadores de contexto de processo" #. !/flag:dca #: modules/devices/x86/x86_data.c:136 msgctxt "x86-flag" msgid "Direct Cache Access" msgstr "Acesso direto ao cache" #. !/flag:sse4_1 #: modules/devices/x86/x86_data.c:137 msgctxt "x86-flag" msgid "SSE-4.1" msgstr "SSE-4.1" #. !/flag:sse4_2 #: modules/devices/x86/x86_data.c:138 msgctxt "x86-flag" msgid "SSE-4.2" msgstr "SSE-4.2" #. !/flag:x2apic #: modules/devices/x86/x86_data.c:139 msgctxt "x86-flag" msgid "x2APIC" msgstr "x2APIC" #. !/flag:movbe #: modules/devices/x86/x86_data.c:140 msgctxt "x86-flag" msgid "Move Data After Swapping Bytes instruction" msgstr "Mover dados após a instrução troca de Bytes" #. !/flag:popcnt #: modules/devices/x86/x86_data.c:141 msgctxt "x86-flag" msgid "" "Return the Count of Number of Bits Set to 1 instruction (Hamming weight, i." "e. bit count)" msgstr "" "Retorna a Contagem do Número de Bits Definido como 1 instrução (peso " "Hamming, ou seja, contagem de bits)" #: modules/devices/x86/x86_data.c:142 msgctxt "x86-flag" msgid "Tsc deadline timer" msgstr "Temporizador de prazo de Tsc" #. !/flag:aes/aes-ni #: modules/devices/x86/x86_data.c:143 msgctxt "x86-flag" msgid "Advanced Encryption Standard (New Instructions)" msgstr "Padrão Avançado de Criptografia (Novas Instruções)" #. !/flag:xsave #: modules/devices/x86/x86_data.c:144 msgctxt "x86-flag" msgid "Save Processor Extended States: also provides XGETBY,XRSTOR,XSETBY" msgstr "" "Guardar estados estendidos do processador: também fornece XGETBY, XRSTOR, " "XSETBY" #. !/flag:avx #: modules/devices/x86/x86_data.c:145 msgctxt "x86-flag" msgid "Advanced Vector Extensions" msgstr "Extensões Vetoriais Avançadas" #. !/flag:f16c #: modules/devices/x86/x86_data.c:146 msgctxt "x86-flag" msgid "16-bit fp conversions (CVT16)" msgstr "Conversões fp de 16 bits (CVT16)" #. !/flag:rdrand #: modules/devices/x86/x86_data.c:147 msgctxt "x86-flag" msgid "Read Random Number from hardware random number generator instruction" msgstr "" "Ler Número Aleatório da instrução do gerador de números aleatórios de " "hardware" #. !/flag:hypervisor #: modules/devices/x86/x86_data.c:148 msgctxt "x86-flag" msgid "Running on a hypervisor" msgstr "A executar num hipervisor" #. !/flag:rng #: modules/devices/x86/x86_data.c:150 msgctxt "x86-flag" msgid "Random Number Generator present (xstore)" msgstr "Gerador de números aleatórios presente (xstore)" #. !/flag:rng_en #: modules/devices/x86/x86_data.c:151 msgctxt "x86-flag" msgid "Random Number Generator enabled" msgstr "Gerador de Números Aleatórios ativado" #. !/flag:ace #: modules/devices/x86/x86_data.c:152 msgctxt "x86-flag" msgid "on-CPU crypto (xcrypt)" msgstr "on-CPU crypto (xcrypt)" #. !/flag:ace_en #: modules/devices/x86/x86_data.c:153 msgctxt "x86-flag" msgid "on-CPU crypto enabled" msgstr "on-CPU criptografia ativada" #. !/flag:ace2 #: modules/devices/x86/x86_data.c:154 msgctxt "x86-flag" msgid "Advanced Cryptography Engine v2" msgstr "Mecanismo Avançado de Criptografia v2" #. !/flag:ace2_en #: modules/devices/x86/x86_data.c:155 msgctxt "x86-flag" msgid "ACE v2 enabled" msgstr "ACE v2 ativado" #. !/flag:phe #: modules/devices/x86/x86_data.c:156 msgctxt "x86-flag" msgid "PadLock Hash Engine" msgstr "PadLock Hash Mecanismo" #. !/flag:phe_en #: modules/devices/x86/x86_data.c:157 msgctxt "x86-flag" msgid "PHE enabled" msgstr "PHE ativado" #. !/flag:pmm #: modules/devices/x86/x86_data.c:158 msgctxt "x86-flag" msgid "PadLock Montgomery Multiplier" msgstr "PadLock Montgomery Multiplicador" #. !/flag:pmm_en #: modules/devices/x86/x86_data.c:159 msgctxt "x86-flag" msgid "PMM enabled" msgstr "PMM ativado" #. !/flag:lahf_lm #: modules/devices/x86/x86_data.c:161 msgctxt "x86-flag" msgid "Load AH from Flags (LAHF) and Store AH into Flags (SAHF) in long mode" msgstr "" "Carregar AH das Bandeiras (LAHF) e Armazenar HA dentro das Bandeiras (SAHF) " "no modo longo" #. !/flag:cmp_legacy #: modules/devices/x86/x86_data.c:162 msgctxt "x86-flag" msgid "If yes HyperThreading not valid" msgstr "Se sim HyperThreading não é válido" #. !/flag:svm #: modules/devices/x86/x86_data.c:163 msgctxt "x86-flag" msgid "\"Secure virtual machine\": AMD-V" msgstr "\"Máquina virtual segura\": AMD-V" #. !/flag:extapic #: modules/devices/x86/x86_data.c:164 msgctxt "x86-flag" msgid "Extended APIC space" msgstr "Espaço APIC extendido" #. !/flag:cr8_legacy #: modules/devices/x86/x86_data.c:165 msgctxt "x86-flag" msgid "CR8 in 32-bit mode" msgstr "CR8 no modo 32-bit" #. !/flag:abm #: modules/devices/x86/x86_data.c:166 msgctxt "x86-flag" msgid "Advanced Bit Manipulation" msgstr "Manipulação Avançada de Bit" #. !/flag:sse4a #: modules/devices/x86/x86_data.c:167 msgctxt "x86-flag" msgid "SSE-4A" msgstr "SSE-4A" #. !/flag:misalignsse #: modules/devices/x86/x86_data.c:168 msgctxt "x86-flag" msgid "" "indicates if a general-protection exception (#GP) is generated when some " "legacy SSE instructions operate on unaligned data. Also depends on CR0 and " "Alignment Checking bit" msgstr "" "indica se uma exceção de proteção-geral (#GP) é gerada quando algumas " "instruções SSE legadas operam em dados não alinhados. Também depende do CR0 " "e bit de Verificação do Alinhamento" #. !/flag:3dnowprefetch #: modules/devices/x86/x86_data.c:169 msgctxt "x86-flag" msgid "3DNow prefetch instructions" msgstr "Instruções de pré-busca 3DNow" #. !/flag:osvw #: modules/devices/x86/x86_data.c:170 msgctxt "x86-flag" msgid "" "indicates OS Visible Workaround, which allows the OS to work around " "processor errata." msgstr "" "indica solução visível do OS, que permite que o OS funcione em torno das " "erratas do processador." #. !/flag:ibs #: modules/devices/x86/x86_data.c:171 msgctxt "x86-flag" msgid "Instruction Based Sampling" msgstr "Amostragem baseada em instruções" #. !/flag:xop #: modules/devices/x86/x86_data.c:172 msgctxt "x86-flag" msgid "extended AVX instructions" msgstr "instruções AVX estendidas" #. !/flag:skinit #: modules/devices/x86/x86_data.c:173 msgctxt "x86-flag" msgid "SKINIT/STGI instructions" msgstr "Instruções SKINIT/STGI" #. !/flag:wdt #: modules/devices/x86/x86_data.c:174 msgctxt "x86-flag" msgid "Watchdog timer" msgstr "Watchdog timer" #. !/flag:lwp #: modules/devices/x86/x86_data.c:175 msgctxt "x86-flag" msgid "Light Weight Profiling" msgstr "Perfil Peso Leve" #. !/flag:fma4 #: modules/devices/x86/x86_data.c:176 msgctxt "x86-flag" msgid "4 operands MAC instructions" msgstr "4 operando instruções MAC" #. !/flag:tce #: modules/devices/x86/x86_data.c:177 msgctxt "x86-flag" msgid "translation cache extension" msgstr "extensão de cache de tradução" #. !/flag:nodeid_msr #: modules/devices/x86/x86_data.c:178 msgctxt "x86-flag" msgid "NodeId MSR" msgstr "NodeId MSR" #. !/flag:tbm #: modules/devices/x86/x86_data.c:179 msgctxt "x86-flag" msgid "Trailing Bit Manipulation" msgstr "Manipulação de Bit de Arrasto" #. !/flag:topoext #: modules/devices/x86/x86_data.c:180 msgctxt "x86-flag" msgid "Topology Extensions CPUID leafs" msgstr "Extensões de Topologia CPUID folhas" #. !/flag:perfctr_core #: modules/devices/x86/x86_data.c:181 msgctxt "x86-flag" msgid "Core Performance Counter Extensions" msgstr "Extensões do Contador de Desempenho do Núcleo" #. !/flag:perfctr_nb #: modules/devices/x86/x86_data.c:182 msgctxt "x86-flag" msgid "NB Performance Counter Extensions" msgstr "Extensões do Contador de Desempenho do NB" #. !/flag:bpext #: modules/devices/x86/x86_data.c:183 msgctxt "x86-flag" msgid "data breakpoint extension" msgstr "extensão de ponto de interrupção de dados" #. !/flag:ptsc #: modules/devices/x86/x86_data.c:184 msgctxt "x86-flag" msgid "performance time-stamp counter" msgstr "contador time-stamp de desempenho" #. !/flag:perfctr_l2 #: modules/devices/x86/x86_data.c:185 msgctxt "x86-flag" msgid "L2 Performance Counter Extensions" msgstr "Extensões do Contador de Desempenho L2" #. !/flag:mwaitx #: modules/devices/x86/x86_data.c:186 msgctxt "x86-flag" msgid "MWAIT extension (MONITORX/MWAITX)" msgstr "Extensão MWAIT (MONITORX/MWAITX)" #. !/flag:cpb #: modules/devices/x86/x86_data.c:188 msgctxt "x86-flag" msgid "AMD Core Performance Boost" msgstr "Aumento do Desempenho do Núcleo da AMD" #. !/flag:epb #: modules/devices/x86/x86_data.c:189 msgctxt "x86-flag" msgid "IA32_ENERGY_PERF_BIAS support" msgstr "Suporte IA32_ENERGY_PERF_BIAS" #. !/flag:hw_pstate #: modules/devices/x86/x86_data.c:190 msgctxt "x86-flag" msgid "AMD HW-PState" msgstr "AMD HW-PState" #. !/flag:proc_feedback #: modules/devices/x86/x86_data.c:191 msgctxt "x86-flag" msgid "AMD ProcFeedbackInterface" msgstr "AMD ProcFeedbackInterface" #. !/flag:intel_pt #: modules/devices/x86/x86_data.c:192 msgctxt "x86-flag" msgid "Intel Processor Tracing" msgstr "Intel Processor Tracing" #. !/flag:tpr_shadow #: modules/devices/x86/x86_data.c:194 msgctxt "x86-flag" msgid "Intel TPR Shadow" msgstr "Intel TPR Shadow" #. !/flag:vnmi #: modules/devices/x86/x86_data.c:195 msgctxt "x86-flag" msgid "Intel Virtual NMI" msgstr "Intel Virtual NMI" #. !/flag:flexpriority #: modules/devices/x86/x86_data.c:196 msgctxt "x86-flag" msgid "Intel FlexPriority" msgstr "Intel FlexPriority" #. !/flag:ept #: modules/devices/x86/x86_data.c:197 msgctxt "x86-flag" msgid "Intel Extended Page Table" msgstr "Tabela de Páginas Estendidas da Intel" #. !/flag:vpid #: modules/devices/x86/x86_data.c:198 msgctxt "x86-flag" msgid "Intel Virtual Processor ID" msgstr "Identificação do Processador Virtual Intel" #. !/flag:vmmcall #: modules/devices/x86/x86_data.c:199 msgctxt "x86-flag" msgid "prefer VMMCALL to VMCALL" msgstr "prefira VMMCALL a VMCALL" #. !/flag:fsgsbase #: modules/devices/x86/x86_data.c:201 msgctxt "x86-flag" msgid "{RD/WR}{FS/GS}BASE instructions" msgstr "Instruções {RD/WR}{FS/GS}BASE" #. !/flag:tsc_adjust #: modules/devices/x86/x86_data.c:202 msgctxt "x86-flag" msgid "TSC adjustment MSR" msgstr "TSC ajustamento MSR" #. !/flag:bmi1 #: modules/devices/x86/x86_data.c:203 msgctxt "x86-flag" msgid "1st group bit manipulation extensions" msgstr "extensões de manipulação de bit de 1º grupo" #. !/flag:hle #: modules/devices/x86/x86_data.c:204 msgctxt "x86-flag" msgid "Hardware Lock Elision" msgstr "Hardware Lock Elision" #. !/flag:avx2 #: modules/devices/x86/x86_data.c:205 msgctxt "x86-flag" msgid "AVX2 instructions" msgstr "Instruções AVX2" #. !/flag:smep #: modules/devices/x86/x86_data.c:206 msgctxt "x86-flag" msgid "Supervisor Mode Execution Protection" msgstr "Proteção de Execução do Modo Supervisor" #. !/flag:bmi2 #: modules/devices/x86/x86_data.c:207 msgctxt "x86-flag" msgid "2nd group bit manipulation extensions" msgstr "extensões de manipulação de bit de 2º grupo" #. !/flag:erms #: modules/devices/x86/x86_data.c:208 msgctxt "x86-flag" msgid "Enhanced REP MOVSB/STOSB" msgstr "REP MOVSB/STOSB melhorada" #. !/flag:invpcid #: modules/devices/x86/x86_data.c:209 msgctxt "x86-flag" msgid "Invalidate Processor Context ID" msgstr "ID de Contexto do Processador Inválido" #. !/flag:rtm #: modules/devices/x86/x86_data.c:210 msgctxt "x86-flag" msgid "Restricted Transactional Memory" msgstr "Memória Transacional Restrita" #. !/flag:cqm #: modules/devices/x86/x86_data.c:211 msgctxt "x86-flag" msgid "Cache QoS Monitoring" msgstr "Monitorização de Cache de QoS" #. !/flag:mpx #: modules/devices/x86/x86_data.c:212 msgctxt "x86-flag" msgid "Memory Protection Extension" msgstr "Extensão de Proteção de Memória" #. !/flag:avx512f #: modules/devices/x86/x86_data.c:213 msgctxt "x86-flag" msgid "AVX-512 foundation" msgstr "Fundação AVX-512" #. !/flag:avx512dq #: modules/devices/x86/x86_data.c:214 msgctxt "x86-flag" msgid "AVX-512 Double/Quad instructions" msgstr "Instruções AVX-512 Double/Quad" #. !/flag:rdseed #: modules/devices/x86/x86_data.c:215 msgctxt "x86-flag" msgid "The RDSEED instruction" msgstr "A instrução RDSEED" #. !/flag:adx #: modules/devices/x86/x86_data.c:216 msgctxt "x86-flag" msgid "The ADCX and ADOX instructions" msgstr "A instrução ADCX e ADOX" #. !/flag:smap #: modules/devices/x86/x86_data.c:217 msgctxt "x86-flag" msgid "Supervisor Mode Access Prevention" msgstr "Prevenção de Acesso do Modo Supervisor" #. !/flag:clflushopt #: modules/devices/x86/x86_data.c:218 msgctxt "x86-flag" msgid "CLFLUSHOPT instruction" msgstr "instrução CLFLUSHOPT" #. !/flag:clwb #: modules/devices/x86/x86_data.c:219 msgctxt "x86-flag" msgid "CLWB instruction" msgstr "instrução CLWB" #. !/flag:avx512pf #: modules/devices/x86/x86_data.c:220 msgctxt "x86-flag" msgid "AVX-512 Prefetch" msgstr "Pré-busca AVX-512" #. !/flag:avx512er #: modules/devices/x86/x86_data.c:221 msgctxt "x86-flag" msgid "AVX-512 Exponential and Reciprocal" msgstr "Exponencial e Recíproco AVX-512" #. !/flag:avx512cd #: modules/devices/x86/x86_data.c:222 msgctxt "x86-flag" msgid "AVX-512 Conflict Detection" msgstr "Detecção de Conflitos AVX-512" #. !/flag:sha_ni #: modules/devices/x86/x86_data.c:223 msgctxt "x86-flag" msgid "SHA1/SHA256 Instruction Extensions" msgstr "Extensões de Instrução SHA1/SHA256" #. !/flag:avx512bw #: modules/devices/x86/x86_data.c:224 msgctxt "x86-flag" msgid "AVX-512 Byte/Word instructions" msgstr "instruções AVX-512 Byte/Word" #. !/flag:avx512vl #: modules/devices/x86/x86_data.c:225 msgctxt "x86-flag" msgid "AVX-512 128/256 Vector Length extensions" msgstr "Extensões de Comprimento de Vetor AVX-512 128/256" #. !/flag:xsaveopt #: modules/devices/x86/x86_data.c:227 msgctxt "x86-flag" msgid "Optimized XSAVE" msgstr "XSAVE Otimizado" #. !/flag:xsavec #: modules/devices/x86/x86_data.c:228 msgctxt "x86-flag" msgid "XSAVEC" msgstr "XSAVEC" #. !/flag:xgetbv1 #: modules/devices/x86/x86_data.c:229 msgctxt "x86-flag" msgid "XGETBV with ECX = 1" msgstr "XGETBV com ECX = 1" #. !/flag:xsaves #: modules/devices/x86/x86_data.c:230 msgctxt "x86-flag" msgid "XSAVES/XRSTORS" msgstr "XSAVES/XRSTORS" #. !/flag:cqm_llc #: modules/devices/x86/x86_data.c:232 msgctxt "x86-flag" msgid "LLC QoS" msgstr "LLC QoS" #. !/flag:cqm_occup_llc #: modules/devices/x86/x86_data.c:234 msgctxt "x86-flag" msgid "LLC occupancy monitoring" msgstr "monitoramento de ocupação de LLC" #. !/flag:cqm_mbm_total #: modules/devices/x86/x86_data.c:235 msgctxt "x86-flag" msgid "LLC total MBM monitoring" msgstr "monitoramento LLC total MBM" #. !/flag:cqm_mbm_local #: modules/devices/x86/x86_data.c:236 msgctxt "x86-flag" msgid "LLC local MBM monitoring" msgstr "monitoramento LLC local MBM" #. !/flag:clzero #: modules/devices/x86/x86_data.c:238 msgctxt "x86-flag" msgid "CLZERO instruction" msgstr "instrução CLZERO" #. !/flag:irperf #: modules/devices/x86/x86_data.c:239 msgctxt "x86-flag" msgid "instructions retired performance counter" msgstr "instruções do contador de desempenho retirado" #. !/flag:dtherm #: modules/devices/x86/x86_data.c:241 msgctxt "x86-flag" msgid "digital thermal sensor" msgstr "sensor térmico digital" #. !/flag:ida #: modules/devices/x86/x86_data.c:242 msgctxt "x86-flag" msgid "Intel Dynamic Acceleration" msgstr "Aceleração Dinâmica Intel" #. !/flag:arat #: modules/devices/x86/x86_data.c:243 msgctxt "x86-flag" msgid "Always Running APIC Timer" msgstr "Sempre a Executar o Temporizador APIC" #. !/flag:pln #: modules/devices/x86/x86_data.c:244 msgctxt "x86-flag" msgid "Intel Power Limit Notification" msgstr "Notificação de Limite de Energia Intel" #. !/flag:pts #: modules/devices/x86/x86_data.c:245 msgctxt "x86-flag" msgid "Intel Package Thermal Status" msgstr "Estado Térmico do Pacote Intel" #. !/flag:hwp #: modules/devices/x86/x86_data.c:246 msgctxt "x86-flag" msgid "Intel Hardware P-states" msgstr "Intel Hardware P-states" #. !/flag:hwp_notify #: modules/devices/x86/x86_data.c:247 msgctxt "x86-flag" msgid "HWP notification" msgstr "notificação HWP" #. !/flag:hwp_act_window #: modules/devices/x86/x86_data.c:248 msgctxt "x86-flag" msgid "HWP Activity Window" msgstr "Janela de atividade do HWP" #. !/flag:hwp_epp #: modules/devices/x86/x86_data.c:249 msgctxt "x86-flag" msgid "HWP Energy Performance Preference" msgstr "Preferência de Desempenho de Energia HWP" #. !/flag:hwp_pkg_req #: modules/devices/x86/x86_data.c:250 msgctxt "x86-flag" msgid "HWP package-level request" msgstr "Solicitação do package-level de HWP" #. !/flag:npt #: modules/devices/x86/x86_data.c:252 msgctxt "x86-flag" msgid "AMD Nested Page Table support" msgstr "Suporte para AMD Nested Page Table" #. !/flag:lbrv #: modules/devices/x86/x86_data.c:253 msgctxt "x86-flag" msgid "AMD LBR Virtualization support" msgstr "AMD LBR Virtualização suporte" #. !/flag:svm_lock #: modules/devices/x86/x86_data.c:254 msgctxt "x86-flag" msgid "AMD SVM locking MSR" msgstr "AMD SVM bloqueio MSR" #. !/flag:nrip_save #: modules/devices/x86/x86_data.c:255 msgctxt "x86-flag" msgid "AMD SVM next_rip save" msgstr "AMD SVM next_rip salvar" #. !/flag:tsc_scale #: modules/devices/x86/x86_data.c:256 msgctxt "x86-flag" msgid "AMD TSC scaling support" msgstr "Suporte de dimensionamento do AMD TSC" #. !/flag:vmcb_clean #: modules/devices/x86/x86_data.c:257 msgctxt "x86-flag" msgid "AMD VMCB clean bits support" msgstr "Suporte para bits limpos AMD VMCB" #. !/flag:flushbyasid #: modules/devices/x86/x86_data.c:258 msgctxt "x86-flag" msgid "AMD flush-by-ASID support" msgstr "Suporte para AMD flush-by-ASID" #. !/flag:decodeassists #: modules/devices/x86/x86_data.c:259 msgctxt "x86-flag" msgid "AMD Decode Assists support" msgstr "Suporte para AMD Decode Assists" #. !/flag:pausefilter #: modules/devices/x86/x86_data.c:260 msgctxt "x86-flag" msgid "AMD filtered pause intercept" msgstr "Interceptação de pausa filtrada AMD" #. !/flag:pfthreshold #: modules/devices/x86/x86_data.c:261 msgctxt "x86-flag" msgid "AMD pause filter threshold" msgstr "Limite de filtro de pausa da AMD" #. !/flag:avic #: modules/devices/x86/x86_data.c:262 msgctxt "x86-flag" msgid "Virtual Interrupt Controller" msgstr "Controlador de interrupção virtual" #. !/flag:pku #: modules/devices/x86/x86_data.c:264 msgctxt "x86-flag" msgid "Protection Keys for Userspace" msgstr "Chaves de proteção para o espaço do utilizador" #. !/flag:ospke #: modules/devices/x86/x86_data.c:265 msgctxt "x86-flag" msgid "OS Protection Keys Enable" msgstr "Ativar chaves de proteção do sistema operativo" #. !/flag:overflow_recov #: modules/devices/x86/x86_data.c:267 msgctxt "x86-flag" msgid "MCA overflow recovery support" msgstr "Suporte para recuperação de estouro de MCA" #. !/flag:succor #: modules/devices/x86/x86_data.c:268 msgctxt "x86-flag" msgid "uncorrectable error containment and recovery" msgstr "contenção de erros e recuperação incorrigíveis" #. !/flag:smca #: modules/devices/x86/x86_data.c:269 msgctxt "x86-flag" msgid "Scalable MCA" msgstr "MCA escalável" #. !/bug:f00f #: modules/devices/x86/x86_data.c:272 msgctxt "x86-flag" msgid "Intel F00F bug" msgstr "Erro Intel F00F" #. !/bug:fdiv #: modules/devices/x86/x86_data.c:273 msgctxt "x86-flag" msgid "FPU FDIV" msgstr "FPU FDIV" #. !/bug:coma #: modules/devices/x86/x86_data.c:274 msgctxt "x86-flag" msgid "Cyrix 6x86 coma" msgstr "Cyrix 6x86 coma" #. !/bug:tlb_mmatch #: modules/devices/x86/x86_data.c:275 msgctxt "x86-flag" msgid "AMD Erratum 383" msgstr "AMD Erratum 383" #. !/bug:apic_c1e #. !/bug:amd_e400 #: modules/devices/x86/x86_data.c:276 modules/devices/x86/x86_data.c:285 msgctxt "x86-flag" msgid "AMD Erratum 400" msgstr "AMD Erratum 400" #. !/bug:11ap #: modules/devices/x86/x86_data.c:277 msgctxt "x86-flag" msgid "Bad local APIC aka 11AP" msgstr "Mau local APIC também conhecido como 11AP" #. !/bug:fxsave_leak #: modules/devices/x86/x86_data.c:278 msgctxt "x86-flag" msgid "FXSAVE leaks FOP/FIP/FOP" msgstr "FXSAVE vazamentos FOP/FIP/FOP" #. !/bug:clflush_monitor #: modules/devices/x86/x86_data.c:279 msgctxt "x86-flag" msgid "AAI65, CLFLUSH required before MONITOR" msgstr "AAI65, CLFLUSH requerido antes de MONITOR" #. !/bug:sysret_ss_attrs #: modules/devices/x86/x86_data.c:280 msgctxt "x86-flag" msgid "SYSRET doesn't fix up SS attrs" msgstr "SYSRET não conserta o SS attrs" #. !/bug:espfix #: modules/devices/x86/x86_data.c:281 msgctxt "x86-flag" msgid "IRET to 16-bit SS corrupts ESP/RSP high bits" msgstr "IRET para SS de 16-bit corrompe os bits altos do ESP/RSP" #. !/bug:null_seg #: modules/devices/x86/x86_data.c:282 msgctxt "x86-flag" msgid "Nulling a selector preserves the base" msgstr "Anulando um seletor preserva a base" #. !/bug:swapgs_fence #: modules/devices/x86/x86_data.c:283 msgctxt "x86-flag" msgid "SWAPGS without input dep on GS" msgstr "SWAPGS sem dep de entrada em GS" #. !/bug:monitor #: modules/devices/x86/x86_data.c:284 msgctxt "x86-flag" msgid "IPI required to wake up remote CPU" msgstr "IPI necessário para ativar a CPU remota" #. !/bug:cpu_insecure & bug:cpu_meltdown #: modules/devices/x86/x86_data.c:286 modules/devices/x86/x86_data.c:287 msgctxt "x86-flag" msgid "" "CPU is affected by meltdown attack and needs kernel page table isolation" msgstr "" "A CPU é afetada pelo ataque Meltdown e precisa de isolamento da tabela de " "páginas do kernel" #. !/bug:spectre_v1 #: modules/devices/x86/x86_data.c:288 msgctxt "x86-flag" msgid "CPU is affected by Spectre variant 1 attack with conditional branches" msgstr "" "A CPU é afetada pelo ataque Spectre variante 1 ataque com ramificações " "condicionais" #. !/bug:spectre_v2 #: modules/devices/x86/x86_data.c:289 msgctxt "x86-flag" msgid "CPU is affected by Spectre variant 2 attack with indirect branches" msgstr "" "A CPU é afetada pelo Spectre variante 2 ataque com ramificações indiretas" #. !/bug:spec_store_bypass #: modules/devices/x86/x86_data.c:290 msgctxt "x86-flag" msgid "CPU is affected by speculative store bypass attack" msgstr "A CPU é afetada pelo ataque de desvio de armazenamento especulativo" #. !/bug:l1tf #: modules/devices/x86/x86_data.c:291 msgctxt "x86-flag" msgid "CPU is affected by L1 Terminal Fault" msgstr "CPU é afetado por L1 Terminal Fault" #. !/flag:pm:ts #: modules/devices/x86/x86_data.c:294 msgctxt "x86-flag" msgid "temperature sensor" msgstr "sensor de temperatura" #. !/flag:pm:fid #: modules/devices/x86/x86_data.c:295 msgctxt "x86-flag" msgid "frequency id control" msgstr "id de controlo de frequência" #. !/flag:pm:vid #: modules/devices/x86/x86_data.c:296 msgctxt "x86-flag" msgid "voltage id control" msgstr "id de controlo de voltagem" #. !/flag:pm:ttp #: modules/devices/x86/x86_data.c:297 msgctxt "x86-flag" msgid "thermal trip" msgstr "viagem térmica" #. !/flag:pm:tm #: modules/devices/x86/x86_data.c:298 msgctxt "x86-flag" msgid "hardware thermal control" msgstr "controlo térmico de hardware" #. !/flag:pm:stc #: modules/devices/x86/x86_data.c:299 msgctxt "x86-flag" msgid "software thermal control" msgstr "controlo térmico de software" #. !/flag:pm:100mhzsteps #: modules/devices/x86/x86_data.c:300 msgctxt "x86-flag" msgid "100 MHz multiplier control" msgstr "controlo de multiplicador 100 MHz" #. !/flag:pm:hwpstate #: modules/devices/x86/x86_data.c:301 msgctxt "x86-flag" msgid "hardware P-state control" msgstr "controlo P-state de hardware" #. !/flag:pm:cpb #: modules/devices/x86/x86_data.c:302 msgctxt "x86-flag" msgid "core performance boost" msgstr "impulsionar o desempenho do núcleo" #. !/flag:pm:eff_freq_ro #: modules/devices/x86/x86_data.c:303 msgctxt "x86-flag" msgid "Readonly aperf/mperf" msgstr "Somente leitura aperf/mperf" #. !/flag:pm:proc_feedback #: modules/devices/x86/x86_data.c:304 msgctxt "x86-flag" msgid "processor feedback interface" msgstr "interface de feedback do processador" #. !/flag:pm:acc_power #: modules/devices/x86/x86_data.c:305 msgctxt "x86-flag" msgid "accumulated power mechanism" msgstr "mecanismo de energia acumulada" #: modules/network.c:61 msgid "Interfaces" msgstr "Interfaces" #: modules/network.c:62 msgid "IP Connections" msgstr "Ligações IP" #: modules/network.c:63 msgid "Routing Table" msgstr "Tabela de roteamento" #: modules/network.c:64 modules/network.c:310 msgid "ARP Table" msgstr "Tabela ARP" #: modules/network.c:65 msgid "DNS Servers" msgstr "Servidor DNS" #: modules/network.c:66 msgid "Statistics" msgstr "Estatísticas" #: modules/network.c:67 msgid "Shared Directories" msgstr "Diretórios Compartilhados" #: modules/network.c:311 modules/network.c:333 modules/network.c:364 #: modules/network/net.c:495 msgid "IP Address" msgstr "Endereço de IP" #: modules/network.c:311 msgid "MAC Address" msgstr "Endereço MAC" #: modules/network.c:320 msgid "SAMBA" msgstr "SAMBA" #: modules/network.c:321 msgid "NFS" msgstr "NFS" #: modules/network.c:332 msgid "Name Servers" msgstr "Nome de Servidores" #: modules/network.c:347 msgid "Connections" msgstr "Ligações" #: modules/network.c:348 msgid "Local Address" msgstr "Endereço Local" #: modules/network.c:348 msgid "Foreign Address" msgstr "Endereço Exterior" #: modules/network.c:348 msgid "State" msgstr "Estado" #: modules/network.c:364 msgid "Sent" msgstr "Enviado" #: modules/network.c:364 msgid "Received" msgstr "Recebido" #: modules/network.c:380 msgid "IP routing table" msgstr "Tabela de roteamento IP" #: modules/network.c:381 msgid "Destination/Gateway" msgstr "Destino/Gateway" #: modules/network.c:381 modules/network/net.c:496 msgid "Mask" msgstr "Máscara" #: modules/network.c:409 msgid "Network" msgstr "Rede" #: modules/network.c:442 msgid "Gathers information about this computer's network connection" msgstr "Reúne informação sobre a ligação de rede deste computador" #: modules/network/net.c:74 msgctxt "wi-op-mode" msgid "Auto" msgstr "Automático" #: modules/network/net.c:75 msgctxt "wi-op-mode" msgid "Ad-Hoc" msgstr "Ad-Hoc" #: modules/network/net.c:76 msgctxt "wi-op-mode" msgid "Managed" msgstr "Gerenciado" #: modules/network/net.c:77 msgctxt "wi-op-mode" msgid "Master" msgstr "Principal" #: modules/network/net.c:78 msgctxt "wi-op-mode" msgid "Repeater" msgstr "Repetidor" #: modules/network/net.c:79 msgctxt "wi-op-mode" msgid "Secondary" msgstr "Secondário" #: modules/network/net.c:80 msgctxt "wi-op-mode" msgid "(Unknown)" msgstr "(Desconhecido)" #: modules/network/net.c:268 modules/network/net.c:288 #: modules/network/net.c:296 msgctxt "net-if-type" msgid "Ethernet" msgstr "Ethernet" #: modules/network/net.c:269 msgctxt "net-if-type" msgid "Loopback" msgstr "Loopback" #: modules/network/net.c:270 msgctxt "net-if-type" msgid "Point-to-Point" msgstr "Ponto-a-Ponto" #: modules/network/net.c:271 modules/network/net.c:272 #: modules/network/net.c:273 modules/network/net.c:274 #: modules/network/net.c:298 msgctxt "net-if-type" msgid "Wireless" msgstr "Rede sem fio" #: modules/network/net.c:275 msgctxt "net-if-type" msgid "Virtual Point-to-Point (TUN)" msgstr "Ponto-a-ponto virtual (TUN)" #: modules/network/net.c:276 msgctxt "net-if-type" msgid "Ethernet (TAP)" msgstr "Ethernet (TAP)" #: modules/network/net.c:277 msgctxt "net-if-type" msgid "Parallel Line Internet Protocol" msgstr "Protocolo de Internet de Linha Paralela" #: modules/network/net.c:278 msgctxt "net-if-type" msgid "Infrared" msgstr "Infravermelho" #: modules/network/net.c:279 modules/network/net.c:297 msgctxt "net-if-type" msgid "Serial Line Internet Protocol" msgstr "Protocolo de Internet de Linha Serial" #: modules/network/net.c:280 msgctxt "net-if-type" msgid "Integrated Services Digital Network" msgstr "Rede Digital de Serviços Integrados" #: modules/network/net.c:281 msgctxt "net-if-type" msgid "IPv6-over-IPv4 Tunnel" msgstr "Túnel IPv6-sobre-IPv4" #: modules/network/net.c:282 msgctxt "net-if-type" msgid "VMWare Virtual Network Interface (NAT)" msgstr "VMWare Interface de Rede Virtual (NAT)" #: modules/network/net.c:283 msgctxt "net-if-type" msgid "VMWare Virtual Network Interface" msgstr "Interface de Rede Virtual do VMWare" #: modules/network/net.c:284 msgctxt "net-if-type" msgid "Personal Area Network (PAN)" msgstr "Rede de Área Pessoal (PAN)" #: modules/network/net.c:285 msgctxt "net-if-type" msgid "Bluetooth" msgstr "Bluetooth" #: modules/network/net.c:286 msgctxt "net-if-type" msgid "Bridge Interface" msgstr "Interface Ponte" #: modules/network/net.c:287 msgctxt "net-if-type" msgid "Hamachi Virtual Personal Network" msgstr "Rede Pessoal Virtual do Hamachi" #: modules/network/net.c:289 msgctxt "net-if-type" msgid "Intermediate Functional Block" msgstr "Bloco Funcional Intermediário" #: modules/network/net.c:290 msgctxt "net-if-type" msgid "GRE Network Tunnel" msgstr "Túnel de Rede GRE" #: modules/network/net.c:291 msgctxt "net-if-type" msgid "Mesh Network" msgstr "Malha de Rede" #: modules/network/net.c:292 msgctxt "net-if-type" msgid "Wireless Master Interface" msgstr "Interface Principal Wireless" #: modules/network/net.c:293 msgctxt "net-if-type" msgid "VirtualBox Virtual Network Interface" msgstr "Interface de Rede Virtual do VirtualBox" #: modules/network/net.c:299 msgctxt "net-if-type" msgid "Wireless (WAN)" msgstr "Rede sem fio (WAN)" #: modules/network/net.c:301 msgctxt "net-if-type" msgid "(Unknown)" msgstr "(Desconhecido)" #: modules/network/net.c:364 modules/network/net.c:374 msgid "Network Interfaces" msgstr "Interfaces de Rede" #: modules/network/net.c:364 msgid "None Found" msgstr "Nenhum Encontrado" #: modules/network/net.c:431 msgid "Network Adapter Properties" msgstr "Propriedades do adaptador de rede" #: modules/network/net.c:432 msgid "Interface Type" msgstr "Tipo de interface" #: modules/network/net.c:433 msgid "Hardware Address (MAC)" msgstr "Endereço físico (MAC)" #: modules/network/net.c:437 msgid "MTU" msgstr "MTU" #: modules/network/net.c:439 msgid "Transfer Details" msgstr "Detalhes da transferência" #: modules/network/net.c:440 msgid "Bytes Received" msgstr "Bytes recebidos" #: modules/network/net.c:441 msgid "Bytes Sent" msgstr "Bytes Enviados" #: modules/network/net.c:458 modules/network/net.c:480 #: modules/network/net.c:481 msgid "dBm" msgstr "dBm" #: modules/network/net.c:458 msgid "mW" msgstr "mW" #: modules/network/net.c:472 msgid "Wireless Properties" msgstr "Propriedades da rede sem fios" #: modules/network/net.c:473 msgid "Network Name (SSID)" msgstr "Nome da Rede (SSID)" #: modules/network/net.c:474 msgid "Bit Rate" msgstr "Taxa de Bits" #: modules/network/net.c:475 msgid "Transmission Power" msgstr "Potência de transmissão" #: modules/network/net.c:478 msgid "Link Quality" msgstr "Qualidade da ligação" #: modules/network/net.c:479 msgid "Signal / Noise" msgstr "Sinal / Ruído" #: modules/network/net.c:494 msgid "Internet Protocol (IPv4)" msgstr "Protocolo de internet (IPv4)" #: modules/network/net.c:495 modules/network/net.c:496 #: modules/network/net.c:498 msgid "(Not set)" msgstr "(Não configurado)" #: modules/network/net.c:497 msgid "Broadcast Address" msgstr "Endereço de transmissão" #: includes/spd-decode.h:28 msgid "RAM" msgstr "" #, c-format #~ msgid "Module \"%s\" depends on module \"%s\", load it?" #~ msgstr "Modulo \"%s\" depende do módulo \"%s\", carregar?" #, c-format #~ msgid "Module \"%s\" depends on module \"%s\"." #~ msgstr "Modulo \"%s\" depende do módulo \"%s\"." #~ msgid "_Open..." #~ msgstr "_Abrir..." #~ msgid "Perl6 (VM)" #~ msgstr "Perl6 (VM)" #~ msgid "Perl6" #~ msgstr "Perl6" #~ msgid "C♯ (mcs)" #~ msgstr "C♯ (mcs)" #~ msgid "Spin/Flavor" #~ msgstr "Derivação" #~ msgid "Manufacturing Date (Week / Year)" #~ msgstr "Data de fabricação (semana / ano)" #~ msgid "_Copy to Clipboard" #~ msgstr "_Copiar para área de transferência" #~ msgid "Copy to clipboard" #~ msgstr "Copiar para área de transferência" #~ msgid "dmidecode utility available" #~ msgstr "dmidecode utilitário disponível" #~ msgid " ... and HardInfo2 running with superuser privileges" #~ msgstr " ... e HardInfo2 rodando com privilégios de superutilizador" #~ msgid "" #~ " ... or ee1004 module loaded and configured! " #~ "(for DDR4)" #~ msgstr "" #~ " ... ou ee1004 módulo carregado e configurado! (para DDR4)" #~ msgid "Memory information requires one or both of the following:" #~ msgstr "" #~ "As informações de memória precisam um ou ambos do seguinte:" #, c-format #~ msgid "" #~ "Written by %s\n" #~ "Licensed under %s" #~ msgstr "" #~ "Escrito por 1%s\n" #~ "Licenciado sob %s" #, c-format #~ msgid "No about information is associated with the %s module." #~ msgstr "Não há informação associada com o módulo%s ." #~ msgid "User Note" #~ msgstr "Nota de utilizador" #~ msgid "" #~ "This result is from an old version of HardInfo2. Results might not be " #~ "comparable to current version. Some details are missing." #~ msgstr "" #~ "Este resultado é de uma versão antiga do HardInfo2. Os resultados não " #~ "devem ser comparados com os da versão atual. Alguns detalhes estão " #~ "faltando." #~ msgid "Total Memory" #~ msgstr "Memoria total" #~ msgid "Free Memory" #~ msgstr "Memoria livre" #~ msgid "Cached Swap" #~ msgstr "Memória utilizada na swap" #~ msgid "High Memory" #~ msgstr "Memória alta" #~ msgid "Free High Memory" #~ msgstr "Memória alta livre" #~ msgid "Low Memory" #~ msgstr "Memória baixa" #~ msgid "Free Low Memory" #~ msgstr "Memória baixa Livre" #~ msgid "Virtual Memory" #~ msgstr "Memória virtual" #~ msgid "Free Virtual Memory" #~ msgstr "Memória virtual livre" #~ msgid "(Not available; Perhaps try running HardInfo2 as root.)" #~ msgstr "(Não disponível; Tente rodar o HardInfo2 como root.)" #~ msgid "DMI is not available; Perhaps try running HardInfo2 as root." #~ msgstr "O DMI não está disponível. Tente executar o HardInfo2 como root." #~ msgid "RISC-V Processor" #~ msgstr "Processador RISC-V" #, c-format #~ msgid "" #~ "Copyright (C) 2003-%d L. A. F. Pereira. See COPYING for details.\n" #~ "\n" #~ msgstr "" #~ "Direitos de autor (C) 2003-%d L. A. F. Pereira. Leia COPYING para mais " #~ "detalhes.\n" #~ "\n" #, c-format #~ msgid "" #~ "Compile-time options:\n" #~ " Release version: %s (%s)\n" #~ " BinReloc enabled: %s\n" #~ " Data prefix: %s\n" #~ " Library prefix: %s\n" #~ " Compiled for: %s\n" #~ msgstr "" #~ "Opções de tempo de compilação:\n" #~ " Versão de lançamento: %s (%s)\n" #~ " BinReloc ativado: %s\n" #~ " Prefixo de dados: %s\n" #~ " Prefixo da biblioteca: %s\n" #~ " Compilado por: %s\n" #, c-format #~ msgid "" #~ "Failed to find runtime data.\n" #~ "\n" #~ "• Is HardInfo2 correctly installed?\n" #~ "• See if %s and %s exists and you have read permission." #~ msgstr "" #~ "Falha ao localizar dados de tempo de execução.\n" #~ "\n" #~ "• O HardInfo2 está corretamente instalado?\n" #~ "• Veja se o %s e %s existe e se tem permissão de leitura." #, c-format #~ msgid "" #~ "Modules:\n" #~ "%-20s %-15s %-12s\n" #~ msgstr "" #~ "Módulos:\n" #~ "%-20s %-15s %-12s\n" #~ msgid "File Name" #~ msgstr "Nome do ficheiro" #, c-format #~ msgid "Unknown benchmark ``%s'' or benchmark.so not loaded" #~ msgstr "Benchmark desconhecido `` 1%s'' ou benchmark.so não foi carregado" #~ msgid "run benchmark; requires benchmark.so to be loaded" #~ msgstr "executar benchmark; requer benchmark.so a ser carregado" #~ msgid "note attached to benchmark results" #~ msgstr "nota anexada aos resultados de benchmark" #~ msgid "lists modules" #~ msgstr "lista os módulos" #~ msgid "specify module to load" #~ msgstr "especificar módulo para carregar" #~ msgid "automatically load module dependencies" #~ msgstr "carregar automaticamente as dependências do módulo" #~ msgid "run in XML-RPC server mode" #~ msgstr "executar no modo do servidor XML-RPC" #~ msgid "- System Profiler and Benchmark tool" #~ msgstr "- Ferramenta Profiler e Benchmark do sistema" #, c-format #~ msgid "" #~ "No module could be loaded. Check permissions on \"%s\" and try again." #~ msgstr "" #~ "Nenhum módulo pode ser carregado. Verifique as permissões on \"%s\" e " #~ "tente novamente." #~ msgid "" #~ "No module could be loaded. Please use hardinfo2 -l to list all available " #~ "modules and try again with a valid module list." #~ msgstr "" #~ "Nenhum módulo pode ser carregado. Por favor, use hardinfo2 -l para listar " #~ "todos os módulos disponíveis e tente novamente com uma lista de módulos " #~ "válida." #~ msgid "Author:" #~ msgstr "Autor:" #~ msgid "Contributors:" #~ msgstr "Contribuidores:" #~ msgid "Based on work by:" #~ msgstr "Baseado no trabalho de:" #~ msgid "MD5 implementation by Colin Plumb (see md5.c for details)" #~ msgstr "Implementação do MD5 por Colin Plumb (veja md5.c para detalhes)" #~ msgid "SHA1 implementation by Steve Reid (see sha1.c for details)" #~ msgstr "Implementação de SHA1 por Steve Reid (veja sha1.c para detalhes)" #~ msgid "Blowfish implementation by Paul Kocher (see blowfich.c for details)" #~ msgstr "" #~ "Implementação Blowfish por Paul Kocher (veja blowfich.c para detalhes)" #~ msgid "Raytracing benchmark by John Walker (see fbench.c for details)" #~ msgstr "Raytracing benchmark por John Walker (veja fbench.c para detalhes)" #~ msgid "FFT benchmark by Scott Robert Ladd (see fftbench.c for details)" #~ msgstr "" #~ "Referência de FFT por Scott Robert Ladd (veja fftbench.c para detalhes)" #~ msgid "Some code partly based on x86cpucaps by Osamu Kayasono" #~ msgstr "Algum código parcialmente baseado em x86cpucaps por Osamu Kayasono" #~ msgid "Vendor list based on GtkSysInfo by Pissens Sebastien" #~ msgstr "Lista de fornecedores baseada em GtkSysInfo por Pissens Sebastien" #~ msgid "DMI support based on code by Stewart Adam" #~ msgstr "Suporte DMI baseado em código por Stewart Adam" #~ msgid "SCSI support based on code by Pascal F. Martin" #~ msgstr "Suporte SCSI baseado em código por Pascal F. Martin" #~ msgid "Tango Project" #~ msgstr "Projeto Tango" #~ msgid "The GNOME Project" #~ msgstr "Projeto Gnome" #~ msgid "VMWare, Inc. (USB icon from VMWare Workstation 6)" #~ msgstr "VMWare, Inc. (Ícone USB do VMWare Workstation 6)" #~ msgid "System information and benchmark tool" #~ msgstr "Informações do sistema e ferramenta de benchmark" #~ msgid "" #~ "HardInfo2 is free software; you can redistribute it and/or modify it " #~ "under the terms of the GNU General Public License as published by the " #~ "Free Software Foundation, version 2.\n" #~ "\n" #~ "This program is distributed in the hope that it will be useful, but " #~ "WITHOUT ANY WARRANTY; without even the implied warranty of " #~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General " #~ "Public License for more details.\n" #~ "\n" #~ "You should have received a copy of the GNU General Public License along " #~ "with this program; if not, write to the Free Software Foundation, Inc., " #~ "51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA" #~ msgstr "" #~ "HardInfo2 é software livre; você pode redistribuí-lo e / ou modificá-lo " #~ "sob os termos da Licença Pública Geral GNU como publicada pela Free " #~ "Software Foundation, versão 2.\n" #~ "\n" #~ "Este programa é distribuído na esperança de que seja útil, mas SEM " #~ "QUALQUER GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou " #~ "ADEQUAÇÃO A UM DETERMINADO FIM. Veja a Licença Pública Geral GNU para " #~ "mais detalhes.\n" #~ "\n" #~ "Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com " #~ "este programa; se não, escreva para a Free Software Foundation, Inc., 51 " #~ "Franklin Street, Fifth Floor, Boston, MA 02110-1301 EUA" #~ msgid "translator-credits" #~ msgstr "Hugo Carvalho " #~ msgid "_Remote" #~ msgstr "_Remoto" #~ msgid "About _Modules" #~ msgstr "Acerda do_Módulos" #~ msgid "_Network Updater..." #~ msgstr "_Atualizador de rede ..." #, c-format #~ msgid "%s - System Information" #~ msgstr "%s - Informação do sistema" #~ msgid "System Information" #~ msgstr "Informações do sistema" #~ msgid "" #~ "Synchronize with Central Database\n" #~ "The following information may be synchronized with the HardInfo2 central " #~ "database." #~ msgstr "" #~ "Sincronizar com a base de dados\n" #~ "A informação seguinte pode ser sincronizada com a base de dados central " #~ "do HardInfo2." #~ msgid "" #~ "HardInfo2 was compiled without libsoup support. (Network Updater requires " #~ "it.)" #~ msgstr "" #~ "O HardInfo2 foi compilado sem suporte ao libsoup. (Atualizador de rede " #~ "requer isso.)" #, c-format #~ msgid "%s (error #%d)" #~ msgstr "%s (erro #%d)" #~ msgid "Could not parse XML-RPC response" #~ msgstr "Não foi possível analisar a resposta do XML-RPC" #, c-format #~ msgid "" #~ "Server says it supports API version %d, but this version of HardInfo2 " #~ "only supports API version %d." #~ msgstr "" #~ "Servidor diz que suporta a versão da API ,%d mas esta versão do HardInfo2 " #~ "suporta apenas a versão da API %d." #~ msgid "Contacting HardInfo2 Central Database" #~ msgstr "Entrando em contato com o banco de dados central do HardInfo2" #~ msgid "Cleaning up" #~ msgstr "Limpar" #, c-format #~ msgid "" #~ "Failed while performing \"%s\". Please file a bug report if this problem " #~ "persists. (Use the Help→Report bug option.)\n" #~ "\n" #~ "Details: %s" #~ msgstr "" #~ "Falha ao executar \"%s\". Por favor arquive um relatório de bug se este " #~ "problema persistir. (Use a opção Ajuda → Reportar erro.)\n" #~ "\n" #~ "Detalhes: %s" #, c-format #~ msgid "" #~ "Failed while performing \"%s\". Please file a bug report if this problem " #~ "persists. (Use the Help→Report bug option.)" #~ msgstr "" #~ "Falha ao executar \"%s\". Por favor arquive um relatório de bug se este " #~ "problema persistir. (Use a opção Ajuda → Reportar erro.)" #~ msgid "Network Updater" #~ msgstr "Atualizador de rede" #~ msgid "FPU Raytracing" #~ msgstr "Raytracing de FPU" #~ msgid "SysBench Memory" #~ msgstr "SysBench Memória" #~ msgid "Results in MiB/second. Higher is better." #~ msgstr "Resultados em MiB / segundo. Mais alto é melhor." #~ msgid "Results in seconds. Lower is better." #~ msgstr "Resultados em segundos. Menor é melhor." #~ msgid "Benchmarking. Please do not move your mouse or press any keys." #~ msgstr "A avaliar o desempenho. Não mova o rato ou prima qualquer tecla." #~ msgid "Cancel" #~ msgstr "Cancelar" #~ msgid "Update CPU feature database" #~ msgstr "Atualizar banco de dados de recursos da CPU" #~ msgid "" #~ "Any NVMe storage devices present are not listed.\n" #~ "udisksd is required for NVMe devices." #~ msgstr "" #~ "Quaisquer dispositivos de armazenamento NVMe não foram listados.\n" #~ "udisksd é requerido pelos dispositivos NVMe." #~ msgid " eeprom module loaded (for SDR, DDR, DDR2, DDR3)" #~ msgstr " eeprom módulo carregado (para SDR, DDR, DDR2, DDR3)" #~ msgid "Requires the fwupdmgr utility." #~ msgstr "Requer o utilitário fwupdmgr." #, c-format #~ msgid "Vendor=%s\n" #~ msgstr "Fabricante=%s\n" #, c-format #~ msgid "" #~ "[Self-monitoring (S.M.A.R.T.)]\n" #~ "Status=%s\n" #~ "Bad Sectors=%ld\n" #~ "Power on time=%d days %d hours\n" #~ "Temperature=%d°C\n" #~ msgstr "" #~ "[Auto-monitorização (S.M.A.R.T.)]\n" #~ "Estado=%s\n" #~ "Setores defeituosos=%ld\n" #~ "Tempo de atividade=%d dias %d horas\n" #~ "Temperatura=%d°C\n" #~ msgid "" #~ "[S.M.A.R.T. Attributes]\n" #~ "Attribute=Normalized Value / Worst / Threshold\n" #~ msgstr "" #~ "[Atributos S.M.A.R.T.]\n" #~ "Atributo=Valor Normalizado / Pior / Limite\n" #, c-format #~ msgid "(%d) %s=%s\n" #~ msgstr "(%d) %s=%s\n" #~ msgid "Thread" #~ msgstr "Thread" hardinfo2-hardinfo2-1331e88/po/pt_BR.po000066400000000000000000005103541474767047500175370ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # # Translators: # eltonfabricio10 , 2019 # Ezilei Correia dos Santos , 2019 # lucas batista silva , 2019 # LordDan Alkaiser , 2019 # Paulo Giovanni Pereira , 2019 # msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-10-06 01:42+0200\n" "PO-Revision-Date: 2019-08-08 04:36+0000\n" "Last-Translator: Paulo Giovanni Pereira , 2019\n" "Language-Team: Portuguese (Brazil) (https://www.transifex.com/biglinux-1/" "teams/102270/pt_BR/)\n" "Language: pt_BR\n" "X-Poedit-Basepath: ../\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "X-Generator: Poedit 2.2.3\n" #: hardinfo2/cpu_util.c:29 msgid "Little Endian" msgstr "Little Endian" #: hardinfo2/cpu_util.c:31 msgid "Big Endian" msgstr "Big Endian" #: hardinfo2/cpu_util.c:205 hardinfo2/cpu_util.c:216 modules/devices/gpu.c:262 msgid "Frequency Scaling" msgstr "Escala de frequência" #: hardinfo2/cpu_util.c:206 modules/devices/gpu.c:263 msgid "Minimum" msgstr "Mínimo" #: hardinfo2/cpu_util.c:206 hardinfo2/cpu_util.c:207 hardinfo2/cpu_util.c:208 #: hardinfo2/dt_util.c:590 modules/devices/gpu.c:263 modules/devices/gpu.c:264 msgid "kHz" msgstr "kHz" #: hardinfo2/cpu_util.c:207 modules/devices/gpu.c:264 msgid "Maximum" msgstr "Máximo" #: hardinfo2/cpu_util.c:208 msgid "Current" msgstr "Atual" #: hardinfo2/cpu_util.c:209 modules/devices/gpu.c:265 msgid "Transition Latency" msgstr "Latência de transição" #: hardinfo2/cpu_util.c:209 modules/devices/gpu.c:265 msgid "ns" msgstr "ns" #: hardinfo2/cpu_util.c:210 msgid "Governor" msgstr "Governador a" #: hardinfo2/cpu_util.c:211 hardinfo2/cpu_util.c:217 modules/devices.c:842 #: modules/devices/gpu.c:209 modules/devices/pci.c:148 #: modules/devices/usb.c:139 msgid "Driver" msgstr "Driver" #: hardinfo2/cpu_util.c:223 modules/computer.c:801 #: modules/devices/arm/processor.c:255 modules/devices/e2k/processor.c:178 #: modules/devices/x86/processor.c:283 modules/devices/x86/processor.c:387 #: modules/devices/x86/processor.c:525 msgid "(Not Available)" msgstr "(Indisponível)" #: hardinfo2/cpu_util.c:231 hardinfo2/cpu_util.c:233 msgid "Socket" msgstr "Soquete" #: hardinfo2/cpu_util.c:236 hardinfo2/cpu_util.c:238 modules/devices/gpu.c:205 #: modules/devices/gpu.c:295 msgid "Core" msgstr "Núcleo " #: hardinfo2/cpu_util.c:241 msgid "Book" msgstr "Livro" #: hardinfo2/cpu_util.c:243 msgid "Drawer" msgstr "Gaveta" #: hardinfo2/cpu_util.c:249 modules/devices/arm/processor.c:480 #: modules/devices/x86/processor.c:751 msgid "Topology" msgstr "Topologia" #: hardinfo2/cpu_util.c:250 msgid "ID" msgstr "ID" #: hardinfo2/dmi_util.c:25 msgid "BIOS Information" msgstr "Informação da BIOS" #: hardinfo2/dmi_util.c:26 modules/devices/parisc/processor.c:157 msgid "System" msgstr "Sistema" #: hardinfo2/dmi_util.c:27 msgid "Base Board" msgstr "Placa base" #: hardinfo2/dmi_util.c:28 modules/devices/dmi.c:54 msgid "Chassis" msgstr "Chassis" #: hardinfo2/dmi_util.c:29 modules/computer.c:580 modules/computer.c:1144 #: modules/devices/alpha/processor.c:87 modules/devices/arm/processor.c:340 #: modules/devices.c:99 modules/devices/e2k/processor.c:357 #: modules/devices/ia64/processor.c:159 #: modules/devices/loongarch64/processor.c:93 #: modules/devices/m68k/processor.c:83 modules/devices/mips/processor.c:74 #: modules/devices/parisc/processor.c:154 modules/devices/ppc/processor.c:157 #: modules/devices/riscv/processor.c:241 modules/devices/s390/processor.c:131 #: modules/devices/sh/processor.c:83 modules/devices/sparc/processor.c:74 #: modules/devices/x86/processor.c:647 msgid "Processor" msgstr "Processador" #: hardinfo2/dmi_util.c:30 msgid "Memory Controller" msgstr "Controlador de memória" #: hardinfo2/dmi_util.c:31 msgid "Memory Module" msgstr "Módulo de memória" #: hardinfo2/dmi_util.c:32 modules/devices/e2k/processor.c:366 #: modules/devices/parisc/processor.c:163 modules/devices/x86/processor.c:663 msgid "Cache" msgstr "Cache" #: hardinfo2/dmi_util.c:33 msgid "Port Connector" msgstr "Conector de porta" #: hardinfo2/dmi_util.c:34 msgid "System Slots" msgstr "Slots do sistema" #: hardinfo2/dmi_util.c:35 msgid "On Board Devices" msgstr "Dispositivos on board" #: hardinfo2/dmi_util.c:36 msgid "OEM Strings" msgstr "Cordas OEM" #: hardinfo2/dmi_util.c:37 msgid "System Configuration Options" msgstr "Opções de configuração do sistema" #: hardinfo2/dmi_util.c:38 msgid "BIOS Language" msgstr "Idioma da BIOS" #: hardinfo2/dmi_util.c:39 msgid "Group Associations" msgstr "Associações de grupo" #: hardinfo2/dmi_util.c:40 msgid "System Event Log" msgstr "Relatório de eventos do sistema" #: hardinfo2/dmi_util.c:41 msgid "Physical Memory Array" msgstr "Arranjo de memória física" #: hardinfo2/dmi_util.c:42 msgid "Memory Device" msgstr "Dispositivo de memória" #: hardinfo2/dmi_util.c:43 msgid "32-bit Memory Error" msgstr "Erro de memória 32-bit" #: hardinfo2/dmi_util.c:44 msgid "Memory Array Mapped Address" msgstr "Endereço do arranjo de memória mapeado" #: hardinfo2/dmi_util.c:45 msgid "Memory Device Mapped Address" msgstr "Endereço do dispositivo de memória mapeado" #: hardinfo2/dmi_util.c:46 msgid "Built-in Pointing Device" msgstr "Dispositivo apontador embarcado" #: hardinfo2/dmi_util.c:47 msgid "Portable Battery" msgstr "Bateria portátil" #: hardinfo2/dmi_util.c:48 msgid "System Reset" msgstr "Reinício do sistema" #: hardinfo2/dmi_util.c:49 msgid "Hardware Security" msgstr "Segurança do hardware" #: hardinfo2/dmi_util.c:50 msgid "System Power Controls" msgstr "Controles de energia do sistema" #: hardinfo2/dmi_util.c:51 msgid "Voltage Probe" msgstr "Sondagem de voltagem" #: hardinfo2/dmi_util.c:52 msgid "Cooling Device" msgstr "Dispositivo de resfriamento" #: hardinfo2/dmi_util.c:53 msgid "Temperature Probe" msgstr "Sondagem de temperatura" #: hardinfo2/dmi_util.c:54 msgid "Electrical Current Probe" msgstr "Sondagem elétrica atual" #: hardinfo2/dmi_util.c:55 msgid "Out-of-band Remote Access" msgstr "Acesso remoto fora da banda" #: hardinfo2/dmi_util.c:56 msgid "Boot Integrity Services" msgstr "Serviços de integridade de inicialização" #: hardinfo2/dmi_util.c:57 msgid "System Boot" msgstr "Inicialização do sistema" #: hardinfo2/dmi_util.c:58 msgid "64-bit Memory Error" msgstr "Erro de memória de 64 bits" #: hardinfo2/dmi_util.c:59 msgid "Management Device" msgstr "Dispositivo de gerenciamento" #: hardinfo2/dmi_util.c:60 msgid "Management Device Component" msgstr "Componente do dispositivo de gerenciamento" #: hardinfo2/dmi_util.c:61 msgid "Management Device Threshold Data" msgstr "Dados do limiar do dispositivo de gerenciamento" #: hardinfo2/dmi_util.c:62 msgid "Memory Channel" msgstr "Canal de memória" #: hardinfo2/dmi_util.c:63 msgid "IPMI Device" msgstr "Dispositivo IPMI" #: hardinfo2/dmi_util.c:64 msgid "Power Supply" msgstr "Suprimento de energia" #: hardinfo2/dmi_util.c:65 msgid "Additional Information" msgstr "Informações adicionais" #: hardinfo2/dmi_util.c:66 msgid "Onboard Device" msgstr "Dispositivo onboard" #: hardinfo2/dmi_util.c:233 msgid "Invalid chassis type (0)" msgstr "Tipo de chassi inválido (0)" #: hardinfo2/dmi_util.c:234 hardinfo2/dmi_util.c:235 msgid "Unknown chassis type" msgstr "Tipo de chassi desconhecido" #: hardinfo2/dmi_util.c:236 msgid "Desktop" msgstr "Área de Trabalho" #: hardinfo2/dmi_util.c:237 msgid "Low-profile Desktop" msgstr "Desktop de baixo perfil" #: hardinfo2/dmi_util.c:238 msgid "Pizza Box" msgstr "Caixa de pizza" #: hardinfo2/dmi_util.c:239 msgid "Mini Tower" msgstr "Mini torre " #: hardinfo2/dmi_util.c:240 msgid "Tower" msgstr "Torre " #: hardinfo2/dmi_util.c:241 msgid "Portable" msgstr "Portátil" #: hardinfo2/dmi_util.c:242 modules/computer.c:408 modules/computer.c:417 #: modules/computer.c:440 modules/computer.c:442 msgid "Laptop" msgstr "Computador portátil Laptop" #: hardinfo2/dmi_util.c:243 msgid "Notebook" msgstr "Notebook" #: hardinfo2/dmi_util.c:244 msgid "Handheld" msgstr "Handheld computador portátil de mão" #: hardinfo2/dmi_util.c:245 msgid "Docking Station" msgstr "Estação de ancoragem " #: hardinfo2/dmi_util.c:246 msgid "All-in-one" msgstr "All-in-one" #: hardinfo2/dmi_util.c:247 msgid "Subnotebook" msgstr "Subnotebook mini notebooks " #: hardinfo2/dmi_util.c:248 msgid "Space-saving" msgstr "Economia de espaço" #: hardinfo2/dmi_util.c:249 msgid "Lunch Box" msgstr "Lancheira" #: hardinfo2/dmi_util.c:250 msgid "Main Server Chassis" msgstr "Chassi do Servidor Principal" #: hardinfo2/dmi_util.c:251 msgid "Expansion Chassis" msgstr "Chassi de Expansão" #: hardinfo2/dmi_util.c:252 msgid "Sub Chassis" msgstr "Sub chassi" #: hardinfo2/dmi_util.c:253 msgid "Bus Expansion Chassis" msgstr "Chassi de Expansão de Ônibus" #: hardinfo2/dmi_util.c:254 msgid "Peripheral Chassis" msgstr "Chassi Periférico" #: hardinfo2/dmi_util.c:255 msgid "RAID Chassis" msgstr "Chassi RAID" #: hardinfo2/dmi_util.c:256 msgid "Rack Mount Chassis" msgstr "Chassis de Montagem em Rack" #: hardinfo2/dmi_util.c:257 msgid "Sealed-case PC" msgstr "PC com caixa selada" #: hardinfo2/dmi_util.c:258 msgid "Multi-system" msgstr "Multi-sistema" #: hardinfo2/dmi_util.c:259 msgid "CompactPCI" msgstr "PCI compacto" #: hardinfo2/dmi_util.c:260 msgid "AdvancedTCA" msgstr "TCA avançado" #: hardinfo2/dmi_util.c:261 msgid "Blade" msgstr "Palheta" #: hardinfo2/dmi_util.c:262 msgid "Blade Enclosing" msgstr "Juntada de palheta" #: hardinfo2/dmi_util.c:263 msgid "Tablet" msgstr "Tablet" #: hardinfo2/dmi_util.c:264 msgid "Convertible" msgstr "Conversível" #: hardinfo2/dmi_util.c:265 msgid "Detachable" msgstr "Destacável" #: hardinfo2/dmi_util.c:266 msgid "IoT Gateway" msgstr "Passagem IoT" #: hardinfo2/dmi_util.c:267 msgid "Embedded PC" msgstr "PC embutido" #: hardinfo2/dmi_util.c:268 msgid "Mini PC" msgstr "PC mini" #: hardinfo2/dmi_util.c:269 msgid "Stick PC" msgstr "PC colocado" #: hardinfo2/dt_util.c:1175 msgid "phandle Map" msgstr "Mapa de Phandle" #: hardinfo2/dt_util.c:1176 msgid "Alias Map" msgstr "Mapa de alias" #: hardinfo2/dt_util.c:1177 msgid "Symbol Map" msgstr "Mapa de símbolo" #. !/ %d will be latest year of copyright #: hardinfo2/hardinfo.c:104 #, c-format msgid "" "Copyright (C) 2003-2023 L. A. F. Pereira. 2024-%d Hardinfo2 Project.\n" "\n" msgstr "" #: hardinfo2/hardinfo.c:106 #, c-format msgid "" "Compile-time options:\n" " Release version: %s (%s)\n" " LibSoup version: %s\n" " Data : %s\n" " Library : %s\n" " Locale : %s\n" " Compiled for : %s\n" msgstr "" #: hardinfo2/hardinfo.c:114 msgid "3.0" msgstr "" #: hardinfo2/hardinfo.c:149 #, c-format msgid "Unknown benchmark ``%s''\n" msgstr "" #: hardinfo2/hardinfo.c:188 msgid "Don't know what to do. Exiting." msgstr "Não sabe o que fazer. Sair." #: hardinfo2/usb_util.c:293 modules/devices/devicetree.c:90 #: modules/devices/devicetree.c:91 modules/devices/monitors.c:411 #: modules/devices/storage.c:306 modules/devices/storage.c:328 msgid "(None)" msgstr "(Nenhum)" #: hardinfo2/util.c:100 modules/computer/uptime.c:54 #, c-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d dia" msgstr[1] "%d dias" #: hardinfo2/util.c:101 modules/computer/uptime.c:55 #, c-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d hora" msgstr[1] "%d horas" #: hardinfo2/util.c:102 modules/computer/uptime.c:56 #, c-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d minuto" msgstr[1] "%d minutos" #: hardinfo2/util.c:103 #, c-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d segundo" msgstr[1] "%d segundos" #: hardinfo2/util.c:124 #, c-format msgid "%.1f B" msgstr "%.1f B" #: hardinfo2/util.c:126 #, c-format msgid "%.1f KiB" msgstr "%.1f KiB" #: hardinfo2/util.c:128 #, c-format msgid "%.1f MiB" msgstr "%.1f MiB" #: hardinfo2/util.c:130 #, c-format msgid "%.1f GiB" msgstr "%.1f GiB" #: hardinfo2/util.c:132 #, c-format msgid "%.1f TiB" msgstr "%.1f TiB" #: hardinfo2/util.c:134 #, c-format msgid "%.1f PiB" msgstr "1%.1f PiB " #: hardinfo2/util.c:283 msgid "Error" msgstr "Erro" #: hardinfo2/util.c:283 hardinfo2/util.c:299 msgid "Warning" msgstr "Aviso" #: hardinfo2/util.c:298 msgid "Fatal Error" msgstr "Erro fatal" #: hardinfo2/util.c:325 msgid "do not print status messages to standard output" msgstr "" #: hardinfo2/util.c:331 msgid "creates a report and prints to standard output" msgstr "cria um relatório e imprimir por saída padrão" #: hardinfo2/util.c:337 msgid "chooses a report format ([text], html)" msgstr "escolhe um formato de relatório ([texto], html)" #: hardinfo2/util.c:343 msgid "run single benchmark eg. -b 'FPU FFT' (Default all Benchmarks runs)" msgstr "" #: hardinfo2/util.c:349 msgid "" "user note attached to benchmark results. (updating/synchronize with server)" msgstr "" #: hardinfo2/util.c:355 msgid "benchmark result format ([short], conf, shell)" msgstr "formato de resultado de benchmark ([short], conf, shell)" #: hardinfo2/util.c:361 msgid "" "maximum number of benchmark results to include (-1 for no limit, default is " "50)" msgstr "" "número máximo de resultados de benchmark para incluir\n" "(-1 para sem limite, padrão é 50)" #: hardinfo2/util.c:367 msgid "shows program version and quit" msgstr "executar no modo do servidor XML-RPC" #: hardinfo2/util.c:373 msgid "do not run benchmarks" msgstr "não execute benchmarks" #: hardinfo2/util.c:379 msgid "show all details" msgstr "mostrar todos os detalhes" #: hardinfo2/util.c:384 msgid "- System Information and Benchmark" msgstr "" #: hardinfo2/util.c:394 #, c-format msgid "" "Unrecognized arguments.\n" "Try ``%s --help'' for more information.\n" msgstr "" "Argumentos não reconhecidos.\n" "Tentando ``%s --Ajuda' Para mais informação\n" #: hardinfo2/util.c:869 #, c-format msgid "Scanning: %s..." msgstr "Escaneando: %s..." #: hardinfo2/util.c:879 shell/shell.c:303 shell/shell.c:925 shell/shell.c:2163 msgid "Done." msgstr "Feito." #: hardinfo2/vendor.c:213 msgid "Update vendor list" msgstr "" #: hardinfo2/vendor.c:218 msgid "Check Update Version" msgstr "" #: hardinfo2/vendor.c:391 modules/computer.c:630 modules/computer.c:829 #: modules/computer/os.c:196 modules/computer/os.c:378 #: modules/computer/os.c:413 modules/computer/os.c:741 #: modules/computer/os.c:802 modules/devices.c:464 modules/devices.c:614 #: modules/devices/firmware.c:149 modules/devices/printers.c:106 #: modules/devices/printers.c:113 modules/devices/printers.c:123 #: modules/devices/printers.c:138 modules/devices/printers.c:147 #: modules/devices/printers.c:256 modules/devices/spd-decode.c:364 #: modules/devices/usb.c:149 msgid "Unknown" msgstr "Desconhecido" #: shell/callbacks.c:457 shell/shell.c:522 msgid "System Information and Benchmark" msgstr "" #: shell/callbacks.c:462 msgid "" "HardInfo2 is free software; you can redistribute it and/or modify it under " "the terms of the GNU General Public License as published by the Free " "Software Foundation, version 2 or later.\n" "\n" "This program is distributed in the hope that it will be useful, but WITHOUT " "ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " "FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " "more details.\n" "\n" "You should have received a copy of the GNU General Public License along with " "this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin St, Fifth Floor, Boston, MA 02110-1301 USA" msgstr "" #: shell/menu.c:43 msgid "_Information" msgstr "_Informação " #: shell/menu.c:44 msgid "_View" msgstr "_Vista View" #: shell/menu.c:46 msgid "_Theme" msgstr "" #: shell/menu.c:48 msgid "_Help" msgstr "_Ajuda" #: shell/menu.c:52 msgid "Generate _Report" msgstr "Gerar_relatório" #: shell/menu.c:53 msgid "Generates a report with detailed system information" msgstr "" #: shell/menu.c:57 shell/syncmanager.c:692 msgid "Synchronize" msgstr "" #: shell/menu.c:58 msgid "Send benchmark results and receive updated data from the network" msgstr "" #: shell/menu.c:73 msgid "_Refresh" msgstr "_Atualizar" #: shell/menu.c:78 msgid "_Open HardInfo2 Web Site" msgstr "_Abrir site do HardInfo2" #: shell/menu.c:83 msgid "_Report bug" msgstr "_Reportar bug" #: shell/menu.c:88 msgid "_About HardInfo2" msgstr "_Sobre Hardinfo" #: shell/menu.c:89 msgid "Displays program version information" msgstr "Exibe informações de versão do programa" #: shell/menu.c:93 msgid "_Quit" msgstr "_Sair" #: shell/menu.c:100 msgid "_Side Pane" msgstr "_Painel lateral" #: shell/menu.c:101 msgid "Toggles side pane visibility" msgstr "Alterna a visibilidade do painel lateral" #: shell/menu.c:104 msgid "_Toolbar" msgstr "_Barra de ferramentas" #: shell/menu.c:108 msgid "Synchronize on startup" msgstr "" #: shell/menu.c:113 msgid "Disable Theme" msgstr "" #: shell/menu.c:117 msgid "Theme Motherboard" msgstr "" #: shell/menu.c:121 msgid "Theme Graffiti" msgstr "" #: shell/menu.c:125 msgid "Theme Anime PC" msgstr "" #: shell/menu.c:129 msgid "Theme Tux Star" msgstr "" #: shell/menu.c:133 msgid "Theme PixArt" msgstr "" #: shell/menu.c:137 msgid "Theme Silicon" msgstr "" #: shell/report.c:772 shell/report.c:780 msgid "Save File" msgstr "Salvar arquivo" #: shell/report.c:775 shell/report.c:1252 shell/syncmanager.c:780 msgid "_Cancel" msgstr "_Cancelar" #: shell/report.c:777 msgid "_Save" msgstr "_Salvar" #: shell/report.c:952 msgid "Cannot create ReportContext. Programming bug?" msgstr "Não é possível criar ReportContext. Erro de programação?" #: shell/report.c:972 msgid "Open the report with your web browser?" msgstr "Abrir o relatório com o seu navegador da web?" #: shell/report.c:975 msgid "_No" msgstr "_Não" #: shell/report.c:976 msgid "_Open" msgstr "_Abrir" #: shell/report.c:1007 msgid "Generating report..." msgstr "Gerando relatório ..." #: shell/report.c:1017 msgid "Report saved." msgstr "Relatório salvo." #: shell/report.c:1019 msgid "Error while creating the report." msgstr "Erro ao criar o relatório." #: shell/report.c:1121 msgid "Generate Report" msgstr "Gerar relatório" #: shell/report.c:1146 msgid "" "Generate Report\n" "Please choose the information that you wish to view in your report:" msgstr "" "Gerar relatório\n" "Por favor, escolha as informações que você deseja visualizar em seu " "relatório:" #: shell/report.c:1218 msgid "Select _None" msgstr "Selecionar_nenhum" #: shell/report.c:1229 msgid "Select _All" msgstr "Selecionar_todos" #: shell/report.c:1262 msgid "_Generate" msgstr "_Gerar" #: shell/shell.c:517 #, c-format msgid "%s - System Information and Benchmark" msgstr "" #: shell/shell.c:910 msgid "Loading modules..." msgstr "Carregando módulos ..." #: shell/shell.c:1681 msgid "URL" msgstr "" #: shell/shell.c:1688 msgid "Support URL" msgstr "" #: shell/shell.c:1699 msgid "Wikipedia" msgstr "" #: shell/shell.c:2033 #, c-format msgid "%s → Summary" msgstr "%s → Resumo" #: shell/shell.c:2139 msgid "Updating..." msgstr "Atualizando..." #: shell/syncmanager.c:80 msgid "" "Synchronize with Central Database\n" "The following information may be synchronized\n" "with the HardInfo2 central database." msgstr "" "sincronizar com o banco de dados\n" "As informações a seguir podem ser sincronizadas\n" "com o banco de dados central do HardInfo2." #: shell/syncmanager.c:84 msgid "" "Synchronizing\n" "This may take some time." msgstr "" "Sincronizando\n" "Isto Pode demorar um pouco" #: shell/syncmanager.c:546 msgid "(canceled)" msgstr "(cancelado)" #: shell/syncmanager.c:562 msgid "(failed)" msgstr "(falhou)" #: shell/syncmanager.c:658 modules/benchmark.c:932 msgid "Send benchmark results" msgstr "Enviar resultados de benchmark" #: shell/syncmanager.c:767 msgid "Privacy Policy" msgstr "" #: shell/syncmanager.c:789 msgid "_Synchronize" msgstr "_Sincronizar" #: shell/syncmanager.c:838 #, c-format msgid "Synchronizing: %s" msgstr "" #: modules/benchmark/benches.c:136 msgid "CPU Blowfish (Single-thread)" msgstr "CPU Blowfish (Processamento unitário)" #: modules/benchmark/benches.c:144 msgid "CPU Blowfish (Multi-thread)" msgstr "CPU Blowfish (Processamento múltiplo)" #: modules/benchmark/benches.c:152 msgid "CPU Blowfish (Multi-core)" msgstr "CPU Blowfish (Núcleo múltiplo)" #: modules/benchmark/benches.c:160 msgid "CPU Zlib" msgstr "CPU Zlib" #: modules/benchmark/benches.c:168 msgid "CPU CryptoHash" msgstr "CPU CryptoHash" #: modules/benchmark/benches.c:176 msgid "CPU Fibonacci" msgstr "CPU Fibonacci" #: modules/benchmark/benches.c:184 msgid "CPU N-Queens" msgstr "CPU N-Queens" #: modules/benchmark/benches.c:192 msgid "FPU FFT" msgstr "FPU FFT" #: modules/benchmark/benches.c:200 msgid "FPU Raytracing (Single-thread)" msgstr "" #: modules/benchmark/benches.c:208 msgid "Internal Network Speed" msgstr "" #: modules/benchmark/benches.c:216 msgid "SysBench CPU (Single-thread)" msgstr "SysBench CPU (Processamento unitário)" #: modules/benchmark/benches.c:224 msgid "SysBench CPU (Multi-thread)" msgstr "SysBench (Processamento múltiplo)" #: modules/benchmark/benches.c:232 msgid "SysBench CPU (Four threads)" msgstr "" #: modules/benchmark/benches.c:240 msgid "SysBench Memory (Single-thread)" msgstr "" #: modules/benchmark/benches.c:248 msgid "SysBench Memory (Two threads)" msgstr "" #: modules/benchmark/benches.c:256 msgid "SysBench Memory (Quad threads)" msgstr "" #: modules/benchmark/benches.c:264 msgid "SysBench Memory (Multi-thread)" msgstr "" #: modules/benchmark/benches.c:272 msgid "GPU Drawing" msgstr "Desenho de GPU" #: modules/benchmark/benches.c:281 msgid "GPU OpenGL Drawing" msgstr "" #: modules/benchmark/benches.c:290 msgid "Storage R/W Speed" msgstr "" #: modules/benchmark/benches.c:304 msgid "" "Alexey Kopytov's sysbench is required.\n" "Results in events/second. Higher is better." msgstr "" "sysbench de Alexey Kopytov é requerido.\n" "Resultados em eventos/segundo. Maior é melhor." #: modules/benchmark/benches.c:310 msgid "" "Alexey Kopytov's sysbench is required.\n" "Results in MiB/second. Higher is better." msgstr "" "sysbench de Alexey Kopytov é requerido.\n" "Resultados em MiB/segundo. Maior é melhor." #: modules/benchmark/benches.c:313 msgid "" "iperf3 is required.\n" "Results in Gbits/s. Higher is better." msgstr "" #: modules/benchmark/benches.c:324 msgid "Results in HIMarks. Higher is better." msgstr "Resultados em HIMarks. Mais alto é melhor." #: modules/benchmark/benches.c:326 msgid "" "Results in HIMarks. Higher is better.\n" "Many Desktop Environments only uses software." msgstr "" #: modules/benchmark/benches.c:329 msgid "Results in MB/s. Higher is better." msgstr "" #: modules/benchmark/benches.c:332 msgid "Results in FPS. Higher is better." msgstr "" #. !/ Used for an unknown value. Having it in only one place cleans up the .po #. * line references #: modules/benchmark/bench_results.c:34 modules/computer.c:41 #: modules/computer/display.c:40 modules/computer/display.c:57 #: modules/computer/os.c:400 modules/computer/os.c:457 modules/devices.c:596 #: modules/devices/dmi_memory.c:699 modules/devices/dmi_memory.c:835 #: modules/devices/gpu.c:40 modules/devices/gpu.c:58 modules/devices/gpu.c:122 #: modules/devices/gpu.c:130 modules/devices/gpu.c:210 #: modules/devices/gpu.c:211 modules/devices/gpu.c:230 #: modules/devices/inputdevices.c:51 modules/devices/monitors.c:28 #: modules/devices/monitors.c:29 modules/devices/monitors.c:155 #: modules/devices/monitors.c:164 modules/devices/pci.c:25 #: modules/devices/pci.c:149 modules/devices/pci.c:150 #: modules/devices/spd-decode.c:358 modules/devices/spd-decode.c:359 #: modules/devices/spd-decode.c:362 modules/devices/spd-decode.c:363 #: modules/devices/spd-decode.c:584 modules/devices/spd-decode.c:899 #: modules/devices/spd-decode.c:900 modules/devices/spd-decode.c:1111 #: modules/devices/spd-decode.c:1350 modules/devices/storage.c:27 #: modules/devices/storage.c:307 modules/devices/storage.c:336 #: modules/devices/storage.c:431 modules/devices/usb.c:29 #: modules/network/net.c:460 includes/cpu_util.h:11 includes/spd-decode.h:24 #: includes/spd-decode.h:25 msgid "(Unknown)" msgstr "(Desconhecido)" #: modules/benchmark/bench_results.c:261 modules/devices/alpha/processor.c:90 #: modules/devices/arm/processor.c:289 modules/devices/arm/processor.c:302 #: modules/devices/arm/processor.c:344 modules/devices/arm/processor.c:509 #: modules/devices.c:430 modules/devices.c:438 modules/devices.c:466 #: modules/devices/e2k/processor.c:363 modules/devices/e2k/processor.c:400 #: modules/devices/gpu.c:125 modules/devices/gpu.c:127 #: modules/devices/gpu.c:133 modules/devices/gpu.c:135 #: modules/devices/gpu.c:233 modules/devices/gpu.c:235 #: modules/devices/ia64/processor.c:167 modules/devices/ia64/processor.c:196 #: modules/devices/loongarch64/processor.c:98 #: modules/devices/m68k/processor.c:87 modules/devices/mips/processor.c:77 #: modules/devices/parisc/processor.c:158 #: modules/devices/parisc/processor.c:191 modules/devices/ppc/processor.c:160 #: modules/devices/ppc/processor.c:187 modules/devices/riscv/processor.c:246 #: modules/devices/riscv/processor.c:276 modules/devices/s390/processor.c:160 #: modules/devices/sh/processor.c:87 modules/devices/sh/processor.c:88 #: modules/devices/sh/processor.c:89 modules/devices/x86/processor.c:317 #: modules/devices/x86/processor.c:330 modules/devices/x86/processor.c:658 #: modules/devices/x86/processor.c:790 msgid "MHz" msgstr "MHz" #: modules/benchmark/bench_results.c:293 modules/devices.c:177 #, c-format msgid "%d physical processor" msgid_plural "%d physical processors" msgstr[0] "%d processador físico" msgstr[1] "%d processadores físicos" #: modules/benchmark/bench_results.c:294 modules/devices.c:178 #, c-format msgid "%d core" msgid_plural "%d cores" msgstr[0] "%d núcleo" msgstr[1] " %d núcleos" #: modules/benchmark/bench_results.c:295 modules/devices.c:179 #, c-format msgid "%d thread" msgid_plural "%d threads" msgstr[0] "%d thread" msgstr[1] "%d threads" #: modules/benchmark/bench_results.c:300 modules/devices.c:181 #, c-format msgid "%d NUMA node" msgid_plural "%d NUMA nodes" msgstr[0] "" msgstr[1] "" #. !/NP procs; NC cores across NN nodes; NT threads #: modules/benchmark/bench_results.c:304 #, c-format msgid "%s; %s across %s; %s" msgstr "" #. !/NP procs; NC cores; NT threads #: modules/benchmark/bench_results.c:309 #, c-format msgid "%s; %s; %s" msgstr "%s; %s; %s" #: modules/benchmark/bench_results.c:383 modules/benchmark/bench_results.c:508 #: modules/computer.c:1041 modules/devices/dmi_memory.c:639 #: modules/devices/dmi_memory.c:649 modules/devices/dmi_memory.c:703 #: modules/devices/dmi_memory.c:791 modules/devices/dmi_memory.c:837 #: modules/devices/dmi_memory.c:920 modules/devices/spd-decode.c:1354 #: modules/network/net.c:416 modules/network/net.c:440 #: modules/network/net.c:441 msgid "MiB" msgstr "MiB" #: modules/benchmark/bench_results.c:388 modules/benchmark/bench_results.c:507 msgid "kiB" msgstr "kIB" #: modules/benchmark/bench_results.c:396 modules/benchmark/bench_results.c:452 #, c-format msgid "%d-bit" msgstr "" #: modules/benchmark/bench_results.c:417 modules/benchmark/bench_results.c:482 msgid "Benchmark Result" msgstr "Resultado de referência" #: modules/benchmark/bench_results.c:417 modules/benchmark/bench_results.c:482 msgid "Threads" msgstr "Tópicos" #: modules/benchmark/bench_results.c:418 modules/benchmark/bench_results.c:484 msgid "Elapsed Time" msgstr "Tempo gasto" #: modules/benchmark/bench_results.c:418 modules/benchmark/bench_results.c:484 msgid "seconds" msgstr "segundos" #: modules/benchmark/bench_results.c:419 modules/computer/languages.c:101 #: modules/devices/arm/processor.c:354 modules/devices/e2k/processor.c:362 #: modules/devices/gpu.c:203 modules/devices/ia64/processor.c:166 #: modules/devices/loongarch64/processor.c:97 modules/devices/pci.c:146 #: modules/devices/ppc/processor.c:159 msgid "Revision" msgstr "Revisão" #: modules/benchmark/bench_results.c:420 modules/benchmark/bench_results.c:485 msgid "Extra Information" msgstr "Informação extra" #: modules/benchmark/bench_results.c:422 modules/benchmark/bench_results.c:487 msgid "Note" msgstr "Nota" #: modules/benchmark/bench_results.c:423 modules/benchmark/bench_results.c:488 msgid "" "This result is from an old version of HardInfo. Results might not be " "comparable to current version. Some details are missing." msgstr "" #: modules/benchmark/bench_results.c:427 modules/benchmark/bench_results.c:492 #: modules/devices/devicetree/pmac_data.c:81 modules/devices/sh/processor.c:85 msgid "Machine" msgstr "Máquina " #: modules/benchmark/bench_results.c:428 modules/benchmark/bench_results.c:492 #: modules/devices/devicetree.c:207 modules/devices/dmi.c:48 msgid "Board" msgstr "Placa" #: modules/benchmark/bench_results.c:429 modules/benchmark/bench_results.c:494 #: modules/computer.c:583 msgid "Machine Type" msgstr "Tipo de machina" #: modules/benchmark/bench_results.c:430 modules/benchmark/bench_results.c:497 msgid "CPU Name" msgstr "Nome da CPU" #: modules/benchmark/bench_results.c:431 modules/benchmark/bench_results.c:498 msgid "CPU Description" msgstr "Descrição da CPU" #: modules/benchmark/bench_results.c:432 modules/benchmark/bench_results.c:500 #: modules/benchmark.c:601 msgid "CPU Config" msgstr "Configurações da CPU" #: modules/benchmark/bench_results.c:433 modules/benchmark/bench_results.c:500 msgid "Threads Available" msgstr "Tópicos disponíveis" #: modules/benchmark/bench_results.c:434 modules/benchmark/bench_results.c:501 #: modules/benchmark.c:579 msgid "GPU" msgstr "GPU" #: modules/benchmark/bench_results.c:435 modules/benchmark/bench_results.c:503 #: modules/computer.c:595 msgid "OpenGL Renderer" msgstr "Renderizador OpenGL" #: modules/benchmark/bench_results.c:436 modules/benchmark/bench_results.c:505 #: modules/benchmark.c:590 modules/computer.c:1145 modules/devices.c:109 msgid "Storage" msgstr "Armazenamento" #: modules/benchmark/bench_results.c:437 modules/benchmark/bench_results.c:507 #: modules/computer.c:140 modules/computer.c:582 modules/computer.c:1144 #: modules/devices/gpu.c:206 msgid "Memory" msgstr "Memória" #: modules/benchmark/bench_results.c:438 modules/benchmark/bench_results.c:509 msgid "Pointer Size" msgstr "" #: modules/benchmark/bench_results.c:482 msgid "Benchmark" msgstr "Referência" #: modules/benchmark/bench_results.c:483 modules/devices/dmi_memory.c:859 #: modules/devices/firmware.c:245 modules/devices/monitors.c:495 #: modules/devices/x86/processor.c:692 msgid "Result" msgstr "Resultado " #: modules/benchmark/bench_results.c:495 msgid "Linux Kernel" msgstr "" #: modules/benchmark/bench_results.c:496 msgid "Linux OS" msgstr "" #: modules/benchmark/bench_results.c:507 msgid "Physical Memory" msgstr "" #: modules/benchmark/bench_results.c:511 msgid "Handles" msgstr "Alças" #: modules/benchmark/bench_results.c:511 msgid "mid" msgstr "Mid" #: modules/benchmark/bench_results.c:512 msgid "cfg_val" msgstr "cfg_val" #: modules/benchmark.c:352 msgid "This Machine" msgstr "" #: modules/benchmark.c:578 modules/benchmark.c:589 modules/benchmark.c:601 msgid "Results" msgstr "Resultados" #: modules/benchmark.c:602 modules/devices/sparc/processor.c:75 msgid "CPU" msgstr "CPU" #: modules/benchmark.c:678 #, c-format msgid "Benchmarking: %s." msgstr "avaliação comparativa Benchmarking: %s." #: modules/benchmark.c:685 msgid "Stop" msgstr "" #: modules/benchmark.c:697 msgid "" "Please do not move your mouse\n" "or press any keys." msgstr "" #: modules/benchmark.c:767 msgid "Benchmarks" msgstr "Benchmarks" #: modules/benchmark.c:777 msgid "Perform tasks and compare with other systems" msgstr "Execute tarefas e compare com outros sistemas" #: modules/benchmark.c:938 msgid "Receive benchmark results" msgstr "Receber resultados de benchmark" #: modules/computer/alsa.c:26 modules/computer.c:599 msgid "Audio Devices" msgstr "Dispositivos de áudio" #: modules/computer/alsa.c:34 msgid "Audio Adapter" msgstr "Adaptador de áudio" #: modules/computer.c:96 modules/devices/firmware.c:74 msgid "Summary" msgstr "Resumo" #: modules/computer.c:97 modules/computer.c:585 modules/computer.c:1143 msgid "Operating System" msgstr "Sistema operacional" #: modules/computer.c:98 msgid "Security" msgstr "Segurança" #: modules/computer.c:99 modules/devices/gpu.c:211 modules/devices/pci.c:150 msgid "Kernel Modules" msgstr "Módulos do kernel" #: modules/computer.c:100 modules/computer.c:741 msgid "Boots" msgstr "Boots" #: modules/computer.c:101 msgid "Languages" msgstr "Idiomas" #: modules/computer.c:102 msgid "Memory Usage" msgstr "Uso de memória" #: modules/computer.c:103 msgid "Filesystems" msgstr "Sistema de arquivos" #: modules/computer.c:104 modules/computer.c:590 msgid "Display" msgstr "Exibir" #: modules/computer.c:105 modules/computer/environment.c:37 msgid "Environment Variables" msgstr "variáveis de Meio Ambiente" #: modules/computer.c:107 modules/computer.c:109 msgid "Development" msgstr "Desenvolvimento" #: modules/computer.c:111 modules/computer.c:884 msgid "Users" msgstr "Usuários" #: modules/computer.c:112 msgid "Groups" msgstr "Grupos" #: modules/computer.c:142 #, c-format msgid "%dMB (%dMB used)" msgstr "%dMB (%dMB usado)" #: modules/computer.c:144 modules/computer.c:646 msgid "Uptime" msgstr "Tempo de atividade" #: modules/computer.c:146 modules/computer.c:587 msgid "Date/Time" msgstr "Data hora" #: modules/computer.c:151 modules/computer.c:647 msgid "Load Average" msgstr "Carga média" #: modules/computer.c:266 msgid "Scripting Languages" msgstr "Idiomas de script" #: modules/computer.c:267 msgid "Gambas3 (gbr3)" msgstr "Gambas3 (gbr3)" #: modules/computer.c:268 msgid "Python (default)" msgstr "Python (padrão)" #: modules/computer.c:269 msgid "Python2" msgstr "Python2" #: modules/computer.c:270 msgid "Python3" msgstr "Python3" #: modules/computer.c:271 msgid "Perl" msgstr "Perl" #: modules/computer.c:272 msgid "Rakudo (Perl6)" msgstr "" #: modules/computer.c:273 msgid "PHP" msgstr "PHP" #: modules/computer.c:274 msgid "Ruby" msgstr "Rubi" #: modules/computer.c:275 msgid "Bash" msgstr "Bash Bater " #: modules/computer.c:276 msgid "JavaScript (Node.js)" msgstr "JavaScript (Node.js)" #: modules/computer.c:277 msgid "awk" msgstr "awk" #: modules/computer.c:278 msgid "Compilers" msgstr "Compiladores" #: modules/computer.c:279 msgid "C (GCC)" msgstr "C (GCC)" #: modules/computer.c:280 msgid "C (Clang)" msgstr "C (Clang)" #: modules/computer.c:281 msgid "D (dmd)" msgstr "D (dmd)" #: modules/computer.c:282 msgid "Gambas3 (gbc3)" msgstr "Gambas3 (gbc3)" #: modules/computer.c:283 msgid "Java" msgstr "Java" #: modules/computer.c:284 msgid ".NET" msgstr "" #: modules/computer.c:285 msgid "Vala" msgstr "Vala" #: modules/computer.c:286 msgid "Haskell (GHC)" msgstr "Haskell (GHC)" #: modules/computer.c:287 msgid "FreePascal" msgstr "FreePascal" #: modules/computer.c:288 msgid "Go" msgstr "Vai" #: modules/computer.c:289 msgid "Rust" msgstr "Rust" #: modules/computer.c:290 msgid "Tools" msgstr "Ferramentas" #: modules/computer.c:291 msgid "make" msgstr "fazer" #: modules/computer.c:292 msgid "ninja" msgstr "ninja" #: modules/computer.c:293 msgid "GDB" msgstr "GDB" #: modules/computer.c:294 msgid "LLDB" msgstr "LLDB" #: modules/computer.c:295 msgid "strace" msgstr "Strace" #: modules/computer.c:296 msgid "valgrind" msgstr "Valgrind" #: modules/computer.c:297 msgid "QMake" msgstr "Qmake" #: modules/computer.c:298 msgid "CMake" msgstr "Cmake" #: modules/computer.c:299 msgid "Gambas3 IDE" msgstr "IDE Gambas3" #: modules/computer.c:300 msgid "Radare2" msgstr "Radare2" #: modules/computer.c:301 msgid "ltrace" msgstr "ltrace" #: modules/computer.c:302 msgid "Powershell" msgstr "" #: modules/computer.c:343 msgid "Not found" msgstr "Não encontrado" #: modules/computer.c:348 #, c-format msgid "Detecting version: %s" msgstr "Detectando a versão: %s" #: modules/computer.c:366 msgid "Program" msgstr "Programa" #: modules/computer.c:366 modules/computer.c:629 modules/computer.c:631 #: modules/computer.c:807 modules/computer/modules.c:372 #: modules/devices/dmi.c:41 modules/devices/dmi.c:47 modules/devices/dmi.c:51 #: modules/devices/dmi.c:57 modules/devices/firmware.c:75 #: modules/devices/inputdevices.c:146 modules/devices/monitors.c:409 msgid "Version" msgstr "Versão" #: modules/computer.c:385 msgid "Field" msgstr "Campo " #: modules/computer.c:385 modules/computer.c:730 modules/computer/modules.c:370 #: modules/computer/modules.c:371 modules/devices/arm/processor.c:479 msgid "Description" msgstr "Descrição" #: modules/computer.c:385 modules/devices.c:841 msgid "Value" msgstr "Valor" #: modules/computer.c:402 modules/computer.c:404 msgid "Single-board computer" msgstr "Computador de placa única" #: modules/computer.c:455 modules/computer.c:457 msgid "Unknown physical machine type" msgstr "Tipo de máquina física desconhecida" #: modules/computer.c:479 modules/computer.c:480 modules/computer.c:527 #: modules/computer.c:529 msgid "Virtual (VMware)" msgstr "Virtual (VMware)" #: modules/computer.c:482 modules/computer.c:483 modules/computer.c:484 #: modules/computer.c:485 msgid "Virtual (QEMU)" msgstr "Virtual (QEMU)" #: modules/computer.c:487 modules/computer.c:488 msgid "Virtual (Unknown)" msgstr "Virtual (desconhecido)" #: modules/computer.c:490 modules/computer.c:491 modules/computer.c:492 #: modules/computer.c:520 modules/computer.c:522 msgid "Virtual (VirtualBox)" msgstr "Virtual (VirtualBox)" #: modules/computer.c:494 modules/computer.c:495 modules/computer.c:496 #: modules/computer.c:511 modules/computer.c:513 msgid "Virtual (Xen)" msgstr "Virtual (Xen)" #: modules/computer.c:498 msgid "Virtual (hypervisor present)" msgstr "Virtual (presente do hipervisor)" #: modules/computer.c:579 modules/computer.c:1097 msgid "Computer" msgstr "Computador" #: modules/computer.c:586 modules/computer.c:640 msgid "User Name" msgstr "Nome de usuário " #: modules/computer.c:591 msgid "Resolution" msgstr "Resolução " #: modules/computer.c:591 modules/computer.c:812 #, c-format msgid "%dx%d pixels" msgstr "%dx%d pixels" #: modules/computer.c:593 msgid "Display Adapter" msgstr "" #: modules/computer.c:596 msgid "Session Display Server" msgstr "Servidor de exibição de sessão" #: modules/computer.c:601 modules/devices.c:108 msgid "Input Devices" msgstr "Dispositivos de entrada" #: modules/computer.c:629 msgid "Kernel" msgstr "Kernel" #: modules/computer.c:630 msgid "Command Line" msgstr "Linha de comando" #: modules/computer.c:632 msgid "C Library" msgstr "Biblioteca C" #: modules/computer.c:633 msgid "Distribution" msgstr "Distribuição" #: modules/computer.c:638 msgid "Current Session" msgstr "Sessão atual" #: modules/computer.c:639 msgid "Computer Name" msgstr "Nome do computador" #: modules/computer.c:641 modules/computer/languages.c:99 msgid "Language" msgstr "Idioma" #: modules/computer.c:642 modules/computer/users.c:53 msgid "Home Directory" msgstr "Diretório Home" #: modules/computer.c:643 msgid "Desktop Environment" msgstr "Ambiente de trabalho" #: modules/computer.c:646 msgid "Misc" msgstr "Misc" #: modules/computer.c:660 msgid "HardInfo2" msgstr "HardInfo2" #: modules/computer.c:661 msgid "HardInfo2 running as" msgstr "Rodando HardInfo2 como" #: modules/computer.c:662 msgid "Superuser" msgstr "Administrador" #: modules/computer.c:662 msgid "User" msgstr "Usuário" #: modules/computer.c:666 msgid "Health" msgstr "Sanidade" #: modules/computer.c:668 msgid "Available entropy in /dev/random" msgstr "Entropia disponível em / dev / random" #: modules/computer.c:672 msgid "Hardening Features" msgstr "Recursos de proteção" #: modules/computer.c:673 msgid "ASLR" msgstr "ASLR" #: modules/computer.c:674 msgid "dmesg" msgstr "dmesg" #: modules/computer.c:678 msgid "Linux Security Modules" msgstr "Módulos de Segurança do Linux" #: modules/computer.c:679 msgid "Modules available" msgstr "Módulos disponíveis" #: modules/computer.c:680 msgid "SELinux status" msgstr "Status do SELinux" #: modules/computer.c:686 msgid "CPU Vulnerabilities" msgstr "Vulnerabilidades da CPU" #: modules/computer.c:727 msgid "Loaded Modules" msgstr "Módulos carregados" #: modules/computer.c:729 modules/computer.c:757 modules/computer.c:897 #: modules/computer/languages.c:95 modules/computer/modules.c:370 #: modules/devices/arm/processor.c:478 modules/devices/dmi.c:38 #: modules/devices/dmi.c:49 modules/devices/e2k/processor.c:358 #: modules/devices/gpu.c:301 modules/devices/ia64/processor.c:160 #: modules/devices/inputdevices.c:141 modules/devices/monitors.c:403 #: modules/devices/monitors.c:505 modules/devices/sh/processor.c:84 #: modules/devices/x86/processor.c:750 modules/network.c:333 msgid "Name" msgstr "Nome" #: modules/computer.c:743 msgid "Date & Time" msgstr "Data & hora" #: modules/computer.c:744 msgid "Kernel Version" msgstr "Versão do kernel" #: modules/computer.c:754 msgid "Available Languages" msgstr "Linguagens disponíveis" #: modules/computer.c:756 msgid "Language Code" msgstr "Código de Idioma" #: modules/computer.c:768 msgid "Mounted File Systems" msgstr "Sistemas de arquivos montados" #: modules/computer.c:770 modules/computer/filesystem.c:89 msgid "Mount Point" msgstr "Ponto de montagem" #: modules/computer.c:771 msgid "Usage" msgstr "Uso" #: modules/computer.c:772 modules/devices.c:865 modules/devices.c:879 #: modules/devices/e2k/processor.c:416 modules/devices/gpu.c:85 #: modules/devices/gpu.c:93 modules/devices/gpu.c:293 modules/devices/pci.c:102 #: modules/devices/pci.c:110 modules/devices/pci.c:154 #: modules/devices/storage.c:48 modules/devices/storage.c:57 #: modules/devices/usb.c:172 modules/devices/usb.c:184 #: modules/devices/x86/processor.c:811 msgid "Device" msgstr "Dispositivo" #: modules/computer.c:795 msgid "Session" msgstr "Sessão" #: modules/computer.c:796 modules/devices.c:842 modules/devices.c:879 #: modules/devices/dmi.c:56 modules/devices/dmi_memory.c:729 #: modules/devices/inputdevices.c:142 modules/devices/spd-decode.c:1377 #: modules/devices/x86/processor.c:715 msgid "Type" msgstr "Tipo" #: modules/computer.c:799 msgid "Wayland" msgstr "Wayland" #: modules/computer.c:800 modules/computer.c:805 msgid "Current Display Name" msgstr "Nome de exibição atual" #: modules/computer.c:804 msgid "X Server" msgstr "Servidor X" #: modules/computer.c:806 modules/computer.c:846 modules/computer.c:869 #: modules/devices.c:879 modules/devices/dmi.c:40 modules/devices/dmi.c:46 #: modules/devices/dmi.c:50 modules/devices/dmi.c:55 #: modules/devices/dmi_memory.c:730 modules/devices/dmi_memory.c:873 #: modules/devices/e2k/processor.c:359 modules/devices/firmware.c:75 #: modules/devices/firmware.c:167 modules/devices/firmware.c:172 #: modules/devices/firmware.c:219 modules/devices/gpu.c:84 #: modules/devices/gpu.c:92 modules/devices/gpu.c:292 #: modules/devices/ia64/processor.c:161 modules/devices/inputdevices.c:144 #: modules/devices/monitors.c:402 modules/devices/pci.c:101 #: modules/devices/pci.c:109 modules/devices/storage.c:47 #: modules/devices/storage.c:56 modules/devices/storage.c:282 #: modules/devices/storage.c:572 modules/devices/storage.c:777 #: modules/devices/usb.c:171 modules/devices/x86/processor.c:654 msgid "Vendor" msgstr "Fornecedor" #: modules/computer.c:808 msgid "Release Number" msgstr "Número de Lançamento" #: modules/computer.c:816 msgid "Screens" msgstr "Telas" #: modules/computer.c:822 msgid "Disconnected" msgstr "Desconectado" #: modules/computer.c:825 msgid "Connected" msgstr "Conectado" #: modules/computer.c:833 msgid "Unused" msgstr "Não usado" #: modules/computer.c:834 #, c-format msgid "%dx%d pixels, offset (%d, %d)" msgstr "%dx%d pixels,deslocamento (%d, %d)" #: modules/computer.c:843 msgid "Outputs (XRandR)" msgstr "Saídas (XRandR)" #: modules/computer.c:845 msgid "OpenGL (GLX)" msgstr "OpenGL (GLX)" #: modules/computer.c:847 msgid "Renderer" msgstr "Renderizador" #: modules/computer.c:848 msgid "Direct Rendering" msgstr "Renderização Direta" #: modules/computer.c:849 modules/computer/modules.c:352 #: modules/computer/modules.c:353 modules/devices/inputdevices.c:153 #: modules/devices/printers.c:145 modules/devices/spd-decode.c:888 #: modules/devices/spd-decode.c:1100 msgid "Yes" msgstr "Sim" #: modules/computer.c:849 modules/computer/modules.c:352 #: modules/computer/modules.c:353 modules/devices/printers.c:145 #: modules/devices/spd-decode.c:886 modules/devices/spd-decode.c:1097 msgid "No" msgstr "Não" #: modules/computer.c:850 msgid "Version (Compatibility)" msgstr "Versão (Compatibilidade)" #: modules/computer.c:851 msgid "Shading Language Version (Compatibility)" msgstr "Versão da linguagem de sombreamento (Compatibilidade)" #: modules/computer.c:852 msgid "Version (Core)" msgstr "Versão (Núcleo)" #: modules/computer.c:853 msgid "Shading Language Version (Core)" msgstr "Versão de linguagem de sombreamento (Núcleo)" #: modules/computer.c:854 msgid "Version (ES)" msgstr "Versão (ES)" #: modules/computer.c:855 msgid "Shading Language Version (ES)" msgstr "Versão da linguagem de sombreamento (ES)" #: modules/computer.c:856 msgid "GLX Version" msgstr "GLX Versão" #: modules/computer.c:864 msgid "Vulkan" msgstr "" #: modules/computer.c:865 msgid "Instance Version" msgstr "" #: modules/computer.c:867 msgid "Api Version" msgstr "" #: modules/computer.c:868 msgid "Driver Version" msgstr "" #: modules/computer.c:870 msgid "Device Type" msgstr "" #: modules/computer.c:871 msgid "Device Name" msgstr "" #: modules/computer.c:872 msgid "Driver Name" msgstr "" #: modules/computer.c:873 msgid "Driver Info" msgstr "" #: modules/computer.c:874 msgid "Conformance Version" msgstr "" #: modules/computer.c:895 msgid "Group" msgstr "Grupo " #: modules/computer.c:898 modules/computer/users.c:52 msgid "Group ID" msgstr "ID do Grupo" #: modules/computer.c:1037 #, c-format msgid "%0.1f %s available to Linux" msgstr "%0.1f%s disponível para Linux" #: modules/computer.c:1039 modules/devices/dmi_memory.c:637 #: modules/devices/dmi_memory.c:647 modules/devices/dmi_memory.c:789 #: modules/devices/dmi_memory.c:918 modules/devices/spd-decode.c:1352 msgid "GiB" msgstr "GiB" #: modules/computer.c:1043 modules/computer/memory_usage.c:73 #: modules/computer/modules.c:370 msgid "KiB" msgstr "KiB" #: modules/computer.c:1116 modules/devices/devicetree/pmac_data.c:82 msgid "Motherboard" msgstr "Placa mãe" #: modules/computer.c:1144 msgid "Graphics" msgstr "Gráficos" #: modules/computer.c:1145 modules/devices.c:105 msgid "Printers" msgstr "Impressoras Printers" #: modules/computer.c:1145 msgid "Audio" msgstr "Áudio" #: modules/computer.c:1194 msgid "Gathers high-level computer information" msgstr "Reúne informações do computador de alto nível" #: modules/computer.c:1205 msgid "lsmod is required." msgstr "" #: modules/computer.c:1213 msgid "" "X.org's xrandr utility provides additional details when " "available." msgstr "" #: modules/computer.c:1214 msgid "" "Mesa's glxinfo utility is required for OpenGL information." msgstr "" #: modules/computer.c:1215 msgid "" "Vulkan's vulkaninfo utility is required for Vulkan information." msgstr "" #: modules/computer/filesystem.c:87 msgid "Filesystem" msgstr "Sistema de arquivo" #: modules/computer/filesystem.c:88 msgid "Mounted As" msgstr "Montado como" #: modules/computer/filesystem.c:88 msgid "Read-Write" msgstr "Ler-Escrever" #: modules/computer/filesystem.c:88 msgid "Read-Only" msgstr "Somente leitura" #: modules/computer/filesystem.c:90 modules/devices.c:865 #: modules/devices/dmi_memory.c:733 modules/devices/dmi_memory.c:766 #: modules/devices/dmi_memory.c:805 modules/devices/dmi_memory.c:872 #: modules/devices/spd-decode.c:1384 msgid "Size" msgstr "Tamanho" #: modules/computer/filesystem.c:91 msgid "Used" msgstr "Usado" #: modules/computer/filesystem.c:92 msgid "Available" msgstr "Disponível" #: modules/computer/languages.c:94 msgid "Locale Information" msgstr "Informação local" #: modules/computer/languages.c:96 modules/devices/gpu.c:266 #: modules/devices/spd-decode.c:1373 msgid "Source" msgstr "Fonte" #: modules/computer/languages.c:97 msgid "Address" msgstr "Endereço" #: modules/computer/languages.c:98 msgid "E-mail" msgstr "E-mail" #: modules/computer/languages.c:100 msgid "Territory" msgstr "Território" #: modules/computer/languages.c:102 modules/devices/dmi.c:45 msgid "Date" msgstr "Data" #: modules/computer/languages.c:103 msgid "Codeset" msgstr "Codificação" #: modules/computer/loadavg.c:64 msgid "Couldn't obtain load average" msgstr "Não foi possível obter a média de carga" #: modules/computer/memory_usage.c:131 msgid "Total physical memory usable by the system" msgstr "" #: modules/computer/memory_usage.c:132 msgid "Free memory which is not used for anything" msgstr "" #: modules/computer/memory_usage.c:133 msgid "Virtual memory, total swap space available" msgstr "" #: modules/computer/memory_usage.c:134 msgid "Virtual memory, remaining swap space available" msgstr "" #: modules/computer/memory_usage.c:135 msgid "Memory present within main memory and in the swapfile" msgstr "" #: modules/computer/memory_usage.c:136 msgid "HighTotal value can vary based on the type of kernel used" msgstr "" #: modules/computer/memory_usage.c:137 msgid "Amount of memory that is not directly mapped into kernel space" msgstr "" #: modules/computer/memory_usage.c:138 msgid "LowTotal value can vary based on the type of kernel used" msgstr "" #: modules/computer/memory_usage.c:139 msgid "Total and free memory directly mapped into kernel space" msgstr "" #: modules/computer/memory_usage.c:140 msgid "Available memory for allocation to any process, without swapping" msgstr "" #: modules/computer/memory_usage.c:141 msgid "Memory in buffer cache, temporary storage for raw disk blocks" msgstr "" #: modules/computer/memory_usage.c:142 msgid "Memory in the page cache (diskcache, shared memory, tmpfs and shmem)" msgstr "" #: modules/computer/memory_usage.c:143 msgid "Memory used more recently and not swapped out or reclaimed" msgstr "" #: modules/computer/memory_usage.c:144 msgid "Memory not been used recently and can be swapped out or reclaimed" msgstr "" #: modules/computer/memory_usage.c:145 msgid "Anonymous memory used more recently and not swapped out" msgstr "" #: modules/computer/memory_usage.c:146 msgid "Anonymous memory not been used and can be swapped out" msgstr "" #: modules/computer/memory_usage.c:147 msgid "Pagecache memory been used more recently and not reclaimed" msgstr "" #: modules/computer/memory_usage.c:148 msgid "Pagecache memory reclaimable without huge performance impact" msgstr "" #: modules/computer/memory_usage.c:149 msgid "Unevictable pages can't be swapped out for a variety of reasons" msgstr "" #: modules/computer/memory_usage.c:150 msgid "Pages locked to memory using the mlock() system call" msgstr "" #: modules/computer/memory_usage.c:151 msgid "Memory consumed by the zswap backend (compressed size)" msgstr "" #: modules/computer/memory_usage.c:152 msgid "Amount of anonymous memory stored in zswap (original size)" msgstr "" #: modules/computer/memory_usage.c:153 msgid "Memory waiting to be written back to disk" msgstr "" #: modules/computer/memory_usage.c:154 msgid "Memory which is actively being written back to disk" msgstr "" #: modules/computer/memory_usage.c:155 msgid "Non-file backed pages mapped into userspace page tables" msgstr "" #: modules/computer/memory_usage.c:156 msgid "Files which have been mmapped, such as libraries" msgstr "" #: modules/computer/memory_usage.c:157 msgid "Total memory used by shared memory (shmem) and tmpfs" msgstr "" #: modules/computer/memory_usage.c:158 msgid "Kernel allocations reclaimable under memory pressure" msgstr "" #: modules/computer/memory_usage.c:159 msgid "In-kernel data structures cache" msgstr "" #: modules/computer/memory_usage.c:160 msgid "Part of Slab, that might be reclaimed, such as caches" msgstr "" #: modules/computer/memory_usage.c:161 msgid "Part of Slab, that cannot be reclaimed on memory pressure" msgstr "" #: modules/computer/memory_usage.c:162 msgid "Memory consumed by the kernel stacks of all tasks" msgstr "" #: modules/computer/memory_usage.c:163 msgid "Memory consumed by userspace page tables" msgstr "" #: modules/computer/memory_usage.c:164 msgid "Memory consumed by secondary page tables" msgstr "" #: modules/computer/memory_usage.c:165 msgid "Previous counted pages which had been written to the server" msgstr "" #: modules/computer/memory_usage.c:166 msgid "Memory used for block device bounce buffers" msgstr "" #: modules/computer/memory_usage.c:167 msgid "Memory used by FUSE for temporary writeback buffers" msgstr "" #: modules/computer/memory_usage.c:168 msgid "Total memory currently available to be allocated on the system" msgstr "" #: modules/computer/memory_usage.c:169 msgid "The amount of memory presently allocated on the system" msgstr "" #: modules/computer/memory_usage.c:170 msgid "Total size of vmalloc virtual address space" msgstr "" #: modules/computer/memory_usage.c:171 msgid "Amount of vmalloc area which is used" msgstr "" #: modules/computer/memory_usage.c:172 msgid "Largest contiguous block of vmalloc area which is free" msgstr "" #: modules/computer/memory_usage.c:173 msgid "Memory allocated to the percpu allocator" msgstr "" #: modules/computer/memory_usage.c:174 msgid "Amount of memory the kernel identifies as corrupted" msgstr "" #: modules/computer/memory_usage.c:175 msgid "Non-file backed huge pages mapped into userspace page tables" msgstr "" #: modules/computer/memory_usage.c:176 msgid "Memory used by shmem and tmpfs allocated with huge pages" msgstr "" #: modules/computer/memory_usage.c:177 msgid "Shared memory mapped into userspace with huge pages" msgstr "" #: modules/computer/memory_usage.c:178 msgid "Memory used for fs data (page cache) allocated with huge pages" msgstr "" #: modules/computer/memory_usage.c:179 msgid "Page cache mapped into userspace with huge pages" msgstr "" #: modules/computer/memory_usage.c:180 msgid "Memory reserved for the Contiguous Memory Allocator (CMA)" msgstr "" #: modules/computer/memory_usage.c:181 msgid "Free remaining memory in the CMA reserves" msgstr "" #: modules/computer/memory_usage.c:182 msgid "Amount of unaccepted memory usable by the kernel" msgstr "" #: modules/computer/memory_usage.c:183 msgid "Size of the pool of huge pages" msgstr "" #: modules/computer/memory_usage.c:184 msgid "Number of huge pages available" msgstr "" #: modules/computer/memory_usage.c:185 msgid "Number of huge pages reserved" msgstr "" #: modules/computer/memory_usage.c:186 msgid "Number of huge pages surplus" msgstr "" #: modules/computer/memory_usage.c:187 msgid "Huge page size, used in conjunction with hugepages parameter" msgstr "" #: modules/computer/memory_usage.c:188 msgid "Total amount of memory consumed by huge pages of all sizes" msgstr "" #: modules/computer/memory_usage.c:189 msgid "Breakdown of page table sizes of 4k size" msgstr "" #: modules/computer/memory_usage.c:190 msgid "Breakdown of page table sizes of 2M size" msgstr "" #: modules/computer/memory_usage.c:191 msgid "Breakdown of page table sizes of 1G size" msgstr "" #: modules/computer/modules.c:168 msgid "Update kernel module icon table" msgstr "" #: modules/computer/modules.c:338 modules/computer/modules.c:339 #: modules/computer/modules.c:340 modules/computer/modules.c:341 #: modules/computer/modules.c:342 modules/computer/modules.c:343 #: modules/devices/dmi.c:117 modules/devices/firmware.c:245 #: modules/devices/x86/processor.c:694 msgid "(Not available)" msgstr "(Indisponível)" #: modules/computer/modules.c:369 msgid "Module Information" msgstr "Informação do módulo" #: modules/computer/modules.c:369 modules/devices/gpu.c:298 msgid "Path" msgstr "caminho" #: modules/computer/modules.c:369 msgid "Used Memory" msgstr "Memoria usada" #: modules/computer/modules.c:371 msgid "Version Magic" msgstr "Versão Magic" #: modules/computer/modules.c:372 msgid "In Linus' Tree" msgstr "Na árvore de Linus" #: modules/computer/modules.c:373 msgid "Retpoline Enabled" msgstr "Retpoline habilitada" #: modules/computer/modules.c:373 msgid "Copyright" msgstr "Direitos autorais" #: modules/computer/modules.c:373 msgid "Author" msgstr "Autor" #: modules/computer/modules.c:374 msgid "License" msgstr "Licença" #: modules/computer/modules.c:380 msgid "Dependencies" msgstr "Dependências" #: modules/computer/os.c:153 modules/computer/os.c:154 #: modules/computer/os.c:155 modules/computer/os.c:156 msgid "GNU C Library" msgstr "Biblioteca GNU C" #: modules/computer/os.c:157 msgid "uClibc or uClibc-ng" msgstr "uClibc ou uClibc-ng" #: modules/computer/os.c:158 msgid "diet libc" msgstr "dieta libc " #: modules/computer/os.c:229 modules/computer/os.c:232 msgid "GNOME Shell " msgstr "GNOME Shell " #: modules/computer/os.c:240 modules/computer/os.c:243 msgid "Version: " msgstr "Versão: " #: modules/computer/os.c:261 modules/computer/os.c:264 msgid "MATE Desktop Environment " msgstr "Ambiente de trabalho MATE" #: modules/computer/os.c:297 #, c-format msgid "Unknown (Window Manager: %s)" msgstr "Desconhecido (Gerenciador de Janelas: %s)" #. !/{desktop environment} on {session type} #: modules/computer/os.c:308 #, c-format msgid "%s on %s" msgstr "%s on %s" #: modules/computer/os.c:376 msgid "Terminal" msgstr "Terminal" #: modules/computer/os.c:392 msgid "User access allowed" msgstr "Acesso ao usuário permitido" #: modules/computer/os.c:394 msgid "User access forbidden" msgstr "Acesso ao usuário proibido" #: modules/computer/os.c:396 msgid "Access allowed (running as superuser)" msgstr "Acesso permitido (rodando como administrador)" #: modules/computer/os.c:398 msgid "Access forbidden? (running as superuser)" msgstr "Acesso proibido? (rodando como administrador)" #: modules/computer/os.c:407 modules/computer/os.c:793 msgid "Disabled" msgstr "Desabilitado" #: modules/computer/os.c:409 msgid "Partially enabled (mmap base+stack+VDSO base)" msgstr "Parcialmente habilitado (base mmap+stack+base VDSO)" #: modules/computer/os.c:411 msgid "Fully enabled (mmap base+stack+VDSO base+heap)" msgstr "Totalmente habilitado (base mmap+stack+base VDSO+heap)" #. !/bits of entropy for rng (0) #: modules/computer/os.c:420 msgid "(None or not available)" msgstr "(Nenhum ou não disponível)" #. !/bits of entropy for rng (low/poor value) #: modules/computer/os.c:421 #, c-format msgid "%d bits (low)" msgstr "%d bits (baixo)" #. !/bits of entropy for rng (medium value) #: modules/computer/os.c:422 #, c-format msgid "%d bits (medium)" msgstr "%d bits (médio)" #. !/bits of entropy for rng (high/good value) #: modules/computer/os.c:423 #, c-format msgid "%d bits (healthy)" msgstr "%d bits (saudável)" #: modules/computer/os.c:788 msgid "Not installed" msgstr "Não instalado" #: modules/computer/os.c:791 msgid "Enabled" msgstr "Habilitado" #: modules/computer/users.c:50 msgid "User Information" msgstr "Informação do usuário" #: modules/computer/users.c:51 msgid "User ID" msgstr "ID Usuários " #: modules/computer/users.c:54 msgid "Default Shell" msgstr "Shell Padrão " #: modules/devices/alpha/processor.c:88 modules/devices.c:865 #: modules/devices/devicetree.c:162 modules/devices/devicetree.c:208 #: modules/devices/devicetree/pmac_data.c:80 #: modules/devices/e2k/processor.c:361 modules/devices/e2k/processor.c:416 #: modules/devices/gpu.c:116 modules/devices/ia64/processor.c:165 #: modules/devices/loongarch64/processor.c:96 #: modules/devices/m68k/processor.c:84 modules/devices/mips/processor.c:75 #: modules/devices/monitors.c:404 modules/devices/parisc/processor.c:155 #: modules/devices/ppc/processor.c:158 modules/devices/riscv/processor.c:242 #: modules/devices/s390/processor.c:132 modules/devices/x86/processor.c:811 msgid "Model" msgstr "Modelo " #: modules/devices/alpha/processor.c:89 msgid "Platform String" msgstr "String de plataforma" #: modules/devices/alpha/processor.c:90 modules/devices/arm/processor.c:344 #: modules/devices/e2k/processor.c:363 modules/devices/e2k/processor.c:416 #: modules/devices/ia64/processor.c:167 #: modules/devices/loongarch64/processor.c:98 #: modules/devices/m68k/processor.c:87 modules/devices/mips/processor.c:77 #: modules/devices/parisc/processor.c:158 modules/devices/ppc/processor.c:160 #: modules/devices/riscv/processor.c:246 modules/devices/sh/processor.c:87 #: modules/devices/x86/processor.c:658 modules/devices/x86/processor.c:811 msgid "Frequency" msgstr "Freqüência " #: modules/devices/alpha/processor.c:91 modules/devices/arm/processor.c:345 #: modules/devices/e2k/processor.c:364 modules/devices/ia64/processor.c:168 #: modules/devices/m68k/processor.c:88 modules/devices/mips/processor.c:78 #: modules/devices/parisc/processor.c:159 modules/devices/ppc/processor.c:161 #: modules/devices/s390/processor.c:134 modules/devices/sh/processor.c:90 #: modules/devices/x86/processor.c:659 msgid "BogoMips" msgstr "BogoMips" #: modules/devices/alpha/processor.c:92 modules/devices/arm/processor.c:346 #: modules/devices/e2k/processor.c:365 modules/devices/ia64/processor.c:169 #: modules/devices/loongarch64/processor.c:101 #: modules/devices/m68k/processor.c:89 modules/devices/mips/processor.c:79 #: modules/devices/parisc/processor.c:160 modules/devices/ppc/processor.c:162 #: modules/devices/riscv/processor.c:247 modules/devices/s390/processor.c:135 #: modules/devices/sh/processor.c:91 modules/devices/sparc/processor.c:77 #: modules/devices/x86/processor.c:660 msgid "Byte Order" msgstr "Ordem de Byte" #. !/flag:swp #: modules/devices/arm/arm_data.c:42 msgctxt "arm-flag" msgid "SWP instruction (atomic read-modify-write)" msgstr "Instrução SWP (atomic read-modify-write)" #. !/flag:half #: modules/devices/arm/arm_data.c:43 msgctxt "arm-flag" msgid "Half-word loads and stores" msgstr "Carga e armazenamento de meio word palavra" #. !/flag:thumb #: modules/devices/arm/arm_data.c:44 msgctxt "arm-flag" msgid "Thumb (16-bit instruction set)" msgstr "Thumb (16-bit instruction set)" #. !/flag:26bit #: modules/devices/arm/arm_data.c:45 msgctxt "arm-flag" msgid "26-Bit Model (Processor status register folded into program counter)" msgstr "" "Modelo de 26 bits (registro de status do processador dobrado no contador de " "programa)" #. !/flag:fastmult #: modules/devices/arm/arm_data.c:46 msgctxt "arm-flag" msgid "32x32->64-bit multiplication" msgstr "32x32-> multiplicação de 64 bits" #. !/flag:fpa #: modules/devices/arm/arm_data.c:47 msgctxt "arm-flag" msgid "Floating point accelerator" msgstr "Acelerador de ponto flutuante" #. !/flag:vfp #: modules/devices/arm/arm_data.c:48 msgctxt "arm-flag" msgid "VFP (early SIMD vector floating point instructions)" msgstr "VFP (instruções iniciais de ponto flutuante de vetor SIMD)" #. !/flag:edsp #: modules/devices/arm/arm_data.c:49 msgctxt "arm-flag" msgid "DSP extensions (the 'e' variant of the ARM9 CPUs, and all others above)" msgstr "Extensões DSP (a variante 'e' das CPUs ARM9 e todas as outras acima)" #. !/flag:java #: modules/devices/arm/arm_data.c:50 msgctxt "arm-flag" msgid "Jazelle (Java bytecode accelerator)" msgstr "Jazelle (acelerador de bytecode Java)" #. !/flag:iwmmxt #: modules/devices/arm/arm_data.c:51 msgctxt "arm-flag" msgid "SIMD instructions similar to Intel MMX" msgstr "Instruções SIMD semelhantes ao Intel MMX" #. !/flag:crunch #: modules/devices/arm/arm_data.c:52 msgctxt "arm-flag" msgid "MaverickCrunch coprocessor (if kernel support enabled)" msgstr "Coprocessador MaverickCrunch (se o suporte ao kernel estiver ativado)" #. !/flag:thumbee #: modules/devices/arm/arm_data.c:53 msgctxt "arm-flag" msgid "ThumbEE" msgstr "ThumbEE" #. !/flag:neon #: modules/devices/arm/arm_data.c:54 msgctxt "arm-flag" msgid "Advanced SIMD/NEON on AArch32" msgstr "Avançado SIMD / NEON em AArch32" #. !/flag:evtstrm #: modules/devices/arm/arm_data.c:55 msgctxt "arm-flag" msgid "Kernel event stream using generic architected timer" msgstr "Fluxo de eventos do kernel usando o temporizador arquitetado genérico" #. !/flag:vfpv3 #: modules/devices/arm/arm_data.c:56 msgctxt "arm-flag" msgid "VFP version 3" msgstr "Versão 3 do VFP" #. !/flag:vfpv3d16 #: modules/devices/arm/arm_data.c:57 msgctxt "arm-flag" msgid "VFP version 3 with 16 D-registers" msgstr "VFP versão 3 com 16 registros D" #. !/flag:vfpv4 #: modules/devices/arm/arm_data.c:58 msgctxt "arm-flag" msgid "VFP version 4 with fast context switching" msgstr "VFP versão 4 com comutação rápida de contexto" #. !/flag:vfpd32 #: modules/devices/arm/arm_data.c:59 msgctxt "arm-flag" msgid "VFP with 32 D-registers" msgstr "VFP com 32 registros D" #. !/flag:tls #: modules/devices/arm/arm_data.c:60 msgctxt "arm-flag" msgid "TLS register" msgstr "Registro TLS" #. !/flag:idiva #: modules/devices/arm/arm_data.c:61 msgctxt "arm-flag" msgid "SDIV and UDIV hardware division in ARM mode" msgstr "Divisão de hardware SDIV e UDIV no modo ARM" #. !/flag:idivt #: modules/devices/arm/arm_data.c:62 msgctxt "arm-flag" msgid "SDIV and UDIV hardware division in Thumb mode" msgstr "Divisão de hardware SDIV e UDIV no modo Thumb" #. !/flag:lpae #: modules/devices/arm/arm_data.c:63 msgctxt "arm-flag" msgid "40-bit Large Physical Address Extension" msgstr "Extensão de endereço físico grande de 40 bits" #. !/flag:pmull #: modules/devices/arm/arm_data.c:65 msgctxt "arm-flag" msgid "64x64->128-bit F2m multiplication (arch>=8)" msgstr "64x64-> multiplicação F2m de 128 bits (arco> 8)" #. !/flag:aes #: modules/devices/arm/arm_data.c:66 msgctxt "arm-flag" msgid "Crypto:AES (arch>=8)" msgstr "Criptografia: AES (arco> 8)" #. !/flag:sha1 #: modules/devices/arm/arm_data.c:67 msgctxt "arm-flag" msgid "Crypto:SHA1 (arch>=8)" msgstr "Criptografia: SHA1 (arco> 8)" #. !/flag:sha2 #: modules/devices/arm/arm_data.c:68 msgctxt "arm-flag" msgid "Crypto:SHA2 (arch>=8)" msgstr "Criptografia: SHA2 (arco> 8)" #. !/flag:crc32 #: modules/devices/arm/arm_data.c:69 msgctxt "arm-flag" msgid "CRC32 checksum instructions (arch>=8)" msgstr "Instruções de soma de verificação CRC32 (arco> 8)" #. !/flag:fp #: modules/devices/arm/arm_data.c:71 msgctxt "arm-flag" msgid "Floating-point on AArch64 (arch>=8)" msgstr "" #. !/flag:asimd #: modules/devices/arm/arm_data.c:72 msgctxt "arm-flag" msgid "Advanced SIMD/NEON on AArch64 (arch>=8)" msgstr "Avançado SIMD / NEON em AArch64 (arco> 8)" #. !/flag:atomics #: modules/devices/arm/arm_data.c:73 msgctxt "arm-flag" msgid "Atomic instructions on AArch64 (arch>=8)" msgstr "" #. !/flag:fphp #: modules/devices/arm/arm_data.c:74 msgctxt "arm-flag" msgid "Half precision floating point on AArch64 (arch>=8)" msgstr "" #. !/flag:asimdhp #: modules/devices/arm/arm_data.c:75 msgctxt "arm-flag" msgid "Advanced SIMD with BFloat16 on AArch64 (arch>=8)" msgstr "" #. !/flag:cpuid #: modules/devices/arm/arm_data.c:76 msgctxt "arm-flag" msgid "CPU features can be read on AArch64 (arch>=8)" msgstr "" #. !/flag:asimdrdm #: modules/devices/arm/arm_data.c:77 msgctxt "arm-flag" msgid "Advanced SIMD rounding Double MulAcc on AArch64 (arch>=8)" msgstr "" #. !/flag:jscvt #: modules/devices/arm/arm_data.c:78 msgctxt "arm-flag" msgid "JacaScript conversion on AArch64 (arch>=8)" msgstr "" #. !/flag:fcma #: modules/devices/arm/arm_data.c:79 msgctxt "arm-flag" msgid "Complex number SIMD on AArch64 (arch>=8)" msgstr "" #. !/flag:lrcpc #: modules/devices/arm/arm_data.c:80 msgctxt "arm-flag" msgid "Weak release consistency on AArch64 (arch>=8)" msgstr "" #. !/flag:dcpop #: modules/devices/arm/arm_data.c:81 msgctxt "arm-flag" msgid "Data cache clean to Point of Persistence on AArch64 (arch>=8)" msgstr "" #. !/flag:sha3 #: modules/devices/arm/arm_data.c:82 msgctxt "arm-flag" msgid "SHA-3 instructions on AArch64 (arch>=8)" msgstr "" #. !/flag:sm3 #: modules/devices/arm/arm_data.c:83 msgctxt "arm-flag" msgid "SM3 instructions on AArch64 (arch>=8)" msgstr "" #. !/flag:sm4 #: modules/devices/arm/arm_data.c:84 msgctxt "arm-flag" msgid "SM4 instructions on AArch64 (arch>=8)" msgstr "" #. !/flag:asimddp #: modules/devices/arm/arm_data.c:85 msgctxt "arm-flag" msgid "SIMD Dot Product on AArch64 (arch>=8)" msgstr "" #. !/flag:sha512 #: modules/devices/arm/arm_data.c:86 msgctxt "arm-flag" msgid "SHA512 instructions on AArch64 (arch>=8)" msgstr "" #. !/flag:sve #: modules/devices/arm/arm_data.c:87 msgctxt "arm-flag" msgid "Scalable Vector Extension on AArch64 (arch>=8)" msgstr "" #: modules/devices/arm/processor.c:143 msgid "ARM Processor" msgstr "Processador ARM" #: modules/devices/arm/processor.c:214 modules/devices/riscv/processor.c:211 #: modules/devices/x86/processor.c:609 msgid "Empty List" msgstr "Lista vazia" #: modules/devices/arm/processor.c:239 modules/devices/gpu.c:204 #: modules/devices/gpu.c:294 modules/devices/x86/processor.c:267 msgid "Clocks" msgstr "Clocks Relógios" #: modules/devices/arm/processor.c:285 modules/devices/arm/processor.c:298 #: modules/devices/x86/processor.c:313 modules/devices/x86/processor.c:326 #, c-format msgid "%.2f-%.2f %s=%dx\n" msgstr "%.2f-%.2f %s=%dx\n" #: modules/devices/arm/processor.c:341 msgid "Linux Name" msgstr "Nome Linux" #: modules/devices/arm/processor.c:342 msgid "Decoded Name" msgstr "Nome decodificado" #: modules/devices/arm/processor.c:343 modules/network/net.c:476 msgid "Mode" msgstr "Modo" #: modules/devices/arm/processor.c:349 msgid "ARM" msgstr "ARM" #: modules/devices/arm/processor.c:350 msgid "Implementer" msgstr "Implementador" #: modules/devices/arm/processor.c:351 modules/devices/dmi_memory.c:874 msgid "Part" msgstr "Parte" #: modules/devices/arm/processor.c:352 modules/devices/ia64/processor.c:162 #: modules/devices/parisc/processor.c:156 modules/devices/riscv/processor.c:243 msgid "Architecture" msgstr "Arquitetura" #: modules/devices/arm/processor.c:353 msgid "Variant" msgstr "Variante" #: modules/devices/arm/processor.c:355 modules/devices/riscv/processor.c:250 #: modules/devices/sparc/processor.c:78 modules/devices/x86/processor.c:666 msgid "Capabilities" msgstr "Capacidades" #: modules/devices/arm/processor.c:477 msgid "SOC/Package" msgstr "SOC / Pacote" #: modules/devices/arm/processor.c:481 modules/devices/x86/processor.c:752 msgid "Logical CPU Config" msgstr "Configuração lógica da CPU" #: modules/devices/arm/processor.c:498 msgid "SOC/Package Information" msgstr "SOC / informações do pacote" #: modules/devices/battery.c:178 #, c-format msgid "" "\n" "[Battery: %s]\n" "State=%s (load: %s)\n" "Capacity=%s / %s (%.2f%%)\n" "Battery Technology=%s (%s)\n" "Manufacturer=%s\n" "Model Number=%s\n" "Serial Number=%s\n" msgstr "" "\n" "[Bateria: %s]\n" "Estado=%s (load: %s)\n" "Capacidade=%s / %s (%.2f%%)\n" "Tecnologia de Baterias=%s (%s)\n" "Fabricante=%s\n" "Número do modelo=%s\n" "Número de série=%s\n" #: modules/devices/battery.c:257 #, c-format msgid "" "\n" "[AC Power Supply: %s]\n" "Online=%s\n" "AC Power Type=%s\n" msgstr "" #: modules/devices/battery.c:279 #, c-format msgid "" "\n" "[Battery: %s]\n" "State=%s\n" "Capacity=%s / %s\n" "Battery Technology=%s\n" "Manufacturer=%s\n" "Model Number=%s\n" "Serial Number=%s\n" msgstr "" "\n" "[Bateria: %s]\n" "Estado=%s\n" "Capacidade=%s / %s\n" "Tecnologia de bateria=%s\n" "Fabricante=%s\n" "Número do Modelo=%s\n" "Número de série=%s\n" #: modules/devices/battery.c:372 #, c-format msgid "" "\n" "[Battery (APM)]\n" "Charge=%d%%\n" "Remaining Charge=%s of %s\n" "Using=%s\n" "APM driver version=%s\n" "APM BIOS version=%s\n" msgstr "" "\n" "[Bateria (APM)]\n" "Carregar=%d%%\n" "Carga carregamento restante=%s of %s\n" "Usando=%s\n" "APM driver versão=%s\n" "APM BIOS versão=%s\n" #: modules/devices/battery.c:384 #, c-format msgid "" "\n" "[Battery (APM)]\n" "Charge=%d%%\n" "Using=%s\n" "APM driver version=%s\n" "APM BIOS version=%s\n" msgstr "" "\n" "[Bateria (APM)]\n" "Carga Carregar=%d%%\n" "Usando=%s\n" "APM driver versão=%s\n" "APM BIOS versão=%s\n" #: modules/devices/battery.c:413 msgid "" "[No batteries]\n" "No batteries found on this system=\n" msgstr "" "[Sem baterias]\n" "Nenhuma bateria encontrada neste sistema=\n" #: modules/devices.c:100 msgid "Graphics Processors" msgstr "Processadores Gráficos" #: modules/devices.c:101 modules/devices/monitors.c:449 #: modules/devices/monitors.c:495 msgid "Monitors" msgstr "" #: modules/devices.c:102 modules/devices/pci.c:175 msgid "PCI Devices" msgstr "Dispositivos PCI" #: modules/devices.c:103 modules/devices/usb.c:211 msgid "USB Devices" msgstr "Dispositivos USB " #: modules/devices.c:104 msgid "Firmware" msgstr "Firmware" #: modules/devices.c:106 msgid "Battery" msgstr "Bateria" #: modules/devices.c:107 msgid "Sensors" msgstr "Sensores" #: modules/devices.c:110 msgid "System DMI" msgstr "Sistema DMI" #: modules/devices.c:111 msgid "Memory Devices" msgstr "Dispositivos de memória" #: modules/devices.c:113 modules/devices.c:115 msgid "Device Tree" msgstr "Árvore de Dispositivos" #: modules/devices.c:117 msgid "Resources" msgstr "Recursos" #: modules/devices.c:594 msgid "WSL2" msgstr "" #: modules/devices.c:841 msgid "Sensor" msgstr "Sensor" #: modules/devices.c:899 modules/devices/dmi_memory.c:806 msgid "Devices" msgstr "Dispositivos " #: modules/devices.c:911 msgid "Update PCI ID listing" msgstr "Atualizar lista de IDs de PCI" #: modules/devices.c:916 msgid "Update USB ID listing" msgstr "" #: modules/devices.c:921 msgid "Update EDID vendor codes" msgstr "" #: modules/devices.c:926 msgid "Update IEEE OUI vendor codes" msgstr "" #: modules/devices.c:931 msgid "Update SD card manufacturer information" msgstr "" #: modules/devices.c:938 msgid "Update CPU flags database" msgstr "" #: modules/devices.c:973 msgid "Gathers information about hardware devices" msgstr "Reúne informações sobre dispositivos de hardware" #: modules/devices.c:994 msgid "A copy of pci.ids is not available on the system." msgstr "" #: modules/devices.c:997 msgid "A full pci.ids is not available on the system." msgstr "" #: modules/devices.c:1002 msgid "Resource information requires superuser privileges" msgstr "Reúne informações sobre dispositivos de hardware" #: modules/devices.c:1008 msgid "" "Any NVMe storage devices present are not listed.\n" "udisks2 is required for NVMe devices." msgstr "" #: modules/devices/devicetree.c:51 msgid "Properties" msgstr "Propriedades" #: modules/devices/devicetree.c:52 msgid "Children" msgstr "Crianças" #: modules/devices/devicetree.c:88 msgid "Node" msgstr "Node nó" #: modules/devices/devicetree.c:89 msgid "Node Path" msgstr "Caminho do Nó Node Path" #: modules/devices/devicetree.c:90 msgid "Alias" msgstr "Alias" #: modules/devices/devicetree.c:91 msgid "Symbol" msgstr "Símbolo" #: modules/devices/devicetree.c:144 modules/devices/devicetree/pmac_data.c:79 msgid "Platform" msgstr "Plataforma" #: modules/devices/devicetree.c:145 modules/devices/devicetree.c:210 #: modules/devices/gpu.c:299 msgid "Compatible" msgstr "Compatível" #: modules/devices/devicetree.c:146 msgid "GPU-compatible" msgstr "Compatível com GPU" #: modules/devices/devicetree.c:161 msgid "Raspberry Pi or Compatible" msgstr "Raspberry Pi ou compatível" #: modules/devices/devicetree.c:163 modules/devices/devicetree.c:190 #: modules/devices/devicetree.c:209 modules/devices/devicetree/rpi_data.c:169 #: modules/devices/dmi.c:42 modules/devices/dmi.c:52 modules/devices/dmi.c:58 #: modules/devices/spd-decode.c:1383 modules/devices/usb.c:181 msgid "Serial Number" msgstr "Número de série" #: modules/devices/devicetree.c:164 modules/devices/devicetree/rpi_data.c:166 msgid "RCode" msgstr "RCode" #: modules/devices/devicetree.c:164 msgid "No revision code available; unable to lookup model details." msgstr "" "Nenhum código de revisão disponível; incapaz de pesquisar detalhes do modelo." #: modules/devices/devicetree.c:189 msgid "More" msgstr "Mais" #: modules/devices/devicetree.c:270 msgid "Messages" msgstr "Mensagens" #: modules/devices/devicetree/pmac_data.c:78 msgid "Apple Power Macintosh" msgstr "Apple Power Macintosh" #: modules/devices/devicetree/pmac_data.c:83 msgid "Detected as" msgstr "Detectado como" #: modules/devices/devicetree/pmac_data.c:84 msgid "PMAC Flags" msgstr "Bandeiras do PMAC" #: modules/devices/devicetree/pmac_data.c:85 msgid "L2 Cache" msgstr "L2 Cache" #: modules/devices/devicetree/pmac_data.c:86 msgid "PMAC Generation" msgstr "Geração PMAC" #: modules/devices/devicetree/rpi_data.c:161 #: modules/devices/devicetree/rpi_data.c:162 msgid "Raspberry Pi" msgstr "Raspberry Pi" #: modules/devices/devicetree/rpi_data.c:162 msgid "Board Name" msgstr "Nome da placa" #: modules/devices/devicetree/rpi_data.c:163 msgid "PCB Revision" msgstr "Revisão PCB" #: modules/devices/devicetree/rpi_data.c:164 msgid "Introduction" msgstr "Introdução " #: modules/devices/devicetree/rpi_data.c:165 modules/devices/usb.c:173 msgid "Manufacturer" msgstr "Fabricante" #: modules/devices/devicetree/rpi_data.c:167 msgid "SOC (spec)" msgstr "SOC (spec)" #: modules/devices/devicetree/rpi_data.c:168 msgid "Memory (spec)" msgstr "Memoria (spec)" #: modules/devices/devicetree/rpi_data.c:170 msgid "Permanent overvolt bit" msgstr "Bit permanente de sobretensão" #: modules/devices/devicetree/rpi_data.c:170 msgctxt "rpi-ov-bit" msgid "Set" msgstr "Conjunto" #: modules/devices/devicetree/rpi_data.c:170 msgctxt "rpi-ov-bit" msgid "Not set" msgstr "Não configurado" #: modules/devices/dmi.c:37 modules/devices/inputdevices.c:145 #: modules/devices/usb.c:170 msgid "Product" msgstr "Produto" #: modules/devices/dmi.c:39 modules/devices/e2k/processor.c:360 #: modules/devices/ia64/processor.c:164 #: modules/devices/loongarch64/processor.c:95 modules/devices/sh/processor.c:86 msgid "Family" msgstr "Família" #: modules/devices/dmi.c:43 msgid "SKU" msgstr "SKU" #: modules/devices/dmi.c:44 msgid "BIOS" msgstr "BIOS" #: modules/devices/dmi.c:53 modules/devices/dmi.c:59 msgid "Asset Tag" msgstr "Asset Tag Tag de patrimônio" #: modules/devices/dmi.c:161 msgid "DMI Unavailable" msgstr "" #: modules/devices/dmi.c:162 msgid "DMI is not available. Perhaps this platform does not provide DMI." msgstr "" #: modules/devices/dmi_memory.c:620 modules/devices/dmi_memory.c:859 msgid "Memory Device List" msgstr "" #: modules/devices/dmi_memory.c:668 msgid "Memory Array" msgstr "" #: modules/devices/dmi_memory.c:669 modules/devices/x86/processor.c:714 msgid "DMI Handle" msgstr "" #: modules/devices/dmi_memory.c:670 modules/devices/dmi_memory.c:726 #: modules/devices/dmi_memory.c:764 modules/devices/dmi_memory.c:871 msgid "Locator" msgstr "" #: modules/devices/dmi_memory.c:671 msgid "Use" msgstr "Usar" #: modules/devices/dmi_memory.c:672 msgid "Error Correction Type" msgstr "" #: modules/devices/dmi_memory.c:673 msgid "Size (Present / Max)" msgstr "Tamanho (atual / máx)" #: modules/devices/dmi_memory.c:674 msgid "Devices (Populated / Sockets)" msgstr "" #: modules/devices/dmi_memory.c:675 modules/devices/dmi_memory.c:807 msgid "Types Present" msgstr "Tipos apresentados" #: modules/devices/dmi_memory.c:676 msgid "ROM Size" msgstr "" #: modules/devices/dmi_memory.c:724 modules/devices/dmi_memory.c:762 msgid "Memory Socket" msgstr "" #: modules/devices/dmi_memory.c:725 modules/devices/dmi_memory.c:763 msgid "DMI Handles (Array, Socket)" msgstr "" #: modules/devices/dmi_memory.c:727 modules/devices/dmi_memory.c:765 msgid "Bank Locator" msgstr "" #: modules/devices/dmi_memory.c:728 modules/devices/spd-decode.c:1376 msgid "Form Factor" msgstr "" #: modules/devices/dmi_memory.c:732 modules/devices/spd-decode.c:1382 msgid "Part Number" msgstr "" #: modules/devices/dmi_memory.c:734 msgid "Rated Speed" msgstr "" #: modules/devices/dmi_memory.c:735 msgid "Configured Speed" msgstr "Velocidade configurada" #: modules/devices/dmi_memory.c:736 msgid "Data Width/Total Width" msgstr "" #: modules/devices/dmi_memory.c:737 msgid "Rank" msgstr "Ranque" #: modules/devices/dmi_memory.c:738 msgid "Minimum Voltage" msgstr "Voltagem mínima" #: modules/devices/dmi_memory.c:739 msgid "Maximum Voltage" msgstr "Voltagem máxima" #: modules/devices/dmi_memory.c:740 msgid "Configured Voltage" msgstr "Voltagem configurada" #: modules/devices/dmi_memory.c:766 modules/devices/dmi_memory.c:773 #: modules/devices/monitors.c:495 msgid "(Empty)" msgstr "(Vazio)" #: modules/devices/dmi_memory.c:804 msgid "Serial Presence Detect (SPD) Summary" msgstr "" #: modules/devices/dmi_memory.c:860 msgid "(Not available - See hint box below)" msgstr "" #: modules/devices/dmi_memory.c:932 msgid "No DMI available" msgstr "" #: modules/devices/dmi_memory.c:937 msgid "dmidecode package installed" msgstr "" #: modules/devices/dmi_memory.c:948 msgid "Memory Information requires more Setup:" msgstr "" #: modules/devices/dmi_memory.c:976 msgid "" "\"More often than not, information contained in the DMI tables is " "inaccurate,\n" "incomplete or simply wrong.\" -dmidecode manual page" msgstr "" #: modules/devices/e2k/processor.c:30 modules/devices/x86/processor.c:149 msgid "Cache information not available=\n" msgstr "Informações de cache não disponíveis=\n" #: modules/devices/e2k/processor.c:36 modules/devices/x86/processor.c:155 #, c-format msgid "Level %d (%s)=%d-way set-associative, %d sets, %dKB size\n" msgstr "" "Level %d (%s)=%d-maneira conjunto-associativa, %d Conjuntos, %dKB Tamanho\n" #: modules/devices/e2k/processor.c:51 msgctxt "cache-type" msgid "Data" msgstr "Data" #: modules/devices/e2k/processor.c:52 msgctxt "cache-type" msgid "Instruction" msgstr "Instrução" #: modules/devices/e2k/processor.c:53 msgctxt "cache-type" msgid "Unified" msgstr "Unificado" #: modules/devices/e2k/processor.c:157 modules/devices/x86/processor.c:366 msgid "Caches" msgstr "Caches" #: modules/devices/e2k/processor.c:208 modules/devices/e2k/processor.c:225 #: modules/devices/x86/processor.c:417 modules/devices/x86/processor.c:434 #, c-format msgid "Level %d (%s)#%d=%dx %dKB (%dKB), %d-way set-associative, %d sets\n" msgstr "" "Level %d (%s)#%d=%dx %dKB (%dKB), %d-maneira conjunta-associativa, %d " "Conjuntos\n" #: modules/devices/firmware.c:36 msgid "Device cannot be removed easily" msgstr "O dispositivo não pode ser removido facilmente" #: modules/devices/firmware.c:37 msgid "Device is updatable in this or any other mode" msgstr "O dispositivo será atualizado neste ou em qualquer outro modo" #: modules/devices/firmware.c:38 msgid "Update can only be done from offline mode" msgstr "Atualização apenas pode ser feita a partir do modo offline" #: modules/devices/firmware.c:39 msgid "Requires AC power" msgstr "Precisa de energia AC" #: modules/devices/firmware.c:40 msgid "Is locked and can be unlocked" msgstr "Está bloqueado e pode ser desbloqueado" #: modules/devices/firmware.c:41 msgid "Is found in current metadata" msgstr "Encontrado no atual banco de metadados" #: modules/devices/firmware.c:42 msgid "Requires a bootloader mode to be manually enabled by the user" msgstr "" "Precisa de um modo bootloader para ser manualmente ativado pelo usuário" #: modules/devices/firmware.c:43 msgid "Has been registered with other plugins" msgstr "Foi registrado com outros plugins" #: modules/devices/firmware.c:44 msgid "Requires a reboot to apply firmware or to reload hardware" msgstr "" #: modules/devices/firmware.c:45 msgid "Requires system shutdown to apply firmware" msgstr "" #: modules/devices/firmware.c:46 msgid "Has been reported to a metadata server" msgstr "" #: modules/devices/firmware.c:47 msgid "User has been notified" msgstr "O usuário foi notificado" #: modules/devices/firmware.c:48 msgid "Always use the runtime version rather than the bootloader" msgstr "" #: modules/devices/firmware.c:49 msgid "Install composite firmware on the parent before the child" msgstr "" #: modules/devices/firmware.c:50 msgid "Is currently in bootloader mode" msgstr "Está usando o modo bootloader" #: modules/devices/firmware.c:51 msgid "The hardware is waiting to be replugged" msgstr "O hardware está aguardando para ser replugado" #: modules/devices/firmware.c:52 msgid "Ignore validation safety checks when flashing this device" msgstr "" #: modules/devices/firmware.c:53 msgid "Requires the update to be retried with a new plugin" msgstr "Requer atualização para ser testado com um novo plugin" #: modules/devices/firmware.c:54 msgid "Do not add instance IDs from the device baseclass" msgstr "" #: modules/devices/firmware.c:55 msgid "Device update needs to be separately activated" msgstr "A atualização de dispositivos precisa ser ativada separadamente" #: modules/devices/firmware.c:56 msgid "" "Ensure the version is a valid semantic version, e.g. numbers separated with " "dots" msgstr "" #: modules/devices/firmware.c:57 msgid "Extra metadata can be exposed about this device" msgstr "" #: modules/devices/firmware.c:74 msgid "DeviceId" msgstr "" #: modules/devices/firmware.c:74 modules/devices/firmware.c:187 msgid "Guid" msgstr "" #: modules/devices/firmware.c:74 msgid "Plugin" msgstr "Plugin" #: modules/devices/firmware.c:74 modules/devices/firmware.c:205 #: modules/network.c:381 msgid "Flags" msgstr "Bandeiras" #: modules/devices/firmware.c:75 msgid "VendorId" msgstr "ID do vendedor" #: modules/devices/firmware.c:75 msgid "VersionBootloader" msgstr "Versão do bootloader" #: modules/devices/firmware.c:76 modules/devices/firmware.c:179 msgid "Icon" msgstr "Ícone" #: modules/devices/firmware.c:76 msgid "InstallDuration" msgstr "Duração da instalação" #: modules/devices/firmware.c:76 modules/devices/firmware.c:197 msgid "Created" msgstr "Criado" #: modules/devices/firmware.c:244 msgid "Firmware List" msgstr "Lista de firmware" #: modules/devices/firmware.c:257 msgid "Requires the fwupd daemon." msgstr "" #: modules/devices/gpu.c:94 modules/devices/pci.c:111 #: modules/devices/storage.c:58 msgid "SVendor" msgstr "SVendor" #: modules/devices/gpu.c:95 modules/devices/pci.c:112 #: modules/devices/storage.c:59 msgid "SDevice" msgstr "SDevice" #: modules/devices/gpu.c:103 modules/devices/pci.c:122 #: modules/devices/storage.c:68 msgid "PCI Express" msgstr "PCI Express" #: modules/devices/gpu.c:104 modules/devices/pci.c:124 #: modules/devices/storage.c:70 msgid "Maximum Link Width" msgstr "Largura máxima do link" #: modules/devices/gpu.c:105 modules/devices/pci.c:126 #: modules/devices/storage.c:71 msgid "Maximum Link Speed" msgstr "Velocidade Máxima de Link" #: modules/devices/gpu.c:105 modules/devices/pci.c:125 #: modules/devices/pci.c:126 modules/devices/storage.c:71 msgid "GT/s" msgstr "GT/s" #: modules/devices/gpu.c:115 msgid "NVIDIA" msgstr "NVIDIA" #: modules/devices/gpu.c:117 msgid "BIOS Version" msgstr "Versão de Bios" #: modules/devices/gpu.c:118 msgid "UUID" msgstr "UUID" #: modules/devices/gpu.c:197 modules/devices/gpu.c:289 #: modules/devices/inputdevices.c:140 modules/devices/pci.c:143 #: modules/devices/usb.c:169 msgid "Device Information" msgstr "Informação de dispositivo" #: modules/devices/gpu.c:199 modules/devices/gpu.c:291 #: modules/devices/storage.c:69 msgid "Location" msgstr "Localização" #: modules/devices/gpu.c:200 msgid "DRM Device" msgstr "Dispositivo DRM" #: modules/devices/gpu.c:201 modules/devices/pci.c:144 #: modules/devices/usb.c:136 modules/devices/usb.c:177 msgid "Class" msgstr "Classe" #: modules/devices/gpu.c:210 modules/devices/pci.c:149 msgid "In Use" msgstr "Em uso" #: modules/devices/gpu.c:245 msgid "Unknown integrated GPU" msgstr "GPU integrado desconhecido" #: modules/devices/gpu.c:253 msgid "clock-frequency property" msgstr "propriedade da frequência-clock" #: modules/devices/gpu.c:254 msgid "Operating Points (OPPv1)" msgstr "" #: modules/devices/gpu.c:255 msgid "Operating Points (OPPv2)" msgstr "" #: modules/devices/gpu.c:297 msgid "Device Tree Node" msgstr "" #: modules/devices/gpu.c:300 modules/devices/monitors.c:475 #: modules/network/net.c:477 msgid "Status" msgstr "Estado" #: modules/devices/gpu.c:317 msgid "GPUs" msgstr "GPUs" #: modules/devices/gpu.c:341 msgid "No GPU devices found" msgstr "Nenhum dispositivo GPU encontrado" #: modules/devices/ia64/processor.c:108 msgid "IA64 Processor" msgstr "Processador IA64" #: modules/devices/ia64/processor.c:163 msgid "Architecture Revision" msgstr "Revisão de Arquitetura" #: modules/devices/ia64/processor.c:170 msgid "CPU regs" msgstr "Regs da CPU" #: modules/devices/ia64/processor.c:171 #: modules/devices/loongarch64/processor.c:100 msgid "Features" msgstr "Características" #: modules/devices/inputdevices.c:143 modules/devices/pci.c:153 #: modules/devices/usb.c:183 msgid "Bus" msgstr "Bus" #: modules/devices/inputdevices.c:149 msgid "Connected to" msgstr "Conectado a" #: modules/devices/inputdevices.c:153 msgid "InfraRed port" msgstr "Porta de infravermelhos" #: modules/devices/loongarch64/processor.c:94 #: modules/devices/mips/processor.c:76 msgid "System Type" msgstr "Tipo de sistema" #: modules/devices/loongarch64/processor.c:99 msgid "BogoMIPS" msgstr "" #: modules/devices/m68k/processor.c:85 modules/devices/riscv/processor.c:245 msgid "MMU" msgstr "MMU" #: modules/devices/m68k/processor.c:86 modules/devices/sparc/processor.c:76 msgid "FPU" msgstr "FPU" #: modules/devices/m68k/processor.c:90 msgid "Calibration" msgstr "Calibração" #: modules/devices/monitors.c:30 modules/devices/monitors.c:257 #: modules/devices/monitors.c:350 modules/devices/spd-decode.c:699 msgid "(Unspecified)" msgstr "(Não especificado)" #: modules/devices/monitors.c:232 #, c-format msgid "Week %d of %d" msgstr "" #: modules/devices/monitors.c:242 msgid "Ok" msgstr "" #: modules/devices/monitors.c:242 msgid "Fail" msgstr "" #: modules/devices/monitors.c:270 modules/devices/monitors.c:278 #: modules/devices/monitors.c:286 modules/devices/monitors.c:297 #: modules/devices/monitors.c:305 modules/devices/monitors.c:312 #: modules/devices/monitors.c:320 modules/devices/monitors.c:328 #: modules/devices/monitors.c:336 modules/devices/monitors.c:342 msgid "(Empty List)" msgstr "" #: modules/devices/monitors.c:394 msgid "Signal Type" msgstr "" #: modules/devices/monitors.c:394 msgid "Digital" msgstr "" #: modules/devices/monitors.c:394 msgid "Analog" msgstr "" #: modules/devices/monitors.c:395 modules/devices/usb.c:135 #: modules/network.c:311 modules/network.c:364 modules/network.c:381 msgid "Interface" msgstr "Interface" #: modules/devices/monitors.c:396 msgid "Bits per Color Channel" msgstr "" #: modules/devices/monitors.c:397 msgid "Speaker Allocation" msgstr "" #: modules/devices/monitors.c:398 msgid "Output (Max)" msgstr "" #: modules/devices/monitors.c:401 msgid "EDID Device" msgstr "" #: modules/devices/monitors.c:405 msgid "Serial" msgstr "" #: modules/devices/monitors.c:406 msgid "Manufacture Date" msgstr "" #: modules/devices/monitors.c:407 msgid "EDID Meta" msgstr "" #: modules/devices/monitors.c:408 msgid "Data Size" msgstr "" #: modules/devices/monitors.c:408 msgid "bytes" msgstr "" #: modules/devices/monitors.c:410 msgid "Extension Blocks" msgstr "" #: modules/devices/monitors.c:411 msgid "Extended to" msgstr "" #: modules/devices/monitors.c:412 msgid "Checksum" msgstr "" #: modules/devices/monitors.c:413 msgid "EDID Descriptors" msgstr "" #: modules/devices/monitors.c:414 msgid "Detailed Timing Descriptors (DTD)" msgstr "" #: modules/devices/monitors.c:415 msgid "Established Timings Bitmap (ETB)" msgstr "" #: modules/devices/monitors.c:416 msgid "Standard Timings (STD)" msgstr "" #: modules/devices/monitors.c:417 msgid "E-EDID Extension Blocks" msgstr "" #: modules/devices/monitors.c:418 msgid "EIA/CEA-861 Data Blocks" msgstr "" #: modules/devices/monitors.c:419 msgid "EIA/CEA-861 Short Audio Descriptors" msgstr "" #: modules/devices/monitors.c:420 msgid "EIA/CEA-861 Short Video Descriptors" msgstr "" #: modules/devices/monitors.c:421 msgid "DisplayID Timings" msgstr "" #: modules/devices/monitors.c:422 msgid "DisplayID Strings" msgstr "" #: modules/devices/monitors.c:423 msgid "Hex Dump" msgstr "" #: modules/devices/monitors.c:423 msgid "Data" msgstr "" #: modules/devices/monitors.c:473 modules/devices/monitors.c:504 #: modules/devices/pci.c:151 modules/devices/usb.c:182 msgid "Connection" msgstr "Conexão" #: modules/devices/monitors.c:474 msgid "DRM" msgstr "" #: modules/devices/parisc/processor.c:107 msgid "PA-RISC Processor" msgstr "Processador PA-RISC" #: modules/devices/parisc/processor.c:161 msgid "HVersion" msgstr "HVersion" #: modules/devices/parisc/processor.c:162 msgid "SVersion" msgstr "SVersion" #: modules/devices/pci.c:123 msgid "Link Width" msgstr "Largura do Link" #: modules/devices/pci.c:125 msgid "Link Speed" msgstr "Velocidade de Link" #: modules/devices/pci.c:152 msgid "Domain" msgstr "Domínio" #: modules/devices/pci.c:155 msgid "Function" msgstr "Função" #: modules/devices/pci.c:196 msgid "No PCI devices found" msgstr "Nenhum dispositivo PCI encontrado" #: modules/devices/ppc/processor.c:117 msgid "POWER Processor" msgstr "Processador POWER" #: modules/devices/printers.c:88 msgid "⚬ Can do black and white printing=\n" msgstr "⚬ Pode fazer impressão a preto e branco=\n" #: modules/devices/printers.c:90 msgid "⚬ Can do color printing=\n" msgstr "⚬ Pode fazer impressão colorido=\n" #: modules/devices/printers.c:92 msgid "⚬ Can do duplexing=\n" msgstr "⚬ Pode fazer duplex=\n" #: modules/devices/printers.c:94 msgid "⚬ Can do staple output=\n" msgstr "⚬Pode fazer a saída de grampos=\n" #: modules/devices/printers.c:96 msgid "⚬ Can do copies=\n" msgstr "⚬ pode fazer copias=\n" #: modules/devices/printers.c:98 msgid "⚬ Can collate copies=\n" msgstr "⚬ Pode agrupar cópias=\n" #: modules/devices/printers.c:100 msgid "⚬ Printer is rejecting jobs=\n" msgstr "⚬ A impressora está rejeitando trabalhos=\n" #: modules/devices/printers.c:102 msgid "⚬ Printer was automatically discovered and added=\n" msgstr "⚬A impressora foi descoberta e adicionada automaticamente=\n" #: modules/devices/printers.c:117 msgid "Idle" msgstr "Ocioso Idle" #: modules/devices/printers.c:119 msgid "Printing a Job" msgstr "Imprimindo um trabalho" #: modules/devices/printers.c:121 msgid "Stopped" msgstr "Parado" #: modules/devices/printers.c:200 msgid "" "[Printers]\n" "No suitable CUPS library found=" msgstr "" "[Impressoras]\n" "Nenhuma biblioteca apropriada do CUPS encontrada=" #: modules/devices/printers.c:213 msgid "[Printers (CUPS)]\n" msgstr "[Impressoras (CUPS)]\n" #: modules/devices/printers.c:277 msgid "" "[Printers]\n" "No printers found=\n" msgstr "" "[Impressoras]\n" "Nenhuma impressora encontrada=\n" #: modules/devices/riscv/processor.c:244 msgid "uarch" msgstr "uarch" #: modules/devices/riscv/riscv_data.c:37 msgctxt "rv-ext" msgid "RISC-V 32-bit" msgstr "RISC-V 32-bit" #: modules/devices/riscv/riscv_data.c:38 msgctxt "rv-ext" msgid "RISC-V 64-bit" msgstr "RISC-V 64-bit" #: modules/devices/riscv/riscv_data.c:39 msgctxt "rv-ext" msgid "RISC-V 128-bit" msgstr "RISC-V 128-bit" #: modules/devices/riscv/riscv_data.c:40 msgctxt "rv-ext" msgid "Base embedded integer instructions (15 registers)" msgstr "Instruções de inteiros embutidos na base (15 registradores)" #: modules/devices/riscv/riscv_data.c:41 msgctxt "rv-ext" msgid "Base integer instructions (31 registers)" msgstr "Instruções de base inteira (31 registros)" #: modules/devices/riscv/riscv_data.c:42 msgctxt "rv-ext" msgid "Hardware integer multiply and divide" msgstr "O inteiro de hardware multiplica e divide" #: modules/devices/riscv/riscv_data.c:43 msgctxt "rv-ext" msgid "Atomic memory operations" msgstr "Operações de memória atômica" #: modules/devices/riscv/riscv_data.c:44 msgctxt "rv-ext" msgid "Compressed 16-bit instructions" msgstr "Instruções de 16 bits compactadas" #: modules/devices/riscv/riscv_data.c:45 msgctxt "rv-ext" msgid "Floating-point instructions, single-precision" msgstr "Instruções de ponto flutuante, precisão única" #: modules/devices/riscv/riscv_data.c:46 msgctxt "rv-ext" msgid "Floating-point instructions, double-precision" msgstr "Instruções de ponto flutuante, precisão dupla" #: modules/devices/riscv/riscv_data.c:47 msgctxt "rv-ext" msgid "Floating-point instructions, quad-precision" msgstr "Instruções de ponto flutuante, precisão quádrupla" #: modules/devices/riscv/riscv_data.c:48 msgctxt "rv-ext" msgid "Bit manipulation instructions" msgstr "Instruções de manipulação de bits" #: modules/devices/riscv/riscv_data.c:49 msgctxt "rv-ext" msgid "Vector operations" msgstr "Operações vetoriais" #: modules/devices/riscv/riscv_data.c:50 msgctxt "rv-ext" msgid "Scalar Cryptography" msgstr "" #: modules/devices/riscv/riscv_data.c:51 msgctxt "rv-ext" msgid "Base Counters and Timers" msgstr "" #: modules/devices/riscv/riscv_data.c:52 msgctxt "rv-ext" msgid "Control and Status Register" msgstr "" #: modules/devices/riscv/riscv_data.c:53 msgctxt "rv-ext" msgid "Instruction-Fetch Fence" msgstr "" #: modules/devices/riscv/riscv_data.c:54 msgctxt "rv-ext" msgid "Hardware performance counters" msgstr "" #: modules/devices/riscv/riscv_data.c:55 msgctxt "rv-ext" msgid "Accell Index addresses" msgstr "" #: modules/devices/riscv/riscv_data.c:56 msgctxt "rv-ext" msgid "Basic bit-manipulation" msgstr "" #: modules/devices/riscv/riscv_data.c:57 msgctxt "rv-ext" msgid "Supervisor-level Instructions" msgstr "" #: modules/devices/riscv/riscv_data.c:58 msgctxt "rv-ext" msgid "User Mode" msgstr "" #: modules/devices/riscv/riscv_data.c:59 msgctxt "rv-ext" msgid "Transactional memory" msgstr "Memória transacional" #: modules/devices/riscv/riscv_data.c:60 msgctxt "rv-ext" msgid "Packed SIMD instructions" msgstr "Instruções embaladas SIMD" #: modules/devices/riscv/riscv_data.c:61 msgctxt "rv-ext" msgid "Decimal floating-point instructions" msgstr "Instruções decimais de ponto flutuante" #: modules/devices/riscv/riscv_data.c:62 msgctxt "rv-ext" msgid "Dynamically translated languages" msgstr "Idiomas dinamicamente traduzidos" #: modules/devices/riscv/riscv_data.c:63 msgctxt "rv-ext" msgid "User-level interrupts" msgstr "Interrupções no nível do usuário" #: modules/devices/s390/processor.c:92 msgid "S390 Processor" msgstr "Processador S390" #: modules/devices/s390/processor.c:133 msgid "ID String" msgstr "String de ID" #: modules/devices/sh/processor.c:55 msgid "SuperH Processor" msgstr "Processador SuperH" #: modules/devices/sh/processor.c:88 msgid "Bus Frequency" msgstr "Frequência de Barramento" #: modules/devices/sh/processor.c:89 msgid "Module Frequency" msgstr "Frequência do Módulo" #: modules/devices/spd-decode.c:128 modules/devices/spd-decode.c:144 msgid "Unspecified" msgstr "" #: modules/devices/spd-decode.c:130 modules/devices/spd-decode.c:146 msgid "Invalid" msgstr "Inválido" #: modules/devices/spd-decode.c:358 msgid "Row address bits" msgstr "" #: modules/devices/spd-decode.c:359 msgid "Column address bits" msgstr "" #: modules/devices/spd-decode.c:360 msgid "Number of rows" msgstr "Número de linhas" #: modules/devices/spd-decode.c:361 msgid "Data width" msgstr "" #: modules/devices/spd-decode.c:362 msgid "Interface signal levels" msgstr "" #: modules/devices/spd-decode.c:363 msgid "Configuration type" msgstr "Tipo de configuração" #: modules/devices/spd-decode.c:364 msgid "Refresh" msgstr "Atualizar" #: modules/devices/spd-decode.c:365 modules/devices/spd-decode.c:442 #: modules/devices/spd-decode.c:721 msgid "Timings" msgstr "" #: modules/devices/spd-decode.c:589 modules/devices/spd-decode.c:858 #: modules/devices/spd-decode.c:899 modules/devices/spd-decode.c:1111 #: modules/devices/x86/processor.c:716 msgid "Voltage" msgstr "Voltagem" #: modules/devices/spd-decode.c:590 modules/devices/spd-decode.c:901 #: modules/devices/spd-decode.c:1113 msgid "JEDEC Timings" msgstr "" #: modules/devices/spd-decode.c:697 msgid "Ranks" msgstr "Ranques" #: modules/devices/spd-decode.c:698 msgid "IO Pins per Chip" msgstr "" #: modules/devices/spd-decode.c:699 msgid "Die count" msgstr "" #: modules/devices/spd-decode.c:700 msgid "Thermal Sensor" msgstr "Sensor termal" #: modules/devices/spd-decode.c:700 msgid "Present" msgstr "Presente" #: modules/devices/spd-decode.c:700 msgid "Not present" msgstr "Não presente" #: modules/devices/spd-decode.c:701 msgid "Supported Voltages" msgstr "Voltagens suportadas" #: modules/devices/spd-decode.c:705 msgid "Supported CAS Latencies" msgstr "" #: modules/devices/spd-decode.c:856 msgid "XMP Profile" msgstr "Perfil XMP" #: modules/devices/spd-decode.c:857 modules/devices/usb.c:176 #: modules/network/net.c:438 msgid "Speed" msgstr "Velocidade" #: modules/devices/spd-decode.c:859 msgid "XMP Timings" msgstr "" #: modules/devices/spd-decode.c:900 msgid "XMP" msgstr "XMP" #: modules/devices/spd-decode.c:1372 msgid "Serial Presence Detect (SPD)" msgstr "" #: modules/devices/spd-decode.c:1375 msgid "SPD Revision" msgstr "" #: modules/devices/spd-decode.c:1378 msgid "Module Vendor" msgstr "" #: modules/devices/spd-decode.c:1380 msgid "DRAM Vendor" msgstr "" #: modules/devices/spd-decode.c:1385 msgid "Manufacturing Date (Year / Week)" msgstr "" #: modules/devices/storage.c:46 modules/devices/storage.c:55 msgid "NVMe Controller" msgstr "" #: modules/devices/storage.c:138 msgid "Read Error Rate" msgstr "" #: modules/devices/storage.c:139 msgid "Throughput Performance" msgstr "" #: modules/devices/storage.c:140 msgid "Spin-Up Time" msgstr "" #: modules/devices/storage.c:141 msgid "Start/Stop Count" msgstr "" #: modules/devices/storage.c:142 msgid "Reallocated Sector Count" msgstr "" #: modules/devices/storage.c:143 msgid "Read Channel Margin" msgstr "" #: modules/devices/storage.c:144 msgid "Seek Error Rate" msgstr "" #: modules/devices/storage.c:145 msgid "Seek Timer Performance" msgstr "" #: modules/devices/storage.c:146 modules/devices/storage.c:185 msgid "Power-On Hours" msgstr "" #: modules/devices/storage.c:147 msgid "Spin Retry Count" msgstr "" #: modules/devices/storage.c:148 msgid "Calibration Retry Count" msgstr "" #: modules/devices/storage.c:149 msgid "Power Cycle Count" msgstr "" #: modules/devices/storage.c:150 modules/devices/storage.c:167 msgid "Soft Read Error Rate" msgstr "" #: modules/devices/storage.c:151 msgid "Runtime Bad Block" msgstr "" #: modules/devices/storage.c:152 msgid "End-to-End error" msgstr "" #: modules/devices/storage.c:153 msgid "Reported Uncorrectable Errors" msgstr "" #: modules/devices/storage.c:154 msgid "Command Timeout" msgstr "" #: modules/devices/storage.c:155 msgid "High Fly Writes" msgstr "" #: modules/devices/storage.c:156 msgid "Airflow Temperature" msgstr "" #: modules/devices/storage.c:157 msgid "G-sense Error Rate" msgstr "" #: modules/devices/storage.c:158 msgid "Power-off Retract Count" msgstr "" #: modules/devices/storage.c:159 msgid "Load Cycle Count" msgstr "" #: modules/devices/storage.c:160 modules/devices/storage.c:183 msgid "Temperature" msgstr "" #: modules/devices/storage.c:161 msgid "Hardware ECC Recovered" msgstr "" #: modules/devices/storage.c:162 msgid "Reallocation Event Count" msgstr "" #: modules/devices/storage.c:163 msgid "Current Pending Sector Count" msgstr "" #: modules/devices/storage.c:164 msgid "Uncorrectable Sector Count" msgstr "" #: modules/devices/storage.c:165 msgid "UltraDMA CRC Error Count" msgstr "" #: modules/devices/storage.c:166 msgid "Multi-Zone Error Rate" msgstr "" #: modules/devices/storage.c:168 msgid "Run Out Cancel" msgstr "" #: modules/devices/storage.c:169 msgid "Flying Height" msgstr "" #: modules/devices/storage.c:170 msgid "Spin High Current" msgstr "" #: modules/devices/storage.c:171 msgid "Spin Buzz" msgstr "" #: modules/devices/storage.c:172 msgid "Offline Seek Performance" msgstr "" #: modules/devices/storage.c:173 msgid "Disk Shift" msgstr "" #: modules/devices/storage.c:174 msgid "G-Sense Error Rate" msgstr "" #: modules/devices/storage.c:175 msgid "Loaded Hours" msgstr "" #: modules/devices/storage.c:176 msgid "Load/Unload Retry Count" msgstr "" #: modules/devices/storage.c:177 msgid "Load Friction" msgstr "" #: modules/devices/storage.c:178 msgid "Load/Unload Cycle Count" msgstr "" #: modules/devices/storage.c:179 msgid "Load-in time" msgstr "" #: modules/devices/storage.c:180 msgid "Torque Amplification Count" msgstr "" #: modules/devices/storage.c:181 msgid "Power-Off Retract Count" msgstr "" #: modules/devices/storage.c:182 msgid "GMR Head Amplitude" msgstr "" #: modules/devices/storage.c:184 msgid "Endurance Remaining" msgstr "" #: modules/devices/storage.c:186 msgid "Good Block Rate" msgstr "" #: modules/devices/storage.c:187 msgid "Head Flying Hours" msgstr "" #: modules/devices/storage.c:188 msgid "Read Error Retry Rate" msgstr "" #: modules/devices/storage.c:189 msgid "Total LBAs Written" msgstr "" #: modules/devices/storage.c:190 msgid "Total LBAs Read" msgstr "" #: modules/devices/storage.c:191 msgid "Wear leveling Count" msgstr "" #: modules/devices/storage.c:192 msgid "Total Used Reserved Block Count" msgstr "" #: modules/devices/storage.c:193 msgid "Total Program Fail Count" msgstr "" #: modules/devices/storage.c:194 msgid "Total Erase Fail Count" msgstr "" #: modules/devices/storage.c:195 msgid "Available Reserved Space" msgstr "" #: modules/devices/storage.c:196 msgid "Program Fail Count" msgstr "" #: modules/devices/storage.c:197 msgid "Erase Fail Count" msgstr "" #: modules/devices/storage.c:198 msgid "TA Counter Increased" msgstr "" #: modules/devices/storage.c:199 msgid "Total Unused Reserved Block Count" msgstr "" #: modules/devices/storage.c:204 msgid "" "\n" "[UDisks2]\n" msgstr "" "\n" "[UDisks2]\n" #: modules/devices/storage.c:257 msgid "Removable" msgstr "Removível" #: modules/devices/storage.c:257 msgid "Fixed" msgstr "Fixo" #: modules/devices/storage.c:260 msgid "Ejectable" msgstr "Ejetável" #: modules/devices/storage.c:263 msgid "Self-monitoring (S.M.A.R.T.)" msgstr "Monitoramento automático (S.M.A.R.T.)" #: modules/devices/storage.c:266 modules/devices/x86/processor.c:664 msgid "Power Management" msgstr "Gerenciamento de energia" #: modules/devices/storage.c:269 msgid "Advanced Power Management" msgstr "Gerenciamento avançando de energia" #: modules/devices/storage.c:272 msgid "Automatic Acoustic Management" msgstr "Gerenciamento acústico automático" #: modules/devices/storage.c:275 #, c-format msgid "" "[Drive Information]\n" "Model=%s\n" msgstr "" "[Informação do dispositivo]\n" "Modelo=%s\n" #: modules/devices/storage.c:285 #, c-format msgid "" "Revision=%s\n" "Block Device=%s\n" "Serial=%s\n" "Size=%s\n" "Features=%s\n" msgstr "" #: modules/devices/storage.c:300 #, c-format msgid "Rotation Rate=%d RPM\n" msgstr "" #: modules/devices/storage.c:303 #, c-format msgid "" "Media=%s\n" "Media compatibility=%s\n" msgstr "" "Mídia=%s\n" "Compatibilidade da mídia=%s\n" #: modules/devices/storage.c:310 #, c-format msgid "Connection bus=%s\n" msgstr "" #: modules/devices/storage.c:322 msgid "WWN" msgstr "" #: modules/devices/storage.c:323 msgid "EUI " msgstr "" #: modules/devices/storage.c:328 msgid "WWN / EUI" msgstr "" #: modules/devices/storage.c:332 #, c-format msgid "$^$%s=[%s] %s\n" msgstr "" #: modules/devices/storage.c:334 msgid "IEEE OUI" msgstr "" #: modules/devices/storage.c:346 msgid "" "[Self-monitoring (S.M.A.R.T.)]\n" "Status=%s\n" "Bad Sectors=%" msgstr "" #: modules/devices/storage.c:352 msgid "Failing" msgstr "" #: modules/devices/storage.c:352 msgid "OK" msgstr "OK" #: modules/devices/storage.c:358 msgid "" "[S.M.A.R.T. Attributes]\n" "Attribute=Value / Normalized / Worst / Threshold\n" msgstr "" #: modules/devices/storage.c:381 msgid "%" msgid_plural "%" msgstr[0] "" msgstr[1] "" #: modules/devices/storage.c:419 #, c-format msgid "(%d) %s=%s\n" msgstr "" #: modules/devices/storage.c:428 #, c-format msgid "" "[Partition table]\n" "Type=%s\n" msgstr "" "[Tabela de partição]\n" "Tipo=%s\n" #: modules/devices/storage.c:447 #, c-format msgid "Partition %s=%s\n" msgstr "Partição %s=%s\n" #: modules/devices/storage.c:496 msgid "" "\n" "[SCSI Disks]\n" msgstr "" "\n" "[SCSI Discos]\n" #: modules/devices/storage.c:567 modules/devices/storage.c:773 #, c-format msgid "" "[Device Information]\n" "Model=%s\n" msgstr "" "[Informação de dispositivo]\n" "Modelo=%s\n" #: modules/devices/storage.c:574 #, c-format msgid "" "Type=%s\n" "Revision=%s\n" "[SCSI Controller]\n" "Controller=scsi%d\n" "Channel=%d\n" "ID=%d\n" "LUN=%d\n" msgstr "" "Tipo=%s\n" "Revisão=%s\n" "[SCSI Controlador]\n" "Controlador=scsi%d\n" "Chanal=%d\n" "ID=%d\n" "LUN=%d\n" #: modules/devices/storage.c:621 msgid "" "\n" "[IDE Disks]\n" msgstr "" "\n" "[IDE Discos]\n" #: modules/devices/storage.c:707 #, c-format msgid "Driver=%s\n" msgstr "Driver=%s\n" #: modules/devices/storage.c:779 #, c-format msgid "" "Device Name=hd%c\n" "Media=%s\n" "Cache=%dkb\n" msgstr "" "Nome do dispositivo=hd%c\n" "mídia=%s\n" "Cache=%dkb\n" #: modules/devices/storage.c:789 #, c-format msgid "" "[Geometry]\n" "Physical=%s\n" "Logical=%s\n" msgstr "" "[Geometria]\n" "Físico=%s\n" "Lógico=%s\n" #: modules/devices/storage.c:799 #, c-format msgid "" "[Capabilities]\n" "%s" msgstr "" "[Capacidades]\n" "%s" #: modules/devices/storage.c:806 #, c-format msgid "" "[Speeds]\n" "%s" msgstr "" "[Velocidades]\n" "%s" #: modules/devices/usb.c:137 modules/devices/usb.c:178 msgid "Sub-class" msgstr "Subclasse" #: modules/devices/usb.c:138 modules/devices/usb.c:179 modules/network.c:348 msgid "Protocol" msgstr "Protocolo" #: modules/devices/usb.c:146 modules/network/net.c:474 msgid "Mb/s" msgstr "Mb/s" #: modules/devices/usb.c:174 msgid "Max Current" msgstr "Corrente Máxima" #: modules/devices/usb.c:174 msgid "mA" msgstr "mA" #: modules/devices/usb.c:175 msgid "USB Version" msgstr "Versão do USB" #: modules/devices/usb.c:180 msgid "Device Version" msgstr "Versão do dispositivo" #: modules/devices/usb.c:222 msgid "No USB devices found." msgstr "Nenhum dispositivo USB encontrado." #: modules/devices/x86/processor.c:648 msgid "Model Name" msgstr "Nome do modelo" #: modules/devices/x86/processor.c:649 msgid "Family, model, stepping" msgstr "Família, modelo, pisar Stpeping" #: modules/devices/x86/processor.c:655 msgid "Microcode Version" msgstr "Versão do microcódigo" #: modules/devices/x86/processor.c:656 msgid "Configuration" msgstr "Configuração " #: modules/devices/x86/processor.c:657 msgid "Cache Size" msgstr "Tamanho do Cache" #: modules/devices/x86/processor.c:657 msgid "kb" msgstr "kb" #: modules/devices/x86/processor.c:665 msgid "Bug Workarounds" msgstr "Soluções alternativas para insetos" #: modules/devices/x86/processor.c:692 msgid "Socket Information" msgstr "" #: modules/devices/x86/processor.c:695 msgid "(Not available; Perhaps try running hardinfo2 as root.)" msgstr "" #: modules/devices/x86/processor.c:713 msgid "CPU Socket" msgstr "" #: modules/devices/x86/processor.c:717 msgid "External Clock" msgstr "" #: modules/devices/x86/processor.c:718 msgid "Max Frequency" msgstr "Frequência máxima " #: modules/devices/x86/processor.c:749 msgid "Package Information" msgstr "Informação do Pacote" #: modules/devices/x86/processor.c:811 msgid "Socket:Core" msgstr "Soquete: Núcleo" #. !/flag:fpu #: modules/devices/x86/x86_data.c:48 msgctxt "x86-flag" msgid "Onboard FPU (floating point support)" msgstr "FPU a bordo (suporte a ponto flutuante)" #. !/flag:vme #: modules/devices/x86/x86_data.c:49 msgctxt "x86-flag" msgid "Virtual 8086 mode enhancements" msgstr "Aprimoramentos do modo virtual 8086" #. !/flag:de #: modules/devices/x86/x86_data.c:50 msgctxt "x86-flag" msgid "Debugging Extensions (CR4.DE)" msgstr "Extensões de Depuração (CR4.DE)" #. !/flag:pse #: modules/devices/x86/x86_data.c:51 msgctxt "x86-flag" msgid "Page Size Extensions (4MB memory pages)" msgstr "Extensões de tamanho de página (4MB de páginas de memória)" #. !/flag:tsc #: modules/devices/x86/x86_data.c:52 msgctxt "x86-flag" msgid "Time Stamp Counter (RDTSC)" msgstr "Contador de Carimbo de Tempo (RDTSC)" #. !/flag:msr #: modules/devices/x86/x86_data.c:53 msgctxt "x86-flag" msgid "Model-Specific Registers (RDMSR, WRMSR)" msgstr "Registros Específicos do Modelo (RDMSR, WRMSR)" #. !/flag:pae #: modules/devices/x86/x86_data.c:54 msgctxt "x86-flag" msgid "Physical Address Extensions (support for more than 4GB of RAM)" msgstr "Extensões de endereço físico (suporte para mais de 4 GB de RAM)" #. !/flag:mce #: modules/devices/x86/x86_data.c:55 msgctxt "x86-flag" msgid "Machine Check Exception" msgstr "Exceção de Verificação de Máquina" #. !/flag:cx8 #: modules/devices/x86/x86_data.c:56 msgctxt "x86-flag" msgid "CMPXCHG8 instruction (64-bit compare-and-swap)" msgstr "Instrução CMPXCHG8 (comparação e troca de 64 bits) " #. !/flag:apic #: modules/devices/x86/x86_data.c:57 msgctxt "x86-flag" msgid "Onboard APIC" msgstr "APIC a bordo" #. !/flag:sep #: modules/devices/x86/x86_data.c:58 msgctxt "x86-flag" msgid "SYSENTER/SYSEXIT" msgstr "SYSENTER / SYSEXIT" #. !/flag:mtrr #: modules/devices/x86/x86_data.c:59 msgctxt "x86-flag" msgid "Memory Type Range Registers" msgstr "Registros de intervalo de tipo de memória" #. !/flag:pge #: modules/devices/x86/x86_data.c:60 msgctxt "x86-flag" msgid "Page Global Enable (global bit in PDEs and PTEs)" msgstr "Page Global Enable (global bit in PDEs and PTEs)" #. !/flag:mca #: modules/devices/x86/x86_data.c:61 msgctxt "x86-flag" msgid "Machine Check Architecture" msgstr "Arquitetura de verificação de máquinas" #. !/flag:cmov #: modules/devices/x86/x86_data.c:62 msgctxt "x86-flag" msgid "CMOV instructions (conditional move) (also FCMOV)" msgstr "Instruções CMOV (movimento condicional) (também FCMOV)" #. !/flag:pat #: modules/devices/x86/x86_data.c:63 msgctxt "x86-flag" msgid "Page Attribute Table" msgstr "Tabela de Atributos da Página" #. !/flag:pse36 #: modules/devices/x86/x86_data.c:64 msgctxt "x86-flag" msgid "36-bit PSEs (huge pages)" msgstr "PSEs de 36 bits (páginas enormes)" #. !/flag:pn #: modules/devices/x86/x86_data.c:65 msgctxt "x86-flag" msgid "Processor serial number" msgstr "Número de série do processador" #. !/flag:clflush #: modules/devices/x86/x86_data.c:66 msgctxt "x86-flag" msgid "Cache Line Flush instruction" msgstr "Instrução de limpeza de linha de cache" #. !/flag:dts #: modules/devices/x86/x86_data.c:67 msgctxt "x86-flag" msgid "" "Debug Store (buffer for debugging and profiling instructions), or " "alternately: digital thermal sensor" msgstr "" "Armazenamento de Depuração (buffer para instruções de depuração e criação de " "perfil) ou alternativamente: sensor térmico digital" #. !/flag:acpi #: modules/devices/x86/x86_data.c:68 msgctxt "x86-flag" msgid "ACPI via MSR (temperature monitoring and clock speed modulation)" msgstr "" "ACPI via MSR (monitoramento de temperatura e modulação de velocidade do " "clock)" #. !/flag:mmx #: modules/devices/x86/x86_data.c:69 msgctxt "x86-flag" msgid "Multimedia Extensions" msgstr "Extensões Multimídia" #. !/flag:fxsr #: modules/devices/x86/x86_data.c:70 msgctxt "x86-flag" msgid "FXSAVE/FXRSTOR, CR4.OSFXSR" msgstr "FXSAVE/FXRSTOR, CR4.OSFXSR" #. !/flag:sse #: modules/devices/x86/x86_data.c:71 msgctxt "x86-flag" msgid "Intel SSE vector instructions" msgstr "Instruções vetoriais Intel SSE" #. !/flag:sse2 #: modules/devices/x86/x86_data.c:72 msgctxt "x86-flag" msgid "SSE2" msgstr "SSE2" #. !/flag:ss #: modules/devices/x86/x86_data.c:73 msgctxt "x86-flag" msgid "CPU self snoop" msgstr "Snoop auto CPU" #. !/flag:ht #: modules/devices/x86/x86_data.c:74 msgctxt "x86-flag" msgid "Hyper-Threading" msgstr "Hyper-Threading" #. !/flag:tm #: modules/devices/x86/x86_data.c:75 msgctxt "x86-flag" msgid "Automatic clock control (Thermal Monitor)" msgstr "Controle de relógio automático (Monitor térmico)" #. !/flag:ia64 #: modules/devices/x86/x86_data.c:76 msgctxt "x86-flag" msgid "" "Intel Itanium Architecture 64-bit (not to be confused with Intel's 64-bit " "x86 architecture with flag x86-64 or \"AMD64\" bit indicated by flag lm)" msgstr "" "Arquitetura Intel Itanium de 64 bits (não deve ser confundida com a " "arquitetura x86 de 64 bits da Intel com o sinalizador x86-64 ou bit " "\"AMD64\" indicado pelo sinalizador lm)" #. !/flag:pbe #: modules/devices/x86/x86_data.c:77 msgctxt "x86-flag" msgid "Pending Break Enable (PBE# pin) wakeup support" msgstr "Suporte à ativação de interrupção pendente (PBE # pin)" #. !/flag:syscall #: modules/devices/x86/x86_data.c:80 msgctxt "x86-flag" msgid "SYSCALL (Fast System Call) and SYSRET (Return From Fast System Call)" msgstr "" "SYSCALL (Chamada Rápida do Sistema) e SYSRET (Retorno da Chamada Rápida do " "Sistema)" #. !/flag:mp #: modules/devices/x86/x86_data.c:81 msgctxt "x86-flag" msgid "Multiprocessing Capable." msgstr "Multiprocessamento Capaz." #. !/flag:nx #: modules/devices/x86/x86_data.c:82 msgctxt "x86-flag" msgid "Execute Disable" msgstr "Executar desabilitar" #. !/flag:mmxext #: modules/devices/x86/x86_data.c:83 msgctxt "x86-flag" msgid "AMD MMX extensions" msgstr "Extensões AMD MMX" #. !/flag:fxsr_opt #: modules/devices/x86/x86_data.c:84 msgctxt "x86-flag" msgid "FXSAVE/FXRSTOR optimizations" msgstr "Otimizações FXSAVE / FXRSTOR" #. !/flag:pdpe1gb #: modules/devices/x86/x86_data.c:85 msgctxt "x86-flag" msgid "One GB pages (allows hugepagesz=1G)" msgstr "Um GB páginas (permite hugepagesz = 1G)" #. !/flag:rdtscp #: modules/devices/x86/x86_data.c:86 msgctxt "x86-flag" msgid "Read Time-Stamp Counter and Processor ID" msgstr "Leitura do Contador de Carimbo de Tempo e ID do Processador" #. !/flag:lm #: modules/devices/x86/x86_data.c:87 msgctxt "x86-flag" msgid "Long Mode (x86-64: amd64, also known as Intel 64, i.e. 64-bit capable)" msgstr "" "Modo Longo (x86-64: amd64, também conhecido como Intel 64, ou seja, " "capacidade para 64 bits)" #. !/flag:3dnow #: modules/devices/x86/x86_data.c:88 msgctxt "x86-flag" msgid "3DNow! (AMD vector instructions, competing with Intel's SSE1)" msgstr "3DNow! (Instruções vetoriais AMD, competindo com o SSE1 da Intel)" #. !/flag:3dnowext #: modules/devices/x86/x86_data.c:89 msgctxt "x86-flag" msgid "AMD 3DNow! extensions" msgstr "AMD 3DNow! extensões" #. !/flag:recovery #: modules/devices/x86/x86_data.c:91 msgctxt "x86-flag" msgid "CPU in recovery mode" msgstr "CPU no modo de recuperação" #. !/flag:longrun #: modules/devices/x86/x86_data.c:92 msgctxt "x86-flag" msgid "Longrun power control" msgstr "Controle de potência Longrun" #. !/flag:lrti #: modules/devices/x86/x86_data.c:93 msgctxt "x86-flag" msgid "LongRun table interface" msgstr "Interface de mesa LongRun" #. !/flag:cxmmx #: modules/devices/x86/x86_data.c:95 msgctxt "x86-flag" msgid "Cyrix MMX extensions" msgstr "Extensões Cyrix MMX" #. !/flag:k6_mtrr #: modules/devices/x86/x86_data.c:96 msgctxt "x86-flag" msgid "AMD K6 nonstandard MTRRs" msgstr "MTRRs fora do padrão AMD K6" #. !/flag:cyrix_arr #: modules/devices/x86/x86_data.c:97 msgctxt "x86-flag" msgid "Cyrix ARRs (= MTRRs)" msgstr "Cyrix ARRs (= MTRRs)" #. !/flag:centaur_mcr #: modules/devices/x86/x86_data.c:98 msgctxt "x86-flag" msgid "Centaur MCRs (= MTRRs)" msgstr "MCRs Centauros (= MTRRs)" #. !/flag:constant_tsc #: modules/devices/x86/x86_data.c:99 msgctxt "x86-flag" msgid "TSC ticks at a constant rate" msgstr "TSC carrapatos a uma taxa constante" #. !/flag:up #: modules/devices/x86/x86_data.c:100 msgctxt "x86-flag" msgid "SMP kernel running on UP" msgstr "Kernel SMP rodando em UP" #. !/flag:art #: modules/devices/x86/x86_data.c:101 msgctxt "x86-flag" msgid "Always-Running Timer" msgstr "Temporizador sempre em funcionamento" #. !/flag:arch_perfmon #: modules/devices/x86/x86_data.c:102 msgctxt "x86-flag" msgid "Intel Architectural PerfMon" msgstr "Intel Architectural PerfMon" #. !/flag:pebs #: modules/devices/x86/x86_data.c:103 msgctxt "x86-flag" msgid "Precise-Event Based Sampling" msgstr "Amostragem baseada em eventos precisos" #. !/flag:bts #: modules/devices/x86/x86_data.c:104 msgctxt "x86-flag" msgid "Branch Trace Store" msgstr "Loja de Rastreamento de Filial" #. !/flag:rep_good #: modules/devices/x86/x86_data.c:105 msgctxt "x86-flag" msgid "rep microcode works well" msgstr "microcódigo rep funciona bem" #. !/flag:acc_power #: modules/devices/x86/x86_data.c:106 msgctxt "x86-flag" msgid "AMD accumulated power mechanism" msgstr "AMD acumulou mecanismo de energia" #. !/flag:nopl #: modules/devices/x86/x86_data.c:107 msgctxt "x86-flag" msgid "The NOPL (0F 1F) instructions" msgstr "Instruções do NOPL (0F 1F)" #. !/flag:xtopology #: modules/devices/x86/x86_data.c:108 msgctxt "x86-flag" msgid "cpu topology enum extensions" msgstr "extensões da enologia da topologia da cpu" #. !/flag:tsc_reliable #: modules/devices/x86/x86_data.c:109 msgctxt "x86-flag" msgid "TSC is known to be reliable" msgstr "TSC é conhecido por ser confiável" #. !/flag:nonstop_tsc #: modules/devices/x86/x86_data.c:110 msgctxt "x86-flag" msgid "TSC does not stop in C states" msgstr "TSC não pára em estados C" #. !/flag:extd_apicid #: modules/devices/x86/x86_data.c:111 msgctxt "x86-flag" msgid "has extended APICID (8 bits)" msgstr "estendeu APICID (8 bits)" #. !/flag:amd_dcm #: modules/devices/x86/x86_data.c:112 msgctxt "x86-flag" msgid "multi-node processor" msgstr "processador multi-nó" #. !/flag:aperfmperf #: modules/devices/x86/x86_data.c:113 msgctxt "x86-flag" msgid "APERFMPERF" msgstr "APERFMPERF" #. !/flag:eagerfpu #: modules/devices/x86/x86_data.c:114 msgctxt "x86-flag" msgid "Non lazy FPU restore" msgstr "Restauração de FPU não preguiçosa" #. !/flag:nonstop_tsc_s3 #: modules/devices/x86/x86_data.c:115 msgctxt "x86-flag" msgid "TSC doesn't stop in S3 state" msgstr "TSC não pára no estado S3" #. !/flag:mce_recovery #: modules/devices/x86/x86_data.c:116 msgctxt "x86-flag" msgid "CPU has recoverable machine checks" msgstr "A CPU tem verificações de máquina recuperáveis" #. !/flag:pni #: modules/devices/x86/x86_data.c:119 msgctxt "x86-flag" msgid "SSE-3 (\"Prescott New Instructions\")" msgstr "SSE-3 (\"Prescott Novas instruções\")" #. !/flag:pclmulqdq #: modules/devices/x86/x86_data.c:120 msgctxt "x86-flag" msgid "" "Perform a Carry-Less Multiplication of Quadword instruction - accelerator " "for GCM)" msgstr "" "Executar uma multiplicação sem carga do acelerador de instruções do Quadword " "para o GCM)" #. !/flag:dtes64 #: modules/devices/x86/x86_data.c:121 msgctxt "x86-flag" msgid "64-bit Debug Store" msgstr "Armazenamento de depuração de 64 bits" #. !/flag:monitor #: modules/devices/x86/x86_data.c:122 msgctxt "x86-flag" msgid "Monitor/Mwait support (Intel SSE3 supplements)" msgstr "Suporte Monitor / Mwait (suplementos Intel SSE3)" #. !/flag:ds_cpl #: modules/devices/x86/x86_data.c:123 msgctxt "x86-flag" msgid "CPL Qual. Debug Store" msgstr "CPL Qual. Loja de Depuração" #. !/flag:vmx #: modules/devices/x86/x86_data.c:124 msgctxt "x86-flag" msgid "Hardware virtualization, Intel VMX" msgstr "Virtualização de hardware, Intel VMX" #. !/flag:smx #: modules/devices/x86/x86_data.c:125 msgctxt "x86-flag" msgid "Safer mode TXT (TPM support)" msgstr "Modo mais seguro TXT (suporte a TPM)" #. !/flag:est #: modules/devices/x86/x86_data.c:126 msgctxt "x86-flag" msgid "Enhanced SpeedStep" msgstr "Enhanced SpeedStep" #. !/flag:tm2 #: modules/devices/x86/x86_data.c:127 msgctxt "x86-flag" msgid "Thermal Monitor 2" msgstr "Monitor Térmico 2" #. !/flag:ssse3 #: modules/devices/x86/x86_data.c:128 msgctxt "x86-flag" msgid "Supplemental SSE-3" msgstr "Suplemento SSE-3" #. !/flag:cid #: modules/devices/x86/x86_data.c:129 msgctxt "x86-flag" msgid "Context ID" msgstr "ID de contexto" #. !/flag:sdbg #: modules/devices/x86/x86_data.c:130 msgctxt "x86-flag" msgid "silicon debug" msgstr "depuração de silício" #. !/flag:fma #: modules/devices/x86/x86_data.c:131 msgctxt "x86-flag" msgid "Fused multiply-add" msgstr "Fusão multiplica-adiciona" #. !/flag:cx16 #: modules/devices/x86/x86_data.c:132 msgctxt "x86-flag" msgid "CMPXCHG16B" msgstr "CMPXCHG16B" #. !/flag:xtpr #: modules/devices/x86/x86_data.c:133 msgctxt "x86-flag" msgid "Send Task Priority Messages" msgstr "Enviar mensagens de prioridade de tarefa" #. !/flag:pdcm #: modules/devices/x86/x86_data.c:134 msgctxt "x86-flag" msgid "Performance Capabilities" msgstr "Capacidades de desempenho" #. !/flag:pcid #: modules/devices/x86/x86_data.c:135 msgctxt "x86-flag" msgid "Process Context Identifiers" msgstr "Identificadores de contexto de processo" #. !/flag:dca #: modules/devices/x86/x86_data.c:136 msgctxt "x86-flag" msgid "Direct Cache Access" msgstr "Acesso direto ao cache" #. !/flag:sse4_1 #: modules/devices/x86/x86_data.c:137 msgctxt "x86-flag" msgid "SSE-4.1" msgstr "SSE-4.1" #. !/flag:sse4_2 #: modules/devices/x86/x86_data.c:138 msgctxt "x86-flag" msgid "SSE-4.2" msgstr "SSE-4.2" #. !/flag:x2apic #: modules/devices/x86/x86_data.c:139 msgctxt "x86-flag" msgid "x2APIC" msgstr "x2APIC" #. !/flag:movbe #: modules/devices/x86/x86_data.c:140 msgctxt "x86-flag" msgid "Move Data After Swapping Bytes instruction" msgstr "Mover dados após a instrução troca de Bytes" #. !/flag:popcnt #: modules/devices/x86/x86_data.c:141 msgctxt "x86-flag" msgid "" "Return the Count of Number of Bits Set to 1 instruction (Hamming weight, i." "e. bit count)" msgstr "" "Retorna a Contagem do Número de Bits Definido como 1 instrução (peso " "Hamming, ou seja, contagem de bits)" #: modules/devices/x86/x86_data.c:142 msgctxt "x86-flag" msgid "Tsc deadline timer" msgstr "Temporizador de prazo de Tsc" #. !/flag:aes/aes-ni #: modules/devices/x86/x86_data.c:143 msgctxt "x86-flag" msgid "Advanced Encryption Standard (New Instructions)" msgstr "Padrão Avançado de Criptografia (Novas Instruções)" #. !/flag:xsave #: modules/devices/x86/x86_data.c:144 msgctxt "x86-flag" msgid "Save Processor Extended States: also provides XGETBY,XRSTOR,XSETBY" msgstr "" "Salvar estados estendidos do processador: também fornece XGETBY, XRSTOR, " "XSETBY" #. !/flag:avx #: modules/devices/x86/x86_data.c:145 msgctxt "x86-flag" msgid "Advanced Vector Extensions" msgstr "Extensões Vector Avançadas" #. !/flag:f16c #: modules/devices/x86/x86_data.c:146 msgctxt "x86-flag" msgid "16-bit fp conversions (CVT16)" msgstr "Conversões fp de 16 bits (CVT16)" #. !/flag:rdrand #: modules/devices/x86/x86_data.c:147 msgctxt "x86-flag" msgid "Read Random Number from hardware random number generator instruction" msgstr "" "Ler Número Aleatório da instrução do gerador de números aleatórios de " "hardware" #. !/flag:hypervisor #: modules/devices/x86/x86_data.c:148 msgctxt "x86-flag" msgid "Running on a hypervisor" msgstr "Correndo em um hipervisor" #. !/flag:rng #: modules/devices/x86/x86_data.c:150 msgctxt "x86-flag" msgid "Random Number Generator present (xstore)" msgstr "Gerador de números aleatórios presente (xstore)" #. !/flag:rng_en #: modules/devices/x86/x86_data.c:151 msgctxt "x86-flag" msgid "Random Number Generator enabled" msgstr "Gerador de Números Aleatórios ativado" #. !/flag:ace #: modules/devices/x86/x86_data.c:152 msgctxt "x86-flag" msgid "on-CPU crypto (xcrypt)" msgstr "criptografia on-CPU (xcrypt) " #. !/flag:ace_en #: modules/devices/x86/x86_data.c:153 msgctxt "x86-flag" msgid "on-CPU crypto enabled" msgstr "on-CPU criptografia ativada" #. !/flag:ace2 #: modules/devices/x86/x86_data.c:154 msgctxt "x86-flag" msgid "Advanced Cryptography Engine v2" msgstr "Mecanismo Avançado de Criptografia v2" #. !/flag:ace2_en #: modules/devices/x86/x86_data.c:155 msgctxt "x86-flag" msgid "ACE v2 enabled" msgstr "ACE v2 ativado" #. !/flag:phe #: modules/devices/x86/x86_data.c:156 msgctxt "x86-flag" msgid "PadLock Hash Engine" msgstr "PadLock Hash Mecanismo" #. !/flag:phe_en #: modules/devices/x86/x86_data.c:157 msgctxt "x86-flag" msgid "PHE enabled" msgstr "PHE ativado" #. !/flag:pmm #: modules/devices/x86/x86_data.c:158 msgctxt "x86-flag" msgid "PadLock Montgomery Multiplier" msgstr "PadLock Montgomery Multiplicador" #. !/flag:pmm_en #: modules/devices/x86/x86_data.c:159 msgctxt "x86-flag" msgid "PMM enabled" msgstr "PMM ativado" #. !/flag:lahf_lm #: modules/devices/x86/x86_data.c:161 msgctxt "x86-flag" msgid "Load AH from Flags (LAHF) and Store AH into Flags (SAHF) in long mode" msgstr "" "Carregar AH das Bandeiras (LAHF) e Armazenar HA dentro das Bandeiras (SAHF) " "no modo longo" #. !/flag:cmp_legacy #: modules/devices/x86/x86_data.c:162 msgctxt "x86-flag" msgid "If yes HyperThreading not valid" msgstr "se sim HyperThreading não é válido" #. !/flag:svm #: modules/devices/x86/x86_data.c:163 msgctxt "x86-flag" msgid "\"Secure virtual machine\": AMD-V" msgstr "\"Máquina virtual segura\": AMD-V" #. !/flag:extapic #: modules/devices/x86/x86_data.c:164 msgctxt "x86-flag" msgid "Extended APIC space" msgstr "Espaço APIC extendido" #. !/flag:cr8_legacy #: modules/devices/x86/x86_data.c:165 msgctxt "x86-flag" msgid "CR8 in 32-bit mode" msgstr "CR8 no modo 32-bit" #. !/flag:abm #: modules/devices/x86/x86_data.c:166 msgctxt "x86-flag" msgid "Advanced Bit Manipulation" msgstr "Manipulação Avançada de Bit" #. !/flag:sse4a #: modules/devices/x86/x86_data.c:167 msgctxt "x86-flag" msgid "SSE-4A" msgstr "SSE-4A" #. !/flag:misalignsse #: modules/devices/x86/x86_data.c:168 msgctxt "x86-flag" msgid "" "indicates if a general-protection exception (#GP) is generated when some " "legacy SSE instructions operate on unaligned data. Also depends on CR0 and " "Alignment Checking bit" msgstr "" "indica se uma exceção de proteção-geral (#GP) é gerada quando algumas " "instruções SSE legadas operam em dados não alinhados. Também depende do CR0 " "e bit de Verificação do Alinhamento" #. !/flag:3dnowprefetch #: modules/devices/x86/x86_data.c:169 msgctxt "x86-flag" msgid "3DNow prefetch instructions" msgstr "Instruções de pré-busca 3DNow" #. !/flag:osvw #: modules/devices/x86/x86_data.c:170 msgctxt "x86-flag" msgid "" "indicates OS Visible Workaround, which allows the OS to work around " "processor errata." msgstr "" "Indica Solução Visível do OS, que permite que o OS contorne as erratas do " "processador." #. !/flag:ibs #: modules/devices/x86/x86_data.c:171 msgctxt "x86-flag" msgid "Instruction Based Sampling" msgstr "Amostragem Baseada em Instruções" #. !/flag:xop #: modules/devices/x86/x86_data.c:172 msgctxt "x86-flag" msgid "extended AVX instructions" msgstr "instruções AVX estendidas" #. !/flag:skinit #: modules/devices/x86/x86_data.c:173 msgctxt "x86-flag" msgid "SKINIT/STGI instructions" msgstr "instruções SKINIT/STGI" #. !/flag:wdt #: modules/devices/x86/x86_data.c:174 msgctxt "x86-flag" msgid "Watchdog timer" msgstr "Cronômetro Watchdog " #. !/flag:lwp #: modules/devices/x86/x86_data.c:175 msgctxt "x86-flag" msgid "Light Weight Profiling" msgstr "Perfil Peso Leve" #. !/flag:fma4 #: modules/devices/x86/x86_data.c:176 msgctxt "x86-flag" msgid "4 operands MAC instructions" msgstr "4 operando instruções MAC" #. !/flag:tce #: modules/devices/x86/x86_data.c:177 msgctxt "x86-flag" msgid "translation cache extension" msgstr "extensão de cache de tradução" #. !/flag:nodeid_msr #: modules/devices/x86/x86_data.c:178 msgctxt "x86-flag" msgid "NodeId MSR" msgstr "NodeId MSR" #. !/flag:tbm #: modules/devices/x86/x86_data.c:179 msgctxt "x86-flag" msgid "Trailing Bit Manipulation" msgstr "Manipulação de Bit de Arrasto" #. !/flag:topoext #: modules/devices/x86/x86_data.c:180 msgctxt "x86-flag" msgid "Topology Extensions CPUID leafs" msgstr "Extensões de Topologia CPUID folhas" #. !/flag:perfctr_core #: modules/devices/x86/x86_data.c:181 msgctxt "x86-flag" msgid "Core Performance Counter Extensions" msgstr "Extensões do Contador de Desempenho do Núcleo" #. !/flag:perfctr_nb #: modules/devices/x86/x86_data.c:182 msgctxt "x86-flag" msgid "NB Performance Counter Extensions" msgstr "Extensões do Contador de Desempenho do NB" #. !/flag:bpext #: modules/devices/x86/x86_data.c:183 msgctxt "x86-flag" msgid "data breakpoint extension" msgstr "extensão de ponto de interrupção de dados" #. !/flag:ptsc #: modules/devices/x86/x86_data.c:184 msgctxt "x86-flag" msgid "performance time-stamp counter" msgstr "contador time-stamp de desempenho" #. !/flag:perfctr_l2 #: modules/devices/x86/x86_data.c:185 msgctxt "x86-flag" msgid "L2 Performance Counter Extensions" msgstr "Extensões do Contador de Desempenho L2" #. !/flag:mwaitx #: modules/devices/x86/x86_data.c:186 msgctxt "x86-flag" msgid "MWAIT extension (MONITORX/MWAITX)" msgstr "Extensão MWAIT (MONITORX/MWAITX)" #. !/flag:cpb #: modules/devices/x86/x86_data.c:188 msgctxt "x86-flag" msgid "AMD Core Performance Boost" msgstr "Aumento do Desempenho do Núcleo da AMD" #. !/flag:epb #: modules/devices/x86/x86_data.c:189 msgctxt "x86-flag" msgid "IA32_ENERGY_PERF_BIAS support" msgstr "Suporte IA32_ENERGY_PERF_BIAS " #. !/flag:hw_pstate #: modules/devices/x86/x86_data.c:190 msgctxt "x86-flag" msgid "AMD HW-PState" msgstr "AMD HW-PState" #. !/flag:proc_feedback #: modules/devices/x86/x86_data.c:191 msgctxt "x86-flag" msgid "AMD ProcFeedbackInterface" msgstr "AMD ProcFeedbackInterface" #. !/flag:intel_pt #: modules/devices/x86/x86_data.c:192 msgctxt "x86-flag" msgid "Intel Processor Tracing" msgstr "Intel Processor Tracing" #. !/flag:tpr_shadow #: modules/devices/x86/x86_data.c:194 msgctxt "x86-flag" msgid "Intel TPR Shadow" msgstr "Intel TPR Shadow" #. !/flag:vnmi #: modules/devices/x86/x86_data.c:195 msgctxt "x86-flag" msgid "Intel Virtual NMI" msgstr "Intel Virtual NMI" #. !/flag:flexpriority #: modules/devices/x86/x86_data.c:196 msgctxt "x86-flag" msgid "Intel FlexPriority" msgstr "Intel FlexPriority" #. !/flag:ept #: modules/devices/x86/x86_data.c:197 msgctxt "x86-flag" msgid "Intel Extended Page Table" msgstr "Tabela de Páginas Estendidas da Intel" #. !/flag:vpid #: modules/devices/x86/x86_data.c:198 msgctxt "x86-flag" msgid "Intel Virtual Processor ID" msgstr "Identificação do Processador Virtual Intel" #. !/flag:vmmcall #: modules/devices/x86/x86_data.c:199 msgctxt "x86-flag" msgid "prefer VMMCALL to VMCALL" msgstr "prefira VMMCALL a VMCALL" #. !/flag:fsgsbase #: modules/devices/x86/x86_data.c:201 msgctxt "x86-flag" msgid "{RD/WR}{FS/GS}BASE instructions" msgstr "instruções {RD/WR}{FS/GS}BASE" #. !/flag:tsc_adjust #: modules/devices/x86/x86_data.c:202 msgctxt "x86-flag" msgid "TSC adjustment MSR" msgstr "TSC ajustamento MSR" #. !/flag:bmi1 #: modules/devices/x86/x86_data.c:203 msgctxt "x86-flag" msgid "1st group bit manipulation extensions" msgstr "extensões de manipulação de bit de 1º grupo" #. !/flag:hle #: modules/devices/x86/x86_data.c:204 msgctxt "x86-flag" msgid "Hardware Lock Elision" msgstr "Hardware Lock Elision" #. !/flag:avx2 #: modules/devices/x86/x86_data.c:205 msgctxt "x86-flag" msgid "AVX2 instructions" msgstr "instruções AVX2" #. !/flag:smep #: modules/devices/x86/x86_data.c:206 msgctxt "x86-flag" msgid "Supervisor Mode Execution Protection" msgstr "Proteção de Execução do Modo Supervisor" #. !/flag:bmi2 #: modules/devices/x86/x86_data.c:207 msgctxt "x86-flag" msgid "2nd group bit manipulation extensions" msgstr "extensões de manipulação de bit de 2º grupo" #. !/flag:erms #: modules/devices/x86/x86_data.c:208 msgctxt "x86-flag" msgid "Enhanced REP MOVSB/STOSB" msgstr "REP MOVSB/STOSB melhorada" #. !/flag:invpcid #: modules/devices/x86/x86_data.c:209 msgctxt "x86-flag" msgid "Invalidate Processor Context ID" msgstr "ID de Contexto do Processador Inválido" #. !/flag:rtm #: modules/devices/x86/x86_data.c:210 msgctxt "x86-flag" msgid "Restricted Transactional Memory" msgstr "Memória Transacional Restrita" #. !/flag:cqm #: modules/devices/x86/x86_data.c:211 msgctxt "x86-flag" msgid "Cache QoS Monitoring" msgstr "Monitoramento de Cache de QoS" #. !/flag:mpx #: modules/devices/x86/x86_data.c:212 msgctxt "x86-flag" msgid "Memory Protection Extension" msgstr "Extensão de Proteção de Memória" #. !/flag:avx512f #: modules/devices/x86/x86_data.c:213 msgctxt "x86-flag" msgid "AVX-512 foundation" msgstr "fundação AVX-512" #. !/flag:avx512dq #: modules/devices/x86/x86_data.c:214 msgctxt "x86-flag" msgid "AVX-512 Double/Quad instructions" msgstr "instruções AVX-512 Double/Quad" #. !/flag:rdseed #: modules/devices/x86/x86_data.c:215 msgctxt "x86-flag" msgid "The RDSEED instruction" msgstr "instrução The RDSEED" #. !/flag:adx #: modules/devices/x86/x86_data.c:216 msgctxt "x86-flag" msgid "The ADCX and ADOX instructions" msgstr "instruções The ADCX e ADOX" #. !/flag:smap #: modules/devices/x86/x86_data.c:217 msgctxt "x86-flag" msgid "Supervisor Mode Access Prevention" msgstr "Prevenção de Acesso do Modo Supervisor" #. !/flag:clflushopt #: modules/devices/x86/x86_data.c:218 msgctxt "x86-flag" msgid "CLFLUSHOPT instruction" msgstr "instrução CLFLUSHOPT" #. !/flag:clwb #: modules/devices/x86/x86_data.c:219 msgctxt "x86-flag" msgid "CLWB instruction" msgstr "instrução CLWB" #. !/flag:avx512pf #: modules/devices/x86/x86_data.c:220 msgctxt "x86-flag" msgid "AVX-512 Prefetch" msgstr "Pré-busca AVX-512" #. !/flag:avx512er #: modules/devices/x86/x86_data.c:221 msgctxt "x86-flag" msgid "AVX-512 Exponential and Reciprocal" msgstr "Exponencial e Recíproco AVX-512" #. !/flag:avx512cd #: modules/devices/x86/x86_data.c:222 msgctxt "x86-flag" msgid "AVX-512 Conflict Detection" msgstr "Detecção de Conflitos AVX-512" #. !/flag:sha_ni #: modules/devices/x86/x86_data.c:223 msgctxt "x86-flag" msgid "SHA1/SHA256 Instruction Extensions" msgstr "Extensões de Instrução SHA1/SHA256" #. !/flag:avx512bw #: modules/devices/x86/x86_data.c:224 msgctxt "x86-flag" msgid "AVX-512 Byte/Word instructions" msgstr "instruções AVX-512 Byte/Word" #. !/flag:avx512vl #: modules/devices/x86/x86_data.c:225 msgctxt "x86-flag" msgid "AVX-512 128/256 Vector Length extensions" msgstr "Extensões de Comprimento de Vetor AVX-512 128/256" #. !/flag:xsaveopt #: modules/devices/x86/x86_data.c:227 msgctxt "x86-flag" msgid "Optimized XSAVE" msgstr "XSAVE Otimizado" #. !/flag:xsavec #: modules/devices/x86/x86_data.c:228 msgctxt "x86-flag" msgid "XSAVEC" msgstr "XSAVEC" #. !/flag:xgetbv1 #: modules/devices/x86/x86_data.c:229 msgctxt "x86-flag" msgid "XGETBV with ECX = 1" msgstr "XGETBV com ECX = 1" #. !/flag:xsaves #: modules/devices/x86/x86_data.c:230 msgctxt "x86-flag" msgid "XSAVES/XRSTORS" msgstr "XSAVES/XRSTORS" #. !/flag:cqm_llc #: modules/devices/x86/x86_data.c:232 msgctxt "x86-flag" msgid "LLC QoS" msgstr "LLC QoS" #. !/flag:cqm_occup_llc #: modules/devices/x86/x86_data.c:234 msgctxt "x86-flag" msgid "LLC occupancy monitoring" msgstr "monitoramento de ocupação de LLC" #. !/flag:cqm_mbm_total #: modules/devices/x86/x86_data.c:235 msgctxt "x86-flag" msgid "LLC total MBM monitoring" msgstr "monitoramento LLC total MBM" #. !/flag:cqm_mbm_local #: modules/devices/x86/x86_data.c:236 msgctxt "x86-flag" msgid "LLC local MBM monitoring" msgstr "monitoramento LLC local MBM" #. !/flag:clzero #: modules/devices/x86/x86_data.c:238 msgctxt "x86-flag" msgid "CLZERO instruction" msgstr "instrução CLZERO" #. !/flag:irperf #: modules/devices/x86/x86_data.c:239 msgctxt "x86-flag" msgid "instructions retired performance counter" msgstr "instruções do contador de desempenho aposentado" #. !/flag:dtherm #: modules/devices/x86/x86_data.c:241 msgctxt "x86-flag" msgid "digital thermal sensor" msgstr "sensor térmico digital" #. !/flag:ida #: modules/devices/x86/x86_data.c:242 msgctxt "x86-flag" msgid "Intel Dynamic Acceleration" msgstr "Aceleração Dinâmica Intel" #. !/flag:arat #: modules/devices/x86/x86_data.c:243 msgctxt "x86-flag" msgid "Always Running APIC Timer" msgstr "Sempre Executando o Temporizador APIC" #. !/flag:pln #: modules/devices/x86/x86_data.c:244 msgctxt "x86-flag" msgid "Intel Power Limit Notification" msgstr "Notificação de Limite de Energia Intel" #. !/flag:pts #: modules/devices/x86/x86_data.c:245 msgctxt "x86-flag" msgid "Intel Package Thermal Status" msgstr "Status Térmico do Pacote Intel" #. !/flag:hwp #: modules/devices/x86/x86_data.c:246 msgctxt "x86-flag" msgid "Intel Hardware P-states" msgstr "Intel Hardware P-states" #. !/flag:hwp_notify #: modules/devices/x86/x86_data.c:247 msgctxt "x86-flag" msgid "HWP notification" msgstr "notificação HWP" #. !/flag:hwp_act_window #: modules/devices/x86/x86_data.c:248 msgctxt "x86-flag" msgid "HWP Activity Window" msgstr "Janela de Atividade do HWP" #. !/flag:hwp_epp #: modules/devices/x86/x86_data.c:249 msgctxt "x86-flag" msgid "HWP Energy Performance Preference" msgstr "Preferência de Desempenho de Energia HWP" #. !/flag:hwp_pkg_req #: modules/devices/x86/x86_data.c:250 msgctxt "x86-flag" msgid "HWP package-level request" msgstr "Solicitação do package-level de HWP " #. !/flag:npt #: modules/devices/x86/x86_data.c:252 msgctxt "x86-flag" msgid "AMD Nested Page Table support" msgstr "suporte para AMD Nested Page Table" #. !/flag:lbrv #: modules/devices/x86/x86_data.c:253 msgctxt "x86-flag" msgid "AMD LBR Virtualization support" msgstr "AMD LBR Virtualização suporte" #. !/flag:svm_lock #: modules/devices/x86/x86_data.c:254 msgctxt "x86-flag" msgid "AMD SVM locking MSR" msgstr "AMD SVM bloqueio MSR" #. !/flag:nrip_save #: modules/devices/x86/x86_data.c:255 msgctxt "x86-flag" msgid "AMD SVM next_rip save" msgstr "AMD SVM next_rip salvar" #. !/flag:tsc_scale #: modules/devices/x86/x86_data.c:256 msgctxt "x86-flag" msgid "AMD TSC scaling support" msgstr "suporte de dimensionamento do AMD TSC" #. !/flag:vmcb_clean #: modules/devices/x86/x86_data.c:257 msgctxt "x86-flag" msgid "AMD VMCB clean bits support" msgstr "suporte para bits limpos AMD VMCB" #. !/flag:flushbyasid #: modules/devices/x86/x86_data.c:258 msgctxt "x86-flag" msgid "AMD flush-by-ASID support" msgstr "suporte para AMD flush-by-ASID" #. !/flag:decodeassists #: modules/devices/x86/x86_data.c:259 msgctxt "x86-flag" msgid "AMD Decode Assists support" msgstr "support para AMD Decode Assists" #. !/flag:pausefilter #: modules/devices/x86/x86_data.c:260 msgctxt "x86-flag" msgid "AMD filtered pause intercept" msgstr "interceptação de pausa filtrada AMD" #. !/flag:pfthreshold #: modules/devices/x86/x86_data.c:261 msgctxt "x86-flag" msgid "AMD pause filter threshold" msgstr "limite de filtro de pausa da AMD" #. !/flag:avic #: modules/devices/x86/x86_data.c:262 msgctxt "x86-flag" msgid "Virtual Interrupt Controller" msgstr "Controlador de Interrupção Virtual" #. !/flag:pku #: modules/devices/x86/x86_data.c:264 msgctxt "x86-flag" msgid "Protection Keys for Userspace" msgstr "Chaves de Proteção para o Espaço do Usuário" #. !/flag:ospke #: modules/devices/x86/x86_data.c:265 msgctxt "x86-flag" msgid "OS Protection Keys Enable" msgstr "Habilitar Chaves de Proteção do Sistema Operacional" #. !/flag:overflow_recov #: modules/devices/x86/x86_data.c:267 msgctxt "x86-flag" msgid "MCA overflow recovery support" msgstr "suporte para recuperação de estouro de MCA" #. !/flag:succor #: modules/devices/x86/x86_data.c:268 msgctxt "x86-flag" msgid "uncorrectable error containment and recovery" msgstr "contenção de erros e recuperação incorrigíveis" #. !/flag:smca #: modules/devices/x86/x86_data.c:269 msgctxt "x86-flag" msgid "Scalable MCA" msgstr "MCA escalável" #. !/bug:f00f #: modules/devices/x86/x86_data.c:272 msgctxt "x86-flag" msgid "Intel F00F bug" msgstr "Erro Intel F00F" #. !/bug:fdiv #: modules/devices/x86/x86_data.c:273 msgctxt "x86-flag" msgid "FPU FDIV" msgstr "FPU FDIV" #. !/bug:coma #: modules/devices/x86/x86_data.c:274 msgctxt "x86-flag" msgid "Cyrix 6x86 coma" msgstr "Cyrix 6x86 coma" #. !/bug:tlb_mmatch #: modules/devices/x86/x86_data.c:275 msgctxt "x86-flag" msgid "AMD Erratum 383" msgstr "AMD Erratum 383" #. !/bug:apic_c1e #. !/bug:amd_e400 #: modules/devices/x86/x86_data.c:276 modules/devices/x86/x86_data.c:285 msgctxt "x86-flag" msgid "AMD Erratum 400" msgstr "AMD Erratum 400" #. !/bug:11ap #: modules/devices/x86/x86_data.c:277 msgctxt "x86-flag" msgid "Bad local APIC aka 11AP" msgstr "Local ruim APIC também conhecido como 11AP " #. !/bug:fxsave_leak #: modules/devices/x86/x86_data.c:278 msgctxt "x86-flag" msgid "FXSAVE leaks FOP/FIP/FOP" msgstr "FXSAVE vazamentos FOP/FIP/FOP" #. !/bug:clflush_monitor #: modules/devices/x86/x86_data.c:279 msgctxt "x86-flag" msgid "AAI65, CLFLUSH required before MONITOR" msgstr "AAI65, CLFLUSH requerido antes de MONITOR" #. !/bug:sysret_ss_attrs #: modules/devices/x86/x86_data.c:280 msgctxt "x86-flag" msgid "SYSRET doesn't fix up SS attrs" msgstr "SYSRET não conserta o SS attrs" #. !/bug:espfix #: modules/devices/x86/x86_data.c:281 msgctxt "x86-flag" msgid "IRET to 16-bit SS corrupts ESP/RSP high bits" msgstr "IRET para SS de 16-bit corrompe os bits altos do ESP/RSP" #. !/bug:null_seg #: modules/devices/x86/x86_data.c:282 msgctxt "x86-flag" msgid "Nulling a selector preserves the base" msgstr "Anulando um seletor preserva a base" #. !/bug:swapgs_fence #: modules/devices/x86/x86_data.c:283 msgctxt "x86-flag" msgid "SWAPGS without input dep on GS" msgstr "SWAPGS sem dep de entrada em GS" #. !/bug:monitor #: modules/devices/x86/x86_data.c:284 msgctxt "x86-flag" msgid "IPI required to wake up remote CPU" msgstr "IPI necessário para ativar a CPU remota" #. !/bug:cpu_insecure & bug:cpu_meltdown #: modules/devices/x86/x86_data.c:286 modules/devices/x86/x86_data.c:287 msgctxt "x86-flag" msgid "" "CPU is affected by meltdown attack and needs kernel page table isolation" msgstr "" "A CPU é afetada pelo ataque Meltdown e precisa de isolamento da tabela de " "páginas do kernel" #. !/bug:spectre_v1 #: modules/devices/x86/x86_data.c:288 msgctxt "x86-flag" msgid "CPU is affected by Spectre variant 1 attack with conditional branches" msgstr "" "A CPU é afetada pelo ataque Spectre variante 1 ataque com ramificações " "condicionais" #. !/bug:spectre_v2 #: modules/devices/x86/x86_data.c:289 msgctxt "x86-flag" msgid "CPU is affected by Spectre variant 2 attack with indirect branches" msgstr "" "A CPU é afetada pelo Spectre variante 2 ataque com ramificações indiretas" #. !/bug:spec_store_bypass #: modules/devices/x86/x86_data.c:290 msgctxt "x86-flag" msgid "CPU is affected by speculative store bypass attack" msgstr "A CPU é afetada pelo ataque de desvio de armazenamento especulativo" #. !/bug:l1tf #: modules/devices/x86/x86_data.c:291 msgctxt "x86-flag" msgid "CPU is affected by L1 Terminal Fault" msgstr "" #. !/flag:pm:ts #: modules/devices/x86/x86_data.c:294 msgctxt "x86-flag" msgid "temperature sensor" msgstr "sensor de temperatura" #. !/flag:pm:fid #: modules/devices/x86/x86_data.c:295 msgctxt "x86-flag" msgid "frequency id control" msgstr "id de controle de frequência" #. !/flag:pm:vid #: modules/devices/x86/x86_data.c:296 msgctxt "x86-flag" msgid "voltage id control" msgstr "id de controle de voltagem" #. !/flag:pm:ttp #: modules/devices/x86/x86_data.c:297 msgctxt "x86-flag" msgid "thermal trip" msgstr "viagem térmica" #. !/flag:pm:tm #: modules/devices/x86/x86_data.c:298 msgctxt "x86-flag" msgid "hardware thermal control" msgstr "controle térmico de hardware" #. !/flag:pm:stc #: modules/devices/x86/x86_data.c:299 msgctxt "x86-flag" msgid "software thermal control" msgstr "controle térmico de software" #. !/flag:pm:100mhzsteps #: modules/devices/x86/x86_data.c:300 msgctxt "x86-flag" msgid "100 MHz multiplier control" msgstr "controle de multiplicador 100 MHz" #. !/flag:pm:hwpstate #: modules/devices/x86/x86_data.c:301 msgctxt "x86-flag" msgid "hardware P-state control" msgstr "controle P-state de hardware" #. !/flag:pm:cpb #: modules/devices/x86/x86_data.c:302 msgctxt "x86-flag" msgid "core performance boost" msgstr "impulsionar o desempenho do núcleo" #. !/flag:pm:eff_freq_ro #: modules/devices/x86/x86_data.c:303 msgctxt "x86-flag" msgid "Readonly aperf/mperf" msgstr "Somente leitura aperf/mperf" #. !/flag:pm:proc_feedback #: modules/devices/x86/x86_data.c:304 msgctxt "x86-flag" msgid "processor feedback interface" msgstr "interface de feedback do processador" #. !/flag:pm:acc_power #: modules/devices/x86/x86_data.c:305 msgctxt "x86-flag" msgid "accumulated power mechanism" msgstr "mecanismo de energia acumulada" #: modules/network.c:61 msgid "Interfaces" msgstr "Interfaces" #: modules/network.c:62 msgid "IP Connections" msgstr "Conexões IP" #: modules/network.c:63 msgid "Routing Table" msgstr "Tabela de roteamento" #: modules/network.c:64 modules/network.c:310 msgid "ARP Table" msgstr "Tabela ARP" #: modules/network.c:65 msgid "DNS Servers" msgstr "Servidor DNS" #: modules/network.c:66 msgid "Statistics" msgstr "Estatísticas" #: modules/network.c:67 msgid "Shared Directories" msgstr "Diretórios Compartilhados" #: modules/network.c:311 modules/network.c:333 modules/network.c:364 #: modules/network/net.c:495 msgid "IP Address" msgstr "Endereço de IP" #: modules/network.c:311 msgid "MAC Address" msgstr "Endereço MAC" #: modules/network.c:320 msgid "SAMBA" msgstr "SAMBA" #: modules/network.c:321 msgid "NFS" msgstr "NFS" #: modules/network.c:332 msgid "Name Servers" msgstr "Nome de Servidores" #: modules/network.c:347 msgid "Connections" msgstr "Conexões" #: modules/network.c:348 msgid "Local Address" msgstr "Endereço Local" #: modules/network.c:348 msgid "Foreign Address" msgstr "Endereço Exterior" #: modules/network.c:348 msgid "State" msgstr "Estado" #: modules/network.c:364 msgid "Sent" msgstr "Enviado" #: modules/network.c:364 msgid "Received" msgstr "Recebido" #: modules/network.c:380 msgid "IP routing table" msgstr "Tabela de roteamento IP" #: modules/network.c:381 msgid "Destination/Gateway" msgstr "Destino/Gateway" #: modules/network.c:381 modules/network/net.c:496 msgid "Mask" msgstr "Máscara" #: modules/network.c:409 msgid "Network" msgstr "Rede" #: modules/network.c:442 msgid "Gathers information about this computer's network connection" msgstr "Reúne informações sobre a conexão de rede deste computador" #: modules/network/net.c:74 msgctxt "wi-op-mode" msgid "Auto" msgstr "Automático" #: modules/network/net.c:75 msgctxt "wi-op-mode" msgid "Ad-Hoc" msgstr "Ad-Hoc" #: modules/network/net.c:76 msgctxt "wi-op-mode" msgid "Managed" msgstr "Gerenciado" #: modules/network/net.c:77 msgctxt "wi-op-mode" msgid "Master" msgstr "Principal" #: modules/network/net.c:78 msgctxt "wi-op-mode" msgid "Repeater" msgstr "Repetidor" #: modules/network/net.c:79 msgctxt "wi-op-mode" msgid "Secondary" msgstr "Secondário" #: modules/network/net.c:80 msgctxt "wi-op-mode" msgid "(Unknown)" msgstr "(Desconhecido)" #: modules/network/net.c:268 modules/network/net.c:288 #: modules/network/net.c:296 msgctxt "net-if-type" msgid "Ethernet" msgstr "Ethernet" #: modules/network/net.c:269 msgctxt "net-if-type" msgid "Loopback" msgstr "Loopback" #: modules/network/net.c:270 msgctxt "net-if-type" msgid "Point-to-Point" msgstr "Ponto-a-Ponto" #: modules/network/net.c:271 modules/network/net.c:272 #: modules/network/net.c:273 modules/network/net.c:274 #: modules/network/net.c:298 msgctxt "net-if-type" msgid "Wireless" msgstr "Rede sem fio" #: modules/network/net.c:275 msgctxt "net-if-type" msgid "Virtual Point-to-Point (TUN)" msgstr "Ponto-a-ponto virtual (TUN)" #: modules/network/net.c:276 msgctxt "net-if-type" msgid "Ethernet (TAP)" msgstr "Ethernet (TAP)" #: modules/network/net.c:277 msgctxt "net-if-type" msgid "Parallel Line Internet Protocol" msgstr "Protocolo de Internet de Linha Paralela" #: modules/network/net.c:278 msgctxt "net-if-type" msgid "Infrared" msgstr "Infravermelho" #: modules/network/net.c:279 modules/network/net.c:297 msgctxt "net-if-type" msgid "Serial Line Internet Protocol" msgstr "Protocolo de Internet de Linha Serial" #: modules/network/net.c:280 msgctxt "net-if-type" msgid "Integrated Services Digital Network" msgstr "Rede Digital de Serviços Integrados" #: modules/network/net.c:281 msgctxt "net-if-type" msgid "IPv6-over-IPv4 Tunnel" msgstr "Túnel IPv6-sobre-IPv4" #: modules/network/net.c:282 msgctxt "net-if-type" msgid "VMWare Virtual Network Interface (NAT)" msgstr "VMWare Interface de Rede Virtual (NAT)" #: modules/network/net.c:283 msgctxt "net-if-type" msgid "VMWare Virtual Network Interface" msgstr "Interface de Rede Virtual do VMWare" #: modules/network/net.c:284 msgctxt "net-if-type" msgid "Personal Area Network (PAN)" msgstr "Rede de Área Pessoal (PAN)" #: modules/network/net.c:285 msgctxt "net-if-type" msgid "Bluetooth" msgstr "Bluetooth" #: modules/network/net.c:286 msgctxt "net-if-type" msgid "Bridge Interface" msgstr "Interface Ponte" #: modules/network/net.c:287 msgctxt "net-if-type" msgid "Hamachi Virtual Personal Network" msgstr "Rede Pessoal Virtual do Hamachi" #: modules/network/net.c:289 msgctxt "net-if-type" msgid "Intermediate Functional Block" msgstr "Bloco Funcional Intermediário" #: modules/network/net.c:290 msgctxt "net-if-type" msgid "GRE Network Tunnel" msgstr "Túnel de Rede GRE" #: modules/network/net.c:291 msgctxt "net-if-type" msgid "Mesh Network" msgstr "Malha de Rede" #: modules/network/net.c:292 msgctxt "net-if-type" msgid "Wireless Master Interface" msgstr "Interface Principal Wireless" #: modules/network/net.c:293 msgctxt "net-if-type" msgid "VirtualBox Virtual Network Interface" msgstr "Interface de Rede Virtual do VirtualBox" #: modules/network/net.c:299 msgctxt "net-if-type" msgid "Wireless (WAN)" msgstr "Rede sem fio (WAN)" #: modules/network/net.c:301 msgctxt "net-if-type" msgid "(Unknown)" msgstr "(Desconhecido)" #: modules/network/net.c:364 modules/network/net.c:374 msgid "Network Interfaces" msgstr "Interfaces de Rede" #: modules/network/net.c:364 msgid "None Found" msgstr "Nenhum Encontrado" #: modules/network/net.c:431 msgid "Network Adapter Properties" msgstr "Propriedades do adaptador de rede" #: modules/network/net.c:432 msgid "Interface Type" msgstr "Tipo de interface" #: modules/network/net.c:433 msgid "Hardware Address (MAC)" msgstr "Endereço físico (MAC)" #: modules/network/net.c:437 msgid "MTU" msgstr "MTU" #: modules/network/net.c:439 msgid "Transfer Details" msgstr "Detalhes da transferência" #: modules/network/net.c:440 msgid "Bytes Received" msgstr "Bytes recebidos" #: modules/network/net.c:441 msgid "Bytes Sent" msgstr "Bytes Enviados" #: modules/network/net.c:458 modules/network/net.c:480 #: modules/network/net.c:481 msgid "dBm" msgstr "dBm" #: modules/network/net.c:458 msgid "mW" msgstr "mW" #: modules/network/net.c:472 msgid "Wireless Properties" msgstr "Propriedades da Rede sem fio" #: modules/network/net.c:473 msgid "Network Name (SSID)" msgstr "Nome da Rede (SSID)" #: modules/network/net.c:474 msgid "Bit Rate" msgstr "Taxa de Bits" #: modules/network/net.c:475 msgid "Transmission Power" msgstr "Potência de transmissão" #: modules/network/net.c:478 msgid "Link Quality" msgstr "Qualidade do link" #: modules/network/net.c:479 msgid "Signal / Noise" msgstr "Sinal / Ruído" #: modules/network/net.c:494 msgid "Internet Protocol (IPv4)" msgstr "Protocolo de internet (IPv4)" #: modules/network/net.c:495 modules/network/net.c:496 #: modules/network/net.c:498 msgid "(Not set)" msgstr "(Não configurado)" #: modules/network/net.c:497 msgid "Broadcast Address" msgstr "Endereço de transmissão" #: includes/spd-decode.h:28 msgid "RAM" msgstr "" #, c-format #~ msgid "Module \"%s\" depends on module \"%s\", load it?" #~ msgstr "Modulo \"%s\" depende do módulo \"%s\", carregar isso? " #, c-format #~ msgid "Module \"%s\" depends on module \"%s\"." #~ msgstr "Modulo \"%s\" depende do módulo \"%s\"." #~ msgid "_Open..." #~ msgstr "_Abrir" #~ msgid "Perl6 (VM)" #~ msgstr "Perl6 (VM)" #~ msgid "Perl6" #~ msgstr "Perl6" #~ msgid "Spin/Flavor" #~ msgstr "Derivação" #~ msgid "_Copy to Clipboard" #~ msgstr "_Copiar para área de transferência" #~ msgid "Copy to clipboard" #~ msgstr "Copiar para área de transferência" #~ msgid " ... and HardInfo2 running with superuser privileges" #~ msgstr " ... e HardInfo2 rodando com privilégios de superusuário" #~ msgid "Memory information requires one or both of the following:" #~ msgstr "" #~ "As informações de memória precisam um ou ambos do seguinte:" #, c-format #~ msgid "" #~ "Written by %s\n" #~ "Licensed under %s" #~ msgstr "" #~ "Escrito por 1%s\n" #~ "Licenciado sob %s" #, c-format #~ msgid "No about information is associated with the %s module." #~ msgstr "Não há informação associada com o módulo%s ." #~ msgid "User Note" #~ msgstr "Nota de usuário" #~ msgid "" #~ "This result is from an old version of HardInfo2. Results might not be " #~ "comparable to current version. Some details are missing." #~ msgstr "" #~ "Este resultado é de uma versão antiga do HardInfo2. Os resultados não " #~ "devem ser comparados com os da versão atual. Alguns detalhes estão " #~ "faltando." #~ msgid "Total Memory" #~ msgstr "Total de memoria " #~ msgid "Free Memory" #~ msgstr "Memoria livre" #~ msgid "Cached Swap" #~ msgstr "Memória usada no swap" #~ msgid "High Memory" #~ msgstr "Memória alta" #~ msgid "Free High Memory" #~ msgstr "Memória alta livre" #~ msgid "Low Memory" #~ msgstr "Memória baixa" #~ msgid "Free Low Memory" #~ msgstr "Memória baixa Livre" #~ msgid "Virtual Memory" #~ msgstr "Memória virtual" #~ msgid "Free Virtual Memory" #~ msgstr "Memória virtual livre" #~ msgid "(Not available; Perhaps try running HardInfo2 as root.)" #~ msgstr "(Não disponível; Tente rodar o HardInfo2 como root.)" #~ msgid "RISC-V Processor" #~ msgstr "Processador RISC-V" #, c-format #~ msgid "" #~ "Copyright (C) 2003-%d L. A. F. Pereira. See COPYING for details.\n" #~ "\n" #~ msgstr "" #~ "Copyright (C) 2003-%d L. A. F. Pereira. See COPYING for details.\n" #~ "\n" #, c-format #~ msgid "" #~ "Compile-time options:\n" #~ " Release version: %s (%s)\n" #~ " BinReloc enabled: %s\n" #~ " Data prefix: %s\n" #~ " Library prefix: %s\n" #~ " Compiled for: %s\n" #~ msgstr "" #~ "Opções de tempo de compilação:\n" #~ " Versão de lançamento: %s (%s)\n" #~ " BinReloc ativado: %s\n" #~ " Prefixo de dados: %s\n" #~ " Prefixo da biblioteca: %s\n" #~ " Compilado por: %s\n" #, c-format #~ msgid "" #~ "Failed to find runtime data.\n" #~ "\n" #~ "• Is HardInfo2 correctly installed?\n" #~ "• See if %s and %s exists and you have read permission." #~ msgstr "" #~ "Falha ao localizar dados de tempo de execução.\n" #~ "• O HardInfo2 está corretamente instalado?\n" #~ "• Veja se %s e %sexiste e você tem permissão de leitura." #, c-format #~ msgid "" #~ "Modules:\n" #~ "%-20s %-15s %-12s\n" #~ msgstr "" #~ "Módulos:\n" #~ " %-20s %-15s %-12s\n" #~ msgid "File Name" #~ msgstr "Nome do arquivo" #, c-format #~ msgid "Unknown benchmark ``%s'' or benchmark.so not loaded" #~ msgstr "Benchmark desconhecido `` 1%s'' ou benchmark.so não foi carregado" #~ msgid "run benchmark; requires benchmark.so to be loaded" #~ msgstr "executar benchmark; requer benchmark.so a ser carregado" #~ msgid "note attached to benchmark results" #~ msgstr "nota anexada aos resultados de benchmark" #~ msgid "lists modules" #~ msgstr "lista os módulos" #~ msgid "specify module to load" #~ msgstr "especificar módulo para carregar" #~ msgid "automatically load module dependencies" #~ msgstr "carregar automaticamente as dependências do módulo" #~ msgid "run in XML-RPC server mode" #~ msgstr "executar no modo do servidor XML-RPC" #~ msgid "- System Profiler and Benchmark tool" #~ msgstr "- Ferramenta Profiler e Benchmark do sistema" #, c-format #~ msgid "" #~ "No module could be loaded. Check permissions on \"%s\" and try again." #~ msgstr "" #~ "Nenhum módulo pode ser carregado. Verifique as permissões on \"%s\" e " #~ "tente novamente." #~ msgid "" #~ "No module could be loaded. Please use hardinfo2 -l to list all available " #~ "modules and try again with a valid module list." #~ msgstr "" #~ "Nenhum módulo pode ser carregado. Por favor, use hardinfo2 -l para listar " #~ "todos os módulos disponíveis e tente novamente com uma lista de módulos " #~ "válida." #~ msgid "Author:" #~ msgstr "Autor:" #~ msgid "Contributors:" #~ msgstr "Contribuidores:" #~ msgid "Based on work by:" #~ msgstr "Baseado no trabalho de:" #~ msgid "MD5 implementation by Colin Plumb (see md5.c for details)" #~ msgstr "Implementação do MD5 por Colin Plumb (veja md5.c para detalhes)" #~ msgid "SHA1 implementation by Steve Reid (see sha1.c for details)" #~ msgstr "Implementação de SHA1 por Steve Reid (veja sha1.c para detalhes)" #~ msgid "Blowfish implementation by Paul Kocher (see blowfich.c for details)" #~ msgstr "" #~ "Implementação Blowfish por Paul Kocher (veja blowfich.c para detalhes)" #~ msgid "Raytracing benchmark by John Walker (see fbench.c for details)" #~ msgstr "Raytracing benchmark por John Walker (veja fbench.c para detalhes)" #~ msgid "FFT benchmark by Scott Robert Ladd (see fftbench.c for details)" #~ msgstr "" #~ "Referência de FFT por Scott Robert Ladd (veja fftbench.c para detalhes)" #~ msgid "Some code partly based on x86cpucaps by Osamu Kayasono" #~ msgstr "Algum código parcialmente baseado em x86cpucaps por Osamu Kayasono" #~ msgid "Vendor list based on GtkSysInfo by Pissens Sebastien" #~ msgstr "Lista de fornecedores baseada em GtkSysInfo por Pissens Sebastien" #~ msgid "DMI support based on code by Stewart Adam" #~ msgstr "Suporte DMI baseado em código por Stewart Adam" #~ msgid "SCSI support based on code by Pascal F. Martin" #~ msgstr "Suporte SCSI baseado em código por Pascal F. Martin" #~ msgid "Tango Project" #~ msgstr "Projeto Tango" #~ msgid "The GNOME Project" #~ msgstr "Projeto Gnome" #~ msgid "VMWare, Inc. (USB icon from VMWare Workstation 6)" #~ msgstr "VMWare, Inc. (Ícone USB do VMWare Workstation 6)" #~ msgid "System information and benchmark tool" #~ msgstr "Informações do sistema e ferramenta de benchmark" #~ msgid "" #~ "HardInfo2 is free software; you can redistribute it and/or modify it " #~ "under the terms of the GNU General Public License as published by the " #~ "Free Software Foundation, version 2.\n" #~ "\n" #~ "This program is distributed in the hope that it will be useful, but " #~ "WITHOUT ANY WARRANTY; without even the implied warranty of " #~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General " #~ "Public License for more details.\n" #~ "\n" #~ "You should have received a copy of the GNU General Public License along " #~ "with this program; if not, write to the Free Software Foundation, Inc., " #~ "51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA" #~ msgstr "" #~ "HardInfo2 é software livre; você pode redistribuí-lo e / ou modificá-lo " #~ "sob os termos da Licença Pública Geral GNU como publicada pela Free " #~ "Software Foundation, versão 2.\n" #~ "\n" #~ "Este programa é distribuído na esperança de que seja útil, mas SEM " #~ "QUALQUER GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou " #~ "ADEQUAÇÃO A UM DETERMINADO FIM. Veja a Licença Pública Geral GNU para " #~ "mais detalhes.\n" #~ "\n" #~ "Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com " #~ "este programa; se não, escreva para a Free Software Foundation, Inc., 51 " #~ "Franklin Street, Fifth Floor, Boston, MA 02110-1301 EUA" #~ msgid "translator-credits" #~ msgstr "" #~ "tradutor-créditos darck sama lucas batista da silva equipe biglinux " #~ msgid "_Remote" #~ msgstr "_Remoto" #~ msgid "About _Modules" #~ msgstr "Sobre_módulos " #~ msgid "_Network Updater..." #~ msgstr "_Atualizador de rede ..." #, c-format #~ msgid "%s - System Information" #~ msgstr "%s - Informações do sistema " #~ msgid "System Information" #~ msgstr "Informações do sistema" #~ msgid "" #~ "HardInfo2 was compiled without libsoup support. (Network Updater requires " #~ "it.)" #~ msgstr "" #~ "O HardInfo2 foi compilado sem suporte ao libsoup. (Atualizador de rede " #~ "requer isso.)" #, c-format #~ msgid "%s (error #%d)" #~ msgstr "%s (erro #%d)" #~ msgid "Could not parse XML-RPC response" #~ msgstr "Não foi possível analisar a resposta do XML-RPC" #, c-format #~ msgid "" #~ "Server says it supports API version %d, but this version of HardInfo2 " #~ "only supports API version %d." #~ msgstr "" #~ "Servidor diz que suporta a versão da API ,%d mas esta versão do HardInfo2 " #~ "suporta apenas a versão da API %d." #~ msgid "Contacting HardInfo2 Central Database" #~ msgstr "Entrando em contato com o banco de dados central do HardInfo2" #~ msgid "Cleaning up" #~ msgstr "Limpar" #, c-format #~ msgid "" #~ "Failed while performing \"%s\". Please file a bug report if this problem " #~ "persists. (Use the Help→Report bug option.)\n" #~ "\n" #~ "Details: %s" #~ msgstr "" #~ "Falha ao executar \"%s\". Por favor arquive um relatório de bug se este " #~ "problema persistir. (Use a opção Ajuda → Reportar erro.)\n" #~ "\n" #~ "Detalhes: %s" #, c-format #~ msgid "" #~ "Failed while performing \"%s\". Please file a bug report if this problem " #~ "persists. (Use the Help→Report bug option.)" #~ msgstr "" #~ "Falha ao executar \"%s\". Por favor arquive um relatório de bug se este " #~ "problema persistir. (Use a opção Ajuda → Reportar erro.)" #~ msgid "Network Updater" #~ msgstr "Atualizador de rede" #~ msgid "FPU Raytracing" #~ msgstr "Raytracing de FPU" #~ msgid "SysBench Memory" #~ msgstr "SysBench Memória" #~ msgid "Results in MiB/second. Higher is better." #~ msgstr "Resultados em MiB / segundo. Mais alto é melhor." #~ msgid "Results in seconds. Lower is better." #~ msgstr "Resultados em segundos. Menor é melhor." #~ msgid "" #~ "Benchmarking. Please do not move your mouse\n" #~ "or press any keys." #~ msgstr "" #~ "Avaliando o desempenho. Por favor, não mova o mouse\n" #~ "ou pressione qualquer tecla." #~ msgid "Cancel" #~ msgstr "Cancelar" #~ msgid "Update CPU feature database" #~ msgstr "Atualizar banco de dados de recursos da CPU" #~ msgid "" #~ "Any NVMe storage devices present are not listed.\n" #~ "udisksd is required for NVMe devices." #~ msgstr "" #~ "Quaisquer dispositivos de armazenamento NVMe não foram listados.\n" #~ "udisksd é requerido pelos dispositivos NVMe." #~ msgid "Requires the fwupdmgr utility." #~ msgstr "Requer o utilitário fwupdmgr." #, c-format #~ msgid "Vendor=%s\n" #~ msgstr "Fornecedor=%s\n" #~ msgid "Thread" #~ msgstr "Thread Fio" #~ msgid "#SysBench CPU (Four threads)" #~ msgstr "#SysBench CPU (4 processamentos)" #~ msgid "#SysBench Memory (Single-thread)" #~ msgstr "#SysBench Memória (Processamento unitário)" #~ msgid "#SysBench Memory (Two threads)" #~ msgstr "#SysBench Memória (2 Processamentos)" #~ msgid "#Revision" #~ msgstr "#Revisão" #~ msgid "#Extra" #~ msgstr "#Extra" #~ msgid "#User Note" #~ msgstr "#Nota de usuário" hardinfo2-hardinfo2-1331e88/po/ru.po000066400000000000000000005735101474767047500171620ustar00rootroot00000000000000msgid "" msgstr "" "Project-Id-Version: hardinfo2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-13 22:49+0300\n" "PO-Revision-Date: 2022-03-05 23:00+0300\n" "Last-Translator: Sergey Rodin , ViktorOn, tutralex\n" "Language-Team: \n" "Language: ru\n" "X-Poedit-Basepath: ../\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: Russian\n" "X-Poedit-Country: Russia\n" "X-Poedit-SourceCharset: utf-8\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" #: hardinfo2/cpu_util.c:29 msgid "Little Endian" msgstr "Младший порядок байтов" #: hardinfo2/cpu_util.c:31 msgid "Big Endian" msgstr "Старший порядок байтов" #: hardinfo2/cpu_util.c:205 hardinfo2/cpu_util.c:216 modules/devices/gpu.c:262 msgid "Frequency Scaling" msgstr "Масштабирование частоты" #: hardinfo2/cpu_util.c:206 modules/devices/gpu.c:263 msgid "Minimum" msgstr "Минимальная" #: hardinfo2/cpu_util.c:206 hardinfo2/cpu_util.c:207 hardinfo2/cpu_util.c:208 #: hardinfo2/dt_util.c:590 modules/devices/gpu.c:263 modules/devices/gpu.c:264 msgid "kHz" msgstr "кГц" #: hardinfo2/cpu_util.c:207 modules/devices/gpu.c:264 msgid "Maximum" msgstr "Максимальная" #: hardinfo2/cpu_util.c:208 msgid "Current" msgstr "Текущая" #: hardinfo2/cpu_util.c:209 modules/devices/gpu.c:265 msgid "Transition Latency" msgstr "Задержка перехода" #: hardinfo2/cpu_util.c:209 modules/devices/gpu.c:265 msgid "ns" msgstr "нс" #: hardinfo2/cpu_util.c:210 msgid "Governor" msgstr "Регулятор" #: hardinfo2/cpu_util.c:211 hardinfo2/cpu_util.c:217 modules/devices.c:842 #: modules/devices/gpu.c:209 modules/devices/pci.c:169 #: modules/devices/usb.c:139 msgid "Driver" msgstr "Драйвер" #: hardinfo2/cpu_util.c:223 modules/computer.c:801 #: modules/devices/arm/processor.c:195 modules/devices/arm/processor.c:477 #: modules/devices/e2k/processor.c:178 modules/devices/riscv/processor.c:185 #: modules/devices/riscv/processor.c:346 modules/devices/x86/processor.c:283 #: modules/devices/x86/processor.c:387 modules/devices/x86/processor.c:525 msgid "(Not Available)" msgstr "(Недоступно)" #: hardinfo2/cpu_util.c:231 hardinfo2/cpu_util.c:233 msgid "Socket" msgstr "Сокет" #: hardinfo2/cpu_util.c:236 hardinfo2/cpu_util.c:238 modules/devices/gpu.c:205 #: modules/devices/gpu.c:295 msgid "Core" msgstr "Ядро" #: hardinfo2/cpu_util.c:241 msgid "Book" msgstr "Книга" #: hardinfo2/cpu_util.c:243 msgid "Drawer" msgstr "Трассировщик" #: hardinfo2/cpu_util.c:249 modules/devices/arm/processor.c:709 #: modules/devices/riscv/processor.c:551 modules/devices/x86/processor.c:751 msgid "Topology" msgstr "Топология" #: hardinfo2/cpu_util.c:250 msgid "ID" msgstr "ИД" #: hardinfo2/dmi_util.c:25 msgid "BIOS Information" msgstr "Информация о BIOS" #: hardinfo2/dmi_util.c:26 modules/devices/parisc/processor.c:157 msgid "System" msgstr "Система" #: hardinfo2/dmi_util.c:27 msgid "Base Board" msgstr "Основная плата" #: hardinfo2/dmi_util.c:28 modules/devices/dmi.c:54 msgid "Chassis" msgstr "Шасси" #: hardinfo2/dmi_util.c:29 modules/computer.c:580 modules/computer.c:1144 #: modules/devices/alpha/processor.c:87 modules/devices/arm/processor.c:563 #: modules/devices.c:99 modules/devices/e2k/processor.c:357 #: modules/devices/ia64/processor.c:159 #: modules/devices/loongarch64/processor.c:93 #: modules/devices/m68k/processor.c:83 modules/devices/mips/processor.c:74 #: modules/devices/parisc/processor.c:154 modules/devices/ppc/processor.c:157 #: modules/devices/riscv/processor.c:583 modules/devices/s390/processor.c:131 #: modules/devices/sh/processor.c:83 modules/devices/sparc/processor.c:74 #: modules/devices/x86/processor.c:647 msgid "Processor" msgstr "Процессор" #: hardinfo2/dmi_util.c:30 msgid "Memory Controller" msgstr "Контроллер памяти" #: hardinfo2/dmi_util.c:31 msgid "Memory Module" msgstr "Модуль памяти" #: hardinfo2/dmi_util.c:32 modules/devices/arm/processor.c:572 #: modules/devices/e2k/processor.c:366 modules/devices/parisc/processor.c:163 #: modules/devices/riscv/processor.c:592 modules/devices/x86/processor.c:663 msgid "Cache" msgstr "Кэш" #: hardinfo2/dmi_util.c:33 msgid "Port Connector" msgstr "Разъем порта" #: hardinfo2/dmi_util.c:34 msgid "System Slots" msgstr "Системные слоты" #: hardinfo2/dmi_util.c:35 msgid "On Board Devices" msgstr "Встроенные устройства" #: hardinfo2/dmi_util.c:36 msgid "OEM Strings" msgstr "Строки OEM" #: hardinfo2/dmi_util.c:37 msgid "System Configuration Options" msgstr "Параметры конфигурации системы" #: hardinfo2/dmi_util.c:38 msgid "BIOS Language" msgstr "Язык BIOS" #: hardinfo2/dmi_util.c:39 msgid "Group Associations" msgstr "Групповые ассоциации" #: hardinfo2/dmi_util.c:40 msgid "System Event Log" msgstr "Журнал системных событий" #: hardinfo2/dmi_util.c:41 msgid "Physical Memory Array" msgstr "Массив физической памяти" #: hardinfo2/dmi_util.c:42 msgid "Memory Device" msgstr "Устройство памяти" #: hardinfo2/dmi_util.c:43 msgid "32-bit Memory Error" msgstr "Ошибка 32-битной памяти" #: hardinfo2/dmi_util.c:44 msgid "Memory Array Mapped Address" msgstr "Адрес сопоставления массива памяти" #: hardinfo2/dmi_util.c:45 msgid "Memory Device Mapped Address" msgstr "Адрес сопоставления запоминающего устройства" #: hardinfo2/dmi_util.c:46 msgid "Built-in Pointing Device" msgstr "Встроенное указывающее устройство" #: hardinfo2/dmi_util.c:47 msgid "Portable Battery" msgstr "Съемная батарея" #: hardinfo2/dmi_util.c:48 msgid "System Reset" msgstr "Сброс системы" #: hardinfo2/dmi_util.c:49 msgid "Hardware Security" msgstr "Аппаратная безопасность" #: hardinfo2/dmi_util.c:50 msgid "System Power Controls" msgstr "Управление питанием" #: hardinfo2/dmi_util.c:51 msgid "Voltage Probe" msgstr "Датчик напряжения" #: hardinfo2/dmi_util.c:52 msgid "Cooling Device" msgstr "Устройство охлаждения" #: hardinfo2/dmi_util.c:53 msgid "Temperature Probe" msgstr "Температурный датчик" #: hardinfo2/dmi_util.c:54 msgid "Electrical Current Probe" msgstr "Датчик тока" #: hardinfo2/dmi_util.c:55 msgid "Out-of-band Remote Access" msgstr "Внешний удаленный доступ" #: hardinfo2/dmi_util.c:56 msgid "Boot Integrity Services" msgstr "Служба целостности загрузки" #: hardinfo2/dmi_util.c:57 msgid "System Boot" msgstr "Загрузка системы" #: hardinfo2/dmi_util.c:58 msgid "64-bit Memory Error" msgstr "Ошибка 64-битной памяти" #: hardinfo2/dmi_util.c:59 msgid "Management Device" msgstr "Устройство управления" #: hardinfo2/dmi_util.c:60 msgid "Management Device Component" msgstr "Компонент устройства управления" #: hardinfo2/dmi_util.c:61 msgid "Management Device Threshold Data" msgstr "Пороговые значения устройства управления" #: hardinfo2/dmi_util.c:62 msgid "Memory Channel" msgstr "Канал памяти" #: hardinfo2/dmi_util.c:63 msgid "IPMI Device" msgstr "IPMI-устройство" #: hardinfo2/dmi_util.c:64 msgid "Power Supply" msgstr "Источник питания" #: hardinfo2/dmi_util.c:65 msgid "Additional Information" msgstr "Дополнительная информация" #: hardinfo2/dmi_util.c:66 msgid "Onboard Device" msgstr "Встроенное устройство" #: hardinfo2/dmi_util.c:233 msgid "Invalid chassis type (0)" msgstr "Неверный тип шасси (0)" #: hardinfo2/dmi_util.c:234 hardinfo2/dmi_util.c:235 msgid "Unknown chassis type" msgstr "Неизвестный тип шасси" #: hardinfo2/dmi_util.c:236 msgid "Desktop" msgstr "Настольный компьютер" #: hardinfo2/dmi_util.c:237 msgid "Low-profile Desktop" msgstr "Низкопрофильный компьютер" #: hardinfo2/dmi_util.c:238 msgid "Pizza Box" msgstr "Коробка для пиццы" #: hardinfo2/dmi_util.c:239 msgid "Mini Tower" msgstr "Размер Mini Tower" #: hardinfo2/dmi_util.c:240 msgid "Tower" msgstr "Размер Tower" #: hardinfo2/dmi_util.c:241 msgid "Portable" msgstr "Портативный компьютер" #: hardinfo2/dmi_util.c:242 modules/computer.c:408 modules/computer.c:417 #: modules/computer.c:440 modules/computer.c:442 msgid "Laptop" msgstr "Лэптоп" #: hardinfo2/dmi_util.c:243 msgid "Notebook" msgstr "Ноутбук" #: hardinfo2/dmi_util.c:244 msgid "Handheld" msgstr "Ручной" #: hardinfo2/dmi_util.c:245 msgid "Docking Station" msgstr "Док-станция" #: hardinfo2/dmi_util.c:246 msgid "All-in-one" msgstr "Все в одном" #: hardinfo2/dmi_util.c:247 msgid "Subnotebook" msgstr "Субноутбук" #: hardinfo2/dmi_util.c:248 msgid "Space-saving" msgstr "Экономия места" #: hardinfo2/dmi_util.c:249 msgid "Lunch Box" msgstr "Коробка для ланча" #: hardinfo2/dmi_util.c:250 msgid "Main Server Chassis" msgstr "Основной корпус сервера" #: hardinfo2/dmi_util.c:251 msgid "Expansion Chassis" msgstr "Шасси расширения" #: hardinfo2/dmi_util.c:252 msgid "Sub Chassis" msgstr "Субшасси" #: hardinfo2/dmi_util.c:253 msgid "Bus Expansion Chassis" msgstr "Шасси расширения шины" #: hardinfo2/dmi_util.c:254 msgid "Peripheral Chassis" msgstr "Периферийное шасси" #: hardinfo2/dmi_util.c:255 msgid "RAID Chassis" msgstr "RAID-шасси" #: hardinfo2/dmi_util.c:256 msgid "Rack Mount Chassis" msgstr "Корпус для монтажа в стойку" #: hardinfo2/dmi_util.c:257 msgid "Sealed-case PC" msgstr "ПК в герметичном корпусе" #: hardinfo2/dmi_util.c:258 msgid "Multi-system" msgstr "Мультисистема" #: hardinfo2/dmi_util.c:259 msgid "CompactPCI" msgstr "Компактный PCI" #: hardinfo2/dmi_util.c:260 msgid "AdvancedTCA" msgstr "Расширенный ТСА" #: hardinfo2/dmi_util.c:261 msgid "Blade" msgstr "" #: hardinfo2/dmi_util.c:262 msgid "Blade Enclosing" msgstr "" #: hardinfo2/dmi_util.c:263 msgid "Tablet" msgstr "Планшет" #: hardinfo2/dmi_util.c:264 msgid "Convertible" msgstr "Конвертируемый" #: hardinfo2/dmi_util.c:265 msgid "Detachable" msgstr "Съемный" #: hardinfo2/dmi_util.c:266 msgid "IoT Gateway" msgstr "Шлюз Интернета вещей" #: hardinfo2/dmi_util.c:267 msgid "Embedded PC" msgstr "Встроенный ПК" #: hardinfo2/dmi_util.c:268 msgid "Mini PC" msgstr "Мини ПК" #: hardinfo2/dmi_util.c:269 msgid "Stick PC" msgstr "Стик ПК" #: hardinfo2/dt_util.c:1175 msgid "phandle Map" msgstr "Карта фэндла" #: hardinfo2/dt_util.c:1176 msgid "Alias Map" msgstr "Карта псевдонимов" #: hardinfo2/dt_util.c:1177 msgid "Symbol Map" msgstr "Карта символов" #. !/ %d will be latest year of copyright #: hardinfo2/hardinfo.c:108 #, c-format msgid "" "Copyright (C) 2003-2023 L. A. F. Pereira. 2024-%d Hardinfo2 Project.\n" "\n" msgstr "" "Авторское право: © 2003-2023 L. A. F. Pereira. 2024-%d Hardinfo2 Project.\n" "\n" #: hardinfo2/hardinfo.c:110 #, c-format msgid "" "Compile-time options:\n" " Release version: %s (%s)\n" " LibSoup version: %s\n" " Data : %s\n" " Library : %s\n" " Locale : %s\n" " Compiled for : %s\n" msgstr "" "Параметры компиляции:\n" " Версия выпуска: %s (%s)\n" " Версия LibSoup: %s\n" " Данные: %s\n" " Библиотека: %s\n" " Локаль: %s\n" " Скомпилировано: %s\n" #: hardinfo2/hardinfo.c:118 msgid "3.0" msgstr "" #: hardinfo2/hardinfo.c:153 #, c-format msgid "Unknown benchmark ``%s''\n" msgstr "Неизвестный тест \"%s\"\n" #: hardinfo2/hardinfo.c:192 msgid "Don't know what to do. Exiting." msgstr "Не знаю что делать... Выхожу." #: hardinfo2/usb_util.c:293 modules/devices/devicetree.c:90 #: modules/devices/devicetree.c:91 modules/devices/monitors.c:411 #: modules/devices/storage.c:306 modules/devices/storage.c:328 msgid "(None)" msgstr "(Нет)" #: hardinfo2/util.c:100 modules/computer/uptime.c:54 #, c-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d день" msgstr[1] "%d дня" msgstr[2] "%d дней" #: hardinfo2/util.c:101 modules/computer/uptime.c:55 #, c-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d час" msgstr[1] "%d часа" msgstr[2] "%d часов" #: hardinfo2/util.c:102 modules/computer/uptime.c:56 #, c-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d минута" msgstr[1] "%d минуты" msgstr[2] "%d минут" #: hardinfo2/util.c:103 #, c-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "секунда" msgstr[1] "секунды" msgstr[2] "секунд" #: hardinfo2/util.c:124 #, c-format msgid "%.1f B" msgstr "%.1f Б" #: hardinfo2/util.c:126 #, c-format msgid "%.1f KiB" msgstr "%.1f КиБ" #: hardinfo2/util.c:128 #, c-format msgid "%.1f MiB" msgstr "%.1f МиБ" #: hardinfo2/util.c:130 #, c-format msgid "%.1f GiB" msgstr "%.1f ГиБ" #: hardinfo2/util.c:132 #, c-format msgid "%.1f TiB" msgstr "%.1f ТиБ" #: hardinfo2/util.c:134 #, c-format msgid "%.1f PiB" msgstr "%.1f ПиБ" #: hardinfo2/util.c:283 msgid "Error" msgstr "Ошибка" #: hardinfo2/util.c:283 hardinfo2/util.c:299 msgid "Warning" msgstr "Предупреждение" #: hardinfo2/util.c:298 msgid "Fatal Error" msgstr "Фатальная ошибка" #: hardinfo2/util.c:325 msgid "do not print status messages to standard output" msgstr "не выводить сообщения о состоянии на стандартный вывод" #: hardinfo2/util.c:331 msgid "creates a report and prints to standard output" msgstr "создает отчет и выводит на стандартный вывод" #: hardinfo2/util.c:337 msgid "chooses a report format ([text], html)" msgstr "выберите формат отчета ([text], HTML)" #: hardinfo2/util.c:343 msgid "run single benchmark eg. -b 'FPU FFT' (Default all Benchmarks runs)" msgstr "" "запустить один тест производительности, например -b 'FPU FFT' по умолчанию " "запускаются все тесты)" #: hardinfo2/util.c:349 msgid "" "user note attached to benchmark results. (updating/synchronize with server)" msgstr "" "примечание пользователя, прикрепленное к результатам теста (обновление/" "синхронизация с сервером)" #: hardinfo2/util.c:355 msgid "benchmark result format ([short], conf, shell)" msgstr "формат результата теста ([short], conf, shell)" #: hardinfo2/util.c:361 msgid "" "maximum number of benchmark results to include (-1 for no limit, default is " "50)" msgstr "" "максимальное количество результатов тестов для включения (-1 для отсутствия " "ограничений, по умолчанию 50)" #: hardinfo2/util.c:367 msgid "shows program version and quit" msgstr "показывает версию программы и выходит" #: hardinfo2/util.c:373 msgid "do not run benchmarks" msgstr "не запускать тесты" #: hardinfo2/util.c:379 msgid "show all details" msgstr "показать все подробности" #: hardinfo2/util.c:384 msgid "- System Information and Benchmark" msgstr "- Системная информация и тесты" #: hardinfo2/util.c:394 #, c-format msgid "" "Unrecognized arguments.\n" "Try ``%s --help'' for more information.\n" msgstr "" "Неизвестные аргументы.\n" "Используйте \"%s --help\" для справки.\n" #: hardinfo2/util.c:867 #, c-format msgid "Scanning: %s..." msgstr "Сканирование: %s..." #: hardinfo2/util.c:877 shell/shell.c:303 shell/shell.c:877 shell/shell.c:2114 msgid "Done." msgstr "Выполнено." #: hardinfo2/vendor.c:213 msgid "Update vendor list" msgstr "Обновить список поставщиков" #: hardinfo2/vendor.c:218 msgid "Check Update Version" msgstr "Проверить обновления" #: hardinfo2/vendor.c:391 modules/computer.c:630 modules/computer.c:829 #: modules/computer/os.c:197 modules/computer/os.c:379 #: modules/computer/os.c:414 modules/computer/os.c:746 #: modules/computer/os.c:807 modules/devices.c:464 modules/devices.c:614 #: modules/devices/firmware.c:149 modules/devices/printers.c:106 #: modules/devices/printers.c:113 modules/devices/printers.c:123 #: modules/devices/printers.c:138 modules/devices/printers.c:147 #: modules/devices/printers.c:256 modules/devices/spd-decode.c:364 #: modules/devices/usb.c:149 msgid "Unknown" msgstr "Неизвестно" #: shell/callbacks.c:457 shell/shell.c:531 msgid "System Information and Benchmark" msgstr "Информация о системе и тесты" #: shell/callbacks.c:461 msgid "" "HardInfo2 is free software; you can redistribute it and/or modify it under " "the terms of the GNU General Public License as published by the Free " "Software Foundation, version 2 or later.\n" "\n" "This program is distributed in the hope that it will be useful, but WITHOUT " "ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " "FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " "more details.\n" "\n" "You should have received a copy of the GNU General Public License along with " "this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin St, Fifth Floor, Boston, MA 02110-1301 USA" msgstr "" "HardInfo2 — это свободное программное обеспечение. Вы можете распространять " "и (или) изменять его в соответствии с Универсальной общественной лицензией " "(GNU), опубликованной Фондом свободного программного обеспечения (FSF), " "версии 2 или более поздней.\n" "\n" "Эта программа распространяется в надежде, что она будет полезна, но БЕЗ " "КАКОЙ-ЛИБО ГАРАНТИИ! Даже без подразумеваемой гарантии ТОВАРНОЙ ПРИГОДНОСТИ " "или ПРИГОДНОСТИ ДЛЯ КОНКРЕТНОЙ ЦЕЛИ. См. GNU лицензию для более подробной " "информации.\n" "\n" "Вы должны были получить копию GNU лицензии вместе с этой программой, если " "нет, напишите в FSF, Inc., 51 Franklin St, Fifth Floor, Boston, MA " "02110-1301 USA." #: shell/menu.c:37 msgid "_Information" msgstr "_Информация" #: shell/menu.c:38 msgid "_View" msgstr "_Вид" #: shell/menu.c:40 msgid "_Theme" msgstr "_Тема" #: shell/menu.c:42 msgid "_Help" msgstr "_Справка" #: shell/menu.c:46 msgid "Generate _Report" msgstr "Создать _отчет" #: shell/menu.c:47 msgid "Generates a report with detailed system information" msgstr "Создать отчет с подробной информацией о системе" #: shell/menu.c:51 shell/syncmanager.c:692 msgid "Synchronize" msgstr "Синхронизировать" #: shell/menu.c:52 msgid "Send benchmark results and receive updated data from the network" msgstr "Отправить результаты тестирования и получить обновленные данные" #: shell/menu.c:62 msgid "_Refresh" msgstr "_Обновить" #: shell/menu.c:67 msgid "_Open HardInfo2 Web Site" msgstr "_Домашняя станица" #: shell/menu.c:72 msgid "_Report bug" msgstr "_Сообщить об ошибке" #: shell/menu.c:77 msgid "_About HardInfo2" msgstr "_О приложении..." #: shell/menu.c:78 msgid "Displays program version information" msgstr "Показывает информацию о версии программы" #: shell/menu.c:82 msgid "_Quit" msgstr "_Выход" #: shell/menu.c:89 msgid "_Side Pane" msgstr "_Боковая панель" #: shell/menu.c:90 msgid "Toggles side pane visibility" msgstr "Видимость боковой панели" #: shell/menu.c:93 msgid "_Toolbar" msgstr "_Панель инструментов" #: shell/menu.c:97 msgid "Synchronize on startup" msgstr "Синхронизировать при запуске" #: shell/menu.c:102 msgid "Disable Theme" msgstr "Отключена" #: shell/menu.c:106 msgid "Theme Motherboard" msgstr "Motherboard" #: shell/menu.c:110 msgid "Theme Graffiti" msgstr "Graffiti" #: shell/menu.c:114 msgid "Theme Anime PC" msgstr "Anime PC" #: shell/menu.c:118 msgid "Theme Tux Star" msgstr "Tux Star" #: shell/menu.c:122 msgid "Theme PixArt" msgstr "PixArt" #: shell/menu.c:126 msgid "Theme Silicon" msgstr "Silicon" #: shell/report.c:833 shell/report.c:841 msgid "Save File" msgstr "Сохранить файл" #: shell/report.c:836 shell/report.c:1315 shell/syncmanager.c:778 msgid "_Cancel" msgstr "_Отмена" #: shell/report.c:838 msgid "_Save" msgstr "_Сохранить" #: shell/report.c:1016 msgid "Cannot create ReportContext. Programming bug?" msgstr "Не могу создать отчет. Программная ошибка?" #: shell/report.c:1036 msgid "Open the report with your web browser?" msgstr "Открыть отчет в веб-браузере?" #: shell/report.c:1039 msgid "_No" msgstr "_Нет" #: shell/report.c:1040 msgid "_Open" msgstr "_Открыть" #: shell/report.c:1071 msgid "Generating report..." msgstr "Создается отчет..." #: shell/report.c:1081 msgid "Report saved." msgstr "Отчет сохранен." #: shell/report.c:1083 msgid "Error while creating the report." msgstr "Ошибка во время создания отчета." #: shell/report.c:1185 msgid "Generate Report" msgstr "Создать отчет" #: shell/report.c:1211 msgid "" "Generate Report\n" "Please choose the information that you wish to view in your report:" msgstr "" "Создать отчет\n" "Пожалуйста, выберите информацию для отображения в отчете:" #: shell/report.c:1281 msgid "Select _None" msgstr "Выбор: нет" #: shell/report.c:1292 msgid "Select _All" msgstr "Выбор: все" #: shell/report.c:1325 msgid "_Generate" msgstr "_Сгенерировать" #: shell/shell.c:526 #, c-format msgid "%s - System Information and Benchmark" msgstr "%s — Системная информация и тесты" #: shell/shell.c:862 msgid "Loading modules..." msgstr "Загрузка модулей..." #: shell/shell.c:1633 msgid "URL" msgstr "Сайт" #: shell/shell.c:1640 msgid "Support URL" msgstr "Сайт поддержки" #: shell/shell.c:1651 msgid "Wikipedia" msgstr "Википедия" #: shell/shell.c:1984 #, c-format msgid "%s → Summary" msgstr "%s → Сводка" #: shell/shell.c:2090 msgid "Updating..." msgstr "Обновление..." #: shell/syncmanager.c:80 msgid "" "Synchronize with Central Database\n" "The following information may be synchronized\n" "with the HardInfo2 central database." msgstr "" "Синхронизировать с центральной базой данных\n" "Следующая информация может быть синхронизирована\n" "с центральной базой данных HardInfo2." #: shell/syncmanager.c:84 msgid "" "Synchronizing\n" "This may take some time." msgstr "" "Синхронизация\n" "Это может занять какое-то время." #: shell/syncmanager.c:546 msgid "(canceled)" msgstr "(отменен)" #: shell/syncmanager.c:562 msgid "(failed)" msgstr "(ошибка)" #: shell/syncmanager.c:658 modules/benchmark.c:923 msgid "Send benchmark results" msgstr "Отправить результаты тестирования" #: shell/syncmanager.c:765 msgid "Privacy Policy" msgstr "Политика конфиденциальности" #: shell/syncmanager.c:787 msgid "_Synchronize" msgstr "_Синхронизировать" #: shell/syncmanager.c:836 #, c-format msgid "Synchronizing: %s" msgstr "Синхронизация: %s" #: modules/benchmark/benches.c:138 msgid "CPU Blowfish (Single-thread)" msgstr "CPU Blowfish (однопоточный)" #: modules/benchmark/benches.c:146 msgid "CPU Blowfish (Multi-thread)" msgstr "CPU Blowfish (многопоточный)" #: modules/benchmark/benches.c:154 msgid "CPU Blowfish (Multi-core)" msgstr "CPU Blowfish (многоядерный)" #: modules/benchmark/benches.c:162 msgid "CPU Zlib" msgstr "" #: modules/benchmark/benches.c:170 msgid "CPU CryptoHash" msgstr "CPU криптохеш" #: modules/benchmark/benches.c:178 msgid "CPU Fibonacci" msgstr "CPU Фибоначчи" #: modules/benchmark/benches.c:186 msgid "CPU N-Queens" msgstr "" #: modules/benchmark/benches.c:194 msgid "FPU FFT" msgstr "FPU быстрое преобразование Фурье" #: modules/benchmark/benches.c:202 msgid "FPU Raytracing (Single-thread)" msgstr "FPU трассировка лучей" #: modules/benchmark/benches.c:210 msgid "Internal Network Speed" msgstr "Скорость внутренней сети" #: modules/benchmark/benches.c:218 msgid "SysBench CPU (Single-thread)" msgstr "SysBench CPU (однопоточный)" #: modules/benchmark/benches.c:226 msgid "SysBench CPU (Multi-thread)" msgstr "SysBench CPU (многопоточный)" #: modules/benchmark/benches.c:234 msgid "SysBench CPU (Four threads)" msgstr "SysBench CPU (четыре потока)" #: modules/benchmark/benches.c:242 msgid "SysBench Memory (Single-thread)" msgstr "SysBench Memory (однопоточный)" #: modules/benchmark/benches.c:250 msgid "SysBench Memory (Two threads)" msgstr "SysBench Memory (два потока)" #: modules/benchmark/benches.c:258 msgid "SysBench Memory (Quad threads)" msgstr "SysBench Memory (четыре потока)" #: modules/benchmark/benches.c:266 msgid "SysBench Memory (Multi-thread)" msgstr "SysBench Memory (многопоточный)" #: modules/benchmark/benches.c:274 msgid "GPU Drawing" msgstr "" #: modules/benchmark/benches.c:283 msgid "GPU OpenGL Drawing" msgstr "" #: modules/benchmark/benches.c:292 msgid "Storage R/W Speed" msgstr "Скорость хранилища" #: modules/benchmark/benches.c:300 msgid "Cache/Memory" msgstr "Кэш/Память" #: modules/benchmark/benches.c:314 msgid "" "Alexey Kopytov's sysbench is required.\n" "Results in events/second. Higher is better." msgstr "" "Требуется sysbench от Алексея Копытова.\n" "Результаты в событиях в секунду. Чем выше, тем лучше." #: modules/benchmark/benches.c:320 msgid "" "Alexey Kopytov's sysbench is required.\n" "Results in MiB/second. Higher is better." msgstr "" "Требуется sysbench от Алексея Копытова.\n" "Результаты в МиБ/сек. Чем выше, тем лучше." #: modules/benchmark/benches.c:323 msgid "" "iperf3 is required.\n" "Results in Gbits/s. Higher is better." msgstr "" "Требуется iperf3.\n" "Результаты в Гбит/с. Чем выше, тем лучше." #: modules/benchmark/benches.c:334 msgid "Results in HIMarks. Higher is better." msgstr "Результаты в HIMarks. Чем выше, тем лучше." #: modules/benchmark/benches.c:336 msgid "" "Results in HIMarks. Higher is better.\n" "Many Desktop Environments only uses software." msgstr "" "Результаты в HIMarks. Чем выше, тем лучше.\n" "Многие среды рабочего стола используют только программное обеспечение." #: modules/benchmark/benches.c:340 msgid "Results in MB/s. Higher is better." msgstr "Результаты в МБ/с. Чем выше, тем лучше." #: modules/benchmark/benches.c:343 msgid "Results in FPS. Higher is better." msgstr "Результаты в FPS. Чем выше, тем лучше." #. !/ Used for an unknown value. Having it in only one place cleans up the .po #. * line references #: modules/benchmark/bench_results.c:34 modules/computer.c:41 #: modules/computer/display.c:40 modules/computer/display.c:57 #: modules/computer/os.c:401 modules/computer/os.c:458 modules/devices.c:596 #: modules/devices/dmi_memory.c:699 modules/devices/dmi_memory.c:835 #: modules/devices/gpu.c:40 modules/devices/gpu.c:58 modules/devices/gpu.c:122 #: modules/devices/gpu.c:130 modules/devices/gpu.c:210 #: modules/devices/gpu.c:211 modules/devices/gpu.c:230 #: modules/devices/inputdevices.c:51 modules/devices/monitors.c:28 #: modules/devices/monitors.c:29 modules/devices/monitors.c:155 #: modules/devices/monitors.c:164 modules/devices/pci.c:25 #: modules/devices/pci.c:170 modules/devices/pci.c:171 #: modules/devices/spd-decode.c:358 modules/devices/spd-decode.c:359 #: modules/devices/spd-decode.c:362 modules/devices/spd-decode.c:363 #: modules/devices/spd-decode.c:584 modules/devices/spd-decode.c:899 #: modules/devices/spd-decode.c:900 modules/devices/spd-decode.c:1111 #: modules/devices/spd-decode.c:1350 modules/devices/storage.c:27 #: modules/devices/storage.c:307 modules/devices/storage.c:336 #: modules/devices/storage.c:431 modules/devices/usb.c:29 #: modules/network/net.c:460 includes/cpu_util.h:11 includes/spd-decode.h:24 #: includes/spd-decode.h:25 msgid "(Unknown)" msgstr "(Неизвестно)" #: modules/benchmark/bench_results.c:261 modules/devices/alpha/processor.c:90 #: modules/devices/arm/processor.c:511 modules/devices/arm/processor.c:524 #: modules/devices/arm/processor.c:567 modules/devices/arm/processor.c:742 #: modules/devices.c:430 modules/devices.c:438 modules/devices.c:466 #: modules/devices/e2k/processor.c:363 modules/devices/e2k/processor.c:400 #: modules/devices/gpu.c:125 modules/devices/gpu.c:127 #: modules/devices/gpu.c:133 modules/devices/gpu.c:135 #: modules/devices/gpu.c:233 modules/devices/gpu.c:235 #: modules/devices/ia64/processor.c:167 modules/devices/ia64/processor.c:196 #: modules/devices/loongarch64/processor.c:98 #: modules/devices/m68k/processor.c:87 modules/devices/mips/processor.c:77 #: modules/devices/parisc/processor.c:158 #: modules/devices/parisc/processor.c:191 modules/devices/ppc/processor.c:160 #: modules/devices/ppc/processor.c:187 modules/devices/riscv/processor.c:380 #: modules/devices/riscv/processor.c:393 modules/devices/riscv/processor.c:588 #: modules/devices/riscv/processor.c:623 modules/devices/s390/processor.c:160 #: modules/devices/sh/processor.c:87 modules/devices/sh/processor.c:88 #: modules/devices/sh/processor.c:89 modules/devices/x86/processor.c:317 #: modules/devices/x86/processor.c:330 modules/devices/x86/processor.c:658 #: modules/devices/x86/processor.c:789 msgid "MHz" msgstr "МГц" #: modules/benchmark/bench_results.c:293 modules/devices.c:177 #, c-format msgid "%d physical processor" msgid_plural "%d physical processors" msgstr[0] "%d физический процессор" msgstr[1] "%d физических процессора" msgstr[2] "%d физических процессоров" #: modules/benchmark/bench_results.c:294 modules/devices.c:178 #, c-format msgid "%d core" msgid_plural "%d cores" msgstr[0] "%d ядро" msgstr[1] "%d ядра" msgstr[2] "%d ядер" #: modules/benchmark/bench_results.c:295 modules/devices.c:179 #, c-format msgid "%d thread" msgid_plural "%d threads" msgstr[0] "%d поток" msgstr[1] "%d потока" msgstr[2] "%d потоков" #: modules/benchmark/bench_results.c:300 modules/devices.c:181 #, c-format msgid "%d NUMA node" msgid_plural "%d NUMA nodes" msgstr[0] "%d узел NUMA" msgstr[1] "%d узла NUMA" msgstr[2] "%d узлов NUMA" #. !/NP procs; NC cores across NN nodes; NT threads #: modules/benchmark/bench_results.c:304 #, c-format msgid "%s; %s across %s; %s" msgstr "%s; %s через %s; %s" #. !/NP procs; NC cores; NT threads #: modules/benchmark/bench_results.c:309 #, c-format msgid "%s; %s; %s" msgstr "%s; %s; %s" #: modules/benchmark/bench_results.c:383 modules/benchmark/bench_results.c:508 #: modules/computer.c:1041 modules/devices/dmi_memory.c:639 #: modules/devices/dmi_memory.c:649 modules/devices/dmi_memory.c:703 #: modules/devices/dmi_memory.c:791 modules/devices/dmi_memory.c:837 #: modules/devices/dmi_memory.c:920 modules/devices/spd-decode.c:1354 #: modules/network/net.c:416 modules/network/net.c:440 #: modules/network/net.c:441 msgid "MiB" msgstr " МиБ" #: modules/benchmark/bench_results.c:388 modules/benchmark/bench_results.c:507 msgid "kiB" msgstr "КиБ" #: modules/benchmark/bench_results.c:396 modules/benchmark/bench_results.c:452 #, c-format msgid "%d-bit" msgstr "%d-бит" #: modules/benchmark/bench_results.c:417 modules/benchmark/bench_results.c:482 msgid "Benchmark Result" msgstr "Результат теста" #: modules/benchmark/bench_results.c:417 modules/benchmark/bench_results.c:482 msgid "Threads" msgstr "Потоки" #: modules/benchmark/bench_results.c:418 modules/benchmark/bench_results.c:484 msgid "Elapsed Time" msgstr "Затраченное время" #: modules/benchmark/bench_results.c:418 modules/benchmark/bench_results.c:484 msgid "seconds" msgstr "секунд" #: modules/benchmark/bench_results.c:419 modules/computer/languages.c:101 #: modules/devices/arm/processor.c:578 modules/devices/e2k/processor.c:362 #: modules/devices/gpu.c:203 modules/devices/ia64/processor.c:166 #: modules/devices/loongarch64/processor.c:97 modules/devices/pci.c:167 #: modules/devices/ppc/processor.c:159 msgid "Revision" msgstr "Ревизия" #: modules/benchmark/bench_results.c:420 modules/benchmark/bench_results.c:485 msgid "Extra Information" msgstr "Дополнительная информация" #: modules/benchmark/bench_results.c:422 modules/benchmark/bench_results.c:487 msgid "Note" msgstr "Примечание" #: modules/benchmark/bench_results.c:423 modules/benchmark/bench_results.c:488 msgid "" "This result is from an old version of HardInfo. Results might not be " "comparable to current version. Some details are missing." msgstr "" "Этот результат получен из старой версии HardInfo. Результаты могут быть " "несопоставимы с текущей версией. Некоторые детали отсутствуют." #: modules/benchmark/bench_results.c:427 modules/benchmark/bench_results.c:492 #: modules/devices/devicetree/pmac_data.c:81 modules/devices/sh/processor.c:85 msgid "Machine" msgstr "Машина" #: modules/benchmark/bench_results.c:428 modules/benchmark/bench_results.c:492 #: modules/devices/devicetree.c:207 modules/devices/dmi.c:48 msgid "Board" msgstr "Плата" #: modules/benchmark/bench_results.c:429 modules/benchmark/bench_results.c:494 #: modules/computer.c:583 msgid "Machine Type" msgstr "Тип машины" #: modules/benchmark/bench_results.c:430 modules/benchmark/bench_results.c:497 msgid "CPU Name" msgstr "Название процессора" #: modules/benchmark/bench_results.c:431 modules/benchmark/bench_results.c:498 msgid "CPU Description" msgstr "Описание процессора" #: modules/benchmark/bench_results.c:432 modules/benchmark/bench_results.c:500 #: modules/benchmark.c:600 msgid "CPU Config" msgstr "Конфигурация процессора" #: modules/benchmark/bench_results.c:433 modules/benchmark/bench_results.c:500 msgid "Threads Available" msgstr "Доступно потоков" #: modules/benchmark/bench_results.c:434 modules/benchmark/bench_results.c:501 #: modules/benchmark.c:578 msgid "GPU" msgstr "Графический процессор" #: modules/benchmark/bench_results.c:435 modules/benchmark/bench_results.c:503 #: modules/computer.c:595 msgid "OpenGL Renderer" msgstr "Рендер OpenGL" #: modules/benchmark/bench_results.c:436 modules/benchmark/bench_results.c:505 #: modules/benchmark.c:589 modules/computer.c:1145 modules/devices.c:109 msgid "Storage" msgstr "Устройства хранения" #: modules/benchmark/bench_results.c:437 modules/benchmark/bench_results.c:507 #: modules/computer.c:140 modules/computer.c:582 modules/computer.c:1144 #: modules/devices/gpu.c:206 msgid "Memory" msgstr "Память" #: modules/benchmark/bench_results.c:438 modules/benchmark/bench_results.c:509 msgid "Pointer Size" msgstr "Размер указателя" #: modules/benchmark/bench_results.c:482 msgid "Benchmark" msgstr "Тест" #: modules/benchmark/bench_results.c:483 modules/devices/dmi_memory.c:859 #: modules/devices/firmware.c:245 modules/devices/monitors.c:495 #: modules/devices/x86/processor.c:692 msgid "Result" msgstr "Результат" #: modules/benchmark/bench_results.c:495 msgid "Linux Kernel" msgstr "Ядро Linux" #: modules/benchmark/bench_results.c:496 msgid "Linux OS" msgstr "ОС Linux" #: modules/benchmark/bench_results.c:507 msgid "Physical Memory" msgstr "Физическая память" #: modules/benchmark/bench_results.c:511 msgid "Handles" msgstr "" #: modules/benchmark/bench_results.c:511 msgid "mid" msgstr "" #: modules/benchmark/bench_results.c:512 msgid "cfg_val" msgstr "" #: modules/benchmark.c:351 msgid "This Machine" msgstr "Этот компьютер" #: modules/benchmark.c:577 modules/benchmark.c:588 modules/benchmark.c:600 msgid "Results" msgstr "Результаты" #: modules/benchmark.c:601 modules/devices/sparc/processor.c:75 msgid "CPU" msgstr "Процессор" #: modules/benchmark.c:679 #, c-format msgid "Benchmarking: %s." msgstr "Тестирование: %s." #: modules/benchmark.c:683 #, c-format msgid "Benchmarking: %s" msgstr "Тестирование: %s" #: modules/benchmark.c:687 msgid "Stop" msgstr "Стоп" #: modules/benchmark.c:700 msgid "" "Please do not move your mouse\n" "or press any keys." msgstr "Пожалуйста, не двигайте мышью и не нажимайте клавиши." #: modules/benchmark.c:759 msgid "Benchmarks" msgstr "Тесты" #: modules/benchmark.c:769 msgid "Perform tasks and compare with other systems" msgstr "Выполняет задания и сравнивает с другими системами" #: modules/benchmark.c:929 msgid "Receive benchmark results" msgstr "Принять результаты тестирования" #: modules/computer/alsa.c:26 modules/computer.c:599 msgid "Audio Devices" msgstr "Аудио устройства" #: modules/computer/alsa.c:34 msgid "Audio Adapter" msgstr "Звуковая карта" #: modules/computer.c:96 modules/devices/firmware.c:74 msgid "Summary" msgstr "Общая информация" #: modules/computer.c:97 modules/computer.c:585 modules/computer.c:1143 msgid "Operating System" msgstr "Операционная система" #: modules/computer.c:98 msgid "Security" msgstr "Безопасность" #: modules/computer.c:99 modules/devices/gpu.c:211 modules/devices/pci.c:171 msgid "Kernel Modules" msgstr "Модули ядра" #: modules/computer.c:100 modules/computer.c:741 msgid "Boots" msgstr "Загрузки" #: modules/computer.c:101 msgid "Languages" msgstr "Языки" #: modules/computer.c:102 msgid "Memory Usage" msgstr "Использование памяти" #: modules/computer.c:103 msgid "Filesystems" msgstr "Файловые системы" #: modules/computer.c:104 modules/computer.c:590 msgid "Display" msgstr "Дисплей" #: modules/computer.c:105 modules/computer/environment.c:37 msgid "Environment Variables" msgstr "Переменные среды" #: modules/computer.c:107 modules/computer.c:109 msgid "Development" msgstr "Разработка" #: modules/computer.c:111 modules/computer.c:884 msgid "Users" msgstr "Пользователи" #: modules/computer.c:112 msgid "Groups" msgstr "Группы" #: modules/computer.c:142 #, c-format msgid "%dMB (%dMB used)" msgstr "%d Мб (%d Мб занято)" #: modules/computer.c:144 modules/computer.c:646 msgid "Uptime" msgstr "Время работы" #: modules/computer.c:146 modules/computer.c:587 msgid "Date/Time" msgstr "Дата/время" # Должно совпадать с таким-же полем в строке 430 computer.c #: modules/computer.c:151 modules/computer.c:647 msgid "Load Average" msgstr "Средняя нагрузка" #: modules/computer.c:266 msgid "Scripting Languages" msgstr "Скриптовые языки" #: modules/computer.c:267 msgid "Gambas3 (gbr3)" msgstr "" #: modules/computer.c:268 msgid "Python (default)" msgstr "" #: modules/computer.c:269 msgid "Python2" msgstr "" #: modules/computer.c:270 msgid "Python3" msgstr "" #: modules/computer.c:271 msgid "Perl" msgstr "" #: modules/computer.c:272 msgid "Rakudo (Perl6)" msgstr "" #: modules/computer.c:273 msgid "PHP" msgstr "" #: modules/computer.c:274 msgid "Ruby" msgstr "" #: modules/computer.c:275 msgid "Bash" msgstr "" #: modules/computer.c:276 msgid "JavaScript (Node.js)" msgstr "" #: modules/computer.c:277 msgid "awk" msgstr "" #: modules/computer.c:278 msgid "Compilers" msgstr "Компиляторы" #: modules/computer.c:279 msgid "C (GCC)" msgstr "" #: modules/computer.c:280 msgid "C (Clang)" msgstr "" #: modules/computer.c:281 msgid "D (dmd)" msgstr "" #: modules/computer.c:282 msgid "Gambas3 (gbc3)" msgstr "" #: modules/computer.c:283 msgid "Java" msgstr "" #: modules/computer.c:284 msgid ".NET" msgstr "" #: modules/computer.c:285 msgid "Vala" msgstr "" #: modules/computer.c:286 msgid "Haskell (GHC)" msgstr "" #: modules/computer.c:287 msgid "FreePascal" msgstr "" #: modules/computer.c:288 msgid "Go" msgstr "" #: modules/computer.c:289 msgid "Rust" msgstr "" #: modules/computer.c:290 msgid "Tools" msgstr "Инструменты" #: modules/computer.c:291 msgid "make" msgstr "" #: modules/computer.c:292 msgid "ninja" msgstr "" #: modules/computer.c:293 msgid "GDB" msgstr "" #: modules/computer.c:294 msgid "LLDB" msgstr "" #: modules/computer.c:295 msgid "strace" msgstr "" #: modules/computer.c:296 msgid "valgrind" msgstr "" #: modules/computer.c:297 msgid "QMake" msgstr "" #: modules/computer.c:298 msgid "CMake" msgstr "" #: modules/computer.c:299 msgid "Gambas3 IDE" msgstr "" #: modules/computer.c:300 msgid "Radare2" msgstr "" #: modules/computer.c:301 msgid "ltrace" msgstr "" #: modules/computer.c:302 msgid "Powershell" msgstr "" #: modules/computer.c:343 msgid "Not found" msgstr "Не найдено" #: modules/computer.c:348 #, c-format msgid "Detecting version: %s" msgstr "Определена версия: %s" #: modules/computer.c:366 msgid "Program" msgstr "Программа" #: modules/computer.c:366 modules/computer.c:629 modules/computer.c:631 #: modules/computer.c:807 modules/computer/modules.c:371 #: modules/devices/dmi.c:41 modules/devices/dmi.c:47 modules/devices/dmi.c:51 #: modules/devices/dmi.c:57 modules/devices/firmware.c:75 #: modules/devices/inputdevices.c:146 modules/devices/monitors.c:409 msgid "Version" msgstr "Версия" #: modules/computer.c:385 msgid "Field" msgstr "Поле" #: modules/computer.c:385 modules/computer.c:730 modules/computer/modules.c:369 #: modules/computer/modules.c:370 modules/devices/arm/processor.c:708 #: modules/devices/riscv/processor.c:550 msgid "Description" msgstr "Описание" #: modules/computer.c:385 modules/devices.c:841 msgid "Value" msgstr "Значение" #: modules/computer.c:402 modules/computer.c:404 msgid "Single-board computer" msgstr "Одноплатный компьютер" #: modules/computer.c:455 modules/computer.c:457 msgid "Unknown physical machine type" msgstr "Неизвестный тип машины" #: modules/computer.c:479 modules/computer.c:480 modules/computer.c:527 #: modules/computer.c:529 msgid "Virtual (VMware)" msgstr "" #: modules/computer.c:482 modules/computer.c:483 modules/computer.c:484 #: modules/computer.c:485 msgid "Virtual (QEMU)" msgstr "" #: modules/computer.c:487 modules/computer.c:488 msgid "Virtual (Unknown)" msgstr "" #: modules/computer.c:490 modules/computer.c:491 modules/computer.c:492 #: modules/computer.c:520 modules/computer.c:522 msgid "Virtual (VirtualBox)" msgstr "" #: modules/computer.c:494 modules/computer.c:495 modules/computer.c:496 #: modules/computer.c:511 modules/computer.c:513 msgid "Virtual (Xen)" msgstr "" #: modules/computer.c:498 msgid "Virtual (hypervisor present)" msgstr "" #: modules/computer.c:579 modules/computer.c:1097 msgid "Computer" msgstr "Компьютер" #: modules/computer.c:586 modules/computer.c:640 msgid "User Name" msgstr "Пользователь" #: modules/computer.c:591 msgid "Resolution" msgstr "Разрешение" #: modules/computer.c:591 modules/computer.c:812 #, c-format msgid "%dx%d pixels" msgstr "%dx%d пикселей" #: modules/computer.c:593 msgid "Display Adapter" msgstr "Графический адаптер" #: modules/computer.c:596 msgid "Session Display Server" msgstr "Дисплейный драйвер сессии" #: modules/computer.c:601 modules/devices.c:108 msgid "Input Devices" msgstr "Устройства ввода" #: modules/computer.c:629 msgid "Kernel" msgstr "Ядро" #: modules/computer.c:630 msgid "Command Line" msgstr "Командная строка" #: modules/computer.c:632 msgid "C Library" msgstr "Библиотека C" #: modules/computer.c:633 msgid "Distribution" msgstr "Дистрибутив" #: modules/computer.c:638 msgid "Current Session" msgstr "Текущая сессия" #: modules/computer.c:639 msgid "Computer Name" msgstr "Имя компьютера" #: modules/computer.c:641 modules/computer/languages.c:99 msgid "Language" msgstr "Язык" #: modules/computer.c:642 modules/computer/users.c:53 msgid "Home Directory" msgstr "Домашний каталог" #: modules/computer.c:643 msgid "Desktop Environment" msgstr "Окружение рабочего стола" #: modules/computer.c:646 msgid "Misc" msgstr "Разное" #: modules/computer.c:660 msgid "HardInfo2" msgstr "" #: modules/computer.c:661 msgid "HardInfo2 running as" msgstr "HardInfo2 запущен от" #: modules/computer.c:662 msgid "Superuser" msgstr "Суперпользователь" #: modules/computer.c:662 msgid "User" msgstr "Пользователь" #: modules/computer.c:666 msgid "Health" msgstr "Здоровье" #: modules/computer.c:668 msgid "Available entropy in /dev/random" msgstr "Доступная энтропия в /dev/random" #: modules/computer.c:672 msgid "Hardening Features" msgstr "Возможности hardening" #: modules/computer.c:673 msgid "ASLR" msgstr "" #: modules/computer.c:674 msgid "dmesg" msgstr "" #: modules/computer.c:678 msgid "Linux Security Modules" msgstr "Модули безопасности Linux" #: modules/computer.c:679 msgid "Modules available" msgstr "Доступные модули" #: modules/computer.c:680 msgid "SELinux status" msgstr "Состояние SELinux" #: modules/computer.c:686 msgid "CPU Vulnerabilities" msgstr "Уязвимости процессора" #: modules/computer.c:727 msgid "Loaded Modules" msgstr "Загруженные модули" #: modules/computer.c:729 modules/computer.c:757 modules/computer.c:897 #: modules/computer/languages.c:95 modules/computer/modules.c:369 #: modules/devices/arm/processor.c:707 modules/devices/dmi.c:38 #: modules/devices/dmi.c:49 modules/devices/e2k/processor.c:358 #: modules/devices/gpu.c:301 modules/devices/ia64/processor.c:160 #: modules/devices/inputdevices.c:141 modules/devices/monitors.c:403 #: modules/devices/monitors.c:505 modules/devices/riscv/processor.c:549 #: modules/devices/sh/processor.c:84 modules/devices/x86/processor.c:750 #: modules/network.c:333 msgid "Name" msgstr "Название" #: modules/computer.c:743 msgid "Date & Time" msgstr "Дата и время" #: modules/computer.c:744 msgid "Kernel Version" msgstr "Версия ядра" #: modules/computer.c:754 msgid "Available Languages" msgstr "Доступные языки" #: modules/computer.c:756 msgid "Language Code" msgstr "Код языка" #: modules/computer.c:768 msgid "Mounted File Systems" msgstr "Смонтированные файловые системы" #: modules/computer.c:770 modules/computer/filesystem.c:89 msgid "Mount Point" msgstr "Точка монтирования" #: modules/computer.c:771 msgid "Usage" msgstr "Использование" #: modules/computer.c:772 modules/devices/arm/processor.c:759 #: modules/devices.c:865 modules/devices.c:879 #: modules/devices/e2k/processor.c:416 modules/devices/gpu.c:85 #: modules/devices/gpu.c:93 modules/devices/gpu.c:293 modules/devices/pci.c:123 #: modules/devices/pci.c:131 modules/devices/pci.c:175 #: modules/devices/riscv/processor.c:640 modules/devices/storage.c:48 #: modules/devices/storage.c:57 modules/devices/usb.c:172 #: modules/devices/usb.c:184 modules/devices/x86/processor.c:810 msgid "Device" msgstr "Устройство" #: modules/computer.c:795 msgid "Session" msgstr "Сессия" #: modules/computer.c:796 modules/devices.c:842 modules/devices.c:879 #: modules/devices/dmi.c:56 modules/devices/dmi_memory.c:729 #: modules/devices/inputdevices.c:142 modules/devices/spd-decode.c:1377 #: modules/devices/x86/processor.c:715 msgid "Type" msgstr "Тип" #: modules/computer.c:799 msgid "Wayland" msgstr "" #: modules/computer.c:800 modules/computer.c:805 msgid "Current Display Name" msgstr "Имя текущего дисплея" #: modules/computer.c:804 msgid "X Server" msgstr "X-сервер" #: modules/computer.c:806 modules/computer.c:846 modules/computer.c:869 #: modules/devices.c:879 modules/devices/dmi.c:40 modules/devices/dmi.c:46 #: modules/devices/dmi.c:50 modules/devices/dmi.c:55 #: modules/devices/dmi_memory.c:730 modules/devices/dmi_memory.c:873 #: modules/devices/e2k/processor.c:359 modules/devices/firmware.c:75 #: modules/devices/firmware.c:167 modules/devices/firmware.c:172 #: modules/devices/firmware.c:219 modules/devices/gpu.c:84 #: modules/devices/gpu.c:92 modules/devices/gpu.c:292 #: modules/devices/ia64/processor.c:161 modules/devices/inputdevices.c:144 #: modules/devices/monitors.c:402 modules/devices/pci.c:122 #: modules/devices/pci.c:130 modules/devices/storage.c:47 #: modules/devices/storage.c:56 modules/devices/storage.c:282 #: modules/devices/storage.c:572 modules/devices/storage.c:777 #: modules/devices/usb.c:171 modules/devices/x86/processor.c:654 msgid "Vendor" msgstr "Поставщик" #: modules/computer.c:808 msgid "Release Number" msgstr "Номер релиза" #: modules/computer.c:816 msgid "Screens" msgstr "Экраны" #: modules/computer.c:822 msgid "Disconnected" msgstr "Отключено" #: modules/computer.c:825 msgid "Connected" msgstr "Подключено" #: modules/computer.c:833 msgid "Unused" msgstr "Не используется" #: modules/computer.c:834 #, c-format msgid "%dx%d pixels, offset (%d, %d)" msgstr "%dx%d пикселей, смещение (%d, %d)" #: modules/computer.c:843 msgid "Outputs (XRandR)" msgstr "Выводы (XRandR)" #: modules/computer.c:845 msgid "OpenGL (GLX)" msgstr "" #: modules/computer.c:847 msgid "Renderer" msgstr "Рендер" #: modules/computer.c:848 msgid "Direct Rendering" msgstr "Графическое ускорение" #: modules/computer.c:849 modules/computer/modules.c:351 #: modules/computer/modules.c:352 modules/devices/inputdevices.c:153 #: modules/devices/printers.c:145 modules/devices/spd-decode.c:888 #: modules/devices/spd-decode.c:1100 msgid "Yes" msgstr "Да" #: modules/computer.c:849 modules/computer/modules.c:351 #: modules/computer/modules.c:352 modules/devices/printers.c:145 #: modules/devices/spd-decode.c:886 modules/devices/spd-decode.c:1097 msgid "No" msgstr "Нет" #: modules/computer.c:850 msgid "Version (Compatibility)" msgstr "Версия (совместимость)" #: modules/computer.c:851 msgid "Shading Language Version (Compatibility)" msgstr "Версия языка шейдеров (совместимость)" #: modules/computer.c:852 msgid "Version (Core)" msgstr "Версия (ядро)" #: modules/computer.c:853 msgid "Shading Language Version (Core)" msgstr "Версия языка шейдеров (ядро)" #: modules/computer.c:854 msgid "Version (ES)" msgstr "Версия (ES)" #: modules/computer.c:855 msgid "Shading Language Version (ES)" msgstr "Версия языка шейдеров (ES)" #: modules/computer.c:856 msgid "GLX Version" msgstr "Версия GLX" #: modules/computer.c:864 msgid "Vulkan" msgstr "" #: modules/computer.c:865 msgid "Instance Version" msgstr "Версия экземпляра" #: modules/computer.c:867 msgid "Api Version" msgstr "Версия API" #: modules/computer.c:868 msgid "Driver Version" msgstr "Версия драйвера" #: modules/computer.c:870 msgid "Device Type" msgstr "Тип устройства" #: modules/computer.c:871 msgid "Device Name" msgstr "Имя устройства" #: modules/computer.c:872 msgid "Driver Name" msgstr "Имя драйвера" #: modules/computer.c:873 msgid "Driver Info" msgstr "Информация о драйвере" #: modules/computer.c:874 msgid "Conformance Version" msgstr "Версия соответствия" #: modules/computer.c:895 msgid "Group" msgstr "Группа" #: modules/computer.c:898 modules/computer/users.c:52 msgid "Group ID" msgstr "ID группы" #: modules/computer.c:1037 #, c-format msgid "%0.1f %s available to Linux" msgstr "%0.1f %s доступно для Linux" #: modules/computer.c:1039 modules/devices/dmi_memory.c:637 #: modules/devices/dmi_memory.c:647 modules/devices/dmi_memory.c:789 #: modules/devices/dmi_memory.c:918 modules/devices/spd-decode.c:1352 msgid "GiB" msgstr "ГиБ" #: modules/computer.c:1043 modules/computer/memory_usage.c:73 #: modules/computer/modules.c:369 msgid "KiB" msgstr "КиБ" #: modules/computer.c:1116 modules/devices/devicetree/pmac_data.c:82 msgid "Motherboard" msgstr "Материнская плата" #: modules/computer.c:1144 msgid "Graphics" msgstr "Графика" #: modules/computer.c:1145 modules/devices.c:105 msgid "Printers" msgstr "Принтеры" #: modules/computer.c:1145 msgid "Audio" msgstr "Аудио" #: modules/computer.c:1194 msgid "Gathers high-level computer information" msgstr "Собирает высокоуровневую информацию о компьютере" #: modules/computer.c:1205 msgid "lsmod is required." msgstr "Требуется lsmod." #: modules/computer.c:1213 msgid "" "X.org's xrandr utility provides additional details when " "available." msgstr "" "Утилита X.org's xrandr предоставляет дополнительную " "информацию, если она доступна." #: modules/computer.c:1214 msgid "" "Mesa's glxinfo utility is required for OpenGL information." msgstr "" "Для получения информации OpenGL необходима утилита Mesa's glxinfo." #: modules/computer.c:1215 msgid "" "Vulkan's vulkaninfo utility is required for Vulkan information." msgstr "" "Для получения информации Vulkan необходима утилита Vulkan's " "vulkaninfo." #: modules/computer/filesystem.c:87 msgid "Filesystem" msgstr "Файловая система" #: modules/computer/filesystem.c:88 msgid "Mounted As" msgstr "Смонтировано" #: modules/computer/filesystem.c:88 msgid "Read-Write" msgstr "Для чтения и записи" #: modules/computer/filesystem.c:88 msgid "Read-Only" msgstr "Только для чтения" #: modules/computer/filesystem.c:90 modules/devices.c:865 #: modules/devices/dmi_memory.c:733 modules/devices/dmi_memory.c:766 #: modules/devices/dmi_memory.c:805 modules/devices/dmi_memory.c:872 #: modules/devices/spd-decode.c:1384 msgid "Size" msgstr "Размер" #: modules/computer/filesystem.c:91 msgid "Used" msgstr "Занято" #: modules/computer/filesystem.c:92 msgid "Available" msgstr "Свободно" #: modules/computer/languages.c:94 msgid "Locale Information" msgstr "Информация о языке" #: modules/computer/languages.c:96 modules/devices/gpu.c:266 #: modules/devices/spd-decode.c:1373 msgid "Source" msgstr "Источник" #: modules/computer/languages.c:97 msgid "Address" msgstr "Адрес" #: modules/computer/languages.c:98 msgid "E-mail" msgstr "Электронная почта" #: modules/computer/languages.c:100 msgid "Territory" msgstr "Территория" #: modules/computer/languages.c:102 modules/devices/dmi.c:45 msgid "Date" msgstr "Дата" #: modules/computer/languages.c:103 msgid "Codeset" msgstr "Кодировка" #: modules/computer/loadavg.c:64 msgid "Couldn't obtain load average" msgstr "Не удается установить среднюю загрузку" #: modules/computer/memory_usage.c:131 msgid "Total physical memory usable by the system" msgstr "Общий объем физической памяти" #: modules/computer/memory_usage.c:132 msgid "Free memory which is not used for anything" msgstr "Неиспользуемая Свободная память" #: modules/computer/memory_usage.c:133 msgid "Virtual memory, total swap space available" msgstr "Виртуальная память, общее доступное пространство" #: modules/computer/memory_usage.c:134 msgid "Virtual memory, remaining swap space available" msgstr "Виртуальная память, оставшееся свободное пространство" #: modules/computer/memory_usage.c:135 msgid "Memory present within main memory and in the swapfile" msgstr "Память, присутствующая в основной памяти и в файле подкачки" #: modules/computer/memory_usage.c:136 msgid "HighTotal value can vary based on the type of kernel used" msgstr "" "Значение HighTotal может меняться в зависимости от типа используемого ядра" #: modules/computer/memory_usage.c:137 msgid "Amount of memory that is not directly mapped into kernel space" msgstr "Объем памяти, который напрямую не отображается в пространство ядра" #: modules/computer/memory_usage.c:138 msgid "LowTotal value can vary based on the type of kernel used" msgstr "" "Значение LowTotal может меняться в зависимости от типа используемого ядра" #: modules/computer/memory_usage.c:139 msgid "Total and free memory directly mapped into kernel space" msgstr "Общая и свободная память напрямую отображается в пространстве ядра" #: modules/computer/memory_usage.c:140 msgid "Available memory for allocation to any process, without swapping" msgstr "Доступная память для выделения любому процессу, без подкачки" #: modules/computer/memory_usage.c:141 msgid "Memory in buffer cache, temporary storage for raw disk blocks" msgstr "Память в кэше, временное хранилище для необработанных дисковых блоков" #: modules/computer/memory_usage.c:142 msgid "Memory in the page cache (diskcache, shared memory, tmpfs and shmem)" msgstr "Память в страничном кэше (diskcache, общая память, tmpfs и shmem)" #: modules/computer/memory_usage.c:143 msgid "Memory used more recently and not swapped out or reclaimed" msgstr "" "Память, которая использовалась недавно и не была выгружена или восстановлена" #: modules/computer/memory_usage.c:144 msgid "Memory not been used recently and can be swapped out or reclaimed" msgstr "" "Память не использовалась в последнее время и может быть заменена или " "восстановлена" #: modules/computer/memory_usage.c:145 msgid "Anonymous memory used more recently and not swapped out" msgstr "Анонимная память, которая использовалась недавно и не была выгружена" #: modules/computer/memory_usage.c:146 msgid "Anonymous memory not been used and can be swapped out" msgstr "Анонимная память не использовалась и может быть заменена" #: modules/computer/memory_usage.c:147 msgid "Pagecache memory been used more recently and not reclaimed" msgstr "Память Pagecache использовалась совсем недавно и не была восстановлена" #: modules/computer/memory_usage.c:148 msgid "Pagecache memory reclaimable without huge performance impact" msgstr "" "Память Pagecache может быть восстановлена без существенного влияния на " "производительность" #: modules/computer/memory_usage.c:149 msgid "Unevictable pages can't be swapped out for a variety of reasons" msgstr "Неизменяемые страницы не могут быть заменены по ряду причин" #: modules/computer/memory_usage.c:150 msgid "Pages locked to memory using the mlock() system call" msgstr "Страницы заблокированы в памяти с помощью системного вызова mlock()" #: modules/computer/memory_usage.c:151 msgid "Memory consumed by the zswap backend (compressed size)" msgstr "Память, потребляемая бэкэндом zswap (сжатый размер)" #: modules/computer/memory_usage.c:152 msgid "Amount of anonymous memory stored in zswap (original size)" msgstr "Объем анонимной памяти, хранящейся в zswap (исходный размер)" #: modules/computer/memory_usage.c:153 msgid "Memory waiting to be written back to disk" msgstr "Память, ожидающая запись на диск" #: modules/computer/memory_usage.c:154 msgid "Memory which is actively being written back to disk" msgstr "Память, которая активно записывается на диск" #: modules/computer/memory_usage.c:155 msgid "Non-file backed pages mapped into userspace page tables" msgstr "" "Страницы, не поддерживаемые файлами, отображаются в таблицах страниц " "пользовательского пространства" #: modules/computer/memory_usage.c:156 msgid "Files which have been mmapped, such as libraries" msgstr "Сопоставленные в памяти файлы, например библиотеки" #: modules/computer/memory_usage.c:157 msgid "Total memory used by shared memory (shmem) and tmpfs" msgstr "Общая память, используемая разделяемой памятью (shmem) и tmpfs" #: modules/computer/memory_usage.c:158 msgid "Kernel allocations reclaimable under memory pressure" msgstr "Выделения ядра, восстанавливаемые при нехватке памяти" #: modules/computer/memory_usage.c:159 msgid "In-kernel data structures cache" msgstr "Кэш структур данных в ядре" #: modules/computer/memory_usage.c:160 msgid "Part of Slab, that might be reclaimed, such as caches" msgstr "Часть Slab, которую можно вернуть, например кэши" #: modules/computer/memory_usage.c:161 msgid "Part of Slab, that cannot be reclaimed on memory pressure" msgstr "Часть Slab, которая не может быть восстановлена ​​из-за нехватки памяти" #: modules/computer/memory_usage.c:162 msgid "Memory consumed by the kernel stacks of all tasks" msgstr "Память, потребляемая стеками ядра всех задач" #: modules/computer/memory_usage.c:163 msgid "Memory consumed by userspace page tables" msgstr "Память, потребляемая таблицами страниц пользовательского пространства" #: modules/computer/memory_usage.c:164 msgid "Memory consumed by secondary page tables" msgstr "Память, потребляемая таблицами вторичных страниц" #: modules/computer/memory_usage.c:165 msgid "Previous counted pages which had been written to the server" msgstr "Предыдущие подсчитанные страницы, которые были записаны на сервер" #: modules/computer/memory_usage.c:166 msgid "Memory used for block device bounce buffers" msgstr "Память, используемая для буферов отказов блочных устройств" #: modules/computer/memory_usage.c:167 msgid "Memory used by FUSE for temporary writeback buffers" msgstr "Память, используемая FUSE для временных буферов обратной записи" #: modules/computer/memory_usage.c:168 msgid "Total memory currently available to be allocated on the system" msgstr "" "Общий объем памяти, доступный в настоящее время для выделения в системе" #: modules/computer/memory_usage.c:169 msgid "The amount of memory presently allocated on the system" msgstr "Объем памяти, выделенной в настоящее время в системе" #: modules/computer/memory_usage.c:170 msgid "Total size of vmalloc virtual address space" msgstr "Общий размер виртуального адресного пространства vmalloc" #: modules/computer/memory_usage.c:171 msgid "Amount of vmalloc area which is used" msgstr "Объем используемой области vmalloc" #: modules/computer/memory_usage.c:172 msgid "Largest contiguous block of vmalloc area which is free" msgstr "Самый большой непрерывный блок области vmalloc, который свободен" #: modules/computer/memory_usage.c:173 msgid "Memory allocated to the percpu allocator" msgstr "Память, выделенная распределителю percpu" #: modules/computer/memory_usage.c:174 msgid "Amount of memory the kernel identifies as corrupted" msgstr "Объем памяти, который ядро ​​определяет как поврежденный" #: modules/computer/memory_usage.c:175 msgid "Non-file backed huge pages mapped into userspace page tables" msgstr "" "Огромные страницы, не поддерживаемые файлами, отображаются в таблицах " "страниц пользовательского пространства" #: modules/computer/memory_usage.c:176 msgid "Memory used by shmem and tmpfs allocated with huge pages" msgstr "Память, используемая shmem и tmpfs, выделенная огромными страницами" #: modules/computer/memory_usage.c:177 msgid "Shared memory mapped into userspace with huge pages" msgstr "" "Общая память, отображенная в пользовательском пространстве с огромными " "страницами" #: modules/computer/memory_usage.c:178 msgid "Memory used for fs data (page cache) allocated with huge pages" msgstr "" "Память, используемая для данных файловой системы (кэш страниц), выделяется с " "помощью огромных страниц" #: modules/computer/memory_usage.c:179 msgid "Page cache mapped into userspace with huge pages" msgstr "" "Кэш страниц, отображаемый в пользовательском пространстве с огромными " "страницами" #: modules/computer/memory_usage.c:180 msgid "Memory reserved for the Contiguous Memory Allocator (CMA)" msgstr "Память, зарезервированная для распределителя непрерывной памяти (CMA)" #: modules/computer/memory_usage.c:181 msgid "Free remaining memory in the CMA reserves" msgstr "Свободная оставшаяся память в резервах (CMA)" #: modules/computer/memory_usage.c:182 msgid "Amount of unaccepted memory usable by the kernel" msgstr "Объем непринятой памяти, доступной для использования ядром" #: modules/computer/memory_usage.c:183 msgid "Size of the pool of huge pages" msgstr "Размер пула огромных страниц" #: modules/computer/memory_usage.c:184 msgid "Number of huge pages available" msgstr "Количество доступных огромных страниц" #: modules/computer/memory_usage.c:185 msgid "Number of huge pages reserved" msgstr "Количество зарезервированных огромных страниц" #: modules/computer/memory_usage.c:186 msgid "Number of huge pages surplus" msgstr "Количество огромных избыточных страниц" #: modules/computer/memory_usage.c:187 msgid "Huge page size, used in conjunction with hugepages parameter" msgstr "" "Размер огромной страницы, используемый совместно с параметром hugepages" #: modules/computer/memory_usage.c:188 msgid "Total amount of memory consumed by huge pages of all sizes" msgstr "Общий объем памяти, потребляемый большими страницами всех размеров" #: modules/computer/memory_usage.c:189 msgid "Breakdown of page table sizes of 4k size" msgstr "Разбивка таблицы страниц размером 4k" #: modules/computer/memory_usage.c:190 msgid "Breakdown of page table sizes of 2M size" msgstr "Разбивка таблицы страниц размером 2M" #: modules/computer/memory_usage.c:191 msgid "Breakdown of page table sizes of 1G size" msgstr "Разбивка таблицы страниц размером 1G" #: modules/computer/modules.c:168 msgid "Update kernel module icon table" msgstr "Обновить таблицу значков модулей ядра" #: modules/computer/modules.c:337 modules/computer/modules.c:338 #: modules/computer/modules.c:339 modules/computer/modules.c:340 #: modules/computer/modules.c:341 modules/computer/modules.c:342 #: modules/devices/dmi.c:117 modules/devices/firmware.c:245 #: modules/devices/x86/processor.c:694 msgid "(Not available)" msgstr "(Недоступно)" #: modules/computer/modules.c:368 msgid "Module Information" msgstr "Информация о модуле" #: modules/computer/modules.c:368 modules/devices/gpu.c:298 msgid "Path" msgstr "Путь" #: modules/computer/modules.c:368 msgid "Used Memory" msgstr "Обьем используемой памяти" #: modules/computer/modules.c:370 msgid "Version Magic" msgstr "Версия" #: modules/computer/modules.c:371 msgid "In Linus' Tree" msgstr "В дереве исходных кодов ядра Linux" #: modules/computer/modules.c:372 msgid "Retpoline Enabled" msgstr "Retpoline включен" #: modules/computer/modules.c:372 msgid "Copyright" msgstr "Авторское право" #: modules/computer/modules.c:372 msgid "Author" msgstr "Автор" #: modules/computer/modules.c:373 msgid "License" msgstr "Лицензия" #: modules/computer/modules.c:379 msgid "Dependencies" msgstr "Зависимости" #: modules/computer/os.c:154 modules/computer/os.c:155 #: modules/computer/os.c:156 modules/computer/os.c:157 msgid "GNU C Library" msgstr "" #: modules/computer/os.c:158 msgid "uClibc or uClibc-ng" msgstr "" #: modules/computer/os.c:159 msgid "diet libc" msgstr "" #: modules/computer/os.c:230 modules/computer/os.c:233 msgid "GNOME Shell " msgstr "" #: modules/computer/os.c:241 modules/computer/os.c:244 msgid "Version: " msgstr "Версия: " #: modules/computer/os.c:262 modules/computer/os.c:265 msgid "MATE Desktop Environment " msgstr "" #: modules/computer/os.c:298 #, c-format msgid "Unknown (Window Manager: %s)" msgstr "Неизвестно (Оконный менеджер: %s)" #. !/{desktop environment} on {session type} #: modules/computer/os.c:309 #, c-format msgid "%s on %s" msgstr "%s на %s" #: modules/computer/os.c:377 msgid "Terminal" msgstr "Терминал" #: modules/computer/os.c:393 msgid "User access allowed" msgstr "Пользовательский доступ разрешен" #: modules/computer/os.c:395 msgid "User access forbidden" msgstr "Пользовательский доступ запрещен" #: modules/computer/os.c:397 msgid "Access allowed (running as superuser)" msgstr "Доступ разрешен (запущено суперпользователем)" #: modules/computer/os.c:399 msgid "Access forbidden? (running as superuser)" msgstr "Доступ запрещен? (запущено суперпользователем)" #: modules/computer/os.c:408 modules/computer/os.c:798 msgid "Disabled" msgstr "Отключено" #: modules/computer/os.c:410 msgid "Partially enabled (mmap base+stack+VDSO base)" msgstr "Частично включено (mmap base+stack+VDSO base)" #: modules/computer/os.c:412 msgid "Fully enabled (mmap base+stack+VDSO base+heap)" msgstr "Полностью включено (mmap base+stack+VDSO base+heap)" #. !/bits of entropy for rng (0) #: modules/computer/os.c:421 msgid "(None or not available)" msgstr "(Нет или недоступно)" #. !/bits of entropy for rng (low/poor value) #: modules/computer/os.c:422 #, c-format msgid "%d bits (low)" msgstr "%d бит (низкая)" #. !/bits of entropy for rng (medium value) #: modules/computer/os.c:423 #, c-format msgid "%d bits (medium)" msgstr "%d бит (средняя)" #. !/bits of entropy for rng (high/good value) #: modules/computer/os.c:424 #, c-format msgid "%d bits (healthy)" msgstr "%d бит (огромная)" #: modules/computer/os.c:793 msgid "Not installed" msgstr "Не установлено" #: modules/computer/os.c:796 msgid "Enabled" msgstr "Включено" #: modules/computer/users.c:50 msgid "User Information" msgstr "Информация о пользователе" #: modules/computer/users.c:51 msgid "User ID" msgstr "ID пользователя" #: modules/computer/users.c:54 msgid "Default Shell" msgstr "Оболочка по умолчанию" #: modules/devices/alpha/processor.c:88 modules/devices/arm/processor.c:759 #: modules/devices.c:865 modules/devices/devicetree.c:162 #: modules/devices/devicetree.c:208 modules/devices/devicetree/pmac_data.c:80 #: modules/devices/e2k/processor.c:361 modules/devices/e2k/processor.c:416 #: modules/devices/gpu.c:116 modules/devices/ia64/processor.c:165 #: modules/devices/loongarch64/processor.c:96 #: modules/devices/m68k/processor.c:84 modules/devices/mips/processor.c:75 #: modules/devices/monitors.c:404 modules/devices/parisc/processor.c:155 #: modules/devices/ppc/processor.c:158 modules/devices/riscv/processor.c:584 #: modules/devices/riscv/processor.c:640 modules/devices/s390/processor.c:132 #: modules/devices/x86/processor.c:810 msgid "Model" msgstr "Модель" #: modules/devices/alpha/processor.c:89 msgid "Platform String" msgstr "Строка платформы" #: modules/devices/alpha/processor.c:90 modules/devices/arm/processor.c:567 #: modules/devices/arm/processor.c:759 modules/devices/e2k/processor.c:363 #: modules/devices/e2k/processor.c:416 modules/devices/ia64/processor.c:167 #: modules/devices/loongarch64/processor.c:98 #: modules/devices/m68k/processor.c:87 modules/devices/mips/processor.c:77 #: modules/devices/parisc/processor.c:158 modules/devices/ppc/processor.c:160 #: modules/devices/riscv/processor.c:588 modules/devices/riscv/processor.c:640 #: modules/devices/sh/processor.c:87 modules/devices/x86/processor.c:658 #: modules/devices/x86/processor.c:810 msgid "Frequency" msgstr "Частота" #: modules/devices/alpha/processor.c:91 modules/devices/arm/processor.c:568 #: modules/devices/e2k/processor.c:364 modules/devices/ia64/processor.c:168 #: modules/devices/m68k/processor.c:88 modules/devices/mips/processor.c:78 #: modules/devices/parisc/processor.c:159 modules/devices/ppc/processor.c:161 #: modules/devices/s390/processor.c:134 modules/devices/sh/processor.c:90 #: modules/devices/x86/processor.c:659 msgid "BogoMips" msgstr "" #: modules/devices/alpha/processor.c:92 modules/devices/arm/processor.c:569 #: modules/devices/e2k/processor.c:365 modules/devices/ia64/processor.c:169 #: modules/devices/loongarch64/processor.c:101 #: modules/devices/m68k/processor.c:89 modules/devices/mips/processor.c:79 #: modules/devices/parisc/processor.c:160 modules/devices/ppc/processor.c:162 #: modules/devices/riscv/processor.c:589 modules/devices/s390/processor.c:135 #: modules/devices/sh/processor.c:91 modules/devices/sparc/processor.c:77 #: modules/devices/x86/processor.c:660 msgid "Byte Order" msgstr "Порядок байтов" #. !/flag:swp #: modules/devices/arm/arm_data.c:42 msgctxt "arm-flag" msgid "SWP instruction (atomic read-modify-write)" msgstr "Инструкция SWP (атомарное чтение-изменение-запись)" #. !/flag:half #: modules/devices/arm/arm_data.c:43 msgctxt "arm-flag" msgid "Half-word loads and stores" msgstr "Загрузка и хранение полуслова" #. !/flag:thumb #: modules/devices/arm/arm_data.c:44 msgctxt "arm-flag" msgid "Thumb (16-bit instruction set)" msgstr "Thumb (набор 16-битных инструкций)" #. !/flag:26bit #: modules/devices/arm/arm_data.c:45 msgctxt "arm-flag" msgid "26-Bit Model (Processor status register folded into program counter)" msgstr "" "26-битная модель (регистр состояния процессора вложен в счетчик программы)" #. !/flag:fastmult #: modules/devices/arm/arm_data.c:46 msgctxt "arm-flag" msgid "32x32->64-bit multiplication" msgstr "32x32->64-битное умножение" #. !/flag:fpa #: modules/devices/arm/arm_data.c:47 msgctxt "arm-flag" msgid "Floating point accelerator" msgstr "Ускоритель плавающей точки" #. !/flag:vfp #: modules/devices/arm/arm_data.c:48 msgctxt "arm-flag" msgid "VFP (early SIMD vector floating point instructions)" msgstr "VFP (ранний вектор SIMD инструкций плавающей точки)" #. !/flag:edsp #: modules/devices/arm/arm_data.c:49 msgctxt "arm-flag" msgid "DSP extensions (the 'e' variant of the ARM9 CPUs, and all others above)" msgstr "расширения DSP (вариант \"e\" процессоров ARM9 и выше)" #. !/flag:java #: modules/devices/arm/arm_data.c:50 msgctxt "arm-flag" msgid "Jazelle (Java bytecode accelerator)" msgstr "Jazelle (ускоритель байт-кода Java)" #. !/flag:iwmmxt #: modules/devices/arm/arm_data.c:51 msgctxt "arm-flag" msgid "SIMD instructions similar to Intel MMX" msgstr "Инструкции SIMD, схожие с Intel MMX" #. !/flag:crunch #: modules/devices/arm/arm_data.c:52 msgctxt "arm-flag" msgid "MaverickCrunch coprocessor (if kernel support enabled)" msgstr "Сопроцессор MaverickCrunch (при наличии поддержки в ядре)" #. !/flag:thumbee #: modules/devices/arm/arm_data.c:53 msgctxt "arm-flag" msgid "ThumbEE" msgstr "" #. !/flag:neon #: modules/devices/arm/arm_data.c:54 msgctxt "arm-flag" msgid "Advanced SIMD/NEON on AArch32" msgstr "Дополнительный SIMD/NEON на AArch32" #. !/flag:evtstrm #: modules/devices/arm/arm_data.c:55 msgctxt "arm-flag" msgid "Kernel event stream using generic architected timer" msgstr "поток событий ядра с использованием общего архитектурного таймера" #. !/flag:vfpv3 #: modules/devices/arm/arm_data.c:56 msgctxt "arm-flag" msgid "VFP version 3" msgstr "VFP версии 3" #. !/flag:vfpv3d16 #: modules/devices/arm/arm_data.c:57 msgctxt "arm-flag" msgid "VFP version 3 with 16 D-registers" msgstr "VFP версии 3 с 16 D-регистрами" #. !/flag:vfpv4 #: modules/devices/arm/arm_data.c:58 msgctxt "arm-flag" msgid "VFP version 4 with fast context switching" msgstr "VFP версии 4 с быстрым контекстным переключением" #. !/flag:vfpd32 #: modules/devices/arm/arm_data.c:59 msgctxt "arm-flag" msgid "VFP with 32 D-registers" msgstr "VFP с 32 D-регистрами" #. !/flag:tls #: modules/devices/arm/arm_data.c:60 msgctxt "arm-flag" msgid "TLS register" msgstr "Регистр TLS" #. !/flag:idiva #: modules/devices/arm/arm_data.c:61 msgctxt "arm-flag" msgid "SDIV and UDIV hardware division in ARM mode" msgstr "Аппаратное разделение SDIV и UDIV в режиме ARM" #. !/flag:idivt #: modules/devices/arm/arm_data.c:62 msgctxt "arm-flag" msgid "SDIV and UDIV hardware division in Thumb mode" msgstr "Аппаратное разделение SDIV и UDIV в режиме Thumb" #. !/flag:lpae #: modules/devices/arm/arm_data.c:63 msgctxt "arm-flag" msgid "40-bit Large Physical Address Extension" msgstr "40-битное большое физическое адресное расширение" #. !/flag:pmull #: modules/devices/arm/arm_data.c:65 msgctxt "arm-flag" msgid "64x64->128-bit F2m multiplication (arch>=8)" msgstr "64x64->128-битное умножение F2m (arch>=8)" #. !/flag:aes #: modules/devices/arm/arm_data.c:66 msgctxt "arm-flag" msgid "Crypto:AES (arch>=8)" msgstr "Крипто:AES (arch>=8)" #. !/flag:sha1 #: modules/devices/arm/arm_data.c:67 msgctxt "arm-flag" msgid "Crypto:SHA1 (arch>=8)" msgstr "Крипто:SHA1 (arch>=8)" #. !/flag:sha2 #: modules/devices/arm/arm_data.c:68 msgctxt "arm-flag" msgid "Crypto:SHA2 (arch>=8)" msgstr "Крипто:SHA2 (arch>=8)" #. !/flag:crc32 #: modules/devices/arm/arm_data.c:69 msgctxt "arm-flag" msgid "CRC32 checksum instructions (arch>=8)" msgstr "инструкции контрольной суммы CRC32 (arch>=8)" #. !/flag:fp #: modules/devices/arm/arm_data.c:71 msgctxt "arm-flag" msgid "Floating-point on AArch64 (arch>=8)" msgstr "" #. !/flag:asimd #: modules/devices/arm/arm_data.c:72 msgctxt "arm-flag" msgid "Advanced SIMD/NEON on AArch64 (arch>=8)" msgstr "Дополнительный SIMD/NEON на AArch64 (arch>=8)" #. !/flag:atomics #: modules/devices/arm/arm_data.c:73 msgctxt "arm-flag" msgid "Atomic instructions on AArch64 (arch>=8)" msgstr "Атомарные инструкции на AArch64 (arch>=8)" #. !/flag:fphp #: modules/devices/arm/arm_data.c:74 msgctxt "arm-flag" msgid "Half precision floating point on AArch64 (arch>=8)" msgstr "С плавающей точкой половинной точности на AArch64 (arch>=8)" #. !/flag:asimdhp #: modules/devices/arm/arm_data.c:75 msgctxt "arm-flag" msgid "Advanced SIMD with BFloat16 on AArch64 (arch>=8)" msgstr "Расширенный SIMD с BFloat16 на AArch64 (arch>=8)" #. !/flag:cpuid #: modules/devices/arm/arm_data.c:76 msgctxt "arm-flag" msgid "CPU features can be read on AArch64 (arch>=8)" msgstr "Возможности ЦП можно прочитать на AArch64 (arch>=8)" #. !/flag:asimdrdm #: modules/devices/arm/arm_data.c:77 msgctxt "arm-flag" msgid "Advanced SIMD rounding Double MulAcc on AArch64 (arch>=8)" msgstr "Расширенное округление SIMD Double MulAcc на AArch64 (arch>=8)" #. !/flag:jscvt #: modules/devices/arm/arm_data.c:78 msgctxt "arm-flag" msgid "JacaScript conversion on AArch64 (arch>=8)" msgstr "Преобразование JavaScript в AArch64 (arch>=8)" #. !/flag:fcma #: modules/devices/arm/arm_data.c:79 msgctxt "arm-flag" msgid "Complex number SIMD on AArch64 (arch>=8)" msgstr "Комплексные числа SIMD на AArch64 (arch>=8)" #. !/flag:lrcpc #: modules/devices/arm/arm_data.c:80 msgctxt "arm-flag" msgid "Weak release consistency on AArch64 (arch>=8)" msgstr "Слабая согласованность релизов на AArch64 (arch>=8)" #. !/flag:dcpop #: modules/devices/arm/arm_data.c:81 msgctxt "arm-flag" msgid "Data cache clean to Point of Persistence on AArch64 (arch>=8)" msgstr "Очистка кеша данных до точки сохранения на AArch64 (arch>=8)" #. !/flag:sha3 #: modules/devices/arm/arm_data.c:82 msgctxt "arm-flag" msgid "SHA-3 instructions on AArch64 (arch>=8)" msgstr "Инструкции SHA-3 на AArch64 (arch>=8)" #. !/flag:sm3 #: modules/devices/arm/arm_data.c:83 msgctxt "arm-flag" msgid "SM3 instructions on AArch64 (arch>=8)" msgstr "Инструкции SM3 на AArch64 (arch>=8)" #. !/flag:sm4 #: modules/devices/arm/arm_data.c:84 msgctxt "arm-flag" msgid "SM4 instructions on AArch64 (arch>=8)" msgstr "Инструкции SM4 на AArch64 (arch>=8)" #. !/flag:asimddp #: modules/devices/arm/arm_data.c:85 msgctxt "arm-flag" msgid "SIMD Dot Product on AArch64 (arch>=8)" msgstr "Скалярное произведение SIMD на AArch64 (arch>=8)" #. !/flag:sha512 #: modules/devices/arm/arm_data.c:86 msgctxt "arm-flag" msgid "SHA512 instructions on AArch64 (arch>=8)" msgstr "Инструкции SHA512 на AArch64 (arch>=8)" #. !/flag:sve #: modules/devices/arm/arm_data.c:87 msgctxt "arm-flag" msgid "Scalable Vector Extension on AArch64 (arch>=8)" msgstr "Масштабируемое векторное расширение на AArch64 (arch>=8)" #: modules/devices/arm/processor.c:46 modules/devices/e2k/processor.c:30 #: modules/devices/riscv/processor.c:36 modules/devices/x86/processor.c:149 msgid "Cache information not available=\n" msgstr "Информация о кэше недоступна=\n" #: modules/devices/arm/processor.c:52 modules/devices/e2k/processor.c:36 #: modules/devices/riscv/processor.c:42 modules/devices/x86/processor.c:155 #, c-format msgid "Level %d (%s)=%d-way set-associative, %d sets, %dKB size\n" msgstr "" "Уровень %d (%s)=%d-канальный множественно-ассоциативный, %d множеств, размер " "%d кБ\n" #: modules/devices/arm/processor.c:174 modules/devices/e2k/processor.c:157 #: modules/devices/riscv/processor.c:164 modules/devices/x86/processor.c:366 msgid "Caches" msgstr "Кэши" #: modules/devices/arm/processor.c:225 modules/devices/arm/processor.c:242 #: modules/devices/e2k/processor.c:208 modules/devices/e2k/processor.c:225 #: modules/devices/riscv/processor.c:215 modules/devices/riscv/processor.c:232 #: modules/devices/x86/processor.c:417 modules/devices/x86/processor.c:434 #, c-format msgid "Level %d (%s)#%d=%dx %dKB (%dKB), %d-way set-associative, %d sets\n" msgstr "" "Уровень %d (%s)#%d=%dx %d кБ (%d кБ), %d-канальный множественно-" "ассоциативный, %d множеств\n" #: modules/devices/arm/processor.c:365 msgid "ARM Processor" msgstr "Процессор ARM" #: modules/devices/arm/processor.c:436 modules/devices/riscv/processor.c:522 #: modules/devices/x86/processor.c:609 msgid "Empty List" msgstr "Пустой список" #: modules/devices/arm/processor.c:461 modules/devices/gpu.c:204 #: modules/devices/gpu.c:294 modules/devices/riscv/processor.c:330 #: modules/devices/x86/processor.c:267 msgid "Clocks" msgstr "Частоты" #: modules/devices/arm/processor.c:507 modules/devices/arm/processor.c:520 #: modules/devices/riscv/processor.c:376 modules/devices/riscv/processor.c:389 #: modules/devices/x86/processor.c:313 modules/devices/x86/processor.c:326 #, c-format msgid "%.2f-%.2f %s=%dx\n" msgstr "" #: modules/devices/arm/processor.c:564 msgid "Linux Name" msgstr "Название Linux" #: modules/devices/arm/processor.c:565 msgid "Decoded Name" msgstr "Декодированное имя" #: modules/devices/arm/processor.c:566 modules/network/net.c:476 msgid "Mode" msgstr "Режим" #: modules/devices/arm/processor.c:573 msgid "ARM" msgstr "" #: modules/devices/arm/processor.c:574 msgid "Implementer" msgstr "Исполнитель" #: modules/devices/arm/processor.c:575 modules/devices/dmi_memory.c:874 msgid "Part" msgstr "Часть" #: modules/devices/arm/processor.c:576 modules/devices/ia64/processor.c:162 #: modules/devices/parisc/processor.c:156 modules/devices/riscv/processor.c:585 msgid "Architecture" msgstr "Архитектура" #: modules/devices/arm/processor.c:577 msgid "Variant" msgstr "Вариант" #: modules/devices/arm/processor.c:579 modules/devices/riscv/processor.c:593 #: modules/devices/sparc/processor.c:78 modules/devices/x86/processor.c:666 msgid "Capabilities" msgstr "Возможности" #: modules/devices/arm/processor.c:706 modules/devices/riscv/processor.c:548 msgid "SOC/Package" msgstr "SOC/Пакет" #: modules/devices/arm/processor.c:710 modules/devices/riscv/processor.c:552 #: modules/devices/x86/processor.c:752 msgid "Logical CPU Config" msgstr "Логическая конфигурация процессора" #: modules/devices/arm/processor.c:729 modules/devices/riscv/processor.c:608 msgid "SOC/Package Information" msgstr "Информация о SOC/Package" #: modules/devices/arm/processor.c:759 modules/devices/riscv/processor.c:640 #: modules/devices/x86/processor.c:810 msgid "Socket:Core" msgstr "Сокет:Ядро" #: modules/devices/battery.c:178 #, c-format msgid "" "\n" "[Battery: %s]\n" "State=%s (load: %s)\n" "Capacity=%s / %s (%.2f%%)\n" "Battery Technology=%s (%s)\n" "Manufacturer=%s\n" "Model Number=%s\n" "Serial Number=%s\n" msgstr "" "\n" "[Батарея: %s]\n" "Состояние=%s (нагрузка: %s)\n" "Емкость=%s / %s (%.2f%%)\n" "Технология батареи=%s (%s)\n" "Производитель=%s\n" "Номер модели=%s\n" "Серийный номер=%s\n" #: modules/devices/battery.c:260 #, c-format msgid "" "\n" "[AC Power Supply: %s]\n" "Online=%s\n" "AC Power Type=%s\n" msgstr "" "\n" "[Сеть переменного тока: %s]\n" "Онлайн=%s\n" "Тип сети переменного тока=%s\n" #: modules/devices/battery.c:291 #, c-format msgid "" "\n" "[Battery: %s]\n" "State=%s\n" "Capacity=%s / %s\n" "Battery Health=%.0f %%\n" "Design Full Energy=%.3f Wh\n" "Current Full Energy=%.3f Wh\n" "Design Full Capacity=%.3f Ah\n" "Current Full Capacity=%.3f Ah\n" "Voltage Design=%.3f V\n" "Battery Technology=%s\n" "Manufacturer=%s\n" "Model Number=%s\n" "Serial Number=%s\n" msgstr "" "\n" "[Батарея: %s]\n" "Состояние=%s\n" "Емкость=%s / %s\n" "Состояние батареи=%.0f %%\n" "Проектная полная энергия=%.3f Вт·ч\n" "Текущая полная энергия=%.3f Вт·ч\n" "Проектная полная емкость=%.3f А·ч\n" "Текущая полная емкость=%.3f А·ч\n" "Проектное напряжение=%.3f В\n" "Технология батареи=%s\n" "Производитель=%s\n" "Номер модели=%s\n" "Серийный номер=%s\n" #: modules/devices/battery.c:400 #, c-format msgid "" "\n" "[Battery (APM)]\n" "Charge=%d%%\n" "Remaining Charge=%s of %s\n" "Using=%s\n" "APM driver version=%s\n" "APM BIOS version=%s\n" msgstr "" "\n" "[Батарея (APM)]\n" "Заряд=%d%%\n" "Оставшийся заряд=%s из %s\n" "Используется=%s\n" "APM драйвер версии=%s\n" "APM BIOS версии=%s\n" #: modules/devices/battery.c:412 #, c-format msgid "" "\n" "[Battery (APM)]\n" "Charge=%d%%\n" "Using=%s\n" "APM driver version=%s\n" "APM BIOS version=%s\n" msgstr "" "\n" "[Батарея (APM)]\n" "Заряд=%d%%\n" "Используется=%s\n" "APM драйвер версии=%s\n" "APM BIOS версии=%s\n" #: modules/devices/battery.c:441 msgid "" "[No batteries]\n" "No batteries found on this system=\n" msgstr "" "[Батареи отсутствуют]\n" "Батареи не найдены на этой системе=\n" #: modules/devices.c:100 msgid "Graphics Processors" msgstr "Графические процессоры" #: modules/devices.c:101 modules/devices/monitors.c:449 #: modules/devices/monitors.c:495 msgid "Monitors" msgstr "Мониторы" #: modules/devices.c:102 modules/devices/pci.c:196 msgid "PCI Devices" msgstr "Устройства PCI" #: modules/devices.c:103 modules/devices/usb.c:211 msgid "USB Devices" msgstr "Устройства USB" #: modules/devices.c:104 msgid "Firmware" msgstr "Прошивка" #: modules/devices.c:106 msgid "Battery" msgstr "Батарея" #: modules/devices.c:107 msgid "Sensors" msgstr "Сенсоры" #: modules/devices.c:110 msgid "System DMI" msgstr "DMI системы" #: modules/devices.c:111 msgid "Memory Devices" msgstr "Устройства памяти" #: modules/devices.c:113 modules/devices.c:115 msgid "Device Tree" msgstr "Дерево устройств" #: modules/devices.c:117 msgid "Resources" msgstr "Ресурсы" #: modules/devices.c:594 msgid "WSL2" msgstr "" #: modules/devices.c:841 msgid "Sensor" msgstr "Сенсор" #: modules/devices.c:899 modules/devices/dmi_memory.c:806 msgid "Devices" msgstr "Устройства" #: modules/devices.c:911 msgid "Update PCI ID listing" msgstr "Обновить список PCI ID" #: modules/devices.c:916 msgid "Update USB ID listing" msgstr "Обновить список USB ID" #: modules/devices.c:921 msgid "Update EDID vendor codes" msgstr "Обновить коды поставщиков EDID" #: modules/devices.c:926 msgid "Update IEEE OUI vendor codes" msgstr "Обновить коды поставщиков IEEE OUI" #: modules/devices.c:931 msgid "Update SD card manufacturer information" msgstr "Обновите информацию о производителе SD-карты" #: modules/devices.c:938 msgid "Update CPU flags database" msgstr "Обновление базы данных флагов ЦП" #: modules/devices.c:973 msgid "Gathers information about hardware devices" msgstr "Собирает информацию об устройствах" #: modules/devices.c:994 msgid "A copy of pci.ids is not available on the system." msgstr "Копия pci.ids недоступна в системе." #: modules/devices.c:997 msgid "A full pci.ids is not available on the system." msgstr "Полный pci.ids недоступен в системе." #: modules/devices.c:1002 modules/devices/dmi_memory.c:938 msgid "" "Ensure hardinfo2 service is enabled+started: sudo systemctl enable hardinfo2 " "--now (SystemD distro)\n" "Add yourself to hardinfo2 group: sudo usermod -a -G hardinfo2 YOUR_LOGIN\n" "And Logout/Reboot for groups to be updated..." msgstr "" "Убедитесь, что служба hardinfo2 включена и запущена: sudo systemctl enable " "hardinfo2 --now (SystemD distro)\n" "Добавьте себя в группу hardinfo2: sudo usermod -a -G hardinfo2 YOUR_LOGIN\n" "Затем перезагрузитесь..." #: modules/devices.c:1008 msgid "" "Any NVMe storage devices present are not listed.\n" "udisks2 is required for NVMe devices." msgstr "" "Ни одно устройство хранения данных NVMe не найдено.\n" "Для устройств NVMe требуется udisks2" #: modules/devices/devicetree.c:51 msgid "Properties" msgstr "Свойства" #: modules/devices/devicetree.c:52 msgid "Children" msgstr "Дети" #: modules/devices/devicetree.c:88 msgid "Node" msgstr "Узел" #: modules/devices/devicetree.c:89 msgid "Node Path" msgstr "Путь узла" #: modules/devices/devicetree.c:90 msgid "Alias" msgstr "Псевдоним" #: modules/devices/devicetree.c:91 msgid "Symbol" msgstr "Символ" #: modules/devices/devicetree.c:144 modules/devices/devicetree/pmac_data.c:79 msgid "Platform" msgstr "Платформа" #: modules/devices/devicetree.c:145 modules/devices/devicetree.c:210 #: modules/devices/gpu.c:299 msgid "Compatible" msgstr "Совместимый" #: modules/devices/devicetree.c:146 msgid "GPU-compatible" msgstr "GPU-совместимый" #: modules/devices/devicetree.c:161 msgid "Raspberry Pi or Compatible" msgstr "Raspberry Pi или совместимый" #: modules/devices/devicetree.c:163 modules/devices/devicetree.c:190 #: modules/devices/devicetree.c:209 modules/devices/devicetree/rpi_data.c:169 #: modules/devices/dmi.c:42 modules/devices/dmi.c:52 modules/devices/dmi.c:58 #: modules/devices/spd-decode.c:1383 modules/devices/usb.c:181 msgid "Serial Number" msgstr "Серийный номер" #: modules/devices/devicetree.c:164 modules/devices/devicetree/rpi_data.c:166 msgid "RCode" msgstr "" #: modules/devices/devicetree.c:164 msgid "No revision code available; unable to lookup model details." msgstr "Код ревизии недоступен, невозможно найти сведения о модели." #: modules/devices/devicetree.c:189 msgid "More" msgstr "Больше" #: modules/devices/devicetree.c:270 msgid "Messages" msgstr "Сообщения" #: modules/devices/devicetree/pmac_data.c:78 msgid "Apple Power Macintosh" msgstr "" #: modules/devices/devicetree/pmac_data.c:83 msgid "Detected as" msgstr "Обнаружено как" #: modules/devices/devicetree/pmac_data.c:84 msgid "PMAC Flags" msgstr "" #: modules/devices/devicetree/pmac_data.c:85 msgid "L2 Cache" msgstr "" #: modules/devices/devicetree/pmac_data.c:86 msgid "PMAC Generation" msgstr "" #: modules/devices/devicetree/rpi_data.c:161 #: modules/devices/devicetree/rpi_data.c:162 msgid "Raspberry Pi" msgstr "" #: modules/devices/devicetree/rpi_data.c:162 msgid "Board Name" msgstr "Название платы" #: modules/devices/devicetree/rpi_data.c:163 msgid "PCB Revision" msgstr "Ревизия печатной платы" #: modules/devices/devicetree/rpi_data.c:164 msgid "Introduction" msgstr "Введение" #: modules/devices/devicetree/rpi_data.c:165 modules/devices/usb.c:173 msgid "Manufacturer" msgstr "Производитель" #: modules/devices/devicetree/rpi_data.c:167 msgid "SOC (spec)" msgstr "" #: modules/devices/devicetree/rpi_data.c:168 msgid "Memory (spec)" msgstr "" #: modules/devices/devicetree/rpi_data.c:170 msgid "Permanent overvolt bit" msgstr "Бит перенапряжения" #: modules/devices/devicetree/rpi_data.c:170 msgctxt "rpi-ov-bit" msgid "Set" msgstr "Установлен" #: modules/devices/devicetree/rpi_data.c:170 msgctxt "rpi-ov-bit" msgid "Not set" msgstr "Не установлен" #: modules/devices/dmi.c:37 modules/devices/inputdevices.c:145 #: modules/devices/usb.c:170 msgid "Product" msgstr "Продукт" #: modules/devices/dmi.c:39 modules/devices/e2k/processor.c:360 #: modules/devices/ia64/processor.c:164 #: modules/devices/loongarch64/processor.c:95 modules/devices/sh/processor.c:86 msgid "Family" msgstr "Семейство" #: modules/devices/dmi.c:43 msgid "SKU" msgstr "" #: modules/devices/dmi.c:44 msgid "BIOS" msgstr "" #: modules/devices/dmi.c:53 modules/devices/dmi.c:59 msgid "Asset Tag" msgstr "Метка актива" #: modules/devices/dmi.c:161 msgid "DMI Unavailable" msgstr "DMI недоступен" #: modules/devices/dmi.c:162 msgid "DMI is not available. Perhaps this platform does not provide DMI." msgstr "DMI недоступен. Возможно, эта платформа не предоставляет DMI." #: modules/devices/dmi_memory.c:620 modules/devices/dmi_memory.c:859 msgid "Memory Device List" msgstr "Список устройств памяти" #: modules/devices/dmi_memory.c:668 msgid "Memory Array" msgstr "Массив памяти" #: modules/devices/dmi_memory.c:669 modules/devices/x86/processor.c:714 msgid "DMI Handle" msgstr "" #: modules/devices/dmi_memory.c:670 modules/devices/dmi_memory.c:726 #: modules/devices/dmi_memory.c:764 modules/devices/dmi_memory.c:871 msgid "Locator" msgstr "Локатор" #: modules/devices/dmi_memory.c:671 msgid "Use" msgstr "Использование" #: modules/devices/dmi_memory.c:672 msgid "Error Correction Type" msgstr "Тип коррекции ошибок" #: modules/devices/dmi_memory.c:673 msgid "Size (Present / Max)" msgstr "Размер (Настоящий / Максимальный)" #: modules/devices/dmi_memory.c:674 msgid "Devices (Populated / Sockets)" msgstr "Устройства (Заполнено / Сокетов)" #: modules/devices/dmi_memory.c:675 modules/devices/dmi_memory.c:807 msgid "Types Present" msgstr "Типы в наличии" #: modules/devices/dmi_memory.c:676 msgid "ROM Size" msgstr "Размер ROM" #: modules/devices/dmi_memory.c:724 modules/devices/dmi_memory.c:762 msgid "Memory Socket" msgstr "Сокет памяти" #: modules/devices/dmi_memory.c:725 modules/devices/dmi_memory.c:763 msgid "DMI Handles (Array, Socket)" msgstr "DMI Handles (Массив, Сокет)" #: modules/devices/dmi_memory.c:727 modules/devices/dmi_memory.c:765 msgid "Bank Locator" msgstr "Локатор банка" #: modules/devices/dmi_memory.c:728 modules/devices/spd-decode.c:1376 msgid "Form Factor" msgstr "Форм-фактор" #: modules/devices/dmi_memory.c:732 modules/devices/spd-decode.c:1382 msgid "Part Number" msgstr "Номер детали" #: modules/devices/dmi_memory.c:734 msgid "Rated Speed" msgstr "Оцениваемая скорость" #: modules/devices/dmi_memory.c:735 msgid "Configured Speed" msgstr "Настроенная скорость" #: modules/devices/dmi_memory.c:736 msgid "Data Width/Total Width" msgstr "Ширина данных/Общая ширина" #: modules/devices/dmi_memory.c:737 msgid "Rank" msgstr "Ранг" #: modules/devices/dmi_memory.c:738 msgid "Minimum Voltage" msgstr "Минимальное напряжение" #: modules/devices/dmi_memory.c:739 msgid "Maximum Voltage" msgstr "Максимальное напряжение" #: modules/devices/dmi_memory.c:740 msgid "Configured Voltage" msgstr "Настроенное напряжение" #: modules/devices/dmi_memory.c:766 modules/devices/dmi_memory.c:773 #: modules/devices/monitors.c:495 msgid "(Empty)" msgstr "(Пусто)" #: modules/devices/dmi_memory.c:804 msgid "Serial Presence Detect (SPD) Summary" msgstr "" #: modules/devices/dmi_memory.c:860 msgid "(Not available - See hint box below)" msgstr "(Недоступно — см. подсказку ниже)" #: modules/devices/dmi_memory.c:932 msgid "No DMI available" msgstr "DMI недоступен" #: modules/devices/dmi_memory.c:937 msgid "dmidecode package installed" msgstr "" #: modules/devices/dmi_memory.c:948 msgid "Memory Information requires more Setup:" msgstr "Информация о памяти требует дополнительных настроек:" #: modules/devices/dmi_memory.c:976 msgid "" "\"More often than not, information contained in the DMI tables is " "inaccurate,\n" "incomplete or simply wrong.\" -dmidecode manual page" msgstr "" "\"Чаще всего информация, содержащаяся в таблицах DMI, является неточной.\n" " -dmidecode страница руководства" #: modules/devices/e2k/processor.c:51 msgctxt "cache-type" msgid "Data" msgstr "данные" #: modules/devices/e2k/processor.c:52 msgctxt "cache-type" msgid "Instruction" msgstr "инструкции" #: modules/devices/e2k/processor.c:53 msgctxt "cache-type" msgid "Unified" msgstr "унифицированный" #: modules/devices/firmware.c:36 msgid "Device cannot be removed easily" msgstr "Устройство не может быть легко удалено" #: modules/devices/firmware.c:37 msgid "Device is updatable in this or any other mode" msgstr "Устройство можно обновить в этом или любом другом режиме" #: modules/devices/firmware.c:38 msgid "Update can only be done from offline mode" msgstr "Обновление возможно только в автономном режиме" #: modules/devices/firmware.c:39 msgid "Requires AC power" msgstr "Требуется питание от сети переменного тока" #: modules/devices/firmware.c:40 msgid "Is locked and can be unlocked" msgstr "Заблокирован и может быть разблокирован" #: modules/devices/firmware.c:41 msgid "Is found in current metadata" msgstr "Найден в текущих метаданных" #: modules/devices/firmware.c:42 msgid "Requires a bootloader mode to be manually enabled by the user" msgstr "Требуется ручное включение режима загрузчика" #: modules/devices/firmware.c:43 msgid "Has been registered with other plugins" msgstr "Был зарегистрирован с другими плагинами" #: modules/devices/firmware.c:44 msgid "Requires a reboot to apply firmware or to reload hardware" msgstr "" "Требуется перезагрузка для применения прошивки или инициализации оборудования" #: modules/devices/firmware.c:45 msgid "Requires system shutdown to apply firmware" msgstr "Для применения прошивки требуется выключение системы" #: modules/devices/firmware.c:46 msgid "Has been reported to a metadata server" msgstr "Сообщено на сервер метаданных" #: modules/devices/firmware.c:47 msgid "User has been notified" msgstr "Пользователь был уведомлен" #: modules/devices/firmware.c:48 msgid "Always use the runtime version rather than the bootloader" msgstr "Всегда используйте версию среды выполнения, а не загрузчика" #: modules/devices/firmware.c:49 msgid "Install composite firmware on the parent before the child" msgstr "" "Установите составную прошивку на родительском устройстве перед дочерним" #: modules/devices/firmware.c:50 msgid "Is currently in bootloader mode" msgstr "В настоящее время находится в режиме загрузчика" #: modules/devices/firmware.c:51 msgid "The hardware is waiting to be replugged" msgstr "Аппаратное обеспечение ждет повторного подключения" #: modules/devices/firmware.c:52 msgid "Ignore validation safety checks when flashing this device" msgstr "Игнорировать проверки безопасности при прошивке этого устройства" #: modules/devices/firmware.c:53 msgid "Requires the update to be retried with a new plugin" msgstr "Требуется повторить обновление с новым плагином" #: modules/devices/firmware.c:54 msgid "Do not add instance IDs from the device baseclass" msgstr "Не добавляйте идентификаторы экземпляров из базового класса устройства" #: modules/devices/firmware.c:55 msgid "Device update needs to be separately activated" msgstr "Обновление устройства необходимо активировать отдельно" #: modules/devices/firmware.c:56 msgid "" "Ensure the version is a valid semantic version, e.g. numbers separated with " "dots" msgstr "" "Убедитесь, что версия является допустимой семантической версией, например, " "числа разделены точками" #: modules/devices/firmware.c:57 msgid "Extra metadata can be exposed about this device" msgstr "Об этом устройстве могут быть раскрыты дополнительные метаданные" #: modules/devices/firmware.c:74 msgid "DeviceId" msgstr "Идентификатор устройства" #: modules/devices/firmware.c:74 modules/devices/firmware.c:187 msgid "Guid" msgstr "" #: modules/devices/firmware.c:74 msgid "Plugin" msgstr "Подключение" #: modules/devices/firmware.c:74 modules/devices/firmware.c:205 #: modules/network.c:381 msgid "Flags" msgstr "Флаги" #: modules/devices/firmware.c:75 msgid "VendorId" msgstr "Идентификатор поставщика" #: modules/devices/firmware.c:75 msgid "VersionBootloader" msgstr "Версия загрузчика" #: modules/devices/firmware.c:76 modules/devices/firmware.c:179 msgid "Icon" msgstr "Ярлык" #: modules/devices/firmware.c:76 msgid "InstallDuration" msgstr "Продолжительность установки" #: modules/devices/firmware.c:76 modules/devices/firmware.c:197 msgid "Created" msgstr "Создан" #: modules/devices/firmware.c:244 msgid "Firmware List" msgstr "Список прошивок" #: modules/devices/firmware.c:257 msgid "Requires the fwupd daemon." msgstr "Требуется демон fwupd." #: modules/devices/gpu.c:94 modules/devices/pci.c:132 #: modules/devices/storage.c:58 msgid "SVendor" msgstr "" #: modules/devices/gpu.c:95 modules/devices/pci.c:133 #: modules/devices/storage.c:59 msgid "SDevice" msgstr "" #: modules/devices/gpu.c:103 modules/devices/pci.c:143 #: modules/devices/storage.c:68 msgid "PCI Express" msgstr "" #: modules/devices/gpu.c:104 modules/devices/pci.c:145 #: modules/devices/storage.c:70 msgid "Maximum Link Width" msgstr "Максимальная ширина линии" #: modules/devices/gpu.c:105 modules/devices/pci.c:147 #: modules/devices/storage.c:71 msgid "Maximum Link Speed" msgstr "Максимальная скорость линии" #: modules/devices/gpu.c:105 modules/devices/pci.c:146 #: modules/devices/pci.c:147 modules/devices/storage.c:71 msgid "GT/s" msgstr "ГТ/сек" #: modules/devices/gpu.c:115 msgid "NVIDIA" msgstr "" #: modules/devices/gpu.c:117 msgid "BIOS Version" msgstr "Версия BIOS" #: modules/devices/gpu.c:118 msgid "UUID" msgstr "" #: modules/devices/gpu.c:197 modules/devices/gpu.c:289 #: modules/devices/inputdevices.c:140 modules/devices/pci.c:164 #: modules/devices/usb.c:169 msgid "Device Information" msgstr "Информация об устройстве" #: modules/devices/gpu.c:199 modules/devices/gpu.c:291 #: modules/devices/storage.c:69 msgid "Location" msgstr "Место" #: modules/devices/gpu.c:200 msgid "DRM Device" msgstr "Устройство DRM" #: modules/devices/gpu.c:201 modules/devices/pci.c:165 #: modules/devices/usb.c:136 modules/devices/usb.c:177 msgid "Class" msgstr "Класс" #: modules/devices/gpu.c:210 modules/devices/pci.c:170 msgid "In Use" msgstr "Используется" #: modules/devices/gpu.c:245 msgid "Unknown integrated GPU" msgstr "Неизвестный интегрированный графический процессор" #: modules/devices/gpu.c:253 msgid "clock-frequency property" msgstr "свойство тактовой частоты" #: modules/devices/gpu.c:254 msgid "Operating Points (OPPv1)" msgstr "Рабочие точки (OPPv1)" #: modules/devices/gpu.c:255 msgid "Operating Points (OPPv2)" msgstr "Рабочие точки (OPPv2)" #: modules/devices/gpu.c:297 msgid "Device Tree Node" msgstr "Узел дерева устройств" #: modules/devices/gpu.c:300 modules/devices/monitors.c:475 #: modules/network/net.c:477 msgid "Status" msgstr "Состояние" #: modules/devices/gpu.c:317 msgid "GPUs" msgstr "Графические процессоры" #: modules/devices/gpu.c:341 msgid "No GPU devices found" msgstr "Графические устройства не найдены" #: modules/devices/ia64/processor.c:108 msgid "IA64 Processor" msgstr "Процессор IA64" #: modules/devices/ia64/processor.c:163 msgid "Architecture Revision" msgstr "Ревизия архитектуры" #: modules/devices/ia64/processor.c:170 msgid "CPU regs" msgstr "Регистры" #: modules/devices/ia64/processor.c:171 #: modules/devices/loongarch64/processor.c:100 msgid "Features" msgstr "Возможности" #: modules/devices/inputdevices.c:143 modules/devices/pci.c:174 #: modules/devices/usb.c:183 msgid "Bus" msgstr "Шина" #: modules/devices/inputdevices.c:149 msgid "Connected to" msgstr "Подключен к" #: modules/devices/inputdevices.c:153 msgid "InfraRed port" msgstr "Инфракрасный порт" #: modules/devices/loongarch64/processor.c:94 #: modules/devices/mips/processor.c:76 msgid "System Type" msgstr "Тип системы" #: modules/devices/loongarch64/processor.c:99 msgid "BogoMIPS" msgstr "" #: modules/devices/m68k/processor.c:85 modules/devices/riscv/processor.c:587 msgid "MMU" msgstr "" #: modules/devices/m68k/processor.c:86 modules/devices/sparc/processor.c:76 msgid "FPU" msgstr "" #: modules/devices/m68k/processor.c:90 msgid "Calibration" msgstr "Калибровка" #: modules/devices/monitors.c:30 modules/devices/monitors.c:257 #: modules/devices/monitors.c:350 modules/devices/spd-decode.c:699 msgid "(Unspecified)" msgstr "(Не определено)" #: modules/devices/monitors.c:232 #, c-format msgid "Week %d of %d" msgstr "%d неделя %d г." #: modules/devices/monitors.c:242 msgid "Ok" msgstr "OK" #: modules/devices/monitors.c:242 msgid "Fail" msgstr "Ошибка" #: modules/devices/monitors.c:270 modules/devices/monitors.c:278 #: modules/devices/monitors.c:286 modules/devices/monitors.c:297 #: modules/devices/monitors.c:305 modules/devices/monitors.c:312 #: modules/devices/monitors.c:320 modules/devices/monitors.c:328 #: modules/devices/monitors.c:336 modules/devices/monitors.c:342 msgid "(Empty List)" msgstr "(Пустой список)" #: modules/devices/monitors.c:394 msgid "Signal Type" msgstr "Тип сигнала" #: modules/devices/monitors.c:394 msgid "Digital" msgstr "Цифровой" #: modules/devices/monitors.c:394 msgid "Analog" msgstr "Аналоговый" #: modules/devices/monitors.c:395 modules/devices/usb.c:135 #: modules/network.c:311 modules/network.c:364 modules/network.c:381 msgid "Interface" msgstr "Интерфейс" #: modules/devices/monitors.c:396 msgid "Bits per Color Channel" msgstr "Бит на цветовой канал" #: modules/devices/monitors.c:397 msgid "Speaker Allocation" msgstr "Расположение динамиков" #: modules/devices/monitors.c:398 msgid "Output (Max)" msgstr "Вывод (максимально)" #: modules/devices/monitors.c:401 msgid "EDID Device" msgstr "Устройство EDID" #: modules/devices/monitors.c:405 msgid "Serial" msgstr "Серия" #: modules/devices/monitors.c:406 msgid "Manufacture Date" msgstr "Дата производства" #: modules/devices/monitors.c:407 msgid "EDID Meta" msgstr "Метаданные EDID" #: modules/devices/monitors.c:408 msgid "Data Size" msgstr "Размер данных" #: modules/devices/monitors.c:408 msgid "bytes" msgstr "байт" #: modules/devices/monitors.c:410 msgid "Extension Blocks" msgstr "Блоки расширений" #: modules/devices/monitors.c:411 msgid "Extended to" msgstr "Расширено до" #: modules/devices/monitors.c:412 msgid "Checksum" msgstr "Контрольная сумма" #: modules/devices/monitors.c:413 msgid "EDID Descriptors" msgstr "Дескрипторы EDID" #: modules/devices/monitors.c:414 msgid "Detailed Timing Descriptors (DTD)" msgstr "Подробные дескрипторы тайминга (DTD)" #: modules/devices/monitors.c:415 msgid "Established Timings Bitmap (ETB)" msgstr "Битовый массив установленных таймингов (ETB)" #: modules/devices/monitors.c:416 msgid "Standard Timings (STD)" msgstr "Стнадартные тайминги (STD)" #: modules/devices/monitors.c:417 msgid "E-EDID Extension Blocks" msgstr "Блоки расширений E-EDID" #: modules/devices/monitors.c:418 msgid "EIA/CEA-861 Data Blocks" msgstr "Блоки данных EIA/CEA-861" #: modules/devices/monitors.c:419 msgid "EIA/CEA-861 Short Audio Descriptors" msgstr "Короткие дескрипторы видео EIA/CEA-861" #: modules/devices/monitors.c:420 msgid "EIA/CEA-861 Short Video Descriptors" msgstr "Короткие дескрипторы аудио EIA/CEA-861" #: modules/devices/monitors.c:421 msgid "DisplayID Timings" msgstr "Тайминги DisplayID" #: modules/devices/monitors.c:422 msgid "DisplayID Strings" msgstr "Строки DisplayID" #: modules/devices/monitors.c:423 msgid "Hex Dump" msgstr "Дамп данных в шестнадцатеричном формате" #: modules/devices/monitors.c:423 msgid "Data" msgstr "Данные" #: modules/devices/monitors.c:473 modules/devices/monitors.c:504 #: modules/devices/pci.c:172 modules/devices/usb.c:182 msgid "Connection" msgstr "Подключение" #: modules/devices/monitors.c:474 msgid "DRM" msgstr "" #: modules/devices/parisc/processor.c:107 msgid "PA-RISC Processor" msgstr "Процессор PA-RISC" #: modules/devices/parisc/processor.c:161 msgid "HVersion" msgstr "" #: modules/devices/parisc/processor.c:162 msgid "SVersion" msgstr "" #: modules/devices/pci.c:144 msgid "Link Width" msgstr "Ширина линии" #: modules/devices/pci.c:146 msgid "Link Speed" msgstr "Скорость линии" #: modules/devices/pci.c:173 msgid "Domain" msgstr "Домен" #: modules/devices/pci.c:176 msgid "Function" msgstr "Функция" #: modules/devices/pci.c:217 msgid "No PCI devices found" msgstr "Устройства PCI не найдены" #: modules/devices/ppc/processor.c:117 msgid "POWER Processor" msgstr "Процессор POWER" #: modules/devices/printers.c:88 msgid "⚬ Can do black and white printing=\n" msgstr "⚬ Может печатать черно-белым=\n" #: modules/devices/printers.c:90 msgid "⚬ Can do color printing=\n" msgstr "⚬ Может печатать цветным=\n" #: modules/devices/printers.c:92 msgid "⚬ Can do duplexing=\n" msgstr "⚬ Может печатать на обеих сторонах=\n" #: modules/devices/printers.c:94 msgid "⚬ Can do staple output=\n" msgstr "⚬ Может скреплять на выходе=\n" #: modules/devices/printers.c:96 msgid "⚬ Can do copies=\n" msgstr "⚬ Можно делать копии=\n" #: modules/devices/printers.c:98 msgid "⚬ Can collate copies=\n" msgstr "⚬ Можно сравнивать копии=\n" #: modules/devices/printers.c:100 msgid "⚬ Printer is rejecting jobs=\n" msgstr "⚬ Принтер отклоняет задачи=\n" #: modules/devices/printers.c:102 msgid "⚬ Printer was automatically discovered and added=\n" msgstr "⚬ Принтер был автоматически найден и добавлен=\n" #: modules/devices/printers.c:117 msgid "Idle" msgstr "Неактивен" #: modules/devices/printers.c:119 msgid "Printing a Job" msgstr "Печатается задача" #: modules/devices/printers.c:121 msgid "Stopped" msgstr "Остановлен" #: modules/devices/printers.c:200 msgid "" "[Printers]\n" "No suitable CUPS library found=" msgstr "" "[Принтеры]\n" "Подходящей библиотеки CUPS не найдено=" #: modules/devices/printers.c:213 msgid "[Printers (CUPS)]\n" msgstr "[Принтеры (CUPS)]\n" #: modules/devices/printers.c:277 msgid "" "[Printers]\n" "No printers found=\n" msgstr "" "[Принтеры]\n" "Принтеры не найдены=\n" #: modules/devices/riscv/processor.c:586 msgid "uarch" msgstr "" #: modules/devices/riscv/riscv_data.c:37 msgctxt "rv-ext" msgid "RISC-V 32-bit" msgstr "32-битная RISC-V" #: modules/devices/riscv/riscv_data.c:38 msgctxt "rv-ext" msgid "RISC-V 64-bit" msgstr "64-битная RISC-V" #: modules/devices/riscv/riscv_data.c:39 msgctxt "rv-ext" msgid "RISC-V 128-bit" msgstr "128-битная RISC-V" #: modules/devices/riscv/riscv_data.c:40 msgctxt "rv-ext" msgid "Base embedded integer instructions (15 registers)" msgstr "Базовые встроенные целочисленные инструкции (15 регистров)" #: modules/devices/riscv/riscv_data.c:41 msgctxt "rv-ext" msgid "Base integer instructions (31 registers)" msgstr "Базовые целочисленные инструкции (31 регистр)" #: modules/devices/riscv/riscv_data.c:42 msgctxt "rv-ext" msgid "Hardware integer multiply and divide" msgstr "Аппаратное умножение и деление целых чисел" #: modules/devices/riscv/riscv_data.c:43 msgctxt "rv-ext" msgid "Atomic memory operations" msgstr "Атомные операции с памятью" #: modules/devices/riscv/riscv_data.c:44 msgctxt "rv-ext" msgid "Compressed 16-bit instructions" msgstr "Сжатые 16-битные инструкции" #: modules/devices/riscv/riscv_data.c:45 msgctxt "rv-ext" msgid "Floating-point instructions, single-precision" msgstr "Инструкции с плавающей запятой, одинарной точности" #: modules/devices/riscv/riscv_data.c:46 msgctxt "rv-ext" msgid "Floating-point instructions, double-precision" msgstr "Инструкции с плавающей запятой, двойной точности" #: modules/devices/riscv/riscv_data.c:47 msgctxt "rv-ext" msgid "Floating-point instructions, quad-precision" msgstr "Инструкции с плавающей запятой, четверной точности" #: modules/devices/riscv/riscv_data.c:48 msgctxt "rv-ext" msgid "Bit manipulation instructions" msgstr "Инструкции манипуляции битами" #: modules/devices/riscv/riscv_data.c:49 msgctxt "rv-ext" msgid "Vector operations" msgstr "Векторные операции" #: modules/devices/riscv/riscv_data.c:50 msgctxt "rv-ext" msgid "Scalar Cryptography" msgstr "Скалярная криптография" #: modules/devices/riscv/riscv_data.c:51 msgctxt "rv-ext" msgid "Base Counters and Timers" msgstr "Базовые счетчики и таймеры" #: modules/devices/riscv/riscv_data.c:52 msgctxt "rv-ext" msgid "Control and Status Register" msgstr "Регистр контроля и статуса" #: modules/devices/riscv/riscv_data.c:53 msgctxt "rv-ext" msgid "Instruction-Fetch Fence" msgstr "Инструкция-Fetch Fence" #: modules/devices/riscv/riscv_data.c:54 msgctxt "rv-ext" msgid "Hardware performance counters" msgstr "Счетчики производительности оборудования" #: modules/devices/riscv/riscv_data.c:55 msgctxt "rv-ext" msgid "Accell Index addresses" msgstr "Адреса индекса Accell" #: modules/devices/riscv/riscv_data.c:56 msgctxt "rv-ext" msgid "Basic bit-manipulation" msgstr "Базовая битовая манипуляция" #: modules/devices/riscv/riscv_data.c:57 msgctxt "rv-ext" msgid "Supervisor-level Instructions" msgstr "Инструкции уровня супервизора" #: modules/devices/riscv/riscv_data.c:58 msgctxt "rv-ext" msgid "User Mode" msgstr "Пользовательский режим" #: modules/devices/riscv/riscv_data.c:59 msgctxt "rv-ext" msgid "Transactional memory" msgstr "Транзакционная память" #: modules/devices/riscv/riscv_data.c:60 msgctxt "rv-ext" msgid "Packed SIMD instructions" msgstr "Сжатые инструкции SIMD" #: modules/devices/riscv/riscv_data.c:61 msgctxt "rv-ext" msgid "Decimal floating-point instructions" msgstr "Десятичные инструкции с плавающей запятой" #: modules/devices/riscv/riscv_data.c:62 msgctxt "rv-ext" msgid "Dynamically translated languages" msgstr "Языки с динамической трансляцией" #: modules/devices/riscv/riscv_data.c:63 msgctxt "rv-ext" msgid "User-level interrupts" msgstr "Прерывания пользовательского уровня" #: modules/devices/s390/processor.c:92 msgid "S390 Processor" msgstr "Процессор S390" #: modules/devices/s390/processor.c:133 msgid "ID String" msgstr "Строка ID" #: modules/devices/sh/processor.c:55 msgid "SuperH Processor" msgstr "Процессор SuperH" #: modules/devices/sh/processor.c:88 msgid "Bus Frequency" msgstr "Частота шины" #: modules/devices/sh/processor.c:89 msgid "Module Frequency" msgstr "Частота модуля" #: modules/devices/spd-decode.c:128 modules/devices/spd-decode.c:144 msgid "Unspecified" msgstr "Не указано" #: modules/devices/spd-decode.c:130 modules/devices/spd-decode.c:146 msgid "Invalid" msgstr "Недействительный" #: modules/devices/spd-decode.c:358 msgid "Row address bits" msgstr "Биты адреса строки" #: modules/devices/spd-decode.c:359 msgid "Column address bits" msgstr "Биты адреса столбца" #: modules/devices/spd-decode.c:360 msgid "Number of rows" msgstr "Количество столбцов" #: modules/devices/spd-decode.c:361 msgid "Data width" msgstr "Ширина данных" #: modules/devices/spd-decode.c:362 msgid "Interface signal levels" msgstr "Уровни сигналов интерфейса" #: modules/devices/spd-decode.c:363 msgid "Configuration type" msgstr "Тип конфигурации" #: modules/devices/spd-decode.c:364 msgid "Refresh" msgstr "Обновление" #: modules/devices/spd-decode.c:365 modules/devices/spd-decode.c:442 #: modules/devices/spd-decode.c:721 msgid "Timings" msgstr "Тайминги" #: modules/devices/spd-decode.c:589 modules/devices/spd-decode.c:858 #: modules/devices/spd-decode.c:899 modules/devices/spd-decode.c:1111 #: modules/devices/x86/processor.c:716 msgid "Voltage" msgstr "Напряжение" #: modules/devices/spd-decode.c:590 modules/devices/spd-decode.c:901 #: modules/devices/spd-decode.c:1113 msgid "JEDEC Timings" msgstr "JEDEC-тайминги" #: modules/devices/spd-decode.c:697 msgid "Ranks" msgstr "Ранги" #: modules/devices/spd-decode.c:698 msgid "IO Pins per Chip" msgstr "IO-контактов на чип" #: modules/devices/spd-decode.c:699 msgid "Die count" msgstr "" #: modules/devices/spd-decode.c:700 msgid "Thermal Sensor" msgstr "Термодатчик" #: modules/devices/spd-decode.c:700 msgid "Present" msgstr "Есть" #: modules/devices/spd-decode.c:700 msgid "Not present" msgstr "Нет" #: modules/devices/spd-decode.c:701 msgid "Supported Voltages" msgstr "Поддерживаемые напряжения" #: modules/devices/spd-decode.c:705 msgid "Supported CAS Latencies" msgstr "Поддерживаемые задержки CAS" #: modules/devices/spd-decode.c:856 msgid "XMP Profile" msgstr "XMP-профиль" #: modules/devices/spd-decode.c:857 modules/devices/usb.c:176 #: modules/network/net.c:438 msgid "Speed" msgstr "Скорость" #: modules/devices/spd-decode.c:859 msgid "XMP Timings" msgstr "XMP-тайминги" #: modules/devices/spd-decode.c:900 msgid "XMP" msgstr "" #: modules/devices/spd-decode.c:1372 msgid "Serial Presence Detect (SPD)" msgstr "" #: modules/devices/spd-decode.c:1375 msgid "SPD Revision" msgstr "Редакция SPD" #: modules/devices/spd-decode.c:1378 msgid "Module Vendor" msgstr "Поставщик модуля" #: modules/devices/spd-decode.c:1380 msgid "DRAM Vendor" msgstr "Поставщик DRAM" #: modules/devices/spd-decode.c:1385 msgid "Manufacturing Date (Year / Week)" msgstr "Дата изготовления (год / неделя)" #: modules/devices/storage.c:46 modules/devices/storage.c:55 msgid "NVMe Controller" msgstr "NVMe-контроллер" #: modules/devices/storage.c:138 msgid "Read Error Rate" msgstr "Частота ошибок чтения" #: modules/devices/storage.c:139 msgid "Throughput Performance" msgstr "Общая производительность диска" #: modules/devices/storage.c:140 msgid "Spin-Up Time" msgstr "Время раскрутки шпинделя" #: modules/devices/storage.c:141 msgid "Start/Stop Count" msgstr "Количество циклов старт/стоп" #: modules/devices/storage.c:142 msgid "Reallocated Sector Count" msgstr "Количество переназначенных секторов" #: modules/devices/storage.c:143 msgid "Read Channel Margin" msgstr "Запас канала чтения" #: modules/devices/storage.c:144 msgid "Seek Error Rate" msgstr "Частота возникновения ошибок позиционирования головок" #: modules/devices/storage.c:145 msgid "Seek Timer Performance" msgstr "Средняя производительность операции позиционирования головок" #: modules/devices/storage.c:146 modules/devices/storage.c:185 msgid "Power-On Hours" msgstr "Время во включенном состоянии (в часах)" #: modules/devices/storage.c:147 msgid "Spin Retry Count" msgstr "Количество повторных попыток раскрутки шпинделя" #: modules/devices/storage.c:148 msgid "Calibration Retry Count" msgstr "Количество повторных попыток калибровки" #: modules/devices/storage.c:149 msgid "Power Cycle Count" msgstr "Количество циклов включения-выключения" #: modules/devices/storage.c:150 modules/devices/storage.c:167 msgid "Soft Read Error Rate" msgstr "Количество некорректируемых ошибок чтения" #: modules/devices/storage.c:151 msgid "Runtime Bad Block" msgstr "Время запуска плохого блока" #: modules/devices/storage.c:152 msgid "End-to-End error" msgstr "Количество ошибок передачи данных через кэш памяти буфера" #: modules/devices/storage.c:153 msgid "Reported Uncorrectable Errors" msgstr "Количество некорректируемых ошибок" #: modules/devices/storage.c:154 msgid "Command Timeout" msgstr "Количество операций, отмененных из-за превышения времени отклика" #: modules/devices/storage.c:155 msgid "High Fly Writes" msgstr "Количество случаев записи при полете головки выше расчетного уровня" #: modules/devices/storage.c:156 msgid "Airflow Temperature" msgstr "Температура воздуха в корпусе" #: modules/devices/storage.c:157 msgid "G-sense Error Rate" msgstr "Количество ошибок в результате ударных нагрузок" #: modules/devices/storage.c:158 msgid "Power-off Retract Count" msgstr "Количество повторов парковок головок при выключении питания" #: modules/devices/storage.c:159 msgid "Load Cycle Count" msgstr "Количество циклов перемещения головок в зону данных" #: modules/devices/storage.c:160 modules/devices/storage.c:183 msgid "Temperature" msgstr "Температура" #: modules/devices/storage.c:161 msgid "Hardware ECC Recovered" msgstr "Количество случаев коррекции ошибок аппаратной частью диска" #: modules/devices/storage.c:162 msgid "Reallocation Event Count" msgstr "Количество операций переназначения секторов" #: modules/devices/storage.c:163 msgid "Current Pending Sector Count" msgstr "Текущее количество нестабильных секторов" #: modules/devices/storage.c:164 msgid "Uncorrectable Sector Count" msgstr "Количество секторов, не корректируемых аппаратной частью диска" #: modules/devices/storage.c:165 msgid "UltraDMA CRC Error Count" msgstr "Количество ошибок CRC в режиме UltraDMA" #: modules/devices/storage.c:166 msgid "Multi-Zone Error Rate" msgstr "Общее количество ошибок записи" #: modules/devices/storage.c:168 msgid "Run Out Cancel" msgstr "Количество ошибок Error Correcting (ECC)" #: modules/devices/storage.c:169 msgid "Flying Height" msgstr "Высота между головкой и поверхностью диска" #: modules/devices/storage.c:170 msgid "Spin High Current" msgstr "Величина силы тока при раскрутке диска" #: modules/devices/storage.c:171 msgid "Spin Buzz" msgstr "Количество попыток раскрутки шпинделя из-за пониженного тока" #: modules/devices/storage.c:172 msgid "Offline Seek Performance" msgstr "Производительность выполнения внутренних тестов накопителя" #: modules/devices/storage.c:173 msgid "Disk Shift" msgstr "Смещение блока дисков относительно вертикальной оси шпинделя" #: modules/devices/storage.c:174 msgid "G-Sense Error Rate" msgstr "Количество ошибок в результате ударных нагрузок" #: modules/devices/storage.c:175 msgid "Loaded Hours" msgstr "Количество часов, отработанных диском" #: modules/devices/storage.c:176 msgid "Load/Unload Retry Count" msgstr "Количество повторных попыток ввода/вывода головок в зону данных" #: modules/devices/storage.c:177 msgid "Load Friction" msgstr "Величина силы трения головок при их вводе в зону данных" #: modules/devices/storage.c:178 msgid "Load/Unload Cycle Count" msgstr "Количество циклов ввода/вывода головок в зону данных" #: modules/devices/storage.c:179 msgid "Load-in time" msgstr "Время ввода головок в зону данных" #: modules/devices/storage.c:180 msgid "Torque Amplification Count" msgstr "Количество попыток скомпенсировать крутящий момент" #: modules/devices/storage.c:181 msgid "Power-Off Retract Count" msgstr "Количество повторов парковки головок при выключении питания" #: modules/devices/storage.c:182 msgid "GMR Head Amplitude" msgstr "Амплитуда «дрожания» головок" #: modules/devices/storage.c:184 msgid "Endurance Remaining" msgstr "Процент завершенных физических циклов записи на диск" #: modules/devices/storage.c:186 msgid "Good Block Rate" msgstr "Частота хороших блоков" #: modules/devices/storage.c:187 msgid "Head Flying Hours" msgstr "Время позиционирования головок" #: modules/devices/storage.c:188 msgid "Read Error Retry Rate" msgstr "Частота ошибок во время чтения диска" #: modules/devices/storage.c:189 msgid "Total LBAs Written" msgstr "Количество записанных LBA" #: modules/devices/storage.c:190 msgid "Total LBAs Read" msgstr "Количество считанных LBA" #: modules/devices/storage.c:191 msgid "Wear leveling Count" msgstr "Оставшийся срок службы диска" #: modules/devices/storage.c:192 msgid "Total Used Reserved Block Count" msgstr "Общее количество используемых резервных блоков" #: modules/devices/storage.c:193 msgid "Total Program Fail Count" msgstr "Общее количество неудачных операций записи" #: modules/devices/storage.c:194 msgid "Total Erase Fail Count" msgstr "Общее количество неудачных операций стирания" #: modules/devices/storage.c:195 msgid "Available Reserved Space" msgstr "Общее количество резервных блоков" #: modules/devices/storage.c:196 msgid "Program Fail Count" msgstr "Количество неудачных операций записи" #: modules/devices/storage.c:197 msgid "Erase Fail Count" msgstr "Количество неудачных операций стирания" #: modules/devices/storage.c:198 msgid "TA Counter Increased" msgstr "Количество неисправимых ошибок при чтении адреса сектора" #: modules/devices/storage.c:199 msgid "Total Unused Reserved Block Count" msgstr "Общее количество неиспользуемых резервных блоков" #: modules/devices/storage.c:204 msgid "" "\n" "[UDisks2]\n" msgstr "" #: modules/devices/storage.c:257 msgid "Removable" msgstr "Съемное" #: modules/devices/storage.c:257 msgid "Fixed" msgstr "Фиксированное" #: modules/devices/storage.c:260 msgid "Ejectable" msgstr "Сменное" #: modules/devices/storage.c:263 msgid "Self-monitoring (S.M.A.R.T.)" msgstr "Мониторинг (S.M.A.R.T.)" #: modules/devices/storage.c:266 modules/devices/x86/processor.c:664 msgid "Power Management" msgstr "Управление питанием" #: modules/devices/storage.c:269 msgid "Advanced Power Management" msgstr "Расширенное управление питанием" #: modules/devices/storage.c:272 msgid "Automatic Acoustic Management" msgstr "Автоматическое управление шумом" #: modules/devices/storage.c:275 #, c-format msgid "" "[Drive Information]\n" "Model=%s\n" msgstr "" "[Информация о диске]\n" "Модель=%s\n" #: modules/devices/storage.c:285 #, c-format msgid "" "Revision=%s\n" "Block Device=%s\n" "Serial=%s\n" "Size=%s\n" "Features=%s\n" msgstr "" "Ревизия=%s\n" "Блочное устройство=%s\n" "Серия=%s\n" "Размер=%s\n" "Возможности=%s\n" #: modules/devices/storage.c:300 #, c-format msgid "Rotation Rate=%d RPM\n" msgstr "Скорость вращения=%d об/мин\n" #: modules/devices/storage.c:303 #, c-format msgid "" "Media=%s\n" "Media compatibility=%s\n" msgstr "" "Медиа=%s\n" "Совместимость с медиа=%s\n" #: modules/devices/storage.c:310 #, c-format msgid "Connection bus=%s\n" msgstr "Шина подключения=%s\n" #: modules/devices/storage.c:322 msgid "WWN" msgstr "" #: modules/devices/storage.c:323 msgid "EUI " msgstr "" #: modules/devices/storage.c:328 msgid "WWN / EUI" msgstr "" #: modules/devices/storage.c:332 #, c-format msgid "$^$%s=[%s] %s\n" msgstr "" #: modules/devices/storage.c:334 msgid "IEEE OUI" msgstr "" #: modules/devices/storage.c:346 msgid "" "[Self-monitoring (S.M.A.R.T.)]\n" "Status=%s\n" "Bad Sectors=%" msgstr "" "[Самоконтроль (S.M.A.R.T.)]\n" "Статус=%s\n" "Плохие сектора=%" #: modules/devices/storage.c:352 msgid "Failing" msgstr "Неудачно" #: modules/devices/storage.c:352 msgid "OK" msgstr "ОК" #: modules/devices/storage.c:358 msgid "" "[S.M.A.R.T. Attributes]\n" "Attribute=Value / Normalized / Worst / Threshold\n" msgstr "" "[Атрибуты S.M.A.R.T.]\n" "Атрибут=Значение / Нормализованное / Худшее / Пороговое\n" #: modules/devices/storage.c:381 msgid "%" msgid_plural "%" msgstr[0] "%" msgstr[1] "%" msgstr[2] "%" #: modules/devices/storage.c:419 #, c-format msgid "(%d) %s=%s\n" msgstr "(%d) %s=%s\n" #: modules/devices/storage.c:428 #, c-format msgid "" "[Partition table]\n" "Type=%s\n" msgstr "" "[Таблица разделов]\n" "Тип=%s\n" #: modules/devices/storage.c:447 #, c-format msgid "Partition %s=%s\n" msgstr "Раздел %s=%s\n" #: modules/devices/storage.c:496 msgid "" "\n" "[SCSI Disks]\n" msgstr "" "\n" "[SCSI диски]\n" #: modules/devices/storage.c:567 modules/devices/storage.c:773 #, c-format msgid "" "[Device Information]\n" "Model=%s\n" msgstr "" "[Информация об устройстве]\n" "Модель=%s\n" #: modules/devices/storage.c:574 #, c-format msgid "" "Type=%s\n" "Revision=%s\n" "[SCSI Controller]\n" "Controller=scsi%d\n" "Channel=%d\n" "ID=%d\n" "LUN=%d\n" msgstr "" "Тип=%s\n" "Ревизия=%s\n" "[Контроллер SCSI]\n" "Контроллер=scsi%d\n" "Канал=%d\n" "ID=%d\n" "LUN=%d\n" #: modules/devices/storage.c:621 msgid "" "\n" "[IDE Disks]\n" msgstr "" "\n" "[IDE диски]\n" #: modules/devices/storage.c:707 #, c-format msgid "Driver=%s\n" msgstr "Драйвер=%s\n" #: modules/devices/storage.c:779 #, c-format msgid "" "Device Name=hd%c\n" "Media=%s\n" "Cache=%dkb\n" msgstr "" "Имя устройства=hd%c\n" "Медиа=%s\n" "Кэш=%d кБ\n" #: modules/devices/storage.c:789 #, c-format msgid "" "[Geometry]\n" "Physical=%s\n" "Logical=%s\n" msgstr "" "[Геометрия]\n" "Физическая=%s\n" "Логическая=%s\n" #: modules/devices/storage.c:799 #, c-format msgid "" "[Capabilities]\n" "%s" msgstr "" "[Возможности]\n" "%s" #: modules/devices/storage.c:806 #, c-format msgid "" "[Speeds]\n" "%s" msgstr "" "[Скорости]\n" "%s" #: modules/devices/usb.c:137 modules/devices/usb.c:178 msgid "Sub-class" msgstr "Подкласс" #: modules/devices/usb.c:138 modules/devices/usb.c:179 modules/network.c:348 msgid "Protocol" msgstr "Протокол" #: modules/devices/usb.c:146 modules/network/net.c:474 msgid "Mb/s" msgstr "Мб/с" #: modules/devices/usb.c:174 msgid "Max Current" msgstr "Максимальная сила тока" #: modules/devices/usb.c:174 msgid "mA" msgstr "мА" #: modules/devices/usb.c:175 msgid "USB Version" msgstr "Версия USB" #: modules/devices/usb.c:180 msgid "Device Version" msgstr "Версия устройства" #: modules/devices/usb.c:222 msgid "No USB devices found." msgstr "Устройства USB не найдены." #: modules/devices/x86/processor.c:648 msgid "Model Name" msgstr "Название" #: modules/devices/x86/processor.c:649 msgid "Family, model, stepping" msgstr "Семейство, модель, степпинг" #: modules/devices/x86/processor.c:655 msgid "Microcode Version" msgstr "Версия микрокода" #: modules/devices/x86/processor.c:656 msgid "Configuration" msgstr "Конфигурация" #: modules/devices/x86/processor.c:657 msgid "Cache Size" msgstr "Размер кэша" #: modules/devices/x86/processor.c:657 msgid "kb" msgstr "кБ" #: modules/devices/x86/processor.c:665 msgid "Bug Workarounds" msgstr "Обход багов" #: modules/devices/x86/processor.c:692 msgid "Socket Information" msgstr "Информация о сокете" #: modules/devices/x86/processor.c:695 msgid "(Not available; Perhaps try running hardinfo2 as root.)" msgstr "" "(Недоступно, попробуйте запустить hardinfo2 от имени суперпользователя.)" #: modules/devices/x86/processor.c:713 msgid "CPU Socket" msgstr "Сокет процессора" #: modules/devices/x86/processor.c:717 msgid "External Clock" msgstr "Частота системной шины" #: modules/devices/x86/processor.c:718 msgid "Max Frequency" msgstr "Максимальная частота" #: modules/devices/x86/processor.c:749 msgid "Package Information" msgstr "Информация о комплекте" #. !/flag:fpu #: modules/devices/x86/x86_data.c:48 msgctxt "x86-flag" msgid "Onboard FPU (floating point support)" msgstr "Встроенный FPU (поддержка плавающей запятой)" #. !/flag:vme #: modules/devices/x86/x86_data.c:49 msgctxt "x86-flag" msgid "Virtual 8086 mode enhancements" msgstr "Улучшения виртуального режима 8086" #. !/flag:de #: modules/devices/x86/x86_data.c:50 msgctxt "x86-flag" msgid "Debugging Extensions (CR4.DE)" msgstr "Расширения отладки (CR4.DE)" #. !/flag:pse #: modules/devices/x86/x86_data.c:51 msgctxt "x86-flag" msgid "Page Size Extensions (4MB memory pages)" msgstr "Расширения размера страницы (страницы памяти 4 Мб)" #. !/flag:tsc #: modules/devices/x86/x86_data.c:52 msgctxt "x86-flag" msgid "Time Stamp Counter (RDTSC)" msgstr "Счетчик временной метки (RDTSC)" #. !/flag:msr #: modules/devices/x86/x86_data.c:53 msgctxt "x86-flag" msgid "Model-Specific Registers (RDMSR, WRMSR)" msgstr "Регистры конкретной модели (RDMSR, WRMSR)" #. !/flag:pae #: modules/devices/x86/x86_data.c:54 msgctxt "x86-flag" msgid "Physical Address Extensions (support for more than 4GB of RAM)" msgstr "Расширения физического адреса (поддержка более 4 Гб ОЗУ)" #. !/flag:mce #: modules/devices/x86/x86_data.c:55 msgctxt "x86-flag" msgid "Machine Check Exception" msgstr "Исключение машинного контроля" #. !/flag:cx8 #: modules/devices/x86/x86_data.c:56 msgctxt "x86-flag" msgid "CMPXCHG8 instruction (64-bit compare-and-swap)" msgstr "Инструкция CMPXCHG8 (64-битное сравнение-и-подкачка)" #. !/flag:apic #: modules/devices/x86/x86_data.c:57 msgctxt "x86-flag" msgid "Onboard APIC" msgstr "Встроенный APIC" #. !/flag:sep #: modules/devices/x86/x86_data.c:58 msgctxt "x86-flag" msgid "SYSENTER/SYSEXIT" msgstr "" #. !/flag:mtrr #: modules/devices/x86/x86_data.c:59 msgctxt "x86-flag" msgid "Memory Type Range Registers" msgstr "Регистры диапазона типа памяти" #. !/flag:pge #: modules/devices/x86/x86_data.c:60 msgctxt "x86-flag" msgid "Page Global Enable (global bit in PDEs and PTEs)" msgstr "Включение глобальной страницы (глобальный бит в PDE и PTE)" #. !/flag:mca #: modules/devices/x86/x86_data.c:61 msgctxt "x86-flag" msgid "Machine Check Architecture" msgstr "Архитектура машинного контроля" #. !/flag:cmov #: modules/devices/x86/x86_data.c:62 msgctxt "x86-flag" msgid "CMOV instructions (conditional move) (also FCMOV)" msgstr "Инструкции CMOV (условная пересылка данных) (также FCMOV)" #. !/flag:pat #: modules/devices/x86/x86_data.c:63 msgctxt "x86-flag" msgid "Page Attribute Table" msgstr "Таблица атрибутов страницы" #. !/flag:pse36 #: modules/devices/x86/x86_data.c:64 msgctxt "x86-flag" msgid "36-bit PSEs (huge pages)" msgstr "36-битные PSE (огромные страницы)" #. !/flag:pn #: modules/devices/x86/x86_data.c:65 msgctxt "x86-flag" msgid "Processor serial number" msgstr "Серийный номер процессора" #. !/flag:clflush #: modules/devices/x86/x86_data.c:66 msgctxt "x86-flag" msgid "Cache Line Flush instruction" msgstr "Инструкция Cache Line Flush" #. !/flag:dts #: modules/devices/x86/x86_data.c:67 msgctxt "x86-flag" msgid "" "Debug Store (buffer for debugging and profiling instructions), or " "alternately: digital thermal sensor" msgstr "" "Debug Store (буфер для инструкций по отладке и профилированию) или " "альтернативно: цифровой термодатчик" #. !/flag:acpi #: modules/devices/x86/x86_data.c:68 msgctxt "x86-flag" msgid "ACPI via MSR (temperature monitoring and clock speed modulation)" msgstr "ACPI через MSR (мониторинг температуры и модуляции тактовой частоты)" #. !/flag:mmx #: modules/devices/x86/x86_data.c:69 msgctxt "x86-flag" msgid "Multimedia Extensions" msgstr "Расширения мультимедиа" #. !/flag:fxsr #: modules/devices/x86/x86_data.c:70 msgctxt "x86-flag" msgid "FXSAVE/FXRSTOR, CR4.OSFXSR" msgstr "" #. !/flag:sse #: modules/devices/x86/x86_data.c:71 msgctxt "x86-flag" msgid "Intel SSE vector instructions" msgstr "Векторные инструкции Intel SSE" #. !/flag:sse2 #: modules/devices/x86/x86_data.c:72 msgctxt "x86-flag" msgid "SSE2" msgstr "" #. !/flag:ss #: modules/devices/x86/x86_data.c:73 msgctxt "x86-flag" msgid "CPU self snoop" msgstr "Проверка процессора" #. !/flag:ht #: modules/devices/x86/x86_data.c:74 msgctxt "x86-flag" msgid "Hyper-Threading" msgstr "Многопоточность (Hyper-Threading)" #. !/flag:tm #: modules/devices/x86/x86_data.c:75 msgctxt "x86-flag" msgid "Automatic clock control (Thermal Monitor)" msgstr "Автоматический контроль частоты (монитор температуры)" #. !/flag:ia64 #: modules/devices/x86/x86_data.c:76 msgctxt "x86-flag" msgid "" "Intel Itanium Architecture 64-bit (not to be confused with Intel's 64-bit " "x86 architecture with flag x86-64 or \"AMD64\" bit indicated by flag lm)" msgstr "" "64-битная архитектура Intel Itanium (не путать с 64-битной архитектурой x86 " "от Intel с флагом x86-64 или \"AMD64\"-битной с флагом bit)" #. !/flag:pbe #: modules/devices/x86/x86_data.c:77 msgctxt "x86-flag" msgid "Pending Break Enable (PBE# pin) wakeup support" msgstr "Поддержка пробуждения Pending Break Enable (PBE# pin)" #. !/flag:syscall #: modules/devices/x86/x86_data.c:80 msgctxt "x86-flag" msgid "SYSCALL (Fast System Call) and SYSRET (Return From Fast System Call)" msgstr "" "SYSCALL (Быстрый вызов системы) и SYSRET (Возврат после быстрого вызова " "системы)" #. !/flag:mp #: modules/devices/x86/x86_data.c:81 msgctxt "x86-flag" msgid "Multiprocessing Capable." msgstr "Возможна работа в многопроцессном режиме." #. !/flag:nx #: modules/devices/x86/x86_data.c:82 msgctxt "x86-flag" msgid "Execute Disable" msgstr "Выполнение отключено" #. !/flag:mmxext #: modules/devices/x86/x86_data.c:83 msgctxt "x86-flag" msgid "AMD MMX extensions" msgstr "Расширения AMD MMX" #. !/flag:fxsr_opt #: modules/devices/x86/x86_data.c:84 msgctxt "x86-flag" msgid "FXSAVE/FXRSTOR optimizations" msgstr "Оптимизации FXSAVE/FXRSTOR" #. !/flag:pdpe1gb #: modules/devices/x86/x86_data.c:85 msgctxt "x86-flag" msgid "One GB pages (allows hugepagesz=1G)" msgstr "Страница размером 1 Гб (разрешает hugepagesz=1G)" #. !/flag:rdtscp #: modules/devices/x86/x86_data.c:86 msgctxt "x86-flag" msgid "Read Time-Stamp Counter and Processor ID" msgstr "Чтение счетчика временной метки и ID процессора" #. !/flag:lm #: modules/devices/x86/x86_data.c:87 msgctxt "x86-flag" msgid "Long Mode (x86-64: amd64, also known as Intel 64, i.e. 64-bit capable)" msgstr "" "Длинный режим (x86-64: amd64, также известен как Intel 64, т.е. совместимый " "с 64-бит)" #. !/flag:3dnow #: modules/devices/x86/x86_data.c:88 msgctxt "x86-flag" msgid "3DNow! (AMD vector instructions, competing with Intel's SSE1)" msgstr "3DNow! (векторные инструкции AMD, конкурируют с SSE1 от Intel)" #. !/flag:3dnowext #: modules/devices/x86/x86_data.c:89 msgctxt "x86-flag" msgid "AMD 3DNow! extensions" msgstr "Расширения AMD 3DNow!" #. !/flag:recovery #: modules/devices/x86/x86_data.c:91 msgctxt "x86-flag" msgid "CPU in recovery mode" msgstr "Процессор в режиме восстановления" #. !/flag:longrun #: modules/devices/x86/x86_data.c:92 msgctxt "x86-flag" msgid "Longrun power control" msgstr "Управление питанием LongRun" #. !/flag:lrti #: modules/devices/x86/x86_data.c:93 msgctxt "x86-flag" msgid "LongRun table interface" msgstr "Интерфейс таблицы LongRun" #. !/flag:cxmmx #: modules/devices/x86/x86_data.c:95 msgctxt "x86-flag" msgid "Cyrix MMX extensions" msgstr "Расширения Cyrix MMX" #. !/flag:k6_mtrr #: modules/devices/x86/x86_data.c:96 msgctxt "x86-flag" msgid "AMD K6 nonstandard MTRRs" msgstr "Нестандартные диапазонные регистры типа памяти (MTRR) AMD K6" #. !/flag:cyrix_arr #: modules/devices/x86/x86_data.c:97 msgctxt "x86-flag" msgid "Cyrix ARRs (= MTRRs)" msgstr "" "Регистры адресного диапазона (ARR) Cyrix (= диапазонные регистры типа памяти " "(MTRR))" #. !/flag:centaur_mcr #: modules/devices/x86/x86_data.c:98 msgctxt "x86-flag" msgid "Centaur MCRs (= MTRRs)" msgstr "" "Сбросы мастер-контроля (MCR) Centaur (= диапазонные регистры типа памяти " "(MTRR))" #. !/flag:constant_tsc #: modules/devices/x86/x86_data.c:99 msgctxt "x86-flag" msgid "TSC ticks at a constant rate" msgstr "Счетчик метки времени (TSC) работает на постоянной частоте" #. !/flag:up #: modules/devices/x86/x86_data.c:100 msgctxt "x86-flag" msgid "SMP kernel running on UP" msgstr "Ядро SMP запущено на UP" #. !/flag:art #: modules/devices/x86/x86_data.c:101 msgctxt "x86-flag" msgid "Always-Running Timer" msgstr "Постоянный таймер" #. !/flag:arch_perfmon #: modules/devices/x86/x86_data.c:102 msgctxt "x86-flag" msgid "Intel Architectural PerfMon" msgstr "Архитектурный монитор призводительности Intel" #. !/flag:pebs #: modules/devices/x86/x86_data.c:103 msgctxt "x86-flag" msgid "Precise-Event Based Sampling" msgstr "Сэмплинг, основанный на точных событиях" #. !/flag:bts #: modules/devices/x86/x86_data.c:104 msgctxt "x86-flag" msgid "Branch Trace Store" msgstr "Хранилище отслеживания ветви" #. !/flag:rep_good #: modules/devices/x86/x86_data.c:105 msgctxt "x86-flag" msgid "rep microcode works well" msgstr "микрокод rep работает нормально" #. !/flag:acc_power #: modules/devices/x86/x86_data.c:106 msgctxt "x86-flag" msgid "AMD accumulated power mechanism" msgstr "Механизм накопления питания AMD" #. !/flag:nopl #: modules/devices/x86/x86_data.c:107 msgctxt "x86-flag" msgid "The NOPL (0F 1F) instructions" msgstr "Инструкции NOPL (0F 1F)" #. !/flag:xtopology #: modules/devices/x86/x86_data.c:108 msgctxt "x86-flag" msgid "cpu topology enum extensions" msgstr "расширения cpu топологии enum" #. !/flag:tsc_reliable #: modules/devices/x86/x86_data.c:109 msgctxt "x86-flag" msgid "TSC is known to be reliable" msgstr "Счетчик метки времени (TSC) считается надежным" #. !/flag:nonstop_tsc #: modules/devices/x86/x86_data.c:110 msgctxt "x86-flag" msgid "TSC does not stop in C states" msgstr "Счетчик метки времени (TSC) не останавливается в состояниях C" #. !/flag:extd_apicid #: modules/devices/x86/x86_data.c:111 msgctxt "x86-flag" msgid "has extended APICID (8 bits)" msgstr "имеются расширенные APICID (8 бит)" #. !/flag:amd_dcm #: modules/devices/x86/x86_data.c:112 msgctxt "x86-flag" msgid "multi-node processor" msgstr "многоузловой процессор" #. !/flag:aperfmperf #: modules/devices/x86/x86_data.c:113 msgctxt "x86-flag" msgid "APERFMPERF" msgstr "" #. !/flag:eagerfpu #: modules/devices/x86/x86_data.c:114 msgctxt "x86-flag" msgid "Non lazy FPU restore" msgstr "Неленивое восстановление FPU" #. !/flag:nonstop_tsc_s3 #: modules/devices/x86/x86_data.c:115 msgctxt "x86-flag" msgid "TSC doesn't stop in S3 state" msgstr "Счетчик метки времени (TSC) не останавливается в состоянии S3" #. !/flag:mce_recovery #: modules/devices/x86/x86_data.c:116 msgctxt "x86-flag" msgid "CPU has recoverable machine checks" msgstr "У процессора есть возможность восстановить машинный контроль" #. !/flag:pni #: modules/devices/x86/x86_data.c:119 msgctxt "x86-flag" msgid "SSE-3 (\"Prescott New Instructions\")" msgstr "SSE-3 (\"Новые инструкции Prescott\")" #. !/flag:pclmulqdq #: modules/devices/x86/x86_data.c:120 msgctxt "x86-flag" msgid "" "Perform a Carry-Less Multiplication of Quadword instruction - accelerator " "for GCM)" msgstr "" "Выполнение менее ресурсоемкого умножения инструкции учетверенного слова - " "ускоряет GCM)" #. !/flag:dtes64 #: modules/devices/x86/x86_data.c:121 msgctxt "x86-flag" msgid "64-bit Debug Store" msgstr "Хранилище 64-битной отладки" #. !/flag:monitor #: modules/devices/x86/x86_data.c:122 msgctxt "x86-flag" msgid "Monitor/Mwait support (Intel SSE3 supplements)" msgstr "Поддержка Monitor/Mwait (дополняет Intel SSE3)" #. !/flag:ds_cpl #: modules/devices/x86/x86_data.c:123 msgctxt "x86-flag" msgid "CPL Qual. Debug Store" msgstr "Хранилище отладки CPL Qual." #. !/flag:vmx #: modules/devices/x86/x86_data.c:124 msgctxt "x86-flag" msgid "Hardware virtualization, Intel VMX" msgstr "Аппаратная виртуализация, Intel VMX" #. !/flag:smx #: modules/devices/x86/x86_data.c:125 msgctxt "x86-flag" msgid "Safer mode TXT (TPM support)" msgstr "Безопасный режим TXT (поддержка TPM)" #. !/flag:est #: modules/devices/x86/x86_data.c:126 msgctxt "x86-flag" msgid "Enhanced SpeedStep" msgstr "Технология энергосбережения Enhanced SpeedStep" #. !/flag:tm2 #: modules/devices/x86/x86_data.c:127 msgctxt "x86-flag" msgid "Thermal Monitor 2" msgstr "Монитор температуры 2" #. !/flag:ssse3 #: modules/devices/x86/x86_data.c:128 msgctxt "x86-flag" msgid "Supplemental SSE-3" msgstr "Дополнительный SSE-3" #. !/flag:cid #: modules/devices/x86/x86_data.c:129 msgctxt "x86-flag" msgid "Context ID" msgstr "ID контекста" #. !/flag:sdbg #: modules/devices/x86/x86_data.c:130 msgctxt "x86-flag" msgid "silicon debug" msgstr "отладка кремния" #. !/flag:fma #: modules/devices/x86/x86_data.c:131 msgctxt "x86-flag" msgid "Fused multiply-add" msgstr "Умножение-сложение с однократным округлением" #. !/flag:cx16 #: modules/devices/x86/x86_data.c:132 msgctxt "x86-flag" msgid "CMPXCHG16B" msgstr "" #. !/flag:xtpr #: modules/devices/x86/x86_data.c:133 msgctxt "x86-flag" msgid "Send Task Priority Messages" msgstr "Отправлять сообщения о приоритете задач" #. !/flag:pdcm #: modules/devices/x86/x86_data.c:134 msgctxt "x86-flag" msgid "Performance Capabilities" msgstr "Возможности производительности" #. !/flag:pcid #: modules/devices/x86/x86_data.c:135 msgctxt "x86-flag" msgid "Process Context Identifiers" msgstr "Идентификаторы контекста процесса" #. !/flag:dca #: modules/devices/x86/x86_data.c:136 msgctxt "x86-flag" msgid "Direct Cache Access" msgstr "Прямой доступ к кэшу" #. !/flag:sse4_1 #: modules/devices/x86/x86_data.c:137 msgctxt "x86-flag" msgid "SSE-4.1" msgstr "SSE-4.1" #. !/flag:sse4_2 #: modules/devices/x86/x86_data.c:138 msgctxt "x86-flag" msgid "SSE-4.2" msgstr "SSE-4.2" #. !/flag:x2apic #: modules/devices/x86/x86_data.c:139 msgctxt "x86-flag" msgid "x2APIC" msgstr "x2APIC" #. !/flag:movbe #: modules/devices/x86/x86_data.c:140 msgctxt "x86-flag" msgid "Move Data After Swapping Bytes instruction" msgstr "Инструкция переноса данных после подкачки байт" #. !/flag:popcnt #: modules/devices/x86/x86_data.c:141 msgctxt "x86-flag" msgid "" "Return the Count of Number of Bits Set to 1 instruction (Hamming weight, i." "e. bit count)" msgstr "" "Возвращение набора счетчика бит в 1 инструкцию (вес Хэмминга, т.е. счетчик " "бит)" #: modules/devices/x86/x86_data.c:142 msgctxt "x86-flag" msgid "Tsc deadline timer" msgstr "Таймер окончания счетчика метки времени (TSC)" #. !/flag:aes/aes-ni #: modules/devices/x86/x86_data.c:143 msgctxt "x86-flag" msgid "Advanced Encryption Standard (New Instructions)" msgstr "Стандарт дополнительного шифрования (новые инструкции)" #. !/flag:xsave #: modules/devices/x86/x86_data.c:144 msgctxt "x86-flag" msgid "Save Processor Extended States: also provides XGETBY,XRSTOR,XSETBY" msgstr "" "Сохранение расширенных состояний процессора: также добавляет XGETBY,XRSTOR," "XSETBY" #. !/flag:avx #: modules/devices/x86/x86_data.c:145 msgctxt "x86-flag" msgid "Advanced Vector Extensions" msgstr "Дополнительные векторные расширения" #. !/flag:f16c #: modules/devices/x86/x86_data.c:146 msgctxt "x86-flag" msgid "16-bit fp conversions (CVT16)" msgstr "16-битные конверсии fp (CVT16)" #. !/flag:rdrand #: modules/devices/x86/x86_data.c:147 msgctxt "x86-flag" msgid "Read Random Number from hardware random number generator instruction" msgstr "Инструкция считывания случайного числа из аппаратного генератора" #. !/flag:hypervisor #: modules/devices/x86/x86_data.c:148 msgctxt "x86-flag" msgid "Running on a hypervisor" msgstr "Запущено в гипервизоре" #. !/flag:rng #: modules/devices/x86/x86_data.c:150 msgctxt "x86-flag" msgid "Random Number Generator present (xstore)" msgstr "Наличие генератора случайных чисел (xstore)" #. !/flag:rng_en #: modules/devices/x86/x86_data.c:151 msgctxt "x86-flag" msgid "Random Number Generator enabled" msgstr "Генератор случайных чисел включен" #. !/flag:ace #: modules/devices/x86/x86_data.c:152 msgctxt "x86-flag" msgid "on-CPU crypto (xcrypt)" msgstr "шифрование на процессоре (xcrypt)" #. !/flag:ace_en #: modules/devices/x86/x86_data.c:153 msgctxt "x86-flag" msgid "on-CPU crypto enabled" msgstr "шифрование на процессоре включено" #. !/flag:ace2 #: modules/devices/x86/x86_data.c:154 msgctxt "x86-flag" msgid "Advanced Cryptography Engine v2" msgstr "Расширенный криптографический движок v2" #. !/flag:ace2_en #: modules/devices/x86/x86_data.c:155 msgctxt "x86-flag" msgid "ACE v2 enabled" msgstr "ACE v2 включен" #. !/flag:phe #: modules/devices/x86/x86_data.c:156 msgctxt "x86-flag" msgid "PadLock Hash Engine" msgstr "Движок контрольных сумм PadLock" #. !/flag:phe_en #: modules/devices/x86/x86_data.c:157 msgctxt "x86-flag" msgid "PHE enabled" msgstr "PHE включен" #. !/flag:pmm #: modules/devices/x86/x86_data.c:158 msgctxt "x86-flag" msgid "PadLock Montgomery Multiplier" msgstr "Множитель PadLock Montgomery" #. !/flag:pmm_en #: modules/devices/x86/x86_data.c:159 msgctxt "x86-flag" msgid "PMM enabled" msgstr "PMM включен" #. !/flag:lahf_lm #: modules/devices/x86/x86_data.c:161 msgctxt "x86-flag" msgid "Load AH from Flags (LAHF) and Store AH into Flags (SAHF) in long mode" msgstr "" "Загрузка AH из флагов (LAHF) и хранение AH в флагах (SAHF) в длинном режиме" #. !/flag:cmp_legacy #: modules/devices/x86/x86_data.c:162 msgctxt "x86-flag" msgid "If yes HyperThreading not valid" msgstr "Если да, многопоточность не работает" #. !/flag:svm #: modules/devices/x86/x86_data.c:163 msgctxt "x86-flag" msgid "\"Secure virtual machine\": AMD-V" msgstr "\"Безопасная виртуальная машина\": AMD-V" #. !/flag:extapic #: modules/devices/x86/x86_data.c:164 msgctxt "x86-flag" msgid "Extended APIC space" msgstr "Расширенное пространство APIC" #. !/flag:cr8_legacy #: modules/devices/x86/x86_data.c:165 msgctxt "x86-flag" msgid "CR8 in 32-bit mode" msgstr "CR8 в 32-битном режиме" #. !/flag:abm #: modules/devices/x86/x86_data.c:166 msgctxt "x86-flag" msgid "Advanced Bit Manipulation" msgstr "Дополнительное управление битами" #. !/flag:sse4a #: modules/devices/x86/x86_data.c:167 msgctxt "x86-flag" msgid "SSE-4A" msgstr "SSE-4A" #. !/flag:misalignsse #: modules/devices/x86/x86_data.c:168 msgctxt "x86-flag" msgid "" "indicates if a general-protection exception (#GP) is generated when some " "legacy SSE instructions operate on unaligned data. Also depends on CR0 and " "Alignment Checking bit" msgstr "" "показывает, если исключение из общей защиты (#GP) создано при использовании " "неверных данных некоторыми устаревшими инструкциями SSE. Также зависит от " "CR0 и бита проверки выравнивания" #. !/flag:3dnowprefetch #: modules/devices/x86/x86_data.c:169 msgctxt "x86-flag" msgid "3DNow prefetch instructions" msgstr "инструкции 3DNow prefetch" #. !/flag:osvw #: modules/devices/x86/x86_data.c:170 msgctxt "x86-flag" msgid "" "indicates OS Visible Workaround, which allows the OS to work around " "processor errata." msgstr "" "показывает на видимое ОС обходное решение, позволяющее обойти опечатки " "процессора." #. !/flag:ibs #: modules/devices/x86/x86_data.c:171 msgctxt "x86-flag" msgid "Instruction Based Sampling" msgstr "Сэмплинг, основанный на инструкциях" #. !/flag:xop #: modules/devices/x86/x86_data.c:172 msgctxt "x86-flag" msgid "extended AVX instructions" msgstr "расширенные инструкции AVX" #. !/flag:skinit #: modules/devices/x86/x86_data.c:173 msgctxt "x86-flag" msgid "SKINIT/STGI instructions" msgstr "инструкции SKINIT/STGI" #. !/flag:wdt #: modules/devices/x86/x86_data.c:174 msgctxt "x86-flag" msgid "Watchdog timer" msgstr "Сторожевой таймер" #. !/flag:lwp #: modules/devices/x86/x86_data.c:175 msgctxt "x86-flag" msgid "Light Weight Profiling" msgstr "Легковесное профилирование" #. !/flag:fma4 #: modules/devices/x86/x86_data.c:176 msgctxt "x86-flag" msgid "4 operands MAC instructions" msgstr "Инструкции MAC 4 операндов" #. !/flag:tce #: modules/devices/x86/x86_data.c:177 msgctxt "x86-flag" msgid "translation cache extension" msgstr "расширение переноса кэша" #. !/flag:nodeid_msr #: modules/devices/x86/x86_data.c:178 msgctxt "x86-flag" msgid "NodeId MSR" msgstr "" #. !/flag:tbm #: modules/devices/x86/x86_data.c:179 msgctxt "x86-flag" msgid "Trailing Bit Manipulation" msgstr "Скользящее манипулирование битами" #. !/flag:topoext #: modules/devices/x86/x86_data.c:180 msgctxt "x86-flag" msgid "Topology Extensions CPUID leafs" msgstr "Расширения топологии потоков CPUID" #. !/flag:perfctr_core #: modules/devices/x86/x86_data.c:181 msgctxt "x86-flag" msgid "Core Performance Counter Extensions" msgstr "Расширения счетчика производительности ядра" #. !/flag:perfctr_nb #: modules/devices/x86/x86_data.c:182 msgctxt "x86-flag" msgid "NB Performance Counter Extensions" msgstr "Расширения счетчика производительности NB" #. !/flag:bpext #: modules/devices/x86/x86_data.c:183 msgctxt "x86-flag" msgid "data breakpoint extension" msgstr "расширение точки прерывания данных" #. !/flag:ptsc #: modules/devices/x86/x86_data.c:184 msgctxt "x86-flag" msgid "performance time-stamp counter" msgstr "счетчик временной метки производительности" #. !/flag:perfctr_l2 #: modules/devices/x86/x86_data.c:185 msgctxt "x86-flag" msgid "L2 Performance Counter Extensions" msgstr "Расширения счетчика производительности L2" #. !/flag:mwaitx #: modules/devices/x86/x86_data.c:186 msgctxt "x86-flag" msgid "MWAIT extension (MONITORX/MWAITX)" msgstr "Расширение MWAIT (MONITORX/MWAITX)" #. !/flag:cpb #: modules/devices/x86/x86_data.c:188 msgctxt "x86-flag" msgid "AMD Core Performance Boost" msgstr "Увеличение производительности ядра AMD" #. !/flag:epb #: modules/devices/x86/x86_data.c:189 msgctxt "x86-flag" msgid "IA32_ENERGY_PERF_BIAS support" msgstr "Поддержка IA32_ENERGY_PERF_BIAS" #. !/flag:hw_pstate #: modules/devices/x86/x86_data.c:190 msgctxt "x86-flag" msgid "AMD HW-PState" msgstr "" #. !/flag:proc_feedback #: modules/devices/x86/x86_data.c:191 msgctxt "x86-flag" msgid "AMD ProcFeedbackInterface" msgstr "" #. !/flag:intel_pt #: modules/devices/x86/x86_data.c:192 msgctxt "x86-flag" msgid "Intel Processor Tracing" msgstr "Отслеживание процессора Intel" #. !/flag:tpr_shadow #: modules/devices/x86/x86_data.c:194 msgctxt "x86-flag" msgid "Intel TPR Shadow" msgstr "" #. !/flag:vnmi #: modules/devices/x86/x86_data.c:195 msgctxt "x86-flag" msgid "Intel Virtual NMI" msgstr "" #. !/flag:flexpriority #: modules/devices/x86/x86_data.c:196 msgctxt "x86-flag" msgid "Intel FlexPriority" msgstr "" #. !/flag:ept #: modules/devices/x86/x86_data.c:197 msgctxt "x86-flag" msgid "Intel Extended Page Table" msgstr "" #. !/flag:vpid #: modules/devices/x86/x86_data.c:198 msgctxt "x86-flag" msgid "Intel Virtual Processor ID" msgstr "" #. !/flag:vmmcall #: modules/devices/x86/x86_data.c:199 msgctxt "x86-flag" msgid "prefer VMMCALL to VMCALL" msgstr "предпочитать VMMCALL, а не VMCALL" #. !/flag:fsgsbase #: modules/devices/x86/x86_data.c:201 msgctxt "x86-flag" msgid "{RD/WR}{FS/GS}BASE instructions" msgstr "Инструкции {RD/WR}{FS/GS}BASE" #. !/flag:tsc_adjust #: modules/devices/x86/x86_data.c:202 msgctxt "x86-flag" msgid "TSC adjustment MSR" msgstr "TSC выраснивание MSR" #. !/flag:bmi1 #: modules/devices/x86/x86_data.c:203 msgctxt "x86-flag" msgid "1st group bit manipulation extensions" msgstr "Расширения управления битами 1-й группы" #. !/flag:hle #: modules/devices/x86/x86_data.c:204 msgctxt "x86-flag" msgid "Hardware Lock Elision" msgstr "Аппаратная блокировка Elision" #. !/flag:avx2 #: modules/devices/x86/x86_data.c:205 msgctxt "x86-flag" msgid "AVX2 instructions" msgstr "Инструкции AVX2" #. !/flag:smep #: modules/devices/x86/x86_data.c:206 msgctxt "x86-flag" msgid "Supervisor Mode Execution Protection" msgstr "Защита выполнения режима супервизора" #. !/flag:bmi2 #: modules/devices/x86/x86_data.c:207 msgctxt "x86-flag" msgid "2nd group bit manipulation extensions" msgstr "Расширения управления битами 2-й группы" #. !/flag:erms #: modules/devices/x86/x86_data.c:208 msgctxt "x86-flag" msgid "Enhanced REP MOVSB/STOSB" msgstr "Расширенный REP MOVSB/STOSB" #. !/flag:invpcid #: modules/devices/x86/x86_data.c:209 msgctxt "x86-flag" msgid "Invalidate Processor Context ID" msgstr "Аннулировать ID контекста процессора" #. !/flag:rtm #: modules/devices/x86/x86_data.c:210 msgctxt "x86-flag" msgid "Restricted Transactional Memory" msgstr "Ограниченная память переносов" #. !/flag:cqm #: modules/devices/x86/x86_data.c:211 msgctxt "x86-flag" msgid "Cache QoS Monitoring" msgstr "Мониторинг кэша QoS" #. !/flag:mpx #: modules/devices/x86/x86_data.c:212 msgctxt "x86-flag" msgid "Memory Protection Extension" msgstr "Расширение защиты памяти" #. !/flag:avx512f #: modules/devices/x86/x86_data.c:213 msgctxt "x86-flag" msgid "AVX-512 foundation" msgstr "Основа AVX-512" #. !/flag:avx512dq #: modules/devices/x86/x86_data.c:214 msgctxt "x86-flag" msgid "AVX-512 Double/Quad instructions" msgstr "Инструкции AVX-512 Double/Quad" #. !/flag:rdseed #: modules/devices/x86/x86_data.c:215 msgctxt "x86-flag" msgid "The RDSEED instruction" msgstr "Инструкция RDSEED" #. !/flag:adx #: modules/devices/x86/x86_data.c:216 msgctxt "x86-flag" msgid "The ADCX and ADOX instructions" msgstr "Инструкции ADCX и ADOX" #. !/flag:smap #: modules/devices/x86/x86_data.c:217 msgctxt "x86-flag" msgid "Supervisor Mode Access Prevention" msgstr "Предотвращение доступа к режиму супервизора" #. !/flag:clflushopt #: modules/devices/x86/x86_data.c:218 msgctxt "x86-flag" msgid "CLFLUSHOPT instruction" msgstr "Инструкция CLFLUSHOPT" #. !/flag:clwb #: modules/devices/x86/x86_data.c:219 msgctxt "x86-flag" msgid "CLWB instruction" msgstr "Инструкция CLWB" #. !/flag:avx512pf #: modules/devices/x86/x86_data.c:220 msgctxt "x86-flag" msgid "AVX-512 Prefetch" msgstr "Предварительная выборка AVX-512" #. !/flag:avx512er #: modules/devices/x86/x86_data.c:221 msgctxt "x86-flag" msgid "AVX-512 Exponential and Reciprocal" msgstr "AVX-512 Экспоненциальный и обратный" #. !/flag:avx512cd #: modules/devices/x86/x86_data.c:222 msgctxt "x86-flag" msgid "AVX-512 Conflict Detection" msgstr "Обнаружения конфликтов AVX-512" #. !/flag:sha_ni #: modules/devices/x86/x86_data.c:223 msgctxt "x86-flag" msgid "SHA1/SHA256 Instruction Extensions" msgstr "Расширения инструкций SHA1/SHA256" #. !/flag:avx512bw #: modules/devices/x86/x86_data.c:224 msgctxt "x86-flag" msgid "AVX-512 Byte/Word instructions" msgstr "Инструкции AVX-512 Byte/Word" #. !/flag:avx512vl #: modules/devices/x86/x86_data.c:225 msgctxt "x86-flag" msgid "AVX-512 128/256 Vector Length extensions" msgstr "Расширения длины вектора AVX-512 128/256" #. !/flag:xsaveopt #: modules/devices/x86/x86_data.c:227 msgctxt "x86-flag" msgid "Optimized XSAVE" msgstr "Оптимизированный XSAVE" #. !/flag:xsavec #: modules/devices/x86/x86_data.c:228 msgctxt "x86-flag" msgid "XSAVEC" msgstr "" #. !/flag:xgetbv1 #: modules/devices/x86/x86_data.c:229 msgctxt "x86-flag" msgid "XGETBV with ECX = 1" msgstr "XGETBV с ECX = 1" #. !/flag:xsaves #: modules/devices/x86/x86_data.c:230 msgctxt "x86-flag" msgid "XSAVES/XRSTORS" msgstr "" #. !/flag:cqm_llc #: modules/devices/x86/x86_data.c:232 msgctxt "x86-flag" msgid "LLC QoS" msgstr "" #. !/flag:cqm_occup_llc #: modules/devices/x86/x86_data.c:234 msgctxt "x86-flag" msgid "LLC occupancy monitoring" msgstr "Мониторинг занятости LLC" #. !/flag:cqm_mbm_total #: modules/devices/x86/x86_data.c:235 msgctxt "x86-flag" msgid "LLC total MBM monitoring" msgstr "Полный MBM-мониторинг LLC" #. !/flag:cqm_mbm_local #: modules/devices/x86/x86_data.c:236 msgctxt "x86-flag" msgid "LLC local MBM monitoring" msgstr "Локальный MBM-мониторинг LLC" #. !/flag:clzero #: modules/devices/x86/x86_data.c:238 msgctxt "x86-flag" msgid "CLZERO instruction" msgstr "Инструкция CLZERO" #. !/flag:irperf #: modules/devices/x86/x86_data.c:239 msgctxt "x86-flag" msgid "instructions retired performance counter" msgstr "инструкции счетчика отложенной производительности" #. !/flag:dtherm #: modules/devices/x86/x86_data.c:241 msgctxt "x86-flag" msgid "digital thermal sensor" msgstr "цифровой сенсор температуры" #. !/flag:ida #: modules/devices/x86/x86_data.c:242 msgctxt "x86-flag" msgid "Intel Dynamic Acceleration" msgstr "Динамическое ускорение Intel" #. !/flag:arat #: modules/devices/x86/x86_data.c:243 msgctxt "x86-flag" msgid "Always Running APIC Timer" msgstr "Таймер APIC всегда запущен" #. !/flag:pln #: modules/devices/x86/x86_data.c:244 msgctxt "x86-flag" msgid "Intel Power Limit Notification" msgstr "Уведомление о лимите энергии Intel" #. !/flag:pts #: modules/devices/x86/x86_data.c:245 msgctxt "x86-flag" msgid "Intel Package Thermal Status" msgstr "Состояние температуры Intel" #. !/flag:hwp #: modules/devices/x86/x86_data.c:246 msgctxt "x86-flag" msgid "Intel Hardware P-states" msgstr "Аппаратные P-states Intel" #. !/flag:hwp_notify #: modules/devices/x86/x86_data.c:247 msgctxt "x86-flag" msgid "HWP notification" msgstr "Уведомление HWP" #. !/flag:hwp_act_window #: modules/devices/x86/x86_data.c:248 msgctxt "x86-flag" msgid "HWP Activity Window" msgstr "Окно активности HWP" #. !/flag:hwp_epp #: modules/devices/x86/x86_data.c:249 msgctxt "x86-flag" msgid "HWP Energy Performance Preference" msgstr "Настройка производительности энергии HWP" #. !/flag:hwp_pkg_req #: modules/devices/x86/x86_data.c:250 msgctxt "x86-flag" msgid "HWP package-level request" msgstr "Запрос уровня пакета HWP" #. !/flag:npt #: modules/devices/x86/x86_data.c:252 msgctxt "x86-flag" msgid "AMD Nested Page Table support" msgstr "Поддержка таблиц вложенной страницы AMD" #. !/flag:lbrv #: modules/devices/x86/x86_data.c:253 msgctxt "x86-flag" msgid "AMD LBR Virtualization support" msgstr "Поддержка виртуализации AMD LBR" #. !/flag:svm_lock #: modules/devices/x86/x86_data.c:254 msgctxt "x86-flag" msgid "AMD SVM locking MSR" msgstr "Блокировка MSR AMD SVM" #. !/flag:nrip_save #: modules/devices/x86/x86_data.c:255 msgctxt "x86-flag" msgid "AMD SVM next_rip save" msgstr "Сохранение next_rip AMD SVM" #. !/flag:tsc_scale #: modules/devices/x86/x86_data.c:256 msgctxt "x86-flag" msgid "AMD TSC scaling support" msgstr "Поддержка масштабирования AMD TSC" #. !/flag:vmcb_clean #: modules/devices/x86/x86_data.c:257 msgctxt "x86-flag" msgid "AMD VMCB clean bits support" msgstr "Поддержка чистых бит AMD VMCB" #. !/flag:flushbyasid #: modules/devices/x86/x86_data.c:258 msgctxt "x86-flag" msgid "AMD flush-by-ASID support" msgstr "Поддержка AMD flush-by-ASID" #. !/flag:decodeassists #: modules/devices/x86/x86_data.c:259 msgctxt "x86-flag" msgid "AMD Decode Assists support" msgstr "Поддержка помощи декодирования" #. !/flag:pausefilter #: modules/devices/x86/x86_data.c:260 msgctxt "x86-flag" msgid "AMD filtered pause intercept" msgstr "Перехват фильтрованной паузы AMD" #. !/flag:pfthreshold #: modules/devices/x86/x86_data.c:261 msgctxt "x86-flag" msgid "AMD pause filter threshold" msgstr "Порог фильтра паузы AMD" #. !/flag:avic #: modules/devices/x86/x86_data.c:262 msgctxt "x86-flag" msgid "Virtual Interrupt Controller" msgstr "Контроллер виртуального прерывания" #. !/flag:pku #: modules/devices/x86/x86_data.c:264 msgctxt "x86-flag" msgid "Protection Keys for Userspace" msgstr "Ключи защиты для пространства пользователя" #. !/flag:ospke #: modules/devices/x86/x86_data.c:265 msgctxt "x86-flag" msgid "OS Protection Keys Enable" msgstr "Включение защиты ключей ОС" #. !/flag:overflow_recov #: modules/devices/x86/x86_data.c:267 msgctxt "x86-flag" msgid "MCA overflow recovery support" msgstr "Поддержка восстановления после переполнения MCA" #. !/flag:succor #: modules/devices/x86/x86_data.c:268 msgctxt "x86-flag" msgid "uncorrectable error containment and recovery" msgstr "неисправимое содержание ошибки и восстановление" #. !/flag:smca #: modules/devices/x86/x86_data.c:269 msgctxt "x86-flag" msgid "Scalable MCA" msgstr "Масштабируемый MCA" #. !/bug:f00f #: modules/devices/x86/x86_data.c:272 msgctxt "x86-flag" msgid "Intel F00F bug" msgstr "Ошибка Intel F00F" #. !/bug:fdiv #: modules/devices/x86/x86_data.c:273 msgctxt "x86-flag" msgid "FPU FDIV" msgstr "" #. !/bug:coma #: modules/devices/x86/x86_data.c:274 msgctxt "x86-flag" msgid "Cyrix 6x86 coma" msgstr "" #. !/bug:tlb_mmatch #: modules/devices/x86/x86_data.c:275 msgctxt "x86-flag" msgid "AMD Erratum 383" msgstr "" #. !/bug:apic_c1e #. !/bug:amd_e400 #: modules/devices/x86/x86_data.c:276 modules/devices/x86/x86_data.c:285 msgctxt "x86-flag" msgid "AMD Erratum 400" msgstr "" #. !/bug:11ap #: modules/devices/x86/x86_data.c:277 msgctxt "x86-flag" msgid "Bad local APIC aka 11AP" msgstr "Неверный локальный APIC или 11AP" #. !/bug:fxsave_leak #: modules/devices/x86/x86_data.c:278 msgctxt "x86-flag" msgid "FXSAVE leaks FOP/FIP/FOP" msgstr "FXSAVE утекает FOP/FIP/FOP" #. !/bug:clflush_monitor #: modules/devices/x86/x86_data.c:279 msgctxt "x86-flag" msgid "AAI65, CLFLUSH required before MONITOR" msgstr "AAI65, CLFLUSH требуются до MONITOR" #. !/bug:sysret_ss_attrs #: modules/devices/x86/x86_data.c:280 msgctxt "x86-flag" msgid "SYSRET doesn't fix up SS attrs" msgstr "SYSRET не исправляет атрибуты SS" #. !/bug:espfix #: modules/devices/x86/x86_data.c:281 msgctxt "x86-flag" msgid "IRET to 16-bit SS corrupts ESP/RSP high bits" msgstr "IRET на 16-битные SS прерывает высшие биты ESP/RSP" #. !/bug:null_seg #: modules/devices/x86/x86_data.c:282 msgctxt "x86-flag" msgid "Nulling a selector preserves the base" msgstr "Обнуление селектора продпочитается основному" #. !/bug:swapgs_fence #: modules/devices/x86/x86_data.c:283 msgctxt "x86-flag" msgid "SWAPGS without input dep on GS" msgstr "SWAPGS без ввода зависит от GS" #. !/bug:monitor #: modules/devices/x86/x86_data.c:284 msgctxt "x86-flag" msgid "IPI required to wake up remote CPU" msgstr "Требуется IPI для удаленного пробуждения процессора" #. !/bug:cpu_insecure & bug:cpu_meltdown #: modules/devices/x86/x86_data.c:286 modules/devices/x86/x86_data.c:287 msgctxt "x86-flag" msgid "" "CPU is affected by meltdown attack and needs kernel page table isolation" msgstr "" "Процессор подвержен атаке Meltdown, требуется изоляция таблицы страниц ядра" #. !/bug:spectre_v1 #: modules/devices/x86/x86_data.c:288 msgctxt "x86-flag" msgid "CPU is affected by Spectre variant 1 attack with conditional branches" msgstr "" "Процессор подвержен атаке Spectre variant 1 с последовательными ветвями" #. !/bug:spectre_v2 #: modules/devices/x86/x86_data.c:289 msgctxt "x86-flag" msgid "CPU is affected by Spectre variant 2 attack with indirect branches" msgstr "Процессор подвержен атаке Spectre variant 2 с непрямыми ветвями" #. !/bug:spec_store_bypass #: modules/devices/x86/x86_data.c:290 msgctxt "x86-flag" msgid "CPU is affected by speculative store bypass attack" msgstr "Процессор подвержен атаке спекулятивного обхода хранилища" #. !/bug:l1tf #: modules/devices/x86/x86_data.c:291 msgctxt "x86-flag" msgid "CPU is affected by L1 Terminal Fault" msgstr "Процессор подвержен влиянию ошибки терминала L1" #. !/flag:pm:ts #: modules/devices/x86/x86_data.c:294 msgctxt "x86-flag" msgid "temperature sensor" msgstr "датчик температуры" #. !/flag:pm:fid #: modules/devices/x86/x86_data.c:295 msgctxt "x86-flag" msgid "frequency id control" msgstr "контроль частоты id" #. !/flag:pm:vid #: modules/devices/x86/x86_data.c:296 msgctxt "x86-flag" msgid "voltage id control" msgstr "контроль вольтажа id" #. !/flag:pm:ttp #: modules/devices/x86/x86_data.c:297 msgctxt "x86-flag" msgid "thermal trip" msgstr "изменение температуры" #. !/flag:pm:tm #: modules/devices/x86/x86_data.c:298 msgctxt "x86-flag" msgid "hardware thermal control" msgstr "аппаратный контроль температуры" #. !/flag:pm:stc #: modules/devices/x86/x86_data.c:299 msgctxt "x86-flag" msgid "software thermal control" msgstr "программный контроль температуры" #. !/flag:pm:100mhzsteps #: modules/devices/x86/x86_data.c:300 msgctxt "x86-flag" msgid "100 MHz multiplier control" msgstr "контроль множителя 100 МГц" #. !/flag:pm:hwpstate #: modules/devices/x86/x86_data.c:301 msgctxt "x86-flag" msgid "hardware P-state control" msgstr "аппаратное управление P-state" #. !/flag:pm:cpb #: modules/devices/x86/x86_data.c:302 msgctxt "x86-flag" msgid "core performance boost" msgstr "повышение производительности ядра" #. !/flag:pm:eff_freq_ro #: modules/devices/x86/x86_data.c:303 msgctxt "x86-flag" msgid "Readonly aperf/mperf" msgstr "aperf/mperf только для чтения" #. !/flag:pm:proc_feedback #: modules/devices/x86/x86_data.c:304 msgctxt "x86-flag" msgid "processor feedback interface" msgstr "интерфейс отзыва процессора" #. !/flag:pm:acc_power #: modules/devices/x86/x86_data.c:305 msgctxt "x86-flag" msgid "accumulated power mechanism" msgstr "механизм накопления питания" #: modules/network.c:61 msgid "Interfaces" msgstr "Интерфейсы" #: modules/network.c:62 msgid "IP Connections" msgstr "IP-подключения" #: modules/network.c:63 msgid "Routing Table" msgstr "Таблица маршрутизации" #: modules/network.c:64 modules/network.c:310 msgid "ARP Table" msgstr "Таблица ARP" #: modules/network.c:65 msgid "DNS Servers" msgstr "DNS-серверы" #: modules/network.c:66 msgid "Statistics" msgstr "Статистика" #: modules/network.c:67 msgid "Shared Directories" msgstr "Общие каталоги" #: modules/network.c:311 modules/network.c:333 modules/network.c:364 #: modules/network/net.c:495 msgid "IP Address" msgstr "IP-адрес" #: modules/network.c:311 msgid "MAC Address" msgstr "MAC-адрес" #: modules/network.c:320 msgid "SAMBA" msgstr "" #: modules/network.c:321 msgid "NFS" msgstr "" #: modules/network.c:332 msgid "Name Servers" msgstr "Серверы имен" #: modules/network.c:347 msgid "Connections" msgstr "Соединения" #: modules/network.c:348 msgid "Local Address" msgstr "Локальный адрес" #: modules/network.c:348 msgid "Foreign Address" msgstr "Удаленный адрес" #: modules/network.c:348 msgid "State" msgstr "Состояние" #: modules/network.c:364 msgid "Sent" msgstr "Отправлено" #: modules/network.c:364 msgid "Received" msgstr "Получено" #: modules/network.c:380 msgid "IP routing table" msgstr "Таблица IP-маршрутизации" #: modules/network.c:381 msgid "Destination/Gateway" msgstr "Цель/Шлюз" #: modules/network.c:381 modules/network/net.c:496 msgid "Mask" msgstr "Маска" #: modules/network.c:409 msgid "Network" msgstr "Сеть" #: modules/network.c:442 msgid "Gathers information about this computer's network connection" msgstr "Собирает информацию о сетевых подключениях" #: modules/network/net.c:74 msgctxt "wi-op-mode" msgid "Auto" msgstr "Авто" #: modules/network/net.c:75 msgctxt "wi-op-mode" msgid "Ad-Hoc" msgstr "" #: modules/network/net.c:76 msgctxt "wi-op-mode" msgid "Managed" msgstr "" #: modules/network/net.c:77 msgctxt "wi-op-mode" msgid "Master" msgstr "" #: modules/network/net.c:78 msgctxt "wi-op-mode" msgid "Repeater" msgstr "" #: modules/network/net.c:79 msgctxt "wi-op-mode" msgid "Secondary" msgstr "" #: modules/network/net.c:80 msgctxt "wi-op-mode" msgid "(Unknown)" msgstr "(Неизвестно)" #: modules/network/net.c:268 modules/network/net.c:288 #: modules/network/net.c:296 msgctxt "net-if-type" msgid "Ethernet" msgstr "Ethernet" #: modules/network/net.c:269 msgctxt "net-if-type" msgid "Loopback" msgstr "" #: modules/network/net.c:270 msgctxt "net-if-type" msgid "Point-to-Point" msgstr "" #: modules/network/net.c:271 modules/network/net.c:272 #: modules/network/net.c:273 modules/network/net.c:274 #: modules/network/net.c:298 msgctxt "net-if-type" msgid "Wireless" msgstr "" #: modules/network/net.c:275 msgctxt "net-if-type" msgid "Virtual Point-to-Point (TUN)" msgstr "" #: modules/network/net.c:276 msgctxt "net-if-type" msgid "Ethernet (TAP)" msgstr "" #: modules/network/net.c:277 msgctxt "net-if-type" msgid "Parallel Line Internet Protocol" msgstr "" #: modules/network/net.c:278 msgctxt "net-if-type" msgid "Infrared" msgstr "" #: modules/network/net.c:279 modules/network/net.c:297 msgctxt "net-if-type" msgid "Serial Line Internet Protocol" msgstr "" #: modules/network/net.c:280 msgctxt "net-if-type" msgid "Integrated Services Digital Network" msgstr "" #: modules/network/net.c:281 msgctxt "net-if-type" msgid "IPv6-over-IPv4 Tunnel" msgstr "" #: modules/network/net.c:282 msgctxt "net-if-type" msgid "VMWare Virtual Network Interface (NAT)" msgstr "" #: modules/network/net.c:283 msgctxt "net-if-type" msgid "VMWare Virtual Network Interface" msgstr "" #: modules/network/net.c:284 msgctxt "net-if-type" msgid "Personal Area Network (PAN)" msgstr "" #: modules/network/net.c:285 msgctxt "net-if-type" msgid "Bluetooth" msgstr "" #: modules/network/net.c:286 msgctxt "net-if-type" msgid "Bridge Interface" msgstr "" #: modules/network/net.c:287 msgctxt "net-if-type" msgid "Hamachi Virtual Personal Network" msgstr "" #: modules/network/net.c:289 msgctxt "net-if-type" msgid "Intermediate Functional Block" msgstr "" #: modules/network/net.c:290 msgctxt "net-if-type" msgid "GRE Network Tunnel" msgstr "" #: modules/network/net.c:291 msgctxt "net-if-type" msgid "Mesh Network" msgstr "" #: modules/network/net.c:292 msgctxt "net-if-type" msgid "Wireless Master Interface" msgstr "" #: modules/network/net.c:293 msgctxt "net-if-type" msgid "VirtualBox Virtual Network Interface" msgstr "" #: modules/network/net.c:299 msgctxt "net-if-type" msgid "Wireless (WAN)" msgstr "" #: modules/network/net.c:301 msgctxt "net-if-type" msgid "(Unknown)" msgstr "(Неизвестно)" #: modules/network/net.c:364 modules/network/net.c:374 msgid "Network Interfaces" msgstr "Сетевые интерфейсы" #: modules/network/net.c:364 msgid "None Found" msgstr "Не найдено" #: modules/network/net.c:431 msgid "Network Adapter Properties" msgstr "Свойства сетевого адаптера" #: modules/network/net.c:432 msgid "Interface Type" msgstr "Тип интерфейса" #: modules/network/net.c:433 msgid "Hardware Address (MAC)" msgstr "Аппаратный адрес (MAC)" #: modules/network/net.c:437 msgid "MTU" msgstr "" #: modules/network/net.c:439 msgid "Transfer Details" msgstr "Информация о передаче данных" #: modules/network/net.c:440 msgid "Bytes Received" msgstr "Получено байт" #: modules/network/net.c:441 msgid "Bytes Sent" msgstr "Отправлено байт" #: modules/network/net.c:458 modules/network/net.c:480 #: modules/network/net.c:481 msgid "dBm" msgstr "дБм" #: modules/network/net.c:458 msgid "mW" msgstr "мВт" #: modules/network/net.c:472 msgid "Wireless Properties" msgstr "Свойства беспроводной сети" #: modules/network/net.c:473 msgid "Network Name (SSID)" msgstr "Название сети (SSID)" #: modules/network/net.c:474 msgid "Bit Rate" msgstr "Битрейт" #: modules/network/net.c:475 msgid "Transmission Power" msgstr "Мощность передатчика" #: modules/network/net.c:478 msgid "Link Quality" msgstr "Качество связи" #: modules/network/net.c:479 msgid "Signal / Noise" msgstr "Сигнал / шум" #: modules/network/net.c:494 msgid "Internet Protocol (IPv4)" msgstr "Интернет-протокол (IPv4)" #: modules/network/net.c:495 modules/network/net.c:496 #: modules/network/net.c:498 msgid "(Not set)" msgstr "(не установлен)" #: modules/network/net.c:497 msgid "Broadcast Address" msgstr "Широковещательный адрес" #: includes/spd-decode.h:28 msgid "RAM" msgstr "ОЗУ" hardinfo2-hardinfo2-1331e88/po/tr.po000066400000000000000000005163311474767047500171570ustar00rootroot00000000000000# Turkish translation for hardinfo2. # Copyright (C) 2020-2023 hardinfo's COPYRIGHT HOLDER # This file is distributed under the same license as the hardinfo2 package. # # Cihan Alkan , 2020. # Serkan Önder , 2021. # Sabri Ünal , 2023. # msgid "" msgstr "" "Project-Id-Version: hardinfo2 master\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-10-06 01:42+0200\n" "PO-Revision-Date: 2023-05-24 21:01+0300\n" "Last-Translator: Sabri Ünal \n" "Language-Team: Türkçe \n" "Language: tr\n" "X-Poedit-Basepath: ../\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Poedit 3.2.2\n" #: hardinfo2/cpu_util.c:29 msgid "Little Endian" msgstr "Küçük Endian" #: hardinfo2/cpu_util.c:31 msgid "Big Endian" msgstr "Büyük Endian" #: hardinfo2/cpu_util.c:205 hardinfo2/cpu_util.c:216 modules/devices/gpu.c:262 msgid "Frequency Scaling" msgstr "Frekans Ölçeklendirme" #: hardinfo2/cpu_util.c:206 modules/devices/gpu.c:263 msgid "Minimum" msgstr "En düşük" #: hardinfo2/cpu_util.c:206 hardinfo2/cpu_util.c:207 hardinfo2/cpu_util.c:208 #: hardinfo2/dt_util.c:590 modules/devices/gpu.c:263 modules/devices/gpu.c:264 msgid "kHz" msgstr "kHz" #: hardinfo2/cpu_util.c:207 modules/devices/gpu.c:264 msgid "Maximum" msgstr "En yüksek" #: hardinfo2/cpu_util.c:208 msgid "Current" msgstr "Güncel" #: hardinfo2/cpu_util.c:209 modules/devices/gpu.c:265 msgid "Transition Latency" msgstr "Geçiş Gecikmesi" #: hardinfo2/cpu_util.c:209 modules/devices/gpu.c:265 msgid "ns" msgstr "ns" #: hardinfo2/cpu_util.c:210 msgid "Governor" msgstr "Yönetici" #: hardinfo2/cpu_util.c:211 hardinfo2/cpu_util.c:217 modules/devices.c:842 #: modules/devices/gpu.c:209 modules/devices/pci.c:148 #: modules/devices/usb.c:139 msgid "Driver" msgstr "Sürücü" #: hardinfo2/cpu_util.c:223 modules/computer.c:801 #: modules/devices/arm/processor.c:255 modules/devices/e2k/processor.c:178 #: modules/devices/x86/processor.c:283 modules/devices/x86/processor.c:387 #: modules/devices/x86/processor.c:525 msgid "(Not Available)" msgstr "(Mevcut değil)" #: hardinfo2/cpu_util.c:231 hardinfo2/cpu_util.c:233 msgid "Socket" msgstr "Yuva" #: hardinfo2/cpu_util.c:236 hardinfo2/cpu_util.c:238 modules/devices/gpu.c:205 #: modules/devices/gpu.c:295 msgid "Core" msgstr "Çekirdek" #: hardinfo2/cpu_util.c:241 msgid "Book" msgstr "Kitap" #: hardinfo2/cpu_util.c:243 msgid "Drawer" msgstr "Çekmece" #: hardinfo2/cpu_util.c:249 modules/devices/arm/processor.c:480 #: modules/devices/x86/processor.c:751 msgid "Topology" msgstr "Topoloji" #: hardinfo2/cpu_util.c:250 msgid "ID" msgstr "ID" #: hardinfo2/dmi_util.c:25 msgid "BIOS Information" msgstr "BIOS Bilgisi" #: hardinfo2/dmi_util.c:26 modules/devices/parisc/processor.c:157 msgid "System" msgstr "Sistem" #: hardinfo2/dmi_util.c:27 msgid "Base Board" msgstr "Taban Kurulu" #: hardinfo2/dmi_util.c:28 modules/devices/dmi.c:54 msgid "Chassis" msgstr "Şasi" #: hardinfo2/dmi_util.c:29 modules/computer.c:580 modules/computer.c:1144 #: modules/devices/alpha/processor.c:87 modules/devices/arm/processor.c:340 #: modules/devices.c:99 modules/devices/e2k/processor.c:357 #: modules/devices/ia64/processor.c:159 #: modules/devices/loongarch64/processor.c:93 #: modules/devices/m68k/processor.c:83 modules/devices/mips/processor.c:74 #: modules/devices/parisc/processor.c:154 modules/devices/ppc/processor.c:157 #: modules/devices/riscv/processor.c:241 modules/devices/s390/processor.c:131 #: modules/devices/sh/processor.c:83 modules/devices/sparc/processor.c:74 #: modules/devices/x86/processor.c:647 msgid "Processor" msgstr "İşlemci" #: hardinfo2/dmi_util.c:30 msgid "Memory Controller" msgstr "Bellek Denetleyici" #: hardinfo2/dmi_util.c:31 msgid "Memory Module" msgstr "Hafıza modülü" #: hardinfo2/dmi_util.c:32 modules/devices/e2k/processor.c:366 #: modules/devices/parisc/processor.c:163 modules/devices/x86/processor.c:663 msgid "Cache" msgstr "Önbellek" #: hardinfo2/dmi_util.c:33 msgid "Port Connector" msgstr "Bağlantı Noktası Konektörü" #: hardinfo2/dmi_util.c:34 msgid "System Slots" msgstr "Sistem Yuvaları" #: hardinfo2/dmi_util.c:35 msgid "On Board Devices" msgstr "Bütünleşik cihazlar" #: hardinfo2/dmi_util.c:36 msgid "OEM Strings" msgstr "OEM Dizeleri" #: hardinfo2/dmi_util.c:37 msgid "System Configuration Options" msgstr "Sistem Yapılandırma Seçenekleri" #: hardinfo2/dmi_util.c:38 msgid "BIOS Language" msgstr "BIOS Dili" #: hardinfo2/dmi_util.c:39 msgid "Group Associations" msgstr "Grup Dernekleri" #: hardinfo2/dmi_util.c:40 msgid "System Event Log" msgstr "Sistem Olay Günlüğü" #: hardinfo2/dmi_util.c:41 msgid "Physical Memory Array" msgstr "Fiziksel Bellek Dizisi" #: hardinfo2/dmi_util.c:42 msgid "Memory Device" msgstr "Bellek Aygıtı" #: hardinfo2/dmi_util.c:43 msgid "32-bit Memory Error" msgstr "32-bit Bellek hatası" #: hardinfo2/dmi_util.c:44 msgid "Memory Array Mapped Address" msgstr "Bellek Dizisi Eşlenmiş Adres" #: hardinfo2/dmi_util.c:45 msgid "Memory Device Mapped Address" msgstr "Bellek Aygıtı Eşlenen Adres" #: hardinfo2/dmi_util.c:46 msgid "Built-in Pointing Device" msgstr "Yerleşik İşaretleme Aygıtı" #: hardinfo2/dmi_util.c:47 msgid "Portable Battery" msgstr "Taşınabilir Pil" #: hardinfo2/dmi_util.c:48 msgid "System Reset" msgstr "Sistem yeniden başlatma" #: hardinfo2/dmi_util.c:49 msgid "Hardware Security" msgstr "Donanım Güvenliği" #: hardinfo2/dmi_util.c:50 msgid "System Power Controls" msgstr "Sistem Güç Kontrolleri" #: hardinfo2/dmi_util.c:51 msgid "Voltage Probe" msgstr "Gerilim Probu" #: hardinfo2/dmi_util.c:52 msgid "Cooling Device" msgstr "Soğutma Cihazı" #: hardinfo2/dmi_util.c:53 msgid "Temperature Probe" msgstr "Sıcaklık probu" #: hardinfo2/dmi_util.c:54 msgid "Electrical Current Probe" msgstr "Elektrik Akımı Probu" #: hardinfo2/dmi_util.c:55 msgid "Out-of-band Remote Access" msgstr "Bant Dışı Uzaktan Erişim" #: hardinfo2/dmi_util.c:56 msgid "Boot Integrity Services" msgstr "Önyükleme Bütünlük Hizmetleri" #: hardinfo2/dmi_util.c:57 msgid "System Boot" msgstr "Sistem Önyükleme" #: hardinfo2/dmi_util.c:58 msgid "64-bit Memory Error" msgstr "64-bit Bellek Hatası" #: hardinfo2/dmi_util.c:59 msgid "Management Device" msgstr "Yönetim Cihazı" #: hardinfo2/dmi_util.c:60 msgid "Management Device Component" msgstr "Yönetim Cihazı Bileşeni" #: hardinfo2/dmi_util.c:61 msgid "Management Device Threshold Data" msgstr "Yönetim Cihazı Eşik Verileri" #: hardinfo2/dmi_util.c:62 msgid "Memory Channel" msgstr "Bellek Kanalı" #: hardinfo2/dmi_util.c:63 msgid "IPMI Device" msgstr "IPMI Cihazı" #: hardinfo2/dmi_util.c:64 msgid "Power Supply" msgstr "Güç kaynağı" #: hardinfo2/dmi_util.c:65 msgid "Additional Information" msgstr "Ek Bilgi" #: hardinfo2/dmi_util.c:66 msgid "Onboard Device" msgstr "Yerleşik Cihaz" #: hardinfo2/dmi_util.c:233 msgid "Invalid chassis type (0)" msgstr "Geçersiz kasa tipi (0)" #: hardinfo2/dmi_util.c:234 hardinfo2/dmi_util.c:235 msgid "Unknown chassis type" msgstr "Bilinmeyen kasa türü" #: hardinfo2/dmi_util.c:236 msgid "Desktop" msgstr "Masaüstü" #: hardinfo2/dmi_util.c:237 msgid "Low-profile Desktop" msgstr "Düşük profilli Masaüstü" #: hardinfo2/dmi_util.c:238 msgid "Pizza Box" msgstr "Pizza Kutusu" #: hardinfo2/dmi_util.c:239 msgid "Mini Tower" msgstr "Mini Kule" #: hardinfo2/dmi_util.c:240 msgid "Tower" msgstr "Kule" #: hardinfo2/dmi_util.c:241 msgid "Portable" msgstr "Taşınabilir" #: hardinfo2/dmi_util.c:242 modules/computer.c:408 modules/computer.c:417 #: modules/computer.c:440 modules/computer.c:442 msgid "Laptop" msgstr "Dizüstü" #: hardinfo2/dmi_util.c:243 msgid "Notebook" msgstr "Diz üstü bilgisayar" #: hardinfo2/dmi_util.c:244 msgid "Handheld" msgstr "Elde taşınır" #: hardinfo2/dmi_util.c:245 msgid "Docking Station" msgstr "Yerleştirme İstasyonu" #: hardinfo2/dmi_util.c:246 msgid "All-in-one" msgstr "Hepsi Bir Arada" #: hardinfo2/dmi_util.c:247 msgid "Subnotebook" msgstr "Mini diz üstü bilgisayar" #: hardinfo2/dmi_util.c:248 msgid "Space-saving" msgstr "Yer tasarrufu sağlar" #: hardinfo2/dmi_util.c:249 msgid "Lunch Box" msgstr "Sefer tası" #: hardinfo2/dmi_util.c:250 msgid "Main Server Chassis" msgstr "Ana Sunucu Kasası" #: hardinfo2/dmi_util.c:251 msgid "Expansion Chassis" msgstr "Genişletme Kasası" #: hardinfo2/dmi_util.c:252 msgid "Sub Chassis" msgstr "Alt Kasa" #: hardinfo2/dmi_util.c:253 msgid "Bus Expansion Chassis" msgstr "Bus Genişletme Kasası" #: hardinfo2/dmi_util.c:254 msgid "Peripheral Chassis" msgstr "Çevresel Kasa" #: hardinfo2/dmi_util.c:255 msgid "RAID Chassis" msgstr "RAID Kasa" #: hardinfo2/dmi_util.c:256 msgid "Rack Mount Chassis" msgstr "Raf Tipi Kasa" #: hardinfo2/dmi_util.c:257 msgid "Sealed-case PC" msgstr "Kapalı kasa PC" #: hardinfo2/dmi_util.c:258 msgid "Multi-system" msgstr "Çoklu sistem" #: hardinfo2/dmi_util.c:259 msgid "CompactPCI" msgstr "Kompakt PCI" #: hardinfo2/dmi_util.c:260 msgid "AdvancedTCA" msgstr "GelişmişTCA" #: hardinfo2/dmi_util.c:261 msgid "Blade" msgstr "Bıçak" #: hardinfo2/dmi_util.c:262 msgid "Blade Enclosing" msgstr "Bıçak Muhafazası" #: hardinfo2/dmi_util.c:263 msgid "Tablet" msgstr "Tablet" #: hardinfo2/dmi_util.c:264 msgid "Convertible" msgstr "Çevrilebilir" #: hardinfo2/dmi_util.c:265 msgid "Detachable" msgstr "Ayrılabilir" #: hardinfo2/dmi_util.c:266 msgid "IoT Gateway" msgstr "IoT Ağ Geçidi" #: hardinfo2/dmi_util.c:267 msgid "Embedded PC" msgstr "Gömülü PC" #: hardinfo2/dmi_util.c:268 msgid "Mini PC" msgstr "Mini PC" #: hardinfo2/dmi_util.c:269 msgid "Stick PC" msgstr "Çubuk PC" #: hardinfo2/dt_util.c:1175 msgid "phandle Map" msgstr "tanıtıcı Haritası" #: hardinfo2/dt_util.c:1176 msgid "Alias Map" msgstr "Alias Haritası" #: hardinfo2/dt_util.c:1177 msgid "Symbol Map" msgstr "Sembol Haritası" #. !/ %d will be latest year of copyright #: hardinfo2/hardinfo.c:104 #, c-format msgid "" "Copyright (C) 2003-2023 L. A. F. Pereira. 2024-%d Hardinfo2 Project.\n" "\n" msgstr "" #: hardinfo2/hardinfo.c:106 #, c-format msgid "" "Compile-time options:\n" " Release version: %s (%s)\n" " LibSoup version: %s\n" " Data : %s\n" " Library : %s\n" " Locale : %s\n" " Compiled for : %s\n" msgstr "" #: hardinfo2/hardinfo.c:114 msgid "3.0" msgstr "" #: hardinfo2/hardinfo.c:149 #, c-format msgid "Unknown benchmark ``%s''\n" msgstr "" #: hardinfo2/hardinfo.c:188 msgid "Don't know what to do. Exiting." msgstr "Ne yapacağımı bilmiyorum. Çıkılıyor." #: hardinfo2/usb_util.c:293 modules/devices/devicetree.c:90 #: modules/devices/devicetree.c:91 modules/devices/monitors.c:411 #: modules/devices/storage.c:306 modules/devices/storage.c:328 msgid "(None)" msgstr "(Yok)" #: hardinfo2/util.c:100 modules/computer/uptime.c:54 #, c-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d gün" msgstr[1] "%d günler" #: hardinfo2/util.c:101 modules/computer/uptime.c:55 #, c-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d saat" msgstr[1] "%d saatler" #: hardinfo2/util.c:102 modules/computer/uptime.c:56 #, c-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d dakika" msgstr[1] "%d dakikalar" #: hardinfo2/util.c:103 #, c-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d saniye" msgstr[1] "%d saniyeler" #: hardinfo2/util.c:124 #, c-format msgid "%.1f B" msgstr "%.1f B" #: hardinfo2/util.c:126 #, c-format msgid "%.1f KiB" msgstr "%.1f KB" #: hardinfo2/util.c:128 #, c-format msgid "%.1f MiB" msgstr "%.1f MB" #: hardinfo2/util.c:130 #, c-format msgid "%.1f GiB" msgstr "%.1f GB" #: hardinfo2/util.c:132 #, c-format msgid "%.1f TiB" msgstr "%.1f TB" #: hardinfo2/util.c:134 #, c-format msgid "%.1f PiB" msgstr "%.1f PB" #: hardinfo2/util.c:283 msgid "Error" msgstr "Hata" #: hardinfo2/util.c:283 hardinfo2/util.c:299 msgid "Warning" msgstr "Uyarı" #: hardinfo2/util.c:298 msgid "Fatal Error" msgstr "Ölümcül Hata" #: hardinfo2/util.c:325 msgid "do not print status messages to standard output" msgstr "durum mesajlarını standart çıktıya yazdırma" #: hardinfo2/util.c:331 msgid "creates a report and prints to standard output" msgstr "bir rapor oluşturur ve standart çıktıya basar" #: hardinfo2/util.c:337 msgid "chooses a report format ([text], html)" msgstr "bir rapor biçimi seçer ([metin], html)" #: hardinfo2/util.c:343 msgid "run single benchmark eg. -b 'FPU FFT' (Default all Benchmarks runs)" msgstr "" #: hardinfo2/util.c:349 msgid "" "user note attached to benchmark results. (updating/synchronize with server)" msgstr "" #: hardinfo2/util.c:355 msgid "benchmark result format ([short], conf, shell)" msgstr "karşılaştırma sonuç biçimi ([kısa], conf, kabuk)" #: hardinfo2/util.c:361 msgid "" "maximum number of benchmark results to include (-1 for no limit, default is " "50)" msgstr "" "dahil edilecek maksimum karşılaştırma sonucu sayısı (sınırsız için -1, " "varsayılan 50'dur)" #: hardinfo2/util.c:367 msgid "shows program version and quit" msgstr "program sürümünü gösterir ve çıkış" #: hardinfo2/util.c:373 msgid "do not run benchmarks" msgstr "kıyaslama yapmayın" #: hardinfo2/util.c:379 msgid "show all details" msgstr "tüm detayları göster" #: hardinfo2/util.c:384 msgid "- System Information and Benchmark" msgstr "" #: hardinfo2/util.c:394 #, c-format msgid "" "Unrecognized arguments.\n" "Try ``%s --help'' for more information.\n" msgstr "" "Tanınmayan argümanlar.\n" "Daha fazla bilgi için ``%s --help '' deneyin.\n" #: hardinfo2/util.c:869 #, c-format msgid "Scanning: %s..." msgstr "Taranıyor: %s..." #: hardinfo2/util.c:879 shell/shell.c:303 shell/shell.c:925 shell/shell.c:2163 msgid "Done." msgstr "Bitti." #: hardinfo2/vendor.c:213 msgid "Update vendor list" msgstr "Satıcı listesini güncelleyin" #: hardinfo2/vendor.c:218 msgid "Check Update Version" msgstr "" #: hardinfo2/vendor.c:391 modules/computer.c:630 modules/computer.c:829 #: modules/computer/os.c:196 modules/computer/os.c:378 #: modules/computer/os.c:413 modules/computer/os.c:741 #: modules/computer/os.c:802 modules/devices.c:464 modules/devices.c:614 #: modules/devices/firmware.c:149 modules/devices/printers.c:106 #: modules/devices/printers.c:113 modules/devices/printers.c:123 #: modules/devices/printers.c:138 modules/devices/printers.c:147 #: modules/devices/printers.c:256 modules/devices/spd-decode.c:364 #: modules/devices/usb.c:149 msgid "Unknown" msgstr "Bilinmeyen" #: shell/callbacks.c:457 shell/shell.c:522 msgid "System Information and Benchmark" msgstr "" #: shell/callbacks.c:462 msgid "" "HardInfo2 is free software; you can redistribute it and/or modify it under " "the terms of the GNU General Public License as published by the Free " "Software Foundation, version 2 or later.\n" "\n" "This program is distributed in the hope that it will be useful, but WITHOUT " "ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " "FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " "more details.\n" "\n" "You should have received a copy of the GNU General Public License along with " "this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin St, Fifth Floor, Boston, MA 02110-1301 USA" msgstr "" #: shell/menu.c:43 msgid "_Information" msgstr "_Bilgi" #: shell/menu.c:44 msgid "_View" msgstr "_Görünüm" #: shell/menu.c:46 msgid "_Theme" msgstr "" #: shell/menu.c:48 msgid "_Help" msgstr "_Yardım" #: shell/menu.c:52 msgid "Generate _Report" msgstr "_Rapor Oluştur" #: shell/menu.c:53 msgid "Generates a report with detailed system information" msgstr "Ayrıntılı sistem bilgileri içeren bir rapor oluşturur" #: shell/menu.c:57 shell/syncmanager.c:692 msgid "Synchronize" msgstr "Eşzamanla" #: shell/menu.c:58 msgid "Send benchmark results and receive updated data from the network" msgstr "Karşılaştırma sonuçları gönderin ve ağdan güncellenmiş veriler alın" #: shell/menu.c:73 msgid "_Refresh" msgstr "_Yenile" #: shell/menu.c:78 msgid "_Open HardInfo2 Web Site" msgstr "HardInfo2 Web Sitesini _Aç" #: shell/menu.c:83 msgid "_Report bug" msgstr "Hata _Bildir" #: shell/menu.c:88 msgid "_About HardInfo2" msgstr "HardInfo2 _Hakkında" #: shell/menu.c:89 msgid "Displays program version information" msgstr "Program sürüm bilgilerini görüntüler" #: shell/menu.c:93 msgid "_Quit" msgstr "_Çık" #: shell/menu.c:100 msgid "_Side Pane" msgstr "_Yan Panel" #: shell/menu.c:101 msgid "Toggles side pane visibility" msgstr "Yan bölmenin görünürlüğünü açar veya kapatır" #: shell/menu.c:104 msgid "_Toolbar" msgstr "_Araç Çubuğu" #: shell/menu.c:108 msgid "Synchronize on startup" msgstr "" #: shell/menu.c:113 msgid "Disable Theme" msgstr "" #: shell/menu.c:117 msgid "Theme Motherboard" msgstr "" #: shell/menu.c:121 msgid "Theme Graffiti" msgstr "" #: shell/menu.c:125 msgid "Theme Anime PC" msgstr "" #: shell/menu.c:129 msgid "Theme Tux Star" msgstr "" #: shell/menu.c:133 msgid "Theme PixArt" msgstr "" #: shell/menu.c:137 msgid "Theme Silicon" msgstr "" #: shell/report.c:772 shell/report.c:780 msgid "Save File" msgstr "Dosya Kaydet" #: shell/report.c:775 shell/report.c:1252 shell/syncmanager.c:780 msgid "_Cancel" msgstr "İ_ptal" #: shell/report.c:777 msgid "_Save" msgstr "_Kaydet" #: shell/report.c:952 msgid "Cannot create ReportContext. Programming bug?" msgstr "ReportContext oluşturulamıyor. Hatalı programlama mı?" #: shell/report.c:972 msgid "Open the report with your web browser?" msgstr "Raporu web tarayıcınızla açın?" #: shell/report.c:975 msgid "_No" msgstr "_Hayır" #: shell/report.c:976 msgid "_Open" msgstr "_Aç" #: shell/report.c:1007 msgid "Generating report..." msgstr "Rapor üretiliyor ..." #: shell/report.c:1017 msgid "Report saved." msgstr "Rapor kaydedildi." #: shell/report.c:1019 msgid "Error while creating the report." msgstr "Rapor oluşturulurken hata oluştu." #: shell/report.c:1121 msgid "Generate Report" msgstr "Rapor Oluştur" #: shell/report.c:1146 msgid "" "Generate Report\n" "Please choose the information that you wish to view in your report:" msgstr "" "Rapor Oluştur\n" "Lütfen raporunuzda görmek istediğiniz bilgileri seçin:" #: shell/report.c:1218 msgid "Select _None" msgstr "Seçim _Yok" #: shell/report.c:1229 msgid "Select _All" msgstr "_Tümünü Seç" #: shell/report.c:1262 msgid "_Generate" msgstr "_Oluştur" #: shell/shell.c:517 #, c-format msgid "%s - System Information and Benchmark" msgstr "" #: shell/shell.c:910 msgid "Loading modules..." msgstr "Modüller yükleniyor..." #: shell/shell.c:1681 msgid "URL" msgstr "URL" #: shell/shell.c:1688 msgid "Support URL" msgstr "Destek URL" #: shell/shell.c:1699 msgid "Wikipedia" msgstr "Wikipedia" #: shell/shell.c:2033 #, c-format msgid "%s → Summary" msgstr "%s → Özet" #: shell/shell.c:2139 msgid "Updating..." msgstr "Güncelleniyor..." #: shell/syncmanager.c:80 msgid "" "Synchronize with Central Database\n" "The following information may be synchronized\n" "with the HardInfo2 central database." msgstr "" "Merkez Veritabanı ile Eşzamanla\n" "Aşağıdaki bilgiler HardInfo2 merkezi veri tabanı ile eşzamanlanır." #: shell/syncmanager.c:84 msgid "" "Synchronizing\n" "This may take some time." msgstr "" "Eşzamanlanıyor\n" "Bu biraz zaman alabilir." #: shell/syncmanager.c:546 msgid "(canceled)" msgstr "(iptal edildi)" #: shell/syncmanager.c:562 msgid "(failed)" msgstr "(hatalı)" #: shell/syncmanager.c:658 modules/benchmark.c:932 msgid "Send benchmark results" msgstr "Karşılaştırma sonucunu gönder" #: shell/syncmanager.c:767 msgid "Privacy Policy" msgstr "Gizlilik İlkesi" #: shell/syncmanager.c:789 msgid "_Synchronize" msgstr "_Eşzamanla" #: shell/syncmanager.c:838 #, c-format msgid "Synchronizing: %s" msgstr "" #: modules/benchmark/benches.c:136 msgid "CPU Blowfish (Single-thread)" msgstr "CPU Balon balığı (Tek iş parçacıklı)" #: modules/benchmark/benches.c:144 msgid "CPU Blowfish (Multi-thread)" msgstr "CPU Balon balığı (Çok iş parçacıklı)" #: modules/benchmark/benches.c:152 msgid "CPU Blowfish (Multi-core)" msgstr "CPU Balon balığı (Çok-çekirdekli)" #: modules/benchmark/benches.c:160 msgid "CPU Zlib" msgstr "CPU Zlib Sıkıştırma gücü" #: modules/benchmark/benches.c:168 msgid "CPU CryptoHash" msgstr "CPU CryptoHash Güvenliği" #: modules/benchmark/benches.c:176 msgid "CPU Fibonacci" msgstr "CPU Fibonacci Hesaplama Gücü" #: modules/benchmark/benches.c:184 msgid "CPU N-Queens" msgstr "CPU N-Queens İşleme Gücü" #: modules/benchmark/benches.c:192 msgid "FPU FFT" msgstr "FPU FFT" #: modules/benchmark/benches.c:200 msgid "FPU Raytracing (Single-thread)" msgstr "" #: modules/benchmark/benches.c:208 msgid "Internal Network Speed" msgstr "" #: modules/benchmark/benches.c:216 msgid "SysBench CPU (Single-thread)" msgstr "SisKıyaslama CPU (Tek iş parçacığı)" #: modules/benchmark/benches.c:224 msgid "SysBench CPU (Multi-thread)" msgstr "SisKıyaslama CPU (Çoklu iş parçacığı)" #: modules/benchmark/benches.c:232 msgid "SysBench CPU (Four threads)" msgstr "SisKıyaslama CPU (Dörtlü iş parçacığı)" #: modules/benchmark/benches.c:240 msgid "SysBench Memory (Single-thread)" msgstr "SisKıyaslama Bellek (Tek iş parcacıklı)" #: modules/benchmark/benches.c:248 msgid "SysBench Memory (Two threads)" msgstr "SisKıyaslama Bellek (Çift iş parcacıklı)" #: modules/benchmark/benches.c:256 msgid "SysBench Memory (Quad threads)" msgstr "" #: modules/benchmark/benches.c:264 msgid "SysBench Memory (Multi-thread)" msgstr "" #: modules/benchmark/benches.c:272 msgid "GPU Drawing" msgstr "GPU Çizimi" #: modules/benchmark/benches.c:281 msgid "GPU OpenGL Drawing" msgstr "" #: modules/benchmark/benches.c:290 msgid "Storage R/W Speed" msgstr "" #: modules/benchmark/benches.c:304 msgid "" "Alexey Kopytov's sysbench is required.\n" "Results in events/second. Higher is better." msgstr "" "Alexey Kopytov's sysbench gereklidir.\n" "Olay/saniye cinsinden sonuçlar. Daha yüksek, daha iyidir." #: modules/benchmark/benches.c:310 msgid "" "Alexey Kopytov's sysbench is required.\n" "Results in MiB/second. Higher is better." msgstr "" "Alexey Kopytov's sysbench gereklidir.\n" "MB/saniye cinsinden sonuçlar. Daha yüksek, daha iyidir." #: modules/benchmark/benches.c:313 msgid "" "iperf3 is required.\n" "Results in Gbits/s. Higher is better." msgstr "" #: modules/benchmark/benches.c:324 msgid "Results in HIMarks. Higher is better." msgstr "HIMark'larda sonuçlar. Daha yüksek, daha iyidir." #: modules/benchmark/benches.c:326 msgid "" "Results in HIMarks. Higher is better.\n" "Many Desktop Environments only uses software." msgstr "" #: modules/benchmark/benches.c:329 msgid "Results in MB/s. Higher is better." msgstr "" #: modules/benchmark/benches.c:332 msgid "Results in FPS. Higher is better." msgstr "" #. !/ Used for an unknown value. Having it in only one place cleans up the .po #. * line references #: modules/benchmark/bench_results.c:34 modules/computer.c:41 #: modules/computer/display.c:40 modules/computer/display.c:57 #: modules/computer/os.c:400 modules/computer/os.c:457 modules/devices.c:596 #: modules/devices/dmi_memory.c:699 modules/devices/dmi_memory.c:835 #: modules/devices/gpu.c:40 modules/devices/gpu.c:58 modules/devices/gpu.c:122 #: modules/devices/gpu.c:130 modules/devices/gpu.c:210 #: modules/devices/gpu.c:211 modules/devices/gpu.c:230 #: modules/devices/inputdevices.c:51 modules/devices/monitors.c:28 #: modules/devices/monitors.c:29 modules/devices/monitors.c:155 #: modules/devices/monitors.c:164 modules/devices/pci.c:25 #: modules/devices/pci.c:149 modules/devices/pci.c:150 #: modules/devices/spd-decode.c:358 modules/devices/spd-decode.c:359 #: modules/devices/spd-decode.c:362 modules/devices/spd-decode.c:363 #: modules/devices/spd-decode.c:584 modules/devices/spd-decode.c:899 #: modules/devices/spd-decode.c:900 modules/devices/spd-decode.c:1111 #: modules/devices/spd-decode.c:1350 modules/devices/storage.c:27 #: modules/devices/storage.c:307 modules/devices/storage.c:336 #: modules/devices/storage.c:431 modules/devices/usb.c:29 #: modules/network/net.c:460 includes/cpu_util.h:11 includes/spd-decode.h:24 #: includes/spd-decode.h:25 msgid "(Unknown)" msgstr "(Bilinmeyen)" #: modules/benchmark/bench_results.c:261 modules/devices/alpha/processor.c:90 #: modules/devices/arm/processor.c:289 modules/devices/arm/processor.c:302 #: modules/devices/arm/processor.c:344 modules/devices/arm/processor.c:509 #: modules/devices.c:430 modules/devices.c:438 modules/devices.c:466 #: modules/devices/e2k/processor.c:363 modules/devices/e2k/processor.c:400 #: modules/devices/gpu.c:125 modules/devices/gpu.c:127 #: modules/devices/gpu.c:133 modules/devices/gpu.c:135 #: modules/devices/gpu.c:233 modules/devices/gpu.c:235 #: modules/devices/ia64/processor.c:167 modules/devices/ia64/processor.c:196 #: modules/devices/loongarch64/processor.c:98 #: modules/devices/m68k/processor.c:87 modules/devices/mips/processor.c:77 #: modules/devices/parisc/processor.c:158 #: modules/devices/parisc/processor.c:191 modules/devices/ppc/processor.c:160 #: modules/devices/ppc/processor.c:187 modules/devices/riscv/processor.c:246 #: modules/devices/riscv/processor.c:276 modules/devices/s390/processor.c:160 #: modules/devices/sh/processor.c:87 modules/devices/sh/processor.c:88 #: modules/devices/sh/processor.c:89 modules/devices/x86/processor.c:317 #: modules/devices/x86/processor.c:330 modules/devices/x86/processor.c:658 #: modules/devices/x86/processor.c:790 msgid "MHz" msgstr "MHz" #: modules/benchmark/bench_results.c:293 modules/devices.c:177 #, c-format msgid "%d physical processor" msgid_plural "%d physical processors" msgstr[0] "%d fiziksel işlemci" msgstr[1] "%d fiziksel işlemciler" #: modules/benchmark/bench_results.c:294 modules/devices.c:178 #, c-format msgid "%d core" msgid_plural "%d cores" msgstr[0] "%d çekirdek" msgstr[1] "%d çekirdek" #: modules/benchmark/bench_results.c:295 modules/devices.c:179 #, c-format msgid "%d thread" msgid_plural "%d threads" msgstr[0] "%d iş parçacığı" msgstr[1] "%d iş parçacığı" #: modules/benchmark/bench_results.c:300 modules/devices.c:181 #, c-format msgid "%d NUMA node" msgid_plural "%d NUMA nodes" msgstr[0] "%d NUMA düğümü" msgstr[1] "%d NUMA nodes" #. !/NP procs; NC cores across NN nodes; NT threads #: modules/benchmark/bench_results.c:304 #, c-format msgid "%s; %s across %s; %s" msgstr "%s; %s / %s; %s" #. !/NP procs; NC cores; NT threads #: modules/benchmark/bench_results.c:309 #, c-format msgid "%s; %s; %s" msgstr "%s; %s; %s" #: modules/benchmark/bench_results.c:383 modules/benchmark/bench_results.c:508 #: modules/computer.c:1041 modules/devices/dmi_memory.c:639 #: modules/devices/dmi_memory.c:649 modules/devices/dmi_memory.c:703 #: modules/devices/dmi_memory.c:791 modules/devices/dmi_memory.c:837 #: modules/devices/dmi_memory.c:920 modules/devices/spd-decode.c:1354 #: modules/network/net.c:416 modules/network/net.c:440 #: modules/network/net.c:441 msgid "MiB" msgstr "MiB" #: modules/benchmark/bench_results.c:388 modules/benchmark/bench_results.c:507 msgid "kiB" msgstr "kiB" #: modules/benchmark/bench_results.c:396 modules/benchmark/bench_results.c:452 #, c-format msgid "%d-bit" msgstr "%d-bit" #: modules/benchmark/bench_results.c:417 modules/benchmark/bench_results.c:482 msgid "Benchmark Result" msgstr "Kıyaslama Sonucu" #: modules/benchmark/bench_results.c:417 modules/benchmark/bench_results.c:482 msgid "Threads" msgstr "İş Parçacığı" #: modules/benchmark/bench_results.c:418 modules/benchmark/bench_results.c:484 msgid "Elapsed Time" msgstr "Geçen Süre" #: modules/benchmark/bench_results.c:418 modules/benchmark/bench_results.c:484 msgid "seconds" msgstr "saniye" #: modules/benchmark/bench_results.c:419 modules/computer/languages.c:101 #: modules/devices/arm/processor.c:354 modules/devices/e2k/processor.c:362 #: modules/devices/gpu.c:203 modules/devices/ia64/processor.c:166 #: modules/devices/loongarch64/processor.c:97 modules/devices/pci.c:146 #: modules/devices/ppc/processor.c:159 msgid "Revision" msgstr "Revizyon" #: modules/benchmark/bench_results.c:420 modules/benchmark/bench_results.c:485 msgid "Extra Information" msgstr "Ek Bilgi" #: modules/benchmark/bench_results.c:422 modules/benchmark/bench_results.c:487 msgid "Note" msgstr "Not" #: modules/benchmark/bench_results.c:423 modules/benchmark/bench_results.c:488 msgid "" "This result is from an old version of HardInfo. Results might not be " "comparable to current version. Some details are missing." msgstr "" #: modules/benchmark/bench_results.c:427 modules/benchmark/bench_results.c:492 #: modules/devices/devicetree/pmac_data.c:81 modules/devices/sh/processor.c:85 msgid "Machine" msgstr "Makine" #: modules/benchmark/bench_results.c:428 modules/benchmark/bench_results.c:492 #: modules/devices/devicetree.c:207 modules/devices/dmi.c:48 msgid "Board" msgstr "Kart" #: modules/benchmark/bench_results.c:429 modules/benchmark/bench_results.c:494 #: modules/computer.c:583 msgid "Machine Type" msgstr "Makine Türü" #: modules/benchmark/bench_results.c:430 modules/benchmark/bench_results.c:497 msgid "CPU Name" msgstr "CPU Adı" #: modules/benchmark/bench_results.c:431 modules/benchmark/bench_results.c:498 msgid "CPU Description" msgstr "CPU Açıklaması" #: modules/benchmark/bench_results.c:432 modules/benchmark/bench_results.c:500 #: modules/benchmark.c:601 msgid "CPU Config" msgstr "CPU Yapılandırması" #: modules/benchmark/bench_results.c:433 modules/benchmark/bench_results.c:500 msgid "Threads Available" msgstr "Mevcut İş Parçacığı" #: modules/benchmark/bench_results.c:434 modules/benchmark/bench_results.c:501 #: modules/benchmark.c:579 msgid "GPU" msgstr "GPU" #: modules/benchmark/bench_results.c:435 modules/benchmark/bench_results.c:503 #: modules/computer.c:595 msgid "OpenGL Renderer" msgstr "OpenGL İşleyici" #: modules/benchmark/bench_results.c:436 modules/benchmark/bench_results.c:505 #: modules/benchmark.c:590 modules/computer.c:1145 modules/devices.c:109 msgid "Storage" msgstr "Depolama" #: modules/benchmark/bench_results.c:437 modules/benchmark/bench_results.c:507 #: modules/computer.c:140 modules/computer.c:582 modules/computer.c:1144 #: modules/devices/gpu.c:206 msgid "Memory" msgstr "Bellek" #: modules/benchmark/bench_results.c:438 modules/benchmark/bench_results.c:509 msgid "Pointer Size" msgstr "İşaretçi Boyutu" #: modules/benchmark/bench_results.c:482 msgid "Benchmark" msgstr "Karşılaştırma" #: modules/benchmark/bench_results.c:483 modules/devices/dmi_memory.c:859 #: modules/devices/firmware.c:245 modules/devices/monitors.c:495 #: modules/devices/x86/processor.c:692 msgid "Result" msgstr "Sonuç" #: modules/benchmark/bench_results.c:495 msgid "Linux Kernel" msgstr "" #: modules/benchmark/bench_results.c:496 msgid "Linux OS" msgstr "" #: modules/benchmark/bench_results.c:507 msgid "Physical Memory" msgstr "Fiziksel Hafıza" #: modules/benchmark/bench_results.c:511 msgid "Handles" msgstr "İşleyiciler" #: modules/benchmark/bench_results.c:511 msgid "mid" msgstr "orta" #: modules/benchmark/bench_results.c:512 msgid "cfg_val" msgstr "cfg_val" #: modules/benchmark.c:352 msgid "This Machine" msgstr "Bu Makine" #: modules/benchmark.c:578 modules/benchmark.c:589 modules/benchmark.c:601 msgid "Results" msgstr "Sonuç" #: modules/benchmark.c:602 modules/devices/sparc/processor.c:75 msgid "CPU" msgstr "İşlemci" #: modules/benchmark.c:678 #, c-format msgid "Benchmarking: %s." msgstr "Karşılaştırılıyor: %s." #: modules/benchmark.c:685 msgid "Stop" msgstr "" #: modules/benchmark.c:697 msgid "" "Please do not move your mouse\n" "or press any keys." msgstr "" #: modules/benchmark.c:767 msgid "Benchmarks" msgstr "Kıyaslamalar" #: modules/benchmark.c:777 msgid "Perform tasks and compare with other systems" msgstr "Görevleri yerine getir ve diğer sistemler ile karşılaştır" #: modules/benchmark.c:938 msgid "Receive benchmark results" msgstr "Karşılaştırma sonuçlarını al" #: modules/computer/alsa.c:26 modules/computer.c:599 msgid "Audio Devices" msgstr "Ses Aygıtları" #: modules/computer/alsa.c:34 msgid "Audio Adapter" msgstr "Ses Adaptörü" #: modules/computer.c:96 modules/devices/firmware.c:74 msgid "Summary" msgstr "Özet" #: modules/computer.c:97 modules/computer.c:585 modules/computer.c:1143 msgid "Operating System" msgstr "İşletim Sistemi" #: modules/computer.c:98 msgid "Security" msgstr "Güvenlik" #: modules/computer.c:99 modules/devices/gpu.c:211 modules/devices/pci.c:150 msgid "Kernel Modules" msgstr "Çekirdek Modülleri" #: modules/computer.c:100 modules/computer.c:741 msgid "Boots" msgstr "Açılış" #: modules/computer.c:101 msgid "Languages" msgstr "Diller" #: modules/computer.c:102 msgid "Memory Usage" msgstr "Hafıza Kullanımı" #: modules/computer.c:103 msgid "Filesystems" msgstr "Dosya Sistemleri" #: modules/computer.c:104 modules/computer.c:590 msgid "Display" msgstr "Ekran" #: modules/computer.c:105 modules/computer/environment.c:37 msgid "Environment Variables" msgstr "Ortam Değişkenleri" #: modules/computer.c:107 modules/computer.c:109 msgid "Development" msgstr "Geliştirme" #: modules/computer.c:111 modules/computer.c:884 msgid "Users" msgstr "Kullanıcılar" #: modules/computer.c:112 msgid "Groups" msgstr "Gruplar" #: modules/computer.c:142 #, c-format msgid "%dMB (%dMB used)" msgstr "%dMB (%dMB kullanılan)" #: modules/computer.c:144 modules/computer.c:646 msgid "Uptime" msgstr "Çalışma Süresi" #: modules/computer.c:146 modules/computer.c:587 msgid "Date/Time" msgstr "Tarih/Saat" #: modules/computer.c:151 modules/computer.c:647 msgid "Load Average" msgstr "Yük Ortalaması" #: modules/computer.c:266 msgid "Scripting Languages" msgstr "Komut Oluşturma Dilleri" #: modules/computer.c:267 msgid "Gambas3 (gbr3)" msgstr "Gambas3 (gbr3)" #: modules/computer.c:268 msgid "Python (default)" msgstr "Python (varsayılan)" #: modules/computer.c:269 msgid "Python2" msgstr "Python2" #: modules/computer.c:270 msgid "Python3" msgstr "Python3" #: modules/computer.c:271 msgid "Perl" msgstr "Perl" #: modules/computer.c:272 msgid "Rakudo (Perl6)" msgstr "" #: modules/computer.c:273 msgid "PHP" msgstr "PHP" #: modules/computer.c:274 msgid "Ruby" msgstr "Ruby" #: modules/computer.c:275 msgid "Bash" msgstr "Bash" #: modules/computer.c:276 msgid "JavaScript (Node.js)" msgstr "JavaScript (Node.js)" #: modules/computer.c:277 msgid "awk" msgstr "awk" #: modules/computer.c:278 msgid "Compilers" msgstr "Derleyiciler" #: modules/computer.c:279 msgid "C (GCC)" msgstr "C (GCC)" #: modules/computer.c:280 msgid "C (Clang)" msgstr "C (Clang)" #: modules/computer.c:281 msgid "D (dmd)" msgstr "D (dmd)" #: modules/computer.c:282 msgid "Gambas3 (gbc3)" msgstr "Gambas3 (gbc3)" #: modules/computer.c:283 msgid "Java" msgstr "Java" #: modules/computer.c:284 msgid ".NET" msgstr "" #: modules/computer.c:285 msgid "Vala" msgstr "Vala" #: modules/computer.c:286 msgid "Haskell (GHC)" msgstr "Haskell (GHC)" #: modules/computer.c:287 msgid "FreePascal" msgstr "FreePascal" #: modules/computer.c:288 msgid "Go" msgstr "Go" #: modules/computer.c:289 msgid "Rust" msgstr "Rust" #: modules/computer.c:290 msgid "Tools" msgstr "Araçlar" #: modules/computer.c:291 msgid "make" msgstr "make" #: modules/computer.c:292 msgid "ninja" msgstr "ninja" #: modules/computer.c:293 msgid "GDB" msgstr "GDB" #: modules/computer.c:294 msgid "LLDB" msgstr "LLDB" #: modules/computer.c:295 msgid "strace" msgstr "strace" #: modules/computer.c:296 msgid "valgrind" msgstr "valgrind" #: modules/computer.c:297 msgid "QMake" msgstr "QMake" #: modules/computer.c:298 msgid "CMake" msgstr "CMake" #: modules/computer.c:299 msgid "Gambas3 IDE" msgstr "Gambas3 IDE" #: modules/computer.c:300 msgid "Radare2" msgstr "Radare2" #: modules/computer.c:301 msgid "ltrace" msgstr "izleme" #: modules/computer.c:302 msgid "Powershell" msgstr "Powershell" #: modules/computer.c:343 msgid "Not found" msgstr "Bulunamadı" #: modules/computer.c:348 #, c-format msgid "Detecting version: %s" msgstr "Sürüm algılanıyor: %s" #: modules/computer.c:366 msgid "Program" msgstr "Uygulama" #: modules/computer.c:366 modules/computer.c:629 modules/computer.c:631 #: modules/computer.c:807 modules/computer/modules.c:372 #: modules/devices/dmi.c:41 modules/devices/dmi.c:47 modules/devices/dmi.c:51 #: modules/devices/dmi.c:57 modules/devices/firmware.c:75 #: modules/devices/inputdevices.c:146 modules/devices/monitors.c:409 msgid "Version" msgstr "Sürüm" #: modules/computer.c:385 msgid "Field" msgstr "Alan" #: modules/computer.c:385 modules/computer.c:730 modules/computer/modules.c:370 #: modules/computer/modules.c:371 modules/devices/arm/processor.c:479 msgid "Description" msgstr "Tanım" #: modules/computer.c:385 modules/devices.c:841 msgid "Value" msgstr "Değer" #: modules/computer.c:402 modules/computer.c:404 msgid "Single-board computer" msgstr "Tek kartlı bilgisayar" #: modules/computer.c:455 modules/computer.c:457 msgid "Unknown physical machine type" msgstr "Bilinmeyen fiziksel makine türü" #: modules/computer.c:479 modules/computer.c:480 modules/computer.c:527 #: modules/computer.c:529 msgid "Virtual (VMware)" msgstr "Sanal (VMware)" #: modules/computer.c:482 modules/computer.c:483 modules/computer.c:484 #: modules/computer.c:485 msgid "Virtual (QEMU)" msgstr "Sanal (QEMU)" #: modules/computer.c:487 modules/computer.c:488 msgid "Virtual (Unknown)" msgstr "Sanal (Bilinmeyen)" #: modules/computer.c:490 modules/computer.c:491 modules/computer.c:492 #: modules/computer.c:520 modules/computer.c:522 msgid "Virtual (VirtualBox)" msgstr "Sanal (VirtualBox)" #: modules/computer.c:494 modules/computer.c:495 modules/computer.c:496 #: modules/computer.c:511 modules/computer.c:513 msgid "Virtual (Xen)" msgstr "Sanal (Xen)" #: modules/computer.c:498 msgid "Virtual (hypervisor present)" msgstr "Sanal (hiper yönetici mevcut)" #: modules/computer.c:579 modules/computer.c:1097 msgid "Computer" msgstr "Bilgisayar" #: modules/computer.c:586 modules/computer.c:640 msgid "User Name" msgstr "Kullanıcı Adı" #: modules/computer.c:591 msgid "Resolution" msgstr "Çözünürlük" #: modules/computer.c:591 modules/computer.c:812 #, c-format msgid "%dx%d pixels" msgstr "%dx%d piksel" #: modules/computer.c:593 msgid "Display Adapter" msgstr "Görüntü Bağdaştırıcısı" #: modules/computer.c:596 msgid "Session Display Server" msgstr "Oturum Görüntüleme Sunucusu" #: modules/computer.c:601 modules/devices.c:108 msgid "Input Devices" msgstr "Giriş Aygıtları" #: modules/computer.c:629 msgid "Kernel" msgstr "Çekirdek" #: modules/computer.c:630 msgid "Command Line" msgstr "Komut Satırı" #: modules/computer.c:632 msgid "C Library" msgstr "C Kütüphanesi" #: modules/computer.c:633 msgid "Distribution" msgstr "Dağıtım" #: modules/computer.c:638 msgid "Current Session" msgstr "Mevcut Oturum" #: modules/computer.c:639 msgid "Computer Name" msgstr "Bilgisayar Adı" #: modules/computer.c:641 modules/computer/languages.c:99 msgid "Language" msgstr "Dil" #: modules/computer.c:642 modules/computer/users.c:53 msgid "Home Directory" msgstr "Ev Dizini" #: modules/computer.c:643 msgid "Desktop Environment" msgstr "Masaüstü Ortamı" #: modules/computer.c:646 msgid "Misc" msgstr "Çeşitli" #: modules/computer.c:660 msgid "HardInfo2" msgstr "HardInfo2" #: modules/computer.c:661 msgid "HardInfo2 running as" msgstr "HardInfo2 çalışıyor" #: modules/computer.c:662 msgid "Superuser" msgstr "Yetkili Kullanıcı" #: modules/computer.c:662 msgid "User" msgstr "Kullanıcı" #: modules/computer.c:666 msgid "Health" msgstr "Sağlık" #: modules/computer.c:668 msgid "Available entropy in /dev/random" msgstr "/dev/random'da mevcut entropi" #: modules/computer.c:672 msgid "Hardening Features" msgstr "Sertleştirme Özellikleri" #: modules/computer.c:673 msgid "ASLR" msgstr "ASLR" #: modules/computer.c:674 msgid "dmesg" msgstr "dmesg" #: modules/computer.c:678 msgid "Linux Security Modules" msgstr "Linux Güvenlik Modülleri" #: modules/computer.c:679 msgid "Modules available" msgstr "Mevcut Modüller" #: modules/computer.c:680 msgid "SELinux status" msgstr "SELinux durumu" #: modules/computer.c:686 msgid "CPU Vulnerabilities" msgstr "CPU Güvenlik Açıkları" #: modules/computer.c:727 msgid "Loaded Modules" msgstr "Yüklü Modüller" #: modules/computer.c:729 modules/computer.c:757 modules/computer.c:897 #: modules/computer/languages.c:95 modules/computer/modules.c:370 #: modules/devices/arm/processor.c:478 modules/devices/dmi.c:38 #: modules/devices/dmi.c:49 modules/devices/e2k/processor.c:358 #: modules/devices/gpu.c:301 modules/devices/ia64/processor.c:160 #: modules/devices/inputdevices.c:141 modules/devices/monitors.c:403 #: modules/devices/monitors.c:505 modules/devices/sh/processor.c:84 #: modules/devices/x86/processor.c:750 modules/network.c:333 msgid "Name" msgstr "İsim" #: modules/computer.c:743 msgid "Date & Time" msgstr "Tarih & Zaman" #: modules/computer.c:744 msgid "Kernel Version" msgstr "Çekirdek Sürümü" #: modules/computer.c:754 msgid "Available Languages" msgstr "Mevcut Diller" #: modules/computer.c:756 msgid "Language Code" msgstr "Dil Kodu" #: modules/computer.c:768 msgid "Mounted File Systems" msgstr "Bağlı Dosya Sistemleri" #: modules/computer.c:770 modules/computer/filesystem.c:89 msgid "Mount Point" msgstr "Bağlantı Noktası" #: modules/computer.c:771 msgid "Usage" msgstr "Kullanım" #: modules/computer.c:772 modules/devices.c:865 modules/devices.c:879 #: modules/devices/e2k/processor.c:416 modules/devices/gpu.c:85 #: modules/devices/gpu.c:93 modules/devices/gpu.c:293 modules/devices/pci.c:102 #: modules/devices/pci.c:110 modules/devices/pci.c:154 #: modules/devices/storage.c:48 modules/devices/storage.c:57 #: modules/devices/usb.c:172 modules/devices/usb.c:184 #: modules/devices/x86/processor.c:811 msgid "Device" msgstr "Aygıt" #: modules/computer.c:795 msgid "Session" msgstr "Oturum" #: modules/computer.c:796 modules/devices.c:842 modules/devices.c:879 #: modules/devices/dmi.c:56 modules/devices/dmi_memory.c:729 #: modules/devices/inputdevices.c:142 modules/devices/spd-decode.c:1377 #: modules/devices/x86/processor.c:715 msgid "Type" msgstr "Tür" #: modules/computer.c:799 msgid "Wayland" msgstr "Wayland" #: modules/computer.c:800 modules/computer.c:805 msgid "Current Display Name" msgstr "Mevcut Görünen Ad" #: modules/computer.c:804 msgid "X Server" msgstr "X Sunucusu" #: modules/computer.c:806 modules/computer.c:846 modules/computer.c:869 #: modules/devices.c:879 modules/devices/dmi.c:40 modules/devices/dmi.c:46 #: modules/devices/dmi.c:50 modules/devices/dmi.c:55 #: modules/devices/dmi_memory.c:730 modules/devices/dmi_memory.c:873 #: modules/devices/e2k/processor.c:359 modules/devices/firmware.c:75 #: modules/devices/firmware.c:167 modules/devices/firmware.c:172 #: modules/devices/firmware.c:219 modules/devices/gpu.c:84 #: modules/devices/gpu.c:92 modules/devices/gpu.c:292 #: modules/devices/ia64/processor.c:161 modules/devices/inputdevices.c:144 #: modules/devices/monitors.c:402 modules/devices/pci.c:101 #: modules/devices/pci.c:109 modules/devices/storage.c:47 #: modules/devices/storage.c:56 modules/devices/storage.c:282 #: modules/devices/storage.c:572 modules/devices/storage.c:777 #: modules/devices/usb.c:171 modules/devices/x86/processor.c:654 msgid "Vendor" msgstr "Satıcı" #: modules/computer.c:808 msgid "Release Number" msgstr "Sürüm No" #: modules/computer.c:816 msgid "Screens" msgstr "Ekranlar" #: modules/computer.c:822 msgid "Disconnected" msgstr "Bağlantı Kesildi" #: modules/computer.c:825 msgid "Connected" msgstr "Bağlandı" #: modules/computer.c:833 msgid "Unused" msgstr "Kullanılmıyor" #: modules/computer.c:834 #, c-format msgid "%dx%d pixels, offset (%d, %d)" msgstr "%dx%d piksel, uzaklık (%d, %d)" #: modules/computer.c:843 msgid "Outputs (XRandR)" msgstr "Çıkışlar (XRandR)" #: modules/computer.c:845 msgid "OpenGL (GLX)" msgstr "OpenGL (GLX)" #: modules/computer.c:847 msgid "Renderer" msgstr "Oluşturucu" #: modules/computer.c:848 msgid "Direct Rendering" msgstr "Doğrudan İşleme" #: modules/computer.c:849 modules/computer/modules.c:352 #: modules/computer/modules.c:353 modules/devices/inputdevices.c:153 #: modules/devices/printers.c:145 modules/devices/spd-decode.c:888 #: modules/devices/spd-decode.c:1100 msgid "Yes" msgstr "Evet" #: modules/computer.c:849 modules/computer/modules.c:352 #: modules/computer/modules.c:353 modules/devices/printers.c:145 #: modules/devices/spd-decode.c:886 modules/devices/spd-decode.c:1097 msgid "No" msgstr "Hayır" #: modules/computer.c:850 msgid "Version (Compatibility)" msgstr "Sürüm (Uyumluluk)" #: modules/computer.c:851 msgid "Shading Language Version (Compatibility)" msgstr "Gölgelendirme Dili Sürümü (Uyumluluk)" #: modules/computer.c:852 msgid "Version (Core)" msgstr "Sürüm (Çekirdek)" #: modules/computer.c:853 msgid "Shading Language Version (Core)" msgstr "Gölgelendirme Dili Sürümü (Çekirdek)" #: modules/computer.c:854 msgid "Version (ES)" msgstr "Sürüm (ES)" #: modules/computer.c:855 msgid "Shading Language Version (ES)" msgstr "Gölgeleme Dili Sürümü (ES)" #: modules/computer.c:856 msgid "GLX Version" msgstr "GLX Sürümü" #: modules/computer.c:864 msgid "Vulkan" msgstr "" #: modules/computer.c:865 msgid "Instance Version" msgstr "" #: modules/computer.c:867 msgid "Api Version" msgstr "" #: modules/computer.c:868 msgid "Driver Version" msgstr "" #: modules/computer.c:870 msgid "Device Type" msgstr "" #: modules/computer.c:871 msgid "Device Name" msgstr "" #: modules/computer.c:872 msgid "Driver Name" msgstr "" #: modules/computer.c:873 msgid "Driver Info" msgstr "" #: modules/computer.c:874 msgid "Conformance Version" msgstr "" #: modules/computer.c:895 msgid "Group" msgstr "Grup" #: modules/computer.c:898 modules/computer/users.c:52 msgid "Group ID" msgstr "Grup ID" #: modules/computer.c:1037 #, c-format msgid "%0.1f %s available to Linux" msgstr "Linux için %0.1f%s kullanılabilir" #: modules/computer.c:1039 modules/devices/dmi_memory.c:637 #: modules/devices/dmi_memory.c:647 modules/devices/dmi_memory.c:789 #: modules/devices/dmi_memory.c:918 modules/devices/spd-decode.c:1352 msgid "GiB" msgstr "GB" #: modules/computer.c:1043 modules/computer/memory_usage.c:73 #: modules/computer/modules.c:370 msgid "KiB" msgstr "KB" #: modules/computer.c:1116 modules/devices/devicetree/pmac_data.c:82 msgid "Motherboard" msgstr "Anakart" #: modules/computer.c:1144 msgid "Graphics" msgstr "Ekran Kartı" #: modules/computer.c:1145 modules/devices.c:105 msgid "Printers" msgstr "Yazıcılar" #: modules/computer.c:1145 msgid "Audio" msgstr "Ses" #: modules/computer.c:1194 msgid "Gathers high-level computer information" msgstr "Üst düzey bilgisayar bilgilerini toplar" #: modules/computer.c:1205 msgid "lsmod is required." msgstr "lsmod gerekli." #: modules/computer.c:1213 msgid "" "X.org's xrandr utility provides additional details when " "available." msgstr "" "X.org xrandr yardımcı programı, var olduğunda ek ayrıntılar " "sağlar." #: modules/computer.c:1214 msgid "" "Mesa's glxinfo utility is required for OpenGL information." msgstr "Mesa glxinfo OpenGL bilgisi için gerekli." #: modules/computer.c:1215 msgid "" "Vulkan's vulkaninfo utility is required for Vulkan information." msgstr "" #: modules/computer/filesystem.c:87 msgid "Filesystem" msgstr "Dosya Sistemi" #: modules/computer/filesystem.c:88 msgid "Mounted As" msgstr "Olarak Bağlandı" #: modules/computer/filesystem.c:88 msgid "Read-Write" msgstr "Okuma-Yazma" #: modules/computer/filesystem.c:88 msgid "Read-Only" msgstr "Salt Okunur" #: modules/computer/filesystem.c:90 modules/devices.c:865 #: modules/devices/dmi_memory.c:733 modules/devices/dmi_memory.c:766 #: modules/devices/dmi_memory.c:805 modules/devices/dmi_memory.c:872 #: modules/devices/spd-decode.c:1384 msgid "Size" msgstr "Boyut" #: modules/computer/filesystem.c:91 msgid "Used" msgstr "Kullanılan" #: modules/computer/filesystem.c:92 msgid "Available" msgstr "Uygulanabilir" #: modules/computer/languages.c:94 msgid "Locale Information" msgstr "Yerel Bilgisi" #: modules/computer/languages.c:96 modules/devices/gpu.c:266 #: modules/devices/spd-decode.c:1373 msgid "Source" msgstr "Kaynak" #: modules/computer/languages.c:97 msgid "Address" msgstr "Adres" #: modules/computer/languages.c:98 msgid "E-mail" msgstr "E-Posta" #: modules/computer/languages.c:100 msgid "Territory" msgstr "Bölge" #: modules/computer/languages.c:102 modules/devices/dmi.c:45 msgid "Date" msgstr "Tarih" #: modules/computer/languages.c:103 msgid "Codeset" msgstr "Kod seti" #: modules/computer/loadavg.c:64 msgid "Couldn't obtain load average" msgstr "Yük ortalaması alınamadı" #: modules/computer/memory_usage.c:131 msgid "Total physical memory usable by the system" msgstr "" #: modules/computer/memory_usage.c:132 msgid "Free memory which is not used for anything" msgstr "" #: modules/computer/memory_usage.c:133 msgid "Virtual memory, total swap space available" msgstr "" #: modules/computer/memory_usage.c:134 msgid "Virtual memory, remaining swap space available" msgstr "" #: modules/computer/memory_usage.c:135 msgid "Memory present within main memory and in the swapfile" msgstr "" #: modules/computer/memory_usage.c:136 msgid "HighTotal value can vary based on the type of kernel used" msgstr "" #: modules/computer/memory_usage.c:137 msgid "Amount of memory that is not directly mapped into kernel space" msgstr "" #: modules/computer/memory_usage.c:138 msgid "LowTotal value can vary based on the type of kernel used" msgstr "" #: modules/computer/memory_usage.c:139 msgid "Total and free memory directly mapped into kernel space" msgstr "" #: modules/computer/memory_usage.c:140 msgid "Available memory for allocation to any process, without swapping" msgstr "" #: modules/computer/memory_usage.c:141 msgid "Memory in buffer cache, temporary storage for raw disk blocks" msgstr "" #: modules/computer/memory_usage.c:142 msgid "Memory in the page cache (diskcache, shared memory, tmpfs and shmem)" msgstr "" #: modules/computer/memory_usage.c:143 msgid "Memory used more recently and not swapped out or reclaimed" msgstr "" #: modules/computer/memory_usage.c:144 msgid "Memory not been used recently and can be swapped out or reclaimed" msgstr "" #: modules/computer/memory_usage.c:145 msgid "Anonymous memory used more recently and not swapped out" msgstr "" #: modules/computer/memory_usage.c:146 msgid "Anonymous memory not been used and can be swapped out" msgstr "" #: modules/computer/memory_usage.c:147 msgid "Pagecache memory been used more recently and not reclaimed" msgstr "" #: modules/computer/memory_usage.c:148 msgid "Pagecache memory reclaimable without huge performance impact" msgstr "" #: modules/computer/memory_usage.c:149 msgid "Unevictable pages can't be swapped out for a variety of reasons" msgstr "" #: modules/computer/memory_usage.c:150 msgid "Pages locked to memory using the mlock() system call" msgstr "" #: modules/computer/memory_usage.c:151 msgid "Memory consumed by the zswap backend (compressed size)" msgstr "" #: modules/computer/memory_usage.c:152 msgid "Amount of anonymous memory stored in zswap (original size)" msgstr "" #: modules/computer/memory_usage.c:153 msgid "Memory waiting to be written back to disk" msgstr "" #: modules/computer/memory_usage.c:154 msgid "Memory which is actively being written back to disk" msgstr "" #: modules/computer/memory_usage.c:155 msgid "Non-file backed pages mapped into userspace page tables" msgstr "" #: modules/computer/memory_usage.c:156 msgid "Files which have been mmapped, such as libraries" msgstr "" #: modules/computer/memory_usage.c:157 msgid "Total memory used by shared memory (shmem) and tmpfs" msgstr "" #: modules/computer/memory_usage.c:158 msgid "Kernel allocations reclaimable under memory pressure" msgstr "" #: modules/computer/memory_usage.c:159 msgid "In-kernel data structures cache" msgstr "" #: modules/computer/memory_usage.c:160 msgid "Part of Slab, that might be reclaimed, such as caches" msgstr "" #: modules/computer/memory_usage.c:161 msgid "Part of Slab, that cannot be reclaimed on memory pressure" msgstr "" #: modules/computer/memory_usage.c:162 msgid "Memory consumed by the kernel stacks of all tasks" msgstr "" #: modules/computer/memory_usage.c:163 msgid "Memory consumed by userspace page tables" msgstr "" #: modules/computer/memory_usage.c:164 msgid "Memory consumed by secondary page tables" msgstr "" #: modules/computer/memory_usage.c:165 msgid "Previous counted pages which had been written to the server" msgstr "" #: modules/computer/memory_usage.c:166 msgid "Memory used for block device bounce buffers" msgstr "" #: modules/computer/memory_usage.c:167 msgid "Memory used by FUSE for temporary writeback buffers" msgstr "" #: modules/computer/memory_usage.c:168 msgid "Total memory currently available to be allocated on the system" msgstr "" #: modules/computer/memory_usage.c:169 msgid "The amount of memory presently allocated on the system" msgstr "" #: modules/computer/memory_usage.c:170 msgid "Total size of vmalloc virtual address space" msgstr "" #: modules/computer/memory_usage.c:171 msgid "Amount of vmalloc area which is used" msgstr "" #: modules/computer/memory_usage.c:172 msgid "Largest contiguous block of vmalloc area which is free" msgstr "" #: modules/computer/memory_usage.c:173 msgid "Memory allocated to the percpu allocator" msgstr "" #: modules/computer/memory_usage.c:174 msgid "Amount of memory the kernel identifies as corrupted" msgstr "" #: modules/computer/memory_usage.c:175 msgid "Non-file backed huge pages mapped into userspace page tables" msgstr "" #: modules/computer/memory_usage.c:176 msgid "Memory used by shmem and tmpfs allocated with huge pages" msgstr "" #: modules/computer/memory_usage.c:177 msgid "Shared memory mapped into userspace with huge pages" msgstr "" #: modules/computer/memory_usage.c:178 msgid "Memory used for fs data (page cache) allocated with huge pages" msgstr "" #: modules/computer/memory_usage.c:179 msgid "Page cache mapped into userspace with huge pages" msgstr "" #: modules/computer/memory_usage.c:180 msgid "Memory reserved for the Contiguous Memory Allocator (CMA)" msgstr "" #: modules/computer/memory_usage.c:181 msgid "Free remaining memory in the CMA reserves" msgstr "" #: modules/computer/memory_usage.c:182 msgid "Amount of unaccepted memory usable by the kernel" msgstr "" #: modules/computer/memory_usage.c:183 msgid "Size of the pool of huge pages" msgstr "" #: modules/computer/memory_usage.c:184 msgid "Number of huge pages available" msgstr "" #: modules/computer/memory_usage.c:185 msgid "Number of huge pages reserved" msgstr "" #: modules/computer/memory_usage.c:186 msgid "Number of huge pages surplus" msgstr "" #: modules/computer/memory_usage.c:187 msgid "Huge page size, used in conjunction with hugepages parameter" msgstr "" #: modules/computer/memory_usage.c:188 msgid "Total amount of memory consumed by huge pages of all sizes" msgstr "" #: modules/computer/memory_usage.c:189 msgid "Breakdown of page table sizes of 4k size" msgstr "" #: modules/computer/memory_usage.c:190 msgid "Breakdown of page table sizes of 2M size" msgstr "" #: modules/computer/memory_usage.c:191 msgid "Breakdown of page table sizes of 1G size" msgstr "" #: modules/computer/modules.c:168 msgid "Update kernel module icon table" msgstr "" #: modules/computer/modules.c:338 modules/computer/modules.c:339 #: modules/computer/modules.c:340 modules/computer/modules.c:341 #: modules/computer/modules.c:342 modules/computer/modules.c:343 #: modules/devices/dmi.c:117 modules/devices/firmware.c:245 #: modules/devices/x86/processor.c:694 msgid "(Not available)" msgstr "(Mevcut değil)" #: modules/computer/modules.c:369 msgid "Module Information" msgstr "Modül Bilgisi" #: modules/computer/modules.c:369 modules/devices/gpu.c:298 msgid "Path" msgstr "Yol" #: modules/computer/modules.c:369 msgid "Used Memory" msgstr "Kullanılan Hafıza" #: modules/computer/modules.c:371 msgid "Version Magic" msgstr "Sürüm Büyü" #: modules/computer/modules.c:372 msgid "In Linus' Tree" msgstr "Linus'un Ağacında" #: modules/computer/modules.c:373 msgid "Retpoline Enabled" msgstr "Retpoline Etkin" #: modules/computer/modules.c:373 msgid "Copyright" msgstr "Telif" #: modules/computer/modules.c:373 msgid "Author" msgstr "Yazar" #: modules/computer/modules.c:374 msgid "License" msgstr "Lisans" #: modules/computer/modules.c:380 msgid "Dependencies" msgstr "Bağımlılıklar" #: modules/computer/os.c:153 modules/computer/os.c:154 #: modules/computer/os.c:155 modules/computer/os.c:156 msgid "GNU C Library" msgstr "GNU C Kütüphanesi" #: modules/computer/os.c:157 msgid "uClibc or uClibc-ng" msgstr "uClibc veya uClibc-ng" #: modules/computer/os.c:158 msgid "diet libc" msgstr "diet libc" #: modules/computer/os.c:229 modules/computer/os.c:232 msgid "GNOME Shell " msgstr "GNOME Shell " #: modules/computer/os.c:240 modules/computer/os.c:243 msgid "Version: " msgstr "Sürüm: " #: modules/computer/os.c:261 modules/computer/os.c:264 msgid "MATE Desktop Environment " msgstr "MATE Masaüstü Ortamı " #: modules/computer/os.c:297 #, c-format msgid "Unknown (Window Manager: %s)" msgstr "Bilinmeyen (Pencere Yöneticisi: %s)" #. !/{desktop environment} on {session type} #: modules/computer/os.c:308 #, c-format msgid "%s on %s" msgstr "%s de %s" #: modules/computer/os.c:376 msgid "Terminal" msgstr "Uçbirim" #: modules/computer/os.c:392 msgid "User access allowed" msgstr "Kullanıcı erişimine izin verildi" #: modules/computer/os.c:394 msgid "User access forbidden" msgstr "Kullanıcı erişimi yasak" #: modules/computer/os.c:396 msgid "Access allowed (running as superuser)" msgstr "Erişime izin verildi (süper kullanıcı olarak çalışıyor)" #: modules/computer/os.c:398 msgid "Access forbidden? (running as superuser)" msgstr "Erişim Yasaklandı? (süper kullanıcı olarak çalışıyor)" #: modules/computer/os.c:407 modules/computer/os.c:793 msgid "Disabled" msgstr "Devre dışı" #: modules/computer/os.c:409 msgid "Partially enabled (mmap base+stack+VDSO base)" msgstr "Kısmen etkin (mmap tabanı+yığın+VDSO tabanı)" #: modules/computer/os.c:411 msgid "Fully enabled (mmap base+stack+VDSO base+heap)" msgstr "Tamamen etkin (mmap tabanı+yığın+VDSO tabanı+yığın)" #. !/bits of entropy for rng (0) #: modules/computer/os.c:420 msgid "(None or not available)" msgstr "(Yok veya uygun değil)" #. !/bits of entropy for rng (low/poor value) #: modules/computer/os.c:421 #, c-format msgid "%d bits (low)" msgstr "%d bit (düşük)" #. !/bits of entropy for rng (medium value) #: modules/computer/os.c:422 #, c-format msgid "%d bits (medium)" msgstr "%d bit (orta)" #. !/bits of entropy for rng (high/good value) #: modules/computer/os.c:423 #, c-format msgid "%d bits (healthy)" msgstr "%d bit (yüksek)" #: modules/computer/os.c:788 msgid "Not installed" msgstr "Kurulu değil" #: modules/computer/os.c:791 msgid "Enabled" msgstr "Aktif" #: modules/computer/users.c:50 msgid "User Information" msgstr "Kullanıcı Bilgisi" #: modules/computer/users.c:51 msgid "User ID" msgstr "Kullanıcı Kimliği" #: modules/computer/users.c:54 msgid "Default Shell" msgstr "Varsayılan Shell" #: modules/devices/alpha/processor.c:88 modules/devices.c:865 #: modules/devices/devicetree.c:162 modules/devices/devicetree.c:208 #: modules/devices/devicetree/pmac_data.c:80 #: modules/devices/e2k/processor.c:361 modules/devices/e2k/processor.c:416 #: modules/devices/gpu.c:116 modules/devices/ia64/processor.c:165 #: modules/devices/loongarch64/processor.c:96 #: modules/devices/m68k/processor.c:84 modules/devices/mips/processor.c:75 #: modules/devices/monitors.c:404 modules/devices/parisc/processor.c:155 #: modules/devices/ppc/processor.c:158 modules/devices/riscv/processor.c:242 #: modules/devices/s390/processor.c:132 modules/devices/x86/processor.c:811 msgid "Model" msgstr "Model" #: modules/devices/alpha/processor.c:89 msgid "Platform String" msgstr "Platform Stringi" #: modules/devices/alpha/processor.c:90 modules/devices/arm/processor.c:344 #: modules/devices/e2k/processor.c:363 modules/devices/e2k/processor.c:416 #: modules/devices/ia64/processor.c:167 #: modules/devices/loongarch64/processor.c:98 #: modules/devices/m68k/processor.c:87 modules/devices/mips/processor.c:77 #: modules/devices/parisc/processor.c:158 modules/devices/ppc/processor.c:160 #: modules/devices/riscv/processor.c:246 modules/devices/sh/processor.c:87 #: modules/devices/x86/processor.c:658 modules/devices/x86/processor.c:811 msgid "Frequency" msgstr "Frekans" #: modules/devices/alpha/processor.c:91 modules/devices/arm/processor.c:345 #: modules/devices/e2k/processor.c:364 modules/devices/ia64/processor.c:168 #: modules/devices/m68k/processor.c:88 modules/devices/mips/processor.c:78 #: modules/devices/parisc/processor.c:159 modules/devices/ppc/processor.c:161 #: modules/devices/s390/processor.c:134 modules/devices/sh/processor.c:90 #: modules/devices/x86/processor.c:659 msgid "BogoMips" msgstr "BogoMips" #: modules/devices/alpha/processor.c:92 modules/devices/arm/processor.c:346 #: modules/devices/e2k/processor.c:365 modules/devices/ia64/processor.c:169 #: modules/devices/loongarch64/processor.c:101 #: modules/devices/m68k/processor.c:89 modules/devices/mips/processor.c:79 #: modules/devices/parisc/processor.c:160 modules/devices/ppc/processor.c:162 #: modules/devices/riscv/processor.c:247 modules/devices/s390/processor.c:135 #: modules/devices/sh/processor.c:91 modules/devices/sparc/processor.c:77 #: modules/devices/x86/processor.c:660 msgid "Byte Order" msgstr "Bayt Sırası" #. !/flag:swp #: modules/devices/arm/arm_data.c:42 msgctxt "arm-flag" msgid "SWP instruction (atomic read-modify-write)" msgstr "SWP talimatı (atomik okuma-değiştirme-yazma)" #. !/flag:half #: modules/devices/arm/arm_data.c:43 msgctxt "arm-flag" msgid "Half-word loads and stores" msgstr "Yarım kelime yüklemeleri ve depolar" #. !/flag:thumb #: modules/devices/arm/arm_data.c:44 msgctxt "arm-flag" msgid "Thumb (16-bit instruction set)" msgstr "Başparmak (16 bit komut seti)" #. !/flag:26bit #: modules/devices/arm/arm_data.c:45 msgctxt "arm-flag" msgid "26-Bit Model (Processor status register folded into program counter)" msgstr "26 Bit Modeli (İşlemci durum kaydı program sayacına katlanmış)" #. !/flag:fastmult #: modules/devices/arm/arm_data.c:46 msgctxt "arm-flag" msgid "32x32->64-bit multiplication" msgstr "32x32-> 64-bit çarpma" #. !/flag:fpa #: modules/devices/arm/arm_data.c:47 msgctxt "arm-flag" msgid "Floating point accelerator" msgstr "Kayan nokta hızlandırıcı" #. !/flag:vfp #: modules/devices/arm/arm_data.c:48 msgctxt "arm-flag" msgid "VFP (early SIMD vector floating point instructions)" msgstr "VFP (erken SIMD vektör kayan nokta talimatları)" #. !/flag:edsp #: modules/devices/arm/arm_data.c:49 msgctxt "arm-flag" msgid "DSP extensions (the 'e' variant of the ARM9 CPUs, and all others above)" msgstr "DSP uzantıları (ARM9 CPU'ların 'e' çeşidi ve yukarıdakilerin tümü)" #. !/flag:java #: modules/devices/arm/arm_data.c:50 msgctxt "arm-flag" msgid "Jazelle (Java bytecode accelerator)" msgstr "Jazelle (Java bayt kodu hızlandırıcı)" #. !/flag:iwmmxt #: modules/devices/arm/arm_data.c:51 msgctxt "arm-flag" msgid "SIMD instructions similar to Intel MMX" msgstr "Intel MMX'e benzer SIMD talimatları" #. !/flag:crunch #: modules/devices/arm/arm_data.c:52 msgctxt "arm-flag" msgid "MaverickCrunch coprocessor (if kernel support enabled)" msgstr "MaverickCrunch yardımcı işlemcisi (çekirdek desteği etkinse)" #. !/flag:thumbee #: modules/devices/arm/arm_data.c:53 msgctxt "arm-flag" msgid "ThumbEE" msgstr "ThumbEE" #. !/flag:neon #: modules/devices/arm/arm_data.c:54 msgctxt "arm-flag" msgid "Advanced SIMD/NEON on AArch32" msgstr "AArch32'de gelişmiş SIMD / NEON" #. !/flag:evtstrm #: modules/devices/arm/arm_data.c:55 msgctxt "arm-flag" msgid "Kernel event stream using generic architected timer" msgstr "Genel mimarili zamanlayıcı kullanan çekirdek olay akışı" #. !/flag:vfpv3 #: modules/devices/arm/arm_data.c:56 msgctxt "arm-flag" msgid "VFP version 3" msgstr "VFP sürüm 3" #. !/flag:vfpv3d16 #: modules/devices/arm/arm_data.c:57 msgctxt "arm-flag" msgid "VFP version 3 with 16 D-registers" msgstr "16 D-yazmaçlı VFP sürüm 3" #. !/flag:vfpv4 #: modules/devices/arm/arm_data.c:58 msgctxt "arm-flag" msgid "VFP version 4 with fast context switching" msgstr "Hızlı içerik değiştirme özelliğine sahip VFP sürüm 4" #. !/flag:vfpd32 #: modules/devices/arm/arm_data.c:59 msgctxt "arm-flag" msgid "VFP with 32 D-registers" msgstr "32 D kayıtlı VFP" #. !/flag:tls #: modules/devices/arm/arm_data.c:60 msgctxt "arm-flag" msgid "TLS register" msgstr "TLS kaydı" #. !/flag:idiva #: modules/devices/arm/arm_data.c:61 msgctxt "arm-flag" msgid "SDIV and UDIV hardware division in ARM mode" msgstr "ARM modunda SDIV ve UDIV donanım bölümü" #. !/flag:idivt #: modules/devices/arm/arm_data.c:62 msgctxt "arm-flag" msgid "SDIV and UDIV hardware division in Thumb mode" msgstr "Başparmak modunda SDIV ve UDIV donanım bölümü" #. !/flag:lpae #: modules/devices/arm/arm_data.c:63 msgctxt "arm-flag" msgid "40-bit Large Physical Address Extension" msgstr "40 bit Büyük Fiziksel Adres Uzantısı" #. !/flag:pmull #: modules/devices/arm/arm_data.c:65 msgctxt "arm-flag" msgid "64x64->128-bit F2m multiplication (arch>=8)" msgstr "64x64-> 128-bit F2m çarpma (arch> 8)" #. !/flag:aes #: modules/devices/arm/arm_data.c:66 msgctxt "arm-flag" msgid "Crypto:AES (arch>=8)" msgstr "Kripto: AES (arch> 8)" #. !/flag:sha1 #: modules/devices/arm/arm_data.c:67 msgctxt "arm-flag" msgid "Crypto:SHA1 (arch>=8)" msgstr "Kripto: SHA1 (arch> 8)" #. !/flag:sha2 #: modules/devices/arm/arm_data.c:68 msgctxt "arm-flag" msgid "Crypto:SHA2 (arch>=8)" msgstr "Kripto: SHA2 (arch> 8)" #. !/flag:crc32 #: modules/devices/arm/arm_data.c:69 msgctxt "arm-flag" msgid "CRC32 checksum instructions (arch>=8)" msgstr "CRC32 sağlama toplamı talimatları (arch> 8)" #. !/flag:fp #: modules/devices/arm/arm_data.c:71 msgctxt "arm-flag" msgid "Floating-point on AArch64 (arch>=8)" msgstr "" #. !/flag:asimd #: modules/devices/arm/arm_data.c:72 msgctxt "arm-flag" msgid "Advanced SIMD/NEON on AArch64 (arch>=8)" msgstr "AArch64'te gelişmiş SIMD / NEON (arch> 8)" #. !/flag:atomics #: modules/devices/arm/arm_data.c:73 msgctxt "arm-flag" msgid "Atomic instructions on AArch64 (arch>=8)" msgstr "" #. !/flag:fphp #: modules/devices/arm/arm_data.c:74 msgctxt "arm-flag" msgid "Half precision floating point on AArch64 (arch>=8)" msgstr "" #. !/flag:asimdhp #: modules/devices/arm/arm_data.c:75 msgctxt "arm-flag" msgid "Advanced SIMD with BFloat16 on AArch64 (arch>=8)" msgstr "" #. !/flag:cpuid #: modules/devices/arm/arm_data.c:76 msgctxt "arm-flag" msgid "CPU features can be read on AArch64 (arch>=8)" msgstr "" #. !/flag:asimdrdm #: modules/devices/arm/arm_data.c:77 msgctxt "arm-flag" msgid "Advanced SIMD rounding Double MulAcc on AArch64 (arch>=8)" msgstr "" #. !/flag:jscvt #: modules/devices/arm/arm_data.c:78 msgctxt "arm-flag" msgid "JacaScript conversion on AArch64 (arch>=8)" msgstr "" #. !/flag:fcma #: modules/devices/arm/arm_data.c:79 msgctxt "arm-flag" msgid "Complex number SIMD on AArch64 (arch>=8)" msgstr "" #. !/flag:lrcpc #: modules/devices/arm/arm_data.c:80 msgctxt "arm-flag" msgid "Weak release consistency on AArch64 (arch>=8)" msgstr "" #. !/flag:dcpop #: modules/devices/arm/arm_data.c:81 msgctxt "arm-flag" msgid "Data cache clean to Point of Persistence on AArch64 (arch>=8)" msgstr "" #. !/flag:sha3 #: modules/devices/arm/arm_data.c:82 msgctxt "arm-flag" msgid "SHA-3 instructions on AArch64 (arch>=8)" msgstr "" #. !/flag:sm3 #: modules/devices/arm/arm_data.c:83 msgctxt "arm-flag" msgid "SM3 instructions on AArch64 (arch>=8)" msgstr "" #. !/flag:sm4 #: modules/devices/arm/arm_data.c:84 msgctxt "arm-flag" msgid "SM4 instructions on AArch64 (arch>=8)" msgstr "" #. !/flag:asimddp #: modules/devices/arm/arm_data.c:85 msgctxt "arm-flag" msgid "SIMD Dot Product on AArch64 (arch>=8)" msgstr "" #. !/flag:sha512 #: modules/devices/arm/arm_data.c:86 msgctxt "arm-flag" msgid "SHA512 instructions on AArch64 (arch>=8)" msgstr "" #. !/flag:sve #: modules/devices/arm/arm_data.c:87 msgctxt "arm-flag" msgid "Scalable Vector Extension on AArch64 (arch>=8)" msgstr "" #: modules/devices/arm/processor.c:143 msgid "ARM Processor" msgstr "ARM İşlemci" #: modules/devices/arm/processor.c:214 modules/devices/riscv/processor.c:211 #: modules/devices/x86/processor.c:609 msgid "Empty List" msgstr "Boş Liste" #: modules/devices/arm/processor.c:239 modules/devices/gpu.c:204 #: modules/devices/gpu.c:294 modules/devices/x86/processor.c:267 msgid "Clocks" msgstr "Saat" #: modules/devices/arm/processor.c:285 modules/devices/arm/processor.c:298 #: modules/devices/x86/processor.c:313 modules/devices/x86/processor.c:326 #, c-format msgid "%.2f-%.2f %s=%dx\n" msgstr "%.2f-%.2f %s=%dx\n" #: modules/devices/arm/processor.c:341 msgid "Linux Name" msgstr "Linux Adı" #: modules/devices/arm/processor.c:342 msgid "Decoded Name" msgstr "Kodu Çözülmüş Ad" #: modules/devices/arm/processor.c:343 modules/network/net.c:476 msgid "Mode" msgstr "Mod" #: modules/devices/arm/processor.c:349 msgid "ARM" msgstr "ARM" #: modules/devices/arm/processor.c:350 msgid "Implementer" msgstr "Uygulayıcı" #: modules/devices/arm/processor.c:351 modules/devices/dmi_memory.c:874 msgid "Part" msgstr "Parça" #: modules/devices/arm/processor.c:352 modules/devices/ia64/processor.c:162 #: modules/devices/parisc/processor.c:156 modules/devices/riscv/processor.c:243 msgid "Architecture" msgstr "Mimari" #: modules/devices/arm/processor.c:353 msgid "Variant" msgstr "Versiyon" #: modules/devices/arm/processor.c:355 modules/devices/riscv/processor.c:250 #: modules/devices/sparc/processor.c:78 modules/devices/x86/processor.c:666 msgid "Capabilities" msgstr "Yetenekler" #: modules/devices/arm/processor.c:477 msgid "SOC/Package" msgstr "SOC/Paket" #: modules/devices/arm/processor.c:481 modules/devices/x86/processor.c:752 msgid "Logical CPU Config" msgstr "Mantıksal CPU Yapılandırması" #: modules/devices/arm/processor.c:498 msgid "SOC/Package Information" msgstr "SOC/Paket Bilgileri" #: modules/devices/battery.c:178 #, c-format msgid "" "\n" "[Battery: %s]\n" "State=%s (load: %s)\n" "Capacity=%s / %s (%.2f%%)\n" "Battery Technology=%s (%s)\n" "Manufacturer=%s\n" "Model Number=%s\n" "Serial Number=%s\n" msgstr "" "\n" "[Pil: %s]\n" "Durum=%s (yük: %s)\n" "Kapasite=%s / %s (%%%.2f)\n" "Pil Teknolojisi=%s (%s)\n" "Üretici=%s\n" "Model Numarası=%s\n" "Seri Numarası=%s\n" #: modules/devices/battery.c:257 #, c-format msgid "" "\n" "[AC Power Supply: %s]\n" "Online=%s\n" "AC Power Type=%s\n" msgstr "" #: modules/devices/battery.c:279 #, c-format msgid "" "\n" "[Battery: %s]\n" "State=%s\n" "Capacity=%s / %s\n" "Battery Technology=%s\n" "Manufacturer=%s\n" "Model Number=%s\n" "Serial Number=%s\n" msgstr "" "\n" "[Pil: %s]\n" "Durum=%s\n" "Kapasite=%s /%s\n" "Pil Teknolojisi=%s\n" "Üretici=%s\n" "Model Numarası=%s\n" "Seri Numarası=%s\n" #: modules/devices/battery.c:372 #, c-format msgid "" "\n" "[Battery (APM)]\n" "Charge=%d%%\n" "Remaining Charge=%s of %s\n" "Using=%s\n" "APM driver version=%s\n" "APM BIOS version=%s\n" msgstr "" "\n" "[Pil (APM)]\n" "Şarj = %d%%\n" "Kalan Şarj =%s /%s\n" "Kullanılan=%s\n" "APM sürücü sürümü =%s\n" "APM BIOS sürümü =%s\n" #: modules/devices/battery.c:384 #, c-format msgid "" "\n" "[Battery (APM)]\n" "Charge=%d%%\n" "Using=%s\n" "APM driver version=%s\n" "APM BIOS version=%s\n" msgstr "" "\n" "[Pil (APM)]\n" "Şarj=%d%%\n" "Kullanılan=%s\n" "APM sürücü sürümü =%s\n" "APM BIOS sürümü =%s\n" #: modules/devices/battery.c:413 msgid "" "[No batteries]\n" "No batteries found on this system=\n" msgstr "" "[Pil yok]\n" "Bu sistemde pil bulunamadı =\n" #: modules/devices.c:100 msgid "Graphics Processors" msgstr "Ekran Kartı İşlemcisi" #: modules/devices.c:101 modules/devices/monitors.c:449 #: modules/devices/monitors.c:495 msgid "Monitors" msgstr "Ekranlar" #: modules/devices.c:102 modules/devices/pci.c:175 msgid "PCI Devices" msgstr "PCI Aygıtlar" #: modules/devices.c:103 modules/devices/usb.c:211 msgid "USB Devices" msgstr "USB Aygıtlar" #: modules/devices.c:104 msgid "Firmware" msgstr "Aygıt Yazılımı" #: modules/devices.c:106 msgid "Battery" msgstr "Batarya" #: modules/devices.c:107 msgid "Sensors" msgstr "Sensörler" #: modules/devices.c:110 msgid "System DMI" msgstr "Sistem DMI" #: modules/devices.c:111 msgid "Memory Devices" msgstr "Hafıza Aygıtları" #: modules/devices.c:113 modules/devices.c:115 msgid "Device Tree" msgstr "Aygıt Ağacı" #: modules/devices.c:117 msgid "Resources" msgstr "Kaynaklar" #: modules/devices.c:594 msgid "WSL2" msgstr "" #: modules/devices.c:841 msgid "Sensor" msgstr "Sensör" #: modules/devices.c:899 modules/devices/dmi_memory.c:806 msgid "Devices" msgstr "Aygıtlar" #: modules/devices.c:911 msgid "Update PCI ID listing" msgstr "PCI kimlik listesini güncelle" #: modules/devices.c:916 msgid "Update USB ID listing" msgstr "USB ID listeleme güncelle" #: modules/devices.c:921 msgid "Update EDID vendor codes" msgstr "EDID üretici kodlarını güncelle" #: modules/devices.c:926 msgid "Update IEEE OUI vendor codes" msgstr "IEEE OUI üretici kodlarını güncelle" #: modules/devices.c:931 msgid "Update SD card manufacturer information" msgstr "SD kart üretici bilgisini güncelle" #: modules/devices.c:938 msgid "Update CPU flags database" msgstr "İşlemci bayrakları veri tabanını güncelle" #: modules/devices.c:973 msgid "Gathers information about hardware devices" msgstr "Donanım aygıtları hakkında bilgi toplar" #: modules/devices.c:994 msgid "A copy of pci.ids is not available on the system." msgstr "Sistemde bir pci.ids kopyası yok." #: modules/devices.c:997 msgid "A full pci.ids is not available on the system." msgstr "Sistemde eksiksiz bir pci.ids yok." #: modules/devices.c:1002 msgid "Resource information requires superuser privileges" msgstr "Kaynak bilgileri süper kullanıcı ayrıcalıkları gerektirir" #: modules/devices.c:1008 msgid "" "Any NVMe storage devices present are not listed.\n" "udisks2 is required for NVMe devices." msgstr "" #: modules/devices/devicetree.c:51 msgid "Properties" msgstr "Özellikler" #: modules/devices/devicetree.c:52 msgid "Children" msgstr "Çocuk" #: modules/devices/devicetree.c:88 msgid "Node" msgstr "Node" #: modules/devices/devicetree.c:89 msgid "Node Path" msgstr "Node Yolu" #: modules/devices/devicetree.c:90 msgid "Alias" msgstr "Lakab" #: modules/devices/devicetree.c:91 msgid "Symbol" msgstr "Sembol" #: modules/devices/devicetree.c:144 modules/devices/devicetree/pmac_data.c:79 msgid "Platform" msgstr "Platform" #: modules/devices/devicetree.c:145 modules/devices/devicetree.c:210 #: modules/devices/gpu.c:299 msgid "Compatible" msgstr "Uyumlu" #: modules/devices/devicetree.c:146 msgid "GPU-compatible" msgstr "GPU-uyumlu" #: modules/devices/devicetree.c:161 msgid "Raspberry Pi or Compatible" msgstr "Raspberry Pi veya Uyumlu" #: modules/devices/devicetree.c:163 modules/devices/devicetree.c:190 #: modules/devices/devicetree.c:209 modules/devices/devicetree/rpi_data.c:169 #: modules/devices/dmi.c:42 modules/devices/dmi.c:52 modules/devices/dmi.c:58 #: modules/devices/spd-decode.c:1383 modules/devices/usb.c:181 msgid "Serial Number" msgstr "Seri Numarası" #: modules/devices/devicetree.c:164 modules/devices/devicetree/rpi_data.c:166 msgid "RCode" msgstr "RKodu" #: modules/devices/devicetree.c:164 msgid "No revision code available; unable to lookup model details." msgstr "Revizyon kodu mevcut değil; model ayrıntılarını arayamıyor." #: modules/devices/devicetree.c:189 msgid "More" msgstr "Daha fazla" #: modules/devices/devicetree.c:270 msgid "Messages" msgstr "Mesajlar" #: modules/devices/devicetree/pmac_data.c:78 msgid "Apple Power Macintosh" msgstr "Apple Power Macintosh" #: modules/devices/devicetree/pmac_data.c:83 msgid "Detected as" msgstr "Olarak algılandı" #: modules/devices/devicetree/pmac_data.c:84 msgid "PMAC Flags" msgstr "PMAC Bayrakları" #: modules/devices/devicetree/pmac_data.c:85 msgid "L2 Cache" msgstr "L2 Önbelleği" #: modules/devices/devicetree/pmac_data.c:86 msgid "PMAC Generation" msgstr "PMAC Üretimi" #: modules/devices/devicetree/rpi_data.c:161 #: modules/devices/devicetree/rpi_data.c:162 msgid "Raspberry Pi" msgstr "Raspberry Pi" #: modules/devices/devicetree/rpi_data.c:162 msgid "Board Name" msgstr "Kart Adı" #: modules/devices/devicetree/rpi_data.c:163 msgid "PCB Revision" msgstr "PCB Revizyonu" #: modules/devices/devicetree/rpi_data.c:164 msgid "Introduction" msgstr "Giriş" #: modules/devices/devicetree/rpi_data.c:165 modules/devices/usb.c:173 msgid "Manufacturer" msgstr "Üretici firma" #: modules/devices/devicetree/rpi_data.c:167 msgid "SOC (spec)" msgstr "SOC (spec)" #: modules/devices/devicetree/rpi_data.c:168 msgid "Memory (spec)" msgstr "Bellek (spec)" #: modules/devices/devicetree/rpi_data.c:170 msgid "Permanent overvolt bit" msgstr "Kalıcı aşırı voltaj biti" #: modules/devices/devicetree/rpi_data.c:170 msgctxt "rpi-ov-bit" msgid "Set" msgstr "Ayarla" #: modules/devices/devicetree/rpi_data.c:170 msgctxt "rpi-ov-bit" msgid "Not set" msgstr "Belirlenmedi" #: modules/devices/dmi.c:37 modules/devices/inputdevices.c:145 #: modules/devices/usb.c:170 msgid "Product" msgstr "Ürün" #: modules/devices/dmi.c:39 modules/devices/e2k/processor.c:360 #: modules/devices/ia64/processor.c:164 #: modules/devices/loongarch64/processor.c:95 modules/devices/sh/processor.c:86 msgid "Family" msgstr "Aile" #: modules/devices/dmi.c:43 msgid "SKU" msgstr "SKU" #: modules/devices/dmi.c:44 msgid "BIOS" msgstr "BIOS" #: modules/devices/dmi.c:53 modules/devices/dmi.c:59 msgid "Asset Tag" msgstr "Varlık Etiketi" #: modules/devices/dmi.c:161 msgid "DMI Unavailable" msgstr "DMI Kullanılamıyor" #: modules/devices/dmi.c:162 msgid "DMI is not available. Perhaps this platform does not provide DMI." msgstr "DMI mevcut değildir. Belki de bu platform DMI sağlamaz." #: modules/devices/dmi_memory.c:620 modules/devices/dmi_memory.c:859 msgid "Memory Device List" msgstr "Bellek Aygıtı Listesi" #: modules/devices/dmi_memory.c:668 msgid "Memory Array" msgstr "Bellek Dizisi" #: modules/devices/dmi_memory.c:669 modules/devices/x86/processor.c:714 msgid "DMI Handle" msgstr "DMI Kolu" #: modules/devices/dmi_memory.c:670 modules/devices/dmi_memory.c:726 #: modules/devices/dmi_memory.c:764 modules/devices/dmi_memory.c:871 msgid "Locator" msgstr "Bulucu" #: modules/devices/dmi_memory.c:671 msgid "Use" msgstr "Kullan" #: modules/devices/dmi_memory.c:672 msgid "Error Correction Type" msgstr "Hata Düzeltme Tipi" #: modules/devices/dmi_memory.c:673 msgid "Size (Present / Max)" msgstr "Boyut (Mevcut / Maks)" #: modules/devices/dmi_memory.c:674 msgid "Devices (Populated / Sockets)" msgstr "Aygıtlar (Yerleşik / Soketler)" #: modules/devices/dmi_memory.c:675 modules/devices/dmi_memory.c:807 msgid "Types Present" msgstr "Mevcut Türler" #: modules/devices/dmi_memory.c:676 msgid "ROM Size" msgstr "ROM Boyutu" #: modules/devices/dmi_memory.c:724 modules/devices/dmi_memory.c:762 msgid "Memory Socket" msgstr "Bellek Yuvası" #: modules/devices/dmi_memory.c:725 modules/devices/dmi_memory.c:763 msgid "DMI Handles (Array, Socket)" msgstr "DMI Kolları (Dizi, Soket)" #: modules/devices/dmi_memory.c:727 modules/devices/dmi_memory.c:765 msgid "Bank Locator" msgstr "Bank Bulucu" #: modules/devices/dmi_memory.c:728 modules/devices/spd-decode.c:1376 msgid "Form Factor" msgstr "Form faktörü" #: modules/devices/dmi_memory.c:732 modules/devices/spd-decode.c:1382 msgid "Part Number" msgstr "Parça Numarası" #: modules/devices/dmi_memory.c:734 msgid "Rated Speed" msgstr "Anma Hızı" #: modules/devices/dmi_memory.c:735 msgid "Configured Speed" msgstr "Yapılandırılmış Hız" #: modules/devices/dmi_memory.c:736 msgid "Data Width/Total Width" msgstr "Veri Genişliği / Toplam Genişlik" #: modules/devices/dmi_memory.c:737 msgid "Rank" msgstr "Sıra" #: modules/devices/dmi_memory.c:738 msgid "Minimum Voltage" msgstr "Minimum Voltaj" #: modules/devices/dmi_memory.c:739 msgid "Maximum Voltage" msgstr "Maksimum Voltaj" #: modules/devices/dmi_memory.c:740 msgid "Configured Voltage" msgstr "Yapılandırılmış Gerilim" #: modules/devices/dmi_memory.c:766 modules/devices/dmi_memory.c:773 #: modules/devices/monitors.c:495 msgid "(Empty)" msgstr "(Boş)" #: modules/devices/dmi_memory.c:804 msgid "Serial Presence Detect (SPD) Summary" msgstr "Seri Durum Algılama (SPD) Özeti" #: modules/devices/dmi_memory.c:860 msgid "(Not available - See hint box below)" msgstr "" #: modules/devices/dmi_memory.c:932 msgid "No DMI available" msgstr "" #: modules/devices/dmi_memory.c:937 msgid "dmidecode package installed" msgstr "" #: modules/devices/dmi_memory.c:948 msgid "Memory Information requires more Setup:" msgstr "" #: modules/devices/dmi_memory.c:976 msgid "" "\"More often than not, information contained in the DMI tables is " "inaccurate,\n" "incomplete or simply wrong.\" -dmidecode manual page" msgstr "" "\"Çoğu zaman, DMI tablolarında yer alan bilgiler yanlıştır,\n" "eksik veya basitçe yanlış. \"- dmidecode kılavuz sayfası" #: modules/devices/e2k/processor.c:30 modules/devices/x86/processor.c:149 msgid "Cache information not available=\n" msgstr "Önbellek bilgisi yok=\n" #: modules/devices/e2k/processor.c:36 modules/devices/x86/processor.c:155 #, c-format msgid "Level %d (%s)=%d-way set-associative, %d sets, %dKB size\n" msgstr "Seviye %d (%s) =%d-yollu set-ilişkisel, %d set, %dKB boyutu\n" #: modules/devices/e2k/processor.c:51 msgctxt "cache-type" msgid "Data" msgstr "Veri" #: modules/devices/e2k/processor.c:52 msgctxt "cache-type" msgid "Instruction" msgstr "Talimat" #: modules/devices/e2k/processor.c:53 msgctxt "cache-type" msgid "Unified" msgstr "Birleşik" #: modules/devices/e2k/processor.c:157 modules/devices/x86/processor.c:366 msgid "Caches" msgstr "Önbellekler" #: modules/devices/e2k/processor.c:208 modules/devices/e2k/processor.c:225 #: modules/devices/x86/processor.c:417 modules/devices/x86/processor.c:434 #, c-format msgid "Level %d (%s)#%d=%dx %dKB (%dKB), %d-way set-associative, %d sets\n" msgstr "Seviye %d (%s)#%d=%dx %dKB (%dKB), %d-yollu set-ilişkisel, %d set\n" #: modules/devices/firmware.c:36 msgid "Device cannot be removed easily" msgstr "Cihaz kolayca çıkarılamaz" #: modules/devices/firmware.c:37 msgid "Device is updatable in this or any other mode" msgstr "Cihaz, bu veya başka herhangi bir modda güncellenebilir" #: modules/devices/firmware.c:38 msgid "Update can only be done from offline mode" msgstr "Güncelleme yalnızca çevrimdışı moddan yapılabilir" #: modules/devices/firmware.c:39 msgid "Requires AC power" msgstr "AC gücü gerektirir" #: modules/devices/firmware.c:40 msgid "Is locked and can be unlocked" msgstr "Kilitli ve kilidi açılabilir" #: modules/devices/firmware.c:41 msgid "Is found in current metadata" msgstr "Mevcut meta verilerde bulunur" #: modules/devices/firmware.c:42 msgid "Requires a bootloader mode to be manually enabled by the user" msgstr "" "Kullanıcı tarafından manuel olarak etkinleştirilecek bir önyükleyici modu " "gerektirir" #: modules/devices/firmware.c:43 msgid "Has been registered with other plugins" msgstr "Diğer eklentilere kayıtlı" #: modules/devices/firmware.c:44 msgid "Requires a reboot to apply firmware or to reload hardware" msgstr "" "Donanım yazılımı uygulamak veya donanımı yeniden yüklemek için yeniden " "başlatma gerektirir" #: modules/devices/firmware.c:45 msgid "Requires system shutdown to apply firmware" msgstr "Aygıt yazılımını uygulamak için sistemin kapatılmasını gerektirir" #: modules/devices/firmware.c:46 msgid "Has been reported to a metadata server" msgstr "Bir meta veri sunucusuna rapor edildi" #: modules/devices/firmware.c:47 msgid "User has been notified" msgstr "Kullanıcı bilgilendirildi" #: modules/devices/firmware.c:48 msgid "Always use the runtime version rather than the bootloader" msgstr "Her zaman önyükleyici yerine çalışma zamanı sürümünü kullanın" #: modules/devices/firmware.c:49 msgid "Install composite firmware on the parent before the child" msgstr "Çocuktan önce ebeveyne kompozit üretici yazılımı yükleyin" #: modules/devices/firmware.c:50 msgid "Is currently in bootloader mode" msgstr "Şu anda önyükleyici modunda" #: modules/devices/firmware.c:51 msgid "The hardware is waiting to be replugged" msgstr "Donanım yeniden takılmayı bekliyor" #: modules/devices/firmware.c:52 msgid "Ignore validation safety checks when flashing this device" msgstr "Bu cihazı flashlarken doğrulama güvenlik kontrollerini göz ardı edin" #: modules/devices/firmware.c:53 msgid "Requires the update to be retried with a new plugin" msgstr "Güncellemenin yeni bir eklentiyle yeniden denenmesini gerektirir" #: modules/devices/firmware.c:54 msgid "Do not add instance IDs from the device baseclass" msgstr "Cihaz temel sınıfından örnek kimlikleri eklemeyin" #: modules/devices/firmware.c:55 msgid "Device update needs to be separately activated" msgstr "Cihaz güncellemesinin ayrı olarak etkinleştirilmesi gerekiyor" #: modules/devices/firmware.c:56 msgid "" "Ensure the version is a valid semantic version, e.g. numbers separated with " "dots" msgstr "" "Sürümün geçerli bir anlamsal sürüm olduğundan emin olun, ör. noktalarla " "ayrılmış sayılar" #: modules/devices/firmware.c:57 msgid "Extra metadata can be exposed about this device" msgstr "Bu cihazla ilgili ekstra meta veriler ifşa edilebilir" #: modules/devices/firmware.c:74 msgid "DeviceId" msgstr "Cihaz Kimliği" #: modules/devices/firmware.c:74 modules/devices/firmware.c:187 msgid "Guid" msgstr "Kılavuz" #: modules/devices/firmware.c:74 msgid "Plugin" msgstr "Eklenti" #: modules/devices/firmware.c:74 modules/devices/firmware.c:205 #: modules/network.c:381 msgid "Flags" msgstr "Flama" #: modules/devices/firmware.c:75 msgid "VendorId" msgstr "Satıcı kimliği" #: modules/devices/firmware.c:75 msgid "VersionBootloader" msgstr "Sürüm Önyükleyici" #: modules/devices/firmware.c:76 modules/devices/firmware.c:179 msgid "Icon" msgstr "Simge" #: modules/devices/firmware.c:76 msgid "InstallDuration" msgstr "Kurulum Süresi" #: modules/devices/firmware.c:76 modules/devices/firmware.c:197 msgid "Created" msgstr "Oluşturuldu" #: modules/devices/firmware.c:244 msgid "Firmware List" msgstr "Yazılım Listesi" #: modules/devices/firmware.c:257 msgid "Requires the fwupd daemon." msgstr "fwupd arka plan hizmetine ihtiyaç duyar." #: modules/devices/gpu.c:94 modules/devices/pci.c:111 #: modules/devices/storage.c:58 msgid "SVendor" msgstr "SSatıcı" #: modules/devices/gpu.c:95 modules/devices/pci.c:112 #: modules/devices/storage.c:59 msgid "SDevice" msgstr "SAygıt" #: modules/devices/gpu.c:103 modules/devices/pci.c:122 #: modules/devices/storage.c:68 msgid "PCI Express" msgstr "PCI Express" #: modules/devices/gpu.c:104 modules/devices/pci.c:124 #: modules/devices/storage.c:70 msgid "Maximum Link Width" msgstr "Maksimum Bağlantı Genişliği" #: modules/devices/gpu.c:105 modules/devices/pci.c:126 #: modules/devices/storage.c:71 msgid "Maximum Link Speed" msgstr "Maksimum Bağlantı Hızı" #: modules/devices/gpu.c:105 modules/devices/pci.c:125 #: modules/devices/pci.c:126 modules/devices/storage.c:71 msgid "GT/s" msgstr "GT/s" #: modules/devices/gpu.c:115 msgid "NVIDIA" msgstr "NVIDIA" #: modules/devices/gpu.c:117 msgid "BIOS Version" msgstr "BIOS Sürümü" #: modules/devices/gpu.c:118 msgid "UUID" msgstr "UUID" #: modules/devices/gpu.c:197 modules/devices/gpu.c:289 #: modules/devices/inputdevices.c:140 modules/devices/pci.c:143 #: modules/devices/usb.c:169 msgid "Device Information" msgstr "Aygıt Bilgisi" #: modules/devices/gpu.c:199 modules/devices/gpu.c:291 #: modules/devices/storage.c:69 msgid "Location" msgstr "Yerel" #: modules/devices/gpu.c:200 msgid "DRM Device" msgstr "DRM Aygıtı" #: modules/devices/gpu.c:201 modules/devices/pci.c:144 #: modules/devices/usb.c:136 modules/devices/usb.c:177 msgid "Class" msgstr "Sınıf" #: modules/devices/gpu.c:210 modules/devices/pci.c:149 msgid "In Use" msgstr "Kullanımda" #: modules/devices/gpu.c:245 msgid "Unknown integrated GPU" msgstr "Bilinmeyen entegre GPU" #: modules/devices/gpu.c:253 msgid "clock-frequency property" msgstr "saat frekansı özelliği" #: modules/devices/gpu.c:254 msgid "Operating Points (OPPv1)" msgstr "İşletim Noktaları (OPPv1)" #: modules/devices/gpu.c:255 msgid "Operating Points (OPPv2)" msgstr "İşletim Noktaları (OPPv2)" #: modules/devices/gpu.c:297 msgid "Device Tree Node" msgstr "Aygıt Ağacı Düğümü" #: modules/devices/gpu.c:300 modules/devices/monitors.c:475 #: modules/network/net.c:477 msgid "Status" msgstr "Durum" #: modules/devices/gpu.c:317 msgid "GPUs" msgstr "GPUs" #: modules/devices/gpu.c:341 msgid "No GPU devices found" msgstr "GPU cihazı bulunamadı" #: modules/devices/ia64/processor.c:108 msgid "IA64 Processor" msgstr "IA64 İşlemci" #: modules/devices/ia64/processor.c:163 msgid "Architecture Revision" msgstr "Mimari Revizyon" #: modules/devices/ia64/processor.c:170 msgid "CPU regs" msgstr "CPU kayıtları" #: modules/devices/ia64/processor.c:171 #: modules/devices/loongarch64/processor.c:100 msgid "Features" msgstr "Özellikler" #: modules/devices/inputdevices.c:143 modules/devices/pci.c:153 #: modules/devices/usb.c:183 msgid "Bus" msgstr "Veriyolu" #: modules/devices/inputdevices.c:149 msgid "Connected to" msgstr "Bağlı" #: modules/devices/inputdevices.c:153 msgid "InfraRed port" msgstr "Kızılötesi Portu" #: modules/devices/loongarch64/processor.c:94 #: modules/devices/mips/processor.c:76 msgid "System Type" msgstr "Sistem Türü" #: modules/devices/loongarch64/processor.c:99 msgid "BogoMIPS" msgstr "BogoMIPS" #: modules/devices/m68k/processor.c:85 modules/devices/riscv/processor.c:245 msgid "MMU" msgstr "MMU" #: modules/devices/m68k/processor.c:86 modules/devices/sparc/processor.c:76 msgid "FPU" msgstr "FPU" #: modules/devices/m68k/processor.c:90 msgid "Calibration" msgstr "Kalibrasyon" #: modules/devices/monitors.c:30 modules/devices/monitors.c:257 #: modules/devices/monitors.c:350 modules/devices/spd-decode.c:699 msgid "(Unspecified)" msgstr "(Belirtilmemiş)" #: modules/devices/monitors.c:232 #, c-format msgid "Week %d of %d" msgstr "Hafta %d of %d" #: modules/devices/monitors.c:242 msgid "Ok" msgstr "Tamam" #: modules/devices/monitors.c:242 msgid "Fail" msgstr "Hata" #: modules/devices/monitors.c:270 modules/devices/monitors.c:278 #: modules/devices/monitors.c:286 modules/devices/monitors.c:297 #: modules/devices/monitors.c:305 modules/devices/monitors.c:312 #: modules/devices/monitors.c:320 modules/devices/monitors.c:328 #: modules/devices/monitors.c:336 modules/devices/monitors.c:342 msgid "(Empty List)" msgstr "(Boş Liste)" #: modules/devices/monitors.c:394 msgid "Signal Type" msgstr "Sinyal Türü" #: modules/devices/monitors.c:394 msgid "Digital" msgstr "Dijital" #: modules/devices/monitors.c:394 msgid "Analog" msgstr "Analog" #: modules/devices/monitors.c:395 modules/devices/usb.c:135 #: modules/network.c:311 modules/network.c:364 modules/network.c:381 msgid "Interface" msgstr "Arayüz" #: modules/devices/monitors.c:396 msgid "Bits per Color Channel" msgstr "Renk Kanalı Başına Bit Sayısı" #: modules/devices/monitors.c:397 msgid "Speaker Allocation" msgstr "Hoparlör Tahsisi" #: modules/devices/monitors.c:398 msgid "Output (Max)" msgstr "Çıkış (Maks)" #: modules/devices/monitors.c:401 msgid "EDID Device" msgstr "EDID Cihazı" #: modules/devices/monitors.c:405 msgid "Serial" msgstr "Seri" #: modules/devices/monitors.c:406 msgid "Manufacture Date" msgstr "Üretim tarihi" #: modules/devices/monitors.c:407 msgid "EDID Meta" msgstr "EDID Meta" #: modules/devices/monitors.c:408 msgid "Data Size" msgstr "Veri Boyutu" #: modules/devices/monitors.c:408 msgid "bytes" msgstr "bayt" #: modules/devices/monitors.c:410 msgid "Extension Blocks" msgstr "Uzantı Blokları" #: modules/devices/monitors.c:411 msgid "Extended to" msgstr "Genişletilmiş" #: modules/devices/monitors.c:412 msgid "Checksum" msgstr "Sağlama toplamı" #: modules/devices/monitors.c:413 msgid "EDID Descriptors" msgstr "EDID Tanımlayıcıları" #: modules/devices/monitors.c:414 msgid "Detailed Timing Descriptors (DTD)" msgstr "Ayrıntılı Zamanlama Tanımlayıcıları (DTD)" #: modules/devices/monitors.c:415 msgid "Established Timings Bitmap (ETB)" msgstr "Kurulmuş Zamanlamalar Bit Eşlemi (ETB)" #: modules/devices/monitors.c:416 msgid "Standard Timings (STD)" msgstr "Standart Zamanlamalar (STD)" #: modules/devices/monitors.c:417 msgid "E-EDID Extension Blocks" msgstr "E-EDID Uzantı Blokları" #: modules/devices/monitors.c:418 msgid "EIA/CEA-861 Data Blocks" msgstr "EIA/CEA-861 Veri Blokları" #: modules/devices/monitors.c:419 msgid "EIA/CEA-861 Short Audio Descriptors" msgstr "EIA/CEA-861 Kısa Ses Tanımlayıcıları" #: modules/devices/monitors.c:420 msgid "EIA/CEA-861 Short Video Descriptors" msgstr "EIA/CEA-861 Kısa Video Tanımlayıcıları" #: modules/devices/monitors.c:421 msgid "DisplayID Timings" msgstr "Ekran kimlik Zamanı" #: modules/devices/monitors.c:422 msgid "DisplayID Strings" msgstr "Ekran Kimliği Dizeleri" #: modules/devices/monitors.c:423 msgid "Hex Dump" msgstr "Onaltılık Dökümü" #: modules/devices/monitors.c:423 msgid "Data" msgstr "Veri" #: modules/devices/monitors.c:473 modules/devices/monitors.c:504 #: modules/devices/pci.c:151 modules/devices/usb.c:182 msgid "Connection" msgstr "Bağlantı" #: modules/devices/monitors.c:474 msgid "DRM" msgstr "DRM" #: modules/devices/parisc/processor.c:107 msgid "PA-RISC Processor" msgstr "PA-RISC İşlemci" #: modules/devices/parisc/processor.c:161 msgid "HVersion" msgstr "HVersion" #: modules/devices/parisc/processor.c:162 msgid "SVersion" msgstr "SVersion" #: modules/devices/pci.c:123 msgid "Link Width" msgstr "Bağlantı Genişliği" #: modules/devices/pci.c:125 msgid "Link Speed" msgstr "Bağlantı Hızı" #: modules/devices/pci.c:152 msgid "Domain" msgstr "Etki Alanı" #: modules/devices/pci.c:155 msgid "Function" msgstr "İşlev" #: modules/devices/pci.c:196 msgid "No PCI devices found" msgstr "PCI aygıtı bulunamadı" #: modules/devices/ppc/processor.c:117 msgid "POWER Processor" msgstr "GÜÇ İşlemci" #: modules/devices/printers.c:88 msgid "⚬ Can do black and white printing=\n" msgstr "⚬ Siyah beyaz baskı yapabilir =\n" #: modules/devices/printers.c:90 msgid "⚬ Can do color printing=\n" msgstr "⚬ Renkli baskı yapabilir =\n" #: modules/devices/printers.c:92 msgid "⚬ Can do duplexing=\n" msgstr "⚬ Çift taraflı yapabilir=\n" #: modules/devices/printers.c:94 msgid "⚬ Can do staple output=\n" msgstr "⚬ Zımba çıkışı yapabilir =\n" #: modules/devices/printers.c:96 msgid "⚬ Can do copies=\n" msgstr "⚬ Kopyalama yapabilir =\n" #: modules/devices/printers.c:98 msgid "⚬ Can collate copies=\n" msgstr "⚬ Kopyaları harmanlayabilir =\n" #: modules/devices/printers.c:100 msgid "⚬ Printer is rejecting jobs=\n" msgstr "⚬ Yazıcı işleri reddediyor =\n" #: modules/devices/printers.c:102 msgid "⚬ Printer was automatically discovered and added=\n" msgstr "⚬ Yazıcı otomatik olarak keşfedildi ve eklendi =\n" #: modules/devices/printers.c:117 msgid "Idle" msgstr "Beklemede" #: modules/devices/printers.c:119 msgid "Printing a Job" msgstr "Bir İşin Yazdırılması" #: modules/devices/printers.c:121 msgid "Stopped" msgstr "Durduruldu" #: modules/devices/printers.c:200 msgid "" "[Printers]\n" "No suitable CUPS library found=" msgstr "" "[Yazıcılar]\n" "Uygun CUPS kütüphanesi bulunamadı=" #: modules/devices/printers.c:213 msgid "[Printers (CUPS)]\n" msgstr "[Yazıcılar (CUPS)]\n" #: modules/devices/printers.c:277 msgid "" "[Printers]\n" "No printers found=\n" msgstr "" "[Yazıcılar]\n" "Yazıcı bulunamadı=\n" #: modules/devices/riscv/processor.c:244 msgid "uarch" msgstr "uarch" #: modules/devices/riscv/riscv_data.c:37 msgctxt "rv-ext" msgid "RISC-V 32-bit" msgstr "RISC-V 32-bit" #: modules/devices/riscv/riscv_data.c:38 msgctxt "rv-ext" msgid "RISC-V 64-bit" msgstr "RISC-V 64-bit" #: modules/devices/riscv/riscv_data.c:39 msgctxt "rv-ext" msgid "RISC-V 128-bit" msgstr "RISC-V 128-bit" #: modules/devices/riscv/riscv_data.c:40 msgctxt "rv-ext" msgid "Base embedded integer instructions (15 registers)" msgstr "Temel gömülü tamsayı talimatları (15 kayıt)" #: modules/devices/riscv/riscv_data.c:41 msgctxt "rv-ext" msgid "Base integer instructions (31 registers)" msgstr "Temel tamsayı talimatları (31 kayıt)" #: modules/devices/riscv/riscv_data.c:42 msgctxt "rv-ext" msgid "Hardware integer multiply and divide" msgstr "Donanım tamsayı çarpma ve bölme" #: modules/devices/riscv/riscv_data.c:43 msgctxt "rv-ext" msgid "Atomic memory operations" msgstr "Atomik hafıza işlemleri" #: modules/devices/riscv/riscv_data.c:44 msgctxt "rv-ext" msgid "Compressed 16-bit instructions" msgstr "Sıkıştırılmış 16 bit talimatlar" #: modules/devices/riscv/riscv_data.c:45 msgctxt "rv-ext" msgid "Floating-point instructions, single-precision" msgstr "Kayan nokta talimatları, tek kesinlik" #: modules/devices/riscv/riscv_data.c:46 msgctxt "rv-ext" msgid "Floating-point instructions, double-precision" msgstr "Kayan nokta talimatları, çift kesinlik" #: modules/devices/riscv/riscv_data.c:47 msgctxt "rv-ext" msgid "Floating-point instructions, quad-precision" msgstr "Kayan nokta talimatları, dörtlü hassasiyet" #: modules/devices/riscv/riscv_data.c:48 msgctxt "rv-ext" msgid "Bit manipulation instructions" msgstr "Bit işleme talimatları" #: modules/devices/riscv/riscv_data.c:49 msgctxt "rv-ext" msgid "Vector operations" msgstr "Vektör işlemleri" #: modules/devices/riscv/riscv_data.c:50 msgctxt "rv-ext" msgid "Scalar Cryptography" msgstr "" #: modules/devices/riscv/riscv_data.c:51 msgctxt "rv-ext" msgid "Base Counters and Timers" msgstr "" #: modules/devices/riscv/riscv_data.c:52 msgctxt "rv-ext" msgid "Control and Status Register" msgstr "" #: modules/devices/riscv/riscv_data.c:53 msgctxt "rv-ext" msgid "Instruction-Fetch Fence" msgstr "" #: modules/devices/riscv/riscv_data.c:54 msgctxt "rv-ext" msgid "Hardware performance counters" msgstr "" #: modules/devices/riscv/riscv_data.c:55 msgctxt "rv-ext" msgid "Accell Index addresses" msgstr "" #: modules/devices/riscv/riscv_data.c:56 msgctxt "rv-ext" msgid "Basic bit-manipulation" msgstr "" #: modules/devices/riscv/riscv_data.c:57 msgctxt "rv-ext" msgid "Supervisor-level Instructions" msgstr "" #: modules/devices/riscv/riscv_data.c:58 msgctxt "rv-ext" msgid "User Mode" msgstr "" #: modules/devices/riscv/riscv_data.c:59 msgctxt "rv-ext" msgid "Transactional memory" msgstr "İşlem belleği" #: modules/devices/riscv/riscv_data.c:60 msgctxt "rv-ext" msgid "Packed SIMD instructions" msgstr "Paketli SIMD talimatları" #: modules/devices/riscv/riscv_data.c:61 msgctxt "rv-ext" msgid "Decimal floating-point instructions" msgstr "Ondalık kayan nokta talimatları" #: modules/devices/riscv/riscv_data.c:62 msgctxt "rv-ext" msgid "Dynamically translated languages" msgstr "Dinamik olarak çevrilmiş diller" #: modules/devices/riscv/riscv_data.c:63 msgctxt "rv-ext" msgid "User-level interrupts" msgstr "Kullanıcı düzeyinde kesintiler" #: modules/devices/s390/processor.c:92 msgid "S390 Processor" msgstr "S390 İşlemci" #: modules/devices/s390/processor.c:133 msgid "ID String" msgstr "Kimlik Dizesi" #: modules/devices/sh/processor.c:55 msgid "SuperH Processor" msgstr "SuperH İşlemci" #: modules/devices/sh/processor.c:88 msgid "Bus Frequency" msgstr "Veriyolu Frekansı" #: modules/devices/sh/processor.c:89 msgid "Module Frequency" msgstr "Modül Frekansı" #: modules/devices/spd-decode.c:128 modules/devices/spd-decode.c:144 msgid "Unspecified" msgstr "" #: modules/devices/spd-decode.c:130 modules/devices/spd-decode.c:146 msgid "Invalid" msgstr "Bilinmeyen" #: modules/devices/spd-decode.c:358 msgid "Row address bits" msgstr "Satır adresi bitleri" #: modules/devices/spd-decode.c:359 msgid "Column address bits" msgstr "Sütun adres bitleri" #: modules/devices/spd-decode.c:360 msgid "Number of rows" msgstr "Satırların sayısı" #: modules/devices/spd-decode.c:361 msgid "Data width" msgstr "Veri genişliği" #: modules/devices/spd-decode.c:362 msgid "Interface signal levels" msgstr "Arayüz sinyal seviyeleri" #: modules/devices/spd-decode.c:363 msgid "Configuration type" msgstr "Yapılandırma türü" #: modules/devices/spd-decode.c:364 msgid "Refresh" msgstr "Yenile" #: modules/devices/spd-decode.c:365 modules/devices/spd-decode.c:442 #: modules/devices/spd-decode.c:721 msgid "Timings" msgstr "Zamanlamalar" #: modules/devices/spd-decode.c:589 modules/devices/spd-decode.c:858 #: modules/devices/spd-decode.c:899 modules/devices/spd-decode.c:1111 #: modules/devices/x86/processor.c:716 msgid "Voltage" msgstr "Voltaj" #: modules/devices/spd-decode.c:590 modules/devices/spd-decode.c:901 #: modules/devices/spd-decode.c:1113 msgid "JEDEC Timings" msgstr "JEDEC Zamanlamaları" #: modules/devices/spd-decode.c:697 msgid "Ranks" msgstr "Sıralar" #: modules/devices/spd-decode.c:698 msgid "IO Pins per Chip" msgstr "Çip başına IO Pinleri" #: modules/devices/spd-decode.c:699 msgid "Die count" msgstr "Ölü sayımı" #: modules/devices/spd-decode.c:700 msgid "Thermal Sensor" msgstr "Isı Sensörü" #: modules/devices/spd-decode.c:700 msgid "Present" msgstr "Mevcut" #: modules/devices/spd-decode.c:700 msgid "Not present" msgstr "Mevcut değil" #: modules/devices/spd-decode.c:701 msgid "Supported Voltages" msgstr "Desteklenen Voltajlar" #: modules/devices/spd-decode.c:705 msgid "Supported CAS Latencies" msgstr "Desteklenen CAS Gecikmeleri" #: modules/devices/spd-decode.c:856 msgid "XMP Profile" msgstr "XMP Profili" #: modules/devices/spd-decode.c:857 modules/devices/usb.c:176 #: modules/network/net.c:438 msgid "Speed" msgstr "Hız" #: modules/devices/spd-decode.c:859 msgid "XMP Timings" msgstr "XMP Zamanlamaları" #: modules/devices/spd-decode.c:900 msgid "XMP" msgstr "XMP" #: modules/devices/spd-decode.c:1372 msgid "Serial Presence Detect (SPD)" msgstr "Seri Durum Algılama (SPD)" #: modules/devices/spd-decode.c:1375 msgid "SPD Revision" msgstr "SPD Revizyonu" #: modules/devices/spd-decode.c:1378 msgid "Module Vendor" msgstr "Modül Satıcısı" #: modules/devices/spd-decode.c:1380 msgid "DRAM Vendor" msgstr "DRAM Satıcısı" #: modules/devices/spd-decode.c:1385 msgid "Manufacturing Date (Year / Week)" msgstr "" #: modules/devices/storage.c:46 modules/devices/storage.c:55 msgid "NVMe Controller" msgstr "NVMe Denetleyici" #: modules/devices/storage.c:138 msgid "Read Error Rate" msgstr "Hata Oranını Oku" #: modules/devices/storage.c:139 msgid "Throughput Performance" msgstr "Verimlilik Performansı" #: modules/devices/storage.c:140 msgid "Spin-Up Time" msgstr "Döndürme Süresi" #: modules/devices/storage.c:141 msgid "Start/Stop Count" msgstr "Sayımı Başlat/Durdur" #: modules/devices/storage.c:142 msgid "Reallocated Sector Count" msgstr "Yeniden Tahsis Edilen Sektör Sayısı" #: modules/devices/storage.c:143 msgid "Read Channel Margin" msgstr "Kanal Toleransını Oku" #: modules/devices/storage.c:144 msgid "Seek Error Rate" msgstr "Hata Oranı Ara" #: modules/devices/storage.c:145 msgid "Seek Timer Performance" msgstr "Zamanlayıcı Performansı Arayın" #: modules/devices/storage.c:146 modules/devices/storage.c:185 msgid "Power-On Hours" msgstr "Açılış Saatleri" #: modules/devices/storage.c:147 msgid "Spin Retry Count" msgstr "Tekrar deneme sayısı" #: modules/devices/storage.c:148 msgid "Calibration Retry Count" msgstr "Kalibrasyon Yeniden Deneme Sayısı" #: modules/devices/storage.c:149 msgid "Power Cycle Count" msgstr "Güç Döngüsü Sayısı" #: modules/devices/storage.c:150 modules/devices/storage.c:167 msgid "Soft Read Error Rate" msgstr "Yumuşak Okuma Hata Oranı" #: modules/devices/storage.c:151 msgid "Runtime Bad Block" msgstr "Çalışma Zamanı Hata Engelleme" #: modules/devices/storage.c:152 msgid "End-to-End error" msgstr "Uçtan Uca hata" #: modules/devices/storage.c:153 msgid "Reported Uncorrectable Errors" msgstr "Bildirilen Düzeltilemez Hatalar" #: modules/devices/storage.c:154 msgid "Command Timeout" msgstr "Komut Zaman Aşımı" #: modules/devices/storage.c:155 msgid "High Fly Writes" msgstr "Yüksek Uçan Yazılar" #: modules/devices/storage.c:156 msgid "Airflow Temperature" msgstr "Hava Akışı Sıcaklığı" #: modules/devices/storage.c:157 msgid "G-sense Error Rate" msgstr "G-sense Hata Oranı" #: modules/devices/storage.c:158 msgid "Power-off Retract Count" msgstr "Kapanma Geri Çekme Sayısı" #: modules/devices/storage.c:159 msgid "Load Cycle Count" msgstr "Yük Döngüsü Sayısı" #: modules/devices/storage.c:160 modules/devices/storage.c:183 msgid "Temperature" msgstr "Sıcaklık" #: modules/devices/storage.c:161 msgid "Hardware ECC Recovered" msgstr "Donanım ECC'si Kurtarıldı" #: modules/devices/storage.c:162 msgid "Reallocation Event Count" msgstr "Yeniden Tahsis Olay Sayısı" #: modules/devices/storage.c:163 msgid "Current Pending Sector Count" msgstr "Mevcut Bekleyen Sektör Sayısı" #: modules/devices/storage.c:164 msgid "Uncorrectable Sector Count" msgstr "Düzeltilemez Sektör Sayısı" #: modules/devices/storage.c:165 msgid "UltraDMA CRC Error Count" msgstr "UltraDMA CRC Hata Sayısı" #: modules/devices/storage.c:166 msgid "Multi-Zone Error Rate" msgstr "Çoklu Bölge Hata Oranı" #: modules/devices/storage.c:168 msgid "Run Out Cancel" msgstr "Bitti İptal" #: modules/devices/storage.c:169 msgid "Flying Height" msgstr "Uçan Yükseklik" #: modules/devices/storage.c:170 msgid "Spin High Current" msgstr "Yüksek Akım Spin" #: modules/devices/storage.c:171 msgid "Spin Buzz" msgstr "Buzz çevirin" #: modules/devices/storage.c:172 msgid "Offline Seek Performance" msgstr "Çevrimdışı Arama Performansı" #: modules/devices/storage.c:173 msgid "Disk Shift" msgstr "Disk Kaydırma" #: modules/devices/storage.c:174 msgid "G-Sense Error Rate" msgstr "G-Sense Hata Oranı" #: modules/devices/storage.c:175 msgid "Loaded Hours" msgstr "Yüklenen Saatler" #: modules/devices/storage.c:176 msgid "Load/Unload Retry Count" msgstr "Yükleme/Kaldırma Yeniden Deneme Sayısı" #: modules/devices/storage.c:177 msgid "Load Friction" msgstr "Yük Sürtünmesi" #: modules/devices/storage.c:178 msgid "Load/Unload Cycle Count" msgstr "Yükleme/Boşaltma Döngü Sayısı" #: modules/devices/storage.c:179 msgid "Load-in time" msgstr "Yükleme süresi" #: modules/devices/storage.c:180 msgid "Torque Amplification Count" msgstr "Tork Yükseltme Sayısı" #: modules/devices/storage.c:181 msgid "Power-Off Retract Count" msgstr "Kapanma Geri Çekme Sayısı" #: modules/devices/storage.c:182 msgid "GMR Head Amplitude" msgstr "GMR Baş Genliği" #: modules/devices/storage.c:184 msgid "Endurance Remaining" msgstr "Kalan Dayanıklılık" #: modules/devices/storage.c:186 msgid "Good Block Rate" msgstr "İyi Blok Oranı" #: modules/devices/storage.c:187 msgid "Head Flying Hours" msgstr "Baş Uçan Saatler" #: modules/devices/storage.c:188 msgid "Read Error Retry Rate" msgstr "Hata Yeniden Deneme Oranını Oku" #: modules/devices/storage.c:189 msgid "Total LBAs Written" msgstr "Yazılan Toplam LBA'lar" #: modules/devices/storage.c:190 msgid "Total LBAs Read" msgstr "Toplam LBA Okuma" #: modules/devices/storage.c:191 msgid "Wear leveling Count" msgstr "Aşınma Dengeleme Sayısı" #: modules/devices/storage.c:192 msgid "Total Used Reserved Block Count" msgstr "Toplam Kullanılan Ayrılmış Blok Sayısı" #: modules/devices/storage.c:193 msgid "Total Program Fail Count" msgstr "Toplam Program Başarısızlık Sayısı" #: modules/devices/storage.c:194 msgid "Total Erase Fail Count" msgstr "Toplam Silme Başarısızlık Sayısı" #: modules/devices/storage.c:195 msgid "Available Reserved Space" msgstr "Kullanılabilir Ayrılmış Alan" #: modules/devices/storage.c:196 msgid "Program Fail Count" msgstr "Program Başarısızlık Sayısı" #: modules/devices/storage.c:197 msgid "Erase Fail Count" msgstr "Silme Başarısızlık Sayısı" #: modules/devices/storage.c:198 msgid "TA Counter Increased" msgstr "TA Sayacı Arttı" #: modules/devices/storage.c:199 msgid "Total Unused Reserved Block Count" msgstr "Toplam Kullanılmayan Ayrılmış Blok Sayısı" #: modules/devices/storage.c:204 msgid "" "\n" "[UDisks2]\n" msgstr "" "\n" "[UDisks2]\n" #: modules/devices/storage.c:257 msgid "Removable" msgstr "Çıkarılabilir" #: modules/devices/storage.c:257 msgid "Fixed" msgstr "Onarıldı" #: modules/devices/storage.c:260 msgid "Ejectable" msgstr "Çıkarılabilir" #: modules/devices/storage.c:263 msgid "Self-monitoring (S.M.A.R.T.)" msgstr "Kendi kendini izleme (S.M.A.R.T.)" #: modules/devices/storage.c:266 modules/devices/x86/processor.c:664 msgid "Power Management" msgstr "Güç Yönetimi" #: modules/devices/storage.c:269 msgid "Advanced Power Management" msgstr "Gelişmiş Güç Yönetimi" #: modules/devices/storage.c:272 msgid "Automatic Acoustic Management" msgstr "Otomatik Akustik Yönetimi" #: modules/devices/storage.c:275 #, c-format msgid "" "[Drive Information]\n" "Model=%s\n" msgstr "" "[Sürücü Bilgileri]\n" "Model=%s\n" #: modules/devices/storage.c:285 #, c-format msgid "" "Revision=%s\n" "Block Device=%s\n" "Serial=%s\n" "Size=%s\n" "Features=%s\n" msgstr "" "Düzeltme =%s\n" "Cihazı Engelle =%s\n" "Seri =%s\n" "Boyut =%s\n" "Özellikler =%s\n" #: modules/devices/storage.c:300 #, c-format msgid "Rotation Rate=%d RPM\n" msgstr "Döndürme Oranı =%d RPM\n" #: modules/devices/storage.c:303 #, c-format msgid "" "Media=%s\n" "Media compatibility=%s\n" msgstr "" "Medya =%s\n" "Medya uyumluluğu =%s\n" #: modules/devices/storage.c:310 #, c-format msgid "Connection bus=%s\n" msgstr "Bağlantı veri yolu =%s\n" #: modules/devices/storage.c:322 msgid "WWN" msgstr "WWN" #: modules/devices/storage.c:323 msgid "EUI " msgstr "EUI " #: modules/devices/storage.c:328 msgid "WWN / EUI" msgstr "WWN / EUI" #: modules/devices/storage.c:332 #, c-format msgid "$^$%s=[%s] %s\n" msgstr "$^$%s=[%s] %s\n" #: modules/devices/storage.c:334 msgid "IEEE OUI" msgstr "IEEE OUI" #: modules/devices/storage.c:346 msgid "" "[Self-monitoring (S.M.A.R.T.)]\n" "Status=%s\n" "Bad Sectors=%" msgstr "" "[Öz denetim (S.M.A.R.T.)]\n" "Durum=%s\n" "Kötü Sektör=%" #: modules/devices/storage.c:352 msgid "Failing" msgstr "Başarısız" #: modules/devices/storage.c:352 msgid "OK" msgstr "Tamam" #: modules/devices/storage.c:358 msgid "" "[S.M.A.R.T. Attributes]\n" "Attribute=Value / Normalized / Worst / Threshold\n" msgstr "" "[S.M.A.R.T. Öznitelikleri]\n" "Nitelik=Değer / Normalleştirilmiş / En Kötü / Eşik\n" #: modules/devices/storage.c:381 msgid "%" msgid_plural "%" msgstr[0] "%" msgstr[1] "%" #: modules/devices/storage.c:419 #, c-format msgid "(%d) %s=%s\n" msgstr "(%d) %s=%s\n" #: modules/devices/storage.c:428 #, c-format msgid "" "[Partition table]\n" "Type=%s\n" msgstr "" "[Bölüm tablosu]\n" "Tür =%s\n" #: modules/devices/storage.c:447 #, c-format msgid "Partition %s=%s\n" msgstr "Bölüm %s=%s\n" #: modules/devices/storage.c:496 msgid "" "\n" "[SCSI Disks]\n" msgstr "" "\n" "[SCSI Disks]\n" #: modules/devices/storage.c:567 modules/devices/storage.c:773 #, c-format msgid "" "[Device Information]\n" "Model=%s\n" msgstr "" "[Cihaz bilgisi]\n" "Model=%s\n" #: modules/devices/storage.c:574 #, c-format msgid "" "Type=%s\n" "Revision=%s\n" "[SCSI Controller]\n" "Controller=scsi%d\n" "Channel=%d\n" "ID=%d\n" "LUN=%d\n" msgstr "" "Tür=%s\n" "Düzeltme=%s\n" "[SCSI Denetleyicisi]\n" "Denetleyici=scsi%d\n" "Kanal=%d\n" "Kimlik=%d\n" "LUN=%d\n" #: modules/devices/storage.c:621 msgid "" "\n" "[IDE Disks]\n" msgstr "" "\n" "[IDE Disks]\n" #: modules/devices/storage.c:707 #, c-format msgid "Driver=%s\n" msgstr "Sürücü=%s\n" #: modules/devices/storage.c:779 #, c-format msgid "" "Device Name=hd%c\n" "Media=%s\n" "Cache=%dkb\n" msgstr "" "Aygıt Adı=hd%c\n" "Medya=%s\n" "Önbellek=%dkb\n" #: modules/devices/storage.c:789 #, c-format msgid "" "[Geometry]\n" "Physical=%s\n" "Logical=%s\n" msgstr "" "[Geometri]\n" "Fiziksel=%s\n" "Mantıksal=%s\n" #: modules/devices/storage.c:799 #, c-format msgid "" "[Capabilities]\n" "%s" msgstr "" "[Yetenekler]\n" "%s" #: modules/devices/storage.c:806 #, c-format msgid "" "[Speeds]\n" "%s" msgstr "" "[Hızlar]\n" "%s" #: modules/devices/usb.c:137 modules/devices/usb.c:178 msgid "Sub-class" msgstr "Alt-Sınıf" #: modules/devices/usb.c:138 modules/devices/usb.c:179 modules/network.c:348 msgid "Protocol" msgstr "Protokol" #: modules/devices/usb.c:146 modules/network/net.c:474 msgid "Mb/s" msgstr "Mb/s" #: modules/devices/usb.c:174 msgid "Max Current" msgstr "Maksimum akım" #: modules/devices/usb.c:174 msgid "mA" msgstr "mA" #: modules/devices/usb.c:175 msgid "USB Version" msgstr "USB Sürümü" #: modules/devices/usb.c:180 msgid "Device Version" msgstr "Aygıt Sürümü" #: modules/devices/usb.c:222 msgid "No USB devices found." msgstr "USB cihazı bulunamadı." #: modules/devices/x86/processor.c:648 msgid "Model Name" msgstr "Model Adı" #: modules/devices/x86/processor.c:649 msgid "Family, model, stepping" msgstr "Aile, model, adım atmak" #: modules/devices/x86/processor.c:655 msgid "Microcode Version" msgstr "Mikrokod Sürümü" #: modules/devices/x86/processor.c:656 msgid "Configuration" msgstr "Yapılandırma" #: modules/devices/x86/processor.c:657 msgid "Cache Size" msgstr "Önbellek Boyutu" #: modules/devices/x86/processor.c:657 msgid "kb" msgstr "kb" #: modules/devices/x86/processor.c:665 msgid "Bug Workarounds" msgstr "Hata Çözümleri" #: modules/devices/x86/processor.c:692 msgid "Socket Information" msgstr "Yuva Bilgileri" #: modules/devices/x86/processor.c:695 msgid "(Not available; Perhaps try running hardinfo2 as root.)" msgstr "" #: modules/devices/x86/processor.c:713 msgid "CPU Socket" msgstr "CPU Yuvası" #: modules/devices/x86/processor.c:717 msgid "External Clock" msgstr "Harici Saat" #: modules/devices/x86/processor.c:718 msgid "Max Frequency" msgstr "En yüksek Frekans" #: modules/devices/x86/processor.c:749 msgid "Package Information" msgstr "Paket Bilgisi" #: modules/devices/x86/processor.c:811 msgid "Socket:Core" msgstr "Yuva:Çekirdek" #. !/flag:fpu #: modules/devices/x86/x86_data.c:48 msgctxt "x86-flag" msgid "Onboard FPU (floating point support)" msgstr "Yerleşik FPU (kayan nokta desteği)" #. !/flag:vme #: modules/devices/x86/x86_data.c:49 msgctxt "x86-flag" msgid "Virtual 8086 mode enhancements" msgstr "Sanal 8086 modu geliştirmeleri" #. !/flag:de #: modules/devices/x86/x86_data.c:50 msgctxt "x86-flag" msgid "Debugging Extensions (CR4.DE)" msgstr "Uzantılarda Hata Ayıklama (CR4.DE)" #. !/flag:pse #: modules/devices/x86/x86_data.c:51 msgctxt "x86-flag" msgid "Page Size Extensions (4MB memory pages)" msgstr "Sayfa Boyutu Uzantıları (4MB bellek sayfaları)" #. !/flag:tsc #: modules/devices/x86/x86_data.c:52 msgctxt "x86-flag" msgid "Time Stamp Counter (RDTSC)" msgstr "Zaman Damgası Sayacı (RDTSC)" #. !/flag:msr #: modules/devices/x86/x86_data.c:53 msgctxt "x86-flag" msgid "Model-Specific Registers (RDMSR, WRMSR)" msgstr "Modele Özgü Kayıtlar (RDMSR, WRMSR)" #. !/flag:pae #: modules/devices/x86/x86_data.c:54 msgctxt "x86-flag" msgid "Physical Address Extensions (support for more than 4GB of RAM)" msgstr "Fiziksel Adres Uzantıları (4GB'dan fazla RAM desteği)" #. !/flag:mce #: modules/devices/x86/x86_data.c:55 msgctxt "x86-flag" msgid "Machine Check Exception" msgstr "Makine Kontrolü İstisnası" #. !/flag:cx8 #: modules/devices/x86/x86_data.c:56 msgctxt "x86-flag" msgid "CMPXCHG8 instruction (64-bit compare-and-swap)" msgstr "CMPXCHG8 talimatı (64-bit karşılaştırma ve değiştirme)" #. !/flag:apic #: modules/devices/x86/x86_data.c:57 msgctxt "x86-flag" msgid "Onboard APIC" msgstr "Yerleşik APIC" #. !/flag:sep #: modules/devices/x86/x86_data.c:58 msgctxt "x86-flag" msgid "SYSENTER/SYSEXIT" msgstr "SİS GİRİŞ/SİS ÇIKIŞ" #. !/flag:mtrr #: modules/devices/x86/x86_data.c:59 msgctxt "x86-flag" msgid "Memory Type Range Registers" msgstr "Bellek Tipi Aralık Kayıtları" #. !/flag:pge #: modules/devices/x86/x86_data.c:60 msgctxt "x86-flag" msgid "Page Global Enable (global bit in PDEs and PTEs)" msgstr "Sayfa Genel Etkinleştir (Pde'lerde ve Pte'lerde genel bit)" #. !/flag:mca #: modules/devices/x86/x86_data.c:61 msgctxt "x86-flag" msgid "Machine Check Architecture" msgstr "Makine Kontrol Mimarisi" #. !/flag:cmov #: modules/devices/x86/x86_data.c:62 msgctxt "x86-flag" msgid "CMOV instructions (conditional move) (also FCMOV)" msgstr "CMOV talimatları (koşullu hareket) (ayrıca FCMOV)" #. !/flag:pat #: modules/devices/x86/x86_data.c:63 msgctxt "x86-flag" msgid "Page Attribute Table" msgstr "Sayfa Öznitelik Tablosu" #. !/flag:pse36 #: modules/devices/x86/x86_data.c:64 msgctxt "x86-flag" msgid "36-bit PSEs (huge pages)" msgstr "36 bit PSE'ler (büyük sayfalar)" #. !/flag:pn #: modules/devices/x86/x86_data.c:65 msgctxt "x86-flag" msgid "Processor serial number" msgstr "İşlemci seri numarası" #. !/flag:clflush #: modules/devices/x86/x86_data.c:66 msgctxt "x86-flag" msgid "Cache Line Flush instruction" msgstr "Önbellek Hat Temizleme talimatı" #. !/flag:dts #: modules/devices/x86/x86_data.c:67 msgctxt "x86-flag" msgid "" "Debug Store (buffer for debugging and profiling instructions), or " "alternately: digital thermal sensor" msgstr "" "Hata Ayıklama Deposu (hata ayıklama ve profil oluşturma talimatları için " "arabellek) veya alternatif olarak: dijital sıcaklık sensörü" #. !/flag:acpi #: modules/devices/x86/x86_data.c:68 msgctxt "x86-flag" msgid "ACPI via MSR (temperature monitoring and clock speed modulation)" msgstr "MSR aracılığıyla ACPI (sıcaklık izleme ve saat hızı modülasyonu)" #. !/flag:mmx #: modules/devices/x86/x86_data.c:69 msgctxt "x86-flag" msgid "Multimedia Extensions" msgstr "Multimedya Uzantıları" #. !/flag:fxsr #: modules/devices/x86/x86_data.c:70 msgctxt "x86-flag" msgid "FXSAVE/FXRSTOR, CR4.OSFXSR" msgstr "FXSAVE/FXRSTOR, CR4.OSFXSR" #. !/flag:sse #: modules/devices/x86/x86_data.c:71 msgctxt "x86-flag" msgid "Intel SSE vector instructions" msgstr "Intel SSE vektör talimatları" #. !/flag:sse2 #: modules/devices/x86/x86_data.c:72 msgctxt "x86-flag" msgid "SSE2" msgstr "SSE2" #. !/flag:ss #: modules/devices/x86/x86_data.c:73 msgctxt "x86-flag" msgid "CPU self snoop" msgstr "CPU kendini gözetleme" #. !/flag:ht #: modules/devices/x86/x86_data.c:74 msgctxt "x86-flag" msgid "Hyper-Threading" msgstr "Yüksek-İş parçacığı" #. !/flag:tm #: modules/devices/x86/x86_data.c:75 msgctxt "x86-flag" msgid "Automatic clock control (Thermal Monitor)" msgstr "Otomatik saat kontrolü (Sıcaklık Monitör)" #. !/flag:ia64 #: modules/devices/x86/x86_data.c:76 msgctxt "x86-flag" msgid "" "Intel Itanium Architecture 64-bit (not to be confused with Intel's 64-bit " "x86 architecture with flag x86-64 or \"AMD64\" bit indicated by flag lm)" msgstr "" "Intel Itanium Mimarisi 64 bit (Intel'in x86-64 işaretli 64 bit x86 " "mimarisiyle veya işaret lm ile gösterilen “AMD64” bitiyle " "karıştırılmamalıdır)" #. !/flag:pbe #: modules/devices/x86/x86_data.c:77 msgctxt "x86-flag" msgid "Pending Break Enable (PBE# pin) wakeup support" msgstr "Beklemede Arayı Etkinleştirme (PBE # pin) uyandırma desteği" #. !/flag:syscall #: modules/devices/x86/x86_data.c:80 msgctxt "x86-flag" msgid "SYSCALL (Fast System Call) and SYSRET (Return From Fast System Call)" msgstr "" "SYSCALL (Hızlı Sistem Çağrısı) ve SYSRET (Hızlı Sistem Çağrısından Dönüş)" #. !/flag:mp #: modules/devices/x86/x86_data.c:81 msgctxt "x86-flag" msgid "Multiprocessing Capable." msgstr "Çoklu İşlem Yeteneği." #. !/flag:nx #: modules/devices/x86/x86_data.c:82 msgctxt "x86-flag" msgid "Execute Disable" msgstr "Devre Dışı Bırak" #. !/flag:mmxext #: modules/devices/x86/x86_data.c:83 msgctxt "x86-flag" msgid "AMD MMX extensions" msgstr "AMD MMX uzantıları" #. !/flag:fxsr_opt #: modules/devices/x86/x86_data.c:84 msgctxt "x86-flag" msgid "FXSAVE/FXRSTOR optimizations" msgstr "FXSAVE / FXRSTOR optimizasyonları" #. !/flag:pdpe1gb #: modules/devices/x86/x86_data.c:85 msgctxt "x86-flag" msgid "One GB pages (allows hugepagesz=1G)" msgstr "Bir GB sayfa (büyüksayfalar = 1G'ye izin verir)" #. !/flag:rdtscp #: modules/devices/x86/x86_data.c:86 msgctxt "x86-flag" msgid "Read Time-Stamp Counter and Processor ID" msgstr "Zaman Damgası Sayacını ve İşlemci Kimliğini Oku" #. !/flag:lm #: modules/devices/x86/x86_data.c:87 msgctxt "x86-flag" msgid "Long Mode (x86-64: amd64, also known as Intel 64, i.e. 64-bit capable)" msgstr "" "Uzun Mod (x86-64: amd64, Intel 64 olarak da bilinir, yani 64 bit özellikli)" #. !/flag:3dnow #: modules/devices/x86/x86_data.c:88 msgctxt "x86-flag" msgid "3DNow! (AMD vector instructions, competing with Intel's SSE1)" msgstr "3BŞimdi! (Intel'in SSE1 ile rekabet eden AMD vektör talimatları)" #. !/flag:3dnowext #: modules/devices/x86/x86_data.c:89 msgctxt "x86-flag" msgid "AMD 3DNow! extensions" msgstr "AMD 3BŞimdi! uzantıları" #. !/flag:recovery #: modules/devices/x86/x86_data.c:91 msgctxt "x86-flag" msgid "CPU in recovery mode" msgstr "Kurtarma modunda CPU" #. !/flag:longrun #: modules/devices/x86/x86_data.c:92 msgctxt "x86-flag" msgid "Longrun power control" msgstr "Uzun süreli güç kontrolü" #. !/flag:lrti #: modules/devices/x86/x86_data.c:93 msgctxt "x86-flag" msgid "LongRun table interface" msgstr "Uzun koşu tablo arayüzü" #. !/flag:cxmmx #: modules/devices/x86/x86_data.c:95 msgctxt "x86-flag" msgid "Cyrix MMX extensions" msgstr "Cyrix MMX uzantıları" #. !/flag:k6_mtrr #: modules/devices/x86/x86_data.c:96 msgctxt "x86-flag" msgid "AMD K6 nonstandard MTRRs" msgstr "AMD K6 standart olmayan MTRR'ler" #. !/flag:cyrix_arr #: modules/devices/x86/x86_data.c:97 msgctxt "x86-flag" msgid "Cyrix ARRs (= MTRRs)" msgstr "Cyrix ARRs (= MTRRs)" #. !/flag:centaur_mcr #: modules/devices/x86/x86_data.c:98 msgctxt "x86-flag" msgid "Centaur MCRs (= MTRRs)" msgstr "Centaur MCRs (= MTRRs)" #. !/flag:constant_tsc #: modules/devices/x86/x86_data.c:99 msgctxt "x86-flag" msgid "TSC ticks at a constant rate" msgstr "TSC sabit bir oranda geçiyor" #. !/flag:up #: modules/devices/x86/x86_data.c:100 msgctxt "x86-flag" msgid "SMP kernel running on UP" msgstr "UP'de çalışan SMP çekirdeği" #. !/flag:art #: modules/devices/x86/x86_data.c:101 msgctxt "x86-flag" msgid "Always-Running Timer" msgstr "Her Zaman Çalışan Zamanlayıcı" #. !/flag:arch_perfmon #: modules/devices/x86/x86_data.c:102 msgctxt "x86-flag" msgid "Intel Architectural PerfMon" msgstr "Intel Mimari PerfMon" #. !/flag:pebs #: modules/devices/x86/x86_data.c:103 msgctxt "x86-flag" msgid "Precise-Event Based Sampling" msgstr "Kesin Olay Bazlı Örnekleme" #. !/flag:bts #: modules/devices/x86/x86_data.c:104 msgctxt "x86-flag" msgid "Branch Trace Store" msgstr "Şube İzleme Mağazası" #. !/flag:rep_good #: modules/devices/x86/x86_data.c:105 msgctxt "x86-flag" msgid "rep microcode works well" msgstr "rep mikro kodu iyi çalışıyor" #. !/flag:acc_power #: modules/devices/x86/x86_data.c:106 msgctxt "x86-flag" msgid "AMD accumulated power mechanism" msgstr "AMD birikmiş güç mekanizması" #. !/flag:nopl #: modules/devices/x86/x86_data.c:107 msgctxt "x86-flag" msgid "The NOPL (0F 1F) instructions" msgstr "NOPL (0F 1F) talimatları" #. !/flag:xtopology #: modules/devices/x86/x86_data.c:108 msgctxt "x86-flag" msgid "cpu topology enum extensions" msgstr "cpu topolojisi numaralandırma uzantıları" #. !/flag:tsc_reliable #: modules/devices/x86/x86_data.c:109 msgctxt "x86-flag" msgid "TSC is known to be reliable" msgstr "TSC'nin güvenilir olduğu biliniyor" #. !/flag:nonstop_tsc #: modules/devices/x86/x86_data.c:110 msgctxt "x86-flag" msgid "TSC does not stop in C states" msgstr "TSC, C bölgelerinde durmuyor" #. !/flag:extd_apicid #: modules/devices/x86/x86_data.c:111 msgctxt "x86-flag" msgid "has extended APICID (8 bits)" msgstr "APICID'yi (8 bit) genişletti" #. !/flag:amd_dcm #: modules/devices/x86/x86_data.c:112 msgctxt "x86-flag" msgid "multi-node processor" msgstr "çok düğümlü işlemci" #. !/flag:aperfmperf #: modules/devices/x86/x86_data.c:113 msgctxt "x86-flag" msgid "APERFMPERF" msgstr "APERFMPERF" #. !/flag:eagerfpu #: modules/devices/x86/x86_data.c:114 msgctxt "x86-flag" msgid "Non lazy FPU restore" msgstr "Tembel olmayan FPU geri yüklemesi" #. !/flag:nonstop_tsc_s3 #: modules/devices/x86/x86_data.c:115 msgctxt "x86-flag" msgid "TSC doesn't stop in S3 state" msgstr "TSC S3 durumunda durmuyor" #. !/flag:mce_recovery #: modules/devices/x86/x86_data.c:116 msgctxt "x86-flag" msgid "CPU has recoverable machine checks" msgstr "CPU'da kurtarılabilir makine kontrolleri var" #. !/flag:pni #: modules/devices/x86/x86_data.c:119 msgctxt "x86-flag" msgid "SSE-3 (\"Prescott New Instructions\")" msgstr "SSE-3 (“Prescott Yeni Talimatlar”)" #. !/flag:pclmulqdq #: modules/devices/x86/x86_data.c:120 msgctxt "x86-flag" msgid "" "Perform a Carry-Less Multiplication of Quadword instruction - accelerator " "for GCM)" msgstr "" "Quadword talimatının Carry-Less Çarpımını gerçekleştirin - GCM için " "hızlandırıcı)" #. !/flag:dtes64 #: modules/devices/x86/x86_data.c:121 msgctxt "x86-flag" msgid "64-bit Debug Store" msgstr "64-bit Hata Ayıklama Deposu" #. !/flag:monitor #: modules/devices/x86/x86_data.c:122 msgctxt "x86-flag" msgid "Monitor/Mwait support (Intel SSE3 supplements)" msgstr "Monitor / Mwait desteği (Intel SSE3 ekleri)" #. !/flag:ds_cpl #: modules/devices/x86/x86_data.c:123 msgctxt "x86-flag" msgid "CPL Qual. Debug Store" msgstr "CPL Kalitesi Hata Ayıklama Deposu" #. !/flag:vmx #: modules/devices/x86/x86_data.c:124 msgctxt "x86-flag" msgid "Hardware virtualization, Intel VMX" msgstr "Donanım sanallaştırma, Intel VMX" #. !/flag:smx #: modules/devices/x86/x86_data.c:125 msgctxt "x86-flag" msgid "Safer mode TXT (TPM support)" msgstr "Daha güvenli mod TXT (TPM desteği)" #. !/flag:est #: modules/devices/x86/x86_data.c:126 msgctxt "x86-flag" msgid "Enhanced SpeedStep" msgstr "Gelişmiş Hız Adımı" #. !/flag:tm2 #: modules/devices/x86/x86_data.c:127 msgctxt "x86-flag" msgid "Thermal Monitor 2" msgstr "Sıcaklık Monitörü 2" #. !/flag:ssse3 #: modules/devices/x86/x86_data.c:128 msgctxt "x86-flag" msgid "Supplemental SSE-3" msgstr "Tamamlayıcı SSE-3" #. !/flag:cid #: modules/devices/x86/x86_data.c:129 msgctxt "x86-flag" msgid "Context ID" msgstr "Bağlam Kimliği" #. !/flag:sdbg #: modules/devices/x86/x86_data.c:130 msgctxt "x86-flag" msgid "silicon debug" msgstr "silikon hata ayıklama" #. !/flag:fma #: modules/devices/x86/x86_data.c:131 msgctxt "x86-flag" msgid "Fused multiply-add" msgstr "Kaynaşmış çarpma-ekleme" #. !/flag:cx16 #: modules/devices/x86/x86_data.c:132 msgctxt "x86-flag" msgid "CMPXCHG16B" msgstr "CMPXCHG16B" #. !/flag:xtpr #: modules/devices/x86/x86_data.c:133 msgctxt "x86-flag" msgid "Send Task Priority Messages" msgstr "Görev Öncelikli Mesajları Gönderin" #. !/flag:pdcm #: modules/devices/x86/x86_data.c:134 msgctxt "x86-flag" msgid "Performance Capabilities" msgstr "Performans Yetenekleri" #. !/flag:pcid #: modules/devices/x86/x86_data.c:135 msgctxt "x86-flag" msgid "Process Context Identifiers" msgstr "İşlem Bağlam Tanımlayıcıları" #. !/flag:dca #: modules/devices/x86/x86_data.c:136 msgctxt "x86-flag" msgid "Direct Cache Access" msgstr "Doğrudan Önbellek Erişimi" #. !/flag:sse4_1 #: modules/devices/x86/x86_data.c:137 msgctxt "x86-flag" msgid "SSE-4.1" msgstr "SSE-4.1" #. !/flag:sse4_2 #: modules/devices/x86/x86_data.c:138 msgctxt "x86-flag" msgid "SSE-4.2" msgstr "SSE-4.2" #. !/flag:x2apic #: modules/devices/x86/x86_data.c:139 msgctxt "x86-flag" msgid "x2APIC" msgstr "x2APIC" #. !/flag:movbe #: modules/devices/x86/x86_data.c:140 msgctxt "x86-flag" msgid "Move Data After Swapping Bytes instruction" msgstr "Bayt Değiştirildikten Sonra Verileri Taşı talimatı" #. !/flag:popcnt #: modules/devices/x86/x86_data.c:141 msgctxt "x86-flag" msgid "" "Return the Count of Number of Bits Set to 1 instruction (Hamming weight, i." "e. bit count)" msgstr "" "1 komuta ayarlanmış Bit Sayısı Sayısını döndür (Hamming ağırlığı, yani bit " "sayısı)" #: modules/devices/x86/x86_data.c:142 msgctxt "x86-flag" msgid "Tsc deadline timer" msgstr "Tsc son tarih zamanlayıcı" #. !/flag:aes/aes-ni #: modules/devices/x86/x86_data.c:143 msgctxt "x86-flag" msgid "Advanced Encryption Standard (New Instructions)" msgstr "Gelişmiş Şifreleme Standardı (Yeni Talimatlar)" #. !/flag:xsave #: modules/devices/x86/x86_data.c:144 msgctxt "x86-flag" msgid "Save Processor Extended States: also provides XGETBY,XRSTOR,XSETBY" msgstr "" "İşlemci Genişletilmiş Durumlarını Kaydet: ayrıca XGETBY, XRSTOR, XSETBY " "sağlar" #. !/flag:avx #: modules/devices/x86/x86_data.c:145 msgctxt "x86-flag" msgid "Advanced Vector Extensions" msgstr "Gelişmiş Vektör Uzantıları" #. !/flag:f16c #: modules/devices/x86/x86_data.c:146 msgctxt "x86-flag" msgid "16-bit fp conversions (CVT16)" msgstr "16 bit fp dönüşümleri (CVT16)" #. !/flag:rdrand #: modules/devices/x86/x86_data.c:147 msgctxt "x86-flag" msgid "Read Random Number from hardware random number generator instruction" msgstr "Donanım rasgele sayı üreteci talimatından Rasgele Sayı okuyun" #. !/flag:hypervisor #: modules/devices/x86/x86_data.c:148 msgctxt "x86-flag" msgid "Running on a hypervisor" msgstr "Bir hiper yönetici üzerinde çalıştırma" #. !/flag:rng #: modules/devices/x86/x86_data.c:150 msgctxt "x86-flag" msgid "Random Number Generator present (xstore)" msgstr "Rastgele Sayı Üreticisi mevcut (xstore)" #. !/flag:rng_en #: modules/devices/x86/x86_data.c:151 msgctxt "x86-flag" msgid "Random Number Generator enabled" msgstr "Rastgele Sayı Üreticisi etkinleştirildi" #. !/flag:ace #: modules/devices/x86/x86_data.c:152 msgctxt "x86-flag" msgid "on-CPU crypto (xcrypt)" msgstr "CPU üzerinde kripto (xcrypt)" #. !/flag:ace_en #: modules/devices/x86/x86_data.c:153 msgctxt "x86-flag" msgid "on-CPU crypto enabled" msgstr "CPU üzerinde kripto etkin" #. !/flag:ace2 #: modules/devices/x86/x86_data.c:154 msgctxt "x86-flag" msgid "Advanced Cryptography Engine v2" msgstr "Gelişmiş Şifreleme Motoru v2" #. !/flag:ace2_en #: modules/devices/x86/x86_data.c:155 msgctxt "x86-flag" msgid "ACE v2 enabled" msgstr "ACE v2 etkin" #. !/flag:phe #: modules/devices/x86/x86_data.c:156 msgctxt "x86-flag" msgid "PadLock Hash Engine" msgstr "PadLock Karma Motoru" #. !/flag:phe_en #: modules/devices/x86/x86_data.c:157 msgctxt "x86-flag" msgid "PHE enabled" msgstr "PHE etkin" #. !/flag:pmm #: modules/devices/x86/x86_data.c:158 msgctxt "x86-flag" msgid "PadLock Montgomery Multiplier" msgstr "PadLock Montgomery Çarpanı" #. !/flag:pmm_en #: modules/devices/x86/x86_data.c:159 msgctxt "x86-flag" msgid "PMM enabled" msgstr "PMM etkin" #. !/flag:lahf_lm #: modules/devices/x86/x86_data.c:161 msgctxt "x86-flag" msgid "Load AH from Flags (LAHF) and Store AH into Flags (SAHF) in long mode" msgstr "" "AH'yi Flags'den (LAHF) yükleyin ve AH'yi Flags'e (SAHF) uzun modda kaydedin" #. !/flag:cmp_legacy #: modules/devices/x86/x86_data.c:162 msgctxt "x86-flag" msgid "If yes HyperThreading not valid" msgstr "Evetse, HyperThreading geçerli değil" #. !/flag:svm #: modules/devices/x86/x86_data.c:163 msgctxt "x86-flag" msgid "\"Secure virtual machine\": AMD-V" msgstr "“Güvenli sanal makine“: AMD-V" #. !/flag:extapic #: modules/devices/x86/x86_data.c:164 msgctxt "x86-flag" msgid "Extended APIC space" msgstr "Genişletilmiş APIC alanı" #. !/flag:cr8_legacy #: modules/devices/x86/x86_data.c:165 msgctxt "x86-flag" msgid "CR8 in 32-bit mode" msgstr "32 bit modunda CR8" #. !/flag:abm #: modules/devices/x86/x86_data.c:166 msgctxt "x86-flag" msgid "Advanced Bit Manipulation" msgstr "Gelişmiş Bit Manipülasyonu" #. !/flag:sse4a #: modules/devices/x86/x86_data.c:167 msgctxt "x86-flag" msgid "SSE-4A" msgstr "SSE-4A" #. !/flag:misalignsse #: modules/devices/x86/x86_data.c:168 msgctxt "x86-flag" msgid "" "indicates if a general-protection exception (#GP) is generated when some " "legacy SSE instructions operate on unaligned data. Also depends on CR0 and " "Alignment Checking bit" msgstr "" "bazı eski SSE talimatları hizalanmamış veriler üzerinde çalışırken bir genel " "koruma istisnasının (#GP) oluşturulup oluşturulmadığını belirtir. Ayrıca CR0 " "ve Hizalama Kontrol bitine bağlıdır" #. !/flag:3dnowprefetch #: modules/devices/x86/x86_data.c:169 msgctxt "x86-flag" msgid "3DNow prefetch instructions" msgstr "3BŞimdi önceden getirme talimatları" #. !/flag:osvw #: modules/devices/x86/x86_data.c:170 msgctxt "x86-flag" msgid "" "indicates OS Visible Workaround, which allows the OS to work around " "processor errata." msgstr "" "işletim Sisteminin işlemci hataları etrafında çalışmasına izin veren İşletim " "Sistemi Görünür Geçici Çözümünü belirtir." #. !/flag:ibs #: modules/devices/x86/x86_data.c:171 msgctxt "x86-flag" msgid "Instruction Based Sampling" msgstr "Talimat Tabanlı Örnekleme" #. !/flag:xop #: modules/devices/x86/x86_data.c:172 msgctxt "x86-flag" msgid "extended AVX instructions" msgstr "genişletilmiş AVX talimatları" #. !/flag:skinit #: modules/devices/x86/x86_data.c:173 msgctxt "x86-flag" msgid "SKINIT/STGI instructions" msgstr "SKINIT / STGI talimatları" #. !/flag:wdt #: modules/devices/x86/x86_data.c:174 msgctxt "x86-flag" msgid "Watchdog timer" msgstr "Watchdog zamanlayıcı" #. !/flag:lwp #: modules/devices/x86/x86_data.c:175 msgctxt "x86-flag" msgid "Light Weight Profiling" msgstr "Hafif Profilleme" #. !/flag:fma4 #: modules/devices/x86/x86_data.c:176 msgctxt "x86-flag" msgid "4 operands MAC instructions" msgstr "4 işlenen MAC talimatları" #. !/flag:tce #: modules/devices/x86/x86_data.c:177 msgctxt "x86-flag" msgid "translation cache extension" msgstr "çeviri önbellek uzantısı" #. !/flag:nodeid_msr #: modules/devices/x86/x86_data.c:178 msgctxt "x86-flag" msgid "NodeId MSR" msgstr "NodeId MSR" #. !/flag:tbm #: modules/devices/x86/x86_data.c:179 msgctxt "x86-flag" msgid "Trailing Bit Manipulation" msgstr "Sondaki Bit Manipülasyonu" #. !/flag:topoext #: modules/devices/x86/x86_data.c:180 msgctxt "x86-flag" msgid "Topology Extensions CPUID leafs" msgstr "Topoloji Uzantıları CPUID yaprakları" #. !/flag:perfctr_core #: modules/devices/x86/x86_data.c:181 msgctxt "x86-flag" msgid "Core Performance Counter Extensions" msgstr "Çekirdek Performans Sayacı Uzantıları" #. !/flag:perfctr_nb #: modules/devices/x86/x86_data.c:182 msgctxt "x86-flag" msgid "NB Performance Counter Extensions" msgstr "NB Performans Sayacı Uzantıları" #. !/flag:bpext #: modules/devices/x86/x86_data.c:183 msgctxt "x86-flag" msgid "data breakpoint extension" msgstr "veri kesme noktası uzantısı" #. !/flag:ptsc #: modules/devices/x86/x86_data.c:184 msgctxt "x86-flag" msgid "performance time-stamp counter" msgstr "performans zaman damgası sayacı" #. !/flag:perfctr_l2 #: modules/devices/x86/x86_data.c:185 msgctxt "x86-flag" msgid "L2 Performance Counter Extensions" msgstr "L2 Performans Sayacı Uzantıları" #. !/flag:mwaitx #: modules/devices/x86/x86_data.c:186 msgctxt "x86-flag" msgid "MWAIT extension (MONITORX/MWAITX)" msgstr "MWAIT uzantısı (MONITORX / MWAITX)" #. !/flag:cpb #: modules/devices/x86/x86_data.c:188 msgctxt "x86-flag" msgid "AMD Core Performance Boost" msgstr "AMD Çekirdek Performans Artışı" #. !/flag:epb #: modules/devices/x86/x86_data.c:189 msgctxt "x86-flag" msgid "IA32_ENERGY_PERF_BIAS support" msgstr "IA32_ENERJİ_PERFORMANS_EĞİLİMİ desteği" #. !/flag:hw_pstate #: modules/devices/x86/x86_data.c:190 msgctxt "x86-flag" msgid "AMD HW-PState" msgstr "AMD HW-PState" #. !/flag:proc_feedback #: modules/devices/x86/x86_data.c:191 msgctxt "x86-flag" msgid "AMD ProcFeedbackInterface" msgstr "AMD Pro Geri Bildirim Arayüzü" #. !/flag:intel_pt #: modules/devices/x86/x86_data.c:192 msgctxt "x86-flag" msgid "Intel Processor Tracing" msgstr "Intel İşlemci İzleme" #. !/flag:tpr_shadow #: modules/devices/x86/x86_data.c:194 msgctxt "x86-flag" msgid "Intel TPR Shadow" msgstr "Intel TPR Gölgesi" #. !/flag:vnmi #: modules/devices/x86/x86_data.c:195 msgctxt "x86-flag" msgid "Intel Virtual NMI" msgstr "Intel Sanal NMI" #. !/flag:flexpriority #: modules/devices/x86/x86_data.c:196 msgctxt "x86-flag" msgid "Intel FlexPriority" msgstr "Intel Flex Önceliği" #. !/flag:ept #: modules/devices/x86/x86_data.c:197 msgctxt "x86-flag" msgid "Intel Extended Page Table" msgstr "Intel Genişletilmiş Sayfa Tablosu" #. !/flag:vpid #: modules/devices/x86/x86_data.c:198 msgctxt "x86-flag" msgid "Intel Virtual Processor ID" msgstr "Intel Sanal İşlemci Kimliği" #. !/flag:vmmcall #: modules/devices/x86/x86_data.c:199 msgctxt "x86-flag" msgid "prefer VMMCALL to VMCALL" msgstr "VMMCALL'u VMCALL'a tercih edin" #. !/flag:fsgsbase #: modules/devices/x86/x86_data.c:201 msgctxt "x86-flag" msgid "{RD/WR}{FS/GS}BASE instructions" msgstr "{RD/WR}{FS/GS}TABAN talimatları" #. !/flag:tsc_adjust #: modules/devices/x86/x86_data.c:202 msgctxt "x86-flag" msgid "TSC adjustment MSR" msgstr "TSC ayarı MSR" #. !/flag:bmi1 #: modules/devices/x86/x86_data.c:203 msgctxt "x86-flag" msgid "1st group bit manipulation extensions" msgstr "1. grup bit manipülasyon uzantıları" #. !/flag:hle #: modules/devices/x86/x86_data.c:204 msgctxt "x86-flag" msgid "Hardware Lock Elision" msgstr "Donanım Kilidi Elision" #. !/flag:avx2 #: modules/devices/x86/x86_data.c:205 msgctxt "x86-flag" msgid "AVX2 instructions" msgstr "AVX2 talimatları" #. !/flag:smep #: modules/devices/x86/x86_data.c:206 msgctxt "x86-flag" msgid "Supervisor Mode Execution Protection" msgstr "Süpervizör Modu Yürütme Koruması" #. !/flag:bmi2 #: modules/devices/x86/x86_data.c:207 msgctxt "x86-flag" msgid "2nd group bit manipulation extensions" msgstr "2. grup bit işleme uzantıları" #. !/flag:erms #: modules/devices/x86/x86_data.c:208 msgctxt "x86-flag" msgid "Enhanced REP MOVSB/STOSB" msgstr "Gelişmiş REP MOVSB / STOSB" #. !/flag:invpcid #: modules/devices/x86/x86_data.c:209 msgctxt "x86-flag" msgid "Invalidate Processor Context ID" msgstr "İşlemci Bağlam Kimliğini Geçersiz Kıl" #. !/flag:rtm #: modules/devices/x86/x86_data.c:210 msgctxt "x86-flag" msgid "Restricted Transactional Memory" msgstr "Sınırlandırılmış İşlem Belleği" #. !/flag:cqm #: modules/devices/x86/x86_data.c:211 msgctxt "x86-flag" msgid "Cache QoS Monitoring" msgstr "Önbellek QoS İzleme" #. !/flag:mpx #: modules/devices/x86/x86_data.c:212 msgctxt "x86-flag" msgid "Memory Protection Extension" msgstr "Bellek Koruma Uzantısı" #. !/flag:avx512f #: modules/devices/x86/x86_data.c:213 msgctxt "x86-flag" msgid "AVX-512 foundation" msgstr "AVX-512 temeli" #. !/flag:avx512dq #: modules/devices/x86/x86_data.c:214 msgctxt "x86-flag" msgid "AVX-512 Double/Quad instructions" msgstr "AVX-512 Çift / Dörtlü talimatlar" #. !/flag:rdseed #: modules/devices/x86/x86_data.c:215 msgctxt "x86-flag" msgid "The RDSEED instruction" msgstr "RDSEED talimatı" #. !/flag:adx #: modules/devices/x86/x86_data.c:216 msgctxt "x86-flag" msgid "The ADCX and ADOX instructions" msgstr "ADCX ve ADOX talimatları" #. !/flag:smap #: modules/devices/x86/x86_data.c:217 msgctxt "x86-flag" msgid "Supervisor Mode Access Prevention" msgstr "Gözetmen Modu Erişim Engelleme" #. !/flag:clflushopt #: modules/devices/x86/x86_data.c:218 msgctxt "x86-flag" msgid "CLFLUSHOPT instruction" msgstr "CLFLUSHOPT talimatı" #. !/flag:clwb #: modules/devices/x86/x86_data.c:219 msgctxt "x86-flag" msgid "CLWB instruction" msgstr "CLWB talimatı" #. !/flag:avx512pf #: modules/devices/x86/x86_data.c:220 msgctxt "x86-flag" msgid "AVX-512 Prefetch" msgstr "AVX-512 Ön Getirme" #. !/flag:avx512er #: modules/devices/x86/x86_data.c:221 msgctxt "x86-flag" msgid "AVX-512 Exponential and Reciprocal" msgstr "AVX-512 Üstel ve Karşılıklı" #. !/flag:avx512cd #: modules/devices/x86/x86_data.c:222 msgctxt "x86-flag" msgid "AVX-512 Conflict Detection" msgstr "AVX-512 Çakışma Algılama" #. !/flag:sha_ni #: modules/devices/x86/x86_data.c:223 msgctxt "x86-flag" msgid "SHA1/SHA256 Instruction Extensions" msgstr "SHA1 / SHA256 Talimat Uzantıları" #. !/flag:avx512bw #: modules/devices/x86/x86_data.c:224 msgctxt "x86-flag" msgid "AVX-512 Byte/Word instructions" msgstr "AVX-512 Bayt / Kelime talimatları" #. !/flag:avx512vl #: modules/devices/x86/x86_data.c:225 msgctxt "x86-flag" msgid "AVX-512 128/256 Vector Length extensions" msgstr "AVX-512 128/256 Vektör Uzunluğu uzantıları" #. !/flag:xsaveopt #: modules/devices/x86/x86_data.c:227 msgctxt "x86-flag" msgid "Optimized XSAVE" msgstr "Optimize edilmiş XSAVE" #. !/flag:xsavec #: modules/devices/x86/x86_data.c:228 msgctxt "x86-flag" msgid "XSAVEC" msgstr "XSAVEC" #. !/flag:xgetbv1 #: modules/devices/x86/x86_data.c:229 msgctxt "x86-flag" msgid "XGETBV with ECX = 1" msgstr "ECX = 1 ile XGETBV" #. !/flag:xsaves #: modules/devices/x86/x86_data.c:230 msgctxt "x86-flag" msgid "XSAVES/XRSTORS" msgstr "XSAVES/XRSTORS" #. !/flag:cqm_llc #: modules/devices/x86/x86_data.c:232 msgctxt "x86-flag" msgid "LLC QoS" msgstr "LLC QoS" #. !/flag:cqm_occup_llc #: modules/devices/x86/x86_data.c:234 msgctxt "x86-flag" msgid "LLC occupancy monitoring" msgstr "LLC doluluk izleme" #. !/flag:cqm_mbm_total #: modules/devices/x86/x86_data.c:235 msgctxt "x86-flag" msgid "LLC total MBM monitoring" msgstr "LLC toplam MBM izleme" #. !/flag:cqm_mbm_local #: modules/devices/x86/x86_data.c:236 msgctxt "x86-flag" msgid "LLC local MBM monitoring" msgstr "LLC yerel MBM izleme" #. !/flag:clzero #: modules/devices/x86/x86_data.c:238 msgctxt "x86-flag" msgid "CLZERO instruction" msgstr "CLZERO talimatı" #. !/flag:irperf #: modules/devices/x86/x86_data.c:239 msgctxt "x86-flag" msgid "instructions retired performance counter" msgstr "talimatlar emekli performans sayacı" #. !/flag:dtherm #: modules/devices/x86/x86_data.c:241 msgctxt "x86-flag" msgid "digital thermal sensor" msgstr "dijital sıcaklık sensörü" #. !/flag:ida #: modules/devices/x86/x86_data.c:242 msgctxt "x86-flag" msgid "Intel Dynamic Acceleration" msgstr "Intel Dinamik Hızlandırma" #. !/flag:arat #: modules/devices/x86/x86_data.c:243 msgctxt "x86-flag" msgid "Always Running APIC Timer" msgstr "Daima Çalışan APIC Zamanlayıcı" #. !/flag:pln #: modules/devices/x86/x86_data.c:244 msgctxt "x86-flag" msgid "Intel Power Limit Notification" msgstr "Intel Güç Sınırı Bildirimi" #. !/flag:pts #: modules/devices/x86/x86_data.c:245 msgctxt "x86-flag" msgid "Intel Package Thermal Status" msgstr "Intel Paket Sıcaklık Durumu" #. !/flag:hwp #: modules/devices/x86/x86_data.c:246 msgctxt "x86-flag" msgid "Intel Hardware P-states" msgstr "Intel Donanım P durumları" #. !/flag:hwp_notify #: modules/devices/x86/x86_data.c:247 msgctxt "x86-flag" msgid "HWP notification" msgstr "HWP bildirimi" #. !/flag:hwp_act_window #: modules/devices/x86/x86_data.c:248 msgctxt "x86-flag" msgid "HWP Activity Window" msgstr "HWP Etkinlik Penceresi" #. !/flag:hwp_epp #: modules/devices/x86/x86_data.c:249 msgctxt "x86-flag" msgid "HWP Energy Performance Preference" msgstr "HWP Enerji Performans Tercihi" #. !/flag:hwp_pkg_req #: modules/devices/x86/x86_data.c:250 msgctxt "x86-flag" msgid "HWP package-level request" msgstr "HWP paket düzeyinde istek" #. !/flag:npt #: modules/devices/x86/x86_data.c:252 msgctxt "x86-flag" msgid "AMD Nested Page Table support" msgstr "AMD İç İçe Sayfa Tablosu desteği" #. !/flag:lbrv #: modules/devices/x86/x86_data.c:253 msgctxt "x86-flag" msgid "AMD LBR Virtualization support" msgstr "AMD LBR Sanallaştırma desteği" #. !/flag:svm_lock #: modules/devices/x86/x86_data.c:254 msgctxt "x86-flag" msgid "AMD SVM locking MSR" msgstr "AMD SVM kilitleme MSR" #. !/flag:nrip_save #: modules/devices/x86/x86_data.c:255 msgctxt "x86-flag" msgid "AMD SVM next_rip save" msgstr "AMD SVM sonraki_rip kaydetme" #. !/flag:tsc_scale #: modules/devices/x86/x86_data.c:256 msgctxt "x86-flag" msgid "AMD TSC scaling support" msgstr "AMD TSC ölçeklendirme desteği" #. !/flag:vmcb_clean #: modules/devices/x86/x86_data.c:257 msgctxt "x86-flag" msgid "AMD VMCB clean bits support" msgstr "AMD VMCB temiz bit desteği" #. !/flag:flushbyasid #: modules/devices/x86/x86_data.c:258 msgctxt "x86-flag" msgid "AMD flush-by-ASID support" msgstr "AMD flush-by-ASID desteği" #. !/flag:decodeassists #: modules/devices/x86/x86_data.c:259 msgctxt "x86-flag" msgid "AMD Decode Assists support" msgstr "AMD Decode Assists desteği" #. !/flag:pausefilter #: modules/devices/x86/x86_data.c:260 msgctxt "x86-flag" msgid "AMD filtered pause intercept" msgstr "AMD filtreli duraklatma engellemesi" #. !/flag:pfthreshold #: modules/devices/x86/x86_data.c:261 msgctxt "x86-flag" msgid "AMD pause filter threshold" msgstr "AMD duraklatma filtresi eşiği" #. !/flag:avic #: modules/devices/x86/x86_data.c:262 msgctxt "x86-flag" msgid "Virtual Interrupt Controller" msgstr "Sanal Kesme Denetleyicisi" #. !/flag:pku #: modules/devices/x86/x86_data.c:264 msgctxt "x86-flag" msgid "Protection Keys for Userspace" msgstr "Kullanıcı Alanı için Koruma Anahtarları" #. !/flag:ospke #: modules/devices/x86/x86_data.c:265 msgctxt "x86-flag" msgid "OS Protection Keys Enable" msgstr "İşletim Sistemi Koruma Anahtarlarını Etkinleştir" #. !/flag:overflow_recov #: modules/devices/x86/x86_data.c:267 msgctxt "x86-flag" msgid "MCA overflow recovery support" msgstr "MCA taşma kurtarma desteği" #. !/flag:succor #: modules/devices/x86/x86_data.c:268 msgctxt "x86-flag" msgid "uncorrectable error containment and recovery" msgstr "düzeltilemez hata önleme ve kurtarma" #. !/flag:smca #: modules/devices/x86/x86_data.c:269 msgctxt "x86-flag" msgid "Scalable MCA" msgstr "Ölçeklenebilir MCA" #. !/bug:f00f #: modules/devices/x86/x86_data.c:272 msgctxt "x86-flag" msgid "Intel F00F bug" msgstr "Intel F00F hatası" #. !/bug:fdiv #: modules/devices/x86/x86_data.c:273 msgctxt "x86-flag" msgid "FPU FDIV" msgstr "FPU FDIV" #. !/bug:coma #: modules/devices/x86/x86_data.c:274 msgctxt "x86-flag" msgid "Cyrix 6x86 coma" msgstr "Cyrix 6x86 coma" #. !/bug:tlb_mmatch #: modules/devices/x86/x86_data.c:275 msgctxt "x86-flag" msgid "AMD Erratum 383" msgstr "AMD Erratum 383" #. !/bug:apic_c1e #. !/bug:amd_e400 #: modules/devices/x86/x86_data.c:276 modules/devices/x86/x86_data.c:285 msgctxt "x86-flag" msgid "AMD Erratum 400" msgstr "AMD Erratum 400" #. !/bug:11ap #: modules/devices/x86/x86_data.c:277 msgctxt "x86-flag" msgid "Bad local APIC aka 11AP" msgstr "Kötü yerel APIC, 11AP" #. !/bug:fxsave_leak #: modules/devices/x86/x86_data.c:278 msgctxt "x86-flag" msgid "FXSAVE leaks FOP/FIP/FOP" msgstr "FXSAVE FOP/FIP/FOP sızdırıyor" #. !/bug:clflush_monitor #: modules/devices/x86/x86_data.c:279 msgctxt "x86-flag" msgid "AAI65, CLFLUSH required before MONITOR" msgstr "AAI65, CLFLUSH MONITOR'dan önce gereklidir" #. !/bug:sysret_ss_attrs #: modules/devices/x86/x86_data.c:280 msgctxt "x86-flag" msgid "SYSRET doesn't fix up SS attrs" msgstr "SYSRET, SS özniteliklerini düzeltmiyor" #. !/bug:espfix #: modules/devices/x86/x86_data.c:281 msgctxt "x86-flag" msgid "IRET to 16-bit SS corrupts ESP/RSP high bits" msgstr "IRET to 16-bit SS, ESP/RSP yüksek bitlerini bozar" #. !/bug:null_seg #: modules/devices/x86/x86_data.c:282 msgctxt "x86-flag" msgid "Nulling a selector preserves the base" msgstr "Bir seçiciyi geçersiz kılmak, tabanı korur" #. !/bug:swapgs_fence #: modules/devices/x86/x86_data.c:283 msgctxt "x86-flag" msgid "SWAPGS without input dep on GS" msgstr "GS üzerinde giriş deposu olmayan SWAPGS" #. !/bug:monitor #: modules/devices/x86/x86_data.c:284 msgctxt "x86-flag" msgid "IPI required to wake up remote CPU" msgstr "Uzak CPU'yu uyandırmak için IPI gerekli" #. !/bug:cpu_insecure & bug:cpu_meltdown #: modules/devices/x86/x86_data.c:286 modules/devices/x86/x86_data.c:287 msgctxt "x86-flag" msgid "" "CPU is affected by meltdown attack and needs kernel page table isolation" msgstr "" "CPU erime saldırısından etkilenir ve çekirdek sayfa tablosu izolasyonuna " "ihtiyaç duyar" #. !/bug:spectre_v1 #: modules/devices/x86/x86_data.c:288 msgctxt "x86-flag" msgid "CPU is affected by Spectre variant 1 attack with conditional branches" msgstr "CPU, koşullu dallara sahip Hayalet varyant 1 saldırısından etkilenir" #. !/bug:spectre_v2 #: modules/devices/x86/x86_data.c:289 msgctxt "x86-flag" msgid "CPU is affected by Spectre variant 2 attack with indirect branches" msgstr "CPU, dolaylı dallarla Hayalet varyant 2 saldırısından etkilenir" #. !/bug:spec_store_bypass #: modules/devices/x86/x86_data.c:290 msgctxt "x86-flag" msgid "CPU is affected by speculative store bypass attack" msgstr "CPU, spekülatif mağaza baypas saldırısından etkilenir" #. !/bug:l1tf #: modules/devices/x86/x86_data.c:291 msgctxt "x86-flag" msgid "CPU is affected by L1 Terminal Fault" msgstr "CPU, L1 Terminal Arızasından etkilenir" #. !/flag:pm:ts #: modules/devices/x86/x86_data.c:294 msgctxt "x86-flag" msgid "temperature sensor" msgstr "sıcaklık sensörü" #. !/flag:pm:fid #: modules/devices/x86/x86_data.c:295 msgctxt "x86-flag" msgid "frequency id control" msgstr "frekans kimliği kontrolü" #. !/flag:pm:vid #: modules/devices/x86/x86_data.c:296 msgctxt "x86-flag" msgid "voltage id control" msgstr "voltaj kimliği kontrolü" #. !/flag:pm:ttp #: modules/devices/x86/x86_data.c:297 msgctxt "x86-flag" msgid "thermal trip" msgstr "ısı gezisi" #. !/flag:pm:tm #: modules/devices/x86/x86_data.c:298 msgctxt "x86-flag" msgid "hardware thermal control" msgstr "donanım ısı kontrolü" #. !/flag:pm:stc #: modules/devices/x86/x86_data.c:299 msgctxt "x86-flag" msgid "software thermal control" msgstr "yazılım ısı kontrolü" #. !/flag:pm:100mhzsteps #: modules/devices/x86/x86_data.c:300 msgctxt "x86-flag" msgid "100 MHz multiplier control" msgstr "100 MHz çarpan kontrolü" #. !/flag:pm:hwpstate #: modules/devices/x86/x86_data.c:301 msgctxt "x86-flag" msgid "hardware P-state control" msgstr "donanım P durumu kontrolü" #. !/flag:pm:cpb #: modules/devices/x86/x86_data.c:302 msgctxt "x86-flag" msgid "core performance boost" msgstr "çekirdek performans artışı" #. !/flag:pm:eff_freq_ro #: modules/devices/x86/x86_data.c:303 msgctxt "x86-flag" msgid "Readonly aperf/mperf" msgstr "Salt okunur aperf/mperf" #. !/flag:pm:proc_feedback #: modules/devices/x86/x86_data.c:304 msgctxt "x86-flag" msgid "processor feedback interface" msgstr "işlemci geri bildirim arayüzü" #. !/flag:pm:acc_power #: modules/devices/x86/x86_data.c:305 msgctxt "x86-flag" msgid "accumulated power mechanism" msgstr "birikmiş güç mekanizması" #: modules/network.c:61 msgid "Interfaces" msgstr "Arayüzler" #: modules/network.c:62 msgid "IP Connections" msgstr "IP Bağlantıları" #: modules/network.c:63 msgid "Routing Table" msgstr "Yönlendirme Tablosu" #: modules/network.c:64 modules/network.c:310 msgid "ARP Table" msgstr "ARP Tablosu" #: modules/network.c:65 msgid "DNS Servers" msgstr "DNS sunucuları" #: modules/network.c:66 msgid "Statistics" msgstr "İstatistikler" #: modules/network.c:67 msgid "Shared Directories" msgstr "Paylaşılan Dizinler" #: modules/network.c:311 modules/network.c:333 modules/network.c:364 #: modules/network/net.c:495 msgid "IP Address" msgstr "IP Adresi" #: modules/network.c:311 msgid "MAC Address" msgstr "MAC Adresi" #: modules/network.c:320 msgid "SAMBA" msgstr "SAMBA" #: modules/network.c:321 msgid "NFS" msgstr "NFS" #: modules/network.c:332 msgid "Name Servers" msgstr "İsim Sunucuları" #: modules/network.c:347 msgid "Connections" msgstr "Bağlantılar" #: modules/network.c:348 msgid "Local Address" msgstr "Yerel Adres" #: modules/network.c:348 msgid "Foreign Address" msgstr "Yabancı Adres" #: modules/network.c:348 msgid "State" msgstr "Durum" #: modules/network.c:364 msgid "Sent" msgstr "Gönderilen" #: modules/network.c:364 msgid "Received" msgstr "Alınan" #: modules/network.c:380 msgid "IP routing table" msgstr "IP yönlendirme tablosu" #: modules/network.c:381 msgid "Destination/Gateway" msgstr "Hedef/Ağ Geçidi" #: modules/network.c:381 modules/network/net.c:496 msgid "Mask" msgstr "Mask" #: modules/network.c:409 msgid "Network" msgstr "Ağ" #: modules/network.c:442 msgid "Gathers information about this computer's network connection" msgstr "Bu bilgisayarın ağ bağlantısı hakkında bilgi toplar" #: modules/network/net.c:74 msgctxt "wi-op-mode" msgid "Auto" msgstr "Otomatik" #: modules/network/net.c:75 msgctxt "wi-op-mode" msgid "Ad-Hoc" msgstr "Ad-Hoc" #: modules/network/net.c:76 msgctxt "wi-op-mode" msgid "Managed" msgstr "Yönetilen" #: modules/network/net.c:77 msgctxt "wi-op-mode" msgid "Master" msgstr "Ana" #: modules/network/net.c:78 msgctxt "wi-op-mode" msgid "Repeater" msgstr "Tekrarlayıcı" #: modules/network/net.c:79 msgctxt "wi-op-mode" msgid "Secondary" msgstr "İkincil" #: modules/network/net.c:80 msgctxt "wi-op-mode" msgid "(Unknown)" msgstr "(Bilinmeyen)" #: modules/network/net.c:268 modules/network/net.c:288 #: modules/network/net.c:296 msgctxt "net-if-type" msgid "Ethernet" msgstr "Ethernet" #: modules/network/net.c:269 msgctxt "net-if-type" msgid "Loopback" msgstr "Geri döngü" #: modules/network/net.c:270 msgctxt "net-if-type" msgid "Point-to-Point" msgstr "Noktadan Noktaya" #: modules/network/net.c:271 modules/network/net.c:272 #: modules/network/net.c:273 modules/network/net.c:274 #: modules/network/net.c:298 msgctxt "net-if-type" msgid "Wireless" msgstr "Wireless" #: modules/network/net.c:275 msgctxt "net-if-type" msgid "Virtual Point-to-Point (TUN)" msgstr "Sanal Noktadan Noktaya (TUN)" #: modules/network/net.c:276 msgctxt "net-if-type" msgid "Ethernet (TAP)" msgstr "Ethernet (TAP)" #: modules/network/net.c:277 msgctxt "net-if-type" msgid "Parallel Line Internet Protocol" msgstr "Paralel Hat İnternet Protokolü" #: modules/network/net.c:278 msgctxt "net-if-type" msgid "Infrared" msgstr "Kızılötesi" #: modules/network/net.c:279 modules/network/net.c:297 msgctxt "net-if-type" msgid "Serial Line Internet Protocol" msgstr "Seri Hat İnternet Protokolü" #: modules/network/net.c:280 msgctxt "net-if-type" msgid "Integrated Services Digital Network" msgstr "Tümleşik Hizmetler Dijital Ağı" #: modules/network/net.c:281 msgctxt "net-if-type" msgid "IPv6-over-IPv4 Tunnel" msgstr "IPv6-over-IPv4 Tüneli" #: modules/network/net.c:282 msgctxt "net-if-type" msgid "VMWare Virtual Network Interface (NAT)" msgstr "VMWare Sanal Ağ Arayüzü (NAT)" #: modules/network/net.c:283 msgctxt "net-if-type" msgid "VMWare Virtual Network Interface" msgstr "VMWare Sanal Ağ Arayüzü" #: modules/network/net.c:284 msgctxt "net-if-type" msgid "Personal Area Network (PAN)" msgstr "Kişisel Alan Ağı (PAN)" #: modules/network/net.c:285 msgctxt "net-if-type" msgid "Bluetooth" msgstr "Bluetooth" #: modules/network/net.c:286 msgctxt "net-if-type" msgid "Bridge Interface" msgstr "Köprü Arayüzü" #: modules/network/net.c:287 msgctxt "net-if-type" msgid "Hamachi Virtual Personal Network" msgstr "Hamachi Sanal Kişisel Ağ" #: modules/network/net.c:289 msgctxt "net-if-type" msgid "Intermediate Functional Block" msgstr "Ara Fonksiyonel Blok" #: modules/network/net.c:290 msgctxt "net-if-type" msgid "GRE Network Tunnel" msgstr "GRE Ağ Tüneli" #: modules/network/net.c:291 msgctxt "net-if-type" msgid "Mesh Network" msgstr "Mesh Ağı" #: modules/network/net.c:292 msgctxt "net-if-type" msgid "Wireless Master Interface" msgstr "Kablosuz Ana Arayüz" #: modules/network/net.c:293 msgctxt "net-if-type" msgid "VirtualBox Virtual Network Interface" msgstr "VirtualBox Sanal Ağ Arayüzü" #: modules/network/net.c:299 msgctxt "net-if-type" msgid "Wireless (WAN)" msgstr "Wireless (WAN)" #: modules/network/net.c:301 msgctxt "net-if-type" msgid "(Unknown)" msgstr "(Bilinmeyen)" #: modules/network/net.c:364 modules/network/net.c:374 msgid "Network Interfaces" msgstr "Ağ Arayüzleri" #: modules/network/net.c:364 msgid "None Found" msgstr "Bulunamadı" #: modules/network/net.c:431 msgid "Network Adapter Properties" msgstr "Ağ Bağdaştırıcısı Özellikleri" #: modules/network/net.c:432 msgid "Interface Type" msgstr "Arayüz Türü" #: modules/network/net.c:433 msgid "Hardware Address (MAC)" msgstr "Donanım Adresi (MAC)" #: modules/network/net.c:437 msgid "MTU" msgstr "MTU" #: modules/network/net.c:439 msgid "Transfer Details" msgstr "Transfer Detayları" #: modules/network/net.c:440 msgid "Bytes Received" msgstr "Bayt Alındı" #: modules/network/net.c:441 msgid "Bytes Sent" msgstr "Bayt Gönderildi" #: modules/network/net.c:458 modules/network/net.c:480 #: modules/network/net.c:481 msgid "dBm" msgstr "dBm" #: modules/network/net.c:458 msgid "mW" msgstr "mW" #: modules/network/net.c:472 msgid "Wireless Properties" msgstr "Wireless Özellikleri" #: modules/network/net.c:473 msgid "Network Name (SSID)" msgstr "Ağ Adı (SSID)" #: modules/network/net.c:474 msgid "Bit Rate" msgstr "Bit oranı" #: modules/network/net.c:475 msgid "Transmission Power" msgstr "İletim Gücü" #: modules/network/net.c:478 msgid "Link Quality" msgstr "Link Kalitesi" #: modules/network/net.c:479 msgid "Signal / Noise" msgstr "Sinyal / Gürültü" #: modules/network/net.c:494 msgid "Internet Protocol (IPv4)" msgstr "İnternet Protokolü (IPv4)" #: modules/network/net.c:495 modules/network/net.c:496 #: modules/network/net.c:498 msgid "(Not set)" msgstr "(Ayarlanmadı)" #: modules/network/net.c:497 msgid "Broadcast Address" msgstr "Yayın adresi" #: includes/spd-decode.h:28 msgid "RAM" msgstr "RAM" #, c-format #~ msgid "Module \"%s\" depends on module \"%s\", load it?" #~ msgstr "“%s” modülüne “%s” modülü gerekli yüklensin mi?" #, c-format #~ msgid "Module \"%s\" depends on module \"%s\"." #~ msgstr "“%s” modülü “%s” modülüne bağlıdır." #~ msgid "_Open..." #~ msgstr "_Aç..." #~ msgid "Perl6 (VM)" #~ msgstr "Perl6 (VM)" #~ msgid "Perl6" #~ msgstr "Perl6" #~ msgid "C♯ (mcs)" #~ msgstr "C♯ (mcs)" #~ msgid "Spin/Flavor" #~ msgstr "Spin / Lezzet" #~ msgid "Manufacturing Date (Week / Year)" #~ msgstr "Üretim Tarihi (Hafta / Yıl)" #~ msgid "_Copy to Clipboard" #~ msgstr "Panoya _Kopyala" #~ msgid "Copy to clipboard" #~ msgstr "Panoya kopyala" #~ msgid "dmidecode utility available" #~ msgstr "dmidecode yardımcı programı mevcut" #~ msgid " ... and HardInfo2 running with superuser privileges" #~ msgstr " ... ve süper kullanıcı ayrıcalıklarıyla çalışan HardInfo2" #~ msgid "" #~ " at24 (or eeprom) module loaded (for SDR, DDR, DDR2, DDR3)" #~ msgstr "" #~ " at24 (veya eeprom) modülü yüklü (SDR, DDR, DDR2, DDR3 için)" #~ msgid "" #~ " ... or ee1004 module loaded and configured! " #~ "(for DDR4)" #~ msgstr "" #~ " ... veyaee1004 modülü yüklendi ve yapılandırıldı!" #~ " (DDR4 için)" #~ msgid "Memory information requires one or both of the following:" #~ msgstr "" #~ "Bellek bilgisi aşağıdakilerdenbirini veya her ikisini gerektirir:" #, c-format #~ msgid "" #~ "Written by %s\n" #~ "Licensed under %s" #~ msgstr "" #~ "%s tarafından yazılmıştır\n" #~ "%s altında lisanslıdır" #, c-format #~ msgid "No about information is associated with the %s module." #~ msgstr "%s modülü ile ilgili bilgi yok." #~ msgid "User Note" #~ msgstr "Kullanıcı Notu" #~ msgid "" #~ "This result is from an old version of HardInfo2. Results might not be " #~ "comparable to current version. Some details are missing." #~ msgstr "" #~ "Bu sonuç, HardInfo'nun eski bir sürümünden kaynaklanmaktadır. Sonuçlar " #~ "geçerli sürümle karşılaştırılamayabilir. Bazı ayrıntılar eksik." #~ msgid "Total Memory" #~ msgstr "Toplam Hafıza" #~ msgid "Free Memory" #~ msgstr "Boş Hafıza" #~ msgid "Cached Swap" #~ msgstr "Önbellek Takas" #~ msgid "High Memory" #~ msgstr "Yüksek Bellek" #~ msgid "Free High Memory" #~ msgstr "Boş Yüksek Bellek" #~ msgid "Low Memory" #~ msgstr "Düşük Bellek" #~ msgid "Free Low Memory" #~ msgstr "Boş Düşük Bellek" #~ msgid "Virtual Memory" #~ msgstr "Sanal Hafıza" #~ msgid "Free Virtual Memory" #~ msgstr "Boş Sanal Hafıza" #~ msgid "(Not available; Perhaps try running HardInfo2 as root.)" #~ msgstr "(Mevcut değil, belki de HardInfo'u kök olarak çalıştırmalısınız.)" #~ msgid "DMI is not available; Perhaps try running HardInfo2 as root." #~ msgstr "" #~ "DMI mevcut değil; HardInfo'yu root olarak çalıştırmayı deneyebilirsiniz." #~ msgid "RISC-V Processor" #~ msgstr "RISC-V İşlemci" #, c-format #~ msgid "" #~ "Copyright (C) 2003-%d L. A. F. Pereira. See COPYING for details.\n" #~ "\n" #~ msgstr "" #~ "Telif(C) 2003-%d L. A. F. Pereira. Ayrıntılar için COPYING bölümüne " #~ "bakın.\n" #~ "\n" #, c-format #~ msgid "" #~ "Compile-time options:\n" #~ " Release version: %s (%s)\n" #~ " BinReloc enabled: %s\n" #~ " Data prefix: %s\n" #~ " Library prefix: %s\n" #~ " Compiled for: %s\n" #~ msgstr "" #~ "Derleme zamanı seçenekleri:\n" #~ " Dağıtım sürümü: %s (%s)\n" #~ " BinReloc etkin: %s\n" #~ " Veri öneki: %s\n" #~ " Kütüphane öneki: %s\n" #~ " Için derlendi: %s\n" #, c-format #~ msgid "" #~ "Failed to find runtime data.\n" #~ "\n" #~ "• Is HardInfo2 correctly installed?\n" #~ "• See if %s and %s exists and you have read permission." #~ msgstr "" #~ "Çalışma zamanı verileri bulunamadı.\n" #~ "\n" #~ "• HardInfo2 doğru kurulmuş mu?\n" #~ "• See if %s and %s exists and you have read permission." #, c-format #~ msgid "" #~ "Modules:\n" #~ "%-20s %-15s %-12s\n" #~ msgstr "" #~ "Modüller:\n" #~ "%-20s %-15s %-12s\n" #~ msgid "File Name" #~ msgstr "Dosya Adı" #, c-format #~ msgid "Unknown benchmark ``%s'' or benchmark.so not loaded" #~ msgstr "" #~ "Bilinmeyen karşılaştırmalı değerlendirme “%s” veya karşılaştırmalı " #~ "değerlendirme. Yüklenmedi" #~ msgid "run benchmark; requires benchmark.so to be loaded" #~ msgstr "kriter çalıştır; Benchmark.so'nin yüklenmesi gerekiyor" #~ msgid "note attached to benchmark results" #~ msgstr "kıyaslama sonuçlarına ekli not" #~ msgid "lists modules" #~ msgstr "modülleri listeler" #~ msgid "specify module to load" #~ msgstr "yüklenecek modülü belirt" #~ msgid "automatically load module dependencies" #~ msgstr "modül bağımlılıklarını otomatik olarak yükle" #~ msgid "run in XML-RPC server mode" #~ msgstr "XML-RPC sunucu modunda çalıştır" #~ msgid "- System Profiler and Benchmark tool" #~ msgstr "- Sistem Profili ve Karşılaştırma aracı" #, c-format #~ msgid "" #~ "No module could be loaded. Check permissions on \"%s\" and try again." #~ msgstr "" #~ "Hiçbir modül yüklenemedi. “%s” üzerindeki izinleri kontrol edin ve tekrar " #~ "deneyin." #~ msgid "" #~ "No module could be loaded. Please use hardinfo2 -l to list all available " #~ "modules and try again with a valid module list." #~ msgstr "" #~ "Hiçbir modül yüklenemedi. Lütfen tüm mevcut modülleri listelemek için " #~ "sert-l kullanın ve geçerli bir modül listesi ile tekrar deneyin." #~ msgid "Author:" #~ msgstr "Yazar:" #~ msgid "Contributors:" #~ msgstr "Katkı sağlayanlar:" #~ msgid "Based on work by:" #~ msgstr "Tarafından yapılan çalışmaya göre:" #~ msgid "MD5 implementation by Colin Plumb (see md5.c for details)" #~ msgstr "" #~ "Colin Plumb tarafından MD5 uygulaması (ayrıntılar için md5.c'ye bakın)" #~ msgid "SHA1 implementation by Steve Reid (see sha1.c for details)" #~ msgstr "Steve Reid'in SHA1 uygulaması (ayrıntılar için sha1.c'ye bakın)" #~ msgid "Blowfish implementation by Paul Kocher (see blowfich.c for details)" #~ msgstr "" #~ "Paul Kocher tarafından yapılan Blowfish uygulaması (ayrıntılar için " #~ "blowfich.c'ye bakın)" #~ msgid "Raytracing benchmark by John Walker (see fbench.c for details)" #~ msgstr "John Walker'ın Raytracing kıyaslaması (detaylar için bkz. Fbench.c)" #~ msgid "FFT benchmark by Scott Robert Ladd (see fftbench.c for details)" #~ msgstr "" #~ "Scott Robert Ladd tarafından yapılan FFT karşılaştırması (ayrıntılar için " #~ "fftbench.c'ye bakın)" #~ msgid "Some code partly based on x86cpucaps by Osamu Kayasono" #~ msgstr "Bazı kodlar kısmen Osamu Kayasono'nun x86cpucaps'larına dayalıdır" #~ msgid "Vendor list based on GtkSysInfo by Pissens Sebastien" #~ msgstr "" #~ "Satıcı listesi, Pissens Sebastien tarafından hazırlanan GtkSysInfo tabanlı" #~ msgid "DMI support based on code by Stewart Adam" #~ msgstr "Stewart Adam'ın koduna dayalı DMI desteği" #~ msgid "SCSI support based on code by Pascal F. Martin" #~ msgstr "Pascal F. Martin'in koduna dayalı SCSI desteği" #~ msgid "Tango Project" #~ msgstr "Tango Projesi" #~ msgid "The GNOME Project" #~ msgstr "GNOME Projesi" #~ msgid "VMWare, Inc. (USB icon from VMWare Workstation 6)" #~ msgstr "VMWare, Inc. (VMWare Workstation 6'dan USB simgesi)" #~ msgid "epicbard (Fan icon, CC BY-SA 3.0)" #~ msgstr "epicbard (Fan icon, CC BY-SA 3.0)" #~ msgid "System information and benchmark tool" #~ msgstr "" #~ "Sistem bilgisi ve Karşılaştırma Aracı\n" #~ " (Türkçe Çevirisi Cihan Alkan ve Serkan Önder Tarafından Yapılmıştır)" #~ msgid "" #~ "HardInfo2 is free software; you can redistribute it and/or modify it " #~ "under the terms of the GNU General Public License as published by the " #~ "Free Software Foundation, version 2.\n" #~ "\n" #~ "This program is distributed in the hope that it will be useful, but " #~ "WITHOUT ANY WARRANTY; without even the implied warranty of " #~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General " #~ "Public License for more details.\n" #~ "\n" #~ "You should have received a copy of the GNU General Public License along " #~ "with this program; if not, write to the Free Software Foundation, Inc., " #~ "51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA" #~ msgstr "" #~ "HardInfo2 ücretsiz bir yazılımdır; Free Software Foundation, sürüm 2 " #~ "tarafından yayınlanan GNU Genel Kamu Lisansı koşulları altında yeniden " #~ "dağıtabilir ve / veya değiştirebilirsiniz.\n" #~ "\n" #~ "Bu program yararlı olacağı ümidiyle, ancak HERHANGİ BİR GARANTİ " #~ "OLMAKSIZIN; BELİRLİ BİR AMACA UYGUNLUK veya zımni garanti olmadan. Daha " #~ "fazla ayrıntı için GNU Genel Kamu Lisansına bakın.\n" #~ "\n" #~ "Bu programla birlikte GNU Genel Kamu Lisansının bir kopyasını almış " #~ "olmalısınız; değilse, Free Software Foundation, Inc., 51 Franklin St, " #~ "Fifth Floor, Boston, MA 02110-1301 ABD'ye yazın" #~ msgid "translator-credits" #~ msgstr "" #~ "Cihan Alkan\n" #~ "Serkan Önder\n" #~ "Sabri Ünal " #~ msgid "_Remote" #~ msgstr "_Uzak" #~ msgid "About _Modules" #~ msgstr "_Modüller Hakkında" #, c-format #~ msgid "%s - System Information" #~ msgstr "%s - Sistem Bilgisi" #~ msgid "System Information" #~ msgstr "Sistem Bilgisi" #~ msgid "" #~ "HardInfo2 was compiled without libsoup support. (Network Updater requires " #~ "it.)" #~ msgstr "" #~ "HardInfo2, libsoup desteği olmadan derlendi. (Ağ Güncelleyici gerektirir.)" #, c-format #~ msgid "" #~ "Failed while performing \"%s\". Please file a bug report if this problem " #~ "persists. (Use the Help→Report bug option.)\n" #~ "\n" #~ "Details: %s" #~ msgstr "" #~ "“%s” gerçekleştirilirken başarısız oldu. Bu sorun devam ederse lütfen bir " #~ "hata raporu gönderin. (Yardım → Hata Bildir seçeneğini kullanın.)\n" #~ "\n" #~ "Ayrıntılar: %s" #, c-format #~ msgid "" #~ "Failed while performing \"%s\". Please file a bug report if this problem " #~ "persists. (Use the Help→Report bug option.)" #~ msgstr "" #~ "“%s” i gerçekleştirirken başarısız oldu. Bu sorun devam ederse lütfen bir " #~ "hata raporu gönderin. (Yardım → Hata Bildir seçeneğini kullanın.)" #~ msgid "FPU Raytracing" #~ msgstr "FPU Işın İzleme" #~ msgid "SysBench Memory" #~ msgstr "SisKıyaslama Bellek" #~ msgid "Results in MiB/second. Higher is better." #~ msgstr "MB/saniye cinsinden sonuçlar. Daha yüksek, daha iyidir." #~ msgid "Results in seconds. Lower is better." #~ msgstr "Saniyeler içinde sonuçlanır. Düşük daha iyidir." #~ msgid "" #~ "Benchmarking. Please do not move your mouse\n" #~ "or press any keys." #~ msgstr "" #~ "Kıyaslama. Lütfen farenizi hareket ettirmeyin\n" #~ "veya herhangi bir tuşa basmayın." #~ msgid "Cancel" #~ msgstr "İptal" #~ msgid "" #~ "Any NVMe storage devices present are not listed.\n" #~ "udisksd is required for NVMe devices." #~ msgstr "" #~ "Mevcut herhangi bir NVMe depolama cihazı listelenmemiştir.\n" #~ "NVMe cihazları içinudisksd gereklidir." hardinfo2-hardinfo2-1331e88/po/updatepo.sh000077500000000000000000000034111474767047500203400ustar00rootroot00000000000000#!/bin/bash GITVER=`git describe --always --dirty` GITHASH=`git rev-parse HEAD` echo "Update gettext translation files." DER=`pwd` if [ ! -e "updatepo.sh" ] then echo "Error: Run from po/, the location of hardinfo2.pot and XX.po files." exit 1 fi MSGTOTALOLD=`msgattrib --untranslated hardinfo2.pot | grep -E "^msgstr \"\"" | wc -l` echo "hardinfo2.pot has $MSGTOTALOLD strings" echo "" > hardinfo2.pot # empty existing file to join (-j) with for d in hardinfo2/ shell/ modules/ includes/; do # work from hardinfo2 root to get reasonable file reference comments cd .. echo -n `pwd`; echo "/$d ..." find "$d" -type f -name "*.[hc]" -print | sort | xargs xgettext -j -d hardinfo2 -o "$DER/hardinfo2.pot" -k_ -kN_ -kC_:1c,2 -kNC_:1c,2 -c!/ --from-code=UTF-8 cd "$DER" done; MSGTOTAL=`msgattrib --untranslated hardinfo2.pot | grep -E "^msgstr \"\"" | wc -l` CMSG=`msgattrib --untranslated hardinfo2.pot | grep -E "^#,.*c-format" | wc -l` TDIFF=$(($MSGTOTAL - $MSGTOTALOLD)) CHANGE="$TDIFF" if [ $TDIFF -gt 0 ]; then CHANGE="+$TDIFF"; fi if [ $TDIFF -eq 0 ]; then CHANGE="no change"; fi echo "hardinfo2.pot now has $MSGTOTAL strings ($CHANGE), with $CMSG c-format strings" echo "(as of $GITVER $GITHASH)" for f in *.po do msgmerge -q -N "$f" hardinfo2.pot > tmp.po # set/reset the X-Poedit-Basepath header grep -v '"X-Poedit-Basepath\:[^"]*"' tmp.po | sed 's:\("Language\:[^"]*"\):\1\n"X-Poedit-Basepath\: ../\\n":' >"$f" rm -f tmp.po # stats UNMSG=`msgattrib --untranslated "$f" | grep -E "^msgstr \"\"" | wc -l` FUZMSG=`msgattrib --translated "$f" | grep -E "^#,.*fuzzy" | wc -l` DONE=" "; if [ $UNMSG -eq 0 ]; then DONE="x"; fi echo "- [$DONE] $f : ($UNMSG / $MSGTOTAL remain untranslated, needs work/fuzzy: $FUZMSG)" done hardinfo2-hardinfo2-1331e88/po/zh_CN.po000066400000000000000000004153131474767047500175310ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: hardinfo2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-10-06 01:42+0200\n" "PO-Revision-Date: 2018-06-22 16:23+0800\n" "Last-Translator: yetist \n" "Language-Team: Chinese\n" "Language: zh_CN\n" "X-Poedit-Basepath: ../\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Poedit 2.0.8\n" "X-Poedit-SourceCharset: UTF-8\n" #: hardinfo2/cpu_util.c:29 msgid "Little Endian" msgstr "小端序" #: hardinfo2/cpu_util.c:31 msgid "Big Endian" msgstr "大端序" #: hardinfo2/cpu_util.c:205 hardinfo2/cpu_util.c:216 modules/devices/gpu.c:262 msgid "Frequency Scaling" msgstr "" #: hardinfo2/cpu_util.c:206 modules/devices/gpu.c:263 msgid "Minimum" msgstr "最小值" #: hardinfo2/cpu_util.c:206 hardinfo2/cpu_util.c:207 hardinfo2/cpu_util.c:208 #: hardinfo2/dt_util.c:590 modules/devices/gpu.c:263 modules/devices/gpu.c:264 msgid "kHz" msgstr "kHz" #: hardinfo2/cpu_util.c:207 modules/devices/gpu.c:264 msgid "Maximum" msgstr "最大值" #: hardinfo2/cpu_util.c:208 msgid "Current" msgstr "当前设置" #: hardinfo2/cpu_util.c:209 modules/devices/gpu.c:265 msgid "Transition Latency" msgstr "" #: hardinfo2/cpu_util.c:209 modules/devices/gpu.c:265 msgid "ns" msgstr "ns" #: hardinfo2/cpu_util.c:210 msgid "Governor" msgstr "" #: hardinfo2/cpu_util.c:211 hardinfo2/cpu_util.c:217 modules/devices.c:842 #: modules/devices/gpu.c:209 modules/devices/pci.c:148 #: modules/devices/usb.c:139 msgid "Driver" msgstr "驱动" #: hardinfo2/cpu_util.c:223 modules/computer.c:801 #: modules/devices/arm/processor.c:255 modules/devices/e2k/processor.c:178 #: modules/devices/x86/processor.c:283 modules/devices/x86/processor.c:387 #: modules/devices/x86/processor.c:525 msgid "(Not Available)" msgstr "" #: hardinfo2/cpu_util.c:231 hardinfo2/cpu_util.c:233 msgid "Socket" msgstr "套接字" #: hardinfo2/cpu_util.c:236 hardinfo2/cpu_util.c:238 modules/devices/gpu.c:205 #: modules/devices/gpu.c:295 msgid "Core" msgstr "核心" #: hardinfo2/cpu_util.c:241 msgid "Book" msgstr "" #: hardinfo2/cpu_util.c:243 msgid "Drawer" msgstr "" #: hardinfo2/cpu_util.c:249 modules/devices/arm/processor.c:480 #: modules/devices/x86/processor.c:751 msgid "Topology" msgstr "" #: hardinfo2/cpu_util.c:250 msgid "ID" msgstr "ID" #: hardinfo2/dmi_util.c:25 msgid "BIOS Information" msgstr "" #: hardinfo2/dmi_util.c:26 modules/devices/parisc/processor.c:157 msgid "System" msgstr "系统" #: hardinfo2/dmi_util.c:27 msgid "Base Board" msgstr "" #: hardinfo2/dmi_util.c:28 modules/devices/dmi.c:54 msgid "Chassis" msgstr "" #: hardinfo2/dmi_util.c:29 modules/computer.c:580 modules/computer.c:1144 #: modules/devices/alpha/processor.c:87 modules/devices/arm/processor.c:340 #: modules/devices.c:99 modules/devices/e2k/processor.c:357 #: modules/devices/ia64/processor.c:159 #: modules/devices/loongarch64/processor.c:93 #: modules/devices/m68k/processor.c:83 modules/devices/mips/processor.c:74 #: modules/devices/parisc/processor.c:154 modules/devices/ppc/processor.c:157 #: modules/devices/riscv/processor.c:241 modules/devices/s390/processor.c:131 #: modules/devices/sh/processor.c:83 modules/devices/sparc/processor.c:74 #: modules/devices/x86/processor.c:647 msgid "Processor" msgstr "处理器" #: hardinfo2/dmi_util.c:30 msgid "Memory Controller" msgstr "" #: hardinfo2/dmi_util.c:31 msgid "Memory Module" msgstr "" #: hardinfo2/dmi_util.c:32 modules/devices/e2k/processor.c:366 #: modules/devices/parisc/processor.c:163 modules/devices/x86/processor.c:663 msgid "Cache" msgstr "缓存" #: hardinfo2/dmi_util.c:33 msgid "Port Connector" msgstr "" #: hardinfo2/dmi_util.c:34 msgid "System Slots" msgstr "" #: hardinfo2/dmi_util.c:35 msgid "On Board Devices" msgstr "" #: hardinfo2/dmi_util.c:36 msgid "OEM Strings" msgstr "" #: hardinfo2/dmi_util.c:37 msgid "System Configuration Options" msgstr "" #: hardinfo2/dmi_util.c:38 msgid "BIOS Language" msgstr "" #: hardinfo2/dmi_util.c:39 msgid "Group Associations" msgstr "" #: hardinfo2/dmi_util.c:40 msgid "System Event Log" msgstr "" #: hardinfo2/dmi_util.c:41 msgid "Physical Memory Array" msgstr "" #: hardinfo2/dmi_util.c:42 msgid "Memory Device" msgstr "" #: hardinfo2/dmi_util.c:43 msgid "32-bit Memory Error" msgstr "" #: hardinfo2/dmi_util.c:44 msgid "Memory Array Mapped Address" msgstr "" #: hardinfo2/dmi_util.c:45 msgid "Memory Device Mapped Address" msgstr "" #: hardinfo2/dmi_util.c:46 msgid "Built-in Pointing Device" msgstr "" #: hardinfo2/dmi_util.c:47 msgid "Portable Battery" msgstr "" #: hardinfo2/dmi_util.c:48 msgid "System Reset" msgstr "" #: hardinfo2/dmi_util.c:49 msgid "Hardware Security" msgstr "" #: hardinfo2/dmi_util.c:50 msgid "System Power Controls" msgstr "" #: hardinfo2/dmi_util.c:51 msgid "Voltage Probe" msgstr "" #: hardinfo2/dmi_util.c:52 msgid "Cooling Device" msgstr "" #: hardinfo2/dmi_util.c:53 msgid "Temperature Probe" msgstr "" #: hardinfo2/dmi_util.c:54 msgid "Electrical Current Probe" msgstr "" #: hardinfo2/dmi_util.c:55 msgid "Out-of-band Remote Access" msgstr "" #: hardinfo2/dmi_util.c:56 msgid "Boot Integrity Services" msgstr "" #: hardinfo2/dmi_util.c:57 msgid "System Boot" msgstr "" #: hardinfo2/dmi_util.c:58 msgid "64-bit Memory Error" msgstr "" #: hardinfo2/dmi_util.c:59 msgid "Management Device" msgstr "" #: hardinfo2/dmi_util.c:60 msgid "Management Device Component" msgstr "" #: hardinfo2/dmi_util.c:61 msgid "Management Device Threshold Data" msgstr "" #: hardinfo2/dmi_util.c:62 msgid "Memory Channel" msgstr "" #: hardinfo2/dmi_util.c:63 msgid "IPMI Device" msgstr "" #: hardinfo2/dmi_util.c:64 msgid "Power Supply" msgstr "" #: hardinfo2/dmi_util.c:65 msgid "Additional Information" msgstr "" #: hardinfo2/dmi_util.c:66 msgid "Onboard Device" msgstr "" #: hardinfo2/dmi_util.c:233 msgid "Invalid chassis type (0)" msgstr "" #: hardinfo2/dmi_util.c:234 hardinfo2/dmi_util.c:235 msgid "Unknown chassis type" msgstr "" #: hardinfo2/dmi_util.c:236 msgid "Desktop" msgstr "桌面" #: hardinfo2/dmi_util.c:237 msgid "Low-profile Desktop" msgstr "" #: hardinfo2/dmi_util.c:238 msgid "Pizza Box" msgstr "" #: hardinfo2/dmi_util.c:239 msgid "Mini Tower" msgstr "" #: hardinfo2/dmi_util.c:240 msgid "Tower" msgstr "" #: hardinfo2/dmi_util.c:241 msgid "Portable" msgstr "便携式" #: hardinfo2/dmi_util.c:242 modules/computer.c:408 modules/computer.c:417 #: modules/computer.c:440 modules/computer.c:442 msgid "Laptop" msgstr "笔记本电脑" #: hardinfo2/dmi_util.c:243 msgid "Notebook" msgstr "笔记本" #: hardinfo2/dmi_util.c:244 msgid "Handheld" msgstr "手持设备" #: hardinfo2/dmi_util.c:245 msgid "Docking Station" msgstr "扩展坞" #: hardinfo2/dmi_util.c:246 msgid "All-in-one" msgstr "" #: hardinfo2/dmi_util.c:247 msgid "Subnotebook" msgstr "" #: hardinfo2/dmi_util.c:248 msgid "Space-saving" msgstr "" #: hardinfo2/dmi_util.c:249 msgid "Lunch Box" msgstr "" #: hardinfo2/dmi_util.c:250 msgid "Main Server Chassis" msgstr "" #: hardinfo2/dmi_util.c:251 msgid "Expansion Chassis" msgstr "" #: hardinfo2/dmi_util.c:252 msgid "Sub Chassis" msgstr "" #: hardinfo2/dmi_util.c:253 msgid "Bus Expansion Chassis" msgstr "" #: hardinfo2/dmi_util.c:254 msgid "Peripheral Chassis" msgstr "" #: hardinfo2/dmi_util.c:255 msgid "RAID Chassis" msgstr "" #: hardinfo2/dmi_util.c:256 msgid "Rack Mount Chassis" msgstr "" #: hardinfo2/dmi_util.c:257 msgid "Sealed-case PC" msgstr "" #: hardinfo2/dmi_util.c:258 msgid "Multi-system" msgstr "" #: hardinfo2/dmi_util.c:259 msgid "CompactPCI" msgstr "" #: hardinfo2/dmi_util.c:260 msgid "AdvancedTCA" msgstr "" #: hardinfo2/dmi_util.c:261 msgid "Blade" msgstr "" #: hardinfo2/dmi_util.c:262 msgid "Blade Enclosing" msgstr "" #: hardinfo2/dmi_util.c:263 msgid "Tablet" msgstr "" #: hardinfo2/dmi_util.c:264 msgid "Convertible" msgstr "" #: hardinfo2/dmi_util.c:265 msgid "Detachable" msgstr "" #: hardinfo2/dmi_util.c:266 msgid "IoT Gateway" msgstr "" #: hardinfo2/dmi_util.c:267 msgid "Embedded PC" msgstr "" #: hardinfo2/dmi_util.c:268 msgid "Mini PC" msgstr "" #: hardinfo2/dmi_util.c:269 msgid "Stick PC" msgstr "" #: hardinfo2/dt_util.c:1175 msgid "phandle Map" msgstr "" #: hardinfo2/dt_util.c:1176 msgid "Alias Map" msgstr "" #: hardinfo2/dt_util.c:1177 msgid "Symbol Map" msgstr "" #. !/ %d will be latest year of copyright #: hardinfo2/hardinfo.c:104 #, c-format msgid "" "Copyright (C) 2003-2023 L. A. F. Pereira. 2024-%d Hardinfo2 Project.\n" "\n" msgstr "" #: hardinfo2/hardinfo.c:106 #, c-format msgid "" "Compile-time options:\n" " Release version: %s (%s)\n" " LibSoup version: %s\n" " Data : %s\n" " Library : %s\n" " Locale : %s\n" " Compiled for : %s\n" msgstr "" #: hardinfo2/hardinfo.c:114 msgid "3.0" msgstr "" #: hardinfo2/hardinfo.c:149 #, c-format msgid "Unknown benchmark ``%s''\n" msgstr "" #: hardinfo2/hardinfo.c:188 msgid "Don't know what to do. Exiting." msgstr "" #: hardinfo2/usb_util.c:293 modules/devices/devicetree.c:90 #: modules/devices/devicetree.c:91 modules/devices/monitors.c:411 #: modules/devices/storage.c:306 modules/devices/storage.c:328 msgid "(None)" msgstr "(无)" #: hardinfo2/util.c:100 modules/computer/uptime.c:54 #, c-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d 天" #: hardinfo2/util.c:101 modules/computer/uptime.c:55 #, c-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d 小时" #: hardinfo2/util.c:102 modules/computer/uptime.c:56 #, c-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d 分钟" #: hardinfo2/util.c:103 #, c-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "" #: hardinfo2/util.c:124 #, c-format msgid "%.1f B" msgstr "%.1f B" #: hardinfo2/util.c:126 #, c-format msgid "%.1f KiB" msgstr "%.1f KiB" #: hardinfo2/util.c:128 #, c-format msgid "%.1f MiB" msgstr "%.1f MiB" #: hardinfo2/util.c:130 #, c-format msgid "%.1f GiB" msgstr "%.1f GiB" #: hardinfo2/util.c:132 #, c-format msgid "%.1f TiB" msgstr "%.1f TiB" #: hardinfo2/util.c:134 #, c-format msgid "%.1f PiB" msgstr "%.1f PiB" #: hardinfo2/util.c:283 msgid "Error" msgstr "错误" #: hardinfo2/util.c:283 hardinfo2/util.c:299 msgid "Warning" msgstr "警告" #: hardinfo2/util.c:298 msgid "Fatal Error" msgstr "严重错误" #: hardinfo2/util.c:325 msgid "do not print status messages to standard output" msgstr "" #: hardinfo2/util.c:331 msgid "creates a report and prints to standard output" msgstr "" #: hardinfo2/util.c:337 msgid "chooses a report format ([text], html)" msgstr "" #: hardinfo2/util.c:343 msgid "run single benchmark eg. -b 'FPU FFT' (Default all Benchmarks runs)" msgstr "" #: hardinfo2/util.c:349 msgid "" "user note attached to benchmark results. (updating/synchronize with server)" msgstr "" #: hardinfo2/util.c:355 msgid "benchmark result format ([short], conf, shell)" msgstr "" #: hardinfo2/util.c:361 msgid "" "maximum number of benchmark results to include (-1 for no limit, default is " "50)" msgstr "" #: hardinfo2/util.c:367 msgid "shows program version and quit" msgstr "显示程序版本并退出" #: hardinfo2/util.c:373 msgid "do not run benchmarks" msgstr "" #: hardinfo2/util.c:379 msgid "show all details" msgstr "" #: hardinfo2/util.c:384 msgid "- System Information and Benchmark" msgstr "" #: hardinfo2/util.c:394 #, c-format msgid "" "Unrecognized arguments.\n" "Try ``%s --help'' for more information.\n" msgstr "" #: hardinfo2/util.c:869 #, c-format msgid "Scanning: %s..." msgstr "正在扫描:%s..." #: hardinfo2/util.c:879 shell/shell.c:303 shell/shell.c:925 shell/shell.c:2163 msgid "Done." msgstr "完成。" #: hardinfo2/vendor.c:213 msgid "Update vendor list" msgstr "" #: hardinfo2/vendor.c:218 msgid "Check Update Version" msgstr "" #: hardinfo2/vendor.c:391 modules/computer.c:630 modules/computer.c:829 #: modules/computer/os.c:196 modules/computer/os.c:378 #: modules/computer/os.c:413 modules/computer/os.c:741 #: modules/computer/os.c:802 modules/devices.c:464 modules/devices.c:614 #: modules/devices/firmware.c:149 modules/devices/printers.c:106 #: modules/devices/printers.c:113 modules/devices/printers.c:123 #: modules/devices/printers.c:138 modules/devices/printers.c:147 #: modules/devices/printers.c:256 modules/devices/spd-decode.c:364 #: modules/devices/usb.c:149 msgid "Unknown" msgstr "未知" #: shell/callbacks.c:457 shell/shell.c:522 msgid "System Information and Benchmark" msgstr "" #: shell/callbacks.c:462 msgid "" "HardInfo2 is free software; you can redistribute it and/or modify it under " "the terms of the GNU General Public License as published by the Free " "Software Foundation, version 2 or later.\n" "\n" "This program is distributed in the hope that it will be useful, but WITHOUT " "ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " "FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " "more details.\n" "\n" "You should have received a copy of the GNU General Public License along with " "this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin St, Fifth Floor, Boston, MA 02110-1301 USA" msgstr "" #: shell/menu.c:43 msgid "_Information" msgstr "信息(_I)" #: shell/menu.c:44 msgid "_View" msgstr "查看(_V)" #: shell/menu.c:46 msgid "_Theme" msgstr "" #: shell/menu.c:48 msgid "_Help" msgstr "帮助(_H)" #: shell/menu.c:52 msgid "Generate _Report" msgstr "生成报表(_R)" #: shell/menu.c:53 msgid "Generates a report with detailed system information" msgstr "" #: shell/menu.c:57 shell/syncmanager.c:692 msgid "Synchronize" msgstr "" #: shell/menu.c:58 msgid "Send benchmark results and receive updated data from the network" msgstr "" #: shell/menu.c:73 msgid "_Refresh" msgstr "刷新(_R)" #: shell/menu.c:78 msgid "_Open HardInfo2 Web Site" msgstr "打开 HardInfo2 网站(_O)" #: shell/menu.c:83 msgid "_Report bug" msgstr "报告错误(_B)" #: shell/menu.c:88 msgid "_About HardInfo2" msgstr "关于 HardInfo(_A)" #: shell/menu.c:89 msgid "Displays program version information" msgstr "显示程序版本信息" #: shell/menu.c:93 msgid "_Quit" msgstr "退出(_Q)" #: shell/menu.c:100 msgid "_Side Pane" msgstr "侧边栏(_S)" #: shell/menu.c:101 msgid "Toggles side pane visibility" msgstr "更改侧边栏的可见性" #: shell/menu.c:104 msgid "_Toolbar" msgstr "工具栏(_T)" #: shell/menu.c:108 msgid "Synchronize on startup" msgstr "" #: shell/menu.c:113 msgid "Disable Theme" msgstr "" #: shell/menu.c:117 msgid "Theme Motherboard" msgstr "" #: shell/menu.c:121 msgid "Theme Graffiti" msgstr "" #: shell/menu.c:125 msgid "Theme Anime PC" msgstr "" #: shell/menu.c:129 msgid "Theme Tux Star" msgstr "" #: shell/menu.c:133 msgid "Theme PixArt" msgstr "" #: shell/menu.c:137 msgid "Theme Silicon" msgstr "" #: shell/report.c:772 shell/report.c:780 msgid "Save File" msgstr "保存文件" #: shell/report.c:775 shell/report.c:1252 shell/syncmanager.c:780 msgid "_Cancel" msgstr "取消(_C)" #: shell/report.c:777 msgid "_Save" msgstr "保存(_S)" #: shell/report.c:952 msgid "Cannot create ReportContext. Programming bug?" msgstr "" #: shell/report.c:972 msgid "Open the report with your web browser?" msgstr "在默认浏览器中打开报告?" #: shell/report.c:975 msgid "_No" msgstr "否(_N)" #: shell/report.c:976 msgid "_Open" msgstr "打开(_O)" #: shell/report.c:1007 msgid "Generating report..." msgstr "生成报告..." #: shell/report.c:1017 msgid "Report saved." msgstr "报告已保存。" #: shell/report.c:1019 msgid "Error while creating the report." msgstr "在创建报表时出错。" #: shell/report.c:1121 msgid "Generate Report" msgstr "生成报表" #: shell/report.c:1146 msgid "" "Generate Report\n" "Please choose the information that you wish to view in your report:" msgstr "" #: shell/report.c:1218 msgid "Select _None" msgstr "不选择(_N)" #: shell/report.c:1229 msgid "Select _All" msgstr "选中全部(_A)" #: shell/report.c:1262 msgid "_Generate" msgstr "生成(_G)" #: shell/shell.c:517 #, c-format msgid "%s - System Information and Benchmark" msgstr "" #: shell/shell.c:910 msgid "Loading modules..." msgstr "正在加载模块..." #: shell/shell.c:1681 msgid "URL" msgstr "" #: shell/shell.c:1688 msgid "Support URL" msgstr "" #: shell/shell.c:1699 msgid "Wikipedia" msgstr "" #: shell/shell.c:2033 #, c-format msgid "%s → Summary" msgstr "%s → 概要" #: shell/shell.c:2139 msgid "Updating..." msgstr "正在更新..." #: shell/syncmanager.c:80 msgid "" "Synchronize with Central Database\n" "The following information may be synchronized\n" "with the HardInfo2 central database." msgstr "" #: shell/syncmanager.c:84 msgid "" "Synchronizing\n" "This may take some time." msgstr "" #: shell/syncmanager.c:546 msgid "(canceled)" msgstr "(已取消)" #: shell/syncmanager.c:562 msgid "(failed)" msgstr "(失败)" #: shell/syncmanager.c:658 modules/benchmark.c:932 msgid "Send benchmark results" msgstr "" #: shell/syncmanager.c:767 msgid "Privacy Policy" msgstr "" #: shell/syncmanager.c:789 msgid "_Synchronize" msgstr "同步(_S)" #: shell/syncmanager.c:838 #, c-format msgid "Synchronizing: %s" msgstr "" #: modules/benchmark/benches.c:136 msgid "CPU Blowfish (Single-thread)" msgstr "" #: modules/benchmark/benches.c:144 msgid "CPU Blowfish (Multi-thread)" msgstr "" #: modules/benchmark/benches.c:152 msgid "CPU Blowfish (Multi-core)" msgstr "" #: modules/benchmark/benches.c:160 msgid "CPU Zlib" msgstr "" #: modules/benchmark/benches.c:168 msgid "CPU CryptoHash" msgstr "" #: modules/benchmark/benches.c:176 msgid "CPU Fibonacci" msgstr "" #: modules/benchmark/benches.c:184 msgid "CPU N-Queens" msgstr "" #: modules/benchmark/benches.c:192 msgid "FPU FFT" msgstr "" #: modules/benchmark/benches.c:200 msgid "FPU Raytracing (Single-thread)" msgstr "" #: modules/benchmark/benches.c:208 msgid "Internal Network Speed" msgstr "" #: modules/benchmark/benches.c:216 msgid "SysBench CPU (Single-thread)" msgstr "" #: modules/benchmark/benches.c:224 msgid "SysBench CPU (Multi-thread)" msgstr "" #: modules/benchmark/benches.c:232 msgid "SysBench CPU (Four threads)" msgstr "" #: modules/benchmark/benches.c:240 msgid "SysBench Memory (Single-thread)" msgstr "" #: modules/benchmark/benches.c:248 msgid "SysBench Memory (Two threads)" msgstr "" #: modules/benchmark/benches.c:256 msgid "SysBench Memory (Quad threads)" msgstr "" #: modules/benchmark/benches.c:264 msgid "SysBench Memory (Multi-thread)" msgstr "" #: modules/benchmark/benches.c:272 msgid "GPU Drawing" msgstr "" #: modules/benchmark/benches.c:281 msgid "GPU OpenGL Drawing" msgstr "" #: modules/benchmark/benches.c:290 msgid "Storage R/W Speed" msgstr "" #: modules/benchmark/benches.c:304 msgid "" "Alexey Kopytov's sysbench is required.\n" "Results in events/second. Higher is better." msgstr "" #: modules/benchmark/benches.c:310 msgid "" "Alexey Kopytov's sysbench is required.\n" "Results in MiB/second. Higher is better." msgstr "" #: modules/benchmark/benches.c:313 msgid "" "iperf3 is required.\n" "Results in Gbits/s. Higher is better." msgstr "" #: modules/benchmark/benches.c:324 msgid "Results in HIMarks. Higher is better." msgstr "" #: modules/benchmark/benches.c:326 msgid "" "Results in HIMarks. Higher is better.\n" "Many Desktop Environments only uses software." msgstr "" #: modules/benchmark/benches.c:329 msgid "Results in MB/s. Higher is better." msgstr "" #: modules/benchmark/benches.c:332 msgid "Results in FPS. Higher is better." msgstr "" #. !/ Used for an unknown value. Having it in only one place cleans up the .po #. * line references #: modules/benchmark/bench_results.c:34 modules/computer.c:41 #: modules/computer/display.c:40 modules/computer/display.c:57 #: modules/computer/os.c:400 modules/computer/os.c:457 modules/devices.c:596 #: modules/devices/dmi_memory.c:699 modules/devices/dmi_memory.c:835 #: modules/devices/gpu.c:40 modules/devices/gpu.c:58 modules/devices/gpu.c:122 #: modules/devices/gpu.c:130 modules/devices/gpu.c:210 #: modules/devices/gpu.c:211 modules/devices/gpu.c:230 #: modules/devices/inputdevices.c:51 modules/devices/monitors.c:28 #: modules/devices/monitors.c:29 modules/devices/monitors.c:155 #: modules/devices/monitors.c:164 modules/devices/pci.c:25 #: modules/devices/pci.c:149 modules/devices/pci.c:150 #: modules/devices/spd-decode.c:358 modules/devices/spd-decode.c:359 #: modules/devices/spd-decode.c:362 modules/devices/spd-decode.c:363 #: modules/devices/spd-decode.c:584 modules/devices/spd-decode.c:899 #: modules/devices/spd-decode.c:900 modules/devices/spd-decode.c:1111 #: modules/devices/spd-decode.c:1350 modules/devices/storage.c:27 #: modules/devices/storage.c:307 modules/devices/storage.c:336 #: modules/devices/storage.c:431 modules/devices/usb.c:29 #: modules/network/net.c:460 includes/cpu_util.h:11 includes/spd-decode.h:24 #: includes/spd-decode.h:25 msgid "(Unknown)" msgstr "(未知)" #: modules/benchmark/bench_results.c:261 modules/devices/alpha/processor.c:90 #: modules/devices/arm/processor.c:289 modules/devices/arm/processor.c:302 #: modules/devices/arm/processor.c:344 modules/devices/arm/processor.c:509 #: modules/devices.c:430 modules/devices.c:438 modules/devices.c:466 #: modules/devices/e2k/processor.c:363 modules/devices/e2k/processor.c:400 #: modules/devices/gpu.c:125 modules/devices/gpu.c:127 #: modules/devices/gpu.c:133 modules/devices/gpu.c:135 #: modules/devices/gpu.c:233 modules/devices/gpu.c:235 #: modules/devices/ia64/processor.c:167 modules/devices/ia64/processor.c:196 #: modules/devices/loongarch64/processor.c:98 #: modules/devices/m68k/processor.c:87 modules/devices/mips/processor.c:77 #: modules/devices/parisc/processor.c:158 #: modules/devices/parisc/processor.c:191 modules/devices/ppc/processor.c:160 #: modules/devices/ppc/processor.c:187 modules/devices/riscv/processor.c:246 #: modules/devices/riscv/processor.c:276 modules/devices/s390/processor.c:160 #: modules/devices/sh/processor.c:87 modules/devices/sh/processor.c:88 #: modules/devices/sh/processor.c:89 modules/devices/x86/processor.c:317 #: modules/devices/x86/processor.c:330 modules/devices/x86/processor.c:658 #: modules/devices/x86/processor.c:790 msgid "MHz" msgstr "MHz" #: modules/benchmark/bench_results.c:293 modules/devices.c:177 #, c-format msgid "%d physical processor" msgid_plural "%d physical processors" msgstr[0] "" #: modules/benchmark/bench_results.c:294 modules/devices.c:178 #, c-format msgid "%d core" msgid_plural "%d cores" msgstr[0] "" #: modules/benchmark/bench_results.c:295 modules/devices.c:179 #, c-format msgid "%d thread" msgid_plural "%d threads" msgstr[0] "%d 线程" #: modules/benchmark/bench_results.c:300 modules/devices.c:181 #, c-format msgid "%d NUMA node" msgid_plural "%d NUMA nodes" msgstr[0] "" #. !/NP procs; NC cores across NN nodes; NT threads #: modules/benchmark/bench_results.c:304 #, c-format msgid "%s; %s across %s; %s" msgstr "" #. !/NP procs; NC cores; NT threads #: modules/benchmark/bench_results.c:309 #, c-format msgid "%s; %s; %s" msgstr "" #: modules/benchmark/bench_results.c:383 modules/benchmark/bench_results.c:508 #: modules/computer.c:1041 modules/devices/dmi_memory.c:639 #: modules/devices/dmi_memory.c:649 modules/devices/dmi_memory.c:703 #: modules/devices/dmi_memory.c:791 modules/devices/dmi_memory.c:837 #: modules/devices/dmi_memory.c:920 modules/devices/spd-decode.c:1354 #: modules/network/net.c:416 modules/network/net.c:440 #: modules/network/net.c:441 msgid "MiB" msgstr "MiB" #: modules/benchmark/bench_results.c:388 modules/benchmark/bench_results.c:507 msgid "kiB" msgstr "kiB" #: modules/benchmark/bench_results.c:396 modules/benchmark/bench_results.c:452 #, c-format msgid "%d-bit" msgstr "" #: modules/benchmark/bench_results.c:417 modules/benchmark/bench_results.c:482 msgid "Benchmark Result" msgstr "" #: modules/benchmark/bench_results.c:417 modules/benchmark/bench_results.c:482 msgid "Threads" msgstr "线程" #: modules/benchmark/bench_results.c:418 modules/benchmark/bench_results.c:484 msgid "Elapsed Time" msgstr "" #: modules/benchmark/bench_results.c:418 modules/benchmark/bench_results.c:484 msgid "seconds" msgstr "" #: modules/benchmark/bench_results.c:419 modules/computer/languages.c:101 #: modules/devices/arm/processor.c:354 modules/devices/e2k/processor.c:362 #: modules/devices/gpu.c:203 modules/devices/ia64/processor.c:166 #: modules/devices/loongarch64/processor.c:97 modules/devices/pci.c:146 #: modules/devices/ppc/processor.c:159 msgid "Revision" msgstr "修订版本" #: modules/benchmark/bench_results.c:420 modules/benchmark/bench_results.c:485 msgid "Extra Information" msgstr "" #: modules/benchmark/bench_results.c:422 modules/benchmark/bench_results.c:487 msgid "Note" msgstr "注解" #: modules/benchmark/bench_results.c:423 modules/benchmark/bench_results.c:488 msgid "" "This result is from an old version of HardInfo. Results might not be " "comparable to current version. Some details are missing." msgstr "" #: modules/benchmark/bench_results.c:427 modules/benchmark/bench_results.c:492 #: modules/devices/devicetree/pmac_data.c:81 modules/devices/sh/processor.c:85 msgid "Machine" msgstr "" #: modules/benchmark/bench_results.c:428 modules/benchmark/bench_results.c:492 #: modules/devices/devicetree.c:207 modules/devices/dmi.c:48 msgid "Board" msgstr "主板" #: modules/benchmark/bench_results.c:429 modules/benchmark/bench_results.c:494 #: modules/computer.c:583 msgid "Machine Type" msgstr "机器类型" #: modules/benchmark/bench_results.c:430 modules/benchmark/bench_results.c:497 msgid "CPU Name" msgstr "处理器名称" #: modules/benchmark/bench_results.c:431 modules/benchmark/bench_results.c:498 msgid "CPU Description" msgstr "处理器描述" #: modules/benchmark/bench_results.c:432 modules/benchmark/bench_results.c:500 #: modules/benchmark.c:601 msgid "CPU Config" msgstr "CPU 配置" #: modules/benchmark/bench_results.c:433 modules/benchmark/bench_results.c:500 msgid "Threads Available" msgstr "" #: modules/benchmark/bench_results.c:434 modules/benchmark/bench_results.c:501 #: modules/benchmark.c:579 msgid "GPU" msgstr "GPU" #: modules/benchmark/bench_results.c:435 modules/benchmark/bench_results.c:503 #: modules/computer.c:595 msgid "OpenGL Renderer" msgstr "OpenGL 渲染器" #: modules/benchmark/bench_results.c:436 modules/benchmark/bench_results.c:505 #: modules/benchmark.c:590 modules/computer.c:1145 modules/devices.c:109 msgid "Storage" msgstr "存储器" #: modules/benchmark/bench_results.c:437 modules/benchmark/bench_results.c:507 #: modules/computer.c:140 modules/computer.c:582 modules/computer.c:1144 #: modules/devices/gpu.c:206 msgid "Memory" msgstr "内存" #: modules/benchmark/bench_results.c:438 modules/benchmark/bench_results.c:509 msgid "Pointer Size" msgstr "" #: modules/benchmark/bench_results.c:482 msgid "Benchmark" msgstr "基准" #: modules/benchmark/bench_results.c:483 modules/devices/dmi_memory.c:859 #: modules/devices/firmware.c:245 modules/devices/monitors.c:495 #: modules/devices/x86/processor.c:692 msgid "Result" msgstr "结果" #: modules/benchmark/bench_results.c:495 msgid "Linux Kernel" msgstr "" #: modules/benchmark/bench_results.c:496 msgid "Linux OS" msgstr "" #: modules/benchmark/bench_results.c:507 msgid "Physical Memory" msgstr "" #: modules/benchmark/bench_results.c:511 msgid "Handles" msgstr "控制柄" #: modules/benchmark/bench_results.c:511 msgid "mid" msgstr "" #: modules/benchmark/bench_results.c:512 msgid "cfg_val" msgstr "" #: modules/benchmark.c:352 msgid "This Machine" msgstr "" #: modules/benchmark.c:578 modules/benchmark.c:589 modules/benchmark.c:601 msgid "Results" msgstr "结果" #: modules/benchmark.c:602 modules/devices/sparc/processor.c:75 msgid "CPU" msgstr "CPU" #: modules/benchmark.c:678 #, c-format msgid "Benchmarking: %s." msgstr "" #: modules/benchmark.c:685 msgid "Stop" msgstr "" #: modules/benchmark.c:697 msgid "" "Please do not move your mouse\n" "or press any keys." msgstr "" #: modules/benchmark.c:767 msgid "Benchmarks" msgstr "" #: modules/benchmark.c:777 msgid "Perform tasks and compare with other systems" msgstr "" #: modules/benchmark.c:938 msgid "Receive benchmark results" msgstr "" #: modules/computer/alsa.c:26 modules/computer.c:599 msgid "Audio Devices" msgstr "音频设备" #: modules/computer/alsa.c:34 msgid "Audio Adapter" msgstr "音频适配器" #: modules/computer.c:96 modules/devices/firmware.c:74 msgid "Summary" msgstr "概要" #: modules/computer.c:97 modules/computer.c:585 modules/computer.c:1143 msgid "Operating System" msgstr "操作系统" #: modules/computer.c:98 msgid "Security" msgstr "" #: modules/computer.c:99 modules/devices/gpu.c:211 modules/devices/pci.c:150 msgid "Kernel Modules" msgstr "内核模块" #: modules/computer.c:100 modules/computer.c:741 msgid "Boots" msgstr "启动" #: modules/computer.c:101 msgid "Languages" msgstr "语言" #: modules/computer.c:102 msgid "Memory Usage" msgstr "" #: modules/computer.c:103 msgid "Filesystems" msgstr "文件系统" #: modules/computer.c:104 modules/computer.c:590 msgid "Display" msgstr "显示" #: modules/computer.c:105 modules/computer/environment.c:37 msgid "Environment Variables" msgstr "环境变量" #: modules/computer.c:107 modules/computer.c:109 msgid "Development" msgstr "开发" #: modules/computer.c:111 modules/computer.c:884 msgid "Users" msgstr "用户" #: modules/computer.c:112 msgid "Groups" msgstr "组" #: modules/computer.c:142 #, c-format msgid "%dMB (%dMB used)" msgstr "" #: modules/computer.c:144 modules/computer.c:646 msgid "Uptime" msgstr "启动时间" #: modules/computer.c:146 modules/computer.c:587 msgid "Date/Time" msgstr "日期/时间" #: modules/computer.c:151 modules/computer.c:647 msgid "Load Average" msgstr "负载均值" #: modules/computer.c:266 msgid "Scripting Languages" msgstr "脚本语言" #: modules/computer.c:267 msgid "Gambas3 (gbr3)" msgstr "Gambas3 (gbr3)" #: modules/computer.c:268 msgid "Python (default)" msgstr "" #: modules/computer.c:269 msgid "Python2" msgstr "Python2" #: modules/computer.c:270 msgid "Python3" msgstr "Python3" #: modules/computer.c:271 msgid "Perl" msgstr "Perl" #: modules/computer.c:272 msgid "Rakudo (Perl6)" msgstr "" #: modules/computer.c:273 msgid "PHP" msgstr "PHP" #: modules/computer.c:274 msgid "Ruby" msgstr "Ruby" #: modules/computer.c:275 msgid "Bash" msgstr "Bash" #: modules/computer.c:276 msgid "JavaScript (Node.js)" msgstr "" #: modules/computer.c:277 msgid "awk" msgstr "" #: modules/computer.c:278 msgid "Compilers" msgstr "编译器" #: modules/computer.c:279 msgid "C (GCC)" msgstr "C (GCC)" #: modules/computer.c:280 msgid "C (Clang)" msgstr "C (Clang)" #: modules/computer.c:281 msgid "D (dmd)" msgstr "D (dmd)" #: modules/computer.c:282 msgid "Gambas3 (gbc3)" msgstr "Gambas3 (gbc3)" #: modules/computer.c:283 msgid "Java" msgstr "Java" #: modules/computer.c:284 msgid ".NET" msgstr "" #: modules/computer.c:285 msgid "Vala" msgstr "Vala" #: modules/computer.c:286 msgid "Haskell (GHC)" msgstr "Haskell (GHC)" #: modules/computer.c:287 msgid "FreePascal" msgstr "" #: modules/computer.c:288 msgid "Go" msgstr "Go" #: modules/computer.c:289 msgid "Rust" msgstr "" #: modules/computer.c:290 msgid "Tools" msgstr "工具" #: modules/computer.c:291 msgid "make" msgstr "make" #: modules/computer.c:292 msgid "ninja" msgstr "" #: modules/computer.c:293 msgid "GDB" msgstr "GDB" #: modules/computer.c:294 msgid "LLDB" msgstr "" #: modules/computer.c:295 msgid "strace" msgstr "" #: modules/computer.c:296 msgid "valgrind" msgstr "" #: modules/computer.c:297 msgid "QMake" msgstr "QMake" #: modules/computer.c:298 msgid "CMake" msgstr "CMake" #: modules/computer.c:299 msgid "Gambas3 IDE" msgstr "Gambas3 IDE" #: modules/computer.c:300 msgid "Radare2" msgstr "" #: modules/computer.c:301 msgid "ltrace" msgstr "" #: modules/computer.c:302 msgid "Powershell" msgstr "" #: modules/computer.c:343 msgid "Not found" msgstr "找不到" #: modules/computer.c:348 #, c-format msgid "Detecting version: %s" msgstr "检测版本: %s" #: modules/computer.c:366 msgid "Program" msgstr "程序" #: modules/computer.c:366 modules/computer.c:629 modules/computer.c:631 #: modules/computer.c:807 modules/computer/modules.c:372 #: modules/devices/dmi.c:41 modules/devices/dmi.c:47 modules/devices/dmi.c:51 #: modules/devices/dmi.c:57 modules/devices/firmware.c:75 #: modules/devices/inputdevices.c:146 modules/devices/monitors.c:409 msgid "Version" msgstr "版本" #: modules/computer.c:385 msgid "Field" msgstr "域" #: modules/computer.c:385 modules/computer.c:730 modules/computer/modules.c:370 #: modules/computer/modules.c:371 modules/devices/arm/processor.c:479 msgid "Description" msgstr "描述" #: modules/computer.c:385 modules/devices.c:841 msgid "Value" msgstr "亮度" #: modules/computer.c:402 modules/computer.c:404 msgid "Single-board computer" msgstr "" #: modules/computer.c:455 modules/computer.c:457 msgid "Unknown physical machine type" msgstr "" #: modules/computer.c:479 modules/computer.c:480 modules/computer.c:527 #: modules/computer.c:529 msgid "Virtual (VMware)" msgstr "Virtual (VMware)" #: modules/computer.c:482 modules/computer.c:483 modules/computer.c:484 #: modules/computer.c:485 msgid "Virtual (QEMU)" msgstr "Virtual (QEMU)" #: modules/computer.c:487 modules/computer.c:488 msgid "Virtual (Unknown)" msgstr "Virtual (Unknown)" #: modules/computer.c:490 modules/computer.c:491 modules/computer.c:492 #: modules/computer.c:520 modules/computer.c:522 msgid "Virtual (VirtualBox)" msgstr "Virtual (VirtualBox)" #: modules/computer.c:494 modules/computer.c:495 modules/computer.c:496 #: modules/computer.c:511 modules/computer.c:513 msgid "Virtual (Xen)" msgstr "Virtual (Xen)" #: modules/computer.c:498 msgid "Virtual (hypervisor present)" msgstr "Virtual (hypervisor present)" #: modules/computer.c:579 modules/computer.c:1097 msgid "Computer" msgstr "计算机" #: modules/computer.c:586 modules/computer.c:640 msgid "User Name" msgstr "用户名" #: modules/computer.c:591 msgid "Resolution" msgstr "解决方案" #: modules/computer.c:591 modules/computer.c:812 #, c-format msgid "%dx%d pixels" msgstr "" #: modules/computer.c:593 msgid "Display Adapter" msgstr "" #: modules/computer.c:596 msgid "Session Display Server" msgstr "会话显示服务器" #: modules/computer.c:601 modules/devices.c:108 msgid "Input Devices" msgstr "输入设备" #: modules/computer.c:629 msgid "Kernel" msgstr "内核" #: modules/computer.c:630 msgid "Command Line" msgstr "" #: modules/computer.c:632 msgid "C Library" msgstr "C 库" #: modules/computer.c:633 msgid "Distribution" msgstr "发行版" #: modules/computer.c:638 msgid "Current Session" msgstr "当前会话" #: modules/computer.c:639 msgid "Computer Name" msgstr "计算机名称" #: modules/computer.c:641 modules/computer/languages.c:99 msgid "Language" msgstr "语言" #: modules/computer.c:642 modules/computer/users.c:53 msgid "Home Directory" msgstr "主目录" #: modules/computer.c:643 msgid "Desktop Environment" msgstr "" #: modules/computer.c:646 msgid "Misc" msgstr "其它" #: modules/computer.c:660 msgid "HardInfo2" msgstr "" #: modules/computer.c:661 msgid "HardInfo2 running as" msgstr "" #: modules/computer.c:662 msgid "Superuser" msgstr "" #: modules/computer.c:662 msgid "User" msgstr "" #: modules/computer.c:666 msgid "Health" msgstr "" #: modules/computer.c:668 msgid "Available entropy in /dev/random" msgstr "" #: modules/computer.c:672 msgid "Hardening Features" msgstr "" #: modules/computer.c:673 msgid "ASLR" msgstr "" #: modules/computer.c:674 msgid "dmesg" msgstr "" #: modules/computer.c:678 msgid "Linux Security Modules" msgstr "" #: modules/computer.c:679 msgid "Modules available" msgstr "" #: modules/computer.c:680 msgid "SELinux status" msgstr "" #: modules/computer.c:686 msgid "CPU Vulnerabilities" msgstr "" #: modules/computer.c:727 msgid "Loaded Modules" msgstr "已加载的模块" #: modules/computer.c:729 modules/computer.c:757 modules/computer.c:897 #: modules/computer/languages.c:95 modules/computer/modules.c:370 #: modules/devices/arm/processor.c:478 modules/devices/dmi.c:38 #: modules/devices/dmi.c:49 modules/devices/e2k/processor.c:358 #: modules/devices/gpu.c:301 modules/devices/ia64/processor.c:160 #: modules/devices/inputdevices.c:141 modules/devices/monitors.c:403 #: modules/devices/monitors.c:505 modules/devices/sh/processor.c:84 #: modules/devices/x86/processor.c:750 modules/network.c:333 msgid "Name" msgstr "名称" #: modules/computer.c:743 msgid "Date & Time" msgstr "日期和时间" #: modules/computer.c:744 msgid "Kernel Version" msgstr "内核版本" #: modules/computer.c:754 msgid "Available Languages" msgstr "可用语言" #: modules/computer.c:756 msgid "Language Code" msgstr "语言代码" #: modules/computer.c:768 msgid "Mounted File Systems" msgstr "已挂载的文件系统" #: modules/computer.c:770 modules/computer/filesystem.c:89 msgid "Mount Point" msgstr "挂载点" #: modules/computer.c:771 msgid "Usage" msgstr "使用" #: modules/computer.c:772 modules/devices.c:865 modules/devices.c:879 #: modules/devices/e2k/processor.c:416 modules/devices/gpu.c:85 #: modules/devices/gpu.c:93 modules/devices/gpu.c:293 modules/devices/pci.c:102 #: modules/devices/pci.c:110 modules/devices/pci.c:154 #: modules/devices/storage.c:48 modules/devices/storage.c:57 #: modules/devices/usb.c:172 modules/devices/usb.c:184 #: modules/devices/x86/processor.c:811 msgid "Device" msgstr "设备" #: modules/computer.c:795 msgid "Session" msgstr "会话" #: modules/computer.c:796 modules/devices.c:842 modules/devices.c:879 #: modules/devices/dmi.c:56 modules/devices/dmi_memory.c:729 #: modules/devices/inputdevices.c:142 modules/devices/spd-decode.c:1377 #: modules/devices/x86/processor.c:715 msgid "Type" msgstr "类别" #: modules/computer.c:799 msgid "Wayland" msgstr "Wayland" #: modules/computer.c:800 modules/computer.c:805 msgid "Current Display Name" msgstr "当前显示名称" #: modules/computer.c:804 msgid "X Server" msgstr "X 服务器" #: modules/computer.c:806 modules/computer.c:846 modules/computer.c:869 #: modules/devices.c:879 modules/devices/dmi.c:40 modules/devices/dmi.c:46 #: modules/devices/dmi.c:50 modules/devices/dmi.c:55 #: modules/devices/dmi_memory.c:730 modules/devices/dmi_memory.c:873 #: modules/devices/e2k/processor.c:359 modules/devices/firmware.c:75 #: modules/devices/firmware.c:167 modules/devices/firmware.c:172 #: modules/devices/firmware.c:219 modules/devices/gpu.c:84 #: modules/devices/gpu.c:92 modules/devices/gpu.c:292 #: modules/devices/ia64/processor.c:161 modules/devices/inputdevices.c:144 #: modules/devices/monitors.c:402 modules/devices/pci.c:101 #: modules/devices/pci.c:109 modules/devices/storage.c:47 #: modules/devices/storage.c:56 modules/devices/storage.c:282 #: modules/devices/storage.c:572 modules/devices/storage.c:777 #: modules/devices/usb.c:171 modules/devices/x86/processor.c:654 msgid "Vendor" msgstr "销售者" #: modules/computer.c:808 msgid "Release Number" msgstr "" #: modules/computer.c:816 msgid "Screens" msgstr "屏幕" #: modules/computer.c:822 msgid "Disconnected" msgstr "已断开" #: modules/computer.c:825 msgid "Connected" msgstr "已连接" #: modules/computer.c:833 msgid "Unused" msgstr "未使用" #: modules/computer.c:834 #, c-format msgid "%dx%d pixels, offset (%d, %d)" msgstr "" #: modules/computer.c:843 msgid "Outputs (XRandR)" msgstr "Outputs (XRandR)" #: modules/computer.c:845 msgid "OpenGL (GLX)" msgstr "OpenGL (GLX)" #: modules/computer.c:847 msgid "Renderer" msgstr "渲染器" #: modules/computer.c:848 msgid "Direct Rendering" msgstr "直接渲染" #: modules/computer.c:849 modules/computer/modules.c:352 #: modules/computer/modules.c:353 modules/devices/inputdevices.c:153 #: modules/devices/printers.c:145 modules/devices/spd-decode.c:888 #: modules/devices/spd-decode.c:1100 msgid "Yes" msgstr "是" #: modules/computer.c:849 modules/computer/modules.c:352 #: modules/computer/modules.c:353 modules/devices/printers.c:145 #: modules/devices/spd-decode.c:886 modules/devices/spd-decode.c:1097 msgid "No" msgstr "否" #: modules/computer.c:850 msgid "Version (Compatibility)" msgstr "" #: modules/computer.c:851 msgid "Shading Language Version (Compatibility)" msgstr "" #: modules/computer.c:852 msgid "Version (Core)" msgstr "" #: modules/computer.c:853 msgid "Shading Language Version (Core)" msgstr "" #: modules/computer.c:854 msgid "Version (ES)" msgstr "" #: modules/computer.c:855 msgid "Shading Language Version (ES)" msgstr "" #: modules/computer.c:856 msgid "GLX Version" msgstr "GLX 版本" #: modules/computer.c:864 msgid "Vulkan" msgstr "" #: modules/computer.c:865 msgid "Instance Version" msgstr "" #: modules/computer.c:867 msgid "Api Version" msgstr "" #: modules/computer.c:868 msgid "Driver Version" msgstr "" #: modules/computer.c:870 msgid "Device Type" msgstr "" #: modules/computer.c:871 msgid "Device Name" msgstr "" #: modules/computer.c:872 msgid "Driver Name" msgstr "" #: modules/computer.c:873 msgid "Driver Info" msgstr "" #: modules/computer.c:874 msgid "Conformance Version" msgstr "" #: modules/computer.c:895 msgid "Group" msgstr "组" #: modules/computer.c:898 modules/computer/users.c:52 msgid "Group ID" msgstr "组标识" #: modules/computer.c:1037 #, c-format msgid "%0.1f %s available to Linux" msgstr "" #: modules/computer.c:1039 modules/devices/dmi_memory.c:637 #: modules/devices/dmi_memory.c:647 modules/devices/dmi_memory.c:789 #: modules/devices/dmi_memory.c:918 modules/devices/spd-decode.c:1352 msgid "GiB" msgstr "" #: modules/computer.c:1043 modules/computer/memory_usage.c:73 #: modules/computer/modules.c:370 msgid "KiB" msgstr "KiB" #: modules/computer.c:1116 modules/devices/devicetree/pmac_data.c:82 msgid "Motherboard" msgstr "主板" #: modules/computer.c:1144 msgid "Graphics" msgstr "图形" #: modules/computer.c:1145 modules/devices.c:105 msgid "Printers" msgstr "打印机" #: modules/computer.c:1145 msgid "Audio" msgstr "音频" #: modules/computer.c:1194 msgid "Gathers high-level computer information" msgstr "" #: modules/computer.c:1205 msgid "lsmod is required." msgstr "" #: modules/computer.c:1213 msgid "" "X.org's xrandr utility provides additional details when " "available." msgstr "" #: modules/computer.c:1214 msgid "" "Mesa's glxinfo utility is required for OpenGL information." msgstr "" #: modules/computer.c:1215 msgid "" "Vulkan's vulkaninfo utility is required for Vulkan information." msgstr "" #: modules/computer/filesystem.c:87 msgid "Filesystem" msgstr "文件系统" #: modules/computer/filesystem.c:88 msgid "Mounted As" msgstr "挂载为" #: modules/computer/filesystem.c:88 msgid "Read-Write" msgstr "读/写模式" #: modules/computer/filesystem.c:88 msgid "Read-Only" msgstr "只读模式" #: modules/computer/filesystem.c:90 modules/devices.c:865 #: modules/devices/dmi_memory.c:733 modules/devices/dmi_memory.c:766 #: modules/devices/dmi_memory.c:805 modules/devices/dmi_memory.c:872 #: modules/devices/spd-decode.c:1384 msgid "Size" msgstr "容量" #: modules/computer/filesystem.c:91 msgid "Used" msgstr "已使用" #: modules/computer/filesystem.c:92 msgid "Available" msgstr "可用" #: modules/computer/languages.c:94 msgid "Locale Information" msgstr "区域信息" #: modules/computer/languages.c:96 modules/devices/gpu.c:266 #: modules/devices/spd-decode.c:1373 msgid "Source" msgstr "源代码" #: modules/computer/languages.c:97 msgid "Address" msgstr "住址" #: modules/computer/languages.c:98 msgid "E-mail" msgstr "电子邮件" #: modules/computer/languages.c:100 msgid "Territory" msgstr "" #: modules/computer/languages.c:102 modules/devices/dmi.c:45 msgid "Date" msgstr "时间" #: modules/computer/languages.c:103 msgid "Codeset" msgstr "系统代码集" #: modules/computer/loadavg.c:64 msgid "Couldn't obtain load average" msgstr "" #: modules/computer/memory_usage.c:131 msgid "Total physical memory usable by the system" msgstr "" #: modules/computer/memory_usage.c:132 msgid "Free memory which is not used for anything" msgstr "" #: modules/computer/memory_usage.c:133 msgid "Virtual memory, total swap space available" msgstr "" #: modules/computer/memory_usage.c:134 msgid "Virtual memory, remaining swap space available" msgstr "" #: modules/computer/memory_usage.c:135 msgid "Memory present within main memory and in the swapfile" msgstr "" #: modules/computer/memory_usage.c:136 msgid "HighTotal value can vary based on the type of kernel used" msgstr "" #: modules/computer/memory_usage.c:137 msgid "Amount of memory that is not directly mapped into kernel space" msgstr "" #: modules/computer/memory_usage.c:138 msgid "LowTotal value can vary based on the type of kernel used" msgstr "" #: modules/computer/memory_usage.c:139 msgid "Total and free memory directly mapped into kernel space" msgstr "" #: modules/computer/memory_usage.c:140 msgid "Available memory for allocation to any process, without swapping" msgstr "" #: modules/computer/memory_usage.c:141 msgid "Memory in buffer cache, temporary storage for raw disk blocks" msgstr "" #: modules/computer/memory_usage.c:142 msgid "Memory in the page cache (diskcache, shared memory, tmpfs and shmem)" msgstr "" #: modules/computer/memory_usage.c:143 msgid "Memory used more recently and not swapped out or reclaimed" msgstr "" #: modules/computer/memory_usage.c:144 msgid "Memory not been used recently and can be swapped out or reclaimed" msgstr "" #: modules/computer/memory_usage.c:145 msgid "Anonymous memory used more recently and not swapped out" msgstr "" #: modules/computer/memory_usage.c:146 msgid "Anonymous memory not been used and can be swapped out" msgstr "" #: modules/computer/memory_usage.c:147 msgid "Pagecache memory been used more recently and not reclaimed" msgstr "" #: modules/computer/memory_usage.c:148 msgid "Pagecache memory reclaimable without huge performance impact" msgstr "" #: modules/computer/memory_usage.c:149 msgid "Unevictable pages can't be swapped out for a variety of reasons" msgstr "" #: modules/computer/memory_usage.c:150 msgid "Pages locked to memory using the mlock() system call" msgstr "" #: modules/computer/memory_usage.c:151 msgid "Memory consumed by the zswap backend (compressed size)" msgstr "" #: modules/computer/memory_usage.c:152 msgid "Amount of anonymous memory stored in zswap (original size)" msgstr "" #: modules/computer/memory_usage.c:153 msgid "Memory waiting to be written back to disk" msgstr "" #: modules/computer/memory_usage.c:154 msgid "Memory which is actively being written back to disk" msgstr "" #: modules/computer/memory_usage.c:155 msgid "Non-file backed pages mapped into userspace page tables" msgstr "" #: modules/computer/memory_usage.c:156 msgid "Files which have been mmapped, such as libraries" msgstr "" #: modules/computer/memory_usage.c:157 msgid "Total memory used by shared memory (shmem) and tmpfs" msgstr "" #: modules/computer/memory_usage.c:158 msgid "Kernel allocations reclaimable under memory pressure" msgstr "" #: modules/computer/memory_usage.c:159 msgid "In-kernel data structures cache" msgstr "" #: modules/computer/memory_usage.c:160 msgid "Part of Slab, that might be reclaimed, such as caches" msgstr "" #: modules/computer/memory_usage.c:161 msgid "Part of Slab, that cannot be reclaimed on memory pressure" msgstr "" #: modules/computer/memory_usage.c:162 msgid "Memory consumed by the kernel stacks of all tasks" msgstr "" #: modules/computer/memory_usage.c:163 msgid "Memory consumed by userspace page tables" msgstr "" #: modules/computer/memory_usage.c:164 msgid "Memory consumed by secondary page tables" msgstr "" #: modules/computer/memory_usage.c:165 msgid "Previous counted pages which had been written to the server" msgstr "" #: modules/computer/memory_usage.c:166 msgid "Memory used for block device bounce buffers" msgstr "" #: modules/computer/memory_usage.c:167 msgid "Memory used by FUSE for temporary writeback buffers" msgstr "" #: modules/computer/memory_usage.c:168 msgid "Total memory currently available to be allocated on the system" msgstr "" #: modules/computer/memory_usage.c:169 msgid "The amount of memory presently allocated on the system" msgstr "" #: modules/computer/memory_usage.c:170 msgid "Total size of vmalloc virtual address space" msgstr "" #: modules/computer/memory_usage.c:171 msgid "Amount of vmalloc area which is used" msgstr "" #: modules/computer/memory_usage.c:172 msgid "Largest contiguous block of vmalloc area which is free" msgstr "" #: modules/computer/memory_usage.c:173 msgid "Memory allocated to the percpu allocator" msgstr "" #: modules/computer/memory_usage.c:174 msgid "Amount of memory the kernel identifies as corrupted" msgstr "" #: modules/computer/memory_usage.c:175 msgid "Non-file backed huge pages mapped into userspace page tables" msgstr "" #: modules/computer/memory_usage.c:176 msgid "Memory used by shmem and tmpfs allocated with huge pages" msgstr "" #: modules/computer/memory_usage.c:177 msgid "Shared memory mapped into userspace with huge pages" msgstr "" #: modules/computer/memory_usage.c:178 msgid "Memory used for fs data (page cache) allocated with huge pages" msgstr "" #: modules/computer/memory_usage.c:179 msgid "Page cache mapped into userspace with huge pages" msgstr "" #: modules/computer/memory_usage.c:180 msgid "Memory reserved for the Contiguous Memory Allocator (CMA)" msgstr "" #: modules/computer/memory_usage.c:181 msgid "Free remaining memory in the CMA reserves" msgstr "" #: modules/computer/memory_usage.c:182 msgid "Amount of unaccepted memory usable by the kernel" msgstr "" #: modules/computer/memory_usage.c:183 msgid "Size of the pool of huge pages" msgstr "" #: modules/computer/memory_usage.c:184 msgid "Number of huge pages available" msgstr "" #: modules/computer/memory_usage.c:185 msgid "Number of huge pages reserved" msgstr "" #: modules/computer/memory_usage.c:186 msgid "Number of huge pages surplus" msgstr "" #: modules/computer/memory_usage.c:187 msgid "Huge page size, used in conjunction with hugepages parameter" msgstr "" #: modules/computer/memory_usage.c:188 msgid "Total amount of memory consumed by huge pages of all sizes" msgstr "" #: modules/computer/memory_usage.c:189 msgid "Breakdown of page table sizes of 4k size" msgstr "" #: modules/computer/memory_usage.c:190 msgid "Breakdown of page table sizes of 2M size" msgstr "" #: modules/computer/memory_usage.c:191 msgid "Breakdown of page table sizes of 1G size" msgstr "" #: modules/computer/modules.c:168 msgid "Update kernel module icon table" msgstr "" #: modules/computer/modules.c:338 modules/computer/modules.c:339 #: modules/computer/modules.c:340 modules/computer/modules.c:341 #: modules/computer/modules.c:342 modules/computer/modules.c:343 #: modules/devices/dmi.c:117 modules/devices/firmware.c:245 #: modules/devices/x86/processor.c:694 msgid "(Not available)" msgstr "(不可用)" #: modules/computer/modules.c:369 msgid "Module Information" msgstr "模块信息" #: modules/computer/modules.c:369 modules/devices/gpu.c:298 msgid "Path" msgstr "路径" #: modules/computer/modules.c:369 msgid "Used Memory" msgstr "已使用内存" #: modules/computer/modules.c:371 msgid "Version Magic" msgstr "版本魔数" #: modules/computer/modules.c:372 msgid "In Linus' Tree" msgstr "" #: modules/computer/modules.c:373 msgid "Retpoline Enabled" msgstr "" #: modules/computer/modules.c:373 msgid "Copyright" msgstr "版权所有" #: modules/computer/modules.c:373 msgid "Author" msgstr "作者" #: modules/computer/modules.c:374 msgid "License" msgstr "许可协议" #: modules/computer/modules.c:380 msgid "Dependencies" msgstr "依赖" #: modules/computer/os.c:153 modules/computer/os.c:154 #: modules/computer/os.c:155 modules/computer/os.c:156 msgid "GNU C Library" msgstr "GNU C库" #: modules/computer/os.c:157 msgid "uClibc or uClibc-ng" msgstr "uClibc or uClibc-ng" #: modules/computer/os.c:158 msgid "diet libc" msgstr "" #: modules/computer/os.c:229 modules/computer/os.c:232 msgid "GNOME Shell " msgstr "GNOME Shell " #: modules/computer/os.c:240 modules/computer/os.c:243 msgid "Version: " msgstr "版本:" #: modules/computer/os.c:261 modules/computer/os.c:264 msgid "MATE Desktop Environment " msgstr "" #: modules/computer/os.c:297 #, c-format msgid "Unknown (Window Manager: %s)" msgstr "未知 (窗口管理器:%s)" #. !/{desktop environment} on {session type} #: modules/computer/os.c:308 #, c-format msgid "%s on %s" msgstr "" #: modules/computer/os.c:376 msgid "Terminal" msgstr "终端" #: modules/computer/os.c:392 msgid "User access allowed" msgstr "" #: modules/computer/os.c:394 msgid "User access forbidden" msgstr "" #: modules/computer/os.c:396 msgid "Access allowed (running as superuser)" msgstr "" #: modules/computer/os.c:398 msgid "Access forbidden? (running as superuser)" msgstr "" #: modules/computer/os.c:407 modules/computer/os.c:793 msgid "Disabled" msgstr "" #: modules/computer/os.c:409 msgid "Partially enabled (mmap base+stack+VDSO base)" msgstr "" #: modules/computer/os.c:411 msgid "Fully enabled (mmap base+stack+VDSO base+heap)" msgstr "" #. !/bits of entropy for rng (0) #: modules/computer/os.c:420 msgid "(None or not available)" msgstr "" #. !/bits of entropy for rng (low/poor value) #: modules/computer/os.c:421 #, c-format msgid "%d bits (low)" msgstr "" #. !/bits of entropy for rng (medium value) #: modules/computer/os.c:422 #, c-format msgid "%d bits (medium)" msgstr "" #. !/bits of entropy for rng (high/good value) #: modules/computer/os.c:423 #, c-format msgid "%d bits (healthy)" msgstr "" #: modules/computer/os.c:788 msgid "Not installed" msgstr "" #: modules/computer/os.c:791 msgid "Enabled" msgstr "" #: modules/computer/users.c:50 msgid "User Information" msgstr "用户信息" #: modules/computer/users.c:51 msgid "User ID" msgstr "用户标识" #: modules/computer/users.c:54 msgid "Default Shell" msgstr "默认 Shell" #: modules/devices/alpha/processor.c:88 modules/devices.c:865 #: modules/devices/devicetree.c:162 modules/devices/devicetree.c:208 #: modules/devices/devicetree/pmac_data.c:80 #: modules/devices/e2k/processor.c:361 modules/devices/e2k/processor.c:416 #: modules/devices/gpu.c:116 modules/devices/ia64/processor.c:165 #: modules/devices/loongarch64/processor.c:96 #: modules/devices/m68k/processor.c:84 modules/devices/mips/processor.c:75 #: modules/devices/monitors.c:404 modules/devices/parisc/processor.c:155 #: modules/devices/ppc/processor.c:158 modules/devices/riscv/processor.c:242 #: modules/devices/s390/processor.c:132 modules/devices/x86/processor.c:811 msgid "Model" msgstr "模型" #: modules/devices/alpha/processor.c:89 msgid "Platform String" msgstr "" #: modules/devices/alpha/processor.c:90 modules/devices/arm/processor.c:344 #: modules/devices/e2k/processor.c:363 modules/devices/e2k/processor.c:416 #: modules/devices/ia64/processor.c:167 #: modules/devices/loongarch64/processor.c:98 #: modules/devices/m68k/processor.c:87 modules/devices/mips/processor.c:77 #: modules/devices/parisc/processor.c:158 modules/devices/ppc/processor.c:160 #: modules/devices/riscv/processor.c:246 modules/devices/sh/processor.c:87 #: modules/devices/x86/processor.c:658 modules/devices/x86/processor.c:811 msgid "Frequency" msgstr "频率" #: modules/devices/alpha/processor.c:91 modules/devices/arm/processor.c:345 #: modules/devices/e2k/processor.c:364 modules/devices/ia64/processor.c:168 #: modules/devices/m68k/processor.c:88 modules/devices/mips/processor.c:78 #: modules/devices/parisc/processor.c:159 modules/devices/ppc/processor.c:161 #: modules/devices/s390/processor.c:134 modules/devices/sh/processor.c:90 #: modules/devices/x86/processor.c:659 msgid "BogoMips" msgstr "BogoMips" #: modules/devices/alpha/processor.c:92 modules/devices/arm/processor.c:346 #: modules/devices/e2k/processor.c:365 modules/devices/ia64/processor.c:169 #: modules/devices/loongarch64/processor.c:101 #: modules/devices/m68k/processor.c:89 modules/devices/mips/processor.c:79 #: modules/devices/parisc/processor.c:160 modules/devices/ppc/processor.c:162 #: modules/devices/riscv/processor.c:247 modules/devices/s390/processor.c:135 #: modules/devices/sh/processor.c:91 modules/devices/sparc/processor.c:77 #: modules/devices/x86/processor.c:660 msgid "Byte Order" msgstr "字节序" #. !/flag:swp #: modules/devices/arm/arm_data.c:42 msgctxt "arm-flag" msgid "SWP instruction (atomic read-modify-write)" msgstr "" #. !/flag:half #: modules/devices/arm/arm_data.c:43 msgctxt "arm-flag" msgid "Half-word loads and stores" msgstr "" #. !/flag:thumb #: modules/devices/arm/arm_data.c:44 msgctxt "arm-flag" msgid "Thumb (16-bit instruction set)" msgstr "" #. !/flag:26bit #: modules/devices/arm/arm_data.c:45 msgctxt "arm-flag" msgid "26-Bit Model (Processor status register folded into program counter)" msgstr "" #. !/flag:fastmult #: modules/devices/arm/arm_data.c:46 msgctxt "arm-flag" msgid "32x32->64-bit multiplication" msgstr "" #. !/flag:fpa #: modules/devices/arm/arm_data.c:47 msgctxt "arm-flag" msgid "Floating point accelerator" msgstr "" #. !/flag:vfp #: modules/devices/arm/arm_data.c:48 msgctxt "arm-flag" msgid "VFP (early SIMD vector floating point instructions)" msgstr "" #. !/flag:edsp #: modules/devices/arm/arm_data.c:49 msgctxt "arm-flag" msgid "DSP extensions (the 'e' variant of the ARM9 CPUs, and all others above)" msgstr "" #. !/flag:java #: modules/devices/arm/arm_data.c:50 msgctxt "arm-flag" msgid "Jazelle (Java bytecode accelerator)" msgstr "" #. !/flag:iwmmxt #: modules/devices/arm/arm_data.c:51 msgctxt "arm-flag" msgid "SIMD instructions similar to Intel MMX" msgstr "" #. !/flag:crunch #: modules/devices/arm/arm_data.c:52 msgctxt "arm-flag" msgid "MaverickCrunch coprocessor (if kernel support enabled)" msgstr "" #. !/flag:thumbee #: modules/devices/arm/arm_data.c:53 msgctxt "arm-flag" msgid "ThumbEE" msgstr "" #. !/flag:neon #: modules/devices/arm/arm_data.c:54 msgctxt "arm-flag" msgid "Advanced SIMD/NEON on AArch32" msgstr "" #. !/flag:evtstrm #: modules/devices/arm/arm_data.c:55 msgctxt "arm-flag" msgid "Kernel event stream using generic architected timer" msgstr "" #. !/flag:vfpv3 #: modules/devices/arm/arm_data.c:56 msgctxt "arm-flag" msgid "VFP version 3" msgstr "" #. !/flag:vfpv3d16 #: modules/devices/arm/arm_data.c:57 msgctxt "arm-flag" msgid "VFP version 3 with 16 D-registers" msgstr "" #. !/flag:vfpv4 #: modules/devices/arm/arm_data.c:58 msgctxt "arm-flag" msgid "VFP version 4 with fast context switching" msgstr "" #. !/flag:vfpd32 #: modules/devices/arm/arm_data.c:59 msgctxt "arm-flag" msgid "VFP with 32 D-registers" msgstr "" #. !/flag:tls #: modules/devices/arm/arm_data.c:60 msgctxt "arm-flag" msgid "TLS register" msgstr "" #. !/flag:idiva #: modules/devices/arm/arm_data.c:61 msgctxt "arm-flag" msgid "SDIV and UDIV hardware division in ARM mode" msgstr "" #. !/flag:idivt #: modules/devices/arm/arm_data.c:62 msgctxt "arm-flag" msgid "SDIV and UDIV hardware division in Thumb mode" msgstr "" #. !/flag:lpae #: modules/devices/arm/arm_data.c:63 msgctxt "arm-flag" msgid "40-bit Large Physical Address Extension" msgstr "" #. !/flag:pmull #: modules/devices/arm/arm_data.c:65 msgctxt "arm-flag" msgid "64x64->128-bit F2m multiplication (arch>=8)" msgstr "" #. !/flag:aes #: modules/devices/arm/arm_data.c:66 msgctxt "arm-flag" msgid "Crypto:AES (arch>=8)" msgstr "" #. !/flag:sha1 #: modules/devices/arm/arm_data.c:67 msgctxt "arm-flag" msgid "Crypto:SHA1 (arch>=8)" msgstr "" #. !/flag:sha2 #: modules/devices/arm/arm_data.c:68 msgctxt "arm-flag" msgid "Crypto:SHA2 (arch>=8)" msgstr "" #. !/flag:crc32 #: modules/devices/arm/arm_data.c:69 msgctxt "arm-flag" msgid "CRC32 checksum instructions (arch>=8)" msgstr "" #. !/flag:fp #: modules/devices/arm/arm_data.c:71 msgctxt "arm-flag" msgid "Floating-point on AArch64 (arch>=8)" msgstr "" #. !/flag:asimd #: modules/devices/arm/arm_data.c:72 msgctxt "arm-flag" msgid "Advanced SIMD/NEON on AArch64 (arch>=8)" msgstr "" #. !/flag:atomics #: modules/devices/arm/arm_data.c:73 msgctxt "arm-flag" msgid "Atomic instructions on AArch64 (arch>=8)" msgstr "" #. !/flag:fphp #: modules/devices/arm/arm_data.c:74 msgctxt "arm-flag" msgid "Half precision floating point on AArch64 (arch>=8)" msgstr "" #. !/flag:asimdhp #: modules/devices/arm/arm_data.c:75 msgctxt "arm-flag" msgid "Advanced SIMD with BFloat16 on AArch64 (arch>=8)" msgstr "" #. !/flag:cpuid #: modules/devices/arm/arm_data.c:76 msgctxt "arm-flag" msgid "CPU features can be read on AArch64 (arch>=8)" msgstr "" #. !/flag:asimdrdm #: modules/devices/arm/arm_data.c:77 msgctxt "arm-flag" msgid "Advanced SIMD rounding Double MulAcc on AArch64 (arch>=8)" msgstr "" #. !/flag:jscvt #: modules/devices/arm/arm_data.c:78 msgctxt "arm-flag" msgid "JacaScript conversion on AArch64 (arch>=8)" msgstr "" #. !/flag:fcma #: modules/devices/arm/arm_data.c:79 msgctxt "arm-flag" msgid "Complex number SIMD on AArch64 (arch>=8)" msgstr "" #. !/flag:lrcpc #: modules/devices/arm/arm_data.c:80 msgctxt "arm-flag" msgid "Weak release consistency on AArch64 (arch>=8)" msgstr "" #. !/flag:dcpop #: modules/devices/arm/arm_data.c:81 msgctxt "arm-flag" msgid "Data cache clean to Point of Persistence on AArch64 (arch>=8)" msgstr "" #. !/flag:sha3 #: modules/devices/arm/arm_data.c:82 msgctxt "arm-flag" msgid "SHA-3 instructions on AArch64 (arch>=8)" msgstr "" #. !/flag:sm3 #: modules/devices/arm/arm_data.c:83 msgctxt "arm-flag" msgid "SM3 instructions on AArch64 (arch>=8)" msgstr "" #. !/flag:sm4 #: modules/devices/arm/arm_data.c:84 msgctxt "arm-flag" msgid "SM4 instructions on AArch64 (arch>=8)" msgstr "" #. !/flag:asimddp #: modules/devices/arm/arm_data.c:85 msgctxt "arm-flag" msgid "SIMD Dot Product on AArch64 (arch>=8)" msgstr "" #. !/flag:sha512 #: modules/devices/arm/arm_data.c:86 msgctxt "arm-flag" msgid "SHA512 instructions on AArch64 (arch>=8)" msgstr "" #. !/flag:sve #: modules/devices/arm/arm_data.c:87 msgctxt "arm-flag" msgid "Scalable Vector Extension on AArch64 (arch>=8)" msgstr "" #: modules/devices/arm/processor.c:143 msgid "ARM Processor" msgstr "ARM 处理器" #: modules/devices/arm/processor.c:214 modules/devices/riscv/processor.c:211 #: modules/devices/x86/processor.c:609 msgid "Empty List" msgstr "空列表" #: modules/devices/arm/processor.c:239 modules/devices/gpu.c:204 #: modules/devices/gpu.c:294 modules/devices/x86/processor.c:267 msgid "Clocks" msgstr "时钟" #: modules/devices/arm/processor.c:285 modules/devices/arm/processor.c:298 #: modules/devices/x86/processor.c:313 modules/devices/x86/processor.c:326 #, c-format msgid "%.2f-%.2f %s=%dx\n" msgstr "" #: modules/devices/arm/processor.c:341 msgid "Linux Name" msgstr "" #: modules/devices/arm/processor.c:342 msgid "Decoded Name" msgstr "" #: modules/devices/arm/processor.c:343 modules/network/net.c:476 msgid "Mode" msgstr "模式" #: modules/devices/arm/processor.c:349 msgid "ARM" msgstr "ARM" #: modules/devices/arm/processor.c:350 msgid "Implementer" msgstr "" #: modules/devices/arm/processor.c:351 modules/devices/dmi_memory.c:874 msgid "Part" msgstr "" #: modules/devices/arm/processor.c:352 modules/devices/ia64/processor.c:162 #: modules/devices/parisc/processor.c:156 modules/devices/riscv/processor.c:243 msgid "Architecture" msgstr "架构" #: modules/devices/arm/processor.c:353 msgid "Variant" msgstr "变量" #: modules/devices/arm/processor.c:355 modules/devices/riscv/processor.c:250 #: modules/devices/sparc/processor.c:78 modules/devices/x86/processor.c:666 msgid "Capabilities" msgstr "容量" #: modules/devices/arm/processor.c:477 msgid "SOC/Package" msgstr "" #: modules/devices/arm/processor.c:481 modules/devices/x86/processor.c:752 msgid "Logical CPU Config" msgstr "逻辑 CPU 配置" #: modules/devices/arm/processor.c:498 msgid "SOC/Package Information" msgstr "" #: modules/devices/battery.c:178 #, c-format msgid "" "\n" "[Battery: %s]\n" "State=%s (load: %s)\n" "Capacity=%s / %s (%.2f%%)\n" "Battery Technology=%s (%s)\n" "Manufacturer=%s\n" "Model Number=%s\n" "Serial Number=%s\n" msgstr "" #: modules/devices/battery.c:257 #, c-format msgid "" "\n" "[AC Power Supply: %s]\n" "Online=%s\n" "AC Power Type=%s\n" msgstr "" #: modules/devices/battery.c:279 #, c-format msgid "" "\n" "[Battery: %s]\n" "State=%s\n" "Capacity=%s / %s\n" "Battery Technology=%s\n" "Manufacturer=%s\n" "Model Number=%s\n" "Serial Number=%s\n" msgstr "" #: modules/devices/battery.c:372 #, c-format msgid "" "\n" "[Battery (APM)]\n" "Charge=%d%%\n" "Remaining Charge=%s of %s\n" "Using=%s\n" "APM driver version=%s\n" "APM BIOS version=%s\n" msgstr "" #: modules/devices/battery.c:384 #, c-format msgid "" "\n" "[Battery (APM)]\n" "Charge=%d%%\n" "Using=%s\n" "APM driver version=%s\n" "APM BIOS version=%s\n" msgstr "" #: modules/devices/battery.c:413 msgid "" "[No batteries]\n" "No batteries found on this system=\n" msgstr "" #: modules/devices.c:100 msgid "Graphics Processors" msgstr "图形处理器" #: modules/devices.c:101 modules/devices/monitors.c:449 #: modules/devices/monitors.c:495 msgid "Monitors" msgstr "" #: modules/devices.c:102 modules/devices/pci.c:175 msgid "PCI Devices" msgstr "PCI 设备" #: modules/devices.c:103 modules/devices/usb.c:211 msgid "USB Devices" msgstr "USB 设备" #: modules/devices.c:104 msgid "Firmware" msgstr "" #: modules/devices.c:106 msgid "Battery" msgstr "电池" #: modules/devices.c:107 msgid "Sensors" msgstr "传感器" #: modules/devices.c:110 msgid "System DMI" msgstr "" #: modules/devices.c:111 msgid "Memory Devices" msgstr "" #: modules/devices.c:113 modules/devices.c:115 msgid "Device Tree" msgstr "设备树" #: modules/devices.c:117 msgid "Resources" msgstr "资源" #: modules/devices.c:594 msgid "WSL2" msgstr "" #: modules/devices.c:841 msgid "Sensor" msgstr "传感器" #: modules/devices.c:899 modules/devices/dmi_memory.c:806 msgid "Devices" msgstr "设备" #: modules/devices.c:911 msgid "Update PCI ID listing" msgstr "" #: modules/devices.c:916 msgid "Update USB ID listing" msgstr "" #: modules/devices.c:921 msgid "Update EDID vendor codes" msgstr "" #: modules/devices.c:926 msgid "Update IEEE OUI vendor codes" msgstr "" #: modules/devices.c:931 msgid "Update SD card manufacturer information" msgstr "" #: modules/devices.c:938 msgid "Update CPU flags database" msgstr "" #: modules/devices.c:973 msgid "Gathers information about hardware devices" msgstr "" #: modules/devices.c:994 msgid "A copy of pci.ids is not available on the system." msgstr "" #: modules/devices.c:997 msgid "A full pci.ids is not available on the system." msgstr "" #: modules/devices.c:1002 msgid "Resource information requires superuser privileges" msgstr "" #: modules/devices.c:1008 msgid "" "Any NVMe storage devices present are not listed.\n" "udisks2 is required for NVMe devices." msgstr "" #: modules/devices/devicetree.c:51 msgid "Properties" msgstr "属性" #: modules/devices/devicetree.c:52 msgid "Children" msgstr "子女" #: modules/devices/devicetree.c:88 msgid "Node" msgstr "节点" #: modules/devices/devicetree.c:89 msgid "Node Path" msgstr "节点路径" #: modules/devices/devicetree.c:90 msgid "Alias" msgstr "别名" #: modules/devices/devicetree.c:91 msgid "Symbol" msgstr "符号" #: modules/devices/devicetree.c:144 modules/devices/devicetree/pmac_data.c:79 msgid "Platform" msgstr "平台" #: modules/devices/devicetree.c:145 modules/devices/devicetree.c:210 #: modules/devices/gpu.c:299 msgid "Compatible" msgstr "" #: modules/devices/devicetree.c:146 msgid "GPU-compatible" msgstr "" #: modules/devices/devicetree.c:161 msgid "Raspberry Pi or Compatible" msgstr "" #: modules/devices/devicetree.c:163 modules/devices/devicetree.c:190 #: modules/devices/devicetree.c:209 modules/devices/devicetree/rpi_data.c:169 #: modules/devices/dmi.c:42 modules/devices/dmi.c:52 modules/devices/dmi.c:58 #: modules/devices/spd-decode.c:1383 modules/devices/usb.c:181 msgid "Serial Number" msgstr "序列号" #: modules/devices/devicetree.c:164 modules/devices/devicetree/rpi_data.c:166 msgid "RCode" msgstr "" #: modules/devices/devicetree.c:164 msgid "No revision code available; unable to lookup model details." msgstr "" #: modules/devices/devicetree.c:189 msgid "More" msgstr "更多" #: modules/devices/devicetree.c:270 msgid "Messages" msgstr "消息" #: modules/devices/devicetree/pmac_data.c:78 msgid "Apple Power Macintosh" msgstr "" #: modules/devices/devicetree/pmac_data.c:83 msgid "Detected as" msgstr "" #: modules/devices/devicetree/pmac_data.c:84 msgid "PMAC Flags" msgstr "" #: modules/devices/devicetree/pmac_data.c:85 msgid "L2 Cache" msgstr "L2 缓存" #: modules/devices/devicetree/pmac_data.c:86 msgid "PMAC Generation" msgstr "" #: modules/devices/devicetree/rpi_data.c:161 #: modules/devices/devicetree/rpi_data.c:162 msgid "Raspberry Pi" msgstr "" #: modules/devices/devicetree/rpi_data.c:162 msgid "Board Name" msgstr "主板名称" #: modules/devices/devicetree/rpi_data.c:163 msgid "PCB Revision" msgstr "PCB 修订版本" #: modules/devices/devicetree/rpi_data.c:164 msgid "Introduction" msgstr "介绍" #: modules/devices/devicetree/rpi_data.c:165 modules/devices/usb.c:173 msgid "Manufacturer" msgstr "制造商" #: modules/devices/devicetree/rpi_data.c:167 msgid "SOC (spec)" msgstr "" #: modules/devices/devicetree/rpi_data.c:168 msgid "Memory (spec)" msgstr "" #: modules/devices/devicetree/rpi_data.c:170 msgid "Permanent overvolt bit" msgstr "" #: modules/devices/devicetree/rpi_data.c:170 msgctxt "rpi-ov-bit" msgid "Set" msgstr "" #: modules/devices/devicetree/rpi_data.c:170 msgctxt "rpi-ov-bit" msgid "Not set" msgstr "" #: modules/devices/dmi.c:37 modules/devices/inputdevices.c:145 #: modules/devices/usb.c:170 msgid "Product" msgstr "产品" #: modules/devices/dmi.c:39 modules/devices/e2k/processor.c:360 #: modules/devices/ia64/processor.c:164 #: modules/devices/loongarch64/processor.c:95 modules/devices/sh/processor.c:86 msgid "Family" msgstr "家族" #: modules/devices/dmi.c:43 msgid "SKU" msgstr "" #: modules/devices/dmi.c:44 msgid "BIOS" msgstr "BIOS" #: modules/devices/dmi.c:53 modules/devices/dmi.c:59 msgid "Asset Tag" msgstr "" #: modules/devices/dmi.c:161 msgid "DMI Unavailable" msgstr "" #: modules/devices/dmi.c:162 msgid "DMI is not available. Perhaps this platform does not provide DMI." msgstr "" #: modules/devices/dmi_memory.c:620 modules/devices/dmi_memory.c:859 msgid "Memory Device List" msgstr "" #: modules/devices/dmi_memory.c:668 msgid "Memory Array" msgstr "" #: modules/devices/dmi_memory.c:669 modules/devices/x86/processor.c:714 msgid "DMI Handle" msgstr "" #: modules/devices/dmi_memory.c:670 modules/devices/dmi_memory.c:726 #: modules/devices/dmi_memory.c:764 modules/devices/dmi_memory.c:871 msgid "Locator" msgstr "" #: modules/devices/dmi_memory.c:671 msgid "Use" msgstr "" #: modules/devices/dmi_memory.c:672 msgid "Error Correction Type" msgstr "" #: modules/devices/dmi_memory.c:673 msgid "Size (Present / Max)" msgstr "" #: modules/devices/dmi_memory.c:674 msgid "Devices (Populated / Sockets)" msgstr "" #: modules/devices/dmi_memory.c:675 modules/devices/dmi_memory.c:807 msgid "Types Present" msgstr "" #: modules/devices/dmi_memory.c:676 msgid "ROM Size" msgstr "" #: modules/devices/dmi_memory.c:724 modules/devices/dmi_memory.c:762 msgid "Memory Socket" msgstr "" #: modules/devices/dmi_memory.c:725 modules/devices/dmi_memory.c:763 msgid "DMI Handles (Array, Socket)" msgstr "" #: modules/devices/dmi_memory.c:727 modules/devices/dmi_memory.c:765 msgid "Bank Locator" msgstr "" #: modules/devices/dmi_memory.c:728 modules/devices/spd-decode.c:1376 msgid "Form Factor" msgstr "" #: modules/devices/dmi_memory.c:732 modules/devices/spd-decode.c:1382 msgid "Part Number" msgstr "" #: modules/devices/dmi_memory.c:734 msgid "Rated Speed" msgstr "" #: modules/devices/dmi_memory.c:735 msgid "Configured Speed" msgstr "" #: modules/devices/dmi_memory.c:736 msgid "Data Width/Total Width" msgstr "" #: modules/devices/dmi_memory.c:737 msgid "Rank" msgstr "" #: modules/devices/dmi_memory.c:738 msgid "Minimum Voltage" msgstr "" #: modules/devices/dmi_memory.c:739 msgid "Maximum Voltage" msgstr "" #: modules/devices/dmi_memory.c:740 msgid "Configured Voltage" msgstr "" #: modules/devices/dmi_memory.c:766 modules/devices/dmi_memory.c:773 #: modules/devices/monitors.c:495 msgid "(Empty)" msgstr "" #: modules/devices/dmi_memory.c:804 msgid "Serial Presence Detect (SPD) Summary" msgstr "" #: modules/devices/dmi_memory.c:860 msgid "(Not available - See hint box below)" msgstr "" #: modules/devices/dmi_memory.c:932 msgid "No DMI available" msgstr "" #: modules/devices/dmi_memory.c:937 msgid "dmidecode package installed" msgstr "" #: modules/devices/dmi_memory.c:948 msgid "Memory Information requires more Setup:" msgstr "" #: modules/devices/dmi_memory.c:976 msgid "" "\"More often than not, information contained in the DMI tables is " "inaccurate,\n" "incomplete or simply wrong.\" -dmidecode manual page" msgstr "" #: modules/devices/e2k/processor.c:30 modules/devices/x86/processor.c:149 msgid "Cache information not available=\n" msgstr "" #: modules/devices/e2k/processor.c:36 modules/devices/x86/processor.c:155 #, c-format msgid "Level %d (%s)=%d-way set-associative, %d sets, %dKB size\n" msgstr "" #: modules/devices/e2k/processor.c:51 msgctxt "cache-type" msgid "Data" msgstr "数据" #: modules/devices/e2k/processor.c:52 msgctxt "cache-type" msgid "Instruction" msgstr "" #: modules/devices/e2k/processor.c:53 msgctxt "cache-type" msgid "Unified" msgstr "" #: modules/devices/e2k/processor.c:157 modules/devices/x86/processor.c:366 msgid "Caches" msgstr "缓存" #: modules/devices/e2k/processor.c:208 modules/devices/e2k/processor.c:225 #: modules/devices/x86/processor.c:417 modules/devices/x86/processor.c:434 #, c-format msgid "Level %d (%s)#%d=%dx %dKB (%dKB), %d-way set-associative, %d sets\n" msgstr "" #: modules/devices/firmware.c:36 msgid "Device cannot be removed easily" msgstr "" #: modules/devices/firmware.c:37 msgid "Device is updatable in this or any other mode" msgstr "" #: modules/devices/firmware.c:38 msgid "Update can only be done from offline mode" msgstr "" #: modules/devices/firmware.c:39 msgid "Requires AC power" msgstr "" #: modules/devices/firmware.c:40 msgid "Is locked and can be unlocked" msgstr "" #: modules/devices/firmware.c:41 msgid "Is found in current metadata" msgstr "" #: modules/devices/firmware.c:42 msgid "Requires a bootloader mode to be manually enabled by the user" msgstr "" #: modules/devices/firmware.c:43 msgid "Has been registered with other plugins" msgstr "" #: modules/devices/firmware.c:44 msgid "Requires a reboot to apply firmware or to reload hardware" msgstr "" #: modules/devices/firmware.c:45 msgid "Requires system shutdown to apply firmware" msgstr "" #: modules/devices/firmware.c:46 msgid "Has been reported to a metadata server" msgstr "" #: modules/devices/firmware.c:47 msgid "User has been notified" msgstr "" #: modules/devices/firmware.c:48 msgid "Always use the runtime version rather than the bootloader" msgstr "" #: modules/devices/firmware.c:49 msgid "Install composite firmware on the parent before the child" msgstr "" #: modules/devices/firmware.c:50 msgid "Is currently in bootloader mode" msgstr "" #: modules/devices/firmware.c:51 msgid "The hardware is waiting to be replugged" msgstr "" #: modules/devices/firmware.c:52 msgid "Ignore validation safety checks when flashing this device" msgstr "" #: modules/devices/firmware.c:53 msgid "Requires the update to be retried with a new plugin" msgstr "" #: modules/devices/firmware.c:54 msgid "Do not add instance IDs from the device baseclass" msgstr "" #: modules/devices/firmware.c:55 msgid "Device update needs to be separately activated" msgstr "" #: modules/devices/firmware.c:56 msgid "" "Ensure the version is a valid semantic version, e.g. numbers separated with " "dots" msgstr "" #: modules/devices/firmware.c:57 msgid "Extra metadata can be exposed about this device" msgstr "" #: modules/devices/firmware.c:74 msgid "DeviceId" msgstr "" #: modules/devices/firmware.c:74 modules/devices/firmware.c:187 msgid "Guid" msgstr "" #: modules/devices/firmware.c:74 msgid "Plugin" msgstr "" #: modules/devices/firmware.c:74 modules/devices/firmware.c:205 #: modules/network.c:381 msgid "Flags" msgstr "标志" #: modules/devices/firmware.c:75 msgid "VendorId" msgstr "" #: modules/devices/firmware.c:75 msgid "VersionBootloader" msgstr "" #: modules/devices/firmware.c:76 modules/devices/firmware.c:179 msgid "Icon" msgstr "" #: modules/devices/firmware.c:76 msgid "InstallDuration" msgstr "" #: modules/devices/firmware.c:76 modules/devices/firmware.c:197 msgid "Created" msgstr "" #: modules/devices/firmware.c:244 msgid "Firmware List" msgstr "" #: modules/devices/firmware.c:257 msgid "Requires the fwupd daemon." msgstr "" #: modules/devices/gpu.c:94 modules/devices/pci.c:111 #: modules/devices/storage.c:58 msgid "SVendor" msgstr "" #: modules/devices/gpu.c:95 modules/devices/pci.c:112 #: modules/devices/storage.c:59 msgid "SDevice" msgstr "" #: modules/devices/gpu.c:103 modules/devices/pci.c:122 #: modules/devices/storage.c:68 msgid "PCI Express" msgstr "" #: modules/devices/gpu.c:104 modules/devices/pci.c:124 #: modules/devices/storage.c:70 msgid "Maximum Link Width" msgstr "" #: modules/devices/gpu.c:105 modules/devices/pci.c:126 #: modules/devices/storage.c:71 msgid "Maximum Link Speed" msgstr "" #: modules/devices/gpu.c:105 modules/devices/pci.c:125 #: modules/devices/pci.c:126 modules/devices/storage.c:71 msgid "GT/s" msgstr "GT/s" #: modules/devices/gpu.c:115 msgid "NVIDIA" msgstr "NVIDIA" #: modules/devices/gpu.c:117 msgid "BIOS Version" msgstr "BIOS 版本" #: modules/devices/gpu.c:118 msgid "UUID" msgstr "UUID" #: modules/devices/gpu.c:197 modules/devices/gpu.c:289 #: modules/devices/inputdevices.c:140 modules/devices/pci.c:143 #: modules/devices/usb.c:169 msgid "Device Information" msgstr "设备信息" #: modules/devices/gpu.c:199 modules/devices/gpu.c:291 #: modules/devices/storage.c:69 msgid "Location" msgstr "位置" #: modules/devices/gpu.c:200 msgid "DRM Device" msgstr "DRM 设备" #: modules/devices/gpu.c:201 modules/devices/pci.c:144 #: modules/devices/usb.c:136 modules/devices/usb.c:177 msgid "Class" msgstr "分类" #: modules/devices/gpu.c:210 modules/devices/pci.c:149 msgid "In Use" msgstr "使用中" #: modules/devices/gpu.c:245 msgid "Unknown integrated GPU" msgstr "" #: modules/devices/gpu.c:253 msgid "clock-frequency property" msgstr "" #: modules/devices/gpu.c:254 msgid "Operating Points (OPPv1)" msgstr "" #: modules/devices/gpu.c:255 msgid "Operating Points (OPPv2)" msgstr "" #: modules/devices/gpu.c:297 msgid "Device Tree Node" msgstr "" #: modules/devices/gpu.c:300 modules/devices/monitors.c:475 #: modules/network/net.c:477 msgid "Status" msgstr "状态" #: modules/devices/gpu.c:317 msgid "GPUs" msgstr "" #: modules/devices/gpu.c:341 msgid "No GPU devices found" msgstr "" #: modules/devices/ia64/processor.c:108 msgid "IA64 Processor" msgstr "" #: modules/devices/ia64/processor.c:163 msgid "Architecture Revision" msgstr "" #: modules/devices/ia64/processor.c:170 msgid "CPU regs" msgstr "" #: modules/devices/ia64/processor.c:171 #: modules/devices/loongarch64/processor.c:100 msgid "Features" msgstr "功能" #: modules/devices/inputdevices.c:143 modules/devices/pci.c:153 #: modules/devices/usb.c:183 msgid "Bus" msgstr "总线" #: modules/devices/inputdevices.c:149 msgid "Connected to" msgstr "连接到" #: modules/devices/inputdevices.c:153 msgid "InfraRed port" msgstr "" #: modules/devices/loongarch64/processor.c:94 #: modules/devices/mips/processor.c:76 msgid "System Type" msgstr "系统类型" #: modules/devices/loongarch64/processor.c:99 msgid "BogoMIPS" msgstr "" #: modules/devices/m68k/processor.c:85 modules/devices/riscv/processor.c:245 msgid "MMU" msgstr "MMU" #: modules/devices/m68k/processor.c:86 modules/devices/sparc/processor.c:76 msgid "FPU" msgstr "FPU" #: modules/devices/m68k/processor.c:90 msgid "Calibration" msgstr "校正" #: modules/devices/monitors.c:30 modules/devices/monitors.c:257 #: modules/devices/monitors.c:350 modules/devices/spd-decode.c:699 msgid "(Unspecified)" msgstr "" #: modules/devices/monitors.c:232 #, c-format msgid "Week %d of %d" msgstr "" #: modules/devices/monitors.c:242 msgid "Ok" msgstr "" #: modules/devices/monitors.c:242 msgid "Fail" msgstr "" #: modules/devices/monitors.c:270 modules/devices/monitors.c:278 #: modules/devices/monitors.c:286 modules/devices/monitors.c:297 #: modules/devices/monitors.c:305 modules/devices/monitors.c:312 #: modules/devices/monitors.c:320 modules/devices/monitors.c:328 #: modules/devices/monitors.c:336 modules/devices/monitors.c:342 msgid "(Empty List)" msgstr "" #: modules/devices/monitors.c:394 msgid "Signal Type" msgstr "" #: modules/devices/monitors.c:394 msgid "Digital" msgstr "" #: modules/devices/monitors.c:394 msgid "Analog" msgstr "" #: modules/devices/monitors.c:395 modules/devices/usb.c:135 #: modules/network.c:311 modules/network.c:364 modules/network.c:381 msgid "Interface" msgstr "界面" #: modules/devices/monitors.c:396 msgid "Bits per Color Channel" msgstr "" #: modules/devices/monitors.c:397 msgid "Speaker Allocation" msgstr "" #: modules/devices/monitors.c:398 msgid "Output (Max)" msgstr "" #: modules/devices/monitors.c:401 msgid "EDID Device" msgstr "" #: modules/devices/monitors.c:405 msgid "Serial" msgstr "" #: modules/devices/monitors.c:406 msgid "Manufacture Date" msgstr "" #: modules/devices/monitors.c:407 msgid "EDID Meta" msgstr "" #: modules/devices/monitors.c:408 msgid "Data Size" msgstr "" #: modules/devices/monitors.c:408 msgid "bytes" msgstr "" #: modules/devices/monitors.c:410 msgid "Extension Blocks" msgstr "" #: modules/devices/monitors.c:411 msgid "Extended to" msgstr "" #: modules/devices/monitors.c:412 msgid "Checksum" msgstr "" #: modules/devices/monitors.c:413 msgid "EDID Descriptors" msgstr "" #: modules/devices/monitors.c:414 msgid "Detailed Timing Descriptors (DTD)" msgstr "" #: modules/devices/monitors.c:415 msgid "Established Timings Bitmap (ETB)" msgstr "" #: modules/devices/monitors.c:416 msgid "Standard Timings (STD)" msgstr "" #: modules/devices/monitors.c:417 msgid "E-EDID Extension Blocks" msgstr "" #: modules/devices/monitors.c:418 msgid "EIA/CEA-861 Data Blocks" msgstr "" #: modules/devices/monitors.c:419 msgid "EIA/CEA-861 Short Audio Descriptors" msgstr "" #: modules/devices/monitors.c:420 msgid "EIA/CEA-861 Short Video Descriptors" msgstr "" #: modules/devices/monitors.c:421 msgid "DisplayID Timings" msgstr "" #: modules/devices/monitors.c:422 msgid "DisplayID Strings" msgstr "" #: modules/devices/monitors.c:423 msgid "Hex Dump" msgstr "" #: modules/devices/monitors.c:423 msgid "Data" msgstr "" #: modules/devices/monitors.c:473 modules/devices/monitors.c:504 #: modules/devices/pci.c:151 modules/devices/usb.c:182 msgid "Connection" msgstr "连接" #: modules/devices/monitors.c:474 msgid "DRM" msgstr "" #: modules/devices/parisc/processor.c:107 msgid "PA-RISC Processor" msgstr "" #: modules/devices/parisc/processor.c:161 msgid "HVersion" msgstr "" #: modules/devices/parisc/processor.c:162 msgid "SVersion" msgstr "" #: modules/devices/pci.c:123 msgid "Link Width" msgstr "" #: modules/devices/pci.c:125 msgid "Link Speed" msgstr "" #: modules/devices/pci.c:152 msgid "Domain" msgstr "域" #: modules/devices/pci.c:155 msgid "Function" msgstr "功能" #: modules/devices/pci.c:196 msgid "No PCI devices found" msgstr "未找到 PCI 设备" #: modules/devices/ppc/processor.c:117 msgid "POWER Processor" msgstr "POWER 处理器" #: modules/devices/printers.c:88 msgid "⚬ Can do black and white printing=\n" msgstr "" #: modules/devices/printers.c:90 msgid "⚬ Can do color printing=\n" msgstr "" #: modules/devices/printers.c:92 msgid "⚬ Can do duplexing=\n" msgstr "" #: modules/devices/printers.c:94 msgid "⚬ Can do staple output=\n" msgstr "" #: modules/devices/printers.c:96 msgid "⚬ Can do copies=\n" msgstr "" #: modules/devices/printers.c:98 msgid "⚬ Can collate copies=\n" msgstr "" #: modules/devices/printers.c:100 msgid "⚬ Printer is rejecting jobs=\n" msgstr "" #: modules/devices/printers.c:102 msgid "⚬ Printer was automatically discovered and added=\n" msgstr "" #: modules/devices/printers.c:117 msgid "Idle" msgstr "发呆" #: modules/devices/printers.c:119 msgid "Printing a Job" msgstr "打印一个任务" #: modules/devices/printers.c:121 msgid "Stopped" msgstr "已停止" #: modules/devices/printers.c:200 msgid "" "[Printers]\n" "No suitable CUPS library found=" msgstr "" "[打印机]\n" "未找到合适的 CUPS 库=" #: modules/devices/printers.c:213 msgid "[Printers (CUPS)]\n" msgstr "" #: modules/devices/printers.c:277 msgid "" "[Printers]\n" "No printers found=\n" msgstr "" "[打印机]\n" "未找到打印机=\n" #: modules/devices/riscv/processor.c:244 msgid "uarch" msgstr "" #: modules/devices/riscv/riscv_data.c:37 msgctxt "rv-ext" msgid "RISC-V 32-bit" msgstr "RISC-V 32位" #: modules/devices/riscv/riscv_data.c:38 msgctxt "rv-ext" msgid "RISC-V 64-bit" msgstr "RISC-V 64位" #: modules/devices/riscv/riscv_data.c:39 msgctxt "rv-ext" msgid "RISC-V 128-bit" msgstr "RISC-V 128位" #: modules/devices/riscv/riscv_data.c:40 msgctxt "rv-ext" msgid "Base embedded integer instructions (15 registers)" msgstr "" #: modules/devices/riscv/riscv_data.c:41 msgctxt "rv-ext" msgid "Base integer instructions (31 registers)" msgstr "" #: modules/devices/riscv/riscv_data.c:42 msgctxt "rv-ext" msgid "Hardware integer multiply and divide" msgstr "" #: modules/devices/riscv/riscv_data.c:43 msgctxt "rv-ext" msgid "Atomic memory operations" msgstr "" #: modules/devices/riscv/riscv_data.c:44 msgctxt "rv-ext" msgid "Compressed 16-bit instructions" msgstr "" #: modules/devices/riscv/riscv_data.c:45 msgctxt "rv-ext" msgid "Floating-point instructions, single-precision" msgstr "" #: modules/devices/riscv/riscv_data.c:46 msgctxt "rv-ext" msgid "Floating-point instructions, double-precision" msgstr "" #: modules/devices/riscv/riscv_data.c:47 msgctxt "rv-ext" msgid "Floating-point instructions, quad-precision" msgstr "" #: modules/devices/riscv/riscv_data.c:48 msgctxt "rv-ext" msgid "Bit manipulation instructions" msgstr "" #: modules/devices/riscv/riscv_data.c:49 msgctxt "rv-ext" msgid "Vector operations" msgstr "" #: modules/devices/riscv/riscv_data.c:50 msgctxt "rv-ext" msgid "Scalar Cryptography" msgstr "" #: modules/devices/riscv/riscv_data.c:51 msgctxt "rv-ext" msgid "Base Counters and Timers" msgstr "" #: modules/devices/riscv/riscv_data.c:52 msgctxt "rv-ext" msgid "Control and Status Register" msgstr "" #: modules/devices/riscv/riscv_data.c:53 msgctxt "rv-ext" msgid "Instruction-Fetch Fence" msgstr "" #: modules/devices/riscv/riscv_data.c:54 msgctxt "rv-ext" msgid "Hardware performance counters" msgstr "" #: modules/devices/riscv/riscv_data.c:55 msgctxt "rv-ext" msgid "Accell Index addresses" msgstr "" #: modules/devices/riscv/riscv_data.c:56 msgctxt "rv-ext" msgid "Basic bit-manipulation" msgstr "" #: modules/devices/riscv/riscv_data.c:57 msgctxt "rv-ext" msgid "Supervisor-level Instructions" msgstr "" #: modules/devices/riscv/riscv_data.c:58 msgctxt "rv-ext" msgid "User Mode" msgstr "" #: modules/devices/riscv/riscv_data.c:59 msgctxt "rv-ext" msgid "Transactional memory" msgstr "" #: modules/devices/riscv/riscv_data.c:60 msgctxt "rv-ext" msgid "Packed SIMD instructions" msgstr "" #: modules/devices/riscv/riscv_data.c:61 msgctxt "rv-ext" msgid "Decimal floating-point instructions" msgstr "" #: modules/devices/riscv/riscv_data.c:62 msgctxt "rv-ext" msgid "Dynamically translated languages" msgstr "" #: modules/devices/riscv/riscv_data.c:63 msgctxt "rv-ext" msgid "User-level interrupts" msgstr "用户级中断" #: modules/devices/s390/processor.c:92 msgid "S390 Processor" msgstr "S390 处理器" #: modules/devices/s390/processor.c:133 msgid "ID String" msgstr "ID 字符串" #: modules/devices/sh/processor.c:55 msgid "SuperH Processor" msgstr "" #: modules/devices/sh/processor.c:88 msgid "Bus Frequency" msgstr "" #: modules/devices/sh/processor.c:89 msgid "Module Frequency" msgstr "" #: modules/devices/spd-decode.c:128 modules/devices/spd-decode.c:144 msgid "Unspecified" msgstr "" #: modules/devices/spd-decode.c:130 modules/devices/spd-decode.c:146 msgid "Invalid" msgstr "" #: modules/devices/spd-decode.c:358 msgid "Row address bits" msgstr "" #: modules/devices/spd-decode.c:359 msgid "Column address bits" msgstr "" #: modules/devices/spd-decode.c:360 msgid "Number of rows" msgstr "" #: modules/devices/spd-decode.c:361 msgid "Data width" msgstr "" #: modules/devices/spd-decode.c:362 msgid "Interface signal levels" msgstr "" #: modules/devices/spd-decode.c:363 msgid "Configuration type" msgstr "" #: modules/devices/spd-decode.c:364 msgid "Refresh" msgstr "" #: modules/devices/spd-decode.c:365 modules/devices/spd-decode.c:442 #: modules/devices/spd-decode.c:721 msgid "Timings" msgstr "" #: modules/devices/spd-decode.c:589 modules/devices/spd-decode.c:858 #: modules/devices/spd-decode.c:899 modules/devices/spd-decode.c:1111 #: modules/devices/x86/processor.c:716 msgid "Voltage" msgstr "" #: modules/devices/spd-decode.c:590 modules/devices/spd-decode.c:901 #: modules/devices/spd-decode.c:1113 msgid "JEDEC Timings" msgstr "" #: modules/devices/spd-decode.c:697 msgid "Ranks" msgstr "" #: modules/devices/spd-decode.c:698 msgid "IO Pins per Chip" msgstr "" #: modules/devices/spd-decode.c:699 msgid "Die count" msgstr "" #: modules/devices/spd-decode.c:700 msgid "Thermal Sensor" msgstr "" #: modules/devices/spd-decode.c:700 msgid "Present" msgstr "" #: modules/devices/spd-decode.c:700 msgid "Not present" msgstr "" #: modules/devices/spd-decode.c:701 msgid "Supported Voltages" msgstr "" #: modules/devices/spd-decode.c:705 msgid "Supported CAS Latencies" msgstr "" #: modules/devices/spd-decode.c:856 msgid "XMP Profile" msgstr "" #: modules/devices/spd-decode.c:857 modules/devices/usb.c:176 #: modules/network/net.c:438 msgid "Speed" msgstr "" #: modules/devices/spd-decode.c:859 msgid "XMP Timings" msgstr "" #: modules/devices/spd-decode.c:900 msgid "XMP" msgstr "" #: modules/devices/spd-decode.c:1372 msgid "Serial Presence Detect (SPD)" msgstr "" #: modules/devices/spd-decode.c:1375 msgid "SPD Revision" msgstr "" #: modules/devices/spd-decode.c:1378 msgid "Module Vendor" msgstr "" #: modules/devices/spd-decode.c:1380 msgid "DRAM Vendor" msgstr "" #: modules/devices/spd-decode.c:1385 msgid "Manufacturing Date (Year / Week)" msgstr "" #: modules/devices/storage.c:46 modules/devices/storage.c:55 msgid "NVMe Controller" msgstr "" #: modules/devices/storage.c:138 msgid "Read Error Rate" msgstr "" #: modules/devices/storage.c:139 msgid "Throughput Performance" msgstr "" #: modules/devices/storage.c:140 msgid "Spin-Up Time" msgstr "" #: modules/devices/storage.c:141 msgid "Start/Stop Count" msgstr "" #: modules/devices/storage.c:142 msgid "Reallocated Sector Count" msgstr "" #: modules/devices/storage.c:143 msgid "Read Channel Margin" msgstr "" #: modules/devices/storage.c:144 msgid "Seek Error Rate" msgstr "" #: modules/devices/storage.c:145 msgid "Seek Timer Performance" msgstr "" #: modules/devices/storage.c:146 modules/devices/storage.c:185 msgid "Power-On Hours" msgstr "" #: modules/devices/storage.c:147 msgid "Spin Retry Count" msgstr "" #: modules/devices/storage.c:148 msgid "Calibration Retry Count" msgstr "" #: modules/devices/storage.c:149 msgid "Power Cycle Count" msgstr "" #: modules/devices/storage.c:150 modules/devices/storage.c:167 msgid "Soft Read Error Rate" msgstr "" #: modules/devices/storage.c:151 msgid "Runtime Bad Block" msgstr "" #: modules/devices/storage.c:152 msgid "End-to-End error" msgstr "" #: modules/devices/storage.c:153 msgid "Reported Uncorrectable Errors" msgstr "" #: modules/devices/storage.c:154 msgid "Command Timeout" msgstr "" #: modules/devices/storage.c:155 msgid "High Fly Writes" msgstr "" #: modules/devices/storage.c:156 msgid "Airflow Temperature" msgstr "" #: modules/devices/storage.c:157 msgid "G-sense Error Rate" msgstr "" #: modules/devices/storage.c:158 msgid "Power-off Retract Count" msgstr "" #: modules/devices/storage.c:159 msgid "Load Cycle Count" msgstr "" #: modules/devices/storage.c:160 modules/devices/storage.c:183 msgid "Temperature" msgstr "" #: modules/devices/storage.c:161 msgid "Hardware ECC Recovered" msgstr "" #: modules/devices/storage.c:162 msgid "Reallocation Event Count" msgstr "" #: modules/devices/storage.c:163 msgid "Current Pending Sector Count" msgstr "" #: modules/devices/storage.c:164 msgid "Uncorrectable Sector Count" msgstr "" #: modules/devices/storage.c:165 msgid "UltraDMA CRC Error Count" msgstr "" #: modules/devices/storage.c:166 msgid "Multi-Zone Error Rate" msgstr "" #: modules/devices/storage.c:168 msgid "Run Out Cancel" msgstr "" #: modules/devices/storage.c:169 msgid "Flying Height" msgstr "" #: modules/devices/storage.c:170 msgid "Spin High Current" msgstr "" #: modules/devices/storage.c:171 msgid "Spin Buzz" msgstr "" #: modules/devices/storage.c:172 msgid "Offline Seek Performance" msgstr "" #: modules/devices/storage.c:173 msgid "Disk Shift" msgstr "" #: modules/devices/storage.c:174 msgid "G-Sense Error Rate" msgstr "" #: modules/devices/storage.c:175 msgid "Loaded Hours" msgstr "" #: modules/devices/storage.c:176 msgid "Load/Unload Retry Count" msgstr "" #: modules/devices/storage.c:177 msgid "Load Friction" msgstr "" #: modules/devices/storage.c:178 msgid "Load/Unload Cycle Count" msgstr "" #: modules/devices/storage.c:179 msgid "Load-in time" msgstr "" #: modules/devices/storage.c:180 msgid "Torque Amplification Count" msgstr "" #: modules/devices/storage.c:181 msgid "Power-Off Retract Count" msgstr "" #: modules/devices/storage.c:182 msgid "GMR Head Amplitude" msgstr "" #: modules/devices/storage.c:184 msgid "Endurance Remaining" msgstr "" #: modules/devices/storage.c:186 msgid "Good Block Rate" msgstr "" #: modules/devices/storage.c:187 msgid "Head Flying Hours" msgstr "" #: modules/devices/storage.c:188 msgid "Read Error Retry Rate" msgstr "" #: modules/devices/storage.c:189 msgid "Total LBAs Written" msgstr "" #: modules/devices/storage.c:190 msgid "Total LBAs Read" msgstr "" #: modules/devices/storage.c:191 msgid "Wear leveling Count" msgstr "" #: modules/devices/storage.c:192 msgid "Total Used Reserved Block Count" msgstr "" #: modules/devices/storage.c:193 msgid "Total Program Fail Count" msgstr "" #: modules/devices/storage.c:194 msgid "Total Erase Fail Count" msgstr "" #: modules/devices/storage.c:195 msgid "Available Reserved Space" msgstr "" #: modules/devices/storage.c:196 msgid "Program Fail Count" msgstr "" #: modules/devices/storage.c:197 msgid "Erase Fail Count" msgstr "" #: modules/devices/storage.c:198 msgid "TA Counter Increased" msgstr "" #: modules/devices/storage.c:199 msgid "Total Unused Reserved Block Count" msgstr "" #: modules/devices/storage.c:204 msgid "" "\n" "[UDisks2]\n" msgstr "" #: modules/devices/storage.c:257 msgid "Removable" msgstr "" #: modules/devices/storage.c:257 msgid "Fixed" msgstr "" #: modules/devices/storage.c:260 msgid "Ejectable" msgstr "" #: modules/devices/storage.c:263 msgid "Self-monitoring (S.M.A.R.T.)" msgstr "" #: modules/devices/storage.c:266 modules/devices/x86/processor.c:664 msgid "Power Management" msgstr "电源管理" #: modules/devices/storage.c:269 msgid "Advanced Power Management" msgstr "" #: modules/devices/storage.c:272 msgid "Automatic Acoustic Management" msgstr "" #: modules/devices/storage.c:275 #, c-format msgid "" "[Drive Information]\n" "Model=%s\n" msgstr "" #: modules/devices/storage.c:285 #, c-format msgid "" "Revision=%s\n" "Block Device=%s\n" "Serial=%s\n" "Size=%s\n" "Features=%s\n" msgstr "" #: modules/devices/storage.c:300 #, c-format msgid "Rotation Rate=%d RPM\n" msgstr "" #: modules/devices/storage.c:303 #, c-format msgid "" "Media=%s\n" "Media compatibility=%s\n" msgstr "" #: modules/devices/storage.c:310 #, c-format msgid "Connection bus=%s\n" msgstr "" #: modules/devices/storage.c:322 msgid "WWN" msgstr "" #: modules/devices/storage.c:323 msgid "EUI " msgstr "" #: modules/devices/storage.c:328 msgid "WWN / EUI" msgstr "" #: modules/devices/storage.c:332 #, c-format msgid "$^$%s=[%s] %s\n" msgstr "" #: modules/devices/storage.c:334 msgid "IEEE OUI" msgstr "" #: modules/devices/storage.c:346 msgid "" "[Self-monitoring (S.M.A.R.T.)]\n" "Status=%s\n" "Bad Sectors=%" msgstr "" #: modules/devices/storage.c:352 msgid "Failing" msgstr "" #: modules/devices/storage.c:352 msgid "OK" msgstr "" #: modules/devices/storage.c:358 msgid "" "[S.M.A.R.T. Attributes]\n" "Attribute=Value / Normalized / Worst / Threshold\n" msgstr "" #: modules/devices/storage.c:381 msgid "%" msgid_plural "%" msgstr[0] "" #: modules/devices/storage.c:419 #, c-format msgid "(%d) %s=%s\n" msgstr "" #: modules/devices/storage.c:428 #, c-format msgid "" "[Partition table]\n" "Type=%s\n" msgstr "" #: modules/devices/storage.c:447 #, c-format msgid "Partition %s=%s\n" msgstr "" #: modules/devices/storage.c:496 msgid "" "\n" "[SCSI Disks]\n" msgstr "" #: modules/devices/storage.c:567 modules/devices/storage.c:773 #, c-format msgid "" "[Device Information]\n" "Model=%s\n" msgstr "" #: modules/devices/storage.c:574 #, c-format msgid "" "Type=%s\n" "Revision=%s\n" "[SCSI Controller]\n" "Controller=scsi%d\n" "Channel=%d\n" "ID=%d\n" "LUN=%d\n" msgstr "" #: modules/devices/storage.c:621 msgid "" "\n" "[IDE Disks]\n" msgstr "" #: modules/devices/storage.c:707 #, c-format msgid "Driver=%s\n" msgstr "" #: modules/devices/storage.c:779 #, c-format msgid "" "Device Name=hd%c\n" "Media=%s\n" "Cache=%dkb\n" msgstr "" #: modules/devices/storage.c:789 #, c-format msgid "" "[Geometry]\n" "Physical=%s\n" "Logical=%s\n" msgstr "" #: modules/devices/storage.c:799 #, c-format msgid "" "[Capabilities]\n" "%s" msgstr "" #: modules/devices/storage.c:806 #, c-format msgid "" "[Speeds]\n" "%s" msgstr "" #: modules/devices/usb.c:137 modules/devices/usb.c:178 msgid "Sub-class" msgstr "" #: modules/devices/usb.c:138 modules/devices/usb.c:179 modules/network.c:348 msgid "Protocol" msgstr "协议" #: modules/devices/usb.c:146 modules/network/net.c:474 msgid "Mb/s" msgstr "Mb/s" #: modules/devices/usb.c:174 msgid "Max Current" msgstr "" #: modules/devices/usb.c:174 msgid "mA" msgstr "mA" #: modules/devices/usb.c:175 msgid "USB Version" msgstr "USB 版本" #: modules/devices/usb.c:180 msgid "Device Version" msgstr "设备版本" #: modules/devices/usb.c:222 msgid "No USB devices found." msgstr "没找到 USB 设备" #: modules/devices/x86/processor.c:648 msgid "Model Name" msgstr "型号名称" #: modules/devices/x86/processor.c:649 msgid "Family, model, stepping" msgstr "" #: modules/devices/x86/processor.c:655 msgid "Microcode Version" msgstr "" #: modules/devices/x86/processor.c:656 msgid "Configuration" msgstr "配置" #: modules/devices/x86/processor.c:657 msgid "Cache Size" msgstr "缓存大小" #: modules/devices/x86/processor.c:657 msgid "kb" msgstr "kb" #: modules/devices/x86/processor.c:665 msgid "Bug Workarounds" msgstr "" #: modules/devices/x86/processor.c:692 msgid "Socket Information" msgstr "" #: modules/devices/x86/processor.c:695 msgid "(Not available; Perhaps try running hardinfo2 as root.)" msgstr "" #: modules/devices/x86/processor.c:713 msgid "CPU Socket" msgstr "" #: modules/devices/x86/processor.c:717 msgid "External Clock" msgstr "" #: modules/devices/x86/processor.c:718 msgid "Max Frequency" msgstr "" #: modules/devices/x86/processor.c:749 msgid "Package Information" msgstr "" #: modules/devices/x86/processor.c:811 msgid "Socket:Core" msgstr "" #. !/flag:fpu #: modules/devices/x86/x86_data.c:48 msgctxt "x86-flag" msgid "Onboard FPU (floating point support)" msgstr "" #. !/flag:vme #: modules/devices/x86/x86_data.c:49 msgctxt "x86-flag" msgid "Virtual 8086 mode enhancements" msgstr "" #. !/flag:de #: modules/devices/x86/x86_data.c:50 msgctxt "x86-flag" msgid "Debugging Extensions (CR4.DE)" msgstr "" #. !/flag:pse #: modules/devices/x86/x86_data.c:51 msgctxt "x86-flag" msgid "Page Size Extensions (4MB memory pages)" msgstr "" #. !/flag:tsc #: modules/devices/x86/x86_data.c:52 msgctxt "x86-flag" msgid "Time Stamp Counter (RDTSC)" msgstr "" #. !/flag:msr #: modules/devices/x86/x86_data.c:53 msgctxt "x86-flag" msgid "Model-Specific Registers (RDMSR, WRMSR)" msgstr "" #. !/flag:pae #: modules/devices/x86/x86_data.c:54 msgctxt "x86-flag" msgid "Physical Address Extensions (support for more than 4GB of RAM)" msgstr "" #. !/flag:mce #: modules/devices/x86/x86_data.c:55 msgctxt "x86-flag" msgid "Machine Check Exception" msgstr "" #. !/flag:cx8 #: modules/devices/x86/x86_data.c:56 msgctxt "x86-flag" msgid "CMPXCHG8 instruction (64-bit compare-and-swap)" msgstr "" #. !/flag:apic #: modules/devices/x86/x86_data.c:57 msgctxt "x86-flag" msgid "Onboard APIC" msgstr "" #. !/flag:sep #: modules/devices/x86/x86_data.c:58 msgctxt "x86-flag" msgid "SYSENTER/SYSEXIT" msgstr "" #. !/flag:mtrr #: modules/devices/x86/x86_data.c:59 msgctxt "x86-flag" msgid "Memory Type Range Registers" msgstr "" #. !/flag:pge #: modules/devices/x86/x86_data.c:60 msgctxt "x86-flag" msgid "Page Global Enable (global bit in PDEs and PTEs)" msgstr "" #. !/flag:mca #: modules/devices/x86/x86_data.c:61 msgctxt "x86-flag" msgid "Machine Check Architecture" msgstr "" #. !/flag:cmov #: modules/devices/x86/x86_data.c:62 msgctxt "x86-flag" msgid "CMOV instructions (conditional move) (also FCMOV)" msgstr "" #. !/flag:pat #: modules/devices/x86/x86_data.c:63 msgctxt "x86-flag" msgid "Page Attribute Table" msgstr "" #. !/flag:pse36 #: modules/devices/x86/x86_data.c:64 msgctxt "x86-flag" msgid "36-bit PSEs (huge pages)" msgstr "" #. !/flag:pn #: modules/devices/x86/x86_data.c:65 msgctxt "x86-flag" msgid "Processor serial number" msgstr "" #. !/flag:clflush #: modules/devices/x86/x86_data.c:66 msgctxt "x86-flag" msgid "Cache Line Flush instruction" msgstr "" #. !/flag:dts #: modules/devices/x86/x86_data.c:67 msgctxt "x86-flag" msgid "" "Debug Store (buffer for debugging and profiling instructions), or " "alternately: digital thermal sensor" msgstr "" #. !/flag:acpi #: modules/devices/x86/x86_data.c:68 msgctxt "x86-flag" msgid "ACPI via MSR (temperature monitoring and clock speed modulation)" msgstr "" #. !/flag:mmx #: modules/devices/x86/x86_data.c:69 msgctxt "x86-flag" msgid "Multimedia Extensions" msgstr "" #. !/flag:fxsr #: modules/devices/x86/x86_data.c:70 msgctxt "x86-flag" msgid "FXSAVE/FXRSTOR, CR4.OSFXSR" msgstr "" #. !/flag:sse #: modules/devices/x86/x86_data.c:71 msgctxt "x86-flag" msgid "Intel SSE vector instructions" msgstr "" #. !/flag:sse2 #: modules/devices/x86/x86_data.c:72 msgctxt "x86-flag" msgid "SSE2" msgstr "" #. !/flag:ss #: modules/devices/x86/x86_data.c:73 msgctxt "x86-flag" msgid "CPU self snoop" msgstr "" #. !/flag:ht #: modules/devices/x86/x86_data.c:74 msgctxt "x86-flag" msgid "Hyper-Threading" msgstr "" #. !/flag:tm #: modules/devices/x86/x86_data.c:75 msgctxt "x86-flag" msgid "Automatic clock control (Thermal Monitor)" msgstr "" #. !/flag:ia64 #: modules/devices/x86/x86_data.c:76 msgctxt "x86-flag" msgid "" "Intel Itanium Architecture 64-bit (not to be confused with Intel's 64-bit " "x86 architecture with flag x86-64 or \"AMD64\" bit indicated by flag lm)" msgstr "" #. !/flag:pbe #: modules/devices/x86/x86_data.c:77 msgctxt "x86-flag" msgid "Pending Break Enable (PBE# pin) wakeup support" msgstr "" #. !/flag:syscall #: modules/devices/x86/x86_data.c:80 msgctxt "x86-flag" msgid "SYSCALL (Fast System Call) and SYSRET (Return From Fast System Call)" msgstr "" #. !/flag:mp #: modules/devices/x86/x86_data.c:81 msgctxt "x86-flag" msgid "Multiprocessing Capable." msgstr "" #. !/flag:nx #: modules/devices/x86/x86_data.c:82 msgctxt "x86-flag" msgid "Execute Disable" msgstr "" #. !/flag:mmxext #: modules/devices/x86/x86_data.c:83 msgctxt "x86-flag" msgid "AMD MMX extensions" msgstr "" #. !/flag:fxsr_opt #: modules/devices/x86/x86_data.c:84 msgctxt "x86-flag" msgid "FXSAVE/FXRSTOR optimizations" msgstr "" #. !/flag:pdpe1gb #: modules/devices/x86/x86_data.c:85 msgctxt "x86-flag" msgid "One GB pages (allows hugepagesz=1G)" msgstr "" #. !/flag:rdtscp #: modules/devices/x86/x86_data.c:86 msgctxt "x86-flag" msgid "Read Time-Stamp Counter and Processor ID" msgstr "" #. !/flag:lm #: modules/devices/x86/x86_data.c:87 msgctxt "x86-flag" msgid "Long Mode (x86-64: amd64, also known as Intel 64, i.e. 64-bit capable)" msgstr "" #. !/flag:3dnow #: modules/devices/x86/x86_data.c:88 msgctxt "x86-flag" msgid "3DNow! (AMD vector instructions, competing with Intel's SSE1)" msgstr "" #. !/flag:3dnowext #: modules/devices/x86/x86_data.c:89 msgctxt "x86-flag" msgid "AMD 3DNow! extensions" msgstr "" #. !/flag:recovery #: modules/devices/x86/x86_data.c:91 msgctxt "x86-flag" msgid "CPU in recovery mode" msgstr "" #. !/flag:longrun #: modules/devices/x86/x86_data.c:92 msgctxt "x86-flag" msgid "Longrun power control" msgstr "" #. !/flag:lrti #: modules/devices/x86/x86_data.c:93 msgctxt "x86-flag" msgid "LongRun table interface" msgstr "" #. !/flag:cxmmx #: modules/devices/x86/x86_data.c:95 msgctxt "x86-flag" msgid "Cyrix MMX extensions" msgstr "" #. !/flag:k6_mtrr #: modules/devices/x86/x86_data.c:96 msgctxt "x86-flag" msgid "AMD K6 nonstandard MTRRs" msgstr "" #. !/flag:cyrix_arr #: modules/devices/x86/x86_data.c:97 msgctxt "x86-flag" msgid "Cyrix ARRs (= MTRRs)" msgstr "" #. !/flag:centaur_mcr #: modules/devices/x86/x86_data.c:98 msgctxt "x86-flag" msgid "Centaur MCRs (= MTRRs)" msgstr "" #. !/flag:constant_tsc #: modules/devices/x86/x86_data.c:99 msgctxt "x86-flag" msgid "TSC ticks at a constant rate" msgstr "" #. !/flag:up #: modules/devices/x86/x86_data.c:100 msgctxt "x86-flag" msgid "SMP kernel running on UP" msgstr "" #. !/flag:art #: modules/devices/x86/x86_data.c:101 msgctxt "x86-flag" msgid "Always-Running Timer" msgstr "" #. !/flag:arch_perfmon #: modules/devices/x86/x86_data.c:102 msgctxt "x86-flag" msgid "Intel Architectural PerfMon" msgstr "" #. !/flag:pebs #: modules/devices/x86/x86_data.c:103 msgctxt "x86-flag" msgid "Precise-Event Based Sampling" msgstr "" #. !/flag:bts #: modules/devices/x86/x86_data.c:104 msgctxt "x86-flag" msgid "Branch Trace Store" msgstr "" #. !/flag:rep_good #: modules/devices/x86/x86_data.c:105 msgctxt "x86-flag" msgid "rep microcode works well" msgstr "" #. !/flag:acc_power #: modules/devices/x86/x86_data.c:106 msgctxt "x86-flag" msgid "AMD accumulated power mechanism" msgstr "" #. !/flag:nopl #: modules/devices/x86/x86_data.c:107 msgctxt "x86-flag" msgid "The NOPL (0F 1F) instructions" msgstr "" #. !/flag:xtopology #: modules/devices/x86/x86_data.c:108 msgctxt "x86-flag" msgid "cpu topology enum extensions" msgstr "" #. !/flag:tsc_reliable #: modules/devices/x86/x86_data.c:109 msgctxt "x86-flag" msgid "TSC is known to be reliable" msgstr "" #. !/flag:nonstop_tsc #: modules/devices/x86/x86_data.c:110 msgctxt "x86-flag" msgid "TSC does not stop in C states" msgstr "" #. !/flag:extd_apicid #: modules/devices/x86/x86_data.c:111 msgctxt "x86-flag" msgid "has extended APICID (8 bits)" msgstr "" #. !/flag:amd_dcm #: modules/devices/x86/x86_data.c:112 msgctxt "x86-flag" msgid "multi-node processor" msgstr "" #. !/flag:aperfmperf #: modules/devices/x86/x86_data.c:113 msgctxt "x86-flag" msgid "APERFMPERF" msgstr "" #. !/flag:eagerfpu #: modules/devices/x86/x86_data.c:114 msgctxt "x86-flag" msgid "Non lazy FPU restore" msgstr "" #. !/flag:nonstop_tsc_s3 #: modules/devices/x86/x86_data.c:115 msgctxt "x86-flag" msgid "TSC doesn't stop in S3 state" msgstr "" #. !/flag:mce_recovery #: modules/devices/x86/x86_data.c:116 msgctxt "x86-flag" msgid "CPU has recoverable machine checks" msgstr "" #. !/flag:pni #: modules/devices/x86/x86_data.c:119 msgctxt "x86-flag" msgid "SSE-3 (\"Prescott New Instructions\")" msgstr "" #. !/flag:pclmulqdq #: modules/devices/x86/x86_data.c:120 msgctxt "x86-flag" msgid "" "Perform a Carry-Less Multiplication of Quadword instruction - accelerator " "for GCM)" msgstr "" #. !/flag:dtes64 #: modules/devices/x86/x86_data.c:121 msgctxt "x86-flag" msgid "64-bit Debug Store" msgstr "" #. !/flag:monitor #: modules/devices/x86/x86_data.c:122 msgctxt "x86-flag" msgid "Monitor/Mwait support (Intel SSE3 supplements)" msgstr "" #. !/flag:ds_cpl #: modules/devices/x86/x86_data.c:123 msgctxt "x86-flag" msgid "CPL Qual. Debug Store" msgstr "" #. !/flag:vmx #: modules/devices/x86/x86_data.c:124 msgctxt "x86-flag" msgid "Hardware virtualization, Intel VMX" msgstr "" #. !/flag:smx #: modules/devices/x86/x86_data.c:125 msgctxt "x86-flag" msgid "Safer mode TXT (TPM support)" msgstr "" #. !/flag:est #: modules/devices/x86/x86_data.c:126 msgctxt "x86-flag" msgid "Enhanced SpeedStep" msgstr "" #. !/flag:tm2 #: modules/devices/x86/x86_data.c:127 msgctxt "x86-flag" msgid "Thermal Monitor 2" msgstr "" #. !/flag:ssse3 #: modules/devices/x86/x86_data.c:128 msgctxt "x86-flag" msgid "Supplemental SSE-3" msgstr "" #. !/flag:cid #: modules/devices/x86/x86_data.c:129 msgctxt "x86-flag" msgid "Context ID" msgstr "" #. !/flag:sdbg #: modules/devices/x86/x86_data.c:130 msgctxt "x86-flag" msgid "silicon debug" msgstr "" #. !/flag:fma #: modules/devices/x86/x86_data.c:131 msgctxt "x86-flag" msgid "Fused multiply-add" msgstr "" #. !/flag:cx16 #: modules/devices/x86/x86_data.c:132 msgctxt "x86-flag" msgid "CMPXCHG16B" msgstr "" #. !/flag:xtpr #: modules/devices/x86/x86_data.c:133 msgctxt "x86-flag" msgid "Send Task Priority Messages" msgstr "" #. !/flag:pdcm #: modules/devices/x86/x86_data.c:134 msgctxt "x86-flag" msgid "Performance Capabilities" msgstr "" #. !/flag:pcid #: modules/devices/x86/x86_data.c:135 msgctxt "x86-flag" msgid "Process Context Identifiers" msgstr "" #. !/flag:dca #: modules/devices/x86/x86_data.c:136 msgctxt "x86-flag" msgid "Direct Cache Access" msgstr "" #. !/flag:sse4_1 #: modules/devices/x86/x86_data.c:137 msgctxt "x86-flag" msgid "SSE-4.1" msgstr "" #. !/flag:sse4_2 #: modules/devices/x86/x86_data.c:138 msgctxt "x86-flag" msgid "SSE-4.2" msgstr "" #. !/flag:x2apic #: modules/devices/x86/x86_data.c:139 msgctxt "x86-flag" msgid "x2APIC" msgstr "" #. !/flag:movbe #: modules/devices/x86/x86_data.c:140 msgctxt "x86-flag" msgid "Move Data After Swapping Bytes instruction" msgstr "" #. !/flag:popcnt #: modules/devices/x86/x86_data.c:141 msgctxt "x86-flag" msgid "" "Return the Count of Number of Bits Set to 1 instruction (Hamming weight, i." "e. bit count)" msgstr "" #: modules/devices/x86/x86_data.c:142 msgctxt "x86-flag" msgid "Tsc deadline timer" msgstr "" #. !/flag:aes/aes-ni #: modules/devices/x86/x86_data.c:143 msgctxt "x86-flag" msgid "Advanced Encryption Standard (New Instructions)" msgstr "" #. !/flag:xsave #: modules/devices/x86/x86_data.c:144 msgctxt "x86-flag" msgid "Save Processor Extended States: also provides XGETBY,XRSTOR,XSETBY" msgstr "" #. !/flag:avx #: modules/devices/x86/x86_data.c:145 msgctxt "x86-flag" msgid "Advanced Vector Extensions" msgstr "" #. !/flag:f16c #: modules/devices/x86/x86_data.c:146 msgctxt "x86-flag" msgid "16-bit fp conversions (CVT16)" msgstr "" #. !/flag:rdrand #: modules/devices/x86/x86_data.c:147 msgctxt "x86-flag" msgid "Read Random Number from hardware random number generator instruction" msgstr "" #. !/flag:hypervisor #: modules/devices/x86/x86_data.c:148 msgctxt "x86-flag" msgid "Running on a hypervisor" msgstr "" #. !/flag:rng #: modules/devices/x86/x86_data.c:150 msgctxt "x86-flag" msgid "Random Number Generator present (xstore)" msgstr "" #. !/flag:rng_en #: modules/devices/x86/x86_data.c:151 msgctxt "x86-flag" msgid "Random Number Generator enabled" msgstr "" #. !/flag:ace #: modules/devices/x86/x86_data.c:152 msgctxt "x86-flag" msgid "on-CPU crypto (xcrypt)" msgstr "" #. !/flag:ace_en #: modules/devices/x86/x86_data.c:153 msgctxt "x86-flag" msgid "on-CPU crypto enabled" msgstr "" #. !/flag:ace2 #: modules/devices/x86/x86_data.c:154 msgctxt "x86-flag" msgid "Advanced Cryptography Engine v2" msgstr "" #. !/flag:ace2_en #: modules/devices/x86/x86_data.c:155 msgctxt "x86-flag" msgid "ACE v2 enabled" msgstr "" #. !/flag:phe #: modules/devices/x86/x86_data.c:156 msgctxt "x86-flag" msgid "PadLock Hash Engine" msgstr "" #. !/flag:phe_en #: modules/devices/x86/x86_data.c:157 msgctxt "x86-flag" msgid "PHE enabled" msgstr "" #. !/flag:pmm #: modules/devices/x86/x86_data.c:158 msgctxt "x86-flag" msgid "PadLock Montgomery Multiplier" msgstr "" #. !/flag:pmm_en #: modules/devices/x86/x86_data.c:159 msgctxt "x86-flag" msgid "PMM enabled" msgstr "" #. !/flag:lahf_lm #: modules/devices/x86/x86_data.c:161 msgctxt "x86-flag" msgid "Load AH from Flags (LAHF) and Store AH into Flags (SAHF) in long mode" msgstr "" #. !/flag:cmp_legacy #: modules/devices/x86/x86_data.c:162 msgctxt "x86-flag" msgid "If yes HyperThreading not valid" msgstr "" #. !/flag:svm #: modules/devices/x86/x86_data.c:163 msgctxt "x86-flag" msgid "\"Secure virtual machine\": AMD-V" msgstr "" #. !/flag:extapic #: modules/devices/x86/x86_data.c:164 msgctxt "x86-flag" msgid "Extended APIC space" msgstr "" #. !/flag:cr8_legacy #: modules/devices/x86/x86_data.c:165 msgctxt "x86-flag" msgid "CR8 in 32-bit mode" msgstr "" #. !/flag:abm #: modules/devices/x86/x86_data.c:166 msgctxt "x86-flag" msgid "Advanced Bit Manipulation" msgstr "" #. !/flag:sse4a #: modules/devices/x86/x86_data.c:167 msgctxt "x86-flag" msgid "SSE-4A" msgstr "" #. !/flag:misalignsse #: modules/devices/x86/x86_data.c:168 msgctxt "x86-flag" msgid "" "indicates if a general-protection exception (#GP) is generated when some " "legacy SSE instructions operate on unaligned data. Also depends on CR0 and " "Alignment Checking bit" msgstr "" #. !/flag:3dnowprefetch #: modules/devices/x86/x86_data.c:169 msgctxt "x86-flag" msgid "3DNow prefetch instructions" msgstr "" #. !/flag:osvw #: modules/devices/x86/x86_data.c:170 msgctxt "x86-flag" msgid "" "indicates OS Visible Workaround, which allows the OS to work around " "processor errata." msgstr "" #. !/flag:ibs #: modules/devices/x86/x86_data.c:171 msgctxt "x86-flag" msgid "Instruction Based Sampling" msgstr "" #. !/flag:xop #: modules/devices/x86/x86_data.c:172 msgctxt "x86-flag" msgid "extended AVX instructions" msgstr "" #. !/flag:skinit #: modules/devices/x86/x86_data.c:173 msgctxt "x86-flag" msgid "SKINIT/STGI instructions" msgstr "" #. !/flag:wdt #: modules/devices/x86/x86_data.c:174 msgctxt "x86-flag" msgid "Watchdog timer" msgstr "" #. !/flag:lwp #: modules/devices/x86/x86_data.c:175 msgctxt "x86-flag" msgid "Light Weight Profiling" msgstr "" #. !/flag:fma4 #: modules/devices/x86/x86_data.c:176 msgctxt "x86-flag" msgid "4 operands MAC instructions" msgstr "" #. !/flag:tce #: modules/devices/x86/x86_data.c:177 msgctxt "x86-flag" msgid "translation cache extension" msgstr "" #. !/flag:nodeid_msr #: modules/devices/x86/x86_data.c:178 msgctxt "x86-flag" msgid "NodeId MSR" msgstr "" #. !/flag:tbm #: modules/devices/x86/x86_data.c:179 msgctxt "x86-flag" msgid "Trailing Bit Manipulation" msgstr "" #. !/flag:topoext #: modules/devices/x86/x86_data.c:180 msgctxt "x86-flag" msgid "Topology Extensions CPUID leafs" msgstr "" #. !/flag:perfctr_core #: modules/devices/x86/x86_data.c:181 msgctxt "x86-flag" msgid "Core Performance Counter Extensions" msgstr "" #. !/flag:perfctr_nb #: modules/devices/x86/x86_data.c:182 msgctxt "x86-flag" msgid "NB Performance Counter Extensions" msgstr "" #. !/flag:bpext #: modules/devices/x86/x86_data.c:183 msgctxt "x86-flag" msgid "data breakpoint extension" msgstr "" #. !/flag:ptsc #: modules/devices/x86/x86_data.c:184 msgctxt "x86-flag" msgid "performance time-stamp counter" msgstr "" #. !/flag:perfctr_l2 #: modules/devices/x86/x86_data.c:185 msgctxt "x86-flag" msgid "L2 Performance Counter Extensions" msgstr "" #. !/flag:mwaitx #: modules/devices/x86/x86_data.c:186 msgctxt "x86-flag" msgid "MWAIT extension (MONITORX/MWAITX)" msgstr "" #. !/flag:cpb #: modules/devices/x86/x86_data.c:188 msgctxt "x86-flag" msgid "AMD Core Performance Boost" msgstr "" #. !/flag:epb #: modules/devices/x86/x86_data.c:189 msgctxt "x86-flag" msgid "IA32_ENERGY_PERF_BIAS support" msgstr "" #. !/flag:hw_pstate #: modules/devices/x86/x86_data.c:190 msgctxt "x86-flag" msgid "AMD HW-PState" msgstr "" #. !/flag:proc_feedback #: modules/devices/x86/x86_data.c:191 msgctxt "x86-flag" msgid "AMD ProcFeedbackInterface" msgstr "" #. !/flag:intel_pt #: modules/devices/x86/x86_data.c:192 msgctxt "x86-flag" msgid "Intel Processor Tracing" msgstr "" #. !/flag:tpr_shadow #: modules/devices/x86/x86_data.c:194 msgctxt "x86-flag" msgid "Intel TPR Shadow" msgstr "" #. !/flag:vnmi #: modules/devices/x86/x86_data.c:195 msgctxt "x86-flag" msgid "Intel Virtual NMI" msgstr "" #. !/flag:flexpriority #: modules/devices/x86/x86_data.c:196 msgctxt "x86-flag" msgid "Intel FlexPriority" msgstr "" #. !/flag:ept #: modules/devices/x86/x86_data.c:197 msgctxt "x86-flag" msgid "Intel Extended Page Table" msgstr "" #. !/flag:vpid #: modules/devices/x86/x86_data.c:198 msgctxt "x86-flag" msgid "Intel Virtual Processor ID" msgstr "" #. !/flag:vmmcall #: modules/devices/x86/x86_data.c:199 msgctxt "x86-flag" msgid "prefer VMMCALL to VMCALL" msgstr "" #. !/flag:fsgsbase #: modules/devices/x86/x86_data.c:201 msgctxt "x86-flag" msgid "{RD/WR}{FS/GS}BASE instructions" msgstr "" #. !/flag:tsc_adjust #: modules/devices/x86/x86_data.c:202 msgctxt "x86-flag" msgid "TSC adjustment MSR" msgstr "" #. !/flag:bmi1 #: modules/devices/x86/x86_data.c:203 msgctxt "x86-flag" msgid "1st group bit manipulation extensions" msgstr "" #. !/flag:hle #: modules/devices/x86/x86_data.c:204 msgctxt "x86-flag" msgid "Hardware Lock Elision" msgstr "" #. !/flag:avx2 #: modules/devices/x86/x86_data.c:205 msgctxt "x86-flag" msgid "AVX2 instructions" msgstr "" #. !/flag:smep #: modules/devices/x86/x86_data.c:206 msgctxt "x86-flag" msgid "Supervisor Mode Execution Protection" msgstr "" #. !/flag:bmi2 #: modules/devices/x86/x86_data.c:207 msgctxt "x86-flag" msgid "2nd group bit manipulation extensions" msgstr "" #. !/flag:erms #: modules/devices/x86/x86_data.c:208 msgctxt "x86-flag" msgid "Enhanced REP MOVSB/STOSB" msgstr "" #. !/flag:invpcid #: modules/devices/x86/x86_data.c:209 msgctxt "x86-flag" msgid "Invalidate Processor Context ID" msgstr "" #. !/flag:rtm #: modules/devices/x86/x86_data.c:210 msgctxt "x86-flag" msgid "Restricted Transactional Memory" msgstr "" #. !/flag:cqm #: modules/devices/x86/x86_data.c:211 msgctxt "x86-flag" msgid "Cache QoS Monitoring" msgstr "" #. !/flag:mpx #: modules/devices/x86/x86_data.c:212 msgctxt "x86-flag" msgid "Memory Protection Extension" msgstr "" #. !/flag:avx512f #: modules/devices/x86/x86_data.c:213 msgctxt "x86-flag" msgid "AVX-512 foundation" msgstr "" #. !/flag:avx512dq #: modules/devices/x86/x86_data.c:214 msgctxt "x86-flag" msgid "AVX-512 Double/Quad instructions" msgstr "" #. !/flag:rdseed #: modules/devices/x86/x86_data.c:215 msgctxt "x86-flag" msgid "The RDSEED instruction" msgstr "" #. !/flag:adx #: modules/devices/x86/x86_data.c:216 msgctxt "x86-flag" msgid "The ADCX and ADOX instructions" msgstr "" #. !/flag:smap #: modules/devices/x86/x86_data.c:217 msgctxt "x86-flag" msgid "Supervisor Mode Access Prevention" msgstr "" #. !/flag:clflushopt #: modules/devices/x86/x86_data.c:218 msgctxt "x86-flag" msgid "CLFLUSHOPT instruction" msgstr "" #. !/flag:clwb #: modules/devices/x86/x86_data.c:219 msgctxt "x86-flag" msgid "CLWB instruction" msgstr "" #. !/flag:avx512pf #: modules/devices/x86/x86_data.c:220 msgctxt "x86-flag" msgid "AVX-512 Prefetch" msgstr "" #. !/flag:avx512er #: modules/devices/x86/x86_data.c:221 msgctxt "x86-flag" msgid "AVX-512 Exponential and Reciprocal" msgstr "" #. !/flag:avx512cd #: modules/devices/x86/x86_data.c:222 msgctxt "x86-flag" msgid "AVX-512 Conflict Detection" msgstr "" #. !/flag:sha_ni #: modules/devices/x86/x86_data.c:223 msgctxt "x86-flag" msgid "SHA1/SHA256 Instruction Extensions" msgstr "" #. !/flag:avx512bw #: modules/devices/x86/x86_data.c:224 msgctxt "x86-flag" msgid "AVX-512 Byte/Word instructions" msgstr "" #. !/flag:avx512vl #: modules/devices/x86/x86_data.c:225 msgctxt "x86-flag" msgid "AVX-512 128/256 Vector Length extensions" msgstr "" #. !/flag:xsaveopt #: modules/devices/x86/x86_data.c:227 msgctxt "x86-flag" msgid "Optimized XSAVE" msgstr "" #. !/flag:xsavec #: modules/devices/x86/x86_data.c:228 msgctxt "x86-flag" msgid "XSAVEC" msgstr "" #. !/flag:xgetbv1 #: modules/devices/x86/x86_data.c:229 msgctxt "x86-flag" msgid "XGETBV with ECX = 1" msgstr "" #. !/flag:xsaves #: modules/devices/x86/x86_data.c:230 msgctxt "x86-flag" msgid "XSAVES/XRSTORS" msgstr "" #. !/flag:cqm_llc #: modules/devices/x86/x86_data.c:232 msgctxt "x86-flag" msgid "LLC QoS" msgstr "" #. !/flag:cqm_occup_llc #: modules/devices/x86/x86_data.c:234 msgctxt "x86-flag" msgid "LLC occupancy monitoring" msgstr "" #. !/flag:cqm_mbm_total #: modules/devices/x86/x86_data.c:235 msgctxt "x86-flag" msgid "LLC total MBM monitoring" msgstr "" #. !/flag:cqm_mbm_local #: modules/devices/x86/x86_data.c:236 msgctxt "x86-flag" msgid "LLC local MBM monitoring" msgstr "" #. !/flag:clzero #: modules/devices/x86/x86_data.c:238 msgctxt "x86-flag" msgid "CLZERO instruction" msgstr "" #. !/flag:irperf #: modules/devices/x86/x86_data.c:239 msgctxt "x86-flag" msgid "instructions retired performance counter" msgstr "" #. !/flag:dtherm #: modules/devices/x86/x86_data.c:241 msgctxt "x86-flag" msgid "digital thermal sensor" msgstr "" #. !/flag:ida #: modules/devices/x86/x86_data.c:242 msgctxt "x86-flag" msgid "Intel Dynamic Acceleration" msgstr "" #. !/flag:arat #: modules/devices/x86/x86_data.c:243 msgctxt "x86-flag" msgid "Always Running APIC Timer" msgstr "" #. !/flag:pln #: modules/devices/x86/x86_data.c:244 msgctxt "x86-flag" msgid "Intel Power Limit Notification" msgstr "" #. !/flag:pts #: modules/devices/x86/x86_data.c:245 msgctxt "x86-flag" msgid "Intel Package Thermal Status" msgstr "" #. !/flag:hwp #: modules/devices/x86/x86_data.c:246 msgctxt "x86-flag" msgid "Intel Hardware P-states" msgstr "" #. !/flag:hwp_notify #: modules/devices/x86/x86_data.c:247 msgctxt "x86-flag" msgid "HWP notification" msgstr "" #. !/flag:hwp_act_window #: modules/devices/x86/x86_data.c:248 msgctxt "x86-flag" msgid "HWP Activity Window" msgstr "" #. !/flag:hwp_epp #: modules/devices/x86/x86_data.c:249 msgctxt "x86-flag" msgid "HWP Energy Performance Preference" msgstr "" #. !/flag:hwp_pkg_req #: modules/devices/x86/x86_data.c:250 msgctxt "x86-flag" msgid "HWP package-level request" msgstr "" #. !/flag:npt #: modules/devices/x86/x86_data.c:252 msgctxt "x86-flag" msgid "AMD Nested Page Table support" msgstr "" #. !/flag:lbrv #: modules/devices/x86/x86_data.c:253 msgctxt "x86-flag" msgid "AMD LBR Virtualization support" msgstr "" #. !/flag:svm_lock #: modules/devices/x86/x86_data.c:254 msgctxt "x86-flag" msgid "AMD SVM locking MSR" msgstr "" #. !/flag:nrip_save #: modules/devices/x86/x86_data.c:255 msgctxt "x86-flag" msgid "AMD SVM next_rip save" msgstr "" #. !/flag:tsc_scale #: modules/devices/x86/x86_data.c:256 msgctxt "x86-flag" msgid "AMD TSC scaling support" msgstr "" #. !/flag:vmcb_clean #: modules/devices/x86/x86_data.c:257 msgctxt "x86-flag" msgid "AMD VMCB clean bits support" msgstr "" #. !/flag:flushbyasid #: modules/devices/x86/x86_data.c:258 msgctxt "x86-flag" msgid "AMD flush-by-ASID support" msgstr "" #. !/flag:decodeassists #: modules/devices/x86/x86_data.c:259 msgctxt "x86-flag" msgid "AMD Decode Assists support" msgstr "" #. !/flag:pausefilter #: modules/devices/x86/x86_data.c:260 msgctxt "x86-flag" msgid "AMD filtered pause intercept" msgstr "" #. !/flag:pfthreshold #: modules/devices/x86/x86_data.c:261 msgctxt "x86-flag" msgid "AMD pause filter threshold" msgstr "" #. !/flag:avic #: modules/devices/x86/x86_data.c:262 msgctxt "x86-flag" msgid "Virtual Interrupt Controller" msgstr "" #. !/flag:pku #: modules/devices/x86/x86_data.c:264 msgctxt "x86-flag" msgid "Protection Keys for Userspace" msgstr "" #. !/flag:ospke #: modules/devices/x86/x86_data.c:265 msgctxt "x86-flag" msgid "OS Protection Keys Enable" msgstr "" #. !/flag:overflow_recov #: modules/devices/x86/x86_data.c:267 msgctxt "x86-flag" msgid "MCA overflow recovery support" msgstr "" #. !/flag:succor #: modules/devices/x86/x86_data.c:268 msgctxt "x86-flag" msgid "uncorrectable error containment and recovery" msgstr "" #. !/flag:smca #: modules/devices/x86/x86_data.c:269 msgctxt "x86-flag" msgid "Scalable MCA" msgstr "" #. !/bug:f00f #: modules/devices/x86/x86_data.c:272 msgctxt "x86-flag" msgid "Intel F00F bug" msgstr "" #. !/bug:fdiv #: modules/devices/x86/x86_data.c:273 msgctxt "x86-flag" msgid "FPU FDIV" msgstr "" #. !/bug:coma #: modules/devices/x86/x86_data.c:274 msgctxt "x86-flag" msgid "Cyrix 6x86 coma" msgstr "" #. !/bug:tlb_mmatch #: modules/devices/x86/x86_data.c:275 msgctxt "x86-flag" msgid "AMD Erratum 383" msgstr "" #. !/bug:apic_c1e #. !/bug:amd_e400 #: modules/devices/x86/x86_data.c:276 modules/devices/x86/x86_data.c:285 msgctxt "x86-flag" msgid "AMD Erratum 400" msgstr "" #. !/bug:11ap #: modules/devices/x86/x86_data.c:277 msgctxt "x86-flag" msgid "Bad local APIC aka 11AP" msgstr "" #. !/bug:fxsave_leak #: modules/devices/x86/x86_data.c:278 msgctxt "x86-flag" msgid "FXSAVE leaks FOP/FIP/FOP" msgstr "" #. !/bug:clflush_monitor #: modules/devices/x86/x86_data.c:279 msgctxt "x86-flag" msgid "AAI65, CLFLUSH required before MONITOR" msgstr "" #. !/bug:sysret_ss_attrs #: modules/devices/x86/x86_data.c:280 msgctxt "x86-flag" msgid "SYSRET doesn't fix up SS attrs" msgstr "" #. !/bug:espfix #: modules/devices/x86/x86_data.c:281 msgctxt "x86-flag" msgid "IRET to 16-bit SS corrupts ESP/RSP high bits" msgstr "" #. !/bug:null_seg #: modules/devices/x86/x86_data.c:282 msgctxt "x86-flag" msgid "Nulling a selector preserves the base" msgstr "" #. !/bug:swapgs_fence #: modules/devices/x86/x86_data.c:283 msgctxt "x86-flag" msgid "SWAPGS without input dep on GS" msgstr "" #. !/bug:monitor #: modules/devices/x86/x86_data.c:284 msgctxt "x86-flag" msgid "IPI required to wake up remote CPU" msgstr "" #. !/bug:cpu_insecure & bug:cpu_meltdown #: modules/devices/x86/x86_data.c:286 modules/devices/x86/x86_data.c:287 msgctxt "x86-flag" msgid "" "CPU is affected by meltdown attack and needs kernel page table isolation" msgstr "" #. !/bug:spectre_v1 #: modules/devices/x86/x86_data.c:288 msgctxt "x86-flag" msgid "CPU is affected by Spectre variant 1 attack with conditional branches" msgstr "" #. !/bug:spectre_v2 #: modules/devices/x86/x86_data.c:289 msgctxt "x86-flag" msgid "CPU is affected by Spectre variant 2 attack with indirect branches" msgstr "" #. !/bug:spec_store_bypass #: modules/devices/x86/x86_data.c:290 msgctxt "x86-flag" msgid "CPU is affected by speculative store bypass attack" msgstr "" #. !/bug:l1tf #: modules/devices/x86/x86_data.c:291 msgctxt "x86-flag" msgid "CPU is affected by L1 Terminal Fault" msgstr "" #. !/flag:pm:ts #: modules/devices/x86/x86_data.c:294 msgctxt "x86-flag" msgid "temperature sensor" msgstr "" #. !/flag:pm:fid #: modules/devices/x86/x86_data.c:295 msgctxt "x86-flag" msgid "frequency id control" msgstr "" #. !/flag:pm:vid #: modules/devices/x86/x86_data.c:296 msgctxt "x86-flag" msgid "voltage id control" msgstr "" #. !/flag:pm:ttp #: modules/devices/x86/x86_data.c:297 msgctxt "x86-flag" msgid "thermal trip" msgstr "" #. !/flag:pm:tm #: modules/devices/x86/x86_data.c:298 msgctxt "x86-flag" msgid "hardware thermal control" msgstr "" #. !/flag:pm:stc #: modules/devices/x86/x86_data.c:299 msgctxt "x86-flag" msgid "software thermal control" msgstr "" #. !/flag:pm:100mhzsteps #: modules/devices/x86/x86_data.c:300 msgctxt "x86-flag" msgid "100 MHz multiplier control" msgstr "" #. !/flag:pm:hwpstate #: modules/devices/x86/x86_data.c:301 msgctxt "x86-flag" msgid "hardware P-state control" msgstr "" #. !/flag:pm:cpb #: modules/devices/x86/x86_data.c:302 msgctxt "x86-flag" msgid "core performance boost" msgstr "" #. !/flag:pm:eff_freq_ro #: modules/devices/x86/x86_data.c:303 msgctxt "x86-flag" msgid "Readonly aperf/mperf" msgstr "" #. !/flag:pm:proc_feedback #: modules/devices/x86/x86_data.c:304 msgctxt "x86-flag" msgid "processor feedback interface" msgstr "" #. !/flag:pm:acc_power #: modules/devices/x86/x86_data.c:305 msgctxt "x86-flag" msgid "accumulated power mechanism" msgstr "" #: modules/network.c:61 msgid "Interfaces" msgstr "界面" #: modules/network.c:62 msgid "IP Connections" msgstr "IP 连接" #: modules/network.c:63 msgid "Routing Table" msgstr "" #: modules/network.c:64 modules/network.c:310 msgid "ARP Table" msgstr "" #: modules/network.c:65 msgid "DNS Servers" msgstr "DNS 服务器" #: modules/network.c:66 msgid "Statistics" msgstr "统计信息" #: modules/network.c:67 msgid "Shared Directories" msgstr "共享目录" #: modules/network.c:311 modules/network.c:333 modules/network.c:364 #: modules/network/net.c:495 msgid "IP Address" msgstr "IP 地址" #: modules/network.c:311 msgid "MAC Address" msgstr "MAC 地址" #: modules/network.c:320 msgid "SAMBA" msgstr "" #: modules/network.c:321 msgid "NFS" msgstr "NFS" #: modules/network.c:332 msgid "Name Servers" msgstr "名称服务器" #: modules/network.c:347 msgid "Connections" msgstr "连接" #: modules/network.c:348 msgid "Local Address" msgstr "本地地址" #: modules/network.c:348 msgid "Foreign Address" msgstr "外部地址" #: modules/network.c:348 msgid "State" msgstr "状态" #: modules/network.c:364 msgid "Sent" msgstr "已发送" #: modules/network.c:364 msgid "Received" msgstr "已接收" #: modules/network.c:380 msgid "IP routing table" msgstr "IP 路由表" #: modules/network.c:381 msgid "Destination/Gateway" msgstr "" #: modules/network.c:381 modules/network/net.c:496 msgid "Mask" msgstr "掩码" #: modules/network.c:409 msgid "Network" msgstr "网络" #: modules/network.c:442 msgid "Gathers information about this computer's network connection" msgstr "" #: modules/network/net.c:74 msgctxt "wi-op-mode" msgid "Auto" msgstr "自动" #: modules/network/net.c:75 msgctxt "wi-op-mode" msgid "Ad-Hoc" msgstr "" #: modules/network/net.c:76 msgctxt "wi-op-mode" msgid "Managed" msgstr "" #: modules/network/net.c:77 msgctxt "wi-op-mode" msgid "Master" msgstr "主声道" #: modules/network/net.c:78 msgctxt "wi-op-mode" msgid "Repeater" msgstr "" #: modules/network/net.c:79 msgctxt "wi-op-mode" msgid "Secondary" msgstr "" #: modules/network/net.c:80 msgctxt "wi-op-mode" msgid "(Unknown)" msgstr "" #: modules/network/net.c:268 modules/network/net.c:288 #: modules/network/net.c:296 msgctxt "net-if-type" msgid "Ethernet" msgstr "以太网卡" #: modules/network/net.c:269 msgctxt "net-if-type" msgid "Loopback" msgstr "回环" #: modules/network/net.c:270 msgctxt "net-if-type" msgid "Point-to-Point" msgstr "点对点" #: modules/network/net.c:271 modules/network/net.c:272 #: modules/network/net.c:273 modules/network/net.c:274 #: modules/network/net.c:298 msgctxt "net-if-type" msgid "Wireless" msgstr "无线网卡" #: modules/network/net.c:275 msgctxt "net-if-type" msgid "Virtual Point-to-Point (TUN)" msgstr "" #: modules/network/net.c:276 msgctxt "net-if-type" msgid "Ethernet (TAP)" msgstr "" #: modules/network/net.c:277 msgctxt "net-if-type" msgid "Parallel Line Internet Protocol" msgstr "" #: modules/network/net.c:278 msgctxt "net-if-type" msgid "Infrared" msgstr "红外线" #: modules/network/net.c:279 modules/network/net.c:297 msgctxt "net-if-type" msgid "Serial Line Internet Protocol" msgstr "" #: modules/network/net.c:280 msgctxt "net-if-type" msgid "Integrated Services Digital Network" msgstr "" #: modules/network/net.c:281 msgctxt "net-if-type" msgid "IPv6-over-IPv4 Tunnel" msgstr "" #: modules/network/net.c:282 msgctxt "net-if-type" msgid "VMWare Virtual Network Interface (NAT)" msgstr "" #: modules/network/net.c:283 msgctxt "net-if-type" msgid "VMWare Virtual Network Interface" msgstr "" #: modules/network/net.c:284 msgctxt "net-if-type" msgid "Personal Area Network (PAN)" msgstr "" #: modules/network/net.c:285 msgctxt "net-if-type" msgid "Bluetooth" msgstr "蓝牙" #: modules/network/net.c:286 msgctxt "net-if-type" msgid "Bridge Interface" msgstr "" #: modules/network/net.c:287 msgctxt "net-if-type" msgid "Hamachi Virtual Personal Network" msgstr "" #: modules/network/net.c:289 msgctxt "net-if-type" msgid "Intermediate Functional Block" msgstr "" #: modules/network/net.c:290 msgctxt "net-if-type" msgid "GRE Network Tunnel" msgstr "" #: modules/network/net.c:291 msgctxt "net-if-type" msgid "Mesh Network" msgstr "" #: modules/network/net.c:292 msgctxt "net-if-type" msgid "Wireless Master Interface" msgstr "" #: modules/network/net.c:293 msgctxt "net-if-type" msgid "VirtualBox Virtual Network Interface" msgstr "" #: modules/network/net.c:299 msgctxt "net-if-type" msgid "Wireless (WAN)" msgstr "" #: modules/network/net.c:301 msgctxt "net-if-type" msgid "(Unknown)" msgstr "" #: modules/network/net.c:364 modules/network/net.c:374 msgid "Network Interfaces" msgstr "网络接口" #: modules/network/net.c:364 msgid "None Found" msgstr "未找到" #: modules/network/net.c:431 msgid "Network Adapter Properties" msgstr "" #: modules/network/net.c:432 msgid "Interface Type" msgstr "接口类型" #: modules/network/net.c:433 msgid "Hardware Address (MAC)" msgstr "硬件地址(MAC)" #: modules/network/net.c:437 msgid "MTU" msgstr "MTU" #: modules/network/net.c:439 msgid "Transfer Details" msgstr "" #: modules/network/net.c:440 msgid "Bytes Received" msgstr "已接收字节数" #: modules/network/net.c:441 msgid "Bytes Sent" msgstr "已发送字节数" #: modules/network/net.c:458 modules/network/net.c:480 #: modules/network/net.c:481 msgid "dBm" msgstr "dBm" #: modules/network/net.c:458 msgid "mW" msgstr "mW" #: modules/network/net.c:472 msgid "Wireless Properties" msgstr "无线属性" #: modules/network/net.c:473 msgid "Network Name (SSID)" msgstr "" #: modules/network/net.c:474 msgid "Bit Rate" msgstr "比特率" #: modules/network/net.c:475 msgid "Transmission Power" msgstr "" #: modules/network/net.c:478 msgid "Link Quality" msgstr "" #: modules/network/net.c:479 msgid "Signal / Noise" msgstr "" #: modules/network/net.c:494 msgid "Internet Protocol (IPv4)" msgstr "互联网协议(IPv4)" #: modules/network/net.c:495 modules/network/net.c:496 #: modules/network/net.c:498 msgid "(Not set)" msgstr "(未设定)" #: modules/network/net.c:497 msgid "Broadcast Address" msgstr "广播地址" #: includes/spd-decode.h:28 msgid "RAM" msgstr "内存" #~ msgid "_Open..." #~ msgstr "打开...(_O)" #~ msgid "Perl6 (VM)" #~ msgstr "Perl6 (VM)" #~ msgid "Perl6" #~ msgstr "Perl6" #~ msgid "_Copy to Clipboard" #~ msgstr "复制到剪贴板(_C)" #~ msgid "Copy to clipboard" #~ msgstr "复制到剪贴板" #~ msgid "Total Memory" #~ msgstr "总内存" #~ msgid "Free Memory" #~ msgstr "可用内存" #~ msgid "Cached Swap" #~ msgstr "已缓存的交换分区" #~ msgid "High Memory" #~ msgstr "高内存" #~ msgid "Free High Memory" #~ msgstr "可用高内存" #~ msgid "Low Memory" #~ msgstr "低内存" #~ msgid "Free Low Memory" #~ msgstr "可用低内存" #~ msgid "Virtual Memory" #~ msgstr "虚拟内存" #~ msgid "Free Virtual Memory" #~ msgstr "可用虚拟内存" #~ msgid "RISC-V Processor" #~ msgstr "RISC-V 处理器" #, c-format #~ msgid "" #~ "Modules:\n" #~ "%-20s %-15s %-12s\n" #~ msgstr "" #~ "模块:\n" #~ "%-20s %-15s %-12s\n" #~ msgid "File Name" #~ msgstr "文件名" #~ msgid "lists modules" #~ msgstr "模块列表" #~ msgid "Author:" #~ msgstr "作者:" #~ msgid "Contributors:" #~ msgstr "贡献者:" #~ msgid "Tango Project" #~ msgstr "Tango 项目" #~ msgid "The GNOME Project" #~ msgstr "GNOME 项目" #~ msgid "_Remote" #~ msgstr "远程(_R)" #~ msgid "About _Modules" #~ msgstr "关于模块(_M)" #, c-format #~ msgid "%s - System Information" #~ msgstr "%s - 系统信息" #~ msgid "System Information" #~ msgstr "系统信息" #, c-format #~ msgid "%s (error #%d)" #~ msgstr "%s (错误 #%d)" #~ msgid "Could not parse XML-RPC response" #~ msgstr "无法解析 XML-RPC 响应" #~ msgid "Cleaning up" #~ msgstr "正在清理" #~ msgid "Results in MiB/second. Higher is better." #~ msgstr "结果以 MiB/秒为单位,越大越好。" #~ msgid "Results in seconds. Lower is better." #~ msgstr "结果以秒为单位。越小越好。" #~ msgid "Cancel" #~ msgstr "取消" #~ msgid "Thread" #~ msgstr "线程" #~ msgid "Python" #~ msgstr "Python" #~ msgid "CSharp (Mono, old)" #~ msgstr "CSharp (Mono, old)" #~ msgid "CSharp (Mono)" #~ msgstr "CSharp (Mono)" hardinfo2-hardinfo2-1331e88/shell/000077500000000000000000000000001474767047500166525ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/shell/callbacks.c000066400000000000000000000500051474767047500207350ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2009 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include #include #include #include #include "hardinfo.h" #include "callbacks.h" #include "iconcache.h" #include "shell.h" #include "report.h" #include "syncmanager.h" #include "uri_handler.h" #include "config.h" void cb_sync_manager() { Shell *shell = shell_get_main_shell(); sync_manager_show(shell->window); } #if GLIB_CHECK_VERSION(2,40,0) #else //For compatibility with older glib gboolean g2_key_file_save_to_file (GKeyFile *key_file, const gchar *filename, GError **error) { gchar *contents; gboolean success; gsize length; g_return_val_if_fail (key_file != NULL, FALSE); g_return_val_if_fail (filename != NULL, FALSE); g_return_val_if_fail (error == NULL || *error == NULL, FALSE); contents = g_key_file_to_data (key_file, &length, NULL); g_assert (contents != NULL); success = g_file_set_contents (filename, contents, length, error); g_free (contents); return success; } #endif void cb_theme1() { if(shell_action_get_active("Theme1Action")){ params.theme=1; if(shell_action_get_active("DisableThemeAction")) shell_action_set_active("DisableThemeAction",FALSE); if(shell_action_get_active("Theme2Action")) shell_action_set_active("Theme2Action",FALSE); if(shell_action_get_active("Theme3Action")) shell_action_set_active("Theme3Action",FALSE); if(shell_action_get_active("Theme4Action")) shell_action_set_active("Theme4Action",FALSE); if(shell_action_get_active("Theme5Action")) shell_action_set_active("Theme5Action",FALSE); if(shell_action_get_active("Theme6Action")) shell_action_set_active("Theme6Action",FALSE); } cb_disable_theme(); } void cb_theme2() { if(shell_action_get_active("Theme2Action")){ params.theme=2; if(shell_action_get_active("DisableThemeAction")) shell_action_set_active("DisableThemeAction",FALSE); if(shell_action_get_active("Theme1Action")) shell_action_set_active("Theme1Action",FALSE); if(shell_action_get_active("Theme3Action")) shell_action_set_active("Theme3Action",FALSE); if(shell_action_get_active("Theme4Action")) shell_action_set_active("Theme4Action",FALSE); if(shell_action_get_active("Theme5Action")) shell_action_set_active("Theme5Action",FALSE); if(shell_action_get_active("Theme6Action")) shell_action_set_active("Theme6Action",FALSE); } cb_disable_theme(); } void cb_theme3() { if(shell_action_get_active("Theme3Action")){ params.theme=3; if(shell_action_get_active("DisableThemeAction")) shell_action_set_active("DisableThemeAction",FALSE); if(shell_action_get_active("Theme1Action")) shell_action_set_active("Theme1Action",FALSE); if(shell_action_get_active("Theme2Action")) shell_action_set_active("Theme2Action",FALSE); if(shell_action_get_active("Theme4Action")) shell_action_set_active("Theme4Action",FALSE); if(shell_action_get_active("Theme5Action")) shell_action_set_active("Theme5Action",FALSE); if(shell_action_get_active("Theme6Action")) shell_action_set_active("Theme6Action",FALSE); } cb_disable_theme(); } void cb_theme4() { if(shell_action_get_active("Theme4Action")){ params.theme=4; if(shell_action_get_active("DisableThemeAction")) shell_action_set_active("DisableThemeAction",FALSE); if(shell_action_get_active("Theme1Action")) shell_action_set_active("Theme1Action",FALSE); if(shell_action_get_active("Theme2Action")) shell_action_set_active("Theme2Action",FALSE); if(shell_action_get_active("Theme3Action")) shell_action_set_active("Theme3Action",FALSE); if(shell_action_get_active("Theme5Action")) shell_action_set_active("Theme5Action",FALSE); if(shell_action_get_active("Theme6Action")) shell_action_set_active("Theme6Action",FALSE); } cb_disable_theme(); } void cb_theme5() { if(shell_action_get_active("Theme5Action")){ params.theme=5; if(shell_action_get_active("DisableThemeAction")) shell_action_set_active("DisableThemeAction",FALSE); if(shell_action_get_active("Theme1Action")) shell_action_set_active("Theme1Action",FALSE); if(shell_action_get_active("Theme2Action")) shell_action_set_active("Theme2Action",FALSE); if(shell_action_get_active("Theme3Action")) shell_action_set_active("Theme3Action",FALSE); if(shell_action_get_active("Theme4Action")) shell_action_set_active("Theme4Action",FALSE); if(shell_action_get_active("Theme6Action")) shell_action_set_active("Theme6Action",FALSE); } cb_disable_theme(); } void cb_theme6() { if(shell_action_get_active("Theme6Action")){ params.theme=6; if(shell_action_get_active("DisableThemeAction")) shell_action_set_active("DisableThemeAction",FALSE); if(shell_action_get_active("Theme1Action")) shell_action_set_active("Theme1Action",FALSE); if(shell_action_get_active("Theme2Action")) shell_action_set_active("Theme2Action",FALSE); if(shell_action_get_active("Theme3Action")) shell_action_set_active("Theme3Action",FALSE); if(shell_action_get_active("Theme4Action")) shell_action_set_active("Theme4Action",FALSE); if(shell_action_get_active("Theme5Action")) shell_action_set_active("Theme5Action",FALSE); } cb_disable_theme(); } void cb_disable_theme() { Shell *shell = shell_get_main_shell(); // *shelltree=shell->tree; char theme_st[400]; GKeyFile *key_file = g_key_file_new(); #if GTK_CHECK_VERSION(3, 0, 0) GtkCssProvider *provider; provider = gtk_css_provider_new(); GtkCssProvider *provider2; provider2 = gtk_css_provider_new(); GtkCssProvider *provider3; provider3 = gtk_css_provider_new(); #endif if(shell_action_get_active("DisableThemeAction")){ params.theme=-1; if(shell_action_get_active("Theme1Action")) shell_action_set_active("Theme1Action",FALSE); if(shell_action_get_active("Theme2Action")) shell_action_set_active("Theme2Action",FALSE); if(shell_action_get_active("Theme3Action")) shell_action_set_active("Theme3Action",FALSE); if(shell_action_get_active("Theme4Action")) shell_action_set_active("Theme4Action",FALSE); if(shell_action_get_active("Theme5Action")) shell_action_set_active("Theme5Action",FALSE); if(shell_action_get_active("Theme6Action")) shell_action_set_active("Theme6Action",FALSE); } g_mkdir(g_get_user_config_dir(),0755); g_mkdir(g_build_filename(g_get_user_config_dir(), "hardinfo2", NULL),0755); gchar *conf_path = g_build_filename(g_get_user_config_dir(), "hardinfo2", "settings.ini", NULL); g_key_file_load_from_file( key_file, conf_path, G_KEY_FILE_KEEP_COMMENTS | G_KEY_FILE_KEEP_TRANSLATIONS, NULL); g_key_file_set_integer(key_file, "Theme", "ThemeNumber", params.theme); #if GLIB_CHECK_VERSION(2,40,0) g_key_file_save_to_file(key_file, conf_path, NULL); #else g2_key_file_save_to_file(key_file, conf_path, NULL); #endif g_free(conf_path); g_key_file_free(key_file); #if GTK_CHECK_VERSION(3, 0, 0) //Fix for budgie Fluent, mate GtkCssProvider *providera; providera = gtk_css_provider_new(); gtk_css_provider_load_from_data(providera,"notebook {background-color:unset;} scrolledwindow {background-color:unset;} viewport {background-color:unset;} frame {background-color:unset;}",-1,NULL); gtk_style_context_add_provider_for_screen(gdk_screen_get_default(),GTK_STYLE_PROVIDER(providera),GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); if(params.theme>0){//enable if(params.darkmode){ sprintf(theme_st,"window.background {background-image: url(\"%s/pixmaps/bg%d_dark.jpg\"); background-repeat: no-repeat; background-size:100%% 100%%; }",params.path_data,params.theme); }else{ sprintf(theme_st,"window.background {background-image: url(\"%s/pixmaps/bg%d_light.jpg\"); background-repeat: no-repeat; background-size:100%% 100%%; }",params.path_data,params.theme); } gtk_css_provider_load_from_data(provider, theme_st, -1, NULL); if(shell->window) gtk_style_context_add_provider(gtk_widget_get_style_context(shell->window), GTK_STYLE_PROVIDER(provider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); if(params.darkmode){ //menubar gtk_css_provider_load_from_data(provider2, "* { background-color: rgba(0xa0, 0xa0, 0xa0, 0.1); } * text { background-color: rgba(1, 1, 1, 1); }", -1, NULL); if(shell->ui_manager) gtk_style_context_add_provider(gtk_widget_get_style_context(gtk_ui_manager_get_widget(shell->ui_manager,"/MainMenuBarAction")), GTK_STYLE_PROVIDER(provider2), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); //treeviewinfo gtk_css_provider_load_from_data(provider3, "treeview { background-color: rgba(0xa0, 0xa0, 0xa0, 0.1); } treeview:selected { background-color: rgba(0x40, 0x60, 0xff, 1); } ", -1, NULL); if(shell->info_tree && shell->info_tree->view) gtk_style_context_add_provider(gtk_widget_get_style_context(shell->info_tree->view), GTK_STYLE_PROVIDER(provider3), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); //treeviewmain gtk_css_provider_load_from_data(provider3, "treeview { background-color: rgba(0xa0, 0xa0, 0xa0, 0.1); } treeview:selected { background-color: rgba(0x40, 0x60, 0xff, 1); } ", -1, NULL); if(shell->tree && shell->tree->view) gtk_style_context_add_provider(gtk_widget_get_style_context(shell->tree->view), GTK_STYLE_PROVIDER(provider3), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); }else{ //menubar gtk_css_provider_load_from_data(provider2, "* { background-color: rgba(0x60, 0x60, 0x60, 0.1); } * text { background-color: rgba(1, 1, 1, 1); }", -1, NULL); if(shell->ui_manager) gtk_style_context_add_provider(gtk_widget_get_style_context(gtk_ui_manager_get_widget(shell->ui_manager,"/MainMenuBarAction")), GTK_STYLE_PROVIDER(provider2), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); //treeviewinfo gtk_css_provider_load_from_data(provider3, "treeview { background-color: rgba(0x60, 0x60, 0x60, 0.1); } treeview:selected { background-color: rgba(0x40, 0x60, 0xff, 1); } ", -1, NULL); if(shell->info_tree && shell->info_tree->view) gtk_style_context_add_provider(gtk_widget_get_style_context(shell->info_tree->view), GTK_STYLE_PROVIDER(provider3), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); //treeviewmain gtk_css_provider_load_from_data(provider3, "treeview { background-color: rgba(0x60, 0x60, 0x60, 0.1); } treeview:selected { background-color: rgba(0x40, 0x60, 0xff, 1); } ", -1, NULL); if(shell->tree && shell->tree->view) gtk_style_context_add_provider(gtk_widget_get_style_context(shell->tree->view), GTK_STYLE_PROVIDER(provider3), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); } } else {//disable gtk_css_provider_load_from_data(provider, "window.background {background-image: none; }", -1, NULL); if(shell->window) gtk_style_context_add_provider(gtk_widget_get_style_context(shell->window), GTK_STYLE_PROVIDER(provider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); //menubar gtk_css_provider_load_from_data(provider2, "", -1, NULL); if(shell->ui_manager) gtk_style_context_add_provider(gtk_widget_get_style_context(gtk_ui_manager_get_widget(shell->ui_manager,"/MainMenuBarAction")), GTK_STYLE_PROVIDER(provider2), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); //treeviewinfo gtk_css_provider_load_from_data(provider3, "", -1, NULL); if(shell->info_tree && shell->info_tree->view) gtk_style_context_add_provider(gtk_widget_get_style_context(shell->info_tree->view), GTK_STYLE_PROVIDER(provider3), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); //treeviewmain gtk_css_provider_load_from_data(provider3, "", -1, NULL); if(shell->tree && shell->tree->view) gtk_style_context_add_provider(gtk_widget_get_style_context(shell->tree->view), GTK_STYLE_PROVIDER(provider3), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); } #endif } void cb_sync_on_startup() { gboolean setting = shell_action_get_active("SyncOnStartupAction"); GKeyFile *key_file = g_key_file_new(); g_mkdir(g_get_user_config_dir(),0755); g_mkdir(g_build_filename(g_get_user_config_dir(), "hardinfo2", NULL),0755); gchar *conf_path = g_build_filename(g_get_user_config_dir(), "hardinfo2", "settings.ini", NULL); g_key_file_load_from_file( key_file, conf_path, G_KEY_FILE_KEEP_COMMENTS | G_KEY_FILE_KEEP_TRANSLATIONS, NULL); g_key_file_set_boolean(key_file, "Sync", "OnStartup", setting); #if GLIB_CHECK_VERSION(2,40,0) g_key_file_save_to_file(key_file, conf_path, NULL); #else g2_key_file_save_to_file(key_file, conf_path, NULL); #endif g_free(conf_path); g_key_file_free(key_file); } void cb_open_web_page() { uri_open("https://www.hardinfo2.org"); } void cb_report_bug() { uri_open("https://github.com/hardinfo2/hardinfo2/issues"); } void cb_refresh() { shell_do_reload(TRUE); } /*void cb_copy_to_clipboard() { ShellModuleEntry *entry = shell_get_main_shell()->selected; if (entry) { gchar *data = module_entry_function(entry); GtkClipboard *clip = gtk_clipboard_get(gdk_atom_intern("CLIPBOARD", FALSE)); ReportContext *ctx = report_context_text_new(NULL); ctx->entry = entry; report_header(ctx); report_table(ctx, data); report_footer(ctx); gtk_clipboard_set_text(clip, ctx->output, -1); g_free(data); report_context_free(ctx); } } */ void cb_side_pane() { gboolean visible; visible = shell_action_get_active("SidePaneAction"); shell_set_side_pane_visible(visible); } void cb_toolbar() { gboolean visible; visible = shell_action_get_active("ToolbarAction"); shell_ui_manager_set_visible("/MainMenuBarAction", visible); } void cb_about() { gchar *path; unsigned int latest_ver=0,u1=0,u2=0,u3=0,a1=0,a2=0,a3=0,app_ver=0; int fd=-1; Shell *shell = shell_get_main_shell(); GtkWidget *about; gchar *copyright = NULL; gchar *version; const gchar *authors[] = { "L. A. F. Pereira (2003-2023)", "hwspeedy(2024-)", "Burt P.", "Ondrej Čerman", "TotalCaesar659", "Andrey Esin", "Agney Lopes Roth Ferraz", "Stewart Adam", "Pascal F. Martin", "Julian Ospald", "Julien Lavergne", "Fernando López", "Piccoro Lenz McKay", "Alexander Münch", "Simon Quigley", "AsciiWolf", "George Schneeloch", "Mattia Rizzolo", "Yo", "jamesbond", "Mike Hewitt", "Boris Afonot", "Amstelchen", "lucascastro", "topazus", "More contributors in GitHub", "", "Based on work by:", "uber-graph by Christian Hergert and others.", "BinReloc by Hongli Lai", "decode-dimms by Philip Edelbrock", "decode-dimms by Christian Zuckschwerdt", "decode-dimms by Burkart Lingner", "x86cpucaps by Osamu Kayasono", "MD5 implementation by Colin Plumb", "SHA1 implementation by Steve Reid", "Blowfish implementation by Paul Kocher", "Raytracing benchmark by John Walker", "FFT benchmark by Scott Robert Ladd", "Vendor list based on GtkSysInfo by Pissens Sebastien", "DMI support based on code by Stewart Adam", "SCSI support based on code by Pascal F. Martin", "OpenGL benchmark based on code by Zack Rusin", "OpenGL benchmark based on code by David Reveman", "OpenGL benchmark based on code by Peter Nilsson", "", "Translated by:", "Alexander Münch", "micrococo", "yolanteng0", "Yunji Lee", "Hugo Carvalho", "Paulo Giovanni Pereira", "Sergey Rodin", "Sabri Ünal", "yetist", "", "Artwork by:", "Jakub Szypulka", "Tango Project", "The GNOME Project", "epicbard", "Roundicons", "ansimuz", "siqueegee", "Rawdanitsu", "Larry Ewing", "2x910", "tutralex", "", "Packaging by:", "Topazus (Fedora/Redhat branches)", "Yochananmargos (Arch+Manjaro)", "hosiet (Debian/Ubuntu branches)", "david-geiger (Mageia)", "Kieltux (Opensuse/Suse branches)", "AngryPenguinPL (OpenMandriva)", "quincyf467 (Gentoo)", "terryn94 (PCLinuxOS)", "bjornfor (NixOS+NIX packages)", "DidierSpaier (Slint)", "B. Watson (Slackbuild packages)", "K1ngfish3r (Clear Linux)", "", NULL }; about = gtk_about_dialog_new(); gtk_window_set_transient_for(GTK_WINDOW(about), GTK_WINDOW(shell->window)); #if GTK_CHECK_VERSION(2, 12, 0) gtk_about_dialog_set_program_name(GTK_ABOUT_DIALOG(about), "Hardinfo2"); #else gtk_about_dialog_set_name(GTK_ABOUT_DIALOG(about), "Hardinfo2"); #endif copyright = g_strdup_printf("Copyright \302\251 2003-2023 L. A. F. Pereira\nCopyright \302\251 2024-%d Hardinfo2 Project\n\n\n\n", HARDINFO2_COPYRIGHT_LATEST_YEAR); path = g_build_filename(g_get_user_config_dir(), "hardinfo2","blobs-update-version.json", NULL); fd = open(path,O_RDONLY); if(fd>=0){ char *buf=NULL; struct stat st; stat(path,&st); if(st.st_size>0){ buf=g_malloc(st.st_size+1); if(buf){ int i=read(fd, buf, st.st_size); if(i>0){ buf[st.st_size]=0; char *s=strstr(buf,"\"latest-program-version\""); if(s && sscanf(s,"\"latest-program-version\":\"%u.%u.%u\"",&u1,&u2,&u3)==3) latest_ver=u1*10000+u2*100+u3; } } } close(fd); g_free(buf); } free(path); if(sscanf(VERSION,"%u.%u.%u",&a1,&a2,&a3)==3) app_ver=a1*10000+a2*100+a3; if(app_ver && (latest_ver > app_ver)){ version=g_strdup_printf("%s (Update available: %u.%u.%u)",VERSION,u1,u2,u3); }else{ version=VERSION; } gtk_about_dialog_set_version(GTK_ABOUT_DIALOG(about), version); gtk_about_dialog_set_copyright(GTK_ABOUT_DIALOG(about), copyright); gtk_about_dialog_set_comments(GTK_ABOUT_DIALOG(about), _("System Information and Benchmark")); gtk_about_dialog_set_logo(GTK_ABOUT_DIALOG(about), icon_cache_get_pixbuf_at_size("hardinfo2.svg", 144, 144)); gtk_about_dialog_set_license(GTK_ABOUT_DIALOG(about), _("HardInfo2 is free software; you can redistribute it and/or modify " "it under the terms of the GNU General Public License as published by " "the Free Software Foundation, version 2 or later.\n\n" "This program is distributed in the hope that it will be useful, " "but WITHOUT ANY WARRANTY; without even the implied warranty of " "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the " "GNU General Public License for more details.\n\n" "You should have received a copy of the GNU General Public License " "along with this program; if not, write to the Free Software " "Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA")); gtk_about_dialog_set_wrap_license(GTK_ABOUT_DIALOG(about), TRUE); gtk_about_dialog_set_authors(GTK_ABOUT_DIALOG(about), authors); //gtk_about_dialog_set_artists(GTK_ABOUT_DIALOG(about), artists); //gtk_about_dialog_set_translator_credits(GTK_ABOUT_DIALOG(about), _("translator-credits")); gtk_dialog_run(GTK_DIALOG(about)); gtk_widget_destroy(about); g_free(copyright); } void cb_generate_report() { Shell *shell = shell_get_main_shell(); gboolean btn_refresh = shell_action_get_enabled("RefreshAction"); gboolean btn_copy = shell_action_get_enabled("CopyAction"); report_dialog_show(shell->tree->model, shell->window); shell_action_set_enabled("RefreshAction", btn_refresh); shell_action_set_enabled("CopyAction", btn_copy); } void cb_quit(void) { do { gtk_main_quit(); } while (gtk_main_level() > 1); exit(0); } hardinfo2-hardinfo2-1331e88/shell/iconcache.c000066400000000000000000000053431474767047500207370ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include #include static GHashTable *cache = NULL; void icon_cache_init(void) { if (!cache) { DEBUG("initializing icon cache"); cache = g_hash_table_new(g_str_hash, g_str_equal); } } GdkPixbuf *icon_cache_get_pixbuf(const gchar * file) { GdkPixbuf *icon; gchar *ikey; if (!cache) icon_cache_init(); ikey = g_strdup_printf("%s" ICON_SUFFIX(DEF_ICON_SIZE), file); icon = g_hash_table_lookup(cache, ikey); if (!icon) { gchar *path; path = g_build_filename(params.path_data, "pixmaps", file, NULL); icon = gdk_pixbuf_new_from_file_at_size(path, DEF_ICON_SIZE*params.scale, DEF_ICON_SIZE*params.scale, NULL); g_hash_table_insert(cache, g_strdup(ikey), icon); g_free(path); } g_free(ikey); if (icon) g_object_ref(icon); return icon; } GtkWidget *icon_cache_get_image(const gchar * file) { GdkPixbuf *icon; icon = icon_cache_get_pixbuf(file); return gtk_image_new_from_pixbuf(icon); } GdkPixbuf *icon_cache_get_pixbuf_at_size(const gchar * file, gint wid, gint hei) { GdkPixbuf *icon; gchar *ikey; if (!cache) icon_cache_init(); ikey = g_strdup_printf("%s@%ix%i", file, wid, hei); icon = g_hash_table_lookup(cache, ikey); if (!icon) { gchar *path; path = g_build_filename(params.path_data, "pixmaps", file, NULL); icon = gdk_pixbuf_new_from_file_at_size(path, wid==-1?wid:wid*params.scale, hei==-1?hei:hei*params.scale, NULL); g_hash_table_insert(cache, g_strdup(ikey), icon); g_free(path); } g_free(ikey); if (icon) g_object_ref(icon); return icon; } GtkWidget *icon_cache_get_image_at_size(const gchar * file, gint wid, gint hei) { GdkPixbuf *icon; icon = icon_cache_get_pixbuf_at_size(file, wid, hei); return gtk_image_new_from_pixbuf(icon); } hardinfo2-hardinfo2-1331e88/shell/loadgraph-uber.c000066400000000000000000000062501474767047500217150ustar00rootroot00000000000000/* * Christian Hergert's uber-graph (GPL3) * wrapped in an interface compatible with * L. A. F. Pereira's loadgraph (GPL2.1). */ #include #include "loadgraph.h" #include "uber.h" #define LG_MAX_LINES 9 static const gchar *default_colors[] = { "#73d216", "#f57900", /*colors from simple.c sample */ "#3465a4", "#ef2929", "#75507b", "#ce5c00", "#c17d11", "#ce5c00", "#729fcf", NULL }; struct _LoadGraph { GtkWidget *uber_widget; gdouble cur_value[LG_MAX_LINES]; gint height; }; gdouble _sample_func (UberLineGraph *graph, guint line, gpointer user_data) { LoadGraph *lg = (LoadGraph *)user_data; return lg->cur_value[line-1]; } LoadGraph *load_graph_new(gint size) { LoadGraph *lg; GdkRGBA color; int i = 0; lg = g_new0(LoadGraph, 1); lg->uber_widget = uber_line_graph_new(); lg->height = (size+1) * 2; /* idk */ for (i = 0; i < LG_MAX_LINES; i++) { lg->cur_value[i] = UBER_LINE_GRAPH_NO_VALUE; //GtkWidget *label = uber_label_new(); //uber_label_set_text(UBER_LABEL(label), "BLAH!"); gdk_rgba_parse(&color, default_colors[i]); uber_line_graph_add_line(UBER_LINE_GRAPH(lg->uber_widget), &color, NULL); /* UBER_LABEL(label) */ } uber_line_graph_set_autoscale(UBER_LINE_GRAPH(lg->uber_widget), TRUE); uber_line_graph_set_data_func(UBER_LINE_GRAPH(lg->uber_widget), (UberLineGraphFunc)_sample_func, (gpointer *)lg, NULL); return lg; } void load_graph_set_data_suffix(LoadGraph * lg, gchar * suffix) { } gchar *load_graph_get_data_suffix(LoadGraph * lg) { return strdup(""); } GtkWidget *load_graph_get_framed(LoadGraph * lg) { if (lg != NULL) return lg->uber_widget; return NULL; } void load_graph_set_title(LoadGraph * lg, const gchar *title) { } void load_graph_clear(LoadGraph * lg) { int i; if (lg != NULL) { for (i = 0; i < LG_MAX_LINES; i++) { lg->cur_value[i] = UBER_LINE_GRAPH_NO_VALUE; } uber_line_graph_clear(UBER_LINE_GRAPH(lg->uber_widget)); uber_graph_scale_changed(UBER_GRAPH(lg->uber_widget)); } } void load_graph_set_color(LoadGraph * lg, LoadGraphColor color) { } void load_graph_destroy(LoadGraph * lg) { if (lg != NULL) { g_object_unref(lg->uber_widget); g_free(lg); } } /*static gboolean _expose(GtkWidget * widget, GdkEventExpose * event, gpointer user_data) { return TRUE; }*/ void load_graph_configure_expose(LoadGraph * lg) { } void load_graph_update_ex(LoadGraph *lg, guint line, gdouble value) { if (lg != NULL && line < LG_MAX_LINES) lg->cur_value[line] = value; } void load_graph_update(LoadGraph * lg, gdouble value) { load_graph_update_ex(lg, 0, value); } gint load_graph_get_height(LoadGraph *lg) { if (lg != NULL) return lg->height; return 0; } hardinfo2-hardinfo2-1331e88/shell/loadgraph.c000066400000000000000000000205411474767047500207610ustar00rootroot00000000000000/* * Simple Load Graph * Version 0.1 - Wed, Jan 11 2006 * - initial release * Version 0.1.1 - Fri, Jan 13 2006 * - fixes autoscaling * - add color * * Copyright (C) 2006 L. A. F. Pereira * * The Simple Load Graph is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License, version 2.1, as published by the Free Software Foundation. * * The Simple Load Graph is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "loadgraph.h" struct _LoadGraph { GdkPixmap *buf; GdkGC *grid; GdkGC *trace; GdkGC *fill; GtkWidget *area; gint *data; gfloat scale; gint size; gint width, height; LoadGraphColor color; gint max_value, remax_count; PangoLayout *layout; gchar *suffix; gchar *title; }; static void _draw(LoadGraph * lg); LoadGraph *load_graph_new(gint size) { LoadGraph *lg; lg = g_new0(LoadGraph, 1); size++; lg->suffix = g_strdup(""); lg->title = g_strdup(""); lg->area = gtk_drawing_area_new(); lg->size = (size * 3) / 2; lg->data = g_new0(gint, lg->size); lg->scale = 1.0; lg->width = size * 6; lg->height = size * 2; lg->max_value = 1; lg->remax_count = 0; lg->layout = pango_layout_new(gtk_widget_get_pango_context(lg->area)); gtk_widget_set_size_request(lg->area, lg->width, lg->height); gtk_widget_show(lg->area); return lg; } void load_graph_set_data_suffix(LoadGraph * lg, gchar * suffix) { g_free(lg->suffix); lg->suffix = g_strdup(suffix); } gchar *load_graph_get_data_suffix(LoadGraph * lg) { return lg->suffix; } void load_graph_set_title(LoadGraph * lg, const gchar * title) { g_free(lg->title); lg->title = g_strdup(title); } const gchar *load_graph_get_title(LoadGraph *lg) { if (lg != NULL) return lg->title; return NULL; } GtkWidget *load_graph_get_framed(LoadGraph * lg) { GtkWidget *align, *frame; align = gtk_alignment_new(0.5, 0.5, 0, 0); gtk_widget_show(align); frame = gtk_frame_new(NULL); gtk_widget_show(frame); gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_IN); gtk_container_add(GTK_CONTAINER(align), frame); gtk_container_add(GTK_CONTAINER(frame), lg->area); return align; } void load_graph_clear(LoadGraph * lg) { gint i; for (i = 0; i < lg->size; i++) lg->data[i] = 0; lg->scale = 1.0; lg->max_value = 1; lg->remax_count = 0; load_graph_set_title(lg, ""); _draw(lg); } void load_graph_set_color(LoadGraph * lg, LoadGraphColor color) { lg->color = color; gdk_rgb_gc_set_foreground(lg->trace, lg->color); gdk_rgb_gc_set_foreground(lg->fill, lg->color - 0x303030); gdk_rgb_gc_set_foreground(lg->grid, lg->color - 0xcdcdcd); } void load_graph_destroy(LoadGraph * lg) { g_free(lg->data); gtk_widget_destroy(lg->area); gdk_pixmap_unref(lg->buf); g_object_unref(lg->trace); g_object_unref(lg->grid); g_object_unref(lg->fill); g_object_unref(lg->layout); g_free(lg); } static gboolean _expose(GtkWidget * widget, GdkEventExpose * event, gpointer user_data) { LoadGraph *lg = (LoadGraph *) user_data; GdkDrawable *draw = GDK_DRAWABLE(lg->buf); gdk_draw_drawable(lg->area->window, lg->area->style->black_gc, draw, 0, 0, 0, 0, lg->width, lg->height); return FALSE; } void load_graph_configure_expose(LoadGraph * lg) { /* creates the backing store pixmap */ gtk_widget_realize(lg->area); lg->buf = gdk_pixmap_new(lg->area->window, lg->width, lg->height, -1); /* create the graphic contexts */ lg->grid = gdk_gc_new(GDK_DRAWABLE(lg->buf)); lg->trace = gdk_gc_new(GDK_DRAWABLE(lg->buf)); lg->fill = gdk_gc_new(GDK_DRAWABLE(lg->buf)); /* the default color is green */ load_graph_set_color(lg, LG_COLOR_GREEN); /* init graphic contexts */ gdk_gc_set_line_attributes(lg->grid, 1, GDK_LINE_ON_OFF_DASH, GDK_CAP_NOT_LAST, GDK_JOIN_ROUND); gdk_gc_set_dashes(lg->grid, 0, (gint8*)"\2\2", 2); gdk_gc_set_line_attributes(lg->trace, 1, GDK_LINE_SOLID, GDK_CAP_PROJECTING, GDK_JOIN_ROUND); /* configures the expose event */ g_signal_connect(G_OBJECT(lg->area), "expose-event", (GCallback) _expose, lg); } static void _draw_title(LoadGraph * lg, const char* title) { gchar *tmp = g_strdup_printf("%s", title); pango_layout_set_markup(lg->layout, tmp, -1); int width = 0; int height = 0; pango_layout_get_pixel_size(lg->layout, &width, &height); gint position = (lg->width / 2) - (width / 2); gdk_draw_layout(GDK_DRAWABLE(lg->buf), lg->trace, position, 2, lg->layout); g_free(tmp); } static void _draw_label_and_line(LoadGraph * lg, gint position, gint value) { gchar *tmp; /* draw lines */ if (position > 0) gdk_draw_line(GDK_DRAWABLE(lg->buf), lg->grid, 0, position, lg->width, position); else position = -1 * position; /* draw label */ tmp = g_strdup_printf("%d%s", value, lg->suffix); pango_layout_set_markup(lg->layout, tmp, -1); pango_layout_set_width(lg->layout, lg->area->allocation.width * PANGO_SCALE); gdk_draw_layout(GDK_DRAWABLE(lg->buf), lg->trace, 2, position, lg->layout); g_free(tmp); } static void _draw(LoadGraph * lg) { GdkDrawable *draw = GDK_DRAWABLE(lg->buf); gint i, d; /* clears the drawing area */ gdk_draw_rectangle(draw, lg->area->style->black_gc, TRUE, 0, 0, lg->width, lg->height); /* the graph */ GdkPoint *points = g_new0(GdkPoint, lg->size + 1); for (i = 0; i < lg->size; i++) { points[i].x = i * 4; points[i].y = lg->height - lg->data[i] * lg->scale; } points[0].x = points[1].x = 0; points[0].y = points[i].y = lg->height; points[i].x = points[i - 1].x = lg->width; gdk_draw_polygon(draw, lg->fill, TRUE, points, lg->size + 1); gdk_draw_polygon(draw, lg->trace, FALSE, points, lg->size + 1); g_free(points); /* vertical bars */ for (i = lg->width, d = 0; i > 1; i--, d++) if ((d % 45) == 0 && d) gdk_draw_line(draw, lg->grid, i, 0, i, lg->height); /* horizontal bars and labels; 25%, 50% and 75% */ _draw_label_and_line(lg, -1, lg->max_value); _draw_label_and_line(lg, lg->height / 4, 3 * (lg->max_value / 4)); _draw_label_and_line(lg, lg->height / 2, lg->max_value / 2); _draw_label_and_line(lg, 3 * (lg->height / 4), lg->max_value / 4); /* graph title */ _draw_title(lg, lg->title); gtk_widget_queue_draw(lg->area); } void load_graph_update_ex(LoadGraph *lg, guint line, gdouble value) { /* not implemented */ if (line == 0) load_graph_update(lg, value); } void load_graph_update(LoadGraph * lg, gdouble v) { gint i; gint value = (gint)v; if (value < 0) return; /* shift-right our data */ for (i = 0; i < lg->size - 1; i++) { lg->data[i] = lg->data[i + 1]; } /* insert the updated value */ lg->data[i] = value; /* calculates the maximum value */ if (lg->remax_count++ > 20) { /* only finds the maximum amongst the data every 20 times */ lg->remax_count = 0; gint max = lg->data[0]; for (i = 1; i < lg->size; i++) { if (lg->data[i] > max) max = lg->data[i]; } lg->max_value = max; } else { /* otherwise, select the maximum between the current maximum and the supplied value */ lg->max_value = MAX(value, lg->max_value); } /* recalculates the scale; always use 90% of it */ lg->scale = 0.90 * ((gfloat) lg->height / (gfloat) lg->max_value); /* redraw */ _draw(lg); } gint load_graph_get_height(LoadGraph *lg) { if (lg != NULL) return lg->height; return 0; } hardinfo2-hardinfo2-1331e88/shell/menu.c000066400000000000000000000204001474767047500177560ustar00rootroot00000000000000/* * HardInfo * Copyright(C) 2003-2007 L. A. F. Pereira. * * menu.c is based on UI Manager tutorial by Ryan McDougall * Copyright(C) 2005 Ryan McDougall. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include #include #include #include #include #include #include #include "uidefs.h" static GtkActionEntry entries[] = { // {"MainMenuAction", NULL, ""}, {"InformationMenuAction", NULL, N_("_Information")}, /* name, stock id, label */ {"ViewMenuAction", NULL, N_("_View")}, #if GTK_CHECK_VERSION(3, 20, 0) {"ThemeMenuAction", NULL, N_("_Theme")}, #endif {"HelpMenuAction", NULL, N_("_Help")}, {"MainMenuBarAction", NULL, ""}, {"ReportAction", HI_STOCK_REPORT, /* name, stock id */ N_("Generate _Report"), "R", /* label, accelerator */ N_("Generates a report with detailed system information"), /* tooltip */ G_CALLBACK(cb_generate_report)}, {"SyncManagerAction", HI_STOCK_SYNC, N_("Synchronize"), "S", N_("Send benchmark results and receive updated data from the network"), G_CALLBACK(cb_sync_manager)}, //does not work correctly and value low /*{"CopyAction", HI_STOCK_CLIPBOARD, N_("_Copy to Clipboard"), "C", N_("Copy to clipboard"), G_CALLBACK(cb_copy_to_clipboard)},*/ {"RefreshAction", HI_STOCK_REFRESH, N_("_Refresh"), "F5", NULL, G_CALLBACK(cb_refresh)}, {"HomePageAction", NULL, N_("_Open HardInfo2 Web Site"), NULL, NULL, G_CALLBACK(cb_open_web_page)}, {"ReportBugAction", NULL, N_("_Report bug"), NULL, NULL, G_CALLBACK(cb_report_bug)}, {"AboutAction", NULL, N_("_About HardInfo2"), "A", N_("Displays program version information"), G_CALLBACK(cb_about)}, {"QuitAction", NULL, N_("_Quit"), "Q", NULL, G_CALLBACK(cb_quit)} }; static GtkToggleActionEntry toggle_entries[] = { {"SidePaneAction", NULL, N_("_Side Pane"), NULL, N_("Toggles side pane visibility"), G_CALLBACK(cb_side_pane)}, {"ToolbarAction", NULL, N_("_Toolbar"), NULL, NULL, G_CALLBACK(cb_toolbar)}, {"SyncOnStartupAction", NULL, N_("Synchronize on startup"), NULL, NULL, G_CALLBACK(cb_sync_on_startup)}, #if GTK_CHECK_VERSION(3, 20, 0) {"DisableThemeAction", NULL, N_("Disable Theme"), NULL, NULL, G_CALLBACK(cb_disable_theme)}, {"Theme1Action", NULL, N_("Theme Motherboard"), NULL, NULL, G_CALLBACK(cb_theme1)}, {"Theme2Action", NULL, N_("Theme Graffiti"), NULL, NULL, G_CALLBACK(cb_theme2)}, {"Theme3Action", NULL, N_("Theme Anime PC"), NULL, NULL, G_CALLBACK(cb_theme3)}, {"Theme4Action", NULL, N_("Theme Tux Star"), NULL, NULL, G_CALLBACK(cb_theme4)}, {"Theme5Action", NULL, N_("Theme PixArt"), NULL, NULL, G_CALLBACK(cb_theme5)}, {"Theme6Action", NULL, N_("Theme Silicon"), NULL, NULL, G_CALLBACK(cb_theme6)}, #endif }; /* Implement a handler for GtkUIManager's "add_widget" signal. The UI manager * will emit this signal whenever it needs you to place a new widget it has. */ static void menu_add_widget(GtkUIManager * ui, GtkWidget * widget, GtkContainer * container) { gtk_box_pack_start(GTK_BOX(container), widget, FALSE, FALSE, 0); gtk_widget_show(widget); } void menu_init(Shell * shell) { GtkWidget *menu_box; /* Packing box for the menu and toolbars */ GtkActionGroup *action_group; /* Packing group for our Actions */ GtkUIManager *menu_manager; /* The magic widget! */ GError *error; /* For reporting exceptions or errors */ GtkAccelGroup *accel_group; /* Create our objects */ menu_box = shell->vbox; action_group = gtk_action_group_new("HardInfo2"); menu_manager = gtk_ui_manager_new(); shell->action_group = action_group; shell->ui_manager = menu_manager; /* Pack up our objects: * menu_box -> window * actions -> action_group * action_group -> menu_manager */ gtk_action_group_set_translation_domain( action_group, "hardinfo2" );//gettext gtk_action_group_add_actions(action_group, entries, G_N_ELEMENTS(entries), NULL); gtk_action_group_add_toggle_actions(action_group, toggle_entries, G_N_ELEMENTS(toggle_entries), NULL); gtk_ui_manager_insert_action_group(menu_manager, action_group, 0); /* Read in the UI from our XML file */ error = NULL; gtk_ui_manager_add_ui_from_string(menu_manager, uidefs_str, -1, &error); if (error) { g_error("Building menus failed: %s", error->message); g_error_free(error); return; } /* Enable menu accelerators */ accel_group = gtk_ui_manager_get_accel_group(menu_manager); gtk_window_add_accel_group(GTK_WINDOW(shell->window), accel_group); /* Connect up important signals */ /* This signal is necessary in order to place widgets from the UI manager * into the menu_box */ g_signal_connect(menu_manager, "add_widget", G_CALLBACK(menu_add_widget), menu_box); /* Show the window and run the main loop, we're done! */ gtk_widget_show(menu_box); //Scale menubar GtkIconSize icon_size=3;//24 int size=16; if(params.scale>=1.5) {size=20;icon_size=5;}//32 if(params.scale>=2) {size=24;icon_size=6;}//48 gtk_toolbar_set_icon_size(GTK_TOOLBAR(gtk_ui_manager_get_widget(shell->ui_manager, "/MainMenuBarAction")), icon_size); //Scale (menubar)+menu items /*GtkToolButton *b; b=GTK_TOOL_BUTTON(gtk_ui_manager_get_widget(shell->ui_manager, "/MainMenuBarAction/Refresh")); GtkWidget *i=icon_cache_get_image_at_size("hardinfo2.svg",2*size,2*size); gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON(b),"hardinfo2.svg"); b=GTK_TOOL_BUTTON(gtk_ui_manager_get_widget(shell->ui_manager, "/MainMenuBar/Report")); gtk_tool_button_set_icon_widget(b,icon_cache_get_image_at_size("report.svg",2*size,2*size)); b=GTK_TOOL_BUTTON(gtk_ui_manager_get_widget(shell->ui_manager, "/MainMenuBar/SyncManager")); gtk_tool_button_set_icon_widget(b,icon_cache_get_image_at_size("sync.svg",2*size,2*size)); */ GtkImageMenuItem *t; t=GTK_IMAGE_MENU_ITEM(gtk_ui_manager_get_widget(shell->ui_manager, "/MainMenu/InformationMenu/Report")); gtk_image_menu_item_set_image(t,icon_cache_get_image_at_size("report.svg",size,size)); t=GTK_IMAGE_MENU_ITEM(gtk_ui_manager_get_widget(shell->ui_manager, "/MainMenu/InformationMenu/SyncManager")); gtk_image_menu_item_set_image(t,icon_cache_get_image_at_size("sync.svg",size,size)); t=GTK_IMAGE_MENU_ITEM(gtk_ui_manager_get_widget(shell->ui_manager, "/MainMenu/InformationMenu/Quit")); gtk_image_menu_item_set_image(t,icon_cache_get_image_at_size("close.svg",size,size)); t=GTK_IMAGE_MENU_ITEM(gtk_ui_manager_get_widget(shell->ui_manager, "/MainMenu/ViewMenu/Refresh")); gtk_image_menu_item_set_image(t,icon_cache_get_image_at_size("refresh.svg",size,size)); t=GTK_IMAGE_MENU_ITEM(gtk_ui_manager_get_widget(shell->ui_manager, "/MainMenu/HelpMenu/WebPage")); gtk_image_menu_item_set_image(t,icon_cache_get_image_at_size("home.svg",size,size)); t=GTK_IMAGE_MENU_ITEM(gtk_ui_manager_get_widget(shell->ui_manager, "/MainMenu/HelpMenu/ReportBug")); gtk_image_menu_item_set_image(t,icon_cache_get_image_at_size("report-bug.svg",size,size)); t=GTK_IMAGE_MENU_ITEM(gtk_ui_manager_get_widget(shell->ui_manager, "/MainMenu/HelpMenu/About")); gtk_image_menu_item_set_image(t,icon_cache_get_image_at_size("hardinfo2.svg",size,size)); gtk_toolbar_set_style(GTK_TOOLBAR(gtk_ui_manager_get_widget(shell->ui_manager, "/MainMenuBarAction")), GTK_TOOLBAR_BOTH_HORIZ); } hardinfo2-hardinfo2-1331e88/shell/report.c000066400000000000000000001225321474767047500203360ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2008 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include #include #include #include #include #include #include #include "uri_handler.h" gint columns=0;//set by subtitle and propagates down gint cols=0;//set by details and propagates down static ReportDialog *report_dialog_new(GtkTreeModel * model, GtkWidget * parent); static void set_all_active(ReportDialog * rd, gboolean setting); static FileTypes file_types[] = { {"HTML (*.html)", "text/html", ".html", report_context_html_new}, {"Plain Text (*.txt)", "text/plain", ".txt", report_context_text_new}, {"Shell Dump (*.txt)", "text/plain", ".txt", report_context_shell_new}, {NULL, NULL, NULL, NULL} }; /* virtual functions */ void report_header(ReportContext * ctx) { ctx->header(ctx); } void report_footer(ReportContext * ctx) { ctx->footer(ctx); } void report_title(ReportContext * ctx, gchar * text) { ctx->title(ctx, text); } void report_subtitle(ReportContext * ctx, gchar * text) { ctx->subtitle(ctx, text); } void report_subsubtitle(ReportContext * ctx, gchar * text) { ctx->subsubtitle(ctx, text); } void report_key_value(ReportContext * ctx, gchar *key, gchar *value, gsize longest_key) { ctx->keyvalue(ctx, key, value, longest_key); } void report_details_start(ReportContext *ctx, gchar *key, gchar *value, gsize longest_key) { ctx->details_start(ctx, key, value, longest_key); } void report_details_section(ReportContext *ctx, gchar *label) { ctx->details_section(ctx, label); } void report_details_keyvalue(ReportContext *ctx, gchar *key, gchar *value, gsize longest_key) { ctx->details_keyvalue(ctx, key, value, longest_key); } void report_details_end(ReportContext *ctx) { ctx->details_end(ctx); } /* end virtual functions */ gint report_get_visible_columns(ReportContext *ctx) { gint columns; /* Column count starts at two, since we always have at least two columns visible. */ columns = 2; /* Either the Progress column or the Value column is available at the same time. So we don't count them. */ if (ctx->columns & REPORT_COL_EXTRA1) columns++; if (ctx->columns & REPORT_COL_EXTRA2) columns++; return columns; } gchar *icon_name_css_id(const gchar *file) { gchar *safe = g_strdup_printf("icon-%s", file); gchar *p = safe; while(*p) { if (!isalnum(*p)) *p = '-'; p++; } return safe; } gchar *make_icon_css(const gchar *file) { if (!file || *file == 0) return g_strdup(""); gchar *ret = NULL; gchar *path = g_build_filename(params.path_data, "pixmaps", file, NULL); char *contents = NULL; gsize length = 0; if ( g_file_get_contents(path, &contents, &length, NULL) ) { gchar *css_class = icon_name_css_id(file); const char *ctype = "image/png"; if (g_str_has_suffix(file, ".svg") ) ctype = "image/svg+xml"; gchar *b64data = g_base64_encode(contents, length); ret = g_strdup_printf( ".%s\n" "{ content: url(data:%s;base64,%s); }\n", css_class ? css_class : "", ctype, b64data ); g_free(b64data); g_free(css_class); } g_free(contents); g_free(path); return ret ? ret : g_strdup(""); } void cache_icon(ReportContext *ctx, const gchar *file) { if (!ctx->icon_data) return; if (!g_hash_table_lookup(ctx->icon_data, file) ) g_hash_table_insert(ctx->icon_data, g_strdup(file), make_icon_css(file)); } void report_context_configure(ReportContext * ctx, GKeyFile * keyfile) { gchar **keys; const gchar *group = "$ShellParam$"; if (ctx->icon_refs) { g_hash_table_remove_all(ctx->icon_refs); ctx->icon_refs = NULL; } ctx->icon_refs = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free); keys = g_key_file_get_keys(keyfile, group, NULL, NULL); if (keys) { gint i = 0; for (; keys[i]; i++) { gchar *key = keys[i]; if (g_str_equal(key, "ShowColumnHeaders")) { ctx->show_column_headers = g_key_file_get_boolean(keyfile, group, key, NULL); } else if (g_str_has_prefix(key, "ColumnTitle")) { gchar *value, *title = strchr(key, '$'); if (!title) { DEBUG("couldn't find column title"); break; } title++; if (!*title) { DEBUG("title is empty"); break; } value = g_key_file_get_value(keyfile, group, key, NULL); if (g_str_equal(title, "Extra1")) { ctx->columns |= REPORT_COL_EXTRA1; } else if (g_str_equal(title, "Extra2")) { ctx->columns |= REPORT_COL_EXTRA2; } else if (g_str_equal(title, "Value")) { ctx->columns |= REPORT_COL_VALUE; } else if (g_str_equal(title, "TextValue")) { ctx->columns |= REPORT_COL_TEXTVALUE; } else if (g_str_equal(title, "Progress")) { ctx->columns |= REPORT_COL_PROGRESS; } g_hash_table_replace(ctx->column_titles, g_strdup(title), g_strdup(value)); } else if (g_str_equal(key, "ViewType")) { if (g_key_file_get_integer(keyfile, group, "ViewType", NULL) == SHELL_VIEW_PROGRESS) { ctx->columns &= ~REPORT_COL_VALUE; ctx->columns |= REPORT_COL_PROGRESS; } } else if (g_str_has_prefix(key, "Icon$")) { gchar *ikey = g_utf8_strchr(key, -1, '$'); gchar *tag = key_mi_tag(ikey); gchar *icon = g_key_file_get_value(keyfile, group, key, NULL); cache_icon(ctx, icon); g_hash_table_insert(ctx->icon_refs, tag, icon); } } g_strfreev(keys); } } static void report_html_details_start(ReportContext *ctx, gchar *key, gchar *value, gsize longest_key) { cols = 2;//always 2 cols in details report_key_value(ctx, key, value, longest_key); ctx->parent_columns = ctx->columns; ctx->columns = REPORT_COL_VALUE; ctx->output = h_strdup_cprintf("\n", ctx->output, columns+1);//above } static void report_html_details_end(ReportContext *ctx) { ctx->output = h_strdup_cprintf("
    \n", ctx->output); ctx->columns = ctx->parent_columns; ctx->parent_columns = 0; } void report_details(ReportContext *ctx, gchar *key, gchar *value, gchar *details, gsize longest_key) { GKeyFile *key_file = g_key_file_new(); gchar **groups; gint i; report_details_start(ctx, key, value, longest_key); ctx->in_details = TRUE; g_key_file_load_from_data(key_file, details, strlen(details), 0, NULL); groups = g_key_file_get_groups(key_file, NULL); for (i = 0; groups[i]; i++) { gchar *group, *tmpgroup; gchar **keys; gint j; if (groups[i][0] == '$') { continue; } group = groups[i]; tmpgroup = g_strdup(group); strend(group, '#'); report_details_section(ctx, group); keys = g_key_file_get_keys(key_file, tmpgroup, NULL, NULL); gsize longest_key = 0; for (j = 0; keys[j]; j++) { gchar *lbl; key_get_components(keys[j], NULL, NULL, NULL, &lbl, NULL, TRUE); longest_key = MAX(longest_key, strlen(lbl)); g_free(lbl); } for (j = 0; keys[j]; j++) { gchar *key = keys[j]; gchar *raw_value, *value; raw_value = g_key_file_get_value(key_file, tmpgroup, key, NULL); value = g_strcompress(raw_value); /* un-escape \n, \t, etc */ if (g_utf8_validate(key, -1, NULL) && g_utf8_validate(value, -1, NULL)) { strend(key, '#'); if (g_str_equal(value, "...")) { g_free(value); if (!(value = ctx->entry->fieldfunc(key))) { value = g_strdup("..."); } } report_details_keyvalue(ctx, key, value, longest_key); } g_free(value); g_free(raw_value); } g_strfreev(keys); g_free(tmpgroup); } g_strfreev(groups); g_key_file_free(key_file); ctx->in_details = FALSE; report_details_end(ctx); } static void report_table_shell_dump(ReportContext *ctx, gchar *key_file_str, int level) { gchar *text=NULL, *p, *next_nl, *eq, *indent; gchar *key, *value; indent = g_strnfill(level * 4, ' '); if (key_file_str) { p = text = g_strdup(key_file_str); while( (next_nl = strchr(p, '\n')) ) { *next_nl = 0; eq = strchr(p, '='); if (*p != '[' && eq) { *eq = 0; key = p; value = eq + 1; ctx->output = h_strdup_cprintf("%s%s=%s\n", ctx->output, indent, key, value); if (key_wants_details(key) || params.force_all_details) { gchar *mi_tag = key_mi_tag(key); gchar *mi_data = ctx->entry->morefunc(mi_tag); /*const*/ if (mi_data) report_table_shell_dump(ctx, mi_data, level + 1); g_free(mi_tag); } } else ctx->output = h_strdup_cprintf("%s%s\n", ctx->output, indent, p); p = next_nl + 1; } } g_free(text); g_free(indent); return; } void report_table(ReportContext * ctx, gchar * text) { GKeyFile *key_file = NULL; gchar **groups; gint i; if (ctx->format == REPORT_FORMAT_SHELL) { report_table_shell_dump(ctx, text, 0); return; } key_file = g_key_file_new(); /* make only "Value" column visible ("Key" column is always visible) */ ctx->columns = REPORT_COL_VALUE; ctx->show_column_headers = FALSE; /**/ g_key_file_load_from_data(key_file, text, strlen(text), 0, NULL); groups = g_key_file_get_groups(key_file, NULL); for (i = 0; groups[i]; i++) { if (groups[i][0] == '$') { report_context_configure(ctx, key_file); break; } } for (i = 0; groups[i]; i++) { gchar *group, *tmpgroup; gchar **keys; gint j; if (groups[i][0] == '$') { continue; } group = groups[i]; tmpgroup = g_strdup(group); strend(group, '#'); report_subsubtitle(ctx, group); keys = g_key_file_get_keys(key_file, tmpgroup, NULL, NULL); gsize longest_key = 0; for (j = 0; keys[j]; j++) { gchar *lbl; key_get_components(keys[j], NULL, NULL, NULL, &lbl, NULL, TRUE); longest_key = MAX(longest_key, strlen(lbl)); g_free(lbl); } for (j = 0; keys[j]; j++) { gchar *key = keys[j]; gchar *raw_value, *value; raw_value = g_key_file_get_value(key_file, tmpgroup, key, NULL); value = g_strcompress(raw_value); /* un-escape \n, \t, etc */ if (g_utf8_validate(key, -1, NULL) && g_utf8_validate(value, -1, NULL)) { strend(key, '#'); if (g_str_equal(value, "...")) { g_free(value); if (!(value = ctx->entry->fieldfunc(key))) { value = g_strdup("..."); } } if ( key_is_flagged(key) ) { gchar *mi_tag = key_mi_tag(key); gchar *mi_data = NULL; /*const*/ if (key_wants_details(key) || params.force_all_details) mi_data = ctx->entry->morefunc(mi_tag); if (mi_data) report_details(ctx, key, value, mi_data, longest_key); else report_key_value(ctx, key, value, longest_key); g_free(mi_tag); } else { report_key_value(ctx, key, value, longest_key); } } g_free(value); g_free(raw_value); } g_strfreev(keys); g_free(tmpgroup); } g_strfreev(groups); g_key_file_free(key_file); } static void report_html_header(ReportContext * ctx) { g_free(ctx->output); ctx->output = g_strdup_printf ("\n" "\n" "HardInfo (%s) System Report\n" "\n" "\n" "\n", VERSION); } static void report_html_footer(ReportContext * ctx) { ctx->output = h_strconcat(ctx->output, "", NULL); ctx->output = h_strconcat(ctx->output, "\n", NULL); ctx->output = h_strconcat(ctx->output, "", NULL); } static void report_html_title(ReportContext * ctx, gchar * text) { if (!ctx->first_table) { ctx->output = h_strdup_cprintf("", ctx->output); } else { ctx->first_table = FALSE; } ctx->output = h_strdup_cprintf("

    %s

    ", ctx->output, text); } static void report_html_subtitle(ReportContext * ctx, gchar * text) { columns = strstr(text,"GPUs")?2:strstr(text,"Memory Device List")?4:(strstr(text,"Processor")?4:report_get_visible_columns(ctx)); if (!ctx->first_sub_table) { ctx->output = h_strdup_cprintf("", ctx->output); } else { ctx->first_sub_table = FALSE; } gchar *icon = NULL; if (ctx->entry->icon_file) { gchar *icon_class = icon_name_css_id(ctx->entry->icon_file); icon = g_strdup_printf("", icon_class); g_free(icon_class); } else { icon = g_strdup(""); } ctx->output = h_strdup_cprintf("\n", ctx->output, icon, columns, text); g_free(icon); } static void report_html_subsubtitle(ReportContext * ctx, gchar * text) { ctx->output = h_strdup_cprintf("\n", ctx->output, columns+1, text); } static void report_html_details_subsubtitle(ReportContext * ctx, gchar * text) { ctx->output = h_strdup_cprintf("\n", ctx->output, cols+1, text); } static void report_html_key_value(ReportContext * ctx, gchar *key, gchar *value, gsize longest_key) { gchar **values; gint i, mc; gboolean highlight = key_is_highlighted(key); gchar *tag = key_mi_tag(key); gchar *icon = tag ? (gchar*)g_hash_table_lookup(ctx->icon_refs, tag) : NULL; g_free(tag); /* icon from the table is const, so can be re-used without free */ if (icon) { gchar *icon_class = icon_name_css_id(icon); icon = g_strdup_printf("", icon_class); g_free(icon_class); } else icon = g_strdup(""); gchar *name = (gchar*)key_get_name(key); if (columns == 2) { ctx->output = h_strdup_cprintf("" "\n", ctx->output, highlight ? " class=\"hilight\"" : "", icon, name, value); } else { values = g_strsplit(value, "|", columns); mc = g_strv_length(values) - 1; ctx->output = h_strdup_cprintf("\n\n", ctx->output, highlight ? " class=\"hilight\"" : "", icon, name); for (i = columns-2; i >= 0; i--) { ctx->output = h_strdup_cprintf("", ctx->output, (i<=mc)?values[i]:""); } ctx->output = h_strdup_cprintf("\n", ctx->output); g_strfreev(values); } g_free(icon); } static void report_html_details_key_value(ReportContext * ctx, gchar *key, gchar *value, gsize longest_key) { gchar **values; gint i, mc; gboolean highlight = key_is_highlighted(key); gchar *tag = key_mi_tag(key); gchar *icon = tag ? (gchar*)g_hash_table_lookup(ctx->icon_refs, tag) : NULL; g_free(tag); /* icon from the table is const, so can be re-used without free */ if (icon) { gchar *icon_class = icon_name_css_id(icon); icon = g_strdup_printf("", icon_class); g_free(icon_class); } else icon = g_strdup(""); gchar *name = (gchar*)key_get_name(key); if (columns == 2) { ctx->output = h_strdup_cprintf("" "\n", ctx->output, highlight ? " class=\"hilight\"" : "", icon, name, value); } else { values = g_strsplit(value, "|", cols); mc = g_strv_length(values) - 1; ctx->output = h_strdup_cprintf("\n\n", ctx->output, highlight ? " class=\"hilight\"" : "", icon, name); for (i = cols-2; i >= 0; i--) { ctx->output = h_strdup_cprintf("", ctx->output, (i<=mc)?values[i]:""); } ctx->output = h_strdup_cprintf("\n", ctx->output); g_strfreev(values); } g_free(icon); } static void report_text_header(ReportContext * ctx) { g_free(ctx->output); ctx->output = g_strdup(""); } static void report_text_footer(ReportContext * ctx) { } static void report_text_title(ReportContext * ctx, gchar * text) { gchar *str = (gchar *) ctx->output; int i = strlen(text); str = h_strdup_cprintf("\n%s\n", str, text); for (; i; i--) str = h_strconcat(str, "*", NULL); str = h_strconcat(str, "\n\n", NULL); ctx->output = str; } static void report_text_subtitle(ReportContext * ctx, gchar * text) { gchar *str = ctx->output; int i = strlen(text); str = h_strdup_cprintf("\n%s\n", str, text); for (; i; i--) str = h_strconcat(str, "-", NULL); str = h_strconcat(str, "\n\n", NULL); ctx->output = str; } static void report_text_subsubtitle(ReportContext * ctx, gchar * text) { gchar indent[10] = " "; if (!ctx->in_details) indent[0] = 0; ctx->output = h_strdup_cprintf("%s-%s-\n", ctx->output, indent, text); } static void report_text_key_value(ReportContext * ctx, gchar *key, gchar *value, gsize longest_key) { gint columns = report_get_visible_columns(ctx); gchar **values; gint i, mc, field_width = MAX(10, longest_key); gchar indent[10] = " "; if (!ctx->in_details) indent[0] = 0; gchar field_spacer[51]; for(i = 0; i < 49; i++) field_spacer[i] = ' '; field_width = MIN(50, field_width); field_spacer[field_width] = 0; gboolean highlight = key_is_highlighted(key); gboolean multiline = (value && strlen(value) && strchr(value, '\n')); gchar *name = (gchar*)key_get_name(key); gchar *pf = g_strdup_printf("%s%s", indent, highlight ? "* " : " "); gchar *rjname = g_strdup(field_spacer); if (strlen(name) > strlen(rjname)) name[strlen(rjname)] = 0; strcpy(rjname + strlen(rjname) - strlen(name), name); if (columns == 2 || ctx->in_details) { if (strlen(value)) { if (multiline) { gchar **lines = g_strsplit(value, "\n", 0); for(i=0; lines[i]; i++) { if (i == 0) ctx->output = h_strdup_cprintf("%s%s : %s\n", ctx->output, pf, rjname, lines[i]); else ctx->output = h_strdup_cprintf("%s%s %s\n", ctx->output, pf, field_spacer, lines[i]); } g_strfreev(lines); } else { ctx->output = h_strdup_cprintf("%s%s : %s\n", ctx->output, pf, rjname, value); } } else ctx->output = h_strdup_cprintf("%s%s\n", ctx->output, pf, rjname); } else { values = g_strsplit(value, "|", columns); mc = g_strv_length(values) - 1; ctx->output = h_strdup_cprintf("%s%s", ctx->output, pf, rjname); for (i = mc; i >= 0; i--) { ctx->output = h_strdup_cprintf("\t%s", ctx->output, values[i]); } ctx->output = h_strdup_cprintf("\n", ctx->output); g_strfreev(values); } g_free(pf); } static GSList *report_create_module_list_from_dialog(ReportDialog * rd) { ShellModule *module; GSList *modules = NULL; GtkTreeModel *model = rd->model; GtkTreeIter iter; gtk_tree_model_get_iter_first(model, &iter); do { gboolean selected; gchar *name; gtk_tree_model_get(model, &iter, TREE_COL_SEL, &selected, -1); if (!selected) continue; module = g_new0(ShellModule, 1); gtk_tree_model_get(model, &iter, TREE_COL_NAME, &name, -1); module->name = name; module->entries = NULL; if (gtk_tree_model_iter_has_child(model, &iter)) { ShellModuleEntry *entry; gint children = gtk_tree_model_iter_n_children(model, &iter); gint i; for (i = 0; i < children; i++) { GtkTreeIter child; gtk_tree_model_iter_nth_child(model, &child, &iter, i); gtk_tree_model_get(model, &child, TREE_COL_SEL, &selected, -1); if (!selected) continue; gtk_tree_model_get(model, &child, TREE_COL_MODULE_ENTRY, &entry, -1); module->entries = g_slist_append(module->entries, entry); } } modules = g_slist_append(modules, module); } while (gtk_tree_model_iter_next(rd->model, &iter)); return modules; } static void report_create_inner_from_module_list(ReportContext * ctx, GSList * modules) { for (; modules; modules = modules->next) { ShellModule *module = (ShellModule *) modules->data; GSList *entries; if (!params.gui_running && !params.quiet) fprintf(stderr, "\033[40;32m%s\033[0m\n", module->name); report_title(ctx, module->name); for (entries = module->entries; entries; entries = entries->next) { ShellModuleEntry *entry = (ShellModuleEntry *) entries->data; if (entry->flags & MODULE_FLAG_HIDE) continue; if (!params.gui_running && !params.quiet) fprintf(stderr, "\033[2K\033[40;32;1m %s\033[0m\n", entry->name); if (entry->icon_file){ cache_icon(ctx, entry->icon_file); } ctx->entry = entry; report_subtitle(ctx, entry->name); module_entry_scan(entry); report_table(ctx, module_entry_function(entry)); } } } void report_module_list_free(GSList * modules) { GSList *m; for (m = modules; m; m = m->next) { ShellModule *module = (ShellModule *) m->data; g_slist_free(module->entries); } g_slist_free(modules); } static gchar *report_get_filename(void) { GtkWidget *dialog; gchar *filename = NULL; #if GTK_CHECK_VERSION(3, 0, 0) dialog = gtk_file_chooser_dialog_new(_("Save File"), NULL, GTK_FILE_CHOOSER_ACTION_SAVE, _("_Cancel"), GTK_RESPONSE_CANCEL, _("_Save"), GTK_RESPONSE_ACCEPT, NULL); #else dialog = gtk_file_chooser_dialog_new(_("Save File"), NULL, GTK_FILE_CHOOSER_ACTION_SAVE, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, NULL); #endif gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(dialog), "hardinfo2_report"); file_chooser_add_filters(dialog, file_types); file_chooser_open_expander(dialog); if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) { gchar *ext = file_chooser_get_extension(dialog, file_types); filename = file_chooser_build_filename(dialog, ext); } gtk_widget_destroy(dialog); return filename; } ReportContext *report_context_html_new() { ReportContext *ctx; ctx = g_new0(ReportContext, 1); ctx->header = report_html_header; ctx->footer = report_html_footer; ctx->title = report_html_title; ctx->subtitle = report_html_subtitle; ctx->subsubtitle = report_html_subsubtitle; ctx->keyvalue = report_html_key_value; ctx->details_start = report_html_details_start; ctx->details_section = report_html_details_subsubtitle; ctx->details_keyvalue = report_html_details_key_value; ctx->details_end = report_html_details_end; ctx->output = g_strdup(""); ctx->format = REPORT_FORMAT_HTML; ctx->column_titles = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free); ctx->first_sub_table = TRUE; ctx->first_table = TRUE; ctx->icon_data = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free); return ctx; } ReportContext *report_context_text_new() { ReportContext *ctx; ctx = g_new0(ReportContext, 1); ctx->header = report_text_header; ctx->footer = report_text_footer; ctx->title = report_text_title; ctx->subtitle = report_text_subtitle; ctx->subsubtitle = report_text_subsubtitle; ctx->keyvalue = report_text_key_value; ctx->details_start = report_text_key_value; ctx->details_section = report_text_subsubtitle; ctx->details_keyvalue = report_text_key_value; ctx->details_end = report_text_footer; /* nothing */ ctx->output = g_strdup(""); ctx->format = REPORT_FORMAT_TEXT; ctx->column_titles = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free); ctx->first_table = TRUE; ctx->first_sub_table = TRUE; return ctx; } ReportContext *report_context_shell_new() { ReportContext *ctx; ctx = g_new0(ReportContext, 1); ctx->header = report_text_header; ctx->footer = report_text_footer; ctx->title = report_text_title; ctx->subtitle = report_text_subtitle; /* special format handled in report_table(), * doesn't need the others. */ ctx->output = g_strdup(""); ctx->format = REPORT_FORMAT_SHELL; ctx->column_titles = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free); ctx->first_table = TRUE; ctx->first_sub_table = TRUE; return ctx; } void report_context_free(ReportContext * ctx) { g_hash_table_destroy(ctx->column_titles); if(ctx->icon_refs) g_hash_table_destroy(ctx->icon_refs); if(ctx->icon_data) g_hash_table_destroy(ctx->icon_data); g_free(ctx->output); g_free(ctx); } void report_create_from_module_list(ReportContext * ctx, GSList * modules) { if (ctx->format == REPORT_FORMAT_HTML) params.fmt_opts = FMT_OPT_HTML; report_header(ctx); report_create_inner_from_module_list(ctx, modules); report_module_list_free(modules); report_footer(ctx); } gchar *report_create_from_module_list_format(GSList * modules, ReportFormat format) { ReportContext *(*create_context) (); ReportContext *ctx; gchar *retval; if (format >= N_REPORT_FORMAT) return NULL; create_context = file_types[format].data; if (!create_context) return NULL; ctx = create_context(); report_create_from_module_list(ctx, modules); retval = g_strdup(ctx->output); report_context_free(ctx); return retval; } static gboolean report_generate(ReportDialog * rd) { GSList *modules; ReportContext *ctx; ReportContext *(*create_context) (); gchar *file; FILE *stream; int old_fmt_opts = params.fmt_opts; params.fmt_opts = FMT_OPT_NONE; if (!(file = report_get_filename())) return FALSE; if (!(stream = fopen(file, "w+"))) { g_free(file); return FALSE; } create_context = file_types_get_data_by_name(file_types, file); if (!create_context) { g_warning(_("Cannot create ReportContext. Programming bug?")); g_free(file); fclose(stream); params.fmt_opts = old_fmt_opts; return FALSE; } ctx = create_context(); modules = report_create_module_list_from_dialog(rd); report_create_from_module_list(ctx, modules); fputs(ctx->output, stream); fclose(stream); if (ctx->format == REPORT_FORMAT_HTML) { GtkWidget *dialog; dialog = gtk_message_dialog_new(GTK_WINDOW(shell_get_main_shell()->window), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION, GTK_BUTTONS_NONE, _("Open the report with your web browser?")); #if GTK_CHECK_VERSION(3, 0, 0) gtk_dialog_add_buttons(GTK_DIALOG(dialog), _("_No"), GTK_RESPONSE_REJECT, _("_Open"), GTK_RESPONSE_ACCEPT, NULL); #else gtk_dialog_add_buttons(GTK_DIALOG(dialog), GTK_STOCK_NO, GTK_RESPONSE_REJECT, GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL); #endif if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) { gchar *temp; temp = g_strdup_printf("file://%s", file); uri_open(temp); g_free(temp); } gtk_widget_destroy(dialog); } report_context_free(ctx); g_free(file); params.fmt_opts = old_fmt_opts; return TRUE; } void report_dialog_show(GtkTreeModel * model, GtkWidget * parent) { gboolean success; ReportDialog *rd = report_dialog_new(model, parent); if (gtk_dialog_run(GTK_DIALOG(rd->dialog)) == GTK_RESPONSE_ACCEPT) { shell_status_update(_("Generating report...")); gtk_widget_hide(rd->dialog); shell_view_set_enabled(FALSE); shell_status_set_enabled(TRUE); success = report_generate(rd); shell_status_set_enabled(FALSE); if (success) shell_status_update(_("Report saved.")); else shell_status_update(_("Error while creating the report.")); } set_all_active(rd, FALSE); gtk_widget_destroy(rd->dialog); g_free(rd); } static void set_children_active(GtkTreeModel * model, GtkTreeIter * iter, gboolean setting) { if (gtk_tree_model_iter_has_child(model, iter)) { gint children = gtk_tree_model_iter_n_children(model, iter); gtk_tree_store_set(GTK_TREE_STORE(model), iter, TREE_COL_SEL, setting, -1); for (children--; children >= 0; children--) { GtkTreeIter child; gtk_tree_model_iter_nth_child(model, &child, iter, children); gtk_tree_store_set(GTK_TREE_STORE(model), &child, TREE_COL_SEL, setting, -1); } } } static void set_all_active(ReportDialog * rd, gboolean setting) { GtkTreeIter iter; GtkTreeModel *model = rd->model; gtk_tree_model_get_iter_first(model, &iter); do { set_children_active(model, &iter, setting); } while (gtk_tree_model_iter_next(model, &iter)); } static void report_dialog_sel_none(GtkWidget * widget, ReportDialog * rd) { set_all_active(rd, FALSE); } static void report_dialog_sel_all(GtkWidget * widget, ReportDialog * rd) { set_all_active(rd, TRUE); } static void report_dialog_sel_toggle(GtkCellRendererToggle * cellrenderertoggle, gchar * path_str, ReportDialog * rd) { GtkTreeModel *model = rd->model; GtkTreeIter iter; GtkTreePath *path = gtk_tree_path_new_from_string(path_str); gboolean active; gtk_tree_model_get_iter(model, &iter, path); gtk_tree_model_get(model, &iter, TREE_COL_SEL, &active, -1); active = !active; gtk_tree_store_set(GTK_TREE_STORE(model), &iter, TREE_COL_SEL, active, -1); set_children_active(model, &iter, active); if (active) { GtkTreeIter parent; if (gtk_tree_model_iter_parent(model, &parent, &iter)) { gtk_tree_store_set(GTK_TREE_STORE(model), &parent, TREE_COL_SEL, active, -1); } } gtk_tree_path_free(path); } static ReportDialog * report_dialog_new(GtkTreeModel * model, GtkWidget * parent) { ReportDialog *rd; GtkWidget *dialog; GtkWidget *dialog1_vbox; GtkWidget *scrolledwindow2; GtkWidget *treeview2; GtkWidget *vbuttonbox3; GtkWidget *button3; GtkWidget *button6; GtkWidget *dialog1_action_area; GtkWidget *button8; GtkWidget *button7; GtkWidget *label; GtkWidget *hbox; GtkTreeViewColumn *column; GtkCellRenderer *cr_text, *cr_pbuf, *cr_toggle; rd = g_new0(ReportDialog, 1); dialog = gtk_dialog_new(); gtk_window_set_title(GTK_WINDOW(dialog), _("Generate Report")); gtk_container_set_border_width(GTK_CONTAINER(dialog), 5); gtk_window_set_icon(GTK_WINDOW(dialog), icon_cache_get_pixbuf("report.svg")); gtk_window_set_default_size(GTK_WINDOW(dialog), 420*params.scale, 260*params.scale); gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(parent)); gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_CENTER_ON_PARENT); gtk_window_set_type_hint(GTK_WINDOW(dialog), GDK_WINDOW_TYPE_HINT_DIALOG); #if GTK_CHECK_VERSION(2, 14, 0) dialog1_vbox = gtk_dialog_get_content_area(GTK_DIALOG(dialog)); #else dialog1_vbox = GTK_DIALOG(dialog)->vbox; #endif gtk_box_set_spacing(GTK_BOX(dialog1_vbox), 5); gtk_container_set_border_width(GTK_CONTAINER(dialog1_vbox), 4); gtk_widget_show(dialog1_vbox); #if GTK_CHECK_VERSION(3, 0, 0) hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5); #else hbox = gtk_hbox_new(FALSE, 5); #endif gtk_box_pack_start(GTK_BOX(dialog1_vbox), hbox, FALSE, FALSE, 0); label = gtk_label_new(_("Generate Report\n" "Please choose the information that you wish " "to view in your report:")); gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); gtk_label_set_use_markup(GTK_LABEL(label), TRUE); #if GTK_CHECK_VERSION(3, 0, 0) gtk_widget_set_valign(label, GTK_ALIGN_CENTER); #else gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); #endif gtk_box_pack_start(GTK_BOX(hbox), icon_cache_get_image_at_size("report.svg", 64, 64), FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, TRUE, 0); gtk_widget_show_all(hbox); #if GTK_CHECK_VERSION(3, 0, 0) hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5); #else hbox = gtk_hbox_new(FALSE, 5); #endif gtk_box_pack_start(GTK_BOX(dialog1_vbox), hbox, TRUE, TRUE, 0); gtk_widget_show(hbox); scrolledwindow2 = gtk_scrolled_window_new(NULL, NULL); gtk_widget_show(scrolledwindow2); gtk_box_pack_start(GTK_BOX(hbox), scrolledwindow2, TRUE, TRUE, 0); gtk_widget_set_size_request(scrolledwindow2, -1, 200); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwindow2), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW (scrolledwindow2), GTK_SHADOW_IN); treeview2 = gtk_tree_view_new_with_model(model); gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(treeview2), FALSE); gtk_widget_show(treeview2); gtk_container_add(GTK_CONTAINER(scrolledwindow2), treeview2); column = gtk_tree_view_column_new(); gtk_tree_view_append_column(GTK_TREE_VIEW(treeview2), column); cr_toggle = gtk_cell_renderer_toggle_new(); gtk_tree_view_column_pack_start(column, cr_toggle, FALSE); g_signal_connect(cr_toggle, "toggled", G_CALLBACK(report_dialog_sel_toggle), rd); gtk_tree_view_column_add_attribute(column, cr_toggle, "active", TREE_COL_SEL); cr_pbuf = gtk_cell_renderer_pixbuf_new(); gtk_tree_view_column_pack_start(column, cr_pbuf, FALSE); gtk_tree_view_column_add_attribute(column, cr_pbuf, "pixbuf", TREE_COL_PBUF); cr_text = gtk_cell_renderer_text_new(); gtk_tree_view_column_pack_start(column, cr_text, TRUE); gtk_tree_view_column_add_attribute(column, cr_text, "markup", TREE_COL_NAME); #if GTK_CHECK_VERSION(3, 0, 0) vbuttonbox3 = gtk_button_box_new(GTK_ORIENTATION_VERTICAL); #else vbuttonbox3 = gtk_vbutton_box_new(); #endif gtk_widget_show(vbuttonbox3); gtk_box_pack_start(GTK_BOX(hbox), vbuttonbox3, FALSE, TRUE, 0); gtk_box_set_spacing(GTK_BOX(vbuttonbox3), 5); gtk_button_box_set_layout(GTK_BUTTON_BOX(vbuttonbox3), GTK_BUTTONBOX_START); button3 = gtk_button_new_with_mnemonic(_("Select _None")); gtk_widget_show(button3); gtk_container_add(GTK_CONTAINER(vbuttonbox3), button3); #if GTK_CHECK_VERSION(2, 18, 0) gtk_widget_set_can_default(button3, TRUE); #else GTK_WIDGET_SET_FLAGS(button3, GTK_CAN_DEFAULT); #endif g_signal_connect(button3, "clicked", G_CALLBACK(report_dialog_sel_none), rd); button6 = gtk_button_new_with_mnemonic(_("Select _All")); gtk_widget_show(button6); gtk_container_add(GTK_CONTAINER(vbuttonbox3), button6); #if GTK_CHECK_VERSION(2, 18, 0) gtk_widget_set_can_default(button6, TRUE); #else GTK_WIDGET_SET_FLAGS(button6, GTK_CAN_DEFAULT); #endif g_signal_connect(button6, "clicked", G_CALLBACK(report_dialog_sel_all), rd); #if GTK_CHECK_VERSION(2, 14, 0) /* TODO:GTK3 * [https://developer.gnome.org/gtk3/stable/GtkDialog.html#gtk-dialog-get-action-area] * gtk_dialog_get_action_area has been deprecated since version 3.12 and should not be used in newly-written code. * Direct access to the action area is discouraged; use gtk_dialog_add_button(), etc. */ dialog1_action_area = gtk_dialog_get_content_area(GTK_DIALOG(dialog)); #else dialog1_action_area = GTK_DIALOG(dialog)->action_area; #endif gtk_widget_show(dialog1_action_area); button8 = gtk_button_new_with_mnemonic(_("_Cancel")); gtk_widget_show(button8); gtk_dialog_add_action_widget(GTK_DIALOG(dialog), button8, GTK_RESPONSE_CANCEL); #if GTK_CHECK_VERSION(2, 18, 0) gtk_widget_set_can_default(button8, TRUE); #else GTK_WIDGET_SET_FLAGS(button8, GTK_CAN_DEFAULT); #endif button7 = gtk_button_new_with_mnemonic(_("_Generate")); gtk_widget_show(button7); gtk_dialog_add_action_widget(GTK_DIALOG(dialog), button7, GTK_RESPONSE_ACCEPT); #if GTK_CHECK_VERSION(2, 18, 0) gtk_widget_set_can_default(button7, TRUE); #else GTK_WIDGET_SET_FLAGS(button7, GTK_CAN_DEFAULT); #endif rd->dialog = dialog; rd->btn_cancel = button8; rd->btn_generate = button7; rd->btn_sel_all = button6; rd->btn_sel_none = button3; rd->treeview = treeview2; rd->model = model; gtk_tree_view_collapse_all(GTK_TREE_VIEW(treeview2)); set_all_active(rd, TRUE); return rd; } hardinfo2-hardinfo2-1331e88/shell/shell.c000066400000000000000000002335211474767047500201330ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #define _GNU_SOURCE #include #include #include #include #include #include #include "config.h" #include "hardinfo.h" #include "shell.h" #include "syncmanager.h" #include "iconcache.h" #include "menu.h" #include "stock.h" #include "uri_handler.h" #include "callbacks.h" struct UpdateTableItem { union { GtkWidget *widget; GtkTreeIter *iter; }; gboolean is_iter; }; /* * Internal Prototypes ******************************************************** */ static void create_window(void); static ShellTree *tree_new(void); static ShellInfoTree *info_tree_new(void); static void module_selected(gpointer data); static void module_selected_show_info(ShellModuleEntry * entry, gboolean reload); static void info_selected(GtkTreeSelection * ts, gpointer data); static void info_selected_show_extra(const gchar *tag); static gboolean reload_section(gpointer data); static gboolean rescan_section(gpointer data); static gboolean update_field(gpointer data); static GSettings *settings=NULL; /* * Globals ******************************************************************** */ static Shell *shell = NULL; static GHashTable *update_tbl = NULL; static GSList *update_sfusrc = NULL; gchar *lginterval = NULL; /* * Code :) ******************************************************************** */ Shell *shell_get_main_shell(void) { return shell; } void shell_ui_manager_set_visible(const gchar * path, gboolean setting) { GtkWidget *widget; if (!params.gui_running) return; widget = gtk_ui_manager_get_widget(shell->ui_manager, path); if (!widget) return; if (setting) gtk_widget_show(widget); else gtk_widget_hide(widget); } void shell_clear_tree_models(Shell *shell) { gtk_tree_store_clear(GTK_TREE_STORE(shell->tree->model)); gtk_tree_store_clear(GTK_TREE_STORE(shell->info_tree->model)); gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(shell->info_tree->view), FALSE); } void shell_clear_timeouts(Shell *shell) { h_hash_table_remove_all(update_tbl); } void shell_action_set_property(const gchar * action_name, const gchar * property, gboolean setting) { GtkAction *action; if (!params.gui_running) return; action = gtk_action_group_get_action(shell->action_group, action_name); if (action) { GValue value = { 0 }; g_value_init(&value, G_TYPE_BOOLEAN); g_value_set_boolean(&value, setting); g_object_set_property(G_OBJECT(action), property, &value); g_value_unset(&value); } } void shell_action_set_label(const gchar * action_name, gchar * label) { #if GTK_CHECK_VERSION(2,16,0) if (params.gui_running && shell->action_group) { GtkAction *action; action = gtk_action_group_get_action(shell->action_group, action_name); if (action) gtk_action_set_label(action, label); } #endif } void shell_action_set_enabled(const gchar * action_name, gboolean setting) { if (params.gui_running && shell->action_group) { GtkAction *action; action = gtk_action_group_get_action(shell->action_group, action_name); if (action) gtk_action_set_sensitive(action, setting); } } gboolean shell_action_get_enabled(const gchar * action_name) { GtkAction *action; if (!params.gui_running) return FALSE; action = gtk_action_group_get_action(shell->action_group, action_name); if (action) return gtk_action_get_sensitive(action); return FALSE; } void shell_set_side_pane_visible(gboolean setting) { if (!params.gui_running) return; if (setting) gtk_widget_show(shell->tree->scroll); else gtk_widget_hide(shell->tree->scroll); } gboolean shell_action_get_active(const gchar * action_name) { GtkAction *action; GSList *proxies; if (!params.gui_running) return FALSE; action = gtk_action_group_get_action(shell->action_group, action_name); if (action) { proxies = gtk_action_get_proxies(action); for (; proxies; proxies = proxies->next) { GtkWidget *widget = (GtkWidget *) proxies->data; if (GTK_IS_CHECK_MENU_ITEM(widget)) { return gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM (widget)); } } } return FALSE; } void shell_action_set_active(const gchar * action_name, gboolean setting) { GtkAction *action; GSList *proxies; if (!params.gui_running) return; action = gtk_action_group_get_action(shell->action_group, action_name); if (action) { proxies = gtk_action_get_proxies(action); for (; proxies; proxies = proxies->next) { GtkWidget *widget = (GtkWidget *) proxies->data; if (GTK_IS_CHECK_MENU_ITEM(widget)) { gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(widget), setting); return; } } } } void shell_status_pulse(void) { if (params.gui_running) { if (shell->_pulses++ == 5) { /* we're pulsing for some time, disable the interface and change the cursor to a hourglass */ shell_view_set_enabled(FALSE); } gtk_progress_bar_pulse(GTK_PROGRESS_BAR(shell->progress)); while (gtk_events_pending()) gtk_main_iteration(); } else if (!params.quiet) { static gint counter = 0; fprintf(stderr, "\033[2K\033[40;37;1m %c\033[0m\r", "|/-\\"[counter++ % 4]); } } void shell_status_set_percentage(gint percentage) { if (params.gui_running) { gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(shell->progress), (float) percentage / 100.0); while (gtk_events_pending()) gtk_main_iteration(); } else if (!params.quiet) { if (percentage < 1 || percentage >= 100) { fprintf(stderr, "\033[2K"); } else { gchar pbar[] = "----------"; memset(pbar, '#', percentage / 10); fprintf(stderr, "\r\033[40;37;1m%3d%% \033[40;34;1m" "%s\033[0m\r", percentage, pbar); } } } void shell_view_set_enabled(gboolean setting) { //DEBUG("SHELL_VIEW=%s\n",setting?"Normal":"Busy"); if (!params.gui_running) return; if (setting) { shell->_pulses = 0; widget_set_cursor(shell->window, GDK_LEFT_PTR); } else { widget_set_cursor(shell->window, GDK_WATCH); } gtk_widget_set_sensitive(shell->hbox, setting); shell_action_set_enabled("ViewMenuAction", setting); shell_action_set_enabled("RefreshAction", setting); //shell_action_set_enabled("CopyAction", setting); shell_action_set_enabled("ReportAction", setting); shell_action_set_enabled("SyncManagerAction", setting && sync_manager_count_entries() > 0); } void shell_status_set_enabled(gboolean setting) { //DEBUG("SHELL_STATUS=%d\n",setting?1:0); if (!params.gui_running) return; if (setting) gtk_widget_show(shell->progress); else { gtk_widget_hide(shell->progress); shell_view_set_enabled(TRUE); shell_status_update(_("Done.")); } } void shell_do_reload(gboolean reload) { if (!params.gui_running || !shell->selected) return; shell_action_set_enabled("RefreshAction", FALSE); //shell_action_set_enabled("CopyAction", FALSE); shell_action_set_enabled("ReportAction", FALSE); shell_status_set_enabled(TRUE); params.aborting_benchmarks=0; if(reload) module_entry_reload(shell->selected); if(!params.aborting_benchmarks) { module_selected(NULL); } else { shell_status_update("Ready."); shell_status_set_enabled(FALSE); } params.aborting_benchmarks=0; shell_action_set_enabled("RefreshAction", TRUE); //shell_action_set_enabled("CopyAction", TRUE); shell_action_set_enabled("ReportAction", TRUE); } void shell_status_update(const gchar * message) { //DEBUG("Shell_status_update %s",message); if (params.gui_running) { gtk_label_set_markup(GTK_LABEL(shell->status), message); gtk_progress_bar_set_pulse_step(GTK_PROGRESS_BAR(shell->progress),1); gtk_progress_bar_pulse(GTK_PROGRESS_BAR(shell->progress)); //gtk_widget_set_sensitive(shell->window, TRUE); //gtk_window_set_focus(shell->window,); //gtk_widget_grab_focus(shell->window); //gtk_widget_activate(shell->window); //gtk_window_get_focus_visible(shell->window); while (gtk_events_pending()) gtk_main_iteration(); } else if (!params.quiet) { fprintf(stderr, "\033[2K\033[40;37;1m %s\033[0m\r", message); } } static void destroy_me(void) { cb_quit(); } #if GTK_CHECK_VERSION(3, 0, 0) int update=0; int schemeDark=0; int changed2dark=0; int newgnome=0; static void stylechange2_me(void) { if(update==1){ GtkStyleContext *sctx=gtk_widget_get_style_context(GTK_WIDGET(shell->window)); GdkRGBA color; gtk_style_context_lookup_color(sctx, "theme_bg_color", &color); gint darkmode=0; if((color.red+color.green+color.blue)<=1.5) darkmode=1; // if(schemeDark && (!darkmode) ) { if(newgnome){ darkmode=1; //g_print("We need to change GTK_THEME to dark\n"); GtkSettings *set; set=gtk_settings_get_default(); g_object_set(set,"gtk-theme-name","HighContrastInverse", NULL); changed2dark=1; } } if( (!schemeDark) && darkmode && changed2dark ) { if(newgnome){ darkmode=0; //g_print("We need to change GTK_THEME to light\n"); GtkSettings *set; set=gtk_settings_get_default(); g_object_set(set,"gtk-theme-name","Adwaita", NULL); changed2dark=0; } } // if(darkmode!=params.darkmode){ params.darkmode=darkmode; //g_print("COLOR %f %f %f, schemeDark=%i -> DARKMODE=%d\n",color.red,color.green,color.blue,schemeDark, params.darkmode); //update theme cb_disable_theme(); } // } update=0; } //gsettings static void stylechange3_me(void) { gchar *theme=NULL,*scale=NULL; int newDark=0,i=0; gchar **keys=NULL; if(settings && !newgnome) keys=g_settings_list_keys(settings); while(!newgnome && keys && (keys[i]!=NULL)){ if(strcmp(keys[i],"color-scheme")==0) newgnome=1; g_free(keys[i]); i++; } //check Adwaita as new gnome uses it - but new mate/budgie does not //theme = g_settings_get_string(settings, "gtk-theme"); //if(!strstr(theme,"Adwaita")) newgnome=0; //new gnome using only normal/dark mode if(settings){ //FIXME get dynamic scaling info //scale=g_settings_get_string(settings, "text-scaling-factor"); //if(scale) sscanf(scale,"%f",¶ms.scale); if(newgnome){ theme = g_settings_get_string(settings, "color-scheme"); if(strstr(theme,"Dark")||strstr(theme,"dark")) newDark=1; } else {//older gnome using themes with dark in theme-name theme = g_settings_get_string(settings, "gtk-theme");//normal if(strstr(theme,"Dark")||strstr(theme,"dark")) newDark=1; g_free(theme); theme = g_settings_get_string(settings, "icon-theme");//alternative if(strstr(theme,"Dark")||strstr(theme,"dark")) newDark=1; } g_free(theme); } // if(newDark){ if(schemeDark!=1) if(!update) update=1; schemeDark=1; }else{ if(schemeDark!=0) if(!update) update=1; schemeDark=0; } //g_print("schemeDark=%i -> Update=%d\n",schemeDark,update); shell_do_reload(false); stylechange2_me(); } //GTK-signal static void stylechange_me(void) { update=1; //g_print("GTK style signal -> Update=%d\n",update); } #endif static void close_note(GtkWidget * widget, gpointer user_data) { gtk_widget_hide(shell->note->event_box); } static ShellNote *note_new(void) { ShellNote *note; GtkWidget *hbox, *icon, *button; GtkWidget *border_box; GdkColor info_default_border_color = { 0, 0x0000, 0xad00, 0x9d00 }; note = g_new0(ShellNote, 1); note->label = gtk_label_new(""); note->event_box = gtk_event_box_new(); button = gtk_button_new(); border_box = gtk_event_box_new(); gtk_container_set_border_width(GTK_CONTAINER(border_box), 1); gtk_container_add(GTK_CONTAINER(note->event_box), border_box); gtk_widget_show(border_box); #if GTK_CHECK_VERSION(3, 0, 0) GdkRGBA info_default_text_color = { .red = 1, .green = 1, .blue = 1, .alpha = 1.0 }; gtk_widget_override_color(note->label, GTK_STATE_FLAG_NORMAL, &info_default_text_color); #else GdkColor info_default_text_color = { 0, 0xffff, 0xffff, 0xffff }; gtk_widget_modify_fg(note->label, GTK_STATE_NORMAL, &info_default_text_color); #endif if(params.darkmode){ GdkColor info_default_fill_color = { 0, 0x4000*1.1, 0x6000*1.1, 0xff00 }; gtk_widget_modify_bg(border_box, GTK_STATE_NORMAL, &info_default_fill_color); } else { GdkColor info_default_fill_color = { 0, 0x4000*0.9, 0x6000*0.9, 0xff00 }; gtk_widget_modify_bg(border_box, GTK_STATE_NORMAL, &info_default_fill_color); } gtk_widget_modify_bg(note->event_box, GTK_STATE_NORMAL, &info_default_border_color); icon = icon_cache_get_image_at_size("close.svg", 16, 16); gtk_widget_show(icon); gtk_container_add(GTK_CONTAINER(button), icon); gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE); g_signal_connect(G_OBJECT(button), "clicked", (GCallback) close_note, NULL); #if GTK_CHECK_VERSION(3, 0, 0) hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 3); #else hbox = gtk_hbox_new(FALSE, 3); #endif icon = icon_cache_get_image("dialog-information.svg"); gtk_box_pack_start(GTK_BOX(hbox), icon, FALSE, FALSE, 4); gtk_box_pack_start(GTK_BOX(hbox), note->label, FALSE, FALSE, 0); gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(hbox), 2); gtk_container_add(GTK_CONTAINER(border_box), hbox); gtk_widget_show_all(hbox); return note; } void shell_set_title(Shell *shell, gchar *subtitle) { if (subtitle) { gchar *tmp; tmp = g_strdup_printf(_("%s - System Information and Benchmark"), subtitle); gtk_window_set_title(GTK_WINDOW(shell->window), tmp); g_free(tmp); } else { gtk_window_set_title(GTK_WINDOW(shell->window), _("System Information and Benchmark")); } } static void create_window(void) { GtkWidget *vbox, *hbox; shell = g_new0(Shell, 1); shell->window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_icon(GTK_WINDOW(shell->window), icon_cache_get_pixbuf("hardinfo2.svg")); shell_set_title(shell, NULL); gtk_window_set_default_size(GTK_WINDOW(shell->window), 1280*params.scale, 800*params.scale); g_signal_connect(G_OBJECT(shell->window), "destroy", destroy_me, NULL); #if GTK_CHECK_VERSION(3, 0, 0) g_signal_connect(G_OBJECT(shell->window), "style-updated", stylechange_me, NULL); g_signal_connect_after(G_OBJECT(shell->window), "draw", stylechange2_me, NULL); update=-1; if(g_settings_schema_source_lookup(g_settings_schema_source_get_default(),"org.gnome.desktop.interface",FALSE)) settings=g_settings_new("org.gnome.desktop.interface"); if(settings) g_signal_connect_after(settings,"changed",stylechange3_me,NULL); stylechange3_me(); update=0; #endif #if GTK_CHECK_VERSION(3, 0, 0) vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); #else vbox = gtk_vbox_new(FALSE, 0); #endif gtk_widget_show(vbox); gtk_container_add(GTK_CONTAINER(shell->window), vbox); shell->vbox = vbox; menu_init(shell); #if GTK_CHECK_VERSION(3, 0, 0) hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5); #else hbox = gtk_hbox_new(FALSE, 5); #endif gtk_widget_show(hbox); gtk_box_pack_end(GTK_BOX(vbox), hbox, FALSE, FALSE, 3); shell->progress = gtk_progress_bar_new(); //gtk_widget_set_size_request(shell->progress, 80, 10); #if GTK_CHECK_VERSION(3, 0, 0) gtk_widget_set_valign(GTK_WIDGET(shell->progress), GTK_ALIGN_CENTER); #else gtk_misc_set_alignment(GTK_MISC(shell->progress), 0.0, 0.5); #endif gtk_widget_hide(shell->progress); gtk_box_pack_end(GTK_BOX(hbox), shell->progress, FALSE, FALSE, 5); shell->status = gtk_label_new("Starting..."); #if GTK_CHECK_VERSION(3, 0, 0) gtk_widget_set_valign(GTK_WIDGET(shell->status), GTK_ALIGN_CENTER); #else gtk_misc_set_alignment(GTK_MISC(shell->status), 0.0, 0.5); #endif gtk_widget_show(shell->status); gtk_box_pack_start(GTK_BOX(hbox), shell->status, FALSE, FALSE, 5); #if GTK_CHECK_VERSION(3, 0, 0) shell->hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5); #else shell->hbox = gtk_hbox_new(FALSE, 5); #endif gtk_widget_show(shell->hbox); gtk_box_pack_end(GTK_BOX(vbox), shell->hbox, TRUE, TRUE, 0); #if GTK_CHECK_VERSION(3, 0, 0) vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 5); #else vbox = gtk_vbox_new(FALSE, 5); #endif gtk_widget_show(vbox); gtk_box_pack_end(GTK_BOX(shell->hbox), vbox, TRUE, TRUE, 0); shell->note = note_new(); gtk_box_pack_end(GTK_BOX(vbox), shell->note->event_box, FALSE, FALSE, 0); #if GTK_CHECK_VERSION(3, 0, 0) shell->vpaned = gtk_paned_new(GTK_ORIENTATION_VERTICAL); #else shell->vpaned = gtk_vpaned_new(); #endif gtk_box_pack_start(GTK_BOX(vbox), shell->vpaned, TRUE, TRUE, 0); gtk_widget_show(shell->vpaned); shell->notebook = gtk_notebook_new(); gtk_paned_add2(GTK_PANED(shell->vpaned), shell->notebook); GKeyFile *key_file = g_key_file_new(); gchar *conf_path = g_build_filename(g_get_user_config_dir(), "hardinfo2","settings.ini", NULL); g_key_file_load_from_file(key_file, conf_path, G_KEY_FILE_KEEP_COMMENTS | G_KEY_FILE_KEEP_TRANSLATIONS, NULL); params.theme = g_key_file_get_integer(key_file, "Theme", "ThemeNumber", NULL); if(params.theme==0) params.theme=1; if(params.theme<-1) params.theme=-1; if(params.theme>6) params.theme=-1; g_free(conf_path); g_key_file_free(key_file); #if GTK_CHECK_VERSION(3, 0, 0) if(params.theme==-1) shell_action_set_active("DisableThemeAction", TRUE); if(params.theme==1) shell_action_set_active("Theme1Action", TRUE); if(params.theme==2) shell_action_set_active("Theme2Action", TRUE); if(params.theme==3) shell_action_set_active("Theme3Action", TRUE); if(params.theme==4) shell_action_set_active("Theme4Action", TRUE); if(params.theme==5) shell_action_set_active("Theme5Action", TRUE); if(params.theme==6) shell_action_set_active("Theme6Action", TRUE); #endif gtk_widget_show(shell->window); } static void view_menu_select_entry(gpointer data, gpointer data2) { GtkTreePath *path; GtkTreeIter *iter = (GtkTreeIter *) data2; path = gtk_tree_model_get_path(shell->tree->model, iter); gtk_tree_selection_select_path(shell->tree->selection, path); gtk_tree_view_set_cursor(GTK_TREE_VIEW(shell->tree->view), path, NULL, FALSE); gtk_tree_path_free(path); } void shell_add_modules_to_gui(gpointer _shell_module, gpointer _shell_tree) { ShellModule *module = (ShellModule *) _shell_module; ShellTree *shelltree = (ShellTree *) _shell_tree; GtkTreeStore *store = GTK_TREE_STORE(shelltree->model); GtkTreeIter parent; if (!module) { return; } gtk_tree_store_append(store, &parent, NULL); gtk_tree_store_set(store, &parent, TREE_COL_NAME, module->name, TREE_COL_MODULE, module, TREE_COL_MODULE_ENTRY, NULL, TREE_COL_SEL, FALSE, -1); if (module->icon) { gtk_tree_store_set(store, &parent, TREE_COL_PBUF, module->icon, -1); } if (module->entries) { ShellModuleEntry *entry; GSList *p; for (p = module->entries; p; p = g_slist_next(p)) { GtkTreeIter child; entry = (ShellModuleEntry *) p->data; if (entry->flags & MODULE_FLAG_HIDE) continue; gtk_tree_store_append(store, &child, &parent); gtk_tree_store_set(store, &child, TREE_COL_NAME, entry->name, TREE_COL_MODULE_ENTRY, entry, TREE_COL_SEL, FALSE, -1); if (entry->icon) { gtk_tree_store_set(store, &child, TREE_COL_PBUF, entry->icon, -1); } shell_status_pulse(); } } } static void destroy_update_tbl_value(gpointer data) { struct UpdateTableItem *item = data; if (item->is_iter) { gtk_tree_iter_free(item->iter); } else { g_object_unref(item->widget); } g_free(item); } DetailView *detail_view_new(void) { DetailView *detail_view; detail_view = g_new0(DetailView, 1); detail_view->scroll = gtk_scrolled_window_new(NULL, NULL); #if GTK_CHECK_VERSION(3, 0, 0) detail_view->view = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); #else detail_view->view = gtk_vbox_new(FALSE, 0); #endif gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(detail_view->scroll), GTK_SHADOW_IN); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(detail_view->scroll), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); #if GTK_CHECK_VERSION(3, 0, 0) gtk_container_add(GTK_CONTAINER(detail_view->scroll), detail_view->view); #else gtk_scrolled_window_add_with_viewport( GTK_SCROLLED_WINDOW(detail_view->scroll), detail_view->view); #endif gtk_widget_show_all(detail_view->scroll); return detail_view; } static gboolean select_first_tree_item(gpointer data) { GtkTreeIter first; if (gtk_tree_model_get_iter_first(shell->tree->model, &first)) gtk_tree_selection_select_iter(shell->tree->selection, &first); return FALSE; } static void check_for_updates(void) { GKeyFile *key_file = g_key_file_new(); gchar *conf_path = g_build_filename(g_get_user_config_dir(), "hardinfo2", "settings.ini", NULL); g_key_file_load_from_file( key_file, conf_path, G_KEY_FILE_KEEP_COMMENTS | G_KEY_FILE_KEEP_TRANSLATIONS, NULL); gboolean setting = g_key_file_get_boolean(key_file, "Sync", "OnStartup", NULL); shell_action_set_active("SyncOnStartupAction", setting); g_free(conf_path); g_key_file_free(key_file); //fetching data -u is used if (setting || params.bench_user_note) { sync_manager_update_on_startup(0); } } gboolean hardinfo_link(const gchar *uri) { /* Clicked link events pass through here on their * way to the default handler (xdg-open). * * TODO: In the future, links could be used to * jump to different pages in hardinfo. * * if (g_str_has_prefix(uri, "hardinfo2:")) { * hardinfo_navigate(g_utf8_strchr(uri, strlen("hardinfo2"), ':') + 1); * return TRUE; * } */ return FALSE; /* didn't handle it */ } void shell_set_transient_dialog(GtkWindow *dialog) { //DEBUG("TRANSIENT_DIALOG CHANGED!!!!!"); shell->transient_dialog = dialog ? dialog : GTK_WINDOW(shell->window); } void shell_init(GSList * modules) { if (shell) { g_error("Shell already created"); return; } DEBUG("initializing shell"); uri_set_function(hardinfo_link); params.fmt_opts = FMT_OPT_PANGO; create_window(); //shell_action_set_property("CopyAction", "is-important", TRUE); shell_action_set_property("RefreshAction", "is-important", TRUE); shell_action_set_property("ReportAction", "is-important", TRUE); shell_action_set_property("SyncManagerAction", "is-important", TRUE); #if GTK_CHECK_VERSION(3, 0, 0) shell_action_set_property("DisableThemeAction", "draw-as-radio", TRUE); shell_action_set_property("Theme1Action", "draw-as-radio", TRUE); shell_action_set_property("Theme2Action", "draw-as-radio", TRUE); shell_action_set_property("Theme3Action", "draw-as-radio", TRUE); shell_action_set_property("Theme4Action", "draw-as-radio", TRUE); shell_action_set_property("Theme5Action", "draw-as-radio", TRUE); shell_action_set_property("Theme6Action", "draw-as-radio", TRUE); #endif shell->tree = tree_new(); shell->info_tree = info_tree_new(); shell->loadgraph = load_graph_new(75); shell->detail_view = detail_view_new(); shell_set_transient_dialog(NULL); update_tbl = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, destroy_update_tbl_value); gtk_box_pack_start(GTK_BOX(shell->hbox), shell->tree->scroll, FALSE, FALSE, 0); gtk_paned_pack1(GTK_PANED(shell->vpaned), shell->info_tree->scroll, SHELL_PACK_RESIZE, SHELL_PACK_SHRINK); gtk_notebook_append_page(GTK_NOTEBOOK(shell->notebook), load_graph_get_framed(shell->loadgraph), NULL); gtk_notebook_append_page(GTK_NOTEBOOK(shell->notebook), shell->detail_view->scroll, NULL); gtk_notebook_set_show_tabs(GTK_NOTEBOOK(shell->notebook), FALSE); gtk_notebook_set_show_border(GTK_NOTEBOOK(shell->notebook), FALSE); shell_status_set_enabled(TRUE); shell_status_update(_("Loading modules...")); shell->tree->modules = modules ? modules : modules_load_all(); check_for_updates(); g_slist_foreach(shell->tree->modules, shell_add_modules_to_gui, shell->tree); gtk_tree_view_expand_all(GTK_TREE_VIEW(shell->tree->view)); gtk_widget_show_all(shell->hbox); load_graph_configure_expose(shell->loadgraph); gtk_widget_hide(shell->notebook); gtk_widget_hide(shell->note->event_box); shell_status_update(_("Done.")); shell_status_set_enabled(FALSE); shell_action_set_enabled("RefreshAction", FALSE); //shell_action_set_enabled("CopyAction", FALSE); shell_action_set_active("SidePaneAction", TRUE); shell_action_set_active("ToolbarAction", TRUE); shell_action_set_enabled("SyncManagerAction", sync_manager_count_entries() > 0); /* Should select Computer Summary (note: not Computer/Summary) */ g_idle_add(select_first_tree_item, NULL); } static gboolean update_field(gpointer data) { ShellFieldUpdate *fu; struct UpdateTableItem *item; fu = (ShellFieldUpdate *)data; g_return_val_if_fail(fu != NULL, FALSE); //DEBUG("update_field [%s]", fu->field_name); item = g_hash_table_lookup(update_tbl, fu->field_name); if (!item) { return FALSE; } /* if the entry is still selected, update it */ if (fu->entry->selected && fu->entry->fieldfunc) { gchar *value = fu->entry->fieldfunc(fu->field_name); gdouble v; if (item->is_iter) { /* * this function is also used to feed the load graph when ViewType * is SHELL_VIEW_LOAD_GRAPH */ if (shell->view_type == SHELL_VIEW_LOAD_GRAPH && gtk_tree_selection_iter_is_selected(shell->info_tree->selection, item->iter)) { load_graph_set_title(shell->loadgraph, fu->field_name); v=atof(value); //fix KiB->Bytes for UberGraph (GTK3) #if GTK_CHECK_VERSION(3, 0, 0) if(strstr(value,"KiB")) v*=1024; #endif load_graph_update(shell->loadgraph, v); } GtkTreeStore *store = GTK_TREE_STORE(shell->info_tree->model); gtk_tree_store_set(store, item->iter, INFO_TREE_COL_VALUE, value, -1); } else { GList *children = gtk_container_get_children(GTK_CONTAINER(item->widget)); if(children && children->next->data && value) gtk_label_set_markup(GTK_LABEL(children->next->data), value); g_list_free(children); } g_free(value); return TRUE; } if (update_sfusrc) { GSList *sfu; for (sfu = update_sfusrc; sfu; sfu = sfu->next) { g_free(sfu->data); } g_slist_free(update_sfusrc); update_sfusrc = NULL; } /* otherwise, cleanup and destroy the timeout */ g_free(fu->field_name); g_free(fu); return FALSE; } #if GTK_CHECK_VERSION(3, 0, 0) #define RANGE_SET_VALUE(tree,scrollbar,value) {while (gtk_events_pending()) gtk_main_iteration();gtk_range_set_value(GTK_RANGE(gtk_scrolled_window_get_##scrollbar(GTK_SCROLLED_WINDOW(shell->tree->scroll))), value);} #define RANGE_GET_VALUE(tree,scrollbar) gtk_range_get_value(GTK_RANGE(gtk_scrolled_window_get_##scrollbar(GTK_SCROLLED_WINDOW(shell->tree->scroll)))) #else #define RANGE_SET_VALUE(tree, scrollbar, value) \ do { \ GtkRange CONCAT(*range, __LINE__) = \ GTK_RANGE(GTK_SCROLLED_WINDOW(shell->tree->scroll)->scrollbar); \ gtk_range_set_value(CONCAT(range, __LINE__), value); \ gtk_adjustment_value_changed(GTK_ADJUSTMENT( \ gtk_range_get_adjustment(CONCAT(range, __LINE__)))); \ } while (0) #define RANGE_GET_VALUE(tree, scrollbar) \ gtk_range_get_value( \ GTK_RANGE(GTK_SCROLLED_WINDOW(shell->tree->scroll)->scrollbar)) #endif static void destroy_widget(GtkWidget *widget, gpointer user_data) { gtk_widget_destroy(widget); } static void detail_view_clear(DetailView *detail_view) { gtk_container_forall(GTK_CONTAINER(shell->detail_view->view), destroy_widget, NULL); RANGE_SET_VALUE(detail_view, vscrollbar, 0.0); RANGE_SET_VALUE(detail_view, hscrollbar, 0.0); } static gboolean reload_section(gpointer data) { ShellModuleEntry *entry = (ShellModuleEntry *)data; /* if the entry is still selected, update it */ if (entry->selected) { GtkTreePath *path = NULL; GtkTreeIter iter; double pos_info_scroll; double pos_detail_scroll; /*Freeze window updates*/ gdk_window_freeze_updates(gtk_widget_get_window(shell->window)); /* save current position */ pos_info_scroll = RANGE_GET_VALUE(info_tree, vscrollbar); pos_detail_scroll = RANGE_GET_VALUE(detail_view, vscrollbar); /* gets the current selected path */ if (gtk_tree_selection_get_selected(shell->info_tree->selection, &shell->info_tree->model, &iter)) { path = gtk_tree_model_get_path(shell->info_tree->model, &iter); } /* update the information, clear the treeview and populate it again */ module_entry_reload(entry); module_selected_show_info(entry, TRUE); /* if there was a selection, reselect it */ if (path) { gtk_tree_selection_select_path(shell->info_tree->selection, path); gtk_tree_view_set_cursor(GTK_TREE_VIEW(shell->info_tree->view), path, NULL, FALSE); gtk_tree_path_free(path); } /* restore position */ if(pos_info_scroll) RANGE_SET_VALUE(info_tree, vscrollbar, pos_info_scroll); if(pos_detail_scroll) RANGE_SET_VALUE(detail_view, vscrollbar, pos_detail_scroll); /*UnFreeze widget updates*/ gdk_window_thaw_updates(gtk_widget_get_window(shell->window)); } /* destroy the timeout: it'll be set up again */ return FALSE; } static gboolean rescan_section(gpointer data) { ShellModuleEntry *entry = (ShellModuleEntry *) data; module_entry_reload(entry); return entry->selected; } static gint compare_float(float a, float b) { return (a > b) - (a < b); } static gint info_tree_compare_val_func(GtkTreeModel * model, GtkTreeIter * a, GtkTreeIter * b, gpointer userdata) { gint ret = 0; gchar *col1, *col2; gtk_tree_model_get(model, a, INFO_TREE_COL_VALUE, &col1, -1); gtk_tree_model_get(model, b, INFO_TREE_COL_VALUE, &col2, -1); if (!col1 && !col2) ret = 0; else if (!col1) ret = -1; else if (!col2) ret = 1; else if (shell->_order_type == SHELL_ORDER_ASCENDING) ret = compare_float(atof(col2), atof(col1)); else ret = compare_float(atof(col1), atof(col2)); g_free(col1); g_free(col2); return ret; } static void set_view_type(ShellViewType viewtype, gboolean reload) { #if GTK_CHECK_VERSION(2, 18, 0) GtkAllocation* alloc; #endif gboolean type_changed = FALSE; if (viewtype != shell->view_type) type_changed = TRUE; if (viewtype >= SHELL_VIEW_N_VIEWS) viewtype = SHELL_VIEW_NORMAL; shell->normalize_percentage = TRUE; shell->view_type = viewtype; shell->_order_type = SHELL_ORDER_DESCENDING; /* use an unsorted tree model */ GtkTreeSortable *sortable = GTK_TREE_SORTABLE(shell->info_tree->model); gtk_tree_sortable_set_sort_column_id(sortable, GTK_TREE_SORTABLE_UNSORTED_SORT_COLUMN_ID, GTK_SORT_ASCENDING); gtk_tree_view_set_model(GTK_TREE_VIEW(shell->info_tree->view), GTK_TREE_MODEL(sortable)); /* reset to the default view columns */ if (!reload) { gtk_tree_view_column_set_visible(shell->info_tree->col_extra1, FALSE); gtk_tree_view_column_set_visible(shell->info_tree->col_extra2, FALSE); gtk_tree_view_column_set_visible(shell->info_tree->col_progress, FALSE); gtk_tree_view_column_set_visible(shell->info_tree->col_value, TRUE); } /* turn off the rules hint */ #if GTK_CHECK_VERSION(3, 0, 0) #else gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(shell->info_tree->view), FALSE); #endif close_note(NULL, NULL); detail_view_clear(shell->detail_view); switch (viewtype) { default: case SHELL_VIEW_NORMAL: gtk_widget_show(shell->info_tree->scroll); gtk_widget_hide(shell->notebook); if (!reload) { gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(shell->info_tree->view), FALSE); } break; case SHELL_VIEW_DUAL: gtk_widget_show(shell->info_tree->scroll); gtk_notebook_set_current_page(GTK_NOTEBOOK(shell->notebook), 1); gtk_widget_show(shell->notebook); if (type_changed) { #if GTK_CHECK_VERSION(2, 18, 0) alloc = g_new(GtkAllocation, 1); gtk_widget_get_allocation(shell->hbox, alloc); gtk_paned_set_position(GTK_PANED(shell->vpaned), alloc->height / 2); g_free(alloc); #else gtk_paned_set_position(GTK_PANED(shell->vpaned), shell->hbox->allocation.height / 2); #endif } break; case SHELL_VIEW_LOAD_GRAPH: gtk_widget_show(shell->info_tree->scroll); gtk_notebook_set_current_page(GTK_NOTEBOOK(shell->notebook), 0); gtk_widget_show(shell->notebook); load_graph_clear(shell->loadgraph); if (type_changed) { #if GTK_CHECK_VERSION(2, 18, 0) alloc = g_new(GtkAllocation, 1); gtk_widget_get_allocation(shell->hbox, alloc); gtk_paned_set_position(GTK_PANED(shell->vpaned), alloc->height - load_graph_get_height(shell->loadgraph) - 16); g_free(alloc); #else gtk_paned_set_position(GTK_PANED(shell->vpaned), shell->hbox->allocation.height - load_graph_get_height(shell->loadgraph) - 16); #endif } break; case SHELL_VIEW_PROGRESS_DUAL: gtk_widget_show(shell->notebook); gtk_notebook_set_current_page(GTK_NOTEBOOK(shell->notebook), 1); /* fallthrough */ case SHELL_VIEW_PROGRESS: gtk_widget_show(shell->info_tree->scroll); if (!reload) { gtk_tree_view_column_set_visible(shell->info_tree->col_progress, TRUE); gtk_tree_view_column_set_visible(shell->info_tree->col_value, FALSE); } if (viewtype == SHELL_VIEW_PROGRESS) gtk_widget_hide(shell->notebook); break; case SHELL_VIEW_DETAIL: gtk_notebook_set_current_page(GTK_NOTEBOOK(shell->notebook), 1); gtk_widget_show(shell->notebook); gtk_widget_hide(shell->info_tree->scroll); } } static void group_handle_special(GKeyFile *key_file, ShellModuleEntry *entry, const gchar *group, gchar **keys) { if (!g_str_equal(group, "$ShellParam$")) { g_warning("Unknown parameter group: ``%s''", group); return; } gboolean headers_visible = FALSE; gint i; for (i = 0; keys[i]; i++) { gchar *key = keys[i]; if (g_str_has_prefix(key, "UpdateInterval$")) { ShellFieldUpdate *fu = g_new0(ShellFieldUpdate, 1); ShellFieldUpdateSource *sfutbl; gint ms; ms = g_key_file_get_integer(key_file, group, key, NULL); /* Old style used just the label which has to be checked by translating it, * and potentially could by ambiguous. * New style can use tag or label. If new style including a tag, * send both tag and label and let the hi_get_field() function use * key_get_components() to split it. */ const gchar *chk = g_utf8_strchr(key, -1, '$'); fu->field_name = g_strdup(key_is_flagged(chk) ? chk : chk + 1); fu->entry = entry; sfutbl = g_new0(ShellFieldUpdateSource, 1); sfutbl->source_id = g_timeout_add(ms, update_field, fu); sfutbl->sfu = fu; update_sfusrc = g_slist_prepend(update_sfusrc, sfutbl); } else if (g_str_equal(key, "NormalizePercentage")) { shell->normalize_percentage = g_key_file_get_boolean(key_file, group, key, NULL); } else if (g_str_equal(key, "LoadGraphSuffix")) { gchar *suffix = g_key_file_get_value(key_file, group, key, NULL); load_graph_set_data_suffix(shell->loadgraph, suffix); g_free(suffix); } else if (g_str_equal(key, "ReloadInterval")) { gint ms; ms = g_key_file_get_integer(key_file, group, key, NULL); g_timeout_add(ms, reload_section, entry); } else if (g_str_equal(key, "RescanInterval")) { gint ms; ms = g_key_file_get_integer(key_file, group, key, NULL); g_timeout_add(ms, rescan_section, entry); } else if (g_str_equal(key, "ShowColumnHeaders")) { headers_visible = g_key_file_get_boolean(key_file, group, key, NULL); } else if (g_str_has_prefix(key, "ColumnTitle")) { GtkTreeViewColumn *column = NULL; gchar *value, *title = g_utf8_strchr(key, -1, '$') + 1; value = g_key_file_get_value(key_file, group, key, NULL); if (g_str_equal(title, "Extra1")) { column = shell->info_tree->col_extra1; } else if (g_str_equal(title, "Extra2")) { column = shell->info_tree->col_extra2; } else if (g_str_equal(title, "Value")) { column = shell->info_tree->col_value; } else if (g_str_equal(title, "TextValue")) { column = shell->info_tree->col_textvalue; } else if (g_str_equal(title, "Progress")) { column = shell->info_tree->col_progress; } if (column) { gtk_tree_view_column_set_title(column, value); gtk_tree_view_column_set_visible(column, TRUE); } g_free(value); } else if (g_str_equal(key, "OrderType")) { shell->_order_type = g_key_file_get_integer(key_file, group, key, NULL); } else if (g_str_has_prefix(key, "Icon$")) { struct UpdateTableItem *item; const gchar *ikey = g_utf8_strchr(key, -1, '$'); gchar *tag, *name; key_get_components(ikey, NULL, &tag, &name, NULL, NULL, TRUE); if (tag) item = g_hash_table_lookup(update_tbl, tag); else item = g_hash_table_lookup(update_tbl, name); g_free(name); g_free(tag); if (item) { gchar *file = g_key_file_get_value(key_file, group, key, NULL); GdkPixbuf *pixbuf; if(strstr(file,"LARGE")==file){ file=strreplace(file,"LARGE",""); pixbuf = icon_cache_get_pixbuf_at_size(file, -1, 33); } else { pixbuf = icon_cache_get_pixbuf_at_size(file, 22, 22); } g_free(file); if (item->is_iter) { gtk_tree_store_set( GTK_TREE_STORE(shell->info_tree->model), item->iter, INFO_TREE_COL_PBUF, pixbuf, -1); } else { GList *children = gtk_container_get_children(GTK_CONTAINER(item->widget)); gtk_image_set_from_pixbuf(GTK_IMAGE(children->data), pixbuf); gtk_widget_show(GTK_WIDGET(children->data)); g_list_free(children); } } } else if (g_str_equal(key, "Zebra")) { #if GTK_CHECK_VERSION(3, 0, 0) #else gtk_tree_view_set_rules_hint( GTK_TREE_VIEW(shell->info_tree->view), g_key_file_get_boolean(key_file, group, key, NULL)); #endif } } gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(shell->info_tree->view), headers_visible); } static void group_handle_normal(GKeyFile *key_file, ShellModuleEntry *entry, const gchar *group, gchar **keys, gsize ngroups) { GtkTreeIter parent; GtkTreeStore *store = GTK_TREE_STORE(shell->info_tree->model); gint i; if (ngroups > 1) { gtk_tree_store_append(store, &parent, NULL); gchar *tmp = g_strdup(group); strend(tmp, '#'); gtk_tree_store_set(store, &parent, INFO_TREE_COL_NAME, tmp, -1); g_free(tmp); } g_key_file_set_list_separator(key_file, '|'); for (i = 0; keys[i]; i++) { gchar *key = keys[i]; gchar **values; gsize vcount = 0; GtkTreeIter child; values = g_key_file_get_string_list(key_file, group, key, &vcount, NULL); if (!vcount) { /* Check for empty value */ values = g_new0(gchar*, 2); values[0] = g_key_file_get_string(key_file, group, key, NULL); if (values[0]) { vcount = 1; } else { g_strfreev(values); continue; } } if (entry->fieldfunc && values[0] && g_str_equal(values[0], "...")) { g_free(values[0]); values[0] = entry->fieldfunc(key); } if (ngroups == 1) { gtk_tree_store_append(store, &child, NULL); } else { gtk_tree_store_append(store, &child, &parent); } if (vcount > 0) gtk_tree_store_set(store, &child, INFO_TREE_COL_VALUE, values[0], -1); if (vcount > 1) gtk_tree_store_set(store, &child, INFO_TREE_COL_EXTRA1, values[1], -1); if (vcount > 2) gtk_tree_store_set(store, &child, INFO_TREE_COL_EXTRA2, values[2], -1); struct UpdateTableItem *item = g_new0(struct UpdateTableItem, 1); item->is_iter = TRUE; item->iter = gtk_tree_iter_copy(&child); gchar *flags, *tag, *name, *label; key_get_components(key, &flags, &tag, &name, &label, NULL, TRUE); if (flags) { //TODO: name was formerly used where label is here. Check all uses //for problems. gtk_tree_store_set(store, &child, INFO_TREE_COL_NAME, label, INFO_TREE_COL_DATA, flags, -1); g_hash_table_insert(update_tbl, tag, item); g_free(label); } else { gtk_tree_store_set(store, &child, INFO_TREE_COL_NAME, key, INFO_TREE_COL_DATA, NULL, -1); g_hash_table_insert(update_tbl, name, item); g_free(tag); } g_free(flags); g_strfreev(values); } } static void update_progress() { GtkTreeModel *model = shell->info_tree->model; GtkTreeStore *store = GTK_TREE_STORE(model); GtkTreeIter iter, fiter; gchar *tmp; gdouble maxv = INT_MIN, minv = INT_MAX, coeff, cur; if (!gtk_tree_model_get_iter_first(model, &fiter)) return; /* finds the maximum value */ if (shell->normalize_percentage) { iter = fiter; do { gtk_tree_model_get(model, &iter, INFO_TREE_COL_VALUE, &tmp, -1); cur = atof(tmp); if (cur > maxv) maxv = cur; if (cur < minv) minv = cur; g_free(tmp); } while (gtk_tree_model_iter_next(model, &iter)); if (minv - maxv < 0.001) maxv += 1.0f; } else { minv = 1.0f; maxv = 100.0f; } coeff = (100.0f - 1.0f) / (maxv - minv); /* fix the maximum relative percentage */ iter = fiter; do { char *space; char formatted[128]; gdouble pct; gtk_tree_model_get(model, &iter, INFO_TREE_COL_VALUE, &tmp, -1); cur = atof(tmp); space = g_utf8_strchr(tmp, -1, ' '); pct = coeff * (cur - minv) + 1.0f; if (shell->_order_type == SHELL_ORDER_ASCENDING) pct = 100.0 - pct; pct = ceil(pct); if (space) { snprintf(formatted, sizeof(formatted), "%.2f%s", cur, space); } else { snprintf(formatted, sizeof(formatted), "%.2f", cur); } gtk_tree_store_set(store, &iter, INFO_TREE_COL_PROGRESS, pct, INFO_TREE_COL_VALUE, strreplacechr(formatted, ",", '.'), -1); g_free(tmp); } while (gtk_tree_model_iter_next(model, &iter)); /* now sort everything up. that wasn't as hard as i thought :) */ GtkTreeSortable *sortable = GTK_TREE_SORTABLE(shell->info_tree->model); gtk_tree_sortable_set_sort_func(sortable, INFO_TREE_COL_VALUE, info_tree_compare_val_func, 0, NULL); gtk_tree_sortable_set_sort_column_id(sortable, INFO_TREE_COL_VALUE, GTK_SORT_DESCENDING); gtk_tree_view_set_model(GTK_TREE_VIEW(shell->info_tree->view), GTK_TREE_MODEL(sortable)); } void shell_set_note_from_entry(ShellModuleEntry * entry) { if (entry->notefunc) { const gchar *note = module_entry_get_note(entry); if (note) { gtk_label_set_markup(GTK_LABEL(shell->note->label), note); gtk_widget_show(shell->note->event_box); } else { gtk_widget_hide(shell->note->event_box); } } else { gtk_widget_hide(shell->note->event_box); } } void shell_clear_field_updates(void) { if (update_sfusrc) { GSList *sfusrc; for (sfusrc = update_sfusrc; sfusrc; sfusrc = sfusrc->next) { ShellFieldUpdateSource *src = (ShellFieldUpdateSource *) sfusrc->data; g_source_remove(src->source_id); g_free(src->sfu->field_name); g_free(src->sfu); g_free(src); } g_slist_free(update_sfusrc); update_sfusrc = NULL; } } /*static gboolean select_first_item(gpointer data) { GtkTreeIter first; if (gtk_tree_model_get_iter_first(shell->info_tree->model, &first)) gtk_tree_selection_select_iter(shell->info_tree->selection, &first); return FALSE; }*/ static gboolean select_marked_or_first_item(gpointer data) { GtkTreeIter first, it; gboolean found_selection = FALSE; gchar *datacol; if (gtk_tree_model_get_iter_first(shell->info_tree->model, &first)) { it = first; while (gtk_tree_model_iter_next(shell->info_tree->model, &it)) { gtk_tree_model_get(shell->info_tree->model, &it, INFO_TREE_COL_DATA, &datacol, -1); if (key_is_highlighted(datacol)) { gtk_tree_selection_select_iter(shell->info_tree->selection, &it); //scoll to selected this machine benchmark GtkTreePath *path=gtk_tree_model_get_path(shell->info_tree->model, &it); gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW(shell->info_tree->view), path, NULL, TRUE, 0.5, 0.0); gtk_tree_path_free(path); found_selection = TRUE; } g_free(datacol); } if (!found_selection) gtk_tree_selection_select_iter(shell->info_tree->selection, &first); } return FALSE; } static void module_selected_show_info_list(GKeyFile *key_file, ShellModuleEntry *entry, gchar **groups, gsize ngroups) { #if GTK_CHECK_VERSION(3, 0, 0) GtkCssProvider *provider; provider = gtk_css_provider_new(); #endif GtkTreeStore *store = GTK_TREE_STORE(shell->info_tree->model); gint i; gtk_tree_store_clear(store); g_object_ref(shell->info_tree->model); gtk_tree_view_set_model(GTK_TREE_VIEW(shell->info_tree->view), NULL); gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(shell->info_tree->view), FALSE); #if GTK_CHECK_VERSION(3, 0, 0) if(params.theme>0){ if(params.darkmode){ gtk_css_provider_load_from_data(provider, "treeview { background-color: rgba(0xa0, 0xa0, 0xa0, 0.1); } treeview:selected { background-color: rgba(0x40, 0x60, 0xff, 1); } ", -1, NULL); gtk_style_context_add_provider(gtk_widget_get_style_context(shell->info_tree->view), GTK_STYLE_PROVIDER(provider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); }else{ gtk_css_provider_load_from_data(provider, "treeview { background-color: rgba(0x60, 0x60, 0x60, 0.1); } treeview:selected { background-color: rgba(0x40, 0x60, 0xff, 1); } ", -1, NULL); gtk_style_context_add_provider(gtk_widget_get_style_context(shell->info_tree->view), GTK_STYLE_PROVIDER(provider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); } } #endif for (i = 0; groups[i]; i++) { gchar **keys = g_key_file_get_keys(key_file, groups[i], NULL, NULL); if (groups[i][0] == '$') { group_handle_special(key_file, entry, groups[i], keys); } else { group_handle_normal(key_file, entry, groups[i], keys, ngroups); } g_strfreev(keys); } g_object_unref(shell->info_tree->model); gtk_tree_view_set_model(GTK_TREE_VIEW(shell->info_tree->view), shell->info_tree->model); gtk_tree_view_expand_all(GTK_TREE_VIEW(shell->info_tree->view)); gtk_tree_view_set_show_expanders(GTK_TREE_VIEW(shell->info_tree->view), ngroups > 1); } static gboolean detail_activate_link (GtkLabel *label, gchar *uri, gpointer user_data) { return uri_open(uri); } static gchar *vendor_info_markup(const Vendor *v) { if (!v) return NULL; gchar *ven_mt = NULL; gchar *full_link = NULL, *p = NULL; gchar *ven_tag = v->name_short ? g_strdup(v->name_short) : g_strdup(v->name); tag_vendor(&ven_tag, 0, ven_tag, v->ansi_color, FMT_OPT_PANGO); //if (v->name_short) // ven_mt = appf(ven_mt, "\n", "%s", v->name); ven_mt = appf(ven_mt, "\n", "%s", ven_tag); if (v->url) { if (!g_str_has_prefix(v->url, "http") ) full_link = g_strdup_printf("http://%s", v->url); ven_mt = appf(ven_mt, "\n", "%s: %s", _("URL"), full_link ? full_link : v->url, v->url); g_free(full_link); full_link = NULL; } if (v->url_support) { if (!g_str_has_prefix(v->url_support, "http") ) full_link = g_strdup_printf("http://%s", v->url_support); ven_mt = appf(ven_mt, "\n", "%s: %s", _("Support URL"), full_link ? full_link : v->url_support, v->url_support); g_free(full_link); full_link = NULL; } if (v->wikipedia) { /* sending the title to wikipedia.com/wiki will autmatically handle the language and section parts, * but perhaps that shouldn't be relied on so much? */ full_link = g_strdup_printf("http://wikipedia.com/wiki/%s", v->wikipedia); for(p = full_link; *p; p++) { if (*p == ' ') *p = '_'; } ven_mt = appf(ven_mt, "\n", "%s: %s", _("Wikipedia"), full_link ? full_link : v->wikipedia, v->wikipedia); g_free(full_link); full_link = NULL; } g_free(ven_tag); return ven_mt; } static void module_selected_show_info_detail(GKeyFile *key_file, ShellModuleEntry *entry, gchar **groups) { gint i; detail_view_clear(shell->detail_view); for (i = 0; groups[i]; i++) { gsize nkeys; gchar **keys = g_key_file_get_keys(key_file, groups[i], &nkeys, NULL); gchar *group_label = g_strdup(groups[i]); strend(group_label, '#'); if (entry && groups[i][0] == '$') { group_handle_special(key_file, entry, groups[i], keys); } else { gchar *tmp = g_strdup_printf("%s", group_label); GtkWidget *label = gtk_label_new(tmp); gtk_label_set_use_markup(GTK_LABEL(label), TRUE); GtkWidget *frame = gtk_frame_new(NULL); gtk_frame_set_label_widget(GTK_FRAME(frame), label); gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_NONE); g_free(tmp); gtk_container_set_border_width(GTK_CONTAINER(frame), 6); gtk_box_pack_start(GTK_BOX(shell->detail_view->view), frame, FALSE, FALSE, 0); GtkWidget *table = gtk_table_new(nkeys, 2, FALSE); gtk_container_set_border_width(GTK_CONTAINER(table), 4); gtk_container_add(GTK_CONTAINER(frame), table); gint j, a = 0; for (j = 0; keys[j]; j++) { gchar *key_markup; gchar *value; gchar *name, *label, *tag, *flags; key_get_components(keys[j], &flags, &tag, &name, &label, NULL, TRUE); value = g_key_file_get_string(key_file, groups[i], keys[j], NULL); if (entry && entry->fieldfunc && value && g_str_equal(value, "...")) { g_free(value); value = entry->fieldfunc(keys[j]); } gboolean has_ven = key_value_has_vendor_string(flags); const Vendor *v = has_ven ? vendor_match(value, NULL) : NULL; if(params.darkmode){ key_markup = g_strdup_printf("%s", label); } else { key_markup = g_strdup_printf("%s", label); } GtkWidget *key_label = gtk_label_new(key_markup); gtk_label_set_use_markup(GTK_LABEL(key_label), TRUE); gtk_misc_set_alignment(GTK_MISC(key_label), 1.0f, 0.5f); GtkWidget *value_label = gtk_label_new(value); gtk_label_set_use_markup(GTK_LABEL(value_label), TRUE); gtk_label_set_selectable(GTK_LABEL(value_label), TRUE); #if !GTK_CHECK_VERSION(3, 0, 0) gtk_label_set_line_wrap(GTK_LABEL(value_label), TRUE); #endif gtk_misc_set_alignment(GTK_MISC(value_label), 0.0f, 0.5f); GtkWidget *value_icon = gtk_image_new(); GtkWidget *value_box = gtk_hbox_new(FALSE, 4); gtk_box_pack_start(GTK_BOX(value_box), value_icon, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(value_box), value_label, TRUE, TRUE, 0); g_signal_connect(key_label, "activate-link", G_CALLBACK(detail_activate_link), NULL); g_signal_connect(value_label, "activate-link", G_CALLBACK(detail_activate_link), NULL); gtk_widget_show(key_label); gtk_widget_show(value_box); gtk_widget_show(value_label); gtk_table_attach(GTK_TABLE(table), key_label, 0, 1, j + a, j + a + 1, GTK_FILL, GTK_FILL, 6, 4); gtk_table_attach(GTK_TABLE(table), value_box, 1, 2, j + a, j + a + 1, GTK_FILL | GTK_EXPAND, GTK_FILL, 0, 4); if (v) { a++; /* insert a row */ gchar *vendor_markup = vendor_info_markup(v); GtkWidget *vendor_label = gtk_label_new(vendor_markup); gtk_label_set_use_markup(GTK_LABEL(vendor_label), TRUE); gtk_label_set_selectable(GTK_LABEL(vendor_label), TRUE); gtk_misc_set_alignment(GTK_MISC(vendor_label), 0.0f, 0.5f); g_signal_connect(vendor_label, "activate-link", G_CALLBACK(detail_activate_link), NULL); GtkWidget *vendor_box = gtk_hbox_new(FALSE, 4); gtk_box_pack_start(GTK_BOX(vendor_box), vendor_label, TRUE, TRUE, 0); gtk_table_attach(GTK_TABLE(table), vendor_box, 1, 2, j + a, j + a + 1, GTK_FILL | GTK_EXPAND, GTK_FILL, 0, 4); gtk_widget_show(vendor_box); gtk_widget_show(vendor_label); g_free(vendor_markup); } struct UpdateTableItem *item = g_new0(struct UpdateTableItem, 1); item->is_iter = FALSE; item->widget = g_object_ref(value_box); if (tag) { g_hash_table_insert(update_tbl, tag, item); g_free(name); } else { g_hash_table_insert(update_tbl, name, item); g_free(tag); } g_free(flags); g_free(value); g_free(key_markup); g_free(label); } gtk_widget_show(table); gtk_widget_show(label); gtk_widget_show(frame); } g_strfreev(keys); g_free(group_label); } } static void module_selected_show_info(ShellModuleEntry *entry, gboolean reload) { gsize ngroups; gint i; module_entry_scan(entry); if (!reload) { /* recreate the iter hash table */ h_hash_table_remove_all(update_tbl); } shell_clear_field_updates(); GKeyFile *key_file = g_key_file_new(); gchar *key_data = module_entry_function(entry); g_key_file_load_from_data(key_file, key_data, strlen(key_data), 0, NULL); set_view_type(g_key_file_get_integer(key_file, "$ShellParam$", "ViewType", NULL), reload); gchar **groups = g_key_file_get_groups(key_file, &ngroups); for (i = 0; groups[i]; i++) { if (groups[i][0] == '$') ngroups--; } if (shell->view_type == SHELL_VIEW_DETAIL) { module_selected_show_info_detail(key_file, entry, groups); } else { module_selected_show_info_list(key_file, entry, groups, ngroups); } g_strfreev(groups); g_key_file_free(key_file); g_free(key_data); switch (shell->view_type) { case SHELL_VIEW_PROGRESS_DUAL: case SHELL_VIEW_PROGRESS: update_progress(); break; default: break; } if (!reload) { switch (shell->view_type) { case SHELL_VIEW_DUAL: case SHELL_VIEW_LOAD_GRAPH: case SHELL_VIEW_PROGRESS_DUAL: g_idle_add(select_marked_or_first_item, NULL); default: break; } } shell_set_note_from_entry(entry); } static void info_selected_show_extra(const gchar *tag) { if (!tag || !shell->selected->morefunc) return; GKeyFile *key_file = g_key_file_new(); gchar *key_data = shell->selected->morefunc((gchar *)tag); gchar **groups; g_key_file_load_from_data(key_file, key_data, strlen(key_data), 0, NULL); groups = g_key_file_get_groups(key_file, NULL); module_selected_show_info_detail(key_file, NULL, groups); g_strfreev(groups); g_key_file_free(key_file); g_free(key_data); } static gchar *detail_view_clear_value(gchar *value) { GKeyFile *keyfile; gchar *return_value; keyfile = g_key_file_new(); if (!value) return_value = g_strdup(""); else if (g_key_file_load_from_data(keyfile, value, strlen(value), 0, NULL)) { gchar **groups; gint group; return_value = g_strdup(""); groups = g_key_file_get_groups(keyfile, NULL); for (group = 0; groups[group]; group++) { gchar **keys; gint key; keys = g_key_file_get_keys(keyfile, groups[group], NULL, NULL); for (key = 0; keys[key]; key++) { gchar *temp = keys[key]; if (*temp == '$') { temp++; while (*temp && *temp != '$') temp++; temp++; return_value = h_strdup_cprintf("%s\n", return_value, temp); } else { return_value = g_key_file_get_string(keyfile, groups[group], keys[key], NULL); } } g_strfreev(keys); } g_strfreev(groups); } else { return_value = g_strdup(value); } g_key_file_free(keyfile); return g_strstrip(return_value); } static void detail_view_add_item(DetailView *detail_view, gchar *icon, gchar *name, gchar *value) { #if GTK_CHECK_VERSION(3, 0, 0) #else GtkWidget *alignment; #endif GtkWidget *frame; GtkWidget *frame_label_box; GtkWidget *frame_image; GtkWidget *frame_label; GtkWidget *content; gchar *temp; temp = detail_view_clear_value(value); /* creates the frame */ frame = gtk_frame_new(NULL); gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_NONE); #if GTK_CHECK_VERSION(3, 0, 0) frame_label_box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5); #else frame_label_box = gtk_hbox_new(FALSE, 5); #endif frame_image = icon_cache_get_image(icon); frame_label = gtk_label_new(name); gtk_label_set_use_markup(GTK_LABEL(frame_label), TRUE); gtk_box_pack_start(GTK_BOX(frame_label_box), frame_image, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(frame_label_box), frame_label, FALSE, FALSE, 0); content = gtk_label_new(temp); #if GTK_CHECK_VERSION(3, 0, 0) GtkWidget *frame_box; frame_box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5); gtk_widget_set_margin_start(GTK_WIDGET(frame_box), 48); gtk_box_pack_start(GTK_BOX(frame_box), content, FALSE, FALSE, 0); gtk_container_add(GTK_CONTAINER(frame), frame_box); #else alignment = gtk_alignment_new(0.5, 0.5, 1, 1); gtk_alignment_set_padding(GTK_ALIGNMENT(alignment), 0, 0, 48, 0); gtk_widget_show(alignment); gtk_container_add(GTK_CONTAINER(frame), alignment); gtk_misc_set_alignment(GTK_MISC(content), 0.0, 0.5); gtk_container_add(GTK_CONTAINER(alignment), content); #endif gtk_widget_show_all(frame); gtk_widget_show_all(frame_label_box); gtk_frame_set_label_widget(GTK_FRAME(frame), frame_label_box); /* pack the item on the detail_view screen */ gtk_box_pack_start(GTK_BOX(shell->detail_view->view), frame, FALSE, FALSE, 4); g_free(temp); } static void detail_view_create_header(DetailView *detail_view, gchar *title) { GtkWidget *header, *label; gchar *temp; temp = g_strdup_printf(_("%s \342\206\222 Summary"), title); header = gtk_menu_item_new_with_label(temp); gtk_menu_item_select(GTK_MENU_ITEM(header)); gtk_widget_show(header); label = gtk_bin_get_child(GTK_BIN(header)); gtk_label_set_use_markup(GTK_LABEL(label), TRUE); gtk_box_pack_start(GTK_BOX(shell->detail_view->view), header, FALSE, FALSE, 4); g_free(temp); } static void shell_show_detail_view(void) { GKeyFile *keyfile; gchar *detail; set_view_type(SHELL_VIEW_DETAIL, FALSE); detail_view_clear(shell->detail_view); detail_view_create_header(shell->detail_view, shell->selected_module->name); keyfile = g_key_file_new(); detail = shell->selected_module->summaryfunc(); if (g_key_file_load_from_data(keyfile, detail, strlen(detail), 0, NULL)) { gchar **groups; gint group; groups = g_key_file_get_groups(keyfile, NULL); for (group = 0; groups[group]; group++) { gchar *icon, *method, *method_result; shell_status_pulse(); icon = g_key_file_get_string(keyfile, groups[group], "Icon", NULL); method = g_key_file_get_string(keyfile, groups[group], "Method", NULL); if (method) { method_result = module_call_method(method); } else { method_result = g_strdup("N/A"); } detail_view_add_item(shell->detail_view, icon, groups[group], method_result); shell_status_pulse(); g_free(icon); g_free(method); g_free(method_result); } g_strfreev(groups); } else { DEBUG("error while parsing detail_view"); set_view_type(SHELL_VIEW_NORMAL, FALSE); } g_free(detail); g_key_file_free(keyfile); shell_view_set_enabled(TRUE); } static void module_selected(gpointer data) { ShellTree *shelltree = shell->tree; GtkTreeModel *model = GTK_TREE_MODEL(shelltree->model); GtkTreeIter iter, parent; ShellModuleEntry *entry; static ShellModuleEntry *current = NULL; static gboolean updating = FALSE; /* Gets the currently selected item on the left-side TreeView; if there is no selection, silently return */ if (!gtk_tree_selection_get_selected(shelltree->selection, &model, &iter)) { return; } /* Mark the currently selected module as "unselected"; this is used to kill the update timeout. */ if (current) { current->selected = FALSE; } if (updating) { return; } else { updating = TRUE; } if (!gtk_tree_model_iter_parent(model, &parent, &iter)) { memcpy(&parent, &iter, sizeof(iter)); } gtk_tree_model_get(model, &parent, TREE_COL_MODULE, &shell->selected_module, -1); /* Get the current selection and shows its related info */ gtk_tree_model_get(model, &iter, TREE_COL_MODULE_ENTRY, &entry, -1); if (entry && !entry->selected) { gchar *title; shell_status_set_enabled(TRUE); shell_status_update(_("Updating...")); entry->selected = TRUE; shell->selected = entry; module_selected_show_info(entry, FALSE); gtk_tree_view_columns_autosize(GTK_TREE_VIEW(shell->info_tree->view)); if(entry->flags & MODULE_FLAG_BENCHMARK) { //allow to scroll to selected THIS-Machine } else { RANGE_SET_VALUE(info_tree, vscrollbar, 0.0); } RANGE_SET_VALUE(info_tree, hscrollbar, 0.0); RANGE_SET_VALUE(detail_view, vscrollbar, 0.0); RANGE_SET_VALUE(detail_view, hscrollbar, 0.0); title = g_strdup_printf("%s - %s", shell->selected_module->name, entry->name); shell_set_title(shell, title); g_free(title); shell_action_set_enabled("RefreshAction", TRUE); //shell_action_set_enabled("CopyAction", TRUE); shell_status_update(_("Done.")); shell_status_set_enabled(FALSE); } else { shell_set_title(shell, NULL); shell_action_set_enabled("RefreshAction", FALSE); //shell_action_set_enabled("CopyAction", FALSE); gtk_tree_store_clear(GTK_TREE_STORE(shell->info_tree->model)); set_view_type(SHELL_VIEW_NORMAL, FALSE); if (shell->selected_module->summaryfunc) { shell_show_detail_view(); } } current = entry; updating = FALSE; } static void info_selected(GtkTreeSelection * ts, gpointer data) { ShellInfoTree *info = (ShellInfoTree *) data; GtkTreeModel *model = GTK_TREE_MODEL(info->model); GtkTreeIter parent; gchar *datacol, *mi_tag; if (!gtk_tree_selection_get_selected(ts, &model, &parent)) return; if (shell->view_type == SHELL_VIEW_NORMAL || shell->view_type == SHELL_VIEW_PROGRESS) { gtk_tree_selection_unselect_all(ts); return; } gtk_tree_model_get(model, &parent, INFO_TREE_COL_DATA, &datacol, -1); mi_tag = key_mi_tag(datacol); info_selected_show_extra(mi_tag); g_free(mi_tag); } static ShellInfoTree *info_tree_new(void) { ShellInfoTree *info; GtkWidget *treeview, *scroll; GtkTreeModel *model; GtkTreeStore *store; GtkTreeViewColumn *column; GtkCellRenderer *cr_text, *cr_pbuf, *cr_progress; GtkTreeSelection *sel; info = g_new0(ShellInfoTree, 1); scroll = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW (scroll), GTK_SHADOW_IN); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); store = gtk_tree_store_new(INFO_TREE_NCOL, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, GDK_TYPE_PIXBUF, G_TYPE_FLOAT, G_TYPE_STRING, G_TYPE_STRING); model = GTK_TREE_MODEL(store); treeview = gtk_tree_view_new_with_model(model); gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(treeview), FALSE); gtk_tree_view_set_headers_clickable(GTK_TREE_VIEW(treeview), TRUE); info->col_progress = column = gtk_tree_view_column_new(); gtk_tree_view_column_set_visible(column, FALSE); gtk_tree_view_column_set_min_width(column, 240); gtk_tree_view_column_set_clickable(column, TRUE); gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column); cr_progress = gtk_cell_renderer_progress_new(); gtk_tree_view_column_pack_start(column, cr_progress, TRUE); gtk_tree_view_column_add_attribute(column, cr_progress, "value", INFO_TREE_COL_PROGRESS); gtk_tree_view_column_add_attribute(column, cr_progress, "text", INFO_TREE_COL_VALUE); gtk_tree_view_column_set_visible(column, FALSE); info->col_textvalue = column = gtk_tree_view_column_new(); gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column); gtk_tree_view_column_set_clickable(column, TRUE); cr_pbuf = gtk_cell_renderer_pixbuf_new(); gtk_tree_view_column_pack_start(column, cr_pbuf, FALSE); gtk_tree_view_column_add_attribute(column, cr_pbuf, "pixbuf", INFO_TREE_COL_PBUF); cr_text = gtk_cell_renderer_text_new(); gtk_tree_view_column_pack_start(column, cr_text, TRUE); gtk_tree_view_column_add_attribute(column, cr_text, "markup", INFO_TREE_COL_NAME); info->col_extra1 = column = gtk_tree_view_column_new(); gtk_tree_view_column_set_visible(column, FALSE); gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column); gtk_tree_view_column_set_clickable(column, TRUE); cr_text = gtk_cell_renderer_text_new(); gtk_tree_view_column_pack_start(column, cr_text, FALSE); gtk_tree_view_column_add_attribute(column, cr_text, "markup", INFO_TREE_COL_EXTRA1); info->col_extra2 = column = gtk_tree_view_column_new(); gtk_tree_view_column_set_visible(column, FALSE); gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column); gtk_tree_view_column_set_clickable(column, TRUE); cr_text = gtk_cell_renderer_text_new(); gtk_tree_view_column_pack_start(column, cr_text, FALSE); gtk_tree_view_column_add_attribute(column, cr_text, "markup", INFO_TREE_COL_EXTRA2); info->col_value = column = gtk_tree_view_column_new(); gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column); gtk_tree_view_column_set_clickable(column, TRUE); cr_text = gtk_cell_renderer_text_new(); gtk_tree_view_column_pack_start(column, cr_text, FALSE); gtk_tree_view_column_add_attribute(column, cr_text, "markup", INFO_TREE_COL_VALUE); sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview)); g_signal_connect(G_OBJECT(sel), "changed", (GCallback)info_selected, info); gtk_container_add(GTK_CONTAINER(scroll), treeview); info->scroll = scroll; info->view = treeview; info->model = model; info->selection = sel; gtk_widget_show_all(scroll); return info; } static ShellTree *tree_new() { ShellTree *shelltree; GtkWidget *treeview, *scroll; GtkTreeModel *model; GtkTreeStore *store; GtkCellRenderer *cr_text, *cr_pbuf; GtkTreeViewColumn *column; GtkTreeSelection *sel; #if GTK_CHECK_VERSION(3, 0, 0) GtkCssProvider *provider; provider = gtk_css_provider_new(); #endif shelltree = g_new0(ShellTree, 1); scroll = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW (scroll), GTK_SHADOW_IN); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); store = gtk_tree_store_new(TREE_NCOL, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_POINTER, G_TYPE_POINTER, G_TYPE_BOOLEAN); model = GTK_TREE_MODEL(store); treeview = gtk_tree_view_new_with_model(model); gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(treeview), FALSE); #if GTK_CHECK_VERSION(2,12,0) gtk_tree_view_set_show_expanders(GTK_TREE_VIEW(treeview), FALSE); gtk_tree_view_set_level_indentation(GTK_TREE_VIEW(treeview), 24); #endif column = gtk_tree_view_column_new(); gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column); cr_pbuf = gtk_cell_renderer_pixbuf_new(); cr_text = gtk_cell_renderer_text_new(); gtk_tree_view_column_pack_start(column, cr_pbuf, FALSE); gtk_tree_view_column_pack_start(column, cr_text, TRUE); gtk_tree_view_column_add_attribute(column, cr_pbuf, "pixbuf", TREE_COL_PBUF); gtk_tree_view_column_add_attribute(column, cr_text, "markup", TREE_COL_NAME); sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview)); g_signal_connect(G_OBJECT(sel), "changed", (GCallback) module_selected, NULL); gtk_container_add(GTK_CONTAINER(scroll), treeview); #if GTK_CHECK_VERSION(3, 0, 0) if(params.theme>0){ if(params.darkmode){ gtk_css_provider_load_from_data(provider, "treeview { background-color: rgba(0xa0, 0xa0, 0xa0, 0.1); } treeview:selected { background-color: rgba(0x40, 0x60, 0xff, 1); } ", -1, NULL); gtk_style_context_add_provider(gtk_widget_get_style_context(treeview), GTK_STYLE_PROVIDER(provider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); } else { gtk_css_provider_load_from_data(provider, "treeview { background-color: rgba(0x60, 0x60, 0x60, 0.1); } treeview:selected { background-color: rgba(0x40, 0x60, 0xff, 1); } ", -1, NULL); gtk_style_context_add_provider(gtk_widget_get_style_context(treeview), GTK_STYLE_PROVIDER(provider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); } } #endif shelltree->scroll = scroll; shelltree->view = treeview; shelltree->model = model; shelltree->modules = NULL; shelltree->selection = sel; gtk_widget_show_all(scroll); return shelltree; } gboolean key_is_flagged(const gchar *key) { return (key && *key == '$' && strchr(key+1, '$')) ? TRUE : FALSE; } gboolean key_is_highlighted(const gchar *key) { gchar *flags; key_get_components(key, &flags, NULL, NULL, NULL, NULL, TRUE); if (flags && strchr(flags, '*')) { g_free(flags); return TRUE; } return FALSE; } gboolean key_wants_details(const gchar *key) { gchar *flags; key_get_components(key, &flags, NULL, NULL, NULL, NULL, TRUE); if (flags && strchr(flags, '!')) { g_free(flags); return TRUE; } return FALSE; } gboolean key_value_has_vendor_string(const gchar *key) { gchar *flags; key_get_components(key, &flags, NULL, NULL, NULL, NULL, TRUE); if (flags && strchr(flags, '^')) { g_free(flags); return TRUE; } return FALSE; } gboolean key_label_is_escaped(const gchar *key) { gchar *flags; key_get_components(key, &flags, NULL, NULL, NULL, NULL, TRUE); if (flags && strchr(flags, '@')) { g_free(flags); return TRUE; } return FALSE; } gchar *key_mi_tag(const gchar *key) { static char flag_list[] = "*!^@"; gchar *p = (gchar*)key, *l, *t; if (key_is_flagged(key)) { l = strchr(key+1, '$'); if (*p == '$') p++; /* skip first if exists */ while(p < l && strchr(flag_list, *p)) { p++; } if (strlen(p)) { t = g_strdup(p); *(strchr(t, '$')) = 0; return t; } } return NULL; } const gchar *key_get_name(const gchar *key) { if (key_is_flagged(key)) return strchr(key+1, '$')+1; return key; } /* key syntax: * [$[][]$][#[]] * * example for key = "$*!Foo$Bar#7": * flags = "$*!^Foo$" // key_is/wants_*() still works on flags * tag = "Foo" // the moreinfo/icon tag * name = "Bar#7" // the full unique name * label = "Bar" // the label displayed * dis = "7" */ void key_get_components(const gchar *key, gchar **flags, gchar **tag, gchar **name, gchar **label, gchar **dis, gboolean null_empty) { if (null_empty) { #define K_NULL_EMPTY(f) if (f) { *f = NULL; } K_NULL_EMPTY(flags); K_NULL_EMPTY(tag); K_NULL_EMPTY(name); K_NULL_EMPTY(label); K_NULL_EMPTY(dis); } if (!key || !*key) return; const gchar *np = g_utf8_strchr(key+1, -1, '$') + 1; if (*key == '$' && np) { /* is flagged */ gchar *f = g_strdup(key); gchar *s = g_utf8_strchr(f+1, -1, '$'); if(s==NULL) { DEBUG("ERROR NOT FOUND"); }else{ /* if((s-f+1)>strlen(key)) { DEBUG("ERROR TOO LATE"); }else{*/ *(g_utf8_strchr(f+1, -1, '$') + 1) = 0; if (flags) *flags = g_strdup(f); if (tag) *tag = key_mi_tag(f); g_free(f); //} } } else np = key; if (name) *name = g_strdup(np); if (label) { *label = g_strdup(np); gchar *lbp = g_utf8_strchr(*label, -1, '#'); if (lbp) *lbp = 0; if (lbp && dis) *dis = g_strdup(lbp + 1); if (flags && *flags && strchr(*flags, '@')) { gchar *ol = *label; *label = g_strcompress(ol); g_free(ol); } } } hardinfo2-hardinfo2-1331e88/shell/stock.c000066400000000000000000000037111474767047500201430ustar00rootroot00000000000000/* * HardInfo - Displays System Information * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include #include #include static struct { gchar *filename; gchar *stock_id; } stock_icons[] = { { "refresh.svg", HI_STOCK_REFRESH}, { "report.svg", HI_STOCK_REPORT}, { "sync.svg", HI_STOCK_SYNC}, }; static GtkIconFactory *icon_factory; void stock_icon_register(gchar * filename, gchar * stock_id) { GtkIconSet *icon_set; GtkIconSource *icon_source; icon_set = gtk_icon_set_new(); icon_source = gtk_icon_source_new(); gtk_icon_source_set_pixbuf(icon_source, icon_cache_get_pixbuf(filename)); gtk_icon_set_add_source(icon_set, icon_source); gtk_icon_source_free(icon_source); gtk_icon_factory_add(icon_factory, stock_id, icon_set); gtk_icon_set_unref(icon_set); } void stock_icons_init(void) { guint i; guint n_stock_icons = G_N_ELEMENTS(stock_icons); DEBUG("initializing stock icons"); icon_factory = gtk_icon_factory_new(); for (i = 0; i < n_stock_icons; i++) { stock_icon_register(stock_icons[i].filename, stock_icons[i].stock_id); } gtk_icon_factory_add_default(icon_factory); g_object_unref(icon_factory); } hardinfo2-hardinfo2-1331e88/shell/syncmanager.c000066400000000000000000000664211474767047500213360ustar00rootroot00000000000000/* * HardInfo2 - System Information and Benchmark * Copyright (C) 2003-2009 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "config.h" #include "hardinfo.h" #include "iconcache.h" #include "syncmanager.h" #include #include #include #include #include #include #include #ifndef SOUP_CHECK_VERSION #define SOUP_CHECK_VERSION(a,b,c) 0 #endif typedef struct _SyncDialog SyncDialog; typedef struct _SyncNetArea SyncNetArea; typedef struct _SyncNetAction SyncNetAction; struct _SyncNetArea { GtkWidget *vbox; }; struct _SyncNetAction { SyncEntry *entry; GError *error; }; struct _SyncDialog { GtkWidget *dialog; GtkWidget *label; GtkWidget *button_sync; GtkWidget *button_cancel; GtkWidget *button_close; GtkWidget *button_priv_policy; GtkWidget *scroll_box; SyncNetArea *sna; gboolean flag_cancel : 1; }; static GSList *entries = NULL; static SoupSession *session = NULL; static GMainLoop *loop; static GQuark err_quark; static guint server_blobs_update_version = 0; static guint our_blobs_update_version = 0; //Note there are no personal information involved and very old //linux systems does not work with HTTPS so use HTTP for now #define API_SERVER_URI "http://api.hardinfo2.org" #define LABEL_SYNC_DEFAULT \ _("Synchronize with Central Database\n" \ "The following information may be synchronized\n" \ "with the HardInfo2 central database.") #define LABEL_SYNC_SYNCING \ _("Synchronizing\n" \ "This may take some time.") static SyncDialog *sync_dialog_new(GtkWidget *parent); static void sync_dialog_destroy(SyncDialog *sd); static void sync_dialog_start_sync(SyncDialog *sd); static SyncNetArea *sync_dialog_netarea_new(void); static void sync_dialog_netarea_destroy(SyncNetArea *sna); static void sync_dialog_netarea_show(SyncDialog *sd); #if 0 static void sync_dialog_netarea_hide(SyncDialog * sd); #endif static void sync_dialog_netarea_start_actions(SyncDialog *sd, SyncNetAction *sna, gint n); #define SNA_ERROR(code, message, ...) \ if (!sna->error) { \ sna->error = g_error_new(err_quark, code, message, ##__VA_ARGS__); \ } gint sync_manager_count_entries(void) { return g_slist_length(entries); } void sync_manager_add_entry(SyncEntry *entry) { DEBUG("registering syncmanager entry ''%s''", entry->name); entry->selected = TRUE; entries = g_slist_append(entries, entry); } void sync_manager_clear_entries(void) { DEBUG("clearing syncmanager entries"); g_slist_free(entries); entries = NULL; } void sync_manager_show(GtkWidget *parent) { SyncDialog *sd = sync_dialog_new(parent); err_quark = g_quark_from_static_string("syncmanager"); if (gtk_dialog_run(GTK_DIALOG(sd->dialog)) == GTK_RESPONSE_ACCEPT) { shell_view_set_enabled(FALSE); shell_status_set_enabled(TRUE); shell_set_transient_dialog(GTK_WINDOW(sd->dialog)); sync_dialog_start_sync(sd); shell_set_transient_dialog(NULL); shell_status_set_enabled(FALSE); shell_view_set_enabled(TRUE); } sync_dialog_destroy(sd); } static gboolean _cancel_sync(GtkWidget *widget, gpointer data) { SyncDialog *sd = (SyncDialog *)data; if (session) { soup_session_abort(session); } sd->flag_cancel = TRUE; g_main_loop_quit(loop); gtk_widget_set_sensitive(widget, FALSE); return FALSE; } static SyncNetAction *sync_manager_get_selected_actions(gint *n) { gint i; GSList *entry; SyncNetAction *actions; actions = g_new0(SyncNetAction, g_slist_length(entries)); for (entry = entries, i = 0; entry; entry = entry->next) { SyncEntry *e = (SyncEntry *)entry->data; if ((entry->next==NULL) || e->selected) {//Last is version SyncNetAction sna = {.entry = e}; actions[i++] = sna; } } *n = i; return actions; } #if SOUP_CHECK_VERSION(3,0,0) static GProxyResolver *sync_manager_get_proxy(void) { const gchar *conf; if (!(conf = g_getenv("HTTP_PROXY"))) { if (!(conf = g_getenv("http_proxy"))) { return NULL; } } return g_simple_proxy_resolver_new(conf,NULL); } #else static SoupURI *sync_manager_get_proxy(void) { const gchar *conf; if (!(conf = g_getenv("HTTP_PROXY"))) { if (!(conf = g_getenv("http_proxy"))) { return NULL; } } return soup_uri_new(conf); } #endif static void ensure_soup_session(void) { if (!session) { #if SOUP_CHECK_VERSION(3,0,0) GProxyResolver *resolver=sync_manager_get_proxy(); session = soup_session_new_with_options("timeout", 10, "proxy-resolver", resolver, NULL); if(resolver) g_object_unref(resolver); #else #if SOUP_CHECK_VERSION(2,42,0) SoupURI *proxy = sync_manager_get_proxy(); session = soup_session_new_with_options( SOUP_SESSION_TIMEOUT, 10, SOUP_SESSION_PROXY_URI, proxy, NULL); #else SoupURI *proxy = sync_manager_get_proxy(); session = soup_session_async_new_with_options( SOUP_SESSION_TIMEOUT, 10, SOUP_SESSION_PROXY_URI, proxy, NULL); #endif #endif } } static void sync_dialog_start_sync(SyncDialog *sd) { gint nactions; SyncNetAction *actions; gchar *path; int fd=-1; gchar buf[101]; path = g_build_filename(g_get_user_config_dir(), "hardinfo2", "blobs-update-version.json", NULL); fd = open(path,O_RDONLY); if(fd<0) { free(path); path = g_build_filename(params.path_data,"blobs-update-version.json", NULL); fd = open(path,O_RDONLY); } if(fd>=0){ if(read(fd,buf,100)) sscanf(buf,"{\"update-version\":\"%u\",",&our_blobs_update_version); close(fd); } free(path); DEBUG("OUR2_BLOBS_UPDATE_VERSION=%u",our_blobs_update_version); ensure_soup_session(); loop = g_main_loop_new(NULL, FALSE); gtk_widget_hide(sd->button_sync); gtk_widget_hide(sd->button_priv_policy); sync_dialog_netarea_show(sd); g_signal_connect(G_OBJECT(sd->button_cancel), "clicked", (GCallback)_cancel_sync, sd); actions = sync_manager_get_selected_actions(&nactions); sync_dialog_netarea_start_actions(sd, actions, nactions); g_free(actions); if (sd->flag_cancel) { gtk_widget_hide(sd->button_cancel); gtk_widget_show(sd->button_close); /* wait for the user to close the dialog */ g_main_loop_run(loop); } g_main_loop_unref(loop); shell_do_reload(FALSE); } static void got_msg(const guint8 *buf,int len, gpointer user_data) { SyncNetAction *sna = user_data; gchar *path; int fd,updateversion=0; gchar buffer[101]; gsize datawritten; if (sna->entry->file_name != NULL) { //check for missing config dirs g_mkdir(g_get_user_config_dir(), 0766); g_mkdir(g_build_filename(g_get_user_config_dir(),"hardinfo2",NULL), 0766); if(strncmp(sna->entry->file_name,"blobs-update-version.json",25)==0){ updateversion=1; } path = g_build_filename(g_get_user_config_dir(), "hardinfo2", sna->entry->file_name, NULL); GFile *file = g_file_new_for_path(path); GFileOutputStream *output = g_file_replace(file, NULL, FALSE, G_FILE_CREATE_REPLACE_DESTINATION, NULL, &sna->error); if(buf){ DEBUG("got file with len: %u", (unsigned int)len); if(len>0){ g_output_stream_write_all(G_OUTPUT_STREAM(output),buf,len,&datawritten,NULL,&sna->error); } } if(updateversion){ fd = open(path,O_RDONLY); if(fd){ if(read(fd,buffer,100)) { sscanf(buffer,"{\"update-version\":\"%u\",",&server_blobs_update_version); DEBUG("SERVER_BLOBS_UPDATE_VERSION=%u",server_blobs_update_version); } close(fd); } } g_free(path); g_object_unref(file); } } #if SOUP_CHECK_VERSION(2,42,0) static void got_response(GObject *source, GAsyncResult *res, gpointer user_data) #else static void got_response(SoupSession *source, SoupMessage *res, gpointer user_data) #endif { SyncNetAction *sna = user_data; #if SOUP_CHECK_VERSION(2,42,0) GInputStream *is; #endif gchar *path; int fd,updateversion=0; gchar buffer[101]; #if SOUP_CHECK_VERSION(2,42,0) #else const guint8 *buf=NULL; gsize len,datawritten; SoupBuffer *soupmsg=NULL; #endif #if SOUP_CHECK_VERSION(2,42,0) is = soup_session_send_finish(session, res, &sna->error); if (is == NULL) goto out; if (sna->error != NULL) goto out; #endif if (sna->entry->file_name != NULL) { //check for missing config dirs g_mkdir(g_get_user_config_dir(), 0766); g_mkdir(g_build_filename(g_get_user_config_dir(),"hardinfo2",NULL), 0766); if(strncmp(sna->entry->file_name,"blobs-update-version.json",25)==0){ updateversion=1; } path = g_build_filename(g_get_user_config_dir(), "hardinfo2", sna->entry->file_name, NULL); GFile *file = g_file_new_for_path(path); GFileOutputStream *output = g_file_replace(file, NULL, FALSE, G_FILE_CREATE_REPLACE_DESTINATION, NULL, &sna->error); if (output != NULL) { #if SOUP_CHECK_VERSION(2,42,0) g_output_stream_splice(G_OUTPUT_STREAM(output), is, G_OUTPUT_STREAM_SPLICE_CLOSE_TARGET, NULL, &sna->error); #else soupmsg=soup_message_body_flatten(res->response_body); if(soupmsg){ soup_buffer_get_data(soupmsg,&buf,&len); DEBUG("got file with len: %u", (unsigned int)len); if(len>0){ g_output_stream_write_all(G_OUTPUT_STREAM(output),buf,len,&datawritten,NULL,&sna->error); soup_buffer_free(soupmsg); } } #endif } if(updateversion){ fd = open(path,O_RDONLY); if(fd){ if(read(fd,buffer,100)) sscanf(buffer,"{\"update-version\":\"%u\",",&server_blobs_update_version); DEBUG("SERVER_BLOBS_UPDATE_VERSION=%u",server_blobs_update_version); close(fd); } } g_free(path); g_object_unref(file); } out: g_main_loop_quit(loop); #if SOUP_CHECK_VERSION(2,42,0) g_object_unref(is); #endif } static gboolean send_request_for_net_action(SyncNetAction *sna) { gchar *uri; SoupMessage *msg; const guint8 *buf=NULL; gsize len; gchar *contents=NULL; gsize size; #if !SOUP_CHECK_VERSION(3, 0, 0) SoupBuffer *soupmsg=NULL; #endif if(!sna->entry->optional || (our_blobs_update_versionentry->file_name,"blobs-update-version.json",25)==0){ uri = g_strdup_printf("%s/%s?ver=%s&blobver=%d&rel=%d", API_SERVER_URI, sna->entry->file_name,VERSION,our_blobs_update_version,RELEASE); } else if(strncmp(sna->entry->file_name,"benchmark.json",14)==0){ if (sna->entry->generate_contents_for_upload == NULL) {//GET/Fetch if(params.bench_user_note){ uri = g_strdup_printf("%s/%s?ver=%s&L=%d&rel=%d&MT=%s&BUN=%s", API_SERVER_URI, sna->entry->file_name, VERSION, params.max_bench_results,RELEASE, module_call_method("computer::getMachineType"), params.bench_user_note); } else { uri = g_strdup_printf("%s/%s?ver=%s&L=%d&rel=%d&&MT=%s", API_SERVER_URI, sna->entry->file_name, VERSION, params.max_bench_results, RELEASE, module_call_method("computer::getMachineType")); } } else {//POST/Send uri = g_strdup_printf("%s/%s?ver=%s&rel=%d", API_SERVER_URI, sna->entry->file_name, VERSION, RELEASE); } } else { uri = g_strdup_printf("%s/%s", API_SERVER_URI, sna->entry->file_name); } if (sna->entry->generate_contents_for_upload == NULL) { msg = soup_message_new("GET", uri); } else { contents = sna->entry->generate_contents_for_upload(&size); msg = soup_message_new("POST", uri); #if SOUP_CHECK_VERSION(3, 0, 0) soup_message_set_request_body_from_bytes(msg, "application/octet-stream", g_bytes_new_static(contents,size)); #else soup_message_set_request(msg, "application/octet-stream", SOUP_MEMORY_TAKE, contents, size); #endif } if(params.gui_running){ #if SOUP_CHECK_VERSION(3, 0, 0) soup_session_send_async(session, msg, G_PRIORITY_DEFAULT, NULL, got_response, sna); #else #if SOUP_CHECK_VERSION(2,42,0) soup_session_send_async(session, msg, NULL, got_response, sna); #else soup_session_queue_message(session, msg, got_response, sna); #endif #endif } else {//Blocking/Sync sending when no gui #if SOUP_CHECK_VERSION(3, 0, 0) buf=g_bytes_unref_to_data(soup_session_send_and_read(session, msg, NULL, NULL), &len); got_msg(buf,len,sna); #else soup_session_send_message(session, msg); soupmsg=soup_message_body_flatten(msg->response_body); if(soupmsg){ soup_buffer_get_data(soupmsg,&buf,&len); got_msg(buf,len,sna); } #endif } if(params.gui_running) g_main_loop_run(loop); g_object_unref(msg); g_free(uri); if (sna->error != NULL) { DEBUG("Error while sending request: %s", sna->error->message); g_error_free(sna->error); sna->error = NULL; return FALSE; } } return TRUE; } static void sync_dialog_netarea_start_actions(SyncDialog *sd, SyncNetAction sna[], gint n) { gint i; GtkWidget **labels; GtkWidget **status_labels; const gchar *done_str = "\342\234\223"; const gchar *error_str = "\342\234\227"; const gchar *curr_str = "\342\226\266"; const gchar *empty_str = "\302\240\302\240"; labels = g_new0(GtkWidget *, n); status_labels = g_new0(GtkWidget *, n); for (i = n-1; i >0; i--) { GtkWidget *hbox; hbox = gtk_hbox_new(FALSE, 5); labels[i] = gtk_label_new(_(sna[i].entry->name)); status_labels[i] = gtk_label_new(empty_str); gtk_label_set_use_markup(GTK_LABEL(labels[i]), TRUE); gtk_label_set_use_markup(GTK_LABEL(status_labels[i]), TRUE); gtk_misc_set_alignment(GTK_MISC(labels[i]), 0.0, 0.5); gtk_misc_set_alignment(GTK_MISC(status_labels[i]), 1.0, 0.5); gtk_box_pack_start(GTK_BOX(hbox), status_labels[i], FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(hbox), labels[i], TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(sd->sna->vbox), hbox, FALSE, FALSE, 3); gtk_widget_show_all(hbox); } while (gtk_events_pending()) gtk_main_iteration(); for (i = n-1; i >0; i--) { gchar *markup; if (sd->flag_cancel) { markup = g_strdup_printf("%s %s", _(sna[i].entry->name), _("(canceled)")); gtk_label_set_markup(GTK_LABEL(labels[i]), markup); g_free(markup); gtk_label_set_markup(GTK_LABEL(status_labels[i]), error_str); break; } markup = g_strdup_printf("%s", _(sna[i].entry->name)); gtk_label_set_markup(GTK_LABEL(labels[i]), markup); g_free(markup); gtk_label_set_markup(GTK_LABEL(status_labels[i]), curr_str); if (sna[i].entry && !send_request_for_net_action(&sna[i])) { markup = g_strdup_printf("%s %s", _(sna[i].entry->name), _("(failed)")); gtk_label_set_markup(GTK_LABEL(labels[i]), markup); g_free(markup); sd->flag_cancel = TRUE; gtk_label_set_markup(GTK_LABEL(status_labels[i]), error_str); if (sna[i].error) { g_error_free(sna[i].error); } break; } gtk_label_set_markup(GTK_LABEL(status_labels[i]), done_str); gtk_label_set_markup(GTK_LABEL(labels[i]), _(sna[i].entry->name)); } g_free(labels); g_free(status_labels); } static SyncNetArea *sync_dialog_netarea_new(void) { SyncNetArea *sna = g_new0(SyncNetArea, 1); sna->vbox = gtk_vbox_new(FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(sna->vbox), 10); gtk_widget_show_all(sna->vbox); gtk_widget_hide(sna->vbox); return sna; } static void sync_dialog_netarea_destroy(SyncNetArea *sna) { g_return_if_fail(sna != NULL); g_free(sna); } static void sync_dialog_netarea_show(SyncDialog *sd) { g_return_if_fail(sd && sd->sna); gtk_widget_hide(GTK_WIDGET(sd->scroll_box)); gtk_widget_show(GTK_WIDGET(sd->sna->vbox)); gtk_label_set_markup(GTK_LABEL(sd->label), LABEL_SYNC_SYNCING); //gtk_window_set_default_size(GTK_WINDOW(sd->dialog), 0, 0); //gtk_window_reshow_with_initial_size(GTK_WINDOW(sd->dialog)); } /*static void sync_dialog_netarea_hide(SyncDialog *sd) { g_return_if_fail(sd && sd->sna); gtk_widget_show(GTK_WIDGET(sd->scroll_box)); gtk_widget_hide(GTK_WIDGET(sd->sna->vbox)); gtk_label_set_markup(GTK_LABEL(sd->label), LABEL_SYNC_DEFAULT); gtk_window_reshow_with_initial_size(GTK_WINDOW(sd->dialog)); }*/ static void populate_store(GtkListStore *store) { GSList *entry; SyncEntry *e; gtk_list_store_clear(store); for (entry = entries; entry; entry = entry->next) { GtkTreeIter iter; e = (SyncEntry *)entry->data; e->selected = TRUE; gtk_list_store_prepend(store, &iter); gtk_list_store_set(store, &iter, 0, TRUE, 1, _(e->name), 2, e, -1); } } static void sel_toggle(GtkCellRendererToggle *cellrenderertoggle, gchar *path_str, GtkTreeModel *model) { GtkTreeIter iter; GtkTreePath *path = gtk_tree_path_new_from_string(path_str); SyncEntry *se; gboolean active; gtk_tree_model_get_iter(model, &iter, path); gtk_tree_model_get(model, &iter, 0, &active, 2, &se, -1); if(strncmp(se->name,N_("Send benchmark results"),10)==0) //only allow to disable sending benchmark results se->selected = !active; gtk_list_store_set(GTK_LIST_STORE(model), &iter, 0, se->selected, -1); gtk_tree_path_free(path); } static void close_clicked(void) { g_main_loop_quit(loop); } static SyncDialog *sync_dialog_new(GtkWidget *parent) { SyncDialog *sd; GtkWidget *dialog; GtkWidget *dialog1_vbox; GtkWidget *scrolledwindow2; GtkWidget *treeview2; GtkWidget *dialog1_action_area; GtkWidget *button8; GtkWidget *button7; GtkWidget *button6; GtkWidget *priv_policy_btn; GtkWidget *label; GtkWidget *hbox; GtkTreeViewColumn *column; GtkTreeModel *model; GtkListStore *store; GtkCellRenderer *cr_text, *cr_toggle; sd = g_new0(SyncDialog, 1); sd->sna = sync_dialog_netarea_new(); dialog = gtk_dialog_new(); gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(parent)); gtk_window_set_title(GTK_WINDOW(dialog), _("Synchronize")); gtk_window_set_resizable(GTK_WINDOW(dialog), FALSE); gtk_window_set_icon(GTK_WINDOW(dialog), icon_cache_get_pixbuf("sync.svg")); gtk_window_set_default_size(GTK_WINDOW(dialog), 420*params.scale, 260*params.scale); gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_CENTER_ON_PARENT); gtk_window_set_type_hint(GTK_WINDOW(dialog), GDK_WINDOW_TYPE_HINT_DIALOG); gtk_container_set_border_width(GTK_CONTAINER(dialog), 5); #if GTK_CHECK_VERSION(2, 14, 0) dialog1_vbox = gtk_dialog_get_content_area(GTK_DIALOG(dialog)); #else dialog1_vbox = GTK_DIALOG(dialog)->vbox; #endif gtk_box_set_spacing(GTK_BOX(dialog1_vbox), 5); gtk_container_set_border_width(GTK_CONTAINER(dialog1_vbox), 4); gtk_widget_show(dialog1_vbox); #if GTK_CHECK_VERSION(3, 0, 0) hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5); #else hbox = gtk_hbox_new(FALSE, 5); #endif gtk_box_pack_start(GTK_BOX(dialog1_vbox), hbox, FALSE, FALSE, 0); label = gtk_label_new(LABEL_SYNC_DEFAULT); gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); gtk_label_set_use_markup(GTK_LABEL(label), TRUE); #if GTK_CHECK_VERSION(3, 0, 0) gtk_widget_set_valign(label, GTK_ALIGN_CENTER); #else gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); #endif gtk_box_pack_start(GTK_BOX(hbox), icon_cache_get_image_at_size("sync.svg", 64, 64), FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, TRUE, 0); gtk_widget_show_all(hbox); gtk_box_pack_start(GTK_BOX(dialog1_vbox), sd->sna->vbox, TRUE, TRUE, 0); scrolledwindow2 = gtk_scrolled_window_new(NULL, NULL); gtk_widget_show(scrolledwindow2); gtk_box_pack_start(GTK_BOX(dialog1_vbox), scrolledwindow2, TRUE, TRUE, 0); gtk_widget_set_size_request(scrolledwindow2, -1, 200); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwindow2), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolledwindow2), GTK_SHADOW_IN); store = gtk_list_store_new(3, G_TYPE_BOOLEAN, G_TYPE_STRING, G_TYPE_POINTER); model = GTK_TREE_MODEL(store); treeview2 = gtk_tree_view_new_with_model(model); gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(treeview2), FALSE); gtk_widget_show(treeview2); gtk_container_add(GTK_CONTAINER(scrolledwindow2), treeview2); column = gtk_tree_view_column_new(); gtk_tree_view_append_column(GTK_TREE_VIEW(treeview2), column); cr_toggle = gtk_cell_renderer_toggle_new(); gtk_tree_view_column_pack_start(column, cr_toggle, FALSE); g_signal_connect(cr_toggle, "toggled", G_CALLBACK(sel_toggle), model); gtk_tree_view_column_add_attribute(column, cr_toggle, "active", 0); cr_text = gtk_cell_renderer_text_new(); gtk_tree_view_column_pack_start(column, cr_text, TRUE); gtk_tree_view_column_add_attribute(column, cr_text, "markup", 1); populate_store(store); priv_policy_btn = gtk_link_button_new_with_label( "https://github.com/hardinfo2/hardinfo2?tab=readme-ov-file#privacy-policy", _("Privacy Policy")); gtk_widget_show(priv_policy_btn); gtk_box_pack_start(GTK_BOX(dialog1_vbox), priv_policy_btn, FALSE, FALSE, 0); #if GTK_CHECK_VERSION(2, 14, 0) dialog1_action_area = gtk_dialog_get_action_area(GTK_DIALOG(dialog)); #else dialog1_action_area = GTK_DIALOG(dialog)->action_area; #endif gtk_widget_show(dialog1_action_area); gtk_button_box_set_layout(GTK_BUTTON_BOX(dialog1_action_area), GTK_BUTTONBOX_END); button8 = gtk_button_new_with_mnemonic(_("_Cancel")); gtk_widget_show(button8); gtk_dialog_add_action_widget(GTK_DIALOG(dialog), button8, GTK_RESPONSE_CANCEL); #if GTK_CHECK_VERSION(2, 18, 0) gtk_widget_set_can_default(button8, TRUE); #else GTK_WIDGET_SET_FLAGS(button8, GTK_CAN_DEFAULT); #endif button7 = gtk_button_new_with_mnemonic(_("_Synchronize")); gtk_widget_show(button7); gtk_dialog_add_action_widget(GTK_DIALOG(dialog), button7, GTK_RESPONSE_ACCEPT); #if GTK_CHECK_VERSION(2, 18, 0) gtk_widget_set_can_default(button7, TRUE); #else GTK_WIDGET_SET_FLAGS(button7, GTK_CAN_DEFAULT); #endif button6 = gtk_button_new_from_stock(GTK_STOCK_CLOSE); g_signal_connect(G_OBJECT(button6), "clicked", (GCallback)close_clicked, NULL); gtk_dialog_add_action_widget(GTK_DIALOG(dialog), button6, GTK_RESPONSE_ACCEPT); #if GTK_CHECK_VERSION(2, 18, 0) gtk_widget_set_can_default(button6, TRUE); #else GTK_WIDGET_SET_FLAGS(button6, GTK_CAN_DEFAULT); #endif sd->dialog = dialog; sd->button_sync = button7; sd->button_cancel = button8; sd->button_close = button6; sd->button_priv_policy = priv_policy_btn; sd->scroll_box = scrolledwindow2; sd->label = label; return sd; } static void sync_dialog_destroy(SyncDialog *sd) { gtk_widget_destroy(sd->dialog); sync_dialog_netarea_destroy(sd->sna); g_free(sd); } static gboolean sync_one(gpointer data) { SyncNetAction *sna = data; if (sna->entry->generate_contents_for_upload){ if(params.gui_running){ goto out; } } DEBUG("Syncronizing: %s", sna->entry->name); if(params.gui_running){ gchar *msg = g_strdup_printf(_("Synchronizing: %s"), _(sna->entry->name)); shell_status_update(msg); shell_status_pulse(); g_free(msg); } send_request_for_net_action(sna); out: g_main_loop_unref(loop); idle_free(sna); return FALSE; } void sync_manager_update_on_startup(int send_benchmark)//0:normal only get, 1:send benchmark { GSList *entry; gchar *path; int fd=-1; gchar buf[101]; path = g_build_filename(g_get_user_config_dir(), "hardinfo2", "blobs-update-version.json", NULL); fd = open(path,O_RDONLY); if(fd<0) { free(path); path = g_build_filename(params.path_data,"blobs-update-version.json", NULL); fd = open(path,O_RDONLY); } if(fd>=0){ if(read(fd,buf,100)) sscanf(buf,"{\"update-version\":\"%u\",",&our_blobs_update_version); close(fd); } free(path); DEBUG("OUR1_BLOBS_UPDATE_VERSION=%u",our_blobs_update_version); ensure_soup_session(); loop = g_main_loop_new(NULL, FALSE); if(!params.gui_running) entries=g_slist_reverse(entries);//wrong direction for sync sending for (entry = entries; entry; entry = entry->next) { SyncNetAction *action = g_new0(SyncNetAction, 1); action->entry = entry->data; if(params.gui_running){ loop = g_main_loop_ref(loop); g_idle_add(sync_one, action); } else { //if send benchmark - only send benchmark //if not send benchmark - sync everything else if( ((strncmp(action->entry->file_name,"benchmark.json",14)==0) && (action->entry->generate_contents_for_upload) && send_benchmark) || ((!(strncmp(action->entry->file_name,"benchmark.json",14)==0) || (!action->entry->generate_contents_for_upload)) && (!send_benchmark)) ){ loop = g_main_loop_ref(loop); sync_one(action); } } } if(!params.gui_running) entries=g_slist_reverse(entries);//wrong direction for sync sending } hardinfo2-hardinfo2-1331e88/tools/000077500000000000000000000000001474767047500167035ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/tools/LICENSES/000077500000000000000000000000001474767047500201105ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/tools/LICENSES/BG1_LICENSE_CC0.jpg000066400000000000000000012274251474767047500227670ustar00rootroot00000000000000JFIFHH   (!%"/#%)*,-,!140+4(+,+  ++++++++++++++++++++++++++++++++++++++++++++++++++ }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?/|DUc\einS~k:ܤ=E|\?voo)ƢPm]ҲdrC2jZisjEWP.T5`jƋ,qj c:( SVL_/OQ~C܇jwa/ ?Gh"{YbhZ7HCG??-Ɓj>!m4P oA j@%[>!m4_Fۣu$lc+xT'3sTnx:?@u63j#7=@ &yWl׮G@hZpKP?|CA-Ch o Fƪ>U/ߊ3kTmx:@ :n:[8~"mP6mKP#ƦpդR_?OQ⪉?SQuz"ܿ2뺼]RZM'p8;؋WPS5?54{8vk;jjuhp?w?7>[SPG`o{E+RL; J)lg:$Y/4@o??%ƋiX2aЋK O?;d@%> '% 3=slX'$}h ھs75>gk_@?+KUڿo!ƝA[X9}F񏩝qOti 5oؿw?7_Yaoð}f󿽇?_Əgښ]={k;"kz(TGapխ);ݎ+4wW?v6mN7 4̨Qw#?7{8v4o{]C5?54{8vw?7>[SPG`o{j}D?R["gZե&cu _C;AKۚ/!ƝWQ$vI|HU+)?o>[SPG`o{MC5?54{8w?7>[: 1Hu j?@$Z5 -o?EcR?"1SԿ)ƀH _@$zu/ =o:? AKh\ΥO4-mЫ) 9qӺ+jwj=;f󿽇?Əgښ]=;k;jjuhpYaoǰ}f󿽎Xpj7,iEj^&שcMs:?$? ]wZ?y5NW/&xzNğ֥/Vc^U&]C/go{MC5?54{8vw?7>[SPG`o{%]wWUu[ƭhdn_cڇqA]C_hA[ ڿo!Ƌoj.VhA[vVi\+4\wW?pwW?p_@jwj=;}f󿽇?Əgښ]=;k;jjuhpYaoǰ}f󿽊 ݂9L~#"Vr{&-KQA_P? /KG&ۤԯ]ecj\bFR ѓ_1ں^o{MC5?54{8vw?7>[SPG`o{%]@꣠[$RA_Pd$  gC_QOHu ?@$:  g A}G_h!ֿ/K_%ƀHu ?@$: VY6vI9$[SPG`o{MC=5 g՘ A}G_hZƣ/4ޫ6[SPG`o{MC=5wWJêƤ䅸p?RIlg:?#?3S2C=o:??uR,`r֍ƛNopkں=;k;jjwhp?w?7>[SPG`o{oB#DʽY+JMRH j_TdkԿ)ƀH j_@Ijr9y5cԴIj\"h5Z2iz?7p?w?7>[SPGaf󿽇?_Əgښ]={ 5uaT*꺀QjֆM-Kgڇ[P? j@AmC_h-K? jE? E? K?+/4\{W?p_EWPQ5?u4{8vk;jjwhpYaoð[SPG`o{j GB&oOU9?njտ)4]nj.cx84jV?7p_k;jwhpYaoð}f󿽇?Əgښ]=;k;uE]JA;ZYNNwbmwbWwE֨ ^goVcx1ںgYaoð}f󿽇?Əgں=;k;jjwhpYb!}oQQ:&)7NjoU7vNhVIɿ'fY+)_M-E&#げ  =:9rb%x90֔uk>h ka`֘@#dPBU@-6_;@'W{ar~ETU(Om`H鑚 ( ( ( ( ( (MGyԫ @my2 +,kqqz]ZIPEP@Mkq 0M4Zt!d%Op#%v\m32+! qБg#ր!/by6ַSU*MHxRu`A?5B7KK]iڜr Y!]@9(..8R,Qjsg ?#N=p*rK>}²f8&0s$`@Cҿg\S 8Z?#/.ÌE䟓@&}739nna9wVIEl@R62[>s K=^Gia-w+̒6dߥ-֑hVWPtʹZR`İe c`}2VkuW,j\#e"z@&ƃ_idjO#j3󟗌y Ɵdw$73<.d&]&ܗa8~nxgIG\j+b-e|iؤVMl'a9@xGAԵ 3}d1ld$$Hwryhw̖7?k钏-Ҫ32ye@|+ae-l0 {|r!ټU@^]: 8[.4DlR)c\1߰|1-͏uCFܺSBO s)`4&kh:1sLѸI$Ee=AaHQ Ǧ&.ykhb@܆R_0 æhYbFU[1ȼ}8 h3cgF.FaZYDjw$,HmKm"= lh:Oy'?mc1Ӝ߰cy?=19z3@֠[5!قG^@m}e}\yit: P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P5,位u9-wo׃!e=y@cw|AX*9(:; ?l1*??cn۟_3@P@O?q C_3|c~mCf/?ٿdپϓl9nf9Z%~+ ƺp+)Ko5MgR# n]&+A/#Xi"t9 @ @W Y6m(T ȸawr|'>"Z r#@YDe6tf/y[t8NڦK#_]&uyv_I$v=k{W$jc>möPJz€#Կ?/?o+﹜uZC'Mq:x9sy@?s8ր.Pt뫫0,huv1>{K˔Ddǐ1a ~bO4iY5ڗ&̊0Fg `=n?lu%CnN<ӌe4kl2mj~l*R'S58S(+]oV[]N.upf<zFnaۆXvJ y99\M>N}ŬA!F29ͩqqq5ԓ&ɤyX s8A@^NEڼ,1MD۲vޜ bQu&PLc;v sh{+-gTé^yJʞLX  QV[˙՟"YYl @׉-:9m`[1exs@kCQm;@1 }(W#/G@@݂." x"T|y`n#4 P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@^5OF mi-ghLkV>ۋ}_\/pIT\1"1 kfY"JŽ`( $ܚ$+i'fhg%P7:v}p=(~K d~f7 Q279#/[$7q'iSV^C/BrG1_4&uE2Kwb=({+'HcbP@P@P@P@P@P@P@HlC-CցlN}%P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P A5>a55[T^,RAճ ( ( ( ( ($p(&4jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP478WP ( ( ( ( ( ^OYy}5<3:S8Xu;} tP@P@P@P@ T U$h9KvN+؟j{FE,pGz@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@(uDR4:4nU9/Y\>[ր.P@ '}9(ҝY(SMjdu({Մ$Ί Uԥ(4և P@?}cα_!7ESAe̍=7.(PbGb((:ƅQ_7cǮ(n d`T( arqRޣy:H0#U 2M3HY}?uF?o 6!%4'::(k[i)o`2F@ m[3 $QamNNPK.ʢ`u=ϊfҍj2!m!o|ʃ4@l茶Ԅkal/ g\tͨC!eu˶hɸr9yZ5W"O0[L#qP~[w8@7v4hl4XY~_C&TxP3/0Lohzm۰~\IGLşdRkr,n12IڡT zNk_Y->Np\Nf:Ώvݭ4Rɶ9YIPIAv gzMJ+K_=%=M);&b+זZ==A,quq|iNJvJ_z.P[Mjo7ܺ^"jZS] {%Sn>M<33J78὿likmmWqW~?u7MMEV"ciZ[,Al6Aq tWwn}]c58w qrkoٛ$󑒃j$0|(&gk+_3FW}ߕz+&}1C{uorw,8$:ӓW_Rnmyj$FCn}qrCF?`'pm8|ܩ]J*M4}W]%.a魵-6-L۳PIdጩn4QÑI>lgEyJs1]m_>]Yϭb+mw B @'?샌}Ӳ}z}S|J;k{gxq|Yyh[-tA;¢#*r]k{[knݯbI1=ԏ&/N+%SM2K'5)n'gv#<ye 5, R1gCc|t{}]AUך{lTtoon+΂ryw9PWVv]vy\,]xJ mAߧqX̑vݬAl2泎?ߡik-+zJᛝ>Gk6En[*i8&֩_Nau_},%ӬgwiMjC('z7_V.OI4o_ZiV P{x$)}O˓9Jzm{kѵT|m>wJ{Ok<Di\Fv'#[jh8N]4ٺ׋w^˯kmtҭ[ ΒC 䜅uIg4RkOenུ!5.Z{%udi:fKF#C{ovKI,Eo?7GK??g={|H(Xb8՝$p1֝T彽۷]n#H$M|憐Liu uX;KY R>xڣeE=Zzjޗa)}DVxjnu;*M6,2@)%0qӚ2n*Vku=>~F.nE˧^%E/ϲ*8$fK:oo]r?孷ٴIe٦\9hT##KѭSROTi&ׯ]4=]^;R8ijIpy9=xZkfXJ;lYDn>`TsۥV'Rli֩IOrF%v{[d7( ;Xnr?vYX˭=-˺W5 J8N7\}vAQ/u;Z"յN51JWW j.2Z;u|F ϺW~]-]e{'[zNmJBBH8Nj£o:8uuq17z]u ,# *Nx,~wj~G+~; yb_c iqHyRà ͫ=ϦI8}մ]'s+؛+{ ;G\R=:tE{^޻uu|ܶj|/.M>+ɚpbJ9)I{EYnѵ|;VOrʓ[qHuR=:zgrgoק$'Z}%8>2@ p'dsM[ȾlspH $ &[ݽ9Ko*xjHI Y58̐b̸n89C=ko_"7i~EEM+D^I'dL'7fl-2{쳢H[9erTN3RRlioVRMEIN};][]t:7W61_X]AxdXQcVE۔2`17Qhk}K< UҤKф=L0>`Ro+_F'dv7t+N{-:: m݃9I夹ݓr'o]Ho&'hcRVc\!٢Q[!Mu̽/=>k[Ȧ.o$PĒ[#S㴣$zr/B8|suwk]Ȥ [ YAA;۳M|Ii5]~q[%Cj I?(~%5crB+ؤkwnE n9kj#)ɺNqe[@s>umm|B+G%X|T2+]Ti9ۢnHPbKhY$Ԁ@X=H3EӃMwwRRPm3k.˸FEpI](2dP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P[EѭVL7SY;pm!l.b5#mvrtcN5īdnc@%ޝw wvE<,ހ2H=sQӮmaPl K!v.xA#9Ey7 x$h2PzN#AsS%6d;OGk G6v 73mNP]Xu4@t Zt=r(J1RZɽ24Y[^m=&տ 6z~ ލib,Y;ž/c<7*r?2I&ex fQW~II|uTOM[Hs4|;w ])h I@ (oxݟ'Q( eXlj̠'s\֡_FezHenB7F ( _- \I$}(PQV"9uiF:++zv u;:I-L HF78pz wo^(,a)=uxF;#%ڻA+)qoƀ8C}MRr`Xpy ۶:h->@PO#@ό#8>!dG/+,x84\藖jha/ ʝ9up2=]oz~Uk}z,M^Vݾn_],dxX^ZuK :;6JP3Ih彖_$m^I_O4bYj}M7T6î2 jcEYkϻ~3rkV{]w{5=>bD 6ނ.TQϙJoT)5(wX|-S}) KuKDWkv ~p;5GR:6Ji?1sw%tm%'InjW6F.X=s}an%~^o#Om)Aݯoyښ^ϕzs:sZR5o#U7o ?swĞ&`!O"WO6B07gs`>H-S[m/o_5/W'*+W;%.Q+,yǖwt﷧l57Rk~e2_0x^?MK ywjvtNTMKw|Ckxͦ\\f0G2~J+<.-z_שּׂ4abX(dtJi{.qJr稯4|JyQtKjJw[b fFHn gR2J]}uZNͫ_o&|˪_jڅe5ڜ.Mx%X1C u{UGzk[ܕesNԯ$RҦhR8K{-K26dr8[ͭ\$eVoϠZw,I^vis..7%m-uymj,Hzw~ 6Nhڒ|˷믓%u "i-#k%|Jͻ'=^_q_NI|V_XyVmۚ19vmq-RH/\KeJ⨛MMkh*Oٕնo#)ԴtדJߊR|>*; =ƚ4qKyHݸqs9uַRTco?ucOLy5=:1iڄ.|,W=sK[Ky-~6ع\)]}gʲn-{lad!g zyW r2z߀UNqkh6h6j븩*c6T5,TltwPj IFl?}<=8B ZJVɭVRoi5ni׋r_m=E笧T*eYT&8tJ駷-|ܺԗedݚ-nO Yh1iQ{&/u 0q3)6Aۻ +F]ܓ]v<_SU].q^Wqj6O~em/Ŀ`mʚIcǽi}[_VGmK%MftM hoom<##o4.Hp I{kK면R2ͿzBϪ{wIs ϔ]˴ T-Nܽ#o)~kw^~ek_x-;Fv{m W]auzң,y}Vs*%?hҒ[_4vMg@ S*y^kUo뿐oOGڍ̆9Q0rqTf%؟VwWZdDnep6qU ~lw_=E׷o }9lX캆s-l"fv3Vp\F߯ܺS :DӤ,o  CI*( 4߮И~ٽ_[?uKu-Joq+JFI1V4m DP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@PsGz}KebĒ'oҾML#vMr Dɹ@;7 }*3#BU @5J;=d'%F+Mbn rx 4sBZx--!e/vgvwb$M%vmši&u{:k{cKxv<[υt}:M>y ]oM8=7q!U_Sk@B,5EweUc9 fNJ _cr\ތ˱O-4#>)|Z$Zm[IҦK,e,T몒JG_ӧ#F63~(43Wծ<]dLI:Ӱ,tzvwJ-yaH!FqqPMK2` #I񦛪MCH-\>V i J{4gomov_en=1c ŷ:F=KU݌~;+[H ۈ=P (-Toi毛,C,HŲbig[ʖQuJr}@5 'h`Q ( ( ( ( qjvPj Y_xP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@>8CR}F 穠  ( ( (ivuP@€:S&-=;$vr2H "_AWBε2kd ?_ :u(,_'P?YֿOг @ +gZ?€AWBε2kd ?_ :u(,_'P?YֿOг @ +gZ?€AWBε2kd ?_ :u(,_'P?YֿOг @ +gZ?€AWBε2kd ?_ :u(,_'P?YֿOг @ +gZ?€AWBε2kd ?_ :u(,_'P?YֿOг @ +gZ?€AWBε2kd ?_ :u(,_'P?YֿOг @ +gZ?€AWBε2kd ?_ :u(,_'P?YֿOг @ +gZ?€AWBε2kd ?_ :u(,_'P?YֿOг @ +gZ?€AWBε2kd ?_ :u(,_'P?YֿOг @ +gZ?€AWBε2kd ?_ :u(,_'P?YֿOг @ +gZ?€AWBε2kd ?_ :u(,_'P?YֿOг @ +gZ?€AWBε2kd ?_ :u(,_'P?YֿOг @ +gZ?€AWBε2kd ?_ :u(,_'P?YֿOг @ +gZ?€AWBε2kd ?_ :u(,_'P?YֿOг @ +gZ?€AWBε2kd ?_ :u(,_'P?YֿOг @ +gZ?€AWBε2kd ?_ :u(,_'P?YֿOг @ +gZ?€AWBε2kd ?_ :u(,_'P?YֿOг @ +gZ?€AWBε2kd ?_ :u(,_'P?YֿOг @ +gZ?€AWBε2kd ?_ :u(,_'P?YֿOг @ +gZ?€AWBε2kd ?_ :u(,_'P?YֿOг @ +gZ?€AWBε2kd ?_ :u(,_'P?YֿOг @ +gZ?€AWBε2kd ?_ :u(,_'P?YֿOг @ +gZ?€AWBε2kd ?_ :u(,_'P?YֿOг @ +gZ?€AWBε2kd ?_ :u(,_'P?YֿOг @ +gZ?€AWBε2kd ?_ :u(,_'P?YֿOг @ +gZ?€AWBε2kd ?_ :u(,_'P?YֿOг @ +gZ?€AWBε2kd ?_ :u(,_'P?YֿOг @ +gZ?€AWBε2kd ?_ :u(oxF[Z27й@u? kmw.km75H$H}@04 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( PlP[ sʈ6Տ?Z<(?; ȷפ_JP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@6GHgFK1M 9bBk_(4Pkn*jTexK-/WO, [%h'=, [%h'=, [%h'=, [%h'=, [%h'=, [%h'=, [%h'=, [%h'=?݂A(ZO*ůe>Ej^nyot@W%Z5);N-[+!P@P@^Z¿4=I&F@U Z@I q$gE'"7T(1|i+_ _P/NI >@h=N<)!~?Щ' ~$t |ygjvv<3fFݵ `Pc@P@P@"i lvumPp\@@P@ĿxSڶeS\F6vYW{j?ީ ۪+*'q'9s@@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@~%<=M_1ӅEǢz "'d|&fj8E}_c/ukv9,( ( ( :}\%~WEEJqY42$_.6&eY@øE|e_OUU㘅gsIQ,F cJР ( ?oP%&ooIHCJ (6:4=-Y>hwJeVvÐ$g~Ze9W0˜qt}_!ȓGiv>%Z|; /5;V~сRq@|OX<3*JX`;NHT*oO]}#^Nc{ќJ9H'p1@0Ϗ^2xAnUQ3c~%zg4x]ě. L̛a2";/~,4>RF0U8aN3"8uIiDLgNpC(foZphk.v YV%'K{u9<+G<]Q 09\P yCm,ĺd|$8@o%;h5c|89<s@m{ONm).9l7;O6}(Y,tܰ698Zo4 V-!c/#H0ёB?03g"wFoZO {uP@{|VҠԮ^ +' E '(X#yߧR+o^W3𯈴j%ȸ 0 Okig]Z;5>֨(( zō[ϾFncfJF@= >y׷O^_{~( (#7M!NaAC61튏h.7kjSS}g_& O_u6@RX*3E?~ݽ]?h]+e OX.t{-c1Qz|{7[O`M+~+:*rJq8:P[c'N4=>trAKuy)9[5%M_-o_3R:o_M?#z?־(Zi"tk xUdYle 9CS sǙ-.ݹR\xJuiG1Olzt=28WlIuVU͚( j^fq|Ro4X6D}go]/uN._?п@€ (6koq#X(#I?_[a(G#mw^P߈7yCy%>t~S@@z^sS]"ER kfbWQe'G>d{2Kyez+om>'{+av5\%nnlT+^gN+0$zoUm7g/=vЭcת6ZP>}> W)<v"8ԋbjպ-zg qFqtIҩ(>jGkkTo>óoݟ1@@P@5 < J[g8$Z5>-S(:ga"~=ǫq4q*Ť\^w F-grkKV\T3?OJ HmlH-PUG@|6_VQsk񶇥x{ZI0dHbsKcwZRˤ)aI &4֑xCtՇ9@ xC:=߁?o,x7} iuoZN^2Z`rNH@+]пf#)q2qM@_$R*( X؂nŤH^q\ YeO¬n'~g~1?k+z[C+,a|Em" QZ[h n T X')Qv^oZJ%M?0<}6Cm5jUy^П$#n93Er$c.҄9NRyY1x_YV um px#Z&~]^Tm4/ͶZ5 jP8+N+yY l^2q h"JjZ=^_+j̪˚NJ:^?3_O|PMwg1螞 rZٵپDTI[ӭMiJ(Kz Sokd'+{t[EwktOWyax$%v *}JQwIFR8JͤOPhP@^-WZ)\jф-cVwi>hjEiz}@yZ%1-۴Vy!լz=tYIAOkזh|UhQQI,&KEx xG|VӝE;9Vo]HEwWJv;l$ֱtc+R~V_uEuԾ6߈2ZX= 6m?xҢ[޼Kok֤R1K&)[wb/* =CQJK]Bh἖7uB7 H'NN\U.ݭ>WҗZqwqKcwTdյ-&msē# 3pHH؁/ֶkɫ~}o&Ktӵ]}gP@xG?Xغ"ej]GlgJUVQk;ܿKo?/eO/>do;gnq/}/I7_7m]k~&+{`M5KE[#-zt):0J輺_Uk*oNo{ӾUy?7YԮ|w+9a.᳊lPlqXźxjuoyr'wZ+OR^ꝴߦϧRƑU%et au,nx_YM+^vwMɿN2wdHz%ִ_a3RgancK{r1\N5UuT+hݫsT쟒_ϽKcz,$=B]n58;)ban\`q]RcRtWwȾv):kLt( HK2fLzzE,o-%]*1 yU =]-mU経8ǣIsv]6OM[Rf-EkjZ|K,( 6{ 9|opFYw~e0|VTܕ:IO_+rJqPk-莳_V/xPuu-KTyTG!I@ɑ< LbR\dVќԦB~{ivמ+^eoxS-3Ie)#vßQI%%]f}5o+]vmyq"nfڠnc}Ͻwm#éP@QjR JֿOyvhX<ƀ)QmUe::*߼"m>*օðxwND"}.dD)SکFrٲ^6ݧoUPTә66_Ao࿉樂kFV1M>~!yj%փ#ɋsz5V!-KE)[ QSޭUv~e|9—>%Y(πX'.|{b&[%ۇ\-=$^iUg۫x[As-˸X88eVM3V~ߠJm{(m綽.uҵ;Sn5&ҵY졹9]wVFէkVp5IyRXP@rk7>0s `GҀ8?[}ro-D^GmrBhG~ ;mPϦo v2g q(&'__Obg~ߛZ ( ( ( ( ( ( ( ( ( (Ĵo_|y<#jKRps9÷t<1K-^H~OV~'~ڏڵmk9?fE4UgS#;yHGЋu.K˥/mJUjY{6-}{|n~y%$C^KqIZKDm&]ϭC8"O=w7vG[X+E.lFN5]t3y0WTZ9ZE euKج`1l$~ kI¶侾M:=_oKh+1wԹ&xN}bK}rŮyjdlI9$vN;(;yo]JU\h7_iisGv+hw$u5taqzG;A@8)R5:ZE~UHԧgRӏ߻=N( :y֝?j?X?J"zt6%W/. cbI'PM'];OwsԖ1_޽oMA@P@,᝼eG} W~Gt>bWQF5`[ĸIw 9+M\IOv=:-28$ xT*ʊԎ~% 8"KGI7/ >ESY殪Bq*oGg-|*^~6e"~ io.i KUa9kugT?aƽ*;!d C98%TM37Mx˜⾝;y$ٞG?7 ?{jc xàŷ8/ n8$ ;Vb.Y94{t5?nI%gGU;S3:ç&kY?dJ)C[G]bY/^(ЄS{G:p"@Cs%G^e-u֚ Uej[f }va_:wx6HѤm.VP8WgJjsיio.X&{;3+>Nv?1Wf#ζ3q!Wn;N@8-?P#F.=6m{ ( "5 P! KWwxQ\wW.yY{;  pfR[iwa7J۹h0Nc #~%֮+Y yq11w=HOiz%59epgׯe_x[S| R×:ڻ$N!`ǖéѽrN-ms*Ǫx Y ɢè2Y6NY|2RO޶urZ7]{OMD445)&1QJ+d:€ (iug1e&@`Aǿ5Zj9S{5ost榷N;uMI4h8dgĨT|Ƕ8jRj{5]:Ҋ ӽw{|)N5ͩZ֤!8RM%]QJ<6k߅k77$e,.2A 1k:0J%-}Su$jh_z7Iz X崶ЦY |ˆ # O\kNg}ߕV43tۙ?w/|+}Z-O]P]6ɂ 0rH88~"wWƲz%mmt/xޑZQZ\jz,d^EΓt`"=N眎ԛGQZ&*1[y>sGZO}{utK@oa?Td79=ڷtYԔP@^[ݜ 4m8MT٫NnR]Vlc^2KUlSNT OL V?y_o+&yvSkSmamڛg)%tn\&F56Uml jgx{Η\\\^λu4 mkv&}蒌k_+w]d4߄MˬOdK 9@x$T$]^d IdKgռ/mme˫k.5 6<LV=<Ej>\]u6ﴽ*_u;Gh~X=o=XCp6 $T\tҺ잯z4YV_4ޖ_ W~W{z^k֭Ϊ4 /h#&/kj_sofmť N䗶]żŘ>b9B yWMSWoNx"W7jU3#"0p\~5ʕߙ7謼ߡTP@ym xvM3`Q1$Bzq`Y9sNSݝmTdH')J1cmחD5x87we? CW4MtY?P$.o3uU)8O\mnߖ⚚~k׿硩h:fS .'%6S%W3/ [MgoIw]C32! #4FzH=N):Z5cѿҒ=Kmpf s5nM~VNV%E*^m̟_9σ}O ^ͤ~Rѝ'`7^vTҦKO.hmKڇ[ BE,mo r_oLp Rr=ҷ{k3 ^m{v"o|;Xjj拨b)4!T}'s^c5Vn)|*/[+'wᶇ74x$,ͬk[<Üd#*Z2ZYY[}=dZ ]\-W#kV(sөUsZ67 zc:llsg>TRڊ_e4OOT\m_4q OYCu}XKgq.tRm+{1&ʿӷ޶:x#{ɱBsl5&kFRPP@cjԼES:i>w#y2x`ƈ{Uo/z*/fyC]=~->W}.#r_]nIqP:%e~%9~u{ n=ξխg~gqir">oaq4ʶ_;P%Y?Rχ>iZu걘 :DT c8p**Tw_˦*uߩju]BuFw浔۩*ZfNfC5Qlloe4;L8#8(%=vrr|6u>Z6ѬpB#E `V3"8=k}-GY/tF=6AP<5#T~| xE֙{giM~K_\޿59ǯSjiٵb#x_sk}ڎqMC\_J I5PRz{z-(.h&5#0= c9y50c(oЩҌM}8xKTw-Ai_zebʹ2Q()S7R_vƤ-5c7_ b []/ViwCs鎾97RSgv_Q*}m UhZkw&:I,-sDA,bsl VЕtrғz6~wVo~zI9а @s%ܬ)?K/ ] Fw:;]\Oa-67>߂@€ ( ( ( ( ( ( ( ( ( ( ( м;iZH`phO٭߸IsTu%l;Ś&I㶝`mp:N/q.pGZՃ_-u&k'Gnd֔}ڊ&f\p{6s^%akzޣ^[ү<2.N2;TFW/]M%ׯO0hào10نB6A'NssZ97S=Z;Tۙ?u&<1e4zSe%^_`zg?g8)T^6;$Wڭܒ'4{NF;M-E}Le(~8rvj~Muu&i8uwMQ5]N,mD!bo%xUTv z浏JIVKmZKޫ+w^I/:( {֍j7^+~.Q9!B<L# 芜mlbM4]6UפәX79a㑎9?:k55͒n~_Y izY/?hT%OZ]5tcz定^_ ɬ}D|9Yлmiz` hFRz' ~/ZwKEnݕq NrMYmw}_ ^f:JE,AQ=I84ԧo_5VzY}*\'M$y qF_4Yrv㪌[JucWZqiӕ5{zEAP@"޿^G (D1JFTzxjXQ;RZNXE#Ȥ=O\ӯiBR.!e.ߩ?|Q{\Z 4ycx X$+&kfdʚo.^SHl͈Ŭ6i`iB2כ{p''O-j^P'OGNqP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@>5տ4WS EurT[u.qw>o=C@kMNݢ}=Tt1ǚ)+2P@P@P@ ꈥ$M>N5r- ۰?v2Uj/=Z ( .My`|MQov@@iR ( ( ( (25ΤΓͨ#+-̖ҩ_C zPP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@u-:T670AQkJugJ\vcM.?d-a#(gX;?UV4UU=Eižj?"Ge{y)c(v_žj?"Ge{y)c(v_žj?"Ge{y)c(v_žj?"Ge{y)c(v_xyXz4%'bE{yFA`ui0ϗ+:}'-;)[@P@P@C\]$ր=-i?)Ҥ@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@C\]$ր={,)Ӥ@6Os*E c, =eR+Nf(}@'_n~ݥʀ]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨz\HYCVOiq Y@ uу# G-P@5 < Jȧͻ~1tVTK!n6H60x 6ݭ+~+ഓ]t1|GYk$Vv" 9Ud]aΜRr侶~j"dtk^_xJӴfK zrFELyދ_69qZ'۲*m&t]^i3݈U$=\r:kfkFBZehFuaO/YJP'tsy^Z:i66$VڧAQJ.K6do]}khz[$p2*RHmEj۲RJͷdjeFDv^]$ .ppF357}mv-vI7ݘh](`H5oҊݧI 6v%'doElxPԬ|A`ߞf E*dc=3qIKm.ki򾞦|/o /=C1g1;FN2qϝ*j}m}9oQҎe{4 |he|=&3=.6 yPR6󟿜v[r55 ui}_ch7QtM׵kjz֟I俼%ᦸ"6vX8$:YŹ]{/eh=}C+w7Zd{gyՐpY 2>pC:g8jpיIww2|n_f7kMXc^ZEuג]_ýȟ^&+Iy%k2;Ky,^/-E v~2stO':x{ RHt5fh~mEqݳYg&nv^R$eo=ֿ#/$'4Ilu3\+,A** pzU&?i}䟓v;F-䖗k"+k+fW6x_H@W0;I#qJڲ-v^/>]eJ-?k)ͤf[g.?)Yv2Iީ5/_%ͺ}LW n?og{W|)vJqj~E L%R} Q%~_M,e[^Dc#?k8'dYv,-gc=[Ot)a K;(b:~2h G*Pَy@@dMxm #4@C\]$ր=wŸ+)( }?$`n<}_--ؠ hV^%I [νTᑇ! @Zwm./jl]jQʳl᏿}(m+>~1*\!D0l20y@z ]VZ 4w$C}A@hrkwZfpujw\CTCFqJoUgAih߷u9x@Ns̅mOx2v~RORprvi{k3SW]v"tCxW]z7:U+,jU n A<ӲfV2QڊOAeXV\Dn%k C6))j-/e{N;_kwUգkMUtzS]Oz.|[$`yUOJ{-WoEݻtM_KMW;/ ʗ)$IsFe+|{3Y8sa^oR jS߆;o^hbڴ]0|*G5Iʢۢ~:ya'wݻ?[-7y[h%Đ#y))2TCߜSJ*U9v~vIQu_-wn iěۣ ٴc; d%s8 ަ~˩ HW 4q]y0ayU[r5/IOd/5uv%K&k_r-:Sմ!I$./VU9ep0IOOT֋u3qyׇۡ4MARެ1OH>[;Xr#ev)'W/Oz;UK-hK_%mu-kI]2RGork!rFԕw1@OOT֟~:J[_O_E–WPkybX#! Ǹ PEsMTV/m,KNu#O?i1FmG rqW^!]5l:j?; |WPc~2M\\vxlHm(m|nv.ͨ>ѳoMy\>qwmƗZFR={1Q8Ž}/}UvwKo hdbء_,qr9)/Q*~!k[k6uw(3HFr1S 9o޾q Tܩ|Ԥ)-NV{rmMsI{g*9~Ϝ 4Zmw_"~U}tۿ]T HESq| c{f|ϗkeOsm}IjK ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (<w:ƻ}i]nO:ټ>C1lTeʪEkEV\ۤ1\6q~"b6H#>5bJvVG5g5 K࿄"ѥ.Ɠ:x0pCmlZֳ ]($Ml;9F"I5=w"o |> s5k$ ȱ3np@N[z}ֽC:J*6Ikk~GAN![VHRHZEouZ M[- ,l_v&MƑ٥4Lid[ݸq϶+Sk7e6o폎-c趗:k[YBH/nh.pc'Eu/ag]d{#j\4v^Z/W|G/ XY]Oz#8^=(>ʲO qыX A}Vޤ3k3⟆w e=clH,A\M=9|W:q҃ZͷܶӹxU~tc1J$-B:;4w~]i=dg-O˵l: O=ji`B8/yۚFkKo?+3C>El;Fo1pcMhP@Œ0m,ԍ?("6((k q@y@xݿzxIxWE`r $^ՠA@dKjvd̝Y!loQx rw +[dU !hJ( A 6|- 3) 8X ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (+jwR\px rN_B ۩ 9P{P ( ?oP%&o> ;B?ZSW'͊ ÒIJϳ ǫFOx=rr{Oլ\/߂AD@ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ;֭-e6syo=ހ!.RX)Gͽu'ߠ;@P sAw7h(o۷Z F_GdY,PрAȤ_BMTjS ( Yw@~K5c@#_T/P?is(z{4=e=O\? .Y}S?rG義K9@#_T/P?is(z{4=e=O\? .Y}S?rG義K9@#_T/P?is(z{4=e=O\? .Y}S?rG義K9@#_T/P?is(z{4=e=O\? .Y}S?rG義K9@#_T/P?is(z{4=e=O\? .Y}S?rG義K9@#_T/P?is(z{4=e=O\? .Y}S?rG義K9@#_T/P?is(z{4=e=O\? .Y}S?rG義K9@#_T/P?is(z{4=e=O\? .Y}S?rG義K9@#_T/P?is(z{4=e=O\? .Y}S?rG義K9@#_T/P?is(z{4=e=O\? .Y}S?rG義K9@#_T/P?is(z{4=e=O\? .Y}S?rG義K9@#_T/P?is(z{4=e=O\? .Y}S?rG義K9@#_T/P?is(z{4=e=O\? .Y}S?rG義K9@#_T/P?is(z{4=e=O\? .Y}S?rG義K9@#_T/P?is(z{4=e=O\? .Y}S?rG義K9@#_T/P?is(z{4=e=O\? .Y}S?rG義K9@#_T/P?is(z{4=e=O\? .Y}S?rG義K9@#_T/P?is(z{4=e=O\? .Y}S?rG義K9@#_T/P?is(z{4=e=O\? .Y}S?rG義K9@#_T/P?is(z{4=e=O\? .Y}S?rG義K9@#_T/P?is(z{4=e=O\? .Y}S?rG義K9@#_T/P?is(z{4=e=O\? .Y}S?rG義K9@#_T/P?is(z{4=e=O\? .Y}S?rG義K9@#_T/P?is(z{4=e=O\? .Y}S?rG義K9@#_T/P?is(z{4=e=O\? .Y}S?rG義K9@#_T/P?is(z{4=e=O\? .iĢeH?&r(B6PP@C\]$ր=g'_Zֿe| ج ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( A47IGGzςOпՙ#lVF@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@C\]$ր=s1<bv*=@ iZJU$VȦOYP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@5 < J&(7XX##XAl֔vDSVOL ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( .My`|MQov@ ht?֤0 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ,qU8GߝߝߝߝߝߝߝߝߝߝߝߝߝߝߝߝߝߝߝߝߝߝߝߝߝߝߝVS @ P@5 < JݯLA@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@F ( ( ( ( ( ( ( ( ( ( ( ( ( ( pZ}P sAw7h(o۷Z|)lEP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@h ( ( ( ( ( ( ( ( ( ( ( ( ( @P?q&<0>&(7WFIn\kJ*&TrmT ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 4P@P@P@P@P@P@P@P@P@P@P@P@P@P@[R(k q@y@xݿzxkE+"h@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@F ( ( ( ( ( ( ( ( ( ( ( ( ( ( pZ}P sAw7h(o۷Z Ȼ׬_ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ((@\ 2 H^I$`I$0: : b姉ĉ5.tamlB2`iٶ{Dפ0 ( KkwtGh٢pYNN;-R}uk' ( ( ( (2uOhzMΛe; n6#IJӆX%HWCñ)+kyg8`K$Q@$KijIdsoҤJH2AuM4M5tIHe{+K啬Xh0#qЎ0TX+֯u\kl,E<HuKdtP@WKI/K$$@]%zqօmtI'$I ԚM+Z\֗VMoy'm*Υg~~T9Yr[՛蝾w=M C ( ( (ꖀ@C\]$ր=o|'{(X]HɥёNNPR}QPXP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Q#+y`%U)$r(eu#z;Px: ? km:^a[HI0q4P֥DAB(5??A~-io˥i1kHm Ti[c`0 4J_YZR_^ D:-3ƺOit8'kTbbPW2I⮴T -4$R1~[sj4G{e{*EEDQA8*{ySZ~W} .OD/װ/ǚM޹tĖQ'h"e_ :4g)}'[}Ϳ(l?ݮYk2ZM2UiI sk8ܡknܶonڵtPKho9i~NwUuL:+WNoX I\"5x\eTsg䜒;z [ի/3_ArlV b'p 8#R'u)&EJB_KgG~܊<&jz͏-w+ gi!yc9 ʜj[Ffj:wOk:K"A <97G͐qJNߍaSIS+nxEϱ!>*ӵhje%ZC+/VMi!YEVmtr;II}M1 sm_w:]ZQ5"m]ͳʳ$<?[*$إÿLW,yv:%hAmD7<kR]CַլUq9h匢!7%f;3~ ( (ꖀ@C\]$ր=c'h?Zҷ%>٬ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (P * [--M2FJE0sOLCJ BVCpRFXD[,=tĩ=,Fv9gX-&i21 gjiiM[\;K~x~ om w<=ԓZj}ND*gfThB^UmbՕFuo^nl1}o*?Ga('Gm`r܀'J胵xs;ڜ}.Og.jFl{"&ҮMҒM;*tӚR- x< {)tȥ7.C;!w8Z'U v{tֿ{68KE~So躔vZ/ۻMeUMNdoo081m9?k :7{;y.rr2c{V|EJ ~)|pVS1XOU+kϽ#G(Y%_oץX,|Le90eTK'U/E}-n־_K+K<)IE"6q %nԎ)q˽IQpV2[,x;U>h?j~5 ,Z]itW(YIl꺑Z{$ipQ'unכ a#-N2dgӚtҧ:NjvodN"m|kEע=QWqJ'Π"?gS6({-?wKxsQ.XWEIYV -uR$k8M}ׯmBMaE_9I~tsy/t^[ykF5_k0 iy`?x#ȮzpՎ۷KoJ|ohM?ƕ{m>671_">0{f3OOz/w]##,ܚrS3Nմ//o" C*!.queה^yRvqv}n~"v^ GlX~4`|WO^jp񴪶˙o뮞^eW$e_Tej'/Z|SxnCW+NGRw-_߰bq-<ݕ/i#1*XD(l*k9}nU_k1xNdzth>Fw9qRgkUv~*[9mUg4EivڪAn4ic #B\ִ+?zkR[J o|F'Az1O]hoG>o9튚RgחosJMvš_M`Z]%uHfN3Є7j|m;y/TMj{5_M#L^5ՙAW\!1q]jXu/h]:I^ͯԯ_]UE$Pe`G aB\ukGEhJ綝ZТԼMMZe6G;nf)Tc=_Z{&|[9~¢/_C[E>k"z]2GH#<+Q6F]E4v;z%߈lbfk{U37'V6Mm{_ȅ.i6;z%P@P@T( ?oP%&o ;A?Z֕/VgGqFfhP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@h ( ( (1?hڎyk$.p.&0!X(\.!kk).j} ( ( ( (9xRčg5זwlZo*h0ApATN^c+ov:.&%.5\Zܤ~I;;\WWRgcqx|䀰 )8M(-[3UKIMJ^kIm[OPBC[Gr*TQy^:vztxQF_XM-C1ĎXӂ"_q߿ i9{/ܷiMk56ymԴ1<E/7ArKkzV6߬gmn]]&!6i}[ g5'NiGv- ז]_\mm4G< Mob4mA]?WӮr9mq5\O2ɋFҮ#T)HnR6ob v[4PT 5`Nxi>Qh-yR:۲"Kg<{QW$ٯW~Κۻ{;u" m[OC\ ) 5Sn=LK]KXl]$nNhNqr!{xi(YzuPuT֓oWͿm&rmֺO/ֻAxm'4Gue9(h ( ( ( pZ}P sAw7h(o۷ZE-9*!]V]&@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@F zM K3v1NJwvh(RT三nQZQ.IryR91޺1jt7_?9'-e]oBC@er3TZ mۧ2Z/=oMG:״t_#h~O`OK˖ ˴M)?S]gk^Y/Uknz[𾃥j}qX[^nmR!qP4_6' }]x/̇O|=qE΍c8Mj1,*\JFsG'*';vJ9}5I>hoauZ^iw^m4+;zq]=T t҄++>o;/G6-'o;Hy& 1vu Ǚ G)a欯Ŀq ݣK_PdR ?gF k]i}nktH ᛍKm)Q/ N{TfKi8AN aj.SZH;h>h6a[pJ /'"Xqx-iOx-%)cE=X ғx>jXK 8le >ݴ 4Ay frƿ3B/.t*ͯiq#/t Km-ڵD$doUb"_+}<bmAVwbR˦3u6_2[9Lw0OYᴩV!m_gkxyž"&WS+-u*+}_z_T|[:6k[ zidF6G?*Xio?Ҵ/N5a%58׫Z'NJvXALtد^MMcm _ ;OA+Ii~->oѿn|Af;%/XH[=I׽^5?kNONY^8&EK?]o 4A \+*#zֿ\焜r6Ȇ<<h :5>@N^zgyJOپ/*:so$o ❇K]6Y- qf'ojz+?oh⾿M%wht ?Khb{><`s&-b)Iro,>.t ?jȑʁRKgOheOV{_ /k_~+h<eY,hn"rGO|R9}n?]hV%Gr}l.-/%htIo1@XWUu+K.Q(n(0L}-9{{!tGNEOorN3M'OVN}]dd\>ЧңLrDd}ѱ$pII;R_\\ug7i v\qщ'uJ*I 3@I%cyvogΐobݑڔ}K}7䔔{EhCq˶D9Sn%iF}SޱV~sҭamwأf[vwdI8O/{o? -CFo<˝=KgfI85{d,L^Icm_]f^ wt߻y$h԰+m~cy|w e9m7hcCv2i.y )DE)+h֍u"b]zL&|9aa;sx..e]5*ot]~C)Ǚgv^^w]{R}CT#@I#HFqe'+\lm-,ᵲ;{hT$qFU1+MXMjQ]6Xc89)Gm;c}׫VKѬ4氃ʖsqpwo38\[]!/z\{%[: kzKHp~ *;w幫}N1ec2Mm DƱ:}ӥ]:mʹ>Yu Qӯo .ti-{-m'IZ\{5v9{{]?$Ѭ$a^ P62rF33DW+muI? {'zcB9>еgJӖR%vݹ7I'=v o[x_ç*ruϚ9] )8gw¢9no/^5k$)o?`9h;O=A䜣Va?~*2;$GxGCVOjZGq1$b@W_gnj/$e2}å2闲,mr^1 2_w_uݫ?挾 e}A3yD!ΓH7~UԖy#Ko/"/%}'^_51ڦ o*~/76o4]7W핗߮ۉ;Nt}8-_a%57ViHĺST3xzܖBdQm:-{Nfk]X&\*@#A+GDsV fm q<KnɫdDJ Qq{3rhPkzCRɻwvu0҄*R魛_e6ESV_#OG̠3[bۻzMi\&+eebIJNNK%P@P@P@[R(k q@y@xݿzx/D kZV$Y5P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Q S[}wY*#ؕ@HjTvE8NF5(/cN!!rťs5$ݍ ( ( ( ( ( ( ( ( ( ( ( ( @P?q&<0>&(7Zz𖈙FoM.ר(( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ((@5ke^]h!yRqV8te5)ԌV/xN|MkK}[Rh#[gTa|s:^MNK>h>#њY#)% lAr92+8BI~˜UIE]_rVUQOUo/\]*ռEaa N9tV.<pA> %Y%s?ns=W3X}HѼCoKM`UYX\;$ZIrUmjo~z ΗگB爾!x/7޲۬4PV,FH9ƋE;}ٵ^Z|_>7h6>s$iY`EvbzتOsSv4^z^/>z,Gɞ rvB88 񶋮45;C*H RYINpykFڇ%fkj}+~2K↩ȼqvb4UZhVRIJzkweJx wKÚ:íV_jn Q. Â[ilx]9N8Y}I~(ʥ7XZ{-)_rψ-lv\j 6;xoru6{#G3oxYռ%x]16x,tPf~~vfU9ֱ<kjK=ڻHB1e)=_5Vj\tV`WM/;Z( ( ( ( ( ( ( ( ( ( pZ}P]J15Fą|^AO??€8ύ|V ( C@($\>:<*MXoa+ Ƹ8@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@h ( ( ( ( ( ( ( ( ( ( ( ( ( @Ay}hpkG@߄P=nVvQ@8S{5P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Q ( ( ( ( ( ( ( ( ( ( ( ( ( (ꖀ@ |yQwkIHM ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 4P@P@P@P@P@P@P@P@P@P@P@P@P@P@[R T>R8?J5a-?)Ҥ@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@F ( ( ( ( ( ( ( ( ( ( ( ( ( ( pZ}Pր*PIFl?|tcE'"7T( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ((@p,|g LFp}*;4pG\]F'fsxߝl4s˸_gTo]U?uO ^9>_gTo]U?uO ^9>_gTo]U?uO ^9>_gTo]U?uO ^9>_gTo]U?uO ^9>_gTo]U|:]FK.G*:*qoNg>:uձP@P@P@P@P@P@P@P@P@T(/?TszOzE TP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Q*5y2}w_ғlʼ)KgI$ wagr|=ɦhu㺿#G]"R*cNo S+إ KB[VknK Cr9ʎx;W%NU($+͵hN-ۧ h.Kpc;ch#Z$?. u(TRnd0RQ xz1\ђ.VQ98w.:`u U8D 0$+(Ew%V.N$V5>eij5wr2jWS7Qs{leԮ~S[3 ;hv/ g咺,Xo Kyt+Yx#sD'Sg_]pXJVM+j0CuEp1נ-i>w2J[+w-|3Z-,O$dn%uhqRvv^f(-Zs]Y " DҌy?W9*kފ̒‹qf$P9g3(sUV nڅ >&mh].пcamVzAqs(hh'weF7K5Ӿ[&>QB։ÖϣG-l4!OS2R32wx;;5%ў]+Kү4KHmA7S$?iPKQGOp߷z|CUWخM$Iq* Ü6A1ۦ-\SZzj UtSrݯ̊ڭoMub;âZ}yP~Cq6ﵵZY߸G iҶ[N&]jHkg\-d2gq9bgڥf^WU=7_UkR *kuN+K[kg ?К0Uk”i[[Oͥ7JGu=D<;e3fy̋|ޘ :VЛti;:kko/|3P|QxKkekhn56#z汣Щo/|62cӾWoKUM;> ohך[86o#+`UzW{g5z3z{VMKCUj? iKh [YA>UFNxvfwoZ*˧4.SKHM~Bּ[wX} zj+J2FL7́N9QJj UKu,wҋs?RqL ]>`[v,e̅<;9ݸc96;wNޛ;$nw]">;/$tWVe51cȌś(ESkvנFmWktjڽig zͱ wI0ℜ-M^NJO #9Bj/gͷݯ}48҄~:BjŗCx{$!UYbqHҩZly 49hGM[Fυ}gYu8LPK8 `x;1ISSWU=*Geo){߳yxt~Xo̲Fi㍡H<j)%]__4a;{m(sUyccǧz298 XU듞x㋔JiSjF^h%{[jxG5wX^{r|v\$jc( qq*M]/_UMޭ8iyיx7u+K%IML?v~UbzKm{j֪.?VӲ{nF-Z?e$Ziq*N8#Ԛ%8v5#)U䖞~zk>zZӼm/[>2Qa.ٴד̷TIsۏ,F_~Od^˯6f{Yo'5/ +Z>"=]549 Nr EtP|snthc66 W6?{J# c#f~z]:-/M-o;9/Wf-!γ. UGa(p$dg"m4c7,Y{꺫 w~/iqXjַ6 R K1]$@L_?*~en9>G'-Rm=)"bᡭMar˚ŕ(89qnz_P_|egR(( @Ay}hpkG@焤WFAatj ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( @2hh7GR=A)EI4ɴBKivuEqJ..pQC/}~sUT;O/VaJ Kj˦ [{$eʟ}M(ruF\Orj(;>[}9b!.A =qUn^'YAk^27Vh%^b%,\ JR;O1R徿a.LoI=Nga\`tD[-M~!W1sk[n]p Iˌ*`zբaR5կ}=mv*x{U]"Y $F2qҜf%zг6mibXl#9Y5kyvbB>5֗GNsxu4&U_6m,jWpy4i lp.! u#.d֏of]ݾQxbգ[*Cw;V2(fJ4C)I_v7cִ~8#V]+o+.xGHUbO١`lSJyрʽUnzv^dgB6RM$M41;=$Ⅴ#I}NPkO[]jd{m^g9H܊ @ztW[ރMV){y5 GQ;挬*˵)bWI)s:+LW//..yӦt`Qԯ,-eerb8!H!H]j~re{m^)]/[qXte#G[5k ~i:^ejqbU"0x;Fm7._M(]:ik}05-nVu6y g䓓c$VϧNk)s4_gc`Qq &9~TnsSZ5.ޟEͽZƗF+ϱKywwy's{}/<Ƕ2{w{AA++{y9wvD;VqMq5ҵټЌ/nW0$>o5?'SDhMMj- lq'֒VR_o7 OiZcqa Gqx~ OTXYVڟcnt/P'gyP$YBqRbg~{-hiIIV_i}6v؏Þ /KךO\#]!|W {i'f]}}5Н]FީG^Ӧ%&u_jzD![,vƊ8SNɥ`vO>o6oI-TQc9)/{_*N+[zlbKkSɣ[L&JwC0;ggT7!K pn-7iiww}E4̶R.Wk}ͣoF- 8v0(r5y9wCT𝎥SrZH28 dE8{V?~ d{zk/WOgp0˜A p涶kg?p9#o Lj|Ownu Dʱ U\ SCܜgӧv'4w]:)LL *p'Un=mky+~DҊCt{R>hvmsY[3s@Њ%(8[F~+ee]wvxsnjW`,bn3);>Y()YtC¿j.~y2=)-=;-Jҩ/wqHu}Fum~EUo-pυ.Ӟ=PI8mvo_ i%~_4jhGBit{&:zŒ{`{VϞS(rF'/4Gjvz:kēdrתqz'$V-Wݯ߯CIZQIb{ `q}aQA4߽del '{Dnto^()]N-쮶gSI=\>aW bhd ? -75;%/ŔީǕ]v>뗺ƫBFnZ ƣ9zL̢w_uCPP@nK@ PJ><(?;g Aڤ  ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( @SRӭ5((i?cնtVY[$Q/EQZ$Ӆ8Y,( ( ( ( NMGmq BKi3ѣ`-P@P@P@P@P@[R T>R8?J5a:l` 5פ  ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( @P@P@P@P@PZ4]AҮ5_$3'?>38x{:rN]z2q][z|mpᾏa?u[I7%< 6ww="םwe/Ji5m:LW9Md_e:q݃x.3cҳsO/%~%ϛRzӠ(:XMvtQr[hgELd#9;'O}R_<{M/7i|'NΛ}y<^֓‘ǃdC ([$ѧ˵w׭}ՙIy%tީtwӧKnX5;9bmplK r%Hg<ӵॶON?Zw㾉om6PXW.,,g֒c,Ye<3e2rMIFcwR8?J5a^RA#Odw{6P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Q ( ( ( ( (1 ŖvҼ[_q9 犈*j%mKۨl4oZ˨GF;>˙7}Mʧ.w̡~u{߿v*WFVOuAD|gw$RnV}Frך);K6Y]ƪ#[-eePp*;gߦI+ZW~yQmOwע{ GkQMvnTf]s;JqH=ɦ}}CÚVmy[KiĸqӥT۔vW)(SwzmVVsLO]d\Eu~\ x\ǚRŭtOU%k=NmWTԂo̗ 6H({%,~s/륬4jjP5mNHD u]yy`5JV[|i.ׇQm;}FM! ddUDe# qzF;ywf$O}܌_iVI՜ ʏ0I2)ެx9krh-][;Zw_KHKx7ZwOx54d̮0䂞^ vmg.Mz~_'O[i添w64  ;]]]K\2Lgh ҝ^h {f|.w{ah|IeE0UM븀UW##r3Hf]_ke.nlĺFIA+r @ ( ( ( ( (ꖀ@ |yQv % nGLݠ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (P@P@P@P@P@P@P@P@P@P@P@P@P@P@T(/?Ts#zH H JP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P( ( ( ( ( ( ( ( ( ( ( ( ( (-hP@^Z@ǟ%q&ml ?vMH ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (P 爏&4۽VxlDgv=$wF@$577ze.a3H6 ( ( ( ( ( ( ( ( ( ( ( (-hP@^Z@ǟ%y4[FEeVP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P(+-fku 0BP7B?q1In.Q4Gt8E~0r[wNI _qvFV֦dPpbٍt5-3LHѧ|O{jrkV623^TCol*5+OgDŽk]\N2:ʄd% `Gnii>GOT_uےo}Ziޗ>?!-6/,pXYbIfj5)_^T<(F~Wmmջ6AqAC{,oBK\+NAܧ' Kɵ/Aĵ` YHN'dA@էtShcRRM̼ pw8zsE?qE/B~=ԓ+[xFRkي862fGsQ\:rA_Rw:WD!_H28`LFmoUgn^4M*D:3 ''$y$I'n+|nͽzA@P@P@P@P@P@P@P@P@P@P@P@T(/?TsZOzE opF ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 4P@P@P@P@P@P@P@P@P@P@P@P@P@P@[R T>R8?J5a-i?)Ӥ@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@F ( ( ( ( ( ( ( ( ( ( ( ( ( ( pZ}Pր*PIFl?|tx_E'"7t( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ((@gm-AoY\*I')6I^Z-_ T9bj(+-!3]M1#QS|WbQW{ ʹ)7}2)Μ5f(N3W:&Y. Ē`G^3F3{ Û]ۭtZJy]dy4$.`IF.N\U,pH nvd;$ P@P@P@P@P@P@P@P@P@P@P@T(/?TsZGy opF ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 4P}FBDHp7 . ]ržrZU#hv> VGN?s 9P[9?˖?1?u'M_& HB\*`s8,x&yF>Tr_˺zݜM}߫^ﺶ/4xnw& _/035_4lYeʬ`0)iŨRq~nWmFiS̛k5O4kZ7%林?α \$\cZ8*+O䗖9$/.U+_&te\R+6Íb=kXi8̓SZR2VkRɨ0c'@j)AKm'T] MF. *DK(^3~V o9+ r*w{(ҍ?# v3ȼH%ŸaIt_sZ=_b=e-?K>3<Z&owґ?eh>!å:"NOXj2~_(-֡w{\4i ,!<#Vܔ+Shwk-J/#E Fw`<1G^B$[_޾RFw+}mm5},t7 #M)dR*\KWv ԛI'nU~ʥ>{3O lI!9m |[9$iB9A(/VthujN2{5n{Fھ*O} w+W 66 Um1f HBjzeoU*ԼS[m;_}yhP@P@P@P@P@P@P@P@P@P?-> ( C@($\>:/"Α^qKcN€ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (P]Zifj7ax>\V~^[T:+[Z%Ks,RI}+9)$[y:ˮ%4M%5<1n$S,I$Iݓ_RKl+.YG;6:.c:}7R$ɰm^ ([]rJ/-e6ub0 ֔ʛY3f!zm!&o#N13OZs/P6 OX!r"mѣ쑞Pv*M7߹W}>ɣXw vRySqʌ$^2}BP6h^"9 TS*r qq̭fTjIlr c 3՗K3N}{HE0IYQڈjF*)uCMK3ܴBݕDYǁq#T-= e+/2?1 ztMJ2اN-I5o[#Ex.GA+v(xGj*E$J~ʌ$^⾏bFmąDtbO; KQG>WN4+@ ( ( ( ( ( ( ( ( ( pZ}Pր*PIFl?|t1ON,}OlR ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( @P@P@P@P@P@P@P@P@P@P@P@P@P@P?-> ( C@($\>:|<!9aϯ֛osb ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (P@P@P@P@P@P@P@P@P@P@P@P@P@P@T(/?TsK _ݧ{6iP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Q d$1<:)fv8 ROa@MoZAΫ"7t!}E`Q+~#x~ _;@5? GQx%AmG7 ټVKͻ(ܮ@ʀ ( ( ( ( ( ( ( ( ( ( (-hP@^Z@ǟ%i7I| ##57( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ((@|UI|V?n=]<~Y#Ru`gPuŰkMRoj.JG|gip.]Yz.滿ki iQz+*%%y; &N?5;(4 뷖=,0\%IKfRԼ;z=?-W74-D᷃"&'շpj3S7n#;֖y蚵mgm}f&OVFO1Qmv3״vf'dWGOu Q%p;QT5{6j=Zdfɢch,,(;S &)Tu%Z7m?eIwz4P@P@P@P@P@P@P@P@P@P@P@[R T>R8?J5ah;BDac-hf ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 4P@'^= H|CIwjf}0b>C7E{_ѯlXn#q P@Eg`d|]+J Qqʜ?N3Ԋ_><mF"PE@P@P@P@P@P@P@P@P@P@P@P?-> ( C@($\>:/"Α^qƝ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 4P@P@P@P@P@P@P@P@P@P@P@P@P@P@[R T>R8?J5a,)t( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ((@P@P@P@P@P@P@P@P@P@P@P@P@P@nK@ PJ><(?; ȱל?RP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P(%XXx}ҀPJ>@(?_gk~}ҀPJ>@(?_gk~}ҀPJ>@(?_gk~}ҀPJ>@(?_gk~}ҀPJ>@(?_gk~}ҀPJ>@(?_!= PP@[R T>R8?J5a¿,h)Ԥ@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@F (S@@P@P@P@P@P@P@P@P@P@P@P@)bjJ(ꖀ@ |yQw_G8M ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 4Phy .γiG7F l9e;dTzܮϓFni3konK"nѥmՑ4`խ.eU;+wfeZΓVZ{V} }jEhtا{Tn'"MHfe q iYy}{%{j=ߒݽ4Ukw^o"-?[gvnUH^H(\/#<:OB2&ok괾Χ.[}^oIS浯)$OWY>#ɤ+֟so 0\$$BpFQ3>3'qҊzݿҿykz$Y:'Ӡe[M$3H @r;)m}_O GMkoyW$ xPXi$vgwV_k~T%o_q뺼:5S eXQ PYpHEu+mHMuhY-JHџ]U^r,r[)P+vݕkm^-}xwh_B4emprGa7 j}CZ&}=--xcGH>r qךM/8Gk?Xݱ!6[x^g jZiw&o.;2\"~d-88uOjSZw2Ÿ4H =5FpQgegzBRUu{~)t7ԖH.k򼬥CxS`\8۽ueֶзNnS>\igͻԴ= , >: }-VگnaOw̟3Gm^bF<"#m[$9hZ"|/U6奭{u~[Zsrv~n<7*;5Q0=3gR.XwKrɛkE(S[r?i~ tnt4ƒ )(6$t gVڹtpQ}չu]p~ͥr_>}<%љ:-NN>%Hu] q.۴aAY0<4]w~w^꛺nzOiCӚ+>~̟:=kLG#^+^;[5g7Ez]6z=}gÖӤ5}7N:uJ ?p8ZN~qJ)ZϥSjj2JMTVף| j&{{g!'s .dUFN0M${Oyo"Ot_vZYe,p d?]I'ɾ]:Z˥^[V4zL_dD[YB %W`ayq^]m;E~F['еYc> HҗM0IO=k_vBRw-ސu6ijv4234`fF 8=jܹ=O c$ hl%J <:`@V޽_Kwӷ4Th^֒"q&:6'm=mb"_2:tKAĺg-S1*ҤUtjQV*H{t 6 aҧZ][~%)r˚=?EitJ=NKUy.d`!=W[6ɻȊkٸjR8Z׉5woDadM Cdcך'(~5 kVW穣s/Ɔ2"۬).2AP0\N*1z;2Xwzw>(lMFd+eF>eZx5Wҡv=[\ i= 쉧3JGU;6mNӧ9?`C0T{9a 51ϳxBx*g>>!8CQ9pZ j1TOb8x‡3oT_p{Hw[_SeW_Se%4 h_smO8xB=53h_smO(FOΛI4}^=?_x=մo)4Op;!)a 4Op{Hw +v?Gi 4{{j̾#}utoI4_p/_xQgM=_p{z_̾ yִ OUW'ks}.Z=Op?_y"S}N'_ُC ,KSƗaǸK?irKsǸjYݿG$4{4r˰pԳ?ƎYve???ƎYvef:ۏhasG _.5{4%9?.pذ_G$pذ_G$q?t4rK{H?=gO_G$p/.!O;?>Ivi6/lu=0i`??Ɵ{Z̾ĺ0ShU?e>(]gM=Op{z_̾zi}O>:PƏaW_/u^|AlGh:Їƞ|ElU¯>Cބ?1hGu?1hGh:ПcM{_zM/C&T{_zM1C&T{_zxoj+4}?6 z7EQ*+4}QO ţlU§>GރO ãlU§>GރO ãlU§>Gހx0Gu2 G4{ /_zL9C§>Kރ? lU§>Kބ_0GRe?5 Z7GQ*+}?6 z7EQ*+}C $:/*aW_X2G)2¿3hGoKxWm2 ͢|_U¯=/_xu_OUWN+C6T{ }sotOTWN|-C.T}^=/_x=w]ҏ?~ڟ/xNzk:o'a 7M}oZ?_̾x[8D_WN-C.T{ }sotOUW ͢|_U¯=?_xu_OUWN+C6T{ }sotOUWSe ׅe?>/*aW_ڟ/_N|-C.T{ } ׅe?>/*aW_֟/?9 'Q*+d[]i2 ˢ|_U¯=?A υe?>/*aW_֟!?: 'Q*+u_OUW?: 'Q*+Se'^C=Op{j̾¿3hGmOWm5?2 ͡|_UƧ=?_xxS}5?2 ϡ/*cS_ڟ/?<  "5?i2 ѡ/*kOO T{ hпaGkA hпaGkA hпaGkB{?4/EQj+{?/EQj+O T{dO T{XwA hпaGi?>  "U?txK T{{XwA hпaGtxO T{ ѡ/*cS_{?4/EQj+CO%CF=Op{XwA hпaGk?> : "5?a iaGjcGG1T{)a!?`xG1T{)a!?`xG0T0',נ*g>9Q51ϰҵK-V.{g u?iOb4-P@h'A~=P@P@P@P@P@P@P@P@P@P@P@P@ TbXzJ(ꖀ@ |yQv3@|-iqͪB (56W"{eJ?$9rgcK=ǑzpyӪZL^kwCC?YbX^|aGe{V g\fR3(aF{"KܡQn&6kH#94j[1Hl9L٩ՈJVЊcBzHHC,( ZP('RƍbBk)D`plR$>MH&#J0'g#D[p:Ve˅CHR3r3lymHZF4 F,LCV465Rn6+3xGSr"1GTblv`͒.0JqPާLv{`lr) &,˸ʜ֨D)>Obu|楫 ;O4JiCI@Fhu3\&r9h()2zա&jD3&lҚ2h,?7J +bš8"r*\GFcˆz{UX9>1*8r(c|d(-,`ebx@Jb"1Lvd ņ@t 1Qb7a|04Z@("=8Bv#6l 9f,P R6M8m+ HD1YNgG0IV=\,.aA)Ch1!8LrFr5 eN-mIpkTMҡmNVHrs4fISȥRTaR t(QEP  iX.}(JAZ,>a{RR!S!CHb a@R!1@(R(bИ!$1M\P"l4\4X԰A֑hB aCiCRJzcTsyMɉs,%,b;Yt (P@Y]z={z-{z-{z-{z-{z-{z-{z-{z-{z-{z-{z-{z-{z-{z-{z-{z-{z-{z-{z-{z-{z-{z-{z-{z-{z-{z-{z-{z-{z-{z-{z-{z-{z-{z-{z-{z-{z-{z-{z-{z-{z-{z-{z-{z-{z-{z-!ϠPdrNMP@T(/?TsF? 6Uσv{H oF\/s [x%/Zly-nZ[FkQ9Y (0ʕ#>wԭ*dW% KUkwSY8NtFG+e)XX*@S,_Bpq["4`B5q_\eb<iXDr)*& 0)0Q+H4Ю4&&5k(+"%E!& zҰb`M%l[)Ak9=!6P+E9H35V1(JʼnbYNeքX eqiӊR:"{1Y+ 4v qZV Ұ\ b+sZ)S9G0cҔM³h1ۈJ3` CESs"62\jHs3eq$։SVͲ5H$by4Q N $J H_,PUǬdPP,kQBڑB2t$g@BF"<` +ʄEG4I H%q4F4 H.= 'j. 0GԂK%#)$+69 VARſN/S\'Y%P@h zq@hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh =Ҁ# 0h @Ay}hpkG@X?<<0N 5r_1_*u~yYm{vƠJ, `r*OAK9Isj3 tp+XW3sQsMp r+8Z((z4:cs@ c#4҂2^(@EaS2T+ʣ*^HdgS1\LDljFDI.($k[zSAcV"LˮEa)TAc)1E 5Ҳl\>AW'e*s(lc#;pGAJ<&:Qp}(@sW)irJ8nDcڹMDkԇ@+G0HͰSȪr~;Ž`oAR4)))^OYT+hԱWY2`otƺxrhI*;bRL!q2ebø sI1  9J)Xbbݼ1JJBm`GݴB(bIELLPPb(`5 (sLc.)bE4 @@7m+ !G#E7NZ1gvazHJ:( @*.(~7_˧_N;"}V9""8.1ך͵)=dSP赡\2;n a#fqzS䃛-IQboB͏.4qVz./.f*YFBFRoIYzo^9Ǘ:_Dپ|@+tVGsfʜ9ORÃqiIoKwSGkuZŮZЬNXnPKb9 8oIEfnlQj\W^~jƱM\_zvNy SUTr1:ZR _݋>m~zz):t巿$?mN&J]B+ 9' gY_m KN:{mm^)/yZY^kwϭŝ;ŰϫAzf^\e[' h%I8뇧ӿon/]n=_s?&lR]3V:I`Dgp\ aL&;yy{_^ۮ㓷7.{w[_gɰ\:G<{>L}Kis&YS1O4EڂVn쇤ӿOz^.{e~K{sesbvk{D=v3/Nx&(=lQa?]^׺MR|pݧgOViҵhf'9.ҔTu_Um3{#In|Ű@E޶m).~7#O5=jbbrvs T&Yʖ*vqvݿwz!{M/Iߧ!ίZ*ИtWpzC^F}OSӝ-%wiQ յ 46d7Dc$0d!{ҋ[iN-;twW֖{u*lڜgܚo&UcKG"m+8 ㎔3}-7R/YNEk;/6#YTu(XN2k-6vXЮG9hC$t78Yؘeꒂ ( # C@[R T>R8?J5a1-4cryE7#j_C?{y?~x{g(&SFJbs8g(y^`3C5R b9W=rƗ;>TKvCⶌ3q+4@W $ vqmeb‘Hi2]MXbʌz͖S|W6 #4ÕSűϥZ%zS"nSG(_zMozB 84ћ=Rw!|L/H=h KpjDu4ӴW\ZP~jycM Y:FѬGs|2NF}(`r߆|qVd ㊫8t`8',3Er>9 :mEq5:KS̸<P{SZ {0šW%mޤO5i\S050 xұ:lwU{K.r9(K97R%iGZ9Cc]ޗ(s 7#֎QsO0׸ 3OWey.D+5a֪fra9|XfDg9֥ID$9 -ɢz3L|\d/8dTخa! Qb IIܙ_IDH"@.{Sc zSƖW"ljV+Js"ќ!(&09GqI-E"hzR5Jͥ5NMîy߆#EsɝFұlR2H("#KIg=*n4yq_/Ö#E~aa {p 98R`@ sGnznb$1$G a(d|d5maEp 041-xȢEkE'4&&˽1I*}1j5x~ oa]Pa:HuIlK284s@0&(ǵAJ@7Z@(R(s@ @E6p9AH7 B(!C~ u>N睄P@QNC@h摥AZHvƏ?1n1VJ}#+KaS\=X- /[$z4pjY$I:Nty6ǔ?/w^C- ibC3&3?!`:}o̴R^j]M%9Pjz~WM7mh75m xviۦyEnb+L ]rqnP^$mW{klUIOu&ޛM} xRK{.n*>B9*fx \Aڻ^=V~Bw9=⓷uۺkt k|7}a[[Zi^[]dK0|FӾYr2R]9 Xe[ؙR1JNI]k7'6Ia{o5~s*n`ffU,\qiz>ɶ\lmuoGR*z.K_JK]+Ut/L\ &:e9ƫF<ݻgj8{۷{K}v&;Mr ׼G P[3j>wU@qT):)ʤ]XIۺ}>z 쉧J)FN1rh۳ <_ۛc"VpTA9<^k:Rm}߿f-zIЗB֬m7gY@KUЫ/+8.o+y;+'_.815}Z_T/[[OZ\>9XByp@pvwtZ8Y濧Kv ުmKZmuӷo|Ic]Mӎ\6̲;lʣ@ Ip+9RND޳Iz%oi$NmeYkxw֣k* iؖ3n6&8LϨ]L[(3)' Pҍ8~WV],k-7"& R b#qD A[f,5|#3N奮EuCsyq[I)˻V5_o%%o1Oim|KiFS +ޡ?)KUf $nߚc7B%I©#eU'{qSR44q}Ubtn8/ Ku;X*%~x:vU#=2o¥9GwfoO&42I4'ϭCWi=^e-}z$6Z IiRh{n?8-lNkԋ^^Oȡh7X ]wB %QvO(y?/K\{_|MWFn5 :i{55д+F1<(W拷o+E%]>ԳPwc%6I]w lb6 JqJ.OjL%;S~}^±EP/ aq6xB:$J{E~/)G}~ie{Hkir({AIȋmkmO%H dK:E:\iv)/_}czau+ۇ)Q88=߭?Irr_Nn\)y& XܕaP`aϪ+y9z6/ϩ5YgGȅ$X vO@5|Szh[տXG[Bߋd-wr[ۛS XyMz_K_NL/@usIYG[ Уjk%62[F}_mM Y\V\CW++ 0G'WoGd(O䴣8/K,=II4"lbd aWc$U5?&Oj7 vl\]&ymÑ1Ӛ)ȟٷګ~Oy}Ϩ3T\ҭh)$K&*Ra-, _7,ַ_iscĺdz,P{ib#KOl󫔟SS8A*N/9Ǩ]O=i F]Zmywp@UipM'~fAa@P{(h pZ}Pր*PIFl?|txJH$=,զ@|]^C<67ƽL'7<|~gΣU$k{&Y[=}꽡{ܨص w옃V9 L[i&KM >EEIzERnb0hn&Lx & liSҳNV7u`NW=+;3t2F(Cf5DHlhf1i&<Աة-Kb3o>Dҹ-=k T-S#Gֱu cSU tA{2D#ثnrR9a:E}LV"5U9֯(T74ɡǚ.+64ƚ.$^ӱHzJAE֤Cq4$4kqYԂ6Օ3L^SKf4B(:I#r2[(&UF2k p朙vmߍoʎ9͉SG8Iޗ)\K!>Jĩ /9Ұ{ g $bqOM(IdopYzұA7hyցyދDϞ1I+FǚCÒ]&Q2MީJZdX$h,0ɤ-G2ךHfH2&I-Ya+X v .@ă@\acvE+tc2 s5H$Pcw#68 aaȷ8)qVKarhp'  D D46B29Vrf@kr:!V$$kR:#Fzf#A2;} EH$HF)hU8(ޕ6\Vg#t85W lcL(4\vxXis1K,=ꔂls}h4WEighW3ԗPw [NkG,ʻZUnq΁_M3"h3ʐG h"gf4dP6iI )Hwoq֐Xn  CB@ xHILR u(ZB$Q@!q@sހW`!Bm B>?k}ل}+; ( @f ] h ( ( ( ( ( ( ( (9 IbH䈓2Pێ($Qſʍ{nm dGR8?J5aGDP~BS{lkP@.~۲G{{hVgs:R>^KVfN,Gy!<:'5K/`2[0Q ݔl5fhѲԲ'b.qzP 6Euƹ[}L؃ڶuՈmS>a%k']d몒:=`ځ`An ?l +52kkUJQf͎g֯- x{q@H.g0iS@Es:{=j$##6}+ H̹yj"PosJРDfBnzЪT ْ-~ЗLx9U tޕjvj5422GrzC'L;|Q LmzQs[¡mM]@?Zߚ7sbPsHs)^ {aCY]Zƭ Kٕ5~ դcZ;/qSD6#; 1bJw=DLepH:w1bx"6)R.֧~F=rf"͓9 HhKK)ICTO)'H)^N4T4A!aHČ)O0Qi2F搹D)p>QDZ9G(L\R)(xbLR`phb;dN/A7NhdL&q6LlgZVȚ_UeiwPd ӰVJb+瞆^WGJ5QF`Ϙ [=rK d:\ J.>Qh M"ŒsJhMp{gΥzM oƑIbc֕ 0i 1qE.!f94) "B3@mhB)2( Mლ z@%Xw Rc }&}ۯկ?~gfbt ( 4P@J0@G?hg}րZ>@?hG?hg}րZ>@?hG?hg}րZ>@?hG?hg}րZ>@?hG?hg}րZ>@?hG?hg}րZCp{(1c9 @Ay}hpkG@߄?SS{lkRP@,~}|oB&|:քQ 4b#\eb^/]V24M#TJD tí E:H/N޵J'آAz}j "^r 5]KݒAtSmi׬5 s)YOZ291K(q4ØκMe#HȸcqTIdBBy56EXܰ4&1yp | Y,X9ƫ2 1IѓfN([$;"p+hsNF*Aɮf Z  LuZ.Fi V-lLHw#qLW+>ldEҀ!-±1֩ vL;s@(S(JRnCҹtuF̏c<8$>9~niCa;4X'CW,Ub|q\L g&.=)DVfLB(h< 3`gUȋ ƐqJ4 2$ID#1@Q"EȔ ShϔE"tӱi2֕֓z ւ,Ns6)ȀK+PcAj7:P(ɩg\"]21'&et<R-H8oQG1\4l 5e3D͔+Ffc6Eⳓ(PqJWBqE4h!ct4Ȣ.4L P1N1Bh@:ӸWqWxէa4Q 1Lke29534T.0-)Z[Ct~,`9M Iw*HRq@% (c,1qR4P1!i4".!Zp!qMHJLQpSLTM)_^~;/S\Y%P@h UVnwh_Kwy/ր%Z<@h_Kwy/ր%Z<@h_Kwy/ր%Z<@h_Kwy/ր%Z<@h_Kwy/ր%Z<@h_Kwy/ր%cqM2 ( pZ}Pր*PIFl?|txKE]7ƭ!?+J}IgA)bU? 1 bsPRCM(aA>BEaϭvG{}kjhu:5 V=zWImS?2媂H<և4)# qA<[ku3" \r;lɮiq+ 3E/ Z%6qdU-jͬ>pԑobsI2& B2ԛf J\Ԇ0pLZd/#c&6w b$0昙]%4C' :qUr%IWs1,ɚՓ8K}Ȅdǖ^"6YjE1dVQ.Bh4Q,G ĆEPe("S'aҋ MX,F+ Hd,0MCE\alT4RBnɠ 4BC-YQ6%>X&n*,G qz _ڋ7fM0ԉ ܳ*AY҈3C:SЖTfԲ00*FK^yZ.E` T2~j,<ԶZ4-X(.&ŻQY"]kQq@㊆2E* 8:P!1J)S0ց(Ƞ`)ZMb4F:SңҀҐǨژJcz c`jFc:V I+'ݞ+E!ry\򕧳Wvv.%I#UVf#S7 ]4XF xj[r̙+ԕIShfx[ Tք!&SCBPH) 0(R) iE"M!@(`1@ 1sH`ii-"PS@1/;xpc>NdP@Q |Ӱ @P@P@P@P@P@P@P@P@P@P@P@P%8oZAP?-> ( C@($\>:<%"^PKcV€ k> ZW2gyyHxJqp(CHI \P 8jYG@@J8&7q[{7OsZ|Y.bb#6ܒx'T1-OR'}*T+Q;#Pڰq:TP.#TҰ(RPd*k Tm5cW\N)Jt@ݎp09z h͕bEMzvrE#6)AH!d< v &[IwtN&Nc5Eܷj-hss/cߥ0l(%%d5;-2.Dgij)֡2%3ݐ)r6Dui8TZHR'1i"DPÔAh"B!ռ3xn o^o&w愃UF0 9#׭iIU䶜.󾚑V杚jzٯ]omt?|^!]KM?ZdPsp0Xޕ6׫iiQJ]"=t?ZycA$]m*%Umcݔ\ˮ ZϦHdXu7)NOU$c4✚{_ot)IF.Oei~}|]/zΧO{tC <Vr<#i}ޔT3w:υ4{=FIq ppsdQH' xcoo }ӫo}NXgU>[/Z:c6w5/qBik!pdgVNUz-N}Q._#͒6A$qFJ*),y8MM 74DZ+_>JMJmHCh_c-42FoQKRכkk{v]6n^ͯ{kkkkIF\][47щe[WXpeU%x<(vQsoE]{h5:;wE}/ƺ{okiy&fyme+|BI⎗򿝻q6/kkбG٣to2%5vci^ ׽յ&=/~?E\.6[J6m k1FYC_uodk\]'JdrT9Un19[ח~ o֝Znk|0[K!i߶imkmdYqCLVI3\k׾l0$TS?1Qu{`R;w큖U"SK*JP;T(ܤv ɭU#)7'͎+УMX#|`cҺ9߻eЮzœY9Ǚ7qF1AB1NV+IoVm\L̻-;sٜ+T)Kd}+D5rZ3eTH=*3EP+ڣMsI+ =s"͵&3)tEU&Dw+1g<+8nrjM Ӡ'vtcfݍԬ$ %%G83cMHD(\f^3Mh;Gq5\s-v53RpqCi *,ZW MX84FT$bw$47RXЎvUs)A3.]= QԲ0- @`iM Gh$8Eg!w56+I&'8&*%jr;B>߾kELSdzeūK`=Fq] yu5s]}B-jgu-Pwt۷agrb%Acw@Eeߣ[V&U-ׯ5>"xwR׼QE*φU! :zfqoYϷg6\I)R)?뱝s I/fy-,ռlBp=q]5%QԎOKhw[PMkk[dtnο w*[[3X0&W9 / #&9N߅MkcLli댗({'mkE;bF?]pŚa%f<ͅA1br颿{JnݼnͼR}2 %nmchZM#8+#.{)?={v魆PѸ{׺5cqw?|h򤁎)㓁D_+RKOZy1M)'_sYKoqVb5/;psN*Mk'w?dxOusg$:z)Rn]KٶqM7.w淕d9h-?vG*Ы >Ʃ; .7X^KoH"Kno\9)DB2 G-騾J.O/'e[='W\;h!H"&UL̄er GNZ3K MYUuf'kcKn$K7Qc!'ߎ3;..k[.m{ٛB_ t]в"If:k?ߗSJ[uh]淖t; O^k:N'M^ K.]͍ݞj_/UpqB/fw`ڼk-5cdok}H.m\UϘ~նҶvO}III=u|- c=B~C_J0$RԴ4FXD*`1'9\9PKk;.{K8ߣ.+=ѼkӶO%,yLmx*[k;_x~ qovkʐBQ߼ɍ3b?kۺe;|խT{m#xngA|R=6rW}r(" >y4Ԍ4 f098i\]hO_1Fڤip K)S%EX o~\UnIw^ /gIYkOx 29QDYX` 24IʊjSP@P@EA@[R T>R8?J5a?*h)Ķ5 (?m?|Ӈsxgx$mg? |b"% :֎{2Kt1u k6ySXʭe,36Tc~k.sU4 G E ~.B nOK˰rNGi M 5|s0{TL>G [MGPu m6˂on]Q-mAYqV]IY\n;mpVr*s\ԶPjj]Z<̹m `-Nv]Z87EQ#8 Vr6fP^ʐ+'NDk5-.վP@Agg-~ekHh!8P@P@ OJ#orhP?-> ( C@($\>:#"^PKcZ€ R[+s>>IZ|޻*mc*~ xAinarJ7+o% ]pr=uS9c)` 3]ѵy&:u%dԂy}2(\xgC6JiQ3N1KQJiFny8)Ə3;7hxYN睄P@Q  g?3yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyv^FsҀ@nK@ PJ><(?;ȩה?֤0<'V_ K"nt[>WW_N<_C^Do/iQ3*jȨ.VIǭ|:{ۦ0+|CCuiT MA%ӿ|_M H̰|uO׻= *S ww&pT.B\9Eس{bJnp٥!I7?*\iv/Q=FTtJ~%Gu=i*F-j% ӗML%5} \ceڸSƥi"0-jz^w *9⵰WA52 z29jۡA5#,ߴ|c#xN7]1\KƤh Hp+1HMԱܶ.8RV`hj!R$Y9R\c,i '%{&[=N*y ,wi WJ 1h4Hwi.1ȠC\S@WVDsZENd'5w3e)m5Iwս+,G?6 5L^)`q[_FU$ḑbbC 0  4nZu!4f]Z\!sE M“,) nLZA`$hP@@~{k}ل}+; ( @P'v~Tlo@~Tlo@~Tlo@~Tlo@~Tlo@~Tlo@~Tlo@~Tlo@~Tlo@~Tlo@~Tlo@~Tlo@~Tlo@~Tlo@~Tlo@~Tlo@~Tlo@~Tlo@~Tlo@~Tlo@~Tlo@~Tlo@~Tlo@UPG@ @P?-> ( C@($\>:<%"^PKcV€ ګS]?ZrOs?Wv KrbwGRg=O4ܵ2xhqޅ~w)+%tЊ;Úǽ>3Lk@&%G1'ueKwtsΌjlp懪Wok[o(&65үtes^;INN+n[4tךjGa r|4h*jWֱKҁ@⚺ N(Kqh_9j<׭mȊqg5Xh6PIұljY&]"'VqRe$@g+) jnh>)J0犥"eȿ ҴNvHmjIn-|̌t$\duzt-s'Ldt6 N&}g+)DӘ =k&Ey YGךC,G֤e$ ,h`diڝc>F1LDdZb@Bh.=KBh !,*Z >MEJV- 2:ԱW5$ ha@i0@CE1PE2Y^Eb" "RPՠ2.akxI"`e#bo·#W^UdLIZ-nR48f  O0SLP1 0g5,bh@&1i0ZC@ҹCn} Zp4ndGZgva:E'JJ((@I [?wP`P@P@P@P@P@P@P@P@P@P@P@P@E, +P@[R T>R8?J5a_*h)Ķ5i (<3k>>,,K7|m5ׅٜ!\d?PkIڤe{-p\]%Ogwhe{,XjlZ`7,s%O|SRw 'xlڗ˓6\|u/[L⭇<^il7GwKc҉kx >=a.ϨFc.'YXntAC})a4NH Ţm:6|m%bZvzLJF~XN˧Et^VK*\ADqOTcF*)ݩᅳ7$4}Mds^.":AJZ"8Mrh1<]侃v+ {˷p^Ms+bALZjXW (!͒h4 dlrz:xBG&{ޛgq=t/* }ڗ0r`+B= t@J[Cfg_C ydymEz8jϙ6_+zRǥ=]_TzRjS9d @ȩ4iw" -'qFE,`5oRФh"tsLsmuT)+H !sҪa08c}( '#rIl;{K{nb$M4fމ HO穬7qnI M*XTH j+hX)&X 4qLwApY~ƙ"}hCvKb29=;$FH+2]r)""k3t49&#+WCd^9r+#= c#xuy#DhfȲYb>e!VxqV N8b\8@!lt!9)\,<@Isls4I/W%1-I8l`8L$94BNZ '@4ҁ5H]jUt$YFx B2g#0T9 #nHda(Wvay.fsKYFje1gb Qi͚mqjId-ӯծ w^щҼ󬒀 ( 4PHu@UtìJ"žϙ'*c}kqc5sOucWww3@id$7u!<7}ӁӤ 4/MT9gk]~sc5ݼ7\Zc,Z9\ytӿqV|=Yk5JGԴ &.m" rǕ'=jg'e2KO_>TNk%У7}4/n<h<ķlo?o*v-U{;/&AUJݯݥz~-KS4;1Eqt xⳏ.UbJn 5oJZEu;CSjڤ ܌Pv]7kkF^coiKlFW΀<}i$Z?敿)FJG:ω|*}uZ|בZҨRf6 nFyPiԍ7^Z?MR*쫿5KxCou6LlF“Ҕ}YRW4CF CZմ<˟/w)u3Εvv>]Jn;".Q=CTGNڥ+zr'5JFݮcHQ5 ˝<$1nH8kku`-py }b+Fo-B%AGld󎆔oi6ҵ5;{kmR- 3@S܏383Vӳ!I5ux "Oي5an`XABz.OGZ7p_ug(U܎;vbN?_ӵVn%I#d׊QVG/vJ/wf-o&E>mֈuuzkoOkcGپ۱|38]ی> {.Mkm5kCqvTNq8쿯]5l|7E>E[i"d`<.?/=hݺ//u]!ԼGoc=eK5VR3X'h<(?; ȫה?դ0>~GgU]ra}zt= oz>!yoJ:XN0_T>v֚ƭ9ߡyL?xVou(.Y__lTZm2TeR[W8,Dt4icLMlvLW5Zv gしv>jbn}:lDq|<~Uvt{;ҟ-G`APsEeK1hſا519=r23vAX33jjRFx>Y"T* ?l IօYᕋ,559熱izKtw9'/`rɛNQ; iWkn&åO08dءA氒-=M[8YX,Ѷ`:hcnA@E)j44ǫ!ޗ(1G(4ajX@3O-ؤ T9HR#  Zd`35 Mܠ㿵o hC1&bZ9lg ^RZܩk70YZ$=jF;4CL?J7CM*ЙB(\բLNIwpHɣ dfѓqo%k[$ )H˿UufsDJǚ7Fk+0Զj⡖0 -E49<Ҹ+Q% .IM03wg+ =,.z.p. .w C~-u?3 =:WuP@F T@h ZjEԢ"; 7ʔ:xze'E'^"AԭݿĬ,7X >Ǯ19 tvT'T_tʵٓKQM 5=9muns~9ѯ9pMl;yݭtSxn;tWJomkӟPCZ$PP /6St޶i%jh7䵻~٢ý+:"{/ ="9ce76 v$Fy5m.OjUFz^_|mv^]$xŀk@vrt#\4<_5톬?^ dO6}\ܤoF]']%gh^)!7^ _+85~돹&]T{YkfLhcJlk}'vKa\&ߑZU|n:=o?{ny3:*ʝwiF6.iweo,Q7˻l[Z4E*'X)+87KFior9Ҝ:|~a~$ɿxі}gAOdC3~z֥Y߷cN6oXb׭dIIdÞA#QN+|+s|2Z_7MWe:GptK?}[^/.q4&Di +#=T}yz;_lsM6DDv{hej߼ ۾u<֗|7u#6.MH]b2k[~UUn$ QJJ2Ѹ~<׷9͵S_O/tap\]_3'i"2MS~om$Ԫ-ܵ8TCzOJ ^>m:ZV~wZh?hY?_jo[wy3ڳWK_fXߵߡxK?ۺ۳Y[^|s& YTP@P@UnK@ PJ><(?; ȫה?դ0>i|'!u>ׅ=[>Muᝓ9>Ykk 92[{F*h-4ZF&9 Pڭ.'T{𩒰8ƠvҘTEkw^Я㹱e9* LMJ>x,uM߿wJ Isnn? 5^aEtR#*6UcՌSW<ړi͸4#"r|ޔ61nrHWe8v0, y PqFm $VVf&iaP4@ý &66N􆈀188T!CSNhxsO5\1w+(lha5#HBi2S&94XG85sW6/J]g73:+U Ԧo :3W@YgTfREyS7DhEpX&X2Xw8NqDԴ$I2y\,'C&]*'̻+Hq0oI5(\=(9%RTyNbNx;N+5lfK)\Dj&WaCFj Ӛi4BO4a P݊Pp*.QC B$42qK9Ocx?qtծ}2+$ (P9g (ߥr{O~yҀ9?P'J<@(ߥr{O~yҀ9?P'J<@(ߥr{O~yҀ9?P'J<@(ߥr{O~yҀ9?P'J<@(ߥr{O~yҀ9?P'J<@(ߥr{O~yҀ9?Pt$ -hP@^Z@ǟ%y/to@[P?qЮ?S ; q3+u.t!N~V#5&2=:mw?ӅlXw[rFf<8KU)̶nRxe#Rm )bU"2|)\|ý(h)EƊ zl*BE;qG1[9 ܖ4+ ?@ |%wAn}9\Mǥ{k|cNm#^c<[s,Z;<*"+{sWG#>ҰfO'[z䨺|Jg>)ɈK+:\Hd֨$#IcqYi k,8*3EXh통8KR)lT{-Kb`5LM"瑊 -Ib#ٙAݝ^+ޱo'nQ1".fW}\՝Q;bAKS+xǥ+#VKRO\d}DbZZI$>V3yP08R44Dd0>pvd7Gk6G;Tx⻢9&s6rdJf.&T0lSVD!."H.$?J"Yj8R p_$*;x9X)9 P1@( S3X'cWjCW'ScJtTjw3Rڳ7M1ia1ߦ(I4uKj ץ Êw+ S5++sҋx~:U(ojbna4\0 ` ƅ̆NN hVoij4NHu ?:IƭL-_eEvF/6hܝnяQ 'G)\ċt>at( +gir+ 9bH,zԍ< a= #u☉V@N)XdsRHw$PHC 0cpiobBXiHλ\Z1cE& Hp 2GNXcF;rD;y`!Ȣq9# <(?; ȫה?դ0>fWr?F09q>]dr+Q3R f78E$n6ة>Wm&K {2,AOdkUTfs7tt:36*K/v}l!x{PVd?8?JitFVM+!͌dcA@(" ިL:Oc4^֔yՕ+hmሎUy@5y3Vԑh=MhdrWIcm `p{VSh ז[T5b[T}f:0m~z !iQg}Mchqp7[<3Qi&Rkۂf2בQdmjPՇٽ^afm╋U[r)rƛ`z\FLr*)Is)∉Ųݜ%UuvۅfۑYDJ$ @ver;h$pu # qf_犸=Ly2 'k&w=)*"'<ҩn' Đ3]pEV'Y9ⓓ44co\VwFVg'4`i:zRXM18Cw"0Mhf͆zթ\tk2-HS,x`'DR gaOC&q*㚭̥Mbsbtɹ!N+tt¢e&bn9@zH! 9EM18Uqr@G+Eqqr EU(zS(yE`HV@XP@i094/zc!&沜撛e{B>c]0c7Bզ/q[)a(3rDGqM,Yo!sYJ:aTׇVYƱtDiǩҥ+cyK.\ߝ.B=P~rrkyQ%&tG\FeY3Z9Eq9a\9 KCb'b942Uc@s@gP}Z{ɜsF,`'42R1 'C@ p1A,B5IcLH7$9"Grhɱ@&a()( L @"+JNu8BfeJONkNb9LQQT'аR8?J5a_'h9?ZPG_{}SrKc 7c?V+:m֣,I>mѤ J8\]źB9w4V# ZR#~ dLH9Zlj+VUWֶkhc:IkXG7n?pkFE(nyG<"ϟ%')"W-jVR4ʦ4<iܑs@;.@z|ĸQ.Q|(rjJi(\\Kb<zw !IZwx5,hb1AH+M%MH/zժ<9~Tc5S2MfB8[s&Z/Z댍s5fOOm}=4kcRг u篔A8>q׎hM.*_+{ƟuxQҴloO:e_)rA~0jTԞv Uq[(_~P"y#N99{Z0Zwzeݽ夙5Dl0$Akq&_[iR]Ǎʹd8"ե}W ὸ&K| V 9 GCI5nn66ѣYoo$ )#mZN=QtO5cftfym8f9=p09 عHa@mFe N=yhZ4Zꄳm/n.elgP2=/[ UͲPRq(dZfaLaC/% ,/t?Ļ=GOZ2n4 ( mz\®` Q>?\:ٵ;,6-c$:~ +hZp۫ĶI618I F#= woE 6[յግ![qLm'9{n+jP]-Ѿg)p~P=;vGo+ir]7;`oMA)\(P@P@P@VvGC@@T(/?Ts_xAր6h(j hp3U0|E cE V5cy !G65#IcHB$:yNuRMsI1qJø͢Xwni8'-5Ƨs$~[J;iN(F.lk+6"V14(h9}(wzPSG 0Tm+yQG]Hz^QT&tVq f0B7\:?J\飖tM]bW'֢S:pڳ*گGVTb1JY(HT"2⨋'5HAr(F3mJf+Dqm zhR͢4_sjUHp4ZՖ,Y.v:C,̹djvBқNwZrSFOV9ŎP~Uҝ8 *1 ,+SkR0u5c@l)GB;3ư`GӚIz+#oOZij+&zEs*$ITg\"'# ebrzr`6)J/jaehg#:H0nec;F^J胺3#{D۽+u.a)my>`E a֒[:UHkBhVkCU&Z+>+䑳/zf.T]u䞕qM(/ő0+Ӱ\r̽3Eq֑RS(S.4A"SM̛u 5WsԍiIŞ=}+Jlgr+#Q)LB`)(( HPM.QCӸE{Ӹrz.+{X7Sv.QRa89rl(zi;(4+RF3q]YYNE 'e#ҵUeľ?iN `kjrΉ:ݕ?zT3Eun"\kj+mi>oƳQ9φ#f}k3gi sr:OeP R' 8VSfC,F5D'#PLz͜;a1ERsdσol݃#?~{ThP~l c64XW!f֚Dj -#jYQ,(ȤQ Q`+hAb"'\9!v .6 tK+1UqT9xLEVBh!+Kw 挪M0feA-֪r3n-A$S&Mզxɒ2.-$bQʺ+)@LʚW<*GVem"29hn) b;L{Cj]OsP@F T X`8"{1Ӻ<A4ci\BHmaSyUaL+7rW9'}{u2)}k$li_O[yi7I<9>hAfH %|~Ye-g+HsBQU{_/*}FDfk}6*I۷5L|AJ JBXIȴUR&Y7m FGs\k.f{y7}w{ꢓݮ5sGƚ:5aYKkepfބc#_*z)bӣd Q$)'0֕4/%nuȥqxCӮk ,v.2OIGeU2mEʹƱ=_nX1GP͌1r( _?kn_u]g"!pӕ>R֧+W_ ;7՘H+7= Wj;ݹn?3Ǧ} mBP{x`ʼȅM)s%~ݿn)jV [߹\j֖R_"D"ƛhXF6RA2FFx%?zJ[i%[?G`K] ^=m`nխLe#Y V۸IQ~s^|b=˯贒ƺG,t7}pWTC]ZiS;WP>8ۨy-|{kkw76]۵1 4reo=hi=ih_kZ-EE|X^Aڥ^T߬UoJʥKtz}ȭI{e'`{O(DIlPK3^{MV謶_-''29aM:m9iW91W9-<{䦾wO_u]Hg Wi NqU ~WU*_ 6T/UEmlgݬA7/$zzTA]/_Hn>m_1&utx籼%a}8!@l ?95<ϖ2[kt~wQ=6{k]ud%׍*ybXm1Z$3n[_'A.g8YOGnH(<\Jf&; ɧc LD,I,\nQUIiN?E" 5 -Z9<%มP@giWި?ӕDE5N|;VC_?jέ,ĿEөMn_Ðs+.{G♤7-DWqxz[$*NкIy\5i%[MR)f,0.y8\!r'ׯWsySeBߊeF{m2NiIr4,BFq8Oe(/UZ%dַR"g'_70P ( ( ( nK@ PJ><(?;ȝׄ-hf ();&q^$།%d]rs7<ĺUbz& ]{I,ΤU-"#8KFdtΈdHV?G.hxsƺ qK`TTM`<]-"[nڮks$Em-3tgIisYB 41Ԩ1$.OnrJDai#1r O %q/zhY1ҵN+̎ORg48*Jo¥PBWgt^uGa֢Evu38IHglK r:5qq:h&k6te%@+KMXvP}9\⨎R[lρȭ[cP&fS5b>K\Υ65SZ @[=3VhwGxű_!5ZևB/qjb\>Gs{=V&M~Esv.Z#Dޅ6PO'"'掓mc9Һ!" /SCIw9Y- ֋.teeR: V\ 6IZ')8 ָ&Ψ5biœ&j$Gf,L!`)8I QlBG ODAUZte*ԹmO5[{py5LO9ƣRfD SÐNk e\}+{p):A{4a@ P1@ &4)64=isw) ‰°`H1G08H*.Q`,(qTҙ-$qrOO0 ؚ!PRϽX3@i3EzKe3֪zJe&=AS1p,EpAZơJ. ȒVGxk\FzLRS 9r8ٝI,/֥ܒ9rzw,-rXSa<&pŦC!=KSekw{UU*`Tn씒VC +t+Qĥ$ritT(DI.@/ߊ:X o3EG.=X>X}nAgifvg,OOƎvI}oowIӭ. 3XUf'`zy wrg|lc&,o[D}f&x.xG*V ( C@($\>:<"v^赥tu!7٦@P@H/tdQ1]8x5z cr&P3UGR=KFԬȹ=E:B]FPWu-WkW՗SC_K]Z>[VD*jM?Z9ɭMPdM.p{VUWI5{A p=icwh$3ȫS7a1=ƴsЕih^lhGCϿӔc-u4=;D־&JE:氜4:cQi q]x}lLb|ͯI-ޡ<'.zR#5vAmskIܰmxP {)WAW4|b 9id>On&Tv1E([Vab)C:UgȔE5JFNK"c p5BhfjN/RJdL94.f-Al\ĺ\sNl5uB%3%es‰)ɚ.+a֋̥; g4RDehKcڤvua`zӋ U\V= ||°Z|a/hwh4sO2X_20C}ðs G0)s n^㰠LV1abx sT2ɣ櫘Tq\޶C)S.ܕUlsΙ/m2bRR!7GwxROckΞ\'>(CLÑY8reQԊܖ)Տqz}`RfB H+ڮ4dJh5M\'k~K#'2sA'9bs5K6WCN[Br9R%ģ5'.KJN4g 9! 1$gۅlџ<=x-;I5RuhAdfVX&ёdѲbTe_nZ iu>NlI@P(F(r XYAyҀ9?P'J<@(ߥr{O~yҀ9?P'J<@(ߥr{O~yҀ9?P'J<@(ߥr{O~yҀ9?P'J<@(ߥr{O~yҀ9?P'J<@(ߥr{O~yҀ9?P'J<@(ߥ!P2J_-hP@^Z@ǟ%qtED>m43f(?k;["?ƻphKƏAZEo{0K9?z;ye$(Cr1Lor]Z++HISVV<\r++gף3+] jҤbΧ$`hQ/ Mʹ[R!MSZGBTckGN7Coqo"J6kVv1ˠ%3\ѕηb+|T3͜T:sZ+g"y6'*W^sE|=yc+jr1^Mӂsڵ0K]K)0T:hKfE,|VR:iT4b* =ONZݹk$c58SvDP^nH BhF>\Wݙ`+ O*:LEXHksKh>މꊦγBERcpԃ=zo 's֧8o y͹WU#r+˺ݖA ]^%{r3xN !(cZ׃hQ3(Eq``iV'NBM 1s zɱ$$R *2339A1ї^wWL]ch{7s*{5IPc.{NkS:cL45t+ys$>s( .PKvS; 9G0 ދEޝ÷ S('7Qw ..P;Srz7pnqX7QqX]֋}hqà hVw<w踬80HVǣi,9sWe(\NkhN2jڋ[WL'wGyx8 pi*F˹-~f&Y-GwPT`R"drb"2ć QP!mjy~($'Pc9J١ e'ɩ-Ho8)V`{V,9pzҰǙNzf8)\G #dr0ۉ+I$ v fU :/Cvv)|夜yn,xKOR݆]՛C-` ~K2Yܢ -T}mN5Ji^K\75W xMHV)KjZ)b|;F9HS6{CVddẢ Ffm(he)PϞ1P\Ε9qPZfm5*ұ7hc/t]oIn}>+Ԓ ( 4P@P@P@P@P@P@P@P@P@P@P@P@P@P@[R T>R8?J5af3]a6P .Ӕ9`su=SV_2]N1 )l'Xddu98Vkl*WkszU\eyC/J2(N*69Ov%E(\pUTBvfb\JryIL )Z@oSW()R'j̣9C̣9FzҸC}}.`,W0aw.SX wB\B\,;;+MŸ0 bNn RXpawU\ ݊w'.'X IU,"73ֶULgD3W1%o :5QKÐ7`{֊Ijxc.Au3RRf#U8޵R''R>b\<֛)Ew`˔H RJEdizT4U}'W6DV9B$(LdsjFFIpѻm8Xʡ4`5hT QE+SD S lUs*0;p0VMH,SxY-n9HsZ䓊jBB`ZFFrF5TL[ⶌ 6&$Ǹ (Jf`3T++3:A'ֲM"c(FG_j+X>NlI@P(s=hƫP ( ( ( ( ( ( ( ( ( ( (zh a)PP@T(/?Ts_xAֵYz)| ٬ ( p>kl ^3Ǜ:]6+&JASdo R}a{*4j r:NIՌTr\uyQ<>٘ZVR"`_x23qk@y=>j⫆qwGK3l{VJʛ}>c:”QH$M!؎jԋLQsWS!r܆KbJUخUcZ\c4R}4Z($#fƺpOy/<| ;Rx4o Et@T}Vifo[FF/=M ,d|1azˊՎTug\xǺd> B!^bR Uo/Gt62yb=.y00⛐\5zzEIf?3ǵF%>K Y_XPfVd\tqH^ ([y~vHZ54m5E\ȥ`1OQNù43&1C3nj@#X #=hѡ0i$n9lK#9)!$j K(R4< 41@S{Qq h4zVBqR^ qOEIzN233n,OL# ֱ{+xQ9CK!IUɭfs3tg${FR~SRr9scT5;X 5Jh Q7D}'֯?c+q:WI@P(@Ŀ7?dWگl67g8I;Յ?v^)XTQ<_D1>ORFW{8=7g8{aOi9W]Zt]s/$zÿRFa~=SnQro?ԩ+ƏK5#7އ @QCn2QUu{~ tK1<:)fw8 ROaR[z"޷Ykw t"SЌG7k]l,֕WRv)m)"9B9psCق]4Ad6ַBR8?J5a_&?Zֿe| ٬ ZhimGo #wv9qJCٙX׳N:gfut涸EV.gT"ޕ°}iY_s#o^3Xlg5OkwilH9TcRw[\.M#VsjH9FVg1|:ebKuoח^8|Jn8u N}>S*,BIu1. ;KiK!2G焰9iW63SᇥqTôuFk%C$``w̒WDJ!'Lভ#6'Rħ<n\N ⹁$s"7^$>z PFpk6avCgSkp08s4q8iL\dUׅDYon'.^f#8 zdUq۪rzpy+(F>Vk33ZxfQo$&zI$p8Il<] 5mBk fjRWMS>;d$r*˝jf uSRE8#cgs kUXknb~qsCX֔Y_|gmth ;IӽE<vT/sſ,bHp޵Q T'P] X斓fM4;o9榢ES|~!è6p)Ib9gJR5#?ڛDfyuԧ2|1nb"|5bF&mZ-'b#cQ"R] igZ8/] #g8PV}<$o;kT&g..- W?ή59EYӕ9 4~7>qw:݆4*G֫五H*և-OB5VR5W#3["+DȜ,U&ɶ=| /Rʻ. nm֗lXjvRef[7:{mO^ㄍ!"Q=r݈zVl#RaEc$vBhъ\ c$Θȶ+oOR/RCfa9%n*3jIlvFN)\q#n?JwufWԉq܆g4y UfBoԴm s͎I7lAۚM˙Md͒ 54HB(hX@b%+bZ`(4!3NEq A0Cv!lUr k!SR4& H F4Y2}hd,(j.+ [ҝ«z&u11CzBqNvڝ֪h"E5" fU,CZ[^+UP-{J95jJewkCFXPʋ҂W#-I\j9JR,y*yҰcW+XIAq*N19FG VdfQ52Шju6c'slH"I "j*J%^1R2QȤy犡"10*3ҀW=icZ1Ndm;SEiv)lIhqjxL˫0rvFfn&U֞N+p2/4uZhg*f2pfbci/ǐgҘJɒF-͓.AZT#޿dXLRx=Ǘz'{HJJ((@ _]8/thW[DFAL7l5go^ikjѭž`#~:V֋*~uտܿ#sX\,?[P ]RoJJ}VOuLҗO> g*1Bq֝ԟII[6o:&Y|t^'|Gi-l]m#JʶoҤWh`z':}t87 hB]S=oɜ7Zu쵒SVX1I2NIXI(Ƶu)?jKtHk{h-f)1(I:OmBmvU,vA QIA,@n@DuUwTm[\+(o /|2}{Vuiq6'|2ш0MI<@=tMڬ%I忥W%HJ/uzMn&ZO$EY G $meOE~z/6:8;+á7ݫYZ_Og t$0Mr{WU3zA[+/C@AHr$“Ci*c_icQҵm-cj*")ʝOޟ#{zi ]Nj`I\c:qǵ9YxOƱˉjI$JΔsEZek?dФFh[fy" xU}eU>w_2_,˟v:#][Glbӧs;9pb/z>_tkuϯNک0cjXWC ڦ%,7}oSO7tm>IfHј F7 rOe66U߃wjvv:]"FLk"3@PxVݵn.?Pٽo5 ;+ Tg:մJ~;ޝj8~o(ᱶКݢF&7(gٰpa 8ꡥHߛ ߝKiM¾oiKKg>oCw®iO5k!s,|)(*˥ܣu^)Ekۤ2O$RKj>Wm^K9n{Q&Q3C4O98d}1(fz.u* @}o0e(ǖmFT!ۚќ{EMzu:.Iu7<1#K*F cbB: ޲1if@P@P@P@P@]uZ @Ay}hpkG@焑br ,UqрAT'.+E%թ((6isiPHR)|7~ڜ8-/aa)+h`1|=kFUj)3_F-v0Gxi/ox#rUesVlpw]ry2j%m%}L'hytuw-)cJćё[,d%8fW l 񊥉]%2bx1,wG|tzF"1և;ϋR&-}Gra= ױ 𾳠ތer/Wɻ-6Saaleơğ)e%>5i{8kKWMP3Mh[kE١K"FOP[q<) ]urJOhDs"n/&2 Hۊ-D9湐Y؝<M34hZܫ(~%sphHp8VɌYQsErF⥳K=g&hdJcQނƀc})ُ i1Uv4"kiIY[46 cFmLƆ6 2@j4̕>Giwfђ=n.=#X U,B2WUo% T{y_B,m}Tjɖ|y2b#|Gd#6.C%{4AYoI &bc'X$>=lێ۪-K&ixJeM~T j)3)(& =jڣeŨKĀГIDJt7aO$:BH% 4ѓQT'͂=LkrsY#xkCN B.>uM {认V.Ƥ Xf3x-G!Dun)8@[q1>seprly9-ZowޖݡLO1tc&xw&Mm-7λdKf{oc GrM7JӞgI<ٱI,+$zg聾e{ FkHר#@'ySen_;w̥^x#2BXz~"4XЎtI؀A6\?Rlt 6Fx-ىi^PqC}FQuOlgh HR!,"ħEbBqGFP@l.Y#VXJI!M6!4_[Іi2{T696ݥYpG9u'[!X,à-"c:nO*}q[FȳeYIrĆYrT@'=ZEG܋F.em=4-"e7ߒ_>⹎t|!8b~ezG۷vr~zmM7k6v5&1y>/yY%ݼ(fAy[$g#[lmGK `I AV>}aJӓm>SMq<nf,hs&N㋳_z4-o9R+٣kLG[Й#d9hJUif XkX]#?JᤵGC2qܐx^|;w+@Ԝű4,>;I+hdSEY pZΙaIT2hEWd 9.D槔~V%2`WDX[U1NOA;ZUK rMW-̤iCv`4']'zԨcNuBypuzU/A$UB`x_ZN<qw,2*[İX;:Ni)u%޷߃kms8߭cU%Ѓďc>xV-ے޳tQf?tAq8qBLa_x$,VJ9]OWF'\b3MJt59br:E& YHYY`淒!\|P-Uh-gmf*3UQX|9 +*]6h Q9۸Al(f-d2q8C ,o|4R{TB4S><1 +!zR) QހF+faʎ+hr, f9җ" Th-A8t\1*IfStUdZ.جg^X"P:BkPesYrpSK.'#+.h bLWZW$ |hɣi>R[$\$C'B(kK3tBgJZԷ$rq](Hfśvw}2jt$KsQcXZ^,li69c.Nh o @Nzvuw|W-SƲOط|9lqX"vaasH @SR@4"pA5B)Ct0€!h&bd֤؉p^X2N`V[lLģ=犥!r6kX\5p+e3'iYu1̝~ׂV=e:WwP@F (ѹCPS@޿_΀ ޿_΀ ޿_΀ ޿_΀ ޿_΀ ޿_΀ ޿_΀ ޿_΀ ޿_΀ ޿_΀ ޿_΀ ޿_΀ ޿_΀ ޿_΀ ޿_΀ ޿_΀ ޿_΀ ޿_΀ ޿_΀ ޿_΀ ޿_΀ ޿_΀ ޿_΀  ?~^E@nK@ PJ><(?;ș>0\KڦPP@_Ćes!Ï3fŶp:x#Y һ WiEƗUi$' 7T>sn4Id)${VO;b;/xqfH2:UG5SiQ nw)Sh J{ԗf2uh%2.g޿ݦ塟Fޅ!u+ MZTUE?~J;!In r'FW:$sWF6<LG ؎m:WCyRֻrJ69c[&WqӕGfgr#Bz ⩊觇MQ{+Ք=j)Գc4iZur, ddzꓺ0,-zhE\ϞcE{8m?ScJ*%:o=iS#bi$M1]3ZVךǫNj.miNKD`u-kn9]lϨ 4BNxQIF*2Vl;U9 IJ(9uF2\c جTk+3mqEVؖ8;U$17y44i&HQڥԺB+HʥUjbErliܒHVDđ`2*NMOm<ϜG*[Reݤem"fRl jQ&& !rw|SK@Lv%Ws&2rH9C6DctŽd.Sia}qG.+oڃ'`I;U(iry v!O(xlTr2[8ǵ<):ljs)Mnt#Ud`Ѳd'Y@ A`^h,cHfWDNYaI5KSf(Ak]pT9L!EZ$sXsh Rj4gOeV3tBBkc(1Sߞơ@U hY)ź|$52/TҐ\4>I*CcvZdV"v88,-bsCDRarhIVU4g5nⷋ9%B&l֗3jе@is& ;gCFzv.4&HW2I0S"z`v$ ڹj#rߓҍ+d VMz!Uҡ*r@)E(8"LdRB!"n0)\i@FS`VьiB10*lIKEYmG9c:{NNVL>!R cwW5ߔ+\\Q%P@h ( ( ( ( ( ( ( ( ( ( ( ( ( @Ay}hpkG@|ֆP#m?Z8>4dB3w!s޻CϪd?|>IKT)6E$ }uRu$-nbnB0AW3MX5oDۜV:G3{  sN iV 8Qhg#JWvZfN1޸_0s=-`Eu+(`G>Ejx-&pk֣+5`y>mgҷ0J.$kT͔rjLT7 ҳdtƙC [$ sM `SW-Z64_sʰָ;c$=km;`u~a+Y'-y`X[E&Ů%1iɒw:uެ:D+<20K V-^.ENS6nr;y-u, ^];4*Kfa G.57 + +357(Py !(@b/Z˅5'¤ A7F FUxN*lk0)q1^.V-$r[ qhI#<։M I'M4zI;khQrYGB֣$dJy`9jsR^퉦jHⲶnt9FG=`ٻJ\Y*|'l|,Ljc!%r W.CMo;&K-*.˴Hml(yip*4H[R&i.l#C@B2pxJۉ[EؚmfaHsq`PmA.`K&^4[և0 7UnԅdÎKe8Y[|*D9cN s֑L q2{RfgǧZȧ-sV:x$סFZwBiyN?ZՁbѐ>Z ]#UeIv9\ҰyȬH$E(.=i{ԟ Ҽ<ȠI0aR# ș#if[ ]1m2 @a4]'5wFpԌ%Z['qwf-$GDbS`Frܞk&cYn Js y:as S/=1il#DtRȮ\sGt]͋1\5EPy2EY[҇)+K1Rh#4u0 +Q7OB,6pHn&* B.;uYwb)6)dp2+#hĻM 0+Hg8\4ЪZMXFƷ2W=)\kܾ]x1zg ;Tg;9!>GbIknwgl )Q=ffܑJBq^dcƣ͖SLzr[;zmΫy o=ԍPrՍ5Vb}&@Q{9/YV98r= iՌG}NWTH6o0\J?1V}b k>.W$ !>CU{9tk%iٰ #j -ݘMe(HY!H4Yh(OLU8o#YlX9BЉ@U^NkE$Ql/%ciV[Ӻ=Au+ [{1*ܡ;k !FR8"5fǍj~Zݒ \S:108z;%s~T6ipOAJqSfӥ: .p)+T*)BA 56nMꪹR}*md=Ә")Eci%+ 3̾)xJR+ po<^<:M"[KYߡĠr%U)3heI2V8ZU1Τ4.20n`;}ǥ>B]K~V>pVs #M!65B̧ `enʑRsR+(a]1sʋ&I#5jNsڶR2eؗ\Kh}[LiXͺYshԱq~m%62ͣQ.9:FO)1{A>fjR`ٰun/jQc4)2xbSeaZDR/A8TL\2Xn82#q. K=)r";<)E#cq/Vɢ9.}֕r{ICJ9Ȥ3%氒6wM*jGSQr&IzVLH8cԌԱ,e`;Cދš#vi $ipUD\f a M43xɡ T;@-!0&0Ǟ"7b6<2ZZcJ}N:W9%P@h"E#Dgşxÿٷ"oe'j׹&8kt[[OrR;nUS(z2pyZƓgE=To7oUf{/l~vAc\[)9*< =H@H+TKVOd޵9Rմo4+$'Fig|Zu..I O\v4'Y-._L1T!)UޞEb+-n#۱h*`Fa%..vmu?Z_%h\H{%\ݱ$w:R1MQ'o%蝝Z&k}zy=89?0prF(,v}Q5z{ywurdP@P@P@P@cw_`7fB_'Y;wtݎqmo}z( ( ( ( ( UbN;PύfÛ[ Kn*FOr zmnK@ PJ><(?;o8>z>nig`6P@ m8>n}<}z)˨2;S#-B9B.WT0I :zj[sd kPhTFL{VR-; Ұ[,Vxzx3ȸC7si#s$e܂&<ԴÞ:;Vz5rԤN7%?ؖ:8EYb8i2}%8y$i# &>Q,{Ril{24oʜ Ami%kR#F}WD+TD.H`33PՅ߅?lMΥkr:iGr}9Q,;Eot-BfHO!0BYDL@VM3)Zn$>SIɨY{zӢGkFkSM9~Vt5̭r;9"(#UFp; pNj5Q>2F=帕DBj\lhӊRwBL9E UŐ sZŐՉtы#=+)")Q6LQJC%jDn,3['Va'8f@ܮkXU3K^/*?,2wFU->t% ON>$ Bz冃$%eNMwq^_tg$Nn2YWFӰr7Wׇ.<9kh[\j8Ewe(ȼ#Nul%Mne?N-%/Tg.mOw8ʞֹa:g/u&΃\xmd7e( ˥;[W6sa?6FsؗN)>p38t5qF\ ,SbC3"qrcN]snx犼#o/Á+::ڝ[s}bj,u,dlr{֪S9ҋܷ.pyfF#W,4os9gl5΅+"o4O|XBL_hs:=3hN'xKZV7c>U%^xr̘E! \)pHA5K@bicf GU]Һ(ͦeR7GxRBJ&ynDjs>N]̑їR1u-=ri,i9Z;B) yRgB r(jsS9%zUc/hC$x*hrJM\T1XhgJOCEa&'U HԴ[®,m0pku+cJDJŃ#kk#;\{iʼ4){"{RqLW2eӊ sP?jY >"ƴ+){18#OQhT ʍC2xb Nu.1"k;&ZF1ZmعC110RkTORCX,0( 1v.1¸ͣ YNi .z։(%S󘸲$In''h胱iw rZPiׁ\}N`X8dj= %5#\gE\(&vq3r&sU>Ozvzap8V q"&;R + R&Lr۞BwOA]7k )7bjI@P(Go"Un>Sb?7h?WΡKa}yYźFU۞[NOVoy!9ƜmvVnǪ]jOוdR=#t2q[Q5(%^Y6߯w}n= [%hmjx_|@7E)s+KW-uٮ;m 9N 'čJnt][Ο{H[B@9汌FhKo?_îӇ$bZﶻ%Nz+jcF x~U+>:3i n[ %Ӧɒt )mWtsVce]۴v SqVޛc<͞6dW<U 68gUkIYێWmִeFivJuy!kMCv# #GQ\i^e7/+Uoؒ/;T EgB7Q<6ҾxDnX0|V˒Sٻ4Z]>ϯm\).Jvi4M=mٖ)|?<ܥ{q$$v{T`S&\)c' _ovmwo1ӴS]ߥw_!RȿLTޟO[cXjxQWPZ~ܻ$LU/rI">yKT\ᮊTFuST%=u^ò^n ^&:$Q0L|ÖےN|m;SgJMuNKrz&_<|AAG$i5͙'#!FmnH^TiCߗ>T['~2iN_zm۳m+y!u gCٹUc2́rO֪Ƽhw|[%)?7wGM3º.FX}OLoH7ESlc/er9rS)Dt{ۙY|8rՄd^-uҽ4 >"h`X*asg5s5jԩֽlӯ~2TTi^.M4s۝3¾yXLT=T*%R39G*nM;}{Ӄj-6ѭu_#kQP@P@P@?Ho!'jTv ~ @Ay}hpkG@| ȿۯnn8q ?sk +\´9q`8hqʈӦdr4 չX@8\!Rh٘;V2fГGQe[LY+ PgLk$Z}j e,TS6ߊZHj(9NnxsuƎ`4( 9v "7 kXHQEi]ȭ&chn$ {Xq(;ZԒMijuҴ[HQ@AT<[]xmcciJ\{dž5VHwFNUVO*9Ebx~Hޅ@ݞ]~W hpE%JF=:J3n$q:t+hq]fx˝F o]g61WHS) j1Q'5'Xj;k"\~3]*L " T!ޔF*x,E nJfZ,dVٕn-",k*k3DFjRPN8c bGmN+3ect8zTeHN:#&kɌ'!Fۑ[ ӄeN4rٗk9w&l֍BhQu<眒ZpݙHKmEaJN̹a6aɞWnQ)7tc*ucVz/lX.&7J>esJ5ў}4RshO zW;]tk2u 9bяsIOVu>(i}T+[ifeͭ* h iPD =sR4uTOO%ͽ 2@Zw4n3z%_볬>Lf);=r1$Ci[\zaFhq PW 35)XWG1Nh)"DЄ*jElުȬ0 aVQv{:ӗ$INQ:rF/&1"3 R$ }kuܘU5%벤q[@?k[BώJZhsǵ}9^)TWtpIYj*(3N)U@w-9*K13m9#S?l" Q&j9LSL̛#uj1Ie┌Đ) 8e#d69*tR"h+'{UJE:Vc&,=*n4pi3DL0;P ! zSY128 haLE56 oZ,O(+>%κٹYEU>nr[clc+:4.EZu=]Qp -I1Rp.TMn>gљ]մ\]AZH~>gHQC`8I)4孶&Ke߆-cӵ8D7vw9@mr0MQkK_ף!^3SIZ?u-Jtiym7ZXlc9bܓrrԝߚ/ %oxG_tsO .eƓ(HUBn_zi*}xT[KBb o75.~Gc{84ݹmky^򛔜ĻYW.kqWFʌ#u:1FIklVIr]v4W cƺ<^+Me^0 Ot9%~vmMZ Vem 4#C}F.'_2wGޠ$pځF@\(K\NZ&gABiK GZC&^7 3Me*Ҕ"<ײMW})]JNF~xkX!N1+ª_ٓk&>otu{KiQKawhF*K֕Hߢn_եdAQ^˖X'Z&M`]Sx#o#!RÂH'ɫrn޽ݺzyu8MNjvU)eݥmf5`HfYdW,Al2zwwKTm+ ׻6O|Mp.u ~k[x^P.6u1Dӛg'vchF0V^#ҼGwxs]`"Iuz s M+{Vt:7ĽKLIoR!htJ s#,JV5Rmhl?$՛[ qW\׳5: 4ej[JuHZ9;vGz ҥqvJ|ynktj34?N4VK,:4sF$I0ަ1Pou4URY&I ZxAoom o.D'`$UrzV]~cr~Jv} "k^!5[qmj<C W Q5z^ߦ薬;JM%i%Y?TȗWN7#Uݻjs~<s_C_OaiZkvz}\Y.۳X.Dܬ@%[pSjQtv;h%BKUukmܹ^szQw:lUGιZַKv:+j2.(-nѭ5A M:fǙUH4gEmv'vk~_CovH<-e\0[AK=V -x8VZrz}.4#ˆNJ1vwz;j8/+CHZD mάrIRuN_(MzRwf 1P@P@P@}/Bo |63'Xa<P@T(/?Tsox֒ z`P'ؙ֔>ج'|9jBq*ObUPFtyyaVfM1WBfN% Jy,{ѱ)HN5КFm{dA麉ƕ3>w"Lӎq*|%=kgJ3ozf*; 6Hf H4 R*4OZiHc5E\#Ҽ= cVGWvɶUli+2J+=s4B+I#Ҽʔ;SL}j86GyX6A=Ew.(<&ewfG|=ŴVK5Kw-$zaExtS.RWVԢ|k9R&R$7ٜH3!58y^K4ֺ^ lsVR{!@Oҳxjx9s7)<gli@cxXRAC :SX +Hq4"p9c=wpCcQhꭎ) JZd% d@ ,]z&ʙjX_zҝFJ)`-zt.Zv9m 2kfԈNGc^N"(fU:rz gHx+/emj;jTi$U]" y1]&i],];.8?֥X7_ ȉ@ ?) V;tμҰxBhʵyeAG+ktU+H-6↚J{fYB M\FO\,4M:.0P; "IanB PLVu(M:)ՂmxC> P,3=ݳ}iN/{7<&yA9P^[iCN݃mۇD r0#Qh_r-̀ Ɏd~5Xs|&Fq1.X5bg;=*3l:t3FR8fUlz.[zB Kʑ*ZrZJ+HJۜG_.X3 9Q1ӎ=>< (?{qjX:eGLf\Yu2à]g)];6˸WODy5gioH#;}CnT˒4ckTsAkDaQsPwx[Mo@J02+@Kp?<%?e\ȠrVpΦPhw-Cy Fִ.){3-r:t!~7 Ú`Ӱ|mT3Drp*Q%MHٱvƺ]0tnZ+]1(6pMSrd &X_)(ر~PR"r]B6Gy$A?JvvHt{˔8zfWR5ؒO{2UPN) EvqɣԵẚ.XYG0]*-!!@ˑS(4(D4Qݕ@H泔FU˔eybRqcP;NsM2$IQf|k`G(9cSVI#jPm$6jyJ0+mz1i&L2eH~=wj}(ڳv(zsI -{&;EmOGcft!#)r #c( hƩ`ʒIj WwQWj+P<\ԗwQT4*(1ܩ+;inFhU\-'i8n2F5 ?ZЁP@{YW1v:t.xP%Dc!Z0Pm5 as6I8'R9;Ӵ8R4tF:=&p~T6ھ.>VjR61Ю4{b x>G2z&9ڌLK>{| e1s֋`Y(=9)\3>vLnϞOJ6)-4=GA'nHTS'rtQڎȺo% rjh;\wu XG TϞH9q 7wHbx0HHGwj[/ȸ &vrqEWw 9Y~l{}(jʓ52K<:1/0Yo8c~^rct |5zmeqRΞ-@^" VSM %Юe{w.C4_f) ;ns.]J. *6H9'5N@JҋhQxGIk;+ t5OFb7O]ƧxR Q~qh䄶 ͫDr=jBӢ`< vЩN.)-ܫR:] u`::o#ޡS g]B0XR8P0x3w>5_AR+#dWR Rji3>,U#@2 z\Sdpb(%>?t4!Tⷮ*sOC$r7ck O}M;˜Ӹ(sڎ`q4Oj.d)ԘK dv>՛t…U"UjT^)^{u&>iXƥ>T{|/l<3W[vG,i5 ҲjO}J4Up20+xVaVZ),n]qNt2 5t[zj.j qUD2WE)6ȦAkF(c bgD"hy+\جAwjjFnT+E;6sܝLb KVDjW!ɠ d#C c C=_lt@Oq&;)\4ӚyI?JRݳ/JV d5snySְGq+EpU\/6Nj'-cx"J4ap.MOE!t3GdY%Ƣ7`@O _:pXƟ:#h۬΃Ƒ\x|~tΟ q>\>V|yfTQV(1Z㚱@MAh Uĉ#P$6kТ3/ؤ~f6tᣡX#p-N~&詫xv75KJ>&:@TH`}:פڹ}cDt5Xʯm(rhԋ-iqҌʕHBd$xg>ec$e PXt$t@'Hx&@ARA=FwW&`:גm\Q-dU6߆bN+4%)EF,%i+J~5ų='IWhUq֝CYAII\@I8f"XܜZ)$Y,œժ3{t4ȝ@YXE+5׊CBZVG>LkHʚJM E=o%Y2޷grjRZ{$L%8ֽ5Wл}I!銯uhei=Jcoɜ%Ub~'Z6U+KpzTJ5s*ũ!ۺŻ<` tUNKCMEbB}ZVsW*6= -Kb> w'V:yC-Gɖq\v6tfVR_KsKn\I\ |ZX^6'gr[$RnW!^v礜~T:|uR.Bc.x:rMʻFɪwH-;5-:ABqLfଁ bjZ֧2IFOAJSrTv*H۔wID;.B(1oZ/`~c]O(wmqfnWk&ZiVV$qE4\ȋßƯڳT؏pybsIlj[^\eeWckXDߞ"@ & (\r+8hhB=ŪrF:ףBz3ROc4F ;W|d>+ٳy#fG=x湥c`[^"d~z׭zzkvr %cj2)h*z|2A q8 hS@!(dHj "BTRfMD@i4 >ěIPrp+uUC[+/%A@+D&TVF[j6OS]?|בW5N<cD5Ss[-r*"%OxԌLK5Nw2g {QE99)8H#wÚg۵$FEe= IHZ㜮F*M;ɏ@6;RKs|AOtήRxLRG$z-9+ƘLwliHZy4jNv2Az47D 9 i0БuIF>j|z09-O1LƟ%2>!BJ./wZ~^!S.>cZFt+`u~FϑV5^?yBf4R~Է@~uzuP [{zt ( 4P@ XhurhJwOy)ր%?Z<@hSJwOy)ր%?Z<@hSJwOy)ր%?Z<@hSJwOy)ր%?Z<@hSJwOy)ր%?Z<@hSJwOy)ր%?Z<@aC2DSր# @Ay}hpkG@FmZߩnP1f ,N^=wkܪlWO!3랂~Я=Ae?T3NO5J:O8T*ɞ3c ShUt R:әڐTA9#,YlhNa,7z7eN[1'HB!WywTh%d@V.rDfwLR˃1 { j>{'&d "17Bf}m.VR¥@/;QE{9$@1.Ddd#ҋ@$dHzWcrC^iXm\[޴ٍ l.tj~(o_謌XdrNI0 ( ( ( (,O$pmRC)H# XWA@€ ( ( ( #NUv@ -hP@^Z@ǟ%zL#$PO` m݉++#J€ |tل[ c+[ːvruA7)jQf8) aøp nGH]z~ 5 \".]D'dx!X+ XVxY/.ZIykءO'bJ=uh +G1n@'Nm:M֚Ğ+TNbLˍ5Xʃ:ESڏb;a]a{ժBҹ(4yp]wa-Y5\zX9*&)3+${]!;cҵkƧsǯ@>GlׯJ֭ffO%Vg]#HTvfeQjtOЭUGXʳ=T,_hq-'݊Sw j0߉5HD ^=kTF|U{w34HO9jNِڼ$RZwS5| ÂĊjp4:J)5nFiYI5;B~5"y]XJDѐz6:UU$BTŒrlVHɦDgjɡ c=e(tD*Khp4!C|psa'5Bh#\Lc=TGNSj$iAE" pj5nƒb!,NKNEf<)&.٫0`H5:N0ZƤJvkYron9I#涄Y䭡CXu~u]BY/Xsm3xI\qb򎾵)Tٙ&>9'匊Ϟǘ T1 g5KQSRdF՘TvjĦ! 6ƙ)*P0Sҕ5ae!!U`аN!öܴM+%ChdeV]VMl[,+Ts޳el2Fi_31SHkFWnNf(ri 0QM۠ĨK422 pY3[As%3N]vObv)&,R4n ZP(t'uM,bk#F 'ˤÓ֞'%J31ouFrNOsέͩRks:iSXK]F[YUqMVh:kOXC6tg#o’k_ebXOMiSL+cHws4/XYH1ں'c9O f/l8],gLNL:g"qev<%NhXRSKHCZ2fV;8P&4-43s{AGս8̜KU@5)ih-'ާ4*3.!zvt%FnõM4yϋ#HثcS8VQ<#_SMc*URwgx጑т\g`a*>V(da"J6[|Q?b ʣۂXсecƀ%T~CUA]( `QI G 2jP9L˽vH&ULk 9ҴUQN_3[,BŔ$fI;N*]de1,YX~IKc厧i:,돔5.dܳdI5#QN>\R# R%!(#4``@ @4p;$2?Yh:VeP@F T@h>:W:1Dyg]ʫ6 |Bh!VQ}ye6:\ >I2glG@7I=oB/=EfW~Voj妡Xgu-%yLFfBė##юQj]^kvo}ߕN'kWK^zY/.T:t恬4w̋01ɴBd][Aճֽ^z=UȤ%N;e֫GXϖKƟ y.o˦)F[F06WO姧T}Bͮm:% :U v} Rm~6MЫ$Q,eΧiʲ#`S=cw6>ZZ]/qb]NԮ]d72-(뾧I?' v0Kf}QKL|,)oHI#~΀D2p 'rjQ}=7vI-_VtU-+b߫wV9Q *Q[i+k98 LPS0j:R{~)YқFMGR4O|ڌipڴG|ùщRH$xDFomoQXgi$-u: CR<=es^躝F\J\2rQW 5IRgs'䴗c~”㳲k{}_Σ>W-̓Dc g*7dTB*^^#ne*ShXlq5*rcoGK.^QZ>f_KE;vE >g%o(ܤ+ B8JTKWȿ+% tNjx,5+E'ȴQ2@Ӌg6$ %9[Roe]7^ԮB$-ݣ.PJ4\lػ@|!.nG]oN󾟉{V2GksƚeEܳPG`'RM;W9贛 "S,VV;F3vgxskdTrn]kW~hZY[6:RYI/--Z;#*r9AtWi7W5 Ź7:흿670JGx\4~=Tx-Kkt.`]YzܓN_WժMy}C\m8`PGDҳFy=pzR7QĢ_kP}zmv=KXa=8)=[kwf:O'kD+[oaMD]4o8{FT8QVv4~x{e^XU|*03Gl֕Rsw~|0Qk~_j%Ƹ4S/iƠ(6PGS EŽ;&k--/J|׸C2Hm6p0qՁ'R%mT$iz5toxi$)c1<3zGS'ִrVV۵_[(MumH/SK Nh{̀UB^Iz73wsN۬u{$@Α0A=:*q0KnFo6|-9/u-R~6$:#wd08҈Y/ͯ1ە?/h ( (.( pZ}Pր*PIFl?|t6wq.C*mS)rZ15^T [@`sq]JfTu7|R:޲ rqdDϜdTB:Q>9Hkmюc3˩EJi쫑r0TZ3  &3ZT8E9lՎ6TraiiH+vfvH)j}YX#b0+|:MR/z焵6J2=hČ/fWF7wh2ݙ|5AUvEn;S֜jW:m6YԦAjdERoS<-e'\5OVNܾ0+r=2yd+gsnUc?hm^ zy.`qqQ5cjsM&b#1# f_(yXѧ1N9+h{g5(nR4 Gs]C˔= eۂ1X8Y'kڥQ<͚Ku(q|2aIH镚4-^=kxKSpe@5wr2+ophB9N)L6d& 4ɰEƴcr&THT4PO#WNebM5tְǰ*qGVRL, (92SwYPdwr4Q$~d5Хecvԑ1]qJ$sJͣ+Ir5W]6FVW.%VM=N*W#܆YEFcj6¶#֩nL:A/kX" X*bykewn7BE!x8^ .0Uǀ{H,t'Ic1*wE59Id}'36jA@nI= SHlc$W'fe3<H@Z$X "tc!JVCq!h`g5 W JHU2G#ҩ;L$G0(Gr<*D; OfQjݎ"vnǡ:쵈. 3a]pԪ- d:\Qf7qkT̮`^CN JG;[۲2Ty޹f#v>NՌQ!W>(Q܎;TX>nqB&NIŸs]GbEWڎ`y GAKvA@QG(Ǵt$odgArI_ =[OAO{H" )XmKض'p5I'.N=kPŜ0AFѲ$` dIr[Nb{^WMHmJ궷p_ ʏ*I.k3˨cMڌ17,qjD{ %jכ4^|YwN&?;+/4ռ읥w=+;8-m$Ʊƣsdӂ알kO ZOlVmfi07N3Sw^[ s4t61.V6H(ZF1i˿%4-ơk_YpDEH\zIZnAYߍsےbR*8P*G=2Kz_At[xz ]gVK˫  cNsN>iu5њw{cqk)alT8%%f\d$BƇo=՝P ( C@($\>: ĐxwK% v*6wbI%dhP@%MfJ0c`t\2DFx4SUg#"Թ9Vg,rb="3br#8ȤJ6-Yh^0v)j)l%޺y OZ#Mȅ;S)Z[pTM5_>՜GFVN:#Et4e@/l]Bjպ.49^x/X y+άN.mf7/klemӃj42rH?,To"в@;gvR)VnZy`]<8.@Fr**\EKmȅkU-QdR|;b'BE\:qEaֽ 9c4K%tGmfOmpΑRģ1]I4θDmҡ&Ze?rJiMF5躋ۅqi燈z.UH?(㚹3*uZѝ|WF ϥrN:4JL[! >S|_ٚHkjS%ZǞ^w,ISN)tsckȇn-<&:P1:T9LBB5iĨW!ܛ B)Z,;G)׊E^iXw qHCI8H.6>62h9 ͑JwcͭF\j&yҢƏ֚1%b Uc@ތ*iٴ`S${ N}RУ'3Jq!4-rTM2XkMl6J&Th"1.11;ϙG.+(SI+Np+~tacb?^4JŽ&-LjEw"jB=y6(0 )c8reMmfZۘRRyg`,X.MLd&+N SX64).²C @~o3?tբ 㯭&V#Di)!{QIG&,!'ɋq8Z4c5{]ز5ƮrpiBj]HPѝz`)650*Y*lUw;:Z i,͖L0{&s@ ؋80EÔ4),cSD7HVԡvsbH]&cu@p=҄l)OO5 [Xfʯg4u77@aHŜ(8=; lI)RG19MB~\~\gcߓdomܞ"E!IϵJG_cS+Dk^kU,7q ?ibvaNZS|V7gF{[PHsVL<(?;oH+H}>ݙc\WQZmyM u|JڗS: ȧ+c8Z$K*ɹ*3qdZ2\ RǞIWd\cYa11B(}"Hʤ{ɼֵ8AԌb") @zIhZ8'&z_KpFk&thFis&vː9 wRErXdaLq̅d[kH霶}*9Ix4S903RO s8ش]iV س4k+Q_KvRQeęX+BeNb&RHX6/zi\nV,`MB[e$:p&QRZxMr-ȿSץNkS̭iY2heXt"F8.ۻ>uNB)6V[FW+d$~lcg"ԭ ޣΤ`s)\b<}=?X"i:l;IaǥfՍ㨰]qɪCjŻK%qhzv|lDC'K]Mdė?Bj!:xFzXP`7uA(5# mQ%ֲ Nơ2pԕ^=WEOHpթV9D!Pc֨Y9bnYl4[MD(n:sŒޤd)1HⅨ }j\7&,N)+α\y#Ÿⷖ+wJ2]+Mwvzwh"e)VgY?2Hϭ+>ja95)!(P%-bR  (PB8Q@ H?b_/sOSADP@Q (;{y:7{y:7{y:7{y:7{y:7{y:7{y:7{y:7{y:7{y:7{y:7{y:7{y:7{y:7{y:7{y:7{y:7{y:7{y:7{y:7{y:7{y:7{y:7,ǩ' (ꖀ@ |yQw> EhITFzFbyUC ('_8?_ҷʯC5M>aϥ5 #xuRAħ5|ZFD%Uչ>KHGjJDW6TVF;=zVffʄjV!+Hh$oR W$l]R1XHfsPѱmP"Z ) )KaIJKE-\RDMh Uc($ g̊8WL Z t@njVVI/grK~ xdGhfw8;x+{y*ǜF wPZ092y+C>hzqV1Ifd*pOji395c|mkH繧8Y\tp\ݫrݻ6qڋkKHh`PL-0 -1h(f Hb L 1)R%2?Q1:TI@P( ( ( ( ( ( ( ( ( ( ( ( ( (-hP@^Z@ǟ%q೟h'9̈́5 ( }+z=Lj12ސQa HDێ1& bWP2P<9C?wֵLɣ6p8VF.<)"Ṥʎcʯ4̤wZ(L}!k1F3$WI#N̥jG5LMMg?iʬeNhI$RJN==*ŴO6Y[-2zBs*M#P}m|SsF&q&ViEjc}֥\ІR(iI49f`G'&O*4-/X TVf펢@]m\9nX+l%tqN 3`bs0k*Ԏ宭*3:#ԥX̚ԎEqJ'LjYOJɣe$42hHȫ٤+jls;/-dV ΊSR+cV]V)8n%$-S%)zF+DeF)i} R9%b~lIn&2lVFa_W]GsnrJJm+ަ(ŭ=O`n݇: S(l5v9ogP*y;X/FSvh$ w #BK$O29 ˟rUN*m2 BUr1!Bl6yW*dÿ5,w,0VE9VEiC<-{Z;MZS{f2QiWt;s f˧͜nkO:mnqz4Bt]X]3wٝ$[GM-HGcmvElۘp!\q8_2G-"B:ⶍE#ϫ=BN2I6x8asTѦ='yw1EG.v:U$tprOC2bd0LL{UHʊM֊$-v>ܭ!XiBq9ϵy8{d:ɤҸYc\͹9UEY, ڐLS(88Q!"故`Ե5\bB5ܥiQ]ہu7zXfQ<3_ ]93ʲ ֶZl3yV"Qv9\ˉ6,sY՝SMx ^t\v"9bĚ`6˜ @%P@4@ @hP'zcRt( ( 4P@P@P@P@P@P@P@P@P@P@P@P@P@P@[R T>R8?J5ay c˿Oo2A|Ƽm@`xwL1C5cQ)` #,$uL!c)&Wt9B!sB%ekDZYPW'0a9QVL1/z`fqGYuQ\Jf#a(335meΈT5. $V{-֎Fc]/ YePܵm*Ny x5"q΢9}cTWDQ:#<ʣij<*MEmIYWrM7 -NLBbsT}j]B4 N9ⵧY#ϯOcm0k\~-M8QN+)I\ӎJV|B=ؤOҩLaF=֯G L?.1)3m{Rf8)k;j6JQqsQ4iID&:w+^F+&j7' Rpq8kC |Ⱂitw82[g8RVdfISTvi4B) =h(^i؆ÌZX! P!š#h(a4&h+TrU&\ZS15cѪyXNK 47 !˙9nV3wF6bpyjS:hdb VBk0E³e)@V2tBL^OA7ܳm(,6>^];Ie!dࢹ~UdI_skO ʹvL1 WO @<3or0\($?篊[!nzi0+ڶu8I8FSN2>xZAxnD4c{4SQi;7b CPN:R:24/ 1VR)QPÌ**9* "N1xUcq$F'*}gMyuv{Xx5Ӫ9ṘƶKBn7<E1cJ Hs@+B@(V .Qܽkv'5si>!xvYT4stzjLƭn~SJ/"6 v2$Pds#a1^8Vfzʸc Ap4LP@a0 L)v (ؓxg1:TI@P( d$H^WTA՘ i6͓Z$lVMcNVerKIt/ iOx_?-?Ə?rKKkL>oa. .A3h#}$$ Ox_?-?Ə?rKKkL>oa. .A3h#}$$ Ox_?-?Ə?rKKkL>oa. .A3h#}$$ Ox_?-?Ə?rKKkL>oa. .A3h#}$$ Ox_?-?Ə?rKKkL>oa. .A3h#}$$ Ox_?-?Ə?rKKkL>oa. .A3h#}$$ Ox_?-?Ə?rKKkL>oa. .A3h#}$$ Ox_?-?Ə?rKKkL>oa. .A3h#}$$ Ox_?-?Ə?rKKkL>oa. .A3h#}$$ Ox_?-?Ə?rKKkL>oa. .A3h#}$$ Ox_?-?Ə?rK_?-?Ə?rKvgwop7gJpBi5 (-hP@^Z@ǟ%m`>k@tP@Ǎ_gؽՆWgkOSb_;9CrK.H3J,*PBZh*H̉w}TaJ 5jVW"WT#.d ]D$ep7[=tFHVV>Ը*ȯrԹ^؁>N5'YRCbjjD2MtF LAw~\@{?'"2rmZn3VHݽy]]'4Qyj3W,ФmǦ ^I9rbJ ^B:7bqCB4B2*MIRǐjb{T2risؙG)۵Vyr1)+DRsIĥQ= .5ٸZG}0ɣ4hCs8Vp' qP*'Sш,TcNvx^&!Rlió.!0h(3 K$WV!iMHM 4 i441UBlvEKB9k 34ͻk8˚St+k9HY.jTHXJrj(]c\]$eur5Dg!M4 \e( khKSNɂKRedsW;~yNPf i9¸!Ey/;vC@2ҰT=)Wy4&HrxB#me>sq1B)6k+Yj1WAɻ{Wc_zxFeoD(Q8ϧ| E-#OĜQ~~%dJo_9uIDc<vm}|$oesD!zjuGSw+)HtG56oA-59ѕhK b98gDnAqل8JB$t 4O. +ՂІ6UEkC1"֘NMbf>A&9Ґ \ G-Ø5Qd2q/s55V̗/V~9V*TQj;mW[+ו9:vⳅX|j|kvzt)pjOT5Vۜ%[I9Rw)V=,aFiBZ{%9[Y&hBAXN.RWD{TJ`RP0@hPP@`(4P@P~ğ{_9'IҠJ((@Ҁ<Y,>#eS裿קֽN(YQj]Fkct}*+B6:RإZ( ( ( ( ( ( ( ( ( ( (;#e8"I0; |HtHmBϡ(n^N+(U^>)ROcڴMZZӦƾ^ ћՙ(2b -hP@^Z@ǟ%o<ր68-g](ߘ;Xmnd9oNy<}ir.wKKJEnpMgW1)ۆh es4f}QfSF\_ҶF.(T]*3ocU#&eEZb)O͊vLZ/JFi!FUtץ7~0c%sۂ- =k j\Grwce~íCzz#RhrW9 dc(#zu,sZHa(s7[IQҳzCcN~˺!OZ \CU~͋ڡOJ^͇C c)bw);:6Hi U\V:Ҹ&iBhibb9A"n)^1 \q %LOWcqUItFOr1zupbkr7JWɬ$΄dPց(84ӰvIvMuұ&.. ǯZư* 8KF(nN@4Jy4HÍ; QH ) ]N )PG*JLUUIfbp;PEi j1-C ;m'5S˦I}H˄P1-eAOaIMgAiyYiw#U'sԥ ?2:SaؚR .švH=.i},3JLv;]EP뚩+c4; Q]H+>COi!ʰ?CQ)N69m[2D i [*g$ٞcJ[]:K|6sƵ߅|ڙ=p~IGB8<wB5UZ{fg*7Tʃ|Jg?ݶ4ݥGc9T2S:t=xJEqԢFy.kq @€ @X'LAas@'@X( 4G'z'IҠJ((@yg46*fz(׽T߷mfay7_NtP@P@P@P@P@P@P@P@P@P@P@PIoOa% e) qq\8q4lD̏!'9b`ȡB 83} @Ay}hpkG@ǂLZ٠ ߍdmoO.\7~:\3Ք|רcWR|Փje5Rlb^-r18{CFFduY\c4 6 JYr{D5r3)E T)]!u*=e+^dg*@Z9ќ鳞,U9^ե$ ÑVRBwUSd\d1 ڕdXQRѧ0jEh|fr{ 5^L㡩s* 3t 圮Bٷf5\k gȬdtĐޡ+9Q8o\Cj8p|RC猬i%26nA.{UlJ֊|c%vl!oʧR9kWHSnFMo6rիdsj0Ay󨚱Ag xlh]nc^SJ۝JƄW&WH 9K)Z 5Q+#w(zl\I5|rjg\ZN2+@e!'Zضu£&b!I#Ny _ Cvm8FrlO ,Gx1֭$ݘzCۻQR9dc?-L袡QsyBxYAwB6i,-*ꄎ).8D٦CSba#Ή6*yY-FX&Ua҈`^E33WcCFlfɍ$4i\!Ijb@OZLG4 T4qhPs@'$LL.zӱ7 Hb&HBUa\kM ;c ?fع sB@qu&p ԠicbԮٙX۩ʩ+_hbyw%.id JIKsNc 񞢗2#_s-֪G$ >0~L2G<Ժ%(M]эshpǏCM0Q{R(p*-n7%cl,ZGhqd5s$z7 #L UZ㬜":C X RئT}Fɢ3 sq8~i!P {o]# h[j9Rٳ\wCOΎVChۣT&F (h 7 P+) Ip8nc#k[35쌺 O&\18iJt54[DsQs<#$I35i&&zW$aer gaޢTIEYeƊfG"  W6QZ$EuGὯ,[*:q]0ͣ0>]b|oj~-hEZҝK3&[hL\;} } } H pR M>` .. q\q\)sŸ0]•>kԲRt2J((@ E'C@Ym浨Iwy ~%J`#**a@P@P@P@\?V^ڟ/WCѵ)(.Q0?'^WrA̎Kt]~|A֞Cf% +Bj*{C \,$!\uqk{ƍ$2@&RQNOduY@1Uj?Os_W<(?;ș>@[76nOүc)\/sFߟx'7^ƌn{]\ ΢ơk)#ٷMcP҇Qr]@3V TcP+ c&p*GbiJqҝj<:SR'4J#5IEGj2,WQr0uk9jYޡf2Ldy'քZs@57œ[ri6n" W-#]%"xg&h6F fuS:7(y5.fe#H7!LK29pUț<ŗq3*» Ƕuq6~}GiRh5]PLH$Z69*J%8[#D%w*kGL<Ά=ba&Lڥ/|K\.iI{R \) p+kcGNy'=7J=\6Kk΂LiO#ŝ1nXh f73HcNQhʦMZrSJ{3+YҢ0de*gi&&a849MVRgc* gC6h7NKdҎV6֕2iD6 \Hd}+DKdbe"+KϞr ڈmaGj46:Sc~{fc*]2B4Jƃڲ,ZCSE"&BDR#j֣sh IRPj`!@ a@8hR14PAc 8H8h".QLnVTT<Վ^Iy;a& kW/%Uok6Uخmfx&T6*CO@-[kڄyw/sMXWfL>:CW;;=Ɛ̩|}k)Rf]du%5!@]&g|_Cw*A#ҦĥZ]>;Xr~ucKYrx*=MN+xjo|流|ѯ+s;8GT0Gyqi۝Gz94)H!KKVIQ쯨.վ+ަ3C/ɞDI/l5<|kcZtP@Q2T̞>Ga"Ne0Wޝ@P@P@P@YvYk7*yfmľݫ̯CB7Z9FuW>6SkVWl2s E8:՘.ź/, U:HqG84 Ir~69%nV8_ZԵ/g1ggۜgѥF6[j2<-˯z.Fּ >OWW[*?0^bŶiwq [J&`8$\xxi9ϙ;_K[U̚I'lŠ:n}du9#rCs3uT)҄-l4W/|kmu-^q]yw&gAZa?fޖF/ʿj֙S4M?־]oXӤDq$t3V""XFoڑOu&?V]m#i7#AaxZ%kVRrn?c ya^_GWW_Z|8[tN,ІiYSNI'Vq{I:w[ݯoHSPxGP g#s5_[+ơ0cӴ?xgL45KL#\4)cI#U*teʣw{$ij>53SxrTd#9 `ְFHוc^Y(NMj_rxsFm`oF\n6~֫:~F.w{RpW1&io)MF {Xzʵ(]Q$BP@P@P@P@ŭ# +~_8P?-> ( C@($\>:|D4=>?ҋLN/L>{υp?h׫/Ni~򴃥z pN+@HӴlbᘎN(IVDfH26l͚l+)#X^^FOS5-b625ES$P>^p6JFhI"̚+8j Jw!ƽp+TՎYϒ#ZF.R2B9̝+}jL#'wBy#9PM4UqAHҲ'fI2;\=li[0x=koБ HŜ 1 5Py^KNyboZc+T#M"UQlpET&Lyɀwc>QR,n9b]=+61B&M(pJjb54lmZ70*TrrA0ih_$z`beeTr*0WV|6VԻO\v΅ ozKv#-Lg e1nҒhY-͵I\󍎘4:cهwj@1>R;?\3Uk~:J'X/MXlnM\q c=j5)⧐Tȣ9ɨp-T!R+\U\PG5IYGmc&^q[F&eVс:ۂPFnlSnG"+J^dofZb! ۀ:VS)OR气 2ۚQ6*Hz2V:"͐O&5BnO,S4Ͻ+ޝaCދ`. .aMQ0zQ W w .yQq_60@ɚ\$\`\ u4s(3.a0rS=Xwfr(XCHcEa3@XSJu>񖣢:yR:O|UV^s5L|BԦ{q(HR=uEAuc1{Y7uj+Z VV9 &^A?ujK>;JVОUf Id̍v= BQ&I8QVEvrK`Mk3)*UjM!F$$aᅎǗI$;$mm>ЪgbfA]# KMׯImMCaҤRɱ3;F,xc =KrLč.,JwQK/Mёq j+Sʀc=9r 6 p0i gx*MlaL֩Z@M-BF6Rk32crHvqCqpdUxznBz5_ݷ5QvMAFRz6+*.1hW1H1&Hpp ` Z)Egn^H ( @A{nvWf?B1U 8IItcNPIms5˶XB ~)EIlPP@P@P@1Uu ][]65T 岰#rU漊RkQ{7szFq#縵ҝB~: < zWce*F13Bf`kZdReEnC ͛D޳{VR6n"Mb9VV64Vff]Ƽ q<CHC dVxsZ)NXJHnJ3)E J&#-'ۈJj+҉XҮ|đH'LPla,2kr;Fp8\t4.yM\[M%y$ڽވ6aXdųF3K` g3.3S-E ZQoSZ!Nvf3{QCo xV|UC-PsL {VL[DR. G`O#! (h\qVtjd cSU6ȥCD\dQ:Wcv7B&'# Hw-˵mt޵ v*[2MOjՑA$H9 '.chQq3U9!N>c9ũLQG0r{V[%DQN<*ø`8H6ZiѴQjo z2CInHa:gd㩭>#Kp.;R.xkDwB<\ѼKs,)E\ds;˯{<@GJQrV5F7R[!IϦ4t2b(#VUf-8[rP?-> ( C@($\>:<%š,jEK(T:l RQq\u&75զ@P@)I@gw^VO+3W/kX`g$Kqj-9d-^ )915mTjhbmj[*QF8c&Z/!;zXEiJH) Ƞ#tEɱNhdKRH_1 &qVdV2ƫS9`x"TȧA5Q%8}2T"AgbΝng.85N$ lV \M"8Rpjlľ{!r}krHIv n6DҠhE$5 Jҁu roUckҤ7b=jjT3Lk+/iԩJƔR)Da JCQKҟ0r~:Rr(!,zQ&kXnh4ŀP= qsaz"x9PЇPkL膦(XkkgHi|V'0MɘMo 1JhVK]+q΍qt咱-9̬ǩXL[b`(ZvB+js0[N:T\c**$X[EZbɣ qA,S9(*(FwbJdT>5-)R0+ 脊3Fy⹤ȡpҰ(L$tFE9W&dtE diq05 04LҸ E\p .0)PiR  ( )SPHB"ޘ$7Hу94զCkʈC.2lW{jwmsFR[3nECz\R.pz嶣]K,w(SRbkc4m$,Dd2J3=i(kMe1rc[fhF"n-2hxGI1jĠp^>4(qJ^@>H)@/è**,("$D! o hǒ))aer21VlebXEzԴ2IMql-XȽe9 Y8)0"en>]ϏJ(p>lbbaC)fCI@ )P)LU 1@ H \S) "zP_zLh:R%P@h+kyo*tnUө*rSCMtx_}%łIw/a}f4](I~~T*oWjP@P@P@P@P@P@P@P@P@P@P@Zv mV=\M*L>R&:|?|;<(?;ȝׄ-kZė" Ȱ<oLue//YmzǟFmT(GCn}.;"p !V)<aKe$jpk9$hcZ/GV25H,x椢`=) i'ց bi Oj+89!Zyvb3ښ+$G%݌֊$9"(=i8 ڔ<Ⱂ;a%c^㑆Z4Ldue잵 H:憆Hm&@`kA ޔu3<pp+ZD#̮'ֹdΊh,XJV:b zNLEr:v>Tx@$46Q!JqEBI淁ΞDvtzMeWJM#t p5N2l1:KWFui1N)ȀbD p(3d^Hich!6E$qU6F3Ua\샘hanHjD#Z]/ZU`0(h{"R)1Zu\h脊q\GDdP3a(FX:fo.ke"\T8&0ıOZ,;hXAE(P X c @Qa ( \ (SG]q = 9ZV펕쪚XqgWjz /pnPVLqv:^5S%]qSlk Դɚ=;ux\(jSi 鰤pM_qc*Dh 1Q)1$, 1 QLճԁ8}kzsg_R [hz1bqR;wL(hVyXnL,X2=i6"a LdӐGM!5Bi.4@Pyo):ary/glfRz<Yhfr:#Ea5cHܲsX"l4԰i@\C@І1)b)R b P@wECN #2?S GIҤdP@Q (wX^;IuƳ7Y!&6']sEhO=KU$|'YE?b1 ̿o!t/qat/n;/?R_(v_¥пSQo Kާw~?A BO'G#=.?zO"Ge{y*] ~?E۸0T??qat/n;/?R_(v_¥пSQo Kާw~?A BO'G#=.?zO"Ge{y*] ~?E۸0T??qat/n;/?R_(v_¥пSQo Kާw~?A BO'G#=.?zO"Ge{y*] ~?E۸0T??qat/n;/?R_(v_¥пSQo Kާw~?A BO'G#=.?zO"Ge{y*] ~?E۸0T??qat/n;/?R_(v_¥пSQo Kާw~?A BO'G#=.?zO"Ge{y*] ~?E۸0T??qat/n;/?R_(v_OkG ]0Hjg'oA:g]ik 1 H(6s4ٛmMR  @Ay}hpkG@ǂMKՑK^dXP@u~1"YG-lyZN+8H׮('AnhQ2.RtwJ\$MJ"KDWPZExE$YE KҐ0RR 5M0!~9MH{;m֢b9IJמkH#:Y#&f^?Ii=T:POjW+bFROBXMD"];e_(4X;zE+n8sH:k;`x5wS͋i5-8LG2u f{j-#|g+x!bm+6?W<(?;KDQDXg3ZUr)kVeFF?]/91];])iQM0"s$R`,楌Y,$DjF.@2^(aR&!U #@x| &6MJ Րٙq7^j(H3>Nz֨E.՘.+"k7f^ܒH^Nz)AP hdMnUGP9= 7h1Tlз^5l$h +'+z b7ؕ-OHӶ\+Gd 0klkb8eNx5@HFO40$yzV$ι5b"8$w*22UU!,0ުU ,?\u.R)OzLuir1Xk%Q2* HHY&EfhE$gV|GP]Ȉ泔JVmP@P@P@P@0 )\Lbu5tvK.کw wZoBct]'nz[B3.2}JIg2wYr"u [{Uar8GH- n}y KRw:W o}3Z:k|_xZ'O#'rW©+ٞkhVR$gocENC erb<^ЛgiCtӹ jO(Cr<Nn%`"H7ZJA4e 0kW~ |LWCϫB#&mhSqRCHhTwhG7laܙf&LMYw&sޝ ulcMN¸74兗 9Yql &EG9"Ji@ȭQfUܞkTe&2)xeqer敮>c"b֑VH.ש|TImYUFIu4~u=M7#56٣our avtFv[?|{1CC 0Ɲ/nCsNNwFu-T^fBX3IEأqJɣf|t33!a(P3n!a(0Uq:5dEHU¹ji&hBP+<٥lj6tki+[BJ{RZp;$ud9\GB6-8$h[c"s@$ա ϭUiOLʺkG1W\1[⡎+h-LS!u#f4 $v1kRJ13哯+K'+&TH \isO44R+oi9N)Ld8㗁[FF.e!"\&y)Xia͝+_`7N֑Z@2 ls%rUx) i,+ =QjYjyudeFgJQfl88#%VC2d4h[t ֮2w!s+ZܞREL'@22LDv6W`h$.cII'&VI\hl{JTڲ|2RqL۫td2[2l窊+App (  3@'j;Sah @0B@zP?z@( @G[lt=&SnR 1|sּiu=,_*"F-cǮh ( ( ( ( ( ( ( ( ( ( (>4u m#̋;z:> |S~$i cU֭2m{?{P@T(/?TsH##1M5cf<¿]?rzzHӐc(%q4dy"El{ĆN(;+G6{Ն2M֐.G)W\z9Gq|SE♸Er3p3a wZ,EpGzi2Jbi2ԫ*&JX KFq^+D$ctv*Ie(E+;)J,i*EҚ W &;xn:L79'#Nkz6|. *eӪK$\)ѥRmc8׊ͲұRY8Y"OCQ#Ubk>kb6z\(q֎aO0*Á#!ؒ7uLֶћ:J09S2q&IA=jq$Zȇw{]b6e?j"KthHGZh$ţDݞ՛Fd 8Ⳓ4#uhșH沒-8k ByP@ @LP0\VlpZ pj%w%$K@_ɧ)لctYxSMLMo$YyojNPN: K1Z$T5JV%2I5%, 5d$>s 9+X{V慵Ub>R'H;n|ӵ@"sQ()#E}k]{Ҹ燾Ʊ8]CKr. 7cKH+HH 3֎{Fy9'V!R?b4C$/eiClI:Iهҝ5bݓ9q=ܱmRhFTdX%bqxfrrs֋UgRS ֢Tq䅈uڹT"+fX +. 3E=hzQt1 (sLf3E3Et?zU'JP@F ( lj#MCO ( ( ( ( ( ( ( ( ( ( ( gu[d)sk m،@->Q[s`IswQ.bT?:\ {NCqMDsv2r+OuJ$W'ֶL'"\'9"8zDS)]My>iNw2L֘F=/yIZ $9E0J޴Hy4q&Y3@FICI8EI*ȀIXȩ,y#2)=+)D2)MJꄴ J9J!qT'2x>S9Ldkh攋l`4`L&ޕ~wJJD*Ym$UVnqjgNνgFPCq\:nWnz(9%r&դ&TpS2e ZNW7~Z'[E\m_2T݉9.' YBFxO4{BeLy{B}Ǜ49@Q"2Z"we$DI5(287HXUę"Ua&L,(jr\J$. Z2˚p\ФpO4\$٬Y+&il$LTDDýfLLcML7SH.)b()Xuh< D P2X$ٟz2剩n孇DlН/¦E'ҷ4 Mԁd ܚ bhO(R)))<w - b!3]:X^pxQ:U'I\VO9"6FKQuZ8GqOS^`t;ޠm#cRcRgi *vixRYCsDBTLm>ɭq.%@b0e÷Ҙ8Lz.!s؁G0$C$䏽ȡ9P0fR1ZsA@;+pI;,UeI3hϒ'8%Fkq@ (  ` )R!Q~_{1HdP@Q)ɥ kT;RQn}̭4bI? P@P@P@PIC7=IHdxHpH#?SSfن"e/zo^^).l.G3) 8NjqGejNe?'{hQ.nxm!rfmI8b))no=-}ukek_[ U- ^mJ5vr4ruW[ +ܡw=Zj7V7jhnah*JIiKҺ?ڤbzq|ӟ-ίL* W? <-j*2knw :[MiTp]ɧyC3_s2|Czo|YV/-4ҿ:vpz>P#*jRQ~ϳiOpZI+SZ\hۣmi-,A%Aiw - bI%F8흚YP;^~;{e#ѵK 6sq =]4ǚZ+4%V%|=jvM5c0Kol)L#j{yWoK?NI_]]u|⦴|3hK %BLTɨgy:zGσ%j6VFQF%TW[M/?xYfb$yRJFV4Ěn̓OP[-.$gŲDL ڔ}Q4u xD:ׇ}:؝[)"R}2 NI;64Wx_Mz mIO* SJhMv:?2@y k7vpOAo;d1Njv܅qs%jG1sގRn=&.?ͥ;Kq⚉2ZϜArAj\ EkP.:Q>rE|µyd@n>R9ƛ9C n:B}G {TG5GByRk1jL%PDH5iX̉n*ܣq0V9oU#QϸCM\KsES lQAKQ`q$\\$qr {p$򒬸..RA.zry@"#=iXE +R!pOqYrԴtD˓ȬM ڎ@ҟ(ZD&)т*2<#vuN GZumHcj\; 'E+s&QvӪқ˜W$L= \9I%>|/r .|^ʹC+MDÊ6fc<[#3q荒2r[Z *KZ5q6:UF Vׅx&S9Sܭ[)ܕ~ƝW,wFwY0~FuF+1*$11ןS7T1fѰsX5$nCQJH cZs и4hR(Zw) R$ 8 ']1ME,j*ZLi&RcX̦Ph;H( ( (b/?sϪӥ $ (|LqϘMҮ=LMޠ ( ( ( ~]#uӄ# rcoGJG|MwO~#ԾB+k r\4pM+.2Dc/?.|1:XK&Rg6u y[c%(B7E'V)oݭ<97Yuqy*Ѝ$lBO¥:qvJKvmϡJZ{t^,x5 zW$:ޑqnJ"w +*INUV~ҽ7]LMhZm?WMėki"^4r1,y`\k*Fn#=_N%uJf {ށ W6gC%Љ\YUNYY.|:0Jo}Ke!!GSn 6a,8ZJl7IW]O}9qU}Zg&ox:%qMMq'-JЗQFc,{3AQZIRr'nDC,F>*v@O J]ƤukC3*QT%4_(k}NlE7K QY-FI}F̯xikw˥%IH//\|2^m^M5yik ]b;xqAV ԜgUz2 _x_:~ԯMJl-hcd3GVs:zZ~?3Y҄(}w-bX/ftmSOlwpdDB3)@xL}n%I^wz_r)IԧBmsJi[Wo-0[-CĻhu`Iv'[=~ @Ay}hpkG@߄TU*T(AR0G8(5($/4#_?3f-ߚO9ȃ,g'=hbH<)X9('<Ӱ9X-暉W֯t'9Khz {O G(Dހz>tL/G·G G(+jAN Sd:Ȅj >C?j6֎AdA.C@Q'ھ.ï>Y"u [ Qs64jg )hJ^[$-+Ti'&| |$*O(4R.{pN(aD(NzӸr{Љq$sN 9Eq$拊dJI5,,D%%\-Ҥ;g($Y`s3FոGM)v0vʳrH6rhd./hʸ p*D̥I U^V֐v lv"Q\ TI@R~GL氕+wB7\(4*eDe]ԂA HyʑI`xyC3h5*q5y<5̋srg\ab9'Bn OVHsO9E0G>aXPsB `Zd480ZhV$W;˜ %;ziܛE;q4.QҋC!桴hR˱VL ޅ-qiʢ6T|hV^8!Hj:c^cY6RHI-.Ժh|5%.BeE)WhQ R.X9GΪHNՔHͭ~MxO\Ύ,s[Ӥa:ع!$gY^Od9d TΎN^cD< Qwsw!.Mo}Ȕ-<E%j(SmVP$OR䑪ǃo=1җFn-ˣMW2bfsǟ«K s"+_I9Wڳo·L2s*튗(ٷZn)zzRUfz~=T GkvݎآeGhVLH^(qka3pC`Sr֣4+$T&E=W5qlL[)˖>Aܧ'RٵakN{4E/ jL|)]gB,3h=(ȮIб~怫\-\qN)^ťq1Z\(?ޚz\B$W2(y֝йEi](e 9Xrz̃as׊jH,T 57@Cs87TI\5У\- 5P@P@P_zLgiҐP@F me Q`?|Sh`7O~V=P@P@P@]r>#ӵe4LA*pw]ՌU#;6q/ZEJ3$4Tt֫*dixQ}w7(hp;vϽ]o>o{|gV?L+\ha5iXD)'d`5R4R"1哔tvCOKZDzD:;o4[6rYW'Oj`j{[9F2쭥Kl`[HmRirD nky<<Ҽ<ř=I1QI-'&gZjS>xOڵnjZsNɀNpTmlL,yVo1wK1m3D!t"GBW$qQ(ONm~r*3k ś6>|X0`uk9K]B 1p_ #֮^USTޔiQmkt7[o~(n+Fm6XWKĒO\ǥU?u実ɚ碨eׯMW>'뚷ěO]cjP,n Pۻv:ԚT?s)J;!{x(Kγk(:Zdo'{H\C*ޭݵ-K7kxGZ뚗*>v!݀A>i˯isY+?i}7Nմo kiW8auQ~iwDF 0gBv~*յ۹,IuX~wkycu60N=sYSa ^Z}ȹ7)ƢvqVVsV嵝兟i9s5&JDct}:\nK M8}򑸌(PsW;jMӊrS ( ( ( (eI|- ϫ\5S [@@[R T>R8?J5a;Ot+1^8dP~ҷ@_hUej/9C9_Xa\uڱz|~ՉҎTё>X 4Ռg9֤,ܷ84՝ Gs@Nj.KzD 9$qroacSG1Jm)3/KJ# 䓚"F>;s@7> ‡⋇(֎a4.bC}.` s(9C$4z}i=d>ar (!pޟ1.#ϭ?Pݓ@@ud]ihL_C{NӃ`VnV:aF޵ҷ`ⳕC4MM*%F0F1%#EjtQH ܙSL[]ġ]899[&͙4Hʒ'd٤bULE.cxe!֥ٕwUREInkUƚ))=T72繲k)HhAR֚E11¬C%^ER$pu!sN b 1L T+ TM @i|; -"=k{\4#.rtlQQ2ݦcIC=MM1@ U 3Z=+/hhI~T{@!KR0T٘lVʪ2r:%gQie aa~|ѣ* ǥ%=AF.62,y& Xc-HSjr =3YEi#<#Yut&;nUgXɛhj[D<.F "rJrI5ΛMxUEki5M5u6a ʰ|ξ$PSSRAVcQ'3f'R=]ѐ?K`;KC`xZ0A⧖ũ&:7wb)ܖ1MHߚ 'UU!>`>a_29"Hf' d)%`_mEcx ZgD$fLJF5ʰ  QSUO(i9C>s(N((i ʄ3Q旴aʀ${ArێiJWP@(P@b/?sZt2J((@|W|1VxCumB$g}Tp}{P4P@P@P@P@P@P@P@P@P@P@P@P@z7<(?;qӄ-i-٦@xV?Oүc*QҕÔMԮ>Q q;w j,1ɠi ZAݚ)4a7Za ZA`@L9EӸ8ӹ<\Njd8KT#bXs18SITV^;)YJns٬J'Ҹ-OZ5cVz{VRgO)mbLsL)DEҲ)DUẲeuNL'&6zU.'OSbsU#1)JI$2gDbT\RbSy2Nk'#e˖e#hąji"2 fѢc2Mx|O$P8'L|l xYpNFsh?-\>º%#Q庾qLQԏzs﹚CfRѫ3tRkDG(E4KБ"dJZZᐍU ҷԎ0RɱlMµhDg5:I9KN a:#PĚBA\S".Ջ,Lɤp @!P0-P@P@P@Egn^}V) ( 4P@@ 2 |tVX!BZ]5؝ۢO>a'u ݛmK8|eC{h ( ( ( ( ( ( ( ( ( ( ( -d'g8TE,}h~Ϟ'<\> 4yV^ 'A[kH=F{@nK@ PJ><(?;ȟׄ-i-6)(kfڿzc7<_= OzǓIcTO(SI#!y 'esҦ_0'p9HӚ(y&zhRb(zF!hAdVzǕx̹b"z3vQjuiBm 7sҵ6$o+ Á\ n í`m̋rzTrPsJ xzMvPfHֳ*i83)iICT"`Z 2]!F3GxM\JSot d7F$To Q("T+mIU'nƊW9qh6hoA!CCT%[ռfEh.ÀHMuRƦсvAbEq( rx>Ў()(  (-P@P@P@Egn^}V) ( 4P@\7 (`~?7|;~V}6O;@»W d?MB?Y@+ПC _'s4»W d?MB?Y@+ПC _'s4»W d?MB?Y@+ПC _'s4»W d?MB?Y@+ПC _'s4»W d?MB?Y@+ПC _'s4»W d?MB?Y@+ПC _'s4»W d?MB?Y@+ПC _'s4»W d?MB?Y@+ПC _'s4»W d?MB?Y@+ПC _'s4»W d?MB?Y@+ПC _'s4»W d?MB?Y@yO !hgJ4 i6 mn PP@[R T>R8?J5a(hZKa͊b (O'j5/3?5s( iA{03sSLh)Da>Q<.T/qK9F[֓DOz\0 G0X7\awR }h oZn4 sL,.1 ހn, A`@X]XM˜X]PK"4"[HvwrH)s ‡aO\hR3KP8b7*d\Yֱe8188N:f4^j3j̛ Zr2d)ke6ѰVrbF$G,mfrI BͶ41ұu6i]K&_ftKbi k* Lp[)PKV2Oxi( _|nZ]Րje3Iu50V 4{0UGS샘pG0o }iv#@8lщsWj5t9ck6TZylVyI~FS9=j:"3n 7rLlj+>P3.$BAT#M+XdS+qURh>pH=~n*eT:6,Uc<͔FV,aHP  (-P@P@P@Egn^}V) ( 4P@P@P@P@P@P@P@P@P@P@P@P@P@P@[R T>R8?J5a(hZKa͊b (%!}ÌW>kߞsgަn&i(fu0n,t P2(9Cu 7QrA&QwS)J(4\9D&(n>P EÔ7Qqr|rbZ. "nq-E4WBP4+!7SKuaUށXdI ı\Le "Q!NMkSXъR=_1Bs[cN:V-DnG3*ŕU-!83'l)N9HcwږA]9wֻy ӑ͞5#qXH脙ySA /(az299G-ʕ497w 涌HKXf"02nbfI>8L7dD"=[>f= takب+lT␷6PMqBra.΋]jjrV/bҺ8f qP{dYW$g#Zg{Tek je*I;8l=}*4W;&:cP2LjSRqCSeC[m608娼AQ3je)3д!i'rj'=t. W#"v3=7D k)ԡtKMJΘXi@9j2Q [}qi;欼@thsLhܚqdWLH+ȮiHJֹ4@h@(VqHj({P Z(4f 3@h4Cgn^}X) ( 4P@P@P@P@P@P@P@P@P@P@P@P@P@P@[R T>R8?J5a>Џ8A֒osb ?varb9cpzWcsa zPPf ҸwEM\bp+n\b a7Z|`=i\,.`ns/h E`Ͻ+>s U41 RA9LVy,!sP0h74U4ErZ$%3V;_b IULcr*#Ry3#8`,#qi\^`խٓ<ɲʱVl.ڲ稭&a9#5YmVbRfE9ŽMt#NM`Ф9TX9* uDIhE1@P<( ;Hr8heԔe!BbH574Dj$ZDDSr)\,7"C֕QpAJa.!iEv_t!k$L*rռc=H,V+hQgj{և/\V sZflFࣂkRYUf暕QhPV@CUX1~ޥasjt4XjDnVn%sr008j|:=oZQsbW.3Iĥ!ͭ>>bƬjY=bH<$do7jYf·k23XՕBmI"r³OBMZleEkJM39Fm\`fRO*9pN is$#_'4Z(M|޲ShҹP)cY:4@jN;{rեؕ%dluTJ9cՓ٪n!jO5Hn3lPH jп0W;z\.J(Y=ðWLN^nic$9ڤҲDgrFDO͹]H b)KCԌq]1H9}Rs1RIXjjyY9b)+$"=k" j *p!6@(h1@P@Cgn^}X) ( 4P@P@P@P@P@P@P@P@P@P@P@P@P@P@[R T>R8?J5a(hZQ kP@3ChVˉ|ͼzWY`UpE o7` ⰻ(XC aQwSRPCaǥO0rq.K(o>>P}i6ދ7Z.>Pߞ\\1VXQ2}is9M0†Hia\vXҝÔx# **Ոhylٱc+dbեs޴Rѩ湥Bw\`Tr;x#r1s9fժ XVD8AIRq]P9kJg(15 Z&5g͝1"T$m؝bZĂjQsc @\⁈) p b1☈WYɚ"#ֳ-E 1HcZhqAq",sP7SPCJBR؇ ` *K Dscn$:t⮚&r8~!On ~*= 湙҂)6lWkj5f.RԁZ#6 `9$$iU>CYޣ i6&~ ̍CP"bh!ÞPQep2NkHIS<޴oBc~5֑=)c+͖jbyҀ3pkz1^)\uS\뻳_DbURsoeӥc)]i01Ҡ!!CEa3L,b՟)Tk,tlH#ڻmV?P\q֓wF1ޚ&?JÔQ&5ؠ=hC!TQ.~ UZ\sk4z3e"3.@f N4swz-pk+%H QBµBcU!4 i54^f (4P@P_zLbt2J((@P@P@P@P@P@P@P@P@P@P@P@P@P@nK@ PJ><(?;ȡ׌-iGazb (OP|5Նs|źnsrB4 !2iXP$ޕ`-. ٢a3EQppn=+,}i\vq`hN`isXҸXB}XBOdpdqX2i\v\VH(!aanqMƝX⋅}i\,ZSA qִELd2yrz gxSSK)F+*m4ge5Ύd[[OC޲1-R.E,NXU M-a)\#9 /DuSG yɭWce"7RAf@Jh;!Pqjv'{U98KlG#'ZYЩ4RjK `5JB *n+d]DlFO5!(P!֕r7-&\J9٥͔4)\hL0- ^SipB$V ̤ϡtMU(jkl5]WDN93)M\gJ MbѺeIEe$mE^mD8N}F'M#l47O٩sjoRA.f>T4.vLv;ӰYBjvFdz3 gqLTt=#EꧡMX%ڸlYԤ#e(%ّs^dx 21nKDym3UsIe9e$frgDbYbٴR#fܻ w aڋi462ݩV*#`uRkKYkCͷ8Sғ.2hےSp2qM{\D6;S[[cD9}\UOB)< I#[(q[8*h3 D茓!cY; L )pLL3Url!94laR`P(q@( (4P@Q~?{0GՉҐ( @P@P@P@P@P@P@P@P@P@P@P@P@P@P?-> ( C@(  uyeo'X'a@Fais(f`O04G0ϥ J..P}(P}(M(uv~:Qvޕ`v һ }'sEÔLһz.4\9D2m7ԞPz.;Waa\v:RX7hG0XP T Bd4ɗ"(FG,\Qqإq J5s>Ek6S2XcD gYܵ7g>aF4Qҝ P!C֐?J EC-22*qHw HbɪBgA"t涤93lu%oEtr3.c;R@<ֱFS@9&G5k52ܣ0L%iG+)&Tu#a#hW`AXcRBQqNh8fԖ< v$pN.ْ޷Pl1sTH8Il*7R=+KA\-Žk 5lY.fjWl#!Zg9'^ZL"B ⴞ$^ɮYR@qV26+0#][srcަ\|=Q t\vy;Ea7W ZXMƁK,q,1,KG0Oq@!oz.1is i r ð7J9nsKX\Q>sgڕSL,(>JB80t=(2Dꔈ&HRX⫘Q,&;БsA;}+tb)&f^ \R"Sbʸ9EZ, lbXtxA]K&9.grnzԲ 8"Dǭ$3M&1FIJ1[X2:U} 捱 btF.W] S. &e`JAr55NGfmBX(=\|zP•80qXvivG04jn; n##5,ak-2h29Sb"C4Etcq7I<k-WchAr{=ꑜPB2Z@OW3L,"Y4jA*RdUk7hȄMgh'G >PcV 8&/j@ y`-C>ֱr3d洌y[T3V3-@SvfM+llQffq11GYҺug4dfMxi1VX&"xMTGӊ\_j]*K C! *&ZlpkT% bs[FF2zgkhpR92quO#NEƙtۉdκjdpyy"9-G>;EJ~C&,HP0щIˊq5R+ DBFWccE$,R @-S*@CLP^(SS#ށ Ha@P)LCqWO1J02?YXPQ%P@h ( ( ( ( ( ( ( ( ( ( ( ( ( @Ay}hpkG@׃iGd7LA@|poBD@}3@X] !7R(nVu jw `n(n`Eri\,!4LLv45 ,^i1YJjNj 4 3@X3@`iXxj+ Ó֩2Y:*h+X,Di.0 Z._>n$ZȇZpDrzȑ=n4P.K/[qTڹeF 1 3Ij 57)"cKF䈃U!Y14Di$\\wZ#́\[0KW*ȣ*emT3k&.GZCL4Hi - @ (;LSX`LC4"e<X>0OQW>N%P@h ( ( ( ( ( ( ( ( ( ( ( ( ( @Ay}hpkG@׃R?Ros^ c?%Ъ+ުgދ'ދ .0ƕE&)(+S+P 0 (p&+˾"sM2,Z( ( SER`8w$zj&U GLV&WjFr"j!A!OB9IN)ܗNId"n#QqXzM4L V8'fSEP!pQb\D0I@)pE-\档heІ  !#vc&srGlcb5fَj#$rexI01Rd4<j6)CsLBJ6Z,41R)22҃K" 4 xhLnVfF$tiRS[)\h@3mE{$iO:E6niR3YμQp墳o5Xr}:2c4+(XUo|.z8Ȟ;{ylvD8I"̯UJ<[IⲔlk ܬJQ6S+HɣU")4C K(BEHPA#JL5Mrԉ蚓#"Z%fvpH<XY<´w"qA2fe$qW &~SlV.TCfKB'\+C$?)FeiaY8%b2+b\GR%&jԄLGsMH\6~qfRV4F:Vlj) '#qOR. sڡ0yCBi1!p &QNNMg=inc?S\=B FG5EG R%L6H4c8)4+q֨\F{Q`ҸA56*3Er6\ub##ڕ@j1Z@ftzܶ M]F]ʬuSs JkUYiLP+jX8P41$C70zp+Cpc PLomW9yV2V:#+sX2SY3E"&)AqЉPc#)ժf6[_G=*$ohjrVe69V)+ RdH͘UM&@[sFsӊ9N:Qp"uh5JmS0k3xAC6j E Ri4 )RI$;84XCM բ%)͏ M M iC,a)\b)\SLB"R0!Iĥ!>a,jDl5<\n)rLTP(SbbQ@44PU6}GjS$XP@F ( ( ( ( ( ( ( ( ( ( ( ( ( ( pZ}Pր*PIFl?|tx;EavC{P߷7?(j`b Phɠ4g4PL 0 ( ((h ( (4LA@L TbE9pG0XB(XnI9\bw ⁀"]i XulVb2k&j֓cІ)J) 4 rD8"2Zۿ/OSWS}F+RJ((@P@P@P@P@P@P@P@P@P@P@P@P@P@nK@ PJ><(?;ȧ׌?12O Z )P@h(P@P@ @(@€ (4 Z( )P @U\cLխ86$SM < +SA61X'ZfrEԓ s[FF$.3ZJ֖vLN#q֙<RJLǑڤ'i2SY3xsX26TPRG4j@w bր$z i"h+S9)Pd-\cQ&kU~Mf٪ЅCEJ9B)Jøb@( "ӱ6%CZ!SFljc2GU`n*@FQEҀvw,q3;- q>mJ'ePҼꛝ"FK ,Z@!/=iJ(Dx릔L=V%]3泛1E2yt p8eXAbx4]pH PCf7 HKdS fdljЙRaֆrZ'3r U͖.*JCq\HLPPbcIfD$jYCI) &4\hX`hXP!XPjpEiР @!4aQqjL Z@% U! BSsH uҨL)9>1c:fhI@P( ( ( ( ( ( ( ( ( ( ( ( ( (-hP@^Z@ǟ%qtEL>m,_l2O VR (HZ( %R ( (GZZ(43E3EJc ( Z(hŠB5Wi 1SV"թaxrZ$ؚ7!Ę>;z)ܗq$☹p#vq#~"jFEE4CApHcHw P@+N,?zfTAUrlǭ1ؠsA7(*¹rɻETDtt@2:iFs4vEIMfLag0:t, ( 4P@P@P@P@P@P@P@P@P@P@P@P@P@P@[R T>R8?J5a^#mtXz50VFRMwfQP@*$Рh ( (P@h( ( (HhhCҘ @P@0 (GZZ@ Q@ @(4Ь8Up4"l8Vr n*&ÃzULJ4hpsT'C|j.Q+a3.Ԍ4 bCRR) LR0((ZTD<$jЙ" zC4(*˜6i.MjiYjY +N޳¹j+[$bF*)>PSLԁ fUv)pYF8곚$NR2L\\dhѰ%;P"¿-,4 If,hB$&9dTIB+f 2lG/"RUȫ0u+SEwCF)X!8&44Q Z#sA!jE7zRzԌ)P!E0C)P@hAAc `B0=iHP04f.hhhO4 G_%gn^>NI@P( ( ( ( ( ( ( ( ( ( ( ( ( (-hP@^Z@ǟ%ugř`$OdI%ݑM ׬ (_۟d}P@P@P@ `@ @P@P@0 @4PP@P@0 (s@iPL bb4;5@=M2Xi<M Aq8jCr4ɰh h)4 R1!1H % (LL R!)!)$NM2"C5DhĻ e8C74Yi6qYI1gpx9i XdL޴crh 38gqBW Q^12tCS:F5dq̙#hDσX93T.)Ĉ4xJq@^uKZJ$sh G4К$E8TKDHIҬWqMVsVf8@$E3ґHcte '&R-IDÃRCZ1) JC B (P@ (qLtf WP@P (b/?s#HdP@Q ( ( ( ( ( ( ( ( ( ( ( ( ( (ꖀ@ |yQw 7A?Zֵ/VE/z5a@|s̓oB>U ( (PH ( ( )J`)PH ( `Rh@p wAS;}踬(k`ӥ!P@F ( ( ( ( ( ( ( ( ( ( ( ( ( ( pZ}Pր*PIFl?|tx'D kZ,YlE2O V ( `P@)PH ( )PCE 0 C @!H ( ( (@.) wjbE43N(<<`ݎРpj.&80+ h]N`@4!4Bi CLLZ EalHhKhV$@!4$R SbV  .C!&!bOz+v4RϔHc^6 >Qq&R(M|<ʡF5@NTyJJFVMYfj.Pq-;©搚ޘǃ@FNbd|i&Z`[\ h\TQTYBg&0&WM2&LY )0 2'ddTD¥ h0CCM&1 P0  P&(0 ( ( (>~k`! (P@P@P@P@P@P@P@P@P@P@P@P@P@P@T(/?TsqMi1K(]%0woL<;mxJqOy۠yD{@Jo'4Ь;/įzSBb[o9O†BO[|\QO =m(A?\9G:'#?.΃>#йrt.F/(.䐿~#йrirH?DGs'?iHOQ??\9KD9‰BO[9.I~Hs'.t>F~$йrx#Q?\9GÇ/^}?^9OøN/_/øN K ;o_W`% {xwH!c ?ù/ S•BN[t;; ~ "Nt>N>:?9IקP¡r.ܵJb3NA~}e7]5^ Q*ISq_]?CWاs?3gme*}MBKWOČ㕗:k ?zRCQc7Ē?[o9I[o9PV W =m(|BO[.+~%зr[o9EЬ$зr>Io'>d.V(#.+>|H=o(Cc.+ +? =o(Bc_p]9G2#'OTȽr2#'5?/̄ _9?r.:#]?i:r_?r.T>]|@)@9OC>OS"9S#ܵJ}Wc2O[^%*r~|G=o*yZ#?$9rf3/ğzTi +]AJo'+įzQq(?_-%зrƒBO[. W =m( _ =m(%зrƒBO[. W =m((?_-(?_-@ƒBO[4 (?_-pƒBO[. W =m((?_-%зrƒBO[. W =m((?_-%зrƒBO[. W =m((?_-%зrƒBO[.Zo9E3bkxL֦qAy[`ID0d= I%RP@Q ( ( ( ( ( ( ( ( ( ( ( ( ( (ꖀ@ |yQv/@|-iGdE/zT (gJO,P<@(Xyb,P<@(Xyb,P<@(Xyb,P<@(Xyb,P<@(Xyb,P<@(Xyb,P<@(Xyb,P<@(Xyb,P<@(Xyb,P<@(Xyb,P<@(Xyb,P<@(Xyb,P<@(Xyb,P<@(Xyb,P<@(Xyb,P<@(Xyb,P<@(Xyb,P<@(Xyb,P<@(BP( (P@P@P@P@P@P@P@P@P@P@P@P@P@P@T(/?TsxDŽtAN0 њB (b P1@(b P1@(b P1@(b P1@(b P1@(b P1@(b P1@(b P1@(b P1@(b P1@(b P1@(b P1@(b P1@(b P1@(b P1@(b P1@(b P1@(b P1@(b P1@( ((@P@P@P@P@P@P@P@P@P@P@P@P@P@nK@ PJ><(?;GC?1PP (CEsXX doosFxw.uû^g~OM#MB#W+Ϣ>QI+/gM?:},Zd^}3ZCGʴ͆7~Go"K CЃ]% 8YJd ]$xwo΀ o΀ o΀#?K: ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ("P@(7{y:7{y:7{y:7{y:Q#?M%$=}(J7{y:7{y:7{y:7{y:7{y:rGX@㎾()e p94 €{y:7{y:7{y:7{y:7{y:7{y:7{y:7{y:7{y:Q#?M% ((@P@P@P@P@P@P@P@P@P@P@P@P@P@nK@ PJ><(?;ȣ׌?C{B (\AJD}ޱSsȲ߯N_ /េgw-lLRn,skΣIm39m8ҥZEtKTemF$;Zuí%YAeb燼Ii|CIsOv.x#H`qj%F=?XL,.fKoԟro%{l_FT2|^kDW~tW|P46sJ@I$sI53*1r|sG(D#(( Tb ;&mHzPJuX[-d- 7#?1d(SJn˾V%'|DiDo0A~pg8ZV Ok4䍯sdk˥G}s | 8s}Z2tu}O*w7~/|%o!YN#VHE0*\|)E'_e{UEslr93Zr;st3\ܽN זss Yx?%o,P@ WcD|q')R%_[Oi>5xUu;"\dJJ)@AM] @W\ O !#29*=(Z-bnހ> ((@P@P@P@P@P@P@P@P@P@P@P@P@P@nK@ PJ><(?;?;W*c~UrngnQ!@xwHfs4ڻMÍ}rZ[d_٧R %7Gf0A#z8h>٬gpr?6{c?{RV 7WR1c*MOG+WI}2eƜzM2v[>ΓWv,4:nkjUOi}^N_= 3UO\Imq4jK bOR;eV*IE]zқ[qW9y,ix~H-O-k48PAxW$G^q5,:] ա5Vյh|W^^ӡ7 7Gf jA\qRJ$ZtRJnmu馆n%wZZ^Ňt0#Q*!]+hT)Vo]v/ǹԯ:Nu4vQXzT#dq6?.H?ܧW2SuUkiV&3mG/ڮdMLvg1O^eJ+YY^7nonijZFiw}l[M4 [hon_$M[\B8,wOz^ywW95гmIiwky# BienO~ʳ!N."-YI^rO xvCA#XIڙ\\Ue~nGA\d^fjh^ ٳպ"V++xQ aQ%gDu%7֑gerYU-Ȳ1`G:sUS/Eiqsrsךz_⾟}3◂o1xnEȍaq\T\]IkȚ8_߯bx^%ujO u&DmR'qcoYF/Ѹklq F8H^w=ILPmqݶ>M+4w-ԔOkѨI5T8?Z63Vf NCׯb*vTݵ5'wŞm1Ma)k,&.9s.79"^"?ƟLg Fu_xE_Gi4ǘՇqx<ŠR ZYݺ)v^)4-OZxմ{A6F UmNO[_b+ K~q}O ma. xnaFXOSWON}˯c6MR=SZr:Ķkpgrђ$Xpnd[t[W)YMeپmn+xT|?vԚUcdV˜1wjSv^jVȔ*sP}~u~.KOxJ&(Im-Y8e8?wMTMk~qռ)_秧R((ꖀ#%>/Ez |̟i ?4)?(fÄ|߽t+ШS{oRzݴ^EPK]`c$&KM1gxSmSR%,."&}7d5m0]eRW4B!AF;tjf N^%ZGC.%\|#dR"&kk9dOO]s:[7V;K-F 6vS^N4%_ޕ(EK(=_+"ЌZ΋IG{s51r2"18t^n.yk|<:)-~7.5sCf ,X[}H0y2)!`iKmrKOpR^ʭ\vwMto;^{ë^ 56Lͪ<Bb_ RK%5r\m[zhk wy* :dsiɸ j)Iؖ{^@@P( ( ( ( ( ( ( ( ( ( ( ( ( (-hP@^Z@ǟ%sQ, 5osbA@p0(EV{hiU{A\{q熝wsRe?e 恥ʩEHKrW~J8Zz N˥HcXʪpwWvTcrO(x<9M~78Wƾo5cn?)o|ݷz=};|5((wȹfr}jedbu%-/JӬ-u`XU֪RM97XyfŚ7м9dcE&v54Ӎ8SnÝRSJ澣mKV-!M4!7z6 BH25R8hҳtTkBz-m2XOi^!."$f c I-@TKuo1TNiE&;o.`7ދ`2ݖq׶}(R /[GMJU\mGium[A^}8sG AZɦZJ-['=#ր)@exC׬%U 896&Xy9E'umJ]k ۡߛm[_@!{C#]|RƦ#g,KFYExng. ^\WJ)+Rܙw|)a.;KX%Yd{S__%uk ՝?rSE/ҢWi_k: r:wmaӼOaMMv[cm'$mn>Fnw&_;U약*%G֍nkC3^NkX^iNF2p}Ƚ?mu[zTS[H*[ -܀p1YrZ*vwݒ[)tJ~~ǂuO%LX/YF-ڴn~wKgF4-uo+;zϷIc;yvr2y9UA5KRQjp=J( @P@P@P@P@P@P@P@P@P@P@P@P@P@P?-> ( C@($\>:"^0 S k(< GZt=B Ȯf@3X1G;4rS[Wuuo?Oe<$(G]K/Nx+{pA6;F-/pLҌ\pmz/wvZ6 mC c>d|#WQի+.Uphyzh (lzP@ @P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Pya y P@P@4PrJ@E4[e@P@P@pMY-3uT-^XH9^GC@P@P@P@P@4PrJ@P@Q ( ( ( ( ( ( ( ( ( ( ( ( ( (ꖀ@ |yQw^KDS k( ( ((G@Tl_@Tl_@TQG@ @P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@A(ؿ_ʀ ؿ_ʀ ؿ_ʀ ؿ_ʀ @@ @P@=Fh6/Wbu*6/Wbu*6/Wbu*6/Wbu*6/WP@A(ؿ_ʀ ؿ_ʀ ؿ_ʀ ؿ_ʀ ؿ_ʀ ؿ_ʀ ؿ_ʀ ؿ_ʀ ؿ_ʀt~P@P@h ( ( ( ( ( ( ( ( ( ( ( ( ( @Ay}hpkG@߄?S?TC{B ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 4P@P@P@P@P@P@P@P@P@P@P@P@P@P@[R T>R8?J5a)h*cjP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P( ( ( ( ( ( ( ( ( ( ( ( ( (-hP@^Z@ǟ%u<%q@1PP ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (P@P@P@P@P@P@P@P@P@P@P@P@P@P@T(/?Tsw:x-(5( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ((@P@P@P@P@P@P@P@P@P@P@P@P@P@nK@ PJ><(?;ӌ?1P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P( ( ( ( ( ( ( ( ( ( ( ( ( (-hP@^Z@ǟ%ut?@ZQ kP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Q ( ( ( ( ( ( ( ( ( ( ( ( ( (ꖀ@ |yQw> CC?ZҎosb ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (P@P@P@P@P@P@P@P@P@P@P@P@P@P@T(/?Tsw8-(5( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ((@P@P@P@P@P@P@P@P@P@P@P@P@P@nK@ PJ><(?;ȣ׌Ҏos^ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (P@P@P@P@P@P@P@P@P@P@P@P@P@P@T(/?TsCo^>f 6 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( @P@P@P@P@P@P@P@P@P@P@P@P@P@P?-> ( C@($\>:<"SE` (x ՠ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (P@P@P@P@P@P@P@P@P@P@P@P@P@P@T(/?Ts7yC ՠ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (P@P@P@P@P@P@P@P@P@P@P@P@P@P@T(/?Tsz/yC ֠ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (P@P@P@P@P@P@P@P@P@P@P@P@P@P@T(/?TRM[i8U'Ji7;ȩה?#Z ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 4P@P@P@P@P@P@P@P@P@P@P@P@P@P@[R T>R8?h[VcG ݐҹxGEM1P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Q ( ( ( ( ( ( ( ( ( ( ( ( ( (ꖀ@ |yQw~SE(@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Q ( ( ( ( ( ( ( ( ( ( ( ( ( (ꖀ@ |yQw~OE@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Q ( ( ( ( ( ( ( ( ( ( ( ( ( (ꖀ@ |yQw~OD@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Q ( ( ( ( ( ( ( ( ( ( ( ( ( (ꖀ@ |yQw~SE(@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Q ( ( ( ( ( ( ( ( ( ( ( ( ( (ꖀ@ wA'w~SE(@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Q ( ( ( ( ( ( ( ( ( ( ( ( ( (ꖀ@ kG@SPP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@h ( ( ( ( ( ( ( ( ( ( ( ( ( @Ay}hp? FG?ttw^ODL j( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ((@P@P@P@P@P@P@P@P@P@P@P@P@P@nK@ PJ><>u)h)@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P( ( ( ( ( ( ( ( ( ( ( ( ( (-hP@^Z@2l_)lq_@֠ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (P@P@P@P@P@P@P@P@P@P@P@P@P@P@T(/?T?WkyS-#"^P j( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ((@P@P@P@P@P@P@P@P@P@P@P@P@P@nK@ PJ>9-Jo_@@kP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@F ( ( ( ( ( ( ( ( ( ( ( ( ( ( pZ}Pր*P4ᾰ6>NOJlc4_@@kP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@F ( ( ( ( ( ( ( ( ( ( ( ( ( ( pZ}Pր*P c%L;_ȧה?Z ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 4P@P@P@P@P@P@P@P@P@P@P@P@P@P@[R T>R8x? 䨩xCE=aXP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Q ( ( ( ( ( ( ( ( ( ( ( ( ( (ꖀ@ s,L;ȩה?Z ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 4P@P@P@P@P@P@P@P@P@P@P@P@P@P@[R T>R8o 5QS/yC 5 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( @P@P@P@P@P@P@P@P@P@P@P@P@P@P?-> ( C@(7|2FqG%EOxCE=XPHpsZ1cmEq|NdyuxRvC/rYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQYZKMQY*Z_&Vg>Z_&Vg>Z_&Vg>Z_&Vg>Z_&Vg>Z_&Vg>Z_&Vg>Z_&Vg>Z_&Vg>Z_&Vg>Z_&Vg>Z_&Vg>Z_&Vg>Z_&Vg>Z_&Vg>Z_&Vg>Z_&Vg>Z_&Vg>Z_&Vg>Z_&Vg>Z_&Vg>Z_&Vg>Z_&Vg>Z_&Vg>Z_&Vg>Z_&Vg>Z_&Vg>Z_&Vg>Z_&Vg>Z_&Vg>Z_&Vg>Z_&Vg>Z_&Vg>Z_&Vg>Z_&Vg>Z_&Vg>Z_&Vg>Z_&Vg>Z_&Vg>Z_&Vg>Z_&Vg>Z_&Vg>Z_&Vg>Z_&Vg>Z_&Vg>Z_&Vg>Z_&Vg>Z_&Vg>Z_&Vg>Z_&Vg>Z_&Vg>Z_&Vg>Z_&Vg>Z_&Vg>Z_&Vg>%Aoϯ?tZMeV=7S_|, VY«֦ܤp |jg_GEMhGuQ ..$8X\JUSR]YؿCms8Fqqg4A1p>}g(_&ougӅPӿFe-ɸFu~_J;:GAy}hqp~j`\߽JO`:ȧה?x2:w?ۏ>( xW\6wc8Q'c8㩤81fZѣe'}*לcG1^"4(:6K}ս]:."e% D\|y\g<}* R4ɫy<} U|-U dg]6w,^x Ll5/ZkMKl Hbv£6u,Z>ږʝtÿ8kxkṘC,߰guWyu>䩹A]ENu-m;VI!m6;OJۃW(]ͽ/w{txVA7#ǿ0Y_4c''?.p](=^}see$m.C lUwQE9ۜsәlp=h8om'qZ+} t?Qu;_YJ(3Il)zֵU~F7ݟkI.^_5,e .Ѽ qG54Y7DIPMgúqZNJ/ 7ǦĶ*mMA+n8_T^NI%Vb]^LMMZӻZ#Px; e; r2e SxچZPxaۢK517ٝUovZy  t瞽6O6mW(?%]:k V:ΟqQVQgpƒz7-,`~ ԥ%7.Uw^v !htKSzZ*1l$a99i">'5[ - H#;G4s5kG2+N/WV~dni΍%KG-ypxH+H 58[Elu ؼ&%Jq_G_Ci.lm5ԋ_yC̖mʖ-qxSoN+f ZoJm9jTmH#2Eu\MHa4p"}x(J>׊iy5pJL˕'-/uԝ:JuuGLmu]+SUn.3$p2= t%N2zZR*}=[[ko"$]] 8PrOA[]fya9nъ^u͋[IukqzuY:4m,֣pΦJx\iٯ&|8:D~(}v5vKO6Hvi{K:~G7UR!ڤ]~V=/{v,5x4~9t\ISQigʷ:^tp}%2rυ+OEǤ4;^K#m0cH~aۚ3VrnyRjw4+_i;.{~=_J#j2!!Df֍[۪mZ5GG}vf7hIxޣW+9-;38:O⺽mw -Wq^ W?=;9eoK;𫉧F9t*_d𖙭e?'ͧݞsnvuڎ?c*ay~)ooo/t%T-s>'g~d3?ΤKOVEkj~_&kE%[G[ػ`lsRqb⡞TxmEɻE'7H 1/?noNxO5z~{_3MqGŷGwFw}{8~DCjw+r/[;O<[ê$1yR7ʷ qdxkwk=>O_祝WG9Qݞ*]h>?OAZZ1.PuGmO+`U^Z+?qzDtmZ8+A_^qvi>8]?fyRV[꿯ǀ, ?' }ۻoӧ^:m7 m?9*Yxw^׵wK ORXܣAJU t}gJ;4z׎->95}xc0[fcb <ppG~)Gv]CګSt4Q]-掠Mޗoi?j1R(,U䏔=}&}Uo>IpInɧϷ:(a|[mr*\E-Bꥰ́v3j)%.҆ijԓWv^󵿉FhRiWIp0&;3?An$T8UiVUU%-o}{:]syY PXF €bz\OEvzYa^XBsbע]_sSSockXEy1Z2Ldʣ(K_K(f9PGrVvM{6VԣGA?3A$dp1sCWV;[nE,b)ЦGEr[{>i}*B5Mk8Ҷ{+g}Թ|ndMJ(a$ױZ^8{-! 894FW~֝ͣRxg[)r5/R_WRp$w8ݯʡVhb7+&] O),@˰'j q]/^W<`9aۧo{޶}5[QxP]ϫj~ #Ӵ<];c_Ĝt#ncҖk:Z\pOV iږEpJ4O1r=:JoEJ9Խ)8MEtWѣVᾝ/%VZ`L6Ѱg$"[n_ p:OW̻Y_-魚6e'vq:NSuLuR.׿G-: };VE2/lܪr nj=,*pTݨUnl4mnqΗrL݌0l0ASΚ][_qK8V*TH{n.iZ۶j}g+矧ZUS?¶oק8so~$~1՗ZRYJm$qb{5fߩyncW-ow齻>G[iݯ>-s99Ϟ1׷ild2wu>Oe+E& }o0cqPjQnWGCaSSg{:ܫe =tzivسZ<\_`9U?%Wݫ۱\ڳpy{(wwi?j;VʅLױyَg zVkǪj^o鱇w ;G^ Wf; ymZ)g ]ODOgM6Y'u[Dlȡt :sܓiZ1Yz0w:qvѵ~±ǩ무.#H"$H~fqӜE/zTWmh5-4y{vvrZY譽k9t"d@a`s;k[u9^oRZbbHͶjftt{ bP1W JIͭK6񣋣|Imqg{"]mG\a.'񖋧13;':I{i_k/͏1ΖMZũEjy>uhI bHc8u-Qk\CR]g̟mՕ&~E{?Z‡(,$sME3q4g)EYzS|;Rw3%86d&ܔ4ծp|skk>iScխ_֧S<u̒]o]k Mm M@ב ,8<Ԃ^|֓gvWC.^Y3Tz@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Pe'`]iް8H?L<>!%QrQ׳ܹy{ri*QN +" fx/M~"uͽ[Z*d9n9c9*'.VW_|#9Wx'({.k_èKfiA ˩mxUǎKex#N=3x6k_צP+Ŭ:)J[8ϲ{Խ8Wм56n5EFeuA{U[#-MWM)k^[% zu>COx{TF˯ݽٓ֩}4w;mN"=gڤ7o2Bp&̰jR}cI=^!$/iGc<*U%sGPӟFe-ɸFu~_J;JGAy}hqa7uxVjRuOEL j7exup>/V}P@t87Mh`+E-y*4JKg#phFZR^aMNRAk)ko7Fv+XN+@hBVMz;XS]&x~gٛ_ݸ獔"I7ge/ r)ju:fZ?)ZMQ7,FBooJmOv8h¥#.U[/{n{Jhn5bm䕞88`ЄN1I]gxxWKBdF ̇q$[R[^m^Z1G%+OM[}A?hKV q;})]!2Z0ae4E$Ǐl/cX]6=*12pk!^~xOZN.)]_cˆEWRxHm}ySr{%Iꖯ~rsjO{/TxaNt\ZIo{5iחT#i;n؊}b1|͞IxZrrM.mK/]h7 BIt]8iMayZTn\_ճQ,VtZO{5-gO Y VَhbNG*1׊9I_ clEJ7gi-h^%Ҭ"u6{ڕ}`p8ltmEmuzl|he4jWV^[svoVwr A"۽ݓwlMC%cRO?ˠGp,E\FXeX1zgF2T_r1UT\ܮ-$nui#FbtMZV69z`rto0pi6ߺնַwsG dڱ^5 .3g's-6ՕK,Tq~S4yTvjvzG,ou)+ɰѲ=H6SK;UJZmO]xemC([wg4{ܦkO~ Ա1gYBkZ[]J~"4?qxsײ)%ES}^p %)'k[{ؚǍAA7m=?k'?EN]9ov_G B9 㟧QrnPQ}d~ά`ݮzY[>W4&Uִ> 8(GV97d ǗɧGI{MK4 sNq\\l^Ecpy;VҔߑpUeB7Vt.xGTӭt3M [YkDQs%uc2ש^|XՋzru 'FEqW|G;8z1oe,ʌ089]7]."9uO izokGwq;ۼa/.sr +W&/Ԩq֧A+g}k=Ĵ񕎟CUաVӯCSX.UPTpGzVx4%eTI.xY}O}#;o ַ=~JAbI?99;'UIEnOM_KLԭ[l,sVi;1!*SJǤ|Pm]CN-7? &Ox㨬RGOY'-a狥:w٫*ȯ|Ks^HO6FgiVAp:#읣2RhaIIEV[Ykot0\PpWNd -z^':pqjowtK_gQ?4mKƲF䅣-'@IJZWՕ]×+YO扫-:l&7*ڸdN?>FK7޿שѩ ]U 9+i9//5gѱ|7+MAWq<Иw^v8pO<沔!O_ǘ|vg*x7E'dXїr= FA&8Rz'Sީg,r*r۟>[on'VԵ6[RQ6g&2nPI'Z[b0sOAozm%s~M)$` †jޔ[o_zh 3N4Z;YmOM_k[Hxħ##s\u!'IA-5sUr7gzY+jfxsvO mJ=Z+*u@ŌGkY_ tnXq{{zhnw[__Ah4ң3'pJT^{o3UU'twZFh6ZPk#nf䁁ǥЭZJvJJWZ[}ȱh'SN[]%0:PNH8T{;_q{K |-gGmu].-&S)s:Ck*6G zJ>mh [SU!PqɶRu~+'е;OGd]9eF>p$>Onl\;W;}|c02>I?-6z{+^.ASZn3N/qq'oo+oߩ́ļ=/iQUKOw}=Em=n4H j߅ULl,RΤsmQ|G$>>2_)!LKdP~rI鴃:zT0d0U%ngoɽ'$:X&3mD~\nN;!IGYu{mlx{ǖjoԚ(lh'Y9~1~=ҵdSs_{Oq)Gz?|#%%B:*r}7ws|zud+*^D2/#rJy$]:s,S4v}G_Ls^C-@$i)?S'(Ny\v2b (b?k%~x?n^3TQN1FG'y}]߉] 0[4E2*0:POt‡6QXY;JZ_jZՔ{3]FYp5texkgt|f:SIJ)-W~>+H(.d"x.<0Q ʼ}9r7zJʱXB>ӋM^7}o:}4RKMg2 t)ӿS{(I|ycOV>WR},ǟ+jVϾ 6 hO*xjpB)ួ{eN7Y,R'ҭwkcp5UFJQ{-$ +O?5Inf,C 1wye 1]S& iZOMJ맑:/eI)<=ub<\qn0J\ڒ}6כeCFz\/[41޻7ӣ+IV {Ү'JRwzX<&-TAE˼NŚ&mwNehn Vτ xÜz~\:_&V.[-ZiJM]K{#;o ַ=~JAbI?+UT]5~O[[ hOԾu?!OǨZMSZnJ>[=5N뾛z"X ᳆]8.A~-pxsWe2o#ըn}O>k>m}3TK4{yYr )i+_0.x ШeΚMmngh߄!{^.}tm# Ű4(Tc/׊fY)aST]'{+htLK]~k*l6:C޵v_ԍ$-ۨ? ;[o|g47%e 7%Tn۝Eߋ| +Ds rdO,G+=my0RR^{sptOcv#=ӷ]=U*CMwi~j[H^#y\"Iȩ59=:ϋҬuC5Dj)Gcȸ崓UP@N|oo?&o()  |fb y<dv>=,aPo}wn<^ ( ( ( ( ( ( ( ( ( ( j.7wvI62<GBi4]N|V*Y^/}s_Oy3u3nFOJI+"QBMZ)hB xz4{Ƕk` =ԂGKx KjKk>"xYF0:@3R{jN -T oz1 ( ( (/:meoy? ~T Fsg>%0hJsՔ* ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( vtjX,ĄaM&Y֞ķ tMuDeEʼmtiE׊î}'$5g7Tz?Pf3iw/LӁEl=*%^SvRӓҵF*}:S{hE$NqCI˙M<5ssovMMcSM8&x$m#9?.qך$-DwS8.nW(S:ᮟ LmҴ3i/ 9jdyt~:z.+^˨WW3\JҿԜZ 1J4R_qVP@N|oo?&o()  |f*>W9)K`;ȩה?xng\ `&pUDZZO#V}P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@v5i@D2\A4lQkއgvR8oZWݴ9rR{GEM)@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P( ( ( ( ( ( ( ( ( ( ( ( ( (-hP@^Z|[{K=f/wvL|ѸkvI7WȒM,f}u][L 8x{|+b$ZhrM]H{c"{N6v}>ٍ ER,Bo"I1~G#)u zOR | zk)?E JOQt JOQt#?۟)?E {JOQt>/ns^]u< zk)?E >/x s%') E+߂?7\?|R"<m^\3"CwuG:OR_`qE@+|[Bo/?R"~/xt̂mx'_)7K"~ =5#߂GRo"x E=t|mE=r|ZKZMQ [JSC k>`O$ETpe:Ru"M$X/'_&ø$U⯃!8Yo"qrǂZY~=gG][%i{XV5'ANWo"mȀ5gf(+1?kx/aoퟔӬE'Z rE\^Iu?!7BR}C CKk?o"i+⻆zS>f|A}Õ?N>f1,%F[ZMU{hw /?R"q>0?R"i|`1JOQ#.8|\AJORo%'(+[I~= sI=BI=BJOS\q?~M"oa| A0_EF| A!;s9/R"x#\>JOQb7?(x99rÃ.o{$(A7=ss a _99r/E9XN"d?sx '?G2VA+\IQ̃.o{$(A7=ss a _99r/E9XN"d?sx '?G2VA+\IQ̃.o{$(A7=ss a _99r/E9XN"d?sx '?G2VA+\IQ̃.o{$(A7=ss a _99r/E9XN"d?sx '?G2VA+\IQ̃.o{$(A7=ss a _99r/E9XN"d?sx '?G2VA+\IQ̃.o{$(A7=ss a _99r/E9XN"d?sx '?G2VA+\IQ̃.o{$(A7=ss a _99r/E9XN"d?sx '?G2VA+\IQ̃.o{$(A7=ss a _99r/E9XN"d?sx '?G2VA+\IQ̃.o{$(A7=ss a _99r/E9XN"d?sx '?G2VA+\IQ̃.o{$(A7=ss a _99r/E9XN"d?sx '?G2VA+\IQ̃.o{$(A7=ss a _99r/E9XN"d?sx '?G2VA+\IQ̃.o{$(A7=ss a _99r/E9XN"d?sx '?G2VA+*/?R"d?px)?G2VHA M!?R"d4|_1E9[JORd(8ֿRo"ik#{H l'I={ς5{H ?mx'_)7Gp[^ Ro"ipAD.7)k??OУI9]7BׂTs&).!tD|W\SY`?e>,x)qs!?oev+/)y9.9.>/xmEW~0w.H>.x d΂C{JOQ΂UE'8BORo"i[^ JMQ#. =5c.WPEAgG{X ~,x( mE<Aø c_Y={<AǸ ??Ro"pk$k\פE )puD E=Qg'{<AøyVo"k/-og%f( WY=;⿂ֹY=; =5ø E?i5+,uVo"i[O /c=?f*ESh~7EǛmOIL>/2.O'(1x(yORg[Ip3]0xt/ E3Z\J7㢀y{~s)hardinfo2-hardinfo2-1331e88/tools/LICENSES/BG2_LICENSE_CC0.jpg000066400000000000000000016235421474767047500227700ustar00rootroot00000000000000JFIFHH   (!%"/#%)*,-,!140+4(+,+  ++++++++++++++++++++++++++++++++++++++++++++++++++ }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?/|DUc\einS~k:ܤ=E|\?voo)ƢPm]ҲdrC2jZisjEWP.T5`jƋ,qj c:( SVL_/OQ~C܇jwa/ ?Gh"{YbhZ7HCG??-Ɓj>!m4P oA j@%[>!m4_Fۣu$lc+xT'3sTnx:?@u63j#7=@ &yWl׮G@hZpKP?|CA-Ch o Fƪ>U/ߊ3kTmx:@ :n:[8~"mP6mKP#ƦpդR_?OQ⪉?SQuz"ܿ2뺼]RZM'p8;؋WPS5?54{8vk;jjuhp?w?7>[SPG`o{E+RL; J)lg:$Y/4@o??%ƋiX2aЋK O?;d@%> '% 3=slX'$}h ھs75>gk_@?+KUڿo!ƝA[X9}F񏩝qOti 5oؿw?7_Yaoð}f󿽇?_Əgښ]={k;"kz(TGapխ);ݎ+4wW?v6mN7 4̨Qw#?7{8v4o{]C5?54{8vw?7>[SPG`o{j}D?R["gZե&cu _C;AKۚ/!ƝWQ$vI|HU+)?o>[SPG`o{MC5?54{8w?7>[: 1Hu j?@$Z5 -o?EcR?"1SԿ)ƀH _@$zu/ =o:? AKh\ΥO4-mЫ) 9qӺ+jwj=;f󿽇?Əgښ]=;k;jjuhpYaoǰ}f󿽎Xpj7,iEj^&שcMs:?$? ]wZ?y5NW/&xzNğ֥/Vc^U&]C/go{MC5?54{8vw?7>[SPG`o{%]wWUu[ƭhdn_cڇqA]C_hA[ ڿo!Ƌoj.VhA[vVi\+4\wW?pwW?p_@jwj=;}f󿽇?Əgښ]=;k;jjuhpYaoǰ}f󿽊 ݂9L~#"Vr{&-KQA_P? /KG&ۤԯ]ecj\bFR ѓ_1ں^o{MC5?54{8vw?7>[SPG`o{%]@꣠[$RA_Pd$  gC_QOHu ?@$:  g A}G_h!ֿ/K_%ƀHu ?@$: VY6vI9$[SPG`o{MC=5 g՘ A}G_hZƣ/4ޫ6[SPG`o{MC=5wWJêƤ䅸p?RIlg:?#?3S2C=o:??uR,`r֍ƛNopkں=;k;jjwhp?w?7>[SPG`o{oB#DʽY+JMRH j_TdkԿ)ƀH j_@Ijr9y5cԴIj\"h5Z2iz?7p?w?7>[SPGaf󿽇?_Əgښ]={ 5uaT*꺀QjֆM-Kgڇ[P? j@AmC_h-K? jE? E? K?+/4\{W?p_EWPQ5?u4{8vk;jjwhpYaoð[SPG`o{j GB&oOU9?njտ)4]nj.cx84jV?7p_k;jwhpYaoð}f󿽇?Əgښ]=;k;uE]JA;ZYNNwbmwbWwE֨ ^goVcx1ںgYaoð}f󿽇?Əgں=;k;jjwhpYb!}oQQ:&)7NjoU7vNhVIɿ'fY+)_M-E&#げ  =:9rb%x90֔uk>h ka`֘@#dPBU@-6_;@'W{ar~ETU(Om`H鑚 ( ( ( ( ( (MGyԫ @my2 +,kqqz]ZIPEP@Mkq 0M4Zt!d%Op#%v\m32+! qБg#ր!/by6ַSU*MHxRu`A?5B7KK]iڜr Y!]@9(..8R,Qjsg ?#N=p*rK>}²f8&0s$`@Cҿg\S pӛV-R$mSr;?jsxW1K\\]^_ 3M>RHP+ xzDZ5sIi2Pl6I*3Rqv+)~܍JP^ dʯéVOq@<9i坷#{.|^R)'i;ǚF l4 ;Q+uj2Ct.ʱ&e*Krh.I w{N Вz01|>A*_Ȱ4tGU'Nجtv9dԇwC\e X.Ta(J~_ O"-ҙT;bIxs-V?{.Eh ] w,>@WŜ1dkĢO8mϵW> Y.Zu5n1rz:duJJ7ͨüH\۵T Üހ1,96h$d+r`(R<@_x;Jc7ɹGNY*1$_z.k>OK;if ew\@`åSoxzQx.o{e.턇9\1ܘ _ /j~t0݁ׯ@G$I}[}|8jw#O#cc?sLc=~>f|:E@ A5HC;v`׮{Pja|_i_vs(P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@gMK9/c]N{{C[&uYA^zPAJj (g+s;|[ zʻ(?ۻ)6? 9@Pg;{;qed|Eًgo3o9~m۷|٠V7 o-ߊaB(1$ RxSiԥl*JK;pȲA+BH$Pke@pE@ ?0n2..]/8ϭC>/t-.}p1@[u7mR7sӓ;=kUSsvF9bO$&ɪ_匱 !oXg=ր:n{frvpEBh:]NhȐeǣ|^Ok궖dݻɎ3h8@4Σ}sn-o.fHe+2=[''&N}޷Ҁ&٢؛H+  s{utW3L$R,F{ ?n 0}~=(N0iZgydԯiZKۗiYZBұ.I;zPg[P&.!l,3hypxUt|q $)t/1٦c8u F. h]#Ll+ H@5}ѫ"g狗߷9ۻ9y5u]mg]V[X}ņps=hPƄoDfE+c߮h;h@P?v?4&+yyR ƮBɃt8<4P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@{H5=vGo,&ab=2P[n-}sT;%P}pĊǠ (ig!yd+ ;K$rhKXVB@ ڹhy. 629F֦nʴ 䌽lߒ0MğMZ y ~Л?.&a݈ 쬞W "z P@P@P@P@P@P@P@g6m#y Ze8`AP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@6/TY'LmR={Tr]JGV΂( ( ( ( (Ip\~}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}Ch\@ ( ( ( ( (-xz9gb})uP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Ph TFK;$ѻ#WSJepXnr{Z@(I䢮˧JudM6Ed*#Vv:*1TcRZ@k?:Y|=O4$RG27LܸP@ U`AvGs@`ݏ QȁSP (Ņ]+xUJ6tf8#*l@oCMR\1p@ Þ6|"A;.٢&Q9=hlF_Xl܂YCA<0sRNMM6+$giMeƱe柭`yo<p;@ Tʢuoc_4bֻvՉ&R<:bv2JT#rd«iM7/WׯԦo䝟̏Pm7l׺|@.L1HŞ@/ˌr M&V~MwAkuW^j=Q;)ҥ|:}BppM_#QZuJqrnW׶Աu+-~-ƞncw2FKvv:K:+|~,|+D:nt[ic%n>lSҳZ?;=GkMn r_.wfy2w(B23N4\Uʾẘzɽ+icZi|?`y]..=)}5|~Z.v,/u9nVI 9}#1B cG>5\Oki5$޼˧MfwO^V~}SL^LzeR|ć;$Pv{dȤk{ދEB\ Z+/7[Jȿ Ltek7&0G8!_ۊe ]VC-?]p];|;+T#g.e}+NF`w%od)%'W'x(!{` rb2QBqۅk3Wu}Q>醧~,wQQm^B,=1NZM0[w]f2K~M~o(፟MWNme2l8/}[UT*,t2IU V'#y犫.I>~i~FnMUӕ9<5R~#ReN6[=44Z]m?.o,^ͭ~oC8b\lq9F%k[W_ׯMA{8{ƅVDR%J/#(1m` 21r1{jMޤ㿻.r3/-Rfi J 2zqIn_=7mrQoh_=]\NݤI,/4@!@\c$`? ȒM}}/svuDŴWMԶu ,vn R& }?^ srVj7[-f.5xLV)-&F}qWofdÍX8қk8yo?_ݽkk}t(xKCG$6mPHdsoJSU%!fkuQ.//6g%wcCcͿ+zi閗4WWe̋ ,tI",s /⯕rqz&OW+.XmC?& (v pyRM)GT}r^ZMMTu^0ms9U%j|n/MWTܭ7VvKt7Nn9\Ѥ{ MuZy}.2d]N(39 XN1eڷ]? znq?=חOuŭ6P_0T$g*:G~Vto53I(Ȓ765XLHX ==%;Ǚ+RIun:?b"1)mQՅ̒]Y͢Fe[pYAmnW]?r^/mu`P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@{>%YAm M%osu1嘃i| &}fX+#]9[;l'@4Io-3\J&N84Yzn-P}dS=+TC5M:uP)wm3Pc}qipgF9)E@:^4 ?>u;X[j~YC1@]tzm`m-s1:lߥy@ UՇPs@4PI5wO>(#)U!K|U߲m[|g0l6[y< P <ş) J 33yb*s$kV^΁&ew:X:xLuJ4վi?Ԏf|VJ쮾m=-vUKjzeΉyak^FRLPӗ\7#Vѻ_/wB4ܵm쟕M~5宜TӣyC,eYIo$(I+5|o 6N]ҏ/-Yn,7ҟ HTXEvnwmP3ZTu#o_xƓc/Mm7[m_om'H]Bty3d`"Xc9Q^ vWvb14fޒo+]mߺ(&'%[|ϗ?:ӧ5){8_&oo:_Sv8|Ik}V ^/{`T(~w6ܮxS䊂9JOն&_,"r}"w_yRh;OwylwNzvSZI^S5/6(.Y]%;q5>t԰Ǚv.gO~I4Ծ{ͤ?f eͭ&cD{[XyqlA'Q:kK颿czn2i׮~%NJ Aik^^N++U/IO`;ҋJ1Ik.zOĭ]>eA_DƯom4qA `Xvdd}-#.dݞ˧[+xOŤڵo͜}ZMrL̫&`acҦTa}]F+oӡ5ޱaj]GO{XaH-!q IҪ))95wo. {1woR;Xn$Hᷛ02. [)sȦWv륁-!Kz[ljdYkh}Bn[a`LwWoSf'vvmv!4Q_+/_,xow4rvVvL8^-˻$B$nk~ׯ̞^ȯv6W1_˥2'C%NeMK};9_UM,/}-X(o4e\lNm%f'\ 'חK/|RV_6W&S6 t>HwLb.W9IQZiVr{Z+~.ENgG_ݿWJoSIt,=ȐJOmRyǧ>7NIۮ|[b"*Vu=:۱ &nTM{}n|ʻ61EFo-Ȩo"޽hw66%]L\IT_p'ϭGݔZ.=YJ>V޺z[b,o֗pzs$kx8-#yx CВQQݾ{CrnN}\R~oOr5}iw7Zl) [)†aǒsO$o- KE.ݿX[Ec ڙ; 3!2m;nSNM/۵IXĿe&Kk37N1t秽:5E/K%AKq7/Ɣ>7Xt94=1-#D[> y9wwMLieezTzn'o8źWLӭ$],Fܣw.%U<-m-rPDW{IUV8 k*>% ,bJ]?=#Ũ]Eٽ$*kJ!((ͲX RN$cǥs#=MwҦAt>S0"jOVu:{;iA]h#8L ,2VθGc€ ( ( a{s%͌[·xTT嚺I{/ESbjVQ;WYoyOju[^9Py4eRjОv1 ( .My`|MQov@@04 o;HψJ# O٣Cuwq4Ygl9Fp@uXj>iex \)nq@>P:PoUý" S%m]8Q'yDl5n2V-ąIDn-< aD7Ĭ3)y$L/ tZe<?@G^xHgyIɸ|pC)r(WOKu 1ܤc%S$<B(}}QWW 0F4@y$2a@=NnpbQp籠_S¿ 4}s@ PcJn}9_2[x+SZYV7s۞As'4V״x:4Қv3sq@do"Ho)ÜϨ@?%kx"24 #98r(ʾVeiedm.z:>57DuGHP\o/9k<9 g?xoSNJCHU v=8e֣ηw6с?#;do&PP@纗m* JHE}Rr29QG|=_(V_: KN\I \#_fq5լӳ]Sj gXjef=6o$`К#Gm{|0nEW_ (8x? ^xoڌB963n#>ب]_#v<*7pYcVJ^;v`z+nG1u[hwP/\y;ް|^1R(oNc旞_a@P@Eyps1d⢥ENod]89EuggӧOG7ͥW?(fk޾fi/w_Ct}NY..lP ; ( ( ( ( ( ( ( ( ( ( ( (<*ZY뚖k3˧ih`d?L%d_s*q+z?Tt^ v 6[0\BJ\ZGo ꮼ }$_^N-Yij|w oC8}HoO*ZG~.߇_"PԾɨ֟bCڻ#gw/uOFHy_EԿL ( (^"أ?P7H\p}Z3%Uo\٠ kwoدWɅ&SEq#jyaGMv^_魵 (< f'r95x2056B{:ѹumw:|[CG1$:y\>.8E?u_")TU f%u_Mt{mCO_$1L;1&` nP@C\]$ր=-?)Ҥ@ߴwۿG@*xGo|%?BLEˈ O\nSoc_aM~P p@}_!ȓGipP +Oɶm+9'B4WiJiU`6dFd tJӞ\Z8UUXQ{YͤO.Em$I8E%9㎹9x馯6#>\FO@GAw^Dc^܃qӂNKS^<=L6p&/mh/.?qzG.ZEu M.&eH?N|,` qTtPlm<5Ei-<6l v0qO;[蘨?hzW/iQED+?$7zU,I˴l={@Xig?gMXxNn#Oin Pf}CM68^Ҿ/]f/m5ux.`@9rhm/]=uަ JTim}>j:X5WNA5m B8& q4]N"MF1-(C)[iNھcmem`Vڟ, Az9 1jI+og?]M~)&M[Kh^㉢ⷝ~pKp'P6B*褪6e讵ʬ{Dԣ;EO5dWg D{}90^\Ш%Z(tNN;]_:۹YږOĩA/Oߤ6~lfIq׿^_HmUWvMt}kOl-IbWh` tte)SD@u@5ˎvOK#0jvplHǘ:$`dap^2p'8_]oﮋsuBkm޽Z+v{4[ÝK1x}7Oi6rS{!Buɫ!kZ nG8i|Pp~\])𦗺ᆵH]F2*(_MkeYW]Kj-+ |UizUژn|8^ 0 9=*)ź$V[jJ#o'~v)|/Ҡ5Ԥ.lfmwPQ!Cp$qOeQ)B}km){9Uw_]4Kv7~OM[RfUQj];uWŚρnM[ÒWjQ[f !@p>F ;z?uB.˻{_g?iSJ[-:& |#jz4l4IYL,ˁ1SVu$i߻nU5QoZvZ?Zzύ Z{i$mƋn$tr#͐KF *.E-;}7u2xѓ%vZ}~J}ISEu\a&A沬߱vVqvo[F"Nڦ['mVYO״=ž-okz͒M06R,p@aI #iSŪ6rivh-6ߒu0r9ޭ~={V;h p7#nǔF9u 0*u^toMmx>=VZ]ƭwƚMغwCPdBG''N\[+fi=鱥h\ +]_{<ȡ=IEŴ̩J*I}Ia@u@5ˎvOK-Fc,R7sֻ^)SwvD~8u&ӫ'c62 M]A!Oڜ*$N9j^Ѻ߯spqϵ9[V6V?6<:9b{rJq[˕?y%kWwu%I"տZ~ecu_Dx[/b'#ܑ 7a8*N<ӦW߮UK5vTz? k>.uJ~"B8/6I`p[V"zw宲)Mly.,i߈K%ZYW@R0vZ٥ҵntٜ'{VJǨi]kJmu?.<6v<4H;A#ΤUW]nO^=ھ:9UJ+-]Zq׼@# jO~E}X ?#(,p;eMQ㤜/K4wV~/ވ5j"u Q}7RԵH-gArd `Ntʚ%(uOk}Jn4'my_&Q kVW2ߛs4]r?o9)r__^maܞG]6f'&m9''vB6FGֹ!0嫊oUy%ꟿZte˦Z޷R5:4(M Np>u=kzʟëJo54W|:??jD]_JE}?­%D6;`FY|ڵHQQE KH=XvYsM^8sw0bH]}(uj&2O$N>%{Fw/@H/>0~xF |jpj&~P^9"o|E4/yW~˜o: ( ( ( ( ( ( ( ( ($Q[ym/ˇң>&H>I #:q\ bUI^3:tw7~+Ӻ;*GN=<s?k`O/>^1_=Ƕmk{8pWo<:<[zq9mP@o!*1r哓N׷CY]1Oȿ;+ĒZxjqq_*P39A9ө:ri+Dr5{u%E>ds[w,T79zTqѨv_ ^iVQVoj5}'mKUe3|6x1֧8J o]y|jO?<(OH/l|Vko_8lk3+imcY H2Hxuur(dr~n Q?'|NӮ,- fkm(Tn,~\؜P{$izksZ aMg#~_u55 KՐHf 'YjGM[ RX$ғĸ- +&FM{WND0Xl?Ƨw]Xa\.ȁF{rElZRZ.wM=I$y8ۜ:O_ @YVde`pr hZ%~o09#\Dѱ_*!dc@@P_%$.}c^K2Om_arH<:TB 0gB.is6[xNöPeqˆgG 33qZR?v~>{9uf/ i,[[Y<[)ۡ(89}5Ce/uūlFfFKkۍOYS7zњf n6I<AQ){+NgtIQTݭ>OuT5W|Ww5s\j[Яh.piQT?'׹StVӳ^kc_'dD: ȩ=w[OJtIZ AJ;wmT\n_o_2z`吼,:%d!I `qN $m}}>Q7%{׿޴HHHP*nNrcC (+6VsX"h{Yզӕ7V˧7Njkts^o<k[ԚN#F|JGa{c֫u&[5ӡ(qp;>wWŸY:ڞjK^ 뜵.T[zuomvq_sM[Nς3+m.#RR=w_RM֨֎onU;?t[Km a50ːm0<~ڽZ5oC7N>٭½Wկ-uo|. $gI9*+u{k)7VowB>Ƨ˦EZ7F R,cTyITuի??bb([E4|; \׷WN$< .5N^VK{<ݫ|Oŝ IA@]m!`Fѱ^H8=t%%ўeo_M==U)tP0 tBh3|Ҳj:ok 5? A6Mr[:Fu9riTnsSnu__v) h֫]~fwzUS@vxghogމ( ov|gvOCMM^ڼω/IH4@iS0OABN/%~LजvOt~^M}[^,}bY@iαc[.@sqXTVuߞ_Sh?K_xև5nō7 /kc`̐2N@M+'I|ޯeSJeuwe{w{njI;\Niv28j"aȶ}ȶ.o6V`]|6ZP0^I{o{oq[Y0#x>(A'Ǖzy95~i]>\w,|1usx\ u[<0r#ONZsZUIA@P . ga< MLEN'HF 蕑S4;jX*}5M^}I{ہ,H1V߿myy~?DCWz9'~^K5{Mc:B޿wk_`sMDb^^NNOi+noi*Uѯl[q= ~Q}sIoy$I[ǖ1[FMڳ-i^C$.*8vR  ::.F4=[%_9x?MK~i9\]@{cڮsҶij(%(tzmЋJkYj\:֩wZ=ߝ:B$y)(8lMaԍMv;#_QtinO{w{H+i9UM_)t~oGmL \Jx-"Y fvF{-}=5UrNoXXHHP*'w1Q[!ԆP@H9,W4NP=Uiʛ٫}ӛ55w9i^ $o3l2}q8Ƕ8jRj=,gJ*\wNOW S:ڦj ^#}3+8J2}ZN7mDLI%5B:_nRsj){zk><Ζe00 bm:`r]co?r\̟< `մF}FĚ"r 21SJ 4i'}:U;[K}= )'ڤh; L6a I=sVOhkEbTRS?]]@e,LW-ےvun+5M*jDoNmf޾}Խ|54-/k_R Ape'*ʳ+y=~3:qP׿ky+&Gý?]ՆhF"IGpA81u%?wk q'ݿ ?Zhziڳ;Lɸ n'9;(Em ]}K/)7guf=-Qw˛X]  g?1J>_jI⛃Xn{@ЛTkI's^k p:v_mjs+ ( ( ( ( ( ( ( ( ( ( ( ( m ö.;˪ ČV  00;{5GQ_vüYZAo;i0H#g J{ůX5[ft}6n0)6AL}iGݨ-kVa%i5_V0j5ꅽM*K "#Daxb=\ݞ]z}?ፔn 6-: d(Cdx$9'5u=ߕ+%K-Rm#Z]io-G]Ou1vRUpssEoBN}/"xjK4mS$WDjX+7お7*oGf'_RiF[Tޟ^ڮ4~M&]gPGbkXi+ݿ6걒>[%ݏcB (7MhږyenX,u ^c'TӨY-mTR~cԑӊNJ}&UaWUrςtۏA7ik uH'n:7V5zŧƚ9S[IIWTM!Mr{adL:XG])^' ^xsŷs`77ap8u麥p4Zb9LK(#:hV%/*RwŬp^XCIkya68@BRmkFL>15;+ؤ،ZkHyʦ#(yrtr֥F,<\gmIC1'9ֲӌrrɽB*/vrUIo  (^Y"(ĜS)(<9#A¨wlr _1y[H9m ( ?oP%&okIHM (omm&;iJ9?U_K"U_K"U_K":m#JѬ#l#E\ ( (tGt}_@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@_ [E{)Ȏe;1W^ ,5NuR7sC4 )nOq_gCNy3+qP@P@Y2IJjSY"r=cioO3%Q{ONR#ի0 ( ( ?oP%&okIHM ( ( ( (3.|?\I:|ڂ2l*1ǥi@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@WRӬKco[Cs Vtf4~nB P?k҆u_cEZE_SWV۸1y)c(v_žj?"Ge{y)c(v_žj?"Ge{y)c(v_žj?"Ge{y)c(v_žj?"Ge{ykMǣJ?Ry!_hXFlwO¸krӱ\P@P@5 < JA=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz]'IǨ>A=/>ϯOKtz/_N~ץd?ʀul5d?ՔzGY]20ʰ9z@C\]$ր={,)Ӥ@C{u 7/ހ2 Roh+n;:=On tP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Es0?kfX^DCTpFH:ȊU#ր ( A47IGGzX?/S{4P@C_nm]?" Q@4OY,].QԦYۦ$ jmkM>ע]0w}FA#稠 xfȸmVKH@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@@cҺGjKq :`(f ( A47IGGzXS{H }g^帎!74@}eRk[_:Tb1YEas4%O=_\ZwaU ݜ~44P/^TXDnb`Ϝm3fsNqT;sǟ᾿ske[O^/kNnMN#:>-up9"HV ZǙIJ;-F= g{^&BiYaRH]ダsܮ[~\ۿCHnKIm.#dSa #|`nN:o⼬ I8K+~wCzEgm0)`9%VEظʖ'.Kg馯&NKK]]6Uo;FitܽH n),1G$dTGk ~'z-aNmGEEm=؎[RAhAne'.XEkۻ__-ӷ_ʻ>Fkdkt- ]v:NxQgVQ_+ r/[:~K7cFm:9cb@emz;?}mI>Ou]K/̱ C/,B($V/~E$vI]_֦\!moAGaPOߞB "'n=3Q|'mmDK_}ُk0z?.Yݵ/4*.{Q(TloiRRvKH^fͷ5 }JLV z]]`R@8A37qk{~~涗+gVP_Tmv{~}}i ; ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (<+hh%WkR "h.ekO+l Mc-F5Z>] y/Uю5=;܉*ߟEh|!x|,B^F*:[Pi/} '8M] ~_#7g-IYf&N$P8 85ri-ej5(FW]k2bIox]SD[>%²ʄ RiSI7oTbNIix)K/Ro%smዧE^!s3;t*RѷelcoEZ[wS&oMe6rOˎrn.HQYa}RU\ۯ74{v~Kl^xW}7žmat]M&R n; \u-ݯ=7йr_['uXmo\F9b9 ֳwMUbΡrv3%M㲆 g(&qi:n /r  [4PD'1-f<@P@5 < Jv0W&omgun  Vu8!Kpd0g4iVwK}|St ?j:VݮZC+i$').Wf׶x8>uuۿoB-GD:w/uu׮m-Ss\\ƥXՓ6Ae/оfGK1?]kö%拪OF--I# ʙsZT.hy'ӧ(Fw~۾mnSiƍ"\I7#%A9=4Sownk].Dw]eZ{ග|I0-I1.ðBW=3=ii(L~\`}kKiwד )\NG sRdM)W]GkQ[i6o"ӭu=[JLMbaSW8}!$uMhz[9ߚnx~DZ^-E-o$d*s :PaJO}r4שT۶?B[}6Rִ,|E$v+qq6qzB$mI\|Ia$uMii3յ4]<)i=u)2i {W=tEoĹt_1t:ipofD|W+ϵuu[{HHæ>S_Hz7$UiW@lRf/bڃ>6iי%v]iu4ku,ܼQʹy7(xʝOi]~JZiz}m}w{XԖ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (|Qws|k֟E}^p$308F\_VUeNIIng+&([Ϳd>;nn3SV.TodsY6yx3PԾ B+["i3|6k8Ш҂OZój.ԓ]ܽo~.&" W3]jֲ@|/6t9^շk3kD~ַt_ ;eo$VAGZ宛B dպOohbdiSK}ƘO%ۇ1bo6J_si<Ⱦ!N׆nGMdUbU`A gX΢ki_Ȉ):4 l⟪wV?is/KqF2zWR{vMo翢6KhI]ke{7}2ཱུ; m㉚A0s$-صo;mM6>)kZ^}`S61ٔt͇4ӚKs(5,}m;쭇uYGm gO<3I"0$( `S#JWwѮfJqtX>î4C6 0q$#qךѽmaV-N43]6Sm,h &:dY#V!?H#O(b ( A47IGGz焘7tV BG(z.-ZPN=jIw*zҵ+iHePr$zaciZm9r@X( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (}e%;(.ǀw$@+I[m>ӐU Ѡ .My`|MQov@/EE?zb??ث1 ( 9,.49 ylr zd  ZpL$$Oz ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( jSn7?#ݰ==>/d|ڡAR P@P?q&<0>&(7]kxERJ.+.I2 ( uoa | @#_?:8=e=O\? .Y}S?rG義K9@#_T/P?is(z{4=e=O\? .Y}S?rG義K9@#_T/P?is(z{4=e=O\? .Y}S?rG義K9@#_T/P?is(z{4=e=O\? .Y}S?rG義K9@#_T/P?is(z{4=e=O\? .Y}S?rG義K9@#_T/P?is(z{4=e=O\? .Y}S?rG義K9@#_T/P?is(z{4=e=O\? .Y}S?rG義K9@#_T/P?is(z{4=e=O\? .Y}S?rG義K9@#_T/P?is(z{4=e=O\? .Y}S?rG義K9@#_T/P?is(z{4=e=O\? .Y}S?rG義K9@#_T/P?is(z{4=e=O\? .Y}S?rG義K9@#_T/P?is(z{4=e=O\? .Y}S?rG義K9@#_T/P?is(z{4=e=O\? .Y}S?rG義K9@#_T/P?is(z{4=e=O\? .Y}S?rG義K9@#_T/P?is(z{4=e=O\? .Y}S?rG義K9@#_T/P?is(z{4=e=O\? .Y}S?rG義K9@#_T/P?is(z{4=e=O\? .Y}S?rG義K9@#_T/P?is(z{4=e=O\? .Y}S?rG義K9@#_T/P?is(z{4=e=O\? .Y}S?rG義K9@#_T/P?is(z{4=e=O\? .Y}S?rG義K9@#_T/P?is(z{4=e=O\? .Y}S?rG義K9@#_T/P?is(z{4=e=O\? .Y}S?rG義K9@#_T/P?is(z{4=e=O\? .Y}S?rG義K9@#_T/P?is(z{4=e=O\? .Y}S?rG義K9@#_T/P?is(z{4=e=O\? .Y}S?rG義K9@#_T/P?is(z{4=e=O\? .Y}S?rG義K9@#_T/PJ/&_{4g"4,Yo(O@P@5 < JdhP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@5 < J&(7[š)^q^khkP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@F ( ( ( ( ( ( ( ( ( ( ( ( ( ( pZ}P sAw7h(o۷Zn ϖeM&ѵL ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( @P@P@P@P@P@P@P@P@P@P@P@P@P@P?-> ( A47IGG{]ҿ/PP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@h ( ( ( ( ( ( ( ( ( ( ( ( ( @P?q&<0>&(7`_z Ѡ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (Qxh[8 diӳ5NVN{k{mm*șFTܔӺ] P@ུ[b$"F@`9е\k@vbA}wmai%6 8DAIRm-Ɠ{#+e!U4ӳ%4dHbyfu4Rp¦RQMdId2 hm&{yT4rATNؚ̔€ (+-34bpOrz 7j=^NOe%% y .z@8B6Ѥ(o.me+{ht')6I#u5xYeYNA)+#k({T<,Ȋz@4Gލ'h ( (n`hKI,PKqĨHe# M4M5t-!\ 0FI*I')6M"=:SK6LA"6pyU4䦞ŚC ( ( (o\ud2\2; T٠z6P@T( ?oP%&o~=F3B*EFM.rrj€ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (T##uaUKyisT] VM~U}zǍ/ xoBдHn$r:'/kMj_;/ucOM&j[Z[K Hmtw&Ic'^:iuyW=A o* L㧾+ i~]M{+$?]-$ӄۉH }S{Nv9^{[ݯRKT/dx65{K>[+_;-ݭ;v V%[Z3~uoU!4 xml8ٗrqǰe4Z4[Ok2EP;HK(p7y[J'+)I{'Q9^zfMUPOWߖ_4ƞ E?ЦYtԼ%vBuq+v5#-ZO^sQ3qoƧgqڟq>b7 $Vt4:h7ԺKGޛww~ T!S4t_LRYB N qz]M7 . boS ʹ.n!| 0{>oEOݤvknP?clyq]vsQGo6*yeekaMBH&1I{@UL *W %IwGժJ-k)IWҾu\iEċ'K/ߜtZF)SoWf_#tncV>2֋uKx#]n(ʷRsӊʜ[Oo+ܹǓ_7my.3.JE̺) o([Y~EU8n'[{?{x.F`n7y۵9}g?0ӓ~xKVVe tN 7/D0SrxW:xIW֮`2~аF1v` OiZj+ewݑ:~ʄ޻/T4|%j:[^omJdq,2E;'d_/1ݩr~G#B\_OK)a[&ަۃ1ǽg qWa{-55o|OqJojCipJ,\⭷*6OBRQ4=㉮5mSK.78.@鎘r*]_4#N46eo2O *~nYA~#oܷ/}K_֦ޯdC[oO\uaw!U;8$1D%RTEU]߯x[ŷq<6_hXe&8ޒ.2)z_oqMh}/?/t8u9,G71G$zwBKr/7{Zҵ++]g7Q,MS}-+v * O\-%$kSn<$^_4 JԾM8qYs¿C~OJg/?Xx}"_+T6o>\e~_:dR4ּѿɥ YT+|fKR׏5;=2R-oRht3QB.0rHPZ6+y]5)"Kom:7?C>cuۥX?0')))Y]zɓqq[zlS"j??J_?T@[R(k q@y@xݿzx/D kZV$Y5P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Q53/7Q퓷z}ȱ+O<\Go,"P6: SGLJےVu|;ߞ %ߊ3xJnPdE݂H#=8%rZI+>?ɣYTM~-]?S/Ds{I6Id~D/'$OJRR727~DFqZrJs:gt'DNQ-Yn_x'8"r:jz>רF>MTwWzޝOϤcMXaHmwyQ$$5Vw_塝(UowkepJ1kLdev+lެu^}2}q?7 ՠԼ1/E_juΔ1XOnۃy}X9sV/iI4֖2M4e1^NiCk% N$v{Kl8\`FI?A-KӲ]#4zY <5i]l1&y F;{WeIuI?_W9)u)4M9IcYP8IPFpyJTrD:بh/ן2KnN{(H+O1|J/X^X\E7WV3pTRx;IӦhiK[<4wRU)sU6cn_KOƛ]- nx~l;M-afKtغM?wmx Pu[K|K 4i_B#kZn¶Yۛ_%UhbR_n􊷮Y]m:˦$sG`͐#=*hi JԤHKJ:.6۴`l|8?e^2p|WQ{uz? _| 뺞y{VHHTWɌuo9Vs5|sS5TnڔNa/M]^[忙PSAak=lo.˶I SF]Umpբpvѝ.ZzP Nx pV挗˥Jj5Uդ}kk-?k7-4mEgnoWjp8Z՛.xhӿ3MQ\.{}ie6?xxOFfPw #L$g sYTKI=Rtލ7uyvmYu-1yQyu<;cFIǽi J{Yyy"vrKm[w5~2"Dխdd2T?,@;?4%TF]]pբpv/Qym+}Ig2%e3MU1*OnI)XUô Z/m;YŦ\Dbˀ['(J)[r Եoid{ kx]!2󞟥b+_?Թ8%e+O_д-P|?kksޭŮ\)Q%Rkʿ ΕTuͯ߁|T[C$Zܞfj#D\0\%y+?|[O[f-{n=9 [ō3V׉t˫-֢M!}M%h9x|׻ޝ̫mki;ն ]i X/-F8=泥{h+>nr; (ꖀ@C\]$ր=c'h?Zҷ%>٬ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (P@P@P@P@P@P@P@P@P@P@P@P@P@P@T( ?oP%&o ;A?Z֕/VgGqFfhP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@h2h}KKςMGT]xyi`Je q]2EMNNnpr~ݷlkxu/4a3+ J <R]jg(NN607}j \B(-#^4/~O?^viPyGtMj X%ߧ:!{ w N=y={G~As]ҡC#DKS^OPzԓNꮼVz;?&Iu=M` QKtШ''>I7.U-gsQ-ZR_,}I⥴)&"u}7Xu ;TgdP} Rji\v zZi:j_[fA ?w9Rii>X4j8gk/VPhV٦b T22Bp  i;}}m'_ѵ$Iմ#uIJB;_IZkbx3DH +4mq+ߞ#CIJi֯?5 b2Xȁވ{)v4U t6"g45 p֫rPGQ9)zhnżo>4ٴn̂@3*i>iObʹ"{Ynj^g2Y$-{ |ҧZI/۷cJ$ZNI˥HWUY m'gHf}&%thr 3ұ&pҊ ٵF^GKndlktB$+/#)T_kN$:>c~#%N+;;\!6f=淥as-jAP#Ԧԫ5w/ѮmWM<}XR[)b+X5^]#RgYBr4[̔fsQ@ӎK Vk Qߩ$r N@髕Vrukܽ>s-is$V)#'8HJl7{"Cw=@?EIEPV-ƾ<:֛V?alRi.pvΞQI_=e&NmF煵~Ve Ȗ hซd̪ERF]5 {XZ-=ok?.kCi>ѥcV.f0qB po׳Rsz{v2^2PZ'k#[A&MrVzi-Zݣ Y9,Tʥn?2NNiu.spH8ob F 2y=x̗?oX67^[oto;A2\Ep2I`p0)Wbc0|3ŗ:Iqiw,Ąb`ӟqN1ngk娥%z[l44_YWPݷٜ{r~- j(-hP@5 < J@C"%"LQo1Kw'k&_Vk/u4#ڶyǕ֕U_'ڛNym>|V Kw! <  ʊ^ʇ6άɶj[O~!o? nl,-a{*H9%;WQ8%5kznֿeQ;KTMoE>K*xV[Ei`Fr黏kfX*Fr 3 |5iz4k<:ݵL^tkH0Iac-rK^~((53=3~j-QKŎЈv & (G\QtߵwKu.Ԍ]/{dֽn缶>>\^c+BSpGsWчI_ֽ?|3> u-sl_0K,g]:{VيSc7io~}OG |"urf3!r̠y]JXwTsn8F֗u;4 Ö:H#J3rPW? ,=~6捪zi{?̰s*`l9xX~eVo/Qš ul睾iqD_GӬ&k fcS Όyz:rK~p[w~,TaoXcy-N%>#>Zi2o\Հn:*uz&m]6;h M8uz-t"Z_PߙEM+15\њ_miomeN72w?~ZKcÖYV2F?ZQ/X{m^hz/ZMW1. xvϽaKIO_7)'.)-|D|>fb(nJ’+oZ)}lkle:JQ^Wz{ٽ<@l,^NxWN`?/kw%$]Ov;8.~h8JֶWq)iև=6]Y?˭+;MҾ5֚ aqiFqČ0 ;v:1*R_;_+?^Fw-Ο-QjvE( ); ƫkM2J#o^Uoto &Pg=w=*Dru#=\j^K|6-맩^GSV߽ou_ sɵ{5iHSRWikye_0ѿ߁@P@T( ?oP%&ouš+V- 6r)jP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@hl{fW>xSKx໲,̒RwTd[g(+>45ib\9'#9=lT8{EY~eN5U7kIH0i2G-A9[5u=ڳw3P~ OJ ZM߯m5xa=17U?y߳wv_R nOԴŕ4ڲ(:lp:'uqA(STb;{/M*R`Ϗ|zO)Jj2ݫyyiCQkd~x'RΫKYpZ,ǜHP6=yu5nok|sj|kgZ7K-lmՕqwSאr3[Wq7+uƂ(Zzē &mMKyP3HWsq83ʯq ~:ƑFڍݘfeL:$=,@ {OWmk격myψZGcӭ]RBDf6^Cy#E{u)m%v7\c<_=j?ot ey^VAjM&Q8}3=D_ZMx2F]}c 뚈EI|ѵ &=*8V[xuWeی`^]Ѷ_ĥfqwܫkֺwp,s7~E83F]Yx3C[ۈ:(V-W9{'zbtH4 E}*fvRdV,ۉ=N}TG0ebu(xw;-WjY%Vz)v;zM.n)C([o}2F$qo_,6*)GmmSr{[1aFv^IbKgsUS9t"if_ ׁ|7ᛷѴay\/g$*M.4M?H]:ɒ=[qӠJz˝dim&71KNy8ʒ|j:n3/S5=3MҖK}9ZbiQ8`w;E(Ǒm{ؚO iEmyhK <[&k՟{3@LҴ1g H?u($Xr9oihu{=kfrv|{5{^yO4(Ï xm. ?nsR97hzgl`S.2}IO洔3Tv0E^"k[EK#Fj)lh恡ENvD'>Rr1Qᗃ[QBke.S?YOɥUO_Jc͇]g~,.X5X|[_k#^p;gޕ8J~i}èۜm%wo:#:\fʲΊͺPsg9Q{HKaCܟ&(7Zz𖈙FoM.ר(( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ((@]ǴQW~5rzܚw䃓'ûy~Ңz1|m_ݣ>m Ilmӭ6eH y$2zwhO1vԹ6{.!-Ar=)/zޭ}m{Oɵ{-pV2@+qh_c~aM0F{mYؔ>€ ( ( ( ( ( ( ( ( ( ( ( (ꖀ@C\]$ր=w€pY oq'tjRP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Q" 0qJK48V3EW2]䏘csUy˹6y|)fQ3Lli-K i%+t85]i1O, ##l$qTmw{/"©RIY0 ( ( ( ( ( ( ( ( ( ( ( @P?q&<0>&(7XZ4~Бس-9$kKD6wf ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 4P@P@P@P@P@P@P@P@P@P@P@P@P@P@[R(k q@y@xݿzx.T 1hV+Apq)4( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ((@U/t ׳$Q'[U Q曲9&(7['mB >{ opF ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 4Pdu7A$ J{UW$4W|f+,EG7-xrYmӭyڮTwkdJJ2I̡i]ᶺ )a؊T} yП,_A4>]N-mGaW9&Er(uƔwoW&xB;qJ1rKWv/_XMsk[|͐9QG5m}ߡ[ *NJRW~m3t{HdBbZra刟$w-^xzKnl!ayAx8gdmo3 ( 7VgO> |ݶ7'Ƈk:|Vv&ąg`/a~9rRU.sӉU>mWGA˙l]|YcB9ga$7EQw8%'̡vE*RvKvsZo]J sLcK]Ki;#a99ъ;_-n0U-^jsQӼK.;˃vѬ`w=5diow[_YEFjm۵ْYv:]귷`Jf.F';@i%4d[ehU=].ķZSh֘VrJ%6JqIJm|V_lm^[[kDL'T ҡ4o?]rѥ/!1xF6GmV9 cOUz˷a}XX͏*kHr1Dry^:dIخ@"BA8>q׎KiKK}cXzUv70DuEA}|Z%IM?FGv _k1tgKb]R6k:ӳu{u15M弚|*0DT ;$)ېTI.+kuw'w4i5cǫiA[3Oɜq/wIhHƙ%&f׌΋LnsϦhսt|yC&-7ڔr;cןZoOK^FUU)fܿf[cuO'~B3ߗ?cOClG6XbymFݛy+Jܯͧ~~^W'\^mmoۧcxMRe\Tݯ8r,zmLJuaRhR2F>D2ݽ>]K 9V+Gv_mƛ_$ycϻ~$<κluB:`R 2灟lV4ӧ~IgJ5'eZj.w-5_m a z5Rw{M/EoȺnz?eA[_SfO%"H 2885шǭKvхA|6nW~or"S#U,R?? P\/g<#, xQ_`.㊺݃."x+MK/%{ݴO5QG®=IIEugqG2.$V2ucb`4/ Zg7YuF/nt_ڽJ@15_muњF_2T~uu]ixV3>gv%( ۡ8F*6< tFj7w{[~ՙе?e+r;-Rn&y&7:TCoogJ&K<[)V}7Z+iJމ(rߙmwW{nٻڦhڎޭmzA=~+IӭIGCJTonn[t:gxKS-wԮuFcs@8H1NMo+)5 %?wu:4 ZƝ}}%ov2H8sXғT#Iz*MzV dkmv>6sz3JO&&RNw0< :){ڿw뢺/W6~b~iW^=qGn|h|n'ȩZԥG{i]_o;2j'7;ky]m״R Bmrǒhuޝs$\"|Dr  d+86*i{z%ZOMmx^w[n9n襮KiowSxmYf,~zZn%#f xN4_;__+^șiC+O;[[,\Cn3;HJz85,k(7M6ߥcq/t h!h(eI=ϞF 1cEoU8+F6k$nﶦ 5vO=mk[{4e{⫙l y_xʙc H'vY҄c'_ZӗWF?g#C7!-, ڎY$~=9Tcڍ{кR:cxjRԵ@F/vNъKRI^nn]NM|o j^kk۲i M}T˶H⪲Tn^3*?ǣ}-+7l hG.fE}!b tbnqZZU)N-_)8M%}>_/'ekqdmw}æ]S~t*́+Yݶ[=m9F5[r];Y_?KxH;ˋQnPe&mJH8n>TcE5$䞺-M$ڥo7ڶy2nیE/wֿMῑ+N#Tޞߏ^ax/&{#KmF-@#>c2HN)^2IY]Tܵ'ftѵ[|*O]v~gٯmGُ."C(c`j߮-3Wvvw;iQ^iS5Rv9֮trӚwz5:nQךP~Oϣz^+ou?=ͫiq*.xs8+:OҖʫ'>TNnQKךm:k4=FGԣO{ m$Xxx1xdmg{N~oIHM ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 4P@u Η2^iqax|{wRJN%tlnVDda0O١P@P@P@AH"yTRON.0w 𴶓e_Qw_s:v՞]J]#l( ( ( ִ[f8V) @"l`t! pyaGh$ŧBHdI%yd3,ǠW..g.4i ( ( ( ( ( (ꖀ@ RB[y6nBHHtoIHM ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 4P@P@P@P@P@xu-kP| /JX.Ly|SwL3YƧVZ)%4?}*QէzU:^t'}V:EY\sǨtT,VI~sө6_4^mwIXemRGbn&-ϣ˙r_Kf|ܽms#Zt3X[VU*QGa$6yM8v JN7\s Ե.dT2G5jc,2e& *Mny_K.LRԬӤ RIb`t'=/uZ2+@kaftͻ'_+whi#:#״{[OɚxnQ's4KW{}rh擭 NXj,yeIvgvӳu{u-bϋF?377mK[ۧ{}sWeg[OL>t( ^ +<֞c]撚@[T],/ y'}zӗҖ}ccOԭ#Ӯ;&@88aSiĚ{8N#eʊ9۹cB| gZxnx,d`Q 'h.Ul ( ( ( ( (ꖀ@ ]!@oIHCJ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 4P@P@P@P@P@|g:8|J$}GWᬮm&`>Nv~4Ir-TkR7ua|4#T⹊+8 u9MG64~Z9aV}-]#5=OTҼ]yxW_6:W-a`p5"Ҥ,嶶nn}v6jVڥwG#ÏAyc ,onXJU!FpzzMm^ERiWmm-]h~#zjKqh&ɴxR[Rљ6(! 1ۑY_8Nn{~ᮧRC^׺}^'? <}.lhmYp=5fIu[_M|5Eiiߵ՗g_WsxmV;[(4 3Uו p14hWtܪ۬R{kﶶ7Eux_ܶ&/vrY\(܁;Au%i߭]./^.Ւ~j~MfS_䝗$:ubl_p2[N?|[[=\]5OG{-ng~!ZwiikZIpRO5XX0gⱃ.6s_|K>Ƴ|]9[ *Ou:kO5ب{-Qhp"Kgk݂MJkhm9mu٫ib\-R}ƕzMj! ͼ7˸oZfVIj{y'k(Ioݣf^4X=kw<"ɨE$ S'r2v4ErQo}uMj[}k7r;)ǻ[[&5W)H:Skhuqo- +dbT}H i *9?M@P@P@P@P@P?-> ( C@(#ş/!@K]E}S{H ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (P@P@P@P@P@P@P@P@f-u<9VX@u p23@ XZ]w+]G[ۇ(S2'4@P@P@P@P@P@T(/?T ȿuЅ_F 2?d߻ZoqͪB ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 4P@P@P@P@P@P@P@P@P@P@P@P@P@P@[R T>R1]"B  60{kP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Q ( ( ( ( ( ( ( ( ( ( ( ( ( (ꖀ@  x}I>kM ڤ@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@F (Y-JYK=(騆{fg2s€Y3>k-*TH֮jd2*2 b:uT-Ӯ5cy LN;)lvRN'ѿ`iI}%b?xD'w[6"nl"0aphӊk.-?EU[ޫ-R.;wQ/ۜyѺl2 QCM;1Ha@P@P@P@P@P@P@P@P@P@P@P@T(/?T _*}h{oxv H2Eۣ"57h ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( @Eu ,Pqdj *[.j?7L4e{!|`jWI'Һ/{#9k=u_z4݆}gQմ/!KՊen@=r(VyY%奚׽F/oGvߞv5鷚O--o6ذ&6vd#Hhݨv&6rK罺^QRXP@P@P@P@P@P@P@P@P@P@P@P?-> ( C@(/]?!@xoI~A#iR ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( @^#ً>[K,?ItJs-Jr}^ ( ( ( ( ( ( ( ( ( ( ( ( @Ay}hcE(Gi;BM.F~x#֛wwfP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P( ( ( ( ( ( ( ( ( ( ( ( ( (-hP@^Z@.z -"ղS{H ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (P@P@P@P@P@P@P@P@P@P@P@P@P@P@T(/?T x~ ZOzE opF ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 4PnKشk4%8 pOk:pWƔMFNɜߌ%u(^[aIoB@ ߨ,BZu+ќ%%kzZ|[j%֩sO4q&m4g8feJUOl;n* e"jQu&yYgkX᩹F4JIZiNKh~6u98pOcXa*9_g+כJS[~ijOggy1^Xr## yMTp%d[gZv:}b YX2WaBqxoTҷiͪJ׵~*҄vY}$+z: N0ͱ1s(v5sy؛x˨XKWR~?] SRsO}UΥ9AE.́mu H(Ie1aϘUsӟ$ܭʭnv鯘4~oUk?/N[M..E_:B!8`U@=xzqkJM蒿ʕ)rV_vzXqsfqy$l5PI)[5ɥU>f{4ڧ-ԉ;Iq-8\Cq܁ z,L}+-t;?̚sVo-{X+; ( ( ( ( ( ( ( ( (-hP@^Z@.zZOzE op4P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Q ( ( ( ( ( ( ( ( ( ( ( ( ( (ꖀ@   ȵפ_NP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P( ( ( ( ( ( ( ( ( ( ( ( ( (-hP@^Z@.zZGy opF ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 4P@P@P@P@P@P@P@P@P@P@P@P@P@P@[R T>R95X̅v|Gz:Gy oq-:C ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 4P@_߈).YfȶIJ;N|oWƺYh8VgM `C/H[?~K$-~%n_e o7@ %+|F=3=9V}>d2{y9ƀ>ӯmu+/l'tE,m]OB X ( ( ( ( ( ( ( ( ( ( (ꖀ@ E;P1h{x?Bw9f|bP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P(;⶷y$1!wsT @<_wj6\d@>:Oz)~m}7}?|oݏqZT%UO߅ Z2+_CEy5xQTK!ai#w+jJ> Gm?koǩU"k_h5_[Y#ң+fLk;F|OW"<2R~qv3R:rmKSԬD ob> 1[EN4{+KCohY;^XxQ_kW-rlu R9'jF-n%h/n? i4( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ((@ uWFGPE~{g׀P!jzE݅ڂ{Y'MIۨSŹOOEMj ޽܆d#L:51m+_rO,4,HYKԓCmwxŚeVzo5;H#P4A6S{)j^"MFPJM$x9XF#-IGعyoo-牵ˉ-ش/-b$%In ;RFOu{yzG֟n4q4R_GX+ F b(*( ( ( ( ( ( ( ( ( ( (-hP@^Z@_g6|/;$`}:ݔƸvP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P( xKEgl؝Ovea?@7W[o H cQz@w}v`.x˞5?"o5@2)P _ xs&TfXo|:OKy5hzW):`e? 4廓*"EUJuP@P@P@P@P@P@P@P@P@P@P@T(/?To/ڇы@-!qX3 P@4f 3@h4f 3@h4f 3@h4f 3@h4f 3@h4f 3@h4f 3@h4f 3@h4f 3@h4f 3@h4f 3@h4f 3@h4f 3@h4f 3@h4f 3@h4f 3@h4f 3@h4f 3@h4f 3@P@F ( ( ( ( ( ( ( ( ( ( ( ( ( ( pZ}Pր*P7DCŠ 'J1=Q{6kP PFJO64zZ<@=hGhyր4zZ<@=hGhyր4zZ<@=hGhyր4zZ<@=hGhyր4zZ<@=hGhyր4zZ<@=hGhyր4zZ<@=hGhyր4zZ<@=hGhyր4zZ<@=hGhyր4zZ<@=hGhyր4zZ<@=hGhyր4zZ<@=hGhyր4zZ<@=hGhyր4zZ<@=hGhyր4zZ<@=hGhyր4zZ<@=hGhyր4zZ<@=hGhyր4zZ<@=hGhyր4zZ<Q%Hx4P@F ( ( ( ( ( ( ( ( ( ( ( ( ( ( pZ}Pր*P7DCŠ  q< (<_sJ,Ks46!`Қg22Cf5M-?Ğ;T|O$LQ}UF)=Mef;k ?t' lgØ;6_?.d|`?̀95ld\]>^?dK=լO{1Ǟ*?Ck֫= bdQH=ܟG,;ZZT̚??:4rñ__{2>.4hƏs3y7~KYO7:ǭܿEk ƿy/iI4a\9I.5وmbouطˉWW.2rRy-5IDZrӚ_{0QR8U.K?0R{bǙWZBz|òA4Gm9YՏyt;`gh,yۜT%U}TfY>ͭ<|[.qA<=%*7K ?]Ȥ7! !(iw%Yg+4y9 vOH|(l4.iw O"yG=gRIeY(y7L[DZƥe{}B1-Ry˷?>H1񿽕u.#=q cX;)SmM ?tYMSc)b1Ga.Z?1oHγt;V"-~ZF^2+`Z{%cOd)/3 [upROӭ5Iv8r%dޤй?tF1~v!k1d;>;zQd-[xbU}tNu TTEox' ]+KQʄ)׿B_*ؿxëx\Ƕ/Wʻأ^-^U]׋r?a/Kv ct>'֝]7|áYI+E}ዩ|7K4[#3XԚѧLg{cA"_?HV4SБ{F֝rSLBi+- dѦ k`M&=Y"N8[xVی׭+ fOGV=VCqs?ΓE u3f bzF=ʮLfCAxXt]0iMܼlFV+lc6<8xŤ3U ۱<8w>(׈./JI - &DNd J~xK:Φ~O4 |GjCO4^&}sSdɳ>'߬jɮkK[x".#M_XP1@X{LӘ4W^Q"ay'ӭK*.^۟T_I4SjY ( C@("vlbGt@4P@?xTZ$g`++j1لxe ^"kodk<,4{4Oҷ[(i>R]o!ݧJ'І^Zk ,$exS@.ݎ=?.DjWEcg $E8UQCNe6R'V>Fa}QK F+Ŋ4{ ]Mz^eb5+4dE~b&?|t\*!j2[t>үks~ 屎6>hl;ʝ:J- |\ (AdW4$kCHFRO@7LQroY ,^Qk9?Ƞ>+6b 4.r޻8$"ufdAn~fH .8if./ś.aG(I$bA񲷡WCS4tPҫ>'lXz}(>w<YmlV>KOD=DdVEf1}{VǝR6c+6ӴZXriT=k&k}Pe=&ԫֳp:H۷$h^eZ\w>9PγWВ?Bxrrdp}k7TՉ5S1RHZF-TV(Byrz'VC䁟zIKT"\*6' j^]9YX*TIhuFH)_/ $XPW`*Z;a5bA)RZ EZ 9QQ4~.u4.&2q䑁ץc͞+չegMkrnViX쥍L{X/r0qNjZ ^OJ9KUjpR]]"Lg"DW&$P s@5"GdKؑߠ NΪRǾFd-c*pUQrQ2[hGN)ڱ; ?^;SGCűCoo}:]/##sZJ}᙭iDUUZl2ctfz寒3xSxȱ nnFDx>ا aRN*|D2yOcPG-M|Am T6)(UZ0-{K(Z`d^zm#j V!]duT@KvVH9#uj=dG/$Ak ]] v()dM p@ZVҗ(sB`N\#n=Q`+Mm=gaewYʀ15xN'P[#v {#o#i_A3 ~Z\~f."mk`o'?ZTZ>-/<i1ĤCFEvK*ȑ*l>dk\8M'1N|SxY)<3-(/tJ"#U/qN NEI<E\8u+2E/ۣ">6p,W߫ko,P1?h3M':l1E"~ʽKoܾ͒JL .|Lm;Idz@ķ)FnYDҀ$Q3&khN?*țN ϝxf(~?^([_s{?չ v}̻g7ډh$_W=Oj, mE!,m ɼ? Su+m]c2[p#=2>֨[jKk+CT()M'ei1YΉ%{qނݶ~-qXE r'{tڭ}cmQuvIp*`?AkR9!WS[j/aR>\9QssΧ,Ri4˖BB?zM:TdO]+$* Nzpjٯֱ[.; =1Ys;o._j^}0Bs2}/--pp<9h`c|Ys[ P@sH꧋G_(tdjzӕ@;ș⫽> >0ptsL[aǯ;ZMɑSء4 -[s8/xj69MZs on9UwQ;H|>8H^]S5xwnIo-atSSmr]Fx";s}^D{؟v;`4`6XKD\>furtEoZXKя&ftsƟ;w亴U*YAGԿogks['0ےI\ ==پZ<;z2H 諧]VR\[vhb|2hoNV*{IZΥc+ˏ^ maQY,_8q85PRN)jiA/#p9>5|c&ͯVinu.1Z>;֯]V'#rs@)Ht~P9hoA:z>W4(]pwcKBng!G6lew8?Z˚gP;+xTKKh'F%Hɣ)Juuվou,'&S3ڧQҒL}ֲgw$PyT n #ok?S(˟Ee˩*(I\ӣ dɫ"G#qt^Zn@@N)yNKd\GmV=n[T`})'le@CO4RKe,|9{΢Nh ʖR|MyUg:iQze":֕aAuW^?Q(4~Rp +8-.j /L~Nd*ڒ6.`(Fu[iVVe+֩@攤kR;u..ag)7ToTA,Xf zuvQH"4 ,K}Kh>QxVhHΥsW@W!$ NJͭNuj= sb@G)Ъ=|%}2eYSB徝)4MIbi*MdžIk+%=XhzeWFdf Ӛ,e,E] YLi03BrOj2z6Fûmhr; 9j(]E]>Til;Z\Xh&2dFc9*^(moDN#|f258fo]_v1jariO9]-$2S3@83J7l}t:@1bȫbUD6F qwU1Xxɣc D瞵B#̌c{Ұ"V5"Q.zgڙ| cȻҤ]?"7>N.FWh Fa>ޥ46R5K* +8*ֺ^-УMs:c֓٫si˘ት((wrƤzK)E\ҴM^FV企iK>hl1FEaؔZD~3R h}RG,'X;ɅȑˁEYeK)wquvHxU-ػ&2 ,D}P6_B3Nb#X[*"(rtSNKWBf4XKcE-BD#UiS@E^ӷH9hl!Q,W(W=r(ڒ 93a8&Ѵ[Ĩi!-1BŖ Й3G^cCQ@ Z `.S]:t׋-$;߁=_R=TUterݳE*  3|7%ݫHmAr L =vZb3F  -?ְJ$*Yis]ب{"xt#9XPKY019⨗fr~3m`{h^ sQqJ@}%kTҙt4$ (󏎨gF%xY0$@ !dJ:svVv3#wZh:ܞ u]Jt3;l8HLViEVwk3/W^m5dߢ9hd [YJH]v"A=q\Ч8Mnk$S*r4{޻5xsG uhs҉#wc!.x-1{/{{cᇻޖz#Aӭ=o:]괺u[nJy)HOߌ'-_K_tսN{eOq۵M?Zw45%ӝsp$̥AP70OZ?h mm{8n\/c}U&nE~ rIDtLoD E1v?FNqSmӮnݝ캯?t <\M|]ce] t7z| =Ӎ]^tORQ]-490M^J/zYy!#kBG=z gM}~v:%f=:ME<]qNH7Z,(t?(&V__-:D״ ;dK+uyZ(t) 8~T%_uWU>?_öͽV\HrcgT`'8[_k_NͧO_3<5RtKR:@ piSk.:AKHm7\0vH=Ee[H9vFu]2-O -J H k;Ww_oI^o43᰸tSĐ}TX% 泇(t5mSX[^Q56=YirD`(|/,*8+x^XFBD>8umFj#td(9O\ ){ͧ__/u*R]WݪWmmi+xy;Yf"L$x* }*K~Z_ODij –\8̉`NNTq/}%IvQ5Po}MG_gjMB.W'X}3E%yUGhn?xDdDۑD~xUQn|]IOT+8 Q,ëӜjn;/㓳bSm5S,W$j*X TXcnHSrkNhҳ_ٕv_}ݞ & ٚ08U@ z{R$$&E6䔻zKͼ-` r< ziM6?͘^!M:Gq[aq%owo+#xœcw=EY7n?=5 QKTjߏWMT<% 2Xu*m؞;OV)ڭK$ [E iG6-C$ya|浒_XY}DEFM2]mgL.MY$uUgFN+k|dbo^R"T]K[ۛ)I(ѨcGn.IO#˯w%Ӣմ DKc, U(R;=ikq_70 ( ( ( h (ꖀ@ E;P1h?y op5)P@5DcاKqa|U9ZvkmY |ڢ!7\YIb9f8w"QXUfo,6i3 u25ݚ duT{W[X.1o6Tfޅ𭽾q, F[x|rz I*oÑfg yJ𰱔jO>LV~s[rᅦA&j T)Jm6g1;c}>c4r^`M6]$C'CYX̒ 0uk#iF2Qny5c /6q*iio(ZZ1'ᇭH'hlTV%̫uHѿZY57{)mnoO%;m4*`A#@sJ"ҁ '' RURD(\.&rHH#KĄR >l搉[P;pF:Rbq҄4{ P..+6u9ՙʬe# ⑜*iy A+Ǯ1E@hÄjbL HJ@&-E Ups;TҀӸ=@⋁GRR`9=q!E!= ((rM0iYC)= 0ӥ⋀r3@í!riē=Ř% OqRYiVe-";ӈKc㯉6՟9> r8s]ǩ&oFX2l4{-Ps͚Dю0G " @984 nņ4/ִ3񻹚yY ,ē+ܩ$ yYm.:jRY%P@h.z~i]Zpo&2:0#4Sij(ixz^Y] !f7PF@=*ju%;674 u =.KA\fGv[9^>Tq[2m~}ŭ?It v#XOsxNAUw}ߖ4PH`9'y }-k|Ww}m= Vn.'[X ictcԀ }i8mwu.xoCuҴm6g] kT O_Zoދ۰R[B Kh! x$qFUp6wbI-q2񮥷c#&q #AJ>[o{k{c=S3n'qQAǥ H_WԴ[-F\BHn$dez IY$tKdS[& !R;`iL;[sL^BsI+`38;N_Մՙq \A$3.R30je$*2qi:@Vki!Ukh02{֭~vVKܛNӬŭRvrsdnr/v O6v#nʶQZT6vqc:M2434J#S(v!Gq>ڧ,4 6.-e0һARH@q P i7p4;e=52$['jg(Z!]ܱiDq|n4nU?Jw MOVrZEoc $o{ϛ+/ rrwל=&; >/-%-nx$.,H@]q֝w&jP@P@P@P@T?(ꖀ@ E;P1h?y op5)P@ T}:ȇ7\~upSMOy/ H,Z]ՎiC37-gRchݥ84XaX*aJz7Xa*fj\Ҏ-.6J{XuO{ta+s߆}֢ ҄lE畷i.F''4\2X`q)\Ofj)jQls(7+H0FIAW_C>qTn[8 ve6&j'XcOJOS w)xN{8IO'qgoi'pXִX[B6684ε4'I&y2qqG+)2# RiQc?D[6? rjY?0gD28#eެEt={\8Sh3THzU+5Q"ޠd,7$] Yg 7ya<;sNk{$Pi<9җ)Ь#-4XS,E@!r8IN٧&X6@R:clf ,i'sʭ{mW4\jVXί1#t軦yNj,m%cs_Cp9j{q 1[9RVe=EI5i"02TIOGRA U?ӊ[3VEQrj0')$q-<&-o'oB@+}&E_!pk2&iXix翵sHcg=!AgXCSbtX+jn+f޴no4 _ 57 S0 !4XUr<gsρSBfQ2[JǗ?&vEݰ #Cg33FگHeܼ4M]I/P-[9S>*|_RӚr9 f0V*nX/ZV[3m. /sѴT+Yg5 DCJ\n'EG!ĩhpF[AheQǗ7ݡS Fn=(1bs/x?Dt, ( 4P@efF@޿_΀ ޿_΀ ޿_΀ ޿_΀ ޿_΀ ޿_΀ ޿_΀ ޿_΀ ޿_΀ ޿_΀ ޿_΀ ޿_΀ ޿_΀ ޿_΀ ޿_΀ ޿_΀ ޿_΀ ޿_΀ ޿_΀ ޿_΀ ޿_΀ ޿_΀ ޿_΀   n^C@nK@ PJ"ȝ?xWE}7(!k_ $K%vX0/mQ=&Oep~e18CBiDœp_D!Erd1g@$3L12)x.&'{xxtkEFd]Ǯ@5w8pw2Zdg%Xh@*ӕ2PZ{0xZ]>%9*[䤴MJSRU]eQ1qK6.DlT4>@>Z.,PzyXqK%$&jbmu#UH\bgVϦiToXͯ[ݎ{VRJh-8ǚ*d+st{dmίNclp>*>ʃ7DJVV6&-lu;e ~HLnI_*xMThI6GZG,=1L[-[.oNY+XcVLq-<*}(5x[#.4Ka,EGqx5a>(xn|={Uge%xVǥ(A8R=*_ڐĪOZuB&'<})Z\gtTRP'މGB.OHBlSZVCղ٬h;Nr;g֧Glw-1ph"3^+O Z0ǧZipYE%OxL> cu6!O r+mŞFeF/g>%.+ U+ۡfo"|r]~o]J.ևHYAV5TGjvhrF ,sZX >eg YSW9Fixw+sxD"ަp,B`Āy*}MgʼnV=BnD0HqFWݑpȡrH/f~*z\ondinAˎJu&a }EW(HE,\u̞*ܐLs($4.6Ap B [w MOxNXIXhN>TX"P,2)FSHlu$zSOk'sYEK4{G\0c|uؓ#NXuO4rT9vDL(0nqi6<3kRUQe)n[Hø#Rhʔ_'_,M%M=kqpޙtCΨ ^Wds{61)3]_r!nm_k9G"4LZ,EZ~ScóinWcpscVV5V9XȈ{'~aYp#FbsЪIU2Gmc{)6,㋐}9h⥊i{6 hI(h9So#SFAYGϟi  sξuZw/, uJLdu(b:4ٺyNcn}h3bD124)% tIeB!A&2֖%?RlY#ӀAqqJY-IoO,OZ@z\D#4@0~bjvqS)U±b} 9_^q\\VHn98.#(Cq)YYrbI~ƀ~x?ZFϧA%P@h ( ( ( ( ( ( ( ( ( ( ( ( ( @Ay}hsN?Z)"^pH _zVv'Py~Z+U5_2o[xa"H&o3A885L3VG̖@ SfR2xlcNuKD8fUU3Yןbֹf?CZ&]W6CWk6u5]{Z$fqT:#cVQhz~ -\E8dg1ܪ@~/jtRzZx7xH򍇚O+IX|Ax%}T?Zs_k!k7po9ǹ|sQW$wpxuaٛt,s5g m#]liTt,w77oTUJ fѪEG{}Ѐ;øc/mSe=i}vͩkKKmh}u:]4xAUIȣNKʊhNm-4u"?%Au0Xt$|.Q!MW:6е׎`*IZ &0E[DK8WL|aH\qVZ3vR1I7D2Q7Y 021x=a KL?]hݏrN?JҝhO5';5;NXAN)[ƪhqԬzdkRcOi$ʚBƲܮHK4 Oiql&sRuXM̹5_x-gwܐ9U[7`Zĩ,A${!p1MUJ)i{y7ml0?M6.jD;zm=g$˜MVNͻʃ5ᾃ4)56vBɟA1ks,5Ug,#>cźrVgj>  PiE<)jk kRءVFMf><S-D֬'F0V/1'ټYsnO ds}lJ4`H?-4k~$PcL 5qL¾YD损CNT]*JBYqq:r& 槓4p1/T&qҎO3+r{GWf*%tz=%d[֦1 k-BAM„gFsCvŏi<,aRS!җsbRr,LӇچm8\d?d!KDG51Rsac -U5iλIC`{V(";KWHO\LXM-^T)>a(friY5Cs)rz kN %-,ȭinyx:Ҽ-gerL߾^A*SJ,j7$i$Qۓ˓MVMӮDK'UDW ֗2 mcHa6yx#QRU}HcM98=#Z9l¢Tfэ< 66fu&Py:nڳiT#`|9]+{jKIŁ3mUՙw7qΟ~ovֹ_FzqjQ3Gnb3_+KYj bY9/On嵂}:]EԂ t'qlg:seBpq5~*Iˤ{3[) 0zP1iRY8]!`FJwRw]xR(,ЏM*7VH6D|p=FTXn洳|h#>X #z`oBM8HhCm\37dd {֝p(aܚDڮѻ99jJqExSRǡCՏ}Hƈ`L͚Z>.[j:r,3ǥU\%f}{ƐCK %_,;\~Z:]z*ў1끷*^tv6W%"A pF;L; lxhWa:SV g Hhx - K$%sHZiRbH'z'2m $QU?7-DJɽmߜXUSyE `}w !QKG i7&عQ;Twm9r핍V)HH,od~#k2?Bqg'I&#U5@ QCkOD7 y{up@[R T>R9'jF-t>!+ e w7(8Ĉyi'&q[txxsFxq % hcZɨpk`5cC1PXWΈPkS3Iev*W[8Oҩs-NG1E8)8ޯ"? ŚVM0tYd A^t4E+X8 5,ތM#|!Z4((X9z9VeVu 1>t5<+}BbXû'\8꺪,4ms^:Lvip W K[FLZ#Xɜਬ]ISAґUF{K鴫?1^-*и *l .I^G U[kyg6&IִKeqxI0W'?0CWRKCѴ 3&lF)U'h[b?B{׏VRh%Nϟ\k~\"ȈvH}u뻻Y\c`+Q> 6H#E-F{^ ^դB[mOTu)}tخ|Dq,'fOF y$?S v T[:[ַQ8AEpZ6kJn3GWӖpv5իNIRYU4!SW9V[X|>0$J;lG5NOdD=b0LOUsMQyT{62L8QmOM\4sc҅8p 3o @,pK& jfzbsW浒&tc5n9@+OXLpݸNL9MԭHe(~=N\[⻔eYOޥdtV2/<U LjFGfkSH?ՖTF`64r ֎ï|}l^2v+7AY s<6|kkդz|P319Se:G!Jwȩ} )W'X]œSEV- ;&.?}EZC$RGǚ5-44)?z7V;M6kFb|vIY\ЕZm:YGsju >դjs- +JOXKvvi&+qQ Ի>f9i35M)M.y)hݗ|@Y~J˭ S\ϢHcM&2X9$BXRI>\CHqpsPU;xi DC ߟZ\*z ;aqA<'r6Oc{ e(R9$'+Hxi6E<܁԰F~dKr}3R] QKRlD暸%c~x5Y ^wAꚺ:)X++XRVcN0sҁGoi*5 At[]m"E(b(r)PzPzEhR:J1 jVVq '(T=yF&cGkUHI @ Z`)2 Heig!1wg&6#&O\en ps 6~7sT.~vp^*rckcֺj(m fJCZR;N3;~+؎ t=2YWw| T\P9E pG.*m֘6x{wyf9ޮ(FM6RPUϤcojAM'J( @6Y(I* ,O?;>,~6ͼi(A;WϹ4Ki&cIۢAHA@P@P@P@P@P@ U)Gjy6sks!SsitBHAM-hP@^Z@_g7<"f`?ZӖ{TP~OI WO΢UM]]Ksy[]5g AJ컈EJ1C=jV;}g<5mZR"HHSP*jVBH  1 ?fe0ޢ˘QNaSb4Z[05ԏBӯ# c-ϜQp< F'>gВ(?J/KSjr-jRza.}%JXoBO/jc O659VHxi]R?^h%{fK,ƣUGjKExwS$zf=ԉ^HRƮ t}4r)R:I)`qAJinC-fb3M2p>Һ:ܬmϰYዺ*j1Ax(x~4חH[M#L$|coc]˱+ázkTt#[!AU'r9 tպ/*4. $̥IZ\ۂa@,qĩ9%d8t{ >Q)Fc^]E;X8=M1I!mcw`a+=cTh7ۙGURmϔnE\ {5\Rk@6(CfSkZD@ҠlM"H1&cR ,jWp2.}Jм~ t9]7p 9fD |&.$LF lQmc^PA]^J\3,Њ9 ޫڟ-~0"2)m WbbVݕC"1Fpbn>v'D5Z{IK h XtQڃtQX Y y\}hQwsAHf`g?80k{y=E Bl~_C "=<>Ls;[sLn=ֻ]J1My4X>*6͸R bkgÕq<5Ϯ)e<g)#;Pmޘ8 hf|ޔ9GjyזHہJ@@1R!:kDPl`NJb,(oR@ň```*D8dt<B4 K+n$I S)OF}EuOiC RH5$"i!M*'ҁ_9 0:R@zP#昄>oח @+g"Å* 4))be Z@CQڸJh cʮ Ldʀ $0!z`,!5D?~:C.1R0@Nx8Go+Fr8Hγe[$9o1Eel1@Ƞ Ghaր#UVcRgܵ I2jJ >kVs4e:TP@F %8[HtuϔؠُGؽyVJTި~L2/4'E6~(9e y]b;=y>^7.f-k;mK1=$cDFAzw/X֋熻+Io4M,ib=V\VԵ߻}[7BfEX{UnQ0vrkqX^䚊{YB40$U]ַ/(ŲPd24#rW=hiUU.ߓI[]m]N"Vގy뭶V]V|bmy[_ΟP]y;|+ݷ͆;ﭶ=-o+oR$y'/ͽ2[%["e,E 'H#ɷuT(9*(׳K.{wUW \'Qy7&hk>)O񽇆⸇SKDdg4۵f l,} ̔-m޶Wz-}奮GNn}ݒnVZ;ӥGb%NKJˢIdT5dWþW_̼iSmغ,[7*c.y^5ψ`NZKFY-ӭAIN/MkK+鮶#k-MB#in Eh1E"3.7F w$U҃}ڽ)8"{sI[/^?]Þ u5ɶ-ePGT†\?, 󖆲Q0I ( ( ( (bGx >P{RH?PP?-> ( C@("vlb1^B|֛ @P||#Լ/4o 3C.{$k߿r0"8|-II՛h[qҸ-I,%~NqsfhZ f\:.sISSdL#I|S\٠-5]6v= }:TC1try5:6*xz02wcTֹٕ/Fbn07tkY]٦QӜKHg/Sˡ;bi]s\ulJub9 Yj01]mQFmVĖ8$ U"(x:-h|3)=0+)n~Sm>-Mp@-G){9[v),JGXt5 ;{Jnܟ:nqAxc?gtާ??JhQ0 ss |'9ɪ*3zF$ǃ#h:V)$I *^Ir%GX5˻Z os1rw (;qYʤwV\wr}un.cI19nX})5cҍɩKn.D0 M֟ZdKl`n[qFjƄ'TDv9ǭZjSQ R[,m0r} MrUkA,`E$s  <{IGs8p,ur#4rEC.{P1wⶼ1acѪчBE{LeJ瞵uJQN npJNjQ^+[8VndR9tȚJ7.h\z;j=>bz<ơب*^ٞ8bJ_8M4kP!hr_j^3a,.D6Gz"T.i+_fэL;HH&%v mNmV+"%Zc8V|+=`J6t撫#1 &Wڅ߰:5Obi\|Ϊr6OahAU\Kxd~"{tQda҅$\d+:6O?l߃Xbwu?m4D*G9W:J[YAS#W+ȘӚ 0kb/3x΄Ol Ʋ2zG2T(c 吹23`ň>  !N @KgP>rz F6*,Dڇ;th*3;}j.4\'P5U%*hݏƲ F?~t(hl<pďLDqqKv&nuY4wm2"즤H̸[,-I tizr_;hثo])K1*B6bU = p3P yXTñRuWPy*}E,wXv-HfcucҐ hBKgBI+֪NPgR9Rc!;PQgn&d$; ]I7ѬWiK)?{@6˞ڡUXi4+iޗ+[7 4]2,KQhPNf))ґJZAэ9ӸhcGP&ɏ1M9|j-%4M}9+D{Xkk,Mjҽn-=37ZDR>oHW%*cGJrglq]T4RcVaXis]2Fu( `LM3Ɨ@>h 7;{rhYTv8S:~a<7{VHW8GUq'c>_^>C~Nc_T].ӉҤJ((@wi5d1`ʀ?8<ዿxR/JB9\{@K:DŽo  cru#./f.)v)hwȲG=go*2ANǑx4qii_gzKoKōYEåƗ;c"`;q2seO5nݾ]dZR[~W|H[v,cRӒ5f2,F]6߭܉7o[z>{'`v^jwQ2Gi89rI\o IRQJyiiNڧ&]ﵷc}wL5+.n5 c G"+)kӊP|SJmtUF)FJVZh ▏O޻au,p$ ͵G`:t`]:E/m՛>'ZFZj{'d}B%r_2|$UÅTiƢͭ7t] r^)k?un\ՠ#h͸ 6_#fj]Gw]bbZrۥ羻fi?52Y]_ {Ö9 SߎY)Rj)~L҄}ך/LBn4[+Lt K)eI+ⓝ[J񽟓wk\ÑZIm-+Лn}{ɭZѵō:¦kr+(ǖ_;9: H-픬V ")$&rSunNWoDw׹Y|_խu#6ϯ=%_:h Mp7ZUiԧjveuz_o]4o|J1S4]*$WpL$ āU||7PsSxugk!aO_~N7ۿ]vV8/Sj~L[pI+.s0Q(D_m/窄P@P@P@P:&h/1j}Ն#oznK@ PJ"ȝ?V2)ӭiܤ@yǽoN$RqS:_=,~N?s[k6-Ba?Jl]%Fٷ +Nk˔e`cpX]/ahXrƅF RL˹z$2m\׻rC{-OVS$wF6o&}-pCy}"FK2]\Ri4g4=zFb/f!Al5}73p+JkbfG}|bҦ}6NF#B>ԓU5&]iR+pa|2sM?[bG[@I+\[FRI;n+$aܪ{HVwr8Cݘ\gQ%Z<$,÷ֹ\qZZ&!zmfMh?z#gm 0}zPm̪U'ͱ׮^[b3rHj%eơ\%|3[vw+H,}̵}sVQ)6h< -0u*8^(mfx"w (rgkVGxX-L)0$?O4sV  x=jC EpT-iٶ{P1LUzxHվ]+蠱 TRReM<b|,.5k^.8e]*Hli146A#Ju;i w3Eu),1i\iIrئK4ADVU!ssGE徇?T,?Trj:8t[9#֩"h߇hZh55h"<<:Rolswq3svp|5VhVYI$jh8Rv61J[m.[{3PGQ^(a?hpyޡQկRm+Tcx==jnŅ$e,=O"RG[<ӞsQ]Ds6q]I-l"V=Gg-Z.~%*,"(8MN>[]loqmMOѨ$!Viy87 'g_nbPVm7n0ti2 dk[[Flj&*Ex >Q:#x*WhVm(_0mlu#ҳ;UWGEBզI rڼ 3 +O[k;(=SH67,1@]cp"%1Ґ$0~4KUrJJO4qDUA$vH`K7p$) U JG 0(@]5sY6vfdU5Oc"+9mbȲ6#C#r( 4HJ䃏42VQeN0}+[h>VbϦDŕ $±jbl 泳Cv=9~| Ż6:U;Z|7iso*Lgo+HI76;"ޕ$m870e qԉ3NںEqm.FPF(O hzG,pv@K{fĕcTޕid SW3 #$Z?MSXiϘ@$.zT&KSnY4Xr :)-(\n4K{kن{\E ` cZkO0沸ªI/#;Ҹ, $VG{J:<#2ӊ $Eg4}*b71?R>ҍOO|qS`EiCFdeq<>fKW9߇Z4fS2Loq9x+N? 0R㎕WglzUƽ7 'Clj%ɴm*Rfj J|}߃9tss??Ÿ1>7|4,*١kF=vJ0yXTO='Ev i!C rZ#+Q #.8ClfBybQ1ܚV*֑[^j0,HaOMz.Sd'XGbҔ>ʫpݨZZ%Z‰1AtUsFzbJH @]mbY4<_zap6ʇϽ!\[/EFd24>N%P@F (>4|'~$鱹YkvE\:n;NGp@>8xBD[K ]8>A4P@P@P@P@P@P@P@P@P@P@P@Zp Ѵ[BP??giཷּ~K>:Hp@> @Ay}hsN?ZNCt,?AZ✷c{4Po,K.p7Wq&:xeMG [IO-ort{rHW,eB媭w; urtvLpj^ؽռa},F-/18#ҴKR#rƳ"Bى#tg+S&Y[TtV#`wcHR+밸e:U[оn׶G2E+i*]\IrVHҹS'Y#O3MM>FccWRΈ4bcE0)%5c'>\YY@SgB(8[9I>yg׵FpxTlZj$>DwS9+GlMR%1H]X:˞n_qhh>ӮO_^۠GkKӣ}QR}%% 1$be&4 '7PuN-?,W\jé:^,IQHƹkfcpJW.DλTqJaR+R-4UwqMLe{(v3ntB&2Xj$]ʻh4LEԵ?[ǶM yD0ѧ:swيnͨ-ݴVQrN+ƫ%5@ |5;r/žl]D{s\ү)7ѭBCZ2D1uSMEn_|vCseD^u^mHJ :֗B$vycֶ&[Ho  ţ3]hַ3HAXk8mpcŲ(-mFV3vm^4<c)m Q_q{J)BkRyޓi䇞9S "Gz.{)jA]'OU)PӔ1dtΡW.$5cΔG|suI,+,d**ty %3(!ˆRh+ѽy?$fGNYؾUV5#ס|͚1LJ%,҂V -ntxV&L  Gz^Xh4NIekx$1l;4zjӄ_dyϪ78ݕ*8G˔[(Ya6 );)sRܭX,+ok,Xye>՜cs$qhڵM7}Usn ˩_^F)R=yUգ|(Ԡ5\ݤ,-K6ɿm>T5idI9l4Y=n2{ʉV["U;?S%ӊ1xIF@eݬ'?TcsVGB0rG5V8ص̒hsfX9[=>xH J$\ZE*mxgEEBOɦ1BhSJM; IJx+L!qZ 0"xU'Hۀ1ZDkscHTYBkn \` K vcg&a @~S, |*)q@74b8n)l|[xdڰJJG =قTAҕ͚p)Kb7 Jf #7ZqV7(K4M&tifh :cr)S47kTH֙t4$ (P@P@P@P@P@P@P@P@P@P@P@P@P@P@T(/?To/ڇы@ mCvGj)T(3*o}7y-|OY+sSД:wdw;xQjQ㌓3$` XѤ}C+b,,]t:DT~$k*x\ml:@:tFVB"JTafMGr ҽ^ FsڝHE~atkX08=5Dg1#'4}_h,l'ۀ3 @z㚜⿵<<`tb'oqإvJdfɔ(94.JN*4KxLQ?˭~WfMH6s/ɩYsLI9|Ǯ?ƽ ªP]Q͇nRw=,ɝbdU"S6@+%sY4rF1_M\ժ%$= lE'57FQ;H(-isnRż89Y.stZ\l?^bc 1[WEhׇ,PpqթQ<wJgɖɧ}<1\Qo}+sZMl«&1zGIǿV,Tw2=,[6|:[uh#ӺW:^3 l95m^,J&&s(ZcSV,+3Jנyhj[q[a#4V'S(`ӭzNl!H#iMOg |aМҦ:kI5ȦpWxwUuw A GU 28\"uܚ2SDQs8kǝ]QwFvZ3XR9#mtE7i*ꎨfR]<ʝSPpcJnE$yXzXUAVqT,,r>qd,|K#h8~`vALnN7 ӁPemQ[e.GR`VL9ojQz r;qjyWMIo]jJkX±iy{^du.[Ş K, qV/ \U4"Jv +tRzmyjƌ p+L;=%7-mZA^ r8nB[h*ٴ'-@ұfc^(y <J,zxWdD9:^Ƅo uM;pэp9*юQ? IYR{ՉכW,k¨fE#5.(kfCԨU~j?֙w'IT~Wp}JW? 6ڨ|t?v}Xki82ˏG$סGhveͳ367GzJfԟS_xOkǶfTabr& 9O/oH)un5lgI ĥQI1l0}N*Y2ԒniaRm#ާF֮#=S>džDT;V q0sq:cWY"lbEniZjF$RG5\$ZMJ+G J. mښ%zp<ڗ1P[d܎'a؞]tkYމditqTbYcR2MQI%g!~7d:9owJ7Tqƛ9hYy7mOMղg3)ngSkA z<'?AE*=7T3~_C8쒍&u\Nze҃xy甩lgJy+ gwqy$hLlGUa?4=ЃIs;{ szq<pd B9!+0=fjQ.Y`H,52hj‚N8 _S߀IX`{VX*{Qc;5#lĻrR2H 遜&o7|1^XB}:BG*B3,Ԝ [#eVAӜPi:!@aiĐjWF*XXx#pOMB)^ _rX̼Buiv8QXA-䮮_j+&?D*A-Jo+ "l4'eKg-P _'yE8P|sx2KK f7Bae V 2)܁€ aO!J~ƣwjS>N&P@Q lAzw7Ö y(RۅP $*\V$;{](xFɞ@/UҢlrj⹝nL€ {Y`1hm^ [W$Eo\HCyOAIE]&ݑAaayqϲ+ɬ828;xr*iu{-[)$΢€(뺽OjPdc6ܐ Gj/V^-}v# ΫA MIfx?Z>7K歧j쿖-uA m4ĚjZC ( ( ( ( ( ( ( ( (1@]Gn(ꖀ@ E;P1hGDP~BS{lkP@'sONڝ[nsgq5M_p#+~>}kK+ n⅟V2ԾF:MM7DpWc{ʌS]7bGC'ÖgKY"L JCYc|AsIskOƮC/|Ж rQ_c𯉥+o*لFMg^>3,sf[I3^( fYeODtDC?tX/}]]"'8a4bHrj嵓jQ.h#v#*Pd7Ҝrm;,wG*TKW$q!J+bZ8w8_|OtYm c+6=CZO왁wHͽdNJÐ%|Wݢٷd:=tC*ſtKH5KW1MZ뷖:-q\H7mVQJHSjQO hi{1He2Eq_KƴcBu [qqB'´mesN?i:@yH0W$+>Ux Z=YF@?.cui/J"a5N"2,ׇs?ϭ.Q!́_EGi{ s΋B_HNn ҲqsXzsWĸnt9)Y6IY1j$fajJ[c, x|Q;)ULk6in\tF]T0y[3MȐ9ӳXdjxz1hX= \ּQ>,JizߔUພowXu=&)lX# rH}VIBIIӦsʹ?6Nk;&sa+iCn#N@q[H5e#+RcY:3Qv. {V 3yzjO*j MbWrGr =_M]ַI֧tܳovBNyf `zQs*)nsm]6T@0M>6PKjM!u$vPsRM3y}JK#c}+#oY2Y3:13>)t>v O'ZsW%A...$"V;W<'Lωv/m{[ ?捏NS^Ûz7?* G5sk!ƋyfYQMrW)c X:/>d@k*k#Yo,urk95r) I4 Z erO>^1ԟ8#B6i0kf֣SfIqKluCaM'ׯ,d $?:cujTW$dޝWMuGA]yuNڷꡝזLckF\pH Ko jZjM+.){CӡGg~++#]RF% umJ6Ϗ#bھzҧ5e%V<+GQ:pO]:";8H"3TéIgie,lhw{qOڳ?tSg->5SrW??lٝEQGTqn4/2A IT`**0q:z'_1O O8UٕL]'sNb$J' ?nلі̰IzP>p~cn:O: HbAU|Fr:;7|2aB0~zXլrwVړڵݝYb^]*GtbI]FdfB'+ g ˅D{f\w}E` $nSi;Ө ,OJC, +ؗ*)!ҐiIM)$zf=x[kN@+c3UtBzdu0'RdmЂN>1Cm ŨFG(hgo<0]"%_ӧ)$N9ݣK.l|8$v"ִ+(4ٴSK|xݏ. l2fOc|hB풷/v-6·PFoXaĉHe?R_Pc(pO@ySuiFzҀl˂aP&y׉kZ0NwnzPO+*N)[`6#!R~4Ӱrb/$䱽.nr9+qE"YŦ[p \Rw*9JV]))qI<=gm#hDvI$tNfm\JtgsT.} 's;\ԴIh֚rǐ?*hWh6M"$^-՛P _7xb헖l?\ERǒ|`ΌSi˰ !9#V^dxBUd}kۘf%Bޤk&]TR-jdKW=6+'ca2"X\Vb"6UV1ֱ2Y/5|3[亵c.#h,koFkxG]>vSR=Y_;6Jۭ~4>N4V2 'h>ưRRۛIm6BP G :"Og*ȍaNx1ތ~&UjIit}ǞutM;Rwn (\7|w'pcw4}-)E/1xS{Kɿ#$ι:vAߠ)$MFdRK$~Y+TG~WeX<[ G_4F;9mԬEH0*2CQO'I%f[KgJo?5KT>(ij3GejEqF%I WFua~5 K${v Ir+ErE^<1&JE̟_}Z) SɯUk:hjţ{(a_;/ߥ>- F%ԣGoRqp8OZv_6b -UHu7+3[H`w(S{n@2H$)5&{^1z)lYVIW{fI[xapΌcH %@){ouʚ_~mrܯ?K_\b+t,nrw1Tv~d%%|&V$zڐvC۲00;y]mm|oQv]O] ŧZKn,>U]7^N98-/wkV]+:7u=/nW 7`\2G8Cm>e/{w鷖I(Ǻi}vOJ BKv[iuO:FBSs[\8-`(pRZ|)>W;vm_5-umZ̸VYZG2Il Ē2aI7(o_;vwvM;׸գԮ;ҥАNR$m~BmwQ}OTO۽a(<Nyi-ݹM{+v];x-nEZ^奔>VJ^k-|MYI o]<=u j-s1# vQV;Pm-㼛V*Cv𪤏2OC3zҪ{__Kav.q.s{i/vc6sE۬u}kb]{yx¾\WwS3E\n'07cSWP~h6营}pT0uNӜ zqU<ɥqnT7ou[X6.n^|YIg$+I;w{l7%ãJ qERco'cy'Q_|V=$mn9evX6ߙO96r]r)|uP@P@P]TP?-> ( C@("vlbA_@[ԆPh凈Ңc"vu;3|ctߡ߁s_sj bAQpz  [˼d#fh`B[uYX`e8>km~$(14:ϊ-6U6as޷\ͫܙsEhzhF lr ?_]J><'s!v5=sK/)8"RiVZgn_\*rvGD/mMPmndI N;VHf2+qZ.I4G=:Y Qqԫ/ ׮EZ*LMU(Yx 4Xh:}?x\Y>623]ޅQVkΒMwmn>e*،=9[SQm5o[di?< rO4QΧ .ȇ W}F=rMW۶kr/WvY$,U}=뢎i)z D kwn.ᲈE0?L]+vRJ[K-A]jͮzz%f%olr֊,߭)bN\ƌR!4E7Orw04mS"MSXEBSrYIR^qhPL%MJi\U]ʔ1dv$V7S=6+?*X̱S#EY!M=VBsYjZs\jPL|QEIn.KhwMz~}KS`RVGǡg\M2SFESjoGOi r9[z>cΚYZ++Ed4w&YG{#ֆrb0\94B4ȭtvp$*R!k%bψ %5yYP1j9Э)Mm[DM 2yJ|˚9  r eK˅Toퟚ'i= j-V#:n͘sܤԓ|!='+ܥ,v9fIKg)#9I#d׉iNR՞vjA%:/־UM™ܠz һZS%G4%@Zz9*'MQ*x 4c*{٤.ˎVQD]:1i1'9W3tB[/,Jb$H?<]JpDc΄c-Yt" 5~tͧyʐrW< j2M)J?v+.y gbGOծDhcJL/# *~ΏgQIpiP@ւv=}s\ڕ n8i9*g ?.l٘JFږ$YH2۹efqՎ즸h2w(GN}4*-Q}zKi-^xb]|5M> #l& 8,nmV"r<([ $InĨᯗGKf1 Z;4y[ZR [}zբBvw {Zή0<ʘ8>xޙ|>tt[YDӱW~dgs2trT%Qŕ1YaOv!C,h=q@Vc r !\ɷqaځ)?J.NB{`*ltSU\Y;b$E*1g &l@))c.46RF*kV^(дX!Sc|IcvИON ` tT81(S Ġ.!HP!A=b{]Djjt8 Ʈ!aL 3UF2@ЅA0,"Q(5/Y{t;)::=)X~'1t ~bE#Y6ud;Fְ oOc + >kTҙt4$ (]RA bxV)`\ua_~3OXw%B s^5kkiu:DμaH[ d)UЉǚ.g Yejm-1;e }zPy%{~~g%D]wE}>F:5v-yYQ*8`jܜ'wkdLcl޺:e: 7hSo4,+NLU)Z|Yr,eKwor_WV:M[N۝?RK;),N8`ZQRVf8moV[[[jַumj[$hC)]_+aљݺ|j_FgU߮};zu^VhlZmf,彴76#c$fNzu}^,M:hE oUp>UkoTyQ]2?Ii˧,\~MO[76?I_Om^ᦝz5yk3Q^;d1q)0\y6[謴 ^N/.ҼFw 8K_đ] bノy?&MCwOEAMIt/_Im]Go`UeŨ=>΁wiccR#ޠpNG\+U%i˺v1Yyd+vYkn 55@'RNRݓN #V9/ In=ap1&vEA٩=m~EMs^]jz_Twyh;vs=i-!vVX 뷚k89ZLl"E(& ~+~7u]O%轊-^Sώr!9(і$AOi]uZ^BYwDv:xk@ˍT#hH99'9QE???8y['<=\}ͮƷ[p@ x7M-.\efCDtkZ&|.;\6y{rrnpRQ ΟZE$J_Feb͹en$BG4zmd;}Pe ͕ꮧ\MApP@^vޝ饾Z&e7JShg>2zu*1l{K3m<2)}Pu9ogwy8|#h趶o{Rӿeuq-hK|Hr.q<~4NhՌ|?uꌺ&Y|I۰6r3kݲ[+;[m6y6%w p#hpH?6NO"ۗ;zu Y5k\nhQc繡${_$V[tAox p:j"YC;ơ.yJ7!ܸ w8S-ݦK7gy$68@ݞ_ `cZ6ےo$u$QzoZG·Ii"-cm#RfT=F5Ŝz*%֒kX`r;͵V%O͟rjSO.x% 6 1- tiYwoUhMy~~_ԗռD{h(<g9f<is>BQ_'Ku+F;uHR9&F-t>WE(M%Ha@rze_so}r6[Q(u+D/MJ]U`s]xJ҅DDu"_&F>R|A-5 *ƮD2A+ .mL -hhuތҺ03䪘ai3O %lr4"ϧgDF%}%6OI&ٝ*jN*`USw49he^w¬^boqGCέqq=8]i66S-ѐNsXuPq)T.@R#zb+tFfj2!qn敎*a9igeww xX=Yhx58PHusS!nĀN1[AG./2kGsNgc:%2`F5+5F4H\9(8Ͼ+9TQWg:N=#ûhauJ ;&z\%mtR%&zꜩ)@_qq9-O/{#@t }k6Vq׽&% ?LTK`[:D<=k8^沛7d W.>R1ge>&gO=oB1^S,ZpUhLR@E 4 i"5l:Yؾ(o%הFRj|*6 CJ]w$ j^Mθ5ᶬmv16Z`8Ui-\ i:\7^8AhΊxCc|AEG9N 22=4MSGլI4|,d2Vmz(cT0& pf^,Xi.ӕ9rJl.$:TM6YImW*Fqb74Vdg& Vu0F'g -tId M>VTi{u /'nЮ}\/Ty'~b>*_Zd:85.1`<{9WP 6ȥIc:w^w)犖kR4q49eXQUΈl})̞" ):Ri 1@ @(@74~: n.UhJVg?'Ach$J@%0 W $wC:ιu uz,?qjQ&{ I? |9ƩHѹV 8Ygm+[ebֲVGxNEsΝ0b·^+=`KB=E,qt5ՉŞI*u(WD4FIjqϒjIwD=ED0͊}!S4.OS#H#RY%P@h$]ʰar(h ( ( ( ( ( ( ( ( ( ( ("`@-hP@^Z@_ug: ȫה?դ08_-|'ˏ{m=lS4vBZS~a,< g(E#fGҢ1[bhT5&iLd9DFk-XV@''5̓5DuS_;RSՆvfA_cԂʰMbdRPM3RW3񶞷޲ۖp4uHn!Ӆ>fv:bH!Hb(WܑcM+=G@0'[ ,E0&ƒ9   gz+NdP\ %WOi(@jͶz*ݫU M9Y! wq2H9,tt74BTrGj㬏3LRzT]X]O|[n`fοRgF'`4.!kMH2jdQx`jLg~aԌ#]J,тk]O@Ѣ+gWεth~ %k cSdˢ;G= U9Mdx#*[0Œ@l:tGbT HL?#- Rfy]<K_]kglTf(2ZVE}oO9pY'ҶgUu Y1;wskg8R\3@<(U4ܬcSNkp&}|6 l?#`HHP~[:=({K5d4*L6Ӧk,?nac1z(y-*+䍽sQ*`%f(;ZEe 90LG#ԡ>dS:4;n hzMcM04ncnk)9Vx>tګ#$g޼|՟4 cdu9( t ֮3b+C^c8ѶwzS1Ԓ#'$P!GZRZR{kkeAF(2:(py+Hnh9w8r|M0< ~s^})CH&()N=ii#=EQ4d'֨oJ/AZfh ۰fR=/HbJtiDӡѸU+ϵTLɿzh 該<[Z{qG *:B('cn8'H`pߕsz1-k0ot#r999+ByEɻcm88#t*.Ri;+]ZFd(?xi -Y;$Z+Zk=qZ [Źۘt;$?nIBQz]|ިXrn oW<Ks-jYR3yZ9}Zn7d!~uCOi8; 6֟:k?>MQsu)sa _EW?|,Ib4/^ZmTo'g%F}udZ{]Jnڿ^ka9TeN\aQ:R0=Zr:Ojqf)K<\2)\[y!~lRJǔMˉ"e*@&Fԕ8}^]Z @y=%Zܫp\TМHbfi]2iY0+l.5$3 횎S|)UͼO[!3(G^GZF )a}kķivAGJv>{hu,ZOy6\QE>P.?*4yieiP>Iup$e 3xzrz`$0 ldR-nq> aſ҉L1؞XX3 )|_zW;-x~3?|yJk=O! T`(+ϢQбo-6TAe5U6Ufx LjGsΫMKz5ʤ{7.(@M vr:CH OZ$ .4z̬-Hb3Ԋq^ɝPKRK=J+ɬ.PK`s&Pz5;HrHɫ*ds[\)Q^.k xnƔüqֿ1G!fAq}̆3j욫4!Te@&A׺eySip< uY쀹kyk%sֲ ]+RYOj+3:V) 0 WՄYL~2{>/Q=8ψ:"PG½C:Ԋ=zuc݌s^~&1)F_J4$bYROAؗ='A=Ni,`jRo,tjgΈ.G]a«2bd:jo_a+ [$[OP.7Lr.a⅁mڭ3) Z1Ki2H_ZS*5Zٜ7< iu Уν&oL맋oٖ6w\8xlvA9MM̹k׎a#b\h 6tXz8lLQXZ+6m4'7z>=)c.>f33NZ-8NŐZI-lֱRrkr:ec7VjrTmgMm#g\Gzм~.hVz`?߸^OMfhk35bm)_ ?"VhriZG ~HA֢IL6m&rZi7+t'9ssh=J0B.[J\@mLw*TӔ%_,"[yŴ⌛o|C}گ|"9 J8I֢X˂?*Q\T%087WŐL<ۥ_<{K&G_@4>oAZmt=:<<: YY:QHӖ-u98%̑;Սѭ? -.޹cokx͵͹O~qB"IĚT@RybW4["T6@񿁭\la9`h ] ۅf##@\kP?`wRx@-Ʒ㿴?iF=[FW3Ydl)t ;#C^I;(ˀۖ!9v9W}Jq}~ΗCv#o.yڠ^v"JXTBX /68쩇FyCs=U->*~?h]J;?Z,"|}T|=wOΙ2qZI ޔ81h[p NEFC,kvSڋ ڧ?F&fq\cTMXқ>NP@Q ( ( ( ( ( ( ( ( ( ( ( ( ( (ꖀ@ E7P1h/yC oq-jC (hZIӵh,*q=:3L5*^K/\OoxMh^ nZ[_ΙԪx1TQlS7?/ܵu2v:>{4-5[1 wn2COoqC!W/Ff:x1 cߙ5.JLJW ϊuY%ZIdsh9zm#N-fSۧɵF8!kKRZW1Tu aO^9Q6?,r(>01wVϖŋkK^Nthsr{ZS|k}%t1-+FZT$_UϷ?ޑFQ[wJ~{q[sTFԚeȱ=YP*>fN}4mܒmnA[HJ^ܚW|M= 'ERz4e99h0_XbXV_I媎j}[ũw' o|t!U5uk~y xiSVD)͝vڝP ]wwzW TU_:GtFY}ܖ̢2F3F ĨTC5AJm^Vu'zH4Kٍo$cr]~->zSb\nm4_^Emaj1ʀ>"7Atd .9'ζcPVCcv8t3yԳi{xuc^p}:T,θ^sXF:ҡm{^A*W9U[; #>"a{W|)2>+v//f[kP&-_ ʺ^{Nq&w~ [>̭.8jG,5dƚHnZ_'wV,ʔ.L^`o 'W֡WHʒ E'LUҹ893O <\Һ!E8gH5楨W?0+ӃUax'.\բ}F8Fs(Hk9Q7*#v֚F&,I}{nI9'u:#m;Kk(&+$]~eI8ݞRl̴q( k詽7=a['y$PК)w3M6Q|Gq ^^t"7HP4q#zn5#/AV«T:6I4cSۥ+"iz3Z`z Y'>Y^>%񎑦ɤYĊ\͞#,3<0GN1rL)nKb(rGMO=rƟ CnWFG?>[_9cuWC%琨x?/e#)]2R fUS5x,Ս.2L#a^:[ΠnYYv:sP^ȥKNQs^uyMm4gBH$gTbYZ$fϢ^C~u^|UiS,hm]1?|M}o:W=L %/A){x}fM?MׯDgk^a=H-It'/|Q$q"$.wם, JTem6nu9䈎6zy/?bśᾨ*QP@ Ĭؓij s[maD}^Kfa_|: ͬrnY69v6T)B+D%Jw՞a7GE7:kL>rIYȬoT&8yEɕʈo+9]c>M+]N+y%&#>BuJ1NoRm bbr)' ~TS"#_b4s%U`1~oW8I)$ܾ gCX׃A\TVȵt 4#hq R4+ 4y1}} 漩u9|?RG"LplsRR*8x+c4@Qnn8o=B-E*q^ 6gU,dV6<8%#u+VixRFUi;tLt&-U< #S4bQÛKx.E?fqWÚ='6Qks  ,j)h%СKi }~U#&SjGڄeM&r' Xj{C5OfݽO\s|.V;6C4y\zGC%S޽*4/2 m+KOe ]2VVR_IFW[UW^⋅tQUPa@ iZA}lFU1LJ,ek(X|AaxMD&+˛T'$#L,q<%3N,uۨyZhty獢*zt&d]DL"vţTF`ǁL֙X4\ w> *Z- tP\|Dxlc=95fsl^L O9pM>ݺQpTw{!vfNq_Q7sJ}OӥA%P@h ( ( ( ( ( ( ( ( ( ( ( ( ( @Ay}hsM?Z<#"^PKcZ€ wK3g ?|T#[2/F"@+b*7{Â]\0kvy4Sr.)(O'ܨv$d˻׀"QўueS90ξ;f*JǬ5k¢ڹqi'Td|mFу^d%:C>;lzyBܤEy9\>h~]tjOWaoGXE´sr]H} nN`#|қJLTc%LӬ5'G&*ԕ!J1FkNI!< }+OT]G#Zmw:x?Z맙T7B)چ>cW RHLR4sRTRќ,U4;kX6yARNucq3o \0;ҼD6[w^q!ys՚ MvՂdW*aɶ4}qJxzH Hqj.T}i&V~S&Y| i3,W0rvq^Tam.;zv;\(cXT{i= %"qdN# gIVLh i󊹊&g2Wy㩯D,8ڴjRA<{TffO#wzU:-YԔgM(jaqaq]QMi&im6Y0zzJ%̉([pŜ֟+ԬM$w,x{ ן6$-10X((WF jfg} F R)KVf,2ב\!eٜǕu=~X(,;DUyv:84oQ+ufjJDc$^3S]Ӵ*YuEƠ})sͩ*roC?jw֥q{lK+4>'jm\ȟM,gqi3bB "9 ݎG%K֩nQxTcuN8VIdNnwa: jK,Oq#rԇ*>&͡Sܑi2)N¼qO 5/4?r%KhQLv48)*Yg!uتӌYf!p֔Y^7b`zO0JbK8דR|o^yf~Fzc ?.-956[[\\ 3LLi%m YmI (?tpy\\mZYq:5'RvbiD_ʀ̢U@pI#{^[unbnS5ɊjSh֖ΞkIIxsZNN77n~nȓ@q[i,.l˜G+E%s\01aQ]Xfws_ `yD.k\}NQ6E YiҤԒ ( 4P@dH1m'HجƜ;5[%wa_?-?Ɵ9%?%п5ZSϷ0`B֙i4}O>Ò]] ZgÒ]] ZgÒ]] ZgÒ]] ZgÒ]] ZgÒ]] ZgÒ]] ZgÒ]] ZgÒ]] ZgÒ]] ZgR9&F-tSE(M%Ha@yIe[@LD]oFT}s&W~;"{"{cd2uQܹ`"k8M38AԑE. H&0~p]t) qʌ}(¨֚ԟ3Q'ӵ1)$>1jfsO^*UNZ `(eK}4?+/CS8)-OC*I \̠ ׋'j _Sg¶m,E%†֢=;z턖 v.n.EPOַ:a2)ih/[ T#(3R*:W=Ɯ+F*ΥJIMK"頹e<ªVgkK}Jx| nԇ$7j5 {,>S7rmܓçCI Hϊ*j&Ps~^GegUtAZў'Sb&h[8-y>Zkz]w=*c0=ZܲXu=xk7>{a^? Nڼ:V#CzIo(ȠD}- QHn\u, ZzVh)gS( ɦb!lFzPu z~5H 1^u&i1~K/(8YN+-OQ\\M5QOMO^1 YȨVefsڤՏ3VX;3Q*n0` H4}'ۧ֨>IҤԒ ( 4P@d0ijK/x{({:.o 7Gj1Qǘā_EJ:JЍ)V ( ( ( ( ( ( ( ( ( ( (G#"NrNj5])-EPD=W(WTVִ4鄰槸#Btf5fr..̿X( pZ}Pր*P7DCŠ_*h)Ķ5i (wGiq @¼ܑ^9 o>_M WT8зqY87V Y:lM"BFqYيH;pJark$[a|&C {NCQڱ+*HjJhNg^N"mQЉɮju-84UE&4ԬĖ7 rLQU67?J!PA+chłX X3`h$KXJbkw{%ػk)w"ݡ9[-9lyuqt!Fe1aN眔*$LyG";ՠ7J7q[LV< knb%s!I#؊\R| sMPlCeze3ZB5g30cB0AOEz|H >ve+=Y{'+i[D g}O:taynrԋdhf zDS5dmO)&1]H#&Ų[AM&OpFqV55maE1rHX c#58 G:^Y06fϧ̃jJ܃x^GZI\TSCH(:iɻRXGjN:qØ֥QC{q\SM Q="F=kEn:45(DqZDV<03#5s ;|'ڵXϙ2}WQ'ye`@E10~'*}ft(xV얷A s\2~יft-) 縭iIW2)srо4ϫJЂGi^+kR*q5R29^ⶌ NvHEcWa9gU4y5hmud.Z%ߧ=_< 8,֎il*:VoRx dgZ Ku5{yU)kχ:C,w,ύT+%r5Իc82m!~V8ʄ.Zot83%{W[wqbOZO:K]I,-cִ<+15=ǖ*2[`K^u]3b 'T`ܤ|M2Wh,#,GA3@IZ:0w vH-Xw+!Pv,l+9?l;0(K}mӢRa|*D#4Bmv` ?ď Cu`:FS͋ K"[ɠv)m4[D@&v#@_JeK5$Ҁ,4e:P-B4;d\3w-z.-.ǂ%֚`Zw1%J84nd4_Q>66qY!6t<[R T>R9&F-t>SE(M%Ha@y7I ,(':WgДC[|SS-ĩbGގ\xjmǷ*j]SLpO]ϏX J/7cur$)-1ЀX(iӋْvK+iAdd3s4b彊6[;\v浭A[z"wwzͽpiqjH\mJfsTODly4`?J'ͽԷtɣQVz&m*]_k6`)ѧ){ϙ+Z_FpeVZVبŬ[5nj6?Ɵ4%vj jя;5SBRᩜ9%4Z+&0_kUНRWib(2A8RӔuQu+K}MsӚ!sw,Z]jC5Ҿ< rՅ ֆ] J:It鑌v$kltc+TZT-VG1_˜q{ZRjlOhXLTH OӊjW¨_5tshMY%=8Cu[/N6fu*֥9 ڬ;` ]JX+܊UٳӼ/^$~*PDL=OFvgܤV[&b%V.j-"<5E YV^"LBc'1f_-Tt 7W]SϹG#v}}Qohv$3e5ftRZy:) 1^=*1sJķ2y& :%JHLR6$wyG鵘 J]M5-ws#"Qwms^X6s5m!4fɻ9?Zɟ#Nz5Ώu=js"G~qTh9m6 HXŪglY\-]S|ViUhpfApI'Wb]ϒUްG`!G\G ܍I,n me+ҔM(TE+HץO}2\VJtQSYKf'KG|qpG[z5%o!Imd, ӵqЏ!~QV+Ķ-D_a;s[ )'#tQùg5M[ʟQ[ƕ4/fOm;hAXk^4g*O_j5ևti-]Ē[N]:' |< ps0'!K? Qx+wl>t&YΜG:,phy`+*Ma;4h1.bsrEkm)SVMafFO5X1J9l( w#UkډY 0hV_'Hp;D܆I#[H{v m qsYѕ|v*)#psZw9=cf'oTd~2Bq 4+Vp\csZUVusҐ Y\ 94cX;=2#Mb ћ`AFzLϓ*2:lvɜHOo ,q:̙ɜFiji%73g!/ xǚt6W_f,_ݨz"bYQY¢:8ⷌ`*ىn&UNF3F"h= @ 5U1G-c'u 4yd|=(:2ʹ1":;КttٕflWW8j?x =O9~ymN4egvD=2Uڄ߁h*l^_2c"^PK1Rm_SQGaZyAL`zR J(ž}+,a['95e:TP@F d,Q<"}n5BMWV_)*TVV)V ( ( ( (^>7_²}M4qGat]*)I):һdug2]KZ#0($O\QUeN}o]ͭũ a' N3s[܎4i$TAb2r{#m ?W "};?ZK ?$M U*n-;ڄVZ|^uԹ؛ tV47dRQWcobcYI)d޼#IVs.iC]k:M{MN&h}ո=A"G&R[1t][{m2>dWzc'$QEjǚ$O(V ( ( ( ( ( (޾m%F̖rUx+3*#}s漓 pZ}Pր*P7DCŠ*)Ķ5i ((`ub|]|M>ciO7PvG$q*\GI-[@ROOq\]pDrwt%fQUEF.ˑa "95JOS7Mp$VJVJ0DO(v\| ƔdȂ~Ǽbtr.Bcr) {=5)PBt?kNfg^XJ[‰\Qұ2Lӕ[F ňj~υsTZ"=K VCuſ|j٥7-aԙ#WI=L'7-ԏۭFGx"nj!IHv19A-SCFc+ryQ]pHRܫ4%|) *٣Qz؉r>6}QڒrNM|ܞؚ*9^[#t\\N}Wu*,D PNq_]N*~Ufz7 mKENkW>,ªl핷x&}pbb f+-^ɧ$@瑑P\{{;nn"S/k }4sёm qs[«eY"A1y-A)KMrڇ }A'ӥHwGjzT Ghv62ov֬k)X"x]Ĩ ļ5DkXԒZPɽ'4Vcɘu \P(=kKslM`k|be5aq9rl < :V"f.8S_a꯹'`;َO?*H;dmhWSë$ަGNc9"ݒ؃*3]>QV:YW!N0)xQgCe)݆$R<ꐲ<.܇Խz/ßZ ƂDgbTzVsh˪&f&OO†@e l׊J)e U0=(di@:4a!()3>1}i/P,H,f /yF;I~ϚƧAK$v Rf7=|})Bq@ @I#4CjE0%Cя*H4'#5by՝xdSYZүřbfPʹwyŸ&*~kLH5Bz>q)Xc8 )ɧbRcB2,P߱Ğ/:jS>N&P@Q2T̞>Ga"Ne0Wޝ@P@P@P@YvYk7*yfmľݫ̯CB7Z9FuW>6SkVWl2s E8:՘.ź/, U:HqG84 Ir~69%nV8_ZԵ/g1ggۜgѥF6[j2<-˯z.Fּ >OWW[*?0^bŶiwq [J&`8$\xxi9ϙ;_K[U̚I'lŠ:n}du9#rCs3uT)҄-l4W/|kmu-^q]yw&gAZa?fޖF/ʿj֙S4M?־]oXӤDq$t3V""XFoڑOu&?V]m#i7#AaxZ%kVRrn?c ya^_GWW_Z|8[tN,ІiYSNI'Vq{I:w[ݯoHSPxGP g#s5_[+ơ0cӴ?xgL45KL#\4)cI#U*teʣw{$ij>53SxrTd#9 `ְFHוc^Y(NMj_rxsFm`oF\n6~֫:~F.w{RpW1&io)MF {Xzʵ(]Q$BP@P@P@P@ŭ# +~_8P?-> ( C@("nlbC?to@[P||u\C.\2~_֜ui9QLJ bd֤.8q֕g]#QbE4;XnE rJޔnͩqUԾ#_yoJlMGOy3l +UUfQMR\ť?/YO\H:դk7QD2uZ*;=*4Xdy`hBNwsZl5 $׫Noi2y]UH6; kp#˄?^N3 I]O(r6rO5v1ۗSnw<+vKWaֿUVJ҉Z>玕:u%*xkڅQv|&m.E4QI]kNZdr\\I3^W,AV,αJoVv0P8WF֝އM %FԤ]W׍V<ڲt;9m%0)-ʆR7KB=)#G[l׾J*9= 07215fS8IJb[Z<Ƴ]uV3Qטz EXkҾ&*sJ5!*_asE3ʔZzzC5=EIRt6c>4XbqJo(RQ!I"Ex?Dѥ>iҠВ ( 4Pweqlvh3#PF4|u3[̻e8 1TZUP@P@P@P@5]7Puյmo#UK;P[+7*^?kȩ)Ƶɧ}̜,?,|/Gh7j={_)*wаuk.],zÕg;E%i44cx_soeo٠8뎽+ܨ#:;dROt=*rݦz~#Ƨ `/:WzzWo"4+[=%BуЀܟֶN*Zk[(ƪ^__#OO kA-a!)CycxEO۾_rjFS9Z_֚dsf=Ah7Ts~NӒ;roZ}%+~&_9- <<x2U'Jq*j2V+1,tM~Sȅ$6l#CZft*VM]'2)uk&k&O]@bsi1ޫ%w qV߇k+ c G8҅ lӕFo c$:p܎zz l yn]9s9r惥sOCUk [ bZ$(]^frRQ3:}cUu=xFpR)Ҋ2WWWL)<*4N}މKmmw#!mid;c98Ȭhҝ|MXѸ؈s5}nMoDTmIg Fc)?<3Xz[ۛOۖԤcjwj$ ,I#H{IC+r!RE6dl`֋cT5HO#U4 fV_(nBsS [n|H,lZ\ypym>X]jQ}, _]sۼR:-&E\\&OdqWMO:F([:[j=ki;f; ﴋު85\[;-2}ɕ#ӭ;*[_FkZk īDSbq)|VZ,FpEEL0MDcy 4yn.B~WUuHcq-IB!*ٮ<Z6nsҿMqjtWUU~@&@iFA![Zư#XĆcW62gҌg]8bI}͎*FIt*sfJŷOtF>*ʑV.fw'4 H(42dH(3BŠC[(:[cc'5Ś ނnLP04!41ȡj1p!\uhV#"i+2:rkvgfJ^$hmjzNý~I~ǣ9^istxs#ΫSS~ՎiT7k*FP+{R>w$΢6Q;WMW[!*T*b\>"B[4H<=r#0*Q=m3V=I8Y.Cys I7 94m'RodpMؘ;JZA+=.bKDnS\l&C zPi:KYDSeS@hW-m^tXVc@ RYbQu43ijfÉeTfM|W6qV R{BOn֑incSshK2n=U]؎ hТ]4h+!H9*tr uØ_)ڗ+aVãb j,=h:C6bOʍEc_7[sLnR3ksZRN)ҳ6$ (PbjMĸrO_klZ?c-ޟ3P@P@P@P@P@P@P@t?4)tlFq_A뷑[ =n2vK~!8Ml%QZa𰠟.Er"FP@P@P@P@=.Y-,Դ3wcc^hu%JcHK-m"0ZJeVnrݳ+1[R T>R9&F-t^WF(M%Ha@x!M)KO+?Wg_Cx{ >ӛSɬGG@l|L[Erٛ iP(yUBp\dJ;A-O8V] eVȥas`9(jO} ^& Bݟ[Dԡ$  EL?BdYYdƗQJf5-~GQ]2ʥ{wqKC|I=Vx,[*z4p43#[JU"' OcW>k~lm \΋9'k:phգ7)C0{*jZᘢV9vXuJƬ/(`H8FEI.lWAѲ(u9"_D,qr3UyBUX{ E3ʨrqTINJ-.#ȟ2]4f|eՋrA"eNһUD|<<t M)|4)=Z1:=gi/im 9cڮI 4cVtHHRxcҫMi])y˧=NHЅ}k aj.<-܎#!IaJ|ڢcfdsU-˕ouM%Φֹ0?A\/k 2-7Zf Z vݤ/#nRU"1u{yUyQYVRԺe羶DI~tQEtNuk2 x{ K'$z> ԭv̨;ЛE>5{=~l+XccRt+]p?͸mpjjb7F8VYu5a+HS8x[ :+1eJ#$DЭ!/+ΥV7k"䶼פ+>[7^<iwtF:mlg+0ʅt ׊jC=0HXi RL&jUWlr<3Iٌ/͉H:O.#j5"&U1\ hد #$nOӰI g_m Iu`H7tc.dz ;$dEkM㔵m~5U䊍D]ci.a5mJ[VJHNX6󺌕Gu4Ԯ\]8Z2Z8cSo<=$^!A!$\u'5Y6(5Ɋ6 9ݭ2%3*#ʤio|@Vh`,_]PN_.*6<9IkMN)x!I>gm=ing\>-Kf,r9o#RBx§Zg jջ!)!xXus3ok{7Oxc{DKQn=Df>+jϬkVlqh@gl Fg\xgV[t$/ !!>fc^7œDI|0/ۚφ>+ǷK1 @4qbeHYD:m¯hcoS o>Ȃ Wd/x٬/Ip9U-SEı5u#1wRz/ Kh9Eno׈E#01>/E[*0 ;$uC C}Pi:wIp|P+9;#CC>|CollcDfoք.Y?gtrR2,g{-RJc;iNd|%qOzm4/d/+dnǷ?ZsD^B ZkQR'гGC#Z\~O -O^c^z}xy*t99^$kNnOú8}Ƽ?Zn} ܲ$?׬啮)7Z]m>jmi6N<1v/ttI%tv; s ڤ*t0W:Y|' UZ#8d!te[$QYiToS8Ug.)b??_G꫸ҴEQnS?+_Ρ~KC g(&'7"/Dc+jű8\閚IE*1=:(JW8F7C!wЭal6I뮶gRQU'ta%x<`Ҽ^JWGgULy#>f6hm3di6r[jEG WV:6o[q2nfu1u+>fo2S')2% zugզWBg'MAc8 ۣC*rۗS(+t5TNGL>x" C_a*bGh]1w^N<rYm%%G?ÓPuI7 O1i}M+#XӠ'γ>a^Έ=ͤ[FcUnkXO<7F/l.),m+ WˋiW="IA:il[bf'Iɟ-[JPYAp{3N=SžuO"caR̫JyhF͙:z_hdiH KHV'̑ m1Lr*Z4ˑp RzuxIM_ON/&eڳZ-"\f|}'fњ¤ Z=YΔ(jxD'~+}ZtfF_BuJڜSQHynL %>w?&R'*pJ2tR6SH?7( .Jҝfh%M ,o^gX4=|3:c]mY=MSz^X:ץHdD݋>>?G:?`P#6וU2"ih}6 M-[ "}KUh٦M0:z/SQP8POҭ6t’3^DiEGmIX]O vѣx0~Q־30Uu4M* Ik;r ?P]AhD@*刜e$!|U%*ۖUV0 [q9 l\OFU+m>X~[4PI[[a_E!b)xzȅ_Mg?S2k8d0`u*Q 94ؼ@L ]\'WzqyQ^œʓe[}zڵT\/>^. `8hstc S "kt{yAޘl )'1c?#][ K>1xxְtc'WY2 ed),1:xcNerm-c1Qz֕13쨤@?*Ǚ+AJrsN3hEi31Y4 (5Ӈi$s˧b;d AkdtqQwsóczt*Uqwr Ңq/٭ !pʃ(%#h2Ku`=*nU!S( P+ JCE4i.ǵp@#zS@78@6#GH8hٖ92L[miS})6KFJ1Gw 8bR0ŕ#U#9!*=i6 W`;o!6-4a `cҝshʫI,cC[9qSmdhzosQ* ( 4P@ 5gi.f$$ukcijSO 1"QA貧ZY!t_7.?zO"#=.?zO"Ge{y*] ~?E۸0T??qat/n;/?R_(v_¥пSQo Kާw~?A BO'G#=.?zO"Ge{y*] ~?E۸0T??qat/n;/?R_(v_¥пSQo Kާw~?A BO'G#=.?zO"Ge{y*] ~?E۸0T??qat/n;/?R_(v_¥пSQo Kާw~?A BO'G#=.?zO"Ge{y*] ~?E۸0T??qat/n;/?R_(v_¥пSQo Kާw~?A BO'G#=.?zO"Ge{y*] ~?E۸0T??qat/n;/?R_(v_¥пSQo Kާw~?A BO'G#=.?zO"Ge{y*] ~?E۸0/ |9hkkXG(s͈.|Õ)k̕;= QKPI"4F{ψuH%z׫9KTz<4$ycB/5Cq38R?rMJ* \֢ceD] Ffkg=zlhcKKhq_9(ls5ˑI,BvֿSܽRk G)x{N[P7VGx~m- n?v?Z*4_d44L>ٻ5/cu;-O3In{L>S|IGj@zW9 na T-oHp=3^} x$y8JƐwsfzsM{Wƙr#ed9VxTw> SڃIc "Y>v؊ly86|}Gk$$7Fz9!dP%E,84jnxnڄNvg U):`>&\ea[df*uS@_5KYDfV6N1:F#U&)i4ibh(>;L`sc'n)VUMXj o3fcl@H4i(N:BabyRX42ހzE'q6Z{Vb+^ӧ}7= D'u5MNمmB+G|β$mUM?fMNi(d<ߌ&X==:V%P@F ( ( ( ( ( ( ( ( ( ( ( ( ( ( pZ}Pր*P5DCŠ ȝׄ-hf (ɾ= :#?y:,@V>o^:a#ݕıYpg~׭UIwbԝoDK3JcԚS*|fG꼟zl9) HUش4MI݊8G5h[D4U+B7[vHi,^Qo`ڲ+HDvQ?^ W:rݗt LT.OaifB>[>DP,*k;JޥH, }qM2NB.&mJUYCӷ( ڽ8cTl},N)գ Qjj 2. ( zΫAi.I'+(nON q,6[u11"*^m,Lz`VӉ 6+Ds'd"ࢴ!;$hs;}ǵ*#[OlYZN:}kb><\ƺ"-WKkұڣ?vdydRh9&y̦VԜ~J}%:\;l0*(Q]'v:|c*q;&5,1E+#\ |j1Lc+Ӻ_倆J)R5)mφtּ@Sby MOFx(BEy>ǒ4(x"fQgB>{p8\v4.oSܖRO$S.LӢ#L?: %..Wlqbls}qLEmkE.PFr7YՇCȮѕ)rV:آDX`1^"6@p%(eP&+h&[d<ⴱi;Y5Fs)В:6=Rѣ/fO_YErlzW4싑vG, 7!i_D;{,Z3z@3iz4 ece(`W=E](iei9r ~Sk_DMֹJCPhR)7m̜U0 as`ȤQsKs 2IA1k˖jk!(0+zWn9bi ic`8ZPõ;\OQN1IX] Yr-f (НYYӝii&+^fN-)K:W61e9N*5я3٫d8Wl0R+9(ȸȸa]S)UZ3n|$|?)NTrEx4θ2jѺb1i1#1}Fw5Wvh.)!X:܇q H.g}f~wR3_Q-4UkL߈%ylw I 9ѓxQ`͛bsHV+e R>;7}LxAJvğ4[/u>#FՏ0*3ކ^b-rk eZhz4(*ꚜM- ЅQGy{s9G+ޗ$xiuك-^Ws'r G|~k2Efxu ]rDθ'x 4Ԋ%Ҕ&h (pPHA@1 4Z;P@H=( &2yc&Y4QpRz!-+Zލޥ۝x.]-{GVٴ:}k)@蕎YT N2YؠDV1?٠IyŶ0%H]҂ͅx%r3S[39ˏ&?n_5_kD}־͘Ur?P8 uxU].#tuND{V9;kr[DM?җ*??'3Z!$U?NXLgiYt3{_RosN -TNhdݐ>trسw\ZjmzKsYP@F (8|^?x5-zK86 ~P 7AܪXxP?- GQ+~#x~ _;@5? GQ+~#x~ _;@5? GQ+~#x~ _;@5? GQ+~#x~ _;@5? GQ+~#x~ _;@5? GQ+~#x~ _;@5? GQ+~#x~ _;@5? GQ+~#x~ _;@5? GQ+~#x~ _;@5? GQ+~#x~ _;@5? GQ+~#xV?C?%X忻ӝm ~,MzXQiw}ɭ#@P?-> ( C@("nlbNп@⟴iiǕ^ueUCs ^ӝoMB9 ՆKfhXaϛ:Eq󞕅\ Ylxk*juąGk/c*k]rFxS(ѫR,X%>hYK-7Y'F w+NmG.7bghK$̀+*n\fЪԶov=s>#'Z~^Gr$a ]|U4NzTw1u|^ZY#H[ eWt2&l>vz:3% sW+Ȫ eq0 r'­%Uoc_RB?fVn"iV;j Jl.u ϩF p1,IF2fm({+ՕOwOM67^\ F<޹%W/? }.LJ֪9-g"X=Io\ݻҰI7Q,:opBY&":ْW֡ܨ>$Bg22zֶ}SDE#h~xIng|YUCg3}YkfCŭ=y3.qWٓ7#>&h0UK%p~Yjϰf̳MywSz9VD_ڞ']*a.8JgE\Dk kמ{>XLFӱ2źd:h;pI%zF^ گo4}I'aeivTӥd&PFk$~1*僌>&v*&d?s&.^&,nw$FmUN^6-v>VUT,Ɩ3Rhg:+#b]AYWs}OBa Z}NXRFTU#ABQl|ךg&|^4(\$EtI%MsTFGryw9oJPv5a4WO]r-Q^11HU=C!ŕ[Ҹpѣ˗5+vT.mV4j=H?NΔZz?|3q mխѕÒ {lN6zžU/#k̇G ,5k<(d%?s iXt_f"MrБn?ҚfsW$vCZ)CsSlQ^ nYG yO6ӟՏ5 o#9m%1ڦ3z9Z#6*]An|⽈)p+ģ6i?*^^9'$$Q x^DRy$c6q+}MmΏ.u)%Ή@KG"dƽTgEz A9X"dq_guC0[hhDfq5Ш!_sN4H5(ʐLT_MHpdz$S`.Fzƭ-)5Նƣ݃Ǖx[׮MJx4+)DD:We:t`}hٝo Xբ\ \7 IFhצ$^2ԮV Ԩ8ZRUX)I^GlB|e(;WR*'Mu{YEJWZV5 0]2c7_ vn*;ܸwiw+MkCvlIծy+:M?^eȟovlT"񍽋7ڬn/W utQ{U!c=,j& %FoQ8V]%(F~Z))'jZ]<ʹzdU鴥Hba̟@ҭtܬ\H 7v!Q[Afމ'ZeM^ָ1Dk-Rgn+OtTf(̭k.򲞭 1iq2x8k Wf&C'762w UF2$]5kV:;XR9q~bPI5^KeU8.#U2[tTDSK#0mW'Z9'8=m7ij﷟WM<:F1jZqKjn,=+x*έt'A-ͯ:(1(uê|ojS\̤Ք-ڛI.1τE=R fzJ hDm*kˮIrH1{Pg=9[%(XvU)5s\#4JU58%G =MtRI }bO* wQNxY]Y1$`ᠬ>s 8MM+^Zܤkn~Wt$u6ӈcѯ\Y@si9hkx6{<խ$pʠd5)tڙ~..5cTEKgmORVM%taYa+T2GkmNr4kt s|ۑ7##]OP NKٝWdQ Eyg:% K)P䂼;QiurYys|ҩ6N"QZbZYYAS9jz8|lGwo[{bF^Oa#פS4izė1 %r=OKe? Z TPȁqn#jX:^ۙ%HnXc{ .$<A@aGxH$F \gJ:~$qY|~4-NOv c{%<̿dy=WMnHqܼaR4ٍj>0g[{ Ny' vQZsi n@uC>n6YF>P]-@ZZәeRĞ?]hӴX!)z~{P}aӝk=OjGiUKae 9$ɑJNWRݟ%#qʬ"m>p Er1~çGf"fng"vV!ʈ~(+=6[kUn *?*h)'Hnn;G Wg|N"ZFh>SœwhsgjbBfKH8r`ҴI9X$:U9\;=c4`I!Fq9#z`R#AD`R 俾GJ.&>]["lg35췠Oc66vǛ52w6SI%P@h(zjz[XڡY\w4_/z׍.%K%DHe08xP@P@P@P@P@P@P@P@P@P@P@'ƚ5-ygtrGCczoč!jղuf[8u'b@= (ꖀ@ |F7P1h{'h?ZQwIRq͚d࿵Fؼ6dE]?*3ΛC(Ƨ=o{}/N."3*u_Ҽk71UQPxoA's[w O*.px?hI+Kk=kt]duܤQʬYM'9%,kQ{mNQQ(r#A.ďw#p(l;Mh*i+qUg`x>qxY/;Qi^h,78A1i ܥ_5 An"\+\}ό  niVG,eE=J=c[ћ|ΦH4igoo&&9u&i[/Ei9Åyݺ,#.4BZ)A~o51χt(  ZcM;H˸ivj7>X[9VjLRʯ1ۏj3k?6Ƿ؟ 1+|0DW3R"GecNom M8#*k*ֆԲu Y4\&<a' w2\I[ߊҞq$9j1z#Z6!6&"|pGzǺC6Hr8U*'krR_M69VUypw4 Z-!Jx5{{SmaH,mXHRDِ"hVPvzx]ZTcK:6<1^^'4i8&ar"8Ol^!У5 Ѷ_E1#F@8ӊE˭M ZpA9jSk#Ld,˒0V|7uDQxTtS v^wIRӌ[XU?*HҌ-]B`(ד1T['c?JFSB6Oxnt]xܣ&C*y\;b—qەln9uJUeT-.e@*qV9%K%~@C T58%N M3Sm^7SaD)Eij~i&Hp"Cl2RǏVRfWӥyרdu*IthD%Iq'ַFT(=K5;bݍ_DuamIJiU#)rM~yĔTeΎD:ѣ_!Bkqh[Ȱ79khUWRzfia,#QV79:WUZu9yJsW6Q|{ZS76Pt.gKְ!tvk7&ՃYD9IxV]IXϐm^x׹%sѴ;Zf5+y:q+u%"5W;]ĦiAc(O,hSR4rժȻ[ֵE,ՙx/ztm"كp"vαU܎X I2-;_Jήu)pЦ:(8Bg:.ެ-dH ۵:1M|;W6t,-~ͭxz8LV-Z`\U jGlpv.md Hm;c%sWwckKYYAJVqq+8n~i&se}Ң6oӠYtX.K!o@SvE;xyH|Órk*U4]hV:Rqz$siwIFTh2mXDӭ#)G鶜j_k# ,zyE#ڣZO2>ʯJ'6y/@-1ҽ>5rv-=#.ˊ<5<^ڜr,)9P{FHc̑Aϝh- d= u!G"j҂s7)Qm GYR$be(mNkrԦVvt ӫZ:hmƖd{srZ;a;:cO5,\tEZ[UO¬QqB88yb$c95 i 2EtCII ُ:ueu Ò0<~QF2b̗+S)XRzMj`},]QjNYAdȦ -_gi#Csަg֥J/ )Md~qV+ݵ^ r)5vuztQKFP\qZA<-rw{%ˡs֫Q;`'()E퐖۟P)(R9&F-ox+D kQzb???٫1 (>:n-'IS]DSQ+wG6"J]PN[HъwB~mnGd2O6[٭΍'x&CQ49`qr@+ lX7!.3ޭ; 䱈~5 $TrHD%GcMzΓӬԵRǸ sfë~oY4zU8$~i^-M;5y{y~F<̻\6):X.RBvP~pSz!``ڹ=TUq\8 R)1J,Ud*%t[ ֱ[=i_\nLJ9U5E:GR|hHFyPJ&V܃p;֋c2mpj)RW|EЬ(#]vNcE/ye=1]5˫{*§ׇOݨCXGieEu]M$u4>Z3tOlI!u$pO_8krFXLi8I2; x!8?QkkAA-o_J*%Oti+$!J0B@[ʆ99PVV}ETlcZn)b*]O6!<"Qnߩr] 0+- Fav I*r]kϳޅ- 5p2NB<}V/YbNOjj ; cjl weRdHB)^K@U .gS*{%QGZϨ I jE#52] *v~\> JǛ'j0vg}i- + ]I$irO5mOFgkpQ$Llrj!\k]`RAW6)ӳ7MgPx5yE#a^WgI\}kkXJĒ޾2FvV55Eƥ"_{q޾ X4%1nnGMz:*5UTӱP0i%2,TzR&m wkȼp~?Rn^N ( 4P=b4"a`y{*~gjW:ﹹI'4Z ( ( ( >hv&և4vI “ g5 jrܛ0Tt̻C>kþ"Դk%ͅ5Fe8$Nڅ妚WGNQsnG}8#5m4!4ݑ\:H]G@8*rqSuӿB_:oyvZ6aw}cZnn!8_ƜKE{|*ĺoN\Fylf mE21q֛M[o;jg +t.|T֓]/um a$]T 銙5;GWsoH~ys^d] FQ(՗(dۜ؊t+}[—96_l<=_d>IS#ܠզؓMi aėXHvR9/薢Z[Kwe$JOXI'fƓj4O ]I=UԡI2%Aqi] nG[h'JB+(E8E3hS)Z54( ( ( (?cm:T鷄r A@@[R T>R9&F-t^1 + `nv f{ᄎ(4rhq1n&*K_k^+rxTݙ$R8bt6"qmI1b޺W'/M '8_9^程Jr8+n.dT : 1)oHꤑEm=k}cG9=i|(+]\BGLh,#qg;L 3$z=Gnxylb}ܤ} `K qtgp!M V<&-ƥp`/NψM}Y(SڭllCsڥRzjzUr;ETt>ISiׯhއ7GѤu?($|mTi=Ofgfg9$57?bjds-˵0#ɚ$XFUQC<ՆTԲA2I ʷ lgRbe9"L2MhKq*RƮ_ޣm~d3ʓ5IґdP@Q9_-U$O2S?r7$gGXRLQVqf 7X(ۚ_}#$ ]}LI] Fe;H SI;Ck/[+E):Mi^V+jMe}e|#mV{i#gĒ3p81Xdڤ5^l c}/6xZ~=:+fbFgtXڑo.V׷S^oM>WUz7&G &v7K"7Mj}KDŽ3 ( ( ( (ؒ70gQ\1@O@T(/?Tk7ы@ ;A?Zֵ/VE/z5a@y=^ 0>t&BvahٞWNKS4۹"c)2`[*3ml}9]s 7#tytܻ|T9mY+*sֽ:zRƵowlhTX&b[Y6’ *5WF[xcZV7DŻmg؆ 7#({4uC2onj9[b=SܪXp㱡E+)>f# -WIeySka*|˃T%m\[$\8%SS:#ݝ燴[YhS ~u{HbhԕMQ閂{e<` C;0Rk+ 1+ji=MyKHM#V3̜ ?ʊOClOf4tZک>θ Td]MC˝V'|*Gi%)rabH)$Dwi f`D*:J_yn KvQH'֑W1*k7cY3d=9Vr;XB5J^dd&c١΋*ၩIϖ|*H&3i=YE)U9PkXqT^[HbܭڻK N5;U^zDmֹqyм>:XIfhFRZ•KBb Bq[Ngj[2 .`FyiI4H#{Om-[gsqx#xV@9ޅW{*E9¤/h'_0g0ܭ>T(neapT7'dsȟN>t7 aRG,$cК8@na27J}z i`!;H^58皥FE6#M>V ۍwKG9 ̐-K$1szEz8"Z0,C &QYX|oFPm\Mqo"`9ֿVQN=Q9rQ=%B=s^4`G ª&ށW#/duV}0Fz0X*LiJ[2X.0˼{sXΜ[)p HrG-Sqs 2H8p:AS=:o-6^ H*3Gr1:]1_/=5sN2gFu׊tk-g/[$3^S"4% D7 ^D_-"9#a5+s:]R#"^J-sH>le5ٟS$[rpzPAqr2ſkԎ~N.+KS*jvQ\Ž 1kHϾ`Mw9'G#s!f<K^fChf"m*wTz(Jy=G䔕V^bmÚRڙ9#7_KӤkcd\oڻW4Ic;9ź, HnK+j d([ r$mz Zkg2{QҰ}Lw9S;A+0Ҍk_}i ǚ3|PCy+|=I tVR!RxDzxs+3Ҽ]_V FFЅvk߅|#  yiLteXb!7!XٹրV%ͻoX\* w׭!|W(ӦLyz&{ 7,?~4cc|C4R`><HNƴu m֣!=$`jtWռc-G}ajdzϪԢp4َW ޴|!MN/hȿvhG2M2պ=gc=ǚ N!HfcxI;kK$AX-aP][[[ e!恢ޡgq _ٗo挆>Er >{uf  c.|ZɴePq!4>  FO D% H1ւb~\ҽUqP"R!w2,(3.0M4Ӗdi__nZGDI%P@h`X&PJOpFohSg:vcpo?c@P@P@P@.|3=;Z.fYI(Xt~"GuٯXέ5R<sk7"ޤQ_=ī!1N9McN GMj.ivKI~~Hmsz/^R Glp|M}oO_º5ƍ#YfLl5_ByFFU)sE)+o"#Y9GKd;E=MgC>JAg%ry> Ƨݭnރc*~^>AykN[ m$X&+tOVǓ#++YKԚ#RrnOvzƭEZz*]zE}c~|I6?ږE8]cIC2jߐb[w?jV?2 C}|Fw$n9Ͻ?r}ߨ_?x[Գ VymEi\Iwn YIƜ}ܺ9;_t][Fֿ6m/5{:x@09ZU6tD`g{t)iWg[]TUvo1S`#d958Fp߿܋rj'genݿ|5`[YXYsE-tfT6KcIT]<>z|S|gIնi>hǭNV3RkT~F4ӌG!19)…`9Q%yo>|8++52 ( ( ( P'n]z?0TP?-> ( C@("nlbMՙY,GysΡ=Yu3+]G- q}$JvHc,sxG=J59|# O q;jQ:R!Q[j? Kfpp~,mU&FkFs~(݄ǔ6I YwhMei^*F)rxj%vpFzKQ5E!1\sagGu*VUo@_ynuoy1\iU=gdpVFyA+֩7ʞ1+==n׽z9&[U˚hVV-tOy-R[N#vi5ݏ/<*q5|;*:dGݳylasQ.vӣ3bvvRwBxB]^[]3KROӬDcҸ8`9b騢ҤZۼek\g9 "kW] mi'׎khnDgrkbɶj S8"\®rxQ*z?‚HV8b+St?|fRZ,^ԗe|U(+5Z>WFV#^iV ,TѸ瓈*roBh<C6+7=x|sN5szx:r=5|%ck >sy9!Rsǰ,L0@=k8seDžs_ 8q`rWSiS:FaHtUϛ֧GRn SY וh\;|+N0n)fŻ&m{2T4++rY+I)NAW?WXF@iP1OղU+\sei+H׌bb؝MS+?r͹nn+SqpO+oZEMF< ĝ?µ2DAM"q4}"ngm)#Eڀ/9:d1v*qS幤fxNk]6f@"9+*9dWcGs^]uD$^>eFq42I20 XU9頡N0/i֖nwo8_ݝbVU%D2,Bm\q͝iEo,bxIkxiVdQPP`py(.5T]SgF\ Ga PֳuW5PΔf:&QRG9]k7e22iؘ"0,h!V#75tQ\3ڶV:sPN63t=:MCE]3 Ww+CJs"Ь }Ib݃:9ʞEg(\GٻkqI4ֲգ Yn~\cl`sY3^砥c$ԟ/Srзr$}:ҹ9r+>1.ـ_.Eon>o ;4p h=J,& aQ,"u(]k"yGMimHJ%l-nU.\מ$I#ݐGЩnŮC9%8zP۱. BXilh 4@7( WBצAT.1lv"K3 P"9-Uc@B<4y?kMVK>Kt*Ĺ3٪SE ʓ% :ZDyWD%ptAXEn泌pIHv$d ;ݞqLM dc=CPU>PPTw;DP-&%+jzwj0|]jw>NP@Q c6-H2ܨ`h ( ( ( ( ( ( ( ( ( ( ( o>"x+UGM"ٖKS?t7A6vZƱ[‚8Q@(j(ꖀ@ |F7P1h,^ѣA"%*:09ݓh%F>p|RGN<>NɕbA#~"6Ns'a_ iW2x{Ţ)$?uyG(78jz~u- B$~ac_=ӡ+Ix|\Wѧ6^ Td=b'0_G'Tp;7]buל}}:qQZ@+N2i9a.h,6zjla bic @i;$&2: TޣEs)#'kEUc8,ZZjX»AXԩ)iQQl%/u%R&r"h75Lm(ge%di9aϵe$*dVFR4@URW-+lY VE@ ƴ5`j#G="cec)"%E"5NCKژ<#歯c&{q|Ü 5dkOu.p~6RM^:+E6Wi*YY,Oz]t=ch^)WVⵍYCfcZUvyvJ]SO[NK'rzWf٬>vu%O݋*xNgić%#q^K ~ɦ;4= m\MNv5 FG :-; K1q=*6ݚ&0 sP1S m\EO t ,5PJ9 y<:Mt7w`QRMFdzZpN':Cp|$[|I7_'!qcSJϘn vqZsg)*T&W, ^::~oᫍ/ė7..rF:r^OlӊǮ¿"8jhB@s^HPzU"*CAikrOrm!0Шne<*줸6|Uu+5CN:MBqз9GD%mm3RΨJ|% 9<ұannbC(9kSFmͨF?. 3ĭz&]]ԊSϯE(uv=z8Jfa&ƍt5e Z)X9N[dE`"!KG.&o%^dv7'7fz4(sJe0ީ1HCFPzե_fx5ȢlG4iP5Tܑ SI0$$TaPP+~,EaemazWm#>Ɨ4!ab:ThTr>rJ]ѩN+'Z}̛bX[] oҎ"qz2TRöq$Ht@/[l ; VP(cIWNOq~kۣN6W 1k*JZ f5ܾ7LL| 1Q[ ں2WG_cy /\ѫ:/CīGeLjXiNfH$ xkXC}oeն;TWJMl;h,Bv#gvu)tia`楀 :|uS-ɉ^ְ{شm m="CԄk;w1D?=|O ~6wa.p<ʆu0=P@P@P@P@P@P@P@P@P@P@P@[- O,pY:5}'Nh֑r{ݘc(n (ꖀ@ |F7P1hw?&hELvFtmU? ^4MpgV]e%4Cul8=kCxNuv.c° vօ/fq(𥦯O0jefFgok0nlVdqGJ,A }.__%auU)8m!8Y`=0Rk 8*o^q>׊އ.x$-wz 删yJv3n1՛qzV^/0;z&ZhlzYS^,Uϖ+Cf'ՆhiWe5:J+ KWᦘnE~E(i+D܄N\pq]rF]X%H^{ԡJ>ʷ'=E3k.\Z\F0CW8]>%us m!5]{,U~&i;7>ctN aes3e]Ror0lj; Bz f>ޠ͞!/g[]Xݏ5!'MGkXsy׃Cq*prI{|V: jyp?WR7K4R%hdga]ɌaH =E)7V#K.cTC2[)9h%v6ї1*vV'Q:j;C.JA7yos]͡RwVd~s`iꦜFG>#ꎻH4&Tor4a*EcZF$3H7+HŷSz#5x8[,xW½=l.Y)ܲËYaKI$:Ʊx]cЬk⼪SƩpг7LV<3QEFĩk˦7¿`0IX9y"`Sd,!pYG{wG2WhY@jgNk0Ӯf㱵I@Z}6Up9 0?Vju,| <3gMu Ng$Hd .WlY<'mw~. 0+uQeU֧UPNJr&u6@Ÿf{f'tgH;AXI\:Zj6e1(|J"푗 !iTW=R3p&rr8pf7sLC#`H u?)g?(=錳 a@bz1Oh>#9sDebpS,aN)M"x I0$#9.El_<Vl 6hDR&TNyb͑`Yx*@sF Jx֜ekdMvzQfXKEsir{aI4GtVt!HMbpH3OS<\Z?tU#O]nZF>NP@Q ( (扸dC9ܼz鰒߂O !hw9?]+&W~ ?ß,߂O !hw9?]+&W~ ?ß,߂O !hw9?]+&W~ ?ß,߂O !hw9?]+&W~ ?ß,߂O !hw9?]+&W~ ?ß,߂O !hw9?]+&W~ ?ß,߂O !hw9?]+&W~ ?ß,߂O !hw9?]+&W~ ?ß,߂O !hw9?]+&W~ ?ß,߂O !hw9?]+&W~ ?ß,߂O !hw9"?Y@:Vi+L`ktA4( (ꖀ@ |F7P1hw?&hE$L,R6P~ՓX$L;?)=LVr~iHn j{єd; K{*l> %mWhLtEUaB=FWe<Vn-9NxZMnHב(Fq*)+3ĶwMY ja҃|6][:'r4Dr$gҾ7֦.ǯKRRcwB9&tzt&utaںcc([\87 K`:X7ֱ43nb'Uh[nrC/a$DJ^#`Շ:hמa\PhjlmRbE!F2qSk ILn9+ud!4N-R1FpE2T+#cpqָu;.;y4(O i`Bjn>er,xBg:Qy!m a1RS\Y>Tk\}44UX9@\DigF s<on[^5l||'7Qe J6ƵӃq'%)e...d%bJ nJ?8M"Ay}j CZ*nZ5KF[q{"| R6-jB ÏބqR{=h )l嵭feӦH\qgQԮy|?sh:㇦tZDvF?qTmYĻ|3+Mb0u2MvFi[ q΅;NMuIg.ѱϷzl=bF׌q\ϡ`0\9 &jXT'$s^g3=.Xv=FeIh5(dªm]WkDDb87ի924<t.DuY #moSzfq)Xb*ۣۻc:i0g֨嗺.nsG PՅPmoNQ=P4E- L c8LKTs娻82*zO#i␨8iK/3tU  WNG^Q|,d7nK;ul2dS6;NSᛝ4͓5ͬvPn}Y #(= Ifxf_S#"]xi4W=cadAC1_yRoC:]}͛J8 w TQ0NR(*Ib:Vcx˘;_`pGzN9+ \YreEQ 1لek2MSM#n,wQ]M#2H-s"P0,W Y9E #Fevh\F:P0i Wn4 b;.x`W69bqR{tԶ*NO`IPUB[4+s@lWJ$w*bE(VܒFGqJT[>F6,5Bf9i`yǟ[ Ni3#"?JpGsX');~!eS_7.,%:ݦg),N+Z RX+֦Msڗ'ZzGjB1wg?y DI85BZc^O9bO32 ߳<־ͨhads{EH4NB5Mxv(ZW%yY;|ih%ȫF5EysjW$2!Z%cVPC\G 4슯:nLjMKRvmITl2źYU ޺rĶuYT8 0!Kn Yy$k9iu26ǭ"lwS^,5hl285 xe.?!81MBsR"ƾR $,h?$KyN;䌪ΐ:ol!Y֣aQ ?c_Ck+yhe!3M/lӰi8qPsI.k8]A"KF*: NoI>אQ_sIJV=1cR%bOSkDKn`P; c|MH I[GS=O5yIab,lbp= MB@CܑJcQ|zrרa]j>N&P@Q ( ( ( ( ( ( ( ( ( ( ( ( ( (ꖀ@ |F7P1hs> kCn (/aBK}h$n|U**VEOQ"sxE_~yP}1yQ]doE-XG/8SSп/5i졝_4fUlvqxbR봍=9A\Ƣj>fy$|:9=+:#%6Ɯ:|1jKr^ ҼLNONBT{+dcс|yï*W^4dXɦ7ּu1SEѪzn'uLM7h7D֗wL k j#9jcofh1׭  g8O[V JYu;_VZrƗ3no ./(=a66@qO,܉\EYuj;y# ҹ*ѥN<ij;] ;[T #WoA9Ťuŵ>%΃}GgZ,ErԎ.Ťl6Py"%L:הOQ}? nIZyڐZ}Ke%T҃፩Tr;l%Gd]/-ss떶s*Q0'5$C pUsXnp;-u/ \YZHowDwg}FWg *爋Y~UrM 9ӪӺ:9 jM6[fXlFX} tʥv,G,ǨGB5Qm53P0oֽ/ҦjQ^mbȱզyXȜ~y%hѩE&Qγw= W;ͩ-]KVVMA ϩ2ORv,[itkaV\F*JLU7~kSDS!UtIKGm΂ .,HoGzȑbjTD;m*Fe`sa^6Bu+ kycX1?Pdn^tO2xK~XS33󬐥ͫ5u}~trtdʷ> 𭝹Msk6:G٢_1qCݿWh&te.BEmp2HzmvSiܚOdE̠1a&z *Ncڙ[(8?JW' Q`g2x LdK(S͂9t.M3e!hoD߾ + *->bDb iRZ:6f]Q#15 8 ]5rHc/X$eҦ_J\'o2ݚ&λAkΉK`r=P N=w xR-0-i%[1ʡFwS s'-ַ-cq4cF2㢕k.~owݝ#rms8I+ZXiUw3igE[IVnd-> mIa[ de''bݖhfYFzng͵@$,sZSΜ&QOY5{%^( m,<2V؜`[_ǵz\|)NѣYukjVw>yA? *0qOiWM2iFrkug"*KDm3ʠfC~R=ǭq8y>euwJfݛʦr%J]"u(+S}KF l"vHU~$լ8UiHtU V~ӹO Œ#4ބR>r&cR>dJͶShlr7*5T`SH48d/y=OJQRDˡ4~=lzWv99=niZ(%͌uS6K;Ӻ| 35a1WlIDž-E5SoGnIn}WJ\5z֫i\6dc5KRUmnW%c3/ŜzBq esZYG~S I4Q.?Dmz{4eo,C+71TM$F;%7|˓Vc֢[B+gT>MZZ\o p˧N۹_̟*(h:CJg~bJѝ=+9C!vJzg [,Eh۫b\ܬUm/iUvRp民榬IbF=k&'Ol"ER>$v>hH1e1hC$!=lXD1Rh!:E=Cˎ$2[.8OalK)adR&4`|ւr?v όU=%XNH+qy"XL(c<c|.OQ#J}OI%P@h ( ( ( ( ( ( ( ( ( ( ( ( ( @Ay}hs_L?Z*x#xi|@_exdn<9W87V4߼|ϪZ]$b~Y:V=XUVPa*]hФ_Uݹ$$aR|m]F1 @F4+k[3a_(Q[b6t] Dr?ģfʪ{]>(zylvV^-QG8n sOcm(Tyxlwz6y 3>\x=sQ7+:x>j'm/tmr_1} L$c)QUu "Uh(Y<*i~rpSi@A>v1/Rys3Z:`RKٸcR"ʔbBcU<#FxةpWhI70f"v~W% 1_:6>l%·痲]IVȠ-a=MRE\{]x86I.sJ<+K.>$`O9+eW@>Ntۃ4IqAQ.8"1]nmm2I?]2zYN-giam1 t~l!2.w3.&pXRm좞xa20R$>hvrwWйld)=(9[jw~d^{xnƃ,iӍJCMR]j2mLqgERhPrcoeiU[q==uѥs+Ӧ.Wi-ȍ dZUq?:T [m2h˷&!GG SkEbLC;08G'Zײ!e>j*TՏ.mτ fn jsܱWFu:szfyZ"Oysv{EwU m+h"8 %N WL#sz.xcVm;Ez4x9Gk#>Ggbb1V>|构…݊jn}7P:+ r2 dzq,ĐǶ(=`P8QW21sf$Z2ʰQl]Y2ێF4Ap"ML2Y_qbBE8aR72%fiH]V<餥i!pB}VGe/2B?Jnl̉府c5HXt<Ğ7WNSnH5BI3q"]%5ڬwHK3ҥfXgSjn\9\~5奏Jj79CMwE-Q|qx̯JCjQjl3ۺe1xIШjN۴`-w)j]4ٗ3Dd d)"Xuy?i+5?,?JZ7o`Ft ư]Joq}u6tFZ 8QX4Cug-ٟkTEq'23e *WZ44lR6U+ڳ![j"vHzX˲Ih,f ~Մ$zjzC'CDr"a +HJ898$BT293=X+ zR9GR'ƞo&XIJ185hΪ/bQ܂TIڻ9kXa)jtZ]Ǣ}}?rzTj>4Xku$[PDq& nE #}bR?٥o8ZT9h]0tUrI0W*2爌QZ榥|bI\Y Wp6<,n>(>XOR3/?x"4`rr~$AMs3&ooR35 ƒWe%`q_[˨I׋i|Phy77e8\ao cӭy2;+h+#u:|] At-yNс׵6pRv|5jzŜڥǷNƮtfgGW a}IiGH,I$?>]ը?" #$E3hF8A6=:!aVOTM:KwpDOBaVcɠ! h3ހpXhȪ[->-] $gZc+Y\9>!FzQ!;l'Ȭֲp6mzl9/ oEkOcy@>Ɯi8L@ Ac}-}s>ZF>N%P@F ( ( ( ( ( ( ( ( ( ( ( ( ( ( pZ}Pր*P5DGŠ 8>z>nig`6P@9D̿oN7Q=yaIhPG ׂ(= ZQwG/R2]=ʞ3ҽ<>a-zqI#Y)22#{t]Î>ZVޜMA g8%c{S5f].`wGT1=͛/J2qi:uw!tz4ha(oABbPj,f+uz[Y,Q!v\>ՖÞqzzɧSjjN<ǁIe<}T =6#>آƫRKRU6mEk>S-? v9NG5r=Q2'R131$f̍V%Iҙ7Hrtvğ7;gr>6J=>OfhbrR8# w>֨ϣIh;(`PWIdU$JvFUdW+EoJg5LLR9O^Kf@ ܏»ӱ+hrku?n0:m=Ew6GeUI6zM&6 F=NzF>8(\)AJb˙mZ;gWfGM~7RP8s&5"db+WIXʶ9rGFw>HҁpH⋝,=UXsF/BEæ0[m+]e*;}Gx^3=TS^KUҨε5( tlt_NM;Šk~X+ (rv5jZ*Znd0aFJVl%+#pNGojIM#έWc+#ЃT4c[/Ȉ'sgfZn+c8k!Y< f+Wn@E$Z!GqSL(زVm#z֑κjƟ2_-cxܗEe) TeB҉{ubzvg9+FKe#}#)OyrtNh^vsސEvT0 e\;Qy;I P&dց 84CTa@ EI>`XُER*ION&P@Q ( ( ( ( ( ( ( ( ( ( ( ( ( (ꖀ@ |G3Q1hkQ>_miwp7iP@-GH鋏^~:QH2Z\&'jLrJ;Q #uQG1fW޴RV..Kέs Ιsl~=cƧ4duVP\U;YJܽ 5GlPMudU'Lcab]):Er Ĉc>>D\Pಎx"'hk1,zґUֆ dLudb/$1) r(0}HQbyL݊FnMpg*u942T''5Q[Y%[ R=l>Ofegol AtF\`kv*nԌzKs(6J.UG7C" M39JRvg/BSRL8\2#5K_Qʝҵ #qdGB*C۵wSU-z,JB1_mx V<@HbT+u5dHмQg&i4yϊ

    ᓕoQY9jӊgi( Ҹ=LtPs>܍ۦߵ9eV٘[C6+5FP/R{UUXx^E/4t #QHtæ) PܜR+x=NJr2 a!?] &qJ 3Ҵ\u J!$VW=;b%PV3N襫[o@yUCW8W/+K3v=mmd;3OklBt{!9ńJʤKyRI8>&K@3 .LܧKMX]0 ٘Jh5E5x3[>;ɪG}hMo^i}t񴬮A~t騫L>֫^Tkx1wtwQ3=~2"zgdgk~#5+Wx]p aݣҕ$ɵuB*#dWcȳkJ #Z3VdtnmAa匁WJW: fUYx$gRm=.xƲ|ᘱKIlzqV|wŤ s(<<ʹ"Clj|n#4!pHcpiB (A4tT ;ٝB Vz9ZІn4qAra+SOpTƹuQѬ"~ě'f p횉4qzû8cNs8v\עLgN$Rӊ$8M^d +n\*UJ,P0~@7qdї2:F_cuSchL ( C@("flbA4?E%(uK}5..I_=+3:/!+R@4"m٥=ngH.K+U3 t[SA 2(ctbO"<3ɧ]:OBhBR΅]cOKonA2v4s*iډd-)h:WiZe͹R&cRB*;XJ&֖MEFr?z=#˙4&ܴCϯ>Zq/yYvޟ9'Zse?w=53?v\$E>t`s2A^҂S5!N ƙX_VyWpϿzjBT&4ߊ:dA@~F9,Z?vw&n7cW:Xe;mN{XRB˗i h7禲̚uwu#s9;Lr bYlXk>'[S-pϚG{yCAv);?3H­uܭ7+Dş4!"WrϴlaNԕUڱ\.cwҔyO2ws+wawS4]@'ZI;9M̱ڸ&y|- Y>d;)&?E.@"ۢ8fiMa" \H:coך N:ז}[WTt$L~ԛN")k5MpTϿJ%=tp'wWGo;EF}*%sP״%f.΅K&qI_u -)UiٛRiG߃=:ĊYVg]e:3QA+q=Vrz_D8 81<DN2or;WW#$'+Z3LuK Ue(ӷ1+8b%ޗ wqʞd2N5ƃ [=࣒ri)XyQHeT1))$xvݎ =YѨyccaos ݴחtQS/ ?YqI ~qUpm#xfFEu$eՇjR}hPwGWM#{8zgCui2M0zo$Kj^!X%{H-vN<_TnI\S0]!'ڹgN9:Y+K,<ɎEcz[b-~ XSkJi!HZul.YʬI<+Fz M 3ҩgsiZo$g$zr+8*"X{}f}5oY*m*SgoEB6'r{c8k;X6HgcJ]Tm޷^I%6?ag N;^[)UAdj`)[DRu46XRb)'ҵfX)y>gJ)jxQU\uf `t"- ME9ZS6/ܡ,}s#DijW,sf|N1TY9Z+DZmܗ3"X+–Eȹv>l&MfKtwmm3ռ Y5:9p,+Fp0 υ 銡:m; ֞Uz}*h()ށՍ}-ۧ֨3RhI@P( ( ( ( ( ( ( ( ( ( ( ( ( (-hP@^Z@5g7σ#N赡6(BЊ:-ۼ~<Е# FjF1'^; )I8!7p$eNRmjM|Gnʻ$HՐ4.|<-pY:mh94$KՋi[4Z] YUrHy"{RkWOF`ۆOή4d>`Y)r[GcGe94 11FȄG^2_ \Ϭس[B0uư}' ʁڰNJI^TĶ#9k&uQ6]Y# FYlץtⲓz*6*HFd5=R8VqlK2SJOv,O_!7rJcG!=H~KrޓKjGCJ9e#5EEy$dw:mգ4vZuZ*/[TYٞ`aenQs&=͸"G|$_Ee :-̵2utDOSBYmX(МuƢK_to5=XH`0\=W<;CncD]3r v%1ujz<:NW:!QV8GE%0֮= ʽHO= >ٰ\7 zUS+DvK+"I^-%K8.:$Xu)[[A3 ;ӌR*!tv8m"Qz|Rk*xYtwEC}iQ1ᑘE}-s;W%vAQn 6[tٶ`K;f|ٜ |ߺ{J.R,F,Jr{@`݅BaJ/ټaORCe6(P=(fvfʹlc6UgGkcgmlY&N +iz v۷"*= x#Ou#I eMQdpaw=ѨS=%\!{f6B"Z KSЬZ3< `Zfu4{t~tUjǎŨ_xoWٛ\ݸyuci 8bWF@n`yhcSH^+fUޖ)s3V'Lc>IT^71ʣYK~ƌ]Gv3RhI@P( ( ( ( ( ( ( ( ( ( ( ( ( (-hP@^Z@5g7ATat?Z,֌.ؠ OLdxt}iִ7$q֧͊N:U݊WM;XiM1\s8$1ВXVdlWBNVBj9L0~Mk U0d4²  \26*)K[3ʭBOvͱH-7$aB{:/ q)o2 TtXj|I^/r;;(c}WzAղ2?a]r0<_EaR1ҽ9tp{WUB3JafCh3|6& Q:6يT2[k& (HP ˉSOѮ& IqQ%c9>%mG ] 9  \#^ZRVãpG֬xYGbݥP}qRtw]i.Y8i#ѣefZA'+f|3kʙ50tlF\U:ǚjw9ѕ}I4D}SMi$uQԧ χn(ziz0c-̫:x>-ҺYH"2ٔ( *n tWk)Tw)ʞ"X.aY1JE3nT'98FDrS+>9ckLE$TlEz>*SoR"cH+3Q+;-IzB4meYeA4r9`'CEmOc:HpOj$10=*@Lbܚ`:vIMqi1웪MT~Dg>o_ʦFϣI%P@h ( ( ( ( ( ( ( ( ( ( ( ( ( @Ay}hs_LZmZ" ڂ€ OKexuC|B gs#) q#6;&61;-rNFFEjxwY(2O&Z3cڬB0^C))an$=>d+MC_J|NOa'ThM-GK֧#H*Iki/0y 9D륃XO'"$4jҹx23bƢXe xb1T}i-՛38El[]2, (']U,aꢧ3XcؐYß?*^њ}^%*U*NW)QHxPD`Z#*0ڟK{iI04ݍX 9vхe#ےH܎^xAءw8-Ͻ\78yf8(ݑV|:H=:byu kGTL>duy&gXT*·;ՠs֥m/액X'9(: !+$ukSRG:RFvvR4UltSvuZfDK `]5;ej^cSS?/~V7` < :kIcNII^PT]Jf&8qVzj8bq˶m4g2Red8;yrҜeIMXx|HSҬf|g/zDwjxRI%8SeYOQ| \os*8utjX݄a;3x{Ppaf=@5]/tv^\|b3ߚʉJ}Ob tX~c2嗪E3b+ő 2O\xjMC(;HɹvwSyui#ju+EZn1՟4pjŷ&4:1h8b?JӥK46Vyڪ:9>'BtF,OV-Lem劯v\EE+QnPJKҶXtC2R3u]]ǥ7c(CớHP|ӽt}yMGGשFx|TL tÁ*PXdۇUCN~锱Tjcn;J9I\`W%V,M>/+ ֤.t"*RL'^K\ѵpR3p2G^AxN 9m|G5V>8;vYi=TU;MS3Ѷ"<0|30"6sT*!>Wc0 k9ntZG?Ht&Q*ڣ"jeGm,wC1\rܮ-M$e;_S6:(X1 Sp8ȩ4zPh3jd ADT2M(ʲq`?ZM* 6 Gw-kDUqKtågK }*%u;tM[#.H6TGfrX>]D>R F-R;V It1Ƨ R6*nsI0H4y8_R*1UQ=XL&2CRs7{-ĊBZVG+|{Cy8bpS֏!O-%M}ϛR ƥ{,$u:]ΗymJȥ*9Z=&Ik>voSu:#NS)6vTJ>*6jNpqgrJ1O\Gh;B ޕq/ZI"qaFںiyd]BaVhI9( u\} xbV[%?nQΔbˎGCGKGs5ySQHWU"ї<#iZEI~BcpȪ$8=Z1;m~FxEJ1_2ƚGB=(V sQbP11Ǩ麅"֧r?z9kz}^ JRg#U-Cw0:վzfU  #}Њuck<>kIVwRUۀ{f)wJUŔ\A @V\SԞ]BA!{U.Tfwf%ikvccS6>sTs1A[43cЍ HU:aj$ όcMqk$ 7ku-ȓy7#y9blxJ* gtL룋֊T[O.RB~tI¤Oέga}$G;' 5Z'5[g)x=@,6- +|*r7ScC+[FJ!ͩu GԆFV( b+Yrvc?ZyU[z tjt5,5{DbElge㫀U:u#suaٜ Qt@\*h_W58ɭ,0`1Ws?Jg:U/ ,m9H#9ҨMхH;ɘjyh?sW )=\jO0gUhFһaeqW_^hKé@zV'k1t,G;2F,(K3djx{Űx4MĖ|8=@<ҞMԛ+k4.\1KF{\]4eMWV jNǗi7{Yrc'9dqMsu gii"X/*\#F_CRh;"sm4x3һ,NH4# @aNǙo8k7e}JXLqcqMZUc: Nf<}3<3N$N}$y[\Z{գ>fЊ.+ #Έ Ìɠ,O ukFLq BVE7 QpnQJJnev#ȓGNE DdmW݄|]W%:/"th.˄ʸci$uҤY@.Q{FyS.gsмۻ<+i'{_{4j#{͖֚24o.h :[$ԼѰV_́Ed]ѵ[|1"|Új$zO&eO5R=DusoVy^>#`9%cLHipO=DN/k3\ 95G( ޻KRM=K `~}6P F_ Ys-h?+8` F]I劎(:-eXSE^bp>Q@6OYɾ{7aǽ/_Y}K{Wrzѩ$$'0 <`BP;s`#K8hhKlS)ϧZh?tntk{8w:d}O]9'NN Žp¦[\9>hT4Ţ8v,H=g"x\MŴ6n FSq7sN4p8V8"cra *=*L^ _z}0:VC3sR]'@NP:C ҟe_nZFV>N%P@F ( ( ( ( ( ( ( ( ( ( ( ( ( ( pZ}Pր*P5DGŠ ^%Ǚ-dƤMZM.)IA@x,YۀpOeVԺ?i_|ؖp թ="z4>{sǫRx"OG$`M"cJ_~tru$4'В{R5Vp9!kUM5_$q[eʫ{Wjm|pUٴ*&xwÞE|eu zb6SCOBv!PqYN|6DI(w_KYj=Xwl(M =9 kC%sEKFǗhduq9tk!o R9BHX5ZMlMqmcMw[6Db?SJ*Tc/$ZH {݃⏈-k ]ʴ71-58bc֞,5/i>yB-SkV5ü1X~EKt˱x2@&MJx P9nٳÖpa1gFѦ22t W9`ЎGpIe]xwұŨqԬcҀ; 1\z-2#$TmQaZZ5_|R:CZZы: ysArRQ8oE\Ti1nlxC:&;Jǧ&0}QG+X t->'!eg9f_仿Gd3Xh[Zr[نȓf$aQéjoxJ#Mq&:s"NXWR<062Ҡcq4C\袹_+PܻOv-kdzt LuQ7h[l{Ve#_ ΏjεXgvgm Q%qqVR=&"3ZqVI%r=ދo>3]BmG`WN%{e2 0pWNԕӏpgռKE=b=ZtZͧ]"] rͥXmw@@\8{&/Xs1GD)Xk>v(⫕DaxC\ED(+)\6mo^\lκ!ccg|5}AF[ iJhÅV Rf-d9|.?}4{CLڅ-&I>DY4[2~;p #-S(ǡ$4 ea7Fu؜= ܞOS[iT]U\ oxsS./Ãv=}oF:RM2jltY%6z.5-D1cQHOݱO?(=Zϒ/trK2\h} j5ہ3=+*:3Z 㜞.^s=oڲqXK,5{z$_fc\phU)xF[!ok Τ޹VGAtX&7!zXC;u;㚙$t2/B֢_L9^_x\SgOnѯc_-mLsWl2k!UkVamn8c,P=xYzVj[GwIdf]?SBLianKjam݅##kha)CduBQi9b/9^sV .Mgsq^ʌ3q>UZ[r<23Q_3u:)>i4Pv9SQi]F_{h[*1ڑ)Wϫa"F Wn;F1p^"<Υ,wW-H339Ki2`5)W3@)*-InI2XIjp 4XCVeVfǹ9-啹3TH2JWP2Kr]h@?81f5sB=HY^\I'CcV8/l +"kJ*8]_DO` #U b{zM1dIe[qjG:ѾϔbV*/ ;@\x"[0hV<@躭 Q l)y,˭\`ɰ^bM#րWg40@{Kr!NCwf͍ێ @ *H[ 1׌|y #ڨ9SZ͞94XV;F$)Sfh:'?SBiń7V̐l*g!ؗPl-gcHs R^;hiDC,Fo*?\A;H hUn-HV(8,4'Ҁ xػx?Lt( ( 4P@P@P@P@P@P@P@P@P@P@P@P@P@P@[R T>R9&j?F-t J8bUQ mĒJѤ0[Q>U_Al\nTd#{m^OMxW{ .9'Q#)^GYkg qI鑜W$s* *Ќ}*NY?SA\9xe5[tId3ƃs/ִrT#Fv =Y>_h:[FzvU݃mTP*t m (4KApGǩ#''81r=) $T`[wՉcTy8}rPϐyu3'x5z攺..bb>"t8P`yϱ;J|hID=sb#R|c)>Ĩ IAFŰXQ=*vCrr}3A;1#km=WW<0R.\/{o&Jzf՛@zҹM [h&Q+w*'/ sy$WQ0oƽZ5GJc d5rP:RfeΞ1-pWXa,Z ۫,t$*Msp*Z6*?AUbr"tvUM„oQү@j pvGH\GdTq@$0 $h%si#kC]+*QBv_Sb#qک{ Fh@RTc9cۥ2ۜs5zق0v74KHA\e Y{bUwݍhzi& y^4N>F}}(8hI(=*9@]*$V? QGx]\ ;8y7b[H.Bdk`~U)Y&o&˲(=pi"8޲e)jGY\;R:JoʹY9ׂpC'A K.wP+ F{VUK?lVLҲу;3n~ǪGp )8t@ {6$ ֑ s!#@M:eX.]07;Fi1 Gm#O4)7 ><\ '+l[O;a֠PXdR`x7m1$l4o! Q3)t OY"&LL6yh[J޴ʖ#m2zr?պS4hRX.ɇUQA{G9=``gA\IM ۥ }5F{kTҙ t4$ (P@P@P@P@P@P@P@P@P@P@P@P@P@P@T(/?Tk?ы@W䑋}31$ƹ&"6 (ƿh<>H8HuՆ|˯xߘq}*ߙ=\HzM$BMD"@As*OW Mjnl9lSBCcӱW-Ƅ\UyR!e.~qҮ: ڗ@n?:֪IA9E΅-Ez{"wcEǡ&(R94\mEځh<C9٢vT3w"䀐zPR`vN*FحB,/${*x>vʎi3CY$kɼ|#qq89%ܤg$j$yݒ{Wu8|*xyp/e/6n# cl' t0[c{k{ű,sb~cJ/Op`kFa!d֪j࠯7cPAG#sLr0{ԤW3FLZOc#M[h3VѺ<4]Iz+kTGjj6'>1d=)RtŶ5*Q#IA([ܚ٫kڅIʅ5I"pGJhsʕx]ve*zuZeя*L|{vڥ;ZΌC08E=Yaow)󲛇R N>WHsOTK&$j FǨ)xIO^H du=TL8yGF\osdnV'%-O3U85PmR20v#cW*R=N^6_`xӽϭM8i'b=D(Ϩm ceݒXtSV ֲB95,K=i5q5w5(nr7`6C-$څl^ݘVѪӹ|<&-Zqɑ?һfUˬ,hxd^0º])AHPH~G:J]xa$j橇Kc0|GVzO{lBޞ>Q.[krۜu~*\6oBܴj+OD&ٚCM3Nx}^I NrN'ñZxKD*@/+$sÝX!i4ټbh), g$Rl7r6 $RF2dz8\w-ZI561g4n|hf8N=Q9+c;<;0S3ݧA"R X"Mlyi5ϱ:?dȗBx<0i:z\UhQU]qj3zI:ˡm-#p껻B9VmhJ.%giXTOud Xv>8`1o/Bd*?SJG#6`f{gW#:MQ&(ZYEsF uƪ7zUa8d̒I+6|m|D J7qyZj$5%HORՇrկ6+H d2=s#P)NC4s'$m)2IqI)' \NS:[$[lӝ_^7v)p57w:cL%]lΗe,i5Ă)'8?μRS6~ԯ][9+W>etkqhBu+ z882[{m;wN&1S\Y~27 dc9k;Rhy"Z궐Û$ܾCmz;XcE#t&Qڬ# ؈=+R6Rr h}bNxmx^8>┡cJڛJ Z͜-R>R $"83T]bu Հ! @Ph =Z#ߊw&p>ˏ[9R՜.3>4yNO`ⱒ4?IF±8<0:yZ%ʊ$Zf>'ƃ2za5q@F}MbQP4#&(ϥ?c_t25u:TP@F ( ( ( ( ( ( ( ( ( ( ( ( ( ( pZ}Pր*P5DGŠ " 4$X@=p#Zr|ͱF_/x H|4UIXSh|Vb95^mjk|9Iԧ^h'_j-Ds dPl6 m4sӄv#Pţ n.Ò殫Kc/PMAly5(uqJvˋ,@:WLdOI$1C4ln*C,%)n'5!ԧYayY=I0V y b:laɥ-fΆ@8ExZŌkIXѪW%Jփxq$ -.T|> uuk&d6޵>٣Ԏg+%{Y!c)i 3qVd11Vf埉'x]sVXѩ^Wa1*K&?MB ,.-<)DMMh.YdaT9~ n,ֶ̋,ѡ7A.Yu/Dʪ ~]0la}.WQ\K}Z"j:͚<א 6Zu/R:[z\F!PH[h wFnWS+YdH+Fb[inIa<#JHN.|F.ZdD F=GJ$a 1mO< bT:#෬ΒhIDĺ=frK"gVъ,YB4{pO29") |{-%Jsή2IT?Z\H=7W\Ɯ6g'p&E3XʥzEؔq=jO ܵeK{I)uBd ˌdsM1X[5aH,bC)  FX`2i&"\D7^\ H˟Z) ni#e4ƌV_񟘎[) Y,{.  +j7 (֮-ӑi$fK;lBem͸FSsF'x5wmeurnOc57G3^- - =7 A`MS'5O5`ūƯ/i#$; g̶YF)P:oI@[^=GI 5el8aEDݏ]'E%`nVMM@t36 $(9|uRmqu CjoJ MxNZ6۸" ?7G=ՏY|K6ۡԭ29F?Zu'mD42شn_'u(ua꨽NHdžurT;q_kIzq*ӧ@wH?\ \P4I cZ$Miu׍" R gq jm)GG*R xE-M#ah<|VTemelfڒAGMXO Ifu_h.SU @|/ic& ?M*>; N&P@Q ( ( ( ( ( ( ( ( ( ( ( ( ( (ꖀ@ |G3Q1h{g>Ns9k@4P@:z֎~{<:֔ny,+A;ekX8+_jtS7,ImzH%9Wv9*0E_vʍ k$Y<ypA)Fc;Aaq[ŸbkJ^/.1|TkP8S']e /O ӯv*G;GbۚV?uiNi9O(׊^щV4!K!*|3o#u5[2Q9ahn)ɽN{@g4oK)WR# K18<΋'ұ^Ft[c&᫤D<XU)4kfCaԐjWQmvX}*NkIe<3x弶(eB%ߏnSbf)?-U<%v8婌ͺH>0=erAܙ,_33_xIYPI'cB3ug9\\"'q^e ҷ70B{K +H#!W&b33U{JeIxdE/`RC:ݜxn( 84Hb0qOqk-\ R n9;ټI m1"q6קM5N[ꗦ17־] ƃ\j7RƇE1x?sr')aú-&+Y~cY+c:o ;L zy~[T֮&Bn vNXhǙ H x O7a5ߌwpؿ"÷#ץIsH`Q:Q{>(&\oo9瀥k/#m2ݧ lnIy(h=f urXֱ{\EUn[^4 G8P1pFId\Ls.o4ije`%B~5:)s"{y/Wemȍ@e ˕uΥk19AּM{tsG%k>ʛ}A$:x*ݜKP!b7,@ʓ= 1GHĎڢ{Ҙ] N- 䙞%IJI)ʹ;~Be~ܰ'vjTӟq9W+Uh(cFv~S[e,#6V/<@JӡO)ݪ {ҧ*Sv,x+EmAT]c[@ZIe4ytȫ4aU8ߩ0Bl>@+Ck#YH쒨(~*w UãiURambKh\ƋX,Q Nԓ(EE=vzԺtn SQ"Xv'WuvWj$y@r֨q+6}iqT78`{t3U> xz5xVۅumjyΩRQ71oM籅xLKIfr 6%2_)o]}dD~(D|IuVH?/=@ ~wޡ1zM @E㚢9F^%ѦK4iB )r*iFyn.n!n0s:e)`I2F;)/Gj!c͎k6v9KIyĿj9[>F:z;XӥRw19F. O^THw61DжcҀh0ma g@0eN})G%Cբ?xZ >/O&5Lt, ( 4P@P@P@P@P@P@P@P@P@P@P@P@P@P@[R T>R9&j?F-nxO7^ywH0Ϙג2y?S ( a[ yB#8S[Qx6zL3!N-n|ћof%x6W-K#j8VgUjmesun"OT9.?_xE5 V5V8KOk 6nۂsI"l{mn8@Q:i-M|㲊 =GmsMc բ+2a:pI;OFs[?Xݺf%NW<;ǺfFIM8z6_[1ý$ c< ;=:R[()SAa4YB*!FGn6K,+SГJ;UHbҋ!Sd^Keln)HE5I$k6L,VӠmePsڤ4rïrcާyATyP242R%+Ȩ:qf|Щ(8F2<<)=ab)*I%st{T*+ T4)YӥR bJ,uؐ;Sت8+>z)⇗kTRG^F =7=7R$ٝl0c'PF{,nyo>;ܗFn,;y'wMfIm!M.Sp3ץB)ڐdjSL'EdG5Yvu̅Mе\E:yV5+(Rs-OL(Q^]I]ʏ Q. uS;)V#VJgxV4i֑*WvS֮%ZbF^jΛ&81$dfv~TĢ zzGTxc-OlP5>ɱY) lLߝ;ԥbdTd+*S7"Thʥ4pÝSȑ oS]:x{yߌ>i- ֘jF%YWX-Yǝ!d)qnca.+TgRqz[$Ϡ*X`dL*k[-Osʂ{ҡKvY~mJE.яJ䩄vGҶ"M/ Ý\כ]8KNla ɷɜؙ]i r:nSx6΍j#ЅS4UsKv&KXlVTOWZ$f1^::1lขٌ1zxLsvh筋w9;kWO,8Z9KVo< Xhba$5!+q&Ar) *H+yZQ$+>[U9ۍ 4L`z0qNlsc zd:&yM+LjeG[{^@gEDžkSh, }.SZ]#_hbEXEYe.{3L O<ҹv%\"*ے. Y\z U7J 0 KDn㵲rۻb[\o\k bLDy4 sS ֓ArXzM#E~S6}$cMjSZ\"()I\n%v:M0ty2x5QM\nlX~#Ҫ=RG3ub0Qd[)t8*icZ݈!՚,۵8q6c42[}A2{3X\IFE+-OfA&9Fi5s:-9kc TueO[FQQpghR_x6UYBcår>s̔l\B+ |c겒=L[Eprv暱 ũnrОO5tsVұOW!eiTӘ@8yqx\^N md.kJ1izZ){N/ԯpBǜ0`4qژ ۊVfr$?j3n-۟Qʷ|LXݓ71NjKcLOxh?VR)3&1 2=1SXk3Zcӓ[WG,g<7!⩫@sRXLs@&Ua]k@tP@%GFxX.sZZ&&>> G_kHz*J$XTmirUM#PGGsX-S۹C}+7Ѐ!ҊI.NTL&_(: M8(]*PU^>\ϋ1L04v;ۛiЌ)E 8Fx(:H "7xw )ve=Q>ӳ4@4X"ܕ:4$NI0rWNӸ`)g I}@?KC4tȓ*L&W9a(5XSGhp_ $y7խ'8io_[6TW\'|f`AfInE>ҧ=H#uSȪUL9S9߇s#i3[F%Cf llû'ǩ[[Ck$1TVS8E-NFj jeyffG'Rim lj?JT97 r4ǎBC~)[! lF)ibiɞ])ȣڋU@F 8I])jz{np|µiDxHIly[JsbO$֕ݶ:0P!=\='$Txr"%V%?EYuX RC.mVy#*Z RN$"XXz-H '= ;*7 $0rIׅhm bvM lcicΐ,o r4 * %E\Yxe-n' 8f^>cg,lU1c'r~(/F;SV:\Ebyl9MDRv5&Lӱ{h!L֛5$HAgd]kqwQL^)F ([~R w#$+jgΏޒ ( C@("flb8^?Zڠ  x``ql#v>6ߺ G5cptuP1\Gs@$@Cr(*fqcti6ʙ2+cN~tT>VCC#Y1)AYatZ\H:yP;ܑx4 "{͌UPh3CSW&98Hl.g$,h;WCiM-Ygv2붳f3ؕ<b6`S2+2k7ʀ,qڙk!!1VmDv ZW^],%vʺ!#̭I5=bN7]P2(=gk_jy3IJZ#Zi'pC"iw@*G*VM zmZyv#rgJJ'F.n,~~ 6>;P[ZN KZG~eǦk9T;[+=E#/[Zm24GaJɋ_V"WyLNw;([.=+#k*PF6HM$0HNDwR,$9]?[[Y 099Y= ,X'ΏO8f]w#SЃ@%TzL5H :$ɔН^' 6|I&Xn8 ɜx!rxAuQKԞSѶ3C]iO(K[]< Fu[Z\&=k7188*O?Z.wcPATVȰ!xViBhw$C)D+izOp/&3- D0V$Ph?JW ؁pyM鵹%lm 1ЫH`|M-n#Z)\*& )̝oÚf^Boi+ Z2|]1{',Shf,bבx<2gRĵ pgR32+? U9&hxalOm>[}5տwS;Z"bs\r3X숦iZ3qFUej/k̮3%zBv8ֺԡ ɤnFW@NU:z;An}:\#\ա(HB+=+5%!"%Un\ƪ7#2U;Ͻj_3$s0aaϵ#RZ 1;!\5Qiv=PG1zj_1\@# UL稺gg3wu2}^y9'ij>QǕwHn"cW#Ӷcwޓ4SԐEd$<$GGHarkGFG_pmYFB㩥mR4"Q%e8`zVw*r8MwPԄqvwZpiUe4-Nf|D}bnc[tOn A$[j4 wdSԈpDAނdZϤcr xdiLq:TP@F ( ( ( ( ( ( ( ( ( ( ( ( ( ( pZ}Pր*P5DGŠ ș>@%xa!iÛWִsxfdH2B2n5ws(ؖi,%ef?(f+-d]BYLii1QcrA-$̷E7Jĩw-G܂i$g*iQ h"ox㾻m$G0xM\ˋBMV'|B GN ]z/쩋t4\ R xטW;GZ.z~dI4ѯxu;.o^R"v })N.u Kjyhr3"1qrw1c:t3Knc9LFڑvV+"YUBm>0 j%Wry:ܞMGFI RCsNuՎ?ȵWi)&wnYhyoL".2p}ev=#zgz8Fbci#חQl/ǸY\Fj >󍈃#Mj8MuPV:%0I=8/YEI`(|҃*yխ ՅגLp1Hit?9+LuEWBt7Tgvv9nr+# #QzXޛM5,⨱?*C(M^N?7/.kXQ掍[>!xX%fӤpLҚ2*1=?MlI(8g-I֩v"{NLiqp:F ^)V~b28%]Ot v^fesWrFNsٶX Isk@SZsL#6\' xYCdc^A[^~n+&ٜJhk!hQВJӚwbSKys kQpOeܻo(-ޏby>g|Ԇ$w;,0)pqEM H&j[#e3%3*d`h+[R,>H`PN DZ jj,Bgbc1=SO3n<)UDޔԆ 48kRAOo*vh屷]tcu;MA8F(R$i\H ^5-J,K*rSqE^;73֖,s8'"T %L2V#֬!d;,B{Eqr>w m>h(PݎY6fMM#yQH*u\932ٯdzLjN>#(bh  ֧d.hFi) Kg$. *jyro.hM۝Y[ڶidJZ(}le2O;?q]f~#"r܅QAU.FGZM=aWh[|bO<{j^0] ?> pjQF Տyst W5˫)4ٵ vba1ڢ4ntj6cxc&|28_G9I= b-JJ?4TLgU561ڬzkD)gM (kq Rnj7b?dߩZTRij4Rc]Tm&veDC*aRJIt4uHnaK+x@9ZvE+}6ѕcNA;AG?-x9h@~R*;T@'uSjimciA]VZRbG,ņKsZ YoUE1":"W/ă_B 69_'&ZinBB 9e:sEi3Wtl?j(Loi,?^Տ!:)EUov1 ܃Y!Z(t}QYW q9IXj9?u.e)` F~W"DJwG=] h|Ǟ*`!JS&^[Z$r*וnkʚk "a՜C1T +++sF[]2^C=ѕbI{jdz)!V*0zz"yjXMT4p\ &\gvVTXo| bdcC,chu_sӊs[#qIVB1(zk%?U9\絙C,+a\i#_|mllIv<* /Z[>rePG>){9'-H,H9=J.ͦǃ|d<@].a,Hgۭ= V9'^͗U̪d\$Mp$ 5g v̪X%)<;h&zûqK" HOSXN=jm<>-Jm4xa5#1ⷵvp r{4 r}*EbXpOsڀؕFbKzS "2RA$at8=D1R_s1ncٷ읺3RhI@P( ( ( ( ( ( ( ( ( ( ( ( ( (-hP@^Z@5g7"f`?ZP|_)5tq>sUf|z4CH$qaa'vpӣ4Y۩ |$%B҆$':NrI:3zA-ac";uBN `fDc4ho.D2ux0H ?ҕz yR. $qQrh#]1TkN  unk.L)(怲0ābL5㶷D1(..ps֬(؊[kiY$ яj(!*Ua gbar:R/6ZEѮ֏g)*ƁrE[xgA-r6giѧ}G1nUY<'a}E S^^,FXj<ќ0wGCumqm$ p8$Y$}i_+.p $ݷf  Hvor@^@Hm+)JFIoBySZtKyk#Ta"xE<>2=VGm'y/e 1ڬ0Ʊ"8J(biU 9'mNXIZHĭ}-(o$ne* R01ǣij EOʡ)lK⫛Ű9`*W'209rI4Bm-c4ha@Q(=qMlKDLI% Rd <)9Kwc'37؉pj1_᛽F8R3`QOC;l|ao1)G * !;\ᵳ&H-AT)+DN.lUY{8XXpҪqEx!`A=i4[-mQ9iEe$mƨsZb*}$Dڝ1AV¢b5^)Hv)4|[8>ԭqF ]" J9I(6 b;nڳ&34]fsSCOMTEiZV֨tTujB!`$M "HIwv❀wT،JrS?T-ZHK׃ZFFS~ˋw gWL*&pZ:FvOzɓ$/لhB;m$4͹&9e(0)%—N/r[99<ֱW8'--R40Ie =c\8 q1_ܸmJtڑclX_yPW9#kwơUj˳o#9,RKA+>s+J)1` sG}%@u6=%6svְE[Dߘ-~[LPrQ$%2ኁ׵GP4,QTdur2_f՘o]BQqZ-kc F2REbF0qȦJ# OzRw[Z@Y} j.mSȫli\HFcչօI0'8$X}d=:hS.!q:VR(ShR;&T)[#~YIܤcɌ w=&1,o8 T#D^q oZ[sY4}[JkSz)]{BZFp3NDD K'*FzǛSxORi~#2I +Fs]*)}ZھHKVR8\UzL:Mϖ"s3lMdyI;åg-2[J ;c>[oATbW5O`|#V`2e V>aut^&ٲB=+kL֙D3ȾcƝ: :Ri~QB28DZ*+>+y ČkJØjg8<̈ÚZwPH,k?p{xlg1,W;$"L9 uiFVF*2\5W^ШyOtl]˂aªgZ'ߴ~+kY(4] ( C@("flbq`ZQwI86)PT}Ǝ&)<,<ҧH)}bQ3lxL13D=jxo8 U#nSR~ iouU1jk:2u>Tȉ`p(7Wvn+l8R`)悐@o[fzސ(%^s/'9/h_ B'Th8}PXs@ @b ZcSs^  CnRE&庌䎧<**D-VpeT8Qe;gxܒ0Rvs3n2ojV8c@ [b dz֝V[ϸ2}=Bpb$LnIaWf%>23Ef([:+jce`<Y[P-\!EQq;_ ["g ?Z񕑷j64>;sSP#/"!HUܹHS GlT2J^+m\Ae{2ǂ*Oo[ɵuC>Ԗ9רzqIks'ҩ|:җC+CSH?OcU17F+ĺ3jS4cbpSʓȢ:`lB Fj s4o\ >[έ ѱ͆QzWg#џ;|wcnrq+uC!^Jc P׽qXӷj;Cѣl櫹u;L2ԩ'3R[sr0l}5~[Jݪ>ZSN#b8z+. *iWep@>chT%sOky7(k3Mhz1u9X]9>o:P V3$iLm:TP@F ( ( ( ( ( ( ( ( ( ( ( ( ( ( pZ}Pր*P5DGŠ țׄ-jaClGe'5F!@p?Xqm'hPJ7j[mbkt! t^ KќUWcWQ;y*;{ҸSw=obG Nz"sUˏ[+#EBE9)i(:zT9<61.~!,RX :5(-~J|{ve>]o׊=Wu7l5=2^Dw4dUM=yMuSBci̎`Szĵj.+F_B9kӾa*ʞҖ8hsvm\y C4_M#4,mE%!tQt Fұ<&CN85?%%JijYԚ3e'7ҳf2B6(>f~XJۏFҥ=.FPsҝx-4Oh)fWopR9fipi48~U8 Ӳ1K0Aܓ \ !u8 #j2X\̙*Gw4(GANXaB)\.pLUgfsFfFOl02'):=,65Ť[ɬfh$wF pwSlo= }]C b0Γ!P#݈ƭ6"MޣviW䙮؛#0sMWK <&ASCSiT[$iLm:TP@F ( ( ( ( ( ( ( ( ( ( ( ( ( ( pZ}Pր*P5DGŠQ)Ʈ$TCFE%Rjss]]ZdeZdH\lw5k XD {GLW}b@9?6InbfXT{+ ^'w㢫ddR_鼇UϗqCa ϱz` q$l:R:UuG8&Ү٭p,3GV*).UzG/^#ԯi_ʠ"oNn!=7#sPo1544L(hLYXs - &x9W#ZSViXn}wU~~-ɱO_E7>(O -q{9t{w?q nԷ*) V9esOSv.[veQ`㴔˩í+Ŕ~1KhuWe,ۈ㞘59ksr |Gd5R )R69OS'9ψuNo]`$Qz_U}?Ber?UO0gVR~z\h-OBr~U}7FEo*K.vq1/rO«dQk6#ӤDeb O~ n烉g czQxΛ%ϡkt 6>l4s]w3[5|OZ3N?ZWlzʗ :ZVw6HB9rr\Mwv3/s3{bgqY-E]H@cF%Qn=JFTԳ Jztd\ۆ^Zs 5;8 /-LqoۋU+A*1x+h1ȥ[ۃEؚOh K.otկb?x 84(bȮ~m %ʼxap$SN)\9F s2y'sG0)KagqddJ^iH̊Tt$gx:WR]j-c`IcR ϔˋǾq!oR43I F)O&ym~+x&FAA|tFl,"X-p};}i\ _ur9_)?/ۢ<=6T\&4ugK54q t]xJ֐˧J)&f8)8QPА dm_Gpԇs9<뚠'1i-ܒw)6&S`7򴇧JFJ7%NGJChc]#Ń29OÌO)&:iV3}CpG&M_C1`=ClB2";o9UŲU}?]yesn'ۺΫT5I叼5'DLt2N< +홋֭qVd<JǾ0jʒfD>#>[1O*}B dŬr=(cƑn*lA ޿{JLM;[a;-1U[v:!S~ R!۴ yaV(]>#5Dº*3GTD֛v.:qG ~F2 Py%ԌJkW糋LI&8̀osWz35+"SЫL7 XɣҋM^h \xRI!<~DX\xl2ZyQfi#-"A$5SO\-ujVir#G!\v&$_9On⸓IJpsT-Oo kz vZQ]et~zRN9jW/o[ !?tqXKh6r}):4 Z92$V\u3Ybɲs"Z+L79LU4+O$lKܙvKcLZHdsґypMu4Sx #౷ucfJLĤ6OvpO򪱧3$MXtϹŷiU:^hA܏ jv¥Ȓšv%m;^DGҚGu,G'y_.E$&r>@NpJQG 57yƍڹ2$p6:SK1fI,1[+cB)꣉b=vd@*"֧ $e[I()1}@ғTJ{kO[;??a)SNNy1Ar"T`ވu6χ@>M.Dm#حq(ïc4`MGSGᏃcT},:De="1r'S(LV<՚ ;ZÃJκYԬgV+TQXNK^Jo$3E s7Pʵ=څoǷR_9+Mca; -رvӱʜnQÚ$>x YOUN4:@/Vzv*yIT`zW/KĜD6QcU7¡b,6L8)O,?/䄝Op?1g_ᖇsWcܠ6Xr:SD:m;>x#>Ү!HH>cgt$?b~(0J}{w +v 01b*Z|B'rx)rQHI~xy/s&5sGҦf$/9$OZW+mW|^84ơ$VkYNr{S9ӻk!4 3֚E)JF vUoRGa1Q~j]=XCe.K0A{.^\+_u#T9_V]ܖPA_94r_SSBӵ, kH&FgFzhHeNTyxlicX&/S)c6!R>)h?þ>&:u%%S6TMk;{9QT†;VF\hV08Rty^@GLИe#Ҵ2E4qfi,KRF?*b,p sw^]"F,ؒCǭmDN`'-V9dK4~ 4<-e&; QrZ.'sjг7ӹs,Z[ȧ0PAކd*;]:L[4mk[[ RZtVfZG8Elstj< H9-`6E4&I>j27PiE 7 $(0è{[i ,هf=Mi 6+5cX,\[Yw]A 26ϖB3N[ .opG29aT%`uu\;}j f2̛WzR$Nz_Ψx!#5)&Mc7iUk=XkWHx z^A%֣nZ|hokK+]zVڊ2K# ٬\Ln6zUxnF sM+!Rμlp4Db#|>gL\] Y2[ʤwrׄY%U2/A+tG3>6S;"0Wh3#|2= 3w"Z)m\J\|>3i=MF+\2DކtUb? Xv6BK{Q3ޅ+:G-Khn|FIqY'A)$HDP]^4. jbjo xR; _byG]QW:5jt0O?;+k;KwÛ,µ'̇q"kc>^iRj-ۑEvج8]'̬w1&sE rCBOBzX+3Gk[ؘmb$4;oQYVcb98riz{ iuP#amđ\Fz{\>^}$įc/6Եs*,}~ X('q$Mx89K&m M =}` zFSi 1Z>TfϧA%P@h ( ( ( ( ( ( ( ( ( ( ( ( ( @Ay}hs_LZWxAֵIz)| ٬ ([&_6P1{F2ex>#,d0wZFT (rpxW,qH=.E8 G#\SpZ6&PG.o cAd C$I徕W iE< t8|Ƙ JGOUsޏx;];RHvVDJ!:2O G ƪ&tJi#CI{J[¨tMGb965<& E8OS`\3KT&ms>: NTk|lo)pyjrڸO,i8X,3ު批L2t6Sgy×XoQq!58pѽI#V+hhwHht9\m3cw95c$p ;&~erԖIҠВ ( 4P@P@P@P@P@P@P@P@P@P@P@P@P@P@[R T>R9&j?F-t>lc Bf%)ɮSME'֬ (?i@Y|68?X<*9o ̱Pr<:sl8A"IۜtmjuIA;0%3"4'*[uiO}RM6Oa=YYzH64Mqk3NT8x zT nYFd P˯-uEajVs`S z(Tn3i< iC>:$c$pqE8P!E4jb1֨<-iú$K:x(QR!btLىA(PHAM ֓%H4Xb\zcdA&Ú"bFqRcBd }IVmډ-3t%i7ynd 10}+hMi^B99ȍ$A$Ov͑,}OA@² OX0)c8icw{VI<"hB:ѥ9/t]VKg+"2a Z) JF6'K6dZ}jeV:ښG0V|y̩Zjo+ Jobk#`z7tcKc*.7tCĭ1֡zjõd%V qDE(j&x)`Z->Sp#yoXu:H'ICH"Vb)1BO6PLqڐVysmnhb)mҘ=i4voۧ֬kOt4$ (P@P@P@P@P@P@P@P@P@P@P@P@P@P@T(/?Tk?ы@ fh,ij5y'ZQO^2€ 򏍠KxV Ǖփ(|CE$%I[(NOJxQ|h @4:n7zt)ڊv/M݇H$#9lP{4ޚOx,dvft-nY]K`d~4\Q-_535i:l%^< [4R}Qu]L1P;|H4Y[Eh4IHiís073o&lwBRl/t.yR5aPe:d:agXCrr#sMa .EK!>atFFK5KQ&3W cV""jz\!sXvGNV"pz*>"Bpg4*K{ǖs;Z=Jhtaq]I?Rqbu{xeau `w撪438=$k-om#Iz{DV3ȓr<`jkbcѢo<*O)N[p5UX֩Qs$ho%(,&cM+j&V\ Dg[w0זdYt8Gx~"HmKsP<갻:7⭼2h[(B`lxGc cE2# t]#=M;iwךŻ+~5:`wsd4US\GUQs3>-6-4RIVr8qWv?5X$.P*wcYFyfA]# >_4O5;9x{&>p)oZ) }X)$庝A>Z]ڴxBu9J\D㤞%+V 8e*S7l}uYyFr;5Fs|Ikz6%P+W:32 C![zք4:[ɵY6 ($7w.C r:);2[Ŭci0Lbmi $Ye_ǽyUR=j RMWQiuoxgx lw ʸ}Uh<[WSW>r{? HSM= qs?~fb{]I-&>g }ϯթ4r9F i9\%(d+ 0"4]m4wMTH;60m*[SX,ef-kOlyiHЇ"Lqw>m, I8XN==鶬h֮֨n͏0nۑYS:<_Z3O2BT+#f?DK7٭&d U#ӊ2uSgA?4+ki_>䯶vԍmJueսՊoF΅Fpp{s Oǃ5ϰr?JnaMJ=3znf(}pZ\誜˾!]FlEn@sڃ]5:6l5i3p̠(eh^ٴ|їULJF ^ʩKX F',$u:[E{hLGNrPփQWWTxZ$kϯ_y#E-MO*鮭vL,>&intF,(QA Sho?M{t}*efy*yS굕}7lZn$o$+n"xYd]ɷf\4)^業 Mr=r:U\ͥkf)zYf]uE*Iqmbl{kJt\/viAteBҴ:a'2Ƨ2zZH$C<՛:n2 ,>'y}:Б5<;q.qZv)4#e#B>ajZ4rdx_27㽰9,Խ&Z=_1m:MO13 tx )1`2:{s KUQF\R.F-F[IoA9*sZ^dyպS &̢7ڶ)cPw3EXͫF-JЩ} MN-ne~ҴNWfVܲsTQ; 7e|TU>hދkmM5;/4mmpJ:(7oh\A"GlV5^dytkI94$XIA=:Vp^G({u܈&Cʺ"c4g}[}># (0vkxL4+$bKi[Xa؜h+Ӕ"2pƟ=4@g+8mB2DZ6ȱ'́*q^ٟ,vGҡ1kvQTfqHU ;85jZ3:2dw@%;[¥ŭIP .@RI,2HJ%^di,pG5I3);4qt4H]F7)ipIneAjgrcpGAn}KL~M7TO޷%d\h+PM\e-1*xk&xZ ('֪7tу{ldi%60+ zE|"Rli$֌.~V݂*b-[NW$JdzVӌRfT3iFK-QgW2X7tL-8w3^1lk]iaaGWow5㩄x5 [;N4s ǡqBPlzf-l}v=H8:^ƀ-5 0] fUE-M  ׀xcզoĞ|A%$F[p^hn7~fG|-.+OUIcFmNC$ to3}r'XmHTkViZ+MĻe$׊53FտxAt%QU.uY_|‚=C3/'|t~ފQcTح"*KHI}nR.{ŷao^8Ǩ9]|!ⷘcZci } ]:8r(%!Atճ>m×s[;^&#*|we_1:`(wћi{}v%=*XyU-OF #q4,Wm ꎆXM_-R8R9$AV:eKܹ䨬RiL*鰻ҕ!$V׍#'(QbG8;JH8K(e6U4tZ6˦İ1(L uJ)1I+ 7qH^1I+u5Qv6fM|eC:Es]Z qY@$WvGUm=@ʳZxn-\?f iM:@U+hhY_n>֏~̸nvSNY,.`*R=Ciea3vs鋨ulem N:JϖVgڂc<WX. ܁RpbHץ` c܊oGKC=cOo[):{m>ePTB{vsGm[22F! TZZIϳ\J̊ 5<$᫉=: kRLd;ղ1rWF.ܦATL +RAH0cnZ#c)Z2YS\62yM1 B&t$|=fx~z#c2][N]/T'NS.~v39ko^;qo: O$4\i9O^@QuKǘ7TT+_KŨW{$S^zmG&kKϚMRpKcԾxkHx<9Ozwk:Nֲr6>X%OKȵF=9eY=sJZ _M)l9IoŽSNGk6f$$u]JfjeMaPp͎g[|/~&)A1$CZЗw:pgkC&8es3үM2xIhCe$6*dTE~#{W;Gڝҁى85/C;w1Z+ag{1Icm=k vIұ, ( 4P@P@P@P@P@P@P@P@P@P@P@P@P@P@[R T>R9&j?F-t^Y,S)Gdզ@y\s丧]ߡilHkG<|V4,q\6H$!5pEq0QjK1|y? j B2z+8,9HeV) :aM}F8ma h2&X jͣ]asʚGBX`$ A[F'JEC4$h>#րvbqԭp%iqh:m^ht*J9L*SMjtKoP x-zTX=[K4j - )(gb2Ұ縏q"R[m)=7r\݈S)G4ђ$@™HHF$T8G171Me쎼׆<#'u-!k.^f~`)+nXr5 HSV(x>OKDnGe|)z$Azy@:*'O\Th5f-- c^=+5 ؟VdD NȈas4HJ;kjȩ n3!ܝIS)sh%QJJZ1ңk:FXE Aj]rٜqQ)KEP\qDjBwe+dzUJB0*>A/TӖ>~ Sس&Pk5odzxzE@b%# q[Uj)k?tW&~3V' 6 j:dOCVRG6ꤋhK;灞PԹ#YB/=Zͧs%͖t a*1#> #XЧܭ/'Gi{TaƖIissltַ@bJM"wy>7Jht/, 5֩[s IEel-yc;Kc:IYu{ 8\SbIzL$ʑ?-a98 3nػqfNXrڗᥐ[ =k>TsN~D\E.֮1iD]*̀kQW785l #^9訖jP3A!*ȧskVH!l1: c _ 69.!d `5+x[LhU`;γ"  2BehQe}^‹{؏b3ARjbC!*SZ)xWC";TD 9RT>[D<$[Z,w IJM1O`PIhCgdd=I1{%{UyOYl Is蛌&$PVzPCk4 erE4Cد' H+TtW|0|~ :Oԋ}LŎN#5Q;WM,w5뢮*ux^aYV;Q| Jq caAdl4ĿhRzA\i/3L݇Ig j0c8\"G,|cS&hH ך+80<W cۃN75ukw3qZKrR \Pv^^ú|v*~^䁚S7Q$sЊֻymNgVI6f(Q}E}_ ג$l gq+nmrX` jtSGAIcv thzp-me4[魣۠8tCZS<}ީs{\o2:jO9+v4,r[6ĒUPG!LNR{ss;޿f~^)FF(:)ZlfJsM[Itˁ=#"gZcukcoSWQ1?0p+}*ٶJ2-[0^2] O:wQ4@ 9)ܩXk,nຏ!`V k:D6z(+J`\|nHYZ"xߔʖ^5~!h61~vu)hcQr;gvZLns= G{Kɣr ( C@("flbIio irg)2 TDZ)3NgwHܞqrfo,;]BcϱwaYr%6[@3Яj6sQ)O0$k3X& .yhV9jO)y]ƜT&MYV"=N%(؞7)Ê8}KzR=9bcɹk/gl| n^Y|Hc5%'tƪhd8R,!sJWʠaG^:VHg htFF-3T;"f51!T!*@* # hE12)nϰ5J9y'rl* wIwLwҙHE3^4и4A8H-H@߯4f^R(DP~|mhEBJ+zVQԭx9 gBw gmk? =ڝ{zԞ$< huTIadSFu†R"Hi ҆D$g%=꣑c gRZXB9j#d󞦦 Y*: sZY˻X'0{P[Ekm+oAk!IG(Vzz "dWRFX%sBLRT}G}BJ,eJ7 JȌdQebZzZÚAyy*  rȮ #*Gi^C(>╎x-nX5'Rcn/4,H݀{Uӕfp`P.֮w=U6 uaU*ӄ:6419] qKc6|ݫ)͡ZƧ5^q/7*ԛ=BEqwNm3|GZHh\Osȫ%E@r?3T+E-ddVFV RhT[zV6!QOTeʆHw6MKw3NsSs)2KOR:g=(2(nZdE$.-O=ͼ'܏;0k3Ļώ|@x}HUfwaob ?®l_BPrFzU 1h\P%Ay5̒H c45'@i3r! v9+29qS3E{G x4r2l5Yv8u8,_ 9\;OJuW]EHG"VF *z6ỳߕ3Фl|[|Z*{RVLPΒm:6D<ۣf)A^z2G,ATQҳ2MsY&d8<%ܿjlf'\WZJQFYm^GGrGV쐝8 x5&]l沅EsT=]x[LΛѴuƴS \4W?gito9FQkV/% xFAoS[uezJH`mFvNF:+3ڣ%8N7ܜ}sWt:OSF-.7,Q-NԕO5,P8BOSL$!gpt$-qmjClzmCgd%tX&|19_zM7uc1Wv* sV>{2e#s Y19YSѺ|@0);\֮;Nj tX_ya2 N:Ւn{Θ-/mgu}XXKzu/$:h?Go#+kzOC>[2;\,0qzsW5ע`\M*=qKQYp:SI] . n7KC&#2\K QzG ?Z,Ù,͂EQHz?r0 ܳǮ4C#6'ZzF#NG/  J ˷-{dG4P@;~b28$cMrmn$VđT6xXœ4CV0Z\zRp0RьK ZSc W?srxVO'zҖDq8kl%&KAGAC)V= #YgTfy v9RK [u1؉x̚w1VbFfvb]f>;HmBڬɑ-~Ѥj6MN9g+J hi oB_{Wؘ#4w9^_A ۖijGX,sдK򂾕\lj58M!u?$y#=GZ#ŶЈU(hMpov:NuD#+AZ|2d |{bHȡ'eO֡(535oL>j)>2)-j߇| jK&|7DҒ?y"1vo E)#8f;}$%hC3~]*n⮫H?TLHQ>a^hz'qY'`@iU$:=[[i;T7Rv$j|39ǿkJ2ycK+B0;Tr\N<QJHxoM&̎v>J(st a8цGڦ`ߖ ]ϼf/n*\P{XT bjHƟ*phK1i{κKơ29gQ%fM>ϊEϵ$$>I)+:i'K凨iū^U[ ?##78hC…Qb`<|*+ĺ: ԅ [েo&fnt?: yWMU.<'/h6Ilc\K-rhtnH4q様/8m__-srH ~qJk/gbE#^9PQ% 择vB8骂SA_<j( W8ܙ)6#ቢCդ'c Uz 4 $UFCl#/]Kvs `>v)>| YCF\KE[UBܟ $E 6.#o I'a@oLU[[5WAnm&i'f!}W~70 gK+O&mSvٜv4jMzdZQyF%zOy\e)U(TG?{j)C@p9.LةJE~.Q䳀O1<˪/ 4ԇF?tT;@l4O)d)'_mS&kMZҤВ ( 4P@P@P@P@P@P@P@P@P@P@P@P@P@P@[R T>R9&j?F-ox+# kIl0 (?i|4{*u< Via]M%WmpU94pɛq@&zmco͜¦1RYxKG_x#_*h^:G^D !@ù>@P]cv-)(U)0IQzYڢŪi[lɒBz"niM7zĨW$,K UDj9E6͂4倠Je`C֯,~ם>{t9FC0 8kr;i?1' 7<Z-jPLv}"lǵI?k 4i7mPIiucdk e7,0y6)IEjWB:Τ0\2j'iv1c*H*ԕIaY ]z=>U;&dz?maT2E*U$tSԨb@Ekk= |OёLzSWZv=.wG-\vZ9A`qg[ZFot5ʿov4$UL윇bDvc &ЧF)QL;BcQq@1K&G~J1V85km]\~T7[YdC=cFMl5d@1@ yP'ECA 4p?SO/2A2z4#c `x:W;.&Q48Gf|^{Sh%BRkCӧ5-br*ei\ҋ=17#B ph쏡YE]fіL4,=sΫs M@QWE)hkZ؃ZS5ʯjtaʎȍ݉F@:oٟ%92=61]敕%4bFpW\g(1\ӢU ANEPQp'?!LVDoA9NmqJU˾Ѭt=" 21r~#SHh7\hb0I"@L,յ҈.GJ-4*-R+~(6pQ,*8'@ONv!r<ދqy<<>m1ENԎx``qE}U$$#=Y (HQDf%LuRN9 $aփK XL3P`1;9%0OQJ|4LW[\jrHMUCq 9P#=aZAL$q@n-R6 jСh 67_bB Q=g;8Wb@'<s;nbA= H#iƷ&9Sp~aޭHқr{+{Ǧhz5vjzRڴD7V@ܼl`zZM؊XdP 4$Y_So֋qtg ௸btS7u{9>#qȭZV4/ JT: 栔t ϤKG6I⛅J}iq򙡔tdiF:[[)0I1ڨR-LhO-/ -bppE-8Ev^b̰v-A҉g :8\qA :ĐA]5moJ#=(=l4bӠ|sA) kSzǔzV7hIFVc&Pt3jl%# D(RYAkpDp98['6h4C,)6qmsld&9tfѯZSeHMV"8Ad}:M7>R;į[JVc|67X䂿y"#.bt\; ɒ Waph$ZeCjW Est!|\JxN+mej|i {~pM3}M}3^,ܧ,1>궺H)8<j|ō_"I$"x\t} "S}% *XqQ<9OIm2,O;|]-5 ˁ!qڍ"oTnn*9Ǐ 3?̏ Kl>˷6iLM:TP@F ( ( ( ( ( ( ( ( ( ( ( ( ( ( pZ}Pր*P5DGŠ ȟׄ-i-6)(o=??ua;+?xbϙo:Q.&쌞)XvX i X+FRٌmN ]IвpQHqK,s;vX[xקUoGS3"ѭ Gʃ5}r:=oǹ]`?USO ME4+"wdUiEX5PLMVZЬkɄQ1e$+E{r-"(sZj9zzsDFTp{>oΣN~H6~pTse|'-QZF1VGϊ0a-.Áȣcգ$L_[ w+I1ڨ E[M>Ęr1Z*wGLR/ ]O7LbsdK#]GCt2I ƒīI%ċ,T`bpocۊRz=7|M ۳ 4xj 훷͟O,R3|E)]Xѿeq#TJqGM>Ԡ>-ieV~'W.|uQxM )>r؜U(k] +d4lsry.lmnPudRGfr1<__iRZ(RwCA _9sj3qYc>=u/l5GRp~5Z9"PQq: ),+c tR=LOoܳcy@"7 Xzܚ&5Eg"2 ]&.FhH*9+-EV$B u#Ի-csܖqqN=hWh@#LMu"1)h@@6qEn N3ƺz5gVRќI{$Rvrcr1P:ӉR2SzuORye2I :x%zfN6;=.`ѩhZEfkC- UEDLp)!0>#bi, i6er  jv^ Ub޷ Q 'albvNg/h@*gNiBޅhd7SFi>o2Y@ZܖZ:Ɋ l%sV&7!aaJw05%+=M4E}Kr^D*2qzNLI2GHd/T;=~HRiړ2( @P@P@P@P@P@P@P@P@P@P@P@P@P@P?-> ( C@("flbP{P~|7oJO~Mʽz7RHQҷO.R/ꘒy &9la:Р/geafHPʆf=(kCUX7eRB.ccFKajJRHЃKPuzS1nVeU#4\_TF2Ii~bk>dM-6ssPubc9g'EؿTQFh'#уk9Q}攤eێ\Wv6.+n \qW9 i\1~nZLtnị^Qq u n@h0l/-4ۍh.z.8 hE=h XP$!l $8-Rh}BŊddh8jU/c?\巇o̮}WBa݅\c1&m^hu]Ƌ' :4[2 W8|P*S(nr93rw542))*"n Lڴv 3zgtaA5<Ҿчc*F'ZxV,a)NjA5s$8@ ڑHrSi> w! îF~!ЏS"X:Є>SM1#oM{&]5."Vd,*H-ک FoVD6AM)I#w+S*ǽm5:|hc,ټbR'نGUoWOHnex1ҵt3]Ũ0e;>rk*$cn3$?`1͏ D9SsLO[\Mynz+#+J\5˥ZimlJ1yjaTRQ;OC/KhR.@RO%O,#= C8UNRs;&bҁ78]UP(K  SSb(Bek0GfH2Ğ(E=z|^t*yғw)3BܙW ElDAѧǫ~r[HSϙiIX֓mN&P@Q ( ( ( ( ( ( ( ( ( ( ( ( ( (ꖀ@ |G3Q1h(hZKa͊b (iX/!`]8ugw /Ct$4jBZ4O#|z'SR2ª򝶗lsc}&#h5 i%oLbxcTBrFEcȶA95Q.#3q͗&"TZ[<̧ϔ꥖ԗ3^P:+pRr=.PZ!Œ|JP!O[tԬ㹹|=ѽ {WR?`~Cd48jZOi}j!?N?3SxT6qsl4#߆kKza#Vh ߚ w5xf˶͍ p: rNVSҭo._,zH^%EYJjh##]6c7<̥}E?Wb@ugb`O3NxהFW63<-OGJ9ݟRNsGCx|Ɯ4ceinƻS hMO06“+&k{m{<3A/=xWui618В'>QmuZe:Xd)^6ܮPd*ǩiZcT@13ZBlX65oi2Z[N">ROjSqՔ}GZXWhRB@G*qY]eV|i7k G0m:jE9D×^/t[EA='}M%QަAkc%mVg0)Ks4i"6g'$ZSd\nVomi_B TUeJZڬ'k&qv6jѤ#l_LtMb0VSV e"Yw=MFQ4mdy[Hr2p? ūkVneV)%Oϩ^eޤҌn1#VY;2airO̊53PfN|G<'c;)r}rؠQ9M%dH\ [?5}]53m(݁ZZUўk>-xn;aFcitty[uAPlD֗ s匲u  r[reIT5eŦL/"݅G= U;Q5wc@V8χYq=Z'$Ҥ3mFKkk1] dL鑹_G8߱]XEɻ[_g⛋nkm IZF}ꋎDYR&AJhh<: Ԗ8%- IL.L6piH3>Lp 2)qLq(|7mhb_'O3ӣDs\[DU{ABO$$;N6zAQAt] cĒnF޴մ&jl#>(1cF蚴$y=sEDd1Pټ;~)"fG,؟9:N8kh\OZGs`q88Ob$<wHTh^%S2԰ksۣdE!Z:kOM)^%NqҭX̰"I";$NOZ;htSu׋(WI.` }a֎Z N\F[A[?gͩ*q:mNAin2D$g$uxj29z&*ϵzGzM*+O%&q$F! } cIߙ4;,o7 (r뚤el6믃.8<{%¥^] ZfLĥgsznJ)slyz:?ܓ.mN~+TOCCGƛhFO\|ƓF`ռ+I'G;81@-=er)|n_cUJ2)#ix>wEq|)95)EcTgִ;h %Xvsf=V~d`FzZG*w(km'XQis9p8<9rRvgm(GKlVq\IreFe,SLo#mV ȹR}q' ]˧IkiITM#(ӴKكTRdYhn%KUl>H<~t D>'ҧ +HT$YmPJ?)%k,|=q@Y|]JLH),+e-I1}j["2ڡ%ZLvi cc:ikO.q {Z*amXaWVN6 t]^9Tҕnu͢.Z< KHpH͛pђ>c88r>sNqmJo.#ʘSrȸ琖M3E&v92tPT4θMشHN3zS4c&cHr?%`lz9>R3$\I/r|7x|/ -"2*dwg|еc S,?ш#IWE(2#Nǃm+D42X9Vz Rؘ( fϠS 788bҫ3FB$J腑/eǴ~άpfj0s w5 9*uTuwCn>SV>8xrlwveY x yqB}JF055YJ"4If,r8ȣVZ^Y4#Z]R{ ,Ү0H֞G%L g#JPL劥Nk0>c4tg0ZlyV֑-$W-g=j=Q߆Omk-W UI2muf.ŐQO)G |LmK WP%XwU𔫮V9 ֖U`u?ޮiO2UDӭqU(ǺRX\Xb7pP~^8@U-R4~bNؑaI&@ΊU[ӊ,i3gvb0Ɇ$kI5aUx+}RdV u$q=M2s*"D~v+m>cТ]6Hˁ 7֊:+!IG i`shluȔfaFǯ=+Ƥh_rJ7$LR-F8k [Cu#BIF~[jV=v%-dѵQ2*Вlo躊:HNeZv0PϹ}+ZC\|YabOA&>g;xjϗSh+rZwAqHh<[Iŝ^ Z<1D%:T>MnT,NGz:=SOlw0 jy]1ܬ\݄j\S;)IZ<;sp CxT .T+ٹ$"p ըI6IKw QG'c=hs%LGSt7.{wYTqʰ_]F:T\4lF U5qL*zVp6h*xXj.iܒ¯1÷l:;vwmC0)%˽& us$rL T=rR¼D @npF'zNa b:3F1LF=A:w4Vظڼa8*'փHjLMv}?Oqk!Yj7#RGjݴ9d}<iE!qmɩv5䍴/A~"}sH Ωm?7zf?Vԭ&}iZ|Wu*-kJ 4v,dg'?ֱv'c:#ƪ27ryG"ȳ@E`9Y'.zR+x 䞿-qrjd[zTԡiz[A]~&|&i ,fBN h4;rX X+J (I8+ٝ5`њؽ? Zi4yj .~GiKgV~eErc~8& Œp(r:zTq@ؼiqS @ ݀:Zc[NS(M^][km< cC9['BSFK1$18Z1KTwDPy؂EQRF " #[ E3ӧ2)v#i)S?nq=W2G/}MAK;c8 )⁕ghɋq÷>IPX EGZA#yx';zIVփh<0' ♡VSOj3$LL*- itŝA1NVء{i 8DcMءF r1ֻ)|&?hl> p3ò.w:ՙZkб;B0Ms*;}_CH븃5V|[u!dO^KL7~jAzG\dVYH+2*\JЩvVXKvs}E|kG?KM:fjnll[~_o.YV6+g&^UėssL>)G2DrλkyZ|ac9m[G+DI9"c9" 4̤82 hC*t&`i -1 *:Oٕ*&+,Ϙ* u^_(dd_(}6hQ![y-60^ƳE2Px!OJK5.OS#J}OSI%P@h ( ( ( ( ( ( ( ( ( ( ( ( ( @Ay}hs_LZ<"^0赥5(Wp?w`FEl)2Fћc4ۄȱ6Liɧ!/q֒L㔕ip!W_CWcjU(f6V\8=Oj243%knm;me3zэkh VѶjsQ= =~ݝyZ|$8h"J$9 3[~3ygWps60.JJd{Eh4_ִ{c$r:H{S86eQS p 窵~QcPWJFr&R/wMhz.+F7vS$\LkRcoLt }\ԭĎxrz~%kFW͜v:FSoF^E|rV_ˤz kc'&Vj.zXQ|wF:ʹrMex ۔ǗS״9 AvIXJ;#FnSZKIuM,MRk~ԌE(-Ѝf ^aedn2 4;%B h+k!Н ?qaǚW7Ox)27^pYv_1zsڬM+m%GZv%s2cPޑUGC8VL~+]y"pjky.Hqj NU4O+Z(GvRF.#Z7 y+N%v#{/)^?ũ},I4,GQ|CVDt}&zPjFz]JGKbZxGssq0 s)]9(:zM"5+M2 `cZ[S:uVVm%q>;>[r?'/>ࢂ_2=^M[ovǿF9Be{st?ZA#I敛W6i$RJp}Cl%cb%n8ySB%n_мpΏNZ0lq޽nuMfΘVDxĐ.zƏfΘC$B}󦩝m|gK)SXc"h\F8ygOC2oO찫%<杻q׽% k &tbtTJK@#qTGtq˟SX)ce#9)>qDCX jvg3{9Lsܪ_8'׭kızjW5'$E ":!n\آ.ay2p̤G fŽ [2xF{m"k1u;,>3iQ(=JT-ZnC&IQdBQo+Mg:ݻƩҚܪi6|4w7]x7swwep;g{Y؁MTS#r36|94Xh+3\`ORrM,c<opHa@&*0cО\.BeRǧ.2X$f+aO= *쑣dK9(/ @<4Zv"{|ISR%KbԌPl]AWRkb?Z +9kF H++Irn!XU;R輰W:{D.\H,I9'cM "0\DeGIiHmd,$0b6|7R6 -gtru?idu^)46"4 ٜƓ)eց LTqibV46#p2s\i3Z[X}5TQ{RrGN\ $E[(rHI蹵8Z矙5:mȕr36ynI߼J!PxFai"n?CYԓW.{G÷PKj?x@y?.v[@ִrQ~NysO{q r8[+7MXwD xz=X5MJ yV8gԮ)7hPI-)S4Lc5~Ssj.Q^# ; lO`*@Ggoʐ=#=bsjdq c"ļ#fm͒=)`X= !h֋nygҿF~Oj}>*M ( @P@P@P@P@P@P@P@P@P@P@P@P@P@P?-> ( C@("flbCO@1PP O=jUoB>OwU{#c`Y=EK9j_ӡ Ƒ\~rqZ3jɼ%N'S(uN}D!#XJ8"'Q٣ȩD,L6,m89+9@7'jyyf`=r3HW /yGs`4 6Y)L= ^ҍzUe س5+h㗳c1ú{]ܨ9b QM E='{vKh32R { mDѯO1C!iksmkE;#w֕9VP#ڑ&?=ٙ* ԊjJ*6*Ji +x}Iidf=vi-ԔD`jX8+U~Tו2NkIѠ;P Kf 5XCVw25*$jrgn"X<`.ޕihy1zEu•!4:dCR/ri6DK9ɫosL~}+NC1OXj OJ-Ėw2J9NWv2o}Ք+fwR "@F{ChOi[V|#vzWvնt5 8`r.Ee(䪲.^Ec~D7#C;J +~Ggqn.#~_j8 <)B oId~B1t#M$N2$V- gD#r9+0Ixs iv*EYJ*rSC۔EF!YKlrW6 ݚBL|^{ lheITV5ͦߺ[M:P/|g?κUsG2{Vh - odCJ#@m-h0E Ґ^ R'_lBڕse@u2<; i\{M$576s+8@OS MAe$tRB$ɟTYG$HސyϜo94Z5b)--fKKwz i򄬈_Opid #Q6BNb1}Ȍuԭ&ql˴2FR'M[Ceއqуc ڶ dSG$oSޛkh!cI~s뚣Haگ" mT,4Yx\o΅ _f-?m a  1KBܕh;hE7b#[\naE+΅OiYcP #CA,.ɂ(T?g_[XV}Þ 4m cm4s#qީ-xx';IG^ƿO*9o{$(r>_1sC.'3$DUqШFHd`sԌ| ʛ&8+C#JG<|]$sS&dVNv,**bvO|Kyl!m:+kY\ań,%}3Y s/N}K]Z܅njiFMneu,.c9 vӫ[Yäfm=kKQ|!MfOB)ӉgA%D\{ҵGGgq>+souONQTi;6 ,'Jvg eZ4QCr+8Fh[[F%Uf F: OC?7^L {J:Y 9,YةF1OŴA Zn +b^U%1 FsX'ITV=0ǩxN+{` r2xaQW<Ş6_i#~m֢{x$].xm+FCJRZ3ش,r2/VZk_X T(E#Aݟ>.Y:(Y5m @n(Aᾙg}tؤ ʅ!OS"ӹIcfBGӎ* 4K a8 U Z>qEi(dL4xJVqk2D㺄kNb 49c; u w .}Gz)0DADf\JvFWMr=oc" 2FҀb҂}0nÄ8PO0$=d[?K4}:R5$ (P@P@P@P@P@P@P@P@P@P@P@P@P@P@T(/?Tk?ы@iGd7LA@x.ʧe/e]^gݼC[a;HGq \B!<h֜HA8SҕQLѷ${Yª۷eh9+kRaWϱ斬Ѷ!U@{t'vQ㡱k esI19TZB2p8fEY+i޶2<ZL&\AWn82HHz=@wK2l=i$DgTL 0N*Q$~VR۰G+hUH@sTru9e;F8=*e!Ӭ9*HȥvY̬32UIpWɤL"hFfm`OuӖ HU,f}tb1\s=jE SL=2[f'a~:W<{|Rf9y&zwBIY[2*Đ馐۸ysAjMtBD68LڝiGcn,|;3}56QXԁQgEdѮNRFdzT:'},-Y Kqk%TRwS(j_ ^ u8Trnx[B T6њX_:)ŭJ|ȨS#+QffKZ#=Ws=is2Ey/arOڍHnk$(#s18ƪW:[}NHVON*wG -K1381*%9 fTRwJ3jVU+@$fEZ}J%dˑ"]pFd`%rg~rI^FXx|C b՝~ *k'*/ɐn+)TL $!aoG?+"ɻ{t]=SȠޗ[h,9EpJ(C1)a sL1w4_SI{ ;I+%;uD_-c[ r?„bާDXޙ'ڬ0ϻ|q[D">A,aZ* ĊbISGF "OmXYuE-zZr?36x$99T3"az4Gka 'Srg֘+ ;HEVI8>UvU;C<]+|5;Ҿ_5F.0z/6}Úv%3 NiZ @sUsT顏AmVLrphkHhЏBXu3T&y7 êxVpK`]T } c7'EczkI\w3>i8,G!Cn&Gk4D$(-Fwرw'" U#=b 0((k`h`g8@ (!sL?ct4q:TP@F ( ( ( ( ( ( ( ( ( ( ( ( ( ( pZ}Pր*P5DGŠ)h)Gd7LA@x" ʻpOogk!Jި*:Q`pNM7vao9ڰXrRvg4$3(gHpCi2nb=aR'wXT-ChI6q%zU©T\ڢoCƥdYW=21AerE'p'+x+)*ryHkU%-J7ֵUC{WD"yX$vbn)LC b@3КJi=Lj.uc䀡zEsEǫ^ݫ>}lHf Q"W杍`vE #e'qRJiSKF,4Y]2;(w8oDVty<.3YH\B2M()4$Y6RS֋2\A0LˀN H` 9bTxT2;sBL;h_o|LkԎЋl{!zfPo}X&IcS'>+.Ιv~kzc9Tqi1x괽X,ꥵcAьe{kVаTkOa %9k:kk 0''N <\٤! +|g9BAQƯF Njd5{.|Iu>;TrDs[y=m @sg-,R0sZ$rԨ _}7n3*Rώ3{^ @+6b~lgۥ5bt敊$z4I").4Hv\T(GEӦk}<èkMu־5'6=Evw"&Bƻ~y>|#=NSB--#?-8F5<qzAu[r<֯Z_HujMn|[v`}J^ZxY;4b8|gq꠪|an#38+ Q u_HI|Q\yoh~|z__OsC\:5^/YQJ9Z;Q:,cƷN&=ɧxpl` i.mr.dbhHVn*ں7KR b \OI=U΃ū(yN#mqo4oIBTbx|\VrZЕOHd]:4#}jː}^ &Ӽn-C+mOj=z2Ɋ)gݴvV#O  Mq<,j *:eƑ$`OSLk;Gð ( R4otVh{Q4*}iXR'F ßjbv/ oqӌ9)gMp$sH᪬%KZI] nX;P}ߴt;sO*drsJs2beEX%%:拔{_lǢ>yPp6Pwk6RCc/apaӎ lҨ<aC4/b) ku" @ Ph B>[diOt5$ (P@P@P@P@P@P@P@P@P@P@P@P@P@P@T(/?Tk?ы@R?Td7T  G,@#2Rr1QWegCetLrOĸ*rrhȩ}WhEqE.d+FpӒa Lg*6V]xemGv2ĺ5b2>kksֆ7m(hË {J^QHO 7\ӰCwFС8{ՋGv-d9. Q)WMjǪEVq$/8j{D2?iH/a N&qEˋkVCw2vg^j?J%Igj_+(^4l~yi Kl$Y8e\U\Q'⾌-X/_S("dzgŽc@0!aN q[%HtX>y:2uEn$ҩT(Jg+\c~Fu -7ʇ̵ܭWpkFGm=˻LqBK)I? 5L$V4̬G5W[JQeuYqmc8YI(pisjdӳu2vS(9jA2%2r8udx(#"@:{Ri C6ł[RRẩRypoZX.` G%WI>TUPkV}˓֎f 4s)缺itp;+ 6 l^zV9w0 nJ{tT sJƜ^XbT'iOR.v rHdҹ ld#zҹWzDw`FjqwdHNvCj.š1nrӻ @\+ %SL\mKy;M ̅ O&c[J2wqK}83UHM*i=(lXKkY+LU*FHэ 3K-}6!L+녔e+hudtiwq`RM+6$h) A!AEViEscgO5{6̶v7o0Sڴy5l\=WNY$:]"1MZxjv:Yê:XevkQ;cNFEh94Ym*}xPnkNV(p>>:u ٥R4GLlh~)dRҾ+ZIwo&Iv|rW=Z3n)־0iz45/Q D87dWᙊV1J.lE_aՊ<9Asy7dhI≘2Zhx]U2\iڍաI_220瞝3H䤫9[U[ ]ASʌqEw|apcu3\=E<4W]3R,SΌgJ@:fnRdʼW5#")i$t{fjxㄽԂUВR짹bPG ڙNj4vpѱv<Ihki>6ѵB&d U,BKROź!H:tWRn{ G352"4e|LРv[5a4#S:i:f%wml~T~ T2x%fB^B[+3اY ^eFs J 'R]@䪓U : KNm5$9]3*$\dkHJG]kͯ^K% +ϩBJ|::2E:(?7J##WU7~֬OmB&i褐O f ʛ\ 㛈-5{k*n-D2Q&/>"dm3G |cS尒,uQ,jl4]gPRH+X*#9sb }>Ggg ?*#x'V 25.9#lGfi5oEOiojpK|ɽOSZ5!dV5m*L^߃-ʨ]?-"Hո& R )6kNR)k>\cs2+֍˾Nn- _pǰU{_Hщ(#{r֓◆g[Y%AhQw.:s"Lg՚6276Գ.;{MYHFK@sMjy'Ə}6 FH>ʧc+gj<ةK4+&խ\awhh*G; V`= mgWcL\%.mB| JȆ GI4(%bqIP~t??:5Lp1);y+' P3!}FӚh4\8#ޘ A8$bєǧ֩>ҤВ ( 4P@P@P@P@P@P@P@P@P@P@P@P@P@P@[R T>R9&j?F-tGC1ῴ>gT(~ӻrG7SΥCCBӯX9gK("2I`+/b4A1RBbbޢȖb-!LQؚ-wr*2 9<MM8,X4oH§Jq:>RY\$(Pgg^%u7jH SISJ$)o(xqⲝa5$z=_0v f3c>hsI/أ.ˁqGejNl]Zέ ʏjN#6]Y#3ĜmT5cСU4Ep շ! 6m#1% 3.f^Z/}qRW4v[(`p3Gd+T"/-,6N r;sjMɲ25vsE+v rpZٝ\d؎GS+Hg=jJ#/ [G/Ťr0#SO{,?3:}ȴfIÞdhq6VH|?#>FXU"tҭF[]ЖT暢2M+XA("1,`cc<{1G$#2D1\U(Xb\بT FnȚaD ;ɣTm>܃( ?O1TдYcӢY0QYf';>WPCrdt1y%6yjU+oX|e3aHNjJRGipl/<=E:Nk';id屈gE MfOLFCfl2== ,@M$"#5>̵Z,KF9펕kYNxA?dR"@ˑ5>q 1d^DqʏʟbB㐿?d/+G:.^):CՍ4sZ;|+xtIfnC']ҎCb51FrF7M@QlN{STѬm.p:pjحpQ8 DbVE[Q,On 8+goʟ*2'̟9^qhQF/iP 0ȉmsRM˫aq馎_N[\YW56aG&'I)h{/0L2hzʹ;5;TncW W*ue{o؉4M)$}&ͭ/6Tv(CӤ#}iʊ={ G$I+c(ʚL~t8Fx8op4`F%$^amV݈@?IRkVdSGO)Kۆ&\> _it::~-%9 K`u1ekEO؉XgAMTܩ q0!XJ3:rrܞ;Y<ԄpgRsqJב2y4yr BtbŃKg;mVN?cTORȰK&'-ц=zRlgٝsJGwߔ"Q mJOߖӞPuV~U鴮 VW@ȼ,NVZ|S9yI9=' Rr`\*jɌoKa"j zcq\y)GG~("[2Ps}N#-;ΧM]+2̍?'lr<~9r[NS8fnyԮu'\sҹ>=(F ҅ns乕ĶK.;q+ӡ;&ȕuc^!\tOJ(9]i7OZյw~0/֞YJ]̈'y;:9$INGfvEBO[-,K&4Mry 6Mn~RFx6ElKsyhǥh7$I=}[; ͲZv\} 3;;W{KwaM'oJ91Y5;{'?-r t(c \:RGEz-a^I203c>]Za1Aihz4?1V㠽9(i<ТނX`\fT²nTCuLG9Lέ.YcM4巼c\pc$vF_ hwse4`<`+׵:xs$GO Y_#LI cs#pH5S]cIؘE%% /t y0 ȑ.zR9B;8;뵐|xd~iZrGC+utHong0>T]Ѽ6 ׵9lqmN R9#Hd<$i&01=diRY%P@h ( ( ( ( ( ( ( ( ( ( ( ( ( @Ay}hs_LZ<"^0 J;!zb (j|3iW^j?W^a WJp&.@ 4KKR;#榥t.搚biS~\t/Zco0y*R( 2*,y/E\dc+4^~P ^H|М2ECr֔w5,@i7EҸF竇49V=(Mba=i32DSHRr$M+MKhӵe#[KZZ~Fվڞsm$66ڵOSh zܦ ňkx9_Iv2H)TUWǜ|4O32È=5ϧF0(Ӭ,`05Ah| {92P3]kWVQZXͶ4^czR-FdsL#E8YRЍ׌}]ʄь|gI84-ϟv\ylcOy<X5܏ x(^DUp?J3/:c=JSڜIuB*]zS_j 8ljWdB̗%W9Zb^IASa驸QG!17zjaI4rKfG.|5)EXpĻ,7ȉWy?_*J; F~5)mtHp=i˓#ݍ  XXEL4Kh[VA@a:+n*LFV̧U0iK*"w`C !SL4i# AC9&g58|oc hřNkͬڝa|sw9űe\WExnnrs[y6`wp\zy}sRpZc/Fs:aF;eC4; D e *lc5So5ߊvu!o-g7c4Tc(]K b0FR;#67ӎ+#nC* Zg dP-+NO4Xr6rNi~)Xd.R Bge**E;+yn9ud< )5^(Jǯ6ZӮ-urб dN}2*:hv_R;PA=/S>7}Im?ҥy_gC9xW&4OO֓A$y!j uWHҖ6 b7;~GU--49ۏOxT֮nP/$CST-z'y^ u=B(Qg2x4cIBeћ]$$~*ɧ|6&Z#5VXkB19 .6<ɷ-r0e#؛ Lg֋`I3҄A~up; ƥI# =H绁_0GCF-C*+d҈Enjkdʍ S3iSL#Ԣ]-U+ukcH-lyw-Af &?\!}NEIDbv \Es6zw2;0kEqEJ.GKC >a?t0 ~*{Dx7Rmx}dPH#&G?5n4"B\| -KC[\zScp>uGTH/vAQ -[Qj!c.;? Mɜ{U$ysh+\^H*L~u7=X¼dK;Koe &7=WZƟd[Iojˢ\g {uWg""E#$U 'slVx|$qB)rac񨾆 _hCL{VRf'Nrsڠ,JK,2m..^Ur%𫉌srߙi$szb)DJ x+e d U@p(R\1Eqr1L8(\W4/}?Lt4$ (P@P@P@P@P@P@P@P@P@P@P@P@P@P@T(/?Tk?ы@?S?RosZ ڐdxgva:u>QӷֺC$1,jQBwE-uJiS1(SSc|noK c4l,\ZjaO"N, ރJȽ̘= Dw23̙jNLDނ:TgBݑNMsMR[#WڽXEfkДU8h@YbX&1ރ xlo$u8u*7fI4$%\EJi5_zfIFTis|<Hr ]@+r:⵽G|CԣCs R8;TahU7-su6ly2HxN=l6t\ץuIޭ3-#Ԛ֋ ^N G'Z#'4jO\И\F-1ww5׹57) zbr!P5k>/4lriͩSIyQz4vdY<`㧵#c=''Ԫ^|vJ uVtI2zm\ PT-CcN3XJ;!u:g>j6-]3gK(= tFIn"8FL֜6 ]@f=8uҩ$8;`lW'Rmbb~Wz>^]GEfX2V\K3o0}0( zP V'&̱ ev[R]K24Ps]l\%@)3H  p(1ni# S*E1]V*k3e=aR6mPA\rspX d|Iw&8S~2>w0P*KT"g͡jnF}ۣISVH'vW.cEU*O1qf#9`q|lKtCcroH1-IduVs9xlтʇ9d j{Oi$ kШ/:#kb9Oߦ w,dug= 'Y4gb) VՅ0jst[}H8ZҶIJvgc˒g'2 Hqgi6K(?ZF]cҠ.J4L8߈Q.aq& 6ζL\5*0=VVܻK%.i8R0(0)0a@ 0()i]nZ)O'JBJ((@P@P@P@P@P@P@P@P@P@P@P@P@P@nK@ PJ#ș??E-a(5( @+N1]{< x4ozd\4.EpJ: gtC%̕ae/8WgVVGf_ :jV16Ѽ6E\8M$i9ɳLRG:zys0vEpM“=i*3kcvЙ`MQ_0*>ۜʄީ%PԮ*r{FaW5 bjiv( ǟ*Ym0)k6gxJC=Ӵg3\7xvV:k="POˀ:wsEZ 'ݐ1q4~mNH9Xfm' J=:r^׸<"H;9z8i8U<9$DXxV|':$z: ~SOsm- ɨY+EQ#Ye{l6M_Mɨ)> m?GHYS1@"єcDPFp44iK9+F^!՘02/\ҒsJw<eo՘ xsyeu&INuKFu4{K.}"d~*lq#6GKǡ׆IvZ yq;GбkW.M+GKA[0j ૵Jx\MUI}>yMGkI{^^*0?(C~NqRᆩIlKS^L~<]>:㩬1_5{9wgş›>o^?¸_ߺ>kut4'N+ib[GO,$ݎ:KF (U34&^OZˬr usҏ:Z!|)uHm8++)TWbw-~nO5v#;pU iT}+ha'|(nuB_.x{\I91֘)z7jݱXgbz|E"3?Zi 915oy"KeO EN+c'x6n4:H,Xd7v9}K>#M}E+amL8}sYI^vVe ӱ+0qWL zz<P6 ?CRQ,.Z P ŜTFҔ7N$Paq51sV3bicBc3! ) ޝ{ùlPGVw\ZG`g莧U]f0]v+9犩@O/B s\ɟ1i!VW@s[Eޤ,lعt\)䎵Z;Q1<^ -?]k]5G"C'޳:!ku2Ʀ-Mq3Vz]6kYW:S_-D^isQcQ&vraiơgWFr(Rj:5%<=^VT MY&îɪq~"Cr`ljS=A.l P v#{ܳeeA)5xʃ(ǒit/nlaΓ୬ixRZݴxݟʓ*=LmN; ŚHd$V Rھu3 5QDJmJ[$9 vS3J2v3ϥ]wiP RAh$L:SR)488z (␏cFx?L)O'JBJ((@P@P@P@P@P@P@P@P@P@P@P@P@P@nK@ PJ#ș?tEL>m,_ll5<*4V8C[~9\cj6q*eM4r"J1 >I=ѵj|B) 5#ViP-(r{b)AZSHqMXқn \%GqfP1~bB[IeH8 9.ǓcGV+֪B7DF(Św7wz(Ή[es E痔ʵJ0իUnmu neqYIIԋIGq{HYV-MEJn)!L2CĊC{sYN!w ʇNl ieca lxJhDcS[z\D?JlcOmszF}37 寗3ZExtfxO|1j(C$F6Z-vFA63J:k]"׆`1_fn̦>ѶQuS*N? &06TOe >MܳZB?_msKrrNeܡmulZd_xi^FҳxvYҲ*f =?:=:!NN͋ihWRΠ`d?U+y)k΍ .n tskE{lrJ N7R$Pxz%mǽ/#юJ*yeԨbiI^:1n,,4 u^ ]W;\z_kkhIڪTi'bqi[,ݾh#9/1]B<[%*7Ԅٗ٘OpXsY짡I1u4)7,de\ cH8NVX M,0 YE)lzeVndxF&䪂yۓZ{&qֳb3rV=JuUZ|-<9q%v(]QuV)Ud2 LOhTs)]x:4¬IDor8 :^i;Lw }@*[Ide,{Щ,[-i4r&qʵWf5s7f[M.wV[+mA-f^dWY'(+O:7-Y|=|zQIQb}ы6@ S>=ׄIE p: KtF^/Jq GRb>HIU<QYqJ$cFr?:yAI\_ δv9¥B}ɎeO u)gG"c(iLg9G r#M>I;ǩɣPG-G 7)Gm28a9p՟4+Jkmjĸ4~` $dQd;G*|jNm.`N=Մ'cFj$Zeݖ]փRZ" ɨeo'Bܯ ݍ=zqQn 3Eoi<=ҋ0-x lj' 8V?*ߡ԰$2}q%M/ sU%_5tT}UǏ5ݔ;cU<ғpiTqg!oVg&1JurIF@?3B]CqfJ\$\hGy ۇhai?&ƑiiƓϵGzQsxc.mlnb9~E!=}Mk˧\~ W+y#Ro2Zzu3**[/]C*+G"8/Q^V*K3B܈'sb1<0$aۏ^+U+5MST)ly<ǵ\;jU)ܵմX#zW>~mUD>[5rl'mգ!ZәvI<$c}:Sv 4HYgu8(Sm˾5kk1 zTjW^tL"w `>vaYh +LդٰD9B:%{I<(hG'-ѿ<6A4s%a`sbdG ܓr%Vί ė^L7O (r)'S%;R֣6]jtFX:PGL3,o FUFi6R)i~,ԣi hĒs4qʼzZѦKOG̲.ٽ ͻ)[E(<ټxyY]XdW:erЮ$PN(4Z%-7 oEYѸ8p+v;QxSCZ"Y4ɰ*`AKBHlz?$T#IO4FO@g9$vpS`e*+|q@dhy}J! Lcomrdi}B*K$ (P@P@P@P@P@P@P@P@P@P@P@P@P@P@T(/?Tk?ы@x#G c !j`kIJz Qǵ%r*IͿ m]:ORg[.9rԎ;Jrj fhC+KnG\Ҫ0Gmaf80R(PFN5/_:R㈚MiV鈔/RP2VSg(ق+XrtU'ћz4&}g޴řK/f*q{GOc6P!U7Sҩ-E+IcWb9!Z"!GX1)%8 + Ur{Y.((qAn(D7(6!_@)GCU6 @*!b*9v2sTclGzcxr3TVO̤v{)1q)RA"KDֱ`3(e{1i0"ґeOYmmwԟn K=%Fl-bT:#;2A/ń4ѲO'ک z)žGRC `5Q¦0&69!:L[a1|p1@GbT*⬌eUQ9!Mp@Qeo+J g\z<74Fʹ[=TEP::qR,iJV iYǚv9覤r͌lr;`-IcvT1\q 2匝RGHe4zb-@)!=Agr]n5qN9RFXI9[aEgJ-܎A̷ LX62#*z4QZ6,b5TOҺa:*rP3СKsjw*KRʬH`n"fԌ.UL KbIg"FOS;L-VBmU'p y`=U*ã8#޴(Aig,p"{u`d٨YK˔N><1ct-zzE"qі+8@E0!e{c @b(9`x6==!g6d4|S@%(䂠aC)V7GcRQ&УoP&/#i[X"dph!JΓ܁9ǭRWg]9w4'xcF 7cxyBQf<>mKf$wK zqܴ%pI0`֢cRI#G)V.GcI7H鍬Z] {Tkr!hTGwϡ=4o-jdf_84WmLĞ-n$uB5;:.mLћꤺSAco>D6Ь*p# +$r9v*bGw=VQ8S&.-gZQ nzz֠ΉbJږqHyqEgM%q4ȚUJ W3N%METjQuO7mWΤN>8IZ؏UnvqYȸ!Oʤs(C.]=ȭ3'D(8MXLzhހi܎ v(ITMC 0 Qs!.sh>@ ԙp>N%P@F ( ( ( ( ( ( ( ( ( ( ( ( ( ( pZ}Pր*P5DGŠ ݋3XI'$-kJ*K"YP*J{?w~ O?Wyz:b.` 1Դ4;V[8.$ۊ R4diGsVu#5$F qzu{mdւ`EB+oPQ@^cWdr))zJ5c6iFi9==Β=Hz #?qOBe'&ipsI'dhN*gSYNDlzKP}E g Ij9 D^!9VG-lˑƚY%V9+xO_ΏoGTi dH[·GKŲeEk Z7dW}8`> m$d;zmnbOrq@ vf;~P9p'DrDYzADy &L#+UӟZ|H!a!sդTQf jVDC2R[6eF# ZOT!VHp[X.z%[TMjP8ңi!0RKsĔmi3ȓB}ppAѬgiR9&j?F-ox+D kZ$YlE㿴:3gӮy%xk sڻ|n2ԮsID0)9&COFG5fG<_BYP¹e񞲏.yWRG;}d ,JL<\*lm2l QԳl杌r%5HvzrtBL)sAX|UzͰ'Q(ܕ(HjlE,w@YA4_;^l9h=i&g˭tkaB:Qk%ʅrUXֆ);X(XA(=B(m;8V 5ڝk.NaWESZ҄) K*[s#Iv#wKW#S7}NM_ =vegW4ф7mm.3$=AG+06gr ;+u(9sU\\A })M6U2% l>G_yl.QP\G9sS cZiKފе3Dם>ċUվ2DN'D >-s$h=^JZ!vt뢌 ڠw5RiwaԌx;07]@6 Rg)4h:>ݚ:++(ǥecaA=LdWVمIXfSЊ4ݎ_jU>ns R0fܵƣab;I#OҀ)W2;I#fA`vgiƑ ?"gs-ߊ@>0 T@b `F KFՂjkCh5iFs2ڑ\*-4m-E8ų8z YQ!481ʛHh6(Uc֡gM-AHXE)'ιzS hL2ёHJ-ÜGc8kznvzE÷#x,W_Cܷc-߸z⩤&p B:g8uA6X(iCz.Iay9z .ZZRk ni0I\EӐLcnWS-O^}4b^J㓻1Z({UEEhR(!LbXfzm0B6x}yu-Ìb[کfl;n=.$M1ǩqrLG ) l Ȥ;#42(Vs`rOAIh=eq| ]җ0s:ė%ұ jʐxh)4Ri_nZEy:TP@F ( ( ( ( ( ( ( ( ( ( ( ( ( ( pZ}Pր*P5DGŠ țׄ-kZŗ" Ȱdf}KxȞΣ+EKk(\DCϫ\95:^FKemՅr˚By]~[fLSDKr;iKΥcJ7gkdZhgoУ U6%_Yƒ\Lc!$UL$)\j^+nurW1¿lRץyRo.݁XcӥT9Q S&A^ʚ>SY:8cvҧU+Mw*G9dsӱJetiP2P{ j5dܴC/i/%یҋ"Ku`㺓SFw4R0泔:]Dࣩng3 BF*9a&uF# ZЂx$Fv4x V9C9,=A58V}s($bA=kw)$rBnIh:4G?ta*jtvc0e_.vzj5tn`\!'-Zb[27[=jYQw4&ĩ4֟#FICt]!\BR)L&'r( Q28yPcHT1ǒTi,gP+"L@39Ŗ0j:dZXf* h??#r; +[;Xi#9Wvjm-3X 峻//}.MeֆZ;CƮmē.hb\@sLE5fT}MG.sTS kaGsR]MRwS/bzk=ۋa֊8e} nKF>G$v3.4o2TH~CUltE}]⛨=ZSԧB ZǂW=68nJNLsk~$ZZmB88Rwk^F0铉WGHJZ#>>K[/jEcA75/c𥿌uQ_a.}_:*TnX!ZKq=9y 8npWFJ:+ WZtZ[<0=giN9/ݴh:tmE槨_]\ʷG\(徇\]|6s} 2t0Zsu1._tӁffY,G@]'[dZivM6uax 5;ĺg5$xϥ;`N@mn)t &Mc]AKxX5$n),,!u~;َȾ`#<9?2.Oވ,, 1ǒ}Ǖbܴ9IJ6ytH׍<<}ч}dz+E?# >ddE ǾhIu[Wv[>1(V+IR!da 3ӧi,Qy'&cK?JhҞ.t蘛 /cU"ڞczjJ 9,;X lԓ^,`sxV:&*ZjplCpсTFG4*jG}G^zIRQlnuV+љr4Z9b FFwQѪH}â9TAkI!l`4 ƒ1^N{k2*R:j'=Ht^ !ĊĪx#*0J>KmVq8ZҚû@[sk3ƬDt%ycHbٚQE+iW!q_QI^7N i0Вyu!\C |+Ǔr潴)[H."~n@;c&0 d0?ZaކǢJ qju7S&3l2qӿYl';ˋmWOd C:>xo,ߍZ3|Ml%~pze04tl68eo{n1`,SC;Jm#LXa>NiCRZMBLH̼EOOC!ǘzT9CgRc U9]f+$KE9QTi{һ9?nF9 6D9k$|76l*arٙUݞi4uO3*i~u(#j̲HL3&?[go \qA$n lr [\|OlꯎQl.kFCqbq{PAkPY!Yw5 L#l`zHKrIiu'6F3mWyijý3CFʼҲd7!E+0Z,M9J*}6in/Qp+yKBb;T78˿WuE3TjVW;$>bOJQ3nWwi8I[VN+iԣVg_mtVV"mVHά5rJk%a:jJ@pO\t#:8F\ȯCjs !c-<S#utȰŸ +ǏRUZf]7~y,yNxԕsm﹇Jʰ`N({`N+[ {-FA©Sn7IZxDC#c5M[LDy"Dd|֥RWBXًcҩ+֛D^# O\r9X$u]ϰd TC)_MQ6"Fri8(-LQɚB@$9y *Ͻ9 }h }&G6A4gVV5%O&õӊGSge=K nȖ1>zpQ{ 7`uięC9앎B6TY`Ѕ(&Ydz*RXTݜGJD49pT`(+qrT M!iؘJ"3}g|%^&7nNqV&c(iX ?cg7fKԛV5.{['$}|= cshvL\#w9Ozƭ$c4A g 2ɵKSzU[ن25fu;Qb#YzX-ֹ}^9qhv#jגS+2IiwU!*mdWF՝ƄdV.S]2r $u+i54ۑe99vu|~\"]Y}EGJsϽ# \G11㎣5bry,aS7@o\r)O#4GrF3NǥJ7+b0 oj*vc;>ShBZktm+t敍9$WqJk1d_ZB3ޝұ2֮-VyVw%Gҭm qucN<\]Һ͹[-]&.d{<ҹ1)KV7b랴g2[;&7Ah$o,}†}Y$4EڿJ@L[oQž[õ&1N: Xlu5F(mHr6v.ȱ l/3Ғ܄KI+,^\gwPjЫ|Q(>(:=q*ƛm:/7LY3S.1v,@[n2{0QS yvwnEf̤th$BvtmM`gn$dZQOcq*Z/T]i[uC#js\my ь 4q+-]̚j+#7Z]Hf -yk!kLTktU/}?L)OJBJ((@P@P@P@P@P@P@P@P@P@P@P@P@P@nK@ PJ#ș?֔vDRL<]JS+֜9y% 3]qv81xU-oQ\]Qw>Gqe$kC<3XSYN29=709=b9@ f 29Qq~3eR$U઩ɦt5Ȥ 4g8X-3RŸ4#M'xvӨgT;WYT\m3NN-rFҰ52JOA(J ,ZN&N,D'ڕgd<>u*VFh:'!Irx`iMl#{yy,F3URv*T+NT5QP%@;T>M>9d]);9|Z\֭+)]H 622ǒLU}&O:pYR;Q'X:jU5:ʁ1\LZ"2rzVv;",Kw:T͸X )Zt9~=+}wѢ4rҗfz 4=([hu ی vק&?QFeLz ݙ#v-cEdVۋEk*=PB{\UQJkMaU:n;ӚO֝TfirY¹GZ?f@猊jN~b}4,xbDaǾ2j*I صoҲqjB̅OqڋPtwqe{m! $fVМR9I=O9inqs\ БJ3rZ\ "IE 3Cms0yӹB-&@XzXdPRy4&h#! ɥcϩL* RBuc9 )XKQIP$*oOoHU<ͲZ."^9+&27FU$lkҤ.cG"+[\Tii"hd Zlw2BYs; .NVXC5vʋ<9p✖deDQ)Gz-0ʢ1f[{ р$Tδ-Ģ(`׽L۹M+/X0QG TӕӽWGҒn(oاeΊQZKkݒ0:-c7l6cQ ϞjbH.sR5-{<Đ ʼbxǙ'4wЦVB23JgN6!F)FA3֌4&$꤉Pn⋶Fji3#ښ h(cMtÙQ5p@\b>o1lɀ@Uϟ:dmm.=Yz4nsUx2%ކSt| #GP>\s"Aހ%T;jg"lrCփj;%SSWFlx}j7$|p3I1B2r9_zb9UhC ;[؛X~ctq2iI U} 5΋ |ByttvS! gg= ' ǧz$t5P@1 ޴祀gFJc9WLOrVZ3xv2A#ZRGTn:励gfԇ= =Gl @W´OՉvNVrV0F߇& !=W&'U|7~lؓghj|kfҬyd=H K< 3l{ P[m5c<֬0ʹzpq֢MģZ8#5G,]cS×F!o"PgZ 18-Y%u@AgNIׂ(p=hˌVZxSz+Ixw6ҋ{Ӱ `$&( 2k;] WsZ.Q>L?7F|>c=H!7GގR[x5lSVZTI =i #&cOt24}<*M ( @P@P@P@P@P@P@P@P@P@P@P@P@P@P?-> ( C@("flbAaL>75PmI@oz:`ewk'tZ]G$ZGbs*APx*y5SU[B:cOc| f4RWBT-'0r2(S%CQ ]i3IBY H>!-,3h'#Re< Xjģ²򃞴^+BIY:'Q"8IdRd:'s! sЌ[@TdLN%29Ҹ,s$XM3qqM)X4-Q2ǚ\|7"K!=03`ǫK%ƃ$5d`bQ:9wsL(N捻brND%6 Mw7zAwDf-+ߴ!oZ08aR:i̪YΕ#'^4iA1g9 ]*9jrqt$>\B!O* bXiSKg#X\;Q4WIW}'k)WTpQֶI||QMJ24Nfhc70)?u'rΥS dmHۜXU-I9_qLV"#.p:z%eWCQKq)ny5&>vq ~iQ2g{Fl[N{®:u KIܠG MH (:0J%GIu2R(t `"mle]X_VqHʊ4,c7o\G#v4rs֝8`ץˠ?6Z!RX/D+Q]t6k8~沔 W .kjq ̑|ˁڳQZ&qCo,M|~=ѭ ?eZF$|.=3wz $7̹ۂ G*6F3R֮cGf8ݣU'e򍵔 3vQT2OA=ϭCwfj\2˵Inu4PktȮ ddU:?ki'3#һY6 f"^ǥEq 涉I]s)D`GSbCA C>A(:9zTrD](8=; ^VrMjڀUЩAt4 0Fߺx?OCD#hn,ML7`JOܬ\F*y۞xRoIJx)"Q.{QYI*Xy mPv=;d+Je츔 PmGsFa<8DCU3j.APM&$#321ޤcF_/з$V۸u{ A^՘1#ޙ<- |9[<ѱ?a=y;>cڤ1E癡IR0r#ك{/pt\Et#d]?bٟ>ۍHA̷&yĠx3O5KsǮ&7Pb1)}KES1ԊRFz{-i|T[AfĄySைQiP\t0m=2zd0OۅocB!WֳzKC6飼*3 ósFijmN]Aqͳ%{y˔cRTY{:10NR,QĒ֓&8U&swٞbx.SgK5$r_F$ uQn*/q52Qԙ;+#g{R_3oS<.fp9 GW&㈣9Lfw9`jgSsJduD"Dxa# ((勸ؠLozb0O؍ LhXj+cԎŮYB?X=ȐXb0 =kH;M}sJ-@=jģ܇9qF4B! Ҁ>~kTҙt4$ (P@P@P@P@P@P@P@P@P@P@P@P@P@P@T(/?Tk?ы@|#q@Z(os^A@x7EqGT̿jU'5B|;0.S$+OmRH[atdX1N3i{7HsRɦݓ#^u]_…UrGa$ [ )SA-FEhY {U]-)X"ߍyWa[`8u科:GY|BѮG[:ҟA[gtK_؁XZGir~R8Bڣ;\cV /LOrjGAqn%L8t0Җ3m9oe%;I +޽gJt8jG  k#Ξ ]&- 8gL3R9+7Lv7?Q*}F0.0h g|cywG k'^׮b|ڤAG*jz%^B?xAqw?Y\> 4쓹4j& 'Ö(phdަkQkHw,v&Z8U/t(UŋO?٢:yo9IspvZxJ8T;i^ʫjվ&^Gi/fpW=G-KX%A.KwTJ7#˂GB g8b^"]Nj-$9rb;m@Z흶 _i1$6H4CI☡Umⴆ͌֏Qb`k^1 \i~rͻc/f$[ǺNmis\\KL:Q`C6 N;F 3]s\F]I[byU AqH PV|sm6զW} ua~g㉗>q9nze5ѕuxOV'ūHp $0& ^KڨW)VWbv!\X1Z[}6#NcZ*fvo̮IjLZׁ/ko5Cbx=j, @=to}cܶx1_xne[|) yB!b*Sc֮G䣢w*ɯ\Gq c*'hg]j6Ml]ɸ1E_hpzƪ_Ae0Pǽ;Tfm3Qi˃Iv7xjWa77P?NopnW n-|/3Qqf>Jê{HtArbgOKܸ'( W5V,-=l"eDXӵ UK|FQoV%iN\~~a,%*C+TS9*9ބ~6ʂ̎eTKհӧč)n ISGE<#qdVaZ]FeҷmxZ-~WrZ Crw6>dj p+5t:1aXTHڻ#f:dfB]qgM'V w 1\2֩h/si;gll\Ҫ.捸pxgox1Fzu74u5J'L O3RvPzFUˀ[h=HQЯ/^Y6e#P*jJV(]~.PsLN)SK3ǹG1}"%b%Gޯ[uh)+84f#^2@?[49'/)>5|:!ʎgk˹<&%nxi7Mb2$S1mr>WaLY\7nh2[+aU\34O.' %OҀy2<Ҙ)t4,59ZOP>QmgNdIL*MqNݻr`RF.FwFSqqzXyGxoG2On^۰U9;Ф}*S^,u McHܮ]\q4JG%y5Io#߹C)nes“|=30ll_O$nx(c#bRGZ$w2mRGj|8uE VcBGfⓚ<=LmFhnbU!/ii:; HUk ^RV}fڦm JFdIKĜ+k ֨cе]5dKg>ÏʏkmxLI<֥IT8gUPǷ$8v:kZ\7H ڠidsFNN( h73,D{nE]=R&O-Hϯ֎VPXRL"–Pb⋁;[s(F6󚫠54o lDrکx ?}nwF㊛5em!22̭:G-ٜx}SZ2#;W"`8 N:ҹdrhY L\|1'ޓ"y??:@}+[9OR)O'JFP@Q ( ( ( ( ( ( ( ( ( ( ( ( ( (ꖀ@ |G3Q1hw:'x-L~7T >t."W-ڗR+9]M}pΤYsswXG3msވd;;[QPtFLƶIɡL's3̞c1W2^:ԨqH`E ӭL98XIS2"=[FDnT^L ٚ=0zGe)Y!ȋ\aͳ`}}?{D18-'b8 -AiGF;Um [r\L-<˃eRi0|~!PԖ+Ԙ/\c=l۱)C_ G< ާpuvis<1w,ZH%&5sZWM@Iǵ` kHh1NEҫNz2OfYvAhPva;"ڌӪݣA/BU MhdM6pdë.F=+6B?bdxEV1gQwhc[!UHz${TrO;:h!_,:JM'J4Ը$Ӥ[{qqHxI]/Zq%pYW-5PnF8{ EJNծ{lB'N13O4Vw-IA.3V4V}ݘ1:R J4!fPQphM\CsrNpxuއWZ7t*H4mg * gքiSRw9B#DE0;SULFՁINyK%𝿆i40Ѿp!.I2' G4SN7G4ey)9yQl3ƨ&^ʪi>4ΓM-&F]N^R<عO3Cl9Ru`qe+"]Cv[!&mLb(C`I$UJ2В(Dḽ*2Ȯ:EV!NsR6, z,2kMFXX`riiNVfF$a❏CEպ=)%H4C3ʧ΅eWxiD&)ʫ2A4WR@|wT2g>ƋC{H5w;mpOTugB(j^=cqQЏjr T~6?]%& t2I%ѽm -u)GT4ct,nc,Eݑԣ%g~Ӭ/-('lmE+MJfhW)txr*A+ O$.pir+B;o]\GEᐨlO+R@$9VUǥLGait*En: GЌKLӞ'Uɏ٩~-:=7LQ"0'5yakBH]:8F Wв,vOG(ȝdanz2PxO+['u?J^3LSW -!|>|+zGCvXܮ>B'N(k Z~JzIQ)YUWw-;GDO06/`=;ˡZbsHDo~7; xAJj!XQ$Vw4h軭eՀ\~uHKskW"5M{v;3$:BQ{F ;But1z 3|uik0İ"Z&$9Xc@})1\tn> @w`w'ɠA@}3.jiHВ ( 4P@P@P@P@P@P@P@P@P@P@P@P@P@P@[R T>R9%?F-n!WvڽׁS;s;w6 (O%oF+.ụn: |qĪ:Qdv[I*N 3GͻZu;Wҵp2 Ah188ƤaBw%=)=u0> W5?5~Is@FZ!lr@ hHLUMqHR(G4uay "dZ8uhcgΎGRHݍqV:N.̱ ߼C9I؜3y#5 =UedgVFhI W簢Ki9ytW=*eJKf"D(a:嘣R2=3^y1¥qF~&eL: pùʉq3Y۹љ8^ z&fp:Rμ=9^>\`)ZAGjRzC)nWq*̲n6۹`F+ڶ=-CdX`.6&U]Yh7VC iıޣ&+v5RACꏁA*lk1jpIceTV*5G$g,k)X}G$=jJ\9GUM A6A1b[^EqRP ]@0=;SFi׊Pr)C5E2e92_c5Ȫ<qJ^Lr g:=LHn,O@+\YX}{L!FAݑ`OS3}'fh3] = jf${KB V41<泆PKFz}é"cr]F D="]Urs޴9je_߳8ZӧsbLkۀ[U#֖!]czS݇2dY#ץ2J2+9n{Z6AO։"=ApBޡ4vj:5'G.=L:oo3HPróCÚKok&Ӊ Ut8p9|nM>>XaB\9NxIyaFܜv5V4bqԷ3d gg9L^;qZ iejG@43Δ,ت~e}Eg)Lm$ ҧxa)\gAP߭?q>nRcLI.,%e=~ا`%I3LA7WYEQ҅cjK+ml]NN?P"TLI4KW #}b-sWYL`ٮ^z)˛=g֪*ZmCƑx+whx0Q=̾ʬY/HFVub- n,rz!j[%ȃR;[iM岳E[;o='q~I.d)-peI Bh$uJƐC[6Hq=2LJgX(r1EE<}ؤcZY&jDžAV[O$%v J3E=>vwRH9u5kѾd1Zŏ?\mgMG7O x|֑kSRErbбg+4lUȦaiuvמ@bSLGVh!;2GZUz^"[]yKRyuf|-J]cZ7콫9ns's6FhI#$:0e#|JGi}ͨC}eUYs e8(C 9ӹ<wQPRWFޏm$?eӣ?`QܡE#ld '{mtgv(2_ x5-Sr!=p="@qF;ki'"RJ2zZNNP{ *f>%Wm}hZ( 25 0hLBJ^b Tg_nZ }<*K$ (P@P@P@P@P@P@P@P@P@P@P@P@P@P@T(/?TgGzы@_AFl֦;!͊큜GkzH7ĎFpmK+_,p8=I 6CWA ){9Y2Hs֪-V"T! 7- ՉT#ΜYHEwi4r !Y9J:u4RQ ᑺ浌yx5!+ך#դ=ű :pj}LIqI% :j57sl%2PIM0iy/AOZ@g GAIȿֶr,lykNIN%Yڝ֮˙S5wzWAⴥ"!\@Ci S, INKIC&/\Dշeo%۹OQRILcVJZ3^[b\q2Iըܑu`4cq܊璹SÌɈܜk1Snw:gWm#4rxđN'5kx+ަƾA#\!X>\tbō$L2(Is QYY{R T9?KeqXYjT~pg 'u9H$f%Ll#98W2#l4cYlVM2UjU"G ]0nZ C֖HDְH{`2yw6mz=TU%vs?oD0E 2zXU-K$ T51J8gx3Zi9bޯuR[Wщzu?(&!ٔoD5iuqC:iKMm#R*FެKM 5`]Xǭ`tK #գI$XXrE)3XIy-Cg}/nmdA)b*Yܩ\ɞg9"1ssУIJw41+ǞMR:SZEnn 'lt=Zt9SV4k >{MԎD ٞj;E&jW>nswdYvT_A[@T]6HP WLZGTRj"4K9hXv0Xm@Q~ùCr[Ou4#s?ˌ+)#ZJ*Њ>VKt(bAX|fhhrDX vxaD k{Lb ӑόcȬ:SWD "nrS~Gj֤3+mRgցJ/ݮC/.XFRHuCsP><~g{zG'GRf °< ;FF229;Nǭ:>)!cCm:CA-rqzWd ݁61MT .r~^#pp+;%i#UB]tGVq B1#sU-^5ZTK \2FW#s Ee7늍Ͻk!4K_jVmy~- ՜);v=Ŀpv~_7#"<) $$Z1 ) KZ3JV>Z+OS-M!٫ZYzΈG([U'tO^2%g`:V g,@'4S@)N()R$[3/OS#Z}OI%P@h ( ( ( ( ( ( ( ( ( ( ( ( ( @Ay}hs??KZ|"^0 S k(kIދȖY([DՒ_OfE&qz  ں.k𩸰{r4-P5QBr,I@bղ%GAFAsūiM98er Cb;-p*nsʌԶܳwcoQ&ui;Os1FA9*#=J5"mҡL#856TAnM\bP}@fV恸p~lށr2X8:}h/)o"0lI@ 8,pZSj.UWҡ~!WWv!%3^EKAB+˂XrQLX'Ecr^+Mt=Ukxw×q-\* dTZx_xNޡ6w*2&M)Dt|;伟j}62JweX l8 !,Kڢ7h3;4\qVrft5HhY*]X_Pr FJtsK u+XFxucs4*6-Yj0.Mҟ2aͽVVfH9eR`EKQv2.~&jps'.gH?fަW3־%!\vvinf?24aXhp{2;Ƣc8ȣtuVU h{T9ƾ7DaN~D$ZHUo`:}^,sFtU.b]bГMӹ1k<궇q#Y= GWbvj9+E$CJNĉ_ڏ\dg)wFZG87cQmPui37W5 EL&6l K=IJ'?}ͲҴQkc)H^zS45z{eǧ-NXSiH5/ZɸP"3QQ3ꁮ%(~L2Wk\ GbPN2ڶ.D병Qsn慉Io7LWDYqȷga,e' I`sEk?h\sAҲ`dKޢYPqw?AR >$P D+’8j'c7Ͷ`qEfIXe]5$fhz~vQ cHޚأt]IH|皢*+%T>'y ـ~QEX-C5`+ԏSgghY84ܓ3WL{ȊU& wlP+]21 Aw,5u x PR՝a4˴%t8Y1拞6L gʭ͢{ma##iPOw## 0'brV=U8D~]圑<(j,yغmjVXݲ@'}OIctn~T}W+̑uPI=+EW $F+8烊.H9p]L&_1W#KD}M9N|xAƹw1FFVQlOmsPwZ{ʹJdG~e+=Vw%0-ڦZcaEE;F(8oqXa&zVvPy!C1ưp:R&7/n֊>ctqK#)sҺYR堯:)\K :nr06:2*ӟzoBmE熯<cϭ=U '2`>VҰv_ |mJLTuNSz;0Zwqwϔr@ZER9Cм7,Q\@|'zU;Nc%^UL=e67EЮukD`ՖG=h|qyw8,ijkdhj:[뤋6UABGs` i؟jz8"Gަίc׼kux'#W u9IϯYqUW-GFw }i\,FcENOL. ( 4P@P@P@P@P@P@P@P@P@P@P@P@P@P@[R T>R9%?F-t>KDS k(3Ǻ~,.i y2G\%KW<^zfhæuFr\~>0o>s5U!*rC.%!x*R{ wﴒDEd5;H?gErZݾ6GCX:-,;|d;3VoVb?~" CuصĿE[fELIu_Ȱ~x ֒1ysUrfrdeƔ]*~̇W~?^?sm,3HZZٙbu%4_5Q6~rCfsȱRK#<[dWvxȄI$y}j__{! iHS+ؙ֡dX%#tC)<P7b-/C8i4_P2?y՗Ju(; dx%12߼HEZ+k"E3A=|inq= kc&\3֡قq?KcSTI,;3Zy6*j?[| -Qv3>y.N 5(w:Y#E?C!/ ]?,ԼTz#AS_!w7΃$),*=Qn߹%W]s:>JZf/zZxC*.lv̯;2?WG"+τ*[l||vó-d?=iswFIbiV||C>5柹Vg}f=,BV I` {WXv0[K]uL#2OPfo_{"íQp2D0} ø?}S}~^>,A5> 0}wd(N j"p&_j?{" l;ن%v2 (%πuUm6r~')*R>_>Qi?uV mQ~ȧ!7+_mN-L)_?{"wpQh)CSqwOeM #W>@+W/A$N9ǯFe-/)[iUe·$d~ TNz6*[I}~t˛DBty ajc%_{#^qrVl'. T#olCVr_{#B?nշ( vҥ䵒K"|1<՛9<ҹ'_!|2d`qftmYzK#2?>%FhUJ7>#_o~ 0u)sS{ t6q͛o˽D|F [?5fCjeF%n5s#n64"XlSV7x$C?MiGS#R\k!? |ev nX9Qc&1|Q`Bɱ i/:]jQΘ\uG:tRq0K"^hhe;/' Ik9Uب5_ஷ,J$Qy(ϨTOzو$z +ʴY|mU& s0fc }^?O2>~+'*EH_7MM>鮟Y5&F'꽢;,_| uźGƅas$K?G28e+/ xJK46q)oi ;g+Uyr9jnz2(5k?{? gEk+?$"-Xj;f'L\KtqD5-u4BrCw7VTY'|̽O}׮KgՉÈN9 W"mJ$Fmԥq?m3|VdjkO& hxJNa-^\I |V ba$:"r/Kf<߳GV!oih|~o2ю"}%ti9f _ [ ٣ƙĿjix{%T\vd0p`߳?oV>?٣*94"뼿nW84o/lj5 Ŀn_ٻ@s}Dn06?"_7G0r1j4y| .~麟77d؁`pO=Kw**ǬP((@P@P@P@P@P@P@P@P@P@P@P@P@P@nK@ PJ~$ȗ?xCE=aL>7T h(6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 P@P@h ( ( ( ( ( ( ( ( ( ( ( ( ( @Ay}hs_?KZ|"^0? ֪P@b P1@(b P1@(b P1@(b P1@(b P1@(b P1@(b P1@(b P1@(b P1@(b P1@(b P1@(b P1@(b P1@(b P1@(b P1@(b P1@(b P1@(b P1@(b P1@P@P( ( ( ( ( ( ( ( ( ( ( ( ( (-hP@^Z@5g:-ӌ?†5P@/X5zl#{xO=+"4ݞSøsv_E<|ilPvnAʹ^6}P*RMY~:o y&XuMAjۿ?=.=-.4_=__r6yx ;u 8ּ4F9#Ӎ*QWN>亝L!KNVbC]+^|:+\pUv_/>x{Ğ?$0/tb灒9$ Ta81aa=+Go1f]ԱyXjz~s>=|͋+VJ-RW3b i\Zf0$(4m@J/E^wW^g#Z['@'ڀ);bM%s~(<AHgi/#dyFcF?31]\s6[^lOsI'?ի#_bnFFVSGiْA_ZR03$8EQObCFgR_8E)" }:g'ilDIA@P`E] ހ3lBGSҀ*P]N[,enW!ia8')FSv]9)+~+x q,B(,@qRJ.G?w/#ڬ7ߏ (㝌c1ӑۛ:tU%W{mЀ E\ $еi-=}b (0м!"w R#伛?qN?8(uju\_sIꫯb%"RQMt5 jZWxZyQ )!W=OBo@W{( phP@F ( ( ( ( ( ( ( ( ( ( ( ( ( ( pZ}Pր*P5DGŠxGD)Gd7LA@xwHfs4ڻMÍ}rZ[d_٧R %7Gf0A#z8h>٬gpr?6{c?{RV 7WR1c*MOG+WI}2eƜzM2v[>ΓWv,4:nkjUOi}^N_= 3UO\Imq4jK bOR;eV*IE]zқ[qW9y,ix~H-O-k48PAxW$G^q5,:] ա5Vյh|W^^ӡ7 7Gf jA\qRJ$ZtRJnmu馆n%wZZ^Ňt0#Q*!]+hT)Vo]v/ǹԯ:Nu4vQXzT#dq6?.H?ܧW2SuUkiV&3mG/ڮdMLvg1O^eJ+YY^7nonijZFiw}lϋ׭K}3G\$^fjh^ ٳպ"V++xQ aQ%gDu%7֑gerYU-Ȳ1`G:sUS/Eiqsrsךz_⾟}3◂o1xnEȍaq\T\]IkȚ8_߯bx^%ujO u&DmR'qcoYF/Ѹklq F8H^w=ILPmqݶ>M+4w-ԔOkѨI5T8?Z63Vf NCׯb*vTݵ5'wŞm1Ma)k,&.9s.79"^"?ƟLg Fu_xE_Gi4ǘՇqx<ŠR ZYݺ)v^)4-OZxմ{A6F UmNO[_b+ K~q}O ma. xnaFXOSWON}˯c6MR=SZr:Ķkpgrђ$Xpnd[t[W)YMeپmn+xT|?vԚUcdV˜1wjSv^jVȔ*sP}~u~.KOxJ&(Im-Y8e8?wMTMk~qռ)_秧R((ꖀ#%>/Ez |̟i ?4)?(fÄ|߽t+ШS{oRzݴ^EPK]`c$&KM1gxSmSR%,."&}7d5m0]eRW4B!AF;tjf N^%ZGC.%\|#dR"&kk9dOO]s:[7V;K-F 6vS^N4%_ޕ(EK(=_+"ЌZ΋IG{s51r2"18t^n.yk|<:)-~7.5sCf ,X[}H0y2)!`iKmrKOpR^ʭ\vwMto;^{ë^ 56Lͪ<Bb_ RK%5r\m[zhk wy* :dsiɸ j)Iؖ{^@@P( ( ( ( ( ( ( ( ( ( ( ( ( (-hP@^Z@5g:ȣ׌?Ҏos^ ~3aQѾnω :+Gy/jKR-`ibz;+̈́;TqUVOS(5 SK65ǕU)8?Qxs6nq|5\xKyyv$Br0H8uœ9i{2naX(;Gϫ+~ΞP?܎$`zOK M\P_=Lצ~dU\HOc@{;}B{;R{Y,n2HpRVeFN.A*}k(Seٜ{qo >[zwBv=OjxΑMguw66em"o'hwuoXJ NdxSXtU伌-w7FD+ddNy>c3M;E7{v_JMꕽ{_ӡo %&Q?oq38Qs׭(5K_Hr\G+߅:Mj!i',v:79bQlEعIoNOac5i99dORQ5Ż @P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@2;PZ!xC)>UBrƛ[ǃEҵ#a_gKu8 rB8eR<ҎrV4𞀑 eRO;O<LӦil4KiYv%RG\dʳQZrmy974+Y|;f/{.DI~fbMM4Nۿ*iTҷ3Rմ HuM7ln Ş BВ1Ƨ 3T(4=9ZPK[m}n~?W|C^츐H W~1yqvt8%Qi-^ˤg!W:W.3ҊJT&r_ XxK緖 V{kg-+v=Gd%t_9I~kEg]2PkԒ;r\We(Ky3Zx_;%` F, ;$`pkEWPqi4O4挱3~D#h*mnvѵvnSƞ| ::sx9# cOj7,Lt9[tfSJ8y9R7Mt},IxS!<]McKhf3Bw6:1ybܒ_t94ޗw" j@ \Gj@c>+x-[|~BY5wn.>u*ך\ȼY]jqXͦ WWxJ7qzxLD)9Fd$6mE/ns4y.3O%if`1`{ gu~ZvZo_D/| qg&}zQV<+Vq9l;UX$Ց([/|)[K|k{o᫃!Kn%s89/Nk葯59Ngwݯ\|_#0'PmIue>w?uƔ)Bb_mkIU[IQU" >ԿuARӖ\{:-7I^RMyK4dڷu-BJ_oh23dÝc熗I5_XZ䞶wOkKO馚WZuwSk#}$ H y#9RGNm~rqU<h۶fj3*qwq[N|nn&SSʍ.4-w^_\s ǡϵgOܔKw4WNXtj}]DÅArG"Qۯɗoj%oEoʰ?cQu[jWS2ךz_ӷ\!}G/O]V^5%<ʤ`nw  V\ʝ涷du;]_}tcSƉb'}&gS!VQ6r a9&۪Gf7Kx[^Xao>e@]wLqNm97dME);ԔZ\&Oz ((@P@P@P@P@P@P@P@P@P@P@P@P@P@nK@ PJ$ȗ?4?E(6)(< GZt=B Ȯf@3X1G;4rS[Wuuo?Oe<$(G]K/Nx+{pA6;F-/pLҌ\pmz/wvZ6 mC c>d|#WQի+.Uphyzh (lzP@ @P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Pya y P@P@4PrJ@E4[e@P@P@pMY-3uT-^XH9^GC@P@P@P@P@4PrJ@P@Q ( ( ( ( ( ( ( ( ( ( ( ( ( (ꖀ@ H/Q1hw8-(5( ( ((G@Tl_@Tl_@TQG@ @P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@A(ؿ_ʀ ؿ_ʀ ؿ_ʀ ؿ_ʀ @@ @P@=Fh6/Wbu*6/Wbu*6/Wbu*6/Wbu*6/WP@A(ؿ_ʀ ؿ_ʀ ؿ_ʀ ؿ_ʀ ؿ_ʀ ؿ_ʀ ؿ_ʀ ؿ_ʀ ؿ_ʀt~P@P@h ( ( ( ( ( ( ( ( ( ( ( ( ( @Ay}hs??KZ|"^0 J;!zb ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 4P@P@P@P@P@P@P@P@P@P@P@P@P@P@[R T>R9%?F-ox!/@|cvZTP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Q ( ( ( ( ( ( ( ( ( ( ( ( ( (ꖀ@ H/Q1h M,(V ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 4P@P@P@P@P@P@P@P@P@P@P@P@P@P@[R T>R9%?F-t~WF(@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Q ( ( ( ( ( ( ( ( ( ( ( ( ( (ꖀ@ H/Q1hz/yC ֠ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (P@P@P@P@P@P@P@P@P@P@P@P@P@P@T(/?TgGzы@TPP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@h ( ( ( ( ( ( ( ( ( ( ( ( ( @Ay}hs??KZ#"^P5 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( @P@P@P@P@P@P@P@P@P@P@P@P@P@P?-> ( C@("^lbE4_@@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P( ( ( ( ( ( ( ( ( ( ( ( ( (-hP@^Z@ďg:/ȧ׌? j( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ((@P@P@P@P@P@P@P@P@P@P@P@P@P@nK@ PJ~$ȗ?xCE=akP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@F ( ( ( ( ( ( ( ( ( ( ( ( ( ( pZ}Pր*P3#DGŠ?*h(Z ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 4P@P@P@P@P@P@P@P@P@P@P@P@P@P@[R T>R9%?F-t~SE(@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Q ( ( ( ( ( ( ( ( ( ( ( ( ( (ꖀ@ H/Q1hz/yC ֠ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (P@P@P@P@P@P@P@P@P@P@P@P@P@P@T(/?TgGzы@?S?PP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@h ( ( ( ( ( ( ( ( ( ( ( ( ( @Ay}hs??KZ!"^05 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( @P@P@P@P@P@P@P@P@P@P@P@P@P@P?-> ( C@("^lbE_@@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P( ( ( ( ( ( ( ( ( ( ( ( ( (-hP@^Z@ďg:/ȧה? j( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ((@P@P@P@P@P@P@P@P@P@P@P@P@P@nK@ PJ~$ȗ?xCE=kP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@F ( ( ( ( ( ( ( ( ( ( ( ( ( ( pZ}Pր*P3#DGŠ?*h(Z ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 4P@P@P@P@P@P@P@P@P@P@P@P@P@P@[R T>R9%?F-t^OE(@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Q ( ( ( ( ( ( ( ( ( ( ( ( ( (ꖀ@ H/Q1hz/x ֠ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (P@P@P@P@P@P@P@P@P@P@P@P@P@P@T(/?TgGzы@TPP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@h ( ( ( ( ( ( ( ( ( ( ( ( ( @Ay}hs??KZ#"^P5 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( @P@P@P@P@P@P@P@P@P@P@P@P@P@P?-> ( C@("^lbE_@@ 'P5l;fzDY4ZGWW'o=?;?hx?-7G+:?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~10 E?՜}~12, [%ha, [%ha, [%ha, [%ha, [%ha, [%ha, [%ha, [%ha, [%ha, [%ha, [%ha, [%ha, [%ha, [%ha, [%ha, [%ha, [%ha, [%ha, [%ha, [%ha, [%ha, [%ha, [%ha, [%ha, [%ha, [%ha, [%ha, [%ha, [%ha, [%ha, [%ha, [%ha, [%ha, [%ha, [%ha, [%ha, [%ha, [%ha, [%ha, [%ha, [%ha, [%ha, [%ha, [%ha, [%ha, [%ha, [%ha, [%ha, [%ha, [%ha, [%ha, [%ha, [%ha, [%ha, [%ha +_i9X9cgExDUcu;iae*jm.>GP@^Z@ďg:/ȩה? jxmc%.DžP2ItRJWm7E{[mldGSN àKRN߷QA@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@PY) @MY<âxc#B]9{*%cVZۯ~jB T>R9%?F-t^OE(@g0VkEmTw>p-՗_h~P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@tF;[$crM+VNJugbtP|A {+$_f#5RȄxZ6O܏?3bIbrI!(M'?ϧ (~ 7z[q7vtPJ~$ȗ?xGE=kPѿ/ӫ|/z  hf3~v3:OSaX5խ=^<&j^X 1mǕ8)էRqGe9S-i%Zq$AyCM0!iKK`\yҮy:m/xE#BjoT[1:,6R[,AǕsҢU)M\WPJvwlg}瀴 R]o4"f'h*9mG[RqaM_{|;61*pXy^5pSjNJݴ[_RxVQHEo݃n3M9[^~!<,RZwKywn/z8{cI&2rszʯw m-oB#5|W^N6_VRM>0&`eWudYI#ݹ8}9 sڱQV+{7_ҾЗH^H~ҁ 3;*œkYSϖ?1]z9&)s=I(}uV^qrk6qnQ  J@sd9댜'=,_yҸʤ5.W7{kw6ځ7I@a"H79u:|wgD1OpW[?+MO>1$bHilgp6{ԫ{ }<*a~IJ֞ClQAM;e)y)q9U<zUkOcBSJ7w{ec[,b[]F,㑓*c&ۋVkveلqܹyef]F]solc~1ƴWlR_;ZMz[^ Iz`[O1>Z*% 4O(kgBC R:$j-?ڮs9V8:^ѨQVi5k￑xMM+Uk;w )x<Q-;UIAŽViJ_khlEwI@NтNyیiik~,>j]_/#ecl0 uopwIi'rwʭJRSrQߗuoOD<7Ehң F)#1ߜ+m݊񡋤|:uu^&b--C{m3UP4= /xsM798CV_s,nipt+{oekO:[r٧._?CWӅDVPbT-z?]HD0,flbg9e;ɨҼf`թFvӖ[ZuNԂ? $WZ59.J B/A׏J„ʭxYG%ںI'k+,?&[NҦ7 #;:.˕IN_{~_֗qcA~Ok׷ Jc|Em*qB1/?<>g{4w`؊],EMߙ??/EiZu[i-n>G'=QI1hE$ϙI7MhqYk^}i#v 1>r##3<m̓WO#Ò_h+ؚ8!Wlߩtl'ecGNI&۾+gMNaou+oH-̊;U O~ӃO$+۫Qo_~u{ɌWu{/AӸY:Pv4o tiÚ-BO iwY#|lq?AViwWM2Ițžۆ-7JPn.B'8 q{vJ3JOdm^fkUjR\qfʞG9'F-|O*Gx|Mf\^Rq ~tI"b3{׎M[O*Yxw^׵w< c4qQ_l[xDwzdgw׳D11x82/2nstCź|:C#x p6O'覷vnzYzps{r?{jz>;Ni$1%r Qkiʊ~v^2&Zo=墳:AxoWMfn:Hu7f{iQmGu%e/|xߝ#{_Hؾ^:{u.fp#z~{_$otL%:[ᤥR wGFqGxN㛯[׆3i6*ϐISǦz;Z:Nia .-[{c-뗰i:[e2Hʄw4y9Wo=7NAUm[_+`x]+C"YHA#ۂi'[K̞}S4'{{nyCx[B^Ŷ/o2Rڴ.[ Go9ƢR(fI*fMI5{]'e߻;[h}&cc1y@O5I뱎CVeZ %RZ^Orݖ-㭵7ie .`( 9f'4WgfU 9F+}z%55? i6/WAqs+۱Nq9tϒm^s yj'%i/'m׾m1omJ84xT[ȣ>[FI495umSRV! m[%붚Lҭ-3TּOAm+g¶p8ޛmK_K;ԯR2K]{~#O[G.py\csDe{ߧi9'u2//^n 3R./Lex^5'bIN7s^̪oF*r2iۥTlmL0/2Hm vpz0's˩k-Unujm pJpHB@r)E&#* u|˽;h٣o=\Prwg4%8GTϧU"}-{~ӠӵoZk ?b;:ʫHz~|g vϫJGI?]-ڍo[e^x6F/\w)n}<騵յtukҥM]Two"f^gyYlnyqU>+fέz|Ç6{mG Yxq5u%B@y/g'3Yj[m5q86~۳Wx5[,G1S;N*}{~K 8(s'}]6Qգ׫S sk_M_A;+zB;o9D"D`p9tRMv։cZثbۣGOWgg%~iCO.,KDQQyF9!+E=_Õ(媶&-oa_xGOG޿%sx~lwlѻ|{z4jѯ8>ϟg̤GV{-1)%,}J ^~usSOՑHW@GX׉#9}*(Kwc3)br4!Z{h~#=i OγsKZiխZ~ZZVV$9zRU=5)Jp|Y[_"m'W[X\(yZxbN8$]c?jQGwv+c6|IxMS.t' ?"i= N'?Oğji>3bI"+|~Fv3R[Z~?TzA@}9oImkRgWx$ր*P3#DGŠ)(Z<_{?\nNj՟xP@75;=Mc7-t-JKn^G=G#:5Z+sVxSԦZo0Zp[Eݸr9G#25Z+sU^:?I8-ߙfnVMmKYz~Ce=նc&fʷp9yNRo|?CR8MKmZ+.dt-F7d_y&F3*|i[]^.>=n"{> >d՗Vݛ܃PO_X@SsK$3J9jO:Zkؼ,d\o}:=~0մ+i#ΆmἸ]OAM)rymockRxXՂIfm[xR5=qeb pRK,_h]ݐz(zY_Ev=|;kdh7P|/Xz=%4sFO/ {T]#7WMTG{s$w:˦kӵ]CK?_Y𷇵[] UXu8!hc>3$NNNJQim$iTMɶZYiֵF-oQ֮tU>f-^R `g>J+My /)_\ow?Q_D[ owА0Sׂxúwӯ.^9˓O2/ow4 rV zь()n܌qy$tU(7+I-fۭ_~+HQ]Vl͎Dh9䞘"v[| 40n mmw\Y6|G1E*k4׻f*wդt(qzzDpЍkկ 4]&-SBph'm2IvX̰W65bi&/F޷ܬwzQ@\Eo-G88&efty}K2 =oNWMKH]S:fi^-QNt ˪\qɹK*8\}|EjPqJfwq-4e|6сiFfN>^ qb<$\|ϖĦ խu-M5Ԥb2ɌRIV>،>>S懲Pn[޽nm߅6yt-໊Ip'ڷ5ޚ=<Œa*ӆ /Vm[AbWZ?f?3)HIPKiGM\cUxG:\ꞖJ>ڙীHRV8 P/cW]V:u\F;ޚ7~ľ>Z02 14+ס=8UcI"?;~|kFB略brs~}kBДohT:Q$~IbkHhڣ%[A^GЊm|]oop+7QM/v٥kIo>EPeXs T  ^Bzpn _T~#g 4Zo{zlߧN:.|Sq%ǝ5奤vO ɼ0$dI=~0MjqRn6QrrgЇUtX3yi{,TjS"i]I-,tӿϟ֑h͖d-la۰ٴ9/y `}jet4+VR*ַmo,|3DZ /%ӖepL S9u&e:#wvvflQ[]WKI\Φk,ʄ.͑Z/CxaTcrm>nT_-rlYdQIہ=%r_>$ጏROM^׽ o#ֵyt9>ӤaysIs`k(1/KEwEf=>Okm,[O[>pR#*zڭ9>kwS [ 9Գ*owz_mWHb\F:m "i0Y;'UIG[?+Yro|E5ĺΖ&[t*:SwNe}Qz]3{yvڦ&>-ŭZ Dg$!Aߦ Fto8q^JQik{zO>6+ZW:绒aM̅Wb*I57k>[/7]W-_T(J\JM&nޖ+Sa*[x~RwHp8t<+I48}k^t]5~ZE}NSMu&Z4Pąs9#8$af9j=%R.M%kiYt6}cNft۩[;$\4 Nl.2ityf.&ZUgi+[5kZztC#{}9ʞ&P~#gikkӼ:| 0VlKr omX zpѼҔ^I&CJƶOMR[ٯoK4P%)s dǞkBWk?;ksTɪm8ZVx&_𿎣o ixO]X/x1Gی:u𾋬ekZjhovsnMǕ.tN/gKRmhcew5](?4`` @=e}9N_ߙNjb)GrjqjwykMntkmwBc9.IҔwU*kPQr.kSf|D]ӵYnm8ZG0+u3ɆU VRWwRGhodgusC%r2F?A% 0U%{=6M~7_}V+&/|~8il}G֛OMSއiZg鷷^U⸂?-ǁS.fv&gB81{O:xlfnb @_Kc>{h̛?pj9(-m7ϱsZxL,$,.6V\<=c oJ&0;t*.Ys[[6?^:Ɨ˫_][kaj1l37d/=x+J4UuYe Xz8|%]?>"xGߨZʭ4>[ +`eGn])f5#hI;;Ceh`>$v#q>N)l|=Vj/޺Zi\^uwwH!kEw"$̟e EEvOO֞&#?4冬71oKg<0dZiR[rjeVQgEjv=˺4I0wyO=H\a(mG=xW} /{Lh<(9(J^f(,F|B)KU_mh^#%iZs n$:/ ӱ6%(/'FkUt~G>N%t‹TJ'2S=4k#$+ЩSu˦>h}P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@|,S--e΋scՈS*dxFoh֋Pxo|(dTͦ1 Ԟe_ZG#5fT{o}tYWmk& v>C$.zsWwi| sZϙBt=QwxJ~6hJOds_E<8LԤ׭\63F|d9XݹeCǠ?f_OCs5h&#J]_<ڶ>^WRp)2*MBOd7]aQr.9m$?ŶqGPӟFe-ɸFu~_J;JGAy}hs_LZ| 1=zX ֠^W'_ۿqgP@P@P@P@P@P@P@P@P@P@PUu(ɼMA:MIsⰴT+J{{t7R*RIYB::jKDVjPSOq=[0a*:X`0ȨW2_R_Y"1LAם=q{RpYn{屍TwP@P@P@Qկuk+{l]6/Ƨs9i/桄BS5g'wTtP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@PσxRdO($# ?"i5tpX5ΏV~%KkB$.,^Un@ۧJ.(ƼVs8%ٯ9-i1Nix%(zd /kaW-X/55 BRM]̫<`dΕ:4)P-(앿!Zݬ6wS@)%fX06p8N\riӛ {ozki5ű l'a s%j'úsw߹Bv tVocn9IS'D5u~9]R]GR9V(QQB s}#׬7ίIGiHH/?Tk?ы@TPxng\ `&pUDZZO#V}P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@v5i@D2\A4lQkx$0vP0Yԩ*sܖ/?Tk?ы@TP650/Nǻq{NǒjOk)[^f`⯙iC2n/_C?0ts#f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/U0GL̃f?/ ſ ɘ9g%A ſ ɘ9g%A ſ ɘ9g%A ſ ɘ9g%A ſ ɘ9g%A ſ ɘ9g%A ſ ɘ9g%A ſ ɘ9g%A ſ ɘ9g%A ſ ɘ9g%A ſ ɘ9g%A ſ ɘ9g%A ſ ɘ9g%A ſ ɘ9g%A ſ ɘ9g%A ſ ɘ9g%A ſ ɘ9g%A ſ ɘ9g%A ſ ɘ9g%A ſ ɘ9g%A ſ ɘ9g%A ſ ɘ9g%A ſ ɘ9g%A ſ ɘ9g%A ſ ɘ9g%A ſ ɘ9g%A ſ ɘ9g%A ſ ɘ9g%A ſ ɘ9g%A ſ ɘ9g%A ſ ɘ9g%A ſ ɘ9g%A ſ ɘ9g%A ſ ɘ9g%A ſ ɘ9g%A ſ ɘ9g%A ſ ɘ9g%A ſ ɘ9g%A ſ ɘ9g%A ſ ɘ9g%A ſ ɘ9g%A ſ ɘ9g%A ſ ɘ9g%A ſ ɘ9g%A ſ ɘ9g%A ſ ɘ9g%A ſ ɘ9g%A ſ ɘ9g%A ſ ɘ9g%A ſ ɘ9g%A ſ ɘ9g%A ſ ɘ9g%A ſ ɘ9g%A ſ ɘ9g%A ſ ɘ9g%A ſ ɘ9g%FwYU?0V~/ըE<-7p ̒7/!cECw>0kJt^#( C@("flbCO@@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P( ( ( ( ( ( ( ( ( ( ( ( ( (-hP@^Z@ďg:/ȧה? j( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ((@P@P@P@P@P@P@P@P@P@P@P@P@P@nK@ PJ~$ȗ?xGEM(Z ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 4P@P@P@P@P@P@P@P@P@P@P@P@P@P@[R T>Ɩz͜^.&p팓!x$=nHYmd]ͽr@${dMq_ -XxSFnxR9H{Hz ݦ+_oO6cix;+7T ſ#aRLDG9`+|a(wqJOQt6q]6?9]JOQt6?9]'ۜפE@]s%'(JOQt'\Iwox)?J E!/-c?|פEop]8$oNk)?E [&(< A_og')s [^ JMR爮߂OMo%&(!1!q?nx#)?Gq]-?)?Gpֳns.fqOk=7G<@>)x9*cNHƓe>#xV0 G>IfN$vc\h8ֿVo"qVi^=ÕoSqCr9~*2 Qֱn^< A#B>=5D< 9{H <FF;[I=;>.x R"pGR"iR"i9ddSrHo.s%')s|?p)?Gl,ˁӺZ.&47? M1&AC  !dh|H𣌮?_&7)4?^_&XK ¿y?cxW//@,o W%h_ 伿M+A_7+4^_&XK ¿y?cxW//@,o W%h_ 伿M+A_7+4^_&XK ¿y?cxW//@,o W%h_ 伿M+A_7+4^_&XK ¿y?cxW//@,o W%h_ 伿M+A_7+4^_&XK ¿y?cxW//@,o W%h_ 伿M+A_7+4^_&XK ¿y?cxW//@,o W%h_ 伿M+A_7+4^_&XK ¿y?cxW//@,o W%h_ 伿M+A_7+4^_&XK ¿y?cxW//@,o W%h_ 伿M+A_7+4^_&XK ¿y?cxW//@,o W%h_ 伿M+AO7)4?^_&XK ¿y?cxW//@,o S%h_ 伿M+AO7)4?^_&XK ¿y ?y?`xg//@, O%h 伿M<3A?'4^_&XK ?4M<3A?/@, O K ?4M<3A?/@, O K ?4 _O3A?'@'@ O I '$h?4 ???MgO&O3A?'@'@ O I '$h?4 ???Mg_O&O3A/'@'@ K I %$h_4}  ??>Mxk_O&O5A/'@'@ K I %$h_4}  ??>Mxk_O&O5A/'@'@ K I %$h_4}  ?/ `O?^_&XK?^_&"ᇌs>4[ sl$haNWI#@hardinfo2-hardinfo2-1331e88/tools/LICENSES/BG3_LICENSE_CC0.txt000066400000000000000000000000431474767047500230100ustar00rootroot00000000000000Original by siqueegee License: CC0 hardinfo2-hardinfo2-1331e88/tools/LICENSES/BG4_LICENSE2_CC0.jpg000066400000000000000000006615071474767047500230560ustar00rootroot00000000000000Paint Shop Pro Image File ~BK.._R@ =H~BK ~FL ~BK8~FL<.f~FL<.f~FL~FL ~BK[~BK,~BK'GJFIF[[,       }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?ߴĚ׉5sVkһ}ı06vH`Ǒ56Թ;Gxׁ"𯅣tNbVi nxKw1OJT0X+k{zߍխg{|\r=RZApo/14K w#c7y+;hϟxgD#ĺ >KbٮMP@̀@cN|Frֲ ] p.ZF2w%I6L= RhF&. jH=U(_k`:ְ ]07 51N/+QI6Bu-Dc9b6e9[&Թ.n][UDpT%-M'Siuq[؛?Lq,.ݣ{{mOjzH 1y=|t֞5O\;oz-mQ ~O08g90XkC-dM 5hYJFK!]Ǔc6N(H|!Gķ_5 l4 8]fv FK.Zk7_i_k\[PD_/ʈLW*3Q,G6v]zQO-j R[5sa.\CUO q i?_Zd^, >+O/mq,Ŝy2*)rij1U % V>Tv7~]ɋRm5k_ӽ i:qm?~ΏM8h~~>mIB+/I$+ے0EdPz$~2qv(o+gǓ?'?Qh .u /$ڼ fIbki)Ї3oϳ}z?S<+qfB1iUvB '9F>e*X{okZGOmqFcQke̅FIT`0Hf-*RV?7N*ҥN\6]|g? %Үa4?\d;+| >brh5ݟ즊O.)Z[vJFUi~Ei;+Ѩ aeGܔw;m*r{xF=RM>;SHRU+D Eb;,AӱVGb+L|Fn'I+s('q?o$‰9O? ğQ?PUdYu?z6ϭ zdya_hZOR k{kQpq3A #`4+'mZJdhbYB_H r1R{)EǙ=h_F%-cg ^"O2R&ەyeWVobIٝdB'J/ [Y:5QKbdeqΩoƠ;6h;6h;6h;6h;6h;6h;6h;6h;6h;6h;6h;6h;6h 0ȒVU;W ğQ?PSO(()'OÔax ' ?wW'3Բ {I#?,q 1G?7Q'0 {I#?,q 1G?7Q'0 {I#?,q 1G?7Q'0 {I#?,q 1G?7Q'0 {I#?,q y5am.yFhT~ؼZgY=[:Nk3%l)r939ڧf nXxTbRnZg,\ 5RZN-9s>myb5ğ1_i_{o&tBmK6yJ<Sy>UV"N|ع^Ks_># .U%>oss`77Z ]M,.a"w]˕=ԃ_e8f85Zyf%QvvkyS?3OՌNou4UuxiQ]gI M5)4) ddF n85Ԕ)U_}UNU%CСwkngxF irXp ?0(0jOzyBpqmmoauGc񼚌|[\,Ѭ'!mB)ⱊqmiFun#Nv,jA!db^pPO_Չ*1b+_sJSӯk+Xīisb,h'Wi#^3n(5++o{v2/ -g^[֮B"!>SI(X.pOx_rKu;~ 8!]661FbRH;P@(yFT%$-DeQ[%Fj[߇;iO>:^}[Z @؍b[VE:#N ʷ̡p [Q=SԌ_r?OCiW;mJ &bGfN@碁 -B.tj5&ivz.Gў?k%_L2430${ MNɽ:Jpm*[|ͯ7Yq~X;zy5w6qO9u|;"^qڛ(<⯅uhzm߆<^A\62AFtm0x\L9FqOf}W{qOru}cZ5iiJ(ߣw|y3c? \xO𭶢F9њC!:>Gˆӌ8O. *jwT'9/>U"ɜ2lXU8eqnNN.f5+so~ռ'gSE?5cT6y.ȄUA p_*,M:+my;y-{\ eNZSS''v7QOWzE}YxP@"5-'橣hxX{M:)6T;|X2xɩj7>vՖIeFhp1$>$v9ǾsS 9c9ʪ~7~'|Ycxϭ2F2Å@X^é-QmZ<*Օov:X{^'QhZ:a}\۱BJT{ɜQjSU}>FG&:vswDj̓${$U9]UgȪunvsvPS0~УEʗZD,F8 'Q)@MFw}=QV]Y/+^[bkNhߴB@\SºRK,HA9Gc989ʣnROWZzkb5mzovk:v go|!Ŏ|T)uAJ6鮙S{~KN_O]}xOdϩWi|QaM"v19 r9Ӎ:ew+E+ \?;2z @m=SN*IHi(Jv+:;Գ&s*"8!K!mƲqO__13Srmu+ w|NfG{Y@cQr&PC?wx4 ko[,5º(ǤFKg .q2[$oX?q 59ބCEvmf ]98c٣NOtE/"" 18֒qkEksP|oՎM>@gݨ{D回i=@|K36` d*)+ Q|j$̭Rwc'N7v%tnI<7a4EvM'8TyzZ_vW7 ˉ'-;BdtI՘I-C[h1Z +8⩷'yH ( (Է:j!rPD.EuP@P@fvMvd(pXTӽ5kTyov<ىxJ֎BV~ISóp܎2Ik_;y.5ZM_OK'k]L4s[j~)m/ gس `r!VpMI:k/dmuw)ǥiKtC[*60;uJIk$1пh IZ 47qױI潴oV 6mjWyofUYְ`z9Kz=ž?3WSz_־FŶ nYOi{kP!%v cTkJ.1juҪVw=uF:[A}ە jVݺeIH娑Y s4{J`&g<\ kFrۑ֪?ICfOHS؞MZ?rNWٟN{'Ͻ>[%NTt_tL>[,:ŲvqH"Jb3$8=9d&s7B_;;?,VŴvZO/w^yT('d(>=c6XYUK n<=~ ±׵tP@;x^|Lެze>G*ȫe Б,b9ŀ >7|bg"<,BW3n=F*0>CMR?R(K{3+T ˒@$u]#FY[:/CЍZX:B< [cXq|ۊ44YЕM+$O.FG]p`v܎y%qud}Yeן!dPJr!t8#r98OS(ek|]4x(k/{uQ"33+$mʓ qr|NCM˧] Sl ߴɄa F9cNv7"Zq[}"JjMIvzkj ]}N +$SF3jz4 {o)ShL+999pOP[^$鸩=_>^J*5wdIlѻ?ğ|V[ \,2#P^06ԑ;!*k~VNVo^}i7OULWKw\ xMSTKZF=9߯qx*RM"LP.dP8\v?m=Wݣ; nnhQK y0;B(W~`F-Oc)Bt%/z˷k/b|YmMu[Gk1el$9S1NINg/on(*i7eV鯙| mƻ,jgʪch“8?Ga/.^ {>\c#ސI:W5jm4΢ ( >5]iv_?ׇ$X/:14UeQ[K~7,a@F-HTzai'{F|6?w7_r? ϶-Z2|{pp<3MZ{?Lm/.-Y-λ{10rAM.e'QK)m}o,Zh_!utvv|J҆v|NAbpsMJQ/Ϊf[n.\^(e tm8U}'8_/#0UN}q鶾fH-een$(  d+gg;og4s:m_ّe Q\pq<* Ctkmw>5S[;eմLnx'gPiG4.s%Yѳ5V?/t?ȫk b,IdqUbOAH;|u^oh{Zgz &Yb#8gĪ{Tsp[^F sˤg8`Ү_FZLIƤ/5Q9ǥ aukzωm4ψK>\j&u D2KBc7+_pZzѾ<|0 +gk~ǧO4,nFԶ u\62\x/G/K+&}_/OӏƮb\I'ydvQy1ϲƧKZ_n(B[.d:|+bIN1`}oI*8f4lc(b[kfV?o$+?(d. 0 o zz[;̣}3|.|ah9 `TGe3ZbSKw4-2 ri'-)9֝{%}:Mvߚ-Kcbo ,2llg8)ԥVa*m+R_WTqDMC;F3#mY_qvuݚű!W}ҏ0+} )'>EƤehF|ic7!X[9FLm؃T?̺T]_i>88,%Rz͵":efay1FrLRw~.kQKmbm H%Hl Z5C[+k 2r2:1T\n H+# K@UP@uk")t2}^E]pS El.Ϟ4އ'ǚ<]kX%7ZMY2H` 5:(ʬ1ߖ7Uw傼C*i;/?zwZ[FഽdĔl*>_{} *µ5^O[j>V̂_] K!r#][vIݻ∹8_bm+,FOqh}'͏~Wp@,bֵe}xV"OzdRh!,Qb!I [ ך"{H2T֗b+).,/|'+Ĝ@Pjo#9*nk/HlcR-t Y$,T=B)EKߥZz:[>[wcN>,Ea ; G)q쓞j[ӿM'Ÿs(-ıGe#ŏ8`碨 JO޼_o2mr WcxEuqMǃ'5xZ;ʚ&f׿ɛWK [@|ű7v$x8RqketAN6|o\y`(sN u\4j=ߴSֿ[|2o|ڤ~ St`'XdR9Xn|9 pNz'Hd_SYÞm|IJYˬ氍"}3^!fHp%kȾ+|,xgOi`sU_g%f3| "Oo@NkS,B06SFy_K,'F7m]6]竽&\NWk]>Y$q#&][ r$'>)T`[~a-3Zono鲖[ !QgrM86[;E.o4Nd7;X2djZ5Fj%w^V$;_Ig1": pi\#)s5Hjd\`\3s qN:Z)$]wl\|d>M9.#ms*rYFh%V 5KoLӞ=F|_z.ς4<ٖL@t `ڦ] 5#ah*~˕[Z|ea{mY+N^)ܱ+6*QtO;"Ȗɚv c ŵ iIQa8vRIolzf*Z/)s9[Wo[ᥥm.B]: pf`TÖ憟7ҋK]? [_r-1\B|9mRB@Iku)*OOnk$ `O=rIkœiԒOk{Z/_~hiլmi|n,I*JsTKfEG$?N9IMY4 ؋XLH̪vO?kû?橅V<#rܿ ;zqb$[ךQVUec2֒tHᇃ5<;i}pev 1%9=*)QQ7[M6뺷m^|2/ALKJH?'ye|[O'+/CS'-bzG|:=-C??j c*I# Wjw\Ag{hwSg%d[inzIwR=]uT(>`/(K{}Ln`y9*.N*߬#$殮*5{W߇ʏ|7[\+P|OO15$ rzŕT%r\s|_-o[rmK[;eo*PmL3 if%bM 8 <8E Ww/ɻy%[Kvot1jkrѬ HNqN{ ( ( ( ( ( y"jrϷYޓ2=?31ȥtu`GCSwwfP@p&ƿj6ך?.<6"(r  02vrdcK}^4!-m d1& )IE1q䌵_"kZu=2BeFweUpF:(ԥ5y`)0T0GHqEo0i8;]ZHTӄd/sA<#uC> a66-m$|ç47{ۿgͥ9>xm,\qg! ]:~[wF6JŤ  \WvٴZm ĀlT 7.튻=]8JK;hҷrK]ڿǫoT="rnVp9nB:}ssWio#:RnxX6RAi;KBBg(N\ۯZ,UiIR?LSUOG.Vo#𶏪Sjk=Ŗ*(wn@3zKkI-NӔݩWqsD$10nNsEI U UdRei! ( (><ʿ6\R{Q{> .|##v嘜kޒwWCjOLA@xῃi{gm1m.!V,<=Kn_"q-+jzF%~3T2;zGujF[|տ!P|v?+41•gFFs+;w#ЧFIYݿ-~FtNGa/fR#l זَwQM=]#Y~UYGU+^~F~̈́wkbݲƲHfc&dY^tBRaݚȆ[uז(Ï[u%S,;`Q _ەuSVWpwZ-~fairFɧmtXX~x:g $NH,둂\,lFE_tXjT%FM_W4 }h6md4fwN~bN~c*wkl#L>.udK^yP@P@P~хt}TJO_ F,K-i=u(2u]{DТz F}ڿx䞃#?QI%yO&Moيm/RF]'pOJj\{~"k6Vvf.P q yO+\)7̮x2mJ?- _^)?|K㏈ڧM3NMԛNԞG Y7:㗺_#;F>^'q>xZN\嵵ۯ}|r}ʵÏW~tߋ 7r-甮g7&)8<4x$W跶E%%Y^|]uvw<㏇Yx^dXO,H6# $=ve97fX D<ٿ7#+|"ȟO7/ ZQkk}^Cf&`!(b bʡZVOd`?hKZvmG? e?/moÞ n-af+%kw`f'c)`tӣ~Fs n_<=mXίw5G}:rHC7.qg8S\F*JL\.[ǛMjtZZژSw+$qEM?'Hc'%O~׾%?O#B9'L)Ƴ3 :sOպr\*Jϴn٧{ti=q:o5 wp3*Ρ@pKt_W:*{~g\K^x>͢[SWs 5tڪC(UvtkYImuΒ(f ʙ g+q8d}裉 &{V15I-=;pkmEwRn-~xÞ!> GI˙ ԣTU9 $=TsB^dTJ JhZxU/zk\Q:56R1 ..G teyKnϿgQҊt+ioKz۾|}^[5k7YC^7FYJ/kK/Fj*qMuI/w=y'~YR1|%;~4(ڕސ,->k_ee+M^~=^[$89 q|dcxBn]v.dzx:xzK/( E:O=OƏOet{ku{-bKJG ٘"$>t#~neƘXO܌,QRZ{m%[ .e˺dүOUwdI.M Ũ$OxPsj1W,.n3sO 7m(}bд};L-&EKqj$#-Ӄy{I- wn./ #8=k'IH^FMz;x[He%?{ʥSxvKyeVM4phvr2B׎zʍ6q4RJjxw@kĴ7XHm0?*!Z*~ʜd":u{Z9wz?]BqPRHb<6J҂$MmhW-ygZ]2HUb@dVSZQ&͡J% Wi- ,N8?Ji=c&%E<d~>XGuF1|Zz489'0h6P܆V%ӜgkEʶ=nIjlhPѼx#J!XFYIBgxD*E-!UP@P@Pc`?o_g_xvkNhi('E]tL1|[9j)IS,g]SΕJVWu?x |~,ŏŏ>9ҵ_\.4溺vPAN)dThWQFuQMһQ[$۶\FRNQZ#ߏ_⦙.3? mw0M/fm9f"8T=7uKM;3A@P@P@P@F/u);^B~g#?xG o֥++P@P@P,o-Sӂc؁h35\?qWV)8$Z^Y'd=l ZT1p[LC_߄_7O:?x8]Xik SOA͵2I O Ev_G'"挠Sp\[ld^k|֦[:.h캻ugn_>%|>bi E=px5MD\ePiaDˀƦ.'G*|JrN*r95QiIsV«Ԍ]k{wkM7~x#Cօ% @8@p2zW!\PI Oޚiod9|>#a_;t:<  ( ( (h[?IM^ goIϘtr=VwMLA@P@E煵ܽ.Jc^DqD@qΕ.W}R*UVz[*hgx[~*k~)nWMn%b"vK(|"l$82NɪCYRM.i;ݒI&mMuQWQR7mLߊ~1k2Ė$/YOd:eޞC4Q>&ȸ/5'$ԕI껎 yVVv?!+7FLF}kGg|*]|n5ig}>h옲cpq P$MAO;}7){=z-g%v[e?_Tf&_O@qYw>7)Np)BK#ewM_ng[+h|bq ~Y{U $e yYg8 ^mJ5hԍ$fZEH4׌d,yexv/$v%lEb #+uUey^MF4hh(|~w&Z:]?_E|OG6͏tFZ=Ðk5;ՙRhz,Ѭ2IJyʍn:9MY[1E1 1PDQ)}P@#gk`q4=O|RGWbI<ä>X:o f&ֽ/38>M^~シz/5@$.2Ne!Fy 3H{^W{oV8**&s{9͐21OnYM;MTQ/NE|HL̾kDHڙxdx@qG'>*)h{ܲq唣-21n O_|>| WL妆%d'$.N85oqwaF3NqSWdֻ`.Od ( dKSɬ擃M_Aό`<[;pB=Cd2q8#jI-#֍%gעG׃Quo-C:mt3b3(jM5tx_}+vkG=(V3ռ "GoUP@¯5o2QA00u澅\zx[ȹxPӄ|3w3$oqL0U%w樂UU5Mݴeenj8<ysƎUl=Gpq$}6^~c+JaN}:u;wK*R{W͵gd{nQRjIJF 2zW֊ZOTך5_4w?!?~'('K-uK=a[˨cV3m;QrIT< "Go ( ( (w~џض;M?>*~/ԭ|K :(.l;a9C7OW9k݊jR~ץ(Õv_.^"]۸aC)A5WV |Hý_&]GHt #qz aA>D;pJ: (OeD7em'nUd&Sv')|/?coEů|849;-ͽD +0$5<;YGe̎=mNusVRGJiW@P@P@P@@Gu29naQ#?ֳih;_<`UP@ڶ36eAϱFWQqQZ9/oGo"iT$c9ۗEffpo=FKig  _RԊѫ=#BJq\z i麁aaAzUC0el<cDեHꉅZU,$̇[ң*Y䶎e 7sڿ(Nq S1*t唠ҒWOK-mgumiaq#]ϔ~%~^4ZL'­no%֣Ȏ)xH#!ѫᏈ*͝L:8v}/;0RvK]|'(KRrddItGc1q}K.l3F oFW&ycRn;8sjutyI7^$ؔvCV[ H r3NkeN5.FY Adn=zSum'{H'fƧ*5 @rw糷8|wď}c #TGQBQB?͵ʆJ7`7s^f(C,HY$pN רODO-ల3Wʚ'ySYb᳑+z97oc;%n*-gz/};? xmPhRg30 swӊަm%)fhޝ ;}^|3hr>d`c;JHq'ؼF"<~GM- ;椭hw/Ὲ:+zot]@ܬ3^G"#eR$P|FEʆ,>'3Ù#= TirS\ӕEi;0ei6Aς2y[ƟuOxN-/XukmN|bˮo,)p⼒wORڱ喝m/x.X YѓM X/tMNMFhLRAx#+Ӛg)8+eowC 0K;r|l*ыz]Jtfl| nmR#,9<]AMl#<_z΋ f(8ubi6yS!wk|V?Cg+MjD__a){Gy+=Z3[c "ggt4{a6ܨPsHaxo98,- J6wO4eHp8gQSv1] 4X 4);"H-QEut0%b'02FcRNj_JR|Z;G¶6bgq-mnbY3 [<+$.g;JtaZO}zo4HuYu.KFgKѼFHPI#_4TN7e^vZ9'-([w{d#B\U8SN>8媰~I~ OSV>ែwds^p\y#8p;`%$vsIEtio?W\7Z<}+*&͏e%43ռ "GoUP@P@PJK|VIm⡨xs¿ X̩o cRbuv :-X,$sF ס!'(s+Ǚ-:%F)VOc@e2-/+vm:=r\iҧIVCj*ˑm#֯ZVՌf)'sJߖ<˙쮯"4IsEisY4ѐS (##W8ִkoa4pnƒWMM]={ʜGtP@?Ҿe_GˮG)=[$x;V)iP@P@P@8='vy[Wmu kԱiwb7h-IUhbuV/ sᗉ4x+UKU\ kGiqY_ʍh+iW[z=W<y=&aאy-]I44hT%y]W8nV|i+ͥS,~{d]cjlK2rkO#KP]iPQNrY4ڵZVNp ( ( (wߟXU%R=T/UZ:( ("go"g9%F3=z*euԧsr$_5}mgI|K{Y.L+]cH!rSԫe*i7kw릺[ۑ._h+vx~6AǨH B5b㑐y8%hu#n: N)o'N~-|f~z%vUiٝt+VUno(-K 5%?o+lSgY]7UF Q5_*)xxg2^!d4)Ek6ۻmɶz}4#WU֫)Zy1aqRq־gsQ->oX.<+g4.9G U}SqJ1(im4,hISSmfZIlkT( ( (>~g_&ь0WVWV=_$x;V)i ( (y)7epZ~_{?f|1e^Y|R`6ڤ-wn գy!%?¿QԸkČ5HS^0*jRjIZ3(.uZj率߳7[TfO ? 'uχdmЂ7mKURHnaq񣏸s+N4Ǘ߼9%[ނY$FSSa*bk/v-]1a-v^;@d;OEtxgT=yA9ÙK]W2pI_r}IP@P@P@?i#Vj(Z7mT/UZuTP@Pw J{i$w?e``3p+TeU|2o_n7^1 [n![hV :Ak!]m<}s&km5ZY>'}-fK;R9 УC 1QAe5㪾hr<:2ӽe:oqKeФ.Ta3A B q8ZVQ{ D+c4.YZuK KYʉ-#d *` {\ S䵵cHhn/Kڕ^ڻ["+8Zǘ//2[l/܀͢ K:p fDf숼E;ZyrF%-)97S:{W-ZѤҒg`<ٻ=}1S׆岹O#ćcܐ88|P9ӿKljSSwצz WZ]ƙCwuR,bymrqs\l^Xm$#\f. <KM-rFo.lXd;0~YҎ[8}_ȜF.7%}osE֏j'JnTpXuֹ8*XUiwg60|O[2E$!۲/oa/q5$1UCUY郜Z/=" 8g5y̭iǭ"mr0C`Z΢bƲrh󿞍~nw4_ 9Ya;8]BY 1zMxXN2wkӧZ YFV5w2]Ak)bTl׵&zI+H1^nG)|e5~_u; 񞱣hjگ4B-fXĒ[#0Pd$ @ !i?_9@ !g+I<%8V~%HxZOP !i?_9@4?߉8V~%HxZOP !i?_9@4?߉8V~%|Ghxo¾?dp, e sF$?,翍^/oٯ7AcῈjzanVj*[kw c&$L8V~%HxZOP !i?_9@4?߉8V~%HxZOP !i?_9@4?߉8V~%İa <! Ļ 7sFz*E=Zv#'ᧄͼ{%Q#DQ vI[z i\O^]]wNF: t;TMSܟgN[uobͦw·7 sK1'Zwmݕ(kҾ1^ig3F77vYIL{)>pO83Bm+#8Ӧ:J|km,L,H$X%6w7|]-/DTzlAp!nʏ8&ti+3~BK~BK Background__@~BK =Hx{]}۷*ʕ[+u\9T.nb_x1<,[#A^h@MdM @$۳LR ƾ&plpCݿ__3k̚4wc{w˝'SxG'xdGy6|M7ݼ~}}ɇMy2 ߟ=[zxژ57]z͍kV߸fru[z]-wxxֻoߺ~w׮߾g˗plO3A'DQGC:3|}h4.mmdjQWO T}M@gRg-6?,9˜zr Q~E0c/ݳh:+aY7'#aO(Q0uk'dΪ\-+S[[Gc!a wJ#ԅw^V|1}8{ΰ>92&SEX^NrQvFK,ι.N w_NP^jlxKKn-aI!R'<$-v6[\?tFQW m?OP~`^-w;Zf"S7.et{GS3]yDmeMUHij ߚ~KߙԲ0KP]_yֵR;rux~kܓ"/toR^ [o s)6 ʋY)7 HlK>+ݗE!:+nނZر ap&v:dQsza="b~Ka=c/ݽꤾ$%)/҂oX^bӨVW1WҾL _KrvȩJX%PCҚx({ݍFqidYaA!!O{`OKY^YGWA#O{>w;RsyϨ. v^C tuStyA/Icctec?su=xp0I&op* /<hp~<|A'>%/ۄt~!# Z&S^-*T=[E^xj)6M0ZIŷJyj&/&//28S8|!KKbp 1yr#K}p/.u]v Ӫt=C䐝 ./!O^eMZߤvӘV)6 ~EaWp/16ț?zjcR=S/ S'kV뗲ۗ f gnWr[d a&u+vA_-93_;om dLV';/ S/xyVsDca*x+\ j??u,a w^n%kC)LXx+oD{ɗI"ɻ8H|K>o hESoWcf>uW}uYj-X,9b=A0qvbbn0L|ie]ֺj(,g:-~j9/\gY7됗/nu{j.>1gsuY4,^X3[T=8\r“0O^N30Lw/+/gaZ VGaqǗVn0L90c`m1 4̅+g7/uz'/^ꆕ'l\9#V/;uarZݸ+[:Vɍsu3@^rZ+3dq.r SlNՍ,'\Ep.^dҚ09PM .r黜Ib`Q ދV:Y|s%絸20$s&RVa>O9*b֌%_/jqe`97- 6g?!8V8孍Mͮ9؋) Sgm`i]/3[}*.yg'O%9lcs/}J: ^WSR>iGAL{v4\uU{R_EAZnǷ6ml`U%t}[I&>kuW%T;װpNkW$ ~Co˥]9fb#t^h+K2$Ӿh=T9z)j?mIyܨʯi.ϴ/އe?V]_ϛ&6g,sEȷON0fy4/וtFcϴly>YޔAu+Ip&v{xWޖќ,1.:ێHe^J!y6pnXvWJ,]?ߥ zef%&f_@^Q2a1!"3)Kf&H*}W?8db Bv9ޕ㝼HsB.u/{רZݖ)o X8[IǗ"(/qH;ay)K??Pj_:P(>]@Fl3aznZ^^ Ke{Rf;C^n- ZMl{қ%\Waᇞ4!vz_JX`p7νĽJ&WhܣDH%Tt7 ug6%XX?g>+Q|3hΠEpuZ^v:Uh`FxqAjʋٖb¸ {##}LxWKlع7Xy[ 6~[?vC-mEҲ!M?&Y=ٟ^E!/+-R6 NzoF=:E#{ AFtH{% Z̠t"-"WcNzLȓ }FfZp:;'};;<;ir_IypF+/⭒Iό弻q'mv= D})%u YOa@+g3S}j~[s^6p)xWM7L_| ^콘 Kȱ &O|6ꥺ/Q^+}Ys)xJ~i'})O|DUsy\?k~j׍nޕ;6W~.gz.Yv^"J[ql]e}40-s/Ay!s/08yS!t.~e/N$wG;_«{3q"L( :0fW[jṗiYq v.!C_ [ku@}r=Խ0 ~ld?5PSl{fc[Z3/T2\S^Y+;2my 5Fx#GBj}Tx)cJV+Gj%țڅ PMyp4Pi;a F{՟f/~WZ/(!yz{R^3Z]X^ݓ԰p혊Y}%/֗7OOewwzf>I_4`k ˯Owv.~]2etFGKiOnPJhN^)dٙLU35^ދY!ߴBꓮo5zםI!}9fg$¿\ZK]?i ;l}O|tk:gԆ 0P=bu#=g&Oj ,7<{9A˽!І ޴[MKL!oɛ0 ?:Jst_aƨgiK 4CN1P,\Dr">)=dK|p=SlN/t(3wLŒ Xv4՝fH׊brn1'u 3D^_Y< ◿Rܞb 03aa0L>0 ,/ ޿aɃMa&MZa Faa#ɇk[a 0e{/  0K?0dߏrϽ0 3[}. 0GӗX^ɇ],/ #<0L>fya&42 ,/ #{ECj:05)LaxrwuqqvQbɋsaZ7:ɮz, Va>a dBEL9NyY*ħ˸2? |B3M"۾ VILh +/2WZ!DYʝFodCyF0Nŧa<8M0 L&T^vP/F|ȫgmTcY>THIr_en3H6K =yZϖ#0=Ŗ;yK;BEڭn!qH<8b8"rݔHd/]^Ҋ Ä(|Ҷy"ҡ#8J! ]HyY#PGzrєdH0L6w׶3sX .Db % Ͽ\#JG)Y9v@$ Ä\ y%,8sH/iVT߳eS*QwGߪ#+GGY9t2 B &7N%aBАکa% \N}%#ϔs0-,/Yy兀񏌅(ι8*׽s3S7.y2Y=ܤy#P.os!g"9ISOXgp#7Lb+qGTfc (Meq9oJ<%MW/i+=e#\]E4vqVW]l#4iHrދj`M[ 1D?1h #/ڌsWޚgrS "+]1} g,3aX22N?΃\{!eegj>84!%/^BZyLLa:!+"?`zl A1kQ[hK?!םJ'SAct+iř0,/G(uIw)HB1臲 @LÏ ?YhLLDtu&C(/虲Zv@\K@#"ƩTlPyݶg/z&ѫ*/{lDwHs-6轺=؝`O S; Ʀ0 \ajv0(~Gr>XvZvA-U2h;2QMý?嬁-6ݚ{if@wA`V2kN^"֘Z,_EGJҟ4j_I D?iWEԅdf|G8fk^z [+3U\Lݰv!d]'/8ڵ'XAyD)stpd#`QFԮτM*/nj&NQ^FD^SCjm%f]{-QrjSL@4P[58ykWqȨ ;8 %{\2;a yO%54//L2MQiik ~.L#AXS-,ՠ"m\ڋ#̆Qy1QVx Ӻ? Ħ0%Vk0MrsonRȮ,z1Kha ]v!&0.L |qѴ8U%gly2ja(% ouϽ` Lg24DΕ.NY!/gfiaEiYoLAԶ#nn o&UO%6'&N{,OH,W]]>z<÷Mom+o{>ū ̐&iH^&mh6̽FtS//ۯ(/mD3ޖF~1KuSw_{ \yIO .//yofOE}ھcP?|7`7[:j Sx-/߱}YVB+ǽ>cV GTZ0pwy=Y޵45bA~ɇkY~,թ*:+a)ܒ{fQ\y}w._񇉗Ïyj0 ~.]l6o/(2L)1W/&H|/1x2Lq\PyٟG?Iͱ Bo_q[)9s?c54N`7笓I6c"s4VC d6olu a‹{VpKOU7oX8ȆXz:KլV1qgKðdy1#&3!qQ<`|^?Vg?Q>=4` s;}C兜0gJ)"{s}v\s>Gon՛7Ȏ"4^, {Sw Fh>݂X7vPR۶~>'ܘ#2"<7AxcoKlFIO^p(IOPA.w9= 44q{U!@2y6SPy1{ӝj.GZ2˺U;u+"#"S^'/٢,2o>P >5 vɋ=khڶ]C)%<oK!.TA$=fS޽^K{Dx$& yJ3WyCrVOI7y=AGGY<)܋bAK_ӏ ܃N5yVқ>T6snE$M73Cnى޽Y0=R63D?\"qo~6v+s"o@4/HWLJOpy*L1~ld/rbrڭwrcC&\UxhT^=a7"4;YuRp .xx 4f~y$BGB,pxk/zvn3Fpb ۝"Bw6@Iy$dd8tKMrspZy^v./oW@=! E󂽗@IU;]P牼HU[N 3aZ qH|y3K'/P&$mG-/_J^TtN@ E$ݥ%g3Ŕ Nݣ|ZzoOuacpU;<8{sG'TvuGൕ!}8noKwIbp$(48)yKlnz8&Gz9e ȋWR,qD%g3\#*(JN8Gc,zBM 9avq CSdϔ^^GCө]_^S(p M\#sQL&3Tj@^#2 ta7AyLPp!==4a}GYy\ӱ8C.I&0_/utgGCxRNd+;}cRm7pF FN-L؏%F^%boGHc+\(43 a'\"s ʋ>Id/ ,❾!L GqRDr1ɨ0OpMDB^1n<򂖉A/,l l?'f$SyTiu/G9"ν h6>TE,MKƧ$j_~_GML )/O|>JɧVHͶs+B}a&ͅ؃a>8 v u~1 MŔ~Dޖ.v&sa&YWLyUyEbeBRTy1gSb}X]͋:~0L]sjWX}sMq;sy9c0E厂ʋ,N%3f/׳^Yաw-D5_kY]GU U`C~l6^7w*!^˝d EHȷ '9m9{)䴣Iym5y.Ri:v5򂙶LZyA!U3i̶ 6/竗gjМaT};~m[uzE\^jE/P1y ~(Ǡe捖ƸN3vV^pv:c9HM>pO|GJ^|ulS>4Lud 4.t)6/LXڞ=#&NIbhɋ6xU0qY-]q ]Bӈ 4ܝ✚U_^ګvL-/ ۝ZN^ 5 .. NJД8vb77KC@^1MRi"l.{Ug³D^ftˋ9-13`֦'s//yXC 6 yt. L{1 ŦqK(^5uec5T!g8 V꧑/硓V1;CCy2=Xe<08rŋ.D^Vyg}c;|9fy4C+uF2橊OvXc\y9RI;!)yQ]R;]\ϑ)yQ\B@ȑ4tʋkT^pȮ\Wܔk&RK_e`0rͭt׌3fc)]ئ'M|S~ǏA^zZVe $͖Lou5#7b&Ī!/!u)0GAtSo~Y]&Y#/1#5|3&).LkMbx0íf0 3E0 ,/  09a|XySc0LAaya&'X^ arb 01`bya&X^ 1 +k0 X^ɇ,/  09#arb0e 00LNY0 SPVnu )(,/ aJaNaaVǀa׭0o: o/iu )(+Y^ɇ Y^ɇ^0 SPiu )(},/ CVǀa0LN ,ou )(: [: ۗ: 0 nhu )(ױ0 w0 ,/ %׷: 1D19> 1ZJݎd,*/b?tΆtxdi=OĢ!+8c66ne'L:2lpݲV`2IN"RK 2RE9&Q^h~@xU!˦Zi ˏHWݗI>h㏠Ⲟ?|Ӫ2R̽u;T~ˀrnEƶnwQK}==1a|AyyU6}4ѷ5hο0K$E$B|fR) U6H>kG@+/ڑpi0Qiֺ AHtH,$bߖ2`J܌thB#I2I`.wLiT.AkU:F1>}o\-Dُ]̀!H1[%_O9+J[Bڇ[+@?Z[+"㷺 c.:DFʋKh)Ur%2M3F+0^ǜ` !:Mc6V6GFKH-a\B we[ ub0$0)6Q>G_U_縠IMwJL[Hn.k3h^?3NCI@i90 \O9iLcP7tpP#_5lfe$iA$-z#Ƽfb,izzd$Bג-$/Ɵʋ1 ɋ6 3HH" 1k4sUwh;n `c3pU%vHQՁ\ߨnm? 0 Ry12fڜ1 ʋ@Zy Fk AڡvFǬSr8#Iyf 6TWD^ȀN0ΐD!aD2!/v`D@?;Ў)&-a: v'/⟾Uvq^n1xb& JKFajm깷-20-~ZS0$ez7:x g䨕NbvM :$0_^nJ^K1!1E2D3Mp`$;%/Ί-|#HG^\:t6_\w F2hQvf`Vc0m@2J`%"j,$.BJc_t .L?u=0-:[K6ƣ0u4_$dZL\K^̬[oh6.,L'v!s Ӆi6C"xl\6O(-$"3XCRp} Br-f]D@ĉ֣iʍlu f4LrUքʋ*Fr$2#7Qc#V`I~lkZK8ꦞ묳l6-MښR4#6$`T:N9p"A?)[UT+)Oyi:-M1@+Nˑ|2ܭ#ara`ya&'X^ arϷ: 'sa0LN0 ,/uBz.UfxAę~"UѴķY{96/#C2nϱ pTtñkLX^o"ˠ_%'./iꗗ}9PE =mfflo/$?%?F^o~@71`,zJmiwaHwJ lI*v+{]Klmp7g֟e>Q "2΀vZ?1_X`NnS'AX^Œ-PȶfF{{?dK(a"ݼdwKRH:a+)>~'/9@|'ZAaX+|y4.&5QͰ0qsm/ϘiK+=[[(5Q3B)MbO:8B/vŘ? Sob(/%3nk5@ss}E)qor8܇v[򌙆 "Qy *;!/ds3z/eϴCH⇤@I۔XbvT^c~EPy1.S ǃ򂉣3 ay CXiZ^ȂK5%ШY҄I"'f%$:8 KCJ^̩wް-르_Gi#%Qcp6˷ΚE4Iy>M&nř\ۥ"Ł%֜J0͉Z鉮m= {HO^ދRLʋSy]o" y`vqbY^HW.7Zi;IzrIyLCX^˜Ķ89ydyܤޛ{S(/l2'n8# ˲ʆ0MDɁf+zA46l˘Ym<_5$h`Q 9|Q^$\Aw& %gtLX^)M3AN0 '/p'1`f(/\ e3090LN1`pao2 ,/  090LN0 ,/  090LN0 ,/  09q[a 0L>gya&X^ ara`ya&'X^ ara|`ya&'X^ ara`ya&'X^ ara`ya&'X^ arb3 0a| 09q 0#ara|iarej 4b^%՛KQuيӧP$B]1Yk)˿UsW/wޞop9io Zm]n6Ub>,/SNEil>%sOK!!oeNt햴%Wi b%~o萕؇Hλ/zZWj%e}}+~^V++9ե([Ul\梀(.bfue3i={Pom;BП<]w,m&XWޢ:,F_b߇ދf0>*MFWX^ȋҌݲNt3{1I׹ J8b~c_]UN8RVիamjyOmbtC:SDDDR!ܠ`Q~HoRoWSzkTJ*/96o5vԓN2e5?(?ڣoyYжdW(fi9hGg]V§ ) ɋ@ij}im6Do/5hŎppp= 9yQ/ ]9n5Bwd!aPު(4iyLl+ǣ`eCG;Iy.x"mwV.vG7x5^o3L9)y1$vBь `9ңJ& # xJ< e JH^.sY@?hAwtpyo[fzhXքv Ī2%*}y28h}:8jAe ν${/f͕;D^"iz)u*2M#// պɋĩK FO;P".tp$-P Nf Nҹo´OiLK_^t'E{ԐrЩ]o C|ԗ -$/V =h< L>RRr+N^`]Y#<;tE+Űn ؄|:IqK%+Κ9ZOO\ 2e=!p  nM:x:}*/]؍K+eywkMI.Lov`dH=ύtnoaˏI. 090LN0 Y^ara`ya&'X^ arbi0y0e 00LN0 ,/  090LN0 ,/  090LN0 ,/Mc=F#& @?wٍU/f@|Kj$0i,d {oY%#62 p+;XzrK6._W8r8E.M^YzK4޿ߛ+$ˋ*/Ҵdz|n./q8yǀ̬O SS^CUA=Y2U9e)w]5#s~aג>KMTG,َެQglt_x |*^baI*bP^H>z|96j#9[ʄZGzOe}9)LHc<8, p{y˝"w`ܥߩ%%g2E3y.S˜WHp[:LE,IUVu(7͙E#Bᩗ/]z(G4?Zcڋ!ΫKS,V*QcjkGƷOXVn#.85S%Vnrۥ B밁UPF0wE(`"/PJ^:쑗sK2??-DN T1NxVl֊5UHs/kgjoHIһOɵz@A!@%o bo# YA"yfz}#3z}\ xY_zaS1}`򴹚..'lCGJoF;_@2%" r_B6WtJv߉~L:F^>+次??!'/%=>|md9umԗ-.AY;.+# mxxէbv70(8~ʸya0*:tas3|qc9xfE\D^0~Z/!v3hM8yQQ 2ײؓeuEHr*_rk8їY7쨨-ҹ'}kv#08–o:k -TNR'/^s$"A tqy<GDpB^WL?8*#:,H?m$){p{m?T.~I+>{b#j#W 1V[O^l?L;*}yу`?LׄݒЩ]ف88p;WעTxvjwDXVjϽDF5cR;:K?Lh e&R[T^0~Zh֗\5LvqÕUs(]L,yJLRyKLiy/99S}zfoB nL=]9X}#I,0OǓ)//d1-b#Ryj awB@fZI [7#Y3!(/z/$j9bOf Ԥᄼpbl?+0DF&>%=i Ь'sK+ ?0֙nZYqJ0 ~KNR^c.^.6ڜJ0)´ Ieey{B?;} !6AyG 0"cZDCߔkVRTq45y9t^4G#5q )đ$奀LmŇݦ#yhW?;bo:3Zq땦|RWEbis!%jBnӑY{^\}H(\"˟&!?6bӖDa EB-OgMQ\)C?^#ě?q~]4;0|Z)B-/k92$/?yI!Dy0mL'$m!I95`0L<@c0<EaGWŧ5njW|Rǩ݋e&{Z+b ~cH!Nj\$s{uOqı!̘I*N1L! '_O\Ox,1āa%#w?b^#>y#|ϼum0LD^B$5o;̿GGGq·d)o$Gt7Դܹ)e:TV"~ 6KR@| iN\{^4U1B?_LĮ>) M:9ly7>|L| w~_i,#/HnBh@^䥦%fjRp‡>: /[֟q\ q/9wjw4]6'/_+nJǍ^U֙:Px8/Kw8!XP+,s.x0tJZD:$YݦE8UFӛՀN^pLOCJ8vN<ӧ~1s*dQt̕+f.HA9"6EU<-F{{U+ƙ="X`>hɒE}!>L Gg^7?(mvJj4"AHiwh, TuLCA R}Nn4xguxDHfݕ$əf6"/_O"/B:m)AdڥL9HM$T8JA]a SqMd} 3gl8H^S>xg:@LjQ$ەvw ;KkS]؋7B-,z65O7`.ncZ6J5qLJdȾ6n^>d N<Ź|Ձ:֧6ϳ`ưy(JA<9쨯bGpGSMlB3WE*ƙU5{L׮9߬+I.qF_zmԢ%BogOx2.@2B /AAyIZAy)ʿHWn(՘)oC2 ; l0~b\bLn}j\ld0p)6>n(dΫ#L9 gB^9/)1Ʃ<M=/L'D4Y)Њ>-|7P1t|HkwLC@TermeR'TWFjɉ ˄|ky7&YhHôGǤ2qW,JSC6K\(3RD90LN0 ,/  090LN0 Nku )(qa|094LKDɗ{nzHfű7ed~j:8>$5_]$Ä KT.S$T`K2jY^R)9y4O/Olqdmd}vҏ=|{iڬlѽcaf!fWtKا6n.F@ɔ~sn~![C{'r{=sAcm"`aj$"R3w:!=d.WGET#D Gm\MM3G],/ r—#oEGpԟ#V@IhAwRMt ڟN(8ҥSvW h Q0MH1x=QlIhm#P";D)jdp#CEA3+7wY$zE)\d"Ws(\8hxƺҁ%#,/aM$EkLD m'E^nV}È([̋$iP!=fKhLɤ:[)hwF>-1QmR^ 0Nۣ۳G~h]tl0\,/?]3Jvedu׎e\ų}e*/` ݊^ qJ; Vێ@`;)%ٱ6v:𸸈n*H (`!!S'#'/X+2'%F?YSQOʋ/%/8$`B>{/q$Zr#~,/Ӝ I!/Uٟ`W>5~N 䥍ӀxXK[x[pߤ߈6 /k%:Bk (6*BiQ,/3a T978BfFZL \ԕ \Syq v}X4s/a2ʏ|G %٦SXowau`b_+Ŕp@ Qm߁a [3nmzmip,lW=NV:|O94*Q)D"P; $pz]ꮅ>,/Ys_.?p凶FG4yI9j?Q5I^k2uҸzc2ԑ껾\Wϖ%׻ۓ2M{稻}U}ƊMlD}oMtF`Bϸ420ʦP۲<Ԏ"k?6n ms90 a ꝓx1 6pEWLյ[.=c¼zR]+<ŗa14>hdm|tnrzz/DLd*`}~_zUFڤmBۼHT:@,;3M~o܀N}NԂ%c[&_IY5 BS}`0l?Rm+ m.2u\u(m^~C yH>nnp:eDʟJi+ҥ5KKv% v~2J@ GCLR1//pm`cmDW8nAfҐRc  "% |tKM {q&Kry8rA$Y A/mloj7(/!gH;XdʧMBVxu'!/*&0q 彮>F9: WcLxya ~ЊH4Yڽܐ\5Ku{wcvS⺧J*U8ô-?F7N;A =D'*i:ѝ ݁SlZH#=V^lL#/F8vN̛]5b~mƖ~l%ˏ "*#u ˰U@#;\'t%6=v`lA0 0mnphWB*bJ^Cr\gw%w.BGJXNɋ*%;JWϊ)+J:jFԞ{q@^财bT yhiq- KɋI_^V$Ev (/irnyI,QyZCbkυz兤 K(r؂o*qR7R84Zr kXޱ5a9 />Dw|S&Grukh9L,QRIulalȾ<GRza}n/ދV  cˋMK'/tXu_HB ]}=ń[ctCpDS$g-2Ve\O^ g:6cZznz ̤{/ذqO'Qv^,敛Қn5tMi\0G8,acKS &+/vB&=wMyl3e$-u&Ybjνd^LHv.SY[cRX^.D K(!/8Cˋ+x[e1ƐA^ K-)yY^w%,䥏$Du]ȝLyq_={IԎ p M1,Dvyzp6}K&aIkhyaCMÈܺ(+̻߸6]6`7~#paZ?z.M辤^P[l=V$a{m[4Ef_gº tB7K" mU.&a^:o;&q'I}M a3X^%֟F'e߯k+/&)Km[pAmOiƪj'e[z nWEʃش"-/ }*;/6HKݟmfl1f S X^<VݖPy볹ŋa Ko-OˁϾb71L`y q[T~kWw+),/!6C##/?L~[.o1b S$X^BlQ~]Evc_*o] ˏ9>RNba0 3m//vw0 K]C}yća ˋc۶?{lzCo@HO;ݳwOx\%Cf#4WgQe xj:r m i8vّl XSr%SǯV΄џAO>˿E |~"G,6,M+/ gPE^"hT54fTSat_RG;Cۆۤn*/bشQCo.ۇͶ/js$E7a3xo!0FO.q*:Z~f ƝU.exH_ϺN/&!J4d#eEHtΘ{F{L~4NmJKMsQh]8(e?gQߗ;{ 0G7IX0yl%b[3`wn% 6oқ"=BĊkkI54]hO7d I鶥ȩ9cK 7R^3ٸ,q6a=Hd72[Vt@t؋M .ҝ pӷvl@v T",\M:Cߥ$*wȑj`aA;5^(6]DN)PD$=BbR ij`rP^2O|y!yb3繠l /ޑ/m.*"y567UAy`x"լ j&-/'5HN^ɶP>EpJb=92k;<8.wUTK{'mp) 5G699&pD3f S 8kp"8*e_Y 1#Ufy6W<( iĊ"!tpP%0Eg'u<%/uS/ zGh$vq#s8#,LLVf'AcBq/ /h}s@^nbwzHRx1ĩݣEdFO:yy=ʼ1! +rƽTW wI{pR} V4(4G 0)S.` ɂ&j[jiTQJ^´ԋboX-=B%eNɱ^aOHj`׌mȋ^>f.nӖ ^pyܷcVuNu 􊑔RqZzWHja2Qwr.faZȣRBk0{/@k7ZsI.5VM|:Lj-9lp]Z͒S.IaˋOӗHoCw}d^&mC5Vj[iH>$yA^a'wyMv*+X^^,EzkK]1z 8\Mw@Sq:G_`58\Dz7 -X^m\cTʧ_ /\TL0,%%rY<6{y:zr}DyO.c%02Eeiȗx=r Sf>ZyY 1rZ1c1ag 1G-g aY^l?d{yXb.t}C Ѐ,)fe_| 0Ifs2cߡȧw<ٹkb £7Ƭ -4`AL'&R!L !`]Z-|GZÔDHQhP`>L)/Q|*̬gtu_fUgfY/)C# ɴ^Vs#IuGtko{gݍ#iu?JrdY?_{MM>ϖċ4;e߳ט9uڿ첮6?NXZ"`YX z;vM9yNuTGfåҝ^LwNٞUKjKCn@]$r.׿'?ٜYnuD #Ap>yTGz y&e?mtGF nl12b|/eʔq!Sj:{}hRvN]jS= Ju%VF?_nF`ӉqbHEv~䧺0yUv@|?*}B kJKZ.΁T3}e>gwШ>5H<~9q=]W^Xd U'.8ˍ^ԧPyyנBlG/alҠî]쏌ncf~&PzQ=n^tߪo#sRyDe=]&_G-L8讒h0.9dbI/5 \8G}ɷ/ӻ2<~-;DH*6B/l:Y~eΨe*#wkhL* 6MjCǔ𚃴GUt_MzkuZ(H',v躧Bq*45J-˜jŤN4d]/g+vzyo{ՋBYL'}rzIl إeK*3VlZh.L,=;"/wfr9Tȉ & w|%R,5s!6/#Cf!G/>9h sJBpgzqFL/[8}d{LU8Fԝf䔠^EuG15C5.`O20 ;DR:! un)9/GOQWl jObE΢"xOn{J@a}D/*}^TG^TUfP5-z( 8eax lNͧodm1zQm.?_0ט=ӋՋ=0r&hY851#KT2Gzk2EծJj|ExI? ~ᄃ^{( gב!G/%eq5gEӋn V/6x"jCo25 5Cb wCzr'z)E$C~8˒ˡ}-U}m^L//D@aWta{(9G36m/(4ԋ] 7zqb6e7?CH7#4Ջ1b`^^Nz}A^C*۔Q!S99v|F"m/[lZ/Ջ8 e]i{W=FGrH<-i{E}zTS?Mы^ˎܶz)E^́Q3zY71*]m/e'{TLP5Q#nۋ#Dg:4OwĢsO@L-zTjdOwg{!R>[U"Ӈepئ 8stZZomr(pPɥLus+ gu >px-tzYuKHfgFxT/z?wc?z-^5#fd9Zc2(^qSo[m L_[;yC5rt4gWgcE*GS%#VbԷD" il<r$K?S?b]ǽzw}t#΢`w5j>ֲn;m ^ZѢgW~ԛ/KK &I@J$f@@J@/^)R"z􁎯@":&=^  %@J@/`y %@J@/^)RzH ^ P9H @: %P9H  %_.d_>ED+ԆtH(6LX:>oB/!6#e(/|]_K :@ ^<~=kb^~r'^*VI2[DKn:~OL˷Jywp cHՋko} sH.yNG/ߕ]ֿ&R$xozajqrBξ~n}_[Nm"+}Hmγ?[EXaw!-9LeF-\^r ~rB3Z䴩FznB1uY#֨ՅI]?rv#Ox#E}IRmU%1Ћngd*ыjt^d)&i~|/|W;Ʌdÿig<؇) &vÆE\.=hI/6ݣ3'NݼVOoce-~q3V @>t]N%$4 P5z~ŵU5I\ܨK|٪sQQm wm&NKeTo%ާ*i)8UXpgwZE~螠(>ܔ!u̩K Ւj̮K债!F/NH#:a:P^[;ՙx ,R8+* 5Q9+G&QnHPz!Q^P}SNp=E$je(A\8Gd"yI7ޚ>(Lu)YRoL^*SUyeQF6o'3^POzWōHz9%(Fn:q8^M&H( - ^4B3tou> T U`+[TW/y#8{>cL/hwMI/\w]*G1#y鋊^܋+^9 _h'QtD}2nߘS ͛Ma&F#vO-ǭ *!uxuci 5꿫(ڴjiW)EfHm]ɦ]j2-۴K16LoAͷZG2e ) mH/ΞӋpJ/!}N͍iEf ? ޖշ&s7Se^H/GF:q6ܟ֟@@.OxaVUv]FqL[nJޜSK}LU9r1P /dN^<z #^)RzH  %< |@H  %@J@/A)^)Rb]@/K/IFXw\mxPשnm1\eAcYSXvx$V_oƲE|z53D鱕s3E29Ej"]Dzef; "z80gLo=Bc 15 ־uQ0^=KL*D[Av ޚ&NYUw2Τ?kVӾOWы;M TBE/ g5TRuU.F$?8 %dLt;R`s|blQ!-WHhIڍYm]is+2 (3?~Mb]U2"|t zUDWӇt_.xq1BkrL~d y:eEK ƨ E%^mu'&kgCvzkz^/Tg*=)?QU 0^^̀B&A4 }"窨Z~+|2ux7K "z+1ֽČ\'YK =ЅTf$BzgClhҍ^MjP/UV/^z(.yB!-^/!xB_"*wz: jNU~.A威^hz)9tҰr4oM[WR#k襮rtoI/nbG/wM$Ÿ^Us6`腾p If{.%0Ei[9z-7kH{}[}Z4RƮcMUVX^"m/T\^5K7U}Ӯ~VL^ºQ8Y7Kzitc6rjՋz w鶽41#E^ܳiSzHۋT^E9v@?EB}j7o9E S9@7ˏ%cuoy綎qw%/bztoXzo/ %@J@/^)y^)RzH  %@J@/r%x H  %@J@/^)y^)v)RzH { ,r_?AVy4hYYĊi^=r4M8<&rgod뜁}t{W]ty-Q/rez1^Ni}> =orqo>-_S:9ȉjogJ; WΈ88MQ&Z,࣢@L}4qrDL~ i^RTY W;/WAi=VGNܜ`/"GMr@/ݣC'љ>r ߫ՋZPm!zק532 *"ֽɜdOg4O.JV/K?HLT94n_EJ~uFoc87c:_iF{e9qT^= $B/"N4{?I_wg^')MŒG/rTzK:Ŵ۴hRzQOwӠSuDhJuS9kX/iՅcz9S9V)IB=G/:crd~%IЫG۟JzGQz'r*coLţnyK B='`FSuz\itvMMJ[=N-psnmHGKN;Fމ:NP/ O܎EܘT} vEB&c1~]\ySJ/cuz7 wjo^> %@J@/^)RzH 3g OA)3w O @K6xs;?_W] :.XaRey_!S%T}r,~zPGKP^~PKG~{ZG4LXˢ<0KkTߒT¸@x.b:z3jls:/ z 5K]rQqbzi:/}M=GZ#~;H&\ӱkn9@m/t\kM " 6N/Դ!"Z73Ky^DTTQ/T\^JypA)5ԋ~+W'eatH %Č5!nrcZEכޘƮ\bziRil`Dbxzi:/|K>}2\Ԓ&C&N[nO uSrH!W(M.#\~Dz{-Jz.^FL{≡Rw'JzM,k:]^eּN{F'_Wk31os˫=񞜻\d]eb~6LgJFwH=さd_M+A˴Petxt8܀z񗷅^c'9_ȭ߱2\tm8ao^4xKnd* V0t.1A@/#DE<*9­^gzF̕f¥O^t@/=NƦ"V8f0`l\Yٹ_XWg*ߠ+rzJˮ wxLӇ2ݐ4OݗHM zjz<@/â#˝F/$S$3@ TIP5̟  5B}|H/I;|Q61S~Bn1v= xLv5/^r T?$3^/Yz1d5GL(a22ti_?,x̺S)P!ɲT=\: 04`^7YudYN_΀ \:@v~%,kZъWYvDQUŨ:RPQƴ\JR526WbDY j{>V'bÝ#x |w9[M'nyZ MW幧xj@/)Ʈl87Lt9,ӎk`f&͓/~ d cBulV/ICX1L S@/޲ugtǬ^7W*%_rV ЯBlx mx _Zz.^<%߾E@o^D|6II/})Ћl^FP*5Ƨ&sV\ c|zVwΉeuы<%m1>bD//Ћ,!S$z54{"].g 2$|;OyڅzP%˯kܚr@^<0T/|$ `Z@/Vܸ;L/y̮R~鼯KxON_)Zw7O)k)C77iw(oc|ad+쯥X85:n:vtŁ\866~}^@^"b /NY=n57@/^/]=~cˤ _.Ll {@/^qxcI;oyjlU#S; qm.!Cӻ[ldX9*w̪wN@Aqr:8 +ߋ_mLԭlddWo=cgNP.Ix%k6K?rj gi d7V %mݽt냙+S)"Ћw8l=.,7<>1N@^%r  ;S* ЋlYfJ2!韁]@*@/?)|UdW(A+7W$Eft @ l>ҀxV~t9@^D?(fzEV{  )NeYzNrG2 +^BlRsЋ.gHpWY@6A/,73;}+ $xj7c?t!@/c.%A EͫJ/ oKexk~[v;(Ћלcugf/X@6^q5+x,Ճ.oM$.^[b~>B/ z׿zߋoP2C>YrǴ^9K%3t @z&kdz%w቗+n^qU;/=tjz7iĿ|WǎAz'?|}no=v㏤^,=/9¿;a>t@J@/^)RbA) %@J@/xv]>g0 ^x7RH @/t!\P(Ot@&z{cKbha_$=^٘]r͛Or#H<"]^, y1: ×zJ4G1b[trYԹzF!0gouaRs hXpyYO+z HGR[nJ #LO$, 8ث[Ƀ/2%x,?d y.gMTi]xnndٗ]yp7ګGڢ&QiL/7Pr-U/IKƘ+ EL8"RJ <33H/&שgUW$swDN^ gucz9+Keu1Ǻ$bVEQ1^z>T}Z# =`U҇RM^SvDF/*4hઁ{NTΫ2pVմ5*H'66.1{qH8XH//z9yHL)\˰dQ$shE*RawQKqs۹qr(9'qt% g*Z6݉EyK܄aaHPꠉG0:ꂊĚj;]Y-mD"1_e̤Q׬*PZ92zqHĪdQ~iS`]Z|e-7X,P-s%uvaə *CHcM->MOEQ/h(UI/%ZRr&s6^f^-X&jN&oVhZQL|2zqWѥ%^y-RSpKo>kz{rNCr|_7Aʑ1"#MvE,%u4 >4yըiW"6dj0#ټTnzgRK M˛H̙ےޣZ3'Swp4wdEj7^s{:==;u"^FNj`]2$R \8D6pE(]_)SL/1z9w7y-{Gxbev/3F h3%>Zsiye,oy'ޓsKLCT6 gJFwH=さd_M+A˴Petxt8܀z񗷅^c'9_ȭ߱2\tm8ao^4xKnd* V0t.1A@/#DE<*9­^gzF̕f¥O^t@/=NƦ"V8al\Yٹ_XWg*ʟOղX`85huBq޷Ggh4}*X I}y t :d]4碆^aъNKNu&swB/OF=oݍ꾢VP6],p%f&ӄ{VvYc# n d#C gA,P_j&K_MT#$Q{-uYAtW{*PrWQ# * lv ިhB)H2KwX%^ɱneK.aĬȓV饦]`_\G*3?j #M* 4PR7U}d-d. X:c&kQ,e=e^ j:iQW< P׸{tS).KD!1^ke2F] e'^V'NgXIT=}cZߤ.ˋ]._)B5joLh hDGbu)|zSrc;/j]FN/2@ *<}xdZVX}gn:%=(=S-a']ڳ1b&\qD2-/m#y 1lݤy2,xLW{%铻t/7_;f d [v fJ+_16*U(-Oy9KK%Ћy-Ћ6i>/z HJ#Td^> ?hu{_":EHCwX9' xJb}ň^o_ )Rꑮt_  0]ⲝe\Pz[SNE0AE'c LeW ,u\D/Qhk#^:NDF ;zѝ74;lgTw-ua*zH_fK}ۉQW^ʪd=Wz54{"].g =F p3TY8b^hXrdr>x)Sҋ]ީ҉^t=W @/@;͗d] R7R@^/vLȠ꽮URvQDZk)0ԫq !|Q‱˭).ԍB/A" "]P/=WzxdtSPFӳk *i ku# ]̚;ؾxy7+xXar n0|2rH.AgDF MKz544-,Zkm/xӮlM^0mɸЋg[4u} 5n ^r4ؠ*8UՖR͊U f #ޫT.15-KT7+\ߘVb\/͍nd[X._yJu?k)d]K۽oq W(il-W6o>ȭvA?kVO۵(Gƍ 1ЋW^@XXqE]u8[tS}0 #U&YP6ɗӕ0z1}`Eu: I˲zWˍoTW}S-j|.4H!K$N{tqr$VHs^.s޲ øe宽J Z/e]LL_z:K9R#*Sf˱Ez!gɷNٸa#.CcАN/ݺO[PF#R![ z!W .?vY"Oz_Bzb6z Drՠ%:KaΫrw-[~j@]rUJ$޴MH)V7>pm0vzy9є,?fr||tpLC/E2Bc1B}j)V R3cuT5" ei31yoPB>?T\=:B@k&N9Rd3[CQSHК&#ZW{N^$^:/m *V#%A#UhD@E{og؈^h5jǸzqp7iWxiC.wҋ.HCU[-/L^O7ՀJV{*f4MVT߱#TLDvrx?7\z.3wЂ6?[:wP"p`u/k ][NǗg \`cl[ЋV#lr]<͢\=ρ^kNoB/.k~ytK .k^{|} 7[@@/^s}*=vi?r<%Kwd3v]O.Gy, %@J@/^)Rz?$ C@/Y` Æo@/^x?/Ct@6^||D-\Pȯt@&^v;,&%9[ 4tvm ¾]V$'<3|@c&֛epBfw&vLmbլRʶs^JB/~0np‰OA.WVIje! UXZon_HMQDfIs^* 6&,g  #sT/s#y'5^r Y5Z_Urq.3 cyUuRB!cmԄNa:xGњ~hԋ_rGhHfMK9ݵS&L^ (JCjEenBzMUs?ΨlB̤f͚KY!zI+x#M<&^)jϹ 7M6}+'džnr٣rtkeW!UyeHt ULl9'dѵݣUTIi_pS,酫iZiv#/oɻ*^ľ+^e&ʴ&s+J%YUdabz/{>0gFz٥^o47ux,Ḙ9K~SCL8mWV%(^ZZb&zavz"^ts,QL/a.&Z/51_6{d6z^<{Pm#[75ZW/sKNm}K;0/ _*k‘_֍bҠ.emR}J\94^D["zq*GB$NeS9jX-%ng>g;G1'7!=,yfg,;K-UZ5LF'C^Uǃ%JcD]ۋXhvAqvEi1EVc.^"z ̴} I/Lͫt8wt152%j eU4cui 02sb4qEzh޼CD6wHIkG5'jFWiΤAR˿vŞLtUwJ*"3Ͻ0Vg0o!˫nd.$^UD/f!sײGޑ ::|Hڹo%|};SCbK~tje ]p]ַ;^qzIG:K+ !b&Fhۃ.dbhwqzI쉯^Hß {mjGw#ľ8d|vF^#Vvns\Է,Ћblhy5Le K^fI^-H_0*YH=@zu`Qqc)Q3'? 22A/O Wӹ;V 8a'0B^gB/8'YabZ>O:z񗗅^X^R֝EM'^ g  3oӏKzvЅ>x cO[Y:o"\6 x cs~e dcdgMg5;93@>X d G _|m W/> d C>ݠH_@^+gOx2=K?,8a6lA7&:RNhYW:'xWܚ yc *GKb [x=lxU,WhBnzjv!-Ћgr`;L/2uӪ˯Z81?g0$YmݺFށ;G~qe~G/AjE#hOu+ܲG@/~_̄&Sg͎It>m^?(& ^8?aGgz)U6=/:sցxKF=:\p') ЋO\5ǥё[UA/@/>1)n-&oIU#[PHJrseYz;nR($xjQ=͝^P;=9] Wm -y7P$rJ1NzG7@/PdM=h#&zz`Jz9m/0r[f|SـAo#O%[VoY8@zA. y8c5eۮ>}zz&rBK1f$z D쵮el(Mxx.nhٗvyoX=JC$ Ћ'vOYp񆮶ͯ۰n fz_􋿛|[[fgwfƞu@F^<jo+ |r;-W|z{ylWbz.ޗ d7f콄AmM;@/$~tG:W\Cx7%3tXٝdrnJzu_&l7A^|dHTr^<\a@+ ˿BzEYz5Vs`5‌v!  @/~rzRn2 )Sm  @/rzkyOez񖑶z >H[wH3{* &ЋdϵX$z)d onFA4t) z&v.DsL2A^慆K?_>d kN\Y_u܍ eys_`3ݵ*ЋׄG򻮺/ĢK<z9_t@/~?n;1^XK<^?^J/mtXZx͋9Fz/Ezw&kx=< ċ}(Ћ{kʽդxP$%_SL & d7Ngwh >rO^x_x䙔 {/|o}'t}CO<&z 3w:ȚRr9,2_t27j}/-;Ӌڙ%t4xDi CՋ`yыat7E*/1aJ'Jr3}erT2b ZשLXR=޼ ?֥&^[P@Lz} ֜{c>;NCxswyDH*͜S^t'LāH9E o*s!W"}eB{xDa Vz& |RELQU8Y;^5gb8F'gvjE- ]ΗmIMi hӓK,<5SQ }{Qӈŏѹz3Ȉv#%f#F<,;'B61_~nm3cUX/a E4Rg&za%׋"4s}$O6uwpg.^ʴlʕbzq'}m J*i9QܼKrĝ2GXbȰ҅`' ]%sG^,:9.+*&##Ճ<ՎW"yvzS݆b6i LVzav#xr6N^\$ιUE* iW~ڦ4M7'=zg\p"]v򊳴VZm.{t\J';{i_g)t&:#iy@ |;bm/U*dXV;)]"4D6Kx V&9%X}6@/.0]avyE4zn Sҍi. uZt*SJ^E!A5jX-w'˜CtM^ӯG=͕TpGki=Q1'zQ7/Α6s(> ZtU݌k[dj+WX+mQܨ}d,΃@/i07څVnھmvp(A-Z:{IDч7Q[h@/IH$n2bzɏLM(}.[i{,΀^@GկXs.[*]% [uzCY#\_vP`)@/^sV0ѱa]^s(CyjХsz}G:zEp07ɻ>R[@25_dxWL6)ү2kcq.—O5_eOu#aq6 ~`rrx7\|{@^K-.6,xOF[Ӆ~d k7k5lo@^|fwqH K@/sSg D [@/*˱f+?c—Ezx)F/+Ћo'_^[@^|e6M-g[@^ d O4hdsT : *u1ЋtFab,/0?S2郩dôB/ց^W eډ,(\Ü.CыV,jc#3|$Uم sVKtujx͹]1D7ggWԨ*u#G.+޹Y. #[wvhg ,.f_^o&vT{C:cR/\.!XyV,ʙWI-}#GƶؽbnzNt/Ћ\bslLewzM5ݨ!+ z/ع;MZ], Ћo9Eu\'p4-ЋN?u +VMLL {@/~g#%CEzs,^' t0.^<r' .K+[藋:Hw^ =_P($|g~6,x˅ Ћ ` z#}z#_AAx̉_i?gQ@&^|Yӧw/dk>;ɚ $ @/d'cw@w@/d1v z"â.%{ܠ~eHt;7^WO@/Olhyݦ{,ЋRUdxT|d+\Qgv,w^zK.wg]2=s}~kKH$|AU D/sFK~z֏V !CMW~B0'_ *J y翔W",kc^2)siu7wOeYz?y4~GCY@6^)RzH  %@J@/^)RR %@J@/^)RzH  %@J@/^)0Tb`NϗJHBzIj6o ^l&ŤF :9%hTGE^>6v _ӛjd2zqW=7\xMh`IbYtr?j Q jn^jK qʊKƙ+-2G_,W3pQEOṃE,DQyU%7y5]<y5~tϭ'xmAM1:PZsQy,m0Kj3{(FN/͕ш֙SԋDH'\Gv:" #=☣ط||W"^H/%8'8%1!ZlyfR3 ݢ }1QӈŏUnTKr$GDz'EHrazqZFK,0q_썊RD}(N t^~zq`-DCyARi>F/4>dWsfxʅr]Y!. {oJuA]6i< E;)d\Bm/l+^olMvT͖&]SYa1yL/a(^rJ/3}wR( g-%;jeBat` UGJY/UBJHa\cTV,\C+b^jf^]X~t>;'B615"7z)E0'z1 ^8En ^HUQ+rw;tj,ƪA<}+GFsVFvva`' ]%G^dj :%^䮜kyUK^l2/iKNj_@ۋ.?7oxhHϊEsV/5oS뤴oL؅ Oqۧlwwz?4nH_5RU횒>[۴GMi+"mv+Oæ]9r1Uw´Ed|>XɜEn9O J*b\c/zIG]VL/5|8oe5-Eе^Rgal-nҫeoZ-:x!,]ΑJP/O8ŀ^VU *`cw`xQ(`Ys+FՠK|z}G:zEp0573F8y uGRjh@S^Ew9a"-*^@?o|*8GԏP9򚯲0l8Qwc<餽+]O8YkOwޅڝ o*[] BXW;ĈRQK%RrQUrK!B*D!)B#(@u!tޟٽ}ww;폌|yqB'ktkyǁ8#Ӓ6+a(C2$?eڈxTH`Ai;=!Tx'Йq _D) \9rCT]oaD&%$ '-WTIa /Nc/U5F=toM^G26L41 /N)y_,eou{ /nV }f`e^(퐹x8" B^ m#ZUr3Ev=ҔKwV+?8Mg^ԅiHA/L#] /nC35nn9A44_ Z(v&nK^9 y}[eȋې7AUD[hevB|̍2 m?uwqD4=`dܵ6D;k@s7h%#!V n,ɑӼKp'եi,yqz[]dLyqOG?I K 0y/=kl+GyRo]} :hnz:9@8%Yll*n`:fGYZ5B,/tI&Gj7b w,- /nE]L}!@8e\3I;Fg d ȋ|RK(?<؛}G:bzWO5N?;9s0 d ȋ|N^NŐ]_i`ȋoXNs7-xWy g{`7@^gFjndvzp,~b.5 /BT}{ޱaV./7X dȋ{̟(m\^usGB^l296]ݨ&\W|6CËDo..Fv yq 2xWE@8XY4 dȋcW-J  Gg~[Jy/@^§;Lu Y7fdbJy6,hF&l{q "o G26 y68E$/={)g[͎C^ /NȎ[NMLLNM.G i8.vEu |ĕW/З2 EOݕ\^ܵ^h 9I}=Qnpi^ /N'?-y6yqx4k7Gޯt|QKH4QnJQKm@oG7Eu@[=hLx_n"g Ӄ.yqK.m ߋl4&^WH^LyqsT[,yqku\O_% @^"Q %ѷmpKe!y /x(}%GZ:UGW! /_sXygIwM #@^\í\Mz7n:ܐ*k:?rݶ 8u^rkݶ 8q>{ӟ_} -`q8Y>w:fC^gꮺg_} bl_/?|n}Gs~~ d Lsg7sGxC6yqob>}suM /K ,% /K@^,yX` @^v` L2`+!/;`rBK@^,yXńϾ>R +}}DSj]u[]Vdo=U{ bY`rkuڗewաf?[P8x*\9VnHU_hSmXYj.` cۊ_gõ@^ Y=B ѕėZQ` C`23YW.ʓ%>jː% ./axzOVĨ#/ɭ {{pq{{UueS!/ %,1p_LљWAF,c|LX2S!P} sN˲t,/HQ.Hlu}EU)e3/^,l|֭,^esx[>rJ2Zv)X_r$]̒7x/73=L0%T>^b ?PO.E TnWwd5 -MRĠ́d Z>~ҊM D{):ҧ Uu"JZǪjQYgy{8 ?!.UH钖wJ~L+C,9}bE1|?d|%=XBs-He-/a ( $VDT*´œs3R`ڗ^?ZS]bs,ӓa;bAy'bZEORH E|M{F%œ#rΣ%SX^J|SciouR2Иhy)8 b/&cVw &GJ^1SahrDG'[P?u?l};}O)/߇q*oi)UHb|@7 % uE 3GZ.Hbw<*$]ЮK*'GFrzBj8c{Mu!t~١M/ ZRJcx姘AbRc/jvgn@䟹 WLFdM=9~䧭ȋ>J4*_KٱRF0@bX0Pؾg8KZ-Pz*_2D,˘KɈ$v!#Z^B9=2C}ɛ* gpSȯ K$"%+Q N- JK`wdV^ 7Fqkb^䛃ex)4J^ؖT>1谌f+era;Ԛ 7s5yʩvc}Fc7 ӡɉ à+GJ|H݈^NKj"wc/{aJJ; y)|Ϝ;Gk4.3+#ymlPZ̰dֹ B6^n4WKnprvv|^>m,rg˚e6pqS!/?ߓCݶ&.NmpȋZTWm@^R#n[\4Eo ěn[\4߬ߨ\: /. B]9[\4ߤa C0U =@68C/S%yqoK0#ax !/C 4G07@ol]z8 =tÌs IO\a8ǎ?Xv#EC[rSlyZD`wދ& &);ÿxiG-(R˟dm8\\)Mʶ3e|"m*%S r 6 M"[F\7S U9Fu+k ɔR=U4O6vkݯ#Q[D7-oj Yw_T z P"KIV! rQ**%(IeuF)֬13e*xJbko@&r6b/N =a?R^Y}.Pe."#e8t2窥JꝪSd"(AwE2Ln&S !D7?u*\ھ>x/N#nU}),+me.k7p1#t+ղkȋܙPi kd@sOB#پT1=%EPbdc,h-)/6?`R^_Mv9{!/ST5EɄY@NKPvKLyQ_D %]ADz /nC~V3b ^iL[a2pQ`4'GfNvU#SZͤyqfLxf,9 YȬ,%jIV e@..1N٘n˕j<-ıVW }K:? T=R!.WҐhI* wq\\8g{B KKƳ@^&2E cmح_ /nV4!j6-xəYe m(wOWo+Wl;/i1c9{q? ߩj⁻nj鱀f]ཀAPFt) /nCfsnZ"e Y6DGj5ߡn]i@@i}\sKbG^\@5i}E S@^\zG:jU٭:iQo gʑ@X WH8kH\1@8U=Е2 0J嶤4|.;E' /Tcp] E>yF#lԗ;dW'0s#٣"!/2a"Bg)Gzx|RÓw#aGm$pxaVY-p.P!T C2EP|W""a QK {z%b\YCE R $ƝF,i/;ObH䈪2?sЩF Wbr>I?)-'fCKzny Sή#odr}^\F^;Bln"`d{Rv*D(TUt:Ҹ^qYɋząO !tVJ*̐eve? ˋ7^jv[Vd0KK y1 ȋܛ:&2Ɋe~8b*ZXfqݸ!/f!"'N;92 #73,|N /a`NR$A&/3&lS%S^TU9 /nme(Uΐ*!ա]U@Z+ uh7^'v+b1G(kUFyR|)ȋ*d)_Vqd|aPRrNW) uR^!V1ދ{tZ:j>e>g9}qۭ7g44\qͶ'=~˿㇞n]]wy7tots=wn۾{f7 vݟq^m7l--뮯y};׽x`{<6c|}j;jhwxl_kv^7yZy)74vZu ]wP[wS^({/(pkBm۽_}Rw涬np Y9[?^30c.ninp%̆v͟nt}]Y5fm`pꫯ&VP۲:aжAW~_~e;>ķ̳l:F;ԍ^. :}ԟ5x4m:IcCf^yƇ)ݨ_Wo7vhޱc7|tYO7 , 6l{/;KN ]Wn~Mgt: t!SߺӝN ]ɧnz3_>ҋ?󴜇w.]tY:H!BrӇÇ. ;%OϹ&friAhƇ?)6]qMlW89=Ɇ0U tN^΍wsĹ2rE7ɇ?p]>vlb"b""s{S\B%S$2=Vy9ǝuqKs| &6vit]@^+p\\y8su!]l,p.>]_,wm E/"(/_..zlWJH!)\!gXíV*Q++옻kgڄd>NG- ׌c+H Br'xH=>C9yyv{ﱰ==l;4uVʢ0j޴ҴްŊb@Nb%.K>J m;/lh۽ν$2m:|򲰨ȋQdWM(mRas؞x!%髠49Ng2٥i{b2~I֬/L=e/򢈅U VT ^}i<;~yo+ຠUJL%P̟iEw`;5H~*δ $[Ӑibo~ڷ"/šcaXNy{R'}޳~_T*qE}\腭zBr80m,}nBgVVǦ{kѱ3<8eC&Gr'i09ۣ#}akx[E] ώChDhByxdP Y*wXڽ?r.yW_|Fqge_s1".`r$!ʝ4~|0ї-09jZ[µsW^玃UUF4-F/ɴ'/EKrKni7O[*fAZLb]rqqغ`Wq/nv]w5뫭KF ¢|]bGyWzjWr;EBڐ=]ζ.k]Ul}9274P02|Y}w&"V:8HQwJ/g$d3&$bAZcu<+0(Z>AvGy-u9%͈ۚcwp+p4AXL^N==tµn㳬td5AX?~.?wNL|RV]as]s7ͻe3)9%gt_N.,ap`+.t_^.h^" 4u/7}K'Ggu3 MG\aa1|͌^p8A%>J BhC.[3y So %>v: t%mNAdöUO}o9k t g󷟸(b{xЪx"t[ROws u: -:4^[JtO %r*YX8|y("t7gnt'+// ξK7m hKR+^^>m.gHF2>֝ +]^.)Mw1_dO|3>3k\J_ڵόr] msRGBϒ5xk[e۶{!A$Zs"m߿+U x?~Y|p r 6#rNg-iz |G4뗮UR^Ru;?-_ ˂`P_̻ػ5t[@W / V`MeSX=v+ nu]VBd , ?ו+vG:=|'oCO||]JݚwѦ|ƪYg)tRbo8ZϼX_vfl2z*оOb?ۜ>9:(^Q}pU+\Wї=W2 8^0h}c/gwȕu?fPvkܩ^s^Sw]'/캋isKT^L g^(Nv_5J=jRW$/+}}WP*'t1Y(l3JZ}yiհ7 CjBe'/;Q~Lbw"drO[=Nr𚊬d'/Eݎ˾ԥ̩WZdÖlD"եndJ=gi"K(/lt"Uԯu갞$:+s|dgdQkw˻bN;}xM}+H^Zy){~^^ly."/ї}E.*P3+;oU= EGqS'=}.y^;FM֢Qv^ P#/((QHYCyyWe'^ b8Ol>r5ng:'p._ 8+Q-'4umx@^~̿Eo6O2[)2L 0>O D"KniF= Fc'^hH;q2&A1IN:NaEpRl~}RsC7w\w'/J2Z^r]hro6pǀrΝ0O:q}H=54}ldi49;k}f::K序R6KV3$)p"0sgL3L0]_[Wf&dC>z1//ʨq+>Z|YT*T+xw./Ek/zrD?9Kp_-yK1f}}?2L_&ChKo˽ NU G/'@p G/ӭ^:eFNHN)&"axыGFPCͫdY"ˇ L& /|577zEfdJF/+9s׍Z~iݺ_D\5`i1a_]7yM=wQbu;/ӓn/}[\‘iɃlISy1o_F&y<`:\{ [{13yzKyWLKA؞ۍQ>dZLh˺uҮq3>NcY{Ya5]=~+ :Kͺ[$)cN5>`zѫOc#KqfFgɦ+yawCwgINWM<|>_y. W-Hͺby*fU=p"&G! SXFA%p i?92Үr\~>9e=KɓF6VsǏ͚K|^fb*{|ANBE}-3x`W_0hEs[{Yb+Q@^//p/+~ ィ+uc|?=^t.h/(kyɋeїbE? (b-ZyF/lpNNoE./ѠC~99gyRL_Sؓ{w־O?iL; ^V o ~Ud9ڲ#R9O\]O?8;2}HG %bc&|u- 24t![o2b~u$椄UBmBݫ=匶Iݶe}cbE2>Bkgg]Pl!ۊ^WvaJuAX8+rn[wTy~FoD eFҍHxyH6T]V%}/%6W6V>A^6_Эy ]]V]wnP םUbt'YO|{G.U#/ 6V{/ VD^A( AJBE."B9lUA2}KhJaIy$D^A( AJ;A"/ v P"/ ,-ȋ KʭҮ Kɭ!"qN_D^A(D^A(AJBEy$D^A(nt lA%C,w,|UK AXE^Tޠ2zN`)! D^A("/ ý7w:K{pW鱗]9y[vXWl:3cLL×dr$1tr`^^+&/JE]f%ȋLQ "yS^ꇽQ@\^z}mx|Q_"/])/Z$ fV}Yy+2*:z=42ыы ӕqUя|U<9gq8<92O^^2y;H^*AD>{ʼVuu@F6J Q#_3E^eҀ7|.ދȋ wH/6E^ED^0o)xyG~s$"/|>|jeKV*~dª6AAEy$D^A( Y$Pދ %!o P2z$d"BIPwu6j yd"BI)"B9!"B9."B9l)K&"B9Pnt ARd"BIPH]ErCvA(;E^A(;erR:1ؖù~]67Йʉ,I.hC{hĉݸѱ.D/& n`yꖐf:Wj$ :u^ ?ilS%ABY4hC'9Bh%E}ya//-aK `_iA=$MSȆ;sY$F[L؟BN&R;iYЇ{]K w~J3HF;86h=C,l,f49yI) AI)|ʤtr듬>e%KBP}*A253BRCy1f1;L C;A6o :%V RkšpbfI 7;׎yJ;vASE6hͩ~W zhzzڡAI6N8gò](zi.e4O;V^z!y: .A ,,b.*FdIR$/&s&GV^OΠ s2cԄK!)^xA`/B:LDy(0SZcCP2G,Z`cw.fOlKfÛS1q]e-4lyi79ꡁ6\4!^pr:QuQ7 : 'G:撼؎&I(/n(-DBﵝgzJy.ڋ؁Jqoj5a Ԉ$E E= N:>^ַ 9HۜHN;x1X`P)_ l Q%^ðkW!H/0AܶlȋGF/mK# 6l^ȋi'i[ :ˋu5X'pt蹑ryia虣CAu:{܆t)&0 g.yKPT I鷳#ɵ)D~\k1st %:&ڋ`/'\y`JDT\^N`/ jJnkf@]|yq׋?/J^E`M@qya#Ф|y&soSE 8 +"yarˋy0y9G7" 1//ܻs;]v e@2FEk$}y2SüF})a54<.K풟QVmK#厍'Gܩ3H.ZO؈`rarœ#tbf7s0{ZLL`LV!dQ?Nډ4"/)Z(ʵOE /䈭jn$>zʧRQ^hi7./li0 R2p`%@hqsl9Ҭ3tGHI.&sʋ[څ\ک~7YZqM [GtżC~hljs^#3y'5e`}Վ|5Ү +~p 5@)[څQթEI]Y6^4zE3Fp? 0L!1!3o0x)bG0hfEK=λ|f3mF1:ݽskWB+n lHsgP.'XI) {&@mz<`x gՀl>6v 969*5ωA}2L^pp{*79vl*S%3shYɋ )n%`-7ReH0g!uC~f&"ʑDEy;w+>9: :c`" Ι8@2cRTkv/CyB]a%KtrXyC _#6/Ie[JI[5H(/+v=./s*EF|yr:vM#>;j69="Mx klӔprdË 9+A79 3z^ȃ0yðڪm];Y9yF.*_R?h3hੇ'*#;` -mo XCyQ֢1ㇽئ)!H v0R 3z^=N[!E979ŝrR5ORh9-G;˪DBWw s"_KL40qQlt۠mOtx[dMqܦ)}z<|"vUʇ56cM{1_weØQĊtrȋhS^F~H^Tc:)/eUvU w?΅7ۃ~HÁ,y.D^4, 3&T$ϣ<;~ʕ"yr閵;D^V7 LhrtH2h7Ey  dd-K^؇=yCjMu"?7}ɑ&:aˋX7G@^r}ʳ96]%F>M橑^V;FZ`v~IN^X: -#^7x]luȆe_[8_q=φ@ 充بvmlwf6Eg%Tԍe$7U^^FF7nD^V74˜\^z _Ыc(/|_Dǜn aN^WlUz腭`PR0IB/nr5b0G/>vXK @%+$/D^V5)}M㓣>JaبQL^ ^욭bs-d@N^{''˱"yaz1 `V,EHIK%onG]!/Zݪ}l۷]#~|Б_Ey'T:"/#d"ǂ0Ӫyhțrrxf&|'siY /&4x}!'/ `v%et|N@X0{N7|ordLD>= {? BBy;}_j۴;Q͜ {⦆>A8y dY?r 1_aィW \^&?T yN@X8eSF .Ua1 "16+5GIMűEEhc.M:VZ|7GFV`VV#"/’"E0"/ ȋ %!"BIl^A(P׋PХPuAAF/ ȋ %qN ]AAEɑ %q N ]AAAEɑ %qÖN@.FAAEN@.zS B""BI("B9\)"B9ȋ 0z]S Br[S Br:A"/ }N ]ʅ"/ )Kt AR^ХP"/ ȋ %MEr]ErSErCEr~MS B/"B9PP)KN`E2Z|k{pO]ѓ?; //eo@ǁ, ]-C>>ekHr!xic' O&tX@et~aZ٢e(G^Zx ̟ւ2tT˖NXel5.&iTb?0&ZJ-(=nزŸ:S6~QnS\@g5`Pd @q0Bө]X< b0WI<;<+& tI3'.2sK_4)`I@(ͭ_t V,$hc\VI^ 6qt;0ӷMKYHM0(jRP*Xt&oU;ypˋ K0<3 @-['/aBJM^â4 ** &̤¸1I${u./|NZ"4 ]'y2oBmQyƩ3 Œˀ;&X%K#n:NYty R$/6?T^.c%J`2ÚI)XJ [A)yn@IpsPD~r xRorD_Gpě`bu4Oc`r =+'/L\''GJdr4O.|yNBya`Is4jqr pVȮ锳(TEc,2^C\iλF9Z-)Xx˩]4c& evYC9i_h` 7.XD[܂ˠtor^pң¼PrKiN^hiW.][P BF,tGEX=l&+!X{p)Ro}[Exxi\vbfz5ĺ]-k/[X9 3q>JE5<'0M`>)x ;au-Z:GN^`Ԯ4pˋ40y@Z}r.u<s)UP"<'/=p+f}L΍uL+^I("s՜s;Yѕ0_-{H[-B͝8d'49(s;K4M.gP%"Łj?/0ظJg.Dʡ^xgI:?\K4eO~/xo\ -m9}-kaJJjN;F"/ ȋ %!"BIP"/ it ARN;)Ky$D^A( ᯛӯmzoOn 4x5 ÍȻ ߕ{e|r;~7朜 '6q-EĖZw[-~÷ /ªA%N57?7f1GC{)a ~VWO&A (K-0964;1$=恙%nZCMjsR~B"d&G9Ԋ 1T4wލWID^ Mփ&kRў!~鱅9=$4,>);zA[" ;|8z@=|yZ^.ؘgBFg=,[pRL^& 8jL9ԕ'/@Q@pW% +upxY +8Ɗ hvl7~))2HLxy|r̞/nܐ' }r1ch|e;=-Γh-u$cs6em+`%LSx}V "/q@7o2`ۗP^;(/h;3'/lA'/h sEyy2`X{\^5fnjS(/9V+3a"&bEF$/e%y᫤E" #$>9 x2ք,J^y&N5pH`ɑo3oLhN^(t_ky m,B9XHX)X)7]d $_{P^=U>̈ ]QکMk/f<4Lu `!`v@×v[M2V "/ql7E k>e߾}`:|vÜ1 b'Ic"`=NLxnh.=3*\=:Aӻxvyq!IJfi`6DEXfh$+tt 5i? 8@S 1P^mLV29$D^A(v: t)2z$]AJBEy$D^A( AJBEy$D^A( AJBEy$N ]d"B9."B9P"/ ȋ %!"BIP"/ :AAEy$D^A( AJBEy$D^A( AJBEy$D^A("/ ^AAF/ Ľ"/ LA(E^A(y0-BI,/E~{k٭zxq|[sE[>E#椦E!kU6nܸ+8Nt]~^p}\D^j>tc}1G'pW SŻ0D^#={5yQ /3 5q4;t{vwSOAU 䜼.~` Xl4EHm)HŌq Z8q3wG;0vzY}wPM@c~vx, _`hBз`q-!eʜe=[jp/Q(/37`UۣSM Aj/jLG>;Y' 0.dw vEY~tn]gwAH09L {tc# Bb. `:Jh]NyU7J?{9$yc '(~V b?؁" u&Qg7Lͭ]KϢ0hGll /FzaP^"N¼I870N^[vPyq0K36G/v !*/n`AyUj$/ DN@T89ﲱȋ>#KbNE.A^''CE#pKՏ3&/#?orpr>D5|i:ޠgrN"ippiokv $/S"*,CD^j^" `wQ8ZbhrQyk|iw }GdiWe$naˬ`ڹ2Ei)ϓyFm2WeK{0RQ^Q^ie6r¼nSf̄ɶ **/`ڭ~,Lμֻ?dחxGf#>G;yy1){Ebk/x~6hv=jٰ{0M 1nوP"/ ȋ %qȋ  "BIP"/ ȋ %!"BI~fS Brf( bID^A(AJBEy$D^A( AJBEy$D^A( AJBEyi4[,VW n [-z=(Q(n& ntn2 oB F]KʵIKriy-7Xk2r9^xg6vebhV0V^4 PږxzbAwN^"4,Fy)5%/}^/r ϵ 5ہmbVO01U9׭t!؆h5{>U{fRƫO@#3t:/lvOUwr$xYR8LcZ3GP^ %ߐ]LlunBMŠo;΃iq!˛v8p{eoެ?{~nfsTOўlQG%UDb+Oo7UKq{<T0[UV$acBi}'W*|g.3gqr'+zEJb'czUNljW5Uُ-J]X).A_MQm:]xFf689T+:C܌6q%bĦy݂Π/iu o!Y%)-]U~%a^X0y[NGyѻNf[W{ rm]jP7F%{MgGaȔMJ}‡S?;E%*_0cU/qPfPZZP,hyE_W^ȌX 8nP;ldv) [PImf'Pn*$uYO^rk~,9kF^[y|}xGOGU9i$vP,q_^N/ Q0gQ^F"Yj)gbD6ce}qHʋYue>%b# e8KC1̷8hL^0~^xYٜ`A:rOs'Νɋq;&/V䡑j% 語T1߬I^r#UeIRyֿTpz+zygϛ e$MR2qh3ǩ_yRMi†Ը//u>"/$|N^%ޗYhP(JiKRzbAsyauˋS8,N^fF^0cItzi %"&/Xɋ2yY4OW~hxo܏WV'U7 6?9pr FIlr4? =#4?8'Gu&GuҚϟ)_5ٚxSbMx/z#H5!`rD}/z.[ աNli a>9R"/K+W/R9~nsrW+ *28R}^cKɎ8w`+a5J8H: m?`iZ r[[{aIť]=$yyҩָj˖vkv&G` __UTK<3nmvvx^dKLqLS n4V%;cϧϫIObxŸVX*,`gv.X؃i+:*ln6^3惷0u0ԓ=?=EY`E/}覟=KlZ<ѠS<{I}/$uЂ:2>YLI?f( F/P ljK@-`+8`ڍ&\cyYz*O.Ww9s|OMO*Oz{YeBXЛrQk$ nlkC^Nj68ջ*KwʻoTުC*+ƅvYyjC2 [ rA}\LIQyOeseqwRIkʟW* +KRJdM^jV>53.CrqR:Rhr0XYra﹕/OZM\VPVy|R3Je [_t F^Ϋ\e>ڡbө](/B|N`7=ɎW3z]mmT|)89ւ ,FPW>u'wn7 v/jwiWL^t WOTv31_YJ?r, JV֖N`982|ܽV9ǘy^{,B|k-<9R5ŢϟU6ེٓ'+z}RΙ.O+YO?xI=*Fi2gAF#ᵗ^!WU[s'7dSֈ*@_^ar끗o#\-Q#B~$e`8mUhR\7z9/v${ =~-L0bRlpi_S_+_9ٛ];-屮{hT޶VF! W߹I&`c2AnWPM,b0{LV,אDkg Le^Gqێh'uoQ ͓3`\mHmDҊ{()vw'S9/I1uh.F ,3VaQ4![10}ya`֣7)۹2c9b2dåxB][kamYprM y=g/JaиKېgmJqkk<6KF%XCͥnX>6\8M:<=U'/\)n?aS!τ5kM6i4 &%p;wݦ1~q:۵ A 'Uj4haک1 eElDAWV ^L94#$,fu}Fǹ饈}Y`FZ"JYC_cͼ;O)qJ5ngI? }{{ x4Z3S -}8mҧ<%p1 [wb}mt`Tsnƃ5Ee@=!kgf"sDO(c^Nj*tƑش̓(<4M{{Jr44ebC֏%W"b=&NM1z+m<3R%TfI^R[RTXhRAQ\xuJ:gfTDZ^*tT'IMnBeԆ' 7pO* C@pȍETm9cK]ʋ ,:\K\<̚R|+ªzk F+"lփ]iP^z4hh8e ]` TItpy[}ĵ@^0T u1L*rν̱LCb@e'a;YM̴If4 O Bs9yI]/ qq.:1yCzavi[W6P XgUlm sη Ņy)+"&/X tHL5rxE^V8dG1./5~hA^ b//u0[KK$/,nә@ȋ]`3a/, \eZGjJ(/^ii7./ T`R&Gu(U!Kuo]兇WkX`՚jm[څ3 $S͗vˊ6=Ԇ T?ZMy+px6ݚu`-Bhވ>d_n_Sʳo/y3{OOP^^L^t̔_M-8in$9[`_AYiye, :vU$K Q &wXvF)Xw~4O[ xHn-`PB䥳Pӻ-PPWcXϯFV ˼YDV*"/<lBݷˊ}y).n("4|ԅoÊ+Iȋ kAJ"XS B""BIP"/ ȋ %!"BIP"/ ȋ %!o P"/ ȋ %!"BIP"/ ȋ %!"BIP"/ ȋ %!"BIP"/ ȋ %!"BIP]$/ 'E^AX-ɮN@"/ ȋ %!"BIP"/ K{t9^bjKyi7ܽo8c][$A>D^y펝F[,v1[vy)ɛTg_կ^~&C7cEBI;͗ipsPD8š \ʹr.ӖV\1G H#,wZ YIF5OMI9&iDDjir> ʣ\{.Gg@ġ͋Ѱ:L^a.OڦudR~TG-"ʅˋZ]6Xy{ve#}y|3vWM?nVTgboy{++ 4x4켮#R6g$L(f5Ch<&N g߳qǚSZw%`61Ȅ QsHqR:P3_}~^r`d*{ޚ52ff&2QPΩ 㘫x13Y D[C]a-\Cj,WTC,Ӭ:Sj4WUP-}O4C&Gq9tfR>09[}@jM`8103|Jy\^FFQ9~2F1v2fFG%L57#q$ R1yj3Wg&yUY&T3\KHJZ N"I)HȕWCbN^++ ߶g޷u{/;#÷8ɋI7UM-ڒp5HR`SHF/3rc1ʋb̴(/Hfzl2j7zlJw&[\^X"bpªK)_^2Cqyq-f Z+!_ lu6W1AE^ZYw=SM76| GG:Pu^#*Q5<9SH6WWEaG«O|7Zl2Te2b2 qy9n O^\^"#EfherĪ tOy{p-LF4IZO\׿W29Zrux.3Cyk5ZR+jUE h?5 @)_ cӚ_͵9qy'G "(feWgl$|t]ƭy]#'{<gOXgKZU$/X|XV;n5XeեT /VTq;cn'G|ir-"+w&[sVi9yt)\'p$n%aƭ灦/['L^W޼1ig0ƭ{n`QeL$5ƾ)SSӻ] {0m>g,Ԃ4kO|'`klV.`F4n5$/ N^f\:* e1IߛU6?"ՅO^pJ/ PYb+ӘHVTCL1/üxڤ`eÇ3+-]+/SЦ;Y"\6D^"y{:AO_@hs q3$Nh(ܼ*IycFk}h!c6,c{hN]/U#L# cI 0`whX+E[Ue{餱VsU~VPIi>myڄӾ3Hٺs%Ō5V3_cv9C}W;z7_Wې^;^h cnدc~}d MH 7!!yIn1E> ЂpѨ\FWi 0>5V=ٮ.CU1F/Av6؝#-8_sl;l6^FP a33hKXSd hNBH;sD6 r;_+K_!I3ۯ՞$/FEh!o=l67BoCnÊmy-޷oݷԞ:5 ,8x_ˉ1#CCUEt#+ctΎ`!macaWۆTDoV'G,;5w:7@+p&/ Vc)㓧1u]`XF^RLj<6M V*7'[:$h4 E>hdf 9yٯhe>3dC1LLeK/> n ˋ7'/cV cwU e gG3&etebaMb6n7ڜB"+L +L'F909bB`K 7B 2P2y1V=1#v/LLZyg+P+J(H^Of5 /Gfd^y^aj9yKO^~]`ŀ"lO^x#b2MPڸ!&etx,B^l` "yAgdepwVF~s!y\^/cu(_ 1Sϭe?< VS'GzK-6z-˩]'/xŐd 79OI cNЭ79A0:Anr*)ֱ>F#K~kfˈ̉&*nq5ˋyd0få],]"n6 -x^ԣKc|i79"Ѻ٨- -27H'ɋeֹ  J?\{aU6HΏFABKX /ŬAɑ]-_^-<upx~n?Ψak ||+hYf3>eAnCT`@^4\+b:Đ ع Cvm!M9b*=qyӬp ؓs^pʶ|acV,}R 9 HF7 7/ӛg)nYeZJ`s>eڅЇGkyb7JCvbX0|P?)u\S/͝,&ou~iwjeYod{>e?|s8՘j/oݨ*N2E0[ߝlVo⨌:~v,כ^F.\O^^r{7HR(yKEP~MJm裕~Vls; _Eְ8H^ y9YɔAh,//ڵGہS']eS#tl( BkK=N{@y9ׂ DX͍|Q^l&-~qn10gjDc-R]Ov.kgSX$̤F/m/r+|K雗,onN^:e16b3luW펺~U&/P  XvPg#RO^eo -]T|ϕ.D䜁xC4PH0_q 5F9mƛJyYeKשН1%Es5VGiاL4 I^lE{\6"/ˉ=9璽ou+2ŗ;{Q`nJ-1EB{P^ LaO'/dž3(/2k(HB6Bp a qIEOՓ#8<оqbBIǬ1Ebݘf=ތ2] /fi./T1$"/nP^'#X{*//S?jd5#Ses}GaӁ',>EVF/3u>zT@ps=WF/ 'GUЪrJH^lhb.EҚœ+EO+MF/Q'/?{%Gq9s}{d7Z:+{,a R#R\G`aq ΢d<ǘ?c Z +` X2 B? B $FBvuϿH355=ݟUOQb鵗^{ܵx )w'((VڋR26ͨ4wɶ綼~(amVx^Z셞:=^8"b {M"}_^ʻa{цv+)^XCc_c/Bu/J]d{TzIɍeհp4y%p|t `]Ǿu`hpK%,1/_ԩ, R ;HhB"Bz zX@Th{LjkҠ `bBz &Bz  $@H@/^!BNC/p@ $@H^ $@H@/^!a^I?!o y(.`Y2RB/4*$X oMaU@XiKPO7}TՋwoLY,cRHx*} @0k y![[ v% Cr. MF{D}_6qbÆ vzy'^]&OG~>g0#k/SγS_iCB.M501M/aizYD{-N2Rlӥ˙"ZYl?>":ֈ?vwl'b -g~nY0P/cM/z*lB??ݥb] L^\zk/d^,k!Ӭz V0GⱦK%8ba\w^{yDB/"P{ĝLbVz9i9{>r&1`wIN#z{d_CߩA>~"~̔n1~ &E/W~ɹ#λ,bBi{D~*W {/Iz nvL@/Ax`2n''(dj n @/p@@/p@B#@Hq ܵ   $@H@/^!BO]@/0L&Cݖ5UtB; aZcYהݱڲ;Zh3׸QN{g(גuƀP1'to\7uK7*PZ/e)bTb<ԦbRh/Ҫ2*3Qo;ͫ7ݖP2c{ᵠ~6aWV}ݝ:Lէ2A_],{D&g25ȗ%c*n-^jWz%9-]]&$-_HE;0I/[z9ͿG*=-r5\DtMϳbKd+{=.ރ>KQ X%㼐\Kl3"݇daRnWwk/΁e{:c`^/Qq o^g]qiy,"k!"#^0[[rg[i=H௛.GK\/ꥵwz7NxMBa(]r;msX/"'x[iPL֋xkN坭%- =cfU?98M+ONf ^錖MTŰV4tN;%^X𒝇S8vyBV)Z}zQGBG/2C1I/ƑFRtF^^ŵ4YN?%W/rUIXc˥_^^@jҋ^7zrR/E,ߎֲrE^B/ڑPybPE#KJ4صie#!wƑ2G,q$^ ƑW5zM/k#/ܽ^#*8$&E>]jvzUhrFj~ՊpBR-T z Ҽ/7+J) a,Go[KڕKwƑ" cZ(dV/dkieKl{"^BlӢ7Kv[Z{*QzQt3LBNcXCagcZ*‰ӭܒ;MwƉGBG^D7,DYJ 0^ z  $@H@/^!B¬0^!Bz =] hBzYz 0e߽z+ϥf9WnhC{%*=c6k9Td_~l+^+Ud.Ny7=pQz rEפⱸF*Np,6NE9]i1iRșMLL&g:^}Z/j*3]$J 6Q>CL_qT^89G϶V"3^\̴Rsž^Lz%0i14A,FtB{6yEmNb]܊ uJl+&b6S9mZś7iL$ ʙ А$Gi5n;Kxޗj"qFF)(ò@v inZSQk|E^xR'yT^D1Vs^5E=zlRz 4g4XK/*l\UTR/LkE/D㨄^DH/NK& >˽[/}7#&8pAү^vתRqdLqz%r^DiFG+^ hIxak/BW"~+LVj%{ d 2 <@/ۡFaf4Pn` aI%#D'BJ+)*7)EHK+rWfa`zV66ҫ5y^fz+6>C^Jt*LvWː ϝeȪ@N2!yT7]OO2sXq}f꟰<i+ ɉ33st˥aQ*b}eXDVL3NH4"k^ 4uƦ'NČ? ^&#ZhS{*zUdxO>U k/ח˰êqtW/*:zh} LFh#zYLn+67,XR/C=z^Ƒ%r8^2"[{Z%p7V95Xuz*Reg?vƑUZ/ ^&5cp j5-d;.X״ڵ^Dk.}/4W/CeUFvqh-;rXly )Nz  >o"3'G?Qqѫjtǿ'j/ +i9)>ZVT r^lD>Ozq9'E~^BGAd5hkeEы*+*=vy2\zmz^- 똞JBS5e/ yaNΎzzpelz!b=r$u=B/ڢ^,Ne,ҟx^KϺRAq^: Bzl(8SzE$uWi\#:A&PKv+XM'Y\=Gރ.%a}[/"V.hG^hsW4(]S累C1 0U㈟#GӋ옖+fy[8-qGb:Ky`^dIkJhud+T5ERo|]ri:KF]@|%-&+>_>= TkK})6\^.>L<.dԮWZKpszîĄl{1<5*\qQF%^(!a]V0v6@̇M*h'|"2JYbYHlh^%Aȹ]fK궺橏r~(~4Xj^ M+muw͓块#KQe2Vn`l}tpU:C!h&NH@#A`l}\[zۄ LD`b[zR/Y2Ij"'^ b0S]}Wc?Wޖ=t$.qnC^LNBZ<=v}r)g\ޠMe Lz1!Y֋;oC.徬Jz+P}D@/Gubh=G٠TCi%.9=PE^Lf:!r_oζu ~5 z15z=};^޹ Os/u3W&)cYZy0I@(@/6FȼJ KQz1^URCb(tg*'gp@/fB[>nҐR\_2Qz1T}Uz!3P.1^6͝]~~@8z1]B(hƑy$,H֋A^#MVO9~ Hpkqi/]8-Әj+Wħuƅ_ bOz27=+0~a @`8$:gzvˢy3Z_u @U g/ dnrqCK:XYlQG)KϞoA^baKnBX"9ujgMcdxez1شs/xrYӻO%YӰbwX֒Y=rEXez1]tSgfN\݊.+=6t-"$q/G}2k kDl^Ovq8e㽘 ޼:A@ǂ0ދA|se, bʀ) fC/qd .\RU P4Is8@v.zYB@$^a~be-\xGn A^́$ LͭҾ+HTTz14I,I\*z/>@/>!-=C/zPҁHBYkpNDt]RҁHQBbÜҲpNRDfQ|7˜2s~gBDZ^r=2H.@$^ ޯ2u5K R/5T(bT/KWƞi_239ED: iv/;o[}]wּYqVbezﺏĻfwwA/^`X>cdʔD<ޒ.j \ `scC-uEK: \ qd--AkdL7ޞ߃0A^Lc;&>.v!m5Ć( b؞gڏ?z!DW25퉳%嵗+oX05ecJcփa D @g#/Jtn@^L2WV=!X-=5(P:nt:RE/}(:vDEz1črvb&X=ۘҀʗ_*mLa@D^ g~TMSzy٨ҀHrb*_vz} D΁^Ly$^2wTÊ"ڍ*u wVK1eJMj/ Ћ_~|uW \ 1y '[顊=G>Xj@UK^*Zy;ϔT}{ eR[g HlQm/>]R82k~2ˤѪIgXpxEqtDѱwwukz_u<a1ݵmK>L^v9tr}O zc|[07$f=9~̓ϾQwF64bLjN9^Gۿ[rWƔ v +;0.wctءǼS{oλ=dԾ;Mzo>=G >>/ƕD?nv 9϶ڒ{Po*ڿ,GvBݺɑ_;6 : g?{[_}Ue˺o~| 7Ћylz|7hvyKLdR1L Bw{?Vt9͎U}jX\\Q^$]v钹S$&glأdFJ{NFrEJmX;~fڽ>ZAOXNt̵%U8%F(6ϡ@/gBQzv 3k@[(c]/Y | ?FucS^tu/l֒z iwgzVۥ+ ׫f()cxb*N{VB/Q/G+>+){Ag1& ^-鵲Nҷ')ğKV6{qrh[/zY4+#LZ,ә-Dfc՜R_%z]Xe^U+hT;;Z.lbYPբrJ`TRET-E=b|".m9YQKgsj5yʡ ֦2mz 0wvIRe"\_H>q&ɧtQz m*{SY,gQ^sνҥ鎖!q$dA\*B/+yezab+USN;ە^6t6UQQ(?H1}zN}J Qp{e}膬8= %$r|'ЋLFebg=[ʍ($D^.$3~Og2neZ /U-qWҮTpG'V ND^4\7m湜`}OM/<% e :rNK|ȏQUe@;?܍@MGk٣ЊҋY>ŗMEC^V+Y˫ʘZnci9d-^zV- 똞JBS5eOay"Z]ay3&)V{$[="CzI]uSQ -\w >2)-iJx^q$2^^bȊwj&-O64d_J_㈇{5KoE} 0#K.M'Y\=GxۥVߡ^DŹn]Ў ~ ]Y@箎iZYcQ`Iii^dojí>L6aK‚SYB&Onx%T 7za&2S{yjTd|ˍ*iSK NX eSlg |ؤHpb,xTBe=*{ˁD48 i.:K[.{M.#0\NRħ갬c%3U7Ē]sY֧R/5h@/Ci}i=gYHCb^ /$XJ.5z2^ F F>8`qkK 7d!dZOH3%uˆb0kYkܵn6n{(hj)'yftNL `U_+&8An9QNٛW '˛ GGGQ._eou$ꀭΒTz*`B'#llH|HXc4ϱ]xEϱ!#00Q6>LfO srbPn%?3[זޢ/A|6I1`:zdaHi>y15@^nSeGM0Ty--vn3K,`,ϋKj Ű@k1uZ.+CcFQj j`-_ ڴ7 lxRCk뾫ZGr 2bWCR5,0C!'`%/HuJ/X^ B}BZ;Oj/T<ΉNfgljvBqӬ#9y_H Pqd׿8z1HOּ3z-VѴ%.u& A2tbFQݬڕ2\YwH68->7k%+EvieXf 9Ћ"d[kc;Kxm Y(KN$TmsDaG혦Ўi숮IVADmT4wk^Z~)f15; YjX~؉~crIBr{N4 Rq4Oxj2rex9$1[ڭwJ*g&G/֫$!L!ًeR }$Z:(@yw2|6l z1鄬ˍOl~Ư::ԝ/4 `L{?|m8z z.>^%CH֩_h\@^eivB'!*%Ъ/F D Pޯ{WKEP#ЋY럩D  mTgWKCJ"b$s}C˔ D DSaUMh@Uۡ=#ZGZ%o m>;2+zh^^c'EW#.? h5S@>yQHOg2[& Ȫ$jv#y:%A/41FXn-RCDixޖN GbnhN3s|(gPea#U:KvDU}ؐ<ˆ/ȗzK@8_@_{(f h^Sr_]5bSmeP_J<ָDL4@Ek^J/R/TxE{(#m~bMe5ov{W`*FLGId(CsFыƑpItr얗Efp5SfE$V3œVnJY<|ڋAv-M1z+O?{!SFw3/Z޸f tEׯI=d'b))CKLiL?@S[Td9q%J<:+XYlQG)KϞoM`FXҽ%#HN~YX|7^@idElڹs<9}秒yiXEz1ZR;U^,kI۬TgrɂV}"ƑQ\ܾ誠:'5sJVwA]^kY!GLv؍d|<>{ЋI O5[5{Jd"6/çV8 ޼:A@ǂ^ᓖ+cUSLY0zuL]=p$h cN;/]/ ^P6IssY !ޑ[%)iP's +H-Fs/ 0Ձ^!M=jʬ^pK)1 vl"6=s@/>!-=C/zPEzȖBLz EH5 8'"]Bn"drFPqF-Ot|'팽u*+J/,*WtQBbÜҲpNR/IF\$r>BN'Gbp;}9G/9]#2@/`73ο|_攙;B/տx5naD6atY1bD.Pos"3 FB K<|_v9/^d 9%Td(B/lZEgEd)YV] b~W\Li__Еzʠ⬢sT 5Dqdi3B/ |^3=WӾdfs˳/^dq5$*#{;+XhFI|Fkߗֹ=s5oV1Ɉ7\#J/ЮnSlTǴڲ w+<#3_p]K}ȹH!cZ^x4 gH9:4R1 ŚtѠ#S&䬅]uQ[g-:,6{Ay,s%λhIǽa TT,^ ZZFwȘn=5a6SƑi5qG.$>0%^vLR/$HJbgڞ8_R^{8fQz1sr<إ`%z1)H1{.ݟ[2-=۪'kt_Qz1b ^cM-ЋrtTK|pر DLU}Xe;z1X=ۘҀ"A.l)O.NZ%&"HV7f; b,.UH0D~ME  r&(XN>8qFͫ y95fZ%bek;zǫb,xN?@S +NDɋ6;L @b}o^6gcN%) oy]byfK酥oDͅ;И ʫu \z!Ֆl7#5mV}zIzIeڋ+^826^EN+^*f| !ZGT2#M5^d^rq$rz17gq[wUܿp"2ծZT0=D6֭-g dH$NuغC4IqhWj ]P(dw+=TPP)Jr:B{G K>lcDydH$Q/!<-Fi83Ho2^1 *sr%_"_XURSyVިƎ3&8~xh BL^yEb+jk |9‘7_309ex^&-TMn>n+C%z뵭[(0ˤejI?TRڰgSڶ%RAԀ^&/;þ^Ñ۷ a4oP'I;uc+nJz}S?? *@/ݯ%{o[wTܽ1uЮ]qeLz|o:m)2jd˯voܴS4^!Bz  $h=|9g} @^0 sw68 *@/swg]$ y5RK,H$.Ћ<쩹Zgt%;]0y0JLKe2=[b]4`>!͊G^&.usDQ@= XQee-;-A^%{^c1Qr1i/I\6;V*%;'Ѵ#u}XʤQ$ύkwײ`=٣QMҏ^^ӏʗ|׍K,/_8jȏΞnK%&`S{kJ,[uĚ)ء-nеOֵmz)jR53iƑY<G{&O}C?Q@MٱWLU49@,CrnWY3Tz0ei_(X2 69_ *툎ă8#?'? MlLk/{xWTjU96*iQ1LrVX2dW R(^+uFYf?E%t)ܠ]}Qҋ(*倾G_zZtɥi[mV[XfY\yu[ڋ@2鋤):RKc KO,F{YtՀzq"k~vOVCS9* >}|~a;9X 1zGbȒR/bo&;[ ;=GAWjW٭>)d*K] K]H,1gm ILyDi̮#eA'OBєUnu}ac_2[YҀgϠKN]c΋CJW,UeޠH$2[iICRV4^r|[JE^<'K6n Rq%Yz!S[,_CkZ-OL[)\v#~za^eͮCV+;DJnL8YQ{q/->в4=éӢ.o-`B%͕fRU)\dࢉ R;]e7ЋD6zq~NmS Kq[ ' }꜔}ڋHO&wO)hG^8jH9J k/8p ?P3XmGuZK_J/YICdJ[RG/Z# t4s:k[1Vm# Ek8u0*= K5x׼oV_v^4/X/ˠf1 %j/RΣ#W=j/LQ2K+-]z#R]6rq 魽59'iK1] Qa̱2".%?0C8 Xڽ}T ]ѫB[jDXvKcVn(JfD*[Fn;ud uUST4Hzi}.\zYDf%zg:۟ (߼B(^JuZ?s47/j^B/l#$MjvRЖQ{kG!eF^e%>ke8iYwd˹f G!KlJw=!.|ֲ:HbzE1b.QDGPtO;zم&˧L/6.Բꞔzم& !ۭ{k!ݖu˵M+Ћre\zbT˛S2 )74O:bI^ r&?'NĜ#V @Ā^ GQ*jwF%+ @/CH3[㗀Y: FV"F?IЧ5 z1B;Tz˶Z"GӇԈ~Dz1{^>uRz 8.CqFM@uh`Z],B[(ǂVGnS*kaNᵗD`f7~w!!9=PF|z>J9D`~6]B_v^Ws0 XCpr;?U8t!S~. z߮MNi!aZȃ^ [Ï>ֱw_ݱ dzUX5(WI6V#^LjBX֖NJ7]D5! Y4ek0@`rڼ}е>?Қ$h}z%@@/B+t9ٶ@B$O@/s\ݔ7??_>|Ԅ(T~{byb۷O? Bȁv/HOtJ(;n@^we$;ؐ€ɾ) N " b,]o'/kV@/Qeخ\_r!EE;i`jR`* spr}twOoy@@`1c3{+~/Ћ,}n~K{9vpW!bL^,~9p7pxMv 2y9Q5š$5;k#%Gmu*$2ˤPg~u{mY͵؍[k"I˾nK9=z_Der֎7whd3د?o|mUġ]lZqeLz_=cz̾-9{sk淏9ob˓4 @/F/nݾͽ`郯n)SW#Os؁=?=Ԑ‚sp? G^!Bz  $@H@/^!Bz EgL,{劾lV<t%fY*ǬQ,{Yb9)d2g29LEL0Ts #ΧS:RsT/:u\sm!Ȍ԰g&HViF׬3EC^R0?=>*O=~.yg|5=in>Sob>% y *?5&KSU/ք {QesL^,u= NDGA ~"A*zf sNחO_|W$+Ēf*@r,Y >J?~1etThǩ(YǷk|TT+Onzdc/iqcDZ!W9{yETPwEF*H> _$1ЋK/S6תL(75h)ӬOs,UkUU#PMn.[<'Ip-@cMizU~4:-1_e:+ e:^mOq4R{րؕyB sgcֻtLq5T }."'2Kmq>k0Kvv!g->wތV[4.ZϡvI}Zo/ao$rGħtv͞oov`u5_S!^?C'L'XLS"GFo'rIR}@/@/F [NiK|Ŵ}d=Ů|[֥3w(nv@/F(yŊ'/zJcfRx 9b_;{;8-f䨮'U;FCE|P37 T݀^1R\+%BՐ#QOwD\0՞Qģ 0`}3GHx \ jb4j֐vU{W'5j@=LDsbM <ؐ \HPqgLK H,` Ii(DuY_Їՠ-f:>ytYfKe1HimxtEGzC ~;jeTj}6Ԕ{gam96JA*2%r\q֢=^/vR#|/'A 12eYz1.ey%q1A@/vل796Y.AӘ2 #x"b'R[k! D0Z=ri)B/B, ЋYIZ-!ΦZz/`Hd 1ET+rк {1$־ XB2zaƑQt75KKza!Sh"iKza=#߃ (b`+AHٳtu$1b blA3gw^pYZ@$^|,d%Ou/<-rh-dߤoS-0"b$AĴ#a D Hɔ?7~q b&OHT4I+O6\ R@/rQWN|@OC99Kf8v9F D T`KcNŏ/WniD@Ԁ^61Ћugpb*t&qe㽘K?meHƑX_Ao`Q@$^ 'YI/_^@@/&sq{/khY@^Lbt9I-߱pMr%Dyz)b6Jm!߻˅v e b6=WN+=[&O_ ۼ?%櫏`Gֱh @/.iY=;L ;?)>תoە/o=&:DgƷ)OH!ԒL~.!%Y.so]T-ضӥ7rKjvlicJ b]}\esh^λwW¡/ (^w#ݐbz|M:xpıoi}K {1c?qk;?GGR*zW=fyAߔlJ۾^莦ğܩ݅D¢vqrLt)_P^^$DZ.8EzW.8Kę_gͧl勴 8_gTQh¦b*v:%><>b2g+D\㩓uKz;@,K옻)d\egAeBŝt"&U,zyG2BM<4eI$[| v - ͨ\/b@/,pbN o8'rz*`FG!@5O/iz1O/ygUЋo.Z>/iv!% ?S޴*ZyQR3NPL`!ޚO_ʹ^P^X%߫M/RiȲ%b8 ]5׾NM{k Sp$) Wv!+֬J/L뗌fu{ዼ_xa#Zjwg7Ћ^d׽Q#Gc,-+#F# 7zhkq< ӎv!]H6$&clgh".Qս"[c켜jzlVkvQ׫vRz4I& G옊ңiUA/\/ErϱVJH)#kTƽ;=sF9aZۊʽy[]G^F7l]$-%dkmur7?H5LٳffrDBwKq4Qml-z_hߞshU.^hR6Lpem 'v!EGW/jwE5Wf*0^ R [@/ɸ;yk0ãҨv b6p'L'?:—ʺf Db4'_?GǨMr {1^֍C՝ GF9,pÖH[lO=q z1i'I9$z%/rO%띕JUoֱG~w=E.h#BŀzFb4{V락?st襞38yKtĻVO:^&bg2G>vrTwTRgG'*O.x†ߨ3`‘y^Dhh|w(lbzkh=^x/vzscľxx5OF">0CԸ$)oܺl'Zyw]/>w%s4fU0_^&K:ywET術݀<z1ؽy(!dS0{q'}#ԽDl'zIǓ˷Yyzˑrzmuh90ЋِآOw$dњuDlGN?֡܉bbҳjKDb6쾗/Ӥ}n&\AQA/fC'O9uBvuySʃ‘ѼItǟ'-ЋѤުI!)Y:y)jܣ`+VY/m\N)s _pS-  P(V&@@/rqg{=|дB:,n32b 늡2QzxxQ[ N0^ d,dMOYnv'p.@.YIsRK}Ŋ^z1ԍ $xಮAV{&|#mjՒ%W0r@^3I2XEkF$V2Ћyt\K/w/[y;|mH{/H˺0"b׳э@ ӸgM?!׺ ЋitЃw1]/τ/AؙH#dq˴ 1c @/іӧV:^1AAچWr*R,z/@/f Ikm-u#T+due D(X荵hb5 ЋI Xj5K[zap9bĺF4txza‘Qzi[a$| BЋQEYq@-i_?t`a#@/FqF I-^UR2" b߮ I&D5׮"&ЋNF&}!8w Xf@^ A|_T&zfЋNҗo8 z1H*i؃I;]皐/)C:F}0( pTz1s]_*74‘Ҍ\hWK+xO~vn<،,?T^9s3P^u]i^^@4^e3-Ѳlb^@$A/Xŧ_kbV@$A/_UM L8){ƿ~yz1bˬt8Qz&kz9Ĝ^"0!d^(6%*߻UO4l?Plgerꕷ ҈C;Q*f DeS%mԻש]>XQ '_jerݟe6i_8Nt~?Gt85 b@/WݫII.GK}/U-8tĩK:skKeԓohfy9z1|ثo_[3zYu?o}r M1Ћ1/I_P/~SOʡGͲ qߏ<Ѓ켫abg}կ3{?V[gǷh^@@L}mVɯl͛o}Yz1l4u.<zFA/p@ $@H@/^!Bz wB/p@ c @/pg^!]@H@/^!Bz3K_r=-6bZtʶg g\.i/\eiƲ&4![LH٤ YBۘp3F>xfە>DŤK/NC-޶hdiyE _%jgSM/tgSo\TMWB]);uOܔ{fJX2-C6 cz}-u NVOD)5Ezӊ zFpf7䊓2h,_D3;U"͓Niq[Ĕ9C\L%RO[}QqīCS7aKg9fXM"- A'zƑhN|7|Q%|nBƝ5Q D H3Bk&KYK%EAyw k(2>kR 3YbَlyD/9]/ ٢X/%Ų `ٞ9,酝Kȳٮpڅb،(3ͰEt&ٟE/,ۘzߔ˴to_j1g}C;KnYlHTQaF&hp9RG%/2ٓ`@/9ӓ2Qhis;"htqxo!ŮyH_G\ säT`lmza;ϦgEai %J#1Oza^%.qm2% ^跘_eGG/b;Ћ%hO$ao 4щ:eW*s ծ^-ЋX Dd5Ћ5Nh\i̊쯧eF|dZd hIRrkQ-s)(K+xzIb`E+qZ抓V(I6Wфz%+qs{Ӫh*2gg9մKFe\OyH֒ծ;Au%.Wz>P/,-zU:(y)JmFW"z]j¤Z.OQNE./_{nX8W[F3XUIq9qKRP‘^w"rͅ#,zH<.,7b G0I(LSӢJTR`kq[ov}v!֍Y^峳^4}'ATu/5F/jza<)K]Yjk^|en h^ZH|z T/ae?kƛy"~"4LxUH^0!*_h9Қ՜†ivt^z i˻NlZdH ^Xyʋ"^G=su/nO| i5VVg-DJQi!݈6v* D/p LO:o!ʺ/LO Kttuclw"x}* :ox9^,X<s_ou@/F4VH=0hvq%_FnJvvQ:z1D&c Ut$\ ˚-7*AM; yd#.Axŵ ;u=͓W~8e6ׄ/d.@TxzCJY\qTb;dgf:HOZ[3o"{[+iF"`0YFjyɺINm0z>zN5%Q((SK{D=@/F!+NEGd" I ;#'^u/F- 9-8y=sK=y]sdtҋHQBODO,gT? ʞ./~$zQazuh'W.XwdW^[lI~rn_yKGռ?9~j4"閺SM/`Y9+xzIžb*9Z} Nx7E@/rlA`@/F!~}B/c5/K,V/bĐzo崴^&aR=KƚyH/򳝢d2g^C@z1Rw^DciM/^d҅#qHyNR8T.9E#9~ NЋِ+O.:+Eey*jpQy:@n5kZ.yp$m` i."ֆBbEƯ5-ڕ#hP3Ћľ8oO&buܶyVmuPEQ;z^"G1a@ Y {dYQm񎾨BQc^n "biPj>voҹ,&{.I>K^BÞ14nWЋِs_6 Y4zuwXMzi lI;8Kg:t},\s_籀:n7 [/^̆Վɂ;Irض[Yъ< !}OxzVБ WBε2stwgOwR7w.k|Pb4y +Ը$AHg5(47G R@/&V#:Ћ$ܺ/,Hs&ZD/rYesĕ^*87\q\Sa/|YҴLhުO/&e P qdS5 P5\ۤ\'dGڡSil[ˏzknUhzC͉N޻>bd,Xd}Aa37]5],/#s٥4Ћ|98FtdxH‘f#Q2,\$$HzA@ > U2E7"|[ڥ#!DUiծ "2P1Z_ܳjC5MQF‘oDB Ƕ0VQ #S*>^jڽӖH Ӡ t|A~X:zŢK^;cK^S|{n6E9qZ7\{mgn袋/\hWWy9|Cgeˢ$^npڵkԟk֭D ^uK]qۭ_othm> Wc9vwzu??m}ĕW~W\~ʕe]z%\|Qww`C P<uq5 DX;  bRe=OE5f@_='@\v?}B{u5Vӣjh`u:}){u]}S׬[S_nSϘcJQE 0m+jd맚}"֬暨5IEw1QT.}ߺ{9~'lQ ̝uSj͚Q,k֮]EF5~ԇb 2GLX:} Ek֜u2lrwUm7:<< gx,0Lc8m߾y-dmaWVgar_tVarڛL0 KXns̅]P[&+a ڝ<7]_'⥍aqv}d+FC/ ~iz a ;XyYrK\ؔybI<|a:__pA|(Q{@LX_vg{ R5smͤ( OVրN VqTLhR80qւ,MpKC!.}yXں{09vIpgg{7Wȸ(m / S#(/]ӄ~Mw.5w$)u;lZB;2yn <9!@ġ:С՟:&?% ?1L=@1L^J !3=7<p+N8Z+FY$FSQ-'4ՑLBB]S53L>ha KR^># 7HyuÑm_+_yٯ;奾!.,/\G&6*IKX]Kaߏw8//ڹw%v.s} >.7(rFa#""~I֋-zwU+SHK}af+2Q!Vt?w[?uџ NEPBD* 'K+?ݸmgJȞ/~%,/̜V,UH `ߖw'o%7z!+ Uatan#/~itl?T3bN~\Xӑ`n]{uO&LlT&}r|r;o?eK/ɋw4&/f߈F`VjI& U.$WNcOsĕJ`ҝeC&Gt [ُQpqyM4$J|Le&G~V2݁ʝlN尼ಪ;*Hc9./~O^-ؤ$vjf|P`ZYsauC]K>]B\^Z)-0fZ,-3!ȑ+򗿔gW^T;i?m 3>|N5!衋oi$.O&C`njbx0 /ǝ;hfo%UtߗfZy?L}oZwJ[50(/iмM-;Jj V^nFóLW9qi,. SD^]x:'Sfv؍LkޢՉݬCs==Dk}!e&bagnB0)٭䬌a+j uf{|s9z0 SZfqSӋ!ǣix5 Plؐ~|][g6A0L tl4m]ߝ>7Y9ko|'pS/LyTRD vUm5qJ׏k]Nr|̩ˇu"vvCrGMRM_^F/W4y-[=R^DպIy//eD(/$vȳ%W,sR|qEM~;BX1*M^t{!9 &/yI9,)/u[ K厴sX3"/ 6@JbSb9fgg̔2jDEʧarbJ\k1ƾ2*lzhP!u]y1 XؕgcV6U(RրxEړŨHjcSz[v$aф/{/>_bA#89lOp3yi4& R׏ ߘ;9.GVuO~<F+ZSEd7mye+f PfBE?cF. qaq#/0p 3ȋNofBFDEMtGUy͇֡\ffDʳ/7Y?]fgK$fSN^\PA^J^ODhP^μf'{\8dw488tǾ>62T]f壍P˪DqT{nf'Ba:b{/89"#"/ήt@|P̥jn#Mz&>/;/]qyYLP +򹨵ڕdؐ'Ͻ/ɑ}! g!RvW>rD%(_{bJ?N^|?w(v&I3z㩣J" jeeQlVz#pE&Maf46 5/E*/ 6YMˋ' Y2xYN.Y|jA"C]/vIʨ`X=搼3"ҽ4ғmnuGk%`z{ʴRǣXoZE%^^`r$ cTHUŦXp*\{сacr^5"VLO_k/{KzugNyY3^{iŗ<]_nN|{ku_i污^t|`z=c#C[BGope;V1Q~ >F<rf >I3YحX , Q^LbA:_h-3QE%OUO]5_z>9R35Qg #Z˗%sC$*:ע|tQ\^NYuAy_ZߧrJEɋbY \tro~VxFd*oOr133wco ?*$/^ --}E.m{tdj,n3yi׮tK4zQF/Ai3g~3 5[57f |b' u1xhJEJc{X]4ay ŌKheХ+~6dx&ept:.37ΒWO} q )oX:2}_]F < ^N%;o9)fQM{UQ]N9./es0 37C5wygbٮLȲҹ3y݅a))SYNL޸#bLȩ#5츞7'T]f%0rW6f>A^d?L^9ftwwF0pz>u `P^ƫ0L~8`E~G.Y#/ 6f^0 ,/ d 0q 0púa,a]l0LC`ya&#gya&X^Ɉ[arFaa#OɆX^i(kqc 0dZԗ+yav՗NaڵN_>0L60L60L6al8L3 %0 v"X_{3YNɑ9S[5F r0souȇF)vtcayaV砑Wx-6G{dH^#(/CyO a//gV HeQtZ/>.˿$sꧢOn#~\jB/ + ȗr$/ Qqo}v_B~GT~K3:пƃs*# MZm()1$~[2n`yIAW}?05򒆈}",/)W'~0Lm\ʿVaf/ײ0 ,/ d 00LF.01G/0 3al`ya&#X^~aalb~e/0͠>#sRs#'s%/h_̏ {iut-0L]ϣaꠎa:]>|4i,/ d 00LF0 <9byah70 Sjw]h.,/ ya:g“ J19˓ǎpȶ &1`,ҿ$v)L9pKFgd:AnKX_[TK_|RUk ݿ)%][Kg_ "OgN_^O 6?KBFg1ʋҟ(MY^ӐhyYoLOQ Ce6sh1Q}08*;t3;uhV#&>a%\3Z QZzv,%09ȚB A^ Iȩ7AW}Mǩ|Rsm}`8] lo-Jw@U'GTsQ kJPD'GJU5n }F'G괫y[Kfε$,F=)ɋCz`c M4:| &kV^W-/32B۲sR7i7_=N^YYE'SnvNRA4dL^DBA ;PJmh-/z{t\dv~܆TNLM}"yp7 ȠAHGכRyp#U搙MIݍZut59:UξxO79_^z܉yn[`5ʋ5I俣4JF/.ɨumyYPF/Q[B# IC#!/%H#/vvCt\d'Q"mRNX`6BF)Uӑx"/Z^%yW)@rܑu/[BX ?9"=&er$;BZyȓYmrDɑ?c LsO(*O䪯 f>ICV +/dқݘٓ:9Y*%L nz'G*TGLGS&GQoәA_^~(B/폞++Ȓ'Gg6|y7uL=Wۦ飼إ];KDť]I^''k,"5Bzdň-H'  Gq >dmW\Q^bKmsRWmh%vIBTѥ]i8c[.bBkJmvW _v٣dɋ=':-z0]Q>v!'`k%enq'/MJe+-emtQ[~0MGi yO`24dfڏ_X^|OCor23 gV1;NH6`˛[ ?UOKj !/ɿ;,Yfʋ`#&)͸OQ^Pgx=H .yܨ.y9r]ͽr'Ly5T`Vg-06V1Hmʗ7N? nuKu˗r./pe܏v.}S0z \BRԏ ]%>Y_X^[Ѵ#4w x]Pt%CarC=83J(1L~G^6f(5z}jOk%OϬ%?C9Ɋz \b^2vy/t3c0~ak S)_zA/Egalv7! 3NUݟNڜ2̬En7jAH_$]Lh2 ,JgMI#SXw00c\kB{yrO-Y7 ZٿBJØ;1/=uZ֕ pfo<:M߆)Ҽ:K#` UXcwǓJ./048=λVQfmflxoK @ڤ1.EG[~=qy!fP4Jv֖&@{!6R1zx A G'G)9[1POb=2D^N%." sEk61p9(yAJsE'G 'Gh0ΰ(q#B\qBK"/i9yyNM W~w؇ѻbWUX ɋ]D -wd Hdʋ/"!/]:/s2 1?Ϯ|M3<=ȰocSqO.{[)<Xyybrԍ:Jx}GX^sҧuwǭt񾱿u`t>jO ^5'/OϷ0LQk3880GB=5i)Ȱ .XEDQ&!/(/|z_31L.V{Q\f?s}b~wnћ 1V0YS֮Vkh !w]~40z&GFJV,9viԃzW!/R^̳.۽ >ZfR \HKGgM#$Ø=-~/0LzF/g O#߼:Cݕ0yِKy_R1pcss0 ۴R8Wcw]|cgguY#b 1!a9I>kauYge]M1Bꐗkr*/Kܑ>mq|t^Ӳ0:ʋr qun~mv!/U^7rKc7_/3T d ˋϙp~W,c^q:"e}'3(Ű[y%) E.8mI\h@;֟=ϒ֡7ͅC^ޛ_yhTfgWa0R&C](Уp3ucJfemXPuK)%5Q|yQ~ KG2u =ԟV 9rG*ٽM2sY\-I p4Oڧt[܃i.ʳ4SAƓ#,/rK=(.S]6b.耍 0SH(&>Km f1KL6:y1[,/1\^%LŕO3pgU]iG'G=309by=%?=K3fi RtO_qU/ݸ:%? ^:1?bٱp<TD^`iw>H=v'ɸ?9 ""v/ gj\"h%vty02Ry߽,bܻ1L!/y_{1vA,߰ Xꐗ!/R>UH]6+s X^pG4iYarEnɋػ:3 Wꑗ 棹QjaJ=vY^60LFa]a2a`ya&#X^Ɉz%oL3 @y00Lia2WY^a2v}h.,/ X^Ɉz&G,/ A=OX^ze]h.,/ X^Ɉz~'ya 'Y^ ;<0sa2b=)d&X^a2,/ d,/ d&aᛟmu)\0 Sְ0 KY^Ɇ,/ dCgZargZarFa:aG/ d^Ɉ״: Y^Ɇxr0L60L6lou)X^ɆX^a2\aaE_s0#%̀1L\pӇM Y@rQ$dV,2&s6xtx E&$*bP*\7c$K M[^@62َ41x@泮ηUJK_R[$ jiuf* /;f_X~oe }hA U´KN)Aˤᗚk1nTޢ>u7@&c HL6;P^C@SFy%8> w]V|_zeY, +%e_] f2[VE•A(Qi 1']lؘvHX 7Agj$ݰEyvɞRA In`0v텔eA,4FP `1*^pf0(yPKxR0coQOEG]V^8d=$k6Hb{Ҍ?ZiآtaNҚ|s0SEJ8_`> u`.o p{AQ$OpʋY7]΄؜C BE]Ʋ,HĂRP!s]'/Xd<3}TH\^Rv7ʋ T^Tϖ5Hmn`ْ/0uEJ*/hԜuYV`ˋ"<ɓQ!@W>ɠ6e'yګY Da]KE%E^$նB!,/g,/0e%oBoPFgL9Jnq_^&x$F/{(s4L bM4áڟW:3rD`ƥHjN'C# QƯ]399&yJIɾ0>?qt2[c Ll_^#i2PmrUl'GɑZ]&1@F7>颃a)vM O^ xEavEz)nUfKYġ.{0[j}78yKp]*^li[ȴK]&~ &GvMt2WXlUhtqyKƍe-zK\FI\Je+ |y LaڸӰ..^p+&/]x7U‹"73O:3_^3ܒ}bwWwoXM?76~|;=VSqz¸S`uyRWv]x.vqY:ҁyb}%d˲ Y<$) >N,–ve%ye+ LC\P#*w[$fћ%Co1Lxȃi {+aVT$>?y8F5 +ZŔ&aĩݵGS_WS#ِIHcyfa0L&?a{AZ¦v eJBK5 S4t1\1B;K {p]Nߔ2%\E_W# RGVy0 ,/ d 00LF0 -_ig&/ju),/ d 0R# ͻOe8~ ?0ܞX?K!f#2[^1?E}tIz~g\-kJnB23z|Wډ: Wz7fR5 cw|iE{s(Ijc ߶A^YKeE^ k6X1k7oyxY`Зg橀:agQX`H FД&E<&aN Zdɋ:dWLڭ-H6 |%[]nDzPw-{`MHk[ e"kU&t+M`KLIA]q 5>I-+IAy s='/=787-\%l{5Eu@X^X쾠׳CA7SbP^ӛA\'7 ^̌AKSBL !1)8X>g>h,-Jh3BGmޑ3ay }aT^tL^hj\^X/p 8bL_nh,9y!/be.nbAE͎VypÒ vv9F]h`hu@X^PDD^MY^HϵBS \=^Qb,|4'/Wɑ^&GқTYcLӜxƍ)+/ Y eo.x%䈙Lng{//h=+k/'.XOL7M6KX/k$>.풥ڋ ij+/pw|y9hnkP^.6݃^130 T氓|<=,'Qr I-`Z%$9aL[S<ƁH{q;2QٟO'Oq`.IPútdf,/L &IQ~zh9`V^<3&'0s Wxr0LF0 [[ar ^.00LF0 ,/ d 00LF0 ,/ d 00LF0 mldal(alX0L60 ,/ d 00LF0 ,/ dbaa`ya&#X^a2a`ya&#X^a2a`ya&#X^Ɉ/0 0 s?_(]8(jP*٢DPmݺ5 h6ۭQ{|p6Ք8uV/ ם]1Bvl2TSΛKUg5t$̹hm'nJBONKM^8dأWӗZ H2t@^z1E%FmaB_ mϱEԶNF/veKbCѡJ1Vk3:oj˶Hmc'={&3JCpp=bǎmF!WMQ,{~CpshlWh6I;^DhyiwA@R#/Ccnp!0"Q!t$PɿHׇmR N}v$KR /]g Jȶf\rnkhyGZk0$©$udVm#Ȧܴ&G E¨ίEhdž"ِdT\b>ub$Me%vy+ l)q;:z1l_ 6ŮM^QI/ڃ(nSG1q-~zIީ&'0t2N^fX#0Z^lʋ)GFmhB^daLoTn=yi>a2a`ya&#0 ,/ d 00LF0 ,/ dĢZarI Zaraa`ya&#X^a2a`ya&#X^a2a`ya&#X^{Zo{t@?zc犲Fq{Bϡ#o ("=i(*xGB⫹AMvZ7$f(pmkr%-;_/~L BiȊR{,Sp~Q\^,{lS=O<!>1ghGp'1N)0duEhϭclQҗ#$1p+i/=Fu^Hu#vrob$قpCvpF ƒ5R0E5Y*[%B[8`1) zZ455ȋkV1Nf4$QSy){aUzH+ Vd@zҩpEדhg@XE[$)/4DN%oD ]Cy]5Kt/bm"JVLGq'/Œm\xKϗ %{NE^heʖ#&/%Jq{mr EɋtزR%y%NwHML?jJQ"B76y~ ^;~kWp{s8Cfʱz&:9[۾Od+D[b{7 zHN0^*#Ҏi>lzɑN\Q&/^{v+8X#uzuWY1?DYɑUTe]d;6IWSBHHO^opm#l,/5(6(訕zg*ˋ^$ ,dr+/bիxM"+z]W+qђ.L0ru Vi/=sDkZ{+ڰ ._(yK*"\څUGk;KMQSye-Z/K?32m6aM;cb7.e|Z!tO/8bEm{> ݇ccû(DnNL͢{@Yk0Z:&S!8>^zM՜~O^:KಪZZ,] ! N}COujTyZfkB^ycWݡ3إuc2[Sv`F+ n4ٟh,/ q_c_֟bwGv fy˘ru Iz173xy{48 e'|'*{GJ \+,/8P=MTisA^~w>o`:Bzb2gK" S?zݦˣw㣿WpxLn+w QZ%f\0',qqw[b4Eq8K}Fܩw/o q}1aAT\vȐq˝,/ 3u7:M*=9],}?%}ZVoxh5gXb8OHne'%x:^v ,^8kKJFc:FE @0(K2W}I]Uso5d tgɋn~ߝF/xjlВ-32ފSE 龜kjkBhe3hE{Q!LSy Ժpii:eb??#3i|ZC{ddLbWohL$x`&NhQXkpaoPwH(݆ G3Sn iT3%˗SOO\׼]~QKTВt 9ٵ!u'bz(.F] z2!/ %PRqˏ;BB:^ksqyN c">f4(tҹQ @3>ꍕړ9x:{XQn`5yi ŹרԊҢj _^lr)FA$&/L!Ъ :Nq!E~ D)9)ӕEFa䅞UOبc>gdP^G7~X^Lɑ>+hyHYU3b#y5"0ϘK"mr4FNcbzQ“D~ܹN0ȿ~NH'G5frdaa84vW? %U?$](sT-^1JX?,/S&G6Y* a1ch~LzJB.2DVe6~ii>ff+TjT!^~9\f,Eբ[EWLNxI$$xb qy[{!Okl- ]LT} F!^$Xt*ay2vP*/FuS{N#ñ o(q >,\ QLg,/EMǯ3+/^oI]9٨2Z!)Fd)iC8ξ-tQ_B]bz ,`ya&#X^a2a`ya&#X^Ɉ': 䔓x0L6a`y*KǸE,o׬Nw4Z~]pPNY6Sl/yFE(:VUċ M~}eʘ9uhbAEMgډiˁ*X^2{c"!/)c-i%14`h̼}|lEcwCT":ۯ_%(M~x{_60Z}ߖXGѩmE([JJ\Krڲ>ͻtfЎ! ϗ3C":8S.&^5'9=ELct S6h5*T ͨ`I@ G Ι gvޥ2uĘ3LЦ}Y%BhH|3/Mx"H@p /q$4#e#jzM\VviM9$B |W꠱;d锾%2n )bpj5dIg. 'fhe$ ]穀 4D+QZ@)zw3E*;9SY3ԭzZ:y#y6hˋ,ayϏIDb`B(N]44F[ĢCڀp6%*/$ ^LEԲ#ƂF ؘEg$Lb'G|76X$?ӄ FbIm㘇Ԟ4 NOZn݊V ]&)]` Y k/ho(f Cc^hc2 ፴N0y"/5+Ӈ.^hv5 ⅷvٗ Eϖ>` ̃}Ja]{LQU^<7bRԖ8艛ėNhO+Bqa/>gZ nD} 1yS@REN^B=mZ@vფ2Q t⣗y:TySysU䅮iBөG^hUYhH'% YJ!/$6"/\SU^31ć3eelj/ PEU%^UD^>2XkEj- )#?<IiU̸J#J=9#Ue-wJ5p{492ׯ&G'))K?Z'Gt09iBJǓY*vΚ7P'GL[Bb'K~x}-KEp./}jv2H,ˋY'vW#vU]~W5Syfvƫ r篲hxғBJ .-\raYDVL ٠2į1ghK4<5" 4x}>Tr9Z7-҇``^'[ėgqyQ)7K\ś^Љe&%V IԶ{0 IP>w3;j([rNFm|vr7FrU]Ҫ:PED^im?p d`~IOX^Z[st ?2jV ߋP^jݰ<?5^Xg)4yjVBUd}/nTӬ|^43>a(,/ d 00LF0 ,/ d 00LF0 ,/ d 00LF0 ,/ d 00LF0 ,/ d 00LF0 ,/ d 00LF0 ,/ d 00LF0 ,/ d 00LF0 ,/ d 00LFMy9{ǎGv`\3[?1Ķ6:/ c枼?omu~&5yɽOFDG#JY\[GiG}TƳ6R=PGz4PI R|%3LGeXT̂˳Oc񽝑01 gwmt;&/8 /@II% GB.̐kOcNLE#;A^vT*w껺k e<خCoKqݮ%Q_-=\46JHbёmHsŀ/̧w"asFlViJ/N7H & PMڄ}OUԸէdn]+KЀ- Zzō6!voR:Z$H@@یK%QWhw;mCt_;%[|J\mH {Ug)F>1obxa?рin:ߥ6Q],B9䥬;isaћ&9P!Q^\> G/׭!yt3:U9b LicD/2Iܩ(y0 umRutcA`,OUUesܑ>o.)7\ mHbT2id 2GKwȟWV]|rG(Hڮ3aN?1ɣ7~LV^hSlAAh޲D^K%m(A!`_drrrTt#,K<)Ƣo0=AIKз~R7fmf"jWP{*dĩlݕ]I&/x^[ZhcSX  ̓ 6&yҿC@!Ry!e_f +,+撼l71:Ӊ'%䅬E{^pPFyC[~\Cy8"!($"L4FP^`[tPʰm` Ę`"J^e+FdHMf$QPy)UR^([J*.k/Wh1zplLp!_^v҆;?W( ˊ$/NO<=XЄ軄H\^lI^7i:1Aڝ$6z)F/a<^Qy)bD)uZ*CQRxژ ,/ c~]q8ם~;o݀ܵ,$ὫirD`ݎ1yFI|ёIL€z%ȉ^(bAy LQy9{ _ZLL䈖 ɋ&G Oɷ&&` oak/v =[Q n,Kf9.ɄKnOOߥ[ O 9!Eʨ^kvKj2[5*e\.}nɵni VT^Z^`.Kp9]RL`d+i1 ;s;Z,xlX^m$;r~؄eNھˋAuXǦvDͺU:I=:2`El>ubxhkL1y0  (Ҁ-A;k*C&yVm}}WcF1T}nRP"`ZE Hֵm1]fq{0tkЀ~M# v+kY Qnƒ9#/y%%Wg'kEZ @2nAQۯ!^z掼ڃ+/܈G&IsVVl2@bA ڲJѯ#ИZAs'p-uR0v)E%s*ѵpd,f}yXw-o;3tSЃ?ޏ>`?݀54F#pD^ƥoGAGѵݾ54%^4&]t$5Ydtp*x(8KoX?T̅z3$[%,V5&mѴޖ2qvBzZ.P5E4c M(kE,Z[b%9w]*/ s&Gғi#('RjRz919ʝT2>#/qpv\KD"aVe 2oVaCA|*T919vcy]ᇊ(Ɩvcű(;G YQK2U^Ү#+/ʧqi}5XȢ4]ڍ\[p'V2iŭAQ]'!ī;so\KD㶩 tRQ%3)W`g kaDL^NҼ^>!nO<a8֮m(´d3q,qyu↋VT2 Bܽ䈺|Mep8g0#R}b&m nbF6T,E;H7lr 0Ir8r*/R>_U2F;L˟UX6z3BLY_ {@wi_GgdvBKv` {wfڱx)4ԁf \̟yR!HqYaG;v(j)?'q !KY!icD~BFa8R*mVf.7yq~"P>*sӔ1#oݲڰN}zBaOa嶇 <9:l=(ğ51c 3Wȝ7>.0}l9^M!yJ'3\ϽB>\1\$wJFEOa<efN;yd'nSC2tbG%74/'ĉ&_0oҷvR6sc9񺪗B_}o }IKQQ0FIIQ#Fy~bV" e~+ 9O9kƛMz^W׶Rȋcj󔹼d)5unb5uP=CGj=g[&i{AF:=/{Ej2lbI &ƱMf,/aQyŞ62~CɥgϏ&:]{`Udb1(aX6,6P)QP7a>,NIx"ItD^ƭif$fͷ@ hF$&ImT@VqPsʾ c1y1EŜB̰ŻS^2w&>7 g65LcH[-cI{w]ﳍx$&ֆX*x%eӗU?(Q^jO^`:'᱓=A&'/h3"0oe"-=(/'bLlsH;$gG$fulψI(3H80#d~xP>?bƑ_yQ|_i"ja=ɋ덦 lг*/zo.*K4Y [ x[{1k/V^T՘`ٌ^QqR^$JYhPRRD^ "=.b[s\B̓rG/FFp*֬3#t WEDyC%'.{#nK\3lA1b]K|4aÃ裏=؏|'xb߾O !>SG<-8e_4^msP^D\c5*'3zwN`yisP^FY&[9sP^~z'90U0Lsx' 00LF0 \0 Syys0LNayaal]a2a`ya&#X^a2b# 0a2a`ya&#X^a2a`ya&#X^o}FHcɊ:Q;dYb;jDAin@6E)d[JKm_B.[\ ˲e5]]]n t^>k]޲~O!tޜ3#Y%Y#YG'џ9GgdWsf;`lM^ 6z&@/`lM^ 6!^״B^F_-vQU,xh3-vi ]+G/X9 nA3az2z!f-h&L/݂fBW v5/k~zg}Fxgh_ k;wirJy}?m@'#^IlrE/OǃȲ @wrY\E/?C~ o5kvӪNG0 dR0b@'- uOhzC.htKvD@0`+P2e$De^ ,bUwۻ E"vlrధOM&\/$kADJR2h|:[U/? ݠﮪGq#z VmM-{5sh{yɬCۚ!^l}eg_ |4 %n݋7|w'f&V!nɁz/_XA$Ш ?~aܐ7.շG%Ʊx[Ⱥ.)w&Mҋ=2:1m§z x;͖{f|IW`|Sd|(bo5ʎHV4ۚu~NcޣxwY^~w3.0%W?em\xv_9m- {r 2wp -C*)R~5ٱ̌k6%〷ـ5 i9` yaڋf̶pZW֋N},n;Α;[E7? Ж+(Ӌoڋ8 z¬ź^, OXu#;zc;\/@z1e#H9= %#**V?`~xdsΑuv[Zl˽liy7e,Z!/^I/wWUsI/%'14ȴ Zr`>_t8^pe]]~4ײ3ǔ0CX$-ڽl2r9ˋWҋ`Xc`"{ (ֱ|;0͝r'9| |d\/1-Kgé`Y|Yhp,nv5>|)=1*٭YۢaIl+]`9b饻#X'^3@/zlM^ 6z&@/lM^ 6z&r (`l:GK/ṵndxY#pm :˛`>8]VuV7SÛYOBյ@!^9ы9oT^;xkv7VCU_@"OsnA_}/:%M0Fd Na̦Z=@DWyN/B{Sfw8Q>`dr0n*|βױ^ @uϕM&<#Ϗ=?䓪^Z^4te1k|jk k潖Z^zO g-hAs ~Y>XK0^알 1c]?8> kQF)^XY/;@z" Ϣ?KdBYu 9_@1قFY4S/XSR26rza ^dQOJf\/fO\RQ/Mf}Α ^J,Z8b-%M+^#fON4shB)CHzgY-! U{aN|+=# .[Ԥӕ^:4Hz!g6$?]B#~_ 92J9a=N%Ҕ*9̑X6[7sFg7_CWZ ʮ]y}Vq]%&77G_oB,`lM^A/ÕA|/+``lM^ 6z&@/`lM^ M@l`0M^ 6zi|S13kҭl {5-x+@6◸<:[[VV軱6b7=^'_(KqziM{֨Lzi.51rf o{σ^or]N6"G3~xv!9Hhҙmؿ/mAM' ?~-mڣU:C+B]0+NR46Mc QGwv&owOvV@l ơ[H"_ldt*Ɇ@9Ï\&:?^n?SxֵT/;ǞbĺQ"Fj;kzSb>{/!#[ ^p~r-zp|D 5] }IS/wЅ,N'j,t:^w4BjKl#Ssd ,4rF guȃb葵sdt_: }U=4%a3zԨA/st֌^,z;+÷L/c#mePJz1l:KIzaz9 zltq75P]ET={La^xC˙ez1z{^0;GgͯbކKᱢ6$;J;G?81],oӍ*]K擄\/|hK}C|[3BWlK"og2v;H/^XvWKqYv;:@"E.}cT . $V{1NLt ]VWV\4ﴵ|gA(X.3NL 4Rl^ 6^ M 6z&@/`l"vA}-@PrQ"wy[^_}jn8?y~]8,-">@e&ݠyF)Q$aUyC[tW^ERD,Dm@^ٲ~ڷ/7mw݀%:~)ҫԇΓG[)K4_NFV<\uJWC[[}e]_Zp5{SUZzc+DY֏\~k^gЋ,Օv]r BR OW /CȲ0_+ ˭=/, [գGR^p42"_G6|A|[;_Oǫwi;ߕ孺^e2WK~v1-,j1Y1Su=e^ps]22@3rF9 ȪD hIFz)H};>}R * /S/ϒ9\HN8zG}݅rr8|G$B2B?…QdodqQ[bZAU55L/2'T/']JƸRxF2^p{\fR5xY^vt4{51o"3Ky8aK+g]JL S~EB(^wz9i%?̰dZs4*usɜE/EbHb-LTә41t|HÝJhHkvr[_ 댏xz5JB'[H(ɡMEn7#L젫v]tA>BoIf50X^KE/,\<] ՕꅼkE^h,O{.ҋVaI U{?-vF/C%fRj^4^XYR-:O׭Y#2.\/8bS~V+|Xo<+2µb7*sL/,iH/ݷ>z_rwy[]sxziγ)2chM,R\dE1|F?G%?aOL+4ڸ{ո7NLcSC r W;^C+׋16(9?| W+Kg|Ӌ9wvn-jTpbz,ǼSzY]C/ezyALW hDJ4̑y8|;|z[K_cձO<ϫU/qP/*DD%҉H#qXz86.iE? E\'Q%567kCQKm]".X/a~Y2T( ziob}tnЋPe?ac/=]s1J[[Εay < QɘutE\^FE+T'_mk؋VNGqE;^ksY%6ԴOJSwڭR!P4 E`^䁤~MI1ME\/Ћ`HJ\*[E3n# 2!zݯi3L/Os<6"zCH"e7~9Mn# 2ϵm fM#z9x3$K5'K~Gn&x%W Ƥ]}A0@E`0K42+~Q>39/ٸuV`#b IB~,Ce6x*"zwzw^pVC/W[%%yIS/ Ћ`KĞA>]X*C!mme^CR#Axxn_RKM"ɱtQVs I0%F@/bq Nj/qb$Dku^B<|?+CPm( _^i@zCRu/6LRs$|ʮE(.z_[~N#;#0 4ܡvh"cMW?wʑY}*#ktARفx_vKÞ]{t7L8JPE ~Z%M])lʀY T ߋ@=PƆ] kJ9߆] E;!t*Q85 4 Ћ8"jdhj:2Q^a7 OkHT*_5q@Wz | z}~oЕ^DaIѽW!_JLeЋ ?|sC}(oЕ^$Gm%NIR*oЕ^Az9zj ueSeoЕ^A+\)H90it%AÅGnmlzWz7J@/D)Ev/Pd;gLghAݡ|hӞ>^w_ e<L{^f^%;{.W@DUP%mhЕ@A Š՟yboJlPe<"IK.J}ƶF]{|~s >{rslhtީN1p$)'IZƆ.H 6ny-Ћ\r>gs.X.=ʌ^U dlm,5^JIA']|m%oI'EǙ襓YB~\S1a_MrTD:bmA t Dȯ)Dtj:wx$Cȵ%t+t0Hnp$z {Aq]5O C '-@/嗕!@Ne[xv,;J$S33Rdt0 ũ,^z}[UYh)ΉONd2tF;ofjTn"zokK9C#+XRG7oݞc̴=Ml=E{ 襃w#_GZ]/正9]0;LNζhՎ^:g%n=:\٘1G++.:te;Z+@ȍ|%V'RӟKO.ajzylj~^:dSA/V-|nw(6L/rMMp<6ڢ=^:9vU7,je]')}Sډb7jW!t0?Vҋ=rWj{ȸ7OlD/z22I$66u;襃qTQ.^B*y޾B)699쒛MM9'[;p^:w9#VK݃ ^/{bˮsP<S6@/AIV{zfYɣсDfRM~hrH zW .=\dO2kJ[>rGoYk Ћ8tzXrx#=r8^^Ӏ&In.[uKr8t;Z<?/#n?Y}#ہ- Ћ,\< m۟ݸ/ ;`lM^ 6z&@/DSsá ?v"@/Qk=`E@H|QF*v7 @/RIVêsGCDX8r "6ϖԾ}l{\/.xWL^m>T(ɣ" }Y琋N{bk?/|l^K αf/[sJKVole*Lnhf+.T`EhJ.R!)HS$GL^^}.ZW-K#a,+ߨ A/@eszyC$b.FE&= seVo].bcl@c̽L7 Q=$%s<ZҪѰ^ٖ7y'4Y-wQ"mfF~idt/xKVmz6]G^DzqˏId~Rw {>DU5EF^^eN^Nb,zӍq  / dLB|z)QnZ'M#5P!K&<'@/".H % T"!B]!cFX w,9Ԩsj ^,W {M,zy(bv[4GkIdRΤqX|)5Qd I[Vbl%׊h%f,y^Ц"In7#3S/e]MCzK7I:2g]Ru`w-z XmK/H-%bIΙ^PɪE`WЋê,ѩ~^,vF/19[T/l! vrhV3z)@9[WȢެ|aX h gḃHKb=#b{Z1vkuعh4[=חVllzo#-E*(Ƃg0 c/!\n ~T|qXܫƽqb+:GdZ>b91myC 6;okYt,=mЂs]O^(VHM̞쬷"D-Г^VWK^#-eu_3UZ,z5-M;sD7<1m{|#DWDyS/ z(61]G^*DD%҉H#qXjr[%kaFky"UR!n/6>izy][˥}E{Xcza< ^Zfz /"}YOCODf ƼIЋЏ~K}d\eMm+@/2B,Z: ~\/l[.@/*Z9yG(Izym^,֋M}`i"NU5DJ? ֋@/s3B7wqy\n]bnΚc8o icF:qf:)9.i\ٶzc&LM~^rj".{RV^7um Ћ\^ֵ &@/E jX—*A4EP_OY— NwpM$_ҚVEL6ؽ67YW6zaK Ћ¸eͬ#f?mPѢ OUbھߎ^jê4jÀe: {[%zAoiGLPxNHsGIF :@̖tݩHRAt2\lEJйF<6aQkڼE/BPsT>isc"| Ϲ[3HY ^c\ ' "RIڝ Qnk㺐ҙ4:f1+O`R-P>R:@^%þcLY ^CR#Axxn_RK5ҙPD}LIæd(=dzazAe2<1kk4=#ݤy@/b{Lk5$IQ/ޟ  3>E,vۉ\%Xl𒽃z}mZL'4tڒ=EG(5eIo4uMk$eu^V0ޫR/Jrp&2u/|# ϳ38/ti4MwͩHL,4y Yw^%:OE^n~>p y3a-XY&`z)Ӆ`B\ra]"%yd>n,qJR^.o~󺖒 e#^"DLǔ.+`hhKs. g{^qKSaH!쩡hJ@OH<\Jt_AUQBO#y@UD5'@/b ;3QC ]$):>wEH`D {>_Hq"5}tP*S_@ED {=V$ ]kָI-o@c/B0\ǧ:}{˥SєЋL:Kr{өNgE_ftˆ^t m0-^:OuUzT*;հ9H*ܔHY2m<;:hs.<*#Q3ɽtJJj:wx$Cȵ%t+t0ېӍT%Fz(z\w^s]dv|b<襃ATt|E(l0e/L2QFl-h= >n*C4|A^p862yS<>8ett"ضQP^a8C=[Ys͌$S-[SDn:7=yOKvKs2NYvzXg06ώeGRdj[zbrbrfXꖖAbIri@~X!}xd4AĂ1&v)!g_TݣUD;'><66>9ɌfA]SL꽭هn^ SNΕt0oD.Re~Q@—|=yLe&&&'gfQnb- ѡSyD* dtp GdcbtǤ`t`2Ihٮ ,-4v_ 9B^U)W [lrYiE/l ~) KA?/"RӟKO.ajzylj~Y+ɻx rӌvfo^D/tz!!," zYZ*{`CrΑHņeWI=|F['{h/q|^K&f@-M/Xe^:I{𺪕w1S/SzOi'fFЪ] u-[GVu# ^&ezY`uY;Gfw^:^WQ+F/,I.uEq_o8n^ee,;HlmAvFT_,K@(.tp-洱R,0,jcRt<(.鋔 0 y姥YFn %Jjo|x Knj"7961:N7Fl .ybNނڧ@`L&5בDK OzX^pӋkyK'r*s=>]*KyO,czut_`72b}*8r@/݋)Z~h瑜(̲b5G̤9"䖑x|@wRt< Z.ϯ*>Iaz{˃3 +ۅd)ش%ˣƆ;E/9!ܴ?O<Ѷ e?KǒBnAɭH>)nR8%qџIn~)aHvb2e- }ܓ;@@/~)~,GT]/> }.UFccǶR[Fzo a4K?ݲ__"GJ铝N5U ⩦/L$nݲiS{sބ\?^".@=r($jH .jvA<4ܲyƁ _jnzhs!!ťӣ>ǃ<>һa澾 ]<(GtQ()\.ӑOK6l#<> Dz@i/!C ˒}yz8\J|֋,p *~GD" a%!'SpV⧇%䖼N{ߪ]{G.SJzۿށ^n%!^< h2E0zd)yZ'GvH.pJjE^rz|smnSF|ȿַڶٍ[  6z&@/`l<#ÑЎ oy[tnbk^E|fyз$;Sr\d5*;*+ΙEēXX_n^Ge/`n߾v7 "6R^"CǮ8235R_PӚ3tЌIjԥ+]5Jɾi.>t|/B3U[ƫf"Hj><{=z+45^XVU[٨^ZSI3&^#4Zif<3 Bݐ{,czi7~?;OV3˳~F/`0A<{JLU"Z=ye? NQc/"3\/C]~do*?j%xߑCMIq w.ꦺ@KaEi+1>>n~}<[`fqb^! B2_m腖&ۤm ,A/".H M 1U"7T)Mا\CÉJF~^Z`<w2:Ȩ1bxs@WۊYިƨh6 feHiKB5;;G zQD,17Pi`8,[@bϿ? Ն[JՁݵS- =1ɛCx9yl SVxUTdJHrT7*Ɣ酚 CQlꯓ؅sx8 |6xl6*"k\/ vJ4ˎv zn6`K;s¢^&]׺$Uh˂,4m|/d]G/EKE[+tsWEsV#Y}9l(R/(Ƃ 묱hKb^疌f^:{Y<_{ÇO RXv-s.c^=N|CFs 9J֌? ]],:M`2X`Txa?ںuw戾eA?a{ߊegK[ECƛ#gq9kqb:OO}k쯓R84n~΢H4llJ%|Ah캗5P_ ;Ћ#"!K[bC|v7UkD/KkA/@;z+7ן{UOHX_9ZVe#B{^_1ܽ^k^i~yt5QI\e@ZF@/c^fJ})|{7W8|/|bHN*=HbFCR {g^xfLEᨥǮf^v7".zR MK8>`N{^$J*9ʇt_3rW E\^zy{3.=rk E`3Izv+%izmD"0״O{TǎϜTa}MvЋП,C^|4k_|-~ЋXAW_N]/ ޚ0J:Z3^iGH'@z]ND_뮹eC~JUK.8Jp.d@/bqI]c{$+e#/{lk}^Ģ?2uU[j/c$IN"J:!ɉ¾%D/4ף3'u/vWhױbs*y>@/BJoӿ%3pi\@/B];3wl|^؞]E$nhl $!H4ЋHDY1[G@s=E]߬y;t#H2nCӀ"b]L/;ESoɺ *st4Ћ0< Evj%D* y4Ћ0D# t#z+_z/ )Z_MD*\/:+BI tAE庻 \/0=@/%=nIKFvz]9^!lG/+8h.AХ^~\eɉh.AgݴPYMŸ]`i9^v\rm#VJ|&O􆦷N@/[)4TV3 ȇ 4 Ћ pH^Y_Qeͦٙ =] ENNgwEE_AX4(j4U0 4+@/bP=AG}ƆnPӒJ(@zAIϴ8qhSGbRvll'U^`UTS 9K7og%5RνƆE;%YuT碯5ed0U) @St>/[| ɪȭKڊF7dS#^e^kt2,{(PO(wɚ*KF,vNdRC6>z\~q9UIvQ!uNίk?6<-ܔɎ&lo:@L.SB9U;tW|ccÙpG #pjh !QE )T.:>Ir_V v(><ݖ|NX ƆnAv;W8}:Ng/K .]0ɦ2#nc%FsD6׊z`|H|FpdCRDv,N&$ɉZ^:'(pJjX8_^9[eH:͌MLr3X 4&yr¾/rzɱL6L=&&Nft0ov.˺G!cXrĎ̶qtn:7m# 襃eiYAٹ^~)EGz(79c"791I25sD&5@P@/-~7)3(wtY#Odc239+]jG>ڪ=>_%Sr` R>SI z9ozb"{gKs_ ыx}V-x"%;oR_2Fu7GA7rzn߫4:znrɎ&Z/:=.^o{ɸopHfr]8n˦҉nzv?t,#tVz!g'](1M4fzMGcّ恾;Z;xKr `ezWW,xKR6 M7BiY> T$9H-xoUzl:52iCd eӮұpAn = >ƉP \7]Q)77<9371͎7EjXs ʀ^:i9|S}N{U6 I~qxhed/͎MeǶ'[ ߷{1t,OIHp\˥z)N9;JjT{$9ݎz6oMfɭ[ Ez}~c3@@/˿{?~.r;eYH<ы省֡͛7n󸼇ڽ[8^:\ȏM# كu8Eȹcxw KW%]/^٭wv{ 8r!a %?wG\/n鉄Ԑi/!"tJˇV8nqJ<\Ȳ =A%{ߵـ^D'BHvyq]YMt}HZ33NGҋpVr4E$:eytꑋ.W\v^Irz @.ù.|;qrx<۱ "w~%9?7KN)-tED^:}t_mۿ;}6N 6c/`lM^ 6z&@/`lCPP |P9K4CkfsD`(,'˗&!bQ_~^85}&b <(Y{M"6?* 'ޝ jw`^R-"6o(Ӌ2E6XWDnTGhT/v^ΤV$v7Ћ$rU={k[EhBIgB Ћ|%\yϣݭD.Ћ|tE/_&gVD@/@Kx7Ed>KݫaE򡘶6  ߋ%U|,I?_z^Vc/BEɆMn?y)^zA?rQM{? IkڱPǠE^f=)зo]y+D+ XܱfV1s'=]x,l7$櫊[}m^+%Ǵ훙W4 VNEhge%z!ȡB&XNt6<߭Fߘ%C|z{@/Bs::aǁ^WH.F43)5MQBCӜkދNƚ p {4E'K o3J͓,ufY|AC/Y`ʠ鲲zHotmG)]*?1uG|rj!„G/Ma^0FۅN3jFjRYg0J-Z*7֥) Eh~B}%e:{җazxOO_,QIȮÚn+ы@$\/YE^}IRϧ8X+W.FC^_ٱә }tԚE/${]Fr}7SXB<|>Z4[79l,zY`X9s b*/d4} Ћ!gK='ޅs^]ܗt!E/?b)`]A/@/@] 䖉^ ԶK ڵ@䓍hpIk$ǔ΋X2QYHӬ9* YU9uY :G-sr)z~k.˳3]u:][vn{)91YBjCec/2z)`:nl.PHV^zәӅP8>دD +]V/wqN/)^PiK6[Ϣ~R81m:3 ?1m}! >1i"EM[r~'mD(-oy9!ߋ =-ȃ<J7;B߅7 |&^%A!GA_Fzu=Zwuwu7G ߋ tD6{=wOȮoV#y؋ tk9|':]U=:3mgB=ߍRœ[ԴҾzIc_Z(k9Ty7^Џ+ok"0:#|Q["KHB+s#|6]E\$ L",h宑ΰߴM@wzi[^5 .@/r٪ L5 2@/b1Su^PE Ћi|&;dX Inxv"_B j "$^UauZm,>N$ķK'@/?P z.E(:PlnIú/g9" Rh0z4BSqӭhX7BPq,YZl 9W^e)w6m\c !!$! Q,3RTپٌrSž\>kl5GMv8U=xϽԜqzqix8޾ݷH }ow+-ӻv Exw)iB@ ?Xkc fIU+}#Qx)oY aQ/ ) ^J>\Ë_ȤJta\c0L(CI}Sə)']r%dF2UqZS3^C^mld~M/\l06B0HtBDceGd3^=̟7BH5O7VB&ɼl\H pv2 sܞM4%I /&u<>]^XV(EQʥà ^7ڗ=GȚza \$,?՛6 &ޡG%P/޿ݍ s\W ̉z]6G[z+P/,pM ŘW755oK'^%^^HA a[倪m'3}> 6E lC;TȜ !H2^o|M1 Ja'B |~QDQH"wuGgѹᑁ-dv{4i[Ј HX r0Rg"\H6 b! aP/]vHحuG- lv$+,vid^Z__F wAGr܎\._,J;Kkc` |/֋DzRXqX(.;CG;2!V/@Gջ'R#ؤD1nk^R`^8Al}fAH6.ӥR17 '$A 8)H/j[nZn@֦Xq83 a \v#|0|m=&VS`cj oejXܜf{(@wr,*BK_#]C/Zh, nٴ16QP/xƑ,F~'C=[TMNNL&JB>;5\0 e3Ňx^~NL~&JooL ti/dz{6lLg;&Ab ( @$"vwnB]!/Eqޅ o;J\=#>pO u?@ yE!PubḠAI,WoEUٚNtwǢ:n@  ^.$.bQJ\ H ̰^lcz(=ʤSnxoa 7z!%Y~/+5GIPֶZC߷,[B^▏5:Q/˼oOzud诲$1Tt(!FY!=ydf뽅n^Vq{=uMKJIH+gO.6P/`RVV\F??jfcohCF782z(3U퍣f(k?͝ג|<&o*_bN[rqUÁss8:K7@UL.\}/fH;g̣ PЮYFzYe{EOh@=E#9@35g7/4յhDҞ]/u;vWsկx%觠J5%kOj Hlit0VhPavMbvP^#j'4s| :^l#ckm#d]@pL!ZJ#Yi-۶ç/=9m=\}/Ϙ]ԹUqem3v"bΌ&4S]سtRbmo-Z u秵:E8\gl' iΛz!(jR2Um^ D5t:5Ʃ^^hyO8,ҋ3R%W:sQ_RP/l#v:5梾ȥ^f ƃw:8uP/L}](}͑K*zy J: VeTwcBĝ^E?;kj2wkSIz9t}F&b׋uȜj^1OA jz؉f^#ۓT/櫳-aЋ:ҵ".6D?zqs7]%%otuڵOУ-J,`^P/l%Lf@ ~lutmߋy^ m ݙ:vU;M]WUFhyυz!1/3G.6]9U/W:j>##Lza2`WP)k3>xޓu18([|R > AlӟSHMWtS9r1IQ~O7ӕ#3j:l'CX4 _]*e|85-u.6}P/L3f޾JDB\e| tY=yX~mf"3"]^-a6vƄ . LA,=|Hem qVTHXz.P/rt,@OB\M5F.P/lIO6Ņ lӜOu ɸzaDz Qv`\ A01LK`` A0: pwiRls00ą^:V;\B2HW k -$>H3}b:FP/Lq̍hB`zA^ KA;|MVٍzA KzCy&P/|^"TG }/LGLVGG C24z54)]&f-93N]{ǝ q#+D!Roz#M:v~lt@0E? >%I /&u<>]^XV(EQʥà ^7ڗ=GȚza \$,?՛6 &ޡG%P/޿ݍ s\W ̉z]6G[z+P/,pM ŘW755oK'^%^^HA a[倪m'3}> 6E lC;TȜ !H2^o|M1 JvŌ ȑE]AJsr#[bi,7<Ӷza /u&dPP.[,,2ؾA0.Nv\[ֺwLl6;ewvJc;F4fx/ pՋE#rx{#XnG./J靥1rmp_9 2=]9^+>x#̂zak^>.rF-Ǥj lL ML+Ãl@]YEPh^b7;bEks-6?70 e=/^8h/^XAugɉDXgGS{㑫&APϋ"/ډԢD-${.l@oφ 9l'"W e!Dn\+y e/ûp bqbX#Kgcd;A8(<N pT1< 62J̓b2[ӉX4@ pA>˅B8U,jC ImLegsCt*Ot lzYF/<>85U99 |gip\{S}[6nE|AXz*' !ʢ a^}" >^xoH moVҳ!~a +|$ zB@m,^Ͼk++؆X+  a Cqn*I>nR%_:5xD!3Sͱ"n!} x|\~\(/pPG~!"n OU|Uw-[=E18E^T7G <_Їj ?ۮza?|?\cw7 JP/8A@ A C^q zA!P/8A@ A^ ΀ zA!>zAA8zAn@  ص C^q zA!P/8ijr,Rўr1t\b4RCOxd3^3z%4^i u+,ܽr&_|ɇ&>ۖA MPWY*w}i,ֶƎ1[ϛ8HQC/ uKv;sreizU_}oud诲$Qm5ȅ6R5 j|ȫ-g$8)3ܢ=Wq#ḙ\dɽ0&}䣩 )VxNK49-SM;P]VWP2zRr=IJJe*ǬKUg-('ً+xu(V]Yx3誙asƷG${yZW!"d9Ϝ~i}C{Kв^ZaU!9 1GъO&Ĝu ]ASKzHVZ\g3Umԋ xLxj#CƑw̿ 0о\}/X7e,uriQߕm"bԎqjG#gBV fSEʖ^? 4N&Ճzaf)bi.thmGB! V/k }]>_ }륕 ṼY_qT wm2'^vlT9?q[^. sd-V2* O]MbU:rg/+e V+ٳbߑi٢,^ҋgCk+fZwb:WL[ kZ_Z}/\;~p<%fB;l9k0۶7Ĵ1Bbƹjϙ#Cˠ\'Og9O'~bڔ%蟼q*M9faJN\ ؼv:ۨ$B[zTzkxb^Z@$sC2qlCs꺗Yjƹb9H/R05Iõ:;prq]d"/ ID$^}tlRUmY@:<)RזH~!za4QeDTtt^(+n'z%l!4_Q%_8)˺^fY]nOP/,f/W/x 0{aGo״FvO!m4߀?|{i y ^V(&+ʓrzA0@z'ʹGSPv+wrȽq͏FV7_`&^o\J\+ <s)~zEQD]/jBny~OB]yM,wR'mE s J9v]/ :1:1(bGӋ62š .1F[0BKx_O4dBRSF N 2zgc ӷh jRn[ `v+^YT;>}+߿Ur7]>n1hf//bvhPƒӯDjcilcYdLTudٚoQ J@$zn U44l};k?k *ʽT/t}F s5C/ߢ_Pk˖L`tpU\鯚%mti'Y[3~xkjz1-5i~ prSe9vd2۳[G6]gHFU{E5 վ_Տ716tk,mz& btۦ(kONfh^Q zlNmz10F(&l Ӽz{?Td|ddA[gT|\S/\Z/Niʵ TjaTUl b pMzaH|~hi_Үۉ~> 6ݹ\7f#\'f'^AXŨf^"޷Md ;_P/l^I33OxK)[ި Jrw|C@ױo xrKvfax +=>A HԵ >l嶀.i0{A:3!߶I>$*7`wC6דŠjip^GC6^ wO禷v06yifm9Nv8f/,sS~K{#B\e"y8a$~1/q{a$@l#i0{aKC2i[H@8>QgVmA!(Oh7+8 0Goo^y,ꅥ0 k,sRV6E8VBu~6:ZVs}Z^|#5'I*oBsZ },^*CQ/>胹XSU;&ZsFy~$GNB>X*:ˈc!c0Wǘ[z(ef/Qژt(b, @0{AAW?/4|<y~q]dP-cE#p$򅋌:xm {){x% ֫4Ys܋zaQ^N$Z|_a(!iy-" m#c^ʜ}IcL[H1f02],Y6BM"BM/4~/J~Z%])fKr#29YboGjeH1Ћ*2^@P/|]b U+%v͏s4@6kK/BVl 5R+4̗ыYmɽGW@ƯN9+:j)T/L$B|2[zA8KNA7鯟Әot011qyqsqz⮻n8qxtwERax˝`0O\Ihardinfo2-hardinfo2-1331e88/tools/LICENSES/BG4_LICENSE_CC0.jpg000066400000000000000000013550071474767047500227700ustar00rootroot00000000000000JFIFHH!   (!%"/#%)*,-,!140+4(+,+  ++++++++++++++++++++++++++++++++++++++++++++++++++ }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?$xS\n^ټc8gaҮR$IꚓkixZv.3&?֋!Y/4]NWUKƋ, K$gKQ.?|EA-Ci\G_?-ƋhZp/KP./ jN op/OQ./ ?U o*ixzE?EA=G^"mP/ ?U o*'[T]ixzJ^"m4\ o>"m4\G??-Ɲ%[+hZpKP./ jE?|CA-Ch%[ur"G[P.[P.V_i݀n.?u C`ۺo!ƋwW?vVhu C`'A[+4]ۺo!Ƌ_E Vh+4]okW?-K jE? jE? jE? jE? j@AmC_h?-K'AmC_hAmC_hAmC_h?-KF/4:j?@ AKh[ƥO4GgR?"1S'$Z5/ [ƥO4냦S/$? ]wZ .AOh]֧O4IkS?$5Sk)ƀMs:? &AKh\ΥO4GgR?#?3SԿ)ƀH j_@ AGh[ƣO4EcQ?"1Sk_)ƀH j?@$Z5 k A}G_hZ/4k_%ƀH5 ?@u`յo/4^Q*no.f+̕<F:_ѠΗz?h}<F:_ѠΗz?h}<F:_ѠΗz?h}<F:_ѠΗz?h}<F:_ѠΗz?h}<F:_ѠΗz?h}<F:_ѠΗz?h}<F:_ѠΗz?h}<F:_ѠΗz?h}<F:_ѠΗz?h}<F:_ѠΗz?h}<F:_ѠΗz?h}<F:_ѠΗz?h}<F:_ѠΗz?h}<F:_ѠΗz?h}<F:_ѠΗz?h}<F:_ѠΗz?h}<F:_ѠΗz?h}<F:_ѠΗz?h}<F:_ѠΗz?h}<F:_ѠΗz?h}<F:_ѠΗz?h}<F:_ѠΗz?h}<F:_ѠΗz?h}<F:_ѠΗz?h}<F:_ѠΗz?h}<F:_ѠΗz?h}<FΗz?h}<F:_ѠΗz?h}<F:_ѠΗz?h}}_M=>ۨX73c+!'Ʀ:j7Ɲ֩A+E Nh'} 4]m.?_ C`mxgј,+n zyЬ{7krO*F{^500Hc 2( ! *ȠF nIgwj32hb@^eNQݽYP  g=ݲéAoA"iϵeS.JҺrGM ( ( ( ( ( (FQA(u*짨8BP[O-8dT%cz  ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ([[y#IHRɠ ˟x 'ƹ 1$|=I+sP@MĖm ***Ҁmn&yY"CL脬` s܊ Dx#~_Y1hio :S[[ =9+X1?{ۥq%G @9e<@Nv@Z|iǴ?@ϡ<.~އq3 !a(V r۷+Q_͏|6 n/VvW9r (̿c?wן}#w1n۷k7v@}@}ϥjI^%b(Xu|orȲA) }2Na_&f_8ٷ[PP3Ҧs.iFicQ.aW@bJztQԞk_ I%o9xX˘cFEInlt$ۃxX YrzRrmG3;B?}|gy֤ ?xQ8]$, zsS@57Sj0d3\x0vdq:?k#s1[Ce4WM/M2GYhBA=Zfյ| w.cWvsØP023u'&APz ( xeyVfV +GBFLZ!ycB̈,0 (V3Y1~&uE2Kwb=({+'HcbP@P@P@P@P@P@P@HlC-CցlN}%P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@A~5)5RF]r{|eP@P@P@P@P@2ND0P4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}$GGF@ ( ( ( ( ( (+[$p845'ԿOE( ( ( (C@ @#I:sR_:JlW3>Y:V ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (E$gإhO2XPrsZ r7R~S~'czZT`nɿY~Fq4A_ڣ"TRz2hW_[2v388e:26RF( J( .m</1 Cцz8Ar @OJ&62&xRcl(Z( (6JЃC!OdЍfY@f c[~,@mݜBK hN$u tPֶ]HRd@V46f-7)ICٹhԣ0)(𝎝֡wl3]$ ES{<*ͥVeC3ZIC wxsh7!O}q ^ٮ^ aZQYrCl}q(sk#K֯D`F7`8 4^q@nh< ib'1>h L3g_!LJP`ќ۷`}P 'r^鋨]j:~g$gK޾2BV86R[/%r]#_;zۡx mBStجo>)wɓB#sNk*rSZbd㽒'dݍNO[qu;E3]p bzku3VZ^k[zw4>Qu#OQR|=qfm.;5ꚷEԥ'Rm?ܫo FLavQoL [2ͅs֪1Ky+左-ݝT7;"}6%\%մ}B;ƳHL 8v$ mq0xubJ[y˹. KPx4讯eGYe1wj[TO`o~|W|e}^ynQ.@Qpr:f>(]}-n]k۶̭?lXY lA@q'psUmZzY'꛶[RyMuܻ%rd᲎yo Tݜt/u7.KydGVߧ+EXi>е MVvIenp99N9kknX=SY1No1l{rq>=FiJ$`( H 6ժ]QWI웲=.[x"-#ʾӍΩoj]$3۵@ItfM>6$YgN~ҟ:Zs4v*DVԴBKjnm-GbM1KWօ65ÿiSÑ--lQE{wq#rT I+EnKkyO~گ![[]'}+AYQ4xGr$]p#9I}?Mzk2cvމ-zjM6uny}av;UN9#_W%u?qIE<$!bHuܰ6sqRzʚѿ.S\|rb%uܷpZ_2=д% 6Tpv+ZiJ:OD"MiR}76}$ٜ~2R)rmyST+-sSLilO+3 $)r;ְ:ZIzWҤR^[.lo mϾ?4ͤ`'_܅$骽C/<35/$W}pLwl Hf+z>vne˧u}lH<'u1k .^DgT ˪)imZZk[nё7͒WM]dYmH)q=S=(wYv]ߣ36m*N,$DpA)_V>ʒ٫,@Ϲ-H\n* ޮ]*ogBjT|VH!I]߶-{[U^PaGZp׷7yrϧLPI|ihxW 7+{2,-+0'ʀ8*B/@jgD:[p yݕ@mF]+G'X-)MZPXսƵd%v* B(Po<(gIkG>ʈ6S?ŻvqtGjrY f6n;s@€ lubt-Ŋ  >ŹP3@{O}jȱ!_RF>/Y^p=m[꧵Q (mbbBdI)<_J@E:k81]Zm,юޝ?AjNtKim$23$(:ol[ꗢ;&%14bz(c@l"ѯx.5ƎdJ|\|#7PxT}\#r$h.!B펣O1Pms8φ=YjkK0xM'Y$hrdHsnې^=(f2VoS@X +[&iuubQSO@F:W)'V^ԕ1vw~Y=|GKqm?Vnq~uwA$j! 0ܯmsYuM_&[m4-.UehmnHH [YI`]/P6T/FrFmvwt%EE.~yⷹHfh6nUʹd{PjҨ{˚_rq0jRջF_jMZêKu0ц89P UJnܩktnķYT}_ztA"N ՕuYKKjH ˰ n7*JvLk=|}~Zx[eK%ȭ@wOZ 'NK+zp'Zĭd\ʶMꍩ[8+\ 0GBx5S^TOfKSVQH܉U2qTWJ)GMk]V3ETFv:ON-Cb ª_deWs5}VIaX忻715QRTvzwJ[E~;~ JeS](Z]kis-GlՉ $qzoUgVIj7} 7~& j (PmI#:3qjTtk$=._C3/&n`̛2p[8 :sW)7)IixZ|N9jXӼlZ@[;[gXvA!phr0aӌ=ⶲ^޶Y)rUU^gŵ֙#,A[FY\6͹UBUj5d/gӖ{?G&j~tt$8#ːB;dVJ ã՚ʣ߳ kw+;xD޽j rv7K$ZnO[$->t'{{ j44R[_}#ш `Avi[O}.Vx 仇VZkYn#(TYvJJғnoWm4ٜayRK ?~OonQoN~sYQғR2ާM\&I% suae!AiϾqk~}_'>7鳤M/q (Ic(|F{ҷv*G;{[{ۛ.02*I-/}ܟĚ41jݻp^UDK:Y-uv~~ZֲKDFY!@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@^5[R<0ʰ<a拥8MKLsk(cݛ+\(zt;]?TV2((#Gx |S<=h=eyeh3!1UKKiIFcƒ@ZЙKvQ@P|(x3[{oA<>T :{חSTU>aJzH]넿@y>ZڄfPʆLH9j:{;Q4V tiztK3Ztb'w(^֪)YCM&h<#*[ TQ`ݏZ'-M-8ä[PÅ B~E݆$7n5͡q9xFϾ z:7χ vN[DⴅzzyGcO"g=G@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Co$QHz:}P@P@P@P@֍Xp P@P@FmS;Ja;G\ֲ>gdqb4pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H\ ?=pOX{H{< K#DD$<sIҚզ>x5 G I!~(sX)?€=w1e}q "H5#yh@(@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Pǃn_^ V=ÈAcڼSFVSGxiWN?5#y>'.{jig?v5ILv:4oeҍUv[m#}qa8PsW,ΒՄw:sӚpyk>YG_\#]WO"I0<ɥm3I gZ0Wg4)OC//EevfV—?O"CH7=lӋ[hdkg,Pz@8UnșєU" B ( (:xZT\i V|*}'jW7fk RG __?I}r}ZG=k~[kRLYT?,V숝)A]ndP@P@Pko徶\=@W=LL ͡FRW6Kt'Qve}ZA __?>>#u Iq2x[r1VԫFs(nsuP@P@DiQP2Ig-լsI&l3M+n_#Wm—?O"!ُ_@/4Ga,}r}ZGh- 0qMM]..Ϋ$( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (C4Þ"tWã [)#򬽴;?' ˰5O5Cg.׉?\ֿ_&m=_iƟnn5#Q ں('܌SU"ݓ覌dVLA@P@lx;FыY%]?zMj:uBe׊zDpX[-P@l}2h7JuMBׯMzt7u !dҦHK iCe7 +WF'GQKm7*(y=6V6sZYEqq) Ñ+ZSkN' _iA[[iUi) \50:^T8/⏲9XtnF6.k/f罕$n? -KzywH5 jG`s*\Mr4\u]%Z6ΪMn7 wW~^{[\ l5޴UfК0r$ϬߝJ؞~wGӾZfk7' XS)b !4d쌯 LOo vCGJ G]JJqܘR^ŚZ BTr({y SMQN̫#Y;*=!~xwLV+s&3?wR@k9Nn3c*[~X>˻ϛl%gF3k 8^6A[R5B6w<ѣvGRHҽ#>am_Q|".SbqcsLjsz4Oi~,mk_C%_1-UjJqnOE :viHlӶHz7rӫ^#i”wG?#Y;*'GǏCߛ_G\V}xgS;]\XSo!y\椓+TmRV6Xh"1-# 'n;RukJ_P䦠$eo'O:| + ,[][̻KgnCONj]ZԚ)S4N?A&4e(-8pzEojikw^ld@JIpdZ,D2vCu>K;w{*rЊp"k?$ٞ{(V99~>+T_>2Au~ zO^yCGe}unkJ ..멾"MIYc AmC_kñ.ǃuZ_q˪_H2|O>-H ㉝Y) *Z"p+ }C#6G?CĽNJOIuϨ4OoGĦcjKhfU*>''vAA>5xFOcD+8v򠑖 R˕tvkKѥ*]:Džm+R{a*$ nTwy}VV\{\kw.k\i1\[m4/9E9ԌO&1rI~vnrl/Q54LԶa.\:cVEmNw_4Xh"C7tkVnyX!`~nkҼ)JZJ(TWJJ}妷<~#Kk`̳1+2j@8\Tjuz=_eū{KQ& zz~g7x3+8='Ku,:72yPIu2I&@ئ$0)bUS]CX3#AW1x'+[`#]J=*'RHS0CZ,} FX`VgZ}œ H~zfo'|cʹv8GИZiR Vnoc*R4m&*:x_燎y'#ЎƱIT4G FƺH7JӮaQ;F;8WILu)hVOkVT@A Pg&_ߕ]7s\K'G__:Wj9wz.LjZ(cW;C @-FR%gvw7M9# _]ok1?3oBG)v6/MmsL# n@*085YutՍ['K~x~\WO&iq)5d⯫)JMi P፼Hk,UH= 2Z=kWldFrn…^Fwwփ%+|4Ybפ3'%  >2HJx_ 񳋮k?9F-gWt%w7oz\/b~$yUvׂs?!Zί/BK_V<] LJ E_D>#kÚީk6d<0_zQ;nDahiEei9`7V$̚JE4w,yRPy@\JYPk\YNA?5S~xTEqhd?$ʍ5UߩMRm\[XHNI r&0E VōIe¡e9&HbsN=)[Z_uܞLKȲ˒#SJU.16@.'~9:n߇F{}̎EHYMox0llMo+~7,:3 ->W/9zRzVn]o?3GӦޭnB]I=Wi=Nt.B2lg1ۭJJUv9Ǚ;_I%C3WkWMxkB) p89V]NLcfߟbi[M/I >{Mgk~ txD䏴y=v}3 俧P濟xrOڇ|p"o#qƗ?o+ [ i 5X9pu gr%5'+F.)YB~*5Mp1S4#,t6t֔5DxvZk|/RK4y?<[j_mWV.>@ӚDe9S>mVT8=u|{C촉tx$H.IdrH'YBTyrZvVUR{S{'ׯ[4tfHg%V7 c5?W\F"}]֮)wY]vmJ-ZDu!  :[~~Rsε)ɸ_taF1QQm~4kzSisZOojx%0OyZxySuF$^¯ȒyG!c1$J-,^\V6vpd@ ?(DU ܔ|ڵҞ̺E)7*l:K{;߭Kw}eAjHn Do=d@`HR edswcNIWlRHBa$n/7&pwAKڟĽOn!s][OHZhpj'J(..HTSJ)'i/]5R}gĺ=[Ks/bqt'hEЂ#>JѴCDRܡX9""ԣ5QE8>ߕS|Obs\<7s|O`r}G^5 '[Y2,Kz5g5*B1j&_ÿGkLo|뇘4Jץ)TRKBiT`<`{Wz͢WЁ0h6%]?­KP's$O^X%E~ ?kúOY\YJ; Dt}+YsgeԺءGWjdx'rPR5:*Մ1?|UClUu,_o kJg9E:cG?S~W?M+?G?S~W?MVW"9o @oep:TfsSX|7vxXo;4<('1* {^Q4 U#4k??%ƺ;s˹j"O6݆Fy`=k -9B-Ky5c|O⏇^&5EX 1u8EjtWm9Җ7sַV#?c!4c a/+Z.xgS6gQ]iWfnXJdžCQJUɭ5.u"餏+Ø(]!Eh{VRqQJi#/ZƍucaZ0.^jMX' ]3Z[F5483cx3W&|Oo W']ߎ EkvKB{7^^4Ҵm'P5tf97(Vz)5(Fq|#+&~wG~Zu7 T S(&^!Tb/μywSWƏg9?O ^=; p?%{hp샞]kToòywSWƏg9?O ^=; p?%{hp샞]Ȯ5ۘw73FIYM5t')6exْE!4ڸ<Ρ$oHr&hԱ}e7Z}4/^{:h_#T{79o?Bپaλ~KU!ӭٗ84>\Mj$P@P@C?bu~ zO^j?xX?- A4^5`zuJKOaFJ8 sۭo`# '[i%V>ԴvNLlq\c8\YV_:j<º_c6-CLZoRfp?ŁEi8yv] *| WRclVЛxüjnR u5aF%VsZ\XԟɯB簾\Ot.o'h 74]˛yI|.<MA`R&ys)?EX<生ɢ,\Ot.o'h 74]˛yI|.<MA`R&ys)?EX<生ɢ,\Ot.o'h 74]˛yI|.<MA`R&ys)?EX<生ɢ,\Ot.o'h 74]˛yI|.<MA`R&ys)?EX<生ɢ,\Ot.o'h 74]˛yI|.<MA`R&ys)?EX<生ɢ,\Ot.o'h 74]˛yI|.<MA`R&ys)?EX<生ɢ,\Ot.o'h 74]˛yI|.<MA`R&ys)?EX<生ɢ,\Ot.o'h 74]˛yI|.<MA`R&ys)?EX<生ɢ,\Ot.o'h 74]˛yI|.<MA`R&ys)?EX<生ɢ,\Ot.o'h 74]˛yI|.<MA`R&ys)?EX<生ɢ,\Ot.o'h 74]˛yI|.<MA`R&ys)?EX<生ɢ,\Ot.o'h 74]˛yI|.<MA`R&ys)?EX<生ɢ,\Ot.o'h 74]˛yI|.<MA`R&ys)?EX<生ɢ,\Ot.o'h 74]˛yI|.<MA`R&ys)?EX<生ɢ,\Ot.o'h 74]˛yI|.<MA`R&ys)?EX<生ɢ,\Ot.o'h 74]˛yI|.<MA`R&ys)?EX<生ɢ,\Ot.o'h 74]˛yI|.<MA`R&ys)?EX<生ɢ,\Ot.o'h 74]˛yI|.<MA`R&ys)?EX<生ɢ,\Ot.o'h 74]˛yI|.<MA`R&ys)?EX<生ɢ,\Ot.o'h 74]˛yI|.<MA`R&ys)?EX<生ɢ,\Ot.o'h 74]˛yI|.<MA`R&ys)?EX<生ɢ,\Ot.o'h 74]˛yI|.<MA`R&ys)?EX<生ɢ,\Ot.o'h 74]˛yI|.<MA`R&ys)?EX<生ɢ,\Ot.o'h 74]˛yI|.<MA`R&ys)?EX<生ɢ,\Ot.o'h 74]˛yI|.<MA`R&ys)?EX<生ɢ,\Ot.o'h 74]˛yI|.<MA`R&ys?EX<猟ɢ,TOt*_'h /4]ʗx|.?u??ޟpS:ƏoO{)O}OG=>_}SS}e>ϩh`k4{z}O`=>?u??ޟpS:ƏoO{)O}OG=>_}6[~@ATjF[2eʪZj7V,̉PH |px%k6x@'@Z zc??#-Z z^kߏ@xc??oe WG~CǷ5#]QNMziH!T896Üm}Z*ɤ'k&KFa:BrA2>G~zWkn*Z/Nv_|?H̖$A.Is9`җ!߭_3_zRnVNH}-jU'<1^YioOB%mm[z_ k.WdG\IJ*Hu)rqdD=+q{o )$#t@N2~һ K}nI㽆FvJr2 Sr}NQZwZ~O~7 Nkx_ 0zpOJҭ^XISNV0{{NWImd;eNIl՞?B[[$kc9"0ܠzӥ yZVT҃WO`tR9n`Iz4\[;w:'O xN cAXٚ+%P#1J4QJ^׷ͦM-_?GėVw_Z\ TU>SQյD:_eO)NIׯ,m Cs~TѨfTʻ/yUP@)5-N,jOA^dN\C[Yn/lm?弞TrFIp.AcMԩgj[_~ [⹞ wyLaWi댂FiƬ[g{>_R\%Oױ{U:IF[ݮl8^±#Nintèv]ِMwd+OvʹvIƶ|Igo%dž!&m$]`bO <sgxQMNdoo_# (Ƥl+ 7۝cXԨ$҂}Am;ՎX!s+kmw)ee vMԶ_NMWK^yn>w9D7w4x&n7k杘w5 me{4K{_ҜFDlRq]x.OE#wz84{dM=_~ĪMOM%]{z%s^YX)6!av%IUbʻ_%7ZPYxz 6 SP&ڻn?c׏TU$kn.h4+Z켋cn2$7:ƭnDKKU*jsqzٿeGi>oN8iV= ĕl[JOvBn~vJTV4Mac΁eB9da~4f䚖َj6zԀ$A$g }j$Mœ&ok63CD1R/1;Œ-7 M߈?X<7-"%»lއ +9ɗ*MuV{~sFk{qgooQ3!vr b#&y[C/5Eo-,t/x[9GPBry 4$̏MTjFwom[*e%_k+jݿqU(+KOe߂oGOow=L8*?jSrKY(goo뾅&唶WJ\pT6@'#5Zu"Tmzze˟y˻+xagC \06nA Z6e*MݮXb N]F#sob.;O˼2<GjgY(yBWz87c+>`n,̬W0$\ \WR_y^\oK (=?5 uWa{s\؊$cZS}ȼy ;ַ/:,p ~Um4tw.oe[UwFxfEXPB$tϛ8G_9ݣvy1.< Cvuf Z@ 8(.5YY+7  fq=Kω~f~#ӠM\GI'٣tPh(4}?>EfG@٣tPh(4hEq"XJ|ta/omCE>?+g;kW)}0j\[j1$Sb $gG)j.{4wBNUѮ׷s"Y --t]&ٮ.KD3ԗpAFU$I-黲N{)4ڻQm/+ |9cF.dIS3"Y!@m@pNֹjƜ{{nw6kBS6p{Nµׇ`xB}9Qq%a.Xmps *NJԭޝKӌTi_I],ֺWO \i ^蚣]B읅$>訫VNJoDm:}{(nSWt/TZ7~C|ШKMGB?տ4,h5Gi̿^U?zY!@t0ˇÑ??erxT|x6Mͽg[;pxJRqKؿhے{9^ıO>ieműz~JI=*3n// oRpYa.r~S.i9>Q⢗D~*ιST$?*I3JT 1$TR|̡V@P@t۟j6[7s ?jP0mbM;SaAl}$ⱅ'}O5?kn<[|\%֞ZU @Ц6H#JЌo7W߁bVZ'=(,@'9S<:[ջG}§8Ӕ9Wޞbj9{Bd֭0]OȬp8 Qrkd^qoR|Ek5o9otar iy*%v[[rY_Wuʗ}>Nt˻|XOkhEF6B5)6D$ʊlH = Tպ>9'|v2ѸXnFݾZjO';Zf΢U_񽵬p[ىzc2FOxIK7%oO#Zi+55i2rFz0>n%h˿J7LZ|nS[itQ7Ȧ]g&08(Ѵ&h3nJKߧc'ZZs} ̌(|198;GT[V%nͭ k.lиt>iؙǙX5>{4RĞq%"| -Qz'v5D֭[M>}In0i;왲po (SU?/DWwrտ_bt4wVCcG-Ⱦyˬ \[6ije#l[6j-`\@#?!vsC}PS%_vv2 ( xF3] ;L.ݸPԻSK񹣤x,خ4q>#i(`R<҉9'fտWYd'[ ګM/mKvzZrܬ%&o_{rkVK0Ei DqitO̦<_e=49kog[B0ߏ ^qQ6&e :8'JSW~q1%壿+S0 :|.?^v6?攗4.ߍƝvmY{cevra$9\o֡R.R-5A3+.$8ɝRr֥Ri+=mkm6g+)kF8$Q uK9ZZP*hv8T_,"9]-'q+Jp=:\n_֬Z=?k]@ΖצXe=Qm /Ԛ^Wt߽}bRKi_em䳓Ia=0y+u󩉉Vcss}^6[M߷1yw ow4sZFU Ap* >?a}UZ}K>0vEKBϧ\pI.݌HLMhi7~ =?}ٴ74Mxw ,O5vh>Ә76Ju3tm߯E?˧GE*l79tXI8:0߶ =Nc&7?W2'?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9C{?s|̃?'7?9F?,s KN`Oƕ۰m ƍ??Ff=5x_tgEnh*27x?A{GB?տ,,h3ߐ_g9k6;?5t׸ lǥ>Qs !G s؇br0}zQ!G s؇br0}zQ!G s؇br0}zQ!G s؇br0}zQ!G s؇br0}zQ!G s؇br0}zQ!G s؇br0}zQ!G s؇br0}zQ!G s؇br0}zQ!G s؇br0}zQ!G s؇br0}zQ!G s؇br0}zQ!G s؇br0}zQ!G s؇br0}zQ!G s؇br0}zQ!G s؇br0}zQ!G s؇br0}zQ!G s؇br0}zQ!G s؇br0}zQ!G s؇br0}zQ!G s؇br0}zQ!G s؇br0}zQ!G s؇br0}zQ!G s؇br0}zQ!G s؇br0}zQ!G s؇br0}zQ!G s؇br0}zQ!G s؇br0}zQ!G s؇br0}zQ!G s؇br0}zQ!G s؇br0}zQ!G s؇br0}zQ!G s؇br0}zQ!G s؇br0}zQ!G s؇br0}zQ!G s؇br0}zQ!G s؇br0}zQ!G s؇br0}zQ!G s؇br0}zQ!G s؇br0}zQ!G s؇br0}zQ!G s؇br0}zQ!G s؇br0}zQ!G s؇br0}zQ!G s؇br0}zQ!G s؇br0}zQ!G s؇br0}zQ!G s؇br0}zQ!G s؇br0}zQ!G s؇br0}zQ!G s؇br0}zQ!G s؇br0}zQ!G s؇br0}zQ!G s؇br0}zQ!G s؇br0}zQ!G s؇(r1kp2N:_{! גzB@;f~jwcgfڟ*PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPσTZί/BKGB?տ&>tq3W*՜NJMt[Xw#)hvڇam$RX7SN?k^˽շC`l!fuU`rH]קBNQm>]|m_Z_[ٛXZy8KXA \Z 9tJ+NIۭjO滌׎obyy!)*24{-&ݹwϰ{9i :7Mo%JZ 2YXt$xkwp)ͷa^ׯ2cu G}δ m1FfnCab [MHm*.F1N17!n+ؘx;^:Vk`ZYa7 m.$r9qRA)6˿K_tx|[ut*[+w1CI*8^"\]R ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ݡ1k: /S۵\VfS,hkoUrK<˹j{}OkB (G_3;27m]_b*s>O_kG]oIuoey,1R*84w;htedrzT$l,QGj6^kwNȋH<nxOZRTo;]X{XԾYzSć>]1|8f;37c~r^(Tu%Y-TK˲F'j_U.k={[Kw۶nhZ-I-k'|eY AlsҌKu.x}-t> ۛKqG&%\e`NX`+Bnз_fBua4 &4ޝ,^m.Ì:iI{K#2G2>W%FqI5f;|P_;/+\P"Z[jU%鰴e|][[}Z2?W{}[ʗ*䖊ђi.i~_Չa]i:@y"nmf8Tyn):Vr_Vtv~Mt,aymmȅpYX>^C)so8`^tmik˷pÍxr AWot'" %PvOV R_'"'QΥZV wfU4t}:\ ak0GL%1.3n٭d):>Uke׵E|4҃GmmWmZOd*WLi?r# @plUPSTҞY[P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@lx;FыY%]?zݨB5➑c@/c{@7W$?29SBwbCJ@={o-hIyO1AwFGփ[u?o*ίCЍygW! FʼGs#^o9C7Q?_?!W(ux/?o{:*ίCЍygW! FʼGs#^o9C7Q?_?!W(ux/?o{:*ίCЍygW! FʼGs#^o9C7Q?_?!W(ux/?o{:*ίCЍygW! FʼGs#^o9C7Q?_?!W(ux/?o{:*ίCЍygW! FʼGs#^o9C7Q?_?!W(ux/?o{:*ίCЍygW! FʼGs#^o9C7Q?_?!W(ux/?o{:*ίCЍygW! FʼGs#^o9C7Q?_?!W(ux/?o{:*ίCЍygW! FʼGs#^o9C7Q?_?!W(ux/?o{:*ίCЍygW! FʼGs#^o9C7Q?_?!W(ux/?o{:*ίCЍygW! FʼGs#^o9C7Q?_?!W(ux/?o{:*ίCЍygW! FʼGs#^o9C7Q?_?!W(ux/?o{:*ίCЍygW! FʼGs#^o9C7Q?_?!W(ux/?o{:*ίCЍygW! FʼGs#^o9C7Q?_?!W(ux/?o{:*ίCЍygW! FʼGs#^o9C7Q?_?!W(ux/?o{:*ίCЍygW! FʼGs#^o9C7Q?_?!W(ux/?o{:*ίCЍygW! FʼGs#^o9C7Q?_?!W(ux/?o{:*ίCЍygW! FʼGs#^o9C7Q?_?!W(ux/?o{:*ίCЍygW! FʼGs#^o9C7Q?_?!W(ux/?o{:*ίCЍygW! FʼGs#^o9C7Q?_?!W(ux/?o{:*ίCЍygW! FʼGs#^o9C7Q?_?!W(ux/?o{:*ίCЍygW! FʼGs#^o9C7Q?_?!W(ux/?o{:*ίCЍygW! FʼGs#^o9C7Q?_?!W(ux/?o{:*ίCЍygW! FʼGs#^o9C7Q?_?!W(ux/?o{:*ίCЍygW! FʼGs#^o9C7Q?_?!W(ux/?o{:*ίCЍygW! FʼGs#^o9C7Q?_?!W(ux/?o{:*ίCЍygW! FʼGs#^o9C7Q?_?!W(ux/?o{:*ίCЍygW! FʼGs#^o9C7Q?_?!W(ux/?o{:S~ZЀ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( wAKк=Quok="Ɓ!h?_ ,-_r!kfΥv3^/>S~jЀ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( wAKк=Quok="Ɓ!h?_ <)纗:{4y>'V ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ݡ1k: /S۵\VfS,hb vz1ܑn<~F_沄bo̯hfO rN#xco6GlӔoVW̗O'sZJɴQ=quUPXi,mpRLbDnp*v;£v^F\h}Wg[u ‹n\p(E7 .Qp ‹n\p(E7 .Qp ‹n\p(E7 .\@a@ Qp ‹n\p(E7 .Qp ‹n\p(E7 .Qp ‹n\p(E7 .Qp ‹n\p( PHp&E7 .Qp ‹n\p(E7 .Qp ‹n\p(E7 .Qp ‹n\p(E7 .Qp ‹n\ (r(7 .n\p(E7 .Qp ‹n\p(E7 .Qp ‹n\p(E7 .Qp ‹n\p(E]‹&E7 .Qp ‹n\p(E7 .Qp ‹n\p(E7 .Qp ‹n\p(E7 .Qp ‹n\( 4S ( ( (6<#v_Ŭ.ĽOn!s][OHZhγLGto^?zt'AV@P@HtnK1["RQIǙYjSٮ/[h-X`X$U|r2^o|՟zynNF{bYٚ3}*c*4ljW0 4vVNyh䊶4}IZTté'֓Vg}]wB+}SP!of_+wۃ{7u)4[MKYG(ZVUsq%M1a(PEsK rFBGf$؎Dx,H 1򡦝@P@P@P@P@P@P@P@WP{{Y6DBb}jy>$յ.D?n9,œ{esrU*%5 ̈~)bI!gzQ TԧtM:~di~}K3Xg3];7KǟN2GTsttJ2RR OKi5-<GH㱬tՃشr)( rӵԂh}7wvG8횟+%˱^_.¿=]YIw7O)}aY]}Tz K>?o}]wPNlzoƟ`*xwuD,@K?[}kDllS.u'k:~Ƃc'I,X0*!QKwbGs]*्SBҨaEHn=I>qSK)J_>vopq:nkeQ{T lF5\ $Y+8Il[dYR`:SKwo:ao,^Xx#nT&PTuMjOrYq֥VhVU}1Soݖyj+Z%ܲ c#ƬBL=Hٮ>Uz㫉:qYL~3]o'/_ph oP1#-?KKI+1__e<߀M&>>#dɘ-{dv3r4[`T'߇>!q/Ÿ+G$T "71-֪TqbK+cWqbH{լ+}JYoCsPGP; ΥN3~m+v'V)6d}爚Ԁ ?lJRM Yj_kgKFB>a|<"x٘0X-[YuAdVe hK\ۮVd%TΫSp\,Q>V,G?>qDzq4}m㏎?b[}Oe~>qG%#<7ZuA1?>BukgJMgszE*5)򲿈VtԷn61{T9ZçG^G'nT7رk֬~}]w%70[I M @^G|vi}q##'`pzzcW]ƷLLJ>qgđ>l9YN9Qj>q6iCn 2ƴ/<2YcHs;~igZr)+ C)|cu~Q[/o42YZ*g\@J婜o"Ү`vV$Ob=+?~? @&x {S}Ş.:KJĜd;+XW|UmK/~y:iۓU#%CO8O1OtaKc7t)`h^՜qK4R,3p8= zg_cS oq? O1yc7"pۗU]2FG'נ=?UXA#F~?ƛ͚F#KuH_3qۑ8ӊ7D*99BeǿZ_!uKHH1 89|ih?Ep*.|RO r29thw`B>U d%Fއ{.gs6Vi8܏>[;tݹ/s|*]R[ 58gN_ceP)$ʣ,'ƺdneus,F|Óm ֋H/gyAT߷#r3c5I4hh&И\ᘒONVq~\"T\a痐&q9}+j#{ >wcoOsq7"Bq ?cKo}]w#W]˫X$ l,8ʰ;{>ϏdeZut~9Xo5o2Rq ?US1_Z}2o5Q~ 2ie0`ͲܲԾ?/>+U_">w)}m5 i.#QN]I_l1O${2 }e$O7?d_Y}*$m>gZML6o3*% 4[K.o;N9>*7si}i4Tv|f6'Y}|>026#5&Qi^Ť$ dGU{wLrD{vOT}ڧg|C*1@I}Ttm2=|Kĵ HA.j>4B:}Ch'F\7cKoYxIm:o7;rqQݥa<=ua=]8+l0it)&RG9z}e5M\_J{s]?Ծ R#{9ޛ=Mb[M7:Ԑ7o8 n:rjL-Z/Ҭ7%b9j>|)Y l2w~87RK3XON>ʇkkxe86ҧOЩ:o@V !G֟aA se_}i]xS?G` JF~o[}qfAo[}uܷcɯ-H,BRi~`A3zi}q]?4ጟ(/`>2$T2pTMOoz[}ul>5CgA9ul4GI4򮄆V^)}q`H?#W]m>p_HX<\J>rh|l $m6֍e@'{u\}iW)v3(%s:f)ϙ&sN6v5TV L ( ( (6<#v_Ŭ.ĽOn!s][OHZhsLG_to^?zt'AV@P@~ O|&|c~h)Z;8s#Н֪NzkvqVoO]]v&ZfӌGS۟mKW~ӡ:UǙ}ܢ'p"=*?}E_nIl.n5=RY+g Rl鎕1[*֚Kk_JzwJH.L1Fw16JI5uWi7-eXO{#)'kr3CN rKc:7i:E{5גUm(H*!$g7m%xirO3[<&UeaxoJ)Ig:F-u!&NN{KB|g=-zj-J\Zӭ7G<L[zVVו^9ܜEkk--+|ۘ7 … 5)vk*b_ykfikڶop[HjTb-rέK?iI9PfIqUip2*o_dx-3[$AӺ@P@P@P@P@P@P@PH oM&ȅm'w?n~E)/3W${aS_Mŭ=ӂe,[lsqJ<5* 粹[4嶣06!FT[g~8=+je5mM+bxQΡYUl¼%.tzO5%gm0Nsu #@8.H=O|S;PUYAGZ);Xkrծ Zӥ+6EFkpWJf^;/(+bH3t&ڞF`ǝz'<gR) ecvƬc.I=7Kce[Vr7Q >cqRYxJxd}_G}[+ܲ.'^VX<5OJWSVZ})0FzץRRr+IF{-$]# t/48cB&I)#ũZՒ1k{m ӏӵcO #*Ht&xԠY#{]t(S9aC郞qNV\]dUۃqַI#kNE'Rbb g zVnr*Hoɐ9]7|@(3C2I;1dR>JH3L [h>^ Ǟ$ sb]cðe>L^S7PWҞZٕ l5 L.eGaqp[֭mf:[pO9>Ҳ^t'ҽD$ONy8-E^t,jxA=9!y/ɍ O@yǰ=yǵ_=г!΂2n#N0{ӳdil`vPm"6 2y{jTao%k|^E'9u5EK6o vWos2EmDXvײDd d ぎ^2d+ŧDDep0@ 7:"2,Aw֕7NWw'*r2z)Ͻ_D"1 )T3fŴB xrIj.y\pLGLE*2qӧQ0v2lYn r2?usXwM.lhM8.n w5qqڽ޲\5@.hݏ`LVVFVE11 b\9~L]o,[FAj?qz)'q"9h27@8<ЊGcL&],9=x4EMClj7;n(ރ{U%PgX {f!V'2iW)24E!NNW8ұI绒VT_1 2sCEjʤ_V5 UG5G2lJg#&ɒᶆ$p83x$#9p,|PÜ~"qʑ<9!{3 …U^zueE,(RC})\]KJ@iJir[mҭ3;+Asclpu)d'9Qխ 2'L2%H9"gW,.!GڡPU] H;`)6y"1"֪;^ǤAҦ2 ]{B0; ~Ɗl%E4h}ijn001՜Q>gF28=q1khgl= M$b!{$dZ,l^Mim =O3!דwbDc'i1ދmMkhOcyR*(䚥^gHKXOD MJU@ r Δʂܼڥw>Gh2I4aW,̚ūH0pTlh$mbM_OD/UR@rH^}1ު-*|?pWoU&cuK[]Bky4'T(AӦ.ՍW֍mIg'A$P`9=*URio_+~)]{LO흶}W%qSok[ =n+{IGޤnC2H''DZef/`t^aD9L{cS-:rsz]/-coak1Ux#BIJ^k98A[g3#Eլ|DMՄ#c{ێeM =፤Ж[O%/- Rk^u.-}#ӗ$ݿ͒W-Lju[oFCI`ySvfIiqk/ HᄦGo^S-nRmmum QIekeU{q HUdZ×61ۭdd'fe䗺wo1onf؋OfB-O"#XG8szWSGS&ؓXhWQ2Ԯ&8T_E-rIB0zEE(gba&oHdV#֌UЮoYXtiTN{UKerTy U&qlP/=¶<);ڜ7GjBk*=,=4̿ )p? W =X8t,OnkHEqcџz p2Ik-P4 XsZ5Sw7JǠv"8Sp920q8"[2sUhS52YnUr$|q^b=RU?^MGz~o2Z#U Ϗ &zߺVA$ 8)$*B X*1U>Q15V=zAϭ=L*0Q.]"@ߵotEMji@U@ánЬ@l*#E4e @'޺c|2Z7M2@̪_ ߜVI4Iv,YX+o,ۻ` Rg?ZIRNFH"&pI(RE,*998玵*qDsEbC;e'Xj14QIEإҼ>8S]LY 6rbX<ɻDop|o}u#[k FC>z^*1?tv9D_:hS" JsR`H#0yQzߎ})bsiRKʦKt_+ǜsی4_[\G>=gcҥioDrZpH2;z*jC#i=EZAic5P2ߙ9`qpu,JwX,O<{(<#F&`9b35뾆zG,F0N΋XtG'OeE%I̬r< ׅ"6C= :u8&ВiKJ0NW$d Tܸ"Tl'#?z\c-eu-<CJTB4.e^I%#^\8$zQqq5H.o {5%KhE g?yqku]3#٥DЕt8^2ZadF(I /c@ǥuct1ˁ@хHH|Ʊ b,r23_zi;2ػ @qsuŸ!$~:WVW. |m h?Zԭcnm4wgP3އEDpH_-̱3.Wҋks"TPAojtX%^i7raIm٤+ZQo`/l gh> ?ȤaW\K\:$`Ijݏ6;:e5 ILk)ar{T.42Ckw(ܺ݊m}I,̌VEnԜKWEfGtt2xXΚZtz"#IʑghUIJ9%Ɯ:uB[.@2n1 Jc-NJQ}lֽr5Nf|CUT'`뜌9-le:&tfvLd9'=kg #V9k6U\,zbM3L12O`) ek%v s ~ 1Gb> ZYH"n+g)X[u8#9EUL!I zXhr66XL~X9`r%04@8=@;6@FI1 L'@FI@!H4Q#*>H#9IsR3o O}( y{Na .,ΎE%|̓Фn2)nH>N "]pqH _/ ϥ#DQa_:0V)U$0eJcCB-K:1U`q@ ! (#9@w>أLV8mA]Ĝ O4Ycc89Bܓ4 $t@, 3qV3ޤvW˚ގet* ɼl.c rV'Eѿ{v9\*$L\6q)l|zp˙_[V;Mk+pB^jixxqNFv sU+zDž46m4EeWc+ݝGiA%8wCpdz<⧙Ek&H~"W%nsfu `pxU829yainXLTl+O:ux{O\,qor1a#yq?Xw #u[mqH#oQ^ORZ1^Gh6Ҿ#獴!$-K{ O&堶)_lEZɽ yqu+]ݕ y$1t^r/-,N( ׾WކOr%s44C1$zoE`:mO|;}} 0E*!i%TrA595RN4m$W\^VN{vZB<6]_\R2wG $}:p~:g(}N]M$gɌ QUrޙ6ISb8#Bf~ε6df)v #O[`N7r.\^hrY)=3V0'SZjZ&۟)^b@^4FΌTCY7;3Yϯ5=#B$]>+$A./󤖧Detwc2LAx]e9t\0Orb[Hmݕ#`~uU*pS[Q/teȧ]\)m7 1Y_n5*>)kv,t9yDkyC-X(T.z_XJ75oLbU j# uIq7frEʦE,y\p&hԭ"  㯵EiM1!`ېOEJ>9?P [\s1c9R0~&#"n}=zRB3+^2F {Uȋ.݇½N@}ryQh)Fޑ`; W+1PHk]v O^Oj &ʅz8[eg&%F g½556󧘋)#R}>ZH;\5 @Lm%,c'4FR[6q[L $iua=F`:P+}fgkVREO<Z̖C@Z]jYDؔgҀ:m'С8v}]T@P@P@P@C?bu~ zO^j?xX?- A4晦#: ?R  ( ( ( ( ( ( ( ( ( ( ( @ax@X?6ڼ'5*< Bz݅TH=}Qp" 3R$ҙX:*Rz Pв1rm@#dAhŐHy!rqUl4Re[cOZtZgԵqj9E{*Mu2X-~9>Z xJ/F2&ui\ -Q8Y4!$=+Oenr5Ԏ䉖-^xh33Vʷpw \Z\CDx pO'ּMrrF̤m2E'J}d\!`?1Y5.-($c*;r1KXMlmugŨ<k Y`[ʸ+M6momhI,qW<;rH|3-⵻nBI`⹪QЫЊ(Y0A޹_{Qx60^yrP \'r?ƇQA|?+k,017g ^ .{-2BЭoݓ)8%}ПҦq0֊|6b2I@G?[=3+ƌYq Hk'~d*c֮9V}^i($cYI\ޅ{JkۢAoVMJޅmUwD0$ⲑGS 7fgPIVLHlqy|F;T\ѴI<5 !'6H2@yj[6m$:4f-\~yv;88m۵IFgA^Su.k{^L+j׿;ڴ ;ҎEmjm WbAI|q~ȫs=g>T Gшm- ԟ^MtSHj֝Y2KM+L5RToc(.sD-sL|Qyooizٍ@T;bV;ym}݀q W >>l >Pu[Ѝ!CZؠRrp[&m첧P)1\v``˜##sZ# Ӵ$鎵Rvgk\Dʳ`Һ`.:.%`O(z{sZ*:oZiB?5trSr者h7/vW:%|H72',&n範4s)V e ʤhLˑGLT,"ydg\ I r;UFb)p3?ԙ;:1mj]ٷ uW'l#u;QzY_`󃎇"ѓ}bYa<4owqcȣL(^ @=(i6dI#_|w=N1,3mbwYtFT(;?T8qwRI4 )l^P:DiQdc*Yp֛rQՋ>?Wkx!Cln7 0}yYB*v4>W+׽z{ٲK]ϫY\\An3&Bvr ʦxƓMT/S=.ڂ'3N ?am^@'V%%ߗ9\l{4[]zus& 1SH8$%qq49u {H6#]$㚭"RQZK~&A z}o?6|kN5j7̴̭#YBҔ:~OTK,c 85U9\MX/k hBK109 *yZm}]N k-o-_r22Z  ;\@▩]X7~0a{k`m'(ЃW )EIu&qq ( ( ( @aE$g/5iKG׊OD3@;h `@N{}hka7Kh83JFnreW-O}BJGdT3Ѻ][Oc8IIݜ4|WaܹbjO ldz#^\g,'c-Ntk =PjӳgMMlk0.Vn93,<)r8J?sH)(9`8SuSS[616r3Y*KOe#Ó3X^\^G jvDց'PIC`I܊3tΎU0Q9[݌`4WIlc(3NM3mҀrW6:[Qy c8٣Zu{>@X1W6ZψXL# tUGzF8{l`lfecӦqWjO!mn9|Uj_HPKLrk_=_  Rni3( lc[&iU]Z$1z06P&K`;jj0)z3t %R0B@)#^ ` 8UUΪuRgI2TpyWNIЄDzt˩^Nzn\[^qҢt *SM Q_|rx'yN S̚nZ,k qک&oX^:'*)&qN,n&2w֔#&L`ٷ=VڶrHui6xPGʌR 3s6kQȀ uWM% ηiƢv k9h\YVϾA`(Ө#j)$2)#̎XTp{ȫYK8-V4hs+ Yd @N8jZa]RtF!HcM91-&58Kxrqj%F؛]+r闑kz">yUϥBTf̟]f\sd#kW^O49K}Sq[+c D;8#ada(.tMp+F8ɮyE#EJ8)0'AwQy +\FC2y?{ye#~w~QAj=J?`=&P%a{Dldh1 RG3ZݔtcHANO@Iܽ>šF.F7PWG;-'dݮZo>Iv%D1"^LJve#ӾTs"RBV.G%#:VNH3Lͺ<c޳͐1o~n;SlC[ƒ݀ZUFCeIy4)+3+f bfLMNTNrWxN5Č#A'54R+GC]Mur9MY$ŸR%-ukعg+)hչG+\t]=6r6cj$E_rgd1vN qB2z9$=j\:ᄃz:wm202{QO zdf|n'4Ѵ2S2Dw܊`!XG' }hνMdT* S"H5̑m[YJH8ⵌYR5-m pg[yjcv5J8=G>h:h#:T02ĭkn0ҹ%=Z6xO&iP=}kOEѪy>hm8b8nzjg'j6O9Z=JsW1ѷ#ߚ!2XgGT&g1r+n6:c$A-K0GRѪEi"XpY{ԴjrWVtv<ڤc 9{S2!Y@qC4bWhy qbGSlEDU‚BhErr(flȑV]6$Xn{CT_OIHt\8`<=U(I+xk_O]I}՗ki{.>K[oPzsQB |̱-O]%ƿmr,,.%IJ9exCB(RVuO_SMr~Vn߻Ҭnb?%1>X(ܐylcUJZAYk=:-Ws;Ǚ_kRĺqw~#MhMqv(t*W+dzZ-|eo'%XGgqi 3m ]hy N'j|U]_4wnuc梚>ow*bCR ~iNPMӚk[3GM}7CPSWG *@/8'SRQX?ukn[kkiګGA 쨿dq"]h^3iOޗ\׿t ۖzާjgUKbKvMUQ= TrSWhE}Au WKԴ>ϴ[GFF!Tr^IskE9(G$U"{Xcosioy#gVuXc?.G):rsUW_1ӗ%({^tZux/4;]0y[lݴpc8SjI?ŦW&Qב GSI1Iml0+j5ъk~_g;;kYK0֯N\[Q(!;IvTU՜uSyѽcMߗwL[ۛUԑ9 kح85UݔzMBLnm/V_}e$e2#(IGDosrR{٧D휞RDZ4(w$5(m4(\k[epdb @G5rM|\/ۭ֟4h:..6RZyN"}0yn1I+[oo}&I5{'+_rkM#HFzd涧H(Fu%'.사 ( ( (? }\A5oR dאz"p718wk{Ґ<E6d3ҝh-J p8P"x 23H c0sVz*oVEIrmBm2u Ѱ#<2==Aө n[ley9ɯ&5u1R,soQe+-fIabA5yR5SSM3͹I=XnIFXlg'/k{9sNE<&\ c܌=:#sǷeL@ҹr\kuWl"L ]澊6H֝+_ o nQDQ8W2^99M|WzQY5d:NCJrpJL XArűV9 0pAZjkc*)[޶6KQpCy7QE54HKh[ RԙSVȡiC{ea۱f`#xR b!`z ~:J&1C+ôJ&YCǮzcitDϼ/4f 8^:T;* F<4EҢBu# +Xj +\\cҦt#-эJI[FoР#=:pݐ(UY <{⢔U"#QϏ\DZGnUQ{Յ1/+ucp `juLt,[hFX(ʣ!N?^kHove(LDz8J}w0327ViZ YȰdtW 3 ,H8JT$s8õ9Ϯ@(&lRAֳ,*'I A vp=iyDaEKc#;p~b@X94X.W*Fry}XgQϺ!]4 +^Hզ6E6\4lNOG>VxktV,(q!b+ sysH|lOӸ_gwyfϕq-;x9Fᆀ갽d]~烀MrW6;}JٯlK@ + '98Nv4=ƥ 3LΛgXHx%}kI= e#YV(u`)Ns=iVeZxZN%J (8d\pHjJҸlJ]$m@v;z(Ws*:ΗSǜ daɝpΝo* <_54ћb8Bq=zE*vFm׮t2*d8⸱|9ؤ|JJeEPr)V/"'AG/ 3K[p*mOai[1!wP,q۩=]t\ŜO @X2< :wN2jܤ]H֫ro zciKCPTFܗ8^npWɩE4xrw8,`geSח4ߡoA]>z~#;WI  5ƕR) R9*J,[e%zv9]K= .d!8l@B ;V!uItz->I#mtN*հ[qqT-G'e&9G[z&O= FՑ;柬:[pcz"۸ӕJGhU95V\ƯnqgÉX)89{;uҬno~[Z3޹[SU93[?aűTT)p՛h=O$79ckKvSp"<zU4!s${v ڵҞey9iispej FY#wAqO|*5&ވV`[]iCq3|2{|N+zU$:m}qbm˺.V#cHS;Wju_Bxnlk]RZңKh"0R2}t֧:O35+u)UʑUdR.;jnP(>1Rͧ|]GH499,U,O6=Xי2 pyR5ecQ"柙Z;X}+|&KgaK?\fE$;c0dU8 nG5b6i_ckO,kg#l+b'2(w@xĬZS=op)F '93l NU5Pc $=R8BّA^oc< ;evhv7=A&<*dNGq 4{3oc"$F1+ E*g=silZi}lw''d*ilh6R]_zTtNI-') oZv:n$i@8'agjjDd`s~=39`W\끜 AzX''!NON*}Q3,'SٍUe" pR 8(%pۜ𠛑>`J +BAm'q@%M$w4WmS22sLw/`@z]v{j%[{"Z -؂7n>Ҁ<7isI絚I*6 o{xq<+F!1#bB99^2)?"tW} WsG0 ( ( ( wAKк=Quok="Ɓ!h?_ 8pVuR~zЀ ( ( _6ygo&E-orP@P@P@P@P@P@P@P@ 0Y K k|җďb${V浕)vdXܕb㓊ޖsCzL/~ӧ%Hv MC=@JwFF:#{R@y@GZ[EšEV Ǩ++fBa@CK󢝝r[`q@,;sO֓wK#) lqDXA#($J)1+!. QRdgr~w"edf;t4<OL+j u>fђHoX ԳdIÎlgt=\H*w#ֽGZ=/\'l RHHoaT,p5T3vjTV*^8jJɩ`Ďy`;ǗS١r>8ȭcuF,rKMtT`Z8 xe LBY4P6h$E;iv:لĄ Tץ*4})RT}ehΪcc7)MniMɥç\ZRШT%umWLMvmNvw+4zX|c.FX\*F"{uQ9 rO[\MKR%Q@9qor$e>P9S:Q2GoRP7p+ĦSV%c*#s`*zVn6a#KsIԻ3uHDX⺨K6][kx@10+[CxE=`Y\:&XU rLOϥO*Iy 8oP Ll54*̲Ȓ2+`a`w*]p׶SC1I..Wa66S~ cj$^ACKO=i|_t0Gt'R_?w8<QEQ~c4~Id$dNs799cS*H.,g92D' a<# A]zP:s-0wt=q\teEYފ= Qh&PCaŶfr09'۵ycɫEIZBlD8"u [[%(W ylȼX>c,pL~u#Kv6R+K!qB(9{Ot"&F'j+'Px5_jduZ6(˨dsӧኊ53r9oBiI fc^wfNFdQISt9>w#زdbr2Gdҕ9{u .%;%<k8r$loO Aյ/Z[ZE%ʲpʍ&A;ySӞkԇ+W49Nw Hgm,Zh^HfxwHS luކ:og{f)nA;w5Bƹs+-h'u]#x=kXPMsGpp~ Sx{ǰdۗG~VVkF4YAw}n-mk,~v}H.hi.mTGW`({z®؛^ vrןJt3.j (;X8JT]͋_Z쑁1`'$Nz)Ug+|9W|*$cbzc'{WjÚ%}^TVJ=0@ßkʣj3Cm>6F? WQ'*O@+$|~AМD]:ܩb%G;m']n^RSK5.낐V#PUQ>[ W5YRa *XcrsuьXnKRtc$i!ـvֻThKSY[Mmhy&` {`!# $ى0 E^+tˍ5bĐ\NkDR74ۨ.&Fǚ:Vg"-"Ƨ˾I%C ʕ9(*SsEICZ; $d8gLX%$J<2/86H6";t]?e(vA8JI|+wLѐH$q<{VGRN潝áV\LJ3;j̎Xvӕ>c1{Gq>c`z8I fƻq }~ \RN^`~}b'[n귭-=sޱ=8uʙ}s$jܶG5NsW2y}AⰔV$eK$!g5lZaHl0Ft6Ӟ'YnCP)U\9I<={6nCvD+q\_ONq(/$>lJ8zcZw^|'IIj nF2);$E+ .Ha9tznXǹ<4 VS!2@u7AC-!\UFm\#'XWQvb#fU&ߞsJ]ǁAs+ 5H#@ipUWEy/1 l䓓>J,,2cs\cXcdhfA=slj_tWb9P@P@P@Pǃn_^ڏ.3^)4 AMy󋢦c 0aWIZUMڑVP@P@P@P@P@P@P@P@P@P@P@_/&?CJ_~ ~UnҸԎBd(H85kRF7`b7%@PX+"/vLgr 88+ |_?(V#өD("Kw#'QEQ~f^. 1,!"d9V@zW;FVvEKɐ28{鎔ʒ]I ¤ ݀w" ><}>q׷SE" p20H\Qػo5֝r%Ӧ3Fɸx`泓! .9褒d( @\WgSDwzV$haIIU_s޼TSв;-6{zL>!ARFX0#i$"`hw:} ʤ>Cm*AvԒL=;O|opzp x!5%esKKJH$@#j*fQ23hBEE(*~E{YUєm7SI vD}6+~%kÛv;y^ߎk˧;`[Y# <N:W\e3R3H <ҹe]dhk][-ZJeE߽%n@=xc)f%k( ۦ!:dŸ4z_{g#$&MEfK%ח F @7NkO`Fp!/%2}f^Zէ2VAjq:(GA 3\gI{? \2T hrIzԊO]K';xz֩"'QXܵcMi<ʓmy\Qo!F@<-0-Pp:sZhpեusV P泔ztnu>&Rzf8ś2!p fxJoo;yP1z~<*wGQᵌY\Klʐ嗓+*q\'q6qg1Uޱb#FzWU6;sPImrĨ-;htZ^1P>ʭ5K?ǥpʥD7;^ң9G,Tm6,ʺƏLH;ۡLW4*Ι"Չt1:e(fb|v^~e2Zwkg(x &cPm<0YhZp7L##WNLb.%]WKem*stS9esX==xvdv8P;-ͽ2խCO>'b>kϖ{5iZڕxb ~VYF{acӌS%cXJR{ʄ0J/Dɛ|UY:rdwC$ 6{X&qMXӝ␕Abpضeۍǥi(tYf4pKvQkzoS+#Q,v=ov(6m:C[. ׯj*K3*gc 3DbYmRrU4;m%( 㜒}sjtP;Ԏ⽻\ *'@\-.،zJqj|Fz} ͞2=XFWu CG0 ( ( ( wAKк=Quok="Ɓ!h?_ [X}n6! (WSk!.% z._RM;_KL$iܚ|IYfV NHd1\xzre(C3Q~2W_Zi{Cf\Hc$8W{٭".i;$D^{ɮglv[E&AH#[:f L&i螾z=<3QOiPj l/Wu!-zB4ޚv8EGYFDm/kSy`7dWHGePnqZ"1+ݴQWih3C6ڍ]9-<9]rqqN5)r]5t(Ÿ=,qv{\`'qǔc:8l<*-e65>Ē5݌Ed w ~@6}:^,"r՛fƛ֟14'HQw~N$G=fM_ˍ ;rrۚୌ57Qu+ݿNpkfqGd(egVt(Em'S^z)XQXiJAq0|۷c XcQ-F##8ҤcT̲ULDn"*UO€%{);Jlz8aց ׿ u¨@ ܓJl..xyeb($Ւ%?@a F^ ?Q֜Je:AsH!TzզMͪJɘ0;W&sRE;$az~ҕvgR628&6>lM&U08T'յ’;2<\s֩b+ xL BF$UVsZu ?6=*nZ#n#9 w`ݍ"zoī6#t\ 28#%U*ņ+0t%vz>Ko{E`q5|m3GhǺ:G"Ungh=2⶧'` 2^$r +4ZjΕhN&hN6⩬u)j|Iw8z{ܝɥIh~NQ*Uc9SP{^2<,h(?vh狉G)ؑOsb+vP[AxYH#r:r9XTpykh pOU9{w%f9{bF̻sNoT+wr})8F:i2ݕn>R9QDsNHҞ8a*.ī .5R.k[|ⳌeWVpI5 T*?tHulzWcҡVj>g`QY6sMl8ҺLy׈odI&{u#hϰ向P)f,͘`Ns~&br&.'ҫ|?)j:g5ԫ>SGwyk>^E!!yG",c\*@>NiX;Epr Bz,Ms\ ڑb%Wݤ!h*8}#PB?3O,;)+:qXeBqcvH3$1r1<=ikym}nw 'yǭg!kqp圱\LR5)#6p\24vqd9IٲNK;&o} C`W^NE-Gby23`TVizmĒȱy`eK/:ףO|LZ޵<78d>XNю:׶{v)c& *& \9fB8ފ,do.-Rˀv~Zxu9\RkB8 V%leV<¥UMcHIeRR+ZJnyMe66$g%s3KY?)Qһ)v3I#KƘǷۈT~#lv:KV"#T,2=꣹ݑr  tUW& )*˱oQtjՏ6=wEe=,3ih9ikvGsfNc;IN6iJ?؃jP,gZRX{׫ ˘撶An+Erkĸ9;։n"}KuznbU@ mB.kC&s䎆;y+H1sֵM]J2ı3:j:(9Ke4=[܈ J5- =s JvⲜJ69sOD[:l|4m 摉lw!A*g,4VbF鞵g$ep\lv,*r!etv0] +N*L#WLecŝ7Re(,T1ےp}s>cUM$·_:^jr<II.RHhqnh[ׄ@-\*}E)jN.:HPXb>UzYxKJ3wZKoϨlQ45b=fM4;5[aLs{Rb_%L1G8 |%cj*G7wi^84\|"4˵B+șu}]hT@P@P@P@C?bu~ zO^j?xX?- A4u{ty^ ( xJkсす"cxӎX9pN,rWKjkT+`2c(s*`k?A5(iTJioGoH?;WӚ[52hǛ Ɣ'E'꭯ڣ_o)5/{mӡ vB\O9λ\gda6/ a1+Gs~k*Ւ/Ny7zиY+9cNN2éB7[57W^m\~ӴkRW ɼM';Tkdv&Njag+W92yc7MiN2m'v9T ( ( ( ( ( ( ( ( (^+-p5kK^efb]=2y>Ú(۝&wME`g/ = Ͻ}E,\(+'sP%W ϗGu7FoCuR~Syx DmDv<{Vep3^ cdkFįfIQ?yUj2Ч=l )Y9)$1׵$ٔ]!VK)O"FMZHє=CFh<Woe/%ϻVUP)[1m<ZeNowAjq4H+ljB3㊸naSTj%6DSghqÑ j9nKrͬ 8랔"cms2V*E}DIU14Iԁ96}+'W<~(f2wLt5Q<4H!e `g=V jRQ$2ZUi\a@Q\eSvzH2|zzjjN!$Tf yzܸ,%#:޼|EFkt֧ va)kQ__Q` c eYNwsz r~$I *2+eSrԉzیnB2WsǛC5g7bNk٣ +C2 F-c7 L[d חAP9ǩBTog4FGr?3WrbcFy^+E0=*̡\ ?dF n ^2>9irV=|uw?-q\j0980t,cΝI cOkϮIg, ̩QIaue8`H#ҭJ3=z /M9$GkIǟzK`Np+%3{Ʀ孥 #5ψЗQ`s9u-BDYYR韯IqmʤTtH`N2i6RDE̎ -~^y¦yry13FL(! uv,\iXE-['bdžr[:5;YW/Nr EI99`2zӱk{6uT:`Q`r.X2m(>TXcB=-&E :!H\gEHZd&"/ҪDK6ʃEΆMX?/-V!2DALOˊΊRXNzg>Ԭ?hrr.Ǎu6bр ( ( ( wAKк=Quok="Ɓ!h?_  4y! ׷K^?B \oIbU$"nlp 3M$ S~; BfLo Fg=GNסVVRK+Xgߺf*H\GCP]IwM=id5֪+,JǠ Jv쿯"䟻]_hђ%Z[)6 $9KIݾh޴{_xl^7mJNYElSm7U%P@P@P@P@P@P@P@P@P@ 0U k EJL&bgsKS ~ Ե=[]:AB\䁒s^#T2SNGl>H1_sK7v8IB{~uժJHO5ԼGr!@3r#Ҳ"uR>x]b,JEܟ__rdC%84 rHzhwWVbūYCn1I$u+gbl̤(g<z"0ʬ^z u,I#@P7:U"IЫŒ9L"屴nPyaۜXB:TUXv}C  ۆ& ߴ.UA:LHHY+ejGNGMXZ%Rk~Bgy'}&p1u6:eӮ.gC3w\+szʩqIne3!p !Ҹ9[*5 )8zWiSsGk{z>wEFaQOt֒m5)*2Ե1v;)wYZVGoD^f UdnG{D롋E7:eHJrjkczhhЖt)/OZVR躓isA&ڸ1yOE͍<%GդՌEX( I#J52ui)7LWJ规5 4EvdfrpkF)ɯ:eyR=z*hg/isZ{+ x%%FMxXguV; =mbEw.5s{=W7^s\,w,@婕ɑ=AP1hs,*ɦTd9 Gҽ\3-68uʁ3a.xrUbDĵw5R;>u"S{]js+H4)dp\ |y)6"--H7bq5 ؒt#^ƈ;y0d =(:Hqޡ9Ib r)[ԁ9'Jb64%^#$N9sN4ZFJ?XT,f+,ZEERk@FG޸1n~f8X]VA+p Gֹ6$Ytpqi7`sv5^?Uqߜqұ,!tn&1LX6r@ @c ñb.Ԙ&.) 9ڹ湖5_jZ,uDW'e|>-+I?x2n&|E8~sW;3f~,گhΪK#wH _5z[x+jXX84a3Αg'oq''Ռc'.cw 9M)n&jqͣB@ JP:B5e ɸEJ;Pе M`-)x#?{U+XF""Hij03sny٢e_ims -{t.8S'1ԯsDgK7ԋU,O6ЙA^3ϭj~lB[!eO}+ U^gQjh6?3nxVpi6c$/?[LBCQ>`gڻ=3!S50%Ag8F,bޭM#(8Spy!>d&s(=@듊v:Z{ 3J 'qSdfƏ]h5rO Gu#}Hjf@KmWI15dmx@auW~#^>fUUֹ^.FƕDΛJ×l$K<0':Κmox~)X7RϜ%sѦ\Ұ1ǟz5pe6gzjv썍8ˡDD0w+:kCF5مo22F9ļ6ƥėnsg54drNd5K`\zt}9'N \| .{NnP#695Rsw7 ۸dLQiWE tB¬FإnFACjZG7Ra=zUt.)Gs4d!P :2b_18{4y"o]g9`@bzFS6- ܯW'ڭ%+V =ɫUIS * s;BŻVb%s)Ejl뒔ӬkDZg~YLvxֱ^E{I)M E֠NJnы#2㵲[r3ڵL}+1+yI,|` (~Gm-GUGqPtD]A\1ߏLT%bÄP7cr3*N\ 0 ,l4]I<Ahda=}>I lЂ6T#~{wH#Z̲lgߞ5:MԍLxyχ,xLn#|?c b6<9x^N>:=q>ÿh tȠե2%}y?⼪dʞ2ѓNJ#Vs؞4 5&VWlk0RxɪPY '0?&t) NF: 2EkxR{Kؒkf]sBi_O1kN%͉$cW=ssY-x*p:Tli&G*;Ic,n8(4І*\) K,K|y n dӵa6 :(S9r?R4BPw뚑0Oҝp~Ti?hy2-IThsݿ*$tr 0 Qs}a9f$?EʰuʶӰMI KC hW_9a\mq潕`: zWc=%wf$gG \9Fywgu)%"RaDcҶK}MԲn6ErHc*1389ӎ0٭/b7!<ұ=llCSW2c2 ć'OӱbkzU 0"[fp@m=+%sƝyI$VHB yXO=,n9Mc"I%p#k+GGo"]x )r$c̝neKԁ@9'N:Ԟz5Ha`*+ avHLXD@3ᇿ"ŭIG@!q4im2De}㏮s\"PvbJ5#?__=R6tW;{x`g!SQ_sZahGxQMk[x]n-&5o9ʒ:'Ja(s̻ajw*lH*8rTR2d֖_ c#S^8q.uxHyq#d z8;M%iOxW;,MGcnmg}֝<1u"֫W I<3u&i5Ҳ}<¸)^H s4zFUQߝ{^Ҝ}'G;c?P2Myة$mI-?u9DT40.{kg {|w8YMw9G 2)#X rwg8kԂSxsbkh[i 9 Hu2CT[rQHyc]^GqEcq+$h\3vgsVD7Ent!ԐqVjJLxݞ[~myC<#$~妦̑Z"nQb3drGQC=FȎכ1tGtS78nMj7av J?/8>L{h %/g2jmQק&oYXJVA`L}rK({-Y]#KZRVgӍNa,98ڸbBROp㧽IxzO탳#9ϺˈؿppCfݞOS ?wBsv5lt+t`dtf˼V0G9&ΈEP12m+OEA/Ri-[8[#'?E\u.7˹}hw4㷋1]'oeokl7Oq5uQ6> ( ( (6<#v_Ŭ.ĽOn!s][OHZhwPs][ g?RY@P@P@P@P@P@P@P@P@P@P@P@ 1EMHUe2I eVƔ$xe` A8iUiPK^Q'G9{ŧVf={'W1CbmQrpwJAϟ1 CtDi$b19Q*<[WlٲU=ta%&ԘqZSj;;;aؐGC[rXmo!x 1:iZu%jUߖaֲT,tObWF tR:(.jF0Ium[ʺ cOW!~ Ω֓FP1 B>ܭ!txA!< ju-݈*hMd42V ޤQa #NJ]oNh ē?Zg[,9F| xrH$vHѱIIŀw!plOUtXr9 ,Pmǒ+B*73 Ƕ|:yP{wӆƾV#Wwwon&H0'1˫˙a4CNdGs^Fmy!ʄe}NᘶHuDBA+oEoF=rs_)Y޴9AvNy(AvDNȋvBgtfuv+N˾ J5%cІ/K,IXpX'lŪÅp5kȀG/kw1೒L_Ye5p;V&͖3xu5tHdv'#t+5{;eUcZ [e-Úq; ᒋnjt:\J]r*PlJ広ҕ{=އEfwnm|gN!5+\t*tEֺ~ΗЂU%Qzxv?c\Awa"Shc"?zb3I6G*»6qLя*Vw# QWR,-)݋qH4-)rvBMS n-Ӹq)Yh|1}|cܮ2d8i}YG1x^ yuʓl3{nSh<-"Rזʂ%`#ҩC͵M-9i|qk&8&RW}j.d8P&7$^ez/m>&ܷh!qy#JFnX._$yVΗeGT$W^M0l<01{-3jrG"ws&X4I8ׯ^bgb}YY!d8ӶkѡGDep 9,'q 5*|cthܔ N'w<={z2v5FeR]laTL{c>쒋Hٚu4[&C*89]t]Ոfo> D>a3ןj3f: XFMʌNTg ̳;%dʓA'`A|=hb7=1u 0m~lwRbfjBaœө|DOc{ cA5[G<79xWo\ LEH-,f2ȍ3BRF:ܵglӨH-3H˟jÙU&z{o {e 5N54؟ ;p,0OJ𥎩&xI4]iVxtAO͟\t==NGJ[f/ KMr~Y` Y~R5S<ˠ!Of<]|?:\*qjfs7;}sIOK:DHl61z^v sHGilPnz&(SgGY-$h>kǬgU:7 (;X£LTЂ~G5n,ѥk6`qѵl٦<Qvup;xXSGxX'QtHSrw835˩%̈́kN\^^r[r+أ9 V! }15kˇ'GTHl9*ʎEQv24 o5r1qq uMZA^^s{ YSʆRӮlLI Aʑ&RZab7=觱߿.*9>`F<\2^\ eSl4@쪠NM$9"$exN*ruU,95I+%AeFANR;q jEV;[8={T3FAiBSYk?JaihPo, OLtm F[sMI,pGMV(G564&6q3L'8V93AKCN&(& R6tϓmBFnfݞ@+ZFnf˔<;gcxJiQemt.9oSDE@ΘodΨ5o'81`qc&*Isf0JK9ⱅx۸8ҋRx|HQJk^L (\ƺԦAfrĊdM෺Y5!+9ڧ;9 Qfߏ'piBu8*nibXa$"˂Hn拉J1=?:fn,Yv"g֎q@P@P@P@?F-gWt%{v! ׊zEB@mjs]׵O^? ( ( ( ( ( ( ( ( ( ( ( )Mc[~$ylfJyjK]<;:K;jbv,rW*Qz4j5\Qzs\`BٿIf'Ҹ=HX x5sJŻh%jVvfҤ)BY^ZC=QZB0VNyJ= y4/mpsVPuUv|pp=j*&ѥtR|aCHhdySMa >]7Pc#uQXnj$MC4XꤘON<I)nM9%kvvZW }0ܐS+߷]Xe:撱#v#.@r0 3V1:XדϽL֤X/' '0KP+%Sޛ@P2Fv WLC-CGFg$rGַR&I!&O(i8swVOQOJ6w6C*$LZ-qG+xZO pKr g׎"*It\ r*5)*순o51Bױ[ m]ιݮí?ts YY`s=yi-]sR+(- ĊND.K粟skrO&6"遷M3&gMbPH6ҁ֩##W^n=,=kKEpL[9g8rK0kjmsx @x^Zyބw7 7%n& 8==מl`۽o=(Vwb'qHkDyWh\리]kd7cȭ]Ef"Gf%,p@=00;'uj:[l#j]ǜ{ )t]m`}85/)\ɫsegis:nyq89].^`nnLKz۽*AM;uP=@YkJg[ I I+F@5nׅ@Vr1#jf7M$ljJHH B_NҺkTQΔ9Ox}u S1'r+ݔKSxP%IWsץSH7Eq=hvHF u]5>hMDm,ÂvryݫO߱3t9 |WinG#ӥtTZo"{$fNMhj`UG>浥;j kH4x`EFzd~]Ⲓ.H'ki9GC*.v<8a=2U,OZY,qRޝysM,ui!H .vQؔ^CetbzוV LΓX!F|1dg!_$?$;6 SU(jzPM"erbNs"uN7--G*=iSJZfsQJ7? wQdqNF?5R4+Vs'>ҥ f;>AI$"2V+x)'v2 m{b~P:}wfbFvT\LT.݉&p6K+ OgD@FWӵ"(`K\ܖdb:G'Ssnx37?6=*O^-:)kE3x̵o"%p@ MkѨY`?5U PS+ry5Ja+܌74.rF7'=ZBH9fPq1[Bzl^XRPӆ}pGDjQw7͞j麑WczgWJI5$=,֌㩤gO~_3;VN͚Gyrec`6S#d^k14v6ѫ)e"COǨ';G<~T SwoQKƍcFaQՍ5|.c!yo|7{E#dY`D + ݖF+8 q_^!-F)X'ϭ,5$yc>ۖ u`0=ϭ{qLdhfLGU  GPoFqfV >4覶FYc rA:3Sg(ӍNn&(n3T#9NM/uO>P`m'?)Ӯ=Fk{M/Km: kn4 Y2,TAvgvCɬK}RFib$c8=pV\IyhLa+FAWc.k!rtv\"B8#rF&uw\L,s}q?LZsgvmI^|F+p~N4H]st>CHy8Zx$hSO,:tdsZq_.ԮUPIo3͕Bc8f=I tKr):7OZcX5(֞Iq <k*N“<[XR+W`P7q{4)Rd6^u]3PȁC؀KOk}Hg3ukq%UWdg̉+ 9!@fiz9aYQ~+Nz`}13v=>=3Xt3n3uk.eZa߾b4HӠ eom#vk*ZgysFOON+9FO2 ͪ\sr w4|f-R\Zڄ Rx5rNuCfvڐɃ}Q/xwn7wA$eJ&f)dqMYP6e 9Yt:eM(\wOk8nHg3Hۀ>Zux8ip^I4hŜ0٢KC͖"P:+$i{Q/c:zXJ';ͲXt\ .H}1XJ'E9Je5̣wÖ?/1NB `Fd˾y?pԥdUu;F+<}ϩM M\U(oqY 4jaGc9BCHqx%-Nꎛ>ךO׊z׵< G $qz^BCν XtFym"@SЃo*r'[cJ;AePGq5~9Jc󭑼L`3(]vS!^P"Y 62_fP}qM(jV.nm}2G:LTۇ\ o8s͒feQ⋎1+]A8v6'w@r:ғ:#MMCzd~&eRŕ]SR雋H[h`Aj۶vDf#ʋnL{#r.f;88)HX(8ER:-7Oo $*BHRk¾`InC$ d&0[T7M$:m Lb"#RhuPoDQke5;B;TܴYաsiƎP.wIh2)+ /<~u<<뉸O5z6G%]͸s ( ( ( ݡ1k: /S۵\VfS,hN&?:i ?RY@:7hWCR>m;*SH8Kf͋k{#X\D `p8 X0QQudIܚkۤ vB䷍Ԣ!МTžnϿ뱒O۱/<_%]t&mWe'%w 8 qVKK߯k{"_kwuOΨ# WU qV96}А ( ( ( ( ( ( ( ( (^+-p5iKG$ҼIuHDR6FcF>hϥ{eX{yFd#r>Sj[%L`2;'ֹA8kEܧM4bEKuq#uAwmz ;"' B0qIR,h|c*M[G鎱9i9SƋ è+`=G*iW]&q4XkW'<ڊ!Xrx[3s$qg"뎝i+@}E\t+'_SwKyI"q}3׭˥8KC)ձχ!^&ʫZ}yRPwӠ9{TU:k{mN+ %+jv" oU_兣Sds7ά"^TO Ld:k1\O)I,dz7* i!G z<SP1$s5?"8&S< Z$pr=z}*c&b[iDPGNGJTTKD9 rȫ}#эI0'Mo?yRS5#U!Jp~PNG֩L6]bwHJͣ#J=ߺ-9[։.$prsSV,o=Hl>测Ԥц(ҺsD;10'i ߝsOS=nx7V;,1 Ö ?+uco%%X-#mRA| y뎕TY d0KBXijE : ğ8 ?)*j2o4 Ȯ%AXq{`ۂulrys\dfGa\i*bў㷦}kS5:n{uuG$iayZWL19&UQPqQm#x-u~:/b ^ ]T|RyK)j6wY ԭ稜/4qFbޅ7mĎ$e'k@`tWDZ9)#aBRs z>gZp$tj攚G 4P=q4iq*H5O6v 6qr*a\{M;~ܼB^#$asW^?*ikiL+`{s֜{#9t%8Ӡ𣕫쭙Е\r=+8 Y G['ԸbЎ[ִ+8.xCk-L;iTnұާG|9:u2j ]>FtBpG]G t\/mx:01(rffj1&H;^p+&uR]\Q.T;j1jqub8rԅňZhz并f̠ `WJhwER nߨ<\;\]Y.d-(*a[ӝGm#/s%I4l~X'ͫrawIjRV*.ɐeҺU+؂>h8Tg$AGW\u[A\Qz0̮2Nx5t69FF2=yGU5s.F,=ia⁎ϯ>rDlK3J/L?-~A]ӎOc$8O-G |pq\W6u'Fg'&a$jpA%$ҳ!F ~,EnbPFOIfj :F H⋊rZܱmf!V5=ri2+yyl婣e7<@4 ]v%EG'V5acU=@Vd6c smXYE+`#nqM$s;Oz }KMaJ^x"aF5QٻsMH@ {t}K[k&ȏ$z8cFp:{$Jy$ߏjaA\斧xjN"})E0) O̓׋ӱPN&g ~cQqw6Wvfvp` 成׏ʛK\E1YF #R]س)Ev9UXe]\sb[NƼQM4-+ыfw-RMHB.dQ*@9UőKu{{VOq-+e%a:ƜwU8q #_tWb9P@P@P@Pǃn_^ڏ.3^)4 AMyڢN?:i ?RY@Y gT.KڳձJ1:;k\iA$s_IL&(Q*^6%N:W&O߅Izt֧z☸bc26~`r1Yjy`P"R9j*Z!74\mǎ^lMf3eTֹݞX2$p }A!€"bFppqN;d4^A;?ZN[FE)qȀ8HHA#RũU!FskmO*0y_]Qh?jOk)fӃVd>sӵfXHN$w:^=IŬ6Xd:ᆟ=̥Y^笰J9Bs㨫M.gxa5Hwnt`ӧZJ]9K!c7V3+H\bUߘz?U-P#wvpqܞ?/r9:l6T)_ι7pNiPK09QqCDIӣ#I mOS_?NrRdv62FO U;w*gY;Z>ݼ2F!=ҹ%+DtNI-3yAU9_ZIͱl G8>P+S%#a{q/ ^I+}5Oos+HmpGCKZ-.oo$.vR"|`~u AI[J$P]U\;sǥi8QPW=#XF"<1]Gң)6SGG|dbz(=G]4 ]%$z[>ӯL*Nè*1[N<0J,O^xJF dg rr1yw%ұ57$,Yup.isqޕgBi9r9P!TVE>eK1@Mfќ΃MHF)}k' P> TэjI#kPk,z{V."VLע0^lzVn.. uwlsz R.]z^gאԳ32I4;|ۂrz@pH(H5Qla{3e ߏOJJ=u9`8_sB1 8O#w*y9E 0WzԛF%)s 'Rjh)`%OFܑ:iq8aycyZng#ƀ5 UgL2nA pZB2:56eXȈ`9%d=D8m &T取A9:/ 77:ʪccP: >b6޵w^"Ԯ?cWu5b> ( ( (6<#v_Ŭ.ĽOn!s][OHZhTIs][׳O^? (QYjuOQ:<޸2?B+>'}׷7%tȦ{idxJG>yv$@pBE˕;8J.w7l?ƶI5Ҭ!U͂NN9j)*wV{]HH|]e[u3OLdHJ<)C1TwM?_K3tmCy .^YF`d_$r*-mhV✤~O/Z5 PW'Bygcۯ54) _tRPzy}}?;orz%Kc?xf{k؛r"nn9Nm1·*]n~GBִ;P< œұ?6-Rk~v&E?tMj{y-KxvZVv5MI t$gێ՜iMw.ΤW3וz7v65ͫH:iv nǽ(ђfRߕQM4qkXxC-lKֈSm?,TWZ/5IAG޴=|ERk[I`(nsjׅ޿ȥ(F )޸ygM׳NJG:Ncey`tZi)`$W+}ɧFUU^*S;M,mR9)u/ hH *MGևvN=(&LORDa!g3ZVVug\`(5@zg<4'~!BSEƂ&') Tp5_BzNS{m()#mhIi $+\`["PykLEF srA)֔64xVknlO4yR9zs]s $q(]E 1yd4Q(\kС,II)9uQvXd4n2`9 wvBʺ78TcT sN !\=SL˵Nw<{Rȁe#5B,[!f^3f7@ jC'YIWzզ; X@aܿ m8kXhтHP,z]1|'C`j'Ul?7ֱʼnoI2zFq/qUr;MWH^ОM}{k]kxHWh `p8iʴgΏ'Ia_џ:tHc,,@gZ{jRZGV H3+(\ڥ!E;/u)?hP@ቋ2i9-kux O_QS*݉w:4o4PI=QksheP3F#zuG~'WQm5]źS.vs{Yʩ*99٣ہ]``ץCdFbpp9*]Q&lzdR"@t4+bϝYB=8A8\ȚrsΦ:$v1>cp3QvEEdU&#GuH8Ā}ya^*EZkR*畊ێKmQ; WՍ]#!YpỌ鎿c5xjw>ԭ y]FF1q4Im/`m7'5TMQYisѐ:u}+ ҉YJ;YvٗV#$5H &j+ tQj.x&ws#Dz8A3arV4DwX<*T1WjeMZ4e[춳4I)9e=FVNLi|x$ƵRnJr<7 _6iP928)W>+;Ya@țNW0r~ u̒hI"gOkd%YȾ\ Au֢p:MJCgb#rЂe8ڹ{McPh pN{(V猓c9=x-"y΢f>` c^*CV3m5AmЈv`\eQqScFLIGu4I Pybn357q\/D(l2Do0O^Fo˲wK9f6X2G~mmS2B)ar)X J7C $i1g~ЮVs8$^3@xÁ9! [qRZm^S6!. `qֻiM=tMr+ V^qʮyV][z) q~DUpwLJ*iy,Klw0⭹؎Q@P@P@P@?F-gWt%{v! ׊zEB@m2npZVuS~z (#» +!K=4YΗz?h /d:_Ѣ.tE\a!U̿CJK=4YΗz?h /d:_Ѣ.tE\<F yGAp},K=4YΗz?h /dI$I> @ ( ( ( ( ( @a.pF{ʯ)H;<&ob.:W;*qYaސ67YβDqi ,Υ5$zgBϱ5a:F# zm!eN5BjHgIŝ}#UB:_*'SBe*lڰMY4GI5n=xcڡvn\zb95VMF<~~J˾(ȁI~g?@i ]$3crrO*qFq44{w:8?ҽ| Zoc)ǡ^x9"RhfKyD3`lsp}_M 8t̛deVtG2Fr"9Fǡ%8s޾c4h- b*&SIk"לT#U!b S/m@ TNӎ3ҜXC4Uf*{PmN yAT#IϷP? /`#\nU \D^Y + m^imJgVZxwv WGvru< Z첖Q3?&uW>DH$rJ`"sF{9 x#h(pP@< 9($86;{զC.,G;cI'8능"nbelR̩ )#c8ޱsiqZz [Vq,2y"uϻu=>0;7W ׵5'6K=w~94N xMxu;l-nlݓ.qdag{HeFPgIYFj|M%0}'V"RY[g4-) 8!A#ֵVkFK.kz V|m.F';\ѽC>F4q2Hf%StW!`|}߯JoADU.'S}X ЃdH, O h@[ Ww@* lgkLL  GV+rb=Ň\Q;R0#NCW U7ԥÂ;iJD5%;P3O@NI 6:S֩JaX4}+X$RVSJ8-a)twaZc[}ƟGfR6DhSz\CnfWemO\q+JC{ ,boSw>YUvnKY%̧'mYSb,^i sG)"hV z'UHl1/?C!E^h|2vsElϱ5&*:3NHM" $cԒBN3ڀ{i < mpw:tCS,F$1۞'iGa[Bj9IΘ4یqnnr!We7/b{ EuI7f1=THwE 35i"BHdD*~UI;@ƋG`]‡ϩʵSFl=,ז{\3L9RઞsvSͨeb%œE&?#KH.[t41[Z9'9xGm͘r ( ( ( ݡ1k: /S۵\VfS,hjN PνK]w Xgj5vx?mOmNZvo8B5?pWSr"V@ RarkIl`vՌ{a@/NaUAn`cO?ĵ wm8 <8<:Jr70U  q{e-&RӾcvQ+3b0r~cArT4mo-}Ŝ̻Bc+Sߡi3TiC ?Lv)qv2,E#Uܧu±M3Vx|TUp80˛r$sWc@w ywv&yTt&W;+D@ Us. `RI'04IY"NiyǰmP2xEF;mHa8fq%t1suR<|.Uy=K BFdkS\L=0u7ylOMF pq؜ԩkbdu.KpʚGr>T5kљSڲlU FOٔq;WV$##*r D*++bQ߽KFԫbDRO\16spn_yɩSK2а+wD˲ِZN9\FeE#r4X-4T}pq5#L$:pxb,GZ]g(f܅1݁o\P&Kk[s0rzОǡt?ɿwsGKs]>ܳ6x=ɑg9cqJ%ɂ̱y8EF@@&ddŘ9iXLtz|n;?ZV-!`9a{Pm JývEΧH*Ve6zW5@:9?ZvvY$.?M>ƭ$r&yK,F7UTWf=/Ú:hzR7e@'ׁϱQb[뗷T@NrO\qrQ9E mEz"3N1"+{jtE5]-e.$v)ͣxY& ;wg9ԬlpHSNsA)-.N-Ÿ5' &$WV8'z\ê_rK^ ( ( ( ( ( ( ( ( )ĺulp6R~8*#դiKGkUhx'r v2UxtiWV[4ٲr000GZ𥅚-eZ|eVU=N֗PP>k*i߅|M L뿎<6.ۜ=[^"SA \ר{NAK̿/³J:[?$9>+xdtƫdt:Ksyqgs ++)?x]M,vG+=4=Y>xm&cN=?,MxzW'$b="K+)|2WA=!סJA}r׷ ӯX DQϨzW()daSSڭT{a Ư=(`6i X㜞??P" #ےd= 0H*X@hHY^!xfYe9u$͕`[ pqueK+(!)"ऀcy1_3VtcKs6,Iփkxl$C&[s{to2Bt`UI\ૹ&w{Fg?S +@01Z)9 V j줸eM2?pd( ޭ0$QpT 'Qq\Dq?5"FaPWH'q Y$+A9QpiC$4AhQ@(4G(>Z.# @gc;Wsqar}Ac{a+a-qxL.#H$dO_Z|-7PF]W 1pN=hr#d0$`< d*'h cEØ^Ed@X;Wdc)%s#sP#cy\`uVUuy(C/Ye8gH=z4[i|)Q*zc\1K +_+Qޚ3 `IQ.x8ϰI)@egQ*ѧ½c’V1(THqޓ,%g 6\0_渱TczfhTQRRS#w~[lއ]ܮoNۈHXOL6I$ӎyFKup}bVb5f8B#Tp3+t-uEm#^vO +Ƭue@<пT:L hv mߟ&a}QxM\<-J@^ӭzMKyk˷;#\dn =BH$NEos>եns?]UcM]NPG~ʋKN*pM\NZ$jAjd±#$UNR7OcQ*Z16s߉ϑ]HD26~Y5t|Kbzd Ktɔ7>|:okDY9WYdyIu!p!FnOS{kpWDncVW3u[e#v#5 ǭfur"|}i4gͩT̰79,;fjͬ\4>^`p#syV*.?[Rfi# D_ocV:nt1,B5GDC!`K‚KepwA>ĩNK6I~E06¨%@(z烃WȨ[ҁ =:|\G8@L9 tM [ʻOrK#(uG!Xa3!WEؙ%eFWew  `mH:!ĻɝYS62y1(I"7R) Kv3x^ϯցOlcEi)J ʈPrO4#-  4g6vz.0 ?:Y;1Ik#E.nbsc"fڹk3 X l_dxNtLS70nc1:Fι`83^LsՑi") H$8k+fRyTAnX;YXיbepKz_RLŘןhg(\J,v5i֗]I0C!>dl徂uisӱC?IqØFI zu#8uRXuI$[|7kc̯kJN@`ԌڔH~K(F60sg'Lia(16Q*IaѱjTdrTmHukB"ͻjȿ60*vt42@}K{WRHץԵ`wy4XǴ*dc'x{WELYHXAkq5߀V5jzT"J#cq=5׉ +4xLq午% ^T2jZ.[ZE+1zf\΄!;E =9%(@AuR 'sVo w9C`12jXLjDwB)b ~ DÒGN1RF*;{FXd`@ P9H=z@h@9hʹ42xzm{ nt7yam Vl _IKMJkh`4 <圕MvJ Ny9i61?uR婹,'u^PNO(\iyh*1 (r9\ ;,84sǒ+}i1St#1\%Wqp IzmBYc%#\U$OSۭ+$qTbh@͹NG?>`Ntɡs=8҄tr&EĊ$v۞A'57 yK۹)6?Εa#F$80 T'IKCd"/7*arc8/zy͠q|o$Q`3.6JP1 jLP^agk4Mtol^0"gi|ϹpW¸q 61X+vb^HGb܊N1f\**afQ'8<ՁErg3%+]$ə>Q:\{AעE4 yx\N=[Q{&LfYόH$xIGSiڄey% REnqU?P}U k ĐIѤpW=38~)R23/ cnB4wb.$E倡x 䑌v26yl[ 3xlm8R[EhT ~Zl۹'<5hnx@r?eKs 9cOJL#OMc*Z-r `HԤl\ 82FvR)RQ#hw0yRtՍbf+\,pzRM#y<%4:$R|38PLBRi$#H'Yr*顠[ědn +TՎNYIjYj0'N:jhFsvSP3r r5KCp]dNiP2Wh6w";TRY~rjߗ&oej[B/z77,4V";|S3p~S9'ڞb;@`vQ&PFHDjC_үS ^F$Tx\䏧 2lyFݾ$W9s CCڎa@P@P@P@?F-gWt%{v! ׊zEB@iNPν>.[?ui!QC®n,m"\95+M6zEd{aeeq[浳Af2rOrh>g;;}/r <>WaٓiwA>.'?O_;Gaهեܣo:&vOdxP^FnYp;U\$)a!QP@P@P@P@P@P@P@RĹ]*asWi%snoiiJSs~5lEPW=U̚FCĒN1\qcd"& Ac0E1v-ާrcjt ,4-RkIl=9mFOƾSsfP$M*LT6 gm :yatfrP07'_c`kk[(C?<߁W5;{X o(pT 5#N(ٷNw 3\*K0HVPDg޾*1H#Lg*F+e&u:t/0qfa-y5f<:&Wח[w)Hٳӵ v+ d|Ԑ< ʖ4R'U>ֻ'm Lܵ孭% }KzT!˹͐~(@嗞F?A]as'Tׯƞnq`:W}_C2ļQ ( zdcQ+I]i YRb:*qR)WK~a *2qzʮ2wq"5 |H6ssk B4ֈM˾fpFgһ9UsKsm`ZD. Q䃎i޲p2D1T G#h`?Hm$ru84U5dcE TIu3nһDg%P7:p3L8IleR ALu.EMl54Umq-ĭr~}*yGAO)wnɓJFjxa eH֒cg#I.[FLi:< U8g&*IR8*=Os % #%=֓y}m UsIzRWIa9h؂OjYHX]QzHcKssUBPW@i,vǵ#908Usϡ [ȶvp֪;=CukK~~8!fN Tu9> g ;rp[@5D2`3LqHZ&JGvX«X!z1}p^F`D)1=I,TԂ #`.`4Q3PI hӰ% GPCgUڬ6'1 ?R2; L1:,x0?hi3~ibN{j=YՕ,[d3n^/S;iUI1B^:Xڅ'2yU=Brv~~nkhlEx7˓*+;>'h~:խnA .ձ+k#ǖ=w+_y5$F Lx0\T =>yu6Keb8 4ܑJ{cq-+=’'U  \Ȍ4I">jD~WH~Fstj=4qԱʿ՘O]E4'Fek+ɠʇU`&M<= FgcKQ3|[*TZE qZ 1[ֺ#w-V#2kW7#K*9 "eOҢĉnZ pc,pן~+u 'us{7lk qz1}]LA@P@P@P@C?bu~ zO^j?xX?- A4٦Ijs][׵O^? (//j?'k*4/S鏋/;sk6Y$ZBr̯0q8$0|c#xv]&,z]C}uYFC W|@t7U>ciĺ}(06]=hW<_F4k,WvV)lO"1c/*?W|MYK<~eFpFU& =V)ikLA@P@P@P@P@P@P@P@Cq"IYX+SAO"`i{ ݣ=`hA?Gh)={@O vd?S{ ݣ=`hA?Gh)={@O vd?S{ ݣ=`hA?Gh)={@O vd?S{ ݣ=`hAǡvT K[ 0D7j˜Rƥc=$'~ȿh' vh)={@O vd?S{ ݣ=`hA?Gh)={@O vd?S{ ݣ=`hA?Gh)={@O vd?S{ ݣ=`hA?Gh)={@O vdUАO4,Ջqr5ՈpESĤeɡvN~g v=`hA?Gh)={@O vd?S{ ݣ=`hA?Gh)={@O vd?S{ ݣ=`hA?Gh)={@O vd?S{ ݣ=`hA?GhAOA vJS.fa+G9ev'md)`i{!@OA?Gh)={@O vd?S{ ݣ=`hA?Gh)={@O vd?S{ ݣ=`hA?Gh)={@O vd?S{ ݣ=`hA?Gh)={@OA ѕ!9مn+U>c>IYX+9SjeCj}^?S{@O vd?S{ ݣ=`hA?Gh)={@O vd?S{ ݣ=`hA?Gh)={@O vd?S{ ݣ=`hA?Gh)={@O vd?S{ H;iB 1W4T`V L ( ( (6<#v_Ŭ.ĽOn!s][OHZh͹#ν/u QJX}OIVHXTz/KkPk6/jdgѷyŰex!4fX8OҀ,xOgo2I{ /QhJF3@#˜u.z@)K]{H]+KRo}6=ަpko~{ma[-Nvל=^ui7Uߧu5,1ͪc5$0BXe@sxrs/˛ߍ̿cɮu=Ŵ*~~T(JJ%_>ʇ{ɯ6N1 P$Yq) =khI?G yBbjo3o1IԊvo}G9+[ jq;ʌ꧀A'%Z >o.a~-fBC 23Żr SUbKƩɫۥڥqިt2,N5#'dih.WonCtK-i1d+Jyݮ9BQܓO5B6L"&H̬: Ao4JbĢ~,<7*{QETV wJX%{} TuծV˹F =u&%NMw[]ZKi 'DUUm@O9J}-I%sα^FUë)C) n6R,ۮŇdSxwc.SooQSNTW.˷~<7$ȫ VdgT=9=qIV~W˿-AKauyZۉVs`2ܙ<3V )I+wrK隅Fhc$eE`]sZT'.!;ۢ#wbqT=2B۞{PEIuv_t䝼;y-$.Vd+c8ڥւIqrmߩƅڽ*"DS@w(u?i{v[v!KdO*,oYV4Rz @U)%kdEIn^}m-TF[tm_˙+c dA^՟Wk4-F&U<2"`G#*oo;LJ v]m̏No5'#`$%rQI\$Bc{|A#( Pr9#NT| (dj-.5|!Eg#( F_Prh =[73 Mk`?-`)h<J^6mZtF _-K=Ъ+ #a~Ld]I]SJ&m}~_bu֞bJ ITo"8 ZjM!ťvO2^ݭ$ sD."$Kz|dP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@?F-gWt%{v! ׊zEB@kLνWcr.HIibClYQzFn75--kTkZwen!^ 'Y!>i8}~|c<2e-IMw#ռ]#HQ<3 ث 8 hAZ=?c#7g?h|1>W`?MǨY]'eu(4(&'w$$W)%@xTpmI;XլfƻP/r  ( ( ( ( ( ( (x`}鴦csW-tw欑>2@\,)5lM/bzޞ/Cq o1~JrnTF5)7uDM6;y$mNG2c˺Z3ܜ[V]ݹz}zʪ [獃O\' j)z?*kyJdu Q:r C UAOA5ۊ{nB|kxKoY쪌K*I#n1QJZsArJj-˫]oF5fI`@@F\#xKrqrޚ/)J\85vuϊJQדPJϚ oU|Xs gۭ\i&WR*TRv^ vjw1ݧUpTHv]jwلw6ڕOqRSRՕe g.Ik[\mWGT=M&n¢ (&㜯^O=+% tUu ՜6sZjH/nyg!$lm#qzRW_گMSӥ[S{[H8X `dZRR}dr%uI 8R? 8\J#UG\hMۣtٌ.wƻfT]X/'VIIul( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (c7hZί/BKGB?տ&<48;ڧ/CϟH* ( ([F.œio-ٝ lC{sqRI_WZ>~/g7;nmO]h }dF@l~(@]&ӌݜxBwJy3W(Ԍ#'nXtKH]>6}яe6갅*Č܎:42I쯯{XMv_<@ ( ( ( ( ( ( ( ( ( (X8e9dXǘIr*b A2Kr@4,,$#rXI$ne1&[IPұA\㊞Hs[R} uDP@O5-̲K+c/#'I$ȩ(-_Ah^k&w’F ԸM6}}/ȩT  ( ( ( (F,r:,¶7 2IkT2 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( wAKк=Quok="Ɓ!h?_ 4Ito^?z|'AV@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@lx;FыY%]?zݨB5➑c@/UpFu~z ( ( ( ( ( ( ( ( ( ( ( U`iJ*U"V{ccxj;hexQui5+3I=q2iNv-EXRQZOk—zM̷6Giy9<|weG}:x[҇5?c_I><_g#$Xo1$f\nLξУ$q$vI!gع=XdUWm')ArW]hxADZv]g1 1 IKQM[Nvv{ٻ~]N" ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( wAKк=Quok="Ɓ!h?_ 4Ito^?z|'AV@P@4(IM6yZ($2} {B yJ߃oOhrhi>Z_Kq),=Ukq=-vt(C;+wld^LD#TVʃRAȡWiv EoFb347"ٗ'qb 8=WpoCOֹҭbR9S&十; ~9)E}4#No~ 7v5̛_FzG]nK{|ĵU2چv oe\]z ( i.VoЈETRqwK'm;iMB+ 6 "u@K+eC#lwMY'K`I4.]:;9k]/+je{ku pKf HhUζooȩQ/Gagc+.w/"&? Rmi_w*+{ZovFEh@P@P@P@P@P@P@P@P@PҪ$ك:x믦KqyGYr[a~B0̹u:JV__ؗWei]Hmr13ޕ:-(dby.h#JQ'Q`eIak2M==NM?Muwߵу%-__]m~Qgizdr[ݬ,pV`VO%"r9)*z4N}ՌjJQZ;m'n`Q#ÐZA@>IJS͵oEgJ8ͶW~{#̂ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( wAKк=Quok="Ɓ!h?_ 3ϽQ' ?ѿ{4y^49xZv1!\eXCI[4Lݜ]w_O&QԴ GQ\ySx˰9ӵsŒ)^6֩^?;n٭7xK^ZCy%=vJhnj^ZOoԹWrW+x4;'*܋o.p`+s>NwWWG4ݾ=h' bC k}2(0mUB| CrqU:\{M]|ȍV}Uc5.(Yn~7{D#|XgCkym-ŒIc9#)vsMBgż46 c{Ww9TnXcA"4u'3׎hڶrcvn܎ygx=:Г{ +](7FZ\2b>hI+7"%H"ydF8jvl`pA 8.v7.q-Iu0NN P:{kFֶ(%ڛkp 2P^zSiRM +Mbqygg\u֪0pD׺eեMH-,F'8ru%8{tl azDZf>h[.-J9_asMHmа@Ccy❯~}t B+ l# {J}v}r],V7SKĉ,)]kj-wq,6W2KmR&&3|t=}(掍ɕmK7 ֥ͥ BlRI*N}J5(.3} }" [Q'8hvKybM+BY!Gcݼdj=_+[HM%_yZP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@C?bu~ zO^j?xX?- A4yDy;zf>! ( (ΝeqieS@zS)(۲ FN#GڈI]M;2m -̅erFpJN2oLJhŧ7tֶڳDI{TkM?%s(Mmkw= hnmmn ?Diߕ_W?Χ-[$}ky9բ9mSgƈ%'Sv/ԉqV|?и|/#>|G4[c*3fV^ZVٽ4V%"?ͼ3Uzb@$5-%)INian&S-w͓? wTRiv_)IivpjVc|h-*7mRRQݻ//ͤA{X={9,w/''~8Zm=;~6+6[s5K!HH >rmz-ͦw;˕)X$1H8e}K]nk}#6~в\)h[?.qqht+m&lL..b󊘾Hg${`mߥ-_;[=+ׁoHΌCK`c@ ɽ7;]uzmni2<2}Gz+[s_3 ( ( ( ( ( ( MV- \ta޾/8kc1+K[w} K/1!kB3a߅VT=Ur([_rfUUi9IRamuk Eg5eu.wk[$Ϩ #moq&xLD\d$1I{)rx6\[5\^5X/ d)I5~>Moqi%ًdg71u2zK~?)|`u̖Il//uv3]Rp0:Rri{Z*ͫY8O./2雉mY ᔓӓiSqO4In: k7SO.c̍ 0 ES[amտ-wZO@ |Jݪdm=JҧQ_߷mi}ڳ7T&_Z^DP{ckDZ?ЪjK[Zeq8"\6?x?A 9s->%龾,9m?_遬MYNX85tݔo_p9۪_HL~fc,1"''cw vvCjU'u{}?BQ-`ܷZGQagOZBQ֋J./Wȗ_i?suڦ_Apo^ja+N{ȩ9\O%Fi9qi_?ݚߗ`Y$s<;LxnO]CWnn4]"%poT-5VR!}DnxYYlH  #֓?!O{\(erpH <^WR2n.!JKoKk$n->.Wr,*8&c(s{sƋ_W:Gn/%{[/'I"㸾0YcP!9 2{BVWomV[Eҍ)z޻Zy JktJSS[+\+)@ubyAdVXhrJWQU_4gvk__bnVO=b9Zt;.3>q|{AWN|У Lim{,onId1 cAEEE;y}n))9=lO+y/%45 LA߭-/畽(_~<` ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (c7hZί/BKGB?տ&<489H <k٥G|OԎ ( (Ν{q^we)#p:vS(+1Ӻ FQS-ħ.uڈEYmUiܡ} A+HɮFx_^}+DٷYw|ۭ3Now&Tx,-1$?hY3c?hԣ%S_{)'3mN\I,h ۰hS (h<7,FǸ/$O7%JdI%;*A\x NW{5vJPQZڽp^=dgCM4+^}lCqH "@ 9#zNw7m5TDmOonM--<}۱۷JRwGy)(( ( ( ( ( ( :5o YjGtK<.B a({z8;*ۿ=:jSKٿxỤx}i$HYpV'J@8G!>Y)y6"9*Rk{e8 <.d4P@P@[%6 ;i(+2{9jK5r{@wcRP@z-V"" Xcp'N;i6}UDE} o6¾ҧ*F Gօ&a:4AUT* ݍ$^ ( isUԮ[_:I9X Ǯ2}D!+"7$S$( ( ( I'O.E*2OpI'm[\E<$ c`J(Zֽ աL7.$1i[GO-wB ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (c7hZί/BKGB?տ&<"bO^?zY@P@t+F+K("׿zIE]&ݐj6Wu춗"8t'~FJJiٗ|+iootd,+3$tVЊq}"g6V3F-9˦՚ K߽eX( ΓZi+Bmm[WD&WwWkkuT `*#NLu9n&Ȍ~{[̑έmʜdcڻX2x95|;-=][hg1q8#<Ku[W}- @v!OJO<hpV?GBT;QtPÅۀHݻ=\{1B2k?Uᵙ~䴩ay[~|>V1fz4KZ VkgCW(.Y4T0\ SJ3qJnqRmIa@P@P@P@ѡ|^4Nm̍{ WJ]&_>.úT9ωRXMDQ}p1;ld'Ny'޽JJ_(y'M[D[m>uwePcG9}Զ?(w--C}ؙa0a†~>$ Io.*/KO"M6D&Pwץk?z _RMCM8#./s !'iE]-ݽ47&{Km9$+h+A8(7d=hj1Qv/7&_bFyt{5ly[Ct(ohugM ? i#t[YS0nSu(oz[C+Fo閒۬wVH";B Tt~UQ_jok=5H%H"FO }ݼkXYWQKi!nT;o]jS7[e1N;zX JֺOS%9*wڔ4M;RQ #PqU'(s+U;le:|N>m#$TcӮ8YrkmK=w&Z[JbF,/R5,!=OnkHSJqkF~.KOq? :WaICj&EET%JE?`/- KK|;18 g:v懟fj>󱙩ȚFN\&[x)~4IҴƵs9 ZKe96Ƀ9}-{&Q6̟@-ԒKr 03sޮi(5{BO%ŰMEDK˾˰0I$uݪdR}'7ȟ_u>P!I1U1SI5nm>Mx_QEKLp=2}kߚ:ͷF>N=_ddxgI}_Q1sI(eBԜjMB<F ;V{sIZJ߫6])5t@{kkap.?oꗵTԛۙ_:qVV۫kejw_cImJ)oʨFY(Ky]);r?6֓iYyhńd385ۆu[r>e~Z}ZOZ[5K9SkP͇ȹ95N0JRWkҔc4!u%Σc<+qg׿Z8reTTi_6^MO:MƦiO-aɌ;]yEۨ%J߆ oeݸG_U{}w^[I:1$w#ΤiDiC?m{EY]ke~#b1 WG\)l~$+͹&֭//voi6:Afh:Hĺr8jUdvo.XJbW c7GFyӖ(/TBeWq$@9ҵIWmn|-}wks [+).fH:MnI&Wo/!Bs ӎ)|ĩZ?_a}ViQěw$#'0`cRRk=V˥wspscބwEZu E*-jOzM5ܕ[Cjs ڞXc)ib2Gsn뿘(E}cV7捛vkoN ]O5I+?dͻ9i*)ElT-M;j042]*&o*RA4اVm4"˰HeIg=X-rjz7j~]پ7LnFwةTIluf![AqoczzwC{ߨRQqkċL;1G B$(ʟw*A1FN1Q[%oI9<Ip;N8/e%Wo尣ڰsr,β9xQ  ۾ץWQG9P L@ADZRQ{n8'N4t NNݓ_#F0^iOBH6Dx;{*Mr.ͷ]DY%rP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@?F-gWt%{v! ׊zEB@[TI_to^?z|'AV@P@P:Q#-ħަRQWcIdƝ{-F+ ߵva\oIbU$"nlp 3զ~IIϩ6 v[m{sm@~VrM\f$5[/ʚե%4hٞFRlr2@N**iRnT2۽:Z\q(icYb8?{ۭ:mvOB).͹Lbڻp 8Mۣ&5[I/o t.`)o?fV .hн-/|(*r;J1Rz=5: hcd.bO-űdTdr.fdn ؋V%XN@VJ=mn/%4(]Nf2*Ժ.r1lS\R]UNG,K.I寕I3gqLnm7uc`E5ēA(p˳‚scڅ>jomgI}:+yO#pxLNu52\OȏFӎq,a|̄GlvU֚ߏܙϕеl>ͫ琭VO$B[J{uǽV~')sB;;C<7lid搸܌q۽7[?oUKt$"Z^]R)"{KnRF8tNNotb]f]71G Y]I^dsӌb7hOgryS_㥭 =ʄ"1vBO35ڶ-MWdIo 3D=p88~U5) ( ( ( ( w3'=.ͬH[RGc}!ӡ~h=7(FK\t=$qm1" ?7A^ biu]mtsfPJ8LK+ ԑ2`?7CwSSs|ipm&+.8af@CS&W?ԞY$H/5'g;]zp1f/=v49v2OnBp1ک=m%KHՂ 1G$gh'\h˥?"ݬoo8D889ЏlsE5$t]xz.zp8v $㭿(TmG_E1f+C?e%m9Qo/]'lKimo,Ivrinq3v/}E0SM]l.aV01Iݟw'%V\}/bk{9Kn6l9q֩A[ʪ"`$wXfb_n$1IF;`YgeΏumerw}1FM.u"+_qdvtwY"pmvoS=i7o;uMWeJګ\v;#SoU*[~hէ C!Cc'j!gkIڦkv53;``~}G5RVL$k{%_;FP(I+gM1?zn'9ٿ #B`[y=XM{v@#.^%[j:k[gxn7"ݰriJ..ϰ5+ۣ4,4Ki9j2^\A[Ŝ_oHc9xJ2QKw\ڍ79;[ޛqvno&!6z :p2556+[=:J̑  GBZ#'%ʚ};ko`Jo2>ITwq4RMݧTITZv]GQN'l`2z[k)ro松մٴ˘♣eeHVDngרFJ0O7=/J[Ʈ8@9\0'fj+ӧ Y/؂]ݵ\6KgiMT|ͿeԷ(u"_C7f`e $䌢q!~V?oB'hiwժϬI[B vr'Ud^W֥8BsM~\0QA++jr5eRyJUMlJT[ rB$y3B'#Wޔz4DS(O2~H'+ O-T)o7pe *Fp>Qe&=חW, Es2_ZGȶ%spbN#50ɻ?Aԧ(NYn~VD3<0N $0$ӭE*Ҝ""AFr]SWBFKQ{ymp\Em!::dV^tմ]O<֘"In܃zU[}O KףAP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@?F-gWt%{v! ׊zEB@]TA^f OԆ ( :uƝ{ݔ+Q۽LƛN5ۍF[L׷j#d 7PYޤ6iD39Ǧ+H˗^Hs\q ̂;5bcM(Pqnϳ_T {cVTnyl R|Kc6Ooka46$R~۱m[?ЕOR{mx04IOBW8\u8֩qkfpN*OBaqrT\oʰ`mAԩn[}Y/mc3ŗ?p1&1z-5Alܣ{=;7,Y@>>7t^}F`jѮsFF[RJJmz[8Z+(kc%}f5F%.#'u9r%ѷSIWѿ"B\J--|)o$MR_ WȎY6'tZӝZtrU+6?\*-K.wˌgF_֟~k_O/X3B$({pyM;zCN_k.h\%wsI'҉J,Li٧}wQ7V̑.VE۸ԛmo+_ppJϥ6K47ء8mF89i%w{_pO},kf6?~#(69pҟ%PIr-?#R7b=s2ŧ,HQ AURn6F}2sH)( ( ( ( (;]?ź|:Niue~ZDb "͜n~lu_?ȣ&𹣡O+^Wl--[y^R n 1®?:rՂN1z?KύeՌ{ , "xgWqKs^ՕhZoh޴Q{3XKaYA?c@p\B8rRK(wMufuTj%Sܠ۳`gjʄe(tJƳkr2In~`>^TFIN[2MJ=KX]ܣݭʤrOVm['fI; %(fgeyk$&ׅ-op DZVM\QRY,#IUw2҃Q<8ir> Eϭ?CsñVv1̲pΞV2i;{=zSf{)iWM.+%36Ȼ8q[T;Ԕ7";m7JA2γ(GW'oN\._tվN ZJ/#E['< Ftњ}bGMgi{ Pg2cRsԹkek (bhc+]+c`OE:|ryZ9^*7ſ-!t-m,+R>Kԅnw4i!,F0 p pr3zݽ6WwKi+G_u-z۾՗dUԵU&y|wCY={bp#kԍFM+lʷzKⱬ6Lꫀ>588ÕcWoM g]/J\b^s=\T($c?IB[E5\Urm7nܠݖ$.QSb%TcrxVu>nw-o45?ZOn!<=3ڱ[I_FU=~3Uym?[G1,2z_T^ ' ~}(O<` ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (c7hZί/BKGB?տ&<>DM}:i ?R (,WVQn%8D~2M l4m/b1\DpON4ӳ =Z$C{ !n"e},tbky^#i^(fz8lKOt<͙-{]bN$t5-.^eT't;DvoU e=H;'84ҼUɔŋ"R}5mKݴ{r9_K rcw ͤBu#AqCm g mukutOք~m,7%B0bLRߵ}lCU.Kcm4u-LN2r~O=3O~^օ+~}!XE:BzTӊrK4{vWs.+ݜh$\q+՛yY;qumϺ[ f1!s'9=;zJ{ΕV>ܫ.[Cs_ۨia@J0~o^(OD_%ѠFoIB PO|Uӄ\s%[5E˿G&~mpJ# uܟN+8MdʷXu%ӠUBCr xDʼTfDC  ( ( ( ( ( (#eN/-fw>c%@+|OWI]-5_/#$/Ma>Ȧa@/z6>8 ^y&2%n.Acs"z >\v2{9>A[2M]P@(M 42+G 5,ѭlI&Ec2'b@Kwm-̖ hr?* ] |1$QUOJi6)(AfHn epA)E94Q,^@!YјuCV]Ecy"\qg?Naef+mTʁVN8<ڳu"qkuv^mke>څ{EJw*J|(Xߓ)m(vZ}7RGm3d.8''y1 ;Ofx#ȆG,u%I-]BOnC0ee# QJ2R1.;"u صF%۸`!PM)N1MGi$ךd7u͔PIss12` Pq[~!owLӮ98̮^E@:XNSQW`nl}W0ol@F>9%ki]z2퟇ ڋIU$ݑTάa~oɗ rJ;խl~@NڪRQa9rto俯-`?bWǕy|<~w*X$їVAfɡ[bY( RinN-$RQ!@t+Bm&`H]dIS9(E[$TbVTHP;+Ÿkhx|m@@'EL_7Q=Ao4'R$\S]M5u &g҇Z189Pc ;1j{o~RO^k*Xkan ,F`9a@r=N餟@|Lذ-f وb-OL{UJI_fJ3/z|IOEosҔ̚k{~XK_ vLfƳ|c ^~[qO[Ii%=H'ãc*slRrONPi>_mX,/\zgr.i[@?`.ުQ~Z\PrԥВ]l @=9\6?ܘJ1Xt/qs peUu'(ϕ_IFz~^n[ʺǟ!rڸ$4N_i{ȒZkq $AЎ0AZ(>)j15q*mH=O9I/7NW%Ԋ ( ( ( ( ( (=ͷ4X,ږYn⍕8BϲW<Vwg'AQ^#⎡%m;$RPm%NM:n4E}:xⴇPU]8WWWWݝ_Mhdit:q+l{sar^}j7+BM>^eoyGü2I-jqrp_ 2yVی__}_[\>mM,Ji2gݭb2A# *^ϗ{o~ۦiijwM[S8RPFRqzrwwM(Y*{z$.KksDh lu94T6\׷."xV_@TI31N~_<7 iNsdm *H\c|'zҪ|O-"ӔZoխ? 8dO+vhs+ztTV6u&]XKX_#N63zxoƲ->qسvȬ!yyosqWOߴ!շ˵gGq\,Bkؙ_p\ +w֢IK߆O@.ӣYJj#!wn: iOJ2 5Y絙}]80ojIҏGOO"[MY5EЈ`m:w;k[`kM^t0/Rvåȼl,+n=x;86%%e^ .S+ƸC)$.Nzy5nj~Իdl.&S:7ЃZg/);s;o?gA9n۟¥kyߕ3gڱ.3ݞsZEOҍm_צft:,#y2 t' >kJ2rI_3dPM2en5+'wC >@?JҢJ=^vj?~޺#{Pm6I.2 ^[ ԜsYbZ)wpܶiv_+dBxWT $0:b33N8=kZݷi+_vR<4RZxL38K\Ƕ3`Fy&+sNZi+EY맕=:k]F܋\0q {XԌ=fWEڎ5(m-Il#3$q GEPK18Ͼ9n9?V󽋌j„cwnolr#>Omm4__.dQe$Y.x˭A";SL[JH`ҝER1{/2~]tF؏u;;Nۥyr2Mf1Q5~ҶY/bURޜZKE|m-Y&ki^]6I6*9lٍԓ.w)$lʒ를O r<|ݛ}jֺݧE[~;mױo)vmHknܟ3fsgȹ9/9UF~M=n~Auv׮qcc@DA\=qNpZ]Z[˙ NQ=KK g4qxO(}TIH8C=>Q8ѩ|DrjKy{VЧ|3wy#ti* xN[r/t$攥ҢP%9ǛWWi]i|4//mbյ:>m;[ ->KBvQS9EԼoM=bo5v۽|Da?:h6b,m\l{8׵g%EE_қm'O;}J$Pg hl 4Qb3> ?AzVnZ>wv0jik~]#X >.KӤk0FY!d#x5 +noZVk?ﶷzb<=`КIY~g7[P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@?F-gWt%{v! ׊zEB@W.>}{4y Y!@P@t+F+K("׿zIE]&ݐj6Wu춗"8t'~FJJiن֩q9%Tq'\sVI%'k>:}Vf)鱛-A8jn۳y%){hmhfG%Cg-9#9I6iR%{}}/:}D]6j\q3jJN)]ItK,,n371W%Rq99sֆn+WJQM}!onγct)6aD`ۺ`9ɤM:?e'& +dx v) O4>[u@(KEb^ç޼Kf]h) 8=IJ}뮞'.U);+ziXZ߼y1U=)98]TM5PiڌmwtHeʐX$c7m?x,!崳7/*DJ ۖP#' Qn_7m?=jWqsE!i}-F=q4Z xTyo;7g9gǵ:rw Ǚ5[{ևT[ܹq/F=H#?SM/G[K#ˣnʑH#˷aՊ[vWr.pTyu E59m]΅(`6 _k!5,.g h2pqBz5 L,.g h2pqBz5ZA@P@P@P@P@P@P@~m}iWW0,3Qdxr:_|D1.9Z.:>u))%#m@t73iKm'u  xF-QQ9sX84hj-g|.#t +Iou6ػq%VvlRw/P};zvIOQŻE'{ꈣ{im὞ L܌\IE'察ȟh],"K%vV$[s1 Jsb/ܚK'b+M*{i/TQqs,8q8kܿ_su"4W79now&0,28<ҧ̹:K XV<ڥ7ls'g^1vv ;C ^DȳI"",ge?9(.bG̗woȧgcbe&DdVRng8z#=qR4lz R{(1r}1ǭg%+?7}.q.K/yNJ/Kcy۰ԝaGb {VpiyJqWb֭kkoF;Y%h$ U]E>kmo?1.o{[˺#O(bc3F))?oi ɩ4mY]ڥMq <ك>PۏzN**o7~U 72giy\V ZSI5nBM> 'i[}ْgEi$F _D_FQV;OܿX'L]3>K3&Ğy|)ATv{cf>[[V)g}agW6 jM9|3[ qv)_NåhŵvO=/t[m.] $t ď 냊I;[|b+Uu/#8c̅B+c ʿ2#O]SK6ۮ/4]: akku2Yٮ;ƥG]}?NҡJREo]]S:VkY3["`˷0[U'˲$}f֟ܮs/v.!Yml'uƲ* R|N=ZY-GdDZt֤DHA L(qzRz_?#ʤ-VmoX'L]3>K3&Ğy|JPU$ݭ;ٺiuzOs&=6_jofkq+bXG皺tѷu& 4-6%X`~u2(rkXɥe*q[;W%д}9kxkkW謸dFPcӂ)W%J{]5]*pG"i,+O?,P}mqۺ'Uʢ/OWHvX%HJ˂Bōp~qG9_V^h)Om[kײi4+O_-˵-Uq ҲYΚvK{~=ߖA.fڹ% $M LIcV@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@lx;FыY%]?zݨB5➑c@/qW7׳O^'EV@P@P:Q#-ħަRQWcIdƝ{-F+ ߵvbX[=6}\()JI=O-Zguwbt"ۖv$+ԟpA5mG;B44}B;Dd*lRP =^ ]o/[$/& .!|6y8zqw_k._ZxoM>Cpr98ӓ{m[=,-VGC#*# szv~dΟy$q#) aQݻ~ [Ii!K[+C2E>b۹y~1vnU\ZPԭa{hfynQGdrr?*tHhxxIuuz)D~EŮmndh<ɭq*9[FW_yI7.k4%Է R2ó'<>ԡB9(diYɫ̖fL4m;}M;7~e˿>K8[O:6 K{r*%kkTq^濥 M G1Httr}*iǟK^f&ӧHYmMdXvR'Uz1װ»bgU$ lntP@P@P@P@P@YSl^d~uR'e'' m 暻OZy`emgż0^}b`H$N p:X[RV^Ki!?(8 Ak'4i]B# }ys9'n?r"y,ջU:VR> qަTT2UmVȱZۘ&C<!AW8)+>"2qi}uMF]FXD(E15I=I$I&cfz(dz- ȵh %*JHBaANZ}[~8S]KZ_Nڈ=8#q'#,A#`gʊc5$ҷpUY5],[^o4Gv.gʚwٻreL|WrEqsoy6>]qt.TjZl~c[7Mҵ[rUx=JT_qBRo;R-溎r,wP\#|#!A Pzhu_}b[Ϣo5ɞsw)iKH" 0F܎*$=JWwi/~2EvUwkq\}aX J)ũI oo0kc ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (6<#v_Ŭ.ĽOn!s][OHZh8٧/CϟH ( ^iױ]Jb*JiQoeq)˹{v1QV@nJ:ẗL$noH3Z)4]H9odQkIi%%"gGQ4y$Q̚In &l;d`m`h#և+~Pi_,!A4fa12>Pq1MϚ{~iuǥEH5 X$Xm+|w3`89^.=wٿēZ([Kibg/#eB8'I8r\k0jJMoՊv6G~E|҄驴n:jWb{[#M2K>eݵxF~% (9j\˽M;vsd$cW~RlK}5d~4AIIws7K~-] g++;Mr_[pQ0F:օ(o_x O$;[iEqf1xG'֩T*•eAsxH?=UW5̶5;{x&O/84g ۀQ@뚨O't~}נnn'ns8#֜gk-GߟjzYˡs8OƦi{_x_'Ẹi/,LxTMi8ʞ9JpMw*7z4VB7;6y3qfJ( ( ( ( ( ("EdP@E( 2)dP@EdP@0 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (6<#v_Ŭ.ĽOn!s][OHZhʸ of OԊ ( :uƣ{F[N߽LƓn5+:[K،W:ӿj#%%t 4^V)YA!I Z)8͵oU4[Jv.3%d Al3{]%MI-lK r<%7, 99\B]143O0NyIv!IR0NF}Dc[~_]\oO -Qhܔv'@1ޕOgo)Mj_@1[E!7uj{4FI-adKuoM\d۸b9pkTj^ݿK\g/˗z8/Rnߟ>^3]}]f.dT)$~ajvD5?ms%Vm7Vۑ$dqRR]9r/4{g{B2vPnbp}ON )^]z+ 3hOQ8-c3+]21 *ym祚_N++kvdғ,ܺmF~玞TVe g?Ԗ,IlYbYi*#w9U.Xó#$Oo׍s4ob#d TrIlkHƳH/|!>tk~m/Owe+_ \Oo HMmD2I = [m]4W/F!ܠ@ݜ#├[nTf䮖_CRC[tb H!nwKZь̧ ,L\ Ţ۷qeRR/GWM%S>eW?q[ٽŵN`4[0G'#}=T̵+2P@P@P@P@P@KZ[ga1J\i]ح.d˕8-S }@Tڧe*3OS$jW? W]L_Ev_<i[ b-S|OS$j/?:=GXPitrDҋT;]A-wcs\ZnRA*.et)+; VHP@Aw=>EMrڹ%GQ׭g)5)+T:I&v_<~&Txy_0u4Ze +/I;/^?-A]w1M}ao )hN,ض4ږ-p8!WXԻW*suQޠ։XainaV *w0 ( $X67Ew!e 02=FA}l U̶-:`P@yeHFyUQPHH]NX`i&M;1P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@?F-gWt%{v! ׊zEB@YVA̿^?z|'EVHP@P:NSG(tަQRVcMtƣ{-[N]۵wcŰY#*e*i!>Q_Ubdkw/Y0idO:`ŒrsߵRՒ_V3.ko'""o4\,YC.1uZ4tk$;$20)T72:Tĩb"Iϗb\{Q)ݷTi[z\z5Bvnn:r 62?g/c;wt?ZJ򜿛n_'?!aq,L׳wn NS5+r=-l[w2$9 qI%ХMs9>Ԛ inZ<',7 ך'%(afٿġ{xVqLߐ$1։˙~Dכy`j6ln܃sy)s;M'E4Rydn҉R;v08<>ne{~黷m-'ji^9]EWMJMJ>d\C&ڌܠd؎JJMڿF*\jVP!i. aN8 W$|q҉Kua8_D[>")-9匙#088gIuwP\-صmgdc'Y .NBh9vQZ/\'jԼ o+u7n=Q\?Ȼ{}gSP@P@P@P@P@^ÿыX?zW_-{۝_Z}7-=! 16Oxj)wO1 ;{7kOU?ڞ>l >.&?Iq6NQW:{ۙW߹1:PwV%ݷ[t8l|wZYMe~-XIq`SGtЕ:r+;Ge~#i_Ko{[x_S'=rXn%+5/98 W=:$N#u"8ӌz-OV~ dKkp'ڴԕL=9wciF;)?U_~ YtV=H˲6# Ui8ӔD8~g~𶟠jzdREmd-ķj*fc 7t RoY[Nk(.׾7WvYIkds/[]eiS&oe=^}Д^0E1RsԫmۦoM61©'Ik%WK+φf=Ki35t٪&Z6Y$19 s@+jzs4ߙT(UZn%ׇ0Em!Ӵ[{֏̗,_d 9]⥮9zm~:auk|߾]k¾lo(n]Y7vm\7ר5R#].w{uoki}xJPAԒv.λ75#|aK#KO9SW˹ZjvLkk͌s>%yxy8νr.[aD:V66֭at4PG DZn1O䖫5u+MXemv/iR63g'}xpVSEoK$ſgNu)W[^wōIx7X6㌓֧N mnQB9mwKN͵l )EIuFu,! ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( wAKк=Quok="Ɓ!h?_ +Y sֽE|&DP@YӬ5ح,2Jp^e%v4vA\iײ^bОQ)+ifM{x9aQlTgֱJO3qݻloKmp->{wQ)I9=R_2 leg&1vK {cz_Kvo!i-nb[+;m*x<׿\Ř4{gkU~\Iy'g8օ$&UHP֥㧚˗|- ;W s2 ӌSq^noHS|K[%@|6m-28MŹ CNWЩꯦWoM#L R_ݼF6RT|QFVߗw_`71 qxTZ 7%"ݱEn9 wef rSZ~_2Y xI[%,C1cw^ٯ#UɤK#c2jJNBe}}gVt?g׼KV+x%euIm d"yM=4| +S,cՐ9==M84rz]ȮFuũ\Sj1c˺OV1n1p,7n v߹,I{3s]Hk.@RՐHgBJ k=]kD3ΏnLοr D!N_ }p~g($qMݻo.Su JXr^\IpBbjǕ$)HHD! HAH-Kj o.+Lłsrx䍜m)ɶިVHYm-FL-/$g$^28'YI;3OK<.4e9JU$՜W#{+;2Eذfyur: ^T&>!# dhA0j{9.gv匬wרogn- aB1`}MbӒooY.~.XhU]@ H تsm4w؅[?Yy.]˗ؼ-nYW*I$Rj< ~tӰ~{#mMYRH,c͍f,%rpp094)MY F1wLKD؀V] q4qLW@qRml>QH#,~wDg eW.r]k5DBztUIZG{taYX!_8p[1P{%{ˆ_.qM.\j(压dy.gwB!%Qʭk^n˷}w$&.hPQ%H_1ҟ*5aw %Ԧs%gǛB|tzJ[ &VԮ%Pb`чB:vD/ď9 }N{Zi¾̰ުR3ExTPj+$}LЀ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ݡ1k: /S۵\VfS,hq"{4pO~j ( ^iױ]Jb*JiQoeq)˹{v1QV@n4DZYUlԌ~֑8Z42YI҉ }y4mn' {]6N?lN^/S7bwޟ{}I<־eՠaܸ\ok_!:Ir|,̑k(}R8>1iFQXi_;l4ES2K'0}yaF99ڭTjlΗ5~z~o7.s,c98%4:wrw+jڭǛe`\̸|3pT$ܷiEwRm"66 ;稫mI7ݯTfKݿvѣ#ZE)&[w\|ޙ>g%aҦ',b"Iϗb\{Q)ݷTi[z\z5Bvnn:r 626u4gǙg\o򁻧J^kB+F1$!o$k"o.{rgRM4?q-E>dV̥.~E#rIRKH! >g?ǩ4 ( ( ( ( ( (3HJO" O!=+y (y ( !QQ`Jv(e+ •'y (y (%NH(S ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( wAKк=Quok="Ɓ!h?_ + ⮹{4yY!@P@t+F+K("׿zIE]&ݐj6Wu춗"8t'~FJJiٓhq2XAo,>U5R&bnď=OSBm{wG!I{d ښr,dEbfq)Њߟ. _I A7DvC%lGݻ}_~Kuyev{zaD]HSǐ@ϱ>8F+Nסr'#͚/1 ۖ &x'G"u_מ;~ F.E T֦#~\N nJQmtI_vvy$|g=3N9/hffNm9fxV8Q?R)F7*rqkqԶk8b'm*[zn)&_FInȦΚkIn,Yw2܁,V NkYtȮv֚qY1n~l$S%jc&v,`,|6s(FE #mpOp*m['dYFӅݳ$qDpGS{~3(Wٿ~H<;< ,rmmYoBSW~;'v .by|nmlnNG ' UTSkvh3]Hn$fa{7C}QZ_[_!NrZl_oĩil/<g֓ JvcVdHX)dEIzx[vW~ʫIl󽈵mli4Y69yDV4Iܛ0MzO ,r1:V[_*'o1byvŒ݁pJ~WjA S5?x1~{=9[[;u淖׿Δj۹ԕDbpA6v._3BFⳘYIBUܟ<2q{֕b:?ИMsuvWNg0ef1drT9=q4 &?FM[#Laaxpv=w?B]F鹮ߡxu"ʹryH،uf$:oZ>A_/2]׉nz:Ks|JS.kfbQ-o48یx0)ͫ[ҨݛVU|IF+;2e̲t x-kMn 'ʯ_*EWC+8KuF APOT{{~BQ&_Ήv]<< ^4A'o{~Ӟitf 2 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ݡ1k: /S۵\VfS,h{qw_7׳O^'EV@P@P:NSG(tަQRVcMtƣ{-[N]۵wa^=`dn`thǚѧtZ8e[.I JsF>#'[9'е}Cq ɣJm 00=ZqWڸMڝEqIoi_ODdW_:9Ga u+3;$rTF}<}m_q|Fbؙn!VB':Q)]=pt6}>M{KD[kޥmvK6{(Fd9?;SvܨC(E[ԏHԅ#$'@u<6^b2q}BPuԞX"{hWN}?)wMyXPӾa$x6 QIvD'& OTu;u=ۆcRSj%oҹ/-%O%,F߭5;m2}޿oY"heid3dq1'=.k+GA>e);bKK5ۢlIb}2Ry7mcG*z"ge}msg`by-6?}c+}*psVouCjF"ϝݕ8ͬ|:mkw'm퍓g8o2yU9-+_K^=mM8Flѐl'?N &&7Oi?ԩy5ƫghijI6Q_h3۪i7fah͇PVEpё9$:O/9$^J#HZ嵖F$I;1PdoƓ{Э#Ź"''ݻ}KKJzn%{H-̅RToǘpF<9,PChUG%}zTSQȀIb)ze2@۴u{⴩5'6Źiɽ$ nJIlmn>H|&PʯnuK{g(d󰄌 @jQ)ۭ釲|/U8csHvŞXʑZv??OdΝ}Ļ3Vf8G.s%:nnM_k]Ji\G H˰S8ޜj[Ti(],.%o|Wڐ&zz#4]̙Rj5a:7k䃷Z+8?;T/˯QOudҴЅhvNp~Qf+|*m+#ⳙan,#>lggr(sJϦt ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ݡ1k: /S۵\VfS,h2>e|:i H ( Y\j7ZYDeJ*i6Qӯeqá=;2RW@N̗Gd #K&ϼUA$~+X%}ӌVV(,%E(&)Ď#b+j;J׿Msඝh"ugqDkۣ5&yu2A/E Kuo јvMI}*FMY5wc6G NI>7ZE%参ԱvnO=Ԥ{]{GḏwcioC& )E51|ӊrЭ"O#Aq1FI;֭A5V 'Ε?зqyK$(\LF![-׌qDmBM_ywo N4ymad1 XqQˢ-MoY=?ΐba͑I9(;:YÊ}яH ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( wAKк=Quok="Ɓ!h?_ **8ا/C" ( (Ν{q^we)#p:vS(+1Ӻ FQS-ħ.uڈEYm䱺Y  ʰ#b+HȔyjvp2G4Ѵy}p~Ц)I7PԭLdDM @VpCnCs

    wFGzVfWRƟ}wV6Kc!]SM;%s.E)i oW t0(R]otݬ15k,GO-yzU rs҇/w弹x'e.9t\s)dMպ_D|{}RhP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@C?bu~ zO^j?xX?- A4埅Ys2{pO~UdP@YӬ5ح,2Jp^e%v4vA\iײ^bОQ)+ifKGyyveg*վri+v|wWǢ@GXR1Kh`k}c7-xbc$$;v5QrV?,KyCqԀ}z|mC[;~FZ"bs5!l*͌)I/fKNQhPL.HGbV!n+\ NKR3$y뚤%{~pW+/$k !d-efK>946l''N.OT/_Y1mmRX شX+n);89m1h1z~6IP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@C?bu~ zO^j?xX?- A4klfr_/׭O^ 'EV@P@P:NSG(tަQRVcMtƣ{-[N]۵wactq`F>Vّ([ɗ-,dih,IM#rR|n'[]yReH ͸iw&4ooYsqp/"!q zۆw?P- ~Bϭ,wl$(<BɧwqM6dQ'ϵ>V)4xOIVKiOv|ý  jz괵btz^869d#Q/3m>'nB[e'1\cϓʜ$&ʖFMݥc ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (6<#v_Ŭ.ĽOn!s][OHZhr}Mlds_7׫O^'EV@P@P:Q#-ħަRQWcIdƝ{-F+ ߵvejT[+F 3IbI~ڶtwcVk~uZ[}~!%ſ\sw9cnk{|ɴlkOĮ]Uݻ}:#Mu7Q{?i- " p$(H(XN@J*2\k)+U{-i=휑VO3E"yli#OsB]|ޗ0QqϠ eY,LfWgbG oP8-M?$ɍW}:^M,V8o'Fdy_!:VV-I&Ȝoǵ^njMǩ(( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (6<#v_Ŭ.ĽOn!s][OHZh7Jg3uSzp~UdP@YӬ5ح,2Jp^e%v4vA\iײ^bОQ)+if\͵ީFdDT1'k9t_1)'tKwo4ù"UO*N Q?xNiGggvEkዉ?imh@i3?B9Ӝnq~Qffw{V@)*7g9cމG3qkg"+`Ko&#,3=9FrM+~ cG-ZgEx$1t,67L~&g-א:2 ^}.^h%g 6N {TzϤC &hX-|\9rݭ>>i6?ԃXMov #$GP)N*.c>thM7HK=&dd( 2Y_~{qI'}6Immd8a22NFNdkDʭO4l.&R+틤Dg# 7oU^ʟٶZ C$j",y#$ӔR뭮Rw.18$N!XvlgӜ9[ȅU+5ثwqw!QG$nf`cW*o.y%P[Ze`m̤y#>F}|xv_* [=#4xlU+_ TQql4 1%#ݴ#`(ɮOQuq[C"^[V]&+m,?IdinCLA@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@C?bu~ zO^j?xX?- A459u3zyY!@P@tۍ:+)LWӷzEIY6j7wn%9w#nF**mݒi7M7f7LnR3ݔ{(8!hň6XǚJ`UN|KmobU;-WRY4+w(8#)II[W\qb]92ݥy\`v:J\]k+ [[]ZP]7sW4]}@ 7 2) s R_d@߯otloq$h|y_nZ|5Zn/e9_[J m\F\i%1~57W&~m^!Ogim,1ϷzqJ@NRp3z5>#8ϖ Y[_i3,M9Bb˂qNsr_rrOfE EmPZKsm,[`cbI%m1?>߅Һjj>] 'Rɧ Dv+@`N =rƊ-7gz .,| +,dtNrRmqBF/֤ڵӬҠ-!F NHn=+/"h{u x,xa(da c̬[1>g$uo˯!:LV BE1E8a FdWz얩md>1zp/,h$DI0FvT&/q"ׄp_C:915/w][=yi][EۧadbY1'iUiMؿfc8)"14v>b[zvKt_^4R:I$Ik%qwJR5OT錏[ckb $op`qR/QOZM4H rUІ'plc<}1MO%h}rS9=Ckmo^)6qI!(Jcx#+z(h]jX^rP >nz$ޖߩ%ֽ zRɒkFDfK\If͊wO'gnѝqӟ֡uGm7/ X[C2+<3˷iz+]wI5&{~eMr a6V-+?n,@ v؟zg Tw0&6nSP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Pǃn_^ڏ.3^)4 AMx+RNn>|: ?R*B ( (g,FɳQsW"'&bnĭ-o V .6N0ۘcҌy ]e k1&Q/ncFr~nO㚸A9."U+o,`5nc7 B vhK?3׊A~[/)|?kGЫ$hq`r=84w"&&J]lm.{b~cӁ*/ΕI5m/ā4DMA{˛b7L30"IsSDektbp3-iq4 `u+v3'jc'ԚqKf' J-Io;A3K}CuRvMYi;W/#5tAf܂122gW=`>g$:G @*Zo3 Cg3ϵ7S[ۢ_u#Nke8fqY2>dg?L n**^GPwgP:˄ybnglDa݁iAMs?@MS~zkI>o}Y]$`f + \bX SK;SFj`Ucpm6tp=9攟6ӷPk~=}LEP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@C?bu~ zO^j?xX?- A4㘭,A]^?z|&CVHP@P:Q#-ħަRQWcIdƝ{-F+ ߵve []fHDNCxR{VQqEqQD}F/CI ;.HYj7myvv'k^DV&/16ۖ d<#9=5yy3ZiQ{✠^_ءR\}؝8V+Mn#FKP~).X7)E-/ .m d%nϭW"m%?nw.KKd yhҭUhKЯ<qD W\*j.۫y2u9tRHE;!xOLzcVO{klwve1P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Pǃn_^ڏ.3^)4 AMxjA^?z|'EVHP@P:NSG(tަQRVcMtƣ{-[N]۵wdM}MweJ!$( (ΝeqieS@zS)(۲ FN#GڈI]M;2m;Y"g*8浊Vr}ӌVطn,1uvIi*FvJsqhqo 1ŝSFglC#d x$q8%'&ΝY8GK[Ğ$k &h9$|ʼS9rsAn_KK&#f\+ ~RZ+v-)+k~=:oh!_\E2lH4 7ZvUz~e[b>Kwm'i]vfDž"ʱnbVp 'pϰ8 Mr慄_fIl\/cx%w`A ӏcӏEY+ )vw_1,|8p*ߗpBj\r˓~/-AJm'BMJ ZbIꄂ#`0MA/U*;]mkSA-+g*iWem{ݻ/sJm" Zl/ܙdy98#iVKFvmjCug6O$w.FqT48$[1iP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@?F-gWt%{v! ׊zEB@4KcV wsνZߔos֛/jy= qcOh Vm$FqjB]+[{KMԟOu+1uR9Wr)?2'[ՒX%2G$ Hrr#R@U'k33Z -g>ۦ.+\G[KVlx"R^ߧݩHr-*['g} mezjwѯǷR3K'3I&,c 3#n#U6v_C]kE6-cIy8pIY}Ȩ6wåۡmAtwd6/%{d.+2Xtm> {;FN3ӥ7oD&s5b)R2Ysb)5I~9Q7R`gc+ooøN]/b6l_]047j>0¯VQUmǧb5h-I-/ld' >JnOܒN{}?1uhȡsv56dTP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@?F-gWt%{v! ׊zEB@ ߕ3#f)O+B (,׷uWvR"9Gn2m;on5ne2JrG^ݨTU6ۻ}OvyHiubZP>w;72+3f%qN]>[K羷;]~q5ՓKsB vK($ t#9kQ*6jV7RnKhCu8ww,LIoLm{yiN9)/_r2kK?kJR[y Ƀr=ҩO܅JфSɯεfkK-1TF1n$)k>ҒVa< A(\lM-dmG,~J*FN9<{u5vF,+ŇY4qoYH9w;>ǵR=?1:ZJ7TLc3ҲqJ ڥ)uyb]hؒЕNzg~g\Ҽ9o}rI3`'yb-T'*ډ$c<{ŔKgh֋{Cl9-+gc %WVmދҸa,-/cރ@;d䜎> 9y+`.[dpi5=2⶜ۮ̡)iܠqluXI|ɠ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (6<#v_Ŭ.ĽOn!s][OHZh-E@n_8'?Q+B (,׷uWvR"9Gn2m;on5ne2JrG^ݨTU6ۻ >K+5V#) ZFV{2%ky3Z_O }:XxfPݾphyJRo >D3k^egڭpg?w%.OwSt5u]ǕP+8fVV l_[iq&9!FyfJT pb-Ŵ$/mc9fJ/t}ʖz@oD&0I>*?ۧ%!tI.ŸtB,Lc98֫]} Z7%]LCF 篡6W^wO$|׷kk0 h[{teM$ # bHJ*۵uwwo$ o9<)Ku!Ɵ+M>t*l`@ s{b՚W-1;wFd6+$b3 u4I%0,2)P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Pǃn_^ڏ.3^)4 AM|s5kڥ/CϟD ( Y\j7ZYDeJ*i6Qӯeqá=;2RW@N̵hh9J9) q *ڏ_-G\i c$LPo5D<xc4S]Y=-܃RkH)bmK}S#/JWpmwsT ?Kh-W9PNW=J26E9B-ZF&dm;K/$p22I u}'4rEn˳=s1r\(<}[w%TyXk 5̱B-M-l+*) vݵˡۅ"y^D g wpx=ؕAtpt1Jrɧd3@p' ЕtaAb0SkN [!) mH 9"~i~=:y ~)ͯDm|lh-Zfm SR\)qgoEu1,O}3krߥRmuKk}PԭLdDM @K%[GSK߳8&;h1iMM˹Q\*C ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ݡ1k: /S۵\VfS,h3 =#r:  (,WVQn%8D~2M l4m/b1\DpON4ӳ%"S; K6N8fZ߶uKNƐhN[[B,:m͂1[wB=I_bcq~[^y,2$0r8ڥ%-_4vk2 cI[.1lbU4ۢj͙zi̫2 n>b99Q5._ĺrM:a@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@lx;FыY%]?zݨB5➑c@/goWE{yUP@gNӯbq8;wTi{qw{)Sr:DbX\%ȒX#\"ҽ2M met fE mp99U["Tk mVg/}R0>P zIAuiݾu ϵyv 9h`yU:VP{>L9D4MyP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Pǃn_^ڏ.3^)4 AM|_rN_oqrMyV6YRqm~9w+ڪ0RGkk}-Mcܽ!V ]?e7*v-%D9VےsY\[NW-4O:sͬ)R|+]+*Ssog|]o-!'>_;]NXoG;\YɠKq:܈ I7;&*k)9{G/ũ,( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ݡ1k: /S۵\VfS,hOt@i>S~@P@tۍ:+)LWӷzEIY6j7wn%9w#nF**m݅Z܉%;*8 }j-+$дEIeÐ 1߱^[iD^ualϳ6~ϻ4]}t֢c*©Ktrb~ѹ>^iA?_~R??v?Df[&{vʹ G\*rV7̓`̞]R42y \JtQ'74o_U-  @[i#i(I7.xۄ XIWҫYi"T{>߃9/PiSYE"$."x.%BbWA{v<;ɑքP@Yӯn4خ1\DrNe%f4wAj7e܎Q mv6Hbux rz}G"H&gGm[C|/)g"82wq:UJIM阨8*>b!%aE}$r1D)nZF+M>Z7!Ʌl)І 8Rm˫i٧N[ ̉c 9b9==1G2m9-.PqwOPpڧ>FL?Lt%I6x@8ⷙَ٧eۀFlU9s&ܭyC;Zxvcg3JĆ'~3SsMݮ,OrٙKy`m|F}hw)}{ &Nma$KM|cimx)V4݄Z.>>l =9=jK2]/_FӮ|v~{~4j+[(Z)VGr%1:sd֖gi0P Ybf`c\)G{&e" ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (6<#v_Ŭ.ĽOn!s][OHZh䟳/MMc%rXizlդЕdP@YӬ5ح,2Jp^e%v4vA\iײ^bОQ)+ifKEk> wmp km=L6i*Y$K#]I'{|֩S撎ߥR%`I,a  0I+>՚Qo RM,?H$bC#!'+*OTKo-t{륋Nln2!T}ALcu+NJ|>uM iC2-br98Q8n_r+h%#]qpITMI4W2ntYȽ巘]c4J)r O[kk~v[I"dweoۘ{Ҕy^֚q4.x${62#cecoBAE8ÚZm~di𛦚bs,2':Q^7dRn_9=ցI5aX4pdH,?%.(TQinC&d8<@⻳Dkw=?MwW?egS}ԪG2}?_-8/kTY ;A qn/(UNGUiְ)dg?63@$zI/#)9F&SH͉dF71B$n#?OUƟ2J,$EXd6-W<jEME[_pN"7f3acsP:r=Cm4([Xn|eh ےr18?dj G'mKmeT,?6ȣr Ҍ\VU&'Ȃ}{G*+hFӒK/Q3_w[vbTP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@?F-gWt%{v! ׊zEB@*?:n | ?P ( ^iױ]Jb*JiQoeq)˹{v1QV@n,.I,FAWAc{Vi^&f[AwkOo1<Y=ݬ<޿}#W&wy'p$aJvUKV*.fzo$"(R\gg8 qW%m;;^x5K;IZi챸udta0=M(%ktRn2Y1EXT;1Iی@֖$1MYM3KKLNc *i5L]^0Ϲ*0B`Tin2vWoܑ:/T3R=#E"¡Ѳ\=FIڢbC1ͯL$iϔm-{oqRek_FuؤK qy/ tw.u%ݧ;TUOnMK6ӟMz۬4Eoç;6D]FY|ߔ !qqjdӋV8w uo<#H|;59m*•.fVvnӝwQE5?*SV6)&#[Ilo$gqӶ*m$$Bޗwo4WkmwI )md#/܍F߃KN9sEuֽ̙[ko%VmV9#9A汎WZזO"Dddm)Bp8⺫#m6wcR,( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (c7hZί/BKGB?տ&>NܾPF: g?P ( (ΝeqieS@zS)(۲ FN#GڈI]M;12+6XAOȖO-Y eM(2[ɭW<I{(Ͽ/NHŶ-٤ܣX^VsVz{/BV*Amk®I@NWWU(I-3'*pzd@F,'p,{DG_{_NãRM83IJU^D`dz))T[(o%N~7Yk#P"Z[q. f]\[s_’jM̹ImD]/[R#;Cq1r]y%ͫlV"hih^Y $!3r1~,oM?/dk܂E{E/pfq91_Gt>Μe劺 lU=m2.er ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( wAKк=Quok="Ɓ!h?_ :b= {TCΩ?Q+B (,׷uWvR"9Gn2m;on5ne2JrG^ݨTU6ۻ+U5/#mPqV9wd{b{8 Yݍ ߥKwݧ8ݧw}k+7btzNJRrp!_ebkMYj;xZ"ncP;ו//bk,2 p*[, br%0K]R*mJJRɧUڝvl|ԆHcW:yD]-t &֎ƻx h> ;? 9/-M}o+ũEbd`rv{cn)9]Y}?1;_F}6m"ORfb ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (c7hZί/BKGB?տ&>> ޏ?@vq3{4Dy>723 ( Y\j7ZYDeJ*i6Qӯeqá=;2RW@Ne qj%: JѮ#;KTI$703njʝFEa"Kⶋ̎!0-s#=8rG&WR2_6vv<m2.hҼ6RYDl2HWҧfiÙ=u]pY񡅧1BV-X0G9UNQZ$|3#[۽©w%`y#ӭ I7ٯj4W&̂=*_Q9劇;}|KvRlVH ra%6+`r )F ]6X6)oHf&p)ݖLTV-X{0猐:K+~[4K]vJWP>RO7F-Gwq2zZԭ%VM/]wR$b-˃A`r c7{of孴K> iپ&/1[ &y {^o0k"olOuF^2Nqϩ*עUr0W/Z)[_!2@1 ] Т9]j_$f`ךgb0͌' IOof:FVa@P@tۍ:+)LWӷzEIY6j7wn%9w#nF**mݕl%y[]F$BL g̣OFT]-&0y;'qz~J\m_Ġ4֗#:[iYM= đ)(#<ΡN.4>]Nfi&%q?SDn>Owi.W;L$[)N}W?7Ot PGLR q圌=Dgd;OWɱnqy9 0y!H$OS'x8iF|[CPdvk</$ۭ|KCyco6:M B#fggگZ\V%n<愺6zMķ m(F.Hܸ %%OK.W.dr";O,Mg$-!@$ݿ{¦Ϳ {__F]Jxb7Vm-PHvT >ܹ*0kKw mzd[&7 'nn 9-la8e=-l[w2$9 qM%5K=Yi.Zۼ&K e$ 3G>œyVꥥΖ`D-FK鮦TY%l}3Y%o4J$V@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@?F-gWt%{v! ׊zEB@'K7x׳GqGS~+R ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (c7hZί/BKGB?տ&>OOf6F֤P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Pǃn_^ڏ.3^)4 AM|@$H׳GqGS~kR >Ej>GZxA6mh2Ac=.2I\Trww:kNi;z.K*:ж{Тc2m<|mHZ,MsjJ|՟Ú?i_^YhZ4Ӿ')oاԾbNY<_Yvrr9 Z7oOOF4O K3H͎3_;FB%ir]J` ޷oSm|{g]+Û߿{Xnٿ_dcq<^ EI2Vu{Gѿq>l(/nf9f{~Rіܣpy}v^znrQq U'o-뱃4o\6{ڥpy"$i)h{*Ҷd]^#=҃qe mU?.;~sc]]K]R_?4jvy5s :܁7=I#=zX9FTSI]輵ە{k&3dk/Ck/<]&NOQ@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@C?bu~ zO^j?xX?- A4n3@<x׳CqGW~+S0.ڥ捨ŝ62<GBi5xӳ5PX/mqdzPPlW;u:\ɭ#+[ F$Ɉg q9Rr~IB.tt{e\ą69(O4FwkBnWXWơE㚩B2ՒGxaf[V2r2O=h䎚mR)7&e:0 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (6<#v_Ŭ.ĽOn!s][OHZh/x׳CQGW~+S0 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( wAKк=Quok="Ɓ!h?_ c8@^Gu_L€ iz6Ztqu)F6 &[j\5_M Zͯ٤K MgN*65)A'%ZwkmZL1qns1uc(vT"% JА ٵ {xY$@Q'4#(Iu|qڭ&Ԏ$=Uf oZ|'$w[KSG&zIvW*iVۈ_#ȩue*m슚vѣkH5cKEڤC\_l3Yμ`ˍ'%tk\|>ԭ'8*>{ Px}ghm™\p3֎L -#GSѻ+UTs˵c(aʊ6ЫIlUFM5bk]2)-0)9ٍD&zI—8rϠ t?JJ{ WdFkT@b ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (6<#v_Ŭ.ĽOn!s][OHZh<w=:ɿ?ƽZÏ`:x(Jq\ծoipkP^|֖ЙLQtbԛ^2Zئ1SПZa;"ZZX^_"p=ɴMh-o$\:sA< wZVl,J{>-:՚n4繏I >t4m95W/t1w4I*ʨ^3^s+uW,[JW&{Y_s]}:SK Ue [wcx!Aq媬\]黐hZ$& -k̗̇n84nWV[:2ޞ.-Y! +_ ̷;|Rдc\[!2TIx#Q޸jatµ|em6 ekqrS1?"?\G 2u 9=MwV9dv^ |C ֩q'nU<#zW-ugutKѭ/|4`öə o:geBiKҬ]Z9Ie kI|$GaSG[Nc3\cRZX(#2; m|9#]\ʥ|a#M*-#nbrē5Sz\4a5ض0{LA@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Pǃn_^ڏ.3^)4 AM|yG[!&F'Nkң8#Q@P@P@PilO\ʻRh9O#4fO,K$aBTj¹c f1~O3%!bT$c+BAXZ(>ZP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@C?bu~ zO^j?xX?- A4?n焿eS_ΟoOշ?Z8#ĩ?Q+B ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (c7hZί/BKGB?տ&>q}xדKq&D ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ݡ1k: /S۵\VfS,hW?*oOW؄5} |OJЀCS-㸻ҭ$Uhk)By~ԭ qKTvPM_^i&wfgIRn[ N;t-FT}k2ŏ-5I,$ϵYOxrօ' X`@Q{:.Vo9Qߕ_ҿ/I5h",j~#+jݭ[ }Sv r|/|Ai멫A{nӵǓ+hws(:X|?#_3iP[^iy}qrUNۦIr9u]/ʞ3cQ#2̳Z `w;b:kRv ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ݡ1k: /S۵\VfS,hv+/_yٖ[EyԿC* (g'%Wv1W6S֖cM.K}P^55vʕ1_qAfwToʭviRKψMdpPZ~dvCBDs6꟥oox&Զ~)KK]_*@vo(gޟޚ7Xj m=~o.ߊk>LePY6>(c m1Rҟ7k_ĹoDOmEvA:. ;x8$cSW kߥխakbv.7mԟ)ezum*|UNkw˱"?j_rIq/"kAfn  qSNݿ68ӂM=yl@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@?F-gWt%{v! ׊zEB@~5s''>#x>'Ck{M!ɍNYIe:0jJ*ɚ Ch>K{yZ0KCQZ]ϸZ"}?/}V` Ch>K{yZ0KCQZ]ϸZ"}?/}V` Ch>K{yZ0KCQZ]ϸZ"}?/}V` Ch>K{yZ0KCQZ]ϸZ"}?/}V` Ch>K{yZ0KCQZ]ϸZ"}?/}V` Ch>K{yZ0KCQZ]ϸZ"}?/}V` Ch>K{yZ0KCQZ]ϸZ"}?/}V` Ch>K{yZ0KCQZ]ϸZ"}?/}V` Ch>K{yZ0KCQZ]ϸZ"}?/}V` Ch>K{yZ0KCQZ]ϸZ"}?/}V` Ch>K{yZ0KCQZ]ϸZ"}?/}V` Ch>K{yZ0KCQZ]ϸZ"}?/}V` Ch>K{yZ0KCQZ]ϸZ"}?/}V` Ch>K{yZ0KCQZ]ϸZ"}?/}V` Ch>K{yZ0KCQZ]ϸZ"}?/}V` Ch>K{yZ0KCQZ]ϸZ"}?/}V` Ch>K{yZ0KCQZ]ϸZ"}?/}V` Ch>K{yZ0KCQZ]ϸZ"}?/}V` Ch>K{yZ0KCQZ]ϸZ"}?/}V` Ch>K{yZ0KCQZ]ϸZ"}?/}V` Ch>K{yZ0KCQZ]ϸZ"}?/}V` Ch>K{yZ0KCQZ]ϸZ"}?/}V` Ch>K{yZ0KCQZ]ϸZ"}?/}V` Ch>K{yZ0KCQZ]ϸZ"}?/}V` Ch>K{yZ0KCQZ]ϸZ"}?/}V` Ch>K{yZ0KCQZ]ϸZ"}?/}V` Ch>K{yZ0KCQZ]ϸZ"}?/}V`fxZlXEH%TcL0PzW 0Q2)+6sթ?F-gWt%{v! ׊zEB@%m>wfNkq^MOZP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@C?bu~ zO^j?xX?- A4j;ֿƽz?Ï<ZSZ?ݨ"H€ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (ŗTw.Ulx;FыY%]?zݨB5➑c@/ƕEH1hX;v^*F֤֏j%HR0 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( eU˕dC?bu~ zO^j?xX?- A4?2R5HP\=N?:h>|ouhANhv[# ( ( ( ( ( ( (?Z5CyuIsbkI4uӊH|XذegYs8=}]КMY1V X[=+ыLj:b ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( _OQLVI?F-gWt%{v! ׊zEB@%IFQӉQF#{Dyu>7;ډnR+Ԍk˘2M#mETb쉔U<֡iʹ> ֪tS{ їmhWZ<":;;іz[UP2okm2 ǩy-^MıoI61]`, ( ( ( (>3?W׼θ|(lPyXwE}o&w^&e( (`mcE,RB==O=&ҵi5ݸZDf%Da:s zTaO4rϭ~si ͧF,,/ڟ4yo X^{60}ݴNp4,@H4(;j^{kbH9 N>ړ&- ZFk<i9I$ !st)lSZ6m/P;9n xX;g#%-SϋOߙj@%hZk[WxQ/\ uuck}lW$f5&ј"ROL:{oW۾ױR=WyLH$1"kX8_FT/G.~;) 4Qfag'V*QWu9%f;~go ' 3w5 n/\v^۲Ko _]xMԬ1go.EU!09H:JSPn/^iaʉõ|MՊ+}gN2ujtv([6r]Kk|ɒ&dL sW)(A&,hZKdkxZf±0{5vNOFze!gre?5lsGj|ѳwMIE(ѵO.?o|,M6$$d8I-KF r鷱VrpX: fԵˈ㲷̍傣$n}H"+AB<˽=34[NnCr_Nx?O=k,`t ;JFH܀9T*r[ȷI_O3HԚ,g;N1voS8%xqv=/Q NN09viwv[t>! :MuUo&U.C !y?+3p ( ( ( M ic=-EqM{lU_jW: 逵#qU-HihfxKZ/<3ysv[}m2rsTI_Ǫ\hl*ua9IJ/A?[#Oܿ|+ͪP@P$ȌXut4ӳ2i=[mRm^@ # Ȥv q®^GMԖqke$vu }Rᄚ Y]j0Ex(n9,_rܺsv^]4[;d{nZdRM?Jz#4zbfsgU6YoV/mokSrqO5}:MUnn<%pܩ#4)=wx;; $~F۾]u-֡n&6HE8RN Ӟ+Zi^OȖElC{U$ԣ%MQ,RiMqyXYZZ_KkmdVMowǡٰX.q;>Ҝj%VO5qI)iu/?D]wΨ[\\iqNAVw /IMͼO$)GK=ˤtve뭴}oA-(!j[v:5UϕW4,Qod}t)H!xw:)%TU% @'ճPi~Jť ^Mڍͦ[X; rQ?}|\W/;./3'ٟՔ73OH28?mSzo-sa-Jp_{>ե]f{.J>݆r:-KFj^_+]KKYrE7Vv]\ju&4k@"h%wrz~'> .׷#i1Kjʹo݂9e`$* eF~7ES.9=.O=;|8Ukwir\3dz1720T\֤^m:~u[%! :ÎsҺ*':nwutM6Q72OӬo/^(/dX¦J'awZ;.F]xxӴTvk`J1 0ߞI嬦]%wZiY1<# l^v]wot*-馺K 1z+yb&nͷcR_Դ4ŧfDoHB6326TF2yp'N 뽞ܷR ɷ[78IYi1$&GHlns3 $s]Q|s){|6u6pEw}FMVqYJVe|ʎnkJ׺_='6&i׾K-~L^Yxv{h.|ѭG̒e?xUӻu)%/_NsLcXs㑞HfՒ"  ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (,Y?Gq2Y&ǃn_^ڏ.3^)4 AM|?cֿo{Dy>76 {Q-Ez4BJ!`&gnSVgb|0x~=AI :Tȭs/a{s_aq kߌqI#sUUVcY=̚]SMWЮ?sM(O.WlBRÞ.0皙T&5Ifj<3cmMw{8޴Tm6VN#nw:k?۬#hAba+nHɩr{ҙ|i+xQ6j-c1j`(#q+(jRյGDbZmJ;(I-'<0j䒺47fCxFOK:!W.Kz=zϽLT{n0jK ( ( ( (i=-A53;#G6(`F}PB!IfwbK3}M$V[ `P@P@P@Pn,mlu%6qsUZ`P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@XZݪeʲMݡ1k: /S۵\VfS,hj"iu}ױGqGS~kR wGܤW=]owVlz('s4I6 ؙoخ~3lo%HO)'\ܭَNQ.m4$uRyE̖Вu  9Ji+\NWg/{+T<ª뛓nK݋wZo5/5Z|edA-TK֗AK[^6up-pec1✒zlBkdv˥³=bETQdZRi[uutMv~boB,|—O).mǮE]կG[u] GlNo#.3 %(z iŤ4H>@ߺ?7qBZM=Ƣܹ׷}_s"w6*'p80qi]-'1d.|Ќ~SmAr9Z\o+8_uuv5ZHԮ]>h?p3/P1M)ٱ$ڸ5fkE/.[q{獹i^qo$XKy"BWr@znQ[I-Sy<l%6r0m@P1`#X^_4_ҵ,.Xdu qGSRN>I]lR$( ( / _G>h#l=iM5<zt<dx䚔qNvYYВk+#V@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@biv;*6<#v_Ŭ.ĽOn!s][OHZh<(F%qѯb.FV֏j%HR3CUduv*:S9F*WKW/rs*Krvltzy}6{$%-.FC*6u5R1Jwk&nӥvP_Xʼ0i5 I`f3}>i^MF'-ޒjI+vvCN鉫2]Ygi#,Nc`2"+%Jn'׫TnU9nյiios-h.g}߲,,T;p7H;Ru_qnk&_'tM:QQFFVC* pGL1ORs˧ջ ],W7V:>g4W֐h l[h'#3I]ɮDJ)'ZMhu蚥~^dlG0dj~l q[Vs^]ս ̥eRֿW2Z_O]ҏdSMgG{w{[!. RC3gzE$R/[ZCzlHEeJ=[O]H9;oeѿSpm-f{BΕ}Xb̒ȱ \3sC_jnұ7R8j]ok6UNV㺺 q&GrN~qX52Kki+*j%.rmj?($ZǝJKg)|G<3wcיub+wMnk2JIA* #WWsw29¹}mʌ;Ta?ʂ?9P]{u:miќE^P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@,֟jrc7hZί/BKGB?տ&>DеE7Lga??5P}TߨԂD)F>Ti$rQFKހ.66z/w,G\g8z k{yV-TIR-6% " J2 EqK sT@P@P@P@P@P@P@y bt.3å&&/g((QHwe*b ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (ŗTw.Ulx;FыY%]?zݨB5➑c@/x3eZ(>j|oejfSZ?ݨ"HͿ\Y}PXd9.HTS SQ^ [Ӹ$hkض1!ooZ)LXYXnI%9ttQI>_V6qZWK;4k_eֳM zu5HrBc{RRQ+WkV+ZM㾻%Fvw͹B3Nq[Ӈ$Eb*On] Y@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@XZݪeʲMݡ1k: /S۵\VfS,h4z}Q}TߨԂD)FX-_$op $ Emτ[6-4ܨrv݀UdݶvoR9uWK[=MОH[+R Ry"ф$Iw򁞼innxǬo 2G۽Y Gi2:Uy\"֭__=z؛dض]-D9Mݷ~6jSH?~fpJjƽ=ِh6IQ^#(c+ jCimK.ߎ8fծ ~7=I[]2xY_6=sqT^?5R8ӥ~yS˯Ea f8KHNs'<{6Vi&]weo[H.h1 V@H9W+a8NsZR})xL}Yeh`0 q;RSG@y]Г~帄5-`졔,A$c:T)Tk}~b\⨺OMxb;Xv>kB51̔ݿ5poo-?Nsq鱴A~Tu#^I}E$7W_RDK#B$V7y{'fG8j˯e9)l{D?WK.fdy-1!$zUSTU9€ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( eU˕dC?bu~ zO^j?xX?- A4/]; ֽ?Ï<ʟZSZ?ݨ"H€;u6M_kN~soܾqf7/i>ek[(ӥF6 ?+?[_jDegowͥ3wp'(MDWM4ޫ{z.̍. krɶH IKGZrtM$~]cK[Ż_ _n|ݞإ89*7doƊ^:?ŹЯ5综G 3&e!s#jm4~^1Go[z S5MKVyoRwrHNnm'R8r{~~ѹ4q,ZU5k)Z?管1S^GmOwGܤWP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@XZݪeʲMݡ1k: /S۵\VfS,hJoM5}ߨ̧{Q-EzP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P/ڨ&\$wAKк=Quok="Ɓ!h?_ z _ƽj<ڟ[:2ܨ @:sXܸR]c}:.<~t]yv?Eo΋1ߝ`c}:.<~t]yv?Eo΋1ߝ`c}:.<~t]yv?Eo΋1ߝ`c}:.<~t]yv?Eo΋1ߝ`c}:.<~t]yv?Eo΋1ߝ`c}:.<~t]yv?Eo΋1ߝ`c}:.<~t]yv?Eo΋1ߝ`c}:.<~t]yv?Eo΋1ߝ`c}:.<~t]yv?Eo΋1ߝ`c}:.<~t]yv?Eo΋1ߝ`c}:.<~t]yv?Eo΋1ߝ`c}:.<~t]yv?Eo΋1ߝ`c}:.<~t]yv?Eo΋1ߝ`c}:.<~t]yv?Eo΋1ߝ`c}:.<~t]yv?Eo΋1ߝ`c}:.<~t]yv?Eo΋1ߝ`c}:.<~t]yv?Eo΋1ߝ`c}:.<~t]yv?Eo΋1ߝ`c}:.<~t]yv?Eo΋1ߝ`c}:.<~t]yv?Eo΋1ߝ`c}:.<~t]yv?Eo΋1ߝ`c}:.<~t]yv?Eo΋1ߝ`c}:.<~t]yv?Eo΋1ߝ`c}:.C+o΋}:.;}}:.EXQ3ߝ v?Eo΋faa>ߝ `A~t\,h?o΋p}}:.;6踬/o΋1ߝ`c}:.<~t]yv?Eo΋1ߝ`c}:.<~t]yv? K3\,HzqWOre[lx;FыY%]?zSWzA@Oie[VfSf$zνl?#ϯYzLc>WcSrF ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (=(\_6;;;{)/// y.c ,VEe2N3TV-h!ռ;6ᵵFuEc@$UԥNkmn[ʠVZ-NJ9&iݫx;C<*TiD%Rr傻C|[6ڤZ kթprN8IC.w%FpDu<#UT~lrR.'X+&,  EȉNsXvN&2l׷ȍ+  ?ZGa^kZn7<G_ڈg#iPYw$*EI:pK[+z﹋w&p_;zsZGWkԄ[3؈2D 84%7h*Sm]=j;!Lʢ@2UX rC IN/_+%ӭzgo7[k%S 96>xSJ2k~?!$XSfW-ɘnwݛk(goUU@bĀ'ܒWc|܋W{w//6D&3; o7v^R^ZYoSYyc6*'i5Mw3A=E5$}ݾ}wۥ]ſ𞵧4vb5d_:2ɹ* 88iFe%R.\WwMv7ky,bp ## `u)qn^*ucwul # Cike=0sNh)m(~z祚_~~} SFKʔΒ#^jv]Ӓ;?'c4o=̥[lx;FыY%]?zSWzA@cN?j:ݐ8Z6FfF+fqأPPP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ EK~뱽S~~-k#Um$qʃԎ)9S˫XJʔ-}|?/ vOIwM%n(Β/#+I+KZݭeK_׼!ד@6(u+a$RH9:{OK{m5kR7&}m=:hDѼ-aow+0G=Zքܯ$miyt'P8ɿzmBN]]V&Pk88C ',i:RXڕZComχ߿tTSI֘+g¶?*G*? *J;;VҥZF$/6.~l+'xRZ6-$ƓۻOn}3<_Zn-/JHiprE}jWo nċ??o`?H᭨|7V2-h_7Q=цWNHJUD~uN~[uщT%OS^I=﵋zNJ-sOo}FͱH#: >PָQ \[uM4:eZNN>$V$c<>U&<,;G\$sZrT:lۯ2R)-/)_^jυ폍!' anG' ʜ67S95}R{[ʍUZњ[sI-7oIƗ4m5I>$K L8IʢjMԹ/7un]GGV|[.y0DU elFA㞵t)ʚd M.Jݷ{dx?O5/.? aGuc@kZM)nӎ-}uCFb؂T{Ը0JUq0;z82b{8kyw|ZZKeu]B ~tai~)]I}#r_<#ҒSH#)5 ;Gk?mF/d׽en- V֝twne階[ K/,0`EVPY\ ŷ#].Mlnzi5 Ԩ|Z\oKzlmWruueo,vhx$P>n42z|=ڔ'~YM4k],#w֖Sj֗PY܄fTl nvぞzSJ\y U&__-=SE؉C0<%tfy9޿*~V?!Qܟĭo׶utkh}/>n*%O$ߣ5Oi>&;^C@[|Z2GN0h^[h)6ģj)/ ]ckPFb%1\W4)Sӓ~;*EMu_B-BݾM{c(QpcbkYAF]te Yrޕ'k,I˳awılݵxt-XI%Ŧc hּE^-IZqL-ݛ(W8 ߥsҧ86_N"qik?k[[y]iAĄKqс`y9$ZB2S[[^V_Twwߞۘz?|꧹-z؃c7hZί/BKS g\ >joԎ325_5Mˎ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ZMHmZ7V\&Ȭ5-v)2SMS?T]u &>}MW}/Y,e$h_"TY{ MW}/Y,dW5[Nkt6.oⱪqH5]FQaH AAmϸ%ӭW8./-5?$Bg.!?$Bϻ]v_pI϶+/5EwUm V_j>au} &>}$3wWwZoK"EEEU@U*THPH&h$x千#aНI呤݉,rI=I4QV[ b ( ( (-bc^ wAKк>>4Ϳ*x:<ڿ#rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrjoԎ3Ti O1?@b}:.ƀݡ1k: /SjOH(:??5P}ߨ̧{Q-EzP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P/ڨ&\$wAKк>>ǽ]z x:h >jr#wGܤWP@P@P@P@P@P@P@ll//1Z\\Jr?Iؿƿ@=S$ ^=`c_=Ò]zI{HIvF5 'Q#9%?$Gp`c_=Ò]6a}GoAB^N-nB ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (,Y?Gq2Y&ǃn_^5x5c= zGm_^uNhv[# ( ( ( ( ( ( (߇Vvw4n<+4,3¸*κi(;wE>3^Gm_wGܤW>-S]gXb V+3*p23x=53~gϗ֪ݢ"u'%͎>w4g$9cY(ɶRM_bewIm%ܸD0vc'۲@䒽{< Ē&%>RjI1m.ZclkJSON]^G? ɩj~Fo}kD]fаmINZ4aR`[iח'ح.n1"V11->[S;Xu\$rKv,mk+I^& bZTV]]I钄 :+h暊Z/1^X6t?\izmṝXGh-8}5R\M}϶\[62a tn#[K@ FϞɧkj.h_B+&He_)VPjJ" ( ( #2@KX\wM;ދyXwE'>'ϭ|+̺P@Z~&6e/8 :;\;+O/"&uK;`ABrkrJ6%(F2wW+;,,oXd=7eA jDm~#{]UݕbF7Piu%ma" zYʽAjujz)$;K?%FY8w;v0sx*Tzv\[\n <SʐFAt"K[5f.].v}cL\Iqwh[P͊et䷖ʽ;VU+r$_ mˣvmHwi e7Km#xR98qڪe'k⮗3eK*K^B5/b]NxCRq{)ȨQէ_os7zE=Z]=s1,eGZqu'?(_wm}|򥍊+H" yj.TeyJ-K7ܑ4MmAX&63r{Q1ץ(s{ֵS{YRX)M+fD?b9|+wj#R ddr7|H9QRmJ|-u .ug:5˶$|dڧqsMTK]^ߞpzRh<zȦ,w Q>U<QSJ__i]kI5of)\?RpkQq7=uWh\U7۔0#lbnY՗#nM/_Jv%TŢXXr΋r5tR[rG>nQrW^_F]QxVͭm.mnGQT?9}N{fh5:N;o1GT^.-.7w)H`# :T'KtoDou;;Iyd' +3N\|^י)&ϵ[fV;{;m$#`VIK*QT'ѝg#,4@=E7-;]!1o_,csڱs#_J[~61f-$Qe+1Xe(=9=Vno%M5olެ<r?*n72&ݶvoE+h}\մSm-oiVIjS8)=kW)."7_im 3;69nw `䊥Q4tKKf 666=AG+g;;k~3FJU<[&|b @ 0# < I*V=^4dP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@XZݪeʲMݡ1k: /SjOH(ϰ]ϴɪOOz?Dy~723)Kr^foMmO9_i闾&M6Us$Jc]'ʬZiOXCmo|C{}f۩#{p8 t ֦ \v\um: ^`koE{vuv1^K{c>@}J(2~ɽ|hS'&\Ǡy5?ހ<ć>"Կ|(ͪP@P@= GJ++rp?qTJYI(+OgF?ږlEh?cGs)UB%QvX\TI[.~y-ӷM6]Ѓ]4)4z6o xc翵gJ~EjNO[V-S&.2E떌#8ۭSu4>W?"Z-% 쩹b*S-v^(Zpbms*}~:UTgNOdX,c¥K0w8%9}_|rN1O6EjpZ[ +X_F!e;<# R.I[tM6;U;iZ݅Εmqwu d?,QQYIj Mz+5׹I*W_Eh70-_noĭ,hʨ1$ӥL9'?Kr~վI;eCGo[B53zF/R{(4V=ԯ rYt,g\SN#Jɭum1JnmtЧZ-^jRoD7DE2K>(ASeVg]FދZi[NmæՖ1>J7W8t8}鶻htKzѫ?k}"ĺulr[ǧۤΊJAP*4J~_ZK}emgTGm"YPr,1ϡy_4gOݢ̈́=,+Eϙnz>՜9J_jw_Μ2xKAŋ[Pư$6d$?JS)J] |k祯G, 6|X [civA~aF;UIϛ~IC}ZZꊚ^ Mj7kImWAӔe.%եo&}TғKy,f(&'k(w릮)8M?&kG55夊)DJVC98T|-{jo}7ȇ6(饼k\ -[i K}P;Fdp q}joelfSZ?ݨ"H-58mrϗ,68R|rIEnݍQ+cMjnoo6!K|W8$Lj+Wie{ۤ>s,76+4[Yt1A8nxNdtk[AQFɤ)?Mv`9R)kv`OH :M%Ii]n^R=cC|?gx/cwX>_(mۏ۟-_R$֎ߝOgUӴ[؞Pq0q m :xF|[oӷWg?irhɨOs䋷d†03j|Q9'g{;zVkFkx>XQGe>OnuѵoFڨ;2xrDh\:إ[#¶0Wyl }zRT֪z[SGK]V[_tL;%8HFft~^y4KFڶgE*wfj^ %'gP쎑  uVU89 {-,i(5{v~k]nlȿ=ګܫq 3i7.u +mmߒz_ [\$FV`~ i΢i~(nݗǠ94dT1#pݞ 9TK[vo׿ͫzAg,Q$|m#y$~2B1k/4TGtkUR6te]V/2;{vgp$ɒ6dqM\VVJ~Oͽ_"o e=Ք"9+~6ݠp{ =i4I-Bqҷ׷?ZP@P@zWX.4xUM d'8s-3hg `hhhEuCk KrP@P@ `OLPabutv1޲*ړj$-n{Pops8ɦi^Izc77ާsz΀Is@ @P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@,֟jrc7hZί/BKS X m};_'׭CQGW~uNhv[#,}yoe/+Dd{46mWv5g'GO0Md\);mG=_ȿg--wעպ֦]зwaD2ڸS2 OV]맧pI_[M{_ki'y!ve J*Qٓ(#P@P@P@P@P@P\,Bt5p\M1һd" ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( eU˕dC?bu~ zO^➐P( IuDy~7G[֏j%HR3Wz6>SI'1ț7#aJK.?:.Cbscz9g<'8ދ+k馾Ӗ嶺v) !u.is$%ب6P6G*tڳ[*JM%վI/;z䕋HY$5b[#9INOv2 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( eU˕dC?bu~ zO^➐Puw(ܘg>k֡(#̫QNhv[#,XGo-%onrZDy.Frp:^. ]ot"-zC2:I[&G;;F$s{ITO^}QHӔ4N<ϻZuo:`tO%bX\jܥ~kJjMV{Kخv/Ks4/ $y% >RSeiBJR]nqޗJKy'{džKWf( *dsߞJ)h895_zj{-2*  kQI#dl`we;{z-<7ezߙǯFYY[~,7׋m$QC6 I泥9KNM_~Jj2en{[O6:Hcy^Mq>3 zq9#ӬNE=}NUD_cB *[{K8.Q+y1égNj^hoK=?S{v0HRJ#VET8JT,Ck1VE "gn?k7+J|-mlpn?5]"g) O11+$ 7tU#-Rm $Ӵ]7AtyȠ}nLq-k"]zĞot/fV7wF!<2m| .I-x'ʔ~WVܕ>]_fsYZMzI44!N) /U\x?Hmž}쁤#dIwumk $-fjfе-;ljٰ>U!ެLeʚ[-5ćJekzn18מ)ޢk8=T.xSS{+{+iܼB9|ɩEٯ?Ta BJ[^u+7ڨཕ1B@0E˜ܥTԋQYcueW=z % 5OռA͝}Z}q=4f !TmW$rzscVQߗl.hkvPϸヴZ8U;/{>o:C}4iב\z x''ooϾwbQEI%nB4讴gl-[mFrrOVԋW~cKۋ#H''B*1Q]N\r}H* ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (ŗTw.Ulx;FыY%]?zSWzA@sZwzt?Dyu~723)Kr^a@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@biv;*6<#v_Ŭ.ĽO= ůեʹ)̮}z?Dy~723)Kr^a@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@biv;*6<#v_Ŭ.ĽO= $=ZXfk >*oelfSZ?ݨ"H€ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (ŗTw.Ulx;FыY%]?zSWzA@f.}??5P}ߨ̣|ʳX"_Φa'OE_΋1?@b}:.)c]|M=Ò]б_&i.X_/Gpc&.[{)P) *L2 ( ( ( 2׭6<#v_Ŭ.ĽO= >ӥ: k]K:ɿIN./Q?jn\v(P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@!@e,sc}jO~͞k7-֐F$8y:qړ_r_VkNQHIɰu-sLO7 2v`RXUAvod4ϫv\7{]|*I-o5]ONX1tPR˙)ZWz*iiط_IӢIc%#pc緯S%&_dq_EOsj&߽",]U[p{Rhovit%⮿]2F?ef%cl~讷c;W?AYW g* Hx5#kjZ c8MszRnG[+O`Ir)m}u+>Ilno%7j̶*\}P)O:'j"4qv9g#,| 61՘53:{Lwj^XK)l  #=+IKjWG/FJOWc>]Z&nai0 bŀdPFtZ^ޮY}ȹQo%{z\v]>bLwdn|wiQ2w;(Ss6ZKv:xE rY.,80dsRE4uۯjudG~?ቿ] Q4ִu!3/+OEsNUy./^tʢ˽[rT޽zj`x@η6}$1(B:WN~Ms'סϥIb>ۘ*eIz3j63"]V͊FSn]nu4MCRk)5--qG9$W%:j{_mOB8)KhVe[tZ Ȓ@eApa<qoID?cV*w_kG dBE][,>PBssnO+(֍9^_oBI)J ݫttO4nn+o2w 5i/ߞ?/rS6m]]t6!5o/-443Bꤍ˿0 sS~MtĢ"ғݦ[Z?jfKogi\O7 IZ˒Ϻ_7$S/ܷ}R涼WTc{ wJSq2}*1l..K{[[Ua.ia}yܩז=YWON[6v][-n/4-PRF;)QVr5ƴ˕ݨ9[Z&:[#J#eߝ?y 8'*F2f[5teA_oe$8%7 + fZZ7MCq(Kn20iݾlEi,հYqcM:wMB8RzE'׭eV/rSVm`ؙ~ L3zs9vp'ݲナւu6oω4xtb'3ȃc, psۥ]:R#i|חMlS?WE=%[lx;FыY%]?zSWzA@֥^G]_̍c>WcSrF ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (J:Nx.E.m5'3$GnN }%>goHEX|'\5o:cySFXU GqҴ8Ub+oJNIne}Y5_ƺM̷J9ו1 7uS8ޢM=oOM,[4enVmWI\7V^3^ٲʋ2Vs gwL*M5$.:Ӕ _6h梨mQsÚ|;`QyR"nݾQ=*֯$ԒdojF2_%/ŧkW>!~\'[K%賔 Eܻ:U(xm̶jޭ6m\]HTl잞I^}zm'P}kY\iWzAuGH[ȃ=9%).WqӋw2"i)o4uijVogcq"SZs~?=Tp࣯e.oH&n?d]Z Mm+:lvǘͳMF._4ՍK7jRdջ1}|eصq&0L>X4F ۭPsikXT:qm:JK_=wEckZ} 9]d 36vy'Zv=NVVo_#?Y 1^i;[DsA=w_u F-O[xiXmKxdϑEܞ?I[b*Zro|YGZMn|ssۭ]5o)~z~'=Hs6Ҕ>  C_q}д!2o2۶Ku/jyK%4K G1;Ch᪗TM+=i BCֺr@uxffmd\𪦜'{#:U)Κә[k45_^&HD mUdl.N@8 ߥc 줾?cjsC]薚U1[d_]yN vZEm?՜Rѻy/{3Gp1]1ƽlA?F-gWt%}M^)|5?(]'ƽZ<ʿ[zR=”m{i\v)o'j9X?G+ 74r74r74r74r74r74r74r74r74r74r74r74r74r74r74r74r74r74r74r74r74r74r74r74r74r74r74r74r74r74r74r74r74r74r74r74r74r74r74r74r74r74r74r74r74r74rD74rG?G+; 4 ɩpcR"ʓx|^8eI*oelfG,v}=̂oʎd'~Ts }=Iߕ,jOFA`Rz7G2 ړѿ*9X>ԞQ̂oʎd'~Ts }=Iߕ,jOFA`Rz7G2 ړѿ*9X>ԞQ̂oʎd'~Ts }=Iߕ,jOFA`Rz7G2 ړѿ*9X>ԞQ̂oʎd'~Ts }=Iߕ,jOFA`Rz7G2 ړѿ*9X>ԞQ̂oʎd'~Ts }=Iߕ,jOFA`Rz7G2 ړѿ*9X>ԞQ̂oʎd'~Ts }=Iߕ,jOFA`Rz7G2 ړѿ*9X>ԞQ̂oʎd'~Ts }=Iߕ,jOFA`Rz7G2 ړѿ*9X>ԞQ̂oʎd'~Ts }=Iߕ,jOFA`Rz7G2 ړѿ*9X>ԞQ̂oʎd'~Ts }=Iߕ,jOFA`Rz7G2 ړѿ*9X>ԞQ̂oʎd'~Ts }=Iߕ,jOFA`Rz7G2 ړѿ*9X>ԞQ̂oʎd'~Ts }=Iߕ,jOFA`Rz7G2 ړѿ*9X>ԞQ̂oʎd'~Ts }=Iߕ,jOFA`Rz7G2 ړѿ*9X>ԞQ̂oʎd'~Ts }=Iߕ,jOFA`Rz7G2 ړѿ*9X>ԞQ̂oʎd'~Ts }=Iߕ,jOFA`Rz7G2 ړѿ*9X>ԞQ̂oʎd'~Ts }=Iߕ,jOFA`Rz7G2 ړѿ*9X>ԞQ̂oʎd'~Ts }=Iߕ,jOFA`Rz7G2 ړѿ*9X>ԞQ̂oʎd'~Ts }=Iߕ,jOFA`Rz7G2 ړѿ*9X>ԞQ̂oʎd'~Ts }=Iߕ,jOFA`Rz7G2 ړѿ*9X>ԞQ̂oʎd'~Ts }=Iߕ,jOFA`Rz7G2 ړѿ*9X>ԞQ̂oʎd'~Ts }=Iߕ,jOFA`Rz7G2 ړѿ*9X>ԞQ̂oʎd'~Ts }=Iߕ,jOFA`Rz7G2 ړѿ*9X>ԞQ̂oʎd'~Ts }=Iߕ,jOFA`Rz7G2 ړѿ*9X>ԞQ̂oʎd'~Ts }=Iߕ,jOFA`Rz7G2 ړѿ*9X>ԞQ̂oʎd'~Ts }=Iߕ,jOFA`Rz7G2 ړѿ*9X>ԞQ̂oʎd'~Ts }=Iߕ,jOFA`Rz7G2 ړѿ*9X>ԞQ̂oʎd'~Ts }=Iߕ,jOFA`Rz7G2 ړѿ*9X>ԞQ̂oʎd'~Ts }=Iߕ,jOFA`Rz7G2 ړѿ*9X>ԞQ̂oʎd'~Ts }=2(9yĔlx;FыY%]?zSWzA@gOz?Dy~723)Kr^a@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@biv;*6<#v_Ŭ.ĽO= Lg{*ՎH$i>*|OmhANhv[# ( ( ( ( ( ( (5@I VM;V>ʳXF\ilo¢JXb?WA ^+Qc Ed({¢J}b=?Qk?>dS~xOMAKy=QœkŻ ҒG [P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@,֟jrc7hZί/BKS 4z|uThANhv[# ( ( ( ( ( ( (/C >ʄFOMy>&vCFߞ=j,UX.xpǭ =h\eB$~%0Pv+ч½)|L̪P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@XZݪeʲMݡ1k: /SjOH(Gu߳Lg]s2{4yhANhv[#7< W)⸉%GP5?ڧu~hۓ@&o﵎ٟ1F>ߺ!׼=.RM+;#%N:wTN[$6[^Wqsis ̋oG1jV)T)_dMK j:l4kY-$X^h7.f?Ӡ:}LKwK 5%K=0xSO*ݺt_IĖp) GlФR*_w_&kS/~}? ⵴dVܦIUIF;f%׆t6y䵺Ue}=9֔Z1ݢ*R9E?ċ[{Oe2gUʔz?sCW:w ;A8 5(>SyV?+/ wZƝ8fy_'RK{_:--jӭmKY`MМSR{/kVmS[{5%u=p6jO;j:ͤh="wc9;TQr#IAe ]ٵ͌w.n1)8{U—%Ϸr]T _xkO^"ͭJ49G#޴I:ig_W׾|EE N8R4UT`( pinuGF}" (<%6f+kDdܮeZN1ӫKi_{WݸG(Xq·9H<NTԯ=o]U-k^o |4fuqeC6mqۺ9j3/[_ wTZ_wzt7AZ 3p_$O0gxݻjݥ8{_ۨF1sOm6];x?-VVd]ʹ}I7a^ѥ ['ͧ/h^e=ٍ$yrBu\rⳍI8=#~kKz>8(iKM̡ c71~:@h? RmGexGߒ;~Վö5Z0NdʐzG9sIʇuͧ:B1sT~VOZnj0IrnK*+'DpM.uʶm8^Z7,[ *Mroh.}_vޯ-CT,~k I[a3H **N9T$rK+*QJ7~z[~]Zm]˧} ]VRҖYoMZ'eXMQ؂>P#5S^NrK[y߹\Qr)Z+yWPi#?'MuB0 ?Z:n2ߙ"H*0M]:iiEH$Qa$е}Kg%w)ل"0SPફPWM{Ӟi?6Q-u ! Ew58b 7`F =*YsGOv}WEר*\qi{}ms3X5Gq$r_bF8PO#xs֪חnX꿫*5rRkNo5qn$H JI7N;[o.vcŵZjKq2 GM/xچjn&z*:*pY*K;s[#}6NK[wuCsWMi:GJ)+FbWdgt57Ha\^KlȄeR[w/\#&}~VwwT5 b w]2# J(x߿K pPO[Jݺo)[2ui^2G@vS{wכ;.n[6=;D>],7e俁PHWpC8ݞSӓ>_Sb204-. NV|*mpsfIK2ږk\Լ=VWowq pʪ^r;9`{5yV4vQW}˸{6vs{ɋ-pRrR5BjpR_7m[.Lm p,7m>8iܥMX.Hk9[xœH̻V>rǎuQJ7-읊N΢~2%m|kmij<Sk1(J-s܍^i|qjq({EfV!ϮzwIEƻctuM~hoɫܿYn|(̤PP@~9L,Q=[4rLڮw&J<>f{a= \qU9IX ͠\OrO-U3d⊓VCi>-x($ӕKsET>RFa[:A@P@Y 9vIc`pTSNRVf͞ >Q Iyl$9bbǜPy8k'I8}ߧ{y\Uj\{Zc9<*? gkV/O"o㮟 핝䋀@de8$S('.m 8Yw\0Mk4+YI(RO9լȧ&䤴[[]*Y&ٲQ9@`<'9Wq+|{q_WsIp.m&TQi"0 sf`:ri_@t}iNK뤉%uU+P`dQ(+.:vO4Zc)7)z{R(˙=B_ei^vZ/&V[[QsL[Ǧ*](%WQOoăķZB#[D)yAda)漾Ra9Fl￿3mF}'Sf*xzHM4wϩ~wFeԑls2q׭eboeoY{_k27vˣ*GT,S`w<ثQI[3J*/[2-ݮ#X Dgf[dcN}N_6u{teju궬9v屌Lժv5_vNշ +{  7q!CףmG7w_ȄZvW~ݯ%NJo&pZ{Ve$N:ԺI+ֶqKJ}]4QxQz[IݼpH0FF`r6_7Gum-]V l1mjmcH'<}SRgh\jJ<-[~D:Wn4V73igF-NH`9Fx=*i9_VЄz_}oljO?* ldHZ z 䜌}:_u/V*Q5_TՖ"}i 'ݙڈ嶯BQZKo][DWLT嘰l7<iZN]տ?%M8tnzpm;Z$ǽ`8$gҳdʏZ/Xr|WzmWG骐 kӔ99GaSf .-n,,&H w$ld8nH+9.۽ȘKE[۲ߦWIB']QcKtvʖ3eH01{QRw_y1Zj!׮"KخaO6Xnm3H9_gonRo-孕7$L"(0 i*vM;߭\Kk%n[%P.<@u2_YqJt`G;ku7OO4F%Ӵآky",l$pf<銘Q\6;]wvfK K+KhdiZ5fIK.߽ F284o!sY_綝m!,lm5ehF+2,ň#g曦jNV4|׿=켕}HnMN얶{ DIQZNWʻ_Ř#l8qRZ*Iz ( ( (=cAz@W,Έ ?ަø ` ` Ek:}ndЍudsvP  ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( eU˕dC?bu~ zO^➐P?h\Ŀ^/zd'GZSZ?ݨ"H_ ڥֱH$g!UD-сp#5'ɿ8r2v ֝_lruUە#'< 5]~&mTO~MeImw iײ7m=H7gp3 GewkrWkZ+-Sվwvs,\Kkm&$C)|FלQ흽ko)7N sioVշ`mpUp >S:*7{E~?y ?foi]AM%WK532)r0Am<0߶Kz_}cs[Td]^tX[x;[g(E @f%|gӊ0ԓVM[o]~Z#i|e 24"6lN_ h3wjNw:` 'A׶ *Vߖ7{}8(7u_rm۷gcz}[GS^5II$P2AZѓi3sGf5։t⻳ʖ5xI <XwqYOG}7i'%^wŏ :YnR{{(ngEPmgvscTNwo޻k|qrM}>V֮!Zk|K%'O/l )gi[DmoT-ÑMhR]uJM<+[gLxVײ drD3Di9`HҴs6\}({4ԵvV{5_~֗T[D,Qg WdI s޲4)|/k'孵N59=>?Kqƿ/2QTE %H;Վ22+YNImtvy5浶CTޭ[oe%wzթP@P@xwXGmzD6GnFjڛZ;i#i~U[{axNW@u8 )# qnɔ$Z{YWP RE*pFGښi 4}H)۲:ը;>EK@|KuR~u;ډnR+Ԍu8+Kw{LS.I~vQ|_h+y, g!vr52 n;۵Mu%ئ 9l(R m=+K+W&%EWn_$f\(`$qJ 5mȩNR6)꺵`tlR5QsP0[kvmktVh‚ŏדޭi.u'GHׂS{PIqyDn#f' sJ ܽ h^Q.5$$A@XF1ug IC}_q|MimEb9ZAtKx#uaJ)RJW{yBHu?EvnA5uRbB0u䍭ݷ>y];owtbuu8/eL|#PP Lb1QNI~#uMVTIx-̛8Ԓ3 ;)n>[.妸n7QӥTbktmW3(=l?Y(>H1sBcc(*8K[̷RN\Ӷ_ԒI,yAF# pUzsWʿ͙hFiI-Qa7 %c+ (S'8T)F4u$7[Ϯ3e-0*,|F)Rn*= ҭ99un>d-;5f|3*P@P@Ook-&:m2}?F` $s ͧ"ՑOT,Ef$<?x=*Q9Y!@P@P@O4CQ&'yizN&5ܒ؜c8\4V֋:*JWoltjoHm!.X7U*k~%nmUZ"_齯Jk[D/|Kjm t2 ~8$jքT=nToV1U5_dvg-Rk[&Ktq Esa%mA=soG)|{~nUM\hKoY_n4n&ihrL1N~]mokd|i¥Ek7e{=n~JW%ZZ]Ŧ*Io2Be BxJw6w k(RuQyy2[\hVvZmsreH Jm yMTޢO˸ڵvOIr)J1M=mwGgkoq ]2xX̹ߌA \֧^[eV^{V??^&%D&; hU1{tkޚӯE¤yhFM^w[~%IqZVMR}R^V}6%ZNL%2Z@._!v9QB6վ}3Hss;?[Oal-48/me8 Ы0rE$Z1m_ ֆUROvC=ީgXk  ) eD);~.54?v)r ;cgcsE#*wE:mSo["SHIkg;laױn;m֡"\ɼ2܀㰭IYG]>#9.y?$7%es@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@,֟jrc7hZί/BKS 4z??ν_X]GCxoNWPJy9]U]vl{Vv7w67Jio蕽[׵[aI&8X 8])CLjJi7ivdO1R+>wpא{YFkJs炓VHrMó! ( ( ( ( ( ( ( ( ( |2I ,.Ȅ2#$H#3Yi$mݖPy'Idebd^8cGG*moan5+Hnonf\2J̉NQʹnw/ g]qG,lշaXgo ytC>{U_HgYs{tyhANhv[#-iΛpg#d`YHXA"I0Z; i$섎4?&8¡%AC JkM~|k[)?o]K$hmAd)*QQQ}4V)-.%eKKaVA@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@biv;*6<#v_Ŭ.ĽO= "!P;|KuRO~u;ډnR+Ԍa46i-ͲD.Cd\=(נ+_S/?/۬k q\8;vv6B7kzSf=ͭK+"ԽNvvEevq˪YA#j<>c݁|-JyU+E~Tt}F,Ei^ilڄlU9"Iq-;+]/_cTwZͥ޽湂:P\[Z!h,G<+Yii}ʳQ~to PnM kIo-,Xv!(g=gJ+۾B߶omwRųIٚ(;ݓC \ 39~a,\m?"g%5iE?3[V9ݘ J?4$~dqi\./-yl˧jlٛŘӠ+OhPO8^_%x:| ?R:ЂD)Fh[ދ.`b/9{G̕"ͭo[{QXRDEpPEkyԔ5{fuH@cF**sMo\N#5nYaICvJ0+8 )EEt9T/%;S۵8EY ^_o:fnsקK^BX{wO 2H|xՂ>a4Ysi/aۗzՔZȱ>Q3٥/C˟HB wGܤWP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@XZݪeʲMݡ1k: /SjOH(Jeq{4yshANhv[# ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( _OQLVI?F-gWt%}M^)|/}#rG]s{4yshAʱΠ)"SѪ9VQ̂j9X>ҞG2 SѨA`Jz5,iOF)s }=dQ̂j9X>ҞG2 SѨA`Jz5,iOF)s }=dQ̂j9X>ҞG2 SѨA`Jz5,iOF)s }=dQ̂j9X>ҞG2 SѨA`Jz5,iOF)s }=dQ̂j9X>ҞG2 SѨA`Jz5,iOF)s }=dQ̂j9X>ҞG2 SѨA`Jz5,iOF)s }=dQ̂j9X>ҞG2 SѨA`Jz5,iOF)s }=dQ̂j9X>ҞG2 SѨA`Jz5,iOF)s }=dQ̂j9X>ҞG2 SѨA`Jz5,iOF)s }=dQ̂j9X>ҞG2 SѨA`Jz5,iOF)s }=dQ̂j9X>ҞG2 SѨA`Jz5,iOF)s }=dQ̂j9X>ҞG2 SѨA`Jz5,iOF)s }=dQ̂j9X>ҞG2 SѨA`Jz5,iOF)s }=dQ̂j9X>ҞG2 SѨA`Jz5,iOF)s }=dQ̂j9X>ҞG2 SѨA`Jz5,iOF)s }=dQ̂j9X>ҞG2 SѨA`Jz5,iOF)s }=dQ̂j9X>ҞG2 SѨA`Jz5,iOF)s }=dQ̂j9X>ҞG2 SѨA`Jz5,iOF)s }=dQ̂j9X>ҞG2 SѨA`Jz5,iOF)s }=dQ̂j9X>ҞG2 SѨA`Jz5,iOF)s }=dQ̂j9X>ҞG2 SѨA`Jz5,iOF)s }=dQ̂j9X>ҞG2 SѨA`Jz5,iOF)s }=dQ̂j9X>ҞG2 SѨA`Jz5,iOF)s }=dQ̂j9X>ҞG2 SѨA`Jz5,iOF)s }=dQ̂j9X>ҞG2 SѨA`Jz5,iOF)s }=dQ̂j9X>ҞG2 SѨA`Jz5,iOF)s }=dQ̂j9X>ҞG2 SѨA`Jz5,iOF)s }=dQ̂j9X>ҞG2 VIsUݒѡZlx;FыY%]?zSWzA@"F|Ku~uF+fqأPPP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P.,Meٙ I-טD,#Fn)'<ջ%q3=?0;aݡߛG_?4/{r_fCv~oZ^0?nп#S/ ÿG kl+?4BFDF+q-Sd@E ma-wKf5mwp2| qIs?\~݌?nп#S/ ÿٚg z9j/axw3LB7G-O/fi7h_3 =?0;aݡߛG_̫Xɦ F9ITQ--ʄHnk]I{-~[']Þ0Ҵg }V( ) pIWͯت[=\Sk}/K?FP˚_ė :Ǫ;ĒrNֶSQu|٦w,Mu.&$L*"7lvF[mdz؛9͵[΃ig" B\9Sta<_7E/sV⬚OIG]^A Wc4Gwy??`sҹYƝ:י==#t6`NVwg.m9[ JO:e*$7V*$AA'VϚ1Nm?K~FQJ_uV5484GQikO5ܒ)XmpX1cL_W&RМv緣qm^[kK6jWⰳ{$l hݓj—2d[+7t/E\h4,Ć"N_p0 Ǔ׵MG(r+RkヌN6n-[FmCVb yl>ip˕`X|d=rNn16좟(Is[~7Etm.AcgOX%>FvH'q9'5Ty(=9o~9qRU٤ԓ]Ӵc :MIk>AFI8Ӫ!'ݭtZtʚSk-SMkD/\Y&!1Ʀ%b2q֜.0zI[e/5ce^Juة-4B5KvRYP,mr0 G4QU%8SK"HӧRWOfO뮞giZge\:$s"DZX:汄M_dtb#*}|o)24K MatF䌅dGqץk >nY_nk!TQ6ӽ5KY?|꧹-z؃c7hZί/BKS ?6|2{4yShA?jn\v(P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@!@h:˝NLk{hYR% ш `(OMq<#W:+?mdݷ8xZ5"(' rZEI6SB2J3 ?edLV)QQPvwk}G)tꕓEoG:aLap$]sv\N{mVG;f]hlvo; w">J8 KguTBnٯH4e{ki;mIh;%lY=~odMOjo~Hq(٦{e+|3qv7-%rq,I*Lf06sibDџLLٰ&afA#LHLE)EK~8Snl% v2/bcǑmvoVReH4kVn5 BdpAٞS^EЧO3GLԯt[kk?)omW.r0gRcSxɹ4K^R-յUN.Kͨ?1haJ¶2%Qi:;Vqto}*PںU>%n;^he$%`̩d?錎5;_y_$_}ys|\Bo‹;SQEQqj;[WܘBpZMEyEk'fuq8[S2s,O,8oR96^{n'KrY4y>{:ղk1\j6Ю.# kb08h6^?NQr+/$VצiV7-6Qec48n9VW擗rEXّrkHŦ$%tv.f3""*di\zRV_קcGRN{z>2Yj,;f|0'ִޚIʣrԷxPԯ]5"(&I>c+ɗV;}'uqx 20GaT$pK>jJVv"Row1mYCnqKx99($}S)iޝzvrS0eoJU(Fʹyz3[ܽ N3-h+nμK_0SlAww|7M"޲43|g0(pIvmW)ԓ Nk-ZH+یm=*mn=QRwvM~ KwRMȣe^بTb^殤mVW{V9&Dr v r͏dޏ?Gã2oGٰA7Qs ̛g(l9fM3{6?& =dٓz?͇2ɿfÙdޏ?Gã2oGٰA7Qs ̛g(l9fM3{6?& =dٓz?͇2ɿfÙdޏ?Gã2oGٰA7Qs ̛g(l9fM3{6?& =dٓz?͇2ɿfÙdޏ?Gã2oGٰA7Qs ̛g(l9fM3{6?& =dٓz?͇2ɿfÙdޏ?Gã2oGٰA7Qs ̛g(l9fM3{6?& =dٓz?͇2ɿfÙdޏ?Gã2oGٰA7Qs ̛g(l9fM3{6?& =dٓz?͇2ɿfÙdޏ?Gã2oGٰA7Qs ̛g(l9fM3{6?& =dٓz?͇2ɿfÙdޏ?Gã2oGٰA7Qs ̛g(l9fM3{6?& =dٓz?͇2ɿfÙdޏ?Gã2oGٰA7Qs ̛g(l9fM3{6?& =dٓz?͇2ɿfÙdޏ?Gã2oGٰA7Qs ̛g(l9fM3{6?& =dٓz?͇2ɿfÙdޏ?Gã2oGٰA7Qs ̛g(l9fM3{6?& =dٓz?͇2ɿfÙdޏ?Gã2oGٰA7Qs ̛g(l9fM3{6?& =dٓz?͇2ɿfÙdޏ?Gã2oGٰA7Qs ̛g(l9fM3{6?& =dٓz?͇2ɿfÙdޏ?Gã2oGٰA7Qs ̛g(l9fM3{6?& =dٓz?͇2ɿfÙdޏ?Gã2oGٰA7Qs ̛g(l9fM3{6?& =dٓz?͇2ɿfÙdޏ?Gã2oGٰA7Qs ̛g(l9fM3{6?& =dٓz?͇2ɿfÙdޏ?Gã2oGٰA7Qs ̛g(l9fM3{6?& =dٓz?͇2ɿfÙdޏ?Gã2oGٰA7Qs ̛g(l9fM3{6?& =dٓz?͇2ɿfÙdޏ?Gã2oGٰA7Qs ̛g(l9fM3{6?& =dٓz?͇2ɿfÙdޏ?Gã2oGٰA7Qs ̛g(l9fM3{6?& =dٓz?͇2ɿfÙdޏ?Gã2oGٰA7Qs ̛g(l9fM3{6?& =dٓz?͇2ɿfÙdޏ?Gã2oGٰA7Qs ̛g(l9fM3{6?& =dٓz?͇2ɿfÙdޏ?Gã2oGٰA7Qs ̛g(l9fM3{6?& =dٓz?͇2ɿfÙdޏ?Gă+uh3{6>az?/dÜ?d?Gaزz0Y=bQs,~g(L9.*h3{6& ~͋dޏ?Gã2oGٰA7Qs!JZ?/f7OX3{&'_ =pœ/ɇ8bdÜ?d?Gaz?ɇ8e^Ÿa;2oGٱs ̛g(l9fM3{6?& =dٓz?͇2ɿfÙdޏ?Gã2oGٰA7Qs ̛g(l9fM3{6?& =dٓz?͇2ɿfÙdޏ?Ga̋6r[1iBMݡ1k: /SjOH(Zeq٥/CʟHB ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (c7hZί/BKS g\٥/CʟHB 4ng4Rc}򣙅O迕,jEa`S/G3 ڟ*9X>Q_ʎf?Ts0}򣙅O迕,jEa`S/G3 ڟ*9X>Q_ʎf?Ts0}򣙅O迕,jEa`S/G3 ڟ*9X>Q_ʎf?Ts0}򣙅O迕,jEa`S/G3 ڟ*9X>Q_ʎf?Ts0}򣙅O迕,jEa`S/G3 ڟ*9X>Q_ʎf?Ts0}򣙅O迕,jEa`S/G3 ڟ*9X>Q_ʎf?Ts0}򣙅O迕,jEa`S/G3 ڟ*9X>Q_ʎf?Ts0}򣙅O迕,jEa`S/G3 ڟ*9X>Q_ʎf?Ts0}򣙅O迕,jEa`S/G3 ڟ*9X>Q_ʎf?Ts0}򣙅O迕,jEa`S/G3 ڟ*9X>Q_ʎf?Ts0}򣙅O迕,jEa`S/G3 ڟ*9X>Q_ʎf?Ts0}򣙅O迕,jEa`S/G3 ڟ*9X>Q_ʎf?Ts0}򣙅O迕,jEa`S/G3 ڟ*9X>Q_ʎf?Ts0}򣙅O迕,jEa`S/G3 ڟ*9X>Q_ʎf?Ts0}򣙅O迕,jEa`S/G3 ڟ*9X>Q_ʎf?Ts0}򣙅O迕,jEa`S/G3 ڟ*9X>Q_ʎf?Ts0}򣙅O迕,jEa`S/G3 ڟ*9X>Q_ʎf?Ts0}򣙅O迕,jEa`S/G3 ڟ*9X>Q_ʎf?Ts0}򣙅O迕,jEa`S/G3 ڟ*9X>Q_ʎf?Ts0}򣙅O迕,jEa`S/G3 ڟ*9X>Q_ʎf?Ts0}򣙅O迕,jEa`S/G3 ڟ*9X>Q_ʎf?Ts0}򣙅O迕,jEa`S/G3 ڟ*9X>Q_ʎf?Ts0}򣙅O迕,jEa`S/G3 ڟ*9X>Q_ʎf?Ts0}򣙅O迕,jEa`S/G3 ڟ*9X>Q_ʎf?Ts0}򣙅O迕,jEa`S/G3 ڟ*9X>Q_ʎf?Ts0}򣙅O迕,jEa`S/G3 ڟ*9X>Q_ʎf?Ts0}򣙅O迕,jEa`S/G3 ڟ*9X>Q_ʎf?Ts0}򣙅O迕,jEabKyG!34&B6<#v_Ŭ.ĽO= ?5?fGcq{4y3hANhv[# ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( _OQLVI?F-gWt%}M^)| L {4y>'GZSZ?ݨ"H€ ( ( ( ( ( ( 7Yu{aA\+#hR:TWVX~! > 1TWQ¥?"H=C/U}bAb|??zcN6nt*. 88BtUt|'KH^}E?S 6<}E<,`>g|S}C5C^&eU( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (,Y?Gq2Y&ǃn_^5x>kzBC(W:(>|O+R wGܤW/[a?|WkG?|lΕc.yy>f5 jr]?_m׊UMBNͷDAt+6m/|NK%vֿ#'K6.?IR}֭Q| ߍWK6 & ϘO#qzn_p])_o/h`\yr[rKvfU( (WŸ4i*LOc5a!SRCc!ov9ыtae﾿:ɪ]?%~>#ּAZp][A*q;;qڴ4b}=9:k]9^R;:nou(4Սu#+,v>lۏzڅI>J敽vͪQv{v.+wXE[DE@vn26H= /r1TIcCA{-ElrP%4A$'=wlvߡgO¬S+t^mbҼ5jzXԧef 9u't7P-?|l艹tm+NG7\ҲJ$1ͤ dҕ:{{z܉j0NV՟h.bo]"BgӾ%[u溰3F #ƭJU&vU Jm_K]?_-o-oHɻ>zqus:P2 Ѐ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( eU˕dC?bu~ zO^➐PN?g=v^GD'IZSZ?ݨ"HMtn%HW%()MmA;0&w_:{^.-oEދu!GmQp5&m8n~c)uL@k).^ 9AӇNk=~ӵxTI5mmu {p8ުHuF'}>Ilj)Ӯn!3]G%ҤPGnÚ*z]V1䛢$W̩MG%aI, Pdg$ޢ5Rg-Rtr~Z^M5 bQ87NiS!(NVP&b}gOtW';29ӓީJie~k:QKV۷o/j7/FhmZo(t<}bҜteg;Xt/G- $R8o;XXǭig̞SM'PeG сEmW~ Uml4#r~$Rb9#+(Ud bsҦ 1r|Ѝ<_\l>wmw"(-ozd-_ɥևc 0" "LH9ou,k9K~eʝi/Ngw[K3.׍)B+N+PP@P@P@q4g"tdiy6SVl^KD<GB)Ŵՙ[J,t6[t-7NRmRV"д?DYlO2A z rRe4M]cq9%T ՁE'ssA{`<;G> ϭԟ(ϪP@P֗]Csn&ã`09vۉIm$B Q)96Л^ԦK{vأz `tG"/bZIOv!!/4rl0ϏE)s.v#xU{'UfW\Wia3Bbv_r!Y^Yg%Ā`2S1zRq]O-]ԉffkIeRVF`ʼn#sN1Qw])ԓM>2koj+ Vh6oP'T*0QQKD$mx IӝID(brrppHt=R"i(5|9z( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( eU˕dC?bu~ zO^➐PFqn1oQס8#ȟI+R wGܤWP@P@P@P@P@P@P@E`-ټ^ԕph s@\<;怸y4609C{( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (,Y?Gq2Y&ǃn_^5x֩AUcK#QWGqG?H)Kr^fτYu$vp]H9/JRMŤޟ{8rHl]i>SӍ"Of}a00WqIuZTv^i{9>i8&gvͶ>Lн-O{%M|q3prqP+'(OVooM?nH[[dˍFmS|o=::%+7ʯmSo_-oK뱉yc$v+`rr#1Da=M_7b\ݣk - ?6?aH眖%BK&qzFNޗۡ5>^i]oP3n^Yarc`z.p:|MFyzC_7{3GQT)Z˚䵷vі m{nD"$!n2yo8U;E~iם[Omm]=)!X2#.Dl_5GQЮyߓIm{ٷԹ|{E)6idW{vrMKm̖u{uz-n #́=BM?wV6#r2VK;;M<}VZUpZܙ l bkSbU)K>Ӯz}y%t[гjڍ4ۛAq8fpghǦY,plfB08 v<*'+=*~%.]7IkOK2捦[pi usz@lIJv@䃻vHe$ZIںMwߠNѤtqVKm$^-i^W(c e 97:7QOս5s~Jq;/+%̾OWҾƓj)^Vӥҿ~X.V Ou;|ኣFJH]r}EB']OOoȽӚK4s ( ({E%Ɲn xЯQ('Jv:M^TZq}Y-J洗+3E$MM%Y]b.1|dz# ϗDQ&g|'Ze?3??{/07~0HYm'#nj1,ı$OzЁ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( eU˕dC?bu~ zO^➐PFqlw[Tzq^D'IZSZ?ݨ"H RK+ QO;.H%G;y\gަpSI>dƦF*glF18Jm k˧7\b2F0 =UEeȚ}_R n5e9vcx:zRQJ-{"+KdQH\4(sVl`'?|z}nM\ ./.i/$dHX81Xr{j^FHc[(T`9$~y%~cMkTKԯVU ;B 9#n[h'&ީ[E>}<=̒DўV%9$r>(; m_] .H]ɧɽȧ[<+ ؒqL]z%eH׷LZb1C@@WnI4nҴM* 0)F2V=n],E?ҧ/'aW}S]m[QXPHtl1(x<(QKܛ\m? ~lM96kyd9ۜu,o{4ܩT  ( ({xfy'pk6 f*;Oor5K&qxj)eb ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( eU˕dC?bu~ zO^➐PN= q{Dy-jANhv[#5-ǨjnUZyAT3'*g.X݇y%w:OCPK.6𕵷ii]·DڣH>fVVI/esogR&K6۶Zov=cik}^QWe*#78l[ͥ3]GTҶtTWg$QΖdda\*ڛrVvԚQKdj ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (ŗTw.Ulx;FыY%]?zSWzA@)oiAVfE`UQ}~;ډnR+Ԍ'X'L'*ÌpG4tkv:H\j7#q%ǘN@]w)냐j"ӊ_>%9>_7̥ws{ui;VZko31T9Ҕ#*J|OK_q[.i,) 8Af#cd+)R\&fo[Z(Y M Y4"^쪩_t3s\qzm碷Cq[ZyoK/]ZiֶQiK #%$9$I99i*7iW+_wj6GӁ6?{$HH,R?)){ڨ]ܨ8' NMg',_m;0ΌHp3.iMt\ʥa.ZǩG: ĆDF'{>qNweso|_Bdm|k|s6Wcys4-& p/9'޺UOs8秮:[]kz%+ecdgX4i]箿/>\UJ ..-Eumr", =}J48(MiV3S0 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (,Y?Gq2Y&ǃn_^5x6)ŴCf"I+B wGܤWP}w>?!G/w =F;Qe︹SJ=Vuݴc(C$;TElrov@G$,2d1 N$'ӿu؇:e̥׸aΩk4jW9+;)KZJW:֪oE`m}7g8B)Y!96U<}R9J%''y;[jwr]ZCs.w99 G*wR<Ҽ;I#fv9,OROsBI+!6ۻL sjwGg5Ԗd+\t,o{j5)%ʞqEkq{u-XVdL p8R[ [u}Jn/#bIvݳTG 7Qh$G28spy>8E|ҽS绚I$YM56ۻ"  ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (,Y?Gq2Y&ǃn_^5xWۦjvB+أ8#ȩ?Q;ډnR+Ԍ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (,Y?Gq2Y&ǃn_^5x=3S>Dy*(>'?Q;ډnR+Ԍ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (,Y?Gq2Y&ǃn_^5x=3SR+ס(#ȟGV֏j%HR0 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( eU˕dC?bu~ zO^➐Pǘ?秉2gA+ >?Qf+Gp.(Zf;_ha`K-,iE/s0}fZ9X>G3 _ha`K-,iE/s0}fZ9X>G3 _ha`K-,iE/s0}fZ9X>G3 _ha`K-,iE/s0}fZ9X>G3 _ha`K-,iE/s0}fZ9X>G3 _ha`K-,iE/s0}fZ9X>G3 _ha`K-,iE/s0}fZ9X>G3 _ha`K-,iE/s0}fZ9X>G3 _ha`K-,iE/s0}fZ9X>G3 _ha`K-,iE/s0}fZ9X>G3 _ha`K-,iE/s0}fZ9X>G3 _ha`K-,iE/s0}fZ9X>G3 _ha`K-,iE/s0}fZ9X>G3 _ha`K-,iE/s0}fZ9X>G3 _ha`K-,iE/s0}fZ9X>G3 _ha`K-,iE/s0}fZ9X>G3 _ha`K-,iE/s0}fZ9X>G3 _ha`K-,iE/s0}fZ9X>G3 _ha`K-,iE/s0}fZ9X>G3 _ha`K-,iE/s0}fZ9X>G3 _ha`K-,iE/s0}fZ9X>G3 _ha`K-,iE/s0}fZ9X>G3 _ha`K-,iE/s0}fZ9X>G3 _ha`K-,joE,joE,joE,joE,joE,ioE/s0}fZ9X>ދG3 ڛh ڛh ڛh ڛh ڛh ڛh _ha`K-,iE/s0}fZ9X>G3 _ha`K-,iE/s0}fZ9X>G3 4ZK mpwb4R ݡ1k: /SjOH(zcb+ >)z/U~v;=넳GWq1<pzk:-(eQ+%oC'MӴ[ N"/qs5N|wR9:y)Z`ymݸonTϗ^n]>-ͽP%ox_֖74S7Bͷp gcgYQST}͝IpC,|@#|e[=K]v7ŕԫ K.˔Q675' qڝWlJ[$;N}>a5;yUd^ƖHc$[ڱ@d<*Lw=+VNri]T.v\ݎŸe]Un-zl+x\hM<@kVCoB`Ȩ *uUo(z^*bRR},kծwx:hxeni4KT񍮞^wi&M]rݯ'lEbҵVi]4IծmKXҒ-14VY=ob)^l /~MW۷ep n3פῃ*oJ?57.;j ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (Ҁ/[j'I]7Y. k[#N1:RLEO//g|-@-{15ڧg|-@-{15ڧg|-@-{15ڧg|-@-{15ڧgךNiΗОI0U2s׊'y)⨁(2ޣ o&j^v[=A WH"eZ*<%9Z%8Zok9j_^[Zbj=O/[Zbj=O/[Zbj=O/[Zbj=O/$/FTa7UMB[56VP}&eMs`n%p=*Uۻ)+"Ҭ :]nk{Km*ʁT9n)V_z5qwy=́C#HzNN+*t8(-SVCZP@P@P>[]=ɖƽlA?F-gWt%}M^)|Tlz-ʄ?:pWy/R*̯sgāݜ1qLCT4?! =fِzO3'?fd?ޓGA2I٠aQs0̇~c(h9fC?1{4?! =fِzO3'?fd?ޓGA2I٠aQs0̇~c(h9fC?1{4?! =fِzO3'?fd?ޓGA2I٠aQs0̇~c(h9fC?1{4?! =fِzO3'?fd?ޓGA2I٠aQs0̇~c(h9fC?1{4?! =fِzO3'?fd?ޓGA2I٠aQs0̇~c(h9fC?1{4?! =fِzO3'?fd?ޓGA2I٠aQs0̇~c(h9fC?1{4?! =fِzO3'?fd?ޓGA2I٠aQs0̇~c(h9fC?1{4?! =fِzO3'?fd?ޓGA2I٠aQs0̇~c(h9fC?1{4?! =fِzO3'?fd?ޓGA2I٠aQs0̇~c(h9fC?1{4?! =fِzO3'?fd?ޓGA2I٠aQs0̇~c(h9fC?1{4?! =fِzO3'?fd?ޓGA2I٠aQs0̇~c(h9fC?1{4?! =fِzO3'?fd?ޓGA2I٠aQs0̇~c(h9fC?1{4?! =fِzO3'?fd?ޓGA2I٠aQs0̇~c(h9fC?1{4?! =fِzO3'?fd?ޓGA2I٠aQs0̇~c(h9fC?1{4?! =fِzO3'?fd?ޓGA2I٠aQs0̇~c(h9fC?1{4?! =fِzO3'?fd?ޓGA2I٠aQs0̇~c(h9fC?1{4?! =fِzO3'?fd?ޓGA2I٠aQs0̇~c(h9fC?1{4?! =fِzO3'?fd?ޓGA2I٠aQs0̇~c(h9fC?1{4?! =fِzO3'?fd?ޓGA2I٠aQs0̇~c(h9fC?1{4?! =fِzO3'?fd?ޓGA2I٠aQs0̇~c(h9fC?1{4?! =fِzO3'?fd?ޓGA2I٠aQs0̇~c(h9fC?1{4?! =fِzO3'?fd?ޓGA2I٠aQs0̇~c(h9fC?1{4?! =fِzO3'?fd?ޓGA2I٠aQs0̇~c(h9fC?1{4?! =fK =f'TޓGCaQйeA?1{4? =fPzO3?O32I٠aQs0̇~c(h9fC?1{4CO3?'?fTޓGA*I٠aQs0ʃ~c(h9eA?1{4>f('?f2I٠aQs0̇~c(h9fC?1{4?! =fِzO3'?fd?ޓGA2I٠aQs0̇~c(h9fC?1{4?! =fِzO3'?f[Yo!tg$rjRX$wAKк>>2Tsvvg [5a*oJ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (6<#v_Ŭ.ĽO= G$b1}.ZWy~7%nfTvYV c"1ߝ+1ߝ`c}:.<~t]yv?Eo΋1ߝ`c}:.<~t]yv?Eo΋1ߝ`c}:.<~t]yv?Eo΋1ߝ`c}:.<~t]yv?Eo΋1ߝ`c}:.<~t]yv?Eo΋1ߝ`c}:.<~t]yv?Eo΋1ߝ`c}:.<~t]yv?Eo΋1ߝ`c}:.<~t]yv?Eo΋1ߝ`c}:.<~t]yv?Eo΋1ߝ`c}:.<~t]yv?Eo΋1ߝ`c}:.<~t]yv?Eo΋1ߝ`c}:.<~t]yv?Eo΋1ߝ`c}:.<~t]yv?Eo΋1ߝ`c}:.<~t]yv?Eo΋1ߝ`c}:.<~t]yv?Eo΋1ߝ`c}:.<~t]yv?Eo΋1ߝ`c}:.<~t]yv?Eo΋1ߝ`c}:.<~t]yv?Eo΋1ߝ`c}:.<~t]yv?Eo΋1ߝ`c}:.<~t]yv?Eo΋1ߝ`c}:.<~t]yv?Eo΋1ߝ`c}:.<~t]yv?Eo΋1ߝ`c}:.<~t]yv?Eo΋1ߝ`c}:.<~t]yv?Eo΋1ߝ`c}:.<~t]yv?Eo΋1ߝ`c}:.<~t]yv?Eo΋1ߝ`c}:.<~t]yv?Eo΋1ߝ`c}:.<~t]5HC1#8 VI?F-gWt%}M^)|i:O.+;ҏ<ʟZ֏j%HR0 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( eU˕dC?bu~ zO^О7 n1oiw<9im_6zwOHH_zIc;ad|'y([}b@?FZpX(TaùK%q][g/v+N471Pw5Bb$N=Mc(њ%>Iݎb{ %da"!3t6_S$68sQ?T(傎ר7TLҺTSzm뫂D1n Zí1Zb<34R HFj6_Wz7jK/c>ÚT\nldg/ϰ?aTJ_[e>ڟOstaAs 8]O5+>K}]Ci}n^]\? [e.›Gwx ҏR`ߥZ= 7ߡTagQrǰſ ֕t}c`,ds7Hxt}c2bTnRյ3[Koa$lΜq =ŭy;$j+ag3]OH g4eO~G}JҏQKx~Qait{cS'in^]T? /Q`T? [e.>G] \ߘ &oҗh7} G(7};J\ߘ{>?~}r~ag {4G03|x>}r~agoair=w=?am?4}jpS(]0S/bh.{)u?=0S _[e>Y?COTaU?h.{)>K}704}jpS( קaL ܟj_\e>™G(7}w~G0SxQ?a|Gh7}i^Q?a=0S(hO*{RO zSO!Q=0S)"b?>?~֩wϰƼ[i]ϰynzLw}iZ_tY=OS>gQb˒?G)c>q*j=\ħ ?CGOMqR{)̪'_\ߘ{"71 ?Q`kWwϰ߶[Ot]03;P4}jp3=%G+gt{ags?aO`lgښ}03Do3MW֩wc>'}':h.gidMY= o>O{[Ot]ϰu ]ϰs4K{%!J_\c>_Z>G034H\ߘ{5ߥ/o= hO| ?Qo=."hO}/~Qo=bhOj{a_ \e>‹>G}Kc>&G(7}S=03'J>G}Ώc>~Qo=_\ߘ{M/ҏQo=0~Gh7}kdCO{aAu >G}c;CG(7}Gҗh7}3?Qo=J_]ߘ{)J(Oyҏo=g[e>}/~(7}7P>G}[I.{)v~aS2(O ?Qo=guoҏQb6A̟t_=4}j=Dijp3H1l{q>hϰm{n&LM?}KK,R]CϰԾs'CR]CO/>S?`(Ot(O|(Oy;J>C1{)v:?~}v~ = J>C?e>fGh7O P?]߃e>J>C}ʀg<}({)5?Q0S.sGh7}iGqS{)Ŝnh{f@p[{agAC}J}v~aO:<]ߘ{)vHJ>C/e.eA_]߃e.%C_^߃a|)}z~ =C}2ߥ]߃e>y{?a_:?~}v~ = ҏo=3ѿJ>G0S(3ѿJ>G0SbgGh7}_ӃTt_=T'OTa^DC8(.gP/Raj`j>K}BQR}cW C>K{m]ϰ%N VƏR} Gϰ3ޏa*!!G֩wc>âeY9 ڟ֩wc>¿ɍf}Z$= /R}yj>K}, ӯR}P4}jp3 ?R}[?K]038:?agvGC}']߃c>†c>OZ>G03 揮o=r= QQG(ggQ=0342zRϱ-N=)u'F}_hߡNƟ k/WW2 CNAQSA.P5${i=;9|c.m<<^Ά5(u$q\qmƑd?y]hardinfo2-hardinfo2-1331e88/tools/LICENSES/BG5_LICENSE_CC0.jpg000066400000000000000000015715171474767047500227770ustar00rootroot00000000000000JFIF%%3   (!%"/#%)*,-,!140+4(+,+  ++++++++++++++++++++++++++++++++++++++++++++++++++ }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?hW0M)n$G,͏G47~_נ7 뼚W_˰UbO`,3oנ/?ߗyzzq=jf\y@ڮ?缿٠W_/hU4}{}>q=jf\y@ڮ?缿٠W_/hU4}{}>q=jf\y@ڮ?缿٠W_/hU4}{}>q=jf\y@ڮ?缿٠W_/hU4}{}>q=jf\y@ڮ?缿٠W_/hU4}{}>q=jf\y@ڮ?缿٠W_/hU4}{}>q=jf\y@ڮ?缿٠W_/hU4}{}>q=jf\y@ڮ?缿٠W_/hU4}{}>q=jf\y@ڮ?缿٠W_/hU4}{}>q=jf\y@ڮ?缿٠W_/hU4}{}>q=jf\y@ڮ?缿٠W_/hU4}{}>q=jf\y@ڮ?缿٠W_/hU4}{}>q=jf\y@ڮ?缿٠W_/hU4}{}>q=jf\y@ڮ?缿٠W_/hU4}{}>q=jf\y@ڮ?缿٠W_/hU4}{}>q=jf\y@ڮ?缿٠W_/hU4}{}>q=jf\y@ڮ?缿٠W_/hU4}{}>q=Om6%3.~4R5 z:u\O${+4ǰڿo!Əi.? C]ðoj=`+4{IwgVh{W?%=;A[K{8v_Gppڿo!Əi.? C]ðoj=`?+/4{IwgV_h{W?%=;A[K{8v_Gppڿo!Əi.? C]ðoj=`+4{IwgVh{W?%=;A[K{8v_Gppڿo!Əi.?u C]ðoj=`+4{IwgVhu5,{ CP赝R)H+ԑz24r(_KƦ;3$uQ+)?NVں>W/eAo$]֦9:4( Lo$:5 _rv49:$NnA[ /gVh{X%=;A[ K{8vcGppo%Əi>? K}òcGpp{X'=;A[ O{8vYԫ̧7')IYpu5,{ CQ$Z ȱjȲ y+hiy:v#7ֿX3PTں>WʇíJ$SEpRRJMƩ;J|GIu"O=?+Qn F}>!ֈ5ҋME&՛,i,,nX+ B}5ӋfNJm5m.2dz~`ׯNgW7|t^R?Zϡ6b" 1~P#KMcW$3{Jq+ft.ǷdU>X4<Er.v'Ta?i*qM>܇U9E]9O ( ( ( ( ( (4k,edҀ9Rz%Ky3ǟB]j=#jӭ8嵻@CusPy2\]4p #Xh8?F{CT vzσ:;FI%QD8$ciVSSӧ}|u|.NTJ|tWWu ѣmŬ#86zsdoC'bVNKTsݿmmקQ<,o'j{?×P հ?xGʻNp1s]}SF"O=ɝĊʹ'@:<8𖗮j71K{d7ܬͱBc SFA&SQ(I ď#)V=G_nuL3ȞS Pd9scZWt顸"Mfk W;7l>T{sҀ4| Tj]D^Hb+"(cy4mxKg^M˔s.vhzMwm.cA8VV,A d1p1*MsnobLG))$}ӒG@+A k-ֶMx( *,-nyۜKXxbG")ZM%eGKndŅ'n08@m6fܴdWI 5 d8 Pl/n'ԵDAg 䖌c{[rT` )P^to. vY Yɵ@ vhe$vN'w:I! 2y4|uƟ=qrmfd h/F[nuF!*, #T `w8(ggq KX6s^eF*mÅ9] T& '@:hHg:2S@<H_1ywq?F.<: osPZ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( m7%mŽEgRxӞ[YGſ.7vIo1Y7g3( $+ouoLyPۖ^ݿZvvr (eioߞ6hf(lxq:}|Ȩmrj(|qgܱKXuמzF2,CJ>@'0\/ lۂ-Q^#FJ!$H qy8j59_n}2d08S@n5^{RY`/I9Je_ynԯn|U:v}I*O Hhx7{-gJ\zw [h}cR9Ӓdd#4R=F8\!1B.3А2;u/b"G;Llb&mXkǻm[P7oil(;}cSk}F+P:Np `=Kyn%XbLtze<%5#W-r諓<5Yn&LepszX^\ږ VL{Pޫj5} E1:r$d7q{{spO1Yq}E- 2+"(Xrv<@꺅ԱIsw46I7O ]]O5!HYy Zw,r]%Kb'5iFnܜt P@"\x"*+)H'Ǜ &F3@@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@xvGamH%UQn({..y;I1$h*( .gδX%˾'*`UGb @ŕW6sosX!#h(>țOPC@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? jP4}C>C@ڡhT? j\O J0ʐG ( ( ( ( (KJdPAN~Ocv?cW}f#g@P@P@P@HpzZJ(ROAր3jzPbdRww P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@RDhGeIрdER(Xut ( (Iݷ~8\gր@Vր5cq"^@9Qd#+9U]$X Uhӥ).6 >jJJJtQ4G@)$ϖf55 ?le]Ѳ=8<A@(RT JJ(X fm7,P@P@W}f#@f c[~,@mݜBK hN$u tPֶ]HRd@V46f-7)ICٹhԣ0)(𝎝֡wl3]$ ES{<*ͥVeC3ZIC wxsh7!O}q ^ٮ^ aZQYrCl}q(sk#K֯D`F7`8 4^q@nh< ib'1>h L3g_!LJP`ќ۷`}P  MwZ hdP$R*4"r| IGvEۿ0oscyyoG.}9cw۵ҽlj.GOh#$s(W 22mN<򂎼KvKR|u{zn_Zs{ck_e6f )d- :xXTwyItm7OM"K/﮵?Lo"/]񓀊8Qo%ʕkI潶NoRnBNMF[X32`AP H TWUnŸ~uMɴ߇ke$:w 2ѩ!v`HSwDNڿKk RKy4ommoG,Ŷ9PUsN :Z4~j4_5_ܳVYP\5+,;"?{`38􌿚/+6•ߟ=qcͥF"XdX-d <NTRHYlmoW+/Ee[ }WL6w#rr nxj}Z}{ۯP溺o^UѼi軈@wg'}ڴe)if߱I_[mS۴dn妃*^koۺI;oԭ/VTVK $GcCcvpzQ?q?].(5]y}qĶ%-,H# Vܔ{Mby+m ju<+#_[E hUvہ@ǒ:3N<,{q[\K_ Hu]2+i'A<&B@%*Nڻw5ԗ(ދwi}~E5:w1a nv0-wcE sJҍ%׭c7%boiq2K1VxvpuSN E*斑濖ϺU(E^~$:K}ouei7ZjKv^m_O{2/Mwp_o-%XhHo<JOOm}~a{Vz{y{2"6Vݮm7r1bgm ✽}JiԪ6K3]Y,s;˷-D޾緛vvNKmoӚ٭ab~܀I#93S,g%^w.j/Ni{q,f"]KqJ LԾѕYi_Kuٍw/^3M.jW^ an;*MeG@zm9Jwyz"^oY=U5M6Q,HD)̍d' +Ev'w$tV]_>&Q9 ʕʟX4o&_cgU6*ŠbX; NS}mVw\k'ܟMs5<)u4BHV7e12oު˴`Ӷ蒿oBڻk>7z:Ηu#/d+cVם Lq_Krv6Rŭߘm ZGj҈gJfn)%'+/oWrT޶=.鬓RRLYȬL[#yڳ%v QwI{oZN{dIf+/Q|nXO[4Mm->V=mկ_vr{}; ݔ2YJpCd m#+7ͥ-kn]nofGN[(e287d6AAȧ/u7-5KW_Nly(nZ柠<q2XԴ>2<$`|RJt׷[]Bq潗3WNߟTj@jq!ppr{Sko_)_I4Rէm;<\^[ŽHl>~STw--|?h]d;^SaڔM3%"Ibp8N6Y~I0߼ߚW}.4N BiIr@P$d<im'W!Kvm[o[,Ia&@p1$c&I}=SՕ7wnOn/l p-ϕ%Kd@x+E7|d Tݒ5|+u$SYI}YHpCdq'#Kj7t_{7j^Ӽ#{,Q}x’ wݓw) qu=n]TqWhߓV25M?Of-ra۴6}қ/T % mjkm3%ÕPyӕ6M~ j+\҇7$Y,f<N¶{0=-^WMtVܛC&vWM$Qfِdyy$1ӯI7.W_N\,o[z_G9nn=>KH8RBBpH# S}5_1+ѩE53N/5aI]҉h88xߋ1ޒVݮl^ V]V!}Xb2v,9ʃ ډ.qO Z79\ı\ZOV{'cNI&֩;|o^b[ڬi_],3<0?T)烴A.jJiٛ?UBȩvI;Id|#}/R BIS>Ѡ].k[ 8'25rT)8cV.d_7 os+;%ejL[ .|}exݜqI4Ӓz$./v՗oDM;.foX0P6o'<`]Wa+=VkNU/E&-F X\2!% P*ն欭ӱ1G-+>ۭV2|Apm潴,0 pw(UJ{j9]駮qV%ԗVVPW-stPY8'sTՒo!;Ew\_ :$4h㷒Gr;N !U8\?#׷[q}JoKdnjZ&'ִh,wZ]u \2iq<:Qv|}{$Ҋ;si[>o1$2$9AI UM?cQf}pOލ~dBk i#Y!gǘ(;'+&r-i@ZOkWӼ9sv6"TeANwZ{nЉ9r7۷ni=M{hK`yL|Eݵ c/yһOo[މiN]mW;uU{i@F52[etـL[89,苿vv_Vwx?KȽQݤm2|sj(_J%sޫ]4M(`c?YJ=Bv&2EIُ6XWQ H$`OִKvD~^]_]eu'J5P[;kY&"ىV N=sXR๵nRV܋]|e<1clk%ݤ}Ȥ wmin2TN]鶽禪|QM/[jw-,>o>?^] FI_ZTxzצ;n)W'ZWw]ifXGN๎KK7D;Lpr2Ua$97Aݿ˯oޗ~V8jB ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( +Ry,{;; xKHYC[Y]Ҫ0 :ʐ{@ciStFL sl͔b r;7zG|I{KqjT_Lo|OXx_;@HPQ٠|VŷYfG2[ Dhkk \\qk 1'@ƶ֍ΰ5xyqX9b9/#p ľpMglcoN3P=i!7=H恒@6uoW|oog|ͽ:3P3@z?Zm^f#<+ՎC-rQT 4P@_mLVRL%'@(:}'UWg+M1Y[ӱ}RYGyd$& YOEhZ5Ƹ, YO8 ${~4xjVkxnRăe7^ݱs@i2y|aׇ "9x-Y\`c |K5Lmr|GyJhfIt")-o?C(qns›U}׭2%kn㽁;ګMiX6% d v Ӓp}^N]45/,ԎIku}w 5皨U.s$Ҥahf?^zon_NL׭4ImeIgK"VME.s$oAÕi &]?rݫ~W;kּko!P[;7Pr{m>*jbRi^vME)'Rfl@|KZ CBM:,a@F虊6y[51uƏY;>iؚƖϦj2.֝lNB3ǴT8uʚmQv~ͮkNؙ((hu%6T_6!ɲ&[z7gNzu洔)zZ^nys[ gN=z-:y7MZdL.fn4yām҉hJ;^Qw)_ΔtyjT,×I\zE;q ꚑ|=@9g_{؈K )l^[h& ?B-H8Kž[-SvJ宿x S-k $W_X>@Px yiDY/?݋'xo!/ͳ)*;H| Ǿ(ny_W}vkV ˦R |om vąN}/Zi-^v/oպ]֝q!KZ[=ܿhčKxUTc#y _۫WZ w+vǶ-,um:Kfm++JۆyiJjmu[ ŴM}BC9Ʒ[qǷ;vV޿E/M~K\oOOǛ7NNK-Dok=Vqe|-힝E*.]ɷ /nɿ6Rgӌy9NEKRbMwn_>˫46McRm9qڕO}yaʒV& u>g~7y{9iU!%iR;_Z=ݕܶW%`P*CAڛ9쨾ߨ"˃mCuQƤlTQI I,䎤e%wm[zs>˾V[őcgmec2S]"m'hF}"e~ӳ2P)CVWn`|ZxYغ&Kp ̤(Ut#VejljӺw?EqRNEͷgRMx'9NQuV;׳i_wʶ)ɬ4̳Hn_)B;_KmX_[)'* M*{ uY;KWȇum~%+Wko-nlͫ-ޣʠlTq$_Vݷ5&ka\ƈ2KytC/%EBX8#S[~ &:SiGw'gJ{_ޏ-Z?~POxkHy82g2zq8[~{Dr.]oռJvb.6dN|1_#$qQwdK{h ] 5{;]fh2kT qz+MF~[~ZBMyj3m$9ϵs{"ܾ-?oӛ[vߗk~ըY_$gxR r zWD2?÷cr_0[j}q,&;`sXc:vEWCVk6u-<Baq<{ c`ۻi$yv ]>i+AV﮻܊Ŗ}?_m]'}D\d5+rmߖ~vZ_n;[$X_ݯ"p]n)X+>UKɽ6jvo}kݑ!{mR;$tȬ;SQUTo 4 wO :i[yNٙmJKHUCIꕼ޷nZヘ5Ȗ_E esݴz;$r-#$$TSpqJiNUխ4Rmr[7Xs?`;})!%҉1,zӎ9ߟ]!&_bbҦoj-*r@jv)D־'ԭ8!d#aFe)L {B\7'r[oԼcwkie:Co*:! H9\9Tbo~] k_wUMRmzZTȯQ\@V])7޾b#%kF[ioem.}c-ެn99f[ ˆ{J;?_Rӧ& ; u'ӦZApX$ܒ28 ֒\冚[SJn޿fsI$'& P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@xkI/%FqyS(f=Ֆht`.^&cc#Y _ZzVd&X䐋!rQsMrTxs^ӴGNԴ澳hݕ. ,8<|ޔ}'3~{۟/vu4x_t;Mtְyv=@4۝:+ rHMu65p?ehcғS-M,2RU!'@~I[kXﴻŤÕa؊"ׇ[AUotЛxbc4tK{"-Ü ހ9 ڭ]DvFOz, i>7|n߻vn}j+Kg'l%aɓ=1@COB?h>'1aVuip}N̿<"8+=wŨh5f%z'vŅςd? 7hʎ84MSb%>K_ĚM$3y,&N1ڀ1ջR3m*'K 8(׾|Uw Aa}G[fswumoyrTgF1@K?ŕ p25żKa첹8+cgZ(#Bv> ۦ/?ڿi]ُӯw ("՟Cj( f#'<@P@P@P@P@Remp;}(?L }E,/o?0,A`Ƌ}~`4X.6_ti? MWh]mE>o?0,A`Ƌ}~`4X.6_ti? MWh]mE>o?0,A`Ƌ}~`4X.6_ti? MWh]mE>o?0,A`Ƌ}~`4X.6_ti? MWh]mE>o?0,A`Ƌ}~`4X.6_ti? MWh]mE>o?0,A`Ƌ}~`4X.6_ti? MWh]mE>o?0,A`Ƌ}~`4X.6_ti? MWh]mE>o?0,A`Ƌ}~`4X.6_ti? MWh]mE>o?0,A`Ƌ}~`4X.6_ti? MWh]mE>o?0,A`Ƌ}~`4X.6_ti? MWh]mE>o?0,A`Ƌ}~`4X.6_ti? MWh]mE>o?0,A`Ƌ}~`4X.6_ti? MWh]mE>o?0,A`Ƌ}~`4X.6_ti? MWh]mE>o?0,A`Ƌ}~`4X.6_ti? MWh]mE>o?0,A`Ƌ}~`4X.6_ti? MWh]mE>o?0,A`Ƌ}~`4X.6_ti? MWh]mE>o?0,A`Ƌ}~`4X.6_ti? MWh]mE>o?0,A`Ƌ}~`4X.6_ti? MWh]mE>o?0,A`Ƌ}~`4X.6_ti? MWh]mE>o?0,A`Ƌ}~`4X.6_ti? MWh]mE>o?0,A`Ƌ}~`4X.6_ti? MWh]mE>o?0,A`Ƌ}~`4X.6_ti? MWh]mE>o?0,A`Ƌ}~`4X.6_ti? MWh]mE>o?0,A`Ƌ}~`4X.6_ti? MWh]mE>o?0,A`Ƌ}~`4X.6_ti? MWh]mE>o?0,A`Ƌ}~`4X.6_ti? MWh]mE>o?0,A`Ƌ}~`4X.6_ti? MWh]mE>o?0,A`Ƌ}~`4X.6_ti? MWh]PAR2#巠|ݘ=~ 3Fx! ;jP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Pq>/ llkz6ݥe=ij,s.QAЂ"׃]f|1gڏ.3\h{P@P@P@P@P@P@P@P@P@P@P@4ZJzSEq~'pO΋ry?:,\>'pO΋ry?:,\>'pO΋ry?:,\>'pO΋ry?:,\>'pO΋ry?:,\>'pO΋ry?:,\>'pO΋ry?:,\>'pO΋ry?:,\>'pO΋ry?:,\>'pO΋ry?:,\>'pO΋ry?:,\>'pO΋ry?:,\>'pO΋ry?:,\>'pO΋ry?:,\>'pO΋ry?:,\>'pO΋ry?:,\>'pO΋ry?:,\>'pO΋ry?:,\>'pO΋ry?:,\>'pO΋ry?:,\>'pO΋ry?:,\>'pO΋ry?:,\>'pO΋ry?:,\>'pO΋ry?:,\>'pO΋ry?:,\>'pO΋ry?:,\>'pO΋ry?:,\>'pO΋ry?:,\>'pO΋ry?:,\>'pO΋ry?:,\>'pO΋ry?:,\>'pO΋ry?:,\>'pO΋ry?:,\>'pO΋ry?:,\>'pO΋ry?:,\>'pO΋ry?:,g'tX.FUT( ( (H!ypFHz*.Iy;#JtR\W~Fݯi&~&=<;oVZԿ絟Ma:\gGj_o&?g?Կ罟Mۘ~0U1{??0ac??{ #R4na?T4~AF=hhgv OI8!᥻kFU8gO['wo$Dܼ^*Wȼl/É e$ !$~ypzmk+(S Z?>?Z裟4qxCM^RrvBʽU {4ByB UŎ( ( ( ( ( ( P 8h}*+1P@Pmc@#$#u_4+eowE`ms_6X9/z,M`^0eowE?;ע`ms_6X9/z,M`^0eowE?;ע`ms_6X9/z,M`^0eowE?;עC.2 iXw)bGPhP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Ps@FR\Ϛ&߁Q ( (׆XM9hy8eezQƿi=!O=OZBr'{WT.jptp( (#(牣56 U .̊R.3WOxAt$Z ,oύ͸s:U#<% ( ( (;;Afb='.3]>y3GB_տ4w=( ( (%[C$6Qq);$iFMS ^Ee,>i=3Ҧ)H~d4pSQϩW{@ yeKmmw>½LWS;mQ'%x >epG">#ЏJ\G3:Sf53躃O!9־*~up)_eupP@P@Ěylˋmw?;={jOʸ,R(Y|8o|B|Z~w.Ͽn89ƕO"LKDoB1u%(5c>xJ"-7XqiP@P@|HLLA@P@f?< hfQHD ( ( ( ( ( ( . 0ãLĚ&B9IdtP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P%H[H RTH ( WB>E4zvpϫR[['^:+VgEEU+%'&-t!EF*(( ( ( z*6v:z7_Mױl|?ej%zg^!@P@P@Pq>/ lXgCEOk3F|B5Ǝ^>$lghz"_ \Q|.qYC@Kwj 5[?w7I4P"eFNh4<ʁP|/d˖$#?: Ž0+K?E=`@$u :宨:~iow Hp-ٯ[/+NXEh{?hM'7Ե>uRҼѶ`iϩkg|%[cxWJ;mB nP8y>8hw gҒ)=my4)?n s~#T.яru_-~WݟP@P@+aϯ?h#^&1ԩ[=*>?r?JEQ?ń\{:Ђ[fAx" y=$'V.G 䍠4>d|M>%{O$?Ge-tP*lG_s?N3ߌyjw׮?Jf_"<_ t )uMyn"Q"?z+DmQUduHC'ƌzEP@P@o4p4ȱKB: ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (r;jXN€ (PUr?yq>ǧj!Ҹ{`.z ( ( (/mkyFRE*kJ5])tq#^OfxMC [+a%8-?#MӛNuFa@P@P@iKC5[(z#?s][Gsܯ@ P I= F5 'P0c_k?Or8u5EfkWSd  K^iA7bq{v9d!Q9Ni흊6 4 = W/"~WjsFשsEއ2agS>JqOPx @#-Rsᗇ￰fV3ˍU _}jV-}cZqR;\,7c6#8#9&' n>!xn Mte\f <%+ciO4Z>i{LnGjKE8<}wVGA ]L@Yh#^&1ԡncg~Cn-blXAǘA"d'jv^ѭc-5cnlHcVIZ {fmՄFXa䍛PwL@$x\'*4XdEDs׼o?A~h4 "9cdt2AH3o7 ~Ok6=cFtƴ-}on\u3ڇ ?ϱfG;g͗9m*˃0i/i&{Ku~l0 ;H<NZQαؚeW-MbohGDΠ[̄0B .x'08뿖 gN?Lk#T!' }V2,('u(?Ă:/x'>$DӚ9,*) &{<7ψV0\$H63r=zMqعYI}V;aVRW (NPq~A'5})uG81'qMI18jotC<ц+imߥ.d>IGuir\C gYdガA97$Ƌ|,)dt)C ı83\|15? kzf{LnrARANƖz c|,rlbGBcphFkgMPӴwUM`OI P)&{yi3=l\b6%䐔[0TybS ȌX~4s+\9]E'Z啦I"4%2QBiEgΉtm.MGQѥ1GYcrԅb@))!4u> ?imMS %-<[!r9OҒ:n9O^0QE \g;Yt̉Uttxt f̋ 0nqWgؗxl'6-F|+0)8V&EvLmF"2=㚾R9,Yב$w V .}cNm1.~ l%fsR(te=1IdBYvq_W-ŎKy\*VA94mAIFtQr},j{n`#ZML( nQ/1agր|=|Ccg9h7Vkn-30QkBzn^j6JgV4.ֿḥ$c@j>6KF&/4-Ow[nt )}1<9ܺݢiҤWev8S@m4MCXԼKv-('b8_\P<5u-WV7qC4[Mϯ*O/9纱 !YVIfA!FG-Jq FIG(2L$ClEbs'>g5E@wvP#;-ݴS=j%43;k #o9Y_ _2%ͺeL+xN:\YIq o9Ju8)i-Χ$[Ep> M_E/#=}u %w)(Lc@PKE6ibFz`Z:B{[.?՛Y7'P䱵f4ٚ" yLPxj+lRnbsl2P0xW.{\\ APWzj7tJ(|]w~`_m˛ PK]P4-KĚ^jWӓ5 tOS@xsWL$rQA{G|Km:^Ҧ)` qE75^V=Ɨg6e*: ]‱P  (ӿm\ j,P3#"B5Pb??5Ď^hI#8t!@.y|Ev<}C5M ?h]|V^"x9a`8P@S{}'F`eU0*\lkeq3)9=9~%GhǕH*zE} M%V3lS]ШyRh{tSԷV푰X?@6 Oc|H?=ػ_~>ʕ|)FRKiv[w?cI.Wm{ $!Q U w?(mõk *u$'-nvӹӿپ~yn k)SN}>G$P%(òHUU:ٽJo1if s/YVRI # >ӴzpqP熣_jW^jsLIYd,͞NI3?Gtkt:olŴĠXMtT$ԙ M;{w i(l1\=R8m5{PתUOMY_GINӠɇ8VgP~mgM-_4/GEd{4GsH׉5*V彎I-p[!xl,#T*R fީ\;1'9@:UL"t+ʚ1' X: @ϭ&TXګGٿdT D_6EIloW Fd>xRnh>2 (,XOQM B (iGkVQ,9Iqk~cLo5_ \ͳp x'Sѕ;:ibaW3:Is/"UV zz[ÖsY*T0܍_++]Y;?BRujzʞWt~m^P{?^.W_܇ҡH?(|=uݏi?GHmxkOpDCǏ }sD-B? ϧbkYecУJdGsJv|gY _J˯T l [xwE%fr-?o#DsP?*}Q?e8\Jl\9`ʏP&)?q̟hDDpZCꞌ.RԴoEks_8`*sURn64O h:Z6\I!dapq O>ƣf=B/JY1)<{ciZ: oVga#\[B8u^/wԭ핶g5*:$q94m E&y~x^mU=zsReǜcA\ ~'X|\#Pc22Iy 3|p\\G'U?ցW v1#7\.jy9JM6kh 7#@~ '(s |q#(Oz!@JvS5DKGy:#51Gs'6o':p̟$VI4~Y=Q6^l`5+˘V\y4ɠ`Wu˰Qq7zxG>3n>)4NܳY%O~ &r\io;;G<Ll ,[vǃ{Cx:K ne@>&i{g6 T pAms̠p-ݞiWڦSivn?zڀ5_yڽևȤC Yq(ZS'͚#Q*3h0jGonH(taRH9::~}ϫ)=EYm@ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ܏R)1:a@P[&U9+囏f~Fj8uITj+OK&[3>9iמ)xŊ)hf~2wObއzP59$$ G>9cxv!ByPV܎Yc4o[|iG5V9t}//kK6=~T[m)mBgg?Z2xJΪZI T .wZѢ[x5B2sd;nK2I8U[+~x W|w?PXd3$r q5Xt#=~tSsSwVO!j+ϭR_4W/OdlCsjF~,:┚_=, 8m&n=?nq>c H%`Wey~go$cio^ *RUܒ)u0NJ/}gYh( ڑ 'RMox⯉y3C?3\H{P@!11aḯP;=77=yZ@ ~VFy翏?+_PЯGX\>o)0_n 8(4<ށP|/W˛K2Ş_1GuZXIo{~y? PLatmm׬2L4[QޞgdEb(+U='2OxzRL"!DCQ}}vg:Rkqx$yn8 ~ QǼ 5OUp\y@CwjTV]כ<ڲZOD#N1 uיCV_~6M-?rPƷ>$_'Fc׋l{ьZ_ŻW fGcRSxS{k ]ǻ, ے;p;ɼk23^xgXBms& HBG8iܗ>|%ž%H\HI+ 9:ϫfRQ,f}nx!@54 f-L7I>mGUQ& ʓ1>RXt qqP,lmسcrV._K}5BڠAt@RMSTiFc4)o?RItԫq߯ց> Ůt&oeRb;xombm!`Uڣh%Gld~t']Կ>lY6/ cC@/tź˸\ᶃtsi/8n^J5 *G}>/V.j:I{t4_` 'uXj| #N9s@Cc=VK^\ƬpF(]SMA$70>QL{bxT ]U>@?N.[ {KXAʣ"_q@Xqws}ɮ${ytǥhfKn4hjwM$jr(UϮP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P;PvԱ!P@yĄl=OW,C}%p-W=c~yAET'(IN; \]ڸ?_>fL~-cf#dMF`m<ڱ6&FZ:aEP/rMwƾ!m>˪jrKnNLjo3ү]Zex\4B3}h+u]J;I;gRPJ:vKKbr_5Ni_-u1P|osڄGFjIk n  :Ufuy(B4vC(^&9iY~_`AEx%8\Wjz}{Y`Eك<Yk*9v)Qmn̩ǙGv(Nz{a W,ռMwYׯ?rT)}(9T-u$<6Β&)ii5ħ 5N#f8JUgW _I#7RzCMrUU;3ylqZk[q^C\Xl%l]NX+z8-ߢ!'Aq/^~oFiUugE[uyTCtZc{ bYA*Y02;@SOxwPѯ;[L240Lg4>fx2M xW𮪚}-ڌoN3 8(v=noB:̣G@?!Jg3ߍ/.%0k{86pA,YЊv&8IVF : =Hso:i ǟunʕffƚ֥5w-LJ s2o|G|3}V,VGC7GP;Q`rg~ F絜.$e<bNQA|< 6dRҰ|{bi,o.XwQ7H2$sE>*k~9մmCVaJbЭnIJ͹yQ&u!WI4avH& #2piX| ^a2]YKƓPp8E1#g-XhZ^(Ye`!@JrgS$( (Ǒҩ ( (,\w=EhڊD#P@P@P@P@P@P@P@\ܥeXQ JH]', ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( dг]CiP@}\wɷN\ud 8IcY#`*E|de?N8E1%P@P@xZY:ղٙBGE+| ZLTUO_^/>D( ( ( 4%B ȽiЍz>y35q#WA@P@P@xOģ@[%2oF;g3뜾#s~gA #_1ח &CGBc[]Mڈ>],q֧O}9mp[^?J꣐a6y/TVS<ҷVs^:pX+#W^nud!1 ( ( ( ( ( (GZ ,ZšLA@P@xtlTP9[;ğڟQqr1ǿ\9CSj.LP?Z(j{EÔ??=֢ڟQpOcr1ǿ\9CSj.LP?Z(j{EÔ??=֢ڟQpOcr1ǿ\9CSj.LP?Z(j{EÔ??=֢ڟQpOcr˨ ZWlŘ$Ԛ%P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ӤC3敥l=)GH ( |5It[2~t^f?-%sGI~~g0OX~+CuD,(K\eT9 ( (8"i&cy,UB劻"HSݒq^$htkm)ƾri_3sn#N''{lj@ ( ( (N}r_*ر@F/סCh1gs][Gsܯ@ ( ( ( ( ( ( ( ( ( ( (uQi.+ ? $~T\,lQp}OE? $~T\,lQp}OE? $~T\,lQp}OE? $~T\,lQp}OE? $~T\,lQp}OE? $~T\,lQp}OE? $~T\,lQp}OE? $~T\,lQp}OE? $~T\,lQp}OE? $~T\,lQp}OE? $~T\,lQp}OE? $~T\,lQp}OE? $~T\,lQp}OE? $~T\,lQp}OE? $~T\,lQp}OE? $~T\,lQp}OE? $~T\,lQp}OE? $~T\,lQp}OE? $~T\,lQp}OE? $~T\,lQp}OE? $~T\,lQp}OE? $~T\,lQp}OE? $~T\,lQp}OE? $~T\,lQp}OE? $~T\,lQp}OE? $~T\,lQp}OE? $~T\,lQp}OE? $~T\,lQp}OE? $~T\,lQp}OE? $~T\,lQp}OE? $~T\,lQp}OE? $~T\,lQp}OE? $~T\,lQp}OE? $~T\,lQp}OE? $~T\,lQp}OE? $~T\,lQp=b7\v"@P@P@A4H$GAёELI]S:r想6|Y@3$D5pw巡Q,u5g+y35q#WA@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ww!PVŊzGOS֟? סCh1gj'\Kc[v/,2K?/|+}&֑9kk<RZs>=SP4/"r6l%$[:S^'i]Z/ҪyCgw+ή4$ҴUɧ еŖZen./urNX֕ʱ>ocexrtX-F7w8;QnIQqۥɾx D񖭣xxRS1mX ~ztZ^ցel./;onIP([OZnjx'Ŗ:fY,K37gu vOk^7 XD@$Z. ir]὆zŗlH.&m3bc& 8 Iyb|)t^B];kmy':.;~04:WmMr]ѤȒAwe['jbkKofNZkaB[åcÄ3d.{}iυKnml<rZ0(c?t;xG4xh4/^V^ @vf#R=V:dډ Q׀m.Cxɱxg퍒G+4ᦟc}_׼Wei7ibGWarq=hs7ftJ:+UA 8<К}OW=[~u,tlnDS 彁`i\i]𮣮x?Zzhy~$i9Cm4oXY?%D'e]g 0r'ع Imt]sƺe' >ºg}iF'#n1xW|Y8Y-!=rZgU{NkKw4mYM?H.aY42ps> :͖j>O)-O1¢X={!.Tz_`u-{Dy|f['`#@4s~oQ;N[Quw&/\IPU9@ߩ5l-4=;Q<ﵶDg`+5ݗl<=bl΢[;Qw8uӸYۇន]i^񮙩xg2YNC~cʦhex)2:S$VkM!CCY.C5k_GCfcryڋx]%y|=.>Ƒp> z3? |RX-~'n߮i_A[7Z(,.a‹~X@LOCķ3] Bdd({ ^[VSUx-۹ŋ8(˒ٖ+t(p=IJZZyCX`wK+¸Qrk !{E-[c_%)MxWsmo^]NpyUڳN]V.qUa~hgkmmś9RV|ߒ.%\4^v_l[kl}Ɨ>xK5KHNY$&%=p+_R: YA7:xNUk^ 4.- !*aaONiR;Ż{|Ie qfݭ~Zu\%̶֑FV%YpjJ뾽UlC"'vk{X&vټ[*oBF5VݯkYs"'[E$pyXy+'Xaaքe4'rktJXoWO;)[zz;WP**]ᣈQI}̠ܗFQ:=iQJz{z|3+T;fӮtg#@I< 穖buGتVy V4'aCsiW[K׭)%*vO$(+kGw$b\NpF"#VoO>7&C/;(0ȶeu0zrb䖽tmFdk;KaYD8F,~l>rZgU{NͭW~Yiw"񍎝i[ya2zR`ޭxKЬ$UU{DYT#zNit6%ύte&A>4ұoOnGcJW?e֕Aoanh10JCڎ.NiU?݌xA_x{Ŀmofe7ؑ|gwt.Cx]>,\/y{w|ޘh:0<pen);8+SҠ) rW}L1kZXDT0 OaqU dяk-jTJuεwkb-Bo `dd]\\Tv릛C(Qkw`[^JDLhR; ~O/RVoGӧS9 jʓ@}@cu: tW·yO8܃P? )?pCr@\>܃P? )?pCr@\>܃P? )?pCr@\>܃P? )?pCr@\>܃P? )?pCr@\>܃P? )?pCr@\>܃P? )?pCr@\>܃P? )?pCr@\>܃P? )?pCr@\>܃P? )?pCr@\>܃P? )?pCr@\>܃P? )?pCr@\>܃P? )?pCr@\>܃P? )?pCr@\>܃P? )?pCr@\>܃P? )?pCr@\>܃P? )?pCr@\>܃P? )?pCr@\>܃P? )?pCr@\>܃P? )?pCr@\>܃P? )?pCr@\>܃P? )?pCr@\>܃P? )?pCr@\>܃P? )?pCr@\>܃P? )?pCr@\>܃P? )?pCr@\>܃P? )?pCr@\>܃P? )?pCr@\>܃P? )?pCr@\>܃P$"eؔ bP ؾ(KxF 7$Hz( f#[B3\Kc[($(pOi>=JK+o@UܑH98Ri"|׌> CoH- MN]i4>b|? ugGxMUPEt$秠4آhOhSះmo'nњl`|ؓxqsFwdHxJwo򂑣&cEXKC)t)|G!x[a :.2?L~42V, j"ޓR0(cZk#[szeu(i]FuXtumhߺ:K^ /gZyLpx@~kcm oB |=_JHB%xfe'j@g?j! 4"~:C>h:֭{ ).HK 229(^u 3è:4Vq "6[7CqS֒_} 1œsC(|efn;n3[ih( V+/in*r[[C >6߸@zba<{xX߅m#D`mF{ ܗV[ZW0bIǷ4=⎍~ /g>cm`-f Wߥ$["I.@ֺVpČ^q֎3Lӯ%hL* ~gBzNe0Rs/?뙥h_v^ԝYd$ƨ̵Ym.GF-碞ٯ[)9Ѩ_ϡōc8tMJ &<4hX\N|~724tYIo$Vy`:PH_\Ocq=RAoLȥw0g,L<^\cc*BU8;<hdkYK 8*S)wibe̕˧{PkhD`$*s`I>j!{k-平doc^J8a[s?30e*]FoOyU JҼ̶*S$uF(J/G$Zf3hf&Hy0t`I-J n25}TKy5NVtv &=ָK:JoE TNhɥv![?W tb?/Fh^^⛫3^̹WmlLلGv9Upik6nI-5+,~O~::X*_ z%)J6ySĖ0$DLj[itlVHץ(+mmk qt{m4}2~.UFC<QN IdÿiZu#`kq?6ɴ<Y)qԳvצȜ 9o)]b0Y $-q^ږ>+R0J%ӯ`YkI#@|xi#^Qw:b KybR10H֪jRY3ӂN39v[aDh@^kkVQ{hVٻ='RhgZa,Tʯ-kg\Vaq7ͫwLZrSz΄z{įhѐ=:P#ҵ];ğ%uDE1,p)'A]=?ƗtbK#"~39} A`tE%5Ks(O舲kPޥٶSw#D4MO _xKdyDgUl qV4C|t )d+d2:FJ}?1GPE/ եO2!L/Y+Ua[duYi[퀐zk+c)o?ĊR(Jzkmr<猖l1=OzXT/4b;￑ɉeCmewuw>kF:w:%_ R=d{wGTW糍f8O .rG=U5elvsӪEvpj U wB51p%:u% 2/_%_0zLu+;:a]}} `(Z]_ϝ^t A3_N A\n.SuvѮ.XwkbMDj+ ɴ=s2Rߧ%ƿΩ a`ћf|`gS®#(mCPF2ߘ~,|/,{i]0qҵpkUE2JF )ӛMC#4( k,2S̭ZMrƼz?é&iqu{h:|M5F^W< 5 2 _W+ܪ3Gj^զ5V, ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (1* KEOkС#FlwKroSԯ[q^^%mq@ ӮO>HQG4oX,kjyBmܯ.6-@iXW8EJ{[{{uqliYPO8 /u;{X/on M+:¾ G@ 7׷W1ZnJΰT: _xl~.l.gO,2eȠE_zŬk:Hrut}@bhغO5Hֵ;R}HR( o/{9iX@Kͭ.|CMh˴%쌄zm-P;Z>hg>/3@WԵ Nu+˖2Jds^ M|zv eFnqv0\:u/ ڟ c~sl3$vb,rI4mZP1W +? L1G3iz)P'wB ]pdnv,Z*UG96B0V,< =)Ԝdc%kۦkٸs>rsw{v%QU؎ @J$bQN˚ TI] qs=IXp XΝZ*ԓ~ qUљY) Q8f6Vb$3;f9$)JMNJ*q 2䃑\U{Zϙ <}Ͱ"h#rb*Ҝm t?)3gbNI'$rzJȕ%hrBi,EYEAtPO%q$%Cՙ'I\w}*Y{u{[!F_cδ:r }pgEYGյ rPuۨmld MGc[(RwVg$RjOdטuih&iXsԛz-*1Mc* ,5A䛩8!ۏtO_nnkjIoyulmfOQ)kRV6DΔ'G Ryuؘ~ev8zB$U׵iؙJK/^3s~oWDb[9jԕYvu Q]PԮ.y v&(@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@C?EA ȽiЍwb? տ#?ƶ;RB ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( S}z?^B3FxV!ޮ%-ʔP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Pm"?➴F u(Cs:cN<:++(Tm}K <zص]8P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@6XT)"ST 嚺* OO6̏&"<-x~=&-Ue^IP@?ctTF{B5CG#p( ( ( ( ( ( ( ( ( ( ( (7 O4!K\IA 号seSt c4۝KFIXk.OF,h3cVJҵ Ckkg)* wTJ䗫9aJsSc-mNP{ }:[n3H"N1rVpT*Z5[ȭ/t{5Hɥ(4TfjĒjNe+\$y|lYHN=>A+*+/Po_I=L0N2GJk *&}V{-B6PH q[Э RZR.Y!^jѴV^Ƨ ܨ4WMrKՄiNjgik¶Z׎4Ei#dpWu\9*tnֺ3B3Qt.SEOƸX-#sy6㊪urMa;jy]zP@P@P@P@P@P@P@P@P@P@P@P@/ĠO_Qķ'~۳(Wv>&?VaR03,\# +.P@P@P@P@P@P@P@P@P@P@?|g9TLqhez:W֧Z%wwaNU'};x K(h/yIUpH֖[Wupݼ"zŀu9lBZG]cT\]F] ,=aapꊇ승)9q1Ԏk:YQ\۩=|ߡerv:6siwN:b"%)$QhԒJPW'8˹5s.i;"c I+}w]:]펡+wAؐqקZf4iRu"Խ:(T+M|7,b #RM G(b=;fhWh)E1JT$Ee֋ue_3bXmзr3NUAI?QF䮢"4GIbl.eaKZ2G :uaQ^OS(i%b~zZ'[I m݌bhrK_Эaj~{uoI P0*ZRMsUtMWHWL}snn4SN$N&ЃZÚtmJӟCjuc,E(KRIHѩ%uoB/E5g46mHWUTN^Q9)ˡjUdڋw@ٌ>^~en=l7QѵM6+}GM\s8dӅjsW^*s5/kZ]ϩ p$xԟTJ$c*WZ'^#c([) e㧽'_q~m9 V٘D } 3 =5=kʴvs>mf> Zuh H# qב׭E|DʍHnQQR gVF%8/ml~ vTJ䗫9JτtoZ,KHgh]b&ksJ~La9IT[#< ( ( ( ( ( ( ( ( ( ( ? DHu4F}{lʯ S}z?^F|q [B3\kc[($(ޔuI#J879dtP@P@P@P@P@P@P@P@P@P@P@P|tOxV[x$7/,2G-Q^o9T <=\*Y;t5tԴ_߻ќݤH]A$"U*QƥHr)i*a!.fد/Qռ7oA-4m=*d ^y8UNzװS:PTVIbuSJ)KN5_^>:ֿw}9o/-tΒa 3} I'-SjУI"I9i.Qi.@\=zVUxTWnR'(ZOסgO 4JUaYl}ֹr8y£6X ӴU6ҴKs]H:<[}%팲Ow}{LjWWW ̱FbFzjL$!QV[."Ru3z4 S_p_eaCF?{8x&lDFj(tc)IH*ЊvsdrNs:q?Cc?.߼Aaѫ^c~$%/ ( ( ( ( ( ( ( ( ( ( ( (9u&ݢS˕| mX-,zQ >_Uzr^GY_||P@P@P@P@P@P@P@P@P@P@POI;#}d SG" 2.z'4T''b2Dj 귺/iнز fPH= 漪W2fNS0NQO~"\-Ie O\_s+ѭ-=wj9+k,_4ոom>Ihm= 7w=[/OӳMIs:BmKс,Gn5ku'rڍ q= y6=H!K2q~[򓩃曾j HaM.hkpNzgAn-N9}Y7M𗊴Usⴆ춺k-&6#,}F}1^*.-g YKxbTFj4Pc1?V"jz#\BiEӥ)=^#T}6n9's ~yohOϛ ( ( ( ( ( ( ( ( ( ( /p __7IsB>O=li&dWP@,0>b}Ak~g(֟?}u3µoqnT#uur*7 )-gWo* Hfh֦GfMӓIZP@P@P@P@P@P@P@P@P@P@P@PxXo /4u0[|KkRs_o?g>ቮd/>r4pC(]%Q^J_旇"x&Hqa7U]lZ\Ӎ̺xգ-4I5=?UpUԩJ* (q5c'$c{{vX:dEMa@{Jϵ\FL.s( 5*妬V~"xDkb2?-zኒ?YUg8ˆ.#hQ ڟ4[onݸg}w}n?=i?qt!|;V ITUm%b]zјubP@P@P@P@P@P@P@P@P@P@P@P;RpdIF.R ''drR$ھY֫*>?gUP@N8G͌7־UF}z98,WaP@P@P@P@P@P@P@P@P@P@xW4K"ӯ/-1ԌxjsIj5i. +ִJ٧^IaiT%!^"75 m:PqLe-穖[sp\R:j~ gW73a0Io=#RMig̛o|eX뒭KB3)?wT0%(k9cʤeh0\n<7$N~e`Aj(Ղ8ሩ 9|MV:#Y<' TBt*ި>*^\&o)9 N4Փ&ywM<T{ߎs\xNnnO6{[UiF^I7Qh\H tO Js䵎1R1qOG96R};V}1ks#(Kⱳ%[hj+GfRZᩖajKPuG^+Hn3L2c$Ͼ%䜲EL Q(c+EYHM:Y]^gy#I7 {UO/*2mehԷ)^4[6fR@ߎjს nc"X>%\f=a崘bHx%TΖ]%8GU\YKOx[֧Ӧ|4 j|_,ziaiRRPVr'6xs/IH#[H縩X* Q{ jK[o>,mNPmW7Vi>$GvCD+땹^C4+ufXlThAau2=II(bB.I/8_j:eu =_[FIJ.\]B ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (2zPݵ`aPa?z|2UuI=ߞUxGP@ƴ'&6~_xZ/sUtH6 T¬Tp,BB ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( [PZ,xfL(4_zx<#1+\(=[? APnkP^f|FlvKrP[ɭWf[ǧnHҋZ\~"'5ϣoC8'"_K񭿷pfٵ{6ܗG??j_?m/?Ə?gflr_۸~0ͫ_ ٷ俐?paWAo!4n?6u|fChm^Ϳ%ڽKwٵ{6ܗG??j_?m/?Ə?gflr_۸~0ͫ_ ٷ俐?paWAo!4n?6u|fChm^Ϳ%ڽKwٵ{6ܗG??j_?m/?Ə?gflr_۸~0ͫ_ ٷ俐?paWAo!4n?6u|fChm^Ϳ%ڽKwٵ{6ܗG??j_?m/?Ə?gflr_۸~0ͫ_ ٷ俐?paWAo!4n?6u|fChm^Ϳ%ڽKwٵ{6ܗG??j_?m/?Ə?gflr_۸~0ͫ_ ٷ俐?paWAo!4n?6u|fChm^Ϳ%ڽKwٵ{6ܗG??j_?m/?Ə?gflr_۸~0ͫ_ ٷ俐?paWAo!4n?6u|fChm^Ϳ%ڽKwٵ{6ܗG??j_?m/?Ə?gflr_۸~0ͫ_ ٷ俐?paWAo!4n?6u|fChm^Ϳ%ڽKwٵ{6ܗG??j_?m/?Ə?gflr_۸~0ͫ_ ٷ俐?paWAo!4n?6u|fChm^Ϳ%ڽKwٵ{6ܗG??j_?m/?Ə?gflr_۸~0ͫ_ ٷ俐?paWAo!4n?6u|fChm^Ϳ%ڽKwٵ{6ܗG??j_?m/?Ə?gflr_۸~0ͫ_ ٷ俐?paWAo!4n?6u|fChm^Ϳ%ڽKwٵ{6ܗG??j_?m/?Ə?gflr_۸~0ͫ_ ٷ俐?paWAo!4n?6u|fChm^Ϳ%ڽKwٵ{6ܗG??j_?m/?Ə?gflr_۸~0ͫ_ ٷ俐?paWAo!4n?6u|fChm^Ϳ%ڽKwٵ{6ܗG??j_?m/?Ə?gflr_۸~0ͫ_ ٷ俐?paWAo!4n?6u|֣q1?Vu3i{oe-ڑw=*͵?+f5IvGu%:ZR ( em9>*WeV*Ip\bhS+ۥi}yD6ܗ]۸flr_۸~0ͫ_ ٷ俐?paWAo!4n?6u|fChm^Ϳ%ڽKwٵ{6ܗG??j_?m/?Ə?gflr_۸~0ͫ_ ٷ俐?paWAo!4n?6u|fChm^Ϳ%ڽKwٵ{6ܗG??j_?m/?Ə?gflr_۸~0ͫ_ ٷ俐?paWAo!4n?6u|fChm^Ϳ%ڽKwٵ{6ܗG??j_?m/?Ə?gflr_۸~0ͫ_ ٷ俐?paWAo!4n?6u|fChm^Ϳ%ڽKwٵ{6ܗG??j_?m/?Ə?gflr_۸~0ͫ_ ٷ俐?paWAo!4n?6u|fChm^Ϳ%ڽKwٵ{6ܗG??j_?m/?Ə?gflr_۸~0ͫ_ ٷ俐?paWAo!4n?6u|fChm^Ϳ%ڽKwٵ{6ܗG??j_?m/?Ə?gflr_۸~0ͫ_ ٷ俐?paWAo!4n?6u|fChm^Ϳ%ڽKwٵ{6ܗG??j_?m/?Ə?gflr_۸~0ͫ_ ٷ俐?paWAo!4n?6u|fChm^Ϳ%ڽKwٵ{6ܗG??j_?m/?Ə?gflr_۸~0ͫ_ ٷ俐?paWAo!4n?6u|fChm^Ϳ%ڽKwٵ{6ܗG??j_?m/?Ə?gflr_۸~0ͫ_ ٷ俐?paWAo!4n?6u|fChm^Ϳ%ڽKwٵ{6ܗG??j_?m/?Ə?gflr_۸~0ͫ_ ٷ俐?paWAo!4n?6u|fChm^Ϳ%ڽKwٵ{6ܗG??j_?m/?Ə?gflr_۸~0ͫ_ ٷ俐?paWAo!4n?6u|fChm^Ϳ%ڽKwٵ{6ܗG??j_?m/?Ə?gflr_۸~0ͫ_ ٷ俐?paWAo!4n?6u|fChm^Ϳ%ڽ@|9>ϩ%ſʎ[>.)A9zevS^aP@z?֠ OȽiЍw? տ#?ƶ;eRB ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( o 4A@z#ίFxV!ޮ5-ʔP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@PxgA* j֟?}n#S潙.G8?ʸ-ʔ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( r)v ; WF T??y?5Ǝǹ^P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@?AC5[t {/B]m#ϮxN?տTu( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (Xwj۠e AbNu#ήx?5Ȏǹ^P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@PO0({qO5Qpyҋ~\,k{`_ߥ (XV ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (P"✀}j (=c?fcn~~#ίFx?տ4v=( U$PSNp6 ,#`T  ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (!LhA@P@P@P@P@P@P@P@P@P@P@P@P@ TcME v=&Ap?!v,M]A_,e!ؚ5F/?d~~ ?5h'>Cؚ4db__߃MC}?1o&>W7P}Ə_~+?aϿ>GF/?a0?_#0_ɷ?jebһkA m7FaJtݦΈ3W̰ (?ꖩ  VjxKEOk7Fx?տ4v(-kN; UA @#ES|JJC (6t ڊh$}+)Vwgqؤ v]ދk쇶k?ó=_7"Rfh pdq Tq~G' <G=".U( (8⏭KCE:C |Qq)iUI= \BSUvGxWj%2}=O^}\Ccܗa]sTu}@P@ K>I|#ڵVPzVgZInyGEyV{^&s \ wFQ8 Cw0i[ByrQF}@TTfuj*ps}"a`WQ 0P%RNRݒVP@P@Pyk"1E'̣W5/o>_tfטvjKTcP@zǃ+PV4'" B5GG_-C?3\h{P];`j hNWB~?07J$_#cOK}Iug_L7v+'${A@#Ah*E짱(m ;ZBKL|AS#?-RrMmW}WǠx }H _q޺)Pr|sp\=?H›'cVk@7كwxᕥq&%K޾ƲA%t{GիV4qK\ۜ玴Y$EͰ2F@ ޅNIy3-X#^5_v<#r{ }nS"[PIՊ}ѕv)5ٞ~ xY{Be[d:,9SZl?7zWc}Wom\U 7}L _.HԶׁA^jYʧn݀U]5t+zlM)FUoߖ_/xsA?kb"g@#lHzg$RXEd=B8^_7m-:njh0Ls_wTF?ލ{E5OYvҶs18"QX+oo&cB2'z][x;Cn-f}wl*4@27uA֣NեG޶Sa!melʺe]xB8cUydoE|'6VD]9Rqy>+Gv.9)i6|5th I!-zxj3烜!exR^]޽mw$V6Sy$x5ww;~_E׳m.UoV!? 񆅣wf6[u^NOY|}4R"nu_Z_'2Y-s u]̹ך/n6kR?׫;DѴY]xSHީ_E vRsT88ʣR^˄ݴcIxQIF |~Q:V4qVw:':m:unK+Xu >j/8zWbhIr٬bA9={f^\~V"kS~'9dRiM^N}&]PwQ@H.;rV9d۝87GA}an5,f}MlE( d:gxF NnSeoTy&M[j *Ҧ*!wsgVIwq46vW 40@=8#[{|?"9n.Mi01^1NmRꞟ5K-J_4M79n p \yϪ~aY{4{OLCiXjA-3@d6(w4Yv_W~ϫY1gmi{kp٣T`H;GZ<][_r4ܠ$k ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (i1 Em]iQ6PFwqր+>t(/5-#P)-4?+t8cZu=:)j=ݣ,MMCĺi/-eeE?B*W6W dsFz4qi"/e"Ǵ;E6~#7md&k)m]@[xc]GG-aOgs%q*e>Eli6jZougYmdB3>W7VȚI9h`x/4xW_c]Kk6.[s@>fz5[TiGb|q ߉V-ZTCXܵd&*Tho )CA$cX>^2@j2IW?U}SgXu:OU.hP @P@P@P@P@P w,WR)\k1h,>jB7Wޜi87'gk( (#C;[;Utr5P?-R%A@?AC5[t /}u3qWA@,FgϠ4 Ъ$(M3B񧏢'M':fxRq$vpIio).mO:亞(.FȡN#DAש b ( 3REz@{_Zr ~^]gySLiecO;鉬xOT 9#*iǚI昧NwKC%Hڼ望ܒ?ǝF8⿉vƛ<o,tRInѕʰa":U({gՍ]l_6F%5op~UmAdZݶֽRO9Q#wxzTRڏ.}[UUR٤5o6zusO jGoh$t%6ַlu KEINF d6!F;U)?jV_'k)}:qJtO.⭞_xNR{03n[Ӗ4KV˪L@2` u%mg |?mk[oڮ^XRq|s5~M.JpRwvC5KkWԯJ `{+:pPV_f3F4nU*zU\O&qrICԼGWvWC?, +]Us Fc3=vKv95v&I~בnxéNbTΝWuߧO_B)+JrN.7nv?>n_$RVo߅̂i_O+?.i>h=ރ=Z`Z'~XOWjH*C}})y_{ϛv._6:u`,pe!rI3PHn_{_טz.9D7ᦳY<˫QIM:n0[QJIE_A բisS9FV+ҲJ1T,ڶΟY-?FSj JݘP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@iwAM*AM88Olc4ZeFH.9]c1zb[ZMrk+r #zPe (i1 EO~i7Xܠ"Kco5?i:e~uq|m*H'2[:ï;Daw<b?i9/Wsj"eu32=񁟭1#rowr|\]o8;;qIqC4ɨDQġB:K.i4V,}`"o1HzNm5[k)4~B:S[O|X{H͞ u*B/^1GlVC,.EĞրG;׊!k^L͗eH&ǽuOsP'=A#*:c#?Za~/Z7qv2h_=~lm]i~1> w6xa('Svzdmy<#E4(\npqԃS4}/x\"-P0xL>7+FΌ .Д1^ɾ&X$+xڌAb }qLKs>$:KGjb?c6;oHn%0x^OG{y4:m·̃9+g=zSz//1o ɤJ`ҙ#9 g'׵ OᏍρmb&WQ3IPsN$HhmtBm7/l ߷x2"4+N1lHg/iwXC:H$St,wgP@P@P@P@P@AB_E^O'4ZE%})P@Bj:MτffDn ]«W8njTF2'j|cOohYv*n+MྰqfkRv-4 YӐ%2-E0p>◴JivQFF;+>? q-ax`E%A=X|$1ѩ5kʍ n=KݼIY\#w%Ag6g&< Lr~b᥄o+_3>( PZK@ (< 8~AZj6?_?<gjs][;zfc)2PFXvAzoMK~xbI_NDIۧfity|Qn!*pHW*'_?^G*fK> hA0FgcSTH|s0,hHgeĞJnP*O)`h9ƚ\6̛ $?R(4eѕ\H{_=>dЃ `: Xaqv줬y=2-o􇹺ˈ$[H+k5crzQҫzg>m%xGi|>7)PU9ַ>ϫn#3 xF)$}?ҒRZ6yqhx^MoPNU$ z~)IKVKg9~lTqa-oOƥkn3tQmKTf,#+cM$ئ2P@P@P@PAM65rk˛|ˉ%7=2iKP@($A@ecSs /M'ء@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@v |uwďYZCw)+ VC 3jjvoq2y/j `wlqE^1xm-xR$m' !2i/cYCIyA]<' Oě&=:w\l~FQ~>-:S hً> CHka~$w,>Xc{bL|(_& nաcv?bß.Z寇 'Hd @hAB_?,tCZثJ-o (8$-p,bC4! x_0{>m "m@鰠6 玔C;^WowƻX\aq1^pPgoJ4ڞcge$!...8ؙ@&-Ϋ?t cYRtnee ;RA*qF"nigct+P2tܒ :v=C>|:ˢi f] ecÒ:`=iZ~_VZ4K O`RTd=B=^$u޻_icR&[_+qdl9 o #m1Cuh#G<{}3]OW椶Z}Qi^]R` cp-K_gým pxEL>8H{_νa]2K9d"uG#3bL}%j\l e/ady/Cob&'c[់xVj6*$GP'-ݾ4/=Ú:'gYyWӆ첷$v'ސhyADmΙx~eIn|j=:Sg  ( ( ( ( ȶԓqH6ǧ^UTq*=K /(j& cǵrcۚ\hiPx;@p lm3K/#]~y?4v=(Hdݳ05* ꗺ.owmyn QHZt?6-c xZG=-7WTd VV*GPEQ(2}v%~jk6&YГB~SuhA k m;~u0n{m*H:ẔUu_}÷ w5&zS†7J>2]0a@h)m0\tJ`:$^ԯmJ'W)9;.hVI^%IѮ.K&ݱO PG&oX,$_[YzOB=CzFmn~$[{Y@ZQWRz!JrYz4jrԗ¤o]S s_F}LH3xD_=7R:_TjWoG֚5ޣ_-Qu Ǚ$8 c RR7O^NY{KOtm9󠷼),ـ @dTNmu&e{_-7t2i$'СP//K Qyokq[||pOD7kAv{]}cCl`JHdxr|7I%8sifje!K4򸌆Rw`cUV&5¢ZI__>}Gԥ4{+ٜ7 GL>Y(.\( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (nƈ)P@G{O%gP[/f?fB˩=sonu-BfFY19&;l5o]űi6>G#o̧s@#|=⏁ m[/R:捠GցxƏ3FW Z閪R9`VlqnP@P@P@P@P@P@P@P@P@P@:D\(Z*G/qGMoدd€ ( ( (}9sSc!4軛+-&g֫*sJpPvDua@ZR"XP@ 3U@/ _?<gjs][;zPi?2HLLA@t}REԭ .K[tryS~{۹ny&rH,NI&@%؛Aƌ[ҵ [!هp}Lবμ2kRzɞɠVՠp?227f~1=zig9du\`=' 2 ˨,{V(PemWN7R?K8zTir/39c[~ }v3\J f *RIjL.F|8hj]}XNIڼg~jcYNnU 8Td料WVv?Ę|A`;MkH <$\X׏mz;5tL<~4q : ZֲO͊?1Ck5[wurZŴ8]ug'=$[j']zw <(ړץ  *87m3:bIȸg?> aWҙي>cDI$餒{O~9۳ -[ڇ!; 4խvN_$``5X~E:'s ;%9;z[^cFghsA}۠Q :IhxR+yԵ]"m;KMڃ'5K:cM{_~ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( LhA@P@P@P@P@P@P@P@P@P@P@P@P*A9vNM\۱(KT8o{x\5Us.O:[ kcV=zY!C9je*?#A8GA o_ Pm7Q}B(?(?>_zk?P?~? ??W_ޟ?O+/mr {?JY-%W}?>cm"9^~#>cu:qq<&r{V\wg q劲# ( PZK@ (< 8~AZj61 B5GG_-C?:Gcܯ@ Ub L .@pΝbzb ('X *WbKHbR'Y&x^RTW5RZvzgSQYd?B*}}~(avߑ> x?/YR}X/ܿ"4 Fdňl~*ix4yGk7ڼg,~ScLN:\ut_/s:€ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( LhA@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ZR"XP@ 3U@/ _?<gjs][:zP@MĈ0#ӸX^qX }M Iq#\v!@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P7?cD ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (ꖩ  VixOE_k:ZVuƎǹ^P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Cs?&4AH4t-Sׯc=JĹ =IGQ?oA K&d>N.€ ( Y\j7VQngqh#satkѸ-c`P@f(d9hXʉEjP@P@P@P@P@P@P@P@P@P@P@P?-R%A@?AC5[t /}u3ur (k;[ۘVڑDϠi۲i++ &r0C~*EAQχ+Fٛod@O@Y u"z%kQ@tojy{ giJqwc,E_cJU-~Tzt;-GsG7>GO+o[9+iwO<㗚Z0 ( ( ( wW˜iﶂcۏ0yV%{ }lkﭬGTsI촫;˹>0F]oz?$|:^@_5/Bxz焯c-.U ԩ=QN $ê ( ( ( (F)}|3 *FAJN22iTvjfcO4" ╿F$-%Hgxf## 5P\(qI83|iO]WWR7 ѹ 55dGu{_%Zkk3<5ֵ fqݜr:|.++xτuEӼCdl1(C">Tʒ;f] pI%Q!@P@P@P@αPi{ͅ+*QԖbSTmlrIxC<9ϥc̉fI63Plpߗk}BnܰFX(cGhڹIGN?Tܫ3/5 j?a&*$/L8# =)FJWHBQJMh4]R/VGn|xː=N:sZ{%'[gp"%Y'N+i(&=*uqvCpi]_ k,{i ˔"zncvC7$_:tKX]9b@Yq汄xsC Kxn,^c˿]ܵm\,[_+kP@P@P@(iFT,-(MhO=e2y񇇯<)[R1՛vœ{[+V@P@P@P@P@P@ 4" H/_ךDqJ#c1\Iw\ګdFt/蚅\|Xd|Qs DžPosiZ[b:Čp1ZH} tztdDnTq"3~7ELR ;k#m BaG\ҝ{sxMe2yObHNvEvs^9RO}Cx@S\ct{q9ILWGSUOM[6wBӝvBu h6K(9߀&\/;%2oO $7 Ṍawan!/C϶3ZɨeooLw5OU:niKЂO/GOC$vR3rQ{;??ɣIE&:i:a1G"O`['#]G*rrU)X6iE[ b|705*pc4Kܨ ݴwR]$1I"Jydf}i5;oYQ֙Y?ɟ1CofޞBq1}3IEtG/2]XWX K[A''R'c~5g6BIQ'eៃֶi[c-0~ԚuGF)ڿA`ay[^OhO}ŕch핔~DVqM-u4OSօ`ek0$hoH nYՏ&R(#EƟ*EEķ:ḏ)ےjo% HFPMv,|o&ΡXgnj|OXD<#~9>6.-Dh.d8sJ2R"K {E.& aro 8ï+˾g B٤t_n3Vһ!I7dUwOEY!˕2}7+lzrJ9 zVnȆ;/珵;(|9p!e|u҉.]E+7 __Ӯ,n1YWÆKDTgoKھufbA $uKQoܲh|<մkoxľ%whjhDCcv0xpS~?i E=.Jycqa\%~E_zGl=gv;VNKI`|>Yφi`qvý}Jig.WKqO}{֓ZƁhM3"$˿vxU_W_:_v{|>{--"ingc5N,w"RQ?x1^xM[+ydЛ\c8 OoJ*J=Yr芞O\70..}ӕ z^%[O i}h3hȓsvfjJ ]~'&sWW?lO?^oכK##'D` uچmej.%XQݘ֔MG3\D}>ȇ݌ʏ)MV(}וe_ a?Yn~" kD&+)So4#S_-3M*[խt.>pǸ.=\mNI0WteM¯vzD hEsG *+$ruI7&\ԛScă@XPݷvz+6Z1)I۷s韈^,t[XGKc$\RxRH(H{Ҍm.k1i}77|6Wƾ$)=N>HQO2 ZXx]v/+_ù8|9%k|#]geDehԏ HT$KkW^ m)l›Y#s& ދ.qpiKv6WG_iZC)ڲI>5/QK"ֵEzvnFh,;#8IM^;Z.gyފUb=GⳌ-\wiW֡g=,ߎilD|N%.߂$1P[Km<\DMxRui\]}k!kķ]*x-,KFSpڿܷ# MԔFQCbxOb[@**GgGTfṗs>Y cyhW7ݚGHԹ\V!>+iYZK椊[(U:/SENM9%(W:.^iwΟ}s9]ϙ^NX=N$K[t2Js T rpg)XRv K3I5i6I]gͿXd &U0E\"l';%\na2*#8bϥ?f+:;UDpI)f$ +_JTm%'6Zū߁(-ΕDk&?h& õpRs/oWZ %gG?I"wI؅5~2/Sg^IKQ4"K"\E&IⳔ$8J>moeD%a_;SMӌhF7`RUg߻_v-9{Z[sT)E+}qԞ7>|;G¶Z^$=+u0:cR#KoJayo UtmV"R +Q5,Q˻v?@w9|/'J,\}į?huAo'-`G`Ib,Qm)_cRt8o-2Fؐ c99jtyݗ̉ފ#KGQvXrv?QQB_^79oG1=|\Z ITMQ+%SƍǚƟ폇g6 X,=vªQqveũ+xwS}?\FLrdzЏqL.Qq|CПY#LMn 8W'ڔ%o{ xD CBfoR3Hd#`sTd?f%kh3:iZl[D4R]ſJS`" Kc#7W5Q<4s3֎-.gnOľ$ܲ!>lWi+stx~4_#Zw~ɷqݝ}~ZIAMݾWX\zՅ~Uݬ YJJ躔N\ZIcWZ^fI3\!BCqWV.Jzmz7Z yz'w3LΟjmV;ƿxVNYf,̣+%e~?Zs|vm?Z>:Kes~|q5׍4%*. F k5Rfs}m'e!VXDuA*{P!ϰ\=6m+}]uk=K_[N&s1X[ZHF^g zq2@V*5z/6cAΧ_r|[. K$ +n0qba(I=Һog'5$.p9m?EK+k[ōF  Ij2Ƭ^ޜ/oDkkt`[fiW"4cEHiN\zm.GRJ;|3<~:k_=O^үu٫K4{ۭ>8!5ߘA3TT)?om3νv܏|u=kMg& # A+ըD#X5RQ̒'JP* s){o:h>#IF21<9iWJT׻O#UM8:Wx"-5;p^dIp Htk2jRN}b_I%up.|X7`Ìb7mrw3,X=uotx2d&o^%1Ǵ4=ZF]n21Rn8? GZ[642XeL/:]W+_OS|> hoeM\H3;p1(uьSu?~~wpהTY}kzݞ;ҵ+=Pyg4O F!PschS&~=ou!M(;ht2a2] ! {w14RqMlVpԵZ}_ywH.|ej:)1!S`[ =L=U,4ky䬛F"ˢul' h\]mj,ʀ.9* =*oi~Ylw>^"wzo7?g4|}3+qzym-KAZ#w~`zj^֟+m~yj=z?z_~Zhu"M$MG}\y,= )t8b~<7/RG]1Vc#;U`Ϛ{_Z߈U8rçd>Y4ចy,[K6[8bz^MMj*U]dN鷻;K_|KWT4Vm$7Wq2v91 (;w?5Âgn. T_o?+/XǺkX*1*r. u%{~6\X:ok{ Zo2Y)M~?fthCFțQ'$ _JNX馯=4wʫ}ܜuSWr5mV~(>!|_SKX~[٫FG. Bl3ڼ3g|.~#X,ZK |ەHnW8>1t[j5qm<H{`?8sK㏯u,k^sh~+Vkˁ ;#( *MO]z;jÒvJ+=K> =_VFk2ccꡱ[b -|75K{O^|BwgX/63s튬%7&SVy_ڱ N*uh ذ˸gTf,![gVtZ}$#{6 5_ጼT`N0A8&1(p]~˄79˷#~0/l]nm*k[v#cA r2{s(F7Q^ 9(m˿?v±z ^7P|3袸+8_u\y.'wYr^ Х7 ۯ.6+W9fV 5Ͳ/ʼ wz?eExkB#IbmABIkru7E~pTp]k~ 9,Jn ]8:㽿ISQR(=We 4yvj Ux9B.oqt8U}C쏍m!74y (E`AA\%Sڦ\{&|o+sy[,E4l7qѨͩ.¤j}3mXٵWgv0?Ż=ds;UcD'h^{pJ3km<]3C7O ǐT23+7R9Э ?'glu_-5 Gķb alzF>Jvk++{}|}㟋w->u-" Lv UN7hwu~goC_?vt|i!5cMkr1F H'|E5]s}l<7(`F*T/s _(1!TEZЦUV)IE6P~ճ./ g=C^rR{ZOڷmݗ*c?e ؅C !]#RYzr+g)K]sWIؔj͘5A|O~H:(+[#˫s?J9*oAhl%t>*ְmF~2 7?JFo&>?-s,W jTmuKd6ڭB=,usY<}qmJŮ$Sٿ6e_r^Gyo4~כʞ!K_R<{b|92Hz&TGWe4w(VFd9 9?yԛc߰((}OIđ#ֻ1K?/?ͳ S]_.ʆ9U$T\3zkLoޣi~Ϻn'Zi"RoUc{6meoYlr95n5|6Ӆy{?i.[stګr4~|^4|<5Cwo!7!PPOzTvv~kon'kߣZ4I>$|.d y Xg 176~ ֙\Rj5vt,T~*VW0g)VtG hkl,ӪҍEe/w+?Mgoh0I4ȷ|~5IsՔh_OQPh9BQ{Q^~۪jb0#iZ00>cwc%)N6!.X˙?5?sxO]Ѥ-]EP`G\Nj{Y?j:' ]~ ԭtMzsNI WNa>Fе6lpeSۚw|~>T]*!{5cW`VvFs96-oϧy8薿/tr^Ki]pr}prT-_tI[$z.<|7Ks>64aߝxֻeUK/.^z_;w]>U|ai [{28s)E 2"s~SiѼPr~z9ٻV95m3ēղ,N#T, w\Ī5[~g'⦩1SoZii[y?F:sk'V*+OZ_= Vy1G˦;*Gu)k3~Q909?<g=5Cey/]OaQwkRr[LC:>-o bL} U(yJ4z/?)թh3;CxFñ&;D$?!J0mIn]uVq鿛g[@P@P@Cs?&4AH ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (-Aj,} (Xwj۠fS/}u3r jR柩3-NX~R{uVq]Qgo|agiq.ccoNB=BT)-ZS3|=hԦԴoC]c^&ѮRе(eV۟+X&2RؙEm|GaI_׶r:fŒ0@4NJ*]]QNWEĢ-KV*>+p&UZ ??3]>5/#xY1K`Oމx3[:e$)}:Y&wFã[|d|Kw/4רǫ1pI GZOw~L桮xK:X\TyhU{$g59Aog<+ODJll.p";'Ԑ:^7Qڷ#o|#h<%@y ̛G㱫 4jOh< /&G^`<e&t1wNFT3S_KKk 5i-ں/뵏,~>B.㵰!ɝrkX|E|C~>/5[+kg$  C`~c޴W(_b?a-ޗ?lOӮ5ow;Wƿ);SJw7,_h<=ŢkVMejEpȤY @pyּLCQKo5JˣomN/[uLHWP{޽:oꬾCwSZ&Lv~L+/iys[^n'+~O[͕֝ Egx팣 @Hr_=?֕R|O.yKy.in](=2N:q]iIߊRh$ZXY6La cwS</i /ٕ_ƏxLDZܒo@==2 cptf;yO񔏔<nj4?F-m,}Qj3 lO<<;}Oz__1584rl 8n?G3_W֗,skM/ť=ǎs]^ k{W'by-rgY<> wwߝ;qJ??yޏnܺe64($m[h=ySoC@t[v$~bPQF1/Jߓ9ԧ/67wŏ eso`fVk9ԑ,YHl%+Ku?Sy]sZůς+ QΆkSV-8WZ1J*zs=??Кx߱k<%+__>_p8/o4'Ex _-FG?p6z5Ӻ}_>yocxpqu ˟PG*AMuӷKϧ<Z|fmt|IeFǑ:E*jIٵ_ 0zgI]V ZqwfjYSN62wFJ ޗysevafu8e mb3LԼ[=R٭?jE?PI.)٘>&g\9?GmJ^ws*߼뿒ԟ7ռSq+y3>7}wR@>7^޷??t+F/w?# 24]o ~4x H=Ӏ4|ڷjsU^ާ|E hVzhL+SpTx!svWr(l]<뚧h'P$ъupR2Sp烺[0i~؟3C:_S 95??'/~,t+ &Hkk(V̐9b02CkOݜ\[_maçrhIlXj92e__;>A~#c*I%k쩨v[FxJ~֫wk-r'OVv/+ͽΖ,Cɚ٧󄑺^aQ[G}?K(VY4|=o {zJ3*9g,O0 v煽~nlv47?G?OGsd|f[ hRr8PPLMHx8Eo|oAa@e)4[@P}sL $PjыSK??Gѿ"?[44z< ۯ dխdcJiSu#~hr񖚵<.+[׳cBLЩ9gKԹ7 icOnk(lQybl$Hx85}X?-]iZ}"kZ)vQx< 1׹Ev-_oU/WO?h4?Z]8'oq=뎌k]>V>\_ƷxŰhs_٭2xN؄6zlD=+*N_dh~|{t|O]iT.!2 KvPccaz>&_[z87Դ[}&]5$?.w~g%%a}9I|`!7l*S YkX,dtnus/|Go/t{I[ҽ`s3„%۱hws#X=亝z6msR˩ nxV RjE)I8tZN6#PsJ_VKF a⇉&YT0Ŕb5aZtٿ1RHK4-0x`Dg} hd 2zR=믚]?<4Gg_y}cELjtgHbcDJ?h^[9Tj>3$T8h0>y)l2jAN/fk-KD:H+e W-?5;j[; |EkDV7YdcBH*ngКFT_cS#hZ./7W1EuԀpGRy:Sn=OAR u[zO@.t-T\/ɻkk[É/t+ϧwa+Q玕GT[ӪҚhvZ{Z\jvl1+O#i鑒G'ڸeRmӯV Bm U$  fN;F|hZ؆ۭwIO#sZњU?UJJ=SKg;XQE!.$Su)t_xyZ]l˧S,bRzقA鱹3ZFRApMSUeN)SW{߉Ga~'olm՘ c[Pkϡ9Oi+Bm~oG~Ȑ O SD.} U90~˙ *Mtw&2iMe.UUNRoc*#O~V]J"-MNgtAܯ#*iEKk5u{}tK}:S'md:rxm.g#ŸZ҆]c!56]5MQ-Z[oy?KO&]Z-O5rWԊ뇿NP ~GFR3?ߎ xF,⫵YJl-U=vl:ب˼Wݝ}ώ|IϯxQծ3N0'8@8)ѧ_EZۧ~mhd}q/|bZW-+FX$|sMirMF/_Ywyï_u6u9ܤqGpsxhF$'oČEIGKVo~?wŸ[\k?$ƿ)5{!#O8>8~UK֧#ߡ1kX\\xH{Ĉ8&j?;,:ib[ه&~?n=JqVs}eVR[HADpf[' 8bG'\STn[';aBi|[@P@P@ 4" ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( D(=c?fcn^~#ίFx?տqWA@v&xS0.[tWL}G {ONWr%.h?_EQ8 |"䮣(5>SV#$vqd`28Ow_s_j]A)s#>'=<3>7Wvwwv91[{wwZWosup"B?Yu_zM:zD&v8]w81)S_y:/c&Gb`t-ߜAؤs=8JUoo'xhe~K A,ޙRΦI%y\?W!n]^/[tԩPT1 ~7 LVңϕ x~_b+yO{ۘ<;Kvc V\IoL>"-;hTSŏ.<}_%Grwr៺&u~,u~)P/^v\coZC6ߺtOO̟U/_kIg?}^źPwcum'-e;CX}GJT"t,Zw/jGqzZΛ$:/ag br=m8+'bc4ڹ7S^Owy+s;%K9$5PTVS.i=OkwAm&=]mG i0@0|3Zԟ|~T*[&$I[ #@fgA* MuoMSb^\Yտ3_OVuf߻wm__Jƕg)%N|+u; _|/O-aifx=jP]6տ,*o<~"Of_BGF7`㯥m r?XVOw:_d_??ٿc;~sqҹGx7fx(o:__1x/m>ٻ>YS]7qĿoSmdž/f//ë۟*_#2ٴ_::c#9p|i_S-7:jzE.Yn՜Fv~+$z>:%QJ)5[[ gsTkOj6V2I<0=}iR|ܬE8{;ΦhZxR(#io˨>F3->K^:mgG^H(c}vI j-%7+.|o| cij|lZ3^,kddw<:WF&()-Ovn>zn+1 Q%} RksS4];LBIOKjR{;T\R8~2| H-cO,dT@A 0ofo ? jz85g7$/3=J|kw6N_(g?hy? =-$[QH(zEiYٕ4T k'~|{zʮ֛zj߈PTwRȱ࿍7Aм0]ص?inybeAJ041J^Uw#V O31Y}0nfr;z֊v{~T8n>}'A|U|k-dkQweݿ`J-[ ){zqůIJߟO,6'7q<{~oAv:V1ZUoR3IT{7;q}A>ݮj EɅ88*O>gM8h[.zmI9+Cw%N|y#36<)][šzy%Ҍu`x#n:td ZGiVm§UKB}HsUܦ;9i)Ivwďi{bVyfݨ`gsӇ-Nս­ׁ>4)O `}z̿ify}hCtZfXwj{Mu [VMq·?g8ϳ"*w2k=GXk?_+l\}'q~a|/|>Dٛts)cOPk~{ǖZKK:3d a] !Zɮ]MGǞ"բUCp) rI'<a9[=Ь|7N m}tѶyg{un9ceU9=n+}k .áv?{@=?ey)K[mSq|BM 59ŹT`dnki'#i[:ֵ"];C!# I*e)Pw>gOF6^Gt<>&<%Chw& 9Y!7PR=ƚ(1?3PҾŻjp>0jaӭl4e,h,.p1==f5U`Ǻ}:8"kk:WRn׼Z_ÿ|vejkX%.`s[՟VJ0PP[%cos-U;<^2 D+_tKzLj"!|&7ˈ])mVI9a۷Ow}V3wVF*M] Qqv{㿉<)eqk:tClipe$ i)%s8CH]j&*BxDN+17z z=ORhaE by$珥L!'Yʚ6_:?IXQ$z#@9V|Qw=m ޿_1$?o忳88rH ;O:SY=RI 6^ӗK=WJBLP!e|=>ح>enar?wft(u}CKBag7-qF+ AKo<[ݞYlIfv'$֐ъFr>(SLzޫ!LdSQB:KWoOxैz;{y3j=tJ][bl1zgu$ ~v#MRrɛΆ5݅X(}3JVo-jyğǏhv8ambHAI>e |ɻi:Ǒh̏@G.ٿ1l/u.rbm~?+_>Lti۽^P&НMyRXâz R/9B=K7=SySҝ̋ch*897$u?S{T8tu%yXk8+M7]?/siJin!,߰yo߷6P=;n3N/_s힤6{F2XImg>}]5ܿf+Y^f7_Ymk[S$Ի2jÞ=~/l,?~9R1toZ5oZ= ngS>m;Bӵ [5Kȗf0BQsF dc@GJtk91IL #gް.}% ~9sW+{N'KmOi'?uַ|fdo0jC?bԻ/H;w`zuX!{ue⟷Mmx|b Nӭ??~+I~vcꪗ5Fnݧ_̟?\7?i+osҺMûOΝ*5/$Oռ3م 3ҰEo7ԟ;ÿ;}lfyvl=78ZKI~aj{ i\O!W<$AUo~"qMtgvm֖&f~]qHPO}N_Mx<*qҪ}Nb (;oC>wa8'kBS*J O~ x?Oլ/W ďm>E$d׮+J唕->fxx9B>ⶾ-x]RL6<[|E<rz\ԩRI|Uj)Z1W8( ( ( ( ( ( ( ( LhA@z$ؿ4?ᨘ7"sKjFЭ_Xv؂[]6~IZ+Q [/ 塎cH]ێ pqBكQ}uKl9Y l0tn?EѭtC尺՝t\x`$V&I8wq!B`'7%fp\sͩZȻ"+9B;Q^ڽM&i,ndCFc֭_o׿_u[ITBdPh`H{oV2R'\1N-fI~NҴͪMs8YvAP݁+7WQGn(ybRO?` 6okY5ew">R4w׍HBk_iRuF#FGwCK^$EM$opt-$Z ^۰%r_텔R_jN&y8Qf};ĺsm$.#` *ǭRQ;t9R:?InH52 i0f;!y<6S7~":m]TXv n?N1u_7V}GZp"U.񞡀8< s+Q_&AF5sZ8SWHNޥMg{;NVdV dSb]IWw-ͥ cB B:2rC+uF$֝c3\ G>a~@{TeX[jpH6"F',F1֒wW7AZ!ee2 sO[COC:\-?x`qCnI\ku>\Pۏ"d&`,FTij?ψP5/ -T5 =6\,.2nGqO+b|a.\UL$)Hq4&2O#]~y?4v=( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (i1 EkҴIEŤһi xJwQ ՠEmv1DnTzН5tIkVl$IL3P6h֣t bN59VH@!9f4c4MSE%_."tҝPOA"}K#MZ`˂2[<''(mZo zy$qAƒvcjoWEcgJqy9$LF zպ:I)7g[l @ sR?X:Jn.р@SNsQ},ӗ]u>|EoB5LJNkbUt >[_OO9'ׁ YZ3i{ЩS،I ߡzMnt}+UioJmWƝլg{}f}=RTq`,'MiX_[Yh-G8 ^+4OxWB텦+H  yOJHM6`n|t}vͻq9)_KܟZ=ƍO>,d{vH_4'у]QK[Aǡè7nyA>U4;tSNCHg]xǶq\ H"7v&XƸ,WQ,]rIG$ ^O &%˰ ='ލ_iq%7r) 5c֝NL-tJ_Utfx#ǦKs$-q6 "vdtb{mN .Ssyj; )= p'c\TID˅fMQ}CB]^o=Zccrc@{d&415htOYsuF09'w>i\vԋW-<3i${7fi(o@KRY|AkDYVOy˰99?-?Ljr`m W| wL,|[Kji/E8'#TP@P?-R%A@?AC5[t /}u35F:ƭ3/'OkwVP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Cs?&4AH ( ( ( ( ( ( (]NNA|st&M#C[Ⱥc *9۩n幻VǒjFC@€ ( ( ( ( ( (#uu8e9:Ҹ4 o"Y07g'/nVy[sI  ( (ꖩ  VhO@/}u37Gֶ+ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (nƈ)P@P@P@P@P@P@P@ KhBcj 黦} &CiA!"B@D' ( (k[K c- mQԜtP@P֖7渐"BD4 ( ( fh(  ( ( (ꖩ  VixOE^?#ίFx\Fu:z@P3L.<:k{Ԝ}}?v6BirӋlW׊AQY,_W*WLEQ0q_U?W*WLEQ0q_U?W*WLEQ0q_U?#}#.LG%G?bhd&]SNfxe7T8du 2咳#HP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ 4" zF a"Bs,A;ʙ(m[×Lp^1ƻF{M4|s]Lngg}'b0 m۸SFO^x;'/#vcI5XOy m-Ĭw5#6_ ͧY;DA2 ү8~hKPU t ㌑϶hdgh-3ZX[\^K '۱OZ[J;C mdތLHgGx\mѥX'Y$$d^(R}`$ǥ7ŏxu+K{Xf*4(o#46 *g3k++H7n/%зGRHRִү~69P[Y7hh(Rf]B.Դ$Gː8$ }iؖ//IФ#epH`@<zQmlViSQipkq$Pf'nsLڎ;×uڳ gaN =_Cg[[>ݴg?  RDsxEDr?g1Tar[^Oc 8?ñ  yݭ/λ6ܒ/b ;lh>֒i`h- [us'݅?qewio͞\D2<`L2}j:91_kvc?>Qs^jZirCFR|>n5_-#Y\yY# TVIpw`͹di_JW-|;wkwg1!.m%#,:CVe%VI8@to_1U;XxBOMӡf{q崣FZ,+9 VBRAxt#-8:€ ( ( D(=c?fcn^~#ϯFx?տWԶ+ ? kݦLfQ?WgN ,MhҏV}-iZ& Ow>{+T#ޭ{lٓ gT®g7 U䌻d l1G\M;g8(r Ϋ2qSBnK[r;IHrS0AU'B3p9O&+G`OpJRW<..i{g9*XAb~zՄA@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ 4" 4;JhE/gfpI3wU;dI]j"S$L=vO(UK3H2Oʴ帣sQNS\C}QaؓڍngB.tZCoU+x>$6tז:G}SWҠN[vP}B_p|)B[b:B[;{oTW`[un^=H~,J]#5Q6ɢ[;# |L'eد'ڀwmqI|@[\1OȺ31h[& -sKytO)OFǡn/mZ}(\^Cqn1/L?xLRh9E?5O{he>nƅNg)-&t1x·fKK*[t][xmJot%0wZ8傪}'Ɩh^/Fo \.} @w0#^_qBocl!>~..ſ{n W|6 ZtLœ&FQ4OLOfcI8>9 Xb[`M~jW[C CWGXUqlGA}W-xko^cc(߹u|C b"h&rF"Ցh&iu1&$OЕ=OꈼOx-^Esn0Lx`;Rh9EnLڎu],Tj@0 &vζ^ٿQ|ĘqҟTOFr>oE丒yprM%OcIcy;k|@LA+|/snNqiD%Э&?VZnڇ?_|CʂlfڸΉn`?–2E#L%d)/j$BU#"Id C ܟk ,~oc6"8/Dw lcZYEk5!rR]GDԊ^_x4=GrYGbNѣH$a{Rŭ{:OQ_1n/,+ck`{ڿ,|0v>ծ_x>aijexKH-4ĒN=۲;χ7%I.h"=%  A=1Tre{NVԑ[Gh? @Nh[۶"e%_e`>Rt[v,x )ne}G+ Q-8J€ ( ( D(=c?fcn^~#ϯFxsY[{Ej@?|Leߍd}]3W -=޴>#D6fK}JV/IQ+9.NU2.xM-ԯ2A6m!{$S1V'#)J~k7WI#[麦}scbllfuI~Q&fQ>"Ϛ3Dסc6 kGyYzIί-]Sլ#_G|oYڀc&FHIYޓoT_/Vr]wot]N+F=5L1+1rT3w%mo;xyB˖z"{5Ӗi@8!qb[} fj/ѺvFwma^Ŀ$s:Ș>g$˪ίsjs-xVq}]qXqN]fR9 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (i1 ExV6pj F: >fO*)'mFLmtXigEHo^(`A1Dʎj{ˇi'ZIԌ~}swc)#p@ZNJfwpg`GQ뚖xU`CnAM"RMյ^]jWO<`3`Srj^_8h\`p?QկȮ DB Ӡ(XVEL`9U*x*'ֆ/xyUfݛ&߭\Z zb8ϯ 69c}bY5+crO?֎f.TcizvApO?qٗ"u&ުhbFfZ$.v [A; 5؉u;ƙ#UW $w3qk+5{-oONe#Flؚx*Aqᤖ#TT*$d(X{R,Ú->=QG'2,\&zycvTE1v2`=j=rfTx6zs{&qTq-fpӊ:ٯ̥3a {Q#dq*XI98imsP솂foeG>벿MO+rM0UM+{@eV9U9T"%I";Iyc %&>sbY1$Oz@ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (i1 EP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@jKTcP@zǃ+PV4'" B5GG_-C?:{Kb (晩iwvu5lF~;QVɦt+J TzZ|w_o_Z;k{ vpe_wӪqRnqU%zmc/Onc_UA_;A _x9nc_UA_;A _x9nc_GqQiD0ɖs%Kq3<,rIcM#͔''vGH ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (i1 EP@P@iEIx RNg ciKͤ0 ( ( ( ( ( ( ( ( ( ( ( ( ( D(=c?fcnt}ZKm:W8\2kРvJNMEuo\osU^Kio-6iF2 z'd)IF.OdOiZFqaEdM$Vpf}̦ܒ]- ^H1M)9wdg?\֓ꮿ"c%.ktv~go]{K Hm@*iT9T{E\/zI[wByb c9(r;})EtI50 =G\{ҭЙQ":  %{-k%*iwF[G'sU;!JJ*X/4mJ}?Rw$eqx"2RW_ՊiɵQі͵;#퐉ԖCА #9{p{z kff@A>:6n>fc*[p\*{R#sVh< 6@M_#oeg7Sm}̥76A^CV@#$t"M=Zi'ܡLA@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@IR((hg4MVOȭ Ѭldqc9k{^Ӵ?\]>yceɐ|tM_bMCPH;JTX2{Y 71=]Q.iǗz=E<;1^ -l&GM4kVveqkon&S$㐘“Z,ѱi-bISš}+J >~6QG.ru%P@P@P@P@P@P@P@P@P@P@P@P@P@P?-R%A@?AC5[t hKonFRPV8hC?3\sU^€5|)#N_bHOgNJo~%mѿb]`ErajKIl$ޝW񞇨]?V.Ʃ#ya*qʒ+zJQ"[939/=aEyOXm![w,@ S\"/_ס>EQK+빹?~"y\C4N"ҵ<u&a k]HF|Szsa:-?W7۷'>&}F;}`|#=rN0 ]NXry?)N_fK}݇}w/HgqU^}_Ϊե^.$ծYNXVSf\nzst{wsOv>?k Z޻ֶwh_3*p)?%k$J{?W<ׄ¿jP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ 4" Cuo/3Sɖ횧+v!^)yd dv`[Z-~KUKf%d 9 hµSΙqyoM%tD/&!ݚ_{}|eX 3 SOQ[CyA$ц!x Tf9+f J9o%("$y_l O-;]BJNTo끓K4 ( ( ( ( ( ( ( ( ( ( ( ( ( ( PZK@ (< 8~AZj6?_?<gjs][{+b!jSF!kGF8/6>,F׿  _S:K~Hٺ<=6^\kB>QN"H@f=Owz%j }큹xsn3F'gmW{o5{: D<*8nTH$Z=`El紎>+ZW+JIbJ_QO@>X[X㹷YdF!%I¬RwO*S^0U} _4:7 n5Y$:28 ==*5:q1U(NZ9JecFT6*C)!' ).%(_/mb j`6.[`b"Sg7/~de)GIrgk;|ApJ}lr"l6e_q@zֹӺ]#P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P7?cD ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (ꖩ  VixOE_k:]rY  ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (nƈ)P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P?-R%A@?AC5[t /u}3or*P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ 4" ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( D(=c?fcn^~#ϯor*P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ 4" tQҤQ#ִ1ִ}GN!x}7vwZ]OPK[GT(cw=k(z;ORKE n0#SاWÿWܣkIYw|L kmþ+OKkxTA*۵O|>iukw'yw!F=L: ( ( D(=c?fcn~_k>}MuȎ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( LhA@}??:懤xQvd9P;sžgk6 BH p9VҐ٩/ߍ|7?/A>Љ"*-J:{u59 $~ /|ٻ1@u:zFl{o3.A `8ϭkɼ#kd3h( ( ( (SWIoxּyO_7|6[Ii_Uw{wQS#"+ 0nI=>X4O]Zy< YsLp4P@P@P@P@P@O+5nYh756D e#}K_xti?g})|6OgځxX<'̒XX; N=S_kGT $&9o8nMz?ڿX%%!XfelI_9g}๴o!ŽᷙlV #JSHuh~*]Cs$ :?p=iSO ߌmtܖIɱq>S%K[w|eiyFy{aTB}h(>7[:tSG+'͐q(ҁP@P@ZR"XP@ 3U@/ ȿkЍwQ#>?ι"A@4WUKbϷ5QWRg5>"}Z'}TvUvoQqvdֺkt@x`2I8'7;j|.zH (KTҾg}qY>SJrV(ͤ0 ӠieO8 =I<]Xl%\Cj mDiJB w1Eh2˓uMFqmtO.nW8ߵTppJ ( փw@XHb@ WfSuBU*qϻkyl9Gf*ԥF-!dP@Ɵttèy'b_(ˑ=zVҡR4Uu cFr%ܩXue߈B=GKuIdƠNvS})7??^Դ])uDӵ=0ƺӮ<䍻c7k}{=9J`%~uQgn tɭ)Þj='.lj4?{ݹCt_Z2濩}*KMƓunajMp3Sz$WoJIn[) ( ( ( hnOQ ͑d g'%߮KP (Di17^a13jW>HoGz#5&v]Jzu rJ[=J۽bH #8SRʜ)0崺vM rS)%%)1POJѯhE qH;9q8=i8:}ەkB=2N*9(Τ89|1/-v-pph|ܧe_=E$՝(KAҿ;ci<ټ8py=6.ւw\ͤ0 ( (/M<0Vij" (ޒq{f(N*q٫!hS[jVV6vZh?p 6z൷JjP+x@o\٤8pxފQUWn]S^uCO|߲Nvg8YB\R5y]D=6p30HA\3¯oMn-C=wh^Kjͭmiͧ zI8cMuoo8O:FǰyDʯkiB>K|o{2W$KkjѤR$($'k9.ߖU&fu_ 䴖hM}|%{k9EP@P@P@P@P@P@P@P@IR((Fdudb h:N^_,gnqoO񇉴5Eڠ{(lPuZjcRQ X]E3,A;H'zPֵ]GQP5;칞Erbr1ڀ'|Op$ֹjnXTEP@P@P@PAEo_Ihmd.֥vZRzm݌P?@P@P@P@P@P ۭ:+>{[c :PÑ@k] gP.BNҸQXOg/X٥5{TVDQ6(uk=7⽝[@bqw0EW1M/rƠc_ݍ.eMsYrIF:!躶>.^-]fYlֵmCP) ˷鸜PiZ5'ů6&do0W/O~gMI]~D>0KM}al&c$kiέ(%+_1JЍY2~_{}:׈+]_DFdaSދSqJi~vVȤޭ^ݼHfKm|MVs2JK\"J/sׯs'GF~r~{ohG*Rc1uY ,T7`k]8FN%j 3ǩiw;cR<\ۥ,Ns}Z#NZ-~~ϊ[H9gi:K mffl[Vӫ^uWXgV0pjVܿ;o {W]"[:N#rO'׈t4^a nƟ>&ąQsϵKXYFn_m<_ց4\ҽ]ojGd*n$ӭ"IXt}I'*ntiR?ӡS/(E.<ދnG5[:qo M 򴌒m0 UREMpW4ߩ%9DVv {}Ey)B45ߖߝh:Yrd𥏆uK<e16Y7Q ד{[LM*~|ëx^sI`=o*lk(JUI엟_7 {oem/u>xHDq޶çkRz\n]Ǡ[8R4S#Zmv_=ߗ4#dOVx֣4ij;0vbI"Z}X𮫡EW{ x/Hj~0sҳ\ݴ.Z*˙|9/J,<7/>kkO(02Ii>L{2jj%oRRkE-w[/%wMH4=iXpf"_FmS|t^vxՌ^͡=PxKºeMq}q NnR*$98bu$u/v? - / eiucķD\GE6 1k'wN漻rpS^ݽ|ʗl̖=ͮra?ŐGUPvӯo˥nSTy淫FNҼ15c܇N_f\l=Nw/a.-'.49I$^)ҥJPG۷w#]2[h۷y4S暾#>iGuG[eg4c@NYntKY5v眚'~r>𽥯Xi9N.J6 VR1֦wҽW]*s8}0.nu%2@r5'Gs?h+n0ymq4̣ 6jQ)nANiԌwM*eCމũæxL4vGlW*1َzsCVҺߏ:sq䞊[᥉īM/Z+6ҨrAxp*o͇DмC[/ {O UvvGFGf-U*7{[~DxO//4º6x_mqkۃp8$׺tz^'OW5o\qZ7n:}>3($(R^JJWDue~ֶixv--EyM([FGasjz][暔vj?kƩ+Bxt lImV&2R_Nii禿c4o tЅk4?Ŀ3?o [I|5g"˕0>eq?B+ /gT~G==@u?E+gF9!'*9fiFvrϖN'~КK ZƧϤ_ fIcKt=zcSj5zsYޓ73 xz Ö=?YG erĞwT*W&5YtVבCO7.ǧi I.B[quT:i|/7Z* Iь枆7OKUuYfk+QJ)p2d gGn׮"cyTodfxvWe5m"Amre2v=$8'-\l=jO:$̖OόY4M]WkntEwrLbDMOD~T*moù4 i?|=dO2th|9(I+¢[?_>_֥h3xsB$gk7庞$J),T)7u+?&p59=] [g_ x.mk"چǾ*hkQ]2$1彻hu3^JWMְH[hή~UU_BI$fn=5t~O wn<INb]NHqnԩ;RsNޮUqtWرs[ k@$/,-)gy9~ 8JisZz[M9TT{g<)Z֥K}x[f!8 19洪*(%SvTy&_[w,7?I1.4~8c?ޢ_N7_ԦѩYWk|mtsqkj]FK wn|gF4UO]T# iY8+.q ltWvmvʑcӚÞ2ߕRn2̯|1VjZ>%qcˋ$0FqӚԣ-Ԛ_i/SHm-OY/sk*YZv]w$pr*g$QR+;1wn_ _;muohHLNt]t*ӎQrFRI;~oJeeڞOǭai,30?M?\4k[]Gl9] B~8h*P}>JTۜNO3x&hiR*24t&vm❣@䝀9+m].E4*Fc#O<>lrdHA*JzgZn4uoK~&FYXhmVR"oc@ 'SXR5&oW3] ҵ+STy.(epZ"*Q > Wƚ5D9#+l?~ɿ6e=:Zj7՞K{;F@LMqt4 r\$㪓tW_V^ [GLXa>8umYH;i+E5RiyVNNߩ$oi`҅R2es\qSSݣMZ{QGOz{:2hd}IQz{5"4m津9SkToMGZa[Z8պ 1\VGNn&i}˿zT_?i5kf2I ģJ5X7~X?Wʜҳn|"t\]d[}]ٚG\P ǧSsZY_ܺTjޟ:+úo,兯1X[^ a\R)Sj^5Rfjj˗_: Ws=%+ AŨ4ڗΪ6~HúxzOwDuR' =Yr/G]uv׷ ^,=ght?4|5{-[{#p{ָ*4}Ji'ZXRF}~2ZZzfO>y<2H}:e ljoZMw{-LFJYm*~< }W-Xԅ99׿mQb4I-<=[jeev}_-]vWhbpT驨Io,=Z.I7k_EVOHni6MsH9B0x}k\5I*i6kwМ=*ub߳jiL/\]}%BٻWh'$12JT#1JuۧW"O9nKm(@@d8N 32jGF-bKfLP01]Q9l9(cۮ'Y|}`6VץX.Fh-uxIGvr}k٫+/_;.kݾk>8x_JG9Y.Tv]{גhӄS%o+xbmnd}!E\/$ `~u (ՅV)=^(|CWz强4iNrkm'91PzI>B|jW_WD[JF ?4&ڱrI=e>Tӯ'x^_*7 yxj.jpdެsݯ)=Xl,5=&GL[\!'vs==3^Ӓ+4ErN[ӌ?^֬V5],$c rĿ'>5_<%ɷ_QӍ{ItK/:N~цiV̿0{k:ͅ768#' .Iv]<\,oFgR{o*@0JR,“c%U|-_zɊ̖\>^ 'ҡ%}JO+Z_]yhG!@nʜt#Ү54S:VoiEއ8t+{dw/89 ue4J&hx[Q> ƺ"$PFk~{5SI5dr+:njJ/O͍&?Uu,Y#Csҝ_ןk..Tݢ__xCZmSuے37@ 7hHi-)$Rw[~ixT"е}.CvAuO=Ui٧}Arso9oBPrkxÀ6nj=[\Ƒ[UxZdKeI+;X~kjoI$t0ut^MωaAy'^:Vm/n-cvwD]yRDd\*{&2mltz4-Pu ΡC;__N2N6[Z.8hZ+J.mc`ԧ״[Av"R0'pϭFܣ:ogo]Vqш_;>񽮣uhG9*-/zV/9[MCcV FՕy@䷵gB>.x+&bu6@>ٻI>ew9kӗKy_lT2^~~F/SR-GƱkO4}K ;q՛i__CGưYkuk-gKWg}Б9UeTZ50+TڳRT,*,KZPiU}ц)9P[^uVŞKkR6 " :ZyUw~xLx!dþ@WR\ao8$ܟC{KoCiHc XpK~utܲᶹ D5#M{gN 7xڴ;EUĢO#(朩KNk1~k1aj=Սi& i a*ӎٴiINo}h'o$ԣt!zUMV7iiR}`2O^i/ IrWSiW?}Q{HFXOLdԓ{J6_aOizuhiwuwl1:Juʂ~3{G_W_׮?/mfoXnaݮ@^<:q :ɯ_)TOɵ{I>xn.ki 褜@ 1%'/ySVKH~.Cݖ u8AuFon_~뛫;.-KA2"8k&2kVߋ;[iv ke:5۔ QJP5C9FG-:Mmoc(Q-5I.|@0NIk߉QZ\|?U[p&$ e7Ͻi[Z_Ȍ>d_ZK¶]@p\aYxcgާx5'GHTY/ȿ6;-rNiov@F|\yx3VҼRXUl< l]?nmo!8U>Aʪ&UXs=SoI4<5ubC mBCE7;MO@ֵ JZJi/D~_:6V:ս2w>LN:p}7(^ MSGR 񦵧O j1]Cqkiofex8]wNj8{9?Z$#/ST֞},tk=֟yyt BfAzڰ·N|/MΌd>hwKMwl~-5คl~gۺcOЬor?][9$+PGɨY5Ӓe#]K:~}s%hջP'[Z>e-v75t+֯໔Krpy=qiW(9%]Z6u o̿.: [XPN]ٹ! H#~5bze+-B~eA/Ф L:uњYٴDj(E^bjSuKK4wѕtOJW/_^'P{ n~l6oUicM_X+?5[ii7G ]3:y4gp8pr*ބnəW'=~ĺſ#P$R%KT+42DMbysk:G-<ǁ]49UG'L&w_3i4W0淑%Kٙ$F GQ\SPI;+4e,S .Tk[YSH?(æ(. 9MӰז?)Y79mw.^Xݗ lxW u(ڠ 5IJݻm:$B;EY|RH\yֲBA tS$cVqCx ^qtwXy>\l|aJU\V_/k\^ӥl5+o5HJW"ycުNJՅ8s]n@YZxU4Ӳŏe9:Pr_t$m-y~jvNEdt V+e. |dA$cw)Ku{hM'r_GVOnmRTuI[̊ #VMCN7I/kNj["]X]OmH P8 ^ Crqww^^_E'KXz> c;j$R+"3Y 1 zRtk[]PM?kAekc觭[Կ~U^4 h6!YZ?3}C! Xr14eRrե˿kJpjm;>_yg(A]Ǧ9FW;w,;޼_ARv%ܗzvxz"Et2 9*I:.+~hKI,O˾Zl㺁⽝dpJUSuґTtKBѾ KuMYhUq^*vA4_.ux{Z÷v캂@}?ͽZ_Ӕҧ$2OC.Of!.-eYEr S 6VgD[|_OXחo I{/l׏ֵ=TՌ`kIGe5/r_IwDkXeue9EGN!N.8͐f/ HɇڽN=J ;Tt&3ff]~3BKk+AWrミwVSOIk_IRkXz?7—Nc1j['{-411Uw< 4}o7UK+~a|&]^ml.f" d:NJOqI~_ZX|B$4eN9- 9"efL3H.I&E˧$11Y$h* ;˭69aO$2} 4X.nj >a<6Y*;9nrX%vX&SC銑/GG4,Ӱ\Sct#HĬKaPbq`i:VB[ 3B=>lbJ€ ( (-Z}ΫAecf¯'j*T8KdDE[ ~웿V?GfJ?yڑásj_Fc#ԍHGfzPg(mi.mCx8nI֡|-\Z[ѴCJk5qkx~/❗@bi:ЈX]%Rpotlx/H2jψf!VU$g=iاBVda۷6cn{> U+1e!Z~߻?7q4YV{H%fHY)6Som淘 0 A@€ ( ( M3F>UNnź껲wTmȯM&Ot>ŸI)&fi:8į *QaPL~\,(\~ߊckgM`B3Ў@-Dކ$v2KqoIU TLoX[j~&ͷ>FpG=E5=~7If~ >61E%@!]zސ qm=\C,FDbܧ={/PG{Chag `41ktN/mF1H|5Iu09+atT/ `p8r#e8 i %o4O _SVYfdQe>EU쉵ٙiz=؟U$ڎ%,p%#l$(/9s׭EjKTcP@zǃ+PV4|'" B5GG_uȎnh$( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 56!h%`IF##0hz+IK35|6tAA f1+ɒطk"(>eKoioQ/As99i(4_9b (޻mXj%, 9FQHOi Ǽm'$GaВk($S)̂ ( ( ( ( ( ( ( ( ( (nƈ)PXjYi^Asmp;li1}[K'n!nQ#xOѶ.vpe j;c"MnHR'PGKVB(;v:v&h sUR@Ө;K^遣jz۬%q%Q +BG=9]x qZ$+#Ncbr;sJmNٌ74N_c4z3M-?do"c2׎å&R+|1&vOρ5%CSe:jL/#E@0p Ji'^`S?L0t3fwsἸWƼ(&)+#u5]/KEn-&)F M>mFf fxDW ,GAsws&}Nݜu(umm!|hJF!GpQRJȳq<I*3#R@o9;Kvco $`RBv[tU%&_v-۷fE!jKTcP@zǃ+PV4'" B5GGwSr#C@ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (!Ɠ PP@onl-gt+ O#ϭ;Ρq=IwA˷Qp]{Sfԭ;ɘa{c\,j> 5 mt**!TQvDqkZZĚ\bBťؼ1 t .-n ҄vsEӳfgo ^(8eP #9']B]Z]SI7۷y۰zQpoU>5]:H[hhJSi--iL tp;Qp{SFoyy2*DƋ1i ( ( (U2Ahs_}^/߭rJ77):7)33f%O$QihLx}0[*iL]g_5W2Gc")ڠ *Z.-CWhCG'Z..'Tn46f n=>D-ʘ#<拰 o`' v 2+ #>\,G_闱\Gd`xhFZ݋_3A L"Hf`2߉,Mtu@!%ȧg85՜IFݗ(mo6C"?!d4dS/{X̳+nqМJ.5';3Mso#f\xWMr$P}@`qQv63羻VSݏ$kWQՖ[!ӸX 6AO.̸[k^Y\س7Ԛ@G@€ D(=c?fcn^~#ϟoDu=ȨP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P7?cD ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (ꖩ  VixL?kЍwQ_g7":T( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (i1 EP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@jKTcP@zǃ+PV4'" B5GG_g7":T( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (šLhA@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Zb5D(=c?fcn> B5GG_ luȨP׃{}6e$/0oFGSi9-~u*r$Iߧ䓨 lJ[Kڤ}?y/4{}:e1 $=(9>3R[\ZB ( ( ( Ήu-nKBVŒNN`j[R}ɜUoӯ8Y7@2:C .:T“;? ( ( ( ]B^lCv]dl|9jZ[W5H[ʩPiZm406<ӕ̖i%zyȤ[P@P@Pb%4vvHQ xzrrl YvOIuFA@P@P@P@Z^jQê?ٶ>CMふy9]ehk9 ( +M:-SfxlQ=$[=4nӾL͠ &yHoFKdAl:NKr; )3[5s"A@ -E }.+-e##隸;ob'>K7_!?=8ҦZqUSo޽ <[^ -o޶ͱjMir=Y!@P@P@P@u <;igjODnl S_7QJqi[o1CS q: s-1jic恦x>X5Ʀ8laBq-q]8{oީ76pWz#3nl1T( M=5?\O~w#ҭAʢu$۽mÚfb71*3yM0M6fU$geP  ( ( (gO-3Pxhr0 AUw9vg9]eomv5)*2itch ( l@ʕ%P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@*.JB (Xwj۠f?kЍwQ#<>|:G[܊:7xI#b28 2qjKt)EI8hrWF_k 6?J*z{K[-4Ԋe=}/篞`4jKit7 jpNĜMƔMKޯ5Y?d7cu%|YG[J}&hUˊh=)Uٶr7)J[+*a4m`$e0:UWJI8V冥' ekgM0X%ʌ/vYԟSUIbjElO\4eך_gཌྷnխb[ 1G85Gѩ)lF.֚]e3{nu S֙gg \A5e.!4ăRJ4eZ[]4M-,NIiO!K-JzFmdSw-dk UoX];*Чd6~ Ly 7G=s[4V~WJn_3JмqKODVcR9:z}j)2:I7U'%F5^2wg¾OABspe5&GCEPY+omvjm^qge~t(9^ܑ6s)Oͭs~bVѣz- 1}p'#$%=%u峽?qIY[קjjt ZvP\\\j&6H9$YJ=K_71'9=nջ%^zHu贫_VPhH\ Q/K'hҧ%v&KS7,~c/ڋKb翭tZSuZ?# K/5>ki|GY%t:8F]: 1#'&^Ƭ6ƧU8-Z{- ,&ܾm&Amq_1 hOn[o_c(;O#/m|ciu]Ed1[De\'K_ >i^|6^5"E畠e11*vT;SnP2KO4ok6eԇ?9ʵnEOWmW{>C\HWnPչk'iՌfZpkw'-MsW-_Da+ojf4<OzVmFMԕ7_g@a- iݰxGP`Ku9{j[)~Vtcz4ޮ+cdnJO}][Bp|'9zVVi%~>Dʫ֒rqɿEa}FU:v1qWkǦxQu"ݝw.OٵI꿭 Wv:F/^esL^b nsҝOmm\ ~D K}Lu7"@A!@gH9~\d){.̥WN֎nF|Bt{m a彤U2?t@hȔ=RW܅VRJ4֒䝇Ebhr!%Pnsiыg}0/c(j[3h~ 햩fZmF6>SYoMj毊S\$[4[7~%χ>Ok[<?IlޝHe/wΩVT4SV3ǪͦzbS!2^_8*|֭7қ:P~<-iwWBVpcUAۂ@(KO*7,3rVz߈?=rۉczn{jz|ԗ_d%m.]F$b-?p^r??_"o;6隶jזi+"V\۟*C~=OiMUSjG/ jϡq}9g'զ&\T"]dӋfK/SOj&Np(Tm^]7veݪ]]\j0ȁE1*;T8#zEsU[^Kxz='Q>14{U%Ml/N˞qޓ>erN+;(oMCLOx].%F@<BJQ*S[J~wXj)3'gG (;s⪬U>Uz:mάfM>Կu?m<`Ƭ d-m7ƒz{aUۏ/]zZTSK쿿mZ~=Ķ]zmgq~\R`/nҴ bi.KS4&s{z·oe}{v5ٸ FTq'˃9$t齹_^a%8Ќֲq?ׯAo? iwD{/dvOXcFrW){h-:~-#[؛=*5J Ž{jisFZU#˧ :O+Zͥޛޣ;+xQ%OkIʪ|WZ7>SS/kWPB|cyMiZ\Tb^^fT"Mɽ_vg_kZ=RCu{hqy'#2ײQ}z/>wrKg}7od+@<ʪՒ_UIg٘[ƽM+*DdB$#wOE4ʪ{u?tz^hV:./>46AV9emH_j6X\whP'uޟ):褮ho/Vk.)d촻Fݤw6iJC ,#% hJVM~|t,D nZOj/I-Ӝ>Ru"u/dZw_1|)ii?vXe*4Gy=?pH7KuOȭɦ6xUt$ ieElmL1;OPJm>p$ͧSӮ%Ɲ;Xt-+M-mM^'9E[Fӯ2 X-=^ڦׂ|E{Oq,`4U]ǩ{Lb#p>\=YI~OC.|)zvMQѡڒ]4-qq1YE*׹ 8w#.]_.Mr<ǐ[8YN\ڻ?gMpJ-n37 chY"1Ym =nouDukg3ͯ+ͦizJ%֛o+]_ 'j6xQQJ2z)EijObϋbr6j~0.D>Wfz!V۔f{[]#(O߁$Y 9rU ũ.Tg^jdZ,x]jX;x[i?֦|ЧOuR(k7?u[*W2Ukb589R)_ M'_-[ݺzwwVz^GXDz)svv RSR_TMRM?oV6w}&"䃓޹`۫UvoV3卥%&o#1 vX>SJK=6qDS\ڵ&iY]+2pUJNvM~|ˊSzembYޙijob}>###r&IN-y'{ nhiiݧЭi3mO50yn?㯿5"Ktݫ*Ih߿M~f#զ:v!yzaT yvZi[N K6ͧ{dQd O˹:WYFuja)^149f ;z$vO:J@ A*U-VZ7QvMZs}ijNp=yb\rm+ +ͯF4wn01QI8ޜgo߾iG3j_5d0;ijWtne+ȼ z{)(V(ꕟߓM9TUnzWZ;%f-%ުѥVd~r*vRW5t[f+<&,-U 79Fz7ۣi{9CUOiz|]soHml Nc }9+8M‡j}pGDܶl&E⧂oi+m+A>Xd~X o]~2m*ԓ}#/?}oYK_^[?=º:v閯E|Kp:(88lVs\iW+_/^#.|ED^;zQO_]cS}Lu-*xɧ, 0V6&ѓu%M-GGaOE=+[n.#F1kU8pKETZ=zOS~o go[Q%`H IޢI:)}<0T(i5&.W1}NM7Xv3 VvY8=1uei_彵_St}eDJwY gtNjzw~w056伿IԦ^(qI<̣]M%w~mLuikvUD&Xמ=0=~'g7֓rOoot);YٶV{-+6>rSL]f+.\·N2Ng /zf p^F&h"wldGP\lJSt\Wv~^w^+6Zy2n|\'U%MO۰aHo܋@Uχ4{Qi0yoȩr=2M{5c˾n>yMWۥ.yv/O»R2ېxZ;;ټ%~`osO~Y~ej_]xQ?Kr輟S;Bl>}_G2[i H%A82j#RvNF:^1ON;֝mSJt;Rlt'^v0榪J Za-{Fn<=>𖋮x}U濖1*TdT$XXgVkKsx"NcER 㞕*T-NzH2RQNTm%Om`{nm)0^0Xd+u*N 3Mq~l$6ks.h-$p78yioϣ>WoU\r,|t<?zRl_oڜ#c-+i?дvn~g=:.[[kD1|Ӟ2=kAԧ8-~k99FDmw,f-C_A@̡I(ADp~4jߢ=rx_FmN5b#t}"'c*&Yiy4M7^ ~ 7ľL5+6C"X'??jjkU)[9ss['z_ՠcixAk"o..H98 Wi*gQ> uM]1I2YqxJE7O괥}Zq~>4.ntm#Eӭ--.-E)'!qE2ϻ;%%[Z1cex,,aEthToTrTrzm ڼ:MH-!&"*!9c?DJrzI+鷡2R k]HJi-wZhn>kmt! ֒aUkFYE#4׃QмK}6w;ǨrQyԴڝҳISou>~Ǭ&n]NK[»WDS^I?׈bQw{}ӏ+[:Pk:rՂB_.Ws͆\ja4( 凫K9tR|1l4MKVSȎ}6h#;;c}:aS[8Z)]~ i:>6dB-dr?_SiMOu+zv3?޽'[5='fOxeB9 8'JNcw*Tirz_[ꡋW1- $9GoKY~myoN o3 hVַ.QsGfNmxתuO2)sF.fuo klbӬchI J 8>;N8=>Z"bNU3^i|>/\kn`rC,p&rkcJqQϲӽʭxoŞ-uV]UҢ:V9tay\uOj+_4M.~CĖ=P:+n$ ?uO c{泻mieˮ:~ݷ|ijw qmNI)E%o1u7<1oݶotm'S)30®0IιJow /7cZԯNOꥴQi߯Bוu!m [3lf,D`{CG9Wj χƍxVkt}B{5sƎFe^wMʄfk*¤eq7gRadk{ӥ'R9} 5ɒm٫Wb>!lt=:V}:7Yu+4 `52|mRJ|O/벷e[^axYsk,a3|̸ jGތRH~k6 &iWP [U#'8M}A.oSU'W6ͅÿiw쾽x lc+Ԋu+u&U%ZR{8[8꒏jaK6krYF&B2#sCu~Ft\M[C:_|>tHfBaku =¿6;gl\gRrQ%.Zq\{3ﴏ5אxZ. ?>河m{_M\k]"CV;@Nq޴SI9Zɦ9)~7*VA5(;6I(+9S' kևYB񮇨X(4Aiuu2lNCG\JJђ_tRT(}Wք6>ՓUWZDdNDfCNNOkuc*{\xU[\jf;hdUV|ø^/mc&5_}?5 "ɨO-c6A8+IєVlD&W ?4G^CM2 !2\n9 񟯩ӫiMOu+zv&#(z/}wľR Үe:C΍ƢE9l @'])u%W'/8oAY̶HnRăֹ;+JII5—^G_vtnz,h׾D:K5x"ܷ^;f̥FR.dOX?˜4qqIuSpo{cl檭nQW/oIQ'ña݌uU:vP\߀kOvbFPzg5'ZZW5ECWs{isrɱ8A=ABo'z4Fd cqX62j(<P{QjT5+l4i-:hsxğh[kv$!"XoγTʜN6*s3 X2}RAV=]c<iI$R6i?w`0Y^HviUU[r"(.ZRͿ̿|cm*Lg6*KMfoJ4/ {okž?ZOA5Z10[wTxy)ߥ%hx'SO=ع[iVUyiN[rvrjԖ=[p84=Bk5/9X?4l  */oJoEҏ"}nbSuj\}I62<05~^ʜz(◿]"S2!2dngg} 4*9-SV}~P烴Q-^]oWkTZ4ۣ}wr[1QQStѽ};_j{l_ɯKaSw(_ୈu/x:ELWYmţ̓rm?_SNQTJޟE(A3ww T^V+"x#8#1j$/r0Y!l]/mۙ+/Ng'\K=Lֳah^͚Cpv>G5xOW^.Z\~i?:l5M v3Xnc.3fED+).Z\~i?o7Tet5moye'GVq" ϑ_ךNYɪ+ɭ"q2iħ"3!zҧ'E5_UXxʞ,?GŖhLܯ:>O[?;9IUU i>)eYG#9bǁN_oO/a'ݣrva[G|j34po9;zuۤ~~eSVf'.qq 0+<٭jjnT* so;kqZ2o#&@XH2)b_vr\lEA)~ [O$I9'4mݝ5M"=Z&z|QlXZPXj^J"a)BZrG|M[?j{؞ռO9~泓smTZ&9tpVai]/^[ n@"8EnIr֔{G>2Ѵ5t]gO[W<=Z-osNYv`/<ͷsS>k9s.[kNZt7W~׮_G潼{idhJv+:T-,=},XkͽW2/Hv1 Ŵ bNÌrj.?/3Psq^?Dzdf+)$cҤbd.Cz:T?yt;/Yp;O~)A)Fe~}SR]橣x6{?\joǧl[.n0\uI.d[𾡠xúT^Cqf[T洪j6*r'=4RÖ6>7үlqJXN|Jݮ5ivﱉ[Rv@@qư9&~FmcKܽdb2yMؕInsZ5_}Ƚjּ)\Wr$69@1޼{-*JZ8z*9-SVחIaxov:.[.-վ銚7JKwmAZϿ C=*kxJU(,bXH7Nׯʜm̿_#+~ο> uIva`~U`d'FoރMVJޚ]j^k}}s42 Y(A$0Im'o[Țq圤~{1qXjZ'͚Epv>G#4' _KNX}5j<~i?]{ܟiB"Yt׵pc!B}t\fuMЪrnc=co [%S%ZNR]3\^{Vw}$F!+USҢmQ;z.y9K ;x5K\oHͥi q3U%ՕH;k~t({Z ~*kX1Vvq+D+ۓd է)=?B[[y~4w襝,H5ɅB+:Jrk+l4/=ޫ?nme>oaA5-hԏW/uKgwfQ>k-oYDEg͂T‚z]{9ǫ*nPkF\𾷢xR&8eGJIN?&Zre>:ݧmuٵmAfZ4ƣq N2KmH5RjߝΟSx;w˭kz^p\7+/8JHO7ASqJKU_s?Z4kTpGI6rN:iT=5a5(THegox >"Qw%["H1<{PnQJ%??-^]x}TV[9$+&0z^M>|֗xZU۽ۙ98>v%*_p(5z<@!%3#QViP@5[恑f)X.G_ EQ`y~X.G_ EQ`y~X.G_ EQ`y~X.G_ EQ`y~X.G_ EQ`y~X.G_ EQ`y~X.G_ EQ`y~X.G_ EQ`y~X.G_ EQ`y~X.G_ EQ`y~X.G_ EQ`y~X.G_ EQ`y~X.G_ EQ`y~X.G_ EQ`y~X.G_ EQ`y~X.G_ 4$U 0(P@Px;@p lm3CŸFwSr- ( ( ( OԒm_LӴ ACC犨tLmYطOMM.$;khbX-?,EZ\Եe葇LA@P@P@P@P@P@P@t>9'%:jd./F3*?WNUcP@P@P@P@P@P@P@P@I:eGg.?N>MûOUƧk!]ZMvH6hhr{I2MgmMC-PYǧ1yVq$},$5;L ( ( ( (K}jgR rǥTZW&Qj>. ljuoOpEk vzܤۻ/E葉LA@P@$ f2җ񹝹77":T(KxdV%8UF.NRr{#/|-_ *[xSn5vPZi*'פ :ۯAEM)+__xG-^X$BeIgWQs_ZiP |i|_{{o[FϽĶN:%a:_&Q{rG5q;1g4.]{o7z|e܋;6ݟ1֜ړJ~Ҕ*4ndc}>żygǙ8.?>F<ͽc+8[VjB ( ?MAvnݜUH(y?A\kR{R  (4O!/Kowf@o O|eXp"n+zdEkF*R&c_̿[ŶXxWO. c2N @<+:FV^_h|,յ Σp6P㿥۬~fT4E?V0$ZGJ=6[\:l+r$ =+5;QWo?#8 ( ( j -w#q`}Rngcozc';m}=m}|oxuki3G%i݌eM}B|%Om~"€ ~)h~hivB\i(͹vON:iZVZAaֿr9#͸䷓=;n>放t)_v]|8ﴪ&$Q;2d.uϽ9.X]_r14?PP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ 3U@ Z#]~y?ι"A@$hb|lⷡr+2ыWfn{֎M0N"MWMϵJ*T*'?#3Ko5:yass@qXKԏHO NXzs{ m#_:_χn- x^\yLPcO1x#ys<:T+_cʫ5ct-EkkDĊq2 إ~]5M%%7G)릕K'+lWth|?,6Wm$Nk2Oyɬi/kO?w]?$ku=|3t5ZӬ0 r\wZW%EvIJD߆-xc_c(h^;..Z%GDBpsUk*:6F-'k~՗|Ei}/pjgLgl",\u޶ķzr$j}A44,scOZQ)96>(U|âPhr+F1@'?AJN#=LE{.g<宿~þЇ5藗wwqL4ŹP7+|zE[տP-[C%:4I]ig@)`iA^9*SwvxB^DG/A*st/'_C?Z[ɇ/.?lW_z_8m|C~Fnx~rbWvzR.zi;N*4)oϯ5^FckCi-R{V{ ?ҭYA?v._3ΔjY+ˢ^[דEеoX_.~aRO^&ssX9>ڤc)W}>VMENVou>>8&O*[}`BAS[WmKWg{bZSZ|78Z^m#F4qXӶnϷW_3TOnE&} xM{irbTxYz*X/eKeӓʟI'jgVJJ?AG Rkĺ_:?w6YA:]Iqf4" _Qc㷉5gצ, G{ns\6.o=>,~(< 㾽AD G?0 n{J1?t*E~j~,^#1^ip K)UL cY/f-ԒOTofqoѫw^(߃tuB]8fWtAwI9~#=kF һy[]L\#@5Q a5/O: O.7`8oN 8Ro goF~oė+ f+K[*;{e\d01ް^jY,=l|kݝE4 Z>hgwpYNc.P=1V')jKv%RPJoHėJS>-?P,xXIc lVJn9/.I՝8ˬ[ۧќeƟ]qi++|FҠߊ}m|EZiQ_ H($@)?08y7k;{}ߪRە~{|Nk~0J$G (>qQXyj⮟Һk&|cZ|"-MO!ɭISW&J:_)ܝPi i/I6'+*@$: MB]-woĸ{ge^_vFhZQKV'Vi ~ΜiUeZl65{+_O~91K bFB-Ό&2rs汧[sWWj4v-TuE_,*F#0z %ªkE{¡.l-9Z_(%Y쵤g(?ި_Y|"g).,Z7Va+IB]\$rъU'7'sɯ翽2yInbrNk(EY2 HP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@PU[*MDF 2%L[ (s\ž2կg T w7c?}9J=e澅>!iݔz9Lh$\ƍ4=kQm*}u+úx:T7F n@DzSW>iCߝRT B_{j&3Xlޯi9158Ǽo?$Þ3[I%;_ոvy}#ʹ4x6֏KXI4/dP7 Qn+Mr[ox{XޝxSF;k8f?Y^ӭM5('Ϸi.p@^9ݻo qǦiӝZ5kyZH)A$N=7:MR1{vXhB/{[_罯W]gĐxo牞ٮQ!`2GDŽiН9l/JFԕHT/h+oF7@EБ򪪐6'9qZR ]WV5Gs2CmMD< 9r}+J_Ir:V! Ƒ%sӢP2뜑x抏nIrP76 MY5]2ftS)^I>o//Oֆ7Þ1Qqy2w(gS' ԣQi%oA]?6t_@ i첤wMP p7~TɧCionķj"&@gkqqLޤtu~^x/RuˤYUv(V'20{֓m0g)/b^xG /ֺWzM1 yC*2s{E_ >tZw#=oo\\DOȧA8t~zNUKe5iITWn9c9^y/~N*<'|ExT(IClvY6OiJ?t*߉/Omnn!Uh1V8>\yelՈe~]x':E3\Bf"Ђ8@98'8Jvj>яij5Il.5*O! Cɭ .4?%'*=";t-?z'u]A]o [L߲p:YBv;S@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@POUԠ<8QU3nܿj1Rz~"E ( ( ( ( ( ( ( ( ( ( ( ( V_-_?<g]\{P  ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (U%?߂EUIu+rE`T9+dXGvZ ڭc{u\.YI=zMɩD4<-{:4x>@ȚZilY"'IA\^uVޟ~Gw[mCS2c X3cxEF=o0SBu=xkF;Z QWZ0˥Ky%z'GUY+"ix yu4♸AP|.'|K5)c./h@ɬl-~kmuC$И@FHnHAj}iP)-bfUCK3Qr0: @x|Rڢq R'Qb Ku:sF]MƹHJ}EC-}4G8!6*HBԦgU$.7iyu4Sڂ):pCq;gH}WJgEYNF@#=\PiZimi,Ӓ'-AݏJb05;٣Ŭ^γe#4鼞pqHe/h}۴$FY]{M+k}kQq̢x&ɎFc@9$RqP@P@P@P@P@P@P@P@P@P@P@P@?AC5[t _Z#]~y?ιQ"A@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@tmB]+RqT q;rlXׇOuGwV'>޼Eٟ1tTjN靯|y~;U)`B#\+J:#2 &6\VuX(څAV/ߙ'T{hraWF\ҼvK'ߒWff?&>݊~8FlzhRuOo/'5[8Kg4yQ1G0,Joqưys0s02sv yWEs,neyZ:֭m=ƭww"&K5xEro7ʘ-s3WM:O8\݇e[P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@zǃ+PV/W@6/mu3oTv=ȨP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ 3U@ B5GG_+or*Xo|E&&Du29C, ؘӨli9>_:MN¶ZՌ}љcw x3Z{l;4zb^gMҽٗOPg}.Ia[va]%t1Xjjk~vף]AZiדf_ ak5̠HPQ^oEgu*[L)T'jrKE)N!O E̎HAOj9Q~U{ X$(%xc <5QRIJ1m7mi[zDդXLi"ǘL21RwL՛#6~sU[iIIP0 +-^e{S}וRB]S9kyXmi[jY ҝGh&ߑ.N]_iy_ntLdQ:SůRFP:^~67W* 86Ju>V) 7U8duЊŧg3dZҤ.E1i`Xq0AW-MbA]֛>ԼduM1+AE\0TE(@JiRi46tf1RUz=keߞ@']?1o_Eɨvt?48moœ;Ĉz*1ӧ(ԣIiz^L %*tԩ}rG+ecw!KY]FJr\TT[GJnWk+.rHSCIRIvti&-X"ݲ1´вN8:`Nsln-ɭs,p(@Wիrr;wPQ^o~ TIȳUo2h!HR@0  rnM?u >V}eO_Gm=W2 Oo#&^~NW~TjA(!/ܚ(RE+ 7IUU-ge-Vvwvry0CUUp8.axKIGc\ʴVT,bӢgN)V6t*^eJI۴g\k( N/io_Ǥ*庪_5 IZU!)z=-+pj5NOT1/Ui.6}z:vT߳x:6JO?#R )ֽndSoOyU5Ym}vjjiZ ºΒڶ3[Giq8u`U<76TT2Wy rU)Jeκ>̟ 6xj]uWѯ[UeaȥXPSi+ՄiΌ۽[VxȷeI^Ɨi@ "ʣQՆ!Q7m׺שؚs{-kLl=u[uڵwLnOFץr1qHURVL[u:mYR/V\\|ȡTW>>hrZッ~M1T*\ʧ<Ϸ_< ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( i:ƣ nS|9"Ok:/l*Cϵ;!]meitn9ORqҐѝH:=wy{ ؜6$9 C ( (::w;sg=mw/bp:ؓ) YI!i3 4&mXxcijw*TPUנdh#m*Gl [YJ2ʘ y=!T(4{MT..c8)9 C;֧4,QF=z*v9M^M7T;><C)v?H]7#YK\\` :J(~!//~&:oO}+Wdq.后t:4 N6€ ( <j'm,kS6GtBvnZjܿV]Z:ܿ^fw@t[8ۂ 1_teaONIѫhlKt-=-M.=2=zj:^Ɣyc{fQ^mbtEƛeoq_\Y7?e{Ө:I^CeUạMKwW:ޙ[[mqe Ŵ9~O_YYÎa*,lN;t,E2RP^aڤaIts4'J}<.Xn~ٮ~mS/5/DMml)wm./{~ a'3.q0=ub1^֍:*6P_Ŏ8\;;Ik6))o3(b=]g1QөtH ߆bҴV* Ӂ*è*7jZ#x3:W}֫uh Ejb%0Ü\Ru+ÛmkZmNLһqUqP(J뮽Se*Tʥvznc[WVKIMmSBoWoD9[V>A[@sn&cu$[ho<^JEY]cCI >UNǵTqe̝-X|FW#5t4:4:) Pc%F+Er;-j{*PM{  ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( /A&@>_3*28!ϻ,w󚒎X۸KÞHOh? ZK~!oʎfLj4? bk8a7m7yKsx: -H5coMR(%[Y%E,FLtn3r8ltOÖ\DA ,Xe*F1Boc3^%}o:eZ[Z,+NqROPkB;?\Gҡ]*[/b{y44=> 3~2P-QARq/?ͿE^ȒT6WGA=߿_q׶SIU8FٛAh絲2*2qEs|[xTi8#!kiX~s{N_5sE xJmHk-ea(2z?QѢ>xLo{cԲ:Rm熭m-֙2"=F}p?AF >K⸈ /K6 )@F6F&&PG܁CtXܢ0t[p掃y#=zA/XhvIa]\0$g*usZ勸Ol~THq7> 7PEeio%͠Y&>@wɡ%r2:܁y_^ c-3$#cjJ= WA[_gv?L2Q k:u]j͑\]Ȣwd^  ^m%,,mBZj64+;d{ 2Y/fEkSy Hx}76[gx2Z/%4ţVv2 όx(k4 \gYF&He0/n[_Z\՜%mt-o)rc7)<Ӝn dq隮:ǘf܊G=G~u:ht9e5 +:5=31|\Z'I,sf2A4ٛmb=FVsYPc=? hxOk#aP<8Ǡ-K;UfhD 9b ܓ;+hCojZgȼ7ijR&mnwP54S %n4Fu sfs":!A@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@:s_Y'OG4}߈<Ln-/6wD٘7+#ml8R ֗Q5-jh 2O1?:l">>t=+L,oKXmVFA;QtfwWF hS]_WHU= 9M;4مktFp%lAJWv4~$s* Ns[Rvm)gK6"r ^34[PL63Dk%PgBxQprkX-sGZh[ ޝ#qoj{VuXpI-Rk/[\y1-uKA${X@?}g]fąwֆđrOZx!tEnd]Mˌ$,:zQ}ڕyZSdH"%PA'_78zu>5Jv[+hDhvIC/WHEr3 cH . jXu 闖Ќ:v?)eO_~ ýp CZK'_IJtTk;R;n;5O^=n2:^sQjS_gԠ-f=!#rx}i& 4)=S:m0'rx@_xT3L+ !4 qq҆"OR*-gNn/ëG#09SOGk6!X5)<{b7) p?*.;aL|y K1c+w'MoM7ylї.=G),#45䶵pN}Nx7uO .Epu6H+8C:Z]#I1%b杯xRѤsus0teQ{t j/|IkyjwD8e>: 53FԍӰėNF3SbhZh&u̮]}p[.-:=Zg{>@P@Px;@p lm2GHm_?<gTvKvCA!@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@^Ec ypX M3&e$ zM ndcѱ$RP@/Mn9K38w?R3ӵ;̶I`(6|A+.f]'q׏zvcR ( ( ( ( ( ( ( ( ( ( ( ( ( ( (Xwj۠e #ϯFxFU&uϮ~GuXԔ{2QP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@PswzZ)lOe j_3a_Tdd3E0N5IƯD3Xw)Z uBI+d# !ߧ|;fn<یj'vr<N.%Lz1i=ƞO hz6~:@Yn1Ӳm#-/=fals?Z-xf-2T|-(G)h wVmQT2ev4X5n|!?"SϏ!P/ɑvԜNWv! >ܶ3([ă,eM'Ixii!wHA,;-|Ay{䓢neSIx7a`GinAӓ3k\[ivFgR#h`F€ ( ( ( ( ( ( ( ( ( ( ( ( ( (< 8~AZj6§$6/m}3ݿz߻1kGie ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (^֩ [~Y=r%qe )!^;B|D?K[e3LG;w9 鍬kV@H7(@i!񗌭m쿱41qb09fd,|Km_%[yS"P[@`v2/{Gډ;3Ԯm u;"}ǁ^[ ZK'%}ڰ_2A\_o`[7O5gxJ?Z^KGQ:KKOM2E%cm?EЇ/?)`[`\tB@_ 9qmͯd"MĞZ-oOm{+n&4P@P@P@P@P@P@P@P@P@P@P@P@P@P@zǃ+PV/TĆ#ϯFx^AO?z'5f@9OEUI;$33.snvNZmI'dT%݀"zRWfXM/엩6-sKkKu8gWW N?cR6_a/B.RЯwUͦIL*U$cj:Mڴ *2 QW:q]: oȯmekr>.WeIyv%MCWo<" 9Gwa,ۋ#Fb-XƦX Dgrm~{[^y/X\bАq+T5v2FteQY4۽.`ʙHp$8<}5U΍GN{(Εծ.[kuɓp;px#ZJJ.jag[{[&ږxCQ֝l=J6W^ It=J;KchqwІfStkG{_{:ŷ{PvIsu:.">ߨRH[yOc'KMе=NϰiD9VF@sӿJX:R#tݾi_뱍,5ZrVt:}7NҼ' ;žlA" Sg n/T*QѨQTx6XYn>WS V5RJ ƅISuRW_rsP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@u~X{崅H` 8\MXNKjW<ϻn~?( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( V^ B5KG_g:棸`LF q?ƟP0 _?}G r_KIe,?a*qs%ݟ'rT*rmz6LUl4KO$diZ<;{wp~GO ӌmG%Ezthu)J i-of3#nq&Ԕ7u,4G~%{}r]$o$o SJm<KkB_#ms+2^sܝ.U*[;"ͩ؃]bjN9mk|2TӞOOkEˇ}D"lJ$/w1{Km`'meߥ;w35gC>:Fp&FBqf&JJ쯭O;2' <ֽw_?oiu/` QT^-_tm3 *RۙuAMss<Cp+ W5K=K|9S{7o$G;2,vs{JYK=GqWq]Q}ުg]Km⧁9Wp<^'(Rާ"tqy-?=2E3E I,|?yeIF{=R#}z6bR0GB͌jyhcxlD:Z?#jKKsXLb@Ќ?Pv:P28Ǥ9ߓ3xt^Uy|BTGʕ%RnrݻyMm[h6ϯ"LnHvv<׷BaiC*YF:jRVK]03\g ^Vwlv"RQ/ѩO?V bN+f^"u0'5d8xSj>kHMp*t+{h41VNom-ݲЖ7ƥj\3c+p%H=ڔ%'{2.kvm|]w=ֶZn+-[R?d^+_IEEjgb}t}}O;cq³J0֑w3 2>+9--'[msБZa(tѫv{Zץ-YXY[o61Ԟ=1VJ-$Du!ʒV2%$BYN#:58;4rI6K|ǵ\9GҽQ{jz5V24v^]\2z3C9͆TQԎ'y^ldle'C:Z-ۿ_.-4{64zPc~_Ӛ}?Ⱥ5J3QJ,MM"0^23m9Zm9yR~ҳ -R"J8+B)/<*JE]9_&YSIΪ/|9IoqͲ$]yW^s?M=ap'=9Ipu9^xv[HdJdG[Mʖxc0Ѕ#9_Jz[RI6zpV3.mRy>X/Z :9VuA.Yxr؃JY37ў@|ftZMe]#x6TҴ'ԭSLӰ.}?NS.6rR2(3zC" ( ( ( ( ( ( ( ( ( (Xwj۠e Z#]pWw?to\h$( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (ޙCr-rm—ךkϦݰekBUI94uO6qL1[D1G8䌷Ry&S0&cmݙ|q@}SHl5[&*K]zq#{DuoSۼPda1Iجm9{&15}JZDQ6H|7 2!ٍlj!tyIlb9 $t0hZSYg:2\Om]msݷMACSNyh5e=puGi˜+ds@X]Rwm%['$=}gbR?cet+mG?ynI9HY 7&i 8⁚v͢.uC!{mОC`zV]_'ѯC*#/!nwi=ΟGvke7 UNB89ͽީƒ9PzP mtQ֫I 6v)7 O5E!y4Irǐ. .+hbOq.'ڸ_@OOjz\ s QqHg?4{}i猿WOK'.o*+e.o*+eoj+eoj+};4{/_xciGRe;4{ /_x}} Ƨ>KcyGRe;4{/_xciGReoj+};4{/_xciGRe;4{/_x}} Ƨ>KcyGReo5?_̾~u>߳OTW)2w_74{ /_zϴTW)2w_7h5?_̾O~¯_XA+WReO~¯>Kބ6w#i{ z_̾>?4{j̾4_5?2GmOfx|=Op{j̾4_j+Se٧2cS_ڟ/>?4{}i猿WO?4{}i猿WO?4{*Se٧eS_ڟ/>q<% ?cS_ڟ/>q<% Ƨ=?_x}xK|=Op{j̾4_5?2GmOfx|=Op{j̾4_j+Se٧2cS_ڟ/>?4{}i猿WO?4{}i猿WO?4{}i猿WO?4{}i猿WO?4{}i猿W GmOemOfx|^Ƨ=?_x}/h5?2GmOfx|=Op{j̾4_j+Se٧2cS_ڟ/>?4{}i猿WO?4{}i猿WO?4{}i猿WOG*q Acoa\Ʋn9aͳfOBi&UyQ>cZ&Ω7m >UQ=@gSas[zM1s 6~)Զm~ u1b2RL֩=51 wޢBNyVߠ|; ~Ú`1ziP]ޠ9v.\9 Za.':I2ғ1[i $9&ֿbZnOZU:ͥ_֗k`!WIɞW3PC ( ( ( ( (FMT+U$&HBzNݐZZH ( ( ( ( ( ( ( (WfX-]$̮e)!\EmD nl,0YH ( ( 1VMhÞj'}pc^5i]j4t+E}5zb!zW[1P@P@,B8k)2lPfkP2><6]3zukCdB 4h8_bf uzϷ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (Xwj۠fH-__8|l+e7y?R  ??Wn zuPP  ( (M4ihb dvOZfU$ОhlðI>\EN b~ Χb6iy|ZN ԩmg9z_L9v#FH-WhtFFD~U+b0xQs(}p!{J|)( ( (  [AZ FD zțihhkdloiVdRW-3$~4҉3[<¾t͎y'MD@/K<4y'MD@/K<4y'MD@/K<4y'MD@/K<4y'MD@/K<4y'MD@/K<4y'MD@/K<4y'MD@/K<4y'MD@/K<4y'MD@/K<4y'MD@/K<4y'MD@/K<4y'MD@/K<4y'MD@/K<4y'MD@/K<4y'MD@/K<4y'MD@/J #P@zǃ+PV4|' _k*< ?'lt~Ŏ6< ( (b%FRd.q,nl}0'ti8Y9:o?^QacqAGbM>5ܤ%cXUި{bsu\T8AoBؒkVpʥDEcy6=~%Ӗ2Rr[ҧ՞`'gE7;1݆juj+{`8E{Jصok`Fdt6VbIm4݄wnjnj<"m-7ΗpʵkXo?-ǓW~P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ 3U@/ ȿkЍvRWg^ѿs-OԆB44Oق#8^zP@P@Ҙ"!7b Us 68emmCޥcZR5NZ3ktB``n= ( {*5{y4|; [9vy%ٛ Z"u*-ql4 ?:z݄O q8nk=m#ZhE? ;PҧbV,>yqѡU] ^Nұ kPkh`ЪϰgzΚ{IA=V}moqDʭKl^Kt?Vr[4~BXmmcWt-߳[``4-COւ8~~ N}>:NɻV~+KqLr7RhjdW{KA!@WVWV,Ga4!׭ؑt4В%b+_T`j)HʃlhٚjN(P@ ch{}aV8^/ ͫIXmaLi]>ih\>njQҔnL9ҩ3IS8P@P@P j"p1Ubl*@8BGJ,J@P@P@P@P@P@P@NXSB{|-ƶ?H0H @6FYhI &(p .MbbRH"y'Ҕ6BUe> _hYخ9c ~rۼ,@A]TFjx9f,pUC,'"E֚D9UbҘ4-M+pjs},{WV՟iB9j ]]ËY⽤>b[)J( ( b$ `U6

    ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (=c?fcn> B5KG%_yFu΍2 ??Wf  zuHP@P@+H4˧i$Η\ki-&#gf{RTcGUvDP@i0.QC,njw4kIhk;O'ޡ"fO;/P^W+Uo "-۟=3WvoORRFTpF^gLE_үC/i.‹h!{Iv[=MK{I 4TXUZ"zǘ%jkQ(XYrok>x(JN'صoef'HU7uQs?Q$hM8tQk[p~JGB>}Cgzγi Ooa֦IcAt?h?h90xiO=5!,E_(Kmc>\Yf?:e{I"N>˜ 'h^}ldlI.D֨ _ /ZM5j5%&9 ug}EQ%u-vP=h:D@G>Yip!(qAji(P@P@(h@H V+'h`"&O&%&DGVb @P@P@P@P@P@'~U!tFVq!5%8LLqڀJÂjmqFbǭ; a寭f5X\_-(s0ؾZ3#p⓱IAE*cor$e^<ѱeuT*]A~ly?f.G&%|vE4N+w"@Qb.- ☬L4\BjXxIJoa_gV95Os.,w]^ִ%fcY^'bo-?:!V6< g͢o-u^${0jI\e( (i+^<<.^ 3ֲw=8 4:V vTri4X4*<)<*6 ;~?ZE{WD6Bot<"k<#€ (K-R=;CNV(W'⁞ك7,a3sDʌ rK챨6K.-'xǎ?,^!Ӟm\ه8>KV9ZP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ 3U@/ ȿkЍuSQWg^sw9m`7솂B44Oق#8^z( (@0bRNI'NkWZ( zeWm/C174> r}f?,sC̉x8iv??:$O֫)WQ0`bqѡFI?yX%v~ Erֵ& Gh~}> d+Jh=*QU )( (QzPTb-G`H̎ՀQ nUT9ӔE4ҭacHaQh!cj zsN` ,@0hBo##t R:=R+]KjfFGPdUΗW( ( ( ( (M N5 ҡnBzFP@>1M'axT TO3(fP6/9_ZP:sC);APݍRv.W</[H[NNk#!BJ63F7LԚU){V@xlhVX$5X,sR*\PyOyx;͋kx\ַS:[K=.?ZX].~?ZNHeG2֫(ٶAObj7"M*`xⱮz}I:ѹ2 5UџiM]iE5ҤϱSNMUzyl-GֻJ6󥉨ntdi=hpKqIXlg9q+ `& (@qRJk+[!xP5Ϋ#mRy45J:m(T("z!L}~?Zc??>[O$?@ (KÚ-#K̽Eܞ }>g-'>O"Vep=-%c0 Z֕avkݔH\E|!|^HZM.fcS<ޭ3&y ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (< 8~AZj6?_ 9j|LGA#ְFr Ŏ6jlKhM$]4_~]O֐{Yvmh=KXK~r]Yv/Gܐ}3ISE]7D~4+TR$${mx֛[ 4_ѡ^]6v= xN~],@$ ZKpVyuHUAYEGQ E9hm李*@(zSXR RFoR]P Cd{?2vvim"=iP@P@9 í)lvUUo?ٌr2p(4E%V vbR(hq g]%uե:4y&jϷwFKsǨ שm-^Dv$t溝&R9Of$ҳZӇlc޻{-898XmluPƢՔW\M`ug.&3V EOXg.Ns"ifE,=XRRu"*kwo;RR"]p-m?[deǸd>^]8N8ٜE^K1 `KʩWbA׭ld$nX%RFڧMI7F]Γq8&z!鶊[sRGMF?Zxi)rP_Ɖu^U }'aLXjVy^ki 3;QAf?5%Ih3^x2Kvw Gy{–^)/klFumgET$*Ð:c=(Ӿ 4=kUek넑feP$d݁4~ֺ$Z"[>[,)euQ,\o!]]);Tu'0qgum:Csm42RD*H=4u%lh5Ƣeq2Ut;JK-VFcs$,s9f+PCaw%R(1לb"Mֳ̻f8 Ǡ㿵LFmjuQ6=Hh ZRs F0m c֐ ͰDɻLZw++-AH:+?^X0]V8<8< F )87? [mbR-s@0*Xڐ @P@P@P@P@P@P@P@P@P@P@P@P@Px;@p lm3OC)OkŽZ<Fu5(CDp1]/?C5m$ P@[a-* ( L0<)ǚIPxu:xzYHc>\QOVd=X<s8h34}}Fu[Céb9 ;=j2WNIpҼnxw _nK#CZSq:XnE{%$GGdSن7+?" X97Vzg^iǬ$eز4^>Te6M2F[g}-g8Z7Utv03.?,'^Kut{R7?q[gW*"F]cTqխ);jGz,j92T PyM xY7YZ'szZkCQ1@ @Cb.ʪ-T7]eMp+;Ќ·cVLab,sHԔĠ ( L@R (.7 &KT@f"SbĤ@S%cbHԃvh\Ss?E<s.ޠ"9$ aTrMݟUR6-*8YSHs][.CO>S5s9?]G%ԑX3U? Nj`檔<,E'QXʙKn֕&<6ӫs,:we)$ɺzWr`<ꤟJUQR=_6xM3֪9ܥmw.TR{h,o^F֎tLQ}Y_G}Ss/kU9WM2E2EYG5Tڱ漊[KìV䞕 xsn*̌k6[LIK[z'M8Vmֳz:vk8PO֒0Ud4P|˕e;'jS{Do`8ʧ?:=8 * (غ(iMqo;8?1iHNx O@.kki!8A&|z1y8"ݍׅ͌+9XwS!ʽuxS VXYPmq* 3qxEtͤw\y22Iqy= q+DmT^i#5is{4v־ SV?#xIEiƤƽhJyHEo֫^,%m?FGlrNܥvfCFmإR~ӷ$gXa9 й.u^ r=͵)%m^<;0i-, A=k6"ctl.j;1Ԕp̗km=WWY_`eZZ[.hVI!{AS\õns (a];\ZHm)X_9PƝ]U]OKK+đHv5(ipDM'IfU9Y<3P݈HL:dol|ɳψ'=G4>; fwaWOZVӵ+[ Oq(EqFЁ$>CЩ'@\LKskq߰, c${W #>MRKklu723N: {뛋;kIdom]mryMgP}Btw $ 06-SU/nûyD3zdhXk0ic]R=dWԿT[[92 1 c(XvjZIHw zjipie,h ( ( ( ( ( ( ( ( ( ( ( ( (=c?fcn~~𣖧ϟ??αFݐHPe]4s5:0gا.Ut*(Ez.ĥkУ]N' uxpHYOj{T;fa`R2qLL!EQzMKQ|_hk6 GԷ!xVʽ"A_Rͳ)W1ނ#ak,1Ҵ&.A^қf8*S_ҏεR#ȳi'޸KXeҡH}7;$d-P֏ΚgBWzΆih,ј6?i ku4p=/tv4+/3@KRtƫGUXj e`!\,?hY>|HKCbI[q!}3N!ZKm5 !ױr&L֪2)4xNI.Oe wFfZ(SsN%&ri +S.7$4\;;*.=;>C K(JP@Z2عPaq5Db>R’Uh7<2~y4ljFU|?ֳ~A[~\}y4H7ZL;TP@JO6$OUPc8]v*/g.Q iT`)\_`Ԭ>`۞L/5sC u,A֓vW=/>ӵ_^kJŻWW(J*U!815JWgJȎ9' )= U38'AV5&@=‚O  iʝu#z1JV=%7EĪG[7ʓh={JL'ZNvF&cMWaV#5֬8TciBpXeR[.Bm`(Zkri6tùF6y*tӗBݞ$ җF&5Gb T:F.,[4c: u<#N:D,0qO;EmGlFK5TyK[LU*˦˛U{B?/\oʗ;+:@t@RJ(N t^ zFxyWE3e+Ss2 ɧ)|ѿdk- >׃ߡBڱ$TG5vWobkfZ J_ηp^:a6{l4Y<a `u\F'yMn-O*6qG."$b &47[Ŋ+NLSDh_bO >/~t߇aA 2ϡg%kmҟ>Ç}җqi.㨬nSj٩t$z8Vh⭳%/KS#cW❰9`>Ƨa$>u ĂNg=^#¸_>+\JQg稤>K s=BC?@^CiMiO~oGyZV}N<֕5п G!۠> `4r7i*3ҟ(֋y Oiȱm mi,MPjy 3G1/TrRʕvwhK\c֝Ρ# (pkH[#ؓҳ)!v&"$FOIbR (Svw0 ijhl\( mʺlmDiػxs9|EL63Aɉο>֏չP@ :˒ǪԽuOZxԳhEH (N*Mƚ4%!A17yUA`sO_]<nѷ0lhT9eE\5/S-^O897sԣkzZLTZ*+G?u'+8]Z/HZ#7QL {PdfZLβ=Љw.0j%O ?5+TMqDcb1U~$с7#?Jq? u_+NǏ:|r_C򬜌 "G4!MGYs汪:9^ Z=jY `ЏƳo,(LCŔz_r$WV+k*d{X ՛zw=; (րC:P_+=(#ö<[RCQpxQm֋ aۼ5gn dɻ"Dk:h}>i*ɦFeQܡ&XJx)S UZJb ) Z!S Ǡ&;|gc~Tau&#KEF+)l[Rsbh{Xv-S j I;o+MFK&<9sNn篇FQGֱnZЕ%aGqF%sLEʼRj]I=: ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (Xwj۠f^F)'5OcFSw{LPsE#yq~~O3%U2usBoo,; 4X,{xT.O(o?oΓPa OE7S ަP%7G(c |tr,{ :,; ?;oS !77Jd(v!h 'pOߝa|Ը =A$kS=iX)P@TMXcUhR5!bp)fRs4lH ( meP}h" DPNMAւ +4 1xt=K4sS~@hGIie|ڏթP@!K_#fԙv#PP@(qL >Z&!`sғE4*J:Є`8|UNO,/wUym@s! 0怺"jJOCƍ\3zaW|0oɼ[4 Oי̣Ij{2Þgtq+Y]wl17)."_?=relk2 lpԝDK/.4]FDjpVheU(?#l]׹I4%,)#jq/`"tlw$=6. ,pkʀ &BKv)jhKĨ1Ht-(Ŷ0B+7ɩFU${Lŭ/bqYI>2Vm"9l/l:a~5pv@I(C49]|f tzuG9Q\݋\S5nZ"ĩ#4bg֝ٗX߳ԹE6hEgUI%54PZ\Tc:۫B:bcg"Цؔai ıh֝YqҤT =q[ZD+mD^oZY&K 01RX*vS_Ff1ܢVh~t@t)-tCv =}30 ( (Nk弓ЗHpLI!߈o͵DCE4ljn^\…", t ,+]/ŬIIezph̺@P@]2Xԡ gL/{YJ!O( @KmqY۽N)^xL[+AV9-=9N¹|L,>`_|Ӱ) ( ո -y|i<\cwO<ӃL.eR rkڋ[#C$ӰȍG|S@݇h׵Ym4Ąy sE:#m36wJvo J]LEkc "Kc=$: :O-]Uq9r-3okZT'?20=\-ck}'QHbzzqx} V}/Q]B[cց)P@P@ 3U@_?|'=OR7RTd&ueaEdi-VB֔:p~WMc5SQkfƱ" mHc6lԮrTHg=_qރZoSSRX5w:Qs$!cu;\i%u]9fjNfA"AIlj硆_F`LjjZjvzq c1y\۹yd3EM\hxOĭtO)_=(#Z*Fz|FV⼇J(N;GU,1Dw[=KFGIVWA͜I5I E1w(!fO(LQp ~a?1?dYĤ@\6.ipm?4   Ѡ\MѠ\]CãWdu]Vp E6Ai.*`]yo*NBEy r1E *LJ )P2O0zS'r3|vByJ@P@-EOSs]dgb7|8B ^!e^s'֡ntRQ^(@_ZOc|fsGR*f؎A@MfOr)gQ"&PM b85V#ޥas! m٨?z(s e u>PMC- Q-4"}#f[<\Zk6XNj 9PfނzbҦ;"qt.d]_nۓR8œR'c&RJCxkC게-8Myu%v}iF&[ZK? D5h `h󺼌f7c#4}; 1Z JƁr3_)u=e?!5NnD_ +CӲO$9Pgs9Rhfmv&-Ig|͢w6 9\Z)gOls'+>yڏ:hn]u n]c-=7 ?1'RǠ ?$Zɚ:?B0+'^m R՝%Y#FGlfSV'f9?HW6КU]xy\%Ec6098?x(@9gY*hmRy>HR8[ۉ渹vyby$Xҵ&kkvhL4`#nqhLo-tk3M+ kQ4ar3ߟҗ@{ -3~a~c_rHOvxNYE\\D0'Z L|)c}Q5Fe=HEr6ZgA,K2GLsE gxrC|UZ%v /* u<@;m'E~줸hL(2-z [4OXk, rg_j,1YZ:[AphYD r9BJ֣iKp c8掂{Gk-t9&pH?G@ٛ^Vo/N2ܾj>4X/>,-5=MLb!aRi2s~#kO.`x~f=_֓[8i-dcZv 7Ɵ} Ŀ{ ڔx[Ovq$w BPҝv(ܗA/Ee\O.]=DQ,sy|Mᇻw:E$د"9?^(hӛÓiY^B]]4e=?/Ez]~$&ggn`GwIUnÊ:Ɗ]7_-V&GY|CdT𽅄m .89J! S {qV4WĀ?Zmct|H"̨]'84nd`Qt_WomI ]0'd8!eYh_g]44a*NRFF} ΖoMKmgxZS >utї۸Bm?pYؙU ̰~bއ^5LI 3y=q;cMyQ" qr (O}''}:hk@qrEWR:?4h#6sH%@A)x[Ѵױ+)^  }ܞ{(`6>*j}@g/=1$q^+qN #Oc_-Q-8J˸Ds}q-|A+]7:6<>X: u5CVi0 \ q7>)?Q4Z50ne@9g j 3‡A=ˢCmԟڅ; h)5m,%ѯ03Ԝ7 PijD:pE(4P7ڴdVs[ tOS-人Y\"RNIG\oXXIZB"Hb8?Y=2A,5""Ӧ\U g=G} 9Iد-|D7/<8č 4i>dɻ:3Jm ^M[W}4\{ T (Hm֡uh:Mak]dN ký.#Kq4̟gh3{^Ǐ}-Hl|#Bew]%dlr(O7զY+Rm!zGHlx>%doЍ>{Wkՙq4$u*?h'5%7k/~%mPq<$©J󚒎hWӜAT#0 (=c?fcnz #C?:+  :R^~\~VksxK*ƣִiI?EmVgbÓU5kJTѝH8G#V oJ?}h4Z݌f܉]?j|4kMmP5IĠ@:4] zsU'i 1khɣ&g$o'vSX1{6teuc8U*ZLjVO,?3\aKvW#~8J*i\2MnBHA;[MYoS6ֺkhlmrׁՌ*>? *ϛ1K[[\{])S>4˂kFWEFkOZNUZLl2/ Rv2/45:W1TJÊcDY楔K&$H2/hܳZa+A>gIuqRʵ I٤$5ԫsp8eQ1\ǧkHĭ*U 2uGA}; 3Cxzr\- '5Q"3qZ}KdMM):lo /+(i߹OTOET`ii*'2*o ⨳0(d2Zxl1@Pɠ4-8Nlu:DϚ (gz#|I#7)jQ}[:$s۬D{ @OBu1tBMƂʑo$>ŋ-m4[! }ȣIi6gYj[mdF>ޔh-nQ4M;JҼ6Kmc0JG=liw,k5jseЛv8#hTA[E5U*ncIc%(ʿ uqIn+/j],N$MO罬+6^9=qX|h,ڼ?r ge17|dcJLj>B"60r0}PuVdž)_b\WQctE:Sf^jѵ{fb/x>sGArޱ` wE[scG@5iSxjs}zR@ַ35X4M68eYVPs(u HuJ}*Y6*;OF-Qj:^K{Y.&b;|\1zdTZפk7&#ȶ$#$r=5/jZcTeǖ&E p7s۷N8k'XmsY3k$k6o:«i^FsĶS$CRwŗLv$ޑcQӭueˊ7!}{zPwởw#U K!nِ4+ŚlZc- ~|gZ.1u{ L~q}tH0^=)hV:xHկRlEO`<6Ү-5|I{m"nWp9R-gU=p>Ǝ3w4d um[ UW{3W41P4^Q3N:E}T?ƞtDlF2{iM>FPUT=h9zA6p n"W[T~|DF=2y'yq^#~(4+R܁(tIN'qvzء_aiJSט58Hǟj 4"L?پF>I?]ȕ)>DU.F/ '7Jr!#3jxyGSFj_}Dgf0{9w`riTys"eI/.(VwfbܩeIIM}>[݉W3:#JKVJQli#A#=jұ B(S8M &Oks<]4dLZ3d/֩D7vG9Z-҆sei3X=TXJl`:`4$T|f{:J_jYvH@Lm Or+.xrK{ iDK+ʇ8=En+IsAHU & }kTBb:dTCLgԇFS"ݽ| J`lR, VuQgfX=C% +s@9\kr,К*#شzV$$$"ȵfPop=zW5Y$zXL{IJLۤb޼zga0ނ+^}G&'au_Yb? ^4>Dʾ>;قVA+ߵgx֦Ts̩mrkeJ$9*q8>YnWޭ1ѡc" a}*l֢.q҆Õ}*y,6ұ7#j\⍩a';>Ox͵>B+7QS#M^#%؞4JIUU=iٚ*E>JM:T_yYЪ*oW;O)g7TI<.JrkӦ1jcgi[t氨=V(ji>*ΌEDњ͑]Iyjpr:ұ1t99&3n׃Ljh:V5YNj͊: 8@K E;>< FeKD H (cšyj߷9MW3 _JmqN3@P@P@P@P@P@P@P@P@P@P@P@P@Z5 2; 7i q䕋1t}nk^'o{٠O-rd2?ͩU۹q5-Hϭv$x6r|Us*2MFs7g)sO9u&}R݁F#!ag5'*IqyJ9'.e=qOe%TJmnhbԨGHxZ5klqmRR@?5l>W:!FKSyʝ~)gq{'FB*W.VKd҃ecjUFۏs:fތj?P̾S t .bzjkuR)a}AI]vTwM+v OYj{ oʕ^}(p:T] O5[xB)3zROd$O;'R ='} ÆNG%_ԏ^RJ\=zsRcw3Ͼ'7|#ҵόաAcphBwUXd҃&K{-s<ݬG9;ͭU}}hĻX̾n\{sCYaZ!UvqodtT2hN^5>G &ަƪB( Cl Wvg&ieXnԻE}lg&8%}+)Uwfѥ9l^vlalwu87Qz42Wz#W2w1qT K= U$':SWVY[CZ#篍Ek *!Q:u^5ɫz-< WFz/*ïtֳ 3q*R_*Qe :Zj&bFV%nF4HK,[=%9 UəYvYZlzx<;s!I5UsU4\w LA@o:Rqv%?:7F_U}ΝjGxWcQ ~"XZsIlvmjlfJ$<UBr)xJZB ?ZNGF^ӛg0ǚ=3ՌϏ?%lWdV?T>Xc}k>6OmFM&tQ4A4bѨoΞ qu2LHu,YvB#xCbuѫA=Qi2ҭ&]kT{1XGk;wkRK:vn\:<&$ҭl|{5s՚Γs?\ś="4+0U\qu)ӱa޽*o?+^u|#qr+>,M3xy?JT19t4VpĎҚGSRZ5cځ";0G''b3!sTӜ_h_k_P;qwf0\Pաhdҝ7-yJ EW$:GbIxhrNw;@*Q+Ք9'&tpHGFXb:סrq5]i^S/-GUq{9-[6Eeb\ˌ/ҳHʽm$M85ꥂU3nvrU_C峧.ii(8A5pīXFWRRn,RSL*&y5sMu+ 8itq5n6k,kBeGUnOsbveNKxH|)Rqxi!rU Qchc^S[qIT& {vl\}*[FijꖈM\a꽤HFmC{SD,-TsKTmVnGL acg6SI9DlmϹ,>x'O?< }~TT;6?*^]DaIQ?pȀY[%3KcaV%dx,D Ngu QZ۫G&= )jH=M11׊9Χ<Ks8{#WIoz W`ˀx!7dX5"%"6X^$SEȖƫp%Lxa=H@9z_Xm\{nܵHSQF.nF[ȓ1JlE9z:"GHQSc[F6tgEԁXZÚW5mk&WVg$k#7W7"DE:]6t#4۶X[ D9S\qt髶oG *|M@D&P W㸒8SڡEI{F{Xi:-[[I$)2־j?vG>˧#MF{@ a^zuS>K_ `2H ja疨R %-<УH:.ixX&ц#_u5Kr+w؞Ւ80I*9ӎ>$Kp+fLcľ5NFDR|OWXY]N1 Is_W5d 8:qob'+2dSt/.Ât5-*n +:Md'|=fx{ۤRܞҔǖӫ*L {bQ8zlEsA ˹#?:MhW/Li8ө:MExmJ̪{Ö|SrY/gC<=)L4%-4db޺OYIGVe,Dܖ96d5G=:Rc|_1ƗcԚb{q]sNhH2L2:IMޑ.[)#jzutNT]|D5|P@_R u50z/X.eEI$zt9 |?^ݩX.Axx^xoQ'<6"/c9=zÉ `Yi ,NV~%R H!b>yUr>Mp-l8(ɐr1ӯ4 dTRwVmMh8Ǯ<8, ' `5Z-2b2,'燞]m4u }OTa eo xEP[ͼJȿ.0 bOc҄AE}kVv[f_,BRrOO`K]Yh+隤Z2FP'ӭ+e/xwOn}7og99E;oFh_T(8PI)ӾYI;Y0Ê拚{\b4۶3@FAE&62WpkK8.mcе)aHŹ2*WzeFƣ g=+OV@.-Ns!tq9]ۜ?ғag;  #t+qwjQQu!4S3JWߊ&=1W)%tX9\V4uwrC)B{R9 ],-/f#^6*7T.Uռ{WBlgօ;6«ΕN ?ԏʚd{ʯu3UJk<_Er ~Wg.nb'ʖܖ7hNNlV!e>tAhLQd^{0 d rz 5$Bӏ?+~ё?"rF6Xpq ϵ4CvԘx3+n^Qΰ%iM7AWC/ǠcZ08xOBb`mSpcV鵹wGAɋ#l0KA2z.xolcs@݉dǧ/b9xjskґNJW7Kk.WX֢+9\ "1.o;vbßozOc%БҊhzDjnX wr)9h8X+kzQ+Vɞ ܹ-ʂvʪW1M5] % <Ԑ+hWfԩ=L wܶ 6"E27ck|)Iw}soz65'E(Ҏ ҭcu!_5~ `8eQP%Ss7lKK3G3*A˗qJ54rn]IIEFJV4Pk'0bG"cpi#KU`&-#*%4OT^ 2 7ǵ(/{rgnk͓l([KSzP%QP@V(ާ&"7E0jkVf߆uP[[bP#pJV.Қ]< Z3٣Bc&79Y=i;]*ј ޼9rb)T!&Ay|mY[.tlD ǟzF&]3Ky}_F%J'}dx{3I3ckTՑX|Rzkzslm-+kp{I |EopИmwinRD.; iG@{W^D tۈGS (bNĞ7.%@[,!U>h`*u /Bú{4$ /.c3aC)cxxR!*@P@P@P@P@P@P@P@P@P@P@P@P@P@?AC5[t ֟? [?s][ {P\go֔*E)k3ẑPH'

    )m銦Jiֳ5W[RVT9n]\w;ѹ{FiIv&'+;HJc5jBjf4qC%-H4G[\#,Tq]cyևwmo3@^J>;Uwhڍa wFwGO R2><'Ve>},9!)2Vd#Q˿Z~99Ts3P5 ϑ(BXznA-D{Ԣ6A!@Mng5AW ?_3,{}nT(2(dF敋cݙ sNĭQ敆e1lrpОۢxᠶEIZi͹jRPe[5ΣΙӍsIhOe$H^ʮ& ~XKpx*UCTW; ivʬun./Ym* Gz 44t$v6MQj8^;qu/|ي_~oU{./S.5ϑP= hZm^M犖{Hviܛ2w?(Q$\ OXԍԘּ=.ٯ{s65gܻ eW)X)BȰHZ (4^j^-} ֭d);Z/u]%\iS@ygrVRSM?NG;Y,Uh[Ps }(}]>`Eȕ̜lXa] vH;ZP(fԇF7Թn~Pj$eͺLڦgWAa@Ogyse1kyq|NP"WQ6ݛcm(N b]Z+Iwb߽}#9#>ݨBf?5fۻVF cJX$Aު|lnsIFn ^\]XysSրi{uf$3%]HWx8({}gTAm^G?h ]I$S$HT$u+Y-b-9xBϸzPvZs:r#RA@wQIkk!²}J=Ii_]A VU?P 95}J?#fx@",N^x( GgR.FdHHĖf9$@6 ( ( ( ( ( ( ( ( ( ( ( ( ( (Xwj۠f^FR C?:r C~2:>}j nWsm=YB,ʸ:jE$g?5g-ĠA@ u֞ӥRF=j |RF6LXCјOaPtSQJST)KOƆzCf1CgM]7#sC,JK O"ƆcLolD*r#xs[&Ҝw#3HlTZ3 H浥-O3Ng=XD _9j0S"#q8WRF `'49< 9Uy$%s:(P#c²$zM ܾՇM0sMoul dzb9Ҩ֌5 ?*y[K P}f쩾wE%)cm8Ey5^M(h&z L44@h@h!3j9^%v+^?=⊢E@p a2i\CZ.r*X>+Rs΢STj{PiX†gXTw*gV{=iWgJWTXG.jCv,I rϡ{s]1>Zm.$XJ+G+ÈF@GM;&} 3i$ZL-+x_#pox/=e*8cePw|bjJSibrMa?yxl'ږʼngj= )M~9#a4"u#iUōFKZ䜮-ںV2 ?t7)r[<'[sW{\t:QI.Zt,GguuPHۃ dD F2)Xb.ֲ.4'dWVԍ̤DJnjb=6k\M$¥SzcZM5 fUʰ>\|0}(++ ҋxz#{GLuj(+ uY¿h6-qCkrn2PvuwzE 5qK;)H~pSi[P:dv2S(GVXƯ( Qcs&s(5q9 0YNЗ"CVP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Px;@p lm3W?/Z3Zc9n|uoR+ =WS#OJAmaQK 15`i0>j,zU_a7ޥ= 1M@@mK!aQN/RG9sZEswsM3ֲI.7I8LefjbG$ޥ;'߃6*jl} ٫Nº;! F%rg(qv]i#y1zԡ]xP H℧b5O=cF=7@d`6|jfuL~s$}I0G:"TteϷ\2tko, .dZF9]QyW%s-pƬ0kɩs,kJd^Vj=%J,ٱlJ,ٰ٢Yz?GaD?(ʏff\p͇`+T6L-]ߴë3sTjb=z)5v>9?JLM4i(`G0PTH4R9eY. 55%=eKeaaXs,}M*ukCŃOc%ujR65Z$?~v, rϠ8'VfZthgku꫙& 8 W=`TqCl b?ޯ>/ݓ"2wZմ22QWz Jgn'$ T` My Uo'i:E֚65h2*J<*fͼq șkQ88K {F 6~݌tS_C#wa|\>_GpkGbqG̈/zG+(vc_AKH+dEpeqZN%iv8wQM0cJYB;[lh*FMd4(6SNǩN-"h28QԜ xSrfW  jUlQVܾm_(Vذpӧ[cTp98#ϥm3pьNVrV`m)‡<};#еֳȝCv8oC!FjТ$aFھN~k9SjI%v:)U<;3 U1UIZHv{[{LW$с¸ȯG^Q)ʛ-CyE1 9;F 澷-ƹZ ̨B]JgHN {%88IPяgNM+>;dI!ˎ֥ΊܜgCR:L0-a*\fT*azn bfa7Csǀ]퍪)^+K[.+Oolru#=n]3W ݡ?J撟Cm3jci{e#7Ě~vpeb$(7]GjtfFkYIuSԯrG%y LOSF!;%c!5Z`_ 1%1ŭW$s^mLCc҅<2Cy*y&o؇zڞkre d( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (=c?fcnz;sC?:'^Ҧ{/5Ҷ"ZPuQ)6D:LMSF5v3PKH犟BLMjYA Mi\N}S!]=Kpr*=*%$Z7zq91 T%$YHLbV##@B,l&oˡFA4qMj\~΅ysipR9 tS罎\*qEvއ-2`\H+ե+, O.e4vhG*10އFwI+ 0>IGS|QHnia g^63ٞ҅*мRJdHX+ҍhgW-r9$LHGR">5Wb,b 3fY—j#|@>]wGP pw')s#9S}*)Swq^>%`o#s6N b]qt t#5مjgy[>1^,ISim`}*Dϸ$ebfhqE5$.IXʒQzDO<$%bs&y!$:`W(]UfcW3UdF5vµbr4$tUx890xumYEkǠF6i_/μT>:/#ZCȦv%nq[+\ D/ihl;ѩwD \c=(Ԏd-G<@ jfE2; IйRZnկҕQ&6tċcxjf(?uq ւѢdsQ(Xs) 7?{=W|f{PVeJFIini$?{޲݀D̷=Lv\'I?Z莧C-$r;jxߞQvc<]xfj蓀Us|a5c鲉)Cٟ@kGsAs&90H+l~Pϧ' ,PjI#|/_1qUL0_xug%,q{֔{F$EuOiy1WQiof}⒥gU#P:ֱSƪU9ž o97  t[JKJ1zݪ=ί _Nfc R}N,_Ҝo2LEi+ٗA 5${ɤ#>A"ԫ' MlgS<ʳc ƜM]D|%l%ѯ#,y*Fq_;&ϦBY:_zʨfЩ5)M}Y>(&_l7cf򯸳aijAY8n552<"] (f*M'KGú}DJ€Xk·Y,G:F|x'x6xrͣ6t>'bY)2բ8/:{67#(OZ?A}5[:PIX䑎d({>-D"iP@P@P@&-({culp4L2)NP@P@P@P@P@P@P@P@P@P@P@P@P@Px;@p lm3S?/Z#Zbjs][Ԣ^z>S=' S}zƅS2n(؂oCҥ "X٣`W jtr]3:Ͻ_1UhgYxui4RI gsޗ(:cb2sT:rrzlcҧt>-.yA+U$sʓ5-$fIGzbZ9IPJZ :ҰNi˶=(gv܄|YN>Sm,l9wkrIYHc|tdpjӌiF[Ƴ>ʻGO1'H[?S5ݞVهZh u5o3:wH⸲[x.Sֽ*8S!ndx~ηr7:vӺ>hFn{QRRWP; (,EL393&b$"h*|Qݭ42A,2[zSL| t1p8.=EgYcsNZc(ׅGUtt<%ݑުڞuo{ V%5.W=J46FQ{jǡt(٠ܻX3EL,IXU$( ,=+ 3@pZAڀlBXw8m{6FkRrfΏ< I[SìH碹KMbg!s*Jg*N6Z$]TΆ'vkhԨ5VR!}+9GK:2S]tsϟ6*72BW&{0ͅK-m5f5='c8҂|KEut~H)ci~YjstT4pWˋȭyjgR1B`ՕoS ֹ%Zgefh]VnM" OLOuYނ̟ɫĢG?jW3t#ZchP g1OMNi]WָC0Ie}mr__=OߩS^-ٱc!v;Na1n҃([xɛ)/>ZiWer8ְkDpnHQm-o3DyO5W:t$ qNe2㋓ӊɣԥR4[L U %65Ec@*!6͍cϣG71IR- 78n=Y˱݇ɫٺ[J [tvu<5}i I(PZFg |-R[h%Yޕx/M8!Vܫ;aHlpU&1pzdc@`u+yUH-J *8GJ&? [jڔיw\ w júM-5TI cN=:`hћ}f}Hi@-)l*:ps@]ҴMܺFHdJvlxSI?3%ZX(l\u9[i/o fY"N(hs\, 6,FAixhiZ.Z䚄FZlU[rqjRŧ-屸sdmw ʒ}=_A-i7ZP8 (BvcI(.z`E%9R @@\o hO+ |S> gk dc{i=ޓMzntvL*+ϩ4aXc,.H?ćI'(\#m]J@$,{ 4&m[_Xb*[R?:mvn{HRE؈Xz"bxO45T!p@94+!P@P@P@P@P@P@P@P@P@P@?AC5[t z;<PΥ+ qJ[x5yB.k3JQm:4x@i+S[7V&ZAsqFBZs"z)%Z[nd`Z91/g; Fm[]K63ķ@iRg6$(ךC۠>_mo#B Hv9ssn^c%NoSd0!jk2lqQ՚M!60+4NbӠise07+ctʞhb`e-I I nKگyq|uf~1X&m|rk ӊw,hZжq׊ V)Z?^BJ<3mOjb1$+r=Ҭ5hE% ~98Su7EtY'P@3{SVw.åϐxE &hGg(PhuG"T}Y8)Y\O5˖qW*Is"yQɭ="ㄩ-.DmT}* sB2ꡰ>P3OL4[sK,i;`n*"OKqTb "*ˣB@ZjHT@=̪ WOQKmqϵ5M="zVfy8;7r'Vث1I9$ѫ(ISG+(eM3̨;qACNrhzܠBhwBTHW#cO͊mBVgA]Gkr?AY{tj$ڜ5rr*ζҩ*4NfJ:Sh) is\Hؔ|EyG|Pcfcᕢ2 :bR>ITxY[HL\1N\U9Yw=f1#YjcqҨzF%t%d|IsL4ഊ1fJ(8ۊv<Цj* 5<Ԟ-,(Gt0ձ@nx=صc62Eq3DD/9P9M'm>%sdR##;zZZ8d u#@x{JԮb(-vn$u-Htwf̛Lsˮp2=)tnCci<4VN5Bd@<0:r(;UFv|H59_ިt-nϸ+ ( P_ُߔ-:!laB;/[A4.u=%I ⣥0N8b=q@Xyn]ȗXf5.&ume6uGP$qԆPƹj˅RZL`pg3_]MkQS,QD^0G?޶Z"h%Y=(wR_j]ҭϽXpqJFm?eΝx,S }X>W{J-SkFe]g:{N g ΢CMn5(3X)nU-#ڮh筎֌a} RcZ25SX5dq6ά'U(O5{mCCS]IlN Y.[VXL\`̥eZEJFGשw))erkXqt!MtӑXcd]ΫSLT}ҚWq!jm4\Ѳ |&Ji:u F96(9uAJH)ntXrړF 8A-%zr4f7*zi쌹 ~aRQAsGu*3CRFOZSlmy@W;zts30H X$9c5/SE7Բ-kEP,xu͋FRGW>ӁsÒu=I.%WI]"i֍:+}Y@](3IT=KPY82N:J+}eJEG1.lو. n&yE5̗*'Z)=͏q 걦:J(eXYnUM;jOrϬ`C7+cӣ%:*3I˩z6Ԟd0X<-zS) chr2u-a6jʳ2mI:6wesֱ߃{G~\(Q^V!JgCIC-jM \fpxyXыPg=7V#{Q`lqޱ2qw9puQsC5RS2H]F\-<5x#TzRJ26qui6h}DjmR%zgܤ PRVgS;?Rh^ $> ^8ih{0A$I2_'W (Y 6r r?tQXƧ\!t^r~\7>\]j2f:f.u)¹4k nGquv_Nf42̹Rqf8ӱw15|3%ަ]-Rg 5&vh.d[i^)0YM3z5gKu+OCi'x> Tv>f_HFpTzWbίrLTm]UjH+= y_h4!^` 8,DfL=kSƫ+*f(_H0{Byʷ;3^B3?z;7%5;\k̾/`y#?voO,QfC{*di#ɫ{1 *p™QvfsRj7RBۣlZGTkJ;+c䂀 ( 64= ZU`X cJ`P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@?AC5[t /ֱؖx?տJ!WA@*eقߡ75(u~!mPC4qEZ;6C?43qi[(P/A'xWMiR744MH`I$1,Z!Da;0# d{Tq}+6kzu5oiyw|f/ [Nٞch:r˦"5VcpFљDIKcV0ǒ֩F[8SY|]Cu?~;ⱎ:8Q^Rt>?g.4G*S_oPeBJ6g%&z/LWP??ab۹H^&nWN\E.G,6:n S)1 {WnsMtEt9x#XA9r_R4[cT E 985&&RD$6 n^uV-IO).zƌ`1ҼծgWQʹjr^R-VL檻P}u,,ڽ*{:,|g'KЊz?*Ezldv:0UN" ǚֿdlny+9vAvrEVNq:?&u{4HIG{鐑mtA$֦Ƭy85gKU1Tܩsl#=Ea]R-[up^v}^]EF-|Yɞ=EAl(P@ ֩ lDhÕ^3NQMg(.+v5Yˌ"58xY}+qMƺRі, հTTTt2+ `V#P!;>.j}&Lk«{Equ<)A1|s9~&LLt?kjYMt&\🈞9&Q$&!q_OeʌT1ibI5d|+($|A|h.вwT]BHÛ5+EWM6佇U\03Z@ڼhNjJsFMM9g/t/n~> `q8r&*hZG K¿<$W<fts?1z?/{~{Y޽ϔЏ&EL(/H>gGbZ+s ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (< 8~AZj6/_#su"^z*c %(LAc֫MZ!fAxxݚI &BJ.Lw\֨-SF/= WQsjn*zrOҶ[qLtsGI M(=3IJ0摶0T_Sܧ[OiNV&x8"(!Ksd,گ׌5L:硆ͪ+}ƞ FpkeE{xz\%ʪ; b9`ɏcʧW:{M;@Y,Y%'sF5q82J(m88ZsOFtYl׽t^cX.17qZ8^S4cޑpOU%жry VTYVePٟꑠbj7N/\t٘}kߥ-Oƻ6pzWBZ!ܩ -pIjq0TT,ϣ FȎ((P@O%Hw!Qb'MIY|+.5Pr)vS܃[g!KsRC5=|ILQe[-BDc=Xu#v;cPRGO J-cmH6p S"჋fV5|rNN]Ed5mo29F_c k[_So{sE dk Zo-֢:FA޺cpä4ZzTceޗ*/! ~rQiO8j/9D$Vi-o=w6\hb7KNJ8 FO$EE}^ʚs0| &x =eY|(PviRRΜ5H-79OZ5^*J31mnk9 Yvs\u^$zMZAxUkcG2gecoo!~!kUbbpkV:U$w1. ;?{xU,gѼ"AsW4ЕLX`(4Q@h cZNkĖ"T^:`63%ec|ȁuS>g4d5ԏm2 GCEJMuxt%77EMdibPHP KO橳:aYu'Yhh3'h;93ւ}F2jynL+G ֚V9Daf\uc5֕#E*yeRhy~GoxtMJK ~k ^00dW<r[C@"ݺ2jYF)1+ʁ4$P=ob66cgΚG`([㟈te륝R$ 'JJnVn.J瑅^xV th5KmFa ׏ۿ>2o m(Ck?f#豲!>Mlyv^$AٙIEhyS P4jAI qRuP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Px;@p lm3O_/#ZGbs][D(/ 4KBSAᲝiX֔EϵN>J;cW6Z:^m!Ԏr8X n#s&mIjhO!}JgL`8ڴL(ܼDM;SHZZ_K:0:P>|W4nUjqN,>aړFԻ*x(YVcc BjaԷ= .a::#Ծ|MFb2kΞ_՝J8%U$'ŅdjU)OC^U|E\9.v;&i L8ՍH%d._1Z/ȍ 8U6NOisE%Ͻ>R K#yv=krUۙ} +׋>Zq+8⺡vRHSdF=xQ#3-8إèM F敆$ڭī#ҚA,}FWkVa,T}'>p̀^>zRH_7̀='"~!]3)8q؇*l9ɮױU q'5j h4MrbM3"Iأ#An)H*c4-`Fs#{(`ڭ+!=jYaV[B Y1RsWZEfA\UIIZ7z G4~2+=+u>'Rfp Fy)]6gz#:M+Ӯwړ#vgEBA|Y3grܗ2%9c frݶuoH8IRć_R"f/$ZUl Z)$X=zǣrx"漕;"bbK)?\VmPЮ5( Ͻi̹&]RV5||eV]Z,/Z,/ZAg=֋0eҲNuB>Ã%ʊK_z9vJinN菮ҥMRG8u+R~Ros+cv+xE:*+&a>zND_t,ӻ R!w6&T6SAZVfofKsv+L:FBi&% (}h+=@LWb !yzM Ol/>Pɠ.€@(ԚM4Q{Gm*llKry8C[QF)9=Η6В+/O"P3JK;ڵwJ)M+y3V95҇*G^< u&ḎXʥ;Ri&{okcKm[vx'VJ(MNW~ [K11ݫ +[oy !#ҽN{q4\L#ɞAL^ }Rg@#傀 r;v3.z=_4yW|@/=_4yW|@/=_4yW|@/=_4yW|@/=_4yW|@/=_4yW|@/=_4yW|@/=_4yW|@/=_4yW|@/=_4yW|@/=_4yW|@/=_4yW|@/=_4yW|@/=_4yW|@/=_4yW|@/=_4yW|@/=_4yW|@ f,ı$P@?AC5[t /խ{uoB%WA@ )ltoءq՚6qmϏZbqCg{mЧr>CAˈZQ䷨P@me H֛Ի>rБMF.yQl*ሦmZޯӇK qQ:OB+b&iqéIvs;u=QXi4.I Ėr+7N/toMJ靅(Eڄc(+C.mV! "y+5[U^xQMSWWerS j݌1;39sة^EaVqi ( (\R)j]۞@6qJNLxa)E{3MլE89ǙBsctetOjظLkjr9Ԝt;[+@`b⺔mփL;N*a'%}:XiK8۱m}hQe$ @>4> :ypcB~7`R6q% P*,ʹ#e+شe(`RZ9,)NO 8#bipӗAi1LEK 420rN,&r+cR:a泖/z"*a%`biKSƯq8SmԚR2iocB:ք6+\hjՏ4v9 Ͻk+T7!h>I dHtVV-Ll⸫L졀Y^ Cvo(x GBpͣbS¯\*p1=*OTlệ&'ªOQؘWggy%ÿU\So̡øg4o UC^*YZ˖{.L@#/|Vt9CCgʋзmʳǸUX<|'^. ?_ϿȪs.gL+Հ~7?9;VxҼQ?(_UsʯClrs]G-)7#дkbȲ|H15=0V擲=Ğj}z㘫Fjg<2zntƂoP+ Xɬ͹sQ's#D>r.2zW&-qVMGOQ|aJ$I W x9Hc&'Kw/<­[MŋMP9NJ)Sf!I 6WjY)V?5?دoWFE^ST=UiEWmWU_?ʽh Q N"^ % !:JKQIdfa͓=q(I *( CR,IOQʎH'Q٣A4(nq4 ")/Cͻ@ (QK lka=̛!B{Po<4)N"ٙAPO+=~kfk']#p!AhԖ*$ ĮKx_UM_47ڿZ*hyf!OĽV/#/my."1cVE|Uj=^کlzuC'G̡+azk<Ȫ/ɣc.Ee5jVrq~] K[>ҽ*$DlZ4S_EA]=ZLØ|ƺO#AP4iRZfQt,P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Ɲ oT3Ub?_[< P΄Kܯ@S'dv`Q.ks\BkU3*Y%tZDaERE+}(8;gY=Ť6[,SSV颌qLN%֯ʃ>vjs5401ރMls 91hk>2:|H1*"IbeWi#jyj˓}SJ؇R%ah2X}㎢047Bሥʌ')1 jI,9Z I$Ws4RI=lr; 9 j% S0hfa@#cP_lkQFW/rG4=a=)(ܭ22kSZfrǚh&(4F 1ڥڔ/H]Tp(=QjSOo#Sa-O`)ٷԁZ^a1$ԯL#f7:+c)IYV(ql v<Շ5Z)HgDhvw p LLJSORƥlnjQ:bi8aC4b|[\]X/)b(g^\pxT[3ay J<ڵRBk$$$1w5֌DAl[Cuct6:@IzI MfVWY,rZIͦtncsTVԮgXrhV`p~\syjrnaEF V90PbfQ7<G&Mg;~*q_q>*K;ϟ_"+zAj˰N˰Խ˰nQ%, 3*99n^Z:zοOɛtUϊ8[Qk>p(GZxL R:Q-prO qӚOG[dy޷*;`e32=GcOW}{ESpwJsqt'NN֍YDeIO ULJ8=sRK"E()Gsw$v6S)50rl AQZ0zN~Y{ŨPKA0<&nTV:|0?iv/-ҩiPBykI2\_zUޕus4y V+Dbi{hr>Ǜ|.߈m[Y\q[qK>}h ūY;&ZuZ_ 0Cӑn@Fy(gUz*5+{/z6y%?+-vz6Z祏 (\VZvg: oir,W~ATS^k ͟{}5ˉ ,2Os<󧻙X 1y` KOrj BGl~8"sGVRMJ_2aV ?R~i;+5N- ֑0̳Ц[[wW]VNJ~8`fѻ<'[dzZx_R*%RJV[DR8h~3 aڞ/ֻJd`Ҟ֝1EgQh{XOI|07Rt7sz7׷#|ayzw 1]gZZATqvBG} u;_ΰ?CU}9kE'_// iTRwz <<~f-`AbA*Q4 jN|P@Kko5v<jY94{@KckFܯ~ WEr7߾2"!*֋+<:A>st+B=c2P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Pq>/ lXgxL?kЍZ؇zVt"^z`TcUO(^4kZQ 5,%f3Z{Hl)Y77Ⲓm$+ciVԴъTH/e101皆U)5(䚳7(P 򻖖\u4M1's1d~ L|frKj.419 ђKP! 69r!龄eSE,s# ܺuݬleq"zjIKc-IrsM=OwF*1 @u1JJ:=\ģpɦ(U<ghdI&W9#VPb|N4<'h#N0ݰ95;2ϹFFɫڞ•)Xua~!^ ׯ~5~M|_?S9z׶|/IRs 늳3qX?'Q׊?~}o?[D±4w3>&)I\>(爵ھ tUz@k-POQЯjꗲ]\m$eFӬyVv'LQ[<[Y}^s>vԌu"dqCfѦem򼊓PЂD J惦EY VIBRփD4yt^Rl\?EMTS2uf[Q|G[HrYZ3/]+Y>Iz3Oi"LvUkd>.[y&׺y&c8b+XJLΆfz[6]aXd'b|v/9ʭij:֕y2Db5J*G'ZԵAxab7QQԖ.˫t4LSREԊ!jfr*OZ[F;a$zTȚh<B6t3TpOqxXN$RZ+J5IӋ4t]cjYadQ㱩Ww0oLRQ<v:tU9\<+ZՓB0E2ҌN{߁Le5z6}Ug&BQw='56csEh/4Š`aqO.zl5ӅOWgx/@?" >CWC3|v_=֥3A xW>+l0_G*F~3; *ďjƯݗkp8Z"72}V^.Cu悳ЭYAg3FV5^owg-y:)RČJ|)$<hϸ?9yg-@n81;ɠ>uMG/EF#>x9b֣.5"aϭM8jtS'lyMպVi^6>V:S7|Aڎl#aLN9s4{i6=H?sĵ SOgb樗މuG-P>QWG U/ft2곚RJިiޯj7`⽪8Y9G>–8j-Qjmmbg'31tquQ/ PViٗ\1^CJqrFwT|7dS}FzYE*\Ok}$F @o56I;P-Pkx\hHKdPB[MuA3PPG2z=€ ( ( (E~t4{ \s?H/Wq _۟VŅ+}ݪ/C[I' ҝ7:bt . ,|ccZJ܇/SV^$}+DK_'n>/Sc?n??ξ/CKÓGTm31C.`ơi]W¿S};gE+_//L|ݨ̟Zz?>*硭#Tp0^ niAE&zIN!@{?jtl,h?Γ*;KV{`hcWV6ҳ@;Bbvde>'[ѵ$@7ylgh>>xZ:fgqڷ)66/W:.5Hm%8,>(gJ/Quh!?衦UFa@dlyH.yl;z`@P4.$1{wX0)gR!4C-ߛ#h1P@lxLMFMs0:qLFYC8mg}qU@P@P@P@P@P@P@P@P@P@P@P@P@iKC5[(~ B5kb^js][Ј{P0=)XEyBg޲l쏐3L2qzVev#wZb9dd*=LjWVhsM|ؔ /c4\]WQbC-Qx.8UH?ZlI4. ] $zrP{PwrF+utS+K߹LAb oJ,e8WP?*d{p|G],R7!6s*]VrVXBңi E^v>?|&g^i+3E{yzOQ=QCF*s-D⏃6OZ/F僋~g~-tx{B>P'meaii7lxeq"ޥڛpTNvf#ҽj̱)FD^Lx4R[HŻܽqa}+)E3e$&dlgڪ*ɋoM LfQǸ%aҧfrjyq!q9+[nc .7:aN*ȭu%TjTܢo]BkKC+ߙ&2R5MBc>YhyNEwCc*h{}51R@9jaj.bз-I=Zte#Ǐ/ Y5q<.ۈu ӡY+a1jin? Éh7g-gKRͰ5Q.pUky#S1_m ~2y.F>V[p 8ϥeJ8 M6=G↧ VutW{7Si0<P[QUm}> #ʏ}n\̉zlYrC`MKg<~")\Ao&cU{84ܓm ?gaw@^0x?&j5#S:IXF*ݙ(DڏN! &12a)J;WFa+ԧUcªr;WDL!=lHIJJRQZ(ɳ6[hp]O Kwob|n ݓY]wԷ`tGe:v$lsVsÚjy5+XIӮ5+ M,Uׅʬ~3os{crg61YyO\xPCi*Z&0gt1g>?'a(?JA;3883g ig%z 1Q#0omjEO;Y8z1G"9=Ntr!{jI1G*)T//K!ƙd=XuJ^5dr4tQσZ4Rqz3npՂ>/6sX&}"9O?LWLW)75Ҷ>J[P@P@P@b֔.K/\3sP%5tf^eevCFrIjG,w/#P&̪Κ2ر]Q7q>@u+K4QV-*IfąRN3CM9w'isKkT`YdƏy󡇥]I;|[ԭ/&O, sZR.Vnx&/rHWy4u:2tǑEL͊{).չXXpӿ?p>c"^鯑#z>p?0>o0$L9>v#n6 m;B6a[~Cs:Wsʾ^_ʼnygTQ>~|7fMC[5}f`h҃L(R:FV̅]ww,b.tr$W6嶁its:2r3}+'$t„H8(ERhS>â Aep&6O 5Ї}qZFn؛7#8T#hg%{Io$g,>&ja Zqɨ2$RZQ>6eai5xXڥБC'S'^ZlqkKCQJl6a 2jұ5Ē1S"XgiL7(čpJWHBFV9}nmQ*@sYC*v N|3ZSA 53n] ]@ہZ=NʅOf]UJz GFR9z p SeZMhs{X`Q'd{~6!cW,sxӉ.qQcփv5i^je-ih2A-,{9쇡gV7)QV c4| /,L{xhF[~(bʴey瞕^h8R1[QtX ^|h**skecϽb^SRM.cobIm&wHGeJEf89f\A܇3Oh{5v> >mms޾7/᷏|č;uV&Ϫ(Wc+k!)L uc2l\ u ĞXYN^`M9^Q:yYaFB'>t׼fjKhOJޚhk\χM?L5 y:p>zTQ}㟀|-]q0W

    P4P?8?L;Lsv*O"c #3m6f2gӣ0m1&VF9{܃ 18k>{AC]ҏ^Mxl'[[]~i4i z])"&!.w)!һ/#ąM?.רo;Y0ËSJ뮓x׌P,;0Ī=GDD<頙Uf:|z@HdY6Bg>i/e t"x8E!ULW09Z Ep`Yp9R4%K e%اɌYI@<\D̄tsJ%9VI;s̫`b7\Dyc面W><-h2o,w漄7r~s5@:G7=JGOv4;T] UӰ[MȠ@&3$x,K<hf('QH A1Umxg:vSw w w%ޟoA0 Xڳv\l0af{N7ʹU$牞d3%|A8AUXn\a.5Dl$G-ކBvA@1^`da"@HΎPy If'įnƅ.%"rVQF9^E\ZʼF!!63Y<{ssyxlyE26uH|@F;jGAWpG8:hz\v> vZ'hݩ{}I UB֗՘4Eiw,@]z=~Z-4O)[Fަ/o9-SV'CpSVYkc"-A*rDcEՔF H M]`%i]x|ݽۑߥS* (د6h?`h@r<[;RH0ygnᑔ+ݙTs#sɃh^5fiY,!z)sĜJk!6䖬i9dW:CKKwo\xͣ'j@%>=d7([{[U~嚡\F~!̏% ဳ7b z\b{ְzs_`aO+_nc~*d_N"ji13.I[.Gxm5Aݍq*6qw94=Wd?9Rˈ<ݜ*ZQOpTjǗ2 `rF&6u to}hr^c_YVx9XQǸg6r(`-.˃V,M4^r6\˅,Ib#/˖Y5s M}{Vt@xњkZ_9,8X<ڹ5K@_?fDuBO& OA̜F.꺌+`u0LIkӦjqaJŝa>d}+|Bb~ xfј?עNfhDk`h›̸䲱K0 92KvQ/u<7$[n9*ɱZ2L.Ҍ{r=!/4oeİsX94"׊iw^icz0: Azd;\:l?_1s?PjH?6 0cN,.wþ\z*٤i7)/r JOz>IΌ kc|=~! ݶ?52ݮM;q$Fb@6j\"P0Wј){ζЯ_uc&+ÍqsBa Dy `5Z̯ jH21V ػ*&֚Vl/W$¨;69J٭_MF{6Qѳ|G2nZۘ ]7VpoU!R0NNퟎ}ݎǽ{n?n7P<+pB$rB9nU܆lғʽ[aHAćFZ/ztޓj,,TP^G6RaлlI0DL%CBjJQp5AzZ=0Dp "5_B>,aZ.9L)ڐ3E itoʝzDdj * {e5ֹ=[KH-vAf(.!rEdnxDөi}ʋOΠt{T:RD7ja%^nq8B*XE[JȵlIم %Do! v 18CS"3,}j4Ik2It@# L=e GM]q2yV#@'$Ljcʤ@epP{s}@Pi]lxB/,=E詢 "T: eVTS_A7oŽQz 3WPw@vu?R ›G 'X"E};I5y.PKl<q,fi&V68spich)2Ť.:YCX-M2r)wEǭJS&\z|0- ؑt$>d;Kqg>dv% U졘{Q“'Lzk 6δeqF/:"33O :+//fμ5BV 6eM0>ڰՑw]JC%ElZWXkCFmĔL2L~ͽN63[H8UA89i)ȏR~UHIbڐGG.FY5e% J{𐬰Qq[8L[18rqI݈,HT\Ld685qE/8%vXz-jr5ڵ+v9h_]fmR{[en 5ccW,q,L)\C1MkB.'۔ual0=L9gAxrϘ}ևw>{??{yDTZ=4Ly.(͞CBu<=PFPZAGAhkŧ\KF8NF ?crgHZƍ F= ZgZgLaL; TcDUZLl?{z =X!JYYEk@hɘ%3*$d0Ak_qY4jM+։i(oʊJ2fdʻy'j,g=ʛWw9]Zߌ5C(u81xpY 󘳉e-z\岩g7ret _?,P]ڏ&K_L?[7#Cs̃}-@31tZwyF6Ȼ*ʆ"Wp9:ϫ^*:A}g7]*ڭ`e{20sB˺1# Un̅/,8 bnX]Gİޕ8F+b>dͶۮ(vpwIx΁ ~{n9iE( kiä c( w+)퍍x [)Lx 3bgQ FOohyҬG6#%ǀ,6ЋG-SCVسswFD9].A 3,gf՛zC$̶H0g.b \7rĈBɁ#Mw< '1BNc8ow1HcY^bDVLq?12R"ȱw8F$6PP7VPyҠCjZ5;䔽M) X+̫FMh/}g [ BY <ƒz4tAlp7%+SEB0]V]徊_}Z+xN`VvVcaꗪ W+dZ1~QU8C3.3 iR-c%^Y:+GYnYu>gK9r Rv}gR{ "׹ukxl'>I7ܜoی@le,\f,oY (o aV#C*>Xey@CC~/9)P# 74o/].._ilP?AŀYhKC)KSܑ)~v2bbf sc;A{׈)! Jv3mS*TGAT&KɛsgLh:!ՁMN @8[גVI4kXsJէ&- Z` `D7ID\172N̰5R%0iDj@)C5 Q )pamSPt{";`CHgo'`phv3JsU1QY\"KPrސuic`mx"k:,08ĝz6:YuŽCk9HWٚ^EFG^I)RD!^7+.ֽtzF(@ S )Pq UP6琦P 5r<2^>%j4RnGPf$Z<D[C{&ęܢXĨ1Zme:yq=U*Buf]0S*B¨)vPAH: =^>4l%M8oh2&ِq'pPFfP š~xjfמp/$$B!%Q* cfP41&׃(tm3 u"1d9JU5 od9]''ۉ)-jTz%¿_-Z TG{YȨ(SOxJ8Q6G ِM}b&ܧTAM(F-@"x䁭W h5$kuDwJ^)( 7@GV?Oċ8̰Ybg@#Vm:[XlSЗJDSH^+Oׂ8+jSA"VrALk(YϯeJxY <愊YG P]4fZ*-a3rCKUs-=Ӊ.52աMПrx6 5GL# ƌ(#xI5y\۱6=ձM*B S C@KESowf]]ʵxf3]o7l7utC5(ERJM,f5y+6-0wezkcէ, ֍.ޣ9mum1PV.Aƾ0 6—|rC 2!N(}ΊB mVi5kNj.00h;Km1q]bL)4$uCľ3 65V d >RNg0ǩjU*ھ?sbSqbBE (3ҋ̘1X]BC,+ <4ktו򨵘}#B iXy 'p{M6<]l]덾Qf~zok0V^k5i\K?V74F Ղ01K@] |`րL :vk 1sL]~EKx4GЇRA*!TC/j0UG0 :OˆCV-jn2$We(zVLʬYm]5gLSwJU,vֆ05~т,^x_c6wAZ?lZaFYc:=o#[3(uvk)\ TČH,!wa 88at#s<6"ߟdR@=T1Gc eXS@@-5)wX'g -2: 2JB2(󈸰Y0މP6P\x: < p82Ftd"Gs&=~"4vq3mwv70bf y>(@).x{Ū[sjD=W5t6Qr! z~ SQCdExxcwwgwXlRr犧:wh5O-KL`¶Gqmyj؜!NIݺ\2`A5ԻPN5K1CS/騢Q YP[/RbRnUV( i R%FN 8ӠyF-A(T@$Dt N;#)ڢf0ujbB o[!ŏTnF@<삢Ƅo:`@ 0mt>i4_hv2*]:\֑jٷ \afS DwNx $" Z E\V0.2DUA`g#{A)N0nl$0V Yj Ӷq\>EUQctgdms7K-aaɀf{΀kӣƗvC3naT ~k4OKi1 6_ 0H gn#?wx+UAnDׂy(Zŵ&b!tt9 U\%bkA2W@-OlE0V=-T_ޟoadDc9&$(`S#Mi/qCb^bߛ6J nMWh׶ؼlՍ21ٸ5-)ЯmСnaj=zuNok5Wy?~h=f5(k+w9o鎄i'=fuVXy\EEU֕} MY+wE/TԲTr-P*Ժ}( j#omAө5j[ډ#^R;9-uL}Ka*\.#j2\y8.hm!?=~%Bz:ycq0ŭ+&t^HUFz0Fz;WA#*&:6:rEaaq^FMv/1h}a+0܉hfk٪7m#J=SH0]|ை~vzٝٮ %M٣oߪф;)FhÈҴ [Jqa[)F2t[+K6͊őF0 *k.S;fuآc1l 1 79fqGΚMWX40#Wwesowڞqm/;Vtg[wBIHχ<ZfB%`MmM0iQ!veS; $z^c@u5-^32 eӡ-sgZ8j%Ȝ'ޭXl)x] `4~F^b;:~2@Rt?^W#RCvlC&IjV N]z]}ozgm>^I`7u-^?a ۊ ; ^3b2at-7>Ug),nFR~ ^$VB櫹I5nҾ|kf:Pw޾COtk; ^2FE5hКBCd=B -̊eeWD9Hjf6pB5D@}I c]S  [`Gܷ@#ZPHw](L ґ % Fёh(V v]vp߀spk),Bn*Hˉ#/ngA7ecj nJL66f?1 F&0;͛z>AU6 cǦ5M!ޮ-jsU~3hQwk ȃ=6/SoOyIR܌B>NBV0#i4#Lkl߉ż56ʚ$!yq'*)0^M$ 5L3ͬDr?L}@ uHM_"`VHXwߝf4U SQCiᛟoSEyw[͢жbs>J~.OqD 972j pH!y~0çs)"&Xn]8#n3bh㳯(+S;H/r\2--+k@ި#to%%+HP}z)Sۘnpxh6C0{kl'XN>AItK|f' plc/S^{#Qh! WL߂QHz*Wf!hk2x9/ 9=0ڻH*7KQ#keVE wi<8PU"o:aFQ^<'ǯv > :HeAwW8~9?''}sǸE3?'s{"0wd3C-=Zss}N,#.AaKcmX~+1QZg;xaۋמ>?At A'cՇbwS#1BŮ>[GǙ|7^2~^î{G?*FQb5f8'kgB0nL"?Cu闝ݍ0T_wQO_&?3+.{?}8;:-X10;SȉIhu m}/NjNv2?@d(bszg^0GE['G?U&lW˚TC-(}/e䪸\ `YVtbMt0„4 dUfI٣#>A[Xre_4/ :xkftM:WT}qkkN *wmD*Pfde//:(] J& K#?јfMh/ϨafŃv!Uۘ{n)Z.}T^"Ӳۋ>(£N+t/7^:CbAa(IY4 5>k{fd6˭ RVFk<[kur=ܷ\}#w,pO.[6N 0YG_+8cf1< TqzN*gl=K+wn[괸;p:%xa`mVlult=&R a܄F?I@k⍯ΆnrZ:9}j1b_wpk̛uw~kwR߳ :Al}ޓ[bz퐵|<ף.c8ԟ܋Sus;{G£g4xN:ЫE. ,B, p; 8_ 5~rKpx>/{$B{8IvA/G~yK鍖r7$Хs1-!w6pTF1XܙڱP<óG^y-'B|uwIzkQ;]|sYsGG):Ql1kH,y[EDP UZ-, 4 HXG5k3ȭ辧'0LuK]t`(`9s #pM >]h jUVqөV 2W b\ 7j\S$Vs/xU5H{QvCĶJsIyVD*1{ 8\y/ؒña;^N q~1'3K ~cAFσrt9qu C˸'$YVjIF-qfB̀CMpIf1)23QǒK`MGK)R uFWǐ:=,IJ endstream endobj 40 0 obj <>>> /BBox [0 0 2158 226] /Group <> /Filter /FlateDecode /Length 221>> stream xő=nAF{NNir(vkh%;rxAu,GFf3xlҨI 5kUÈ wPJNJdd\;i dZo'܂'HHHL'\ d* RKXUCky\ PDtOn+v^zZKlg_/M#]v:;OB7]Q endstream endobj 41 0 obj <> /XObject <>>> /BBox [0 0 2158 226] /Group <> /Filter /FlateDecode /Length 277>> stream xmAkA+<SG^9Ц%lAQ;7pI"!org33M4.sԔ5Ӵj.m۹AcФtj8G x-ҥٌ]J%^tZQHxAP(r" pFbWӾ0:FaRH l(iH;37 )s<>N0vsR]iCj*>W݆l |mTk endstream endobj 43 0 obj <>>> /BBox [0 0 2158 1076] /Group <> /Filter /FlateDecode /Length 470>> stream xmKn[1 EZʊj[0d (X P{"SW9Sh%Lp~}WEcm\I 2 ){<^ z miJ@+r Rte_EbcwӮ:T(eU(ӭP̙$_d0Ȏ[hl;n-shRITWuiN\"27%ShN)ę^ʅmD_/ PgdykD^{ѝU>f4ONm[JsRϑVbfڪXwE3d+z)Ws\hfUX}xGfW̸JԽTW-(YݴԳ~|AɩIkFZ7vp|}(Ц9O<ٵ=>ڌwmN}ޜJ>׼mOվmC endstream endobj 44 0 obj <>>> /BBox [0 0 2152 63] /Group <> /Filter /FlateDecode /Length 382>> stream x1n1 E{ueI:k]s ;"B'} mM)JIҷ 9_d{<-x}(O?J 9]^q GRN8a[/:C.{= kXq@siGMA7SkAjtʒ"InءNrXKUVRN1uF%թ6sIlfa;I` լڹ!(j"js)U3.N]3h"m~> endobj 46 0 obj <>>> /BBox [0 0 2158 1032] /Group <> /Filter /FlateDecode /Length 217>> stream xŒ;n1 D{0ß(07vhwޥf4wV3#5t5P̭7wj;u,_ JiRtp'33M<&/ G +| RѰGE| NcQLq٢sheΑ IOy/ݢPlLe9«_}R*Ww5Xnjs?uY endstream endobj 47 0 obj <> /XObject <>>> /BBox [0 0 2158 1032] /Group <> /Filter /FlateDecode /Length 272>> stream xu=O1 w HɎԹ]`?A;_B%H ~N;PjLzCFƟNffpf*l 7DXвﰃ DI ,Xa3>>> /BBox [0 0 2152 63] /Group <> /Filter /FlateDecode /Length 382>> stream x=n1 {ueH>.vع?`,IL!Kt22Ɍ^q,xtv}yKT%ie]4m N9Z~&uvWwv(lJ*\t^>nC͙7ERr&s{rz4[l!wud jw5Eƞ11e1RN TEr q؄)'#aVٙsAK-Zei]Riy~>y 0+>\ x1sCs\ nDz $8ot^?Ɖo> v?h|k7q endstream endobj 49 0 obj <> stream x $g}7!b] $jٲA*@>${#9k XXګ@pacfwF!5Y[\f5YfVl\!{61+gU>s`ֹB\ު]ErDv^ƪsܹbn5YͥŬq6>_Ȝϧ7 ٜM3VrF!c3F!:[ȯ3?S|*QH%VɳY#\ΧⅴO3TlX^LT|1_B(f|*MƬ9y#3y#改#V3V%rj.]̦D./dRg b6]̥Wr|f%gΚb>wY-dd]v)Z+J.+nݕvM)6{Wʼל9ϦT.c8St2o rS)m5ݼM%F"c3Fܼ]it1R\*/[cD<璉\2nMI71sd<L2IƳF; 3C߻gc[?'>-~<~6??z;~b׾ڼ}{|lǃnw~x'?|<c{pO|`'?ч?rlltjblvjbqn*847979:;929zɣ߶kwoݳwo׳]G|ށO{x_ɡΌ9351>;515>47575>;9:3><5rz~rtiz<0Z'VSEcX(3KSDza28^ұTl!4g,r|^ėttۜɭ)IJUKv˹d,}:J&j>+U$J'}iWd+g{kY+CXgj61Vrs}PjŬٜy 6_x:l,/Kr*/ٍS 0bY/{sgs)3\\ffYS[h.ȧY#fv/ì/wb6el1ɤrli!h[$Yed}#gkQf*>e,JٕͤT&e2t*moqMT2m$t6Τ HL*ie&9lڰoxVfbvUt>)䲕|!+r\6-uoJP,V sgWίslh1-%fY+5)EsU*M)=UPW/szq/6o.mX(XXpjeRtOsUxvu…O?g?'=ů|K_ꗿo|>Zػc)\n꽭[DS}K#3P[ͬȷnTSE5~?];v=9'{o|߹;GmE;'~ ޭ*~5>>QT:s3~K/ŋ__/~nrTԹꈊ>3wBś#혺Ս)fl6>2QTjx˟_|+uS* ;L0E֩֜g#uPч%jT}Ν]}Ͽ{fǣsTU:݀"x+WγoiGW1^vlg>u:mwvs]oժ'7s+DQͨ?zO=̹ou#]wϵ+ۿ3/.?r[ijeE;'x(u;l$&whE(Iw?w,\Uz+ʿ%Ʈsu '"x7T3;TEr|;OGռZ]Yy%+_ڥ}jjO.^Wz7 OޕR6 Њ>QTjeBZ~O⿭̶y}_7pE>~ *En|Eu|;FTO_vzlkמyV۷>V=}B!!*wWַv/G&*ﵵ{vVOܻ= ?~=p ׯ2FԱS*o<6ۻT4vE".uڵ;}~ڵkl]חW5V_j };kkkٷׯ_W.o+ܮ;LM1KkWT! ЊxQRׯ_n]-n/fיK=CM^}ڕ/\{?v_~W_3oguo'W߹~K\{Ngn}`N o>9 :MFjYEt갊xQmQma[ߝeWqYqO.ϾzC?µ?9ҥWrۉkkkvt{v2O'f[ߴbOY[[s'{v:}7u9CV8k{ԅZ[[swqqMg 7vZYQ?:"?LTTo'{ןJ?O/\1mlޟ ?|?^͚av23.!N]NwglsC(=CP#n`7vajeEjQmT;$> ޷~7/¬yުJ7 x;`=^v{'`Wv#:dp]t٢κmUG6 /{+oJU3x+Z]-ZmZw2> ޏveGseWmz/?zveٷ/o}=g@u/ve5ᯚv elm'%l/u]*x띞"Yi *V{U䇃jǺv~g`6y 3No}']}?11p_W}WSWvos;qݽL / s?tr0xmJQ&TAQ'x7I>`"WmT MM.n:[l6y$Omz55]}Zȕm}oc?|jg-scʕp1TUq&Ԇ]*AQ5꽷efsIYp21ß0w_?~ޘ~jj`pǟY2ǢN#Oo ު.̙B 9IEfWO+OQU6y23+ Nʎ׏'ߘɇ^?+R7ߘvMӊ>QMoRF 7Tz]Q?w;EEYoPjDE ,{{o` RmyOUQ,|STDu[t}&xG UWœ2T[ތVTmvEkuE)*Rt!MQudsr8\rK^}EQ/o~2;u$6HEޑd:wG.(j#3$Tj"ZG#Q:;EQm\oT1OcFuD;L^ŲEQuVyTM0ƛjqE uW7FnN E_GuPvu6z:P}&xW70-)jUuT轝M.,/ˤT :FNOhx"~:`7ƺnuK];M{[!=xecKԭb,w顙[n? #ljq 7 w҉eJKyۺ}ug6m.rӳ]x u4ƓZTFPlZi /ǥpD#xعؙeү;`wuu_͙~CAlUlϵv&x+j˯)72'Tӯ=˽1SJp/FM6y%oj,N݉`su#W?DDNR9i{z\c^҂dˑ/^"><ۜ+xi{* ]GR>5y?e۽lx~yܡx\!t, f-pC);;nb}Ý0 6{e)EnU`Jw,0uVI'F8i7?@!@]w ?̤{瓈Cu{/nhH[~O׊=ǨjVl샏hW]C_xIEs,aT2p?E#xSE'XL;S~omWu8wu :7'{ x˗L,D\]oy۾ЉWJuZ7͛*x Gwxw!w= xy;jYapW3S@>aUܲt?k=h$6OWxxgkRxoz]zػ==K7[yfVǵw(lpwax{]BӃ(]Ѳ-^o0 ު'_ȠoqmpN&>U\-ݿ]J={l47;z]10n7wm׷݁=h vo1.qumFw Gu5Sw7T1%oY7[Q?%8xKVF7 H$.Towuүe'x38=]?tR1oY.l91us1ps-kh3~Q.<l9& \kptPwa~nd%v'9ψ zeK璊0jv g[OzC5sZh..b u;YI{={K m/ޛDޞVBp9 ޒq`A%eDž^~jImioЀ jnpC?~;Lx'Odgn8ItzH :,]O[dt&DW,|Xzlp~rJ߇oȴ!𸄛:N/?ZC!9ч;d/%̕گŸ$g/g[ero}Mk@ݖrn~7llzBfBc]֫ڶ" w&Fl;Fk,G7}s4>0Wo:v^+Z=.`co;YHjߡbw^,_D93?rIs7"0o(,䦰3>AM//Η~' x[RK&P-=p!txnoJt]S~5<K<O;5^j]aם{'"{o&\NVmO أ.ݺXPډ }VZNKwLʟ߆|q EG;C(oz@{V\~L,/i5Z+]-ZC@g weߔ~R,e>O_1}7x/]nTed]:K,\ea!LT>5=xk"P\nY7`Hw o/{dP6F ށYyp;[L[ U}=%ÄwdF_a9k HJ'urZk fT+蠭՞lw/x˂-@P-YQؙ:+t'C .K6AW\NGrىzr}h'khg9" \kptl(ʏo+ӥiTeE毱Xog3B*`~,bp+>_u9[= __NU?\`ށNG|>w{-_kOozt Y{T)*?h[ Nx\ϭx FNWFp X:tj6K[v\knp+E ދwGp XvkOSDO3x퍺@'Q d{" ` :,xH.ϟKu. ߞAqtouW~CEpǣ+٥TTzy4h\~V1ߴ Ӄ\\!Mx5TdQ]t?kf]smv4Qzy(@#x'jV6̏&)ꜽ.FW(Ѵqkmun:J M֠ zrgtГ]$wer%_5)J^"צq]Zs]:b]zK_  fogW>.xEz8*<jw$oXYn5z/}!T旿?i^q5: =:W8K iˮZZG#xg&goY5tߖx Vu~iAжP΂]]~ ٞ{oP9͖|k[uoM hӶx'sx2yT.xcx]V0/(3I||U|55x#`Ÿw`~~wDž%#tP@)^G$Dg,|/.C=ӕ_iDh77oaJot7˿8.!$ǫFCkϯ}~|jG~MT-@^wW9ْ6K:&k Uͬ:W :7(xK׫ ׫c Ta~ͶEr_rϪoZ,Fsr'_H>W֟oKGHޏDo*a`[=0Nh ף ;87(xKKF ٣3pʟ*ɻݪ^|Yϼc)LNBZ+=a,qS"8^wiV)=..ف=UkoI q|Ϯ~MK1xFo~-<ޠ-]/K#x'犋'|o1xaǕzŽ"CZ  !oU|1%8QFi|%_gShQGtD'MUz\LƎ/8x˾w|ϕ\fǫ=7Ħo~w׳9ˎKV~7x+ ]\8qt;=_S^\}fDi'2=勸{ӛ#ؚd땟5_(:K]NJE,WՎx 3Gw*LG}ozw9U~>;M kz*XBT!_5wAyVl~hy\r\zfPQU%wuvs@L/xG rN1 \BFtWC/폳WswSXwjp oTCh ꯹8^ &?^ ]Fy^~2 1=WX8uNWDpŹ\ZH+xOEodcZ׼dsZDsW?bGF8z-v϶՗~6Et $ >5&=VkilMVԆ_4`]1:WyMH5ij־BJUtgͲKmye]IKuk75p{w֎ *ig׿3~ϲ_#&: 7g̑UYWJPGV + j#] gǪ/mX՘7;|"^tWWO풑]ڙ ڳ kwz%_q?xk-n*Jͮ%ʦ7hkV&|q|edK?#'|U~Du|~1ilzr8Sͺ=bZk/%n%U?rAUjz\uߩ$EqH2jOo.}gQ.xK+~voM'xϤ=݃a]ԉ{]TZԃIzA%pd۫jftA冯Sm?HK`{d#Ԟ?.;Cct5 y>.]u7xn|~#=ԢO+Ac{q{t߮(-Ъ;x A:Y{+ɻr5rӑI6Q?:K5N,_u*xi,x M/xlǘE;*;ϋU/ZI2W8u}l_z=ra[cX^%AN|Ry :F׹]J:-Y?%Q 5?/3m&^>T> ϏloI:\wUO_WFOߞ♿vnWzW=p{7&nܵ;d /y+Vc9vwN쥏w+i:?%Ӌåt, f-pC);;nb}Ý0 6{e)EnU`JwiEà{a 7V-Nmߛ(cs}]]M`l,F8+ jw=#yd[oWy i٩os~] M/y{BՂ|9{a]_gf+o[wUib^gwRޛngݾ1[]O q+o-?t|`C ޓƬw!IvmtA{I7uN3q% ^O@'  @/x/= @'x /O2PgƆ4t{zLlz(D+x-Nz{aj$D+xM Gphqzoth :n@'ӣCxJx*4Po@V&xJ47CMo@  x- "7Z+Wj8 cCQ7$Z{ ( ޳ 5Th)7H7xs=9:43F7 ^f D'x5o@ h)3xǕ=Jo~NPBZ@#xs@h7ot0PB7{ (#xj44cEo@ hѡt7DǛ ("x-@Z@#xO%o@ q%J+x  5Ti!7 ho@h=>P@ h=P@h=96Bh17@#xO Q7$x-ho*Z@/xstUz{nr$D3x3PG&;us3#ygwm:j?431{n;1TK͍ό _@gPJL/Ng'3co@gP {v혝].Msc #=v/ W~e#K3drv41;0141|~;_zk6o}?ᅩt!>cegN>>|Љ#:s|ЮcәxGuҬW9Uz`p9uȀ5O=~ᾪNױc}f.׀S5zс#=G{5{t_rz3H`R)V!V-pRzJuT~\Kup}2'sϬ*O9 C̅wKpʵ&9Un{`_y9lU淶*޽*i3љgQa1=C/ڷ]ujSݵwس݇'dU]WhyU6dqӳU@Wr*,/߬S=u@\U|­mw=ꐫ+g3ݳl-D.f7}|.oY)wڷ{]fݵco۽c;>vmۺ{{oۻcہ;uh_*ɁlYKU~+>_:ess@!z@9XX}* UxSޞ~shR }f uU=VUnWspؾҪk\)CG*3ރz=TzXk1@ ;UjA}O ;|_āデ>q,vyc*`wG:nM'=Uc=ycGN;rؑǏ>y̩CN95>|fzlxnrlqf267\t endstream endobj 50 0 obj <> /StructParent 100019>> endobj 51 0 obj <> endobj 52 0 obj <> /StructParent 100021>> endobj 53 0 obj <> endobj 54 0 obj <> /StructParent 100023>> endobj 55 0 obj <> endobj 56 0 obj <> /StructParent 100025>> endobj 57 0 obj <> /StructParent 100026>> endobj 58 0 obj <> stream x}[lǍ{"Y@ y į{`; Ǻջ>,3@sת u!S]/8zoקoTB)|͏ە3KhDrQ$/r[-6Ji JRC#Ψ%]/_߷wpox}|wo?}xC~~_)rDtZwi5#_0 Jo_ĘQQJB1rCcbu%(1Fa]6Ɣo^1+P[^BA. 6Q>āJ 19Q=;9T)PG- ^$Y#@S!pZZn ,HHK0v XKI4QnXrI q Tsi\тXCDtRII@.IԫhI=!%SJFm e-l1 qHKj]U<,)ӭ*!NTs* UIуakW֤:W]> sh9BK)BGqS+9Uw ij5d!ߡ^Bm$b-ضF{ ڕJQT1di< ir?b zNGV9P'*|ƝC6E 7y+Yjn"{i{YzKtG9V߾ 8+ `=eT`Aj5|ۚw%G!RN33 mp*S(Y3@f|1Yʢ3m B0%EmCܸ|yxnfYy1 n!W( 澜Q.7إhqG.ݐ q c~GUD>hCS[[>nPl۲~0p0ǂa6hӉD?rm1n܏ع=e#vc^{moo!%{ʓ;нP^3_OǏmל*\匙Y!)YLVLtM͇=ДT[F8<,%A4:a?/u"eB2b @ =VEF$jaP:i,ީD瀢KZ3HÎm g9cWpj*+0j\>QF[n9^GF'#]׼.izFܣcr vqf;Uq5BiĽˤqO"tv}4~ۛhĽ1}ڎG#GΩ >98U,h֚ٛ﬛yyWAzu٦7͞ңEzlGўJ;5枡{ﹼG{kG{5}έuU>u֢n𶍏ۊ>;A`ÍFk\[1hӏV~dsvc\t v0\/ۀnq)B45w"yl9xl?lz"ġ$!%]s+0vw0x%ɒ[-Wz,_83ՃXqLPM @&4d)- kgƞk $qV(Bq{oacmi!JؚJY@0*}%& c꧐pBH RHi 9Sb}a1jrHzψ!V*ܘCT<St&ѓw: .elH% S$NNM $HQ0"z syйW ]U捃BԯT622 }mj1n8>;hKANx*~a`w?#ţ8W5H!:utu)F)̩)w,vXmơbDφ"TOJk[J'~W7 GX rjyۡ36^~ FJ?a0BN>JiE2v;EH6},w#H/Gt|tabwś?ݬ)fpkۺCiYt欽BY-;[o;>;(w|9_ffZl}[=CӍ W,c2ªQ )pK ΥbR1V-0឴˙[ri*0[¬Ji8 jqb 3VN Z *"T6$J[KAF , sQ@,-^JbiDܙ(pq>Jœ vQ3ZQXofe@*@HUL%Q jDרFTJKA Sk BIYP?%'řK+q(&J3]Sp=5,Jz#bUIzb-ҨTjJ9<ޑuI`fYٚlpv^=:e,)M˘M[/ 6acerU3LK3V\5c˘(qxM:^7@Vx>_Pڲr&_epfáv>ʲŞŤ|r!m{cݳ >xZےd9#vG/3<޾ Rlsؙ 3{;{6:sϾ5i[6M^fh٬hf_X9Uoي跁w0]jƍ[>tTM%u0[@`5KMrjq\l#9rzLBڋH Rz-E.[:r+K'Jc?kN1$`Ԧ,c,W`} 5XLϔRibzȍW)7btL.ځ:Tc%-ń"b?E2p4SX Ѹ+eku%-@%IrڍjE(4/:oRXԨX hdٞĨ}=S [KeFo®yҏQm;z14̔#D=c`"7g.m.w yi ZӔK_h*mmy?kÅ&qm-5-"C JOMUDϢhJ Q/*i``qʽ^g|+s(û|#>Tt7Hqj,e,t2iۙTָx;U,3[Z1Ń;}p`D|qPqsuT!\62c|1K7<-B9c٨Y" %b FFPB&) ׋U4ZDlfDI)7n3nc c3׽X!;)8M"@.YIG)D.]{l$vq5<.N)JTR@U gpBjJ'8A4fFBS9LkƝCAK/RO9> ~|Ex5ް~boDc?*YSe~O#LQxpx'eG<8L# ڙJ8&͑Ók8,yTfi8)we1 QBES  4ل B{ v?'>"Lףh:j6c$a,p(>o2?L=#SuYWhl"^>3Xy( iy:몮4Ȝv?uڭWm;.BLKG-Z_6ҩݮj>u /Gp5Jgg!W疡 u~nu_'p_91hƷd -ZOk[z ӥq>>x3Zh'Dܽ%}my-m]#|v;UoA}HY!hyLCWGŷvAgp|EkhB*e]WN#_[`3S@6:n6Ί=1K>|gYzy̾۩8㇋U{[U,X6|3C;N9Ŭ!.iq#YƊEP-{Yz:v~#ޝlkƕ5ey5"EW1nS՗mկ7e/;su~ؔ gbsi5QUYKL7󊵟wƘGS7F89cXvr6б_ZŪK*.{{ {TVZ-$.c3Q Z BX7&k-sTa 9SB*Z$KL ae =+Eͫ W h@Rd{t)K%uu+'@T --u$i3@i@F @3˃3@l=xbBecey@=@(*yTS稽Oywp|u Y_^n>P.X.F@higF;%@q6BV .R\L7Ӻa U \n@t ko7zWpå_ssE7X}9? g:6|ON %RǮ$9_39!Iŭ↛v!#8\4;~V!g1`F:add ;>.:qyw|\=^k 2.YS_bk>.q1&jCF D^߸򚏋q枏q K>׀ epWyu$H&Oŵhע|d?ٸQWrV6.H_qP]||:ظ-P",YHࣚ믏K5>Tn"2ۂ>;k`#ÍB͏?'it#v?Vn7sc ^ysq ̜ϩs* <ϩs* g PZޑx'-瓖I|r>i9OZ'-瓖I|r>i9OZ'-瓖I|r>i9OZ'-ߔS|a.aNu$V,bǯir%h= Iؕ1<ɕXe{Qopz=R>h8t%lnblgݏT@k:$@+$ND:V 1bLN+C: ]$Ey ȥ#{҄ ԏgBձJ3U<#]9|ÔV$0u"SJ}oIӌo`՘ 7%eLz2O_Ž(ڰeZqв;1L!f%,%h&UZU9F9(E9#]WJȗ?՗s`25\Zbp#g|.t9Wpx|UVX j f1Wq&ҜCvzC8W7`}Y>M?Kh Ǩ,>wL7`) Oi48Fͤ?MhL+DB#g5q;ٙGIs'=)5AL)GGN4iHȺ REX1c MRd:94^&St%5\,MNYœӄ946O.cjr}0Yq5Mpi*:ִ=Ȟ&]2Yэ!S69@ΣCB}y~ GCHRˋ |9R}-PpMz(_Iw4蕬v^ 9sq߼qJf޵bRx"MlOhʟ(q%gIvJ>&US1xrA?mf~ kìIJ[_"T)`o#l\?;il2E|S\>M #vpK*oQѦYZ:{fi:{tB3e3r,m#&~Xb0&+'gyMAV໣+;`PCtTOӮL8^X:g*߇CqEπWRZ{~fP,ys S==#{J 6Ō y׋3jzϩwLJ |OUθwJSyO$ZGYVo-9GXvG=swd=ZGHeGvDUg^Yͯ<Ob|B>xʵI1,&j; Iɇm.GLsEx*׳2<4| QSGTKw>"whgh,[Y3,ei3@ג,iH4Ρ %Nv!d㓾"k2"$sv! HݜL`op2dP@8Ɇ{JYκ/4$d2A8 .2d)-H!S^<+*I8 Ɨi>jhDIZJ]e?oMRM0CY|+Rf\=Xaq @n2غa@ n4q5Ȼ{_ncD=VA.`zg31Q Em"tDJ/7hq'$~rJ6?/؄b 2MR8=:R'K]3'rJtb8wSzt\X%CE'.ORKW;>f b[Wh44+.#Ajql K{F=Q6tpv 'bCQJ8l9 <&X3ZLX瓾cߑdl7q|Ρvαs=W=&YOT#w7%&] F>9;TptH.dqٚZK惮p,;ֵSu@ Ӻ LjF[ {4CƢ*sTo:h=J'AތBy0z鰿[r,V -즹賻묋h[-.MS|Ptl 炳YE  1ճsLl哜c`5DŽu>9'؎rۥQs:1f1't=Cs~ϡ5tPB-dv&OB'֓PI$zj= ZOB'֓PI$zj= ZOB'֓PI$zj= ZOB%~:+_EERIV-~ieKn@ڃL 6 M? 1c\t@Tp\/8 µ-B"\u##"LEvǢ1Җy-z -:]#lr-rN舢2֛ v$Uj^m: Oeyy GD0C3?E(R挴'RCO%VGj 2U ~(eiIqA}Z:I4VqI=Q'e*U.qO_\I*wik|1|QL584m6y?9=g*h(6ʤxEqGJug$Gxࠝg)HD _9BOPISt}IRx|}GeOK(JX5[`KIQᕤ8;fE2޹^.diG}2&a Y1;FFMȐ{ƾtV>S{Ƞ nmSs3757yȪ{Ss3yRd7md5uCCӗ'C(6ϴ޴gCM5 g|o+)A>c2 wL>]^E(-?tēQ]52C(?^>>> /BBox [0 0 2158 2110] /Group <> /Filter /FlateDecode /Length 222>> stream xőm1 F{NG \;M7w§3һԓH}|w*\ԥ5\Au`C*tiWS>n&ȸN&[7\L!EjC3 og/H)H.xoe|HOn%XZ£j4dPD8糂.a&$VyJ@aS ϣ=f:n*%E5 endstream endobj 61 0 obj <> /XObject <>>> /BBox [0 0 2158 2110] /Group <> /Filter /FlateDecode /Length 272>> stream xm=KA |“=wй]t/ZVi ~IH7ސ[L.,gośs=fkxIT3ʆ7x\@%:.gXdӰ*256kp5 >T+t/AʥЩ3[ 3qaQ(WOLIS4(;QZ9J{/@ř9Vq'sUH%<۟THe\%q63INUs[9A%E7;lG endstream endobj 62 0 obj <> stream x%y\ H(EEcJh߈eB7 fEܙ;~=w7[eɴ A`E @B$RoIdiYsTuS]UfS]~Nuٗ_?|K_z^|gqڵW^ۻl6ncQm4wђ6FQF|ժzjjR}QVrR,Kr^/J\JHTV+j\.RP,JBsq'Ro],ʅhJT.ʅrXFUU*J%Բr9rT+rX)UjVVJQTˑ:Vն5FѨj,oUSݭZVݍ>G6jz\뵨Z\Uj۪Z%Z+joCVVIY-jQ)r1ZTX-r^)5FܨZy^٭WZj^ EUvFsndr޶VͻNs;-KU-V+jP-jbdUJV-D;raZܭ+F[)tVjTZ^-kbZ9\nڶ[-ʑm֬F%صFZrjd[vc-UY[ڪPۖbI}hYZ^)˅F8hFX/Kۑw-.)m׊;U ۵vU)lV-nU[w6bK-]+J;vU-mWK[VYkr!9S+muصjqZب6jZa^ب6-wj۫zlȊQZdjōZqZX+jqVڨ7k͸Zq^ܪ6[kzY+lTw*mkUPY*;]]lT#ꑷFkhsi{Z\)GNn"Y+lTZ(<)n7W[k孵JasV)lĕ7b+m.7 K;k sam1Οja}X^^/o-WV7W*bama{ePXRX+Ϸ>\)o,6K둕7+ ȢBu{5_ޜ+oG˷JekTZ*o,TJ5res\mYgoʊ-6۫RikTB\\vGqsZى{y;T܌WW;.YoFÚNyQˬvj;QjjߕhJYYl-/VWzQ/mK[ѿ^]:aT FiQ齽ݏG~C}]IJ1ںGށaa^ޏȇgvU&]w w?'^?0 0 ~SwU@Vx_y?yo~{!1 0 0kmJxk?ƛ?w͙~~0 0 ð3{ZYVo'_ď>˿[;7aaֻܹ|Ν^0=/;O?au~f&o^gz ۷o=r8W-K_3_{kW}o$kW_{ո۷o[Jګw}饯:&aa;w|t>sΝazKioBwfe}7W6ŷ7gɛ o[)m*Dx_vݻm|W}%/_»/0 0 ޽3)ݣꎅn(}}_ywow^ۿ ŷg= DW[ߺ{k+ɤdR ,+9&_{;aa66V[۽Hx_oJҷ+r7/;wQ;;d9}XXګGNtf$_~*۷oJI=ѷj2e%$z6um5_UWg$[O..b%c/l@Rs9llaaؤظ D{#}q*kpܺsO/>N0kXpz5W2Lթ oߎ%kH$=殍kݾ};q2IS iIU9Ɇi6؎W lj0 0 5-jp8nck ǧ$o[w;8ѝZSz[Ֆūa$S䃴VW اĉ$4'ҧ$Io[*F?d+T'a6)6n»SM>ssF/}gW#w/k/#wZxǩ$L2-xdq"3vZɆy) Ƥ#|2PE4c՝6%I of`a6Y6V»7W~]x7x7^o<5co|~0.iP* ׮ӘO5kS*R[*[ZL5I&ɤڥ DSa1N5ouaabwNv?qnZ'`/|'l}_{{ͽo|߿7J[/^J/' -VՖ_z TsCd~ o5_-$Sޱ3+S10 0lRlL^~??J//;a '~ͽ=O8οį}#?yco6Nݾv7WQ&W7kޏ=,H~7N߿o̕Eh0 0 ða^v"'G]{~>?a߿߿o}Ƒ0 0 ð}lvaaaX_k] 0 0 U7aa >u0 0 ðA۳{Faao{v0 0 ðA۳{7aa n 1 0 0l )pnٽʨ$}#UKԦ{pOe>86#<ç*w/㝕,}eWL޺5;0JШ8|;e`Oo8ڊ1Ɛ] -ۭ>}_z[hslߗgD+h1ݽRp՗WM؄$kއ  v"U=55vdfz}ޑWCD4IH"?9}p'c3 *ۉԝ#Vo\ r?:ԣP:K[Ɂ'ߣ,ѩ)+hnzb埬*%Y|L{ޙ VF:ס~Hy=ߣ+c~#QwIɇ?F(ݮ ':;p,R)TQ^Uϧx׮HG?'HJ;~l6j[+ o5.\^_'EbScNʹy"ypt*a5oLi_,,#wu7LxSB:3RmIjdMƎ'"?*֮?VAMwFf&]ߌw"R'㝩iOX]tL *)҅!$rdw` J&p'Sg~U{8Tyjʐ#5kcIlIw+1,pG*Q'K)"rEs=&f3%d 3Mh֥ çk ofo7ꬻ[[&"F-n7]$w! q z9ܒ{_o,ۂVxu=r=挽ZExwl'sESG4 Vq߅nM nMHȑq{zl6L!jPc \x]xoX?"{>/߫6ݭi \^Z7Bwi'o5VjV9=;5[/?wFx'W (7NSߙTR$wֳƵv)ӳC[?Jj4m&G/-wvsn;+- ow @xᭊDD-';.RM񖄷(R=.=X4 `~[ [}E͐O:E[?&G5͙'dGZ'\rF_nNO f3_uA(NPns8dXs?0w\?HCjn4d:'q˧5@ r1LxwAyR|ɢfIoIu$?H5.˻Ʋ|8ۓR<+ ruywzio'5"?=zyP.PǷ{Ng")M q(ֈ;KS--ԓ34Go?)l?+?FhsY [k{+9 fed 8wRQx+"UիuFd3S˩;mZDZɟ?3%neZVpg=vcb?R-xgq-+ka+$/e2lWN.L !qy/X'q wnO[{]('o 9qwz$.!imQ|kVptp} ofA㬻=L2&湙,p ޥFKxK[~ϦۚO˥K!ͫ )cD'Oz2O73l  |^Wm[3BT^ZӖf Hw-1TQ?Eg6g kS6Qñɟ\?}ەxp\fyo$g)Bv;^oIx (&!»XثB6f-NkbS"?}i92 Ko|z򐤒M@Jng޸v좘2-M3<5[:vIO,ӵMz2>!C.l7Cw6Wd,"NjXvv1 Y菼\ڄ-9By%(sCOciĵ/W~(=Q&jIMXI=E<ICVxm1n8vZvFҞI%#D'npp jRExøCbu& q +m7=cp v Hxo"V 7@_ڰ͝6>.twxr0]WmMtr4x:1GsxsD̵Cht}5fi0CvS!el镍⛫?)qGޭg$G}`;%Y"qeՋ&e&I<97ΘLSӳ:/6. ^w9@ ὑ23mI )* d(^CsMB̜6\ucw}-iOxWy6r(B*Y~ؕ_R=„F-” v<-IrnrsT\WQnBQܮ9:xڛ߸Izx?~ Ю|?Ю 'IrܺC7]ZOw"}tBEJ mnB+ ml&Brf/?BvFxyR3PdJ*7B]:֣^tehӳ{s)so2oܤgR$'&nr=jTUr+s7J3obbqҒ?p9@x'1TPi3MK1%.(+-e>P'b2i=!忼 c<կ)]^3nR]3Ocw[H>/\׾5֯B#S}[qY9r N:Eʍи xB^<;H.lL8ߩ:ǍKx3}D.nom6ݝ7 r<"Dx 04wk7 /x \q8PDfm `~Xp8籆1@ ޕj8AG[-Ol7wmw_/㚲dm>>#F,Scz9jToO&)ҙO',I7n8t _Ug3c=;>z>f3  `|xoWE`fEyO`SU&ӞM\ޣixuqflW!-jߚ6D/N8H̫]bywco$4k ˩ [WjO(0o׳zݯ_z9˽Owf z;@_;[=Wx+h.TY+%v]_cڮ)"޲O̝nz{ E:V9 Kqͷ]kyA~H𮕋%='#Ew@CR2 \OYq }M7(n7~voԓ5R Y@M4ـAxO>(=5`?KfZqedGBUx>Kr~!EhWpHxq[*P4O[߫Pm\^Z?$N~1dMvykPoocdL)c[z+j<\>95n8nG„w2{@ }xwDdnB1J /^oWega6{Hw6ax;x%Ap)-7?$)cw^;zQTmR~`3ش8,ܥ}Rlu$˵ BkZݛ{{PiWIu z%ɉ̶جb ~fVq^7Wv2~%k,wXx ?}w8 ލJ!^]N{Nخ)$n7&]|os{uo/ڃ o.I~Ɓx hC<91!I&7'\qSv-r"}$z{HDxCɑ!ΎdL3yu93"LxNN$!.Li}~gEo ?"ƄO[p  7$we{VBxxwǑ Wsa4Ͽ^_ d5(ci! G/8tZ5qy gZ}>1W*K|hFw1{i2VзG8p] ܌k}$cr^%`cO{B~qwnL7e+״kq^ZQaV C :+{g>qp j~%--Gݏ{g}ZtJ:Qxv~lY)Jg[.] \!=C8fNB9#eRW~j++)Ll= wGީK?t'r+/]a/1]MxK~~acwox|w dQji˸W$q A \%_iܶ{B{2Aخ?^\%snۮ~unmo|1@x6k63*,-B WXn^Ujzґٔ{Jmݔ2:%?3ge-n7@rymtd.s#_){4ƴخ0=B<慠g~ JxTN|u*%j-R|ĸ9+ٚЗtk}f.,mױYr(DƆwQ7\~ +s5r<.]Cdw ^9Qxe`K+Dxywv!R25L7Bٚ޾Ǘܮ0nI7-L~<MZJ~ZNp(5W3~݂\OFx+smFu+^_r Qo^X|urg']=`'|φ8a?+uǩ&ڵ-`BhMޒVo-ih@7=]eQ7rK|1 k;nI)˵@&uaLO V?ο;B2';z c<^^wNNc赠p-,}/[Dovq?Kaڏà}i~1 L+_-ٲӀolie81[֑U9xl3۾_B\vlk|m]'sȬӧ_?b\f?M8gzǹ0?Fa)a%hН*;uW_v&8fn^8ך_9_Id5wvCt~sblnoz/> W.VYL}Qd4!9`~8 /Ex3|'3Gۅӳ7H}\5_`t~a4&d7`8 ﹋3ƨ$+;v`ϟ*oq Nva_K&Iߢ>mPn3)1`"gO6WĀV#Wtٗq;(ޕK+X*y"PgC?.+={mMKvɿ&`bOt(%ؗ P=r6htNў%;;ټG=0I[=|5 o~g~qw.,;3pg;XGrzqb0:NM ?qZ;>P_3uf͘^m+lg{+c圑S+/3)JO@{S$O`AjofżӨ *qN͸|x6`_HAù= C|l^ 97Vşebռ;qlkQb1c .-»5t&2l?Jsedjss{AuK`Hҋە.Y͡nX⩽{^?b(!Ƌ[ڙ^hoszKxg^mF"1xa_B䆙9>V7-ҵrH.W>ǝ8J󐧚v$ .nҐpG.'rVG?tKIS-Il~SL';y!=bjW1v]o{i @tcRNx뵈SM'rGK]?p<7='U9+fU[:G-.>rq-7bra=|is%Px Ɓ4 -M#c@L^^TZNȬ")eINRa4U9;R93MTvi9 ?^'!̛%~@x^ʻK7=Nm!/wr{|Fo3،wo<8e/  $= ;e5lg>o bl<+j6[5O{3Y`$OۭSNVVn;%`*M ^̎^赭&4)'2b' oWx{ӺuXKr!\x ?JIZ. Krˀ]n$Ur^Oݮ4$o]0Qp3åWq0?Wx'IPrf0-6NJlj|Ec/?Xk7j2(:H~ Z]ǙxhZnqg3o+8/oOPr$MZyl6bO cRIsR 0d0w㉛#gZ{I9'Ix(+K y??ὺ=N k+Ko/PxoQP0zXo}Ơk'ƥ@8a»( u4~=]p oykR{mo*׮ADj@@77"*N^ߔ-G[,.!L{,wNƛL<5x8;$Xt%l Mo)M1V>O=vZmM~7ehq` ˅*,y%R x]gU|ȾFScvd,S1}n+:Hm/jލ{Nz8_0Oe '` + n+is$E_o4$۠2BwJEPxK r|6ٸ_?5_i-ӺC%8H7L*缷$CH'=CU[G9s%ŷfjES8t?S{OZ#)<.ELuBt⿭~vq?ocx{RH'18 ӤAZ{}eic947 0a{gciԎLa»JI.nFk O(LJRG@{3f#Nj=Q9^Nj;*B%.a{g}SM'=[|Nx)rXai@FzN(Kx˸p=6§ ,9\=Ayf<O=nO`ŭ_pS_Nh[Jq饑{`Yk 5`"7Ӛx#;Gx{2O(a{cuL$?'V+ Q}: ZB{"Mot{ջ|{.ڌ闈CW!]Z.M\GmsB 0 ~u.7GsӥPy|0Yng`;nm0&?lou8)#9^m<?SA ǗYǵni'@x./.]o[eJ:CTOw+>2g}t(i쭤`]"Z.*;:퐖[/Ą9>?IJ:.曲i>Sފ– qk7䒗2wܰD|%F4w˸b?K?F$=s=gs׫` KC-շ `]kgtUx{]JX1bۺӨdVVb{;ђKX3Z&'%cs(w8$=-OvG_܏RwoԐ~gqÿ?8T4'ㆴQo=䙴]K^ck(q=q'n[n~#/h_[ 00qY2<݋lrYJYA o{QOofv 5l{ o> oc|l^)}e'*:a{.HQ 뇾Hqk?H׸!v ?~n^ǭ:^F?zxryKnÜÃ!@x,-^tn o^XI qAn[8.E~iY;'qjVPM$->C_8uiG0;nƟ>ozjx.C_ܚ;eCOΘ*SyN =L;Tk3 w8`H?x= o<??+[,)Ź0J;2-b8@[RK}HqCOy߸a?7wOkc=/M xqCO\) bHMx#$Hx/ϝo/Hݾͥ5^B('S?ًSVQNpK~jJmGl|L[xo??ɋK8&kܚY~)osۗ~gR}OO5=n7-O)⭧eH].'zA/>xᏥ/r\K㒹Qx"Nj00 71 `h}N^SM&~ WWF8ops`"[kv`+KkKv`K o/2 L5?֧ cz1߼0eJ'oؠ>lԾ?yl5ӄo>~GuLq BBi<=\<{RV4'!c|[޴mo`@%&c+=p98A{ὶ|%4pAV~wS\̴\>kfD^qWߪetSq8/ 'nk./n.vi+͜$Z-o^q_S-F»58cd:~msߧ60e.$5d&gjdXZE˷?#,Nz &gu)mĪ.cy=c,Y@~b޹%3tCN`^ os`؎~'w|P_vcR{S>~-~Jψd^^tlRiq*ys4둄\^)e;̤yK9Y_Mx͞}%Vpo?֟_r5*T-F_IƇC[GܮEk oR7N^20 d'3z6|qPWO5L-m\!k[jv~Is?+a[6[?-ͥ8y߸l9)EAH8Gw?3ނP;wnN[[Lj$Mz͎_2y NN qxtw0h_C{H &3".^>Pz|8Pnf" )yoZU{iWIu,PC~Z!~-?cw?Yz֭8H~J[Ѽ\ Ǔz<?6G3_ YxK~OPM^_^dzMO RoS;O}^qWpO/fh(?o{'P5qOzK/ƣ5~ewߣK3$2m|ˍ0Θkަq gOa ?o8(.I:v`:@IM&0~Z}0L aﹹv-9NP4?!Px3ά0qԎLa{q&M?#|_z{}p@mGѻx䃭|ϩ> J}4EDY^5'݄l;D\w7Io7B•gջ7{:UnG5}_+۞ݝ㭗R;#Rs`T'өL{*)fԎt;OxYqZxw%L+!{TU&7·'j9qdַoLT=5m$Ewq|ǢIkiުP+j|ʼ/9-ڷV ޫW._zTvt|d<;}B:3o+ETfsȑ*ԔS̹vd{]_C{}i~~vRs3Dx8{w < Ks!{}d튰@x +sF8$ 7._8j&ҏ o! 7jGH{rSM*{}•Q;0I oB¥ŹQ;0IeG8$ W yxx".]D^"@xo,^›+|ޛKW.qI"Lxϓ!0}¨$3o„"s| 便Q;0IqKKv`o„ʨ$B$„27Wx(y a{iWx&.qI"Tx_D^{Q;0I sG8$",?9j&0tԨ$Bҕ d<[sd|W.͌qI"Dx/]^8j& }i}Ҩ$򥵅ˣv`Ksv`+6F8$&זG8$&חxx"///qI"(} E@x V E_&>f 2>͕ Lx#|[W^ o2~yxx"W~ @f 'o! V6WG8$Fxxo!a{kuiԎLo!*jA& C^Y]Df a{keaԎL!{enki~ԎL{ AYe a»2j& 7;eԾL .]xgO={Lێ=yԱ=wGfN9Tێ}r'{Oz?y?vO=#O9dTSgOumo3'Μ8.sLɣgNt?_Eb'[_8re3<~$V@TgmϣmOmxrBܭSǟ>YGN?-?h-l9XRszi;u,cOwpێk+>tl:uֿj[%GvxfǞNoQSգhq(>ݲSǞ:u'~TNVEq!GQG_motINT3%O=ף{x'6TTV #]QP5tbˮ{F+n=h{2(_%IcQɣO9tҨV:M;ٲN1KZ>|XkUvϞx:[$;w*e 3';uḻg'Ξ+ܶSѿXǕEx-Ŏ_8se/̜8|>~ 3ǣgGg_,<>q1'/ Y;{*SxU\9ΓrN%v9^}Ьmm;Y˺%.+6w̕g.D6Ydb.^:ps _<;Z…VfWfg76\+,,<_[ endstream endobj 63 0 obj <> stream x$y@x1Ye5ڋX[X͋vV%"E~~><7+2Ȭo>d_K_~w>g_qWZqy||:>Jtytl=j6Qqhͮ5jFX=^Z\VjzYVjVTvJRjJZT˕arXv>$J0YVT+j\'UjZ-Ҷj5iVʵ~\ԏF^kF^M|nѵf٬w~t8:j4z-oWS?n6V?N>'5jz٨6I%zѨ5kZg^֪mFzbX-Q%j9FZ#jYիGQ~~8jTf-uTo6fP(QQ8qCXRUFF3m:L-kz^=lʉUV/7jazШJo|T;j[ZY;lVJrT+7~bՃT~W;M^ޫf,ߨ4*~W+{^Xgj!8Өܳzy~S?in7;Ý5[f3íIVbFy~]?ܮnۍNۨ7ʻ^pU۬l7+ÝVmc [íAb7k{ĥfmF^%i~oV6˻ɝVb[v'彭Fyouz^8ݨowJ;kUv;kk[kí+uo6W77W{뵽ݍzuwspkurugpspry{aZYl'VYVK>WJ|/Y<ܨ]֪;+F=izV[-3mUV+ÝÝFew`{ zewݍf ÝnRlI6Yfvt+idI BcQ,9hUwj2WjGfN۬%f&R;OMt=lWQezЪjWAڻN`&ĺz{~~XmUۿ88-\m^k5S(_oo47Ԯ6m;8l;|N%Wn4+7ku3ϣʳg7k7[ǵĞ;<>-v|yxyxcgŞլ~P W2TYrUM3o]=wzf/k՟ZYUZZ<$[j:y}7O~?ܗ_~_~z|ÿ_o Yݬnaa_<>5w^x?{_? @M]OS#PtگQ؝0 ðI0S>+gK>ϟ?7v.PSDZ{aab+νO}u_!=j!7oǾpaMwx菾^}`caaش#N#s/\w0 0 ðg;n֥{{WGaa6_}q.k7~;w^|+ho 0 0 ~q&}kh;{/?z㩿>y[ɏ10 0 Ê3_;jTouo?OϾƏaa ľ߹s'|Ν/|o?b{!#7[-?OM7AOw6=Νo&oo?W_(w?S{g[ݻw_y;Jf"ޡK}7_KVo `aMMVvϵ6*ҷƳ}?yOʝW0;ؙ͈}v-_y;OYCjMU;_:aa4331ʩ65w޿&0 ðCxS{}_/yW>ϯ~% Af5T޸~-Miο$ծ6+ ~Vŭu-W"rNl_ydn5ġaaMݹsݿk;oo8g~֙>}^?~g^/}{^zFÀ#Ȝ-t[U^|寪֜sCYlAio5j-I,>bihFX{aa6E6!s?uv\~蹫uN_x>O^{o_?#?#yGO߾~LZy)+y6aa,=~?(?k2QGw7^}߿?(?~ꋵ$)}w0 0 fƊO_l|/g??{7ο/`W?{caalۧn40 0 ðA٧n4^&{caa6(C{caah7j/^o 0 0 y{:0 0 Fa/^1 0 0l57aažz57aa ݞkp!poiˆ~scw,ԧI·}ӵz'Kx[wj[U7b`tr4f'Zc,fI+vW$kLf."ジ»#۟xK S䞗›b }8#_ykޏ>"F+$)kåi=$ \ЖO^j o4>yS^XXxNlNu= %<vu&QqG{4Bh@& ^VOWOLW8-ĺ߻#X]J$^^_f}vjDrO2(n7L36FT<]=jHs>XR=՝ˇ\/%usc0B ="dݬW"rN朘wE{mB/~Usc"=vw!>+iӓ3K^R"wE/ ;xj(?A9;[Osg 4j"wAt鲵y@E|QU+?HXboP41~- |4;T}FTGƽ3T13۷P_,9#|S,:qTaDG)S]jliy,tov)~fE3źzAKj1(HR°-π|&-ftӓ[&M4o4Y ^!cw>befJ/mh?߀['##/4;;_Tc; ?ע/|h#sx0>r摰C䵷X5> 'B{+#ThޞYü吅7 1ڻ|x H0X So"w="7(}B{}7@(k#ic7@ vp4*# Hl0C/%vsm{/c<\ 0Pbw9#z*P͛r2͝ޯۜ4r8]>3QBy-H{sw @9@}\˴:mȐN8h@&ft ub xrG Kބ;R X ]5g9YKZII& rT 2Ym3YIQ } &OJ9# ]ӝ(eMQORcobK'9v'uzBhDhݜ&PO>gܒS-:)]C{5B҂vr.BW]s_ΤbxV|[+.3L-*ԯ]YU/MndӕroeN͋P5*.U-8K(u!}vOw:nd<} g0h?e´hokw"w`b{x)f[;X- ^mj)SVDۮٌ.Zўw߯V,vёKkǽEExzHFcOw,XIfQzV"B %B{v̜-Ki6nU,{Qީx]sK8O+ž-N+q {3EUC; N*g %J{۾>'#ZOBԿ*~&LZꡰ(Nkf7P+gڤycZ^?tܤϬHxthݸ<Q\Y˂-i&'A#5˳ROP4-ESl!|K*/j-sԷ,CÕY'E=,܆u<կ,/8nR]0摞J/ ~-}k_k\ov>*1qr) #vFihI0 ~{ $!'0kh$d7(> @{:仌`ވͩޮY8&6UQ8_87h:qEtM8牀0W{;|<#p ܓE;&T_/[}R~~#xykp>R=k1xm{-{-B1ݸFL[ YCjE{+_/fOᶍ%h7'+X*|ꅮ M{+'\ 7TO`xizyBCo`q^0B8O+kⴒH 7YTewa>],Vz:a{{y1&?3bmyٟ-M_w 0<9wD;{œq1_=ەUO\rAk-꙾Ojł~MY+1YεΑ_,\\ocVFq˃Ԯ )܂p:`BޭF%]]O{ʁPhWFϮ,k"2>SKSx5头s8m8e=goCϭ/hZc<}sd I"V9hsZUXYm:\q"HX>QL_ bq;>4Ih'aNx:;9gy#B{vZ kGLsd=ߏ`ވ{oϲ6Prb5㏎!k8Q{!N{8{;GĽkVA1ǯ14^{|˽b*:OkiOP;mFkk|coo_Œgķ[R_,]|z{K=:u܌gxoZZtYw+{71wƮoi+bVg.ci]Gd)(+#v`]Qm71Wu":ޅcRD.]e4`,G0ʙMZmJ5l{5׸ٖ}:?nļ/w?niIT`2ͣ꾜!>HTBV6ث5.R= xw#[p0+;R~Z5r-HE?ⵧ(DcSwz3琧tkujJYkvC+4w-!gC~1p[v+{JW{,-Hb?HbH89)4` lGlwhZ dI%wT?1#וWv)q9b꯽)*P7enAZB8o= N{o01Dh͕=koVZ(مA~Hu [{ Tډjʉb?ôw^;;濟VUuEǽ'9T]Z0!\xaqM3fکNZT %A[觿Ή"i\-n)G?v ]^]oO{_qa ]UbS<(0YڻoIܟ r>n6?P{\[?>L+?JQھ< 0WDhKG47tsFφ_ށ PZ {LQN>LuosuPgm1UY,֦7gwlm7=f-`s_g[f6;6^꾸:}|rZ5̄7'EkǤӫLqn ~kWq@ P{ޖzrOho"B{^.961=6]RqVj*[:st>ݶw;W߽~-ܞ̭aς9}|rڷhI_uYY')m%zz|Brf۵-; q^ar7brɕsbzN1z-+iP\jolݵ 98H{SwKu~oqP{P6Ǟ忟-ϼwQ?n.]x`fk+jρyՌmiovT{400?HѭhoKUWUc//u),j,CW{jaS/b=i{jZa! *{cm~n;Dǽ$IسZoރ{&EBZB=kho9{{*-.N k8{D{{S{D,3mּϴދg_WX Y.1o]O{oQL+ Ee;:ŭ9ێ+Li#.{=Śj[>8E{hǍV$|#`ވkYΉ^6IirkWnk'|6?7O¤w~M( EhoqnGY{;e8H`WǮqG%4kݎ>2вuhox7OG=j@{QqLzC؃d U.?.QM˶ 8[`ۛ5wV䝝1t6︅ob--߅q^^.~FqzdYnL+'D.{kjBA|]#QTQn2IGrw`@9'BKi;J߆ucyasbץbO BP{[O؆Bb%+aGޮg-R(x||}_qoK]( Ca;];XEo`7g, t8xko* M`Έ{o{jo)r!иFALp1rN\cLqo?g o77n&e ,  sHZ3 |QPJ<{bː+/V1:qM!Coܴ 3noz;ﰻbqr:IQNIf~J{[ r}m}}3z',&i!=cpFӖ[LXT^{bOajo{b_qP3OVܸoGl_4nxt8;M]k(ZݶΒ#B{mmt7L)}Α,`NA{%T3q{oʸ~f9%N{q)#N{w78+{v`ʈU7 ~%o 7镐#wP5q22}< 0Dƽ#sN"/z|!_MpsßzĊ'Mk!6}K jo crk[dj `ؑw-ukyC-_yNJOKr7Cގv0I|ܚpS<K?zd]_]|!N{\>לEQH/eHW4[vC]'8?;7>ۛ[WFHY,1׹Wޞ737>i~%%?-˥VZ=mNa굥@^<3N˜][ ;=_(WoP-d"Ɗ-ȴPrnUۦS-S[ 嵖2l3I[NgOig>ϝvqNU)]%&o|F< bMv~ G{ŲYWE}t:3L41q+s!1}jeEb҅Z7@wR\WӥsFk".JqkRIi++uv>g)&]{2w!*/`-))rO?˭w[ 0iK]݋iˠw^imVfھ{S[ JXob~g,Юy+&Hw((Q(? -a/d3G}N q=(޶DiqĽw|ɠF*\I^jyh(QلV?mJ#([ lZ\9F{;oFtݨ2oW oHo"!&R;Q4-EbSlQ|N*/j9s?2rzӶX:[emly΅| o'ٮ6fЮOaUA{7cjh}hYǦq|ƓpI\[rq܎q0Z~' za܎G@>ďEŽ̄%1q9-q{}ҸkwqiYA& C_1/I39>!`&^ s@L{j7f!ư_kiȝRkq'ݩҖ2yL_Xv5-iKa\ 4G\)je$?]Jm K/B+@?g7ގH*"v-_pr쉶Y6-s[ Ѯ0ZM}o2ڜN;lMY)]m&s>.GrrtҮb&b٬+ot:l}%/^qwvԣMuY'B{o\^.@)>ݣU֖k'alL8iw)j:*qko]Mծ_oZJ?)-zXj1~0kLH-L)T{[|髽z9(z:0DhSyb~y>.ד?9T{y+DAA2dO~b=CS{R&֒h\s"?A8,# .W.?uA6oyi;wW{dPqajK#Rcw i0zWLNэɦO`]⧗qsu z"sO![o; {;Qrqk<6h-Wngޅ/WqjZOa~mlaY`47V.]Z>==VvlעkA0Tp޽6ckWv%V )vZlZ\7[H'=f®C W1;?raqoՃ$?EgrƲuvkz^S#0"֕˗/7zni1߼Ovo[Jl\h{Ю俫mCs_vV%=#%c l5YwZ_H+Bz$?Vi8?8,ד-: 3H^[Y][C>WM'Hi%B{ﮯ^^Qtb@Yڝ\7>2 K\]am݉z\N.NqD4d(}ʥq;0eDhU7@(qq;0eDh7β3+ XYY$Λ{-r|oܸfBZZ=Fz_{xȣO[{s>{oc%yǠ8g<7ooisMј6}cJ B>'P޻kk+C>-adhj:aptۖze=Ƚl1P:9BƴZKVq~b.qb(Qu/\|3yCxNU6@Dh+Ʈoi+^3C,uzvZLz aj`ako!!7}};EbĽ)v>p>f8zehŕL[S{{-+jo7ϸʵIuʤ䓐.9㭽{$p?Db;@v})d-8.67vodɏ# `V+lqnw*)B=Boʷq#+k9],P߲}s9EO+^ٝ)޾(%C0vAoXکwrI+D~w\J27o:Y8~%B{_^Y4ncoV0$|A{+Ľa专~,B޸7+/q)#N{^0n:Ɯοv~u˻{9$y]qƕn|joz4hͻ{?xDNh1NO;B{VEP.F]2canCcCuJe8kA?չq0OvԮ6aЮA 2t˚b=SrsI`DhYT%iZƘVNA F{[ZuNvKsĸܲi|5}t[l+܄8/[Vz*IiѬ '&qeA(ҞqǙs-uي$/̇C 8'ZxƽovbME){aKݮ3 ^`HhIXi!Q;EĽǢ4A{{C[ov=j|-W@7&N{on/xƽ{8;i[]W?ŽrN5[ՓWNvG{T :k] g#t7L1{Ƃ6_i e]z+臭 `zv+ i tU_Ήmfo6S gZ Ѯ]{;Z7K{K+z(ߞjѷ+{3J]_ <'!XR2ǔ0in0g 0`>8~ee܎Lq{mҠ y7ढ&\]ѯ?7tѴ98dj{o0e:wDkR^} uB7 q{t pۜ3f͊ɭ$\q{}{%ԩVhÐ&s>p̄ bQqF۬ >SMoyPwCs[:guUJz]F^#`~k3A_l4紜=~~ػ-'8WDJ\決\+M^bWH[OWwe#F{f8Y? zd3nKף-Tmi9~HCjy]HuW3}GHqEFy =1, [(m."і\VkI@ksI3]4^ܬ_{z+LAжŽm ډޣx /_8QdMkUR7/Z|,yK -Z"d|OD8G?,'oX*h\RObՊo9Ujg(qRZԴ^UOn]sVe|D-ծ8D=c،A Ay<6Cik#jf= A\SF^)=9n8}v`ʈkOq)#2}7@q ĽˆΌq)#B{]^8n~qʥq;0eim7@ 1{ʸ2"ݍq;0eDiKkho0"ƥ+v`ʈho0e7@(Q{ewcm܎L{oc|oP"79$J{_V1X:u뤴R+f-'U2vؤ3xyI>iRV{8!X 9r84|h-тP<eʐR.ԫ:?Apo<=7.z;2胢~=1A|+YTj5pwuTMj$oՁX:ժZn3s$80wph=ws 龑]|h{zIb _QL͜^%*.nJ]o5Wd2 R{D<~>K'#Ca.|QCR=݆Gui͢" ;KG?Q{%)Qv2ePZl|+-^Y]9={=0 l $ 4-Ńw&ٵORY9+\q+}hG|]rIf { z?!-Iu#K[^^eU3 *Zd K{[DUPOG LEWfiK\.ɷ۲vևi`xBzl'B{lko)mI d[u6/Lg*J[]Rl[u" =V"ZDX.91Rܥ\1eZ @{r;a2!'>Dho0sN W{_sG򽵼n )+h!ۯ6\ꟈ贷!o׃q}/V!'hfGj|*MabYK _;Ͽqt krO9qv}s; we&!;B{'މ%hJ cay$9W!L&[ꗫ]) @e?y1 M+bv֔+_zioYAoYHؗK~D|TOЧ*{8 I' Ɣ1M\ d?'-B8 `4FC& 7h@{7h{ho@bq;0eioiq;0eDjv`ʈhoP2wy {&9'aDj-aDh$:ah1H\{gy-Iiq^ԺX:u,qzZPE)n{ vǔ 0Dh{iIDi; _"!W)#Vo=3_MJrԁH˪&Tެ9ii$-H{k^܌闓' }e6ײ86} <޻须sLO𽣸:G_*-jNR/JJ'v?#J+I?A h!-pN:4P i?C[o'p2f㉺wtLq 0"ʞ9zЏve.u2_,O11!M<T{OSRQ=Ą>^EM%mXz!\Cv%\ 7 UM/韶9ex\/z~![ܾʸk8~.QTa =c!B{n嵷r|WsMz}9G=?~4\>^{Kz['Y J(hJZl3߲ܿW2|-$䴷&}xTL;򸻐d[ v%yi䉱NH֙{6B/xJR:oT] DgG޼lhoMQYr+)S{vE诽xg^`޸W|BۀBzfoT؂w6%QU{H?ivGWvi]~(w'˒a\XdzpDܩ+jo)mI q292Zψڷ1DZjIy 6w|IiIٟ77;ZF4j1o/]JųɟB?CZ>>#0#J˝vE,\^5yo)LVW麥ؑ1i?u.z:V#e>7y!@QRK\rkl @zUt3'L{[vEQ{Kr!KƃE;aL%uh7syq 0bwYKa&XN`jI޷f>HfO0vPHye܎cf͉d ޿M%B{m\>@{X>B{{/B/lq)#J{ L__>$ H& F@{/n@{}qpku܎Lqq͕q;0eiv`ʈ{Ľ‰{ĽA{8}{Nˆ|77;-|}_[xKy`H}D|]٧>x+=]wҊ޹~u]uX:9)-Fy 0joW[mݑon祅{)rK oyiMqP˄>گdjGXjtr+ I.o;tS,[jjī`}C$F{]Iw {:s'anIUHb]xKCoHxZw^=w%_ӭQPO*U޹ xo^{CaֿoLw;.$x_%)u?zJ8=|BRJ>G7vv]A{gN*tRVk)`jD6,uf;Qo:f~ mxzՐxO|ƽz:;3ӹ^[{'J8&x7xx" -lNd5Buo{B}ݐIL': ''ao0޹Hu&U {j4ĭho#켰` ƚJE{).^%흧 ]JkDQ+Wt?-{Kz ߄G{kz9&{^Jp;V{5=ӽr=ZG{wEl7 ](ʛFMEgmwjv9m{GiA5#FEy b Y1r≮wcֵ`0K"U 4* L{ p-?S 77|oI{[ߔ"#3[~ѦշtkoU?5N`_+P{jyΓHoCs*G)|4ޯٵtZg&ޚW3lv J%$Yksκڻ{ '.?YcPqBy FlA7@ȴ{Khop"yE%#s `4F`4F`4iq;0eDhC7@ ho|m7@hov`@{}Z^~;4*VkcqܾLx;˛+̓wi"T{=k+L A~v/7wWoTw>#խ޵vugG>ֿOO?s䃇\=XYۻ^>>بn_^[~~?Soܽ\ܒw??^x~n<]]KgY gN]83.=u3;~XgIKgO-KM$&^<{ϝO_<̅ϗJo;v*yܩm-'$u= ]k;3O%~@Z&|aOi'Jƒg;};Xg',OcT۞cfKB챮IcTY[,qՠUߝx4z?%mgu,SWsb>1, t JoViOģ?3O|9O=g'?z>ؙ'=>3O>VgO<^J쉳)ҩ'KLOmgլ ;5}ҩ'u&>D{a㥧,=SO;;HD?q>SBΟ~kZ"-:%Յ9Li>q1YD䴕َ.JWȡO XRrDrLZ뚾|;v3+άO>v|ncsW.T6.6/5wVߨlG endstream endobj 64 0 obj <>>> /BBox [0 0 2158 1077] /Group <> /Filter /FlateDecode /Length 216>> stream xŒKn1 >/G XMPlR!?=r&sUԓ9R LM ǑKO҂CYV 9Ӥmi.3 GxAMcx t բ^4JIܫ<[Z⣽SzI/td*?97°qb sn fڕ3 endstream endobj 65 0 obj <> /XObject <>>> /BBox [0 0 2158 1077] /Group <> /Filter /FlateDecode /Length 270>> stream xuNC1 w?g#un+hjy "2l''vΠ&gr'33m\uyY ܿ\ ޜ'HV6Z^^p|L{VOҿƏ`W.En5+I2Ǹ:Eg)7QVB0YO&9g%;AŋJЩbD;dugɘ)laQ>>> /BBox [0 0 2152 63] /Group <> /Filter /FlateDecode /Length 381>> stream x;n\1 E{uaH^~WiAbvM<~$EBґ%2ni4 }N^ t a /Kik_:x{Z@O?A52Ɍ޾q.^It|.Rņa$z;IE\CvwxEPئTF\t^>nCe)#So6t CO!p9F`s%v5FYj6{8U5M!JH$Fwvo̹v`絩-vyY o2(7p4|Tsyxޟ<p^w+o=jъ> /StructParent 100027>> endobj 68 0 obj <> /StructParent 100028>> endobj 69 0 obj <> /StructParent 100029>> endobj 70 0 obj <> /StructParent 100030>> endobj 71 0 obj <> /StructParent 100031>> endobj 72 0 obj <> /StructParent 100032>> endobj 73 0 obj <> /StructParent 100033>> endobj 74 0 obj <> /StructParent 100034>> endobj 75 0 obj <> endobj 76 0 obj <> /StructParent 100036>> endobj 77 0 obj <> stream x\MdqX,(_bȁU}PKn~=#و70x՗dΩg݂㿣UI_tݎohQUmx,ň l\v?oOǟoajݢ-U+eB$o}[:?z VVo7!ţioRj~P@*{-*bsW({^kbrũ7$B=dKjRt2*6DP  kA( a@J%. ÁabͫD,$Z4uV5r&(\tR FJk4Ji R"uxA$4-CRULS;а @{@P+Za (Υ8M@4jrEX*6ڰM}H۟kAcN w1>lG__߽ǣͷ_n^߷~֗BgPhŨX{!ģjk5!n F(v[V@izSD~8N(~Ǩ~VVi?UVX+3lV+*P+Zş7~ [|íQ@tSWGS*%%u|l蒽glthN|CƽIhłľ@ D2LJܑ1w> w@.?L:>ϵߠH} O%lĶbSɭŠ_VܻzPZ (a쉹g5(֞L{0ߵ~ SK M!ەVk;q.N:dßSḣaMK[wl .+NJֳܒM?iar fO]O*Y>ܣ6mMrna{nqzB]w~vSȿ ^/}~9NlYmxIRތ~kh 3 P81[lݛ)ֻzzg#m?7YXғ^r?~vd=Nԕls埍qRtS׊Oeq;Îly2F$,˜?E&䫇јJt ]И&&TiZq ^{ޢd _~u8wy-;eQOMR ɲ蠺9Gy3*,؝/Z 9 ?g + A1z z %XA2)L+lR{XdCZ1Ei!k"w )kF 1usaCw_UP^PEԉtH: AUkQvZС .Ff؇ Q, ت}zk2r%|G|`<+0*䂾Y$.2aҵTRS[N!j(lnc 9n;X5ߛ2e|>e@8L5BzW QA73cidU7t r;˵%PGT3Y0!B4AKQ+JIXm]HKUTDU5j") UĥHDV߯Lkb3Pr_[rҸť\\s}= _[(^8{l1\:2cub[R}},Xc=2Z̎1^pe.5J'pV&2] $c,ѱQ_&p\3XxdF'q-[Nյ#ˆƧ[vcUCKB9Lst]ql#ǻiyS0H;1y@ )s0 1ٗG<m>k2?lC.ct`9\2CoKVUb(։cKN{e{e׿׿׿׿׿׿ߞ8`w ? _alrVl1ȿ#1ǛAAk~Ke4> RGAAWP o2k~Z*֕y%m(V{8n{(UYH 0b0>B?(& ]wGhB5ww,,>~WA9r!=|(@w""L_Hw+ã#!=)ԡᇹ&K"RɈɟmLV\hԱ5t6҅9l  7=OT&lB"@ݼMԍĀDc(q 2`~ ?A4xfl[~$T KԩKW aq'6 j+'N[bʞE`Ld ٍK/~1 <(/9AvWsl#ˆ+ FKrx4H,.~"d 9ovKG5Td#߈޶*{w/mYB{Kd=a@Po|sdOTXer= į kkT}=C[M ۮ;_ք̆kc֘'@-ںwDa>ed~32(L5Uv LN@V|J5<>3 6ؐJɧXdɅ ෋#V_XaD|p%\(]'TS"]c̰޺'Qb2\\Ȭur@LKZcPUC(n-P!<ҫJ!PFn3_1+NtB TH RXъ4JxEnyQޕls{ Zyw"<{m Wi~#= )V:f~' eBUp}ic~^BQDv-c~dQ'ldQ|rg I}atɐO(?On8{;c  K@X1iRH[X̠8e#jv3ƖW}&nP -Np6ޗKJhԅφzr!Ml7 x}gnYwR_875`(YZ^|ÆW tw\ mo 4.0nި ܴ1!`bUNqIa ZCʾ%@Zm^ jD>ߴx"837|[8~Zsjl>KկN OvIb2|F:| w-gMw, FaH/Zbd\R󭗦؋>#+i &`1eD60+7$챒gMT% - v7QCm<}lW3Bؑd~SϱzPPQ6L M9Ӹ3qL%8OCnhYd`%U{ЪkKlRr^wJ;Gԡt謢;wx6HN0 cL.V͆/6<2_fUkNcyĀ2oϛ, !џ%]}yd,B?H;bDcUܢztzR(Л6Fr @Y=qO,jlk{*7XzO0&5p_ϾƧl GH< 1Q 0>M'yR6&^C#+6$u%lshڢOgR]Ћzx6>R zskz~:'OS3H]iqav9(жߥm F8T焪Gm\YH料1c?*˕\=0 FZ.uJ$Rh.KJ6)bq$LB,F@J$=_vnvGW'6,ٲY.V(%Nwz^MHf)3x7'R,%%/lSkJjޜJf_@'1Y-А;3!FtZՂR6m*Am-;O_xk+M0ҫSFZLqF|I`7Ћ8qGX~zH7K${!vu,&i8.ܪ-GYSu݅9u1H9迍>MO GaӾHPsxm%pOYN|~̤G1̙;[H$J5A:]:_ސ.yoN׺) 3_"RvHxcw2SS9ܥ>k;_RsׇI3ӎSz^$lH QOO)a5s1O^(<ksyu,xw=OridO<`L$} m3މQ/㇑횴4 }{MǾ$ۃHӟ9VNM sCg~'x5ɥ0á;gπ?!/ wzwǻ|qǃ7a3>"z}~%C|z%y|Bg$rDb"^$wxʘ;Mk @?(DK]s𧫝 ShdBҚyznwb^FqZE|ڱxM$kf~D|* Yx駇ڟα d5*y\sa_P8\5aKR';QZ j=pZ&ҨAK7%4X4!R[3dZk>貸|F#m6hn6@饳hf@l> ڲƶM'J "9 S|7( q&."'7')#_f6F# Mi9U2̙ݏ#(H >ih~|˾N1bVIj ;=GtҖ3}G ^-x1e#P9$/SNx0Š4p$!f2 E|sěr< N%Ƹ.](e+LZDžE.~y05syhm+>kNeNŸ7;M9|?c endstream endobj 79 0 obj <>>> /BBox [0 0 2158 330] /Group <> /Filter /FlateDecode /Length 220>> stream xőKN1 >/P? .K( ̈};?@iJ Խ)* ȸ72jԫ"cj ~ r%6lNf*JJ!y!~Qo?“gt,J)nJ(!7l`a1B~> /XObject <>>> /BBox [0 0 2158 330] /Group <> /Filter /FlateDecode /Length 276>> stream xmQNCA +\#}HC}H@ /}xHh ώey! YU'XZ+t_Q1eFdGy* j3 ~X@&FϢDyba0x#O"* hIyB0еc[8r5/l)"a']Qx] V7~s+7o׹ӿ~Nm(Lt c?>l endstream endobj 82 0 obj <>>> /BBox [0 0 2158 793] /Group <> /Filter /FlateDecode /Length 471>> stream xm;n\1 E{u3V: qd@@2{InI<׋J SajgcWX?< WL%h 8$p bJ4 Ɓ:t+1K$8m];q*M:H@ #^H !\9nM} h8H CpkzVÈQ}`xJIiQc$#w=Z)ֵ?5)Hd+<{CbCIJ``۶ԔZv5EK#Dn_W"hMa*gۓܧC Mڐj!dv(>&Mk6T zܚ,3a:]KxյWultdɖqNY#{\}oG^ endstream endobj 83 0 obj <>>> /BBox [0 0 2152 63] /Group <> /Filter /FlateDecode /Length 383>> stream x=n1 {uev`n; )>E,6L}wb33m:AJۂƗ-^ E*TJ^"N:a/ۜN}=/viHUkRz1<فлw*MDe%aF0vuyjy)|]-KެIŞӓӣ)m,C&n[QRVnm@D<I<#\=BFo^E-:퀡)LQ5Jlnf^2b\ic8<slX!ӻX6cQ~[t8[&`]]xp%! endstream endobj 84 0 obj <>>> /BBox [0 0 2158 1493] /Group <> /Filter /FlateDecode /Length 215>> stream xR;nC1 u ] ~dNh$(m&$yjU=3:R5.xar2/Z?u,ߑ\ JiRup'33M<7Jk~2D(zhx t1 '8SPDn^הDV[L-p57ߢIOLn2ɜ;kI%y64 endstream endobj 85 0 obj <> /XObject <>>> /BBox [0 0 2158 1493] /Group <> /Filter /FlateDecode /Length 274>> stream xuNC1 w?gΎ+.C *N+ڃ?ėɤYYD5o)ɻ|ۭapk4?HhoO7r mh5UkgdpfSdC*n \҅%e96Gg!Bإ'>NJ%t'dYbrRIs >*e ~Ö4X2ۧ{n endstream endobj 86 0 obj <>>> /BBox [0 0 2152 63] /Group <> /Filter /FlateDecode /Length 381>> stream x=n1 {uev`n; )>E,6L}ub33m:)mAm&Oυ"9U&}=NetgbT%8Kef7?p4zJ\v0#zPXA#%AawI8)Y5\h qA!gE{V['}|g`()á{0F(),y2G͹ z`b=,ZtC1Kn?bj.!Q3>2̼>øqx4,Hб[;wϱpoMby}D?_8qM.Ļ""vEM endstream endobj 87 0 obj <> /StructParent 100037>> endobj 88 0 obj <> endobj 89 0 obj <> /StructParent 100039>> endobj 90 0 obj <> endobj 91 0 obj <> /StructParent 100041>> endobj 92 0 obj <> /StructParent 100042>> endobj 93 0 obj <> endobj 94 0 obj <> /StructParent 100044>> endobj 95 0 obj <> /StructParent 100045>> endobj 96 0 obj <> /StructParent 100046>> endobj 97 0 obj <> stream x}[dq{)$@wόֶw-acCڧ/x ʚey+oUHxoZBǗ?iPU-KvjrT8H/zIƚUk|sMM+QC͂NwW?wyWV#Ut//9uj(NSxp*!Ƙ_RJKr|詮o/)S 6~tqA+e*)s HlFQ̡5$!\*snJ&t1ǐ4oS/f JnbBb΁btKhd5(&9TʚdkD NZ [!GBEC"Iާ!TuPI!F:8"mBx'[qc$ YbCd 4 cK¤)Ԛ8ҡ c*4R~2/4C KwW7ow_wWo?7\ݿ|w_s_ߍ%+P. $kf=4y/27t|eǗƘ$F~m|P!Q>(J%C1ǘJ (1Ff0#E;}{ ~ udRA[jzF@n$V*W[@!qKJN7Є+A+v*%̹+KAE4TnY$ II@-g b T.pM \z : I*+80rIJNj\ЙRŻ)$MTSmLB`&kOCBȔQJn&\b$S|qܔy$f B(bΊNu~d?rzk QʅήR(&Vf@Kac`u DjKpF"%\C.UK(LSX.HڬAj,Md QRuƒ%hT-.Hv  "́$PLٙ}ΡssCHUG|G.u< ^>{IpkCPe`>`\(- T(8-5DP 4WVQ8j-H  &e%gPҩ-d [.V_2d$?*)Xs5]%Ajxg?:_-ذ:r1d2cdG=D0|Bע鎜S >NuP4ۻxT.[LIeZ}=yjXφoґ";NKzZP[fH6QlYYYYѶ:۷H)\SW5@oͶ-rS"W`MR+޶@?X BdT¶Y-\-ƒc#*" ֊4_HԠNAr(D%>KXfNE]jz . QcFefȓBvȰoE9Q((X E9*L P!kP wO!s&E bvP`WCz Z BE"AD8@ctwZMI 1S$-хDU%$HKQ\89¹D6%9TA ƥsK@ =\0 $]O[ﮍmH} lppLژr6d` ~ ~*ɛ֧7|Ľx4:2t.ݠN8991:NsؚpTߡsgzIieZ9mǘrjz!3ގ=T ;`XvA9Chi..Bc ;zg<4x. W][__6+[=<ڶ$̜gH?"NKi[[>;SXv}m5þ6w=?9bڜlf(rݑHN3[][jy*oÐ˦hU1F6ĵܢ5VQ(f-hUT. bd2N')S2kaI%fR `c>Ojt2cQR@IBSX)R1#1׈&4 THSV^lIl2@Zs.2h _!F5ZP&UK`( P!FIdv&E*HpB(̰b QU/ %S "V"1IX,Ԭ%_%H)fy"7yZ9-o֜ m&= EԣTVӥTa{N'S~[R==pVةũ٭li%t=QoVzh}3W0}.&U>ƗSM2o1a#L]cc T>z<`AqJ<{@U#ھac7`cbxHԽNݻcţSKv إ--ȥi/譝ŭfp|g۞=:sHGRHS.̯z5zUWEB&u-aB aU"BK7jI5f$r.Z%R=kp0ǡ'B0H40-R.JP)Zt1{Q^۷ Ş)Fv|B3@;6gs1FJȭ3Uƚ/&g4վ.s,\ lRj10IZmjBZfӢb‡kO-M4`-cN,W±<(UjSs#]\RNV$Qah-^je_EYLX hdWl{%Fl)p{EG5b,$q{j1T4W1SsL&ئZv³Pr $3}ӡ4ZG]ڴ&]mmc/6Tbq{k+j1l%6vnY!Ara/lK\V^/B lcfg|+s(y6/2w`^EmӠ1s$*R"*Q6ԩ)3 <ěH~T#MT:'X/ɦ7953{j6H#[yfQIJ@+RJٜ2]Dx"DOܪ#"A΄_ߌ߰KO (q2u:!̶GTb( ڧD.x5B;45\\;&J[!T[GLg((?Zo4&O3o冀i50lS)Җ`:pм~Rހx!ː'W[y4S*ck9:] lwO~|%ͺ^rEQm:9Z/eq K:n0-l1쾼6S[魁991u=} ve$[ Tc̥rjsB˷֯D<:lwq1'\׺IqS*-k|Vt}1W RAęnF F bKVNM) #s#pk86ldS߯/TLi\.j!%#^Ш!&P$*D[c+i#f4R;^/%@&.+5uu j)gσ| SvC1RVRvlXj¶w㻘S hlikP4+#Qc.G#EN(M %Rˉzƅ)oԬ.Cb]ۋ33!kT0ֻf,|׀;2rD\l]ƥS5+ܧCzE;q_zgx?? 8`|`La7U&cJ'7[Èx!s'Q0$ɨo &RFp=*דbps*]v PCBx0H \jF\![g) ۆ_mT.M { FaiCg%x5Pk洌}bsmi,jڂB1BN^9JqVS`FnPEĘkRbJp^-a/, Z*GuD&"Zc S5b!45qCsCN(@@92eˈϡԊ=473@$rhTIv Ԧ͹fYtoν_#ZKZ ZJ6d}# $aki<@75aL%h`ikFe'.P4g,g;Ն{4)~א 2bp߲I\cĝ>avfqVr j?+ 1l'#Pm[|bs f)5fG6Dխv-Y%;&eդv3$KL ^&zʱhUYdʂFuk W4hڱ/H8,"֙s+wpgxS|{ۖϷzڙ^4Maje]+~j,^XDU\*eQ./щZ\~;ꎿeuƁ(jwpؤg2튣ŨNjg}vՏC?n:a~kĊ`bvOZy\^b,<ت5|kV_>X6ːy?w\?t{auu}vigU'{{ĥ#ͣ^oFs|}Ko[;2>OmOy w)r4{nDũxw 0?y?{~6.iUSDm¢@MjjX$a\ƢYB- o^: XQU9jV(W%^#B6<j:*԰'ƭWP+X/eP hI{iPC h PUj:*ԨS Y 5㢫5QUzmS: ԊѸ׃^)^6VaVvѮ2Yqdj(뤖Wj WKGMVX[#i+3YjlN:ZŚYbVf۩[ܘa6mPVq֬9US^VUhUkՙŴ֜lk&)ޜfkr9ȳrmyEk\Y d^+Ak//͎kV]}Wm|i5wp ϏVq&1)ŖtD0½̫E:ߔc~*j HJAZf-Imҋjw(`\zh/i%xpc[Âf7Rb;:?{Q`>lǕݻ@Ox|L#wo)JM}y*oi0mhD"6fT.Mg>#N9r#t .tYmkP*0DRZ;;7X-iȣ9'Pc}|Mi?Eb"pu2|{ua6*&{dCbgzO'me^\4^sqiEe.,q9Y.]ZVҕoؖ'f$ӳ\F]>Rӝ=0)[9#:6?{cͯ4Ț9 7csh#knPIᗸ٢C:YJ2F>-6ʚ:$5u-n]dz)qss+f~fP[8Hp7k rܒāŋCY^AkP}v3wa6kNha:%eķ18TPZjshKN5oZ&㐞aB5ÎZPU;L}l Ǽ)8]v*GZ0?m!i9ycڟ/N}&sִ}ۦYpyӑ/5sg_ xLϔLϔLϔLS/k"w>/O'~D|_>/O'~D|_>/O'~D|_>/]/q.$G>;TQcf`%)jG)G΁Zkb GюQ__pr.Hb^4öm60eG/9ĒK)[jTHmz"L*+HdoR} AT ^ӻ4@FDC  ,,wf":_/McH&:V7^)XxvYԎO,Ubr0>MiO^\I`쮴c4+HpIhE]eRА^I}SjQc vrbjh_e tW4S lCYe6IlqBn?f;ߊ3 k|m$-yw\}DŽܷsq_}1~w;6i^=皮Q(V4n'DE%i@<(f\'Q b΁ qPL* }/,& UD`LSИ(&Tz]xLr$d.D&KɢO/ݘLcAу9Gs:[L_ɍa3ndC2Iqc39otC;ɩr39o$g"YԷw,cÌkW<0;y>0.GFߨ)f=8B _ oDJ NэJ-bQEŵkyE@M{_ D`~1>Y_8ȕ|o`4W1"F|7 o|K6lށcP?:&UNݗL/{77 uB 6^ }rpF?l=z-H>7{iKa/!Y-D!a@ݨ<#qHeѯV.&VT=hP?GQp5H,;7/*u9Y{KM ;=g|Z 煏 \ŧ=e;xҽ'6.@Ӵ8fv$}'i }K[ AFMJ-1M,/[t6[%lu,-NON_nj//.:FHdd=;'QF46$XwrxT% 砇8 eK}='_aݤ`C) n|/-teSIim>ɃdM.`valy%N!!D 9qH}B'آ$ _ɳ쿦6tidpb7PS@:< @[@:e1jj ˃6t*`M#f&;@[@::jHwdt-n|tTQ!k2U3y4d>~ĥЯmg4 _UW*!ה -P IJ ~;*+ν\,l2.=JB6 Ic14KWw@pWZfUf1- ]w`  X&ewXx LVխ^?p,8;8kF X/@INȕnFjV@jq&G0 kWMPWQo0صF{aT!@'0讁U~tj'S&Uˏa]]WV.ߺ؅[e"+w l3ؠ\6< d plCޤ76 d2xw a:8x#`9LJ4c?-QۉB(i'2@F{Q'tw~ զETt6fɕ7>a l7ؙ3fw8J?~0 ӺJA?ӯ\xX0ˇθ) |B#(n9T[>pOp[JvӦʁgi>=ߐ6=J>Q;ieV3W?s3W?s3W?s3WrOiq iz4=A MO'H iz4=A MO'H iz4=A MO'H Ę|/(aQn(M4n ԰T=1v;!P GۡETaǴ"VrgEj:љp*kZL!VCY7-n ȉ"*(jNkיiQ\Eu>48i^&rp@EKnh A9]85@!x(m56E`*6OjGyT8ݐy5l0Or|4PayoD4*޹iT0=ژ<-ODyt!`-<"gp<0(;&y'PNGiC|re7,-c0v+7p=Kg8zqG'7 =pG )OЌ.HfDy4h*&YQ|4T>;Ϡ|^e?M8z$?{̰9}c{>#/tYn7#t"| 5B >fL#+\I/@|x&?|ȯ- Ζ]H%?8uէvQJcʯzTRC3rcqFl-  Z?2p'~ Ĩ~9 hv`Tm}}rIÝ[\5;o(1 {n~@gl}MM)vݰ&fq{.uY- y9 xnUӣzk14 o>=7}qܿ|i/_F;{0hY2쾹UNp˷$rvϾIn#>"ÌLߥqjhܣ^ݰd6=]96} s!&3?T+ S-/G_P3:ܖ ?'ܡ~jzm9iOueS弐H88 1]F8nߒ4+g}}y[/Ч>X ރtfYzd>X={'s5ޜy@,4锇| )J<㌔}˗\84\@Yw;ŭo uF/D{w{3WY0=nn|fDOD%tK=~_pT ^ 2q 2J&^ 2q:ăbBLШ70A\â2+0A95!m DA8^JKhn  P`F.mے_ 2 v4Z&+(|${# &8x0A h#X] M1ǀ o K;h Y;:xңN./p9aِfm74Ag>Mk[q'|g z'[pW6på8AυNПopnK| 'D endstream endobj 99 0 obj <>>> /BBox [0 0 2158 122] /Group <> /Filter /FlateDecode /Length 223>> stream xőKnB1 E^7_Yc: T_B9Ü8TFU; z3x6= O LN;".'Rqt!#zڹĸ̢ dڎ{|# Q/Oj46mJ渽Y\=PDt/6r*Gg2ypk%<>yGq.3]bM7I~?ҕ endstream endobj 100 0 obj <> /XObject <>>> /BBox [0 0 2158 122] /Group <> /Filter /FlateDecode /Length 282>> stream xmRNA +\##N#EJ %JNmaXkόܔt$$Mlf&b?5|v&C{~<ө]G۶sSĠ tjx#x-ҥٌ]::qftZ(Opr"+QT*5p@ѾAXS X=L:8JUcn9*F(v%u7 \ó&wvd[(taqa"kp>3|Ƚښ ~x'j݆ɲ]ļ1m/o> endstream endobj 101 0 obj <> stream x%gTo{w{lnv7͚[D`zg*Sއޫ&%&*( T=~U2.?FbQ>>>n8H4R" NDKx#gLt&zzuvڌOZQZPΝgѮ7:s wAnyϽ۳ڊ +OTt4rnݍZLO #p@Ǒ8 F㨔x:Ig&tɆ $#iNePir3rBV($2 j {߶N-<_8s⫯> *J3t^ʗ @pLn4T#IdR.&)d&NAQ/DðTDŒ)^^ FBFxc04$ƒXNJe_-)4RϪlyxsĢ$ !c xDG %c1)o~>{#__|GCCjA^X PD$a8GĠQ`XzB0p.S1Vf* &kF^@LSմd4< b%,K%HbT$cF.>_ ߭NjA{[C]H4&ֺHN+UD}c|g`냵C7溯=Mi/Ս+xXA`[:jW. ޞr{v2ұsnciсGv=}q¨trE{|}n pћx/eshS%2SOuM[gV`e4x{qma]KFzGG<#DHhf,_;3ϷM7}oz7tppᦝ緶7o=on}sckkkTsb"R_f`ýÝkW [S/W/?9?:[z=GK=KK}o,=7 홟G-c54iY}qnOp[ˡ&J'v?>zp7:۵^8ښ?ژ=Z>Z6~usz9vm׬sN˜48?31>dؘY𰭥έG;+wov߿{v?o[ǻmpvvfzݴf]3Z5m6Mӊd.Z͋ SS#Mw4>lj|׶;s/wםo^mmmmmnZ;Yyv{͖cӾa]ٶletX6ټ4=0<6hD- t:߹oomn}ݶvκsokm{?^{jù^sl96W+U:6j2[SK#}/KotOד]>;MM7n5lnih,Y6W;˯6V^mnnXsgce{}yk͹Xul:VˎeaVl.3 扏x rϿnTߨ^W}fS'lUucپ\unnsuycŹ\_q8V+NDztfX&md[̛_N/=_lzLbL @ygŕ*K*oTV-L&Ͳb8+NӾXq/lvcl-mKEerb446dS%b4&Ǧq (jyq~yDC&42*%ҢbX-6f,b7&mqun:`5N^.={E@,G!d"#ʦyW J ˲ rK DP?(ݬ^3[, E܂uv23o3OΚg,c g3zo?*ȯ%`cQ@2g0Br bQN$de$'edHH@ߕPoO$kF_ΏM,O-MLƧM/?>st4<4bǓw/-kh(jӵk[ tW]U)O66%ԉjA1jB@~ /h*<ѐwdTTG=cMCF,OpDyEZ1_VKYz[e΍[E׋ ()1ōAx `02$ ca"S((B6f_Mˬ%k%"UGay *mq(YSPf,N5eg'd&gtIY B\ endstream endobj 102 0 obj <>>> /BBox [0 0 2158 2714] /Group <> /Filter /FlateDecode /Length 216>> stream xŒMnB1 >/8 XMPlxKUYf4 Ԫzft$3Q0fq K x NӐ|A)9M*qvdf;hEfQ"Q}[r =+/_ 8[G"Je_=勤Dn&qE[Zf麦ye>79I[_y78 endstream endobj 103 0 obj <> /XObject <>>> /BBox [0 0 2158 2714] /Group <> /Filter /FlateDecode /Length 272>> stream xmNA E{kuGJ4Я )(% Maϱ{6Nff8e 2ˁ.g[r9fkxINƑ7xA%N0OKԒӭί#9p5J4k-;#ɾɜEûrk(T #4Ih.ɳ 4ĒgP4t N.Yh$Y26rf"Q<EjISG^* &lwI}p'-Z*xyV| m endstream endobj 104 0 obj <>>> /BBox [0 0 2152 62] /Group <> /Filter /FlateDecode /Length 382>> stream x;n\1 E{uaty \;M0HbཉoTP:%s_i&V˔)LS2_d_:y{(O?J32L޾qCPNqf/M1l̪Xr5nhv V8"HiNHT[ )a+gfn=5=ZBgWKNRYbjLnvwnhd8!; ]A"=e tG.ajcp!uiIzeZIz? ghYKH^w KOI~l"Prl. M*. 7 endstream endobj 105 0 obj <> endobj 106 0 obj <> /StructParent 100047>> endobj 107 0 obj <> endobj 108 0 obj <> /StructParent 100049>> endobj 109 0 obj <> /StructParent 100050>> endobj 110 0 obj <> /StructParent 100051>> endobj 111 0 obj <> /StructParent 100052>> endobj 112 0 obj <> endobj 113 0 obj <> /StructParent 100054>> endobj 114 0 obj <> /StructParent 100055>> endobj 115 0 obj <> /StructParent 100056>> endobj 116 0 obj <> /StructParent 100057>> endobj 117 0 obj <> /StructParent 100058>> endobj 118 0 obj <> /StructParent 100059>> endobj 119 0 obj <> /StructParent 100060>> endobj 120 0 obj <> /StructParent 100061>> endobj 121 0 obj <> stream x}[e7nyE%рl7!$i`^3I0('H4~QϭIQ}^K]7RL\w+_&:ޮO?=QMj|͏,Z)z6I?OĩV7o| MqoJЅw,?SVZxx*<|iyQUM9gv\~j;inPNjSf>?qJx7h,..dW260 -e.^vM{jʥKN=wm$*heJIv-x0W4qORo_k"a29kԻɒ̼kKb%-.X>=$ҝ DVr o3m5B)gR:S/F0t)ԋjMZ4gyU0Z$mZ>UNd:$pf+TЖ龨MU_ȭLwW|S_|>~MS֖jvwSvFXKkoD$ okԖKK-jY:`*MڄY+-qTH/I/*ĕKVU @IRԁvʥZiURALxK.-h$RFg@j3@x5&.%`lJ.͠SK0VvN h\.\%otI+뀱v-iRBj}I4ul%@IZ]q2qDR719Te&SrmT[`H0ݖ[`\)aᖖqe*LHKTj9d[jҖkЂRS\me)ju4x+UDԾ"ɪjE(iC$*&T旒z%[RI-sVX0| :VȘ~BYIگ1dL fQ5",C`aRP{j,ƋJxPjx^QSq*U+AjMUA\ QU|EZ0*ཿ- Ц+Z%`dӧh`w =#YHEibHtvq-s "z%菷h^JT5 ȡSqXqqP[r ˔qr1N-zfWjG`m6X oo1X/_[{3TrQrR镮$lz% Wh+_=eQ&6tzҚYDZ  "L:\=aRdϬQʕ+z-wjLj ;"ac-g(e[s4 *LT%g3JB]/$X6<"7HR SH԰!h Z5lHJZTUŮ]Ix7HulL 0cPS锋%0&K+RIi֚ &_5Ilƣ. rj*<4s-=O[LA} ld 46^F%،J_Bj` ?| /ͅNn\7łܥ[A>=R[<;e5Ԟ[\ӪEurFt"cAaAY-k;Xa۰a; w#j0\~-D xnwAmF_z;x1Nz@G+[-OO-&/͉ ͳ Ϻ=z---ك*vn9b~mn7Eqo+|ݞZd !Jz5@oA ՂOG:9=k˭;0Y勇ZEʮP)bärf"x864Ȧh+nR 擜t`%\GV84J֌~̙.WҲ+aN9YVnj֭7́؋'TMJf$t_U\Q(M+2i6LIզp $;UcR.If!Hj岤V8yr{1b޿m)FcA MDXl WKЋ;~Kz1R5zq}ݲ^{ >>r}~^y$u 0a;$cvvjɭ:AfShTȡԧ>KB_`ڒ2"_%QKL0^>vdI+n7=).Gp5~Kv?͹;?XOq{wc[GA7Aܓ==[֛?[ԛ#˷tNl{-b< 8[=`/?٬<^pSN!JzTfm%LhoCf@S5n` &.EF&\nՄ91Tfgzu7T" :"~zjݻTO5aCOxC?'~GoL9QΩlEu_6$c16S3Z {MVͻƀX 9 ު@js7>dai@]){%{qSj>eϵ҆(`Vh7Ldf@VQ*C6V<4gw.}x2bteu 6?Vzolk)2Z`\!6`W}zC % :MM M.o݈7ܚ(SlQ Wy૝W\ p&cĖb@75#yq)ڠ'1B?Fnkҫ;n#zOJ/8-KlAi.̥5#l@ӟ(/ژ\-]#]KúpHl%':#3VKր]| zkr4'O :ޢ+i5Hb~ih:B/ k h\рF&W,6lesk!rvz7=E6N7'6k,JWէ3Ѳ4nE 3Xlv ȯFzK`MLC6F8 [wʵE 愵^+s<4<+|R:aq«G T~V "q7{K,8.S CYFo)ug?X9^n=aOJ֫]sy匓^qk2b p,^㖱]Cڒ(0ԯbe>1d=A!E^TBW <[3PlY"1ҞGLGEߵ8}X􆛷o.)D=kKo_GQqXǕqZ| TSx6 n :aj8:-rJ*}s*r a`⤻ymk;ZL.ܽd>x6]cl"枭WT@{p y{?{N`S3%%F^riQn+cE R1}&߆*RS=Z1}Vi~{Rc{q-]n5N]66flb oAvaK0-[ 71ٵdR8Q gCYד؝< ؚ=7Mf=9q8"Z|I#8oƎe`+pkdN᰷%(ǕҀ8ѷNmm%uQ j{<,fOÃޢֺ$]S쫖n#)|ݯM|q6*lT Q}q/c㫚Gß~#b&?L+lLɮ?{yO?cфv7[xG{Lʇ%gi2q g`\rƑ>g#"?g&9AyAl 7dُ9m8e(z`ҽ;3|]{ aT$x+ aQŏZC>g_6 6=x}ZS9-pV:G^0fv'{n/):pt&v6A-\#[DEq*:Q).c{38-8",%#Ҧ8lŋ8h-]ۭ =XN;:Feq;ma<&Q\%ja9sŢcO:tP BφqH7gaKFKf7&!+Ncp5}BT 1s{" )>FwT]TrӪ#3&-# Ɋ5j<ذ/WVv[?m@Š1bB*bP=j.a=c#LY<c}F@v4lUKk6ml CG:(g4QB45{{d%f&71 J8v-oX"&Woa+^HZoQ)bkfz !82ֈ%Q:duđ-ȯ6zqĠF>MĤzlj6!"L%F.ud{\p8hEJ]؊`sʽ8N njhkBOnIٳZlFXb>"kˌRt3Rt*A"|31W:D]Z#jL鷹Vނp5o[H(,#؝Jnk-=eᗨ#D o'#q6YL[9t2=vO2 ҘTY?`Hb qgέL–=MS:W31Y6FsǠ$DMtk>M4jg)t]R8{t- ROS5755*WgurԤ[؉q|]MF1 ELĵ }ҏ:#|s󸡠$ؐ2$Fw%*G;]+MY<>"ƴ0ĸbVFh0S곺 Fke0<^ p4똭 Rpx#32;?Nb#]=!#rj6_p94|MWwӱXeHvnE];fYUL ݑßnE5>"j)n2B)e9۸ YąB7>cE3MpPC;%4Oiu2 0* {|>_#Ȋ+ނu Wn1Dbd$Edg%wذ݈*"#3Qzb۰#?/p"lm9Lý;aH)5aЭ6_֦Mm{$~/nۗg0`0_+txXD@魨17"ش9W/lototz=D-Qy[H1j+T0>Yew3 a~䙌6|u16åH8B?H<'{wGLħp(9񇎰N"ہ4bZv2wȈk}-z=$rf Ԙh?>4DjuF ߗ,2xN ?fqSSyoPPR!A, frpP娺pzۃ6[uN>؏|ꃙv_n\GL^#oG~z!xi::`9O-N-yKӣ$E8j#]?ˎR]\{OO]}= 1F74W QZ\{֖3?_nݜqk('&Zd]=1NxȩB{:|V),Lu>#F07 ε~srz ;8`)F7ƳwJQȖ1'ռ&eFׄ\v7ghҪ:=Sou q~GBuE󏧥>;ZL^qY#oF#mFxa;=K|5֙?ۃc24yi! !j!"+nKoܰC~Tyqvœ؞[*TF^y۽Σd_ړTF^?'mdܥӗp{/V gc_ !?{,?bb9h\^0 5"͕f<_cSșDu@K-|48&k@5uI~Ӿ2%ᔹls3eI|/L| >|PLŹ" p8} ~Ϛ"kM@&$xN~4l5?`\9F͖TQOh>8^-v%4F@D~$D 9ȁq W/sycO(R>: {wk_꫏]"R{jeZ1?>g~~gQas<ؽ/P*{ۏ?c5+*N}Q0J!D AӒ.vxc~rʼNpѺm_D;KrWSUFCYSu=lޚ޿9|֙%lEM*)HE!SCJZN5n |@;B qpQ.(uHgglDbW3bgt:Sds8  Kdn/GVt+^GE2<:ΪQk/^eIE*w d=ظ8c.>\4d-_;xΟnaÃ?%o!>f^8=_ӌ!iXc ߙoЉ6kYVÏ tI9o=ޙ#O[6Xq68|][a>"=&RǢiҟI}_f䝣?͟q=6;k x؄k6`G J zL!Dyj jkq Y;| |itZ#R%  +yO5í! SBL^|[n< p‶yShN 06Z Z_-sPք?>OƿGp5m] ʊmLK3aVU{T~!7h&m+'%:JD~WSw掦Z~3cc-=;-dɄڋb6k(R[poy׉Q טBxt4 ^L{ '>۲ϵ%A&l[뼎*s~ȰQ_ΔR6Gh2]ԊM\Hk' y]YMoadd "C /C,X+t%E3@ESTX|Ý=/}cPyCB :Vtqr] x5$<j eǾ>_D_Bַ{Eޠ560q_E.U'^J i%50kq%s{:u܊J*Cmr d'ݗd))Iaz5zSt2πN"#Q&JRՑ'&lAlkj~$W:mnqX.BF }9PaM91Za*⌺* ՆzSqIg_J˿?nPtXc/I+LXI{+ J32wqˡJk#KF Zvyn5^hڊjxCᖛ(4 ijwRe.u:./vb\jw~ӻ٪)uTl7̎EPBUzYz0TɺJ^^ÝzbKk6Ujj(xpTG.9QjCHXмeQQ/z-%q.~pOy t% XE(㚊tRnN_]F=1T]7Gޢ܁)pIV$HZʸQl0lJSQApz(ЖgYz tV*Ee[Ԟ25Oń4$dRhe fIhq_U?(.볷qmE^e:Xn|,x" ®W*uL_ Pa@"f=TEMaqk`W~OrBAhfV!F^ F`.=ZQW/idu**0oi,? !ȍO7 6ч-^D_<;|mK .aEoRߗā`ha2\qahY:p5֦}mI@9mPmmwFoQ(m6 QޮZm,(J0G`87I^CcTVGd|@f!*6ϥ^'+3 fzZ@GA2~ԫ/xy%"etTj^*sQ!Ϻ[+Җ:#JZU*9J8@㯆 @Tiv@R*\M8 QvnXY6yCCEvWFA:y@ vԣXU.G!^^z'wW*oEU/NdT@U>$`>Ba[C(YF(-Yb}.J}jEA9^B8VSAErªgr"elk8cu7hԲC)[wgG(U}Vˣ5|"Ee`㊈{mؚ_֏Se4u–*j.4\z(rè `kF0TKhBiiW8gŒ^\SQ*^ ݋(wDQG e>>> /BBox [0 0 2158 759] /Group <> /Filter /FlateDecode /Length 223>> stream xő9n1 E{0ErNvc.&8NLBiQVCԆG|3 Ͽ =1Yh*E%,~K-'[ܽj+ ̘w  Oxu6tH endstream endobj 124 0 obj <> /XObject <>>> /BBox [0 0 2158 759] /Group <> /Filter /FlateDecode /Length 279>> stream xmjA }w&Mvpgc_ l!'sSŝ\zU<)uLߍTHeJ8౺DVZ,7ʯOj,vJ~>^۶}Qm endstream endobj 125 0 obj <>>> /BBox [0 0 2158 928] /Group <> /Filter /FlateDecode /Length 468>> stream xmKn[1 EZŠj[0d (d?@|̏x/g0L0a׋*p %” W؇U WsO{^ ɺMV鑆LTUV HWh#y?m%>UMrUq'@Ğn@,bˠ@9uUZ,%nfQىKDAPC'm$^Xs.o e-֥%;&ݤRԟ.]&O1q3m2i -;Cf7XHVlӯEb޷%jF]lje8iΣ9w2>R;V)YEk^Lrw4Վp:FhKsXڮo[mJ)ݝfyvǗ9{n endstream endobj 126 0 obj <>>> /BBox [0 0 2152 63] /Group <> /Filter /FlateDecode /Length 380>> stream x=n1 {uev`: )|5#Rni4 }|LNhr[e偮BQzU&۷}=ץe͗mNuc=/viHUԜ^0=J 0p4z 25"N;D;$v( w;K:ܘSRxj$%ToវMJ1dV) vF2m@̤ Haɓ9APѢǓvPr M?rj.!Q3>2̼04Q9Aapm=½Kn:zMljկ.7;Tv/  endstream endobj 127 0 obj <>>> /BBox [0 0 2158 77] /Group <> /Filter /FlateDecode /Length 209>> stream xő;n0 w#teJKU(UB۝1 PL$k LM IB2:@uߴYV7 (%I%22צ523čTttԆ[|#l ^^vc îe.ʺ$c4[MV:dfݱ(oܛ׈> /XObject <>>> /BBox [0 0 2158 77] /Group <> /Filter /FlateDecode /Length 271>> stream xuQNA kmo:i?AR$^DrH-<;׳ (I/dd|&w23IzK xl/1Po;J8 aO#fy%w#BI.yEfDAKS+w J3RAabJA1yaqT<)5 V;D418f=V ޓו'¤z{ Jj:dVٙ-֟c3 ?[Liͫh'/fl# endstream endobj 129 0 obj <>>> /BBox [0 0 2152 62] /Group <> /Filter /FlateDecode /Length 380>> stream x;n[A EYbx \;M $v! xR,=n)8s[0MBB̴选2nk:hߞ:yY_^~/Pe*X?z[0:͞6F}v{]Ґ$yGc p4ި42:t3r"\7( G(@ǥawjӛU#)93R’ӣ)X:78X2C"Mb4V"eI5J`7%܆ 1T’'#b#ۑ\BF>E-:mϡ6Lۿk.-?$fJ3oѰ#eǂp[wϾx-b2M_[so8qU"M!9 endstream endobj 130 0 obj <> /StructParent 100062>> endobj 131 0 obj <> /StructParent 100063>> endobj 132 0 obj <> endobj 133 0 obj <> /StructParent 100065>> endobj 134 0 obj <> endobj 135 0 obj <> /StructParent 100067>> endobj 136 0 obj <> endobj 137 0 obj <> /StructParent 100069>> endobj 138 0 obj <> endobj 139 0 obj <> /StructParent 100071>> endobj 140 0 obj <> endobj 141 0 obj <> stream x}ۮdl`(# A@uu<uPM8=c{coS/jFЖШ87ɸCfk Zקo_BTB)hҕPI%H׿/׿%+Sͽ7hC1t?|~W#.(/4]j?YW||c" .P&ͯa/_?/xW_|$ח|?~6D(Q(> wݿ>-? =]WR}c#}cS㯮 'TwC)Fはbd~S$yĘ~uGEK`JyGcL_Ęlexg-QF:Ƥo-k*7)~=xK5-ռЪIoOeWَmjt}%O=}#wOaĘSХWc|QJ"1fw+d/bDxK Jș D 5Kw' j_CKT5_{]~Z]!Fb{{Y|GYg4 ՘ʯʦ ʾ[W%T'N)?|;*d|,nGsl/f cf59ע[)O5?Y+?2͕?Bx~<r *Q-> X/Ȩ5+P) )JY HBpl!$i%e5D R֤xZCbV!C\BY *!aK\3yV5TQijViTV%T5.\JHK)-|e!4.j\Sh"%Q r $ҥUj25ᅕBb+Ǡ3.˂%SN4(1AtIK]_^Dab ͕K l YkH$ҖLS[:-H90G}yhIYrw!>2!ak>t'R> sTySq>;3贄϶b>/o >,?í|1w0Q}W]wZ}6;|93@w^BRP ذAd3iߝiߝiߝi:ZFS5UM]}B2]A+HIj=p߾ԐSNU䜪\XOܒ䫡-`{ QR.JbZHDm>,k+pO/w*Z]jz۵HZM*"ԁ&a$T!RWnI54UB"vQpmwHyJ<ٹc*ӥwi$۞ O/'u逻B悮QGS b,œr;lK8wrXm9Ӌ{Kez鿳׏6q1"ȇՌCGdN#1{i|v°4R=# >=M7p̥8pҥMKW݉㑤 gt|ti=-^-eWe|y{7ϧ g3gҏ̺3263=ο_vʻmžksq|ugku6U8B* hCCPaL*>Ț6ഐJX:+aBTҋBs2lLbŨb"xR\ypRaΕ- Me!{ ,D))$4 `;gD86-W vҘs+gԦr%l**\ Z1dX!KkRph *Tk0S(_,K-q{̘8Ԩr-W ʄ4SdĔcj]EҐ6a \[lͼ_sVUsfލpv-3j-=7Ժ淭-ß?Yn{eL,~V7uSa[S;8-m:ΟFyH!V,}~)]i3L7 (_gO0<z{~焕(2mI+QRڊg&ř(} ly:r"~AXbgm`gUGgvfs[?[^:ۊYs7_w \_^y㴯KtY~9x5vSZTZK6 <n?Z*4*Fʑ{mY a)q#d^^0H/iڂ5ܦ76~vZ%XVFU5\+Z.Piй͇vn6 f˫Z{,Ԡ}dc5?㘙#Uk}Ype(ETV %DKoXNLYꗡ4b Ok@\O9Ѵ1DyJI6+~O q$M8ks^iV=9[P"QFȕaHlh"ar'NŚfi:ʄȟӯ {( I2s5d*bkDb>_" xةb^wM R>KpF jhEz>]g\ e|ie|Yҟ5ka6نS)[׮.F5盗>E/^:YANrXZhJ|v&v˕>)%9oΫy颸Bz̿7l5첼vfw8#\!=Agku|N+'(h06mg՝psQ>KI`%J.*7N?j5*ZHTk[a 11U,N8VK'"wo 㬊H4c!cD5V?,f=49۹HE-07,0(%tJq)drf)B3 h#(z ȵ. { Iː\g^YM΂r26sd҈P^xrVLZ%Di: 4RdS$ijb ZyA̬!-t&nrH0IM!͉z32-sZŚG)0YfsW04j)wC#PLTRB\lja#د._gKl̜8Y%oUCBk_4bB e[f2/*95gq.!c>] }{ѠYp¯ЉD]9VG*2`UOh"XHvHMdEOu~1,QXcF⹭;dD&tNgzz:߽͛f~skxCsgͷh&0SCK>7>ⅺ`D/i.ܹl {Dv΃i,؈bYO;X5QxooQ E;v[HlbSIX [7,ޡH.PVvr~S {3aO0ѳ<~I+އ> O/>Gp >|"ʴmC$l5$3$(DvtLW3DcJؔ d1ӊn\|'v]*)rRS-M;s4>Oуp陾K龗A{=ֻݿ<-ߛGilJGx._>_I|k,.Xr.vv \?9#!xÀK]`q,9vgMǃ0wlFaiX~;"bFpʑN s+ZGxc|(4\rd+8F|%o_A\rD"+E9‘݄MMHLZR&Eq)ʱL8e6G o(G\Q8r1 UB,w6+LNQ*gE1`gz"Y_̑2ѕWyy+1 1vJse UCw9:ޕ`;vsF{ mq ncQ >E'Yyv3}" o*ΧƥaA|y.OOq;Χ|1-I}'wW}6w+rDѣgqk?bgnFfĻnFfĻnFfĻnFfĻnFfĻnFfĻxT0ixH5*@yj5P>HRV:IyAz#U gҫTdW3Wuҫi^/Uyb:O\Mi6ij?&{O'5y=C4'LW-n+=P %A O+HUjHmPvjWgX% RY|o>֏:os;\u<5RLeN> |.S8Dq';Q$`XK^͒Z|dɃN8<\K,y=Y }dC ;cɃl9_^!\/o'_ު[q|yَ/o)M=: HV¹H"'ٔe$QBͩdn2uZFb `6_eXx \KOi-aeڶ'qq@oIZ1=\e&l;) =y{<'e^vkӗ6l_ve9n3Mavfs9Cn3gsG`?{fsj;kv={qv8s34cz\ϻgͷD{~ohL{1e>kуYO>)8|2۵|N?$zʾi Jh4z g]`_0(\rH2`ym<ڕw|_ 7Ͱ{A:$cBˈRK_ .Jrz\Klp^3_F#_0Ks>I( ~:KDIDU=EǀW^/9ܩ}-}= d&7 ddֈ8dL jHI-ƘbZ;V 6엚SU,Da\a)@4ϵ &iu$C*u.$,z;\6FT[#dĐ)3؜![w]sJ˽j3sD;dBkCZ+05rMW\FXi1{ VA *!Fu~DEu;rjN;=1 ,-.MOS;yvmwΦf]^.o-Slٝݽtl|nhm;;,;Uã[]یΐ=ZG1zG l$\IpȔQ27߇B '80W3'7}dV8 {dTpjq2_ 鉓~G`*l+,9 zd3'#z"ߵ'^L$faѭQϾϾϾ쟽dJEQȻn.KRn.KRn.KRn.KRn.KRn.KR\J"J>0'DSȭObGM#obo* dk+v]XI!&eDUdjZ iW@/5&V9خ@AY3~2XrQ>?ZD|b#˖X ,1h@*qr8ckR˂}d2 E(M J!s44eI P08UkaG#+Ϻ3&  2 SoJLf/q܂үprao=/Ője) ny}']NZC\\6B<9Ꞵ$ۘIhe6C5lR[R(CIRfh찗 [Kvd =<<`'l]TWҫw\xMJst&.\o㾙>> px%$hv_`e$JaS~+c8^Sy0]y?ߝɼJO8U0Qv/=j%VޮEӧwpLnKE/n?NS{?8LWYCw9Ծ}.e~|57@˗õ'D}?h;ԉ>8ObdFMxbG~Xk>K?5}5^O/hK>Vc2M$kC`3vr@߳0k@CdY4:59z.?D-u0[|) )З*YoV(Vm _kdW|W9% eӃ'EQn b&MöWyPt=ܑV>iPANHtU/\](>xwK\ϒ3/FcD;Ja.ᇜ赫ԩw>.?0[]gODM~w|ʛ>Cr>uVNYdÍf;<=_n47o, #'˄?&{_?i/ʍ̎dѷ§?/>촓]<~Kyr=xcwf,f+{+}sPs5"V-oZaLz+3[-LYb6ܹ:Kue42ɼ L.# M*#*!ēAL'2! D/8UZXvWdYO2XP.<.$X4ZNY[$ϐ'dlp) 4bh6:qdN >ĘL@Zcc(ˣ3HPUALF &#c&[LF4J LFi<`2_&ͤ^|eplM u d7f2v5~[zl9wwųqsl>74B`2O*=ъNe$e^'*#ȞD(=QALe$ {27 }2'*#ȞQYSA32l8OĞAe%(`ѢDe3Q m)\3Ň.G9jTQߢsRύ2]ujwvȥeH]_ẄDp溙嘮;Z:.ꮋ[A<4޷/Fc'`5${$Xy2;k\!{Z&FzP~ S $ᘒFEC;kN1%;m׽k3E 'L6" )k?2@LRFA^R- HH3~6Ô8PNV|Z8Zic9 X`}Jlo>9H18,'gȴr:8CduPj_N v:(8_#uO T8 z`G-3 Zd)II‡Ԏ8>d?㏋``37FO z3o^Pl{i*LS8ޅe0L8·+br>G7S8wv G1")=K=,E:pÓ/Q:ocU൑ \_|C{D7 {&P)O։s*Ƀ;' K D=7 %C~"߀|G ~$ta+ʥY)rf}ril*ħ8]iv'mZ?}űo8]?ߵL?h]M?ľѣNvh¬{뻷{뻷{뻷{K (c*ʺn*ʺn*ʺn*ʺn*ʺn*ʺn*/LcXХNEvco:Yt$8|-~z߳}~{;o7r1MM?LOq'_b}5ȍdbts-ڀ\h뎣z9+x kfP[gky@U7$U7t^Bf~0]=`` N`s 7 gњ,Kٯ|[gq$zBZ~C AZl@vN\\[hh~ph8K#5{-c j n2j@V٘a&| jnHd٩ '=l>*q)TŃc {FA*8B6&lO/>`v6h7a\cad9:H1t>b {AC:YOnq~NPV\Yw)5%\zt*ytZee0i]_Ns^廎nϾך{!G?b1G=k?~ww}ww}ww}wnBߙlǰ8~Co }7~Co }7~Co }7︁,]MQ-rk}fuvI9EHKN-4 UR $A@֚+jÎWb1'\` w,`p0^7QGHDi(@E#@h{a* (JH'88jނ=4dMsNoRôI >00zUkwP'Hu<1:e׾B&<=1Ni Nn›)9 af$fi)y}ӏ&O82]TV d?X'mɿT/hLJ~ɸXfES,l 3Q<9{HD`Y{ 3`q%;Y9֜CtϱN<.7&CpeﵥﵥnYp_ Up phoY&`m h^6e^{οxE} |9،@H|]pD:eW]HHyc8^gO޹o}V/OPJw@28^0cr/=j%!ެono8 ZԦc/P WU V7v] Y]4q777\{űJzݔnoȨ¹] ;2) QJywSe#7d7C|77?}zݾۗ25wۑ}=[7}{eoGoLoY7{'WWowW\oݗa{¾^{̾־{{jU:/n.n`9xVUj)"V߭y^^nnq7-W1Oߐ[֧߭!{47ڞnoȞon-> 5\o60}tn_]Xouĕo57%h7w-ntIԩݥe !]w&w~9ùfch9븺˻gu+x>; Wg|\ݣ'[w\?]b?6;* : endstream endobj 143 0 obj <>>> /BBox [0 0 2158 804] /Group <> /Filter /FlateDecode /Length 222>> stream xő9n@ E{0M\Nir q#s [c!y|>^@eJjbTގ_( ~7~HOVR9aSi KBzpdM)XGwbF7NZJ<:pߗ8ғ endstream endobj 144 0 obj <> /XObject <>>> /BBox [0 0 2158 804] /Group <> /Filter /FlateDecode /Length 277>> stream xmQNCA +F>z@q (z/ mx-3T\&]`0~;ia'dV8`yw{\?;Q ?q;Ce6vK,8^JV_s g"rav"ҫv)Haj 30i^ڛ"b4SUgX!I CřulwrPuQQF*U,}_FUWx~f\ܼ~7ܼ ^l endstream endobj 145 0 obj <>>> /BBox [0 0 2158 981] /Group <> /Filter /FlateDecode /Length 473>> stream xmSn0 +x.V| &9lM((\^ɑ8CiChtp{QExap 8A~?W +@tPx*zV5,Jɢ}|” |{v P|6JN<%iF'fl@6#Wr趑Ilp4r4QG8trsKb TS5ؐY8E/TwQiCb{؈ ѸI7L(b9+Ah[紒>QzJ$a:ڣ\A͆V2Ԟ`]7]"cbFSIDåWcK!,mLb)F[׳m':oi&!(ز3UeS![#/%mH<1;ݱ=8wZԜ4x16nCӶ&ho9 endstream endobj 146 0 obj <>>> /BBox [0 0 2152 63] /Group <> /Filter /FlateDecode /Length 381>> stream x=n@ 9'p49"u; icH@Hץ҆i}LN amϷoOJo?^"Nu¶^5.ם=/viHU=@c8eAo'|RiB;h31DG7( 7>CS /Rxj$ghONș?1d<#")W|c`(e={ A`I5JRXd$qWFƜˠv^(hѣe!XԢ]p˴'\ރCɣf*}`s3󺫇q7hX Α-c+-һضc6M_p8qU`Sֻ!٭h endstream endobj 147 0 obj <> /StructParent 100073>> endobj 148 0 obj <> /StructParent 100074>> endobj 149 0 obj <> /StructParent 100075>> endobj 150 0 obj <> /StructParent 100076>> endobj 151 0 obj <> /StructParent 100077>> endobj 152 0 obj <> /StructParent 100078>> endobj 153 0 obj <> /StructParent 100079>> endobj 154 0 obj <> endobj 155 0 obj <> /StructParent 100081>> endobj 156 0 obj <> endobj 157 0 obj <> /StructParent 100083>> endobj 158 0 obj <> endobj 159 0 obj <> /StructParent 100085>> endobj 160 0 obj <> /StructParent 100086>> endobj 161 0 obj <> /StructParent 100087>> endobj 162 0 obj <> endobj 163 0 obj <> stream xٮ%9vSĵ9,@ʆ/ X[!-`ܲ oo}QPHν׉`k"÷]LWZhM_BqR?Vd)+*._OO_}St5VFMh9y=#\?;Ĝ&&\Tj(ZYr}~ UHOC+Tqd-P>p'Z!SCQJ- r"q-gV[(TŚ>JtQ|`K@cM!ͦJ}ՙ>?}k`zěx;H~߯w~Aߞo =]\..riKW溇YOrC ^{S^^o{pZzhWpbFnA8׃ヹ_{{)+GM.|q{Qs?ߒVs&Lo'b+\M? w/Gar}_k轴{(r3CQʶ}e!.ϰA3ˊOR]g3~2.(ҦMMM7ޣվ-Vխ!|1'ܫPurV8UF hFWRC.o]~;踠4>+^ח'QgEB K%Yp!{L}+m$dQW4jL]ZK2ԮΧ.֒,Z>$ҥ4m]V4$SowWY]RΗkA(C֚ uTZ.KꋮY^7q#A\MZqҪVjj1EB;$EK+iOE/.bx`m.KjȕZPNGSB7/`Ă +Kȡ.hk] UQa32\iӪݦźCjD.jNKm$7_ڠpXJ!R-CK{mo_dvj,(e~(J[X:;$|>ڮ;9XlgJ>u>3kov߳}>2sjXt:U0' |?*Α#W0vF?J!bjr(`w-h*hy̼aj 3Fꥇ&PoMWOa c[\HC9! 6 o譏W QG҂ x*5c~ܣͳ?')VIy?S" g8l0/0ߟ0?Qx1j|QBxS~OiizJO).联czvˠg ӺYc2Q^ *0/"X{X[G GHIiƫy \%Trp1Z aNΛ'fˏq_!2#2 u\:.a~#CqUH,Kur4Q*Ro҅'^2 ʕ|M?1\l. ð\(޼\@" {D%0 ד9kL.* 3n/GjN[\'crD\jO}pFu#*59Jqڱʗz$(kL"'cncW1n9t3mY(OWNt?]r7ݙ;ܱYd9J ܝ]NutLS)rZ/- D6`(6̹{Ǿ{Ǿ{Ǿ{F'Lxkn FMB/O..' 6!3(˓sԊ}Fy9\ؾS/kKQ0jU$ůt1JLW.ˉMCp\+^[}~^8)paQivUL^\īTKQ`t!Юx_kWH.j 5`\r%EGɶP+$W̼K\Zj jJ.,}^Cx->dSÙ]j' 4u]n瘯$&MpmZQ!T)Uk& ;\ŵ,b:nlƭN*D q}Ӷ;`>V7J v>VVr\TI¤Z[L+(J)re8 JPUsE`~]EZKbY"R)t .IUl\=c|LϾZ$YS.}'+smm]ȶ2?Ffލ ;K4j-=3zj@HdKauigɹG Z==p6iimoo,!j};dßч373L2|WۘG@Os72Pw19i%*^V{fRgOp^ ;%[[|DL̽d]ض`#{%G%xzgz+rYU {v9\|"lfJ+ϣs4:LC͹R:LiQSv) +| چ zi.F8礖*AxU:=1N2h H1V, e\5[v1)nOIv3)3h M`&UmC\ե+U;I)u{Պk.2BT{4:< mJ0SiXj*5hJR a<"S0 J@8%9 })#XZIgxCZ3֪ګ[k.ͨx҆n-T2avꂞ?\)f]5*1lS}굁f%Ć4csF^@4wӣ0M[P7s~,jYpԺIex2wI|EkSɾt7mG֟g6:/Cq@v>#Ѵ1DW{J͸X?5k$>Ԉ>gZ͵hYZ^@f%zPfi3,/,UB]x*`Wz?۷4^|bÙ^uC5Gyq!/]zHݼ]V~kWjkvWz[`L݁qH{$鉽:[K9}*WKrqi}{{-?:a+@͡NIaSvos8EBs]I-d" AZRLV61@uՊЇ4b@V2v7)J4mVAtghhkM 2\P%[WRdFA4f7cgOV:B#\;8L61Ny{Nh7O@*BC0`0@;d>؆7 31vkG>kU.k˴*&Ibp"g%d3Y_"' WxmE<=ZD6)Vz aҜUfW}XMEc<8avARJP3+dZI%|Cw+TC]aBz&8%7 ˥e1_CJshFHQXW;AjQi3xUsޜdyl. QroSYb2 veL@7l(ٕ+V}|X\*]5ۍR@I, V{JQ#V1ly [PjpFW%c8mWqVZɩ;+AS#>`Sb6cN,3ŀ4hV\Bs3Id1>z8y>6r%z!zvRbpE]5^,fbJXZ섾di' Udc KܱO.mZ2 Po8@ӽ/$5w~~OӟC=撿oū?0CC6Ja+^ER].{CLO??.~1Ni"!lبw>|*Z7,|+ܧ >˸J?L~z~(v&b1% ~^cH +6ojoQnCvWVqOL+8$\i J[G$>M&w4 NX.i 4Zy2ӄ.c!u(4!ij?Nc@M`4yfD I3M0Sخiѿ:K,#]̧a2q+&̑n}h.US0|H}V!^ai+vcM msumm5i_ݞ!ՎÒBAנj WmNû=,T#rU=C+ƂtY}D;. Ye@QXQNϵ}F EY:;6rcW"[LJꦜ;By8Yr #f64#GZK}8r+7\qsy?zX]xDڋO1AnlLB^ɢ _>|?}SE>}?1 &甌lBʞ+xm%@ճw9`'?tH[ * "_Nv:֥Kj6Qԋu^1=PkT R_Eh{ KŎ^A*/Fa'qkj>:ɢ[jRjX;ؕ*!8ƾ5ʐEnۉnV=[LC;X v+VV dL*E?-ni?v`U0HH :oK1n>cߢI\Z]eZ.=UWb ڄ)84c႟[ssROPr35jt5f).:_ВXDkvJd O!>"U;dceɦ鏐e'V;97<:d;}zdem4cj\JjdgB4by3}Gp9X 0yLԛ[Qؽ.ihjj%a-LAG2\lNH )rd RMN#rqW2'bMrvm 9 n  ]8vq&p:?"đo"8N#pf )/͆pMT7)q*gWw{iNӀ9O`:w͸{wC渖2ݭ͂w A]%}ãJ}s|Eׇ1apD՛ɺU#~Dfx)?/>$>OB5:#z"(~"zei DCM7A)usej#hRkL*^j 7j׉|Ezbd(bi(nkkqk5`ŇbH~W'l9l9m9Cޜ^ʶ^64Li -7L^ys"Bћo9)ȝ{+@GoN[oN)S^1Er=QњYj#M6im!~i &+3dZ"'Xb+km;ʹ995IL3kf"dlR,5)Bd&e̤\&3)LN4IylMfR[H*t2d2.%;/o!* usYJ4uXc[Qr,O ;þ;þ;þ;_ jߛ{s|o97ߛ{s|o97ߛ{s|o97_+^r|{b:1N=1R#SJ{锢`:!}tJ/0t ?`:vN)%GL'd? Lgr`:I8fF2\rV!!MfT0LiFovM2g  Up<|v PM0a|!  T͌ _PBf/d,_^|!}d|MѺ ELt4Yx|-n7wC,_z |WՈ;p|GcXK-;X]Ϗ,eb.̗lL0 ]^C0^]~Y]KM,XR]G,vPj0%4u`dUJNNZ[:a"w``Uyh"Ti"xO֣-U&mM-UR%aמT K1jKw Q\/B&)uH"n)uHl"nC)u;N7|Vڃo|1}5ܮIRӕ3(^oj:Wc!|Œ}?lgs }c~fP]~*7wV\a1L0 ?}མ]?~9'V& G>D$J_ M'QZMH/BD2/K}%/Ky˒_ n65*$̗p$7n޼*F<#1kB+"eAjP%*ނ%GɌ?u_|x~4sjH<QCw3`|k8P [mtu8!DAJLA1L%vJM CJP}璍|?not8зOhӈysDGw,(!"PL4$i b7FĘZgQ@UkHVkN,1k Yk5^/ֵ^D^XE6D [/A[/K^HBb6ی)hjjX"-mo#H~[!F2w)-!y1oz+Aȭ |+Pߥb/c$k<&ODŽ5yThLxr7qO.Ƥl-r,aNXW&<ٰ{]`Η̉55ɾ7G{cӄs:#iOHw[(*tU\㑺W1qRǚ 'T-M [m˿mX ئBQװ‚=(J_ X74"\(@- :B-bJDs, ġ˂'*3f/Ԗ`ZjMVFC%v(_iu-Kj죆~Z{;Aju7Q@LM#;7'o2Kov%v[H FX*¤ ?5Kڍ>;eB`7}T7v6xJԘ DhQcsQ]QN(vE, SWZ$.WmԔqY!j*H骘>^۬&j0eYiվzS]$ 6 _ S6E e$[-:W3 oJsS?`ٖ_dآKkuRhqZhݴ8Ɏ80GVBDS/(N!8q=M+7&RE5t!Hцĩkf-.\][t8V Hl8Rڈ 7K\82a͈ KĵnJhX8lVj)VC4`_y? (XԱAZz֐qéJR~xmj:t~y/ˎUeW "HE SAZG k5\5g]c.){naO:x_us7}CPpu.T8C/!&c+|e|u 875֨6y8t}^ 7q+{3`cg.kO _JeyLxTyіA{aaU,1Ӿ<<g,UQ·OcW3&1Jpn!M&%.%̱Ebpl7E5~)g뎼w|ܴ8"N;yKFU o'ҨUkv+?΀38's&7A~ܽB1S-qje>P(Y<}۹E5 aLF"un9ͣ0gg}hco^Cs>^=7j0`L;5|XJ&7rK;=4V缾ۣ1g*;#.Yb\]G=t.oj3`3s9@pzk~ {vTVRd#;V|u*ɼÙV,iWvhdMEMg%`xpPRk_) "j~D00 =XtL~RVJ_l)1j?diȢ<޺oj)x> >`@J"4`P YNg MjKha5Đ~j' X mh2jGX 3OůEدDJ UUkCIL{1܀Pf,Rk0Z 3"/g\ " n(ɮᆗd4usB|!> vЖmwaKo پ >dAqj CasrvlF܈0>>% O8`SA)) @S~}-OI 9Lx9>ŎrEL['b#x @Hl t8R'9HS%Yc_8Ք$VN#gz~*u(DFmiSKɨeR%S] ILN~9ˉ w^f9&F݁{XSgA1zZX`=ezGgHycʷ'Т۽ <^d I*lj61Vem1..7Fn-`q -zx;oOە t5da_bC? rAhH'zDYGT+#p?# {Ih gOzDM&=nL|J2M&bD3$nb>#^# }dG4~`G@#;d/u}OQ|ھ7:#jsgL7`Zd^B,G drga \DGtO+J@Dys}]숆gb=;Cs<~(G=Ї0hdER':6 s8 h0J̏e jR<# {IGzdG@H0Y\t#)W 'QQf8sl6Yo*V1i ζdq9O7D?WuLfz->zG^#(3G=>mmm_'u:o }O7>ЧtCn }O7>ЧtCn }O7>ЧtCn/ }zq`=02>OMi/<.!5L= }*6H0) YFO8*oM]n yH MQzL[*a!, /ذ38ʆ)dǗVqUqĎM]vgհ*2U串z{ [Z0~~ca~˰]f 8.m=}fG%!՚=!IћlY Ґ2^ҵi2e\&kqLluYdC*O1ہv'wEm/xJYʤZP\ᐝv=\U`X]W½w~𧷇^Cs6>)n73u:Ld?PzcSΦ4@IET]q)M05v>owiǧ!))޵pdA” ~jd0!2DvMuzLyR4Gs)yňWљ !}'⚄:$Uhvji+p&M$u& f0B6΢cz̵Lj0_-aR6Ԋ _U^@Hs.j}& Pc8Ԃ@a/Vd)4}6Bu؅FCbٔ, iXݾY-MeL3YSL#aBRVEЪ'&R)rDi{&hQ3 ֢$ FCEĈͳ`k#Ăp#66F Fl;!#6-bĮ w7ӑ&ф  e @R n \pGur> @JĭM@dCl& nn& ny~ݗ&5>V~v#_oM/~_+'~ " w3BnY/+lܲvK&5s-c{fzźCy(D;5?'c1Lʙ>Gfu}8oAy]N857.ܴ9Y9T #-ڧNFmG*o֗QEbݲk!|JzpB}M><~f^R''~t $ 5@mRDmeCm.ܱK8x5Q[yH`*YbFП"Z@,+1cU6KA,.3P[:P-}zjt@]i/2&j?^&)zɌ~pgLqR"Mo"N:^; g:l 2NI%)vr3u@jGp*Ncfnz59hPOflyz1zvu<ڵupfn83/;R'S_A!?ۨY~I=_ө[1;:ؾշNQm}~ngcq4.pn(w@;Rڣs}X 0ԷVvf$o‘Cj7)<|G &|`*tEmL$Q;JQYEͤTB)o)Nj()a)}/Y~y&*Oq1mok=l3>.P^vj!A{Ǿ{Ǿ{Ǿ{_1oyt#nҍ@H7F t#nҍ@H7F t#nҍ@H7F t  endstream endobj 165 0 obj <>>> /BBox [0 0 2158 1091] /Group <> /Filter /FlateDecode /Length 465>> stream xm9n[A 9fp9 Blr@7{>q$Ƙ!&\^TQD^s+l*wAH5 ZgpDӪpLTY =s, /sdW{R| UH3+a'fB@ʜQLb&IBph"嗹bj-Y\с)"sr%뤍T'ΰEDˤś3X~yf&pmD3NܳX?gp{4[)d=8qMbF)$wp},j|!{"{<)uJfp]lG+)١uC11T.&yD QɚjД,f"5/&G5Ķ ۸ npm! 9\]Kx>@jSv'x=5ݝhyoc}?? endstream endobj 166 0 obj <>>> /BBox [0 0 2152 63] /Group <> /Filter /FlateDecode /Length 375>> stream xAn1>J~pM&JI/Eu]Tc0M9{B*StIՊ44}yc>?~62F۷=צ⠋K\os a9wzJ#H=U/Fj ?aOgjO箈%$9L3;kt^6+6ӢaiN*A0na ivE0üV e755a$S×3E8LgF;d]~M> H ?rZ,Kh' Kٹ0)zpR2k/۽Eotm'1?eđj|4A{_ ixl2# endstream endobj 168 0 obj <>>> /BBox [0 0 2158 279] /Group <> /Filter /FlateDecode /Length 216>> stream xR;nC1 u ] sE%)@RM4I ԫ"ͺt72jXT!] ԽG{f$q7+eKJlp63RUMzqP_TvO1d|= NrP<};Haxb>pܿgf^lI$K ZRlmyZNQ>. ;X1jSO} endstream endobj 169 0 obj <> /XObject <>>> /BBox [0 0 2158 279] /Group <> /Filter /FlateDecode /Length 271>> stream xuNA {?ku|)u@&,h }2BFm̴pRoI.gś`5<|jcFa7^^vpo`ŞxV=B %N5$7KzCPD\UH=b!L#0*qLUƠ!. crX$iN^G@>>> /BBox [0 0 2152 63] /Group <> /Filter /FlateDecode /Length 381>> stream xn[1 w=fu'Ȝ,yM@{J JD"y^pRtѤIUU h.ypGyw E'e{܏!p<iatf`䚘Mzsg p#¡C*AِX]zqL]V,Ae0/r <ÛuT$YU;#[HXT]vomjhpq;ژq*daǁd񚲞< 8OQC)L٥*NspZ鬦2j5w%虺EK=n{]I?xAfJqE.U]xRZ endstream endobj 171 0 obj <> /StructParent 100089>> endobj 172 0 obj <> endobj 173 0 obj <> /StructParent 100091>> endobj 174 0 obj <> /StructParent 100092>> endobj 175 0 obj <> endobj 176 0 obj <> /StructParent 100094>> endobj 177 0 obj <> /StructParent 100095>> endobj 178 0 obj <> /StructParent 100096>> endobj 179 0 obj <> endobj 180 0 obj <> /StructParent 100098>> endobj 181 0 obj <> endobj 182 0 obj <> /StructParent 100100>> endobj 183 0 obj <> stream xێd9r%_ūYUyHj`GR RzˌU=- 7/v$m.rp=ޮ/__%q""5^1\\K\)?vD|K7m}E Ug2z חt|W =t//)5^9z#PP{I)mm^+Sv6s/z]ZPP|DcM!]f祈[ه+)]_^$WS5]AIDɮii.D\I<>D[_:-V 8-a%lMC.s2D>'^+}9ZSgrLSb,%4CL!V35\.9|)?ySKBuK>.c ͥ*0e=iBԭD/@L$/)xP1{עȘѵ60'sv5@)S _յNa9|i-si&)Xk$:Kp1ĩl!R4FEOF'Lasdf3fɰo1{c?^T}Z}wه>opo?|~ R?_mf}  =^sC .k*C?jw>&1Rdj 'Wf|&1q%\ OuUd&s)秬χrX-(fm(]m# m[ Rl.ٷӜ7>m◗{s5'Zduu)ǯBȕ;S[ M4.ۘuk1[<[zɥ)D#_,4Wc'^zPR" *4HԃixZ[^k[јV w=. ˅"zKcla/ 㿌URZח>}}K>z_>_|q!{݉PC${GzV[Vd(z_ìJ=g}'}ճ_y0R]G+b,&v,=G\ ɑ/EǕ%X.f3~ɽ+yW=1TMi`O_߇ήx 7J u豘UdsTV;ZD?eG?{;ll+~cADcv?ƤZK0~?yCgr|~o_8>|uEז mah lb BeL43~6~+TMJnNz nO; /e!HT!F--o[fo4mjc;s/ O  {Lqk̟N~;榞(|~+GЎ=) çfuOJ$mMju'(?d7"'ke"/wN>Vy'?{p?$NVP"77s@D59{>ȇRkLyJ9 }˄O^7T Zq~뻹H8Ob߿嫶G߫Kr?FKeg EcΟ<8-vx@H YL2ytOt<,ϧ?[V G Y:YDFzx \‚m]#5$[G.UOMIRҤA +d5Cb z˩&ޯ%mP`٭V\m5/kibXk>]\εFE2_Zhb؂=-b -=fX]) Zb*ͻ}Z /jk1-cbcԇnc}F'>>.b4iQ{h"1Bhq+pS?-+͵l]PϙwIOY!Hef҃0%XkAv1IOHrJ:MPBi ɮ콐`9v*s1vOuJj>JqJM8Jl u"MFĥPuvۖ˩6Z=bix<3.}v=#eAOc ړJ.^s fхB0!Mjbuq|A PjҨ z%PΩ ۛ+ AZm;ᱱBiU5Z 6o]N 64(ME4x}a?&$gBsӼTbMcrSJ6e?n:˭uc="8G $dI"A.Y%܍q&%!p"!؈^K*pD T0N/r+iR=95+~^l 1$M)&̗ll//l%juEd<;=Mve!&9n`g;Eny TrS[f8ȇ^qej*mX=rXV$_^\"kr'Kn$M G1#f쏘b?@Ƙ\jfCήPL]rrYb5;q//͕Xbr;K-_8S\]%b8ajzum,]pKLWT 岯=Íyg-s[ؗp3;knpH)5gRp)lR 8+t `ud\@Z\q7䢧ņ#٥{p!48GPKIWrUmTPi-^XX8>.NX ť:6A@s&6&H[ SH[[ b2,jZ2ކ=>0ԍH?\N<Z`4Հ<; In}r1Nzأ=zdK򲇲Ǽ彧ǮmsyFҞ.ۣж|ٳ*g%gү-fmΘC5]Gh%lqmB5u9 S4M#=cn'介|o{wD/\KT z+Ҳ]n5gu<p!xB I%yH~UtX-"phu_GǞ3<_r٧Q$d~Rhhv$fҋE 5'1V{-V&N0$W[ Zk  Aa9dpx'T!c< [Y!(wZ])>//ϝ5bm)F?yOT/̧4_Ona=Ž_}rK؇CGuo{K[ܟL8%;Os8|o j%x'&ߍ3`>fXb{Iܻ-c#{%Ǭ)͟-%ifΖ3 v#lz=rK#8N_`sO9](ժ}).u.!+JhFX|B U8w'Dj3vQ7$" J퀩EE^_e -W*n.h68~%?Ro3U]6';L͈G\7\wFMFަO\LVZ6iqQn '=攊dߓ[ MSv/F[sEmIh6UB4ښ /:oErQeO;]o{8NS7O 2b): t\RXbĹ"t&zFAdMEJ `,r 5^t$F`D= zS=ݢu5M-uƵ᜝~bplMX=w绲! zn> ip~i=^قȦzߗ4Z^23XvP+C鶒_hmԴ ^46e2y?a9r;G)c$W%jz3~'j~O]' 5* ՗QREF GM,|H]5}˵O`X5 5鑿<ӨIU]J-g]#_@O: f5B5kbp5=Ix{l=G3U/4`2Od۹7F4G&Th Hۯ9eM'SCG4`Q닽@b 31yjs0f0_u,-"G=oiqb]rKQ4y8Z.k{ eB3͞naaڃڜ݃(Adsl՝(~̹lQ-!'5;!l凁t/W pîYlv$M<*#zKIJCQZp(.Z5`zȃQ{F g×z2pIw1Sx}u37 y5 bDQzѝDta)W/&VF֢\mq p| 6Mh%G_o@j^ kKH(`6I|$ơ%?І!u0f֊e~_S#VP݁ZkM6S5Buۂ?H5EEޙ__H5oIVj9)&)9Maf,Ƹfm| ǫr¦6՝O^}8'$+9|?۴|}1W0RGh Ԁ4=()|pJͨJ %_z^qFSxX|E&ԄtM3=~o]Z,H1/ֈpsBFõTբ=[=Cj`dw)rh1vrTezY9Lg(5Y:/ЪOM2x#k+"9Ҧw  -dÞܢV1#d-^UχԣgmZ9>s8:iZO&r,X X:~{ YfP;$к΂9r UAIVz i5RCаmJ R)CAźQ%0'ZىZ|X]Bd{J~h5bZ+YxKH싓VJH&pbH&T L8x';L8d|U3L84t$S.c $Sn8;@Md¡R?waI,ΧP K2(%6\N,ɄCQW;7dIF3cIn%&lcIKrρ$l K9C`&Np,“ܢ$@%t ˆOĔ|?rX=~'aSkU=njU @yjrƶw}"4c(-/Z?ޟDI ' x5< 0ܡ~/k|R}qoF>o!J|^Oח+Vqg<<4L4-9c%U՜ԐZ&2l_7ZQ.VZlS޺ -b6eIJЮ˵*Cj/4WS Q{] S,UJ*Gfb9lAj"V,?[pj{ZR sk&5 {}(__⢞ZF z9Pe ` ^ԞUϾ>S)"h>ғQ@r*:Y2Yɗd^_X3HfshgV9FV9=o Hs))ic􇐞[1s7"xnp[/O8P#4օ& r"6NdÑ#(Tp+z8B}"C!U,1 .rCkd7xF/Js٠WN^ŋ{z[(&#\B|ߢc2 r Rl\v;~L 9gln,\f l9QmٓN'.D[d7 !Zb> :~"쾟 ۟HS}?eǻvHO$^%JhԋS>AȻFD`ΟP}wg[ɮ)dKyFm|0Mp=-!~>ӐgH߫1ouњWJ=єo\/P<(3np-i򬄟|hc!:n88k {) c.~oPb< h N50nL<SvW`rIkw6 A͢@xء(؍ŸGHkmרl!=N?mc%+64PkLy,$43@#VBE;h[Yhiپoԑ4aѱ7*@k>KzzlhVTkUĥ &^i0F"tR=Hk.fH&G\|$N8t.4!8 qB.8h4T)MuہiJo8 s fD;:aP`=eLx D@uS[N o:%<)-P'ho:%uz-'P@m6ϑo+o:Au;P'h`:#|_I!f{Kvu;͹۳f73<#q6ld7FXՅ2u<,2F4hSa81@c>+#=fw0Paw0o0@c)m` #l}v#؈H{`*iO`*T ~i1`y1Œw0ljFPR$`Z@T1Fi#TJZw0S|̉`ز  Ag?> YހU@@{ V3~Q#fn7cqe# 4|>1jo0@I8u`*zmCV # ԐVq Jؔ0ܤ5XdsXka)V?aK29 9xvP{&C)f,N^t-\vS Om!0+S9 E@5C}mF8nkp9v3G1#f쏘1a=1c'Q=+J=Zh7Q6a F5,žװdzx %l4B;`hg`qVs%5@¢[!:2M b! Zo F_MS }| اT=ؾ'C + ^_v[>67>3^V4|=\  DϖBl s9=Aͼ=oo=A͸=AD'Xa#DOPgMdloDONylDO'hwDϦ:wDOP=\v"zk =A{ |K<= l#zzGl!]MDO|<=A D !zR蹆Fk I%DB#DOb3!z.!z s)!z.!DO.9=nDϥIzM6B$"De{liJVnu8\z"&vABLbX='^b,`+g!aJnH=Wq앀{lĞlĞpj$.ځ๨@g#q  A؈m8K$E\#T%Z\ZKc^ťm~]~}|_+aSU7]T?j/ R3jtp0JkMlAEqt ɿ?=`TQ>L}5{63@9$obKOTRǸ:!Ph@XP #I7=VZHcc350?O3m6FRT&.Cшт_2cR=›B6KYXxs8xHDS&6qAӛXN>CF# 7gZ{,\3ei{D=q~~? ggO`4[r4k Vպ N XAh kcIGϠ"=A+kroǴA6-O %`~3A >h@( b,(7%8 P"Au'j %RuG!d},EUz6 Gi gdf v A*M"mˍXTej¿znԵZϡP^bϹHu=9f e>=oL>JwKc~cm.!*N򓮫͇+8dDUtuӓ;8Meu== 'Ikt]qwưzLcK y6,Z2 &XqR6lejծvr v"ibk&_-Nݜ>|ᕧ~,[ZvĚGTz{DGpi6Bvͮ@d+O]n+ @2l+ 4K4`Q *M|~zEhv{B~pTh=~t=dI䒗ň}EJ<עOK^~Y) -U#_?M,f2_,Mlõ6Jӧ3oC >ˮL(ʑpmVTluꊽ> N[8"vcKϥ.z`1neno1Wf@tdoM4biW:TUhUB,5HY!oYj{ C=U[+O ,qG 4y3ٶeѶ>׵LoSG m ql GZ/]QYE]|麪#b C qlY1jՂ+WZGn^bQ#. f1ZPoɎQj'2 1:F ZUuR^-1JNуLz7]Mmo9O];wZ,;jb(&vrnS:Q1ʮ{׀GJ7BP#GPGW 4na.dAs9mip[y3k$oqk̶7ы.[Fbvk`LC%IHceǧjuRvf, ]Zݫ-nTjd'2.SeQr3Վiz5Qe& }5 &G{͂[,<[ Px.  l@^cNq5}4a-`؃y^D7@Ց^hmK{?j VoĴe=YғTlYY6vTzڵ_#d4gkM {Ca\Oނf>UK8L]3u#ni8M{ 눦;LuFߙIKPgYѓ+3zjg*TBn3U ׽;=aM[eI]c|:b =k|ޑ]Ե>s~+z kشkD@. AdXk,;`M{ >^=l/ J(g £ Y^IL $$nJAnISRxxV yh)xSF);V qJAn9 y&BtJ{TtV hTYLJ,&Jk kH ]~(9gԂά&[e?N3ǖ2'],lb<ݙ+30f`66#Kx4օXgf$ᔕp^VYW$g!dlQ;`ۛJx晾>na.:gwɎiM؞:$vDp5/Y'_ ¡aiGspvrhZja4C2ˊ8AwH;Ӛ]%ݴ*oq^@ZRH Z^S:.+^w|qqk['GKޏ6nBs98Ž`g`mԱ;h(v-A+;| c`$-\`Fnb 5 W I+'DYhpmG"VNk$kp˔67V$9 ; /犒h>W@[­#)gR(-2AJLDAE}p!' 9s>2[i{*H6[QSxB˳>x ^[ЭVf}VB}2Y6Me& Y}0i}6V2&33~F&F{+ l<y;X{fXe.^2c:oNX'fF3Sֲ:΄vf>+GbK[LضvV896ԑkzhƭ!!y<#y5-G\LܮM>vɅ|ymvK%( ,աpuRF?Ki)RvSL[v@o EI2,GF:wfDa o_/m=k;gNcqVy[T2U"?9qaۺÙY*Yw85n^l{&~-;fLu垲b^GtЙi:wxWDΚ\Ӵ9~oP&R74$Ź} )7/}K7}SHe[kZ<%=s3xzT1VIT|;`0%AݽphDVåkt^u^QEto̓ G3 G`sAu'<TvU6@9J,yT$EŨ'eX68sFԷ$lOi&n^V;[Vowa h.8m/j#=+G+F7'АӊƛjXŨ :hXAFw_,6ͱ[> %]@<W|e9JN2GPQhlmP(lA͗xZ):TGh%W|׷vTWIk@Ë^J = /4`CoPԲ68 M}u},h{|cuo{ ϲ֣̉L%$z&($[k&LD^EՎ$ ^"YQ=8i#h;  E}qf`>l]9vVk&SM汛lf:Žw ]1; ptXad!#0C9M H7c6#zӛQ׌s ^d d] `}HZyrئ]Ltoge86QoHaOq,PxHq,$űhD!'q`"Sr3P>ź>d;S+edXXy;vʣ{ʣ` \ߓDUa8\5*ZɛeJsMWݢRoP'{;O)>x^CSw?aZ@Y==UmA|C H| 9ph JtO )e: 2LSwiKvƍ])1ơhܰJj>Jquݬ䂳nEU`DlP0 ۗ˩R-KYM<"p5ل[#Q "o2^gӞ&{xq7ɉNQ"c{y-3C8nL 2hXS9M9Bದ#X;t署5cZN~#bD쏈?"JG"Z] GO__\.c-7Ľv4Wb8|.%|9_BiruPQ9kծwX\,tDj 9^.3|x@aaȸ!ā$$U:v |-@צW8_pBSjzD&&h8 )~4 @\l%z UMNpX:+ΐ 9[lՀk?;{p!45(%R貒S x3{+܅L/rzj%ݾXїXrL K^XX* Wq=f~dl K\/9+ k}.Wp-wjc+R}^dž^4HhΤd`3~+2~ `˓` >~yЃGsT= UA>Md1FFl$Nuؒ urHme5[+W,RMY_^Vpc·]LYMk;Xa۰g߰M9x!iy2rov@&`ec`W %}j ?$d~Rhph0 9p]OeJT^syO \%ak  !cP=+{i{i!Im}ODWyk^[.!+i5_'(MX=wfq( K9wMSK^#꙾>7s~_lj'{ɔT?tXhO/4D6Ibj P)3uy7"qқ#Ҕ1Hy55?'+ هkꦨZ-'5J8J=dCҷ|1^b#C?7xaoT8 98IpӕZκFT} ӴNS͒k>k 0S{63Nn`fXTp{t,et[E-so2>iLp_sʚO67i,eK(ļb94i|ձgwO<=ʼn=te/GtF(ch91 N 7{z͆kjsvzK`&GP&SͱKFUw^NCrm٢ZBN(rqkvpxDi =~_Nq7xKقfr}}83zy-<~5{ر߭A?5[kyi5@6UBZt~ uUwѶK}" Mf{`oIlΫ1A%'sA~Q7O5iVM:3?fQzZ _ՋQڧUQ1jj}9 (J/MwEE Q#0P {L"/VV%J[E2{Lѧ4h(50y[2I-Db*R 4EKUr*iVgnx2qBN+IW(Ib4iQFA*uQj4ΏV>UKUdKc\Ÿ4U{LzwV!0qq^%$UL\ʇWa3i*&%釚jRU{M_d fUjW6W-IWSt 싛.s9f >-{Iz9Kҕ$l\ 316YmARo=z/HWڛquYR+ .Hu|5{Afa6~k7J{+-z+5+u~TP j< <|1FsMRy.6og:5c^`#Ob89%rKIZP0XCaRI DCq)`Sh[@!pʜN㲨Z3\Q,u?K5g_"]ʓLH+=[:5Mpc.ÅV~9}[__PKu6^Q/t`\09-&=)jcFN@F۝(.yMPlCqhq ,7{!r[t/CmXb83o)jekB_=76@fLGcVεڅh endstream endobj 185 0 obj <>>> /BBox [0 0 2158 2003] /Group <> /Filter /FlateDecode /Length 220>> stream xőMn1 >/qQ63dh,/y*S#rTfTl(UF3k׆T2u PJNJdd짝;iNCj"sdZ{܂oZ-^O 8Z'Ko1aQj K=M)"X1s+N lahQ#]C 7O*K:͒ endstream endobj 186 0 obj <> /XObject <>>> /BBox [0 0 2158 2003] /Group <> /Filter /FlateDecode /Length 276>> stream xm=O1 HΎԹ]` WPP e؎&XTʽqPUU & jKc縇չnpnGzFAC6a01\ ƶhFŔ ^lY0Q 3;`VBC ScB Kyaq9xy 'ܰS6B׾1C [bi 7]QwQ^T/FN9d~yF{Xec!W; m endstream endobj 187 0 obj <>>> /BBox [0 0 2158 616] /Group <> /Filter /FlateDecode /Length 472>> stream xmKn1 :%>NuzI΢3?SH!ʕ@@b")&p c|U;؁B!>>> /BBox [0 0 2152 63] /Group <> /Filter /FlateDecode /Length 380>> stream x=n1 {uev`:ƌq i>I'y)an_'/63Ӧi/"Se*X?z^0: |tVbT%85FO~ p҄`"ư 4`)KiR F:)Y5%JNrd 9ೝ4V?6Qp6 eƑB[d$q6\BFN]E-: 1dt'}f)ƕf8ãay,8G6A"p[wϱ`aq}Bgql7|7+LV+} endstream endobj 189 0 obj <>>> /BBox [0 0 2158 479] /Group <> /Filter /FlateDecode /Length 218>> stream xŒKNA D>/_sÆ &p M}]WuYCz. L܆49K*4#ɪ}oWP*..dd;iA[\}2]E /G7HcF$>$=mʳH"XwjjOM-,If<3G_sO&lcdF3( endstream endobj 190 0 obj <> /XObject <>>> /BBox [0 0 2158 479] /Group <> /Filter /FlateDecode /Length 272>> stream xuNC1 w?gdG.A;/#h@%}ͤ7dd|&w23ӆޕ3.gU\n ¦ o;Jt0bOxZ]{`܄k)D*xW#d]󜢉C~(7RB0RAar ֖ blEY3xQi:uwSTq',4 c 9Ƚ'(U1X45ZᥢP{r̖c߃t#<}-UeWi?a_m endstream endobj 191 0 obj <>>> /BBox [0 0 2152 63] /Group <> /Filter /FlateDecode /Length 381>> stream x=n1 {uev`: )>E.6Lmub33m:i+_h_:y{Z~.AL*TR NetfbT%!A/aȫ8JQ)N;DE3Mv( O‡uF[IͪT,{rz4D!ATgm'խH95tg`( %Wox[@ K$ޘs -z> /StructParent 100101>> endobj 193 0 obj <> /StructParent 100102>> endobj 194 0 obj <> /StructParent 100103>> endobj 195 0 obj <> /StructParent 100104>> endobj 196 0 obj <> /StructParent 100105>> endobj 197 0 obj <> /StructParent 100106>> endobj 198 0 obj <> /StructParent 100107>> endobj 199 0 obj <> endobj 200 0 obj <> /StructParent 100109>> endobj 201 0 obj <> /StructParent 100110>> endobj 202 0 obj <> endobj 203 0 obj <> /StructParent 100112>> endobj 204 0 obj <> /StructParent 100113>> endobj 205 0 obj <> /StructParent 100114>> endobj 206 0 obj <> /StructParent 100115>> endobj 207 0 obj <> /StructParent 100116>> endobj 208 0 obj <> /StructParent 100117>> endobj 209 0 obj <> stream x}[d{e") 0 dgu0z{Ƣz>_Q'"NVuǃ3Ho_Lw# c!j-ۏ$d<ܟġGLjMna($Z_\AD8H_-5a9Jh%lT<2F_+#ǿ=x! |Z p1<~dȗ&(!JȫE)r`@VN ]WǛ-mA$>!T )(Bm%kAuCd(JP$)PKNJ!'{9r8ǤOs뺄ZsQNUo7% Y!+\CRCMqRFiʬ6BNл|A0qPrĜ 9 ٩9j(n8M~ߎ_?zퟠo׻wrH9X{O\g:~soH騉bb$QuE9Fz!F12k߿SYK̹X饿[}tmǀD@^z7=7ePX6Ϛۣ$(i/)C~> l:y|ǐ;CP6y"D.9.)柯+~wd5ś|b 8gq(=_[,4uv69]oqqg2V싓 xguMFAg|fh_ 0ku;*.<൤tgܣΈY뛿Voż}5=*|x3}R!e-#kUJ~!ojzm ˻kz,S}8~h߸s&Z6_.Ԭ>=M?Q#B;QMͳ\lTl4wϗSHpF@}؄3Ui̴l }Yp3<,b3$tni쨺&/w% c>kٶU~[svuSt5d̝Zs<6ȕ]a>oB6&qXX-6qyx|ml$nAn\y^ٞձ]bξ]IPt37/m ;ͣ!fg(Oq5/y_~Ut)~dMޗ`Y[5Rʱ)dHC˔ed+;/= uҷ{x{F8l;z׏La1ЊdVMmv3N-GT>W;EsnD}^m<[Wc%vtntwc23Lץ#˴#_g|p=ݴ'Y [DBT41sΫ0بH+ODD'yTqZBvn-t}zB\6=yF53i|+t1͸)TƠfq;vx *W$GJ!BX KQR+a굎>"WF"F#\loKTrT>@( C D!@΍&"2Pшe K.˙sb ̢IS9&jTʅ!ci4j4N\+TjQ=E4$hbc!J#H9(mHJ+XӀ5!( S#/ژZwۭ/!T%7B UHIrl:*)Ԅ/Jyi!ʼnh%BÒJ=5Q8T(4V$ H`0;+(JZZJfUrdg%T#:;ճ)Jؙ]rJC|DirMŲnŸ-͕s`÷63Rjyuժ cF uoOjL9jT]z}ikjFseAPct 76KVV4Kzof`\4G0~g٬t5 tPxsVPs^HU__nѡ>F|X2ah lC >u0ePK>#A?;cCoU~秛a~bZa~.'L~ncܴ?u@h CS̞'a# bnzk)h -PD/d,P˳/^}ȳ7>NڋR_P6 w2KƟq{Nmͧ'e@r{ 9,56{Gσ6V1j͜D~{Y79UU߹w+'Z7v<8F-;'\5-\lZH|N;I❳n29f9Gi'\r~ t(jMɈD_ZiV]ۙBRƒs(CD"%2*d9L4_^%h9hοSMI:R"}#e (_Η)T N,)r) @PNA0G$Ke H-&c@A(Ʌ :M uY!"#N.頪bh&A%P*`DAR&L:z"3AJTkzc[P ,2:E=NH7!L@@j\&=) ŋ(U{)xa"sgt=2ӑIwN)Iړ.1W&DrzْݢHksY]isԄdݧ1pF40fJWwKIesQ%z?^!ŶgXU޴HbmqukĶ\cʗ}JJM@l%H[rR2ecSbDU> :'~lCk4mVl]ќ48>b ! 3xVvQ!I>ZB2E{{xD87w|9kaƓzS+F-W8\o d Cr[8]RwcCs[4_Z"?C s f;$ 6-3 9gMm3p}f~RRH% .O$+-X|>k5c d ߭Y =bR$`UЧ*pG %ЅqUk?J`d,Y!jČqT:HzH2Lʥ=dp1p#P̕4HS%REMj^J !y!P,ŨDv!QA2QPB1 H h 5C@% K8ZN zwvS,Xr=0d j׊^{,*G̜{+F NIRڐτR1&BMY=#t)*R,X׀6&RŜ5P L:,KTڠWKﮍe}L}7fg'KoKLCI >,?n֜dbL1:wچ:Dc~;ai™mP߮s5n=ӤrumXM1eۘ7rjx&36^=}W +`XA 9!ma.6.Bc +zg܂0x>]p,nmKNKfN#ouEt면_ٝ)w|;Sξվw5?1b?98yP"6:,u-V QJJ%BWmQtDlH%BXl!AH[PTf5_4&Z,`]O%+%σ5%E R#JB hHMCZJ/hF hSR=\Rs-I2*d[ dJTJֵ6E`k`F0@4PЖ)RPa4DF0;PaC 5F̶ÚjE$U34be,G٦ $# cG3rwK˫eߟbͩy yNC:$W-]ix^vt?2_\ li|gu)}s]`KC6[ ۵84m6ۭd_<8 Yn$^-o| {"{Psӥ͡WLb*{ (C+4^.M{FPP;`-Յdeݺf?h^dֱѩ%9mQ'sCK>KKS^KK;KKK^jǷ=zt9~urua~N.w1svQ^_op]OǦJ8$PjKY G2ʨ(KԳ@Yq+ cB\,-I5hf`k0jٵAHOG,pѢًФ6޾$d{wO4BZT@qh]K\Ƴ)j9pЅSkLHVua~bjB b]GvS3 ֪=uh6WN.`fT5q\v)PM-_7pIJ+eLXm'j5#d5VCl/ )U7C=ZuGB#VLE2M>F5v*ڸ=\R3XLFe0 [p}SUqYϢJ.4sq ۙZQ*t:aMR:59ƞ=b q.F56~B-&*ic*R7\Kz N9Nr|V13>i45m2E\Wcy]X'`A)QMQV\N,S/v w׆ˮ8G:VRn|l-osbgTmJ1=:fjL)5PFov"eOEyd90Nѝ~r,@hΈrYN{"eVikmKXS}6IO|+1`Ru9EKw(?7ZoI/gނ AG-PKK~[K֎x4pzkh_,)RkieH%ԛ)Nt~P; ,WO~|)ź|MQl98/pyqS:in0Y[-,1SK饁8RcjcnA- dkQ$Q ʅڬtM(rZe˷c H.upK!&;8"Fۜ갥F* = 5-Ob5PC^hR6o.af '6TO u~zKQC9qkXBݥ-I3+>>'~ȁOFSwpSn} w]H{{@O9h_"?MCO٠\G/!2 Y^ XenVd'0S Y(0 B$ nʎ,_tKJ*w Y~R7hэ3TǏ3ɹ39B%NޣؼMz?8#Oy}?˫{|-|ezBHb̪$z]"MN`!%(.?1[@C 1*Micz, H]rbʺHC@4d{| %d? R]gQi5I5DL[D[!=+19 QFR 5jP5_1\7;-i)VrC4bބI%Z P/&;4Y,EXNhNpva4_җack5>?,RF`g=*^)O&fx:sf^Ϭ<]䧋bP1-]M(. ui{C8!ڿOdžt*L{`1=M}ZnM `CXV`z~OgͰf0d&qR Bâk / !q²=ſ8\i. >i˫~,`b .^>& e6<4d")˓"ӗG2WYJ)lL{J-@A/Pb+_lxO p Ÿi(0 45r^>^x Λ$mqkh8' UO;[I7f~- y|#B'=#Ht &ֵv^Qs}$>Klu%50%JA"diQ+6*4aPc9,eȺq1iB6@Z{K2F{63A6i&] vCdɚnKȺzDT%ߔmӪ7y:Z=JiI>Z.S(K/PRv%d-lPb.+56(Q; jY%GGSDM,U2(ʙQ+٪2bHH(Ȗ~>^E?Zc@f\BH8YzDj$ ZbJNXRd,/V9r1lnC]?Փ,wF 7i7-=k 7Lԛm 5yjHʭmzh*HnŲ;cݜVv[O%ޔ"[ qX~mL Q-3v!ՠ7204)wiU,uMU?zlڬzg4_!dֿj:xt{jZ1KXjnNkR,ٶW=!CpRuJrl>U)B ˝5}Vf:vst-,a=b &yZwbhYYK{6=6=uԮ%IcZ^̾,lekڪc\m*\Mk vW[6ooTߜMOv8)"lgKhe :s%5y9n{9Z9UƮsŹT3[9J+ QjEWv9+A9f8+j^Č `r/8Wrs=h+8W" Ε\s=9J|PpnPvB2׫|5}|10\/6Sܗ OG_{T딧yfG{ybs3sy7b_{iOӉ|s8_)>O^W9 ךZsXvVkCi5WZsd5G搓Jk ZsdJi7kPoʭ7#bԢ^kdMI;6#Vދ8 :{nnD}6چ TqމO_s>b⃊0!-XAnu ࡞-VEnq})}bX/=wV@B6-&!T9|iVSp/=?X |,>b?bqhCIx@_& DN045ņT,!Y'j-DEժ~6Q:ځfTPFQhjC2ꉳ/pj8&5D 'X Vd6 A h>IvRs+KeJ̡L: 3df4@3 C3zdh$TIIE C %&FRQ=t_HTU,9ģ,-ÑT'͔wp$!Pm jIڂ#1H+YX$JiE2iɤnX$HF7 dqHd818 )0D2%HH$S_d*aLؐH|ylGOH,? wp(n _bx$U8_ X $7DW?HV? D;@aZؽpX(QZ*wRLRS&m__? bO 5Ŏ*6A 3fOx0!^; /zڼ@H Q/xzR|z;ԋBP/P45ؗP+Hv %v!Q/SzDҋGz4l"BEO|BwFz>iWIuWukXKa,a94%VzUP/R>Fp8DeZ [jXm;(bX'':bzwGPQ/R;ԋ=^TQ/cP/(Ψb@0;qRTq/ViP^E^}\pYy0/¼XrA/ڧf4Ob2mOD5mOoӺpy6m{ԋ_CX~ /z!^/cZsq2 \TR$;b҈~Bm )YsvQs(-[E=+jbԝ9ڵeis_0lǚFYrm(inRNU`0^!˟l)؞%K>+v!Unwv(%(z$.-<5Bq-k*D iIñj50/q_K endstream endobj 211 0 obj <>>> /BBox [0 0 2158 1602] /Group <> /Filter /FlateDecode /Length 222>> stream xő;nCAE{VL +p4^@y/KXr]TZ'r`!TA;`Ci%Ԓ9qarqjU=3g+(%I%22.;iAˣ(]c2-GTG#noGHco'8 etް(GH*f\4PDN{97&c|Y#>zۥɚV?;9~_c' endstream endobj 212 0 obj <> /XObject <>>> /BBox [0 0 2158 1602] /Group <> /Filter /FlateDecode /Length 281>> stream xm=O1 HΎԹ]` -K(w=!cٱ_J> /StructParent 100118>> endobj 215 0 obj <> /StructParent 100119>> endobj 216 0 obj <> /StructParent 100120>> endobj 217 0 obj <> /StructParent 100121>> endobj 218 0 obj <> /StructParent 100122>> endobj 219 0 obj <> /StructParent 100123>> endobj 220 0 obj <> /StructParent 100124>> endobj 221 0 obj <> endobj 222 0 obj <> /StructParent 100126>> endobj 223 0 obj <> endobj 224 0 obj <> /StructParent 100128>> endobj 225 0 obj <> /StructParent 100129>> endobj 226 0 obj <> /StructParent 100130>> endobj 227 0 obj <> stream x}[%q{|^@/ jj}0{W,i "9[G}$ **I%.&;8kZh-v%)R>R,O׷?EW}MUi}Ml)'W)3GHǿ7O=f|o)rmv1y9_<|J%xW[%GhQ\-h29g9Tв/Ւ@cbϮ:UOZp95^4tGsF響><ҟ6?2{?hC}+q|F[!?y'?Ǔ}w~돂t`~txx f?F?m)vWdџ~>B| ) UXֽ{OU<ާέ{bʳmgUjFS*uC߫ʫ<$=Dke}M~Nצp^ V{&7DK?=~COsыe+CwiH>nAvpt ҂S!{z|^ɑounE"+<ӱ)]%@އ)a 'Փ784v'j+'t韾7ZN 9с膸q/KB8y՝eq-r˱ǽ/r_VU 6B鉣:|-ʼn.֬m^~cqpx94}R(F3{;)QYODMZKncE"lm=kx+>,=^)[M&V>}\cHbҞaHm C*bL·K8?;r_!94+at;uf*S&k5}8aI[Чͦo|F/IGO385*&?jYs{&oAA`bYPP5E$b &(~1z>oo $LKqhr??={sKYD5/'V]ߔ|6 yCU/cE;C4s z藠x6i-;JO28]lR64AXY?mww lHZNN|6.o&N, |e=|-=h9} Zo0Pc6kms|RGHM^vD.)YSb>'k9'`yxLsxb|\[y1G~K瓇zeM?]I+@M}>rj烙}, 龫:4H/Ҽ_hJGP~pbZњ7 g5*s>g%SlSƼd}KjT0rp2"rKe2#UC{ LP7e2Cz (ou<H+@zw>a膬l*JQX~`)AB.r`XT sؿQto/RW\5k 7p1ப)l piX̥5g@{6νu=qӍ/=ҳwڬ I/o-}ᤞMiT9Fۅ]40cNz`])&2fX.rJ79۪kD;Z 9%w1W]Zc|pZhE -AZÂ.a:^U7bԴRf2,1GV[@A0,AZaPM(i%Cfy>o(D늇Z=lZu-|sqRZN ^A+(xA?Jf,K5ք,Na$IpK>a q/oc-mSαҁLݘZ|4HȲL%B  n#x x8ɪ*OHtkc z|k5R=o |f />D5RH )b=1y_d};X3k%8sbD(FHۍ5ҎJ\Rn-Q\ PrNGr9gJe4(eX'w!;"e]jp8ȵTs fc瘏(3PT} \AJgb)7ШBٍ⨀䣎U[@ޗNR5 jJ Z 6㧐lyj5W?~~ӏMs#SwDUGWՠP' cĎs:lI(uf6Ei;d5bjR)4.Z>M} kغnlb2HY6im2 oÞna7r!iB2o (Tt^m C#:l+Pl?l>oyihۜPs〰 r*>3j+&>Hj,@BALDhrf; EEQYvs,8fRLfb 5aϕZJ> /(%咢OydbżRSR]SbރPr#~N` zrߒ=%u=$kO"-e{2-LcSEP,a@#1iF/iy <;65nH v㨣߿)7Y{7m>=ƒǨܔf䒴fΖ|g۞_T{6~@y8)_a*lE<^~F+ÈRRYV كCa\b YF+svc'D޵Q?nCMO#x=V8sO6Lת/Q[@"f"oi`TB:XZhEvv'vG/3Gtkƣݖ/2w%?;OM/>áӀߑa8ܳ p;3] Yk8"R\hsx8C:!DRB4}ἷ5c _̱6 lty΃(a^cÈaA6m갟(j,I}|R*ip)&=&k}oԈ*kVV}ۗ&kٛ 'd"Rbq7˛~!x#9bսh2ȥ0zl1ľcei`,=Cs}5X)Zh/ӡeѥǒ(F˛֛VծEZȴ5(.hY&xQ%_ 4wŽ,/dy!dL C:~@U ǻPT)A]\-Y1#d[DQH><[KC͋}E7!' ΓORC%ĩQ2Բ)%˰ӂc"q8 Hㄔ؄2Zǝ"01T )з"񅜰$s]8b32K(A uE~ T tb]./C)X=ۂ $}9gQĖz4y cm)h. ZJ)y;ZJ 6N)lerax' n([%<DtSL)d cAh;@\6(Ubr@M눓iؼ8_42|_V ZՒ#;2T#98ơ̂  !yFD䎪2 YV;t) (nHM\Zo˃  2"m JWYcxa ,h(hAIsMꚄ[?<<'o3rG~^ݎ wSp&5<ʃ &ӿfox1?ٷ'xm E҃j^ )RW@\J;=܃ȒN׬V*g~.rޓ^K;ta/UՔ?]B>*Ga+^wTY}]mOSWVA[=_tUUAK߭i3̪؞/Ź[v3 aqZa{yGyVLGlfm&yyɤa: FZE*|ZM" 3Ml M0ATI VM10A(&4L'6 4LGfѦa?4݈Tcs*lC天!uܒδrIyJ:oNz ¥:p(JT3i\eD:/\9ga.˂; 3T ū,LD8ap1,L/0daÛ,L}sfN6 ,L/0CɷY 01 Mf(D4_U&!90AX5F q`?kXhTQ4;gj`$-5*L?g`.4nT,& LuM 5juk*sوuÚcWJ&ٍ- ^+xpDd(R1111111111111111111111111;c/TI؅;%MG^;'MGĝcWI GO~RI"i:RM&i:RHEyJq$Mgt&Mwɿm\y;{jLI,2ȓ&[yd6OY)֕&JV|*+[CZPJ-`)@ttQ0X~YRzaV)ҰXAIԯ=| b\h|,4va9˼Ą,Ҙ!+TSr$TL|):F KHW1aVd*AR! $I .jO$%W,5 I7jzF|U;"\ )8*pJ1$wHɚE !KE%I#.rF3M73tҰfTv5utG(#] 9qyVFP1l 5T;$(q6EIpwD%$֒A;ɠ0E8kZ=&#IY:aL1RBZ9]W*X۰p9!CأJ'Ekud/Gz}_ __o>7bBl/vm6K!4/4~ K:hgм)+:B!Äy=Ǖ"]),f:U y+(u0,Xϕ@Rv.*|S) CE[) QEU *xS) S@M0/*DT00DS) ċJa 'ORX_;U bT) Ja8^7V0l++t0]])lQW [ѕu%])lSW Sו–t%O])L^W [z+-ҕ¶JaKOUкRR~])lى JW SƧ+-CՕ–Ia`*u0oU) rs8%jDai9Òtk6xʺf8Lr^OltEċpQUI!_1UI'B.C,I0ZE;SV&+h V&D`Tm2(۴6Ml.4M٦ɶ6mMCjӖKpu\2@%[i\mͧmV~T/TxiXucR:$kjׯqZoS9{#!\o??);f1KIբN4t6Zb Үpԟ>ccA1\^B?G X}Tt`uڣc+ϥQ_.~aBjwS"T,0UjTY-}>GUf,ad*&υ>JII.?YF;uigcefmUl_&'5B6tt!_OwNuje^NOyj gxl{ϳ3pd>&?Zy8>zUOR \˧[EmVdI0_vg~g$).\m\yڻc/veuM۱}RR紴+'>_Cꊡ[>_s4Y/5Z{vr%<[&ZڬU[tZ|vU[|rU[ ^9D]fUċU]o"U]z@-_jU5jUw3HXl^l(] OCIXeg!rpn" v' +i +4rf015v.boct COWu˜d3;;ғ&kl?~Oj2&k@uMlf"w>90߿s>.V8ףzv궼g;t8I"n:Missaսv}^{3 uÞb午}ܬ]lD{P'8(/0ԗ(BgMܸnvs8Wšc/䦡l5(\}1h ⅣQ q;G^ 얔_UeP1oQNpQKr[xҕ iںin:/ ޺iP#.C8AMxAq ޸iC?kq\%Z7])f>"ʲZЊ_xczƫm`F[bom˒aSBpD/94\]CLGumS筹[Ãռ`0?7W7׼p"uVj&Ze? OѾݟ4|&+^`c==8ܕ2yh9cu{r2=uWc︁xEV=XwU$윐OfhSvu,&ʚ:o!m,966V?=iwR|;8?Xc>KjZpsr}>٥0,svw^福<,g2:x|}k!(mٟZKZS &;(3"]ƾVZdس9E/2H{ XE@0QMr5.E>co]yV pFB|4]Otc$㦠2%KW4xVηJbhD+Q m7E|GJU\{].뢸bBPl(`\X8 Xܖ84-J* ʳjX`]/XPb,7b K`A.1,PqBqOl/aC5D|$-H>ϊ pV?k;n`bfJ`CD@x֗h58B獉W! 91Pu]Z 8,?T܅IL ֜bX戳7-:QW=,93 ֩] idri 'T;hA,PjcnTsC rXqE΂ԂE:q춄ŒQfX ^)y)^ZlQiRlKg DzUab2nX]dԁJBkYWi&AbEWJ;ZH\iFFKeX`07t}~Խ4eZ.=n$pƶe+G9e)ܗcSHD?W1" h[E"ZB)mҨv /o.fPe6jH: ,0hţv9,/'nbuɠ(2>%k22u8iM5q Ӝc-퉷=Mzn+=t+Eh+סWX$2gun.8 endstream endobj 229 0 obj <>>> /BBox [0 0 2158 1450] /Group <> /Filter /FlateDecode /Length 477>> stream xu=n1 ws?y&BIj/cɗP%t'*ܾz|ȁ( U>M]ԔҩXL@Ğn:?PBELpk"@cYe2abwSDuUM@bH޹ 5b*{bN5^E g0x]U<#íE:y\~FJ5&,Gv43Hnr4?ػ.իN%ҟpldMýQ Y ) 9S VG]X~`Bu)pB@>6paB۱i$ tkގYKjҝ1ͻcϪ-:iڼNJneN^{kG{k^Rn endstream endobj 230 0 obj <>>> /BBox [0 0 2152 62] /Group <> /Filter /FlateDecode /Length 383>> stream xn[1 w=fI>Adm2?\v(4H$[:MBBf񼔶@zHTdFޖiJum>msNדrإU4y;Rez{7&u.›.P 5DmZI}=Ie6A%zY$%Zgoozrz4 j,C`InQdlƔH-VWV ) "y2X2bc;.-h`1D'vX\G-3ş<p^wW޺G+rcwFwϾtm}QЏAW '6j\4qEE1 endstream endobj 231 0 obj <> endobj 232 0 obj <>>> /BBox [0 0 96 99] /Group <> /Filter /FlateDecode /Length 862>> stream xVK7 \0ÿxlrAY 0@Zg5`6z5j*,r6 pf|Q T3x( /~(UOJ|+Ej@c 55`Eaʔ,I**IfTdOux+LHfqGR77P$V)Iu@o&[Q`K1($6iz'=8S> stream x%gTo{w{lnv7͚[D`zg*Sއޫ&%&*( T=~U2.?FbQ>>>n8H4R" NDKx#gLt&zzuvڌOZQZPΝgѮ7:s wAnyϽ۳ڊ +OTt4rnݍZLO #p@Ǒ8 F㨔x:Ig&tɆ $#iNePir3rBV($2 j {߶N-<_8s⫯> *J3t^ʗ @pLn4T#IdR.&)d&NAQ/DðTDŒ)^^ FBFxc04$ƒXNJe_-)4RϪlyxsĢ$ !c xDG %c1)o~>{#__|GCCjA^X PD$a8GĠQ`XzB0p.S1Vf* &kF^@LSմd4< b%,K%HbT$cF.>_ ߭NjA{[C]H4&ֺHN+UD}c|g`냵C7溯=Mi/Ս+xXA`[:jW. ޞr{v2ұsnciсGv=}q¨trE{|}n pћx/eshS%2SOuM[gV`e4x{qma]KFzGG<#DHhf,_;3ϷM7}oz7tppᦝ緶7o=on}sckkkTsb"R_f`ýÝkW [S/W/?9?:[z=GK=KK}o,=7 홟G-c54iY}qnOp[ˡ&J'v?>zp7:۵^8ښ?ژ=Z>Z6~usz9vm׬sN˜48?31>dؘY𰭥έG;+wov߿{v?o[ǻmpvvfzݴf]3Z5m6Mӊd.Z͋ SS#Mw4>lj|׶;s/wםo^mmmmmnZ;Yyv{͖cӾa]ٶletX6ټ4=0<6hD- t:߹oomn}ݶvκsokm{?^{jù^sl96W+U:6j2[SK#}/KotOד]>;MM7n5lnih,Y6W;˯6V^mnnXsgce{}yk͹Xul:VˎeaVl.3 扏x rϿnTߨ^W}fS'lUucپ\unnsuycŹ\_q8V+NDztfX&md[̛_N/=_lzLbL @ygŕ*K*oTV-L&Ͳb8+NӾXq/lvcl-mKEerb446dS%b4&Ǧq (jyq~yDC&42*%ҢbX-6f,b7&mqun:`5N^.={E@,G!d"#ʦyW J ˲ rK DP?(ݬ^3[, E܂uv23o3OΚg,c g3zo?*ȯ%`cQ@2g0Br bQN$de$'edHH@ߕPoO$kF_ΏM,O-MLƧM/?>st4<4bǓw/-kh(jӵk[ tW]U)O66%ԉjA1jB@~ /h*<ѐwdTTG=cMCF,OpDyEZ1_VKYz[e΍[E׋ ()1ōAx `02$ ca"S((B6f_Mˬ%k%"UGay *mq(YSPf,N5eg'd&gtIY B\ endstream endobj 234 0 obj <> /StructParent 100131>> endobj 235 0 obj <> endobj 236 0 obj <> /StructParent 100133>> endobj 237 0 obj <> /StructParent 100134>> endobj 238 0 obj <> endobj 239 0 obj <> /StructParent 100136>> endobj 240 0 obj <> endobj 241 0 obj <> /StructParent 100138>> endobj 242 0 obj <> endobj 243 0 obj <> /StructParent 100140>> endobj 244 0 obj <> /StructParent 100141>> endobj 245 0 obj <> /StructParent 100142>> endobj 246 0 obj <> stream x[eq&~~z)2 R -i[h۞`^r2U ͖]U{ًo_]w+^)Sv}_R*R*]#Kh9˕r_B-޴52j!35.o?gJZOx?ed) zxՖ}u|;%TrK8ǪRARr}y X֖/9rr-֚2ZLY  1b)1E.bBM9Kֆ4;hMQ Tc~N1HZC(qʾBGZH)D'R %5ϰTC굖9J評N)@rɋ,moK)ʗ?y/L%Mͯ~@LPDڴ^;ZAjEUu]3oS f>"F6MCKnTC/OAK"Ŕ 9@t1WRB̹_c豔 Z,.Bt EC,EH!J %PfP5V񩄔;QB;맘Cc {YjsQR-Pqϧ4ߓ*GsMrsTJ,1iz2s28 ֈc:r%$:?T(i:gO9v`05+u}A UZ (&>bC+)Jږњinp*=O9³2riā빪-% }vP?6I0IN:G#ibJ}ߔRbQJUTS`j=7_^B`'y<1.6g<<⯹q-QO[b)moq#.>U#4__婟zo|n7K̍ke&?tӷ ;|:J!V/(2< Tq4IJ=FzFTz*R̯^s%I@aCLXU$$VB%Xb)zb#|*T{+ ^ڭ*'J $eSp2䘃ԞPOucIrH+}yès9wj ,m4B)O*̓Ȣ)tx4)zU UJF|U=Ws̹;Mq2lVHj"{i$}ms?T6 y<4Au nSW%0N6C,lJrbf쵆lET4:Z{3ΙZu@P\ ڵ 2BH_v5 =Ym/oCkȼjqy kݘhްh{+욨`ЀY!x6%JY_1~}Ᏼ =|eY@ὧ??e{ [cj1 S l*1 ?&m :-js {Nr )zDߝuAqG+o??^~o~¥]Ƿd7U~Ͽ?~?7߶ѣk#ľKLin#@˞UҼs]lf~nNy~ V9t@99"ŜܩW"^U7auovw7M@mEHۻ wk콛$n4 [U ÖV pw.ZCNխKM9C;2glAg|8uyКwhZ=Y6(?慙͟| >?gy3?_کw٘fg՟av}6fki"YYYmS66Vri%{WXo[kgsua͎;x8WJ\vGC{9{(\j4^Pι9xnjߛ<0S8n*} ii?`1kq/1Úۘùm6pss׽xpS{B? ~ʘ4'1M =f䶵S津sz]vwNFI{X-$4SmrCG EkQZEkQZ. ^/a]!5P#.>%T #,% FV"P ˔;\D|$ZYwcrVS/D%_I kg֓UqJlx%(X'ވqb-,D)[S*3 &dnzݔ gpB9PN+T/"A/(dΉQ^^X*C $J-s(Hru49 r3@Bni&:%#fNSKSn.FB"T;tBSd tnUBf偄_Wp|{Ӗkc+|nO7e+7fdK[ SH^ <lỏ_O܃Gs%SwT]GWݠN8ƨ996:Nuؒp)!KN+֟NY*VW/oS+wR:wc1.&yv0)ÆaO{?}vFJ?\~-x4y2ޖ;yH6/]v;^o*/aѹȖk~KwmNڛgNӥu{t'%--_ٝ*g|;KN_w{~ls~jsq|u{cju2T.R T*X:_ + ILܺ~ab5Z 5}p؈[b tU]2U[Kdeyݚ$`L (kew+ !X<>ufx8qJ² rQ3Zr֑b\@̭U,&$]ck 0։| t=}lj(PR=D"ꇰf+tczj~Ǫ@`-25H<^uWżRsR]sbރpr#f XA﷤'#ozr=[ YO=oa;Y:i?>1~螓)r?-Nm.NR8o mԒ:Njo4-=>PRiSLċ|{/na=Ž_}rK؇CGuo娼r.mYrNq:J<͡o]iz?bXOĽNܻ-NޫNc,I{:٢ތ\,߂rRbv|N|Ϧ#p~ xyLSͯ yf-/mnt:DV7 9+t ZEh`ƕ`R9R9K ސefqj3\{Q7T# "!)wQ})ַTq+ylG1DyN$?RŽ "9cj:4oIl36S"Zu{U%m$jjLx`~EAEPUe`Mi:W2-*|"L*3e$Jw,r=+سMKvg 9S1rLZMIJUQZY|¢BfO;"F[r7O2_#L{3'~aauwvuyt4,Bn߷[:B4E[У]ԦLl=;[^mzm[֒hZU)Nu܋u%ؕ y( &N9kS5.rfBmMLcg%Ϧ~=&o2hzGJ̈95Lm.i/|.mdL]?ҰA6ǖޔ#MT'[H7wEO AWTQJ6g5J8ʈ)[B䪁"$DDq2?=~Y.HjIGʥIJYψj) iZ1T5;kL0Ja_wMn- o%:F,gjQ\Q?}o˵P{[iSrC|C֥d~hh%=4]`h^\dk@<yg6h9UBSxj`wzɏoiqbw\r٦trzt,kxQK _v ]_S[sqe2ؘ} {aL΅JY?26e K|kׄ I"_+2URڙ)K0wK \\k(=V] [_fg'C̝̗3"&{~ 6zf-.0S,2+0#-DШgmωT͉s({v}_{;3cgnߝb%QvΥۊ'-Ift("XTKyMT/REbW9֬r^qJ;)#UI]'Z~gCv&nOxoqZhkϳ9p洙n1י3-1g[}LwƮ?F%.=D_4/ Wg'$m)K茵 ۨ :T eҴ]bHz&w0VdM(9*P%T9giXaEWO`ee!+3($N^i[|rVǺ:l@9#h!a1g1ye j*4ZSRb#OQ_s\Y(Ruħ뜍!l1&GE=Ə^V>xYm89ߗoAgk} Hǵx{>)I qnGC.E7ُut[g8H>Ѿ=^թH*D[^LǢ?C:qf?g %~b]P5VݐV3yW75v?3`Or{}CmA~gc]i5pbɎw,O{̓M?"ҿ0X硾7&R8Pˣ_hFξ;w,CϷ4xJNyh滤m|SM?9ϖT"}M%L,yexRV޲iҷɩST2&[koœ5΢c(镾l#-}U-69:ž5xǢ)gǮ_N6uNln=|4Pʺjٌz哾 #E{q#]3ݭ0q{8/s#]ṟFlq=c|p 'Vvև,d}9Sd6?uK7˙z+Շʹ !нmhLᕿ?x >Xkn)f #=Zܺ;mx2gMw޽aSOiܿ{ByXG _j}6/c9;p@6CkDL?zp.4:fƕ-:Hox3w{͏Kgk޽},vi-(k~7%n^~M4%3z:2uu}?x|;]x]Գw2zǽЗ;?=^Nq8|:fOoXpi鍟}eI&7Gjl_?k]zn~6E%s[k>䁫令]Nw'G ?SU߂r+IBX8stKege1L`ʹ$9rf+7Vө.#-e=&Lˤn["MEMOs/|9zpK3+g_;h!oӗ?]?DO?=ĸJ`>|]"J'._H#J- D%J. 2!A *_(IмKOQwJ%J9dd9Dx*`Q7J%…ovbU=ovb R:`WɷFTvǗ`wn;Uv=f\u^uKˣnzlUum!^*:<ح8v+G1ixmeaכ; toBvK˿C%@T<@%kL9f$va6PꉦxS1-.\X*.6rl|]"*_HdUpUrC% ǎV7U-~ˁ~}v5{89!n&x9u8!o){JpCnj=.5񘾦1%nC8i5D; 옔54sO]w_]Wu]Տc|-nȚ_ʀqjCN ][53t~*nӽt~SVMe_u,߁;ٽ[wHk[{ N,D[=^r]7ʆvPEw3sz;-#*dmC5^9䭠Uy*_*ﰚy8TmHCy}wxx>f4~|1;won\Ž?8??8sxûn{G48m05붼c"VzN#N*CZ%kIZ%ڒ@R*B*B*B*B*B*B*B*B*B*B*B*B*B*B*B*B*B*B*B*B*B*B*B*B*BZԋ.[q6(& /M53Ra%e$6$@iK>k%NV!^76_)=r?X%cO4h)E݄ⶼUk##f72 ]avzEV/bw vAFn%X[]nZZ{fm1ȥV'ֆI7Scf{ų ɮ/'Ok@m?qzCL )+GkmyޞZwx7-QM7e cvZ{l3xD{>Z3Fn 2|y" $^ -Q瓢כs`]^oWykp\8Ml֛aKh/:0c9Y^Y^+W4#uDtqڣPU#7,-Vc@xVHOuhx**#Le6ĩ4Լ"U/M9㤮M<,waSE3Ov>Zi̢Wv r*e4 \G! I 6pm,@Jai9;Nz%rt|1\WYsҖWJ|i`k &!5O҄S%҅XHu\.[I,-`^EJ#G{h`ōLR\s@g'h9\O΃\p#b/o"&S 1 =noS@t(#GW=Kq$Kdhe'81 RZ2lȽ$Pa G83x}lգR@ZvzTjqGB]|TjQ.*=.wԪȾQUlLwJRLU> !*Z!+U> G)MwM6՗]>jgvw=]>3cl6w)|R|5׏jXfG\Ѵ֗+/(*<14(2F@"yn&)ܒфRR#:YW'O#^d} [5{\brAnXf`$ZEak l9Ym$'Սthdrڲћ^--SAn(h0 J fW9PW akX쉰Me([D!l)q]w[1cQ`t;Ɩ+iTm)|^ clQtDx`l)*'Ɩ.nRr`lrEx0:oR bl)cKɬl΢Țg8 Y߀s*Q|Y59:kny@aJJ̩O:Es[n Jঋ0nb٪&!DŽ5Uڦr6cʜFi]c1c.ReIWVa,;{]Wz /8o'b%s{d~[P6Pmq:^0d;BfV.^r0l;W?#5J1[:j f@\?qdhw7pčS .eߺ>(-}wOU.6/q?4QWS8h3 R4h7  W Sf.US|iAnvGbD, !dw0˽}_֭M:B5 JJ (%!]F/nS%PD\yE0.RYM[o8$<y7ͥAxכ?# I:(Z!-z^(:FW/Z#qrP}Iv>=[_G^{(aFsw{wGșucXC`A o {Wt9>b x`F/hVp`0U=Tнg)ѣծK ]mr|[lIJf'eNƗqFJayu:ovOo4NfwmvC g KuV7XgxDPW44gzijoS>oʣgHPY柾YsO.:}ƫ}n>o7깖jΟJ;T))ïo7lvsf_S|7+qm&~|;K_S;ov珧/x ڏKf%Kł]A\1~|_~eT8oη+wgmr;Ӆ"w 0FIwx[.e7x$!烊ӦAJEJQDrC yc 񔚯K ߌMq /pEwt@pq_iC؇`Qџ.H󺥶{K8zDCi"ȏpЊ>ooy@$=HKtHP="Pu1&D7&<5Wnk$/@hl@Xr??HnNK[a~^G`M)TTLREQ"_IA>5*j1"lHz}OC p JFK6.Tf9 g^tR^qG97.i8Є%(DbjVo^$SLNt[VbءNS,^-t4vdiY6o7˘p jjiᓍ)bJf]de,dd(an21P$ mKVL_bAˌ 8r)C$9_+8ͳF +>M@5m@Q@ qd,n )F |[#\.u75YsQ#p[#5yg@jroj|W#qq[#5A(1Fg@|~\2RWlwUACqܰ}u"_͘Yx[#pׁ%}y"Y#дF*mȾfSy__oķ WsF+-eF z_#USfbY#c D\75`q,pnv7W DD82?K/7%xvW"k}T"\}@D WDijD 5Y'w%hFnYVc/tNhupWskC>d0'#纙ᯧ ߾~SA|15ɗtZwBSCj1m?&i!t9mZݝs®G@3-ZkAZԂ FyWWWWWWWWWWWWWWWWWWWWWWWWWd-p9*Eq)u=EA]O)Ȏ|N>+ m]O4kG]OS/g]O'wu=Au=iκF;JD6rGӣFQr}9Xuɜ<= jn72SVu=ku=kDN;z֨ 妮'ȚV SE5Yc ]]Ϫ'$/ۚY^þu=Ͻv.>x]Fq7[o&비v ^gyygyygkҮb(Wb0*+C#ۊ U b0A`*RW qub0wa*̆:+58|`{S1b0hwA|P1d+Y1XALW*Y1_1x+bl#+OvKJb𒧯d+/=F[|१bRh_1)U ^+;ˤ0*3xU1w($4d΂T2`+Y uMu? R:|.تoY.`+vV*ckEdI]J rZZ3I[Z7 T_0xSwUwhWk]ZwVNj]u3mkZ v-]u wCznyK7nls~w K1>4?54}$?*|`+W Jf_/zI/g_Zw/[VTvQwvPv+_ XgouN|oY%N׏4&1ރw1rg+:Ǡ]}볶SF[/3UڿO߅$j`KWT{f"93z;~~2k*ӭ=8h ;/em!_rǥR⬥8 "gq(.*Z*Y}\48v+;f,C|9Y+\ҳz{_}\4A>83>Mq=B> Usn|W}\}Y}|ڕ4ލց㻳+Y5OfΛ+?Jo^\.V]~\u0㦯,?5UV*voqͶnʏd]qeۣ8,,?.ʏf۝R$Digq8Hwǥ zN-a hC!xW|Ćijx_|Ļ >(>.gX>S->2vW".Yd>ˏ۷+a\'\]|l Lp7\Z^"} N-^,@n(MmY|3hۺvq3Ļh,7ʏse]#útRpeIM)8}?}f74Ꞡ)=hJ4)[ДҪaR8|K/)ЅO/߃4ђ;Y;Д#@SJ#4) Rzr`HnAS@}߆;{ZS@|Rʨ|-=L*pPO b* qfܕJyVQoS@L)\N/` w)4;S@a)(q~<SƟXxjpk{ȇ 9dX7ӽ9|׷Џ9`*+&yu 45TK:g5U{EL1'b2c^UK)H:)f Z Vk5Z Vj*8~ ?텟O{᧽^i/~ ?텟O{᧽^i/~ ?텟O{᧽^i/~ڟfi9:Ԓg#Td-%AJ#.wVbd#V>`\Ώ´ST[Y.K|$ϭܥ>wvfj֓#.pe7rd,g9RS$>FIh6%޼ugZ@kz  qxHL3^$)Ɩc,zFzL;d⧈4DњudAkG{bm;d<_9Sv hLy&췌Cw̤Ys "wSD*#NOlq Α.>-M<>7|4/SǠq+Yi; f ;^qzg\~zCDZ@= * ՔXIؚ :f H3FDk9"H()dH̀{W1u"kVU=ݔ EtTԳ$(cQRb srL+`]ZqB& v 1J9g]RE:RO0Z$ ⡊dZ)pC%qD(XU#N< 2 *[eR-N GKVu57*[1>|yVKͅoE=XZHv4j-a-nqp&zSyH s: bk>M3<4@i8a^T@SGvf4l-*VΤ'z5885@*̀y`lӐ4UQ1:5mguoqfxcm~#賎w &W@;HD39jZC[lۼDxP'P0؀Ϩi‡ ǫWz\Qjʂ3U9fJ97p0[paRWxcH4՛*cc{o§|\y=D]ZtW2(qVsgӘKm0ż}T5o5T- M`b|PpFlYn6*5* ?OmI#J2SK>AMR(.QLT[4T1y145y<WۈLY|)i\ִexi4LNbZ2 Kn4d K_̞v[i\?0ϭόvrY7i[}}OB_a [jA2Y1D"zd \%au`,.+%gIEsb%*e{$ٍ%MzcN@dsdd!']+^/>4 n1)z>(:5L-B#+wv~V(j$, *GDg4}͈ 9И`၌F~G0$2H01M TzSsⶨDINaYC&#+FF6!5(WiRpTn QnC~Xe(ZD *Xͽ pAoݍXGU Dj^C#+/zUζ=@[EԋW6Ɛr A4nBuYՅb{+V It ) 2R\<Р6vC C㤓>Zֹ::S@b듈}+h +dJ0˸@ 9N$Qh?и[y%v+LZA$mhf,ࢵy"Yvp<~:DS"vb3$)p)^D+x>%E+hj x˒풶#pq{CY^z ѹv'o? ,pRcf wBS9j9-?a9 ]͝31YEx%DŽ#T,#G*uS`:R!zpcP*+%SC 6T&~Եf;9 Hck/]2uVuGy43՝d&\?P JXS€ȡ{җq CnELB&ÚV4eSLЀf|8nX<2FH ,kl&@%~cD8i Dᛈ > stream xřXSٶ (ba3GEѨ8"EDJ8"JU"*H( JB %Jz;eF;wF߽r_k^Vg?FlvBabD}6kZ <ux P[ؚ)ǍD y&OMMeҘ| l CaEiDbw yyzEEEx<`*=aChJb8kw֬YsIW y7$ hKzj3|@um `nnnk֬h 'd+kӧO?IclŰ3튓v\6c5tlhn}3zQ ?t1eթ-mO{"sx<RvIelF8\sоL(l7IhZ]NTׯ212 qD9yōݽ/ZڛN# vpO:ٌ2a>ڟ&n9#߬m/iYT? _F5|'/FWh(k!t@kH}x ˡ ]< ף6!N8GXV$-Lm֭>롃?'Ɣ0WN v+y̿XtߩVDF"V|'326W4$U~!ǪБh89}V;\[Dfcl8*a]xN؊bP6F]@G\W|x(SO冣6aZ>?u p Jú)Wo (ƷNwEr]}:3-%=˾TJk.(;YRC鈒ūV "L >ɳaDx"I(F5j!*ׂez%%SEt<`x,Z\bMa!麧n?nnWpw(~HRtq#UTtƢ8^w`9X͊lB"ǘ~oP 8Sl  ֝ve3h8 KhWO9^˭i[S ?|̙V_WlC.5NK kF) {"&(T 2Fࡪ$pHD*t=\@B;$vA Xu!7ps8+Gc\_.__"l 9c5?ݼ(U)(~ h-lphX6^xnWB{גoY ~NfB$%({͍J 427Y( yV&f5Bpвkg-RMh2a7fkeAdg'd~p#hxҎt[Z444vR9%.l9=YhATLax:ok_o4Z1otvryP'F4XEd ꦶ8_H#[OL.߻w'l]eq$T(5lc6 `W( '=Y|]RWs2-hꇖcoXΪ %*+\G>DZ[/IKSiۯ5>lLdkk=얀ʃ\2.IHti:f4UZ9YjSSJ> ŰuXsLA=`R\0~lmCe@Yh <$-Aֽĝy-/|!+D3x= Vn5tU E\I:_N$GiQo+N{5uZ'U4Q2WTM'/I6V 35u7eQmVmy}nyke}ϧ:)!q(^Y6"'q\G;>iGF)g/<.yT-0~8)Jƪ*|˦ i9/O8M:vt:`"l%g ~܂پlji?$Zi(&+6VQQzbIgq,/wSitEX0U 9HN-ET,Ulbʼ'B ܓ8 !|lzLj犆siE$R]mFuh@f.Ck.NY`-K78vx1nۧ)("/ ۆ@cm6 j}X ~5U6Xz8E(6ߛ uNio̹\u&R\i`&1+U0XΓ'o7l~nЯ“~JkZZZv;m?;>חH$ZYY| 7`0i YN{S&`+ 8s d: ,|((DSIc)?H4\٣Dv#ohw: N_kժU&mdF߅iceosl5gJa)è-*`;OTcٟ^x[y8Ge#w $l%[0>gqڃW,D+C "Af"r8PSrrryH~;vi7 [NauyG8wdn6'y;,Zrf)\9 (!][Ħ— ~2F|G秛BjK;=<`֚L33!.M0TBJEP"썽vNCgPV9@EaԀlbA.[n)HцpЬurdydxЕO333THYYHeͦH쁄W{ y ϖa026yE1`Ɓ :Ctn1Zпos_q}iV_Cyff!G\(AvTm5 1Ȩ#QDb6J;I?p.B!-6G? F7gu9OOO7ɏ@i)Q,wRH)},[ R? 0@^^^QQ,sfpG-}lfW}|"@~?w>Z3`#;m_ԕk;~p8\^n/>̎܁vTgUKM'ͬgMҔ* i@m05Ś`Ҭ^XEU~G*`;kG "E\ `x[_j/HdnCo;;~ٟCpp0g27/ ǃASEz4Ic*;pdNV8WV 8)oP6e0<@y󦃃ЕF\ 9amQ[^J]>E(L3([A\OT-T2GEP̆"Yᅀ/<F bcc%&iitPt R8.]tޒcU T`(vb?(e5 R>.==^ endstream endobj 249 0 obj <> stream x+qﳍ12@~\q,i7qErY9?A2k5m-f_}{>?B7BVpl@8VPJtLe&' %CA#A4_2ĖPx6LG5kʳD}šJ⎱VV1]H*À/5Y4 hf 浵l Pf+?h=&Aπ;۩O/rOF|pi&{CO$e=4$otԥN3"^$k 'O] B( S[ LS endstream endobj 250 0 obj <> stream xeuPUk(www&7"a" ("! JwJH HwJl:>7f~Ĭ>kI0$^^Z[Y_XXzj~ea՚ǍK֗|yt·+{;qg0'S&zvp,QbI<o.---.?}z`WSoKPg@g'?_޿ۍkYEo޿^Z]XXחKK/_]zn%'3AAZIˆЩ<*:'!Rih,#1fymiN啹CCͽ-u]m/>Ƿ~ۗo}(]L/,/̬.ͬ-O̬̬,~msm~yaWl.m/o,|EcQ*@a$qD&$$TBx9```oK_{HwPWg?݇߾c],Ϯ. ֖gW+3,-Ϯ.ͼ\yj77WzK- h4Fǡcq,Q)"Rx"dR\Pmo{pP_kGhwpw䓟Ƿm^07?70/X\]^[Y[] 67gg\y:~,^3ܿGA"aD   #"XGcIT*L'R0e اlN,- f^ OLoh~׿_?ӗ?~zM007062*XX~jmsceqaO/g08`<F ! [H!aH q>HR*GOܹd|ѭ;}M#=[y~l߾~mss sss sKs++[2I@"0X  0Xabt&@EtKx4:,*(K%D9*%.#cX_gO{'~~o?ջ6m~aՅdiiY*A@C E@$4"˰pI$"Ơ ,$O\F\ľގg?_?}?ʜ`fiQ<828>ڛ}\! ed P$Sİxe6Gcà8,DbPt(` x 2b|@oTtHaQn}M`Og{Sót_?~ۥ߿Ͼ|.^\̾\^.,XXY}j{k N$E$D@4-"lt`>9MQm<6GH琅i4&Q!yU%=-͍۷֗V޼[~>0˧Kե7 _>n|9gA WRcò|OYܹ]I" -DVQ#J>s+ˊngoFou}ὗ6ֶܬloyZ7o_o cQ *A"b){xǓ|=*.ֆ]jޛ{;7aq«c9)'*VZiq591yiaQcԤҢ궦'}G#C#>;-;vde|kl:|. D4 1a)9_U7ty$!r"'I^{J2geƍdv9@UĄtTŹ۔d/߸P|Խ/_y``^Z|Ԙ䚲ٝ7+:+"(@@(v\iӉ"gЋBodž>IOL$ 2S?Mw-'8G]Vct-'f]Ҳۏ/iﮫ/|-XۘlklLzFQbd@~FtWcy͒ 1&MB@KsRY2|͑\M>gF#'̊Oļȹ2[?_4S sZMڪmvC!]n}UK~jy|991G _VF?rᬉ"/."{>Ս-Q~nZkW fgoȗTr0b4"A%Nik:ĚGߙx,^agR>-}^7U=вo1%.6^NOҚ\,:u-%ɖ 2_FARQ+iy^;1!Յ e Rnf%26VWRڭC`a0 ǣt<Р3 =]:\8~8Փ[=].K ?Pǭ6 \K}ǽŒܿ6~>{cDOWNTOS1K+Y9'tvsunQV^W~5:0$TRV@hF@y'[G=0$}jlAN}G"}e|zrIsS> t3sm:{ԉ'mkۣ}Ʋ+$*;(8JW%$SŐ#$=aZi:c=sIqtNךҤw]տ_[h-%f1RP_Y'GoB+G v74VW\?|WHt\f P$$ȸSG꼝B}&^$ͧGOŇ9Rfsi0q6Ps5ق72,zV؝|Qގiq/U x;i=4f}+0ᤓK 8p Ecp(?X<~'ittBqA^\mU<22[*S/{m.[k4k~PW\)/'̴#}&suimpp7;sGSC Ph$ bNPns~w}_( =u?Уݾf,g<{w揍yӹQ#ok2_-"^52\{yx6*6,yiQ@DB`P,z| ϳ]~c/Nz9 {xu*eA_ꊾ6}SXv/-yYGsqҡnn aa7z[F2nԗv6 uUt%4\J n޸*"hOF@CH8hiV?p .zصi29jt1üǣ..&o g +Mޥ%\qΎ¬̖v9]BbZ:+sOkU" hd|ÉK~ax x8t[jJjU6؛;X $Zn._h|##^,s͈MNji58<;[YQw-=>5kIQCa3K*I u;Lcp$p|k xO]_[_ۑ~cO:\mQÑ.SV\`>}XYFSMk9d'Vun5M4Uz0 D BB;, {88y;ƄFDED9m93'k谬@fI y `a[ (b-] nPpV3Co{lhl{ン:zʒ<1vng]㮈p%$T:J㲄b4`[n*lGbA\Ոݿ+^ O`2wG}P#8)imuU w14ڵwgke}N2*8t&ɔ(D* 1 H0@@!Pj;f#/ww" R wDkkgq!!8*BT V[YE]N^KIYSQINDHWTHYJ^QB^.tQ ӃĤe$d8Ŗa0˗F( Ia!dc#¡8$ (g@jtjF.N N5ztxP P "_R/,%KEtմW˪ʨp)B:66Vv퐓Q Щ 6SAcR G$:̠3&"Qd<FHĭk .ɤVOtw L|<ЛS|ЀD# X*($+JQ9 9UyUmUmeuEo>mݲ "> stream x%gTRHh9ֿ^tHRAXV" F@hCH r]皽g53w~-n⺻?jQ%ǽ2݊ʨ[U1y qqyʘY}KL,IjARlګI9/3r\]ډבW3Ss`n!,:Km`veHnmPNU|9_E~XWF+ǗWSWSOԐUU?$U0^V4'WS/p J+b3J- B̨T R2TWȟwXyJFt;Fx\@ΩI]BAYM&qId\K*Mcgzc[\;\;\G:3m} /75=*>|vǶd>[_q-i֔o5t {m+}g>ԥ*h_u0LbJJGM4jۦ4J_:'ܟAˤ)dV&i 4EfeR3h}DW7He,:KxoOwQz7lfimtILC*=uSZ`N\[}c~u q!­ڨМ/年?i;cy9Z<keЇrhYl`NP]HǿRYMƙl*#;H({>G5ڧ(ym#*{i;]']<?*J)`B>f?5~2#mmm#m#-LV?ޗAͤ}&w}n"vg?`6jlM$5$1+i2 g,gQf~tSOhV2:jUӠ'_9sC YE}'qySϴM-GJ{rˇD{"Rb)iw8'"#ܒAj$7gt{wMX/skpl}6ko9׷?eis-6Y;K" KneS@6%;ɡ^u8RGH'7'33_=_t .a WT pu#Uqa3>;ڛm=ѵu?}K&΁  H^>ĜZgLlP9)CZ.Zm?? (HuX5Q5\=R7^˩cMFQ^82.$"6crx1n>m'3L:#((~p7U fd?xvI?ZYs 3UfFMǮsC`"b.yMw[9M sq#ɥ5j nl 7.$pVMkM+ڤ:!dL-"-RؙE,{bxNN':b{W5 r7 n?~Kn1=zHۣ&qP _MS;V0BБ8[3&ᗍKGEł!nᰠ`x1e}l~MyI|ؒg5?ŗcj#*(MVD /Inf i5ul K PGЗ9g&sn v1.4?CǧbW__纼Ϸ}aU 7/3}_ɮr(.t*9z1p2hh?xߓ,*Ol*q=iӿΘHW {9FᲖiCbtdYOK \{> pD-wžyաkҿݮ '[Sݟۆ :'Eya7#])s78쿔o5>p~D>k )CZW>T1Sk l~xZ6U+ 8i ?m#~yU^ 2*M;r &y)AJzϸק1A" !b:Wezx8FhMq5 IO˃4oBR cGm&iY?-LmW\TLStHk×}9[.6:ˆ+Fg+'+&+9#9*u&a^Hgy9ArjWPrp *vѬ{A1e )MWy蓹݋53[:aOU,@JjzH\>epD `PvSk*g֌LU*Gg |Zi&wea4>'k*g(NZ!yQVSR([z6AlrOٮnhKx:&}ZmZTvkM{4abN@2"1bg5wp{?vvi1"'6/,j_^_ r +P{JN@uIi;uoYp^eU,11h0i>pEjى9t:WPi: l-/85=5EaB+_س!Z\V,KSe*jOe6SsSvEALYR(]9ju} ] ~R2"jYC"tP^(/rаJ0 OL\.,X+KK=k[Âkʼn$ gmV3W!ؔ&hƟv 7bDi{U3g5(J`uj8141 @Hubʮ? a !M.- څcBOiԹhT~.mEI۲k(]Zmr,#"ҽ` \ttQM ̨ @??8`BDkH=OIإ0qkL0 h1;>3 UJ9 ٘EQM=# 4 <` \C7 |_q&tRXT:px"u"0u`3 E[:35=PAQ|[F:iO (/"#Ps@ym± [lIpIv,u%=[2"{wo>oQAbp&ߪbwG0FaC'ֳ9>3P?P5:\43 "qR Swf+}(Ǿ @zg"Kp~(6}<\~Dg'#C Lrv} :. 0u&X\'{Ǹr@gW5kȾxZ\D"sBeb:Z ~eBA\Ɨ]WĬB@ D\$_>l2CsE9ܐmVFWbA \-e$|Z@@,T(i IES˻<cJTQ"UkiPy4%GoAp*nw.3 W%V:t>޿1x:m?CV((:rϏP$À8'qd? MzS UXR=-A֓=-c;[ynMZEr@M,O-.,Aeha{i{F0-օM*48߄| Cq0h?o+9?9)lix*BRx4ex7ݲ^%j7P)G0A#mÐ Vvj)8i"ct]L #Dp2y<)L}CVAFQgn{o*c$PJv7/,.7Eق!ZzA=Ѐepkmf-`gv p8bNJKWv^q>8n4EܑO}Hn/+}Pk s$Ŭ/@p%CW o g6Hk] 4 neӷ09Hn/6mhL+FJ'kߐ<V!ZmM/oV֙kJ 6YkP i(ϥ=X:Bě#؜^n,̯O7GEWDJ5mMlM.C}Kal( ̍)H`Gu9uԖ 9?q(&ђfa8J[T6 Sx6~_ϿҊi/ߗ'DxkiޟSnHN[}'Au)~ }i8D0x6Yا%G*ȝܮ#e,&h[M8{v3FkH}Ioru| <-={Q+.SEBf5{E4$-67yv8DA|aA8t< N6f;T& BC6 jJK@7 0aO`}t|KsILc}FݤQV8&UwKCslXK%[ \ \b-@dѬoVm56_wf*pӪq5Eح9k0qk8`pG;Ô-v_Ls*K7Ωy,|s'2#vx :D-sBڔ:D,&DσSϺ ;#mcAzT/2]gpȝ/MIVURM0@]AUGI$b_jjoΪOWVAv/9dbvC?5Y6e8y(y0k|x5?qx:56ߓt }_dSzi"XO۠e.yц @+hug9gH꧴R" /(YCt>Vbe]{XO+TI+6)kjl 5cՔgH_;w$g@QOeyJs\ ;lԟ꾩I->5Ifguw ?]':L&\ dTmnj]TvW'-U\=8ᏩC۷ZԻrs~V6a vaZAO߼]zn@u endstream endobj 252 0 obj <> stream xM @KwExZ"!1-F#kCio'Ad[d v/a6X; ` 6ưUE#-4+"SK'E~D)Q0ln+Viy&Q:`'ɩ+5qyl` 6>9> stream xQm0AeT*eq Q:##{K=,F< єi#yh߼4}ڈo?>m7My6OGSާx@)F< єi#yh߼4}ڈo?>m7My6OGSާx@)F< єi#yh߼4}ڈo?>m7My6OGSާx@)F< єi#yh߼4}ڈo?>m7My6OGSާx@)F< єi#yh߼4}ڈo?>m7My6OGSާx@)F< єi#yh߼4}ڈo?>m7My6OGSާx@)F< єi#yh߼4}ڈo?>m7My6OGSާx@)F< єi#yh߼4}ڈo?>m7My6OGSާx@)F< єi#yh߼4}ڈo?>m7My6""w>N}ȝay"rgtXާܙ8)"w>N}ȝay"rgtXާܙ8)"w>N}ȝay"rgtXާܙ8)"w>N}ȝay"rgtXާܙ8)"w>N}ȝay"rgtXާܙ8)"w>N}ȝay"rgtXާܙ8)"w>N}ȝay"rgtXާܙ8)"w>N}ȝay"rgtXާܙ8)"w>N}ȝay"rgtXާܙ8)"w>N}ȝay"rgtXާܙ8)"w>N}ȝay"rgtXާܙ8)"w>N}ȝay"rgtXާܙ8)"w>N}ȝay"rgtXާܙ8)"w>N}ȝay"rgtXާܙ8)"w>N}ȝay"rgtXާܙ8)"w>N}ȝay"rgtXާܙ8)"w>N}ȝay"rgtXާܙ8)"w>N}ȝay"rgtXާOMy6>m4}hєi)FSާOMy6>m4}hєi)FSާOMy6>m4}hєi)FSާOMy6>m4}hєi)FSާOMy6>m4}hєi)FSާOMy6>m4}hєi)FSާOMy6>m4}hєi)FSާOMy6>m4}hєi)FSާOMy6>m4}hєi)FSާOMy6>m4}hєi)FSާOMy6>m4}hєi)FSާOMy6>m4}hєi)FSާOMy6>m4}hєi)FSާOMy6>m4}hєi)FSާOMy6>m4}hєi)FSާOMy6>m4}hєi)FSާOMy6>m4}hєi)FSާOMy6>m4}hєi)FSާOMy6>m4}hєi)FSާOMy6>m4}hєi)FSާOMy6>m4}hєi)FSާOMy6>m4}hєi)FSާOMy6>m4}hєi)FSާOMy6>m4}hєi)FSާOMy6>m4}hєi)FSާOMy6>m4}hєi)SDL};S>E鰼O3q:,SDL};S>E鰼O3q:,SDL};S>E鰼O3q:,SDL};S>E鰼O3q:,SDL};S>E鰼O3q:,SDL};S>E鰼O3q:,SDL};S>E鰼O3q:,SDL};S>E鰼O3q:,SDL};S>E鰼O3q:,SDL};S>E鰼O3q:,SDL};S>E鰼O3q:,SDL};S>E鰼O3q:,SDL};S>E鰼O3q:,SDL};S>E鰼O3q:,SDL};S>E鰼O3q:,SDL};S>E鰼O3q:,SDL};S>E鰼O3q:,SDL};S>Elj!!^ݔi#yh߼4}ڈo?>m7My6OGSާx@)F< єi#yh߼4}ڈo?>m7My6OGSާx@)F< єi#yh߼4}ڈo?>m7My6OGSާx@)F< єi#yh߼4}ڈo?>m7My6OGSާx@)F< єi#yh߼4}ڈo?>m7My6OGSާx@)F< єi#yh߼4}ڈo?>m7My6OGSާx@)F< єi#yh߼4}ڈo?>m7My6OGSާx@)F< єi#yh߼4}ڈo?>m7My6OGSާx@)F< єi#yh߼4}ڈo?>m7My6O~[( endstream endobj 254 0 obj <> stream x=wPھ;ywv{/ I H=!W" M"=]E77=̚w~k,9/e LL!FGs#"aDX9VLT4\2\0++פIo6>,d+dC$p 4ryxx?O~߾;uЙ|v0Ȉ@  kB͏#ǡP@xXOpH(&BE"DL|P3tYozdI_糑뗎WswG?*'Gc~/s|cgqoG.?|NDAiJyB"yB2|<|]<}"` CY8X`UPw[[SӍ%bUhb4%XB]Fn{Z?|@3`B uϮ'O:tg?]<r.|^.0@`FVdiJq! bh0  FA(Bsӗn%&g1ep5a `4EpC‘So^^wF];׮ v-.SBN|}>u+G.x]#BЀtx2A"ԙ:uv:GNL*f83 Ty֚WR'`p E`IX"O`qD4QH<!u4dl`,VDRidS+,۩O|bp (Ӥ۟\#d ,,Oʸl-q*Q 1h#\.c`r.+'ARHUe<&FaݭzHSXȓl:"FH%8xcYB+UZP&I:@jlM˵5n4+^,c3ruQLMЍxJe̙].\< ." RXW|b{m~U!Aq(a,"21: G"6SgK\\$2XfM׺۟]~Y,1P1[Q]N  3 FC"BbH($%d Ct|,gbLfY^˖#mIp11$ E2h D"@(<Os@ƆEW i"'  RM"4q )XD1"fUǒqr6Sa*yZ!O#e"Tr*.N!@D8 p0*,"&(Re'rRZA%7) bHz1G/$$Y%M* iZThŢdCgU@/_oggӧ~CAP`W;o~ڍ+Ee|P4Á@(<( Ąu9ɉi y)]e +258I&MU+jQLתL}BFΨUUwYF^ 7J];~_}˿xD{GyA|QzJ6dɕ4 !(2!0$ Bc#5ZA)e8;P]~4:C!D8E-H&'egfdTOwMm/$BC~߽~Q`W/{TԐ[*X %ɓrdr(4DKK'+d$I.I&C*QWb*^NjF"7=ލc3/߼`7}y嗋2R9|y,&rh|mHYDԵⴤ4CR(+IxEd%2NR8jBbjYav^N&8H$Tf?|l}ly?1\z/_ ^`?`YZavEIJBs<5̏ 2Pƌc"I4QF.2n\Iiu<$W S.ib4( JAʸZ]Szn钩og` 񻿞=qi-y~nuIUٕxH%j&O}~?IjP%Ez=bI~QiEeuF /RxX:J q+)5".PX&h"5"`,Ogf^yu`o> Φўުhou0#AK$2QX DFŢptMh<]`$J,C+Պxz$Q.R,̐y |D+R̬Uκɶ[C&Ggz]5[W 2*A%#VT$x # 6B%&HA@x$ : ]qqBHL3ofTe&*W)R`,UbeT%OOȵYɆTgu뛯G=-eRTg'j2ۗsҌ|:Uf3bmP ARP+WH IUId!F$âPH"'r1 WV\OkU) @rxJ"ITVU6A*2DW%+K9]=BN^^[` #*7 {GGcξp*O 8Z,Ħ3pX҅8EJ&qz6!C.@apKYJKLu%IjBd1("2ژQSl IeD Zi^ 21D(̘p/cqH)]ɋ@A^OҹA'}D%_R^^,&A~^ D@&aDZhl,"r5%rŹ&}X x-%T845 b,* ӑ`rt9 Ā&ϑ)$ʂ._ ş=zՏ?r鴓+(6 eFYe6A*eT,22O?{;_à)T<ƻ8P .DyDQɤ45 ^<熇8q䄦EzA dIA'Pb"q3_TgrYJd@/_O/_ۿ>r]/ztC?1BB8dWsz t'Ο8ang05I',DbB|]\IHNryE):5J'pǧ2u'A\3%hP gIш/#_}՟g.9# t}/zxB F%P'%a 's.Bp(ϋl͋#\< p8Ie3 7E"qL|Z,d` {BQtG`!11!^^G/gW7K>.n]Ϲ^hpMp:~O8tiߋ|\<=?w-PӹЀ 'pHA |2*el*ҹ3OʘTGF8rdhp 0匊">^2,b~P/G@! 8jH@Es?vYπzy^<'tJFCHx1)3͈G㐑P&6 T0YU`7*(e` Ogw NX$4FghW%'cQ.'^DC"CCÃ<=84(KH[wH`77YoN||@DƓȂ8N@8d RS*J 8NM$$$ijE\dS$%I%ԊK^^.{b($헿:[7]:s\!F|=@a~@?O (04 BдB 0d$KLjČe*JBFHI|&E!NWS" O(Trks/#_ ǎܡ/.{1q(pHpwP@c~P20 Hg0 Uek% IQRxElKCwn*+ ҵ I*fAg6J/U5J2q-UƢ4e")PketF(#,[$'K9d,Jt: c"Pq@!1P0f|rpfZzo띾ƎmM56\))!2*sXsi{CͻAUj֕nkNySo}omwޱ掣2[畡G$6_0}*޴^}q3@P~Idםc7mͳӽSt?~<n|zwq`ov'`с֧ъM93M2Gf44 z ohqؓk/&k'o:jM7MM ͯN46XڬCϭC-C3CΉ7/Z[Tʈũ[噻Ko>ގth7so7G~4T7T~nv_VoFozﭵ=V{nկY:xuPpHձW>Dy|U&4:Ұ$xa݃>||{ya`g`{`s`m```}z`iٟiޟ~|`j75:שǟ&&|Tۮ;sǶ{{Llᅙ7vejdjlxxx'膛o`T=R:4l/~uogow=qrn ꛃCK }}s|r~t>8;vC;mǛ-}|6l_g'f񱑑-X⩓ΗJ-ΙGvv6?뇝w~~`w㷝wۋo_7_gק]3j2qeK&w-Nn/N]4m-kyaZud6M y5PTr'ӿܹxw;n,~^o?igӻOV?m|zikm8m{kkUΪegnvvyvkivciv}6?<787Mۭӳ&yl|rhW]t:_NmU=h|zcn}qwkƇ퍽wmm}^{v6o,__]]YYs[o߮طmeڒmu`[-YVef2k2όOLti~џ_r*q߳GnlSpQý{Z-S 6Vv6Wwl,l,[_^[x6nma{uc}ɱXYt,/9lvjZg&GG:*o>@ny|wN͆[ ^ybZm,l.][zޮ-][Zlsuaceace~}y~my~uinuqnyѱXZ;j[,6ul5o|]Qx\87}qV߾uvWK.4?5M-Y67W͕?|Y_YX[_[_]_Y[Y[Zp,.-6a;>WY3i6nL&ںktk*IX8<*,0ouUW\Q]{z[u W*Ϙ٥9cu84瞹Ņ陟hnwl1kO[Yud}c|棗JRN)Lr, _8×%՗_*)+R[~jQaE}CؔuzzjY[9cq~g8s_{?f,YԴml3YG&-C/^ˣa$82T>ƣOWk*UWWV䔔WdQʆIeffڭ6>c9g6juX,?4=k7'?WY ξ6?x6t/ A 8,BQ *//-/*RR^WZ_^ZTY\TiLʉ@ʮoL橙ibZmVf[v#cflSӶImd j{5S4;"Gch"G%Lq6U[rFjNNva^NA@B=aaxٝcb6[m0OLX'L u|:6e=ih?:;lz3l~WIx,$8 `8<όp8"&K@ų5byZkL0d%%3srs332r$\ ,95E&$6>z?ؤel2 ˛zlvptdw=hl6xՇ׊ʯg%V$ + ªQm!Gs/_HT\kbh~q=[/f$%ftL*IM12S(Hd{;0;*$  ` jM[m_w2611 OO :&{m J.[UT&+LxXZjfGMv͂ۥw;n7_3jX%+b\-9l) p?3a"C!x4R/ʐ&_/}^agCMφ<}}efS홗nIE\L@K /.EHDe:K][r=7:'2/0-)ˠ*| _-R4+csd\>7G0Ѹ`c"QaD( 1&aK(#<TJ&ѐ/(sIJ,8RFMtcq3TL(?IYlV&gR y99yi,cVZB^NN?Rl@ endstream endobj 255 0 obj <> stream x%gTo{w{lnv7͚[D`zg*Sއޫ&%&*( T=~U2.?FbQ>>>n8H4R" NDKx#gLt&zzuvڌOZQZPΝgѮ7:s wAnyϽ۳ڊ +OTt4rnݍZLO #p@Ǒ8 F㨔x:Ig&tɆ $#iNePir3rBV($2 j {߶N-<_8s⫯> *J3t^ʗ @pLn4T#IdR.&)d&NAQ/DðTDŒ)^^ FBFxc04$ƒXNJe_-)4RϪlyxsĢ$ !c xDG %c1)o~>{#__|GCCjA^X PD$a8GĠQ`XzB0p.S1Vf* &kF^@LSմd4< b%,K%HbT$cF.>_ ߭NjA{[C]H4&ֺHN+UD}c|g`냵C7溯=Mi/Ս+xXA`[:jW. ޞr{v2ұsnciсGv=}q¨trE{|}n pћx/eshS%2SOuM[gV`e4x{qma]KFzGG<#DHhf,_;3ϷM7}oz7tppᦝ緶7o=on}sckkkTsb"R_f`ýÝkW [S/W/?9?:[z=GK=KK}o,=7 홟G-c54iY}qnOp[ˡ&J'v?>zp7:۵^8ښ?ژ=Z>Z6~usz9vm׬sN˜48?31>dؘY𰭥έG;+wov߿{v?o[ǻmpvvfzݴf]3Z5m6Mӊd.Z͋ SS#Mw4>lj|׶;s/wםo^mmmmmnZ;Yyv{͖cӾa]ٶletX6ټ4=0<6hD- t:߹oomn}ݶvκsokm{?^{jù^sl96W+U:6j2[SK#}/KotOד]>;MM7n5lnih,Y6W;˯6V^mnnXsgce{}yk͹Xul:VˎeaVl.3 扏x rϿnTߨ^W}fS'lUucپ\unnsuycŹ\_q8V+NDztfX&md[̛_N/=_lzLbL @ygŕ*K*oTV-L&Ͳb8+NӾXq/lvcl-mKEerb446dS%b4&Ǧq (jyq~yDC&42*%ҢbX-6f,b7&mqun:`5N^.={E@,G!d"#ʦyW J ˲ rK DP?(ݬ^3[, E܂uv23o3OΚg,c g3zo?*ȯ%`cQ@2g0Br bQN$de$'edHH@ߕPoO$kF_ΏM,O-MLƧM/?>st4<4bǓw/-kh(jӵk[ tW]U)O66%ԉjA1jB@~ /h*<ѐwdTTG=cMCF,OpDyEZ1_VKYz[e΍[E׋ ()1ōAx `02$ ca"S((B6f_Mˬ%k%"UGay *mq(YSPf,N5eg'd&gtIY B\ endstream endobj 256 0 obj <> /StructParent 100143>> endobj 257 0 obj <> /StructParent 100144>> endobj 258 0 obj <> /StructParent 100145>> endobj 259 0 obj <> /StructParent 100146>> endobj 260 0 obj <> /StructParent 100147>> endobj 261 0 obj <> /StructParent 100148>> endobj 262 0 obj <> /StructParent 100149>> endobj 263 0 obj <> endobj 264 0 obj <> /StructParent 100151>> endobj 265 0 obj <> /StructParent 100152>> endobj 266 0 obj <> /StructParent 100153>> endobj 267 0 obj <> endobj 268 0 obj <> /StructParent 100155>> endobj 269 0 obj <> /StructParent 100156>> endobj 270 0 obj <> /StructParent 100157>> endobj 271 0 obj <> /StructParent 100158>> endobj 272 0 obj <> /StructParent 100159>> endobj 273 0 obj <> stream x}ۮmi*Àn6@y?$vFVk#A9۶kIօd !x_4ÏoKIH͗}Ur._k |ZlY/Wпk̡"]׷߷xܲ\-Ky \+4E[+QrUi(F/,EFT_d+./~߮w߼J/o!](ǷǘK,M9XZK܅/I>>MF}(9H߳.T]Y_ ?㯥+MW^GͰۯ }Tf]nwD-W{-˷CS`şV.iK>-M.qxg:Tt(WPX(էP|>@6ïz7ǠUXh)m$*8zeeO)R˃"_0,h(_o~g3ڂL6.;o5 >5:-tV Rۖ(gkKN9G1QmbS#9Dx!8M#}|!At\{$90~#DBI\)ңxKBU˕T9T BIS@%fLB o?BlTCMMPtsH+rm̐qX5 -J҂4ƒ)RHJTB Ă_ ,Zr1蕤[TKm SjH$~% Y4kXҪ@7W($|l<½[M,!e:sX"9(1?M-k2Gɡ޽>ez}x1`Z3B,ǫs␈\sjJ5%*9sZsuɹl&jYC.ٔ),&S -ZL{'k Wog~37{;W 8Sm~.fDZ)E$?D45J"a 5TJPsɁ9 B8 Y!7څ)ӿQLX)p ' 9r³Sj"Wb} kDbЈ." \jMZ{rzjR";S2$mf! qz0Ç7-@2I^Z-=kbFYtijҶZ_eLE:eC;{Qa::aq9[ڇ5"-<.tsQ8D c(|hWȝ1n^:2QXn?.eEg<'KʖhBI T[1m)2AKC@K?$ǩS,:B9}gkMfD ,ZCt=P. Q1 "v ݣ Yk9 Q2s!ֆnxY"*t3͔VcKEH~0;VL6hkBU1o9N$ITg!K~(]Յ=\%KtјbV ]MVhԏe8TGˎb¤igQq8s4c[.td V@>{?aBLB)w{yδÄN,ڃ؝Gײ@v1 WmչZ/͕["2P \MR̿6d3TNLI %xfd  K 2p؅HvY=9]y uovX][Z [.=:xhOxˆ~^>p&e)? ɜZ9dwjYKbl E j7E bCjKjJdD PG#+y˶ _pf!}SFoYf)e˄.`Bbuc5w*{x3d]{=p՞ѸsH'tWGaiKF+b-/ -td$Nl` ( @\Ye@3Shptne@>5W:8T&kt X<rx4oj~yd'ZQ+{# 8M'j@m2G,.hu@)huj=VSǺjk4z΄mhN'uv_{6H4a->20i 9U;L6pl.^ٟ\'oo! |8x:QIkh=S#1(zw@# ]8Vg.% tTCjY8ͥ]vMd Sk)u!P^ WɅ=,5ۡNA jtRQa6 mjPM!VVOVFW^w1wLjֲՐtwEc(4dK?*!R'm|qP8lSb ;@2m8e|X?b77uT-q];`XztA4~ײ eCEA7c' rOAO釐!@~tG@G}tў$= NbπNxĐՄG 3ёMf:s6Y 贍贑z~bcңGD|5\Eշ,7m$C=!:ٱZo=%\aړxزZ<ZR;x0pCtjҍX;$Ӂ6vm |Ftl]{'tp+Zo @e'hv;3?"i; mO9EL}iqm lS{g;{r.o卮k]SFHXq3[qA8 {@y~.CI}p "Zm^Z]74VrY[KJC QhvPӕKm$̏XH:R6(f2ru^ @<Ң|)#%)l&dcJ=5[̞8>Кz`#d6w|~Rz{3RϗJ=&94 Ho;piH_ H>8-} }‚ x|8'm.}fGtٶS|ʹwzߙ?O`X :A.

    O@J*JzDSZ<v-z4.k6lƬXGNAR3`!\lȤdK@QJ]6@BZۓq`z3@0qCEb>k)*Y5_JhMf)gt4ai6UckΛ[v^i$J;8d6O.ȕ" ZNȷf!!lEn$flmxc;ۄXv r]#]约8wmvѰfE>6X#qYECl^sG8(tCU'g D}9džвMƖb[H6SdLKs|D3%;cwyAz(%#v`@,0&.0e'韜X/pb8oC|7r41氘4l#060ж'hT6f=Y(Y`1 ?cN8ud6ҟo 4ђv~GJ`9(fzRr2 8q&t҂-\{ܫJ.tY\|gR#e\.p}/C-GV|$h)n=`{#Z$hU%;1knosY#XtcEȫhE^.v`=ц8t8#X|#E]7R]{ . <`R"_)#v7"Iؗ/eǿS~Om=o9?AEkP=T #T#V$V$OX|+:҅#V$a#H"g`Ek?XaEC<W.8mQ䬞 7;Cb )t>RVZ s 6HgD=RY): )¤".%H,̾Ģ!֚1c_ʜѵFb`]u4Le-EbNlvIzT hp FoWqD)ꀐh>aj8gg+54 ϑ-h{{ry.p吮q][VXX3aZ鄉\.낉&&:sa"v0a"I}'?I*}))n8^.'HbD%*Nr?w̰2ոZ3#>n6_sL$p:AXbxra EW;Ur1 qvSV"7Um l#ngDS. '3b`ىj)&%gc^o|ҊDRZ-f`_r$ ,:6m#L!2[W>m8e'(蟜~K_Wrzo\^=3w,}ѵ pkdYHN4?tQ|ćt>S둪Miӑ 2`}8B>eЧݑf1 jcZBy hc},ZOo&M̳,8>@,m!AmdoxS<@u$=;%Q*S>*S:>zqzUIi1ŲMaRkVIr1Tʐl3,+.IX!PZKCՈQbl6sVǫqH(dk; Ù"2A] SSl+~5u_>֟vrg QҨ¬-S/`6Ʉv>2_/(?y5g:wNFԨe>,矸%v#X_}]}bS/6߮_Fgܹ֫'TiP udZUL}jtXsAhh,BNha \e$3xJ7nz* ]]Yp_w,*19d6fڮ?A 3c T#'Бi|ptڛy ^H0 fk{fɸ2*v aU,'t(n0r*Юdfc1O$pS^x]R%gKiЖ_@KcŌ{JP_q(U-/]5 g8ql_Hj:W 5+1VJZT>9ĜpW`M/Vjذ dW^m}¯xr&r$Afe+Awlv$ TMzQȨ0PWTx 6j7*-!Vd$_]F!g1@ _LkQlZBS]Mt/P`DW.u=FRxՔȈGԮu&{6cFz.hlV P@z\R6Up90gj7FT8&N} 㟛(i"E!Do|7IY7(5cX nHx &oQepnj%jmKek^d}*6T2n!FDžѮ +D<&;E+zՊ,Uu Tr"NJXv$אY[DE[^CCiLR. !دfw]l循C[3Cۇ;.ckrN> kra}E;'njuj֓*o nnD|@rk9݂g{0M#4nv:Q-dl~nk4,l NSn9~Q`7۶Pimitpkq㽏`KޛءJJI뷗㒼?:~ 4wIG#n>`0ɮpZcoqn[;5uww5{V|5[poG_85sSGkCxwӈG ~9qc1l;5∏c䜁t;x9rP.;11/xG}G7;Fp7k (Fd+\ 'bxnpEgs0/GXg}BN%`[Yxtkj kvxW \)xE"SHHEJjMK6dm>P';>B CVD 5k*L xO$z2Z*q/LǣzH5=JA Ջ2_O< ni;"Η ֤VV_qQ.lO]TPF~̸ܙ8lZef]SHTVpb3D\Z-ǖ{w?:؉q嶴jUc`fفhLЛ[1`bЮ]k+FdKB,\lb3RBܪ#"8@--t\r2EE{wuȔܒ1qHሩz(ؑ 3rpjEI5Q3jkӶ6Ҏr#BJ ]PJ%'NU-|k吵K8 QB=q E CV /\KF^g 9*Һ[`~j{ ft[yvc-EXJv)p"h&X#Pz ڞCl]֌e3et3f?G #җg0Kzmzl n4:om}~QcpŁ*?c]~lr*dWƾ & fT&(@j3aKv!''yؒlER\8∿^+SK 3:_}*='cD1D 3.8Nߪ~MpxCiIĮS (,_Qڋ&11E8/GXeTZ8|ٲ(kC| T)0P?F\EN,K?naDRft 9MzMm^\ܩip]{XmeFx;.H1Z|Z8q5%.' bo–%Y'oA/ Ij&7'"(d2b*l&&>VYwD3-rQӲj* l,"Rq0cSq@@̺BC wm !v'[ǴDq<ĥv bV jl: +PĊK*ӾPC[DhkHqPf98 Qmxg ~XW%Rl5]cp†Z%Qd=Վ 5o"-qeLP8Qz*>}WDM˛sc2gxwE\NS.5TKI*Q5(5O gJ3wI=ßq2F~ؘNt0h:1nM7>Ƹx89G 승sD9ub"&C4}ѧbn".:qj Gaf~Z hp?8PDp vmY'O8bm +Lch}U̒^Y) |7 ԛZH@݃qEv6ObŽb+3.Y XȮT_!-&V)@TCYqFfXjĝRU@ V 8]UzRmgoĽ7<כtÚmw'^Uˮz)jQ%,8Nh4i~뱞|>ʲ,Kz^30,lJΓ(zreOpnY+D /|S? aG: {TG)W>2Q+_ŽB^-8ڣ9z̩ãw5}QmN>2ѻo#tc̘nt /㎑h:1fM7>ƷX84gs,te+}G}GhFN>}'Oɧw;|N>SmuO\A>^ɧ>OLɧ1d̿=1B;9$N)Nzjt#a;Ӎ ܝɧv4Ol?\uOq6wJ/SEťSES qw|ҏ<ȧ*ɧ 1FcASB>Uq~'ί=tɧ|ɧ%|[}Oԥ' t NcmxOW\>≍˛< 9'L.'vav/w \i{E\"gSN>U|'Sm|v̲S 'TGwl| Tq| Tq'B)y׫MO!O)v/'j> =<⤚N)TG>.08ɧ5GHCjF@]_A^Iww͖n'N n4Oc~ÜINjw|'v'm' u1֙; ɍmW#3; C@B; zROKc^znR \eJ>q 4fy/ rc#Mn.W6&o⫄qhsp1XC nͲE\೚Ӹ. \K[iŀr.fUJnnifoFVf~-=nWmlٶদm[{j#x . 7zs\ӮbCM=)Āxw[ "ƚn5*TWғq2JH-MnV7!&<rnA<@f!W%8wvbf)ESeˆOJF}QYԮ܏,Rj) endstream endobj 2 0 obj <> /XObject <> /Font <>>> /MediaBox [0 0 594.95996 841.91998] /Annots [19 0 R 20 0 R 21 0 R 22 0 R 23 0 R 24 0 R 25 0 R 26 0 R 27 0 R 28 0 R 29 0 R 30 0 R 31 0 R 32 0 R 33 0 R 34 0 R 35 0 R 36 0 R 37 0 R] /Contents 38 0 R /StructParents 0 /Parent 274 0 R>> endobj 39 0 obj <> /XObject <> /Font <>>> /MediaBox [0 0 594.95996 841.91998] /Annots [50 0 R 51 0 R 52 0 R 53 0 R 54 0 R 55 0 R 56 0 R 57 0 R] /Contents 58 0 R /StructParents 1 /Parent 274 0 R>> endobj 59 0 obj <> /XObject <> /Font <>>> /MediaBox [0 0 594.95996 841.91998] /Annots [67 0 R 68 0 R 69 0 R 70 0 R 71 0 R 72 0 R 73 0 R 74 0 R 75 0 R 76 0 R] /Contents 77 0 R /StructParents 2 /Parent 274 0 R>> endobj 78 0 obj <> /XObject <> /Font <>>> /MediaBox [0 0 594.95996 841.91998] /Annots [87 0 R 88 0 R 89 0 R 90 0 R 91 0 R 92 0 R 93 0 R 94 0 R 95 0 R 96 0 R] /Contents 97 0 R /StructParents 3 /Parent 274 0 R>> endobj 98 0 obj <> /XObject <> /Font <>>> /MediaBox [0 0 594.95996 841.91998] /Annots [106 0 R 107 0 R 108 0 R 109 0 R 110 0 R 111 0 R 112 0 R 113 0 R 114 0 R 115 0 R 116 0 R 117 0 R 118 0 R 119 0 R 120 0 R] /Contents 121 0 R /StructParents 4 /Parent 274 0 R>> endobj 122 0 obj <> /XObject <> /Font <>>> /MediaBox [0 0 594.95996 841.91998] /Annots [130 0 R 131 0 R 132 0 R 133 0 R 134 0 R 135 0 R 136 0 R 137 0 R 138 0 R 139 0 R 140 0 R] /Contents 141 0 R /StructParents 5 /Parent 274 0 R>> endobj 142 0 obj <> /XObject <> /Font <>>> /MediaBox [0 0 594.95996 841.91998] /Annots [147 0 R 148 0 R 149 0 R 150 0 R 151 0 R 152 0 R 153 0 R 154 0 R 155 0 R 156 0 R 157 0 R 158 0 R 159 0 R 160 0 R 161 0 R 162 0 R] /Contents 163 0 R /StructParents 6 /Parent 274 0 R>> endobj 164 0 obj <> /XObject <> /Font <>>> /MediaBox [0 0 594.95996 841.91998] /Annots [171 0 R 172 0 R 173 0 R 174 0 R 175 0 R 176 0 R 177 0 R 178 0 R 179 0 R 180 0 R 181 0 R 182 0 R] /Contents 183 0 R /StructParents 7 /Parent 274 0 R>> endobj 184 0 obj <> /XObject <> /Font <>>> /MediaBox [0 0 594.95996 841.91998] /Annots [192 0 R 193 0 R 194 0 R 195 0 R 196 0 R 197 0 R 198 0 R 199 0 R 200 0 R 201 0 R 202 0 R 203 0 R 204 0 R 205 0 R 206 0 R 207 0 R 208 0 R] /Contents 209 0 R /StructParents 8 /Parent 275 0 R>> endobj 210 0 obj <> /XObject <> /Font <>>> /MediaBox [0 0 594.95996 841.91998] /Annots [214 0 R 215 0 R 216 0 R 217 0 R 218 0 R 219 0 R 220 0 R 221 0 R 222 0 R 223 0 R 224 0 R 225 0 R 226 0 R] /Contents 227 0 R /StructParents 9 /Parent 275 0 R>> endobj 228 0 obj <> /XObject <> /Font <>>> /MediaBox [0 0 594.95996 841.91998] /Annots [234 0 R 235 0 R 236 0 R 237 0 R 238 0 R 239 0 R 240 0 R 241 0 R 242 0 R 243 0 R 244 0 R 245 0 R] /Contents 246 0 R /StructParents 10 /Parent 275 0 R>> endobj 247 0 obj <> /XObject <> /Font <>>> /MediaBox [0 0 594.95996 841.91998] /Annots [256 0 R 257 0 R 258 0 R 259 0 R 260 0 R 261 0 R 262 0 R 263 0 R 264 0 R 265 0 R 266 0 R 267 0 R 268 0 R 269 0 R 270 0 R 271 0 R 272 0 R] /Contents 273 0 R /StructParents 11 /Parent 275 0 R>> endobj 274 0 obj <> endobj 275 0 obj <> endobj 276 0 obj <> endobj 277 0 obj <> endobj 284 0 obj <>] /ID (node00002537)>> endobj 286 0 obj <>] /ID (node00002541)>> endobj 287 0 obj <>] /ID (node00002542)>> endobj 289 0 obj <>] /ID (node00002543)>> endobj 288 0 obj <> endobj 285 0 obj <> endobj 290 0 obj <>] /ID (node00002546)>> endobj 295 0 obj <>] /ID (node00002551)>> endobj 294 0 obj <>] /ID (node00002549)>> endobj 293 0 obj <> endobj 298 0 obj <>] /ID (node00002555)>> endobj 300 0 obj <>] /ID (node00002557)>> endobj 299 0 obj <> endobj 297 0 obj <>] /ID (node00002552)>> endobj 296 0 obj <> endobj 303 0 obj <>] /ID (node00002560)>> endobj 305 0 obj <>] /ID (node00002562)>> endobj 304 0 obj <> endobj 302 0 obj <>] /ID (node00002558)>> endobj 301 0 obj <> endobj 308 0 obj <>] /ID (node00002565)>> endobj 307 0 obj <>] /ID (node00002563)>> endobj 306 0 obj <> endobj 311 0 obj <>] /ID (node00002568)>> endobj 310 0 obj <>] /ID (node00002566)>> endobj 309 0 obj <> endobj 314 0 obj <>] /ID (node00002571)>> endobj 313 0 obj <>] /ID (node00002569)>> endobj 312 0 obj <> endobj 317 0 obj <>] /ID (node00002574)>> endobj 316 0 obj <>] /ID (node00002572)>> endobj 315 0 obj <> endobj 319 0 obj <>] /ID (node00002575)>> endobj 318 0 obj <> endobj 292 0 obj <> endobj 291 0 obj <> endobj 283 0 obj <> endobj 282 0 obj <> endobj 327 0 obj <>] /ID (node00002578)>> endobj 326 0 obj <>] /ID (node00002577)>> endobj 329 0 obj <>] /ID (node00002580)>> endobj 328 0 obj <> <>] /ID (node00002579)>> endobj 332 0 obj <>] /ID (node00002522)>> endobj 331 0 obj <>] /ID (node00002521)>> endobj 330 0 obj <> endobj 334 0 obj <> <>] /ID (node00002523)>> endobj 335 0 obj <>] /ID (node00002524)>> endobj 336 0 obj <>] /ID (node00002525)>> endobj 333 0 obj <> endobj 338 0 obj <>] /ID (node00002529)>> endobj 337 0 obj <> endobj 341 0 obj <>] /ID (node00002531)>> endobj 340 0 obj <>] /ID (node00002530)>> endobj 342 0 obj <>] /ID (node00002532)>> endobj 344 0 obj <>] /ID (node00002533)>> endobj 343 0 obj <> endobj 345 0 obj <>] /ID (node00002534)>> endobj 339 0 obj <> endobj 325 0 obj <> endobj 353 0 obj <>] /ID (node00002586)>> endobj 352 0 obj <>] /ID (node00002584)>> endobj 354 0 obj <>] /ID (node00002587)>> endobj 355 0 obj <>] /ID (node00002588)>> endobj 358 0 obj <>] /ID (node00002589)>> endobj 357 0 obj <> endobj 356 0 obj <>] /ID (node00002585)>> endobj 359 0 obj <>] /ID (node00002591)>> endobj 363 0 obj <>] /ID (node00002631)>> endobj 362 0 obj <> endobj 361 0 obj <> endobj 360 0 obj <> endobj 351 0 obj <> endobj 350 0 obj <> endobj 368 0 obj <>] /ID (node00002593)>> endobj 367 0 obj <> endobj 370 0 obj <>] /ID (node00002594)>> endobj 369 0 obj <> endobj 372 0 obj <>] /ID (node00002595)>> endobj 371 0 obj <> endobj 374 0 obj <>] /ID (node00002596)>> endobj 373 0 obj <> endobj 376 0 obj <>] /ID (node00002598)>> endobj 378 0 obj <>] /ID (node00002599)>> endobj 377 0 obj <>] /ID (node00002597)>> endobj 379 0 obj <> <>] /ID (node00002600)>> endobj 375 0 obj <> endobj 381 0 obj <>] /ID (node00002602)>> endobj 383 0 obj <>] /ID (node00002603)>> endobj 382 0 obj <>] /ID (node00002601)>> endobj 384 0 obj <>] /ID (node00002604)>> endobj 380 0 obj <> endobj 386 0 obj <>] /ID (node00002605)>> endobj 385 0 obj <> endobj 389 0 obj <> <>] /ID (node00002606)>> endobj 388 0 obj <> endobj 391 0 obj <>] /ID (node00002607)>> endobj 392 0 obj <>] /ID (node00002608)>> endobj 390 0 obj <> endobj 394 0 obj <>] /ID (node00002610)>> endobj 396 0 obj <>] /ID (node00002611)>> endobj 395 0 obj <>] /ID (node00002609)>> endobj 397 0 obj <>] /ID (node00002612)>> endobj 400 0 obj <>] /ID (node00002613)>> endobj 399 0 obj <> endobj 398 0 obj <> endobj 393 0 obj <> endobj 402 0 obj <>] /ID (node00002615)>> endobj 404 0 obj <>] /ID (node00002616)>> endobj 403 0 obj <>] /ID (node00002614)>> endobj 405 0 obj <>] /ID (node00002617)>> endobj 401 0 obj <> endobj 387 0 obj <> endobj 407 0 obj <>] /ID (node00002618)>> endobj 406 0 obj <> endobj 411 0 obj <>] /ID (node00002619)>> endobj 410 0 obj <> endobj 409 0 obj <> endobj 414 0 obj <>] /ID (node00002620)>> endobj 413 0 obj <> endobj 412 0 obj <> endobj 417 0 obj <>] /ID (node00002621)>> endobj 418 0 obj <>] /ID (node00002622)>> endobj 416 0 obj <> endobj 415 0 obj <> endobj 421 0 obj <>] /ID (node00002623)>> endobj 422 0 obj <>] /ID (node00002624)>> endobj 423 0 obj <> <>] /ID (node00002625)>> endobj 420 0 obj <> endobj 419 0 obj <> endobj 426 0 obj <>] /ID (node00002626)>> endobj 427 0 obj <> <>] /ID (node00002627)>> endobj 428 0 obj <>] /ID (node00002628)>> endobj 425 0 obj <> endobj 424 0 obj <> endobj 408 0 obj <> endobj 430 0 obj <>] /ID (node00002629)>> endobj 429 0 obj <> endobj 432 0 obj <>] /ID (node00002630)>> endobj 431 0 obj <> endobj 434 0 obj <>] /ID (node00003137)>> endobj 433 0 obj <> endobj 366 0 obj <> <>] /ID (node00002285)>> endobj 365 0 obj <> endobj 364 0 obj <> endobj 438 0 obj <>] /ID (node00003142)>> endobj 437 0 obj <> endobj 439 0 obj <>] /ID (node00003143)>> endobj 436 0 obj <> endobj 435 0 obj <> endobj 349 0 obj <> <>] /ID (node00002582)>> endobj 348 0 obj <> endobj 347 0 obj <> endobj 444 0 obj <>] /ID (node00003149)>> endobj 443 0 obj <> endobj 448 0 obj <>] /ID (node00003153)>> endobj 447 0 obj <>] /ID (node00003152)>> endobj 449 0 obj <>] /ID (node00002769)>> endobj 450 0 obj <>] /ID (node00003154)>> endobj 453 0 obj <>] /ID (node00003157)>> endobj 452 0 obj <> endobj 451 0 obj <>] /ID (node00003155)>> endobj 446 0 obj <> endobj 445 0 obj <> endobj 458 0 obj <> <>] /ID (node00003162)>> endobj 457 0 obj <> endobj 460 0 obj <> <> <> <>] /ID (node00003164)>> endobj 459 0 obj <> endobj 456 0 obj <> <>] /ID (node00003160)>> endobj 455 0 obj <> endobj 454 0 obj <> endobj 442 0 obj <> endobj 441 0 obj <> endobj 440 0 obj <> endobj 465 0 obj <>] /ID (node00003172)>> endobj 464 0 obj <> endobj 469 0 obj <>] /ID (node00003176)>> endobj 468 0 obj <>] /ID (node00003175)>> endobj 470 0 obj <>] /ID (node00002773)>> endobj 471 0 obj <>] /ID (node00003177)>> endobj 474 0 obj <>] /ID (node00003180)>> endobj 473 0 obj <> endobj 472 0 obj <>] /ID (node00003178)>> endobj 475 0 obj <>] /ID (node00003181)>> endobj 479 0 obj <>] /ID (node00003185)>> endobj 478 0 obj <> endobj 477 0 obj <> endobj 476 0 obj <> endobj 467 0 obj <> endobj 466 0 obj <> endobj 484 0 obj <>] /ID (node00003190)>> endobj 483 0 obj <> endobj 486 0 obj <>] /ID (node00003192)>> endobj 485 0 obj <> endobj 488 0 obj <> <>] /ID (node00003194)>> endobj 487 0 obj <> endobj 490 0 obj <>] /ID (node00003196)>> endobj 489 0 obj <> endobj 492 0 obj <>] /ID (node00003198)>> endobj 491 0 obj <> endobj 494 0 obj <> <>] /ID (node00003200)>> endobj 493 0 obj <> endobj 496 0 obj <>] /ID (node00003202)>> endobj 495 0 obj <> endobj 482 0 obj <> <>] /ID (node00003188)>> endobj 481 0 obj <> endobj 480 0 obj <> endobj 463 0 obj <>] /ID (node00003170)>> endobj 462 0 obj <> endobj 461 0 obj <> endobj 501 0 obj <>] /ID (node00003210)>> endobj 500 0 obj <> endobj 505 0 obj <>] /ID (node00003214)>> endobj 504 0 obj <>] /ID (node00003213)>> endobj 506 0 obj <>] /ID (node00002781)>> endobj 507 0 obj <>] /ID (node00003215)>> endobj 510 0 obj <>] /ID (node00003218)>> endobj 509 0 obj <> endobj 508 0 obj <>] /ID (node00003216)>> endobj 511 0 obj <>] /ID (node00003219)>> endobj 515 0 obj <>] /ID (node00003223)>> endobj 514 0 obj <> endobj 513 0 obj <> endobj 512 0 obj <> endobj 503 0 obj <> endobj 502 0 obj <> endobj 521 0 obj <>] /ID (node00003229)>> endobj 520 0 obj <> <>] /ID (node00003228)>> endobj 519 0 obj <> endobj 523 0 obj <>] /ID (node00003231)>> endobj 522 0 obj <> endobj 526 0 obj <>] /ID (node00003234)>> endobj 525 0 obj <> <>] /ID (node00003233)>> endobj 528 0 obj <>] /ID (node00003237)>> endobj 527 0 obj <>] /ID (node00003236)>> endobj 529 0 obj <>] /ID (node00003238)>> endobj 524 0 obj <> endobj 532 0 obj <>] /ID (node00003241)>> endobj 531 0 obj <> <>] /ID (node00003240)>> endobj 534 0 obj <>] /ID (node00003244)>> endobj 533 0 obj <>] /ID (node00003243)>> endobj 535 0 obj <>] /ID (node00003245)>> endobj 530 0 obj <> endobj 537 0 obj <>] /ID (node00003247)>> endobj 539 0 obj <>] /ID (node00003249)>> endobj 538 0 obj <>] /ID (node00003248)>> endobj 540 0 obj <> <> <>] /ID (node00003250)>> endobj 536 0 obj <> endobj 542 0 obj <> <>] /ID (node00003252)>> endobj 541 0 obj <> endobj 518 0 obj <> <>] /ID (node00003226)>> endobj 517 0 obj <> endobj 516 0 obj <> endobj 499 0 obj <> <>] /ID (node00003208)>> endobj 498 0 obj <> endobj 497 0 obj <> endobj 547 0 obj <>] /ID (node00003260)>> endobj 546 0 obj <> endobj 551 0 obj <>] /ID (node00003264)>> endobj 550 0 obj <>] /ID (node00003263)>> endobj 552 0 obj <>] /ID (node00002789)>> endobj 553 0 obj <>] /ID (node00003265)>> endobj 556 0 obj <>] /ID (node00003268)>> endobj 555 0 obj <> endobj 554 0 obj <>] /ID (node00003266)>> endobj 557 0 obj <>] /ID (node00003269)>> endobj 561 0 obj <>] /ID (node00003273)>> endobj 560 0 obj <> endobj 559 0 obj <> endobj 558 0 obj <> endobj 549 0 obj <> endobj 548 0 obj <> endobj 566 0 obj <> <>] /ID (node00003278)>> endobj 565 0 obj <> endobj 569 0 obj <>] /ID (node00003281)>> endobj 568 0 obj <>] /ID (node00003280)>> endobj 570 0 obj <>] /ID (node00003282)>> endobj 571 0 obj <> <>] /ID (node00003284)>> endobj 567 0 obj <> endobj 573 0 obj <>] /ID (node00003286)>> endobj 574 0 obj <>] /ID (node00003287)>> endobj 575 0 obj <>] /ID (node00003288)>> endobj 572 0 obj <> endobj 578 0 obj <>] /ID (node00003292)>> endobj 577 0 obj <> endobj 580 0 obj <>] /ID (node00003295)>> endobj 579 0 obj <> endobj 582 0 obj <>] /ID (node00003298)>> endobj 581 0 obj <> endobj 584 0 obj <>] /ID (node00003301)>> endobj 583 0 obj <> endobj 586 0 obj <>] /ID (node00003304)>> endobj 585 0 obj <> endobj 588 0 obj <>] /ID (node00003307)>> endobj 587 0 obj <> endobj 576 0 obj <> endobj 590 0 obj <>] /ID (node00003309)>> endobj 589 0 obj <> endobj 592 0 obj <>] /ID (node00003311)>> endobj 591 0 obj <> endobj 564 0 obj <> <>] /ID (node00003276)>> endobj 563 0 obj <> endobj 562 0 obj <> endobj 545 0 obj <> <>] /ID (node00003258)>> endobj 544 0 obj <> endobj 543 0 obj <> endobj 597 0 obj <>] /ID (node00003319)>> endobj 596 0 obj <> endobj 601 0 obj <>] /ID (node00003323)>> endobj 600 0 obj <>] /ID (node00003322)>> endobj 602 0 obj <>] /ID (node00002797)>> endobj 603 0 obj <>] /ID (node00003324)>> endobj 606 0 obj <>] /ID (node00003327)>> endobj 605 0 obj <> endobj 604 0 obj <>] /ID (node00003325)>> endobj 599 0 obj <> endobj 598 0 obj <> endobj 611 0 obj <> <>] /ID (node00003332)>> endobj 610 0 obj <> endobj 609 0 obj <> <>] /ID (node00003330)>> endobj 608 0 obj <> endobj 607 0 obj <> endobj 615 0 obj <>] /ID (node00003337)>> endobj 614 0 obj <> endobj 616 0 obj <>] /ID (node00003338)>> endobj 613 0 obj <> endobj 612 0 obj <> endobj 595 0 obj <> endobj 594 0 obj <> endobj 593 0 obj <> endobj 621 0 obj <>] /ID (node00003343)>> endobj 620 0 obj <> endobj 625 0 obj <>] /ID (node00003347)>> endobj 624 0 obj <>] /ID (node00003346)>> endobj 626 0 obj <>] /ID (node00002801)>> endobj 627 0 obj <>] /ID (node00003348)>> endobj 630 0 obj <>] /ID (node00003351)>> endobj 629 0 obj <> endobj 628 0 obj <>] /ID (node00003349)>> endobj 631 0 obj <>] /ID (node00003352)>> endobj 635 0 obj <>] /ID (node00003356)>> endobj 634 0 obj <> endobj 633 0 obj <> endobj 632 0 obj <> endobj 623 0 obj <> endobj 622 0 obj <> endobj 640 0 obj <>] /ID (node00003361)>> endobj 641 0 obj <>] /ID (node00003363)>> endobj 642 0 obj <>] /ID (node00003365)>> endobj 643 0 obj <>] /ID (node00003367)>> endobj 645 0 obj <>] /ID (node00003369)>> endobj 644 0 obj <>] /ID (node00003368)>> endobj 646 0 obj <>] /ID (node00003371)>> endobj 647 0 obj <>] /ID (node00003373)>> endobj 648 0 obj <>] /ID (node00003375)>> endobj 639 0 obj <> endobj 650 0 obj <>] /ID (node00003377)>> endobj 649 0 obj <> endobj 638 0 obj <> <>] /ID (node00003359)>> endobj 637 0 obj <> endobj 636 0 obj <> endobj 619 0 obj <>] /ID (node00003341)>> endobj 618 0 obj <> endobj 617 0 obj <> endobj 655 0 obj <>] /ID (node00003385)>> endobj 654 0 obj <> endobj 659 0 obj <>] /ID (node00003389)>> endobj 658 0 obj <>] /ID (node00003388)>> endobj 660 0 obj <>] /ID (node00002809)>> endobj 661 0 obj <>] /ID (node00003390)>> endobj 664 0 obj <>] /ID (node00003393)>> endobj 663 0 obj <> endobj 662 0 obj <>] /ID (node00003391)>> endobj 665 0 obj <>] /ID (node00003394)>> endobj 669 0 obj <>] /ID (node00003398)>> endobj 668 0 obj <> endobj 667 0 obj <> endobj 666 0 obj <> endobj 657 0 obj <> endobj 656 0 obj <> endobj 674 0 obj <>] /ID (node00003403)>> endobj 673 0 obj <> endobj 676 0 obj <>] /ID (node00003405)>> endobj 678 0 obj <>] /ID (node00003408)>> endobj 677 0 obj <>] /ID (node00003407)>> endobj 675 0 obj <> endobj 680 0 obj <>] /ID (node00003410)>> endobj 682 0 obj <>] /ID (node00003413)>> endobj 681 0 obj <>] /ID (node00003412)>> endobj 679 0 obj <> endobj 684 0 obj <>] /ID (node00003415)>> endobj 683 0 obj <> endobj 686 0 obj <>] /ID (node00003417)>> endobj 685 0 obj <> endobj 688 0 obj <>] /ID (node00003419)>> endobj 689 0 obj <>] /ID (node00003421)>> endobj 687 0 obj <> endobj 691 0 obj <>] /ID (node00003423)>> endobj 690 0 obj <> endobj 693 0 obj <> <>] /ID (node00003425)>> endobj 692 0 obj <> endobj 695 0 obj <>] /ID (node00003427)>> endobj 694 0 obj <> endobj 697 0 obj <>] /ID (node00003429)>> endobj 699 0 obj <>] /ID (node00003432)>> endobj 698 0 obj <>] /ID (node00003431)>> endobj 696 0 obj <> endobj 672 0 obj <> <>] /ID (node00003401)>> endobj 671 0 obj <> endobj 670 0 obj <> endobj 653 0 obj <> <>] /ID (node00003383)>> endobj 652 0 obj <> endobj 651 0 obj <> endobj 703 0 obj <>] /ID (node00003440)>> endobj 702 0 obj <>] /ID (node00003439)>> endobj 705 0 obj <>] /ID (node00003442)>> endobj 704 0 obj <>] /ID (node00003441)>> endobj 706 0 obj <>] /ID (node00003443)>> endobj 709 0 obj <>] /ID (node00003446)>> endobj 708 0 obj <> endobj 707 0 obj <>] /ID (node00003444)>> endobj 701 0 obj <> endobj 712 0 obj <>] /ID (node00003449)>> endobj 713 0 obj <>] /ID (node00003450)>> endobj 711 0 obj <> <>] /ID (node00003448)>> endobj 710 0 obj <> endobj 716 0 obj <>] /ID (node00003453)>> endobj 715 0 obj <> endobj 714 0 obj <> endobj 700 0 obj <> endobj 721 0 obj <>] /ID (node00003458)>> endobj 720 0 obj <> endobj 725 0 obj <>] /ID (node00003462)>> endobj 724 0 obj <>] /ID (node00003461)>> endobj 726 0 obj <>] /ID (node00002823)>> endobj 727 0 obj <>] /ID (node00003463)>> endobj 730 0 obj <>] /ID (node00003466)>> endobj 729 0 obj <> endobj 728 0 obj <>] /ID (node00003464)>> endobj 723 0 obj <> endobj 722 0 obj <> endobj 735 0 obj <>] /ID (node00003471)>> endobj 734 0 obj <> endobj 737 0 obj <>] /ID (node00003473)>> endobj 736 0 obj <> endobj 739 0 obj <>] /ID (node00003475)>> endobj 738 0 obj <> endobj 741 0 obj <> <>] /ID (node00003477)>> endobj 740 0 obj <> endobj 743 0 obj <>] /ID (node00003479)>> endobj 742 0 obj <> endobj 745 0 obj <>] /ID (node00003481)>> endobj 744 0 obj <> endobj 747 0 obj <>] /ID (node00003483)>> endobj 748 0 obj <>] /ID (node00003485)>> endobj 750 0 obj <>] /ID (node00003488)>> endobj 749 0 obj <>] /ID (node00003487)>> endobj 751 0 obj <>] /ID (node00003489)>> endobj 752 0 obj <>] /ID (node00003491)>> endobj 746 0 obj <> endobj 754 0 obj <>] /ID (node00003493)>> endobj 756 0 obj <>] /ID (node00003496)>> endobj 755 0 obj <>] /ID (node00003495)>> endobj 757 0 obj <>] /ID (node00003498)>> endobj 758 0 obj <>] /ID (node00003500)>> endobj 753 0 obj <> endobj 760 0 obj <>] /ID (node00003502)>> endobj 762 0 obj <>] /ID (node00003505)>> endobj 761 0 obj <>] /ID (node00003504)>> endobj 763 0 obj <>] /ID (node00003507)>> endobj 764 0 obj <>] /ID (node00003509)>> endobj 759 0 obj <> endobj 766 0 obj <>] /ID (node00003511)>> endobj 768 0 obj <>] /ID (node00003514)>> endobj 767 0 obj <>] /ID (node00003513)>> endobj 769 0 obj <>] /ID (node00003516)>> endobj 765 0 obj <> endobj 771 0 obj <>] /ID (node00003518)>> endobj 772 0 obj <>] /ID (node00003520)>> endobj 770 0 obj <> endobj 774 0 obj <>] /ID (node00003522)>> endobj 775 0 obj <>] /ID (node00003524)>> endobj 773 0 obj <> endobj 777 0 obj <>] /ID (node00003526)>> endobj 778 0 obj <>] /ID (node00003528)>> endobj 779 0 obj <> <>] /ID (node00003530)>> endobj 780 0 obj <>] /ID (node00003532)>> endobj 776 0 obj <> endobj 782 0 obj <>] /ID (node00003534)>> endobj 783 0 obj <>] /ID (node00003536)>> endobj 781 0 obj <> endobj 785 0 obj <>] /ID (node00003538)>> endobj 787 0 obj <>] /ID (node00003541)>> endobj 786 0 obj <>] /ID (node00003540)>> endobj 788 0 obj <>] /ID (node00003542)>> endobj 790 0 obj <>] /ID (node00003545)>> endobj 789 0 obj <>] /ID (node00003544)>> endobj 791 0 obj <>] /ID (node00003546)>> endobj 793 0 obj <>] /ID (node00003549)>> endobj 792 0 obj <>] /ID (node00003548)>> endobj 784 0 obj <> endobj 795 0 obj <>] /ID (node00003551)>> endobj 797 0 obj <>] /ID (node00003554)>> endobj 796 0 obj <>] /ID (node00003553)>> endobj 794 0 obj <> endobj 799 0 obj <>] /ID (node00003556)>> endobj 798 0 obj <> endobj 801 0 obj <>] /ID (node00003558)>> endobj 800 0 obj <> endobj 804 0 obj <>] /ID (node00003561)>> endobj 803 0 obj <>] /ID (node00003560)>> endobj 802 0 obj <> endobj 806 0 obj <>] /ID (node00003563)>> endobj 805 0 obj <> endobj 808 0 obj <>] /ID (node00003565)>> endobj 809 0 obj <>] /ID (node00003567)>> endobj 810 0 obj <>] /ID (node00003569)>> endobj 807 0 obj <> endobj 733 0 obj <> <>] /ID (node00003469)>> endobj 732 0 obj <> endobj 731 0 obj <> endobj 719 0 obj <> <>] /ID (node00003456)>> endobj 718 0 obj <> endobj 717 0 obj <> endobj 817 0 obj <>] /ID (node00003579)>> endobj 816 0 obj <>] /ID (node00003578)>> endobj 818 0 obj <>] /ID (node00002827)>> endobj 819 0 obj <>] /ID (node00003580)>> endobj 822 0 obj <>] /ID (node00003583)>> endobj 821 0 obj <> endobj 820 0 obj <>] /ID (node00003581)>> endobj 815 0 obj <> endobj 814 0 obj <> endobj 827 0 obj <>] /ID (node00003588)>> endobj 826 0 obj <> endobj 825 0 obj <> <>] /ID (node00003586)>> endobj 824 0 obj <> endobj 823 0 obj <> endobj 831 0 obj <>] /ID (node00003593)>> endobj 830 0 obj <> endobj 832 0 obj <>] /ID (node00003594)>> endobj 829 0 obj <> endobj 828 0 obj <> endobj 813 0 obj <> endobj 812 0 obj <> endobj 811 0 obj <> endobj 837 0 obj <>] /ID (node00003599)>> endobj 836 0 obj <> endobj 841 0 obj <>] /ID (node00003603)>> endobj 840 0 obj <>] /ID (node00003602)>> endobj 842 0 obj <>] /ID (node00002831)>> endobj 843 0 obj <>] /ID (node00003604)>> endobj 846 0 obj <>] /ID (node00003607)>> endobj 845 0 obj <> endobj 844 0 obj <>] /ID (node00003605)>> endobj 839 0 obj <> endobj 838 0 obj <> endobj 851 0 obj <> <>] /ID (node00003612)>> endobj 850 0 obj <> endobj 849 0 obj <> <>] /ID (node00003610)>> endobj 848 0 obj <> endobj 847 0 obj <> endobj 835 0 obj <> endobj 834 0 obj <> endobj 833 0 obj <> endobj 856 0 obj <>] /ID (node00003620)>> endobj 855 0 obj <> endobj 860 0 obj <>] /ID (node00003624)>> endobj 859 0 obj <>] /ID (node00003623)>> endobj 861 0 obj <>] /ID (node00002835)>> endobj 862 0 obj <>] /ID (node00003625)>> endobj 865 0 obj <>] /ID (node00003628)>> endobj 864 0 obj <> endobj 863 0 obj <>] /ID (node00003626)>> endobj 866 0 obj <>] /ID (node00003629)>> endobj 870 0 obj <>] /ID (node00003633)>> endobj 869 0 obj <> endobj 868 0 obj <> endobj 867 0 obj <> endobj 858 0 obj <> endobj 857 0 obj <> endobj 875 0 obj <>] /ID (node00003638)>> endobj 874 0 obj <> endobj 877 0 obj <>] /ID (node00003640)>> endobj 876 0 obj <> endobj 879 0 obj <>] /ID (node00003642)>> endobj 880 0 obj <>] /ID (node00003644)>> endobj 878 0 obj <> endobj 882 0 obj <> <>] /ID (node00003646)>> endobj 881 0 obj <> endobj 884 0 obj <> <>] /ID (node00003648)>> endobj 883 0 obj <> endobj 873 0 obj <> <>] /ID (node00003636)>> endobj 872 0 obj <> endobj 871 0 obj <> endobj 854 0 obj <>] /ID (node00003618)>> endobj 853 0 obj <> endobj 852 0 obj <> endobj 891 0 obj <>] /ID (node00003658)>> endobj 890 0 obj <>] /ID (node00003657)>> endobj 892 0 obj <>] /ID (node00002843)>> endobj 893 0 obj <>] /ID (node00003659)>> endobj 896 0 obj <>] /ID (node00003662)>> endobj 895 0 obj <> endobj 894 0 obj <>] /ID (node00003660)>> endobj 889 0 obj <> endobj 888 0 obj <> endobj 901 0 obj <>] /ID (node00003667)>> endobj 900 0 obj <> endobj 899 0 obj <> <>] /ID (node00003665)>> endobj 898 0 obj <> endobj 897 0 obj <> endobj 887 0 obj <> endobj 886 0 obj <> endobj 885 0 obj <> endobj 906 0 obj <>] /ID (node00003675)>> endobj 905 0 obj <> endobj 910 0 obj <>] /ID (node00003679)>> endobj 909 0 obj <>] /ID (node00003678)>> endobj 911 0 obj <>] /ID (node00002847)>> endobj 912 0 obj <>] /ID (node00003680)>> endobj 915 0 obj <>] /ID (node00003683)>> endobj 914 0 obj <> endobj 913 0 obj <>] /ID (node00003681)>> endobj 916 0 obj <>] /ID (node00003684)>> endobj 920 0 obj <>] /ID (node00003688)>> endobj 919 0 obj <> endobj 918 0 obj <> endobj 917 0 obj <> endobj 908 0 obj <> endobj 907 0 obj <> endobj 925 0 obj <>] /ID (node00003693)>> endobj 927 0 obj <>] /ID (node00003695)>> endobj 926 0 obj <>] /ID (node00003694)>> endobj 928 0 obj <>] /ID (node00003696)>> endobj 929 0 obj <>] /ID (node00003698)>> endobj 931 0 obj <>] /ID (node00003700)>> endobj 930 0 obj <>] /ID (node00003699)>> endobj 924 0 obj <> endobj 934 0 obj <> <>] /ID (node00003704)>> endobj 933 0 obj <> endobj 932 0 obj <> endobj 937 0 obj <>] /ID (node00003708)>> endobj 939 0 obj <>] /ID (node00003710)>> endobj 938 0 obj <>] /ID (node00003709)>> endobj 936 0 obj <> endobj 941 0 obj <>] /ID (node00003713)>> endobj 943 0 obj <>] /ID (node00003715)>> endobj 942 0 obj <>] /ID (node00003714)>> endobj 940 0 obj <> endobj 945 0 obj <>] /ID (node00003718)>> endobj 947 0 obj <>] /ID (node00003720)>> endobj 946 0 obj <>] /ID (node00003719)>> endobj 944 0 obj <> endobj 949 0 obj <>] /ID (node00003723)>> endobj 951 0 obj <>] /ID (node00003725)>> endobj 950 0 obj <>] /ID (node00003724)>> endobj 948 0 obj <> endobj 935 0 obj <> endobj 923 0 obj <> <>] /ID (node00003691)>> endobj 922 0 obj <> endobj 921 0 obj <> endobj 904 0 obj <> <>] /ID (node00003673)>> endobj 903 0 obj <> endobj 902 0 obj <> endobj 956 0 obj <>] /ID (node00003733)>> endobj 955 0 obj <> endobj 960 0 obj <>] /ID (node00003737)>> endobj 959 0 obj <>] /ID (node00003736)>> endobj 961 0 obj <>] /ID (node00002855)>> endobj 962 0 obj <>] /ID (node00003738)>> endobj 965 0 obj <>] /ID (node00003741)>> endobj 964 0 obj <> endobj 963 0 obj <>] /ID (node00003739)>> endobj 958 0 obj <> endobj 957 0 obj <> endobj 970 0 obj <>] /ID (node00003746)>> endobj 969 0 obj <> endobj 968 0 obj <> <>] /ID (node00003744)>> endobj 967 0 obj <> endobj 966 0 obj <> endobj 974 0 obj <>] /ID (node00003751)>> endobj 973 0 obj <> endobj 975 0 obj <>] /ID (node00003752)>> endobj 972 0 obj <> endobj 971 0 obj <> endobj 954 0 obj <> endobj 953 0 obj <> endobj 952 0 obj <> endobj 980 0 obj <>] /ID (node00003757)>> endobj 979 0 obj <> endobj 984 0 obj <>] /ID (node00003761)>> endobj 983 0 obj <>] /ID (node00003760)>> endobj 985 0 obj <>] /ID (node00002859)>> endobj 986 0 obj <>] /ID (node00003762)>> endobj 989 0 obj <>] /ID (node00003765)>> endobj 988 0 obj <> endobj 987 0 obj <>] /ID (node00003763)>> endobj 982 0 obj <> endobj 981 0 obj <> endobj 994 0 obj <>] /ID (node00003770)>> endobj 993 0 obj <> endobj 992 0 obj <> <>] /ID (node00003768)>> endobj 991 0 obj <> endobj 990 0 obj <> endobj 998 0 obj <>] /ID (node00003775)>> endobj 997 0 obj <> endobj 999 0 obj <>] /ID (node00003776)>> endobj 996 0 obj <> endobj 995 0 obj <> endobj 978 0 obj <> endobj 977 0 obj <> endobj 976 0 obj <> endobj 1004 0 obj <>] /ID (node00003781)>> endobj 1003 0 obj <> endobj 1008 0 obj <>] /ID (node00003785)>> endobj 1007 0 obj <>] /ID (node00003784)>> endobj 1009 0 obj <>] /ID (node00002863)>> endobj 1010 0 obj <>] /ID (node00003786)>> endobj 1013 0 obj <>] /ID (node00003789)>> endobj 1012 0 obj <> endobj 1011 0 obj <>] /ID (node00003787)>> endobj 1014 0 obj <>] /ID (node00003790)>> endobj 1018 0 obj <>] /ID (node00003794)>> endobj 1017 0 obj <> endobj 1016 0 obj <> endobj 1015 0 obj <> endobj 1006 0 obj <> endobj 1005 0 obj <> endobj 1023 0 obj <>] /ID (node00003799)>> endobj 1022 0 obj <> endobj 1025 0 obj <>] /ID (node00003801)>> endobj 1024 0 obj <> endobj 1028 0 obj <>] /ID (node00003804)>> endobj 1027 0 obj <>] /ID (node00003803)>> endobj 1026 0 obj <> endobj 1031 0 obj <>] /ID (node00003808)>> endobj 1030 0 obj <> endobj 1033 0 obj <>] /ID (node00003811)>> endobj 1034 0 obj <>] /ID (node00003813)>> endobj 1032 0 obj <> endobj 1029 0 obj <> endobj 1037 0 obj <>] /ID (node00003816)>> endobj 1036 0 obj <>] /ID (node00003815)>> endobj 1035 0 obj <> endobj 1039 0 obj <>] /ID (node00003818)>> endobj 1038 0 obj <> endobj 1021 0 obj <> <>] /ID (node00003797)>> endobj 1020 0 obj <> endobj 1019 0 obj <> endobj 1002 0 obj <>] /ID (node00003779)>> endobj 1001 0 obj <> endobj 1000 0 obj <> endobj 1044 0 obj <>] /ID (node00003826)>> endobj 1043 0 obj <> endobj 1048 0 obj <>] /ID (node00003830)>> endobj 1047 0 obj <>] /ID (node00003829)>> endobj 1049 0 obj <>] /ID (node00002871)>> endobj 1050 0 obj <>] /ID (node00003831)>> endobj 1053 0 obj <>] /ID (node00003834)>> endobj 1052 0 obj <> endobj 1051 0 obj <>] /ID (node00003832)>> endobj 1046 0 obj <> endobj 1045 0 obj <> endobj 1058 0 obj <> <>] /ID (node00003839)>> endobj 1057 0 obj <> endobj 1056 0 obj <> <>] /ID (node00003837)>> endobj 1055 0 obj <> endobj 1054 0 obj <> endobj 1042 0 obj <> endobj 1041 0 obj <> endobj 1040 0 obj <> endobj 1063 0 obj <>] /ID (node00003847)>> endobj 1062 0 obj <> endobj 1067 0 obj <>] /ID (node00003851)>> endobj 1066 0 obj <>] /ID (node00003850)>> endobj 1068 0 obj <>] /ID (node00002875)>> endobj 1069 0 obj <>] /ID (node00003852)>> endobj 1072 0 obj <>] /ID (node00003855)>> endobj 1071 0 obj <> endobj 1070 0 obj <>] /ID (node00003853)>> endobj 1065 0 obj <> endobj 1064 0 obj <> endobj 1078 0 obj <>] /ID (node00003861)>> endobj 1077 0 obj <>] /ID (node00003860)>> endobj 1079 0 obj <>] /ID (node00003862)>> endobj 1076 0 obj <> endobj 1081 0 obj <> <>] /ID (node00003864)>> endobj 1082 0 obj <> <>] /ID (node00003866)>> endobj 1080 0 obj <> endobj 1084 0 obj <>] /ID (node00003868)>> endobj 1083 0 obj <> endobj 1086 0 obj <>] /ID (node00003870)>> endobj 1085 0 obj <> endobj 1088 0 obj <>] /ID (node00003872)>> endobj 1087 0 obj <> endobj 1090 0 obj <> <>] /ID (node00003874)>> endobj 1089 0 obj <> endobj 1075 0 obj <> <>] /ID (node00003858)>> endobj 1074 0 obj <> endobj 1073 0 obj <> endobj 1061 0 obj <>] /ID (node00003845)>> endobj 1060 0 obj <> endobj 1059 0 obj <> endobj 1095 0 obj <>] /ID (node00003882)>> endobj 1094 0 obj <> endobj 1099 0 obj <>] /ID (node00003886)>> endobj 1098 0 obj <>] /ID (node00003885)>> endobj 1100 0 obj <>] /ID (node00002879)>> endobj 1101 0 obj <>] /ID (node00003887)>> endobj 1104 0 obj <>] /ID (node00003890)>> endobj 1103 0 obj <> endobj 1102 0 obj <>] /ID (node00003888)>> endobj 1097 0 obj <> endobj 1096 0 obj <> endobj 1110 0 obj <>] /ID (node00003896)>> endobj 1109 0 obj <>] /ID (node00003895)>> endobj 1111 0 obj <>] /ID (node00003897)>> endobj 1113 0 obj <>] /ID (node00003899)>> endobj 1112 0 obj <>] /ID (node00003898)>> endobj 1114 0 obj <> <> <> <>] /ID (node00003900)>> endobj 1108 0 obj <> endobj 1107 0 obj <> <>] /ID (node00003893)>> endobj 1106 0 obj <> endobj 1105 0 obj <> endobj 1093 0 obj <> endobj 1092 0 obj <> endobj 1091 0 obj <> endobj 1119 0 obj <>] /ID (node00003908)>> endobj 1118 0 obj <> endobj 1123 0 obj <>] /ID (node00003912)>> endobj 1122 0 obj <>] /ID (node00003911)>> endobj 1124 0 obj <>] /ID (node00002883)>> endobj 1125 0 obj <>] /ID (node00003913)>> endobj 1128 0 obj <>] /ID (node00003916)>> endobj 1127 0 obj <> endobj 1126 0 obj <>] /ID (node00003914)>> endobj 1121 0 obj <> endobj 1120 0 obj <> endobj 1133 0 obj <> <> <> <>] /ID (node00003921)>> endobj 1132 0 obj <> endobj 1135 0 obj <>] /ID (node00003923)>> endobj 1136 0 obj <>] /ID (node00003924)>> endobj 1137 0 obj <>] /ID (node00003925)>> endobj 1138 0 obj <>] /ID (node00003926)>> endobj 1139 0 obj <> <>] /ID (node00003927)>> endobj 1140 0 obj <>] /ID (node00003928)>> endobj 1141 0 obj <>] /ID (node00003929)>> endobj 1142 0 obj <>] /ID (node00003930)>> endobj 1143 0 obj <>] /ID (node00003931)>> endobj 1144 0 obj <>] /ID (node00003932)>> endobj 1145 0 obj <> <> <> <>] /ID (node00003933)>> endobj 1134 0 obj <> endobj 1147 0 obj <>] /ID (node00003935)>> endobj 1148 0 obj <>] /ID (node00003936)>> endobj 1149 0 obj <>] /ID (node00003937)>> endobj 1150 0 obj <>] /ID (node00003938)>> endobj 1151 0 obj <> <> <>] /ID (node00003939)>> endobj 1146 0 obj <> endobj 1131 0 obj <> <>] /ID (node00003919)>> endobj 1130 0 obj <> endobj 1129 0 obj <> endobj 1117 0 obj <> endobj 1116 0 obj <> endobj 1115 0 obj <> endobj 1156 0 obj <>] /ID (node00003947)>> endobj 1155 0 obj <> endobj 1160 0 obj <>] /ID (node00003951)>> endobj 1159 0 obj <>] /ID (node00003950)>> endobj 1161 0 obj <>] /ID (node00002887)>> endobj 1162 0 obj <>] /ID (node00003952)>> endobj 1165 0 obj <>] /ID (node00003955)>> endobj 1164 0 obj <> endobj 1163 0 obj <>] /ID (node00003953)>> endobj 1166 0 obj <>] /ID (node00003956)>> endobj 1170 0 obj <>] /ID (node00003960)>> endobj 1169 0 obj <> endobj 1168 0 obj <> endobj 1167 0 obj <> endobj 1158 0 obj <> endobj 1157 0 obj <> endobj 1176 0 obj <>] /ID (node00003966)>> endobj 1175 0 obj <>] /ID (node00003965)>> endobj 1177 0 obj <>] /ID (node00003968)>> endobj 1174 0 obj <> endobj 1179 0 obj <>] /ID (node00003970)>> endobj 1181 0 obj <>] /ID (node00003972)>> endobj 1180 0 obj <>] /ID (node00003971)>> endobj 1182 0 obj <>] /ID (node00003973)>> endobj 1183 0 obj <>] /ID (node00003974)>> endobj 1184 0 obj <>] /ID (node00003975)>> endobj 1185 0 obj <>] /ID (node00003976)>> endobj 1186 0 obj <> <>] /ID (node00003977)>> endobj 1178 0 obj <> endobj 1188 0 obj <>] /ID (node00003979)>> endobj 1187 0 obj <> endobj 1190 0 obj <> <>] /ID (node00003981)>> endobj 1189 0 obj <> endobj 1192 0 obj <>] /ID (node00003983)>> endobj 1194 0 obj <>] /ID (node00003985)>> endobj 1193 0 obj <>] /ID (node00003984)>> endobj 1195 0 obj <>] /ID (node00003986)>> endobj 1197 0 obj <>] /ID (node00003988)>> endobj 1196 0 obj <>] /ID (node00003987)>> endobj 1191 0 obj <> endobj 1199 0 obj <> <>] /ID (node00003990)>> endobj 1200 0 obj <> <>] /ID (node00003992)>> endobj 1198 0 obj <> endobj 1202 0 obj <>] /ID (node00003994)>> endobj 1201 0 obj <> endobj 1204 0 obj <> <>] /ID (node00003996)>> endobj 1203 0 obj <> endobj 1206 0 obj <>] /ID (node00003998)>> endobj 1207 0 obj <>] /ID (node00004000)>> endobj 1209 0 obj <>] /ID (node00004003)>> endobj 1208 0 obj <>] /ID (node00004002)>> endobj 1205 0 obj <> endobj 1211 0 obj <>] /ID (node00004005)>> endobj 1212 0 obj <>] /ID (node00004007)>> endobj 1213 0 obj <>] /ID (node00004009)>> endobj 1215 0 obj <>] /ID (node00004012)>> endobj 1214 0 obj <>] /ID (node00004011)>> endobj 1216 0 obj <>] /ID (node00004013)>> endobj 1218 0 obj <>] /ID (node00004016)>> endobj 1217 0 obj <>] /ID (node00004015)>> endobj 1219 0 obj <>] /ID (node00004017)>> endobj 1220 0 obj <>] /ID (node00004019)>> endobj 1221 0 obj <>] /ID (node00004021)>> endobj 1210 0 obj <> endobj 1173 0 obj <> <>] /ID (node00003963)>> endobj 1172 0 obj <> endobj 1171 0 obj <> endobj 1154 0 obj <> <>] /ID (node00003945)>> endobj 1153 0 obj <> endobj 1152 0 obj <> endobj 1226 0 obj <>] /ID (node00004029)>> endobj 1225 0 obj <> endobj 1230 0 obj <>] /ID (node00004033)>> endobj 1229 0 obj <>] /ID (node00004032)>> endobj 1231 0 obj <>] /ID (node00002895)>> endobj 1232 0 obj <>] /ID (node00004034)>> endobj 1235 0 obj <>] /ID (node00004037)>> endobj 1234 0 obj <> endobj 1233 0 obj <>] /ID (node00004035)>> endobj 1228 0 obj <> endobj 1227 0 obj <> endobj 1241 0 obj <>] /ID (node00004043)>> endobj 1240 0 obj <>] /ID (node00004042)>> endobj 1242 0 obj <>] /ID (node00004045)>> endobj 1243 0 obj <>] /ID (node00004047)>> endobj 1239 0 obj <> endobj 1245 0 obj <>] /ID (node00004049)>> endobj 1246 0 obj <>] /ID (node00004050)>> endobj 1247 0 obj <> <>] /ID (node00004051)>> endobj 1244 0 obj <> endobj 1238 0 obj <> <>] /ID (node00004040)>> endobj 1237 0 obj <> endobj 1236 0 obj <> endobj 1224 0 obj <>] /ID (node00004027)>> endobj 1223 0 obj <> endobj 1222 0 obj <> endobj 1252 0 obj <>] /ID (node00004059)>> endobj 1251 0 obj <> endobj 1256 0 obj <>] /ID (node00004063)>> endobj 1255 0 obj <>] /ID (node00004062)>> endobj 1257 0 obj <>] /ID (node00002899)>> endobj 1258 0 obj <>] /ID (node00004064)>> endobj 1261 0 obj <>] /ID (node00004067)>> endobj 1260 0 obj <> endobj 1259 0 obj <>] /ID (node00004065)>> endobj 1262 0 obj <>] /ID (node00004068)>> endobj 1266 0 obj <>] /ID (node00004072)>> endobj 1265 0 obj <> endobj 1264 0 obj <> endobj 1263 0 obj <> endobj 1254 0 obj <> endobj 1253 0 obj <> endobj 1271 0 obj <>] /ID (node00004077)>> endobj 1273 0 obj <>] /ID (node00004079)>> endobj 1272 0 obj <>] /ID (node00004078)>> endobj 1274 0 obj <>] /ID (node00004081)>> endobj 1276 0 obj <>] /ID (node00004083)>> endobj 1275 0 obj <>] /ID (node00004082)>> endobj 1277 0 obj <>] /ID (node00002906)>> endobj 1279 0 obj <>] /ID (node00004085)>> endobj 1278 0 obj <>] /ID (node00004084)>> endobj 1280 0 obj <>] /ID (node00002907)>> endobj 1282 0 obj <>] /ID (node00004087)>> endobj 1281 0 obj <>] /ID (node00004086)>> endobj 1283 0 obj <>] /ID (node00002908)>> endobj 1285 0 obj <>] /ID (node00004089)>> endobj 1284 0 obj <>] /ID (node00004088)>> endobj 1286 0 obj <>] /ID (node00004091)>> endobj 1288 0 obj <>] /ID (node00004093)>> endobj 1287 0 obj <>] /ID (node00004092)>> endobj 1270 0 obj <> endobj 1290 0 obj <>] /ID (node00004095)>> endobj 1289 0 obj <> endobj 1292 0 obj <> <> <>] /ID (node00004097)>> endobj 1293 0 obj <>] /ID (node00004099)>> endobj 1294 0 obj <>] /ID (node00004101)>> endobj 1291 0 obj <> endobj 1297 0 obj <>] /ID (node00004104)>> endobj 1296 0 obj <>] /ID (node00004103)>> endobj 1298 0 obj <> <>] /ID (node00004105)>> endobj 1295 0 obj <> endobj 1301 0 obj <>] /ID (node00004108)>> endobj 1300 0 obj <>] /ID (node00004107)>> endobj 1302 0 obj <> <> <> <>] /ID (node00004109)>> endobj 1299 0 obj <> endobj 1304 0 obj <>] /ID (node00004111)>> endobj 1305 0 obj <> <>] /ID (node00004113)>> endobj 1303 0 obj <> endobj 1307 0 obj <>] /ID (node00004115)>> endobj 1309 0 obj <>] /ID (node00004117)>> endobj 1308 0 obj <>] /ID (node00004116)>> endobj 1310 0 obj <>] /ID (node00002909)>> endobj 1312 0 obj <>] /ID (node00004119)>> endobj 1311 0 obj <>] /ID (node00004118)>> endobj 1313 0 obj <>] /ID (node00002910)>> endobj 1315 0 obj <>] /ID (node00004121)>> endobj 1314 0 obj <>] /ID (node00004120)>> endobj 1316 0 obj <>] /ID (node00002911)>> endobj 1318 0 obj <>] /ID (node00004123)>> endobj 1317 0 obj <>] /ID (node00004122)>> endobj 1306 0 obj <> endobj 1320 0 obj <> <>] /ID (node00004125)>> endobj 1319 0 obj <> endobj 1322 0 obj <>] /ID (node00004127)>> endobj 1321 0 obj <> endobj 1324 0 obj <>] /ID (node00004129)>> endobj 1323 0 obj <> endobj 1269 0 obj <> <>] /ID (node00004075)>> endobj 1268 0 obj <> endobj 1267 0 obj <> endobj 1328 0 obj <>] /ID (node00004134)>> endobj 1327 0 obj <> endobj 1329 0 obj <>] /ID (node00004135)>> endobj 1326 0 obj <> endobj 1325 0 obj <> endobj 1250 0 obj <> <>] /ID (node00004057)>> endobj 1249 0 obj <> endobj 1248 0 obj <> endobj 1336 0 obj <>] /ID (node00004142)>> endobj 1335 0 obj <>] /ID (node00004141)>> endobj 1337 0 obj <>] /ID (node00002913)>> endobj 1338 0 obj <>] /ID (node00004143)>> endobj 1341 0 obj <>] /ID (node00004146)>> endobj 1340 0 obj <> endobj 1339 0 obj <>] /ID (node00004144)>> endobj 1334 0 obj <> endobj 1333 0 obj <> endobj 1346 0 obj <>] /ID (node00004151)>> endobj 1345 0 obj <> endobj 1344 0 obj <> <>] /ID (node00004149)>> endobj 1343 0 obj <> endobj 1342 0 obj <> endobj 1332 0 obj <> endobj 1331 0 obj <> endobj 1330 0 obj <> endobj 1351 0 obj <>] /ID (node00004159)>> endobj 1350 0 obj <> endobj 1355 0 obj <>] /ID (node00004163)>> endobj 1354 0 obj <>] /ID (node00004162)>> endobj 1356 0 obj <>] /ID (node00002917)>> endobj 1357 0 obj <>] /ID (node00004164)>> endobj 1360 0 obj <>] /ID (node00004167)>> endobj 1359 0 obj <> endobj 1358 0 obj <>] /ID (node00004165)>> endobj 1353 0 obj <> endobj 1352 0 obj <> endobj 1366 0 obj <>] /ID (node00004173)>> endobj 1365 0 obj <> endobj 1364 0 obj <> endobj 1368 0 obj <>] /ID (node00004175)>> endobj 1367 0 obj <> endobj 1371 0 obj <>] /ID (node00004179)>> endobj 1370 0 obj <> endobj 1373 0 obj <>] /ID (node00004182)>> endobj 1375 0 obj <>] /ID (node00004184)>> endobj 1374 0 obj <>] /ID (node00004183)>> endobj 1376 0 obj <> <> <> <>] /ID (node00004185)>> endobj 1372 0 obj <> endobj 1378 0 obj <>] /ID (node00004188)>> endobj 1380 0 obj <>] /ID (node00004190)>> endobj 1379 0 obj <>] /ID (node00004189)>> endobj 1381 0 obj <> <>] /ID (node00004191)>> endobj 1377 0 obj <> endobj 1383 0 obj <> <>] /ID (node00004194)>> endobj 1382 0 obj <> endobj 1385 0 obj <>] /ID (node00004197)>> endobj 1387 0 obj <>] /ID (node00004199)>> endobj 1386 0 obj <>] /ID (node00004198)>> endobj 1388 0 obj <> <>] /ID (node00004200)>> endobj 1384 0 obj <> endobj 1369 0 obj <> endobj 1390 0 obj <>] /ID (node00004202)>> endobj 1391 0 obj <> <>] /ID (node00004203)>> endobj 1392 0 obj <> <>] /ID (node00004204)>> endobj 1393 0 obj <> <>] /ID (node00004205)>> endobj 1389 0 obj <> endobj 1363 0 obj <> <>] /ID (node00004170)>> endobj 1362 0 obj <> endobj 1361 0 obj <> endobj 1397 0 obj <>] /ID (node00004210)>> endobj 1396 0 obj <> endobj 1398 0 obj <>] /ID (node00004211)>> endobj 1395 0 obj <> endobj 1394 0 obj <> endobj 1349 0 obj <> endobj 1348 0 obj <> endobj 1347 0 obj <> endobj 1403 0 obj <>] /ID (node00004216)>> endobj 1402 0 obj <> endobj 1407 0 obj <>] /ID (node00004220)>> endobj 1406 0 obj <>] /ID (node00004219)>> endobj 1408 0 obj <>] /ID (node00002921)>> endobj 1409 0 obj <>] /ID (node00004221)>> endobj 1412 0 obj <>] /ID (node00004224)>> endobj 1411 0 obj <> endobj 1410 0 obj <>] /ID (node00004222)>> endobj 1413 0 obj <>] /ID (node00004225)>> endobj 1417 0 obj <>] /ID (node00004229)>> endobj 1416 0 obj <> endobj 1415 0 obj <> endobj 1414 0 obj <> endobj 1405 0 obj <> endobj 1404 0 obj <> endobj 1423 0 obj <>] /ID (node00004235)>> endobj 1422 0 obj <>] /ID (node00004234)>> endobj 1421 0 obj <> endobj 1425 0 obj <>] /ID (node00004237)>> endobj 1426 0 obj <> <>] /ID (node00004239)>> endobj 1424 0 obj <> endobj 1428 0 obj <>] /ID (node00004241)>> endobj 1429 0 obj <>] /ID (node00004242)>> endobj 1430 0 obj <>] /ID (node00004243)>> endobj 1431 0 obj <>] /ID (node00004245)>> endobj 1427 0 obj <> endobj 1434 0 obj <>] /ID (node00004249)>> endobj 1433 0 obj <> endobj 1436 0 obj <> <>] /ID (node00004252)>> endobj 1435 0 obj <> endobj 1438 0 obj <>] /ID (node00004255)>> endobj 1437 0 obj <> endobj 1432 0 obj <> endobj 1440 0 obj <> <> <>] /ID (node00004257)>> endobj 1439 0 obj <> endobj 1442 0 obj <>] /ID (node00004259)>> endobj 1441 0 obj <> endobj 1444 0 obj <> <>] /ID (node00004261)>> endobj 1443 0 obj <> endobj 1420 0 obj <> <>] /ID (node00004232)>> endobj 1419 0 obj <> endobj 1418 0 obj <> endobj 1448 0 obj <>] /ID (node00004266)>> endobj 1447 0 obj <> endobj 1449 0 obj <>] /ID (node00004267)>> endobj 1446 0 obj <> endobj 1445 0 obj <> endobj 1401 0 obj <>] /ID (node00004214)>> endobj 1400 0 obj <> endobj 1399 0 obj <> endobj 1454 0 obj <>] /ID (node00004272)>> endobj 1453 0 obj <> endobj 1458 0 obj <>] /ID (node00004276)>> endobj 1457 0 obj <>] /ID (node00004275)>> endobj 1459 0 obj <>] /ID (node00002929)>> endobj 1460 0 obj <>] /ID (node00004277)>> endobj 1463 0 obj <>] /ID (node00004280)>> endobj 1462 0 obj <> endobj 1461 0 obj <>] /ID (node00004278)>> endobj 1456 0 obj <> endobj 1455 0 obj <> endobj 1470 0 obj <> <> <>] /ID (node00004287)>> endobj 1469 0 obj <> endobj 1472 0 obj <>] /ID (node00004289)>> endobj 1471 0 obj <> endobj 1468 0 obj <> endobj 1467 0 obj <> endobj 1474 0 obj <>] /ID (node00004291)>> endobj 1473 0 obj <> endobj 1466 0 obj <> <>] /ID (node00004283)>> endobj 1465 0 obj <> endobj 1464 0 obj <> endobj 1452 0 obj <> endobj 1451 0 obj <> endobj 1450 0 obj <> endobj 1479 0 obj <>] /ID (node00004299)>> endobj 1478 0 obj <> endobj 1483 0 obj <>] /ID (node00004303)>> endobj 1482 0 obj <>] /ID (node00004302)>> endobj 1484 0 obj <>] /ID (node00002933)>> endobj 1485 0 obj <>] /ID (node00004304)>> endobj 1488 0 obj <>] /ID (node00004307)>> endobj 1487 0 obj <> endobj 1486 0 obj <>] /ID (node00004305)>> endobj 1481 0 obj <> endobj 1480 0 obj <> endobj 1493 0 obj <> <> <>] /ID (node00004312)>> endobj 1492 0 obj <> endobj 1491 0 obj <> <>] /ID (node00004310)>> endobj 1490 0 obj <> endobj 1489 0 obj <> endobj 1477 0 obj <> endobj 1476 0 obj <> endobj 1475 0 obj <> endobj 1497 0 obj <>] /ID (node00004319)>> endobj 1496 0 obj <>] /ID (node00004318)>> endobj 1498 0 obj <>] /ID (node00004320)>> endobj 1501 0 obj <>] /ID (node00004323)>> endobj 1500 0 obj <> endobj 1499 0 obj <>] /ID (node00004321)>> endobj 1505 0 obj <>] /ID (node00004327)>> endobj 1504 0 obj <>] /ID (node00004326)>> endobj 1503 0 obj <> endobj 1502 0 obj <> endobj 1508 0 obj <>] /ID (node00004330)>> endobj 1507 0 obj <>] /ID (node00004329)>> endobj 1510 0 obj <>] /ID (node00004332)>> endobj 1509 0 obj <> endobj 1506 0 obj <> endobj 1513 0 obj <>] /ID (node00004335)>> endobj 1512 0 obj <>] /ID (node00004334)>> endobj 1511 0 obj <> endobj 1495 0 obj <> endobj 1494 0 obj <> endobj 1517 0 obj <>] /ID (node00004339)>> endobj 1516 0 obj <>] /ID (node00004338)>> endobj 1518 0 obj <>] /ID (node00004340)>> endobj 1521 0 obj <>] /ID (node00004343)>> endobj 1520 0 obj <> endobj 1519 0 obj <>] /ID (node00004341)>> endobj 1525 0 obj <>] /ID (node00004347)>> endobj 1524 0 obj <>] /ID (node00004346)>> endobj 1523 0 obj <> endobj 1522 0 obj <> endobj 1528 0 obj <>] /ID (node00004350)>> endobj 1527 0 obj <>] /ID (node00004349)>> endobj 1530 0 obj <>] /ID (node00004352)>> endobj 1529 0 obj <> endobj 1526 0 obj <> endobj 1533 0 obj <>] /ID (node00004355)>> endobj 1532 0 obj <>] /ID (node00004354)>> endobj 1531 0 obj <> endobj 1515 0 obj <> endobj 1514 0 obj <> endobj 1537 0 obj <>] /ID (node00004359)>> endobj 1536 0 obj <>] /ID (node00004358)>> endobj 1538 0 obj <>] /ID (node00004360)>> endobj 1541 0 obj <>] /ID (node00004363)>> endobj 1540 0 obj <> endobj 1539 0 obj <>] /ID (node00004361)>> endobj 1545 0 obj <>] /ID (node00004367)>> endobj 1544 0 obj <>] /ID (node00004366)>> endobj 1543 0 obj <> endobj 1542 0 obj <> endobj 1548 0 obj <>] /ID (node00004370)>> endobj 1547 0 obj <>] /ID (node00004369)>> endobj 1549 0 obj <>] /ID (node00002961)>> endobj 1551 0 obj <>] /ID (node00004372)>> endobj 1550 0 obj <>] /ID (node00004371)>> endobj 1546 0 obj <> endobj 1554 0 obj <>] /ID (node00004379)>> endobj 1553 0 obj <>] /ID (node00004378)>> endobj 1552 0 obj <> endobj 1535 0 obj <> endobj 1534 0 obj <> endobj 1558 0 obj <>] /ID (node00004384)>> endobj 1557 0 obj <> endobj 1559 0 obj <>] /ID (node00004385)>> endobj 1556 0 obj <> endobj 1561 0 obj <>] /ID (node00004387)>> endobj 1560 0 obj <> endobj 1562 0 obj <>] /ID (node00004388)>> endobj 1565 0 obj <>] /ID (node00004390)>> endobj 1564 0 obj <> endobj 1566 0 obj <>] /ID (node00004392)>> endobj 1563 0 obj <> endobj 1569 0 obj <>] /ID (node00004394)>> endobj 1568 0 obj <> endobj 1570 0 obj <>] /ID (node00004395)>> endobj 1567 0 obj <> endobj 1573 0 obj <>] /ID (node00004397)>> endobj 1572 0 obj <> endobj 1575 0 obj <>] /ID (node00004399)>> endobj 1574 0 obj <> endobj 1571 0 obj <> endobj 1578 0 obj <>] /ID (node00004402)>> endobj 1577 0 obj <> endobj 1580 0 obj <>] /ID (node00004404)>> endobj 1579 0 obj <>] /ID (node00004403)>> endobj 1582 0 obj <>] /ID (node00004406)>> endobj 1581 0 obj <>] /ID (node00004405)>> endobj 1584 0 obj <>] /ID (node00004408)>> endobj 1583 0 obj <>] /ID (node00004407)>> endobj 1586 0 obj <>] /ID (node00004410)>> endobj 1585 0 obj <>] /ID (node00004409)>> endobj 1588 0 obj <>] /ID (node00004412)>> endobj 1587 0 obj <>] /ID (node00004411)>> endobj 1590 0 obj <>] /ID (node00004414)>> endobj 1589 0 obj <>] /ID (node00004413)>> endobj 1576 0 obj <> endobj 1555 0 obj <> endobj 346 0 obj <> endobj 324 0 obj <> endobj 323 0 obj <> endobj 322 0 obj <> endobj 321 0 obj <> endobj 320 0 obj <> endobj 281 0 obj <> endobj 280 0 obj <> endobj 279 0 obj <> endobj 1591 0 obj [332 0 R 334 0 R 334 0 R 335 0 R 336 0 R 338 0 R 341 0 R 342 0 R 344 0 R 345 0 R 286 0 R 287 0 R 289 0 R 295 0 R 298 0 R 300 0 R 303 0 R 305 0 R 308 0 R 311 0 R 314 0 R 317 0 R 326 0 R 327 0 R 328 0 R 329 0 R 349 0 R 353 0 R 354 0 R 355 0 R 358 0 R 359 0 R 368 0 R 370 0 R 372 0 R 374 0 R 376 0 R 378 0 R 379 0 R 379 0 R 381 0 R 383 0 R 384 0 R 386 0 R 389 0 R 389 0 R 391 0 R 392 0 R 394 0 R 396 0 R 397 0 R 400 0 R 402 0 R 404 0 R 405 0 R 407 0 R 411 0 R 414 0 R 417 0 R 418 0 R 421 0 R 422 0 R 423 0 R 423 0 R 426 0 R 427 0 R 427 0 R 428 0 R 430 0 R 432 0 R 363 0 R] endobj 1592 0 obj [349 0 R 434 0 R 438 0 R 439 0 R 448 0 R 449 0 R 450 0 R 453 0 R 458 0 R 458 0 R 460 0 R 460 0 R 460 0 R 460 0 R 444 0 R 463 0 R 469 0 R 470 0 R 471 0 R 474 0 R 475 0 R 484 0 R 486 0 R 488 0 R 488 0 R 490 0 R 492 0 R 494 0 R 494 0 R 496 0 R 465 0 R 479 0 R 499 0 R 505 0 R 506 0 R 507 0 R 510 0 R 511 0 R 521 0 R 523 0 R 501 0 R 515 0 R] endobj 1593 0 obj [499 0 R 526 0 R 528 0 R 529 0 R 532 0 R 534 0 R 535 0 R 537 0 R 539 0 R 540 0 R 540 0 R 540 0 R 542 0 R 542 0 R 545 0 R 551 0 R 552 0 R 553 0 R 556 0 R 557 0 R 566 0 R 566 0 R 569 0 R 570 0 R 571 0 R 571 0 R 573 0 R 574 0 R 575 0 R 578 0 R 580 0 R 582 0 R 584 0 R 586 0 R 588 0 R 547 0 R 561 0 R] endobj 1594 0 obj [545 0 R 590 0 R 592 0 R 601 0 R 602 0 R 603 0 R 606 0 R 611 0 R 611 0 R 615 0 R 616 0 R 597 0 R 619 0 R 625 0 R 626 0 R 627 0 R 630 0 R 631 0 R 640 0 R 641 0 R 642 0 R 643 0 R 645 0 R 646 0 R 647 0 R 648 0 R 650 0 R 621 0 R 635 0 R 653 0 R 659 0 R 660 0 R 661 0 R 664 0 R 665 0 R 674 0 R 676 0 R 678 0 R 680 0 R 682 0 R 684 0 R 686 0 R 688 0 R 689 0 R 691 0 R 693 0 R 693 0 R 695 0 R 697 0 R 699 0 R 655 0 R 669 0 R] endobj 1595 0 obj [653 0 R 703 0 R 705 0 R 706 0 R 709 0 R 712 0 R 713 0 R 716 0 R 719 0 R 725 0 R 726 0 R 727 0 R 730 0 R 735 0 R 737 0 R 739 0 R 741 0 R 741 0 R 743 0 R 745 0 R 747 0 R 748 0 R 750 0 R 751 0 R 752 0 R 754 0 R 756 0 R 757 0 R 758 0 R 760 0 R 762 0 R 763 0 R 764 0 R 766 0 R 768 0 R 769 0 R 771 0 R 772 0 R 774 0 R 775 0 R 777 0 R 778 0 R 779 0 R 779 0 R 780 0 R 782 0 R 783 0 R 785 0 R 787 0 R 788 0 R 790 0 R 791 0 R 793 0 R 795 0 R 797 0 R 721 0 R] endobj 1596 0 obj [719 0 R 799 0 R 801 0 R 804 0 R 806 0 R 808 0 R 809 0 R 810 0 R 817 0 R 818 0 R 819 0 R 822 0 R 827 0 R 831 0 R 832 0 R 841 0 R 842 0 R 843 0 R 846 0 R 851 0 R 851 0 R 837 0 R 854 0 R 860 0 R 861 0 R 862 0 R 865 0 R 866 0 R 875 0 R 877 0 R 879 0 R 880 0 R 882 0 R 882 0 R 884 0 R 884 0 R 856 0 R 870 0 R 891 0 R 892 0 R 893 0 R 896 0 R 901 0 R 904 0 R 910 0 R 911 0 R 912 0 R 915 0 R 916 0 R 906 0 R 920 0 R] endobj 1597 0 obj [904 0 R 925 0 R 927 0 R 928 0 R 929 0 R 931 0 R 934 0 R 934 0 R 937 0 R 939 0 R 941 0 R 943 0 R 945 0 R 947 0 R 949 0 R 951 0 R 960 0 R 961 0 R 962 0 R 965 0 R 970 0 R 974 0 R 975 0 R 956 0 R 984 0 R 985 0 R 986 0 R 989 0 R 994 0 R 998 0 R 999 0 R 980 0 R 1002 0 R 1008 0 R 1009 0 R 1010 0 R 1013 0 R 1014 0 R 1023 0 R 1025 0 R 1028 0 R 1031 0 R 1033 0 R 1034 0 R 1037 0 R 1039 0 R 1004 0 R 1018 0 R 1048 0 R 1049 0 R 1050 0 R 1053 0 R 1058 0 R 1058 0 R 1044 0 R] endobj 1598 0 obj [1061 0 R 1067 0 R 1068 0 R 1069 0 R 1072 0 R 1078 0 R 1079 0 R 1081 0 R 1081 0 R 1082 0 R 1082 0 R 1084 0 R 1086 0 R 1088 0 R 1090 0 R 1090 0 R 1063 0 R 1099 0 R 1100 0 R 1101 0 R 1104 0 R 1110 0 R 1111 0 R 1113 0 R 1114 0 R 1114 0 R 1114 0 R 1114 0 R 1095 0 R 1123 0 R 1124 0 R 1125 0 R 1128 0 R 1133 0 R 1133 0 R 1133 0 R 1133 0 R 1135 0 R 1136 0 R 1137 0 R 1138 0 R 1139 0 R 1139 0 R 1140 0 R 1141 0 R 1142 0 R 1143 0 R 1144 0 R 1145 0 R 1145 0 R 1145 0 R 1145 0 R 1147 0 R 1148 0 R 1149 0 R 1150 0 R 1151 0 R 1151 0 R 1151 0 R 1119 0 R 1154 0 R 1160 0 R 1161 0 R 1162 0 R 1165 0 R 1166 0 R 1176 0 R 1177 0 R 1156 0 R 1170 0 R] endobj 1599 0 obj [1154 0 R 1179 0 R 1181 0 R 1182 0 R 1183 0 R 1184 0 R 1185 0 R 1186 0 R 1186 0 R 1188 0 R 1190 0 R 1190 0 R 1192 0 R 1194 0 R 1195 0 R 1197 0 R 1199 0 R 1199 0 R 1200 0 R 1200 0 R 1202 0 R 1204 0 R 1204 0 R 1206 0 R 1207 0 R 1209 0 R 1211 0 R 1212 0 R 1213 0 R 1215 0 R 1216 0 R 1218 0 R 1219 0 R 1220 0 R 1221 0 R 1224 0 R 1230 0 R 1231 0 R 1232 0 R 1235 0 R 1241 0 R 1242 0 R 1243 0 R 1245 0 R 1246 0 R 1247 0 R 1247 0 R 1226 0 R 1250 0 R 1256 0 R 1257 0 R 1258 0 R 1261 0 R 1262 0 R 1271 0 R 1273 0 R 1274 0 R 1276 0 R 1277 0 R 1279 0 R 1280 0 R 1282 0 R 1283 0 R 1285 0 R 1286 0 R 1288 0 R 1290 0 R 1252 0 R 1266 0 R] endobj 1600 0 obj [1250 0 R 1292 0 R 1292 0 R 1292 0 R 1293 0 R 1294 0 R 1297 0 R 1298 0 R 1298 0 R 1301 0 R 1302 0 R 1302 0 R 1302 0 R 1302 0 R 1304 0 R 1305 0 R 1305 0 R 1307 0 R 1309 0 R 1310 0 R 1312 0 R 1313 0 R 1315 0 R 1316 0 R 1318 0 R 1320 0 R 1320 0 R 1322 0 R 1324 0 R 1328 0 R 1329 0 R 1336 0 R 1337 0 R 1338 0 R 1341 0 R 1346 0 R 1355 0 R 1356 0 R 1357 0 R 1360 0 R 1366 0 R 1368 0 R 1371 0 R 1373 0 R 1375 0 R 1376 0 R 1376 0 R 1376 0 R 1376 0 R 1378 0 R 1380 0 R 1381 0 R 1381 0 R 1383 0 R 1383 0 R 1385 0 R 1387 0 R 1388 0 R 1388 0 R 1390 0 R 1391 0 R 1391 0 R 1392 0 R 1392 0 R 1393 0 R 1393 0 R 1351 0 R] endobj 1601 0 obj [1397 0 R 1398 0 R 1401 0 R 1407 0 R 1408 0 R 1409 0 R 1412 0 R 1413 0 R 1423 0 R 1425 0 R 1426 0 R 1426 0 R 1428 0 R 1429 0 R 1430 0 R 1431 0 R 1434 0 R 1436 0 R 1436 0 R 1438 0 R 1440 0 R 1440 0 R 1440 0 R 1442 0 R 1444 0 R 1444 0 R 1448 0 R 1449 0 R 1403 0 R 1417 0 R 1458 0 R 1459 0 R 1460 0 R 1463 0 R 1474 0 R 1454 0 R 1470 0 R 1470 0 R 1470 0 R 1472 0 R 1483 0 R 1484 0 R 1485 0 R 1488 0 R 1493 0 R 1493 0 R 1493 0 R 1479 0 R 1497 0 R 1498 0 R 1501 0 R 1508 0 R 1513 0 R 1510 0 R 1505 0 R] endobj 1602 0 obj [1558 0 R 1559 0 R 1561 0 R 1562 0 R 1565 0 R 1566 0 R 1569 0 R 1570 0 R 1573 0 R 1575 0 R 1578 0 R 1580 0 R 1582 0 R 1584 0 R 1586 0 R 1588 0 R 1590 0 R 1517 0 R 1518 0 R 1521 0 R 1528 0 R 1533 0 R 1530 0 R 1537 0 R 1538 0 R 1541 0 R 1548 0 R 1549 0 R 1551 0 R 1554 0 R 1525 0 R 1545 0 R] endobj 1603 0 obj <> endobj 1604 0 obj <> endobj 1605 0 obj <> endobj 278 0 obj <> endobj 1606 0 obj <> /StructTreeRoot 278 0 R>> endobj 1607 0 obj <> stream x xU;sLfLҦLi B"P 6`@Pn"rA\@TʺuzaEzUYEe@3ߞIZn y̙33y{3) TpQ| m/XxM7Z3 r_7X=隹Mwg]q吁]ˮ0g|DObƂo5įM#^}ؔG0 KO2yBUz 2ʹ^{az=1I7k$l\9Yk9ɽutߙu՜HH=?kY?*w`oD ,DIaFgaaVeF҇{D$`coؒOMQ?ty_号U|h}&3r|'lI$RXn'??Hn_|61T 9ɰ=t@te~)mxxaMXd\0c.dLU ?zuJ+Ώff`fqtf2 eS1 q*\Wa6ft榟_ ?`fϛ+0s1'9F_dč`LDḋ#0 1(1 Wa W=c,,g;^iQo)c0&`qIn;Wa`C8hLT~Ta*&bQ;@tS*ͩx<$50q=?bQW!m3ոnq%&h Oߨcv*fuJ$\LTx13A<=V^ɻx4K0_d;Ncq W_c!W+W \=1h{zmsDeR,X{~h?j JxO%`㣸*B?4AQQIOBYOlPEoVVAO@]?;q8ӠW?A=ԏ,2Yr y?~G|(AQ ]Qn(Dwt膐=HX!P;@QAKS2">7腨 WQ>wEQC~1P?JGF0HUH տ _" ӿ`1#z0j1R?aBC!!FRK4Qӿhb\ĥDAc1 hB\?qx\f\Ng sL4$L?Gl1SgY0W4阣 30Oߏ+q3 zLXX9O1}}\,_Lߋ X=X܀=X'-'V`)n?2ܪU76cǸwc%~?*?jܩ.6h?BwCb-?:ܯ;+܅p7zlG+~_!}܃ب{[=܇Gp?ů;]A}>ė._/#_Jt^]3[}'>5~|}'>Q}'1q|iChןa~]_?#՟7psgg#gq?DcDĢ 'M߁v;4NmK^2F*: =; epGPQP: \G(Q 4 ~kпA6a4_ A3mW AwE4}֠; AS=lM]mUm1J1ho.3R`]dЉ7`Z) ?4Kmd~~m'{n3ۓ}|'YnOܞ3ݾ3o5w^+i˧f'OM93 3FE(np^x;< g:=p?`Aܑ{Tkn3[};} 4󁭲-y\ %[uɫ#62`={(mkTޥ+S'4wa(lH8}ˎjmr0~AtTjDŽ FB4j?aćDŽ{ ix2cBmJJFw<0gZPYe9FnLeKR m9V&Ժ{U;z5;;zhZK'y3O"wcR tPez^!O,bB'>4b HŖ.6޲ mD{ϓitXz> =У;|4 ǎ? /h5= LTz&&iq 7mOwNnJ--fչѕ-\e9jZ -^bwDoft2y XFB˗e\eXL]F.#.oE\JK*u %.6Bk@!JjB=Yd(K.!QXI9 +d>edR I9ƒrPI_"lab&2lD$D &X1 O_lj21c,1c1%y]ݺz[# B֢-?hYy6B%RK$%2=0 jˬ.wl]̲"DxQ c,.cqpU\PѭKE~"WpU8*lRPV>2$]pZԎJDBm!QMHc7rk, %F'N8njml#r6Dm[bPN"^;1$'(sbMLU3̙3rhsš5E5sۈP3kNh#6"ۈEKkLmn#}h+8.uJ/Ȝ *͙3;Z2jDeŜE6!6&`UmņDy؄ zf=vl8@D!NˆbIDApqBq={H_ߋ%R|Wg;OooWƗŗo//Oǭ)_ {;i+Hjʓ49<]h5n0+Xl @;釹؀G 7b~3b˥[stWc &g,؈5S L< =[jkoL`~ a:w x7b(`$!!nB#nG?q8u340 `p?"ob"'o& p`13]`gq?q0 wbGr{#y g~,ܝAf,~l?y)v~3Ia<yf#:گlF{;ƹL X_7Fi ?؎X/C x 0(76,r\f̼h^܋ZLr؋1v1 # :dEhU\7ڧwyҒpqݻu-,rs}Y^ەtUբfI4 <2EěV7LKdV7'O(ÏԅpA?HJB&lM G_ \Apx[Cc <(JdU7S` $؂[0t?PQ3$Fm hhLvb}NZJf26Cٗ6; T$L@q7$q&.鏠/0O ħ&2'1=B4o44#@tmőesuz9֣F6`L+Jpf'FQjnf Zz%5;-jN0@GQyLcp:JT)ՉP0:៚&$ʿhG6CJ<pYcQlA͔щ1 ~ _3HMiNTǧLnjB{%qEMJXؖT?=liYO?ԳJcG&X3y`iUT$N8$nG[5X2qZJ&@P~@Ǹ0 ey ͚iU VW>ʹK/$pq[=fJ- [p流@"3D/li]Qr"3ttLB$T'Fц 5 mX*` iRrg S 8ow4$2Bj@=jk Luc^Xjmhl 0҂)ytj3b]w{}c=5 4LhӗL `fEiU7F>Ц?ʗ:P=T5&#R O2@_hSq0U'cz%ƀ?6H_BC?TL2t ՘`|t CtmGQ @Ъ6 {KF6-%fzfG̒37=4t^>U[A?67m(BY9|'mFviGܗNѝA[/ N=|!` !6}GiuZq::0js'C$ݒH44ǣtf"?l8r$z:s|ެ+'Wy3 ^۝5cb+әdzf733z3rg:Wg=3g4YrCal:#3 >UE^?'ˤd#w|jg9Wgέ2~OT#?`f{7fsי#.3],o\_V~^87;l3s<9YjNd*윜˞9qn朗 [Ҝ%C\8. 4DX,K»nwW.-=''ڇkY |+XPY1k91s0˰M7jS~`E3C5{o4꫕% ^=#enW@;W8 (QUŷ? FkŴFd?d6!eظ<.{9Nb.+#H 7{59~),n[CMy >LY&ov$f\3Eq)EV`}1dT#LwYVM$ +EqW9V[nVf)n.wǏk-+ Dhx\h4DSD]رcLJƏkj"0ؠ3a#k VOx%%7.E2/F/}⒅לJr[Ӓs-;M#w$g[Q4>l2l~X5;!PGC 4;dyl!"ԅ3 V~c?vטkV_?- [/TR\waՒ7i('c-d&nd~@Sd&ȜJLF?d3t29gn3͙w(g!uR41|r.|]k҈M%ZQB,ԍZj Bt9<^;3/  m=J.*V뭁C_1qPnfQ3Rd>hbaŔ,CMnN+3mX|oZWeRG(?(,R,ԉY55.^TR+ *2HD&w&$#eISRtr̡ GʤmMI]ox2ۦ=}AM?YEy$x|A$w%}Ok?>{> Jf(I⨘M"*+),,bș-,(6DcÑHpY'|ªaT>?~\SZUշ/-?v]Лg#l$zf=|&y<-b|;H}g$R|}B1D VN43L&D, VUD=[ FCD DY^zЩ*+`+ϗn"?O^ ɣFˉ$ h~EC7YFgf4 ɬݡvS4A'޼ rv;9laE2dTlC_fn 7!`c7fI=^l!1NiS![HS꽨 xN1Щ=\U*..._w=YUF#7L8 È G{z1 7% ~ Tx]saݞZm֘{Zc|fjo8#g0/,dztGՀ=1`3~;#mL~Mz̛'q'vnRi -IXY,&d" GHHiI h^ !c'/7?![&@Q`[p*\Js(Yc笏f3o[cV*CvDa"G;xtD,1*/OY_+c+@ r,uOe <Ι]G\;rҺ<]n𩚏˯8UuMT_x{-;X/l#\~T,?g[Y./bf,b"2ƺ8NGk4EQ"+hiمhpxpۣa'jrG3@Wo7J1\6dv/XTKY&ܽ|cMrs}W]8rd"wP6fFrb0 8a\岄o4*6ȉ65&fVG4'0Q#,l'"aIneنǍ۱i]$م|Q{ӂ|뉺;[WcYƛl?gwA+nxRyX^yK!{6= r\6U˷yq/j oߚi2KΞ䉩_WUظ↹5cXe^[˰Wby9uq2(eمÑa0u)={]F=/~"FMA xCf<2-_;檅ͭ3/&w /Roʰæj/܍yjbEc~HtE_~|Vm^;Gwx<* zlܤ94(jcvA1|), eS wpԎ^_}'߸Ȅ|Z4F°AF-j>+Ūrсu]Vjp~"~[򺯏eZ.jYLFSVSof0'${x4Jo>ކ{{fTa3*3ȥ \ZֳQ+(Ho9{RjyhqBaqӁP4ttN0&(T1Ywh:c .Y5 CæPaD'׆ o_U{l0äi]̣n+|a׎* Dy3gm*4XAUSb]lackQi3 KgJgt*.ִ[:'x`~0IslĦOǪٶ&6kvl*ԿQ,]kڵF/g :>N60 \\UUty'h!*nfp`B\ PBleu"C♴DŽCχC#ᦐ#JCM2>܌e׳1d:G ;`T-5gB8mu E]c8_%nFug.3{٩mk7ݙ)\jhuLzVΕ] {M ەa6fX@7 irߞ#.-_TO_ɭYkWuqSeF\3| G)/J6@ /\S{T(Casa#LO`X6]z5unZWʨȰd+`ltX؂P(kX,!_g,l?,VMu僅|!_\3]!u#D6P?.=EMPZbНMh"t鈔=ƕA#*~Uzt{?%|懼7o|1%7$_I\M?n]=6YM$h̗_qkȆ^zd }i>Ids䊆뇒?Id&ٗ|kЦknw(W&Vd2Q %Ldr %j t FӂҦ0 2JBpVM1]MY*Yf~>OiJ AaH8jÕpy,PyIP'رJ];;hl!dlDlaנ`byǓwSLcelF1rIg[ayH"Xkr2D]3 2p\#i!E9m4r%kaYi3~ .TgR2iU&\6(=F`AAYP(TfĸE;jѳ'f6)br]\ȷ`5%:h˽ڿC|w\x!g߶m?$K/xԃV[zVc&C@! +Q%QԱtehE:8'dl-kb"TLd٣RpUW-BOA❲Pǧ9P75] EC](hj*qixz)ͭp^Z1}޽I H#xKO$%%w5G]Z!X<$C)D'G{Qqr,mwTjXb5,Y,v*QV%GbC)Hu I#u*i;'a-U<ɱzdO5ǓW;I1q1]A(g|+dz ҚaMD03ļ&F &ưȉE0iʹ$iӏ,ԑS5N +eo_gcL=zw2xWҜZ# uVDbc2hrdMLdk=2#~W5/aM?n6Q9La9[g1b/KA{]F=Iw/?cOi> 3&LlQyC/TPy":4&Ɍ{<.UQ)sTĴXjӿo#c84/z!qD aXς@MܡGɯIWH&w}# RGɣ#]䎻S1g6XdDׄJwЗ%P dBe8mb>mgڡ;UY72mdnmͷbvčH`XTV^oȷ C?V(Rס F^DV\c2SN xtЃzsf/i3ǨΙVKzc"%rM$c5mG{]^~ɧFOPWr#ۚF*ѲYIwk,&җ0Wa* [;m:kTna6Qg̤aRsOGБ:ItNMH$LeaLt6 )4D)M"{`;y&nFeogn/[ǹ}iVIgX GJa̰F.f#߳U2ל7MgiIkiӿ1x"*m\ ZP{h|dlcIu]$r'3MҖ o7-/Y`&VdqA!mGid8)P紜b(?b{ Ǟ8;]BhY X4%"*#{ &bH"KK"X93nHz\nN|c ,򧿰 oLz;'zM_v ^[4|̖ɵ YDLGYFMLrT >df%b;N؉aSLYd^mEVmRCWSi\ei4)0q=kf;q̫=,y#7?.w|_ 꿎&%8?o1V7jp)(kbwȕVaWzJsIJ\˕iW6zmK %K-z?'e@gx|CIwJdr "[G<%w*2ܓ|:,dɧIO"٤<qVZAalD) 8XyMeMTMbXiRեjB()eܒLzt2mwج8=az\Zb8>rvoo$-'?cH&}|W^I`?~mȯR( ]Pe9Uή(LΩB]o&;;#NcamWM 6$U;Rֻܮv-d׷dO'_K~3m[nYѡo^̻k"cwT|0c胿jm%.i[xJ[c#f%6('WsDќ#笉,1{$;Kj$QtYd_aN) R6c`ةg9h3}>s3RPNc#gNhhi<]A#ݱe=Vvx$@me#yt}z7KpNӇgD^5|[s5NN0;hEWhsn1Uۋ -& ,2Ezz]@5UA]7cA]&EuvzV*rs,7gMˁ%šX+ʧS)NRDh]+Z$Qh#_"ԛYt~{2ǏkGuqzm.QmS~2 i=~>2fE?k}MoMϽg^R޽~Nm]˔~niܒcΌ\4Kq'WyӳU G_~}_]v偠;):i& @pCAЦӌ}IV^OPx C`9f;vYV%.;^2 @ʓ19g%yzVXpVʘf"#sDuٳ"}YxNh#mdL6=IR;vLyLrt^׷*N%k2JR-Ȥ.*r5S7:[g8}'lbX647r7jcICj9*?]YU9GPװtDN#ԡtӶ>k?S3:|zᮢ>W`j>Ȃ,rMB(dD2WPEI:74ⱨS(:fufT u a]$u/_]_]):PtLOfP XyS>$jmN`YsS G2<~"ʠW2(S6@!M4bBH$çI/~zjJ% ߯K;9NH\m|+R!TaspfoWɞWIA{I韒bOI̮XVVUHkqay&k9$BxaayVb5a5a LGh 3[6[6бR?EfS1#fɮ?Bk&|kۿbka "F!ͪ#D%h*RZ0,xȚhM4<#E숢2ԧPL&"9Ҡ;Vc)ߡ@9(\Dv?xaͻ(.۠o>Ac$F8 p1!|0`r^d k J p3&< .6^6MRle]̡m%6&9,#Lj]:N桼-sHA Dn$bƘ q {&Ԃ5㷛LBt7# $uw@nq큛H^8D?[v#KwhT-3QE\6׺mIu1Ipf<|7{Z,yy9]Rc1P'Z'@iι~+m9\*v|g3/܆ ܂/^/ ~{[?JI=236g f;…FHL#Eֈ`1n#.&+eFfDu<} )A_=Mr*xISamV ] ]=`_F#i]6-u1cs8sŜ*t/t 2gBo+M6/UU*Ut5b=iV9KMjiWT{w$q?x-mw?[~ Yg'={??yQSƨQR8GUߌ'ҎT5FS93LbR%%0Bpӷ[4@ЮRfQյ6lamۚi&ǃxwd0i,64(D9i%7Ko]M)^cxro8ȱzTV7l๊~;A}F?x1]0D,Ic-4XcU3ԉzp791scfsVfcMg;S]Zਪ+|ϻwfߏ}of&Hіͷ>/_RGJAh \E P/v;O[%0`]C5p:V3 !a5m9k5,SzP]*E$r{LI_ڋd=>s:) 0W(ejDM& "z@Yo?`{%T }BGRt, .I8MN+}0t.DQ Fʫjjo[K [(u/`Zֶ<_!b9lAypp {ٺƓVcvuso$HZ&7AWnss 8)gܜc5Ig͖T=Kyp+O⨶: ,'y7Zh8:g wҌǚ:Xy op[uݘ u ž}@ΜXϼmL!q*|7noz~':IB%s /_hw/^$tgad ^68od*Ŋ7&"z#;0^KTc2l1ܥ@@= xP:~D?oIp7UȂ3ryDP'HV)4͝:M6ԇ9Rp .WAsSȻgIwOm爍HbK7rۗ-wOϬܲe_mX\I77͚^V]rۼY:s[]4^8iE s]ZwΐHxUNdy4 ~F%e[L&!*:TQ圱b;s( 'Xg{@Wx%ie*G)kQ[]]),{fϐ alոu|k˗~6io1o/|oFA!D1k9\4PJ!ǝ<NcIn)K |܈ĎHjf1kzxG7=·~!E;?QdS]́* 81/#q8ͼ nn~TQMΐb2mh-78g ?2sr4NZ[{!p+ f n<ܟ0ÏFaUV*Fn@QLl2wMr'b *>*.>&9?8Bd.ү(YQ2bYs>D-7%nICF,k%mݎ'|J߮.w c1eIPm`Iɕ#h}8Q¹if Ofd*5=FPI8tsv0l?o!/Va Px۶wӋd$+>W{%Y"}@tgg9Eͽ:Gj;,T*!" ɰUM&* BHF'nݤrf02D^ L`i`#\^W-'{Z{ Y[N35bxfSR@TB΍3vxrEWh:_:ZJ2U f&U e$hhF9Ʉ#Mea4nZ!EŌ~Cj"_aG DG8 V,>73c=`!N'9ڸ4 to  K7T9iRr;!&~p*Z|CXPw"ImgY(%|p? 2r D\7u endstream endobj 1608 0 obj <> endobj 1609 0 obj <> /W [0 [645.50781 0 0 273.92578 284.17969 392.08984 590.82031 0 818.35938 800.29297 229.98047 301.75781 301.75781 416.99219 684.08203 216.79688 399.90234 216.79688 389.64844] 19 28 539.0625 29 30 216.79688 33 [684.08203 448.24219 955.07813 645.01953 573.24219 619.14063 701.17188 505.85938 488.28125 686.03516 709.96094 266.11328 356.93359 580.07813 470.70313 897.94922 748.04688 753.90625 560.05859 753.90625 598.14453 531.25 523.92578 687.01172 621.09375 934.08203 589.84375 552.73438 570.3125] 66 [415.03906 0 508.78906 587.89063 461.91406 588.86719 522.94922 312.98828 588.86719 565.91797 242.1875 242.1875 497.07031 242.1875 861.32813 565.91797 585.9375 587.89063 588.86719 347.65625 424.31641 338.86719 565.91797 479.00391 722.65625 458.98438 483.88672 452.14844] 110 [508.78906] 135 [406.25] 161 [585.9375] 195 [216.79688] 254 [619.14063]] /DW 0>> endobj 1610 0 obj <> stream x]n <4!ԥhY 'CZ"bV36/SmMG`Xqo^!\7%QNuCm9Lϰ:k߽FolK٬on6`E;ֽ'٦h R6_CIF'*BQ@^UUU0_>k[NeX(;wD}RUrK'H<ﯧ^ҢHd 8%ZFkͶtx%we&Fh X|֍nQ-6 endstream endobj 4 0 obj <> endobj 1611 0 obj <> stream xW |/Iw*"~R򨢍mSR5}%-ӄ>hЎ9gX@M_76ܦޖ&"(>)*/y(C4gޛ7|Ϲ{D'T\7տ@ 2dnhY@Z`eljPD.wˠ" ٞdh @Լ<&p|rZkVɸO P0 w2{r'cf}"Z”$1UkK]y>xoOehxy/!H]߆yP%>t{YkKgW~wpk>GQ901jTHҊ;x@ wsPNWc<J Q4eوVa/:)g^HgG)JᡙFC͘B/ `qQ5♀װhB jP܂_c)̎|6A6Jt%ƕ Lv Y٥=,;s9hpvg]]zdV,LYY:`f0fdnCa=q|} .ϱ3g|>rM#; feG[{ f+׻O9|>O}9Ų=c*`*zֱ 3 zϱ-1 ;44zMj$s9jk|َ,f (L A֪+ՇU_K]U=SԽsaU>{0ήdWG\̠ejf]`*+0LVa셢vvzT{ϓ*nZ u1vØ"?ZV#1Ea?#N![,cKsha9XN$%HĴMC!xI%F|[%dd`ꀬ d#1z@6a4*4`!Zр ʐ9hB4Ѐ%hG3Zac*匥hAKdmXǡa*&c fB\4KЊvPV,A(:rMтh.u-Cg:RC` p4܌64`1\Jb]Q,G+-hB" uhEcP.mh퓑 ㇴpuDт64AQ,1pMhEKQ/wW5,iPf,@d1u`̲KP';X;9 f)^VOC$7e8:G:9Az4`jKV4I]m3چN>Q4?&.1 fG2R(H8ҐFHG#tEX`F}!0Bb>\l#%^Qzp}CÎc\}1.tGpJ }#×#0cf\!>t\Kbfч)i\4C!,Hp=n@ B!t x܈REM>%(M>J1s}0N 7I܄tsPA'0t娦A: T+tqT!L/: ja>Wp CHb{AC*(nAŭh#`!CG@bn#tXt$F#ahBB3Fp!܎v:,Xet%:(v:a9%E|RM`I|]';Ioc9Mowm|۸ߥ&GpVtԋo!F6VQ/Q/i?ԋڏ+#ڏb )Ux>~i/~i/~_^^=x=7~Cob570қ~Ko;zqz~?ױO5tkxLZtk-knw2RoIqэuݵ3gL6erޤ\/w:YVKfFzjJ9d4 [,KFu5ovSI۫Fxi>("Ztឨ?Ixz/2's)ʰǃn'%t 儹 +9hѝnU( z=+sע-<ݩlV /,}55nMb 0^LYq>qVVky"WF5eZrP=сvMhHs3L\ .m 17e4.\f}uUBz֛4 Dy CS^}6XnzH9峥>>c.4k1@@pU!L]gDQ]huy<[Dsh1>WfIoenE._]RPԥ]&h+C S#EqlEEhx$VBф""Ujz$gzgI$/yǐx 1'NQ2Oc${Ҕtma@2ú4]Jq{XgWǞD2$V"x)u&. .1f7~E|#Æq7t1ŔS" P $$\)p&:6-\'u,r iHe> endstream endobj 1612 0 obj <> endobj 1613 0 obj <> /W [0 [645.50781] 6 [604.00391] 19 [515.13672] 26 [499.02344]] /DW 0>> endobj 1614 0 obj <> stream x]j0 ~ Cv aXpl%5,qC~) _?oKG6 Nad.n a+J0V'goK-Fd68- &8ܛxz3R#͇W5#,;u)ڸMy2sƠhBV !mV2$o^aZ*S%v:/=5feX! P6YWJ it endstream endobj 5 0 obj <> endobj 1615 0 obj <> stream xyxU?9uuW/U';M:IHC$ !l0 &VpD"q q:2z*񎃊(*⾌$+;{3w>}{N=~* Dwz@8m䄆+V(~K^7f]<8%"6gKﮝ ,s-@s^=gIlx$l|U'^Z8yŧ< 7ovn gޥ˯؝!`_xVӃo 0ťMW-l;\t a`5dd\ :d%3Vo.8 DXtP<ʨ!@Fv0~>]%?}ЌO/~ Q-1͔>|ژ{⒓es ,w3"HcyF211 2aJ0Hw]ſM&6~ tNP,` np RMA p$ԣྠ,ucF!"(GUxL44g us}[?չJAO=Ȥ\L֑Nf 3臽Cχp'8~D-\! GMGGengf1K4LZ*=,_YVkdc/_e/qc??60c0 eR6|IQe'p|ue]k M wsWbN:ܕF矽>K2wC1i냭TVll*X1{[{"nn/MjpŨar0K`*,JCp#db6q/7yw.p&`cp ?=E#z0OĽ(;5j@k̇#o6f% п9szZb˥Xg^f̩t(:.tۋ?c؊vI wo(H8F&?|;0a!c?O{̨ތ+Xiew]y~ pt!}+=l=`Sa@aã]/oxi}f4c=clFk,G~5Jo8DZ/3<{-^e"=DH3;ycӌ@7ȗO3ۙ]LOX; .5k&=d}[_mB$%wpLA=f28XN.!chKȶLI2TP-OD"dخ8%RiF{/h&2KLd*T'[0-+7l6zc*k\_EZ[,-lIdJ.t7d?#>Dnm!-$rK Dnj"Z~la淐x=΁G̃tDt0d*& @L!CP8HNC"J*Pˤ$2C B&C@sHpa'1KJD)"K"!@" %DHdznAo^q}Ž\{0ׁ?RȤARJP$BߟA%$,s_!+VE &rYuU,{/>>uGl%f lߔi>sۢRTٿoeAeʼ`eNe_tV:*͕B%[Iz:kQ[?BuZN"lN-ԪI3r[RETzA꬞>dO72d͵SUI6nNV-#"gezٲe=S} j5MjQMHchyjwKb bAdVo tdSkQGȲNu-೦QկVNN)G'ՍUźZU4C U_UMZ#B A!¬k0âkI`U vv8p@OB~Np>d?L'd KD9B#@BEQ!_aߣ w(@?;"~(ҿE пEQD(տ j%R_ `k DgE-_a0*Paq C0LJ*1\?0B?aGjHF?֏ccQ`~Ph׏b &]zaޅZLֻ0#:G~1U?Id\:4_b t0b~ 0.Ea4u0M!0_`މ Ѭw";q1_s/hԿLh%AEA1KX\e,WcQ/ƕ4?eZ Kqr\˱BW`)*S\U'7-'7`nc%Vq=ni.F7U7b1n/тp3n?YVv#܊ GX;wZ:l?/I.C X?Gw^}>}lo {hǃ{^wqŽxD~A|72gKx /m_;8wS߃qX߃KE]GQq|/S|gF9ww w F'~П!?8?/]2]8F џ?kҟwDԟĬ?E?I? N NDwB3j(D}O_;nѣG OT ;rxAce%E 煂9Y q۬,c"W 5 ԌF*PX Ƣ,pժI [HB)lUHsB Xr*ԬkdqY T&_eǪlk 60 cULjӊP@EE(PQנts$Yzs0 YǛ33222d#xϖ^?E94̥Sre23 d]̳H822Sճ?˛嗳V/RJ<z{6e%AR`EAzYYyK'3# @%=dsJN͖i+qysgя-Z+„̄d",{^DV--)!%?6l_S x4 aU{I(a4_N ;L3rE?,À$f]x.TU0Ġ̝]y%mɘ3Yh&Mznm3 &d{X%"qwvAڞ˸\*a0™LIX}Ǐ-&'.D^|хʼnx<)-!!%CJL q.'k$kjӖSlI"#að 6E4LDaYrlkz}fs3XLINd"zpPq WW7uwI*Odg`a{*ZZBHk`?^% \~,p"?(5 Vړ $2P*B.!|ȈlPCeߓoNEd:ng2aff.V$iM0`Lw%jbE 0TRLΪY88Q=Uݮ(fA~QBhhMK^jOf"RtWQQWhѮ̮hҒP|0n0|&g`01Y'ج;/X{x49ujt_wEXFoM1lfE bnO-;ȶ'nG{mJKn8x]N_<]JK{ce`P#x7λvGZM /ǵ*񍋿q͹ܨ9ZLvd`H"GndINJ?+i 5n(U议SL'Ħ4Ἳ~ö'5<ۭk*>Q}/n[W/`m a D } IXr'ˑ;ړ|3.mgyA ggL1aL; c~W>:{7x'7C0?\!&++g ͮ0oK.v2^}Fu-{as]?n6Lӿ|6y3Dk'=^|~~=osnQyt }ta;0]VR{3lkgsΡ/,~nT6=zӄGTrVM^zb2n xl#n|`>`l~$9>'166/̇!;yB7f@.ԣ8Q_>.L)XTBIM(6hp񸩱 f yǝܵ}jO W|.0(_˷%JXY9Yd8"w#vCvKZA4녻R{FX+iaCl\lAaX0|vWN2:3KϓK;mLeְx{]6x0"Hb\듌 dm"I+x#S^4%t$_q#V6i/jߓ֬rH?|i  =2M{.F0^yin'0OIIr+l6żtPcJ!V\m%>A|5ڥk'~${}oD_Q[$ "'B8YA ïO2,O|+bPB},}ti.f0`ր4?D6]eHoBbhzbg@jdEX $G5QV^&~oTmD[E!Jd}>,IXl&ш(͡vI*Yv̗k]ڳd w~~@w.1אud@"mq24_RC&%L#)O + J>Ŕ(ҒPX_z£Gcuoۻdfп"dXTUGPX|;xvQ3,ϛ;TQ =ɃG"D4uߎ~o&68,dlJ%7dGUUvaD¤0Pû;U)N7'~H>GVj^k\hNO,t`in^ƷÅ~ Ixlaāxq9MJWwݧψ?_]yn覚Hx~ѐ(5RGHlgoH90 @(oEV̓Teؚq 6A4()R/SšsD6Qpȱ+/,O^|}',[{ m.39%!gűaIMnkƾlp+5dppڼ'_'"7΃Y>)g,k"F9':scl.{D K 1?+aL 2{%6Sb2F@B@xOw&T̜K?OX  .`X%g8lɈEiPR.ڕ1xvTp2s~R-&u,']|#.2O|4h\YG9'|;!okY=f{XQ_:G*)'~kNa7rqALܓOlVx'Y|$ufiۘt)-ѮciyGi++.Opr~TBTL&'Gc[w#|RMҲ`}&y%Vܨ)mQ7uF1>h‰~ Z ?*!kV&9AdŶ$)',g%Z, 4fJP(H ׿ؚCvu.t Ԏ_(&W{pV%f8X$*r-4.bd:X)xR-Uħ%9YEҜid, 0xԽw#^u$5[IbK8֖.8Bbᴌp+-5PX|GCC zp//h=t[Uf8ɽ{{~z)?7%mIA6D~7\FOQ\إ ?'VCs-kOrC?}^qS]{f'nr!9Sqɜ74nnϽ[MwE;&q*nR֏jh"Hl:r9t)v.ƧאNn?8櫿:j m/]q֏Y"qutmZ?fҺ✐/5yD`Y\0]ー,Z`xC'm~yAU vܧy9jq@O|_G.X_;-閍mK{}979{ϗ }HOK7I+_7%V5:o'ݶdẢeYY'?ょ̺.\Zʨ=re #/sl%P1 bpcD"v;'M,]L&-ir06A-5ˢIuFQ>b FR<6r#t~ C#Raw^߮ay7靜COa-BE{wGR9PPQbLZqNn[Z[[soyi~\;k%!;aL,agez2asY[~B[}L5r8 'WɼFw} ;`"RSgp&ੵ{~}_X_:q|5aLm;l[7{ %@#c[+[Uro3"zOI#IK3N=&_%``NNy[XD @Ǔ?07 p{Ke}<>e9٥}ܞ>Y9e}(<;/פ=x` endstream endobj 1616 0 obj <> endobj 1617 0 obj <> /W [0 [645.50781 0 0 274.90234] 10 [258.30078 332.03125 332.03125 0 694.33594 241.21094 401.85547 241.21094 413.57422 555.17578 402.34375] 21 24 555.17578 25 28 558.10547 29 [241.21094] 34 [443.84766 954.58984 671.38672 0 621.09375 717.28516 517.57813 502.44141 697.26563 735.35156 291.50391 0 0 488.76953 924.31641 767.08984 755.85938 584.47266 0 0 544.43359 551.75781 0 641.60156 965.82031 619.14063] 68 [521.97266 602.53906 470.21484 602.53906 531.25 344.72656 602.53906 582.03125 261.23047 261.23047 524.90234 261.23047 885.74219 583.49609 597.16797 602.53906 602.53906 370.11719 431.15234 361.32813 583.49609 507.32422 756.34766 500.97656 508.30078 464.35547] 163 [274.90234] 172 [813.47656]] /DW 0>> endobj 1618 0 obj <> stream x]n0E /EdHH8EbчJbq} M.{glBUŇt p:XscuXuߌL\Srs Sa+lxuzD}.Ys-ߚض2 kǨ#ڍ Lc7I)eγ,˜3'NrI|QbU*Y,=VZ3+X`J**u|A F$;r)ZiB$ m=Ur&\vLֶ'{)uQ}e2 ~aa\R  endstream endobj 7 0 obj <> endobj 1619 0 obj <> stream xM1 0 C]!O)) UM=aFKQcq"61a\&[մrb"} endstream endobj 1620 0 obj <>>> /BBox [0 0 2033 1766] /Group <> /Filter /FlateDecode /Length 1434>> stream xmWK# @8[?_#<^x?SRvHD".ԑL''&<1? 0~h&\șO33e~23c>W%.$ϧC3IAPS2#@FFOQBw @S`3AiP}{X?Y$[6L#\)\D BBY Y"Y[.m8tyMM' S!C!Q=(uRcȔ@T ~N^ԉP7H6 [AkaosRJz]똸J M91CK &p E7ZR"" b 9fThFCzTmUF4UBM,Lo0J@E6b:]o62;4OzM;I{Nc qC4b<ېhQp*ՏK?SWOOLZDjJTAGӅ0Zt4'cʦ U}50Ij|0T7Qd[#25lYLd X4vOW1_.$tD~fK6'\|x'9[.BȂǿz<~#<)/Zfb3g擢"/Tp&7G [p"4vsjlM {=sw=:r+g4a*W5''Z c:-[~THZVR /VryςlUWr0oP(SNp$n*K%$@▸UiMUek]XQƘ 䪾L $qw D6Xe]6yϨd/FQE3`<4'ɶ;h)I<5T=c6G p> n\;}$\S530Z̔`wmpxˈ[BB')%+{;tPM> stream 2812 0 d0 1 0 0 1 0 0 cm /XgF37 Do endstream endobj 1622 0 obj <> stream x]Pj0 +tli(Kvc^?̰qa/tOz'.ES3 \9,"8zbyCDƥu8)Vؽ0yazϸ^b )Cú˛w3!*;(}^kDh+>dhD&qv m~_&1q:w ڗriQdO;vI )B9 !Un endstream endobj 1623 0 obj <> endobj 42 0 obj <>>> /FirstChar 0 /LastChar 70 /FontBBox [102 431 2422 -1509] /CIDToGIDMap /Identity /ToUnicode 1622 0 R /FontDescriptor 1623 0 R /Widths [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2812] /Encoding <> /CharProcs <>>> endobj 1624 0 obj <> stream xM1 0 C]!O)) UM=aFKQcq"61a\&[մrb"} endstream endobj 1625 0 obj <>>> /BBox [0 0 2163 1730] /Group <> /Filter /FlateDecode /Length 2003>> stream xmXKm Q0smn;o %Ҹ?RO% lhE H}|=o_}O=i=m2MD$ c,pOQL h-諽&فIu- Ha.,|݆k5X"`\>>2gC²uThӵҐ|j!1ۄfB.+UC .X\h8r-k 7t-j{\~&w qwB!dFs5Џ00Dv黡(01yY;^p|< b-6Qm߉9r7GvӾ !N&lɅxWiv͙H0Cv|4[ۍ{n]' s.HƎ諒rj@P 2chbjuϸqG3pV HMe]lݡϿhׯ?I@'Tc0pQlP49tLsb70%CS M:|͆})N:!vgFWC#4d|ddGRR_uklHNut>X9ak} hԘ2e|lZrٚVB$ :*_P;%E|(>!c%] <lD-W%>H7jĴIƖaJ%PAwIܔ_)FN%fpQ 2čtUDJuzPwzBGשSсXxxΤ7an$}$!Bom֏?_9qUɌf?myeQXcfEp؊N1o 4a@CڅjF+H`s+C򜬳8Gqǩy RYœs S9f{AhM @lDt=5hm5Y;$:^Php Sȉ):&=Rը!/"cVcz8vbmV}0>?C%joi]G!Uqw8Dbc_ROR>567RuIM1|Y=+\1HGY-~׽=w/*h^l8j?8 v +4T@F`̈́C8Qmm}Nꬉ$1՛hGL4c_NhSs?["="mae.6XJ4=b}_ka=Z`S9+b5[zMWo/^Ɨ>G"guA~sܥ p/.HتS{Z^2]3-ebs9~yZmΤYPwϠ-vnouӊ1lx9|<;rj}^g;?~D $j7$On w 񪜱2481 qp憣 D2 Nݠy.]܅ YBߢzi}! t\\9 9A_0f| bs.^CPt4C%FBb1>X;]8` K+nz.1o,{LA_ҥNv7Ykso_ D XExď NJO'bXzۨ0g FS9|)[qY^sn 4"Qj"uپqi^;o2o,-/a]xkŻkqJYF` w@/MgdV>> [U+wmX5ib8WңX#$@ N ay w`E9dfi X~O"|il endstream endobj 1626 0 obj <> stream 2812 0 d0 1 0 0 1 0 0 cm /Xg46D Do endstream endobj 1627 0 obj <>>> /BBox [0 0 1591 2023] /Group <> /Filter /FlateDecode /Length 1762>> stream x]I#7Wp/40=a)JedEpc@?|xoo~2˜2̌$:ߋ=i[D ?^Hol2qz33%}M@ҕ"m2'xP`ˈo-r< ^$Wd⊺.W8W>`-'1<$2fVAfc6BUr#؏|OJ"1C,zc1,[ޚ,)jxi;[Gô<`ø|aBSLU )[&k8~p<:ׁi%o :9Y!m6с+.V*BMbAN[ˆX*"Vqcw$V)byM  @Ɗh_AoDFԋH'`{ 9J^O:*:!OejV:M8א踟N3WZ;}+ eXw ;tA@W D+ R9%PG ٦H> `}*X!Rq⍐t;ЙJRAhY-JwB*:Kb)%!UB$b~ O@%d21٭Hv!GHGWɇclkdLq;/b}W(:o 4Ʈ<*cK4]+ih3sCjc:u>:PybVZ`{8[g`Sw 7*OMlqz݆Ѩح"YE`B_NG"i8Ϟފz <_pR'o C:g<2,6;~PS|.O<4_-p( NxSK•p谫ǵфٯ3 +Ѐ|.C*F61P*jUPr4i3PCNc3I#V,%OGԨCV:RcVf;TB!Mr€ɺ'?hDWi ^ 'K`dN;ݹzl;s̼ .Kmg7RI4ṕAdǨuk>=oT}lJǪFfeOϷ۲ W+c>zdC8τm4lSCNeqr#}}|Cz|FYݤIs{uo$+zv"1u+72)3Yi?r,7󜋾gƷxM;z=؍Cڻ\_>YDsT㍠zΌ\fW BIx"SPUqz{^Xe\Jm GT Vs;EeS6TN B8;cS 7ϥzϳ{M>t,cZLu\] krWgoV`vTԮEۯ?P oSpDx$mn}ɬp˜nzfʪl Rdp7*^U}rɾnCx朿hq-=L5?utJ(B7Fh׶MDFiu.v:HI`H]79> stream 2812 0 d0 1 0 0 1 0 0 cm /Xg4A8 Do endstream endobj 1629 0 obj <> stream x]j0 ~ Cq1BƲ>c+a#nia ~⓸juK>LvaaIp*N&2ZݭsƩ!0!~iɅ$wK8!ep`\]L|7/C됲᪺{Ms4* | 5D?x%vZTzj]wihryIڀ>>> /FirstChar 0 /LastChar 172 /FontBBox [102 431 2489 -1740] /CIDToGIDMap /Identity /ToUnicode 1629 0 R /FontDescriptor 1623 0 R /Widths [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2812 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2812] /Encoding <> /CharProcs <>>> endobj 1630 0 obj <> stream x |U7|n-,tBu鄤t& ֝@$M&PDd\\GqGqf82 <<߱#;闯T@څ4X rnYhQZ"anC hzem KLXUܨ-(ßY21p+ka+@T4+ʹ } >RPRjbVTOMn4R7y=E5Gւ{F́1Vl+F^``;8!P0&U0K`)l !FBJlgT+o\Th+pHlh-G*$5xr`BӐ(ga, 21}y `$dC6Ly :Za!+R8% hH`ވu c<T b2c[.Y} !pjM- 7A+nz syB',Űnen% nֈ\=Vp/k~XzXwA k`m4>XEY\F#*FxM8<OC0<cC)Q i;`'< h)/.=)C  |P JB4MEӠ^9p ,vX b=VJ۶\b!\=FzA`Xq?Hu3Cۇd@^ `7^a=3 De^un? !8 /: $WHox1xÇ_;>>??9|}p / <\p@ 'A(9ykFLлwc؇P@GYL^b5*B7p} (eLEYU+<bbnB7T B=-~ޢޢU|.}>/vl%yDѢLRU~QU]T]TkM֫j_9Y91,2"3SŤ2m4SK>L+%˴_UG-3P=uQ\-Wk޻3ػ{1Ŵ6GnfZaQ&Dw1p7 |f4#`//ziGu{WnL+ ^_)wG1/*y]Lv/ =˴²ܼi'lL+gv-\pkG-74mnk tfkk*:be%E~߄Ǝ.steHs rXAU eh AV*5L܅V!hʮ ZIUhNO$C`\YRU8^b*+Y"*r&M<Жl6WZjn+ Z*-n.m(qe^ܢreAJ]l/V@aA#& P#JP %NLb,AV,Ųpa'hjpjx;X:WV7]}`t !?]Y-BTpK\Y uoA@ gMioSġnPA 2> emM,:HdY'P kҙZ|ftf({݆UU[fV6Y]Y&9Qj/ tZCSsƖn{I 鷚/ h[K{ݥ5P!^D*VyӃbh6!Xh.]Ze-n(!e٫3pgղC/ tZiwo /XZAM lZSꢹGuҒ0nܡ) ]%0k8E !h8kY@2NE%0!Ўr|Y-:*Yub⪲ Cuêi\ kiKUP6Zhi?^O EP`uKhU` rIXfU֠^go nkQ3VRs9? `:kB"U<(_wzt,mR1\Yv\nh6nK [Ntم&݆kQVPBe{Yju7V6u mc\Yn$>=8"6'\n&*PEM+;ZSGk 4X{)D7 Gk~1©8X.)`x01M!!hS$@.&^4r/I3VDzDTZa>s($[.X¯k(-eA8+!%ETq@L=JXR *J SŮ*4tM-ܫ-"Jm <ÔZylwԵu7a(}}BdAeo)">.r{+ˊpwɕ%A 2h\5<0P 2G s JgU`1cj81NP (^PFK21Pl"V6[l:Ή/W'`1,ɦ c칢;9^ JdIEPԑNkld+A[tPYHJKuP`Zį= YCU ʑz$BC^WG*/vʴ2AP8c s+Dq1aoأbIrAI&_-RfvhGH\$ЎOKmWm,; 꺯Of9]YSbrwBH)C(&RfƎwb ? cR]4+&N`˺q蕄[i &h(nPgmh :hY[Y[OU=U3ॱ8YluA^6mN#D X݂8nˬVMs6MpP݊c1o.Rj5CK& q>)cwL< LZ݆g$F݆;a>"J$CfglIbVAJ&:*axOOj @fUG? gH #٨_=깩^H̲Ph jGmW;mfpQOB-ǡOiFaD HD",K^"I(o%D&%rA"%DIDHKU"_H/\"iI"I)|*?H^"o%D~#$rR"JD>ȯ%D~%_J=ȻyG"oK-B"$rT"oJDސ%D^ȫyE"/K%!HX"/JDKdDJW"=$G"?. %DO%S"HdDKilV<%yR"OHqlcyT"Ha<$%Q"$^"HdD%rDH^#.Y%S"%rDIdDn,BtJdD%rDnHH"%rDIM"s%*iHD% %2G"%R/YHP"7HdDj%R#D%R%JLTL$IH"K'+DFK@"ɓ(x$+dK-{1),Z u7j_Qn5SaK58n.CV3*@JZSVZ |amp;H-9}au;hCRwy7Rç@RZ |E6vqo{j1"j*Bjjmqͮ܆Zw1wN-7ՙTS3Z_-qMMGMG[ſUYQܕhk9(Gr/GeWqmnUR!j~o.SרֽJMٯSauoNA?Lڛl+ StT.LQPo.Lh@@?+.&;0D{;%Mͅ|M"pYg|I 3D3MͅQS>%=- GN &'+$% E8JMGA^'W Be/8L½B.^$p~%K@`~F`]۫ pףmmG6q?6qM *ym{VT6qh&'&n{Zm6q[Mm۬m6qajUkдskڹMv1M;{D=iҴsjڹvn[iPwsnΐ:V&Q+)g4\;@oMؓ@,\Y2mgEX>UFpL{LAFڙ==P'>xܵnU)Ӄm)EuJ~`RT +c{*YiB (<^CVvYx5K-УWhnnޣ{UGSM(*sv.\Թ!g碅 ?C ltvFigg…Ng… N9;Yq[XI?P4<x4<GGGxtx-߀G_.} <+ _G <: <3G}SOG}<=w>x$C _ xK{wG<(M^^Q/x$~<ѽ{G]GbPww9B_6᥃mPK5xP 9Zm-ZyPAMZ7նAjV[jyPMZmjàVoAjVg jnPA0h͠6ڬfՠ6+9mPS8yPW6Aj?1ߠjj젖Z=A-j)oPKRr=%7h$_+w"1:4ȁx\r=kHr d0H|JeB\_G̣!T f3={>{ۙS6Qv=ݓ7j$eyrQ(7>FMݕt[3l)yDŽm5&K8r4k\4]BU[ݮrTX:3zrP6[(VA!%\T)HOhZ9B)[Om(bBebbyFgxG{܆($.ŜlK ѴR-.q;sslvFۑDLg?z\y:__?puB2t6%kl6UΈsUF&HDJppWG T8Ǿ(ȴ7L%8?D`uovNCfqʓfOQq1vE|{fm.if#m;VĜBTJ4p=w4[Z@ Aܖ*vc14ϔJ~FNck=#j8ɑ›DMJg!Qg!NGM'fEПH}QyG#qz7k%LG+,k*,+Gb U›#^\=K1IJr:e̾k#r]F}c?ZA9Le `:W2NLiadWCi\kP߉ GcLqB8|{Cd_C%:R5%M<-fʦMzbV٭[MYYȷpƬdc3r;u369W:o{eu#WжyӰXU3?=3K >$jz?R,vj|gs}gs‡G `sdJ鐲k#'dˋj9φ>|@" וz+M_``!Nԯ$ !H"fȖy6~~j,k%}DA V>,˴V)䅲b<^rn}F/1"" CfLJCTX6F2_"w߲4Nڍd7G氖+W"R/NX HkW!UcOd SPq]߯Şd /$\m؁۱]v'7nܝGlEV|;@zꎩ'kq6lZt=Ӭ IU%BzHxͯ1Ɨg~2"USF]`t:;qASZ-WXsXڙ:Jϋ֞7jX04Y\0}zʚW;Gͽ&K6,[aWڦVNM} D4#rWՒ7%'blΨ;2A)'ț2.gԄimǟV\ɰHd($SrRE3L*24>uv=NűAv<y?G)Cyj3"t _#`7m;.Nĕf-=ٚwRQjj:.(2}RUE&@/{:5zݸTͻ!d3Ɗ9u$*&b H'NOɈ?xFa-&XiqF_@;sg^,}&hٔ;=3?rܓ3.Ϛ6uOib#wOAo%ege'UBm&Hh(^!VaU(?BX85diFQH Jn$VJ_*]q`AݡY/4͸+՛;-V2zq7Oϡ߼oRYvezo\='/.z\$16!!{ |M/A !?p Ӆү\GUF;RPJ%:D3;CAҫcR:R\5쩐w}/jkW)"91m̈́{ˋĮ DD};S9OC [@:.ԋѨi*,qaoT5_2ժܷl6GQ'^EoвcoClhyZ^L:=F{ Hlٮ=eoq Yvy؊VoFv^ZMwػx!ul\բsy: ng&^.. qq b'Ui?/a-'}сef!L~(J01/ C2-V48i`(Ϗ}}g։{VZм/)d)#7gr}lbY? W:rn­XE-:Z#xM+F2P5j9 G 'ߋ񺏐/Du bH7**0RCb.Q^Wh_7Ė·t%y'quC \y1$%9BoCtxGoxCdMjluG#)8GnJ Wٸܴ䔜8ܚ#t V8P?Xz^Ul1S #~{ٌxzV [D|2< i>cL$J>$a%yCΙ UM~ĵ =yF[tN^&VLH,幾gIy!)F~jzFj0lHw^T?h8to@ZYI4NgVES1^HbDa_WݻdPIflFDr.PUV >*35"> Ӊ{j˚ LFCGb/$iCF{ ZHbfbjU#RT_K%/xONY=!Sv1Yj6Yq(IJ_M= d|HcljۺU7cٶm]QcWטG3_wu˨W Jtf/ϼI'鮬~&h$T Uq"<.D*j.!KňYp2^eXQ-gox%3/90%FoDwvd/k_4XW#Th :ciĺXТ=~*JM< Z@\)$J\ltlgcR>Y檮v=enٻEs Lmsj<UB YBNJ4+iZ&c}x犋 4 }.)A y5;y)LѨ*ZT0h4 EC c1V+8p @3pʟ6hF#jJEL^M>x xH7hcFc6 %DNl&GBt9mI)z)7>_|pS.4̕X5iԅވw`41?&3Xc(>>1).&Ld*5Sv\QRӖוgPR(޸dς^2mJZpœ9Z.wO+ү:t$v$Tb5Mle/-K9+722V;폡oboEXQ`# 畴OT~?ԺGX#z+K-FZF}^_MHA{jƧ: >@E;_4β,b(yIIQR3Th#MΆX)IpUٌl?<}T9G۞@÷ӇwW8!9 ?i?јh5fQ@l3e #Kz(ҎEZCo!" VQM 402y:ӱ\n_ Lo?c5ކɯa}wDԲͨ*p[sГ}CQ䱝jzb5՟v8Gĺ #kݹ nwpZ aџbT䚏 $Dž͊o{5~qhVl-7|,d,;.g·2oBJVs>jGxW~]gk5"bea4Q'M#Bwy?R;J:umM2ح*f^4gl~Ue=76^CR&I+wVѱɥȮW a--sR#eZI8-M+j_3j-W4<^|GUF\qҕi:tuP&<ۈ>H\G!ioZuH{ċ![Sd{n:?Z f I I j~I.99rܤ }jݐ.G'-*Q>9\(99l27qCjVw~Z~g߻aUѿy S|k'VgwkZ0wm-޸O2fV6w{;ySdcjzeە]GK?RUĨD[KUgMJ?Ț.4]H7nIYgCI)!1SB(9v_-K2/2OpCLi o{nnhgǘq#owѮGsL(mZEIm%Kі[#K; 6nPpq\cChY,G\<~_/BfMv#^\O8$Ȏ0/O2K/,g%bxDj#z0@*zJҦ$ I*8^l^T%)ZחyyqkDJ^6{̈Ը1Z-2Ô2M183FZ -Ǒs}B_YSُzQ`~AZ4E=ȨTB~ /hi>_r?e=\7[bڪJf{%s 攎@WGfX< -/pV-([m\JٌfH/3:%IGYIp[aqWi9U /~ 8D߁LLvу~S(]Q(4/x1/1SS}&3GC8z,di/dЫd읒1Q[PpSt[TFR"w߼tKˋoGC͹EKvV}c鈔 EʊKZ\W#g{j6j8yY[ wLl+P<\g6?/ x{ (~FUUb9ޟ{\u&BΨC1`v KɻjQY+ݷ ݇>M#y9 endstream endobj 1631 0 obj <> endobj 1632 0 obj <> /W [0 683 549.80469] /DW 0>> endobj 1633 0 obj <> stream x]n0~ C$DH8Gy Ej rC޾b'M@{wܗv2pcS`[G'+;9דr_.ΥF$Rn%k-DZr1"Cg^*Nk=g˖eK<ճ64iƖ.SݐmO"QJT&EQ ;dR(eTʴfZkTr&A> endobj 1634 0 obj <> stream xM1 0 C]!O)) UM=aFKQcq"61a\&[մrb"} endstream endobj 1635 0 obj <>>> /BBox [0 0 2018 2018] /Group <> /Filter /FlateDecode /Length 1489>> stream xeX;%7@=!A޽BGe;k *)aH$߅B ]] |P>V{y~}_^/4¦CjZXƨ>|]V]rԥh叻{+VӋHr.ܠ`҉d V*_Wu:ZbKw7HOe._WMgX @2tmu&Y՞iFg̸#DgpC:Bèr[\57 kHIQ ]Ged ;= 17}+hµƊ 7'{>Ƨ k,9J9"E}g#KٞĚ`,=QT6lZ]^\(H #e}98$^~^2wyw^Ls6Y Y1HHsud|k2 _&f,GV.bl(}Xm6hp=ۯY=ڈgƏ#wlJ$ 1>;˙ٷ o "r;h`LǥRvL@Kۇ+iL:.sT0j45q[ ~&!;L1< mpx-H}F:U ++" X_|%AR<3vn XGc8I,omzKA }=ymZ_'gS0O6dT]vΝs :I2tQ2;S/ℇh  Ih&B̧BԆP/9O#KZJxߊ$?DDCtscZAp飻7{ zsE~=J1DG"FHno(#>y;q~#ǙG萄GzZ6*C)~PF-u #x%IJYdEl[:@|-L]׏L}r$Gj"_ȡyzɢ{?躱{wt? oQtG}PoItDG쭈Npyj*e?ц EyC孇?xC!PtXG٫;;#得ښeڢ#qBܦBF=n5U'qwxIZC&;Z! r(ibyȺԣŏٮQP nXtHӦq n>_mW`ة'%1ٳ<ٲà喩 >[t6z(Ɏ{⯸͎3uT˪N"!kyف6{1hpټ hӸo[:OS8Qq,:0zT>þŴyB7~R$^19)VP^n5,ю(8 Z )1qc5 I;d)n n>VGf13ƣc3~s > stream 2812 0 d0 1 0 0 1 0 0 cm /Xg8A5 Do endstream endobj 1637 0 obj <>>> /BBox [0 0 2018 2018] /Group <> /Filter /FlateDecode /Length 1142>> stream xmK& ^6`豂'[U3Spty'0 A@F?>߾ |sQGvx um7RUZ`-"Kb\3tM8 @ѡ+-qurc)ùiWcԤuOA檧^,]Aĝf#G bӝ#,qg~w%XUx6U@xjxm`^JjzX&W1e8颠zD]S  0 -soQ؄Qx_(|!b -A˃yᵾLBk;u:2)f uHv}u+Eo|*<:FTp!Tb8Z3*[mSjhQ،s[a͡-ʍ -,M[ ;58 y FH#e"iHNp6zL"FF9)M[5Zx/w:ƙLQHK]z]fkpӪ!66>Iqs5wGce]:濏fiǴz@:-f:OQ=qywXףhFJdr?a]!l~mvjȧ.dDԳQbN0ly-jjڅ}&8zpkޱpT6|0zqvzy( u >*߯XX@ endstream endobj 1638 0 obj <> stream 2812 0 d0 1 0 0 1 0 0 cm /Xg8A7 Do endstream endobj 1639 0 obj <> stream x]j0 ~ Cq1xe}VR"9G'U-+za8%GGXu&UfҁU:'Z<WUg3ZF]nxRI zB9vh-Rri=\YBFc9hQӈL4!sՑJI{"~s۴]@4KH)$cm@Ö9r endstream endobj 213 0 obj <>>> /FirstChar 0 /LastChar 175 /FontBBox [102 431 2415 -1731] /CIDToGIDMap /Identity /ToUnicode 1639 0 R /FontDescriptor 1623 0 R /Widths [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2812 0 2812] /Encoding <> /CharProcs <>>> endobj xref 0 1640 0000000000 65535 f 0000000015 00000 n 0000462822 00000 n 0000000262 00000 n 0000686983 00000 n 0000692440 00000 n 0000000299 00000 n 0000706979 00000 n 0000000375 00000 n 0000000416 00000 n 0000000456 00000 n 0000000497 00000 n 0000108739 00000 n 0000109905 00000 n 0000109946 00000 n 0000110683 00000 n 0000110722 00000 n 0000111197 00000 n 0000111762 00000 n 0000112409 00000 n 0000112572 00000 n 0000112775 00000 n 0000112968 00000 n 0000113175 00000 n 0000113386 00000 n 0000113603 00000 n 0000113820 00000 n 0000114039 00000 n 0000114259 00000 n 0000114475 00000 n 0000114695 00000 n 0000114912 00000 n 0000115142 00000 n 0000115341 00000 n 0000115502 00000 n 0000115704 00000 n 0000115915 00000 n 0000116115 00000 n 0000116325 00000 n 0000463335 00000 n 0000141433 00000 n 0000141911 00000 n 0000709533 00000 n 0000142482 00000 n 0000143222 00000 n 0000143872 00000 n 0000143951 00000 n 0000144426 00000 n 0000144993 00000 n 0000145643 00000 n 0000159737 00000 n 0000159938 00000 n 0000160108 00000 n 0000160309 00000 n 0000160479 00000 n 0000160680 00000 n 0000160850 00000 n 0000161843 00000 n 0000162836 00000 n 0000463754 00000 n 0000174108 00000 n 0000174588 00000 n 0000175155 00000 n 0000196079 00000 n 0000221218 00000 n 0000221692 00000 n 0000222257 00000 n 0000222906 00000 n 0000223898 00000 n 0000224890 00000 n 0000225085 00000 n 0000226077 00000 n 0000227069 00000 n 0000227264 00000 n 0000227468 00000 n 0000227669 00000 n 0000227839 00000 n 0000228049 00000 n 0000464163 00000 n 0000234467 00000 n 0000234944 00000 n 0000715309 00000 n 0000235514 00000 n 0000236254 00000 n 0000236905 00000 n 0000237378 00000 n 0000237947 00000 n 0000238596 00000 n 0000238796 00000 n 0000238965 00000 n 0000239166 00000 n 0000239335 00000 n 0000239532 00000 n 0000239732 00000 n 0000239900 00000 n 0000240148 00000 n 0000240385 00000 n 0000240609 00000 n 0000464584 00000 n 0000252230 00000 n 0000252710 00000 n 0000253287 00000 n 0000258143 00000 n 0000258618 00000 n 0000259188 00000 n 0000259839 00000 n 0000259917 00000 n 0000260121 00000 n 0000260293 00000 n 0000260495 00000 n 0000260715 00000 n 0000260935 00000 n 0000261137 00000 n 0000261307 00000 n 0000261514 00000 n 0000261715 00000 n 0000261913 00000 n 0000262112 00000 n 0000262313 00000 n 0000262509 00000 n 0000262711 00000 n 0000262915 00000 n 0000465066 00000 n 0000276026 00000 n 0000276507 00000 n 0000277083 00000 n 0000277821 00000 n 0000278470 00000 n 0000278936 00000 n 0000279503 00000 n 0000280152 00000 n 0000280374 00000 n 0000280580 00000 n 0000280751 00000 n 0000280953 00000 n 0000281124 00000 n 0000281325 00000 n 0000281494 00000 n 0000281702 00000 n 0000281875 00000 n 0000282077 00000 n 0000282247 00000 n 0000465517 00000 n 0000296753 00000 n 0000297233 00000 n 0000297807 00000 n 0000298550 00000 n 0000299200 00000 n 0000299408 00000 n 0000299606 00000 n 0000299808 00000 n 0000300009 00000 n 0000300211 00000 n 0000300414 00000 n 0000300609 00000 n 0000300779 00000 n 0000300980 00000 n 0000301151 00000 n 0000301353 00000 n 0000301523 00000 n 0000301725 00000 n 0000301951 00000 n 0000302155 00000 n 0000302328 00000 n 0000465980 00000 n 0000318193 00000 n 0000318929 00000 n 0000732217 00000 n 0000319573 00000 n 0000320047 00000 n 0000320615 00000 n 0000321265 00000 n 0000321467 00000 n 0000321637 00000 n 0000321839 00000 n 0000322046 00000 n 0000322217 00000 n 0000322421 00000 n 0000322642 00000 n 0000322844 00000 n 0000323015 00000 n 0000323217 00000 n 0000323388 00000 n 0000323590 00000 n 0000466427 00000 n 0000343709 00000 n 0000344188 00000 n 0000344762 00000 n 0000345504 00000 n 0000346153 00000 n 0000346629 00000 n 0000347198 00000 n 0000347848 00000 n 0000348048 00000 n 0000348247 00000 n 0000348451 00000 n 0000348710 00000 n 0000348910 00000 n 0000349110 00000 n 0000349311 00000 n 0000349481 00000 n 0000349688 00000 n 0000349892 00000 n 0000350065 00000 n 0000350272 00000 n 0000350480 00000 n 0000350679 00000 n 0000350881 00000 n 0000351090 00000 n 0000351298 00000 n 0000466928 00000 n 0000361280 00000 n 0000361761 00000 n 0000736209 00000 n 0000362340 00000 n 0000362541 00000 n 0000362747 00000 n 0000362954 00000 n 0000363152 00000 n 0000363354 00000 n 0000363563 00000 n 0000363769 00000 n 0000363939 00000 n 0000364145 00000 n 0000364315 00000 n 0000364519 00000 n 0000364723 00000 n 0000364924 00000 n 0000467341 00000 n 0000377507 00000 n 0000378255 00000 n 0000378907 00000 n 0000378947 00000 n 0000380086 00000 n 0000384942 00000 n 0000385144 00000 n 0000385315 00000 n 0000385522 00000 n 0000385724 00000 n 0000385895 00000 n 0000386097 00000 n 0000386268 00000 n 0000386472 00000 n 0000386637 00000 n 0000386922 00000 n 0000387207 00000 n 0000387409 00000 n 0000467851 00000 n 0000407072 00000 n 0000412522 00000 n 0000413139 00000 n 0000421233 00000 n 0000429368 00000 n 0000429758 00000 n 0000433533 00000 n 0000441510 00000 n 0000446366 00000 n 0000446573 00000 n 0000446776 00000 n 0000446983 00000 n 0000447182 00000 n 0000447386 00000 n 0000447591 00000 n 0000447795 00000 n 0000447960 00000 n 0000448222 00000 n 0000448484 00000 n 0000448688 00000 n 0000448853 00000 n 0000449115 00000 n 0000449338 00000 n 0000449600 00000 n 0000449803 00000 n 0000450006 00000 n 0000468385 00000 n 0000468510 00000 n 0000468609 00000 n 0000468677 00000 n 0000665451 00000 n 0000625997 00000 n 0000625907 00000 n 0000625809 00000 n 0000475054 00000 n 0000474934 00000 n 0000470848 00000 n 0000471431 00000 n 0000470969 00000 n 0000471091 00000 n 0000471335 00000 n 0000471213 00000 n 0000471543 00000 n 0000474838 00000 n 0000474694 00000 n 0000471915 00000 n 0000471786 00000 n 0000471664 00000 n 0000472475 00000 n 0000472338 00000 n 0000472004 00000 n 0000472248 00000 n 0000472126 00000 n 0000473035 00000 n 0000472898 00000 n 0000472564 00000 n 0000472808 00000 n 0000472686 00000 n 0000473375 00000 n 0000473246 00000 n 0000473124 00000 n 0000473715 00000 n 0000473586 00000 n 0000473464 00000 n 0000474055 00000 n 0000473926 00000 n 0000473804 00000 n 0000474395 00000 n 0000474266 00000 n 0000474144 00000 n 0000474605 00000 n 0000474484 00000 n 0000625713 00000 n 0000625623 00000 n 0000625533 00000 n 0000625443 00000 n 0000625345 00000 n 0000477550 00000 n 0000475266 00000 n 0000475144 00000 n 0000475518 00000 n 0000475396 00000 n 0000475931 00000 n 0000475802 00000 n 0000475681 00000 n 0000476417 00000 n 0000476021 00000 n 0000476175 00000 n 0000476296 00000 n 0000476643 00000 n 0000476522 00000 n 0000477436 00000 n 0000476854 00000 n 0000476733 00000 n 0000476983 00000 n 0000477225 00000 n 0000477104 00000 n 0000477315 00000 n 0000624974 00000 n 0000488158 00000 n 0000488068 00000 n 0000487894 00000 n 0000479172 00000 n 0000479042 00000 n 0000477802 00000 n 0000477680 00000 n 0000477931 00000 n 0000478053 00000 n 0000478387 00000 n 0000478297 00000 n 0000478175 00000 n 0000478516 00000 n 0000478946 00000 n 0000478850 00000 n 0000478760 00000 n 0000478638 00000 n 0000487264 00000 n 0000487168 00000 n 0000486921 00000 n 0000479383 00000 n 0000479261 00000 n 0000479593 00000 n 0000479471 00000 n 0000479803 00000 n 0000479681 00000 n 0000480013 00000 n 0000479891 00000 n 0000480630 00000 n 0000480101 00000 n 0000480345 00000 n 0000480223 00000 n 0000480474 00000 n 0000481229 00000 n 0000480734 00000 n 0000480978 00000 n 0000480856 00000 n 0000481107 00000 n 0000481455 00000 n 0000481333 00000 n 0000483636 00000 n 0000481699 00000 n 0000481543 00000 n 0000482032 00000 n 0000481788 00000 n 0000481910 00000 n 0000482923 00000 n 0000482129 00000 n 0000482373 00000 n 0000482251 00000 n 0000482502 00000 n 0000482835 00000 n 0000482746 00000 n 0000482624 00000 n 0000483531 00000 n 0000483036 00000 n 0000483280 00000 n 0000483158 00000 n 0000483409 00000 n 0000483870 00000 n 0000483748 00000 n 0000486171 00000 n 0000484168 00000 n 0000484080 00000 n 0000483958 00000 n 0000484467 00000 n 0000484379 00000 n 0000484257 00000 n 0000484896 00000 n 0000484800 00000 n 0000484556 00000 n 0000484678 00000 n 0000485489 00000 n 0000485385 00000 n 0000484985 00000 n 0000485107 00000 n 0000485229 00000 n 0000486082 00000 n 0000485978 00000 n 0000485578 00000 n 0000485700 00000 n 0000485856 00000 n 0000486413 00000 n 0000486291 00000 n 0000486623 00000 n 0000486501 00000 n 0000486833 00000 n 0000486711 00000 n 0000487798 00000 n 0000487694 00000 n 0000487482 00000 n 0000487360 00000 n 0000487572 00000 n 0000490609 00000 n 0000490519 00000 n 0000490413 00000 n 0000488371 00000 n 0000488248 00000 n 0000489413 00000 n 0000489299 00000 n 0000488583 00000 n 0000488461 00000 n 0000488713 00000 n 0000488835 00000 n 0000489169 00000 n 0000489079 00000 n 0000488957 00000 n 0000490317 00000 n 0000490221 00000 n 0000490062 00000 n 0000489658 00000 n 0000489502 00000 n 0000489974 00000 n 0000489746 00000 n 0000494670 00000 n 0000494580 00000 n 0000494439 00000 n 0000490822 00000 n 0000490699 00000 n 0000492412 00000 n 0000492282 00000 n 0000491035 00000 n 0000490912 00000 n 0000491165 00000 n 0000491288 00000 n 0000491624 00000 n 0000491534 00000 n 0000491411 00000 n 0000491754 00000 n 0000492186 00000 n 0000492090 00000 n 0000492000 00000 n 0000491877 00000 n 0000494343 00000 n 0000494247 00000 n 0000494048 00000 n 0000492624 00000 n 0000492501 00000 n 0000492835 00000 n 0000492712 00000 n 0000493081 00000 n 0000492923 00000 n 0000493292 00000 n 0000493169 00000 n 0000493503 00000 n 0000493380 00000 n 0000493749 00000 n 0000493591 00000 n 0000493960 00000 n 0000493837 00000 n 0000500285 00000 n 0000500195 00000 n 0000500020 00000 n 0000494883 00000 n 0000494760 00000 n 0000496473 00000 n 0000496343 00000 n 0000495096 00000 n 0000494973 00000 n 0000495226 00000 n 0000495349 00000 n 0000495685 00000 n 0000495595 00000 n 0000495472 00000 n 0000495815 00000 n 0000496247 00000 n 0000496151 00000 n 0000496061 00000 n 0000495938 00000 n 0000499924 00000 n 0000499828 00000 n 0000499637 00000 n 0000496864 00000 n 0000496695 00000 n 0000496562 00000 n 0000497075 00000 n 0000496952 00000 n 0000497838 00000 n 0000497295 00000 n 0000497163 00000 n 0000497586 00000 n 0000497464 00000 n 0000497716 00000 n 0000498617 00000 n 0000498074 00000 n 0000497942 00000 n 0000498365 00000 n 0000498243 00000 n 0000498495 00000 n 0000499287 00000 n 0000498721 00000 n 0000498965 00000 n 0000498843 00000 n 0000499095 00000 n 0000499549 00000 n 0000499391 00000 n 0000506002 00000 n 0000505912 00000 n 0000505737 00000 n 0000500498 00000 n 0000500375 00000 n 0000502088 00000 n 0000501958 00000 n 0000500711 00000 n 0000500588 00000 n 0000500841 00000 n 0000500964 00000 n 0000501300 00000 n 0000501210 00000 n 0000501087 00000 n 0000501430 00000 n 0000501862 00000 n 0000501766 00000 n 0000501676 00000 n 0000501553 00000 n 0000505641 00000 n 0000505545 00000 n 0000505354 00000 n 0000502335 00000 n 0000502177 00000 n 0000502957 00000 n 0000502546 00000 n 0000502423 00000 n 0000502676 00000 n 0000502799 00000 n 0000503430 00000 n 0000503061 00000 n 0000503184 00000 n 0000503307 00000 n 0000504806 00000 n 0000503657 00000 n 0000503534 00000 n 0000503869 00000 n 0000503746 00000 n 0000504081 00000 n 0000503958 00000 n 0000504293 00000 n 0000504170 00000 n 0000504505 00000 n 0000504382 00000 n 0000504717 00000 n 0000504594 00000 n 0000505056 00000 n 0000504934 00000 n 0000505266 00000 n 0000505144 00000 n 0000508672 00000 n 0000508582 00000 n 0000508468 00000 n 0000506215 00000 n 0000506092 00000 n 0000507257 00000 n 0000507143 00000 n 0000506427 00000 n 0000506305 00000 n 0000506557 00000 n 0000506679 00000 n 0000507013 00000 n 0000506923 00000 n 0000506801 00000 n 0000507837 00000 n 0000507741 00000 n 0000507590 00000 n 0000507502 00000 n 0000507346 00000 n 0000508372 00000 n 0000508268 00000 n 0000508055 00000 n 0000507933 00000 n 0000508145 00000 n 0000512615 00000 n 0000512525 00000 n 0000512384 00000 n 0000508885 00000 n 0000508762 00000 n 0000510475 00000 n 0000510345 00000 n 0000509098 00000 n 0000508975 00000 n 0000509228 00000 n 0000509351 00000 n 0000509687 00000 n 0000509597 00000 n 0000509474 00000 n 0000509817 00000 n 0000510249 00000 n 0000510153 00000 n 0000510063 00000 n 0000509940 00000 n 0000512288 00000 n 0000512192 00000 n 0000512033 00000 n 0000511678 00000 n 0000510564 00000 n 0000510687 00000 n 0000510810 00000 n 0000510933 00000 n 0000511179 00000 n 0000511056 00000 n 0000511309 00000 n 0000511432 00000 n 0000511555 00000 n 0000511945 00000 n 0000511822 00000 n 0000518246 00000 n 0000518156 00000 n 0000517981 00000 n 0000512828 00000 n 0000512705 00000 n 0000514418 00000 n 0000514288 00000 n 0000513041 00000 n 0000512918 00000 n 0000513171 00000 n 0000513294 00000 n 0000513630 00000 n 0000513540 00000 n 0000513417 00000 n 0000513760 00000 n 0000514192 00000 n 0000514096 00000 n 0000514006 00000 n 0000513883 00000 n 0000517885 00000 n 0000517789 00000 n 0000517566 00000 n 0000514630 00000 n 0000514507 00000 n 0000515094 00000 n 0000514718 00000 n 0000514964 00000 n 0000514841 00000 n 0000515566 00000 n 0000515190 00000 n 0000515436 00000 n 0000515313 00000 n 0000515785 00000 n 0000515662 00000 n 0000515996 00000 n 0000515873 00000 n 0000516330 00000 n 0000516084 00000 n 0000516207 00000 n 0000516549 00000 n 0000516426 00000 n 0000516795 00000 n 0000516637 00000 n 0000517006 00000 n 0000516883 00000 n 0000517470 00000 n 0000517094 00000 n 0000517340 00000 n 0000517217 00000 n 0000520250 00000 n 0000519321 00000 n 0000518472 00000 n 0000518336 00000 n 0000518725 00000 n 0000518603 00000 n 0000518856 00000 n 0000519190 00000 n 0000519100 00000 n 0000518978 00000 n 0000519858 00000 n 0000519679 00000 n 0000519435 00000 n 0000519557 00000 n 0000520160 00000 n 0000520070 00000 n 0000519948 00000 n 0000531470 00000 n 0000531380 00000 n 0000531205 00000 n 0000520479 00000 n 0000520356 00000 n 0000521526 00000 n 0000521412 00000 n 0000520691 00000 n 0000520569 00000 n 0000520822 00000 n 0000520945 00000 n 0000521281 00000 n 0000521191 00000 n 0000521068 00000 n 0000531109 00000 n 0000531013 00000 n 0000530702 00000 n 0000521738 00000 n 0000521615 00000 n 0000521949 00000 n 0000521826 00000 n 0000522160 00000 n 0000522037 00000 n 0000522406 00000 n 0000522248 00000 n 0000522617 00000 n 0000522494 00000 n 0000522828 00000 n 0000522705 00000 n 0000523662 00000 n 0000522916 00000 n 0000523039 00000 n 0000523285 00000 n 0000523162 00000 n 0000523416 00000 n 0000523539 00000 n 0000524405 00000 n 0000523782 00000 n 0000524028 00000 n 0000523905 00000 n 0000524159 00000 n 0000524282 00000 n 0000525140 00000 n 0000524517 00000 n 0000524763 00000 n 0000524640 00000 n 0000524894 00000 n 0000525017 00000 n 0000525752 00000 n 0000525252 00000 n 0000525498 00000 n 0000525375 00000 n 0000525629 00000 n 0000526102 00000 n 0000525856 00000 n 0000525979 00000 n 0000526444 00000 n 0000526198 00000 n 0000526321 00000 n 0000527067 00000 n 0000526540 00000 n 0000526663 00000 n 0000526786 00000 n 0000526944 00000 n 0000527425 00000 n 0000527179 00000 n 0000527302 00000 n 0000528652 00000 n 0000527521 00000 n 0000527767 00000 n 0000527644 00000 n 0000527898 00000 n 0000528144 00000 n 0000528021 00000 n 0000528275 00000 n 0000528521 00000 n 0000528398 00000 n 0000529157 00000 n 0000528780 00000 n 0000529026 00000 n 0000528903 00000 n 0000529376 00000 n 0000529253 00000 n 0000529587 00000 n 0000529464 00000 n 0000529930 00000 n 0000529798 00000 n 0000529675 00000 n 0000530141 00000 n 0000530018 00000 n 0000530598 00000 n 0000530229 00000 n 0000530352 00000 n 0000530475 00000 n 0000533900 00000 n 0000533810 00000 n 0000533704 00000 n 0000532522 00000 n 0000532408 00000 n 0000531683 00000 n 0000531560 00000 n 0000531815 00000 n 0000531938 00000 n 0000532276 00000 n 0000532186 00000 n 0000532062 00000 n 0000533070 00000 n 0000532974 00000 n 0000532823 00000 n 0000532735 00000 n 0000532611 00000 n 0000533608 00000 n 0000533504 00000 n 0000533290 00000 n 0000533166 00000 n 0000533380 00000 n 0000536044 00000 n 0000535954 00000 n 0000535848 00000 n 0000534114 00000 n 0000533990 00000 n 0000535168 00000 n 0000535054 00000 n 0000534328 00000 n 0000534204 00000 n 0000534460 00000 n 0000534584 00000 n 0000534922 00000 n 0000534832 00000 n 0000534708 00000 n 0000535752 00000 n 0000535656 00000 n 0000535505 00000 n 0000535417 00000 n 0000535257 00000 n 0000539818 00000 n 0000539728 00000 n 0000539586 00000 n 0000536258 00000 n 0000536134 00000 n 0000537858 00000 n 0000537728 00000 n 0000536472 00000 n 0000536348 00000 n 0000536604 00000 n 0000536728 00000 n 0000537066 00000 n 0000536976 00000 n 0000536852 00000 n 0000537198 00000 n 0000537632 00000 n 0000537536 00000 n 0000537446 00000 n 0000537322 00000 n 0000539490 00000 n 0000539394 00000 n 0000539211 00000 n 0000538071 00000 n 0000537947 00000 n 0000538283 00000 n 0000538159 00000 n 0000538619 00000 n 0000538371 00000 n 0000538495 00000 n 0000538875 00000 n 0000538715 00000 n 0000539123 00000 n 0000538963 00000 n 0000541704 00000 n 0000541614 00000 n 0000541516 00000 n 0000540872 00000 n 0000540758 00000 n 0000540032 00000 n 0000539908 00000 n 0000540164 00000 n 0000540288 00000 n 0000540626 00000 n 0000540536 00000 n 0000540412 00000 n 0000541420 00000 n 0000541324 00000 n 0000541173 00000 n 0000541085 00000 n 0000540961 00000 n 0000547585 00000 n 0000547495 00000 n 0000547318 00000 n 0000541918 00000 n 0000541794 00000 n 0000543518 00000 n 0000543388 00000 n 0000542132 00000 n 0000542008 00000 n 0000542264 00000 n 0000542388 00000 n 0000542726 00000 n 0000542636 00000 n 0000542512 00000 n 0000542858 00000 n 0000543292 00000 n 0000543196 00000 n 0000543106 00000 n 0000542982 00000 n 0000547222 00000 n 0000547126 00000 n 0000546959 00000 n 0000544486 00000 n 0000543607 00000 n 0000543853 00000 n 0000543730 00000 n 0000543985 00000 n 0000544108 00000 n 0000544354 00000 n 0000544231 00000 n 0000544853 00000 n 0000544764 00000 n 0000544606 00000 n 0000546847 00000 n 0000545319 00000 n 0000544941 00000 n 0000545187 00000 n 0000545064 00000 n 0000545796 00000 n 0000545416 00000 n 0000545664 00000 n 0000545540 00000 n 0000546273 00000 n 0000545893 00000 n 0000546141 00000 n 0000546017 00000 n 0000546750 00000 n 0000546370 00000 n 0000546618 00000 n 0000546494 00000 n 0000550239 00000 n 0000550149 00000 n 0000550035 00000 n 0000547799 00000 n 0000547675 00000 n 0000548853 00000 n 0000548739 00000 n 0000548013 00000 n 0000547889 00000 n 0000548145 00000 n 0000548269 00000 n 0000548607 00000 n 0000548517 00000 n 0000548393 00000 n 0000549401 00000 n 0000549305 00000 n 0000549154 00000 n 0000549066 00000 n 0000548942 00000 n 0000549939 00000 n 0000549835 00000 n 0000549621 00000 n 0000549497 00000 n 0000549711 00000 n 0000552893 00000 n 0000552803 00000 n 0000552689 00000 n 0000550453 00000 n 0000550329 00000 n 0000551507 00000 n 0000551393 00000 n 0000550667 00000 n 0000550543 00000 n 0000550799 00000 n 0000550923 00000 n 0000551261 00000 n 0000551171 00000 n 0000551047 00000 n 0000552055 00000 n 0000551959 00000 n 0000551808 00000 n 0000551720 00000 n 0000551596 00000 n 0000552593 00000 n 0000552489 00000 n 0000552275 00000 n 0000552151 00000 n 0000552365 00000 n 0000557505 00000 n 0000557412 00000 n 0000557265 00000 n 0000553109 00000 n 0000552983 00000 n 0000554750 00000 n 0000554612 00000 n 0000553328 00000 n 0000553202 00000 n 0000553463 00000 n 0000553589 00000 n 0000553934 00000 n 0000553841 00000 n 0000553715 00000 n 0000554069 00000 n 0000554513 00000 n 0000554414 00000 n 0000554321 00000 n 0000554195 00000 n 0000557166 00000 n 0000557067 00000 n 0000556868 00000 n 0000554968 00000 n 0000554842 00000 n 0000555185 00000 n 0000555059 00000 n 0000555537 00000 n 0000555402 00000 n 0000555276 00000 n 0000556199 00000 n 0000555754 00000 n 0000555628 00000 n 0000556098 00000 n 0000555846 00000 n 0000555972 00000 n 0000556560 00000 n 0000556425 00000 n 0000556299 00000 n 0000556777 00000 n 0000556651 00000 n 0000559704 00000 n 0000559611 00000 n 0000559500 00000 n 0000557723 00000 n 0000557597 00000 n 0000558803 00000 n 0000558683 00000 n 0000557942 00000 n 0000557816 00000 n 0000558077 00000 n 0000558203 00000 n 0000558548 00000 n 0000558455 00000 n 0000558329 00000 n 0000559401 00000 n 0000559302 00000 n 0000559148 00000 n 0000559057 00000 n 0000558895 00000 n 0000563536 00000 n 0000563443 00000 n 0000563297 00000 n 0000559922 00000 n 0000559796 00000 n 0000560998 00000 n 0000560878 00000 n 0000560140 00000 n 0000560015 00000 n 0000560275 00000 n 0000560400 00000 n 0000560743 00000 n 0000560650 00000 n 0000560525 00000 n 0000563198 00000 n 0000563099 00000 n 0000562900 00000 n 0000561475 00000 n 0000561215 00000 n 0000561090 00000 n 0000561350 00000 n 0000561896 00000 n 0000561575 00000 n 0000561735 00000 n 0000562122 00000 n 0000561996 00000 n 0000562339 00000 n 0000562213 00000 n 0000562556 00000 n 0000562430 00000 n 0000562809 00000 n 0000562647 00000 n 0000566482 00000 n 0000566389 00000 n 0000566278 00000 n 0000563754 00000 n 0000563628 00000 n 0000564834 00000 n 0000564714 00000 n 0000563973 00000 n 0000563847 00000 n 0000564108 00000 n 0000564234 00000 n 0000564579 00000 n 0000564486 00000 n 0000564360 00000 n 0000566179 00000 n 0000566080 00000 n 0000565926 00000 n 0000565808 00000 n 0000565052 00000 n 0000564926 00000 n 0000565187 00000 n 0000565439 00000 n 0000565313 00000 n 0000565574 00000 n 0000571311 00000 n 0000571218 00000 n 0000571107 00000 n 0000566700 00000 n 0000566574 00000 n 0000567780 00000 n 0000567660 00000 n 0000566919 00000 n 0000566793 00000 n 0000567054 00000 n 0000567180 00000 n 0000567525 00000 n 0000567432 00000 n 0000567306 00000 n 0000571008 00000 n 0000570909 00000 n 0000570737 00000 n 0000568106 00000 n 0000567872 00000 n 0000569727 00000 n 0000568197 00000 n 0000568323 00000 n 0000568449 00000 n 0000568575 00000 n 0000568701 00000 n 0000568863 00000 n 0000568989 00000 n 0000569115 00000 n 0000569241 00000 n 0000569367 00000 n 0000569493 00000 n 0000570610 00000 n 0000569908 00000 n 0000570034 00000 n 0000570160 00000 n 0000570286 00000 n 0000570412 00000 n 0000580091 00000 n 0000579998 00000 n 0000579816 00000 n 0000571529 00000 n 0000571403 00000 n 0000573170 00000 n 0000573032 00000 n 0000571748 00000 n 0000571622 00000 n 0000571883 00000 n 0000572009 00000 n 0000572354 00000 n 0000572261 00000 n 0000572135 00000 n 0000572489 00000 n 0000572933 00000 n 0000572834 00000 n 0000572741 00000 n 0000572615 00000 n 0000579717 00000 n 0000579618 00000 n 0000579383 00000 n 0000573649 00000 n 0000573388 00000 n 0000573262 00000 n 0000573523 00000 n 0000574794 00000 n 0000573749 00000 n 0000573999 00000 n 0000573874 00000 n 0000574134 00000 n 0000574259 00000 n 0000574384 00000 n 0000574509 00000 n 0000574634 00000 n 0000575064 00000 n 0000574939 00000 n 0000575317 00000 n 0000575155 00000 n 0000576182 00000 n 0000575408 00000 n 0000575660 00000 n 0000575534 00000 n 0000575795 00000 n 0000576047 00000 n 0000575921 00000 n 0000576624 00000 n 0000576300 00000 n 0000576462 00000 n 0000576850 00000 n 0000576724 00000 n 0000577103 00000 n 0000576941 00000 n 0000577707 00000 n 0000577194 00000 n 0000577320 00000 n 0000577572 00000 n 0000577446 00000 n 0000579220 00000 n 0000577816 00000 n 0000577942 00000 n 0000578068 00000 n 0000578320 00000 n 0000578194 00000 n 0000578455 00000 n 0000578707 00000 n 0000578581 00000 n 0000578842 00000 n 0000578968 00000 n 0000579094 00000 n 0000583227 00000 n 0000583134 00000 n 0000582987 00000 n 0000580309 00000 n 0000580183 00000 n 0000581389 00000 n 0000581269 00000 n 0000580528 00000 n 0000580402 00000 n 0000580663 00000 n 0000580789 00000 n 0000581134 00000 n 0000581041 00000 n 0000580915 00000 n 0000582888 00000 n 0000582789 00000 n 0000582626 00000 n 0000581994 00000 n 0000581607 00000 n 0000581481 00000 n 0000581742 00000 n 0000581868 00000 n 0000582517 00000 n 0000582103 00000 n 0000582229 00000 n 0000582355 00000 n 0000593621 00000 n 0000593528 00000 n 0000593337 00000 n 0000583445 00000 n 0000583319 00000 n 0000585086 00000 n 0000584948 00000 n 0000583664 00000 n 0000583538 00000 n 0000583799 00000 n 0000583925 00000 n 0000584270 00000 n 0000584177 00000 n 0000584051 00000 n 0000584405 00000 n 0000584849 00000 n 0000584750 00000 n 0000584657 00000 n 0000584531 00000 n 0000592686 00000 n 0000592587 00000 n 0000592352 00000 n 0000587500 00000 n 0000585178 00000 n 0000585430 00000 n 0000585304 00000 n 0000585565 00000 n 0000585817 00000 n 0000585691 00000 n 0000585952 00000 n 0000586204 00000 n 0000586078 00000 n 0000586339 00000 n 0000586591 00000 n 0000586465 00000 n 0000586726 00000 n 0000586978 00000 n 0000586852 00000 n 0000587113 00000 n 0000587365 00000 n 0000587239 00000 n 0000587816 00000 n 0000587690 00000 n 0000588352 00000 n 0000587907 00000 n 0000588102 00000 n 0000588227 00000 n 0000588881 00000 n 0000588586 00000 n 0000588461 00000 n 0000588721 00000 n 0000589475 00000 n 0000589106 00000 n 0000588981 00000 n 0000589241 00000 n 0000589863 00000 n 0000589575 00000 n 0000589701 00000 n 0000591511 00000 n 0000589963 00000 n 0000590215 00000 n 0000590089 00000 n 0000590350 00000 n 0000590602 00000 n 0000590476 00000 n 0000590737 00000 n 0000590989 00000 n 0000590863 00000 n 0000591124 00000 n 0000591376 00000 n 0000591250 00000 n 0000591827 00000 n 0000591665 00000 n 0000592044 00000 n 0000591918 00000 n 0000592261 00000 n 0000592135 00000 n 0000593238 00000 n 0000593130 00000 n 0000592911 00000 n 0000592785 00000 n 0000593004 00000 n 0000595556 00000 n 0000595463 00000 n 0000595361 00000 n 0000594700 00000 n 0000594580 00000 n 0000593839 00000 n 0000593713 00000 n 0000593974 00000 n 0000594100 00000 n 0000594445 00000 n 0000594352 00000 n 0000594226 00000 n 0000595262 00000 n 0000595163 00000 n 0000595009 00000 n 0000594918 00000 n 0000594792 00000 n 0000601999 00000 n 0000601906 00000 n 0000601786 00000 n 0000595774 00000 n 0000595648 00000 n 0000596854 00000 n 0000596734 00000 n 0000595993 00000 n 0000595867 00000 n 0000596128 00000 n 0000596254 00000 n 0000596599 00000 n 0000596506 00000 n 0000596380 00000 n 0000601137 00000 n 0000601038 00000 n 0000600857 00000 n 0000597163 00000 n 0000597072 00000 n 0000596946 00000 n 0000597388 00000 n 0000597262 00000 n 0000600000 00000 n 0000597605 00000 n 0000597479 00000 n 0000598318 00000 n 0000597697 00000 n 0000597949 00000 n 0000597823 00000 n 0000598084 00000 n 0000598977 00000 n 0000598428 00000 n 0000598680 00000 n 0000598554 00000 n 0000598815 00000 n 0000599249 00000 n 0000599087 00000 n 0000599890 00000 n 0000599341 00000 n 0000599593 00000 n 0000599467 00000 n 0000599728 00000 n 0000600739 00000 n 0000600127 00000 n 0000600253 00000 n 0000600415 00000 n 0000600577 00000 n 0000601687 00000 n 0000601579 00000 n 0000601361 00000 n 0000601236 00000 n 0000601454 00000 n 0000608069 00000 n 0000607976 00000 n 0000607821 00000 n 0000602217 00000 n 0000602091 00000 n 0000603853 00000 n 0000603715 00000 n 0000602435 00000 n 0000602310 00000 n 0000602570 00000 n 0000602695 00000 n 0000603038 00000 n 0000602945 00000 n 0000602820 00000 n 0000603173 00000 n 0000603616 00000 n 0000603517 00000 n 0000603424 00000 n 0000603298 00000 n 0000607170 00000 n 0000607071 00000 n 0000606863 00000 n 0000604205 00000 n 0000604070 00000 n 0000603945 00000 n 0000604583 00000 n 0000604296 00000 n 0000604421 00000 n 0000605187 00000 n 0000604683 00000 n 0000604809 00000 n 0000604935 00000 n 0000605061 00000 n 0000605995 00000 n 0000605431 00000 n 0000605305 00000 n 0000605685 00000 n 0000605523 00000 n 0000605903 00000 n 0000605777 00000 n 0000606302 00000 n 0000606104 00000 n 0000606519 00000 n 0000606393 00000 n 0000606772 00000 n 0000606610 00000 n 0000607722 00000 n 0000607614 00000 n 0000607395 00000 n 0000607269 00000 n 0000607488 00000 n 0000610952 00000 n 0000610859 00000 n 0000610748 00000 n 0000608287 00000 n 0000608161 00000 n 0000609367 00000 n 0000609247 00000 n 0000608506 00000 n 0000608380 00000 n 0000608641 00000 n 0000608767 00000 n 0000609112 00000 n 0000609019 00000 n 0000608893 00000 n 0000610649 00000 n 0000610550 00000 n 0000610387 00000 n 0000610071 00000 n 0000609969 00000 n 0000609657 00000 n 0000609459 00000 n 0000609876 00000 n 0000609750 00000 n 0000610296 00000 n 0000610170 00000 n 0000613187 00000 n 0000613094 00000 n 0000612983 00000 n 0000611170 00000 n 0000611044 00000 n 0000612250 00000 n 0000612130 00000 n 0000611389 00000 n 0000611263 00000 n 0000611524 00000 n 0000611650 00000 n 0000611995 00000 n 0000611902 00000 n 0000611776 00000 n 0000612884 00000 n 0000612785 00000 n 0000612631 00000 n 0000612540 00000 n 0000612342 00000 n 0000615561 00000 n 0000615423 00000 n 0000613405 00000 n 0000613279 00000 n 0000613540 00000 n 0000613885 00000 n 0000613792 00000 n 0000613666 00000 n 0000614388 00000 n 0000614295 00000 n 0000614160 00000 n 0000614020 00000 n 0000614967 00000 n 0000614607 00000 n 0000614481 00000 n 0000614868 00000 n 0000614742 00000 n 0000615330 00000 n 0000615195 00000 n 0000615069 00000 n 0000617935 00000 n 0000617797 00000 n 0000615779 00000 n 0000615653 00000 n 0000615914 00000 n 0000616259 00000 n 0000616166 00000 n 0000616040 00000 n 0000616762 00000 n 0000616669 00000 n 0000616534 00000 n 0000616394 00000 n 0000617341 00000 n 0000616981 00000 n 0000616855 00000 n 0000617242 00000 n 0000617116 00000 n 0000617704 00000 n 0000617569 00000 n 0000617443 00000 n 0000620480 00000 n 0000620342 00000 n 0000618153 00000 n 0000618027 00000 n 0000618288 00000 n 0000618633 00000 n 0000618540 00000 n 0000618414 00000 n 0000619136 00000 n 0000619043 00000 n 0000618908 00000 n 0000618768 00000 n 0000619877 00000 n 0000619355 00000 n 0000619229 00000 n 0000619490 00000 n 0000619742 00000 n 0000619616 00000 n 0000620249 00000 n 0000620114 00000 n 0000619988 00000 n 0000624828 00000 n 0000620915 00000 n 0000620697 00000 n 0000620572 00000 n 0000620790 00000 n 0000621148 00000 n 0000621023 00000 n 0000621241 00000 n 0000621709 00000 n 0000621491 00000 n 0000621366 00000 n 0000621584 00000 n 0000622160 00000 n 0000621942 00000 n 0000621817 00000 n 0000622035 00000 n 0000622702 00000 n 0000622393 00000 n 0000622268 00000 n 0000622611 00000 n 0000622486 00000 n 0000624681 00000 n 0000622936 00000 n 0000622810 00000 n 0000623173 00000 n 0000623029 00000 n 0000623448 00000 n 0000623308 00000 n 0000623727 00000 n 0000623583 00000 n 0000623997 00000 n 0000623862 00000 n 0000624271 00000 n 0000624132 00000 n 0000624546 00000 n 0000624406 00000 n 0000626103 00000 n 0000626691 00000 n 0000627047 00000 n 0000627363 00000 n 0000627799 00000 n 0000628267 00000 n 0000628695 00000 n 0000629178 00000 n 0000629828 00000 n 0000630469 00000 n 0000631092 00000 n 0000631607 00000 n 0000631915 00000 n 0000634574 00000 n 0000665412 00000 n 0000665565 00000 n 0000665699 00000 n 0000685304 00000 n 0000685549 00000 n 0000686604 00000 n 0000687126 00000 n 0000691596 00000 n 0000691847 00000 n 0000692125 00000 n 0000692589 00000 n 0000705405 00000 n 0000705659 00000 n 0000706575 00000 n 0000707131 00000 n 0000707284 00000 n 0000709007 00000 n 0000709093 00000 n 0000709393 00000 n 0000710330 00000 n 0000710483 00000 n 0000712775 00000 n 0000712861 00000 n 0000714912 00000 n 0000714998 00000 n 0000716755 00000 n 0000731309 00000 n 0000731554 00000 n 0000731785 00000 n 0000732363 00000 n 0000732516 00000 n 0000734294 00000 n 0000734380 00000 n 0000735811 00000 n 0000735897 00000 n trailer <> startxref 737674 %%EOF hardinfo2-hardinfo2-1331e88/tools/LICENSES/gpuSVG.pdf000066400000000000000000001156051474767047500217660ustar00rootroot00000000000000%PDF-1.7 %äüöß 2 0 obj <> stream x]e9%~~} c$ @Uf0ӱFㆍZtnDdgVMc#UA޳%")J"SzyޮOWomOQӧ1߽_qO3/x1j=ſWW ͫhK6>4𢡊ZUz^ȥYSyOm>ǧzߜ3o 1t-o "|S/ar/ZZ"+i1c4bFg'xӧuNv>JD^"h 3bMZ>17orsOV#ϟzoܮGR^4[eWsc.[`$87ȩ1g(m4pͣcA zX<1Y!y0l!s ~ &asIlν; DŽƉ5=|& Yg uҤmJAƟ jo5U&]ºi1~--cMhmgs_e DMB,_MIlQ!6u~&~}1ͷklk 7&A(羆]@N܋h%5@HLH[[gz \\8 ֗$R>=N iweL-h[Oh)ihW@vO j'8PB,%MْU#3K I#mlky8}Ff3]@[|X,`'m`sqsq9 su}HQM[VeݵXS+﮿BQLMBr Nޖ޷e\:eyˇlRFFc'k1K ,W%qjqw"b/% jS`EXz1DXG"zկgJgbnY(įYj|-M91qsΖ11In0-Ӓ9wsVhR%Z?4T j+[Mh%< NKbEҩe[<, }.*KwYK ޡ0K +4f= y "IA.@zQRӊB\42IZdA2`c W@{cFR9qNAF^6n۽v˴ .Đ_QmԨ!vBI ,mX1 V-Ч>@18رݺVwm{+ ]$]#6ݯs73qs㴠ç!mbabߨr]|lTgv1O\8g[W_NasV;^Yp]a91d/^qt~gJpeg:f_o!>Aқ}Q⯱0eӮnydnegt- .{cҸy2ƒ'φ ;$FE{ϗqMwXHbԦΕe-JcwTqA{\ٷ>Ѷϵ`.I623aԸRl<}r;7f6۞x{F[ۖ? eyلn{Mo^X{_~?矯r?mܟJ?_? Is0]C)DK>%CVWgs>Jg6rƳ)}X>V#=Oo^Ŷ5dڟhmm7W "Amidm%OufcX{ari6s~N?OC^Mv} @"Zh8kq_]sSAkw)~9MePsn_{9E 0_&C8?N2~MO~%he،^oMiyNyIkr~`8͔J?o,IU vE.rSw7Na:fk)RH+3r +7ntSrmkѫZiMOk2r<#YE Fan痥,%ijVկ{TU nuDY ..סb[>5mV N]kFf^,bKh2*d0a^M^˓\ /jRzi񨍊Mόmmq XvFrg۵Hv3΢pvtĎ W.!y1t#v{-dv] U]CY3 {8`JGwpr$1lqi#Sp| [sz2ø[َY5K9]u̱| \!Aȏ |&|8+‰8Ka\6ȤM:d/z˥[\n.;]x#LT^ )e9wȴy+,-b,@ɧd!֟}.-&|.;[9<&+  Rօ,^l& Ap x377TCUȚs\WP#8 n#u7>yp60.m ire- _6$-fHT,&vfC*TԆeL0^;RC0|i5u܌@{?i |{DE*-os| 3h,lAJy1%[[Gal1k+R+Śýpx28se 6%iSƛ}7؀s*sr,ygkr(lrx `hE)g+H{\r^*ph1/ʼnCfMUZgTrq7"frsp%K.{G ޮẀhc(Ȧ lzҜ0m<5łx\Ȉ!`-SvA~U `W#; .܎<3A=PcٸGҌLh̅=[1fc͂?B‡+Ė9[BB&m %rmkTȽ-ap2D螵^QmT ;%,/}aaa +hSv20&Vֻ)W#)V뷲C{~d<^ lP*PyokЕᅔl6vZkśR x9%#6 P+_p¦d_5[tw Dθ<v"*אBl[: rzp̐EaAJE`q)up zp ~E, 1[Z3|.mE%'֤[BbQ U/$VŐX7Cme 7"6;C ݵ!>ۀ텸p?ŭ1ngёr?lyIf¶6,܎Q̺xnYtSΤnji~XOoX?Zoz2ӎklJkl 2~kl9%6#/"V؏|\a'LS č KtO+WW"(+OC@j f jdC&<H{[6T038jHs@ zc ^fl06{8!~>^/rv@o~A4do`Ȣ +1?PRp2bLT50HqdF77 zY?}roDbwf"Ԙ@9&p{4&>\W熉fI3E;4&vD$ZŮix)U⚆1oBٯwnhśPwl}L3S'CC׈Jj/"!`[CsfLD(+Ɣ9gnGDYۑ)o~IBFMWb(t!6F,II{dEŸ Fޜ#P]P[=kCcCCPuGs7To;Txo<ݷY3sG&kOet.IYB iuMrY0^]c|;hʇ^-+ꁫU|yN*CQx+Dsol8ŭܦ:P| Jq=UC3t/冸i 70r͉SbpG\{,wD U#"]|c$jޢܩrqv]}\[}2(tk޵ggktF"MlEw) Lʂjí.>rdVtW'q~y \ mOw :VzMeu eߢʾ1&qحnq\{:ԝrf{iۚ vu3 i{eyݚLgR˂#UӆulpRu-rU۱JS, ;.?A~X KSo+{Q9=0&u:Qrz_e&ڤ.^+ 1rMse<7ͪ)n^Mv%y3~S߻n7f~.|wvFgnwmHJ{c!Gu@Sq:oCcg-hZU!&6C;l?ƙ/ݡQ~^}ߘD&'1I L҂nӞM;=p'iQ~L)ĶSnu_u7V_d?k~_VJo9e[`K 0FDd QT},pn>]x3sV)nC6ȧ!pE|RJ>f-q qYon9|W^Zl >8fہ%k1Nhʨ+:l\ٗ<Ę8:3gk[WY罫al3`sfd ̀Ia(EaL 09 #`rF$0 aB|Ю0 8(G27;|1K M/U;oB2[,`\F̰z)ap@>T6 w إB.EۋZ J=yۘb0/ ˌ 5b*FS9Nؚ/h#^*"&7ĠD*0K~1bg.FH98j,0;<݀,k CC1 $`k 1Kw7~<`5!_67uU8ZgBr*<3Wa{^;]5):ܳuˣ!,w&ƿrWԙp_u绌i ۢLCdS]VX߈U_e ~8g5svO+=))+{/Ӹ5n-xj[9KnkXvϺvϺ*nVnnP݆e=b[4pp;/hz8h^4pA3p s8h-`Ѣ-qK_$_$b[E|!2z̗r/r`fMh1DbLHT;&rDIt8\&:Ɣ1&_ewڔdAɆA84yL4gmQ7i^c6殩ty-0سuÁWt6jK"EP뽅PQP эަL>/72Y^{!^Ⱦ5hYFŒ`ߥň|g#=1L昙 g(o6enlF8|4ypj7-ɛmG7!nMcِXEa|c? ՏBcP7Y W%rʿ7FF"(t<bH8CM4yp8Ta-LތK2w?G֢t4>W/K60͍3@=_ϸe^@L~gP% snx[M&>/bԛae8޸z'LNz,'̪V/|!:wtP^"q;1|o?ExK$sӄW̸69d̵Yo@hRG䰻{3ͧg{݃s7O XZ8, nXql KOXuqbnkåG N;рa4}X2ZΘ)XU[`GNH8j]Wi\>xT<3F= ps֡aRBNL gUxwE/ޞOZIEY=YY,3>L3Mk3]{2̴d4'KYU[*vi4j&߄X0 ֏8>3٢.b'5qWv7% ~ysZm>ƾ WěDEON#G D3ܽT T MځrYYF;ZY&f3ҽ=YL @s$[h}p#G˩h*Db/(d]'EY$T+4JKu]Ԓr U䌳?ٌl.L" dIӄҹ`Rrz@>a3_ND[Ym[nHs{+ i$A%H4i:`4qtnD; ?:z/+'vS] UqsꤻAѻ6޸AwUEOP,+1݂R m%d$1J')BpinZǦthsbfcff̓InCS|E6ۊkʞMe`}!i"$+A јj< y6?hw5-6exw #0mJF6t{Dn U`jg?|oUeVi{罩Rt:FX׭ͼ[QVz> ~ ͤ^w{cu_{,pfcbnpn`KΦ`A|c6vK1FW^Xpaypaިzcj'<h~*& 3NAKlP]"1ٵ?쯧wvC.w5 g{LWl#"Z/=U3 ʸ/˂I* &Yh!eU>RU3o8FԜw ΪNВw !8aϢg򅒴yK\Yo `QZbU^ActoJI6XU(ߒ̧=NGF=~a#mpj8 |1NdSz 7hXF}5Υ>?x~7]wzfk`.o>_5PaT@fhLn*!YS/\yxI/ q82=_fNB/tTg2|́* e1 +=n `ɂ.b%0,.l **0Q7܄YRd ce>`$T܅[gkGl!O 3ӦUAd< !G(\.dsI(,#!W^L!fJ5 7T#fʅ!8_gBr X$ q #p[j<0Ӫ#Y JG]R@A%e#Ih**FHz!>X섦.8f62yXJcti-s0]Vx,˭gH0\4±,90MU pHywGa;1ҨtAZ4HiD={g`[c籛&\>En| Ivbkȑ_4.nwa5`Fsx+r+4:_=,?B"rʫ a-/ta&9`Š2:cz±fM d V+qK8]*(H/?TPDqe&JsξRinoְ_ԗ'?Y.px4ڇcNU K!1BTo5]Vb0!&YMJ1`p}3&eΪM5Ҥ!_vEu/M>^8v.=j*W>i[K[/tC1t8.I7؅[TfEJAJ%-2]fb<{0E*#L5ţ9o# Am* ƅK2齓`2ZRuE3eS@ҪzmɠzC8B.#\yUQsC`Jm(&fh\}jܒʬy%3lj(rv P:cIݕ-9-8#GGk7(lϯ0{Ci1KLrׅM/`gW^D!Xz 8SS, `Tn>A<+vUOEߨ~zKD# x7 ,b񁼿m ՚ V|`-R%ݴc\[uNҗ@pS#p-Qӛț/tT$ipx iCPrN' NKu__Nr} iQcaѓ{ Q Ņ 2v-p;WGCF1eo5nKU3Eуm2@| <<#*GG/ߎLT_IF ~{@iW#[[g`8c qo ։ IHbb& p05Sp`0xxZ2$*5dd".SdS3Wd0Nq`ޢ=; }Mp&˦gf1]ڢ rP&;|;K[uln^$ҁfr3gH$򤲄lNryh.ul_COꧮa:w1Gz{JQsDcîhl*ܨLɳt3&D I%7&knMݜ$úo\ci4X~,M?K?4tR煉qBu :>u&I/6{t-zW 7bXw3V<|4]AAu9jz[P?H9ߊ'Gu9J^9S*q0\j/ڧ릐 Ψ 3F+׆yy;fݔMox  v|C뭣sR!su@cT>uD1vI^Gf*+y6iUr"y~^aJ0!G]ۆ9`_Fim뉓z$lzg@w+f*VLDPAy XY)%a#s˔+dܱ\xu]BK1]7‡\?>q1; rح#޽[m)[:x|.7u ޴96ܿ6֍s+i{1&/ ":(WMֱ oߛj4bV@eG񹸀lks4T >Oj:k7[uQh5H˭?rvz)![N3\xԙLHC{їy CA@IG lVЋOWϼX^*݋ToW)s9_+0<_Yԃ#[e=7\B7J7ߢOyC_·wmo|MohxKf4xm 곰`HL0T nTΫ V _zyxϦi2Ʌ0(>?)Ο \!@fQ>7D NdF#@# Ѳ :Wg777l"@@@hY0rp| yi 5o%<{1y`z0Dy Bp8FGl"B1{w!ߘZ;e6xG \K@QTɂ) 6 #aϝSs\*kr> e#T $,@[kA5xޏE:&5% \ji&%Th0}(` S$m#  V/-URQCJF_**^D nǼBcTȵCd::]HKEtlFt9pؑ ws$ #bPfr/<doQd$B|J:ϯ]uaa-Y#ϳqG0+Ѯ<7f(#b}D!FPږ,Ya(D."BÝKQqhgl:Ol6U+Y\?=\l (@Dw=Clewϐ6`Kސ*q%䵳e$jC×upzkc\M5rv]cd>v 710B]7R{7c1;0t6am~Rl[j2d( #쵉asӰ.{=0Q4ro<|߽bX~X?V+֏f?~o`'`-zZk\s=u!w wļ}aENYҩl~ nX;IaE(5 ѓ):0]:2nP%*W/C~8y̬ O(<\}gQL]TJ:w IۀT.`i`}SW>5l )!Pf%8&j=O]K7].^NHQJuA\Zc=b`7;  lOнVB!$C7z!D(^1Z A4cr$1y(^]cхxn(;1P9Ut^Z;]N#LMƍ3o'gY/羛7G@A7>nB]u!q#Bf /.{paƔuٯrk I"s~*A4(z?e,X;G`VL׹L;i,ws$[4{ Ntbu]`,@g%gNSTr+>{T-Z,)/j;~?NΫߨoz6kˌy#,11ܛNj L[XB{|I%YvQwXejۏT`;(؇.`M3T& q\U|U"7z¬'oAn!kc`t.]0J+ĜD:L'X{}-2{)#n> =p a8g-ٶ=?[DͬM R}·NwP R}fKݗ.ro{\ ~60($nUS*ғ=(1cԟҽ9 EG5.N17*iOb! 6gK.zJtIÃTv.uO$f}Bz 6m1ub{_|f N8)ނkqhQ1U=Fxu+2n+)7ĸEnz>j VXpłҒc '5"`9B.T)].{CbClk{}[@yO"|qoWύ@_'·/,i+N4%͛њv̮WPO9ϭj1P[Y+V`NL n_sAz=:Lɮ^CXMFxbzn.!!)rު.s1 m XY2 ^9bP#u@W򍅲ŷYQҮN?9cHS® D1^l߆E! A#WyxNsnK Hٰ)?efT; HTٮgw%>GNkLi-)L(]69HCf0_ZZ j*LmF֝6!޷]|F͍WdoxY%By\jȏo\l `4-p).Y;cw5M'&Tk  +n(9 dF(aO]f|tYB$=)D$  {R=+Nq/Pf0 MR]ÌSqcOāxi,{f5/=k¨!m_ɜprc>Os&= S9`ځhW;l|.0P t plɠZy35yFS 5χJ\6Y:&fc_}Yx0=HB<6l0_*k? ,9pnPO2:Cu S8F>fl|b) ?969?6F|>n0ݷ06D `ZF=Zւ'^ށ ߂oI+PhRD >G|mG)m'-NO]Č7K<)\,֓íY&Byy2q{:܌p}7F!d~prRZECI}wIp\R@=6 3uU@~Upq}-)xEa6l+|Վ-q v/߉u@y~{_ ,TK`6&q}p1_\OuZ[oaŊ(=> |' #; {Fjmw01_{7!nDdב3>gc %M),d@z∏m !֤l~U(/Ώ3)[ .o4:dm~PG|l0U7Ia"/67EU|&]3B S_}Ӂ7{p.MyEgqSrS1'wTWPG05 m7 v~k9 ;.$?{oM}!֥}!ojk4Ufa/(~B7:OC괧bxu 0w ū/d>Q(-TgIY'7O)[n! nL&dM3//uoMl98>[;,}<FO! |?wߋj?񛇅<;ńO3;9iR׌OgIYŽ3( r67!K`>QN@&n #'KYŚU_0~44{ǭG[9^-:GbӰ=g[x%V'`"ODYc1Į\kihm<'(b`d$Ƃjх)Js …چ"o* 2=W(cV8O0}qm}5C|dy(2wД 㑬-dB"q0?@VhR3s(F Ӊa{,̲(;lL^?cNܕ=_Us@f0⦘򶁢ryqXqbaU,pb"<5Uk㴵08th* Z_7O><1g(Am0;Yh3./W }(IF(=N~(Q86FPʛ#w>`,COŬٌ85>4bFX< >x.[KIS"kcq [ b: LEt2rtKd^14PhJ/vNFOgi2V38;_q.tf6cU6U޶:L(6T{V{9Ȋ\q%lȸ0K㘵<^Fr\5hV@(/oZen{[u%`K簼t(cKT{UȪS=;,Fj_ l kjYv r ؗ6Г`7;C BOM<jw77dI9Lϥ>kg@K/œe0ֱiCaǿ4vnh2k$ǎFdFk_ua=O~gGц߽9{ـn&6Yo߹zMd=&mhu؊"u^̏lm/vl -{tl|trً>Ϸb܉˷wb~ىtӱމNV q{+F(vٓShbDV bbf5}8,g JIJş>f{,9#zh+֓/-ARb|#}7TvzĴNL;3+[;1};1(=b[юX}݉vb X7bd1X9$N{;;h'^ǿfWaǹckܱɐ;+q; 4 [džeÆcvsv `۰ذsVaKܰi ˛schiT;Q{}#Ν]97vW;7v΍ཱ+Ǿ߹u/?\w75PgOg"8YFeTlr.l)_XeXXY:~YGJ>(g\*TX3o@MʙT1d5L0ujTI)Ejl#%T;S%Qd=XUJNK\Η rT*汙*䨺7P ; (N&-4YWZ3k0I+bH/YkQ RGrPH*YeۚQJ  HU‡Ln`<%O f !?9lҪzm  XU仞uP4r*=d0gG`mj-؋ 0*h.jjdgU)=h*^*9&-H*{0a~Ow`p?_T9UV"YMdncVyc87O?YTٹ_fSc&No~cЏ Ke:XԇS凌t;.qJbo31g3l{H[3]AD2ecCmPciS>We{ 4տi#-&[Tgc}h*+}%O!,۠_b FU=ͯ&ďh4"hYL ɼ=䁤GWWD_Fog ~ zeF^hRφ3͈ɬBxpR@ܕ{'hQ#8'` ^'wS, Ԫ`n=VW\̂&㪞oF.<W-K[}q[)|R-3ā` i-+_dbt.\  soN?aƍ{Kko48Q*>1۬|NxF]@ `X5%w.ga!cf:qEU' \`&Ug I*#zHZR02Q|RA< 6y_Yj+# ̎L5۟Kտu;379N\J<}'5IcI77_jKݞdoM+S 5S9jGm2ep;oJ endstream endobj 3 0 obj 24237 endobj 4 0 obj <> stream x{W_bp !ɥ\44eLVSD"dMK.4Lk3teht/D.S)|Yoϭ39g=?Z3~}.Siaaaaaaaaaaaaaaaaaaaaaaaaa1OKK۶m|޽ӦMKOOOMM4hٳnݺ_:iU'''vڑH$11ݻw6,...Wԩ_>F%3gG!2駟OJJի5 oN^^Jk׮;wrb6mH>`K~'EEETCרQcQN,X@LRꫯ|׮] t|o6vؚ5kvЁQfΜRҥ q_qR^V-LzׯQIΝ{qljwR'-bK9yy|޽9V}0*:qH:99モo믗N:Fʑ:lfͦM;C999/lm۶)࿣ WwA@믿XYٳg3o[l;tIF?,}buzǎYb)߾}{Ν裏FxjəO<򸸸^{/R1޽{98LGnzݺu!+]^x!7ұ \{,?XoGUz.WeҤI@oCM+zȑ# P05 znYfW_}2W}/<5W\igϞ5jԊ+bͷrRTT$cƍ֭r4lؐ_z%,}ǭZ:/6SL)qWKJJڵkR_h+%\꡸٫W^5N;mQ:7իGAx_j.T@'lU]r'ZlYA5j(oФI{ϭ%UY=z[-k1ω8e.'Ov!ΐ >k!usLH233c=۷oRluQ/c] ELV_'᳆ vر]v7oht\p'AsE\K"'=,)σ_~Yyg{kvsE5m#K\~}|VV"5 ";;[+Rq`Ɍ=3~42`'SN9(L)Vڠe˖^y啑cá' )4` .)k&_oQ^݃<,_\@ R^K9ɣuw^w4?wygx8sN |Æ Zso۶-,[o2aڠL 8Ptꩧ VYb *X'qqѕfCa6<ʪv42W1T8khxD_psj뮻ꫯugΜ>va\Yf{Ϥ(aI>vZ׳3s't.?^. 6L IG$YX]Ido{#Li~Wգv,UW]&wMʉIL4M.a\'''Թ婧zl х%2Fj6|2ܜiGІX+ڳyIlDnKݲk0ZX!Henbϟ/ӵaR'4Zx[ZȈDcn?GӾRpg$yyyRNΝ|F*7"KG '[ӓO>8Xb̒@t_gްv!뗚ӧO 1ѩTӑVA}.at_~hdvCNՇ磻={ЬgiZhNceΠD@f͒{LJb<F>G@T+Ug2/Q9sH!d_~\BH]X 7+BtvMĄ?<3Rx)M ܨj wC#2Gn&j'gQ y)SHŰI8sq$9a\WR9+Jqq1\sbBBɰcRcII97Lu5zU6jՉ(nj#>s.2ҠAϽ`{zwB߿~J]Xp8+";ȿ+CN QȌ3'h[B)RH6{iy7O _S$fuQA qySpG혚H4Kv94%%%Ph@?}'?UXtG`=NO?l%#5 }h1M4 IMM堧OՎ%x2{*=}&ܰaѣ7ocNgZjqC \Hhbkժxh U;"|N\X5=NHHpΐ^!/[L6t~˖-Rkx_qXAiC4ncN܎b9ӥ%P\KSSBXv'ތ"wW(K λgnj/3 [gy^1kH1kW:ȸ9vf9!!+J`Zu"_xQ cլ HWGd}jjII QZD}y睷yf)c$%l#|_LO  O&GWHXuMٸ"u:@q3qɶիդ޽NޢE =y@;R/Zj[=..Gw„ }XƍU?X0ڵk@5k~3|p>Yèo߾VQWޠA> stream xzit[y 6b!v.|%J"pE\DB@Ibh,ǖk'8NݤIN$[rfx4u8q6'LO:q4=p3?wwN-"8>9Bo ӧϷj|s'Ǯ6ABd.37q!diDlfÄ=V!/?2~= dt柾u 0^:Y9yƗa,NW"7<ԌtȷS'`Lcb3a?y:&JkE:h*6[xK+_XTCƦHK5ֆ{q!1#".񬾻jl/ǍܤpVo c2M:("f%S x곫v|jվ6_+iݟl' +|Q1[0:Mgi)Y9#o'nQ$$4J B4'SRWIO Rg^"->Jz $ar^"!'%.$J(lIar2#%D%%ܻ"HdfFR \'7[ꣳMv(mkRL؁%{2EϓɤfkC*z 6&$+8z@ R44Sq(ԖN 98)e$Htb~m(%6eI7(JId:$CrZB#) Qd}R92/4xYLZtZ -̀ݡGPNEPNMOe>C9-}VrE K$hZ>D^ mXt--/oX -('eYT*F| |U|)|YѧG }ր|Y gGᐰ9lCuM d0L}1$5&)fD?Ko.8g⻨IMu95w )R)#A8-!!85gBؾ//t9^`Usؖkv*k+x!X2mR,vn=Tpi@&BzhJ^#@IAწ  c{ hx+.4S?CPB'¢ l47 aċ MҜNP j{CP{ iuEC잔:I\TQRCQeU2xf;d5b78M+.Nzs(TC ~UHS&8U2Y `VPt!n5m_[tl[졇R+XS!Fִ6({eR|)x?z7.k;6p,k68w\0qGj[r&SC^¶t8׈K nwnZmZMۑ I[v`gHj^ިP  KL3 k> ZB:ȓwr:5-.ˋL4m!Um_Z`A+`^iT *aD-,B> KlR T]n oA[!{Bp`LufF`3c( ݀\(fP:tsP=xD+x[{ws2rVάCANTF5L?R#L8EI.|z]rKN˫;)}#TVg%pEޚm G75=ZIvs]p}l#G*CRࡠEBP1~Qeqڱ0AiEQMivOlCSP:ٝV>v:?xwwuw~p~yx6p?2s 3 F.TATMURSܩHSO<;qUG>;̰.|%T}fh=&E#9F^@}]nT<դqZ9uQida|z|RD_i,( [$.[VJڑz:],;9;=T6سG:EixK^g9رZ ssN>Zv'Xv'Nu7ق6}|籝]骚[&6wlٞhHᱚXX$>}!>Vkӕlb6[}PYR,$[[~sI}O."Eb( !Xzuy"١@ K/}\?#W^ s穾̫OH1uiʼ2@Ft-N%y 'r:GhyH8T|ɲF 3N=i#|ʟ##AgS/~ yB jENj [jb:-DH~-YZ6G{{U0@BP9T#Wt=(b'/!|U_ )`Ȳ ##8p<ܲ Fdt&Qox7 YVWA1r&4FXQwR]ZU9 -p*aB *EqSY pkP=\rx|ܫQ{4|>N%=&z 3Sh 5#|i( @XE۱vu<}I 6PCk:#A#g߁'P]g`4 1O}mѦmr^cvPq 3@lc;6D , SR=C%(oRFxFnTr[\ ]} Vn3^FǠG):![CN߹ۛ^hrׂ<Ә;x:o/F$DV vSSti%.'FeN%*-;NnEGݮIFKKo9|d~ tqyrEqG5mB/\x~_߄0"c,.VwtqW7Υ_جNjA[IOc9 U??xs6kyXn!e=|d3kMZKhVk ڜq=b- C &h86F@^4y^~ovmjRŠB%TAPml\@r׹kNW#89=]U5v.:{nqiݵfx^G&(.ՕՕ+W>~j#[ޫ!/< ~ . UU*̯J3VCPx~joHtfhmWMhX^U7MeѦ]dFk.IcC-N!KUUcQ9+oN]hxsM~{%D2wtgoŎ˙K#Sg'>C_~]O~F)״).jv:XvQXjoȯ>{փgzǭգxP=xz#eaW,>%|oI<.O?/(O@[q274f,h^E\%ͯHMH?d|AobM%uy@ dQ2:k,~+ӪYNzT.TAX1Z"[>I~G5yo10X R7y>~y@75>,G&kәAށ}Ux>_>{r,$Z!EmZm(r$yzs'Czi7+,ߕs՗ߎ 1YZkM`7uE^Vh,ZWf.Mg.ŗ\| Gڏ&ߢ~o=2~cFxX "PyPAП7>rs0xh}?y{ެXKXA޸BF,RGCI{2W&qi`5_LLr1Y]f\j@zd¦3P:r+?zֱUVR Z-|gL,FO>%k|4 r3*O o @pc#:a r&E'ԁz/3w9zJ{68[8u69:=@t)H#zO ]R'3Wpl䃾PN{~RoSgw.sRVoWG#դRO/3i9zOV[laAI2aG1=woabDGmavo$,Ω,*oCڑDw\uaK~-:o?͑@U!ҐS И8}±vVn֦EF-mֵ}J:^rB[骴A ժXоwCϻÒ?0;ܓ3Ybtu=@Mֻ,^Y3;"PLNGްҼz3 F 4g::"DDZJC1iOA,kaAҨtii@IkE5DEYIZ_lئQ8,' YKnE&؝W5γCLn>^=09xw׹C-M/L;:=ŭwrwv :ۖwuf;6qDkйsMd&SoK]:zIo {O[`j5KhJ!?0k4vЏvV)Okw5}󗑱ToLJ mNKF7Hc:f5rRx,V%OE;tQ6X}O!\i.gx7 +}ވZ"*^NsTZQQᗱ(ErV/ h i%nZ{aN!D.}C=Ŗ-_{vE<;nXV pg,j+^x鯄/ߨf~Umh=  ATkA%g!S~4(\VG ZާϿzbo Iq[hvR BduUԈϠo`/P瑙l{ܷ%8oXۋ~n@ï|"hhPm'x+A^G%;ionHe.4N #GͰ_7^BC5oP wk6i&k\ 7}{{WCuVu՛j?+^sZڀS{J1ڟU =ZtSgm='U߯øY 0jA-(I߬:@@~2XEU/2SC wCG Bجjy/+uX \jVuh4*16m2lĕNMUU8ˌ) jIA0ctZT6(0IutsDS0dyPnۍmh/s+!<4݉9s"k%KcM0:q|s P8]YtiQ~Faqv2]Y8R;RA&܃~maw(S)3M&YfKL#'E3 ɇqrqag qIw| 5W?|pҹ,BWz,;!A +3¾cfg~߻f%eIm{acvf |G3Yft>_jm"-Ԣީ>@T2-d?e y, vN2܍7Q1Ml.3+llq&8D7 ^EJ#$0b4(zoD<|O0 TE1e/yN~3fܽLL;Ǩ ,l]ɰ "Y`:\R2NF;aEb՞,DuD@_TG$E4FcSkhHvUQUFS'QVT;VEKbW2\rrAòQ}>t*@g ?8x3WC/k<:\5zU{*E齅w|/'jQuULu/իA73кw/wʧ endstream endobj 8 0 obj 8135 endobj 9 0 obj <> endobj 10 0 obj <> stream x]͎0<|a"EHHYG8)R!}}|V"ѱ}8,7?u'0ݧ:0fZT?tKYjOn2Y=T/~:OYU؝_EYӨ]>K{syz=ayX9;%qMm|;^].F&scߚ,9_VEa&hZAЖ]E-tuiЫk_C{D5uAj5wĿ&ZM {hfM3C=P#^zhfPA )e@ Rܝ0C Va 9J3Go&䷱6Γ-@_Yo)( pWB  oioY ߐ_ݤ!8nB އ0oӌ m endstream endobj 11 0 obj <> endobj 12 0 obj <> endobj 13 0 obj << /Font 12 0 R /XObject<> /ProcSet[/PDF/Text/ImageC/ImageI/ImageB] >> endobj 1 0 obj <> endobj 14 0 obj <> endobj 15 0 obj < /Dest[1 0 R/XYZ 0 841.918 0]/Parent 14 0 R>> endobj 6 0 obj <> endobj 16 0 obj <> endobj 17 0 obj < /Producer /CreationDate(D:20241025155805+03'00')>> endobj xref 0 18 0000000000 65535 f 0000038555 00000 n 0000000019 00000 n 0000024327 00000 n 0000024349 00000 n 0000029044 00000 n 0000038868 00000 n 0000029065 00000 n 0000037285 00000 n 0000037306 00000 n 0000037502 00000 n 0000038044 00000 n 0000038422 00000 n 0000038455 00000 n 0000038687 00000 n 0000038743 00000 n 0000038942 00000 n 0000039078 00000 n trailer < <7CCED313DEF1FB9314EE669FBD6D23D4> ] /DocChecksum /BE221F90B60933F74B48F1DC1B0C7B1D >> startxref 39249 %%EOF hardinfo2-hardinfo2-1331e88/tools/LICENSES/inputdevices.pdf000066400000000000000000001135231474767047500233120ustar00rootroot00000000000000%PDF-1.7 %äüöß 2 0 obj <> stream x[%^hMI!`e㳁y0T8d}sd93FKL&Ɉ!_pFpu?o[i馇G`Qco,Ow54!`5] |ijI3r \^Ƙ@'*= "t܀0v N->+ø\W#*8 0}8~cCD9(B:vO7~0WI;&t&'x̿WpjC}ykT.8I#߃.>α(w͹ 9 Nrj |>& ncD׈M`cDO0x`qk{1!lx&՛99ODwiR>繛֘Ia`G@$ urb0u^lSLJc>4E!N'11j<;2'9tKjzb'+GOH- iG."q\ -o^LM25k^C# ~ڛ5ɪep82욏گ U%Ti\8FAe8 r:(fsdp~ SwyLI`"}rIrEߡF :J pmË;`D[\i|B$Xj/ N%]O$K+"T_&33ݤi%z 'Mr>ffݜf a*T[1'lN;?L-Z,ʸA\,5͘9u\#0ta=m1hIG0(178'Cs@-rYLa l 1SU>LtպIvA0rq 56#@QO6ηͧcY!Xװ:Wͦ60JE7Qaǔ*'|IuoOc(^5>DdZprRssZ{wX}#o~coȕ#Z9~8-Vs36ۭX*~ iWX^kb;x\~l-i00I (̓dB/p2Q`c*=W%MP)$QS:(8*0X + l= cmI"u2ڪ[!85gL'8F첦n)^2<3)ъȝMHl '!ۚc75>IDg%F&!N dl*qM:1sDvb> W>C5G%7Opo-|tڢeB@ ;C[ML-j$5grS~䦗9 sn{?>YOeX9-)s*<3*t^_B (6jBD&XIt͸ Q\*B[8R($ˠu$X1z+{K.6}M&ː϶22h]rBp:eȩI~tBh NmlpƱ!O am, غ0@jߝ^`@5sWJ #tbSD;Ew!bUlsliR&19F3l7R .T(B?nx+s=ѵ#vuLVN_<:$FCn҂75KF>]GF5gٙ/hi4[L>6ӎ#mj[Г}~6xWmcOrM=S.k8!6cڅ@iD?)3Z'K涾Ѷϵ}9z=wN9ٰ,ΧF5b3ֿܱly*m.[~ qO /1|Ov>~?]sWR{n9meɃ 1% b}tw~j?qn9ON#vS w&4A+?H|"Z:t2y}'.^O̾aC*X@gw3'gv%9J<?/Dw7闏E뤪/1pĒvoRhj0O#3~ssȜqvtu'Ǟ)6axOsokl9Gj;12+'b׍D0pnX'ο8{K7\4JL"Nw V.Ikc_3Oq}1_nA*J->C'5f^c"%Ns k|:1i rIK"4'i?& ~АN!O͇uPÄ/_f|kZo6tY9ȁ1lIFpVְ#r6.aizp5AN\5x+j%1bU3r&FqT28&N9y$ Pt<Τb6<2-$q"<2v̮dH:MlgOs0נ8RGmَMy<q9D0:sӄ v08@l#Qpm75໎>p98㌮`ُSGpL0:2U8mFq^oC9:j /lNĘ[jp9Βu}x[d\Ϧ _7'zXr~E~ƳPmb\G]eD)QEs\'i%169A}LޓWHYKng|ҙ0_sgL:':b,/X !BH "d͹\;.Y èE$v3f͟+_W|~D ט9P\ۙ2tUm\]<;o!D>72w0m: @y_$l%l)ei>ߜ7P1Q&| 5Rȡ'CI`.D"J +)ȀB4]JB{M\3T)a 6 }WMdj<%Dn>%0yif"C!aG\": `3t <ܱs1K|sѤnn.^C>[B­׮깊q1qJ(JJ-/]AДaB=B280Թqh(nɗZos/Xsڱ|V|>;zr/=/>f̰Xce` GyTȣ(z0P6g",h*<49H{dN VCvv:_[B),/+8!U".w%zB"%\:#XG/KQ3-U`4="wKCjz8 H׽q:R["H C K 0]0-]4-=4ED*:*:cs%kSi$&ۭMp3WOaςGA \mF5ތEKCrbae-K \~{pv5?\G:=2rՔHb˃2%.@w\K.'yqfsE@W(*wGҕr53Ü{򸻝e_vR0S`l0@a5ةi>|baYK l>-yz$ W^9#{'K/O+ǩ\%HH4d< mr\ܫzP낍Le ys@0(1p 6ΰs7bh" tEqZK~=NHN6$`pnc|=H̀9 N Ԅ<sa.XzK9 6n+WkDסj ))փv;T*)0t8 těO#lAcAc1wؘoȘӇl1^$3w/rE+۪$g ^}S?֙NS}>!׏g\NLK<,#@ei| \ ?C >:1W3-nFH l~c^cgIx"1 6>7/1K],x[to.^px]v|\K|.}NNݒ^Sߥg P71bPA%bgc`7ДˡIۃx!CL[H:t~Mw$EPR(4tTi*m"*O߿mj˾i,0ƙ'oO.hRtqaN) sJY!|݇il2jk1ھ8{BNLsL}!Fhڒ.kH=Dffye}~h8d#C/q᮫mP6/m'N0Mӥ5t}\Zjy AEoIf 6&܁:sb,;ѦɦU_ioMs؍6v4!_d+ܾx_s˗vλ#:O9'4Q_+F<wRef̓!˧BÎM.'|}%ݪ/Y-6c,kߪ*,Qk)ݪӀط[U8|-ni7+ !Bl9#zU>>jm S6ND8oYfgoiߐbO BwBB7d<2l<2l\i@uT#bBguϒ#]pucei#^hqvNDP jd@( jE ' iguVV|@ ir8`/EǨ<(A2./ Ы dy( +l0 .l<ڃrm&g @ ׊De=,̈́PvTHTI.'at`hFy#Jf]բJl]“kʽ5繆\U!(2aHMQzP6!քM& m` + *ߙs&``֪_87nV 02s1% 1ay{”Qb Ӡ'٧Ҍ> B12,Jz'K:Y-6:ىn0JjyTAg5t\[`l w9R1:kJxob!^$oJ K5F !2L0\`!#oﰉGl b)Ij(ffjM*fUOvLW+pn\]36wn ]/nLEy! Q=C(wD_'_?^P^]9&ma~ئmbC~G'}@;և3%ӆƆzI@S3yt* 䐪P3g(0#9 m$B|,sWSj܃lJ/=j~}5H9C\Q&2^q~]$JNM; 'C?-LM =&oxlW {\KvfFӭ!Lv&rg<g9λTiHneA}Կks ;w>agDv T< 3îėĥDA7;Ը*`&YUəYEe":ovjʔ؉ KMp09U E6w {gK;w6wܼ3" 8HOhyg89Fxg ܼ3lYb+Z4>л{l&tmmSĭ"qy';kNSI3?&4qwD#O1 O&8*|c#[r o8:-c_nicBv[DhұM)[~nQδFQC-檂2- fk~(k!tPLr1wM"r\k]ty嬨{lЦZ۲hVy屭A(7U`^ok!do2UT|Y#_Y}#%xFS1bbJLٔu5qk`'o]7!~"0o ᇡa~ꇡabFuquYx'UNL| .llD#Y+yig@#WNW\X~op:yMAJp]]*4]{Ax5r>>|-ve> 냥m|^s~Qnl_SnSã !>DGy22 EG7؄[&pk S xǚ2{YaL]4#ۚ7b17@8ḙ̂ppO#zB%au"b6 )!t"zhS"t._}i_ilE%%"qaS%/r{#N^e#ժ$bLx՞@mOĮjdY[kTkDe-V΀ĝ)aJ n)J0jss P+5ٜK|( [ڐ%?3 eB]+quXA%ծjYH~)udü*'2Z;><}>%..ɜ4c."}9I3ҥZ>Ϙ{e6vߵP@:%ƐEƱW/^8~u٬!\fn;s\ .g|%$:UqRӀk_êǏN Sy9P - -0ޤh_(lrMjAO.r }tJ=H>|>%3ht, Cɉ)!()qXuh7xCbIJICq4ִ´")'&5|L\^\mzӹ3iMLg;7Nn5o̼ ='kV0rǽ "%ϩ3o=zR~ܦ<1՛jgeec[8(*(t8aJ>ێ4 1/X +n|")ɽ}FN)Z8g>d2L}4S|BwW*i-wڌK%Le]Y^:I'nCWLPAf8.>&9Ho\WkvyY]aUD̆A≢C$%-j`r/Ic&'&^yPޑ"6n7]4"1s 6+Y?DT_ F=U檋:x0uI_/x(O?(>E9q lB ~X/\\ ,ռE+(<}B ZF|d=ܨ۸ SmjߐQ˗y"wX3rIuAHo8lܗMO VFjyoi(a.f~.֘KsZeɝW,D{Ҷ/Kex{&DŽ۝P;blj`Uޛ#HVyyP7)v 3α@@( ڥuXDxb:- m v" y%U r}wʇ{ǹFZqrcT6P: EZ~Soի޶yt93^za-h>QWnj&r,X;_i<_g'UjL#}B='{خׁožagy'TM8~CO`îRgٵBcϷ2w.'X-f(N(ڢ3HZ锲imISZz/4-}vnXr/yB^ͩGg(ۭ)G SJ^ 04\-*~ 'Г_a]ao8j)gg@bpBIOާOQpr!Ʌ@lP vX8 ]R `QLFZ`Xcr'ϋ|~o#ՠ{j鈷xlA}1.nWt ">׀16b8`pF0XBTNVހ~n>a*l>mskcеRlVc9H}gY`J[< Wv80d0&6o sx4r.5 3>T9nFAǢTxC 67"fs;FyŻO<339 FdUPŌΜr'9qG ]B|L2@o$t}=ya5"S>dSNS.A1=FPWLFl[6l\DJvi 8n+d5WƊΝU]ۋ؍ia~i rHU'!>Ⱥb-ԅeV$ qtBwg~Hg q3gE޴7[ bK !j}WXo7?kh-٧Eٱgt4W2Rbxا N&<%FR_Jv+ʜoP- #q0VT ۔ZoL>ƭgU^F6*#W"ѴS^dǞ=3Fnulxy  *iRyCI]'36s`'}*|޶ǧȎ-PnҞ~%^S׷Dg>S\5j{9bm/Ӌ3ſgkm4DƾՆ[ʫC}mH\=X #xauvw: XOD8}[  ;uֱȢPMo껁lcmQfn/ot:HH[tyG=fva굦檷n2,{S."'ʪ?vŸ PB>}KG j=vnq^/KVNQ#+zR`/]?"]g񰉨e 9SӌGG&ߘ -w ݊(eG\FA,D,ͻUl+#oCy\T׌9ᾊ9(xԅ+p9/_qٞbxwMtg!G{t[03g)\ZnQ`0 Ԧ) pbsOcچm@DzxVƃQyS80>Gs6p״8\ yM\m0"b卬':ٿI:љ~:;}7 xD4΍1>pbGpa_0Dy< )<{xfR>yx"Y1{"J\k獼 nen,G1 Al 4B8; ճ=B> z0O yGzT!0!厬Sum9, rϡBq/5q];J`p]F:]C9_u9Wv2 DϦA]*Zxae=iM\;w'a\ʜPD Sb 7 M8Qnay<:`iFYkI[`LEV D;8w [^O{bp_evܿ*sWo-&&3^.])HeQo~c. $}921?l} OpT>8E#)HKB1`;zlX`0L+u%#AuNvo9 #P{b @ǀ0KT /i6*MGנ2|i?'aS:6ly\j X76 쁱 sNy0Vlо{bX?,bX:럾 9 a-q_xkI3yCd䐫KbVGratr,3ʞ ̨XIVj(1,L3#9u JF1{yW 3z̬  w(j8U ;{ R)Y%逩y20yxrnk!R ::k0MqcpQ KrG0.*1AcIT!hW[gR$6CP6RiOXHs 10 4Y˚HaĦhk S`)4lDf)7]*y, \u+c1k^!0㑯դmGR7-K'3H:#kӭE1b&qNap+O1SCKZ/o4,ݙuc+[`DSΧ8/ūîBu&q%Lj3ge,ޘ0<۟u_/t}8ǗtX^ԦxQX \O@S焍gaBQ;XO?u^ޟzSяsy<58Gb~/d秫;Lxƫ~o y6sɌ޳6%Nv9W܄ >S遭&t탘C<YvRwXazjnˏT]0r@0bRqp0AEFᠪwp\lp/_U9R!^p5`|cZ\  q!z WX ^\#0tJO.<%>E2%7@:QY^9f[ AN}9ȋT3\Ko v:wJCpnA1}7[}-m aZOS%Aĥz~tLήa E" e AP{yKK1E=KygiCЂPhvvs1`/M4v,p|bϡ~m$WW)m3V kXmJ`y|M/Ṥb .${ &fh aٿR+VFaA\YނOۇ5։`d0 cc)3X,ixH\ҘI(vO2!fUuBĎ9Q'ȝ1]nԁMv(<_w['80,4I?vDk:N@@;oYئ2;x`(Ppu0[yEB|O oq4ɓ5Įc ۅyu:a%.FN8008rr` 'mT1vجW"Л<Mdu w{°k10bcVND׍t7`;7¦ ESDig2Ɔ6`T#L0ncu#nh"_Q@yo/^4vlsK|Ub xႌ5@'*.usq1Duݯvk%LwT?\49X;%]Z3+{'iٯJJʹ6%#asATL],^ Fp*+ɔkB,YY-^Ïo ;2iD8-iCB׮>G0D BGc"WWb\݂6`bNz/n Vx%3 ? _mיD5֟l_ٔ`I.CB=b7*`@)F e4,H"|/B"=0m:v&>c6uЎf`V< ]f@g0N]˙oMFR[wfJ[Ir5`$ib̄Op@z:^bX0%Q: c5/"Xuo#G"|8G{[7Ŝ.cdEIt~IІ ";}LYU)d2 z҅_mLGZLy HXȏqJC^$U%v.E*,3 Y1iƒ*UCӹ'\`ZI%wr6\vrP|IobYנV 9#1* 92-ƭIIH&^m8aWs)tGّ@(b۬cl6rJt+1%w'$S0O+*klJ7Kf82͢.qe/_Cwq?`9r)CC߂C<($szFf!F޹ 2TLC+87 ݦ񎂡2M@/%9v:W 2sq?$ 1mS5M?|jR#etp890,")= FKs55N)@~G lo$5lM]( ] ǁd@:7f+aKmaT2rX6cCQB| ]=d@zAEmr7@,N b®ۤ NOT N!T!݊ e֥y1Tnx/鍇_x) G9:n&Hٰl"9 '4zJg>UU ġב1tV4C6M„23"3i3 Z杭{ߺ;xݕgenn+ae8t-! c=UkLF~,cp03S8(Is$J HIru"0v~* Lnhh sXSї0oGٻ  kc07 0 6elt 0Խ>MP)L?cƚyaj0nkքQC>Rx}ZYWoq!>U%)mM`Xn(k6D;dYQ\-et '˶^q ;SiI|Aژ=[l:&fmn o},0[*y| eފa>U ָҵY0䔇V}m3^i.,( =Dה&R1څɎ1`jncvMǃ9f[v[yxRz,zeַY}C½9XԊ*W[/wmĔtN$_Ó%Wׅ1 &&D M;Oj<-|pA$nɒS>#׍21!;i#XӅ2Ocx(TJwyˎ$stq)ěީuAw`a_!wI8b V<㢝N{VIL^6퉮oE ]|}Co^t W/OlPشEROOĵy) '`PaZ=}0?zǬ83 ,:$KqJch) h!͗?-o8Ox/gUkw>RKsS*+J:;eWxT 9?LVE,JNٓ8CO0>v'P)Ƥ {Od7m+ſmYbApyN1',*;daJ],{uByuk2ѹ3 Ew#B%q"jxڦy^;'xSKkm>HgF'"3r,zx4E 7/( vrL}e1`?\: xB`?[rxOP6,xq%☷$.7*8vB< }!θ0X#A F'I9q:F~F|ηTK&-Bkm,5#5>/.)q+`C9qkB~?D7h %gxV 4?o08Ф6Ƌ8ⵍo!Ե/ /l"{ͻ{~UYhGB~ݩSj:p+ E*B^(qUrU7I/hxm*W{(OmJ^W-W|͜N=.IaZ"Tg˲鯑&{E e6E0[_ҼSBJ{8'u%}^Qmao|%V~/(7Gs ۿ,'+V#Bu+_>xWsb4gLl&Oí#p $rb$|IV/LpYrn^p[Z->l3[üS[\&r'A9,ibA_?R,v#c Dcqmym[ձkl{?GsTC:ⵍok߷Qԛğ2˸qAeƷ !_}!֥ʡ /n5l -_jE|g:K-)@ܿ6Z\Wͅ[şd .G 5::!^^;^<Ích"@K/r֢du | y_gAX =%ڱ~Cr$$2xM3/GU6}dX"О"#@襍ȫ2!ie$$a% 5g#v!` |nrOW&SFy_ ٩F8nI|N揽?ɝ5yٔ;r7i!I>*'`*n] zֆqf' x%̡ f̋Ӈs Gץ-|}/=|K_rO?#/_JL`A0OyeFHxۗBۚmqP8]u2}G=68¥Bƨ% ΃a..hii;IȬR ZP_ SּfE֫ ;T|b/XdYp!9T, 57DŽ=B_C&T|ͧl-!̷*zAGlD]验[Ȃ%8x@U*E+3dT4VcxJA!A+7Mᛈ9YN8*,\U3S6T$(C%ɆbAiE;z2`A J%|8,}oWb&+5V ߓ H1GF9B=T`A bWƱXd? 8Fzd).Vx r(:*E@J!]7PP(;@jxa`8ukAgl8v͟nu¾ sqT'H~̵9jqLbۡ u8Wc sš, p./KdM+!8ӈ.K y̽(<┓8&= a;5{ ɻso"n+;$0p%dF{",N T~1%BwoL)@P6?1 iG('`z3*r ,dYqk(}Niň Ba< 6b/}U-yqYmu~8x ŨdMw9Ą>) טtt 4104_OJ3P5y0&XN B!y+TH{>Tm9Y{+c_9Γ78NfcUϥ(m3I lXD˿Sѭ*sJYQ!`uF1kWyl_5Zkݵ^^` dF t-PFO z "w΢*]o^L3v?c9a ViñvJW=Қ+,j#7Eh6˅,{ l7m;uAnw|CeIylp_njCq}׵..e7ŃeKaO RxMkW`XLZcEg#2X:p̮'^cqcq͋"w,߾Ⱥ}"7/߱Ⱥ}"}w-@W\*R|b bKMGZ,Ok1[R+1sJ,ؙX+1mۯXO+?İӽb،[K1B%JF[+' +\]k6a9ޡĚ]Gìv/~1BCK3ia ˜Ar`]}%iRk%VfJk%V/Įk[R})vm)VWb+04AԵBl'k[]׶k`[B_JVbK=u^͂_}&EVlWl+6VVl 65lil :[?ӂ 'ۂ 6`㛱`c}ƾ`Ӥ۷rQ;K4*|| 4vþ+hоve[mi__JV8 o@ P Dp8}Rز9*:)oXeXVv9'>j4`|{ݻ} /PUGQg#b#jan(9KR0 PrpR:ݙ*g"J7VrwXr>HR1T!Gu/n,?@Jhdw>+Q~ j(]i.f{$YIs+RĿedE3KF=vET8VJ.ֈ2VjO. UF[ jy`ڠnˋ.%f$+)U4^؋Z+K2n%r@y Q#!Ť U- `Eg3_@$'pmM8?b0W?bp^KJ5B—L=iu7K?P5pHG嚗g_r8˟7co*q$I)d)T:ڛC>Ab2698M A;Vvt"י^K_u*>vH*mKEa5kLKm.UՄ4Oӎ JFK6Gr}q14)M.O f !^lҪT EU^eNu-yÄO;CzvdV\Fڪ'S&FvPP%ۣ̬L9&S j˜D@RYvR.„y<#Y_r+f&ZW촱܈YT٩_fSc&Nw~eKe:=ҩ7Iv0#U2]0d֗'ޖB[Ob1FU=ķh4ڻ%DY{11$א/$=Nx&}IZa֠,ow[f&umH.%JaCIC:iFLfJŅ=D\;A!?iV\J, 6Mju0]U]3zgPsB=NJR->P-@0R4ܽ1 7Mb~- so8}C&O3H hP>0Q|b­YFQH `h5c%= 30ؐk8f:qЋ#LvxTCgH.{8aK"T]f4*W*F a"/苋J 1?d}&t>hL>֭qYg0nX33w0(ƶL=-cz#j7M-ɢԺiR0AL9}LuLmMM%̘ҬMbJMل7 ^1id_u&\J|~xg 2%8/Kr>qtOaf{Rwbv6 Rv_ndcjMO)_T֝%nTwR4v|a}Sba/=gI7xZmKӕJ>,NUie(Aψ̧$R'*/* .x[a[ endstream endobj 3 0 obj 23306 endobj 4 0 obj <> stream x{W_bp !ɥ\44eLVSD"dMK.4Lk3teht/D.S)|Yoϭ39g=?Z3~}.Siaaaaaaaaaaaaaaaaaaaaaaaaa1OKK۶m|޽ӦMKOOOMM4hٳnݺ_:iU'''vڑH$11ݻw6,...Wԩ_>F%3gG!2駟OJJի5 oN^^Jk׮;wrb6mH>`K~'EEETCרQcQN,X@LRꫯ|׮] t|o6vؚ5kvЁQfΜRҥ q_qR^V-LzׯQIΝ{qljwR'-bK9yy|޽9V}0*:qH:99モo믗N:Fʑ:lfͦM;C999/lm۶)࿣ WwA@믿XYٳg3o[l;tIF?,}buzǎYb)߾}{Ν裏FxjəO<򸸸^{/R1޽{98LGnzݺu!+]^x!7ұ \{,?XoGUz.WeҤI@oCM+zȑ# P05 znYfW_}2W}/<5W\igϞ5jԊ+bͷrRTT$cƍ֭r4lؐ_z%,}ǭZ:/6SL)qWKJJڵkR_h+%\꡸٫W^5N;mQ:7իGAx_j.T@'lU]r'ZlYA5j(oФI{ϭ%UY=z[-k1ω8e.'Ov!ΐ >k!usLH233c=۷oRluQ/c] ELV_'᳆ vر]v7oht\p'AsE\K"'=,)σ_~Yyg{kvsE5m#K\~}|VV"5 ";;[+Rq`Ɍ=3~42`'SN9(L)Vڠe˖^y啑cá' )4` .)k&_oQ^݃<,_\@ R^K9ɣuw^w4?wygx8sN |Æ Zso۶-,[o2aڠL 8Ptꩧ VYb *X'qqѕfCa6<ʪv42W1T8khxD_psj뮻ꫯugΜ>va\Yf{Ϥ(aI>vZ׳3s't.?^. 6L IG$YX]Ido{#Li~Wգv,UW]&wMʉIL4M.a\'''Թ婧zl х%2Fj6|2ܜiGІX+ڳyIlDnKݲk0ZX!Henbϟ/ӵaR'4Zx[ZȈDcn?GӾRpg$yyyRNΝ|F*7"KG '[ӓO>8Xb̒@t_gްv!뗚ӧO 1ѩTӑVA}.at_~hdvCNՇ磻={ЬgiZhNceΠD@f͒{LJb<F>G@T+Ug2/Q9sH!d_~\BH]X 7+BtvMĄ?<3Rx)M ܨj wC#2Gn&j'gQ y)SHŰI8sq$9a\WR9+Jqq1\sbBBɰcRcII97Lu5zU6jՉ(nj#>s.2ҠAϽ`{zwB߿~J]Xp8+";ȿ+CN QȌ3'h[B)RH6{iy7O _S$fuQA qySpG혚H4Kv94%%%Ph@?}'?UXtG`=NO?l%#5 }h1M4 IMM堧OՎ%x2{*=}&ܰaѣ7ocNgZjqC \Hhbkժxh U;"|N\X5=NHHpΐ^!/[L6t~˖-Rkx_qXAiC4ncN܎b9ӥ%P\KSSBXv'ތ"wW(K λgnj/3 [gy^1kH1kW:ȸ9vf9!!+J`Zu"_xQ cլ HWGd}jjII QZD}y睷yf)c$%l#|_LO  O&GWHXuMٸ"u:@q3qɶիդ޽NޢE =y@;R/Zj[=..Gw„ }XƍU?X0ڵk@5k~3|p>Yèo߾VQWޠA> stream xzit[y=<؈ع<\@(E),@HJڲ[;9zId4>HNQøUGo {t?C(4G3'N a,qW?GHh:q|a*BJ_`'Vk u\aO1*~Fy.Z:~MG1}!DҢ2žkӓs╱L3/MOKS>_Fi%ΫDC89 2gq%H89ȑd"W%e]e@23#CW !@FϖU'JEU;Ú$lv Hy3T|(:$ؔ_#R컒!Bi1`G0D7QWR"hJFCI隞BmjMihK6&e4QE'S/MS4h*ɤeLU #% &$|ud&RVJ:)- grکH>} uM˚z?,&+8+פ &|tJJӢߓ5ՋJ EUD3`(%$p)ԜY[ DʭєH)4EdCW(ٕ9!ё  uEP2e#5,`Z)өarBd1S|?]N\%d:dKPEQ.N : ,L)"`NIʤ([Am -73*4+-7Ppo2ü͗rȖKl3 ! ઇR9>7q, Zl+>enH3iٍBK_3k9B(HhJI K6$p8ۍQ"(5ɕA_% 2: +}ӧ' 4Y Yi%>@>3g G }ց|Yg8$necݓ"$=4!iKl=) ɛuf;*I@Qe>F(R&)Y[ aVPu!m5m[[l[ꡇR+n_S!FѴFSaq+tʽ:)RTSB5z.o$8I5IE.8#L-!Tqk:k%;66&nv$CۃW7c 'Arb"S (@PD*A!ݡjMaKb*c[%HUşV%XNU5 JC7nm>a?$ob[[`:<US`8t(šš^CB &J]8@>)1vǠA.&3)0EϤ4 š,šš@ [[<P7>.]ۖTp`+3*cq4>#Ւ85`0pͳg[j `ޞX7pnγ=;{GG]w$eoMpI( |Ι5E ȠۅQEKrKTZ rbŕ$gNAo,=n%$2?xwV|x^^㹴]Xxr!ykrx#!x0 k D;EMF,f ؠ]㍆duјgK/xCG}$=#샟,q#ě8b"(bHi de:ikNwM]{nB-hT-b wW{h~!2xIgT3b#x&L{..85k+*^Wvf3]yScn[͸j<:ϟ^s\!(a?~j5BSЂUЭk/yCঽý{CbTiN eo8}xP_|M8^j^5"ZEΒR$i,,HuT# b(P[f[cQq1>{lgwm_vܙxS/gݻBp|9$N!wġZE%9(D>:B2J?o;=-yT mh>(i73yXIJ".%_8+]U;mĖ-mَtZ":lzlۃ=[j%b14 HԈr9Z&T'ʃK8b>h'zZjzuҘ\Iځv M$hR B9!m`;@.-CfĐkn7^ꐪX0r;-"-*e4Ih HpU{l憉2OcO<0=zSuT-]1XBC^|tVco^vdT|qe 0}ȉZB3Ē(va7j⅕rAs0BP~@W^߀mL:]Ԇf1GB5 MX`J{DUk. bZɡة:"%<;oNo\V qǮ>{S{|#́:3 PpD!v٭'pԪDn\g뛄`#u0Cmg$6h"4ݗhԁ|)pʹzFh4-?*Q y8"hЀ4AY<@9Q%J-U-vQ7J\:+c/Qڇu$J Nhhpen8CUU6 2mj},b?n[y#s[={˶̥KSg#uMӛnV?D6б=κ@{*i cZSZ1}=v;2Z}I)c4{B'VJq)7V7iQ3/<+qԖ*CypfX%N=>^eNT{\f*Qgߣ7ߣQ4rծ?ؽs{ag<8;ܓdztݞ-}oGR pYVRV}Nmվ[Ikx+?=/j/z7ouUf6efGEj/DA•wz ̿ t &F O;v=f J_:r MXkL?B[kkɵ,6GaNj<+p ОS9kJ_:sfhJQJꇜQ J0!Z!y-o&1vBjH\AH:j%zcѦpm.QQVR1!; PrTһ<-ˉLjh r~Πȧj2{o}n{v$l36Gtb[hj K-MͰctlkRO͞]]wMEo?u@C2RzbOGטM5KZkB&$Au?mQw 8^[nX#\b}cXhz {7;FTYo`rvjw-G&k3сUx> ߙ_=,?{|,8p!MHc\ݣVī4^MͻՒq9µE%b?iϛ/d++<}φ?ʛps0ZUUpMa ~ Kr4W`:Y浗Ov;, 5rw8^]||kfb߈uқpA_h]@1J~罧'i_P6~rG t JU ?mDRyeI)jQ ~ '}aD,>DU>R##ԁ3yY(m߄n涡GtLߣ12:ȯaG7m#S%;_ =XfQ2qqB[vz(]"\.dG) o Q9}>#xSS׼7 ۅGi-AjUftduU ])z]}a3 I13WojyJҷ%1{L?`6~/d-|/0SCjÏU}<֠QRayE֢N P=~GP-ѩM&6>FMMӫ,OEY T10Mts@w DYL1 î(S)@ 0w"`C $1aT=;J,F) M3^_ݰ(TʃgqmI={~e") Q+|cpZwj$AEq3Q&a:Aɂ^IYSJN]e;, ~Wc:}G7'"Hq'~|̆;4wᮧܿBibwQ_qgϽ{irJj)~ q:EЍ]4NH 3.Fuw]qFʻ9 Q5/"1&,It|5 8AD:> endobj 10 0 obj <> stream x]ˎ0<b"\&R>'4E޾R>c}ɶa쇟[0ݦ\zraL I[bKk;'Y{|w=iJmiO'%ɾaO>]ݸy4iaLG=yXaȿRvAnmn;U7jo7}+-GCiJ&(W%(lٿ{p,ʯʥ5p+xK~9|\ ZC58#KU fv{T0C51t=f],,Nbf_0Z s 3;af(u[3x/,8oEv Cy  y ÒV]yiw><}|p}4c~@ endstream endobj 11 0 obj <> endobj 12 0 obj <> endobj 13 0 obj << /Font 12 0 R /XObject<> /ProcSet[/PDF/Text/ImageC/ImageI/ImageB] >> endobj 1 0 obj <> endobj 14 0 obj <> endobj 15 0 obj < /Dest[1 0 R/XYZ 0 841.918 0]/Parent 14 0 R>> endobj 6 0 obj <> endobj 16 0 obj <> endobj 17 0 obj < /Producer /CreationDate(D:20241025160001+03'00')>> endobj xref 0 18 0000000000 65535 f 0000037481 00000 n 0000000019 00000 n 0000023396 00000 n 0000023418 00000 n 0000028113 00000 n 0000037794 00000 n 0000028134 00000 n 0000036221 00000 n 0000036242 00000 n 0000036438 00000 n 0000036974 00000 n 0000037348 00000 n 0000037381 00000 n 0000037613 00000 n 0000037669 00000 n 0000037868 00000 n 0000038004 00000 n trailer < <26B8581C634F47856F35676A5DBDAA9B> ] /DocChecksum /1A5F060199AC5E763DD329276FDB0DB1 >> startxref 38175 %%EOF hardinfo2-hardinfo2-1331e88/tools/LICENSES/joystickSVG.pdf000066400000000000000000001247141474767047500230330ustar00rootroot00000000000000%PDF-1.7 %äüöß 2 0 obj <> stream xˮe9%6?_q dFd j@VA#u Փ}qef{dDffl>"if>tV4|5}sHo?|ЏW`ޣY+~?}кƇkojSM_c֒v72f.-fyk~?_xۈYz ҵ틫Ep^_!8DxTӚ bl̲AwHR%"Iu&yce&mB17orsOV$?Ϙ7ܮzfRсޘ[eXrs.H[`"8ȥ1g(|4ow[6b`O+ƻZmBQ3`Z5Z7mrP`AaDؚ/lQ9[sy"cL58=|ƔN Y'3uҸ mBA&Ɵ Ĭq7Z* R.PHaݭQ?ԶֹW1x``k#>I-i [=lSקk}im^`S70o L?= eor閌 BUGQomsZ^1 .pS [ߜđ7']Ь #e|LĜDT[\v ~}j V5ߩܷjJUlZ Z{/cF1I$.B&¶¿^Zz J]|W"M`kI 6mNHƾFFInm:l`Eppl kSsS9XɊd61gֶ̜>B"x2o<5!8wEdl|wZ5mEX2nC0h>f77*;!6XGU`*(Rc7y1FnP[4–})B$86~W:w[@~B_=6MNubm5ηOP:tLFcٶ~ 2!MFյR6ԶWNh< NcD`[<l$}$*[wkK > P+T=yN"q< #_Qlm25k%ĕ{jMjΜ3p^Q l0*JkXy$2領Α=..,^afn0%E˔eءf J fۖmR[GՃx`]lSIOD ^{ +ݤ@ sYV hHc7ZZl@n(hk yf[h3,7xS|^stTMu!1kRSUޭWc୩`hSt&jdQ sNrl M>’lΛ`۟O0}lE魏%ϻ6E[`V}}bJ4O |̺9E:T{b/`뽼LZw~؈[Yq.b͘9ud`FrO[B,Z sq3 BFUid]2*lD%T5 ,|>?钫5(`d] (׷L9n40"kvGz9E qn6Sۈ)t<a1Wz.A׈U?H^|,|lP{#{F1X[G-B&ӂsCػ|ӎ!WŽx{q}m|>w`spp,$ Fu`m}iҌ2 op9d-ݶ[0Fe]vD;#w6#r8;[s |@#)l>110۪ 'g-^#;GJ$W!W}#[CqT?q6p[[Ly?agrh^qQMuLnϙ2״5!Uc4kpbЎE4 6j\Ӓr B3rJc~ ϣبQCN!m3gzY4PqxTpPH]GAsai`G-=;C7=b6(.C>m3dІ# u [F~tCv4&'mlrƱ!>/ac,"غ@jn0Rš{yɕb9q(Ew!bvUl{l=Ӧf=_mb4:y}lx1c6֘FTj }^|8`yz׶'xC5iשGبoȍQZѰ/orQ;جsv 8s/->G@pqYzS8Mޗq܍'|yĦ)3X1|Bl}aHoeD9KO͒J\kspqoδwl2&3 8՜\ng[fQo/h{}Y:6[ /_~?U?T_SZte/~E+?j ž_?<Ϗȑ^fQ3/l)zCuw҅SKϺI Z{=q~}gnͧ>?Fߛikݢk(e{T۟`чC⟽4W~Fҟ_ģ- ?/r$ݯ?t'M=_.^͗qy"_0cm>NO]Rs~[%V!%N\u'>yOv[N? |눛}?!묠x\;!e=Ϥ j~M=Q/񋸯,:P^1WrI9ꝝZ^m94x9meڍisFn{r<#y{ z)u$zfQV$~ XGԋ[ Zv *l+]6uoG۔y!8c#ReǦWM^O k!BtI<&bK- a1pnՈjP2~%]&vc+õT+Fޜn>k7~]Myǘo9p7կ |>pyK_CX:.upҭ;8supP'LE)#o,)C [+l{cɠ2PWNnxU򝪭c\x'8ď|o<. R0'N8X.FAl}AL[.2yt*=.:ļJϺx/RvD+wNҒy$/|I6b &o.sfȋ2o!\o^!#emO՞3afL1Sl^B`CYs.bѝ Sq\=8\{]Įzb\5 sO/h381k[c;SkC?(N;l!ahh͙ؾ+X_aК'ھdhȵoK6*mObp}HępQp iCW-*5LD2J )t̀ϴ]J8 /ULiu xUMiC51CɛO r9`^ܙHR$Eؒ}Mwcc(coc0^J 2L"orQtmWeʙ4mm꺉6!Sn!;m3h/\γ:|/m @ w.;ac2bN 7++pF3a `Fj 0-]y L M 4\K BH\>"ҦAc-\ŞՒ 4m ` >psfA'׺z_ 7 6/mÅ!{bHgX_Uȷ@=W6F0nBeCE -hkz2_hRqG(ZcPaCY27 úw½ry{'߰+/{ߥ7 {yߺwSS :UG9[4F[ri<αnͽ<3LÌl3eE )M>~W{V# Cw뾛 + qaXh@07@\v%\,;40:;\,VNo{N ̱=* {Urh`f?[̼aoN0 rʺ2»;k9_;ׂ'3+vsUxf z|&77 t$`<(oPze-l޾X_\x~>_W_ R=ѥrd^.ajr\P D8 a3 yhƇ0 W9lj"q:@%!dQnw 2*M{Lmj=} MV#q&<|f}* P YDz1isY $dYX[+HYltL؃삄ΑC5Q$Tp$raYd1=;ecr !Z&:y?߸y.#؆mv:**J)-u-w=Η/kJgGR1kZW^GW;.wum,8fA(,3o?l[>l۶ay+uUʵa~&a~COʹm qxk ym)Еd:a5;a5ߎѡ1h 6~|5D~$r$@ u62E p2@@}WbH<(:E 7HLS80sv89CKg}eg Rz"귩 .w2;!k,@w#Zzx2ILޑ)" *axLk>&81"v')FD -* (WCO_ G:–?{`y|\g*|>UcM'!q2Cd '< )HsV"h8VTU~1GN\+TM23Á@;N4ŁA`PE$]"!`~ G&#lZ }$ 1isI^Mb\KV{p9ffvδqhaT\n'3Є##á>*gas눀e)";2u!t껌5 ~*7ѦI2Nq/έ1w栍{P/"2e coU~^BŜp-i|CqۯdI>2"ceƀJK20c~s3b.ʥK20*!jyA# 5dQ2If[m o9 GEֆ[g]Gt&-'$ pqUftb##6ͼ#>*gU눱);blusڻD) #mil ]ćʂm>&D|LnBZ29Clz򩪔!vv*y{Jck&jtK90sJG#h{7R y?Kc[tF>}>#>s HSEҩ"ss[Û*+(bnnnx#7A7nA>tq92~C_!թ2.^Y{ꊒb=r.`#TcJ8J$óJzc{],BLg xrD[w86t&v4B-*t4B-(s0:xyiZf1,Բ MngqF˔12bt@W9`lwh-.mTԠcs96MbkTm.Nwk_ |. bqTsP(PaƃG84.5i|~T Q.K_e7TANT_6#|'3 _Wɷcnh165&DU>qnNӪ꜄.9Ok3.`<`W?gh0M5?x֋ 8Wo M!&o._|p7? c[t&>mpK%ɩvz֋;J?qȑpPg~$E!gHkW- g5^*pdmoOGⴤg}y4$YW'kTOPٳ!'Ky;]+~#}u>nO JgJ/,FsjFb vw22=pų6ʏ6Tؔ@69kC%Q]aW&\MzFpC]]MeNڇdnםn5q [;b11&<}72 96+<:Ƅq0Y&X鴩 6e310\F N溂2-Kfkp(k"ZL;P)Ga*/j1LkoZz `(x8sY<*Vr\XQu>| uCCw2D$oWoB lX3> d:sdr&;p' y3lWjOpi| QM S kxx떚 DePOYǫ`g퉘ηmqU;X[wZ{:3Rˀ7 )!t"FhKA\Yɮ,$}$?ɰt+.m[ G':{+? N7o&OeC' !T!p @RFRB3Vl,/"w47Wv\7SO,⩌o֢#3/ʄPk oM{Iy@rjg=%cW֭Jz}9ކz*ʟW ~@="1GʏQ.2cL@J>dQns2?'M?:$dHFh6')&RCzUgAs9C_W<  4s`d &mUYKam9}V"gĠ*K3 ԧU2ao T|t3h LC)ץk [J0u \W=*^N]gx xKoΠuYp5SB2Ҥaj ] ')')I5Zg2R>YN .X|֦bj2kiz,MӪ,u7Vvv3h:=T1`ȋ8H 0W .f<d,4P^kx qx|<.]ѥzYU:6-֢_y97=vncBŻBðg%PNn*z8(|&7 ˁ51'X+1+}DL#f'}u {e8n~c.RuX¤N% \!Ïv(&^ bv $*]Vw!)1tӀMӈ@{},OVF/0,ز\/;ҤӍ Oܲcx2A5I}Q:1(.98 ʋIb#EMY0Er[iylE`8ޢ \imӘ";ø}&$+2ޞa[v2Qn>j9> e_8Sb30teՋALwNm96X,g5j !zCX78&<\i}Zkр)!8ЊA VXLHv.:ohVb-///`¡6xҿX<9cE\玀qFg)'1( -KcU~7ZT JQ4)|G*e&+WAb`6򺪞"`]MUfA # \,G#ؚ6BA_w1 JOѣ؀Rg[B2sP((`˖ba}-FWRݞEVi@ixd!eة.+֭؞'6 Q)EżC{A2#-L18nFe쒠aQѺޝ(rJ"`s$#.&'s(K5$3K|i\襇;źGTPi2Uf[/(!Um52jQ nlA%0yfiū,c9,Œ˲`Z>6[=K O.[^-ȗy>Oz}H7ӹ1M=F@pz'> y\9ιy$VgU vOJMurOJHexr6r-8c垧NBC%}CSQr|n'Zʮs8mϺ"ONGszz4{&? <3.;HqDbAK1 /X2`S2_*#-L_ 3>Cg4>:C_jj>hCIkj,\bSs4 exݦG/MMW0Lsnt\ɹiUt¹mcW74]W `hTfQicբ0.Ek/Ьo.TSm*`B `.({[F[uҹX9W,-a v;O؏JtPK/AJC.P,LuMR$uXt%;̄cHfhDU>e>Dv1>G7Nآ;b*M2s g8 p7!1. Ÿ0\pz)2N)d!+pL5 y M鮝k~!h !PRqt¿5iC-.m 7>iK+/H w%&ô//V l2ͅ0vrr/X[ɎwC6"( )]3h'ɣc m\uՐ VNo]B0Zp*jҹ 5~q^mfŰs8?KxYiҤKUP.9vm2=0ht۟삵aєHEsϭU=9 eO6,D2^̰XX`s=PXΎ 2Z 6Ҹ10)`5-V3`VBI1v>;'…@s#21F҄Jb&p9mgS L(8x^M&Yx<<릛QVp-mǭu#Ή]z BWtQ|srlZj*;-0J/0c01 |c]R1Awy)wAl SRގәNYL%[jţ2ZHԐͷ^A1+.sL-3 ğF1~pmS~ 8w*Sm"/?r<9UT&0Ϥ0.,\7'1 d6%LwF ! <@@e OWUणrӏҺ'`d)X¦a &\R(q:p35[:U?Î_D fn}Q-QaԬePVfqffoaFW̍g48?C.(wJiqtp;>ۻbᮕˍ^.W曹عb鮝;G;t?ޣuG8R.?9j.m9Ivwh ɖ\ǦWUGha8%K7ǐ`lb| WK%``\/7 ^қu e֑֣ho SEk'+5v5FFFG櫮Ⱏ4nK_9vV(^$v-/A%0`*sdevn|p/`hjρ!2-B%jEӁl7*[hVL|̞^v}0H.Wvp)4-[xbϕl8mX $7cQhj@ťf]Rw(OӨ<0:hK`:MI\4&L"D&%ݽyg3BCq8OߔlGc'kqk˄cJ_އNc##afOe3MK ˼Ȏ5<ϥׂ2X( IhJ{PJ w9c&g!93^ w/Y x$28'=.-BX4 ]#_3 ;TO'> a( aM&5$&cLg0Si|>fcyȫ iMlvӫ~aYP˼**)턡X"1U!@SA3I]pd#Mg]3nWFq1;@QJ!8i\Y+ĺ侭0[7۹! `2|n4<6x.8}/m: 8Kr4vc5@AxHM۹ZRɄ#q{UƆb(᨝tǔh76璵 ՃS9rB<.\}vkXoQ\ٞv8d8 v*x#oU]+yz} ǐ/x 2D7T>7d>D7ugn }n* nL:!;\RAr{okAv R >\,pjcOd<^SHEU2 ,$=ؙΡ» )wOMFJÅ*0Kl3p4mIMX2 fOFoIPV,̠2[t}q\p8G7Qk,\G $, FӀi0dy0&6-eP?Ǿ戨1,gNgĬq[3D7Reèhtv8IKnAP 6ìvl] _y5cB~ye|Ùf7g_qf;![w q0rĻ˘#L=a{Qi&gF|ʦ<"\b{ئl)\Jʳt+*Xq+`%Wk];'cn[a~ia~4r9--G4-b ۸rܜVYsoE[ۢu}(ʁR"k5D+Nn_&51pn @tZCe +g~+K^׆Y!t:gX ÉH|07nY>c)M;'J?RYGIV B(xq5B*rA SN/`x]; |4N>} /F]>|bg>XۇfP{Y+KeF=BjӇq;,kgLt%ˆn|n />tN'u;YqC.տNr;mKcKA97ܿ6ʜ֍r+J?bU2 :(]>P!ꛆ P3Rbtx 鍗Kקʪ?Zi,x)JrXq N),o3{  ԡ a,V1>j6xwt0v'O`c"!*xzp!QqXIP8HE^CC21)0=SaxChثS rШ=po y}?9_~sfROUOE^?9_N A!vwȓc˜=K ddz/@c^?<WUWi"E(D70,S`fI-?K U<-d^Ȍ8P3Jյi5gƒQyS81?Ah6*AԈa S'hY\Bg{%gog*}%lOp!-<xn ًdՃ!ri C Ȉ"L]] DXY N6u7ƹ;y  a=r'bPm&(Dhp?w:z>_ իfklDarzY $C[z*Mx[S|d5x gKFB-`OP0{lҤbjowD)HzPoxP0m m}6f,|yX0Gn55UL.SוX#_A[ДG5 mL}ml443n.L>subX+h{bX?,bX6 -#\?s?O G8K*ző/>6>xo9"q7]2#F7L.R xre.'MY5 $PRC){.yJ.DhoꎣbezǴPnF O(k D \@&K$`u  K3ʳ,6rqBP#J;dT/tN2-gR;?|[0zmPhseWb }M6COJ[g#10Ҍ› 10jgF~,1R )^iO&c(pMji"v0mĝ*gğV×gp,,zox^+X`Fn􂉦Ҷͦ8htE0T 0V (Qb.,?@"߸Hz.k<@Lu]8i\8zrrzyt+*y(YgWDȝ];)pV>™= ëݿ yl6Ney 3x?MB<^lV//ǜ`8H~y;*~0axJ s/{FS?4{jq߫fShhb9/s~~szIQjq;6ҸI"ػʶ{\)CXܛ^*a$?S遝6Js;"ˮPj\0ڿ̿<#̀ZG*6529@0ݘ*T |hD q\U^l"z }(w@:#_q.C0@d?~b`8S%^DL"U0g&>@:Y,j8gl۞IƼ@ VBNwjGqo4[k.a6HU׫$}, LyOe[|xxs9t+>TuqXaD02˞) 6g5F]!CXhQz4RdOb֘'X? #q&K'le~m$ë6#kbq.Wbϛ6>6RjjBzS*ϤMpvivu-D+x́Fc[p>nk@lXa`¬B$ )֞"d<\z%쇿ŏyYTGf3 v1sosgz;`F&=+si<}`_ by nr !l06KirF`I#ԍgn*_xo&nG@ۏ3M ls?_׈xb޼x6=ܪBCd"vp    0Eҩ)`3B/PGb(X'{ ojtu]PN_Z*9xEQ^o1Ý0}Ƞ&Q7>`QQrT8.gxdi%>cm800/ `="M|le Ֆg,c] \zT=du:&ˆ[P݇|Ĉʏ_Y8e.p{h&-@LINy l_0\`o<,r&A;ٴnlhF5#nn aCV>)5_Z){ _-U TX-eI`Tn1@J@]aWze-$[S @b^YX#i/3+{yIxMqRsMH8\`QS`dV/cf;Ȥ ߕTBlALsT=]P . P.d 1^AU l Gq5BzW^(ވSNGc",NEt!Ptx 5!6dDPnv{@<./64U_lEX:JIӞQ9Ċj$^H1!5 [-OդR <IzTЀx,jB<[iT-h6K(H7<+Η"$ hNHq&&F#(l TN`L1n_o4 @|L Ī<%fXM62$kJ5j<.^+y&Ou7zW|RI ?$ 1eĐǴC5C?tLuڝY#p890,"^)= 6SWtFEmS)g ХKKnTwnWCKu1ȧT' ܳ@˺7ASN82˿*De䰢k~r1ۇfV1 ETɀ"Sq OVߖ8,NLb©ۤ N'bzep50sIgDPѫL$ R\wpUmLbp,1;H6{b*?6O;AyM7Ásbl`ݥb3Hf*9U;_ HRٮWw%>GNR0hl# e޵3F iWK׼u>+ y ܵ޾Xi /ӵ0 xL1Žc¤cgjKqI+Pe29H%K9,L@L8d"n #Ba{2;X* N*!Mp;'s v8ۙb=`{rkr38K4y-qC4YYM㬚0ju[|—v2wp1__Vi32oQ!`J;pQ( ֪j&_25)cPYdZs&ٙF8iT/4;*8-q f⹏&%g,ӻaniDR~6ފaULָ[L`)X8w&p`A՗ kJ&R:Ŏ1`jncuMǃ9f8yxRz,z e]pL*J5L)x)1.:gm?ik~WǷ>:JQ :gCy$y(t26Pb &5p7N1N : >}S<Ћ1f,t~3CT#CKiCïX z/|=_ӇyG\u|3utJ8:RsSU6nP}yqLeP 9—\*:3YU*a˳'q~Vh%v:J1&-T8~vų<%+e|xNZ||z>i\6Gg1#Ag;c  ̡GNՇO *h}!|u <|&Cw#B%ҙsOҙщz <" ByM..߾mj)%MQxK, v0z,|e1`\?: x k>/W|wP%5&܉8`77*8v~ N+tk82Xſ~u+륺&#>{*u[b=Dܧb]{~UY(m5ݥ(UG׬jR>W+Wkxwqh=yCġv~˜U_h_,IĶ_F&1҄zv~iݯ_RZ`lF*M;\>H7b:m{.j PܠF?,'+VCOBuhww57+Isf|{96pY"E~&Y/',eX7V {&sz+p? >N<*( 7oHrO=sؾFQRofY`oNc@<m#[}_u)K`; !Eո򁙿F[57X9:tfCtfc1:,m\SWͅG_d .G t4c6+^+y2a8Ϡ5h-JVQ'D?[j[,H6M6?cS7@WLT ~Z3KÂDO@W>Lc#)$!?ݏ;Ec I?񛇅<>N_ƄY.Lf' w0mw. U pF8dޤ InN9=J,2YŚU_0~6g3@z㢟#0?#!i1l`? ul?F1Ӛؕ_Yi%Ch[ӻ-'9:ow£78/K;QKAd S.<*v&Y;2@9,u>e^d .1. OXdYp!9T,ᙛ9!GrE8@R*|t1 ԕʸNdX-7R-X!Zu $]SJ b ͜"u~ɛ3h٥ӡ/{'-3fŻޥo#!IʐAIbPZ|ԴfBaQ4oUعD@"\lR=ɀsdi!c@1)Q &p8։E[@ŽklDA`4J2`(@aaWAn*V z r1E͇4 6=?/ zo׫Y^)3(N87b?:|M= 溁9j&3^)&29MK\dM+^ޥGpq]{3>O Px)7!bq[H M-{@#wj 8f-b |@9 OgYBAf'"GqRdb12NE]ޘaKl}c%* PN+38WqCl&;{ %pЖ= e* ab,lK@` . !ayS JEg.OgCW8,mF#pa"cs2 G[WU1mn2H'"pwM9RJЂG8/ :5׬#Ji5Bu(n($K%Q5EVe<NLD(O*N~T<ǘn-M9}MYasD |^o =ӘJ B; R̚C^KsZLs-Vdm a:o9,+}β6hpS(,F $#MD|C-L鋂Pz/Gl @YALAuTWR+1Lc2B Vdow=w* & z\⯜K6NXf#t8۶! 1†M;^j"1Y+$FPivv٫Q\#DLMWf {0R7la27r|#-܁:Wr2ڥ@ZSX^|:1XAMU*ك*dG=wX>Ծ,:Y5&c_D!ɷ_ fؔ~o"$'y6p}F>MM\- wuwxlB=U:vWc:F_X"Ev cc2kC`>|!2{gGц߽9{ـn&6Yo߹zMd=&mhu/o芩"u^fm^,|+;1sN,HX;1۟XZ/;p}b8;[1B^<%_JF;+' +\]k6a9>Ě>\gìv/~BC[ܴImNrc7G0Vi6Rg'vvfJg'Vvbwbs޶bm+V}+6m+V_wbwbahg#|n9o;spۉ n;q߈y߉Q:^͆MW߱v߱mVaSgÖmVmzٰa}v `۰ذ-Ml~/]7vڙFe9?3Ǎ]g;ᾳ+;@ೱ+}ݍ`Y~/_Jpހ;J iTJŖS)Wqu@7OP B-òuWa}x_ Y~| |-I* 1VN*)%H] wꔃpg1sYO/V@yl 9;ypƲx"T@E#Gwɢғ9w5:rM&ɢm H2,EXZqh\Fe԰=aTUm-s7Djez#M[JHVRKJ5F·L=^ e7KP5pJx=/Rcp84?o"JRUc$I)d)T:h4_}i RޱE ZSfaCzRql[^*?F^C'x\Ker? NRUMH4Dh@z"J΢O".9!V8ou KgCCHEO6i ö8ʫܦ{J:aBV!<;2v.VoUU`ѓskXeU]BԒQfV@ D{H0fT0a~Ow`P?oQYW0Ld7ֺͽZEd=?F̢N4[pz |X-[9N}H ݎK}f9-p"F[L 7֌w(=xGk,sq6G$D )Y۫B4Mo~:eIW7UaFb;Ybr?WNB"~~!cT aLF}XBĘuS2/Ly"$1T㕀%Ѫ?jy;0A]!U!Y߶( Mِ.֫# ]J(CIC:iFLfJÅ # D;A!?ziV\J, Mjs0]U=zgPsCx=NJR->R-@0R4ܽ1x 7ʗ&POqn\L|9ɏ7 D'NPFӌ57(Lt_pmdQEV<.Rp y0@lH\ΥNp*; \`&Ug0Ϥ!( BeFhlx,#SWoO狋x_n3R8x53;cgg;WF%`Qm76͙zi[FԾ.3Ԙ~yyt{͂ 7,%h!~\%deo&: endstream endobj 3 0 obj 27612 endobj 4 0 obj <> stream x{W_bp !ɥ\44eLVSD"dMK.4Lk3teht/D.S)|Yoϭ39g=?Z3~}.Siaaaaaaaaaaaaaaaaaaaaaaaaa1OKK۶m|޽ӦMKOOOMM4hٳnݺ_:iU'''vڑH$11ݻw6,...Wԩ_>F%3gG!2駟OJJի5 oN^^Jk׮;wrb6mH>`K~'EEETCרQcQN,X@LRꫯ|׮] t|o6vؚ5kvЁQfΜRҥ q_qR^V-LzׯQIΝ{qljwR'-bK9yy|޽9V}0*:qH:99モo믗N:Fʑ:lfͦM;C999/lm۶)࿣ WwA@믿XYٳg3o[l;tIF?,}buzǎYb)߾}{Ν裏FxjəO<򸸸^{/R1޽{98LGnzݺu!+]^x!7ұ \{,?XoGUz.WeҤI@oCM+zȑ# P05 znYfW_}2W}/<5W\igϞ5jԊ+bͷrRTT$cƍ֭r4lؐ_z%,}ǭZ:/6SL)qWKJJڵkR_h+%\꡸٫W^5N;mQ:7իGAx_j.T@'lU]r'ZlYA5j(oФI{ϭ%UY=z[-k1ω8e.'Ov!ΐ >k!usLH233c=۷oRluQ/c] ELV_'᳆ vر]v7oht\p'AsE\K"'=,)σ_~Yyg{kvsE5m#K\~}|VV"5 ";;[+Rq`Ɍ=3~42`'SN9(L)Vڠe˖^y啑cá' )4` .)k&_oQ^݃<,_\@ R^K9ɣuw^w4?wygx8sN |Æ Zso۶-,[o2aڠL 8Ptꩧ VYb *X'qqѕfCa6<ʪv42W1T8khxD_psj뮻ꫯugΜ>va\Yf{Ϥ(aI>vZ׳3s't.?^. 6L IG$YX]Ido{#Li~Wգv,UW]&wMʉIL4M.a\'''Թ婧zl х%2Fj6|2ܜiGІX+ڳyIlDnKݲk0ZX!Henbϟ/ӵaR'4Zx[ZȈDcn?GӾRpg$yyyRNΝ|F*7"KG '[ӓO>8Xb̒@t_gްv!뗚ӧO 1ѩTӑVA}.at_~hdvCNՇ磻={ЬgiZhNceΠD@f͒{LJb<F>G@T+Ug2/Q9sH!d_~\BH]X 7+BtvMĄ?<3Rx)M ܨj wC#2Gn&j'gQ y)SHŰI8sq$9a\WR9+Jqq1\sbBBɰcRcII97Lu5zU6jՉ(nj#>s.2ҠAϽ`{zwB߿~J]Xp8+";ȿ+CN QȌ3'h[B)RH6{iy7O _S$fuQA qySpG혚H4Kv94%%%Ph@?}'?UXtG`=NO?l%#5 }h1M4 IMM堧OՎ%x2{*=}&ܰaѣ7ocNgZjqC \Hhbkժxh U;"|N\X5=NHHpΐ^!/[L6t~˖-Rkx_qXAiC4ncN܎b9ӥ%P\KSSBXv'ތ"wW(K λgnj/3 [gy^1kH1kW:ȸ9vf9!!+J`Zu"_xQ cլ HWGd}jjII QZD}y睷yf)c$%l#|_LO  O&GWHXuMٸ"u:@q3qɶիդ޽NޢE =y@;R/Zj[=..Gw„ }XƍU?X0ڵk@5k~3|p>Yèo߾VQWޠA> stream xzit[y=< b!v.|$%J"pE$E%w)QlY,q58$ 9ޒ&ix6Mti񴍣!8߽,y̙c}}]BMJ}녧z!l<9/~JO9:{r~rLكg~Us:!sj[)Ms0ʆyø|n/G&o ̡ѓ09CӃ T 4GN7?]F(H=>}0 s>@DŽ5V7MfVhw8]noQqI+ʪ`&\[Wi65l؊-^1#",l]_䁏I-,\:ftutBu59O/e|).]t4)@zރ~/X'Oy?v#$(dGJ{^AY9rej|F6?4dQBj8$352 I>W#s!qWhGlK )L3~.!($)XN2oGg8^$(ů۰ I2HN;0a! D'; +Nd>0zБɜ?5; kIQ`-jIČ U”::b~m )6EY?SBMT*mɆĤ2>{{ _1IMRS锌*AJyxFքDA&mb )k`X2^# Lݠ q*%׫OIYS탗 x i7=JJ)_Jc;KR#kCr^"x:Jq Ee21#I`DVy!rkx4!R rlPY#Ɍ՚q:.[4c; y°'U%t&t]0Xw0a!Jhu1=2t 'e;dQ/\Y qBxәB]P~0-u9@F{Fv2>]ot2}zB>>B>C-}2:, e3rqд$e|79c1e͚Ǖb; B}YʹV>'_e }J }|3gG }V|Y g8$nb[m]"$=<`& S ɵABK5tDGbx 9gLB8:$$E*edz(PSp:>'my"[L#SY@ `I͡sSBǞ `"aPmk]R$>ȺPZ07BrN@!Zƀr~"8}-,k@u=Vɂa8) ^Ԉ|@IiCҖ s\8vJUS D 8tIkN1xqV,}nTCUHS&8U3^raVPu!m5m^y%NnJeETE2NMP)HRM! ~u]#UkIpșk683q GjSv&^T8S !n{;X6~۵"7?jQ  uL3h> Z\:Sw2z5%.ˋL4m U_J `N+`I^TiVT *+aD-,7Ao|Å6ސ}Tn oN[!r;B`Luf`3;)N#( ݀\( fP*t+s)s)Ǡ)R<=;{R MݓgS3v_~0(tEC/ f|Qxӊn8U:atj3g`$,޼B HWV@~g"S@ppлF RK H*½ H.+ EpV]a#~R) E +U"\S@`z>le{'\ AY7-sb]^!-U=9YD0&w!BށVY43,~ŷ?} G&/5E˟^BM3rLMzO4 TH?F|̛AmY"pDPlEڹ-)H;륖z& *F"q8 u4C_M zRY ml48BQS1On8{x`&3Jt&`]m_x\_رm1l/܍*bn%h!i`/fʅ%bs8f[ 77{D<5́zw1g-Y(Y-;u͠";3`"E#]:~Ogdp@?\eVpkt|ٝ}lstp/; PM=)N~ܱ;k5( ag%9-e֚g-yk`bχz ` bHL7#lӢb\4{3GDF[4%6Ԍw;]gw n>v|{ѸSQ6 gD}B^:+kR/YlV'u[a&qZ0@d[\wJ;{vڼVss&.~ZZӮӳ4_ W5<ָڡC[;Rc7mKm8u'Z]0[kf|djc7-/|'N6G;mflS) Xl@EH<<%X. p.J%NBC}B,.m̞g:CxxG:ݧ5ٽs百}c&ςvf YQ$Va%޴طԘH#Vl(LDsfbpUXϹ"4H\ƥOdO6%f<$D(,h1,g֘d}{ q$%;qS=-2tPiZaL!+uKND2WdG_ҟ~~ii^^&B P)] wjrr[K A% ZN֔%J}9QGL8/g4h`,8o?'16gJ=;0>};K);-/*%ZL)yxܫAر]PEԸ^[uc牡xNdũwHi ZáJ%"NvWQE@(" MZA,:cʞ`^1q&̆m;vhcgwF7ݜ{ #/Y Rmh4udj:L|N*t:0*)r9hц )Lm,"ш"st (?xt[ qbMI&W/=ɮhYtݗŋܻx9C-Ea%ׁ֪c`^A'LIRk i:RRWhm(q#Ʀ RM_Ӷǵ6Z]߳WFX:9ݰdhGS6O2 3t^f &$(&}Q۲ԥТ?5Ҹ ҅1"[6޹7>j4H^QgFC# }%LhlO:4MX`1#?7&`53C͐ZSqKʭ>LNyff}VbMoyX&m{W yX%,Mr4huƥ#jnz.͢f&èMMd=ip-M<~#g㹁_D+5=gn/|=;AP^Fq3q#4ع\QD}6䳳 rXg\E^9l" ?]I+g/>SSm7qܷuu=~ =$}j4Z~n lEyNֻk"wT5w4{sgyz϶\JO\M3;O=H>ҟ  z&j ZE < Gnu/am>hoYۂ6vrŇ>wfﺳ+y0-"oEㄌѻՆ݋h=(l̀<0.Jۇ8@TD#vgB<KӜ#2,$@S-a3vX*;88hKlBU%vVf2[D\6w ^k4c2 ZCF4\Bk `n E@Vb((-l!hhhܷ5'@V;1;=SzJcYȌ#4k56K?H\Tz0ݒs9~<тr(4칕6P*vx4ˬz}@ӂ;|pڈ`$Єq>˾~{Zup.R#+>6d|lamAJ^{FsW=godO8r#B_`YzmG1>?ݞl <@Sk3wz&6йhњ =FB 0Y \fdy:d¦5gDvM6~ס/ɧy#OUsZvE&Uh_} %~F)6c{(Ғ3$."pu;*l%,.ˁ3j{0Ej |WGZI)F`ݳtbgaScqqOJ~\))T2Ֆa{1VlqPhe-3%lIex=F#~x_m0#L )~HP {% -U.XhS!@I \Nh\eB_hԴrdLK5= H}kRV;<ߜO힜%FW{cσZ?Gn~p~ś+#2Ms(ycgr/G6(7],^!VK#@ ig+W3FM^- WJIJө=y|Cs}cٷ/?=@jXəw U8Smbג,`q F؇zSZ~_IVJ{!h]2^/-.W!k$mJD*hD話ֻ:Oti}=aJO=ȞsX?z~lϱw)003+5[t`EMzLmp7i83lWٽM&30ܻ7/ߥ0+뗪c&#er\W*6Sr%Z݇5;e]HgD ;7MF~HuA }2ϝ$IՋN%6I?!8942^;Uչύ3$gI/țH~U`< V)BѤ.<:(X}~OPt].gx>kh[^}#؋)NK"P^W$GJ ,_DqJ82Y.`o)}2 JAO>?#WK> w5IW5$"aT.k/im=<͛{&WraKl~e|g zC0ec_UPn—C0zh As cT@ sTy8"UXqHTX*C**Nhԩp>T qWajs{Pa ys*IQ&LcPam5atF>D:64 3yh00;pxqtƕ<<6Ze&PVA`Jq:s!aT*FUk k)t( EG.>sskVV]@J,-2g`[g9 8aF6nQ4߉5|'iqxNt`PgOcR:"M7[9veàa aݡuRZ~^]b{RfX&-9Q|@Y#ݪh~/a[x[pSjQETӝORڝ*isN3)ZXxȼ};sGZʽ(&{p~U8 }LRNNAσn J#(0 > endobj 10 0 obj <> stream x]K0 /HR)>L'Ejȿ=n+uwq, KΗg3G֢p:j# Q[A{SQgE~m R<[j#Cgm ν uA M :C54Ԓʚ䷲+yO~SN ~ X53TȩSgf= 3afp`a/ %2fp`3d0!YY3%ݤ{෩%ߒ߀ߒęXoioşz ^,#".wŸ?<ёaC;8J~P endstream endobj 11 0 obj <> endobj 12 0 obj <> endobj 13 0 obj << /Font 12 0 R /XObject<> /ProcSet[/PDF/Text/ImageC/ImageI/ImageB] >> endobj 1 0 obj <> endobj 14 0 obj <> endobj 15 0 obj < /Dest[1 0 R/XYZ 0 841.918 0]/Parent 14 0 R>> endobj 6 0 obj <> endobj 16 0 obj <> endobj 17 0 obj < /Producer /CreationDate(D:20241025160022+03'00')>> endobj xref 0 18 0000000000 65535 f 0000042210 00000 n 0000000019 00000 n 0000027702 00000 n 0000027724 00000 n 0000032419 00000 n 0000042523 00000 n 0000032440 00000 n 0000040914 00000 n 0000040935 00000 n 0000041131 00000 n 0000041687 00000 n 0000042077 00000 n 0000042110 00000 n 0000042342 00000 n 0000042398 00000 n 0000042597 00000 n 0000042733 00000 n trailer < ] /DocChecksum /33CCD75B59307800C41913D766066EF7 >> startxref 42904 %%EOF hardinfo2-hardinfo2-1331e88/tools/LICENSES/keyboardSVG.pdf000066400000000000000000001137331474767047500227730ustar00rootroot00000000000000%PDF-1.7 %äüöß 2 0 obj <> stream xˮd;%6q7zI"/A hЪz hRK(P=ZfFGȸyU0;0ڋzq?>Q?{Mz_tvO#~<vw{fEC^P# F;^Kؿʕ's9)]s^j+1G K D:氛}q4¹.97`!L.y Ng"|Uׇ~ <.LSc!U"A ;&O`^&i$5ݽ Ϟ?Zm}j[cy5 RĤA XswA3I@.XI)jz +ئۜӸO98O0%|)Oo'pQ&$>1X}8#99-k8 ONHjk@F~]Kd-錱뇣kCUeZ#@:)Q?Ԭ;GWBL%5ɫ6Lv3 %e.hv^Ed"z r@8bBߏ'`;UM7*R`@:)3k·1I1I$.B&ž=10@̕:zD"x3|_8zv4;cIi;sa G>r1&5'Y+ Y7f}-?tY-=<>`RȊɴF>ԄbӪSϩ\.S٢xC'WU`9*(REDNBu!Fr1EX{"ٮ_|+ C` ?Wl|^SAgSkrm015\`2]&vk6_4f&Ꚍ)TT:W6Fh< NcD`[<L$}$*SwjCT@LPI{މH-8s4@4Jn|=G16ԜX!x7UkU,pf7ϟzfW U# $@N,t)qpAe]fZ^SXAt)\zqh\aCp 7~Nyxq̝8;u+Ϸ6uT]{kReĉەdiDDP`2Mʳk 40ea؀4~Rp>iƐg6<2}1E:U>HɱLuq5)0v./4} 3Uj*ʳj <5 zJnZB]xT0| r's9h_>LMS;>G%ϻ6E`V}}bJ4O |̺9E:T{b.`i빼LZw~$h(]5YjJ1sv1v#0t\a=bВN{ ڲ@,/Z59RC05X8m 1KU>Lt(`dM (׷t9n40"c輶#z9E k l#6QNԆ\ٺ]#*V{ #{$ =BR@] c`R']5L NVn#vJbzNPw Q`kSklNΆ\ ;grayN098s8o݊{oHRР\CcgGmISIz_@ym<$#-xF/ƿWA1->G|*hJE_\G O1Vp0`ZY gYn0szlq3R3oCw"e!t0֗F.͕G R69  vph NhbΦ}V6sḿpO5>I`O.KLcCɆV%U89O1sDNb O@hb'pշ@?:OOmqfB@ ;C[ML#j$5grS~䦗)D:ja N Υ}M/ê]5@iI9\S!Q9 1ϣبQCN!Mk&zi6.FqH;.4I#cyV!\|M!ːO62hCrq u SF~tBv4&'Ķz6901Kcq<0@jN0RNsWN #rPD; 6/#㘳.Fq@Mކq܍'|yS-S.k:! 1]!} u%3^'Ks/ŬM`*ZDl5".mZٷѶ`#sN;'̜l·ASsl_81| Ÿ__N/Ğ3onC~ۆ_= 6x/tg^:0O)}vΨ`.؜1: oEC~Ӆv+~2__P:g#៿[Hhgv2Hd@`߄m% ZELwaHHOo{ht>y6ˤXLi?~'_Z0Wʲk(;֢4ּ8ۿb՜!ns~c}e-R҈Sbsib"uAΗʚŕ,F=YGIǜwB\/)'cur&(9G[bO\'O- :.w 眱L_s 4#srKPCY#LɗM3iAʸa 8V5S/? 3/Sp9quqw[d\Ϧ w0ڗtrYԆ\}\k䭢/1Ry.8 (:!J捨d^9K$_49Aj}LǓWHYWgyLGNą `7cqyN!0[!\9EІjuL]L=[DbW=l\qbuŧN4pc ˵)JWƵ/~GcԦv+FF6F5݊ '}ڰEm5- ״O4RizȭT`L _.B'Qr( ̡K8" 0/R]E e|fp_h.%ІC]4~ } xYMi2Dtx CMݧ0V|("IB\ 1[r2^yΚa@ar +2 `%Zs*%}6"SlTyk2Cb󚘮U8NODtiq0r>xk[y}nW:Ĝ# 7`#9♅1yƄbҜ+OHo@Fl0oF-` #% \bc|b |RnA!W~iǠ)X׮k}cM7B'nN1aqF-n|nfxL qsws2DHr/$Fmvō^(l('>WؽovlmCC *kJ8_iPƞ!0_CjI ΕSb47>Nۼ_ތ0`H_:jal'X=v( KLL2]4;NH\mXGvf:W 3Pl-+mlha׹*pӡUaoe" Cj{ƫBW!ETTqSRu'@0GUwa/O Jc<G4$"f"-hͱ s>~ܖg }eWcs נ vss^ns>,eӶ\hE24崹P0Vor"mu3<4`g Re@yq 0vXY1i9F h!ZhXt.a0i24&j6!m u46&!K6#LI.f¦Ǚ tS<fx sjؗ4$˿1&M0W.>&lw/\cVEq.[( w\A,%tY sKZ9W E힢+rw$]-p_4/djYq x+Fihu?^Oﷰyҹ+ '!R,l-loͥ7}aa/Ԗyd^@C 8>1҂.O/]'\K94Xu5SGI8\ء&sхB * +K  "58|qS6tAKS%| j ]ޑóză1;[sPbHo} Mg'>c!+" "ҵ 'caι}Zq YQkequ˾ E͋;pu~\y՞ 1(- ;wd{9c\lp\$ ` <¤=tqNd}pzbMZӘp|yat@ϢbitpƢ9: /RH깴r\HZj4 8)bdy^yөXb8ރO*`XҧH{0o!Qs8oEruBk#rЯ Z)pZY4sTuTw͵u>_Y׎kM}1\ט]\ukŹ7A z9~أ4i-Q7D0Q?LDRζ ]4 KO3fMV33Ʊ9ct[@{m j@du:ށJEA ttTcӻ愳hԮIF1 z]xz͑~m_V_ әF-ffh3#wL (1c^P90/rdf+N]`лS0^|}~:fKco$zt!{bJ7cO1Ę;hD _$'>~{$2ff'B25ND1KF,+#828xnǂSet2=Ćאy,؍D/!j-fo8j˒[:ar|dUML PŰ`(6lik^7`3ga2J߄y"1=tA4&́1aC&6esȲjewȲ%d(ɲ6dhYdW8>1&G8;Űd1j%Χ1s㠌qi nHE;1ᾔEgbnL}cWX5nd0 FԲ]Ϛҏ7ncp*<|3J9O2<o [5%n2ܔװআ 3ț#م\7/!fDafo 3 ,0foaFڅ83a8q ~.ĎYB0#o\Rr^Q;/]0.-N%N[8K&ŶlR,6 !6. )6>ܤ8589x}b'FʱD_ .ݎYҽ0b* Y-cIwΪxxk%ݸIuK 60pĒyZ۹]pN|0kMqrbwV0(IҪ1sH]qDԃ8@jg>mlm5wBm!6%>lJm S6D(mk} юoMȦOB1*uvw<4qiV ,zYHk 3A6r:}ҞMM u`tYjKӋuJބ+=uaku?>MQfܓm] j]Tsm_sݢ¤d$Ǡ k^1d0wYlE=`ƅ04,v:4/Х1KF-:y7}Tν>jnKt[u tʻ, pH 8dS%C!c!ƅ2> 6>^ ODҙ.MR;5UX[F0jL<=~!"cڎY0b3j[m`F^N]>j3Ҳ'i%,/H&O u,.[KxE`~Nvf?'c<~:'#f?'; 9duNx?'tNFvNFp-e1KFl-:zK}T>jguגq:uOdN%N]IKϒr_%ʡ Bs,1wN cxqsk7K] BL}o9s7?MK>L?}N(ji h?eR'H5RU.CWF* Nʫ-6+ xBPZjFTF)8 `d<`5U)kd@t=a:7X[pB-1 ZIZRpNĥJBU'O};F41zJEںC/"h#(h"u)WՁ q< j-"˭8 ȑk{)[L@HIY nΪ",'6nNYUoǹ0V 02k1ݻƄ 3%-1 Kibp6cN1+xN vn"egՓLJ:?Xjbݑ7r&[wr $ #Ikγ**7MVqTh7b#o72Dp%C}D&>`ՃؔĔS,4QԚUD_P PW\:3\!6ftm^ܼ BxDx+gsAma~ئm˶bc"_'snyT}a c^2r=:`1o37sŎ $t*ex7T‹S%bp:wdF1}£Zج"ϼɎ#QC᪓ZodVZN̏IfC"7oxӑl U?/LCWv(}r|;"JWְʸ=l/@3Q7o'Bc_9vLJ}ZHJvPDr+Y"۵sMm?9e 2-ͣ&@q3B󮀮G \=M]RˣTT߅8K1Npt Z*ETg}#o/E{R |:upr7d1&4r|1t|l^hVquvӇvGlw-O-Sm"[{Nrw֚afއ-hx'Gwc OpTxHrAG>qth ncBv[i&:=U籆Nh} r510RF NO2}f;(QHh2?kw굧X[V6_ou=iiOH**uڗ X;|q}/mx['7W֠Cߚو|f]7~6cAL, r2%1fKVԕN׬-y\36vtj:̆ŊĹߙ|s? CP0T? Cob*J};O)x0 SҮQ,p?˂'<= qP (&ȽXڱ"W.W|lyU,2OA MJSkyct}F"ۺГ1Eذ8K,&|a+upad''|@|Y Aݯ |Ҁa*`N2yzya#@auooxY?^VqY `m^[mMn|v3Zh7!>X#Ń %恷^ 8aH)c1B[s1Rx HEǟ:O=AWW^4< KŔg҃C!xgE$#i}j'[0Lsi4vN~Ġ:Xu> :E,0>۴P"J'6( QMk%EZLfb?0l=d5 46JG? 3۸_ >ަ+0mm^a;`MρiۡTr;#(EƨmN7B۸6B#6u~֔zž[/p"y*k}KKְZҨ/ ^k蘵q6?Xiln߰~Xm<ӎ{>z*l#a62&TX8|2wR>بiRX Qɿ[׍JF$73{+7"-6uwvpw1Kh&Mhm`ڌq mVm`l6j8B&`SX3:o\MC13'T1V(`0a2}0"ar\MR)9RሓώcKXg]pPXz >\6VH1mm٣XY,Uݿyϴ0o#61kץ/=җ#,3_<~*>vK=MӏkYc kk@r a|^/pܵD'^t9W8fcbM_Oul_⊢9Wۘa[`Hm^V^:?/NJhyqo=t .op5ْ 6_dBf`۩dE$C|{y8DэFx2$t9MR^$r"Q`l:ަO:]q- Cl.~O0i+I?š>^lXRY'U6ˍCOJ:&Gv_j2 y6͍71{knǁYnFm)8F*L*6 {tȖjD cS3bC5:fFDŽ6}n/x1JXP 7/FrSߘ)6ΡK'-=̿E`0Ja5L m:KKS 1v&_K#?KM^1Kdt.u#[^҈oAp!Y1>voBg$G!jԲ)cdʜux^,wkr-ƀCbJML 81Kc6}n/x%SlbM}JΦ>`}]9fU;~qT6)76h3؃Cmn/p2]|%lS x[8YcNWv ]3 kI}.Ťm n#Ob 5Ĺq560 &V ߺ^V כtxYI,+ަ[IuYIð>S# m~څ(9j1Km:զj{]'>uw(5NȎZfaFfdazf a6 IzBzl׳IqO:"n:қ K3&qqP!>&q[";6&omù)ӸHŵS\lHgLDM n .n n oBM7+{86zf2xP P 9k!yۡ q=8PNPM^_y w]Gq߿ȆJje_ +,R 3=0bB)2wٸo5"! Ɖ+2Bz`pJ%08EzCD7X5`p h> ~0\z<檵ӽj[cI\'X);jǔ()%q0:&0e68FrV/k F/qy} U>9|vb. |S`ꁡ>i|Ag Kj2T"P CBM~t,٩)Nl"^5P yzs|DaCEDfx_B!߰y\GuF@ ט3 l|e7"ot |b@MDgTc3A>= !kB R%>4$v}J_ ( "wzҙ`3L410^sqT:-iX0B}# ep;;1ym{V벯9#HE* s$T9T,vS=t-6VkwVYʮ-<+3XЅ.`Og>|ANcNx`ξ sh ᳹8 9e&ޞI|ҀM׌L=My8ELLA]1MoRRrwTbLcW)p\!6Vtu^n{0M?L40M?L_4M> ?>E0|d =/U&x^{Jg< &eMB$]g4KgS骳uz1vnחxշZ|`*qsZg9ME3zQ{ kՕ+|xRMi yJ''iڈ_+P- oJIlᄒ[' q3O"ѴS]/zr`3+1V^ b^eP|bJs2pN9}dJ_O`z@>[SWxT.)F.qş5k8bm/(L?V`Zȴ7/LR\*rӣ5&w̰@O8|X9;b-j{L31v<_' k/y8K66m@ιmQfn]9g|Lt@@1a3;аUyh<%o Tn+W:(xᲔQD URX92QZ#,HhLZG&¾H X`G˚Es3t=Q8P mP'C=K :ƕ1R0(LS YOZ0^upoӥBܹ2+)Ox-)sFČ//rr>|Lǯ+_=6gV R~XGrR*'vt Z@(|0rӧEՄ`1so` kׁES ~S~ۃY|cچF1 M;Q&PL5dTnN?yOmZQ'{ $0suMLcTl>ۙ卬_Y-}d:Aw[|7 yAWLp!-<x W0{Q1pX5;p.CF~L/.d722Vs7ƹy .Ran㜘L b]F(,J|-|V\덯1 #@m r_G"vO]{S]O]t3|F8 E_CK$_Z'J`𮘔IZlAN2:osK SVm7M8s.TB&Hĸ9 -LaLʝ$Ad@ܞQK hS9f)0圣bw!T?8pI/Ƥcq͂ ^onU^4g 5ɬsG>hLD<5,wN]©.P"ևh,8nGX0G<2Lv/lMPB0 Zyܻ`E` j=~=ʗH93&Mb(n! 40ۺIv\SixC/]; sy/+#X l6ӫgЀa V.9vv^.6`'!n]__/ޓ/9[p.nH*&hJȩJij,V/ohJ瀥KGB6v&66 }nlycu7& /dtykDX+h߽a~Xa~XO' #\Q|-PhX*pÂɿ{<4us% 8bVxqats_zlb@ tHT!fP,pYj(1H‰` Յ퍓>28 x-B=f֋'ڵ6f}ɚx  p OPyz]J/# K'M!Kx>1ɓɘ:O#4ciS'nVȈs'n}y_H<# Y{gpgg &BYV>єga.atYmD0+wa10o9Et^X\}خ|bP>uW-NW>N|}n}]A uXJ֙ĕ3ig[(rgDWΨn pf{cl|^U.+ԽX۹0cNz>ٷIs> p@mwmZ>h=j=\8+G~?GE#';Ws<ϡrln/D{<~?~z$ܼ<,_p[TvnkbKLBD_y]K/ShTz`CeЃC<J ` FgUVYG*n|}@ԓWmF#\. iP|j0W%\+$Z }L kX MtW_q.`9nRX v:L'X{} H mmхޒ0ՉY6۶g2i[D򽒬M R}MNiΧNwPN[5/\i?Q0{d:q^#TV~x39Xdt}1`(Э<Ȭ3 [\`~Ӻ0؜!׫.%a:B Bj഻Kݓ=W>Y=l6L4N,p}] w^UJ1ڔ`NN7)={UVn .${$LLߍò09kfayIt^ΔW]8*.D7@\Q.=F~\V+e2}L1J[>cʵIe;ns<`vu Wf`Շc.rk}lk ~V]1 \ta0|#Sgyl£O`2n Džy i%.K8009rr`'cT[ vجO"Л<&ˆ[P݇ĈʏY8e_7݀A4Ӗ_\8– ">(g"3MkcCx0&H7AYyUz,irSi1'g ` 2k!H|=k @l/$o+Ð/Bb\Yf^gnW?*WD+qo\imJF႞S`dPppdnJ*!x1mMsT˓8.wiC*\ t2fˤAWᢷ  N ] c[ i>up<’2Mqviқ:q5zkS(jˋ { EZ.O%$՛YlŞ l#b[N[-O GYM!Wmz,FQi| pz]CԕC'% +Էr20/z1*dxnMF8V[F#(l TN`L1n_sF $ @q-s닧^VVN'Lt 9 cso8grdvzApX[l/Dw3+J'wb@rt:>&׋G/H!W NA3.5uV`kD:BF~CU"/PTXTg81`%R;,-pR:P9uN{՝.Mrz=be#WC|X"՗xC%|X&dN) Np(>JϤ71,kPÄEhF#{ 92gU#ГK5Y3ot.fy"Z(EÞYY!fh'9Z:jOLc[ .zh(״1͒1nLwaGFKV_fR:Miu19g=|hx88o%9=3o<z P~ CēP {;&XqiW89{q[#@ qϜ?$ 1ǴkP~jR#e{qr` YD(2?RH Zx#`l|f䏮5hR~qK#pRTs~=f{8$Yw?0m\@>t|Нݛ9q45[4[/_:JTC+>'w?YnP4_Co9^db*==<* 81GX n*8ӟCB݊ eVW&]BE$8IF'^FMN[ F! @-Wyx9G+7Ásbl`٥b#Hf* F,޾հ/:|%}WB-qst@͐Ms7y0̻vsX u{nr/֡G&=ˡ͈kٺMvz៬WM>c%U_xaPf/Ɩ8HYK_}`0xT")5 @hb/f5G(,1䔇X8w&pӺ^_,( =Dה&R:Ŏ1`j>CꚎsͶ0X+WˆYcC6nޜ,]KcImj7ՖzQh-Ic=L5=X| ]iaҡcBqiU}^'C 8t&g3dɩb;l-Ab5?_zz  ҹjg|puJpsEI|lPݠ91A14bV! ET e~<{gL:@ms_jcBUκxd7(ovkϠ}YHXmŘEŋEp^r0S'wi!kRkM1Ɠ6Q@.B2G?('/o:P/J{_վs9輴tft"8.29C;!"=.(6^-T[^bQœ<;aahLWpߋu@y~S|P%5j ;&qQ1_ *:ЭW`XiG9[wb_^Dd/kè~06"8vZ2>~ҚoFDVyEFK|_O.)q+`C9qkC~?D4Hw)iZ)rz׿ôÅf6Ы@EdUίtx!62k{:^k Oq/ }9?*wwP |}XVJw{(/J^W+W|˜U~C/, DT5bX"Й"#@襍ow#iHtz AI/A<>ݏEc|"v |o5s>OFE֧ ;TK1Y\gdcD:ܹ`xsN#DQ15ab@"aҘ%VQ/H#~cPW*;Y VPbOPm ժ3M''RbsHPhf%o'ebNN ˿(3+cfX{b*P7ƑeȠ$P 1(HӋ|Դ^2X¢RIi$ G/Ud?ZEFUي{)(Bǀ ,HcRALUq؈h,e@g* IP*'¬æ:T*2b7ҐHm~^k-ǝy3ksևLfe ĽSLe+e)q\Գ[" k2^PE ŹFvYZc<@ IDo e0|6I ӗqd}G8f-b |@9 OgXBAf'"@%(bd춋:,d -A@I(qTq`rXwHu񿊫"ϭf3;Uп(1T%,s\OЂ͐\QE$L  ҆ ?eX-&ˬc<^}*h_3$,_Xvv60P<ɂjљPĕ6Ŵ6 gjQ`'\\K<ƥYU@t%k[ ,CSNGzr*A<üi]kƒ}N5Bu(n(Ɠ=HJjf]x6"a1 Jυ9 hqS/规_VX|Xf˸9hQUy32 %14+CVA(é4?OJPuNzlUڊ(%tUdӢQ%Jy \F<6GPʋ#W> ,dYqk(}Niň Ba< 6b}U-y>qYmu~8x ŨdMw9„>) ט|z d t_/J3P5y0&i,<_*$۽;@x.& z\⯜ŗl  c3c 1RU޶ e$6l"ߩhV{9̊\q%,Ȩ0K<^6 pm%b2lX=3٣Qp?߼ie #$ǧ|;Pg*]_v[Hq 뱜O0+߿X @%{Wgcڗ"C4Z2> bdKN]|&hMY!&BrR\kՍ5:AmR6s(϶4wxlBU:vWcZF_X"Ev cc2kC`>|"2{eGhÏُwoΞ6`oϛd&o߹ɺ}&'6Y?ɺMOm*Rb bKMG^,_O{1VwbXnO;+m;Ԟwb:_;4vbG{ډ{mpbb=xJ> VN`U .V!,lV]ӛr}@5 }φY^&bNYmŮ䦅5HJls.?wHjNm'&;1mNľNz߶beߊsۊ8X ڈk#/ֶ}ۉ:`ۉ]F}'vbK=u= [M|W߱s߱׶c_ٰٵaKc۰ձm56ly6l7lxް  7lu4 ٰ}/]DLOؙ.3ʾ;}ch^6e_l{34^5w6J iTJŖU)Wqֱ@7OP B-ò˱IFF>czb}̅r?JJ LE>ԤICOVDYN*)%H] wꔃT1sYOV@yl 9ypƲx"T@E#Gwɠғ9757#;(~`)pPHAk2m(s`hkx!ҩZX67[gyČd%ţf{7<ғd/V" \nUr:RLz Pը8Gt&0Dy քS  ^R16dHkxO×Y Ssw8*J'+áy9=V;b]&&іD͑EDr C&7p0nu KcCCHEOv9õ$r?n1`W٦[AK%?0iyUz`<ώ 8exha95TqfU]BԒQfV\@VP)H5a " ,;)7a¼^~O;0( /|TV'"XMdnsVic85ϵ(S(<͖ -08ǂ! tyVuGbSo>(?dCRaN GdHa0(!yx=#{&A5c)9{\llMB`2 !C|JY؞!So~Ze┮>U`gco>d{_;A>GCm/i}RhXQUO 1- a cYLLɼ5厤ǥ:t/V=Q ?;xߋ1Cb]->ExI=z5yKR{r;IW|H3͈ɬBxp`8h{'HIqpA^'zEr9Mjs0MU=3ZcPsBx=FJR->P-@0R4ܼ1x 7ʇ&POqN\Lv$soN>ƍzko4(Q(0۪|MxF]@ `h5c%- 3x0ؐ>K3YxU&o; \`&UgЫϤ!( BeF2hlx,#S7AԧCKd/n3Rqjgv*vxE\xID14g VmQldmEW&6SIqd&io01a3b57d+cJ&6%5=g ntOafauhB·3:ִnO WrΠ Ǔ8=p.|z+S1 \ʫVT%iz'?SIkv6K*ܴ2q9S9j[m2~>*KFX?- endstream endobj 3 0 obj 23257 endobj 4 0 obj <> stream x{W_bp !ɥ\44eLVSD"dMK.4Lk3teht/D.S)|Yoϭ39g=?Z3~}.Siaaaaaaaaaaaaaaaaaaaaaaaaa1OKK۶m|޽ӦMKOOOMM4hٳnݺ_:iU'''vڑH$11ݻw6,...Wԩ_>F%3gG!2駟OJJի5 oN^^Jk׮;wrb6mH>`K~'EEETCרQcQN,X@LRꫯ|׮] t|o6vؚ5kvЁQfΜRҥ q_qR^V-LzׯQIΝ{qljwR'-bK9yy|޽9V}0*:qH:99モo믗N:Fʑ:lfͦM;C999/lm۶)࿣ WwA@믿XYٳg3o[l;tIF?,}buzǎYb)߾}{Ν裏FxjəO<򸸸^{/R1޽{98LGnzݺu!+]^x!7ұ \{,?XoGUz.WeҤI@oCM+zȑ# P05 znYfW_}2W}/<5W\igϞ5jԊ+bͷrRTT$cƍ֭r4lؐ_z%,}ǭZ:/6SL)qWKJJڵkR_h+%\꡸٫W^5N;mQ:7իGAx_j.T@'lU]r'ZlYA5j(oФI{ϭ%UY=z[-k1ω8e.'Ov!ΐ >k!usLH233c=۷oRluQ/c] ELV_'᳆ vر]v7oht\p'AsE\K"'=,)σ_~Yyg{kvsE5m#K\~}|VV"5 ";;[+Rq`Ɍ=3~42`'SN9(L)Vڠe˖^y啑cá' )4` .)k&_oQ^݃<,_\@ R^K9ɣuw^w4?wygx8sN |Æ Zso۶-,[o2aڠL 8Ptꩧ VYb *X'qqѕfCa6<ʪv42W1T8khxD_psj뮻ꫯugΜ>va\Yf{Ϥ(aI>vZ׳3s't.?^. 6L IG$YX]Ido{#Li~Wգv,UW]&wMʉIL4M.a\'''Թ婧zl х%2Fj6|2ܜiGІX+ڳyIlDnKݲk0ZX!Henbϟ/ӵaR'4Zx[ZȈDcn?GӾRpg$yyyRNΝ|F*7"KG '[ӓO>8Xb̒@t_gްv!뗚ӧO 1ѩTӑVA}.at_~hdvCNՇ磻={ЬgiZhNceΠD@f͒{LJb<F>G@T+Ug2/Q9sH!d_~\BH]X 7+BtvMĄ?<3Rx)M ܨj wC#2Gn&j'gQ y)SHŰI8sq$9a\WR9+Jqq1\sbBBɰcRcII97Lu5zU6jՉ(nj#>s.2ҠAϽ`{zwB߿~J]Xp8+";ȿ+CN QȌ3'h[B)RH6{iy7O _S$fuQA qySpG혚H4Kv94%%%Ph@?}'?UXtG`=NO?l%#5 }h1M4 IMM堧OՎ%x2{*=}&ܰaѣ7ocNgZjqC \Hhbkժxh U;"|N\X5=NHHpΐ^!/[L6t~˖-Rkx_qXAiC4ncN܎b9ӥ%P\KSSBXv'ތ"wW(K λgnj/3 [gy^1kH1kW:ȸ9vf9!!+J`Zu"_xQ cլ HWGd}jjII QZD}y睷yf)c$%l#|_LO  O&GWHXuMٸ"u:@q3qɶիդ޽NޢE =y@;R/Zj[=..Gw„ }XƍU?X0ڵk@5k~3|p>Yèo߾VQWޠA> stream xzitǙ`U5q 77@AR$BQ}P껿Z<4LPtP蟝{1ảEzOlhХպqeYLwϟ_-̥fk\lC(8 k4/@3@O]phqk&-C̤7^GyPj_cBVhS憾6=r|*BMSt豹ϚAG`ҏ @ :}h2[^pz¢_*WTVUpSu?>@XZu_}xW_5~6Vj胼 ՛ڴ^eMVI [ך V^u\rk Xg( (׬{я: VRwmV|x{'QPX3)/#P̏'&\%dRzEhfF2J(.u\{OjeũZ%䯕8{+pX\ũXcr..($YY3|B?fqXfvd4K^sb6e. ; U8+5ת99) ̕'$w5!ʃlBɤQ*R[\O)7"HjJ )阁BjM%IHK6gd4Q/EC+S7Ph:M%eH&U,#Œ6(&dR 4Sje$!ft1Rv} 뜑5~WūW^[JL RɄ'E9:1JJ y5D5)$0)gYWS+EJҠi GeQk^˳xgƿf8FC2)֧ΫR* BdDJe GL`bm$K1tlB\'0`Ny6Q+[*r~|']АlahYXʄ" f`gYOWDYʶ`h"H9iV{#Jv_ [|,2Nd!@]L+ɧ?Vt&2T|o*h%}8L{I7 * d@^qm1frQфlbbl3K`r1q%#Q,(1_) <:+yӷ'hh0(wq0`&A)'IKbHwRokw)+)b*s=~OJ??. +?CAq 3غ l!8S)8al}P u GhSJJ4,rߘSqwRj2ZL@P\׉pbQ n~|emRk ;( `gI-kKBÞM",Cb7 ڞWn! H|u!#b( o]pZ2&Ր$[šmĐK(OјJ\׈Zw]S&c4 hKl5%uF;%+iS ÚxtIi.1Xqf,C}&Sy" -ŠrJj$–,DV 6%uM2HZF:^)]*dZ=kEf$j(5E YΩ8 #D%ATqK277>t͈́۰#(mƀDzXYH>ZLaS f krS7MSh"AZg/Jg7́Tv@-TܬDPp{Hn/.-MRq]xsRP` a3 8R Q 8#xba@AuxB{)x x {v0E@Ii'f(f)()Ҍ]~F0(tEC. ftQx˚.1*t֊A8ZgQ)* umՓf,+ qRSpZ)gwzXW@~A)=0SEW)EnzX_V@ LR H^3V}4Cd, dlp9kПNҡh%#K#1'5]x8A˻a/~2dKn4,i8`M E=G4\ Y@'ЀC[5/' [pPi}^kƻ*oe&71;nP1FM@&CZuXA)9 p)qgm>wX7y-ra FpcsҊHSs+pIhU$> U׏kh=a}]{{:4s?WA2MqH#}T@Iu@avA2dD<:w ~ik,nkEXOh-^X9MуLFDNT^8^3~ R:яZ<|q>%wJ\RB xPnt: +%hpPF"Mt߾usCI8ߙJI˳}g{7,_^2,|S7H TJ@>#Q;**%*E\Bĩ-`2+*Rp sO͎drw?cǙs﹫=z׎λ1Yփ=G<ȇ*PotM8 y-CkyNFTR:0Q<2PT/(p<")JQ @Z"X?<ЮK']U;1$K}v.ksduE|rP8Zakk(2%499A0MF=lئU(u[bqZV8΅o`#/FC?urͨQ8{A>ɥIF].'FŅRW`ͷȁԵ`"JDE `;vx莤"I-kv,ٟ2g#ђ\㹸-L/țUEK: p_έO+"ULwtSNէzxvs}<}_i㱏?5s]v+S 5E|^Pk6X? #jӡ"\ULȂ\CCemⶢ j'ʺ<]CgM&=hbَhg GpH(p&%'9iaT`QVRM^-k9+"H#쐄盞 =W=Z`>.^dW4 $!k,[!ǪaI;Nj? f^lޜqe$8}ЉVӐ] \P>p5q&7/ĴhHN#- a 51butޡ 1tL fOGJZ$%%R"qRՓ/V J /y0M w|EPs4XZk8 _)Ts`MaeQDV\gK c.R],a5WTVZ'[S-c;kz&FFFw.7wF'֍ O Ɲ՞ѝҝm+ٹ{txHAhQc>V,ZrB6q32{Xl 7|zo~hXԊ2(Ud&+]СCnlc>LGEm|шh؟䱚]$(%P並klhIli:}g/e^@C>֬eJPrɄ)шTyv<%Ժ-/ϖo0zMflk=wg0oۢ0y,uzB]J qY"CI!ŞU7HBh;RGJXwɕT9Ȁۅ[RK#'v׼CZowpiqTqejvnl^ҧw6n<'m , %6G̦< 6Wp hd J|>8K(m. ;X%NGӒ7g^|O:φ5;; k&r_XzPwB8vhYK>:4>0|IKJZsËsJNtCŭ`C D{=8̀nh.v{fQ*. p.ť-`KM k%;Z~WҞ]u&&Zئw_xwn?dwi.ץ0?1p~1lǏᷔHawhe G4ThKjcj19CƠѭTz=(Ү_9۵g&=j7{ ҽ)`7VV*e J3 ?;-é&9^<||!{@!z叼ՠ@Jκ]*幒պiW*`-QR'yƹم| QYed[8Ϗܵy; p3 4@H2z!Z"XuQiCvl71exԡ-@ 4H j%ax j}Ȁ ^yd%[=ߌO!'@v߆E3 ug!#+X!RV*7m$I4S(!? 1d梨Kp01XZ>~oRoR(*Քi5OhҼ~J>?-ս׿+0ooީ/彞А0\6|Lj;G7L3,}Oߌ CDB j~1*L 7~_9T~(*E8<|Au?zTQFamq=s|e" Vxi"hu|%)1xwP7 \S}7{3J:wFHf;Y0H0;8Ls0І9D.Ο0Qd{RfXf-9Ql$B\-JCkq-}CvkзR*rRm"b4tӘ"%g}Ѓ6w_o A&Em>:6{2NIrZ)v~:E=R;<1Ĩ8oi+G,|(A;#;ʨ?f^d9xc|03g&~v'"TfpQ8ihmEVע%?aޗ_ '2?f.5C> u9???DRߪh*u:$?Қ$߫N6 r8! … y>FW(2|PBޟَLmGJH2UgFsu>_#xF3wkI ,5/K A׵PwO endstream endobj 8 0 obj 8175 endobj 9 0 obj <> endobj 10 0 obj <> stream x]n0E .E !) ~Ā}N?@hG@, ߗw.]H$g璜|{a;E6C_1FCk;gy=>nZeϸv[C=d0k{}?Տ*Q?:_[{d=<,/1{edMmC;^|*F&cZY2t>Cu - i6ڊ_ tI5txyἃ~m Bo+-js%5Ξ155kMj M~MZ$*~:yACsPÏޤ|hzp:y>zЃIw p<zp`0P¿fC~'5oi_Jn'?C~~C&&~pZ`oQǒ߂Ӓ:,keM/O=5Tw!4:a^Y endstream endobj 11 0 obj <> endobj 12 0 obj <> endobj 13 0 obj << /Font 12 0 R /XObject<> /ProcSet[/PDF/Text/ImageC/ImageI/ImageB] >> endobj 1 0 obj <> endobj 14 0 obj <> endobj 15 0 obj < /Dest[1 0 R/XYZ 0 841.918 0]/Parent 14 0 R>> endobj 6 0 obj <> endobj 16 0 obj <> endobj 17 0 obj < /Producer /CreationDate(D:20241025160048+03'00')>> endobj xref 0 18 0000000000 65535 f 0000037617 00000 n 0000000019 00000 n 0000023347 00000 n 0000023369 00000 n 0000028064 00000 n 0000037930 00000 n 0000028085 00000 n 0000036345 00000 n 0000036366 00000 n 0000036562 00000 n 0000037106 00000 n 0000037484 00000 n 0000037517 00000 n 0000037749 00000 n 0000037805 00000 n 0000038004 00000 n 0000038140 00000 n trailer < <5A6312F54B286DDC8F521ED9F978238E> ] /DocChecksum /6E551614BD620EA1CDB48E91DCD5DE85 >> startxref 38311 %%EOF hardinfo2-hardinfo2-1331e88/tools/LICENSES/mbSVG.pdf000066400000000000000000001062671474767047500215750ustar00rootroot00000000000000%PDF-1.7 %äüöß 2 0 obj <> stream x}Keǒ|=nw&J24x 6.CguΑmL+nUE앑wvq?^jdw:^Zb('K)<ÿK/r?݋Nux;1ӻwB_$,B1~ py$u量2B1]$9JW+1T;PU 3Lnq M A$(P SC&D]jfrQ$*@oN0(Z#;$*!]K3jHJO]hB)="%0U;8λ^oM'NQ"xZgLCqN6˃uBbLevBs-N6WSTwf! FxB hHb! L!FLQGӼ"Ut{؎N@3#d|eef}`hX1;Qn \)P^X8` &11A1ee~c8>1@,9̀P.<)4R.B:uj0JfjۏCZA˜'#@VOGH/?/:oӜziG$e}i.oL]>s(Fݜ//|1$3%1aY3 L8>!lIf2zjj[0Э(ǎ`=wY@}4ȸ4D*>bL K,1ACR tP RDq2"+1a*"Eql|FHh(*IL =Mmapq9|0 йѽ<\\;-n¾GplΤ7!+Li-9M*gJuo!tus6J,FL#mBSԷ֟VS//yH5גkJXKS,zUI\|7D hfr"vvebhCd?Evg@dج'}~mf ߒ!VjymS9kU5ء 7) }7d896;'D^T8%u~QT"~HC܆yw{<4XJ?>6i7v gM%n)ӄ{SyHUTFW%H4)TMJbl5baCL^pD9Aұ䋭.+ax~iv ؾ2ÄO8R S+V^(78:x #:e* V!vJSV$bHEQ*iP%L^YX1#(=1>yïyKvl=5xSSɯj]9ʉC`3ԓDMΓ/r}zCO;Bd͗ٛzQ:ґdB0QIzi: ݯSխqs|[m?,ifV \ wvcoxW^lW.KNn"9%hM‘FX~^μ΄h "Np0P=\'tn?Z#|g_j]a9qJtb= ulΩ̴Ub))bJt0u*w4SwlpX[SXڟp.Y4^{3 W-\ԯsMm3fmk9c:_9W;Fi{4-i;ε6-+Znڱhh:!>@.61m1!V+:8Vڔs #m=7R[%^hVJp+ZĪmh֔y YX>RG4l8d#Ja "D@r'c c(PT T"<FS0w8qǨ[`#ߝ&E [/VBQc+SX4BvE<]70)AӬhjن}0ַ| NEVj|݈apIvP&/S tęRVdYRV*uh`KP/PQ#2Qa 0nဳgu9)N9MjiH8:G+@L#iB.F8%hUʐD=[Џz Bn4,#=1ӯQME_= C,6Ů4䈦=0ܾ1k2 a.?0@1H -. 9MFc&R23UQ\6xsAd0[p8uqKuDJN|$25Rn豋g^ڹ rV^zG^̲2+apl>}a0y1Z0hv+\"ݽ5 >&Z:&27c>b,C& 2f}Z<.HXR#@&2QQaEe%p"6Q yg epJ$ .PfJ$}IO"l(m(5ڕ!3s{vb~bהc@kHtp{Jͭn=j8> l``2z#AThq佉2H@*aY-=hq vx Rz g=Wh=2f~/V/#|lsm}c\0i#^%̈́ЈW>Qh%6xE  ƺy7O^\9mTt{Dtxʇ_ƭDk!Pҵ{(@#K^EefoSXx}cbȂ50tdžOh4uiV,#BlWlM/ ø`>$s>SXhrTfw:q4[  vOAjQ"a(p V=HBb%έ<29 1}4Z!k>gzmr0Q bPE=UdT6Jf[-U3mlppKnM=eU8c䘘aҐ3j}Z`9x0WPX[Bx v6RU׊h4ݍ/L_ke8Rס(*u,rl0ε/L5(RQQ"64UR8F 7kvrQ> %BgASZH<3abքMW4ۑ?0x+tp𥈍/\*U-3o5(\)":{L``V90'W1m^:h4!vP5ڨ_im0NCύ/d6ɹo _D:v |,.V|5F~~qinV`յW,zym_75i-ڴA{lecTY"Olٌаbj*;hS] g+#iЪFzfhE;ʌl'QZ6(aMՕURvV1Mc 5,AljKƨZsZ9\]Xut5mXcH? mecT [|]5wb|iև%Xnh"׆1Jq4lk\ՕWepj\tt}P5+fcS0FU0Qdָue"'fmb tpsmBi "j Rp~ .Z6})r4''50ِ"I'zy].dO_i0B/KPu(mrQ ƥ9ZMPPp!xϿ0.Yxڌ7&3mM oʼS0XêB<E6O . (}g+4.#5y\ D+qG^֌p3T/@^x >5s_F$1"_'tGvqXaʺ0Pjxln-tV,{#u;/ki (qc^mVw$6v6%06ulWynS0EcqvNW;9ͺݺqvFA;û¿0U7TanWs*/u 83Oq"~,YS`,:^X4 g!l9ƘrɆx~;V0ʙPνY/Ep-vo*P ܝV^y"aA@DL`0YX!*`,@Dl`‡z!@0X?f.%1!,lЦhBJۅ?%>b7 e <5QOݒ d:J›p cRWN'2e-H* _0F`bΡ꩜!X5k>0Y@Po rRḹ &Tm _0)lƁ|d!:갅¾0.Y)> cd( LK>/l ctZ+Kg\#i>62 ZH* gjmD͵qj4vrr8c3"F2(:M]5ZmY%8󝠌\9GtXj (gOwwi]ٙsynތ3#eNA ES&P 1adUq+:~!0b[e\4! JaC g*ŻՁ*ډ >ҹ `J:W!9T0 w>lX`BUygC=r0 F.t!TrɚUqWФ|# v1LDi=E9&ڛau(I󈃓X3 J2`t[N>Ijcn&:qΜg?nq4X9ObX_qdZ}#Z eDg!lRdkHjewAbA zZ/b Fas([FؾHjbVjߩ6Jj_{cԇ0kJ-o3+b:5Fr)gI/'m˯M~Ÿt {'>l,O1(`+j|cH99FYB Vw6m,VKqXqec-j}pgw+bI V|ңG;試ɦhrM5WS9}3S1d}a+(ӛ^C훦ι$3C9˫u&l+V˥$XXIMO1twUO8> />'s&g2(M)|9$y!&b6`ηFo*IMz/9M-A``-'\_$u.3')0J-'$>,R+}|p`ǒ]c2D4 Qs}*[Ys;qD#V bŨ,lw/9Mr}ԃ{'`5mX%*b\& &3U&M3cV[PP76젶#KgR\KqY£6hx3l}}g|lEN՗CE$nI8myy1NIrza/%~{*6|uLm>j Ή3/c)Zlعڻc^0||>onjcILRyE쒜s#?2?7F^Kmt.})b V*_8*nBlQ̦=:)0\MA1AJ3r6򪊍ar:Fi2ܷc(R+*WXɗNJ0q]fި+yy:W+:޺~gS j 㪱B +Pr&TcB5:W'qKj.tbqu8`F+8|W#kZ1WvFyq i\<?{:/y]}G/t>l{=m?#^_8#cS>"' Z?VZƼmQc^1+qyYߨ b#e6*<,R ;W?'mR*¥K5^Dh\e &cB[!'~r5~7q8͑[)^u+@lJ0'ۓg'q}ǜI:0Wn gspͻ+i,VJ15<^{9FHS&;džIw0usYIoC}uel!Em^* f`LC^D o4!tWP?bS3韨1Y6'C5k1Vē|a_}_}Kw_dK㦲+t(L^)^9r ;!o6 ȓC=],ކI>)^1AhjLC>y򕣿%Y،_f03O}*,i@}N BkIxrrQ̂4GyV+)YWTmAvʀw+~fazSzWԮل݋&Y?tѬ8of su/n'\?  '*vnG^:̩6D5^ɛFkQnq3{ߒZr6܋9? G]{J( 6?;Ky}` D>95+9;pewZt#ӎWp01Ad@6>n!@? ~^ =c6~{QIW7N302D6QVPZ1rk /cE Q"pMޚO *yDp p[{iOipq͛}}C!C}{{8}"H {YŏG ŒJb1hE[>&iE;?@~KZ '#yy[yOעqdWu.B$olY"A7r"?s|C֍/8"?1ﰾ)%7`j^9c҇''NܯА>yXmԻ(g$a+Îw*an+`dTdqW| KLRMI83O'I^rtql IH_x}J_` zyhտu#m: A*-Ep288r+{{veVr{:]!/+ܐ=CmSAzf~^iɩ˼Vv7̙-ʴ*\~WX n5ꛒM=ai#G3/ثL C/2zք+c3[f7Vٖז |qH&RG?ƻuvd۲91OEޖ<$͊76~!MT@Uf2އfx+QZ8gzK݀!pM)fOִ`fCލn c2T]yNPv&)}S#E6E ?*i gwnbC+S^1)1/TUNTUxPI辽 qګ௟[=>+x_`ӼßWW[Y[$g[ӯO)ok;^+/vl |XʮWomoὯ~u.kjd4 I|-m+Ĉ+ p&t*G1iHq#<^D0IOlCT[+9+`i5Jz5ɱ A-}HkZȺ.p59>2Tt^ä"IqT!Nj1 !I {\;\V:/H]n ':؁gLժX<ft/%]$ ν8K>mC$4yʴ3_b8fw^*ѢKR6҈5^FmeM9TH^dᩚr id,O(rڽ{21 GbNp5b`>0HF(Zu5[} 5i4V.Fî,]޼ov KQ$nov(:zyrd9 _ Ո|{B%?6&ZBFe~꒺W2 a7+QMySIE ޾ȼSQ+\XYE)ootHX{R]| 5hjwcGҕ j^^EKKׯ[jy#Cc |obdj(+u &xn:?<a-txq'E`=uC۾']}a]0Kumhbǂ[xٖ]չ7$Mrj0cJ`׶ΏJ648R٘3w Jx1̸a̻ls380\vv$0(\%ܝws {H\QNIcr0X1Z=1Tǒ=c2.}"cg3:R=`JG@)r]flvXNL}F)u:yAf+MDN= }Z( =4)1!4-څ-}a4 fox0Q͡Bs9=Ru>ZrV=n|i?`$'X^dd2gxJwMqQ^^2r/C28V{ =n,̱ $ $42鋮L@&?0_VrS-x\.l]e􎓦O@D6XֶadSCx0 3nRh @lz'zxM4ouV(x4 )TLsIRBIӆ̭Msͨn.rr+>4 `2W@aUyE=DvqV )ObY d>G%$_>'4_ZA}6?g|c(&Z {Ԓ&8${ a 1Lj0G3xC3 vɫ*+a)\ٯHaE:n9pde A2UVZ]mF>` pDcvA2l{ l/1B=8$JD;o?45K٢q`U/t{_![N!}߇a*x̸*%{VXYJ#:O:|;R_dDR/tޣ8t"Xepd{>-~׌K-&]B=x3t7;|o7]f YW\R׺v==;,^p* ӈU08oW2yE;Oߌ|#hr(q~>]<ȧosCע Aq0Gr_;l/yp&8^bb`.HJjR< rWp{M[mkƒV gR);yOHNq;cZwp_I.VGOneR><؆ ޕl!gd`O6S 6ɐeC&6qWDZJ~98#Uժrr0iߍkF|v;8:ˆ[x%(rۙgBmIs/m n* @ LOT9_ɒJ7?-ǁXMJ|bMxeDM^-(bN`͚I阎]nj'PH:@lo!}|9\PP`%gqCvHA&p0l5:7ႄZ,e Dfu[kX8ŗ'5Id.^]R|5ȕc0nuz+]`C!: {; Z6q>@˸#%`[o_nC`\,,jɣ)bm8ryh~+pip1x;,Iw8Mc"{#guɘ0Iˮ4yԇ'"Jnj늜ed| ou}@[8^@A%"KZ0z[C.Z gp^M5H 5Dqxof!`w=>d;[,^9.!` ?8h(6PQe'oןBv# OpHs.`ب)@X[ R>ӈ5ZJLj{GN7>ۙS2d8@N9dr0bnq_Ө=#d8`ݰ?\2Mnt3+d5XBT83,! )6 szI ,Eo5-@%݀խ%'kyƅB"#& آMcJ,%N9J: jcX-!7KMcs28s;,N\.;)µMmJimNլ RUY hmf849Q+|9# d |C Naǭk;Ωƒކn^&S_tjux*9@A٨p t{[\4f-.SEeD/DL@$w@UL ~W=*qaEwhl_fpF 4rܰiǰU|>O "̖ʴhB#vsI:H`h/ v[-aO~ ]6Q9 P9DX'݉腩K2t$;C4m3ً-=/1jp?9wK4,Q@K `^E+7&fZ4仰D:mDD3ǺM4>tu&Myji4O$<1鼯ZiXygx4o=Yˉ5zyd37M΅6mL ɤ?m2>5e2i2ɻQ>;lj_Iu6ij&YjPhѦ&9tƓ{F gG5ߞM*vtutjI'_`?M:9G9>+KM9:M9urnuL8t 3M?bjyćayiyiyiCDYNTSnƼ˼nuSkRCؼnruыKYIGX%DEn/k_Ͱ/~]BYwWòn'sX(H~RPYv%Uay۾kTO=}` `\^䐻ΆQ!wqq8JY[:K.S1?tْu?,{Yɷ.٬d7S 9YdI0$G I#ؑ `F%"0BV/ 珴^U]y$O8E83O0e4pZdɅӡY;[9ZMPԀY| r %p_fw˓?Cɞ?"hj: :yByɚ 4Qd=3 y߶.*mGh)Ce}{ :"&U>5xiGD "_>,m4`99t`zf8-ͪPh|N Iy:GI&T^0?8"udկNV=Б# |M@$B30RT!î16U=.iv\Scˋo{9*$w-)a, a6 ~0Ǝ$cc>NM 7[1HIPND69ˎKuq`S' gvrX!=DM+1"'3?Sj9I͝[%yR8m+#//$k<>"^{m`/.0gDlгZgYr͸ /,g Ipr吔> stream xzyp[Ǚgw@Gq/I<$(I)KhaɲؖCOqִ݉S恊=r&CI&٪92J*M&exrs_ww(ObrH$66!䛄вsʆmXoSM"b+<{eG3!SB8) ȹL]R75=wrXSOLg.ϴ@_98z1|VeBB |~fvb浒Ccbfgl2[E%RYr{**j6*Z'?̒YvVKȲ}o,e;VMK\ Xp:2JY-žA* 2Aϗ_YH7gtcxv]q:Ti[[e̳oWO$(>~B_p$yTp01-+1HJ# g H iJTXc!էšRH.Oh΄Ndz<XȌk%hj]hZƗԉ9U#ɉԒ2ҤJ$~;0ʸ}yXGhIwW3&}OMٻTa ŀuq+R:68jSf>1cчɄ,`l OTRMR;Ĝ`%YBZA"Dnf+j\N,a pnmK&'NAS%#- -H7[qzG*֩ XH@һfQDS`2%Lfz-JgVUĻ*ENI1zWĥ,cx'C@U4 ivA.!Pag͑H+ iEs@ma,40=:dB֜Ɂׇq/eIY`2[Vh&9V|_9!\ε j!oU:[?mvm#m$t m aۊG aRalsHk jMB>T3]*O˥o͛8k3rZ&M")r)k~8m!]pj:N{D>>Nܟtv+F]\<K+u"/±ǀ&"nQyJjw/,!I|Ⱥ8(uC[ܚh2ҩ_eI\+J'"t/hJDx[<'ȊIޑTgB$mUPҚ9pMlJr"=j&/4t^kjl /N0!vl9Ռ$cpPE΄3!Ȥ{P0j Pm+SZS܊WTȅ5dDƁι7Ηa GoE7üݰ]~Nysyn&!D4O"9řt"fZݹnv;n6еmE"m {Bx>hX+D5AE"|"<~_([&Q^ey[EZ/g?`^+^ iVT*pajh=3>rܩu iZ셺>ym Ck{ -`##`p !Áá;ȅ @I@T@xC8>t ߳@Ɂ ߓ'8sLp8||qC8tFš/M 8tNšqgDO|TwJ8zp8s:q5p.bDO|菁pU95w 'ПA~C9@r Gx;V=%zi7u?Gt#, Gx6T$*[]ԋK`*ԬT7|9XQe~ۦD,1;& &2 $Mr̞`s}qmڞ# M TWA5ɒDE2<8VIj s9TGԉm[GG*g^,|;oT|5>>#}ï${v"%lU`{!kelIjm muMhkG{[@5_ܵ{r7ۻ=b|,GY5{TXl2YAeD$,=e',_kF`Г`a/)IAkGˬP;;Kui[eSز7?jzan&e}>qXDAl~iEJE:p:&7,7[\ mЀďMZ5Қ:LD6N}ùelb:w $W 1Lt ]A,פ %*φ v[n+@XQS &蓹WXCԎv 7C[Y胗vr_(wnv 5 á`Sf9Pޘ8tQG/{5ZOQV"Tŏefvzlvxwrv̖&ִ=7v;jw~7fs_ڵǾ29XxI\* wd3fN!̒4b5YfzcuE$c{rC5%:!.w[`CWK:;hwt8a,]v97?AVzv{Da0:oWWg's/ 5L> KcS{5n&+y(hCD(:'^ǧ7@d245/YI<7%e6HsDP{{TWC=LWdot$Xڲ[ ]#m<6]ڽ><*+Mo}4H,E UL/%az  ]m8X>"\<5.tGW{CtMt m Fz{rG9}-}-3U J Tu |r,L_# YI$ وmA*RY{g}?8zĜGؕy!r'6?YQ-ב[wq}-MJ2$ɓV#¡q н?³|(\>^P|W mTf}]=FSZ7VvT)q-T'>Jo~k<) EVzÌ  C'rt0=|P}С\kQCļECR R v vv{aKQ/.3'E#{UGOEsZO}/!Pr  j]RW*gXonS[[պ|K2GB @ |Ӑ,y]'urNH"anݯ ɧw~xoߓΞK/\ $w ~w'i5ULO)"07bJbg1"Zd1EBӣ; O]yoz[cޥ{S|Obb^eBTL 1'7!eY;f[eWﳨ(iۘemw~cM&Gko= ]om/!k\Pݽ|~Jmw@Zb}{?y'kz?d?~\Ӫ_烇gp ]y ˨5 ЦQ>K)q:J=vOI1wwb6B-NUB4@?>[#2{l=uZ9-ѠqVI_/^V;?:qHQ(~bEzdY{tW|=#Y-(,үxl+S^* 54E9<}};fqy.039EȞXJ}|iY8^1u2r8 -9!TCe_s"qlj /!?>qR>#t\Pˎ yy+| 741ekfR1b"rJA+R#rkQK[ Sm_cg7jdg^W3]_W35S`]MNE76l K[ۣq豖p.RUU.n {8psp }4$9.9ΐ0]"bH#0za hG +dT &SOE #tds_šC"9"}L]x^N7 ۘ \K?I,|_HNWOBgWX3{MRI^o_d6ՙMLḲ',5˔ Vzu P/m(?b+ƜgQ*~S+)*7 +K|ۀeRM&2J L[H]0`+iopi bEd;aŤl#G YfVK Bfi2jm9ҴQ(F&kBy<1̣,~1҄g9< V'=gP< ;m`IЛxNi ?V;Kuܷ(J>xkӹ bnRA'nz8Q |wsؓ:$<&3izm̓SnQa3>p΁JF𜷅wb PwOջa>7#pR\G!$4޻WY}W="B' dD7}nP5#"/"8G$s)x\ 4>>*x<; -Nv -{JPSDfX:yAopMyd 'tn >wFYJKiTw,cşz::6HHs!iCbuemr\o),4&?n~| gFs/2ϛ1_:&S.]~J?eiLzzn endstream endobj 6 0 obj 6769 endobj 7 0 obj <> endobj 8 0 obj <> stream x]n0 xDfr?BO"_S+7t^?*O, y'fw?!f+B.>?O[nk)jb%oOY}eq endstream endobj 9 0 obj <> endobj 10 0 obj <> stream xzip\y`wco"M H38 (SeJ2I1)+:Zo谳h+U˪RJwW~ RTvnf Vgm /&[¹ӗ֤w5J2/\jyv69SQ{4K:#~ًkWfs? >sai:u; T]sWWCIKɋ*յ_l#Rw18+g1 3(>xA鳲s Fb͵|OAaQ%eU@u@߃Ӄzm Oom r)@UNӋzI+vlrOGEp~g4!xIysHƷ*11ݡ1•Əg3&)CC0lBR zRKk)C1 XF$:MF 5&CZ tL>NV,ۙ\Q'R LJ˟.G[m GRemˁ?Vh[6ZXwBQRp ڀRWjhSN64.r IUAP\A8Q8 nq]ۏͩz젼6<Ϧ%\4jBÞ",R ڞ. bH D]H; C x -e@%' ʒԺ {G~(G2ؒ1%<K͗ eBL(b^wMhf%>*LѤtIiN1Xqf(;Cd5D@p߮#%IwChBQL b:3dNJxdGU VHzmPtiPR]T%~kڒCI4-pe90ď bƆs筈C;=76jcQAAVt0}OBQY*;l5%&ˊ)O4؋7?#n&C5n *0 aMi/J-uBHk @ Zp0P'C` 099Aq888Iq(0 0 P ̠x6VRNQq^\EȅCP BKdv"fx;12)~|ҕ>QtXekjlăf٘c,6Uvc|qanLHS0\Q1BE(@nF҇uQR%G<' <"9[/ ȅ]zu:C(]>Q-+% 鯒Phro|#zԤ-?zZj1tr`O"W!JJIām3W»F;"񮮮67z!{wݾڞ3M&Ω񜫂x@[6fE/iP@HڬNNf!5&ÿ<ǟ>/LBxmįIwe6j;An!7 09"A6n~ #x#rحV)9d+Co2U]~j. 7W+wjPg_%S:;m+;wOf<}tȥ=h-EZ vS¹C`wQ% Ȫ:9P=xqMMj) Ter5vMa2" 8d-'K 2?Ի`A_dh٦Kj%[n凖}ic=ٺw5):L+y32{!༈h{뭉}yM26d8 ɔq|?tG@;U- $,,'Z& 8еt4Pwexڲ=<9!'Vr>8`2m`# Y l1a?.t:l6a3=VYz,VXw$+OYȣ5 YD(eϴ}O&&Nl.K3w+Ϟu-GeC2^%?Ɍf\@)/ jݫM_wVt&q!6# CK[&~o.Kb-F~),B1}>XNm{љ׊dXt&h48YJ>Jezw* =. j G/f_8+ C7SccGh)7Z{L '?fT~lUֻ\31JMWf{M-a# +-(ng Y4[矮ON/;]Ugd7f&у-8 %&"2qa2P*Yhw$&2:Ok\]X\UhIHl߽݊Pv+BER0=!C<2}JaHXwX.|+[ms 3߉sjfZɆYfSN߬8Dm'YwL5-7ϔ9B:\7Ew^ֿ}>o鋊_(O~ޝrmN.O0"DG[9>X=2D*~D@I%bT@ 5?3˷sC5 kz/w 7.]__>G|]wto>c秧ƒI5>:n :Z$-B+֦S5VcKuEcBe Z,]@1dŅv[A_Wla ڽd蕸~./-+i,-**-Z-U s,l\#3Xњb䴛 Z3B4po~ڵі7{Hw7^̦,_xLU vW?̵}dJJe흌f}drjϞZsvʥPGpϭW־=ͯ>w͝`:c5[ HPu#9}|H{G5 kM]g=QߣMxpY٬fe4dg vcn0X+hU[^yf͹cC#jcM\srg ВCkZi_gQM{+l\ !x8^P @Ѕy ("x慥[ݷՇ^]sK/>o>/@u裊! Nz罬z ^U&##6bAuc|(4`=a^w@ӁDS[8qnt!=hv cgCdu?)UՆOl8 <'즺g=/Y҄u8:3KrmpP);:$Iמ&3B)g1F;IŜnהvTk _8|Ss3p[iCUt?Wvq{ n GlJibQh#:0u wc m'k'jz(xbTpPK`@6E,mCptmdӧi3~mm`c}'l⡿<He⵽/K+TՂeRV2/B^OW^㱲ʚ3kM_ =82\rDjfSx=*]ّ?\A+<5L]K򬹚HYuTM:<0z饗z{9p,q!6ja?J!+ ~5C[`mwjb l^XW.w|2~;]7](z!=rΎǴWPl,?27u6SnbƃOS\چ:F,\+)I~{3_|nbΝ= !")9ctVa~yL.SCQp#Ot{MӍ?ܶ.u|u/?(FI MTaD5% QAM\.!((CA2cOq菒R= :븉#36C8 9dPP7VTG p"|><*ȣeMI. 8>/8  Oѧ `Js\.=ǽϏ"T1EBZBWod5g=;Y-;ݗ}3ٟr.l6 ScݘФY<zb2Iv35^ SzM i0{#"4XKGU48 dfl 5؀ZI,#U؄zs%LT.(ZBPC4d IDHhFf5Hh4mCО 칊xagPV-08EVa5^DհjΘE*s,;g=V PBuAxʬʬgJ`sQ-;Gb|:,dQ3|'7L埦jQd'@;xy%xa-[ LS\ּONal|uv<2Ȩ-yWã\.K0:hcm1),2Jgw=E&ccI,b]Ix!mILbZ<`FᚦCueQ_п Yo0~&`SH ^|::{lTņWIRw\M >%^<{6r6iJ+D }úa0n5#!QS%~2F3 CONd&_5..i%MR6Uo()o 3PӷOI endstream endobj 11 0 obj 7770 endobj 12 0 obj <> endobj 13 0 obj <> stream x]ͮ0<+Fs#e5@Igm.@ac[e};:Lݼ)Sy.z}Odz_c֧47fUdMzIu>ӗsz=x)_sZ{6\}.F&Z1|~1Zm6.Em e1AqzEPk-ٱz:Θ75t!.__&}['YaxMkzpCЋ=-4=X'ߦzoDMx@ =lB/wC lk_'F_J}O- k,`+S?ani=bL,H<M,y~(% endstream endobj 14 0 obj <> endobj 15 0 obj <> endobj 16 0 obj << /Font 15 0 R /ProcSet[/PDF/Text] >> endobj 1 0 obj <> endobj 17 0 obj <> endobj 18 0 obj < /Dest[1 0 R/XYZ 0 841.974 0]/Parent 17 0 R>> endobj 4 0 obj <> endobj 19 0 obj <> endobj 20 0 obj < /Producer /CreationDate(D:20241024012634+03'00')>> endobj xref 0 21 0000000000 65535 f 0000034705 00000 n 0000000019 00000 n 0000017781 00000 n 0000035018 00000 n 0000017803 00000 n 0000024657 00000 n 0000024678 00000 n 0000024874 00000 n 0000025337 00000 n 0000025649 00000 n 0000033506 00000 n 0000033528 00000 n 0000033729 00000 n 0000034249 00000 n 0000034607 00000 n 0000034649 00000 n 0000034837 00000 n 0000034893 00000 n 0000035092 00000 n 0000035228 00000 n trailer < ] /DocChecksum /BE3D365A69CB253FE4B6DC90608A2223 >> startxref 35399 %%EOF hardinfo2-hardinfo2-1331e88/tools/LICENSES/media-floppySVG.pdf000066400000000000000000001122221474767047500235510ustar00rootroot00000000000000%PDF-1.7 %äüöß 2 0 obj <> stream xˎm%8?_"rM HP Aѣ@o2{\k} )U#O!kv|aIszǿ\/W/m՟5^fM?Ϲ^<> qyk4_=sM_c֒_ٿjJ]ses-mח"]N8_KN/0R/r!<? fA,;A"*yO`_us4`Y,֦kz&7x|y7mFQϘ7ܮzfҳсޘ_,L{p@νe%1kgח(bihnFb@ip'h=nوRZwycnڈk9ľX 6N-kf9?`a|N>緇`tr:;M I%@z{kͫ,H`\8!uwҦEylG?_`}?MV"J{-8muյ??6Xb}Sz6G,mlpP$Zo[Ȣj} nP~^`/mDpV\~NM ѣ'(lp&psvuiq&oCI'CD<ft|R4p/<F-19܁K&0bR!8й# [\@sfgkWR pZ{qb52LUm^jbӦq|"M`j{9`2T۽j llF>InmMUd OL4f^B`47^ߍur̜6}{+ЯP6O=؍Ϛ`9l_)DLmJ~.`m0>:a،hmi]@MϪjǙna6!!Qj"%M!d\MD \3JWb]d\EAH} E'28h֧y3ͷZ ,5&n`l^tҚRddaRD6:y4􆡿@B!p5 f2;֐Qg-K7 6!)T[)ͦ ^1E-xb.z[.C?AS҈md-2TrSk|-r yи+gcmm(+ϚF3И*n粹=U6mѩ%m.]&wLť^]j&nOuI"kf*̗h[ oTouFl;H2_~"mEMy[f>β|uY&=ֵލ6#k^\C%²u/sӶs+å|nZJhl;u~\b2Y0ilը[K Jp!bEz^YJlL*ؠ \oD1QG2doP8%/bo%n8CCOxбУ>m$zL'U6T6A/M:R5yb/a)5 ߴW# J6H`yvǘuݵl u! ܶJ\ΛpFa9Ivq[Ja(A%CڈJBfy\A0PEC&֪YBnvG|#J+* <tn#ͧ݊oPk W ɖYs7pC%]LU I]U^'ow}9zgȜK8 }@T+ N۪oG,hk#N:9 .ͰWer4c6u+NQ#v6 9AmlórYE[35wB_;-(9s'bsSb8r8^[ ˜4=nw F~qƭɉhS>`(a@Bat~L^)@o\M"S.9V}|5L 93;<_٪s5 1W½hRMbd?Ym?'tzCm!NkPm>m{pb-8(65ֺ Iٲo{+U9MT /7A[x >cz 7 Ӎ&5WAPf/h'm;zJ ]S/yut*>l )P#$~r׾Ѹu`Cs^;+_]L1RW%Wo;}e ɚaZMɘݻ9;._ BVooy*ίK3lgݳ{/{ڽ͗ηr m:6~ڙs[eOMmA4wĞzgI?ۈάؤ9=r߷kJa_ 4l2ng󷷕.xzK'qoRF$naA 84uC DMmyuzCJ{)S漻OM ۧ){(23۳D}O1oTC|e1HVl|I6 j OpX"C^\Pg | i)7>nŜ =cӍ%gm؝ dl!&p!\Ȣ;BE8f"n3u`t0dradtbDvU-XbW}A\q^5rkg:9xUnhxq;*}Ve/}Vm_2,for<w iAB{pͻ <^HL_O>{C` .݌m5~(yڵ[`j?lRJQ鼳1! RLDa_cS[1.Sk1017ӌ1wӜA0A?ӾA_αa^cLU|ͫ1ұhn\ ݶ:9mBV0!O˛75dև2vzz%kw]\7k+k7w\2P\ú:8khi\z>̫w$rΒ|պ¹M7ڎls*q*{WMNe&t5mrޮ&؟M~6K[o-A7 y#4m^fL0~/tשW.3`Em\4\LTES0IK0m=N>1s.<0b<Ծ,\]+bHїO `BKu5`DA0_= vBʼn-&tD{,:ݘ3E .[,wn KD 9i4xjgm@ږH>1mm&8L>,9p01}r<7)8D]8HN GۤeA)^)ٶŘLM}D&̇x67!Uc,OzqRRg-bh^ƍvoqo:]g gM^F7k5tl|cZ[,b"5n[ bX!!\ _4i>BmX!6jS> lޡ@.brAFQF{Wb8G =iEj'TsƃˍGC;?=-EyF?6iKY߶!OKWkz?Lև0Y&d}BlnInw"W/76/R4OiqKs@=_, <¡$J@T)f̠q-¸fjS>@>(ḳBb0_j╈\Rsqyg8Sh  g66{L6}P0UL7 =qp]˩}@30`ք|r}fFnĨ2_7uFq1/uMf Nn2/jpW:)nfzs,P8YZjk-7gq3[x΄-}ƴNcC1czhNn5y z{&:<'3O@N<:r##`ᱱV!6fQ"=3 Dp/.Ɲ7b 6$&Byq\e0sJ- Ń~>sO{DZozvT`Q }Vx8؎'CA;1&D1U.0# ڜc!FX[)k }7ѦMMŸbb&̍27egR 9!wNe>o8EX%b"`kpd1GJIwYA%fDpn*GI CNbl!7Å pB3Nqݾd9!~Č% y%`Byɜ62$Y6rvt1w̱3 4i}fQ9;}^G|.0N(9#ˤeXf_c}}8h> ۸h0Әq8hInH ѸK׹BS?IO @wx쁇 g<jz^ ܸanb1^qxώe&z{0_OILGQ X`ޥ玘2@8ܗr~?7!e,2@ʴޏQ͆MC\R&]!R!LGN;hM[zG}T6hg|yˎSevD)wɼ-MmuC!7_.&_!Ɓ7_.&JDE>$Dd}Gco;拟gI-N!|)لs`~zv }]o6e7; }.X7{p`k@o8Q=DrQK4#H=NE;3Cb(Nza8p.~j3]СG.9r03@i>oJU:mԱ)ncj3m^mWlu)uһ;oV?t|Ga;3.h|~%!z%/[|$E%Iwr|A@|3ρ`JJ\ ⿑ lblh5Wr)"2Zّaa]ZVܛ=HpHC"lT5=G$*B^F?AIȘSUjlKCڶ!<0*r8^ x< *b(psLu3 J }d[s*uV rԺͩ*)KL,aTJJq*/XvGq@ܚ84ps֪876&47v%V=M~n}1iy}-dgZ̐>9FŨ뭘WL<3G9a`֠\Bnf#i>SgZXi}ntˏPuެ$!t}m(w3 x0)Ώ٘cZcT)8!'DgH!^.mɢ7h=,L}Ħ |J>g#N3N3BNRSPFq_$SodlE]54pjYxնuY7gA<>߰P>lЇ A6}ؠ7X]z "w|lҲ>)\#U 0Uπav(7 `'`p&8B,<"=>19(øƁi3.ȓ2SBV;Bz}QxYր][<A,79c*xS_ң{?^OxyǬBroε nC jtT#[פ) N]o4/6MoՕ8]}L7twŜ.57kdjwݱ550]]\|Ez UdhHѯwk(ӡTo荛5oϵP>>Fg0yy'fE3YK7j>&7z>d7gNn8}nX&nz8;Ux;ݼ5q-[p!b0X&pc1 G(6\%p,_SHLch)~ڔwyՔ? f̬H!mU4Mv-8u*PA4/A+T&VCr4>u}UF==sME[!^VǾ}R(7Y6Z߄t|f-͡ՐTQUX,i8[.Wc]}?r5nqUWa8HT[z~0UT}SdG%#{g 0=+ O">3xI㱕]'56q*w-Aaq3{6CFPo{S0eW 2'V.;\:wrb1ҡ > yby8(|@POEUt&::Z eieo@+zq9 N,t0[\ 6F}3ҳu+e&H R; @X`c{YQ@z=F.+fڱn9(!y%jGjN1gIZq"PgJs2/0(7.(V~B$gE xqWYkWms{S Id ~ 0K?6y]7%3nUϑﰹrB=բI8aN+d(1X2dèϫ@3-,vE L)W.:GE/Z92l8V0#xr}x0KSƓsbJ+8_H= ?qGBÕ81%60se jm,7_0S~ςKw:Cbu~1{smgHiW7vgA&錌{^B-M/ۭ>?JoLY!]; k/ӗKX6aD)RǼfBCZ;`nEQT@ 9*7%LTmrG1"ݫ 9ͿDq)x6^цa\z*A`bZon+` NNm`T.oKt$Ãe|an5LLAUso{5x#3s6V/q~xLjȪ3G E;6rhgg#mw ʂ)dro[5P[#Ū skAږW\PxY8i"8%,,d1Q@~ASE c`p(3P=aLC@38XC %A{ 2@3| lphCfBԜQ|< `ёRyAMy?|L vkǕj/ F* L~1K=lqp&<3Nt-{0NS@։-0Xen|-dmaTc,*i3"!@̹p+0 1v&iaH`L`^w h9YpAlKgx;˙o_1oA ԇrȷ=Dk mu0(br[w[u|lBtTZ=8C) λAӇyw0O:ב󷯯gp83*CU9N!we-'nU"i^/>4{Yyǵm[TM94uYFKg`H? B=*ގCjT@;d׺Zۦ XBr7Χ;-Rɭ8>Fͧۤw}$֝`PSe=u݆4g7+G)\cA, swguLȿFJOu;7nm'2$Fv@!7peN*}|L}XYLJ*>4wVde cNp2 Fc Ơ.qpGZ{_do-<ˇvuG ZοJp:{GJBg dFӸ;rdoH{֪T'Td(胁PY @x9eQj~7n֍l>TYU h3A :/6,e- c /=*uǢBI1P1˂T~k. d^%-wMǚR^8PI3ҿ] ´j `c{9Irٯz8ʵ^RExi͕zsQF{a4Xy]=kߊgn_yV^VE2gdM- (.C`d33rKdQyz0JKa<5'1 RضiPٽgg۰vdM=\ *Ar TzSV+ N٠G^|"~D,ٙhqBiaf\t3F3ٙin| Dcu9YBI؃=4fN|{27[8ka\|}\.>nW1P>uW!NW2A!')'+XlCtx65& mkLعkƧaf,*^U,\r}Xa˲U%2Я94-sbt|b_|sZd#e Foz*a>aZ.Mw;!;g`<"nY?0|tJxMi3F,E@,` 4|`Q#MټYYA)TFcV{ @z L B_dpGM륻YjqdF/e]ΊޘYIx4JT>:2̶xffj9.cM{es=gbyL}d^iFQx'1Hq`)P8 汗-1N{[FxЙC{%.{0:#,, tip21 jze!`I Fzd"`&t(::Wޔ.uaOɥ31X6:Fi#t0tIۭ'a{XS933䑩 [p@X1Chv06`2e M`N^B38D'ü>BHoE:=2rAVi=Bo]8a\8nrrvyt YXWCƝ];!pN>y=[s0J{1oGj~ ^u-#%J:~IdO~iWzVsߐmo [3&Dyj>H_˛R%i[wޮF%8 n=k8gab;|ɓ LuZtMLx0g&0^` FWh(nV7x4kmJg q` +jb>ne0 Mp3͌`6OF55 ĸLCfj|-iވ0bUpK"ƙ^Ɯ !IL@o޼rö0x/K77RdC `[^V,-m2zP;Xv.48ҍnhe\H뉃F/'z-Iu * ,/7rsy=]m18貍?\{ObPgfʿ+IA'ؾ$,K<\T:pc5^(nXxfO-ՏQd& ;Jq柙&%p:*1! }1-r8 nA4ncxmXqr\Ccv VQȫ: mpx:N1Ahgz\g WRm9ÛD.N 3a!3K11KK4Wb D6yNvccަrvV93>bήNgg3E杔K7\\jx2$ YdLi#itR5@K2\j`p:T02$|] @*۞|i;%jgQ%?L%D#eu0sY4@Ϩ^ji+ :#7md[#Оx9CCW/<{TUCA'sDC.mE":Fƕ: nU!WDʓ,utEqBk:b2+ wnE~/$zYm0\ɜEpQ<2@Z 3=`8e¤"*RةNǚ|@(ԛPE%m[#[@ 敹Aj݄" y#`. /N7^qI "!- #qJUnK+o ;zf{qM'qɌ/qU*KfqU3귔 8>I?^[=Hb5A7jQb2"FLIA5f+0HV< 5AD|W:ub_-O mggs`eӍ@6X xP*U,}!X7ȇ :!wQ?Nds-r bxafj=c^VJ(syQNn(~O Y IWh0UDE';)<:;o{Dzt., .@Fتt'2b6#@&  8Nv,Rc)Sn)ERB>T@ e >5'=hFh0Om6{1] X׍Y Zǻ -YxTaB+Z_Sr 57 w31 09,orR:C,F?wЅ?j{|CG54Ql0maAJ9d[5D5+ ѳTR{@ LޒsƍW1f^)mrBRj0a?xȺRQFPZfi2cq5.9S%Uۃ,pmk"so 圎gFfe>J>t07>*>)yw˜7 ™dn dNT*e5mӷ$Xk۪u3+==׳r6q-f,K%aOQ2ps`^5J<ÑAh/R']]O䋒.,]][0p[J䪶4#0olL[r `\Z5X s{}z4VG#B+wpr)M&($F~e:*$s}E͸a.6,&qNݽOcE (1a_ 8T)Kmڳ8pٹN|ۺ0myʙVHCJҁ\]ü>F= ӲaoclJJ :Y'Aos"ݘ7Gc.+4t(v RLj"5j ЍUc8Ѧ3I$P2a+[N. \d1^uzrFiV~~^r'֜1"F7Lp^rxB W;<.\]y/aa=ɃObsM.  ;sCܧ z&L0~#`!]V#W>=x93u16-RbwYhQSJ;IhٙR%H~BN)_Ӆs9kt aח1_#3ީ߹;9fzflX8EOx}!r/#޷#1dr1>#0 D֎xt)ˉ$kzka o_$Ɓ q#޷ǫ_k`J'[J[¯|B+;>Mљ!q,# !!  I'x*5רZ*D"Tgr~.E(] KtbjsD_ozQS S(>q k{? Hdz XXL?NS2Sŭ$x}ˎAb'>wm|sP,Rx&"B Iv6pt@-Cqn]g(:o߱ ]\6&a=+`aWMVʋ=_J/ȺEϲo\OH=p Gψ4!yV3El1`[ /Fը.Pyޣkr<e!4BG`y4[jr#P">8 =VL jl!$TZ٭zŌ`)i.(TfK㕸cx͑­[B-F70ISja_fa#:b'x2U/ é>ꚵ|ha _3݉K3_}|V !e4Vzj#uffN5/N{R*fW4.$em#c S{KLL9T 9Rkb(plgQb4GOX/*xo`$+w2 p! NݩO'>pJ3zXlˆAZ5Tj[r=aWqCbnf 5(cxe Y.I040V@*cóQSLj+}Qa|"hrmQva}(VV٧xφ#L5Igv##d=fwQqA}%yA myeϖQ$+ů*eĞBɽ p8h7sDuRiiJRldz1 ُ,:0H,@|+f(CJ#(`EH lbd+>/;pc?}&fRm|$@IzIpF[!Veك {0ak6ۊ$C0=SWqс8hWwn>go@0Ӽ`ޜB&F ֙b,m4v7"0LTD="Q&c˒4H&!oUEu> O_)`;)`2o6=SŃ|.A x! oAEt1-}k(fZރujl<B\>OE'rGWo[:lLDX)~$̬RCAX~x>l5fb$Q f#G1(kMži,hG" q)W$˃&"=oT-SotrAMyh,tSm riOwYQ鴗hk*Z%(ڍy97T$0<$j!y7D|>`{=ރyQ~ت}l>j[VG5ǎcGݏ2cd{_>Rvr|&1OEbK/tF°Ӌy'xRgОXF>gVqG)eg>,r:=ŵ}9^WO$.2Z<-mxf&=H$Xc,Uaz<f~FfLV9xsy g/m<-}=ٟH<r~GFy9ӈʰ} ?5ʨpJ5$k6XsO,sW֬^ڹ~Tˤ:TL Ϩ>U@Ox,fwjyayu-WU6[4.Նw31C}b)U9 7%ZMݶkHzh2li :aUfٹbJfwi P)}ҍqʴPv729^/pQWv1)'!as`p(UYɯv@w9yNQ.o)}o`#9Fx't4U5|l}v[ڵ =_|bޝrp*C!gJs 򐽛=OgvJڇLSutxD~]X g3^Mo|7bex sus3Uj7[JSKQ2><טs>[upi}S6')iQ}[yb |0>5x3}<>cuFe#dsA3$w K(a{S`ɕ`'$WVWu@P$*gG*<+oKUC<`mǺ#lBͷETet}z򲫔G>HZx)xRͳZ暘A-KTHD5LϓǪNΐIHq̷gY SG#qtU^5̐Ϫgv7Ыgo FHat{q˽UN!] ~õez-ںCϗ-%lX Ƹ/o .F_R) @<=ak1o$ I݆Q @Nrmg~F#.@xA{ lі&'m?l5o,+ȾjJ*Wr fg'@PkQ$XԐ4N%8qr8i7g\D0L S"tNtBE/$FT-*ɌO eFUȬʴ8cQo [b  Y32 J& x:oisU𾠧ˆW&S֎.z1iAMc&6?6yA) )%[SX`flLI:562j,f784w::ߩU収P5o2A/*$InO7Ny]ћWC q0eX7Ϗ>_r-3'0X/D7zw#r/%)1 ފH- endstream endobj 3 0 obj 21861 endobj 6 0 obj <> stream x{W_bp !ɥ\44eLVSD"dMK.4Lk3teht/D.S)|Yoϭ39g=?Z3~}.Siaaaaaaaaaaaaaaaaaaaaaaaaa1OKK۶m|޽ӦMKOOOMM4hٳnݺ_:iU'''vڑH$11ݻw6,...Wԩ_>F%3gG!2駟OJJի5 oN^^Jk׮;wrb6mH>`K~'EEETCרQcQN,X@LRꫯ|׮] t|o6vؚ5kvЁQfΜRҥ q_qR^V-LzׯQIΝ{qljwR'-bK9yy|޽9V}0*:qH:99モo믗N:Fʑ:lfͦM;C999/lm۶)࿣ WwA@믿XYٳg3o[l;tIF?,}buzǎYb)߾}{Ν裏FxjəO<򸸸^{/R1޽{98LGnzݺu!+]^x!7ұ \{,?XoGUz.WeҤI@oCM+zȑ# P05 znYfW_}2W}/<5W\igϞ5jԊ+bͷrRTT$cƍ֭r4lؐ_z%,}ǭZ:/6SL)qWKJJڵkR_h+%\꡸٫W^5N;mQ:7իGAx_j.T@'lU]r'ZlYA5j(oФI{ϭ%UY=z[-k1ω8e.'Ov!ΐ >k!usLH233c=۷oRluQ/c] ELV_'᳆ vر]v7oht\p'AsE\K"'=,)σ_~Yyg{kvsE5m#K\~}|VV"5 ";;[+Rq`Ɍ=3~42`'SN9(L)Vڠe˖^y啑cá' )4` .)k&_oQ^݃<,_\@ R^K9ɣuw^w4?wygx8sN |Æ Zso۶-,[o2aڠL 8Ptꩧ VYb *X'qqѕfCa6<ʪv42W1T8khxD_psj뮻ꫯugΜ>va\Yf{Ϥ(aI>vZ׳3s't.?^. 6L IG$YX]Ido{#Li~Wգv,UW]&wMʉIL4M.a\'''Թ婧zl х%2Fj6|2ܜiGІX+ڳyIlDnKݲk0ZX!Henbϟ/ӵaR'4Zx[ZȈDcn?GӾRpg$yyyRNΝ|F*7"KG '[ӓO>8Xb̒@t_gްv!뗚ӧO 1ѩTӑVA}.at_~hdvCNՇ磻={ЬgiZhNceΠD@f͒{LJb<F>G@T+Ug2/Q9sH!d_~\BH]X 7+BtvMĄ?<3Rx)M ܨj wC#2Gn&j'gQ y)SHŰI8sq$9a\WR9+Jqq1\sbBBɰcRcII97Lu5zU6jՉ(nj#>s.2ҠAϽ`{zwB߿~J]Xp8+";ȿ+CN QȌ3'h[B)RH6{iy7O _S$fuQA qySpG혚H4Kv94%%%Ph@?}'?UXtG`=NO?l%#5 }h1M4 IMM堧OՎ%x2{*=}&ܰaѣ7ocNgZjqC \Hhbkժxh U;"|N\X5=NHHpΐ^!/[L6t~˖-Rkx_qXAiC4ncN܎b9ӥ%P\KSSBXv'ތ"wW(K λgnj/3 [gy^1kH1kW:ȸ9vf9!!+J`Zu"_xQ cլ HWGd}jjII QZD}y睷yf)c$%l#|_LO  O&GWHXuMٸ"u:@q3qɶիդ޽NޢE =y@;R/Zj[=..Gw„ }XƍU?X0ڵk@5k~3|p>Yèo߾VQWޠA> /Length 62 /Filter/FlateDecode >> stream x35г4U02131T252352(E M MA"0]0.S4sr2Ҵ. endstream endobj 5 0 obj <> endobj 10 0 obj <> stream xzip[Ǚ`w?}7>@AH$BQ>ߌ|_#f|Ř(}cm©ԼF[&j;.WRZV.+@UuMm]0TnhljD[cohCs_7r BnFJP}! n6}WIodK0?.?`淪+ URaqyiZ> LK'ϐwny?$O#$ TgZz_C^1Z|RMzbV:H iԔ8%PRHK8$  ~_/q!a:W@dO )N&r.)Ȣ DiI5xd$L^39pDPL\c;Lͤ91a B]Or& O7%UصlLvNuJ|g/q ip-кtZQ t)-Ajڸ$`jz:P+Z'|tڒ ) $KJe*ͼfAS55L3i iE0 t *4VL`D3u&f2!A*OfSIp5Ġ/3NiZ;R0zQX4!(lf-4ń"&20"iꥢ@5X*4)P R|"MQ&:е"Jv&+u$L$>!t^3ԨLG " >`%VtK2]YwKՓL!&uqO͡!t^U$sr%XH0,^V daJ@SdMNW' jlޑTN5ݑ3bdzwȝ>?Yq(lTfKJ8ArZXGNL@U0,k0q:"Anz.&!dA_I m1frPΑdBd3r aU#+D"A5P c8+ Pdt%W( oO(ѷ7Sѷ/SwI(wi(PNK\}CbA?R/V :WʃVɃBI]&J\- E+A>|]w5G5 }ׂ|]w8$lde$=aUٶM$^LiPJP *7VI[d3Į O4ɻ*91-JjTaX9` 6/NvKd;,"9$Pé?F(R& ~Lzk-p]ЫRt!n5mZtlK즋R+n^Q!FִFRaa#l{S|)zV.튵D8I5A E.8#L%At8׈!n Mq'H OZ#$o@AR#d"S5-!NT CB95).ˋL4m!UZ`A+[^iVT*paD=,BoK/v)p_HZ~NPoA[!R?C`L5z`=;(N7#;) ]\(fP:t}c}(nǠ{)P<5;kR Cפ$]Sg+3YW@s/ e|QhB_:A1(ttqŀGXKxTx*:{3/g`L޴B$k2HgA~(gd"App7;Z R2H 2H. ExpW]f- RO E3d"\Ap蚞Uﻦ"\' AI;#qͺ =`?iCT{rqYD0& B ! VgU`Vt XjiDo-,Bb\)0Me s XcQ|h;ϋj|CirJT\4N*4|e~j!&7%Yzaggx x 8 g@UU@TA\bEUU5tHskkJ 4o̡P:ٕVڏn=;p=GGvM>@.8`}'Q"n+"j65XBQ_g)_ɀۅQyKtV٤Q#'vjM nv:)բI]U;ŔY{`a1+!^'!=?byqswa?.KĂ<:^鱩9Y1h-$]$B5f؝NW5fpTyQXͣ!ZamjK 3^miy|K " -Ne#+D٩i@_SW}#(>pur(~?GfT(15,v  *c=*Tnᲊ֬fJof4ؿg^? A5ϫUcfCӅe *(٠Q~Ua"{K,tTltpϮ`O(_?90\/ٺ&4`a,ǪJhNcDA$Ā1`V%^d4q'dO`0+ ˫үX6e^\aENCq[ݖ*L{Ɲ v 1C; Ia=:*/j ȡ*5ӊrpKgf| " >-^=Ym0D2ސOcԩǻlWr' x|@Cjgפ/B pz.Y:-F.R2-JmܥV򎑚I| oܱyd>7qs~gt9zp XZMzة|^h *u'NHJqR+\Au#UJέ.t6<&]ض# )xO",=È#cPոs4Sm4 z-_PZlEWQ"YOvEy /Ԙ5GܥKމčl(o0*P w x^})k۰M-limNw];nBLCͫjd2n,/?#fTNe"fHwꢻ?@y 'rʞ"Z9,k4 o4st gOyqP ,.W8 J{|āa+-gEP3prn:-D;xe[Va3ѝ{C=;{*bh'=q:5=.?/*qNc7j1#g~ `$KJVxa_ O6%c(OSjgL7Nq m|"U,14{#>}/&dl8׾}m96GwDWtӱ]1TCv t(_Tv>OT.,N*j p0I8ĨYPнVNe#@F#հKw⑭i 8vlӣԾŇ>hs-u/wI棳g9wGW^VJ-1hcb~mۊuv.ǣrx9 6 ĎUjq[ ~![j8OÁꀨ[r.ҀEX+$UF:5ۚ˶戱utԡ扎tW&vnpÓohxFVq~sֱ#:I4o("--$*( ʏ,C=lW|-ZRd6>{ "P A@B1 (֤;Ecӄ*3hǩ{ ύXXHOSiVK&'~O]e[O\F EY^9/@VOmu4I̠j(_]v!pU2bB`Jf;RXhtDbFbO]?s=NU;˄ѿ.ڴQ0/>Zr"dll !V4pL"|N_Pץv{O,K.['Ncvd{@޾h8ㄬyr}t.l .ګvc/^5Y}BbMbh~S@^m6Ar'4,CnWduWe߳kOՈ͕e%vAURPVQWB MUgM=&?wjjW۶ZGC~ܞ9eVκҺ[>uҟz:q69\>MjTxUe͉1fMH43˧!BOiM } Ǡgg .RVuĕ#Lnn'=O #''i1{?җ6_L^OMdz3NZ oϨ-0oeT5R'Ħߑ8"l(s s6^EQkQo]Xy/ܦX xGE(oxx/ʹR= ʫ.gOq7w ~り8Iv1"шCcuَW̑UŪNzVT.TA XV4`q{7|:UׁW T#E9P,bd0zqk?kAjhpmWYe<4H rsMw3DGyWK du;A}*$doۿJfD?uakh~#^gSp3Wzƨa--zb0BYf4 ؎7y~xsPC1I`.c z#ޢشp5;yk [%Άe >: %>گښ"d_+3G(=[SǏB\]VY0R,=V-|{LV?F.o>M/ޟw v4K|BaO1[nM"-2a16Euw0SpϡDx8ƷRJ߄^OFy{5f٬b.Vkw_«v[0ze`iV U5Qj0?$nsUXV\QyM জd?h J۾tfƤIQO{ҀSj]y4 K?EIb0/5i9Xf()d 31,Kz^#^~to]0i#t IPvWK ]젂 g['fU᮰XyOˏ֕ξZ'=ؚ{af;m#*/'һl}s[\͟xteCF='L.v7Q M*GoD hE&of>^|]AN^/lC$7vG}IpϮAUMD~%lj * kƗW%_1! z2Xd3UE܁b&@9Ԉ~*8:YXFpHyEր=R`-?U"TC CQ?Q` lNMUUX˂lI"j^A0ctBT6(0Լ00: 8]7 {z9;Cј,P haatz)g9q;mzu ֘AR;߽Ъ]sLysaVVԎa Ev(/̮_Iwe*^Ƴ9 l [LGu(T)a3l,k ~38t0N~|[4wᮦܷBibwQeT<utA1xt#|,FUaGX$M: ہBᬏGTg0@=9/> endobj 13 0 obj <> stream x]͎0<b2RDʢ?j H@Y#u賹לYsa~;% c}zΥgwD%俻sqLu /~:/I5}ݜwwsI]u2z=<_CgR-c(Իvη%:h:XP EM+kҡ܀`SS3!k2ENQ3%OD>&:`? J:h:8#6t0RAj>a+FC> endobj 15 0 obj <> endobj 8 0 obj << /Font 15 0 R /XObject<> /ExtGState<> /ProcSet[/PDF/Text/ImageC/ImageI/ImageB] >> endobj 1 0 obj <> endobj 16 0 obj <> endobj 17 0 obj < /Dest[1 0 R/XYZ 0 841.918 0]/Parent 16 0 R>> endobj 9 0 obj <> endobj 18 0 obj <> endobj 19 0 obj < /Producer /CreationDate(D:20241025160232+03'00')>> endobj xref 0 20 0000000000 65535 f 0000036738 00000 n 0000000019 00000 n 0000021951 00000 n 0000026689 00000 n 0000026952 00000 n 0000021973 00000 n 0000026668 00000 n 0000036603 00000 n 0000037050 00000 n 0000026992 00000 n 0000035405 00000 n 0000035427 00000 n 0000035625 00000 n 0000036179 00000 n 0000036570 00000 n 0000036869 00000 n 0000036925 00000 n 0000037123 00000 n 0000037259 00000 n trailer < <93FA8176C5BD5181E33ADF9B24887534> ] /DocChecksum /0EA0FF55D44EE49546CB9171C93B2919 >> startxref 37430 %%EOF hardinfo2-hardinfo2-1331e88/tools/LICENSES/media-removableSVG.pdf000066400000000000000000001114451474767047500242220ustar00rootroot00000000000000%PDF-1.7 %äüöß 2 0 obj <> stream xˮe98?_qkM""3 ѣ-5 %TiP\k(*fn>E#if>yr}|i~Xx5}s?xO+͗Oh?<5~YKeUF̥USrmZw+/1KDv߄N8_KN/0R/r!<_3 fEx `p5}PHR%"Ipp0Gcebm:1orWͧϙwAmDygV.=8%ȲvnfY13FY4{47Aqo#\1 |lD)-ɱ-_7rm5r b@pa {0Zko!cC5q򩸼=|&NW t$ީl N*,Ю5rJؘO:?\`}?MV"J{-8)muյ?)Rv -s=5 l"T)!Z` Jڇzi[nkM7k[ϛ1! 7Y7XF@4v.[+h MMce, ӇR'-}AwV6Qj** E& ~[zۤHJF6l%jʞW*5.*B_=@=Q$AZ"fJg0[n5@`-&njز<25eȪ¤NmI:E1m>Jx,a@J!p5 a:;QKC7a 6!!)4[)MybC.ȵ-j{{lwMb9"Q F6B(t@*=ͫ7eYAA8w%lm͜=ueYںQ ,&[li3C#| $p贒t.S}+&L.%nOuɌmq0_m7WOS=ח e6l/#imo l#:pWgeg_ m3blP Gڭ1m7xKZ0=\궫UoWbFc`l7p璐-Ic+tF5V  Ixe لT Awo c^dmCZd՞+} ssa@vvʆ =dEǴʆ`F5,nKFS[ Rn<YXJ7]"6jAS ز>pZ^Cbluݵ.X PB,.$muN\|sg #i|OJka %Ⱥ&n6҅в<\*`B4z۪^lrK<wQZѪ19`#@;[|JoW}ec?;mUyܰg[Իj/2JE8؛_4w/>xb" Q W5fk@mKǕYKmPw4gpBv)v[l/l8_|Vpwח@,X#y@Wݟ$/oY7۾d&> >coa9-rmj<!8 oxC"W Ϋ屹ujH15y g fئ]leZ/pP^j I2η=r앪 Мq*}~Eϗ-[NttNݰ{6c:)便\ fǓ %- )A͊=t|sh{)I2J1e\<{/^?MgRQ Y~K189? .錭$sQ?63Uδ}&ki0mfUڲ r3 !^qxT-;4ΔnO=#MW=#OD,cAƅD%1`N6&~XGb?31"1V!@~as‡5.8IX%8G!ܳi“S*t xzϥ3@Up9cإlSVIoNN\ES$ZtV%bI^v}gF0uC3P]P "| i79.\ <Ӎg] d&p%\ɢ;WBU8f*n3u`t0dradtbDvLpdLre,t,vg" gU/7&}fC6d솅d3W֩ؤ/Sk24[ jDw`c+vB_t^g1 rMpa. 13!$n8yrVh)Uh"nLӍL);c7.ɀqi;%ks:c _7_/[O `l|IHe%f~iYU*M;qMۤqYmfԱDepXzdɇ8ySqۊe>qhaJO_MJp"~V-8%:V8 82& rUp8`т#DHL#̐OTXP*\`dp#h mpp< uȄ!UJri IHn4!۶Jk[hP,nc렷Z>B}\>n3>0>s#N4NG"*[3ϱwAa..%ns]*v9trjf낋z$ V狯yV;QCquM1r\^`.^]{n[O*$ړLɦioފudȜy[mc&L%L`Cr7]qf 0ln1qkr 1/ܐ-[jS p1ߘ-=uv/ywMڼu"XP2rmumJ`,[3EiXΜ(Qnmc-Rz`3x,dYl˵)qwqt3mRrkmfMb[RaQ یeoӸKj3j)I&"!B+E[`eRxMv\yVI)҄c=Yh,PmŒXҌ\#ۘɠѠUAMAmXmcfc %%dƖXlCl E-$7ېm[Cm 64(1ÄZ؆۸Bma b [aswSb [#n*#~XXl\RD$쭉XibE7) km &g&_WՑ'oWNug8 7^nr|6E9_C-'gQ~Evܙ}-^DY (j{0ã, -1 Xx'3ވ)Nx&iI:Q.6O <}mm/F+Ho-UߜE'mʗMdm6*ǧ 1N 8O: 'Az3q~03-f+Egn[Sf\L1gSؤVXh@ 'iVjМD@d0 O#^XG۽AƇdB#6=L(}&N領Q4F~?lf{`}\c~WFhkop?]=hz;HHTɖ,5|`G2hQȭ瀱giOn"eof6U?T!%Y67 Con pbH ͤpm Ipݜ,w! ih$qnhM[Gx}T6Pwy(Q&hwϩ o7?MܬP d,mRx3d&1u IV.8uCf];g\A}PS7?ٵon[/TM sSH'CD'cwo2yc5-@w=A bH7͢כew>m vei[G34c#2ul @ܔAr7-:M{+pW!7 o#),Gqx~ܑ SIw#Q6@ze,m/} ̌&Фy_U词:u_M<+ݴ(k5uu7b~4iq'Fe6 <27˜u=f}K"vkւE=JwanzPF< PFRDziZVSkoz1-2`B^nņBqz7䗊=w(+ aG`t6`r#Ȕnf=70Q_X;'{:i} 옣3ZBϣ>*X˳(u:;usһZ:onl컩7Tlr+XIM/&ǡ&7]6]p]mw.oXĝxwA74S xYt|&jlH6q SXD@2{L,2@8boJd/^LWG"n7!d0Veq9ūrC2aa \pME?=Jr3aikܤk6szWb2in=L,Uxi h1-Ձ>brb|:MGļdN (cIwr-+(G2va㲅7vMcNݘpq3*Uႆ}ml ! ?* \qs=&詰HT( 2Tgh!^m7h=.L}f |J>g#N3N3BNR3PFq_Β7c>㨛FgyN 7&1nx]nMlHYwuo2}[2 VM^-Gl܏ʍy^|)( 0=Q?֨kԏ5c[ .B &7e#t>08BG7<w(c6P Tor S,2!ٹb^:lEc{/}DwS=PqCϪ21H'\tC9GT/aZwxIX Ɲ19(x_h4t嘢(Yy+~SFL,oҺ?ß__///2]Y5B᪡fGIz.qNo4ώ+ W}QL638.V=ָz<vA;Vbukkl`Nx{< .ƛCu&_|Ⱦ9%i!/NU_侐RoL WXBܽ p6Ld ń.pyBh)2dRռ4!FMצ3b1nHgfM)E i+liAkQةT4T<ӼepqpCr 4+A~K.O}1.*x,ɔJg7Jgۆ oP#|ĦE׳/|ˣ|GI픍ַ[1ߎ|}f0CsE34ev0 grgtviդōog77&nC^EtY'.T)`j7$ݞV.0pz}kHgc$AG|GC0cDrȆJqZ ox!3%'#Õn).KNb̶/"EWf3;j?1ؗ#1\Q鼘od$e-)6sh^ג!8>M4|!M.^\LED#r 8Ap2p(ms ͮٮXeQqodQ4,/K?x @K]F -PI*m%i ׅLV@e2_B+]STy%E'z$DlS">jϔ3eS"I(7.(VT$gE xgkZOvuΟ ÞB\NՅ'``]ްcc5uXb@9VT~͕5^,MYwZY)FQU40uyUViQb敥{ŕSqI8E%pjܬ|;h]HvR8.@>K2۲}d0'3)\M&%ĔPW Eq8^sīZ|!M1)y WFnjOLL̡Y ''ٯo03~O3Ო.fX]^2gfRV=lmɀ[AU,v KG!X/W倱QA9&`+0Ҵ7\(A^:3sī,l!߻rgH+@c^#ee0 Izp:gԢV  a6KbՂ8R}HK30XsM%`$*&:d@*a{d yy+HF;6%w]1%j} `)p`8гXt.&<#3+:~FM+0ح͘[z@K^7*hTTU=)zW"F#m|C#١DPhb ^p1F7 m4ʨ }m3$XP!w`Cx-Jo5F:p!+%$R&>!/IX]Y)'?{j(Wq\Dz#bގc2w`dM:6b? O>`jzE{>w4Xh[8vHԑSO3_n>$r!Q`l:ަO{=$ 2.!.s(வC oo(r⋇̸P!z1J8N3Nmz#UHj0 0e\ I q&i&00;%(c}^,<™BKgWŏi]Yd:l?th{].ܸs]|I$XcTS=A&@NGߎ|!m kWк&w.€ŒQKLg0-LKO>"Sq3#3>e3 N&#٭`5=cMI[T!LnM^0=wauk/Y-wkǿGDՏcyz>E$iYo=Ɓlw5sI>eI;rPSOމG:|NԀϊd0 )2 t{bW|L[ۉxѷRcdTqkQ4ѷ鷏G.Ϛ}|bCS-f?Z{.]s DƠ.F:g|YVp&\2N-:(aS^o=Х;P6n [?6ƍny#{C?«:2#F鷣3 Ya*+'<i춺Ԛ#WzvJZ}9%zPz;>Cࡵ Q'+[KKY /U1B-o9n:+^b g|Wk0V#= m-b"dXZX+!R9 =$Dy8c'~gNYVz;^{_EK|Yժ|s(ˇ~ۧto /d7|4 qx6f3m"O04RRIܤ*2 Axcېd{_ۭ9߻| b/,zۈGW g aby16 8P'Qqyʚf/ܜ؂ QtJQv֭<3[N㣰r59s,Qڌdax OxJZo0D Au`1b*86 VSKCg|oj\bILWhuSPr 0ތE<Iy`D`Vނb>D[ssu{or`(+(IYNCDL&/Ż-B mk_k`Ʀ/zOxkrF0ȗ%|1ؚo3s*ol NiB .WoX' ͔͐ Y:c`XBcpJGXS&Da]ʎ69 {nr%kz WN 8^'YG=׏crX~\+ܞO(-j|FYvvı  ^r)SilZ,.$cF܏s:iuYх~z03ve4 v΂e@ij~5!v f|*8[Rt&b0HTs&G$%ap} wdqk0 1/pΥYZq"#?DRY󓑪-A^K\_X>%ffB9.Mavd3 ՘::tGL3yvdQ qc/c1N{[Fddس.C{%){a@s:r:T!$Jv]Xڢ>B?"I;NN0uuaOɥ31lz٧*Hl# ߶XA:,tI[sF{,~xٹ387U9;U9$`~N2C 02C6b!xdtZ&)V p{ E\U ~u2#οq6]eӣ>*y[#O-&'.'[7g#33 1.#n]H=Œw9%,.ژ.]}΋[[ݴۋF&gAUqګ,Z<W?x=jqeۋqs*T'~/Mʲ_4:DX:]^Q`d-:_U1'?[Vqahx:Ac/Y B; \ -FWؿ,@>rwn(  s(my9[<"Ȩ0($TnH7qy#1'~@K_,R=%z-I/nL 0F]n"+ {]疫vI7Hqa T4r /I0./=Ż1k y\/B8sc UQrׅӨ=+ǽ7s)qSd%c`ʅ4Jll i2Q{Rfs2 7==Z m0 6M7|::mO*?Ҹ]L&Y:OȲ&vq^G(s6*A# rWU8> *:y*DAUL25S+Ͽ5::yUKUйlM5(U^/KkeaKR}(_@EbpqM->V;' 5[zu -*8#Sx/S¹˒CXq߰%ty@D$/wk g+1T}wP(k0>d],\%:ZFԓm26\H܇Hx݌dQ]d׈٪2޳?HPcm#3J`)C.\R@-NXVjR01[ې .&*$F6̽=LJd@Li9\=X NL[MS'fKӔl887"Oo\d{_Tqu7SQC,.q;+ܯp`.sx˓ fd& ^uf G B|-3Z&zz6 hn}jS/!}YȨwBGNrl_m"O߫b\WltV7ΞEhdҌl]hdAn'-p3lk~[͌K p1]gla|`7 /:# g`,0sm7Lͪ%2>w1js&,I,-̛Jlt8n]*(p#e-cD;c sOKmytMq_2{0yogGSTC݋23|I`š{(u}0;L/9fgJ]O9O7۞h'#GƽӲaoafo [Y_v|9^á#i(XWpV{=M59J5pa4i۔VůΫ+Ɲ`Y\ɲTa.ӕ)3MfGly "#|wvaӒttN9cD)Sd°O7LզwoߝtCpi!(4ݳX&i=V֍(wxio!58 In+! 3lkZDy\W t}4ݓӥ#;q6;އJ(7u ;hʷ:5kL!?_!7Q7츱Mr6YΓy8dLb?H 5N҄yHfv4_oC?;{Z8n7n߷ViLv[7J^ 3p~'#ǿJmR{p$7ǁ4#,6u5& Ѿ ֚ă_"RtZ;Q$}:Qy߿/_E/f}x]B:PH՟ r0ӮGWo0{Y.٢$(RC9ߙm|qEV'b _>g}`{qK ;v6cKa_0'_ۺ oJZщK@`#W}<ᢞ~]g:k8h9C=o 8 7 %!B"ȘgBE6Yld~>rAF8aW.O%#HA .?\A-nC['P-mp'Nwm|k78U<U,ݨ@5oһaq>e1G66uƮ}m25}lt<(N^nZ'i~?aߴ;'j7Q/l&tKmFMk 0P JO秷u*h6#݊ ²,CObxݡyP >3| o^2UbI.W4*CuRv;Sv.=~̏Xۆ{V#@Ѡ,=^R>_*8 [ dnA1[R{ RCYŦR CpX[LʳAuH+j=&u绩VE9"Λb3.YǺ'w<{3>D"#Z6XAU ȴ'j1ІtA$B(/4 ҋOK`USv&҃Uyh713+/>JUloDY=eyv02KY"]z3wsm }e~%X{ݢL8YJLlc'4'k@֟0v*'efJe~lM]_V&$h0 IY {c;#)eڰ.8w]mIpVN---rHπ3*̲ެJ<ϋ>i ?ITPfƩNXF%0f'!oj~:zSJT B8 gC .4$!iVxc@11\m, "%fIu* %Jm[E4!gC]dG:h@`3 pR -. JN3ɐ7>5.%~>I 6֦bRmt7**ct23>s\[ߚ ?"C?'J{ul!cm_R%b^ !q~浱d*M"^PC(So|Rhb UiQ8AGHEpz[FwDf-8~C.(+F@3vc.{xc?}&,$$M嵁xioF[KyVeyZд|(lN7FY AOURt iW^bȹh)O, -.˛L!"* Ryt#^1Ep›e,AJYaVpfv(%&Du^%~> J֥b2m4y B@*FBW>b[* "vȒ tF'pk>-{W+w%^i7N[c5P$$}̬ԌnLCO!92vďm؏m؏m؏mߴ 5cccc=)?6u?6u} o}'3~lwlrH|~ _f]۲箬H8R)ҾF\ JgA 88`RYsdˇMHѢϗWOz KYR%rLֆr#`kѭpJN)s47TP!X:^"y ;H`_,DPv{E8H]^|XC&!C@*|z0VTQҫ ..3gvgPr)d1`xUތd[ғ_ bqDN`O*yU;iC>C&Uz%T<Vyt`͟tJ%,wɈ+XM `$U0RuQg(͸fW<؁ULeUT16Fvٳ12睩:>S|CJ͌(eDLߋ3q~7`͛LH$}8!>|qDPu"*d32m[A%htYy!CרAԢ?z-J-Hzᦇ )XC3;U=H,NLJ_d'C3{:o1zl??`fwx- wFqO~zŦ`/|a^|cՙ 76wslgX9jd@p1^Ԯv`خx,|ʩpNϝᘆȨe/ՔmIUԦ6䤧zy{6hG8R=4mFUxFը]G,l(-AG?r^$51,Z5\VwN漹ռ;J0<*F ͥ=g̴,&t: m#Ar*nDeעq<(ު*9s0a AJt4BFppmFL)) e+{%J-/2U7-ms8o4J|//=oH.w$8,Gz_^vo endstream endobj 3 0 obj 21748 endobj 6 0 obj <> stream x{W_bp !ɥ\44eLVSD"dMK.4Lk3teht/D.S)|Yoϭ39g=?Z3~}.Siaaaaaaaaaaaaaaaaaaaaaaaaa1OKK۶m|޽ӦMKOOOMM4hٳnݺ_:iU'''vڑH$11ݻw6,...Wԩ_>F%3gG!2駟OJJի5 oN^^Jk׮;wrb6mH>`K~'EEETCרQcQN,X@LRꫯ|׮] t|o6vؚ5kvЁQfΜRҥ q_qR^V-LzׯQIΝ{qljwR'-bK9yy|޽9V}0*:qH:99モo믗N:Fʑ:lfͦM;C999/lm۶)࿣ WwA@믿XYٳg3o[l;tIF?,}buzǎYb)߾}{Ν裏FxjəO<򸸸^{/R1޽{98LGnzݺu!+]^x!7ұ \{,?XoGUz.WeҤI@oCM+zȑ# P05 znYfW_}2W}/<5W\igϞ5jԊ+bͷrRTT$cƍ֭r4lؐ_z%,}ǭZ:/6SL)qWKJJڵkR_h+%\꡸٫W^5N;mQ:7իGAx_j.T@'lU]r'ZlYA5j(oФI{ϭ%UY=z[-k1ω8e.'Ov!ΐ >k!usLH233c=۷oRluQ/c] ELV_'᳆ vر]v7oht\p'AsE\K"'=,)σ_~Yyg{kvsE5m#K\~}|VV"5 ";;[+Rq`Ɍ=3~42`'SN9(L)Vڠe˖^y啑cá' )4` .)k&_oQ^݃<,_\@ R^K9ɣuw^w4?wygx8sN |Æ Zso۶-,[o2aڠL 8Ptꩧ VYb *X'qqѕfCa6<ʪv42W1T8khxD_psj뮻ꫯugΜ>va\Yf{Ϥ(aI>vZ׳3s't.?^. 6L IG$YX]Ido{#Li~Wգv,UW]&wMʉIL4M.a\'''Թ婧zl х%2Fj6|2ܜiGІX+ڳyIlDnKݲk0ZX!Henbϟ/ӵaR'4Zx[ZȈDcn?GӾRpg$yyyRNΝ|F*7"KG '[ӓO>8Xb̒@t_gްv!뗚ӧO 1ѩTӑVA}.at_~hdvCNՇ磻={ЬgiZhNceΠD@f͒{LJb<F>G@T+Ug2/Q9sH!d_~\BH]X 7+BtvMĄ?<3Rx)M ܨj wC#2Gn&j'gQ y)SHŰI8sq$9a\WR9+Jqq1\sbBBɰcRcII97Lu5zU6jՉ(nj#>s.2ҠAϽ`{zwB߿~J]Xp8+";ȿ+CN QȌ3'h[B)RH6{iy7O _S$fuQA qySpG혚H4Kv94%%%Ph@?}'?UXtG`=NO?l%#5 }h1M4 IMM堧OՎ%x2{*=}&ܰaѣ7ocNgZjqC \Hhbkժxh U;"|N\X5=NHHpΐ^!/[L6t~˖-Rkx_qXAiC4ncN܎b9ӥ%P\KSSBXv'ތ"wW(K λgnj/3 [gy^1kH1kW:ȸ9vf9!!+J`Zu"_xQ cլ HWGd}jjII QZD}y睷yf)c$%l#|_LO  O&GWHXuMٸ"u:@q3qɶիդ޽NޢE =y@;R/Zj[=..Gw„ }XƍU?X0ڵk@5k~3|p>Yèo߾VQWޠA> /Length 62 /Filter/FlateDecode >> stream x35г4U02131T252352(E M MA"0]0.S4sr2Ҵ. endstream endobj 5 0 obj <> endobj 10 0 obj <> stream xzit[y=<bG @pAh'pE$%%7P,m,Ŗk'q\/if_A$n'xI8iN'iO8J(R=˙sO ~}Y 'g]DJL͞xԳAOZ?^'MΞt!!1wo!Lv}mBO9p"<깣 Kx 0 ώg0^8]:qkPcљ᷺0^BHh>q|~ B'gN|~0C tL8^#hu%zdXmvGebJ 7h[={ "!.񭼻bl 5/Nj p7ܼ53t*4 tXBuѵgWsuWޢt4 nX92:-+R7m(>NO<(,h4ݕžWyOv6\eR}UthjJ2(%u^LM$eʼnFh8}+udJvĉd.%Ԟ%Q6J2?tdLY^3;qLPJ^s`I2Jd0aa T'R)/N׆d>8vR]S]Е\Mfd_WӢ<4S 7PhC&#lԑ(7fڸePzfDP;'Lڒ)eG0˾bES d2U8 HL _NJ`D,0u&v2)E*_a]S!)x7kj@C!v$2('vaO(krI*t :JI EJfe29+)`D64%arkx4)R rb"CQ&:3Ju%cw$B>!v]ԨLO "~`%Vv*Gg\ hk7L&#4[yBlgl (ʖNJlYl@ʔ"dٖN (}{y~3S-fFNV&wpSݞq6)B4y ]` f(yWp! "Wd:Iz]o1a!Jh513tIv))vfp?.'^x0!J&TR]H~$u@FgQv>=o}y>ἆ>y>y-}V: K3 д$Fd|7F9fѵxظf1xRYHWNEET*Z |U|)|Y g GA>kA>>#aq sئ0!3)alsXn M- =XSnhb@ ?hY'45ٕHQᴅ< a{G^<~w8ZS=D R dT>{ o FCIՋ*ͪ zAN%wDv3pC7cj -vC-jk0LZpWB )0lf7`š(š^C!J _@>)1nǠA.&3)0IϤ4š š,š@ B_:a0(tEc/ oY5 6ޣF(j2i&bGY<eǝȕ= E4ȍ:+[].3 q HU`]%hA\ٹp5wEͻ 9\KY0_ x:'{҉puzi48 &9-ϢA?dn 2WfN*Jmu K t\+ Bmk{,g O[:#c\ӻGәCYChO*Q˺{Z{ ?t`|-2 jL4s(Gg4㖨OA#h1+6,`n|oFn2:}4#^GAԗ!airjCSHH?K0ef17D1SчI;v ]v,Fm=/dQ aF9AKݓ)85r Z-9lc2%:dU-@qne[0l~Ou,#7#;wM^ʼn osF;iр Rn$?x#K<&T#T0n0 Tf6u ҠM";0ko'i__o~"M>'O u82ķw_OP]3gpwb66ZWm4Q9LA X5Y.pҔ!=µi=slh;IugB{{c;@={vtݓz6%G $*LwGK`/nB&7{BQ.p1('LV)AFQWQdˀlF.3/8AAO,ؑN拳҃H@$,weSe+ jAC `/VRCi DfT#puJ`+<.DqF)K]s$ڱ0\LS|rok'N<4z+ O$Q:[8089Rh(j RLH:W&3lxVk;:<$8{΢P7>.]ܚRbQ4 ZhQ,Vj}H=ێ%*Qh{;vyj#=b&Ah& #֙H*_;7P XVϱ^rHY5f? 3@͍HkD[W @K,ޢVWHUjhri! t>E~Kx*sO SbA4ff[Z~.=^r!%AIksc5JΤ#f",眧™ SG]A_5\8HD|ސ%!ZzA֒0+< 3ZwZPYñ|ý{Rgl Lz(wK++7!8Yj̎t~7̻)?f-Q!8[P rHԪZsyӮ\VmTGrF19훝M x^Hƿ-ߺ=ZO+t샳G ~ uI;:C׀%>ź tF;yL)3a)5ĆJK}~νuxAx+&V[k!lZaY"VqƩqvܶGnnk[xsJ4s;>Ж81]HBD4#%U@K*uȠǍU#- MinkƩYjcEiw}>|&ߎ(|?GۃX Er "j3~YȼlsHZbX3Ě ̓$Z7 PjE>/G  kpOѬPg׻6F uRkukEfí WM;Z}eRn+Hzw9ښ>] }r}w[~޷ley67oKнԧF;6RB^x䫣}\b]_v~]_R2_4ek187r=!> Tum1mj -mmt&+k@YF5oj^Ƴx\mfpiM?3䦱͇>;>|%d{&~g}z6/Q^sf]&x]C{*rCst.n䅭xgȑO租'^#jN/T[7 (mr}h]wyս?TD(ՈX;[p_x .<M#Wm-'<48P^ذ9.p7"y/k+ ϚAȼ(dI[m,?Dg'WʑgR~y+z6T.l.5︂mPɈ"W á7¿U{/D&H`Zh\( 49%@AZhKV|?J O>|ƾ· y& б̳nDQiNA/hZЙ`\( hfppyUd)r\M)?2ۋ]\퐪^ִQr(ujC3'Cfa{Od'TiU`q}bj+}B|pcF˸HbU{Q,|?v6>L}?1ۛp)W/5gv;7 6-@(ftgb_Gh浤 ;AHvV#DZ=Ă?X!JH'Ѭ4\_,9k%듕奵ZC r`"2/NM-ͨ R3ź-$~=]}H]l4`}n{v4l3wOl|kxnK cT|KRO}]>u@C٘6gÉ$p](Gf-4WP3X q{@`܃2T $ Aց4ڇ瑕lEcPW~nׁ& $?@du_ A0 p78y [+or3(@"D&.Z&_/^FAc:Mp ti$y sܧx?'UMsEM(t Wh}<9C7K%ᒱgK;GCaph6 f0mbވRm.| z= xldu!'dC¢)!w[*̡f}a@ދ*Ei֡#.AuDz4AU c6*Nfϲ";?6gUS*LPƨj"Ds"  `-WDCy)-sNy1 @smBMe&QvGGaJq#j]'t)#95=ɔWwv4J$HiZPDy/PRd- 0R*zV}P2PpYL"?D3lw/A;pR_G!4޻ЯS=49zi58fF|OUa'X$FGI:뻀BFTg8@U/1& It'|g5吵8YAD: > endobj 13 0 obj <> stream x]ˎ@E|E/',$?ƒy(|i I,l܆ʷaG_yo=t^e3mT?tKY_yZg|v[C=d0k{<UdMz}sY|ay<% WF5U|hNjVEѨ~d~{V\r:wm:5pU-ف\56. 5 }ߒXY#_ZM'570*P,43r?e@f2) *ُjxf0ۤw Lʀs1)| 3c0/i KCOl}--b_K OK zZ`LJP|˜?{q,de0 > endobj 15 0 obj <> endobj 8 0 obj << /Font 15 0 R /XObject<> /ExtGState<> /ProcSet[/PDF/Text/ImageC/ImageI/ImageB] >> endobj 1 0 obj <> endobj 16 0 obj <> endobj 17 0 obj < /Dest[1 0 R/XYZ 0 841.918 0]/Parent 16 0 R>> endobj 9 0 obj <> endobj 18 0 obj <> endobj 19 0 obj < /Producer /CreationDate(D:20241025160311+03'00')>> endobj xref 0 20 0000000000 65535 f 0000036373 00000 n 0000000019 00000 n 0000021838 00000 n 0000026576 00000 n 0000026839 00000 n 0000021860 00000 n 0000026555 00000 n 0000036238 00000 n 0000036685 00000 n 0000026879 00000 n 0000035063 00000 n 0000035085 00000 n 0000035283 00000 n 0000035826 00000 n 0000036205 00000 n 0000036504 00000 n 0000036560 00000 n 0000036758 00000 n 0000036894 00000 n trailer < ] /DocChecksum /BD56F197EF0264C1E28FFEAFC23E0E07 >> startxref 37065 %%EOF hardinfo2-hardinfo2-1331e88/tools/LICENSES/media-sdSVG.pdf000066400000000000000000001127431474767047500226560ustar00rootroot00000000000000%PDF-1.7 %äüöß 2 0 obj <> stream xɎeI%_a ȡhf\\=9U\S9"̇ȬW2]AFDDr\<_ڪ5^fM\/z˧j5ſWq}ikZK˫4,/cZ+/1KDv _p^`6s/r!<_3 fEx `p5}PHR%"Ipp0Gcebm:1orWͧϙwAmDygV.=8%ȲvnfY13FY4{47Aqo#\1 |lD)-6AN@o Ɖ0/֚;syPM|*.o t4w*BӠk`:6kͫ,h`\9uwҦE06ӣD@6?MV"J{-8)muյy[ VX_^ږ9=5 l"T)!Z` Jڇzi[nn&pܭ͘! 7Y7XF@4v-J{̈́ۦDۦe, ӇR'؈֖lzV}AwV6Qj** E& ~[zۤHJF6l%jʞW.%*5.*B_=@{@I6O>E`jhu [M*eye4KkʐUӅI@t4b|,X ~D5jC(e`ZCG]T/|[K 5؄DnJv&d Q\-j{{lwMb9Q Nl#l!a: +ͫ|Y w%ݱXۚ9HTוΚF3*~j岥mzV`JG2hKQ25طb,.2{tq{KfysoKwk[Km ѷ}7zu#1矈h}c`S+3gy?,| Hh|-\vlcZX^\ׂvk- ˶lI/ۈK궫UoWbFc`eZ{KB^&pa5 R22d$8Vd'*K&R Oz$[LmSe\[c4c:FðS61tl'+Om;ӆIA jpnKFSN'5@lRueTʷA[GS5$Ƽt5`m(@ H>pꜶs73n4'%_%m)Yaj#*rC <3fr1\ylzK .HܑoDiE^ crG.mwDC)u""pƆ8c7a϶wV 4Rz.ތD'qَ!,o(bYN77\Ǧl[,\)u{XD%<dM#^f3Vau`oi٧imڂ"rDa k Y ux]4^7@VB8}Rm{j4g@iJMЖ-c'x:9©nz=fVϑad7*ꠟW:5zߴ텞}dC*KbޛAʭ3&e |>!w˾vvFme#wQ_]L1R}J&M 9v8L (샣Rc7Σ'cVw| r jZV .*ߘy*ɯK3l̇)7l]Ώ{[.s;oum33 !ˌu<6ud{[VlƷPj}3F^gJX5=b^+ɺfmZT>y6yz4N\ e/;sKK ݥɦfvY \o%ݎeP,ڣ|ys.fy[p+^_ӟKN\_?_[y|Տ?qWS@ ?|_ron.DΙ˻k68?jd-/>~.3ݱMƯʕ>T c7&HS{lT5_T3%= i64~ͣg8\(u4!$MS)"J+G}3H3N׏ߝ2Zm5kj s5 9I;8=(0˘zchGrDk3 p.t [rq tm>Yog]8=LN^/SuZlM?k&M;ʦvg0-;~ uOILt|\|zKSJZ˧=(MM9Vlj_u Lƿam}uWc C]#:6|)hй_0(Gd%& pI 1{/[wBQ/n78{R_!nxXVXbx;FLx뗉$8U$ aQqGwlLa8HzF>orK\I w2RG@L7Xy#@Ap0C&YWYwhW)ݺ )V4دLj-Dt!Nd\iAdbLQ6$` },S8[)[`G&`8x,!|8,#‰AUm=&< n0M\:o}X=]kxi D)UtDէd9K6,2l"# oT!/2eBa nM6[,<=t#n[)Ylr @50k!\9WΕІ*jcuL>|ݸ8t ݴa4qdvˍIM7&a% }kglg]c9o'WW\%mhƅ/ګFex)<T3@!7wf6!?v|3&d`A5SRe0[B+L4=-X)u-} lL3{uYn7bm EʗBܑ<= yWʸyLL]#-Im|qBJ8X 65>,Š(yF`:^ p_w79~y#~$Ǔ#gl3p勜YpCHK$D3 8lCGLtwi $pKG>`!044t0 46242a>dHU8; !`Brl 7>/4(Mzbk̀+̄Oܭ팓Ȉʈs1018쥋#, IX\.faM æw9~W0I?~Dޯ<_?r 6 07Ym\pq[Vqn.:=[ɶ =xOsҕ18xlXGv6͟y-̆(co˕nrՉu8[`7_f'7q{ {zwhj8w# wD07f7̐ >r cn+bf;;\oܭ储ț{񶹀9s(y\ o2n &Gf|ynŇ5^ΰ͈JL}SAOFKc0R͉;ɌLg;1pؕ3qz即|B2]?LI傈tyZF8*rtmc[po}opoto8g)iuܭSݭSݭ[瘻[c{[.TBfT 3rin-$7mȶƐ}smCۺ'ޤhxbk@[7>s#N4n9uV9ݚ { t{ v6l \"nlUw9u6p48~迼 I'1L#rW?`F⸔ϵ{(< My'aC; L.l/o,XhcitJ Oi|TjF(}g^ɊDJP(\PfÈM ֡`HP~($xC_p>0$:ubp2p׎!.d.c7W!CW;!7)&ؐs8tӃ) $&> eme_pMF1-c36>l[az1yh %%h 5p ..$Dj5}Gqik/!0JG4Xi]BC(ClwȐy@{dmga0˔0GShS}>B}T>j7>c$|fC0ndtBN\RN|cΝcn n+MaL]Bغ9v;ڥK[| &7/BMxUxwڞoۋR=]{p[?mp[??mE7 %w~kCk(sE8"gt= ԧ/nLdD|)6*\r@ %Dm'c~! L4ﶶTo7Rj *lBF%TàH0\#~X!MrhI } t\=@5DXC$DD\KFĀ#E1ZL2""RWgLfBf+SXymSPYD 23!XyW^o:3PMTL|&NC(mc(NOΩχoڑC  !E{c2;4 y!4U-&=/fM2oTC8-č& [@G|L.>f^ԑnKĕévdwsuuօ>>4^C~b\&_1n `a6 BE3TU߈PVnϝl3{yX;6MnJmRK1GVފ6mW dœ qai?Tyݕ rȧfoLaQ:Cf*"z\6-t盆UȪg~VtI!̠B"?ID:m" g2++.`C|CT/ / k+2qw Jxoh4t혢UwwnUem->d^ONXӅb_kñLSrLT!-gJgU,nGY+L*e o.Ã̶ BҜPg݅7f]Cr=zSu@\;=*v 6eV^CZ[:[H>{_ame+>1-:]S1![_|t _oH2P۳G`۳46o"}#2B}!Qol &[8#C/!'(`Y8c?㦛`O7&-n|C86qtj9uko;~ꇫ~ Kׁ8ܢNo>y`Q1̇|+o7 "V.>vz }hρeo[CcHb6D_>сs)%-Q*kTYI#-z/^:#W)[?D^Kg閍- Q"#}"rV*žsHP߇'ArL ye 8HqÐXр{bČXNnI[iu!7 hzR]P%ZLS9b,4'շ(x/gbTţSֶ,!'ux0TnTiJ3%qġjyI^̘$:4ivodB8/'qʷ'm|Y~U[*cv`v{eN=z3_0B߁X/:KX1Q@zZcz}YoX[9Y0@1HWbto|R%o{˪S|e:S:')Q"X&]e%=!reE : sUB$~riW׍߾s.'Q/ h8|䱱 ,1 t?ryö5ڃYZ4 'iU6J".0jxaU`3|Dz|.A\`W"~Ez 7+վ$q0e9+c%5\"O% d)߳*F c%&sbJ+8;u-&z{R[<+#pcF'l&a&,a7g?pN3./fx@av3)j62 uئOGMS?O ^7l?#>NonN7x]l{8 06|oҧ JR5cʕҙp`'@`qF135\F/ӎtG4 A{>= قր1Ǹ"coikʛߧKćhᘾ#c&}v~g_"F wӛy Qoić5"v8CIwzef_%IPA&cog ]m^{:texCCpCqfLr\ulldqҽUimT>{@/8o8u;FǼRElm, u^JTdl"Qp)A\Laذ bjţt^bѹÃԕ}#x@e"l`tT4łxV&^8Y,:VOT=: 7F(e, x6(Z3{Ŷ@ @D2X+7`tW;]lv[ &z;Wۂ͑xbĚE2L!GO>#PCk:ܔ~goz}7,Yإttdr 0R!ŋח1eٷL1gg2 !&.U8} D(zx( 78/G=`J ;b KJ7_GA`G|Ϣ:êܬG$!-YV a>8 d -}by(L9}ޮX<uyA$5?zV.(J2)p̠>_NF ^7o֮$h0zLcHQ gB6Ōzz0|^p6NFir}W 쀓olknBm{އV \ G5mj)GJ႑<7}ִL %x֍@+' FC U׺Zۦq;||ӲKEgLL|&e)Nh 597-\ ~IO}#Jxlb آo !%3v)''L}+O3Fv@=vC5Q:뙬Gf#|Ϛ}|bCS- m?ܾ"W:t 4` b`<@P{ƗL; 5]ƽ܂}hLZwbkD Zg;3a66Y6v:vn}ciQ97$-rթ#F)D Kv ą~Sqb[Ga|5FP>yGUƀ (PE^D64$P<>.Zti^*]p {rCtfYPX\{ B WӃ;TAfN/Wka!@'s{@w-, AQ]a+2ˡ!9;*ƾfc9fYe%x(#1+YjW>ww' IA=٘2VJW Mpڥ';%^*!̺H5'1 _Ӏ½]d>2zKoA&|YK!(g?yOpm>b(8u5Z~_hqsZ|އ8;T3S< E.`'a,59sO<Y}3zGI_(8 {hA\kmfZ6Sm3mHy`D`Vނb>D[ssu'`(*E^KR * % B[ _0C|-*<ɨ5LF0{fyylͷ^UuC1 GA  eAjpZ0%_!DJ)p#{Ôu/=f1e]d-0һ>,9PimT=p+ar* uRF12/☂|!mKpKz?U&oh}5Lأ "*z:'M l]'6H f30_ ShM."e2>% s>$ax$pG#нfi'ꃘ iϧcϭX'F`qbӷ0ӧ6WAMS; QT˙5}Y / aR8$,chq4VD$$ia%v0i&c(E0C8y r>\}}\>n710>u7!N72A!')'`1uక.&$amM{mr4,K#|z Ӆ^<ׁ{~x kjpzh;;iX%/Y+Kؔ>fCqt}L'0P$rޓ/`8b]VN`t_a[ /nM5?dqC xi ![a\~*$mDz%:lgظLlLWSAQ#HQ<ȏCF~2(8 汗-Dpd.C{%){d+x!C Bdɺaׅ-ꃘxo&t(::W*<,uaOɥ31x6:^ 4|dZ1Z"Nh7{TT됀9 ed/dh|Υlêrˎk &k\F&t%a*Q%TQ'ü>BWHoU:=:rAUi=nݮ8a8mrrus<9>:݀2&eȍK#̸ˡySw.U1]x}nĤHڿ(UPUŮC^I|s#Yү?cIU߿Zۍ Xjxk$|Vvw0?ں1՟3;\~EGE/#/8-V%\#|8 hxrAc/×V\GaamYwn(  s(my9[1DF-Ae%Fon\V塏ĸ8/}Hr%a]JօA`ˍ9V=]QtƟ[B='1Bh 3/JRzf /I0./݋JK\S״#UIӊ2Fq.V'+P|*8YmƲXMw޶0Z⑊॥=@\Ax)7P8ʽ-y8+v1Ef1k<"1L67PlA lI9*S׭6L@+ʬڂTf3(ᣕoM d-E8) k},CT.ӯ|0n`arᵈ|cN&|m*W& d^o( >-ջ͏Qd<*~u 圙&r:*! qvy N6 dM&S6Q:CȤQ&Fːku[K Z (o,X? ׭\N\F9Vcu..F Ő ;p1n5 #qqvJ]ciYdʕvϔk^o(f7F9CPr2 sJF#vzªeXBpGv[9ᄭ?cOP1?_vY3SԒ*sgX6 i\1JJڐWf3Ǧw?tCL\TTtȘakW(=eP[YK `cXhu7DA`@r}_@ Vp.Njl, wYUb'Mѹn󠑃]E 2"vzNWkPVOD5mR2[v{Q}*Ŋ\ 0yĵ<@5q4ʗ!9 RVKd-2l⦭B.)牍u [aC ȍʁ1X5S -rTn‡sCO%IPz~m0 u2eٽRb]Օǩ2'u=QfɎIH !cfjKNE&iܒlH9?$1qH54mL'9M`ė nӣ{k_]/1 K>&A 0q*w[=Rئ)#pߌ Ģ稟&ulX _œN/{0*L2_X%C9" P+ӸT nkbDze, – ؾ=?Y*5P%ȏ/>|,y;' 5[z| -*8#Sx/!eiAXq߰%ty@D$/S^[c1O G(~,5XYyA޻X,PhfdEk.$ԀMˇHx݌Ȣ?wU[e$W;,6~nc}bcm#3B!HMS]m:í.掿t !4]L42/g k#Q 6^O&͓-0SZbr B\IC }zb&d8A>FymCw/!>xN'KwQp_!x˓&T3WmcB2xGU-0n =g!k>us6E>Lj|@s3Szh'bKgNҩBNrl_m"O߫b\+=;l7\= B4ح]hd,SYe8OB5jt&uOvRvZ:FFaG`M `rb)eč \'S?pe"{EЂm]O*}+W4k<|$4~<*8A >F8/HTkw%4n,[4ך˧0j{/ͦX|c8nRrhȎ a|n԰4^6#KmytMJz5{;;$^+N>}@R{QdґoV~D)`cs~${yy}v2{/`|~Z6-3g[Cm\-M[Y_v|9YS #i(XWpV{=M59J5pa4imJΫ1ɡE;`Y\ɲT0ӕ)3Rv?b]/k=§|Qh6ܥ0/wJ#Jj$}a6 e9#Њi(ZzuO?PJb`D"GK;Kl8XH'*|3 a0 q(6 iN2L %B7A: q4nl阰1&Yyg:衡C){iqh)rH}=+>o;'sCty:piD:\f\GDzAR-vr0H&kk물S KX7iЕ=stǙZE4=V:KIL[_~CB%DF0ߦBd0~#WC3C8F;GZ/Ǟ1&䌱JҙEcIm{-Ԧ o҆]8%xS?,]IAک`>]8\\|.Pg.rISe=rvZߪE8Έx:7Vҍ+zTViFa^_FxCſ2g~=?eD__H\#T>zK{^@ TD@lUjAo(F| ʟ{Rn4CbTSyWKy;j8"+IMAF|b^F4IW%(DȤL 34Ir[ 1D~7xdGL_}Wt>IR8}A#~Qgv薉=_20?uE8vo~Ywm|k/N_35׋miDT3oB|Tx7`%!Ǫ_ Xံf[ٸM66T@g3~IOo,lcފ E X@5 ۟[C=6/r̄a<_RיL{UbIc]!=X_ aN^|Δ%n+Zlm =+ hPLf.KOϗ Nzs?~b-c(FzTz-{Q`V?kޡKXGd-YAuH+j=&?TӢ|b3.Y; ]Jgth"-dZbphZ !Ǘ[j% /\]s-Ǵxs*Ot8 By \>*'.!tDȫ2* Jjԥktr7Yw\ryGa] Eg$TNݔg( WD+2@lkHWПpba3 L7d\Xl0*c`u)D)͠l\=p[E |: 5n Wy;2X3%v2s?/b+A_4VOܤ,[=tmXJa.@$8LR9`gefYDob%xG4ԟb*N3T }gu,37W5Oe?)T%f*X!qN\!IAO$!iVxbb(XA,EJ *T@Jڶ:hCitќ/Bg4HZm\ g!oT|j]J|8LlȭMŤڦ"oT8*"]=T( e> gw}4渶5FE~V(%zX u[^vb?|(<+۲3PlzXq~jcTDPʿI%ϣYG(T!S F=+ZD*f!j4#2k)@Xg8bt:jWɳ]zq9ha4UB[Y2I0#QIk& ތ4CiPٜo%q!.)WIс d]e{y!6<.,os0ыXQʣ@K3A[${'%H)K0 0|i gjy,1/%Bޮ *Q2}.6iɻh`2U1ioZ&ʻ+o-Ee(?=D\dÛXg4q5Ubys 3q_ZJYXtFi}1+gс̖v, A;A`ڽV=6l7+!nO _ oa sC#\@Fq_ͬ]^-FA"fcfķ@ N74۸(Atz |⯲&%wލ1wKQ*?XJx2)6%P-5&b9C?E>BW>b,nڧG~*hpeI\˷2Zs]lnMՅS:wEfܜ *KPKM5!?g87@6_ xn!iUr˚W~b2 nX?5$?6<& nZYYϨs<é|1JVQ)4^}4B NBG}uYiz8[<ƎRr0wfUUZ`0!<R-+wmlmR?7:=.4%Cs'⤆-O;[)S&SW 4ҡKc>)wyzH ZCUQNuM-XP!K !^^!Ӝ~7wi$ۥ\oyyz"NTe,V||/05d=t 'cE-5ef  Z.e}z,sʛ"lXzKO,.)IU2jz"ůI!C^UD>πU6Xwkl>RIk9dĕBpXM `$U> stream x{W_bp !ɥ\44eLVSD"dMK.4Lk3teht/D.S)|Yoϭ39g=?Z3~}.Siaaaaaaaaaaaaaaaaaaaaaaaaa1OKK۶m|޽ӦMKOOOMM4hٳnݺ_:iU'''vڑH$11ݻw6,...Wԩ_>F%3gG!2駟OJJի5 oN^^Jk׮;wrb6mH>`K~'EEETCרQcQN,X@LRꫯ|׮] t|o6vؚ5kvЁQfΜRҥ q_qR^V-LzׯQIΝ{qljwR'-bK9yy|޽9V}0*:qH:99モo믗N:Fʑ:lfͦM;C999/lm۶)࿣ WwA@믿XYٳg3o[l;tIF?,}buzǎYb)߾}{Ν裏FxjəO<򸸸^{/R1޽{98LGnzݺu!+]^x!7ұ \{,?XoGUz.WeҤI@oCM+zȑ# P05 znYfW_}2W}/<5W\igϞ5jԊ+bͷrRTT$cƍ֭r4lؐ_z%,}ǭZ:/6SL)qWKJJڵkR_h+%\꡸٫W^5N;mQ:7իGAx_j.T@'lU]r'ZlYA5j(oФI{ϭ%UY=z[-k1ω8e.'Ov!ΐ >k!usLH233c=۷oRluQ/c] ELV_'᳆ vر]v7oht\p'AsE\K"'=,)σ_~Yyg{kvsE5m#K\~}|VV"5 ";;[+Rq`Ɍ=3~42`'SN9(L)Vڠe˖^y啑cá' )4` .)k&_oQ^݃<,_\@ R^K9ɣuw^w4?wygx8sN |Æ Zso۶-,[o2aڠL 8Ptꩧ VYb *X'qqѕfCa6<ʪv42W1T8khxD_psj뮻ꫯugΜ>va\Yf{Ϥ(aI>vZ׳3s't.?^. 6L IG$YX]Ido{#Li~Wգv,UW]&wMʉIL4M.a\'''Թ婧zl х%2Fj6|2ܜiGІX+ڳyIlDnKݲk0ZX!Henbϟ/ӵaR'4Zx[ZȈDcn?GӾRpg$yyyRNΝ|F*7"KG '[ӓO>8Xb̒@t_gްv!뗚ӧO 1ѩTӑVA}.at_~hdvCNՇ磻={ЬgiZhNceΠD@f͒{LJb<F>G@T+Ug2/Q9sH!d_~\BH]X 7+BtvMĄ?<3Rx)M ܨj wC#2Gn&j'gQ y)SHŰI8sq$9a\WR9+Jqq1\sbBBɰcRcII97Lu5zU6jՉ(nj#>s.2ҠAϽ`{zwB߿~J]Xp8+";ȿ+CN QȌ3'h[B)RH6{iy7O _S$fuQA qySpG혚H4Kv94%%%Ph@?}'?UXtG`=NO?l%#5 }h1M4 IMM堧OՎ%x2{*=}&ܰaѣ7ocNgZjqC \Hhbkժxh U;"|N\X5=NHHpΐ^!/[L6t~˖-Rkx_qXAiC4ncN܎b9ӥ%P\KSSBXv'ތ"wW(K λgnj/3 [gy^1kH1kW:ȸ9vf9!!+J`Zu"_xQ cլ HWGd}jjII QZD}y睷yf)c$%l#|_LO  O&GWHXuMٸ"u:@q3qɶիդ޽NޢE =y@;R/Zj[=..Gw„ }XƍU?X0ڵk@5k~3|p>Yèo߾VQWޠA> /Length 62 /Filter/FlateDecode >> stream x35г4U02131T252352(E M MA"0]0.S4sr2Ҵ. endstream endobj 5 0 obj <> endobj 10 0 obj <> stream xzip[Ǚ`w?EくDIx($@Iahe9;53d\vArl9I&lx7OY'NR3$.Q<_{Hڭ?Kx_ww_?y2C񙣙~KO"^G[gN- _l &Od^^k8Wɐ]k۟,y2uηv 4Z`™`|U GWUO0+ T*WfVO*WP8cX]O!78܌b O'N|ɘzg9 gc©ԼF[bj+oiYyں`>iڶlE}^1#"?\{x]3yVyFnmk7n c2M:PA@Kz5g}}Wܢt~gа§㺵x?Ӵv72-e|?C$M8؍>BR]iA軎L}?:ZRMzj^2?ǐ8$PR JK8$ S >W/q!aWbGdK SS)I&r~.)UA2$3jh*!HRjDj6X%4K_u`T$.(ٓ)zH&0+HT5ؘO鑉 {ih-Q-r26pTSHz#PJm\n(53]QBSީt:mI䌄FR>{r e ŸFl&-`:HfA1!8P3 &94bBҊ lxnЄ0L'H_kFR`1)\YF44fF)1K R|4k^zIfPL.b"#y #^* [B ŧeq ]-2dWη8fG2TpXHSB1Cʔ & \iL|CKU yoq)f4 Nt8qq(GH4鬗!@8,$hFff/ 238Y$+SdKPTN5ۙsjd FIml$CX*g&%IH 9pDGJ@0k󉰭{u"ΤAf7CLC&qc̬e"]{SUL] (%\.,Ȇ@ LD z+A]O>ݡGPNEPNMOe>C9-}VrE KhZ>@^ mXt/)/oX /*'UYT*F| |U|)|YѧG }ր|Y gGᐰ9lCuM T0L}1$5&C)fD?Ko.8g⻨IMu95w )R)#a8-!!85gB~ /t9^`Usؖkv*k+`!X2mR,vng3L~!,ДrGY*RV] h*H~3O箄EAvhoF2=lA9%>Ԃ*4 il=%uf;*S ˪d tkn1xqV,]>QΩ<$0N>@2Lpd[g#l+BYu@х Դ}}IұnJc]TYڛ ۠SIB0ػF oW%RI`).rqanəL y \#.ݹiu;i5{?jG2$m ~ԁ!=xx>B}(*4,5Ž.&2π 4h Yt"O"O/t)/2lt=Ii7#nEvNc^M/Xs,w)c++HK<ыEf]֙4zTژT(֎8T>>glgwM_ftxLg|&t3pc cuxԉ1 HØ+VAP U٩U25 z-ت9UDVpU[y9:qb&.^R?&pbwLQ˵`CxeVNAD_,XIkkF"q'b1 RҘTI@~7! ?hr+lU*g-fT>KA*UEDZq[ H1[38/~tmOX͌m9 '*Gv ݏ5ފ0qgA7\JrwXȉZYN_kWtɟƋƮp`qPS#E(!n]^ ;ΜQg?Ψ%Mu,lpΘ$`{f? ~3[~V&%#b3P74~_rc C)0o+ \莝V۳Ɑs聭fLD(}j(䲖Dh1cJ":,EpH-JH{Ӟ;`SYkm"{7Wh}T{bT[g'b#C|:/=SO5+DZTd-J=6j5lߺ7k؃myhi#J*Tۑ]-<͑i3VY"֥E-Ɓ~}G;xhukiyw{krMZvG/M4TI2?q_kŪ ZvЮr; w^oD . -_D[5-6Hrmt@^8VuCtMk72C} &(3VoC<g76Fu5bsUsybA[+wFbTQz7Z%9+B\ٻNԎtUw,KKff&wך~LQ\nq/++۱c.NM6vlzWCx%68`*w2J_l6}o/>{pOxjRO z5;&vUH-#_}o[+ثG՛b[ͱ|Bwl_/{Op!r=5C&fc+><ſ{ܔs*vQ@gyGLhĮ8N#OJJT78EGdYPyܫ@S `vX ;^8hDFl$ %vu`%=H}[djBTML&߷wo_^?7>7usG/~/K=; ~wdDHQ_m(r8yj3'czyw-?s՗ߎ 1\:I(m`7uEpYFG^G886_sun?J^Xމ!z6e`'yƌBZ=V[BYA4q>D0 zG ׎bțuv87[Ȉ%Xh( *t\jb XMW <\blbeiNgsX_w 2ǡ|Ӄ?M^ wSz>=@J Oo.СWa(G.KnRd*wLzwҨ?Q]Fc}ި ';2]fa KYYO*nU)/TJE0ӻ/3i9z_t-Btjp<+ox#?r(&|&FdTn aB/ fqP}rX-Q?Bf[j%/v9tUZJ 늠iUjBjhw\lZlI[٩L]}og+/AQCF5h_KA~+k78yP5J? * o}רCHxרthi5@ihE5DEYIZ_lئS]I[ڒ{TƦ% Ika홡[G[.?ۻ́sNnmq띭~ݦ;/Ķe/]Mudk3[>DM0:xHb&#e hJ}3Fcig征xMqx&e_ǝb}cPhm;ꔾj$b A穦YWθ4Ūhp--Qh'5G+?r+V^ވZ"^ NsETC:hPt-#-M/{l6֑Y"$9px -K[A=EڡTOU 8$&96=}ZS{E5EENJ.u.^սߦ_?k0j [iǍ_`ZoGIC?AO C DU (!_T`5 P#P)6+!A AI֢:U`" }R hĴ q%S`jU2#jZ-HZạ:R=U 5SG']$:YbUl#| 3se h00;pwx.IFch.!Jd2XA( 0{L8c-"e>aI8cxFo>`TQsLy{G`WNNa Ez߯/_Qe*!Ƴ=+lciQ|[Ӣh$(N1.2쌓>2աROO`R:wEJ/ۙe'dh0;wy19wtp"wnڿ3m1}N3̃VȾs} lea>dxEa VSjQYT݊OR]*s1ZXx};s'F(&6{6p[q &8D7 ^%J#0b4(ozD<|3 T%Q8e/{N~1ܽLcL;Ϩ ,l]ɰ "Y`:\V2NF;aEb՞,DuDOC_uH*#i $?_WxF5:HԪuxz8GP5,> endstream endobj 11 0 obj 8201 endobj 12 0 obj <> endobj 13 0 obj <> stream x]͎@<7L䟵C~o؋o.H9jjNݡ440s׷S .]X1mJ͵49\yXg|wyZ)|IS_c\MTi9ZkHx% 1ѵ%J36MUUfWIKN棞Fk宊ZTک ګЅRK)_/_ϡgZ֖;j7jGOMb M~6K~oYi"^X353;hf(mT3YzA/6P@3CK0 323xf# ̐c/> endobj 15 0 obj <> endobj 8 0 obj << /Font 15 0 R /XObject<> /ExtGState<> /ProcSet[/PDF/Text/ImageC/ImageI/ImageB] >> endobj 1 0 obj <> endobj 16 0 obj <> endobj 17 0 obj < /Dest[1 0 R/XYZ 0 841.918 0]/Parent 16 0 R>> endobj 9 0 obj <> endobj 18 0 obj <> endobj 19 0 obj < /Producer /CreationDate(D:20241025160343+03'00')>> endobj xref 0 20 0000000000 65535 f 0000037075 00000 n 0000000019 00000 n 0000022427 00000 n 0000027165 00000 n 0000027428 00000 n 0000022449 00000 n 0000027144 00000 n 0000036940 00000 n 0000037387 00000 n 0000027468 00000 n 0000035756 00000 n 0000035778 00000 n 0000035976 00000 n 0000036524 00000 n 0000036907 00000 n 0000037206 00000 n 0000037262 00000 n 0000037460 00000 n 0000037596 00000 n trailer < <5FC53348ED66EE26B1EAB6D9109124DA> ] /DocChecksum /E493EAB87BD763DE22D365AF105E32E0 >> startxref 37767 %%EOF hardinfo2-hardinfo2-1331e88/tools/LICENSES/media-usbSVG.pdf000066400000000000000000001141261474767047500230360ustar00rootroot00000000000000%PDF-1.7 %äüöß 2 0 obj <> stream xˮe9%6?_q Dg6ԀL@A#u jTiP/̌^GfV< ~gon^4>{r}|i~Xx5}sH/?4_>=5^Wg-կ1kI)K˫49?Y^ƚjikW4Yz4kuK%|^3=ц ~- ̲/L'҇TِE8]w 2˞x^ ^5oμ6H j7QϘ7ܮzfҳ-9Z66qen8e |e7Yain0mÝMg7b1G7еk  Fx(jc1cO35t<:ewt ,^&1vy l '$ϭqQ?Qkt66~_rŏm#Z+J{-8muյ5+YoT]^9 DAmYToVצoKxF`Fywy\>aF 06 68j9bd] iq&oC։'J_u Ky |s&<F-19ѰI&0HggGɄY-bhLAzV6{$>3K5W0\477ZD.Ɖb1drSz%ԌMx{"M`j{0T_ |F}V `ۚnhyx>3Fq,F=s5ݘ owԆ.KK2sϵ[!؇~-By2>v.Ǜ+h5nmƪ Xk_Kdknhm.@g RL Sݐ!Qj"%k)s a<8g0~R2n >"Ji:)Dm"tVC=\sm4˓.YZS,L(ӦgACo (!TF,[s'2ꬲ%x [C]0ihHp U䖭DeSpވ"r-xDۭ== ]]&] MEl76(B(Cu+-M7eYAw%alð=ueYںQhL-\6јڡSWtjIAzƾjqiWJjT|g -Ѷ+ƧGח֥Va+|ۯؔEeᬕ0ˤ5z(4ݻfؠ,`%u[b,,[o2<`n%>z=ԭWIߪČFAfZ=%&W6 &аxk)R2$$(V'a%PjdcR d &r=Y'K ujQ2.{D2u:S61tl'+Om/='V6T6aq^2J8rӤ x{89b7\2*A[GSkkpNs چ Ժܶ:m.3`̍Xn!t'Rh]Z7W҄в<\*`B4Z[^lr=w仡Uc|GmfSzハ<Z66سVg {Ef/0c]ّEs&qَ!4o(@{F^nN77\Ǧl[dκ^jڽcX!*SϤ@ϴ2g| V $,ÌJ*_K nGO!c)#O+^?'tzCn׽x%S[rQg ^1IG=S'pejjPB\;%G[5y mi*wJ6tM$x*>m@)P#\3:wjǝlh+>rg%~gΈ*v8}(32|"kG_k Sc7Σ'cZw| r2jZZ KT`U_pϰAW3:$e7.{ڽ͗oum[33 ǃv<6ux 6l7Sj.{jܻy뚵IcEuTg;s?^3:wzǝlh-1t&y1jhsN6t;C[hw+u޻Wܛjíx}ON/9"?~/kO竡q_"/??jC'vsKJ)s<^W8g.TRJ<ĔR8*;/?_M𿓌d1͗W1j#d,, 9;9 RO|qwtv{KgN eC$'`2z}a|qHy4+@G9g >S5_Nާ/D et5b رNS=9c{&#߬VH\7K㻿 kojHy&$$htthl'˞g?!єcS%E!/ x(z6&Mgr!9,cƘ֍»UϥPuECxAAհmվwܕdeot !Cms VCu*u@^TxQqO>Iv@~uז݀EVp.S w2~~Gh<SCny.7/ gp!u`*Y+n>Հ5kJP>#UW>$MhAkH-5 ư7"&~jh,sE slh %{9qɱwq9 2gׄ']7 T2/NV|a%qZ'AZ9Rsi%Zv̛EGyIv>$5-Z_Auvȋuv n76x 0Ow46 Cdgr@1kp!\s.6QpEf `!Ő'ɈH-HX1+` ӫ_tL'o6 /~[SYQ_X~*0-̿IE`|-P\zabƟYigp:Vp^g Ntհ_9tzk-tbܗI?jl!,ӄ !Y 9HIAD~\gba4UaH2b?+q8bƷඹ6}n,{ǃo-Sg͉.Nqz#=9OآP .gCc!+OpĬR?<{Y b$ .t1@Pb_l(ABt F#Uï9T©JzW;'JU>@0nrdҦ˦p0Ӄ-LPL\h)"< 9^ tӊodn(2=Jp-GtLdz>4a3ɣ9Hi FIޛǘȇkLvcL6u| BC@wEM 2ڪPT/$WU`k~b^mn n _8Jg|Ǒ c%quDϱiv5RIwbQwjr0j0~i?QnLL*x6TqMI߻ ə!wI:bQExg\2m~e$y~ٲ=!?uc>/zn띬{ˑb|:ෲ~e[YG]7]:ෲxu7Yߨ|+6lnk(+o_D6Si>f0ά bۆc* \ oh%f4ti4oǨm.>ۥR 9 ܺ:]6!'ߑ~o( 㐛1 d<:˸ĦG7|~W.GfwJBf_lj|?A uNR9؛oع_*oG!]7l :IegpX-^x`j2yA>j Ţ_e?qjӽD5n[Cp+N !:[$h+o9jഘi]qj0 3a] uG 8n]d.N|G 8}CuY?p dxhЀš ϏpI*l}C ^y'Я_rthM^^ $en剗q 07H%` rYthr#@9cוC MZj"["RjzD$ noNG$ɳaNU,/Hƹb"ha PFAU5 c<z>sCAP dj 9\o-4,֣ne15ϐ+sI|ԃژZ4ժxU!HU|US&@\j_72fikܸUS[n*ȹ1P+[`[kXKŤMK%zLKyi1dYbr:M;żdHobIYQs ɊaU8OyR6 QӈC⥦5NxUXF~2H! ]~XlE| w Rq|<0uOB*t Q1d 6d;4Y/,L}Ħ |J>g#33BRSPq_N7#>F'yN W1x\mKZwuo<}[2Vw '^-rg?s)oo//a*I/5cFX~Q5/ ")n"' tk٨eR= " 85XW.u7v{Lp=/."xx aX5W%'ȓ2p!XVAz} cKZf8˃+g@秫no)J]}7/!7g~r_^O///;MRs|uahAŽ\ *@ԟ*>;%h[s,cE3i4 븘`b#o\lc cm9F{16Ji͔"hKe$w3l(+Ws6v;>nfPnVvվ } 3 `px3ìf+:E~O cЇk䙓>i_e'JXQk[FaO0{X&,ੰi1 (6&갫,b@) ^|)k) _2ҙYS*ABzrjZdu6 7r4O lKrGߌ\ǘ_t<2Պ3!PJa`FP2mρ4~-bi|ľF gcoH)*w\6Zߑt|fՐTaUX4՟Qcէ+WWN\u;j~5o :gk;,TX~,U?KՏT%u;3 ' /Zt0Ϧl!aoLi",M>ـO{a yt52kȜ!fƃ$ eɽ)w-ex r15Ŝq\L#Da>@r^<ݸ}`(Z ٣٣ qÈ1MaIȆrqZoȬVxt W:RpԓD vħg&83ǯ@ !܍R]S %y9l~^acqo#A^~* @&pBdELB ; bEw ?v;7h*@/|\zfF"a ʯȤ$On:d"vӾϸl[F$2m<03%K>5Q2~\,<)GP72!z RWȗVX :햍}@ޗYOuVJhI-sl2kh@V_KH5&CSϔF`&]d&%JiYB^ n9#ӓ]]7z A`H(hg8Lkتò3nՒa3,<$ViYV-vhek%FUn0jL+s0+S3s+%+QQץVF]NuRQa g HxO.Zfa)bxR|Ζb@J!(G2oxuY7$ޟ=qGBÕ81%60sejm̔Ӕ!t3)VSL1;ǙvV~5|[2V;*7}< {")KS~U2@'BX{D&p) PElbFw\$ݶfqR22w8]*سokWE@Th{Q_L:<` LJa6XUEoڣO0 f5<\^*¦n8"g˻7Y#Hn 3w2C0ttb@iKWz.U{XN ~78&nـc.r SV",⽅G}1 wӀA} xZ h vrF\gv1вK`uPSP.5-FP 'M>P7S-}8% a1pln s<~ ]A7ƒ:wlک$>&Qށ %oj#sy>CwɹF81sutoJ*ͨ:/JJaP0WCC76XdcZ򺟸ℬ_*J`CWp]|%.2pbm0qG.kb/| (dҡq52cEy36|Į |S᫖*ާ[>tOhPB`C's G~,Rv"ana? $ ⸫~%Anlf 3-N 35`j=g 0|Y"2NK'HBWX\-ڢENҙKd?78p60v<mH3a*/.8GR>7:^vc&Dn]'(n + 8>`M%:P+"~2IVLgG64$sgtD!c$r\YO"!f O%- bܒT3 ,T.1t0,}m5uڅH<2OP}L&c &1F$Lc 8\]8]3BrRnsR;vӹ5q#C;ˆ7- dw Xly<0"F 2:a3YY=+Zs/񟢁y8`{wэrp2<^GIJ4tn ߵdrTр Zf-ܶZ\˗vr1KCVo8։`@4HX 8o9b;3/B@n36X1uR{2tpflD7^*ٵ8F HCeEK/Ĉ 'ǐ#  l3MX6Դj:BcQ<C‘#k/ምLpr#Lt7b׍ǘ9V@&daa`ƍ]=o3ALØCqoA kt?`ue Ơar;8+bcp,µa]ϼQxK)Xщxdp'qOe_s0dj3h]Y_br e)e`SgF"|ʦ@#T//S=OWLl[A WkF-WzFLWAmWר+q\#6ft}^|[,֎ӏcye{Q;X$;Bwd*eᦢíA2^t"Az 3Rp V*a,w'Y|;1t7U8mxΕ=m#3 |>|bfm/Xk)GZ /^_p{Z cPv˻A靃{Ɨe;̈́xKƽs^-dvwo`v{*; bLelllwnˆӹ?HޠJ-GR }5k3p?OYnVum `Ս'k+xQ|;PpIJ8:/[ Zp4}8s$%BFQp۸eA,hYWkqd=R^9^VWm0/σa:UAJ';dnp d ̤V, Tm#P*`QjY6Mf!'R~Tqq4V%M0n?٩ .({aHB7!z :{mpDfa3vd#_t@ W>o#+Cm|#/05IDUٙhqqsz,sf\t3nr+n3[RaCce]9(cqmP Z SZoZ ̃.sưopSt>ɻ BAWM~S+k\-]q 6~b QN̘`>lÕo} N Sv?ZӐ4y-XA.v rYk`-/*bPguԡF cOPRI Nfzevdɒ``e^OI'lQ)uن4/'oP`s 2' ,U|QVق-0oX#"W4 8~!goy}!Jo)ς嫞yU&a7i˔cJ,[  G~AyT' F߂dZcHH) |= J*tq r-ˊ0:˻q9`;XroeZ% a(21ᘾt>J3L&X\f6DN(SGiN -'ʀ'R]AjX% _20s|;!_ sb ;:jX0 Y !Xoy =Ӆ3pqx]BE]8j\Ȃ#tZ*9ciE(]Z#Nw\ OYi˼ڵOz'zQwt#u#ߵ YXWCƝ];B| XmLޮ>ՈkmXԍտUXP5N? 2uWFIMXC+WցΓUwxjq Ԑ-{qs| yݲy{uGm nTno+t nz*(p5pB`;|ɒJ;PY0b;&uG%~e+,:/\YpV >S7X$TB("0\T:Cp_Q+J+}UJ=5Te0^r>˧c/q=4oa6ג6 btU,) oH^sƙ^Ɯ !ɖCŅw[o`tCYW<; K7ɆX nRx-/\t+Qd6cK17~yF_OXtf44 @ H_ne.z2qKtƟ[-7!Y4 T:D|1ѿ /I0./pe-B& 5| rIѓE0g*!Le}ӊ'[H !l7Ytc%T,rCIHE6l9R 1p~yŔ5@+`⭵- qϠe!pQI|bǯit ⸤Jun|& f aVM ).EMzi (g\J>ng53#qvv9H]bIYD%mG).`fbL&]Ґu҉ iŕ8VSUf`B*+v`lIv[R턭?}O(W|ZYɟ/M,$cZ~\/ːCFA969̱4`ϟ j34 A>UX%3dRD0r&( & qua07ɴSQ х `G ط\Ƿ/4 *?]Le'Z:u t8gkw.F4h 9x*'`am`>=vbjtIɲhrBFn'؋JPP/uV\ JbQ (a(Jx/t^-"=,lw~K!jybgY>zڙ1|XR|4 掕zu$%ߍ6z1 l_!=i0 u2dٽRz+0:SeLDWIYbl0 WmdTlv^|ѩ$d[rMyY1hhfۘOR`A/)ܦk3Hd]1YZGRVi i pt8`&Xހf#%AB6 U뿸f%̼c<lnMǿ#%B}H6MTbZBMc `a>qd4BG6n0&SXq.$lKcDQ/~46ـ1:\3ՆpNf e;Cn\4g(]LJ!x A /K hv &_C4k&s !ծӠk^7ɍ% 1酛K1ʀ)Pav@L>hxNT^c)-W2^ by~i܊%5/Coâ]ZuK-fK%x*e!}lO$Zs%$0a;\K,%_c85Vb>ݡXBow0Pfdދl.ԀMCv(Jt?Ft]d٢2ֳ؀_ر }X,%p0EÆnbW[6ﱬ.%ߡe. T]D4U)IG%ml{E13i7a*< ٽԀp){_Tqu7S^-.Q;+ܯp`.fjIT3WmcѤ/W0~|jo  *omOUM򡣙qT-8xC@Rp~Q"rz^{jKʶٓ9MCZ-K -۝zFv%Tg 寑n61IeZ`(U?[̰I-?:-qB*0)2v)3D6`B \P!!p+3RJL3bgydLr>_YG'y.ٙYZyu$PI=17m7-RquĽțӊXjߘ?Txpn 0q9F[KϪ%2tQQsV٬3gygyoeTJ f/HCN nPiwBHLyKZrOwR6~ytq_2{ZΎ( I2ed,R)O7۞GٖOv2{d/~zZu#)fKkie}dOF~a1ġHc4{kr:/kjT-oSRb:7CjD;4$il98_#\d+t5o.R)s7qMK}FE-/wLE2H/TTmz7SHB bn4vJx^]3fCH%1u0"dHBJ%E6{, {g zgb:  q(6 9iN:4E7&)ןâMKu'm80ntDV3do> ?oLZ*u0eR( TS_wZ87[|Ogq>MHGAsȁ0V.~N]VN ® mml}>51 ?1~`soN᪳wI b X ,Yd'gJjR'z [|b|(GLumd[oBr09x}`oU|'1&䌱1KҙM,4O]Vƒ !JJ|1Et` O jރQ|ct:pӕOJKaڃ)jǥsXD|SL+jU A-maXjFDQxZ>xSRŰ\ԽZP=.o@9l$*hA0o Y?߃$܂+ )[gW|Uvc6wN4(k Kv %Y'*/]tV5"Mg~S/ourd4BB"IdUח2ze- ]|k_-K5;=F J\:|חӢی~g5=(*O şޱ=,l[Aj /}|qER&bݸ;fڇ1ұox}}1%7/PH5.~Kр[C~8bgD#u>YWIJWy7je /\%ƑRl3o__kxǷJc#dyDjrן6m%Tgie(9B]fڥWhn纷а٭#lw6hp+w}|k78Uڼ-XK oa~>e1o+>w}|l]Ln2~]cXG}kuWqN=cw:=Ql7C}t)ѡ@FliOբá kBHXonn @*T Yi# nURq @z =}rU9)bNW] !tȫ\D~E(ݨtmWNn99GUby`#'3wAdؚÓP;(\: V B+"@̋EAlmO;{8j17 F7L3ogoeU<$D6 )~͠_r6.b!ޠ-Ly;%έ~!>opRAqb!ђD匕l5حwZ:ϳ/D.竢^&UM] ]__ }z^($F |:u7ɫcF4K .2ww/"!|ESlTMU#K!kOp{hsdj)nɭtCr}PofEnWa߼Ñ`4XLL?թCbߙ˰(U SOG?\o E 66!@HedwH\aәG9D~;ݪʁz (!&%\R$ݠ4@m(?q9$tNIP6Y@&NNIGi W4 G$] G .FַЏ\â{myAnXע{]? Xgؑ\n!t־JL@+咮rF&ess֣(@uLpMQ3Q Lk7un8 ~ ~w`O%}8>|cqD`e""d32i[A$HdYz50(L_#yB^zrC$6^5u8< ⌟pӄ56X#B{yljNz>?*JkR b{r0!9k5yd'캪TdʤiU%[, H> stream x{W_bp !ɥ\44eLVSD"dMK.4Lk3teht/D.S)|Yoϭ39g=?Z3~}.Siaaaaaaaaaaaaaaaaaaaaaaaaa1OKK۶m|޽ӦMKOOOMM4hٳnݺ_:iU'''vڑH$11ݻw6,...Wԩ_>F%3gG!2駟OJJի5 oN^^Jk׮;wrb6mH>`K~'EEETCרQcQN,X@LRꫯ|׮] t|o6vؚ5kvЁQfΜRҥ q_qR^V-LzׯQIΝ{qljwR'-bK9yy|޽9V}0*:qH:99モo믗N:Fʑ:lfͦM;C999/lm۶)࿣ WwA@믿XYٳg3o[l;tIF?,}buzǎYb)߾}{Ν裏FxjəO<򸸸^{/R1޽{98LGnzݺu!+]^x!7ұ \{,?XoGUz.WeҤI@oCM+zȑ# P05 znYfW_}2W}/<5W\igϞ5jԊ+bͷrRTT$cƍ֭r4lؐ_z%,}ǭZ:/6SL)qWKJJڵkR_h+%\꡸٫W^5N;mQ:7իGAx_j.T@'lU]r'ZlYA5j(oФI{ϭ%UY=z[-k1ω8e.'Ov!ΐ >k!usLH233c=۷oRluQ/c] ELV_'᳆ vر]v7oht\p'AsE\K"'=,)σ_~Yyg{kvsE5m#K\~}|VV"5 ";;[+Rq`Ɍ=3~42`'SN9(L)Vڠe˖^y啑cá' )4` .)k&_oQ^݃<,_\@ R^K9ɣuw^w4?wygx8sN |Æ Zso۶-,[o2aڠL 8Ptꩧ VYb *X'qqѕfCa6<ʪv42W1T8khxD_psj뮻ꫯugΜ>va\Yf{Ϥ(aI>vZ׳3s't.?^. 6L IG$YX]Ido{#Li~Wգv,UW]&wMʉIL4M.a\'''Թ婧zl х%2Fj6|2ܜiGІX+ڳyIlDnKݲk0ZX!Henbϟ/ӵaR'4Zx[ZȈDcn?GӾRpg$yyyRNΝ|F*7"KG '[ӓO>8Xb̒@t_gްv!뗚ӧO 1ѩTӑVA}.at_~hdvCNՇ磻={ЬgiZhNceΠD@f͒{LJb<F>G@T+Ug2/Q9sH!d_~\BH]X 7+BtvMĄ?<3Rx)M ܨj wC#2Gn&j'gQ y)SHŰI8sq$9a\WR9+Jqq1\sbBBɰcRcII97Lu5zU6jՉ(nj#>s.2ҠAϽ`{zwB߿~J]Xp8+";ȿ+CN QȌ3'h[B)RH6{iy7O _S$fuQA qySpG혚H4Kv94%%%Ph@?}'?UXtG`=NO?l%#5 }h1M4 IMM堧OՎ%x2{*=}&ܰaѣ7ocNgZjqC \Hhbkժxh U;"|N\X5=NHHpΐ^!/[L6t~˖-Rkx_qXAiC4ncN܎b9ӥ%P\KSSBXv'ތ"wW(K λgnj/3 [gy^1kH1kW:ȸ9vf9!!+J`Zu"_xQ cլ HWGd}jjII QZD}y睷yf)c$%l#|_LO  O&GWHXuMٸ"u:@q3qɶիդ޽NޢE =y@;R/Zj[=..Gw„ }XƍU?X0ڵk@5k~3|p>Yèo߾VQWޠA> /Length 62 /Filter/FlateDecode >> stream x35г4U02131T252352(E M MA"0]0.S4sr2Ҵ. endstream endobj 5 0 obj <> endobj 6 0 obj <> /Length 178 /Filter/FlateDecode >> stream x]P9AEO#HqۀWk[In茐3%A,vf)| sj8xL+LҧnKMԕt-*]n7웄`$)2ŤA\"HMDN3:9cexjK0unK_:wkn}< endstream endobj 7 0 obj <> endobj 8 0 obj <> /Length 287 /Filter/FlateDecode >> stream xU;&1>ȼ<#6ni_S< +{ <ͮM,(Jq]a( w:}KeGDT3B7g+M)0F1'<I!1PW7`.78K1 Np𱋞s.kܡWڈd]o`TLR0嶋.;ٛKO1";c̦K4=~#^ޑcXn~[ -N5`8 ƌ|wIlW endstream endobj 9 0 obj <> endobj 14 0 obj <> stream xzit[y=<؈ع<\@(E),@HJv[y$뭭4xIrfQܦM$=N䴧M$Ǔ4|dϙ9sf a}~ۿ>y,2C#ϝ}IaE -5:̑˫*23w>!lz6Oyp<?|ڷ- aǦW&B񓅿 X<>2;#$4?؄xt_4%V s>@DŽ5VW7MBf/r8]nLK`.\imB?|M#D,?~@<[+F ܶ7tαY&n R0:G=Yu͗Მ4?U6B\zC?`tWOR7](>AO<=c($h,ٕžאyOv'f\%eR~]thzZ2J(!u^LLdɹ:$䯓8s+rxB'x%J.!(%ZJ2Og8^,(ůڱ$ %gSWeG"IϓgD!_ƦDt,t%2Wٛdߕ( T 6 RbVaJr]oo %Eƕ(뇒0#5=Z(2LR>ЖlLLh$)>쇱O.Pi_5 iT*5N8JGdMH4ȤM %euR,[&d4!dSq.Rq} 뚖5~XLW+pVAS NN#D9; k>:Y (fPK.R<-9O#N.[3ţ)Rc)2ɸՇQ+^_sCh#*8,$@I는FeF>jYy.RS9! ؅|7E[b]3$0%KIwɖ\I -t4# YRD4,[IQd[o4g:SiVZdney;/ e-1l 5HC\+-?lU%T} o X%ؖ}:LgR I!&"d@_ m1frPѤlbl3IrqqU#+x!)YMKbXwhCk(uk'E1 B}Eʹ^>?'_ }J }V|Y g*>A>pH>Ǻ'EHzx2L A>r=c#B!֔mM7M5 ]ڬ;u0eGuw#ˬJwnڲAem}w%V'®-ur {7R =4%j{\z $AօԆ4rSv鴒e(.+aI\İBOx['iN 'F]o*N3vHݓ5\'iSd UXi4ݺ' AʼnnZ v л!SH"` 86@2QIWͤ7Gׅؒ i iڒgR=Zqۚ 0e4 [SIB*aԻwQx'oW%QXI"oI*r1anٕH[Rl.ݾau7a5~ǽ#7?ΐQ> `Gg@|":uP ' ePk[]Sh"AZ/g$Vv=TҬTPp{Xn(!}@VC&x P-vn(ym C ]E!0CW18=R Q 8+t ra$@A5̍xB(x O4A`I4=SL LSP R Q d_3(tE/ b|Q0BG_:15g#9= TlZgQ)*Iؼu)6b;W)i"Q@pV)9ݶF<1 H/* Ev+ EXw HR@0TQ@pE)£ʂ*O.4ALŃnV*ź`mCZT{rqD0&w!BޅVY5+~?~6ID o-&zhڐ/K@ a,Kv7{E ֈijL]e%rw2E6Bq(5bL=)޿L۳mo'7>xpIx u!U*zSsB' p@?E+V rF[8lb{$ʋ5s䙕2^XY}uRm5gL3VUåAgA4>wZ .MNZL90} Fo )|8 4>4;0z#?~gt08 1cm@|#AX1usP4p~b/z.l 8P0G5\00(l#?d3k후`CuguD)ݳ7x~3;Lzm-)_3*Aebs2dQ85<7gw69:4UJ%S==Ӈn܎g?{v=;IPݴ`&݃^7!a4nfq*]b w\U2 _M.kŠ~8jҸH+$Jo؝LGY9OGKt.룾z}>hK+w9vci##aIdb6:L}n 3` ]y\#ܷuOiH!zvыă|}7x u&h,i̓ 3}%%I@IYd-4VIJnDjZZ삠d(֍8y5|d/XP{xLglnL<ܧ3DǮ]Z!8_kѭ'2у $䂎2p #!Aԅ Qf>&ֵZhkkqHPv,JowdxHpbuVhtCtɓ{jkhNAŴBM '2&KՕ̕h6rS949Z{nG ǫ M{+#c־1Q, nݲ?>w6O:ZJu ŭ\_`U^WվGw*'nܐڶy<5Q c֦Hl"rlƮ/1ۥM[k`OjkPL*-Eu=Hw 7"Tih* #2ZX,hܑHWܯg(ꬦYr5vQ4d)~6B7yϰ*+%`.b5ᄋ:Uǰa2H!3U\g??py<}nv*7__\[cpo uYX[avZZTKhӨlHpE{dOcN<7=z3A߹ : h MXϢ1w>/ܗhnz9mh鐅ՒTn_-,g/ˏ]cǟ_|ZVWBTF}e5U(YĭK-: s>]rdTxqe 0}̉B3 ]p/ xa}΃޼ca+fe痕avӌê;;TwVqt~pCwTs8}XJJDKCrZ S|teezj!B`Ȓ :=b#߃Sk %œ7>`rpR1ˉQiUNVC)6hDUЅ*N]>#ezؒfƒidOТblcg0>`s4@x(ɀ++%IZsI fmwn.1 y[=r &WGt;R'<XZtf@{J`Xh+@@Z%ŹV{ٍ&dc}h;)_ Yf=K!W+ ^i LL6^i+0ЖڹMڏs_Lam瀞!HBX!mXw_ɠۅ\$;uk=dEǡVo:pxq+\ MC3c#\?mU/,_<v)3h{d,I.FQMu\ٍHNk8-U"-?-3}6S؋4mȍv|cV9 Yee-/߶zjUL1LmƋ@0ؖ^Srɂ>T`AShOk:iAٍ jbըj9.WiWz}}Z*Wjh&i {w9ښv.6snaq5x7|#,,zԖԖlХKyޓgj#5 ӛVoGP ="UŠrZZZw ΘPpٍc=?z;4 :kN7GZ O<3 yPzX%_K>=yn2ܱNTz\f*[gu++u"W=8hΏ= ..lCSß/<\K>k Gv:7+i7x,<ޟbM,@4> lffeߟ֬~|_i;\g{Ǔ{I hkP^)C x P_?z]6"UшCkuӝ_G勊YNzVT.TAKXVκIfpĞK-__`wuN[ P)v6iAXkcya M | fOk`Kq~R9~{={tpQ)wJ3Ed/&O :l*F^o. />*U@ ٰ=֦k05Dy 6!7jγbd-n tȌk B&a=>s3wGv.ʽc7,$=?rQ5\C.:?:F1{c̙]A;xD/1Ea+fVCW57RT궺.z}6jӯ Q൚ϸP5?y` F3]RXWF?l.)V"*R1.J:yj{!{^ׄwrȽ =m'޷{bN]څ8*zcr|Q0!Z!y-ou;~"h5Ճk,#*`'u4 T; [ xMQe(@vl7dԩ) h,%"3E9 ƥ;^Uzpe}ir_}Ⱦ;8~nb=щM%047/5zt`-K=}g6yZ'Nwvh}Qe0%/0g y߈+,[n^iW#&}\ NMVO3}{*|W>ɻ?{HlӬ77H k0V]y: L1 îcU)(@ 0w"`Eu1`Tݰ(;J F) M#w]~ߟ](TgqmI={~e"I 66÷NN89H3Ns8¤;sT"Hu >ګ> 8kqJ +lga㣠;avLȆYD)lؿ3m2=Ñ(s} e`Η?d[xIa斀SjQETݪOR]*is2)ZXxȼ};sz(&6zqܛq&T8F7 ^݈PvEbqq43 (o=>*X fG׼t;L?G L^&QcDCY4,2.'hwQjZ:P_kFYOXg63~M9?[!iaX%l|VWQO }v5lnG ]t_,hXxtQ`(v]~ Й'I:Vk:LΔ/[E"h~Ŝ. K1<zJj4zskx?%f> endstream endobj 15 0 obj 8024 endobj 16 0 obj <> endobj 17 0 obj <> stream x]ˎ@E|E/'P݀G,)y01 [:{:wǾМl.]N><ƛv}ifw1ICy_2Igyzu;$>~y=cɒʴ|oͧzln~ς_QnTW,le*}߳`P,+U`Q,*vʒ eފ/g5 :scXlyF.*0ZNkaf{p̿Z/p!"pLrXP.t(I $> :-tp&tp:{-4k}zt[Y-|,,Xb/,,Y:ltkY:T xW0cèg:#v endstream endobj 18 0 obj <> endobj 19 0 obj <> endobj 12 0 obj << /Font 19 0 R /XObject<> /ExtGState<> /ProcSet[/PDF/Text/ImageC/ImageI/ImageB] >> endobj 1 0 obj <> endobj 20 0 obj <> endobj 21 0 obj < /Dest[1 0 R/XYZ 0 841.918 0]/Parent 20 0 R>> endobj 13 0 obj <> endobj 22 0 obj <> endobj 23 0 obj < /Producer /CreationDate(D:20241025160413+03'00')>> endobj xref 0 24 0000000000 65535 f 0000037617 00000 n 0000000019 00000 n 0000022156 00000 n 0000026897 00000 n 0000027161 00000 n 0000027201 00000 n 0000027582 00000 n 0000027622 00000 n 0000028112 00000 n 0000022178 00000 n 0000026875 00000 n 0000037437 00000 n 0000037931 00000 n 0000028152 00000 n 0000036263 00000 n 0000036285 00000 n 0000036483 00000 n 0000037025 00000 n 0000037404 00000 n 0000037750 00000 n 0000037806 00000 n 0000038006 00000 n 0000038143 00000 n trailer < <2F05FBAE7641F6855B728434A123EC6A> ] /DocChecksum /1B7E50B4BFBD8DBADCE7DF3E3627E293 >> startxref 38314 %%EOF hardinfo2-hardinfo2-1331e88/tools/LICENSES/modemSVG.pdf000066400000000000000000001140331474767047500222660ustar00rootroot00000000000000%PDF-1.7 %äüöß 2 0 obj <> stream xɎeI%_apuDf7JWM٨~zU3wȨ${JwuQCz?\/ׇ+{/c̗??ߏ\L10{fz>4G-iUz^γQ^jWs@,(-Z%|5\rzy>E E0qwbF׭jWCD5)mN 0YEkz&xռy5mB^|_uje09Yp @Ҏ҃K3>wx}Y2j FݏZ`KӇ;@~Lg!Jc gN.:ȵr5}'0Zko!cC5q򩸼=|&NW t$ީl N*j_,p_s\eB˕XWw3-Z}a>?pFlPRJD)`^tkpu)C^`"E*ή{Iދ" T(CQZ^ &D^mtw 5\8j=/?Ⱥ[6JŃz 1v].DZc\`-[P5 Disӡ.ܢR'8րx!\)_RJtZp<7 2trlY*:|D^2a4``X #B_%n#0:R͒ H!nbxSMn fN.ޅInbi8^H-uK;`2ԽztC47Iwe8 -11kM&L6lYstwߋ]B%Z2`>k x}^3{Q^ϥ,ӇR#FX HY ZqKDE~Bd4l(xEdd"XwtI~RbR3f"=!' $htXCZLifɭVo,{ZdXrK?F4 Y5]TQةܒ%<z_ Q Zع4 aY:QS_Ca !!)4K)ܦY1C /xb&}[b9Q7,%B0PTvT˲mQxи+\)Gάu֨7JP P+%m\L,rS<:$AKZƾfqjW٣[S2cțcm~8w,߭l-q/7fϏS݈חd2 /=| ^^_76"X:p32Gـejö1،%5-hز,[˖ixo|.ZH*2}%f )}-_2D0il ^M!#";UYz6!,З |"Ș=d/P8l-j_jOOd\q+1:M`c;YaG}jI6O ,v6mTs]2't\<b_/7D,uS^:M|4xoywĘwZ-xu.X ݄t$muN\ݬt,znٍI6I[J(A)GZ%rH5LGԻ\ W˪^qrI<w Q"19X`=@q[֔޺{}eczﱛWyܰgԻj+ ^el)Z`ozvbQ[W8l7`;kF^h|!h),ۖ W g{/@EQC xm8qS숗 U_p|X%q#0V7x} ec#Zu}l}y Fݫe'3i0ذ[ jXa;ZbQz<@p }Z-m[[ l}tU {:y)4ԸP),lqE5|$E`9nhʉxIHBn%!QBOf:9NͰUec6+)jbf= o6^h:Vc +[ޖq`sO^;h!!N jΒ\IXW0M68bt|;Q)l# 8j??a$TKR>00Bat~L).fMp).sϤϬ2| nLnŒF*_k_GxDBĀtlc&>'1iAA}D ֩y8"]4z1ԢANoܴ݁QhFtXmAqrD}a kp&8(sra [ I2k+U'1ZMTz_.l; Nu9cYG ĆjtMUA?<:5z_|dC*KbދAʭ3&em |>!w˾vvFme#wQ_]mO1R}Jm&M 9v8L )lRc7ν1vsv\> A܅q9Z[V .*LlXs)h y}_Ym.kxgK.;_Ʊ=c{f.A6oMxmh Dݠɾ# kپ/.f&[ΐj q{ļWuڴ֩}sSm:h@~/;sKK ݥɦfvY \o%ݎyP,ڣxys.+ ƭx}}O%'1||^7Ow'" `s,`|_ Oן|L?~+fz,D˻9k&O1V}flNIܘrsl0'~ˢ )q ԍ8ubvZoh᧎OZ>E _Oz`l(z?݆?>'/k6fsB#iǟϩ{3k\DA]wy_oQmO*/J*l11HY$r/Z?w~!g'45XӫhkjJAy焋 ?%ߏr-ƈ |}06ՒXc$1>qү7kHt)/bѢєԾPlƃ4m[MJ(\t^DRv4~ "~W~vm_Cӏ=N|$A].^c%+.75y"KPF\",`Vݹ$9 {?AŃ]^&内y(6 |>p6CѶnDS:úv)LLpnp՘)sSG;L#8sqh0'Y;|n,`XLX{ ? 1ùf YAN7& n8C̮|53&d7,$?wNpZYL_qZpFy#ѭΏ*W¿GOS2ׄ%)’G i.}` /0 ,nV5ٝEޞ +[`5ÖRed=3qan]d!V-"l>kҵ3l*F myLaaaӆYB_G Gbnl}8ml_Ap|Mn֜W]-V:/@'?#u|839;xdy{鿽sf {sx̶̺@̼oŗoghв|?@!^.WW@2dD"`5:hQc-@F8H&YU=nBH&RnAk]l\JB ֪Cvo I`dnhf[>_yqr~C. Z2ԈA1[ r3R1p#θ^s\ubaΩWn[פD;C;G>YޞEtb#2Ō&>eYtE( #rӟ}uX k+W).q}򟈯q5+lw5MP.|JmS`5njb:#.XVroZ š{m2$sP~1(")ν9 3C29I 93wXڤ3 iDSفy02<tmwLhccF4&M8->*n˾Mjڕǩtut»:gBμPnX~XH|2 <̘h:0&凩4=pS4B-Nڋ/-I:g-b>aMtRɻo<;/m6XPpzz`NWE)8{`Not=0/W9<>7.b'6@p+)D]:5壿jGx'k[+[`^҃tL}e/p5Xp̶3 4.<\*|:\6pFF NzWi6ξmp{. \|. ]2. &ou7@ꉻ;;h06 3j5MܔP>c#iI kWkyV*,p"F'!M@ lLBnmsE uE@Ahl:+hY_MVUs*c':>[9s?¬:H2Sz 2{\"]<Ąc^#>Y(hQ.GUb1&r=AsNU1iiRoD/aT _wWoT;nKCM8N=J"@م4a%tsC}ƛE5o1K@8s_~i지4 ذp!\ !M b;K1ADZ+v"PMx}ޠC2M%)=R͎8I8 9I@~9Kfތenna:M&ܰĸuza6sm"fem2 <t_? n3KZ㤗~>|?.N(֢.Wl@i4|`iYqc ?3U*cjQw[¬6P殌͍$0;AH:=fQpeh2Ic{.} >vCGi;@sUmMvA\d'. z`Ց#Dחd2wX¼4nڎWZo~G㻩C.U-ܙY?];?#>y_~_?/yK}xy'BV7 v20E$t޸yF$VɈrk +6) q%+[XlMDG饽v딅c3Z`{eڭx[P{ ^SVq!S\ueaQvq֏[WDVw ę^ƐKw([ c|3̱|O̫Ev}L9}[;;Mow Ik_Eba,uH*&1NTLbd2XoTzd~Rc w{핍 m*@*XU+ aiV/Bein Q(ҩ{t[PVJB=$me[EdHLmDJ2P5`1QWa|ov?u M=lEx|f\Lwz6_9lz 99D݄;7<|+( 蠰B {?}B,rU6 "7 v+2^.k>q1;FOOC4%<>x*rtU(­lцD;FUވ󖯃uf(5וӑS N%1˾\@Y>ró3}2^ q6*[  {& J2sݗc*+hACbEFL!C3bb;C45r,/82CWb3m\S9ATBUI*?1ݨ cUT-eVaDX%J<s\:Nf +YAg Hd,"@)۽ ыܖE⽈|,03fls|Y#_(Yj,1Rt=ifՄ,hq@s14Be5Yf jHMǼ76j%jvVƬZ3q{JX=eQˤ˺LDm")WVn _9nFGO'vuş -p9'``]F͊Xb@9*m)'k VӲVh06JaԀQ UYGW+n,vm" LSįxwR\z;Ƹ h\TT jZ!OLHFMbdRrNL 5 xP GDoOzG=Hc2{>f$|fBfb69A>9~m}ss~q t0bw f83.!f]qAq,Soaf.Hq8#eb;ve`ϫ@w4y3z>_bXy]y3SѠC ap4ezO8E@ZDx2 o T}[#C oh+jkbg:˦:(VU2~q5n|v{X WW=7l<·4JiZ-kFb%n#ӗ*-`Y˫vŔĂA92|dتPn( (y(8T~Ϣ`$6H#2FZ Om&[r|/6?e 9v9 '0G,Za] &p#ZaL zc[Bȿ5Ly?dD~Zd7%~ËNJ_,]ĊPFСiD0>` }kՃGj?Lm 2ǫtN;jO *ǛR![=tZt&[B l@T ̲PfM8NL:ak~/y(9[,xgg9V s>s Pޅ`Ԍ_B->ƷЖ}M*̾ANY,KG+Jڭ8l<6-\.z$†(y`n%==7i8Z4rc-_ dJу#l$4B1LJ8{nϙ(v`0dQoC[8p[!rKJLlN|4T(uػ}l q붙1 (:$l36]- B8G3+Y:,cz_{j:F-Ƚ=h!1> oGnǵ/Ȼ,T Ud/k;|O>hL"nr="Ѭ ? . cbf:Yrj|3tm l\@ۺ3CV^uLI[ذu7c|7 k:~y[Enab1jwk l?)<=wɷV.C y=E |f)n ˩>y/ @Bv|y4ξ+=콎܂rwPxiO1] .e΃َ6ܹ X9y#I8-sZN< Il=EDzi 3`Q,ux,z-T}SQ|oR~cMeBUnM(Wt+zoV x=q^uр`Ҁ<+ȔRad2yN\*"C6* J BpѾs3p9EpQq"qQ\plrlt÷-I֐$&jnMtq7i>{8J7/r+ g,+7FoFK,c20UȀq Cq4x6 Iۀ}#r#>p`dy(7O(v T\(*Nwwy)80d'}FΗ|!˳ h Q)?-@N m6<Qy Ts55CAtba99jo"pRfH::7HJz V%KsV&ҝփ[rK[..q xnz€Y.zv˼Ҋ KE!. oB|&lJdLAc&7/V6RBߴ93p[5 Vэ}p(C<{;ַDJպw}0tD:;O3-xg 'mp}my[Z@ښ硅*&xЮ]fa;^d7x{[yOԋ;ۍ D/iz6gY1Wbk) b!&ŽI&]=lB^v)ꄾfEc3 %c)vSАk-mwHTʷvk3eTڦ`j!90Լh43ݍAv McabfAf`Ta2QAi`΋m[nn%ێDuqC2څ- [z \[ܛ3qgcLMѿimzO?fh!(`ETl[De3O܀9aa#M† a ;lfڤ1xkz5tkJR&o+qZ2w`^y=pAm=p]#0fܢ;.'F!+/VR DɊ7Fcl|W_QeTl8{KX%bD9޺upoꦡurwғ|C[_D/t}}/:f͗Ǜ5; Қ6¼E:# ;9 +WAw-3 k)(d( qW̠S@[ ʲʅ?OV=vv .P.;|I.x]0u&1ӣG!q1!~*`Wió'fՂ 7vNMulZ'̓̃YiJ3xf'Lsd+i |`*FW`M b&' mxn)@I\`7V7VFB=Fį ߔ]6^_mp53{B3I1Btԩ._s=pqaCuCMȉ"3-qZ;C9´3-L}fD̀8Eh^^fznfn֌[nnn4% nQMV0E6is{m܅խdpro}#y{~{O͵]7Fjx :snFx:Bi]O.*C |䬃O4;|]Jo7^}W }l{1_/bEkZs^y CzG^*f׼Z޶-Yߛ[;_[C XLpƫ$Ġ'HSo+ZU:)C ΦM9`"inẂP5+=I}$ZwMM Wz aV`/ȱAt[l8@|v);tOjYoh;Yn1 kܽTm#3 |>|bg>T7)G濇[ȨZ*_HUW$ԡDhŻ'^;1*e˄.l7a޹Dm0ek| ˾8KW @,lse7nt΃^UjKQ <j@\ >[GaKr|DT>&WN`(GUZhC3|] '>[h-u /Ղuw1"A Ԃ O1P.wHg9yDe|νՙG/En45+w qI%^uga+FN ΤZ$Y=Yc0~+E{<%~ǣq3M__mIҎBcuQ|@nWJ!O^| {x,x313CW|Sٞ-E[umBRʨ/E1v,2h/r4gh{ރT+Kq#^5猟 \ڠ؇]um[ٞhcBBSgKp1ƪP{0"_9'خ&g-VOf 3D@ڄ2\S=2_NLa HtmwޭbXq EXNSn yW%|\kz`-ׄQEb0>6Jh-8- CtnU?7W5=DpIj,eE`T$ D 7KxJe8|@_*^de 9=Cx^ <Uc*02.=ֵ@Չ4!+02`%_¿WxmI _mBE&ho)Q l <F2k7(|a> )ݛ&^՘ً=!56@ & zT=𩗥#8XqҔQ 1<q!"ĉ {Vz٧_$ ݱ3)cI@u1'К2k9!нf5ӂ KO1xC.QdVgVsx Qսg1>l{fԻVD$$%0}L;-4 KB֕a(1Zq6]9ׇ &&§&IF&p3u3wC٦EԄ$ QXcmMÞwI~O0YaޫDleX|d~x~x|x%f9֯ި4M;@)yso襎\ǯqcxZ;}"S=3 1/+1/W ODg+8]p[Dv΂R6M<N!kWt#ɻ'kP!XDZ@4Y)$ _F٣t{:({c|[-{GpՓY'5'{QDɺG@,R{yD5X T's$j'NVAs3"h7]b~hZX'V_ucb .>6y#m)@b F* aX`{q{2.lː\1I.8ZvH21 5Yw;E}#z?"I;NN*ӂ13'vw#>T,HGg.FkvXe=%;C PFBɥCXCLGiBAVsa^p+*knQ*a7|nW0nyt69qv9ݺ9{ann@]uq2Fڥfͼ˩;*\ۘ.>K ~4Ivl!򡕞|/yɟtդο/7J/ctWǎϟӯۛ/B/60)TXZ 7*-bWFc*Vx ou>lAIk4Qꌗd`*Q%~A/3;撼6x=*+1=\aYEVAWLkb%9^O)! UpF"s[[ Odyj[ CP,3N},kX1qFU,1Α6kJOo 4 #V26`iQDCC9˄syh$fa`7~Ufya[a|h 8uCl\`4fc.C-*ΩhYzȨ-0^ $TnH7.C+Gb\OUm <Ӫ2n`UFlh^ o@\LO, [MU=˹uy=ǰivXYvs+rC.8FV D^*o9[5Nfsؘ Q xXQ̎S(ɠPcS®&^:*a&wVNCI\P& s+2w ,H1Æ}Ib[*m O!Pó:mB%3T´GBPb2idKbaφ>p1փF Z,7$\/:$BiQQ,H7Gu[eÀ2#5Ix<5oKŸg>@:T3 y{ [\^ܻ,z,4S;+w0TJE-.b{SIf'D|I+z6L!^=ȍB"p1*7zyUSul9pEX%8tzbySOo~a gETjfӝZ 8Bk&bҾQ.BzC 6Sr ;) p┐!q$S!7C1 [/!!!Hd꜒͉1I_koe *os01v`7BYt3aJ498o?MUj;Zi :Is@"p]{Vֶ.ǰx%چ, }2ǜ.C2׽RT—Pٸ8-5CcrG(ӽk{NXB _ՈܭXcGIk9֡{:'aC;6|xt1bKgFTCfm`ځZ=91AP Tsz xq9Sf9[Z)-[Y,CCy84žgacCtng n*Ѧh4z 78JLn+K#R/̢ OG&ɳѥݩVБ$6t>g(ͮ2ԞKvU[n7\[E귊#^ ݸKUс#x}9O/h 0% =˼b(o䬜i'{,`xcƨx|cMyp_s+nw&n~3pg|Q] ]+il ʚ;F[נxvMPfb!ʤA*\q$IAKq9u\:@j#qėj}MHLCzdc픬zM#G$!;@: 2o1eHAB"tS<]))$_~;Fއڷ|jR]X0 nu3]aO/ Oi#|X;{=g&x͝%?1# h{(MK~J @]ġN)+wc`do{MԗM"@m UpbQKXRnyVYŷvr5|9߶\Q#,xM a oXq7!ݿW:f: zY}o-k~Y嫖" [5r-`V핇s^1/se/ wUQ39Gt=Fj<^0Ě#:&u||J]mLU~ ;!sǝ`Ǚ:*{NEA t{xL9_/uKE7`Vu1Uss#v6c L L/ -Qλ6 y~'܎xw̻ߔuy9NJng74bkqjU>ʑ#ӖqG3|p<fn_ oĪ^_eɐ|O{ϥ}2ȑ@ld;ѥsiNJB}V MkAZ #>16~EzdnG!Dtcߤt]1ӎ=}G6~k8o o.rO`^یbY*6oB|TxoEqͿ U~[MovrԻu[TnaۚI˗s3K7QOo dL&wQ-/2:U / dRZ֙B)ǖy$̈́ڣv#e#KfPFq4Dn5(h{UXQl]jYы(ƶ_–GVN/ČĞYhmAW7hػ+2qKq^Q< CM>g2&1.]#"rV7LFbg>joyIm қ3 -@~U|JLd@_U5Xg4EcpS;Beo外ԃ Bd尖L0Jj1<6J ;1 fNX&l13khS1u@GゐJR/( @ȩ+$sDV&z$LI:X%"GNE39 .T@RIRS[g3x3Ӡ'L!ać㫊g Ӳ*&` J^(u!)8=מ]W̢TfC2Jb$BNDSqZ:@^ 6(9J5)rxa3q!C7!;knYgakԋiX@$A\~QwMӰv*d4qz tYs$m#c ̚#b ,C(} q@ rBքG_JJ{ [r$>g2m!䚨a73!BfGHX7As6^m:ES3XaBTrFEF8Ɓ7;SqB*;D00m)Ҋc"+{X$JMFFeƃbhW 4)o&7yd9<]j q:=#TL2bfm,=Dzp`DI:0-辧q3Nک"Fx[S89f6~k܃()]-b֭Iu 3]zm>.6Y@H7:Tv|*t/STE NKpH-#Zҥl(!#bflP|+ ~P0'6NpA4%םrN|m\n'kTL:1PMJۊASBi*iD2X}>G}(Zf3wkŀ hSmoI #oʕq7 ( |4>e}fqa4=l֒k۹}5P:^_ޠe MZqsmbh21t{jB;{&Ov7]8߲-?y?y?y?y>{-͏7+D?v?9?63l.@$5Yr!O͢ 8L þB/zx+-ӱxoa__^9BdSU(lc4<}JUY s-=8JgwjjqSKefܜ {/k#aRHTvXS3dPTyB<\͟srjF0gĶX M&r8HwA\-@r_K265g^fX(>h_su m:, i=*+\uT&GhXAYV'0]MQ;0dwp,0!JG8MEnPK2x9 ֻcMCp/^MXFjU}avεօF N $gZkP/>룩k<kf+bZN1tlXS%@M1#&[H2˞u早 $ B͂ಞ!Ve\ʁ2#i{w+iI4H{DxldmEWRCi7&amS4(qd̜aAv3E3S2aOpn~& fCTrJ̨ 4l"\ƲƫX oJ*->> stream x{W_bp !ɥ\44eLVSD"dMK.4Lk3teht/D.S)|Yoϭ39g=?Z3~}.Siaaaaaaaaaaaaaaaaaaaaaaaaa1OKK۶m|޽ӦMKOOOMM4hٳnݺ_:iU'''vڑH$11ݻw6,...Wԩ_>F%3gG!2駟OJJի5 oN^^Jk׮;wrb6mH>`K~'EEETCרQcQN,X@LRꫯ|׮] t|o6vؚ5kvЁQfΜRҥ q_qR^V-LzׯQIΝ{qljwR'-bK9yy|޽9V}0*:qH:99モo믗N:Fʑ:lfͦM;C999/lm۶)࿣ WwA@믿XYٳg3o[l;tIF?,}buzǎYb)߾}{Ν裏FxjəO<򸸸^{/R1޽{98LGnzݺu!+]^x!7ұ \{,?XoGUz.WeҤI@oCM+zȑ# P05 znYfW_}2W}/<5W\igϞ5jԊ+bͷrRTT$cƍ֭r4lؐ_z%,}ǭZ:/6SL)qWKJJڵkR_h+%\꡸٫W^5N;mQ:7իGAx_j.T@'lU]r'ZlYA5j(oФI{ϭ%UY=z[-k1ω8e.'Ov!ΐ >k!usLH233c=۷oRluQ/c] ELV_'᳆ vر]v7oht\p'AsE\K"'=,)σ_~Yyg{kvsE5m#K\~}|VV"5 ";;[+Rq`Ɍ=3~42`'SN9(L)Vڠe˖^y啑cá' )4` .)k&_oQ^݃<,_\@ R^K9ɣuw^w4?wygx8sN |Æ Zso۶-,[o2aڠL 8Ptꩧ VYb *X'qqѕfCa6<ʪv42W1T8khxD_psj뮻ꫯugΜ>va\Yf{Ϥ(aI>vZ׳3s't.?^. 6L IG$YX]Ido{#Li~Wգv,UW]&wMʉIL4M.a\'''Թ婧zl х%2Fj6|2ܜiGІX+ڳyIlDnKݲk0ZX!Henbϟ/ӵaR'4Zx[ZȈDcn?GӾRpg$yyyRNΝ|F*7"KG '[ӓO>8Xb̒@t_gްv!뗚ӧO 1ѩTӑVA}.at_~hdvCNՇ磻={ЬgiZhNceΠD@f͒{LJb<F>G@T+Ug2/Q9sH!d_~\BH]X 7+BtvMĄ?<3Rx)M ܨj wC#2Gn&j'gQ y)SHŰI8sq$9a\WR9+Jqq1\sbBBɰcRcII97Lu5zU6jՉ(nj#>s.2ҠAϽ`{zwB߿~J]Xp8+";ȿ+CN QȌ3'h[B)RH6{iy7O _S$fuQA qySpG혚H4Kv94%%%Ph@?}'?UXtG`=NO?l%#5 }h1M4 IMM堧OՎ%x2{*=}&ܰaѣ7ocNgZjqC \Hhbkժxh U;"|N\X5=NHHpΐ^!/[L6t~˖-Rkx_qXAiC4ncN܎b9ӥ%P\KSSBXv'ތ"wW(K λgnj/3 [gy^1kH1kW:ȸ9vf9!!+J`Zu"_xQ cլ HWGd}jjII QZD}y睷yf)c$%l#|_LO  O&GWHXuMٸ"u:@q3qɶիդ޽NޢE =y@;R/Zj[=..Gw„ }XƍU?X0ڵk@5k~3|p>Yèo߾VQWޠA> /Length 62 /Filter/FlateDecode >> stream x35г4U02131T252352(E M MA"0]0.S4sr2Ҵ. endstream endobj 5 0 obj <> endobj 10 0 obj <> stream xzit\WzU}_^R*lVJe-d˩Kݱ%[qN! 4@~elpzp8&t@ӜNhTJ;sfΜ?SW~~{Ȉ."%d˟{!:B>}jAl{;;ry B\BfcsKlg3 k[ y"6w~w5> #٥,E>f̎v7BBc'ZWj[O)6ЇK?F&h2[6rҲ 1X)UU7h[=ޱa#}"/"%񯼳bl5C>+lzPzXBuѵJď<}(,h<ݓŁyt@vIm.39'^Oˤ:4eQJL68,s2 KA)(saq:tdJvd8S|5Ijג(%RYF2rp4H{]8Y*(%9$g3ܘ̅dW*MדݩgDsR==Г\ufloWӢ<2] ;(ԑɈy8.%tb6AWIOBHjPd`2@[15-(rځBٗhbASL6#P&Jg@)i5a8૳ 65RRIILlnЄ8N%E:H (_gZ4a0%^ZfM5hh4=9ȎeR&4^TVemX.I!YM))HɬLd< چF$,Rn DJANLf(d7VVbFdCpq dT'ŞR)Ad1LJne mU0 nv9n2"V HL8%'Gv70lIm VL)"`VmI(@m=<+g3UiVZjN3~wȞOI![~d[p#[ jk@>z@>Ma°wR'S̤a)$7A<@(􉷱hb@hY'45ՓHQpbqj Nׄ%/_`t#߆]Tvpk!Xr<lj;gӀLbD)Tj9$ d]ؑ:0v9A!weNZވ!DqUٹM(dAJEyh:/juF$iCҖ wRR I]OMH6US4ӽwNX/Stҧ*@HJN 14pQjj&8¦.DԨ66z6+E hZFql{S|jh]#UkIp*k8hbIG2|3vBn]7:Y7 C`wX ]ިPEFfDYh> ZR:SzkS]Sh$AZ/g$VA3TҬTRpGDn(~ 9`X!P oQ[a;`L5z`=;)N()vS 0P ̠L:VxB(x O4A`I,]StM LSmP R Q _3(tE/ b|Q0BG_:1Ug-9] T鬕IkU8 8`UYXR@:nR HUzY_P@~Q)0SEO)%n*ˬP@!LR H _3Vx `&u2W5Tܬ69E Z'GCcr"Oi hM#xBQ[V Xr{Л T=Ԣ@ˁqPZShfYyB&ł. k`f;ď<%MF`" DsZ(+\qYnYi[+Y:A<أ3Cv;w TYSkkoT `{ UW8{"5C;:T1O}Y{0o/He ȾtN}Z/@[_VZlVb-$q/ I(貗 2r:5ga2lVYAnVt9lrJ2\N*yo8px=6BnB #ə}?rOҖZߥEg-/m/z "i",5) /o !9j5@`ضI 8 Gwn-+O>3THͨ U$JAyLWWY:kj%iعjzXԭqZ^ڄk18zTcag8̈́jwMºs۶>h١wm+u??rDYR5c2u=.T NJrxbl"ub[U%e]jPgC  , 񘮬# qTjpM-8`M^@Kh{;Nn꺣aqd_;f _u숵lZ5ͅ*ѱyMхӫ^Sk,%dRwR 3 MjrOڤZIj!"bN78t|[ aOOgf^ѾXe⟖uwӰXp}K;@_FT(iy̱&Yp[tՊn_m|DY(6Gd&6o؜ٲqOts)6Db{DxC_fvH[7;M#u6iSj)$ 9وr$(MҸRI:v=$Xj ֨畜5ՒU0p4s Um1lm> &c4ۜ{ldљw<ۃry|>Ǟ~a*7W!^P[ _)o붚K i[ȮѮѪRMygٶ U}e^}ߙs}FϬO}|r3O KbA4fr!%AI( TYIG̖{O05D0YιN{ 3@kpX G"O$OyZB k3ͳć|^hq:84`EY2\V,)q;mC Dfn47*A+Q[`O=uccn|*[7*9:w;1s'&THjkڳ]i'ƑĊLT%- |,E{c&XL^-#6|"~ 2G2hZv& W`* RkXm:%}ZsYCJCKHTwE19ퟛK jޑh?_(wsûV>6GxDjTRb\-# h(uKJOa4&oӿ_[1좫pA d vXAƂ $GMGLXڔԆJK桎>݇uc~aAx+&3>T56 ՟9"|la[8ԭM7\D=%0{5-z𧧛.w/ڥkԙ߀Ɇ&JLZ,l 9;v, bmGk2/vՊ2hu?3Poۼc cϲbpVKC+Q+N 8"h,fH> !hV YBgכ:a3V+!֖F1VR@[-jpeѸC#3UU;շ}jɅvnĿ!w]ٸRnn(k(۲C.OO7wMo~ 䫣\T; WU¯rR 5V˸{F #CS* uvԅH L嵉xmS\kc3X>587. jUUңeޢD`g}PRC4;4+VjTK.V!*(ۓOmSyǞ8Շv/=jw~&}3ά=UW׼FE\snuzxgfԅ} }s3OexjOx&G4J<tx>ua'jhݢY_@L,^l Ջ-^-vvPb2z=N1` TU `1ǚHnfH9ʍ K] Fɟ _"͝4QסpހyvycY36=i6 rA @A$J߇z],KΐחȘ-TnrAxw62cQrV%S>?sн?e6I/ UasSkr ҋ[9lc$ yc-ʀpC1cWJ#rG`?x.yKJU?IX2O欮ѲHF̡\jyvI [nѾnWg&3{smxs[[ɻ<_һ?(1} zΙ= -FfE+ũ &hTZa (7A9o5]&D@ z}0=c]O_H,s;{& ߢ1Dpu]L@Th./t'vEVH`^K[i]A8.h5C~J@HE_F\N:H]>YQuJ; m^@ݚJZ>{rrI--"pZ0C{7I3#Lo7^?/wۙ;ZwWlbsxiZ} 0ct|SR ==LޣilF>_j#&зR*zU}P2PpYL"3?Dlv?A;pR\G!4޻G\uoz)x0MNpZ:oz!NG'*,#Q@as#s}QA.U/ Q&,It;cHFMb -t*@w ?8i{;_G/ҁ3|-zUwvăӻpL,, 4SHk憗e8OPu H endstream endobj 11 0 obj 8154 endobj 12 0 obj <> endobj 13 0 obj <> stream x]ˎ0<|f)E/j@ M9dEp6ηaG_yo=t^e3mT?tKwm,mxV,ݖPO~:/Y=> E=xO㢊iTq\}|=,1{edMmC;^|*F&c߻b}!XZk"[\ "5 Bށ_2Z<k[r ^lwwRChWLZ Pc/43|zPmPzP[3hfpxnaLʀ6)5మayLʀ30)LC'/w3Ig\gi_ߦoj鿆z[9Yo>XG|k皨B"r)nV {oiF~LL endstream endobj 14 0 obj <> endobj 15 0 obj <> endobj 8 0 obj << /Font 15 0 R /XObject<> /ExtGState<> /ProcSet[/PDF/Text/ImageC/ImageI/ImageB] >> endobj 1 0 obj <> endobj 16 0 obj <> endobj 17 0 obj < /Dest[1 0 R/XYZ 0 841.918 0]/Parent 16 0 R>> endobj 9 0 obj <> endobj 18 0 obj <> endobj 19 0 obj < /Producer /CreationDate(D:20241025161003+03'00')>> endobj xref 0 20 0000000000 65535 f 0000037643 00000 n 0000000019 00000 n 0000023042 00000 n 0000027780 00000 n 0000028043 00000 n 0000023064 00000 n 0000027759 00000 n 0000037508 00000 n 0000037955 00000 n 0000028083 00000 n 0000036324 00000 n 0000036346 00000 n 0000036544 00000 n 0000037092 00000 n 0000037475 00000 n 0000037774 00000 n 0000037830 00000 n 0000038028 00000 n 0000038164 00000 n trailer < ] /DocChecksum /DDBC6675C4E9F89733268AAB9B187F25 >> startxref 38335 %%EOF hardinfo2-hardinfo2-1331e88/tools/LICENSES/network-interface.pdf000066400000000000000000001143641474767047500242430ustar00rootroot00000000000000%PDF-1.7 %äüöß 2 0 obj <> stream xˎm9%6?_h ZFG ~ըҠ~_\k}TDfz╨kga/I3)_ӕK[ӺˬӜ_^Gz?.iq10{fy>մ5f-iUF̥USrOmZwח"]N8_KN/0RmN _Ok/m3"0}>C]OE8]w̲g6\Ӌ7̻lĠ6zƼv3 d`l mI;73,q e#ʬ`= c{Z> Zt6`?srlp׍\q '\7`D^Qk흹<`L`|&N>`tr:;M!i5@zڵU4][iӢ~Qkt" `L]_r&HكۈZ+L^:S-+EoT]or//mKM DAmEToV%oӂH-xFZM8Zfs,G[O Qjmlp&psvuiq&oCI'CD<ftrR4p3x@lV 2 rlY*:|DQ2a4`` 3B_-n'0R͒ H!nbب&Xs@'7W[_Dp|47#lۂٹL;Y&k4ړZ۶t\E Xٖk7M&L6lYZstڦ >RD[&SgM| s9b_DLmJm\Y`.0}-ua_@MϪ/h3&JmC7"CaDoK`So)9BȆMD \3JWbR3n"=!' $htZSL^ f˭V,{dZ0,O~fiMj0ShFQL a/RmtBXNa5tEek kXMHH M֭DeSpބ!r-xb.zXή~T" F0AOej kY{g΃]Iw8k[30|Du]Y~֬n<ɡw <-mt&uyVnЖejrońY\e.R7-pKm ѷ}7zu#1V?Ѷ!x <3_g|uY&{6 ލ6#pD/Qˡcnaٶ~iså|nZH*6}%f46 ] v:\2E0ilը&Ja!#"; ,S#J6.5dL;\mS8̗qoJd\q+1:-`c;YaG}j{1m>):شQ VBy'5@lRueTjm.y)֮א[vw ֆԺ 'n[6_n\mpF,7rߓZ%m)B .-t!,-Pn&%Ƕ8ۅ`FV@aL6XХh־6[Uc_nώ3v[U17'Kһufd'*݋v9f;ç~>_3d7;]lpȲm R8:{ jUT` N#ێ7Ŏxyk`_ q vn˂5K|I2xNfL3aaM~,0y<] #tw1U{/4u[{ ltU {jEhf !s.T^+7HRv.o9 ImӷE##?L'j3VF>f3h]Wv-Fl缃ƛh{5nj dem vڶ0A !nrlE[DM {nDh#HWJ1`9aW&'iަmIra]wj1{p]*"S.\s禟Ia+Ye/90IXTGxDBĀtl^i*wJ6tM$t*>lR )P#kgg4ܶ]lh.+>r%ϴ],}URH5iVȱQf:lB40nGOƬq*qĵ|cb$.!pϰAW3>gͿo_Ώ{[.s;oum33 C~<6ud{[Vox[(y5l3%B1d]6uhف*\>/~?'y寏滍9g.\=pJ/8ɉ K&At{exW5 ,ӛIW/3 p1rQVML\$+19tHc w= [ Ap%w7ޏ=;sA!~;Ux5Zŭx7-&(aͲx57$.5ť.͡]P[f['64i< mә u'yWG\܃ğɻR:vsoe&M[Q]:Ƅ8 W\ LJM$kO&f#gpU[,v^ܲoq^nhD5  Zq+A!D\)7bbb0bSAHˇ6>Udž͢l<A'o JPM]^ w_U8~ܚûFny&.3. Z@ Wڂ|V7^xmA%Sub^ $1lޯ3OE07d [4 15-]8'akLMb?i3"6D!@~a‡1.8X%8!ܳi“S*tzϥV߇Upcإ@GJVuIoIN\EGJ$Z0%6I^jgF0xjC3P]P z i69n\ 9ӍQgm] }?&p%\ɢ;WBU8f*n3u`t0dradtbDvLpdLre,t,vg" gU/7&}fC6d솅d3wo,Vsj?_>꫅׽4m֫L@/% n/_/Qi;=:kT`L J%MpaG 13K )Vn8GrKP3u)U\%TnLR+`Ż+3րq[i<%ܺSk@0!|HR/$@< Wʸӽ\/9#~r\uK`ŜɣO`|lyehcΙ0}:g 3^hry1y+. ë9yk5rp= X @ʍi6ȩ\,Ȅ0#/MFkmu)f[bNP]o)`!pQqQymr2e :{%6t/ܶ/4v?B̶Ȝ-!)/W _rp2D螵 ^词*F <76F0 2چ2ڇ/윱/젱7,e}aKMD֚5͵`XsQ7z`b~V,?!nXMxbe|v]L(̎(4,ʇ$0Ib^葰{5  !01P)8 `p ?N d61@6X,|m2]436!ScFc8g:6a$VkVc!T+,0)qBPi]BC CdoPzфZ>Lu z˿q6M;Gۇ'gn I u w9VVv% bc]ݖw)~r`b~[?֓g?e}{R{5[/^ U^׏cX>c[QQ8&~v ȮKEO=g5DV,.L76;!_V $KlT\ÊPLTȓ ,&*Z蚌&xL,㜤-}B ֡r80xP5YT[Z|#AekfjEA+etŐV3C „ʄ(*":Ә[0Bw͝B@"iYtMZ飗9y0&3v" y9P.y](^IXtc‰urymRaioxvȂ}r>PVܔ503@M[mT6Wבq+SuiwȩZw%tuu7&ѦH0!aŰM cb!TI) a ]PխsU8UN7]C~kM_w+;0:!5iUSk_G+yW^,8޽tmcZ:AT-ru,v%,7i/Pho(spD iХfN#;1롒(A]Si(oC }h"ojc 1۬n:iUBn7-3ʆCO3s7IA1a|ŰMoFd4fn21)F'nhf V1\v҅0[zHŁ4"*o%Zn4Z/Ҩ&y_g~HE["mF}ε؝)1rQK+b`VbH;tvgjz8U2otCa#3~@bǜ5`f4QOo"yE څug aq}qrں9]%7%w[c ̓IiIqfM\CLi-a T2R\įo;H+_j}-}w;@7ݡR4 A5vϥZ☢ǥ3] Ըt p\ 70Tzg(0c6_*$u b嬓t5vQベ4Q>۠\V}.>>oSUI*i9Z;Z 7e08Z$,Qc0`&a$GM B}W?bi,o5N/P2̴;(HCQHkV=`&3UQT*g.aZ ZɚdLkA:jZf`YZU+rj(;p^F픰L3ᵵsč&z?6PF>68yNlqdS'XʨJiwu=w=wi00 9z2d,̓Is0q&aMҏ* ]2N~GC8݌:]=ҥ-Y<*!˞e\`]k| ƊP_H\e:*zZB@DY a3+M j?r)}MJJXf+N5!ѐ[3*% K'UcAy?ZElWSU%y wO6`^q+}eEi/.tZ%Pjg *&ݜ\[*u벪\ \ {TU(& QM7Nw!c0VUqW9  kծMtRGI@i\HS1qkUu\[Wb2inBLM=0-o0p-ŴT;L[QMG:M&VƼyf6¤A)ʑ3-(xPpsȼTAڙp ITY3%DlE]75CHS#{LSG(-`SMx}ޠC2M%)=R͎8I8 9I@~9Kfތenna:M&ܰĸuza6sm"femmɀȿ[A5xFVWg ;N(cX>֨5cX֨]ž̶݈oǾb{=OΞ!LaMI; 4 2Gs cKY fYɕIgS/"r8,D[" Ѵy^ĵ}m77kd%:n֐=nt?k {YG 荪J E{ZCX~Uju:Pri_H&bTI/ƴp2ݧ0D&p[L­1 '6\#pL,[+Lc9hيW31nHgfMoy2h]碜MR 4#80TpCr 4{/>Vu(I|~դ>{>&m+mױvٗ~>b"Q{/|ߤF뛮ole3r9rr2j v3v3ny v4ypj7ɍɛnG7!fMcᐸ[G8`ߣ>cX>iG(/~^A-},LJ@AmO |cHyh^#`*|^X|^v·m<}ׇOB}L̵0(yoPr)7zh} H D'߷pP@! [-7|YBMIȆ9༵<̕$8E/rX V?^ægI7)Ȼ׃_%߼U; 'qo# >Tc*+hAĊC; fŪwwK.J XF 8Bol**_X j?ޔà\q|[քKX':<-2 y&ג䛫8DM4|2M.^ Ӓ Ȅp>hy_deO^|:"r_Q 2cjqBTS8 !E3o'_|$`3Oղh<2]??_ ٮWbv|Ro#˪SO|P;Sϔ2"p.2bHa̜cYI׮s{S I yL&ƒ&Ār&Э*[+'k ڃY^-u9%FU]aԀ ϫ};%f^ham|.@\`=N8Yq/w]B*U] ]I 0HFewbdRrNL 5 xP#k4ۓx1\33>a3!N31^fffC̾99?8v@auy1{ KmHYW.Ϸ%nk({xZv5xL%(}h%/QN [(-+ "[}ux^6F#< al2&hb 7#6N{r~^-#;Yƻ[BGh/SKljF &F6U6n59c?}\Ϛw\a&G]ӛ~x F]J8XaOX=iHg̰#;fXʨº 11 H*.ӼQ50G M`d +Y/l^6+kybQ4|u57.2DLXL̶&w5KOgX٣/zB15!ˈ6^цald76hSS{G lf ˕՗ %O;+?$@t?78DXLCj1u c|0ndXv8(#95Jf*eFi f<𲃣Ȩ ;VPvu>ivȝKfeyT1_e y:-OiüY0LȊy`vJzܖR$ނus<d=0f s;(ۻT.P/G&!^Y !P[{1iWM3>Y,'yr_,Zqm:w0$?]<h#)6F 6Y~z fN?yq4]WVZ+ `]a*x3!Ȋ BS7?ﯼLxWu\^:&:ZcJRБuo='WD*l9/pƧ~`# #yF`8Z8)o |kptibpH{h'M'K7}u0֬ѫ)ց]Z15`=H =և0AQѥ:2CO5 *lc`dO_O2rrfֿ<%9Kc9v zcbxf&=s[=l#565S{ oTևk6u sםaW2ygcnLڍnz7^ ꋕ}=;av]A5A6byo 7eoخ.z,c>.ح:}'>w3y9jnR7¥?qW1l}s7xqGA`qV| %LBfA8e Jh|*8wdnSxl^&UDCp3+5 LʊyįL ̅XC9T:8t ܹ$XSsk&@N&_sd j.<*cBN A3%ayA{GP-8 !"~ ߦrxE iYOzƵmXX ̏ۤ>eI;&GKYAsrG欋WAKPDeuџSކ.=1R6>f|[1-ѿi\eFߦ>2o'֬CkP}rdoiG(^+2|!T WLfbp4cPjB 3Bk.ztnI>l;9/5UuK{G2Ͳ9w]NF7<ʑ!UR^Y>J!`:[5g 'V?՞M6G@VֺnA;囝!V_NI)nO0rekCkXb^*k߅{a/atw+2J,es2.Wk04wwAfuy1]W‚3w0N I@~3uh2x E| w"No Ţ7 k3zƇ_(L 4yb] { 냃J@1Nj>sxOtBNF=Koj\b$ZyM;3; 6jYgQn̷yF187|έ꼚&_n=>34MYNC"|0!$Uvfjښskgq|lىJCKʹ#,l5z T~y ]8 jpxnW ȴEix!>w#` ,^AYBiWGT>mT&aqӍGp*Tår++PC zAe, E*(b5Lأ;z:'Mm^à %~ΧcϭX'FK|GɔvfyDhr S&Aȩez(Y؂3Yc,X}=pQ Ɨ!aCΝxm 8dSBHb`v<`8-L1Zq6]9ׇ &&§&IF&p3u3wC9EԄ$ QXccMÞwI~Ě`kUta3]`J:R'vP<6p(.tLH!CM.,mQL<DӤES'jBz.aOɥ31lm)8uDbiеb&mEMO W=ܙ~Ow}Hd22u2aq+No_ =Lݨlљ|ݳ% `=Z->lEoVGe];|ɓ LuZboG#%yW#xYu.=\aYpǶ*f+zp]^S|0MK!_+J+}Uʐ=`f['r]O\ @ gjo?9S<Og l$ǓڀE kq =<>Y B/.ð-0>bt W{a\H6D.0ϡ嘋nvjUdSn\g5׍;bP}hMG*\7{*l#S  (jt bi8k?c64ҿgYEnP3Ӥ{N7B%f#R=Rؙg0"a id&Bgt4Jݤhrm?xt/C\1rg 7h8WM{p.`{(<s)':-U FNvo="lm[Y>Xyaee4p  W^]8%I> SWM6L OΏc؉)$AR_2xEv|^F]>SC@;pgp1__o.liҮ8:mdu>,0f3l8\Lip'V;vAK; q&> 1^]NbX!H64Kgj Q6څuC.4, t6"%.^֭KSEjualZyvp :LBk?I6s)cn3(g~ӕ ;b'@)׻ÅHY2>gǁ l\lhK>̆E}Tc%L ~  W'Vx4]_]E9m^~b#L0Wo8 60H'f)LSbV qzdqzP^i=-Cwtž1gaoF3P&[mb&So|y*PsT::*Pk*&~;絟 QZ9=;&`?[Ȏy}kLѲcG-թ A<+pu"7H )5$f:/NЙz0X*7S '8s̑>4S FI9t>pe!ZsQ41 ],ly ?r2LP ')i (|ëXO& 1 m.n>KG 졓%V'hyPd7zr0Gj#v. 'V+GWsAE==lLw8``>c[s޻vv 9usB~#ꍘJwqRRr0=': $4y!NoL}IhK]\ߝPH>oӨA% V)~jހtpAHizBzTGl\GEzב3^\ƃ|#"_Za^_n_e"M৩ZP3RR?{ʸ= {@nE;LwV~ &A{2k4?\2v*.]h?Ǩ0Q1_{賉m}"-.+N/2 { l8ZmΐҵRt}4@(&],oח|aDFtI":f'"p&GP|73R@ -݆W$w1!$O$,\k kq\7"}d ^3􏁾!(/xQkѯ_XJ칧_7](i c]{0n#7Z=b]̈́4ICS?>J^ {Cѐowm5BK;;߷TMw"vū(Fkԉl[n" "𣎿kY ȃZ9usZ,}M ʑ߳4T\-x%ſ.Ϣv!L=Fc0É5$ =_v~`bvA3/p&H-SѕHח,|cj̸(N͖ßމnv'yx} DaI3uGoLId ֎̿ldnLfQ7kUX;}c_()}Ku_U{)3!;v6~ǼGdsrIOR,4f1Z!ٽE>f*)< *Bk~5>16~DV9E 7 _)A(یts nPZdygV #@66@8'л6~E`C!3ł[AOAǼ>})n(@8tq~|ƏM(~wp9?00IaT/djo+TCG5nDxA{Gگu'~xp̺m?fTk~QW@_jc|_Xv@H=V)P:g T6gԳݵff^I0 g߳]t=]&{;m2wTFTgKԕ%_CjТ m$e22&QfQ Y?ʺ}j`2^92Ԟ5gZ"钧 MRy8f" (aBZ&ؘn_"$,xX͟هd:iA.žQ]J60B@xldy!pKOgŜbcSbXHtJY;"ѤGfebsl[L31A<(`Qo<0 Nv<Ñu$11g`Tc&8^(X/V]N]4 M]KfRot8Z2Jct23Fs\_ @LQ|GZCDdn%ȹa~V c/=9N[~YW'|Ri,U2S`EgNGq(W  3ZR8dv?jEH߁jiDK^6`G& #Â$Ŋ|%Qj)mRQ'%e+ 4K,KVh|c.`OwLˍUBd"S 6 XzF8YNOqk"D0b$Zf:iau+sәb (OK:3^;+E="fݚڐ\:cttd]G7 ߅C[Wzh BN1g`6̹\:AQ.끦4'wYUJ;={'鳉kiOh HϙzbvH̜# hәPJ ` =Sq,LZviZwF5kժ#[nKrXb)$!>mRjw5+62g[CZmuLW(iL ff~ hSmoI :8 n]vVH`sFD(ej60IR$#P%Qv,y虹MXqфsmbh3%MX_Gp^U n>c 8߲0۽vcwl~~ +yycOc=؃ b|Q5ݙ(E4qd"`_{޼YgEW >gsC-L[),i*l46YyCWKć-L]^J\SWO\a)s.YoY /LABee*h{wXʺ썕5(UU3~ P!. \/fܚJ%/2U&@s<Ù|9Y i~@EFb5Cg-=z UHBDOŎ<aգ-BCgTF#]\h`m{Ahp.d}j$IJNYe]=f zTn"mXY37SЬWQ/.YL)Vޢ6]Ͳ a9aR_^XIIOL\^}"|#r|/bƠ$ opa]ϾTWR¼|$uZK2TZbnAyIV06Awf&#\C1X[ Ɏ< `;#={ h%> zy}8fHF.ĐP(FZMG%PS/Unr\hW*I21,1cq (i`6nE"!#Ѯb8$  mXQ߫ikz҄Pٳ07,*gtЊh&r7 `*R)["NTAF#2)ym@ڍHVWET|qd\ kW(AMμuMMHfdGos380Z:9\ٌ7T;FiwC$fQ <+M_('~/4viZnn~ @ϋ*+'IX+ fM1>C.X^^Dz h#y ^߅z yHJC%4|T}5µE9>-2zE구.|F n\`,h̕C),,kx/T3 k1zխV }XFX\fCCWM'=Ѫ"ж) (kVc CJ: /{ɫ@Ȅ.5ʗ _i PDV9 sfNLm9Yf#+@ARhMLb@\8?1;|% Q3Bbm3"!@(I(Ap]{U4o(6Z/J?Z`Aa96j-,脨N9^_r*W=\ɞu.=ŤxSJW \40{+7KNlP,dvˆz?"ɲQb= =lKxy;<$> stream x{W_bp !ɥ\44eLVSD"dMK.4Lk3teht/D.S)|Yoϭ39g=?Z3~}.Siaaaaaaaaaaaaaaaaaaaaaaaaa1OKK۶m|޽ӦMKOOOMM4hٳnݺ_:iU'''vڑH$11ݻw6,...Wԩ_>F%3gG!2駟OJJի5 oN^^Jk׮;wrb6mH>`K~'EEETCרQcQN,X@LRꫯ|׮] t|o6vؚ5kvЁQfΜRҥ q_qR^V-LzׯQIΝ{qljwR'-bK9yy|޽9V}0*:qH:99モo믗N:Fʑ:lfͦM;C999/lm۶)࿣ WwA@믿XYٳg3o[l;tIF?,}buzǎYb)߾}{Ν裏FxjəO<򸸸^{/R1޽{98LGnzݺu!+]^x!7ұ \{,?XoGUz.WeҤI@oCM+zȑ# P05 znYfW_}2W}/<5W\igϞ5jԊ+bͷrRTT$cƍ֭r4lؐ_z%,}ǭZ:/6SL)qWKJJڵkR_h+%\꡸٫W^5N;mQ:7իGAx_j.T@'lU]r'ZlYA5j(oФI{ϭ%UY=z[-k1ω8e.'Ov!ΐ >k!usLH233c=۷oRluQ/c] ELV_'᳆ vر]v7oht\p'AsE\K"'=,)σ_~Yyg{kvsE5m#K\~}|VV"5 ";;[+Rq`Ɍ=3~42`'SN9(L)Vڠe˖^y啑cá' )4` .)k&_oQ^݃<,_\@ R^K9ɣuw^w4?wygx8sN |Æ Zso۶-,[o2aڠL 8Ptꩧ VYb *X'qqѕfCa6<ʪv42W1T8khxD_psj뮻ꫯugΜ>va\Yf{Ϥ(aI>vZ׳3s't.?^. 6L IG$YX]Ido{#Li~Wգv,UW]&wMʉIL4M.a\'''Թ婧zl х%2Fj6|2ܜiGІX+ڳyIlDnKݲk0ZX!Henbϟ/ӵaR'4Zx[ZȈDcn?GӾRpg$yyyRNΝ|F*7"KG '[ӓO>8Xb̒@t_gްv!뗚ӧO 1ѩTӑVA}.at_~hdvCNՇ磻={ЬgiZhNceΠD@f͒{LJb<F>G@T+Ug2/Q9sH!d_~\BH]X 7+BtvMĄ?<3Rx)M ܨj wC#2Gn&j'gQ y)SHŰI8sq$9a\WR9+Jqq1\sbBBɰcRcII97Lu5zU6jՉ(nj#>s.2ҠAϽ`{zwB߿~J]Xp8+";ȿ+CN QȌ3'h[B)RH6{iy7O _S$fuQA qySpG혚H4Kv94%%%Ph@?}'?UXtG`=NO?l%#5 }h1M4 IMM堧OՎ%x2{*=}&ܰaѣ7ocNgZjqC \Hhbkժxh U;"|N\X5=NHHpΐ^!/[L6t~˖-Rkx_qXAiC4ncN܎b9ӥ%P\KSSBXv'ތ"wW(K λgnj/3 [gy^1kH1kW:ȸ9vf9!!+J`Zu"_xQ cլ HWGd}jjII QZD}y睷yf)c$%l#|_LO  O&GWHXuMٸ"u:@q3qɶիդ޽NޢE =y@;R/Zj[=..Gw„ }XƍU?X0ڵk@5k~3|p>Yèo߾VQWޠA> /Length 62 /Filter/FlateDecode >> stream x35г4U02131T252352(E M MA"0]0.S4sr2Ҵ. endstream endobj 5 0 obj <> endobj 10 0 obj <> stream xzitǙ`U5qqhI HJD!x)/PuX$%:mY-N^x|ēL.4$Gdy&xq$;LI'Uu"-v߾? _U}UWE-\Ctq(:s4uO^z1+a̩eKMUZOlDqe ŻM!\j.j Ft8!ۡ]pty ǡ_.I} A(4գ #Xah!u"tɹ@{g> _1OۄSy6O7MfV`w=¢W*+*Pm]}C1ܲm;[>^@Zw^x]7~6V#z(B=hbFl*)@2pf1A(P'M| !iĘc2U#L a6 tɧ@_nj`\*\2ur`bjJ&Ĥ/)Hy\Rj$MPʋ!"Y M1&D%<H)/(PjM M t):(SZ]Z ;bվ A^8>%t\STLK" ^ 2G%VL[?`T&k'F:`KV3tHTA{$3m AeL(`v,) Y@l553ȨfۓeqN\lDϰA3MdָS1.3H*>7v4 ۚ}"L^yNO=I ޭf v]3mك(HHB1C2E00˅P,(1h҃o)<53yӷ;̨̨0(wq0`&A1'IBHHM;MDR~*J̟REˀ?.wGߕ}W] w((`[m]S=<g*' Q J\KmRr*ΘjqR}uF &|NcP0#qභ#,K[2Nymy%R#5C5R˿ =@EQ..@Wv]C BFj^!9Mᴜe (&べ!Qv\5[ !y=c9lA1%:Ԃʯ$c4 hl9%vrVRŧfEI IU)?'A;A`Ntq wMD9D@j08-ŠrJJ$Ž,UY;@L;7$T6DH%-DH Rt .E_͵Y-|&J9uM,TR씜Ār#[F[Fca3Ai{6lJ@1`QA!ft0}eɧ@ɬS}ByrMnIwbc;DUŗT=h|" tC5n IM{?6ޠ ^}T noNZAjR`L5z`= CQCwT% Jco oa x :H4A4I`IݓtO P=R Q S ]-0(tEÌ. atQhE. ctQ8xdžON I*t֊Ak r,g`L޹ib3VeθK)ݰpF)YwzY_A~Q)=0SAW)%nzY_ALWe"<g{&X@I\j.Y@?69A 'GFcr"Ojq5 ->KOfÑȍ0E" ?ošzTSZ>VI@<-cM,fWf'8>;;bk"$r#!ҋT2 &՘V4`8جshkyNhnhjXXHsskn\ gnvqp.c[=B{Q HDԁT},J` ^:ToHh .np-//G<Ctͥdb }Ǯ"P+g)FNĎ{ai VPǔ K!;-Ŗ|WD;G%#x1] o9!tu;8.M\Ȋ:*ATq2R(pEixK^Bm: ;,LiUY[jI+Qki˻nՊT#9UPG<[Tb>^,¾-kUFK0喤`32@Y_*U&OI"⠲o4!Be`8b}twGrru];mɠ>4Zkn G'#GGl"Mްf t8 xSS\PӅ;G5 _X arԌu"z%iXT&Wcm@GSSk 4Z4( R kK.!E |5ńԠ|@&T9E'"쭢Fjql[j}w|Ķt!K?:0TŻx"]?/L۝nm쩙M}k`E1Zz @ SJ$9NNF.ٔAEZېC#Buqkўm5e]EN]יs]ۤ~"f2u &dJ%!~l4`E1;ptMv8w&f`m߹={l_m;to#Ĩ@c97¸xF_;㦼Zd"3* U%#| /"xYC.@_̗.Qxer/ k N:cJ:M`jW(.IL"DYn.@ ֨%{2Ԅ7柳v gxr<ˋyq W9b kk*b7xT'W9<8=:{wr:t(۶o:Q`+:Ğ xۡŕ,` Ss&.bocno{]4@_Xx[ߔ߃gAyFCKz+VHXhG˛/XlV'ՠ@ԧΎfxOZ׊U+=,;Ҽk䁬ۀ=n|)~PoTɹ^O&FW{{σWz_ {eE|]f@r7͋jm W3CSىTog^>7>7usG/=&gv6 2< lee6ѶZfSSg9qۮ܋_6޵tH>Sݫ-QC&*M{2B)e6F.ObJ+qX8X.M/DW]|s[ }㾡7%`7y|*=V[/`YruB|@ӀM&w$K>Rq{ެXXA^Yk$C@ 牋X8Mn)ȾoR9|qb4(LpF@ZƮha2F!~Ӄd?End;z>]^1< E. (F.K81'KAw뻮?xFY_xk4&ݧ܏ޠݥu{E?"d퍊pqq*|܅hI-n" ۃI4!G1}ÇwcH֫Oa};ۦ입0b8(߾M ia,bX Uc3-L\{X'Oce1G(QE$gr{HiX3W λ14gۣmaX! Ǵfm5it#ա<8H"cg-&UH ͑Pe*VRTPa!X3=pei}=mrO{l;7y6-m0L˳͓ww=9xDGbyz^@\ 0Xy1WY^)[/L9t?“Fc~wXe~h&mmyGG &{F_OL`/H&Vcq*U5TrN*UrY;"P~j]d+WrfGo[F\Te%\?43Q^ᗰ(E/shi%jڸX{4szh 7v/m<L4{aZ-0g+4/%ſz1zu}gmM[\HkD;h$pT 9`{|?&wi7r?W=`݆s먎tvT O6<+p#N4]=1]yxO(Gm_`=`E;`.uwDF즙FinH0'\5.MD/"?X%[)&&x _#:Bpf^QTOUO?~JwOi 45_vLF9o XG=tteS7 .Ð!k?jUL(No"z =2zd` ,D(<_`f@a *0X*0<_T` jO(U78US`= l@;e؈K9P*YU lAZղ cYQ&TmP`38:B'! xihzXh0;pwx/@IJ2*ᛆ) F!ucʊh T\cf=g{ZU9ΔV:wfa7I"ԣ0A_5?l2Yز9+lC$g#Ge(Wzt@#tLҬ} $z;v]bVq`;]{-A'1iY БvN/DMݴ47R>>n}+@)ը,w*N& P.*)FsN1RXxه}=`s'{dj]f#ll7-<$ 8xl7ৃ ^J=bԫ0VߜuG,|(K@qa/nXn|1݌cL{g ,lI")Y`2\V"NZaDծ(DyDOˡD㇓ Ģ?y> endobj 13 0 obj <> stream x]n0z C 0'|dvĒ@}9;l aH.!;ÒSw:cmΫ cnI#wv{|=iqzZa/<UdMzusz>qyX1_cXz·vlUZM1t>Cu -j6ڊv/%T1ЎoеhS@,+^sz\Rw7js_[h; M~xM~^tG}]^1jzp;hz_C-1PóN.= 4=8NdLga衄OCz(`衔:wcofߐy8;CJr +e_|, -`PӦ;%5- > endobj 15 0 obj <> endobj 8 0 obj << /Font 15 0 R /XObject<> /ExtGState<> /ProcSet[/PDF/Text/ImageC/ImageI/ImageB] >> endobj 1 0 obj <> endobj 16 0 obj <> endobj 17 0 obj < /Dest[1 0 R/XYZ 0 841.918 0]/Parent 16 0 R>> endobj 9 0 obj <> endobj 18 0 obj <> endobj 19 0 obj < /Producer /CreationDate(D:20241025161042+03'00')>> endobj xref 0 20 0000000000 65535 f 0000037860 00000 n 0000000019 00000 n 0000023105 00000 n 0000027843 00000 n 0000028106 00000 n 0000023127 00000 n 0000027822 00000 n 0000037725 00000 n 0000038172 00000 n 0000028146 00000 n 0000036540 00000 n 0000036562 00000 n 0000036760 00000 n 0000037309 00000 n 0000037692 00000 n 0000037991 00000 n 0000038047 00000 n 0000038245 00000 n 0000038381 00000 n trailer < ] /DocChecksum /B019F0FF58D63C7B8CE7E52DAC75FC43 >> startxref 38552 %%EOF hardinfo2-hardinfo2-1331e88/tools/LICENSES/network-interfaceSVG.pdf000066400000000000000000001550421474767047500246210ustar00rootroot00000000000000%PDF-1.7 %äüöß 2 0 obj <> stream xZKo# WyYo@ rr@l'A?|գ%y0`vĮ"YGɶ[a}-nuX`-.VG~?,~3|:(/QK˟ƪݿv@RkHWq>/5GX?~/Vr jq"I.$Uvj/?>‚au.O|;8!;\<ޥ̮!Qs}t:x^\,[\>B;0o&>ڞ*EG\o,i|ʞ>B$iI>i7y.1@ /Z]6䉔],}/|1O$Xk K,a+ Fq$6D>=1X DK2Ħ`8[zKĺRUx,[$Ht$=^6;Z"fHq)'FC/ʰy p瑂)}S%E`+QT{FB  r4ӯYĒV c?1o5GIi@RehZrR49iY,$~\"פt$Ȟ`ɦuN%>Me"ŵihk^(e ]7a^:icqū~und",c˸e2ȫ6!%mԙHMƴɸdDGy62(s1D2.WA9?B@FD2.WAj!:U#QV)0&PBBF! {>%%%PQ >ˊ˳Q8yQ J ,rrUIEfHՙBakD$JDP3 <KjqN$:| L<cR!CNTLZ's )&gB4!XR#{_ (y H,I8i$iG)4o+ӸHd,{DJ[uFxl$.Y4`b; l_G`r7@m7ShL CvU\>k78/[tchw?MdO~_/; ߃{_^ 'X긩h*?q,}#5T_謻zT[e9*\6,?˓{nAgcgG-pﴡ\&~\GщqRU.UPڴ+fgV@uR^_L:1L;eӥ^M2iɜ[v[ؿ+26}bO<>t ܓ76ǶyCHe>SKQ Y6Il"6$snEt(92DQ^NARIjc/y?LLn27| D"0F/3:VxcK p4^t酣q DŽ^8 ܣ,rta$u0Xr~ T灹޴h(f"MA"G#Sy -eҦ6aX &RM8L=dTbZRt5\+%d鉩2Zc\ZN k{\>Djufm%EIMc_4҃.x?EZH3a?B.L'DIX|Jd8Ku$Y`0y;`L_ ;;`/$cgv5&+tƫq; %vaf\α/8aΉk*Ovo߰ȍh[=qHxa#Mqۈn#D72"C^LLZ+)'['czqt}Һ yJ>sҤƞ`1Z4@jD\)y_| >tG )"rpVCxƹҴ7m@kTê::/c.7[c6#{/emе>LWajzttFwz5h&R=%2QzkI';Tċ<="*kD# `PN!'ZЌ/N~Q{|ɀ%޲G족I͓ Z}PVV6] 3>ꦑ?D&|hAghVWhg-;| F<#CW. endstream endobj 3 0 obj 2698 endobj 4 0 obj <> stream x{]U&}{* Z(DjƐ40!XQI&cL(AGh  Րh5Rg4&%:ۮc9w޵>4p>{{"m˖-[r7YφYdI˗Wv@~NHao XKVYb;;_սУ,= 0ppMI-90,: LV OzyU֬YaÆn#8us"Xp=.]:BPX(ڿt՟Co4k`͙P 9Yt.5#8΄|_=,tl"K"۲e&tp K( ~ ˗X[ΗGP*O|ttժUU  p£Ugff z2===rwx7o~_WE]m۶>NM]+Vtr~ݻ?Щw_ׯʍ7ov2ѵkٳz'*~ۧp38?{yׯop%?DU t0h78n\|;[vs9>r=rJyPtϞ=CJwGg8p`twqGtشiѣGzJCo:i7w^ܹs?`T};xݓ:to  pz;>яw}ǎ>WÇܺuk; W7oxc`ȑ#v 7СCCO>#{ҬY=yy~Y7n|r֮]`v2؆ lzz*333Vml'[V^`)~]|ғl?~NkOTmi'U{93naQWܴiSEya[~K/H:Aȑ# (޶m[|R:ؔF:؛g=Y?O*BPTz-[W!kv5z|K^`v?ng G?խ^tl`>{tnv-7 VmGw3v>j+W5=~k_A =Ow(/ttSz}CvWov%^tlu;g?`un<Ϝ6Nwk;X.`Ֆ^tNJ-+7͚S̼o{8<lJ#`)+H] y\0쑠M`رcSto/ɵMx1#v#A:ASm۶.EkQ=t)t0kvStuȥ.EPrװG6t0{9O{nR:8 lJ#`LMu0t0FtPlJ#`LMu0t0FtPlJ#`LMu0t0FtPlJ#`LMu0t0FtPlJ#`LMu0t0FtPlJ#`LMu0t0FtPlJ#`LMu0t0FtPlJ#`LMu0t0FtPlJ#`LMu0t0FtPlJ#`LMu0t0FtPlJ#`LMu0t0FtPlJ#`LMu0t0FtPlJ#`LMu0t0FtPlJ#`LMu0t0FtPlJ#`LMu0t0FtPlJ#`LMu0t0FtPlJ#`LMu0t0FtPlJ#`LMu0t0FtPlJ#`LMu0t0FtPlJ#`LMu0t0FtPlJ#`LMu0t0FtPlJ#`LMu0t0FtPlJ#`LMu0t0FtPlJ#`LMu0t0FtPlJ#`LMu0t0FtPlJ#`LMu0t0FtPlJ#`LMu0t0FtPlJ#`LMu0t0FtPlJ#`LMu0t0FtPlJ#`LMu0t0FtPlJ#`LMu0t0FtPlJ#`LMu0t0FtPlJ#`LMu0t0FtPlJ#`LMu0t0FtPlJ#`LMu0t0FtPlJ#`LMu0t0FtPlJ#`LMu0t0FtPlJ#`LMu0t0FtPlJ#`LMu0t0FtPlJ#`LMu0t0FtPlJ#`LMu0t0FtPlJ#`LMu0t0FtPlJ#`LMu0t0FtPlJ#`LMu0t0FtP:xYgK=Og;X9駟>z?wZ֟K`6o+SW_}uԕk}8zk0A{eg;:Xt:ؒО@[qt`K:8B{:lIAhO{-8:`t%G= =&wIO=忳]>i [/`:v`{ev)?:Xk vB{ulןuBj:-‚:ؒ ,h:-‚:ؒ ,h:-‚:ؒ ,h:-‚:ؒ ,h:-‚:ؒ ,h:-`ݻ>2O|C}sA@u:X,c`R:8c`R:8c`R:8c`R:8c`R:8c`R:8c`R:8c`R:8c`R:8c`R:8c`R:8N߿A9tX5;81}mMtpܹ;灤ŪUV }ע`K:8c`R:8c`R:8c`R:8c`R:8c`R:8c`R:8c`R:8c`R:8c`R:8c`R:8c`R:8c`R:8c`R:8c`R:8c`R:8c`R:8c`R:8c`R:8c`R:8c`R:8c`R:8c`R:8c`R:8c`R:8c`R:8c`R:8c`R:8c`R:8c`R:8c`R:8c`R;xʿOlתu ukٮ~OP[ (%tp$:XlIA2%tp$:XlIA2%tp$:XlIA2%tp$:XlIA2%/O~zwB ׿0O}GkYt r A'dC:LtHt t 2!d~]vGn9&d~A@ItttIiIItttIiIItttIiIItttIiIItttIiIIttt{.pw}0 %;wzo/䒡a֭wp۶mCo7رc6m꿃z?>P7mr6==}K_P|{;P;v`gu_סw:|5kC633hѢ6)|?>\;wlS\|ժU{z7P[oeW\YuSS_8o}k@Y>T*+.]ѩ/꫏92^ /ۿ6fqU Viy0X~[/~կ=:~ ?/~>_ne˖-:nU:Y֭;snz.?xFn;U/<"Z"]B-YdшN%J ,[У@r A^#:u.MOOw"N+V =&t,}8U[ :V5.q~N>l 9#x`R@6Ep4+``dɒ_PÊ`0Xu'.<2);) E_Y-U\zw0?MWѪ&B*O"8kqy oMYdIu߰Gsг}9U N'Э*73336l\* frл 6ի׮][pS< endstream endobj 5 0 obj 7367 endobj 6 0 obj <> stream x˧e),CDEfh@Ah!P"C+H.DT**$AT„hQ*\">3wN0n 9{{3N8zSo~nx䘫zFe=.c꙯>z)r֝q#g^:}#dV>|3;Fc^{e͛dGb?4=;$kFOb-1"$N˲zs[~c'_SɃp]qFa.wSF`.gխg0{+ͻe sSGo`>FO`Fuft߇G/`F7^8z3F/`Fko|PpyEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWtEAWN=):mfG/`FWtfo^~ Ўn#䄻dY>6zٳ,<,F`6/[1z񾮞ȝZ2zsg=g@WˏF/a";^^p-/fcEϾ򻝣0uyGa 'lyO^ }PV=spV˲qQjѳX.-wf4_&e9DZV>zجɏ*!-`D?-w; 9.Ymyq/督;/cOK\-`^xu_Sfg endstream endobj 7 0 obj 1852 endobj 9 0 obj <> stream x| |[Ź̜ŶdNMud";Nqˋ+čeY8c L۰7-Ж K) IR [Zz۲}MRzs$!{|799FGDƉD=,l$d#Y(ٺ,I2 og78o@<B" 'ҷ1~r!O RCF>KL z H+._Y#܎X< ڭrRrPz3'ȵ!:Fϓ a:^1M-rTz"z$ltOcƿȋƄ\Au2Bne~ F4=\X=@^R5V3>M]C71n{14I Mdhi\K%itB/ Ez}>K`foI^r69,^wj3]3ߢe_7Q 5+TGh2.i Kzg+M+;#,k\ϲ? )_rIk W A+p= ,gQعTwHw.ݽGuoM< 3dʙC3S3G/Ea6`# ."~5vtH`tK/%@o>+,GȼaUקYe7 >ПCϐkJ p=Ɛʟ? `B ᑽá=wvzvv77U+6~jCuk׬^UrE"ײK; vŖcH_pAZ%%lJJL0:Yby=J͛y7QOQz2 (*;NI-H85enWpoݎ 'sF70rIՎ@bqLL(Xg$#F3d;j<,G "z|}-]-.j7BU !ՂMD_16JkCV&NL\3m!=.SϷ+"G |k"9i]WJ̠»W(۶t k{&jM7vRpTR" *Į&{"BZاG/l2G*&gr!h=p8˭d).LNy. Hs5nY%r! "_$]贎Wud¿dx)fE`$g²P&Ji}寄iPdAudeĬEPnN)"A7m0"**Kf&|hfibFֻg 0mj*:Aē.R!ؙNGOkajNSQZwU,.Eu(=xC8&G٣ÞXLG]m^ㅭ"$R!ظTkF]^G;er=1{1R5Wnt+۶uI)FYuOwc]G8#yGROa)f֣nBŨ,D1%i,*#`ƍZVG1j8WhFX1A3N{;q{ܽU0X9rJo:5[zOGJ8(9nDr72 &f&Lqu88ĸ&b"3rzW?yqqJL'OlC<#&9^$ɏ{~&O&hh'wx@ 5p]r*4a)SDd@[ Q i-kF8LV8E\DNHQXoQzJrc[ҏ'U$46%mֈpZ(C:!։ b"ւ;#zgov9|~go-Y=$PF7v`ԉ lJv;{RWuB*aB!'|uF&  TbXUDDZb$a0ȕĹGq `^7gckdž:ON;ʖp{$+ [,"1#7L N~M"5JzkLz &d,m8SH`GVS QQ$ُGn;Q_G_9BtuUt0̴LȊ*m}$$Is952r,Pp/K~9,r5RYNTghj jI^ܭKZ옎sba108cUb(ܵZbviqy)5mJp0iywr@恤\l+^.M$]eHr7Z7Uݙfuf'8R'!KҕN@0X2ka8oq!-ԥ릣M&CW.']ie(ZMS2JN]\XlNsrxXóY">fL''4Pw@tFܦ;,.yժK7LxM@DN]^<%&%}%m]:_IT,1,'0' 1$$Oɝ FW!%))}#5HHcx۝h66,܍tw_s uRg(I> F* PA Xj_drGߐ\R}3ߝ1߇)dW/lc lB\B0N~4'g9t6Xj3ꓒ~}7d" @LX$&j.11A1D(MBVRH / 2N;tIDMoI1YI|-w.<~LRRʮI"qtDNcѷ /uҨVMF#]UQ"ttuHvi]r.$X=u6?g؇:ګq`܎XI٥bӒiy9l=69=mA8N]j`I1Yi٫Ѿ}8T]ڢ)Z?TAoZ>P|~J[=9# &H9xeWwLz1,LMMIM1%Y=;=Qj1t Yy?,YĞϓLII6,oм9gQ^=q=ЙL~:H\X-+s黕 ?3 3c03 3P=舞ˋbX.tu\h~w^g2].m(+Eq]ܥC"NG ?N)KOM[(I*K*KCIvYPixS YR;i0+D.G?y-Sso8  rp-Dv6S=\㒎軏v m-׿Lo?x+wάk~מ-,hKW~uIScҪ6 \KG_ýj.-eS3RHOh8B fݽҷG#%%759-757WZ_,Gm2w.ܺ3k@;3iW,ݔ|s]_&/ Ie%[F|ajIcRYR L5[͙r>q*l[F,n2bqMbgS1Rk4Ƭu%:=jG{Ԩ ؑwIbZ[U=I=nf3wRILRw)X"5]uQT1{fܛky߼s.P]"()7.n$)b$X@Gه>zJ;vlۇF @ȅ.;R6h5PwxYTv}-x0g8Dg_\@:v;tS^&1;_^FՐɰ0b.CG 6؂2%2e+`n!KC llNy`07Ua\ÆK56ݣa~ s`ÆQ J4؜0切EO 8VkM' pيN+NBNSl"NqSsl4[+hv &ఀ ^&k\#M*.Y^ ]!$DPF/S`^ $ N%a z>Ae^`d?0b!iQnk0F|+*@xo-)20h_Ovk7,NAYPHX|uB2QЗ~1P )Qubސm=[XꌏFq!Xy?ba:7`"v[1 nC<. ˰5""a"}Bb2|}nXECϰZV h}X{XhTbrf;icEuEsi*oQ/L6ۯi9gPdX<|Π~鼽|UY!o?1|N pMT]F倈4$2﬚Ujf i =ej.m̛u8%?>)FmHԬ<"Ύão"b7 -cVE3>iqNX"N>zR+ r[8nhk8Yl[,&E%5bk(hXĠvF',tH"{;6m&mi*0uVtWl 0AѦ/*Ρ͠gF+&"EyMX.ÃeXϨ}oYPׄYTv&5/UVYub=.?_+সF|ef5$j=@6RJ$tŸGH9/tU}:#._Y* 6 ifW7a]͘Y#4mh66ެV6ܪ5Q6m*jU9ͷV1>KWr͢zZڅhV\HJq[eP*}$8<`xyH796Yc@*VY8ץb30ˬ]b@4 OFv+lqp͈oph5b5RР/\FGOi ceJ* ]xCce he4G@ EoO bZ_X b1b>Cos E *-sb h6G`I<, .U<+|jLp{n ZK2ý3׾o|P'VF}& Ϸ(; > d^n6 Dh.Rz}a} KFGח塑%WY s2ggڊ?(8s̻BЉ&/0m*=sSfs wNXl# 0k+RG=Nm [zuQ|"ׂ C9<>B=OAXf _qJw[*$ -tG "-ܸ TQ3/8M5,R  AذXwo0GjQ Kx8T5+QTuÃi4K !|| AX/,dl6}A֫! 9>M6<)Pxzvo#}xij26?|m(m͵[+[=J]YWQWHZ׾]EkeSWiU*J}]SMji)ͭJ]cKCꆎMJ55㔪NĢ g-Ui5zZ7[YUP-RjڛXRilmhlUZ:Z[<`_ej[ij_)Nt͕ UeoU7x[6mnW677x@ʪ JU7T5)5ߎĿeAq73/+zy)e8 aݳ҄zxPs%"r !9g`eT/OrMrI˦iiagG%&-rڎJܩr{ZrN[TRY,?5):r?q򀷠e~(Ϣ!eUPB(G\)gJY*KYk|ABH3\3H3QnE : \rm12n\3]SۻEV6nQۚ:lJr^^6tR:~5eJ&-"&5[J;\,$*1"l2V&({;SKo:N:^H B׺}nh<9\7OmDIavXԎZs3(QsHWxxY_4&>7A9̙fy+eZS_s_\eIɴG1EYgIAzn]›mlua)V6fWks惶O6Tkm+ KAإ9##5k逻peh6g(5!`5,4-dɘh4FȌĸUYB7zײ-L[AFO" zVVE#'W昦[Et*I'UuiC5U1\5Iu^`#iJڻiZ%%zIf̊e5gzz=g΃s"ۺsOn7R*hp}Kw۞ϼv6w</mzi# 3:tFҜ(N4OsFAABI ɡقsD#*Nr$YRh>G }U.=\o?Pz"W係LoJ:{z"^G&w(0;j&vO{vwf]qj7^;Uq^[ΰX _l5iMZk-ɽI""[&[]mDmJ o1\nϼz .w$7brTE(|akdP%v1z6d:QE\c1 ֨0>@q+|<&> endobj 12 0 obj <> stream x]n Nܔ?~}SǴ\{:+oEx endstream endobj 13 0 obj <> endobj 14 0 obj <> stream xUMoF$Ҥ-ZQ."Z-21rh MԾ4D[j$8zP?H rIAh^ 驀YjA .ɝ7o˰ ]DB6ڏ [ϖbcױ/ ~w@7E_u?'OƯ`5r0+嶼b~p a+cE ?/ }% B20ǑݜԬ$L=1Mۙ5UMfQY3ְ{{{kU,յ?Ir.WdR.3]YfL*EH*5C}tq !9^^뱺<,_{y8O@1.QU\`irFCY6dlĪJly"Ynl^gv$˪P[f1Ez~gJ2S[ dҤWA <vo?= <#oDt'bpS!o0U2>h%0^ ȶ8;p88e8A9V[q#E8'Lq‡!|䅧O"f=]Bzi-oS.=ZT[ (ؽ; :΂Q*YJvB Bii.)Fyn=3~t۴Q/V߼z 2UQj >~]hC6! PţmE-`#zJ8>8)鹉2u1b7sc]RdTƳY;6!r;n =Ɉ> endobj 17 0 obj <> stream x]j0 ~ Cqv FG!m̰Fqyn6_.3cyK €n:fQHfmI8w~ m+{K v6 ;Y$'}{7TB)8WPrۥmȟcM-  ^s#|ibgUnJ}x,ݑ'Y8UC8!f+0 o endstream endobj 18 0 obj <> endobj 19 0 obj <> stream xOlTqڤIޚ%u*qM*!!TQ8hMդwNĥBv@HOCpڅC)Uv=}_c7L]pp^nD s^^soWUSk7UT|n?2Tx͙h׍Nuw㼗Cq;nTT9.\TSc48%jgƢ4Vи4,ISd4GQENˏTUE1DQ>{<~<ʈqBb >d2,dR~NA"T"d2 Gi9EBD1K%Y>C;O'0NJXRL&0 PYo۰ ` y&;"4Yi>ZA+bOVvƎg%@ ]hEb"_O@69 \߫.m+-Uͅ5q+4rXmC/ÔǪ/sNSK}EQB )=e%pOx?4 S揇n;\Շ}=0$vpsc'` >ŐSqiFzy ;4=^c?'acxr33(cz9URaF/{`> endobj 22 0 obj <> stream x]j0 ~ Cqv ѮlJfhd8l`}Oԑ12.~e0H XgM:~["m|O%G ctp)B%cËQvq;$xKYӄ*k0/YgguRݔp7GWIfeNJ*5Bp endstream endobj 23 0 obj <> endobj 24 0 obj <> stream x} xT9w}2{2ɐd&eB&` 7D ! fL°İ,P ZϭR8ZZ֥Vԅj[ޙ,]&s޳wϹuy ⎧?FVQT,+OcJOTQbu3S/!b'{.rY-GPmjr5_ - _o~SH/0QPw՟9Km!?#?zL 3#w8|~Rr YM֑xnSnc4"m {Ώkd"YAUd4cFi㲉'7\r/9!?գd!f4R{XL&jBr*"6#(32!#&ܮ%]ֽEXp d)}|A;Zl>>>>>> ?["u dIzg#߆}pG}fyTC7mљ3"jor؀PKSЋdr طRXdzy(&?uwNxbv+c@ zJwmmwxcv{0!p*LVh $`Qols"Evf`$2ZѬ\mkCuC [h,>8gU.W,R8+[NxSLc<J0aKHħƴ9w~oΨ͉9Vvbh^um]X>Uԍ\&QMЧ-xШzz" I4E硫ڟz9pjokZm&S[Kei>cwybU;"1kB:VU[sL.lPEW">5_֬H<=Y<BVNn=d%Sarj ɩlQ{SZCC"PmRsH[N[\7bxKbxx实Od]?lxTT!m_Y%|3Hm;" Ac[ 2mVRģj5Q۞bϕԭ֧k^t>h.IXU >R>]ׯy|%HT?%>u_I; GǴS%zusZArc"^w +0AN{Jlf`:]RgUe IAi)uY_2NK&y)Vc=%LL=0Uwzɣ =$ewس3 c),4?@@%Xcf̊L*M;iEhv Ĥ=YY1guLOFB>B*-IZ E@)Nl>[wkr.a2p ! BJ v풏'yx$$iIYFB dvvְ/@Ks$N[<|x(s9N]>xhnh___R0)'ݻl k2)E]fn$y1޴|i`Pݳol[2rHd䷮cJo̓sr-eTlH$ƒtݞڒ, TIYi(-Jv{\~+͏>[vt<5gΉvlqk{:'+?E|c_.Iܳ[~N{! 47,v-͵]2X{"'",Xi4\x> |(-[ÕwSt(̽vX>7'SOvٸhή== NWi(g&DvFL&Ɲ̚IZ #$:̥ Z8MTTcFvsI\0| O` X., 7ϙ="u,C-T4.??;2Έ{Nɝ:N:3 X )uӕfDWJ-]:K6N4y1ձb!D&`k2`5I:,YDn"0R&`*Z!荼e0: &$Ũ>/B$XfO 6 ?ՏOs5Z4DSBG@.9%[~\K,xݴ'(.'5?IYWT4&~; 7Jټ.+KGKK@F-iȧ{"vþ'pҵu::A4Y؆SEA]@jmA)a&ICE9`8 e3շ ?:~۱SkwzMAe-Q۶?3㞅a[g 2zr5w|EuhƉuUU]L'Ӫ:6V07o0䃐',OP3~ѷ zcDq s`>2TESrfp)Q;[usӢՏ6|,Զpԯwϊ.=}yחgNq3u)jQ3ftN,֬FW&XzlG*y-j4HCI4*ݑTvGɖujђxMtVK8l4^st CO*ERB-&2*LPagPA6[(`<+,R_2HR$Tdw  j]C؞o]'ޱfc'i)]Cођ:l:8I&y\X)wq#ZF׽#nh`.~8`wDLYgk)pc&AI|4d+oL,DJAϒEg:Ӡ@zi(WрX3j(]I5"k^VѸ(]W׎gi[W,{n7+:eAOlA̓;.Ep AY1pI|#l7hU AT5[ݟIIi=M`FSEE2rB:pSw;"e3|/<7ּ6 rm:-H\.spFYY &!F$mVܳl=[N4QCo0+Qba;abV~cȟѬOX:÷ ^OECEk+%<{A?@]zIdr ~,]2,9L::۪G%cW̏@>蠳UP@d٬qB(V Y6Mѝ]]oV,P1FTM"1hzܠ7 그T#9 +KC˕jAa1@Xڃ "3wœ< |V\-rB.RO>qxM3/Pf\yϞxmy0 t 0,.`V`x`Ц!&ܲi[e"' Mnwaws؝#Om%XRef/)¹Rh@N:Y_~-ݴv=|C[~Mg_z⹟ ZwF Jk(V4` M բ+DvBPu y's`aoZrx823 *Lf&h 6X+bl g #Kk1z#or@y2RJ.'ԇRQP 脽{a ^@j$/JFBk8jT"\2IB ^3&P p:Q-Ejݨx3ZUrb10`: o 0 ht0><"B0 atDK!lG]v] 4\/#ƕV Ю+pbTr@҃XjQ\!;0.gf{gD'F# B &|bCe7C]2QLi6%0[peIs4>/YO19O8|I>%oߥ>_i__gNOL /'+=Z_1y-)]%P&FN,` YPF-Ϲx[akR^>DNy7x4{3I^|a*kC2I5i4>&!Ugяi] m 3 3,*Cc[d'pωЦ(T}\Ap9L|Q ,pl̷rY,K9Y2zK9;.˿uY( bYRJR>zBu!C KLqZ#R P~wdhrJʠ- ED%A@,9Q, (wd * gc< $/(G C x#}3± *c~z[-ʟP^RϢ[އnܽ: ^~yy~p̘%c%)?LA**RzZ.y{4IWr]9xaēFCKᨏg{rQ𔏧upvBQ-GkBKlBKlrC"v1=2kF0  R4#op:4K,)^؆<7ěDʢIፄ@\` )z._.e@-2\2(^^3- ho*:J (QNRhr]qÄ/}qx0'ÓMj[KoY)y&ڀ8fNkvE#HTx)3ֿb&;h#+W|w"KJ1C NJ ]q_B/I2)}} aE_؀_M; R>DG|cȌ|tm;4]>"/'QoZdO4sg$YțM|cwA8rY Ej(b6۬=HZ'`@_觕N.7AP?jT~˝Q Mr/$A% blfu `/"G-DQi 0srŕHqXWj2Ec%rQ `(xzwYcMB6al  zSN#<;cT^;sV;PqW`%&]gVwm?zyzzO}}'N=8`dTuQ(&^7@MR p&b'F𖲤ODoxgRVaŻcxY&^t~nl^_|=}שDLt5 J6FJMqKIU'3%  1 $1  aaNgI&;PxVlS10+N0aR<sy),o8> OѶS?G_-ۗ)%hU,zfgd? 8Zu]yNF S"]Sag9^D?cedFT*Y!Oҳ6dg^c7ާz'0r$p2J~1G4DmG.ՙDfSq=L$&G~A}r? x4$t}X `R#G J.F#aR鑂QO^:vWu8C;:w+v{Gv lf8-u%p7Z-f&':Eľtm)t#Hx7޽EMMMXί.3vS9S~lO>AYn޵/P}n}wϵzX!Jkh=>AIJ4}> n*w$W>I& ߻Oݎo'$zUI?{[/5'vrVi!O%<V$v{ bB%l0wfт+sL!fLhbBïё]G=]p_"r_K" fw74>@1%S =mIw[y O4 "1NvaGvmF"Ǔj0#6HpLgZX@#ރ0ȋ; {P-6,~uϷ5fަ[ K~`zZM|'niw{ʛ_oFkғJI P8U󠼛0+ KhޅI1$OO31inN;|2;毋HIf-i:X̬B4x@L ^ ]0w[Ga>KG@ӊerLrK+41&dF,sXH#JN"Pns^Ӱ"mԍU^<i@k7 !Oa[WXƉy+2AZ0_]blRG,v{8 wOd p7C 򹸨jU!tBɟ|mh^}GJYggi]ﵖ&6n~5|eEUQsGW(}nzgCqƕL RՓR'X8ӂ) _iUz"~^>@ު`Nuy?&8}])!㦳=Kjx-D'p.xNCtht(sc?~>{=JAd #% ӥVY+qd<֜phj*PFF &HQ\]H,H,=D~a$@SJAo{?涞͓|5TS*v3//7jl9{y!^ 0 rR~ϋzy~9cZI h D7k>]kLsk 'y@2@Q'XLwnbXq >4}bRq-7[JJ<:kOv3zorqǺ^HIHq'Ԑ%$3]XO $+!^܋d;`L ÐA!D2$qGHGEA>Ṕ~w GH<_fcϓmտH8$5g!}a_|FY(;\Cfhtdcp#2818?` }a۳ +󿈰Ig|1)?MO) I%dY|*j%-,m&|h)'%P,4y{Q ?jfL#kee-̽ /<ˠZ_Ǜw ( yl 0C º 1,VNB֕ A}ãK3K@ZQ/"+XjdܭPG(ZzEy_[X9 cB9O3ʺyuc$o5\fF*M^43`ic4W]JZ3-V&+&jWr_De[/2e YÆ/T>RXej`+n)Vwf|teTFKUא&ʭnR|4ʈC3nu}:qQU5aP†(d6bf16@Rh9oc-'(ͿcEo9 i^u R3ͪ/qr_Ih^>F"Ե;T{ùUq/Iq9VEc `Vg.MHJU۳^$(pG5>\}#= W@VdfP|_[Vۃ{(ʼLs;s%_1Ml\խ[^?}H5Ş;HGkz+,ylɐb' _]9B'ͻ(чn:AK8Pq ?SY*/,?Kϱw,}o5b,KOEYKO*;kgS,һX,-anenbFn`i#KkX:I.JnIŸ9[=oMZ ɒHAxigMi+V:],d~$:=n%-uyTZx Hx»e N93O?+>Rp:sŸyefshjggPڌ)vhwvfُ) -'u>JFU(y SP&IKII Y.h[o6%۬d$ s?tڳ[iN?39|Na#9|~ 8߷N ϟK)v [3AڏlGhZz6*u03; spImJoqrsaDDOXS/>N<},%_ M&MES\੍ ^ >No')!`###Mm5}ܶ6l*7v[iNxg<[ c+״J=#\.W>e LE.}KS.*ϥh5q:ɛNII)aD$i jx^GP3̄'V:iݙ>jFzZ`v#S Ϗ<_d wSL4R<<)42$d$o²` bi3mrzGJ5[n~$[Xm&5ZD)W3 Sû3-|?L#%%3%[Πt[fvYSvizh^A٥YҌROUj/K5|)) M1{56&VO ;xom(P̬kqwvP2-&Af1b6Q$Uoz$HE?؜!pwzTNJ<1WE,O ʭ lU֏e+:* :\:E%MP]Xy8++s]b[rʟ0,}-,_!VsʀWݮGԎjᩙKCE( ?)v uu.:Di)<)bO<&xxxxtC;*G;EsB\wѷoF_Ed EODGmnnnnnn6FkI=ȿ?$?Uq endstream endobj 25 0 obj 13624 endobj 26 0 obj <> endobj 27 0 obj <> stream x]An0E:"808v x6 )}8"gp~Rǩ?E0Dnc(4a$2_4VE3.tߊG|Y=6ŇEUE۪Rn]|)U!c*^ JwSThUj2plk; 2Mͼka'n.-Xw;y/]a0:f;Yowk/'+y7_-0ÿyMLܓ?v#;I'F𷒇eo!>s>'>ga}ob? -M?hO'wZ.s|yEӨpʌtyJ> endstream endobj 28 0 obj <> endobj 29 0 obj <> stream x| xǕpUs_=4AGHtI#B` @19$|`m%$zq 'cۿ 8>+Y?ZG"ohկ^zn67!ډX^>ڏ{! BؾNq󺂹aZs?kڶ6EB mpXcOz,@d Gֲԣ'{j۸:vӺ+Oe#b~P`~Ǝ-h BQojjM`qS\&5ϰlJHt'y'TZz{gڃ(ѣ"x?T!yOX r0sϲ5tg:H5>?AS.p7kkq~ 80a5D-+2 }FE迃.A4b<EԏeA8пh/چu>]'قDѷFE?: 4$hS$3it w?Զ9xF^E0A< t~7s'z49⒛*.Y< /47t?{pIV3.<}r]\W+څjy`1T&k@r_E7ZjQa3ډSVV1Bm@pP= /n\Ĥßy0FV xW̓Pu-$*E&ƻxL>cج=^SRY\|!GI`] %L ˣ .GƵHc+h~XNH^\\k4˚ @z F hŦY)rU/tfP!Z)9 F#}'B0-9HaBҔIZ U $G:ѳφFcleƀ鑖ZiBer@Vp׷!#-b m=rbQƖz&_c[}'IHf 3퉸[EU#F}'p=?E֖Fq^#5NxOLv6U|/7dL:QUecZ3VDEKE#kM&0{y]M;瓒dbOOka`~ʤp-}Zj1+(`9FFˣQbw bYQ.96I;15.RKLY̳nY+ 4=^EGK/h7J3CR* XSm^=R/ǀzWl-*02񷊚Jɱx1OSEW 8M8'qc; #y ^ +x%[! Sdij곴X{IHUAÐX">=}ai:/qvdD|ĵ쌏 MܕK=.imNԂ %]jnGYeT2 }K:d//_Vw[m7 4s$j &9m.p#ȥ408b~T|,YՉ} ZS@-ؒX_N@;7v}9I{2!n Ѿ=|'xF[@̃mi֩Z*QDGD=>8ͥڭ.)>.:"_J xGvF QG ;  +(#ۼ7z^?޽7w/Y^)Bں fKi0^!e IG$Ta㌎{ #rA08]>Fٔ2Fat n'ѫ> &x{1A!=FO{{aV E᝽W aK^ iJ X=VHx%=6h?< nқwWi䬬Ypt*"u#i'lbC,9|^|%d|G|=wsUCB|QN89ӈ X\Q˰,r Bf6(V`('ZJ}/|lx%y֍'/6=gUs?䒹$$D*\xlyʼnhEl{oT`qJ4X-=I< :+@J]&ɾU/[SQtʵҧS5Z.yц?y{sxoBM[//gn57pPax`Lh֙Du6A.hBBNLؐ/7Q\΄Pn{ۺȿEXūo}_> O|xj~`>ay9PCʦQ@DAAkZ=QL5FKp=1Xl(7\ |R9V^(/]xeW&?zytK jC'#r@,| 4QMKtd ]ryǗ\NĂnl\ƬDoq6fq|s%/e"sfP >x|q O7B#+ 'h]:2٦F0hDmƹӼ*BDW`M|s;y/oˉ/MF M ']^AzVϚDs1AE@EjFtX4W77W/njbɜMŀn]`I rNd'.V=eEj2f*Un{ˋSR0ŝvIEqM N4mM̫XYE.~sMhJ^qZN|p/\Ӻ^aD&b+kLEF1d%Om՘bs.xj(!G5h-.^khaU?BQ%b6H׬BID*'=-ּ|q 'O G?i?X.u\y2vnɏܤz&@s74`5qV@GͤzFO*EIIx0}d hZ2E=rm*i dY8lب1t&l65[ b́k0LE%!f:HúTU&PuwHl7]}c>]tox [)\mɐ^p٭@l 0}օl`+O]v9[>BGGG(A,Q-#U .Q]buK2Uwn9׬y9WӿLEpׁzqو?y`30F0tXTXb y0G࿐iVX?QO ^?|[IӂW21L2O,. R~_744[|c.08c|][.^9LhrةXݾ(0nj @NRP16O  1/_M\o%x.[ Zo-{FmZQN@h4nX6A(x/o[}e{L~{%Ǐޑ+?kC g_zm7/fwk+x;w{f;@*ADc"{bd<5jB"LW(њ j)KՒ"* Tun}|櫁΅o^E:,|J`EY|t|V+.sDxqzsy|+lh$48Nyam(ox\pd̼Eg Vda g vΠCLYApyݎ!/.n\") Qy)1@e?&?=;_e8aMZp psrI*,j<1bgX7x A>miV&| 4O=}[is0%0_$i(.c |F#^lE '[iIÐ_Fr&h[8oB8Ljx 1ZMZ ax3huFUcj V. z.hsKBEb/ lۭ lF8O>,3M#:yσW̒=D+!N(C{QC'aX;I$s;݌ъ(uʟ4!KyRR&p4Y̅!3-mmX/+FWm?@Pڸ+gY =fdѱی_ib%J-]T|VjFEcɲ4L_qן*y2RNV|Gw[rSII&WF/(I[ܼ)kh䑙$;!zgdĹGnqeUKLtٌFڶ)/p'1o䰚Qn(/G={w0 [x1ȯ_Ǜ3jp~͘llQ2,tj1k á?onì*p;CSrI/}j瞁©F`hd;kx0ʲm%X,v#.2 7U0Er`PK4P"3Q~I?3vغ7̏ᄅʭЌ3N&Ӏ'i`m8alWS4 ot"YV7钜$_4N4މ8.󃮫s2Bk^U l(ViWJkz/)]3NVpv1Uzz2qgnmYt-[p3N[W*ቬh첸fCDyyGp9#T72[\. ;n:51|al^'(Gx/[NnXy޴} _=x㿚@|H{ޤ1d&"{d@ 2)( Z45h2><Ƀ@~6ݨBEwE|:މ|A k@%?@G43 0s3ZKh>W O h.W5%&]$('C0Oyly?q9RsT6}@ۭ{AkGN3Q>x0rVGa%|v;B8T,՚X:KǤ0o~ ?QxgOUCS8_PaP8gd0g(z}3U웱Ʉ[TKJD 1 f`ߌ7(<'sdS!3A4eQ4 S2TWؤ߬CajGU<~$*D*h!jE&u݌:W&N`Zڀl?PX5 Rg.ۄfԢX}+ʍF sC|g@CEy @+¾1؇SiCdt31$S-[m姙BDoQMQYg*Hw q o(f3P5R͉ohDJmA7Q&lNZQ(N+R|k+dh%_cdRؿ62*OОy~>jx:JbTD[^GR]CA85'J2/yy@WA ?ħ/YcWt5t-[)5vjIŦ͔NQ:SJFsƩ n#xG#kW}FpGl;W&FUKUK_T'%C;_new*6I}-}x-ڌ͐g>rxfK)|]20feOA{)ըѿ׷)|}+ߧ|})N]F7*zWS]Nu;ՕTcoUUŵs{ՕUWW^e TRْɭɥ3.C6>R><} >x_FSg*I+WYFK)\MO5zZf.3Hq.ʸ| s3J9R}ofXId9@y)X%`1m]x  }/_"4Xt9?%\đ^7vB_榛7ݜ_дmf݆ ;6y:7;]֬:ORGeIpgP'6l"w P>9nt=5x ojQl39 lF[QɳzV<ƳfWL_qO|#0Wj.oDp3x#n;>9aF ;*.;凸Csg?`gww\)jfCL֔{{0aˁIE?}~-O)܊[S{'=l`<ӣ tځ;spoۮ lb3IE ]8[ᾥtwio˝r]֐˔4.6B\)Mx P5^mA|?>9kYw8Wy}}7_q~sgLˤLkx 75auJ-i~b}pn_k5ZxŒIúSl }Fo!Ƌn%)œ3ӊSbw^l-kbT\ŒU֖JrI Tb+z1= X݇Qca/['nS`q$Uw F-LJ39*Œ_{uЦc wRFDIYrJ)H#1鼿\:iNtίF,/ك ŽFlޡ4qt;(7Jntr)zJIWw ΋ɇ_ =x endstream endobj 30 0 obj 9783 endobj 31 0 obj <> endobj 32 0 obj <> stream x]Mn0FtD$HYGM{En_|i+uzg7ěv)~CsI:z Wߐ:ҹs6>c2QwaⷰvMp(~-Νcsu'7$*K)TuOdmX<FRF*e;SJRȵR!T$232[2gsB$ , #X F3o;X*6Nj53SO, | =5r]Y >kq-Vrokok1gJ 3?'i%\m$+Ý9q9Ko endstream endobj 33 0 obj <> endobj 34 0 obj <> endobj 35 0 obj << /Font 34 0 R /XObject<> /ProcSet[/PDF/Text/ImageC/ImageI/ImageB] >> endobj 1 0 obj <> endobj 36 0 obj <> endobj 37 0 obj < /Dest[1 0 R/XYZ 0 1191.118 0]/Parent 36 0 R>> endobj 8 0 obj <> endobj 38 0 obj <> endobj 39 0 obj < /Producer /CreationDate(D:20241025161636+03'00')>> endobj xref 0 40 0000000000 65535 f 0000054143 00000 n 0000000019 00000 n 0000002788 00000 n 0000002809 00000 n 0000010350 00000 n 0000010371 00000 n 0000012401 00000 n 0000054457 00000 n 0000012422 00000 n 0000023683 00000 n 0000023706 00000 n 0000023896 00000 n 0000024216 00000 n 0000024392 00000 n 0000025559 00000 n 0000025581 00000 n 0000025784 00000 n 0000026084 00000 n 0000026261 00000 n 0000027553 00000 n 0000027575 00000 n 0000027780 00000 n 0000028081 00000 n 0000028259 00000 n 0000041970 00000 n 0000041993 00000 n 0000042185 00000 n 0000042723 00000 n 0000043104 00000 n 0000052974 00000 n 0000052996 00000 n 0000053193 00000 n 0000053659 00000 n 0000053970 00000 n 0000054043 00000 n 0000054275 00000 n 0000054331 00000 n 0000054531 00000 n 0000054667 00000 n trailer < ] /DocChecksum /6E40A2424E8716E9F6336CE470251E1F >> startxref 54838 %%EOF hardinfo2-hardinfo2-1331e88/tools/LICENSES/network-statisticsSVG.pdf000066400000000000000000001210611474767047500250450ustar00rootroot00000000000000%PDF-1.7 %äüöß 2 0 obj <> stream xMe9%ddUV4.@ A' w /š|ݣ"+5ZD7*]~틤^//K8Η/5^?th_?я%_ٿʙ'p)򺾴RK1>2WHu/·L=f.E;\ __5 j'1W/GTKD9)}N/؃a2g1&vLśQʳlĠ&uykV.=8%2417#{$5AysI|e e"U1thϭ8`OÇ{6(|'Ϝk"+ ( b58` [Qk;s~P|*o71 t4w*@wft|R4>p.<F-qRs1] | iƁ^s>"Y2a4`` 12A׳1ك \'9K5W0\ SVkE.ƉbSȘ'drj+f :Ms! lZ R7.Ljw@ 0+Qтo'ئ(2;z&bLbNg3/d!0bNߍur\9GwMZ hd*{~4Ǔ+h I6Uc՟I& TzKpк4Ug:MHODHCG߆&)R&sq&%ʜ)ίt%*% B=@){"C^%BEi fV'/Kvs50_e0&/_tҸȪE@w4b(jՄQ0˔,:L "P =At m0 NHi6I8)\ m-o'tt֛2D4%D6(B(Cu+Oz*soeYA(p4JS9{$jv+И*~7sFgbjU&iѩ%M.]&wLš]j&nNuH"k|3p|%T}vS?Յx}`]jL:S^mv&YhS<¾1K7Y0$=gںݳ͈1AyZf8(N1L]?\4m5åϡNZJ$; c}sd:Vg5Z VPJ +ғVƤ ML\4S7KF̗qO%n8CCOxбУ>i$zL'U&TO6mTq^2%tkRz.p~h9b"F~9*e -kgS58ƬtqvAېZbА|Wf g ssAVsR]ܖRJu&n&҅Y>eҠi("L =U8Ӆ`bDVdU 0, йmG4tk_O魻yallg5v*lrWXKҳuNT/jkb_11F Ob^=D`뛛 Ǧl[8d:^jڽÊ , !\udU#^u)^_p|̍d|Vp4wח@_ؗz--U' qζ;Ip0؇A59kaN~K\[wtH^q wG|-bj=_Hin1Q5~hqW3PSw s A"W4LeG<$8!noX!:|'84^mʳq)4.ֱWv-FlA[hńrYA[= kbmj(_;-(9s'bפ {n1j"s F ~qaSU)o % 0_St@(`T4Ώ#mZUacWϤ`#_?8_sk0[5`&a9fTR!;& q.$O[3sy>.\ǓlN;b`J|=Io|2%w1e4ؚu.1=`[k~%^׬Mj*G.^Mu4Hc>}ssK ݹɦfv^ 8ٜn\2w(yjQnzyN{?fyjp+^_o%'zc Q>Q0O~F/D}_nrzh ו1gLG|2f/_j?:73_c&%OgL4?Gs-9'}ȉt ?j-ZCKu¸ژmqȳ |Lۑ dz#闯޿?qfӟc\cuS?_9SҌ=۠EIO+kȟ\C_:c?J&MeY9~L <y_ k_Pc=hycD;d&Tg8؂^4Q*Ilt+$Gk̥9H(2qk2k}\Hbn\roHX|ESDAdȍ|?9m~IFW"N Qn'8=Sf!~xpQ+n-1ht".X+ J r8(Iy9QOnϊ{r޺cC'I܉-;R޲]Aʑtᚺ3+nϟupm581Rx5سL?j>Dt;%LWq q 1M"&ۖ~g, .g0q1K0:sxcp 6MN0M1wt n{ 4ȉ*> "~ɉRfȉD+d9KVK2\P[0xvW-R2X:;uv n'&m &0_Vgl:n\Ylgr@10k!\9΅І"jcuL]L?\}]]"rEreK-U+FcW@W\Ntm^'*+c5s_|fdaUAD#6D _頥hecLx,+`~'s =#hiI/-[5 nRMեTHgӥG_+bųS[6TyJ[~"d0)P|( m cJwz){C麕+0@lw4xM?[6r ٨ku݄0ay Y,; 7b뽑E$җx v o| 0/\Ô|qg!}lLvޔƹ3)B alZ! #L9D=b]|{bbۂR֦+ͺ߆q6|o+$#]HO</CY!-$Fnv a bd ㄻ2҆2҇YΖ/4-oJg[hScжBBa>7&u\| `|l٦_ eڇ9 `7Xm\0kĦy;nU'S3LD)?uIWHS~2i[[5l)3[v60_"BmF[<$MS{vV?718kW̫ͫuG̫ͫͫSgWWW_e^}ܼyU^ͫWce^ܺqu>]9٭s[W!/a]C8oe2kH˥ڇr54O5uK>N\NN|_a`Cv63kYg"Sa_CO;w>uM6lzX'k򡅅m&6 zO&oG>;vMgޟ{c;-yvs_rW'%}o'a;z6yv[y0uމɼ%D=!w~+cn*xќuQ{cÝ21}|zbq|.P4#>.48őIrwbZ#]8pS2 ہAW׎N.諄y'Ig\BD`.kT4 1at|Ǽ6IӼ}s1no VW325bÞ Y10>Ui="d&>8uVU:7`p<W [1q1E#q<_6.6gêhҪ(cb`qĖƒ%+baVZO}&muh `An׹.&hh"μH\q_D9^Ha}rz!Wlk9-wk)]8}m%XNy1k#5E[6"QMȲ*`ad%b`iB\cX&1lS>(|H4jxEN^SUN}e>K 6v}i,p < yUs·ӝO];'ߖ]0^, eɲ#di˿M?KAhyrLa~a~L?*g۶ m:TsoWh/)tt@j/V~pvnnV$PŔ:В(q1@@/`#^go(`#uj;ԇAJ_M25ףFKHWl{OOL)Fr%*'jVc5cɥOV??I Ҏ˹I!,w9y㮁̇)С|(.EU{\Ķ6@Rj!5H2:α0,3% gߔ""%潥Z1>TM]M=o*T|s`RF0R tytLmahM3yl1*F3+3wvwʸ48B\.NNz6_ϛO[\G{Cqkl&dl36u占!0"|#JGeD͹`4+`=~jWT c. J0J#im1l n, s EI{MS MPmHK XKl2r|1 T..n^bHbȗTI!3NR MKN.Ң01f[.&6cuȱkcyȱQ&hɱQ7Y9Yr˷7&CuaŰ u>iӗuYp4k3b䫚NMaӑCinM#<ŒCBǞ3}q| Џ%8C!XC!܄Ur E]iKֱC}𚱩f=}9>5+`v[ ;9 tIw̒􅹢͉.kD>^usˋɩ2dwuܖns[ېs[sM΍B΍BŀACʍCʍ7)7p))B$v'׷wJMk^31n,I^96;t{݀wߝ[}pownfownΨ6pnbm 2RMQa Lc K^09!gͲ((hF6te)d0D0(&ФɲlcaYmla606a6چ0C4K},'ѤǒecW8pɲhx8(#&_R 92?շdy\&(6_ @k7cN^ˁœmm,^2Y9P/X`>ƤԺdNKN8](0pI|%TIԀˆvYxJmg]PY^CqٖPnb"NwƬ:>,Th֐vրu % sEh8\rQ;۴p]L..FN%N[D'K͒n_%ݾ)Y2a.v.eϗx 8mCO 8.׷,,5#ٔ?̾)0&ӆd:0⭎e/*' @?Vtb ꪅXGu1.'>iR QU7#c[Rv>W%~­n~<ߟ (r8 tv:^;]U~YQڈdڬlبGFl(wYپx!7_ݐi[iMPPnʸ4ڸ8|S& .!K&O3muI5Wؾ{luPe@0J߸:c Pr!UUje-C:̻¿7n ͩ(@q0l^YyЫ%<ѥ6L<@RƦPLk kK/޲﨣]^lB̖ ĩ*@SLQD:YԂ0h{kkQu.HƘq!*xͩ Y8)x mNxrN<7SXuZU) A "R?ySAF.'jscVTr\VyVLu݅g=9W -uNVvyQ']>TuZاXwu*=yWټČNhfiu͇oɍOڍ"`h'&nm % 7!p3e WŘ.\pvi2wx~j4EMDM׸^qYδf4H!loi ڵxͩSPiX 6+ !Ÿo-}gyzM)?_%>FAݷvk/"~k;c_fG^()ob:6afыji*ʨ*,4-?[MWܮ>\ vrlU{i~0b';Gc^30U?LST0U?LտGVq)/yTGr|<Lf| 9!8ט42-%aQR`r Qμn񹅃n>U`Y1DyI ]87`yoQVe^1sEB9i<~)~wup=^cd6 G'zbNYyցRYk"*JUs@Lrlo33\վ,N@A4`JR\_ł߼,U; oK5b$KmCŢke 8HaHh=cZI$)tj b>I,q_S9xefϹ$O. /HLʽL_~Ʊ*_~aIɅ/̊3g,tY*x%xj ʬV~|O;II='>n9d-üsjpy^Z]N kf#$J"7M:d.=$ҳ"Epsւg+֘;|=ձ;t{ v;jO@A;kƏưĀrЭ*o}͕%^,M)wZd40"|^U(17H{ŕOuqu|V2jL*EL>X [8T$|¦BbL9AM?9M1 fӔZpNgS/xCbv3 )j:y3`' `x@/%3ח)%wGDZVfISRXrP@K t\Re`>Feֵ]ymnNfG}W12Ǽ|uĒ"fX{O1 qƢ:}|s:FҧGɓsk'M˂R&YUqy} Vwծ/Uh>Y8c^_}wKgOZOb '2^;n;Yf0/ sK|dV{Q}W6̗ƒ`qI=UBm8 SQ1ϭQDӢ#`*A݇am2x}Y 1 V?1[oxgO3Wy&>'!q_0gY( H0`Uf=ʕS;T 'bsܑRX V NP$ӘjvRUOs`e'q:5W':=YA$ކ3]aYY`aRQS0l)^nB+3}W?˕0ef [C8|W|y{ xp=oQ2}՚|E E:Lz"hm!1jXggwPCT[sNNkZ 7tT06}1oD1~>B0daD ;Y9)5M OQd"{كSyF{ >MN-N}ʮ|z2 їz)PgW,vs% J8vYginG\(1Py.v Lɭ{MEߧcՋՏQZ `Xl-]vԹu'Sp!Cˆ7l'ٯE?x2+l*09tp@(cp%#|qI:OCɄ 7=W< ZљO赡Vs=\l ;zwyjd~`!q!qFtח`_L9wWwc{g{&HJ*ݿ7f>5\jԤXIJYęq;Ŀ;{ww{J?Sow[X y!pKywz{^|H}h>? 'gp p "{YVk7b r&32 1goyTxEȶ?9ٛb[uMCFg8S5 {@y#c'W;6V%Λ?U1Qs+%0# peA*{kgm +?iq_)4D9|ˀR>,u4%(X2fK2-!~nܦ)ڭRlcK^m9ie_ ʮ=űm<`1]%El s|>>ʅ4P~a= ?~QE?2Sbh+t0 _+$n-Rݑ}cձF[\ 75-jAxUU󻎗.ܣƨf׃GL>tq 2V&Pp@jsڢUyG@͇é wt߭gIoa.u,pl0aXԝ߆ŠML2e޹C{UR6ETcJ-t<8;ե3;Mo#`I^1#rRQL]wU 8'&PI%;<_dTaL m~Xhɧ;3z6fݳÅ 9yanReb[atyf93q{ >:I2T7؈C6e0pn?ؙWym_o7OOF@kkkkWHqWΟK?0O~A8BPޭKyW3Df]M[-:zP? sE}wP^9OVADMƦ9(i7EqIqD|&;Ll˔3մ?Y/_< )92_ Q7:+x|g8Bfk\Sg/z/a+ZHPE8F~xKho"֡;Iki w*YWM~ڲZFuKF jy7_Ce \Qvsi,Lz.6#F>lTղm<[6t޲mCwB$ŁANԵP(1:1z%dRlJoSY.(υ|U03n~*Rr{CB/YJ~f1kw2v{Vi'2>=2@cfeJSI%֬Sf ri P(]v8|CUO>_\꺾P¢Ԯt׸;WsZWڝqdxπSyGpsT;tD:Y?eC4܉7v`^SDt^,?h+WSO(+pút gIM[qA,5|xl]q{/4ɳtptDR K:"dnyG@ӥPP`* AࡎW72p3v"*r!3AvސN&N &&DŽcHa5dbƩ Wb =NLDb3JH"#25Eӈz0 `ĺ.nJͪ%R ]y3ALØ}! 1yDGeO>ekoKkЇilf#'~ ́[E S6z_:h|N*V瀺E/g|ٸ$\6!% 3h͝_zv˘C|R {xu9sIgR:4)M)qPL8=]1MobZrgJ1Vە5k`&m];/od;#JO0O?<0O?ӿyr=sԩ  3plCO0P/XS;}YdOG ơן+,}#-#/Ĩc}h2[zW*l\ G5ǶE5{є#{%C|~N ELPj<0AbDAsYGZcӸ F AV` lj1~Q'۰iZXۤ>eI;&G@߳J r"mG$V4]tc"A"}ovN.Q&usʉ/ôԷGߪ#[6n路Jtrooɷ\?k5ƾM9GJ<~g(n|6WAHS'13ۡdS3>{_d!)ۆ@ȏ ph9wL3cec7sn?6ƍny#{ Y*StvQ]4f P8g_-_ueQlY7SN:%[5^ņllEK'M2RAD.xORrL0BْFcҩ0su,BOiwRxgy1q´9@=Yq!}$Y>MbЋՔ>(ٗPm(WyU}]Eꀳmp"qb6[r?/ܬN}tf.Q(vgq[m)R!Awe9'%T|@ی170R<;{hI#`ʟ\|{wހ¥r+~ TOo7GEb4݈a0mb E :qAr$ (sBS!1>4PZTB5 X"kUaaL=)ΡabhލI-5¥cέX'FqYĩųۚŅMaӼ T,QtH6B^Q/R'lS\Z|C=Nl|bN)WLJ;,]aO.^D#򀙌kB0K-Ǹy.v Swq%Ļrr"Y04-pJg[hScжD˖6> }n|96x=l³UY%@$Yur\?,r\w)?V[[]pz *)n ,7Y7<'A}md(x*vޓɀ=80/_ #+,v;BW0RިTh%Cd%m bp7x.b0H_U*J J=׷1|x,M8ƇEN,гE N89R.%oudyE&h½!O20~javU|C^` FGh(nVQ$l;誘+@ԅrϛ 5! F!z.WPK0WwU&-/\t+Og[ڌe0x tI/14!NA,ԖxF <v}) K9GG $ d1ipFk*Ә!za5D;f)`t}aQ _f]p.҄@4|/̯zbOC] >pԊ)V*NfUA4FϳqCyEe .9@La9e>Ba6w,aĒ0#dEJZlB,5DZ ەZ_?93CJҠrD5Lnd̦CD'(ªckwf Bv.k5h6 ZNdlC9Y{2'CL6 Mбʁ9t [5׾@ۆp&2aZv1dӴt17A@cn۵t}cxwdD9,.u@X @E:|r?Xa T +֩p.s$Av:r>3c># Zj4By,冹zoMchc̲Vk  @E1~**2g.62zmm60ŋzML:5%^5bcW9Y8{$K1ղiOzZ1#bڤ0W1s661 eb>hcY\'0*%th|tupEQ0u +(w~Dke)X]dWtεEvma`nc-s[%L pp$0:=FQuԾ&tVnRx"|)(Kc*~?f8׬Opawgj%²eR<:c5yu>JI7ze6~0؋.ބ{XSJڃ#e6"HelGY%=c쇂S^Wm0K'ز8x\rLsk.  ;=}z{My a}#'1^P5S0=^:</oL}IhC]\ޝP[|<(=$dEJo{u pA:Ki8zLzXŶTF"\"0so,\k9qoٺ| Uv}̜ ?PBZ[ux|s) !^>/> ^p#}Ck),CϾsJ-<܌WW -"Kh ;n_<=(jd%#]ss'gK=v-ӳ¸֎\i?=lfBijsB}Hj55Uܒ}֕RAB>wׯ4/Z챛zwv>T̈́鏐"vk(J{CRNTeX S,?U,`ȿQ*oVbN2wh*H{~beJ,46UiaνBc0'4(|洀OtpOp}̥7*B6t?%A mR7eUUǴAB6]3JOC:?=V~hz~l8 *uS} $Գ98x1"_:YdF=@TW]xQhfdc &TUg9M- B7 y0'9.A?ؤz1f!T5hvdH!JKe"e1MR'2mH0֑-SKy3=:m2d5gZ"鐧5@r0H#nrPj`cƺ}R2,bf"7>$9 pw vcfPe#E JZ3]lKԠh,,blKtw񿊙^["ѤGjebsL[L31As yPP+މ" d3%AILdT[L%B;d\zkcXu:uӀ5mum6ٚsaITOKxI%IO lr,|jNF1w+b˿ߋKBs ^zsL=:T<@BO]Ri,U2ΜZ2^_G(udv,s^{ 8Xڗ9!8?S@4/#dsadbD(5vPQ'%e+a ih3,)J7E tw񿊩ϭvFdj! Wh'˩:MSXD#1iX'-r@xEQƒ(tfk[%X̺5!9wt8wdK6v*`B >̞Ofs˜;B>3Qs5<ʅv]e> IRVL*-垖x5UG'ńsE\zbvH̼HԠNgB)!P {(`'X5E"@j֪UGyVeQtV#bZG خvC!#dxǢ d_[nKrmRjw4+:2g[CmuLW(iL ff~ hSm$eP >mU{I 6PlD4Rcip(}OR.:Uj/ijaG+^xeU|l⍋&l\kC^ME)ls8{U7TcC- cccc{߫j~  +^Nyy=؃ bȖE4qdioa嬳+}x GsYPClߔi+?4Tm1fNlV婫p C& ]VݮZBa/k~%Ԫ&ⴔmKxVB敉Q5HULMz. TYa 9{fB/!t*bߞ\0nM%Kd;p:Ck]p.|X,4 ?"s?#A^T}ي!iekU>t >ћ$' opa>TWP¼|8;aAJ-bnAyIV06S ~v&#C{@-dGRM#={ h% 3 zsPWF.ĐP(FZMGў(){M hVAS\z L L98_4fm*"NcwՑhW1`Nx6Ѵ@S]4!TvY'P;#̃Ox}©} ߹G߬yckq<餄"Y$mUvՃ!-L]M dztЊhc Y%X::*eC *h2ӯ7݈duк<^٪ kW #g޺&83Fc7Vt,Rp-Lt.lFM8Uj LTxi 0RשҴJb:IK-]ֽ+ntnyW"8aw. Cw!.2`^D@B/Hv#1cK^U]!IiQ^o &V(;ő~SU_Őw^գq`^rH"EehfBza:F]ժQ<\Vz6P&)pUMO}&4uh;ʚzbuRaGaen9y=excF_P+ jx 1 ^aN|"i @e{MN-&Uc`.U%҉ hc %Lm &6J㘄 o!cÈgj(kJ'o*ԕ-TY,9[q@ӏ,=JXLR6&u}.~xE3rYRx4Hb>SQKRTˈCLsevφzH?"ɲQb= =l_~//CO,>B0rhSe(3~οx%9n/ח) endstream endobj 3 0 obj 25552 endobj 6 0 obj <> stream x{W_bp !ɥ\44eLVSD"dMK.4Lk3teht/D.S)|Yoϭ39g=?Z3~}.Siaaaaaaaaaaaaaaaaaaaaaaaaa1OKK۶m|޽ӦMKOOOMM4hٳnݺ_:iU'''vڑH$11ݻw6,...Wԩ_>F%3gG!2駟OJJի5 oN^^Jk׮;wrb6mH>`K~'EEETCרQcQN,X@LRꫯ|׮] t|o6vؚ5kvЁQfΜRҥ q_qR^V-LzׯQIΝ{qljwR'-bK9yy|޽9V}0*:qH:99モo믗N:Fʑ:lfͦM;C999/lm۶)࿣ WwA@믿XYٳg3o[l;tIF?,}buzǎYb)߾}{Ν裏FxjəO<򸸸^{/R1޽{98LGnzݺu!+]^x!7ұ \{,?XoGUz.WeҤI@oCM+zȑ# P05 znYfW_}2W}/<5W\igϞ5jԊ+bͷrRTT$cƍ֭r4lؐ_z%,}ǭZ:/6SL)qWKJJڵkR_h+%\꡸٫W^5N;mQ:7իGAx_j.T@'lU]r'ZlYA5j(oФI{ϭ%UY=z[-k1ω8e.'Ov!ΐ >k!usLH233c=۷oRluQ/c] ELV_'᳆ vر]v7oht\p'AsE\K"'=,)σ_~Yyg{kvsE5m#K\~}|VV"5 ";;[+Rq`Ɍ=3~42`'SN9(L)Vڠe˖^y啑cá' )4` .)k&_oQ^݃<,_\@ R^K9ɣuw^w4?wygx8sN |Æ Zso۶-,[o2aڠL 8Ptꩧ VYb *X'qqѕfCa6<ʪv42W1T8khxD_psj뮻ꫯugΜ>va\Yf{Ϥ(aI>vZ׳3s't.?^. 6L IG$YX]Ido{#Li~Wգv,UW]&wMʉIL4M.a\'''Թ婧zl х%2Fj6|2ܜiGІX+ڳyIlDnKݲk0ZX!Henbϟ/ӵaR'4Zx[ZȈDcn?GӾRpg$yyyRNΝ|F*7"KG '[ӓO>8Xb̒@t_gްv!뗚ӧO 1ѩTӑVA}.at_~hdvCNՇ磻={ЬgiZhNceΠD@f͒{LJb<F>G@T+Ug2/Q9sH!d_~\BH]X 7+BtvMĄ?<3Rx)M ܨj wC#2Gn&j'gQ y)SHŰI8sq$9a\WR9+Jqq1\sbBBɰcRcII97Lu5zU6jՉ(nj#>s.2ҠAϽ`{zwB߿~J]Xp8+";ȿ+CN QȌ3'h[B)RH6{iy7O _S$fuQA qySpG혚H4Kv94%%%Ph@?}'?UXtG`=NO?l%#5 }h1M4 IMM堧OՎ%x2{*=}&ܰaѣ7ocNgZjqC \Hhbkժxh U;"|N\X5=NHHpΐ^!/[L6t~˖-Rkx_qXAiC4ncN܎b9ӥ%P\KSSBXv'ތ"wW(K λgnj/3 [gy^1kH1kW:ȸ9vf9!!+J`Zu"_xQ cլ HWGd}jjII QZD}y睷yf)c$%l#|_LO  O&GWHXuMٸ"u:@q3qɶիդ޽NޢE =y@;R/Zj[=..Gw„ }XƍU?X0ڵk@5k~3|p>Yèo߾VQWޠA> /Length 62 /Filter/FlateDecode >> stream x35г4U02131T252352(E M MA"0]0.S4sr2Ҵ. endstream endobj 5 0 obj <> endobj 10 0 obj <> stream xzip[Ǚ`w?E'>A!ۺrsmLgiׁMbZ2eFל_WZq+R\F辷VB\rE?atW,RSm(>BƏ<=SI((Hh4ٙޗiWw%fT&%R~EhzZJI(!v\LL$ɹ:E诓0s;P)t^ԨLG " >`2%VLwG?fToMLA& qpOj YB:tGd H`!LG023{Y)ELɒ%1)\$ N{GYLG\2ΊKu-;-O0oc`Yɬ՚p:.Y4Bc ;\`2KƯXs_my'-t&t0Xc,B6жcf-GeIJV1.tJ&p?.&_r1 TvX] @]N\,O7>=,G`VE`VME,O>KY-}yK$hZBFK\\]<./֭[\]VNTA>*S >+A>>kA> -ap{R'̤! A> C<6B(t cM1*>*}SYI=Njͪ3 IJ^i y8=y|Umbk;-C[h0R'[Ӏ LBH)TsZ 9$ .TVvf]Nh*H -k@qI^ lۈ&dz/؂4IsJl(yC% UڛL-bפ'n I䪤JLΈ*,i4ݺ' Aʼn.Zt v л!SyH"` 58#T"e2IGׅؒJEP%Iֻnz(URadMKh$@A+K1Wg}"vޮXK.߾D\U伉c?BT]+AMBlݾau7a5~۽#6>Q> `G'g44hqYt"O"O/t)/2ԇF#cѦpl"BlƦ+6ĞM[kl@wۖje/-- ~EB-FDF8M1-kq?0۬shky.6DLEDaG!Zη#C7&ǼXXs RPqjT?ysd#_TY\[ `-W鰈UXsK4 jZZlLhk*5tT7PP{hlGlNL<3D_]>0Zߩ]'ƣU Óċ}^ 6>X^^6=pf5ttxp`'ꯛ. U]YnwKbѪb8Ҹb̑HMm4 Q} ?V8r+ `, oiH8O7Ek㏩?E]2W>$ɏ"&s!Q !*j>`Pdͼ(nu{j bsɶqṃClNW}^s/|exlc.@dv)ŅJP,hB!5D3L > `rpR1ˉQIUF FMʁ$0O$,ת*r(ƾGH^'!䮙dj@Zw>)òxS"t{NzRBbmX҂Ub?d?7 Up**DZx{h"ɺT)=DoSf1:yPdd'Ǜ,ǿ94W-?5չ-:t2)+hfHNHS"֍au+޿7=j4kIAQg:NWaZYAzYVv& .&\!h5RƩ MXDҶ f8Ep`h6VrG޹DҦb-sNw`D}g/؍ tjW3~qޤzE6"RF]DZP`-銼olj4ؾ+aytk}%IfԠ戒^e(W&C4U.+X7; ?z8耑RĻg<9\|Cu^5;|a|ML`#'Q<IPr )Yu3d¨%E%9SdvC]uk@V7 F'gfG#g;˶ @n^Uvq҅sKocSq߇ZaAcFC/P+;KDs>:+R/ZlVn0il"JZeox=61w9ZVMF;2+j{z9[->TW>zbmU=yD7 BlC!Pz8« MpОqϫ﹍QmTTRdtu2%](2՛K)B-g}YS;N.?==޶,Qga3x._NI 4Ooz]@-lJ(/-EyB9# 6q[ǠgC3ZhW"\ĺٍSƟyhgީcm>3.0B||*=fh_L`+uwgTu=zGZ~fۥŭv=1c-ZY'\ֺAdTf]fWTjXmGR7vQC{u}IHLCC)+Q9ߛLOgվ.\^ 3#ݾ'L.Gr-&4LMdCU(LGl=L4| 4 ~3^#F. ؽFKPM-iUk*GٰMQW qM61pL0.![ߋ*髽Nl>7^97{g;O=ѻZ*ĦOv2ݒ{ef':qDKγݝg\8p0 .a.o_ޭ/R@b=Lmd$ _﮽ت#R/r5*7e{cՅ=?h2;*-wN鋵_?.*rtjZ F{-V%T0Q7^,xە5wkqc R\YA؇)NЂ E)cr":Yb՗N6,@p:ڢ枓 w?=<[pXV 1paW4*+~Ux鯄o(f>X^ybw@jP@h :t0twaD! J'xT!#cxro7mLh)E j*"a"ԆvxFQ瑙l;8(tir#h s+q_csctz98_P;#ЭDH> f5=t!EnI0F)GF.tKyadEp5^|3pM$ J:zKM&uwWw4^^3ZU{Aw t ^-PW={S_߯ߠ3Vw=@J,l-0`"/X`98! fF:I>4;fd^q`0;  ]3/(Lj# k4E#=f4[ R>| okN"pJ-*jKIT @%xBYf1Y 0ϲ=`|]Oo F>C:6ໟirJJ~q:Ѝ= Ticb\'  }>Qy죌$X0fGVt; L?G L&cCY4,0.('"kwAjj:"Ce,$,cY h~oB :T˦^֞&i~HoUETUNY|?CUUm'HH- #%%%˥KK:uD>XF|+Tl9()OLG_"yu|*:T#s~/Gj7߭j'QR֙j_+W$CY:ngK4ڜ endstream endobj 11 0 obj 8143 endobj 12 0 obj <> endobj 13 0 obj <> stream x]͎0<60#EHH96@ M9䐷_W+큨]lw=C?g? 6CӓCb$v^6SEq0*~ƵӺOK}pI~mxOÜI]?>_[s]\s+xL>}7Diߦ.>Yy:CZQr:M&yaEu堭@;~ךB%%tU/Я]S7)[zώZX=Emr-4KWhWi_5ffr  3TZ 2%er 436 {! y dfp;;߂S_h],/, ad9x-k B^K qq+3i{!&Y .}~n endstream endobj 14 0 obj <> endobj 15 0 obj <> endobj 8 0 obj << /Font 15 0 R /XObject<> /ExtGState<> /ProcSet[/PDF/Text/ImageC/ImageI/ImageB] >> endobj 1 0 obj <> endobj 16 0 obj <> endobj 17 0 obj < /Dest[1 0 R/XYZ 0 841.918 0]/Parent 16 0 R>> endobj 9 0 obj <> endobj 18 0 obj <> endobj 19 0 obj < /Producer /CreationDate(D:20241025161124+03'00')>> endobj xref 0 20 0000000000 65535 f 0000040225 00000 n 0000000019 00000 n 0000025642 00000 n 0000030380 00000 n 0000030643 00000 n 0000025664 00000 n 0000030359 00000 n 0000040090 00000 n 0000040537 00000 n 0000030683 00000 n 0000038913 00000 n 0000038935 00000 n 0000039133 00000 n 0000039678 00000 n 0000040057 00000 n 0000040356 00000 n 0000040412 00000 n 0000040610 00000 n 0000040746 00000 n trailer < <5506D40852E6D3F23927A8FCD0880F3A> ] /DocChecksum /929D6D9B3D0312F040FD5451EF7329D2 >> startxref 40917 %%EOF hardinfo2-hardinfo2-1331e88/tools/LICENSES/new_svg_icons.txt000066400000000000000000000014511474767047500235150ustar00rootroot00000000000000Hi, I am Alexander under the pseudonym tutralex. I confirm that made SVG-icons for the Hardinfo2 project myself and provide them for free access under the CC0 license. List: audio.svg battery.svg benchmark.svg blowfish.svg boot.svg close.svg compress.svg devel.svg devices.svg dialog-error.svg dialog-information.svg dialog-warning.svg dmi.svg environment.svg fan.svg filesystem.svg firmware.svg hdd.svg home.svg internet.svg language.svg memory.svg module.svg monitor.svg mouse.svg nautilus.svg network.svg network-arp.svg network-connections.svg nqueens.svg os.svg pci.svg refresh.svg report.svg report-bug.svg resources.svg security.svg summary.svg sync.svg therm.svg usb.svg users.svg wireless.svg and all subsequent ones added by me to the Hardinfo2 project. hardinfo2-hardinfo2-1331e88/tools/LICENSES/pcmciaSVG.pdf000066400000000000000000005072321474767047500224300ustar00rootroot00000000000000%PDF-1.7 %äüöß 2 0 obj <> stream x<ˎ$m: T@~`4d6VfVL d A2 [<98Yy18)߿֌O|>,Q:@9ofn}V$``1PU@Z0i|i%-FS: d`\Zr~/,fIF^_wB//1/1K| 54_0.I~M7/IW$A{ x_tzrf?#(r.A)-Ďr89RQK [)H> s5-%HÔtK䠷<6TGOL&YBD΋. @;YBb,v& eMyZ\W+ & S8=re^KiqhonxdB#N^C( x i0F! Vu<( h Өr5];QN(S) )=8E&g4wj'6"F:2ZK+D1%8 _/4)?p]1MFE~c;Bzʚ<0&)2KO==2#~NyOO8 Rz2{9\j%dodo8cƊiXGNpP&J74}b9.̶9up$/[(G?3Qn# NZ@ràOӢueb]PNnu?b8AJگ<X uOְ6Y{e'YE1D6nuF5Q$9#Y* Pl?Mi,~xlz1A0@n,*ֳd[Bbٓ  ԭu2ߏS0Ea9T)(6E : e=n!  L0BC@ZuV(WPsꞆ i@(W]n9Uq59TgR_.Neit&nM x0<2R!IA"+.[QaZ(lC`v*r,Q#֑  XI\-Bn׭ee tYɤ*R5$*OUޢgR^Edtn])k3rFX]Ni(Jlbgvi s 2gMP-$ @з,Lt>0&ݱ sYì4Ur \֙ؓTe/l8AtdW@52/` L׆bƄN:\+kL=.'jppDg+Qb)^᤼|2{bWHT 0[7{aL&؄cjzv!xlyl?9$1֥U6l `J/iC$iKcXN.dv_!sk9\˱Kۢ b3F]`ZTrҨ+@fWlmW)bCZ\,m 47C EFW6}P# dHC2?/I1As}+T~.|h쁅Mx"*c=^PNtb# þ[cdBkA "A'ARʁ6 jG[ 6d%sz 8R9Ю m8څsE[G*8l&O[ v́j+FG*Xɝ%HhY`)34A c,\1Y9.܃og8ypg-w8n8 (Sիi"w `1G╱ rEy*D><&,AT0# p7>(bH# Wta2 ( qScA :ʂe*ˈېP*B˄Lή|a)-sx?p4TEQg.HÀgBOhG qcܰ#GϬXY?R∉Iw7 8?R9kʽ9u `ϻEGהWRӞY^-`c۰#2s'^frTƏ44=%bAƷG*WL}S* ׸pqOLIWKۉ1acܰ#2wq%-S9xwRs1ΏTBLJիSU eOe,_%󲥘cB!qZi+/o+Qƻռ,gq~:>T>SDbGuųahn ;V!ɂñA&iCInjsz'A=7t z P =S'XJ'D~@8T q6m{XyK e7Dk, )XSQw=hȓ¼ONRFO;6X+֔"-q^b ]rj 5z y61,D*"2ӎP"ZE&'? *-x|o }I|'ЏhtP%:z%e]hD `U;zXy:s6]dŒ<86&ܺEMIE/)+:wz_PcU:uP@4BL*)>Z\Hx"0S$1IkDgGnO {GS;$ߴ)Lk%s ŷu ;M%k  'Lj=ZBx u G3lwNtN.!SQ!`m$c,QXUy$z=vq^c0uÿK%ݖX~ޝ%C~EcǦ(i%>MGUEQ0J8( +qߧ\F҅gWBW;1ʧcfOsG \(VàG xdHS⤌Gpb 2n;gL"14#o6e|gEٗRk`5.4 MS;X)N>8b R ѧAAMBۤ'UA0;K!aRK!Wt$j>kX$ȭ!I3w%D p*Kn+ջr2|:3 d舖D br}Yk켇mXɋoVmBw.t$kȳD ҲxUϩYvI 'n8L32,G<%yD>7i .Fj1)gdE1jxRq/M wW uvKCRc˺EIyNce,xw~P @mms8D.5-))VPcgA>ڦn[+o%Zҡ|w>ŲXRǼOёyֻc[B]FMpSuM%Ǩ{g\Eܯ*[B"f)ZHRi(3uvWR'lހWشsPB\!m7x^.3-orr2 8&'yU2x o277 '`@hv~N5~K%QkOHn'y?6lg2u+aRƲ"Jդn'W"7 /s5([)R˕$vsJJnZ_"T6neȩs{St~ _#> RZDxhsO-pEuF5*L-`iq1,nW : 7#@)UО$;J_*RuKz%T;j^X"KSkLXNz0;j@ve)@0-{aMEFf Ҵ'&Sg f'+WLї˽n*{nv$;I+ܬ=ׄXoZ=19Eh< fz1o$r (F-QBLr"Rs"$,mX2ݧtى% N"Ħv`cK]$'jȦŸd9h_YX:ei.̊%$Nd㳏D*ء^M'g%z~&.~f޽w u,Zc7">N6}Dʽ<_JgN V󬦝r>`QW%c1cVI›}X Or= 3O_< 3kY~/(z4s[GٷGmgC/YO7g-{쨞t}HG`h3>1&*ςeYI[>HU"}:XG/*8g2م>s˻Mhu$ endstream endobj 3 0 obj 5669 endobj 6 0 obj <> stream x՝STW{55^˫JMeLb^4Gnv轛fAQnqW%qרDD{ρ۷4m~uj69ӿ[Ոp2J0hfd2Wkip0)1R #J Ad@\cz=1cdW(Zd2=&RY %JeQqM<^xS.7T6F|G%Y|}ޞNj(Bu"$%LSOxƌ6mڢgtOK2'8aR,G(2YZ"brM:݌b7ӟ5kyNen.KK+$'Kpl۶^qWp{B:88^&C e$2Ĥ \ HYnd>^s-?T:2r*Y^~ I>tEKƎ@/ذa{8?cI6CTM!l8 |gmŒ6ٳеɔRYTB6K0Ȳ#n|$[oY 9~i׮X![ht؟͛)/#;vЖ[@ߌ p 6c0BH& x86BDO< )(uhh\n~39#6j VٽBgϞ+Z@NSC=^oSqH@ ^=᪭ Dl*Q*C׿UW$t:mbXB28oSq׎:11_jiWpD|DCSSoO"Ep@v8,tj;:d!kIaSrEsgf:vR`qR0̤R!E]"ĉ p {@`>Џ:˗kYW矏sl!8*<z8h0%7>˗t۶DDBp<Z*tgf#,$8 a8vcc,8̴(z;}:Ái: ⏛JYJL VW;o >|400mmprF}m!#%gv|8XpXiiŬnip U[_[4ыFc9)4Ylhju,r=|/;ennE+ FG_n~']ܝ;w’0~FRE(,-\ a=Npb XO*'Lz[bl9,"̨upsrְwtID'PD &~@pgdfmYdÆ w̟IZZAdd 27L<j,Df\w -}?DRuDhd0H*d2,%[ppKʎe+ݴ3g6nܛՄu\n, ǀ}|21ׯ5dJܸѲhVѭ/OG g$h"5*j{.^=vt]nZHVQ!!Λ|s+*tº3XQrBl{8X.\]tllZ;M|hw{p+(@V[3VԴ Ξ6kbˍԩ-lcƌ0AIQB5kxo\Y**"jZo5[)s>kko׷76v67wݺՍW ׮T^~"$$18 8*!(] 0:>1qdr2:rN1Z8 C o|U4ǺƎZh!y.7{oCgER*KF9 8f;)"b*[26eʼSr}.mݺ sVWOOdr_ݦ.}.^lNI8?8ߟ>;ʐl 馥!T M kBfADCj*H&u+xGޭVrr>bKQ*~pH]I&wsHHVЍS.B$S!!q71c/^E6| mUU:QRifY%6@a4ςFOV''8l 55#lYܾ":u L,&F*:?'I Uyd- guVsۻ_6oT#d1&<.\}``K}d![#}Qu~NSc?"!"u&/,Rh9sgt\H;PLFc:_1_Ҙ{pGL7%KȈD-[*Y?2ДHiI:ZDp543c a#!XdXaalHt548⢊p[Π@lwq_R@'8VX^իmBѣv ڎ?INKKˉN:# Μ9fν{##Ȏy4|Lj%rOski9jOjTVF)h-:rI}xuuzeaך+fN}}iA:Dԓ'xcΙR+C[~"&}[̈ ͳ:;{eUQbmYY1ǔ{߷mR_1p~WPyw=%e:˵NW{]Ӓp#La<"EAQ@0bΔ\2HڜMJV Cv_&O;DG(vw'B.4P/6qH"S(`d귊 wgヤەA޼yp?4kw*;vBQrʕ:v'/Y/0RSOw0y|οȿװռ ΰT\y+(<|T*٬2쩩3u\5A9TGǪmxsp@zG uq<ߘ[2[;\;P>˗7n">Jᴴ>ؼy >ic#1cYblfa xаBcIi'pioiq&葄a+jv(ijj~=@u>_Ӝ9yhّeg/%5a5GۋV><߹wQ]mTI3;!qq:)wAm [||2s4ȼB؜ٳsqAmUzssuVV1݀L_.5q(李)i?:}\bo٠Jec3nI8-[ 7W'b~{|WWի4SWwMt^yX!tG8\מA9{m,Uz,0"v,1|IVk׮]g;bC*%::ZQ5Ge=0х0g)ıo0[MTQ"7BJmM>` y˂C#~o%Ϝ9+a jYR ά!h(whPyv<ظsPY s XX]`8p0,LcGԉqUECauE"_豺EI|_:ۇsxp0d4ŎYtTTBo>DZΚSGkCeW8Bl2AyAOΜ9#\~fq1RXe S51<", 3Р幜ڜz,fu-`O5$I=Q!}Q4FF&WW;To?tc^0! b1Xko` rCCgq%QPU3>OdJ[Q6kmoa ߦ&G\Sb6gwƠ6@5;α.S:;;'y~ƍg({7C>.>_bcpw|}0KEe?Xh2u?Ov+ _TL~3/>3 n51Nӥ7x~MicywB>vuL8Xh~~FRX 1]<:l(xmnXfŒ<"i\mر@><}Mz{r1<" M[׋k~I8E=e9XŤ<phH86-0[nA}pOGჿogԇTȪA.G8׃jیEuH`1徾O%gyxzWi{tT8>0/Nd0~c4mtasRRҌ3='xnX j)tӤڵ>^[nBl)yqMM+BPāě+w'p_+̷J;ucY]~{]WZdӸ υGX/nIL*LƏȓeͩ#cFyZJijj3f >ÿw+O/Ȅ5NB, ^~sVpT{&55 _;aV{(;&"q w0VUrR>֡JzGd2 L[ыΥBCaQQ6XSƠ ,ܽMG,s(m.YMpSy/i@ΤIqHW*KadeY`#ܹ+ cbm;)!<"XgcuȍǏ?\tiP'Bzs;#TY~8UUcU2W˱ga±@H-gh) GU 5̩q!7 x<n۫IB+2HG?!57g"1YLtC`%zR91~mw^ZUFu╇ yewӄwf̻bƥ+aO=C뿤o (j.D+f==GUc>Ʀq%/%_Ы)Hײ/d{|K71Jlwu3wc/׮lVfxkEW)˽MpBvsH&/,)I/HM#]_ endstream endobj 7 0 obj 6820 endobj 8 0 obj <> stream x{LWUs!80`4\?`dEermF5$7b,쥅\YꚙM {+CJ#& ~ ={ssbgݺu~ꋿ=|p-h`0:a4 L4BU {Eš{z4&/kmF?]#  \D>_~4Z?Q0@wF]Zō)GKiAmpk|Y, %+8hhEY({u1E|o| b45/ vNAׯΝN@gX^< S]:Y->0pyw8sKMdMs}OB>sp;/<מEVuk[0L endstream endobj 9 0 obj 1291 endobj 5 0 obj <> stream x՝YOKf!wEt\XuhTx@fX$ƨ(.HF@ n"̸QV::rdNTꢮ.ty8pȑ#򛦦ϲ_e2\ q9疖T*!ʫ`u%>jH†@,+S D 2ac(n*ɳs)n%;$k#H`|dToy#؈}KW=@p<x"f0000111;;˯_jB$Ct:t)f0mBKKK[[[…Y!& ^~2R)d nsp_p ThNB$"pfڀĹ\˗/ X,fYM~GoЩS޼y ޽{ηSww-)SbKK=!===͜Xk4T*;::bi6ec[[ (DG"f.]܌80~j%fqcwp$"&21:{8AJLDo@q;7nܰf/sss ߏ>kK ,8^싓g&1Âxll #jenkkkfF"z)9|psu?~ĦhWDmr8=3.jaaIE dNDWzfx>BpEߺu֚R%^ R^2΋/b38Q>|욙Ν;|s Ϝ9C''=B =20ÍV8#@ߵc}CC2Hr̖˖}%/yXdv+*pN_/Bu "$",fCNϩl6K\[])L?-((c":r<44i={_'O~Ti6:O΃teA+H_i6Š}OYL@ ^F4ݻwEcQޅ1N-sX POcG|8Etttp*%[Bth|:;;m?&DիWtsss0жqUnKB*3Achal,* G΅G9ybZ[[ >" L9:N8aƧO9\T?9p ;DI>a)a+9@bT.d0eRK)燖<H [[[me|a.sP>WƧL t=NVJ-78cUƆ򁋐1$PVnd}U>*s13t>N݊r'O(V>w|0jzzsz{{z>"Wϗq)> 7ӧDOCQĜ p0Xc<ѣGb>t:mUfppPi-l)qF1G3Ƃ}\rG%9bW?P($ʁھ}&(8rIL&CgU?ڶmgo Ac8SSSZWqP1۷{u'ff*{©W~jɁ<{ l(*/sOݤܒ-{gLAΕ|dr{du'j6ߕp#бc> /FkaիR0sS&d,ΒE>|2FFġK kȴZTvϞ=J8 ͣrn޼1XD>u-Z$εk8 {IJ%O|:|%;6 pVVVKjt韩&oYw3DPׯfÉ$N" eddDkoBdr{cL糭GFF/vU‘7 Dv‚!58OD$k6ПP/!777qy65~U7x&@&t!2B$Cb^Eqs!\ϧ5W#ߙ],r7R-NRC8K-G-`C0b#%G\Xn\A 3BzT%ܱcG%aP&f*744E$;oQ2OQG<1Yw¬c׮]YbvG#'w]8{%|I%(p0) endstream endobj 10 0 obj 2500 endobj 11 0 obj <> stream xNQCCQ0-4t! ZmٸШK"aѠ!؆( Ae&ht'(-F[zZ:ӹ3u:s3 "Kұ9gh6s㟋dȟOMPǽ7xjzQ.qd&Łu7oP_ ~ѯgwrz!~]ӻG=4`Of~ɪWc{˦g&0p $5xqU_mN/6|~^iA}rN|Pc-"x7y.hO* }q<IA9 KGMCSzl[-<*~MՑc^|# ظzhn[6Wa"^R#&Lw1)"* }TDG^򈋚XͳWo\||ZD&#2λ74ySwϲξ¦m٥G'Ա_jG}B>ڴy,3$5 g.{߷bv)a$5 %vَz endstream endobj 12 0 obj 787 endobj 4 0 obj <> stream x nH@h8 endstream endobj 13 0 obj 2575 endobj 14 0 obj <> stream xw`/zޥ(E@"ADHt BҋM ^%!KHn.w[Bݙ۝^F+Pr…KF@=D[p{IR&aM`.#?"~G\C|ELj'[KΊ$۪o_)gU7?j('E<V_+eyE50+$vEB΋ p;A3΀}DߦCD,˛ zvȌ߶;7A e^dĪUt@\K;v. XV~,U<Ġk{^/Z9*@fz77 rO*m-4e7`U<,Zb@{<@ #9Q3׀U9;Y"x.{ X߈V97HDr{ylFɢ!btsxO4x:'Cl FBQ_)Z dd,o5^y}%ZbRKwF^ŀS oEA x$Z ds ?i "!-j : Zb R24b$fzIf+ FOxO+멇 1!%ւ Lz% Z " Hn&[ XKEAӅ _ |dz}TD0y[nJ6tTQGJz5_~CiDD(7YI ,K3${4cɝ0Aq_qj$nւ Ljւ[rVQĸ&7j 0tާDkA\,L~ / XLnU3 N˼+Z "-Dqh-zgRD:TD,7@%ky-kfDDKAEuh) Z.{ "HQ yL%_W#EKA'wlh)oR˓ -EkAZnق YN xܳ[ӐҶ-ATq$,Sdj/Z $ܵDKA"DKA Jaq/OycAZ#u_,Z rߖ$Z lmG\vdZ(Z 10$ɝ[z [.z[ Zkh)'kh)ޭ.Z sM%9-Z h2`*Z …w-A4ܽ p+G M-I#bv@ 5wh-\D2u-&% ܨK}?^3ODmSR$7R_4u)Q~ew~oMgRD+&6h-sΑ,B[^e ȎJ*)$nE6K6 J +Hp)/$HԊ7{kQKҞjD6qKҶ~_8eMW}4VIi5pJU2 Ҩ("#=ĸL&zw@|clOz+@':G/ wr5Ra1,),Wڟ۽̺C"claO\惗Qs#piL"+=Ĩ,%W- +sMGעfE❨$u%=Ĩ4$wA+n 7' !Ƥ#o6RXyWC͈Ε?u=ioY _@6~N a1$g-R+*\9&Q8EB4N!9?iRXnG%ŝ= QDGL-@Q{rӔqd!6O^k]dClX^!|+b=xHI)l ݓ2"k3j+7Ph0bn(9p<(f(̄ރOcUa_ǝV@8 FJ)Br|#]r j kKŧa1U-' .@F3y4-tb0~%KO:CcW=_:EB*qz-10|R} .n3sk 2Oj+wG@ C s>;w{מ)lA+bGn2fW`˔Eoiewg: x;v2AʶS2 s!;XO>}f!ϋdYAI_&_zm6$ss_IU wV>[%9>IYijԳiՈ1SxȔyξd6TZaQIΔq`?Mi\ep1(bP~&7{gA2[ Y"$Ί` |wRWH@ 8؉Ҍ\bul53mRCj$[u=U}vwIS#N.ek p01W ,Lpڃ/ÃpX;i}%^FHX+-0R YPc̽dp}G6}mH}Nh2aaGICR% \Y{Lލeݞ*Τt;9@rOcfQӿ"{3 5`/:Gl @e,~EFꋂ>Sr2!FFk:$ZU7*;,`g'w8݉|7]jG5^ zC qɺI5xLΣ,\ԓA!쏊esUi5"_.A, ûݬHfCweکNC$R0쯤B00bC, @7+*A e"s*M[`Brb W~ ެ#wCgή18L>PUGmKr5"#eԩF'FBhFӖ\A&݄.&:ty mI\/*z0If#x3T(쿹63^;&C}I:`j!&r%T}I6тu(+K@"|B[[;YIfQ)d*e&[z0Y/lo"QL:ޚBwbة~`m"<xr\DОyXA5.Bʤh a;cT{ >)3mp$k@Pxa)I%[dR4M ;kHVw;hGrBA# gaCILjqޯyb 7_d$(<"Ho:]9xK-Cej0b[ e*V,y`;TwfVYҤA #LhrƠKZFlDUt9"J<&RMl>LY֧I(',a.t"-R'?DBG@[N衯3om\;,;+Z q_JΦvM1SIǓOIt \Nz<gJvr&*bLJ`:,<냀7pE:`?6?sdgDzwË")nf#{C߳qh8PռKr#|z`kje z0ZOe)DJ8eюTt1wsuǼZ}'e z;lq~F d@h-#pIi322ꁏzFEV9pM-@*Rڞ r! 0ꀏa޷=lp:PiHh-=Id<-mȦ1sE8;UI(9RSL\=++ Z "q~,ei6,MdӀ!22 PZHAFq7a0:LRUs6y\IVXH!u >h2U`6%|{S6 Y$X yXB԰\>@Vu8oTrWxʦ@:z$Zւ Q( F3>nOg8@e62I)J?\ڹ8i5HyLGrE6r9>h25`߂*tP~ &rQcYD…? qP˔ >ȥ>¥Md("T".Z au)XAyt6w9JQ1[ ؋ , C吇LWe:y܂$b{EkA2F1LdL29Q1qd!}܂$b< 'pq,y㙷 G]fU'\RG9,uXGک)RMپ3&(0qD8i3`M2+ #*j"H&sp!.hźcȖ۪Hct`A-\c[xZ6fܖ.^d˚3Lt#í 9LqȦ[IL4`.IJ.3 Ix}ɍi#2 Lf#2deė r3goDK8.$eSxd}dzslx$Zę YF-זg #Hq%Cw2tVK|iFch)ƃ*= }rk6uw98MWre&0N;1%ؕ{Mgۼ̕L[тDGR<4RcٗSՁK{`/fQ\1lpYܗu$z$`B3{oN?gWHF}EoU xoh)t>+iЅH.#yFv>KCvH.s r=j_~Zٷ.:{2ri ԁYZ&Cϡ+ N]6wڇQI|ZqԽԛ1đf o1g/,gQ"{Mg], )kh)@KK<4jvIvx#3V'"aV.'ٕ}9i-٩̩K0`. qNriKqrWXN)}$K%bEkp3ZQWۣ}&s3M80b: +xfr֋:y3 KM)w #I$â?μ\T$8UGA#Ō!L/\< )k?Rك%by@b~,cn(XcvEGR7c$Or.W$yG,T}LBD3Kh)$Լ2<,ġ9J$؈>"-B:LYȖCp%~gEkqo.%t`lof.?+Cg5Y=Pb2dHEKqo@O9wB73sWsB;{2nL#ƐB8=㸗lo^uqKjs~UCF^=ip^.?+qϮSe}ij\pܑdKGfDi-Qe25(rZXNJKȰ.pt8@:ǷU|z)\c̷V1C7ə#Viۓx|O344o᳟4 eUnC40ܨy"|YN856.qu[^ -H.e n|NKzN_#QQ";+y0ۑrs>Ϩ+n|;_nϣ bR 3)ͭܟ|A;Zedszz=H(DkHhrكO3$ (SJ>.҂ĒWKO5,t;Yye9 B{.Rڼ4z2/:Qum|$+EKq+?sYK;8ݬ>|6o$/;bᢟ%nDP Rd јhb8˧"}t 7z0ߓ`6-}H$y +BN>N'"ߞ +#YHH-o EnNqsb j?~7VTN++=N$C"1ɩ W(N IDs\`@7ZWؿK1\~S;3=eH8cEkq 6x~g:3_ٳrֈ>U{j8|EEKq :xns1k{Fݱ>U$s?/N`%^EkqN떄6_I/~=qw9Ѫ&e 'nM~Iz8e5F(JIwIT9ͯ%w`ڊzPPFY7GjNziIni3>4vKfnm+/L6?f֯; &< A[ ӟ6gc&;}NsszF~fqko $DKqiV8r6S_3SH783yp薺WȪV Z\g*xSknmi^1+tlh).^E3Ӽ7L5;5BM uΓCEkq]z7~N;si&V~-lE=xsR\sf%~v K(~>R4kEEkqUr?xu4Nʩh ,M B/)(wɶ"P1WL%n/n{p)@d2%9Yf<l$kmN},=%."KtK݄6$KDKq=Ӎr˃b2tuͼBWtKiܓ\_]Gb&KZ%92/hT'R\Hsz7SdfbXG֒,M\' pLy;W7a?f",X߽yth)2Z#N+"6W4qK 6Dx@J O IW~m^euIHnp搰 =Y%q-nrfU-QXa!^+(}r$@/ Iy7:F֓ŜV=M?DMXH"Nס9 n^[FrlH)~J$;Dkq\?`&(^AtK݄ID=`G3 IVr:W8dž %VuIpkc2WfdnL9wN+ԣYıeF`$R9 $Z@BՉΜzT6gy6<n{p,y\'&^qPıe2i~F܁110Ɔ~ c]9Lv6[bphx#l1@1JHKXx b]Kc Bz+N)\aK ~c=*~dc1g:|\ 1Tjb7ұ'cnnZS@FSLI>q.uJtKR+Üfbϝ@bõnrכޞp\)9$,uW*6?{=:K[Bp%l:Cy6Θ'կn)#Ql0(RU ܇$2rےIWq ?iwE h O{3ٱu[X˳uF7*^v.1ž۰ĥ3WgWFV w즪bv$3 ܅$.[x}TBR3 8eêsXOiyQoƴ ׎ipײfE2k L4 5ݯ u- LWnb=xDorr%8 `a5$.n)45mg)A>2KdדJy2 lⴭ wKZe?T Nb2Ѱ=C\gpPEvn)(ծUldL.C Bs Y"Rg=C,dMl1>QɸinG l \酜o=5B qm9TF9dGn) w8\{{nlk*[wn pP3arS[ FxCH:WW9-Kp͛$*3]28+8wIJ\&$|s}!{Y5ku封覂y\3bϵBі_sUΠNo5+Ԝm=צ3:~7^aK@WkN*RzU^ ^É@2'I]FIW_, >a=]_+%$ooȻ$ <6ЅI>ggqyHWC=Of=πk5$uC28jnH+==ex~9m$[)qb㢛J ADqiͳ.r.Hl^H3\ʂX($Ex]әP6g3]i/XD`ͥP&]#yS-t)8[vtI;(̤J8R1:EnP\|Jj{eI"|;)LzȳPJsbyv0էcWu?ӃpH#Qەm;[1i~^Wq OhX#9H6질հ&^pٚ&uE'18](UBL7lx=9MjFs!) 1WӅymtmzB66'ȚG~f^ţ9ֺɳ965V[R4k]R0]9Js_{݃YOp4-VhwWCH@Wz^KKK.{ayk+$5bUfq=0ZY@j'N M%+Ӊ/-Yd%.F1״4&ViX:858P90Ԍ8#1(74{a|HՃ#㰊4;s_7V uvV0sTuοƷqFWgGX2ϒ,y|c_Q`,;"Ph x7W>+V' 7;3{I3tvoG4Κ;:Dhn-D?sp.Y>|'o֒ḇCvnYeJ8xMufK`q0kKz줖 &e&i3Nr Dp_^ Qu8fiZʱï'o÷"nAORSËs$(9P9tv JU1[qW⠊]KsJuNl)/Vn-ÉcNۑDrm/Bb~g\oq,Xʆɯ+p:rpgL&qEghs pROWDtӞ_;qܺsٸ7C]ﳗM\1sbMW +M`uM'%;1s]ݒLz;n5J*kqes,v<=5Hߢ3@8^inܶ;!p2+ n,8AʕK2| xu7^TSC(;AJI1y3"8O& &SYG:Ce/>|q'@ > ӗH Vc:vn<pO`S3ᔏEMDZrlKwitpALxͳmDKa[K\wI@!S#QIM{up!.*4r]aѼe}"mLe8R _(pKe:Ϣ0`i]KR$#4U.:(ZXCwzIV خY*OUVH%Wg["L_׬(ʫlہ_mt$4-H抖 $X=&i5nKZ2ld OP6m;&d̒)R$-u5x’Usaa|AZ6FQMՃ]8cܰg T8.\ru+,|o78x&^tBTStfӪfo,v_A<>y-o dzְ`vyDMX1 G­ k<"ֲXXZuTUFLpgXB@ZID# $">K3I6 @OV:J,5,dp#Rݧ`$X_WM5{,-Aܚ{?mte*r;&o5W,ZA$Ƅ7W.fFWiaaH$TSEKAF̗j;b9 زcւ ҶştoXI"s0jh).Ǯ  2Rex``"HbiyZ1_ٻrƐ(*+ztT/kY?8-ċƬ^ᑑSDG'0+ yʎ &?,f1'w7~p(f.TaWx5ݳ/48y?aʋˁ7`-g;RkRo#P[a`u;1=DqE^e7'c0by4et%MY#Z"w.Fs5ڽ=nɦ3ąhqʞMH ysG0r1QCJ_\|+EFP%(Vb^ g' 'Z<M}Q>kѭFYe8/"%E]+6Y(P;.׵"Ep]ta1Oc$] Ҍqpsd*-]mjsU8WshyXRLTLRvrWQ$D1=Xmy~s-sdiĻd$[A'cwnu%'H=Kq%:"@?^io7:U-scid "wՌD!aQpHv!4] Nbn6lK\LזR1B ʞfmyoEL/̉C)aҷ'{^ׇMgo}?&ҫy9JMkǗ!kykc(F@O]) n6npz~̷ʫlq^zTiNL l i "^h;U^|愉is" q2}MXk \+Iiw#} >z]_d/pGܚ3XZT H,d_wP\K-!Z' ,KJ2ùMA~mr m/3#n+pkBUI#/~<O?n1`w^ A}#̵>X2beHͧy];u%"Y} E\Y ٤U#fM|'>jjc#+V_nt"o-3f+ޖK#lO;&ej@܍ͺvkVRl-Rzu5 t+&0{| ͕@J%>`GE3c C/^5xN\jZFD Y@MLAfEIv^5*N3# qUnC;LtLBter'o„ՠ]D􍃸;V|Ny6&z36սd+̸[ (=]g1H.4H<l\pzb_Yl3fQU&% #c+jGohUGHtKzȗvF5|Em"Z6̓49Z?Նi&oW'vJ(cѨ} ot8+NcԜqò/lg~~sc++ mޙ؞mMDe{XjɅY5/nf/ABG[z9Hku+uJ~%7g &֥ն^g'2*gn91am <#ډ`et3^MU[v*"NnT%_.`/0DǒM4xwvSe{OLUc6t'CykͳD+595Ю"SC@wSA'vJ9%yE;1{T^?]ǯ#<X0Y$6Q4,z`&Ss e9!H*7E4#9OHZu؜\-'*zD i^;h@\'!.Dw%cB^/I3Hbou4?"Z3kOtsrZTUr$KQObo2C$D!VmѨ1+/|ыgncqv- rk.I%!ކR:>Clm$r=\' /@IaF|ltdXHevUNTshbƭYN|Sihl;v`51@ഁc}@\d5w/j*=wr<*S6􂊀 RVus;@sж2I]4^yLEq6=frQ|Hy KtHm=hr^r4\񕪇Hl%`4Jsi&@`Q ژlg9?I%3 Thy^ !3dO+,,h:E!!~:v mz%n%Թ}p(87VխS#fw1?nճgSifM֝rU\vpg|A[&3^{K518z鷈8riԳ]u<z}Ѵ̖ɚd_z"_]x4ko0|aHFllғHYh0'DESGZˮצ p %ם>n?(Ҁe-E MSr|T8ljN3`F取c4.hۣաڦsBwVf62i*]E[{[qI9Yv"C7:nN4p<]jӼߠ:Bu{aSx2$r m&&75@tstUдuB&fsNH8+`MU>^u<b* ?b'i RYTgͅx2U5)gvo0V ?grXzMEeq:\U&h/C4}r%5DhA&-DK}:NHJdts$ў<^,GM*g3DꂟOl6D[C q<-&HV)! HKxuKMTJt7uN]U9 uhU.A">6v5D TW9~S}[;XW+=rו ;7 ԍ~in D󞣖Ķ H$md~"4p<=Vs+)lJ׸3 u4YuNG% AJv|ݎm@]wVN1 (B6 Sp Vo%ErIo*5k5 T@%ʤ-L gۭת<=l*v0",rԘ*X!-ǂTo mHsNC$Q$ljH:Wmιifhj9w 0K- ϾG& &@J:Ge(lF\&}X>Wk~ K@i&AFƽ_;Y I8to 5[TMb{"mFh,jrPMMU'8PK|yD[g9vCjASJk$I2|Ķi V!BZҘI(,~jaH_S EGJYbYc\Cꮒ-Y*˶}OB\"QjJAwHڞqH6fc1:(_1fp [&:ʀ~~%e{B 4Mq>Ű2b>4Βj_f*ڝLmU" -4lsv+fL=D!8Q:ݒœ4YÛ&ΥBum4mL4n*nۑ"s?U9,Z&#Ŵ^Ύdd,9UMn)'3R+Ued'VM<hhҶP]p50P+]i\8l21kg WڏI't?t ;dRخ\ ՉΆKet|N Y^FOscvjuG=zSȞ7;@vƘ)b.鄆,I!kd\ df;u;{iZ]↲ڷx{J Q ՆTz,ﺖVPjώd10ʋ ~ x="V8wƮ2N**P-^dwJͤj2Y'\T%ET^ i+$2bz#{ X/ͺUĜ nU#zZMl7j ~#E⨶0]쯳&FSg(P.BTcu>y<'>K!:Dzsܶ%M n4{*˥tl{u7*{sDg n6% g5Qif>zل\Gnw29-lb۰Cٯ IlT== ^wR!C;Z@wnw>Ij9ý B.s4]?ӪSԺ ;V9ǟn#AbVI`}(] ~aүfz"[q.#(:`>LJK@,"?}_0 UyȌ?.pIa< 猧|>-ZRϫ=f60iԐO|Ȍ*Ǿg-.24qqʲ~W NͦǷd8Q6Xٳ *蟘v@uڶS~&8Q@lr Վw7ŧɇas $/2i7ඝ!rNiP̍xB> b1ŝPNS(BYb!*?|l9m yIڬY S Z5#,SA3cuي(HL,Is~m;+Fv01!qyROMP&7YQV;=* djrŶh9cqZCuȽXG  RPb4pYN{^` v&~Ţ ZܬP<;VsD Zs&~6|ʓ[-pm8E51 ^|&G*0NHPXKn[ 8F,ZpTB$Up:@B.+y+Aځ F\QkKڏp\υ"!s qFb#Έ,NvdW +OH"m۳xzOSpg"ז#w/^8!Jʤn M=őLіfx ,gCQ^ HD &`\P䔶~Pb p۹9D1CwC#Z52fw$U\Fa_pe氢9it%/y,w/Mq& ND')0 }N+&۶ܯ@C*L, օݖˇ6mdxث/W"`"MC2X&!/_yI+E\ I+ӘI~b<Fh F:f*;scjbXC l6?`rkmg#m:^ #_{p˭OJ[TQc<k_+1KinJ؉Q#Dl7U$Z[{Hx.yGÂjwdjb.TsʶS$.&G U1FhY#S: EFв*i ֩-F'P$O`'j6SB2ד>i:-t}.NMGp6Af0]+!K9&R*iCi!x}Ӵj8)f (DCo棊Q(}nb `.TuJdpiҐ_.\b7p i?(cwG%nWנ3p)^R,v*4B{Ri=ж'B{"{|f]-hk-mz`J1RD ݫ7Y6Ƞbsvs[ht 8ꑄ0?3KX[_uMzbD RX"˘]G~<Z3\V&!uv2)WCU^{@'&Jd#ˀ$E/\4=k\FFpzv*6{2'݋$REt5'`t)7 O>/$tdL3N¥B=L%TVypmۀ+323,zi}lyc8l˨ԂѩL ZڝB~If`Z1QPŒI@O<9AOR-PIXL?U\Tf0KTbt$`AY0e''Қ k8# nT enhJv`'SU[wy 3.;QD.XE{%TC5KR'Q,ͳ˼lq,3m(] ?Skd%ds0ൽNa,aCIX<:Q)XJ71/nK]lYʾ8_ ݋Ys q.\u6UNv g~k%sjgE+Q5ȄʾU*ub zcIKKRmp >[Ro SFBJ]] e3EJt`Tueji\ ߎ. ~.64@W=LPCN7+Szcw%7Awg#rgՀ'NLO5D(!͖_h2KvbބA:`FesJ2p13bs.\NbQu<dct)R2 ieSɱÿ>S:/tkāPbIʚ<3 |]:l9,!`z'"T^ bpJbE{dST]^!ZI=>Sqz;zQg"?7hyqC=ej wv*W'%~ӞJ-٥h"PA˳h[][A4;\G 5YJhy"u@Hv)C?z,8{}| # +5R0s3?tC> &g|nu@fi7)J1^L!Vzig`Uvfc!*9P*G#ꎜ-Cb`2 RBdiHzvwEj-F|z@O^iA&Ux#mAl@ '饘ӝjNjFҬL /+}E>xˆrAÛ\>^'*OW>(^&~VWvtڹM"W=F>F y(fX;} IՓ·^R'@%?+.͠ 4p\s6PKk uWǛ&jم\s$]YgR{,5626 hb XpLCJ4 ,0Ιs6Q?A9-)TC#뫚UDQw`Z!O!+:q+=*MaĎ=3-)<Ӑ<멜t*9`)?:^VND蠆3z@\Ng˩0pHmF6 ',| T6 ^`R9PۖDU1A]Vϟ/gқ9+_;驣?3@lGP'L腳#iY+>*?!h!DQ,̿}<:@W9jNF{Ρ\ґ5y*JP yqY%'o d-HB`"c.\[d  uך :H`Wh3>^S.IkGy\9qwqBtߐ;,>|>/X>nZ<қ#Tn)YWּH 2%RC5үg{pDZ$ ,%՟p#B)O _/:K.~$:}J%f bN=|b ~;h:1: [.W\YקVt<Z?U&LD;+c5hU2x] Y~i&jեp'#_,RϓoW:9V*YXXLF?XW%^c?TVk}1Emk# {y!-jgaYLH.o3d` )δs$9BZC"cٟdlOrCͫyLا*WI>qaDZ[~Ƅ9!EK)0qڲ܂g;ym;>m~S̮|ElQpPaJƜ'bc7: Z gRI╷I(!l>%cƒ):U="_%;i;[9Ƃx 3ɭ?B+̢~UL,)mz,BNK6Y/n^59")ؤbuQ>e;Aq/fj@ƌ'|!kS|M[ٷ&8nԑJ; |J4տORƓ'w!ja=B_*>48}-OS!'rdx0i ##Ӈ//U ApQwR;M4A[c#,J' j= Šݯ&2 * A؜ O GNERX~`i H&=NhAl9Jwx|x?Lhj+AܖW>cW/Ard,(@ NkGFƯ? —]dڢe!bdd- AĎ!U]ѲArsx'r1SMۢ!ؒ\xU4A49LEKCJU!XxejkA4M<A mǧ&AIkmr:^` AAIa2ƺٹ+Tdh ?zL֊։ dz>$7^fV j*l2z-A-A փ 6upA\csglxfqJpA<{ ٌC3WCl9 L-a; ̪%?^ed̵W`x G@^x)O/xg|,/Uƍv?c5a@Ig^v#OKMTUFڗ>gn᪋ڂ rvŘ ؏9&Sϻ?q2^edn#a3f~v$#Ppf_Kk]X~1^ҜWtA3N*##@12xyeT22/F* W=ǫEEcs(PjȸSb$#4-SxEīQqQHxaY}\ pO U7ܬf l5ta5Wa!! ֤s֜v:T,$ s_C9^!+A\qpBU AW+A\qpBU AW+A\qpBU AW+A\qpBU AW+A\qpBU AW+A\qpBU AW+A\qpBU AW+A\U A(9 .W 8^!*x  W 8^!*x  W 8^!*x  W 8^!*x otWqB7:ǫ8^!qWG-ƫ>; %4W-TBNh2 ‰UQA>OgDkBcez.qњA2JRњAgԷJ&A9ZXFm,?})Z %-Ԇ0OEkBٶ7S ѢAd2H?E*A{"-T QkhU tQ2̥-? AĎԂ1jnF bN?#cgu!fe*q򯩢u!IjֿZfAlO^gs4ZAlb|gy!l%X - [Ƨٿ M*Ce#EtAIn fՆ bR28j6U fEF0$W%.Jw-3 Fa"~8i ֜$#jOz-'AD"920[f?G~0u cMrW#fAA$b|Ȩ$7? }Ș_+, XCWJFoFFwAr i@d_x@Al6Fr1z@AǤz3-s{Az(z_+SjDȸc=uMsa6N2x k3|'yَX!n>#Px!MUI+ ar>fW煉bB"В1dz/UwTwA+q 0ݶj·]ʌ9&STuˊ~AϜTpvhx4p(pmMrX ~$%#uVhï*)FԘGX#= 9yCe TuCnEAƯaoNЎU9Ov', C|LQjo'3 P endstream endobj 15 0 obj 31634 endobj 17 0 obj <> stream x\ˎ$;nWz3 # w\ ë^-Ȭj_xOH!EQ KϷKXBꗺ~%.o۷? -W[߿QM%/"! շ? @yiMmv sUa_˶qs`"e);}ez.a[rny$I%e)U{Ff<ﱍ6Ҷv_/(>v9|\sxS}58^c&/oϡ^6hsH !N1:>R|} V.yO_ZT -D.F~GUP"hlFq5,⼸QLs1wK|%9'BV)>7!hX3h|NY-EAyaL0} #ل c? {N5`_~o߾xj)a&b 1;"Ɇ]pc 9#9(|ډcN$e^ZRKhM؞{0Xx^„y CV  0 IӨAg0Cr0V8&T7QA A0a Nφ"*a ~#f mm|?U>Pf4l iwU2ߞPv9JEqّks h(Fw|LBNjn6Wx3 /M +*݁OicOVϰ|)+0ΫrK\WA?n(֏WtZXB\/mlBnf,V@8|W%QNKMKNܼs\ǩ)WHaS16,O rB%})[HXr`{XȆkXp@Q;#z1s P寿?>>fb)3 QD{$ކb=q!,q3WᕕJ>ԜƖ$%9uڃ&Q\yAԘ9<~9Hf!LK у62Cw#nEM Zq%7⊎@(vHܖݽ:\|;Ihѻ^l{%>zm]!q 5ҹ;( sԞqi)f G%}83ŐFwlF#d7x:#7dh[X+ヾFkeu %BE2bJR ۨK89eFmBl 4Z=]!dz9YrwKqT^A7Q bBO`2c> c cЀ#\I[pTvX (bfab{(ItYXDN%n^]pS/RK&jdB/'zj=T+gZ1sIpi$qHJU0"*I֮oK#TD8yÇycˈepn_Qڲ6^!:,/tJ(أ<>_j<]Ȃ73ƥ< H7#נ\6l.o?cB^ԛ94hY%.<`7NY˼O\nW7y, [[jt3=O`'~ұ8QZM2ImUGy8#r{u$Td3%7e0mL*U+ƺ|!h|{;Ye'ش—-ܘ)YV?f>OjcdiIMX;OE{/Ojt?5%~~'pd;1B_,!tQ8Cd"Ru2DKHa[cU|7ϴy]M2<:jTRlyYk6*`)&)pdvNj6hRǖZ/|mgOs(Kk@Fs1JYi^ZYg4hUvM!{y@u_}X`Y'`>eOWG}J_V}D2}DvJE{I`66'l=厷A,0I$=#/3#A AcP K$=Ɨ&eK@gVxʘ^N_O |D$ta'4<6`?}~?P0C?"P<T*r{8?#L_ΞQWs:. /O.Owꈇ{Yn$Q`OM7 ubۖh26w x<[I^QLI͏ީ~Rώ?.kvgzjUOr;GaV=VoNE`WNJNWExTZ̹X<>A <!l3#I9F3AX'i5 :qaf{,Dt4,E>\@ tk>dH?p6vP}?G0[@h?Ef!]EvgOb܉Pխ} J|1 K6-=ҟ4 ^ G'HZ]'Oj:9e -AXMޱ3۟Qq^Zi; JRm9Χ ~⚬fgK/qYH"2b[e2V;qId'`{Z^eiJ> Q͂<>,qjL:㨭e*iEK.M"ݑo@(׶/1l+ %¶7]qZqpˋܰ~@?l-7 ^s\T{CfF{>>I|ctV^-y!cyg:Q'oCD6y|vimg1Mg,zT˧n=_/}*gA)[}L\^%^Y$mHE1&WR!Ţ Wμ>sLyrT@yh$$19&}?XOmY_. A~ endstream endobj 18 0 obj 5080 endobj 19 0 obj <> stream x1 Om_h endstream endobj 20 0 obj 49 endobj 21 0 obj <> stream xYyTTU!j0pPD Q嚘ڂz ŭTʴE\RAЂ8#%R0NzL4JHDafys~w߻{w OD[ mޟuS(Ĵs]J'gu:<>4R|`{}KPRa叓:[9srz%]j } 6cQ:uS B)l8<6`kj`WeyP6N7`ko, J^HY,Lb4;w%c#(nQV/byq0 !6cN`#K(q#8Z7~ R0=~ɳq)+r_MDpΑ78f% |q'eLjTYxn/V(7*jnakm ș*A"eZ}U4չKy#}mtqi%cqͥCRD 0k<Yi`;T@4"pKD#Q=_D07 GUG&F2[V#ȫmö+*E\Qӈ :ºPYɱQ+93y!12zu6q^bl!'N)pbOSi Teq&xN\uؽ}mxelC?w R*jj}嬏n9R(v ws ܻrU?E@Y;y̳ Z,w!*RuO*NzIܣ|=ůӖmSK뙋߿Y][QBR3É/WB._ ,г{\+P}),2^+S{ۼ.@'^3;W>VWY9^`di_Kɫ9߼4<,\:e + S; ຯxU Z9sЋ!T7&kЏ"#] 1=mn#h(!JVWSSn K^˥b_>sJe$)ʂrM}j]l9kMyJeϕmmWDQSQ͛~|+ߒ^>^ ?R$>|.Ka&P]/.`,"ev}Iou'o 8;*3Q D׉hևtMiKټ#)g~ȏZ0i(5u^2͞a;2],!ޟ'GA8fUxisNx'@gґ&}H! BMCB]}Bڶ0[\C:r\n&AL<4$/{+ [HGy89 O\ OS=.l܇_CHI^l۠Z6ͬh`<ߢiq"4×|Q$hu|!.Cn[ _\5=)$[ HF5(^)|` r Ga ,'1%ynڎl3&[>kY<-'8s QXx$ }x=4$cA FוIJ܀vZ'1?ҩ)]ٽ:+o$=f?ӊ+%rh[e6jL'* mG_udnjaO 뽹V7Ndc9RIMvG5hxNP guQ.bH` [F 3ڟǪGiyDJ|eqEŒ<"<i9Kg.O#;Ë\k˿B6gL%@9! :'.}2 tI9Pǹm_Oyox\ >u㧩xNr7$}~Hkg nV0ƨ֬5%nqq >|^6L L*a qVE?ʹNKDkSѧҐ?e]iҤ J/qQc۫PÀEj?$?X}uJuێK>! $v{!j-ՃT_OCtFOR-zp' t|n,K~ Z|׶_RcThchG y endstream endobj 22 0 obj 2222 endobj 24 0 obj <> stream x} x[̽Wuؒʲǒx'c˱-N0l˱vd@ؚe+6@؉b'A KJ_Bi-`{%,}}w33gΜmfddh4th7bks`!*BܵuD+-==6wv@BHYoGի?!n54! 裰 nG@#ۯн-s k@WG1?́?fh*@^lIy?80!1))4rҐw3yOF&'?Ht#=̡ns/hGh'' Z dCG(SG.GJdF/2G0+7m/0܆ة@s"E+[Vt98=t=0?AYfEh-,-6aNpn!|L1ssOV÷=};WmQjҧjzO:3'Zt) 5h/:G'QBћOCOlx1.=oǏ ~ig] c![ soLɅ&Mt056_&Ny*p4 | #>0|OߡߣΩ+`+<gl\WUx-ހG|5wq5oC 2F$3^&b  (sy 3`~y;oZ̦U v``~¾q~F.rrsG׸+(x[)Je6eDW=IRU1Ўc0Yt9~a#x%X;~LQgJ0cbx+at_c>M:lbsF{#˜CGqVm+x)@f}Ɗ^aU؂~T3aoBiL*dm{&\6L{#=x'gFZ&^A=J]Ǚz|4)N4?0Qs ۠zE/b<9CtM8jٗ%۠gfاrn Tng8| £hh:G_b:m)D;Hy{=(~2{|?~}4wT4v|7w8E@bA*RAoyۦ-U.\\*騞IF2^TZCOMGo>pp#[WtIE rdgez=祥]3)1!>aX-f`4uZZ+y1UU$@A`VAGXʹ8as1}sOMcbA,A%^g+b] 61|uhF Z~{o?\w;Ք˃L/:(lsöͿTz* BBM+W+]Low;Ƚ,lPTN +<F 1Du@q+¶3Y\޺gvm4OJ:6a{wX}aԸ5;5[ݮpi-Pp̊5wDܚL1$q(:l 8]G!NivbB ,v@I&$h_B@OVnXPX]ޱOXDI"Up>B[KGD8 p gda!ƥ4_a ݃/`Z e].#> UR^Dcȗi 3hMjR;Z3ݼ {Ɗ1aUQ{qWT&wͪ_ۚ99~t -l<#CLT7Ζdm4h R/xG8'qD~ɵ9's,^qzlC o@J /N.y[|)>wُXNMֿ6{a~zu5TgϨJ`Jt.[%l9 p9@f8ҡ:ͽ1OkF<0򝑩_ÛLspnVvvm:N+L"ԎE*oO{DU;{l.ŕ^DMLV%ÛöF Jx~+󵉢d{{#̷}j*(X}BӆmD*2.RX!y+>S/| 3>q [΃|7g&Ιlf5N  9/-e^ZZA>WF5j%RNDU-۷N)/;73i-D oWvegd\?PuSw:[rs 7mkκu` ӉT'};A[Ua"[qHqTqF1Z,,G ;jӚQ/G_i:$ +ͥ(*+ BJֵHzpp""RNOJyNEZ[*C`%`{bӟT4A"A" HDO!XX<yjܑ<(1$ͺ6%9T+zYΤ"fVk/3;"~viAIl΃IѾc E(,ù@Nr2E 30Oѳ:ECl)W'&_xpo-ZwЪ_EGk`%ݘ7-|SQiRS3-78?zeW6:EuvakKYr7[-4aO?}}eN۝cO>}ҦZT k=+J5 h(P*UJ/Q` XG0c81)"))fj+XNé(ALYF>ը6Zd,%7D!)8')q"FhL|! N`!NN H$p6<u싄yŞ,X;d $x,y< l_(̆x"5x뺘U]]gķ-JV=;qP_vtKK+lhfiI/6F3O:Y)KiF1 A7JB' IIlSvT %vOh@Q@"TƧ&eԝvޞ0z3?FJ;|401Ė¥wr|շK1Y;nv=^nu,N}¸$mM^ =q]dW,(M Ճ!|QP<vع2,ݳ  S$XVrjez~~gw,cxtMcmq{8DpQ|bdLD)l!J8yM͇͌̉NosrZ3 %⭢*͝(}61M#g\T2:碁B;ٿLo9G7ݗ=C[h`Sr1HRJ.YFٕ†{00|!w}W4ru=Nmۉw&|0+4lȺ!%g'Z l(71ć;;U 5:_][VҘbhԁ}w/Ps0?0Ċ|ZcI\X3֝I$6YK,DDŧ>1<|붷ރ[/?W}.8oݫg*Y)|ϸU!SjazMg`e1 m6j%}B vI!˻&6'}&tME=~bL*(]"f XOi rt/$:lQ=矗tͱr}6\uKܞ7T&ovjsWNb.X?&TF|[ C{}+=ƭ=<'|`ع m YR0uF%dR="~kKHHUB`#HL DyHAX&[*:nSs>7nV~t?\ԙ/,-}e^!cRц/ZʀPDڟA.5KY?Is]]}{AЁzWL7* }K;[Kkc6b ~XH岌"Ĩ"SVH 6v~=˥tt q ڕ*66ƘLFJ 4hMȠP8&.¸|)Lt%ժQr:Xd+KgX o?PB^>/tT-od@ vOn:Y9Ʒ18g-y}-gBۏC5w?{UkpdH?G8qޖUb-7!Y_vو..SRߢY)#>aiL:2Ux#j1zLF+(mGAÐ R%QqA@1dWY"+pɬùvz4[S7+f3FcI>M>|TiLE { {8{ +x-˶{0'[`Sg5 &3L+M=[&Y8_UQe@XKVi4,+`jZc0UsFϳ,Ո4ZKKP]Hşfю3+b1VkH3FG. ʪ+4..WTJ7@`ԘӾ_5XJ12q *>u-טmEލq?잗6|imn:2{icgy&>1N;_{&w ~tqA{/sށ\ xAN^Qs{,`"6ѳ[!T`5.U0 "imwӷo5&a٤3MG*zfrʧtAOt҉uN<]|6B:H"'8G'}ɽ =x %J;{3֓UDE' |8w,71(6]oLGXs5%15xfEn4ZZjhXVU`\o06SNQ&©tkqxzoxdS my:kmnLƦO,?={?EIoq/L4jV)XGԈ0wDGA&:f"_ OeQI3&0mK;;~Wʯ@{ߧ7 t;o%PktRexʨP ;t':#tX y#uSU\ e?3ӑV -.9.Iv,tOF GFԭYLE6|~: 97cs19P [矏uc`x o9mSJr@m/zŵKB336\rh}xq۾u UMaԲY8ۺF FY^(8r}ÙZl%5GEl^/j̻5L&5>cz lMAiZ qƢiX f-8z6ca@[lZAE Qe ޻B%$ag3!KsS%Vꅟ{!_z~F|,ƝU.a- NN9,So>Vu>~Zkmeᶊ?~ʖ|֜ ;jrcK1ƥ%yUE WOlL/coEUWL&K|tBՎVc؋wh)ɽ6,:JIbmz:2g_ >XHzs_‚Hڠ ZN $FHL'%%uVZgbbbm2[R& M&nS\SkLmtt>w3I^1\j4xaq"I-ΛNa"9OC&7dFM@Md['Q-hWvx…mmqja ?׮}1?*֜U?xi"*GyJ 6q9* ,8Eo]fK RZ]B|?}ߝ P0w~4ؼLaK */dfK⎭H6i3n4ge͓ue\\T]}wO&#KFn7d6]Ack3Y\|uEA;6xxLϖUo{%돗 -GO(,3?]:'SHL:W(OBGjY DG%' cslȚ,x"u/ګ=zuN s.gaZ2˪L4wiǹ)6&+N?0Y%LafZ} i> §XmsRj!|G#"Cy$Km)_CQ"! Jx00#`0"hȺxAe9-),bZ)4VB; +A+ɯsRSB#RFGue+@)=lg!Y': ^h'; MtQW3,ʫJxAU*i.HU<[?O.+?a\L~W׃| ֓re9ޥ *k9s(LůOcSq>=KK>R9TW诣CԻ "ةYH?>JaT_DK`GPCQ!uS|{-<~0G~ݯsS1 MM@~+<_[JhA`i[P+SAR~C!44=ݮ\1_ZUzR]vI.O7{K3b'lj5fn0?eoy"U_o'"TL BD~[TQ,NCs,mcRdEL s\- a%J`dGOeXr\V}l a6'dAJ #,oQ0t2x +R-:(JLݲ|3\ Cy.>d16Q2¡ ˖\/kX?SLhb4o2iRqGwgbT~y\@Vn NzKR@e_^w/%C,C_ZKr5([pi$?-)4]l74tωڏnZ2 tdԫ2?6'2՞?Gͱ3WGobu^dݢ5dOg;JL:53(^j(=, !vKZamJTwRZ^ٶDZlyŇM빲:Ki 'Q>noc_Lp4%ce#`t#_a%MgxX8@-S/efd3ͻFJ4m.,i~erZN9@sj\3]+RײQPIS2:i +QNiYH㑵MKTůhjy?2BW_sCbn΂"7(  CC@X'66 `wW;Ć`3iS10:" lu];Ht'WWl UMPb_ž B}@(808<0:WȶPP#dbm+?\,bpsg;-Ibwpk(4H&HB}YeC@_HXD`FCT)ׅz%84L,ɡrgǴM@ϗ*(+BĆ)6tPW@_`+ B)@4,.(^;M8<:8 dmq4B#bP00ݡAX"BP(Axt׹.E#P6z^ 6M@h׈W$mMtض^,ʶn"QvBZIN?Äo3}-H(#duB0j@\$V|t`(HGGAλd778{;dt !7z""=}}TdV{0:? EH\ vYCI.0Z30!tjEQK0~NؼqDXեk+~%YaM0o`AZm gb5HOWo`h̙x+ ŁNP~”5EQ9 @s|ttn H#I'=Ι$ۢϧuKxH/)%n^Yȩ46kH0U"2Cy;CAʐQp/UXs(0)f yZ\BR%!%9M;+H`t fSZ6F6# !x$tl r)`Pz H\5Yuhn`D# L*JU V*ה5&qecCKuBWy^qMusUf0ĆJM֕&Q[Y[퇲eЮ>߿=gF^Xb}^sSXcΛ#X+wf\xN/\Q̄ǕQ,PcKk6|{{Hc25^NsdBxr>EEHds~-cOsa'9W8_xy sFgDG|F~g#wιiU ^> Xl#dz ݜt"#Iy3/6%MO:8YN:WnD[:yt΃(~jZ.:{#+eB`0?SUeV *JҨT*S1*CbΪKɑ *va [4-5gPMUk 26נeBOMj yju0 JFͭ Eœz{PR{y 9[s5+wUnKx6A $Y{bÉm\L%Մoi/i=Ǐ+NȫŏI9hkx  TD~I8,)+"7sNJsc/JxIf;Ws}8%8)3r%SFɚFɢ#x)(Z2" -k+Dz KK?`CZO[X^ֺR;sxxbRl̲2RK  W,vşU`Yta3*GPM8&\jm1}mP-jg,(,!,;8]Vˈ ^E@BgHfspdXJ/* endstream endobj 25 0 obj 14939 endobj 26 0 obj <> endobj 27 0 obj <> stream x]n0E|";< !)CbOR ,zh+uu,όw^74sg[wĉ. Cft/(~gMb1rǮ> _t%;$*a pLf> fHW)? ufԗЋd x?ԟ7`/?C++Oqb K Ab~FFs~\€9t~gxdS endstream endobj 28 0 obj <> endobj 29 0 obj <> stream x |TE0^Uv~N'N'! yΓ@!MҁHȣ(+d3,:;cFibq`v(XTtAQI|}ԭSUNs9UuC ڈ8X]Uz!lX;$z^SuX}s!WZg#d !WpeyόPV?(X !@1('\=t}~@5uϵkʖ}k@Y܃Pa G Џʠ C/T2xZhuzd-(Gu9Yz9TD(~$ O{AYrR>77ѧ؊v"z h=zw"H*FvԌvZG1@K]菘OY`j$0Gng##\z >~@a;IG&ԏ>@灿LRD«m@j\uO8Mᇀ5M^u.>Dv:Q<*Ah>jCѣ ҥ:CP*ޏ 6wߩJ/1O8 .DdYI6wO^;9F7Yri\6W9\)Wmvqh>]ϯo? DU*YU}_uHulRթ^ԏ^ [;,^c$ivh)ҰM?vs p+ތoŭF2M..C4G8L#4h6 E0~ t?w'U~ϸc^m3<4:rfL俧ϣ{ȳ|;c:p[P37ȝU*2] !,Tk8npI^!%0Yťq._ua jn` t@F|'O/oW\* 'q=IfA2{qXЋd!)qaOџBF{r_dյUhjE?%X||zEv2F.I»M|z g‰\43* F.<>>^_կI!_G :X& X^X<ug F _A/G3L΄?_=0oBϩ sp!^4mG[c|h+_+{՜ٳ gOO$'MsKĄxgmZDhA9*2] ԤLZNCRE{H8!IS1}5LĢ4̐*+IzQ wU$Js ^`>PpTi_Y!pTZrke{ۣו'thNPlR;3VC\**C BKwTV8̌.HZBIe!r6LH]0R7}_ړqhc"Z5t&um qV: Vbo8cT͓[J{D[nBLnugk+Ѐ$}k }'բ=SQdI:)M*KZv!Ը=JiksK;TLjWﱡ:|cjKf"ksɬd 0 N ubQR AHꐀ$>EhkGCP'LCwH[޾UEi*EL~`ړij_Q" R00h!7NB(r~f1$_ :+tvY-Bh,QH;m9i^L[6FZ&'>6!MďY\9+c9 6%.Eڮ趶yJIn/hS ,7C| h& ,Z?jXac(sV"Nv2-(->E̾3āٲ ,Uj٪sgLL4>O{R7E,))r/Jj޺U7 |֭UIRIu?l˷WGf,|P՝ J< ,=Ixˢ=>"4VuO2/ZBki%-Hj1,Qa>6VUrFNècuّC:#Fzp!w^9ԉ,8,~9nے \~%qЗH(h]CU+pxwo+7_/ͲrD7$nL|9>DgMrәuiD>`l2I9Ffd6@XQ>wpm׍o_1 mi[[]$օn1f:46Fkt.∎rYVfve?hX$"'bpUJ%. ]w(=} Mq[O4_eWײJVEIA -a,bl0iFښ/k4ͤ/ڑ8A5X6`~*˳=f]vg #H1\iR@2Ed>oﻧ/aqn}.<\yWӁ3cIV&KzM♒sH^ Ԍ|@ӕ1b[p醥`Qp -sTW#5rJZK&Vc*F^ӊaab&*Pw.llS䅤k/uK ~=sֻE{-?'[;?7W^ӭ``Aׁe()|ʧ5>& 0Ǹxʧٱ%\iMqP+GHϣlrU89eC#|z"`]fɆ5qN8wm¾xپxžxžh> L5 ͱy~%RMt5o̚IӮݴwY,؎=tQ [5j٠?)#|$|$gY"x$mpD?=٧{JV=jSb uuFMӌ.<}ĭn4*k>j ꍖ{~v}zQTOsT-\5Z=MdKft]BR8Tn8y{L bHPz&\ 6ޤ3Y(nTRl/f"Q0"ఀC%"'ҐJV_~9ƠO hu(B*YpWdWr̅ Kg_0p6 m}lٔՀ!{b/}᳙0$:Qy)\)CaQgܙk9 dίokJ+Ϗ>^N^7Y9c +r/|J`56[3w+˧/\ߐٞIR5O~MΤ2OeR)gJBTo!* BgJ<<<%vcG͏Z~ԹSww}}}̣Ox}$ߌz+D[gчGQaJ7c/MOO&(MH"\:6d٠/%$qzE6K|BBW%ԝ, +>]c%l!,2F XNx<F0}/nzxeXbb̽H݋i\<#Fv2#ʞ^l?>hOڜxgXf88!{Z,~ 1/qIO`O^}o?ő*o`ZEw4l/|qq7>wzAJ98<*[x'`㱆h,vݜS )\D 40*Ma)԰4nǴ?3q33AGQ m-֏ŏ-| Ed:; FdS&6 G-]#&,>1qfS6Lb j 6)ǎa"&8i9uH#AEnr8z߼=ӷGW-tLWق]tnEB/=0}Z '13:kϫ=½mAV@m5TcX+,/ (:bah5r1'½&~] &Z$ UN;iJ>ݦLW7hFZ$ "l V3fl&c8'3Ķڂg"pGβ$KKp)Y| 5X d*jGS/4F9t/ $ՈjJJqUy~j)Q[uGw IkjDE1N!2p=P#fٜZ#";qzy ;<8[Ձ/g/akȎ`>O a|^PNjO88:INp'UTuHC~!tx!74lSb UO%*I[Z]gP$Y h1GeQ86cvłvł*!z@[ajiynؙ*Q2>@j!Ӟye2 ` [e<汙K'<5(…33lPaK#3XO9shnqm(6tբ[XPQ+¯;* BqAaA~` \AKGwd숍wLۼͰO}sͯޔy%e[\Ko'PoF;ǵl爙95*8!vkGGsw7&Ilm@XZިݮ.<~D8 8B$"8 8pbDTCՒlf8XLnKx z :1r祥{}fWz~F`.b^s+~tTL>݃?ǟ6ۜhn O'b׻Uƿ-3"KP)h&}_*co&Iuiu|jlZ y9yG  z,o(N/-qsjV?͡ v"$g)gGY/9N@~^Џ8mKMF"Y[xX}9,|vNH7Y!a/X|',jbP<6O`¶1cU6 By_ieB7gYyMĘrX>qC>ptg HƱ̹ 7 A׆?+` 36=~ksj qzkU\Ƴ%ގ{Y>Ɓf9Os4ɎYVkuF~L[uq{fjq\I`'1㋋ω?wC22L5f*w].ägzlz\E"8:D/9靀^t3a*\XLI" qFKo>d&X9lVHO%a{A$X_bXGn7ӻ܅sm ^8 *ѫ 9Rܖ}n,.UvAAO!20=D#Hا\+l*NQ6#`ѶXwG)F RPP??o^9lKdKnJyOeW.,!opN\P4knU[eIΚ[2 A|UneIG7(~s>𻾧R9lE1U5bkT./LuAϽWF}νΫV?O~W=&OqO{y6rTۢnCTkZnX.j3QjbilJ6j Yĵ|HS" T|6%Q#`*^ chg6^N;SyA#PCQ)|vCG96mmƋ8n;eMIv!(mȟQ49 8RrB9vdf'nD4O'A i0ݷcE8zƽZLv3Τ"D cSŪ43P=& ]Qpj)rcI)NlNvrEqEm^{M1smԋė IoBL :? FDK] ֪.j&a.kt'cQ>^ Y|Hu1De9.dĉM6%l6K"蘾\P;UcR'@MRܭ k2 M?/ǵH(^{8̼( p5Y,Bzl/-tΤ7;Հ|e͂n ,.o^ڽz޺y- 4nϧ?XI5`5F,ʶPJnG{JKxu(kA#N}ŦfKi&kLCMêobNĝwe9^ʼnQBtl22AEy_g‰Ċy^#00Ūңvgي` 7zJ\ktɺ>7 ;{~~ܮ9vbZcvn9^{03X`}jדNR|hg3[Y#R^;J#K J.Yu"?u~\g$D]H u4X*K`nJŗo<‡j>q؏Z n Ԉ8%ܢꎒlɱ֥c,6w z"Fx5'Bb5>]-D{Lz L#Zj껵Ǵd/ޭ ka*j%p&}J8Hƈ4j ;Ihrf-_~üٖ >tXd"zz N!j 8K+X؋~fUMo]nCc>Ov5ݍڴ͝w7n/D|EN'N7VnYHnnP'lqFw3PBWWD d5z׻ si (>L؅Il( Vcs2&ęba.Hyȫ:x,iÎe9ju-:XC+ܬ0wOjҙVz~ C$ň-!;B0ʠz!o:^ !)G ͇@7Md!! ?_ܣ gF9ӈ9ۼ_O zd[,U)YxV}LE5˿g1tı^1$Y9R`M#X1VdrHI(p E[hy*6Z **J GCQI #KTY(jV#kT hF AX*~F?yJtjGT>٠ W A}|*0rl Q`'1sdsRaܜ/|HS`sFX033K>QLqRNssg28ʛۢJ~݌ ٧=0 Np]ҙ3sT.Ṗir'*6O]ux@^6JۭXL&>n:ֲ٨7KE50"X/ߜjUk~CٚClu2 1-lhbDi][Զ)O_'WVW^6N?ZۡP (e?$X XCZ[C^otMȐ1Q򾩝~V>PPV!t|]yƆ:_ΆIa)C{ڧAi?}'R/+J*۞U~OyR0Ff3Bbhm6*^ef.QnEAyRFLjbIT`3gpbߌ__ i,nR9g?d1V`:iVh.Z KbpBcnWUX!%LXuP'Sjl7ңDKm;U^y@gab NR|VPZlW &sP/sĎeW<<r?[?a.&4g)1'?:YЍF.@Ef"<^yncSK0'験E)~2~ =}Y[׼[D_M&rGj.Ef0F(&Y[ KVz9%D5s9ٗs [%=rW0 r kE̐z:V+@fc(tJ3_ ʐpVξ5aFͤQStQg.yy.' wՓ-C17}T ʎF`J!y) 4-X | ]R0  t-]UyÐQ4͘^ٷ[d`M 0}/:"vɎ;›%y.]d,Ei\\$At!0&a @[uT_ռRiTTVH&({25%h,knꫤҺV"Clihlj j*|⊚yR V+6Kt@TMe%e5 j[3:J J 56J *a [WSWT.k΂QN\t6TbྑW^X3Y_PQ eYiقJy(|Ai taJ֫424Օ +:*Fy}]s#3@扮Kk*3ƚ&z O =WW)SKTT.ZMd,͌Db7P1lGв܀}ƕ3۪IT'\{eu.90w{~CiRoPw{wo{{P߽ADy{["~7S$F&~67dr<.I'e!vr|Ek'S{} |;08)U>*HfkmWŠPD\#<^+c/a-5o91YZvm7߆ty|ٯ9Lc{2E)?4h;]\~6_E勑A/ɴf4{+cUO|ZچgИs&pՔ~W©e yԇ5-~^/_t `1p(;Mu <ԫp/@2Rj殦_RkZ[\9rF>~87s!ok|V덹hn!H*g=!!Ȭn^<W Z7Or5AHAXmcfo~gϐsGΧ@/1uFf4ƹ!O (R=vHNԾz{ϢWW/6\5.}bR dYZ1׺?|3+͕9 xwߗ:Ȼ)| C:9iP GJ:'G20Xb<0a0"a_ʲSS9>(yP@1J+@26e2 nH !Q6HDkJ C҃BҠ /LF"ɇR>8|4ìR=÷+#-o>-m׌@++Z%oW,9MDz<9˕r#gr.g,Mr+g1r-g693 gzMWxdf<23̌Gf#3㑙xdf<23̌Gf#3㑙xdf<23ECn,$`X gG}zW'q}D Bj)p%ۦC6wZVB}6@."0"0"0"0AHDݻK}猕CKΖb9s ǐ^4 RH C R>B쯓X/H ,XV,1M[P XB,߅<8/_F  %@9&A14ySW/E %!_<~47Yhz9d.Bh=R=N@d:Nvx7ٵyz1 (}1}f^q~l׿vO:뗀'? ?N/r ! < ]צr)Ű{c~h]H>ײtҬ12jaqs5ҽ 9*Mc}@g\¬g]]3θ+]Ӻ3FQ[82|ȿ #Aad02SFH0"$ # McՈƠi4 §|ߪ"<}  bSk(6cB1T iiكVZ:ԁjKϚưn!URYkQms=DaVN;~JZr|t ƒ(fm:R\UqG^'چu<+ (6AqGhў^ڙʥ@86tGtm~b'1I,Z[{{+Z[kaD7;dI$$]2R4bx.# oOTYGNB ; MُdJNve /KAB^F,Cyp2\вGZ˯. c#UHm B$%v8gA 2 !5 (nM<1 6*M l64ov)M"T[`ˉ088\qY]I@~ KCC3XY?C6T*BQ*CVˊqۣBhT>ޡ5C^l}3|kl|S6qA{Gv܃ ~g[ tDsl|}AX×;h{(16ӊ 1mLnZŃ(?GW endstream endobj 30 0 obj 15012 endobj 31 0 obj <> endobj 32 0 obj <> stream x]Mn0>"& $BJIXG=R1! n_'m.@oƏg95ɫU 3 \e2ڨ^ŷ:ǒ. Cc(X/|uX5xc|Qno}v悕%Ї9O{Hb׺a: <$+j0NX!Dɋ.Xo/rgTٶ 6rAENrF3rN8gO'H+8C>9rM,KAsP#~$ѳdz$61c4xw?su>/8  vǙ endstream endobj 33 0 obj <> endobj 34 0 obj <> stream x |0>3e^l !r ! `# B"\@lUmD+KxֶRm}k^*~gf7!Q_~3y93gΜs3vmE[5wBG!ln+;x< S)Vu^g'W"g^iUC32lEh@s|z?B۠[жWmO@hѵ-{RPj]5])CS ey]`@ /:{zmXKۻ]o?m u>K H˄QT5Z`4-tcx$o/!1)9%5͟%C,G|E(|z,çi' H~ 'q  ؉ ģA[Qt:Q%G+# о .c@sH! j 5C.t79AjE7@_Di6~pR=pKMAhP zx~5ftvr/t) a-iJ` uh:~͸Z8) ?!OcGymxv]t%F%_2TQj,~^>pI$4 $YnDϣWɖ4ȿqXI 񷉓l&7Tm#pۇ 1 ::>VJ|';ђV: w@>2E`ϯױgj|5S$H>%JFK~TH }^'r ZE[@?A;:xn >?%*OHC%?qwry~ pSѬ]+oO P9HzЊGsM^Qzv|7-f'"0j'9@"wyGJ \<7[=!'Si|d sZpV,[.# M A]%hҵ G@ $)tV8./p߀$@ZL&NyMN3q~nW-:`f&AuMC# #o:<"<'. E"X1SZ< I!*+*~ 4\-lp 9H|*0 0s?C-X?Puv-8y e>O̟B"u"^8xY B>}ݍ8>gp>ނ~Gl\- !As5qH& h@0[ +am(3z4pQ v.s3^n=|l,`;̨WB? VF<5_azGP+0UðGQxR7 lDsp<)5Q* J- qcP](U(/T<9>`\OmZkoP%ur+ g,=-+sjF?-5%9)17o^-yBESP8AI1e\L9)cbT 3ҥ2|'  0x!w3X RT &,XmGYS)twX.Zugc{)uT+- :} X^\_Vz2҃ŷ2|s?CA%lXTav:S:>!#Z׶ZW&?[_{qKMlus;-رM ,φhIbyӎr6befR3/+5MWKAomM4AT;rSU&yEn_Csia+Qi)K-重` Q@)TY3.YL9UB 8fG`2UV=*iaI)}PH4D3Niֈ" R=W5h~0-xyt_Q ćA 33A^/]C2Z Vo&22lk'o&a2i`Yf[Z_Rَl+&"3ۢPRRϹI"nR~oA>EԭAU`ݽ}G#xL9`T:)b(<2ɖ^,yk2KH2fq:Z#mqygEGԸ7Zvc>>/6d&yIIIIM5eZxʟSAkkg?%Mz!0zq=A2=`YpP͊"?&sA#^/tP=^/4p aŧeяQIIyF8͖=ݒWv/_on7`8*s74Y]{d>Sw!?Ju;n))@ iyD4>edgzo=i*Jx?]НSuKt={ㇵbP:5iyTIebfPOHNy|y Q-T^.YS$=kb6m)큘{Ҏ]=L^XOdž߷a[[+$ʎDW:UI]Tqf:N2bc22X(LT*].rzr**n?sϠ"uRrm8)~[쭸~o;]xbiIkM -F6cq{Ň=CSShԠ'!RvXYvFǗߧ;ŋx]tOEj["U>VO̥YX՘o[Y GJ#G1-6X^x?: ]r2kSkSᑘ `W;}KO5p+"ɯkdv?s~*^V#ھFfR We\dHӣU[@mHÚf6FK"5yIɠtysmv!b*1V ]掖u֘Wn~wܴ3KM7ԟQY)XM޿;vN=cM]5+ZVTVDK^\oh0fah7ۮslrKվl|{ێŏ[> ZfXf7Ϸ;ZLs-m6 nu0 Tzݹ4lhsJ. \1#5DId@E2࡜cv;h Lk2uE[:]WI=%usgh\i?9Vִ3q4ʧ)gBշT_eMl{_ Okt|җ;Ck{*Ģ3,,Ĝ ,RBWa)uV-KmK _ AaMCݫtuMSLz!hlVWQ6 {EY Tt>zYJ\n7rNJ yKDT!cjqN,. N%`mH\5 ,]mVJNzVR~V;jWk4iZ]fi!rp$hsX7PűܗɧF1wn{@5cH^A5Hp8ŴTM Hr횆('kvfF3ns#!T$Leg` >沣P@Bi,`MvC=qu*{&vfgSy<{demʸ摷[s؊.شm˓gLڦzv5{.}Յwɍ?#֥iJKZ [0">$lB͑#0 s"p_0X64 ؃ 9_`B f0&l *!Q')UpXU53n1l l1韁pzcrl4E4Ƿo~*.Ї±ھkN2m[o& v*O|Nnnt$d38|qfn5y,x5Tp:_}R2?›(6 My9WX1v=^]o;ڷ}_vy=euƸ[xf;yri.88~}4]B|@TQǗ|tߪO_w ޢRtbs:O}jKStN^q#EҺ  }Gsy: r1BH ɹ+r3_O~?3${&s(YJJ'Δ?.eAAA /mFЉENet[XmOgO|7KfY'=q\YmSCN)^ܖO%KV|S "7?zlMh1i]Ԉe}a?GȬ< ax"rVCg"{Ma;sgYEtF`K"yFBbfeM#"Z!؋ɩ߆OC\Eagb]o(0T)\=گ՟TE+mr}"MV8]?0Чd|SFusCvv-qfUi Z}&ZdDъVb"K .)%#QGts'AqDC]ӓT27}T}M / Wwiο]f^!;Iz5Y' ҈lz*GR7_]B5 o.]tf[w'B~~߇\gs/At|,3 b.T]SN!3\̘\|T;?yJee4.H`bj{^^ ȵk b*q㧻h_"oΌMl. *hAaK19eO 0pv3Km~m]ـ!^cxG{a0ߩ%,j}Hu AO3.3bI(..N2X[⥗e^zYZ>+:5#^jLKRRt ^-hqNj]UzWv\.383'zj4iM 3=d gN ᑧqu @p(}=Kdb815 %1+ػАAku3#W9Z%R?wZ#:CU..Sn3EHHJHx@|@R͢ ib"M+5gJVAxFT9Z:%d* <itD"ڢGzwzpڦ,[.7F6 u7·t+v JoNG|h_q&#h'E3'ڧ?kq.h膟g?ƻr܁{UOB }Aˆɦ[e,Zg*sD*8b[03`{S)mҁW.&AQ|!Tk9AXT*V 'HVJYz$! $qXDNK'\΅.9`gF` KD&%~Dhd]L€fyᨮ@#ki-H߉hhu1{A_C~c/P^yDŽ#|<2DӗGn\8lSzIo.3W8X]l!1lujVg6_uV^gV[%vUJhSF^A;lf[.ϭpf3D-Cz­\zA$[9~\LcdUFHQt, S'XcW66gO[Žsʛx.N` Pi/PQEѸV'DƑ |d "r)+Caa75M>V>]_smxɗ/ };^x$~/GG)aG2K}%ܭ$J%\URQ$VD@[KdAP#| xI =bNuh Jΐ>\AyF/ `yhd!|H6k L} bbb8r$KR.{gnCwNv8spz?YVV%%3.@rVKѻTQ'<;px3σAV3ϣг&X4Vg.^^?ѱ0gsF0E>+Y'<̎" h>H_ ǣsdz]Э%%˶T/^䜓*'8!=E2ܸxu= T9`ZaP)Qſ88yepe$nU]r5/yZKrZYmjV{@ b\_k%;TәADcR1d۰ q'x̻'5NE=MۣFmI2O:MƤ$5vo|пSm˭ʉd}GB+BMG@x螏օyn-6|1,BdޑżC3[rDŽw96+vx:9ף3jC8AV鰬ۥ#: a"LNeWoAc0c%1dR 3g8Jnz ?$ơr¸pVB1+q _^ y@3-Ks0׼)|/+ ~ 8yBP)vM5W9WXZjct_̃Ƨm@xWnF< \ƥPjj~yMF` @Mdj4UNC Ts +Z̤%I֓*]:z~a! "e7a[Z[#Al_=87řE4\0_ F:\t*SjhD>E7Owni:&Ju 8w~Rvq8uju#Px %G"8v*QW]" U!S?Ck-|/0ST߆|υ -{a<@6;\үBeU+nCʂCH3I"5:$,E\m! ua8@yH%t+7C9],@*(_ 𽐶i)0FбHAx2)5=suV)!GxQ%Š U(FMbc]x6XgZК(|(A-mc?6'*v6*& ́JhL3:S-l ݬZ$ "Q0hI%ʞR1\@ _ ^meAe-ѿiB1ZhV̜#c0HK,R6Ϟq^a\~p3&^71639QleRr\$]]R0;@oO{t3vº/b-ml07lnZ K:B%0 _:Տ>ोiCD/V1~{70]61݋JaӺNfTK)O_+I:[6N:B%-7 V/kT+czURD,k5>^dC_N+M e4c>+2n8_Ad6290s9mδˌyïʞҬeP N*ۉcL?ӷ1 F:_&Id.l1f^fӟNR8ӈ5OҪ>#WwE=6vl5t_6lѕGvfýѵܘYŬy-嘔'ku:[fFv@:ϙgl5̿ت6Cjkˌ+Ijz/yqqٯQJ ƵjӘX\6^oǴ}r3agwD ѱV3]{:swt?#<ztҌ.=_gŸ;{Θhe5} \%L߼c"X 2jeI~smgtcؗn_nc*5ZğN_KVsi'[t;(ˁ BVdzK;l때@t_ˉ$aVv1KT'YNi&%Ildr\?\DZ݀FQ&pʞtKr0Z&#`lǛ9ɋ7C\vK.hOL|EdVF}=V{|=LK;X+woPkBPZe :@R(Bm)$Fm=2%lQEPn`>ILKeQ2B]yYR@(Sx.UTU#A4>\U8[^`Q ^4gyb8ZJv ՀW/fsp͡#s)cБFYmkD[K*f2Ǹ$ȫs\hc;DP2EeFg.*R%l6TT/4w\v5fBoe_Š̯8,abjR[+ښ]6ib*f3אrǴ32FN"ѵ˘VKb#^ڗDWrR/f2|ՎM=O}LΚ/յRIgwWgwso{gTxZ}u[oT toNty݁RUW,h+\"tvm4>+GJY~TӼMٲjwuHZ{Hum=ډ洯\ҼV80lUz<*-,'VZ[HindczL-no^;sm(fVI) [;xj{h/SXm#`Rowsk`]ss7똔K7wVHRMiQ{K[tYmf鑦\ZX;Uj5o@(TZZͽt $]jhۡP7H]uMLcX1`!llkMbm:& f60h{GھVcwv$Fz:mFʳ;CF~iJ>,&v7Nw;ڹcmgsd5GD鄡zӤ8m]% ֱ)N:ltTEVu]T *ties1c53331uc@k{ՙ +V Ԣ2FY_߈b,oR1_ s lSelTL_l "fLk{5̙d+ RJ0*fzߟe,GkgK:X戇h_ I=NT=o2Z#pYj=2%0LxO9@:*˲1x2b4QI3&6u9R3fNь-c vIA[ۙ͌x [?j2jd]4% Zd&Me^7b&joʤڪe5eRET]STJ.rrn^Ւ: 0j5HURbQiTV_]SV[+UH TA]ŢKJ+͕ݢ*ة*Ӻ*vdT,kH+>ˡbdɂzIMuUm _ .XT^-,[T7F:l)y 5ꆚyU JˠrNpV4+ٞbeB" 킴sD`q>0$;=2P VQG }ၫ t0*72i+C^$NxhG0zjh $= A#K\lAՐ r $ dw"Ә+l#w#7\YYDwZl &F0htdWA pK)@Nz% 1 S4xE^s6 y)Bn77 3. P.JN1푞d&* o1&8w3@V Xv8U tٻ\L1Hu12.٠m b /禰|?0ػ`Rg.FC) ?;ZubGO6٨8KAYx @[hXR;}Z_E]F^Z @=99 CkP9곋s==Чٝpil*7%u=#K6$ǹXL7e ,@*a+r IޢMc+_#D(4?UK/  yedrA!èPn|ȏ x"Cltf$F; mʼn<.~yϓs; !藐?^kGKYir̀|p@OY(hvh@ٓ(R@BꃴIPtEPt1..b]l>H ( (EP4EP41 oP41jjf@Q @Q(( 2P@!3 (dBf2P@!3,,bY@Y@(" (PH@!1 ($BbPH@!1 #PFFa #P(l} QS@q (N)Fq (N)8(N)8E6NHN 9HN 9$' 9$'Se 6!mF;ԫ E(@dAE("A2~~g@@(A}o/ +a%[q*˷OYdu0_Y%cy/('PlPiNH{! 9H }Ha'Eb9pHqJA bW<$>' S"D(=3HAE$?\+HsiPޕUd.晧P>qM9 )?)y6x;~j $M g#YSH!t|Hِ2 %B4]> )D@6fR&:o:Dv@r =3@rdO$QL"E'<@v` Y@TȮH~SKuѼMR@[Q]Ӫ_cͷ74 mCH4j&a5*,c79A$ڔQQLhchc,>m2B7gP"D\e[JPn/@e ^3\r_}}}=A2V[NѝBC56@Ա:cuU4 KM"ԥ bУB+.8[ 9ldgq0>_z3"9Wi>fӿ+4O)݉3v'g?qztTzѭt sz=cEc @l~)>UQ>.؞h=ޱD;7F%b}(I4G/ endstream endobj 35 0 obj 19258 endobj 36 0 obj <> endobj 37 0 obj <> stream x]n0E .E qG;H %UZ pv?sgs.x 7GĊv^Fn/͔q~e?*IƵaݍG-I·~8_Cn_0,kSLߛOu㾋|[|'oDǖ*Դ>4',j?tO&PC,Ȣ\`\9py.9 8Ț1; ~QAnS_fn 7K y,s ZLќ/p.K_pF\>/4%?> endobj 39 0 obj <> stream x t0ZUl=fLK#$Y"#  $$Uvox_$@۱;N8$/| !mޭyhݷkuֽnUo҂q(jCSǍw=Baת>'CHܸc.wrLi۾{+7[<!>L]-!n|qm$Րfn[ >^Ͽ⎵^شw=k{{}GO~GBwH d2P.'pv$EʼnQKnj-+7rBI[ o=~SCSѽ2]h)܀OP?*E-=B bЧJtu\Tvt3=-CנJ4mD{h-C=~r?DDwtsCGчv>\!}5xhЗP 9(>Bz 3˸)C=C/C0jDk=aМ y\ ލz~ U89I@%h&ԧRWj(KE Wћ8LP&$KކN2->o~Aߕ+xbq)Ii's9_3j|x?7Ա!;H}݇~mPSw;Od YNO}m@7? O Z|މowM %z |CQ$$rꗩ @=\jvޅ߇Xlsb|)7 ?_?HɅ_tm^$!|\.q\>|< w O / 'Et ~ÃŃPTPaEP&(9gfux0y-Y<`7 (YGqd2H DvI?y|IspY\17kZv9>G45x|O~eG,nwKsRt_z۴%wWCr>@~A~5ssP*y_O.$OXD&$\B $nudោK5:?u|hW/D+ňTA? u!x 7݋6>R&I p'782'E'_t *Ǘ?GW b1 #?yҿA'x-i*]X AG1nqe|\ x~݇rs 3b1p{w (~EdBhУ5hhCAЭq|]Rԁ"s>i a(K;F/`;g{n]oBT3tЯ ލVq *O%{qPC EyyI@MRڸ {)j! 6s-Ví$`k M5M~͓shG չ}ㆶZ׮Yݲq͛[9I&T(/;tDqQaAv^,M4Ibx~}E (Y=xߡxuk'`yܢ=06KԺ]+tZ4N{>!LzSp!C$ı@ґk"#TB:GY1C;799×Nҷe5=#'Q<. EKwG<R2_Ѣ%9zf> @POP6FӂC::GLFk״:m׊]MC+cuH^Q C7zZ'*'v5E\>d rcCϼDCge"[u;YsAM.]rPMEKz &SVLn؛ϖTa`@z4 jzL"͞,ݯ0V -L2 X'I#6a&-[]6>9`An-IʕɉIsI Р^9q'aw.'*}z.Ρ멏mρX "E vVV/. CJ =+0^et<$ۥFnv:knP|!=VQLFi-]v-zɦ[{%ii_R)6;o/`W̮΋5C z;+GmnbPH8#HX⻔Ig۵i%&. 5$QhwAߞH;DtzagzO&("73W <P0H]TrZQ,9lLHx tWW4+!GħX] ]D-#?[̵һ}ZFJ.A]b@CPiXS VSE9 ;4P],|K@tjW$]]j.TEn  a&k|g RpoOhM,U&D7HMil\gz@U!6E?2L{ B}o>~~&'\㚵 vcrH␄&|\I7%8F('x4'ՃsSsQ p;&Ǚ̇&:)ֹ;!KVLx." c~K:)$? =d"j-5HҞ_1FHR$UÐ'g48Hb vn[Ԯhޞvv.pVjaZd@vhVE5eh.2EVz46XQrc;)x:8BQ͉cMhIBayDcZ\im%#R9 eyD1oyqX8~;n0u`}%n\p8m?A&>bRz EX=-uќ.=%*xyizieKYѱsc.]D3deZN]ѢEEҪUE+JK+$NW { n 'Ơu#M`".7lYz6MN[^Ê/[%I 4n A\)}g/{F)BѤV2`-Okoܨ1E5Iy/8p|rQGcsPXzJIȥriVֳ8@dsN|"1ALPz:uBLd5nfOS?K]/}cM Zo8|7],',l~K)" B^O)2*`ѵٻ=Sl~۫7e;lgv6W,:jtsAV}`>R׍{ǏǝUvJq ̇+f%8Uq03j % ڭg 6:} 0<,.@bC@mf4o4;>QvW^SqQvxNꥏN~K&PwӲ x㍿/{Q{n(mSz@z 8[*\/J6sq,.WgU&,n5˶Oز +У' xWYzqo^]KVz70t,9BQ_ԟ()Jf3JM զVNϬ+ᬬc^)ͫxˋڋHQ^c}.<`A e>dN#gg]<7d2?k} 9}M8Kdyb<0F]P]\,EMJvq:"uuaG"9yCa@BCxڽx?r80 Z#UUо(K˼ |deyX%;tPMU7\ӻf[\^w۳{߼'+f_aʗۗmh]P<ӞnUs=v[0/_8꜆MM7J67_]w~aX)S:cŅFuЙ_~œJXq f^4;Mfvm3aKX0rU7v\ 8 p3Y#8I *@_t2 3B V+N%LY1qkkǕSaYmϪ*livFhNfN p{D@*TլaQA=tnkͅ;y<>+^sm }}2e7e2m T03.|Y$/, !BygEHm?|GǢCQo4V{Qi4ɳN$lHmgf޶g]YÀ [$'kJR6>QzÈz#_Qtbřtpv;(Lq2=ęCLq2EivڎNCq҆m 8C&|寷{w Oo/`n4k?~彟L{C P# :-K"&$!blXyنi^:y8Kd9E)dbQJ&8\ؑA2LT-uaqD8"^wIoUslAeh b1...2`5ϕ_irY9,Vr:6:"rؐ, $ )z %W"'f,f8ápb* Yyb&J>2{2s jd@٬V$saL\$H8t )EN Svt^Xr``BH9uiD_9ڟh\y;;M/+/kgHvT"eK* ŷ%ʚ9U t9 T*#7LLLPI+C4*m\IA!oJYŸצã%}I݆o|OI!Nk_5)  w.\Z%6eR,f2(x*Fj19E/yrmk%kTn+ߊ$Sn!uK%IGꑎHoJD92-x6%GcS>N I 3i=S3J:P]9.;=u\9ۉft)[ϨBGej T@܆82QFT74JU|g/VgWl+ھ}܉ȃ(]02< Ya֪ M јIG~)}ˍe6nhx{o{o{=GGV- #:am{Ժϼ_gz;"=wqs0d| h`'94\0zG ^mD44y:ʳ$=p:⤎5<^ TC4NR3(9  geY2SO$fdFLK GMꡊaYQ2N} tvVN0N4\yp+]x?yT2qjvrk>W7gK}Kk݂xgciLzzūAx(7 N/|Q"FѼ­-S @r\zWs:ȏuM ׺k绖\MŋN~yvx9oر[٣ECaYBȓs0# ﹁| ḛ6|&1_ +86ʕhlT-j +z` F2?^ARQaC]_-ONFKIw'%+ -hzI#ìj$feL)F&0)Oo0vRcj6ZSAјJf#0o ctN =/3mm R()2։M1b%҄qS) 9=ReqN)EJ>?i {ݪ#['pp?b[qaԿCkvLY(;@1z#wF*#lð36Z pʀ0oR8e 8se ؑ3b ؕ;3`wJ2`gla2&XlqTiLj "a1Ξ |;O>NU' 1-CIIEG%i'a t2Ӑ߇57>~ަ-C8r s iN!Ɠ!4E-UYi!#R32>OVxcMpE<PirV0D1p dhS|q_O0,tjq%#2Tu-S?CCuuuMMBSI {vٲB%`oD25KX@3'F̰O$ĚaNYΘBL@;,{t;Wv}ev|I&]rɡږO#wދ/mڥ 7WQ+Cb>?x TLNÁ "[GjHɂzk9Y>bȌIJBvЖ6SBs639HAiͼ`fY3"1B3˴stUow{ 91x j|Kjeҗa21ydEdE&jjxV>x E𯙔٪RQf)|ڣZdeeeOPw|LZ֙[[ #[ߊSToO(qDeT_)ⴃ̌ް݂ 30ޔ"'r̫Tf>* @~^3eT֠-&k>I:hɛES,`=$棸σXƤ0cR1)̄}lRUK2Jlrx~~)`hM:58ϝ`N>qѦP?;^6n`L3KYB'a^-^G^cZ:z8Ս'~=rkRZ^1|L_z>,=dMXќp<π2Xdj\Vzr'3Oͫmɽ|ڼGO̾7fV;>!Daٿ̴̼L^fYf]f[gZg^' 񼂼yKKspsls^ww{Y1OX.x/s fyP*5@65"UKMV,2:;HU@ 3j@40GH$FWp SG< &+vgƣeepkKd1O')S ̇G[A $2zs'kg^*}3ҷl*'j֬kr!>W/CzUob5Mh ST|h +K+ʎ2RFՓ61N$Jf"V\5yTR9j]0C lW9s.OM(4x(߸,GG01gR%96k7A:$UO՝&s"졫1ĕO'Vw6)(33˚9-ԇ̘P1~bwjI@˗J%y(LnO5!FJ4 j4uJ@jp>pc8+#i87h< K1 2X:b㰦cPU:4C6 ޙtC ՘ ͅkÚ -&JڔK+o[m~PȩZG {p$YJ!gN#(XtPh]Y2uP:=sTy;qMr3}bH&9/th嘴t1\:lT(j><ͫE-#^-vKAn#M!K=KŦ&&٧rŤ4421yBzٴƵ]Dl:(rw]\hqB[Q*L@m;G~;OOv4-"-QsX77aB$%G }vakm`d%l$3Ά=nQ8r¹_ /s9/srN͡50 )Mz?( @DI̲lXt¨3O@.f&WS2J&9flvH&e.79VeZ<"!Xt9_9 50s@͏%eu+e"I<'nw^$NzgQBNil 9 PBhLs>Q P%(D0=fD)=KTJ:1o1' z*xs4𜅳z_^Ia$!40f4fӋ&CZӯ2_wU^E>E}{ <`l5hX{ro|p\:|;gsO~5q׏_G.6!W$c;aq ~ @64([as깤YJ6O،Dpf[ ~Mf،4e.έ;ݣ0ӹdiL幠UHHӴ I!\C.SaGP*J6m쇲Ť ,бDQ''Eiڷ^}vkˡ};Q+']CgFE 5A*L q sr=*;YZU8h6eB0 c  Nt0c.h2`ހ!QC|rHdtX O;U֛S|yy|YB樹m~@:f2Q3FXD=z D)_@?#I ^߄;7 g& ^fs hRuY"3 AՌAg,J*ekoeA&#&1yz㍯W6A#NtǕOܟ'n(bخ໔7C~^5y+,P[M٭={]ƞV~sus.";6nC]RI ꛼EzIggT sSVW9quX횛,_C  <8(II&fڥ)*WGI`gNRq$ mIhz8C?\~dWFn+g}H֬~ЗӀ-#!;fݲgnr9#\Ȁa@1#[7:`DC4 aX@<8!+31NZ[HZVlCzC"WJx7q!A''jW+'* P,Lژ_)hW Y=j?LҡݜsS70nlf2!̛/yO1ǼddO ~w=-7\N ?J;nF2-G̈́0. 3(ea;z֧1sbTme"ǙQP ]`g$9fr./$[w.%ԹggZ^, ^ZoYnZXN[-8vwIw(?G߱L xxJN4Ig˜fLKˈhNa3<]bg2xu=y:aï*={- 4_TJ^Z~8rk0j˅̃RUAܭP+SGk͓׽o;e=H<>}RKuߗx-^yХ|(ƐWߊBl&GvDD0E̓R~Fq |&K(:}H9gb|+XYX)k$R{5=A V㌊)iGE\Hofi,VA^T/qP23΋33[?#2~iӺvF 0]eֺvW.+r3g sG2h9]lb'028+KG,/"\y7x]G/l7Nnm+w_{ \?qW=W>ƅZȭ?Ƌ^{U;zhyv_nT:9L ts1DBD 7kFcT:xڄ>[ڔ SpsjIط^x)5=%\ _˿sp~M:%Lp}WhQckaviZI_vDRlS*TaR ț=GCD Ǣ3iuQ/(!JNj~P*ɐailfk #}]xEvUR^m̥FS8.7q*2F|9Bef23Ɉ:MRޕԸX0=)z;^Jo U_N7 BI4 &ċODlmgy=^C/p9+;s~^ZG,k1VI;Е_O-asKn;z]j/c6υCYٳWxTꉦgƏяQ횡Octb|@a RZPV8Hqb"",;hIoǛQSLy|sm(ҋS}Lcm;>!c.>J6LC>|ć}sԬ<$=P>%X ڰj$G=ZTQoyƛӋ u'2 s4k~cfv3s2 Pu6M2j3 QNTxkL& fAݏxEY[` 'z|?0Wsٯ/zxb87-ퟱa޸.r`cI݅~p4[42-йӚ6bۜLdB Y5]abG&3-"31?'Pվlz CŝFfQ| 2ؙ;,V M(DOVM@Six3P\VUvU8Ir-/!L[(&ȅR(KѬ>T.J*=UWkiL(y%"LVO֙֙Ϸؗp[mwL"l,n4ͱMw;;LsI8116F0h.p,`$ WE^5'w\T#jcg[`r_0DjCe @ 5;StVDЯ`݉ᅓ&jW;2ɗgء a% 'tº!aL){>sV/ʙkoC-)Yfؤ#Uhlغ3z, /ȍ&ԟjsY}EjJa^h#/{Um%sR f B!j>KDC @4d{)ۋl//d{-9fէjI) 1އyO[jȝ4$ѯ Ԙ#MAGV+?V\&{f $M@t6C%g8STH=̗!t}8,֍G,|ffֿfLu@b9lN0Q*\ 6Ɍfm2q;F}.E.h>CB/VB8J^"oqGERJ`ͳ5 |9]+_,,QfܘM|IH| )f̉bA24#ix6kwY*[sLRp ,$j1dSU䣴s1C1m8e-cEjr1ÕEjCՙ X7ѵ( FhiЩĉMMWEYB$TmY矶YhepܸIwHI*);|ͦ Ueo66t߈CGzsyK/*l<\؝]Z=>M/TuO_ސz4ЦJ:d,7Њ6Z-uay}?~:}_|YmQKeah"k\ 3w[" ٺDd,316GeP| .7,/ L[/eRq".i7]7B uJ'mN%ӡ&{J֬T@џZ;>Z9Ι.>v~W{^ 5(5}2't!&H!Uӵgxm3 Mi sL$e>dEP+`"iGBPQU8\gLUu+LD>+֯2])kTB8UZ ܽptRBs\Bh\Iiy5^MZM6l7]l&;z.}.m!耴W'+tJ.~ Q\![!N3ԇVQ)(`>҈3ܑ"+,BgOn88@lZNT e zJs$Cu%!,Z5הL8/ 8JUĹ~ENmoFP87޶iY5Rn`^xjlH ֚>@Mx~ԟF>>xE[6l o1\-cq-p*`Aja7|klɀphUr` H֯V]f qU)Livv]tj޴\,4 P`1f"k@ &Q#y\AxGElj~]R>8Ͳζ޾nvreK^Wn.uynqGVD'Q9qW(4Njp/G- Fm"|mT  ^!m"̑cX6j~鍺2*=BQyvE gGBA"%\HhT0IAmlɶL2Vji =l` w+<´LM8G6}00S|8J2aa:mW&\GUؖ'_6)v~+݇C8x扞&wt_^MneLZ&kJT>֟_e.W^pҾ[)Kj?bs$HE[ŚȞPDVWVD#ov},~j̯\k"$ӬKI+y;>}Myad=aނ>{9NآfxcmD7s`őtpt;X;DeΑ6sxu~)^*8e,:]rl>A_3{֝W )?¶ΖْWS7G#gn]6l̕`{=bm [l0;jaص?L}?`w=-Zi\<K{RHU@ {2\z‘v8k>q-@aB&G֧\5*}իD>wM ۩y΃d?䵷.=t/3{é1¡y?~;ys64" n+O_"lc谠htG&sEQă@'A8$SФ8J=6GU38` t FM̐>H'R20;K Ą4VyBte*Wλˎz1\jrZgY-)xc\,DV[BdNZxT; Lي<8sXNnNuTV99tQd|o]ru 2 :0/AfGǵͰ56BbCHMFMs|hngQMn'6-xȶ{x7-f 8[\Lʉ{]hKyuԉ'"[9@f|Him #%t\m#"EY0) E`ROLTRq "{ԽWr1Fymu6ysk[mSy[l=;l<7~`c_% H|aL? n!eC kf(ųFgDGYZdR/I/I/I]qtw}0ݣxBo-|O)HҒ]70pt*18:ȶ?>t^AE t*J|js̊pM9lY~BƦ0U/!ԛJ~o=tyl5c]MϞޝkw=/_uת^]ۼёr$%# kJ6qtd98=ei ibzlKG6X^%&S: @0tNVֻXZ>aUͶ}\0Il$D]5^xKar$e&dA X-k pe&%scRw8ih DѶh`];8&Fzz/-Xa+ԔSէ=wjSp& }bn4IKy;㳳(Hy5ivϯ&U0\uo-UG~+o9uGVXl(//V[~;%}WSp> O7]9#<"}ϝ_5 O9oMPr$++LHfHSnD0y`x/(pi[]wsd}ۋ[rݯcw؀%4}d֋q(ȹ\iWTnUxa8Vo0n<{sB}xYt$/.*i|IÌu"1 :ӷNh`Fh36q,GgtaF@? e xdJN߉/amW?s7>q ywko;Mo>AܭW%tj_z[1@{5/ )`>'Tl~[LN'>O E'ЧDQD(qYQIUxJHGQ);m 24fhu4Ip#cIMG<4 IT.QlQwMemwI$xXz4Jzk%\ϻ> ~:`9&Y1k'Aa0" DтabGdJE[leLWW!$R5/OLJPVXtOB6MI6gɦ,}:`GlUIVz >ieLeBmwO?վU*/bX}lu|Yl n:PkX5s7N|1u7%f)..*B(tMd03ҟ^ q29E hbNlfEd gNWϏ[4]+^д(>E &V#8SOev/{+1 {zͮb ٗE8ipNS14ww^sݭtw9WM8oִOo(>eE߻)p`E<߽fwE_푬O[},mB.v7rܱ_bgzY$4vD3"mI/3R;=Du`í_bs꫷\~{O}-)7|w*o-c<>:-2bLn18TX>&s٬KS-,s&$`$plCm}DfzgB-G"n11h7"5h>0P7vd#8sܞZwr=#]-_[?B=Ձ+PMhV3(nXl;lDYYT'Fc~ԇQ8DlFJ/86Jë́$g2-[Ĥ8m~ V(ŸcIW.qũ≗^Iߍ'1WmO~BdRFK2).CMpM:!NTvwije%(C2*qFr$1Kb^pN,͆]wa*R/b +Y}˭2'tnN*˽+s[5 ]“g&A8ݏ%ͮ NU.JSMnyחͮG\^ArJ?dɋ۩l6lj6TU6yL$@#P&&cG^8D,c$JRIdG>}I:頞7]AZ[nRTg e.~;ؙ:guRԞLF&ŮT)$+6BӬ!1 MJ9p\&^,*SOzh0=CR)M Yyܚ\)k4ÿE[, MBO o.g)~Dت٢ IB̲õ=]d7ۍRv K!tg(zOD^fcIT 2x0Kz~7Rcc_}5穿L=ؾS}IIP 1#E[ʨE5V+SW<t!eߗ:_Wԫ+A>9pVz{E N/**.FU-YQِ˙/&D₉g[W&:2P2iT>_g+%XӃ-Fqؓx͋K\ ZT//ϢdJThPhB9M*cgLOjq]иqˣV$44yqVͺ:eͣF7/O[s?^k>)t2TMqmU۞u' <]bg1?Q|ݘ֒a<:K>PP9gb g ib,6)T6h/B\^/<MfeŒ)Ma2T-(f]+q)޵a> \~F}Ba3xt0ӈo} r*q;HciyAc4qᖛ7҇Eg|]ډ4{Rw+p1*R ̻G': D "ja kjPy٬$ < Tb-ĬUM۴'m$YX[T#vØuRr}eMtEzm`_۳Xň*?ы 7 ^L. aVO!>܄臛^## dpwWQ[WIO/ozeEWbi@w@+8}3?xW0 e"<|amˉfy# Kky<T`i=0ݾׯk l+.ن,mnvL=HzZfW@|Յ#>==Gwh?3@?.6Y_:B`8Dk\ϊG|>۲s΁*]_81<Nl_1`J˱ }me@pvss#0lONʟ;G|F +=..YsrɆ[Som>B QGq>[VgguYz⬥ r[Yo ŏ蚝Q69&T=ba[IqW@b !/qpĔ$ `$wunc )mщ;{y$w 41ĩg؊lK(5O/p._r+?S~֨hunbk@B,!"^o$9Nc_'̎=Ym[ztrO <@xyƇ*wvV?y5s=giOm OmwSġ߯]va}U^x/{]|ǩ/ͥ^,'DN`R;f݌",GDAw5@Z[8^HQw2볓 YF :'0s6 |N4R-e/'˨}Duځo:Ó%b6[d}K#:#̌'g{ Vsm 5KGn DgޏӪgĢfFٗY0Eefq%g_~=6Cܓ((N=W/{sQM-f)D8c #If|eg>}w JF?1FFUNJRT)550U]Z皥f:Wٴ%|iG^6/0ďQ{BB9-|[5 KBR11&<<[ߥ0RvXaJ:9⪤Ʒ=`C7㱏}7@4@ M'dAj/Pcj:ţ<#7Aifyl![%BѩN̍%3.^Ij_?k:~ <`[v>Х#FjvANմ0yMOߍU~xO[n~teGZ{kTТ絆FKX;qX=341klбFW:r6nLSJwgECMcfp1PeZN3FmFH:meJn|bM㧙65,hY.-BB]z%+K>RmIe&/ڰTo.Ke0HZc5sj9ҌaLlcx؎h@:fZ2J4a2Ǝk&Mb;8g?4ecd8)#bBkz>6}KvkŨt#K]Eț9R1@u<4 .r aTn]On*NP^Z6̀xsᾁiHenğ iwG\ҞZǣoLpO jͅ4mj>&j%]j#K5hl-gOk!,=Z~4Ms^Z#2Ms h6:-dײ:k0 kuc%9ţן6 Z2`·EloNe5]ȰWv6RSXm(V)<i-`g, 2R XZjyNk)nk+Dogz:xaB1JoPǼhѶ,A#Z*zK/ '\ 9[ʣPƌTmQol߼Eٴ}hM]кf.uAKWK֖Ѫ6eeg6u^GEM۷lV״RWwl41j^*KMmkMWZ絯ݨEsZKmLgu{:ue[몦6UCjWU-pYy[SgecsKc"uv몖]-ԮeʖfM U[Vuv <[67ulmj[вfK[S,PC9:iEA}KgMr1,`"(geCSz}v6mkݸFz5TC.h_ٺQۺjm{[SW:isg&uaCF:jBYjזV@G [ M-4XܮliR6vu@sMՎVx Khкy3$r;CڨVJ5N8[Vm.Q)Q%#ضPmL[7jL)(}ƶjak!WZ&(>;[((‡3Ӛ0P ln@[rmn߶y$4T-Bu!+8o4BImiQgi@+[̣m6J" .QW6uAY7hµ7wL,-m8z[֎֦kJ])\"h^F]`4wu_1foQ4k:QԴlmin=ST6|8]A-֚&Ls0PϪMkǀ+hQx]m_ ]w#EJc;kA =Gs-E4))P;o5.YZ7V-T˛թq^ȁu"ZuC{sjzmaZ:,$r ]4Pa)TX9@ZYuxR4:Y!moH΍P@s;gVu-66L@ͭMHie֖2c:cu8JV;yvTjڙsJԩsjױA* X4t̨cA_-OY4s\Z).Z%Pү^0sa]Z`Bi A<7NKZ"/^X7\u!ȣAjgTSVj:Pk>e*l53ť{!dvg?^3ILzg{^N|iɯL~g?_grL3ILgc`#,Dp/#ёWVvG7)egp< ph9pW spǛpP{pOl.ܫF.RxC_1A>4p p, iJ8^${|C}7Kߺ2vۤ.kd}4h9kש3hhc+ѓkAvuuӫl+;RPIsgL^f;eD. A8QIrx/p<0@t{mβZ / E;== ppЭ 8/_!c~Jᨁc9_!ᬐEL8=; yVoeUA$Ju eW*CKErѹ n?1m 9T8ñ8D n8P8T?4$07{!Fo|rK~A^E>QSv9y]_'?aן5+(s(pUZ \吜dV 0vDPT"Xir`2ך-Vʺnzk￀uz㇣YN1[p86k Z!lo+|i{\ЬE{&$f HC z*z.ً- Chђ=CCBuْdԃaA\׺4;wjCì\!7o4TSDw/އxyf,i]yuS8>X.|xk,kn\%(0(̢qERG!ㄵ8cF1der"&5ZV[kcEύ[{WU W\^Zzb-S{VŦ{'-;eԽhYݢ%{%[NJN5Mm>rD^7*h^+>NyUҼ'#K)˴k@+B9 Jǹ'qdI4Xc{lpGjGGе#;;G+&G ;cQb-_:U?ڼ"\;'$vmFhVOY=5/]W tRD#b:4iX5 3l-mM0NFfDf-"-.[Vtj v2ЋmXD/Ʊyج_7.%?DcY eKjx4(7: ep-Jx#Q2jF%qjH!/zsd endstream endobj 40 0 obj 32055 endobj 41 0 obj <> endobj 42 0 obj <> stream x]͎@<a=dYkɇ(<5IlCu2M=}7gߦ99=w};p¥'i5sZI9\yXr6Oi)ɾNm>}k4O zR_CfUχv͏1Tp&Lu *j_'oW KNg=-VXo׋Z+hoZr%ti}j =y鷞{j]N&ZG <juM~ftW0;;4Wo/#Z{_ N!_b/]"?{2/ߠc\"?f G!$Y!@+*lS_'>?vN~EJ~j(+~5>?vO' s%G#CO '揹< {{1d#-`4"V> endobj 44 0 obj <> stream x{itcWodI.ӳ$[%Kޗ%U./r*Vmv\]e',J *I%$@sdh$0 4Nf8C s l){ޓ-ݧU޽߽Zx<2ˈFs=/#޵*<|'νFih#Bf{N5#dA/YOBQ)hYO2p?έ^򹿽p٥o5!5+]ZyH8_:7wu-j3B}koj},a?s䞢uzCdXmv宩x} P8ɦT9mimkBw>)+axmC%dQyQmSmc5j`y\h|(Oo|d :(lNaٜch㯴yV'VP?J0㻨^]2 2:85Py8<%g=rCqpLJ/J'<( R5лL>!,̜LT\%1!qa:p|A(BtA (P(kE48I5RۡO| SLdgaF%!+:]DEgx)đ\-s*JDOJ5 k#\?r䚌 ݊6538=^}-V0pkXJ -tw'? = Dn@CWv^"R;NH|Kv4Q^*&%A svmG|2'؂Ժ<8ojCkAGT"6TVmۿ>zZ:-LA\8goH3BK>pКLCpcְGlnOHF+ۧHIe Kds$i@W\:2ދ&QP>$ҝ a"idןѓt= #b3DnUl}񶸐2ATFQN./W1SGLO&c`XMH7wu5_Q=L |E=:8-wi G/MčCţT8CuQeܷ@s0\WDu1MN-1S*Y5ag3$d|J2) LX .cm.T OZtem[Zh%)GGJw v ͻ }6[__sV5w[J2AjьMI |(X-SexVoȮ0+t;1x"VLG;sΩvCCP&^>9ѱ?@g7?>:}4  mG's* sHR|\$^szf3lO!A|kbvd!_4Ձ)`&:1Rm>lQ~˟x66/460l\,?F-P_ԁ}&9h$t,݊Ɛ⋛zr?OAԚxM+%5^G\n. `=TE%bU PH> W(Svpr͛uɕEù= "GSeY.pIWZ>EqT5!z~`xWηFj;o>{_3-2[;s?qUYۭ|sAԐ Y 3G|bl(1k'jM>|VND 0u3LtU0eluP$9^2f`c@OfJ/688V, [F-w*kY7iuN473,m}*Z]M'kZC853QOg֏PO֣xjI5Ky=P۔;H, sv9*"8d4p3)m.3z1G^Jt*FBV!)|ߢjSwxs#ϴ;0_b7MGL}!GJjڟlܯ%ōP$WѰr̴曁jIHT|փIu_RݸSG[=iЗq ֓k|B=TO [D$\Ӕi JUNm/ !FX!TEl]PFY!3LL??uy _ bfb]sz ŕ@$9$h _vїo+f@MdeRPbhoa(kԽ|7(9z\%☛YLU3+EW_SُEvm/:8PFp5Mtmg7C/_x+b7  z3uFrx0٪4^«X >a,jR/P] ,UNTR\ޤ8_ij;,h;X9c14#KǎvpȦ|h vЎ$ٝrH< Z-ꁒgF#ExU_%`yˏ `83j FKԡ0I6 ('CM':ԡX(RC LNz;;h;cvnک oV2ԔMu .TҠɩS#iƚϙͤnU?@&z>1KbEWN\F`2m$43\. UnẂ/GpW^%[uE/^+z>I$R٩}IBC {d"1-4x#GFIADOFb,M@e-eф0k)L! ]^!=K$0%;5:!q+cy"adXDD9"xfƐXx8N);VغvZRsn*ָ]6;و(VM|o_BwOc_@6kehe{ugoAhryNa}fg;/UMv/thAYLbQ=OA(U6CFe3irlSK;mzʺ~MX[MO=x澘hA jȰ"ڮ9?D:;Ȫ /P(z9b#< , /[Gѐ%hј, ͡@H(6s^)XWPc$Vnjޢd"޾7>-7ĩr|1_۶'cSg||[pExAu.>}O<И_K] @dJu~'wj?9.׽5L x7>hʷ"*I|Wz)Y(@KgI@K ?ݹz6ȼ u)DjQrMAH=`]4@՟V2,42yYd'BP؏6 n{-u:eR>eERcX}}i-V#P6ϠG䎵bgä*&{Z5l{s\6CHRIæn[rc[) _!AkΠ謯d*#١dV-vVcWrC7y]GT56xAӠLg߫m'Un:#}y'ߝ  L-JΠ?ѷ8w@v͘ߩ x۞⬰ !bEmuK=*wEdzoZÆ{N/JHA_SӋmͷzд5EO;_5tv89ڥʗsʛeU8hL<ȀRbDI*F,(No _ʢpԇ#cc48Ͳ&8M~Of68eqVU[lhe+Zoˑ8Jm~;{X{ Ҥ wGӝti%'O) q0;5 6uiӁpKmok>vN7Pw7-wp*;5x0): XHpv&ґv֖tz :Qr\޹j "9s\96W+ +H ʺAjBniGX ;Ǘ_Rw t[TF[ׄƆHlۭsgЕw٭WaS肩Lة[Qʮ=6۱zCڜK o΢0gW:Rƀ+ W^/[7,1VAuSS85HP87rSCFQu a J? ?Av>dLT b(RGQ#|c PO$@,4a?O5$| _+| P|m|'| /cGō8@ ᙂs}IMM*O~3A3.%??Ϳ;ޥ?bO/WSU]U8i禤9h7ߵLZrٲlhkf&ntVYx?z=WFR*D6=W^)dF`h0EY4̡ ~DyԏZu(zY W2ϠZB#:Vs6|y*|4K4*}Nh9VaIf]T0D'PF-sz^$|mgQ EOytYY z;&ZY.I"2 FQn5ҳ}va۳w2)UE2wN#INP<DGeKʳ.u)8gmIx7\`YeFSg*y"=CIڢKknB{n3܎oͰmw-d&!Դ:*RR4,mUkENWFжerm3ġe _Z໨h mLՌA nٲb{Ip%v`>h[Ux;> endobj 47 0 obj <> stream x]n0z C q08v  %~pvp\~f0KO-y{nw.=0&F~薸I]yZgv[#}}Iw~/1y~wW7.i4Mڻs󵝿WC>9lL]*6Ds/.Yy&qc߷r-s!Մ 0h_k}'_Ż0P)7=X'`-`qu,| =XC{A*Pg{ O=zЃE O_h~|Yȷ %X{> endobj 49 0 obj <> stream xZkp[u޽O /x^\$Sز !J")$eˎc:tM3vc7dNg:\qd&6_LLj7f,g^Nسgw9ٳg`}<ˈE !8кbx+ 8kCa[Xzso~u\MЙʜ!PG}g63ԧ=~iNP__0[y ʥS ?E.,ϟgPʅn-}e m>3, lM- 5 A-@vɼ>zK@O}7N6ڊЫ90omb 61I(|(Ϡn}q ?n}nˉ"֝9` I 9s1E||e|u?ͼT`c{܌^Ԑ*idq$Iא&Rq1MȄfg,k2rPΧ5jRtZcTEVƪNj]|[И‰KfS(T4nUa`MʤËA H%ՍЧhh8_ ]S56y E+ 4'iק4.~6l/ΎjhQX}E`l%mj r jT:7HMFM:I'>UIL"> WKR :Va„ OT9,ƣRiRpT24(Is/5^@.VTQfR )5,!UřD:]|ˣ mHVSʱRQ)%I/B_%f."FU%(̜,ɴfV%"ЌDfra)Pi-UFIyqnGPR!RcD dMJVK0\(Q~C a!vV (r) NܠVfT5 5"iNR;5'9Q$, ei,i.0[ZkT'NH)KiͭN-N2iGbJ^sȖWȗ4,TJ7aX֙Vz?;@qZwuWACCW1-NF%/jp?._kjȅ( xWSJ{!|7j MfʒEr UA*2VERժjLʔ e"e4|?-iMmw>w:۝z"!uG=A7uUɠrE@?R*))c)))@?R~L~̨ um*Kp@!M!>۩j)clqh*kW(8+YwAhSg;RJt[ׄm{[YH;}#C@{}`Pf ~5Lk{D28 `C8Đ"|uD A8Q 5k!5Q$ipܷMiqKZĔK78RʓHkXY 7o2vsá \L"c* e 0V`1rbY t6(zL <8ˬ0#"F`ۈ;k# l!A+7l owi?E C&$ЉbFHo4JD. MAP}x;o7RPLUA!VTTivb]SzQ# 7Q ھF| #+:a(Ug\|:qPOv>ZYS?t+/&:86@d9xofPۗ.6&8&;Ot>j{$VsKcp֬uD%Myz1 8^Ŵ8!IC{!>T(LJoaB"|QGi(e&!*dMB̐5 1Kx1Gx1Oxqb5*RuEE*\ZrOs@6 TKvd| nyF_3ۉ \'`zއ`Z]E</,M-i36MGKSMg/Z\a*b98):Tʹ@ ).d=te]qE~%U_O7$x. 6N7{M}?HE &" q|~u,7 r-OaiE͆MR`ydVݗrG޾n#DD*#(UzzekMOƬ*x$)7>53bn> *#D. .M +7c[y,[t ݲkײd)Iأc}` :taE# χ/ 45ح0{M`~ ^맦"x橇?y= [d7cy+/>pܩHC$m}~ȀsId uh_tvF.(J:d5J #e#-HAKZ^6c6wŃ"E͊Dp]/@("(18{`St:H+q yj)"y{ׁB"Kែׯ b' ƼwjrU?`μ ?1HpԴ+9R1j]YD2bbMÜ @h >t&'5r%g,^XKK/R}Pp (^К]0H4fFfς9 ȹ6i51<~iaܞ1&h4=i*]R5(3|wGmzRz7m %8~(+ `CΞmp}nW'=L?zcs;±=V{8;P\N잾{t<9ixsLtc+$٪"x(.`v]w+]>!J+cha#̾= PRGԦth=X'bT꛰mLD;LI/44L&#X@XpS3pYsz>j Ӡ1~("cՈM KXnc`{`d{,/ }ssg+"uʦ}wf!>UםJYKϧXS7{pؒ=910{y#.~0b_m U8]>. .m<䥍gߛ +W66\ysKK.@bLBFp8+E[<{M,8#"Þav?[gkAL#eqҎfTP-DH"6:gÇFF()t&rk(kt~pNcM {JDQ2O4MFp ӝP^T|-h4=3ָk>2wSOCmp8־i^ޚR0p_4Cߧx|VH,@y3}#c=]RUBs𥖜*L-n;8hx4՟!h<3DDS-@ Z͢T C w۴x>?|JR]z;zǏPѯRpAK[Cۂr98Y;+^)O8~.; 60MR6'02,t/gl/HtˮFޜrJ$D}}U,1%e-XGx t ~#f%[[#-M=w.[6ܹyz;3O^Ov,@ ӂ`VAə) MOi Lߜ'Cb&5P LD`C;o,QU;1۔mIvޒ['CLKS @(AX{ ߸xpYl130pJ YxA@}עe7 gq y%z˾dN-Ƽ)`nOT E3fiּ򫶄Imv-:fz .@U^KHB!_rEj}kG2k/(7CgY_j3eՍc6$oe? N7 'Y5wx: 81ɛz k3N2(Efh ܃8Xc(X$0=(<"~ٿx n0Ay`&C+܉d:I !7G1 w ϛyw,{-_Qo^A+I q׃އ^̙*ySNi r E͡04Nn>F ڄ ڌA[P0h+b5hdG0h|DA+4(&qg  Xs߁[A,Z@g:@Nx:-Pux$ӯByZg)0h[EkPosÜkh/ 0Yq͠ 1ixmKYa*15[YsxHiв1h[|G3Tm==m ZҮ%iX" f!ɠxz0[JsZBWYrvJ9~v>XmJy!=*ގsרw1w΃$|:~nuc|fOt/y~2#,@mk:0zwfX6I }ibuB=fmk"s'<},-oPA=y:vC𜥞=c`t#NJm[vJgk(mFIytt4# \T4[O a9I˙Fr\K9A I~G|Ӈt~=RER5H)PMow\l 9\ \/͎5]2h ~N@##` ' endstream endobj 50 0 obj 6745 endobj 51 0 obj <> endobj 52 0 obj <> stream x]n0 em˺s)W"d5u0Vm ,rUUN공tG Jr!qrD3sO q \g| )~\|"NC3#䂹B.S ׹ WeΒ<#7o%2-1aKBqOr? o&732G%5|,H[I413̢ endstream endobj 53 0 obj <> endobj 54 0 obj <> endobj 55 0 obj << /Font 54 0 R /XObject<> /ProcSet[/PDF/Text/ImageC/ImageI/ImageB] >> endobj 1 0 obj <> endobj 16 0 obj <> endobj 56 0 obj <> endobj 57 0 obj < /Dest[1 0 R/XYZ 0 841.918 0]/Parent 56 0 R/Next 58 0 R>> endobj 58 0 obj < /Dest[16 0 R/XYZ 0 841.918 0]/Parent 56 0 R/Prev 57 0 R>> endobj 23 0 obj <> endobj 59 0 obj <> endobj 60 0 obj < /Producer /CreationDate(D:20241025162044+03'00')>> endobj xref 0 61 0000000000 65535 f 0000165164 00000 n 0000000019 00000 n 0000005759 00000 n 0000017963 00000 n 0000014281 00000 n 0000005780 00000 n 0000012772 00000 n 0000012793 00000 n 0000014260 00000 n 0000016955 00000 n 0000016977 00000 n 0000017942 00000 n 0000020715 00000 n 0000020737 00000 n 0000052552 00000 n 0000165297 00000 n 0000052575 00000 n 0000057728 00000 n 0000057750 00000 n 0000057975 00000 n 0000057995 00000 n 0000060396 00000 n 0000165763 00000 n 0000060418 00000 n 0000075444 00000 n 0000075467 00000 n 0000075666 00000 n 0000076119 00000 n 0000076423 00000 n 0000091522 00000 n 0000091545 00000 n 0000091750 00000 n 0000092135 00000 n 0000092379 00000 n 0000111724 00000 n 0000111747 00000 n 0000111943 00000 n 0000112441 00000 n 0000112779 00000 n 0000144921 00000 n 0000144944 00000 n 0000145135 00000 n 0000145740 00000 n 0000146181 00000 n 0000156019 00000 n 0000156041 00000 n 0000156243 00000 n 0000156805 00000 n 0000157205 00000 n 0000164037 00000 n 0000164059 00000 n 0000164258 00000 n 0000164677 00000 n 0000164949 00000 n 0000165032 00000 n 0000165432 00000 n 0000165488 00000 n 0000165625 00000 n 0000165845 00000 n 0000165982 00000 n trailer < ] /DocChecksum /FDCFEC4FC38ABB92FA44181A956B1BDE >> startxref 166153 %%EOF hardinfo2-hardinfo2-1331e88/tools/LICENSES/printerSVG.pdf000066400000000000000000001161171474767047500226550ustar00rootroot00000000000000%PDF-1.7 %äüöß 2 0 obj <> stream x}IdIr=~Et4 &$@iA)A/>[#+X=M:$)狭]npק+{[Ӻ}iuq/n]iyr;\{fw>մ5f-IUF`) t96}&%r,=^ _p.97`mц)#iM1,KOW.ҧT2)}N Os4`YdKtbrMwoRDAbP1 ܮg%py &{E$l |e2%;CQf ihnOc=-1Abf3'"_q '\nq"a/Qk흹<`L`|&N>`tr:;M!^i5@zbZ* .WNh`VZOC0_nu~F'&`"+~lB"DR&^ A' ] .2b.r/&9'Y&pP%P7!.` ^UUڧ7lDPp^+@i= cS Y,G[ Qj )9bdvuWD1 lb"}e*Z'@6)8)ftl))c`au DR!8)Q $ -2B4g& ?+^"n'0%vf H Kh[K\LQ0tR EnB$4h lv`2T5Ȃ@3hOj!6tZD,!8{D (47YMu'{mزTZf]kB_}该PD&SѱwN| W* 7DX2ȚɆ93R4BϪ/h|Ǚ)PiAd4l(m)ش7!ED`P2A+2_Ԍ}i$)"Plڨd45O4O)'n1iS\W csa<1uj_$mr otٗi XmAqj܀ca&؀˘AI^j탺eo2r앪 МI8޿K!hg 'nppQOǬ>2&蚛f ~^y ًl4Z]hcNNɆS/y Aʭ#Ȧ$jWq .;sˊE&&u=m K*4}rq6P4mG_k0nG='cVWvsv\ A܅q95Z&v^~ץ3h y)6[c5v6.r\c{hY=3 MxmԉA}G DVkY yqJ^ bh5LV`!n|6u>걩6yz4ճΟ_3w~[. 64KMetqY5$Q%ݎAv(Y,Qneޟd_po2Ԇ[zoW+}?^U>P~*>~犟~?9#R~'?~?qw} sj咩ǨSG'tѕj s7lJMLe:5tv2uOҷ;ѱ}8ťF{O~p~3b$oy>،.M\-y%X)K"Kh.Gx-^}ħy+*~C?pQB Ϝ$}M|]#s$k|Ks'?}Z18jz >dO2 WB1^B3Og1xbpȯi!c)!唒Yy6UazVSH眞cʘ\麢)cg<9圅ٙ `p'Q 㘇(Tah$2-MM_%dCU~D\fE aM.:T=jx79%aM"9aDK: n&`*+8岸qzq/ .Ni $[U^qUy, V$`ĄӮ{b{W꼠Ћ,l/4N,OB+/䱲Aʕn6uy*"EPf\UC68B<gKiﴋDMKXyvgxCQ"peݡ9pttu ֝1R,1S,t1 BxN "`N6&~XGb?31cBd %gk]8qȱq`drϦ OFNT2.KgrǰKO8RyNN"mS$Z\:IKŞ$ݜ% CaX -j_pA@u]"C]\E I@\ K/<=TC/g)Y.2tj`PCYsdѝ+ U*3q0:}202q1" &q2&2i 3ph3ɗ]>!nMv«d2N?56 ?_?昹Tu!eFpP\4A CkdHcMxmA>BpaXh-13$v^Ψܴ݀l_JntN46 xRzYz2f0nBͶmD&r88pϑ!rYnQpxnO2WvϽk0[1#t{3 w;t6Ű> H ӯ!F{nxϸ.kFE@q<pzᘤnikB!Z0{}AQQ=iy= : J= Z Z= n ~E~E02c!*( ٖʰm0=B.Z`.e_̭{Z {.Ak;<-ÄBx][FK9BW=8<ƨ}Dicfbf|icf$fDPhffgWfꝕ f]̙ i /f*YHlxِis!2C+ˆ愗uO\I𲡽>,nY7>sN0fmq܊ ;$rKn6lZͭqY7׾skAg#2|8_7,9~8sl9>qGlq&Js8Ow{q;< orS:|FX:|fl>? |͌*u>1'O=i`,k/<P+t%`˅><ӱ=Q{G'*cG,phRo+3N<u3`VڗEDg12 b@\*4407yu\Yѣ?p ܸI 0o2^m`%al(crҿUgm @蕛b^i[HG1w1$'냣hlxhOnth4A U6iWOcƶSxĥm FklTѥH{ F-TxXLꚆ+P6XmS=`7X>U`a^7ަz %qqʸq9uR9ݖ9s5t4Auq2&٥llC.n]o/ʳ\׿[T0?[ԄO gp)Mbr5O5Q_&Gω-} ! 7ˋNr"O5]n `q X An,s1㆔,}B>F!4UA'>H4᩷)ޒ== ڈa;iio1M{DXx" K Q8 e΢9Z|a?R($^fD'uN`yMdbQ:dfN&ei >>Gx1:l֌7 ՄkOńϧj0݄26:b(_>FTUSs3b!4U>[gZP5iJbd T`S;4-C0qei.LURH;sQUpSҡ+@i+Sdjf C5q 'v=#R. %! \9'A5Yg$aAppjTYÓ7jhMy!1*QKM+$vp8BcNzWAMٷM.A1,aTHJ S?l@W t($M'|Ǧq |K1<*C$dۚ옭bU[ ^,S.!i$R}OS*OPh Mr} m QBۼjeButBmCƛC}BirhP d,mR54nr1IJ m2Үou*w#+v,"Pg&+PdG4 ݶ!Lz/- ,^CiL{, Z ݏ!a  5y[qyyآ94;%妰h2q.o u:kc 5墉soе1[7fF>o#+m+S 9ؘw(27tx:lqOWI&&á&ЊCEƂF׼ݼs2;fkƨX 8b,?]6u.C)5kpkFͼͱCCpV>׈U5N2@:؀ʻYΆ&Hi[ w+cBvS rqY$Lo{ xCNJػ@{[}D6PcwuQ%U)zt5Ͱl4x͙TĐLb&yǤL6cڔ A5|'kQ.}KgSUg 7pDK6+Yj=5Pkj2X3D;3x&; 31˴)Mu*Qv}FNڈ 3e]RS:?਻u$?F4̞0aYr*s940n.-H z;f鍙DM{O\}.>}-FW&N[WH'+figߡPr( ȡ&A&a&jnj4C1NT[=׺\rMc.oTF\Df<= yt>>#р$z#2ݤb1nr1YkfEruUn{Z_CF^q/3:YzR&\LrD`aǓ&ҌUy*TFl:Tfl ]6bLUn{LU6lUvmUv7h$dP d,mRu4nrQAߪl M2ҿҬoi2zd${{, onKѡс1 !xC H9.7-M>6ǝ;Rm탧K,qlZN%=q:]W^O=sgyO{tqg=>]uzcf4qgs봏*_g:3 =;J;m]ΛC}NC&!N NN?69 696I?t!,kgVM|Kw03ۃ߼:{O(EiO ""w|0s 5Dn$bn4R9!ܠ$w- sX7Hh<%Q `D+C ?%n7/(%$T0%>m-F 2{) Ɋ|1Fn dy} Űa^DPѢ<86Ƅ\sbSՔ1i(ig!#DrèZ5Sj͐az gm`أJ@*sai&,C/G[ϥG=ĕl)ͭړK w P iKhQ1,}bQaR64 &W=sL.Z9ÅP0(B*,?/e z*< EHBU ~6_.zc4GltsKs6;$1;43+$5ew,y33it4pjEdͶuY&Ӈˀȿ ^\aO 2>|ЇA>_9v96DG y4Z8wfVr`185LT#y5̋FeMKzdxDR5Cy , AAD%<08qG@ dSL,iUozkwxK،볼w4Zv#l 7ӣ-?s~>=,)zo~??JӅΤv$E0ox*Wm}{I5^R!C _PpBfhOsQ+Lw)n2XTk ֵUC^T宙罪p[-d@;-^W MrhuɡDZKm\n\*+V,{{uauU|b&Z4tcrCvn'niu]S]ܝ扻wcZci,羂0L,ABbbBXBȤ:J&V8WˣlLchiiMWU1nH{fM m))0[EK#MZAM: 4/lZ18 !MUV=Vߋ$|1yߵJ`^"hDZೣX,w! ?nQQ|.I[(ob:afӋfi&ʨ&,aϸ1I'7&onMݴ7yǡʏDu~}W>\ՇpU_UJ}; Px<-G9kIOvk9AK^g,[|?;(,<`/cE9}Gޥ!F.Sz+ '^.VT>qTnt,Һ{^c"<+OW NCD1D+er<签Ӛ]'߯foc|]$l8d+h7Pklk2 Ȩ0iSNw(ZAdܷj;/`caO%֏jR?z9*pXр{b1Be+;؋jX8T 8B־7"' Iby!?ci=]ˊֶL'ui0T[,P^K% 4tt3|s[XYiXR<{k3$SK#U@ M7GK|MlhoƁ@K˴5̢\%&kuuLy!fjUjvQ&W+puNS$ELdK+$ʊVk3WfαƗɥ]]}aO!.\N"u00.pYF03Eʙ@/]OؖrpvczU-3m,=?N+ (10**(1ʊ=ŕKSЮ2I_$8u],k8J5n}@=XθT<_ 2!A`t_2 H\WIsbJ+81JċZ|Qc<1\5{>f$|fBfb69A>9~m}ss~q Wa (3.qf] ժwy>\zT!<\]wVp啹w&l@:?nF@GűZ=0-f4Y\ew*M@!>tP[Z칓)ԚM=AoQld+TDʔ,YRg4Vc }Lf@,|eǁ9HʯO$E_Ǵ xt̡0{}daw2 &is@yaoTvL|=f 1"NhLnfIqL5;vw p^x HZX t">S"|-(a`tLáGanGン|Ǟ^i,ľn!#06 oGj6=< iٞ\.1AuX?G>7RL9_  .cc|&av.#c>G([27d>uE񢅀(a9m=5zSdkmK'ꖋ|D)#&tqK2WڤFeVq) 4RGI9G|xNog Oy<11*߿X`=9=:N5 # 1F)NrMf5-b^v#P\+/k1@:*8@07zM mX#{_zpe [:‰'0Z뾂QPZP_ŪQ\K—@Tj2p)p60yd;8w^@mi10R;_lD<RQO:e MtZ\@Պl 8Gء d`.~MEfXDRѦ NEjG@8iKtcһT Զaw}p0"u؎I`H?zLICfmPƽqⶾAoS,!ѩ '!NCu0u0+eu8 4^UHƘeK#~+03q&i010/V4J]})`ue}Ǡ/\=-FNJ\PaPXfmʡPZmQjM{"Sq=#3>e3 N&#٭`5=cM&+nqC"6at{^epW_#=}>Ӈ{pO?t(בCC36[ւGϽq >,jܣ#1)ݧl_;Iu':Ȟ{5!f>r"X:KO"{ E)kς\ QʔJh;Yobd7רBѷ鷏Gu5ƾ7M9gnn]>_qn Bz%~:t%s*A]j1Ae_eB|Mq64aѹ6D*W,\1z2CT@,lsۿ[_7yAT俇WzR'LQ*w'c[u@\,Syw(cލlj@0KlQu?'Zaqeࡾ 㢥A]]L6O@oB: BPC_wWf45yD 152p-L sJ Z$Y%B`=y9FDB^TGbl "'[v*?i=/Wڻ7J|Y?Vѕ(%7 T iꁢ5JX`` xkb !i hpEfβ=q,LLa@1F!>o+G#)ڠ)B (P >NضQqy5ͺ`\(t}܎f ]ve]jrpCǢoFj족 CVwx`O- )"ư>8F|ta ,sȿr wILx\hxRQ fcE/cl[pZzAlsÇzV˱U\:L0Fm^3Zw0jM; MKy*/~*x@ #AU =2Bp+ d`$eG0qTaP~f]v{5L0Oo6T/D ƁuY=8* Ke4Z 10ţ:H#B-!]Ā+s> 6xbxuanITaGJZk:q;zy =1( 3S^"q!,Sa3J=[띴bE4=Ny@Q'I 30TXJ&Ll8MDB݁J 1oH\[B ctӖab0)V=>Aqw SH[(QyV۳v4hT :lr BOK!mCJ)+eJpV.0pf[1t(o@tNBq pq|?%UkL1/Zq6]9כ &&§&IF&ws3u3wC٦EԄ$ QXcmMÞwIO0YaګH/F|_e><ׇ\_sq=ˆ!ec6F/ SV -=].A;* BYptiGKOvCd]h`͜y@ x"8;k5;luL XpYtReKMT+.t ᄘNxvR7(5 p6h/-e*ZR j'Nc`{4 R|34m@iyWb r0(&vަ>2/҃4C=&1@b F~1A7`X`{qB7^LFp 2 SҖRw!T2d-B-1_Qs7iCm2Þ8K{b!m)8uZ 4ΰtp)Iۉ7SV?Ϲ3875_qwj6␀s*3}!C(d"(ekV̐C1BL'ޭ-Ǔɉ C Ny7ަuuG:vӺ]q¸qmuw칅s}tu&eMːi[qC7.\pYoc},ɟo+jO 5](16UE"E+PǑ:x`yK-chBr t8ǜ盘Rɫz)TUyݒKF IȪqFx)_XT_A|8 PAcs—Sb-T}=sdja=XFWX(n n\IثV:VSŒ}| V uyME{"RB t'^AU=\ugY CnfI%F!͉=jHs iqΤ5/rg7݅= jQDCCq =yBAL͊!m.k),?J˻wP$"P@\rEoPx]6Mf ."[%ҍʸKw hkh}o\$T]1"%eࢫԿG^He[lnn JLps+5Ox ꕤRkb_¸,KXwA'B|:UFMr.j{=0zPB#3Ef=ʬyhZ=ӤɒfB%fܤ4{ް31.ob3"a i2eu3:L5Z\C5[:"[K/yI9ȒFWF 'q~5z4$Y$&@%׼+ݫLLn`tH}X4$QS_?n (MM ~aX(~sgezl"Au[1A:4%o꓍-dT:i''·idtMW!Ϋ> ꩵSS3 +Qi֊Ѩ `ubtxCx7sHP'A7cp,Ф7Xmb0-+ ӭIl\@tFިC.#Q$ 1-c솣c,D*2ĔLLB pYa.LTu+5 CgNXFb?171YZ RS\a2s&b]Lbl## &`2˗eb{T P1J\c|J<6L{g ;<ޛ\#C8&ߣ@9Upyg.f};)yG;jgWdl%E4N.-SeWdz ռ6`D'bZ^Z< yqFJJpuKmϧ1<@ra[To~e\G`PcԏBzYV ymPvbɃs454I,bXq#UzlOH)ʹ(R:Bc[mzjs+[Ц:_J5['W獝xn-A7[;UVp##7훜g%} xkn-4Ooj ˷H.g6.seF*+<' f&i-f_vڑ=xcnż74`ǥ6FW]\*Ɂq*i+|e>˦eŞǢxŽ#ڻyF6=H_) 7GlgS|;d3n$/2 dGc|ɎE;<'L ХKs'8 s;8=VC4ZA 1 Ͼ|g1Bl:L՟RS{ZƏ+7ODQDM(*Qj==3-L@$/ⴚXDFM5+Nkl ]Mܸ}o#pyD9,]& .N.Nɭ Jg͠ B+?i(i NF97=\׊>n*zƷa_LRU;yA$`=iC (Rh}v`Fgٞ\AA[M 8Ƭw`<ǰt'{zG9fNTmB;tڢĜ Z/vf,0Bv]jހ3|w"pAP,\fR9{-P.NJ|'n씺8j2Ԧ`C_W6Vhׯ U;]*P0 r~4yy7W 8L5*>^2a}3xtգz|@+oI瑆8ҫ>([ﴕ>iWӧ?;QNxi;QezY@d%nN/J"!iDf_'@+=$ X38uA-&RAuEyWW'95T{S<<uUWQTrȚv:l] @o@n(CBtȊvX@y߸y|78?{<^?1˕~<~L?_5B_IcakȤm60 !»6PsP1q$}5Ow o._E- D{%oa^=x/uzON@"+*lU Dz a_x/8E}S/5{LD.ߨrɖ fΗ^'{ED6$:0/7hW|7h?e7Ӏ$SIDRr.F.V r?1D_U;31\.=m:PmQK,C}܏Oǫ6gx(&,Ai_&ؑxgv6cKh.oMQa& v=NUyL<m|GhoG9_\_m=3Dʾm9`=U7\SIa"+JFgzvB !WZu"z~dtO uvJ*K,nHE_PYz?Ւ̳WQNZ,aO7N)oeHdvs /qK2@V*]_;_%LW{vXrS t ++|>_C&eXňO28^M#&:W j,~S }xVlvf=lz[4~_vKm*@2G>9]/6 .v^d v2I=CKWs |€{]al{A!Q2 2Kj@$ΡknnvǺjvm_|- ӞeEН qFÕh@Z?W^^rJjԪᎲn2YKexeg15#*OVyQ#3 *2hQhެeG0k'_ J*%#Parfw!XЖ^ V}X%\,Q[Kx= }KXThkq  zW\T;]W(|\ jo}69@-ًq-v1L_zSBCWD_"s99F-."<;K#`18C^oi j5㮭7B]g:~~Yp֋:dP<_Q˛}"F0yB ص cpȇOp̼}jhSǼHF p0.k|7(=<3G "&f')&d`ZiI.}3-皃M_@d;dE R'-,m+b*t NfˑM+GXɬlt,%!TK_8=(UmhGĠZS+3^ "%_O<n|_6k.o)HG5N ]`* ;UZCnD37;^Pǁ@k.U ~tW |IѕchZ0#;RA0r⿪9mfByolZ*Lj\W =߱lJ'&7bcnHs0RzL( 'gpYZP؇*/*=VsPep>1fRt 7l @1BC|?FP/)q5$ ;X%|eA6lٖ4|]*+5O{ 2%Z0ܓS,B0cƩ Yy,S񒿜4z^% R- n3VFMU ݳ42~CobPȌ屡i*ѬŌs/=hiDW1j35aXE):RFc(gަjI=Q;x )R0b㿪Lm"]|.Fڀ~ha2G!Z6V`ˆmWHh ҘUl)&9[ ~$C4 V9/Uݐ0φ>҄צcmSu7Jl/7JDW*sˢM'9D ]D ށ1U0ށ(G 8pu#!Di}'2ZQ;r aڝ {sl->*įY* 9Ӏ`f>PI:ZФ0HY |f('|`=`֬YƆAh>XCLEEާ!nϢ@(_vBPA6. R>"x.Nۛ S7'QaT ոIJ*ݢK=FHHT l/mO$\_+#쁭Œyu1Q M+Eq233h+=:g_^Ako] ֵwh}jǤW$~[~+C;wc#Fg_U da$nO`TKdZv]Jin}.{Cf7=nnֿ}n{:6I_0$+l9X7鬡5hcM{{h@*ƒ-NeT^ 9[sОd-_dD]dOK_΋zQ#@𒽳GڣevɓfDU%=`mǍQժ׹$ƌhAmʰn)"321Rbn;֬O*Gr1riN;0&RX}|l`Ae;kƁ3+ gc1-2!5aN1&Lw]sM&e岝M3 į=}v>¢xfojQWCWݞA>Ow39Nh[krjJruFj + igtS',3̖F_T X,Ϭ{IvfqAHKF4UYP\gHk ` (~N?3*wOSCT@ŗ_NBT}6#GIηш;â2,PS! Hr'ibKiT+dٽ˗'q.ҌNE&|h>#]4$EB^ɬ9kU <201\;JbdRt Q%|+dϿ TSY)ZX0@̯jEIN3X$se֦rYl'cO`֞!Pr%Nf12k33Z'y8^2DD@ Spze4eĖ=q_\ &[޲I%n33ؔ0ؤ0rҹa&͸85JU5m$#TG"BvAUK"uΡIHhNS5uPL~bTq[gx30Ϗε 9ԜBǀ7r!ASgx#1H5|?tM$lYSa9Vb$x51 yaS,*D׽0!^K?ikyv-#\@8ïZkIi}0å@Xok*@,#EÂl2ݹA(y: !2˒cW4 *80e԰1 5I @r׀F?|.,n59 @ 1=#I@Tf'@ k)C@nVTsxYGysUxw҆iwN-\XU#Z39!Ko2QBU8Q`5 `Svٙ(KZg2d 2EHEuRR&be2 PywsFiVB-&>\? ~q14RL'm 6J昄Dl֬Olq얱MZ0,ܬ ʐɬD&ۺ1œFdGGo> stream x{W_bp !ɥ\44eLVSD"dMK.4Lk3teht/D.S)|Yoϭ39g=?Z3~}.Siaaaaaaaaaaaaaaaaaaaaaaaaa1OKK۶m|޽ӦMKOOOMM4hٳnݺ_:iU'''vڑH$11ݻw6,...Wԩ_>F%3gG!2駟OJJի5 oN^^Jk׮;wrb6mH>`K~'EEETCרQcQN,X@LRꫯ|׮] t|o6vؚ5kvЁQfΜRҥ q_qR^V-LzׯQIΝ{qljwR'-bK9yy|޽9V}0*:qH:99モo믗N:Fʑ:lfͦM;C999/lm۶)࿣ WwA@믿XYٳg3o[l;tIF?,}buzǎYb)߾}{Ν裏FxjəO<򸸸^{/R1޽{98LGnzݺu!+]^x!7ұ \{,?XoGUz.WeҤI@oCM+zȑ# P05 znYfW_}2W}/<5W\igϞ5jԊ+bͷrRTT$cƍ֭r4lؐ_z%,}ǭZ:/6SL)qWKJJڵkR_h+%\꡸٫W^5N;mQ:7իGAx_j.T@'lU]r'ZlYA5j(oФI{ϭ%UY=z[-k1ω8e.'Ov!ΐ >k!usLH233c=۷oRluQ/c] ELV_'᳆ vر]v7oht\p'AsE\K"'=,)σ_~Yyg{kvsE5m#K\~}|VV"5 ";;[+Rq`Ɍ=3~42`'SN9(L)Vڠe˖^y啑cá' )4` .)k&_oQ^݃<,_\@ R^K9ɣuw^w4?wygx8sN |Æ Zso۶-,[o2aڠL 8Ptꩧ VYb *X'qqѕfCa6<ʪv42W1T8khxD_psj뮻ꫯugΜ>va\Yf{Ϥ(aI>vZ׳3s't.?^. 6L IG$YX]Ido{#Li~Wգv,UW]&wMʉIL4M.a\'''Թ婧zl х%2Fj6|2ܜiGІX+ڳyIlDnKݲk0ZX!Henbϟ/ӵaR'4Zx[ZȈDcn?GӾRpg$yyyRNΝ|F*7"KG '[ӓO>8Xb̒@t_gްv!뗚ӧO 1ѩTӑVA}.at_~hdvCNՇ磻={ЬgiZhNceΠD@f͒{LJb<F>G@T+Ug2/Q9sH!d_~\BH]X 7+BtvMĄ?<3Rx)M ܨj wC#2Gn&j'gQ y)SHŰI8sq$9a\WR9+Jqq1\sbBBɰcRcII97Lu5zU6jՉ(nj#>s.2ҠAϽ`{zwB߿~J]Xp8+";ȿ+CN QȌ3'h[B)RH6{iy7O _S$fuQA qySpG혚H4Kv94%%%Ph@?}'?UXtG`=NO?l%#5 }h1M4 IMM堧OՎ%x2{*=}&ܰaѣ7ocNgZjqC \Hhbkժxh U;"|N\X5=NHHpΐ^!/[L6t~˖-Rkx_qXAiC4ncN܎b9ӥ%P\KSSBXv'ތ"wW(K λgnj/3 [gy^1kH1kW:ȸ9vf9!!+J`Zu"_xQ cլ HWGd}jjII QZD}y睷yf)c$%l#|_LO  O&GWHXuMٸ"u:@q3qɶիդ޽NޢE =y@;R/Zj[=..Gw„ }XƍU?X0ڵk@5k~3|p>Yèo߾VQWޠA> /Length 62 /Filter/FlateDecode >> stream x35г4U02131T252352(E M MA"0]0.S4sr2Ҵ. endstream endobj 5 0 obj <> endobj 6 0 obj <> /Length 96 /Filter/FlateDecode >> stream xU1 w^CD0=HU@%w'Pɉ;Vݦ4+إCe.\|N+lG&K*<iG endstream endobj 7 0 obj <> endobj 8 0 obj <> /Length 69 /Filter/FlateDecode >> stream x]!@ @WFlv ivNpE+esfsx> endobj 10 0 obj <> /Length 177 /Filter/FlateDecode >> stream xm;n1 D{ucHkZqv { T d\ c`BIL?9Z t6lcXa̽f6*yMm,ͪLq x+܍^FndIĬfCTp'N sTiVp~[91LC endstream endobj 11 0 obj <> endobj 16 0 obj <> stream xzit[y 6b_<\@J"JDke9\;9zkfm;yo$n&ǣx6M8qig&IO3q4=P,g̏1o{N,"8>9BMu-?obxCq م{Ư%, *g33#0GT0#WYZy{a kMgN{'dV,5F(bp4sdv軝Q}ť&g5OOΘz?Çp*5l 2 " MX&烏uU7wU#gJP-"/|@W2LMŒ@(JId:$CrZB) Rd?}Rz34xELZ¡tZ -̀)t^3ԨLG " >`%Vt[?`T hLkF:aOׂstJ3:TA(Badf!3S:%KrR2)HP[d rtdW$[w(;"O0ocpYc՚p&!YB4bc ;\`0yW°/²%t& t0X`B6cf-GMIV1!tJ&p?.&_v1 J$Tvx396$=U #T'9Ln7}z9>ᜊ>}᜚>K9>K9 }sZ,3 Iд(D$FK^ҹneݺ'BIš,*s|~O*@>A>3g*>A>HX> ۺ'Hzx2L A>CR=c#B3m"M7L3ڜ;:Su 8oj2N#/t9_dUcؖk*k+3,:)Im*84o!g@4%j{\!AօԆ )M4r안([-фLOD[&iN໦ ʹ:H"[!vMJ|pNJ(kU2xfd5b8E+.vzwDs*IS*PL(*^[ `VTt!n5m[{%.nJ}MTYMEP)ʤ@RL!]d#kq,k68\0qGjKr%S>t$׀;6 nx[ KCaGXQ> `E'gP|,:uP'' tPk K7]Sh*BZ/g7$͡VvhK/*zQYSA!=t#ᶈ Q{ۤ}ai<;ABނԡ~w" C᫘ fF(N7c{( _\(fP:| ss{)>ǠA(&螝L=){R`IiCYC9C,y2(tEÌ/ -0(tE/ o]3q6-;R1(f$̰N Vs`(6h^'v[9uxL?өB|<&¾H>\=``ԪTyL7!˩p?K9۬ӱ E5%:bw~4ޮ xb Qka'w'Ķ$y ߅P̵ `L"ڀ֘D]C]@|cIj [v{>PK\ <!LuvZT؂hM%!Jpܮ j4asrקoClTr}~xlLx͌mTnK/xB57HO9'li6iP).Bx_‘хhPuٖҝ&*K=]3C I?xdr5j^瓥5\zG~o)?CG"+G{B^\w2<:GG_G-fʋ.{t<  Np*4P8-VD m9AG<",(-HKNX_þ+Ajm1ڂNq|2U*;ُ'=T6k߽[Çw[^#ueۉw@@^A>Y~VߊY#.gP۴r0aB@DeZ[dyAP;qtδ$Ě=3JO'[*pS{wS2rVNym`dv90juߘ@1;q8JybQ@v=% -<iٿyt)H!U]zO 73G6zڃakXŁ"UOUQh]fބ+D55 : Z\ssk (Ro!\Xܮ믿nſqc,? =e9^9vuЉ>jG_E&@e/B9._ WӔ ƅܙldWVى[횋ev=S}1Wބ}hbӡXau/>wpo{h֒b7!+<:?U~܄hvÄq#0 UŘAS +*i՘JCv2)4(&ss~OЦ⭧oENw`Tj]r šG ܢ?˽fQ ݡl+_d!J:RX$DisĖ&={{>#WyokiL~qЎ }j Kcr3jałFYhoKso{M:ϥF 8W'<*^鱪X0u]3 E2P)z̴rY;TQc1CVh]}liLnsSLCvj9rU71HDx;$Q ˧ ͭ%9M.K][TҢ;kCGtF.6v% ˇv[5 +c3cC_?U41^Xx 9h(JJ?B>:/YlVn0il"JZgߛz {m>+Vcdn@ ǎbNHl@{~bmUUAhIm  g5/~):XņڍBiz*܄b- 폠Pu<g76FbSeSYbW( 6dWu Nh ⊞v&++ dN[\Z<8=wˮG{o=sY<{jKkKȥKygj5 ӛޫ /< U\bPW2JٕW3̐.4Jzr*eܱN<.*#g֟G*jÇѹǞ/f.lG㹅gㅙw==k# z 5۝]*)t+pz,Aw{?gP5 =˨7e &nh/h,~|oI<g{ rmR 5w8&@y?q~¿yOg`@siiK|*ZV"OF R#Eb+D$lF"zz濏= & D;6f% 7tIpn9&bD)jÖj/&0Gt|D#Oŕ`|PJ?%>UׄyL{9bNרHQ,""v6Ҍ;TSCkiT'j*GٰMQvBDh#Ӏ e$v]rB|`uiro}辳=;on?7mM5887'6yڴ`3<'Z[>Ns)(+XZBW/sh i%nZ$<2 UEJ 1K L 'W9Ԁ~*h F8< A)֢Z CAh;V lNMUUˌ) jIA0ctRT6(0|uts G Ԉy8N mhff9XK `C`v@𜇹hՌ\' )2BXu ٣ 9h ,QTN0  9ulg+]; v4( ٶ꺵FyPRd< h L9X+FNN1حwj$AEq3&a:@cɂ^}I^SJ}VfY6> f.28t0 lN} 뗔a'Qiy2QwNdu,R>ro(,2pJ-*jKITK@%x.BYf1Y 0ϲ=`|8]Oo0F>C:6{3N  tK}1Tiga\,Fu }Qcws?5/Q&,It|5 8A:< LKJhX{- Qi3w}1ahZC> endobj 19 0 obj <> stream x]Ɏ0D 'E0x>dA|,юXhK9(z-v;C?؞¬.p if{zp;q>ǧzt9| ֧40̪Zu|n/-zq??_SGv}juQj}8YJϔShQE]h+ڿA;w1sDbM F7]e{H;uw54{k>[x_.M/̚ ~MJrPI *0AjoWd`0dϐ NCfC? % wRzd返\wfķ7^}d0YgPǒ. d].dJ^Kj%yyxҘGiLd0e>04NȒ endstream endobj 20 0 obj <> endobj 21 0 obj <> endobj 14 0 obj << /Font 21 0 R /XObject<> /ExtGState<> /ProcSet[/PDF/Text/ImageC/ImageI/ImageB] >> endobj 1 0 obj <> endobj 22 0 obj <> endobj 23 0 obj < /Dest[1 0 R/XYZ 0 841.918 0]/Parent 22 0 R>> endobj 15 0 obj <> endobj 24 0 obj <> endobj 25 0 obj < /Producer /CreationDate(D:20241025162232+03'00')>> endobj xref 0 26 0000000000 65535 f 0000038594 00000 n 0000000019 00000 n 0000022765 00000 n 0000027506 00000 n 0000027770 00000 n 0000027810 00000 n 0000028109 00000 n 0000028149 00000 n 0000028421 00000 n 0000028463 00000 n 0000028844 00000 n 0000022787 00000 n 0000027484 00000 n 0000038389 00000 n 0000038908 00000 n 0000028887 00000 n 0000037204 00000 n 0000037226 00000 n 0000037424 00000 n 0000037973 00000 n 0000038356 00000 n 0000038727 00000 n 0000038783 00000 n 0000038983 00000 n 0000039120 00000 n trailer < ] /DocChecksum /6128B6D9B18E2E61733605C931242C75 >> startxref 39291 %%EOF hardinfo2-hardinfo2-1331e88/tools/LICENSES/processorSVG.pdf000066400000000000000000001233331474767047500232070ustar00rootroot00000000000000%PDF-1.7 %äüöß 2 0 obj <> stream xKe%6?7+@ h|2P5o/eꦮP6BR}Ȉ`0 O_v]͹zo~lh_㒿[is`oI^8=ǵ+ɥUSz:-}HSڌӜFhPTPN%)+5~Y j? [ʭ~\SO+7@cP+;Sk}{>՚*MI0Ihv\>7>]`,V̚ڧ@e5~/-%?5YA[[7lD;*/s7apClBnn@4#PI-T4ʡ \sfD&elmon Nb_v[P&v7Ks[h9m9R>$@ MQE s l @?*SNچtmShP[ 6r627ݤt$j k\;MqkmCmmd~u}B8bV_\3&V+QY3WaUE1:ɕZ{:~Bz;à9o/{ NǻѴqLG7_7bNûl`%AmNgZpcz:ZHf9 9r ұ$hQUVΛZ?uySi:kmWjW @-#*BZ&84XuHa毨ɼ#DjP=$LS5eu%jZf{DHRo6s5,r[=YrՆ z?zt?{uD۶TAwtǘ}y]@ Biث^swZo_nqq{h1CGb+SzL\=Dsm ũ|sh_즪-JUmR{l546p1 cb+[ isoJLbRqUh+A+& @'t:{9'$(EFѣIPssgq~K<740gw`NLy=ġLF M$XA. h2wU5Y lhi&.,9.gw9 4oUjM.IgmS]4%'6=TٞftdbWߥ#gk,|[6ap7LlGѡrBf%PNk1QN}gsUf{@ҥeQKzH&ShYj zhNbXk_Vx<GGUq,؍W'buv_eyHp֞Sfi2 0^f'0 :o85ߎ vV=}_ l vs50b~PG@9⛍}͖=íƩ-]'mZkdSV\SZdI@&m9@A2&'>XLOŦB̳[x:%so8/`6)<$:<9C)N~D "?鐽4詎,CblF9͹<-ǣ1\<YU١%nF~YT.k߮d̀PlG@޵_6oy2& ::? Vnt=N;a@=SC͢޻n'G I6ۃgE=ѰMU1:[c>=_ȤU\}YBvdqrȰY}^a mܡbgk3)1TgC<>4SDq^'T t,H9×hsT0&?Rꙺ?X~wkݚ\z ?;xQn/|iuۣ>S6[D#wq.)`WLM eX .%\Xx?7CV`> AD|`-wllD+gksU[wWhNNa utᏛϔS|Jg j3iYF&O @W|v0>OczT8W8u0Z3U5Sm駭"*K2f> c[/)op+W$l$7lnCݿv:0-դߤ-wUv4pe2ZWT^mKGmf-_M͔K[Eگٰ4+VmO ږWW;@9VgzWywL[W1IP>=`hW(,_ҿ:mt<n[[0mv[leti Q 1m'˟oOcme0}39]S`78GR$j$14 0),pɕ_ȠK%$ @N,`QqK#3ϓFHOf+cL8%:mh`e0Zs ^չJZ@ƵMјdnͅ">ɦgq1:rC m`ZyZ_1dc eDaz&٦ilt&m57k۟ēie8@#Db@ϲ4hktQJ8H 9P4Yj5lz.1G /TWu1<ʔn - 4iRN'z ~c^=dt8ޢS Z1+ȩB`۴sI.9wt +2KDpxdK/UQVlOF@jO+k.q͐r⨹K2$AHfnfJee;#kF-3pLWi%gEPD}Uhn~Tyu/D0m]P35vm_|xGS+H"*a\EeEW\tvAr̮44Np?6RӜ.誣Lm 0C[G{< Amt(؛Iu %N*!$ãt:5dF߳!˜Qq}aׁQQ7DcTeSQp9̌[9.1. y+N Qs]a-r=:ĩȤԠp"?3_7eGrS̴ꐠRu[d`,/ˌaav`I|q'YHU5~1vЊH^29g/<78ۣv M8305ÿafa_K1r^nF牶HYE.9i~8Ω7J^ h]GH0Bܣ^`7Mo*If%(+m6sZ 3+OM!8-Drq|NƓB7 YKl?!&b.pF>Ǝ{*5k 'KIZ&SFLDžY!U&-ֆ~D; ҌF W1*Ǐ`一`crPS(č}S0E wTU5se]J)"GbsS#@3Q&}6&H䂪o'cFk6'FZL@]l>WRM>ANuyOhD ~Cڧ!#B$:ޟrpu09u q%s N2=dNt2ݦlg^l@Q&{1)9ױFpeu\nardcpIMY$Em[ɌV^TStq4 *d mN/<0P.dK7*N%5=ͺ̦Un>!fVS@:jG%pUOi!]uL=JjWZ!ݎj]P%cG6= :GhiВ틦o|ԑy.Fv.T"˹FjȲ r( G*s @7;I^`Sԁ !LW&'Q.""=_CK$z-c`3.%~me_X[Z QqaLAnq"*Mִ6jtSNxrE=_u{M~ }Єq"|ܻH8rE_2STgA)%sd?15tm܋)W݋2x-~)7jYy ߕG}͕=%AY+.\"v_x$y䇲ev}9jKp=&襃{U=+&OqO|C}*\~}=d=鑲l7R̵'8.|i~RBKBL~=zw:{r(4Uw^_sտh=wAO[P7)W>ybl?hqL]Cbސ6Zηum1k>?~3 8s1F_©_{"?6-+ _)oRȯHv].){ʟF>MEk;X? ?I n}AϼǭˤݬooD~˕[9y0^;qv-ʭCo@o/1mR-Wo=&3mȔ2b8= z %v7hx 5oXB3A@'LpN@9Nfr8WKNV>=0Ռzqq?Pc)jBq|DapO=G^67jQY|r l0-n{01 ]zpZĉ }8kHei*f ӠG?Ԋ[8P+.4PAHsPU4_$UAt UiRQtEc@*\ڤB`9hIn^M裶c@ q1YJB$0l p!{ZW9hPHQ8"PfSـBsKtŀj57M7pohn 1`&eÉ] n6*ڸ#Atx>Cw4R/oz֝cP.o̹C0iĠ)Uwapwr$cXugiM]n ͆m~pchSÆcq@g>R4r}gf_R-%4D`_Xy04503.\CZY"ɫڒOz»̰G܊ #75|c#˃'ǘ̸$W坲0I<;;Ǩh\Ǩ_;1Dlsِu)IOb0*t!Z)\^Ǩh"y EyĨD^ѹlcԯxݭ~Dm ]&W!c2Q1?lrAΚȔ0nkh@!f4츍s[N%㺫p̀ To#>19By!ѬLfhk0.~򻾩|p|HR_:J>#~#~T#~0+~)|S1r}7oMt֌>[Cp f.>AoFw f>xf} f62{С{|>h?>eZ7޻fy7g;AjR\ܼ9hNқܨ7v nPcXPK]?=u#IOnzRkazpF{e(:+kF^sw*$5spqims//h>BBMUmsMnHXsmפڣ"f@k0kWjO%JY&*PA]M y `fH;aƵ視.ה63.H  ^䵿`VÅ@@ȦAP&{eCME 5y 5Y+6y6 % {эҰ(%4ࡦ8 :J=}_=@K{6?qdNoq8}>~_Dn+]^_Ns.ٔ Wlq_yY^\ޠo#4#pb@dHU2*v 5|hM<,0oa4rNМȠ 8 gx;g? ?PQ0?{Cg쁞i !P͈"WSUAk$]W9QnG5ZD]›Zj}q7dZcdٔʷ|(a @"ȔK5%5AJ[5amnڄiV㕺a[fyƵ05U1\sKLg_Ns{ŸYI(SR07v2%]#KI5Ԫ$M Ǿi(9?S><BM}ZeԐRc<ګ:5hb>YE=8z4u2/jQ $K<&L"uyC.h)yu 8< Fy!gn? T Ƹ "Iat\<lN'nq:-~C*Y0ѯ{oSBbA~uҽABUnW)^%J87 hWbXZs1g^@w/Eo1PP5F4MЦp75i5 /S-=j\ΗZz7a]TS\Gss9ث ]'bS}2މݧ_/J)t>D^&}eȨ|cl.2n:EsQG/2,2|@æZSS/N4lSw :뚳i]5=h嘍G854޺mmrD)ֺƘe[3٘ ӊK ՘-X3۰:\6jՈEQ9<{;4jQuOmF;i%kOSe_->~ E6L]{3ngi(G@%:h9E%< i< U=uɁk)F{Sx/DlFf yq3OXM];$,q]^7Wא7BACuQlEZ6V9Їe/DUWu/a'34س2{P._RgsAr=}*f@n#hi4^2 g!c[ Ƴ)  mȪn$ -Ws#Enf hyIPA#MȬÍ434s@;ۉ{U"*y UP̛sI ϑ\Rr<6+/_)4z{R]S8ug:Uȟ~x>hߊjGD$ vNlJ g!r#ϸkf\%>pCԎuѝpx2Zާ-ʶ;nC%wqc $uϥwfpQY@xXjB ˋ0`f9><ox@k}x>}Gp A/X2.k5d}x8y7>Hw?>H##[W0oĥ:\#9bB}%PID˓!?@Wi.%I/~mOB=owO5f%Q5~ a7^U?>ǫ|q?y'Kw'vuF&c ysD;:!ѨE_cu4 Gs5+˶Rd{H]RF4:9bsN>ʁO@G:O&ČR_僵v3:?Yu>`Oƌs {Dq,[[@}0ۛ1֢>u[cJgi-l?{/yL 2cFW=rzҍ,>3Mc":ħt@xaY>ZbW9|H֎99t)6bF>rwҕ!IA:"ke5_4'tD$Eq* 2ql9bӊզ7Ϲfm7|sz6)Os3ui?w%ygS;էsޡ-ʶϹPݩj|(=iou9j#ՆC|}ڡxR|:gcZ9XT9f޾N|n}d>}پl#r} XaF4!J3OFDhh.;-)zڔwMJ?b<+4㯼 Щq'{s.iFM^E|gŢe(Il>qc9OF~x;|H/ Q7VGޭ&]'I!jVD-IX3nT (ݻ)̄$.%Rx0#ܽ⅁1(ͺMȓx7HZX|N㎧~涫)́Ć92s&BA05?-F`@Z"z~ {Oo/kc{7 ďk4/7aL&uݑp3!n%OxLC=_ Tx_v_FeSMi'=t&kY>{i"CGTT.!WP~$@uS"_ZX4~/U& DMbn. '~vɤNw6ݛQOYCfBFzȤoL[@ȞiəJB2Ő=ҒH ! EHRVCWDx,0Wu"9Xa$uL)G=9vXfBsӨ)c4aVK3Î 0~hVzg7ru12gYUan6F9eV(r@*;eΝɥY 7+gZ (Gv&>)3|pJ,Ht MpW|ꃴ*\~ðt9fs6 95ȅrIj(eu/hU)r||Lk}y$Y|yH* L3)B!sCxВ@\b˩^An2WδQ2w6ɌEL?ׅrQYG @+;eFFz{)]_ RG>\q7ep.ԐS^B\H B*9eS]k2jtmr*߿rf9>Z.>{1^T`;1WG @+;eޣ+':^ V"7+$heFtټ{kq$Ok(rʬPȣTvʜ$QʔGUd'oʼbOHEV&W>&B^CL+#ٟBK]֫|9r52ɤ}tL9i^Z^҇XZ@R@6-mBͼ]qaUp _x4K Ep_3wP/ ݸ0:`J\=Qq<2/C׎:Q..Gq)drQ޼ݪp$P`W2%(w)L$7y#Vȼ\fG7/Ay:\:m/%8 4ĸ˻&ES4@ !V*]ׂQep=G /A|˝i!0(ieKPy;3qA ڪDc`YQ!Ƅ`<ޥ0vlLD+RbQּeݪpfRGa*pA{(^1ydS^)\dҩϕq@ER|1%U8JppTl%w9aKYh[N{Վ(s^2uxr`W2a(/RøG#9d 4d0DX|(%) Kq~_dONQuN?IW32饘VQH3h8x)D :R* AuA: 41c8w^j:Պbw Lz)&FfdQJ^S@ʍb2q;eyW6g=pR.k YuИUL/SVo/;ӴpR.k Yu*v|#s(%) K1~_ezڌ!y`pQ˪89dh!D\&)a6pR&k Iu<.J k HR^{:cʌ. wwDY"L&IRR^cU T'M:w.J9HRL)d\|S(%PCw+}e&xʪK/BV|(( e 1n_%2Io rLg\{z;a{gBq;EX)k@zF1ngZ!/釼lQ``G$G)rt{d7*"'QFv.DZQF5vʨ"ʋqzvHuAߘ^Jvz@rmcj!/ȱkQ``ǩ$gXШZo]-EW9=j06jоq5JѣبkB^zjz5!} q@SݕkR3SbC#z%k}2X)QyjGQ7 ڎ~ Fzalph߸ VJvrxժXοPT0X98 h5Cʣe[k: .pzߛ(s0HS聪`gjw epf2ЯՅW/U9&R{K@oo3>#Vf=t%ZMQǞ"\u@Ez IZ;E.9,Nl= T"@LG^NLbcz}߽( a3Ry. , rBg&AJr1!g 0/:0)Ã0( ٔ퀦ܒCDz=}ƤX 5ͅJ^tq΅Of~_3CT͋%5U%ж66xlyqƠG@xݪslNɣ-ALStڧHa Xư-IW)c|AHhdC=o  4*Won:ƍ 99>s0O\ÀqXZ8V3y@\#G?)=QFgV+ L K&mDT.I.KN͚nOн6M3b#xՄ5GmsjB F~eH}8>}ξg߇ٿps47_́gtg[' Е&ϱIciD`L4@mN~p\r|3~Ձau' .zp+DFF:X.dr.s!4MD ôI.m˗hДE.zfdӉ`o۝tbnZ@5f=RvI}wkj/uoL8LaH;9陎::K:ܫ\vB?I D@UU.е0yo?ӐĐ4Q @3)蔅dĔ ru}@~y_itMB_呣}|y85Zx 6)f 9 QCТTL{[f󌶇%Ty9^:G$ `V7}4 eDF}sP*)%s1赲V!HoQBc|\REW/kA#µC P=yGl[O5|$=eՀTI(ͪV80#ՠu̞_`Td"GfC`[? 1>ǪS?Ks'VʬM";"wgFTd6~u1 * `y# xܤ*<^}W韌ۃK'RI# TګRX.gu+C EsrODI}o+4)?cJ3uҬ^Pp:X.xnWNbcnd炼X^Ոテ* ZBt7d\Fc EzV*g%GH, Gfuy2!J2Gͳ+2cҎ/sdgfC'O:ޑ@ #{Xx #9C$0%=H<@',98ݫs</kL(άOyb.GH_F# !.qi@Ę JC$Mo4k#{ɰ,)K*ْp^e$yᩀ` 4|5_kFPI ȥo>%7:@.ڜI"'hy<,*FxdoݥeR4?0%wkbg_T9~_+w]xS%!A |(xst %QZMÌ.M)F{T1;Q HL"N1lȢ,r!YBri +hc1 jl^Tש6E0aحЕhJ{b I"h5'v,P$ |<]M$">kr69X)нe|ns֧W-ڒ݋MM'a|_):)zNSԿ 7ww/Ԧv]9 D=fuKX-qY uqVpдݎQK;hZqتr֬\GPIè&C.'ʴ.R%'&YyNԋW k90/rB 'xiGLPW&M I%O:OTfW:y޾(WJ!/d&F "`:DSσ v99DR4a%[pOUcz3_/G?^׽׽׽׽_\ڳ~Aq<^>^+Ǐ?>~ǟ\Dž%]r}?>~۟^?t>~+bA! cncryy_!r'qpY9o_vq.Ճ긏v_+c156X+>NK&ܔx:y_VzP<}ہwptfmxgwg;+~[?y_>ߜx_:tf+w]aY!G`rzHg mc^ak[8Xb7OP/뼯{ĕ>VJR\-K?U2 m<oU/uoou)u-\ [ʕ!J$/LV½=)=d aY )Y9X IЃ<PW,hU|+4 Q#ʄLޤIsd* 鱊#%攴&zi:o< KCoXd+dW;9shE2ҙD %+~B䪟,մĶ+/ @: d!~t &G2S@rY{4/Q_.>?ш(o@0 Gg5 ,HdGG5i(M4D4ZT9/XtĤ9ǻ!_dnՌw(&snK@JH3 Qꛝۼjv[,Cy d6,IƮȂu|tׅҐ3,p_вdmH@(b{tKnNcý(F.U}Nw٧H\cG]K660y/Ω#UFtrI֗WvN@6A$I=%1D\ 6z"Ww*\ȗ7c(Ӄ3TJFzʔdqU')t׶4Idd UVD>+ ,5]WqI}q#o0#*954S՝"/t'8>xŵ/~9Rd?չe;t.>-Ӡԇq{f:h>䕍>}oS17\+H~%rd2=ݯdG*"$FoO(1?n+%2_H.|yW]3L"Xm~_::w]Eff )BnRNE$B%S̡0}-YnHi4y)WhTk#Ut" |dSSlMYLGo%ys`)1Svb8 MD%2}ۏ6QFqj|5}GS>xTB}&}yqduc>o:n $FdEa#NR&!GM`?Dt Du{"9K\ n!Ȓ\'^F/z~WV |ԺFO.0 硃1MfLQYLdl[vuOd7[_'$]1nD_!Y.bGZ]lɚrkehHqMWMNY`5ޏL%1Z\ K~@5N{3$gnr[d5؂O&K^Krm%oM£$y ĒISqm`$nBgCja1HZ$0|x3A"W}*dvJsZY =0 96_s\!(|`uij(V0Y|`rpV/l+uhi#BE>O4R>>BD! Tzz->y<XK2V|+zoJ:rl$ %wMY,,{꒙_^dZJv$O!FG(Z_nH 6r 7d3 !L-L)A*#J<LỄb- &[5DN6«a-٩I- Ahۓpn۬kO_]0#Ĥ[ݱ*^@]ˊR>2::&>zZrSiUngf+ooh{"9ڑouki"'rEa6cqm߼o6Z>{uX2<ȧU%1G){ѷP*~{"եV1p)*AITKUy8@UzHmpxpa>]m)X10ؽc=1AJmZe4Q?ӃO5 [_8{4m_8c[v2o8~N LT1t<:bL7G> ;{I:ŗzFc| dfŶL.%s \pV9K4'ȁzGtU6-b]R@WW#0keUjR@R=BࡘZU} կ2|kQHU. Qa;49x)&(u{iPi-{{ӝo`dooo$w"V3>*LqJd ^*C-1 Jcé pHiCF)QCpcF2ݹ>>fz]{a`M=֪m\u'v?3뮇}IRi8ӇP)LFSr8Le[iDZ_XtlOw1ބ /3Z!s]~i?]wJ, endstream endobj 3 0 obj 24342 endobj 5 0 obj <> stream xZ{tTy{jWZ!jWBZ!^ծ v@Fcbؑ;Nt89I&9m$i&+iOӴ#muZoÆfo|h8)&WDbәoBI-=?v፟x/!R !≩'?:4Kc!Nyr<3VAHM hMb@EdЯpѶahy0!'3fZKO}Lfz׻k4!Μk&Z"$ 97>RI_1FO1@33I6-ւ¢[Qt=uUZ֒sxΑs!%;[,֒$%̒Y ᥷W|QrY5žA x#Oɞ$yR⁤7JFG>_#)$D:ޠѰO6h,U&W$3,s%ـXb䂢1Mp12Go4^T7ԉ9U# ebC9I!͝H4O"a 1E&ߨ%ܓkR HȾŤ c(lCձQm8 Qd# +PҾt*A[ZqbT#~}Z37aqDNRcFC!AJ=ޏɄ,b&SڛL2RI5O)Zls> fUhIRߠέ b)ht6(֑u*4=,nTls Ӫn},jVD[RRLSz8qi8X6na*V 4;C.!Pbg͑H+iEs@m ZY$ǺS5ZɸzAs&>?ƝbΒād,L\sxReǗF=Nf o|ƶzeyا%d>$}kufqWB#oPJa%g$qGJT\\Iqx<5d]֐DW uy ;ԠyYr蛷Y[_8kme8kp۪p loCa5͜U%{x4hUɆUs&ZirBtQC>|UC>ު5 m-mFzHXƶiI¤Ma15" }]f:T%Kߜ7qf5gMݓDRRFWn8-aUp j:N{Dޑ>Ni޽&֐^^'VaBzwDsI0L gB·IW#tu`4tvBMۖB1߫M/ kZ##Ɉ҉so */9ޮյn;ya-U$J"MCp-jDr؇3ULE q۵fvoxlkՊDXUvE} BhG3k>-TEDy:pgM~ХXT_)>$-Vv5W ,`T"2rh{no^[Ca =@97|}~`pAÁCW RW>v>vQx qg4ߓ'N=90qv888q80!4))|qCS/M 8tFšqgDOOJ8z8k 988x2+. _qQ9c <r}e G}Xi <w2'߯1c:(fݐԃK`*ҬT3|!X7?MXH}v 1"MF);De@t!I0cchk(#W-f%>kA$+`4 ;  ,-.!J<.[D|gyBvymnY[[ڢ%8thg6zn/;}t=,;♩ypVMp`a" y_[7:L (5Hz'OPY&{M"'X5xM.$}aLIr@o~}>EOp)8/TglQZ 3:GKsY+D^t7??Er_y!Ju"Ko%BB>*J3ؗp $Kd(PS-cWQmGWI0X?U.}}t[Gc`{ݺ-t75 m E_9~_C@ ަ.O +:wEācU`H~:/Cm#6CJQgngNR$};TZDw9&5Q =a**,s&]U*eݡ3v2D+Up]`iU)8ˇ>safH$i + ӹ'/:宋Oީmfb F#YRNbm6dC$ܥe骉2&/ r}Te{I1*0XuG\ڲ.-ol:5Ӆʞ^j<;7 mC/%̆X%eCê&aE]y[@ qO=0ݹZ;=L#$G3fv 9l*Q)gSLDxK23|q馞\t-+Pt㠚pׂ_#*e2|k<)EV,1+Od%I Z8t)Rw9Ujh:CS]=}ٽf?sh?}U_>w'i5XY8Q2oNI1%v[ I-,fUERnؾPɮg&OspF7O=7ط'e$X 2Dɤ2,m]_뷨ΨFXY,QVڒ{yv&drϽ(SZCΗ gl;ndRJR[Rݝبmx3[8Yi6~祽8n;մ+j}~ ~)2|\Ȫdm|/dj>}G5hݼd߀VV55U8R[Wluq ^\}c~nᓵ@isk4?=P3w4mjTWExB".i]rnܖ?+X/{EmAN7 )r^g3evP&$3~ /xY+5N_K&׮{v3q=rKDߏD1;_ȫT('o ؉. _>MTP"\ťz24&ucHoߨ(7[Ekoew8JPR *uQJ)]59`٘.̆rJF~MT,lVjTx3-5YǓS*`8I| pr:-|='bFB)ټ!JUJ˽-+hQY:"'u!^*?QqAvgP^zr4q uL +b*N@IMƊrMhVgFۑ؍6+|EHPC-o//>eq|fWPSfzS7po+[T䨱׮ً/v޲$\dG"ͣ 1 ͳ3?JQ(3jҨEi9t7rJ7?q(pyg9Eq\ "ׄ͆=Hw$›I( 5OPWH +7p8|Zj(:,pɭPh 0I=UGJk龹.N_"B|P+}<V (Ҫ8ApTZ"RM-W_9#Y-(,/~V,I%ɧ&M%,5J-%%цnzs38{FBq" e0-BX^-\X}ટ&.[yU?M'z=TUz$ !7?μUڪ5_k]Ÿeٹc[<&zzge{3m7ut>?oS~ﶵqa.ȁz"g c*?kMd,`&g|U[hk?_?׌ω35*1=U4FZqۣ{Ǯ_/*6D`7HF/'vXw~"Kvx5ܐUSB7&u,Iv I?"Zah=Y ^vWȐTVrm›@VJfo { `_Ai\wĻl3`Ixb>I=9Gn(} (T)H/Kd)Oɿ%i*4uL3l|li YZf,,xBzb9?`++Ɯ'H9_g) +KdyӀeRI&2B+ L*[H7]4`+bm$.".& 0`iπ)9/O0# X?$Y2C.Bç'nQ͐BF02vXsx2 ̳^ .2vc,uhΒ-(sy\6"XuLcA$3f16JkgHVoDqX7zWk`u)2#ྉDVGc7,㿗KMhN^pFX~׌R\{׏Y?g=-ʣcG[t_YO4V[ VN]VO ܢ#f\ӽrڝ9o ƅt-w |nF஦9GG\3_5ϛQyOFS&]2iL T endstream endobj 6 0 obj 6691 endobj 7 0 obj <> endobj 8 0 obj <> stream x]n0 qD.8܇dƞ2b]?<"L"?Οz>#b Ϩ??DY9ar_..^?Xn)b%AӌU|se endstream endobj 9 0 obj <> endobj 10 0 obj <> stream xzip[Ǚ`wI$x<@xD)^D%O$CJ='SI3UuAxwڬLR+q3ԬwuE~%˳vk 读!89^^ݗB!\4s~M\{[//p!!ayAڈɹlv-t +O[= .ͤ[wϞK_\^5#j>7g{k n5+s6& }?Z]`4-"txJ+DO]M<}Fڴ6?ڴ Rt~Ok>clc=av AtDl>ia+p?Q o^igyy~KҰS] =]IQFeDBnȵԼ1IU{:C33ҴQRF1c,qPS2 J^[/sAqe@јlT4Ch$6zQ /"6wKGo8Z*(Eoٰ $s[NL؁|P#XLEF\'nbckK^J>dFBqB{I1`E0D7R7 e}<)B'L&= -ᄌ)~B-hbAl:)@2rg)5A(6OZ)*(he$!fQNRv= 뚑5~/L q4j@B#Tܓ>LHIoR#G0rQIA ft"E2 "krAPԚ-Mt9JRT'VU`B߻e8dPv !Į )MʄJX<۬/2C/ S<7#63tɳzTQͱCt@CCe,L("`Ne+^. &2lgR6Ie[$Dxa *%2EE15@]L+1/ |  ñWe9أ%t$ =0SYQa!-1Ӗ#2FrdQnȆ(p:c' <:+ui[p- fxz mKeLmA)'YH%1$[`ޤske>ozkrEH6'0*3?/']>GJUm?h[6ۘ6XwJS1RpƠw+Ѧ#3&Z˟`GW"2'4fFy3t{&BǑ<(4a |:,=rk0jK`3TUbH!D۷#@ IQn=; } xU -c@Q0Iض{߉&dAE9EcJd$2/jD|$VA[b+,vvʭRKXpFפ4R78Mo,}}!S" ]aGJD%o5nЖjUR֔gR=j)3e4mpSAҥBח(J4kW%Qoϣ$SW&8wSqGJ[vqܩb[2ivێ=O]Y+bAy_ @1`꾨А+>ɧ!A*S}ByܒE?eŔ'$UyMt@Iz^I͖@!C&<B3HIk(H Zp8x n` oa6r6r0Jq(0Fq(pP`<2@ 0262va x :A4I4E EϤ@Iiz&f(N/s NN2(tEӌ. atQ,B]ZdtQh dܶe֓#>P^zpת8k HqVq[^`=?"<s{pk+V@~U)a( E"ow HS@8TaC)[,-p]P4ALFnN*su=$&}rq `L!x#4{=@ZN@ X$b1G L4xAy\z*|./.:A\إSHq:^3!j\5Ӝ2Ixz3}Zl\_)[`dJgHoCcE|矺v'('9a3==*Wآgh&*~RjRվ#k7:>SKKSSg2;)DӒbCHyxdAqjq%V78\]]# tVIm/2fo;ThyФJ/t<0O|e7 ;_w@̺ՉCٟeʼn.bo JmLY)4>L]/*b༙dĪi,UP̃ZhjRS88Wxٿ'>]ΧKc~˙AV 1_J$`7~xUS1s n, jZIOEIG b$yK˪v-PU *ii*ԌɈ;RW9?jjhv59AG'7qcMŖ͓}5-.`a_y*ˀTFZ@{{B8?("lOCt'\NK>j1-4>Ջ\a"*&^4{pX5Mظwz}}'&-gJ{9'ۨF\qe0rMS»i7Wxrhms7hw\ڣמ̦o-}=mZH#I ՃCl!* /vp+ҥBUDn4+ѠGg.xG\=pt$vW_zd9Μi9v|0A'^;m;Nhr#YhNc+7 \|} # ِg 4n5lSG/9ޔN^Hvz5'TNbw|ՒDzdGH Ȍ'̃O¹aPnsTRHfX8~׹ ǿJnڂM r(u9 `[MON)Tq91EqvښW¥m ׯ 'J{AϾoï..=lqw5x$cND EPX0G$ʅWT.ȩyC.r hcmWyfo|؉} ӵU }>urRrYjsySGEކj*425лQn\*OL@s" Ibsbs,Niyxv%8(IClo9hdWbhBHx>0[UUĬ%?.Kf _zf8zۙz*|󩆨Ry[Q_8Y_{t>mw;+3] ԋ.2@7#ˉpo5+2qpPǴex_ZܙD EH@-* &3J#0B#fYZ@K yHv\`4SXӚBKF P%ȊvVTM%&'m. <u'j48^!Ҍ_v A˕5J/vL_{VGtJ|*< ``6@aϖ k ,/H_{J|@?rG׼īnL;yLSf赮SH%ifu$z<. jVk/ܛXH!ioG& GTxJsBMO {"T޴,Sj"%6 "ڈrq*B/wy5[ӹ+M+^K)yGpoLhn7z/?v2BmC=*vIj3Y- aM4pzo>8'KMW^>i>yru{_!jGp.lys{^ySJ5+$gU ٵ̠vVq/id4Tq1(k:VMfR#G|'ՈAc"Ɣ+|P_i k@CFT#Z"+[eڽPUWV@b*,X:+ %X''Xzo$?|k`ejP_ȡ⫭5߈a/կ:33sj)U>E:uƓG/6x>{%6ꊏꋉxi775DXORYi2}ב{ A|4_&0j/` QށMc=,3F6eq 2av%r4{(VgU_{Q橗xcx|ܞ;Po̾kCne+ֽ_-omz Ѹ>!96L^Vx!k%ssk?bRCߒS{kN ~i^͉2#or ۩8tw~rKVҋǏki^\zg{xQ^ )2x֚ͭfCkua6;:h75|߆X4yƫ..eW`4*\W=8`;57 b,x(8]N(Ƚ.^YmTYnQꊷ^zp=':Hv~/Nq~ٷ(TyWȏ S`@+#%d}+y@j4 Uvq[J8qԀj{41{k~ ;a ?L/L<7&,ҋplWKryxX3Ev;BΏL_j)R/`7(|mnoϝ9<ʱYg/D =Mt~Gj>dh.#vF&iEk!C) THjSHqjSP!,`98Ӵbg,B3h>H»ˉn"5B?D{z{9imS6δ<6壍#tN\Mtt+߱7[ޭhemtu5r8m&.u-?P2zhQћhlt %d$,A d br ZE܋˰/ekPuٵ֯S}2:Ҹ@_53=rWj^\/pZ 8 7h|*LQMI%Έ5L]ĉxw.t}avxja%fPkSkD`XgYE{i0yd"{cb/Nv8D|֐#Zq4F6DqkrB /wWEEEVraWk9f74󽿘 .O}Z>.arȒ)9tfJ~!L@ksQCCH}CQ27_\M T7wXk& 4I}& jP!9." \Da҆i'U( 3tt+>,df7!0Fl1' cꅽv1~GP-;a?@W^jdkM~#V(C~GBObBJ\ |/uCY< O jj_~=y[?~ -|÷ >6VgemFk|z]|d`6Lߧ=`W)LU&@9ԂQa/֠Q0kZԉWaߨp͢z"{T$ϨYF}+ M UU  C)E1!O]AxkHD!GD02`G @{FgnZ$Uײ=`U5;Su4Bj Euy, cg!"U+p:JYxNA.#fV8](4 O@U5wwW.У|bT;v98Yc298!>Mi,|x:(JVs QY< m8\Й>rѸ OUf"`ݹs@\{X3Q u#gE ]`OnۖgS Y}.ڶwXuuiJ[MjTkKќӅbsLoeV"2c@"X2y`A&6F-~l7E94"ЖD&55,@fي9Tg1[:D'2Vq9шO^A' ԨG~6伩{D;GˆK875Z^|VxB,,>)d/ iؤ5ab yگZB G0i}(JHB3Wkºg#BNZIFo7 A/kf!_̛ endstream endobj 11 0 obj 7894 endobj 12 0 obj <> endobj 13 0 obj <> stream x]n0z C 0'|dvĔ@}9;j @aH.;aı;YG/CȴQLݵ<_ᢞ~mi~Oӧ0"ks󵝾WKOxN)WF(v>UQ4j7{`}1Zk6k]vm h 1f]3~+zM7Rg˚%u7ja؋. jk[j[x_:ēw.W;hze} um@Ӄzq;2P³ ez`{7P,$ڐ§!ȿ\K -ڐrgIZɟJ.CiocL-Iz<M, endstream endobj 14 0 obj <> endobj 15 0 obj <> endobj 16 0 obj << /Font 15 0 R /ProcSet[/PDF/Text] >> endobj 1 0 obj <> endobj 17 0 obj <> endobj 18 0 obj < /Dest[1 0 R/XYZ 0 1399.918 0]/Parent 17 0 R>> endobj 4 0 obj <> endobj 19 0 obj <> endobj 20 0 obj < /Producer /CreationDate(D:20241025162801+03'00')>> endobj xref 0 21 0000000000 65535 f 0000041408 00000 n 0000000019 00000 n 0000024432 00000 n 0000041710 00000 n 0000024454 00000 n 0000031230 00000 n 0000031251 00000 n 0000031447 00000 n 0000031909 00000 n 0000032221 00000 n 0000040202 00000 n 0000040224 00000 n 0000040425 00000 n 0000040948 00000 n 0000041310 00000 n 0000041352 00000 n 0000041528 00000 n 0000041584 00000 n 0000041784 00000 n 0000041920 00000 n trailer < <28A698EDF3AD2EC122396EBF852A057D> ] /DocChecksum /59EB93044561DB5F7624952B9E342292 >> startxref 42091 %%EOF hardinfo2-hardinfo2-1331e88/tools/LICENSES/raytraceSVG.pdf000066400000000000000000002275611474767047500230120ustar00rootroot00000000000000%PDF-1.7 %äüöß 2 0 obj <> stream xZKo#Wyl>C-@r[@ANlg%?$-ٙ@fz|U忇,nq uѯW_~/?,;@y[dum:Oim9ǺҖ-nkrai91o-.^~BEABɱT+>-MO\^}ߗ_0_?"~O#| *Ϭ8 S9x]=|VPYZZ}`em[N79fέ*-uO[mK;H6>v!xL*\ ^hFON꓎qM)Γ#"n1~#Xґƺ?w%i~U(>[2Xt L. p(kŮ_i oWD;nC㣯 2 ?MCw2χIni?^ƀ2񂂡e5%Un=Bpd٥}{?e ;CjLڥ18clhIK{4.cyd$vUC0դdn>f:EPe5ke3T{^=wyrK ".]͢: =s2S xaA\%?kUF&tIͰss⅋ (eg5#~nixL$gaLbPB?@d/ِʬ dV VR \(:'kH+֞QK7yĖyC ٪8צ^o=@[1 8çN+^KTӤ(U?0Jԝa42 ({g0vvgO$#Czs~eM(&;}*u[]knҞFlg'aDu`9IÓ{}:_I X:Nm6&fuLs v狼 ozQ*Ê7N7V_cMC'hsNK< D ƽ}Ր&.ppL6Pe$eJ_/˛;I:Lyg1&8=u L@cוtkY/k-N;8b>E4y{emD#܌pA0ʈkjՊ7#"ެ;9*hhć#N#"ެ;9"sj7hKBX^}1BuƄ#CԍGxtdזWy9[_Bh=Sk³#;h C=^"WZ )9?uפRVd̔Zt6lSս–)~Qa]ӇnKaxҥ|Ȝno}9YGDxJg8 nrZ"m.p`+OY;R:׽Њ:j9*}ܽs:>WBY۠Okx83=Wצgnuy` j( ?oB?0 !6p*ڪHzDT K~,"PM`V,b1_$Y;o3vS޳xPtBS `$>Rv*E+cAWdQI\KX0q wc>xE{JEMtkuyucdA<]蔄SNEk' ")hh#)vKEkE>ڳ\M '6 I$q6iSEB/3²^^l* TQh \/3.X.}oi݁cvw}z@@!` z놁mNw""? ~r)^8D]G#렌7cғw1R&1n ; oWHV 24ﲕ>Ywٳq2OI62Ml:=4~rdaȃ.CA4k9Z :{TK$v.S 7gX@ dW߬mI%2:%I9뎾QP_^H',Q`ApV8)! t\E)^]6-)!b<ˍxcuInfְR\9}yO/ݙ|nE&@x۷Sl޿3[﷊B UbN&),S @l@Tji<LJ;6fZCb?`d~w?-=i{@|YY< g4w>yV7~6qךnm hKNrƆ')uJUּ@Iƾ/|qZets::牟J endstream endobj 3 0 obj 2510 endobj 4 0 obj <> stream x Q@h^fSL@!TdEi"(*oL_wq8f;웸"jF9FTߧovz_s~4-U]~ 8pAǔWUUUTT_ϫX~9oڮDQ{lT5;- sLzHJͩ9o@$y4g@4~ͅ7 ӟt7h:0MEz#Dcog7 Mr<lozq/M7hР +|V@t:M=R h:͛9 js47{@WTT8wylYT'?پ}W@h:ǣ~͚5-wx+t9nrxu]w;Xw@نZUUe@}.ݲӬ9N aÆ9Wopn}/i:>}tuEvu5}6_tpgre#;qL .RÚ.EvUVIwZ֯_o3~ʕ+;-Us6mڶm[W@8{ *7*J#Noc`-[w}T\y啦6jnǎ^^G~`Άw!Zb>V|:0͛UͩwwgCo0kjtg/ ֭[f*"5jMW9k]d=Rh:{*DG6Usu$&H Pvءʮi|{s6WX{_iQ5t` 5~a5*"MW)Ϣ `Wgc:?})}ndꫯNYO)++8p Mf3b_s5QkS~O0PeɌ7ِ_|o:۷o0`M2~xgC~ٲeG̟?R\5]:eĉlXqBʺ޲ŚS&M٦S(&Olvm^א?&L@@l۶ͺ9?uTgC~ҥ^w?8^j!?{Ύn!M{)(ھ}OSC~Κnɒ%U֮];rHPegWWW;kŋ{;"t.(Rtv.9s&Mww 25g͚E%Z|yee%MdqA7-ZQ׈S%nuptٳgtM͙3I:WFzS?\@1cM;w.M̴ih:hϧQgg=H B\uiY`[p@&m(fC3gM*Z {'ٽ¤!6ŋi}#F@dΎf&mp&l2gM7|w$V\9tP.^|7o= &q6WXAӥe…{I *ݽK׭ު^#GJ *tʕ+5ܹs]PV]C3WZE9P>X~̧srΚ[ou7ZH_xYY͙3ǽ16l d:tw}7t⏐X:MvZgMw-T<3bl";tuh:m&GitsMM={[aUs6mR SQ4sVi]S SQ4'sEEM"kQ9EyȐ!4+ ܢ9=sͦYf 2^a="n5}7t`pٕUu]Kݦ>|8M.+ʛ5IK3?Xm#FtQ5gSpQeVm5f۩S',xȑn̙AXMqF.cǎ*L\*/5kΟ/RМãFxgt hѣG;h3fѡjNUSrssvo1D]~~~=5ǽlsx̘14?Һ}jxFSeHǸ@ph߫u5fob!{͟V;@34gرc4]uu?TM8Ѫ/]\s>}+c?Tӕ/dwm8Oʸqh:OԬZj…ӦM3f̠A,$*;]ӜǏ\dܹs'O~wiޯk0aݪPSbŊ[nE#FPf 5Us5|M&Mn"D~-[,kn jj߾~ _ug&OL5kڵf͚5nܸ.^kʺ zqM2ŋ>}H EL;v쨯w6Nԟrh|f͚Őz-0AѥKnݺIИ'|t::st#( /$^ i]_ZZ*'e/Iܖ-[֭[n,["ݦ2e.d)/@R ?=[tieeeNmlE쀳"#@*K2-ZT^^..4"A}8bhZoإUv'O/E9aa՜u ,Yv^7ݘ1c~wQzjcT픝Mݦ]v{.vʼyZ,믿v[zԏ""-[89snI&^pqf͒!jnÆ n={l=z(j+=#tBMfΜlM8~;7G09WcΘ1iM0ncXFz']֥ʮڷ5jUv{(Vl޼YM>ݟ t{uIuu:ɟ>hmLtwS 6Nzwsn]]+ӦM7-8˪UJLe]e{1~}!VELY*zrssMpN ?գ1cO]tgڬ,uWo^z7Byᇝ5*)S\&ݠX}sһ$gwvuS&M7n5\r%~y uy<)Ĩ^|7I?ee`knʕ>t퓿nQ5kʞ:[ףG`*Fa7ntzEuuG:~p[6Z\Nzg[#]q9һKzH?hfѫj)ӧG#ݾ;oql^Iu-??_zYWH\0O˵#4^̘=)U5NzůNmӧ>Yc[zp|_Ye\䂂D1M7bxZ{Ote/.pqh:"{uJmmțt}~MKz<8Я_^zIn ê9?NݻcHYޑ9ٱ'k)))Qe'jjji:ޤ=7͵#K)@zȟ6m[]tP14wͽXՠ ǫSJlf/dHͩ _ suJmmm^v +nx|Mw. Us`g]d̫E)/iy&&֜g:oR}ݓ}J--rϘXsVuۡCӾ35XW~&gϞ\u9Gs.AiWj͚KJ ,,fytuʲe˼+wBl|$ȑ^`hܐn3aB N)**މ bWdunm[N|g35o:ud_ַ}qJJJ rm[s7O=| f6:j<\yr!)'OvʯïBYjᢲ!)Cu把 ~y`NNZ/_Zc^D}n՜g^=ӴTk޽~ctO>ٶ^zPӸwҥKݪʁyErzwSٳ٪믿ޭ{ |7+^sMߞkZs*|t!CRs7\Yz|9ɮBi'ϝk\sꔚR+^x3gvfdMwhv5G}utK,ѯ9WpoVkt@gO>JtءjyWޤYZS߲i^?l5{R՜_\saꔊ };3ҹ$5sl}-R5OkNh\I7M`AӜܗmgMAvn}SؤjnÆ /\xݲ{ٕ񒽋-5rt3 ;a].YM8QΌدxөM_Ypf, [ۛvl}W.);h뮻nMw\-}n5ݾ(Jk\bͩukS%UTTt=%^C^C[:g\\5 evtڵ@政!S<͙\3KknnSSe_s% ěӜۙ>5y^hk§.);1]ei~9XS9OoB@:uyioNI]s-\b՜^DJ.]:+**OEŖkOj}OF .//O~Y>aൗԜt'N%elΕ#^L^\ZKT5 }nuڊwy?-K97} jzU\\bmZn}/KPt%Ϸ>v,X (;QPRRŦq]gٝow8d5rThN]wҧWmRxU\l9ۊA1ݿ>۝ʁkxͩjwe>=YJVs.Kl?_yQv% 6dk 8/`s5֚ĥs5>Q;sq]#_,^^ٮ44t.^s*5 }H.=)uΌf:*^si)Ht.{;s꒲Y&rNZ8۝y`ák*xͩ||wгG^(^gΌ%6K笚N=5D D/hDgvsWƇ{luPC\k Bzk@y]sú}v ( ?ٓu`i՜5{6|[PvBʭٱ 75t͚\:Xs7} Tͩz*Pqլ]~ܹTKԜ+KkNW]_@2t^_[s}7cY_ؕW7t\5ҹĚژtk@qqmۓ'OWj8{PK Byt.^s*3|yyyI7|x~Xn/Up2O~#GKZsi)pt.Wes)?Y{Us'N4Yyz_5gvgڗG_~9GEu\KkMs5r.;|}UkN⩼fC:kY9Odޛʞ/d~ᗟv?݌ 4%L:}BWΩZo}! 4"L:2gKTTEN_ ekȑ7N̳g- X y9JK.)x)jN}|Xg:b78"Xl7/Qͩ_?n S_O}jADSaPŨ/Wj#>*5XO?Z|H3 :dYgSeg}Q [jzeUm_`$ EWVRRʮ/X|0#`;wJjݻK 0Rv2?YPPU7Uv:_H$a:v옟E6#nN:Y"yH  M[WTnć!1>`s\jC9OB:d&]n>$"^owigg NQ` NNӏD-BĪrBO|@X.z9fOCD6qG#@|֑&>xL|RO#$|#$|#$1:FH!M.i$ E|,FH>QFH>QFHC'!6O0B]p@|vn -SO-BlW8$> !> &>&>q%"ĭ@2NhJ|4zD8DG8Dw8"Ļ@MG"Dx'>'L|OD!&CAⓇ j!")3C`D!D0"B|"3 !AOB/'L%>^ TG|0`!$`BH0$#ć !A3B$?BM|5BHX ħ!! +H|tAH \ć!! 7B|\YAH !@O B  %>1&K|>bRd ļ@y(3S 8!@@OB A > 1>dBć! )?D'!OHg?D0|&SOH47?D6|#NHd7?D9| NH?D6!NH4O?D-|&SOH@>! )?D!OBqs G!@pB  $>1&K|>bF| Ā8)AH g!! 1E|hAH ħ!P!?BM|0$!$`aBH0$#aħ ! #B0! &>aB G !R j!~@OB| ?Q&>!"N| i #,/ć!Kht"ĕ@2@jc@'!v+BYH"$ⳋ'!-t1BR2BR2B">ipX#$1:FH<FH=5K##Q@|֑(!>H4~z$j=G"">I 1;ÐaHL H$E|*$>1Ā@I@J@(OK@XL@M@ON@HO@xP@؉Rg) l3`J0\% I|L%>`IfD6ÖH"B|@O] Rħ.9Aⳗ, L|D&^ >wdt'>$%>+$#>~j@g5qM8 -s@Z6I+ħ73 @''>I\!>IH|FK|FN|x𤞚/yr> 73?I|G-H B|G$)dF02@j0)`/c&0# |eBA/B@FWa$^a $,x? `6 l`Z Z/`* Bo `6j5ơ^j)^/ j)^!j52#j5V/&j5zo(j5^*j)^,j)ڢ^//j5 o1j5.2j5F^5j)j^/8j)^ƣfƣfƣƣfƣfƣfƣƣfƣfƣƣfƣfƣƣfƣƣfh] endstream endobj 5 0 obj 10790 endobj 6 0 obj <> stream xw|QQD"UE\z vl XTQtEE@t *HQz-$n6Svwf7}?yL̼9upvkԨ~˫EY~I4*PG £Nz z-dG3g $']KxuF@p@nt£?9G3'G $WK,~ulHX֞+cSSV{ޯtM HN9y <z,+罼tlAp@r*jeƒֱٹ^{/tM,ƒ.ֱ+ɩ= LǦHN-y/+%~@vӱwk}`Lױ)Ex6%8X 9stlJO,ʀ£6ژ`,ѱ2>s':lٴ= jڴ-gE)7 ul:C wjR|y]i?jT;zvpzFiuF}Yهc$}25D p^Q[k?i8wS:OvqKm|yv(RӘI~n}|8=3ǧG2c8>58DžmS p qJ|cbp6yJVCwr8KMFL9Br;~vG9&O%_Gj?_')CbAi?Pk9+ o_6Eu -74/$p K,/?SZ|ـP&~&4D)G^b ΙɹV&Ԃ~:\xuWhTuft.k_<]`'KaSQ(Q' c?lw J]7qFΞD⻵o)gLϣSv[]*Z ;exzi:9,-:rOC޿IMkg Am=k` +pt-|!Ji;MWp؁s9/;AyyK:yqO@7{skb3>-!r0DMܦCeV[l^%`܉_ͽF0=e 6"s߉^"`߉^!`ěq0O¢e,s6& g^`cD6fN^ۚHl^`%{a${]sBuNl.kx' Hx'>{MezqˣT%6G]+8y3?J>^ dw۹!՝8pӛ[0* sیۡk5~F;nUN DnGڵi Jr'~]Lu{(p{D̀L7{IepTȅ~|6կ6؆սŭu&Lx6ŵ%ZL~ XeMin gS;cW1w2/M q2 /v7d;ν,Tҟ dfr/ DNNʅ߁dt וѦT2Q$S{},ӍlM3j L{ s#K颐L+et߃ÃO.aJaASLK}Kk>M5AS@C2=C3#']iui >{y)22L>zQ.\6U eHF?9L24e/Ly~59Yɦ{2lz({vL6h:hj'dS]sASSL>><Ľ D mSKASP2b)xISZT(ӳ2Kvq/"(u&n4)e-ds/#ôփL/dz^G#M/a2hkd<բg&L-_ma7yd:AlHФgӫj7MăLej͟'Gn* 4rLmڴh/&2yd*qII#k'6^屩l젩)\օ2='/sD djU,mۍÃO,zAӫsE2m}s07k&L>ڵ{iK8\<_=+hJ4ez=(S.A48>+hz.JT(k2Vhw}Nϛձ4ezCN8mIgfju,M2^:;e:ȋ6tշ7M2Y,;;}{T򢫪h7 DɠUL2uة&ENeTQ,M |6uԹd0J]RjMč7eVLoeҥJМؤs.ꭵjTG-ZASLezFp/up5H%+Wj͚e)zqZw{"L4dH!ӧ}6t|7I?N2޺V&+tAӇj|6 [ x8MMI>j?|>eMP& bdq[-SL znfe^j)e4xȭܫx[ #dVp /M bILpqmT$brz|$4Չ4u14dL!ӗCʽ ͉{&+v24}gW_KL lmXALKW_ 6Y&IzـASGAS@!!zRdloVG2h 4dz {5q4h2YC44P#Y& e z 42o8lZXAC(Q&L_4rԨ9xܧku7%v4T)Ϧon@Jfo; d_fx\͔AS@!ƌ*{iwL44 4d;vk co644)e4nehwfNM1juM2.ivsn1_,ho RML&N\8sMC2Ri8{o& d_&M28 2 4yd4o& Ɔn2M2ew31j|6}"t kAhLdf^aӽ7bMߨe&?YS|Fav24MTi,< X(N0SM ;q:l2}i;e:A^ IM_ n2͘1c+`?mo&2l9s&;@f [ B2M 4kEx.~9F6`&h45LsK3֩dhR&M?-vՉ4244?K6TfAHAFsEX`/l!ASL3e7ojd1I2hRi; (TNinL`˴o64}9hSL .چ,>9L4M4Qɴpe2mQfADAB&M-^Y]l,a3ei*iɒx.K,4T4?\Kn8ŽqJzyd8h 2le XAsAtݠ)$LlL;o/FakuM~ɴl{ei MSL˗Y c0j|6'9)I7M_ e-(ʕke3EـP_eZjnvv7ME&L>V^YiK ?b-h ɴ"  eWl2&ӟkBI7|Hi*i͚[їIx&L>֮]L:_NLeZ~ L:Z!LM2iÆ eRfAXAFbs*4wCi)\2mڴyL"F9v4pT$Ӻb6oي:_2ȷQZAO lٺY& \L4)dٴu (f+AӲASPME2m۾}Lh_dV8h-JT(pvy/q3=͔AZ;w>' ASZ AzLvuY(,4S˴XvI.NM&kuj*dڽ{ac.Fw7GbMkAB&M{ݗflbT,Ӯ"wj!ANՠP2 '{0{j8pjNNgdNWsAvLJşZ,҅ͱv24ɴXC2%"AO= >?XP77G,M |69r4 Dw7M2,hrrbw,M&kubM42; K]QɠAS)(ӱ4O7 3Ycd0Aj ASLSqy_o2h*hLiSyM&kubMۢM>(dJKKDin(L(h3hȔ~"'w"h2YC4m14ɔDF)\͔̑AS@!N[]QZAL)JNfffdno4 e*4efeBdԎno&E d:Q,өӸ<`Auio'SBӧse&6 3Xc5hR)''ìud0:惦TL2dao&e ɔrZdNi)E-SR|3ȴ8o X eTٽ8&uՠHdqL4d: ,"FaV)&dku7 lm'ASH&d)r7M-Mpi2-04~fҠ 2s;&:cbAS2&;h@3&F{])2Չ4BDC8o64e!hcLMe oFCJ/ofVA̍fMcMG49:Z⠉Y hoⷿA-E3qVA̲!hoFǩro&#@D* Mv.iŒ?;417#hrq+hMd f]L4  oFݿQZM6Ad/iAt,qis :~0g {3qЄZN&S3&fRKs 7MVx07o&sr0dN䢠 Ͳsȶf n`4a7 nsNA( :ߝdAㅓoxbemZns7oZdatٽAYfcЄD#wM9悍ө7 C86N( DecAn( : ̀ 4W7#hCAEL9ɜpiodOi07}ot,AS|1>hBs'FaoNdrʻQju\n7:~q"hBs:ߜ@8hLE3 c+!;C3 6 t@3 t72ɰQjuℂyodE3c93hju&긓7#hr-oFj49Xf@Fl726;Ѡ :>l.s%iotl@3 #72vs7#hC q̀ub:&ẁ] oLqA2MdfM:72S꠿ӑ :AodASb2N2md;6 dpAS2r7c0@172; DoG3ۨ4%0odB@3c?9; HF(؍' 8f@iZ9f@F>72N hdxa0@F6juP? q̀ a72Nq̀<MdMSotVZ@IMMl:QED(HGF@CB(@8f@7 :<MlMM\M id|d"ht#hdx2: Ë ť  K endstream endobj 7 0 obj 8774 endobj 9 0 obj <> stream x| X\յ眙3C0#@ $gx$H a a`km4QVWH"G^Zzcjjo>g`Hߟ^{{ ^w{(/+]wWP_ٗ?;{ okԫ;y7_{ݞ?h\go?=׋9U^h߿Iw 9ԥؗ;G%<2CC:  x\iGK?QiZhu(C}T ]G!IȀ{HfsP.[`wLDCp;9# $y-I|Ͻ5j0Ë lXC"TB#&A2TA $w*A52*%PW O"Ir H'{6~Ls^n;¿jkw4C w%? o ݳuJ\0< /6'i'}k}.~8p9~j5vs>;F9u A^_H RCZG>D;W-OοIU2;wz-ԩ2׼nj7\7Mh{ Ii8?7-BIYKH {cyJ~uqn+߂{@᧳0zٟEM=? jӊ:OG@xqv<!_ÿPsZH4ErH)&d#B KJn#c;n"39+{5jr9rv7=ʝkϹ_rk+x?_?|S~F!Sp_^ҫnSݡ۪ՠ6/S7RO_yq'^+^'~U<M(L`t <!G8=H$|KEU7se\4p. #8 /]xOa$FYxH!Aϝ>8AmdBa'#/qG CGC VZj}x#Õ'3~UMd{UOm$ȿDb=RGR3[}[~a߉4@xX p#_+70_Pi8NN 7`,< |p?ϐc/Arǜk >VUҹy6woN1. ο3Q xmZj\!F b rU: xxF d_ 0?Oۜ.+[tuɪ‚y9{vV抌4Tɺ,eirRb%~I\9d6DuZVy 8\n)2l559os#I^L҉}Q:eJ<%1IeP\6)JM"[6v |kS cp 1`'5gH*)D%WzWAWw7U* YlCIJ0֌s1 W$[+h,tjJNMqHe'!@%& lGŁCҸ[Lm<+:Bc}B}g@h2ЕhR辍ىk\.`5n} bB2B٧Bym.R immF$ Aԉ$ܛuRCɶNw88زw2)%.qbdmG  x)T2NB9բ^ 9鰡 ͻF2t|!meACtM:1m[q+uc uy0C/J4$W8vMqŶ! ;pZ`7}R6Sha 6 o+ScRcFI9UHԂ*u&p< H}Z$fQYC2˙,r-!Z#PXI$2bhS`y} ?aO"W(+Pگ1=2T<;G6ԧE]exKCP$ϩ{;c^N͝q.j׾<ǵsZ5I Z(G1(/SС8(hM?Z pk'8"aTr M"Q!MӖg u7Y!c+R7MJɗۥyrkQHq4eM$#?Tq]ZT*)*ǘKEUYh*C[a0))Il!O\٪ߜpW>2>x]ˡLCܛSr[<:HXJތTU\9}I9Y%EK4d&$&t8&bYhȳƉ uՠS[S -i㵖,jɳ췼jYXeK?DSURN:JR3e舮(bYtEmhSn:5L~I׹M3}vu H"}Xv׾!p@JMUτ7{+=ᖴ']z# 1Hٗg>VhNz1Sdv4"%Ouh CP :4GhMZ^;L^=ISw5;s4ǔKM/REto%P%qze 8?rՍƯg͘U.۵f[fN KQߩ~/OSM>()*(,X(֬NDE8*MoyAUǯJ)] $%%Ux^JK0^4Ȗfh2s)pr6{%M:j)IKi״Fh#;s:g.͋)351[JպEnlsUъ E1!-X`[6vk<~uhzeT߿s?yZv:V?5o}sW[uˬN=/l.1]VXS=+eSuow~qpb4qٸ4M1Wmj<se͋1|a}1T";'к]B:Xڞ'w9~ilj1@k[W;H>x]n^UzݻWiOi4S%2Ρ{|p8E2+SFLo `b.=ЂXJŲ25-YFUxhm6>6dͰvBnɧv3Ys~+-={CT5_]:uٱ֖^p=́Q>[oZsr9ѓx$|xBm)Nb[֧De;.~_oE zd=bJ?pD T{7쨴QSkc+KZ|K,dU,}sQ8o8Cg8)NJ4ҹi=I*xS`LUk`iӢ䣻9M.E9*oe̾PlFnku`Ŗk7LiR6Xn; Ϡ 4RNC{nvh:Yg^KQ:gTsMQ'^RՠǔB*NQ8+$GˮFC>:|Ii< uH$|@x?9L82?E=܁hP wktfKwBB m5m$g2f~}uˋX`cӐ"?Wil«D5e8-Gǥd%7G,$K6t5@W]D`4%NVhY9莨MmF>)v2$2i4@> ; 0,0_ug[VY}{#?yp6qWy5O_]oOf,XaKxNguP9OJ׉ĨH<\*R T`Uσ[pڈPuIgg_zjY)VI]rc\.;@rGdбfEqi C $p_U`w)r ,k /P`-{-G 1(0yF9Pr CVF]*/S`5D*+c7+boR`-bS`ž+ǽ~$%}`') VS$(0$"oU`` _ZrY O#}K OWƹ˲BQ:Xe _ l`1Fs&G|\+ 51-GQ% ,G#^b0[tn L~Q`7Wm Z)x[) NKdp2[HWFߩ`+_3:S` feuy30Hg0+?])Q>A)[K]o`] %A?xm? X){ݍxő 9ض n;y".{5Av#>ڣqM"܋0_0}y^ )n\ai%׍5zaB{9KGGǑy|L姏Bu3M,Q^ǯH*]FqK{}n`Q0IۣyyLk|/NܓjQVb [pA:D.|8sP(D /wg%`HfJ}YGob:y]9Ek5fz^aZ`<:BobrF>7rFhW@#G fSx_!P"ڧ3 1~ 8d*1e)Rp>>gQJeyݐGfAZ۫Un`'R>Tf7/ccjg=8%hNusv3= t1V$4P8[{:gAH(/߫Ȍ!a {$~!_k#|J"dc'^?~ ˼ϕT="3_R0CJF܆^RҺE>*WA2 #ħh9jpP-,ǢyIbv0˸Qp~$d I\g<6YՍ8HSv^Rw![k,)-=oRʼ7_8NasǀRwas\|DT'޲x3_T`2z-L~,Րh༧a\t~>`y ~aFQ7r,@Ug2<~mֱE'#vV< ,3cn[XϦZiaN QP6t|gBl\m\0^Jed.mX|E<^K_^^2,Mfzw1\ zPь7=r%RFԎc9{኷fQw~q."UfA?JȜxz/^sݟc#Krɕ7o5bMPX-[qڂ#W*Ĭ@Ve|fVj8y7bjXoPT.`{pVFn@l=.ΨDL;)eAyF%?u*5Q Ҽe;9k^ _Vڵl=?ݿ|V+V0ѕ隕Q=Ql;H`262q\8;*tT?j#_=~`:a,f䜮GXh™ULV=3*m=-H%[ICJuPp^u2/--f6@%W+XOF%1[Qb&nfbTLyf+sNyNm#y {1"oW,}^+N(_;ʹI+K~yJ`p}\b`@jmH-o`ד+ 5ޞw4ls{Ai+._(eЦ!`wb/J5S[oD\z|Ii4 z vT6F^ɻx=Ҁ<ޑހo xnHnE .5 op$yPlt,y\oF% ,&S!n)p{;݁y8{opׇI9R7(5z|>f V.^j\?*tFQIAj~7uB9$G pIغG!o`/z2S[ egg(u4s`Qv㦾ށQ0R/K6|9E~BPQ/l@ϯi Ӈ;u>=8w{k- Vx {TLJZQ 95.\H`\@QCq X!?Zz|\`{!6%jм-F(ct E=U~ƻ;Խ8PU.JC35&UYnԌ!0{z݁(31 -% U}y)(C?Fwt'Z-g j&HZUE?by4e;\N St9w܇|tqDTB24ť{FiP%(a >+P[+Z(rr(fLi/[ǜx ;؂{|,.F4d?4ȆD&X< 수u!<$(?O4tkt^]zIw%ݥt^ɕҋ7_ֻ˺K/.;?_za]X;^]ziwv_W?q 8y?y_x6ƞs*{E4a\^{1# {1 ]\:%~z6ebT-/p~DH*P! ">'G$^;"iOEΒ"kTi-P`u`kk^U Xдs<hHDvBK)nW]x 38[b]{dY4a:!ֿZ8⌵/'[/uNY/{{i sg{A b[{qҖ-i(]6XqVVeOrl-aS ԓ֕ր5ʶseɼeunⲶmؿcıصX8V+VcX8fű1Nc֘4њ(NѨ5Ӏ&\D@Ms/&rDt(ZדЙ^Bڦn㖐ʶuP׶>!^7%εJu!yk8!u"64Ec$RԍNUo5s7 bJ.rV8*aџ5F+wLDbwvh7!%tg]kGPR:BwJWtLȣiO1W :4 C=F)k~"L/Et?Ql MXYތ?esUlN1SZ2Fb"I`Xpz$G!ɝ'e;d*0dRz壾1Wmih!qɧwt!m='? %Eצ&\|JrQG!ڠ TT!^:Mb2pS2dBt g08Hp(Q B](.TqKǸ(BNqzkjEdE<> endobj 12 0 obj <> stream x]n0 yCEBh841]xNI;$9>+=FMmy9 WmXqGt˱, n=d[-|uTX8m|Qw!n~s+B>#$Z*_'x_,4~EN fKp+x4"Z.]A*D^W3‼C#Ļ xAG{rk5[s|'Mɩ{'*g\ޜ 㣅pbNdE/g endstream endobj 13 0 obj <> endobj 14 0 obj <> stream x| |[ŵ̽Wmɖݺlَlj[b؎ pcVbc)^HCIʎ , Kd9PHK൏|J׼-3K~})sϙ9g MDmuKSdBq}[=Z!-[ Pѯ2cU+ MHݟ1dK0iJ!9ElT|m+>G9堿/ 3Cw׿/ Y7od7dQټE$ +(cg}Atz1"2d!}tHo N2 n3ЛlA8+Sm'H'T&$|DSi9i"r!_' AH.I"H@ 7{BNg蕡G1 DIi!'ŷ+t71HYIiq_y|[#hM WB^5qg{O"rWJSVrC}!/"9d\p~z؉|<dK5N*w 5 bYhj"Nɣ'4^ѝ}%6ѓxR$]B HЪk"2M~1"!E35{CϑD Gt|5t_Id#-K"#?&E, "kH4@3LTaS|`ݰv#D9L7ANhM^z+`{ă/%*=H|4J Oc?H^:/mߠB@xOP2JWIKgt3ZB%)$%]$9H|@-t=A"U wO-%RtZ0Ƀ3<13#w!Nѯ"+ ϒ!U;_I/_z=>A_?`sB=aJ6vh kw:1G\*nx\dRT.JJ!DBZס{X9i}_pj,:3df`&035".'EGD ~;,>AGh6͇i#mbWz?}+lwNCp j:&  ^Nd&:rIPHFŝKSZ%IKwII{Y1u> 4}Taapᗆ4.j!bf .z T"1Xq gh6T)q)Qz,/]zAD%N pBz^8T!qH!M;w &QenD_CX>ۅ 2d'JJ&#'uQoxoIUðwd5v[Ȓ鑨%mBO@ջ5}3tUhGG~ ޿"w;b GB^{WkL?9Fޡ)4V`?]۫{TwP]݋rxjr2 ds$VG~N!R#bJH%]ۻȠ:FسJF JxG7NN\LK^MƊ9&P?^E'1ҏuGe()t1[x;*B]!Cr釆N O娬\j!4~|=ء$, h%LGqƄ0W:9n1XH[ɒv2.N>3H~JAL2C4,]#}nTjVWreUK*W9rm9ٲ5+3#=-5%9)1!>.m6EEF z$ 5{䀽' mk͍ƅ4 )Pn>RQ)YJjIuq`/)z.7\rq|/ 7 #7/o詇:['LDFH'h*!ań@fH7Rm̂jOvh]7@l'!u\M@_0p5'8e!=S}qW@tX/3e qu]͟MR2뎏_'?ͮ.dWkoڄk\]z Tl%lU<6s/Ah}Gv0-M i xg-;Pns3&xTEN]8S\4aU;!&|3;1NΰYRf dXeÚg[2|\\~D`?˳d{ Gڈ>WP'0p81!q/).lJXj[dn׊R?;xϔBz ^ߥeқ$JẕL6;<3cC&O }_%)a`E&}δGo5Kn|ܹ/Ӱ@|].h.Y$ųĬe HyI|ʍKL)qT4`M2±rAuqJvs(@6qg=k-i!qCO8SC{7* ~B︰kڂG;zj]G6YGfLAӧBvY~%|oJP,";WNoJRg01:[.ШC5IÊF]gt{UnX0%(D'͈$ Pjfx3-ם&5-R^ O1"ׅ(ݎg<;MB)Q˫W q#7&mLqe|h/VW/Io 4E0'iShPgHP⣢bHdr1͟E,hnKͬq8`uTŲu`n)|a-M뺔͑6x3t.Xe,]\r I+.r+̜hBl}[<9}39=Eo h{eY/3V+ %SiL2TE.$ Sc5mENQz@R "Dc)z@1F9,'QYҲsxI(H$Q -5jtKpޖ>MrB?e=YbҚSx_Ir.i̹|{s~1%)h{,ff200s*T22* - mRMOSP z=TITYG$I:- l I D'-NV 7YdeIUe2J^!.lRJސVƤѶP-~+ugSP']jۆOw7?sC?V"jb p{ڼܔ`ZРi9+3{ZhPQ*'&6x&ٲ36|~.GA"񱛒c:F1$$Wk֝鬺_wZ'TQ_Žt 1rn8zOv܋NFZ;Fرt4)n:nM$SXiL ƆzIK ;"z w+!ÃO OF6L<[zŹ|RgȖ iIF dIKll~zF=?1{\rᒞXϔШĤ330ˠ=4c|]a|m2, Whhʊ*K_=_ɷI_ʗS ~_vQ~W-ۺ7^QyGD7FH(_=Gat'|GY_9vf%3og,uϼ-o}sÆMy%lVI=wB=5^}יOp:QA=M,xiZ~W;,<q˻h^fJheUZ[:S5]̷(Mj"f4^-1iғf޽K^>EgJw7^\]Mi{=u?9zŞ5t]uu#iz'@}f`At( (S!kJ3/VӝՄ Kl`ji`U!;^Z =qӇ6(x(>M"XU.S""c#FD؏71^!TH$x)R0ةJ)Xn>lSFjQgaMvnS4K_7`'`'qŹbqޤ+Rv~C딓Ɠ'?/_x~I).dXWT"nmNwm =4tRD4JK^lf#YVQD"bR,ދgCxl0%'( E!f5 i]N)mcx:8>; >n/b)CbYF%I3FzuiDxœ3ҤSϽ%WyGyQDhC,snE$OI1'_h0JSEͷcNZtzQ3c f)*bԞD9!ƈh)SO)4%2nfUl6B&zZQuz? VgamKh,/YBy;wQC[BemWg f dCbjL5D:s;;DhM3i!us/zdcH=N!£rE7vaFC& ܉{ѿ YJw?'tW~WF54v$KF,<}F;wNT"=s\ *H% \:"p=;4@'5H8 b%gaPsq D;  ic4\<] <>_Í$%K#HC_!)H]ihD^8Vd.c\pĥ8n`~KOp*q#M5\")5"/p?sL!'si8dfgHoVYj8uydk/^X{jGa<ح*ḉV|Þ82 HFQ[W5ẏ%pm22>^ ;G@='BGlbr!ە)Ǹz?;G5uG jdfs{~?x( ,UoѬWFl;S0vm^^{y Wó}x9V{UUί5"o ? ?my9Ve a^evKC?sjdZ!}U]Z*66ͰF΅Qd"3'=C{xT-;Ud3̓|a//"7V,nHs/|'|h~MY5k^m>sݟՏ,]O5g[I#zl#Mcو^=F1m>G~~Ʃ2qmAk\#yAYtq )۹u] ؠ1:l@yTK}jDN˳+\hUlz퐿FuBvg92kgfIf2`Zc@;Uk[1[4hkU6j3,F̾έ}[3:6Xl'?!ZYWנv-ͭJT_ *A=uhg}ί--|~J]Sqϵ:bEZ,:zN+͐FTuγDb;ߖpV˟GT) Z?u' cVgI.yD(+;<:ߐot#a7T";v3_"k<Þr3xֺwFAof<2_X3PU$PR׌0Myp;a;sʚFT y6nw{䱡~ϰ<)yF<+Gl{AuT {l\Gg)q{݃+V }>pntgxI*)+ŜSnytTml?r{whܺy3"^ G6谷;!#re#c~-]1y{<2ay' {ܣ";GHdPb$@ oB\G18 LC<@}c}E2K,1,lV6ϲPgY74C.G g̟Þ79}VJ/z {߷}h_=*#*\F~[& z{mhFπ Kf"}>^l ~8K~O]RzܤB39>vFQ|kb\V^+l}g%.k˰/7c#{[fc bNqγ| Ȉ;Gol+"V+w)`Vj˅ܢ~jI'oyV><=EaBDlEV_w3427,D;, K9$Xk^:ꆇJuhFlm5m06<c<\@5ro4`syBMqw2ϼ#mndLѦFXUgu[0S?2dbUW48ucS}C@?HsMNΖN(;[\rsSK}!M65`nr-ZZqR5a'Bhgj:u uku6mtɍM-Lf#:6g{gS݆vmC{[kGClKSKc;4kh,V ё;8׮媜`};޴zMum}k`vm [lZW$;9W7pVHiduiCĿΦ֖vtY :dg{SsHc{+3w _K*Z^9[k!1'.ME}e1™Q2Fx9fnt3?4r3ژxxT,}־x/־xŋ/^{t_\/^}l_`;mKwxŋ/^7{6w&:_vje.k{>gW{TFrK?Z8!_|87ciԑ5w3m ʨֿ 5?SOJRTZ&)yR|>9;OGif=Zssͼ>iY4!p͛[ݝ  ??o9>Nd|bRi4h*G">>i0W(Sq ӡc@V,ŷW>">~, ?6Wpx K9 iCBՙR4hX+-hОEàh!4Q|X?h (ƙ >@(|"zOڈ=ab͹o+W nh/}h!/1w?)~BĻI wNZoP M q9&@` os6OFFWX@F!pُ+}Ob r*UdҒR/|P#B0 W= ST솾׈xN1T֋i$U=cEXqIbD34`U>,*OFD1Z+׈ݠJ#Hs^I2;+l4 g f$]*fDF1Ç߭⽓ mkL(ԯRSkդ93B\ـx3p3WwҾ8b)C]v6#R8GRrhJ ¡-S8rMf9Yʤ)8<LELNM3zTLVC$b)f}VBǙ_p_|Q1Ḻ)_0x™!~EL ϓ20&L1+WiR Ӏd&`=As[|Q!< INא g=p> xL%?| Uk%A ~_8R\xFx, F3Az Vj="<)26?8s?89\G8z9zppfo8z8G866ps mC PC9p(P8G8Q2Q2ps eC 2!C9dp9pXapXasXx| p p'q'qs pOǝ/8X8g9`98X帶Q imn4{ { 81^ch78p8#9#9c?8c?c?O14'?᫴ˈVM 9Ep'y+F+J/'Un'v!Qb5Ҡ*ƙЊ ͇$=fKh%Jch530z ;3(-~݅pZñz+Qg[)T*?-/-.[QgJɤJK1WY_ABeAR=BڃhWUUY"w)9#hhh2SApkT3}p3`z w8_0ox&kuFЧI>+O!rZ*xLh0SnY4i]SF o*+)1%޺Zf-~:b=궶[0^l=$.%< uu7ѺêX#̿d*PXo"i^EZJ͐c2dqF1h2FFQ2 FbL``~€^bW]j$/6 9p4ʁ:lS4rIsgm`yjT9&(مрp%]S4ĆIg?S~A l %W'vi?m` ccc#2!99t=,1ޅ(򱉈1L:`e'H 'sdq`Zvi*2B%޼{/_gc 4XHF#aGu`F&W!1$jCpcG4#\h8 &P4&>9ƙT!jo2c?Q'OӉ endstream endobj 15 0 obj 12992 endobj 16 0 obj <> endobj 17 0 obj <> stream x]n0E /E#4BH,PI?!Te_8m.l;mZ\fgс2߬>Ui\*b [Sǹ(X{+TrEVU7ufLYYr ܛ~\Vr[ONU,a1+"K^%-> endobj 19 0 obj <> stream x |T8<3gog7'{M6 @f\5&H$! $$klURZjZjKڷ*mjߢ-ޒsfk993s3eCdCC=d !smg_~'mٸ˿wB2ɍ]7+[7u/Db "-\ikZkxWw[×ߺ/΅[[/"-mkv6x)BSnML!t`M[J!Ï;XτQ-fw8U;˓P8'7G cE&K&M.E 1G(ghgN/y=Ý1$z GG)ntڃDbnD+'@p 5J}@K"t:؟z]^Cvj2ԍnS;Z&%TmS_Nݖz}~AVDm;zO$xN&r%-ԋyژZvAxIJ@~|7J?L=¨mBwxO򄵩% u\ މ! װM8z uP ZBǹёkFk(KPtK8LP&$R$VCk7$WjY~^j6r^B~2tosH¯uq|ȋŜѓ)H }} ۡ_į?9dWR+݂x^/ƛx /wH-YEMvl/ 76>3Rף@@뿎 =;^DߛXV쀟j|9·#xjy ?&~" <(%EDJ>|\>q\ A|O˄ۅ{ O gDE?#oFoJe T ofہG/c.' b:oǗ&wﲶ?X ~l'adMw >r"8rN.皹%ssq/+|c|ϯwYX+LxKTĭ_ti\jnI-@Op'k: 2)@P; JM@hDyv|%:HR>o:^ RJOKh t ߈AmD1?O:$ !?P-?Pb!'xNWaQp`:?]֤Dw6m${RW@Эa|y/yId/-YIn?BGD5S.{'Z.DA |t)ٟ@DS"XAR]=+ U'񯠿"uvn,$[;on9;{a< 3}=۶vmܹiㆎ͍5^U6QsgͬQ9lɓJ' yZ$7' >o'RͪXdIx`TRע%c-I>]`}BDkFDKRy$M397|*gBϙHĪV'huQ-ybnTk7|h<% `;yyV4WK.9o禽u-sVeNtN2WZJ=⫛ Js뒁\ڂ$WXڞ\nn(/iRIiO3β98')jNtޛU%nkmLrMWꝛ]v?4L q{}ܻwwycfj65A.)ײwT}3 qJ j#55&uPF{B{#ZGcZ6kIKtvt-04Ibw`08:uUѼdM(:7߃} S&W]:b;`g4Z"YL[]4hIc4^:fm3 5ax+#ҙi٫ΤPF@@jĈ?)I M8''N$"́16^M*9LU-ܶ6,i8Cr`yA(7%I M9nd)fJ(PSr,ϩz6LbH.ZQbvѪqOzt%4r!b@$ıT ʵі Ȉ}X*Y %ՖIo4:Cb׌f&g?H XDX4i-Cr@vHK p6m|cޟeֺw%谅 Q\u6:1B{F 3Kzm]r@svhih^d! 8hm/[ ^^j/LfU|j46ԭ!x$,OMPRH3_,5Y*azfʔ23=$H;War"O(\MU0VbC!}5d4}!aY&'\t/Zqq;19$qHB>%JDSR$FYN 0 -N<%#ը`LsDHչP &<+ Y1?L:(l819VPlvN*YS熜Nѐfl">H(v;@⬵q\=jfSB@\P1AMrW^O_ G?cEz" i Hp5 Y(2`ބĂ & .tِ(t 2`ބPn 5$2ZjGtKMXȀyNT6X[due^KrEB2`Lj:iIY#,񄳈ܱq U+T( ^>Oq O/pѱࣄ+ ji_ FIB//Ք|kkNDZ]UE)w{ByEQf&x(%kZy6r/q65٣˹e?L`4b kg#Zr9%֘$Ze: 5Z7Y?R-) zA}%HO)gW7aUު R[^ۄ׊{/~pɣ UCSP A8z 02 SovyaR&C`z04(~K>߀/IX% :|n:.لNJHGei0" +K 'l|Jt>:m ~'.DDd`#66Ho:SN>q;9͘*NNLnpjBAJ-|*gix%y@ g(di=d@jqPS5GO{5y{(rea``ܖ.U `WD/~SUwWe+|2=79塉*b|qֲ9Wwߝ[W\^X־2y~ocx<ϟ~iʛ<#ț:~ W N&M4;jYT/P]60rcUl@Iل-l'lD`o7A R̮J<_.:T6-AbdPbPo(N'{>we bzE{KzzޔIDP<&}y 1м3Ԭ`ҜQFe!v փXL[x"業@DO3!~:;eG5*Wv3;RC]v0xo{UA '8)C]ĸCxٮ3t?X4c˲[@YGs/_9r ](܉|xZ o4=AK+@HX"]򪖸SaTQ>qcV.$YZi@'HҤ{t\zI8 %2 ђ:r>"$t$<ؒtlF~<}Q:{J=m ᩳP%UrS`w+@W\Y҅Aq907iK//++3Gwl+ Uuy0ى\\k</ν5z#_]Rxm /)\-9*ʘ Є1&6SdL1ؚ3 7ցDqCq<_X4 Js"s 䚤9ߘ#Z`&3"2MPϬ&3"?Q+ \QtgEtna]!˺پűm~JuGA_^[ TxvٹE"0)/łChB͗MIC7Hk[T @E;ɒ tfƭt_UiJL*,pحB^8'7$K"C(&o i/aN;SqC1 wIVo.]0~: D.-J]e.9KmQetM}Rl2\[{ؾWv?rY];7^Qc$﫚8pѿ߉n}s6F};k7}˷:sNj}m"mCf EV?q:Ýy*C}ҟqxnX'CH p䱟f+V&ileϚr0*2ʤ2<Ke+V:ܔL[1.SJ R ?'={Iq?Hyה^&uy>7rFy)<l|Z/2IFg@ɓjԜ^eQdER8QDG;!'^C8U-vū` At!uR3D77מxe24q˂7YRvH~~>K@2F|B=)30TKt/Q٫_`}AuEJZVL\~A„tP*TW@ŎD%1!JT_ +mvkp5Qi℣(bjLM=4U8Fľy"( ӑOq- RR<$={`*m&Lk f#fyr[L6p3uc]a&:&w- , cY˨jF`x QEYAˮ"vkP3|x0z+2cX i*Sz)zs5WUյm/{hi}䶑L|7_*XTpyR*xRgLTTpp~ N줴 Uy+vdK2bl~U\<ʳ̌Pi.aPbņ#9Ys|+VZZ|$?>@G:l&fa>`vrH9hymD8G:gj'd)6#C=,鴢6J4);lp8d&CqPt6T`G0F# &qF (zZpI&K6Xj^CvH5IaLVR {gԪsˌ^c>g4AjYJνl81DdZ"4bV J\?{߽G\Gvu/|k/_}0ׁ2,P KL UUG ~%[d=e#NְFR,d,kY8LF22ff C3fF5ت 4gη> )U.]T!=+ @߶pu>%blLᦋ0k_ :k.ٳg]cm_05-#P]nrlC  g\lYmݖM x kGsA~{f`jֽ$X^^Xnuo //>GU0voa>^* +:JǰʌE Y03} pd )4vP}Mnh}vQiI;#T.UaDp{T5xN5C#ՠHtKd1-KLŒ4&r+*:AK@sL,SO2rMՌ2li+x{o(&L1a"S0+.STũ eLX%&bLXwպKKVEey1p-yȻcwny,hGp!7F?TǏn_~ΦR h!0Gƪ;&hpeen_= R, \03-|Y o$B>yEu끷[9'#7EȾ4'{giE>ϳ0|`hK#|֡laU(: )٠k onC rieyUgª+jq []Iەtw%]lWgiéjK+w 8fPl_dYšwdKƎ㬆'7ě.7j#mfKleljÌe=ҭGālFTҁ~.r-n=8H˲JN}]Ŷ MxY 3\_RF݇/}߃ky~k?)3IhtH& J"aII`342Y?1 X@ry 0n&}[ ƇE RṡX"N$3}Ghz|bCP|L7,Sol!$a(]tHhw4${죿SlZ>gJP d}/ΘEp,.̀ 2heZ ϴ\h[Аߑ˖k ^S }SBd5!jVk嵖ZZZfͶP.L^Fiڋ_UVOy@yvb?y |@ Ųy 5p%mju/Dg #[$ClP*N`0AXT>?V0Lu*06+䄳%^_bb+o*o'ˇ'[#A,$e2J~R h̀F Shj ZDd2 RD(`ꥉx"3$Ҳ@Hu=Zchdmͯx)(#eT,@QHeCӇfm!Fjm bu85AWg=!Ns1D}UTb,0/1>*{W )V?MM1לV-97}X;(<%1VTN̷k!d)BX\<9! JY1·PD͡kq \s Էy, ؼ9X,g2\D&[`vcc.4Y^KŊ&i+?7\oNj7^~ť 3&~e?\J:} ^o[z;~!/,[x#oX2R kX枋* À2Kf`g40%i]ڋ F*rd;gsM,tb9ܐӌg ^cm#a}#`G*!HISX|1c,1]Kc'tCt0(0cO( u2c 6f*Ki0BMyThDP{E! aNu5HfQ!1i0W&M2 )4,٦m2[F`f(uHPHb?(L4? izT@=ռtЯfQHR}D$Z]-?(X(_&I$4ӽCR3 L!OCUJ~el̮rg3{jh{s77xhzp:aݖ35H_.WfcQ|jϬ>WLn}x~$Ѯڂ)W4Tn|D-.mq#w抝d?}|vJ37_pΓC~*Lw ';e nI I(vr:=;_.r/ k-+fwwҮnuowl(/V m]\Сt_\a3ӓyj Ĭx$eɬfcyMfiP9;Qw:pVL0TIc%E@ c=;LC68 AYRle lzM@TC`2dlgwsPo>o4\Nלa²RXiY/@mL[]Ed}L"0-e't?^79z\gd/ȉ"^+"$*iG1 H_<{BS7ٹq1*ƕ޺d:LXwFy,3n3IF$6,ԕxiKpti,bRs1OW~F1G3~̥3 '4˛#5o2zefgJ:؇ri6=Cw=?(+  R6ͅ .>LC'NP_3!VScf^O'(BŮ/89~\N>D*pN<8)E%K YnGhX[EYG !kBiwTiLyc.7_LHKE9 ;WHFn2_>"urCRlub{Y.@]7lm!o-8>+~d [Eb48dI.w!Bc[}8j-BD"/=v#L¡G=27|l䛧\/m#wk䊃HAGrYWc, uPIFH$.Xqf]]]lf%r}sw[x䷶|W_bM(uz5΄عL #զf;xSZ?C#b/YjMX[V^_2 +I,jUwfI讄uec;U܆Adl ^}圩=pƦS+$88`>kp=0]3v>ѽ0a*-ނ2-ַ-E=+ۗ-p-@R%;VlI; ŠfgFV^mEbT _E"R𤇆z|{bo?|b X[_}o۟\}Ӊ T} @ jvP=q/K0W |J8CY֡nt5 ^}wvvyӕPz;.uAt5=1Uzaz%M^yIJʪs'Nl)$z1PN>q7ſfoS'_P|HD`eiLЅ CMŶ[շ%t\{˹8~~4|!hCflN#^s/h\s3%Ki4' k14YPV5dR;ve9z8e 7),2`y*Ǟ;2`gqÒ+`2`/Gb^QȟOY{K~-ӈO֢Hp\47,fx0T[H }p xւ\y RuWH!Fu}1]Ƭa]hFyb+<#ylKJ_`v9yT^(8b[9+,dYYj`e4}2٤<}Z`dG?D=YBu8o`P |YudU aCҝ/$ Ki8F:d=@ۿ~htSHo,/?N̒vRv /\69XG: iކzP6gK]n%t*9.;ǕM]ZdsQvC`%rM;w]vd! 5JU̝C+R\-jy!i`g5mZ߬Q|1MƲ09۶X..iqk€f) '8TUby-84WFGCO}aN曏9Oz>[߾?2-zɟMc}JNH8]£t\ G 'nYL ;>BlyueqKzp]7jB'Wn[讼aN|"u֑h,rR^Cn|!X$e-ξ00'*kmi-+{K%wZ/snWF^_L7iR'\ >K"/Z1QA`NRc싌ʓ@y5ؠ$ я77ds<\>wSzw<FiI_mD(uy!!8!SGBdA}L$c^wJXJ˥I-/߻s{eWF o~zclppia*\Vg3\ jnČc[\hlw%G3.NSe0]m e& |.PU_ w OTJ&Id}CDY"h<FO\iգ(V-;gEc9`UmVsa0 $,)d0',6ˊ2@wji[QOn% [1eo$I쎧Z6b'i*L3GѺKgpY\ 6? SKekMǵdR;_+'G'ᛟyJ8oz.< m?V6!O(K, PG Q.BMd5],r\^S:VTXk 2 up7hpp\PhxBMwIzpQ嘄Vrb 0bƧ>LhXI\Mct}[\GC`8D[L-̎Ebr!9yʃ̞,M|0s"Sg= Rsbg$l:e0? G? }s9[d##en|mܙX_'ۿ3K||G;{btwȧOYqS!nBU"rʳ2uR0cgF cP _ lw]M:lr4 7RICŽXETXi_ΖտV]w9P@J\JHwڮPi[h[&G#w1~c]AOwԓE\)!/v(w;ۥ凹$Mx@S@ٶ¹P 2váqjq(yAA: Ds+u EKخbQ[!/[렓9}n@G0i80f)YM >\">`f*^*TO sIԹ zl˩WIjeg|Sw(4-oSʫrUهrU2$djQ7}N偢,#Yp6oWb<u(v݁ Six6<>o_Y'4WI;aV?vLLaڣ3<ܸx8ǼxU/uj.e W[Qʼ !mbb1c l !A 0cٽdg_<670ddܙ#ps$QPVE o^ܛ W𤷟vlgE3po|? 7FMC`f5߬u~І?3ˎx~:õC<{x-qӎv10;qPVUCտq& AԊǬˏY'Tl'goZ2im~z]ףL"Dw@D,Y;:D\_}LmImM>?zo7/zQc##WRjwL=w>{>}m]!m^}i&.ղ] %$H'[xB,s0nǍ7Ό?i(@WvbY?AL4kVYY[=`-Y.a ;477+T, Y}I'#`ltaBltˇLBH!91W%'tJTeCtFF$B}>{( 06ϫ F6NFX̛f.])0vp8rOFA"^_ sv}`bU9Fyg+Y`:Ng肙{LQD:.ѭNG?~<5+_=s룟eldɃ:&zv9^p֔ #KFceF3SclyS]&#c}59m} n3Wf͵_ŜBz:f1j,pɳ1A^:E(o7pg* M,S7YmamwpV"~Blˢ~9SI6i6n4.koYrA9q$,HiEb+ FCb"&'lǥ7m>g /ZU竿az 9UM8m1Ś 1oy''KGSgݯz_ [ ܃a3!:QqYy 8RKFyo9/?\N?Kۏ&(O.MˈCsq#>B!\F(u DN '5\W-K';Qgi_s7s>l?2+W;zdm|@ޞRz2O>FZP j}vt\]~_5l"(~k<_C~x*!& ?w?d=*"0=ru2ֱ%疜V.#[8 ]>bKj+ 'Ȅ#1oL)c"..'Ep8,$*"xzlFe<%C!.Ek͡'OfȓKKˀen^=r}[\,&pyU,_J9#F|;3GCqɃjOߔ}]%];~KϚO<}|_?.D-^鶫\Xw~kA(R#ʥYYJg\.U-{Ge4Cn.M ; %m炸K؈iJNWN TóOKB>t6aqYɄ՝EVzh-{w؍ :wS]ڞѿ77K%Iχ&*[2eY7p|+t&h{z8*,/p8(&r0s8P®a?Hۉh`bSm* sޠ^ X|\g$l5d&W%@g[0%+6~BW1~jRj?F'N2? sfCkINR=7%uX%ڥG./}RI|w^Ż~==V[vgڰwzy'u*BA+k$3vBx '2 (i2S Ӛ (& R?-%sZyWMbUSnme{MX-@:&r8qrM?C XM=wM} *\9B5N91=Ɲ'P0|Һ65kԱyrGwvj \.iC$/UD7嗂b\ߏR3<'٧V}(/NCgf\9ؐs-1i{aHY+)( 1樞^>wϵ>δ9ujc.poD}"#PUʸ ݌b$dd gSrd8mF"r5H|y&[ M7cB% %~~$+M&Eh^0fw/{%ū>zEwKqhOwjNakoaFvp啻oB9!dD󧢉XC?K.Es\oQ|?nl{H*ЀgH/%eQt.LGs<\|H-G;ϸ&z{|xQΆ["g7E ƾQr[Ɵ5yR)ԭS.{or4 nG?j$"~$?BHO'Ac)co9@02!NH XwɃ,)biv=c/~j`qmI C?0,΀d˒ XDRǀ%45+d2g-6` j7`D1QL13Xd1Xb/3XflnsB 8̙`Ü 8eÜ[ XBseÜsK aBYrVڶ2e`J6 38 `$'=4Ϥ<gr&MbBXldp} .`fDI'}2ku=Da/DZ=U mBp_6h7a1s`zmNc2Ԣ.ihmQ{{ veCl1mPYb(}7Ѡn(pҭ*Q kC+y5e-F iƾt(:Y?>=.44C meGneҧ P.x\ sěDp;rtP't;jF̼C+:>B-I{Dr#Ӵ13#*t_'dzڗnM%LGp,yf &F[~(50LoQ7FsY]s`uc>ƫy)K1k}vzYJ'JTTfÔ.v@[zwAam79FtoqlQm`kgzQcZ(xneel\,äOn>z?!݇,vzs;%rX=32lұNW=kr@ҔҊO"VnCsdLjLu4SlQ96Nўv&e_Ǹo'{}~V)foS4fƴѱY3&1,aղ!ܑA!o#IXY[: I#=DRc,Ji鿏L 2SҌ1Lbx?GSPmy+s /!G[Xě9B݌?Sʌǔdc8)cBF/s[?gD{ӽcT"]fJ)mch<]rYqTo]) 4bBLXiɡo5qz+4LAP}5:꠴, V] :#}cĬg g\Po)[S tkoBVٲ%_`B Yyy ^n< GdZhbDcW}[e}[a}c-5O6i0R-Xj֌oܗAi!u\ӕ {uho^#5b`.K OnmYQx]r5sٓ>s*6V4"Fu,W-4cԫޤNѱlIڿ#z)fjc?Zڮ?ɏheSVj6uhKuttwvovui+:7nVtuh :v{:,nݽ_٦uh)Z*K]=ں۶@ݛi vњVmӺ2ݫ\ڥ5BnT Z{;;z~ڏŝm:fi}ZZwv:;[;&vvظLZζnZGV}=],Nc+N{׶kQ醪ຣhv30϶6?:wB'D6twuu30P]o탶voKӽ9ś{fvlsKgOG{gލr3f^F}aOM_9/S4o>Qti=~STv2:8}lAVL{0POۦލgc(u" j놙C飽mVV;tvfiz4X;]htF[o&wuuӲzu 5ID{Xmn@ !=;C}؄FT=,u+XX:oS U4kĮM[E4ѻ  hڲ$1:odoNwvdtʰI3F)FRߦVq35~ &ʕa_!ηuy.]Q-\-[Q߰pn\v%<h-\~* r]I.m-\:Dk\nJ~pɲ n9W]t6Rj!D(tUF+4ZXnŜX;{ⅫJy W-e΃Bke+V-zq mWAsإ [-[j2 qZ]^Y7֖u̓AfT+3֣ff0ke&0ڙ~= w[^ moz{ߛ^?oKpƗ>z׿7in `&v Mo 6nh ne|iJ̵#z9ev1m&Z5mP畲;-M8џa B"t;:UZ#(E87U}⠘&7a09q9"a.z]欝@u\.īp!< %"2j!$MrQkK]㝜!vV­ |4p$8mvMv`sW{l65%܅zzzD ]r^$+&ϰSt/'1 } Vvϓ0G8 $IUVyQGN) ?jr5$!A$'& o 'yB=>W`W @ pU[k5h˃UeG/5HB _ ~8(*# uGr.p*32Lt@GB^AIZ ,Ы p/$24CxM L^jɋّZ/y'OYv ?\@̍Z+#xG RHȏ#Zypk)AH$7r #9ewdIjrvO$b mKڛeD/K}3@[ zկ.ۇ "[V$KKKOvmĉ #Gx`Wk@5@8g*pbhcU^><xh21L[_Fњ'"{J@&-_ȥk3˺a< /> 4z4PP5A8})"·ʮNBއ nF xJ8#+bk" Dy(R$RF9MDh04 1CiWWMvQKeR'E)$ydy,ˢDFxcqQ7W*W#X&BE+gEmhz-ynet+$lt/BVNΈ/R+EIiō1r& j)u](xa_wKS{wk=ϥŸfrsf'o_qpڣnJ18xQ+G𙺹G[S4`nSӢa! /O)M!Mݥ+!_A>| co_A,l4ϧey<wI^Ð%7̲ ,adYƲYnLg@?K.ZE#Z}]((VTV5Ape6?Gfa@.&g$GOc_Xs`!E)pIp/{Wp"XʈUĹԦ8a endstream endobj 20 0 obj 26575 endobj 21 0 obj <> endobj 22 0 obj <> stream x]n0> endobj 24 0 obj <> endobj 25 0 obj << /Font 24 0 R /XObject<> /ProcSet[/PDF/Text/ImageC/ImageI/ImageB] >> endobj 1 0 obj <> endobj 26 0 obj <> endobj 27 0 obj < /Dest[1 0 R/XYZ 0 1191.118 0]/Parent 26 0 R>> endobj 8 0 obj <> endobj 28 0 obj <> endobj 29 0 obj < /Producer /CreationDate(D:20241025162710+03'00')>> endobj xref 0 30 0000000000 65535 f 0000076182 00000 n 0000000019 00000 n 0000002600 00000 n 0000002621 00000 n 0000013585 00000 n 0000013607 00000 n 0000022559 00000 n 0000076496 00000 n 0000022580 00000 n 0000033615 00000 n 0000033638 00000 n 0000033836 00000 n 0000034203 00000 n 0000034427 00000 n 0000047506 00000 n 0000047529 00000 n 0000047725 00000 n 0000048088 00000 n 0000048306 00000 n 0000074968 00000 n 0000074991 00000 n 0000075182 00000 n 0000075688 00000 n 0000076029 00000 n 0000076082 00000 n 0000076314 00000 n 0000076370 00000 n 0000076570 00000 n 0000076706 00000 n trailer < <38B3F4A8E4842CF8598B131F075BEDBE> ] /DocChecksum /0A2F9AE73FF63FAB35DE543C60B431BD >> startxref 76877 %%EOF hardinfo2-hardinfo2-1331e88/tools/LICENSES/routeSVG.pdf000066400000000000000000001133141474767047500223240ustar00rootroot00000000000000%PDF-1.7 %äüöß 2 0 obj <> stream x}Ke9rХ7 4 6l yڲ!dڐw|_<țUYS=*5PwG=|ċA2"x}J_JDIpN"XBk{^5>g& DuYv=+KF[09߃,&acN+{$f(,q.2k LGsGsŀip'h=0Ϝ|5r b Ɖ0/֚;syPM|*.o7 t4w*BѠk`:ڵU4]*ݭ$`^ou~F'&`E(W A NV"J{-^&t2dyX)b](Rv-_M$rN]fPDABD(ں*x WTykDDN~'`Vz?Oi(dm=hF%<pԦ4爑IU]I(` h~QtBT I䲥h\PJ ZpJ&ƒ(aМ zxd>3إUV0\ B(.n-ar1IlT,E9V+\f OBZ`j:|a &sj;Yhf5IZ-V&NUtyz>@3K)4ζ\"BMu'{mزTZf]kB_{+пB%LEe:'XľRL %ƪ.` LzKlk Z[FY Z%qlJ)!?TZ* E& ~[ 6MH2#l%j`WJ͸W@ q=QTZJ(aJ{0":*¿!K ᯺`,O~fiM5dtaREah**< Z`/R F!,SXj uQ ^JpP?Z@t k Dn%RDMbC.7ȵ[ A(vT,gׅ~T"&#[eH堧"ua-D㮤;%) #Q]WV?kV[7JPP=6:bzJ )]MM6vQLť3=.q2եf];\7ML\a0^o]S݈{u5E ζqIW/?Q!xξ1++_0ˤk$4m3b襔ЊƘ[X xKd-bG!CZT|1}%f4!nZ2ϥB^DбXVA52d$8VN+K&@~2&HL.bELI˸ZE07n taalh 2cNVQ,='UMհ.Mm%tJ)qꜶr#s3̍Xnd7.ҵ %Ⱥt!L\ ҅eyr <3Jazي#.x$QZU cr `#@Э}m>{Ǿܲ{춪qU a٪1W½hR1 =6/2RtœqB+LNOoJ[dۄI3[EQouz])1fb9YwuNLGj.ZX [TiP5Or&fM;0 }nNKjEqmwDcAlmz`.cւ6/eh'u8d+U9q* /--c';٣©n?G=y}d( 6LM57WAP@`_h'ѻ&NNɆS/y Aʭ#Ȧ$jWq ߕ]3wn[. 64ML~u=m Ku_TRM> 9v8L M0k- cys2fue7g]SWSujX5W{^!ϼ E=k]f~9?]ckg"86xu ]O3s y2Ï'٦nA4w@d%]㍋Pj}3F^g qż+uiSEQM렩uYe;?qu`Csi4\l.AU#KYeŲV:M.?fY,Cm?9#?x?YQFH?^ZOI@~T~~+<?p|Ǹ sfPSaBҿt9W|-2cl/Yis:a5(\~lIT N~ϟt#n9?tBHp?ۈRw2Z{2c}c3| 950f<~U&Cor1kA8򫣧49a; m U6K;9XxZAe$b:JyT^/H!#%7s"YerC%Pݢbvqz&F)crOSxr9>̶BO" 7rF˯G'T -W@~-S43!3-a84 iㄯ̔3DGu^_dBGg 1`-;@ԋ|qCg@kG.($2ZqAaGvX+e&.Tqx¢"bnG9o8 CH{yGśw0K^¦^_U/Kq  p zsvD tiX_mnpKf04I+XUfJGwpHh`H`31Safw:afq!q G2#(lzI6@OLpA< ?0Ád !ANr*80!ܳi“!)h < *1xc(NTTDLH1V2R'iɼsۻDd1 >lТF T!/2E@xPčə@r1CLL1BuBn cx 51+5Jݹp\Em1Wqه ##`'c.c`>7& n8C̮|53&d7,JnyY!}eZS1ٗe]X<&+P.S$n\8?0kT`L J%9g<2qCC o !?* gOnnpj. MW:L`I-^RzkXze0n8͔mDrqp EʗBrb\4^R=r3.)w3oQ7xepіC 0lB- +}XTUyg6VD)e,W [uE]v !d8A%'kjBpqUU#2b9})'fhA-i.t̴0,r̰%4r/´74vDmw1+CH-!Rmk \օbe06F/N[X lX(|0Ͷrƽݰ[XR&Aa]X-7ucB||oדݗ@O?!OF,~vncb] 0Yڮa}2[pD$Ӑt iHM{kg+֑];j%n[,iҀS2% Cݺu߇R>64&ьp͊~4" w_oWb }1=IF|{Bұ j7CDA|rua̘ k\{]/- 䊧.2}'xڪ Qjkz'%m2h_T0- `\?03օܝ,`d2RĄr o# L\崤U+Q*ccD f0Q1 a1Jq101S3A 3A0AM3Am3013P[ ^L؊2c+NHU,I!wf\ښ^ȶ!nvR5ȗ[/Ϯzqwl­{nEq;]Dĸr'mvڹ)rΘ[\w&owέ;|ftF_ܣueeo6n[ju~)nHrQ;\nE9~ ynv.&NI,o;b!;V#!ژ̋h~"#/.õW^E6L㚻|uH908MŬ3_1Wl 1BS8=ɴוpgA&t``n+в0f ԅ]if t[C鋑F0cN<0BkD( cE25.Rk`MC7m6?֦f!7||J\oc`26AӶfAz ̑*t=k:+0Bi AH;$HMf݀A 8  ͤXM arͭs v!C!,X .Q4SA {m2OF ̛Hy1iTAkX77tkBJiiDR56ÑկVyjk3-R6]51 l0"a!MC4CK'-j,}e+ mzPaۍOl ''- sg[:[BJ[S7.An]ƶv)t{RK Pެ)?.?j/_ˊ*k{AJDǢh},ZǢhM?iXαοom>-chJ)_K<0-%Fb"'jBFCf# !HKa(Q GdDïi^)!K8Fp^/" K(ڡg(< >#f`DZjvOrn-Fba>N4SLv " RH-9;R<,zو韣T,cHkgLfBfn3TyhR )G139"9Xy^oؿ{3јXM\L|&NM(mc(;O5T G)z0ǀy!KeD,<[AQA!GH3r2*`=#K SĄzS̄(*~A߈bQqtbLV#u%}mZ\l[raCsa)Wu3qΕ RM%2V,ҷҩTAuPY(2w*o-ɮ=\VPQceU|O@W4=G{9 -TAUs8n(0ҦpG@`he*803@6PcuPcxh%X w(Q6JlZj܍oѦ^p]bX&a1l溔M2&{5Epچ&hֱhDyWi~Npa Ԩ3w̧ L!Sk(O>57^~'ƴp \+q` bY(pƍ u_sIrWZ9-'::mcn^2(tν87 옭3 Y[}L.>fb_k)wet <}1 6CM>6 6 6<ؤ4ؤ8P`Хqַ4׷TWYESu1[7FE ue/!؛_j ߺLq`#`6@S$VD}ez4 lZ`+`A,7pK=n! 56ǤPhlp3dzrM0밙s0 6̡ف1Ͷ&]CmT6PmסõT(=\BJPmVmgVmo|c&MBj ŰLb&[]Nc k'mQ^}K4pC1M|rO 90rF i:uILgs2-n9gSP砬*߇G|ZDd#vMn*;ZkdvګAbg>dI!zJQg 8}ftJـ}[M&7혭3Cϭ>*bkk)jduMtһ:o6m 6vm2m2ڭBx( iphIަޡI3Ԭo7Kzgjpu._W/!B)_†t0V`@Zj"B) AL|;˵kx߀8Kq S=ZC~JU1"܀v#F Z+P8inHxIrP鍝>PcjMG6PcuPcyQ&hw7HjljjlOѤbIXdpKiܤ8(cr54C/iԛ迠P^wa% 8q-xO(] :eI`cwQr%t7eZѼaW-@]QYlC}bԭ{҉LjQ(Ѐ=4=tA |7JlC3cm]:lc I1$۬y6]B[p eCƙCywe~4iqO+Fmxhd8(cR~64HF%7Vk? %X xY@0走"n>F1XJ - ح7X@J}#w})z+ۿ ^AK8}V\'`} W#B5jjƦPonhaa(e}5EEL/ Ч-rm k:ܞ,J1/ity&.Vn1GjU/I# B5F:_MժUmT k#0M< nUV K4!F$wu\ӨoΑo[Y`L[^05{E}&KhUZ,Nz$Jua{ȚD1#L| (ԝҌr$-(&=RuHz Ru4yԍ$ȳdxW1s{La"&pѧ+\S6!ģ.Լ=&IPT U1dka z>$tY-숓̬ Q헳fX8Yd I^f97&n]fLKD ;j1G+K1 W0+ cX>֨5cX֨?.RA@ӿ TFg͈~=0220E& 3`fa^H %={<J;0e.5g$MOAADD2u8GGe2WFG. z`k2G(^4^*EUv2vo~C㻩eÆ)7voW3Sc? Cvӈ$**j3r:7d;}ov,{;RH+@Px9$ˤӕpH߮oWjd>PkRCMvp:Rۗ)h-c=lojhrC 8)w <[hޔ`}{o07"-2 ٗ='_ }ҾX:M|9Dש ܗ_ԍiK-`2nL8!SᚘЅb2Mm?&oXpZ1fӧצO==>ㆰg+%c{hHū]'M= 7}4ի`Ö-2^|qkU2կwg@_`|[=u,;{؞(eo_ h{|o񍓍7V1x|}[f0CE34ev0 grgtviդōog77&nC^<¡f-:p~m{cX>c7ZJ%>Gx9i<4^ tKBmk-5BW ^Kw-}E6MԘy\] jXyݢs::(|~ag3I }Y|pLÅ慿I)\|xrs_g?}"c=Ʉ!Gbx*qDl@uE(-UWjS՜ </ hflke2H^9A0C ߕS^4A:o[lG4܏1~ @&pXр{b1Be;rEioz CϷPv+;,?c#_+k_\jŻ|[VEMѦk0RUqLSC \r&@& ,hIfB8gϫqe_,mhv`vYt: X}xr*c 4eiKE3M_iDOQZ]|@bpjɨJhL+V*<!T%'BVRO=v-V{kw) ǘ=#ReLRLotY\{LIJϊV➙s1}9?u۝?=Н!O@& %3nUs]O\9EݘիEqjVjĨ*b30}^o(1ʇ~{ŕ}q*XøiMޚe8XX˸ԩ&@QQ%  Qx9ĥp5T9'R(|EɁxq]/T=Uԣ?qGǨ~;&e)Nh 759'b.e2DJ8/]CÜ#_䑌2{GۉѷF6 _@x7oEߦ>2oO,7UM5iʑ=p gǭ^YCWN0HC'8¸>1E` b8@Ќ eƗ%;݄K8#DbC`ֺ#֫} ph=;n񔜍 l@ι[_7yAT俅WUYmTD fqaVϖ#(f `ՍKY3 SO>+BE Bma5.Z\Rxi}Kp H[@➉YVjXz]m7=oT[3@fuy82A,-L) -7qq|daJc ;eqf}@gQNEH۩(vZOˣc<G_I Jx65FU-2 ))UC1npɎ+Ew$+`fp")׀0$~G$tv,,LLYKVfX '/ O 8>ɗ`b74:!NnǂSW%ָ'& 0]zܣWՇ)Q fc$<(>>ѹ~nvi8}=02>b0MYI B/£ C%5 Z8Ov$륌Ze07<^/ |inPe^=x"8, ^ZEE/RMiVvF5:eUbBFP0чeU_zgD۩hÏ{.c^nehc L>I<L}!U&ô mӊh)HSfCA\@pAbGz~ 1xEF!$ #UnEe.ז¨e.&hZa탘 iϻGч̭X'F\`mb"}4g!y S7WAMSwAiŤUYchezg5`/C0+˙8/z9 `;jDT3 G֕a(*c^BmrF7W_ @L,LOMƍLffʉ,سM10,18l- IX[.e^=79 |5d= Ӆ~ =xr}\+r}\ە'/+^H ~_9є;;avC ǜplP8O\=|yRK.KB/˨gKCY.MwB0piW+gS2k5x ֎bPg|q@ xN-W0 b5TICSY08] /OZZodiQY#0Κ 5I+H:V(k#ҫoF2Ѵ^N81l܎'&KpRSǣ n <ԗ6iw;O0#MO݀# c!΂ye,io  S@6ev-e7XQ 9br:40$Jv]XE Fed"`&t(:zMpX \ LSֆSGgH+H5i+qrFiO8wV; Ne0~Ne22/dh!e3[MCXvr&PVAcs—zv "~A T T^[ +,7yIYjKFezYJ;3W%$> EpAJpne0 M+UsKnFD;(|O1pN: =LCfjSZMb3$ X(!y͡he9yq>Y1̰µ[B; \ -F>YzCwwP$"d'rEoŐ9uK&E|-%rG Cq=qS&{^KO> _n\[J=C!Am*(I~3M8REc)^Ij^ /Ia\%^)\X\SSgGYYMF}8ժ%ރ9}׍溱g*SJFkRy[uu^U >:@&ޤr]'7>7;A~׍FqoJ|82oLb52DzZ )bb*ӫBX b?;c-6映*)@U;⬐L-PCI}s)<=`6RDD"1L+ь!U89wVyc]:.kcmO-4,`0 zX *OuS9YE$Ҋ_ 7Cډ! GiY& Wu1QY/`!? !6x1GrV^` PTKZ^R`^Giݶ0xa|yAt,kǖQ+޴z(D1߯D ो EA{tg1 Pɘnh0.s+yb򝅕@3OՅaR Gr@'(SR" c*m'%л^c+ @s;Ny/Z2gvQ}6Par\eLi;3LI0.yǀAtGW twN*^cLuj62ʼn .li!Q7rS)D:vZ:cU]Z1dbXzcmӚC hay³m٥l|۲{[E$m[Z PKO/Ua..C+KF/i3n9R5/D P`{_OmHzKىsb&1+j\H6pKMMiLz@nQMPql_ai;/>:`>r[s8r ֙qSVwM}_ :B8cg 3˶!LߦV\=Wq -H0όRfCÙtӑNM,pMx8i."^))/f_܋]ɺ>&x*d߫`ԕt 6x  E?@O_{b&cyQ'_FBS`9~0l` &I{:jd' `jW.H[]CxF+>jbԹ,j~/-GO}_4 |Q|Ocg~j {f3J5MExL;R iHԡ; Ux9ӴbdkDkYdM}} GĦ tE.5U7i?t;rI㴌]# |;d?l[-1᩽c`+-V} ~zdETyFjMRuU?ntFe^g:j?-U+ gT'ћrS'huIWVeęvc56ux0/s؄=|aKo0y%U(C->a0E<8õ*1ẋ֫o`J`GQD} S:P&bGR@[Gܻ$ـbZ_/:_-t壏==ʡY%<4tcSbҹ9iS#{ APFi18=1=܋1f^Yd}'6%8ɣۦM` Oo9pQ(]<\|.N M+m˾Y;hsP8d=0ZKs&3wVUQ_~\G71nwO.W=(+Nz_z3T4?UYʚ{O>[vw;nfw1z˘SF(MQ*Tvxc84G:FEy:8f7%\RЅRڔzPXUV>~Qh[0V.\| .+>F= 7g#,K즔˴rkY+"r(6^-ǤiTvLc _v^ޏOraDAi=Ier&D(!!vئD|!GkO~emYk%RqHʛIHKAr {ye/X)U5g'I2+[ͬ8H)guqDy6xEURMVʡ8pTk EFg &|NJBfUeNS*p%뷣}$'צuyuiK72VWUK:ӛ5=0eA_9v(L14/!Cc81i\z䠈F4uVg0pi,׎o:Jm. } 5=R|bm|TW3ʑ'A{fڧIY/xbiGm;ftDJOE:ZMy-0mpy#_"0HߖlymN3'<2ug3h\Y[dWmf2 DV?3 Oo } qWYY"'U*_-##HAгV.W-"Dj|#@IM!$lPP~T%9/ F/=7D?i[RיsUNObI~WPltIG›6isKOdH\m~ဠv%p {o4j:~sр.?*#;?<hKm*>]aV`Y1Pz6i+Ho7+!е@܆=g&I@[ hQ+TתPeFjضbdc@(?FЏa=B?0a,~2\@n՞Q㉨{իfЌ#\vyb.n8TΗTf%MJ˞eGnԭ`q6E_z|̤74-Ƭlgn` ]k_%<^C留ܴu懏le.߅VH?D8`CϓѦlD^xs;K1Lޞ5^Y'PAMÂu-OV1)x"{a1g./+ީjJF=q@]k4t̀& |l(g yW̼dJ3*TɌw>\W5~ZP"7$Xl$#2m+Pi ApJGd|.iԷ=ri=@~SP]S/1 }ih*g5KWc5s`JDK_1D(?#jKa04:4{‡ CVe[M`M|&F-dS)YшD۳hymo~!@LL59@,RfſuT( z_Uf=EFDI>$'Ue-PJu1LҖXkhA1y!o\: en)$ʏi`T(m[fm"&6Iw/F?+UNxB^+eļԯE{h`܁c>("z,kء'xq ObN砨5s=u'O0~&Ҁ~$\.Pj!7#(& a1_5ªʖQr0|!*ۜ8bam6[}41ƣo>XE`xFT4HK@I+oF`9dƛ1fj“m. 7by^r=PUiUvZU\ %ᘖP1ٲ|"m$Q)xٝ:gF8AUJs`Z<"P,*<ެR\\m.J dbt]2wUT΄> ڍn) ϥB@XTD bz;`^鈘y0&3,K@4?}fx l3mYAfl&w%Bz[lГ~!87~] -A\hz lt ԔȓAvpq{NS:`u6 5t`' c6׆8}3}atٻAs}c_/ؗ}~oKc}ؾ}l~{.c.{c3Nn|:+f՟F}`ڲ7(kX|ÿּÚ52 88`ϚZT̪Yyuِ'A,ItkZnQr4:f%oi-JSvom?{8Ry޼|1(x ײSAG2PaD{RSV Ϭq" b1cV-Nj-8cGQCSk*h_%@RXDaec5cO#e0O;q) '`P&ItyF?s(Ƭ7hb{w9]==K:7(*irL_^!` כ8ytDp)A Gkw@UjM9'ć4 GbaCK] -W4r;īA(b O (,L#G`ZA`\K%>1Q>'MSբʘkg:ClZ[|bݤ"&e#pc:$ uP5{=`fǿk-bȉJEiUEC/핆\Qdbj 5Ld-U&@u571Bjk rg?^ށ'juaULT1kOTVyhc//nRAm}8I/vΞt;M,7k]hXt-Ƣf$@՚65lKb(L~"/!x&T޼J'ևobs=j5\q|UFۭ $<`+ Rڴ Yha m3 oMt6JT,!}WٖbTp [ůoo|X/[{ q DH7z"5NMB1C=G L?{F nzz^ʟe$f4Pˆx6 _LUHdhby.[t}JW QS [X5ǺcgvFӅ$&fPIӫYק*BjCKoX뻼U l-:g3w>5!;f-CkMK87]3걲NkҺ6`i+^{ʗDE@x IxbNDAc^9sFY@E8i,*S"C&G(oc"&D if| \/Qx!Dg&= O1Z(1Nz RYu"fXX %dPL&q:-/_Qx(e0eT-WT!G&K5BÕBUS`*j4zLmf2j5nfPfnf%f]&!Lqj&fCLv]5 3h&YӭmV- +YJxdG^)sԔuMA랂ej,L,^>;W[&szqd%hzϠ72/樂"=Lb4RY?-aIdzp endstream endobj 3 0 obj 22474 endobj 6 0 obj <> stream x{W_bp !ɥ\44eLVSD"dMK.4Lk3teht/D.S)|Yoϭ39g=?Z3~}.Siaaaaaaaaaaaaaaaaaaaaaaaaa1OKK۶m|޽ӦMKOOOMM4hٳnݺ_:iU'''vڑH$11ݻw6,...Wԩ_>F%3gG!2駟OJJի5 oN^^Jk׮;wrb6mH>`K~'EEETCרQcQN,X@LRꫯ|׮] t|o6vؚ5kvЁQfΜRҥ q_qR^V-LzׯQIΝ{qljwR'-bK9yy|޽9V}0*:qH:99モo믗N:Fʑ:lfͦM;C999/lm۶)࿣ WwA@믿XYٳg3o[l;tIF?,}buzǎYb)߾}{Ν裏FxjəO<򸸸^{/R1޽{98LGnzݺu!+]^x!7ұ \{,?XoGUz.WeҤI@oCM+zȑ# P05 znYfW_}2W}/<5W\igϞ5jԊ+bͷrRTT$cƍ֭r4lؐ_z%,}ǭZ:/6SL)qWKJJڵkR_h+%\꡸٫W^5N;mQ:7իGAx_j.T@'lU]r'ZlYA5j(oФI{ϭ%UY=z[-k1ω8e.'Ov!ΐ >k!usLH233c=۷oRluQ/c] ELV_'᳆ vر]v7oht\p'AsE\K"'=,)σ_~Yyg{kvsE5m#K\~}|VV"5 ";;[+Rq`Ɍ=3~42`'SN9(L)Vڠe˖^y啑cá' )4` .)k&_oQ^݃<,_\@ R^K9ɣuw^w4?wygx8sN |Æ Zso۶-,[o2aڠL 8Ptꩧ VYb *X'qqѕfCa6<ʪv42W1T8khxD_psj뮻ꫯugΜ>va\Yf{Ϥ(aI>vZ׳3s't.?^. 6L IG$YX]Ido{#Li~Wգv,UW]&wMʉIL4M.a\'''Թ婧zl х%2Fj6|2ܜiGІX+ڳyIlDnKݲk0ZX!Henbϟ/ӵaR'4Zx[ZȈDcn?GӾRpg$yyyRNΝ|F*7"KG '[ӓO>8Xb̒@t_gްv!뗚ӧO 1ѩTӑVA}.at_~hdvCNՇ磻={ЬgiZhNceΠD@f͒{LJb<F>G@T+Ug2/Q9sH!d_~\BH]X 7+BtvMĄ?<3Rx)M ܨj wC#2Gn&j'gQ y)SHŰI8sq$9a\WR9+Jqq1\sbBBɰcRcII97Lu5zU6jՉ(nj#>s.2ҠAϽ`{zwB߿~J]Xp8+";ȿ+CN QȌ3'h[B)RH6{iy7O _S$fuQA qySpG혚H4Kv94%%%Ph@?}'?UXtG`=NO?l%#5 }h1M4 IMM堧OՎ%x2{*=}&ܰaѣ7ocNgZjqC \Hhbkժxh U;"|N\X5=NHHpΐ^!/[L6t~˖-Rkx_qXAiC4ncN܎b9ӥ%P\KSSBXv'ތ"wW(K λgnj/3 [gy^1kH1kW:ȸ9vf9!!+J`Zu"_xQ cլ HWGd}jjII QZD}y睷yf)c$%l#|_LO  O&GWHXuMٸ"u:@q3qɶիդ޽NޢE =y@;R/Zj[=..Gw„ }XƍU?X0ڵk@5k~3|p>Yèo߾VQWޠA> /Length 62 /Filter/FlateDecode >> stream x35г4U02131T252352(E M MA"0]0.S4sr2Ҵ. endstream endobj 5 0 obj <> endobj 10 0 obj <> stream xzitǙ`U5qqhy)J"OJ& ^$DJn[cc'/q5W|g'BaEpf*j]xxyvڿ\:::7 v@{pj`hmH:C~!ˍ Ǟ7&ޅv3C/8ip*5)l [XT\"JŲʪ6XWj 7GZZㅯ 蛘Zw]x[7~6Vj W+W^]NLyS#Ʉ%):1/BJ HyqUDd5k)D01̂gISS+J R EeQ \3xgƷa8VC2ȫ`?֧+b* yB$ DՊy L`dm$S1th@\'}0@Ni.Q+*R~.hH2L_X̄" fagL V+Y}cj#Y&ZNʝ^XA DjK8,~r`ZL>1Ï |(~cW@ð'´dړNnݪPa!KhU1Ӗ=2t%$:%Q ӯ\Y b1*éL/=_+9L.7}=  }2Z. dsi(%|7Z)iб1x/ɬR>7o2ˁ?*?;3 i3:T-|6THbx)9gL|'8&Eehx>) P(8 n{GZh?rIJtN%ӄf0pgYR-R$tnZ-T0Y@o!GiH\-vC I@⃨ c{Hx.4r1EA~lۊ&$^iƔpJP k 'VA[d3Įi4YI%5$UVS^iuN H/v]4clXrL!2`pV)~Hzs/09YЫPd!n1tlK즛R-!eFAa;$tJ)PUH|9z6.d튶Dj(5M [YΩ8 #H%9!/Ta{2෻x8f6mW6jcBR=d,S%-&N T w2:5)&ʊ)O4m!Tm_R6N*\n6D"nx-(5~@, lR *N7'5hi=u0p*f=#Q š8š^C J \r@r>)1nǠIǠ)g'tO {R``P`P`P hE. dtQBK. ftQBGA7x(.SV Z' *82HqVVpNb-6cU{eu32H E8;7;Z R2H 2H. Exp7ֻZ AATApE)#zVJpph0%ĕ u-iCT}rqiD0&w!B ! VgQNⳔ,ILI~\_k9zFi5Mpnh0Q~5$*HV8PI'^]:֚3R'ۖ|Oft~/~ntmD͌moj_.BM=DCmI8NF.ٔAEZ;6cKᲶBuq[ک"wnmEv nY`;Qeͪ4B,1M^H>C~Ȍ;a--2xsjJ^W+UHCTA,әG/qt5r/)u'$Pq`լPyQ*]nRE^É5YQKL9*:`4 o?g?Ψ<xb> : >}lk=Ln Ѡ6U9+Y hHӂٱ=x&_Ipxgg!eCLd?R{|$"1>=A=yi r+L@i&_ nE/"}i,Z_GzXq^ ra+ۓBV1GRR T@P*[HTǴRJ1Hx09YX+l*k-| .4jo? O 4ӊrB93 trb0`d7@ /c=52ӂN "m˳t]h Km!#x@pZe FKhLSCqWq6+pEsisq~s3YHx"}A[_ -I<{e/5 }WƳ_!iw%ܰ֍ܨ2Z涪!Y0u rE2X&4kZ6 "VhGw5x&] l}ŵsu5]bzٷ"&(m@VaZRP+,Ui2rbTR]ءpMꙢnWE=lp끥{&,&ơIym*%8/gW +hxs bwuKwys_ehiTC-./JOKޜx}{l^+VCo 4mo7$K+74Om@7/@˷ $_D[%-l&dZ,\=:D)R@J.6_ F4ssW盠 j F5{vicTS%65,JqP[=MgUB;IK{؉ڑ,+l9xb]8|쾶jO<}k?T/Kн'TGg[+!w=UѳLbUT9[* j)Ǫgfg#EC=@XHpjhugU`X\TMEᆝd.I}7èeQPɝe}ei슞(~q̶itfhvxUB\N[O 2?9ho쁙mem?3ԡ԰?Fxj&^i٣*w;M`Koo_9~G.>хǟ[S3v|#3Gg'>3ɻg:EvK_4d !(pVQu[QS7Svr)<{ߗ} f_izzӝ}Q>Aڂ:T ި17Xn糋8+_ҵ~]؀\W FQ2k,pUAjmSdDF`= *zDT@+X>9,L (8TȈ-'S__QWUV;Q1X\_Wпy>D>C:վkT_9NΦ}c}{b__ݟ9$}Xxj<Aɚ!\n2t"'>9s}˭ޏ6{8>ڸT1Qc2&* M\1 v].@ݛ,N]&-LdC)HϾ!7%`yƌj=VS*BifAZ4`q>8%0/f*76ϛuv8??kMd/tdq@1#z+Gm~Cd't5>$2 uzŴNXxOzuavq1*vY\'ڕK@o4O._1>~Jo^.{h(\NJީ *IgO "#ۼnA؄A$X}ǣcoç1Y?o;rێ`s8DzSDf[<@snѹ@f'k`3I$wd-+ RC`*CǼYҢC`χ$.'RKAyUDP4+yJ.5vT7gIXNZtrl]]m}<oW"ރ+ӗVo 0;qH~)6Fop&=dsx -dQҐFcZr`prEF@Fu $ؙCKpuBq[$\UJ *yfCTdp VqpZSMhU7d#555`Г}>X˙7aq?\ds8qӀ , ¯bQ eXΡeEi2fc%BG[9s<0p̗CljZ 9#!&Vjķ^}+)|Z 6c_kk2-UPz0QTS %n lsP1 kޛS4r?7-^"2݆8瀎ÌCGe(WGt{A#tLҬ}$z'=<;w({s[/+lO# k/,#g=b_4iCih-o}npVRQYT]MR]UR.d;gY<z1+oY!$պGD}oZIx0I(pJ:nO n*c%xSNXs>VB~iJws0aag&yv'"TfpY8ihYˊV79? O߫FKJX/2Hhq?B:Tú^Ҟ&)~XPUN|?CiUS"$f.C9bEƋ:yD^F;|kL~h8!EJ\G_"u$JeEчfru|̯GjVVL5˒ AsPwO endstream endobj 11 0 obj 8297 endobj 12 0 obj <> endobj 13 0 obj <> stream x]ˎ0E|="<:RФ8i ,[fRT=C??ìp .ik3ey=>nsZetvC=d؅k{L}>5 *V]8:_[s d=tϏ/1edҎ]MMb3\B*Z: CYr:ML:EiꤍhQ;1/hS@~kѮްl/1;j%~uA& ?r5 4-5+ܥ}z^jz;hzd*ԋE~M^*x6`Ѓ}zp聡<z(Ѓ!4K$ۙ`6/lːإ%%> endobj 15 0 obj <> endobj 8 0 obj << /Font 15 0 R /XObject<> /ExtGState<> /ProcSet[/PDF/Text/ImageC/ImageI/ImageB] >> endobj 1 0 obj <> endobj 16 0 obj <> endobj 17 0 obj < /Dest[1 0 R/XYZ 0 841.918 0]/Parent 16 0 R>> endobj 9 0 obj <> endobj 18 0 obj <> endobj 19 0 obj < /Producer /CreationDate(D:20241025162544+03'00')>> endobj xref 0 20 0000000000 65535 f 0000037308 00000 n 0000000019 00000 n 0000022564 00000 n 0000027302 00000 n 0000027565 00000 n 0000022586 00000 n 0000027281 00000 n 0000037173 00000 n 0000037620 00000 n 0000027605 00000 n 0000035989 00000 n 0000036011 00000 n 0000036209 00000 n 0000036757 00000 n 0000037140 00000 n 0000037439 00000 n 0000037495 00000 n 0000037693 00000 n 0000037829 00000 n trailer < ] /DocChecksum /945267C649B8604DEA4D18785BD2AD31 >> startxref 38000 %%EOF hardinfo2-hardinfo2-1331e88/tools/LICENSES/sharesSVG.pdf000066400000000000000000001166751474767047500224700ustar00rootroot00000000000000%PDF-1.7 %äüöß 2 0 obj <> stream xˮe98?_qkM"2"u%ЃFN$PՃZ̸GydVj*(|Ex}H/pV2k0z?H/Zi|z k|^Y+~OCM_c֒_e \Z^5.fyk~~?_x}وYz ҵ{%|u\rzy>EhCpʅHb|XsAlY%wA"}H'E/=f=t^ ^5>gMd$}3 Ymlt7& ^ ܆=s/fAy{I|e |e#ʬ`= c{Z> Zt6`?srlp׍\q '\7Ɖ{_؊ZkޙC ƇjSq~{L!ƯN'g蠣qS=] Dױ@ּʂ˅Xww+mZcc>=pNlPc){pQk% Bp L6]\]{y`%M pMnK9'fmSd"7Ez2DUUWua^flۿ`&ywy/s,G[O Qj5M4爑w!Mls߆2O J_uJy h|s^x ZbPsMap6BqsG$%Fci {!\ʯfn'0k륚+. )X "F1)jdܫ z%N^Dp4-[A6܃4Sm64$|5Wyx>A3ks8y6 {pxn̄; ]eݵ髿B T4Y_}4Ǜ+h MUc՟ Xke6c#Z[Zfӳ RLRi(B5&ED`2.&X q~+W)W7pQRHJtZSڋ[ n?ka`l^tҚRddaRD6:y4􆡿@B!p5 f2;֐Qg-K7 6!)T[)ͦ ^1E-xb.z[.C?AS҈md-2TrSk|-r yи+gcmm(+ϚF3И*~sFgbkG*LIԒt6.U} &L.GJ5o~3pK ѷ~7zu#1矈h[}c`SO,_ݟaI6z$u-tw͈AyZf8(n1l]\mJ|p){[V-$3cky.1{,4BjTc୥`dX"= ,aF6&l]l"Ș(#w2inSF̗qo%n8CCOxбУ>m$zL'U6T6A/M:R5yb/a)5 ߴW# J6H`yvǘuݵl u! n[}m.nn\ 8s#0d -0 !L\mD !_3x7;]lpm ฒ9:{ j+*JBx'mɎbGͦ/x~au`o<7{\㴂#0GbFy@Wݟ$/oY7۾d&>>coaˇ9-rmj<!8 \/ ,>k ?@wSU빇BRyGWհ[!]m_FN@2NB}$E`o>n_0;Jb, #?NwK3fxMwk1bg@D(?1_\0a:k[s@q-ӂy0m})67%+앻/ O! #ݞFx!*ـm|ᮎ!lܚy9 t): 0IFD` t6*0ϱ~gRXie/9V IXTGxDBĀtl^" Ϋ汹uJH25y yrmrܴ݁RA 6X͡5nc1la޶w -ւZnS3min-[GR5p34N_A&h<OQTG=y?p0h]lqu+olkF~oAضt)5^ǽAʭ3&a |>bAZ.ڗ3նΝlh+>rg%ϴ,}URp5iɱQf:if}%\a;ziݽU.ďij0Qk=^!|A Y=k}/x[72V} ^g݆O;3sy>I-3ؼ_o}Lɫ!]L-f{)fո7y뚵ISEuTg;AszǾѸu`Csn;7Ԝl΋AU#s-1׿JޚE{[/o׿,oPn_szɉ_1|~)|59Os|cdcǟׯ|G}/_Sz{x^!r\ͨ\,1x&Mnw7gr~N? ܳ;~50hs5? (fY%~_$Ɩ߀]ndM ?@Y-,MsIOF{oft.^'l7.ߵxү{6I~@W6O]rrvJ_]g-q9t\z[ 1> Q#Fr~̱5:pbC)'ͫr{"^/-b G8JFv,mm_q&5h 4hvqg? (CqI/`#=by8JfesJb=I-zetWM Օlj_IVAdLMh@]\ -{Sh|LO$eJП'.B~c_|1=L7s۳ j'sƝ̾\?m٧@ԋg ĵ @\ T̆[x"$z+O1i&}#&\-F[U$%Sagž8Y8tMtrWq+Gt~Mn~Sן.- e-V -́ @yx.6. ebpuV`'\B̺Cs?M3x1RWt9%*)6MO7R`0{.>.'G,Kn c!dmX*13 1Y#frɽ*6XhϽ+5,0X-0YM .3}**X| f0z4`hp?Z!#L;D>b^b}bbݜTԦzr}51n&Fij\3(--0?؂ށZ`ݞ0#{ػ͌0if!ڶti8L_7@5v(7S@wMajKGt;ѷ&qr]})0#Ũemmvmhe Wnc}9-#+wŨ!Jai(5^m,?K-0Xy0Æq2?L-0' pڃLEaj}bbaic&FRaj֦c5z4s+6xLJરwf-ͦ߆ 6ov3d#LOXڐ/.n]BԆ 2k'p=^k0ܓ1U厎벰Yrm辔˰P3uΚ㰴saܩ ;bN;E[ WG[[[ O:3T#^1-w970ˏwϑpw?>~ӞHn=#n'n،Yʹg"|c? }k d^m:[q“ -q|lݞ"RQ5D h"yILoka\ޙcQ:)hPn#vMCEͳ4 uxEi%3Z:c0HQH0P|g݇eJLL l0!XbDh`S6{hd@ȇPCI$MFTș?kܼR";H+gYW;!61\Sc0dix,2'L+LmB, F&:y=ߘEN2aK8a\8|us-z3bg ];w6~90>;{LMm7?nk^m?qksva~TmY P "]H}1Mh_5kR[:d"5)\0A\CVc$2hFFQGMd /Am88ʻ@ ]܆"LAO^f>D!",[Qs .| m6&O0&85yV2Kn2#z>fFSt3cH/1cV+/}/FltU(<߂Z+pqīöޞGdL5;2:AŌ占!0";4nΘIkd­ýxJIO< NJ:,U)w繍8 rX6;Sspg{XX՛@}QM6ҩBR3V}Ѯ˼pHA)76!w[f5lTU#P ~͉~@TDŽ03!c|cvI[&.NbrK ٶ7i_^o x4T98L\ |'S߈AW8WhtĘNnAȯwq?q^W`L8 n nD&pRL(>͊KE/gǹbH. |$DO<nQ<+aGkq|)e`0.1`DT̔'T N船 3քȸ"l2L4Q"lHIkqܗ-g[GƝcBGn2;2\͸6s|W!;3.K7>reh7,Ѓ=5z)};GaޛG2;BU6B7抷~O|[< POɢD̒~e1. C;ԍ#.*X+j* 6* Z!A\忱>*yG̩L˸I_[ZX$ Bɂ* +굲,B5, xWbF=2o-4˪:1&r3A2c<Ф6 a\ jUޱS*+,HU/X*jDYm`أ 2KYi75#حUe];76V_7v%U87N?ps%ZLK ϴXE}rTiK:MFǼd9P+pQQe8O5bm*L[.^j狛/cS`TY_)rXlE 7PISä]ZcaDgH!^.mɢ7h=,L}Ħ |J>g#N3N3BNRSPFq_$SodlE]54pjYxնuY77$jG1--yC^lLߺ*a~ب6ꇍa~ب0 >oE#; |a6iY` +@)ca+20:TUAAdf3'ؿf;BgquR ±_YO@Y96۹vA}zȇlwjsEQA%f-*wr>B?M-}978ܾ/G /367ˏ?~//˿֗;vOj}Z 8*(8 jI?_Նpؼ7gG Mf Xmk"!pO6.t0tAF9n^3:ېB?Ɯm!Ю7*vKBUz݆jkF2Bч*O`~| `am nn񉙴hьͦ͢ 뙓^fC47NU7NrwΚ a.-i8!Oc,nNT8Bt(O+LΖqu8cP51k?l*+6!~q55qYF:3k,RH#FjAMMoc4+T?VCr4{/>>pv(gL"Tc2XblC:QA]>FSg#͐gd_VJN+4ob:ͳ&aЋji*ʨ*,4-?[MWܮ>\ vrlU{i~0bwv$}ᇩa~ꇩaL?2{:jm= #W|Xdg^iQ%̛$/i  W;(| AgJI VA0+yoKWx+9\|>HgCw'Dn !9hCJMI eʷf/Toq9 N|!`~2t$g32eF͟ $ib5*l尭y y6ZO &p!#Ď!h1bZww B+aRӋ_Rg H?T/GxJFE2w1ߖe3еu!V tq 嵤.e 'J h ܡOZA G |˟˗E>tqA{9/UzM3Kc3(8eǺg?+M »@ lg| =:A#*jYOSz9?@HEp+1x91>V[VNtY-#TڛgJs2?ntY\-ҳ"Eps΂g+ؼ|=u[ow!BwO@A;f}uưĀrЭ* +'K ڃY^-7ClU]QG>J|y#4=ʷ.RJqI8E %V(VMK/F_J:rɰ3@8.׈GNbxR|NL 1 x#.k$ۓx$1\)3S>aS!NS1^ަ΂~3i,t3)VSL1;ǙvV~5|3`w`P^[ǭ CHoua5ZB^ lYۼ:sx}VG#̦mq~ݟ F4>1|?H }h|G?meuYp2W6.4b>|eDA2BȚx˞#B:"SC-ÀZUI5޸}_q`b h_Ww-؅n5^:8dG/.ȧGh/|Nf>̣֢xxc+jǼrc=Cuz|Apw0qccF V^ 7w #D\zUż <፹q&Y O8u̙h<7pb?C0Qr4&lިay63䈺o)zq+#0p-=mmT hKM+n6jUOeu୓3;5 0 <؍zRYV30'7pPz0nFҔVF 3鍗S _.xw(jO:,Uv]UdHrp8n`CSrcv{Rp`| bjeR69Χ_Pt'`à xvXч޴]峝<^ ,]RN_A E7"|_{ i P F&(qIs=~@@g (6W,[,cWdʋ $ChKXyuXY!Vf!"{痬o 1X+8#v8НgjnJ*sTZtcc8@ꠍ0-CҚMsDO4w*Gх!YG9U<::/?dl,d!ة腂a8|DzƐzXT; .: /z!瑚IU`rwpQ(]{,_y8G/PErs>jw`ה,Z0+}Q%Qy-y 21BvJ=B\XJs)|fSb>3S4m7W~SpyVfRC"/\ӇG}u`tpq)),k0_,pjt~p%j0+bg9WΒӚwS"4n,74w(u`&BTœTdYHk`-?`P~~CPaCQ S~ĩcQ/%(7fb5poY#Fȇ wQG4f{uҒpcF3YC4kSpL< w4:/WyF'<3 ?vxP$1ĜvTބ# <da]x}y=(^q#Gm# xLDB@D 1^̤j2b\Kҵ)`M9K$IO`bxۀ HE=a10q cY`0Mȋ? ;RbDWuLVкH.sc,>>Bm(Žjσ뮛[]Lo#Lƍљy8iTQ$+b-(̚R[,&^N3_ i=[wBj3%`p;2:_3 nCt0r|B}EB"*uPQ4IQb8%^>rI\ {Sx6HK-CFB人 j(sԎ\bAn, ~k0kc =.bi ala|ama3aULawaac)ܴZ巵 V;._ x.<qk 2/ݨLr3 O-d/|9Lz w4{ ipWMC:*<^Sb 9`8զ(6EnypM_o8@ ldo.@ޒdshQFq=VJVNyЉf 9 ZA/uGݖݞ vwoz2q8.;m|yO+?):S;:&zE4T֣P9N`/xgpbR#0:-| 1m|åx^#XgN;*+/oS mѳ@s(vA\5"~2}1mY+bU_G ^7BIs`bB@ه gB шղ' `\%95 ibnPXq[l`wԃY/UpfXn3vKos] brƱ~Q}lBt.7!Πܭ 6ޙ`SgF"|ʦ@"T/A/S=NOWLFl[l\bRv)npj75qkcFά7cNg;3~ya~?zs4^y}W8 }|Pha/R@\3kq-oլCS-}]g,G_p&n0_*I  ޶@"=@\lpPx3lthwȞ_ZOk-oFxt̀3(y4xqxv%N8/}{a!d6jo}&e)Nh 597#*of XA8]dV"LaNߞAyVt*G{bMfom'rU6Fv\qGNkO+Gf#|Ϛ}|bCS-j1ЮIn0",5WcNp XDzM_C3tMi2#(:rP>l;չ@(owTVf:n [߭/~lt9ݼ *GdLuGR鎣Y @g}(n, | ƬAơ,SҘ}kFc64LC`Y ;oq ^Vynyx0-,3<^r軜$̐VTʳA_Qj(JB{dRu6jew~glFǪ׿V{a/N/h|-pKb'"PMn"OtppIѽ঒CAz[(kObX)~mӸ5V.| KoA&>a@zl0o9?yOP(1ȋݣDcB (6|ۙƆD܏ 97y@t6SDtBDr59sOT|@ی1[eo0D (ƒUcư>8R>9psmLņKظOs`jPY7Ew><ތrcfͣ(6#1-0XwJ~Dy}x)h2K-L,l ic|򩗩;f' j! :BB+$f_˜[d`bH,)8 ډe9pVJy7.Zv&b&="=c2t>Jշ3ML^'0 :;!vA詣4_ -_1$rzd_j`RrƐNjo@tNB8Xd@h#B3vkc\Mrq qҸ =\ 9y]M9]Ug 8t#1Ih[ceG_>7> `6dUw=_̓|a~Xaw)_t-zpzǔ~=07ό 2ąizD'lyMi~{Otĺ #!\ 39[Є{G*%sR1MI)5&R mwNQ@,)̴fiL˜Eٿ׷1nRM-j!qbQ Q'x*~#r,}[g*Ԓ>n `h!>cV0>"{Phs\ƚ+1 5sbcج8Ķ V`mL}d^iRdx4[w;O0z FG8 汗-1N{[FxЙC{%.{@♻ gӡZT.a%- D*yk#O5&'.'k7_G?_@׏@uqՈkd5~W-j~ u-#kuO~vE{(0ۆm;Muq;MIYlXO9< /IlWv2˻' n=0':lAI> 4V}(g"3MƆ6`T#L0F#~; [rȵ כ:>C>7Px ,9z=W P)L3>mgeOT | (&T0akل3 gC?g}jT9Z;_|-e7 {VW]0`K_|AhEf oKT{ 4qDZY @HpL{P/48f$DQ<-a>08uLv.; I>t6\']!ܟ# oYdtM8x(L X0n$ ҲU+Da7Q0ε 9biWP챺#ɵ%q0X wOˆy9c}zp^{Kr?!sJErgI:#/d^ ~!*2͠-ԠMKt՘y{c]p bRpkKnʒq87S%wȣB48Fiѵԟ.6¼VHCҞ?`F{V)G+Ѱ他g}%ϪKU8 J`:*A} Iԙsӹ|{(twZ *T[yqLe@‡N|@W\EYٰv'YVTosvQ D"nR-^Ŝ"(i)gʟU|ي}{3G1rY97ZЅn4n2u:zyt{{T5%\T$+"#c)KVxv b.|.>Hg3 g9h*'3!V0qƥ_67~z5_U `___WׯDq@`_>L6QI(OL'DHO|j5y}9"8v yx_*j2c{f4@n>糊'vF)SZ=n<$;]Xiq$߂(7x-i^%?i`$8ط!^5Yމ#޷=Aa.|76 إ'> !6q6<(C\SC$TؒS KWyT>^ƛɪ(|{P5õi@ ?߸ 7?1 jis 㙃Cx`* ^Xn*:7߷=^bU֦ .wRS1P޵(q}rW7F(IlPܤ},,+H(@wz]C?#Cgsu$T-BW#=COBk;h5 nnߍ~P/f:.B #Jd4 xӎxwtivzD- >+IG'^17ƴ .Xsx|} W|}}J k9bV hNF- Xkvw az2Go[$?# /y >K2$P$>&K9+ qrZ=ۍB #BIP]! O}D4oB: %JCN> ObJ_/N)ZdrNp3d`Ik24 dx7.^ C -\4}ojnNrmZM?\!HKD,#!3u@%Js4Z5zA\xdb vE>lQV!1AO!i7 51)E.ĕ}2K$Ǭ0ŠXA]OmEnpX>&ؒJ,}1`98L=ި(#mamΚsHRII1m]m]\Jߩ(pH|2'j#)@Z#Y}^pJ:6 b$r +DF='Sr NMP&R\xb.Ul3BbQ4/x/,+]} Zk[XK*,,(8bO8l5[2ɐp;?}.6OvF3&HKiF`S9O'i T\^o ü|jC*nkU,Ar4qF&%7_|&ɉcLQ27Y_,d%_HK[A(LP:gyb;X҇ kt~:4x6I($$MuAԂU=RO"E &(3٪5Q3fsO sK+'J4Ԓp+X=c&,G"UAF:B₩W|.BHNTS- A?2~Y]L~D #P̿Yb)ҮaʒV!f"nYz"[V0~e%DX)(5yPTrZfgI:&+oXg%gSExMV0ɧbiڇFh:rt|@p ؗ6;mAlnHO)A] ~c_Jxq%Re|*?×oAe8{1H#vX/A]QIiC2Snpo'yJf/?6e?6e?6e?6elS4{ݾW}q c'n'kc| ?VFKS(a<]E>L*j]=bQuJA-B2Y@a56Gst6VK@xJlLbdIvw+ۍm䗶F3?HU:MIV-ޗr9s47ClhUQg=&-P ,nU{g??`K.?\elà byFS5o#dLdy7L&ݲ|{Tx Y4݌/ZNW,ZԮL`FwPueŔߺTKiw0~n`~,L.|ߙʾG4ps,0w6e}]E{=Uy1l%Ol~|< &KaIcɭ+'`P&J|)x2=kDMAhtetK =҉h ߅9D&cC[щh4΀!s>ݴ!&wj_ʑV.wRXSBpPD:,E3H% :%oGnx#' C 9#&G$'D4Hᚹ쌭'{be!Lkg:C4ÿ04h0G WRdLOVB~#X렞p'{3UMB-@9{¨>g}Z{9C#+z&b 0vD ڰ⺗jsÛUv- ̗Y~x,Memس񋪂[1wnn3L^ T+ãHk]u]T קX8azCe ѾxXObׇO~L Œ$(b_" L5X{H!:Yu,oޘxc089\.?F?.MXOxGw -kSUBIh*Q.-.@lP9Fa`hD >L=LdP?tg#۠]Ex;f DLOJ1Eu Y) ¼%X) 9A93%p @Fð|`5Q=#z(\ϭaݟDz {I!݆a(ȜlfZ/,G[ ^UZ+1uVY {C֛B7zwC?Fɞ -:jRni|eZXbf{/n]9;|O޲tOaHM2ʗ SH©akHoW&&F ev鷹eA@9V[x*ubY@uV[S:G>0@u'FuGSs9F. Ays,YUumt&R=Q˂c8ŷ&Lۢid,8k~+X&S:}Us^"?`J0bWƋs4w6qFZ:oL._]nHY;ńaj#41 LM=mLyL]MM)٪ҊIr6-h`:2841iWc2SšŽo57^򜥽_YYTrؕ=#KoZ&S=oqg%ͷzh|S>&^}/ϗ/L 9f&5BmuϛبaIQ;2 endstream endobj 3 0 obj 24349 endobj 6 0 obj <> stream x{W_bp !ɥ\44eLVSD"dMK.4Lk3teht/D.S)|Yoϭ39g=?Z3~}.Siaaaaaaaaaaaaaaaaaaaaaaaaa1OKK۶m|޽ӦMKOOOMM4hٳnݺ_:iU'''vڑH$11ݻw6,...Wԩ_>F%3gG!2駟OJJի5 oN^^Jk׮;wrb6mH>`K~'EEETCרQcQN,X@LRꫯ|׮] t|o6vؚ5kvЁQfΜRҥ q_qR^V-LzׯQIΝ{qljwR'-bK9yy|޽9V}0*:qH:99モo믗N:Fʑ:lfͦM;C999/lm۶)࿣ WwA@믿XYٳg3o[l;tIF?,}buzǎYb)߾}{Ν裏FxjəO<򸸸^{/R1޽{98LGnzݺu!+]^x!7ұ \{,?XoGUz.WeҤI@oCM+zȑ# P05 znYfW_}2W}/<5W\igϞ5jԊ+bͷrRTT$cƍ֭r4lؐ_z%,}ǭZ:/6SL)qWKJJڵkR_h+%\꡸٫W^5N;mQ:7իGAx_j.T@'lU]r'ZlYA5j(oФI{ϭ%UY=z[-k1ω8e.'Ov!ΐ >k!usLH233c=۷oRluQ/c] ELV_'᳆ vر]v7oht\p'AsE\K"'=,)σ_~Yyg{kvsE5m#K\~}|VV"5 ";;[+Rq`Ɍ=3~42`'SN9(L)Vڠe˖^y啑cá' )4` .)k&_oQ^݃<,_\@ R^K9ɣuw^w4?wygx8sN |Æ Zso۶-,[o2aڠL 8Ptꩧ VYb *X'qqѕfCa6<ʪv42W1T8khxD_psj뮻ꫯugΜ>va\Yf{Ϥ(aI>vZ׳3s't.?^. 6L IG$YX]Ido{#Li~Wգv,UW]&wMʉIL4M.a\'''Թ婧zl х%2Fj6|2ܜiGІX+ڳyIlDnKݲk0ZX!Henbϟ/ӵaR'4Zx[ZȈDcn?GӾRpg$yyyRNΝ|F*7"KG '[ӓO>8Xb̒@t_gްv!뗚ӧO 1ѩTӑVA}.at_~hdvCNՇ磻={ЬgiZhNceΠD@f͒{LJb<F>G@T+Ug2/Q9sH!d_~\BH]X 7+BtvMĄ?<3Rx)M ܨj wC#2Gn&j'gQ y)SHŰI8sq$9a\WR9+Jqq1\sbBBɰcRcII97Lu5zU6jՉ(nj#>s.2ҠAϽ`{zwB߿~J]Xp8+";ȿ+CN QȌ3'h[B)RH6{iy7O _S$fuQA qySpG혚H4Kv94%%%Ph@?}'?UXtG`=NO?l%#5 }h1M4 IMM堧OՎ%x2{*=}&ܰaѣ7ocNgZjqC \Hhbkժxh U;"|N\X5=NHHpΐ^!/[L6t~˖-Rkx_qXAiC4ncN܎b9ӥ%P\KSSBXv'ތ"wW(K λgnj/3 [gy^1kH1kW:ȸ9vf9!!+J`Zu"_xQ cլ HWGd}jjII QZD}y睷yf)c$%l#|_LO  O&GWHXuMٸ"u:@q3qɶիդ޽NޢE =y@;R/Zj[=..Gw„ }XƍU?X0ڵk@5k~3|p>Yèo߾VQWޠA> /Length 62 /Filter/FlateDecode >> stream x35г4U02131T252352(E M MA"0]0.S4sr2Ҵ. endstream endobj 5 0 obj <> endobj 10 0 obj <> stream xzip[Ǚ`w?E'><%x!2 J"[uX$%Z-˱屓878y[vR3J)1d8In3D~"ckv,a}}+Ȁ.!%fOŨ׮]OƵ3˴u] y7Oa8B Kwf2 JȾ쓪3sձDٗH)/Rb5dNaIHX: 39%S-%LN&sĞJ\J"UA23jp!H?frdf6X%4\sbT%.$9RizL0#HJkؘδ_4 ip-R5r26pT SHz|u0-6fI7(BId&$CjZBi Rd?}Rz7hbPLf&p(Q$3 IYILK1)i$XLIjI.bC>!ۥJ؅|E۸f]7 D8#SvI0 TM t4 #3R4,YRIA$kw4Std*%㬸Z'½CyysȚK֔I!3H Uț c͵~`N@$ә H wfc} sDWJB;aaCs4-YŤ)"\R|Ȃl(LR a gsvmHz8u9AFGNrs>ݠos}z9}95}s<}s, Yg(,/iQH:)aѹxXa1xR^H*} dQ|Uѧg%G> }V|Y g G }F6a8=)@Ó)fRنT!!mibH `✉'5љHnPχ4<d ay|Ubk;-`ɶIpĵNjcO0rMSnrH d]H;᭐ TN -g@II ^*lی&Ddz/& ؂4IsJb(}]%uUP$iAkRSw$vrUR&gDI EUIܓ ]`cTX;}!SyH"` 58}T"e"@WɤGVЅꠢ qic]b7=ZqǺ 0%4۠SIB0ػF oW%RoI`I)r .ɕJ 2\Cܴ:ܴ#> Q> `G'gP|,:uP'' tPk []Sh&B/g7$ୡVv-(ҬTp[Dj(!@mRྰTn oA[aR?{`L5f`3#QC1CwC.L3(}sSh?cǠAN&3)0EϤ4 š,šš<1(tE#/ -2(tEc/ o[7 6-;:}V7`l@_z~ \OYP0qos 8\(LrbTVpUX&9fYbQZb/`c've̠9kzX:3}8{CU$nf6gt!1!@ʀg\Shf*Qw^/X+'(v$фJQyd,HD IM9$"\잾٦#L+=}kunc={nOܽE+`#U˖|tyyb&&7((foIta@DqG]D_,lXQ世DKc`J.WciGH@DvB픫R1` ySI-pgnqlnXj{kw}ĖzC40c3[Uo\0py<}.ۨԷ_Drkn7~_bvMETKղ{~[82m_l+QZR7W]u:m0xL'&GgF̖:I$ОaD!HũӴDiA[mV:r^RB|=,b,:bw oWthw<\u]|ٓb{ |,OhL~W(>-?595do<}_}2Ë_&7_gpkh^[#NQ97 8Ψ>{k|MYb?\^?r5ҭwkr\c"ba|qU_5P=wвN 9_S J*jCE ĻtE8l+ABhK%a™29(>:9B: tsK5,>; 7&,1%(ẼtΑmⱭ؁[Md(}z0䶖ؼm=GܽG|JHNpVAKBº=,_D7ڍ{uF9#y/z.E }7l7; ?zh|Hl;30slIN̓kq!N~;V8 ܧ_ a@4/цDXZXS[![/k}/Gq?{PUcUC@X U=f-]%qCVh]}5|&9tCL[wj9|a|ML`#'Q2ZtSctVs!nF.-*;PIp(6r0+)o9rx> tRWtwsN{Uz¹)BcA;EFCShP-.µBW6e^ج.jAݮaDN`W!ˊ7ftozϊU; y rHz8«MA=H~yUr.QmTTVbtW %\88ƫgއoF 6ж8+z8ܞlY\f,--ݱc/{NI 4Oo{䫦we~]¦P2J9/,\+<8> GF%CջFj:ƲDh*5=&s,VrMB[{=Zm lPYA[8;W1]]ˋ,p _Ǡg>D3/t[7%6w}zOHşydw*g#!]h|=.>?LKkoKxw%4k^xk{w\N]/=8|3w==E>5;Lە]M 9YhxzT;z `{p/'Hy Oy@I¿Ki7F&~KyPO_pS&U}E!YbQg;:?;GV[#2 ,,Ӄ] Qc{uZ ;[Zq4 U )v %uUu@h$fN豊up 3 uA/ h7yB~psl<4~XU/>wQzs`)n"5 kՆy"* /6lgrhͮ-?$nUFkmz0emq$AR.]To4Ϲ{LWјt<7jx)n4Zn,\Z [oWEʢUBYPHQ/@ $ۇ^׈?ʿ ;ca9 ʀoqB2cm. ]Yw ;ow{X(D hb55-z%HCC+Q953'Fwgkٸ@{˫1SU/?p&{_c-4Ǚ U$3( Ґ&c[rે ~x?4:ա"")bw%-LC5;x!RIګU"d6=TG {QqM6l`\FwR^qWI >0ղu^2{ht]g47;?<-ct|+3[<3g&Zbvw=rd6f2Ez,ljU&#efK@XJ}3Fqgоth@g~K{,o;EuJ_6F:ȣDu1VqVӊ(WCH bUH@t@嚛[b&k4U] *FH$娕lGj8)nԆi+4OQ`#y֞GflEsV ˍv4[k0G߄h~ 9N<=$PN^NI'<;hhѹyfDFDF.` J k o-5n/I-|'D)բ;wDP/#~+ƤԼ5k/j("EBѮSE׊~={KO5 Ն?[])ȴކRm?}G@D2X& 2FU/270x~Q ԗ*0X(+02_R` O)U$iP`= l@ e؈+8PpYUS lAZղ `^9q&BmP`Sqt݃NC% Z7 Q`-W@yisN%W3@s gg(S4"8: s=-B\cv3fsF5=ɔWwviI"4(A7u?^L@ T-d?e y,vN0܍6Q3Ml.3+ll=|1MN)pZ:o N K@F "(Py:G0;ʸ_\ҝ/3c22{DǘwwQXٸeDtdyYˊU׳bzo s?-!M2aw^@ jСZ6vI{d!m']SUit:eia,ͫ2|j'B"jhI4JV|ܗ,//=,`%>C_t*Ci)`g:rt|C ԑ+KP)N_) Ӫ[NF3kW$#9:g endstream endobj 11 0 obj 8199 endobj 12 0 obj <> endobj 13 0 obj <> stream x]͎0<6fF3rmfA"䐷_W+T_l{n~LCs szv >5!=K'FҶkeZIs$ S_ҧ_c< Xk=~!ӬCS?Ɛ Q nTJW}oL9z&yaEک.|tZrC2fBol_Bqoj' endstream endobj 14 0 obj <> endobj 15 0 obj <> endobj 8 0 obj << /Font 15 0 R /XObject<> /ExtGState<> /ProcSet[/PDF/Text/ImageC/ImageI/ImageB] >> endobj 1 0 obj <> endobj 16 0 obj <> endobj 17 0 obj < /Dest[1 0 R/XYZ 0 841.918 0]/Parent 16 0 R>> endobj 9 0 obj <> endobj 18 0 obj <> endobj 19 0 obj < /Producer /CreationDate(D:20241025162519+03'00')>> endobj xref 0 20 0000000000 65535 f 0000039085 00000 n 0000000019 00000 n 0000024439 00000 n 0000029177 00000 n 0000029440 00000 n 0000024461 00000 n 0000029156 00000 n 0000038950 00000 n 0000039397 00000 n 0000029480 00000 n 0000037766 00000 n 0000037788 00000 n 0000037986 00000 n 0000038534 00000 n 0000038917 00000 n 0000039216 00000 n 0000039272 00000 n 0000039470 00000 n 0000039606 00000 n trailer < <49E9FF94CA8EC248DB34F3C82D25EAFA> ] /DocChecksum /71E31ADC03B8198E50B77EF245610033 >> startxref 39777 %%EOF hardinfo2-hardinfo2-1331e88/tools/LICENSES/spd-test-eproms.txt000066400000000000000000000010411474767047500237130ustar00rootroot00000000000000SPD test eeproms These are settings communication files according to jedec standards. This is not generated nor binary code - it is settings files for debug and they are not included in builds. License Public Domain Usage: to use for test/development/debug: copy eeprom-test file to / (root of file system) and build application using debug. From: hwspeedy historical PC's DIMM modules DDR5 modules from hwspeedy and kernel mailling list: https://lore.kernel.org/lkml/cf9d752e-0137-4a6d-85d3-fbe69293a43e@t-8ch.de/ announced to us by t-8ch. hardinfo2-hardinfo2-1331e88/tools/PKGBUILD000066400000000000000000000027111474767047500200300ustar00rootroot00000000000000# Maintainer: Mark Wagie pkgname=hardinfo2 pkgver=2.2.4 pkgrel=1 pkgdesc="System Information and Benchmark for Linux Systems." arch=('x86_64') url="https://www.hardinfo2.org" license=('GPL-2.0-or-later AND GPL-3.0-or-later AND LGPL-2.1-or-later') depends=( 'gtk3' 'libsoup3' ) makedepends=( 'cmake' 'qt5-base' ) optdepends=( 'dmidecode: Memory Devices / System DMI module' 'fwupd: Firmware module' 'iperf3: Internal Network Speed benchmark' 'lm_sensors: Sensors module' 'mesa-utils: GLX info for Display module' 'pciutils: PCI Devices module' 'qt5-base: OpenGL benchmark' 'sysbench: SysBench CPU benchmark' 'udisks2: Storage module' 'usbutils: USB Devices module' 'vulkan-tools: display Vulkan information' 'xdg-utils: open your browser for bugs, homepage & links' 'xorg-xrandr: read monitor setup' ) provides=('hardinfo') conflicts=('hardinfo') install="$pkgname.install" #source=("$pkgname-$pkgver.tar.gz::https://github.com/hardinfo2/hardinfo2/archive/refs/tags/release-$pkgver.tar.gz") #sha256sums=('342fd65fbb9c8e28f467a9603fd72759d7159a1c6d3b68299531945d5fd9470f') source=("hardinfo2.tgz") sha256sums=('SKIP') build() { # cmake -B build -S "$pkgname-release-$pkgver" \ cmake -B build -S "$pkgname" \ -DCMAKE_BUILD_TYPE='Release' \ -DCMAKE_INSTALL_PREFIX='/usr' \ -DCMAKE_INSTALL_LIBDIR='lib' \ -Wno-dev cmake --build build -j } package() { DESTDIR="$pkgdir" cmake --install build } hardinfo2-hardinfo2-1331e88/tools/arch_makepkg.sh000077500000000000000000000012051474767047500216540ustar00rootroot00000000000000#!/bin/sh #called in build dir echo "Building Arch Package" cd ../.. cp -f hardinfo2/tools/PKGBUILD . cp -f hardinfo2/tools/hardinfo2.install . tar -czf hardinfo2.tgz hardinfo2 #update package version VER=$(cat hardinfo2/CMakeLists.txt |grep HARDINFO2_VERSION\ |grep -o -P '(?<=").*(?=")') VER="${VER}_ArchLinux" sed -i "/pkgver=/c\pkgver=$VER" PKGBUILD #build and install if [ $(id -u) -ne 0 ]; then makepkg -cs else chmod o=rwx . sudo -u nobody makepkg -cs chmod o= . fi #move result to build dir cp *.zst hardinfo2/build/ #cleanup rm -f *.zst rm -f PKGBUILD rm -f hardinfo2.install rm -f hardinfo2.tgz cd hardinfo2/build hardinfo2-hardinfo2-1331e88/tools/archcpack000066400000000000000000000001411474767047500205410ustar00rootroot00000000000000#Arch cpack message("Starting CPACK for Arch") execute_process(COMMAND ../tools/arch_makepkg.sh) hardinfo2-hardinfo2-1331e88/tools/build_and_install_sysbench_risv.sh000077500000000000000000000015501474767047500256530ustar00rootroot00000000000000#!/bin/bash echo "" echo "This script updates sysbench 1.0.20 with riscv beta" echo "" ARCH=$( uname -m ) echo $ARCH; if [ "$ARCH" != 'riscv64' ]; then echo "Install sysbench 1.0.20 from distro" exit fi echo "needs additional packages to hardinfo2: libtool automake" echo "" read -p "Press Ctrl+C to cancel build, press Enter to Continue" #Latest release git clone https://github.com/akopytov/sysbench --branch 1.0 #update luajit for riscv cd sysbench/third_party/luajit rm -rf luajit git clone https://github.com/plctlab/LuaJIT/ luajit #update ck for riscv cd ../concurrency_kit rm -rf ck git clone https://github.com/concurrencykit/ck ck cd ../../ #build ./autogen.sh ./configure --without-mysql make -j #only local install sysbench sudo cp src/sysbench /usr/local/bin/ #cleanup cd .. rm -rf sysbench echo "Done - Sysbench is installed in /usr/local/bin" hardinfo2-hardinfo2-1331e88/tools/check_license.sh000077500000000000000000000031461474767047500220250ustar00rootroot00000000000000#!/bin/bash cd .. rm -rf build mkdir build cd build licensecheck -r .. | grep '\.c: \|\.h: ' >licenses_all.txt echo "LGPL2.0+ & GPL2+:" cat licenses_all.txt| grep 'hardinfo2/util.c' echo "" echo "LGPL2.0+:" cat licenses_all.txt| grep 'hardinfo2/gg_strescape.c\|deps/uber-graph/uber-frame-source.\|deps/update-graph/uber-timeout-interval' echo "" echo "GPL2.0+:" cat licenses_all.txt| grep -v 'hardinfo2/gg_strescape.c\|hardinfo2/util.c\|deps/uber-graph/uber-frame-source.\|deps/update-graph/uber-timeout-interval' | grep 'General Public License v2.0 or later\|GNU Library General Public License v2 or later' echo "" echo "LGPL2.1+:" cat licenses_all.txt| grep 'GNU Lesser General Public License v2.1 or later' echo "" echo "LGPL2.1:" cat licenses_all.txt| grep -v 'GNU Lesser General Public License v2.1 or later' | grep 'GNU Lesser General Public License, Version 2.1' echo "" echo "GPL3.0+:" cat licenses_all.txt| grep 'General Public License v3.0 or later' echo "" echo "No copyright:" cat licenses_all.txt| grep '*No copyright*' echo "" #remaining licenses echo "Others:" cat licenses_all.txt| grep 'Lesser General Public License v2.0 or later' \ | grep -v 'hardinfo2/gg_strescape.c\|hardinfo2/util.c\|deps/uber-graph/uber-frame-source.\|deps/update-graph/uber-timeout-interval' \ | grep -v 'General Public License v2.0 or later\|GNU Library General Public License v2 or later' \ | grep -v 'GNU Lesser General Public License v2.1 or later' \ | grep -v 'GNU Lesser General Public License, Version 2.1' \ | grep -v 'General Public License v3.0 or later' \ | grep -v '*No copyright*' echo "" hardinfo2-hardinfo2-1331e88/tools/create_debian_source.sh000077500000000000000000000053011474767047500233660ustar00rootroot00000000000000#!/bin/bash #tool script used by project maintainer to test debian releases # WIP - needs maintainer to create .dsc and debian directory - current takes from CPack VERSION=$(cat ../CMakeLists.txt |grep set\(HARDINFO2_VERSION|cut -d '"' -f 2) ARCH=$(uname -m) if [ $ARCH=="x86_64" ]; then ARCH=amd64; fi cd .. rm -rf build sudo apt -y remove hardinfo sudo apt -y remove hardinfo2 mkdir build cd build cmake .. make package_source #rename cpack files mv hardinfo2_$VERSION*.deb hardinfo2-$VERSION.src.deb rm hardinfo2_$VERSION*.tar.gz #extract CPack source package mkdir cpacksrc dpkg-deb -R hardinfo2-$VERSION.src.deb cpacksrc #create source package (NOTE: We use github tags as release-$VERSION) cd ../.. tar -czf hardinfo2-$VERSION.tar.gz hardinfo2 --transform s/hardinfo2/hardinfo2-$VERSION/ mv hardinfo2-$VERSION.tar.gz hardinfo2/build/ cd hardinfo2/build #extract source tar -xzf hardinfo2-$VERSION.tar.gz cd hardinfo2-$VERSION debmake #fixup source from cpack - FIXME cd debian grep Maintainer ../../cpacksrc/DEBIAN/control >control.fixed grep -v Homepage control |grep -v Description|grep -v auto-gen|grep -v Section|grep -v debmake |grep -v Maintainer >>control.fixed echo "Homepage: https://hardinfo2.org">>control.fixed echo "Description: Hardinfo2 - System Information and Benchmark" >>control.fixed grep Recommends ../../cpacksrc/DEBIAN/control >>control.fixed grep Section ../../cpacksrc/DEBIAN/control >>control.fixed rm -f control mv control.fixed control cd .. #create debian tar.gz tar -czf ../hardinfo2-$VERSION.debian.tar.gz debian cd .. #rename source file mv hardinfo2-$VERSION.tar.gz hardinfo2-$VERSION.orig.tar.gz #create dsc echo "Format: 3.0 (quilt) Source: hardinfo2 Binary: hardinfo2 Architecture: any Version: $VERSION">./hardinfo2-$VERSION.dsc grep Maintainer ./cpacksrc/DEBIAN/control >>./hardinfo2-$VERSION.dsc echo "Homepage: https://hardinfo2.org Standards-Version: 4.1.3 Vcs-Browser: https://salsa.debian.org/hwspeedy/hardinfo2 Vcs-Git: https://salsa.debian.org/hwspeedy/hardinfo2.git Build-Depends: cmake, debhelper (>= 11) Package-List: hardinfo2 deb x11 optional arch=any Checksums-Sha1:" >./hardinfo2-$VERSION.dsc sha1sum hardinfo2-$VERSION.*.tar.gz >>./hardinfo2-$VERSION.dsc echo "Checksums-Sha256:">>./hardinfo2-$VERSION.dsc sha256sum hardinfo2-$VERSION.*.tar.gz >>./hardinfo2-$VERSION.dsc echo "Files:">>./hardinfo2-$VERSION.dsc md5sum hardinfo2-$VERSION.*.tar.gz >>./hardinfo2-$VERSION.dsc echo "Debian Source Package Files ready in build:" ls -l hardinfo2-$VERSION*.tar.gz ls -l hardinfo2-$VERSION.dsc #build from source sudo apt install debhelper cd hardinfo2-$VERSION debuild -b -uc -us #test package ls ../hardinfo2_*.deb sudo apt -y install ../hardinfo2_$VERSION-1_$ARCH.deb apt info hardinfo2 hardinfo2-hardinfo2-1331e88/tools/create_fedora_source.sh000077500000000000000000000025311474767047500234060ustar00rootroot00000000000000#!/bin/bash #tool script used by project maintainer to test fedora/redhat releases VERSION=$(cat ../CMakeLists.txt |grep set\(HARDINFO2_VERSION|cut -d '"' -f 2) ARCH=$(uname -m) #clean and prep yum -y install ninja-build cd .. rm -rf build sudo yum -y remove hardinfo2 rm -rf ~/rpmbuild mkdir build #create source package cd .. tar -czf hardinfo2-release-$VERSION.tar.gz hardinfo2 --transform s/hardinfo2/hardinfo2-release-$VERSION/ mv hardinfo2-release-$VERSION.tar.gz hardinfo2/build/ cd hardinfo2/build wget https://src.fedoraproject.org/rpms/hardinfo2/raw/rawhide/f/hardinfo2.spec cp hardinfo2.spec ../tools/ cat hardinfo2.spec |grep -v Patch|sed '/URL:/c\URL: ./'|sed '/Source0:/c\Source0: hardinfo2-release-%{version}.tar.gz' |sed '/Version:/c\Version: '"$VERSION"'' >./hardinfo2.spec echo "Fedora/redhat Source Package Files ready in build:" ls -l hardinfo2-release-$VERSION*.tar.gz ls -l hardinfo2.spec sleep 3 #install src package mkdir ~/rpmbuild mkdir ~/rpmbuild/SPECS mkdir ~/rpmbuild/SOURCES cp hardinfo2.spec ~/rpmbuild/SPECS/ cp hardinfo2-release-$VERSION.tar.gz ~/rpmbuild/SOURCES/ #create package from srpm cd ~/rpmbuild/SPECS rpmbuild -ba hardinfo2.spec echo "Fedora binary build from Source Package Files ready:" ls -l ~/rpmbuild/RPMS/$ARCH/* sudo yum -y install ~/rpmbuild/RPMS/$ARCH/hardinfo2-$VERSION* yum info hardinfo2 hardinfo2-hardinfo2-1331e88/tools/git_latest_release.sh000077500000000000000000000002071474767047500231000ustar00rootroot00000000000000#!/bin/bash echo "Changing to latest git release..." git pull git checkout $(curl -s https://hardinfo2.org/github/?latest_git_release) hardinfo2-hardinfo2-1331e88/tools/git_unstable_master.sh000077500000000000000000000001171474767047500232740ustar00rootroot00000000000000#!/bin/bash echo "Changing to unstable master..." git checkout master git pull hardinfo2-hardinfo2-1331e88/tools/hardinfo2000077500000000000000000000014541474767047500205110ustar00rootroot00000000000000#!/bin/sh # Hardinfo2 support for root access # chkconfig: - 99 10 # description: hardinfo2 support for root access ### BEGIN INIT INFO # Provides: hardinfo2 # Required-Start: $local_fs # Required-Stop: $local_fs # Default-start: 2 3 4 5 # Default-Stop: # Short-Description: start and stop hardinfo2 # Description: hardinfo2 support for root access ### END INIT INFO start() { /usr/bin/hwinfo2_fetch_sysdata return 0 } stop() { return 0 } # See how we were called. case "$1" in start) start ;; stop) stop ;; status) status $prog ;; restart|force-reload) stop start ;; try-restart|condrestart) if status $prog > /dev/null; then stop start fi ;; reload) exit 3 ;; *) echo $"Usage: $0 {start|stop|status|restart|try-restart|force-reload}" exit 2 esac exit 0 hardinfo2-hardinfo2-1331e88/tools/hardinfo2.install000066400000000000000000000004251474767047500221500ustar00rootroot00000000000000post_install() { echo "" echo "The included service is required for root access:" echo "Starting the hardinfo2 server - systemctl start hardinfo2" echo "" if [ -e /sbin/rc-update ] ; then rc-service hardinfo2 start else systemctl start hardinfo2 fi } hardinfo2-hardinfo2-1331e88/tools/hardinfo2.service000066400000000000000000000002511474767047500221370ustar00rootroot00000000000000[Unit] Description=Hardinfo2 support for root access After=basic.target [Service] Type=oneshot ExecStart=/usr/bin/hwinfo2_fetch_sysdata [Install] WantedBy=basic.targethardinfo2-hardinfo2-1331e88/tools/hardinfo2.spec000066400000000000000000000105521474767047500214360ustar00rootroot00000000000000%if 0%{?rhel} <= 8 %undefine __cmake_in_source_build %undefine __cmake3_in_source_build %endif Name: hardinfo2 Version: 2.0.15 Release: %autorelease Summary: System Information and Benchmark for Linux Systems # most of the source code is GPL-2.0-or-later license, except: # hardinfo2/gg_key_file_parse_string_as_value.c: LGPL-2.1-or-later # includes/blowfish.h: LGPL-2.1-or-later # deps/uber-graph/g-ring.c: LGPL-2.1-or-later # deps/uber-graph/g-ring.h: LGPL-2.1-or-later # modules/benchmark/blowfish.c: LGPL-2.1-or-later # hardinfo2/gg_strescape.c: LGPL-2.0-or-later # hardinfo2/util.c: GPL-2.0-or-later AND LGPL-2.0-or-later # deps/uber-graph/uber-frame-source.c: LGPL-2.0-or-later # deps/uber-graph/uber-frame-source.h: LGPL-2.0-or-later # deps/uber-graph/uber-timeout-interval.c: LGPL-2.0-or-later # deps/uber-graph/uber-timeout-interval.h: LGPL-2.0-or-later # deps/uber-graph/uber-graph.c: GPL-3.0-or-later # deps/uber-graph/uber-graph.h: GPL-3.0-or-later # deps/uber-graph/uber-heat-map.c: GPL-3.0-or-later # deps/uber-graph/uber-heat-map.h: GPL-3.0-or-later # deps/uber-graph/uber-label.c: GPL-3.0-or-later # deps/uber-graph/uber-label.h: GPL-3.0-or-later # deps/uber-graph/uber-line-graph.c: GPL-3.0-or-later # deps/uber-graph/uber-line-graph.h: GPL-3.0-or-later # deps/uber-graph/uber-range.c: GPL-3.0-or-later # deps/uber-graph/uber-range.h: GPL-3.0-or-later # deps/uber-graph/uber-scale.c: GPL-3.0-or-later # deps/uber-graph/uber-scale.h: GPL-3.0-or-later # deps/uber-graph/uber-scatter.c: GPL-3.0-or-later # deps/uber-graph/uber-scatter.h: GPL-3.0-or-later # deps/uber-graph/uber-window.c: GPL-3.0-or-later # deps/uber-graph/uber-window.h: GPL-3.0-or-later # deps/uber-graph/uber.h: GPL-3.0-or-later # includes/loadgraph.h: LGPL-2.1-only # shell/loadgraph.c: LGPL-2.1-only License: GPL-2.0-or-later AND LGPL-2.1-or-later AND LGPL-2.0-or-later AND GPL-3.0-or-later AND LGPL-2.1-only URL: https://github.com/hardinfo2/hardinfo2 Source0: %{url}/archive/release-%{version}/hardinfo2-release-%{version}.tar.gz BuildRequires: gcc-c++ %if 0%{?rhel} < 8 BuildRequires: cmake3 %else BuildRequires: cmake %endif BuildRequires: pkgconfig(gtk+-3.0) BuildRequires: pkgconfig(cairo) BuildRequires: pkgconfig(cairo-png) BuildRequires: pkgconfig(gthread-2.0) BuildRequires: pkgconfig(gmodule-export-2.0) # BuildRequires: pkgconfig(libsoup-3.0) BuildRequires: pkgconfig(libsoup-2.4) BuildRequires: pkgconfig(glib-2.0) BuildRequires: pkgconfig(json-glib-1.0) BuildRequires: pkgconfig(x11) BuildRequires: zlib-devel BuildRequires: desktop-file-utils %if 0%{?rhel} >= 8 || 0%{?fedora} Recommends: lm_sensors Recommends: sysbench Recommends: glx-utils Recommends: dmidecode Recommends: udisks2 Recommends: xdg-utils Recommends: iperf3 %endif %description Hardinfo2 is based on hardinfo, which have not been released >10 years. Hardinfo2 is the reboot that was needed. Hardinfo2 offers System Information and Benchmark for Linux Systems. It is able to obtain information from both hardware and basic software. It can benchmark your system and compare to other machines online. Features include: - Report generation (in either HTML or plain text) - Online Benchmarking - compare your machine against other machines %prep %autosetup -p1 -n hardinfo2-release-%{version} %build %if 0%{?rhel} < 8 %cmake3 -DCMAKE_BUILD_TYPE=Release %cmake3_build %else %cmake -DCMAKE_BUILD_TYPE=Release %cmake_build %endif %install %if 0%{?rhel} < 8 %cmake3_install %else %cmake_install %endif %find_lang %{name} %check desktop-file-validate %{buildroot}%{_datadir}/applications/*.desktop %files -f %{name}.lang %license LICENSE %doc README.md %{_bindir}/hardinfo2 %dir %{_libdir}/hardinfo2 %dir %{_libdir}/hardinfo2/modules %{_libdir}/hardinfo2/modules/benchmark.so %{_libdir}/hardinfo2/modules/computer.so %{_libdir}/hardinfo2/modules/devices.so %{_libdir}/hardinfo2/modules/network.so %{_datadir}/applications/hardinfo2.desktop %dir %{_datadir}/hardinfo2 %{_datadir}/hardinfo2/*.ids %{_datadir}/hardinfo2/benchmark.data %{_datadir}/hardinfo2/*.json %{_datadir}/hardinfo2/pixmaps/ %{_datadir}/icons/hicolor/256x256/apps/hardinfo2.png %{_mandir}/man1/hardinfo2.1* %changelog %if %{defined autochangelog} %autochangelog %else * Mon May 01 2023 RH Container Bot - Placeholder changelog for envs that are not autochangelog-ready %endif hardinfo2-hardinfo2-1331e88/tools/hwinfo2_fetch_sysdata000077500000000000000000000041351474767047500231110ustar00rootroot00000000000000#!/bin/sh #create group hardinfo2 if not exists groupadd hardinfo2 2>/dev/null addgroup hardinfo2 2>/dev/null #Create runtime data directory mkdir /run/hardinfo2 2>/dev/null chmod 750 /run/hardinfo2 #----Allow users in hardinfo2 group to get these hardware info---- #iomem and ioport address - no need to show system/kernel addresses. cat /proc/iomem |grep -v Kernel|grep -v System >/run/hardinfo2/iomem 2>/dev/null cat /proc/ioports >/run/hardinfo2/ioports 2>/dev/null #DMI memory array and DIMM memory information dmidecode -t 16 >/run/hardinfo2/dmi_memarray 2>/dev/null dmidecode -t 17 >/run/hardinfo2/dmi_memory 2>/dev/null #Allow for single user systems to use user group (To avoid reboot) UID_MIN=1000 if [ -e /etc/login.defs ] ; then UID_MIN=$(awk 'match($1,"^UID_MIN") {print $2}' /etc/login.defs) fi #SYSTYPE 0:Root, 1:SingleUser 2:MultiUser SYSTYPE=$(awk -F: -v UID_MIN=$UID_MIN '$3 >= UID_MIN && !match($7,"false") && !match($7,"nologin") && !match($1,"nobody") { C++; } END { if(C+0 == 0) print 0; else if(C+0 == 1) print 1; else print 2 }' /etc/passwd) #Find User ID, User Name, Group Name UIDNO=$(awk -F: -v UID_MIN=$UID_MIN '$3 >= UID_MIN && !match($7,"false") && !match($7,"nologin") && !match($1,"nobody") { print $3;exit; }' /etc/passwd) GIDNO=$(awk -F: -v UID_MIN=$UID_MIN '$3 >= UID_MIN && !match($7,"false") && !match($7,"nologin") && !match($1,"nobody") { print $4;exit; }' /etc/passwd) UIDNAME=$(awk -F: -v UIDNO=$UIDNO '$3 == UIDNO { print $1 }' /etc/passwd) GIDNAME=$(awk -F: -v GIDNO=$GIDNO '$3 == GIDNO { print $1 }' /etc/group) if [ $SYSTYPE = "1" ] && [ ! -z "${UIDNAME}" ] && [ $GIDNAME = $UIDNAME ]; then echo "Single User System" >/run/hardinfo2/systype #set owner to single user group chown -R root:$GIDNAME /run/hardinfo2 else if [ $SYSTYPE = "0" ]; then echo "Root Only System" >/run/hardinfo2/systype else echo "Multi User System" >/run/hardinfo2/systype fi #set owner to hardinfo2 (multiuser) chown -R root:hardinfo2 /run/hardinfo2 fi #set rights chmod 640 /run/hardinfo2/* #loading SPD modules modprobe -q spd5118 modprobe -q ee1004 modprobe -q at24 || true hardinfo2-hardinfo2-1331e88/tools/org.hardinfo2.hardinfo2.metainfo.xml000066400000000000000000000164661474767047500255600ustar00rootroot00000000000000 org.hardinfo2.hardinfo2 CC0-1.0 GPL-2.0-or-later hardinfo2@bigbear.dk pointing keyboard touch tablet Hardinfo2 Hardinfo2 Hardinfo2 Hardinfo2 Hardinfo2

    System Information and Benchmark Informations système et analyse comparative Systeminformationen und Benchmark Información del sistema y punto de referencia 系统信息和基准

    Hardinfo2 offers System Information and Benchmark for Linux Systems. It is able to obtain information from both hardware and basic software. It can benchmark your system and compare to other machines online.

    You can find info like: cpu speed, gpu and graphics speed, benchmarks of internal network speed, Linux hw drivers and modules loaded. sysinfo like which development tools are installed, memory dmi and spd information, distro / os informations, hwinfo about your components like pcie and usb.

    And it is all Free and Open Source Software (FOSS) so we can change and add to the program together. See below links for source code, that we all keep safe and secure together.

    Hardinfo2 propose des informations système et des tests de référence pour les systèmes Linux. Il est capable d'obtenir des informations à partir du matériel et des logiciels de base. Il peut évaluer votre système et le comparer à d'autres machines en ligne.

    Vous pouvez trouver des informations telles que : la vitesse du processeur, la vitesse du GPU et des graphiques, les références de vitesse du réseau interne, les pilotes matériels Linux et les modules chargés. sysinfo comme les outils de développement installés, les informations mémoire dmi et spd, les informations distribution/os, hwinfo sur vos composants comme pcie et usb.

    Et ce sont tous des logiciels libres et open source (FOSS), nous pouvons donc modifier et ajouter des éléments au programme ensemble. Voir ci-dessous les liens pour le code source, que nous gardons tous en sécurité ensemble.

    Hardinfo2 bietet Systeminformationen und Benchmark für Linux-Systeme. Es ist in der Lage, Informationen sowohl von der Hardware als auch von der Basissoftware zu erhalten. Es kann Ihr System vergleichen und online mit anderen Maschinen vergleichen.

    Hier finden Sie Informationen wie: CPU-Geschwindigkeit, GPU- und Grafikgeschwindigkeit, Benchmarks der internen Netzwerkgeschwindigkeit, geladene Linux-Hardwaretreiber und -Module. sysinfo wie die installierten Entwicklungstools, Speicher-DMI- und SPD-Informationen, Distributions-/Betriebssysteminformationen, HWInfo über Ihre Komponenten wie PCIe und USB.

    Und es ist alles freie und Open-Source-Software (FOSS), sodass wir das Programm gemeinsam ändern und ergänzen können. Nachfolgend finden Sie die Links zum Quellcode, den wir alle gemeinsam sicher und geschützt aufbewahren.

    Hardinfo2 ofrece información del sistema y puntos de referencia para sistemas Linux. Es capaz de obtener información tanto del hardware como del software básico. Puede comparar su sistema con otras máquinas en línea.

    Puede encontrar información como: velocidad de la CPU, velocidad de la GPU y de los gráficos, puntos de referencia de la velocidad de la red interna, controladores de hardware de Linux y módulos cargados. sysinfo como qué herramientas de desarrollo están instaladas, información de memoria dmi y spd, información de distribución/os, hwinfo sobre sus componentes como pcie y usb.

    Y todo es software gratuito y de código abierto (FOSS), por lo que podemos cambiarlo y agregarlo al programa juntos. Vea los enlaces a continuación para ver el código fuente, que todos mantenemos seguros y protegidos juntos.

    Hardinfo2 提供 Linux 系统的系统信息和基准测试。它能够从硬件和基础软件中获取信息。它可以对您的系统进行基准测试并与在线其他机器进行比较。

    您可以找到以下信息:CPU 速度、GPU 和显卡速度、内部网络速度基准、加载的 Linux 硬件驱动程序和模块。 sysinfo 例如安装了哪些开发工具、内存 dmi 和 spd 信息、发行版/操作系统信息、有关 pcie 和 usb 等组件的 hwinfo。

    而且它都是免费和开源软件(FOSS),因此我们可以一起更改和添加到程序中。请参阅下面的源代码链接,我们共同保证源代码的安全。

    https://hardinfo2.org https://hardinfo2.org/userguide https://github.com/hardinfo2/hardinfo2/discussions https://github.com/hardinfo2/hardinfo2/tree/master/po https://github.com/hardinfo2/hardinfo2/issues hardinfo2.desktop https://hardinfo2.org/img/appstream211.png https://hardinfo2.org/img/appstream212.png https://hardinfo2.org/img/appstream213.png Hardinfo2 Team

    Stable Release with new features and fixes.

    New SVG icons New Manual High DPI scaling support 'GDK_DPI_SCALE=1.5 hardinfo2' New HTML Report - new theme and fixes for html generator Fix MultiUser Security bug (is in 2.1.14, 2.1.17) Several minor fixes and updates.

    Stable Release with new features and fixes.

    New Storage Benchmarking New Vulkan info on display page New SPD DDR5 DIMM decoding support (Kernel 6.11+) New Based on Distro Detection along with Distro logos and links Fix Crash Bugs: Display refresh, DDR5 on 6.11 kernel Several minor fixes, updates and UI/UX improvements.

    da de es fr hu ko pt pt_BR ru tr zh_CN hardinfo2-hardinfo2-1331e88/tools/postinst000077500000000000000000000014321474767047500205140ustar00rootroot00000000000000#/bin/sh if [ -e /bin/systemctl ] && [ ! -e /etc/mx-version ] ; then systemctl daemon-reload systemctl enable hardinfo2 systemctl start hardinfo2 echo "Service Installed... (SystemD)" elif [ -e /sbin/chkconfig ] ; then chkconfig --add hardinfo2 chkconfig hardinfo2 on /etc/init.d/hardinfo2 start echo "Service Installed... (SystemV)" elif [ -e /sbin/sv ] ; then ln -s /etc/sv/hardinfo2 /etc/runit/runsvdir/default/ /etc/sv/hardinfo2/run echo "Service Installed... (Runit)" elif [ -e /sbin/rc-update ] ; then rc-update add hardinfo2 default rc-service hardinfo2 start echo "Service Installed... (SystemV-openrc)" else update-rc.d hardinfo2 defaults 95 10 /etc/init.d/hardinfo2 start echo "Service Installed... (SystemV-rc)" fi hardinfo2-hardinfo2-1331e88/tools/prerm000077500000000000000000000013211474767047500177530ustar00rootroot00000000000000#/bin/sh REINSTALL=0 if [ $# -eq 1 ] ; then #Fedora runs prerm after postinst - reinstall(1), remove(0) #Debian in newer versions sometimes has param remove if [ "$1" = "1" ] ; then REINSTALL=1 fi fi if [ -e /bin/wslinfo ] ; then echo "Service Removed... (SystemV-WSL)" else if [ -e /bin/systemctl ] ; then if [ $REINSTALL -eq 1 ] ; then echo "Service Reinstall... (SystemD)" else systemctl disable hardinfo2 echo "Service Removed... (SystemD)" fi elif [ -e /sbin/chkconfig ] ; then chkconfig hardinfo2 off chkconfig --del hardinfo2 echo "Service Removed... (SystemV)" else update-rc.d hardinfo2 remove echo "Service Removed... (SystemV-rc)" fi fi hardinfo2-hardinfo2-1331e88/tools/rm_hardinfo.sh000077500000000000000000000014351474767047500215350ustar00rootroot00000000000000#!/bin/bash # when you want to remove the hardinfo* mess from a make install if [[ $EUID -ne 0 ]]; then echo "This script must be run as root." exit 1 fi remove_hardinfo() { BASEDER="$1" echo "Removing hardinfo* from $BASEDER ..." rm -rf $BASEDER/share/hardinfo* rm -rf $BASEDER/lib/hardinfo* rm -f $BASEDER/share/locale/*/LC_MESSAGES/hardinfo*.mo rm -f $BASEDER/bin/hardinfo* rm -f $BASEDER/share/applications/hardinfo*.desktop rm -f $BASEDER/share/doc/hardinfo* rm -f $BASEDER/share/man/man1/hardinfo*.1.gz rm -f $BASEDER/share/pixmaps/hardinfo*.xpm rm -f $BASEDER/share/menu/hardinfo* #locate -e hardinfo | grep "$BASEDER" } # add some other base install path here remove_hardinfo "/usr/local" echo "Removing hardinfo* settings..." rm -rf ~/.config/hardinfo* hardinfo2-hardinfo2-1331e88/tools/run000077500000000000000000000000711474767047500174330ustar00rootroot00000000000000#!/bin/sh exec 2>&1 /usr/bin/hwinfo2_fetch_sysdata pause hardinfo2-hardinfo2-1331e88/tools/spd-eeproms/000077500000000000000000000000001474767047500211415ustar00rootroot00000000000000hardinfo2-hardinfo2-1331e88/tools/spd-eeproms/eeprom-test-DDR1a.bin000066400000000000000000000004001474767047500247220ustar00rootroot00000000000000 @Pe `puu<(<(``@@7F((PK n $I 19905193-135.A00Lhardinfo2-hardinfo2-1331e88/tools/spd-eeproms/eeprom-test-DDR1b.bin000066400000000000000000000004001474767047500247230ustar00rootroot00000000000000 @Pp `puu<(<(``@@7F((P]GR400D64L3/1GL3kƠ2GR400D64L3/1G_64ޓhardinfo2-hardinfo2-1331e88/tools/spd-eeproms/eeprom-test-DDR3-1.0.bin000066400000000000000000000004001474767047500250570ustar00rootroot00000000000000 ! ixi0i <<A5 M471B5173BH0-CK0 S0GD000hardinfo2-hardinfo2-1331e88/tools/spd-eeproms/eeprom-test-DDR3.bin000066400000000000000000000004001474767047500245630ustar00rootroot00000000000000  R ixi0i<<8oڬ"HMT351S6CFR8C-PB N0WV29N0387211hardinfo2-hardinfo2-1331e88/tools/spd-eeproms/eeprom-test-DDR4.bin000066400000000000000000000010001474767047500245610ustar00rootroot00000000000000#   lllt p++ + ++ 6, 5664$U#,1=R16ATF1G64HZ-2G1A2 2,ADPAFDLTA28hardinfo2-hardinfo2-1331e88/tools/spd-eeproms/eeprom-test-DDR5.bin000066400000000000000000000020001474767047500245630ustar00rootroot000000000000000 b ez777o0u' N '4 ' L 2q"M#2 KF556S40-32 A10019787Ahardinfo2-hardinfo2-1331e88/tools/spd-eeproms/eeprom-test-DDR5s.bin000066400000000000000000000020001474767047500247460ustar00rootroot000000000000000 bz >>>}0u' N '4 ' L 2 6q""B.KF552C40-32 ,A9632567A J0 Profile 1 Ultra Profile 2 Ultra Profile 3 Ultra ,0%%`z<<<x0u'R0""`z===q0u'5chardinfo2-hardinfo2-1331e88/tools/spd-eeproms/eeprom-test-UNK.bin000066400000000000000000000004001474767047500245240ustar00rootroot00000000000000"dU x &WQ'!OT@X 5#E܁@X& ]#܁hardinfo2-hardinfo2-1331e88/tools/update_data.sh000077500000000000000000000004111474767047500215110ustar00rootroot00000000000000#!/bin/bash echo "Updating data included in distribution.." wget -O ../data/pci.ids https://pci-ids.ucw.cz/v2.2/pci.ids wget -O ../data/usb.ids http://www.linux-usb.org/usb.ids wget -O ../data/benchmark.json https://hardinfo2.org/benchmark.json echo "Done..."

    :ed|jTwgN\M|oG*6RSfď XQ&'qYYK =%8"Dun1xJDO9xa5sp# \m?֯\|ͨ20p+gUEh:es?]gJf]X=2x?E0̻Q`R闟*v%éSE#  ( gGTmEH i{8-b018 SWL#Fӏjΰ5zxzO|Z\xoLF8+T}X|רğj<,rٗuA6)b@4*8N'a@o/W ͍bx26 `Px#Zӳ;jVZ]BcX7Uy\׮* NF kGE-ULqkͫEa__OrCid_M; P|)ޟ;H"-`VjF&3A jz '}nݙ TV#RDI</SM_`hx' H0,éCo Yr-~sד@u+6e/"HXxsbev\c /0 rlb-a3eZLd 8 .+mrm.[[\m2Cr#h/I4;9%Թ` '<Ӯh&z\j~ {i]7L3d $dvbOk$khR  LhBmq dndZU{I`(gzډ3khʯBrz@MN-ͼ+m @⋊ƪw<><\ǹr0AގmLI/ lXgxTĆ/suD=()XEyB95Z |}G2;'ASf]'5G-ĦHP}F,rHcYE먅*v9mZDh C=;c=jN~@@ѯ(sT 7FP)ŠH^=(`zQpC] bF SLTQ^HH>\&fSV$3Bf9ϘγirUUSn`YQ+#M@cP=`-Ck֭y WFS՞~cҧzS>;1q%}Od͘O6~&XY05JaN)N7!"\sY1$lrJT$5,%GsO5c'VP I4]\0"N%ARqIJ B0iH :yyzg76oI{'\ jd?ʶIά"^z3{OZ>me<韜֍xsbNNF{f">ө.ʮ7*'mBZ!4V뺻U-:gV=:=Kz*#`}pjNJETeM=Kݴ-ԚUZ %zVhy|:xnS* ŧs֥R)wr̸kcR"M:s:Jt]xITڱw7R)e~dOixGq ] h|l!/i+12HG\3fjTzKYrGZt[ Eǚ#ŒS# ָq5ϡ)ѝYxH[s_̿$xū//#9d<]9]쏳*BE)J[S׎tq֔,Wmhq^4>'RW{xQ#]D~D=U#^r=gr3y4J W<a}\IƄgC8ns<5MBS6 c5{fyJ-w$dʣlj2Rh֒o9$~T$~.ΓI1P1[+6hfR>b*l/h:ĿX=(D(f#!zf}ǩS$fs$11@X(P@P@P@h-]<> մOxh:@.cTzXH[rS_1ih/3_?=?ν;czk*7z.OǤ82Fū1lu5ߺ1}7QxOK'*GT}v\|٨_M^c6f]}<\F#VyJ&ZL嚃et.P@_/;oЋ6X*`N:M`ƛi0ֺ|WSye%#r91sJ̾d{G_i0ƚ=67,w;Ao,GxFQL* VG 7q.]Uٝ݋;'$Zd  ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 4%B  kЍZؖx6?տ^9y Tc/?O30.S iv.7"aSs63ۭ4yJdZ}jz9YחK䊢SANWoE̕B\=֗38 Kk3U@ƓcF“`-1b60fm\LT*JW9*S"(1WPDvXԃ/兕D~xp:QtUk6fU_n.hC1cWj8&jhMycoq"]0NLRTJ 0M_Wfٚq^hWe%zTjN&z&UFԊͧb)qM|oa-Ä@H$7p=U}>eKe`:]?v[1?Ta=%掬'5Y͟.RCcZkxIQB,t˟?F]Emyeއe vRxUͻ]JC_UF8kQqebzF8`e.К+#'n*RBcޚe˨w5N{G@I5+Bfy.}MA|4#7M͜ddsˣ3Z|&MsJs4U$Xj:U k癍~"PILpdYJfNtI%5ާ‹;2cɫUӋK)у*@4ܤd+)MsI숧|T{s\s!1w<Nf(/rhzU-9qFýTNJqfr¡@]pjsX5NװFAFoSrV}*cj^t̉IpӍ[kȮf~KHqIr;BVj7Sv3/hNrV9&ۑif ȹ's_s޽ {u5^4m'k:IT9&o%a! jH9:?Nշ)%UY!ٓاF1-ٟ8{T3z6(fHic,Wr2MvF\*E|{j'[+ZX\+ߩ>;]MhE֯c%{7`|I9SW<婣oCUGǫxM$E%B:^f2d쏕̥Wn/C>5r5(Fy (nTQ6}]<*ݣ+ k-&尜}9Sⱹn#;E7jvW-͜JQ4mk~MxHX{ױF2IJ&u8nќGپQxQa cW3֌~n?Ms;3[UxG%kW6MoLs4i7,!z^G{ǑP]J_xcT+(}nxw|Q?5Bx/Ă}ݟZʶ2PWS~)_ j W^gQ_Q~6e]}xFؔ"M ,f>\( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (;;Afb=§$6/խgjs][Ј{PC;JGn%F̬}MgmMq%ަ*ץC=8b:<~g+m+=E*2MsjgyG F];P8!8g*KK,%^h4vH#9Es"DJMii]CT|Or[;u#Z2+@OzIW}qhPIm>.J|2џ>LWwJdObKM29 Iǭ7!Y2ɬm_ k@c2hrKs1A.3Dq7qV6aJE%f,iOVijC++ºvAsr4O.]·\ֱ}"{dH\ 9.m9# F ʜs+Ƨ¾L3<4x8P9"ۅfK?Qz0=GY$s6Li+n#[5%uX*ΙT1=$[piB.*CR{֒O*2JguK#,-ȯŹ);>.W=\Hpz_Ui٢1Y."V,!W5WQcSG QRx?ŭ~JxdɯP|HpNi$yDAM}E:U1(;(>!\Y1x(I*9܉G,N7H_A1 u=uYW5F*Iװs_1aڥ3rE+ъTԙ5a(P@P@P:3"OLrzV2=zEZڤD)eWR͈M#.NOq Z8#J{5^+$(v<3#f9SIg mRejs( ҳT4׆{w= nBg8Vt۱ۈN}N@o%p f =YO0o<<5`u+أSzIǖZUf9ewƺ}NJV.P8 StM'jAꊄXwLB3@ryL O ۃJ΢3np@@~.\DIY?E~yq4K U{Qœw=OQ~)4^?}V;gfYu<˕YwFwj_ %MmM=B͚*?,> jXkzÖKt"eB牔$;GcLUG֙&$Wݒƛ@h bCxzUR&ar)jHс`nG&-#><O1#r\)#UΏb&=M m 1ShO#'h&=>yW=,g"J<*UU!ګ oyz.%=Wdӫ+|~%w9xꜬ:|{7M'RҮ%,JJ55 ,Jhv,^%̵14^'ަ!g¾"CRq qb;Xg+I}{6ŝ&HJdv)Ye^|M z]Sl*oXaIjΖ.VX[?gF#_AKjLF{ľ"}f[]C9a s;GccMu>zN YTG|huvdD}5Xޞ ThϒFI٢9IVldd@ZC{r]ħqpH4:]fpaOѬ47A{oA5)9inJzZ]^G{zH ( ]io w 8C1=JP4;jejȇiw"/4-.85H tf1t2)vKw]I?`R@lYiVszPT\*Yr9CҘ􀻥wGan4h]GrM0-kKngTNH.(s2Ẽ Z@%kxkMuo}çE($vL:,sHEV 8֐ wij۱ GJ`R@P@_KM-5uwSw= 0-ͥY5 {$@|9{zw:( ( ( ( ( (;;Afb=F?{P@=jgقIwP8r0*gf:͇3P+%s^&)' jMK:=,Qe1H*Qq~h'dIĂ'}n .h)$)!B>&`"^:f(ڛ*zԘ2@u3cIoEk4G$R{>_Z*|ۘͤ)= uu--)3VM_%:W~Gw0.8ZFyT@">9-NdޖG\:I3^b=hU-nq(tvPF"Y]̸+U_ ɸuukI= WD%y5F|GYhe[G`uo2_~s#H32g|cFm&CN&P'aT#͇_Y3َKxrx{i# B8X>9~!Wd ՞m;b` hѶGD]?8Qej)7ZG$U(X|dLb{/-g=X#X]>RM{T If"K?yNE|v&7rJ̏XGc^zjhjx?~28V&,$KY^D$38v9lsU+osl ^*s#ïpemnx'N°z27H$2̶U19dWmwj2"w.ޟe{;{ɺIJ˚6uRHhsEҠY p4o݌v2DV&q+k #|!F7-}p৷jp:kQmb\j}='hjyxZZ4d 6l7|Mc]1^LSqIw(j8 }j"Whm+rL4IzcJsFDh ݹ7.O\ܙ;2UmK٤gfCErzT > +#)6Y!UYh)M ($t444$FsR6Y'g w{glsj[޳u&A-uZ bآFH_PZ$ɖ$ܰ0@8N@SIŗ! 9N*'('p)?5{º.xqo#+oewx#4zhZW]ilZiΌ;^c9IU1s|Hdi~5OOc{0O981@jiܯeYK5_wQہGAu1Kk:]2k'<p:g۾h/3f4K=bOE=ldei>5q<'b"y>axtt9oF;H )Zi 5fwaqfmF+^ήyyٶs?:گzU~V?~yUR5"U'_ʼVI0ڪjJw>A/4~_o;Riy#;MS^Gpw3xRet2)#V׼"e'aL118̆ckM|/,j["ph=:1VU.=y/|A(:iL8&ō>®E\W+rUb.:)Z7X+*,~F[Mh2ܓ(e'J }U$&%IqVS(cE#4O7;{Pj5].).̻A*>DT]"GMKBq3/DTyj9E- rpT]AKSZBd~*|qL#r3Iا::J9r: € oW❊1M9à֚,/fhQj*9JTпqCS+C4rOhD9t8sK«8aV&PF韺qAZ1wZ,W;5kC(ݽax8/+Qǩ6|Y[\^[(UPcyZ{ۘmѭCK @NG=A"ǀeu&k<'`x#-^N<7&7U LQ!K>0MD -y4M*Z\9+Rx㡦r= NkPE43\)'Nr==-vukKGs9VЀh(|Z],wJ]!p: 4u qط[] Zd)s׭φ宙qgp_E\! 89:EV;K_Qƨ|y_@T37d>\hjv7ksPGB]Yom[1 |sQ:?QӮ7ZYKn8>B[i ӵZj:F(cmԟFuVSpʣU~q^G$ŁO&TԵ ]Fus۩-to mzy`9@@qւwf?.dAe5ڏ-`Ў6Xd5[h W돭 >-4!͕В|S'>]L^Ab^%AuGZ: n&{kfKK) Hrit-K n>[4|Be_:x]+4vVW@|9;ւ!,R<8o; {B4w70C$ֻcY$ \I,N[ Z,ԓܸU#4sCԭgԾM{2v0]Lq̹?N}}4 s^V[%ߊT/2+wN) |SLr\Cs@Z 3Mv:_Qm2L=CMzmӞZڧ?W\XMjI,..{_P7cK.GKlQV=h?JVM8]-k;k.\.F[z KTom]@ItŢ e+E.oxC[Ϋu^O*7y=@ҚZ~$0jzj2[.nPc|xڄV;K_Qƨ|y_@T3#P@P@P@P@P@iKC5[(\ĊK<#PΚ!WA@L;~}PįxKo^^; ; g=mL% ~bԁLva|qNjFnUǙH]0Z)QHki_uO_j%K=S)jJ,yzyV{ yP&3c#ʦ7Bh 6ueoc%nnDH#ܹǥcGrɠVkPi(TsZBvc\4wP\2+U`M'Ɵ&Ħ,w{K`GνZ>2_^#0~{RrEʳHu/[:{<2漺Y|~OJtԥR׉.u; / x襀q4gs?ĽcwW./SL=Oo?v+g࢕8۱ioXǜq^=UCMicNKfZÎjGnhzj5r sg[)?VY:MRyBlW5"(I$PՎr"Y&H-/W*w1]DeלsƝ]H@jNe6 N3q6rDY rNW9q N{Ҳob Xpi<%s-w˜/v;,K)J|>N .XݬyVOE*L89t=}"Q˨ gm_+[uVmߩi^R޸Vfcuc8y%I>r%|1':YGa}N1#B1u^>VN~gz`<nLm2+lW-{(-m#̍ 8漩*(ՕZs[0^bTa>kj|)#nj 'wbd}:rx?>? ?JJb?C.zt?)ů1[Pj4ܷok5;԰ԴhQ#=kHD@( 'fOnY_>rNE|}LEkX:ɩ| _?ٙW%+=F8^:k*b=+Gփ#&:921R;S(\jIO4v)i 2rfT߲Odm&>bھBfjyIi;Vc/\^cz'gbTfmJP3Ft^:4Mu-\T]43hz 'U {>Zkyn wǸʣB⟅60#k9r0ሓt]F/a|;$uqx.W'X4:kt. שN|ѹt+%շav{YE#3Q ǭkIhsbu=js xRلR`]HTa Nȗ&+Ӻ@*GUCw4&kȌ#Hjs2C+h˩50% )F$EMVͰ2TC8l1S ~@ҶnRuQE`EJ40WjQisCaGO={}k]c?S \Z᩷!ܕS P y4WQ⾆KC N2[m# jv)hfNF 4欎I4^t>%[AfC95fM4^˾)'$%Oflk2oҼ(BX}Y ͻݑN?]f اRqK=faehp~$ >=۵l71 iKCJs6gK+!yM{(#̔ܙ (i@=ۯi#n@9s%rA4T&BpE}^a|Sj4e9"q=HԱsO6 'QvQ0WX辄jJ2lG&smwSڼMg ]G9TkH4ۍ>F9j69aRtޱ/C ܖGcs:rVHs7 rlhKufk2DvKOLM Ai*+UpTuj1)90KhV}$iC}ZX(#eϨ<]j;՞Zvf2as&l5Q^?ѿZIH4ߐ;VrFS3;7}jQe. f = 2:(4U.3LVwoSRa=i pɠa@4 Bb IUs:Zk{6]c ?gbee'8.\int<&Et3xW8i.n{:B CDܫj f0K nr1nY>"k|:KҾ'ZvYaP)`<`^*k&+c';f)n øJ0yĢI !#qUI]ATA^MJ@ې9tMhSci[>(o65NgԞ)oܭ~uU˝髜O{ʤg{WG_Kygʧ:..sv1%WtfT#d$>'(T HM csΐ Wf8ӒGE6{'$,E|8llSR׌@k찒#>|k:Eԑ][(31S0fS{,o+NbI"f4Z5<I{5s-:RB2O\ܶOkF3XE Y1dUF<:(V5qگ-sКe:jzr{[1jezxցn`_rz쪴\1RW9j\׼m#85e0o\cyG~C\ |nk;AxwXB˽pgy,RL8Q|mJNfFQJq:rMJ_3+;,z^*|CƩ9I+kXr\L 5ZHN)J6cOݠu$yX[֔ݑxsM ~P̼WJ~]NPNH-sn[/)KfO-ag`Y@YDt]6YsM j cY-Ϗ`=~SeijCjHMO# |cGRǯË1cIM=x{N4ϲGyrT= x8B(g\~"rLT]圶 YIc۽D\c:tQ#M? F]WS2-Imšǖ@;ԸI])aF7:`F: rVGE:B&_D+ͽuD*Н#Ͼ0@'dxy WZJM w'k"5ݣjsxI?Ƭt'ʐ{Dcn"B2RV1 |Lk<E#$:M2eR ,sG@j+fP@bP"kI|sM Yn?Zѣ0*z)΀Rx"Qb,c҄ѼZBWmȉYqP&|3qkRKyzhcRbCZhjezх&:J#A1cz楢U1?Qa!wOӅcq>4,_ ʂq}\zg$ 4Z@t~W4 n%x}SBct jzj7 [?~X/b}O:&趗{G1|EIF_:OfueyX;Kcn{Ӷ%xZSA%ڱYo$l F?+u kyHXmLýfmm8.sG_i]52Iv'8]NNNKcNޕs?[5 T]>/;8,;G*nnyK in1!1a\м/}Ivmienn>`l5o mēHrK?z,. {,fI-2' լ?h$q.rzP3Ek{x7JKDyq6>q9?\} [>OP㽒[;i1ܻ<aܡsQum/EiH~qɢNf;%{O*/1;a }29K;w2QKt 3?e{ytH!Q嘨/˓1'5{&Bǃc`B+[~AE<$nyuIA@P@P@P@P@P@P@P@P@P@P@Ɲ oT3UbmЍ4#ꑛܯ@)!~U,sRF|oȧ$R9ϖߕBF3G1Nuܰ%`1KX-_yIY}J6s-Q]7Njl8#PI=w(ކSܷ[ c.k6m_ޗ5Vd^lٳG:T.^NyԘKrkCgF:QYhtSszP952 `p*24"Jz֨!$#?rԡNLnm3ѼY?գ^mC^BvT{|=>lu-<3u/IcFJ}De_.EmߊfDQ8z4)4z|!;QKsJ%0`+і -ج*X],t~p7׈Mrr53_uAS)C48?1A֨|MOo WI?ʿ:«F`|ECƖ`<ןC${Yc[O){$یV+XfqzIl|wՇ5wG W)XBs@7pQٱia#smE% 3t{ >nm.=v'Z aN"-O*AXӗT4v>4V+rNC嶸rȣԩ1JOrI؋s&r=˫i ?8yN2ZYJ nkT=PW+\C˳StghK Pwq k 5JKVpںɱtaq>\MA I&5SZwvZ^tێRsu4"sNV KXsN{m(ng`gI]tivFٴD"Z^F++mvG*]&ϧbcc3]!0\`ˌ~7GE^G|Q{zXj=55yp?2>bFj>iɗ{䜊B Z8YrkB:Tr4u{d˦ C4OkUj{o Eu֦dUnZpEFN,xD>"Hi,]~\Ui$ui^s[v9zFi&ܷgyoZݒ[JƝiF16Noh8nDnjS0oC:G܊"CQ-iI+I9kq8WY2xMj}W7)WDa1Q %n$znVhǩT+7<ӼMÍN1]9}^\FJ: >B&$ԖM26Ov1Q:"iv:FYekCg$ދ.[4Gn2I #'z:PB]I2G#L?4 ["τb23gccמ)C:Ȱ4=fcg눵 >#;T4\,I|%ٌ&kSVaҎ𮼺vqa^R|r['E$О9}֞K> aT{8\E :sCrtP@P@P@P@P@P@P@P@P@P@iKC5[(g@/5ꑓܯ@51:[Fta׽:_;~֫PvX-.T~$RC|ȈȅsM10\۬ <1r}l?H )N4yJiHT`VrZlʃkoF65mGb=7HҏVM9M)+KGwc3"ljEHKk~GCݬOG"U<<%6wkFA&v˨2,5SJITV|],mӥUI$W,RV= Re?.zӨ!nWM-OAS,`ݞ +Ms1Ui>[#],t?#νY/[/ M"zG=|e}[:Owrx83ҭs6h"!YN-O2Qneoz O "k zy{Gؑet&jϡnyD4N=j}O}xhcZf &2%Զ !vGNRZJ>V$Wk6RϿf{?j6IҾz9Bv8*7>{gO4{ihrqqSұ͈VRx˥] Bk!V43Pu.QpdJyt\gm>lmXoAϭXܵ[cwԧws2iǚ7M{ؠTrI#{C̎yFRISyqG!-byy ~c9[N 6:5g=Ӈ6k­bVo!^y8I?uuBܭ[]~oqSwaMBφaэzT},IU <V3a EJ[?97Q#y =hU .+ f †QɏH>jԚ<(B:tܑR{|3h֭M |].R N;x/ >dq=Jjjv?<Ҽ %i;pӌn|GjtrJ{*Xto~٨\ܢ`=+GF6eF#R[kQЄK2qnFk9Ԍw4P#8ǝ,l*}wy\nGa&Z97llu5yq+ 5QԳghtBneT;)Ф,V=+ˬ2xӹ>?[ޅUbExt RBKm,W']'XHZYO;^B+k엯M'yyķ1\Z\:D U,EI}Q1xL O˒kXS&ό.gN#}jO6-| N UFn|[ͧOLkV_( Jc<ẤzUӘհ=Ԛnf#kKB=Ϟ.x&"j[e'm|a_.E=SU.Ө]I<1@8?Yu fXZwv! P3P@P@P@P@P@P@P@P@P@P@Pq>/ lXguKoiẇVuHWA@oӅߡLLݛ>[Z XN)ajC?<[&ԅQs\ؼN^Aͽ~ᄳ|C_>8l7Hz+|5g!=Hގzk sE-E` ?Uc%q׺SY6$V }Rr-/֓6hJ>\ƱR_jQCa#Wʟq U$O< 3I)Mݬ8 2H&wѓ[H9†ݍq(FI {uM#DӣYdds+]ZSG6$<kqY,0cUNvĹC5fϜ+wO׵W3`~Z,<%_9|K$BA;{}ƹ}M|fM+G*u#v_s֞&;.wy^Y噎IB)j@AK٠B3R\w4`U3B=Q67pN$q1Iw")1sA,[YX$x^+ՙ: |_Gss}2>UҽS2Ss|\"7ͯsyt\Q8ӝ oaR4y0$?^J'+es s]Th*EhT'm$mE]L,'76d귳ɮ%}2IżlZG'=ڨEF3zOhm?qV MN]1JF!ۏ:M3UI=Q ɽD1J2vG,}'-sm)׃<\[Nd3lǴKQ_?&׭-hku(F^_q0|O2s"ǡ\1\:ݟUAX4V1*rwa%oAFzFN91GKwH zWw=,%7 -7}NNI䪝Kƀ]t>k68$dWb>RH5$@z33V,jCwIMnkdYWU2'KIԐ#^JHm=-mׯֆoASr>Ep8(7?Jc[ ֤݈iuE/j*B:a&s(;~u-\&M40 5<9VSvlѵF3k+RS))-GEL@vv̙<Z:EcssG֍Tj[dmsVM'& Q^2V="XrE|&G\7=EV?<Rm԰W|e.s~MYu}^[NRG*c~ů C[Ԍ1 S(^6^ х-'c˄#Rsͯ4׆L#}bMAʻ V4 R>ZښIvdT_)Z7GSپ)#x|vyIݞv^ttָc|Hσ,`vbN+rP&σ8uP0H5G8mƝ~ |ϫg5Y4 [gɌh#$ҍq0n]O1ntq:~WcTX+4T>O^Ub`]Zy?8Wq_bk.#^Wh4eN8SkbWe>"o.y&]FJy 8W7 GRfOf0fOl QQ&e(h`9X#bÃSw6oLJO|ءvʄLI4pN;hJ;h:)l̸R6e+y _iI„4M6) Rhm~`#P΋eKTy$SQdsJY|aچJ= +!չmCGEsϦu%&WQIS<f0DL+!Ar{;PW8eRގ!zezey #qGqVRgX_e\A'czyUwG Իֆ07^5JoMҤ{Ho-^)c¥{3Օ9]=.x_KΏG{8 oٓ;"Қ7"ؔly8qRR>: ^C15ß:Ɨxr8Wa.wsëւGWöz;{( #7Qm:]J-M֝J=?/ sKDSj(yn=6sյzwLZ"W% <+4wa <ԮpQݨ(_G?c{~Kװ7ӆrk?N҅N/Ë[i<'k#7rfwZ^Tj%8EE+FiVS^h[ͥqB&ӹ1Uf>#c ԈG^UƳ[ $x暊Dʫb*HuCL6/@_RO8FPH.Y#cZʤ#%ׅOCtkʨ.00x;wgNױPq,̑O$T)SDU՝'!/ddK޻rbqF40dOtp cY7$K uzJ79Y/t~XC5ƥ$)Suoydt_Kt^ >Lr͝ΕKqe+CK>1_tԕۈГ6ݙVN=+,w#,U)3I}对BOkeM^f23yU mٝ汰I( W4}f=eNH9OX<%M\Dz_Ώ"{fng6N'HdF85)['|}M4rta"+ck9l';nT FԫOS״DkTgŴT8ӥ"w5W*lΗfꚭڨp:Yqxye1A*v8(^2mƮ=6 r{v!I늛3p5[$;4# լ"lޡir%[OZjY=(吣TE49cp.`F)+EsZM^({x(O74R+p+I M jmɴ6gS_KDN]kv2 t)S{O⫔NNȟkS+EJPH\LWmZ@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@iKC5[(o@/õꑓܯ@,̰J (nn^ 37^=*\a$A; Sd3B=MJA~5%M1M>`TUdG9;ֆf'rck68"#wPmM;ks*W-ͦGj4gw`.cvrYn9&qj"E QvԘ]HTb-'il#4*j=> -$ƈq m哩̃žEH 9QTٛbJ9lEuExQ^"9RV`w;ҔIr˄SEo Й;4=LjB)C? 3{zg5-} SLℎVg,y5V)=Ka>`+ٝRksRӈng-4Rգ2jZ:6%ҥDcVVNkDlTRFIwS [uX8-RNyu(Cbk%M7?gWBЮ#8w&m\U,kۍx xXFhUŞO@mᱼ2txWm}.J ?*\Jh9ԬLppxXۺz]F,#lN _UqR5b1ɨ]e\QɰwGU і+9IF{ld^("14sĹϝy!F;ORlֶG-w:H/uQwӛq;n5j LǮ+kBv;5̚1ͫmwR`8WJୁQݞ*RC%̍#iG NμVǠPu%vm2n g*:aCX bsNHl|#{Z7Grd$BIڸXƥjJOsj%cP t"rZ㇋y`00+&3:n反e@<aUSSbښ<.Nd]*Ē pG|6*U#䪋l0<_>%mm~q@OLk^^ys8  Z&rzF>Eil>w<ݏu4)iɌe4[\jڌ6v|V8UI˚A]?W7AyKjʭ[x<Qa\*oK#2w!`A$`qX.O7,"R:eKY~|0u_/?sEŒ'V+nV> x鎴X/%m.^[G ݆cN `CW :Haba18=;"ŨXV [yr;Qa\K&{y|IgsL8h\MI7U&0e/ lXgq#LΩ=( V WiKcZ-hT;v:Uid~i]G75,˹ %o5D{YoZ#9a+ ͵fw& mMMq*|Ru$ )pG|+g231lEhi4tӆVioiZt]͐@sJ`1T5;gfI ^|ZcZulu9H T6tpȖHN)FFBb+ɭ];jUF]|SZ1^TgcCD6gG]D90ZQ)<v76*AjTVcZfhogGm(&ѮTI*HͥER9w_ yI ?* י]9;;of}ʶFb"W繝YFM#Sw#hs tn ׉NԸ.!xwE_j.fD^ihvT]Fnr*GF5v޺I%̶8GQ]_B!VQF12uH(jlutO;d]҉T$tZyj<a\mKZN./SsLqˬBVd~5nVW<*0[_xJFݬD0ӑgWR9z=Yirr+zUyFm4zȑG*1]PM߳B& {]JBgx|8 \ @x+KGqs7$iX 6jeg#©G.uZsI%\21^/%AEt(A^ٻ=Ǟ5KNkTpT7VKQ"D;I_F*KE3ź +#G2jpXm,r1_-ߑ/ :/FN~ *QgFWq.ևmi<7g+ԧK5!Nr}Uneheﲷ-^0WG%j{WwS]<3Mm 0F2:E9ֈᨵ!~GϑZ$$ھ^Ũ Ɲѫx|?tZ>mb.VlפJmx|K]&!bxRpkG?ߪ($4 1)Wlupx`<៖T1?zUoiS{X.j6vkmVa??4&jq-{"2u; /S?{OCǍ_Jϝ~hNGŒ>ah0'Ǘ\א?%uB35{D.Tݫ*+φ<3~Th$uIe|jGn $~?spROVhʦYAj~Tku5ZxzmZmR#ŴPKIY꣞sKaI<%c)Ԧf&kdv˕? šhC@N4t;Hc+J.u $XNK33 rݻ'5nl 9m%ܭ@=ݏM|(<= gy\ŝY9#!_fйoyn<~ )5sniHXt@t^y.f*Œ84Йu}& 5/ fh_y@4k뺶qmt"&Ȗ陭6 Ͻ>1)m4OLa7~鴿K/^$3#*[gGN sWSu-vMVkOOO=ɱ4|Τ( }jV~.$fHL1ɠ,f^B-hw+4a :⎃oYٯ|73]ۈӕ$s 6Ǒ>axrtF-X՘xzCa1"nRy[:3ގu: '6֚|cq :5MI&I.VL3 6:>潷Oh(&Gx20H(K&KLִ~d3}/ >}9om6jrikfSK`AW\˻>#0 ( ( ( ( ( ( ( ( ( 4%B <7 [j?ѿ4d+ dz'\Thw`uFFftVֶghҕ c* 2,jUjATsن)ž%,\]1ȤSdj9gi{@P>c(*:I*(lRQZ͢d"#͌ԷafV;-z.t{XQn+}NK[PEghp$Mv fcr瓤7+ 'ύx4ܑҪ] K f7D ;E" &g #2|ƒ\q͞PJGZ/SӵxgO"J5#it}3Q>^SęfxHFRs5)E+<g!dè\=NI5ͲbƧA% 6W#jz+l'{q" 4GCZrK#~rϽ唩h\ӿo|VN;KM+M$gN62QY[Z,Jy*y*rN+tt^u8vfHC=ĹҾn]rbq Ν.ޕ4>LL=Nനi>nS17.Г,#V҃тܯU<16Pbb/?:a{MJ=Pc7)G|3b"]qJV]w@Tе漣P͕+Ҿγ_F4OOMRn"+PsTSL.U%5ePmY5mNWЭ"C(myjOtĭjS㚎hxHţbBAjG:B3?¸:vsYs3AV}̍CY}.@6;xc+3p6#55(Uh)EuV\LâcMɰ= )l?NiQ9/F*z*:(i4nO -&hu\gT%uAL'B:kf*F̱[­C͡Z,\'}=<Y 1@5T6gЪ kݿkwy41M}R6iXmf$SHMICި4t&=OK=RάB~DLh\d?SQcҡc[G: 5 䀩5覚d]*/I+{eM+Ȥ!Myz]dC'3+AXUWtf pcɕdLi5sSd\[6$9RfZ:/jbV=-t>J6R TաFbYϭD[Z3ٌ%ΟSRfijyVΑ;kuRFti/oCy^9[k֣S\"u`1etB֔jzfMpR$A 5H4ǟI(|lo|,]ZE4 .;\3 1_)[9;m̂$@v"Ri(+ski* HF㡯G dz r>./$-49'< ,&YCӥAX|U:{R>g3msحՏaO@bVV!hK Z )hiI# Πpּq^~&*v='Ot׊rU<&}.ûOkʭ%}F[5DLH'1n s\5"uzhGYrK 'Zy4Eӡ93|5ã[T)Erթcx$sR4ܸq\roCӋ4ԝ'[7)9b{U);n!s F`ϚEȹ%}=&2QZW>PjI%v^&Gź]i0x^wzM5XJ+xI9 kƫ[OI ռuidpXGWNg)+#k}BXjRH$ ]WyY[WڵRkdW<Zlr\kKfgQhIFoZXqZBQiF S>tdG]m=Y%`їPӋs*c(oG?J9_a=876<gb׳r= $' OSc_AKcnr6Ks泿Z>9B;9Xr}iKcJ7RG59G3kΟ~?svWᣓXGl'f,EGLLLzm5W+*wO'w8ʵ3n6߅;shE~G~kO-rILj*Mo2=jHW ¨nܚΒMٙM'Yrϸ~2q!̹|.>kTs^-ƋK&<ㅑӌvgԸ7"FM#xiAG+JGY-dȹjўfeq5a>\_['{#-TuΙ+jPG.C:LSܚK̋Hү_J#U!.ќSMrMӼ\Zj φ]#Uc>GS֧B1t/% drQisJڞ4M(f4i[{t#:pˣx؁vCj'4Cx?Zx7[PhL@pW].j\a W Sg֋2M!|07֭p ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 4%B 9 ki ꑛܯ@+L┶:~F|䚂KuCQ[mdZ$$xa4& hJw/Xd;lIyN4*[zScb(|lɩNfسQfJ$ n`ݷJq#&сBqMDBzluqF@ۃNBfRxVQKh25ht5{$D3YӭH'RZ,'aNԛESO ӨE%0`y˥_ޏDT`{VrzΤL.eZ#SUUaL\LJZ+ 2hWf+?w֤p>CS#) "q"5F,) Iڰ3[ _ =˻&14z~(W )nyXcũk?Rq/XQ_3Ң:Sey磚\kjr>-hk6D.GaҸh״0)%'>v񏅮;|-q} 1#V>Ҟ""e5$xui8:ӹ$ 1x46WeS mHu-ԴiU >Z ƪ?OKւM$T8)ɤhv;3G`Y8%d ]F9Ґsp4RRzthRh$t'= @aʄVhA*>\j4*].HVHqP}QmRsq3m?5Hꥩb@|'ҜF3վOҼ3%ӷ80ͧ'u3$`SJy\i8 En`=_ qkM8Rf*A8M{8žvX bV?t:aˡcQbG1:.;h+oŹMX)M{W{/uZ}˩uOʗgR_{YH?d'_⿕Bͤ(ӭq)Ԉ.-"j1"-L%MS9SQv(LX]֭D9'4Σdw>մIژŭ81/sy8E\9P8Y$B:m?8YYi*ҢTrq_7KY#UgR/ \-yu]th'D?t^)lzXLoUw;EM{XgͩyR]Z6rE!ڰzʲtΏ. ZV1,Rb*~͉(!Qn8]yj "R~+x$T9|QG-X`?d#XTUlB㍺5/ISi\@!Yg+JAt' u}stAGLֱ쉕V9LXGg8ƺZD>i˱I# TzInoCh_R;U\=rbPOmrV+NN u5(ks0{.SN4#ye>BfyHԴ^__qSgQ8S҇E#F,ަ^)<0;"t٥|^OVwVޕy[E2e\T5=Ja?z9aKhQMs/87Q@G&1qbFOs/ckImn\ ]wbRπ5kv9s4x;Ɠs#DzqN'M'C[ђ>R B)3/fgkI\F@S+5\RCdyM,YMg8=|!Ԣ'ѓx;Zñ[N0'#Iť^>="T/ S\l) T-wKcl9v6jQ{>'[s:ϧ5p狎ۗΟFvu_c\&qJᥣxHӴim:9$ٴz0icWR}cn#7Ε[F:xM [,S,3N)MvwYgV=9fVx/̰3(VO4qvt }+EϑC0*MOINjMm#Z<ȩgm IMxX ҡ i"LqM3y- }Hc;H_o9yei}{ ёx+\;pIt>&c:=F@f_(JٕΆ2c>.<#s]yHҏK{b"Nx7u2#BS7B;]ja5r\"L5yEtڋ~|)y˵a5XLW6Mԏ==QMSi LjCCbey39g2EsٿZN&nV[/hM 8˟i[n t{ǃ;۹{Me\cҩfz(ݤ$3芹Ƹ,Q`r tF 6%@WM#[HE޹jbzk>I~[z;K:5 {9p?4#WneWCrJ pٜwsL(2ԇMTΉ#15^Q[B֩nerk̩IhztFc[E(mw'^]\}7& 41ı6svU::ƹiJݱ܌ T){NWy?iSۼLā} ;SSj10x-} iړ,ʒbnzO1iRvտ*=+J^oʏd:AiߕɋNoZzMRl?)éAs4>^I;T֧hqM1=5+ɨr}O231ֽ/:jCr^Z<|FkLs^tI(6[0Rj}NaDҴYcx22Č U$bj˲CWD`>kldJdMlqJBˁT [V<^=H\(Ϭ3Oj:2kʭuU3e-8#u,t&Æ}}ѧ'#Y*thO~揈&(X+E6gvoZbN0?:r{A!@f>`#֓h飇M%n5;TZtz-+s"cP@ww!PVŊw- B4x~?տR3{PA ^xUOdYcwe0lV&8x)Ke4J7owGh~ xz[uk= _$---:? k祿I `)KΗ>}J?!/oO/R!5OW > 9kQ['Z[t,Wԣ _xcT S6SG J1RZBtƓW961N6x/A;Pb+@iar;Є*,>U -DSIMlP+3TRdH$eRԦ"hSFP_fTЈi̅mV`\(Jr١bRG5edcUPmckCp+GU,;Dbv:;{2VRte< >cʞm\DэcZO@T(ٛGmaMrDm"ņ `k˭ R\Mj{ix%snMxXI)⛝HؓVIo<[C_;5i>Y"on$YDbĪ0\Qcma_CߑXx?|y.^2V\=ju:٣[:RW"_ީ5TvTUNEK= o酙x{Zl7Pƾ\#wZ㩏xz2/MouQ y3Mu#2?b:f}kfqoDyK1[4a5F:(JN%iΣ曻<>+SLry76v_<߽}EvC*kHÖdTJ*]#oKslKǭ|;{zy} vq|\tG=J+;w4/+5Δ)(3u-0JHV\`}k 2lBrZojŧAsW(BrXN)}kۡQ-s#ObSQihVFwPjjLUQ98+g$ΟTu[&/}#rG ݞ95[U˟dK+l׼+Z\7nd1NwSn1z.}y]5U-CU&aO3RPS(I`qT,d]jwJw@kqw詌AXcVWjGiIm1nu䐕ZƙS&Ugf$Q 8i%Mha_j󸿉OZyO2'vpϥzI[Y- t{U{9F2ud9U+s&wea-iz'pcֵ8QCSVgLA]fvsIk]{(ٴi<j7[~kk9;T`NZ#!/j?_zwm7 G_i}T}m'w >{_zd7ƞvF"lEh1R{z09CilNLjkU]˕(_ʯڢ=C6*=a :=C6R~" l׌c/-6]Ϟ8ЏCJ*mgԬzⲔ𗦊W2**7tUg OzRGj'F%ɪPH2szriO7haFïZI#XKp۸5Hbdބ~tCm05&4.4/<K{R|2OQSQ=^3Q94cJU&u7#gx.ӱ;G \D"SFZrx=h'2Y5}_Z,<rN)rxc$I64:N )جr16n$Ȍ*/d4rD*L>&~jw&0g=j\QC>c݆mT>^i8j֩+Xy&V8cNh!T);0zt6?J&( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (;;Afb; `x~?տR2{PΚVJtIOwb́̌2+1[x+QIycFIڲbO*y: XJg\x1VDѳŮt?6LB8[ 5rOR%YeR{O){VWU!iu6ieY:nϢQv{]A9gFKcֵ9%.aզgaB-0nЦ0/[HևA8*U5㗸}O?}][XV߆HR&zU {Wy3;H7Wz h(^buT]SZߡVj's7#dz׋$y>yw(PMi]DfjJV\ȣ\Tys32ӕDx/?+es_<__ g|Sߨib P?g\^ar+xk7 =B8N-iK3{H>DU=^Ϲqk׷LlDqs7Z4f}kNuTF@Wޖ;~ JQ羷G4^\LboDxQ,Wb-b.'zx+{ q4S:?[3?V vOg$<B/IoW7OH_V sOt}k?mȷߺ/|7`?כT~?/XߺOW 'iּޣA .i>'OHUq9\kxEDƃc垫G֣Wo 'E?qto%*k2ޟ~꾴m? kG֟w܃\Z}~_rV sOt}ix{i}?Z/?g$/+oзߺ[x{iI+oзߺ>V oNt}og$Bޝ~ߛH?[x/;xg$'+oзߺ)x{YI -^om?!Wǃ|9\EE4Mŀ Qy[D#ǃ˚y*~gxw#>=x:Ӵ{KIc"ae=\Q1NL1j/3ScO]GsF6l+PUhK[P@i7j 9JF]NJ='i^{UK=Ț嘨+~vS?3-Ցa+ښjm!P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Pq>/ lXgq#L?FOr Jn`yt4Tw>VF "+]^=lfxz?۝nky w+ l. ɧ~-~ FF ʩ쾡|\?vX4 n@N{UW;*׽͛n|$mNuUυrg8R=E|*CfʸbAjcU©"jB/r0|#׺pj-(KaV8\dQE8*Xw:?̯ +\Ǒi ay! ϾzהosO 5O6.}5`컓?cMp:˭VVgo2t:X$2,\I=+Qp¥ڎ ]9\Un}MRSoVB);_K/y%c5ttyYiGϷnx8ߌX-Ž8Pr&~%g7m?8"^Ig^tqhۣ'|&3EN_gVks=zB Cj`d2I Sҹ)Rֵ+Usšl+w;OxZ-5SPO?ƪk^gC`9ȯBj^S4=PD|UQ<ʧ<+IXt fV0Σ'':ig51ŁԪEFzKY)̧sΞ!#0jXL N'c>"Yz'џE5_ٳ8u~>M9<'nuP Jq[klC\7< b+rK5^Y9ӀUZJcu{mϔb3IZq7<*G}+ـ~|<񅲯ְMI#;M*y'%f~s\Dfc&RmbMⲎ*::ޟ?+Qm򿑩>zj^.`i >O}J"M8uRLgNPv_>75OQ,}Q0ν zdJl8⮤|/?&ׇ5_^&;#_^oV1+X8ɮzcI{ƔʣQXFFSkOh*'֟? ԫ(miY}J֟? ԫ(miY}J֟? ԫ(miY}J&U?_֟c>_CkOh{ԫ(mi?G}J֟?+;ԫ)$:Ҭq̬zбՊkA7֯yBCQ:NJD?V𿑤i*Z/j*Z/inU??#I!>_Cj~4*V𿑥vWPڰ\`_vWPڰ\`_vWPڰ5}JWI9pd%ex2sN {ߴ?ZHEßşG{a~t 8:ړѥE J}n|P@ PKzi6쁴~1%꬗dg ȏ{\(:3In] 1;:v ` W]jR49P r}Ї@[/Jr8ЫIJz^UgYj3Xl5,I ϯC\X/12좗&+xhroGk:eƑIituH# |&n5P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@iKC5[(xo@/ꑓܯ@=9_ &Tw>-՞q=Cpm2:2S= *ukvg3}s\Ya^BHژ \\MJ-' *To{Vu c_ cq.cg,t.MvO Fru<֩h|K/oaøDt$*}áS6 s_Z]]EkG ҥ5Ql_m)Ǖ Wҏm[)Tt~Ʃx23ɮyT`rU:GM{V{3Gkz5ƕw%l:>kOS@ѶW(&rs:{sY 'lV.|V!23j)j{烍˚oƆu/NǨ>(*5: yRJLMSFi4c'ɦ(*Σv4_U#'yѣʥnsQ#-Idb+ΪnTVMS?`?ק=#}T#e;|{y%fyխ̮t7wzXxåmx۶?TsJ~bnXSQ۶?Tsğk8k?Y&zsUOIjR8\ع-% -dIDɃĚlS3yy10t%eu)+r~zCXp::hpͷ<75JGѫzřx2g+Z`{C_s#*k67W#mWBC/=ᴂ?gSSj&7>x r+FO?:0=kl6K o's^]`%O[7EE|MB>[dXϤ_?|'+3m*)ͬ_Ȭke(ŷfFۮT* j4-Ԕou\ 4XPT#νh|m?{8⮤|+N'3MNO'};:UfPkTrݬ3 tC_7ޝYX `?Ѣ?^*NJ%dϤ?vda?f6GFȰH?0[?,?'+3# "}!h }r0ȰH?0\?,?'+3' &}!h }r0ɰH?p\?,?'+38Hxt!Fk`GaB6vȯ :4zXM,?ȯOj&[?l? [dϤ?/luMC| }n0ɰH?[?l?|3ɰH?[O[?l?/R }n0ȰXG.uͦXm =y[\qUBgkҚi]Cșuā<;Y$xZk0 :^C~RFĆ@t> YVr!p=[ɨe_y9g y;|`Ui+$-E=rjx¦"*Wh[O Vtgi;'sD/]A mO 1kS9j>`(}b4q;^ljI𝗇kohy0[ Rf}^Uԫ7t|^m9SfPJ&7Pr>l׍L;i_ *WIzo*y jBl1? κs,[ ɖlT٭>_=>(—]w]fv48^ ӰCv^ue}icKi.6@"<%4s˪61$Q;#8heɣjJ6om򗜞zc_L _EWOޘEs`U=E!R^_`| 9})H-E iL{.Go哼wAJ`U@P@P@P@P@P@P@P@P@P@P@P@P@P@Ɲ oT3Ubdž oЍ0Uӥ(|:f4h6 :u9%zJ47kNngH)SXsTs~!׬5HΠmYՅG;ܻZWOw?bxA f7,-0 zR~ |\8Dz1NX~cfzګ"Y8%zr`Ne/t\W-^鯴b5n''e[I\BA:8zi}=/-.OŻcӮ?0&WֽձMH3Ȥ٬i8u,1ޖ8L ʓ(ǰ{7 3hx{"uR2BNCJD՟hYA?ZCcnZANy&X# [R J0?P(:wO#6iɭRJ$,})9X҅Q/sέdE?*Hܼ;`'0kfgN<9$VI5h BVgxo'OrU>)nZy?s;G9CDxd:кZ殺I\\W's'k6ԵbzZWҥCM{\S[1{! bOJ;x$oBcFv0E dSjS4R- FZCHS-w)hkxftխ5^6tS|ɣƷa}fpnzq1l9%6Pb2ŴV梏5M}U79Z-3*paVxnJxqNɜѩ]l X9׶pfsU7)=KHܬzjN!\QsQV*Fn1 Xj,%sc_4[$LPwQ*c`֤֨5O j6V1\C>Z5J}U-5|8wԶ[Gv8_Z=ӣn9yp;6s: Ҹ* vtC\3yfQ=j$ΘBzDZfUp$:9}B; R.[iP1mjH}ƙphR}g)j6qKf0*̝[PԵ%`Rx%-Ip}Tʞ\ؤ֡N*GHo֩6C!ڂԛe !(sY[T'dUFw1GdWkqw9Aj5OS7Ac(ZI3NR)\oAk9jz%˪4o5[DRPty#RbI *jV3 uLa⨬ ij<Ѿ )LDs3 #EX[^!*w{':7D^ '@xם,uKC͎w]Ba?` =\6YxG>ʽ3l>}+YuҼ~S\89)&I^%-Y\B+9G*NIgZ`H>?ՇםsWjVV"'5)b+ = mB>/6<^^*?Fk?kۦ>c6)kl|,8|C]WU?#K XÊe֎395:촬*HS^:/WzXf-Kv{4ij?jAv{4ij?jAv{4ij?jAv{$'Z^H_{ !>ޔ}W7}X=#yKᯘNPH`nk5bJ i"4}gH_R*A{$'ZjAު[ڟPH>oUdܵ>ZjA'Uh=#i u:2UfGs. G0R3?huς#=M{~p%bI'Žg uxЃh=*$Y Z6PeI~}>j.j|'jo; Cz$lI7R{eB8'M֖/ 7:^C ?S֫{fʹZ$^WO,Cnw+kO(Xd ɷE8 '>u6({ҨC'?v4zA7ǜ񩩗RMO1"o "8V(]½,qx95ߚ<̦2)2> ZjqV2I'#cM CXf?6tjӒO< Ѹl ݍgU5.,e-!R5hh,g::Slkhv[4/uD*ef2L.K(4᲎\ցt[n-gI6E29F;Clg'bD{0% >pc|1DٵƦb@S$/n1Ja.rxv-17DB1~[=y`MЭ4Mdss `nh([Z/ɥ;W19Q@:=U]&{x,Mebb}kTy!T}ǭ>eyk~էOh)-bpTH{30 ( ( ( ( ( ( ( ( ( ( ( (;;Afb;`x\FuHWA@;j?.4GF 26pf55;xJ8w-wG'~(k⼵?G`oxQ dYo?(B x<#cX}usjt.t)"iAⰝhN\͛iC,(;ch}kGeyrSS@k*meKs>2%7_LC0qm#sgǨΑ|+ێ*4NsONcL;Еuf!e+,Mš_S9<'zEƑ {yC{sa0!\0Tk Qړhꎣ<=ќdZG';#Ec0u3ѧer'LTF˟axoxFẋVS=6黈UR_c<4Ty=IM2k ^J_+ڧq5ڶ>J[U.EI_7TpkZu/>+) L" ",8huFX^][y"XZ1Is+6Dej>оT'j~P9PyTa;*1}vpA5]9PyGjTcRxꋨPyKjP9Pyj j^2cAk1ryqzT#Z=Ũ*ثkR`]k,GY'cjF\8 eIҕ":pJ,(LSVZ%6%tBq_q<&_I0/*,ȿe_X}OS UtYʿV?bWViQ Uڴreke_X}OG&WʿV?b\uA+i){*ZC}\gtʿVO`⚎Xލ ӬYLh<D늼fPpG$?uuPI-_4wWzֽBJЖN!@jxvX_J7>uNI;=+ I$^$I1*^*jt;+<&ؚ/8ZP5O쿷~Uwc=:Sť/!L?$+^@u+躧lzy>oZ;8=:P$5WmͿm.@e]LR;#5_m6/';sӎ\ha;J:HYV O67i{aԆ3;"~(q]Yv+{g5xV0؏_{i! 3)g1K`~40f0Ka ğݷ)`#>_$mEo._( J& ]Qw>s'(ݎ[$9JD>6.7/zMH{FG|6Ci$kT>.[s<{kӧڴ})ݖ<\8Z\n;a3RJ5>]N|}jOޢ˳1GgBPBS*Lv(ԣ \铻mZ5zJ*z,좻ukoiyO^*=RuG[f!A6rhΌ0dqKnbjgI2m6<t4ʣPoRxXܬ8C5TGo^l1uZV7& ;T-<.;JsZ-QK;4yNjL]+.glvzGhc%,ƫfВ3iTd[Nӵ cY4>cICq] TG[UoYɭ9ʣlLQ(smv7 v;c3ButtS>z "nRj}3[HUcTpn,iwZ2ur;:Ua'^œw{ڄQ*;bV=o)wAVĹu#:uLG$q{Wq-,!^AΏn:${^x+t>.I5]~K۴Xڸkԍ=RMsM?$`7 {W͡ n-j#,pnoZkg1UkB־ᏅfgDmb sc>cZPo-DO[}_4tj7;W9q&{x8)wG_jR kL՞{GuO⸱>WϪn"/fK,ZBwS*Zrmk' E^<'5V^ϸ`k2y"9U{h+ǹWV~ʽ\",vTckf;?C<ω`5sў5$,*E)cBr(N{qZN{->WvhaZR{-.VU|Z%QKR*փ$WdP=+I|/02&U>k3役z^xdgڽ{+|'zVKs˛=䯘׾A?u/> pF^½Fg5HǨ΁|}IQa)ȘI$uOΗÚ n:^·aVPuG+(}~#Xp $C*y"'  ZFڵZa+e7dT:XrVag=֎P^5K2xj\XWnT ʚGS Eٚ6_xWJh䫱}鯷nG~22n~_{ kVy7BݴwZsQ8__Q}lk*t(O.(=71WQe^&_ 1,45kHbwlד[ui=XB)LmKB ''{ptڌެ7L4[%D`ȯ7RZ1k:sm9t*XAN+ѫh;qdsR;B6kDС*rs荩4}*XQƽy*Q^3'Zٸ#gt0Kػ'kɣiPúXWY^%:jSv8#V2 "kS|hLŗJ[#[6vZuEID!O8\5&'RpoUcB̸j*^ ɇǩ5{y6wWz_BLqAI%# S7>< 72$H@J&->_ ODo xgg5¼"?4G m@kdaG-/GW,bq2ۜ+ x⾦?itIٳ簘EFWHL[PTv"V5_=؄$׍E:FK]:5k"^ xOy嘇U .xg*p2 t!QI\ NkZmyx>Nқ2lxOCALByRe+[w_9Z,~B^/ g+9TL_O=YRtzƷe6Z$4`xXq7\ei>40FK4B+F"XJ/t}5{ xtBiYOuu61.(Wc2#aYx ,З)k\ܬd^ƑMC^Ѧە銯h1&1,HJ~[h(&EFm.^ZRi!3⿌?ҿItj?_7M}S1P8_?dOMqv>_ϣm;[(osX%H*:EԼ`NE~-y/ 1r_KڂL3_Vz>6rDx{w%GܰA?,g82uq]ryoplЦOI>ɤcgMD{\WaejyQ\WbmrgNIU%IN@JXGVxk|u}HL?ɿ|l\jFcꏍ1s]~Sc ҽ[)'kl|>׏K_3;Mzw)6r9[&xȯfH\ؕ}x9W^,[u/⽩{7*Rexnf5Z<Ql?sV:/Ňt_}ˇaG.{|X}E~}o!6e 6jF9ԯ%jH$5NjLxcæ g#5TmRx'ʴ*VfKʯRrTCZ<76BZǏ! 9[T5NRsv|+laJ=Ju+Όch]:d⾋G QG;hytR9RNKv+¶ktp2aג+im8澃OVvJez{>Xk!'jɹ};'9obCiWAk2RNe{=q_0* ?ǗxOk3_᳇#^>;=J3xh8' RRäA*8G4( Nԫzxŋz,jZ7H∝sd,&lU8=9wr@43h Gmۋfup rTSԗ,= _Y .S%r~n/(I8okS@U]XХ @I̅k+Cqmx֑>^0wv4RRzi`OSs؍(XUP.*.J5ቆ(DT 7(#EE,WF^8lZ)C93d~C޲GB]6+$ ;zGzԜϛ̕v Z=>%=̉>U5NIͫbRq i %ܸ ךbOmI+NOs͜gO&KR֙ y0 Ddua&=cy6ŇTYUQg>;0(. 9 <6)h@kj5ԝ<1^|naJ2C(;qZ3[F[F҂1V$B.YE- X"DIԮq”c+#Hѯ@hOb Z4;9U`htz\.xJVsFF _CFQs։Wtu> uK8m]6kt8fSj ځ 4WCux7u/YZ;"$<θqAhϜ҅*9|4햵$6ȑjI0E,M%;Z_ GX-nyx%,=WME3 0:n5TqҽCQU-c_hkIRz4k)j{83/ ڢEglr7RμOKK7:f2W[+\`ajr( 隌qY[!٨ݎOGO7< šٳ݊+c$\~j*71 |/ΛVPK hU ]>{XG}WusidPx;LR4bk<|^[e<11F4"y§m|!cxdtn|-`+~u?WFsE[[OasV†2c<OFNo iۈ S* #Xes_? jFk1IN)_S?Uy(Uߛ^2\W0icoνG<)4;OT}]gDc:FztPsgXi}-+r_RGCt!5G5,,\K YVKl3Zt!_V \=,~Qce@W6;ѫR\ZT5GcȰ|szUH?cΩY5 RЙdXk5|@:c{I}]ZqEc).Uw?Zߌil3G5ɊOߍb. zcis^8s9& +*yt½ѡٟ?k~PTeGX(ƫ*pg^mԋ63!X= ~/FH~Î0Y蚺#ȳFG'5ͪ-r9sGN'`25C9΃U&pkevyyQ*KC`Y6g[bVj.{U4jYR|JέV *707>Z_^68b><8]h9Rcze߼Bg ֿ9m)jj uv+WMsJS ưs}ԪX~g1}'4O}hߏa t{,?qc t{ŋѳL ǵbynzѝ_ig<62󻊷nPS,&M>>znKD'Ck@X pchX %0jѬڴh5kN4[FޕmtJ 1^kӕ♕ịKyoER.EpexKVGf>YXcXe$+*kK"CW?C\>?֘}c58G^>2{H2}h٭Z@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@iKC5[(xo@/7FOr UQ=Zپzp C3s.C̏SHO(j˸}z9CC~=E.R^9w_d%a}u0i[3~x$;5+r먤s6+I'[5(T_}֟opQ[˻3> IƊAˠX Q'sQ[X7rFH,ȯoP<==NM l\UYPDb%*"ho:1J8_vo\V d}NSxd菞WS8y"MkRǿ;aov~Ёz%x9h9/Gґ+?wu?rt1Ub[Q<|s R3{%խ{ݞf}e`LV,k20r$x ^ rH_1уh^hN6!r0GJw.1$)sɗ?ZuGp8'W$W;CZ֒Txgtn&}܄]; `MgR<˕|SO [ٌ$`y -ւMZP K%z|YЭ4PeFI5}eY99.7W#+:#+Sտy\VE῍S]L\qfF˾}CWKs3-b>NG_zk8)9sѤIܖ?*d1 IQq{ynlp.q^X7u# Ij$?b.Dz;8KCQ P``~s}?^Aj/ҮP83I:j憳X]@ce5\.9sJ62$p`hѫWطyR㾣}mπ5b.~Γ[Dqؚص~' Zsnh[7v#xJWt.A7asZ3zhE!Xc#ٍٹtKbeb?/b{&<4geױ=Ǧ#XPr9X ;~"xCVl5Xd0+R-O Y;t>BkZ 7fg/QrWd<.i\ӓA}X4O E("1V)Pƭ]iV\IC|TbX G;z@P@ 'tu7G7C3Kvzvj€ (!O όdيմ" 7B=AQ IJD&`>>AQf+Qn z~#{3OJ𖻪[^]P7F ,+:,j+os:>oKFz`dNO).d ^d'xdX\d*B0"@P@P@9&cIUFI(%④$SV @  n"I`ԓL k_ kZΟoh]یʂdh]j~״VӤXWdu}'ދ 0 {@`Hobc$:y`Lʂ34Ĥv 3Ӛ@tBá=ڥPÝ`g; ڝvqg3F@9RGeZ@P@P@P@P@P@Ɲ oT3Ubdž oЍ0<>?:d+ PAeqTU)$Yub(R'5icnˌdQ ѡ = FVj jX,2lX@ێi\`@b2OZ 1 #`h$ʒDoYuBvَ[b g(\z59QƒV\%W I4W.nr[3ہoͯ 1.F|!ZE;f)34FGAEd~=1Et]qq50MRfrR̸ GY+E+H%codhqY6n)s\=i$i #V]M)xQz|h|c+#t:\sudSoc,>eBg.#8-J_]o]1󹧱%UɾvM}.0T[2BY>cJQ]7->F3'ÞDZJS@<9;XI. ˗Vs~)6pGJq|=kV^kp#.p=i"SVjG1'ɀ3 1+~Rx!1l:6o;A.Ubg-/g'ãXXV^ʵv>:tiM&fxDV"]4S AT}!DŽlWWGKT3+/O;O?kg_bҩg]?&q9oXPxk<=ݛ,]g5Ոt<V{79P]j,k*ysQ ҢՊZ7{vP9X*8sLR,^Kp s^VV-׊NeWM#3#?]);n#&ϡ¯t՛nZqg6 ljl_ O1NQ\9Kw<:̽ku'=kUި%1Z`9+jgo2.R8HRO 泫N?ֳI GP2T=)To88UWgj\D죐+ۡu=3Mie?iGJ2]NF%E{ڸ[uڽ+*Uy(".pt*wwg̿8N]YnG~a8#/֟{>hpOF/,g}WL^$x"WiŭN_ Kg5|c Oz9ly1 xǠT<,㏡? 4Ks/>p1dw+D!WbU6|]8{ٮVvR>*1"z!2j.ctJ֧Oʔ~P DTRvF8|N#ڮei2iIJ*n7XPmܲsx-I<+j:W˘k+iX[uBH?* ̰W._?@p6_J)n|qſZG5Nq;_>2ؚ[G.1\ԹQQ)>5wzfc6bp XʱF.(_9iTDq3D'hYÐ_8ѨÑ ;h̓Ȩ5K5FU,U~*Kjdpǂ;ԯy}]EӡIt֣CGTR'5Az\9%*K1*`Y\jWQW{-<©^4KMe㌝Oc겪Υ&EۖFiI&y#؛pV1h5^=QL@S}c *>wi{sGz8:VJ:֥ N6ѺmdHUZ9iӚ{t *ݡ*N~jP8-ͱ^.i2au\,H akUZRwl ,riВ]&UI<֒ZoS}{N[v%YqD:Ć))xvVf&)99ScsGIba5JɉK$63#:[9r*w?SY:F@y0OJR}dT`IԨdU:G-+d`d(ݟMԚmv>_ֈg ut>&fob7E9: (I#OMn)lj|HE4[=r;_ĻEHR]K/?By6LCU M)x?C/^қ۞9< O?:, b̞m6O_G{tUS샟ҝ9[;E#ˉcP;f%FO xoNIյ+I;[Q3t#'Qd;&.XN"6 dCLAo.cw9<(sK>,uy.[a[7sCCBLаmfjnݞ:l~%~(ƥ+Co#-S{c?t?.sL[pB<:d4^o {F:Ū3q ~TYBAnV(+X/= n 7{~d te~?; p#=Kĺ~o cEs!Kob13t%nRr#4=6UXwNwn)?*" =fDmŪᰭ$p?+Ɲ o`@X֘#UqhΉ Eo PIx)$;VV^qXLt$RwcU,Tސh×Ӆ< ߧ"xh&E|p LTQC[~n"H;t"<;q#jv@fFN綧a}f*W(csRQ^.2anY鑌ڪWd(lV:aM%ķ0+9 e3տ/U<>gqh -p]EG\mq6F%H)6N+K-JK*ĮO^3K@5h$KXf)BIloC;T,u=%<ҵ܅ژ<$uKdMo ^j-Zj(/;34Xj2KՂ6K lMc%Z&%"p>֓4VC:ў<  -ơŞy-YYyFK}j{KXw hBg+wu^q;el<CtanxKYmat$3BdVQxKHzT>s1hҶ>~0|WF+6 CN,Sr h8nn3/u8"FLֱgfXӎԊ.4=i.&@A<Vv (ڽ] ɐ3Q5d+{Tg>1JMEXAÊ)\%-5?𗯸1ݞ.hCg.-~F\x53 #5!͵bUO9F83'%X ԭ-e]F@W*qf+֩QFQХmشSm`p0ižPk6?NXG^(!b[y7z氚\*IbmT<8\u k5ABqf_s"?ʷQz¤4ƆXRt0yd׼ *随f9="L Ĵ;hx5vAhW%v|+r 菳Rg3Fݼ:r#3\}II{cּ͓gn|k}y8k4̮q~:uϋ>k6F"jNLk מk{3h8H `9{=^H)zlǎ[ނ5Ƨo ; upؽkfȶ>~Oַ-ާY$2#;+ 9Y֥rB>8*B <=j6qEUs}N6gwV]\ҹz3 X9TƫjP=%J[{5=<96L#huc^g%OG>E<4|_-KPtjg9Z@v ?sI-9A)> TŖx<<*<:x>$I ǟɨn`t _2ь`[_KgDH|铚xXt}7rqdAm0]M]v_^] VT"XfD\_\kwU0,Xp;`I~g'`_aK"֚ؗgǯu']Euv.$cnp 8Pom1H? ܕCMӑBb|}85k^&ڌiҠ`E6枽 өv!ԭ w)b0 ~cR[4SXs-ާj#1mOҍCC $(O%.w4 |F!_qt?WBV?(TDb ֚$Zt2}hbH|-IxSy'3)''և[2]cSVk-Jly#iWC#m2k'ȘG&8 hojx: ɞ/O=gǶO"ZeE!K.B w z)x^!\GvȒcu~ mcI񞫓AI5zdý ׅŒ1sOgi[k])UGsxQ\ҮN%%P,I9)BxJI7ZEnTɏ ߮h`'?5}BI]Nm*C)$zF닋xkْ{RT!Xd`(@Ƚ^6ohz+Oéٍ۸L#p>h'>?WYЭIy! NFӡ7 rA v'- BXLyy3&O+IΨx4E LX.0<}=βEk4;Q SIEޗ(u۫Tm (è9E>u/_[dE%B@Vy=IGo'M.,w8_Y֝ d;A#uWRʾ.g!cy bЂXg?З'4Ӥ)h[2pFܿ.{1:R׋=si]>HMVK) Zgxã9!YgB?҆ fХj>/n.k##g!xCTQpPK\RӹP@P@P@P@P@Ɲ oT3Ubdž oЍ0<>?:d+ L=LDWk6z8%u&u#/\XSkš7S௅+Ҧs5S>\<?|-u}kC?  #w2\\͑]3NަU嶇Ͼ\s\)M} *STѓfi?D͖t$9afإkX!?ZtbRz/g㶪h7UbCLq<ĖX U١ Vܑ_XJ,KtaqN4ŔPpUY%p+Hr.kS31IљgdusrM=7lL7ӱs(>!jATsh2h  PqAIط@"O\,*$B64붹 lą=FݼB`fz7N?Ň:}+'f_sjXFk(lN0~s^v>"Ȫ[I4>#?2r> κ&+{r0辕#^"k/=:/ ^zCUl aEq=Q/-6Llm8j*a&3G}kz1hju/])vjǙX,`O Xu3˂^\nEW+̚<*q"d,ʍ{8-?+N)ca[e-1T*ϞIܩxUkQaZP8;Hg1- Eb]WOrx=Qsi)l|Wt?jΘw"ҕ9P-4l~G\M[<Ҕ*Z|W-Z>Q+EKu4OƝ@l?ZSV[+#˨\[Iء ZY(n%(TdJ4U4v<p:+3[0ܠ5qjı*4ctʠL #f|M,UW3+?M,cœV.Gb_-5o5$sU$:F0hKb=?jlj@:-5T_\+ɯ 7T+KO" cSLb㠨uYa"VՎT]x=<VvBc{u9ցZIjoJL<'6v@sڼڸ%{ua^*3;LJPLWW+Elп0$X^u\4wim)0 " Nxjgxs7/bݫ22i+.y[1Œj{“j$IU+>#^i|VlkX{}!tժFZgYw:R@.7X*kD [U njQn5u᳍AsVg'x?C<* ~RԜ_=U .VڤuFOƕJ6!(il25uQZn".%Y4 :_ϖQ3ֺ#/u,mjW:+hIݫ}''B<VtM\,mu)Nk ũhJUS|: u7Q(򣄬Yk0(TU85 K *Q3^X[IdgǕi׋q{2M91ucg!+ץqֻs/> kpO2F[z_?E7cԣ NQWP\!{SclLwq5ZjNj<-nge1;5a LB, A'm m3ݣ~ErrJF 19rkݹ 7sjwPGOcۥ+H[jxʹoR v썐OZTPVL5iT:CihEӡgRc*MR՝-݊KrV9U=gbGj{Jڝ*)yyz+$̉O ]F,Rfqޡt3O_J4{ N{8~hV)-<  z ȪCt\g,MMΠ6sN ߎڪq#U;?}zD6X&jD+rM4}%|BT[1cc~tv>WU}wX>[O|γr[CXRVP{+5nG_@X~u &@35#9Zt=|FW8} nX#qӍYūuJu!s58;{jEPHw']X]X[?{|m8$*6xG͟#>;aՊF+fhrP@P@P@P@P@P@P@P@.x"-nmy>=C _c&1p;sP@P@P@>[r7*O ;0^jW6)X~4NP@P@P@P@P@P@iKC5[(xo@/7FOr S=O*3n5= C:^._@&ͬk(ٞu&9ˇ5Qݴt Գ :ϚRиi~0jqKa I0`NEwaG أeN<4PX PDJSxCv! ę4ryB<#HP9s ;! !b} [ʷNJM4mjIg\E3f($v5i̟UF L频=k6v('CMF8@WC*cBG^Wd5G0I@[czR\FE2ZhUBz ؾ[zPWcJyVX4sCK],d5 CStw$n+#i 5Sѽq(9[]0>k1~Ⴭ0}j*k~r_/Ҵ~|dv>2Ȫp mt6'ZCgY+{s~-KqZ@s%uRPz\v*Hjn!;84!2qf,V{1Wtc1,q߰CCH0eH$=,R (r 0Q+JH -MDZ_*&1?18eMa;z4w~,DF ?==.7QcSuЖ685>\N™[B<57&sYr3OL=ګ"l- >p\QgcZ?i xGCBuY]w 4f[%Haƣli)/ Җ`5βW:TfNһ3n[*\b>J i&v8C֝RBU9R[I) `>at ԴnuC-MJTTT@RZ5Z~)ىcWazxZZGBБ9JW{3IQn*tpoh.L1A:Yj<^U Dh{\_ Eq㛋E 9)'ջaz+CdoV[S l9OKsڪƿqNz5\n...bqVʧQwEAլbLo~` @"J9xЃpG7ؽlo@edsΣ7܎ 1 JM5bϒ\ȠtI;bXB֨cbjC#7ʎ)b5f0Kb՚]KJɳ%VF=ŪGxc;nƍn(xIXiOTCRq)YΗM@ۏhuGbh>f*ҊL诈tc^-bsRMֲݙT|MM$ǘ3Xa|Dhq[p'qTz3KS7V`D2Y~H6a/bFY75#eZ|0l0A&'%%@x4ОƜ*ѓPmV8#p3|}m"{;%'%Ox#sZ ꭏIE]zvGOfLB݌P;%lBg'r玤.rGQ`[L]6Sk~۝ߥ zۺvo>ϼQ hz4i< $2 w7Q5Khrc̆A҄ maar P@P@P@P@P@P@P@P@P@P@P@P@P@P@Pq>/ lXgo[#LΩ=(Ҧ{w\3Y.f^::d`ci˶ ,p)V#b9#ZD2ΠBPlṊ#Yn6HTN")Jn_ZW5tPA+");IHɊ*Xw0^hMhSv4+"s&jlu{K!;iخgb,[.Cn<2-늛(Ij2(6H瞹4i&Y%FMTbNOȝEc&sEgv1FHUˉj0Nb8bIE=jLr;]ѫoSé09s~cWde(Hд bCBHm  2=v+-QN)z;\;?ZtK t]ѳ{$Qŵr:jʹ̦#y/[6"τ9@ʤ& Ly>2O4֘$9`H\u,7wQ!Q&b,7wG% A-h#OJaj>5 `Sd[486i35ZPŏueEgchSI;}|=(֗61JHKZ)4,a>AdBI&%J콠ZgN ;,n#ֹ&}gQ|]FE_,-%:Wt5-@Nrфn's,YjL5h~/=[pIEHҨho_γY&czy?/Q ?<}&Azy7GLzy7GL;ru鬦b?=yZ,hOC)no5?S\hr]س Ǭ M3Xz؟<yLCN S!^v<I ;G&>B֑ʦ'Yv^?QPL 䧟&%LP?Z쩇b92U+ʲxN`n{F49.Z=}L;?<}fPZ?zJ2uY1}Zw+xwq&ʦ*K]>K*3;?<}Ȑ{ =w//KC;.{LBOƅհzɏ5ڀzgjQ&*Y~LeęmAiɒA[B{f3xNխ!Tִrbjxv[/m'n9NIŜZ)ifhs$'9Jn5`\*('q@UK{mOZ%F])~q^"g[Cc@c]F;HW F F&P?LUuCzčDOq#hd,v7{R[oR GI]HǷJֆ^F%w6Id˖ gƕkxem=]]==4*~aPazµ̻ل&'LcСO8p~އ܂GLumǜzzf?Ha@P@P@P@P@P@P@P@P@P@P@P@P@P@P@iKC5[(s@/|kW$ЍhbR@;0. +YЗNǜgB,a G/e\wEHOi$g"C Xe #i$rW;IRg9JA*is˺}Z>{X3N}""%.Aa4rɭq;%AN~`A.5.;9Я?JhIjISLH"f,W ̾ >ξ>=Mg1rݺjIj1k4P@MO)N,SˊVwB䛗ڃVȞ\=i%';K[bM;0lBQcNFk9?>E Ala|trXՔvaEYܱevL1ݎ٣8kHm'U RݒG} R{m:ƎEܧB|K=36 zUZNpvE/{}_(A$R!OUHBdگE/{0}>"y=a? y=a!y=_`_){j h!$R1K؇<5F$21O QHebڏhL羡}l8q 1(b7Tx;&!OP3#4$yZQ- (zQr_aL|jFC0[ .:L`-:q؝(*NHxUѧ$C ’4KqMX< 2xѭvIfo_Jj&~./"y +{Rf ^ǃOё8气=9E2$g5*W64ֈ[XSBi N'ۡ3mn7$j zq2|n+hF1֒j6 z|N5RH͟S[UJČOQZ# QUُ˜dId db6 $iL9YZn?kz=hb9gҀ#Q3.9,OS@ޘNvho8 i03u4"n: W'WN2O=@3(K\M .Xm4Rrx@ɠ}  h@yCt'pQX\1(ekX*ȋ{fK ؒ;͂1Schyw)Ac^heN,[88sEAݷ6me(*E13dnq-IEJBI I=4XyΎT\qSiX"{ГE'}yZ6_$r?*5V ő1>R9>C7fH%|AJ8zRAJ yҀ<@{dp=8zP=)AJaPyғj=*ڠ+AJ.=(jAJAPyҀ<@{Tp=8zP=(jAJڠPyҀ<@{Tp=8zP=(jY@fYڢ7}єq陖a#IBߙkc ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (N}r_*ر@ßF/j_'jىB6OS-' sD(aEʥEɴNX}E.saFБMhfzBv#miu9J1nɢ,TF6ʙ*WDEN,,];UbZ}%hбcCD;&,*h6GHJ#j]NB`M6ǭ0 ;G|)R&M$Gm\n"B4sm\kv 45'֥ 941?ufZ~2¦ hu*D8"_JFH4 ֨.0ZV:D2b4gH?v#' fv$g9Nircer5'66zi؇wtV8犤ni2"r۔\aj˗{Z W"GjͷԔci37m,l2zLXmHt+ X ncɝH=CCd5.w:E[HJCg\XݕY[U꠮eiG2w`8@1W\OGQxqY$iRx"w](+AwQC x ЎYb dބb-L9Ƃ@[f4bzR+1>jċ () D @?J@:33LoR&+~?A-ه0ց؝W#4 !~@ga~=h ǭ,@``),j>@\ϵؿi> $p(x{P=RQ *ZD6݁rShw Ciޕ㉰讃6)4tC`I5SSRѴj65<'Kv+,dj\ UR@1X|E,+M h`(<Ё GOmǽy帟2E@P@PL )P@P@P@P@P@P1;,G,ڛ%=ijőP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Pq>/ lXgo[#L?B5f&} l >Մߡ ΃FZvު1G.[DAn=PeCUb]FSb\RG y] *ьbl]̱EU4];O>2:J3I!=\*:RCh`32(BDLr:\EL-KAϵH:hł(:&{=X,A^Ͳ[Qn Rfo>vqPqb+ޥϭ+l>\F!SBd[dj2B-L~=2 S2Ķ@9=M 2̠<<9B'E >q(  r('*clE"Lf;h  C4|vM§8fR{eG*FxIjq<nyZ,crAR B=*\S7]č<GՓ3J9JǡT9n sZ$rN3&<r=Ɓc@ h@\4-Ԛ<ѠC -#;&ĩh@XlbgnC0((DxDdʼnh^3@ .*hɠ%PL&vq@\c#G4P+j.= Pf@h Mƀ  @#ց6Bmn7P&#fJ)b9ؤ-п9"XVqdx?V:V-G(qVR% A:,W;`I'<Ƴ. @ejMUb'q6U /M\ɋEq3H.6cj'>kSŖP!)( ( (i ()(i ( ( ( ( ( $PTSoBh:&]< ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 4%B 9 kh|E#_RF13PֶC nTTߗu*4m*ycs.Slkսj] [yT 4JRwYjő`S3-6x4;`dɈe񝻱%cݏS,*Vv$i ;j_f7%@ X.0)Frobi#5"Բ|*)y=j)s2pcXHW@v.W(>QqCB}aȠNdr #b>Isc特'Q9FH#f-ONMĞ=ҩEavJ|Vҋ1J,kggHbӗH "-b=@0ތʠ dlV .1N>q܊,L_/Xv\lr\n@BrpiLvdM&\0&@%x@@./@'Mh8b@P?Ǘp(@X$݅BýV91 ]ƀq&P@P@EDaldޠ {;e[ڂl3ҐXB9&&C-EEݻ zT4:;5'D1%KbuL?: 4Ŧ81bԘ#E* JF3\Voj B^ӌbHtg3w8>q a?z./c1>E6/c>c>c0;~?}L>E06~\_S~\>~\>c@}P>E?z.Tp}ދ~\>c@}P>E?z.Tp}ދO>(|J]#!  nH;/c~Kqcs_1>s֝FXSJE<:0ʆ{INpҭe۲"pz`ux8MuPIh^O]M:h-qa/,?pZ[ǩݥYXDW<~$&/$hWRr6@ڭ[gqR׊,+ y!7k ۥ@:w4X.gzMƞlƎUf$n@ܼ|/}q=LE Q`khqY]ٙo="zn?*,4[M:NѤ6hݞf$?.(hIOopՃ_"ok32F19rb FRf88y1M$e1\84ePg(tk=7 ]f4œm^ӵR7\Yݰ\"\ȧԯ~33{V5GKekgx~Bhk2GswZ+mD45M 3Jb 0qMr~/3^_H[9għ=1O4XW*i`6,wٳ$zcZ,;qpo$\|zgw(W^}}Uɍ=(XO_ ̈́99 ,+u}6 Z]Lkg,U9@[ ݄7.l,+i[o71ygO;zɟR_qydw1G#d;a\? K4yHF-\z1um$iG":}v*E{;( ( ( ( ( ( ( ( ( (;;Afb;oêԿ L@{C?QYV~g$?'VgPڰ>0dL+D*p(HٴM]WYi]]"$,}ȕ=߳7.λ: 13H,sG0K-2\Z\FJmՍAqARr#vE41tZeYDKV:5v;QljY-s4EFb Ƒj+Ri\꧇iqJl:H9 \ kJ %Hc]qXXWyXNiVm4O,)؆-9,)"o/?csc& åv RV/<N`\,'ppg([$%[fE'i(.[u)FDlbdRu7Ro}; =@pbgA@4gA@ MpCP"qZ/@c@P}h?⁇bth(4g(lPW;+kށ<A 8AM@iF|~'}hR3cw&&t}?Pؠߠi΀-L|gޠ, ~Fw΁c? g(FlPlPؠ4( XOցٿh y ĠQb\I4 ZDnn$hIaYonGuz C?lԳ77K>H ߘ敆Iu<#'\k^ 3Om/5s*(zz,tSĵJ} +pĦN#+ i "Qq'4PE .@Qp p @M:Y7Z"F1֞;&+h|=&KFk_]t\5MZOGct]W Y:4MotjztČxp3E3.P~~|{j  ,2lc$?RW9qUM'/1g {rn.KѐI=I0^IY/4f\3@\3@\(ss|c3öfFҲoT XHR(#߂iKx'o"xy$7AJ' |],MxJoc T|$2rIrQHpx('X 8癔.8$ڗAwXAG@hkZ>}CIK\^.ٗ`8#AZϧ)Y-#|>\LP@P@P@P@P@P@P@P@P@P@ww!PVŊv5 B4x߉?b?_ ՙ( sTTWGnDځ>H>~)4O}zSIO_$[G?5el_`vlT֨[I.ߋuq{!9UvG8Q:F8+EO|)4:rIݹ$۷mXdӡ;Ms{;wZ=q-Yru})X.#Z o>g,LYY$iq2&Rh M}SY=7 lyUo] Rfp  /r6+9xi֣ 9@ jv%SWoٳ?ojNyWlC4A?/Nof4 UhEmy:_ f /̅_ٻǣ:Xd/3疙c(s!o,2$rbH54H|i{]g_H E"Q>xGJ{X3O??„D?៼q8=?$h~Tzx E!<䏙4B?‹!<} Qp駏zE!>9\^3ώ@\=gg,Cz` .3ǎ=,?$h@|`O . ׏3z9GQpg3׏2>]??‹C,3_#({D =x쏙l9'[=Qpw3ώ=,(h>E?[\=?giއQt?‹@g[ Eڡ=xi?‹B[E>9\=|sE=?sOhz9[ . K E"6{Nh?g& .?ώ},?$h>9 'GQpa{=?Qpz^9+aE!ូs Ew4oC(OSSv{;f#Ih?x"sOc#  X5GUO.r."QC>Uk; (#I#QIq7F#xYxcÞ=hA# یPJne e#V? 9AIJeiO$r~ʪh'rK#j 45DxԀ6zЕUN~:m_Օ. }8 o;=ϸʣ_ٶ;})r[A`kK>7*>7_1h"8qh~ТŚz+1X[rُ'Q7T])tV$xyt+؆#2.AǭxŦUtǾ {'hbҊG7G)_\BG(}qǥJ\zwÛ~P%Q`6@b~N5zH|]~',}ѥ/=G?qg}̹%LT J>ᮬ㕖2Ty)UX>ZQ?>־r}zR7CҎPt/#?ؾa'5;iU)s+)#)|;zCJOcJ2gNŞkxtzN`9㞊4u\&OX}iHFAGD09$s(UQ՞ cH>ԾX>KEH[(P@P@lxSSHἹY$GR#TԏZhH ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 4%B 9 khK#_rf͠"4iMjW#xTN}#A>]CmOW0(Q+ͿeoZ,_(}hX>iu]_} ;H*"wARO8#; oƋ_hE#>P#G9Ox ᷄/4{&YI \s?)˚J,.V'56Bc9X?\?Qf>FKAwRYR# ;нԢ؟/ ڗJ,?f{E{RO^͇4BRPlz~z+?(c/RQ&/ur}')9urؾGoQ/dHȻꔬɕ7j?(,'!2ʔX~Ɏ}RegEbTLt?+m]PϼE?4n@+C1~:4IW{Jrٲ4@ GLx4b3ԥ`L_i}?Q`LCLhs(#?`j?(,CI)+{ʔX^ɒ7HoQ`lWE*Q`li(5Q`l?h#7({6+~8REٲt0Գ]d~Қ<5=eJ,͒;H:J,͑OJvJX=!H5J,͖t CjX=?hQ`l戬GMRd~4 j*Q`l?h#W({&GqI(/jJX=+Nh5Ti?h!TF`w({6UʝQ$TL~Z9? 6J,Ɍs Cdƿ5)OuJ,/fɡtW#@({6,ߴ:T^?kEw ftOj_({6M-M1*Qa&6ԢOKhЀ[@}%J,/fȇ9?AĢii 0ЯQ`lQF9 ?Q`l/5F[@r=%J,͎%} ʔX=,;H J,͑I.o RdĢ(R9EٱSh:Q`lOkEʶzJX=/gDQeJ,ɖ?ᣴ_Ԣ: ?Q`l~Ӻ5/X='Ѥе=J,?d3 װZi=V)3YOq (8H>..b>&< $$#ȫ[Cc.RPeܰʮ@@ 6}QxwR>cAb.7:d7i#8?i+oVji|\cHI_SiV7o{1JYnAin:C\n_S$V -r *rR}WK wsxutx~^VO ]tW,!ʣ=9(z٥3u4*աatqLjjfRn}̭,rSN>@|9^ZoIF^>ΓbC<"3Ci>egdbf\X ) u Y6gZbӮd%.,I<#zv+Jzw7ґ6ƞu ;pA5,Ւnqq$r>a`1L-.u׌X\,i,iP@b=h>i+P\WejAw:c# Y_S}KKc:\ ^?aTt Szln$O3,=~9,imįG^O{h߿,y/P>f~$ۓ[?#ENoECECEr젒x`"D,GS@Is'9 ?o'4OqPZyW؂S'4tgIqL!С`ՕrЫOqu =R.˻{W$,pppAy3O#RϓQ;di6(I,?tӕ?&q`@L߉?u>4fKxgn>Qu< #τrϯEgo_ҋ)VsP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Pq>/ lXgm[#@7__C5f&mU?AgoZaCg?~"}_HJs\;ŋmz0c\YNoheYaOlPLz. Qe~~%ծ_$z&ZGVuڣ wEt%&MWY割2(s$H!@Oݦ]PYyc[$qeR}h yq* Th!l4c?Ju+nE*_J ; aaxXZ@zPfyL{zoSL7/?W?i9% @ ,OS@GeHcPLzCrML1ހ#.@ ց@G+!q@A I&:P?h|4 =euV":OF@PFMI%pHDf|`90=hUzPiYs@ h_y=M|cq&@ ,Ih+#M v99rhUhG#(r M@n( zYtb(Lcn9@|ZGa@ Pcu #P>560qhHu&'|\ˣOObJD#Ji6|_\_]sq;,]َK֨#flw~_ )'܉P]IQ`LӼi-?;]Rq>w]HFlA Ƕ)h>Ub$դG$R^3>x,Nb}[źֳdH+sLzc`PQ]|g\kK11惘hN'FqPKrI@=1]xGBG'$ȠJ~\1$n=R :ݞz"l\*ôKK@գ[糼##NJɚ~-Xg6abXX(,%vԝ81h@&^l(QH$O @oZǥ] ׈1&I#"ŋ>ANZw;/zӿƁ]/ڃxOm.cϵ!jq0S^}jŭ.x؂7)cӊF^JC5zP- >ԑޥԗPm~13{톗x:S3ݐ~U qO4!3[/- Ŷ.ƱI+;2Xh&~,_Y ʖ$qA} 2l@{QIAWԹ}&=(ĿpAӤٳP#OKYo@is7Uz,; g~zޡj0E-eLN%}䅭\r(-A(Ziq#Ҁ%YP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Ɲ oT3Ub? oЍx׉c_ ՘PZB>/98&mv>?ۈ4"e\v{ ,'|O(˛w)T@TXR9\C@Ҁ$p8$P ҏj/ lXgm[#@7__C5fFm oއ/9U"gݧ`!r)f($\( ж1]LP]h<,1b)Ms B'gH1&Y؜ K7+YMR(Ƞjaa|ÄOu1F'4 ۓH`Vi.(vQ s:PNm*bPqG@ (=`=`=a@Gߞ(3׊& w@](oOA@eo1@ {@= {C8 PL@h>XO!h 3= Bװ4BNA4qަ\70AqLW( .:QpH=)j6ia}()!耜Hv$0O 5)4gdzPP@-4 ]caCPE8v$?@XMҀycP+i c ;{P+P7Cz`bmh jhN}(98dt..S@\ 7.K#4\{p626Ӥgڀ. cɏ@~76d 6m ,iT@<*cd@ dM{U$P2d'@Z$(IVh>E~Y1WXŜw!EF`ɠariBp3H,Djw ǥycҀ@R L.R@/M c !X'ڀAP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Pq>/ lXgokhƼK#_rf͠A@HڏXx x4'/yGW?7}:C3bG4s@ @<6a( }( ,*p({M7$r1L,D`aސX`+j@2`遑d~yP!DP1D:*;PgT,X  3$\}M'S4 /H>/S4ƻQ=72{PA=o! Þ!9oA@{y 79n]G ~Bj'@{yڟPAOʀ?> lO?HFOʀĈ('(o!EÎPBOjjڀI@R{P?o! Þ=PA締=oA@{yނ=yy(o!?/ڛCpW^C|kz <y(o [PA淠=oA@{yނ5((o"q~~/#4h??@{y(#4׾v\yq?@{y؞PA7Ty(o PA緢m!|Z.Byy)y(o PA7=oA@{yނ9{z {z < <y(o PBy(o [PA淠=oA@{yނ5kz Ȏ n- FUi7a<ڽ#zӗ Q}i7ˈ(a߳ZV̵x"lB\~ڃŏD~ai82Sr! fd|'u>w%;@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ww!PVŊv5 B4Ūܿ͠A@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@dR8mB?z~kDӼ;gDKMNi/~igyˑGPi]<\5\'S8$my:\^ijkZeկgMdC`Q4DqanJ4$e9'gI_WCQn#ūُ&}r89뼞4ը?w^~;gqjO[S& f̭k) h *3y12\oxc2APG{$iLb ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( psQϡ'won&y<5eדi? ҵ:JyWJ$Z29Zo@#rIkCɡo3>栗+;jkթ~FmIx+O.ՌټRAR1SׯИY[Xk%X2aW%ӎu1FWh4 m4/X X.[Xϑ}Q@t&u4PQLEJ䵍-t]B~Bq) _<3^GC41#0 ( ( ( ( ( ( ( ( ( ( ( ( ( (;;Afb;_@x?b_ ֋c'@ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (;UEѣS%w:%?/UԃJs_ΛPU"K_wfu 5AJ2UjԚ&SgUΖ$-:.HcO:RAmlgh5LnbWr@i9(+]^;[uTQ0-HWk)l43Fdр=zPJ_~?4=vmB k6ZħAD=%ɛi7H\󺂗[=wh˺׮Z>従vG%I6UkI8ICd3J/9ķV& K '=oWd v#'bFr+ﳳ~}T_k~ͥKLu}1{Qk8cv`'jZPMK4;/6t:-;EX$#6!xkǒ ֢qp㺲k\4.֩zN ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( xKy\aWL3X5kakGM_̱ozU#R )pICZn O /_Y\veĉ6\=sUW՝r R*mƫrm7pąvGU Q[^MBG+ .GlJZ *I7Jkj:oQs,[cX~*KH笍9 M3c2ƛ<:w/Ic7׬-W$u~t _:t:β1x` H9=8 푼d@$2 Ň]Kcn8*Y7s7HfƷ}hv) w=9= ( ( ( ( ( ( ( ( ( ( ( ( ( ( (ӿm\ j,P3_xF-Wh2{( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (Z&od VB=*ڃɣ9SR=TI)ۢ_q [o3o]^iAe>+H2V6w1< JooMltXּIjko ;ŦKć7b%hhM.gj!е!/3>o[=8q:̽/5S~#IX}J.Zs'KW߅O,AH5[KiKV[0*zrjVmjD(gK :Yoie6/rı嘞OV-Q*FP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Pdc!$ߏor5j:G̈`y_+ uٜx!E't֏a{(4YZ̓t)ʻ0r:]^cKs3ܖ%IOƱK+Z!#r;UC ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (ӿm\ j,P3_F-Wh2{( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (ȈQ$uCC`beP[ M݌0 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (ӿm\ j,P3_3ǼI#_rflb3i( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (N}r_*ر@%/ǼI#_rf[=P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@=8% 10q <7M}y yQrIMSO拾ʸ ##T@PΏ}m[jS&;=zas>P@P@>}K,zlsěoUE0H ( ( ( (CKHKT1ޫy33P@P@P@Ɲ oT3UboЍK$T3Ze@ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (;?9\TƧ״Om!uN/JlKM +i"$h MfnCE `fWʶ@}vUN׵M7PӒhKP6JGbrZKs^xT nzla\,<q7Ю 3 SxaFG s;úψƕ'oG m—Z{eo,iN@$gpxhYGTvJV dǭ ig`P  e8gG bG;eS|0W'FXI]+o%Haln~Q`|%6]CI$yMu$eC {mB$wkM?Ns'\TGcckQ:Iv5mwmk|$1` *Aov J]C6'gjzF N1l&,bѿ|7sUЛ\鉩|5D#<Xp:J:SW[E넙o>"CL=o\ӯ@hFB`E·KcxLx`zHiܿO ͯĦ+;e5Ľv6`-ݕ柯Aumm|$1` An:py`MuVt{*̒1hZ@k[ZG{͖ʰܢ|sNvvmu?Zǐ^,(';oχFe|x^ƝΧյ5QkBE4) oiYͫD{ECGP/ lXggi1;OOC5[( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (I#OMn)l7-#s xjaK7Eh{w3Hg2? Rs{cڋj4Վ ϋg 1; 8ԞēI9+.}[9-gC#HfOt[ͮ99拊5i*(-ĻQs)zե<')ln8S%/ k-jAElE9~}W~[;}_{ƺ]4_hղ["q IؓĶx+_m-oxUSHӥnAú8$B a>4 ~)obSpG"[1'wu&$݉'&)3ȡn9li+Z^Aِǻp?Њ: ?-oɨ5 ܑsB/(:UWŧ@Gp9*2Ut'_Ĥ\<}krifX~~iF0>GAu7e6uZGp֞sH==(`;񾡩j+[ȣT1u&4t _kUA v đMl'{%x]F3Z @ Ú6TtX-|ghɬ7&]b#G@UjAoo0Pی"@0]Lψյ?m:>4 gZI [;eVhc?[XԀmۑB  {֖$k p{sz8[+ƽ{M"0pH?(aj!rL!exL$xhz :Œd)Oh%Xwrb\;HOB?_ʄro ̾"Ӭu;fy4=aPTn&x-.)nMȶ]"pFFq fNAo ivc4j=W76vh:^g,oΑ8^H[Xmˊ%+ 8=/ ~*Iɻf;5oB4Y.=ku<"54K\WPKWҒm^D7RG<~xm~Avn#*ZI9OC@.|E[EldTQ%Oo;|>`]m Vrʝ{}h@ p# ( ( 4%B ? jX':}Klc-P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@=Ŕk9巘 ʰE0"wiسbrIB(.n&/q!eNp)ۻ۫҆{O6BGA@bѯ.gd]eQ3ژtj[awe"`N3`Es{wur..qI$c'ުG+w,y\kq2fOwϮz'/RT g4in&1y(;۫FvBGj=cS7oyK;Ǧ3{;˛)W[F7=2(n&~ynz9Ggv,rX}i(7[57w۳hBБ<ʘԯ ۛtM+>>4on[3% {tmh3Fm!Oޙ ,;(;;x)Ah_]mSoD}@:lD:@à@=Z=jrd%zeg^[ŜvQ@X,4$#1',ܓw[K!x9;~t!3Ú뉬:b-d#ŹYwQvwVXe (j7jzR^^Jְ\!URR1dNox\|Yy&HH;[ ;Ėŝ19$jFOg{udw3۳1HT8L $5 ,ŤMj-3‱ֳ,I b?@w}}urr3-;kg(eV\q@ {#I @@2mwq 2HU_ZyYWlUЊT/-ʃ&ej(c}ulrV?zkK˕V}g4naT7GsjG4M+39%4o6kyq9Syy?;﮴NUoUN@fp?3@X%ղ1Xfd4W45e`ds@ .lg2.+zu^P@P@ww!PVŊv^?(FêԿV2ΠA@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ww!PVŊv>D/Ա??uOC5[( `!xsX.fp4E ٦(\>7?QEi,MQ`}o~sX.fq 9CP@|H7?QEi,MQ`}o~sX.fp4E x>P)P@P@D?o~sX.fp4E ٦(\>7?QEi,MQ`}o~sX.fp4E x>P)P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@>(Y8F8UQO+PdM 'Eq_<Nw- 9LUrxN  1@\^-^E7`#;w-{`T_YtLdPJ$H,.'8,D9(m:/ lXgaЍKQϩbI)P@P@P@Z{Pc ҰQ A@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@t~niF+i"OC4&wc%ׅ|Em6uh fL]L.tt/ @>dH"д-tH'] B u5ML ?>I!wi܀Iܸ^@u3ۨ5C l=@3Ozc{/0Şu6Yl6du:` hOccsA[핥}O=FT3F Њ^:/E]J{X~UD衏P^V[9$=пJ<åMJm?ZbW$1?ϭx_QCiJnc͊Yydl1Pw΅Ab ,It< vC1s@cJ母<\0!U.>2Jya0h䩈( (;U8Md6zG"=qg3%e3$s*0Ռ b!̌|å&4fԌ( QmM|f=P@XxY |E q|N ׁ_&>x eh]FSP=?]'om_ # } jCƦTU2 ( wqƊu# P 5!EQ׹$}0 P z@@|)U[o/m$I4}G8H)Ѷtk? j?=r?G#t<-Xᩈ( ( ( wqƊu# ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( txasښbj>6?B"Ieb,I7^pu/?v|3;q}S3rhBg38ۏE57WЭoj\@SfU2Z2':Rnm*]7R) n:mO͞3Һ͓6OC^g?ͳ/g㶅$"6HL“&Rnp >V|M%bM=+Zҡ-!SC(X?EgY_M[Pb@zccbv:>&r'%BW9pmo#ڶMo|y|1zzW jstupxhAbϙB#n?ųCnI k[Zw7n_#%$[8ax|I < 3NTs |Έ6ZO|}u)$p)9+B"DӲ#2>>A?SD2ׇjPjfA/u! !MJ:݉ZY^.O`QkSѭPX+7ST}N8x/_'#GUsĞI x|\l Ft{Q̃&oGErG3&"Ame ns?*2//x|\?<U9x8Tsd~6{ݽIyѝA޴rHSs%݄Us NJ(g ga[o VU/$Yf*̽qgrcO kQ=?>t.F=Kj\^lkf, T~EvڿqSPn/^O<m|IuFPD vFGAD&Tɮ1ǁDWww?*r1x`h9r1$uU9XWFtC{s buTs a'|B0?UH9Y<Rp4UO2+?|O_U9XU9XqmA%nĖT]+HXT] pnIÑM⨺+7^aAkaByzhwAf7w|2T\,8x3_'#GQp7ua⨸YoHNTCox.Ʒ@l1m+|ݰ$x.b Ox.>V)MT\Vc?qwf+xkNT\,_x#Qp$ļķ#Qp Ġ?* ^%oGĀd?*^%##MT\|cxJpt@4+:5uO:6\T,EOf?{FCyȩ4Xb5c,(vzXd{8FO*Xz+y~?U K[ع??Ƌ qGclU: ,E9(ɰTXcZڌ.?vl2?U8+ghC?*3]Shs`|!6v?Ƌ"c_ާ`_?Sh_ k,p,*"C\c4O k׳4 x{T>qƀ<3{LMhz'?ƀy4X ?"` םr?*0<#@u`)>??, p,2T)vU`0O[_1<V`In~v9|~Gv5/[EOZyT,AMhq]ShWz GuO86|T,1:8Tw"T,C_8'??Ƌ1<3s]Sh8'??ƝcX&ϏE ί>?ƕz b𦴿z?Ƌ0xoVR7Zc'`֬ ihO5.5O񣕋ҳbx|/LʟjOo k*pl4r,~ פU+0|U!? #GQt>VzF̃f>?*d>I!h9rH5.?*dx/_#χFG{)CuT{He>f>?*i? ׿#GQ"}{|?4U?iS/!h=CK㭇F!8T{H`3_G ׸@MAt|9$#x;]^??9rHQxTs 䐿B`<pT]#|uT]#|,?4UAχFtQ?#GQpb LJF|?4UVz3?UV)WFVbLJF,x3_xhQhC|}@YfOm@Xx|U_k퍶OGP+1^ ձVbkPbg`GPc 4U0BA@@YO 0'?T?4Ufx?*BͧGSGPdc`ǒ2?|?.cς3@Y|AM 1#'@Y]gWqi0q14̡s<4?]+$]*"p>a4\Veoj2HZhc4]hcPFm1iNH%T%k }c?hardinfo2-hardinfo2-1331e88/tools/LICENSES/BG6_LICENSE_CCBY-SA4.jpg000066400000000000000000005741471474767047500235410ustar00rootroot00000000000000JFIFHH%   (!%"/#%)*,-,!140+4(+,+  ++++++++++++++++++++++++++++++++++++++++++++++++++ }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ? I7xafǵ6刂 u _WCsMlڣUPH Ǡ *?WWWWWWWWWWWWWWWWWWWWWWWWWWU{fx6+ր!PiPPO/@_ʀ-?Zq* UֆHP@P@P@P@P@P@ռw04Rހ8iP+uRAChWs\Ak<|2R- Z@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@`€9B??GA>/ Ў8Ŕ88]XIךNuj)a RZ-_DAl]Bݗ8Vc/z*zMsܞ\?…93j^w˦j솱Ybc7x3vQӴkˏi˫NIB\>ӂsBt?:vê>eqadR!`;Tm3@jgKPmzm3uaQ:#2䓴A(o x/Kt+K/. dV;$kH"L{uZ!K̬2 4h*s*=eXk^[Z[on{A*br9 .,&u1hm;HA&,тyy @pRútή#KU%T+/˜P:P |/GE5EZI"$ۄy I}Εordz]ݱIq>xE(f$*W[!I<N:g,-4Qͦ\ǫ g_:A}H9c[]Fu O0'~x;P3aw$6oêOټDv!b@e18|5f.[E،ȋ‚ĝ7ˎ8<_ĉb5$t޻Y|,,g{Ooemxl`Kԧ^<0PqP7 [h+ W0,Mq>R.nڽ֡iw7Imsf qqr|lvӜ `jeV5Ėre7 ی9ڀ1ao)g'<39?f6>#}3_//>gy7׍+cW4%?ٟn;iqݺPk_?ϗv;۶vg@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@}#mCS`9tr1I?WբҢ/o3Vޘ=1<g@|Cѭ@5m`?I!~ (G_ۖ?^>}q@q?a?c~ۯ(ĨC-_#,G12? ̣;XU@h Hu&8jn9ET]SFT mp܍sB׋[8 q<$|f8m_NySߩ,䪫VkSP143@ۂךKmNȶ0K+*`d`sׁ@kůmWP͐'rV8<@jf/.#d<{n˞@uKkJYQvfR*A'Z UK+xtI;J\(F /]WU jLw X}:~@Y4I \0jr 8'װ@TqMA..駸4f-*V9@z}t,of` #KsIT2N$vSRGБ@jjuO@}gTxm}Jehb+•@׵U%mrln^OCꚌ+^D$=3z:K-_R{{-B$pȬH$\e7uss:4P@q+܃c"X KX.o HBKw(y@ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (7#EHI*(ªJ {ۻ.on%˳RO&! g[y$ʰFG$} wW7QO-g),NQ9 ~ Fjqv]hӥ)'E ڮ2RWLJ)8TMtj)KӒ II@υ5O=K&?N#aA@9QUր@P@7n>"_Wߌ8 PRHuT" =RF\W&/P@P@Zaϯ5kbY? )t #RKK*pOj OK413m Xy8ˠ4 QHDc.\.@XԊ}3=&=3T*2ϓb~ʮ峻6O r.A2=E@zݷ&Lo0"p9=]xj;hlײ]!K[)a![0cހ<Ҁ XwZΨ%N{36`hMKRnFO KoO"Cnբ6*_R3ۂ>!Ɠ_,EF z}Q\&K0ܒz&ih?P/,O@9Ox}ue8&am۷@T^y }jlzΡis\ h$LUbx(MZDԤQv~M.ƅ5ab!i줕)E݃s ҏ[7եvqoѻ뭛->jzOo}-ƣkg$I}݀͠kYR䴌d+Yv&[޷_d잭] P'UIdq܁1r9'94cKۮJ|M5e~oᶣrT.?cw,E7oU F M?Gud(EIJVvZtzZWx&Mfӭ.u0VYnF9 H✩I>U彗k_ˮ&Ғ~땯}QsNuA3:]ΦҥȲ3FHe8Bw<"Tm{-8;$˺ݻ|~љ}K Qa3Cjda =8M)r['o)lqzZmn7tOj:7.lI$4#%] 1jN׶_ЈQ2Iu_U٭/YSKLpRS(1vP ă\U1TE7jiuvJqVדkmXG~ɯZKc<[M'd\.ܶ[l3su\^X=])?;լ̇}FdpSSc,sT8-ܢ[E~+W\&J)\X;cl|tC1?2i—Ъstʹ"3u<$pj mw7[D_4cJ7dߓzzO9528%kS6v4{P9%>w ]_$wMIu"xQǛi٧T;Ow}yst5)m~ֶSK FpwvHNJ-,~9y]Զ}¾V\ۮ^ M4+"#`3[񪬥G]Rxk-lw~Hy+EYn)5Y[olVugysO$c=;RCMtӷ:a ;խӿkE=.MXiX_rF*WMrԳ޺Iʜpo٥wG5rK/Os UQjbvJڹ q'"FSc1ʬ"37}>"5m_F'p|&S3YΥzzǚ5M_^_( WMŷ{]]d(7ޔu}}FkImKY!ݰsgm|G CS/lWZ!I<q)4%n߶5i3Q~MlڤwZ%zuI8[Hp<¹nbݷvmlvE+7WVHռ3.j^l6jd3ݴ6mջf䨡k蟒M6]imH'RVjҔux6QDm&!}ie>ϐ>{(44?c mVmg jG @G )Վ{.q&0LzkXxpXK <!c!?i<8ݝyz/- :[]V2.6A[rzv^6t&)SG Jl c8|UGNw=lOFۿ7{>5=V/f-ٔП^<%18lRa$`_Es˼KMr[ ,<ōqNJzcqY]ם>c)i>1ie/Yc} r4a ]WT@{VàY<1Dʠ($ۂ?h3;Lv7Q5ZUp8緱@K+%w Ē]C^c%l"d,{ހ=_M[,Gmy~wy3yE?g29|)DWA E@)ͽҩ*}sbx~ZI۸[l33B|rO㲞[XKt h1͖|wfvTg70,ץ,@y:+ E's`yz@N5Ka3g\SA#-$6rj15Ξ`~̇dP@'DZA]n[#rxX#=sP@vv6+IbCw`Ss:#G 366ߗǘ-ճ}{R)izo cy;v9kao;뇇y'7O~?$t|Vg^"~5;_3NCCԴyh 2BDKlbHˑUsYf[ꭲ)0ۙ=]ޮ.% lŏ>Ju'Iŭ[Fk pF[*#ִzKEmm.+RVm ܯU~W/Ww|L}SWկ{>EbN0:q^J[Ԅ|7ޗdiF1~{_Kw>#jZ$N+G偹7cN5g)u"ܯKy}֏,4=-`52udi.5JO?qyrA*kkVM)>RcT?qbsupl22 ?6 PE1Q}-'osIriٻ[}Ӻ٫KY-=B5fvuv+!US KcyTBre_wUkm2ƁOmh6w|uv'`0>ۻs)ÙG$mm:܃Jzi NĤ7]úLIlq۳.tw[4(kB_ N67VI++- Nu`IpHbpUvV`H*T&̞i+yꮟZltUy 2MxMCDt`# h`$>rrrxjATmiUϫWzYkksdҊ{n-{$V}~\?[t%eWC<&-W 9!Td+|}/oKMKԋOM_{ dIZWi뾖Hs<6+RTַSRsoNT䝜"r] #ٯ[_^3o"* ,TOz|WkWNզVRz)rZ&۲z{[ʹNfGx#qqRIp_$.N1II(;E~/xm*/[7N1<+Z߼%,% !MsRt/2WpOih-QuS.! E䁀p8QR̯ͺzUѼO[Im:;^I9"÷1b[jE[rNa$`c۝)[m.K.4DB2QQInNJmVMw_hdGPFf$c3~ASo۷;J9yrz}!κ%ӵ1&U+F̍rCF38NŵuU~6R Iس Y-*6m& m[N8$Ù<n1|kW˪ὴ_Uq%pmu--kJ_[e܋Wv,W+BJ@SQ9b%RcAC4l* ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( |#So-ՌT1Xr=GOãjkcG [afx۵?5p?oign$69k&.h͂RL${Lc% ߻Oy~^vgv4z&~l[;y {ӃLu tDRٜ\ F 2 eZqaY ".}e=Gi-PNyӊ:xrv|mV8XÙ+;5om8]sPZ5[}BAA ~'*Mb3 GԢo}<[zSHAΕy ZI̝hFG^ڵ񅜂takU>xOnҰ#=bPN:/jsϠ4Cjum@ڔ͘ݹ1(Gĉu .4w&I`?*c$ׁ=hVi7v6z)o. H1= u>F&^qC?}o89oZ^YjdLof2|dtP7 i!'3@?~'/@jOmdMC' @q5 ͦXi:C+Zq`Cs9 t,B gցP@ҿ1V~Ŵ;q1|;h)*FᴟYE -@P@P@P@P@d^Βm}spGҀ!Ckk0$oPP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@}_dN GzP@tP@P@P@P@P@Pd$]"a##]QuP@|ĢߏF9 ƉI:۱ 8@/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg ?/?Rg 贛K>+k%LU*˒H>P|7woZ襠 ( ( ( ( ( ( |o?|\@f|dAI =Hy7"W+eމ~)x?[Rr-,9O! I'3XʢTE{[ДӓCtzݜ:\%ݏۣ;Xl߰r H]7gBTܓ^N]6F5mnnu/ӯKAj]ť}gm[\Å'oC3Oݵ4ԹKkhC ibR+:2_r]/uߗ_9m ^O ՔpXo)*1ĀXs:xiuvgմrR]Jt=ݯnjj^I| q#j 7H;2jU]s鵢+x:xZﭡwz̓z@7мxOx5kU^3DcFSw?2j:kIҒm5.sPTiJ+&.\D? /8:Ar5Y -lNpwvDtvVէONobp )VgkzO+rʟ 4⁴Ѽ)ZhѤ5Ʒ[[j#WϹ9yJM9R]ɫkm,B*~fkvoUmFZCVeP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Pc۞3nݯ9Q0~˛GYUU?y{t Z:l=5+.YQHӚ3mo~˚<[5yTm4c3.褲g 4WJ;90R/f QFV"pAL N+ ϟ۷?ߕABVw9WzA@P@P@P@P@P@P@P@P@P@P@P@P@P@7֒\42IxLѥM6ݠiy8$F;R ( ( ( ( ( ( (7zMI֭ӧ܀%{&0aʐG t5PiU.qɫ?U$P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@9- ;oN-`_ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( OL]8hm/]oo{4h.ΚX]>q㍸toӎ&ޞ޴LOO j{˝LEg@o(9y䪳q 8)8Ţv{iۛb*&^ڥnV澖Kf[[6QQ}m5A p@9<4#,lF _]ɅZQMWm]GBJ)=Hm7ZEP@P@P@QO UiPT[>Py\Rݥzu['z+gJ53DJ Y( U%unvvϕEm^̖7$j,ۯ}Ocf1mq?fw϶ӗMr[Om}mo=8кaN<'zߗBEmO/w(dyT3`0iWm]S0;A]}tju7|}ϕ|spݟluemo;~6t.^ߺO[y2ںJ~%Q Yo3 :m85,eʞ2m7񵼆-⼂AofJ$V1rv3xg̟kkcPVxk^-iBXctOETc>g=MmM;ߧVWojSuR6(`.!dcq哂{`VSq6ٖ'KnZ!c"8mNDy<uO6]_[OE˵VAy5VX)w|P1לg8}7~_Ir/O۵c4->]nH^F+srM/Kѝ6vRK%O_r;žnVb=3hP+tRiʔ잶Xo}w[Vc߽׍;v;>˧_з'Rb+XnK|,U.wCw9<ܥͿ,/_o>v&F2sF߅]I-W,#LmI.N[U?˱R22^[ԢinfO=bn{n3ڦJ^s ok}{ujj6Ƣ5j6`w/Op)m>fޟ7nšnQvmokR8tfN [mȻ %tk!9l5Ydis't{]b:QR9=߷ܧljrĶH+$Ȋ^^QpN)>U^n[)7vӲlZ,vE AWD;D/*q)T'I=+6S6o@ A^׽];IPn|'߇P"?1E2p*)K4ۿq|׼֛ۚ|ЗÏn#K#'99OQ[Jkws;Fmk"4ws*OTtExT(̶QZ'ɼ|eÏP31OK$-kW&Zmy_}lmX)M-Ua[TOk}+. S;RE@P@P@P@P@P@P }þ5!)o-5:_^NaWb8@G+ߢTkfv>~k]N+*jMN-̚W13ux/警-ݺ fC0+')VTu7KM/tkKy2StjAӖRѽt~qW^w,76v\X rc ukӇ]oKQ3ӊ;z{K}]|niv-KK7}?NpS¹=◒jm<'(|Hep4ډ$W/3IZS(^Y^uvl єtr|7-eP^r`R;o4j՞u4[|wwVyn6iU(n%ؾn]gҳ5&_~r1$?0+ۭۘrNHlN9gZIҦ]%sUohlGq' ItzwVun{I{GVNwVw%}izJYt'gHa$Q NKwizsSN[kږwj(cjW?:@|.ܝoq[?IN{ouiޯR_ /4(u^HeVvO6Xg y )J18irem}ۥzB/s[~ݭ<;c]ũImt I$I p08sZrbçnxo*g|ϴ/~͹ngB*q[7wӲYQI>?^nU|24,i<_o. \4+ğk;ꭶ#vM5ѧ$.}ڵjOio[c\x`nwc8Ykyon_5 AB[%U#3虜("XIкPN0 3_;ZK=M<#hJPz=mu"(TT M*1VHZE"JTYFqݑ1*!^kB9_?7̯.g-x1Q+ه}5rO2)@?ZJm'v-)( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (ƾ gր= *E-tTP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@x/5g֘Gvev* g'3 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (>!q<Z [V)i  ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 8jEz/'~UZ ( ( ( ( ( ( ( ( (${ow(Rέgsq 2$R*N嘙`#9|pW|ʚ}7*z|kR^r3t7lm|C&h!+Ic㔀 d dۗ{]6N5J.SVJ*Zzꖯm|t>6ۣq0G9 &P8AۃWMFq;YZ^ͥߍ+٭]x\M)N;ȑ]|挨’3'Vo٤w춹UWIYz=59]ֳ]'W[ kF86f(C8gpF/;kM^a]/ӷj^ s,i(\ZiR\-lWP~l8y"9ӷ+RZE+,]RKե#Gka6edRJr{,0#o`ڳ~km䟐b$+%aQ'mw{g2-i4(n<`<Ì9E>Y-?mRRw7{]_nƷ]!cfaXWT2r  Ѩ(9i)%X/!~߷kZp>1y|uY5f摭lw #c\ԛxEwR}]M)5deѠЬ-tˣ>$$ZwALɐJp+i~RZWqVzg7RJ޷}h|equ jynYdc BH|*Vg\i{+ZhħSVe6oHnw6d֮-gn#ppy@qqS9'62;)}W35|xWPa# 0s8ZtiYoF2ɾMmt\'}i}^ɚZ74tFM{ǝK u, )ըڨB/{'om~ztR{mz_mf]^IO4 BBNC7#WSMTz$ig1Q1v箟>9l:X?ѯJ4 I Fq~U4֌Z&5lh4$u 6/%;䁐x W:coNk.׶CE{jKS]uW~zmExlZiz_7 ʌ+qm;kK_[}mT҄㼖m龖Og{i}kXM?@}RYڌb`f r=3]ݓijhT5un}z 4ivh=iv'v#WnR3)7kE|ѾO;QOvl"kx4襞k@b(B O gp:dj?byl]oy^.Z[fbi:ޙ\jZ㺺 E3ˍBrcN){8GS/=9K}Kij][U.ek q bN]@FFI1IYQ$_޻Z^v}m5!+Rm7u7-gǖzUt}4{=;R0 08RƊqs_yE[v[EuYΜ9uWj{Itz֠}jŸĥ(뢺n;M6]u(DHdW=CI;TE{gh_L^&4f֚g =~-V>,Q⸴}sy4!cp#gT#;N^z_ͭ彷I/K;mVfѴڛ7Lˬ#i . "U{:v߬{dR'wfVm^Rvmj>s`]R\[-̓=5,T0fv8<8ʃRODM]cܤ-zZi\5 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (<_P-hѾ;RE@P@P@P@P@P@P@P@P@P@rV2zΒg7 L̘%cFn9Ra$kZ_9=o=}3%-Ry{[yBE<0.@`h99!6um}u&QmV/˵ֶCwKb 6:zXš_fMV ک}Dh3X5mN NO5FebuQiԕD$y1*/ot}&{˻6W9eԹddE0A֟"Uqj/f woa&kɞ;{>*u%A(c٭/5v )B}${]y}7 x[4476ߤ^hrC.q /$:iPT9|Jiut3MNSoOND-I]>Qm9rVV,'@<:#M7hG䕓VNWt }֟5kcݕ'#$ӫF5KEkOC:PT/ovwĚ>ZXi8gnoZIyi&4RIj],"ԭV h1*3Ugsd~iXI4SŤ 6$a:ۊOkO!9}b[+2b-KQmR٣4j0!lFLuժUIuwk[keb}(ӋV[iZ&Kflп΄A m;;~[mnhTby}LMj5BS./$lߚnꋲW۪mRK>?AH'`w{S+.e%6i(E&~EM-Z7XE3\,,|gt!F>NdH(/UR彵vjh1YCcg5o71<[YeW3zE8E>zYm-kYh8EEIoy9kmW7v$kI@^ݔ8ಲORSrn^mں{ZZ-jVf ^He9c D.@дbq's (c:sm^j7w۷*[w%J-.9}.qxЂ ZRUT`AAj[2a'JܽĢ5ySbp>Z>pRRw颌_޷zvlR٠-;m,21`saY**1]NO~khfۗWQڴK/&2ۨW潎Q47yҿ*`r;7ӿhVWW%f|֎бVMf3neb^Sٰ: 6\Kmnzv\)=QWҷtE.-6- ghԱ'bǧ8ƔitT~I%jL nrnOztZii20>cIgmɻ۶Ye';~-ջ^I/cBwזWI3>Y|J0˴;gmF1OERJzok&0\{ɿmz;ջ *+9fT[}IRNI<$h攗[~ԞK;|[*$ZhPXP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@p?ZoN-`_P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@?q?Z`zW|5`oߠ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (ž"ugր='eZ( ( ( ( ( ( ( ( ( ( (86vDŽ-oṶR`Lѿq)"_C#-Zk6Nm9NDs):v6jhcVk'Қy=R^Yٵ:|Mmď9eR.R ۉ y.J8蜚ץNum5*N2OW']KuЪMc&k2\İf(3>n2@9mgm8|oZŅޗcquy dXPXfALӧʪۙq{4gR|vOIJG˦#m𼎡EE$@$R7j۴7~߲VZY-:'gdm6^biزЧ@,ළ.$"YWRǚ+E?T'E>U)tNKwo[RWlh]뷿ll.+;i$Wt+#38G|7mݵG}mgkS\ֺʣ᣷]UDv:榺4= 0 զ '8HV'55S~{4T7^V S[BKF#6@#1IYvuQѯYkM~P]mMJ8bV 3$O;#oM8^>ztk7{&wPMcIE3\sƬ?y_#,k()s'k4ߚx21kŨ2jN[E'ȜooڮuEՒd1 US?K9y\=I?eʢ#y4ӛ_{;t/Il|Gn%i8l,(u$NI\m+U"_]?ግ*J467wF7cpvXa#h(5kS^9Yh^ה5i3dvHfHWR` 0A5ub'ym ׯ<5jfb5~Z.3IbBb:QT|/K7٣'KNN)8t7:]g~q2$I !A'$WKz.XJ|~V->\Dm]/E1c:ѵ]b yxqn봉d'[=f[s\VMsJ;vmF֭hЊ_/}\\Z. 1aqL?47u*RG՚ouy=J8,b֓]Ih֩w]SԴ Z8n٧hF2Ary%.YVQr]ViWfn4DW,ݾ;ق}Z&M*[OzbcnJi6Jy΅yT?i$k%vUZ*j uR']{飵u{X]ZE$ėTI8r~Z.5${ii!85kwr(( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (<[!P-h~ȁ[襠 ( ( ( ( ( ( ( ( ( ( (7[,u1ki<^!tld`z:ʹ{_جKIIydu Ko$``mׯrT"̬mz~GH$Ay2?LE*Cݸ6UNA#&wS鮚!xSG;mdy$6c"ČaTۻߒo[/2GK[7^OM_vnTA}gwnH)Ш4 7fMY 7n<+,1ӒS[XeE-,w 8i-i}*Vzٯɲj;]arŗ!! "v{{^|dtw|Cţ[v4ȒH.&Vh fX\7'Q2N:k~-^ME_վm"X?TRi.R ͕rG1=kZ%-ܛVZYs4KN.i}D_ʟvЛZ\"I$W?Ό $gش+}6EW6И[(G`X9U*ӌ22qmqwo]wTƛsϨ1mc[7Tp=w]ӧ}šSߵݿt[Lkm߳;wwcv88v|A%k}嗳hsO>OK t_Zi]m^ߛRD%)>&^guM-XL p3SUt[-;kzhi=zabKk ̒@_26R0~l;>J*IZjJ3玎nQӼ7 "[y"Zٮ#hIqsi_eNnM,巧bΟYoj' $w{Ga@tO$1QvZUeleգԞ'Rc=x6;iuM4no>=Rz'ROsmq*nܱFF׏Zוi+kw^klhzAt'*QD%]X200qӊ%+_Ug߻޺uY_ t 6 hO.LL(Ap^hUdY~z(HHEHUQtQ)9;"dR(( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (nj\jכZv~nGϕjjZw{nW}L: jd웾o[15*=k˚m~Nnc:m;sb܋-_ZT@mdalhT r9GJʬnyW"ҭ%㿔w$ӓ:֒5(',ș$%*tj4Ӕ ӵQB"Tԣ9ٻwEuͨíEkI~6F'  ŏ.ZI|~ޮ-Qĺ+[o;`u[MF.lBew. =8'&k^=~MzߢҜ%'%^I>&ud+sr2,j7_y/g}Ur]ErӲom,g3nI ^F}.Ei2 s 넦s+ZG%RY|ۙ{KN4Q_'GFY{swi{m:R!1ٷNvF0A},KnFzvO;,R'+ՕmʵWvR( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (Kx^o,2 } jSWRV~k]IYA}麅vw}դdhUp00``qZI;Y4ҧHhk-в- DQ623R׵.ܕYmܾd6V F`ɋd`yq:/ʼ8NM'}P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@xUiC|tJbh?vZv?}6kԚk{"̙pT8e\k+);{8$WV+Fn _73_=-a|wYw1$B@(`8xΤZYJ Z]7ޤɸөjF:{קۡ b 8nI~# :iVO)D#CFubHyqUc*)6mnmzxƵI5J۹i{7eylwʝ]bYmUcUM v.d9UG򡺒^ϵ⍰zU(J[[Ot*wqV7>U1\I!CȅH"!'; fg5;=z+M{{siaÚ|׍&|;.3XDZĀˀ2N$[PJ5*mh?u?%dG x>I=#%mGwv)x|[@"?z_ÿ']ZC: ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ([|na'z4*-e&&⯥շR9Ij'kӮY>&&FM+SNsRY=fj~[-'V-߶]3 }N)u/^et2AZF{s+{+ͭʅHԜ%k2f޺5]ritwzValx'p/rPj[;uM]~ko]hۗit9|q[-h6"Iki $RkiK#(*!Z%9VJQTӵGMzڣppjTꞝޝo/gx4(bL*Urs_>Vj^tќe k['{kյMfxCE_ytU" mKap#PAa`8ݿ[G;J}W^n]mڿ{?[~"爚HțMM<{!w_oJOJʓ:UckIIvY&pJ.*E#3񆗧9gS[Ղ{iXA{c:!*pKt{Qԩ.i ~jH2B$m4YNAct5Y$e"IP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@PCPy赠G|;襠gA@P@P@P@P@P@P@P@P@s no;Kgw~[+N +m>-mⷷBJPI$O$/oDP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@xB?1?ZO3`oP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@q?Zb=/ .E-!P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@)gZk@Kw$? K@΂ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ux5;JtZJ\ mVQJ5dk\zEr ȭyV;=\=_}۴Rqs2}>exYa5[Ii$1y"$*oE8foKjt4`+NU+_7ewmk{iourv *<8‚ry qYũI:o-uZi_nY(I]R4(I4JJ*`\U*XvdVHi]',9斊 cdvuM[jXBH;hЀ }iM$}ݿ==tM o.LҘZvZEu}k n$T@-]uWkO)-6mB$=\B:(fR7n'pAߕ_a<ޟm~_>KkZ\/od 7,Yd;waXҒMNJvܩxKGr\Go;+D\$|:⳥R5aGT'UD(,z}~M'\үa_*`#vLUxKCJr~o붗t [jW3ܥIh>iLsSNj%mۖ}f ;$2itj eC)aA rK[ԗN,5!!ӯn{w+;_ͯz}m VӤ$c-Qw=̦U%30Gnܒi79i!u-)bdYbdc㟼T) Sî4:쥽^GfU<X[k2ػ}$ثH e^#8,=]' O?GӽWA~E5m{]w6'4n _jWK#i M"b2qxz5w/W ?UHxI- :'޵wIZ?ʕURӚ)뽚2[Үu;?i1#:~51jPU{>l'.DHLjSi54͛I=۹gi7nWUI6➩_u?{iFi,M2V3!vlnuV˹7[禞jiTʆo"Wː61 NO=>:MDLUw\]iuorʷ2"yQX9nGj)KG=]P“o{~L6Z7 (ռѕ]{f7$+|5tiJRY-F+1I: NOCVqQ_CRPWNm^r]%C dW2~cuE:nZu]\d}5&](.{ ndq }TuEkIEuva'eٿ_t*Iމm{ +a=H:dgD:n=w{n*n[/ZW=O4/s bY"8<捛.캿Bψ4khK[O6nIr L@W?t=2E\=tvv=֩Co51\$ʢVnT)'{CMO]Hr{K[^-?]ր c`<~e`vNNqSjM|5m3z 춟صuV[u !KUYI<9.ߛK؅2؇]i0JʑH\bB6'Iovo;ui::{*C=B[ȭřDc2AnL֮մיuO҅5U~Wojjuŵ-Q9 Vi\q=WtkOQGkmv9:(bx"SQ3[͢Yꗗu"ww߂A+8Z855O>תќ9v?Zm|Om5ʲT,{w_c\qb]p9r[7Em}%?7w7ײ_yw$gGg4榮;'Pg7v~h~MEZ%g(j~_yR_mte KǞf @ RnߋK_ -Is'O] y*Xْn.Q O}\tiؚUH.MtWZj,V6s[Cw{m-UV‚~cJߓ%Կ_]]Yݬl$+#QZj%9lQA.2OkJ 0SvÐLvQOzuVަpMut׺EWN'kf"kXԍmImCpKkCzc`dCd9}uZZt֖ݩjvkovz=2P͝FZHCl7*=qEYGƥ;kNFWCةn[Z?[k6υ@e ld~#r7N;Ry%7^ϖ߮8w?vN smWzϡxW9u5Ͳ4-S+cw|㱬1C ikz)$/RWНm6_;^^[Rúw4,+HJ`&ݬ|Ilbipi+6S_j-&m4g һM-9'>4(uOơfTOm*c?+>"PUhVq]Y&waNiZ~ilFv $LC9HO$v"R+^ .OOipo|&q~ [M Ht#o{m<7Z*޿6JHerx^}ޛmZ|N.?N`n׺['cn ,v茺%fw1󼟴7[`wxJ<:m?{GU,OUsoo3{bW[ht9[q M:wvt#l:[ZM[+[+/-gRJR5v}ž[7͢5ƥ$ZB(=wgo, N45^'5ZTW6*jke,Ǎtź_Zj RF&.&\l=ֲ.=귿_7ԜSOګ_^TTvYX艤O.?gٴe3+IYS])[ʷ>k{q~/Ѥ W)*f 讼-O5 iR:%WU~|bhA*jΓKҿݼݗ -2AѾksHj6fFWߑ\uTJqTd|Eҥ]ZO5;QLIA{g.pCIl38k{W׻I&[w잫 04\SJU ^*mszʑOjv9 00T&ޥ+wUƲK6+?[\m_.lo4ۘO#XcUh2w}kF U 蚟}}Zo(zrNUVܚh%o&+k:%k:G"Rk=xB(2F36qU {%krK+nK?ǼloY;MRk{JO[<<]|EI/N.U\Fq$|O(\vnS+Um2¹}ki.[Tk2՝-Lq6gQjg-q^j2{2}v=.hAmuoɧU掿]ZK y{1BfC2B`W6aFP=ښJaƬHuaxĶl1yiPo1qKevWFkQUյ߮ӽ7>̖ã\Z/Ch3&WTnHΝIFmݧ˲vm[K^.,l7k߭kS>J$-Iuk}.;ZV.9nj1<>U=onSTd6/aug_ }EuHu}9!xdvXĐ\a7I46߭iTj(wV-^E[hDﯺK ΓKֺ4bXGTgQ V9>^.qیg*I9Ւ\m劷f=nnFA&ޛsikwYv? 5IF]w7w0(欒\rGd)l—-Mq Sq,Z\HUeqႿô}.մk"j)J8ZghU;7xB_Ǩ 4-0dE'{FٽP˭$E&_zYX񝼞 IcNR2DJ '1cÃ'na/k'}Ou׷[U9?w+Z]K񆍪o#5`hfA@7+ӥ8S{/mE3pJ5%vI7wC:uͿyx~Phswqg) \g|;B}8\^K^m׺]7Q-5q{dZf߹7|(oDkJI63},QszBJ N45^'5ZҊTMa촾uok6\ȱ.͉ôSoe8hI);$PSOLu HZB;PbB 1SՆ>ETv2k[mfvii6xW{- RԗSE4LFs\ܗzo4\=]5<]F7_7(ս'j:/Q]MŜU)+p3Qz"QzTt]{ K߾qqci{73`g,{F*6=94J)j;-ֻ'E2wJ{6^KmnxsZye a5lNK"#l>Dg"`ޭJhXz{FJ~׮ “Lմ=%h4aWMȲFȟ7E0n-Sm[ǿhk#jS{ՋKmw׳-X&ړ[][̶@%r* Oj~ڜ{K_K?ߟC::IٸtqXxn@em?{n+[%dI=5mf6kφ6y+sK(N/?6yX7M[My.e\  Qڍ8sI5;kzCY$P~뀻AӕJKV6_XHxz2{;;~כֿA-m}m3k^)Lȱ3FXqӊө W"mwzt"'kFe6M6/:m Vby-n>V,6:=㸮NZjl/uwWiͿ}tzk}״hMC+]ijmmYexNz Kߌ*e(F2Z~sG}F'qV[RjxcSv,n\+92c]έVKsK{vi-v5p8VOm7njVi=j+wܰYs.B8qdzӬ䣉p9rTBU5}xK&\ց.<mK9Ty` Vg{ɵ.$ᆱ; 5J|ւvmY+>ech c2N2?ӓ-[8DðCmuirZޓm6[}^M&'u0 (Zm͆ip%q]z+:Qr]]?w_*2qw_$9ٌ&c2A5r\3T"ll  8ԓry4"5,|BIھ#|*7R\=w:z( ( ( ( dqK U`x SMt4wC( kn-HZ{ed1yH 3-BJktvi=硡@46KHlbgwby'$ҌTa-&0e)-lnA@P@P@P@P@P@MRQďy(A#4|.oZimI HAEUJNN1QVD ( ( ( ( ( ( ( ( ( ( ( ( ((]q8o`,D,"40v84b[o*K $+Ђ:6$ ( ( ( ( ( ( ( ( ( (#lZ"Y?|/u/nkoqRQ@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@PW?mj7309'XbiSyk9Fx >b,7zs7]ov:*NթFƧK׾.Zz$,$iG 2>? FFA 쮿y%7sqT{U} 7ߗ}tߣgE$Hl`oj JIfS|0@0)&N߯!&8Y=nI5}RIiǶnfm./@]%] eqbp=rd? M|_;fI?kM2tc_zk =i*RkwV!Fg 6ddd:"Qۭ-$Mz ~#ԮnG%ir?ڭef\Ϯ@UYFZ{jӫ# {EiN~vv%կy.nlVK-@hXF_%Go/#}jFƲtUnG H㎄IZԖ ]]ghЕyyl],K˦8]3MӝolEuY,ZBӀBdJ-Sj֥KMU v¸{ݺMLwƕ|L;dX bNW%*d^KUgenKQJV׺Wz'gJ)*=NqjJMmM-\n!RM駽){?[ZXu!dDG$Gls 8ybs[٨v}vZ|Sr;ە+{i[TuVeE4ָ̯tcE8*~xh[k{w.ZMB/['uetM=Лg&<s#2x}8E_aQi,WlOi?v`sꦡ6z)[o7YRofKt_+z=%nĶ3Dbw;ǔAU* gV[ݷ?g5k=۾doփnz]kvЧMmuS|9F'q\z}ڭyԓim$Qy[^Uy$ߴ좬E[6Ȱc̬GN?^mWg+̟Om쬁2YYI79;8eI}Z[˕[?5 [l吱H zaS~^RO?Œa^I]m}t̯_:Љ[aB!MGTԭ;2Ҍt*=vp-4wn% )Tq󓀹\'{kyt_jQ&ͮ;<}3JaI`K8 =0y91iki~ Go_&'V)ҳwzʥ箍"ūj.;``f3=OziO/"vH\KnTxSG TR_F s.X/u|4nך7siHXex ήR5>nFrYbA+/g=Tzh;jѲ'l4*Z$6考3/9;Ob8ޔT&ks4~ιe[Kk4drMur$g ʆs1OjV\|?XJU$[>ϪaؖfhS.cx8*@^wN+uԭgE~j{ݷ}Z+Ջ< mq4qFJe$aaޥBЏ3M/D*J-=m8JI;.1L,nwyGR*SQ?seNV&qOu('I ͮ3iE9$:g*ie%wiKEڻOkvl&[r|U1khr9A/gv 1T=M9fi{+Tj%\yĸvw w#=3Fwi~gmi8fvi{>Ob-}21 2"Z2 qUMT|ߝpr5վO4Em?W;ϵ ->[?go.Y쵔/Ue/Ful!${k.p3r0z'%y]fy՜TN,ek%k+;^{{X{.-kLj<,@L:cI*sŸeߧ=Ǭ/]#z_ϖ+rDR;y21W@#sa.UJ+wN]|jXFލEG^~Y+dyK)& R61/AG g95U|O5~yZ-7I'蔬mZݝ,=Ax6팒.wl'89R1`gPkwZR7R-I=ۻ\{t'-{M3N$:t(ԝ=4eJRkO+zoXEw-$ca$>^;:VĖֿ}~zXTZFr[[{KY9o#]4E"!Ds.<J7wK$zs>i6^HJ][plYi'vnAr;dftO/7gOQvޭd]I!_ Ez᧻KK#\MWP`mH䅙~6/ ;k8Ɠ)YM,_6ۖ^xmKmY[Uʭ.ѴzھOc=ŧ6Sk$hbG|M}&o"6ˬi@pI9 $KbSQ~Wv{cBsSizK[{ؖK-l#Y2 [f .N9B(jܭۙɤnӻ7od㶍_kѩ]{[I(Z.,u[m\NR}̮$4B#V\c!NYm&a?{ޚ+V'G?dK]?/MF}Q4 ( ( ( ( ( ( ( ( (U#J\R[_pܛ^E54I$6PUGB1ڮ}rb>&&fڄcj]4 eQ0߽LbJM&{"ܰ+Ǝ6(%dz>Ӹzy 7Uڌ@#,=>#:zSqjQѭ&FZ;7d6{}eq{<`V<FF(-?,M&[OIvXjek{qK"y<&Ԗ諻X;;hI#dMYP_2}OZo˷JI.U_]_m^is۬UX9$g$8VktUmw/tM*-/T} !H<}BUV^KMO$ %{uw[Ko ʲ1XdM RG!Րc*RQif=}ի}_rīh/`(q=8ⓔmᦋMmzgkq{he1mߓF ӄդJѣ BGCP\ֶȎYU#?k`i= e-S%0l'=3jIݽC^;ȇb]6Թ{PiF lKma!(SFD8ӕII%'{ 4{) mH?)ʭI;MɅ Tܻbeev ӓǽ/i+2E]+h"a9TTArךI\/cOZ;HXXN1*[lІ핮# jV> 4gR*+N)LQK*7@lr?AT]8EMRmD/glQ(AҩU1J%g$$E mP0 Ҕ-J)+$2Kh%XmY],}zr9%6"4s(UKP 2*[orRmo ݘc;Af<<܅xbt^4e RM4 3Vk3jON1c^y.۠89)&,h0r}#?>gܞHnXŶn^`\8Jna?*Rn—#ʹ^?TI$1HI0ur:)+Yhj̎+;h,V  #$*lR$xX&e`CGКPt{mҬ'baA/AҜ[Rl97(2Iu}{$Ѵ/o4+1Kmb20y∷tMW;ںNm ,t }&kw^?ԙ%$-SV>U:ӬƤF ߐizqץ89.k__ŏIbԣQm{D0 'T(GO&[~E! ADʢ71,ǎO&/c ( ( ( ( ( ( ( ( /9jE2Ygv)itP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@xg֩Q/oo2=:g8"5i\ݠa@P@P@P@P@P@P@P@P@P@PuHbafI#xlp8 dEK6̛MiZ^# klmۥܩLBO8!89SۚP|[k{rit׳t>jyw73Oz.k_goG|_}k_z 9IaC$AE6أFIn33Ap"09%J6$5IFڴj4e4oKvM WNm `TϡNbne\cis5m!]<0<<~x۩jcE)2:A*%f)$u!P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@PG?Y?E4K=c3υ4Y$-.\֠a@P@P@P@P@P@P@P@P@P@P/EBkw"HrQPHMKW;s?𶔾\41rpڋioWuI2CkvOgpj؋Kqihr$m@X9?w.Fܥ;%K~QISK5ז޻KWlҢDdH^X+xo*D di1IӦ\Եvk&۞ FO[NQqkm] *V}M{;XN3^Qm/vZjGuڪZ>ꗮ-{jm ytϳF$%1hPH=Cb$ԡ翕{faE1+v-ZoV u;&X#:eܔpİe1HT0)g=rNR=~WvCƍ5-WQ^Z?M;veYi<) J)]MVٮЫ}9w+YvM++&y6u{{4(md G&e>$}+y*Z,CNԴ~ww-mg}%/,ⶊ6$)eA즊畹߮5vxʏ$ZNknV ڍ?d{KVʾ;pvXp$&Vyߵ1R6i٭vvi;vpȳC+`J֩&ݗmy"FY݂&~//r{%w h2G1oCy&^.UW~}1hRȒ(bAPAQaӳ@ dGƒHV` p We-&ҵM̐%u,Xn`1*P@ hy" u$wv6m9cXGhkl8vvO7 ]5ݺ D#| 9{;yvg~}]OɻZV]ɩP@쨌UFI' 0M!"%$pYNCЃW(=Ȅ8E1Ԋ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (#lZ"Y?$M6YX`"\*J7 ( ( ( ( ( ( (fxA0}P ( (9ھb[ wD_+c>'ؿ3v3oKZuc FhMo~3Ƞ)mRXl i 2ngNM*+ޥnv^^Nt\ݯeݮtkl<s Ӵo^xI~tՐ! >6UEVw=W[rMj{VJ:|EO7W6Ռ_(A{ -f+X]p 㩬5 9=mo=߻ק:Mj{^ӭiZ?|sZjdžbMnV).㏗.38Ʃ$[])˷Rd[k_m52K]^xRuUZC9  H$ e_inI;ַ\Nm_--dmvSIR/5ַ[C'࿸KIZ|a;+ JTܽk?-l޾wzj۹tctXk7r]$$~j,_*|'#*F]XrK٥eΗ[mkn~Z2zKٷ[JޫmNVX${VXwN?vp>xNOi%❤ފZ4ΤSPW+mUMu84t"Q`VRYFN$Eu۝osZN2nVQԔF7ڢ9F0\QTᵒRmdkd·n͕q\}jR~okd8NNIl[o{RW[I+: 6|[ܼ # CaC3p*a&6Qӯ76{Z>Z jQIhwew_If-W1Iaxcy0YGX1doQT >^2W^w۪80qriI'Ws˥ëZ\Z6nڤ.p pk qw:j5u[_quu}SEN-WQcqo<3D$ڤ+[$FvN1kѵZڋu/dHG+gK[#2]e<\ƩWy$᤹aw}ԝx^3>z]Y5Wv4q5Ms{}=-˴oIʨ|$<;kޗd]QSRiz*?=]J$Bw7sjۦ)Y۹vXؑ8vMFV4⩻=k۶5')9IY>Yv]tշvmX.xh;O=Gǟn8ZQ=YR/ϻ4*AduJ]:.+&Ѡ.,^t^2&*tN[-vo.qa)aaUQ_+ikv'mu|;-Ʋ֣tm]D?/,c]u2V[];[pt=}]ޱk]V:Z 晦r\_\%z\ʱ嬁0vPKNk6{tխ(ݻ?wWEG=s;.I]u'uq.'mn+ۨ V;tЭmaa#y; pp1xR)^-WTpJTݜ_K{]OFMqK$2\;ƕR0 ( ( ( ( ( ( ( phViw8H`Zd;[@>h/@NN}^.Y_囘Mqg-\ьl6 3<'\u:V:.M:m6#_q tJVWoVv8EVwo]/O)m,m`(|8UJGn:_iZ{;WhcU( AQd]ד5_]w'6j5姦-iǨ>ǝ&9J 篮=t}W^va$:u({!|A\2pUH=*'ɵI)+K_>Cu uݰ{x19>cʕzֿoBŕv6[F0B{RrwnQQVHs5:]wH%T@dI&oůO.ŔERX\@FF G;}hJ+DKe$n6}u kn8ne͒hUw|2N>iYW{K]/}-Z+~ZzY\ 6$ Z&%IpHⳕ8ݫ^i5gˡ_Cg}\BA WD‘Hrn|ߨ(T&D Ar @'+/h-6+_hZNpvP[ $hZ4Yy-4^Z/.+f4%.8S>fҒRN/T8mkKiԬȦ3_ښ-jPvV[[^O!"{m(e@M 83ҋcF۵ ͱL?bD$RvOII^ޝ^M?h2_篮usՕܰi%e,U=(z$K|YZ[AkmvCarrpM7''v\l@nϥKIOY}”TuozjW܎K-,-.m𫘛TtwC k_6X61BHF]FpjeWOuY%i.eԴI!t^Q0@ !TzxҭɶLaF*mMH ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( :j?ER%Im ( ( ( ( ( ( (9}5"'zkKsaZGkt {?u*i7q]m}}(oJk;U3Nr ( ( h33D$S*f@yG;;\|׶(" w'(gWp vzp= +!JJ*vؖ€ dGq sA"K`zGQCVM6} cMΐ&u, d ?QE'8!y#5,퀠u$M퉵 43q;wo}┣I$"M$I"4]W=2;giz;}?z-uP@19cEBB)` dwz-&ҵ|v&>€ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (<7IQ-i=K .E-"΂ ( ( ( ( ( ( (?bpZqnfCo _cwހ N׸ˑ!ͱ I 0:b6i x>(B5e{$)+~@J3@AKɤO. ̡UH_p hƙA=jrmS!8m˃` ۶YI%zT\;>c+kVj@,K!D߿sҀ,hZ .K172Np9Q8CHHI&r3$xH tP@|FxgKӿ"[)<4<#}^ӯ5j3Dk~~C<EyMh3Og[M8`s?D>`ZriQ^,pz^Gehsx;.sv]gA{m굟ݞSJkW+ߢW.g-zŋ]4jz@xl bVY#F fGu?O7iG؊JxX$֎ϥo;uYus;ҥݴջ" Zp*<*6\/w;{IխetF8~mRNku[ں[|x]κV#Ve1krEkR }zj_;CnmzKXNtqdVӿݧEJC_j1iRhAse$Jwbp}< ՕYМ7mOUjj-5ٸ~Vm nn>)rkZ\M-;LẂ'.b;&{W_ jǣK[fӕu4IvWm=+U.l5 >dfM5o\uv3 >NݘsJ#zSJ8xj'+u}Yw >9A#bJ"o;_֏6,mSTws==O_k"3tfHGT (9Ba;_M=7 }Y[Gݻ髾z٥I6wsޤsM"y{H-A0Λ-+MݮaUѭ{M-toK[N[f]Z>o{:b]ܻ=OLkgF*VJ]^(K {kggݗnWPKmv%Ֆ !Wx$>SrqI~Z -I)C[h}+͊ o{V; J ;vkPAnp EU^0j֫ONifw8YՌxKI+iuW+t/ڗԀÝ;Nry9ɮYi?a弒gf+'fS}o_.NӢw" d>}99/:}q/MNXRĪ6҆~*}޷kWڞ-4_&yyRKI%rA1[QemY7kݲRgzY=~W}r{$[iެP&6'$,pxCqݯm-JIߡSoJ_EwR~f\,%ܗR0!F} Dr(>}ME_oG)rZpߊ'ޔml/d׼kGftݾKi<r JVeiǒ]PG¯FvL1O$i'G}=V0X­ovW]Y{Y_6J ·z[Mw]D=!fEl ڹ=M*Y";weRv (M\Ѳw~ΥKNڻmFki#$H۠ Vnݵu鄜ۻug~I$VVzY ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (<3W?ER!zׂv&cj3RRwW6hP@P@P@P@P@P@P@Zu-H葵lT#F#T-ipmުҴjq *H=(o4$G=\'vRm 8#R9$fb6U|A۴ P:v[Vo*;<#XqhS*)XIVFڎX E v4f%SP8P`%7P!eU.dҳ+#!)wxNP!hDVıo)\:d|Pkm|.3GmlD+Q}3ՠ ( t#@[.|vqԒJ뿘Tmmr=/Htt>d;[@>h/@NN}^my~Woٜ3EݬW3Ext6 J]F :=BQ.RdDcEYz^MootVڬcnr99ǭ[mozh}ux'|tKl'֦1QeC{kgꬾdvGY$yF(XF>SsɪM)-ҷ.~nZԽH34-"wU~a{tdrKm#דS1QKO/Aӓ_k=TP0T܈0U(i&,m6q[a< io%!);W{{:FFli 1@X7\zT{8{?eovַKmkmb75߅/t6O@( @$qҶSwW{[w_Ÿ,&n.he7Q[iqGup*|R^i]6԰,EE/f1oLct'ͫ*>Aإۥ$BDZ00`c)ݾ5k䄒R[uȮm. ۽6{|y3ǃinU*D\(Hg%E* #zM\#'f[xVUaH嫅 }8Q˫׷wqYy-4]_rWҴ;K H.ng(UZS,@u=}i8\)ZV[iL-[¢mӎ8U&77VO"y#dKimz1Cn-$,U(,Ė,Vq !MP8m ̽ŋ`:{;gCTqz hyR9&"PCЊ,K*i5,lIRHM&ݗM)"kT^.UW~}1 M: --@8'M&AGz{ 41]L\BUpIvx>'ӿA)Ż'MAA@ hMȒ&⻑>? :'_O愚{a@Pyl2=*ʬ ƒO֔ZuկWk~ZKS}ee砫wl=14Ï;z;`UYWi_59߭}R(( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (>%?Hgv)jK: ( ( ( ( ( ( (<㯃4hE,n& \qZ晧A%hAfXm%c ?^:?WOK4Hy7'9j|$xo7<;el[ L |73x%}ඌpRNwt~ǿ潨k³"_DZ($Q -4^Z4R$1}kʡ9*C( żeO{.+\wp= Zk][.t˙}p~fn/-w kaݪXۼVw.}ZOOiNo*On]ZYc58%5vz4M;n //5xV'mI.7HBqUG;.mm5;R1OxEpvO[-r(}KOgk5$u UǦri'Զkev֚Fo+Z{Woim/vϕGim疒jGiK4m]|syWʧ~ޗmf{hꓵwvkKgƖPH!#s"1/, P ]|Le?"Om}[6z뒊%߮ [ڦ \ Jp-$(fFx#*hiVmk4(=~䭵]E-,Z[4(ͷeSEmE;Ak[YV~MKFU2iݵ/w|[}stopH~"tCu7o5Q=ٜyFHė HPPdd54jI+ku\z]4$MTnN޽{vmtK-厙ߪfC\Br8em$x峕:d{ߚ:[eg˛{r[+]U}1ע]*Q-oocIY!drXXU梚J=Tԗ7n]j*Fr[F/R:맻Q隶u.5Ip<[9s&u*y^٭U9kLboё.gn:,2I)n6,ĐJ/$֓K}u.EV)ԥ'YO54wZLZԠyfeBbx8\r㜡 Ў4tIkznZ4$ֲRdޝ5IkVfmsk"jQKrqsw;J"%ejā{n6ʭZpݯ YYY%с=54U8&mixV9u% ?ڏwмr9QsjN-;?WoTuZ늓rJzEꞍ.[wK:B ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ߉_:?ER!zÿ']Z΂ ( ( ( ( ( ( (C⮁{"ܱCM2u>l灻4Eu3Gmf;;ddK@e u"0FEr~Ww?,E̒t3.ރ'=gx\ճeV:*I2;vE7Ok-LGkxo4¸oLjO 5t@oO^mSOω]SI\KyjcU3(χm|xZGĺ/gh qw2PbrN7haGokh:*  (vmZ[1qI8T  v%ug֩=cς<=<.n펙15%%ecnP@P@P@P@P@P@P@P@P@P@`xz3jvX832@ 䎞sZݟ+=[M2[܂E˂Az# :ށ+ZqE40FtH]WˋCqV.u#m)Y[9xFJpm_fڞXn~"ޖQm0Ԩ tW=FKK;o;y_m+ 'SwPMky{] h GԚbiUnӷێ>lKM_Dފ˩U{_Qqr޷]5rRh>>{kDR ,Fmx,3ny6=[z޺]dV{~Ks{YY[k+}N=Q5o<+)ppW{{ocin֝.<Ȭ>d\'?2XC%md$6Ln8;[=%wwUocJR[:_Sյ O^iSɆՀ;;}k蒲azַΪ 5yLC)EEf'k}tMǤͫi:;VZ`f{+U$1M NT qӎ5RqMEׯ}9bTj8El)羚m5T׵W"8<յB]COqA<sI]v*6~Q} ]Xd\H;6THGoR{2^eZΗ,%+IoGmm+/.uXi/i$OsJTm$]ms 7+_{/ѝr4Mn֚nM{Vh 6zu!S=7$9F4cYNOK4+%׶[^NZM'S{}mkj^*X$O>CnRD. LHbd\b%RT.R[Z+KUjVuz-Tmiyw HHFKd9PdmG:UݿMz[Oy=vߺiY9ex7N8ӥ[v̲Kii+D;`'n y!fNqR$+]jѽT4UJVzwػj^*f"e?-6)]݀>\梓6ܹR]דwwXf"oG~vKgV^:خetax1X}R˵m=w8FSSqVߥjҭejSW()?;YZ틮ksr |}F79HQrGn\~mm1y3k݊rP4ln52#G43en { FOGNg% iU{q:/W$׺_|nuZͤ2+<$L ^ARޫ)-nsn\-gm`Z}O 0}HQG>\;f$#Vswkz/:46Kߚ{$m+Zjhna)BApw!Xp0u}Ϻ~{InӒ:;ǖ_OYo}R}ŷzffKn M&p]<ϴ``dn$sJ#5̯\}ۦFrwvm;{;=kt֯oM.RI|눌C|K i7u^]]ڴy7={+55kM=7Qp]i`A-|k)WeVRa?{.+l)B7mFYv2lMFvA8 f/S*a6]GïWOf{VIIsIo{\_ڭI :4YI 9!k85\r6bHۯZkԔyz+95$Jsft[zQu==F;euqčqgtcU]M>֩.[|ݴׯIKNIۑ&_]Ħ_k[),Y'Kigg- ,K+U8Ky_}8%sm-4wN[^1E≧&IgY*+DqҦQݩ{u.gm+*vnJ[7Z-Vк0%ډ9g"Fn339Sa35\?UI*3YWo;hճ$xSŕ܁9 ,vsh`_p igN]䕯N$EδT~qgWF}KLn9eHFH:}oɣHMRv==/kLQv%7Z}gm+-*;6`o=΃r2ծd[-RMgmm𽝝ޒvѯ1U< dOJs~ׄJq}jE} Cykb e24aFnl9 d]HǽE㵺osKky~.omj53^+nQQD '@ı 34e;]ꖋ6>UVjץwnɵwS]r_^6o1|2i7%%HuMz 6&e_)d[i`0RF еXQP^IǙ~zIԿ2i߯+,ӷ{to~5YE 86<808=f񤥷oں&I'KzgSW-)-,Ut{| d,C GF298QNGɾ _m6&V]-]6O犯u]BŌ=Tɹa`Zwێ6v{9A|j=JpvVIIsMkn]&1Hʬ'i#'FNM'gM(ʿ&^կlm'X$h1ڥH goQ2⦶mq+kے5ӌ~(Ғ[ZFߺdYxV Xtm n ^~]yujuk螽K~ѻ{[Kysmeq80lO-~f=NfݑIEug /V>}i^Ca=L̲>dnⵧdW77|;X(δ)k8_էZӺ=*-IlImh³H#tQҰMʜ~(I9[jbKr[Ӝr(~m4V4O]Z(Z3oEw˓島As'}lT7?VV WXX kH.ʾf[nqc= 0RR"ZQ**M|k*ud岅7U=6kID\KHlF,Rbe{r6N3j<^dkEvO+rz=~i[r[j4sHuD@b#;IaO'Z59tRow]MgMmr-|([kq5tGWLԚX w(]`@=+J)J[5^zms~Qt[Of{7ymRM--&aso}m Ȕk`pR} 8KJ+8_VOKhޚz; ͽrO*hW+3~P"'.rKNN*f&}m-/vw+Mu? Ԗ `ؙ2GC;[i t8 F)}K>)FPon?<9WW׾zEp-^Jq-~םe7QKz[a{7\=q\X}QH B9r3׷N޷m~N)mo}ogG=^${k;6?k2!#ݣs xjN[?,wm,^YvKDtGn|CejZ}Hf`$Ҥ<` KߌV~-ԪTךzz/ur!$E~-N#0b8n&F^Z%N߬N͕U$i: }7¢Rc{ KuƗ7;qJ5N7>^%+k^&mR0Qu8+/rҺ륭M{[V;6dj~-5Z].මᤚTxe O`>ji[i}Km~M-ToXWk}t+xV Xtm n (%K$:,n'?ɶb$vlۻ9 iJ)uMwKY}VVi'w_MOPdo'GS%~_yn-OWjֱR~WIi~9GQoQ۾Ǐĺ]g<7\QZyb2c,C6zs)8ԕ%:q׶^i^50.)5}%?Kb;襩,( ( ( ( ( ( ( ( ( ( ( i%kլ F<@4%ZQJ8PpվzMFβm |d{tЄh4ඟ2w'^0q~jk}-o<jj 5Smun#8P?^97MG=h4r_5oQ-4mFo+˫{^L$-VrM[{~ 1ҍ((o 2Q%p 9I Cz d X|zzoi+MI26s cTϷh}(gfcv8ߚqVZ ImotZޖz|=ңGwW u-0v'$cN1*M>my_wԎDu=EߪIӥ<~ҌW^_.o&PJmV"}y⮼V.)IFzYYmhov6Wo_|?mVV.5+f͝b `I=:sgR*ps'V/CU}hvkvh*6,1G|{V\U*hmdRPP|EWv ̆GU#@ A沧ES^o٫[G}IQ/Q-~e52Z_è^EIq9EuNpUUbrsԜ i(i߭Ӻzf[o۽55g^vDN,/'x%)WUQ;䖴M._-^ +osoGq'#@OݯiMsFk~M5Y渊I8&9te#!pA#%>g+EGn=u_sm?[]|:#5(.%IGO0vAUJ<mO˦F}]I[uے-8ЭٸOp| TS.*h-uMzhe -_5n^_yRmOhD3i%@~RnISO1juwOK5'З3j^,퐼GU_i<#ZNR )ŷIWt*(+NIz~w!>[[eEQI!T"*NqIƒ|R\ZnmקєQ}-ﲽMhk}xnbHSy !N%qd7^vVq{=$}֒:>;kmtö2h(%)Y-ⅶT]; v UITu%zJ]pjWJ޺kMi߇$W7V2]}."+)<JTtM|'& &KN~i+h"eP"7 r/JT q0TtIɯﻲn(6y'uiialm-V&-, 9N^K- Zm{owvx~O-JXt7ۻ dـ˖a'.2iw޿擜w;[Ytvڻ9yg |yczǹtJ%I9{]^>L1 2X^8G\NU5/iIR{*|/{ᠷ2NOvbT#tR"*p 9f/_otoYgE[O=WKtZec4Im89"ې@*GV`x -n|神\vVS udzf_%eݻ~bXAktV^JַݧT]mߖ[J_M&SߟNx!qE(2_'g]*qNKgu׿{`maN^b7qH@Cq7ASN*(ZI~PRKI3='L!eE @d5vwվ~=]JlI%.j̓.9ϖ@%۸#`8~n6F#AQ{}F)]d@22IRPvsӢ筶nN Õik$fi`ԵiLaWArۉ3v$cQʒ쬼-m-fNPMiݺ[ZW{tU$A#HGO>S%y}c{|I´UX˫J"ñf2 k$;S3|pO֗$yZm.keMwyӵ7e贍ҴfӟB( Ь+ g.X$O[k~ќi<:Et[v]/o+ՙ&;ʳ@a͕0z'*o[tyゼ^^ɗ‘\]NYy%xpC p@9|oϖޛy^Gmiz u*hX6A x}R894iҋqHzr(XjK{}w4) rSVfTU;I+ۯZuݻMw-ײI-΃kq%0RYۧ<J rUhFmQ_:=,Wt,j  8%vgk~Zז&V{Y/}^" _ [A2M%^:|pW z`qM٤{crn./KWd~mfQeZȺ$p Rp73cě-ڳN7toNWpvK蕣`xZ)e]CRo[73(1usmJ0׭M{+ӭf[,+ !©%w#sr~Z.Wi쭚m}u׭N.+߿aeyDafYl}i7R5:)|M|t SR齚ެIgeѳM b0DN=i.o6rm%ؠ4%MDA_AlYDȱSԧM8+СMUl峯<3m_DVJ7V-E-h6D1̺\^\;|fϛxeV.vU{]>EpjGFmm)w##oomlSd7cmՕ`r@=@!YG[[%ekYZm8&~z-7VWR]]\Z,bI1*X\ c_MWyl[{ok KPK6t-0['nrF18Teeoh{ik4A7uvnk]z++gZ32F*s{N?&8U +(R^=CEܷi9yn.MYtKd%E n5_7ަK^O_hvj"Iw' ibx';y.W}N'tԣUrK%${I-97,00 bm\(EE-6V^JwAJ_]Kz%+>XĖzmn]ޝJO B{{Ɔ61I,CVRKA-7K+v[]_VZhvS+Vrwo[$V.ͣIK xkoʅv9s\ӒVQTU#]ﯫ߹^Oڽndf_ݬ/py}O4iRR=>OйX.d4,$oFV nu_iQU&k If{Y$,ж8 @q];Sim)?۳I,^2nRmm|'$hkvޣ5;[KV!YD k $V-.HInd-g]{+&I)ZRWn7ۥܳ [u 1h\''fqME&nfSv. w6_26b#*T; #gB?f ?$MB8%kN^NڻzhM/ VZ:1Gg*E">4(f۹O2O|*n6Vֳ$jE7ۦ1i &#> 8€RIۗw}zB_޵V%Om\o[0>*%O?E]GS5}q^O [K[K;Jŝ~e*T9]Nֿ7K^ͧ)6[}~_,Cueu%Ŭr$<¥q 1]~BmON+gޯ[Hd2 *R|=Jo||<-mmս^UK (%'.\ښ2髽o.ko-#gi>ӥ܋H^gdQ6ϐmPNe7Rm+(ٷ'dC-5=B-( kKvmI-c^ImB죞/z 讵WծvvЂw=I^7[M٧Yzkq}CTYb cثANE.Mw-omRa sY7%U/v]Ti;[-f}zh-5Us7dS~wdn͙dsF+$vIBM8$aUZrov[>Ow|*Un#_ D}i)_n^ze!M?@Z.m68` VPC/P\k ={-6Ҽ&MyYDb@b"!YMέQQyN1wMT\Uw{$_jƙg:Xt{",2'8M+?cBd$i{[Tc3R:?ɤ+o{Z2^E5TWc"y^2ŤʟO Ƣ2v)E|ןӻG>rTI\ j_VX/䶆5bX[X%$@~^\tUF6Q⯳O]t]SS~MNUk/zΩWVt&7Eqom-"̀e i'8e֍dmegYSӤnZ_wx嬕i ^ |Fe>bDX#'ޡ3ʧ7&fhQ뤿k*-sU[}ѽWW~:9Tb6d=@`R7{ٯ&^:E+=ti7!7>\&P&2ISaSqtohx?Yi1/rvvɭk700iMqϸӒeʗ $cgoӗEw lҌwu}oGm7`{{ͮb 1J@Ha-}t~֔\ZM^{l+PՒ'JҡYJZ?1R#@nܜ|\ge/ǖ?+**X*SJޮ_ukkjM7z5EmFX_lDz$n&{4˕V߆N%N~gmz;7uelލZq]kCYK{I=y-O$Bp&շ t+N^i=캩-5vm_m7Zl֗.K$sjEkuut05eF A w]ŶȩN75Ko]_[N~)&MyWMkz]W!yn$6[`6ʑ$ ]ƭ骽VZ_WSHۻu&-VvNuWQҢkϳF_i[FJHa'tsυ)٥Ms}՗ݶJ檯 F;yݿ-юf.eijIOgʠfsOu8H%zuE^W省Vx ƗcuusM%M ))$jrU g3[ԶP}kZ|R0'au=SQi躁d#yH\`<0~a s3杕}_j욧'{NqofW].K$u CHtMM&q0oS/ brM(KF{YU,>zlۺwI5Mrxd[ĪaDRK'bAm*MxJ]$YN*KE&ߕt{ծC-CLiue vz !x-Ȁȹ;扯vsEvjkZYZer_=Z[y՚Z7+xY_E.1(m2 ے$kjMTe̾ͽ|f/亷K$Ǩ[,3v!6Ih⤶l n:߳v{jַP߾tǜ/&.1^8kgffj˲n3+i6.˺WR˱,0,r6˗){f[t|λjod5 {=o맘V|4i;ywPx]/zm?55O'+Gom(=_ٖtp-qYB"6x0s1m^I~7UԹy>ocj:^`O-Z3*&Fza(?iW%)%56];rS.](Zh뚔Nkq4-x&W.Xʫ)/J/%>]5I];[^r^Kvdݕ_EvEƱ{|4՞ c4!0NzV*ҜN*lmֵu$uwmmv[WuGׯ5cVm4* %jqR]ytڬ)ͦmlWe_.wjVktk8 A&8Av󞣊MFuZURQY`+ε9]8I7{~V/n?)?ѢhE_ʸqS(TwQ%6s7έW:si%եS,z`ɳV9#+Ӎ,T4NU纖GF.UBVmzhY-wb]CVu}EMVhEcad3W :ײzkѵ59mV4M^@ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (¾%?KbxWV#{RRVV7hP@P@P@P@P@P@P@P@P@P@P@b>udYliFyaW D=ƚmww8TVӯ׾ӲɴI ܗģ{|&ͧӁ慤TVor QM?H, nb&&%fl@%G'}mo<Ȏ2L`,Haps+J%RNRzN*+|^iȇtGr |׻ op  iQI;=R[KRŮcj(TI]ܹRiO\_ojOi6n﫼(^;zz" *L$HşF NJ8^NM߂_rw6hvDB]8pHK[ɭ]MdB* ޭޯRuDx|Gp;SrYZvr;|%}zgM$\Iz鶻魵Ѷ՛d*pM4V]e{oe -w${fr6em#&? ^QIɯ[mzI_d[Ҵ].'L|<39w%׊o,Rry-ݖm^Ma V(i!KX1bbVf$ \rsË-ջ~|);-kmohuoۙLc;#'b1ew6Os0#ʻ[ZmEf#Γgzv&F- `)b* \g(Ǖmk|rv_7{5mU15̲EIew 8VvW] :[i H&jdq*gy?W=nd_EmsNmQIFw;գetڸI#\3vnkkktUR9bj{Zo{YV5YKJny",FO^'}wުsZ5}֪[5}}.hd؃^Nإx㪐:ɧ+ɽyu;[Kmm["ՖkdbLpgq?"gh}+߬I7$gJ:IF E/+\=.F>I pSxԭ/ݯФR[vEy- Wa0.eT5"E8<jI:z{m}EFc_do/x\*%ĉdj$㏘Ldt{ZԊ.ooM^jJ8V9%u.ZF ۜ' 81ORi}l%P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@,m?Hgv)jK: ( ( ( ( ( ( ( ( ( ( ( 'x)%ʈñƒiqs.n[dP@gl)-(L#ʠCyN]%vW_x{KDvPK!f ;;[NCiӳ} ]W^kE^[H[;Qic<ysI%v_̒x-fh%PWSЂ8")% ( x`kyRXdP$lXP YN5%29HFxl Cp}?B(j>Z9n,ỷ4 /FF2:f%)r_f ((Z%TFF.'c@[F/$K4Q]vjEP$84DVfsp=N?@iݿ~iZGf'em` 8>o4WG5,2(d2=#N< (J,sȲE"GC=TdУ%$z[[.n!S8\"ssddȥ2I+L0AލM5uإP'W ISpGIv_R/ZWa|+g3nc9Uf;?'!,h񣺫Hp8ݼމri7AA@P@FcmTC)>ߚMJb{V@ʥ [z޵ Qn.fR]);m/軽 $Ѭ"40z~aoC4Sh$I3!(HapAQam( bLeE nPsG`p#B]wGo >XMd p2NqIﲿݫK$*<0YX@#E0jo? ( ( (Te dʚM|mv9q?J9]`eR q?#BMd|0 DJ#;iԖP@$Hʈf8w$Id&Wdv0]d)}2*Npv0ܖ4,HVR Ǡ&ҋosXexcHPrA\[I& ($I8 X9adE !{EŸYFJI4&$X.+RwGosOmc錎YⅢYeDi[dap=N84o;~m/RJ( ( ( (%/g֩lCOO3`o%P@P@P@P@P@P@P@P@P@P@|FxgKӿ"[)<4<#}^ӯ5j3Dk~~C<Ey5yK{{ac#ۮde̻$=)#5+wZo+l빎.?hߤZigVNɽ}B kZ~Xɦ*#bϙ\q8㡬TzҍQ'>-#WVߺN}^gsΗ-FQ'_QHb|o)i,W@(TO[T}ϺfN*mJ0vi[W}Uoat[h'c! @;F=sXV\wY{M/uug::z&~#εxv6[q*U$D+A+uʚ;u}zdQZӣw]-h|eK6V8ԖA,Vyd};ˑ~6V˻rzWiFhs WP+ _?Ni~>kGh|AI HY Jt#7rByx-uy$MIZK˫r/s-l cKu']T^ߣ:%mjմ)K[oU&I] R:^@@P>7rNMuBSnTŷmk$KoE*ЩQݗo5z[kdص;$[á/4*q *znʪZR}J6I|6V&ݵVƖ3h7V~QJ.uq2x_G.ͪrIn*'7Tڽ\ݽfrfNAr[t>-շy.n,VK-@,#T "x.]e歶{ɫllעm۾hGvhuy!s{)m$eUbǹ ⹲~^ѮjIw~VKVյۙ(٨KLp)}z+PƏ!C.w>yEv7m/.ֳkJt.Ikd͵uRnov˖%jZrk1Zŋ*!g v\:~1ouoUk;$*ΛN;FPKW=u޻;Wm͐X-n!D+br7,~fc=qeTZQ֝w}DAintk{[˖gS#vT298kNFi%9;yvLƥIB)o$县ͥfquVdKY$m ;d$ٸJI]IH~~H)Ex7׿į{]rѶwKmjH(06 }܂<pisKk>ݷt cnfl7WW/co-I$ږ(I/1'8Jn\[svkwnNK?Hw-?IidL먱^Ho,dINqUk?9$ %gMIJG|?;&_b[;BA&TfY7ʎe$,! !cPFJ[.IJn2Wq׽-eͽmwqW+{m6f:~\]jA: Ȭ-ݩp}kH>jNOFJ0-1~ǧ"-ik&S>fm˸xqF2F*zWg4y8 ,E,ZZ8_ou! '/AD+J}ߕӶ[NavDYlGImb/Ti$U~suwmk߷O??KuyZjzk7颷Ciq|tڮY;./ {s׌0)Wq(YZnI9'NUsR]+ʒzu'/ ֑Au?G$ .$ $% ۖn2oWS5RԟI/q;/]^.Z#;AKa}sZҵkƵ7nVpڼϼm-FJRl9-g(UjutߵJ+N^s}'׷5ov~d=ג_^=n[`Zq9<ӕHƔ-f-%H~I%K$mv_A_sEiC3m ܮ13 l Rob-5wNTM)$&n>'@ZV#;'Il4ZƖ.3m8A0c3ֲdnNQj^SHʬZtwo޿/XBY^V侺Rh n0ak)߼# vSӧ=,uK/|#Y^_?y>P; S7r$[zcpO,uOMu-%싦k;whVA)BJr3u/I3>ZU$J?\1`?%r2/*FRq'g9TF;}ߡçH~y=z^K*~L˅+ qUW{jU}5HZ;鶗/Kh]wm-ėWVBx!Yl al#.NLH0ږ][m4[WhНh]]۾Miix]r.,ɲlbĨG<k w/z{߮[ڟeMiEdԢ[j;븭c6,W?;n$ră=[-{im&\krK^E]ӮXK岇Xfs" FrɼrI=ew>KN7]ڻZT[kŻwJ{+$Nj7Uԯ|.i 0sБXaxzR'Zs 'c{y5+Vk[svg 4aE!Ò6n+E-{]4fҊӗdIn}]Akѯl$ln)<J@+7o[$Ѧܟh+$KhyvZF]ݖRm3To; :VX# V`Fl^Tgȭ$:yeeѲiwuy^CMƜֲMu-yՔZ2]#h4^h.o7>|G>qw>ҲTI)Zۧm-}Ϊ ˚.NOy'tM|^o;y.euR$Ó}5V 3J0v_{QE|[.$ k+]=ԯgGR_k=ӱυ~۠$ua NKGVw8J>wSt΢ZE}9wz+]+U[h亳U VkddEWUaAA`IӍ;Ҝ뮺+dQ絾mVߋ4_ h^ʎX0Hx r}=)/]Ψ{%>yi; 7]rD:3}1r*ON -ZX\gW~jw}o绻F5}jխΘ$RϬn(#(wKH8ajy5)YniꬪI7*r$/U~k'unSYФ,ـJc#p~/sr>]zjf+Kd-72˱78 ̙ݴn +)Z׽V*S[UVKYdhJᕶ]B1ی>=:VdtԭNM_qQ8wB,-d%P9RBxX9_sЫ)ouUk/m۾ =%`WGYbF3n1QWm"<Ӭ迅%m^5}.k[{IiTbdĄ~"Qf]4~ѵo[Zf Sm$rXg>e% |_ԬL%B7/g-]ޱZ;++*W-n,%V\8UvH:ӂ6i]ԩ*uTuiŶTR]9Mݮ'gTGmx2sqwkfz}]nURz%mͻ=ww.rB@{dqi;Ul;_-9Џ!'NG$÷ZT`{me$j%sIJy6|v84IkvɾJpR}wzkd[ifh5̪coGWp9kk(wJ:?'oSI ( ( ( _;j?EZ؇D:Fl ``T? 5((( ( ( ( ( ( ( ( ( ( ((\]֣uM< V0r0d`hێ-=$&,&9dK ´JDq>Rwoi'%VzjGsWW3\3\M,[4$d.HZY[ ~yooelhchT@M 8 " ?Htٮ&Ӵ;Ifx Ti',@SEB*tuwXu i!Vt`dʜd՟cvKϿ44.ѧY?p \y?ϧghiޢZ4M4+-y+D3N0-Z5 v^eŸREoH"Hm p;I{_rЯq:plmf -Z0H>2JNV$;h൷;a#D1(w8-4}˱ RI-z# oҦ|slsNl\}?篩mHYZIJF8HE*@trG=$K\澷_]I-m g6a‚B``*mN1*6X4).$K;fMhl;';O#ێw~z[Цik^ޏ^^ywYyy`VuSb2'sCi*O'uܗ>ɖ/[R"<@0zU]ݾ鯮_$D!vVI[[/EweE&IǨɧYڗMT`GSҳ{IȚkkX%&X2ɞ4"-w篮nKFi頖}[ JPǩrmݲcZ* =}GkÇJ`1 Q-˥}[ZuaY[O&0hApA'qI_S-V_-I2Fmiq7kZ|e`fmPJ68$g+Gw~5 ZP` QJ C.mk}VEqi[ًvJrяLJq|˽zɵ}*pįHK=LNϝkw^?$M[zjfk[}fFO)w9OII^ښmj?i拉q܉Eť` @# #ۭmZ;=w!.4챦 7}<^zuna:wٖ>C 199)KVדw_{r\"(IoKL-esk|WM[c$sדIh%}w"зKȐ6єS{xTbB惣$ {X\$K-8W#N)CvZ-[`N.6Ѷߛ{rn RTFN-4JEҭ-e U~V.KDYGhYo?ͷ܀ޣ<SK^_$|玏]6+he[ipڼ~S ɒve6ܕ_K..eYheӬQ 0* pA 1s)6Ӿy^t_W0Cuo-QRHPx E.dM [feA(P?(rn\{U hݽ5zm֏]_]isA*H#k'"]R\b.r}E)ߛ^ۭom=4r( Oד}"U̎+Khyⷅ&" SުUg(TΒ~[Aw@rD 'x;zjW$(Õ 69#Mݬ7)[T[_ʹQw04y0Bff%t6K;YR%X@B}=)m7{ ~S\em4BF7ߺ4m뵲>9?BVӕ^Ԏ]Z\C,mgtrIKύgRpvR] :mItot08(Xv2,`NO曫6rcFW,b:h"d=AAҒ4W$yymEoQPƉ*O=n)MbJ"Eim^Kv7NJm+Gz'E%d_R8la;D'''5R9EFMT))E뾾v$H 9$9vD#)TRwHӄ[I6E>aq+K=WxWEXFM/R%'yE7[ $kUʐKc'T zQȹczpRwI4mFmBN`D1#:QuYlT' h%w#0Idpq֓I[acc cU}8ҪRrwltm|~\Miv\@NXS֦PU7K;QOҰ[|hdޣ#Mi%5)%(:r/u`AyQΡ̣${}iI)EWg7xPj1m5,V@JPcTշWU{߮]5-4khM;뷖Mе;3[B$9ROR7r7 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( G+O购#s?ReP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@?|SlxTE%Z؇?gv)j : ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (>|#lRU-g`֒F0m"# X!CJ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (ϊT_)*ij?RtP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@|Ly/kbY?gv)j : ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (>}?Js>G/ [V K,ޠ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (ߊ>j/kbxRDт˪]%$廹-2:G7izMRI(䭭Y] OKOGH[:u(̂ʹJ$Xri%}אa9eU2U],Z.zs3-By\DEPO/ʩ<7u9pkދ?\Y4/h@xBA s-WnWUT]=v~G>gkŶY3zVv)çvxW9qJSo;#ŚFI&qwl֓%GnYD#f ٷת{|?׾|5慩^O}vioDoхu[{m <- bm+ekvHJ2Y.{NYZ>3Ҥ $[s\9eBa`o 8xʓXZ;vWM7j_2Ïjg8Il涷BW,RI@VQʳ9t(CRU4k[mv}v{Mt躕VRXai, qJJ-ߺCw;mvצ?<-k> Σ4S5Oe8xT۳,.WQ̹6o+-ܹ~"կ"k ʽ,y>w@AG##wKڭo;շtz82+~lڕ_6 `|HaϡpGjIlףʹj ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( T/kb;襨,( ( ( ( ( ( GUТ𞛬m~y.dBM. #pu;~-<-wy(-ǡx_EέM6"`"oeq{kx?RRQDHn4COfMēC8l/ɝcnX:R ZM)]Jli2s*cesNv4z鯻d|jzͬ֟5m8Q idˌn|§1* Vxm릗OxNQvZZ],qS̶VVROǜ 2!N]IW^[VҪU_K]ޗuGWNxkMW:ŭ܂m4ìGnSk`\D!7Z#/v-k~f:*եPI++ur~uE 6xJL7vdyQǰ/8QF ]{NnrZ>'* t$7=>*Y+/KtVCt(@^FcR{(:-ۙs'[km͘j4UM^2z%Wds,-h2ġw17'=I4ZEY-.y-4uջ$-I,( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (=|/kb|;襨,( ( ( ( ( ( ( ( ( ҭ%_ os+Y2tgg8pI Pr}կݵH;I;=lۗۦXP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@?RS_-*=`w$? KPYP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@"-LL֭lK=2<1w}6ݙҕ5R0 ( ( ( ( ( zXo)L^i d@XFzҾo컾]{&Gmi0 E0Q B(FQS1FI?Zo2tR 8RHáSBN>[=A;կOghGmx sӱ)&IY?K:dM ( +/by-z,8# U>HCj9bK4̋\gehy׷ͦ$jTR`mҰWQ$genm֫FfFZ?W," rpu*@>Qqm>C (.(t#`UX~Oi\E_dԉ d2ɽ΅O8r8}mQ'q (LC͂'[c J4RMϗw,7FN4𴟬m/ԹTjB ^[H~Ŵ^@nÌpx<xӔvW{ O\i,.࿱2xHnR2#Eٔ՛O' + 7ĄH6R̠t’C؜I46R4'v^龅eP@G}ɋ0~e]zq::m5nͦ$ BײZ+8VL9gkTͿ ީgiϴM쐉I؇vxݚ.UL1XGew2IVndasy$܊IFF&I]K˨lܾˤ`*=KVnq7J#ʊknB#sdg#4H( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (ߎW|R;QGW V>w$? KP3 ( ( ( ( ( (|Sq}]Cicsg0;]BX yq"f;{N$+~^J]7{e_:tDB># DZ757Cq|Ыg{(_!mKO/_<;ϗ7q\x>Oѷ)۽mwz_^Sҷ}M/ӽDkw7;qZyp]^ + $pUoݭk){:Vz}Ѷ)F'eWmR}Thݽܒi>2l~?3<߳wm|˟}gkOOr[V ls mM[ W p>'c'!I%uSwk˥e(}>j|uŵ+8 ;kD Q :zŹP);T_rI/$NMԩ_Lngt2t{ku0_]tс. ܨm(oRI+7+3TԜ*Km5J1cx%}|^cf3qmKTӟgkkmmyys~ek~,qn9le/skN,N ďJ8V9\ovtvѥnU抲v:*~'hwP[$#ˍ@v|Rl?W-k~5Uqu-ʫF-Y8+[ =jUm[[X0.7`:QWOEQj{$dH2֚SKo^IBܭ-!n hMwӮQ'tQ$f2I47t}˦}kw‐Be-YԬ[ٱB|3ޥI9ET7'/^s)O?{5k|VSjVu #oz^Կ?||cvdݸN7Si>ivE{ut΋I-}K/6n- CapKڋʒ=X ,`g$sG&RY/zRv_TծentફI)Ii|ܵqѦ<*w;<ʫfĂq(׵&}lQ#jM+jMk.[Z#,4ⷲK[51pʄouɬ# 0kE:tj%[9J5^S楷һZu{x!lmp%ͶHbkD8h e`z{K|[rnkÚ׺זބ%gOM}^Syx (agWfM1r $b7E\J*W۫w[vؘ)UoWmi:eiO5DJg̓oEN_$gsm9bk 5gW2NP+;~llm%>zߟK_ܱmvy5RJ_m?{|w=BCk{֒D9{c!gJqSQrk4洽չ]z5ъxHo}3ud phzlҭɸ6ٔp8 6J;5ֶ_'F/mmx7kיoù`6Wå}9I #gU,2~$֛6ׯ>mzcN_t-Wz5Z֊<]qukھs+mo"GFGS/l4ւۍEaD~N.vl۞q\>RsF>i%k{)ߣHҾZ S:3yDbn[ҋQ9#~f~n]>ݧo=7k|=m{߱<:F*O+EwA$qbcIx)BS*=ﵹ;=ʬҜZW2w%ukI-jV"GwC9mZo qgQ&N_pzKow~N9 Dֶ]5x˪O ĺI9 gka!фQ|y+_%ڻ>M=g좔fKnTZ{kwuzJ=z" Xaj14cIY0 ^.&`4\of6w} [-d4D M0?ۏ'r1&*,^on٧ג[=qN.R|{ۛKz{39|2$`FA u?4M=0 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (>Bq|WwKw .E-P@P@P@P@P@P@P@P@P@P@P@P@P@P@eMV!9BsƚvMw?}NE £#iV*N}Aҏo[Jw'5>54P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ǘ|Wtg>|y/nGLcN۠a@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@o+7-nBg,׃'[W 854d@€ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (ߎvR>O_ >w$? KL ( ( ( ( ( ( ( ( (8ω.)#(TppAm@|ޅëO]/;etVF 29SifDeEJ.镛PitsBg X =CMEt_ɚr>^nӺ-Trߏ3m61\ $p6uOC߿QR4*_)+Am| D:Ю3)ZʨH,8aÚ4JYԓOWjbфD8HGZ)H?R ( ( ( ( ( ( ( ( (gozߗ`HnP FX0MF1:UNk>i5;ND Sv\,LOYخ^Еݖmmm$q%ؑ qUkF34(tܮKc§ETM94JѶ;[K;w4 zͬ>X9v_ GԉYgh :񓞴F{Ԛ~v~PJ*Kk{kˡkd(8gk&(QD(SZ5e{پc ZT%}ճNZmYt:1?IoK_a5P@Pw?/W.;ڧ_]?zk]_ t׈-.](JiJ.--^wi8daS{Eɥ=vELj<[y#j:(#}늵p鳣ڧYcxöNでn&]HVGX˸'=Nqق-_qy~n*BKOg=_$F5ͅei3]Jj+FFՆ Tr_YE];_[o{;=ulmxA_:2 {VwAo0OH5uh|^կpv^΢M{-WGw?=]+|S}*v7R0넼N2G٥@unTIYk}g)Jn˗ɽwzYkk|Ķ&1E\"ПlF!RT"?Wͽhomm9o}JS%iNw~v2m?#|#RYj6 {!g P~aW>9}9V*u1iuɜ {jwnuK`hWy k/C&w+9ЕcN!nI^}Z[MNxiuVKmvwfsFVI&udOF;Ӏxh9SM4yz/5|Ԫ(-Uߧ62^f.Í7\.'7>ƭP\,@ŒP9 Sw7vw6n'ԺW]=mnܲiOs(8@FUTppc)97'3N4d€ ( ( ( ({ޥ}rN SZ:/WQS(I7-mA{>M-3cwV3]>M3BpL眪FWV~{*OtU_qu#3P0ǚ6'9vk,jWך.[vb-N{/ֿۧ{߭>[O'5-Zcxn>}oGO.-&k쩮Q1䈕 C2 },W5L4d_V_-_[w~6˝cm܆ 1p ' Q^_};Ǟ(IMtwvE u+"9m>aOW<| ?[S=8ͷw5% *ҧBOW^^V'P@P@P@P@P@P@P@P@P@P@P@P@P@m↴&3''=rOVdnma{5@€ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (:uu!BQbWhv=3PVV6P@P@P@P@P@P@P@P@P@P@P@P@P@^*׭<3j"P[`݅iJB*9h6Ŭ@3"WR uH)z]*yi·r5GZO1WoWȝ򨮙Xѯ.ՠnx0@Ap5rj6M^yKt6f].B0^{JIS9]y/h.|M5*yQ6A2(ʩ<9sdokZt-u>++dmI7k5{&q]\YKl>Ll1"Syq£OI5Yv*UjA[Z<ד7vZYM#+2"0rN<}, 岻vW]EHьڴ"'K?L +OO Ǩt%ܒmT a2js~R1JK]i{Jp-5鮉>.^x4:Qt!~8g]\0hN0NuL_#/wVեy7m=S-{O^iدCk ]KBGv)^2lBK:iˡ*5ֽit-kGʜ&$YܱڗtRYSќ61 8$`pNoN4e̥M;d'GfW񮧫iT_TKhDKg2WN=zPVM˕Et_{m/=9x7>{+~RNhv[H77 )Ndz NTԽ+Zwyy+(/u-i;zeGihD7"P̠$5fxU(hɭN\=WRO_ʏ޷ĕҒk'L7;ۜn>\c;Sm^^{t-ko^ܶ1u=:P ZT\:4m ܜ!q\p*4d^}.o:n -WZ čH[mRijeK8%Zf浡W M8K]ۙQ塉jt-=Tv/3ӵ[MIiB,ʡ[ ~|d{x s& }M:6kw4} BԭsP}f6ΟbC`AVj8ٻ6ݕkN]:RNדWӷߡ<[]Y=j?5kFS'nҧ$3W] T֭*ߞw=kҵݚz=5v~"}::uơz?mQI9lQL ,bbͽ4nuF{M-VFǞ'״? ?G^avʹifP1 p=zשS*Vu/gZNhBnn)nۿֶWHYxDKp<3C9/¨IyVd.mU-5mpƫnhJ{]MYO 4t 9eghuV "Cp{V9VWKFUI)%h$ީNFWZG+ iz1I}nnٸW=x+: ߖM_Beݯv9ZT(pO{יhwnRfگ}?9Ճ}U-UG=z2}NDkwlr I1 Q]ݾa(N3|#4$7jg /D;pH^z޿8ѠAu?Miz7>ɤՋEse6#_QSUm5L=>ʙOH}{V}QvBbTmzC$',2d&=+sCSjrx$85M7c/ĺZ=AȉRܞ$ ʴ)KoV(N`;+Y2iRˊ A8t䢯k˜t7݌}GZWPKi' f7PCk:ĺ|pIsN]G$7`rI9 {`IJ`MKQZN>n%m&m VXY4w9t5<w` 70E&;vWKMKm$^կsx`K Bch$.Ld>#% Iys)%wkn6굶UEޚ;&K_/+-Xpꁛ 23o񵗛Hpsyun+=^)5 RcW[ B@Y$‘$5(4(kKD}]ۣe j:1Are7&,RFLz޸*h )4f56B-VPխᣁ=aNEsѪAU8}#$*֝%ѯ_~_kOKM}=,]u6mrGsc?x*|޶׺Vnڭl쵵2NKϳN;{[`eMp#>NЫa䀥F;Nq'm(ssʓӳMok]ٷR3"oy_Viњa$;Apvpa 3(RH98Ӟ˾6ϲI;C/j"{ͯhM.ӍM-q7*/+8Rgb59pUoCp"5$&k-O[z+pj`!6wvڎ^u4gPСൃTS,FRIx-F>\_;{^]m_B!6Dܭ5 5# \ _6(PC%JqTSgd5|xR\~Vn;I_{tvWu^ݵFCqF6< G.R$\d}meeV4`ֺ[hNYּR4ѵylh8,GP†V`=V'{&ݽJ&>(9Zm$_ȥuⷳ&`RY#dKg'81u'͒\8H{kLRW|.[#,,Z$^K_R~(TԴWMXl[ь**ynqb#[9WKDˌ4[ndiIiF/P +y I,Dy@An njY^gs_" w,U*9[AZ]}QI*itW~J׾ZlPVNo}vfT(K-spymDxTOώ1@|b#Iv>8ʝ(Ԧ[7iOgfݮI-{],?ًD*FD-' 7+G 8Wv4Mm+Ҝ\2.-lodbPхTǾP~*.NdE~]gZʾa2nOhtcsS 5QsI_5*tc)~e-C^V͵62Z [EJ[k|8S^I?ݺJӜWI[_vyX-.&G{[m|bT6,I*y#]]==t̽P.-m=u-ɴH B ](r27*^3.wߊ^i.Hnj~ub▷m73D/a{Ša*:;vxIud۷j׵֎-neFK]?'iյ%vzѣ'?Hc\)Jj*iߦj-W-ɴji[z!lZ2컙x]3eI(UtN מ\=o <;(IKU$o$֞n:]le-l%5231\+@cn -3xP$HR+ٿzoQ+|O77lURm/R.DXpۻ#`q34Γz]]_[;5Iu_+]]]/{u;PfȵUXn, m/pNFJ2R+⊕٤}:ؿvUkMwvZ]Xj-5f0,R\FwrA9c8#druq8J򜢿s(M/_JPhP@P@P@P@P@P@P@P@P@P@PF|;襠 ( ( ( ( ( (0-,]:[{m6{iQ\6N6(h.ݷK^v["mJ}]JoJVVQJl-rd_JmH2w6pztbQOJtzk8m'}=}t(d6׏uG[ZFXE|_(ѩͿrkBSu;BaWpөc4aJ1Iwm'[Gk2nQwn쬭{JB#I! uAv'ÐxsGJt3'8q_8r -2PZe̲!.~EV @+ {QJ0ꜿ9~_S9OQ]Plyͥa*jPPd-_V[ʝ[[}쒽O%fI|F.lyge6EaPHc`I y]\%,BWEm_Kݭ?[IŮ3>fmZm%Xϙۉ=<ҽ '}{[KZRi-˞ nT ol*gU\gqVXD1֍ҔN\zs7g&3d/jj; 7o/?7^_C%ܾ>ܻ{oq&AѭGGo|.F7HǴckncliFkMқqi歲[:|]Bnw[=|B$7o-P=kD+Ǹo:HAlpCN,pɸ{:&o4vJۜW K ʜmlӻZ[N@ t :C14 1dUㆾe4k(qqTG}lu*0V^KFko_KXkGimFNTt;2*0bqB8)Ir)?R .{OYIO<k'%:E-HLSG$RRu>Է/-qWeI^Jڶ쓲}>!ҭt iQZ }$1cR@8$lTuq*M'g].n:g(8g^wƆڮ& ۈO:9= f_V9uu{ߣ2Rӕ6k4s;K ~|Di@,[m4TE#l%Znu%;?Mmбu͠*AW|/iE"HF7ָq:Vm(P]~,1OkV%  ̀`A'@XRmBYv%F끏|WSKW>GPXyFGi-ab.=󔍔;O,~[b(fUr=̱F*;2i[; y^ɹbtf~ONF>\w91s^!*#$oos<7KW۸Y:cϓi%+v,19\C { J3*j6meO+fiYq5I9ݾ8 %kaIf( ܡqqؚr؇i-{[Yq^*vImG.WDʤ-b:g#Wju ebæ0&fx㑳QU8=s]SI_sM=ɕ#gd,ԃ x5N枟{ol,1TpK?<N3Ǧ|i)S]ٻJ2RW>49~}_ΖVڽk BK2vi(rҵvoVF$މJom.Ӥ}4[$[7{` z[~ӝoVON4_τT[im6ۢWvkW2jmm$ڹ@B6&\|Ǟ9%tھM/MQ)U'ٻmZmc)IN)$~od얖oT}oY7ьtOFI灌I'Zu3sѶO-}~Tcq)iݭ䴲eyd׼-y}}]{AO  #+pGaR&O6zfFi;wUY#6Gltˣ9MiT։&VQNRVvP.im{1nF)nnliR[fJy+6A= /G+mK.cV/rYwoywkZȶgr[$R-N9;j|ҾWWJ׵r_w\sە>kkߵwV_ϴG v}ƜiSI>+\Q$攥g擕{u};oG/~>]qMN~Wɿg#u{on`֚ݍM[Tyy2~p0?UcQSkDދUuG8>yrkr${Gߖm.>,b|3ؓ2эsR t=7J rgw{k3SVfdz$֮xKT" hiIUb[kQFvIiڿ{8֌ero}:mVohI6-vO$[(](,-n\]%FRB9cj?sRZOӌ_}#uXWZ]_K<7.'Ԅ+s<\D@ --cKMBיִ߭KrIRݫ6{7n۽Zm.7g!eQ"ItuVYVI>}ɦkKK2W )W?VMe(Vcxs%s$^YM@R8L9HDKk}BIШ+Z0K `ܙoZNyUjͻ>ֳݯt];Ɣa?~5kۦx?֯n=GkJ F|CcrrHK6VM7չ}m_i{ͻ+ߺ5m,MYtUz`ڪvNA`g;uVowU6ݚ{O2/tmbQi)qG2eI LgYPMI]S~^YZ\Kdݔ괾aZ=V:V\Nb.gۈiFTa~^NN meˢ}^_u" ? ^CfgqFYsϷ<5B^ݶ?E((Y.۫Nk.Wu*9+)I6ݮ}me>=jyF۸.MɽuE]spyΛmϧ]:1TV{+EG活Z]]^އg6ido7>gh\u݆*s7Kֶkh[s%oOwZVs5EF##J#+I.RvW?r+W6O,v] {,pH!ȩ_XnAm4-w0|wr+_t'+5uWo4Yw&bo")%k[_*EBcߴpт8;~T(S{5F'hQܴee-FeUҭ/ImK~T*9Rnwz۳wW6zEWW_K[[&ggQ[K < ENp8l p:U6Dbm+]kox1fZ<5Ay4B Ih,ڊ/r[t{-fnHs:Qk+nM58-}nZѯĚe[{IY C0S|jPITO{X{Z1QwJ5MV- t2CX'>Ǧ{Rg&dN=\?UoYMuf/ZL'e$#RG f ^Im/sU&(~ ?v2y8,j9.vItV[Ƀ.JwUV^7[[Y=MUӭM5RLӼ%rpRA,-Ёʣd߭mzy:W7;oi(欗ev{5 _Z=;-WSFѼXr'E×WoW䞋oKiWXQWI=川^[;zK 3eڂ_ Y=qvw#Js7KֶkhZs%oOwZVzKxޫ,=ߜc`|㧗wzgktjs)QmٯW$;^6ԍ:SM ܾe|eUS5g\:**M'Ri/KOMn6-tnrIcס?gxc.YZ}Ǘf\\Hw?n&6W9 3]Fxj?3|xCE6H@;j,S~z_q>r7r"h+\(ɝ{v4`i;=O{~_8L)W_mvalrHeInͷ 18+b%]>j42©s:u]5,q=SCt+%/gS{̗),sIpC${yO 6cԂ9yx&]-L=q\UZ{0d,1v&$is?gENHGQNVrRGua@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@PO_wR?^2IlizK:jm-HX@¿' _W;e$o=rMԋFMpDLa޿OSR!0εt+([D]8YIin͜c9y+gb=3t 3{Q; >׬ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (Đ+yy~?ۗx+dfqNpWnu #@69U:wyGHS97:?9dg{ŎH'5Ֆ`SҵsNgzH&%d/ײ2Tk xTjͳ]iF/BM\4< @ zg5]z8yrU4v>ˇC ]%UۮvB V9 >J }.'b5(ei(-YljqGb#;V."Nͳz[袴yj1DF݌۰ Ž-1\?t_`*u"ׄ{5.mZ{1ژߗ93_'CڧAԳO/ic)P皍KQtn`A#ؑ[`% +4sS&U.ng}ש|L֢Ѽ:K ן.C ʷb='KNֿܿצpU'z4Yv.϶qծS@ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (ɼr⩽ @ÿ']Z( ( ( ( ( ( ( ( ( ( ( ( (2|W$xviH 9(ԭ so(۟Wca"Ȋ!$?(aHg}Mx^bjE=4?8Ε\]yJ).=ԏ˞ 6W$hgf^:sھ'pX;wyE 'Efi-omo3a|>V3G?8:v֛]˨eRW*_s:[4]2[[hQ3n2s&06#*5 &+QNoֶ]*E tQ؎:hG1ݶ_יٖ]䕛zΓ+jJ"MZɑ^(X;#{? _V-_ϕT{#Vq2[O.|gf`ldB9O|,vgB+|46S\S־i(Ol!Y~#f a'uSQ:=\ J%uelے+aS1̝5&}m+UVsr$kEd*9߲:B1J.c,n6MEmTGL$n#ᶢb_y/όuwY*w}:}ڝ=j.qc& Pk.$ r<9>2EsZTZۿ}v+<%T[5_"WK'˨ZB<ּKZ= 2/{MN]H-&O, L0r\眎bq(JU0M?uqS(I *1G1WQ5/{sզMQZA$ Fc`.pz&n54_=jXE俸]B18u?)TeS.M :k€ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (%Wh 7|9,Gm٘&5J ( ( ( ( ( ( ( ( ( ( ( ( ( 2/v/ F":Unx\K),gsyi?OHG!^)G? T"M>]B&݀ 2.bYTpsIڵU]m<Ir-\ϵ>bǁ_u? fV|litcA#ڽb~ô %cUk1Y%d[@n' ,qtm)E-o9N7{>{'H 4on0.Xo]/${5Z_#F*Rӱkۍ:-岰q"A9?7:uAa6Q9gMR!iy ]K/`A힕ψJ}N6)(3Ҵ~ /mm|w譌鞟>WzJNG+ӓOFHPI÷JR= i4tL€ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ]D_eR)F|;襫$( ( ( ( ( ( ( ( ( ( ( ( (9K䷎YeT±̨8${Z*RUEvK{v\anҿna#vG9o[u M}as\#PQ9s{Z,DJ/Vv5q\_ښ%60?:(SE⺽.~+.-YR EhCܳ—bAxw"cM]JoE|˥+u+w1Jf{ |$9)bMKQjB]>V#(fre@9jΥfKo0yjg9q=Sgמ"}G]SO xԸoBXXg-ca2B9;Z\\ef dHH3_%ʬue.k {O&}SXCcn&HK"nN?Ð8~UĹEHքMT;VeIp! uq_Se0gT{}j>$ӞZyŞrϵ~C[VYJqj?if.`;\ZF& HgW6gwza2\u<^j 5=6_#d6LE9%}z??u v")I9$Oav+ٕ8fSFRQ>[t؆{DѤ4mNlbUj' GOaҮk*etW˧z8eQ4qRV/т}nں3 Ξ"i^XejCOFnXsS[V}3UJPG1#߷Oz>Izxyʥ]i Tl>C[慊w5Jqotx^ch-ӦuϚ<7=XOnneLo*7}#OX \rGǽx8S;Cڮ@ CZ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ?҅ /1} jRY>g%bI9$K[rM( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (gʏR0x{VM^-+}սWqO"#J# lp N}i|G}km$2p,@''RM9rJRM@ Cp}?B*} ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 3YVrVڹkc.CxkI#6mkCFP@P@P@P@P@P1+YXK}N7KMHS8`㞠i(JRI?WZ7t*Mkv%e4Bm&ҥ#y)UIݑ$F䢢 >K^dlծT6Is[2}e)G YSVRN[y4?iJ14\N:ѧwwVfYʹK նʩf#ku-e}m5Wm3.$c~j^6CZi6sY^k7pgsvI[r ;;p5OyֶVogxkbZ~--/ݴwslf,&!X5).Lh]Yk7.zc}9mNn0ĹajQۥ⓶M%Y]";Am[_)C!%Ir8VJۚ۶vn*IoԌ]iUtG]?UtqOV?7;<nqQMKxMmcS/~'Zqv pNghͺjeWkj3(g*_repI'vwIrFK~W5^;*h_[Z]ǮkUk%t"siZlOoete2</##0)~k;u/o;0eם/,TFjFXu BY4{ɬY Qk1?}Un9pNI99 f޵)5H'imvI%guMJ[MWI=JikK2֢fP5Ehc81f R/PߤfJ?w_nG(oV $x2CI"`@9IMV٦ۤ} V$py;B*g]]o.4:OmEdJ׭eQ3N1ټY3dn'П56eIE?Kwg5)9:o}<Vj/s4veP7Vl̊G-xldp'AÖg{Y]-SViSv]4[ݭm}ڭ5('-.UV  m`Xy~Q>R?յ+տԭB1c]Om0j+2ʣ dk(8ǧ,RZywm4މ90]jK;5B;-. `fGݴ*Q[k[$Fpɡ1i-nآvyuo[nԔP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@xćǍ51skZOw$? K[tP@P@P@P@P@P@2hMHmudA4حz~iX-?BloQi%5L9kW[2{bZ %]'*H=)Yk;zj,G*FQFzS/ϭQB1Tbl>aӦ&m%eIܔZ|m wc;ݟ].zw4je֝cwoqougm< hYe#,?*tK;m]Eێ-=:e(<Sڸ鎔NJOuM>ZG huWWBQ{]B gg:6FA&e&Y5hhی``c|澷鯓3Ut^$U/Fܩs |rR_pb[“(b 32x5DQ[-_r#[+U]m_4́Ǚ{y^}QR2Y[aglpo %P/~o^U];&㯨I)+KUk|,${ƒ՚\I@0HRjk"vagڭioil '8d(6AXv%hbq$gr*vդNUْ}}0I3n8JowI^wK+Fq6Mps3HrNXS֢PU7KXq(Hޜ=G'sM$;֨rd?:.y5iWP$0\6 Tx4Gߏ4u_Lڄ%z1kW+{ϧ^oBRRT*_~i8U+gaҙ]o~&5g =[K!gkѷO'*'G'\q~Vs.ƒNjz'g'uwvụRYu,P+F!sv= U8?_Cj+ Uv^n<l~;%ivf[cD3`GsFTՒW5^T% ۻS]MfMkE%k#E6 YJ27#+֔qm۲oz_[#P)AwI=jVgeuu{h`A\x+iof| 0"!c; $c[ viwմgt7mszߕr^x⮓i3ZǦG,XC+rpn8T\AE6udwZQZKm7V|4S_Oo=qK ^d-#a#*% a|2rVMߧ?-gQT5|RqIOdڻMIiQ2?kD|UXqEvEr/yjZ_K҂SuTՖwZ_HdGx{";|<ݝxj—7i[gm+in浵،bO;o nNo~m'ß:Yh[ _/pNo7;s;ָg ׷ۛO.n^o>_+Ut ~nvݹ_5wc'15sPC!2-;ʦ5>)[ݎhRb?GABVYΉrNz.1cb~;~)6[)J\fO |le{.O'tMD^9X`XgmgcU(8ZM;j#DtO:im,0\pkҕ-m{V_Z/;ޮ:;^W]\/1ٍ?>qXhdmێ|;99ݞј):M~xGT>{}o{m~o,|uWG.H|9CƋ_^moNyt!PƳ7wMYY"6k}ѕĖ#⮒ gRyQQcd-y8L[uU9n}0]Esӯ7OG J1oZ;_w?~ rfc鐧JभZ9 {H[__=/߭T~=]B =7 OlW**S/M7o6aAcѭ8;80 m(˲?:c,:yhǾWn-G^Ǽ9-o+ZWsya9R4k_/[I'߅c\95%үL$̩'܃κ-Zr+z{GoNtlVU)x/eNͶg߳F8|9Y?n-fMkE%k#E6 a -ى~jycm/{t)6ֿ[v9}T^Rx^+8`KlYJ*fD bWiI3*-hi5wBj1IwwϮ>h:}iC麗baE!eLdIƉ5Mӓߢi+wz^Ew.jI[Kͻ5m{} HLFҬ46ny@we{9)I"J8`x ⥤՘imJ-ZE,fb B3N^ye%$ՙ𝭵ս4(m%Q*̠pzwvC^jOu4mL,ɢzuM n=NgMM$I+۩.jRYvv<,U PnXiIgYZ'݂%rorTR,r#m°%[GD?Mz&it@}oJY-;cpf77.}2=hZm/v6WcBP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P|HWƚ_IkYJ-լzÿ']Zԃ ( ( ( ( ( ( O(>s9"ũxNyX\k $! wY˿˯ةAv_okߛֵmԪҡ,ڤ4v~L%6/-/z_i1QU=:j96O[[g-v=6#n5y/b70OiLr弗nnr1WCQ[_kMtRs%W^}/X۝KK; ̙fy$͑тݱT`K0k)MEZ=T5;wwcYStjO{.[|.!bG<)$%rO>S*ri>Fӭն{qvܪ_KnFnu+{axm0X"1 \k: ݥ$;>^If*Ig9T"^+ }-W5H 'Hƫ .u39oV˔ppKn 5-7ݽImk;$~ԛ1OM5V|rk%bmk%ڴb強QpWjW$9$1Δ[礭EIzZZvWgT9+54/SE&tu Ȕ}yڝ-j?z5__v9W:`~p;خΩ1 D9>B$`Vp7,OohռYi^Mǭ}v]jZՕsKj+2Ti;##ypBR-ZK.E)+mdV՞ KWwk{rBPmB[z$&pXV?a~Fœ87mrݻ_k7;IvLS3Vko{+|eovHӪ4J72/u ܾSR*Tg%֔ޫWz6sR0J ,ahV;T ܠ8;Lkz\=_jb%57g~a(Г^SiwWiUXj7i7ɪmIh FD;0N3QJ߻7UOu{/vMV Vqr7V՛-SÛ1GeuGd#F9 'I'&}7.^퍢t/n8Cim>) xbyY$?1=7@tIIvB:e~]U]zgmm&iImwmf@IۓX="ػ̋/O ݟjWJ>L/6yom{h\f`^Ri;_j%++[实6k+Ykhdw0Iۗ?F$C;wky?G77Q[hEL 'u8ܤTm{ۥk{g<=?R hFxɵ#V[€ Hv$Um﮶QIvDqRK[[o1jZ?-IiA(1KU}{Roq*z_2_Mz]^LK9BeF=)uYwm&}S_&h2j73XH&,w.D`2) rNTkUӣ[7mׄjǖ[]~ KM=/S`h`N41w/F1uTiu.IJ鷗r]FSkmJو&))#ɦytkb J[[2_XfW@#i^ֺLboY}$PtJmGM\S8`qJS疲^ﯝPtKM6G/-Ӭg9IWhs2҅m_^ÿ9W'%еs7VJ$E <DȗOX%m-2AFF9U@=*嫽wo*qPvmktkv#t%OWIЫ N]oqom/Ex" h"PjQG8%mdaX"0*3:p(|֩])OWEuzZucʸi#drI∷x9%%gn(bxDy[|T2}N%( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (ž! e1g孏JzKxD[uK]wmdoԌ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (<;JA}Rj # ߆d'l q3:Z( ( ( ( ( ( ( ;/nlKG ?sUAXc,k8zjY5̴vw]WDg^R$v]q,HBrVݼ:d01Rrvyu_M1ƿ55>VrGm©RJT~U\Rͻ[:у|fm^we}}>a P(ܢ(^BrBT'G VMmݥ~D}j"IKմvNmYM;_)Tu-{jֺL*Qiߙ]ZJZ|ti#eX=k'N髦H ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( awi-K4BA2 :(#%ޔ>]_%b OS'Aܐ/25&\rA>} IXo5X!aԴ%G(y=Zz4JQTGԫ@4JQTGԫ@4JQTGԫ@4JQTGԫ@4JQTGԫ@4JQTGԫ@4JQTGԫ@4JQTGԫ@4JQTGԫ@4JQTGԫ@4JQTGԫ@4JQTGԫ@4JQT|S ek6iLbIW`v9; v6?ͩw>W$$G㍆/x. np$VUku{-n#yK(7ys l"单VqBm;R[GmG޺?_/{**b[Tpt?=Z(-Aծo΂(v}9ϗ|Ξޔifo*4VU/KM+68qZ}ڶ>}1rCLK gǗXUo~X~V'W*?:?_?Uʏj?_?Uʏj?_?Uʏj?_?Uʏj?_?Uʏj?_?Uʏj?_?Uʏj?_OhڨW*?hڨW*?hڨW*?hڨW*?hڨW*?hڨW*?hڨW*?hڨW*?hڨW*?hڨW*?hڨW*?hڨW*?hڨѻo"*z~; 3C?h[]W_'?+C#ʿQT [23!@\xb?@OB/׿k ur`cx'l ONq?ܥpEo?c8_^?ܥ)ZV;Ys{*+|b][<8>[D_oˏz1eWñ/-aS G5SA`P){ ?M{ ?M{ ?M{ ?M{ ?M{ ?5SUG?ʥR/W9>*,?‡Rk o5Xcc )J Ŀ_OAkAkAkQ@5Q\& =X_Z?ɯoZ?ɯoZ?ɯo#OnuK[dݟz)WF/fM*v8\AkD?h& =X?h& =X?h& =X?h& =X?h& =X?h& =XQC,o,<|M˕Ɵ ' aIW؉?tێ~Uon6I'Mɻ*vv,?dc?ʗ^qY ɟƧBOL4}c,EkGρ$ۻڳUJG,A7W?Go`cc{]6*['XSWMa}z㟹G6|?qU@-"#viSvXH(h3v 7/*_;OuMU+#Oۧ?loMWOr6Ǔrb'?jA8ϙ\| _yB؝$ ~ܢU,)FmkΜG#9_ܢu9U×R$.?VRKC1o?_ۏ+? {g?ri|\K^K(ݙ (6*c*V2-\C&ݿ"qB\? .-Gc}ĿظY>ʗ-2ߚLyS`O??)&*T\|TLC;/}tǵLj_cGIs?? `%ˈN~cޓ-|SRT?_OA']lʏmZ~H>0y63j\kbKKD?3}1͠[[W˵3cgj*KXmXF_og:&  }:s=Ꜭ'6~S5`wajqw >/fKO/k~11b2]G}j)*A6v^RwaX[~thܠ]:S:7?Q'SNnQſ"R؛:%Tex 'ؙ?Q݆bF_gw)JvbQѱ|U76szIU@+Ex?9[IXVбo2Iu+T-\z|Sܪ^sڏkпgȏşO:_$623__=umNov_n~{P QȦuuK=:;gc/*+HVpR\%fv<5 Ĕ{hardinfo2-hardinfo2-1331e88/tools/LICENSES/EntityFX_License_GPL2plus_OK.png000066400000000000000000001207271474767047500260640ustar00rootroot00000000000000PNG  IHDRd/sRGBgAMA a pHYsodlIDATx^w\UW>3&3LXc&*(X"({ ޻{!n"{2i3~ڧ묽>yf}g *Tu3:NDDDDDDDdO Ȉ$Sd` )2b0EDDDDDDD1"""""""`LQAb0EF 1"#SDDDDDDDTL)"""""""*H Ȉ$Sd` )2b0EDDDDDDD1"""""""`LQAb0EF 1"#SDDDDDDDTL)"""""""*H Ȉ$Sd` )2b0EDDDDDDD1"""""""`LQAb0EF 1"#SDDDDDDDTL)"""""""*H Ȉ7:QW(^O.VƒsqV0a1:- u oqq7a_jUEG-VE/KDDDDDDDo_EbQTQ*9VE^'e0UL8yШNh0K:{<.q=N|'owƑm8m9oYo7-wLX1kh*CwC9T(%)έ5ׁX)%B)qi݄DDDDDDDD(u_9ZS+*\eHnͣ1cpg+&晣gTd_/Åwݎ{":5߷wFƅإ]?k4Ƃq}d|OL욂.I['|S"- Ƣ5?X'VJitDDDDDDDDb唃'>)zzm)$= yzyi% z@S`ӌQfQ:[U~:rbZs)( V r!V#1{2f KŬ1oD%c{bٸ^X1OQ=w.c3r6ⶕ8)n,3tش6El/\d0^u 'Y#gFqY/c#WN1""""""""[1 5q޾h凎 оzݚ"k,'æC}(Y8MA֪8f&+Nk`J8nfb2k,Mbdb*lT J }0C8k>8 ǭسe,jȱQ5LLi0:5 i)!HmVc:aTtO E>=c.X;?Y0GVLřsݎgn_{75uo^kس` eԊ 0oXwLc46hS } th;F`iz'Hyqxg~{ {,0Dך۫`l`JrdS/ 'mZF{nYj{?ExgCli=1odgH 92z5~<ONowޑmk-NmXKcǜ 0u8VC#oMkclm$!":WFMʈ qAF>#[Ŵsos%3\*1""""""""[12YR2uwB` qѼ;ZuAHw̌ fXۼ%cLCgdi ˇaј2fM郬 spju&nߌk{7ow]~ لۗ l%#bFܣ)Ftj.Mji?"kTG xUAt+ZFc{'a8f!*"5Wي*\ၸP4CQdz"ʣ{|M oRB!1ۛ`{`Ipεy,\4vpj<=VL7Kqh4dYkUt=]_/ıUؑ9ǜ!m0g"7 GR@4Dw5uDl+`u lo oou;~O6Ԯ"5Wي^2 .H劦~hޕT¢17.b}]IS2:a42ئ鸱w)8 [pF\?Y&Y8&þc{Hl6+&a۫9R">2H q Z7IZ>ˆb}z[ؗ~ ?mܻw d`vrNbnZs~LL)>s8y! %EZ %fvO.ј kqSmlMܱ_,VOKyPع|,;3qv\f6.KG`{f+GuƢ= S{75;ģ}r$6p${kR(&vk~ 1&ŚQ6+[6g,'G5BP971G)"""""WRQ*:{zZk. gQ0R*[Q,P  }8UK *R1osl :FagZvX)3G`ݳ +'IX9+ƼݰxZZ1 X2m[af&* -1-|1!&<Q|UI4CۄbDt / Mbp\/pM895OJnnoUF#"""""Wle8BU7._JW%i'Z\sqg > ,ٞl`Jw74 s+bB C=N͢l`?WLͰSlMk]}`~:جӚ"NyﰮH@N>Z'D Lst,)m1!% #GB :#;!,S C2 #:cx Mp²vȚ>>WpMnN?šE}"UI8qJWpDUWoTpp%kTe劢0A(_$y ^ ƒW2zvh#_/ƥ}kp&\\?Gv~)^PC[ơke4H? %! ]"3"j]i a@Jc Oƨ*#766 EgD B\Z 5<"50}, C㝰?OH-aZ72d|"'9j]{H1c0U˯PW9n8""""""*VCT6+UqAU/(SY *Uq;½ѦZ-t=\!tzAX8u(ێ{x6\<3&!$G\ps*O^5­rq8U,. GTGFuR021'GcD|$z7.H Dx }]ौzzVBJԦ6oU?.IL~qm/+ɸ7 mZ>^rZD(% R"""""!B)/YH8~ʈS >*\Iꈸ4 sCRXu4Q 5\ j򩊮mbw<\ܿ׏ط:N#3)5W ݝQLQ88Wp(].KRI嵲_±L1DܗhV c[$`lr Ctn^<]*۵"jzT@_mكЧAeL}~8u\8fùI21Nw G\Ŝ0:{H2K?A]9 \FZO_B󸽵@+Jh'"""WE|b(1Sg:2nvFLjh\ hX \_嘷{eUEZFؾp6܀l,5S?5D"6n<å jT2Rիcbp*%W^>G}J_`PL(%c\MĆyAݝ+*UD`r)k"s@,zDVf82!lmpg.)I8=!.c+gJaԫ[1w?< {_ ̻<0OF3,b,2?>) s/sqQB&z`c[-^SDDDDQSJncFXsvou0U<6:cthQꉠQ 5#ȧ "MZ2zOZl_tJhm3#ĽjxC_9BdoU5V~ p@` O Ch]l DrG-?gz;ݩ"W+ׯYݕsNe03͍=q áSw\4@v0h-%u-^f(U@+^m0awձHrG=ϷsѢHi1A˰md_R-Gځ^ OSoؓK5+P1ÇvgW.Tu:#2b⌅ ^s{vR;! _ꃛB04}>JW*h5gXO[L98}tRB!6IP?uVuj y"9-4M=0q`{nfJZ>𪌨D@*6 @ǔhTqQ󫈄0W$vFߤ` lZ}v1Ah\!~U ՝*š B[)!gCt]SV> };a896 djrZ"rR2_)e`yً)=EPŌ2[5XeWkg'h7Sll}OZwW^?Y^h=c!S0AӤ9x:)"""7@yG7XMXnD>>bIs1zU%LjE9G(U?/*:sՔ `O?WK^' ~ B:>:n.큘H?Ćy!92M#|?)! c) )Fzh[M=[5F , k". :FS'V'&z&S2ZYzX5\#-1SX9Mt^8 j}Bqp@8.c8}ܵrRWJ[x)Uz t+=X~_y 塋 ^k๣OŒ?b*Qb>Ө J~u ʄ2eo6LMGK(QSVF1< UƗm^%YT/JȐͩ2+#г*B\ wQө \[YxV@`WEAhuB`74ኤ0oo6G:6Cмz/ Dث5FuNĸ.ISE`PRL:`V:ĢK4o{:IR!K+`dtUc)-'2־1yZ[ ;{Xj%V8gdtss׺&`h`L=z7ͣ[cL!\OPym+<=kqK3KY]ҿ,Gm >+3WCwahEgMEG3GlԹѢE"_ $u"/m cFU]?vBV3RrH~F"ٻlS4+:O谴D8.j<ޫ^q|}&4u:qmᚂaualn`yU`S0rV8Xmԫg98e߾=27>7iyMm\Nsh9S^SE*ƠAt1~Hq}$2{^=[_*>-xHDP?)9oN޳&X޳ʵtZ/PշU}+I/zMƈ*f=(vR+4A~Q!s5[^S}-gO^7MTN**1Pp>LZS3媩_x8W[%{8 5}[<ᔧsiNpFL}$F Q~@5{UBZGk|5B к?kTE(_cLZ2&lо7tM‚xh'Ŵ>-1{s h.-c,G 'sD%t @` ,qXߩOĩUqxLj`sGlC1N859k]#kJY{`iD:ַSp>5{GsS={Oa)A[%bGQm ̯ů8v)D6w8͑_'CװR`Xj݇mi"nhذ%/#Z0Lu> Er|KDM^7}.wjRCF>݇cIZ"u2}Ř!l~ꐶ&VBf㟔1 -=-)ޭ{ߴiݦcp5 1\ʱA9S d [WU*·zt5].”諜i}3L3c7_愊mNn#>QMNjS:h_2fbP{vwx"*U}ynjB224/Lb&bکO1;"""Ww+b*FN]){"|?Sejރ`t&AWcFbY2fj5ns6*^L9UKEU?N{T{2p*/ rTB?pʈ኎CYѶ~DclM407D9o%$rEfت:7 DrFk9avV"CLM$GlQG֙ PߪWG?}>njXۇ7·R ;aK@iWp3wss׺&y_M)_^@ϬAϐ/3Nㆾ;?o+u0ex=|!,үR6ぉLYB[jQyt{" -ևm B=7n6UP 4 š!*fZ]c&MycL1_C 1Z}p1\ږŧ[ӴE2l Vp-j[&m%ϫ2睪=aJ[(oя;|{Ηs-`JsD`b'& 7 Q"QW5D96@i?_3{`jʨ  ζo5zki9~嗪ݛZXSEK&2jP+QVL@ʸ3- s rE8Zj&W[ۙ-ow9ńqcЦ/J( S31ZOtL/ۏ?UHC~ 2zLY{v,UF^h3ëPD [>JAYr?ćwOArOS h2sXm)_isS߱ŹF0fj"|Xj!eN ЧqYa{dgjGw uB@H=|úݐӌmD:+v_UthSP`"B/Jt_*+W2ܫRUSe^hR U\mS` +%E n * )ǚGf0U$\95U%K_Fs}㚮sBgUU+תXK!zBZ=?CF,o-phN{\{cQ;?lnmkH;5V9k]RSς1M;Q3'ո N@ZL v?7rOppvf-g*])dXb(^ISZ[T@5CmZW!: Ui>'j`U VnYJ`ʼoU$m}c_2a+4pYR9G J 8u iYL. 4JL9< 8,>t >ʢ%[rlZ&F{z9O`j⌉h^K=~}ڛS1/ZE+Ǖ_Ƙ~""""ʋn*I"l*Z >S3Ы0t2X,}pS҇S`j L< ]{AIj59}0ꕯU:ƫO3zAZ,SL5RS SLM2ݦǨca4@or8)ۂ)xG e~|v_UTA@OGxWK9Tw,*^<+qz#2 qh kʭ|i0],zDkR36ņOrFfQ֤.FIMg4 vFHkn*)|Z~ʗ*\Ke'Rc)ң`IK?lqlQW}iuH&2߷!,uMrSɱ5p2_e˟B[4Bc$ͶxG]Q.n`]< C>netQxL?bm|kY5nV*.$>̍ƕSWWlo=޲veȒV`dI d0cL|L^:\&9i3R9uh?YH["[2߲oۃ)uysϟL?ֺr "?cx`&=_ђu6h,E!Sl>=hr 0[flY-zS"/3d0e]pڧ-E`׊)uEҴ-QF̼^Kqj~r y5WAS'q j:zd4mŔ.9]Lt ,Q`?9_6oLM em ܻ`*SU9d.KDDDoԘ*\N&U՘ F"@mM5﹵=/и|Sa짳4S{tXiX^Os}V)'(IԢ*'jQ t R5SC%T*U{5PzSU*kNy9ѨS`* z%Q196Bפ:z&a'VS5vնzof1Q'p*W _}gtI٣{ҶI/rC-?Wx)qsJùr 9BR;:4Fc] F'`8[' 芅)XycksOh!"S5 +h{̂[Z21ʕMeۧg"3ZBS!2=Yд:VUdI U'sϯ1e~ Z?P9)CըeIEN9ꪅ_`JT;SNⵏuMF\]{`ʰ)B禾k?b!&*׾NkohoVc_c*DDDDT>'T=SPl<~0SyԐ(c`ʺr+_&h u(6&.T$*QZ!AMt ER/jVG \*j2pu( 2hR:5D#Чae Hpqؿ/Nlk`TLo5kbS nѮrbZWJii6y` )-j0%BXG5kMpżm Ah+VaB2I.R(8#:10@y=oR$$V_`,>LuSr>}o~bƿ?R2jZj,&M}|^#yĖ#E^/a|`nOKOml*5@O[hj/=Rn`ʲX"ԗJ3آC{S+eyq_Śؿv Ƨcp#fa 8>)i9k][YsܜRe?TYODq|:P]G1:h-SiU׃1VM[ [&x7FBJR k c0,5>K\xsѫ_`|cyD?Lj*©Q+C@y24Pc Frz{/Bzt_1;|͒-}8tQ'Ql|Hm),'O&s}\Ի#/DX~:Yoޗy5fX?$o1 L a//2fbpfXL7MYR擏 ">7'͗È!'¨ s_`p&ho'~%K'+FL]>w;QS Sga2p(R(tCUBs#}t9}љy0eX%~3b :e+oaWͬ7y8!S,Qƶo6eHSR%V)O*q /gJUVjx; )G8apuDlHu4n&:cdjS ѶqRCPiZ^n(Q0>c+%-ʢtpXUJ_u㦌 U99Si4vBr ] oHq}ðw`d#1 bDc1MC9g1wk9e:S@/zhSWN_m.8KyYS-)]o<0☁-Tqu֯(A2IؒhJKђpOSLO|X W >vA>2YFTÇC{-<][Őt<'N -V?db=@}J.}ڪ|QFZa,&#䜵ŋY2SOppp[a(dP(J6?^?i|3,]A8Yz\n*ݹ2<\T.SAʟ!^鈘/B\m74 wGԡv. !=CAH F0* ˢᣏ>@ϊ* xP\qT,Ε?G`7LS*١<܌x9Mc8T]=u ^utj[Ǧ/@YZ(jNa^7o#15^r]Uk^/T1??ۼTe6US.bT%x*ēpիgU8!ܧk`*& I׶Fvmݓ0{2uL@i}!-zF R_|_~%KEeQ|I/[ % N  tA _x`ʱ\ʣc98W@t]Y*ܯzFՐ11eM0h}0uD,Vyc14M'u-^u8U9&(=qYmcs,wA F'Y8[TpDU/RVSB3U2ܝ+`JTLUA@ʒj *q]: )GcxjF%?œRjMdƅmT zDId0=!!1*T(%x/Pl |Us+7TX5]P[S^իUTTSyGl/ýX#[J5dn;Gٝu91cX;jʹ9k]eN-VE SfsТHiͶDE Ÿ1Х{oyNh"e 3ѵ3WKQ\NA  [L 8 vSSesJP{9 LSn@ W4ܤ6 GptKN12jhԄ DZʗ+%D/W%U/Qps(!n䂚>é|JkEԨ^M!("ѿM̓pdj^s75NxKS\9% :Sǹ-cJ>tn~T`O^E=DDDD)5^[ؾPża;sՊ)xnj %VD[L'E*ըAh\ PC>UT"-e/7 D[gT¼Q %?y>J_~9/* ʢJV k#<!Ng18<+"Gy!& ÜQbZ >~,㣱zA,=:}eSKS7埨9%S=Q5^[L .pt&b5<^b[)AE HF5D0U W:@r]oZ{M7Z)D!(8*RE>@>A/>J*eJRrt(A.~.X=+!̻m.MCXfi SzF \:8 ,Lxw//@noهxZ_E'w8TWEjdZk. g!>|Ka0(U\Q^|^MOG8!5B/bPtTTHPFC5z; "a#BhYfw@ƁzQ'\=>eVkmkq8sѫ#S"qt󁳇F⚋k/>Yh}F? ~9<$CUQ7uQ۷*jy9# :]> R@+x !Mk">+вZ7ZG@ӺAtR`곢EQHQ.JU*#!"-Db`3@L/x˧h~m1 2anX75˚i;6-눓Gɩh"ZMQk&~Xn4""""""""k Jr`Ϫ0jq"eXP$".[IaAHhU/@֘j#ToCrx B"(U3*U_/b Õ>!& <HiVk}l G6scT g`Ò8s2tssӚ`l`Ljpv""WJ:>')74ኘw$BPB2ZBhm#ѩA ڄE]?4Bt/\*B%PN.(U"|_7"bka ODAtjRݛAVѯe tSaA{_&⷇koSo,ArNZs}ULLX)ȵZU~NwFAC<ZH 4S)jU g04 kc t|.jMP!w eP;&Prΰ:H5Xu%XiӪzW<:d4ǺypDtg5l폤Zr.bNZs}ULLY)] t;VAN'4ZhRMxy=nPmHkM`Zuk5A+6K@B!F:EXH6Q.&DsB$EV-cTDNM@HmQߵ!f ͰsI6=:5ssњ`l`JC*2 pFT OTH B"vʟ*X3jkzݬ>6 G&3.=ѻyCl5R 뇡ihyap Mk]9VNGbI0c$VLy0k`G v̾)'Sz'bȶ)^]Akn)""""""") NnpqB j[ %WL%ևS2j-VL@Kb8%GWJo[ǐVQֶE62JK%tja{#Q}5pw6U8rܲWebt7 &b:s$M }O]Akn)"""""""\8]?('BJ}_nTmkC\R)! ݛG61],uǰD1]0Z1w+ 3FctTD{ct>t@l0dmZ[Ypfp~ ٺ 7.ѕsQ.aј6|}صTLL%p U]I^h0bj*B1>iIӺ %atLbcp^6Ƿ.7 gpprćp^O눔px\<=.s^pl'eCېF\zNo\ʅ>rbZs)( V C>[Dݦ`H+*:"0jꠎX4-Iǥkǀ'g+^ƿ7O`Ѣa3vbxh#kg㿯s_\>'wt'n܆[8iFHcc#WJ0""""""""[1d(.WH jݒ1#Oꇬ-pn +Ǘ=<=Q<߻g`@f߾9c"51Q<9Ow^.>7]ѡEUS)"""""""|(] 1{{ݹ OƯ׎=<9 ~8)םSoE{󍳘2D;~D໽k7x,'v=m6a֘a %"Ƥ5?l`*>+V UPU$]=OքzrnNjGo=su~+۫=:'Fo`h[7-TޟuO/sqV\?56/Ms1h$n(׉90z%T R"c4܉/ǿeg㟗oqؽx C0O;4 Drdl]}1]RprR<:wē bdNi&%)έ5)"""""""᧟Tيix"4 A:%3}~<:e`ڻ whԄh^/mk!?Ef Q!=6/vXٷ888X^ V Xɲ邟'ah^0}ni?"Y1Q02 ԁoѧ[뜯#SDDDDDDDd+Sv&'f l%#+x] V ^1%EPtyO~~`m Vݐ+Tn_9b{UL$kuo!K?L履kyQQ+ZZL^=ٿZ4`ʮt*^E>gۍR_e ``ʚny5S3SH.f ULYzTCl>f{)ե SIK2_Ū䪤>tv+YWw+ע|a~ց1c0e_Sg>՟}1""""[1"z)]E5E5͢L!b6~&)<}j~%2\ ws ʼI_SGVAfSoO/R#vڴ*QiҾl6[bOBWd}oX ݧK;\5zz;FǙ)4Gpױq;FU,ډ&%kJ2[~I{zL7ͩ՘5T7*=XtW<ގx`j!\_+ݦMR2I_73n_9}}V/ڨNb?V}Eq_`z;z6ݐCNa;?'jv@Ɓ)[n7kO3[tJ&MƜc' k5lbßD&|n˚lcໟ= #]eϲAQ'rUao`q9o1E[&'yv?{1 gh6nB(u=̣8qc?:-?3h0 ~0Oߓ̓Wډqg}t[z^#"")+St=jp!jdj n<笋(̎M?(mLm^pXOOWܹt--pGb޽)aJeqBû3=ۤae"h۴Db2Dr6iyCkkߔݗu0KX?f6?= DZNS^_ߎ%relC~T /FϪ/`*kNZa t1;KUM a5 v1.uE~\*z]){o;sg@zbi*vonCqaV߀.oW05 'v\1Uk Rd{+SCq/=.FYmoœ3<ؖ*׎2=Kw}'{"O=5/Z`vma[*V~~ޓ! e>9>3.p}LˋS*?;Ž줡M3F 8Ys-컌kM.n> +3YRjaBÕu7vy2YsA@]KYX`DN!]GrNWPڭ0;5o(*c0EDD:c0Ev`ʒFZ D/‡CSW ܧc#5K:c[XL] wC]7:ݤĜx;a1v)_\\QWlmrWwm2_akcXmdI7*AKnAL>E}J=~X4fKœ,d醩m;6cV)u.We9~,4L$C3Váq(7S:X|&(sxs-+FBچ`*g1朡J "p}ŸZ#!> uWP.\ws]q~4yoVέ{o%o@ӟձ I[{Y>{u _&-~û{1\K2}6E@%],l-j;]pS8߭|an(/<}^qF|Ǚ;9e=Õ +)3rٝK+7m+l tir'< >(w#a' /MZ".$"")ėォX[pUmE"VhS,%e!џr{vP=*܂QX}7 լ=e:>P^[0䤸W%>l#)] voxts2O^bڶgLcآoS2Sp4¸bUE,sU׷7SAGpUTF Fkǔtq̒2^"a2}]C7kSSv3@y !` t0²ChgMy} _,?ߦW ar#q5],rO58grbǬ\0?Y5uʵ>E_sQ\EDDD/SdWLY>f='uL邺ߴ۳6n<0|IU$:S~Wj)sS͏ż-[S>ۚÚv0k +rY[qXW4 -p=PI ɺ!Rc[|r|3Og r%gO&b~= i6SۛS^rud^mT=?/;c4l|dM7vG6)CdޗzU+GG55S8Ģwgx[0%V:}*V(fws>@.G0< +=)W>jSZs{t0s8SŻ;kr ctͻW>W!I{VBoS>)]:d=־f&XAxq[lO]}ԧEekF_&K}mUbk`<^.w.vw}$aQu+?zLGX.YrRXTQkh]HL=2a\ O[sX%ŵKBVQD\#`J_ fjLqL`~}j},Tp:21خw1.8?= u.̩!W^Ղb SJ[]TJu*Z?ߖ\x]`J =ĪmUrl+>nBY]g,V D vcq{gv]Gyc4D^ c˃1>4>ՀO =6\F5L?SY*""7)+S&:9Dً8aL]P9j$V:y%J!VLu; "eaySsdޕ|V!nq4d~^.9t`ّt@)r Eȓ׊"`uc0z=+=.~܎wdOr\yy|r]1%V<)s~0Lu* ?;nch\ Y\\iE>XzU:]aql-G0o2$u׊)y\=#P%VLiS`42\}G >T^^.-~Ry.!^NTY8~G WEl9$""?)+S&'_lQwj{2XvM?kL]?>iz|u]wml 8/qF8f7X^\0 ;.cep>@nl)C0e]=Skøuߌmo%e{0%>N<.=G&ޓ%~_򭋘[SĖ݂lq6w@͋S",c+O(ǥ"gSݔD bD;XtUcLO&YLLS̮ν-Ʈ[ `P|\מT=A}*泬,}I] tNΟ\\Pkhfje-"^ynTbWR3 :U~ks_mnѫZcʅ_ BT|Tg5_0{OST[M~:VkŵH{/m*`JMW\;K÷pCsXe*(Qથt7g?S~OZOʳk2ֻXNU}'rEE0'`gE'Jx.(}=-=޷ۈ` a܅)_ס1ȝr Xqy>yN6>C/8Sˉ‰ WM5<﷎CS 5G#Ԑf:.Nj?/LuA1Mc(5[5MWxJ|}E F c$wBۃ)xʗ<)Ε}i&"s], toxL?qx]WNcfA=kxX$=9c/Z?L  }Q/|>1R)CXChSG5h{N8 # '?5-m|`)=ǜEo>͵3psNTw$Y(`Jz8Ա^ÉQS˰x0ll0%5?/o!9:+jW|"bʷWqg8.ESsSDDD3SdWLtYEzj(QhM#kX)_t;V5Zm Ȯ`JGԂ}MTHGo ݼ+r…A9VRML]ת;-]^Oc-pCNuNelCob}'1vGDDDDD՛u[ÅgdiCQoY(ٯ4y7n^ǡw漭tOp*T䛈m`ԋJ]WppZ4NOgpz.ĺs7qì Zx;fuJ)"""""")+SDDDDDDDd+SdW V ȮLL]1""""""""[1"b0EDDDDDDDb0Ev`l`ي)""""""")+SDDDDDDDd+SdW V ȮLL]1""""""""[1"b0EDDDDDDDb0Ev`l`ي)""""""")+SDDDDDDDd+SdW V ȮLL]1""""""""[1"b0EDDDDDDDb0Ev`l`ي)""""""")+SDDDDDDDd+SdW V ȮLL]1""""""""[1"b0EDDDDDDDb0Ev`l`ي)""""""")+SDDDDDDDd+SdW V ȮLL]T0eI\Wdyܞ>~ũ ޘy6K_5 n?C3Gۼ?DeÉ~??H'h:EW~na|ن?)+SGSak(-)<;?Dۆ}u<#=/L)}¬j7ū3g6MQ`M`?q+f05  E4N7$+K8i52mŎjH%7k.r5(}>}݆ /L麭Ķ?SkL+?:َySDDDDvc0Ev`*`J7E &<=8u8'_`*lmebEW!M+VDm솏sSx +`Ɵ݃Hѥye?cEQXuW]U[ESya0EDDDDo7SdWL2/ʰ<1&a߅cTvTjn<2KzG ZԐSR^;=ν-l処\7 ɽL ~ iU;?Dg[f5\,۩tmwrͭV"z>m58ȤS;ơqQn ddM,c.ndBɮͬ+ax|`r(0],Q<2ƾ<3;Lw]mKL+goyւ'$[)hE[7cBkKnY/z -E_^R=m6垖A]LsD9ph|`C0A3ui>׿_MD'--*Eݢg>Kg1?81w1/_f)4_7C6Qq,r^" ڦ+ # ~vD-ys^>r^5Gn7JܰKnLT4t=#m|DDDDDYL]T֝X d\S~,.P+%-]ʗ_)t0@rr W1XS~޹d^~)^ضFwӒeRU'E,m^&e/3rSЯa]fa!R?_qv,=f!!Zqg~ٿ>IjX8v6/b}]a<_VµR璂'>I̍)c#z&T^=⚋MQ9 ;MOb[_nJTڙ9wdžy {O;>sgbZjuar= }iSj$ޯ*[g~4Q69w9%Q9/B(⛻)1zjuyFy~m ̃i{cyv<1SS~Y|@|Ell}عo|>\-`J@{ewesJ(>1? )!胉'._*e7L]%׼6\Vs>uĜ"QTM]5 |Qj T!HH4so$~%E]A4x2;fLEhLv;+c^͊)=-WlQ-.ìOru/Ʒ5PTY(Cj}Ana\5/%_e,Ǩ>;V "WaSuE*1N u qY# >4Y[=Z׹"SS} K߇!r/wy`Jܳώ/B}!hG9skϧLeb7\y:5ǘs)mb]Sa lӹOæ0p~/y,n6EE=j0=|wt /`J|bE?qZ6'UX:XojyeW)H{Qyzv>,>\ Ȯ^`!mW屓3 _jUlI1NZ^>%#rt-րaEؤv߲UDSqhkMEYt櫥'QgyLAʐSb5 ̃r2v&ɻ*XfYLPzkax% +`J~- J<>>{0X}пrM2@!B>zzv99L_"h3*)p4Sq:sL3}`jfL /, W)PesL]XXb>k&k7Os1m-Lin\n*sc)""""`uLS^@Gl9 &L^65$k:mϧUM✹S즊E[D]*Mn'|:tV^WؖYͦa]XDM')uۗhwa~ v*k2>y}dL]]7<.ɰİbJbSB} j]&ʠJ/= rLTS ϴOl\97]BO\VbD+sүSs.uEzk^QSsp,ǘ H1>,LXs]Lu^&Jۯ=+:mYi8YCJ#XiETOӸT2޲'Զ`J;|RSƴ][yL].ۚ3_?+[Z{`9Oy\ʚ82+0hZ7GӹcmҟgpܮwqN|붟OUsQT)m-^ q}ۤnA%\^$>CSs/S3^IG>ATo*'ADqf} > dJ;Q I: ]IbY szKGfbצd)X%kv;W50lۙfAQ^q53szΜ_V0'~߳dYYkj媥 !(SwsLLZT9cc0T>)""""O` Tɲ9{SZ[ ͏[͖\B8kү~7le7<:YGP')q?v>Ye &y.OSΥJl. S^+ՕC&LnT^+Ŗ:?H_Ī#WSĖⶄYy6-'E/{Xdyzl[[?-y&`!oy(zL$zEQY\ 1P D3hhs0֦=7>Ɣ8r^!noaWM&wbގjH(Bg+n(gC)r|kZ '0:hJ/[S.;ZqS^՘2g0EDDDDG`0EvSk DHת`PL֖. J߆x*'-y&ƒdw"O!I}z~]ŖеW^i1D}_qy8\~͒!hlx:/)#`J gĖʗ)"H<ޜ[~kfnjlf+&醕YAZtCՠ){Y~lnO3'RbQ]n6S"b"S&`J;St9\8D<`*r1Pv|;['/[RڛPWjy+.}Y9jPUOPh%\ƎjlXzTw.%˔oņ?6?54~S whD+Q萦H4koLsuj$1F/ebEbEWnA!:q n(?c2_ĵm^*`JyuΏOg>g@5}z`h:nЧbӮ;XsYk0Hq" όs][C\cLA8.Ωޏj.g=)Q[l2''>Wʙy`zg=~ܥ`=Snrou k*cǵ)syDK3yRTC=(G`n Ȯެ`JP ~<﷎38ZP"}Onk)gHxt:lQcJ%ٚAfh0<覜+x&6Ŷ |O5D9)\~ļWt,zn|T 44"tpbFzO c_\Ĝ RypZ~2R ꍉo QUT~"6a=fd!(>eٗ`q=)ϧӢx{4wưC7pM?^n&[ m-#!}EQSB.+b5LL]T0EjgJSnh?Wt +~NLi?'""""")+S]8^<וH4ݔ2pʚX&12z]0""""""a0Ev`^S SDDDDDd? ȮLѫ`u`)zUL.L0"b0EDDDDDDDb0Ev`l`ي)""""""")+SDDDDDDDd+SdW V ȮLL]1""""""""[1"b0EDDDDDDDb0Ev`l`m>bgN->~ũU؇ ?q{EƖп'm ĢqPS|ن`ԛL`IfSշpUliY(cbO39 }5}e)?=;?:Y~ыb0Ev` \gOߟ4+`6 + ӥ=}tlZy[R?tx/>*f"""""?)+Sob0W+:qK LR2S6Mۍ|e~ 8>*lxŃ_EDDDDDTpL]1z),\Q"ǭ1jqû{0'^;]6+~;BS#// 1"*`JyQ|GpoVDY'pE-R½S0*F+CĸmgQ .\?CfӰHm5J3r_k'PE-ҹE5pzN͢nݼ+=YX5kry,$ދSŻV>xp tnnA\F!'Ww )Ǘ`V25tA~qlOaix]Ǚ!ܾr;{Y-_tmS1f+|Rm [`p8or{9nqSʚT8Fڟ^%ߛ{ilo5<;> $NҳOնk;* [9<3;ۇ.e%]4h^Qc{{k]u'Vcl6KYwLo/w?.'&}]žmVkUC9pA$漫=g8LoǀwŜ. Ȯ ::u7^UK1y\z,=y7evɼ2D\\|S_iCyLKQgy'1U@g;NsyFZ>| |+WŗWL(m_;.Kw]c#=znV+o9&S9)]Q!m}s}eV>}㬥]^U]Jm]m8|R`Jg10\kaL!~Wܹd9~tj{j;1MKɾR湱UJ#9|խxa:_nd?{y@3%,T5ӿ=\7y T֝򾱾|*=܆`j&\]^#즴Yr٧3k* Χ13ٯֽ>?pw.ǽ>C {tk<ߙ~VwMcӵ^J;{)s"2Su?Njl&Y|CpkSww )""""z1"*`#H7 MC̞0qDd& _DPw0;؈pE{̈DG0Uw i2Oq ֊~bKehO ,%Y0sSλ]?0I1ǫXפw??}K҇~5ۤK9)D3\t\ '4GfOXԀ{3$?U9yPH>O/Y֎!ҎĊ tj%WY^T!cȚh2S>md j{0fru/Ʒ5ԠrE"f c&85#Z""""""SdWLbulVe[|U4"$6 mqF9YM2(cc0A[NJ'˙7벆ҟ>2{]rR]adL-~O5J?6rWgw|ʵ>;ª_2/ߛNuw_k'@9χL8sݚn0o5 u| cDh(V"ʈF,k;]yԏҭ$U=}"Q'V)"[aediq?e" T13"`ٕH2L %r.xWD( r;`0q5RƵ4g˶ݖm`ʹ"15Lu tl~\!NF5$KwkƔ&Q];C-bkm-_ןO jw;ʋ$v>m|"3 9{Tr`&ӱ鑺+wj&O\G7Oafyߘ!:w̓ J<XEBfS{q(rSV*C0+O?4کtXD29Gc. }7Pɰbk ,dfol\%V/aY%V]źbdP8{z*:վ'ݿ+}43ns(5vF1w7z\sO~VXL |nw2;50"*L0RIfΜ{'s$n׻w|ɣmvhuavVj0UQԐS"siM޳"djΧ[,=~S`jIqz{l~8TnJI(,plp$oV.ΩanǶ󙏹8Sb۹܋a."jq~E׀ (~`J?* AS)18YsKYH)}}K{A+{}u{"m{6kzfPd,;e*.Bz믁, lmr)=&S-)""""L]YLbJ]!QC#߭`*u dlc P 8g/K1#;('MR+ PW2Yע|Tq^ƾhQ=vIV~3/;R f]:tyH9fԩtNd0׊baKrUG+,gM+gG J<^_2K& Ŭ}75ږjT)SӰ2Q~&Ǟ`*R)n Ȯެ`JϔS/>D}IvTjݩ`ʰPnVXI xw~b^9';˻ -)pS~M Z%o!Y Vޖ!\d\[L$ e~ayXDEWO"jmհFV>糪Ekl311ez(/**\ѥ?Da$s=a#jL GWCYEym*6[v%O9kiEF3&bre_  ,`(.l78&BU)FW^˰K4VOxM[{[*yKS+D(~y$Z>\ݕdP&>צ׃ L2#)HHv8.CsgPI}UliP|Y+-(/+5?ʻ_C0%Pqh#Wp)D)>Շdy=/{YK1Sq2*1!mnF53`U{ZBK$[ ?ZAI-o]wj4erlV6קVXLɐ/}r,Ì5uMf:szrZ۳)mL!xx~ZL3]Wp񯸼/K<AJ*uYՇoZWSDuf#,g0%x:/c=xPry-_M]pKzVe*ŎZkkzTw.+" > ͺ^\' 5hdYҴ`)ꂱ՚IjxSlEW_xp-F{f ay1d2fv0% /&BK0iՕe} RpxNgC4+62Lc̉rET-{jd8MST]-̓%KS%h1ЏS\ '6`T{{]u',sxB*qMώG:loPOL> stream x]e9%~~} c>>DUUøc 3/I܈ȊAT2/֖("%>}׷tvioOc̷<?o⣙[ em_̫hK ;WPSj꣖zl0r)u ~O(o}Ou9g bt\B^_]pB9ČEe`Fg'OOנۧo~0|*kkz&G^j Y'ѩh>/ՂKF{aR/H_}nʍ5w'H[`$87ȩ1g(~aiwIZ`K3Z1jӬA<םs z &asIlscבּy5tR:NhRt),V R}q )/PHa]O=K X3҈w[`jz>k+ދB}n!j">odR~ 8*OW ֠%^c\`τ&&^L5{/S*bNj{biH]੷{Zѷ&p 6Z/K XzK|}dRVEOIC~] Q) 9Ը}Telquٵy.^Kg;w7=V[ HvN|C.~9%3`6wp"Bt6\5{u^ʰqKt}Vâ;>3 <-,%Qjѿw""M# P)mK%!B 8R _2[J L9L7gj|-OϩP\cKsr[3Si|0wZi4K]kHSUA28Fh} w,K].u ISr-^Y2?fO2Ꜳ$xjvŁ&U%M};Dz@5q iM}Mq)+gܵA-ݚe0s$cIx maniQl5!N$ ^۾tI&Sa@S i\F}oՇNR~K&E` ;Cg|~FE&F^GO&o_",]sO0a3;X1 ZjtˀZ- KXI -xS`ǒ 駱`An&6tY|rRlWߥJ8v 7VkU,_`>ZAD=ĄRm.ӋK.REG|tjZ>ebXyRg6'NX%tTsހXW~{MmUN;/,uS+j]wobұ9´&c!紬jrYX|0BZӍ %jZEdZSÊ5BJRͥ  '2Fj]h~Hd`yi:NDUs|o=O8"pu NT]CN1;z.1Q$w>,~0sB?Sߎj4n"?dX%1l1}5ק74e} Zl}XN'l:WoX)da5^cn#v6y04YX`f]- xFF-dzBf$ˤx.oKPJXѷB }Ye@1gNC+ _E"OE2 v[oϏ!Rwk!'cGZ 4tp)!ix{Gs d?7_7'&F&!N Ō|R*-!Bl="!}!B#\-|˄tƆZ>hcgsllmj2'm]gsӁ榞9-Dj̹Ɔ v F hm, ! WKuMP%5ѥ{wy9Up[I`c.ƃK$XњyV.).Xl1ƍ!mx2h]r6uoc4l2Ou ?*3gKcltƲKAؖ\k 8v n,b/t*hh ZM?"R  B&26a6Vad\hvoj 3B돞c `rN;ؠlCv 8w63 ?dhXfE4ۈXйs80ў!>dvbC68X)=X6K'zt9@~FOvaѥ罻Ø~vyysW&+ AcxGH`Mb/N]ϷǗ^E$ѸL=MT(듵*kstr "˷y><ٻ>ѶO}ۙzL=w&9ٰ,΢F5g`+]JN(Yo/'iu?,-[ao_ןKW%|_~ZW%'#Xn{7/I1B|x>u<%GS9eQuVkRNܗq0F12> Mt ъ7\$˛*_o~Vל!ԸđĜ͗YOkp>blnWfp_Xq0}운Je7rX| >x/U۫ p$ߛ:"Uo}I s *NVdиkS)Â`tZ< aHEum5z-lV7'JptV?oF+b\:,D_+#by: +P;;dgKw8 vV `8X]p/Z% 90X!> ].7I7fYeqY 2.\.Lp"37gٔCeȚsϹ Zw\B.1p˿ՇQѕؕÓ+'#W]6b]\/w 1j:XTrp+l4"b+m0"bgupḚrQ_k/x -_~~4d7>Naܹ/V]NZٰx-\0JmK+kL_I]}땂U2%c i^jVB^RCOw5; a4ERYh = n+0LӦ=ľkY\O[SZ|؎`}S|G$) N4 D1XΖ/N:Hcؗ-t! %peսr>2J`2h1c\yF2v*GNgvƝα`d+:a-:i/1j3! 46s=f˔̦ 1߾vC cKOTMtxS\kstXb˖!BN#:mvQ~a01=BaCCCl-gZ&7#4#qOb篭Cw>V q C >(Ϸ/!"Ek,U[7W?Zl䲘iYm2ؒK޾ `O24.lq(x6 L˄!i:8nEW'k o,%}tkc |lKzum-Wӻ-սs:%z_]ܒ^}\[G/W7-|q>ݒ?_Ӌ[z~xK/.-]ڽFhq>_<ߥg^\_/~qH tx ^\` ~sx7EME0c Rct APAHSAhS10diKKL=8 }6mkp!do%W9d3섐^W~C ϯrvB 9iӫj, Pt>}]U6[(S16յ`zu]݇ˁyz?.(8gls=_*7I>okž }ĝwy\ڎ1=D{?@?=kyRb1/WW_˅X͗Vr c/b1y^ý膨DmLY0͐LI )!̍8sG` s[( D4xƯ2=F گ4 kL\Sl2*&|AqpP۴0b`$ UpֺC} _ <.o#w =`&a-YB B0A7CӷB`\Жo"WL:z/B=atO1!iDrFys:ani۳h"es?6M \sʐ98xa<^R\{%%E[X3m߸>'{q+(:y/58Ƃsa`wG|uPCJRiHDžI}n:ߋgḀBPq*v=m,yrm3d8 ?YưH,-,!>roy.-)l벋GmÉũյ#4ϝk@[ב>D`qL:_=B?;vt {ǪAD*<?(m--O?VԏU*cJRp&#s e@b _l8ZHΝ;?k/ެp 6P B p sKBZ]r <@(`lۭfb|IKOSLU=H[O8ڿ6r;K`ø0 1a-"\vv>aW17{DkCNP2":HLHR7D j>){?0dbfo|'/bӲDy`T `IFޜ(y=-%paApa$MO=G?lvas owKYc8Gl|1v9;AChD2wYAv%م%B!ʌMm5B[Cq~'"p4` H Vzcc 6_`n)2=$emnAJ7QEyjjkYh0c[.CUbsOX$~ޔ5lʜ.- .7>jJaIcA\كn0mTw(pk-t}oPpҡ! w69|Zh!0^ )V3joy21 _#s=]HTdv%Uuf2-#VC+ļ@Ś׽y,7m?roY8gn1X!::_|jsDIMH)/]SXYc>5n p) PrѦqYB*\ [!-֩r9u ;Bn;HBn!Bܧ816I;Enƈ[ȍScAcrmHtH[M#kNն蘋J[utd}}5S;1{`rłvہ_=+Tı Om;*C)r̴wd{i0Ðx@dX3pQFbJq_ZVljc'7] B8fAeU- 6/뀐`2dDe1TfJ-,]iŢ-Aή8jK(qaO D( ü} %nQOVՍ.s^*v2Dr ٺpH--(T'1={:Оo`懻r ~OPF%/Gm~77,'0&./G,GwdBjmd4J=p"e媛p#H,I`蝘 N4ڤp|$bOKDa/(.LĐdP0Y8*_|˜|a:0!8`ϐ$C?\ ?R=2=\GM8AL8BI]=஼l>l\l^iZոŵõlcGWί)&K3cX~,@? w䛢8Bn󁩸)pOl0/F.;A)ƥBCFܸ0W?ʅ{j `/P0.Z!<}c8c5ٹùڹcDwBOT9 KJp%no [M!]M}śFT5ֿyua{,{f ˶S=N0WϏ;av[ Cc &exa HuH>*  ۨmD~XiM%&9*.@N7J@1opU vZvZWrSfNC]2ʸEtv=-~H]QۮёaupL-zc۶ <,5ZbXh/%_(ǶRC)&/NS_nĜ`Mi1nOb,FMT=taO<tX^L֚ccn86Q0"k/ Vፎ60pCG&̝3ݺṉ{ڦ czn'&]p1(AXs^lsyt9R dv9tpJ&dN䕭ۭ=#{&kܪ{]#ɬňܧg1=)fzHZ(Z,ĔMk@Qא1A'\Ǹ rlV>_Qh A={wp$Gu0b|p ZѸwp+1)@D %ּu/tk?qEIv>,[vTT%" @)l@xT 8q`n VFB:`} tGC7cvů ,o.3UAŌSL vvCOAUeDOmNjöGQ NY]f.A>{)מ/ˣ}H w\aKOc30䡫Sq 7y*jf]J,4꼆Y P]klbrKg7/׹[ڮQwbxRe/F0'Q'7ga\벙!ǘTAӔ6I`ߠq;Minx q'/Nt[uՌq0]a1 '4kå7+NSu2 G8rXw n53EZ`RIA:u0aSɨS \3&0-`vD܃`I 0E ;p5SB ےu5UoH==qtHR5-$%6 0 f )j nkψi71S}>t0cw)f9SƑՃaM?K b(S229ǔoo#vV#0(-{k Xkm̿i@a;D|~|5we*<[bIaOCݭrv3weuOUv{͠ Mʛˀ.kE;LxNʶ~gFsf!P;OmOaTEIK5,wQ8do| c¹o<F|5);?G{/m<ʿ.|Nv!ghV:z>'A՝t{/\B@1+&m f\F~di-M+Y) E `.(ux?dx\uW]#9V M~nhc of@j3k'#X.&0_٠[x_jJI=lEV@`}=t+܇ W*85ci+> pl$f-d&cyx6;ۂҭ0+gOЀQ'!ύ1ylZKE,?zqgy 2cT q9ezȯx "KݴC }wjSQ732~VTr1{6~[pngA`.cIph5< xjq900`\ 6L1q9b3{Mpz 1zj2Z抹pfjbLMW,t\)6nt_ XpcBX~P?V+Կ ϱҼsk7"r9DǦ*`Z&wA('6~yw|6]D68xǁx^'S4.蹿]+S.c~ d9x1ǻѶhf$d^)0\ EX'umr&lvdT5nK+f<[#l?=P- c0Rfn90>Zyt|g7f1*=۫'<)Oozc#3'cEODµ?ڄUsRYE)1"L т2p 9I[Fٶ`7ȎmPwr<罉xMK3)(z.c^XۛfٱWJZe]]J8hp^xDypp\xeKZGn/޷ j@ p |{ߒjy d?֍rMWdTNچھd~ig .\g2t7PLlR?OD\+p;OW8evUKT[M t?V>vZJ3|Ǫf!j G[iM¸x ~xEfEB}j7Tzg't$Q'.%'W 8g72"OD?qX05i!fxŲuh<ܽyPG>rČ,sDp-p Rh}|'@DK!FrBӭbRLߐgN~ou`K)ލ ɂ!6 !aםMiυwU\Mu1.namn`^L3aȀ~i2٧r" 6xĎ w&ǓW7sj&jPGݸ~.b-AGʖ,S #t,'YTM bv¼ -^o }Ŕ gC,<-IQu{I]Aى?ǼOpcp (Po"((>XQtѻKלE bF 9|eC'M% . 8 T1= cFy wč KXxs.,\ႏY q:`d?$lXܘ`hau{7 C{jQJE%# SjYW:)< ffIe>׀H%[CI;?N[ DĐq%X3jUኩ;:x0lX .9xh9Eϛtጏz\ۮ|\>p N1ABN\RNzc19tЃ6)}.5 ]k 9x0hh|&abaI٧\Z_-6]X~,Z?֏EǢhvw}y]R0I~eebW]^Yt#qyYfx0_rJ~&n@Р=m{`0;.vBhJVlR&&9ժKBm8 D(ݤmG 5E]}`Ԥ)8t&4CqN;[w1bd'XpI3ߘ?\[j>)es<_uCH̬-XE MU;bss*| ldGțxXi˼w۵zGz)iuSTUO#O+G`W[:vr\%|JԗP8Zc28TJgDZu(D5Q"CҸ$THr ka'-  q<$UOXd?vkLɡ;zZS1d 80zΚ]/`J+hPioTzs7qWIa|2#o\`:A:YƗt, x3A FF1ب +Z X Q`a4Ű{>lݺ v&`0ۦ%" ldIfm،AE':ʐO!0,d }8g-<ťN`2zYn RzC'΀9;&rvDž)E)uw& ߋRYILb쪽 ,,CLQ-n&=iCDWPuRI\ Fͩn;HG|ѥ%5i}9dSY 8ڕD̴G%* n`*<$8u*ƹXTDrQ%#FF1vR&{ a'HNEzvq_]swP1Ǩ5D| #1;/9 C Co7輮Av7!6}&M;C-Z:/ L;IŎ4N\[/n.0q]|Ɂ&7B>7)U R7*<~BQ~>}nPj2w :龎MISA \8g[EbϷu"8:c8xJ 32S5R_jil"a]ײh! )|i#4 `Um%3~ SI:/&[VO7 'fɯja9ӸS\D XFֲxsU:zܯG'5LJDqu4/›so1:ꨁ;a,$&,nT[]zmm˂.=u0PGBZ ^'1vTX!UW~-L+p!>0f%G(Sю))I[]CNmv ~4̚bwL9,?w G غ`>."`qeQA&{AZiC1'79&16ަՙdwȻlrF|ȝU2N;gM] dxg}RG mP# 9D7,2 ;vNVّ6ؑ%n)^.=ye $FG!(tt)?|4LqL/D^\E4{/5^?`Iలi}"7Bkݔq\ݔ@ے  !{ Wfdx>:ݦ9UJ9ʚO[UMAlS]mOTy>hSEiß(CcsĐ~ Yታz ?THEC%%&HII,U ,ݣkHI:{aQSd} 7!MU}ZBޭvmMvbAO:M;m#NP[%AXAJ3ߜL,0UV2xϰ},qSZSŗΰ) .W--3E,A듙- -Cfnw(QsYW lcФ024$K\ 0P݅q陖pì_SH*SgiA*" `{1L8NJSզq7@۷$X Z v&Sx`LCG`loT (1 {ޮNr t6=$e;U\ N  (RN`'V5h~cʐ"ڙ I,K=`F U4p}xx70ٌ4 1(5.xǞ:`=G̚a+QtpcG*k0~uPs8aI.IÿpQ]V9'ˌ͹WB[~؇j0؇uLD --+֗cw`93h7g_h<1wiF0!PJ4Lf4Ub ajs WtCW7ei7lR4/Ԏ˓Fü?6ZQĴ5LѲcmD߆^M<~hi} IErm>' w}ɽF7_ɽh"f!z>`cfC[l%XO-:XC#srnxGn χpspyHDT53 F*'s\^#"z`:o؋V47CY*z0`fhvʶ?SFGDrx']ma( 9I0kڤ2.{x/a:7ɬO\f"\.؛(li{;$HKS Njb#瞭f4`}|8":a4:aL5 B8NWɠAE^_ec.Zf!@¢n`CӦSb}b-S}ĚIYD`Bڞ!_~lQ~BC3ݺXCc=J2BS AMΣM l E ῿a[8cR{}H!԰.Ahlo"PM{^oT*=g=g7bm*Ma7EWBq@a=e :#0o'7yDVl}'ypW7kס@oF~I/?%]=7w PV\U2A#>{j\1,,_o^xR> ߒQ,w/] WG6_ J]XqTFkx)rW x|+++a[pWPa 5"C@?DCI6ݎ_E2~.4n8Q)(r{>\򻝹>-U^cS >}QЫ7 }zbę[RQ׷֤$UddqmqZpΡߜIxCqv&v_!G)EA[)-i*V8R 9vrL3SPmBWK[oU\=M~YUҟӯ.X|+" @#>=Lm4&*t̾ł;9[wmuRZMƷ-Nޞ|S}s]V!EQh H=?7qދ?!>M=ɬu΂&̹%i e|IDr߽TDmAS6yۘ^8v~)CmVvM*"#~Rf?ɨ5[ *[zS]:f+`P(>o_|[8Y2oAgF.t-? ,I7z#0jC툏m|iXdL}} _u^:jMbR33fp33(k!Chu0_16>[UAߜp7,yV X{pw ^\.h9Z򋙊8.##u4^~hFbA_TFå?7kO͌$HE`WkXSERӲ y'pWB= ;&[$2W y,}[2@nGߜod< $cuYW6f ?J!Fw_R5wCCz̴7h*M10$aEM1NWeQ|HM)FV@eq %1q4]`MAnŃn_E@`'# ҍQ=UEx50p͝~X1uTi;ʌERԕ.9c62\{A]գO*UզŀűHD}Ccv(3ǝwV؝]@;TİYr[I~({ƭxp+~K!џh~`9Yuy(H1|ZEfȢ-)0HY$|1OFj2eUyC'Y]~-n~1ӄg0Y-ayED{eҚߠڙ/.-y)L96P0n?%İC$rFfe\%(51(R]J n0dSVBCB f uRGf gT*rCܿmjaPv[fTi/l's̼Ϗܦ)'#S{E6Ak:`& #%{6(qwjSߦ5L?sk fZȂmyƉT; 6#sg-ᆊ}s(cq| Ԩ̋;Fb#y:RnP&(-Ȳd(f ϼz`k [*r ͼ?xwwHq݁c,8tӁ :*D JF>Fbm2T | lz v׌y P\7ilG6 ܆B0TDĈfc$ 2dTŴ%~0X믞-vۆa3+U]Ů#  -EE\-aHADAR \F{SM.q%dY:nl. 8ażlHWwn&qQ|ѲP7?jri?h iI1]"Fw;I ?@f2,gHSfaO5b#ST!pnWT1*֣H,/e ,e *L0fdw~86F{w̋1ksF-!kDX"|i1̾ighL_ om,6NxBȃȤE3Ai&u@4π͸3%a1c. f842n 5\]]&ҋYN>rs$S@hO1@_Y@ǔ+CuE@]Cڂ\̃ h`(|PJ .v(0`o]+ Z>>Wf %-&*v[?AmAd⡭0Ҟ5+bEcPP`~}0t-ӇO"i[]f=YyX ,Hm,a*F3MT|n-"Md5Z.TԸ9#S$Jˊc>Sk,vR-|H0Ʋ$cX"We{L[MhLH mR 2{<~xV_^WxH?!}^=zHo!=Cz=Ŀ +8RTmۑmZ=_<7 oo7*ӍtR{q+(mUFVaV杆kIܻ?[6VVVhy(_ľk#z]"pR gG{D.Qc<%j>N6ؤt:6!1ڿ86_x69ܞMpmp;צӵ^/ bov(ݧ2J|:Az '2^_k^  v/HyAlUsԣ> a8ܠ^pwKF.o..Iw骇AowzK#v;MS#(Dr2g;Eg H`JznUM[tWWʋ[b[ 77xU8Eë*Y>azݶ&.$V xH(+e}J"h)w99:.dL1-1]ɬ<\eV$6p}{;(""á(P`g֍(:-_ř ȵS{н>YRsqPkQj[%f9BֳIֽjH,+ne%fݪ& WE[yIC3"~Ae?sşg&BG#WLKo5ꞅ׎k,N^L ΰac @%!)*.UMd ,tĻR]IA-7AM9'USNqdq,]%T8!6ٌ('NST5WFi[ b߻d]6rT2e薘xx(.e[j@pPf2o_c"ng/=` /?3Y6e"p=YٽbMꪧ0|qó_&F[*;t{6:3r߁@\3e{IT|oB`q.֐1tML p #\'cy`u zN QM,UUpᯄM?h~wȖgt1>ed? wUPk.Yb1D;عҭ,4 ՊJFbP; 6+K<} YVx{h}YDOUL6q3^c_nBeC{mB?NN) I`Z.3~O6a|. 座Vzk.5xmj;:oVi[,FkXb. S90vgޝKqθzc#&F>!싄QުﺵЁLzB?Ut¾J2Wg3 Z7%ġ63(" UWS4>$_l0H !F0MJq*7V}v 㘹VT*F%Z9UwCA5eDt*-V(UBe A 5 5 s=߻Ӫ] %yR-I욪Fqu#HUAzVz!*ݓU,(Pw*M~'w-ܛf,%6/,AEW/+=2BK[cQ\;/Ui̗̻,/A$k(aAt//5a@EMdۼU#ǜg(DLekh@4zQw&>@UCq F4Vp\9\>Tk oƮ2b ҋ78Ks"B/h 'aɬ qiO@Ϙ ʛO%w|qkbJg%y.R~sᚶ1ߜp[yqnu^ K.7LY[C2yHT&1ri#釠i#i i%X6mRg1lM? n1jdU|fי4ku龜~;9#{ZZYB#u2w0K4.*|~s}yF7}S;?*#J?^Tj̪ z'|?SYE>ίR~e*XFͳ}tu:'Ox/X٬R׏Oi q7Wxf*JP/w`YG:Τ endstream endobj 3 0 obj 22099 endobj 4 0 obj <> stream x{W_bp !ɥ\44eLVSD"dMK.4Lk3teht/D.S)|Yoϭ39g=?Z3~}.Siaaaaaaaaaaaaaaaaaaaaaaaaa1OKK۶m|޽ӦMKOOOMM4hٳnݺ_:iU'''vڑH$11ݻw6,...Wԩ_>F%3gG!2駟OJJի5 oN^^Jk׮;wrb6mH>`K~'EEETCרQcQN,X@LRꫯ|׮] t|o6vؚ5kvЁQfΜRҥ q_qR^V-LzׯQIΝ{qljwR'-bK9yy|޽9V}0*:qH:99モo믗N:Fʑ:lfͦM;C999/lm۶)࿣ WwA@믿XYٳg3o[l;tIF?,}buzǎYb)߾}{Ν裏FxjəO<򸸸^{/R1޽{98LGnzݺu!+]^x!7ұ \{,?XoGUz.WeҤI@oCM+zȑ# P05 znYfW_}2W}/<5W\igϞ5jԊ+bͷrRTT$cƍ֭r4lؐ_z%,}ǭZ:/6SL)qWKJJڵkR_h+%\꡸٫W^5N;mQ:7իGAx_j.T@'lU]r'ZlYA5j(oФI{ϭ%UY=z[-k1ω8e.'Ov!ΐ >k!usLH233c=۷oRluQ/c] ELV_'᳆ vر]v7oht\p'AsE\K"'=,)σ_~Yyg{kvsE5m#K\~}|VV"5 ";;[+Rq`Ɍ=3~42`'SN9(L)Vڠe˖^y啑cá' )4` .)k&_oQ^݃<,_\@ R^K9ɣuw^w4?wygx8sN |Æ Zso۶-,[o2aڠL 8Ptꩧ VYb *X'qqѕfCa6<ʪv42W1T8khxD_psj뮻ꫯugΜ>va\Yf{Ϥ(aI>vZ׳3s't.?^. 6L IG$YX]Ido{#Li~Wգv,UW]&wMʉIL4M.a\'''Թ婧zl х%2Fj6|2ܜiGІX+ڳyIlDnKݲk0ZX!Henbϟ/ӵaR'4Zx[ZȈDcn?GӾRpg$yyyRNΝ|F*7"KG '[ӓO>8Xb̒@t_gްv!뗚ӧO 1ѩTӑVA}.at_~hdvCNՇ磻={ЬgiZhNceΠD@f͒{LJb<F>G@T+Ug2/Q9sH!d_~\BH]X 7+BtvMĄ?<3Rx)M ܨj wC#2Gn&j'gQ y)SHŰI8sq$9a\WR9+Jqq1\sbBBɰcRcII97Lu5zU6jՉ(nj#>s.2ҠAϽ`{zwB߿~J]Xp8+";ȿ+CN QȌ3'h[B)RH6{iy7O _S$fuQA qySpG혚H4Kv94%%%Ph@?}'?UXtG`=NO?l%#5 }h1M4 IMM堧OՎ%x2{*=}&ܰaѣ7ocNgZjqC \Hhbkժxh U;"|N\X5=NHHpΐ^!/[L6t~˖-Rkx_qXAiC4ncN܎b9ӥ%P\KSSBXv'ތ"wW(K λgnj/3 [gy^1kH1kW:ȸ9vf9!!+J`Zu"_xQ cլ HWGd}jjII QZD}y睷yf)c$%l#|_LO  O&GWHXuMٸ"u:@q3qɶիդ޽NޢE =y@;R/Zj[=..Gw„ }XƍU?X0ڵk@5k~3|p>Yèo߾VQWޠA> stream xzitǙ`U5qqh ^!7rzݲz>+IoJ3%5էVĪ} zeVְ§ %[qn嵔q]y!nQ$$4H Bϋ4#ãI+U&fk#I/iMM^OB) %`x01['}uopEvOH01ϒD<I[$@"=-B`7S죽Mv/mc3L؆${"Irz56&::$#8jh, kIA`K[(%26PT ]JKx@Ri\K n 9=QB-މT*iIĔ>h{{R _4)MR锄AJ~xNR@OO@R҈qI+A0eN♸AtV3 e+O)I]pM{e~`rbJ%Ŕ/%H$y\R$MP*H#"Y M1.D&g%<H: (PjM M t)6(Z]z %:⵾57A^>!t\TLK" ^ 2O%VL[?`TwLA qWj YB:t{d H=t@CefBf&d0;KĄpmB, :̪ٗSqF\ldϰAȚIfքq./3|I,m͵>aۺ&zx"T N6R=c#B[D?Koʫ8k;IY5w$!(R.A8A!(j2N--9cY}%ی0p{Y[h0^'maOVPrECڵ. bHD]H[0ArHN@SA83%}"0s-$ kff4!$'b<-H47TZPU=8:"!vNH|VwNJĴ(!°*gOÑw͕0QήuN=j{5hZEqh;YC*8n#wWq-.Ј\`rp^kEbk4Wn 7X)˧vw: />R4ܿ1wVۑ;;;K-PDʫ{$@2Ai-ȭs31a^x` ߂j9&!l>asvdm~ oEMD,X–"Ă߲oKg`ļ-!~Hu},6V6y6pN$-F",o߲g{QBd8^VK-1C1YVǑ4}d?$/*.85LH,%HUT:!shxG>ԇF#Ѧpl<\lƦ+1mM;jl@WjKPH梺.$߅0Jf*WE6%j#?s\3}Fk1+xCql,'vE$H\1!{,f!KV[/ySq,}_ԩ,"> ~OṇLoKWtܤvF?5uף63Q [czmbQ*ta6hP .Qo YS8o>ܶ8XZ.m-=nݩ:7x`ptS{OM,L!.dEX'Wj=˲4bZ8 )jpUYy9qb$.^R's?%PoMTĘR*Z7 @}ǃL5e`J,O-ZZT4.B󓼔W6 B K;a,'/y]#xKs_ϭ{d^]%E QU [r 8)H51 SH8TxF3N=)C|̝%C gc/<~c! B`rQ Qhӂ۱W(Ѓ#PGCȋ*QOlE8yXT<EsF0X?㝑Ƣ40=M;T3'@\ȇp !\^}+9Jr4j*{r*r#a*d~Q=u| Ě;=LMI'"屲hlv_^/sKcs F7:>|s5h<ഝ5I"4f(X *d$Xt|\wj:$늣w݇!7f}T`zG_8IF{F~8P2 [Y=k`nPkSAӛװ8Ve9ňi?cLem3mL51R9'@je-yCۻg[O(˫G (2x$0nDF7k1{UF Pv *8=BHk?BV AV{? NLPb:%:N> CJ4`4jL%,B2L1L%Ø&ܕ6k9+tp=4joDh(Z8'׃r002 7豞F"[ DdBC~h3V͕fa"d"z ޲Bfۓh|iWFbK_⹁;fr_Dk`ukiy'wkkr+5`j:lt?{b3~DiNsٍps8eq9FEr#sv#O|~1<;C㟝o>;d'g>}#?Cf'`~|=˪Z>=-a84dG"8M)(9p69n-7674V" sL,bG}QkgFKNMYK#$lؑb8͜oo8lac b3-L9\y%O (9~ummuʆ098~ٓG9\] Oc:z䇑 ghIG6'`|ɘ'P >$ ŝspgB.Zh"J$XMDV9! 1Y ]fuZd¦kD!wsH=O\={r/X>h$ғ 8 @o4O}DWјtt?7jx vYK,+ZoKJ"~RFU4\E 1 #y:xC5̄`{p*Ͻq{xoe'ù6BPa+c.p$/ )bmGMzjVXh\-dµv`7yZkjAzU?V\-;#7ksߧvo{lRմ.g"!Bq4ccmacX!MǴ.5it4ppC$Uj~-5"ѭHC:^/+)W @mGrZ>؋L;!"]J)*W-f3Wz}`swFwΖʁ^ԽEf_n\2]g\8r4 Na6yPޥ?;VWm^ ;#Kܡto__ <{}fgJ_WfI>jPzY@t`Xu!VqU "gc*/!cF # W=Rէ]W^yŊqc RVp9ad~R$ xEt-"-Lk?l2Dpypxs [ /=bj ;a&Vi_} z 1WQj([=tB6U\_֜ٿ0v#p}ep ]~_Q!mx9Tu7Z6m'It̀f4DQ+nC:҆Z= ZC m!ax4es< o5. C˰[V!gV1ڏF<|h̢6O{v%?Aeht;hf7@K&'*C: pM (#lfa aL30ئD.ϟ4Qd{RgX-ym @ݺ e?`[h[_aRQYTҝMR]UҌ.d;a4Y zN2܍+nZ!$ٺG@}-4<$' 8xl7ৃ ^XzI!FV.v'w~~Jws0fg,[M`1d %ץKKt0b( |`Rݟl5mErjOyUe%_I ğSaKFF3վWHPOC ? endstream endobj 8 0 obj 8337 endobj 9 0 obj <> endobj 10 0 obj <> stream x]n0E .E !* ~Ā}N?@hG@, ߗw]Hΐ璜|{~ı=Y6c)\!Fu};/#fT{|p= qi6LJzZw)| .4}kfUdupN|mo5R|t??Sɿ&J;v65mp ٪(j, seŒӹhbJ)(6ڊJhǸqCW//M*kjSc_]0 zO~+q[o&4O+@M~M顂g[o,| =8܍0P§CN$C~~CR!8#& ~K~_v%s_.w lɿ5oђ%ƒ^^.6zO˨cjiPtH?=< x endstream endobj 11 0 obj <> endobj 12 0 obj <> endobj 13 0 obj << /Font 12 0 R /XObject<> /ProcSet[/PDF/Text/ImageC/ImageI/ImageB] >> endobj 1 0 obj <> endobj 14 0 obj <> endobj 15 0 obj < /Dest[1 0 R/XYZ 0 841.918 0]/Parent 14 0 R>> endobj 6 0 obj <> endobj 16 0 obj <> endobj 17 0 obj < /Producer /CreationDate(D:20241025154700+03'00')>> endobj xref 0 18 0000000000 65535 f 0000036636 00000 n 0000000019 00000 n 0000022189 00000 n 0000022211 00000 n 0000026906 00000 n 0000036948 00000 n 0000026927 00000 n 0000035349 00000 n 0000035370 00000 n 0000035566 00000 n 0000036117 00000 n 0000036503 00000 n 0000036536 00000 n 0000036767 00000 n 0000036823 00000 n 0000037022 00000 n 0000037158 00000 n trailer < <7C9F140C4F5C44AF548652C76994B284> ] /DocChecksum /8DF68CF6E8C16108340C754E9E575311 >> startxref 37329 %%EOF hardinfo2-hardinfo2-1331e88/tools/LICENSES/boltSVG.pdf000066400000000000000000001115431474767047500221300ustar00rootroot00000000000000%PDF-1.7 %äüöß 2 0 obj <> stream xˮ%9%6_q d|*+5AA-'ŵģ" !*Q̷IHz>\yܳ~˨^Gz?z\|4x8~ ī^M?yws_v~B_jCM]}ԒVF.w5δ< B_W#Z(9<K\ NZp0z ([>\9!U"tp0/feqbrM/ȫSms#5$:WݣZp)q/LjMnVi ̚'95>c /,0\.B1C liFX<4@#^`5sP`AĄu"l^6ޜ͹y"cL58=|ƔN Y'3uҸ mBN.bjAJ92! )s{IakF/ LMgs{Q-DMB獬xXjGjc!|Y`k ļ܋)ᾆbvJE[L@m/PL>+@weJ8$E\\tfe.fl-@2#͟;\S }Ve֮VJG+}_xjŻKv؊rՉ{)êǥ,]tʒZ5}@,[DEމȋ7$@U#@I/0)˃H5Xl!*J,0D0ݜ6[eF=Sǖwg҇7 L}-:`ei4K]kHSUA28Fh} w,K].u ISr-^Y2?fO2Ꜳ$xjvŁ&U%M};Dz@54{8x4&cs_S9f c医LҭI-#-&9-Y`M9c/FeAք;m$xş5tI.S@S9 i\F}oՇNR~&^#03>=RQu#^_"Xn#/lFѓg(K-O0a;ϰeႀrVAA0 .E^lzal&XP |]c<_j*/}w)A.j}jz."&JvvT&& jp^\/vv*]ޫ kk)+XG D g Ӭ;䚎j7 䕶^Sʩu煅nr֊kCMRS:옳6ӲLդYaKb,nk:ܳm|X([5[_ƩEN3 L k>.SMSc*`kId^۶6 M5淌Di sYDT5Ƿ̀xDZ*ZװfO14,6p30NW뢛9NrwcJ B_O6BY57ŵ>dXJbb` ] >}~̧){ 숗w.ׁsoS4j8%8 ~8,uƔ[Ęۉ]-Of `rN;ؠlCv 8w63oy||7ދh spdy?C}܁ņm.p&R.{8)1|m(OFs~'5aڵ .u8%k|9xe79Fx$I ;buN |k|q"||| -~/UDԣDՉ>Ymf>A8 |S͓m4۷ g$sg" Y0,jTs6epokmKX/oNOőY^/[_Gzp+}̿^c*Y¶cj%x~,^}%ٯ'_/}gvBeѦ2%n'yt]?g N5_:\z)c c#x=ӍhB uaAw7a'O~ (Bjx:N7QNԇ?/Dڲ":~heDٽ&+a`X%"a \N#Tsq0[m?41{ErW=Xc&pOwz[u^F1ūOhI ={k)|<Nξi&N0ǚ?oc95-1nˤ)Ge)Pn\F,`"n4TB8 X^ .Y XJ0Ik9T xi6]/c?;KŮT6Mo7 <-na Ҹ* .7Oٸq-quNX[;J d9KpњM|ur].7I7fYSqY2.\Et.Lp 37ДCeȚsϹ Zw\B.1p˿ՇQѕؕÓ+'#W]6b]\/w 1j:XTrp+lwa`J[>"2lQ=Wd|u L+{5sS<ۗka79/{!_iH~XkP#BfU%V0rg>V\u k{m sq%kݾt"N3nC9q]Q9] e'eP#o\# w\ݹu~0 aFLޙ0{2K&9coU ?춠7Vk?d+]q>:T6~9Doӛ0?m^[ECFg'yz  $`I4h9 -VÊ1o˃DMm Ls LXpmΞ #_h 3 p^4IՖm'1`BxލOBoB )/.~|Kpγ`l=Zŀc&t[0‰B~#@Jhb}` `lyvТץ1:CIj#LQ:A9vEAlcn3sg"-~NxhQp O\j VscB^iY`X7& ,1y aHXxd`/nD'aGXp> t۞^ 0Aei;c T1=ui}3&[WS dglf$Y܄6vKp#rfWrJfW xY[h p7\EK\˵u64qTۺgϭkHP ׯ7\;kw=a7H? ӲX>꿽\/i__Rbk姝i~کv꧝iv_^fD=\3p593 VwrFbX@mxyrue3TAU<BZ5r <,(`líf"hvrMx>7 XG D*G2pneys>?וݱlRlW=&l jw&B\}˨&׍L2,fdiFE>6Tt}c@X&UО͂O'G<:fٛ3.؟3.yg`}ơN ࠔ2Cd~'-{/J^1 :eG7q,2gP}1"] 9d1x|0'̋zr>£ ɰF.7Vh";ЖZARLrb1N0[hoYQ*;aY#f\{ A4( v[!F֜{!cﰳiˁʼnrdۂuI4ڼlۂm3wob;d\5Scb q3E~';_kRTCB ~cn8&sd+j+?84έ;oWţWtB0XU9!U!mMf`ޯtƈ&;ۇ.*&DzbvA10(cCH{ޔ[´('K9> qH#LbX}9:j] qw?|!FW#XO4H9 y}mWlIcCGD~nmAcL!EFwRu q<y^$2bpv !C9'_]T<e *b6}.*դCt!bcbcCsBB d2l2lBpH;F4m*qlK\03_sY.F;E[!ncb5"CH?[m%ΥuHĂ=T}_Ts)tqNr${rOy֘|1|&3&`S >}yMlH{Cpc{Au;)clBn|މ[dȭ c4k"d 5RdlkmOhbMK˜&zeL6;1f7(#?Hc+Gm@Bj),Gy6gMAc~Ti0.Ґaok"Zv, ƒ"8E9!s0?E [|)ofo<Ki}zJK- >p'n E҉"ӳO>!!&j1F 17F 17V<ԗ1k1s֐&!!Q&$9! _4]UEL;f[M01?>dɛm>6}ғ ƂY̐-<=ҋm¹Hn\ە2s Jַ+eJ+e`Ε2Rf\뛕2Rȅ[aJ>̨m}Rlnp}Rvmr9]&mNi'6D&>Tơ<_QB@+jx<-6Q gk m^ⴿD.^m +ZVfF",~H['Co8m{$]a%bD8Qso ep%Ŕ} "oébq&D{`WbhL̺EN;>YU0_α{qh!Z{]G(SL:HQxNS䞖gn{n= LpWUqvOW? :FU(G+ί@`4fB} ř4KL|}Zw~ + {HBuiy.5U|i7 s;k9q!l ]}tc_ 6ƀ؃Đڛ`a ^'VgH!^.iK ){M#|ĦA abDpW^6Sm6]l6]/t4~pjZZutPЇǃ-aƹWC~i~d%8"m!J&5^T Q[8 `fD‹ye w֔q{6v}_وEwʅS-..[H~-[vվ1x@aANj+0׫>~'oA\5 HF̬5Nc@y~ژϗxLݛbL+0,f{fgGIq }{,uzD[7x:UZ<ƖeE4}#֙Ga۟뻰QyoD65U~[#R[צ눞Xu8pUg5ܞ[Nߞ[WalSoeTY׍М25+.o^ov)r?|-S!on߭7Eضf3kѢI7%7c{Dn|}n"n7;M;A9 &-\ pBbK1'X&ܜpQ2 Wy6|-Ō7,876QӬ.#k/ V}60pwCG̿9̝;3ݪĽu)P|1=_ x릱`~?f,pmbi^!1j/1&"De\k\x:J˼R$zwFAbz4U6{uG\4띛"}$!;̼q.(SF_g#$7R Vy\| lSz (gEixE7]мX;{poc^~y@}jiwA P{ 4 8q`HhH_ZGl26YlǨ\ s 7t./j b>,+(& 0_~ƚ?nb `y[/ab|ؾ* x2({dV] '1QҒyimV`[(*esfxg^`@Fc&#j*y5"V3wg#bKDm[/u_ۍ*asZ1ʙDc^a;ʭ[7D6wseV1Gユsm#A3Hv҉"Y>O{i6v7Cgw7?] W|?ެ>7,?as py}qmf݄ItNFR{B\';swAbH L*)H_N4ljv,5w ħpfL>`:(ν^c|BM57,a9f)Ss#MÚ7~>L}iKĻH߮ԍ@ 2Obz})(Z$fAJjYru|> ؗV URmR3#RtWvY&뒐Mp'#3X-DU_Zi!ClC)~XA(%7Az1ՍϺ4~5nz'6CQ,F&W0Hvٰ+~|A=Koy]ox1g#-)/GIw G [ bds( J% ?)瘣f};ZShC@"lVVق"\ajic 'X@.( Z: ]`A:\ U j+ U@spڽ!*`,vOipPz ],`&]!%dI+=u ʆXobKl&a S [P06J6`Nl}Kf p(5 m``2Z[#|S-"-݊rv\tvA ފF3@=^7ŏQ驏^=I1~zӓ{K$[D$T ln$=+ !zP!'i orm cԵ@o(lj\^kL1sχ,kr47ȎUb;]܉t"x՗T~1;ǂhe fsZX7n޷ j@{ܭ<n [ޠnooo#3VYN8tyGhaT7lBPUZk@ٕsKa2`b pH_yeMTimM t}e@4F>Lua,D-{'n.y^ o R9HM{ѧqі#j!&:¥D -wi3I_)K:!g3{8Z%F,1îC V"_1Lגxq.RD γu&5ۖ6->ϟH/ʗQs" ]ΰqkQ > v:q,u>~B7^L>zPjc `b^0?mc+E*~.2Ǒis!gx-uh<۽yGݛ'>rČ,gwpK>OD_Ǚc8d]\cp,F'BӍta$NLк|ǏZ;Z x7b~. b$ &@7hp_w:6>AJ[ҍކPt!;%<jOع1&~!.G3o!\>QV!.S>|~|!yZ^N VW<ŵXuֽs RVb;Wˆ8o*et&QV R1;af4 7% RV&`d }~6dUp/ |8)mAqb9 /da,GŻU(Ft H-{` ^s;δ {ɝ阞 >o[ oX:<dsHAC s.,G\ `h#%a EG "\i R۽Ducd^@GQ0xPj|)֛A6 Ͷfs$3k0LU1J1v~Ꝟ31!;.Klg8&dLݑp`zp],~8=o҅3>rnq=\C]8a\B 9q]K9]wabΤ3v|~Fi~Fhfw̺ٞVG_sisa>_^N đL e)t=k"gş^u04=|0bj# M;cSoě ooh־KԀb,0Ce.^z 㬳N)$:{ZF8,v4n+Y _s$TEo0UJ?Y}yeR0;]VfKW[e^Y>.팑/X(cA;b`JT #%aw{z; 7u%WHyEynpiWT11V]lud ~a&m'>: b^ ^w#$g90юEr!;ać-u>;Ocdh߁ 83: Ba=lWlhڙֲK"R90 \bsKa^!oSb[_.m >G kMN]S]N|Wm>=P~>}]}: l< yUs#+yS7P81Yxk{j?`1 Kw֏j&zֱ?99n.FB/[X|DܔF>QeCuw1~IfYflk20䪼rɷ_9++t1^n ߨP.&I'/s\ `-u K8(dd!}VT, p~Kv}VPƢqplDyjt**:a2໽Sk 6#pч[7>Me0ۧ%" |dIn<$UE;`esee ¢+'0$f[y,.-vt W,p-ž7t@ (M/3^pð=D }c^ 6ÉiGS=re1v#<{t0J`vvۍ֑#ϲ az']];C%U-`|b)$ yTv$tI# VS3ɘ--?yVTe 8:ڕu2̵G*X 1;]<$8u*XTrQ &#F F1vR&{ `'vͧNŰU58q|UNxZcHA0=,k./|3qjͧo!ph>ht&2C-Z:/W-v;RVL}1-7^ A2\&W}saa1ț *)mSX/h(}nP2rM :%nmJJJo1>[ނϦ=։dp )3Li:H|XaRs>=R6Gv%ǰ+;M;I./I:/.[N^A_yw-3 ?sWãCvA/ 5-»ƞv0g1:iB.a%6SSZTf6#g^s%XvxҞ` κN?~\di8S|}lLޥ k/*`V~w&?a6❭nCłZsά1Bۢ5=?c &9΂r`oz.]L=0b`cR7ipLoyD8Va|_'lmWQ_Jo4XÇj f6yC !0d,K{,Ire-b\% U>n˺ ET? `iZ-{32`lڭ !)kL/핆 1I`:r+C$d T;_g8+86+1\pg}\F`2ѧ\bOcqI%>g0XfxЊ;ƒlad6)~o!:H%$\lP2wk'!%Z@`wƍs 4~1a'UDg+X(+d%PV}aIZ>kᆱU(4&׳XR.6wPm Trf7FEBOaB̴6ee8߷|صpZHr޻`Hb^֫x.8:7cr9ߖ6o-9J-'e$R05n]Ev18[bcz*$A U9 4B]d%R2kTXܧ3V2DltMbC@lr:\Xbo+rA%4T@U*1QB;R!v&ϐ[t< \'0Lu:*Ck<H.Gv8RHuS dVthLM&lrh^sZEZpya2 Mh禮0&TKqۉyTA۩ 媞$Ty MEū.=J2 2D_n,%*G rJ)[N|ڃJ%TңKAw,Vc:tTrл+Wq}}q"~a:\uK`aAj{Ѳc#'~b:06;]coϭ,.^n#5C `HKpls&cơ:۟++8 I :3Җl )`~VLuG -xQ_f{~D:o|UcS&b5m: pS۞Ӧ\m/콩Sm+Ƥ\ZQpځ7y@6]GB68YAaNpn~ڽH?9ؖuDLD ޒxs } k1*\x9FZCާ7>(7D`0Lg1rU+%>N2&9|M;7gv2ܰ' jГgޥ\]<ˆ:mI.Sg\'LwQ\lnΞ&saI`v˸x6]^ۖcb/l[+4A$v7| PP5.nz"C m`o.b*<":SO\95>lg~.[j}?`.I+)UڒUJmO)уkH6\G;ҭ2I XAcŨ@hߝ趪N:=С7CsjA̡6|ɖSmbyo7ԋ*"G/+cc8=, Mm\]EMIog{}tڣpq۴>M)k#sS\<}6"Ze_]KSp6Zàc=+]%CoLk\ĬZ{6IqgÏT~oy}ݽ|k\-|eX)#K[$@\20:x7Hpqw\@GD kA r s X[ {-}bw o@m )W;}g!좑.5laV0> E}.iW+tdX=Js&fgL AՇM:#l>Upŕ䰻N7U~uvCROqNX}iIBC=E ARc$ ]qM1[߷$i}R4EjnUPV|ˆU}]1,wg5̱3V)9{t"h[z|=5~ d -)kE}Տ>wE4rPC}" Go{x IJ- ҰKPJnsx:w5?n)F" &sϧ'`7k٪rħN@3Wuj7N G2F/'fX\LA/-q>#Sܰ|Pu<« RH;m E~X|SC֐qtq75nn՝1(2f.E 0Ѣp0cfaBtd{3BJ5n&ȓB2Pt [gT-$SJuFa3^|a2uO2Ş /Tcf{H[w ]Lœ,p)`x>6=[hs0Wi<ԓP=~2☕IHifD&r QpH πol}C uxg'c%Gb*V7 ddv>6?S 6y ]llOSvQhDR@tw@vc,H5T*A>,- #_b,l*wNg+@q 6 ؋4+`V"`ϢxfY ƿb 31B܌.6-.@*2>qW z@ ]V7\ 1*>It]X(Wn$;LG6R›"zhUWhe:ăh| hwV3O9ɫۜ#pOs&[ .()ewoet2HlwlAPrMuEZzQz0@NzQڌaFy?=^(d`͋@2L#{Y9X$,ʨaZ61X)ME $֥\SKb֘zKtB^j=ˏXj=~`w,,tݎJK-[J볾[i=~heg+CDa y]s=b=ZI{=f6] &º>zFr'֝X߂{90Za/܆[nZ)ʍOޱp#)Εەϕu+sroIs3.ox>Wun?S*߬}J<ܷlf˻5!0xYED#L@tE8F7ۧ)"+I>EaY~ɬZcJpFݙ(K{:7n #3 ;¾o[t#s,Y$K[W848hBT3qvNjYѤ 5ھҮq96h<-M9P#33*N8g 7==yfJ= 7p? [^3+(D?rN䀹궏$CV얳7=` ?ph /`1i p(vBk4-6_VnrQ01j([;~ۼ'\5/2LYt'scM2wОVAIuP˘jx#T7&Ә-I]|;uC"S.Fq+vs(YPxLj" j,9ݺ6h"āI {隯rIB͚PDv,u1Oniz:K L%;v2_|LG_Cމ$j.;잣FT.RT٧A W~n0kn?ߠ >6Ubkݹel8S8}(m!#1'$aIHhAosvl:ى`9^6wGćޏ\1a#D' t| +TvC_pS a Vin%}溄ALz l? hдz P|{x5鈇wŴR]DFڈt¨8l;P(UvԪS`R&atL䠪Uۤ̚TO u`B?PXPWúXUn?C;ZiU oFXvӼW]/t0h.\i0lg\Ӹ`(zs#)5f x;@gm\ߵu˚hX*$Ebc)(:.k0/ihg|[R!' @x|%Q 2'F-F~y&pJ|֦&'y6@͌9r6`s  ffg%@(gk|)FUlʊI3 Eu߀@޼;cЙZ`=R3ާsp"Tqg42@A@oSu \1en~Qt.kTV,Q팇f2ujYcl@l;t0ե`(k->eh=Z/Mc&6FߔCPTԊQ֔NT͋i+תTe1lM7 ^L .4lL5:8~~= ïK=ٗ.$zY~:'\Ӆ+gu~?=|%H  e@f2v<~GMEQ~y{մ_VK:r,^/g3sq`paVGO˻V6W*tM~xsW߹:Nq+BF+M Ouq%KXQ?A1 endstream endobj 3 0 obj 21958 endobj 4 0 obj <> stream x{W_bp !ɥ\44eLVSD"dMK.4Lk3teht/D.S)|Yoϭ39g=?Z3~}.Siaaaaaaaaaaaaaaaaaaaaaaaaa1OKK۶m|޽ӦMKOOOMM4hٳnݺ_:iU'''vڑH$11ݻw6,...Wԩ_>F%3gG!2駟OJJի5 oN^^Jk׮;wrb6mH>`K~'EEETCרQcQN,X@LRꫯ|׮] t|o6vؚ5kvЁQfΜRҥ q_qR^V-LzׯQIΝ{qljwR'-bK9yy|޽9V}0*:qH:99モo믗N:Fʑ:lfͦM;C999/lm۶)࿣ WwA@믿XYٳg3o[l;tIF?,}buzǎYb)߾}{Ν裏FxjəO<򸸸^{/R1޽{98LGnzݺu!+]^x!7ұ \{,?XoGUz.WeҤI@oCM+zȑ# P05 znYfW_}2W}/<5W\igϞ5jԊ+bͷrRTT$cƍ֭r4lؐ_z%,}ǭZ:/6SL)qWKJJڵkR_h+%\꡸٫W^5N;mQ:7իGAx_j.T@'lU]r'ZlYA5j(oФI{ϭ%UY=z[-k1ω8e.'Ov!ΐ >k!usLH233c=۷oRluQ/c] ELV_'᳆ vر]v7oht\p'AsE\K"'=,)σ_~Yyg{kvsE5m#K\~}|VV"5 ";;[+Rq`Ɍ=3~42`'SN9(L)Vڠe˖^y啑cá' )4` .)k&_oQ^݃<,_\@ R^K9ɣuw^w4?wygx8sN |Æ Zso۶-,[o2aڠL 8Ptꩧ VYb *X'qqѕfCa6<ʪv42W1T8khxD_psj뮻ꫯugΜ>va\Yf{Ϥ(aI>vZ׳3s't.?^. 6L IG$YX]Ido{#Li~Wգv,UW]&wMʉIL4M.a\'''Թ婧zl х%2Fj6|2ܜiGІX+ڳyIlDnKݲk0ZX!Henbϟ/ӵaR'4Zx[ZȈDcn?GӾRpg$yyyRNΝ|F*7"KG '[ӓO>8Xb̒@t_gްv!뗚ӧO 1ѩTӑVA}.at_~hdvCNՇ磻={ЬgiZhNceΠD@f͒{LJb<F>G@T+Ug2/Q9sH!d_~\BH]X 7+BtvMĄ?<3Rx)M ܨj wC#2Gn&j'gQ y)SHŰI8sq$9a\WR9+Jqq1\sbBBɰcRcII97Lu5zU6jՉ(nj#>s.2ҠAϽ`{zwB߿~J]Xp8+";ȿ+CN QȌ3'h[B)RH6{iy7O _S$fuQA qySpG혚H4Kv94%%%Ph@?}'?UXtG`=NO?l%#5 }h1M4 IMM堧OՎ%x2{*=}&ܰaѣ7ocNgZjqC \Hhbkժxh U;"|N\X5=NHHpΐ^!/[L6t~˖-Rkx_qXAiC4ncN܎b9ӥ%P\KSSBXv'ތ"wW(K λgnj/3 [gy^1kH1kW:ȸ9vf9!!+J`Zu"_xQ cլ HWGd}jjII QZD}y睷yf)c$%l#|_LO  O&GWHXuMٸ"u:@q3qɶիդ޽NޢE =y@;R/Zj[=..Gw„ }XƍU?X0ڵk@5k~3|p>Yèo߾VQWޠA> stream xzYt[Ǖ`U=ľ;>\ B%""eEvY$%Z-˱ӧ㸽uLı-93'G8q$9=tѤ;6U${̙3ӄޭ[u*h2 CÙc?z'Bo#m'/7Wkfd5^Fa2-e|?C#{=8؃>BSiA~ %~HJjIUipJ"׵H&&q/bXV!IHHZ WBJ$%{RKdIa2I- A TW!@FOi';Ø(T*$qAɑL$g2 IAF \dDķWܓd CW ڐN Y8.%Htb~?%6.gIן(L1X:$CrBB) uSd?}R J3YxMLZtZ -Lސ 2 ~YMeF>!&\֊6y La򭊶v)j4 Vt 9%]̴J dN,5- /+0 XY&DŽcdJPP*lKK)qVRݻN0Ep*k%%IH u90DL,%a'WџR˰ð/´<dړI:N]YY"+)W0l!E}(%Ą."\B{Ȋ(HP d A顠 Zbvr eU e]]j$wi([@׿ďE!,;J5Ε5B9rP_Er WG"G }W|*A>;63 1K-' SIuA\S3D?GooqķSjjhOAPRF֨pBBq~භ#,Km7d n?8KfC ]k +T0 @[BX!Tur 1$.d ; AÛ v9% V0%$}28u9, @e=Ic )U|WU7VA[d3Ď1Oc4YI%5$UV%3>hyNX/v';h%*@6rL!fԷP J$]] as^.͠-+CwtQ[WTH5-TX rt /e+$Z]kkyogn[po-pn9qaɕL l=.ݶnt׿n4q۹4#6?i Q>64,Ìv&2π h Ytj"OTq}\[jI:ٵhZ]x&GUD=8`' H£`'pcb).msȂ-&g7:/^hSkooOw$z}ez!6\۽{^1i"ro<=}O[;Ukx xp3ҹ^e@3/U&ohSsT:AO=SvɎtrwA=}sv5~!z˳ \UO^=|%~j!&w0"Z# ^/LAX$A.aD`A*NuDŽpjq8 ènZ&A XcsZh,qDObvDy /T5Gŋ[WU+JKpd@{a:+²:+duVFWX&\])w]%jm-G7էnliKHq8MvkSj=ٲZ*4 xwk$vj@x{8xѫ7ժc,hnI$Ϟ?PHTsH n:OE-fBTjB.=PQ!ZxSQ>ܪ PT*R?Wxƙ:C$S?X2}o\|qx#OOX݂튽㟂P Ƿ TFT(C9Np}8%Yyt:~XqfW7piPU$>4S8;tƃě8^gt>i 5|^h * Q$̞0r;- *jJpq8vӡ<;p`t;ڎ%L΂~gP$^a̙U (*XR|ˆmjYQ ++x+܌Jovy݄We** *@b\(aX5b3Z5V+Y& ~>xs_!<=@K љƺU*4&ˤ2%AjXdկ?~/=|CW_'^羸4K,/ fTJeyZ쥚\=V9UV)'3Z8(o4 o4ut gOxvվP4]p xn:3E[iZúm"M=;DB<Ӂp`Vyv:TPKstP{r4&v_ CqNc:?idkzϳhpa$gլ/|WM Xln3A8Fv\:1Q,50}->y'&xٙpuN iszmՉ{b(#~ +]GN~Z'zWK\NJe24j{rzuEYJ (?xl{ubKN'dt\x3Ѳx鏖w5vy..pw$:A=y@`ʌU0"=j"TF^$ZmU4W15555G! B`burCo 3`+/=D?An,UH8F(z`|Xu* u@?JV7Vh~O5l+2'wU7-o"éX Jv6KE~_"d ="xX0nDFw~ɽ1EK |oǝj=Z2GX:4l,v]>hό99z?(qP *Tni$ӘXǃ2D1%x:"NO'{=Vm7?8!ګ[wt^S%̨6^O  f?XY){ :]|n0lFK3a t  h]4TI?^/~wgê}@M+ 8n*y}'d+"G-Wv^I;Re'Z_=y}}߆|םS+ n %ZP#w{8«&("XXBR=*YoT%EvAz.SS=vEi-RUJ=Ხvm8pb1=7?bbOˎjCC{~ؚ9%V>u{`u}FJ O|UXwN<*/SΉ2i_>$T7X/ھ*4ta,*늍hvcDA$ĀA aȫD2zue֙2YfvE~,׃_y==maSrN>#qrޖ5̀.8Dzb|h󹣳_L`K+n8n"pqJCfGY [S>w拓OxjWSO]j:GW+5R'l2SpQQu<@=Ï\ӏՏ;=w^~ɽ(&H@[|q7c2 8Cd=-ST삅Ռj s+Ghġ~l[+SB =+*/z|jrZ ;Pp$ّ sIM>@s2 PO_\l6+\pvR#_^kWKv/-βEw|(o`2YfSNCIjBv >ݶ"n5|*i/1KUޭaU^*&--ni2 {iAxV4vGߋ5/=wr'{ArrmN&;BxsqH/⃹Nܑ?W=d;5^&r!4#춸@LشrI2-\b47->ǑxpΉ8/o/A4tVAѦܿAUh[*}8Avm?o`5akh~#^/&O.5sgi֬?P@\~Fqf`!ӹqxO%ӊcιYN y;!cObX'+exVjG U6.(eŠU\NV:*Ȏz6ˣ6u-h[B&RI Ŧ0L.!ﬕk)zL͛SD~Φ{n m]́ijAf]m}ir'6zhsӝ5;p0 .a:o_ޭӃ<[W} ?DzzN+JP}Bpbpx*o"3?۽y_ /?WO `w!؇iNad~ R4(Z`<:Y㦕wvV]`zjfc皺6^^ r:d{7 /t+jjwjEpCQ# KO.|3,dt#x=M<Oy{k,F6G iE-;hnE`\\)@"[JP {xNex^DeTO:Q ل<`o7Fw!c[o4;Ԋ?4‡7)Xw!ۀ(ypB@'M!? C;@{Fi+^EkнM_p> CC#ptyAzY\]>~V.g/9f95&e}g ,xΫmݿ7O5h C 71>o|w7$GA,! ~1C^Q`{ ̡z3Vâj4C #/ԆT`-+p"Z֡1RzVQ`#.t lBͪZdS+iU2 yUg2A^PA7G1t7:C\]O#@C3>G@y -{9hW1@smBuc0:C4fx[0} )QYTMRڝ*s~/d;b;&kaIf)6 A;pRYG!4޺GXuW-<& 8xl7 Pvybqqԫg`|'P?uG-|2 T9؝QbZm3a2L1DGw3ͨ ,ɰ"Y`:W" yeW;W9? [,Ə%,cYI 94za]h/j紇Iж[TQUFSOЌ*w$f6C9Btu*@[?0h{-[Eۯi܁Ҿl%zC{2E;?_xBTVL5K,AmWՓPO endstream endobj 8 0 obj 8316 endobj 9 0 obj <> endobj 10 0 obj <> stream x]ˎ0<|f)E/j@ M9d3;ÒSw:cmΫ cnI#wv8-zj?iO'%˿އa_c~\T59ګe󡏯+x^ktSosЎQ9t>Ku,- gFڃ-y vµ¦W¥ ž5}J,nY/swdkϞs"났Poo_'xb dfv`f᭙f_oR/03T03T/`fA3C 0fp1P"&L3/g3wXǦ=@6c, XX7K5-> endobj 12 0 obj <> endobj 13 0 obj << /Font 12 0 R /XObject<> /ProcSet[/PDF/Text/ImageC/ImageI/ImageB] >> endobj 1 0 obj <> endobj 14 0 obj <> endobj 15 0 obj < /Dest[1 0 R/XYZ 0 841.918 0]/Parent 14 0 R>> endobj 6 0 obj <> endobj 16 0 obj <> endobj 17 0 obj < /Producer /CreationDate(D:20241025154726+03'00')>> endobj xref 0 18 0000000000 65535 f 0000036474 00000 n 0000000019 00000 n 0000022048 00000 n 0000022070 00000 n 0000026765 00000 n 0000036786 00000 n 0000026786 00000 n 0000035187 00000 n 0000035208 00000 n 0000035404 00000 n 0000035955 00000 n 0000036341 00000 n 0000036374 00000 n 0000036605 00000 n 0000036661 00000 n 0000036860 00000 n 0000036996 00000 n trailer < <596A293EA7543BD1CD56FAC41936C564> ] /DocChecksum /B1A5AE38CCB9F1DF6694A5876916B665 >> startxref 37167 %%EOF hardinfo2-hardinfo2-1331e88/tools/LICENSES/camera-photoSVG.pdf000066400000000000000000001215361474767047500235520ustar00rootroot00000000000000%PDF-1.7 %äüöß 2 0 obj <> stream xˎeˑ%6?_no"Ԁ&ёZB!BB~_23̼7!(2l̯O_z>]y~ei?ߏqOw/o@j5Ŀ_4s_C;\j |טՍKwMi`s~j{~wZח"]k _p.j|S/ar/Zt1sYn ;jsov>JD^~h0|*kkz&g^mBܮgRс^ e׸7ZZ-0k3B?X`]Byǀ]`1 j1A^AZ5}XNk՛5'b84>Xc)'kL0uR9S)&0),^/] )l (HmIakE:5mBcn!j"Oۧ,.@pVM?]}.D__X/mq#0/m1e'<֔T/&[26P Okg zic[`k*}},F,p/&4ztQmS@_WB6%6G:yO5.X,Uqpk#[jd#0(+k7fm)d"ZJNo.E4Sl}\} ĥ_tOw.[Z竉gka8}cX+uZDp4%~g /չƖZ!X$8!; r"\\C{dF ZZ_o:/3-YC)W{} .]`/"`kUSokm)ê?A )KJWoj%^}kw XGuZ`UJԢDEFP-mK%)B$8S _MeE%r"W=2OB1rΖ:`ҧ56LL}-:`ehtbIdp> w,K].u ISrmE,\'uNY|ku-M©PKw9H@54{84.cӮ[9w2轥[ [c1g[0Mr[`3L{X惬[.Iݭ}kHR=pYȁeJ2cPx>L*+Ep4m-<{x{FE.F^ٌc$/>Q.xߋ)`\ pwC̲pA@CZKn9P R?ɠP"vp/c ,\RPc\#47,(C>f!1fyRleTߥ`fc;je"(كP9 T~cTр~Mn0_Qc'Y>e z'Ah>`f؜fa%rTۼZlVN;/,)+ʮAL{t1JMc*fVo=m2,0]#L9gFdu:Ö\ g,PdkdDCS]f$A[V0uXTL5M  ys,vA]e&2Ool4j'9~m[;Ǯ\hC&j졛=y԰E'8ȁ^ng;݅%16 |?%ghD Ԓi@ce(9[sf>-k(`Gqe|66`mF_ x} o E]91Įç]+fM3ܬH۩LOp1@ȭ‚dp tגFw_W O1VptL1{tMV4G=2E`o/E2뷴oX!B}OWO N-\RQJb9sڳ)!i@:x٭b?7_b 3n'gbai&D#8X"?/wk=JN'| wbG _ lr!q Lۉ6v6q[8ƨ&s:p67lnkښ骱vk6855/g7;5-0 ! AhS!bH ,my99Uᰍ[IMS) |dShh[Ip ߠbt j ϐA A ǁnsECElkCkkC̴ˍikT-L\xbx>|!oZ$15nlP 1hAs}AN#ff=ocg?}#:l[DhhoΣӁſw88$8<X(6s3rY.x߯9⏋ qOmüӥﶇ˘qy۞sWvqcOrmܠ1#l''Z}?_fO{ {D26Qu.kU̿ --,Z'֗1e ld$1rg"MY0,jTs6gp;okS- ̗߬w7ik,k?-d`J˯WU?}%1>/x?Oϟi^_*oh!]h«kJlN#P}1xL9g.YtcLǃY]ݣTրVk ~^l6ݰF8KwyfuE{͞lW4=ij_յiQ&0cOh/F=~7I&_\) ۗ9&ئX??u垟_9$W_>XٕnЗ+rNlP1DhHI | k8H"F&sM oM4!+U='X7Bv`IQuZ/⿔`LLd\F䥜5fiN.[+99?_{"7M'_|}v$q8nhZSoDj0$n=VZǃ5زcͲGN{"ު6ɗ;@T܌expyFnk5y1jVa# cApG-|B 2d-|]^[\ kMWz;{pt ` Be1kݮ5Lpn1uYCnlpW."q)l8Niõj7AH1aS5X :c>H!^qJ~GۺCsL~]18j1T v8rŸ耛6 0*:n*ڶJذα~e<!~0?31|`Oqd^`l4Dr=ΓdW9wiBU*}|AR‰V2?%I^", m.W_rѸ!{cx1 9)ߺ54.Shƅ p5҅X SmR`אC Ys.cѝˠ %Sq \?8\}]]r5re+-VUqS\sL%g6 .ύCed2N|_seZObLj'~~4w[ y#'>L94v,%\àVx̵ /!ȡVC%b&B!MoT֦6Zݞ0.bL G)3&ۮXf 6Ŝb~hǠ$jiXY?X01kO?㿸ڄj/N;6{ ߸6'Uo\J`:gmm'nsas._a?>ͥ/螿k.5 xN~=ɽ- Ղk I8ؖ3 :b"PN[<\fP> G$Gdz ]ܟZAv`m1eP@U9$admq10vDȵv 0YC{h<  xBq LFswJ FcXH0yi=':I`v ĝf1:Cb6n8Lu31 aνYhjk< \Q^y99X.">i>`d[:n=>lm :ԢMD\4t[HB# CD5b3c^]Q:f(V-Or7G")oEaQLh+/􀗀X ɒuV|bMpz_K'OS)):fk9_<ׂ'}Ifu\ ;om=zܹ5czP>Xg_?,S___^ |qr-e?V?OkZV?տ/ s\F(6P^B#>nhCaQxrjkkĀ_JX:Jܟ+oqAFF p\7"<(,>0u32|$ /o,UUOؽr>Z1h</`p00zh_׍82/`uefpFI1%U6\DA6 /X#vg1>'۞O׸թa2^wj$g 2i|KDp2tϒv\BF\׃2v̖nؔ 0kSVݛhi#4Ej2הRT !)~ yM'.菜~70=6s^[->qKnI닳0$K X x$: & dL*0pF 5gjXI4AM}~[tefAJ?XSΟ"d/U]b+@ˠfZ@C a6ۓ(|C d'ȤmWqsܭ$#:bk3ڨH d1*@=5`$m%;Ln%e/0w] 8f+#zΨg(EOIdqasmuyu»Z<[`# ۬6] L5UkbZkl.lf'k&3ܽԬK``jIY .|o coyb8vBmPڠÇiNM<`#L8FË6⺸9]}ynE7&`lE)T1Z(c-άC8z 2A~'8&P6|͜+>Ks~N:M{;:^9_ D΍u!TM YpYhŐC^) ,bπ 8wXd{)/Q4U*Y͢3=>± `gh1UAFj!緬Z,"X͢ ,$oW̓ .Z %9BIfݢ p]b qE!sF SFp)}dܹMSg Ĝ{^N8 ЪR]?Cg0J 8? D7Tlvw b]1꓃Zj{iH4&UsO(QhtY`&\*+2ul/j+&Oփ_\Ԩc ->ca:k2,3kVpa%$J N]/`!^ I2%Ϳ09`ɻÐbɸt:gl b)HIwe0fzV/wMת-u\g;Jw~ o } E|z<ˋ%py@4P? O@4PFBqzM.WMPfyS <{f)S 6(, 6jS}cZ2T?rF MԀ1'1 g x k0NpYZ`DWkB,kNZExU41w߼|w]u)DۿmLQyozꪑ;߸yCu7گyq-x/G0df IqftǘӾr60oҫĺ tJ(;۩΢h_ة|oD/ueo 1  䢎zxobx#0vu=3Tе뽽! Jlm7s\?,r=Ge]l׮\Om4cy(u7 qoC&Gc!ð;@nUxo9L[howчGlu O SM&yNrwbME 7Ö4XsT'‘1 W'x*!cp'Ýr x:1c K&1U& 6bǴ68,B{`>Lc+Mw8uY3 ʴls|XcUce>@gg'_E&iiƅR=}7U1[OK͗fG02~H׽_/|7e f+:wj6`Ō|g3}̦!#k)kXSrdmE]Cƒ5pj7XkocIWa-`K>C' ?OkZV?Okoh sfK˷<`5F RtJig:+˝5^dy(h!;UD( ?.&~rѽ282}ObTal߼ctv'z`GAe0^PY'>GOkFvk=Pp$g22\**տ,r$Ɵx}:!xgz"YoU`mNQA5.@)pڞٗ=̀C:`c t._;5oj!^8|5jEn+oi2ˣu5Hs-'Nq0ߦ#JNfudmVRB&_0 ˬ\8ns[R_˗e4/ez*Kټk{y GP_Y**,mQ`(@i,eY_(UI9 LĽ_] ޲lVp@H4r+1|?2E]=&PD9/ǜI6I ٳ]ٜHbrłK N-t{s~p?O@5;ƏE-a[U`s'l~.29 }VcĠ*ބce}VS.]py `T`q.h%- a:_Zc_ x3`0#X,L Y(ԂWcI91%`.9qXOWBIN$1 I״O44&) ''i"|Lj+nYs)RLmGV5o| p ;Xeހ\! sa;oQW% 뚃Oݵ9敷b|;79l1-WqY3d,Ƀ%un{һoڢ!g^0-d<9lk$Z;88&N``Ic_T3"R+xq2_YAaOz!Wa^cd A/}/QHk,?,|XiOx +u XC, De:}ؽI/ @,Y%㌰$癬 ^{!pq|tEːaGg"reh>.*OWA^ Ӹh}Wcd\*pMB^A^|*/VU35=~a&!ߪo= v,n;Ə< ci?t-<#0Cv%T0(z.uaL.\}Zĭ$)fyd;s&]QCp(Mn y+@iϿ]wC򦷹 - pFmp`.| l,큹eywXcq .I`r\IB>}:KTōuAͪۦ[t] Ғ͒`GT'1JR9Chޖ!6RpntdK$^R`^gE0MgbOH.%`|ښ kSP^n}Q/ ^IՃȦkk #T,/[(n2~tFpv`g6WΌă]! ?vY|f>?ȼ֩ہitqO@J[NCaqUc`D2ijLUl%5v3tI֞:ƩZZ/ ղF\ogS@bMWRju>(n\n".8q5K`bw6X[c/U{ zC6Q$A&;۳HyiO**\Iˊ/9%/;DrJ@rX~KGZcQU_us4= zoӒ1#q6g^ >`r}~~wbJzwSBThLc䘨e!,o5H5MkmZVIZb6Ku},'%HZpqR$y ~Ad9)YexG%io,KkTgX|J/LXރ$3 `30я9j8hũǩ jk0_)WpcCI75n 5X z14ypa L`-b3VUY'W0[iG7=Dܫe[|xaAdBo`]scl^pK5KQ1Md 2{)7oLM^LG?80B.$0U1Ju`*f7vn@w1z96vt[eT]'Fg\ TzO~[Wݝf+jVT-ǻE\{|eژ 8ZT^*`'=cjK?zztҎ9H{-M㢌(͚1Jx̣(6fZpu QA*{;x&.jr]sad_JR-px_k2~Zōk{;t`B(ǤPRCA*oOkhXHU2@ler}5xd˵g(g>pQbOw1旬He&Of\`E_gcv_:!?/Lo$|uuSµ&'!'k|Lj"9UsL(PuŔσkC_E0`3&d2Gncd " 1t;!$mիG.+/7'6xų,O'HizcKk^Tί1;D[8ȍ {%9~[µ&3d~L)LS~MhcB<Nj1Zf̂mc koR} `rҮj%Q5L:Qyy c`LFl |C†%UU*պ$,B6qd^K\۲opdw{0YXZ{0i/ˁAK)&>#_]aBxL}@&>^S{B |Ʀ> ^`}֦b-\bڳtjӸ1+&Wn];3(v~;Ԋi~Z꧅i~Z# !ӍCoևD 8>?QWīuBV'-3ɿEtmw}1F'ʋo\s-"bJ"Ϛs|+mf&!6TbrG~ pK6T ŸN nJPokCyW^m 3sw#cXQk :q G|Jۧ'<)Ʈ7=9ʪndN\id'=L(e mkI{lJ{6wQލ+1.J'֬ iƮ7ȁH"nQ6y CKnRp"yRbQ5^VL| Z뗂w++c۠j3ݺM[Ղ@ιmuʱXe~K9x{@*a(44l3ӎg ]{S6M2ht4,vS[W94rJ Ecry;8s(]cDZ=x4(y&ˍ5,͘!FS!gԴ,saW(WV91ĴKn(JL%ۊ\|.b2 ^U>,/-#-m1R2y|N沆s_گ::O_Gn|IEv]u%v"g{eQ(j8$)Skȼr٣@6P;FljOv9(0l?yOpm FULQ(Pr:Ɖ46*J3*8v KY΀==;=ӬKy Ovk3ma`P0{Xm="W#ibX.0UeG8y3@’Ms8P%cKe1ֵv^Y=QQCFQQc(Đ-n#t6}>@_ ..Rbr!F6B"l0 w#OgIv*(}˿O<~W0"'͈픕8O$E`p1b'6#{X1DH(1Ђ dt 0UHYOHF@c V0%ۨ̔J%QvbE*, dvF8 lܢIԳDT%DSaTbvAuĈAdzA9 K)xNxe􃸀P׉_'cyFaa[ o/:lW>kk' ]h!'k)'XGh:^A[Д[5 m}m<x44s n2L >}?=ɝCV$G~i~Fi}ץܙUPj_\ř˟p7ԯ Q6RA/{+tct_u 4EQ= @p3V˺lҲ-t MX J߭"5US~'*AI UYTܼvΊM,Le0݃P[VVW.^juCPCj: ?-WN.o (Sn n⛡g!^N8,WQɴ1suSBz[}\.>l >G kMN]S]N|WmmBx+hv'1'8?ǐߗM2n#.![|I==vp$vem3!sQ= _Dgm.YSH\IH_YlLV 7=B/|sHފ1˻=ϩ|cS">$Ldt[TqKpc[Ҳ~Sq8ږôhnC[h-}iZXඛYa+A\Cmx \&W}saKHKNYS|,?eLܤyW/HicX gGG yYun1Ƽ/m*W1 :%mJJJo1Zނ6dpM)3Li:H|Xa+Wrzo9kZ3{$JIp*ݶ` sMzⱹ|л[_sN箆G@, ;E]bx.&X0iK,0p< Ùu1e.;SM~(xqێ u xUE̚T` LN:~"ݪvt|qcō\M|lׄbX8H{%+5t,; O=h#4LjAXAǬVҳrO0t7}X}ؗ*EĈ9F`AK i@ J[lj{ީ3evA~ owrʆOSހ'~v"\j2QVKLT-f2U .>4U) ⯘ꗽ4eaK,?i6PuTs aO5fY lr]ARcL~I{p*S1>tE&Ŕ= 'fJA0,bƠ#-`7+ru0i Můa J't-\2cSxX@ QzhYZٴWp%PGRze!Ҏ``ٲ5KdD|82(8oL{k*;n>5,^ƁFz\}S q9֑h<2Zb*^Qb0f5*PDP@U\LwʦHj,jc=|mr_&F~ֽ][Qן-f׃CCa<1Om"{ oLTKc)F-[}#+_mXc %bDj&z+H+ \ pGPiG%%%ADfpKcKhC P +q|Nn_fzz\FÕ۝°t3rD=|mBƳfW% ^IDxӹ4w%_6OA JıRn2Shrfȓ( j,TPd^A[ 9tۅ,2% qC1K#xxYŲѷ!T wlC7eR)ѳsâwh,S!~{ eZxW_ ;-oa[CCM602fvT茷a:yd%b!:1x(bܧ&$/0޻a-_ބ'=F]g;b^1]y>SPAab@0\ n;_ݦeU2`J]būŽo&75K(l[ڒ yrRvHS[4~'G6!DIW61Pr<Len*XZ:+D#c/zc68|I) w< r.!|0>Hg= g:3 lmttw2 jp82~=%=V.q6e91V[$[vinitݰQ=UX090aN,}yKR]ݎK| ݼvcgs*Ut3"tmT wt!o17Zh:>AH+1v5,:2V̸}Id!fZ4«LrϿ$bwLy[yd~kZz(_~-Yfʴ8)y}٘sMG|lwHw to*\f0P!bm$]x} Dy_'G6|w J$ea ]^jC/dNAA).& [)qcSPsʷ9tF0\l5 FN\dtc\\ l;D_gVWZOkY( -H%o$wzeqrI/bylG)%+qr ߳bu-nuY'gU qVG|b O&T{EY5僸|CDjO򂮿`-?~|+`+pGOaop!]jBgL7h)˗E9ojoVʎ'w6qwAwYSVجHei*?õ5K`¢Wo*K&s)JpDɐT䤪?l/b8i"Ěn A|lw_*[_4(7MS,V(ys?ɭ5K m|ԑ{ߝ63!̎ɦ1m Nw6gx jeh'6/4ar8/z߶x1k+W#D^p97G!8_ 5 ʵ~H b_1 i|bm|SYEoa<y XX )cµ(#.Fp|wLO~h-Jsa[]?$6{w6Ot70h2^iW zU/ UF5HT;'ݑ7lq!e&TebBxS~ Zfҽ'*VF E>.cVIn+`Dn pۛ &o /V GqqHXt%HQ/* ZcSAU⯈nj<zUܷo`^3뉀# ȰuD32X;1v;e7GeJ;ۂSfSG 3_5vː·R,8#V}"/%jVVғC 08) *Z]Uhv+vqH!0hJ^X=kݞN?\B$VӊZ:O>u|Z>GG]H" #2/B ȳɰX`@\C7#==o noc<5 Y{O9S)3RAR 9 Wf9:U5" =alZ6˂ V5#%1b]Ag"g-w6F mtv4L]ua1ʹ(yD%s~ۃ!',ZZ0FZH[cpZ]w:< d[eyMJi5^yY%.*U*ZL4 ҍcai]}J _[ϣaDFJKPrnqX!ba]*ʇt3s1k5kgt-aD!fDB$%IO'd-TjMajӊv}!(̈UdӢћy2! {ab`.6?DyG5hsx͔iPV9zyHs%-]< Ba5 6by kd|@IsMfn AQH=Lw)ԲSTʖ18?tC%@Rq0cO`c.1ȤB VŽii3{ԤY|_9gkPUgJ?r%Q}L²1X[);k Rr6TP|)iBYasֆ!W3Fij1YIl FNy3#{bKrLCU V&cf= kWڀbyڇ"BZǠ6yĖP!H/--IH6`}FoPYҹWoCNYػ Pq{p5! aMȿ4vE nd:׆86] vÙ ?7d?7d߹!{z}z}7V/߿z|7VX|CX=~hcuy_e5wn>Fa{}E;r#+RI}%~ 4/O o^JyFSa2g/BplRH~n ,dl2Ump؞Gk7R}G+cG5mľ0#ۋ/6Rۇ;7RF7R^ˍT>A{z>* +>-?ns5o׺۱b޹ת_njIb{-{׺su^^K7?b^em@pOaޔBL?)kW7e*36e¹++ڹ+;޻}C?,ź\}ҹ}kl7zZ{kvZcB-76o7oޭs93y}]"jձߢb!SNPeL+ZWG V>u _w4`t}{?|L/P$MK" r <0^*l@[#gelt5>7Q<fuzs L~ieT|a 汗<*7}.TgU[j8x'=1YI6K>\_L8dK?Gcx>l<:pQTܖٙ/ ɗR}_4u{?ߠ -X]鬖юJ*k+ٶrT/"sEC,a1vd+L*_ dR@v:N`#kB]A) 7 [lPJOVv;Z(2hK>T1 T$J= "29Fvu_{-CVt@[?:·Xɯ+yхg#9TUGa[FN <#AJ蓈KO4JJʃBZur"ؤcH~>b*rL'z ~,{;a0*d=۪ehY5">/z%PmSPҎ!)1#hŢ6 q@c΄MGAl9n_`aP/*w{E'0Y RTb줲g6q7ˆ[Xذ/Z;xq *29Bg[8 Vzԧ&?J@~~es!^}Xl xg޽>\[u~#l.F.Q2d t~0 ; |N4խJk#DԦɬ? jg %TJQR^l mPyB*/ OUmalF}Pa"fkb (e]ߓjY$_ZlwlpY9CAWM/Z@{BYwWbz tSgB2kPu!ˈ|/EØU$j-<蕛7ze0ܖ^i^-Sգ%Yoeao(eyzfAZީjCj B%'bbf5Tf֕<zKW1V3ȗ>³BI63_rc@ &E@D:}r#F5eAmaѷU&k m3*L@$DU@i|Gn@K3 1 gTmGܞxsD7:k`g6ҚX)'Rv"T=f4YbV}yv>[2Y{ JkuePM9k]t>;kΠgg<]. ~u1$2yLm$TIqLdho01a3b57d+cJ&6%5=g n:и4dOc%ӭfy M-CFo!,]|+ɒ<^yЄ'yN0x@`k|{|#GK 5m2wN:~~Sّ_޿Uz6ܤx&j/OuK( Rdo>#uYne6+e{ڒؠ 7<oJ1y"ɷFۇ;Q$o/G~ؓ2 endstream endobj 3 0 obj 26211 endobj 4 0 obj <> stream x{W_bp !ɥ\44eLVSD"dMK.4Lk3teht/D.S)|Yoϭ39g=?Z3~}.Siaaaaaaaaaaaaaaaaaaaaaaaaa1OKK۶m|޽ӦMKOOOMM4hٳnݺ_:iU'''vڑH$11ݻw6,...Wԩ_>F%3gG!2駟OJJի5 oN^^Jk׮;wrb6mH>`K~'EEETCרQcQN,X@LRꫯ|׮] t|o6vؚ5kvЁQfΜRҥ q_qR^V-LzׯQIΝ{qljwR'-bK9yy|޽9V}0*:qH:99モo믗N:Fʑ:lfͦM;C999/lm۶)࿣ WwA@믿XYٳg3o[l;tIF?,}buzǎYb)߾}{Ν裏FxjəO<򸸸^{/R1޽{98LGnzݺu!+]^x!7ұ \{,?XoGUz.WeҤI@oCM+zȑ# P05 znYfW_}2W}/<5W\igϞ5jԊ+bͷrRTT$cƍ֭r4lؐ_z%,}ǭZ:/6SL)qWKJJڵkR_h+%\꡸٫W^5N;mQ:7իGAx_j.T@'lU]r'ZlYA5j(oФI{ϭ%UY=z[-k1ω8e.'Ov!ΐ >k!usLH233c=۷oRluQ/c] ELV_'᳆ vر]v7oht\p'AsE\K"'=,)σ_~Yyg{kvsE5m#K\~}|VV"5 ";;[+Rq`Ɍ=3~42`'SN9(L)Vڠe˖^y啑cá' )4` .)k&_oQ^݃<,_\@ R^K9ɣuw^w4?wygx8sN |Æ Zso۶-,[o2aڠL 8Ptꩧ VYb *X'qqѕfCa6<ʪv42W1T8khxD_psj뮻ꫯugΜ>va\Yf{Ϥ(aI>vZ׳3s't.?^. 6L IG$YX]Ido{#Li~Wգv,UW]&wMʉIL4M.a\'''Թ婧zl х%2Fj6|2ܜiGІX+ڳyIlDnKݲk0ZX!Henbϟ/ӵaR'4Zx[ZȈDcn?GӾRpg$yyyRNΝ|F*7"KG '[ӓO>8Xb̒@t_gްv!뗚ӧO 1ѩTӑVA}.at_~hdvCNՇ磻={ЬgiZhNceΠD@f͒{LJb<F>G@T+Ug2/Q9sH!d_~\BH]X 7+BtvMĄ?<3Rx)M ܨj wC#2Gn&j'gQ y)SHŰI8sq$9a\WR9+Jqq1\sbBBɰcRcII97Lu5zU6jՉ(nj#>s.2ҠAϽ`{zwB߿~J]Xp8+";ȿ+CN QȌ3'h[B)RH6{iy7O _S$fuQA qySpG혚H4Kv94%%%Ph@?}'?UXtG`=NO?l%#5 }h1M4 IMM堧OՎ%x2{*=}&ܰaѣ7ocNgZjqC \Hhbkժxh U;"|N\X5=NHHpΐ^!/[L6t~˖-Rkx_qXAiC4ncN܎b9ӥ%P\KSSBXv'ތ"wW(K λgnj/3 [gy^1kH1kW:ȸ9vf9!!+J`Zu"_xQ cլ HWGd}jjII QZD}y睷yf)c$%l#|_LO  O&GWHXuMٸ"u:@q3qɶիդ޽NޢE =y@;R/Zj[=..Gw„ }XƍU?X0ڵk@5k~3|p>Yèo߾VQWޠA> stream xzip[Ǚ`wA<H JD!HJJ ^(exsٙvg6RɌg9kRf& ڭ?Kx_ww_?y,2+C飙COY?V'M̝p!!1{ܛN BF|ߟԹolC( {PYx_G~KG3K'X[0eΎ '^hFP85{ Ի0n0C tL8^#huEzdXmvGx}%ebB VօƦhKk[}fnǃ<BĊЊow+&:JP"|K}彵1slVIoh)T]kaϣ^yzɞO8Wq uLaYp%iZ `N&o@Q~)E 2 2KuE%d闅)/פ'c)Te^!2JJ]7zeqr^&a) e.,䊝(Iqr2#DK$gǏ/ 90[7N(7kS.L؁|XB3ɮdRE3aߨdt,t2Wݗd(Tv bNj`Jr#]o_NQ&aFkz Qm?N-٘hJF9c\FKV4M1^Ҡtz&q(V%H3 H˚UINZ)!XLS7hBi"]/=-k\ 44gF))Hr|w T/*+6,%C7Q̬]DF&Ss2Fdm]\)fGS" 'eq(2dw.8FG2*TpXHbu)Cʔ & \iLrC˕ D[f4 @-dekPEQ$wRd+eBVt0 '˶x}Rmzߓ3]J4+-ˎpH2sȞK3 !Y~d[pUéUțcu `N@$ә4H Fc} s9$WRFn`aC{OJK [6$p8ǃ 9P"(5BC!2:C;}ӧ74Y Yi,gy8WDTп,L%1";iuœb)eQ #P9A/+R9DO J>@> |Y g G }ց| [6XϤIO&I!#grCHnxlP?ĚR]#1T悉sfzT`gw "2N=[@M~ GY&Z>L{ G[*84o!W{iJ]+BIAწ cg1hx3.4iCQB6$C#(n4;6,H(OҜIE5tfZ=$mz&e!y{NlT%>99#('3~'i}OX/=bHJN 14pQ*j&]; aKA"j.-KHPjm*(ўTDrN/PbvZuu$ 暤 "LZ԰j%5bVGVv$G;Bׁ7c ԇA#r#f"S *@PD*AD =jMaKb*c[$HU%V9TuUU JC7m;?dbx ,o b7[[P:< zS`$|Qn C1CwoB.L3(q}Sh?cНA(&L3)gR`IiCYC9C, y2(tEÌ/ a|Q(B_::޲jl$<kڙlWOMf̝xSOe#Ɂ]Bh|;$zZcF!>#. c\1!P5 }^a3:8k6mvmmd+OOd䉡+2Gc6U NJ@{k:u QǷFaY-}\7䅦),zAn)l΀pGAׁ .S?d#g.G(%xcvm֞/zO>:hØ% nP/5خQj2J]jwn7__~8Fg| @<_ <8l\]۬cV&bQg)ي]oxVk':2,8}Ƣp>^ߚTb uKosZ#۱eV.ɶx)IlkDx8 fEUfKx5I4/|PLoKbnwSPke=$x59@[S "$B)]4$|[Ow<;>ubS4fytfsw@nCr^'=bփxb3҄7@rqJ[&[j> qdϑhHeGtRo^kO:0zj"d%p~5`Pq\Zvxy5m>lx>;NC{{c;. ]z`'!YkP!PPϗ .]ZH*dW/=|#7_&_}vyۺBXP93< JxmnA0VZjmQNt&1[v=Qzdd<6d=jyb?ݑ>/n Zr~ƒ-j ^Mwڵ8S*K=16 ߆Tj=^>HeNT`/x( PY3kk.J\ Z*:ii*b5dEOSǖNH[0>!ԮTzPF?Z/e>En,e5b~,}w]yTĠmVǢ8Fn u}G@G@GFhqPUU`~h]K4 Oۏ-G&k3={+|^䝟9, =X B% LGv?K Ӏu2yY.M:Rd1= .}l@de?Lhٙt~7̻`fHH9HeBj訒h՚KCX6cc5sF19뛛Kz^눷ſ߻=Z Νp( vWXGYb6,r2)9:.'jStn?my`{joxĺvi!;{G^㊉K{M]!멚.T+dRZmMZ(c1vܶv4f51tzFha9nߊ!]HBx'JFsw!RԐrazPjUtMPECmp]24&gf ;[*D޻$mAuyʥ K}oC"ce%Q@]e[$VFϥ_9njAGqO86o@ywߎ54WZV 43\ ,KpW֬ޒ@х0+J6npBx1pW+3ޞʍy1+v9ޚ<~sNױ*ߦ7;31[WZWmWsg&Gk;7QDm`gGDh2,xטޢ`F0d~]/TInt?th{m'sןy*}Szr^ k׳(kR4J<pf}xZ]^u۰׀jAzlSe'.6-_wox)?ZZh'^eW鱼pJkwHK H?f|]g?"8!A(D5?TWW̑b~ySuDF  $YՋR4vG-Yɨ#$W__POM^;Gd;+V~Gxs!h.-\2X_&U f!a2zv䯬2u^ƭEP뒎2RSFnr֎?Y4;4xH}*asJX'3Xw ax qrVJgA9$\4-qji8s;y lmExvxeV/Bl'N2 1j>p yOUcr J\ 7; >>jLFɡ䙡 Ο8|OM݃_˷-;} oM1>dY bqcnT%|8ӯ'ȭWpOzfo}E(&h[,tV Fc}yW@8.nn On|Oq, ݹk82Fs;J|>:7;-nccQ!Uk^||[1zwyy]eT+*{.K:@Bj*VcHEG}>τwÏ̿J?0BrA}ƱvB)"+*PZgAȪG O*eTFԨUZ-;!ٲ4̎wvf2o:KLؿi w]]zte޸K՗%;gvw5%بU♿:Qsz, 0R^ՙp2&'x@_iW{(z,kg/w]}=:['ߥD`o0y=L^GTh.'tuFVc^Ki?A !OhE#.bur8 tZ#5DyiqPansT3ZqI5mZ"a\FbP_WO7նy~4{htli8d&˼MctlKjoM]]wMyK'2f`K8Pd4ݣ.^m6|P+W/k%1*QJõi{x%2ڴs::bqawlˁTT^q#҃5soldjܔ&gJrBnZZZ5iϗ/4xǝ5ꫯ&j+AN~ NsZM%TC%,ɭ!%W.h-n^}p Β D/N˧+]j; j0}-Z-wPz2j83 栳Ps_?a[ަl? )[?Q6u:@P'^A4NJP>f7hw"=ي@߅[v~ty%!+%0ތ  )Ĭ`m?GXG .#ZAdG[W+a~;-4A^ep(]q/J2,Gp.=KQj@:t ?_N.ow83w{__iW [CymD{U[={C"h[\ѣE?л+5 A^+]go*M-aoKOaɃf#@6/{/0: sDyT*A{pX֢. P Sa=$*l@ȟmS`*lFm|,+S*lC:~AA0A1:?Uh* &99N`y,nnmhs+a<4ݎ9si0 @4ڌcM:1|t@A]cv3faU jc'S^Qؕ(S EiBQ^ > Ww@Jy,n-2`"ۯX`98V4ߩu|'v)xGtaP' RS{ ' g 2N)s`vf Y6> .=ͼ,;av8As3/Ljc k/4E=e2[,RÇ>zokN"pJ-jGIT @%x.BYf1E 0ϲ}`|]Oy`0F>C:6g{irJj)~q:Ѝ= Ti`a\', Q4X(f0zv~1f}LcL;;Ǩ,]ɰ "Yd:\P3NFaEj,DuDзFS9IXO67G.5Qr}\wUwZwd]o嫵zp^8|Z緓M$avcsA1Q>te*@W?0x+WC/2\5 T{ /pMXi~wu/k2ph'VЦ endstream endobj 8 0 obj 8152 endobj 9 0 obj <> endobj 10 0 obj <> stream x]Ɏ0D 'E ` qD;bI>.&`Hv;Ò Sw c}zΫcnI+n1/v/j} O_C0^)Oyo~\T5%󹝿7K뱏|)?WF֚V|hǫVEѨd~;+k/ݯ6PC&j#ЖzKRtm+ѦE5ߡްnzx睢ԈsQKߡZC%1o߂K'R7&Cwde?1H>@DmP!'C.  J6dpkԃ54zii返;ߡ7K-~x౩ȱd0`d( kxdO K ŒH-2Dk׋wlT! d9Yih endstream endobj 11 0 obj <> endobj 12 0 obj <> endobj 13 0 obj << /Font 12 0 R /XObject<> /ProcSet[/PDF/Text/ImageC/ImageI/ImageB] >> endobj 1 0 obj <> endobj 14 0 obj <> endobj 15 0 obj < /Dest[1 0 R/XYZ 0 841.918 0]/Parent 14 0 R>> endobj 6 0 obj <> endobj 16 0 obj <> endobj 17 0 obj < /Producer /CreationDate(D:20241025154744+03'00')>> endobj xref 0 18 0000000000 65535 f 0000040565 00000 n 0000000019 00000 n 0000026301 00000 n 0000026323 00000 n 0000031018 00000 n 0000040877 00000 n 0000031039 00000 n 0000039276 00000 n 0000039297 00000 n 0000039493 00000 n 0000040046 00000 n 0000040432 00000 n 0000040465 00000 n 0000040696 00000 n 0000040752 00000 n 0000040951 00000 n 0000041087 00000 n trailer < <295844038438672275BDFB3843108632> ] /DocChecksum /ACBDDCC59603FE552BD1585FA8312BB5 >> startxref 41258 %%EOF hardinfo2-hardinfo2-1331e88/tools/LICENSES/camera-webSVG.pdf000066400000000000000000001266151474767047500232010ustar00rootroot00000000000000%PDF-1.7 %äüöß 2 0 obj <> stream xˮe9%6?_q{M2"25A @H-q]B_\k*i De7i>tV4|5}s?wo#?x\JC?^1#z{_=zѺƇaK^_|ikZK˫409?Yƚj/{kퟯxHמv'N8%#H.ESKG<>Ȝ#,k`t5OOr EuFyld}5+7xoij^UϪ6\J5JHX[܊vq YԀ-j*7Soєh(j)Hk}$  z%ka1wh[Kzt_84&3 h(i5 | XΦa!R=@"nĄ~Ȳ:D-3\kZ!؇Z I48%!(wEh|ha՟ %\ 5|먱K,W%ajc ^,7Ԗ&DOc< D_m6=LP8EXM qn:KY bc~Y#,Vg C[%v 3B?R@\{WTK|Qɤ&$\=u~2yFhoȅJlqk.6߾S' =/ފ% 478v~ե[a eA^7 ] ad<cUh@>GQɸ8UR(8*a ,u9XV~{?,@y6ZmvN]:(Ձf)\ Sm= s4YNl'Btb1tg>+7 w{e@БKLq[be#0ۮ #g^#s>;Ol#_ h{?kgtG\u~{W6qُN[ZL~?NV[8ÅQ$p"7Dnr{ښUc{x Ծ&F {ZRdQ815x#6p>K;Sޖ~6FOPGDȅ#BnK: η[k=R&_l5Ҳp@۾GӉ<<<mJpQ]-D-o'%i|ˏnhB4p=[Ql?ħ ͒eX\[HwU Y)a}Ry_rN8EH3X̼h^deݓ?mlFK'M8Fg9Vxl.oXu쉩5^Ե2oc::V86 1L z>|: 0^[lY9}Ĭ|lUg}暝'NC+i㈏à_03Էn>K+MI)%6#5M)y߷A)-3ϛ7IvEjg^˸{vcj<8agSgO}`$/w!o/A3.9bưZlnwTqA$^ٳnkS)%fd+s:e;ZN kNņW*7ֿx*m[~gܗ-jkz˰?+}N\s*WkgJ#3Y?__`|_?>Ϗę^f]88g.&Z.DS ˏyLK>JgmKIW{گ/n8a0u|~b?o=CX/gEى煩=zѼMgfK?gqOk~MrrGBXړ:_}/{{&^ sC[ZaS|alϓSu#(>^/`ӁS0o+C[p A & p 2nGW|2t]k j{cX lO,Bpy/po`L N8Y.h# zsО o.".˥)*=.7r=b]u.pR~*ri%6QZ2%Y`oAH}bޜ"lWVHHYO'"oEllA ZLa=3i*1h6uPiՠzӺqhO877{}V>i,p09AZQyagg\޹u9yv% ZŇ\X;J;}?iuq*y[e-t>=r+RLri׼ CkBSOBy4^Kf!N _iM0De|d^S"<"&^%oIt}#`t4r/(ĥ JV3"U*|ޔ(Ȅ,vmɋ9l%n H[R)`" } 2 a`!Ō ^qD/bc aG̔FˍlL Է 9D5^#?{)-#zj7L=|(iy(wnroŷl$n#U'cfEOB͈J1a7R3VUhKRMR(abC(iváovm͈|͈gcs5R;k1R:.& ^˿2f[S1c;߈]ƨ>r8 6NxEHtY.NI4 !?:XQ͇0mL5qVǺ1-;Q)ؖ7ȼ2%';${| Mz*>8[\9ȍycĘk߼qt2Yںʝ)a)ǬcY0_pw81 wWbZFc1iX.l@]‘M.9_vZԲa\d8p,ZK˸19FDNK"׉P;#5u z/IrUҍgˎ¸noΕp#nYCə鿇3sR'~䌲C1+@wN*7NάCr893q)s8>r8Nl>+'XpܙBxqqNv:9+}o'8v88y9'/gd`e`e++%+X٘!X9X $u҈Ưty@ z_3Bxk|;_Mw5^}k|w+_4y6;|].N(xpsyâ"~׀[= ".?5 T2>#f$olFUt\"5j8 ְv3y ΁wPߙվ{}}ri4v*<\t+w:v8vVpn?rQY<-㿐"l'-)wL*㖝oq}՛y:FPqK^墯(h5^(!9NE႙6bV26G`sQ7߄@K>m-P79Bn(JY7|t4X6:k oY}'i=ϮIvQ;[}'eʋ$I+UJ硽=."i3UUPEFߩP`r`"x8Ƃ,|0gd6=\p÷Cۿzާ߬s~8RH>xߛSyGzK15FGd+| &ܥP]yoگ efY~1"9;Er0{9a16YRڥ,WiusnHsnɽQgRqyB.5JL]xtK80͠C5pMņV7n=~ :o x^T+M+Uiݳ"W˾dWێWen8v8{ƅmaĎbL?AQaɅdSl`Faxrcihw5UGʄ<ϴ@ }iPF: !eқ|j35o"̚ 7uBi^?K-^<߬WUs X91ы(RG 8GU,>eAزy5G0lsv'de/W|e6#?لT+Sτ1c&& .bKLٖu%QK 'Fo.]7!zEܺwy~*ꧢ~*DQK?@t"%0ϦHbEQ c$u]3tY+@Կxҙ3!RKo0b%OpL#Mj oyxzq8*aS@%POp m(CEٯ:hEY'')f Qѭ^g6je{':bz_gW't VZب ݉>83EQ 8pi t"fh[霳YӿI%3QԙN XJ{eY(4jeGd];e ʣDnZQEϖEDIa[@ :&av >rX$IpjpS}P>y )4KFw*Lc("FZxaGAM ,lxTR)Aʔdy;#UFeEzdz>'E,5Q㋦s$2P(461"M!nfFo7 hC/n8ıS`6U1lU&b[UEwXpmyq\ׁˈoVIbRݟҌIdeUƦX1R0D<I.tapuR[|skTGEuuN+gA`G$H# N]8 F"r4.qX5h'.}O\k&b$ |&=&]L82M49Mt0erlN &UXLj2f2۩dzP|#cֆr_ PE;tT,8ZGfʙKy!_4k/' gx"A㸄^"onC]Nάi.q KEP,o$.Uzg{tҕZwexET`VZۖWu+0Tօff{<`4N[OY%݁c#\,FxV$s ՟ $G6 =qדFmOޯ#ד1#c%.Mqxek_~@^A|ruy[0l+4%O?t0WV&_ao[+5d!5pe>om 9>qzCJP>{gUe:tIg+]i "]MI;*@;ԥ\JlSFC/Dw0ڤ$M~!/Pٮ+)1XP<~_0?NIG vMK3:"}~ønp!IQ#IhϞ#PxQKP)w(u nJDMP"ZuceNp/Mp(EqUL*fLق*Np+fN͂4xB` 8-fâpcyzpy3'|&ɸ9w vFIV~+!#m=A\|-h`+BPXq!M% 1^yL5!_-Ə`'t&HhzQZ0U\X#$¸ oLAD@ >( F(ePIaBX()5؞ਣ D^@PӛEli\;͐0UL'ԙK갦)ML Cc23QfWAX9˗ `fF3c`E7Ņ~np(  HYW BM8ij=c|I[fԹ1yHMma[o,F-f8dte@ƿ1Q7%119:+);~}8@xj?.XmDU ]FVi}bYf|֑J7 EOE] !k(h.:jF\>cJ6ϾUF6PuNRFL>3W{5kKޛj9?twRtQUސ;ua~&ޖe[H,~ꂣ/gã_f΢5dSR9^gܪt뼏!zW8!鸕Z³{ ڇS\>-$xzRc8P)Dh% %҇#JtЭ:\ *rgjo +X8qׄWjz ]ڧ ]*m r)?C-5>`^$4LB#dRF>4L4#kʾf`TRNn ۪2f{6 Jeue;ؗ/?FHelH͌̾UORYVF*R ݎnVaUS CP&2S#0m֟acwf.a 8`ёg9l$ZXScOF?9"dHA΄F?9twQ~>h?`:)Iŏ\'G?}x5~Pw;?;g39לݛ8=&^ܡ]G>S%;M\¹[@wtnjKQw9q1#{޽K SI}\G ̵\;wFt7+Lwn ]/)8辪{ &So=` ayJz}$A_3(YXEb%,XS]Gzr#C9@X P~>  |b}^ݗh5Pc!j*pX&qNf%ı8P^dLVsj#ňg>VpW#ٱFn81ȑaF8~(9V7at p N*%"yw+幖Xʦp 8*u9>} mgbpBp MCJn8f!W{*rbG[V0ny9CmvXέ7gJg;L[. VIRM),]^a t [9&6x0M1o":}q0! ROq$)SO<# G?#I$QjBS[`H6y!  _h^T^1y"XGlnK~n$y@Q78CːIox\rF@6yȻ%BlLrm"x^Ke eN>'͖jTy kWn!ia7w:Nahy,|sqj2;,Q)1<F,B: ~tA4,oT֞DC*qbA[|ⴱ/KJcA4H:u]3|Smj7 2;A]cm| j50f-̖ v 1P=`9u^xy>GIF22p0ƧJ;"c (ꨄncVshmWJX*걜0?0D?A1# {濻" u'YKrayfH\[i`el 1ƙa2o~OD81Р)άA)/G8(P)'.#te\xܤr9 &D"lyf&wlCsۂ`d3'Zh{IaTy>d[c qa LKY >R:XWvmlCk{U@Ql |"\!=Ckԃ(SIȎig/\nַt 67+Zf7 77\ݴ9ƏGNn>p˹ 0gqaO' 0x:lD0!M*b#P+a ;6$SX&6rH?%6x0M%o9Lq0 RO/otGwzi[*6T1j2@FOwXUqRkU nx;2nyH8ejbZcF[@AT2CgO(miۼfo# ~RNTՂxP"\e8g"]"FY( -'G|`[?p>Tm&O{eHnH-Q 0c{ŶHPƶ$b12J z'A/AQ bxhŐ2$TR%r 7#f0-PT3AC$Kౄ!%1F@P!lBN9irԨ%$mӑŢ#EG;y/k~s !ʈ*Ad`c sFTnfNI݂'Qxf̀yc#4lytۈn?8'7PR5{j)%p܇2 -9T&ᨆ'ב*@Bn]Dt#lO|G Եk3 ׺(#,ōĤCr68/nХ|嘁ivN 1LrhM 7.X#@EcI)×.+*w`FECY z%)[qX׼")΀-Yɘ:IMof4\~Mq)j T7 '*MVf($L)#$ ŐKPб%"oȃH7HĞo@ 3fAkgI렲 2P7*x2Yl+g30?oN*8gý+GJFS:7PNs-AC؀S+AqW>8cx~E¥n\w{ ?૖t&UI/.f}ˆ4Mƹ" |LLBzi#ex<HL$x' )g7Wo#ca>^reOQ,!ˇ<%]Qu*"͛g)^o*ė ~\#M(^&(?xH !lpY3kST[QjbQ1 =gə~`eB9XsTb9I MΓ{7γT7 @v0R3M=%l7k” )qEyQ.&(80>$l4 &˘\x$0CNo K8L؀+U@6Wf>EvPPPP;*J;v"ԺU}0 br0r%L 0Nx1 &6 jÀ 'L0UhxakgV`0w؉aGJ:#,Q0a [6DTX&6!rA7MHm"4aK 9o2: q"!܎{D\Ϧ%v[@E[з bóU CD`v+ǔ2x6~Y,]ĤnkH iiv1PEuT?>+b50.ǿ1gLF:NȬ{ 5g`װ[1LBBPWH2!G3%ziAB0Ǎ2N!Fo0yN"8׵& *l}/1%#"c92lEy ETgy/2%#)9m /W-Zrq12I̟81 V b_o6\Ħ&)\~)/Ɯբ'fLh,`ȓΩ2V=َ]OT3Kk*cT7(-Eo|&OG_LuJZM TYP}*blr%0+ \oۆ$V0:Oc?ۆcEF0Y+'(*5kVh$F" ;&^T#;xu#6[b5 N">YaSKɰ ]|y}ơuF' x%pp 1`2dܲpf;"6Eb촋L#F).p\ 6Rtq^|j~jAwinna1+ 4ajIQ_ƀj`$ T@m|H>>_ wUoWye|2'q@Λˊ?kpr{pf>^1~{5Օ,}1P~ o 1@)c`сe_rZ^_Z{3ULA0 ~{3nǍmf#q>۪W_=W;ONNeMJ_i!9 *:ì!T+0DD,w+U/>}@N쀙ط^M|^N>FZ3SzZ=Hw+Jf6g9p==q1\ialdT/k}@j=59s}q:t'/_O*VsKJdȷsmw[?m9o7^9W-;V{lI1_1Q z&aKb*3oj>@TV֋ YYHwj% OD|K̊HBT Z~ ùt.: Q$Ԝ^c{buj* E[Zk@oQ :`0 lem?3HL})LVЌ"ĻLU9pϾ{,89xwQ睴 gjѧQtwg^,0DG'{|#"%&ar$TR#UII̾{ 1!eD[ʗz!oD|*,_5 ^ ~YhB>~5F(Dٛ6")7;K8b kO&v L’g"6ˆ:`-eoRQ;$5r;i} ŕ5i6We*U7cހ`+#I2)%`ou+/ ݻQ]f7HFLHAS$T o+2,l~v0;6:!?0B-ž<tǧ3د3@XT2Fa5ZENwLw,1l@[mh:Yi/jmȁkh'1T( Kd-!60j -A%=(~ ٲ?o|#yNjp˹+{1Ը ܅r캐rܻy 9h)RFC!! CwB>HՅqurnPɦo~tX?5OScX?5ֿ݅2R+\fc~ÅT~>__3]mPQgʿ\߿cGto;|ogD7,۝%⛭+Jp1O +¡Q!TM×^*y zH#C.y{8dZ9sCz5`O)!֕ C%`Kz'j Z1dR ~9u" V#IAN4tD4-l*@yфTǩ Xԧ%o;+L+f1yFrәֿzlv {hqԸq5w;wEN$.\L;=B;!wBuU|{cWcg(ڧhy}*A4 օr)oIF헔pO^o@w9{&tb{<w=K+9ɟq_-}O+PׄT_d@?H.E*U5(d01[U ~R>wbQ3Ri7l"~;_D{\Ȳ+3r ///ZyE#aXqmE==T>23J!p) iK6ʖW'FV^7 3@$9oo'23H8Kq':yrGx `3LbyKAp9>b0b9Kf;l"-vA܍ͬC RzB;)S1+"6[k.PxT<u}uɑNOe:R* uRQY?:2KXcA]be-.U0җS#8-KyFN uAPTN张eQYc7]5vqK \߃=Habn߉gWmj{1Y ˍ#,FdASK .W[]+(“ N/!FJ~;x@1,/brsLq-bҬeHM5ň#И'=,B| (*uP߽Phޔ3n,m\9wm纄+X́UCWA787nk@kXaS ®yI.9)֙"d<\Up*~_쏗u{Cae7P1af6|.mqXgX0}CD4DطG| v$ lA0IiAr ICԍf Aծ*_Xo8&n.mǙ}/X9mjD<61oVT ;fD |! QJ3b[QwPF F;_9\ E=2(n3$T0 *YgMhpSo`$!w˲}I+J-?c^ }}]q<4QXpXo9>cl`o/#ס80 ޥХ3rL{<}Ihnj>H}Cۥ@쥄@ f/G Dl^AD6 2[Y<04l6@.Yi .Z&*;S<`੎U@XGUUPTe'h{#- t䘩GUc 0K-~Z7 $V<ϙFQb&XXLMhl.fKjˑŖnTuRIldfɆHl:A`~r^ub9K;O$zv p4J| Zd}.y=ȩqbx1˃r'J3rSr+X̼ԡ_V0m, I CZ9Lՙ^$!LနFMT6T3y Dl`: })NEL |aH][g1 5>]d N+&S Xj~ީzDAGSY45jdt%ضe\%{. gYśMѕr~`P\ ͋gRlua@k'-Kknj}kOM_4ҘpSo iԀ~JG  n}׊;p{RmLco=3_Ar1-LH7/Y !'R>j &Twb"d۳IVJ,fGb8@+&}bk4 åis+[k3TF&Yq Pau/mݴS*}jS*}SEj_kƲJ:Zܘ/7MFuڙőd+;XA[>J< CUI<ךƯfs[:r(y'kMr3B&&C:Fo$6,v%w3$h Xh>3FdL,:~3!Lm0)\N,Q~wd%@.5 J2n*R]bW)\f]qTvn#A`2>D|`p%uғЫ}sDΗۛmq37gʄp]&?"|9`wp*p*}SM{kq5qN#FOS<]oIJ:B6E(ƑU!sx$?0=P cq;}ws-cL8 HvTO(FX;iLu6|s (D*vѤ$wXnK' ۶Gldx^Ѕ':II~I2~ Uc5_cjLLm1R⼡#iB{̲2CGmE B?E TL,7ϳ[_p7 'ӋO),H8p=Xrv<:;_b&es^9#0NIէ86ueޕ~KzǭGndR쳶jʈO1Ka5]ɱA"P.}\*>nd ܖY",ԉYᎪr]^;zp vqcztY9={Vj>3J*r2#Z Jn+p| ӌOҩ,tp=rvd_#."&[h~@wjpI׼?ő,:O[oDƊ1Ο=yJ|'*Xw ,#o'Oq$t %#Lk؈XbQgv7;@'>5=Ԥ? ׯ .;fNܨ&e+|"M]M\^$Dw:F 9IߴlMD+M6Rb&Wp[4+$D~5E1pm× B3GI#ogK|@eDc  sbA)Yg3rFjc3~=d2G p<!7y{>}[㤋ZZZjxA)EeKn#_AjxITEjΜN2*|г99‡wŊ4?@ ͣ'`)݅{ 29߱~ou6?>Cr>O#7мY\ng!j_= ?6[ CbW:?C>s HEg#A/%bzf.Sn&z^Gq#jxv)\x7SgٴW+[D񘊒m6_ }~X<1' rRLg}M"ȫ*+ ǚˮ-o0pZ )V*1*K*i=XKa Xg~#T_(|s@aA`^Pn:=ې추@b iӧt'kaNaK}~9kIҡ@g[`t}9<4;cb b'`Ũl QԘJ q)̯*|1" k:}YrSU:X`#YR]G5}8B(,Į U" ^U11VXfPy ],GLNB[ ,VY hO_dbD p 4 h92@z”b nsl6~=g݁Bwzі9kzFS[xNN &jq.0sP- UDGuD/ veUXi'Ibl n$q$MW#BM=10/ XXC'%,ܖL8g%I]{ N|-sOؙ׳,@X`@t@q 4㑱2ٰ<յ{M)>cwTX;$0itM9;/UQ2|2+1Uׁo/Ϊ&cC4b7ܗc}6dL:c@V™ } W:a4I!Y[n8a~197ry1틳ꋔ@a|!u0>fH"1 Z1A<)uY~5rAG%7Ӧf86<3jfſ+ Oꈄh{6YłB!AHdXD#ZԐB,WX(ju34XN,-!gR a7`)vg)o6o]V. M9$;]_XYuyP[)^Lh 2]J3C:վH4{j[A(t"R4u3ϦZӉmu.gxqʰ|;mBv(UfP(d$ Cl)ͪ.9b <`b12td2lI%HwXbu'Nj5>#^|+W(~ ,Ƚ!9G@1-7м#+rLœ | 4 hVߴ$'|k:YJ Bl9~8khP2I!-wdO0'Hr,Bzr Vm dU*i2M6'YN" bvbgcP`[=i׹ wr Hw`>`*=ģeI&̼Z[yD$vv_s/G ތKƇfu5VOۅ n6ıۅ`|Ŵw?Z$m7ܢ;"]Jz9]gs`Q|?ߍ]5Z9Y5.?xg5xW2 &8Peyrbb;ы:4XS|wU'Ox9ߏxx=u?I#ޕGTnG<`~/'|?ɣ1EB2,ycR!Pn5 R=z]M^=,ZKsH\Aba?lA%uJ~#w~΂,3&{OJzK3gވ*X}9XY2A_6)˒e(06j[˜>Lγ?]cؕB7ՀȪ`4 3hCz2B$4Iw96qR^iQ#ROt t1B0|^)$6a*ceMCEG%yL\dL\eg@y\OH5WgC)|9*zrrrDÆ*T|WIW#T+VF<Q1 U;[ե#oL4{LPJ 7ojU| >?(59W;lcOY@,KVQR =Ȑo-7(" #^X^U1yۖ,!b]|"曣MCy.cǎ eF@.i?pb)-Tzo*m27[ IDTH$w\3T\UTs- [QnZ: Pd*fe,jbU}P6UU ^hae6ƪ\,e(V\4@pVUuBj C_\tW9CZ,Dc]6 2f8?'+@PFǪ^9] 7g*-7ŪD2֫:u/E1jI2XԿ/T$i+!bH@ 9&a_NIB.@X{ X=&'lֳf{=dnAFLkvBA@ꊑ);4>`<~*:#ܦJJa_ȦF-ɜ㠪?0d\% h P>c7!Cݕ| J;\٩LN4eZ&'=6"9Ԝ%HL$UA{ |:Gb8->e|h31i*mZl`ĆpgjƱnmOr&L<\5}$1N )M;8YQ79k+lR r~ 2SmA/9a63Ϊ,Fv69*p/;SZ{ :7GfXR=JG#I?> stream x{W_bp !ɥ\44eLVSD"dMK.4Lk3teht/D.S)|Yoϭ39g=?Z3~}.Siaaaaaaaaaaaaaaaaaaaaaaaaa1OKK۶m|޽ӦMKOOOMM4hٳnݺ_:iU'''vڑH$11ݻw6,...Wԩ_>F%3gG!2駟OJJի5 oN^^Jk׮;wrb6mH>`K~'EEETCרQcQN,X@LRꫯ|׮] t|o6vؚ5kvЁQfΜRҥ q_qR^V-LzׯQIΝ{qljwR'-bK9yy|޽9V}0*:qH:99モo믗N:Fʑ:lfͦM;C999/lm۶)࿣ WwA@믿XYٳg3o[l;tIF?,}buzǎYb)߾}{Ν裏FxjəO<򸸸^{/R1޽{98LGnzݺu!+]^x!7ұ \{,?XoGUz.WeҤI@oCM+zȑ# P05 znYfW_}2W}/<5W\igϞ5jԊ+bͷrRTT$cƍ֭r4lؐ_z%,}ǭZ:/6SL)qWKJJڵkR_h+%\꡸٫W^5N;mQ:7իGAx_j.T@'lU]r'ZlYA5j(oФI{ϭ%UY=z[-k1ω8e.'Ov!ΐ >k!usLH233c=۷oRluQ/c] ELV_'᳆ vر]v7oht\p'AsE\K"'=,)σ_~Yyg{kvsE5m#K\~}|VV"5 ";;[+Rq`Ɍ=3~42`'SN9(L)Vڠe˖^y啑cá' )4` .)k&_oQ^݃<,_\@ R^K9ɣuw^w4?wygx8sN |Æ Zso۶-,[o2aڠL 8Ptꩧ VYb *X'qqѕfCa6<ʪv42W1T8khxD_psj뮻ꫯugΜ>va\Yf{Ϥ(aI>vZ׳3s't.?^. 6L IG$YX]Ido{#Li~Wգv,UW]&wMʉIL4M.a\'''Թ婧zl х%2Fj6|2ܜiGІX+ڳyIlDnKݲk0ZX!Henbϟ/ӵaR'4Zx[ZȈDcn?GӾRpg$yyyRNΝ|F*7"KG '[ӓO>8Xb̒@t_gްv!뗚ӧO 1ѩTӑVA}.at_~hdvCNՇ磻={ЬgiZhNceΠD@f͒{LJb<F>G@T+Ug2/Q9sH!d_~\BH]X 7+BtvMĄ?<3Rx)M ܨj wC#2Gn&j'gQ y)SHŰI8sq$9a\WR9+Jqq1\sbBBɰcRcII97Lu5zU6jՉ(nj#>s.2ҠAϽ`{zwB߿~J]Xp8+";ȿ+CN QȌ3'h[B)RH6{iy7O _S$fuQA qySpG혚H4Kv94%%%Ph@?}'?UXtG`=NO?l%#5 }h1M4 IMM堧OՎ%x2{*=}&ܰaѣ7ocNgZjqC \Hhbkժxh U;"|N\X5=NHHpΐ^!/[L6t~˖-Rkx_qXAiC4ncN܎b9ӥ%P\KSSBXv'ތ"wW(K λgnj/3 [gy^1kH1kW:ȸ9vf9!!+J`Zu"_xQ cլ HWGd}jjII QZD}y睷yf)c$%l#|_LO  O&GWHXuMٸ"u:@q3qɶիդ޽NޢE =y@;R/Zj[=..Gw„ }XƍU?X0ڵk@5k~3|p>Yèo߾VQWޠA> stream xzitǙ`U5qqhI JD!CR ^$HJn[cc'/q<>2oq.Ӑ_ɛMY??śLq&Mvwf(ܯW'qAayȎ ɖ&&YRg+D HOK #f}tɎb `M@r&u݁ ;PdO$y#P´ }s@RGWccsS;>L %{-)H0lBjRF@(7hZZt 蚎B-jNR)/hK2$$4P/E+R7MQh2N$H R4#Su:(4ȤI $%b,[&$4!Lg5q.Rq2뜒Ե>XLׄkpVA] LN xC)65/ՋJ JuDd3ka(Ep1䬄IS['ʭ RIRb)2P3^[s}p#d*8,$@ 󚘦FeF^jIy.bC>!ۥ ؅md 27 xE_0%SNwI TM t4#3R,Yµ A$kw_2HUHqN{66_"kb$ZN%KV<[H#a؂Hf@50k-{u"Τ@nf7CLE&qc̬e,"U (Ņ\.,Ȇ8@tH xA],O>,G`VE`VM,O%>KY-}yKhZB>HN nXt-)/mX- *'5YT*F| ||)|Yg%G~>@>Z>CAas  3)alCPH ‡XSL4$Jߔ7qwRkjlLBRR7pBqj2Nτ-/t9^`Ucؚmv*k =,:) 9I3Tp)@&BJ!$tӔv[Y*R+"V] h*H -k@qI\ lی&dz/؂4AsJl0JP U~'VI[d;Į O4UI%5UXV%^'huOX/v]bwCD9Djp8ED%e_%- f~E6P%Iֻnz(5RadMKh_2$lNW&ʗb Qƻlyb-|NysM έ"MZ쒜j-6"۝VVQ;AikJmk1CQ!vt2eͧE*B d]jM~Kwb*cDHUŗR5.|E5 rm"Z w|/E6) p_P~NP7=AR?{`Luf`3}#)>0P ̠Ty,ύ$ύQFqFU*恽 8Fw^U.괼9SkrpaxG%jy48yŏ:ULCg0|i| OD{LvuRcSr9P9y JdLMpy8 AuR]T,+q-E~ Vk--&Q%jDKۋtpK|`wJTLOƦ2ro} ;[-|Uw j5u>W!PZ:?`rMTKԠaQ̩rơ}bui[ɮ-u}%.] ۤq2n2uf5O7"?r18-V:4` yϓ=%bQd)@Dx@vEh4LYT 9T>:wLGWuozxp\Gl &dsP}^ kuxScQ_4HA~k4L.0!Pxi jy.b290.j܂v$= UD_1[x 1:}i܆_:T,+jTZQ-3w U*pJ#B6,%W;LUTo2!chx{>ԇF#ѦplwrKN7d|dzk}|(u䋓vm]vFցD)ȏmFR?T r q5~y0*Y-BѠ]ˉF]9~͕oB VkQw; mQ+uoQ~QpZu8Ez!\޾s&rT+=uk/u~GzsW睉{Oc \ O3ϜU h@݊j9(҂*+o9x\W܏y&.I~~~WDɡܪ2uYm¢g|TW w.yhEEfu*qeR _C8mrh  ŗD6U_<<xOȼJ2NGMA2.IzY+u]8TxF 3N=)C|̝#C =gc/'CЛQc,d,T˲r.ʲdApd!`4diJds? eQQCrփ"(vWQ@<ؤG~ jY+ܬN_9Jr5[+W9daHX]UP {O_>+ezX{G#iTwx~b,zc.]0U@Qia`vm' ڊt6ӘazZNMFuQr4Օf>_$`F?~޸|`04زo9IF{G_V?v(Hh_߁<|TYYcd^O4sd)0542Q;4_r/LQ_G#iAFޞYu#2Y o/7ZRPh|&DY}0"=~=Τ0櫓djU!huĩԇA籒 !l"HSI@R=l5X\ݳOhݽg*=C!ծesrݑq ެz6vy5&2ւkNW!߷V`{ͻ)XDYfqП#0#h!&ªg"K^ {'J[Cx4pf^㪑^nÂ*]\&{*D7 FǡTtEn :-znkzM.]s+v3.|=d3Fzs_t;MKPo%n[{ *^or#sv#O|i=1<;p[N?ə?|bN.f} ?^H-wa>{ƃgeVQMO~`|)we;8= ?r瞕{ ?zGqL}=FOH糋ߒ~>ECTOpp,ig8򤪨H2):"C@ςJc^=2UBši Pɐ- SのS:뀶\9k0,"F(-{\nՂ+8UhDfl.XI|aݒaS:S]7Ͻ8"7~@c=Fv~=7r`GW E=_CЖXh/BpR_T*+k;568ʖYg^ߺc؅嶌4:|Lbx8rp֩FSp>&c\ 7=hqW^'JLZ>v-F8P*Ͻs{x?~pm |Cd?vz0A K/xp,zm-8laݩc9l`/E3ef+-d½2 gw! gr8 ՛P,?k * kXSm/445񲒢*{ٰMNQ^!U؋L^xCu`\JcT^aWO 7ٲu^2sp]67^?pgd|{p[lMVرTt[Jw-َγ-;jxh<1zlСKy ]sbՅXŁmPMQDrXVv^0fknnO}>OT|SX\o^{͊3@(==pӠ E)}̿z ]@H,1ݒ,6|A\E/6,l<lhzz'(wkgoZ-fυ0g4ۯeo _{ 1oWQjBz0oh E,A ׻5A%g̹;ҳc~4/)^ =OU{{Om$q3GQF) n!RZIq;ґvX?Qgl{h h? :|w?Gu4JӽD?2?y~Eɫ0VTO@/CvBP)=!W̵o^4y5u*jRY_kOs/5՚ohrW t' Iu'uo+CO4 O^36~}I1'L?`2\ @U/2w0; L @9Ԁ~*X e֠kQ-~G P5*M֣ l_q9S`jQ2#jR-HZạ:V= ^ݜ@']: bVM탙xE h0O#0;pw%x)jFch. d2XB(Nc0{\8 -<\8]t)yQ~aqv2]8R;R@FFmEy?PRf< h LYس;FNN·Q8-;A0"8i(Q d@jj>$~)sXvBFo +3cfg ~?zEeIm{agvb|G3Yft>_nm-Ԣީ>@TҌ-d?a4y vN2܍6Q2Ml.3+llq&'8D7] ^J#$b43(o`D=|O0 T1cϯyN~3f=LL;˨ ,lܝI "iY`:\T2NF;aEb,DuDؿ_荡dSw˓Y }";ЇPղ)ǧW c$j;J)O(J񽪝d ٢%P|y/.]\.lCPGe͇.BVR$Owde-'PGʛSj/C?/@bOW%R ݪv%5jezUR=%y4\;+ endstream endobj 8 0 obj 8328 endobj 9 0 obj <> endobj 10 0 obj <> stream x]n0E .E !) ~Ā}N?@hG@, ߗw.]H$g璜|{a;E6C_1FCk;gy=>nZeϸv[C=d0k{}?Տ*Q?:_[{d=<,/1{edMmC;^|*F&cZY3t>Cu -n6RhGmKj ]QkѦ~aMע];-w}/{j1_A'-tx[0k[`䯱&UczgZjR>4=Thz^6Pe'pF|zp1P³6C~'5!/Kx1pv%r-X;xwx̖ktlzCe_K}G,> endobj 12 0 obj <> endobj 13 0 obj << /Font 12 0 R /XObject<> /ProcSet[/PDF/Text/ImageC/ImageI/ImageB] >> endobj 1 0 obj <> endobj 14 0 obj <> endobj 15 0 obj < /Dest[1 0 R/XYZ 0 841.918 0]/Parent 14 0 R>> endobj 6 0 obj <> endobj 16 0 obj <> endobj 17 0 obj < /Producer /CreationDate(D:20241025154805+03'00')>> endobj xref 0 18 0000000000 65535 f 0000043171 00000 n 0000000019 00000 n 0000028731 00000 n 0000028753 00000 n 0000033448 00000 n 0000043484 00000 n 0000033469 00000 n 0000041882 00000 n 0000041903 00000 n 0000042099 00000 n 0000042652 00000 n 0000043038 00000 n 0000043071 00000 n 0000043303 00000 n 0000043359 00000 n 0000043558 00000 n 0000043694 00000 n trailer < ] /DocChecksum /52525F5EACA6AA838320C0F91E3A9D5D >> startxref 43865 %%EOF hardinfo2-hardinfo2-1331e88/tools/LICENSES/cdromSVG.pdf000066400000000000000000001116261474767047500222760ustar00rootroot00000000000000%PDF-1.7 %äüöß 2 0 obj <> stream xI$&v_2$E:::4z.ﳅtψWV« 3wb1^%q>ė1?\K^?q\_/0ݛ_u/ᛆfO K>J+rM11^>Kiy7t#7GİNYv,ߨ]X#^9/3$<;ƗP2'/֤b8H^كbF^'&x&ϑ^F):H~?\CٳZpEy/LtYpsSni Z#4 |q.D <[>h-NKDŽ"3^` 0̃` jrL}XNݿj[w>eMxbU4R(Fh')dY+=+yB k0݌Ǻ"Qu$JQ /z 8 ئ̗04 ,ak 7Z)/w)mMרL M/PX9 iiXjGj}qG/N so{@T%`Bm^^¨{%R/E7 N(/%ɏۜ'82eo2tJZ5>Ьv=&yω1:65 ,| R5ߨܗjExYLp5:eJ1$.@&OC$8'R!_{( :eH>{F*..:,`Isl sQsQ9 ]X5Ɋd6\ {Jn)yw.T3ӜɊɸGԄe!Cg"KRE>Ν<SCo(p#R b_PFQ(;iSb)`D~)B 8"֋|{._L-MƵklƗiD :[Zk,:__9t21ks͖,vdT]jAuye ltVIgX#ȔҭKfnYb|"*K,PAf~!P+T=i "r ^XD[`hbjjVS!F^^jb8 9k,Di 8ULө $@NYѝbu5{-mp1 E>[lR>vh)3GgSr.a뒇'w@݉:[Li^Qe#׶Debo\zKO(K< ,WfIiu,b26!blhiqRp>il zy2E\7O*okK$_Ʋ/ ̓ _,j(/M;(=%nB<*T rGu9hw>Ē,C%?Gg]"M0`c+Y6e%O':Mrޜfj݌j n*׊ݽ0뵼IMn[d( `ȸ{f)1EeL'cn=u bҒNm[fʗ٭/5rY`b*]5 ,<}~,RWkPE 4`@yFl#2k't6_Oi jc[)а{jSn>HBWPJuWB7b/s$7/ޗDw`Gpu`[ d5#1X5hUjmNIs6 ;(`kSo{lV gC q}~|eۼ]'C5j` p7aRhP\E\}ĶĥS%=/_ ɸ]f_kLWc{i%qZOɯccE,`d]O >QX[[ApizJ8,ݲK0Fe$XI\vzGs |*GX|3!ņIW%89s,X3Nb˹p |/u=B>Ot?~ B.5Q7jؘjcra QraLϘ\2״VAP|kpbPET ֋\#ό)brGF;i!/O?ԋ[Nw0[E(wyza2h2OKs 1yݣGKN&A@]ϦdV&׹ LqD [ b4H4`G}r8VO'[xbC~X$q,d,D+x#^ TXUwu`}.8/ ї"SXy"h^mm3`-jĖFޭOuPÇg3mNRLnT n(]ykn]Vow*X|rz͡dӖݯQ6F3c!7Jin[4| a[b_Ge6Y3l41Tm^&EY[|?88,z'8>)8z<{ab1=Te\!]mo 9>}%S?-/LuT{\s?ǽTN2Ii4fCF *-5nJ}gηɏ@=nא6/9hYUV% Uυr `۶־td)>r$Nb|T3.V>rmU'l2hko/KK'*#^z_?%˧9/_%T}?e S_U;?uG]QZ.9;c1R~UlY@*&NbXc8kcUg捩[cMͨyWwGW/ e}Q?'# [FZeN֠IB gΟZğ`eFh:i4/蟕W63L}$Z (1N✖0ec=1ɈuJ{}E0M+W;EV^nmAѫpː.>c~m^O¼"O?es+J!)Rcާ_mU3o[[˪Bd_t'O@lM ~~,Z4BX$NHZV&$6ZH)b˲IJ/JO$1s&16H>Tx+ 68ԙZW68p:aqmoZTM*J_5)T;{Pq"8pw͙g~,Y~Z!z6MxArFXϹƕqyǝ+o/ʅ 6CF'J^m,H$ZNy5ī7#yeKc[/^ ٖ;K|1Cyz )&٘, ^0aQrʤ 1e4$NY\ASqw!Q6g"ݙpL@u&>pԃɴRtT&]!S\~|}MNT0霣 U˴*cJSʵم_yl-1-ƷfKREڲ @2/! L|{SEW1|05Rq% dV1*τ:c81Epu `{f FQm bpmxekSSm!کwS؀pu#7u#?T[S7&q>qo0$GmQL txW a"a"Ov`gNcgX#4cg'YvEdqS-|0fOk]` E[`6 QsX5Y3Є|#D UGxD.>U2>BA>Q{Ĝ L/NHՐNhUabT쫭Eտ񓙇pj?!ռ8˚8SrWba%,$~ag-hsQpۨUvi0z1kIn M8[:S$U0-zMkje@ʠ-PCd٘%\+o%K/8Sc Ña~Սtƞ5#5>d.TP` C5ˈTR--#FK!_Y£HR'胥v(n=Zƒ|ZjR'a?Zj`NKN)?XjNGJyike!UACHT3VyLd&Ӡc֘l a"IZXB$G+MV]d^g˜`h?$a,"IW%YYT̳?B6WWt`t*ɕ) D pé%$3 ^}4h,/ ([lr}.\`ZzѸ>K^V2]rvTʈvо#X 09k ƭ31#,|JY%o&C&\P?Xdebb&(gl욶85 c#vkUJpqA}Oa8I=n hLq(HŅ}^ʋu;u@m.RH"u/$BKF5fi tYrg*ëc8n~D"R f2tSngU P(~cbgm`Z]ID洕ڔQԋ(k(oU-i@[\ӑעcwL sm-mgZܸe[evPl#eX_1O|͈`!ta>Շ0VXC?Iͱĩƾ^5TFËiY6bgpf'cOhơ~uzj(ڰ'9t)Hp*@ e#֪D 땛]KU# @\ЀZ{p 4BBd@`Cqv]jN.7b6 b1ɈZ)l΀QHyfISߠ,1f3f-&$3!Nx J:><|^˔^e&1k97p1΍qbc.!tj}lHF$V]9mņ'QvM]pOrod3wt1<ŌK{H0ɐ@@Uhf(Ma8cN;yy{@yK{:un񩑱.^()U*dB%J-ErKŮ Bb )j-ƥ>ob_ QPm z@xr߰>S Q5nC>doq*j_1p0" 0 7#2n=1ALqab\"v)QۨMl^[ M2&qF&F}j[C@W5rkC('&PNsMxhVͮ MeJU}GD֎lS,_%EFtjzdϞ9fmqt(um69W.[^FLw$<ΰ ;ֿ[S s9FX)RjMyJׇ8=5ѣ\*='5mdq,+g &QNi&BN 9N=S_FRLJqS\"Uk^t5M%bTn0b טb YԵ2isV͇ȏ ߶f2Nj=}`„vF;}ئa>lӇmM6z4ԶBi| '\Iҡ^Lܯg\8[f(풪Y7jJU7 n#S$̙D]X4|0鸨<x 0Ϣ] ɒ|b`j.rV]C~̓ oH cR)^8bi~~0a5׍56rOoq88ա} _vCﱼOD7܄f%M1UAFRUPJqS`$tL銚r6ݩ`U4if7ʎ֝_M+C~"~0g2~`P}Ca> Շ71Tw}S!Rk6|%'HӤf<ܴ]l&ƫ"&dA^e-kVP)P<ʵcMA"*hjRՑ5h;G뻑Ȏ.t1Aavyf@/K>=>ܤ.28Y^` __IFڤ6 Gs?̼1Ym b'ȴy_lxI n#ZмX{Xl4vJ;X[ ~:A{xO"tbjm11E!rI4IWHA!}QHaZ1V̼3]Osz{g Apl~1q30PqB2d-9L2ްp ފ0_NL6Y*x.4`hTV[ivy~~.S[tƣ77-0^оLիtzaRoνK X~vr}p6*)m1"ÉA5ljpSc": M;0X$ &co݃ct ր q w Gy*<h,k 딚{ ~I7ZhCȬ V#q`Vj\e-8}Fa-(准=b0I-ݖcu#*hcƛ ?sh3|Ȇ_.?{DӒ^ ]>^ $Kϼ:='ǙJ))_WvT"Vz w/ZeE<1S 9(~ZQ[KvܒExg =Q&ZNR;6UK+ |:G)jԙ߃bk[ЮЉËg+ʒ.8`,\*`.'K%ȥJh9 ĴgV^LӇi0M/6Lq,~ 4#s@tW92ѫfO"޴Q]ozr`Jr*i%E AtP.eC\Sd/4϶W]o۠PA+ӰrsDh-QaAk]mX*x([ 65PDC7:Ӏ2c.ȣG3W(Q Rn'|5]V1}uFR cX|(app#'i`i8]7w{ qn=;bQ@^;B-p -C/5}r%k ohe%> ooNzQb~㟿s?Y$D[cMJfW77v =ϗ`'ʔ3g$b3ff0`6%2>A^h/1n T$P*o0ĿXi5棏eB=Fz2 )@Yr91~ί>wxLG> @o8SD/57!nMehWރ^໲ QQugΤ'6f;x 2T9.{ලwC=G8Ƌ~3X`)4FGwDc1XWod>v'%;ʹΝh|O%Œt$#@kOtJC(FG`SF`kazS>-" M(r7-IƤ qB|S5dU5:0|@}6F/?fg %0!OVsYtN5'mwB4Q?#B80򶧭`fd6rrii%+!))1_+:]?׃).Uq]<ؘZk|cm\$<}eUx}^Xb}Xa1~^w2:W wpJSF|(Ʒʞ'9W3A7Fn\{ŀ0J%r'#`p֓"'q2D,Up[rᕀ~C8&/G&= =7MZq2qOAOs LA$SgЅ\Ri$Q|#/&,O%=D.p@C^X2Xx#2C1xS8f^wQlظAދMc:%G'#qJ^@ɯKqI9+}q[7 [mg.8LlF_"}J8mQ6+Snׄ#u_Yb6@4a-}S4ĸ'mSGgR[I3$dhVՉs7^aþx&C1rLtrHZcQc蛑īaa `]Fқ(|E~c"imZ[m\&6lS 6#)#VOF^^F}So>W mMl%kLbJؘԴ1)zcT3XQax?oWE<߼JeOj>y?벋L;sB|a> p$qݿ a `oLΔXf2-SaÈH>ep,׷&>*3ʗO/ ?ч?9^xC,!)7$7rCe4c| Z\ΤۡF<`{0_ u8zaNLzCzuN> \tA8C atK< ΒJgf*;O`Л훱?,ӯkD/Z8.5 jAkeDyH>gm= .Yb,%CJdv}+W`g.Mvyx!,5HEL475*YYELD\ing#X#!fM䅢>k{){I>@P% VZ#xI)nZA"SRSx:\9: gLcsqUE\VLrծ[?FU[fn'f8-r)q9Ȱ zaQ,-TbـzVJ;* )aUbMl~Xk!FqqC ƛ2v0^H(r[ TV !|:LRl+!$%TMU8-l]nVK{TGY$kj#M@X* u4o Պ<&N`@;AE,6A(IgywWXʃ\1DBy lK`B2-pEA}Y;ƘJ7h/CהMA'R -er]zpIoɊu,Xe01&Qa Nu upacٌQ 9 مݬ;8ЩPD395cYT `e@!{hMJm hFfȓ8݂m%#b{f9M,ob YT]Pw F%ek(f?# MӭR?XgUo9(Q/Y6"EdFdq7QzhRӀzk(ILw{CEE\}ѥ7~"$_Ѓ-@H h ?ž~C[M 2vP \Tq|̽1k18Y#<!M;Oq0#TAոPxҗ]Gv" T7 !Kj049?0)twLv̥ tc yI!VuzmOqW;T }-S`VMm&&ĔF1q4Uk z%& .%76ajp558'ƷO{YMBoN2U;FO0(f- ltUB‹q=/-hX }ړ jN< l5j=8pV <_M){0|p41(w=_@6lx8'F<^L5jAziC1_E>ƠBQzrl◀a=@Yof0vF׶]Qz(D|bI@\LpW)A<(z@3*0YpSPg8ѣ8h0@<4XeLWM06 n 5k*:nu5  k99`YQC-V1Xl}4{nYsE.pEd{0a|%b[zfxw/7-Vͬ|Cz}@sfF!{Z0 tO\T *K?7R!vv뾸=n52#@1ƈ#' o`-+>8JohE&҇<5r6EM|AԿ~Zʼ̮hy8`4`bп(&ej̸6ЉVyfkyg:oy:/S1prΈ#]$l/蘂npy>3tZ:]s>S G<0"Qrp飽Qޑ壁cŇ\7ё,7omwc"ۖ!1S#zvz Z/4hGE :A:!BD66!TbJM ..ab vCPw>FF,v3 CRDF)"(@pߎղojZ޻ q xjOø&j\i05B)[ΏrAeJ!=Ȋa p;+qbbXYF]}|I)Har̫b/UTx*pn`9^"(֛XM6ƨsM$ΧhhR\ Q&bgT&[H69Gj{ 44y;&;s' 3$]%RTr o=v*qҞ1빔uS@(- Dk_^1T LVԲ76f_(-M0kŽ\=aCv~l&W rjwc5ͱKtn·/.`H%G=41L?#yW?Pn+HPR'}),%V'gZE@:j u;.&LsnC⹍w7CYE{&YyX|wyמUEO]=^E1c}cʒ+)~gnjORQ엄~Ho/J˪xz sks:&O_v*cDՕԏVk):UKE/g%SʷŽ湕䴽G"Q}u*X IBc|o>GޛW_NgSs59d.:*ŪN|oݵfYKucvs7%&\|&E 閯@4K^lz$02c~AZCjQjHaLw&(φkOc @-rw|eDđ]Y8qԉcn[ˌ>`ĖrQy6?.\:_V@h8$_Fi)aut27-`QТXg) HD͌-&,4QO̻!M=!e2H"D.3x0Ut"FT=*L)RE<2 u[B=ԛCRϾkeRBɆvM'xO h1V7)LQ ٟ"\"{zEثikL,ԃHtÇ~kjzdq) GT%߅h`#@$6><fz(2)* tSBH5)RHwJ$=逤HԸ"=(8/kdaa +0XqDSPEWd>4X:C(Y 2FV,U]*M(fHS{:u=3)inULF!b]_/Cdw 5T6Esp.cjLdүP3L!x8%ɐ$-E`! k6S MYZƛ9`1s2!kX H4AώF7$i:hȝ$¦357 1 G=)M oOV.V2jĺYCoޒ>|)aQ1º gwqS*smD Pzp|.iNQB">Bҧ//!eQA˥`?M= y0βt,’2ͰLx]eak +J6$4% 风u~+`d'FPiMkD} 63頾fNqہ|nG#Bp*wFtG$c :Hz0wZSR|0k )y4(t\7W @ 146*u({(HUfSQTKdƴhJ~vcuqEs33]l$ f.ٕ@nESa&p7:$c=Nu`D}kYhI3ѣRi)jZ"Sb| ZjD Bn4V?$`e} x'mƱ:chaQX&GBC̄&,. CeTwNju+3(GC!&J]835f&\|D[?7SfN3 6Vn>e4b9>B$K>2%{&?2V= 敹3lFZaDm/^ڮޱݱIÑ!.OE5N,3%bMK<0;"gf8$eLpɢD/u6ڮxgd *: Ihm_esOuC!KdQNE~<) Rc5m_/) [)J8&~)ڝR|2LN(uq:ß!繷m'3|qxY6$6XdTvlIwq:#uG"[]i5ݖn5ݏ-ǖ쇷dۮ~'VZ]~xku凷VZ]~bku姶V]>ϔĐ2X9\];[;a֎Kτu5v"C,_=lJ_=nlض_e>nZ9_8};_)ɣ)9f-hIim6JT\r86\͆V>F).J$5*JAaĉVئHd~b(Y.{cUe(qWksUw_/7/Nҽw||}U9ݗ ɏ/6]ZM.MTޥiݥzXDإo7izӤ42ߤyP)aK ܥ wi.-cv]{U|}۴,W5!H%@v^srOu#\H.sCЅznB:vtubY)/sW/7v~?;Zv~uylPqn./s'1,3_Ə2tl㾯sW$ ff^֫JEX1J]>F9BjxXTVÒkc[zmxMmR{m{~i D'2h=H-9#@\ jԬ V z7R W.+7qQ?ORIeXWS˲UfxGw?\&Ŷ GdҋHSd2&.LEha Rަfxp(JYe9l)@ 小4 q ʢc] ɐCN &w~ Zzp='˭2'Cq )^y/柪79H-X53t5-a zz a2̇uѢ<ҁ`X`}\!7yмt͞W\m8E*q 1QDTRL!Q&P͸H9ɝo˸Vz#=֦GGAb1G\3`]+F3r2`fuHPyunUDP?L >Lz#"͈("W}ʫӍ!jr"ؤVR}H}1̈'`r3]mQ)ZوWݷ+ڙőmuƶ(K+/"#DuD '뉫M )=Kt%"@ +0ǗYwc/7ր5#|hqε+c0Q\ e]@ 4=#DCR2j!9xR+U ATӋ*I 59G L|ƒ|-|G0˱>.AlF#.pFrh |r2Sh ɧd};_!B@.ӫ7Lp*-N͒'o-{ëB{#J᱑ٷk5d&!ӈ)|O- <9U<i"b@`x: F"OW (*(ja|v4y:( ēu;/vQ@q{֘&0횂x]ԁ@\"*.D_JA.:t)L$@$1E0KONDlR, 꺬B /)`T%CwxH ކrf$c%@xJJ N ^Nƥ|E/vcz2PDOXsxx2{o£Yfփ{HL3Dd xBO `7%"Zv gy V >pBm }y^vxy?*,;3Wn 6ۓ;kYz!nw lc|o& MnVҶT+JCTRsP)U98yTu(T(iU8U%¨E6U=:PA5Oe%խfy U- n}?acWۉ<{l=&Ed%1dOGM9WOpr Ej|b,?Y.|S _Ð q2)|e-O!_*ai#8(7?^Z?wrt*o=a #]r%cY>u:G$~3k:K)^L3\9)c}]Sf~NK銡ly=6 endstream endobj 3 0 obj 22282 endobj 4 0 obj <> stream x{W_bp !ɥ\44eLVSD"dMK.4Lk3teht/D.S)|Yoϭ39g=?Z3~}.Siaaaaaaaaaaaaaaaaaaaaaaaaa1OKK۶m|޽ӦMKOOOMM4hٳnݺ_:iU'''vڑH$11ݻw6,...Wԩ_>F%3gG!2駟OJJի5 oN^^Jk׮;wrb6mH>`K~'EEETCרQcQN,X@LRꫯ|׮] t|o6vؚ5kvЁQfΜRҥ q_qR^V-LzׯQIΝ{qljwR'-bK9yy|޽9V}0*:qH:99モo믗N:Fʑ:lfͦM;C999/lm۶)࿣ WwA@믿XYٳg3o[l;tIF?,}buzǎYb)߾}{Ν裏FxjəO<򸸸^{/R1޽{98LGnzݺu!+]^x!7ұ \{,?XoGUz.WeҤI@oCM+zȑ# P05 znYfW_}2W}/<5W\igϞ5jԊ+bͷrRTT$cƍ֭r4lؐ_z%,}ǭZ:/6SL)qWKJJڵkR_h+%\꡸٫W^5N;mQ:7իGAx_j.T@'lU]r'ZlYA5j(oФI{ϭ%UY=z[-k1ω8e.'Ov!ΐ >k!usLH233c=۷oRluQ/c] ELV_'᳆ vر]v7oht\p'AsE\K"'=,)σ_~Yyg{kvsE5m#K\~}|VV"5 ";;[+Rq`Ɍ=3~42`'SN9(L)Vڠe˖^y啑cá' )4` .)k&_oQ^݃<,_\@ R^K9ɣuw^w4?wygx8sN |Æ Zso۶-,[o2aڠL 8Ptꩧ VYb *X'qqѕfCa6<ʪv42W1T8khxD_psj뮻ꫯugΜ>va\Yf{Ϥ(aI>vZ׳3s't.?^. 6L IG$YX]Ido{#Li~Wգv,UW]&wMʉIL4M.a\'''Թ婧zl х%2Fj6|2ܜiGІX+ڳyIlDnKݲk0ZX!Henbϟ/ӵaR'4Zx[ZȈDcn?GӾRpg$yyyRNΝ|F*7"KG '[ӓO>8Xb̒@t_gްv!뗚ӧO 1ѩTӑVA}.at_~hdvCNՇ磻={ЬgiZhNceΠD@f͒{LJb<F>G@T+Ug2/Q9sH!d_~\BH]X 7+BtvMĄ?<3Rx)M ܨj wC#2Gn&j'gQ y)SHŰI8sq$9a\WR9+Jqq1\sbBBɰcRcII97Lu5zU6jՉ(nj#>s.2ҠAϽ`{zwB߿~J]Xp8+";ȿ+CN QȌ3'h[B)RH6{iy7O _S$fuQA qySpG혚H4Kv94%%%Ph@?}'?UXtG`=NO?l%#5 }h1M4 IMM堧OՎ%x2{*=}&ܰaѣ7ocNgZjqC \Hhbkժxh U;"|N\X5=NHHpΐ^!/[L6t~˖-Rkx_qXAiC4ncN܎b9ӥ%P\KSSBXv'ތ"wW(K λgnj/3 [gy^1kH1kW:ȸ9vf9!!+J`Zu"_xQ cլ HWGd}jjII QZD}y睷yf)c$%l#|_LO  O&GWHXuMٸ"u:@q3qɶիդ޽NޢE =y@;R/Zj[=..Gw„ }XƍU?X0ڵk@5k~3|p>Yèo߾VQWޠA> stream xzit[y=<؈ع<\@(E)L%QERՖr$%m=i;}&9z|2'i]7n'9ə&mqGqCp{Eʲ̜9g a}~ۿ>k 2 C#.?a%+MU:#j!ĕ!d6-9#dC[7?vh G6qYZn ߂M_ = #'X<>23fGƍ uǏ-.5?[C(2M׏9US= Y`ÇpFɜoR烏557w5gk~>!۲vƘ96Ф׀ubZ UFג[gkO95| .A|g?Wiq9|ѩ_ `N&@~IAFHF!QF#Ɏ(̃=w4)7Ĭxy$)+:CSSҤQJF cb"^#,N$$%̅\=!NL3 ϔs $WD(HOB3~:{B@)~Ŏ&h 9Ąȇd.(;IzL$T8-ʯ|`J%6%::d#闹$ .'Ey`b-P%3 6pT SHz|u )6.EY?)D D*dcbJFCIPd?}=r1{/[xY&StJTJ %Nt%όjBɨPA`!O45*S6QȢq ..!MɈ8'S !tFUnJl!Y@”"dٚ/OV#B= ?ݞ*M3Jl &{*>?|A(ldfK8ArZL>` | yp/Sd:I.l1a!Jh1#2t 'e;d3I/YqXL.(? #X#BLn7}zB> OPFC@E>C}2y I9hZ2FKڰ\_CYٰX_<,!$?VNET*F ||)|Yg9G>+@> j>!qs!3)al]H ʵ ]XSJH4"Jߐ3q,tP3HBRRF6pCbqj NGτ%/t9gU}Ԓi*k5,9vm[WSLbX)T}r9$ .T᭐ xH -cDqِ\K2l݌&z sآCBW!&J ](@~)t1vǠ1ǠqzfL gR``P`P`P`E\uEl{3?Z'HsSĻo@m3og`o"Mb[ث MI(k sJt9iG2w~¹3+׺ă|ݞ.p ~uX#p9DY*,@9+*Hk!þڮ7347GµMMv;X74ctp॓s흕=ʽcӷcIMf0N٣{lN͑&~b3O wj;|^#KcOTCi=RhhID=8<i[,k-R3[Uw-nV})PjKuMz?Ia%+]TydgGr|u[G#jS!Cx2:0GTEfԽa{j6Pi-p䋉X )I|݈bK Y9;sD7j ؁f;d͓0huV۴6\UK>bvFdj\DE0ߚKJ4V Ö^ Ƿ#麹ޚe_w/}yx죟Nۑ?pbm7нH0M%mp7F>wؚ \t8)Kڇ+\]G8W`}L<|oX{yW_>GNP$Va%Qz8 h6T.pzԄ `{݄[и52nS0?k(I1Z/h Y9,/~~{+~\d3J˲F_.3$МVDX]Ǘ-'q"RNgt&1|ɨ!)@8a5%P8rx1pwUċ)}慼=WL Vz"ZUX7yCE7z 7w=>>SɁrYRl!qRrP)U>:B2J=o7PldM௠LRGy0Vyܓ'#Mˬ^ Cc\rHQG) N>o\xӘXݮw0khWV} ʂ/h񚃄^F^.Q֚X#C :"&<;oǚNe\OVŶmw=9 VzCݫ&+};<;C[SЂd&{X~ՊJ꺾}ec-~5wn^ptA2MgpQ5˸HcݨhB{z=UX _=M=+38vS p[#J|.mKh\T+-S.qZzXV嗥%oM{}v ?{z~h K/N2/IG# v^AӢ@*g NjsJNtSܯZ,WJQx8"hpq\ E4{f`T])55ڭF=TR\^[\fpԍmL_o2R+K8؞*+k9tb=xpjj*K[BWnK7;󋭞}EE;v~?U-T#k cYe463R}9v73^ 77) uڞ+sgyzw\HOOMó ό?ۿS۞5CհӡV72i 9hxԽT z\7R\ն/'sp@~˓}N~~sS$@yCrƭ!g8V4@E шCku _G NzVT.]TA}X$V~$8h,J-%vVf@)h$oUhUYKܻ}io 9?t&AÅ?֦[9??d,tdV ?YU*&`ı̵7.啊|h3[j~ف,O-G_GF=#X(ۼm,'jP|}|r!xrpjhd2;6;W/MWO$`C{rDHGJaJ?sw{Zr=lʝ'|G}g@ Z$&<>oYmMpնC3\^76:[svj=B+l3TX^)Ղ` Q@|| yዷ@v*ȾcW)?>6ULwQM }ݰGyy7!WpQr- IK݌PXPMf^rURDVfv}Bɍv~J*vJݥւUc(MjW^ii}"uB`WFx9brwz_5}LjHET{ﭣnQ婵9ZWK *|;ᜭpV|:7G.fŠz%?F^9q$cï="׸YkiV4k|(T YWje]n~3tyvݛG/5>cxi|MLn-(AxCFV @dB~zU@{S9T~<*֠aRa你ZԎTap$:֣ RgT؈﫰 rz6&>wI" ?SaJ5F nUD'AyPlWaf_ 1tfN y;a\h,Eg(Se4°:GU= "-@1^죨v3faTsFU {)t욃( EG.>sskw}@Jy,n-2ga2ۯXb9 8aF6iQ4 |'iv xNGtaPgOcR:wEJ79Nc㣠[a"L3ȦD)ߏ޴IbgReX-9Q|@f _GnE[NESMw>I}jw 9[(~8,hai" g)nb]gWsoxIdT=utB2x t#~$F*,ÌxҨ=@pG#*᳀}Q.u`vq;^b9darw32,&qw'2\gpI8s0 +vTvg!=#J%<(9>%;ְEk|"Ppz!A1Q =SLʱt<ݞuH@)_N}Cw*E9. 1<6L4zsx?!f endstream endobj 8 0 obj 8060 endobj 9 0 obj <> endobj 10 0 obj <> stream x]n0E .E ) ~Ā}N?@hG@, ߗw.]ظp9;ÒSw:cmΫ cVjݒV]9cq[0*ƽiO'%˿އa_c\~\T59󵝿WKx%WZ%Q|hNjVEѨ~d~s%sцZԢZІzmEcf~%K|W v˸D;QW{SG]w54-KגO :ooз$|r*qPKAɃC*|,zizp``WӃsn4=|ML;I>-u8 -<ďbȯŐ NCԒ_ã!^=nzx˜?{q,de0 <ͨo]; endstream endobj 11 0 obj <> endobj 12 0 obj <> endobj 13 0 obj << /Font 12 0 R /XObject<> /ProcSet[/PDF/Text/ImageC/ImageI/ImageB] >> endobj 1 0 obj <> endobj 14 0 obj <> endobj 15 0 obj < /Dest[1 0 R/XYZ 0 841.918 0]/Parent 14 0 R>> endobj 6 0 obj <> endobj 16 0 obj <> endobj 17 0 obj < /Producer /CreationDate(D:20241025154604+03'00')>> endobj xref 0 18 0000000000 65535 f 0000036524 00000 n 0000000019 00000 n 0000022372 00000 n 0000022394 00000 n 0000027089 00000 n 0000036837 00000 n 0000027110 00000 n 0000035255 00000 n 0000035276 00000 n 0000035472 00000 n 0000036013 00000 n 0000036391 00000 n 0000036424 00000 n 0000036656 00000 n 0000036712 00000 n 0000036911 00000 n 0000037047 00000 n trailer < <24C86E5F0397A773E31DF75F5EFB3A3E> ] /DocChecksum /FB44B948015BDB7F797E01B1FB8E60A5 >> startxref 37218 %%EOF hardinfo2-hardinfo2-1331e88/tools/LICENSES/computerSVG.pdf000066400000000000000000001164661474767047500230370ustar00rootroot00000000000000%PDF-1.7 %äüöß 2 0 obj <> stream xˮeI6?_q2zcHPYET7ёH!Ԁ/_k N ]flfק?z>]yݳ~W5}c4x8 {|ޣY+~=O5vQKZ0r)ut9Ƨ{>ǧZ3o 1J DV _pޞ`6s/.8B'|?ͱ fܝQ&)5uE*yM`u7{0(ks޼^5>G^Md$=WݳZpiy/LoA ܂=c1<猁!ѢrcƀкYRcKr-5r b Ɖ0/֚;syPM|*.o t4w*B|Рk`WrLS_/:>][`j$+x/5Qj!A!]\kyX`E En^9f;U-{ET/V%o zekMkZϋ1S..m=Rs`'1zl] lbKh~Qt, 5`6^H%wƗ.c` { [r iƁ5L $#gsNc<}.Td@h[s1$T١w_DpX|Z4#~ >oh5L7uݐlb>M{r{Y"|lwDEElZ"Al-Es5 nd/ [e~믥PL5؅Ϛl`;^b_DL^is dmȆ3⾧,zV}BwR6Qj** E& =m"e"0G(ٰ+k]_XԌ8mid% Z<gڃYr%nV{ƒO,!CVMUvj(G τ^0HTCv.BXFa5tEeikXEHH MҭD,)8/AV5 XrvX&Gu KI'7l!a: +ūoAA,4Jc15s c푨3k5G `19TneI:c.N+eВdjr/ńYdTX)XKk[Kˣ-T7-5B,;GO2_"-CVKg|u}Y&5Z^w6#D[exْ<-_0-5eWI_Č"A;ŠekSB^&paի R22d$8Vd'*KT&RO'[ eSe\Kck7c:FðS6 l1tl'+Om9ӆIAΦjpnKFSN'5@,RҺKB\7TʷAfi&y)|{HyRaWMIGV͚8ObF|adr\B-wktZtIp屬eg-!X#qG.*Pti;7mM魻yx[66gyg {IQƖҫug'*}|85Vm~ ~|];'hو{9ۣ9P[lz[={Y\;-9Ks'bcQ;r8^[„75ҵ]+D70+[4/Sq/Ir0€.[7j1{X|U&7E\9>M?f;?8_s50IX 3|o!|uM] ұI x' '2A;P}E۵[~o'mlyJq ܨ<u^W}0;Ll}N=b.8&ha839(CS\8;,ͅSpDicE̓ ެiٗi-ڂ"tӷò׮62fM/pPr5x}퓺eȱWN@cƩ+(\2v=*sԃ1  Af ~^y ًu6Ikhc[ =MNɆUޗļ[.[gM$j|Cb}Ɲֹ˂ eGd[ڞ bZTRM 9v8L _(lRc7ν1vsv\> A܅q9Z[V .*LlXs)h y}_Ym.kxgK.;_Ʊ=c{f.A6oMxmh Dݠɾ# kپ/.f&[ΐj q{ļWuڴ֩}sSm:h@~/;sKK ݥɦfvY \n\mP,ڣx{N[{ ƭx}r>Vܟ?_k~i7\ogbֿɯOzGA!r\> \k1xAsA_VIJ97gY0;bω\k~~5yO \ͭ_Iպ:%EǕ[_ߟa#i;V?sA?͟`=h !9]?'uhD&+m_,#[2I W (poW07?b;(~6f f_M,O4lh;F[5R%vhgi S9_v#/s|,>-cɧD4\?ȡrEdW]ol@Du͒Lo}#R$9?ɕO{!ź|x_?-e%Z?X֏@&M`F گ~A̯hZ )T|= #Ĉ>KlnO "K$O"t i| Do_ <н.hmnlj[ :j.bVܳ 14$ DEwp^c McB~ȓWX JUMMU8\cH]'`xP RM^>W;2; n2 )n2;0hbb邍I;L"OD}_AƉ;] 8S.֘;ico~f" 2E BL '%b]8qȱJvqC 2gӄcTyKվZŰS+qZ'@)9Qjs+h%s$-WrN_{8K 5a6`hy'@\a/q0-W&g ua;gb]ת⬝ =D֜+YtJhq L\mnfLn>n\n| nInnڂnL0 2jFפlrȦlݰ|YeE}Y~D~K/pMU+\pbkinړopQij2}T`L CsS8#yↆ^љ%Z8LrK;Q3u)UF]%,i)*mSŭv)v)ymsms׭%K[`0.n]HĻ?05Eo]k]k5WךG Z55WךvwVA)ٜh7\wlV+eV-F5f1n35g7k985xd>xh 5Hȉ9p.h\ ͇k I6?n~2t!\kK(5t J2Aʇg vTq5SS-Wְm=}]Z~}u r 5lKpR[ 0=G[UG1Wʭ;Ա&py]q*߶+n W?qWr9\q^`8~cG]m3SR DCx%Bo wyXCZZMD R&Z|#^jF 8̰&bfQS[ `yC 7}ߜ.i5(1;ip#58t9!:lL0C.f0):ELd.FP탭%0r67_ՖvpeٝNۚ옭c5x޷o0΁P-+-Z 0c*/P!r*YN 5̉ݮ8,[kO{ DspfZ}p}NgMGWgPr5:a#gAjDŽV?6fD+M->*b˸k+ܵ:Ju-tһ:oBƽn~ Ô1 cd2x+0hm$EtMfUWGזqf۷\Rs-O E#(;f+HЖٹzr3^$kUsXc3CFS_B2RhO}˝aʡY)ٗ*,e}~`Sff,9FLr:V)DM6t]$]ƌh Aq˨ɥBnZ`v5q9ն9]]쮪Ηui;o"bH8bFǤ+laLBî3?,i#7nڨqJ=RLuKtN}wwV.twycXk/~&$ыIK=^Om\ᄾ“Կ^i[c]_!W# t̼f^!Ǹ*ҎMus繍"`7ˡ {l1#hm/2-ֶQ*FXױʵ2(dݱ6꺾]7;70U18Nr7dd0m5lIqFz&y ]nbƟte}+0}׵>41<0CpjHhŖ n,DCPtۖ8/B((֝39ۡOO:`k7 z)ݧ}̀}o[ Sp08mAWxlߘM>\}.>>e{,C;[㝁[I@i2Uޥ(%!aK»3)Shrih857$կ^lk+~K;S8p;y. 5oB7Rr|c+F.Qld3`hV>"'.Ws␥($tY-숓̬ Q헳aX8Yd I^f97&n]fL."D}(pZ{GX9ۿ-?ޮWY˛Q?|GQ?|Կ aotB G乱HˢS;P/Tb*6j5agܸn+  c1W}/ ~1'Hw'<uwU},D.( T~…`AO:ewH4֢Ơqӑ,TN?h|75u嘢7RD Kq$>.?^~o6](i+镖e0gFVjʹ6)z pUXX_'^1!u܌,ν{׺a _-[lX 2W\uqUMoG~,ºj3}3c-l-܆"0",>1-]1!srv4q/~ک~I~ƴX+Kc5n|qCXz3UR F[*vwFvުVԿU8Yy/'Ϩb_u%.Otqh!<[Gjx߻DjϷLџo4oh}?wsF34^4CNN3QFm7ap.7M7n7&n\MZ8q6ysm=,s8?'||{;*~ꇫ~%WL(o~Rk}!iYaxX ,[77&ݺ4PKR#>3c‡Z rC|hQS> tLݪlݳ板ArnRlrsKH^ CG-%<>xqtU/Zlц`*v-_y;K_W>COGNU[$l8|,rl0Gl^+{(JD!0xȻ[OKV+,ž,/Fc?SH^DR+0bzA#>h1ԝج[ϝy7*u<9,Dfa57 WI@yEAbk[A#.ki0r[tڒUSa(,<%j iYx%$1a/)۽ E+EwSeI\\\|y:펍I!?ӲԊ|IɈel3g#O|(bEL7k[!mo酴ZA5f;C9 $@1bcމarRJX̯1U#V0|O 뜼sLdWELdK+U*reE sfFt~riWo_@pyR x! h8,Klx<PJguy?a[ UƴU-vﴲnm5`,++XWOA;N&q)W9U;{.=fo?`^BB*J8!MHF3bdRrNL 5 xPaf$|fBfb69A>9~m}ss~q t0bw f83.!f]qAJ{w;5kABcp=@豌 i(sw36Eթ7!@Um⋷a M8F&}^i[^%`B㍠#..}" S5(B1k$t)Eͽ Նc^ohWJUpA9mcgGlú~pѲaGJZ7b,CG\9=쁖7ysc |e W1|hû(hQ/7?<]ϒ-Y2oOw?2p\VG`bUC;x`9c o)/ L? h(-I98Ĥ8lY&, , F .%GU&" 72+Q=J=zNCgz{+lBh5u lrbbYDWf$-]I`;HQ2tU}=$ MC䐐F"đSf*T'傆,x`s-.Uc*Cc̕$4:͂:- 2G_PYPHU6H`[Ypk 2܌Pg;_{KL"P1O.1(Z&S$3PfDBn͓Oak1Hrct0u'~a-}~ 1DS=ه YLfcfn6+܌993nnty0;vv [b&aChڛTR_Rë /X}їڂ#ꆽ 6Z(} ݺth!1> oGamjn4B@knC"24[϶.52~Yw 8{ [~{h1{1xmЍK&XS^;CsH0MkĄ~`. M_[&YskDincV[jbF^͔:g"џl3O08Ez*kfB(Һ"h| Y!F4T= f)0̙Mp?Eɖ6;>FU!| :n0\S ܓN2%^4mBct^vaN\|hjy+o^&U"?8lj[ZNqy>$.`'$2T):N2>ODRVя. iԅQxYYrOgDq`m(,QGʦ@^ `dO70#)PE&-d cmR?oJ\!Y[Q2>w-VU`wtac0Ս1r0iup"8$d4d5f``f%]܊ Kl"D2lymX{=P_d\"|.1>H= :Kv)Z BJa+U&@LLs`#`Cɀlڧ׾k-h+cשVW!omc'a0I~I0PqDzn]@alkz>%ն…$V:wj$٣N߰k!//g-4ǟ)3Z.82MN 1d0%has1fEN'vC(\1Ane4 <<D(rN@I\x yiB\ϻ  EigTpit,Jny_5|1Lvecɾ88;`21DE3nAD-/;±[@OZрt (qzZs].PיTP577z1U>]ct il:\JR[.NjggG݃ɂ$G袴tYt*n:8[EW}p5 Kݖ J|xxþn7@FIG Ѥ'&4tx:B|&N] hG0hBûЅhR4p9Tڒ,:nI_uUەؗ 9Η-L>u2[)~ 伷"*hl! K>xr7B>Vׇ;Sq'IU_^xY 8Z{ (?9=0_툢wtpEٰ+ƈq2p)A,4] .N-NHv'+b3ۻjE'i RRMbRObЋ۷6l6l6llh1 _v<py3 b&||֥܍mp*zx{ J2 "3#< p~psĻ7PyrÚ|axstE!OSTne!:1r,8e)N>ƙy9y& Ļ.c vdc2oHQn]Jy9 ]kBt0CbhIL`bk;zLL-6`8@Jp!81>AS,nSֽf0`V3̜yM`60|^դ0n\XO*i * FVK#v+0`L0a?ahscLa'UDbwڃt1+LBצ|n^i!sA$.s3^4Bt.|!/.,(zaCeMȉ{;8H-cD!]aZ홖M}D>`3{Ff"|f@"4/A/3=NO7LFl[ 7k-7zL7m7&+nqC"6at{^|8 Ho=pO?=pO G{!q :n;k^+)*[t!f x*hvz >[}W]68灘u1^s^yX !_@\3kq-mj)GJsᖂ$x3 c 9ytĨ*Lzy~ZkymxqۈA9Ȕ[ǧȃ-: Q㘔ݧl_;Iu':^G#ۊ±(\zeL(JY )`9Ô\SN|* vb[cd׈؍Gf#|Ϛ}boMS[H\^9{/fq5@9ۮh[Ge X:@ -tZ$Y 2r`7u4"Ec`[r2d=\37Yy5q{>VEQqɏZ1 /ފ5`^pƳ(M I@1V~J ݀]dqT=HK,å 0eOT6 } jGTqskZ~_hq[X`>Bc(L#uZjrpY)u}7! *{Xp/X&Z@X(лA 1zGQDE~Cr w$ZuZ2@,H;Q3<`D`Vނb>D֫Mc [_Lb?݊xbVa{Z%vd.QTo>#,%kAjCqYLÛx{r.]{ub(Muk=cI`̞Y"$1_x]/!](e }(pJL+, 7㲚NT.p+a/QUpVz1U1eVCE*a0mbgi(s:LjO*)(?e8gSs'.P3>MbaUTR49 =D o&nȫC$aoDΉ'+-Ytj /jyD5X3yְteIO8YiKvxѬtaDnlfL4Wb'ډav=3]mLg^i"Hx;O0#?FGBX;D5ta3]`JRE~Ⴓy@iWdb*jvu!`i fX@MPt:t&8,f8K{b#j6J7maP ѩvYAPǹ387Jew ʐ9 ed/dhR`r8TeLer$%z0AB*4v_( mZ[}T>h >G '['ݶMN\]N|nΞG?gGgPmb]F v){w9t3r%y 6 ǢqM"!{CeP5IU:%JN=E^bׯ&u}Qza5w9oszsnaG9UDT]RQIGv˃yꍏG30i !j _ZIr[%SwA %ymh {U` FWX(nV|sVY0b5^xW: (#p[_n+Ja W!{04Tt0 GaM>ob:PDcq=4oX_Szzll樎*,K"͙^& oC'15 C(͝EG; \ -FSؿL`ݿdC `[^V,whYzȨ*50(H$TnH7.C+Gb\O-jI]Ȭ _nԵ\i -~ݐ6re?:$ٍ\Hq7L -fyb_`\%^ .,̜B̄WfOVz;NjUd/98y8 jK7>=ߔPEkRX;I$_[' J/\e[=~Q@[(,Byb(}CL^p:>X\syz 8g{pD 2DƦqȔMԅ2i:hrm b!b{k)o9Ob =mќB+^ƃAq;ϥPC1<+( dK, pU:s#[;I=FP91DHқV '|fLX"qbKmF4=cX`|@=^TI]83e% 5o5?}YBUs)=:ڼVfr\ۓ6؞1o_J€X8`N[Mwq?N y&COT9feBYU\l!A#|h͊k_ufݗk-#I7.W&EO h!U ^+F @t|pDu=|V '-k=E=,WEUsa?Cc<Zq@0Q<s)#+RTB*ejo[qrkp(\@ T(';!XPFS@U/n]g$gcL*@' qs(\[>&PWH/LY*<0DT92Hijlb״|Y[Bz {=kOrEI<1Nres4uQJLcsOc ^v;KQ;9-EW9HJ2gTj??#|lGIduڏbI "Ow, bLNg_ 0 4.i5^mw ŘrS Oѻg QJlb"0 5ȥF;ar'hWDPS(8/̍7uh܌FNg>'U_J07?xO[]8+F5dpkɠ xS{ xȱ.b,l/=4$9=RW,:cc<;dX/tݔ ٔްNq7f1B1AxCv6C41 8O:T>DGAa:~@FFesa30i)0\Z7\v -g_^0&Ɛb՜XE Y|TF[ UƾfݰtΣh|>j硢3#,Gp;!UpFX~8hm(6fG,>Ƽs`{.]NsCD7-67\utٱێ-1{:3z3C jX&`2&`2qm@Gހs|w"pAPiD[9!\p7\[EWo}E(TFe;x[!_*1o'78oW|#%rU|.(Ϟ?T|3_@BDW7&㫤ǿ?{o!;F3# , |闇_IC|E\}:ׯ1+Iv~mkۯ:Vk+H([2odba+8??!w IPm5iܩFq?/a+@*#>{h}>7\}}uK5ŽW<<6U=ŽhwPv\_S+oou]:vBWܩҜ|h Wi*G;UYXrq;qYjÙ{_#/Sc0Rȱ7bHȥT:˞N@2툏mNPoeZYWض_*WG'^o?C`↨D7z. q#L o0%OCSx8;+asɖ2PlYgX b $ԢR6r0 bҧQ*Ky Tɓov^}70B8VLd jkgPKg*.t؈ y6Khl SİWsg]kHk#Wml0(E {0.E[gM,$݀iؔ`SswKY$>m۬jV0-3-mʲם-ShLg(E~ӖU:yJ @6= %艨&awaƝ2R'| Y_AF/j$!>Fn7Ԉof;C,3T{z\K0S)pe^ !vj5^JT93<5fP=F"_fޛU|W16"[WϴD St4F*dxDF2=-AbDjxyc.3!AO!n73:USObLc\<Ƭ!ǻ :JU*G Kb= nEJ1t=`,냯̉pV;?y.`֧˟ ȥƻצmsu7RlZ 12f\1AD%5d$L[3(3.oЍ@Ke^ O2.%o# lcنd[}%U RK=2e.#/L*8|z3(4'@ :   ר§$:dvNј)X?}.mSYj$4 (D<S qƞ,(޼,^;|v.=]j)RLN'm@qk&c86Q,0"hD3u2920ym*˘jye3RCC1X_J]0F.ԅmu7Zl%S+PF %Ͼ.ɾ2y'r*Or ^BAW_ڜj@ܦ)j42"3%K#Fyff l/m/D١2(pn\w]戡 K`Ӿ[iYPO "<$%_OѐKPeĠP>T|m⭋"\i6036j7>'5_^9Gllz$~~~~>߁,͏ޏޏޏޟ^kcWcW]ɝ{Y{<8p |y W>\%'sP5rx E[Q!XI,Uނ G{&, Ь% X wVVTx-Ao^gLI[jc5V+ #>{\mU6u1v Ț_C@[埧V嚓*Xh>S49E6˘%0\q'M~&Q{(Z=0)Qճޮ AN9,3`E`hU>zִ7fIB?==;̛-}P{1?c}NzYz N޽Gcl 1! "P%C$xTf(tCcwXT΢tB7S'ԭbu bejqfסۡ"*E+~6P<-=HP%Rq+)&ukiqm<1Fȿ?C&wt*NnpWz`갶 }BJ1'նMz,kdgUB$?zwf;6aqa/X =-ð?`1^??!Xw'c^8*.|'i-,u̴fJԩVک|MX}S,nϸ3%ڳ?T!:b<ӫhŞbQI}Xpc$Q3}}}d Q!LyDʛ!pqTL 6 5F6)#V.y ^5H~&6薬x 2gOO*(smBxڤ݇;‹?|a3Bl!b+cm~i8giNAu,`D 1KMZx++dn Fmhp >kZdGDoѓ513#L+\ An&#ZꅳV8zk7z?<]R\BaYMϺT՚\W)/QUo85^lgigڸ2m|hbk[a4-MoXoSJ?lq/UibI }7o Bϣ|]f1 P'f~NzT9^6sYFYX@@WKNڥ֥s02Y(ăMVB}H!-MR* >GoYs YwU`!%R3ﳞ>ժ7U-9B#7NFȾEd2JL`R9?fDQSO]|ȧB,C]Vdz\<5j5@w$7a𻫍R֖)\teh#1MQJc6EMߌCL̊j6'nɘ"ce 3C43g6h`2$̧,ɘA&n%7\ )rfI1 e+yXx4YVETzyz4fYP]/,-$I:/z}|k$Kik"OQgȏ!x<r endstream endobj 3 0 obj 23534 endobj 10 0 obj <> stream x{W_bp !ɥ\44eLVSD"dMK.4Lk3teht/D.S)|Yoϭ39g=?Z3~}.Siaaaaaaaaaaaaaaaaaaaaaaaaa1OKK۶m|޽ӦMKOOOMM4hٳnݺ_:iU'''vڑH$11ݻw6,...Wԩ_>F%3gG!2駟OJJի5 oN^^Jk׮;wrb6mH>`K~'EEETCרQcQN,X@LRꫯ|׮] t|o6vؚ5kvЁQfΜRҥ q_qR^V-LzׯQIΝ{qljwR'-bK9yy|޽9V}0*:qH:99モo믗N:Fʑ:lfͦM;C999/lm۶)࿣ WwA@믿XYٳg3o[l;tIF?,}buzǎYb)߾}{Ν裏FxjəO<򸸸^{/R1޽{98LGnzݺu!+]^x!7ұ \{,?XoGUz.WeҤI@oCM+zȑ# P05 znYfW_}2W}/<5W\igϞ5jԊ+bͷrRTT$cƍ֭r4lؐ_z%,}ǭZ:/6SL)qWKJJڵkR_h+%\꡸٫W^5N;mQ:7իGAx_j.T@'lU]r'ZlYA5j(oФI{ϭ%UY=z[-k1ω8e.'Ov!ΐ >k!usLH233c=۷oRluQ/c] ELV_'᳆ vر]v7oht\p'AsE\K"'=,)σ_~Yyg{kvsE5m#K\~}|VV"5 ";;[+Rq`Ɍ=3~42`'SN9(L)Vڠe˖^y啑cá' )4` .)k&_oQ^݃<,_\@ R^K9ɣuw^w4?wygx8sN |Æ Zso۶-,[o2aڠL 8Ptꩧ VYb *X'qqѕfCa6<ʪv42W1T8khxD_psj뮻ꫯugΜ>va\Yf{Ϥ(aI>vZ׳3s't.?^. 6L IG$YX]Ido{#Li~Wգv,UW]&wMʉIL4M.a\'''Թ婧zl х%2Fj6|2ܜiGІX+ڳyIlDnKݲk0ZX!Henbϟ/ӵaR'4Zx[ZȈDcn?GӾRpg$yyyRNΝ|F*7"KG '[ӓO>8Xb̒@t_gްv!뗚ӧO 1ѩTӑVA}.at_~hdvCNՇ磻={ЬgiZhNceΠD@f͒{LJb<F>G@T+Ug2/Q9sH!d_~\BH]X 7+BtvMĄ?<3Rx)M ܨj wC#2Gn&j'gQ y)SHŰI8sq$9a\WR9+Jqq1\sbBBɰcRcII97Lu5zU6jՉ(nj#>s.2ҠAϽ`{zwB߿~J]Xp8+";ȿ+CN QȌ3'h[B)RH6{iy7O _S$fuQA qySpG혚H4Kv94%%%Ph@?}'?UXtG`=NO?l%#5 }h1M4 IMM堧OՎ%x2{*=}&ܰaѣ7ocNgZjqC \Hhbkժxh U;"|N\X5=NHHpΐ^!/[L6t~˖-Rkx_qXAiC4ncN܎b9ӥ%P\KSSBXv'ތ"wW(K λgnj/3 [gy^1kH1kW:ȸ9vf9!!+J`Zu"_xQ cլ HWGd}jjII QZD}y睷yf)c$%l#|_LO  O&GWHXuMٸ"u:@q3qɶիդ޽NޢE =y@;R/Zj[=..Gw„ }XƍU?X0ڵk@5k~3|p>Yèo߾VQWޠA> /Length 62 /Filter/FlateDecode >> stream x35г4U02131T252352(E M MA"0]0.S4sr2Ҵ. endstream endobj 5 0 obj <> endobj 6 0 obj <> /Length 62 /Filter/FlateDecode >> stream x3036P051301S264337(É)P &efNBB; endstream endobj 7 0 obj <> endobj 8 0 obj <> /Length 102 /Filter/FlateDecode >> stream xU10 ݯ܁Eɲ n;$֥eTG^ ^ޕ x|L#j4mIK]S-Ud%@ endstream endobj 9 0 obj <> endobj 14 0 obj <> stream xzit\WzUMZ^IJٲrZ,ɒS%9J[ɻcKc8iBBO $YÐpzLt;i L7 Ш4߽I3̟Q{o߽ɥ9dDb3G'_~ !B6szQ|KϟZw!!1sWf#;0qг@e:\C|+>2Ph_9>ow}hzbj-K~+ O?؈bKtɹ_0%anG0@ k@o0̅p<^T IʪP6RWmjnimۂ  !.񭾻jlE^Rm۴^& n R08^@}\uu@8JBTkV/'N=+q]4y7Oc/(B2 2KvD%dI/WkcIT_!R2JHSZeqjV&a) je.,NO85G"2I.Q  #ىE"RaLPr.u݅ [\Hv&t=ٕH~qV9$Uؔ钅d@*R#I@_Kt[nP[*%fl Ԗ(z͡ڸePr zD:P ZSTڒ$eG%*KdA3% Nf)R)U8 HT _N`T,0u&٬v:.A*_aYSxMke5Ԑ?=JJ@Jc{0zQYa bf4"2 0"kkj傰H5X<)96(S[}z%5517;QCBDIijTlE?0L+;%L0].Yȿ.I0Ɉ.X/R5ą,!]lVUnJlhY@”"f`eٚMV+},?ۙ*Msrl '*Y#EX2k%d 9px, lU %T} oX$8L{R I&"d@_ 1frQѤlbl3IrqqE#+x71 ò)J0BFև庐\#~5tDbygB8&ή$$E*etz>),63Λ5!lo G.ݹCj6a'ܞt[m*8 o!W{hJ^#@IYv6V]. h< 5lHE$Qv hoF# =YylQ9%6j|8ʹzH!uOB:E+YI |"xfIkn1xqX[fIɩ$0N>@2QAfu!B&Bjھ6$xCVܱB*i)jHRM! X(F֒wl$7-p+r1nٝHaO"z쀸ݹit?i4~۹6#>lΰQ> aFgP| ":uP 'got-/2߬k?69E5J'GAcr"O=i hU#CQkZrw͕(E֢ΫHDͱFK!+!א~ 8g49[ӕM;^}S3w?m`;QYSvvy=,P8p(/0@=G0Ea-44~/0BJR&ʵx7cȈ'=WNg:BU{vfě=$; =6Nn~rw@X'`~`ryDŽ:Byp`x@qۭf^qpc+r `PA--d3k훂Wd䉡3:h"}/ 1&r_#)o}aA-2BT4=;<=MFBIAlG;P52[^_#k7l6;D %ʼnb+fjyF5̠Vub)TN6`:{bt8ɽN,K[%}Ղ-Ch0删)4cSa<~Y(Aչ|\"F5URcycIj TT#QUe3f_k.Sk`q+45=U^~ SL﮶ķ%<Ît]WS\ScG._ONTwla60qFI%Մ&0lt@UUK@nlcK 0g.Ɩ\}݇ڏ 5މ!jvׯnQS&8,&9.PE*ta=.@q֔?(8GFD;ۋ4%ŻN{=g^>vrw牸S7ڀ_ZT(-iý'5Sx/TɀT`e܆3w ytgWjrɭ[ǣ3u!2V<8M6?vwkj=Ӿmp; DKKA2(+A:ӈV+o0p|I4[oE?28:4Z2|]SXlH # gRA|B4(7tS-un)r:B>j=pqm%K;GrgL}W$8P`C|_xN}@]Gg΂zQ";b8 9)Tnn,a4+ l[[ΨS:\?- _wtxHp>lUVjtC|ٛ{|{B@WfX"4A) *k⃇4uW!\ܞƳdžks{éDw*Tg0 ߵG{ kW]N+C<ȆzȄ\!֢;M|A fTmئQSj~li.OM{}B#h<t2P%MT%|h gјd 8ׇb,E|.ZZ:da:\BB*P(Su(|BZ@$/~l?×>rer/V(U8q`>R֪pZݔK , ZNXDiL:b.DAQCSyp&ÌaWo KHD#!wCZyGZ"@cU}w(3CgT}i +J+B |Ay%&k3V5W(@q@IYϡ֣8\0TvaTR*s`SxuGJmT6/C<|bW %̎%S3.=X?j^^/{3%MNeݙ¸ ,E7ڇ{5c&GzkE|*q?JVrC֤{Mk 3E#9H`}nRj$AaGk!Lw>HB rF19㛟O xvVm߻QƧ:v#`ǟNZ=q~ D.Yf0#DN^aS VPBFK~}e%m]TI>~_o??KZ} yЮpVwA{fms[+tW7zj4V9l~-_;.%m*o)N%SCUN6i6i2NS4'"meCpdvznP4\kouWUxjbi*V ;&\b+7z =Z1vQVcB6ٹguh;h`;+X!?E+aiNO>;~CypzX%_K>1>m [ۜXTT[P76 &׻:P?_>2}_ 9;_ynO}FɵB]a# ?#hFp ΌA)ǫ;Tǂ>lO6^XE RE|o 7XP{NA8m-<$PP9 pWw&Y/k; u UqQ9Z?}sp)W8UGdYQIo@R- `qY]*;Ip8l݃s }uxrzߩ`=Оbr 4vPXyr65 V[16g-rhݡ'@+T+Ӱ եbu HP-<"΍oYWz҈|旖K'jNCK܁tf`to_9^=>3ug˟—K>> pdqEHs(98=x)}\ݧN7k'y |ʂ±jM,ˣ BB@ӂfo(2b E? ֦[`aVȈ5Ts~Kd2Coi7)5[ 1[ =$:dc$xe݅c;E!#8r/X4XlWqޟ'X|@Ho%ZУW8UPwLr1:Çs 7s_ݔ^g+5*pUZa-D@%c(.ՃzP;^[GZY V0d غvESqqs)]y2ZR$ew1Vlq_:|j<Dro >̽9{#]?N*]YTPYZV;!?ਕE١[8lay%ʳ Ql2cR6lXJ"b>%+,YA-nhQT:pC x ҳ5HpOFx۳S 1y[og%=oLfv] sf*9?QE[|VMtDVa^KiǁO8 !޵8 *`w: WW9m6GbGPn SSFKZZL*aSN fh޻W顫-[-sWzFuΦj5[CRcMf ^iݖwevuή{&[ q~G_}Uc΄B^yi!8a?z8-*-H KXCJW/h5f^YkI -^h=|08nX @n{fYi[]Jo%~F)`_;++ /UPV0쭴@ CuRAu 7dmCZO.#Mz 6{v<6ˉ濭$Axsp>>$8A`1pRF.'=& y`>`  `~v?A;@?FcduAXh;*yx³5$;n 7$.h#CF/ )XZ?Fi" ?Sa4FRG'$:b"UD e#D4 =sExD4!a;|$:*Fch/)Fuc*yxt &P-: k̡ϨAhUog/9Vҹ#0+Qj'AHӀ{AϮ]ae*AƳȤ9Kl2ci4DPCqg]dV=utC3xt#/FOUa'X$FGK:{BGT8@=9 Q5/ "1&It7!\x+Tk暗8KP , ± endstream endobj 15 0 obj 8098 endobj 16 0 obj <> endobj 17 0 obj <> stream x]͎0<|m`F3菚p2H@YR>{o=?ݢ{ws.ØiQ-ik;gy=>nZezZ}w~/<UdMzw|moЇx- Sך*Իvηehjo27=++GCEa&D4ؐw`K~7pEud)/ȯ15#ox˚\[=%.^Q_G'-8ױ7W)f 5u3C /953ޗf}IMR 3X83ff8S e<6֧ow*[d;a__ OCko Mzp0*:cއCgS1ӌ + endstream endobj 18 0 obj <> endobj 19 0 obj <> endobj 12 0 obj << /Font 19 0 R /XObject<> /ExtGState<> /ProcSet[/PDF/Text/ImageC/ImageI/ImageB] >> endobj 1 0 obj <> endobj 20 0 obj <> endobj 21 0 obj < /Dest[1 0 R/XYZ 0 841.918 0]/Parent 20 0 R>> endobj 13 0 obj <> endobj 22 0 obj <> endobj 23 0 obj < /Producer /CreationDate(D:20241025155359+03'00')>> endobj xref 0 24 0000000000 65535 f 0000038865 00000 n 0000000019 00000 n 0000023624 00000 n 0000028365 00000 n 0000028629 00000 n 0000028669 00000 n 0000028934 00000 n 0000028974 00000 n 0000029279 00000 n 0000023646 00000 n 0000028343 00000 n 0000038685 00000 n 0000039179 00000 n 0000029321 00000 n 0000037506 00000 n 0000037528 00000 n 0000037726 00000 n 0000038269 00000 n 0000038652 00000 n 0000038998 00000 n 0000039054 00000 n 0000039254 00000 n 0000039391 00000 n trailer < <7DB1899A654204267BCC869E20300636> ] /DocChecksum /1CC8E400CB6049C89889C46464630F54 >> startxref 39562 %%EOF hardinfo2-hardinfo2-1331e88/tools/LICENSES/cryptohashSVG.pdf000066400000000000000000001225431474767047500233560ustar00rootroot00000000000000%PDF-1.7 %äüöß 2 0 obj <> stream xˮe__Nj5I s!Wjn-[66J9ƈr<{ HtOF=Fd]yY?>FMƘo=?4޾<30oQc,?}мkojSM%n_\Z51Ts Br"]kط}q݄s\rz{>0/ZZ"+i1c4bFg'xӧ:'HR%"Iu"yce&-B\ӛ7k7Өɿϟz1/]ujT0i淠˂>7Z]EpoKc3o Q`iwG nj-N3ƻZ1(W/0x̓` qk l[ [Toܻs`|2s1xIL4wBP|1kvq )l (fZĨzjK X+r1Z[``G@$i K=lSk5z mMq\¼50%k 蔉{MdL(?]s$C[`.W닓8R}qu`'4zػ2 pc[Oh{Sr2E&@:)Q?լ9Op̡ƅXlK4^-{dWmf:%e-h:hK&b "M.EyrV~??5VwſܗjJU,8[ ֚k/cF1I$.B&¶_DpN =k^+&gb}`HkڞH>{FI.-:,`Isl sQsQ9su}HV$Lz.]2rZ[wׯi| ]DWUoKRU?Npi@7[Q kUFIZȋ5BuؤkL2H^3wq~1ni¯Uj|mMSAgKkrm015`2]-#s1l~ 4.MFյPԖU!yf:$S*K.ynfY"IIDUO-P!P+T=y "qAn@ܔzbm׭c12{'Zv g3p^QY`UB1 *IdA1 #=3/.vtݶ;op) ,R )\Fqj\aS0 -y`9u+/{騺o"-^ֆCѓv?Q2xX023C̲jck Y.Ʀփ ,J4,%4f )ZqtFOu\` <^4}gTbWxi*R4\G)ii ճ` r'39hwH@`bIT!FO5Qyצ}` xq`_%444)j[S<ʵ"No@,z-oN;?,-:,js.w,5c3sv 2fa{br'YPb.tXh{Z`|iFUi;%:B4[BLk~U6LtQ2[6Po2ܸ`3@Q;fSzaz8a 64)ϘBBPF3WtX<݊%S/B}/c(>z4wqDdZp=$w Cx߮S{l7No v۫Ve# ͷ 0g c[qTp5@aYhP!}۱ޒ +O :,xHFv-$z|"[k7*c0lTb$b @iU0>`ZY .WYf~sZlqͳR-Cwv"Bb鰩v/\g R69 [/t.VRf; ;Z9@.@w4nj d}n>b6.KLsCņV%U9s,X9"V7\ G'_!4n QķpՏBe?:O/m2}#ɡzq&F5 ׍3)?gr\քHW5_ӸAۊ2v^䚖5BS[sFbw*D i!/K?k[FO ,k2h:>,Sh3G+GK.A@[G%ːO !jl:l2cҤ;#]>X=ql}F%˰[s`A j.0Rš뤆+rRD~Ŏtoy-W]y²XOuŻ˳fzp?zL[cg }s^|{߭b{ױ'C5|שGبoȍQZkkXhؗQ9Ĩ}lVsv 8s6/#>[@¸vgg\PӁur\wc,_޽2:˞ju B,}bHo~eDƾIOŒ힗Jmkqp縗i{Z;6im&#,xlݠ#:_Hk޸+i]t';qy-fmTY]"d毙zp "UkeZF۾ַs9%Fd3s>i;YOjFW.ymf ?gul^NM?ooo- ko|sZ@׸&~?O_1B|br`CL7{_0?Tyu?~.3ϷaS$W}M|cy5SYMk|4 眬Â~d6g}zϓCmhclMgYsW":/szwNNW ϋ^m՜7.5Dj &L`y5e g.F/$4[D}Da[׷$+\Ol}gZ|L?j:-ii֚bUWrHH!߬Y.6%j@eMDjэIr5H/cʘ\lsZ3"a৵k灿ZK|V^ IluS:/,ZZo$ ot#_΅#ţp{!:xD!q=~SۺCsxLF]1Xi1T ʸm&m:ህq0aT[l*Z%?9﷌p@*C* O_+1`0s֍%ʭ[d\Ϧ ]%ڗ t?{.7}\Ϸ{ܥPWY\Qjs]h%IZ2%/B}`/-"z.W_"9g<)+ C2R1ՙ,>9~jƤ 1c~ pS)`^%L:YwۋRθ(ۛW^cV^c,50*b-5Hi{) j=\ g-|l Q U;4%to~Db =hk2ХbP=c um84~l!DBqGZ893NyDZW/8tڵg"%ݜMKl`+]ǵxl&oK^/A~UW#e“fR/w&7CDG?YW^~cε]ƵTmĪn-WuzIBԬIy]\uszh못U<>*Sޘ4}?[eWkrV}5"E8֗q?&/{c~xy>8cujp¡eKG"s) n)OzRyv={uO{ F9,X{qМӺMIptwr&37qlm`0DD0[:oӤ;}ڨ\m.>|֮8*YlWv r]~k?kEXmaV =}Iصh?ئ~lS?ԏm6Mr(ͳp̱fؾU;c*K %%*tOLR\K"maq@(VP8(Oja2 nV#<>H?4tx9jLGG rch^}t |* 5w'.zj?HԝS̨_21w;vw/>Ԍ`2|*+m@s;̤b W- >} [fo`wgl1&dE›TN|e\v9DB v'2j-(:9k2`<]csRmEt Q ʺ]maBtv[v}u[hc'dc6;]2*{NЅ,mT[!XK՚O]`#uٍD™*ӖZ``V9mJsmUF!#܅eY=b?UN]&s78A} 4)]A1ǰR>C͊Գ,# rarĩcGmACx sHo`L|_s*Fkڌ3Q0ʄQ2ꆰCm}kUoѤqɡ3bXg1lC/ԍ43qD?HدxE 57c˶7lli|ʶak\<8-Pb=m̀ >>e{(:8d(7h }6[ͼ  rpc 6> 6Ntv1  " \16N_ñbf60niT$:l`5zo;;lq[ܕ}&l"mT1.@^"o";˶k>@I{0@C ss`L`: i a0ی6C&!F-WNf{̶}G! 1qbƃn=&.zN|~jB ֕.KK_e0fjߩƫ?-[><08F\*\skܥ)ut껀poѾ!!'*#LP'x5x9ڸP&!!Q&$vhBӌXrxג^RtlIq[jvv/{-i[7NoyYp4[`-k[̀g&]9XnMwXvt^s^~z=y=Vn{!/ccX@!B"pk-$L# ۜ C*!F-kNِp>.cv{ՍOlECŨbCoAcƿAC5iCW\9=.L]tޔ9^rߔ|))rf{1rLִš&a} !ڮm{2 X'xzWe*/WeϫzWeWeqU l U׫2`2U]%ycZxrQś^|^Ǜ<}2&d;.xN}L_YW9ٸ P I!i!Ƌ2n y6ny6~? DsȔ:#Uy݁ɞ}囏`b/(|x!}s|p  ŕTjDU5YVqTt*E|.# Ae/s#ENb  |G5C^,v ZȺA !V d"BY&z@X9]Yəey ȝnƆy'F7Ifݢ>]b 6$%mUQ~)WX ~54E\y;ǂ *}kUZL@4"b?Uerfiফ 3Fb :b\'y՝  m`x<^*TCxV7aHrєPါn#j? d/<_cJ4)f޵kB)M}}.YU5o%9ѐ,Hz&ƿrWD_}5GM b2 R7Wwܾ[⶝vOr=4.!<]q,fqW,~bj^_s[j]|[j]:RmyW]I]]en[ Uui¨%\Y'VEQNa"au]6caˢEv|ۆg;Owdٛd;M}wY[4*lAw8"ck1 82l'ذ2}1&4iLmUvM){X{aQz#i=d+(dFEYM5Ecekkk1@͊[m[1J!iAiB?ycZ>(*hX&3`ԱG},/d ڙ*:#d6`?Ō@g3Ț ')(+XodlE]9z4~pj75mcGWcE>a ՏFcQبU6bƧ}@ " 19@WGm!eݣvQV{8n?>\ȏh1KF )<ͭZG# @.,Ae0d!OE3^}!ߑf{%7젫P ELS\u=(#5=Z骬IO ;+jʝ{niL@b5PGKk^gfYT?Eέ.BYgXunU!>#E@},:fNlBFA-EΥ t.߼BHOX$ebƚe:V'KfaiӰ߅`pܢ&j:&Ky^#o<2y4]DDIQAyJme /+&t2@GE47Rf3^Q *yQ,M?HoM&BP'_`cB4/l?+TA%wY13MAm.-A~wbX?2*٣*R3 LcNfi\$0r h$UD Gi/[UbnwzY 7gvc󋛂ûƐ'$8U:KoXUeqbnkåGeRmTEe4bЀ+}Z79(i,SY33h L(ש7 [E0\P n=*J}YN .X|֦bj2kizq/MӪ,u77Vvv3h:=T1a?ք":ҤO<MoQ ?ya b.3fhe F,uˢǻqdͦv/Oܤǖ*_LM[#:S0Г_P$;j0RԔOӨC@·d|FkV)1fcmaNBnNb\ kQx,*2]x1 _LY>O>p<(15wY)$POh˪F^;8KAܒs'NhgԒ'+6u %wHdGMsR͂WQP؈NYTROh7BE"e^IlׯӆY^0Ec-e+Ypa@ !O[SU} ̇MtpɔZPZH͍)@ZF "iAFfADtB@IKl%/֌j0݌Ql9y5Y< \cpo‰^sO!ɀ ^A\X #%Ivc1IR|&%ڛ/ @w8}@dQ_rx'9꾼܍8ܧOK1q !G w'޷tYjpK):ֲBn8Pw |&kd;/K5 f );+\ 94Ma%bD+0`(waTw)ʦE"gSLHӀqGm`SzPSR۶= wݾV6||};v uSȷ\'oNbߴ"۾{t0>pmHnfU7@rfw*m,\J ys3<X7Hh25pkԵJXuž i.7M/ljSasKwQ5vi0M9;AǣE$~7 y礐3.hrn^~ǐc#!1 g,L 6>zU5F&PE7Oܕ nh߃b#uW#}\w}OHE78M! q( B05폷N7D`_])BVvTuz'x mfsX\@.( ߸7\-I b4,ѢOF~g1{X2+Ht@nƻpr*nx{rvd1oLZ>iRq*bXhj!`}en/Th=}xQ`+.9(P<ᅊL!H? / [ Fg (1z !#tqLG'Fm4Xs ۠F( c'`tکkR$W:44 LuIg;4C2|vLW\A3 cmpS#Z,EW -)MK4wCؗ:5)0aC=k ,`Spa% ;ڔd٦D-a7MIoKx,Y |tW F͉NcktI_'^iOڿݭѭ+b1Pv1/G@;{4cfJDsfR1')4]sAg fIqvR5rdԚRvQ:|Lc^Gyd>Nsu(?jN [Y\C>h\agL<7q`ޢ 'w{DW[esBT 5bHtT&){ ^P 6(i+ɵ[0_u"w,|eMp80.%*Oɘ a.sVw/ZtnKχɐ#]a홄눚H632S613cud6eKJVU-XiW PS\+B6^sumYյ8yoo9?[ӏck5[OX"D9͠|Dtdh JFޛE{Z2,0gFc$R30~ 銡с(+%@;Ϛs|+mf(J$j(yN82pO),^!ʆ'h͸^mʳjymTkxPӁȐccVgl:Ei^GV*F&iWr"@=$mJE5¸mdrb })_rt]o k<Di/c'ލSw߸_kd*T#/5k8bmoMQdBpr .ՋJ/pТH2$}|Y"Fc/z ǶuGտN2Do@q}v{@ι6s([7y+ȊU^_u  ֗ͱV+@r"i"l%2wcƍ!r˭,}ϧ Q˞"ͩi]0pC*1uTmi!ޡ[Vhdsou )v·o_ ߚ?;l*5v"+?Qs/FN3?՟ב_~d{lPx@[cӟPnb,Hd]F2{XOS Te! ]Wo`nf8Q9piE~$kkdE /gN{xVi(LHM]\,)60㟼O>wy} AT1̌JmOcTl>Ut#Bnfh,{7-A6D@@hxCc ii w@Opϑ8z8hD!^ c5.LaL7lߴosw2.QՇQpgG1Al4B8;MiU^,_,G||(97\KЖRy [:qdF}*GDB5$(oP0k2T|­XvxQjv<'뵛&޴ԅ1H{ k0 eN:Z(LF>=)r 1˄mv[Zr ^_((]z3cYlP8&^ .z}!FWAVqlf0 |/hSPVkꖡ7p~ANttϾ9Ao_a#<?⑂,s &{+ٰ0fSL<a KFS1 /Gf |{x&9*; ̓J^Zj#2.nH*&hJȩJij,V/ohJ瀭KGB6v&{66 }nly]$|NKכo~}cر~X?v;֏f?~2Wf}| %"W2֘:#Gݤ/A`ta+K ^m $]>DіHyRs˨ׅ!JFd銉\ޤ]EcBjJFVJ{bpdLN󤶑nh#6v7^ñK2Rx]+X͙F^P l6U F4e|@;# cul0 \sa8jD<9Et^X\}خ|bP>uW-NW>N|}}]A uJ֙ĕ3igG(rgDWΨ8+™=vs>XSt/o>%6´uy׶6ǜ9me{t}N(r~1 >J$r?k$?ƿ_M:_CLO$gb:)j?|zd+Ò x]G42n < ᩿80BPv vG\eW(5XguQYŁ}cwPG*VVDRQ,tn+܇w.]0ЛEWA+ > PERo85`v\ r@k`\`:LS%<ý0 tJO&|%Z>"UJGt*@:Q99kvYLZuh^alC_赃w4۝6Qܚ-M{cECA &^y#hT{|s󾧢a Bf~s90%.Ký% F '13`e7oH0 (AWhvw'16T8&S7xlk?6kwQeUJ/XhŊ1kowI|Ur.${r$qLoȇb#\c%Nv4jR>bPi ٌ71!roc6VS7 ڹ2}L1J[>?+:rgrKL؞.al8rtrk}k@U|Xa`D9INs"o֙"d܄~ \Q gK~1Ƽm@EA/7!M7K_,o6`d0M`)3X,i:xH\[1Plk2Y Kx8tKs?gXY&7dhֆ OA(,+8'y}bP|)AiQv(?Eo^xq2YK|ĽN"*VWaR(;MlrWu -*V('΢Ө|wj ^o\ w=żejrbnEkRGV 8*L sO{(kC6b 36(*lÛd^iꅋ^8KۂYad[̨텕1Kp nnQٸ1?;Fyhr6Fm{`LX_0j E)=&e 3=f\c 5*ڼQt0OX>-DbtEաo[mU۪pՐlUI4[wd  CVdurhbxɛIW**8hj90%g!PxQB_nal3r>cSNS.NP>NRLFqW\"^mZ*VU/vLW+pڴqkcFέVQ^AC1+\`Tmc #B0W[aTS cVMA2MS ^֍)HLJH ī0˃d)6I "W!"7Ef9ͦ#4Y :Dܬ4'w#7= E]]~H|w1Λ<;d:h̬Hz5]n5Ko^IΟq n^l( ,ŋ ݅"9Q.i*>@L48鑘D/MUE8WK"DDtߌQ1A#qJp' 90\lMl8 j31koԻ$\Gٝ> faVhI{b/teM0t. Va{f3ڙ̦uM<l;X݈`a _($W??t_ɋq++\2Mq6D\;nTG0x,q`@A/LďSOY?;yxwJ<şgި#'^ g[r%ۋd -. AZ;ƙ)͛u!5ush}_j255k ރ3鷩:FΦUS*\X!?p3ibvABdA)(بo<+kbP1Q\|2"$fEJJ{ o;yطXyb^};;D6@Tʚ"K[ZjQ&;gGBw&_G4UǼwMM [59r$IIÔQ{>CcGN̾P`#TK7*V0[VNꭉ[>3tv#*:/]'"ۇ>bq ؤXb75<ՔUKO `T#7|C58 hT#ײO y|7WW0W}:4vA! C?HuD.(m~"Vəcrrnj<3I ~0G40kf$6ܧo ;oίlo}^[ $܆}k.F5Ԧ>q,vhs]`햠wp+{~n4),ոߜgld{P[kIS*>$l'a0},iRx^B`()o02.hiyi |^m1t , ­wX  $\|d,&Xƴ$ qzA1K|5Ke E.} +gKoY6֭3"!~+mCFniWWb5ys"<)}Rg%0/ s`s%:P:1Z72hO,^L5lŗ&Cÿ|J dڣLK{f0NFwo>RzHwKRjLPwM&\a_ NFzd4J5δ(i%t>+ V+|yUF d&pa\cҤ]u)nk4v#kDnV[:-ttiorzd'D}x.`UY1uLD?'0!+x9c_ӷ:ѝYd}y@sfD!=@YvvϮBL Υٯ|k;{X\Sri`Ȑ70nw } džKNz(Y7NΛg|~ K4쪹Wf؆L߷2Ey5FPlDsJo3\h*{F\1$Uzy1]vH0ht#BTW<03{hwCh XPݬ[:)y f=yMdR<3U;x'>>=5c{)3릒q *8i:ex۪byۘxG؊lff_-&̚p`pO[9&}$Wb'oL/Lt'A;w" 8`R )1QMG|lPY(A+ E$z*W >3s)xl0!ʫ0|O 79CtI4~QZ8)RPy2VpjrmJG?߾ E9!>CZ|ؖfRa%5JBr:p Zz![UlBnɽ}Rx 3ڻ"{c;BRb <`?4v~ WSP mBגuƸ^_bw5'd[g"?o|+K.ko7r3d d+~%?,*+ G|lp7\Y=z;<מM"[zG]=nȱ *3o,ïu]eI(b >jKo#/jǪz%h-0eڛf|嘯.G.SK-"[/[uXP?4ܕ4:KN Za3yЫ>w-W@}3h-vj@$^:cg;(4?l~r/h0w6~G,"\3l7Dk5vo54|`;rYncR}H]k, O ,~a>ww.p»/ [!tU(~bm^; ?1MGPvH8w=]Ebԁ'>mDuD YL՗>?2?f%E(]ZK/?EZuzn M]l 9)8>k-8!{$2y$BfdtC?kc O|5h͟M d1FitR? u\4SHڹqڍOLw~S)lfJz!1 ѷ( Ã7݉Lp>492禔 AMly\:_fwE4p#5۳Cݢ- , Z583f*% _eJ3D=~3!X<Wb(F6P%O' N E vd(Y_ʿ?" u[B=sˠ 4O`VKxr^ ղ3bA=%1 Ws3?gL0AdC#pޚ湞rʁ ]8zy;XrbCǛD_WxAtB;EIU")OzAq$=HиVЗA3 0d8b!(o"@'RgE`xo0VoD,2ez@1bā踚֩ "g(;3 ٫4PԈ"ǰ;@V}F^tMe0_Ǭ1Df^k!j aGĩ NdKa)ƽ+y]m=omzmh럓>pQ\4?Tz'0 iˎ<d4GrW$Dtd:' Twdb#yB%ZERâbf[]mg:*ŝib (q=bJb.if}VIr* A$bOT L}I",#H^.tLwbCE,qn59uq]Y1$U]mE\L_uPԵ_#:0]+Z#YI,X|4/dV#̍0V̎G.Bp*0F "]rX@cY,F+q*4  +IU|\ͣaxF1mrQb11Gx3Si;a*a3T|vS qy:6CFnQFχ@[q*fid8֭HckYXA3գQa)(g4ZTRX)X/5#Plۖb{p>w>9 muv7:lqp r$b&һjYBD_eLw~m? Vf*Ǹ Ǵ?*ɇ^W矮"-ѳ9;_<1J52 >VAϘIYvfr(Yq!ك\I #Dޘco{Hϫd:⛴/^֮|ؤ(rkS1fDd &r;cAmA䌙G)p05KŁ )'dG@A_l]Ygd *wTNR>Z?W\W}("D]*Ǡ6}h<) R5<2A &SJ _JxSG.]\Rc q\ E~]x2'U[nl?ֆ4h5%81. i]rlFtW"{]^Y6;t~~zzG8Zw~VohG?vzN[JbTyǑ>}|}|l/טKtx=~eWV:~xe~u۷q1˷k6;IÕh?}6 MgsBLe{lS1 F$#BwCd8~OQZ}q{:߉˾q{J4}<~vkKt7qhf}=|q.%8N_=qwN_?:/{ST>Y;vҘD8կid4IYrkX\/k?=sHcvX3/vσ_c:~yk&^[XĹA.*Fn{΍ܸf~90Ϙ+jżID\UXtاNL m6DI>:|Ā\ (Ο4NW_NXi qط9׾ƳxHcpv /TW0GL|RMD3U# /}6̤{_oh)cEUuSLTRLWvT6qeFvjyvϨb]WoZZU0vD QX%Ak2`,#lvxFʝn0! M[7qb l0xć>\1?ȱF#ɕ(B?O[ӋBH2n DSƖvi_iJєY)hw59W |RAV *,⯿:+f$ {o GG,)f((ǁЀOGɾyV!B@aw ^U=OO>- B{KiϷ2 i4G*)K5ч,FW"wA ] KgHWU 5XPQefHu4a|vUME7} D:,v4Q@̈l~M|ZoôAϷ|=NU"#2M1|bC[FIGטD9$ 4Ȧ/dFYy@ Z9.l ŒFVR[pC# DJPJ n YDdRVKYO&' OM<Κ8Q)Y=@L&=c("YE%$Q:NTƥ"oFDk%(\T W mx ! jC|߾(=._ҙ@ЙQјg8?Mkg=Ԟ,=XeEcݢ 3O ]n 6L+JiRs0)M9yLuLiMM%˜ҢMbEMz4f0 bXti^gBSЭ1l0lq;wǠ$FV Q.p~QSO%;ru./wJcDzn/!_+q EF//wblߚ;B8#,C݊غ=j ?5n#D?^Zj!/^Y.1*L/9eϋqXg[??nN endstream endobj 3 0 obj 26604 endobj 4 0 obj <> stream x{W_bp !ɥ\44eLVSD"dMK.4Lk3teht/D.S)|Yoϭ39g=?Z3~}.Siaaaaaaaaaaaaaaaaaaaaaaaaa1OKK۶m|޽ӦMKOOOMM4hٳnݺ_:iU'''vڑH$11ݻw6,...Wԩ_>F%3gG!2駟OJJի5 oN^^Jk׮;wrb6mH>`K~'EEETCרQcQN,X@LRꫯ|׮] t|o6vؚ5kvЁQfΜRҥ q_qR^V-LzׯQIΝ{qljwR'-bK9yy|޽9V}0*:qH:99モo믗N:Fʑ:lfͦM;C999/lm۶)࿣ WwA@믿XYٳg3o[l;tIF?,}buzǎYb)߾}{Ν裏FxjəO<򸸸^{/R1޽{98LGnzݺu!+]^x!7ұ \{,?XoGUz.WeҤI@oCM+zȑ# P05 znYfW_}2W}/<5W\igϞ5jԊ+bͷrRTT$cƍ֭r4lؐ_z%,}ǭZ:/6SL)qWKJJڵkR_h+%\꡸٫W^5N;mQ:7իGAx_j.T@'lU]r'ZlYA5j(oФI{ϭ%UY=z[-k1ω8e.'Ov!ΐ >k!usLH233c=۷oRluQ/c] ELV_'᳆ vر]v7oht\p'AsE\K"'=,)σ_~Yyg{kvsE5m#K\~}|VV"5 ";;[+Rq`Ɍ=3~42`'SN9(L)Vڠe˖^y啑cá' )4` .)k&_oQ^݃<,_\@ R^K9ɣuw^w4?wygx8sN |Æ Zso۶-,[o2aڠL 8Ptꩧ VYb *X'qqѕfCa6<ʪv42W1T8khxD_psj뮻ꫯugΜ>va\Yf{Ϥ(aI>vZ׳3s't.?^. 6L IG$YX]Ido{#Li~Wգv,UW]&wMʉIL4M.a\'''Թ婧zl х%2Fj6|2ܜiGІX+ڳyIlDnKݲk0ZX!Henbϟ/ӵaR'4Zx[ZȈDcn?GӾRpg$yyyRNΝ|F*7"KG '[ӓO>8Xb̒@t_gްv!뗚ӧO 1ѩTӑVA}.at_~hdvCNՇ磻={ЬgiZhNceΠD@f͒{LJb<F>G@T+Ug2/Q9sH!d_~\BH]X 7+BtvMĄ?<3Rx)M ܨj wC#2Gn&j'gQ y)SHŰI8sq$9a\WR9+Jqq1\sbBBɰcRcII97Lu5zU6jՉ(nj#>s.2ҠAϽ`{zwB߿~J]Xp8+";ȿ+CN QȌ3'h[B)RH6{iy7O _S$fuQA qySpG혚H4Kv94%%%Ph@?}'?UXtG`=NO?l%#5 }h1M4 IMM堧OՎ%x2{*=}&ܰaѣ7ocNgZjqC \Hhbkժxh U;"|N\X5=NHHpΐ^!/[L6t~˖-Rkx_qXAiC4ncN܎b9ӥ%P\KSSBXv'ތ"wW(K λgnj/3 [gy^1kH1kW:ȸ9vf9!!+J`Zu"_xQ cլ HWGd}jjII QZD}y睷yf)c$%l#|_LO  O&GWHXuMٸ"u:@q3qɶիդ޽NޢE =y@;R/Zj[=..Gw„ }XƍU?X0ڵk@5k~3|p>Yèo߾VQWޠA> stream xzip[Ǚ`w?EくDIxD%JKDeɶi6lD."7"f]{{FJQ}n& ۶|sM{hפ7` kɫb xSv~bپ_+V׀u+kX[qyӴ|`y-e| ?E${aGț1'} !  ҂2 I=)+դ'f)3/kMM^OBi %k`ɉDC01[/}s%vHJ01ȑd"IZ$@23-B`7SꣽLv(lcR3kL؆%{2EɤC*Z 6&$+8zd,ޫ)A8`KmjK @F:H1>@W3JM@@tjPw"N{AZ!9%(>B}hbFt&-`:p1!(P3&94bBҊ Lx&n0L&:H_kJR`0)\^F$4fF)1K R|g ƼT. )&$%լ\DF"B$M]T(&`K&HSNF.tȄ]:ߊC @BXT&l /YT+f:-2]YȻIcр.+u`š!]t^2Uv!L[#23}Y`!32%KrB:!H[d JTӝ*8#.KPpoArȚM֤3 .3HC mu>` %$DP(8]~xe-b[) `dX(T/G`ST~!,АzGQ2RF] h*~3OgEAtl_&$^LiƔpJP 몀ړNH-b'4YI%5$UV%3^'h{ _'i%.m6CeXVD)*tu/0MYЫ(76 I:6-M2#KZBRaa$tJ)PUHZkkYvE["55$ ꚠY.8#L-9!/TaS:k%[׍x֍&n;f$CGmڃW6jcԇBR#b,S Ȓ@Y*C9”E?eŔ'6؋/xc mjDE. 7+"ej<Z˷H,KlR ^T] noAZ!j;B`L5zF`=;)N(F)vS 0 P ̠t:$Q? =2y@ iv8%G5L6wcZ-ӾiR,)qw$o@xls\D4A8b:QH+D@ <4t6UvX}$h\ ?!:F,*Y[SjP7>.]rۜ:`,q!+9bPYEUT){[U-;"ƒ3ڊj+o9wz\Wy&܁V۠"$A.TYCЪ-1M`D|d w>" YX]︼W(mvh‹_{"_~_&7_|ӼL>MQO ,X 8)G51+i+jZb*xAMxc9)pF!Smsp ýAgS߆jGM񰅦[ՒLUǁv,/keݽ3ܻǮ"?SC|"&v!^rFz)EO^BJ?o1aE&ޟ%nEvNc:#joS#[p0xyY2XV+ %b}ޢh5c|jkGF*b3clgwM_f>Lgdǎ>gU'Ř6D?pe g2pP.H CײRkJք\VQ%*ă߱uعl p(6dLr辍ڦLD0}j(}e-y2#z}c_(+kPǖ(ۋZQceɋuj8jY- "&J,'Օ0޷^1x#ƩέV?Mu5[ӏuT×jp_idׁhϏfRHoe` Rr21##EPPVFdtZ^Ѭ%EGwz_BhyaG-N'th [ٞ';@rŘF S؟-l~F-,Ep2JW=)lrx)|ܥQ{4|>eV971`Pl_ Cm͊N "k-*th oz>,vAm4j(Wq68Pt("'B`ukiy{w{krMZO5&x=unkΣ[Ɩ]:r %PUXJ{i2rbTQ]R:CޕP':JvEGN%J/ܱy(61=3wn?ԭ/lMdzOz~s;+g_@]G=#ןW vf '"ߝ?8/|םNj`m ]8b]E_n~肳@6->@Q:k,Ο|pIUI IF`= *{ [&Y aq(`FiP@ d2b' /X&c`%pA}L.`4bpjdt&*5з ~ksCGS3.Bګ5i2B&Osء=L/lr~=ߺt׉rR1Qs+sFz4N@Jbl2؍v]ZhѬ$z -NzdfM.w\|scsuoSy7;6Dl%ݘQ(^*vU(,P 87>' pH\ơRqcyNc.`yV K %\ < @Wi]RJ^1cd.8ȄM+ihl"?;7?yg8l1U_r͎1@-N5@\\ > wj!c|R=PFMAi4N]qD9*wY\rlEʁ[9o/5^Q7GtIIz7`Ee~r?ATz:R^& a&w!^frD[l06a{P4 W:=F#>~@M`:FdַSm:}o.-6[pV -19l`ϻEgY0}kR|,+E`W!>UߌyL<lQFQ('""vnl2\[c/6kj{ٰMQ+'JIwsSCW&[7Gf.=ۻ̾=;[CbsMf ^m^<?uz5LOיJd&SoM_weN;_YR6 X<+˵hr)\~ڴr@pOMqx*aw8MF$PѰ3i*#*SzHҁ5XAJVMqi{Ūhp--Q(O5Gx+O_]!oMh[Upyb/z9 "*!hPt- -M+_6`/@gw8<ҹg;=E<Ķ`XV q"MֈoF l׿^Fwnݒi׃!?_VHo0|B]+o-ps?ғ(Dd /=y>O;I(K:P;!<={-F\؄ZUȪT` Ҫd*0F'U*0AjCTA6G1t:@oDO3@gރ(:S w+ZG']X5O Jfae&QfE,fc wV1I.j3P~U8 &IN)^'M70@6|J=0bԫ0VߜA*X,`e+P~OvGw~~Js0ea,[M`1dNEq #tD!J=#r>}/or?_&&7~uu9>==L2߬5:2$ ?4ߧJ6 Z[ ~8!EŒu0)*|pJߟ\ mErL{sմEv'$_)NGAbV3ս/Kru^WOC?5 endstream endobj 8 0 obj 8287 endobj 9 0 obj <> endobj 10 0 obj <> stream x]ˎ@E|E/'t5Bc,y`h{ƀ0^ӷn'u.:v_b6֛Cbt}+o͔-zj?ó2?ӺOK~;?<>MdI]Ο:_[sv=_ϡ_cFR;p*jϊ-s̡Ԇ,˷u`Q.`Gv\sp,EWr ^]x\i,k5{֠f|%m`;8XW0+o~PP!eJkbd۸033IAA >3䘁0C 3 a C38g=wgg39_迆3К8;o`~ >sysLL{pDPN.%z/ endstream endobj 11 0 obj <> endobj 12 0 obj <> endobj 13 0 obj << /Font 12 0 R /XObject<> /ProcSet[/PDF/Text/ImageC/ImageI/ImageB] >> endobj 1 0 obj <> endobj 14 0 obj <> endobj 15 0 obj < /Dest[1 0 R/XYZ 0 841.918 0]/Parent 14 0 R>> endobj 6 0 obj <> endobj 16 0 obj <> endobj 17 0 obj < /Producer /CreationDate(D:20241025155433+03'00')>> endobj xref 0 18 0000000000 65535 f 0000041081 00000 n 0000000019 00000 n 0000026694 00000 n 0000026716 00000 n 0000031411 00000 n 0000041394 00000 n 0000031432 00000 n 0000039804 00000 n 0000039825 00000 n 0000040021 00000 n 0000040566 00000 n 0000040948 00000 n 0000040981 00000 n 0000041213 00000 n 0000041269 00000 n 0000041468 00000 n 0000041604 00000 n trailer < ] /DocChecksum /41C42A3CE7EDCA252E943B659921F04E >> startxref 41775 %%EOF hardinfo2-hardinfo2-1331e88/tools/LICENSES/dev_removableSVG.pdf000066400000000000000000001242051474767047500240010ustar00rootroot00000000000000%PDF-1.7 %äüöß 2 0 obj <> stream xMeɍ% dԵo3 @JjL葀^4ffiT͢9]eJ*&T()H>HI3#iק}^OW/mO/Os?j5ſWq}ikZK˫4土,/cOZ+/1KDv _p^`6s/r!<_3 fEx `t5}PHR%"Ipp4Gcebm:1orWͧϙwAmDygV.=8%ȲvnfY13FY4{47Aqo#\1 |lD)-6AN@o Ɖ0/֚;syPM|*.o t4w*ۂx Xc@ּ l/N[iӢ~Qkt" `L]_r&HكۈZ+L[_:S5+EoT]or//mKM .)^CQZ^O "ҶekM7k[ϛ1Snnm=hFyQh#m׽܅H{L6-}\h~Q:t,MT=`6^H--E[ 710jA ΁fu ǶBqsG$%Fci/ lAsfXgk Acmכh[WêۂٹiP,lhf5IZ-vmk "ZDMMl"A=Ms5 d/ ]eݵ髿B.-h}v&iW.k&6%VU.`m0>:0lFfӳ jǙ&JmcIoDƒ"T-MmRLEF6l%=!ɯt%*W \\}% <6W:r-6v{ ƖO,)EVm-L.Q 4IG(G ς0HTcQmtBX̝RkQ5ԥ 6؄PEHm6M8Ȋ)< m#[n7tu֛rv"Q Fl#l!: ն ,=3A㮤;SGr]Y~֬f7JPP˖6:[;ی,6D.vs %O̭G򹇺j#+1Ib0璐-Ic+tF5Z VPJNJ$NlBAwoD1q]dɤ ޺Nq0%/=-} usơ@zzʆ =dm#cڰ>):شQ zhjirRj|ߴW J65%/z 1봻k=6x .h PB,Oܶ:m.nn\ 8s#0d -0 !L\mD !se>N+8r ûqK / lK|I2xNflgàÚ5aN~K\[OtH ox?@wSUJ]U^'eEhj !s.T^+7HRv.o9 ImշE##?T'j3LWF>fSh]Wv-FlsAAmlórYE[35wB\;-r 梭O"pxpr i"V#HJ1`9a&'iުmI|]w.VFD t6Lne_;;qu`CsY(~djGIӷB>2agy}pp1v[ydLݜBw!~\N_M\[D;/?\%u { ڽBA E=k}r~wr|+>nC꧝ټeYf$ԉz@}GlY۾o.[Δj q{ļWuVSEuTg;Ascg4]lh.-1t&˚e1jdsI6t;׽C[hw+u޻/7[3Ԇ[^rG?^?^WOq͟~ؿO?ӥ'>L ĆSEG}$X ׿Cy&_3w-&Z7%bf;vi gSڏ[¯z,V5~D_̬__MI-(7oKHT7= ~˝Q§3¡E_LvQt:]#-l_X_Ebhdx&n~LG #a3bo$+y@$.) W|5"^vQMԩ ELo`74zB mYr9̏plw <4IC[ ? oUW]`$r>篒+Ի%VA%ĸPF*&o?,}\,jdԵtWKu*In0-&fb^*$Qۨv79?6yæylE+??m䱩 ݞ|ߗ-½!^qx /n;4۔n?K#o[GW$ODhV鄍qAƅȣD7\`ݰ7&QO=~i"2ElC G%dž]8qHʱJvqD:B 2gӄ'B T2 Kg޿ǰK8Ry7 (eH;IK来$mhΒ CapHg g0|#t]"C]\6;-. lCs1Ӄ ML7bޙBuBn " 9_dѝ/B/Q/ᘉ/q+ #+#+`+'c.c`>W& 8CL|53*d74$¿o>S{8/ڏ/?40/ Ϳo(!0aA>K8Y[܄1[!y>g(<5rC /5M5m~J/ opn/8UWW΍i7 xcR8w:3 ۷ g|7bma-Gʗܲ<0۵<Ҟǰ7gܯiF" f\ȺWj!$%"}k8b S&[:+!X#->B(L(M4B]P6"F3NGh"#nh*#~2gvІЗ.Ш&$qMB'61 nbJV$vⶑ'G b*n3liu1|^>`⮋7%6qWQ\…sd놞H:Ji;qZŹqv7/8?}w?' )!3fsB؆ܙr4r6$ cHXakcfXdаmXmԡغ1„ c=T. cν%׆M c=2׸NcJ}>kvʰ$w,_pvvi<Ź&ܽv2_Sp2JPp%Ad}E'8^3 ckѝ*1.`*.Zlܙq)f0N$8m xd$nf= >@68{b8x5;lܷL8Nw&<>-ޙa}e#z[GhoMnAL%/c?_2 V!* '"TB1# 6vH{c8ku{1$\, Vg4Yi TMNy[ }ظ!fʧx wei o]~+?؇cbž̈6Ц q]}f!1w_N_"NXC1'@gP,`bهq9V +09 5brj$LVCU,*3i);[}AXX'+Y+}͞Bg cǗHe]L0"RVy~xgؠ sDTɬr7Gk J92Yb[,A7͐)2F.Y~3JG57PVbczMYa90'Ÿ 9.p7)^X٪izStoa?kp0#ڨz4+fb;gk)kiwSזW(RɡLL\טr,ԙI .M`$G3zk5 ݐrr5/nz(/J,ys sc?O]AF_7o* w*LW£x{gEluYU(ƴa,Ɛ+sF4Ϩ&8N4d!Fժz Ar 7Te;Z񜳴1hixH!t" SL5G]*Ha"XDlL[[7c[5|hsÙ)'k!rΝ?0,yǤdQ#(9n k`C5U%#S܅am_0 }eU񇌳)rmrT\GX @9GT/ 4^ּXL4:e˝^iQV>{S)LKBƅgkmOD7}֯}_^/V_~/$4](qk男e|k(-8kWy[]Oo %-C1KR|}ЋVōؒߠJ@Yr-Ը׃9T(Cq*{6ϮY* E7jem Us{ŵwCi7N7A3NSNp#neCcKa L$!QᵘȅWc~OlxF&9ĂUsJGM5֣צ7o}遖¹›6%kO,9wNcR%ų曯UUP8ײǥGOZ g{) vxs+RmPiA>, &FLdfF]hj wW&5rٰxbz71_t(nbiaU[CcV9q)ůLsܜyLgBET,Ed.߀G'bK|Y-V X/b02r2^{Ubˑ\ʀ̱XO跑lxK3f`↙FJ H#0^WV-c/\D 6(}uǒXWVEX+b4,6lBmޯg b^XڃέPUUP^K*O&}ȬeМx(7AՎy%'ޕU?]V+[cVG\퉟3%x;L'(*ݏVI֪=. ҿ"EpC=s53,'ݻnv.bO!.t)Q- h8|H0Kʙ@,;l cڋ.ڷ+SϘc^t^)|FoxRi\p cJxd BGQ.9@aCd=N W&|S@Yd-|=S/ Y5(d ^4KR{ E X5> j Vv60&TH׮RceLf &Mwj`j!^30>*I07zO绚^_ˎ.{Fkh!n!*7`}r*:?7$3]C|EU-m{g;3F :}-n'/u^mؾζx|rr`-(5ٗ^5{G%b1(nXP  ue q%#CM.> ~chƆؚ2)5╇AYWޞˆb`i[gW;7IJ`oRRBPS%<4⻺Ou ,_ C)x["] 9omgz}aA(!s{‹(0`2"!lԋoVezF+8jfW [ KDo`2 `OzQp.XRk [˳<3xF jƳ?!<.n0cjLDa5A(6žvL gpV~> \zMsYev6jçqo1ٙ0盀A._nMn1(v0 b{`Q_0*p\yK5_[SY.v#Ҩy9]1"Gz񦐨l+o1[-dmz40h“(Y3AH9D ;PXz(cPX{gmdL_mF+x*5}e0<@Wy}2L+k3urԕFuԕF}N3RL y]<;(kH{_"8xd~(aQ]QB.CN!M=r2]u_E;?\@'U1qUXd4{ZVL0xa- ҹaJ)s6l+Zq*#fqbf'eT*_vOe#DO@ir>ϧw*λƂ-xy7x4-_~~i%[>ܠ^x 7ppu l?-gY3Ad5o|'_RUŠ!^7bR9&1zdDGcyl1$x ܘP/8pAP,!<ީ Nģuc0Ƭ0al`ؘICjdxW!M[`y.]\jL0aÉnh`l>Ex>7XA]71+gi!]'1K ׯCK-*qh>o0C\?>:_\:lBt.7C ! fIEԻ^&[#A2י#lz{JO}D}ΌLEM8E^^zئ֌[􌙮ۮ4% QMV\0F6is}m܅յdf,:vG~7Ow<}7O?< Խ ԡ-b ڧ1ւ i )O$?h|gSFO>83wEƫb$w'nוzH{偎#yxŘY]ky۶f}rdoi|-Rݖ'FM$(l߁ = О=izDžf# Mn0="ﴬn=Ɓ$5@6k'IC燚b.eḺ"cOrWؠaNQRE ķ9yr =1L6>V2i{[&[[ 1ꭼ|i\E߶}d}XYUC5}hʑVdBȩrׯx|p,4)X p(a=cߙsɸ7RS:@\z;b t@ι[_r7yAT tԒ.??bBt=f G\(m@Y BͬAqN^=O6M;S wM1*ƁxZE G̋ydq´B&fxUbN AI ~R2uh0>+E2'Qz>ԗ}M=ANՋm3zx{TJa/J@_x[ 3*D*c\ %EIᓟ+hfڠ^`Qd{lj;@k'~_ȹ9-zGg3 b;1FF9 脧7b06oڿR.an?1ɵVnJ ]{F*Y6p}7(>>ѹv:6$Ybن!4md$EM^EOO=E%x)AvfZU9#X^;_ »Yz#eElwQGHWm502˞I1pJSV-5N2׆3K12D&F)+ab#7jD50 OXFZ(Ged಍wyT^.R92sLA6qQp^4.\s6:c7| )H/8dA<^ . D(9m،`p'_ Pv&"dB^I@IJǶ\HhaNE:2.Z'ꃘ,ha(2s+cY;WESq̩mg(86M֐ S&Aȩez(YXK˙5Qף8O`0pHXBƐ|9 `.i L5eܚ!|.p K 1K>||y]BE]8i\Ȃ=GCCWLi3>X-}K.|x2줺 G6m׷1||3WCߪ0e.tbBS'<@V֍,x&ӣ<哱-IӤ*yR;V70Lo D2Ѵ^N8UgbgژȼHҌ 1@b FyA`tDa,Y08m!}*qBBʘM±!x, t|LH21 5Yw=k!_MPt:u&8,ԅYÞC`0Rp|F꤃khMn89=1;N8C Kd22u2a$Ӆm!4;ޛ21`2E {0An/?_*?r2# %k55vz^q¸quwys~tu8*eUː+iGqCW.n\pYkck9n _=Kj~ CuY|5ޮįxo* Y_-mFiS Mmo__߯3&}}n0wom@UP{BÛK n;*q&hx Ac/×yE {e xkmf4bsC I9*U׭6l5?-VP/jr1P Т&E"UU =;^hv~#dqG =,*9֎ dR(֩2z%(mpIӂ6gYnPq3Ӥ{N7BA׍σvf8-8;B B$l!26LD]!F-C!oW|ՙꈘȗ!_X}^r|r@ZLII9rT"[SK v6Zo~Nx6U:s'[;$aw&c?kGk,tt ^*21 FфXop#:~7_QzưNɇ |70TJd̔ ,0\!FxqsfŒoB1ڼDLV9.<ۛ6؞ƙ1xog~JA|k{:m Po`Au8_w y&COT9feBYU\l!AXFX%VVdǽ.츷E2\w*0|zk8>JGP^+T^ *V(]#Qq(VwR*zp'[ڬۯWEUsady"(TJ+Z׫Pʮs4U qCĩ:UMb 9ȔzߕABP)T镏4UTj]zLTqNf4 a0FQNTyw: B  xtBΘT|*셕&3ޮN6my Ȧ\IhqL.Atbf5HEt鰘rV(A'eװΙ܏%dhY(-I?/Y/Anc0ȖJ)ΓOUU/zH(LOn~HlMFW p ?A&*igRVq\Ʌu1j+}ZNud+@+ Iѓ}I&٩θӮ 9weod bĄolO} "aZྥ)>M zG*\)Fd. ߗy6Xʳi3#pDy&wtr"0_X8'e驼]\YEy>@ [MeRoۗteRs$TvfWPLu9ODחwX%\t ͻFp Cgk=̺dѣ~x/".H.NXSRl>h\΂>'ov\E*{xmED}+JXdުZ^0PN%{YT\1rr¢!,/QpET - NXG85'߻zZ%Ty,Z( s-g.lȸ CpqBJ ig=V|4jmaT V=nzsY*k洟 z z>|jy>XFԟA7eTŊLIpvyf;PcW!,=Jb{%&Clh`NLG4si/ẸGo`taj< /c`}wH>o18pLY40z)0U;FνcWL؀ |^'*n$&pS6|n5&r4`nIv^ٺgfif !`yap^wٟ۬ax?]yZ3! 1o9 ?pVpM}à6 ԑᘰUj5NgH̪ ה_ Ʒq5"2qGAG?ty8DׁF*C Ƕ\.apl`GtnK(0`/1$6j(0 ?YdMȹ@u'IMԮBrsi] HJR}3`C`J>Xk:p,^+FF~WW0?N9c[[yFIbucwH%*)",޲719~ \ Ԇf0t4OKWRZ bM5Ŕ^[qȦ.D)),.p Ja #8A&*Debk~vsz7S♰ɥ//~"-xX`e2ɠ3 yjX FO_ =Mj =c,uu`l̙'J6:MJNJXX xY]ȹ{ƀ:/gn|fhfQ0FI7:O6tFyjzKtS<Q=κxH,V6n@ ; ;tr:پQ3Dв3uy]iAxQ bFvΌڡR—jZ!f>͇zMzӅEBub-vlp=rvb.H_S#kx1M!*1xH`pL+bhH\U4_IiLAQISy|{@J7BDpE;xE7e|Ǥu+|O~ZOPZO~QFq{(wW7mZ| :5CR~w~>\MFGꎯxǎG!'r)(β3L;}K7WV-õۯPrw⵹p/%7D}'ڎxoߔ]Q/.\ݿ6Z_ m$RiOp bwޯ3– aO 6{|cz+;]?Sn~#ٕ/4]k? y v8Sc8y,j>WY%L ӗLpu3K1i מ/}{m|aԠ3篩])\y,sNp24o 27d!D'"û6y'dR|Lv :؎7c]M1 C[if~wW(+QyQ@_~nH"XjX?Է+ sKǟ( aNϼ(e6e9@LK Bŷ5UDھ32CQVGHRYLĹ{ 0g63׏!.%-%2yBebQ#,z2qkfPxj/LDH7F26yvztT91Ίdh^AaZ8F#^53v K`gǠLx@ Rc&HLt'zh6rmbN>q#L &o0oDKX"zI@z+aa KN%,2u![rbV Zes+XtzVYz{ULG&Ob-yǐ_z<-e&2TAu0j@Mb}Hlą.<&Y6TpmkbX Qn.ըkƑ+ζm6fv"I[<'-u&nwzo090B,KƢj3^ S2uٳݦl͚z0g.*S "iNč?*s??pG f5%s z"*vIuZCchqLT 1SnPxK cHbn| 5ۦl&A f@0R6̒3. @!N _XJ9gǡ gHYb◼f bmD/ϲDdѧ"ihTȠxDz"<`/Q 80^ޘ|wHbaӅ*rHv NUǓE\>*/-c֐yeU*G Kb= E7K1 =`,̉tV;?y.`֧˟ ȥ{צmsu7RJk+˨|11ȗ;}-Qge>2#]q^9Pfxy 򺔼T( =dKiۆd *)ߥ2e.#+L*8ۋTA>)wFZKoI29)zxÀ>Bt*H45ji?6S|4Jl&OYb=R2-%1Fb>ORBg) ʸ. oD=AODʿĝfrt°X.M: 2,rfwN# a"E>l[2Z^يBaP "o%z5p upd]gixڒ-/,#m 0ŢXouՈy[??N .+C:aEEw9$]FnIx aev'7l3>ŕ_9S\UjZЊ8?M7i} IkPf|)x7|#[ zE_$P!hff٧eMx5N\$>OJG@;"dT31)!cw7I5v>A6Sy1rNq V^isvqYR.ˈj/nIM#2(kƾ!2ȎU. tD"~Y֛#6dV< țN,MFl}gC#6DG&ٟ/zB4\_*3u5MTuQ˕n3lvs2X+͞M Y}>'}}}}wȿiooooo6ww }<,mIJDU`% TKxx .aC}o'4agff(,c'"ZYS=:~V;VS1ey1e'meW{,+|̰Iތb`em1/D7?7᠞~L-Sxx.t9T W@/G`$j}/ghӄ'^:rf">>u]&+kM5U;"5GWP>Ve/U椊V"ڢO8<>M"}`_VeE.8vύ&glcl,b1 Vz>LF ˨OYlWa N9,3`Y`U>z|چ!{Q酢XX\$8c3s@֛Zh!f}A&*"ųؗ2FFg+Â*0tŠY:HEՉƒ(PTMagETQLs`!n 1CHq^ę|\S] ~kiq<1AHɿ>C&wu<VPVLgHbt[z`cBJ1'նMz,p79FPb4Ɏ^b,w@C( ׮8,=6]Aeָwyηp?|ǻ,Cɘ1_TQqi-,ui|.S>S2ơ>)gsЙ{%@YF1k}@@b^v>A8?d4\IoEAA_ Boʚ7Ab([IV!#)#YrCzA{߁M5tİd"sT]@D9=2&ԌN8ah}߁rǻt#D1saMX0hYځSPaяHHR/77? [ S64gx`X@E}Kd-23k·ɚUřzOBX|I֬z,N^zUg5.JBn_->]VKY{ue[[tƹavFiCs[iwYc!])4šKTY{?%5DF"t@G_b, @rςec@N %6rP''msYFYp@%'RiQ9 io[I,d@]T&Im!fQ> )AZG x=K# >*; g#* BNK̥fg=}Uo9[r2Fntx}0e$P/:`R9;}d3o\Y(.>w!^x .EK2TK.5 ;a/mIY[+[6[6J-㘃qMߔCTԊj:'nɘ"ee 3E45g6h` 2$ԧ4ɘA&%o7\e_9e֓rީY[/jZ&MEU*yzu4nYPo3^X!Z֡ޫI?[M?_?ɒAz0ogx+}֏z8f/?a endstream endobj 3 0 obj 22858 endobj 18 0 obj <> stream x{W_bp !ɥ\44eLVSD"dMK.4Lk3teht/D.S)|Yoϭ39g=?Z3~}.Siaaaaaaaaaaaaaaaaaaaaaaaaa1OKK۶m|޽ӦMKOOOMM4hٳnݺ_:iU'''vڑH$11ݻw6,...Wԩ_>F%3gG!2駟OJJի5 oN^^Jk׮;wrb6mH>`K~'EEETCרQcQN,X@LRꫯ|׮] t|o6vؚ5kvЁQfΜRҥ q_qR^V-LzׯQIΝ{qljwR'-bK9yy|޽9V}0*:qH:99モo믗N:Fʑ:lfͦM;C999/lm۶)࿣ WwA@믿XYٳg3o[l;tIF?,}buzǎYb)߾}{Ν裏FxjəO<򸸸^{/R1޽{98LGnzݺu!+]^x!7ұ \{,?XoGUz.WeҤI@oCM+zȑ# P05 znYfW_}2W}/<5W\igϞ5jԊ+bͷrRTT$cƍ֭r4lؐ_z%,}ǭZ:/6SL)qWKJJڵkR_h+%\꡸٫W^5N;mQ:7իGAx_j.T@'lU]r'ZlYA5j(oФI{ϭ%UY=z[-k1ω8e.'Ov!ΐ >k!usLH233c=۷oRluQ/c] ELV_'᳆ vر]v7oht\p'AsE\K"'=,)σ_~Yyg{kvsE5m#K\~}|VV"5 ";;[+Rq`Ɍ=3~42`'SN9(L)Vڠe˖^y啑cá' )4` .)k&_oQ^݃<,_\@ R^K9ɣuw^w4?wygx8sN |Æ Zso۶-,[o2aڠL 8Ptꩧ VYb *X'qqѕfCa6<ʪv42W1T8khxD_psj뮻ꫯugΜ>va\Yf{Ϥ(aI>vZ׳3s't.?^. 6L IG$YX]Ido{#Li~Wգv,UW]&wMʉIL4M.a\'''Թ婧zl х%2Fj6|2ܜiGІX+ڳyIlDnKݲk0ZX!Henbϟ/ӵaR'4Zx[ZȈDcn?GӾRpg$yyyRNΝ|F*7"KG '[ӓO>8Xb̒@t_gްv!뗚ӧO 1ѩTӑVA}.at_~hdvCNՇ磻={ЬgiZhNceΠD@f͒{LJb<F>G@T+Ug2/Q9sH!d_~\BH]X 7+BtvMĄ?<3Rx)M ܨj wC#2Gn&j'gQ y)SHŰI8sq$9a\WR9+Jqq1\sbBBɰcRcII97Lu5zU6jՉ(nj#>s.2ҠAϽ`{zwB߿~J]Xp8+";ȿ+CN QȌ3'h[B)RH6{iy7O _S$fuQA qySpG혚H4Kv94%%%Ph@?}'?UXtG`=NO?l%#5 }h1M4 IMM堧OՎ%x2{*=}&ܰaѣ7ocNgZjqC \Hhbkժxh U;"|N\X5=NHHpΐ^!/[L6t~˖-Rkx_qXAiC4ncN܎b9ӥ%P\KSSBXv'ތ"wW(K λgnj/3 [gy^1kH1kW:ȸ9vf9!!+J`Zu"_xQ cլ HWGd}jjII QZD}y睷yf)c$%l#|_LO  O&GWHXuMٸ"u:@q3qɶիդ޽NޢE =y@;R/Zj[=..Gw„ }XƍU?X0ڵk@5k~3|p>Yèo߾VQWޠA> /Length 62 /Filter/FlateDecode >> stream x35г4U021337Q252352(E -@"0]0.S4sr2ҴB endstream endobj 5 0 obj <> endobj 6 0 obj <> /Length 567 /Filter/FlateDecode >> stream x]U;$1_@ ؜6+3vBi|`+h˿\ 7.s JuFX2|&3d2ppNaHHQB'F=!'3>S F - p%fLQʌ1xVK\ijRH޲0U CnNjF>`uʄTQ=qw J2.(Njd*b@_lH?5XG\gM sJVf GSN`(i Gi*(LHΰ Fc;V{`j am(/v,/_xns1)r"'@[Rd "ptistQ^@8B%TJ9ЗƑ:0YvkVwCL;$kt)t)#C_J.3r>q\`m`ܕbm̿7v׶Vw~o~_Ͼ+[}w2#اkh=}ΐu.sd.ۧypצu_>~??I4 endstream endobj 7 0 obj <> endobj 8 0 obj <> /Length 568 /Filter/FlateDecode >> stream x]U%+Wg6OqTӔM A\Qu燯12lS/("Vō\q3P3#0t=4&?LRXP"dߨ6>h'h[f両3w`5xT71[ȨG 0~`0+xu|ovѐkx2m Z9b9u䨁euhȈM[n63[XiHDI-- \2$q jՒ ~Z> endobj 10 0 obj <> /Length 118 /Filter/FlateDecode >> stream x]; 1 D{Bu akRlf9z3D>Đ&5޲jQkv߸2MѮ!ꃫcX$W[L,;M֮2uҋ$2 endstream endobj 11 0 obj <> endobj 12 0 obj <> /Length 184 /Filter/FlateDecode >> stream xU;! D{NAb<+E)6ol&x,W ը"0Aͥ4MG2pkn}DlrVvm.ȤkK؏&P2$6]挂.MKʈu_ qeߺC:&rK9"iF&> endobj 14 0 obj <> /Length 245 /Filter/FlateDecode >> stream x]=0{z d<޿񏒼Th>c<-Vܬ_2X*4H ʵ7A<ӓxW]Z9L3i##'ƸM^PJ UaI*4X8B66:Jf˃tnH>5cyy1x/ KU(:*ӑ<:sem=M^8O<3J^z?zo97'#q endstream endobj 15 0 obj <> endobj 16 0 obj <> /Length 494 /Filter/FlateDecode >> stream xm9#1 EsBqHy &?O /xHq5W a3Hǿۂ"%8Ѩllp< x(sP52oۻldafR.OJ٩Lv(vXe Fc|*SLBPQu} eOP0ORorͶI K8̔,lή/Vn(LK;r7Vc~W$P+)f[3Yq xHf[H6ν<IǼ[u{}ŒnSb( j)tZrܥ6R|zg՛%B_ c뱺``(hr/OT6dz0s7F- Пˋe.Vr7bkj4nކe-E`b`5Gy6A caX0+Brqr+PlWY+xs1xg߇PN?\l}< !A zxQ64a endstream endobj 17 0 obj <> endobj 22 0 obj <> stream xzitǙ`U5qqhI HJD!x)oIahe9vk6drۙ3u2yywqn&Հ۴q3clTIǯ d댮9;o(WnOڍi){9%onq$$4H B4#c +'+ ^"->WS* %ajJ"A'$.(^(lqaj*&yXK$>&HxjVR ]%7WMvcWmssɫL؆${eaz|^{9G W| -akJ̤!5A: UCP 7 uh}u0`*f#Caš(š~C; J ^@8:@t1h1hݓ)'8{888X`|!3(tE%2(tEM`OR;e T)OPk8 +8`M[&t]2H: ge"ݛγ'~A)EJ^d".'~ R EV* E"U=l%{UE84ALvNJֲź  ! =9D0&w B ! VgQ@Ⳕ, Tq|\_oYzF 4Ȍ }qSW+V<Nj%\) d:UKx/]{\"}#2_ pØUy `RMO~LF^#+Ms85~X-3Ѐ2+o9=.BLū]jtMb #>x?Kp:p*jyNT*Ȼc|F/_wYr9I/+e"ϋH}Ccc)kh=kh`АCEc/Zh, Οiĝ|v!mݷOY=;u3x#3ol?'N^ԇ,TSN6*p">5j)5፹짝z3>O.9C̙C!3˙G^^t : '*D.ҋ5^`O>kM.&> ݅\W#'vjeE:veglp.} ~\>R9j:BCus}#GrQ2b&w@Ká"yP.f7674V qn濓ɐ%˼뗠;,4aWJR`\Qc;S-~ `#gb:L ,,e^'Eb_o1:5ԸGr$>tRq џ  `(۠= g՝4ZM`b [!/!Eu\[ + B#БTJ_Z*Y^Ym"\ w|ĎjC8Uࣳ;Sew8mwݶgzf6*QShU [:aۂ?3¢g:Wuw&Vz^ 5Cr% /}B|b&J ^x`93ÇCzn6f5>_q7V[Xh>ϙwjۊsC3K;jWDcϨ )L$?Q~_c~p/x*Z.u0oDF7֞{5cFB]%Dhcdr4P},f0;iejU.wkp*!P&y JEj EH"JCaLN{}nMeENgr\OF{{P%<Ҭy29' |b0`d5@.HhJ[;kN5WV`{k?nܨ,Zⶪa,ŊHHKD7s V#8SPcA[CNC?k^uWm*~UQ%&^8bVhL*,,nrbTT]j:CٙЬ(:v^ЦĞmFCKYLAh=8A<w{ۄ#7΋hyakoN>7|ނڢ9FCΐm-.6|v1]:|b:myyf>M4TI+2YSbg~ǟfrО8vtw@>hm`t.`"&hA)' oʞm<=nng 38ԡh#:-9Kk}pWoy^~nwm*ź|Šg1.Vg6B͓ ىؕ,)h:|b;|hffyoY%7vZ܋+ * v}ҥ?s?pש3񡊚֙Te< .787+̯r-O4 L"}`኎P>,XV]`4DjwwXn9&ݸD (*JE.)%+G.WFN"Ww:qq̷ic/X}8|g{,nTPه9V;|COI #'o6:փ_8RDy ['#[ W;:Pޏ?v_LM_ɏMK_~٧w<5k'Qj;LɛTrWg_9hZ=ioޛ@LlP,WŇ\dÙSpgdhxVᨋ1doI6q>s<¿5I)_g/TB%GaȒHخ8vǑTyy9NzT.Vaq(`ZhBa=fȐ-'ؓ /ƿWqvTH@:gVkk6F.P|5-NS>N_܃:7%&+3ߧ:~7=>@; {[:^u2[far8~3'Sre2 kw-?BY"L.ӨTjtTg&L|$ir=uܙ}\LP ध+>D~73m)9ߜ͒2C&l|E*M<߹s};'/~caH}3yWp4*ݗ&F{ ǶW,TW͔wI(fo93`+ c E9447[kk[[kŚmә@{x<5ς͸]z+7Ep* 6 QO㜘}רUxF9_yj4&ݧOޠ: J_;RRvY0\F1{ #DbFl g>=Fϟ~P-p00}I۩6f q*}Vn;],*oK0EDn%6sRςhIv,Ľ>>x2@`E ZKeXijeWeE`G$.'4ŮbK^_:+hgz'ڃn?, Vrxzv*9>@NΞ=VHnnKk7@FPb:dm.L8m>6ȧj۸ȆP ͧxkh(ViHo1/9 ~y?4:"ա8!an V 77FjB届XQA^LlئN]]L {>Db<[!U3O7윻w]>{ >p{ϙc&;b]IV_ilYsyvq'"tuh8H,1z|bb"GAvRC+ҁXAނQM IRn=#KE;T8fo@;>Rs' ^Ϳ˙mqm Re|5A4,+4/cQxo\@ "KԴ"fc%B}vã_l<_߽ oA!rjZ) ;ÜM,ӈo򗅗JxZ6c_o{2/"n$dn{1n)EVu[[o.Fv ϣ| TCCfA눴 .LvpU%0cۅ4[&V/`qm_M > \ٍ?q:=uQ2ZooD^ϻ.$߆{Q11EZ:` %aEQtKȏƪS%JGx7|^#ZB$q/EY4G|ER{J9O$珺r]ik55}g\={ UG?0c, 'z = :zd`=$`xͪ_dz@x]9TQ`fVT`yE֠vkQ%~[sP9*Mփ?q*F\؄TٽȪV` ҪVd*0FT)0AjC R@7 t:-B p{?`%< mCp_h)*F!Xuc y cKPxVU'a9t%- Úclg+];`7J$HijQ5.>볫6W@Jy,l-0a*[/Xa98!W=\[5E"8 Y(Q q,^^}SJ.f+ hv̼;mt8@g_QٞԶ~fAG{d9>eHwӇie/Uꣷv2Ԣީ;>@TR-d?c ,y[ vN0ܭ{Q2Ml.3p}ߛq CLӊVNNAn2PvEbqw 0(o`De=|3 TeQ806 cL9&w7^5吭8)A:< L+JY6Xk3 Qiy}w(y"4?r-EF*ِSKeQ.UDUɧ3 J=6lk3±y/.]\̽hCPG0i͇NBhOR}mO痵H@Io}]{*E􁙑:>_WxF5wZI#PL/˒4AԳ1dz endstream endobj 23 0 obj 8392 endobj 24 0 obj <> endobj 25 0 obj <> stream x]ˎ0E|=(RRd8 ,[3-tmW|{~=Y] >>B_!Fu};[3ey==ﳿ˸\fxvSdW{{c*Ju|mozq??_cg䕑v}jZeQpXe~;+L9_?M:s@[ѕvܯKЕhS@׬# ߨZ R/w?@%@.5_V_ӿ}o鿖俊d&C- 5tbİ&CN$6d0!Ā߆ }1d( Co Nj Kɥ'D/_G[2kh2dp`AP%%^m`dHM2xdrMU,!>B#+soqB<# endstream endobj 26 0 obj <> endobj 27 0 obj <> endobj 20 0 obj << /Font 27 0 R /XObject<> /ExtGState<> /ProcSet[/PDF/Text/ImageC/ImageI/ImageB] >> endobj 1 0 obj <> endobj 28 0 obj <> endobj 29 0 obj < /Dest[1 0 R/XYZ 0 841.918 0]/Parent 28 0 R>> endobj 21 0 obj <> endobj 30 0 obj <> endobj 31 0 obj < /Producer /CreationDate(D:20241025155645+03'00')>> endobj xref 0 32 0000000000 65535 f 0000041600 00000 n 0000000019 00000 n 0000022948 00000 n 0000027689 00000 n 0000027954 00000 n 0000027994 00000 n 0000028765 00000 n 0000028805 00000 n 0000029577 00000 n 0000029617 00000 n 0000029940 00000 n 0000029981 00000 n 0000030370 00000 n 0000030411 00000 n 0000030861 00000 n 0000030902 00000 n 0000031601 00000 n 0000022970 00000 n 0000027667 00000 n 0000041319 00000 n 0000041914 00000 n 0000031644 00000 n 0000040123 00000 n 0000040145 00000 n 0000040343 00000 n 0000040895 00000 n 0000041286 00000 n 0000041733 00000 n 0000041789 00000 n 0000041989 00000 n 0000042126 00000 n trailer < ] /DocChecksum /3D8DBD7E1FB922506D80E1E3622B6F52 >> startxref 42297 %%EOF hardinfo2-hardinfo2-1331e88/tools/LICENSES/devicetreeSVG.pdf000066400000000000000000001244211474767047500233060ustar00rootroot00000000000000%PDF-1.7 %äüöß 2 0 obj <> stream xMe9%6?o HPU/p_=0<:vxa"}nDdeV3FT2/y֖((~\}v}|k~c͚>͹Oz7_şVo_zx1j=_|UCR# O5~YKڟjJ}Sm~|m#fHv7N8%z hCpjǧ5وe^`ӧ?>JDރ"h/M/fM }޼ ^͙?Z|>굟>o]jåTǽ1i巠ˆ枻 mٓ? gL!6Ӽmݾc{Z ֺnڈrӪA׺l#s z@L['=Ilscבּy5tR:Nh[VӖevyU._XunMiWa{F: Wsů<&!P''O[V`>] O=zMmqļ50%{D@- 3 d洼k]yp9=7']8hF91D3Zm^?]OICˣ\j~QlDT^kbe.8xm^gd\){w@6EQ2sf9Pmq*E,@NgSlvNESp8Xg3R|#6.D/+Vbԕ{&@l/L`m`3U(QjƹhXe&Tζ\C{dE2n̄~Ȳ:-3\k{kj`"x2o<%!8wEdl|jmaeܒ`.|M Ԉw|Q :jU9GIɋ5Bu$:"Xg"F+q~2ے ~ L{,܍i'?.n-59ǒ֙ ˜]0,Ӗ9wxswhҐ$ڌ?)6ԶVNh!yV6:Ulkye/A ҧOKYe/o [ I`<'ɸDQg#+7޽Dյմb9W;xEkҮYi:܏gfiV-&5WP H"3Y)uqBs| $H>{6;$HѹP$Y)uԉ6)[\h|y-AM.^SޟxWD- ^b LgfIy+Cjc{ YnƦփ,JA%4hL3,7xS=}Zst˟TMu!}1~\6-RSYޭWc-Jp!$9MLƣZMj;ʱ%4| (,LɆ-ly FWͨ5O -0`(Y>K444)j[S<=#No@ ,7V֝6jAL{t1KM鶙9v+Ȱt=m Pb, hhg`҆3 <4" V:vh6~;t:?&钪5(`d]6PoRܸ`Y+@;6ηMCX!Xp붧V.ZUx@6CWB}ķr^%4XŽSa1s@wYj~X|@y6YNvN]D|HAL6ՁS3 f&d5u{ }4Yb& :Iy8ݚc75>IDg%F&y!č\8 JPrkb爘 Xb}&+_ o|W|~ gWG--Zz?agrH-^a¨$ep&7Lnrsښ1f9 c ,jDF sZRTifNio!y\6jBD6Xzz[i4)2H[ӻ,<5m&_No`oW8y#M#FiD5<]GF334q4^&E_YG||厀" 3g5.z%a Kr1d/m0&6{&\pvK`m U.yߧA9)3O˛%s;_"qӯeEN;rޱAkk<4fSgO1xCoKa]HE%ht%C[SeQ%f.).W͕sm\۷g)s$ 0|jTs.6rٶ f~Po/h,oPԭoo+}?_O|.OQmW'0>'sO~?<~?wz."C/eJ4WkgZӯ*[gOOdV̟8LNc3Fɻ|ojm56ω}p:{9cX+3,F=tސo+ҺG~]bP0!cp !v&kyTf'myˮr4]sF T(Y+>%fbuU,]8:^%ҴAc}<7^.7dyϙ0OW3&݈ )6cqyE`X$%d7:xp20*l] hre-_28%fp Tc,v&+]T׆dOw6 q͏6mTu#s?mتݷr~Il NRLxZ` YRD!,C" 0.&RD aH3`x4qL%3!u˔a/mK)mwyu6A 5q3;ឹuo~@s_|3!6j`p:1&-aoVm86ꃑLb.!>mC4A .44Q46Qt̓vFLb}N(8Ŷئl n 15hTmӍ5۴/ئ}Y7~_MuW+cvډK^\6Nm:kX.\s tPS\ĺB8Ӯ'w=}lӾ*;vMm[$D76 LibS.{^wxwˇ5#~WV e5o yg4s08T u_ܘ=A 0x Z(D$wtlD2x309ȼ20{2 `;X53$11y,sfMasZ<8ͅ^v#Hj%`xVI3\jcQ :}2/FiƞY,+9,ީYɧ͊u1~UgDkWlg 6UqA=b`rV9q; Sn\u{,@D3IgS0Qmzڌ +I󂍉YFǑNv ⴰihOD;mgmr86 sh4FƤނ8zËoѤzA0,B,doEa0-ü6}qW|[Ӿ}TG@]8]\8!..|vBu9 I*q9kHjg@Ο.띁g70\g?!~Pސht*[Koӏ džcaذ~lXf?ˇv*\7;^sewā\q=Ǣ ΋ o8{ߘ#/S#sf9ΖntpU0@`Z, >= L%L/L>=$ eӯjqߔ&~O`_D09Bb,[vp~ k!ށS"9 = Xwv(Pn4j8) RSr_w9$<~qfXfGexΩ3!Ż_R`ц U"DfOYLbN)36 >}fo|ĻcL5&;1&:)Ý@DTW^zmbMCr |t2pp\ 7܊Ȇzfxn̏ot_F_gi"jnK3k3} wxo0"'I@I=ޓ\;gH4[3`RIU?ɀf$%xd}:Ӄx^+gP0WׇS, 0/@dmc>la {}K\acC#6ucŜlDvZnsW.( [;u'NOc&F#-G!H4o+1gx)EUؤ."Mk'Hp9zpi:_s>R8wc oz_}$"y pm"[mIp4\t Qin#7I>0cޖ/cZ! !M!'.<)Y6_z-c7ozzu[6XFXF559צ_xx 4.9K(e|6NY#u Wv2J˴Бme_6C3omeF NFi7j`Z=: o+{2maz0ank;0abp>yPS98Fu[6X%FXDF23B4B]l>q@4)Xڸ&OcA\čd~cNMc<@-щKY5_E3/TuUr1&#WF{ 2eeya'r&Y|{)2dpjb2 *kz6WZ=/>]̇Zh zw ?)g!&@LelK!b^z0J6Xy,Ϙ i`96/!^f bh TnVy'F2_LJvZT~'k1g]“Wh#gU)!"1ݍd`Y/3oy&U[h2QVFM׸q0y`Vzù0s+tΟ.cSV}d u%}}F4aJ͌>nx#% %9ۉnpP=qsYI5o`lgMޒ;9#Ulr^Zp\b-=8I^E&$S?ܛ6w+7$bsEd/2ÖK>=#zxppqqd2yX|ȳt"Ӹ \g d6ƌ.͝[C֋o[Ey<< 7dfo7{~=?{Ϗ{9N5+CF| SH冩\'oSw6 @2XǼ3ܑЊ ,5(GYA!Q(."5)sOb 0'R7}N :hT Ya-wQ9~dGI2+!|l`x=ﺫMq>JkAeV&?݂{χ,}y4ƴ-Ԃ{|{1_R`|}iVbAk!;A ψJ_YM/JPqșV"Zaifb^v#փ vvA22󎻘`]G3G3+j"l pgaP .!nz`sl)˅3rfpP.Ѥ6H#'כn6:S|؏nfM73M7Wlmw;ϻ63"a}Ⱦ;E|>$]i껼Հ3''ؤaZF̸!Ä\hBƑ+9dž.e1ﳎE80hbM;[>O(#2JpS4EuXL>0#]-AF1335hEgPJt{Dçb8R8>e"sBY,v0YG!1C5hgG~-F8 &bL9IM@]Ŕ|)sg3eKVN.\n;X~uo ۆ.uֽ4?f@Qب~lT?6ՏFό8/N8Ψ/R&B$=U|c&}`R-6&@O"WNW\<\m׭̬Cx.wzx34dOJpt˺nQl|`~ ".8; KGt F_ }c ly[/pAb5Pcx|^v57gv낇û'Ɛy8U8KXUfwL\F|y:NUx aê,o+8aRФ0&A[`FѾ.]B0jAO.r-}u(M# d7g:u, Cɉ)2BV{@B7 =CZI3 IIC,>NLMNk]g2Ld4x&sIUgL*;vn4j"ߘa?a6Ƭ[Q!o~q }uQRhneuQ멓6ZA=Ie6=zy $a8MF0`:VPB4:ohWgU-9[aM({v-oK( %m”@OR#ܛ';A ])z^? G{QTD=cK 2NH~rf^({P{:ڎʚ[vTqb)Y+Qh,i:D\JaCP/Db4{ ,p,JՔ_(L0_ߌB59K8~`fy g (V܆NolLeC숥0`|Q ;j(#2͸ğ>MRt0NC S):@"*CjS-U$SKʷܓ0a|fvo@cuS F/ ARQՏ'ja n}Y&)C<>_#!2fl!41];DRfV$R̙*~/؞g=Tw"ˣK t;6o'jI+v<ߠYK)fC'tA>ER]lw{ʿo N Ts6òHEū;rkԙJ[ʻimv%QQefK,$qao R#.-fi% ")BۻM(0v=9*x_.e Au& aH{,pc4.=YH3S)a+Eu 0i>U}ne"(*F,!$q éUTq A R ME+ .s1>jާgE0lL堌ưa 8ƍ ꃡWjabJx, + Ɋ]-~)^tXp$J+K7j m#A*&˃`)Ux,yg - y,Z+@ߋ%lbq4T@3e#%XgFrÈOH>bd DXga;9戭7ȸ6JA:yP5Þ#D@n&@| '{*p`!?Vp!O ] ā^V7o`̃;]9i!/y>'pKWӽ2{$Y*a7p`RTjᨣz=aV[O$Gpe~fB M[E2re6ݽڹK& _ث(mJ qZڞ5Y@)1e~ysC`pW`@7)pW~\;@lu#d|Sm=m-/AQ\7#0}"t~_.Tb*>ǷԵ?J -JI>;#o iLnN#KXh_7)0/gNp{+IRݦAC*,10;7*}g7,," omߜ1w+*`Å&;tbz w&=yj'{||G\Jz+dϨӛj?Bi#`x7P A0z~{62*< Yx6ɲ+tnùe:^UuNh3 Uq2Janp(vQ3}RGe&BͰ_{s'.ٹ'<GV 0`KvUʙRpa󰘽އ/2q[HQ#9'NJ1nVk(W5VT̞p3,,Ms Օ+/3yCe\*|6(q{%`ipAu[W4ԭ?D $]]skuY/n몕ۂKx\:)6 8;4Xu+\ט e6mZOдBS5!)z0AbGXwO,LC'iC^)a~uY\(-S0- U aB;G^ն.lM 5Lc'_?Aq&&ę4Yf;g9tF ;@cf{7 CI!+cBHJmePdˠWK /ARrp׃\ _\RSp4fɃCA^R7ʌ'(QXϏ _KVR4-t?[h&!n5?geߟ꺼7y-Yzwd' kҦe<- D:[x|wFqEa˅.)|!Eۊiހg2t#8 jB R6Ns1; R-Ko w~ =x2^#q c2S|7v7ᤓs?h!G(lUapu 'vK;oLyWHU&pl+i\ŶWyשڛqÄu 1vkM6kg?G'x#`*|P {`pVԷYBiڙjyVOGS7$Y{Ko _?[(DRuMp=ynAkpGġ*zC0&oP o yWi`d.,knzdN&O$ LÊ`&`|CAa牦YZ3 gK!n*PRp%1]|l4FXvIM0gPf&e>P9OF t>mM˩p  czzsHS0_%"I ;5/S9Wenn*+) SF: Ja$Uص) 3_gټ?o>VO 932eҭL/YW[xy1W9Ŭp3CUlJ+$'U"Su\uL[3s!Zͧ\R_9"zVЙƾb$Sp`px0buX0ߜ# ;hi$wa]rC ]Xt޳#TC~viôe^)GJw 4 ch/QFJg.ڥo==˪rT㴮8%G=;Iu7X_GNxߒuFӺQο~ʾ CrG򈎚*\(U*4nXԾp_:hwD,1I( \2mZoP@_掀oSEl%1bYo׏rž溜VbSӍW[?2Lg-22 E]ZwV;0³(f@9 ?)y#X _^[ "G5v *>Z6rsZ CᎧƧO>\HK'Jm#xb CS~^)dzpf5F"rv $we٘z qv8y'/*Z.э[?b$Mg4B8; {-Y#{/(N2}ڒ$03pWG֑s`&]$:0-KYJk!+"(ޕhQO MLB]+ܤIYn.R`v ]g*q6q޻iMVD>5b~6e/Oyp-lmxu %x_J/DB (kHʼ*ȋͯ߀[mLfLݛ:m {r7. ;T~ԟ} .wF5x3)#eY LVf/jM۰MLV ز+R)^xi 6`xm8`'/Gaap1_Ymڌ~~=\B]i\B9u]H9]sJi|(S gɠrEE>7J|0[יW3X՝;t`83^#5{< ͒K A􌌜Uwv.x[J1]Udey))1\>axMS;#&xZ`dSaV +`*.<CFүv02N P}0M HL/N"/]8W{,-RAaP`Z*<mL|5*xqZ>-2:g=AR섑wT+U˙DfF î [`DQHXuv@eԾeu~Ah @9-+ $x+3}Զj_qsN~on"$Aw1x۲Gf$ʚ',b%&n{KO 8_2q0i! >{s;<ˮjP.__'Xk*x p?Reiމ('({1.C0Л Cq\U|U*d憦*׀ v`9t9!u{;/X?!NzEI0|e?yb*,1u" =1PXg}!3z%4[ a:OUfj2Hģ*Ot}* = "Ƕ0AW[y|CaSýT~b -H08m.Y;H̤F n s+fw'{ƌo&"QR#حǩXXknSQ5SgW&SQFe 2+tL3޴rYwIv*b<<`ii9)퀗wܿp1 b"D48iK"5QÏBcJghWbUkfS7 ٛڹ!2}l56}~.V1V0i!f]4`vu U2.1\-oVacaJ!0Q(:SK1Ag7D8?B~eZ(xǭn}Fng*T0}#SQҤy>|2}8mN0n,q%P75RWViL(U UF7Li|ik]Z#i ǜ!| yePzy$/mm!^9FOYYڒ?4ӽFAQ!jfbF+rͲPҭKQOzcDQ݆ۍ"^̫;M*QDŽx]y0:oEcjqC7fM^Eͫ:7 )&ƹJ0^ XVI5NIҍr4LU[qk^^`B] #MPUNӌjf,#jjLdV8#Y9眤4FZ*\ /"y3 ҡbIXo0WXD@Q[-2ÖK>=#zxppqqd2yX|ȳt"Ӹ \g d6ƌ.͝[C֋o[EyUϥˑ8[c7؛~M?{ӏޛ9\xMA^/7rLar5Rģ։ȟ@ Ǽ3?&i Èɹxy 7/XR70D_z~`ђ#4a9Y R?UQS"`݋GJYie*xR-4x M>5w9#/n1oIJo9v^R*}#`[-`@I",WiF󇢘 aoS ~0,;l*?}0%*=ᮗR*;17wD^VTR$˺ս7qt 3 ԂCxљ)Й 5%WgY]^R#{>z UnVaG1&Yjq~Lx^ʽ} {FX~" ۈu L[fFP.C~Voߣ9ӟ8Y]*I1@~5gk̜vVY]73ΰRe|)_%==^cZReA~P:z`S=Y_Qvi~ {˹H^c=2;ov{jڪ /u($pu߁c]Bt Xu!* OvFcHk\RSmϚK_xHTLX;jrIdͱJ JCYI ^saIT".0\ j3&1{+nR5hR^P{, ov6˚30bpCGR2<m̿A"{pEga3wڙ̆ucCx0&Hwcu#n,#~,+@~}.o"\YᲔ>@ gZ7*~ێ#@L .7 15 o_&#=F(홅*]M)ijp,ԝi{p⇙P@*@T~(I7~q fj'٘g$83옥ArMQELfk@pq " Ft O‡e . ɛ8li19ɓ fB~h=x֔4:̎+)I \>b)kQu`aNG}1~>(Wp;ɛê4@`V]'wN2,^캁@@tv!Q88YPfAhL9ISE!іx+<8dvr ʇȁW:7ejGAJ2Kpъ${(fqiJf:kZ:9_QÀ/Tu11 =I~eO<-3@dY2 yp0pmJ|ٜQ4Y)Il2u {z65.lTP5HH ǮtL1FC! 6:T>ಇ֔jo;yVO[ЙA>1;{wv*_p*f k&2BנTah< /<;U7:_]L``xX-{tM)ȱ24v Uy62Kz31KlBt5rPn-|* ~g'Ȫ9̀#*:{HfA$6 _eM}sjI+R}`W|P1kd+R?H*&h,$׳%yI} eLWWw0g}:V_i>uU #틂X!np$v "LŐ ]GJ:Z;* wFwwRYa{I֗exܺ-(ɨF!Nmqb g햠wp+g]~nXT),Ÿ o3-Iin[kIUXR46a;t]JK{ 7 B^S0:5"c6S|/ 𘲬35$ԥ­w MC%yҐӫh`R8_D5(?d&v`PG ;ATqGJKBGmw743")~+mC@T^*`v~.VJ o.B?MMHlL׉08;2#:P:q0Z;FcCCAKR 5b/tߖ|J-Z/0OR- 0ܡ HA(4$lt,'uIҫܻXXH`֭(|W( ^˔f0(ipFqƙIWu*gf5/3k¨!7}Ԅ;\j(O$)`m r7ǼknvӢ~icXLsؙy#0%d/P X8똘ҸX+ט sODixsЉފaU 8mHn0kaJz/^+p-,4/)ւ ZHԯ&0qnkb=ON-# 8)rw4/|zi0maNi)0TjCSe8[Ғ# Z]yHXG xh$Yup}r#*z12F!+64R9`-%@Pm.?oOlz> sԹ |2v::;_ 2E_e8; 0Xy.ίT- I% 0zTP< حPȻ^|vjq٠mRRvvuz-еb_FR7 n"z";|Bq.,鄄d1Imv2Bb7B 8~J¥2;x|RNgC%ggY낈+WoPcM< 1zàc?o!>b;ن耙w v0x숏}U>u+o Lt'A7wdE'6SHhGǠcM |ͥ0 $l&c"$}HgV_E5> rDl/|?<1d %-ZJk17xʨiL 8R!˗!z])awP~3׉cK||%>&[~I况'#!ׯ/h[]ො3;x 2\-Z݃qQ}rY߱rQ^ y_\3һ"͐c;ARߓb < 9OʚaM|7<_MC ^K23q~rCJk ^-$HN'o$!+K#.׈)cߕUXU,.+~#?TBvWxnu0zLN{J[I{hvc>{z7α~p<,wʼ>ړ-3XG|lWK?lާq4{ԃD ;cgr#?0Zy[ 0 .k\2=ޒmpMZ>,u O Y,OqBG)Lg" !Sb!>;x `@m #ߥBoh-ʝ4^~h(,7g1Q_!'SZJS7-(@ldOךã}]mPh$r(PoԇD%b4IK2gW$߼>@6~K}/1;r3LIҘJn2ixo}ldtPC]Qm=۟o*!C̞xܮBR t;,\` v.ТlOX|L /[OgDt@- w|0-j|e>f-_-3 !yr5Ȑ̻z),Ÿ`%kK.}v'F0=NCg,ayāq3`AFC$w|Qy;x"|8b2Ba:I7՝dh"?} ༥0?|*aR1ͮ63YgU\y4Y?J.`5>$9 ' >x Nu${HgLŊx`&|C=1YAE,~58uY k+ɨzV͈/W1umzN ~ HV 6 ;s%8L@U6Ji5BH=6dZ*ˀ lD\ M#A `{*)7hQx;@'98,GU+6/&Fzoo}?}(8m32,1l4Z3"nj%hN}yTda*f@)!,.⿊EqZ4$_\tVgkQXA+Ѩ03QtuY-c*ZȒZ̗ÜK ZA(6 mK=8k7w9 muv7:@\,"#QDz_X/C2&;ζ+d101mďJcC+KOCP,;o<1jVw$x_=c$+G9id9>Bƅd>r!~!|kC.;p|\'ӥߤ זiv{v!uGCYI4&lϷWF k0yϒs헇7xߩ<j "g?JY I9yC@1 ,}FcJ;#krG$s~qڋ"B IeC5؆mwʂ8@G/ӁdXG%!IHoJxKG.]\Rc y3LE~/]x1'V[t?ցi5$81.>kI]rlDpW"{],np~n6GG}${9vVohG}z?Z=hv-!1U*~#Ps缥J/~{:u_f\GKtx=~r2_;~؏_uz`}rMK1fb b3bfWzG{d{w>{ԫ9!2=Hl#c!THkvOQsq{:N_5}UOՕ8~U5U_O_O_IsZ5dӗXv:uns*7)9y;|?ISnSjShNiC4!M,icOirJ+~J&))Ni:4v;^*uAї8Gsmz]88G*sWv?v?]vQL %8u?zK'?ɯ_;2m~y?y?. >;qc_t;s_s_ks!MxH0vO%rz^\ŊIy=*eb'{+ş{a׽{_(C{xiqi DO<'1 4hiQ43YUPz}0qg_FL*_ohYsE%o&^yXZl, Oy<Յ#@CͰȍkJ;+ 3Z1oc',W7ܳJ(RІ@alCHW6imq:$z?a%W n4NW_ joSQystHI}} p-בnqA͊ /T&f#fMXK@9T^AF3|?<3 FM㉪ 4B06TˌCQP09N16;5`K uDg L'ޛ ;aPCtUWqb l0Oćޝ\1?qF_:F>[Wl,:y5,WISf#B1xh.+M " r6.2'є'H,%d#nEf +.M&~8@<| dptB,CA?&|:|O{"$說O_`@UՓ} <ĻU~"c'ӼoUeM.ܷh hY6\U M" WUW::?C0UB T`TY:@\MרoWТupO2Qzulv4Q@̈l~S{6֮@ts6/i]ԁ_!22n]0/]+ Y/6Ɯa֑< r唘l( :od!y3ÅM=RJjBwpdYY JI.ؐEJv.e4o8– o'K|M<5q0SzHM 3{@QD, JHtKEތJP@,BnԆ+}zQz]>e03*ϣ1qbsNkg=Ԟ,#XeEcݢ3O_1֔e+.>hujUc5nCo71a3b57dcJ&659gm2И$dOc%f&y M,CDߌabWI=ZZg 'DLVSW=Zlň(|?S} ׷QykX^*ǿԷ߾eGdW`?;â5=j ?o#DwiSK$`v߇P|7!*L#\wc?*L_(rʬ/L]aAv|?? endstream endobj 3 0 obj 27509 endobj 4 0 obj <> stream x{W_bp !ɥ\44eLVSD"dMK.4Lk3teht/D.S)|Yoϭ39g=?Z3~}.Siaaaaaaaaaaaaaaaaaaaaaaaaa1OKK۶m|޽ӦMKOOOMM4hٳnݺ_:iU'''vڑH$11ݻw6,...Wԩ_>F%3gG!2駟OJJի5 oN^^Jk׮;wrb6mH>`K~'EEETCרQcQN,X@LRꫯ|׮] t|o6vؚ5kvЁQfΜRҥ q_qR^V-LzׯQIΝ{qljwR'-bK9yy|޽9V}0*:qH:99モo믗N:Fʑ:lfͦM;C999/lm۶)࿣ WwA@믿XYٳg3o[l;tIF?,}buzǎYb)߾}{Ν裏FxjəO<򸸸^{/R1޽{98LGnzݺu!+]^x!7ұ \{,?XoGUz.WeҤI@oCM+zȑ# P05 znYfW_}2W}/<5W\igϞ5jԊ+bͷrRTT$cƍ֭r4lؐ_z%,}ǭZ:/6SL)qWKJJڵkR_h+%\꡸٫W^5N;mQ:7իGAx_j.T@'lU]r'ZlYA5j(oФI{ϭ%UY=z[-k1ω8e.'Ov!ΐ >k!usLH233c=۷oRluQ/c] ELV_'᳆ vر]v7oht\p'AsE\K"'=,)σ_~Yyg{kvsE5m#K\~}|VV"5 ";;[+Rq`Ɍ=3~42`'SN9(L)Vڠe˖^y啑cá' )4` .)k&_oQ^݃<,_\@ R^K9ɣuw^w4?wygx8sN |Æ Zso۶-,[o2aڠL 8Ptꩧ VYb *X'qqѕfCa6<ʪv42W1T8khxD_psj뮻ꫯugΜ>va\Yf{Ϥ(aI>vZ׳3s't.?^. 6L IG$YX]Ido{#Li~Wգv,UW]&wMʉIL4M.a\'''Թ婧zl х%2Fj6|2ܜiGІX+ڳyIlDnKݲk0ZX!Henbϟ/ӵaR'4Zx[ZȈDcn?GӾRpg$yyyRNΝ|F*7"KG '[ӓO>8Xb̒@t_gްv!뗚ӧO 1ѩTӑVA}.at_~hdvCNՇ磻={ЬgiZhNceΠD@f͒{LJb<F>G@T+Ug2/Q9sH!d_~\BH]X 7+BtvMĄ?<3Rx)M ܨj wC#2Gn&j'gQ y)SHŰI8sq$9a\WR9+Jqq1\sbBBɰcRcII97Lu5zU6jՉ(nj#>s.2ҠAϽ`{zwB߿~J]Xp8+";ȿ+CN QȌ3'h[B)RH6{iy7O _S$fuQA qySpG혚H4Kv94%%%Ph@?}'?UXtG`=NO?l%#5 }h1M4 IMM堧OՎ%x2{*=}&ܰaѣ7ocNgZjqC \Hhbkժxh U;"|N\X5=NHHpΐ^!/[L6t~˖-Rkx_qXAiC4ncN܎b9ӥ%P\KSSBXv'ތ"wW(K λgnj/3 [gy^1kH1kW:ȸ9vf9!!+J`Zu"_xQ cլ HWGd}jjII QZD}y睷yf)c$%l#|_LO  O&GWHXuMٸ"u:@q3qɶիդ޽NޢE =y@;R/Zj[=..Gw„ }XƍU?X0ڵk@5k~3|p>Yèo߾VQWޠA> stream xzit[y 6b_<\@(E(B(Z,mIlY-NOںdsAv$938u]9n3LO8J(R=g̙S@~o{œKȀ."%fOEN^V=xs'rG/6FFd-1wwGW!KBٙz׻j5]= U>h Og޺,BΣK!c٣#ovGj4#78~j*B?qr4`} 8×~ M8hKtzTjXmvWT *:"M-X[}o?>1#&~jl yAoicuX:1Z+l]sqϣ_}jޏ:+q5`XG?(kX[Jq]x? [yN嵔qy&GY$$4BK4/ROL W d_"-|~2J]S %arA"a/$.,<(l)ar2'T2RIY$@*;#B`?[槽L,lcӳkNL؆ą$G*MfaIVnN%.ݗdմ CWv g2B^jKi Ro լ ӓ#1(6d2>dHMKh4-~쇶_PE%3/T&3H8(dGLf$uX T,I %b4S&$$!5SIRv}2랖~L WWI '}LZ3؝1BJ K%5Dd5k)&E01ԜIS J R) %&3eQ _+1Tw޿f8FC2ȫ'b* B$DՊ.y 'La`m$S1рn'3`ĥAm"+%m0L[0#ҽ'-YŤ-"\R|Ȃl(LR a gvmHz q9GGAr o}{y}y5}<}]Ηw(,/ iQH)nй6x<ذn06xRH* }"7eV)Uѷw5G}] wG}Gfa=)@Ó)Rp٦zOЦmi`T 徥⼉'5ѝH'ᴆ<8~|emb{;(m `dx8 P}9BD!Dwj 1$ .dvvf]Nh*7OfFDAr؈&D$^LiƔH9|ϩjo&I#f=]'i*59#JjH0Je}OHw,_zhҥ.-6Ce[VD(*^`[WTd!n1m]tlG쥛R-n[!eF#HzSt).oe튶Dj(I5I Y.8#B#RaTaK&ovFG}Fi3Rais6 K@1`QA ft3}eg@KʬS}"y=rMqI߲bc[DUşQ9Thu"5C5nHm;?vx ,m b7[[P45zS`$| QXn C1CX( fP&Qu}Kx /<2yWV)UGURq`,RT=S9AQB)'sZJv>V~hPXzqƥ'Q?}ЉZ…\x0q"|P_§V>zƙܼȁ M `;eYmji?MZN ^^4={PC *|gù›|2.-렩~3NAg=h r+L ҢK^/L5?C<ȇ?&< y"9Y8G0en)՗O>+Y Įx<Դ٘RaSE#F.uJjw̝Jē*|!I tڥC㻬NQ:zr_|-7}8P::AjrzF:Ge8\4LrbTQrUQרr0GEekZb2(<|bG ubMKggu]sDWy.-qg F ЦD[00LF Qg-Xd[4Sb`}/w#cgSwl>0>l /$GIMτÙSnk͛'xĝDQUKiT'c]zTZdʓO`4X,ѴWj;ڐ pPX<ٿi\ϝFvlx<ٞZa;eЗMLt(RKtsp /8^m(,+r? fdn#2zu!7|ZRRj|D;AW d<V' .sLX*u\HJ}PaOX !"SyCuIӓbJQbr;7m*k-vPh^ ߹|2t+5$*ϳrO#Cxi([Zӕy_ Fh}wCg 2H>8dB#FKhSsDJYH[DV:)t&\WP# ڮh|Hlݻx~·;;U61Oz- hwPpNdb^mry(aI¢p̂FIhlO{W><^.Nㅧӻs 8oW=&Q!Z0ukҋE2T-zƲЩ+Nz4D<3fOMI3рWoy|kb¾U71HDD'z ' %q'r0,wnQ NԮYDPtn`W" thaq Dn}p|rfvlAjcr.q[ /unoʵ Z  %8L1!Z@\:T?6ybm5A*hc뛆ڋBjCtx5CNBЂRV QU;<66FbKuKEb W)6+ZUA*FhyU}D MoTWl?|b9wjԡ};n [Qg6,x֗חoKs֥F:7Q@\xg`Ć3]purUJC}`ԞJ}Huݵ+A&i,7cۺ-FՅFVQ-"hig^9+#`c=BMTF1mӌ.XTNe~l<)kH(̃;Nm8}ɎB{ȷӏMk6_>>e[\#sYZ FY\wV\~=;?;S+_v1;ua|f[//,|wy"s_|.YBf91?qP#R@;r^rJXJYw7 \?%(uHrWY쁠e~HmJ<$ G XrgGz3Vrz737#FwgsWoo'?[uu/Ȧ֑^ OOP+5*+P▫VN,څrO5^Q羇uIycz7g=ܲ^< +D+*5JYِ(7i9XqXlHa*hI!W5]Cw@ywcTQyʷMٝaO/ պfqRҪ5.bhC4f[j@+ѵ 6GfK=+㰧6_xNye bw8Ve670Ҳz37 ՠ$3]}QX!-Ǵ4x?4:wP ɔca5Ejur{F_lئK]EKZUDjhӊ $~}rD}2նy~4{htg6{lbkxGj  -v&1ty:%w&O|ή;'bv=v#ldp sKnT#C5&#+a"x~㒳6P+[?saΥ8 5o;-L6m t7%=/cx ؃[GeJ/Y_ L(Q[U8d4Xxbrm1(O5Ox 㥲+OW]_=`͡XW]Yx`uag8 QIᗰ(BW/hi%aZX{4zjwx^]8_i&.!|bZ-TE](gk4;/5?\%6cʊLK-^ yV;pDj6@jsrC='J ir?di "J'S5Yh1B 3h)C%D*Q;/Q'[D: B9<<"3 g}x5^A6Fxv³6o+p{8Ϭ1$  v+6}49fux O/pO"(u~j|J^DAS1t/z#x?~e s'7UT>PIԯW4eq͓iW/1 ,<^jɇn\-}K#C0i8g4W_0g"-(Eo})z= ,'CHqXU (_P`MPzOUp0+a A]q֢zZU`$M VB) {U5U-00US`NQ`|lth1^+ɸ @,k qtzvy;NAkB`c M:B1e9xt 8Ycf=f{Zu s)t(ntEiFQؽh|g7ʔCfaz,E&ӀAbhu|%YIxGwGP7\S} 7{ 2J:wFHc;XHV]{Y1&YwtC,P"wl=n1LÔȶs}!Ҭ 堵Ζ?aћh)[JFeSI(6ImJwV2piL3>flvA;pׯQE l)Q8a/Yv|1f}cL;c ,]ɲ"YY`2\T"NZaD޵(DyDOh:C Di ?t?Pճ.紗GIv[U1UFS'PNU&QAKr!GrhhXzxQ a(q/~2Е}iڞKZ$w/_C"q$/Kq<:IԩueI`3PwOJf endstream endobj 8 0 obj 8314 endobj 9 0 obj <> endobj 10 0 obj <> stream x]n0E .E !) ~Ā}N?@hG@, ߗw.]H$g璜|{a;E6C_1FCk;gy=>nZeϸv[C=d0k{}?Տ*Q?:_[{d=<,/1{edMmC;^|*F&cZY3t>Cu -5Qѵډ6tx ]QWеhWC0Wb^YS90^rcycz.54+j[ooQSƾUW:yA'Rj碷4=T:y |zp2OeC<&݁!!)/e>ѐ;0//oђ, -`Pǒ,7R-k0XG,> endobj 12 0 obj <> endobj 13 0 obj << /Font 12 0 R /XObject<> /ProcSet[/PDF/Text/ImageC/ImageI/ImageB] >> endobj 1 0 obj <> endobj 14 0 obj <> endobj 15 0 obj < /Dest[1 0 R/XYZ 0 841.918 0]/Parent 14 0 R>> endobj 6 0 obj <> endobj 16 0 obj <> endobj 17 0 obj < /Producer /CreationDate(D:20241025155712+03'00')>> endobj xref 0 18 0000000000 65535 f 0000042023 00000 n 0000000019 00000 n 0000027599 00000 n 0000027621 00000 n 0000032316 00000 n 0000042336 00000 n 0000032337 00000 n 0000040736 00000 n 0000040757 00000 n 0000040953 00000 n 0000041504 00000 n 0000041890 00000 n 0000041923 00000 n 0000042155 00000 n 0000042211 00000 n 0000042410 00000 n 0000042546 00000 n trailer < <3A5451C1C803A5F0F8918D56A3F47D83> ] /DocChecksum /EDEE0C0610083133580EB584DC66AE09 >> startxref 42717 %%EOF hardinfo2-hardinfo2-1331e88/tools/LICENSES/fftSVG.pdf000066400000000000000000002445651474767047500217620ustar00rootroot00000000000000%PDF-1.7 %äüöß 2 0 obj <> stream xZIo$/@Kj1rrR{.&A~ȷodmnwm%ַ_ywN~_urxBuФOsϧ;=m 1f n!bqE=GZw,\@a?җ 97R{!rqo"w{o}Y۞C n5"3$C X͕UBCBla4lD]n@D2%ܸiޖj5ۭnhM*xT^m q5ﵷh]O+QC=  p j C q}*Q*brZk{liQU &|28_7CdNIWD'AinRaSw^xJpβ'ưe:ˢeaN+ThY;!pW;%+WKWi[Ùvl:El'#1<4*9l<"Њ)XIyD 1𜉠hiQ:(GO&(YC ƶbo\zC[aAS bZV=/6mQ-#&l20OF@0#1v7um ?vx_ /S\T&-Hc39LA+eE-ALi'ޣ-Ӳ>IQ^P%8xfhi 1 V~"1RÉiQbD,xD];#B!5C'’  yhcLwcA`r`=9W e a4)C@TFIy v抃^KD}6[iTR ]1bjQ||Ar uv+;eH2SӨcHE9i14 dUQ L[=,}&խԤzo䥾P1Q1tbPC/[HtgT%\sp/on?HDS%m}췀Ow]GGr]G?k|ﺻțxB@(aKF3cb!üntΰ M3Pb<̐ wKP|W]vU6m?aEqlik0'^uc1l|`!w>9Y$BW ?Wǻ+|\L٧Dy-8M4a!` Dۄqj^s<|>ZuKc+FZX+ XW h*|aL_ ahUEXHS= B<3H;A"1A5Uy\%zf< [_q\iY8aֵzB皯$,^Tƥ~KeLߧC3",^T>̄*GYz pTT(P"{с@KTIptd3'X<&.d\s"UQ<]\k8|M@0XCaJLyYyy6~$ >^0+c cLwq v0X]~܀Swb1]D!0ȅO@w۠S;+%mߋߵ}kU=zzi" K[ӗR$9u 1ӍLJJx%mfGUfFx}|qW_T@*Ւ tqgBZFW/J ~VB T1/qЀ7I@ 佒(cC èI$1GM:8C^#-:6@xlRđ,hxfR"F\n-}rb@/\2W"釫 IjٳIڐ!?G).٦0M.)y9o/Yn~4x `CM>Z&"H4N~GShC=I;3 &|&EX@9.‰1sQ?Y>Y6/ZFv'0ڈmD<=#ftjdц2:)S+&"rMY;Rhc b旌xm.vu&rxUmYDnЏSa9 ]dd 96`h5;8y6! *QBb{ QE)]z !=頙D>Rdu0Q#guA  $;OA^5|Qt ca1,Izv]ê?q#$}qF6gJҽye'zyUQQE|RԐ5ĮY-:LF~V,pQk"01[?e[S̤mnzd E!q.30QUZ mx> stream x]{XUUDkRGJIdtJ,lҲ){ ~SL~&{ιPQJLPy#y 9J>f}ளZ{ByJdC4la18:00=g6:fpXLNjpXwcOĚXF2Z T_ {R&b-k`FAP8&nMъ(_U } 26ـ6h79sz$bǨbC"=Xţ yF`)GM - 68pw=ԟ 8lm@YݢK|e4zqD&l>2PDg< kp\ &8tp@d>7(;lN̻VK l?hCfw% % s0xW&]ko2]Xce7@#ݢp9oYQ>&!-i(#*'?},׍.Gr_ | qϰUzϳzy/Cbۄq`eI=KymE"³| 8"]V5q^u'ō '$o`1Ȅry'0&Eyx(+-4uߛ4/$=C2}𠳉ͧL\%&bl&xI$4,>}ظ]Q !"ʧ߆DypWۯQzia|^r[ %2Uͧ`n Lt ˏ}i61AgS#Ne@uVr wkCI:< V*Dŷg&>F;_ 8KJI:)"s`)nG=O!iMKjnU٩׍2` Kh>-]U}!F<CE ̂ć%L->UJmyǨޗZ A 1V⥾gz|u|xi@Q#~{C쟃B{ߠR`S< GƥnQpVLya ovbͷku >gh Y}oRHBEYLBhh"ҷL2/CzQNDG.vϗEn' Ϛ0I"oc{Ol؀HbBWwI7B{Y!Bosp,?SoGHz_<lqx5yI׉ݚwYB#7V`SP7 bVk-؃!58i! L4]tt|@] niˎTau JgOaD B}t@ގڽm1~uy,΃ :pxz|I-Pr 86􆢐O;7&1am9mySa6K;jC6}Ȇ7VIֳ^>nG$SuhЃX;{C:pδ>XvtU$uySkSV$.,b9Y]ll\|WW+ iw!=9$ғv}Ez+H =P⊨}8k`Z??TRvp4F)bLhvO>& m`/,x|p؄xMJ 2(X ՛sIb$> 5 p!Slw'7 t3:Akh |yǍ_K@.TɆx%7#4H\"kУ1ϲ5t4I+B9IYD`+ԍ *HtP#m^(C §Tq6xth endstream endobj 6 0 obj 4057 endobj 7 0 obj <> stream x_HSQ3s!lg˂CыQ铒P$NhTPTzsBB4Mۯ{mޝ{}{3fۯfm Q3q-Q]HtW}"3ձWݙK%WR"R6JuSSz'BZ:4AǻBnvPE'8OH'߶'$sZ7}oB6'O :2ȿesx7}ZS8+0#OH;hhHS4/@3OH'2?O,?_:^9 $(>ipxr|Zqû(,XD_kǓ2 >H;`'0gC;WP})qݸí uI~\s?}Y=Ů›+x jk<2/L7Ɨ]j` i ө+:xa՘sE&C8úuEsCMں^7b ]Զpg1%5nq=jy_ȫ endstream endobj 8 0 obj 837 endobj 4 0 obj <> stream xϏ$}ϧg(D@NR.u͖B/qty9"%-gv+F&=R!-¤>ճ%wwvz<Ă|əP]]0IwR~ޓ65?Kͣ>Je#ORKeO8,Y:-<Ӕ#^@{/ 0N?NGi@w^y.?8,( t՞5ChُϬ <Y\|.֯ԞE60O~]ϼaW?N4GqM>'+XB{x+?~5)trT&w8h<? |\f ~\ 0nGe <~?mSY% `K>g^j0G+jvq{`e4L~/yʧ)t[Wfttq@.?HYՍ2v>~vJi? ) 4 cϲi:J1σg*_GFԜg?g/cԼ[&ϾO@?vn G)[&n:OHvo[^NiNScϞO?~ )̏]k|O>x&|ퟶF|~د=pd\:0?Heŏ `ݦ?ʛi O7~\h<.B!? o5 ?}oQ`pwR~g/vgt|7a}L3Ս쉈0!?şj3DusFO>Io| ҝr4:' ZWZ@ǩ>.띔 p? O7M,h|4OF?J!+Q?#}O-紌aJje 8.^s\'_?i#kOjgeq%e7-+(5'Ο.~tu 埔 g&ݟ_/(~Ltt'>哯3f?/ <ܫ󓯪Osҿ`0q=zy5<( U+E}?0?)AڣOwT&8Oa@fnw F^#?.|]xسڪo{ytߦGS,'?/{)fL ؋L2Ӎמi2 ;)3|Meq@ 4}Mb]@O`7Oc'P\o>5wxr|Met1`pQ@[yag1oO LH{b\?+0T?YF$d/LfO/v'応ş)/E!LS?},D@Rn2fex\q 6 ?N쟍r Uu=K-r ux2Wf.:A&% q@S~\EyAb K@pn?.r&P % xn 4sxK@2;Y.Ӟr W?d02ͽ'hE}LÔ>9('|?;Eh?s&ЯR:ihWg~ftu'!F ~~=KY4,OLͣ;UN(|n4;X-y>yLej]`ړ'hE}`|?3?r (?+ދ#)|n4g?_1HHM t 4ӍDh|2^??tq#E|۞g`A>Jq)~uYo(`ǺM1wH\e*vʏL]g)y#g} Z_gK۔Σ@`ڣ~@O,ߔWyq˔?L1Gxgey 5Gw`*2gh # o0l?W@)L@~L1梇XZ?_{# [:O Y-l'/#/zx7PsyѓcTu':6{۩Iw^@gmcٴ +O{+j)|og!zUG.?MG^@e2wE-E1_q ZQGgv?-N\u?*'e/^mS0luI1V% F,?@9K`ĺ3:E0F쟥H5Ə M FfCo{vTv Sg->A'ʕ Qu뢆:0F9wV ~ gu':'Ryסg?*?g_5 P>)(~?^n4^@;)ȝ?~[< (/ȇ_Ϟ;'OP@*B$w)<< )zNײ ڳأcYY7~ ?&S4B`oӞcԳؓ=/FgD5˔= ?.(~0LQoy;vEOI"*_ + W?.3aNj+8Gz0E ,|BT^? `G„WQo_Z~@/0#aE PO לQI@#aE/iԍqo Aj W>[7 /(~!L0sI ?qSM[`T;l9ǏZZ@1~쟺Zѿ9T+[ySeSsT&P6Ckab=.u8z̧0B`#~=g!wʇ_*,)eůX7~8O\,)?Jn~oُϢA~3)譎g5, .YNrgOxnmZ.ƪyL10´$k؝?4˟asxL%0ϢO_AjcLg!E ?f[<|sO\#Bsg|&2-< ^k_y,DzC`F-SQoѺW|ȳnq75GGEOYLcB2O9UqQ?>Cѓ`^-S,DGefVsYsu'rg4EOY2{0f|^q/f[7~|0u'5ʢglk(GfK{ ?g+ѿ;v:֢7k)`2z=_yS0_Zyg!LTEONKZ~}뒢O{wzsѧJtq*ñ^ѯ2~`2 /w]^ѯUuF0/s_}P]|PJ[(|EzZ?oC_OkR\L],Z/T(rsW~뙺z@q@'R/t8we___qZ^_jYRxZ^ՍwT۾+ Zׁy#*@-yjUY卨GƏUA卨UO>`wScX)KFTk:>uIވ 0f#^䍨cvxR&PQ >uyMT]Ou㓏L>ʺӺ0*)ԝ?5}/`DN?ĵqᇻ^UӗM S~kw]ޏ>}']@cQ^u?֖b0Qˇ_~j5>{$>u?q|5t'/ʝ?)@sQ?,#L3]qJF-0?q@)4Z?[`fwbJZe,D]0'O\׍ f;Ol XQMZ=}@G,(5{F7&-ދ>5xG69K@;vLZ}kÖedvAj\d縶(7/(EڦKv(%_{j'؝|\&PI]}k˺S >H=nǷ eQǷ% }PO_.0;\٭r `wRzz᧶% |LZ;-ր;e4|G% 3Om K@;O鿺3k K@8-(h ?5x.l<}ͦZf~ͤZ% .?).Va3i", ?\0, ?\rϏOfX1쟙~@kwp)gu.3Og4^l ?G-065f>xg̼Y9Kjピޫ]Ѭ=Ը_rϬ>L Q$UlᇲYʿ0oLWW{ R}j E_gq 2_~(k0W۞}"k5g)6eA?y5Odnd{i~jؗ2~GUg"迏"zX1Ԙ@ 4GeUO(o%k?m5OaEL /E&l`ՍO*w¢`< `7G/+Uli}LEEވLy] ?y2叼|Z&P!~j7bx40xK>y59]E_YxLVc.8ely+՘>v5LU#/hF v;.EUw၊5G ?[5\e@5*+?bT@Quq@}f銅_T)'HJGYIzq_hWU&P>g5κsp7\7S{+[UG&0&V@6/`U-S4Rjnm6(`U%u'@n chOUU25joh?ZSUԍt'? ?RUQG*9Om@ (HUM'x;Pn4@G*ju"zVG*?M&Ge\rѺ'Fh`V=_>~U:Т`w/[؋oO/} ?RUQ_(&.o chTUk| Rs#ׯ6~Uzn,<؝*|?Z#U0Ӟ_wG~^2~ ]y?Z#U?nV.ܶTU?r#40=sO[z8 `0o||?ڬ#US0`(&ЕxhhTUԥgu#tc[(=X/G~^Ɲb۞mPz1|j9}G*j]0`}MfchTUbO7#UuwmVZgk&pN]nG*jӍC[em;~UZ(6| ?RUQkK1}+巶5Oe 3~UZ]0yykchTUFgu#{/?ZlwG~6? ||?Z#Uyz;4@'_-HUEm7~Z7i7|?Z#UH;Ѻ! sO[hn>nG*j0O>PhxɻA ?RUQퟶ?>hNͭGk~?MD7L 2v;~UnR ?{ɻA ?RUQԚ@0i)c|?Z#U5Y}F ),hZ_ɺY&ОƏ ?RUQ;?DOnf?ڠ#UǍ@0%S{k|?Z#U `'~v<~ӐW_xVG*jko/w?uG*jڛiq#h?Z#Uz"z@1Z}7Ae}~6v5~Ѻ}ƍ@PkAG~0KN Risp^3`*_VG*j^[}Z\OElhTUO롈0bmnn/G~"OOѹ 4TUT ?M{aTM|ehTUTq/4Js3chTUTY^hFjn)HUEֽ0ef^6(HUEEs!Q~ehTUTµ `F/G~7ϳ@_ͭ8?nG**z<;~Z߈=j=Ǿрlս&~9/HUEEo/'P4`G**zpF<ԼU&P;O[^;/7a>/|?ڸ#U=u^q-Tj3~?EG**z\wÀ9g#Up.?@ GC~G ChW7?vG**z\*С x{E?#U=9V{a޵zZchTUTg,owg^.HUEE/q<`@_MeZ ?RUQG**zi<1v<Ѯ ?RUQc,57N ?RUQ뢖V_fq]~wEEur|'P#U~GEyL"tԾ}[5v˼m@nuTUT3:dh߅PoM?~V} vʷR_ +HUE1zeX{,b ?RUQa5Oݩss$^fah0gbSsz{BvG**HUEEo<0&՞ƃ}#U/pS^&=5~TUTB(^3lVjwu+@Z#U}*5O!. op t+G6(HUE]f4ŋOS^uݗR ?RUQчyru;|kIZ ?RUQgou]h&2uvV&^c̡#U~kW|L6EݔK:wOܨ-n-ng#U}Rk&Зnjv3V_|6??GM#Uij_y3`d?c6 endstream endobj 9 0 obj 10269 endobj 10 0 obj <> stream xݍs54:!݊AnRRXk$vZǬ=':.qY7tǮݪf6aEurTF557S+\5{}oϿ}>7+B5|ҬSNFQDb=2Vaw,?H,7hh}qsDheeY:hz"y4c[1"Q.,$GDtb?{`1M w,"f]Aϛ(d0;}wR,}"i-kmAu}"i4~o~BHDx>J%}")l:$ @ER2#id^Ώz..qJߦVd/V'҇+Mębo=/i\N76;kAlscA? ,f }"0?'" f"[`1†/|ACΠ]dq b,ٟ?8>|`Ap} ;m ^9B@|^,O|Ƞl=08]*tAz⫺} &;J:Oc_zosCwY(?!9~;!yn~{jq_` = {#^lQm 1H3$>5 @bktTwkOA'5t XՆn=%$ӥayK4t\@wN @"w]yz:HsKc:HND'|:̦HY ,z)V}, wg$b^c^5̧$:n;C)0o%^$n:N;;gs'eŏ (^JOJ\d; =)qK~A zVYg*zVw̽VikFQzZw-}IK2N:7yS/>z!:\x>-us78c]]sN&θ9 ZQ'r>Φ&N9/͖s'ԛ,]INprڬ''HC-m/= Z ֏8g'{u$:B\9pa^'V{.0z_ T=A؊R:B]NP,vot䭺ηpCkJNz䧶3o(N7cK JO4zbAt!)zX+=J5j.z}8zbцho,YӚ6L\O'Cq]j:Ɇ9zbt!FTlГ6d#̤{ ݥH"GӹN߁I֞k衊5ѱF@Õ,--c\L }&YYӊN55" 69v÷tdn\FV̗<42z4i6]in+LG.utp~QSÝC'xl˛ӉF%zb4_xd."hzbtuXzb#8cЭ/t#=f1)t8~[@ZtfLΡ-&rFJ>G-r癌G-qv]O[32FaiQhzb&c8=n1+/{,n(gAl=p1:Ș~J\ 21vX5.F8(I] ")zbnmdzb%B* ϓ~i=z1@!zz[ْk AS mC{:Bww fVCO:A`zz.*AY^{VF^p+}`%ś'gҵ^@3tz ItyO/B 1ބfݙz@wgKUHՙc2$vtu^M>lG7{ǗggO}H{=/ 3^intpE^8+vs3H|ѵ5z)б\z)tk&*YFEb2nHWkxʷZ*8?NfHՕo*8/LW#ӕoi*8+3Lz92:2*8F7fHj;Ӊ~$Z 3[uzAdo0Í7$QuwM*ֳ\֗x+̡2_ zI,0^Dt[6h^Ddݖ*5I4^OiY]5(,K^DAdi 讬q* 鬬fzYUY^zYխ,ҫ^tSVN*I PDe'Ij:AYhzc tO֙GL£{$<5Yzi,t5 tK6ңP\QߋnJ{p7^v,iNk%K:kuKt5KjwBEKJexbhIe.|%YxC_h]G&˖LGkuN&MxJzݲt^)y^` ]gJ$߂7O+9x=/M.HcЮ6-xz l1xk<_/42]y^l1[Ws k8^JN$$z?9˗ ǯ ڭ;|bTׇ^|m.n.['m7c`%t y޹lgWMOz岽{ <3^l9]W B'ᓆufQxdlitXֆ^4v7NW--)uB^%5=7?,insuտ]O%Kzy8"zŒABŋ3h{A=Kf҉8bzҔt#o?k]ۏ љ8RzNlRTՅ^dg@=݊Φ*ٺnAK5{9Kuk•<^<:'Pt1NYҒާt3KSruL];˔U8bznrOzW8!9^g8z_8`Asz"_%J}HcJ!Ld0邬H=X.1nbսIڼIWdip;$ C.qõtIV#7 GBD]mzm ;=!8W+0GbV$Tc颬Ygz_tSHoKV2˒{ӫ(tsћHDe=IDLqo݁$27uDzGYr"R5$ZH'fH\O>ݷ^n$C3ǝH,@fHLЍl@oEb3J_N$FϤ7".(I]+L2ކ::s\GBt7!_aL3W[x[:?TﵟE ߎ1Iz,/CK0r=y1-/y=u1Ftq<dW $zbVIiQ0CG-̗oEZL4r3]f,\IJ>یd],i]g^wIn:hDOXVQK7iBJ#3h$ӣt򏀪鹊-NsNUe>k&#4tjj=Yr4x]mhDS p$%=JQs[uK[!tY9mG 0{Oz|br[z$=:q޳ց8bt9[t =4qGeUt9Pٜ8e]9Hg%ߣG%.*`9vW?!e]#iuɷoWFHzZ:4&vSxpxt;Y7^?%>_·cL[1xd = Q b mBW"OAzi/!=#Z.?Vc6!l͈Wi_ T|̸H0ga_yԴeѴ_ʁzS+zч%]u7[wJ=6ˏMf]"]b~#FOxdޒUWqvy'֫Sk#D]C:TkdeBO4A"""""h*1 endstream endobj 11 0 obj 5176 endobj 13 0 obj <> stream x:kl[y߹/>DIKJ"E]D^R$J,IIvd9+!S"-ɲ-V$9qMW*KҢ-4E[\M+fڦ0vf]uYHιWa?s}Csm<82]*-;v>+0ȚZAGj,s,{|c&F8=_ >Ɓ_m$Oc?|zi{a܅ 9z[*]Z>^ A9_Z?İח/6bLW旿q"z"> d5ںz-{MaMU| m)ICۍscmcron 6q0a(Dix{NleNXG-H}J"HY&Q(R֏u.R0;:tȪwb&MW:A5yMƻedƬR,fʜ;)Ge^Rt@4 ӗrd?HG$WT3WI#Ω:L W=c u9lD)s~cZ^ ٱ1]u>R8<">=Ci)4X((e9!tbޘ+ۧEQ蜝B/BYuA&NE8Y(̕ : eQ3.j r DJ(%;-jF.)&t5̕-'3 n+b,Ye]Yǽb5t(_j!XP<^LVEmU 3[fTt5Sҹt2XBi B)bs[vVٱL,Xum#9 *$,dQ2QG +>d%V--j\*m}QV~ wB ^+sܘ>W%tg@ N;=' 9R,Ee.T[Bo&\kK Q<,֯%ڶje mZJ6lm\S+ץ"jZU:yFKB׶Mzm1h(' !*s|AOAB(mUaQ(m;P>v||Mj0s. m**H1LA>ۭ]q q„rkA&b=1qXY$X"wzӧ))y 8ca{[^8x܈:X#2ܞ `BВ>Pѱg4x"JR)U}}Bǃ.Hn.E4ik(HsN4%i%5SV")Ck"*kBTl)dhcV uKٛõHq* ✪xⴐ-.Lw_G8=Y һ&S%L"h N*RLD(<~tk/t..aTӞngݔZqB*i0{sP|Хo] #Mkn$[1W87\1qGjq\f>ۆ9M_GިPwDE&n\1D54_-cNTIbǵϚʒѥ'Dذj &xP5bJSU~Tl=V#I;O"9n>`3E8VhFZB>*8 Ү6r6rL pPšh0f#DTЮcAP()NQ ,0rf|Q Bg_Zd|QBK/ g|Qxje>lP^{x֚8kHq.2bzl%+3@810@R"HSП6@~)3Dx)sHGܽUz/CR3@~W7@nEj luwU14a,du^ӗ*u ch_] hO~8BȌ".Q{]AW$ #oFRoH݇,OD¯$ R?;eAo؈պh=h\x7⧓@8A + mWuAv!Ъ\/⽩ޞ/Wm"U19c\L/n3rwuȩƿ^ܓb_`]>Ta a$NJ+S 4%fDGT-MZ5V7x"2r{(k޵+~Q6 95 ×S6tZ~-xa0U{nG^¢peîTbh];[qNՇO[>6\\aozEx8^䨙vVv$!A4Q!29 0ՠB<,}t:?6ҷ+g_zG{wC44m|}9D[y! [1n5Z4Pn66Pww(kWl3j" %ƣg1$HI yXr匸vu5<ț/ %.Q4=ߎV]PHPK3@g{(Ɣ@s%{`Mm`Xd6Ah.'&w+=vpw dr)O)?5oOro}}BD4MS<ژJ)&7r-M{߭׺Ts)QI?0'8(q0fnK92Su{~!`wz AD\)pOmYRͺm~\CK#Q[}b I/l鸢v8t#Sj׀)c۳=Afd_?kOe!}gMVɽG2r# @t$DB -"K:xʣ3bb3b" $>vT-٠T^J1pGm}aTJu) =MM3'ko48a 1壮*zV2SŰC(nd4@253M%i=ЩEuMuZw5Q[E~lOw[;mtG皻SCbM\œypOP y=SErD58?M?Koݥ4(CF>=Z"aBٖ2"`bglV<EZ Qk5L #+l3rkm* ?kSM &jw)t<>1Q#5Ǐ"E#08Yʒ MSmƎ^w do]H7Q][u! e.nl6 ^`,v!YY^)ٶjXoN%J-!$ɠBk Ak0 ;`4kZ<ɕuf73Y^>,wF[gδ6O{+ޛNڧ:(==]HD |k$q^x^=}ZRD@0@ TXOUJd6H5:j5RBZoX1FDY3;=ַ| oϓto3y2f"& 5qoA]p-[-M-+*J.bJ_#G - l8IZN`OvO'._xozv$"^F$kjJ<8~97uٱâf@U|n WA-$l:A-r*D^y{j =M3}EF=76~nM_'$Tx@@:=90{ܩyZ?b}ֿu <8ziL[#HO?XjK̽h)rN9eh[|y\$"m?,ὶfK}2uT_QD0H.+0%(4n ͍*ZykeRhZ1Ok'F 19uЫTJ'O ,;ol0dс!MIbzkfnqK'Epї ]ƹ/.uhj͝Q%@% K > endobj 16 0 obj <> stream x]Mn0t FBH)  "cVqX֧sF,hxw n d,tuFZ, Cm1σM[+<zsn `fE!4tsk_Brmkyz˟X1%GQɶ \knQT'lvu^*4s0Ļ#r9c8#4Gf:8>#NɐϬ+^Gi?!%2dοdz$Oig'%]zSx uwη;}3vb endstream endobj 17 0 obj <> endobj 18 0 obj <> stream x{it[yo@FEQ\DQLh#!ŢDڒDc;q&fQiff4$IvrfI:҈@=9v>h= Ȉ IsgKO#ms zĉųl:mDl\ڌ>Ю / ϿXh!@3E3,*\m]S[!ÑhCc,HҙlI45(ƛTh C9 6z&-MiE_x뢾d Ga?lO pyQsLl1mUmr?W!'T f|/6q-zLaUd7"sM9P=!\;0-StH`PFE`w|R Y=IN7h (G! 2U$FBi^f&.]( invWP_c;2^(^waJYIt\vzP<¼ 6!3C007 sA'Oڴ OL@r;ڋEaMI{4O&Ƶ &gE }u3[,= -X䴌Fr=#@ҫ4G0^ebqTqX8( /&e6!Ls2 BgA&\l$ozvS,N`Q!rHI|BYb^s%:~Bs@ǒ>!j dY-~ZCތ Xpp ɨ΂@BX%TEC"  L%V,K0\QȳZ sBaɈX#10E lI Յ=d@CO$>\Zs{<:IٝX^&Mu5=5ܽ5}55kzr'IJen$- )%%)'*:]dEgd)$\#+*Jt?r?r= {#(G 7=mJ58=<[PT 0El6r l!K"qo!7Ufə 'Z[`6g5aޖҎ\SbrؾNk+=YJI-rw'߅ =" )akCi|u!"ct;wd71N ښB|ZJk0gv4!'sb-ȳħHo0+xn0'N[TF2Wع]gSSe*t3Yv)iAб+ e((|YDT}*N 3"„5OBwYMb7gK6(YhwSU2N  Z@T!sax]T%5mwUPR(k$8;Y.X"R݅ TZKc۾mmێ}rWFl #*(4%aĀ2ψ*$hyub"lztn5;7l㍑p5<Ǟt1uv.m&G*&Jje @q4!yGv:E3@Xϗ)dv1=X*TbFѰ=u5nj8`$؝DZZ*-CvD--u8&SUkwlsoȓ{W&ZS3 y/|JJKgN;tu3SbA%M0V@#uKS^VfPI2(AqY-*`)#U[a V](e13Ekׅ+ S,9 -ҁ>(Cw׷ ތ 1͘?vLOQ맾B]jb"b2Q**+حfG!҂&JҤ_aMxiс.o3#kuUÑΝyᨔ"OfC6'"5fPK F#u0*CZ <(0&lFH;[/lצ 1K-6ؗ2=7UD-_vaؗPAD]R;$eP.oEDb,Wf]9I~Z"?bŲi<~kglipd{b,MtZ3֜o̍djF<i񽊏o@_F" H& 04ۈM ϸ|7).-ϟI`;`z?KstFA9$C?BbfD]ʺD%^G )J[D*JN\l2*{tb D(Xe%,VzX淘rxjEX9fg 8jr[⭬.NlLVsnŦ&G"6-=ex{4?)>&10>$ѝ a"id3ן֓t=#3DnUl}鎸2!|UFQN.+BÇg&{SH\xt(BvŦL4󻺚֯B |D)z]tsV<1ָ~q0BX8I$P]TqDEWYȣ*qԂCQĝğ7VԈ!_}#N/D%ui$>pyX©-SexV//DB0+t=1x<^:%_G d_O8O@g7?66s, %ێNH* sHa!@ %0,f ? :nAh"x-Ke} ?gcl|cDf1bFoיT !mI|& y<1&*Vho,J./",R'l/pVi&pK{ve{:)}}AC#nf@%HwA2#qҕ<,[Kb8؂!z5ZۙyǙZ ml>3z9{NesnCA [ 3G|b(1k'jM>|VND 1u3LlU0al9P$9Q2f_Go~{R#o+ϖ_(~m>ppW, [V-w*iY7iuN473,m^nk5]-}aZ^MG֚yS+YcoynQBjn)M"$|^O-%ҧe;] er7Juo+J/&'S&27_Bj~@]yAWFKy)uk7TDpFirf2R]bg+TȠL:EV!*|Au{54`ǚD݉f]9K:dS3{_ؑFb>'oӒFl(*or4h|3PmC6o9z0KPr(oo(_L)%U8U"_4_/C_"?kDKULNit@Ir_@DcP!h̃8%>Fc]9No@Qr+[[v,J%ӈjWQ|Q{xW|=yd0 t4r1 _Ww&;&7;f{Pb! @FJ9IGA(m-i#9] qpg t A)śR0ꁯ7 6љW0firg+>C5 ILwY\9&+%3tQ7J$nZrZkD'Zz=dZWe}1]Qi}v6T\灘j48,F tտA7K5i{zNrDCuM(Z&JHvgGlcZxc ˇ[>zTÛ:ljh {)!ٝ"썄by8E/1O0_81M90 c&(Q tZ&i&PmSR:|u,Gގ\&֠p٭N;#[0wkX{  ON8@(tXd67krVW1`{/d3Xܻ{m\o tu?o>80Y"3P6:;{Ӕ9.{}_ML|M>;!ǰ*fmN3T\>oJx峗.}f>x^&yD߂A4# EU2ęr6~=fA|طUdh/գ,-p~G'#l@l_KGOgA Fx.;3=m;~'`=rPi_{ˢ%YR#81j€r  X"/?1>R!Vn$u4+.O~kaWl"L͑DӀ1wYWR Z̵hs|NDyiFխ<̑~@ .|#J^~[$=tGMl`pt }Y?p7]jEl#`CvE0 Qބ`ŨjfЅJ!r*Va-h)xJ;mNz|a/;pRMVK#h P 0dßĖ kEo=cUd8QZށ^oNgCCocS 9)ój))0գ+TeC pv:6qԽ"Gulvzp~zF~] iuk3WRS(hDmzPͰj.-}Emdڂ,!;;--,TIݟm~ws>LAO}98S/+zm?mX3L$׿_0AMc8 Շ5 ƹKM #Fm #DA~<Ȇ#PJ p} ` }Xyy f`&!:JRyߠ^ǨCn| 8'`CHC g0@wIUb蓸OSyIWn%9b?Ta "[ .1 2| U=\ec8hM)or,-fb}C[cvlIw`~=^51rCb ?Q$1r SȌ4n`ch 4C!Zu(z^ wI@`#^`Q`3je* ̔cɬj0q4/d>KhD74\MAk.M9t Z>tOB 0 DMY =89< wk3nV *IuX@;%xjg?hEXrOB{3Py֨qY؁sPY>Bm-AݣsRgU̽H7 nAplItIYfls)>o>XsLsh +#*A·JV,cƝֺ}}mWM{QI[VOtgw5 M)!Ԭhof))Xjy yž imYyt hiG:%TP}- גb5_j3)*FeWΖR8w/0m ow+=Ttz4V5Ymv$IX%XEZV46>{v#NNaDQ Z^C|^zC+>ԣxTwIwRw: :f'+20ĴRqVB_j^sf}5 :kI|Hk}Ӳ4y_k ϯڀ(iSpңsS'9qsy<溙aثxy|B7y=2 endstream endobj 19 0 obj 9477 endobj 20 0 obj <> endobj 21 0 obj <> stream x]n0z C q0 8v  %~rvp\~C0K-L/<}:oN2ݒV]9a< ѵ%J76x٪(f߯3?}jn9m6EYՍ@;AWUW tÜW7W zC]BQ[-wwh|sQۂqԱ__Ë%NKljZ7hWO %=8p =z.=r#'\!;R٥7@GRi~z! S1otPl`*yK" endstream endobj 22 0 obj <> endobj 23 0 obj <> stream x| x[ŵ̽WZ,j%yӵe;%/;rx &m9VXlg@XIP JPBN >(P }/@_i .`?3K|~h̙339̙{ F(A,to W"~6uo5kcwpŝFdS#ЯۃP>?&BY0Ga nv?jlAh}|kzhoV!WVd#n@``ph^BhoH`?| ڟ?×|bT6r %Rk1:A0̖8͎?(N#;E\!4.~OHTp?O|A8: Q$`]h?|G@з]B0h=X Ay~}]uHLtfEvTBh}? <Q#: s bh:)ejo#EE ա+GѯqlM< Vޅ@;?3a_VL?0 L**P>`3~ڸ>|*@ȋF@Ыm7܂{r nt 9 -Fk[ZP' 4M4<za`,|"_:~؎\pƟ0<9U-dfOξvr(ә};Mԁ2Q y% @zt#vA~BS(&iS&b^܏w'I~`|̷]kW5pCOҩSSMǦ_$h:Of6䇕oFwa'qik_95|lVl q^Mx7;A|?~8p,~ ?̀-c`L*fe2aN2߃Ϙ_0ff5l% ;]Wٷ8ern&8:wVqno+V"B٠Sޣ(ɳZ?B*;h c$aDgoQ<GXNJjtS̄q-oQ,.S Ga=f'gǸIzÈKfIbyfĠV<ɼW(QR@q}K5c.40-=mR ;v:Eb^<@tO8jؗѕgb3 n\d8|#w8[i*t=؟c:idHy{Ur? ~1}3*!2 ?/ i0AG t;^c!+ rՠ17 q&cR8ǧ'W1m܍yV4{JV^QbEK /vf.HOsĄxk1Aj*^uVt0ᬬ&m9ΰ4a)=@{GPbA,Fng˝b_v1|µ2hC!zm}bwp}roT)s5n4(lubJL]>  ;˽afӽp6oyBJJ{;˺]a\6( *˄ea.#8h8~n߁:]1=ߕmaN0`u9l&7ۛ"i۷W ^670e+:Uma" wz sV;W9m FR=ox͙.IpG-h_qGv FIz > QrU7ΨU`a[Nڜ RR}K >F{`auY>a9aE}`۝81t#D@b3Q8r]eJ^a 5幠#mR[D] cȓj3hOl =Asذ*cA3{qt&gmw_y-L eml#CLK{!&0Ԓ{" LbX:+]%E? h5;Lf35b^{{1X``ۧWqg߾ Xs/2) }##Lޟ8B` Z5ķ[ַM6`sUhMj)!X$ 4P5CcT>aƒQmwG08UQwpP]iGwzbQ^1Ř?>('H#iX<:)L`DeVJT|2paTJFjs)$& ]tv(tD{=R研tF~6mD}*#:|01<4.)p*<[?yM_o<7k̟QqzlW{'ogn%g#j5,72W&w JKe 1m*!MߤiypN3 mH/}ujI  :(0yNɕ yTp>H)'?9ۇ#OOkHQx&>¤x 0F#[iHRF$֢Tͫ$a]sYLg+P#-'ra_&6|^" b5dGw7~GZvӻݿj*xkG?yڑSڀ7>~BZ]e Izbǥ5`0X8+DڥKRGlFg&7t}dq[8COj!b75jݪԜR;z/2B·a^o`X-c0D(ZH p4Aȣ \j~GBN>G:X*c \80!Zg=وJ ˹s^xA9_ZqV峓qQ>g$Bh)&5}QݑLҎz=ލM޵eWuW4Ƶ,;z_c?xǞ[u]iZTq7VCD?1_UCVOCaa͏É%ެAn@&;XcO æx qK:&$醵c $ 56 DPߩfp V%F+yr$΢|3HJ~/~O^w&YڱѫYw͸$뼖 k=0yr0NL 8OyZ:^GUa"WqHq\qF1C"jV ,;MM z1{ 2ȣ5>ƾ֍39$93LrgFęiKX-pbDXI58/:/"Kv)t(@JI4ߣg\"vEo@ԃCBHҧ^SG+rc(ITԍ$fz.b"Sz>NoIZ;cW+)wlWXkc*͚X`j-P`b~$6ÐgGpکATd8|I );'+诡#{O1c'QW=}z;OLT{{ntK7}\z =;98M?EqNge7- 0XLeMqqF"Fjzc\)zjlaܬ[2[ai86\0XU.T"U*d3wZssܹ0M MM.Wx0'bw|>E+ đ:vҷn)W\Rd0ϳo[OiҷlKC>% a!ч'YE>5K=SLej$MIЇ:Pp3vD{TUj٬TNѲIT9lMk44;̼±P$z<ʦm"c1JDB:Aqc'1osZm : ?'\6s!W23r+4Xւ$,*pb!Bo-'oݹ3-}we/x(g䪾k(l7rxn47+j`'&l]8#p}Aӎoذ<xxێ o&2 ;̷{`ٶ'>ZU^{>&)irWy[FPާXH._(JQ9y%^d!b0N3fxQGppݹ 8PB7:O6O} VgF#Xq )f9Bay'U]nei͢[Ǯl۵*uղG.[4~ 84U!Sje2T;Ϩ6HQY4Yj%v=²Ag~  X~B1`c &10iJtxQ5Ȏ|zچ#pbo(R|`s% Fa*xPמ@mnEσF%^A6f9w'VNZN~KsSꚻ)qI'sa?ޒ[\֢}U\2tZ 1ٌSOof0*sKWǶ*w`dM5ۘ4V03# '`flV-J1JM,IO|?Qg<1Y Cfsz?On9zߑMjDG#pELEv|~ٹل}6J]9O,wo-7E%$᷶祆tEpvV|o7v)Z8=y?6Cq3q_>tQSDL"f>0Flyc/" {Vr@I8څϓ 4V_6tzϸ#CjS"n<{ d*F5O;ϸ_|QodܓO[^}EԫέTc!KT MRzP.b,Da0JINh Bh0fBl6[pǍe9#'Š6Yd XΑ$$rA0YmR(8,*MNV` X9?q69cF7:}["k\zW6sߞL9vx7[h(HeWѿpgg=p;c2_9UGlGy|$O4 rmf!CpCq~;N:u!5/R>ʠrt7{Uk GJr/oT~>Њ31CA__/ɀQ!E"" S ? 6tS*KG0i2̢F&O9dcnaȰ%2c2̣5VKuzcTXg@!4M0fFYЬaŘɰ+dX *":V!VV# x6̌9ǿ+ O00($I(aIBy *N ~? dr2 Oz^>U' 2 O.ar +yDAѱ/:q5DGdd2!1w!eC9F ɖaYrP(E~p`0-?~eZ]uj`]0#¼A3: y(VrS|0 Њ!st-2hC32=O/ՅVA zG51_Fi,HWn*/i;`lbFjN|t?'7@uS ? kMR9Ҋ?9Z(D*2ϡv}HOQ&P3r/7~.}+ EY8k7WT>Gb=TK-tGz),ݬS@9z# ߀lTA@ RMP" -/TR~S[vQ۔lix?^JPAُt?:kil<_n܃T@5LȨ.G/.ayq`zgdpϴg} mo$IgֹXivP=ut)% OP4Z^{2B@p_zvVs#J>C4D-jᗒ gZ1$,thE'ZJgUR ʥ$X>(Gtmt7Jrn|J'߀3G=$ k9DϘayo9"ԛQ-Ϸj7{d;p'dȹr\ړCB㿟pDC"ڗ+Ϲf콳bhFcQn;GXA9K+s@:f,ŇfѐϜh衘Ѝ#gHO~f2<~"rˌ`Q=eřԗn[T&Z\|f^3{EM};ϱfOX.ʋ_>Ffrn,0W!%3IU` NrdxO$4}% A?}  Ȫv]!580 M\|9Ц\ʍ,f1D#\/?)jO7A&v?.U@@T9/t ds7ܠ?fzbo2`Gaw JP//a74! ;"F4If'$Ǣ.KpI:qG`瘛[67}?v*M IVND$t[=^RBG@>0uq!$aײ.ɪ4);[@F#`O' B̦lwG l֎{K& n9R 'kRuyo!0༒UzŦu^Ilho* J-joi]Kꪺrmkh65bUmCMpUue5-UuU0N*D^$ SUydƲJhjnwUud Tl(ml*k)mZ꛼|9L[WUWxku9*Do+4ĦҚTi pH+ohoZ],Vה{ JKPe5UntY)ݺJ/Ez𧬹QV_M7H<3t]U-6V5T4D0N,DniR-9/5ek=[hk7:=[,9x04v`GϾt_ϼK/.N: /E{_]~YweuG/濰jK/._K?)H#=y韽osR_9^ y4Qt=ǹ=! ]Z%h,C|?#Lϕq[-K5_O| qތ~̥o@AYEgWBsxa,}ioem[ [EƠff|{( 9Q&+yO3#<̱esl\]L141-Ew~ÏCyPo#X~tNBtl#.CŴjN˥:/$#㋗KER;-#4@ ]??2$ S[Ȱ00a t<~ihCiYB\Z?iyiKZ2HKJ}#Xp`{xvqWk=E̱~jjΪtd/%Q7A*d֚*O穩ɽ:G/G9\!7r< EDHds|c8"*<#`79_O;>rqcsDgE'<~G#0wαiW TZh#d:Ӝrx<+)q#?]Lr,r9[Zn[&N9btE֩?x?x?x-??X\]t`oQTJQiT*RũRY"b΢HHQX`HH*na3[T7Qu *6UURWun |ÆQhl5Qs[ _SOo=7ގ⶗JL+*/Qtk6n56;̓y4mI{'`::|wxe~[>K ֍6<.oot`O'ItBJT?t蜔N9yt.T@g} %Sd[sFO;NgtӔ4W8@$*J %%ɖIrfHrJ,qH4:1J#+ǿ4Ъ+:N\I]g_Hi=u5Uas*) +ÏPH]pCN..%]`KOuv튔%ksxx> ?#r=YMᒵFyt./j$d eggpjL8U\,XhhIO'T endstream endobj 24 0 obj 12830 endobj 25 0 obj <> endobj 26 0 obj <> stream x]n0 /,ʒ)9O}C׶Qe[&BɊL:sHu]F`ԿHy)$Ig8{D"AN)CΈk>O9rEL B5q'Gx_Wgd?z_w9_\0שXq?b_UaGmbWx endstream endobj 27 0 obj <> endobj 28 0 obj <> stream x| XT׹3{fF:DQ" *-0(28ԓ桡yЦ'M$=uĠi=I&ͣIObZ&5i0ﺇ׿׿Z{6B-8+<@mD$`G-}nloص#? ^OZiG4m߉׎"vj疾k_7 My~kHnl'n\salݞ-D*l(Bc͌{7˰~  _^Ð!IL$296 MJVv] /Ç txWI&I;A<|FSA&:Ѓa/[{ `x|7:Ƕ{(" Bf<ur/Q8+7>#6GI"[+&r Znr/$gyr@^%oߒ?Y*NE[h'?7;=}g0SX(ʄAapB&ƣk~ZţO_Ӂ΢եu52Gt}(IJHJ$`38 { $$N< e"DI3h.CtAV fqH:&-uh*%Q|bHP1n+¨"aD "\E9_F4%ZH uBID9ܗ0KZ7f!|Ç0#uK!{؋tPFr* B:YP؏H-G^G>%#$=DGO0,)zC7RuhzXIO@0`8JGy1?,T3$yMf( !I/1/I3o`x3u<]EcDg}Ϙ<:̡`<%q7uJN,+ 1!=#cT##p@gR~x3DwDZ {C׻akCojTJ_Uhaт͙9+Õꜙ";fLONJLMZc,hSTd u\er05(;fӃIA*V&OTLET1E.ٲ)pʣd&op63^a17LHIY!IVntV rol8`$Bxgpƻ`0!WDg;`,4=X]<;;Hۜ, 8 eė}L| ୣКlk fFL[}ĭM&& nOf]rʦɣ)܌4p.MlĥoeZ"#}&*f=YԊI BD*`c3%XlT$`EN:2;%FhD&1qtԏ0AMFN(v.W3Yv4/h,o,dl~PfqʃyS{!09Ǹxfe33_HhHq1o6JW;{,2V>ki sQ))̪_U`6;W6m6$ lhxd*63<2>Չ?|O ̖Xw ̰Wip֬\$[54Ni 4𠘆vկmbKt}Uac0IH*DN v8ehb4=wn;\V戔K &βY\5hJ{ wQ+ӚƵS*1G V:Ahhlq£b`5l%+omF!:Bl ed ݰv76 Q@*51/^zY'kȬ5b8~!`'yo}pQYԅB n`m:E3};U ۀ#6r0T/V& 7|p+~(PN|LI|@A{ A7Y+^~J|9y)1)1ix#gp3E,eϤݸ1݋`'~5OJ!rVҟ^5wJ_^ՉO OOJbP:d< OSq? xڨ[v&iq*)zAN6V6 4ja%KZbI(*NkI+x*vN1Y4ڰA sYOBzw4:$,h o9a9i,t0jtB(=?LgTJ"(_NC`Bߺ5p)Sx_5TY5<6wrrX$Kq1%֯ߚ_TLk ^< 䑭[ׇ/"9Xg͏ҝ3%$ {kxO䄙9vKEL/l9W{鰭Aߋϊ%t?RU'H4ᯉ $YeȰX;kv'M( %%Vbq RLt2uO/,'a{w_Z?TK"-c_}oHMǗ{__{._^̴ai4-b)?F< ݔShD.4JK s_N;9s?3&,6[}΄/'_/_N8{M dNj0#Z!J%$NILKV{O$L%ٱd惼F5F7d .[$oY~8&Ja:e*RH(dTA,3t3JbT}\@c>jh>l3:(-Q"HfBögV+%-$/^?f_= 3,gm=sg>@/g/%s,cيFd_4'0-+Df6z2><% t^^0o>KLO!lpwC8N `7;4Sg)ə]zv;zLty:y"y,Y9Q1:yZ0|\dUa?06DSLW!WUI‚ c$|7:0o΍Un[nVƹ;yKurG5kyo>h~{VG `̱1'd6DmQ1x$flA> C把tlOo8gPv2`1Ȇ:CAnP,2n{[f~Kahy> XdX~)zv ٚ25IlLјH*Ph*rr:]lDL$5`π \eIރg$ @햄ĴUc:L1?/c-OƿLߌ{%lrR)kQ'XbifkO  CgTي'+E6dsN5BʜiO0[[[Zb .[~`U%ELŧ!{~~®yvj7Zɧ5-C䪦,QMj4 gb][h?EN[#,9rN^S6̚$j饴&ԥ9cR*#N ϔ'r9giKҔput㴺5-u9Y7gwڞ=g=w4X_/唙Դt-DaoLd!=(ɨbff"7$6^-nݣ.bۣ+\s).GaG.Z8| U!O\Tf<02l5?Y ˌY[ѴTSXxli=''5=>"Vl윗dvKVƧzE2ĥulX4kZgŞ/@/$}<-WY6#a K~ΧdVvSuq]wwY8UHd\[oht3 '"^|WWßm&se5dL9J?PXIhdJ:+30ec2-aƼ:55 0eY.QZ ;Mf^q89N9SNIfv,IL`qЫޡ׼Cy^{`0F]Vt s53ט\c:s82r=PLEl+;Z0#FoAx˨j+D#cs\l--|Zם#܁;/ ;cMͷ%1M_fֽ}O\m7#%?[ 5+}zt/sQ@Z<_0:H={a:"<:l$.!Cφ>g.1(]{_SMDA>z<(r󂮔`` ث7>8, 5Xf ց>zHG5XvzJ 'Tik4-4!b5.6V)D5XX[:]zvhsb`c`#c&셢(Z3 ,BfR:u؟T"'mmIC,%cJzN3 F:qFsVΌv FϸV'5?lpj0q5mG0s5e p8Ss"p%,fyr؂3s{4Xop8ɘ{TQܗ9l`2l+`'q! F~nޫ}$ F>qx:N Fa|GEHSs^`s9g2d Fyo` qϿ\(L._+en\s[a1(D:r<>tc{ʱ@=98R ]6>-/^ކviO6`s z7^gRߎtHm!܃cuq`.Mp9Ѓ2u6ج.V'~w\&tp]P 8z=\SeT5IeJ?qyYiGv9Fv||^7">1dnwY(+^al`EӋZ(L249JBY8i|92d<?./0s5H8ׅ!3r8z]\wL:8|A٘|emg1 ́"Xy{0G^zUoh,smzXxԄY.mƓzpչmp=\-ج p\} 5!{=yNo6lgkQ2n:JZl멍祋l@3VMzٜ.e )UVN3a _Lk$`±i;?jc%%U}3ūԼT*2|ak0L\G[p4-1ܧٖ,KTp]FB7 ğGrV`Fj4[.؃fi;-z5濳]UNƲ0 y7o>NaHOxN aiYnV3; -=H3ş^_xOx'2uV/6hr_|\¢q{vsj;oVn>Z Ze=>vnǑت q!F6Z*[8F=W`Jyjbsp#Yi/eX5<6{VaKxT[gjmOT9m~y\©\UÜ-V=үFKv5gWrx8\G2Y--ֻ :krUnWp*q\9`+hxL?f# J87+Ǻ9gh#!jqfkϭI&R-UΥaZe:@x9%㺫wIԦn R+\sZhfz.DžX\qޫrNuI1N%ebD_YzaZ/:a|5|)9ys Nwȥ]]rocg_\ysdʻ!k{ݍl2vk=l͕YU-{z:*Owm3.wvUlN_5N? 6t<]"qQhb7 xvo@crT7|m^"땽[6x۽r+{{& _u|2W\AFy҈g}np7HlP#٨/in6KR}π{\сRʳz_fu<\WbȽ==]>R/Gn[<~W r[fVn{>mC/֞^Crsu߇h@`+dn/[f>sٜ(@'J6\4̽kᛥ$tp9nUa x{ޘ'`i-*}-:{ڧjϣ ]RxAo21NgF1 k HCsL&".?wMO/2:zzs|}=v'ؘZ٢,4/w^#sXa,c/25oLL5m.b9rJV0qzyDܨ/fڳF8zO['ef:F]Eq߀͔Y)g_\ Ɛ׏ֿ-Q 5(NVnҋ8G^.':Y$w܍q򡟪k3Z51 <^~,ςuj^^HZEYUTF4gbӿ220t#3^Nݏv ?Fo[gw YτhCjwJz& `3-7V6)w r]} w*m+[^SXUQFrm\Y^Q- rm\nYW/[UQb\V&VDkeF-wחWazYucs\YݸѬDr]i}cuerݪ7._dWTU+spUݫ!7T.[Ɨ*]sk뫗T5U*YFJ˖եPe˳K|V-Rhwkܼ +şLF)ǧnpg˥ L!Hgr"8o[T-O/eHM#/fF}"o, ۰= 1Y]G3qim$g^lǟu.>n'1,~ 5ieϾ;+o?+o=PA j+oE[ 7S$sm╷W&{8 _1.Ή,'m㧰>2.;_M0ہBX.6GH]{{.RXaʽ~#3~Njqi|d漘-'Ӹ8FƿO7ëY:3י Ln{2/?#NK0EX\$"^%ֈE أؗ?nԾ} .* =_l9l%y~yʼK!'}/>zV!1[/L;i\kiw '/U9,.x.rFA}|YhbFy +"UF˴|F^>;ËZmZ9VZGͥӄp=PZ,w` aSahPUHyyGj˛XޛǙ)(P9jr4\8 K\6]ǧcsKS8׹G&萯K+{aȬlKG"-u W*d NBU|ZՈђo=:J3@Q1).Ui}'߀K+XNb9E=XHA,*Iek>layaYym8PrRRGG$__hVfY3PAe2 5^-Xc9%E|c`ƻ )R,a9N8^E¢ -VU84#|K-L(ZZ~n8eWa004؟#oI,l\=ء۴Usz8s\^U|VyjVj5K2*E*NMbʪV&RHVdj̸Tf\*3.ʌKeƥ2Rq̸Tf\*3.ʌKeƥ2Rq̸Tf\*3.VR h^=VPH;emrzmXZ`’pgaxDv:ZJUr=;Bшp`>Znut, ";Jqǜ!٧VjZ%)+eK75Xa)r,X{N2DBH(@|^Iz/֫.zVXgX ga(ezv}Qj$ke`WC&UÙpZ5 gcP)θQIC$p:2a'Q ;:>άu!s@:x)cURw,#>T"G};@=mv3r8u[>Gݝ2J-;̯8Z]>ht%iÎz\akAG .^-$3Q3>*cP scN)3CB9V&c(q**ih4+ eICP44C. Vm2D A4PlJ6[u*"-ORcZP\U3*ꃅY5ACMA9QsD\9HZ5e =J M)C@HM%iussyaq@z!n[ĺ8"V5q'Y5u{<4"9Klk}z𮚆|7oi5v8DYtHvw=G*kw7;A*/29>A^ 88  ;d8|I8H "Vj0,ðY˅(9.B H2G)@IPZQZ8ʭ(*7"E-sHM]5S8Kb& 29, F:q/gYIz0|=!9QA=IXE)@ۤ .]ʆP4ڐE)ICڐcp݋ۗ;X_WصycW&P\$JkE30T4jWV_.O > endobj 31 0 obj <> stream x]N <ڮ4M&='V´X 2jv:<{uF騴t LJR -fn ~[<̝M]zwݝ')=ǥuZ3hO34TykV~˟}@Xia$, p\O@,khݶ -e'wAiUUH"" E\&M\%~D>& .qԟ-ip\'*VB1;n45]|> endstream endobj 32 0 obj <> endobj 33 0 obj <> stream x| X\9ـa sa` !$d0 ID&C%֕Xmԥ/Em7OuyLV|s}~}ϗ{sλyϽ@pdK>"GO D)!4oWP H34bpݰ}h[ IG1_xe0YX=msW0y;_n,K}p1NBP{0=;nxc_4kR!/7sm%$񯘣O@- G4!% y=|wl0yRL3͠+HȇȖNr;M"y$l!MTN1yCn&GWDo$JI /y[|#w=Ē,[/E) !N|'1)"K4/ 7g6e$ ő_E^#v& Bb:+m$9rft&qBXyV2Lvq01Mm5'#_I$B'yȆȫB2C~{wVPzHs\mkTGw4N]/mdGZ ||7l$<ͦ22˄ėH톶c !"OgQ78yLz7~EqH>|$'_ /R W6z1;q!$+|(饯HI4sEZ"%B6K^dCV^ KIV8.='C~I{h8CA5: uqF*+=D@J/z_t/&v+IM~ADOh@.? ҵKFKOvDQDEuQ<2#߯"uc~@ҾHg'ZA$'okFFա9瓾.!R).#ɹ1o KbFNA-Įn#H?2MPW"{"~ iPԐ{#y><;,y|ZpBKs@qh^Ю$ l}g!#6TA5н n(-DS-+{boD2A|狀 ":~T"'OAsZvU@ׇ ID$kQYğyDh.&zCI6YH\Kd⌉`~W&9 Id\;txRkq\#"?!BL.]4"]%}pNukTZYhya=?ϖ#[egeZ2i)Ixc\lAj$QekCdmX6&<&zB2&/ts4LǤ&Ԕ.z&Omwj-Npx3p8'+}Aj58iؘz[7L2Լr@0M DoR!ʰ50 Bbj;Ր.- >[oB s1!m}H>f /O̎_?m"=q~Bd$CnC| C0Ofj8Jl8>~=kjZ!g;dHrwU)3KU}^\, :=e^UZkZXm dtpio=upN i .e,0qCB[na++=6di!5K0%ׅhg,{[ۺdx%#e} LAL")?7]q!):GIߴ̙Av.ȁ;;iIYqD%镹} vNJhwv-Nܥ얋_܁HꦅZG2Hs"Isd赚9Ay wr\m.庴N Wѐo(+4.OY63\ufsټ\(5B]; ?V&Átdv*11FtÜ^*IU%HMJܤ1=YY*hVj&謺 7\?yYGz1޹D'?AjO_ܽb3{ETl2I4ٜf\m)mejZ^xwsKi5ꯜ]'v=,d^xmz#Kf9/scVSoL%Vg4f\`n~s--3?03N5i3 SOh{W"Ę(.s⒑]8Ok̆7 UdSme=[.+ ն8ks&\-U9B Ig)a{`H]®_n(4qk8G|ZUV cn\sf~hXsaA@vf)VFy3Ā\S0}apAc5&0:{1P9'tXj:)F٩Ī!'Jp;ղϾwֈlaFqP[h!=I?:O*4lG-kD pl|0T[!)Caܦ[wwj7mo {S-!Oj?N3N{^LdykfaLt)ku@C2,]J"/E{'Ng@%v'W%MMAm{L~sSn]Ƚj~ޟ瞻2rM{;n"Dr4rБK6'oiVL M-S;;QoR#P{qyU %E!-7@DH?.Ncbqذa1a$d"D%09xN؁ -O"hl'kgwNNb?veB{3MbS[²Gkڮ YY DK:fZhݙtgt))B3ƙa\rx[I6G^}{nkRJ6ƞglMh̩ثV]e[h 9Ƃ\./Q2=]zeݩ=͸h>oJ4G*͑ehJ}N[B#=*+;VZ,DM+iH0*w1w (48Fɤzx' XTKӨ=wuNcN'ufA 8rD6 4&jOu_bymu̜!LUeyl||ʚ3,|pm̽xkrɍ3JDFfYIeZ)C>ͯb#ےUEhu6*}$ 5aC%LDI'%봕f`jv2;#9.`C^2o8 fX8vս݇(Cʢ[9wݍvaMM(~xIڸ ǭޙ]K1=*Cr>8t8qӱޜ&b]A-I};SRWxs&^寐;{-/nRU.$6ozPgM-K8. $*x,98Gt|mUC+45Fc|<c^m1$ZdcaA2`7,f5+7%{##Md6Vwk3 ( 9jMm)Y\yos|8CD @ܛp&{;uwf0[&֥Ve'6ĝڐqoMb-$D"1F;%IH qbgdw,*5Orfħ-'YpGnH ]}Gs _A3N%7\{P= o~Ow?yKE 5gOԣYV:8[M* }Jp<˴TX"YG9l|^QaONf>,30|XOY Crb>I%"us8Y~gpTp8ŴFLlUė=Ɣ'039bZBs8\SErERg Kx"0/ܮo0dpfܖ80I%NP'$^ 3fW} +N2L1A2G^^`µc݈Q/fd7fZ9aȍ{{ |dȼy^ 2Gդpe@G.Qqhlu-v }>2ø+l=F_TRưe >3~9Sw|nv=r /*Eqe>?|`A? 3LfQ0~zV[#cɤ>.?o3nvR ,~ w.ee?%VF[ؗ#n>n} _z`6.i. A,?ƠKg\ s7E{m=%Wfs~ Y2\~PI 0Z+}*:pn`zDʎ %=I4}$i5K[2/t ~L>ۭZgWh5# =Tcιhy[Ҭ.p_̓OVwB!?p^WʸKx}z0<ѵrE&ݻP-F=_9Q:Ǧ(9{>/Ɯhx}Őz.dgѬsEm~.:x+YUem<ƽiggn%UOf^Sbz-ܕ.욅(^\ػ(CXR"4 n 'u/ūTc\\Kdh^^KWO9܏;8FOvZ\SRZĪWgS":2o(a]EɻDw3 zm$.J1e;iomV0ۀ`tzk#%|cVKXs;NzDrr;3g}4;4Q.%gKt}Oy}ꘗi˾%WV;f?'#'Ρ!ݷ}08*{G#eѸ;-Ýfg,(>`u%rg(0(o .yayX(9u!_gHV%lϋn 3dž#r)oyGQW{!eV@.F˜#>P?u|FfSrf_߈[0;2ʸTUTRNީ`@W{wxF.O[^n o[`\*{}ro?-<_#wxCFkTk.C>b?,1yg<ٴ}#^O["FI#>ŋ3*#;| ᮏ:8i$ 0 %W'0 ,@[h`AXHgY?K[%/?Go <>H zw ߿{x_=*#Ccd8ޡRb QY@sRd?4)DBW|GP8 ֕{v.>Od{9"u,GxyZ23o3mǟKasww[{g\6Q`7\<_"`#{=#a31|\b3xx?oS3:aہx g %jyi9ר˶3ɻ}A6(JtcG|SE65T_HYX"X AawmQ6f ,,^sp`VtFU ʦQ=͕=6m062 eA5r/MyNljmafԷtcX+;I/hpVgE+g…Z^ׂ. .&`ċp?~Q^Y,~-t%Hƨii4^$Z>?I;OzYB" gdm1R)mu(>J Ą6&XFpZqLd|}GGӏG _^W>Wu)VdhIPV=B"hxH?h(">@(|ٯȸF{O7 qL78U P%jBۇvE4 z-"_8(ޏ /6YMd/ M(Y)]S ɕI $$n&hp 橘JCPh TrcpB"bJLm0!_= u؏{c*Tj^+*:4RAL6W䌅 *aqQD#BuJοv6lJ<*^%H lM8* 1ܒ)3N섙p:Rxy33QtY$ k$}a[ůMٳψpSߠֆ)c| njH ?0e_SIvT ^@{yҏGqDjJ#xV○@;Uj@^a匘!1gJY˔!iNJhSqGQ(x:9XM)Jd0hVB4b-. ZCN+, ?1' / df?Q?>2+S6swf oEA@4BxE!_Ƹ :-LOiXpq XUIi|wHX}$ ACOjGO8R\xJxA?g*:kY0QFm#·GY?*< $gpiz$fLp^w:++J+|T&j" 4ẰTrM.uC=8Dp5ͯPpiE2h.'}Kh_3A1ݨ&P@ES@ENE(z@NP􀢇S0}{@)@6Pq6P m mhP8@S8@NNQ PTSTEA!B)dPȠA!s 2(dNa &P8 &P@a&14FqAq9qPqPAqDžݓ1 9c 9IH'9c 96EۇhgA; YrY^ch6(Bq(B")B")&@1 PLp PLbb'ד_p9KeeLKA\KI5w;AbӰ:Њv IzMǡ^CRUwPwXNsXw\'$h[j5ǵu/CBVή·Jr$+/g"zcus+L(Nq ֗ѪPnx]5l_mGnhh]VVVfsEr,LIKcR1#S)(3 tVtO zN}""aX~L [Aw(lB.(CwaHH;վv=l v]AX]NUNzI/>]b)ZJ6 *_' <J:#ͽr49[HcfYZS{~ NRz<>lɩdWzGb)JTOONTk1䃘>Ȏp" F0膳ԁY\ţΦQ;vT:QGU&"},J61N0QFOpbD_ endstream endobj 34 0 obj 12016 endobj 35 0 obj <> endobj 36 0 obj <> stream x]Mn e4e)Jkɋna"Հ0Ye m.@hv:{V訍ث@!EIV[;3ں&-W9+;a/^fK`i1yYk۩aF˟}u@Tyi,NHL@jZmCg0OᣴRΫ]L|(w\!|"3?"g}y笩b pE|ßT^CT gȂ endstream endobj 37 0 obj <> endobj 38 0 obj <> endobj 39 0 obj << /Font 38 0 R /XObject<> /ProcSet[/PDF/Text/ImageC/ImageI/ImageB] >> endobj 1 0 obj <> endobj 40 0 obj <> endobj 41 0 obj < /Dest[1 0 R/XYZ 0 841.918 0]/Parent 40 0 R>> endobj 12 0 obj <> endobj 42 0 obj <> endobj 43 0 obj < /Producer /CreationDate(D:20241025163314+03'00')>> endobj xref 0 44 0000000000 65535 f 0000082561 00000 n 0000000019 00000 n 0000003449 00000 n 0000008753 00000 n 0000003470 00000 n 0000007699 00000 n 0000007720 00000 n 0000008733 00000 n 0000019197 00000 n 0000019219 00000 n 0000024575 00000 n 0000082874 00000 n 0000024597 00000 n 0000030973 00000 n 0000030995 00000 n 0000031194 00000 n 0000031596 00000 n 0000031852 00000 n 0000041416 00000 n 0000041438 00000 n 0000041640 00000 n 0000042190 00000 n 0000042578 00000 n 0000055495 00000 n 0000055518 00000 n 0000055717 00000 n 0000056123 00000 n 0000056383 00000 n 0000068739 00000 n 0000068762 00000 n 0000068967 00000 n 0000069310 00000 n 0000069518 00000 n 0000081621 00000 n 0000081644 00000 n 0000081840 00000 n 0000082180 00000 n 0000082378 00000 n 0000082451 00000 n 0000082693 00000 n 0000082749 00000 n 0000082949 00000 n 0000083086 00000 n trailer < <4179D5EEBEAF61A649A6E9A50844DB0D> ] /DocChecksum /D75A629A031764F8719C249BF170D31E >> startxref 83257 %%EOF hardinfo2-hardinfo2-1331e88/tools/LICENSES/github_com_lpereira_hardinfo_issues_530.pdf000066400000000000000000012553521474767047500304570ustar00rootroot00000000000000%PDF-1.4 % 1 0 obj <> endobj 3 0 obj <> endobj 6 0 obj <> endobj 8 0 obj <> endobj 9 0 obj <> endobj 10 0 obj <> endobj 11 0 obj <> stream xk.h;2nKc890]H4A®roR^ԋ .ctJQl,ZHƱ| Gh%8D| M@gp!!3xd:GSiGб8OHHԌAT6W՗זl**(ߴlú e֕o\_U`cŦ6.XWR@VV`kI utD5I( $ ,E&0JvĮ!K]rӡhzAcǼh6Xg haJJjT)1˥4B!bD`qM͸B+F*@#8d LS%J&+\ZVzj  Z4Q32!:WP@ʯ"fVu'Ҡ^#҃1&StʤU7Ci>m799!i:uvMtN` C)6˩.]K7wﺵ;{tgtnA~.m۬ڍ Cuf\Н;2~֘?g<זvSsmIٍQƯUxa_+V$jL$e,F12VH HX%X$ e`,E hT!S8<f)3qOB 8$#\C#lKC͛7*^uk7|Qዲ_Tܸb5 7T-.h(RPZ+'6Vѵtd=RIšC|^1VآY1/?snY>e4lNZTTJbP*V2Ge4΢ӨD ZMئfLc#ҌG"IXOR<*Gt%I Y-3$nڭc=zeȪ [noP`!YA/ 4V$ HZ5I6lVm$miYv's.]ޱb'Sε?jWW{_x3ofwn7 l Iʶȹ`eL|E01-lΟ/pߗntձtS?=O~~<ϫZ8͟ m{g>oGvM^&8 ꁰ I' ;C7jxpˑ:s-\pGwO?>ló}x_ϯ?<_bo/?Xʯ___=_^bgS<tMy;z©䗁S}#[~]KI+z\ IjMJHl&@hi"#[I2 I`( x, "# Ahm6Z ՘<`L(\T[\Pu%_|V~MrúʍkVSjڲUo^WUhm]M 6"k*:&oZ%4IP X EBP  eǓ^_&a=px&ⷚ-(RbJ|&MaidLŢx4قC&b+&BFayT&DQ2G.BJӫzܪQ` )\Z £W5J(kԧQ@_ W`A+sxWx1Ͽp$|y㛃on{ _4~uoOf?W߮ν~<3VfV秖,ݻ|nܣ枮>]{2ѽ<~ҷ_-r忿Yß߬ϯy?㱟o}wwJ|Xxdrjj_a`IH/*9Z!Q#(Y$% BE(flS-Ԁoi4SQH `h4Z)HAjm%"ȺRdm%xseᦪ UlZ[`}/j 7~ѸySKiQCц-%+ klh(hڲUSFldzU@FIx𨐐iR Xd[2:"x,%s9w;l!ͫ׆z^mRKDD$stFfRtFR0("I !VEX KfB:[`J8,bF!5*RnB pXNXѪ\ܠȽ0i:e l|#m}vywS'߻=㙏}ѽ_,=[[78wC7FG\:4zoMNLLOLLZ;9wݕ{3yVZ|uͳw~7~x׫?^^-|g?s?"O;&veF)E&FD4QKFb+Pu?t YWMhiĖ& HCpMP5գjPu5抲-M%E 6Un\Wu)Z_ᳪMk6ol.+-\Z*n(m)+DהjJZ+ cjKѵ͕E-jrK5 Ƶ( #a K̬ gx=P '}:N[j !o,`P-HL)cPT'cQ4,>G D4,"KѰ&deμ{Ͽ|8tivea;&Gǯ ]z}+/]pgN:scO?tо'>i;{7\>t#s SSSg}xoу{O>x÷ϖ={WK߿\_o_WO w>ۯUjiN dc F:TkBU`u՘:\cHli7mUWon77aj1؆rDuysŖ₆†M*֯/XimMK6k-/n-ی-GW ѵ--r\}9YU+˓VUSo֐[jظGAɘ)f\zW<Wg4ҝuH>7O=h~uqni;c÷Gn^~3:SNsخ}G}ٿ@ޭ;;{wwtHwlOv숵o"m{8ЩS^>wmݱ{㳷oݟ0{wnݹwgL/M//?^|7O|x/zs?oK0BxjP{>밑B[Y&Rk@חVV 0Uj\c]Won4ԣjkUJtmlsŦ5E j 6mP[Q[S(ߌނ-#5V *|cTEm+5rk= PAC6R Td1 BNg̞d/D㱞D3F=hw2u;52+02R=ׂ@זJQ5-K [KеJtM-S_56 ʛJʷԗ7To(-*\WqMsYQ"dEqӖdfDeIC-KH-5 JK4ZX)@i'ԑ[iz*\KG5-lB+3":A-d$cPw4ړHt'H:WD;ꋇ"kz9-aǬIը=(% bd'a8P"z.Xjk IzT'Mƺ㑁lj ؑ';Rx'krnkfLXq!U`V|Jlr!!CL' dL'x,tAq(ye%eLU R.[!I,IDL N*0%f@5{k{Mχw;s͏?~ޟ0737y{jC7]>{ԅ'qve⑾t7$L?؞M&3l/M"!gm[ i5ltV8RZ1ub,L*aydJa\*EsD>"f2|"  >A @+LP$0(>/~hw[z继s}|ʽŻSSS#7_vs'>wo& K"50b,B8 S¤K 1-ԂǢr461y\:2,6 394P| GlHI%+j1W")J$ڷ 8}sg_8{ǎ޸xgN+->/65Tnr_j6lXlW]Li6Wqэ d-]4|"JB X9bdTOd9 r(jINéD5dLI12&Q΢(t9. p5"@65؞zx7ND^o&{d2#K{bmawk͸i5n5uP: Z\U\:$`)xL1.f24&]9l@ PiXK"(2$"F*0+F'i0^?N}x͓+/ޙ~…:x|/];2hΑ|C(y>rU'*t.bBK㈄yQHR>+ +䱹|.)!ˡ941W$2_JJH)jD %ZJR;116>>vshڥkǏ[ft)2R&R @ :)ae+RIrH*JBT&BX(2X&RrF(Ћ*.(J ! A0d:Bt43xș/^>w9˽}{{ܱc[#;Os'y430|yͣ{}⏯W~{뛅^Lkoϻ:81&l(gşG?-ʯBdu RMEPl\ G@()/a`D IMy,XTsZW+D\q0fbhDL5Xj>S# 2V,Igx&ޓ ڶXx KEg;3خlzW.՟tG}Bޮ'5F_rJl bQ&(\F*V 9K52y RW *Y) i]ͩԋ]޻'=y20?7;=;15>2:tơ 8}t/_dM!ȓr=)\\,T!#B.RRN:=V:* jP,pR" rH&rP0ZeZ |\Q(nPu$Y 16! l Q*dVqrSv;g#;ue:9sC.85~ꃻcfo=[z8ѽoZ۫߬vWzzKx}R{2EJGY?6}^q_6!*-եĖZ j."GD! 'd`!!5NKtbY&1J1,j,gṈ(EzJV,0(}6ݓK'ҽxo*37;`[?䛑h#yl 90GMA4rZf$"LRF"BRi6#4&@aTf :ңiȣ=N|\o->]<79u{tlKWΞH|ֽXh<lN( _ qK!)|RV5a3L:Qc5* - *Z*U2P%k eRX,@AA2? J!Hrfyph;v~[w8L 3ݰj:ӹ;::uwޑۚNv粝==g94u҃3&ݿܻNj|OoW~}˫<c켷GG?՗m*T\mPPZQ@r H) \ b P2*D:LJQ!T*Q&6EfĬBZbP rQ!JyfĤdbJn Y!іfR;;ruؚoKw%smt:9ؖH'w}*bXWud< ƣ]:jEǕ2LT&ȪRZ Ba+CTGz j^6+wųmGv'w߮~|oenfnkn=tgֽphu>)`F*|1$jD2P %zڪ lFl:H5i&5S,l!D\Q5JTUrԫJTrXhV):uXDu^72fi;y0dm[愲N] f[EܶL[&KFc~/Lۡsw uL|xgle>ׯ>_>?_sotJ/?Gb76˱4lYKˏOߗ8N[aMa>dڀQ:GAoD,nx__߽'LNMܾxƱӗرDWpfJء TA V%hQrV l3SW.{1o0\췘6K猺m5궄&A6\zZS : U11EN jMx,l)F|E+TC`]i{qѬxyf[XLj_VŞе]]9}[7bϺ Q6bhh"]r#WO_Z}m~ݱ;&Ϗ<˥z,?C%FwbZR/ pq FBNji9`S|&$d,% *^"h!Ri:`2{tk!:5'-k&[vk~֣`SnƮ\5n%zst/˵dݩԎm}\_6;D&ӟt%pG8-kBwX^wMI5b5O4>o5zMVceޞq]t|L^07q{lbhS>{ɾ:FNo;lu.@5Nޣ8!ȪY 6}-I!=햄qZkn XMQ-:I2zGE-Cns.7be??.jOK?O>:|0bQwaG+7A1W~'^7{pdj5N8yۃכckiM1-vmvXn{mY9;j?224w7)52'‰L"$bD7=E=ٶd3Jg{ҹd;sd#s`g4-m ~_]q+r$}qg:mq#ݧGƏ?w&Yj[#7/_>#jmf[Rkj2}6{b L>o5:556θ ٻwk?k ۳>sک ~sʥלqR.}mzM)>u})GOֵ;;Φ )NLC+R+D4ټiMk l*-+*-++++.)n-jmkjD7k(uHFJQ6U"{2Lgy6הؙrѶt+V*"1 @3$2o?y/~~~ܭkK+wWnLx2;liwO}+]xoc['*F.(+y 5bV3dTYԪ|l.d׀.g1,FQiZحZ!Gqka^!+rj*7Ye.ƪh$"`""X&MDztg'ޕu%}ٶL'mG#H4 uDP0x3`;I'rd 4/wA@n0<{z#~2fS7^~ţ9|~߾}{O:s[DjM~%rD|HN{Pl:Cn<:;>poTpwOα- z'bii{+m {m1G_ʻ=ӓNl;d(KhR A %% EKʋ7Um.*)kAPںʪƦƆV, E 1H$Ah*DǐIX*D@Rh q!̖jJ6!_bp$2@HlOgIY"@j̞hs׾]Ξ}KcWOXssyrxirhe>_}tr闷+~o^ijǃ~CӋz)_+ JA)jJVHmfʮصAgAu @;kGVJe+,JI&3zD/9]1'}hOSQ,Lƃx &SDG=i%ҙ\8֕Hwx{4&=`=)/zq'e|p-k yn5}ľw{8j;7.]:uW{ϩ.O[gtF xc`:KQ3 N5Ƿ/ﻶm/SweSΞ'b폚m=i灎\xw[h_Ghg{4Ē@H EL LXTcS}EUsM]cm}cM=ߌ@77675#[x4`dKksS JP@cL LJ~S|*Eb,!eLϗq8:Ue,-2E,J(qyRG*+~SO ]roWW<Y~4s{u~⫕w?>Ww><2\TbVJr `V ЬVY T[`AP1pn]6E4)&ҬTrLHb^*ՉWf z<1'qXcP2%bx&Ip=툥#l0`=#)0_6D=I-[#}mɫ{:^tػő'/]v}ؙ O;z<ݵ+9\I-r'T2}ޔVkbAQA3bS'O\}Ž'ܝ Qmoֱ;M#r&G#X H b1\Z"Iz 7|k}M6;v'N옆G0bf3v0x3fff1ŻU}NSjJ?Ώ<xb6]gKL%B*^&6(d&\b+x,tF*vXxo۶ٿWO9gNuݫg޼K_߹WhOg6ã=K[ned-W-෋fXg2R2R(Ԉ%ZT'ZaQ*2YXdU($f2iPr5O竅"DR^&7*dzH/RTjJ\F Wd1`$TznVdp^t+`5y\V 9mﴡ,~g0!Or vO;+y{ qz2T;v;ɥC7}j҅m}`-#GtmT'#7pCT4` Ėuq8!ekʹڙS;`:0ZbxgX\\" }ТtnيEV/hOVƴhtޡQA6gNkC&&ntg:sOyȝ '̜y?NxwW<8ңsZ| |Ǖqj@+%zZWjyh@sJ.WdX /g2$Bܶ6.ҹj[{Ws ^)`{MM^mG5s!ue;~ pZGmy-z[3ۺѧWOݽtٲ؆M;Ƕ_eԎh&ݍiX:` nuDjumm^׶GǑ`嵍S+K3[Om1Lt&}åH5]H'ܤ>>n}Ȫ'^ufɲ[W~A[FLNĒ0<"FΡ9 ^Ԉ| -JJd*Q'DZXrsfhoWȌ*]kT+Uۨq5m4 BakӬ=6.[4>q=Eg1]vNi >*C{i XkԁfmnuS'wtԎ-cۦ&w mOsH>Jf$6OF<{3Qkcb hdg;pms֎Ϋ:l90;[Ġ|,'z0A4嗋/H58:Uի0uk+W6ԭZĬ F ᚕbwF#piD6Q ;>G@f.k3"W]F=@Mz] {]^ɩׂN46Ah׹˞>o5<.{+p0f[̤ cǁ@ #~`tnb.o5 ݠ X͐#O$EIrvO,KB 8,Y![` t^wv.ar'vЍӇo;cw/ssտ>g7ͭ^ool~r44e "QƔ0:C-c2Ũҩ*ID8݆c1-mWjb%am=K`L|+6F[r@nJ"M,U.ʣR{d \-*KکPURZ4:R}=6V{dã\9N?{Бڽkvo=6wC$bA89)%XHS):ĠT"Fa҈T"UƲ aubhjO6I]M ķ 1D#6f:kZX5688FMؓ Ӑ/x~?09-\6볱h`v>w dBpsv;o6V3`16r2/귥_=K@vS Cx(wgP:fP,]!+5p'@~=@x`#uL>_ꦑ gr3n=z/}97~^'(?Zl/7B*P ј"*SHgr%y$BQHLZ[ՑkVaVlO/m'T)4D&BiB#[b,#2$!DrLBMJvҩ8*\ck*I1{-txv}ă{_>~٫Ο;sؽcwl78\Je BG*UDv &"#"@W(8ssO;om6mezrjeT+ @N숲~rdF!hDfPil>OpdGbSV ‘" KD>"hH<*]Ԅ6kHֵ}\bFJP˄ʉpW.SjT%˄|JBR)%b݅|&Nh(!8@%J4`9p&,,Y #nKoOB,܉aΐ۝hBLJ#`Q C)ğ \(D=18 I}afT~Y=D[6n?{3oE/{ޙ|tϏϳƏ__х<Ǡ[*YxH擩L\H%cDi0m lݺֵk1kaVi]qg?mly']pݢk}jB]wžD_+:**[AcIIdfBIdɣQ\E*U*[J. dHI*MFbSJi26X b1YI!X 2r\xh0ʉxE!7ǼӊXU 8r;pބްU z#~{l`۳` f`X7 i8@x cpP!%@>I#p..Cx  E8ʱ@v90X.Uvv:{O߿r_߿׿yt㯏o㳙?9<4GO>^Gk/^xɚ%W/s?U, ex@h2EqT.DZPrѤEW t.gt73FH| a u2 tzk{ҡ?9}ɃN`ޝn,J`mGj\GlZڈ4&B㵑dS|S@rt+͓19R9B 扴dH"`(T.2Od`L:3õl%]I p.3l)F\<s$ Ch8R2XPp!W&HyЕ\yȝC}1yI# 9S# b;6Aw G|WG Ϡ*B ЗCIȟAGTN P.L\$ciΆCRK;Láߌ@4 V)޲sOܽtΥw/z0sɝ+w7[}gwWw}}sG,[t<%ZpfLkC3:ì[ŪU/_>Z?\`.Z/ޟw{kwZIExCb)RSJi+"R%mT)*ǒeDW)VPRX*4F+~x/}GNڿ][wn>41R.w ]'RfR&(×2XBG hL>+frtœ%3!%bD"i;I L,]H  CHe4. YGhm'zkjw6YHR*憻ʕta0 ۧXxw>֒4䮥ÅHWZě[*o FEWBğyğҐ#@ 8 qi,FBIȏB.T,%#xgf@ _2eH)%y"Hc  !?u}$%8ǐZmΝWϞ~t+g^;ܹ{~_|v|;=horp)Vb3W߂oik_auXɧkOV}u`/X`ҷ~2o7?gۄbI",I! d $MDQE\ǐX*[I,IBJZۄ8H*2MAItT͂}ck?x;Μ9|Omz;=]##cҐp!&Ƨ1OX(F˙#p>,DBb2 ?`A1YDx  $P 30"@ AA-ٻЗNߟ>Օ_]='7/]տ<׿__<7vJ.o[[Z׮\Ub埭K?ZO>\lႏ?т,}%sf/ڢ7_[4&<K5ŒMxA#ABb&m"[ɢVGH"AG;"A@d1HxNngN:u]{׏m*TFzF֯/TG d &JA"1Y|:O!st>-P84JڨdDI *E.W\XB%+1T]6i&bw:0]ƻ\.r2_+twtU]屾jK,<\M&6G'{CU/P ΰ@W) 2쭆/ y:pW*TB)@)!@F+z (RIDS &`>$φB(dWSr"VX9+DÕT*FrpH"j*V%OuѻO}9}yW[sc>?s_?FS؈on\[װjMիQZb.E`y|`;js ߜxΛ gz(ls1DfJe$Q#BMDaK(j! QD xH \:C3'<{==Αўɱɉ 1;!2 tQxtTN_b B%b0t:BR\*M$&äsl!ɧ3l@d1BRWd Y27E2F`dٰsl+$:j*QME{JV,:*=Lg.[KVl͗ ]tgGw}"l,tWlC@gݓ3\'#ؕUp% 쏃 6tj,\8֕A C(\JQZp\NDKx%xR-~+DW>W~\8 #Lr2[.l>shGM?s̩<}wڟ^'׾c/x6Hޠ]kXaVdʥKhŒ_KߛdEo7ϙ7>ƒ9/~~(5y8 yNh6&f AԈ7`9xn#J66A+Z1LVʕ{`v;g?w=<{Ʃm#=}-cSLJ2voIV@G)O) TᰅT"V9B&Oql)`R9&8BS|/eT*QX*K@爘#e%lH,f)$.iѪP-SKF3H(3h)RMes|>_,dRG)ZNX BH8$ɔz':c̱q^ -fjEB9WD0 y1/`g`!)&0\PN*x9GÙ\I%*D1̦Jj2VI%jTG&ёIdT}bO1W.H)db\/kHGe|y'O|xӛ翾}᫙<'3|6Ó?>uqsN6nͺ~ٚO-pg \/wY̙}8xmᛯʯni78 fKni5 F oeiakecMx.V.'L.7MugL>7N9w`{6m^9X+uW =ɑ6+OF5jH 8kW +I2Z8"_KDB9͊T d䂞8PK|7з~hj{w?tbOiz;2y֥w/xpëhbߛベ>Tf wؽͩTW׸W}dɧ P-~wޒy>xk·?X8fW_~ﵗ0l,ITlƳ[XN]+gu kֈ4๫??6c8-X~k+HLA/w?kέSS=BG:݁D0IvFN_Lg*NXZ2 I&Rie"B,%_ d\H.)bPiLiX ^$0"@*Dv:GHY'3\9 SL$К_`@e˄@銂X5fO)g^h v OF 8)D[LVсjnU.wr;w#C[uhCW(/kF`i_P q$*PwGnE<֐C;`: "H)ǎLT#̦+|J`2P-`)WL3HgmRF: z{ܱ{W<9/w_ 1Q5O/}wu Z5X|hEKs̛lEU蝷?|{{ޫ/y_E6~#ֵ݄~~ mr[mM {] `X K&uÁ囇婽O>whǁ=Ol:28!=`&F0[%VZHLݚF ^;TXEB R>_Y,-'VEP-Ŋv) @t'TE*\*D"@$ "J]Ĥ(T6nlc Cjl8K#`O" >K =)vӐ/s"(܎MB2Q ݥRO)_Mg>$F87>y-G]]3zzز=)!`F7o]ءO"@GXǂ.C1`d#pAH!&LteTNUSBn6X uTJaZ(vU*i[ ߚ7{g{w_zد~#Zq6mrW) U# ]X^DGsVV+q,nٓg3{{Ԟc;Oݱ{CkBf}} :]8F禋- NC>H :@\ 'rDT"RHJ@*"9/籥<6W+X(ER\mJQ&J%*\D*bJ$T8R>W ?Xֹ䞝gxewǸ!9 q)}n9!YAW6DГ O" bj:^+sbTUzK=pHwms:_) JcݵѮXO-SgO}y7.>u7]*LOp}ǟN]eU^~%K[K0+@/rk/_/1x8^%[Yր崠ь`J;;mO}jc޹w-h6ۓ#rz6A‰V7QHr/ y(XL rFY6K 2D9q<pb._I,!' 2yNgj-:`:Q2$ZB/JB˕ DBD-@iwd{S08Usx3'{ !{Ӱ nK*>W tH.r׊b& "n `1@ŖrG}=up܁ۓۋjH7kk;bQ:yt"#`Շvm{)A Nr` r2[* T?r_45Y0?_- pWx_@xo׎6]8ws]x|ҳۗbW(̷OP*n<6i[hҥޞb潷>|ߘ?^8z?F,E-nkMxnӈe53 ˯C$ e JW>=7>;7o_?0U p( "7` !#(4,y3ـ7z9u>dmrVZ@ p8TNnoml`5amJmڴg;fum HoM M;PŅב˚lzA t"NZS?(pgm399717۽cjojgSw޼p On^F1vMտ<3?<3?}u;~t\Gh9E[襄g>Wz}}ŷ_՜_b ݈61/jha׵ie&z536[y Vv}3m3zX%ty'v>Ɖ7>oǞ&7lˑh6 P|!Jx}1/7A4a;Bi1Z0t,#bN&כZR\*Q*`uFL͗Tv D:D'D$ T.jJqV3dżÐ} vHh*=즞|_>֓fD  OT@)aOGJW`t% Ao> \-A lHy^͈Yrn,2cMvٽ؞[-]`{ʩGZwm M1 kmǁ)('|-U@`gmkg V_XOXO񾞉#;7 8t/]|%4%oL?<ۣy4py;5=à 'K/\Œ.;wܷ}^z9/__B51f,CC$݌ַ2f ]D_UOkfkfi"rԿs0{/Oqbc.~zN esX X$ `,΀@uE9X,èo♫ZI]7wvcQYt^a[:BT5vc֠PhR`* R\'M*Qk> V3$i˅Q3hB1dzDnI5RʕC#}8Cʈ+[u]q/tec(R)YS>[)teb8d)F4(ELGkhĝG}>fƱ v?zq{WN5f|6۬Y~ qa>4"mi \I,DL%]DW1W-G{FQ_ۍblw û&xW=y^]>Oɦpo_]Am͞|ҏWon+؈5Ν|\g֯_xW/_|/Q^j 0m5M V]3h]JoIJ$0Ot.vbǍS;/|;7ݵkӆ-Cù|G4P"MŢYŃlibxV}3FavvMN4m}o!9X V*q )GֈӘp*a_.ABЍq~k8!X"%YS)ulЗ ) s:NX.e:UkY,@ =ZgG_.ݑ( wB o%&LQ(XeH>FBa3-"KyD":`y<@)ӵihrj랍'Lwn2&pd2BtcdzDOk"?GO+ÝCRPaٖtYӼEsf5@&ΤuOn_޹{?y2x|ՑP1[6ooًޞpΛg>_ҋ++N}+o Ti]3OiԷ25ӚpM-uzs ]]o~x w:q|tblwZJ'x..DÉD,e $cp\-#QmD.%dDH`I<p3 0z / foZIl9=hǑQY]s0HI6Cӈ JpLƒo.X<IiGOߓb3*őR,RKKH&^rN/`9Vhk*]Uz @~Rtj,җvg,ғzS"ˢ,),HBst|Îx;Ag2C;h[ujOQ/m0wǖ[r'CIȢvi.ĩzР:i%żA[{㈁t4 A\NwKݵj_:1;1зqlxۆGwNغ3{6ڷ7.G+3;~7o=Ŀo^؜M+-^g7ߟ=7^{^¯x/o} ۂ6cXnkրan ׷26Q^JS+Uo-36OpqF{k=Bg"&H2&cP4 ;&&3$D/։TfD`4)QOf2P8 ʾ`ƇLN ̰V뵛n8j XM8$ :E5RjLI)4<۔Y>K"C|ߓ JL!PWmkrh`jdpMrl/t#[9pg䃛޾7_]K{t韏.>:|s?M<8ػsK`%zW_~fY/r_x_6A&ĐM8n} nsZXfфamai,eҗ;{#ۯtyφS7Z?;68_.t3\ISl:wiG4!q2Mw VDOȩlO=B)_ x@>$cszD0kr$r\!<-$|1#z㧫?|t#dcOzku/G; 8:.3 C!$E!$q>irZ N0AhZlf`ѫB_%kԳ)ald:{\'͆B/J9*d,I3P.CLzVmWΥ5̡h=6g齃+ڵ8 aIʭ+]IWWW9Z-s3L ̐  k&_W-:{tlvj!̼Ɇe=cq&hzL*p#4&,ݤ0tN_2ʤBvRXΧffme|r{;מ:tɍ綮?s'|{]k{޸o_;W?yw.ֳ_~[zŕX./ng?aQyown߼[q~c`5@# s=^"# R:(m."'ƣOmxrիמZZhl.,7t>[LƲx.*©x4F;EySS|D+R 2(;GjTJ{mZa/d X&Q3h9P<Kdc"0lX Rs[".D#F~&y=99:Gh [BֿVLTd*0x&8->k6zmwhׁzI'q4;w|׳KQdzvZOa[!h9ߝp6Vq  6 )1@bb^"rX(a%bcymc50z,׊PfdAM6KaBqP^ f X%bp5'7.ھ̑8+Oq;_5~k|߹{W/޽oC~n;B5>w}ˏ~ˏow;~7;7}?|O Ü"c`7`vDWd[?4J&apxx3\vbэcZa}1߬glN3B:IrfK+92 APem$*\ On ^8>;_BXbxڟZblXSB.[eI|'i F.7AZG"*GHJt:-fkV-9Ϧ#Kt"4 Uj&%R\&SyV$q<;pq6Qgp.rYs=w?Äݏw>Xc<#;wѦAܩꙅ@)Ő;#+vqiuJ9`,ʬjP'@uf,zya:Xlf3~{9Ny,d#DAbq16C0OeޖE*B)9W5BfZ\<}gOܙׯ> ~s~ߴ>?}Oo_W/޻[|ڱ]lb 7}wǏpwy{woǏ[7 {? O}M8؁^{FF\'㳟/tzO^=tnk\e+t![ʦt-bِ?i4hbV49de|Q C'R쬬^^]nT*W(UiJ] @<ÒHD'p W(PpX\W,j8,B+2N*&3oK` +N=yZ$|%NEH"~_Ii?^o(; +xzyh}{wxxdncm-pҙf|9ZUJz)16* bZV JL@Z(ϨThVf@e1WR).' ⑅?cm{{&{c8Ke''I)@cC|le:P,V2BQH͗k33ۋgNt׮}ٯ+"Ÿ}ル_^򍓟t..q8v?ownwo߼ߺoowR#OcLxf1@ghUC7ڸvrڱg7fN,Vt5r._.VB>WN& hх'lc6s!v2J:T0.rM E'PRp,oToWV}prw&U #*!G)\W%B|>W"KdŶ@JyjF ? ~'\ԳZ jv沇g sLRD$HdY;bN'ݡ\,]E p \buc:gp/ }K! r}}}:QX֕3f§#j6q7Rrw}Ĭ 5`$PaT 2I-uRbZ7 9oh&$DcqLOQC==nHc`k28I&&Qu*61_VfJLjvZiL[=yKϾ7_yW>~znڧ_݋__on^G}?n]|[{/n彷󳟴_ -źaVo3H꧴wHtۋ]=t-ۚ>Vݞ)3t4ٙLR&?%иJ~7pFa,*S[dj @nPĝV.:V$\iAXgD`!3 (5J RWop&0;lw@v=yt5[ZO/tid2h0vxZgڼ&a󺾶M yRpO ehL;8kS$*@&Y':~hL#UHdWѹ!ZEf3s:l˻ y6ЏVoGʴCuaG#ggRZeva025 BX ?B O2H\*}jbq6 /kj-WDV1_v+'VΜ8rS_{7/syߺwny勵ww//>k;Wo/{~Ƚ~}`=bʢ{EVre%ุZ+'.]~v~d9SX-3LuiJdctlqruQ7 PK+dt|),@Ѐ-V]2LjTzĬ^/C4\D*S"W* 2[&<[:4_YwRP(sT.ʔt2ļ-/PGp4{;{'z;nc 2 %R 08f) gCr15 ϦC.OK>c#,t-noCӱP3]YhT+JI&ר5A 2>168NSGhlGa3Sd ,D.ɔjfs,V [F'f Fi^؞)X?6Ջ^pϟK߷0ZC{?޽{>^?ٍ?ɚKuߝwG~]ă|Oj?{{)a׊ľAzg;%( ijw ǖ/\|lcKg7-w7rphi~}~qzz&/YQPg @{jK ѥ58@M;DA@P@ Q UQm9c:nVԈ0 @@b֙yU̺= gq\1NTypO{ 턀zr3=2_<<8V[iTR-[̥d)/vX6Dt K0p<ٵI"("2D: $Ii#ast)# 0* ֩ATP񧌮fWN/gOTGbl6h|dWîrU8>G1* ΤW㱢0QP5a3Y2Ab![$dT3bO)r\xzYٜ). tnn/<6wf{+Oz܉˿{y+Z_yӗ7|qݓsM讻=wm mJ>Jo]Ih};?hם/<|뗏^9zSkc3k3za{ij֌ƋJQ!b- ֪آ%`05S5+`L *3_ fDr1fm}6$>fAif@ViX)RTR4mէ]dKe|^Q]Gww"ի+zn{6Xʅ|Q,7˅fTNҁ@" W M8/AN:h o[W S>(<B $CBL`ZШMjANTHxRz6O7R!Hqw3KRZLP3(1o1yTdym(P3f"FԔN0b@ 92!GP"e"ҙ`$.VV\KLPpry͹xcK/?3v^W>?>x}ůzW?xX敥z%|⡽݄{c}ɑ60j1cC>J`}fvfI MY]=l҉W;|qgf̑Cs 7.:NJ +AdUvcBqށ]I֨3F\; nХ|ɀ/h|θOGA'wؼtNg\rСU<\n'^ly1V:J G Ic`${"@* {}:c@-]cG<eBlē@>r2K,\.srMLdpE)|pUST05&t&(I%SLH*,Ds~c{gc͙gwOبWvVgե: f4h!V90M!⸍5-FRa71ڤi5*AZhU P&xX3{왋O/r8tӻ m˅b&6̷SF¿ ϥl 53a rѵVg0:pd"!a=˜Z ;T:;fӣ63MT7WNm>{y|){d.ltze͹ j\=7osK-On|>w}=W}xCb.0{ۇ'F)T&NAŏ[E S]]=]d6_`,Xg͟۞}j~lyfQܨwf3͘Ɍ*:9%(j9TΤsx+0g.e:̄)"3H=k B56_+5%|͓)ܑI>ix%iftt6(ƂTd&IP&T))*HB 1">)sG';<*vnEfm09@<ֹS'.ͤ=킽&nP`M/^.35-NՅ1Vffb6 FA2%$ʩ gY~zq.r:3BGꉓ+i+XQĎ6;C@.Cntayl\10Mx란>bt( Gnkpo)3pÇ.޹xrgwVm/\Y||ک嗞\ͷ~_;ǷK}t_gg H]l-Fidx``4b0BL,Tɥo79E$L eZۨ]9qn{3/n^m}:G\hL&'F&VS#*2VoA~'aD#S㾵Jr4jzm2__/7rs҂ҙ(JV.Q DR>_aXckQtu4_.OWd#dM D^٬fلx)JoYG CAmOIbzCmwOvhɣMjbuY=FukHh,dCm>3n,=(7T:v+nzp v7 FɀMwX`TرC3C'|-.@2[&b17X/ AA0rR%jFqZ6vSøB!omDRmf~ya{keggmzz.\=מ]OgOӏ^k_w7־ V~I,b :EeRZZx^jw/@&Lv(}Q27jK;vN.W/j^:rʅgάNX.W2e dBAKh2豠@ l]Q[BW&lGpUBsŠ526U)ANЈErPfX̦xbeP|h~\-\m<,@ڮB!+E}>O16ڶ6A!9 uL ā!O G(D"P,-էB0Z آVGUN3,Z$ B:q9N< ex$t{m(MNł :dp3 cZ5CRY qD)*7.TV8M+aRc*J(BZanUp`S<?%e4-A4J!bQ`0aODLk3œ+է7,=lᥧ^{v \Z |{\hc=;^i ܕ#Ӎl֪8lV6LI(JgO `]=G{Ȭ)viyri٭+V/ 'V,^i<RͱmX$Z%mBSJD t*Ѐ  Hf٬=}v404Qߙckgm/?ܑW/,תBV-NdHx\I_S2"a?>:8ƞxBPdr"HJL 1ؓ$pGO'|?z'l-cr :+5AVbL hֶCDJΨ38$cH"X^Wed9} ]]#Cdž&F}=#đ^Bg_OG$I &IAJ&pe77dB2}S" +@!;]Fe2[ ømE^0챚LZY^ FLMM/R+Dȕ$A:ՒQ̥oiqGS+0O e vP0np7w;P),%?dCRCz_|7Ǜ~lW//_Ed%ӬPDbPzK[=ɝnrg5==>Fb8ԪLsK綗hlG,}xb xpAL38F^w9Ȇ@,I-ԘzK Tb5$:1982ApG$B´^Р-vVD8,:<.5avTjH %*>|L*Y4+ \DR/aVGwlҾ?綻xT-Sx1a6fTkRIM0:Th0hJ9`<:ԙӇVNl.om4ז֗W暅l<VTɐEgKu*PT\4d2CZA+f:\1w$ Rm uq>l1TB޹ra94X+5fL$F&܋JH(d\$^+F~jwgJ/|٥m|yҧZ^_־ZIϛMh˓;0b6 3&BVjlk`X[X[qHf5Q,H0[}uՐt`[,j^Hy;1 QݤR0V|2msqhP'j#&!!6XdY{hw0QRH.)rYk!q́Z̰C-:p th G~3"T d $$"L(D(Q 2D%i\11E '|e>K$?~vB\aNp!@PADT@‰Յ\V/Hqpkx81۬TRN qjH G4&[bXlQG(MŸ5kK+˳L& Awp{Ia;2DЗH1gRtd.Xki|Rjv3[++}?/^Zߎ_*JmJJȴnz\ŎY6{&r=dB?tc@Ⱦ6ba<:iK~l.g$nN׫APF$sj-`'fQK 3 N(jبK[kkkK\OJ>LJNO2р7H$B|,E9d+Xi ֨^ᵔk>^xtWjg֧~r}/ LEeBnŊ}X8G?>Xh+skd0Uτ |>VKGPnt!פZv;\?G -\T*9ܢDT&㩄|5%  W8G⾙ByV߬?T섺ycMVn'j0W"#zK ;-J6vabuG%<.4ӳ+ ++-nYJӡpw@( '|D(Fd*UzLJ$JT0N<. h5RiR>8g.Ƨ,ri{UqA>]%ufAM08 }̮VOj99E!*>4FOtA텍>#j8+p6T:\PGϹo,}ʧ7r>ttK ΘJ@J:܊ VEk[Wiuw:NxWX[CT)AtŐQ͕sKR% δG3[,ۜ[^RL1U|GB4bкTEAŵr_hz{bn$ tz`0ixJ1#4g`9/Uv;i]̶DŽcG+">Уs;o^TlgldƝ6扅|. 5ѢP$|T S\zo] T"\ԮJ[+r$~ܥyu z QPJE Lj ^,fR z$?= cG&crHG)ԞN$2LI,[XÒ,G`iř0"PB2RW0˵BR[i4 J2p;e!w(c(4,MbR12c& upܻoA#&m7C\].T~c!9O|R̀ P!nwvu vwv MNPUbAԊCޙ|byfzqRLD6K}F<0l6f6jb7rDbƵaCͣJ&Sdg|b̐0j:OA?x6XdmzV vw1ˇNfl,S)a+,T3AdDa=`ZHPPmwsG4mVG'sE.9P^̣~ҠMЊ2z$OYi~t4Pq+=vp׮}{z L&Sl*922<426e"9oBmUj0JK w&:jfΕ-z0`X׾>iw=;D&OЩL[bp̖EK2R9Jd$aǻv!F2>!`7ڌS(l۽Gzw?=≟vO_F5FUsTA֍itT,z= fČP ~;o'7}kګbQA #^1A2a>4q)c`%h{WBפ{ݷmor89D$(4 I[T5J,yq q F9QN-',hbH&1":GPP:7=u_:q(ELSCP~@xo'm5N!CD(Db1BD -%ӅdB-Oyq:u]gRag6{=}v~h|nO<нOv?pw#'hLjjrxj*0}?}wےd>jU1"B(aVUS10E1MGckyUis#iN; 17NO%OSI:Ky iƔRF3 fņ8 :fhL0d&ѻKDZ*W)ˍ!flVF՛4^*%J1BAp6ɽ!Z:*:Bܻn(:i#.ym{| ;yyӲ >)BfRՈpXTW81MpXP2i6C2%BL*s^G#ZFP%\a܍i2qed*Q_|J7k5vGG)r?:G*U X|[$Xz65ґ"Es&H93@9G(1A9|Ϲi;M7؞_S./\y7.o\^=@8`Al6{0 #9-hש AK+-WζO67WpI(|WB7r$I>q7lW3N )\\g#p%ɢ)H[tHijwxꯗcga=vLV%U>eZӕax-/;Nr~/7'Wͤ"^4)j6EL'43`vi %\2A(OƱ$rl#S-Hp E|n {njn×/VVRb2,]|-D*KgV]׹cȰۋRnq+bn췛ȫfU µ8^4Hy<.jv9\19 Gq1a\0싕o_7I4 ]0,%"+NجWRU0)AhA\TQ!̸ Bիj]!u4&L'D|kM2^,% ˆBpA>]H >/9qZf-|gX]s)EPqBQ@6HjzvB=wxV8h\`L0fMNOO O?AfJᤕ>jN:v[ܩ&vjz?h;nxμޮoVk6Z$ Hs>%hd\es\<"?uVW,nb$yf4qyZ&X$N^4S*R2L\UoVY6`w[9HַN֏wVjrTr:ESLV]*W;R>S6e'ۦmV+cnU6(`z;Fle߶9šD;)Ģy ͢Zd4LQRSvW%Z+gV郵뽭Nnui$pZۤ : mr0uzuR]%캠U)C6}Ъ(e*B4:t&FjWjSu.ѢT|Td LWviU6 T.Aq 01s. fYġ*y*>cjչ;GgϞ<}ɩ'S3s#COG?xٓAHN|m^OWJ'+q5[kӕJl~\|8]iZouSh$PYmP+B& C@,ZXKvgOsI$:4;6#(43\2M2L n{>ݪVF OnsPѓl:xԨ7ZM站R1]bAZ`7*3>K#jĂ_t]XJэrj]Y)?ۜV)S2&KdJ|T1(Zaoϯ_:>Z(ymg1uj^kFEjgP jФM)=d7| Ye>oTFM@ :֠1kVȼCv,T |6H8 p(a>8HբL-WnN|]E" J1(&IkVct7>|pgލޯ =|û "~ۏ?<05<9686202ld鳁?ps~QۭQr|)w+g˥jdtY=[\),꩷;v%$P©d\"pwP̢d O]$MDߌj6&.&=^:,ak%r P-@[lm,*եҺfXlve|VCH 9&e솠wY]tSyڭ'WrH;~̿4se,!aԙB\,TlU2bOnP`j%ծ]log)$&cA]֐嵘:lq]dL:YeAqw h [ja.d#6#0EV`KMRQ̷Dv,|Zp(Y\^nUkL>xLՠprBc|jw|>|hvZDBB.cṕ)ݫ]2ܓ}8{[޾?7153:152>92>>8J&& йγWo~fËzlv^;vx|Tkf Jvln~w,^7Y+ގ04nF65#wK3CC>SId&i~aMͱlȢt$ E? ‘|ǃH (1"UD'PYd%z 'JN\9-O Od52Э{ 9eFX3U|ERW**d"Z@RhVkk%tk#0lfFEF(B ˿SfX;hfSFZV+J2`G.\lNzϠ:Q `99Lq4j:B&c0Ǽ6b,ERdWIlJ])3+D -tZ-[T)xnnw^o}xywyަA5`R* Z៚{rjKc_ߜ3rwnߺ޾=W)~}gvtxvxt8~f[}8lX蜾9ij}Z:^>Ǐvlx?_mT^n?|^WgZu,gk[/4wNYq1Az1(?&~rA36$f*Xd 7gPL!jn[.%P!Nˆ@p( >oha#0L>a26S"*ZѫY}ͣtE 5O˚WdB ,^^%ɥBc֪vO0jva5M\8g742D Y,Òҩ<:E(Ɍ=RjiӍ\v\>ݽvzz^_jT5(&XB7;<&+d5d"{mjA.d&]ֈE4( A{(: b"Rb zHӋ 8i" 3ntK|웗[jGq7wR:hgooo|{'nV($Ow׾?XyT@l;3:;8==5LBa~aL!9b2i"]&=\:QO&X&"SL78:ϓjV3|FL}xwflD +T9!i4ilMtT75J'rl(* +˕N"cnc&~դId>`3 EbGlШLx6NFv˛o?lg|,. x<ivE\H3'zb_ez+: .N(ԭ:BЬ`JC@f IOԖ7[?_wg|zͫޝ?ƒ,KE" +fLbgqO&;Э_˗^Օ+7/]3䂠;?58036276NOqHeS4E/M >sHdKݽwN;a#Hk|y;?x)3\$Klfzk?.}[x\;l/w٦{`tj%0? }7e}4zZP@<ѩB&5hT&-hDuAkGT@F96|吳3A_>o~UBrX,d< ]F??7?`?vfϥ\|˗{ ߾J'O'FscOx M-p"1WJ'1iDhߓ;_ݻrrύKOLSX?~tlSsḍx486DRnN7=Z^~{|[D\n7gdžP5)%QE&  %T*E >W*x xԳ,YI:ˠrB\'a$0-,ؤ̠AXK pH(ApA汛v;D  G~^#0 }N^eRBBX42I1< _쵙XKF1tB֫b,/oofdÇZ[̧`,bo6ӿ>mYi׊2Cr9̐E4)`!2sT V@ $zywi7mDuR0ӯOW_ۿwBpAD-cR2QJR(€i '5v7n|}ڥKVڥKW{zOЦyE~j2[$-TMXBO*IHg~uͻO^G3TĨG,2Z6I|J~ 0-׸3Wd{}ۣomnVK_9>Ze0tw~g>J˸\X*RHRX)IxL>eJZ!VEb)0#.z23cqIPX'>xf)'pO'19e*&ܠ^1!yS(. $^p`8Fbp( x~'rGA !îU2!c0xĠ G!{-|$L'Jh8z,T$*B:J&㧛?~z_~ϯ?mUӏn1ɥH( WڅL-D`sY~KrΈC͙'BVk>4kQ]%/׃8p;ݓ6G_?ϗH8X49,VHPkv Κ}`΍'7}ʵK w=7,Pqc<G LGWB6S@#3Dpoh_v;Tq#})Xx#{:D 8 jIͥ( 9 '?Z曝˽tVsӅr|OVFX FV+JE\1uQʄBȴJ0],xjFN&WK_K3顾޻^3`vT8cW s1=qG}fdF-5r!# #0DpC`|t; c15jB.p @%itK+bQ_c$ aźJT)eTjwbr}mky ,ZS1T d2BnCgHH%j*q, ۃٵQ6Yag3XCV7pR=zh 8Zq}0&?- \OAl)~!1a7rBNG2cr"^Ϥґp, E]SYR&>31p/zl+|"93Xa~9~~o~~|YyD‘b.#ITR%ennYzznܜ]зd]142dLg4G^5/lW`]q7  :/V d[dĂB`CHo @15vϖ.h4up|wrʉ9ܢbHӒi7/~]g\-tM0i d~-*`2NgBP a`0 G`Wo FDlT*urA*VG7{ڍoȋb/0 "&_$Hs"L8OZӳ 'f~MN4S5346H޾ L褜ybVW;~w_^s"?l{Wg/mVNkpO. <@) Z*U؊XkW]힞G==_ƅqmV 4шP sJJD+X8 7x` Nΐi,j3J:ưDK\N7+R1QJXp=&Й4"B|Wfs>aI4(za䲙VGO7Z_t>7VSH#BZ2u~%aO>.U˫ZOsǍȧԷۯALq&\~"o6~WK+V>U ai*6ּe8sTEE KY&)DAk` FkU3b.$X9ZkV6[R2\XtY<&B Y:N B>K(J - i$c&`HCt,CZ-7[_/z^wU:nߟCPL*zQjeN [C/E*VѩY6XBx:Ψ gH{}3\IV9,AslFSsDqa@'d* l*ID' S H%I%婘D1ud ώ<^"lI3`FS Zv@G$7{$hd嚵Yv(WjDJLa2 S(ReunZaRrC*2g_K7{.߾|mjpJL8%TK:q(O]p0`2p0n ?:69>F'SrQbg3r{lt2W yJÊ`";$ )Ϣ0T-rj*`p* `"Gsx {NpKkB\9Z٭5Y,D_p @Yit˥B#͹И $a[t>n7j JLϒlO;9qT9ͮKJ~WX,#.=|<34,fQelV(X"wk;\fmZK : aQegw.̘Dh \ƠH$?H#P,<:G(ԀӘA|^}iG%U4ZjSjOnݾs͞ϦT|!U fMȤJz-)#pB, b,.Dˆ˪`i,ʔJKJaT\*rnծnwkt#*%` :A) %/οRhX$p1&r]Ri,0K/UZڀz"ZЙCf r@: 1-rn^mb.O` j3 08< "LI9j"E6 *G&y-[M-jآD06T,U!ͱ FPr-VҥdB :ma1ڥB!ϧ^wW<]42Wl 'bS)bC%tXĤHE) 7;&(Rfy V-%N~tk7g`F]ρY؟CBRh!B 0&DHQ&"D3gsx iJ+kz-A|Pt:M\$<O.RErL1Y XƐz:Z+T+b6HY.R4*]n7ڱdVlJK mJ$ؽ (a"4 f]vkRr^hDE&Q[)oUs RPIb"Hx::tҀ˽B&ZC;qC#9oH`+ GO9m*l2(vhUKEj)W+8":lٽ١J8ZZ"TK*@)8boqzϡ558}w~cw-ܞIıV{za!WDzB@bN Kou^gT(.ynK>z6㩑g}#Oܾ~>ISt\&f3R ɽ cv Y$c޿~uoDxT !_o µ$Z8KrFDWpbI&*E:N*I'bNbmhsRr,@ZT$P"P&ɅRH8S@-㻭Rw^ =(eKZ\-kJT #|)Sls44KiCQFB]-mtj'Lx (pMo,c \5iȣ Vd,G S>d.`ˈzm(r\0n>%QV+9u(&4FMZU% q|\l 9,RMbBS(trf!dL"^_%]Wp|pP߽'\œ3S;X;k|YhW](P7ൻ]]-HF#AGv18vFe(LRȦ,'7w_.(64l5C^2~M""nsbZ@+xak6x:j;,I(pD<ԤN.`ĐP(:i Ky*ah ӳC|Ҩ^N ٕHRA(̄R`VƼU[ԀQ4Ymt<.,}|ʢbiT[ d LeQi8~|d@1bԻş_Ka;lQ;5t%ydg8 ǣN>Fѽ^ y- F`P>oV:$\MayME09^-`(4^p:ZT j~-rۧG{/v7j2&B&Q*R+VjE JRĪq4EdA![ʯ7jr`~XQ e1a~HBq<N]Z4HzC\-(6I ]lRu E! >aRZrU[I:BG?|~v-P1 TPo6taZ| >7K b:V a0沀9D L?Cjt> !qYU3sSs|R=)g`T"U#QJ.E™ab P 6b b#NU-4H$H:Bvl72X`ә΀HcZdr,_brd2D QY b)d ȋ9nf4c vfǃ:=u#<]aС(hA*fǑ#J* z#$ZM% 1,FKȢ\D$єYr@!~MUr])bBgVZYbrO* h/Vޝ|svɫ/_||iiTbk\^vѦl_&۩fjb,ZE:|=^*d;[_l5f1^Ha 9t&xIp1qsji42h 2(PIǓ(a1/I O0a JSD(h@^ƣ"4N_'@UvN|tQL< Qq9<:Ϩwə+ka+٫rj{Z}(jPk,Ko2 LC, ʐ 9L!.$6kb˕r `w1ɇQcPl|s]_-Z_k9{ݻNߝySXhJTmQ6pL>z)Z,K|+N>Z-4˫NtةukL;*J\6Km"IQ Q%9m)ȓC<Ř,#f_!rh\"L!&vp@2. jmҤ[I"7M[ӿo?}<~ra%Ǒ|--S&!e~biq^Ȧ22ǪFLk֚~iIh,cC$ 'A`(6eAs;۝j-X0 :qur \)+\x\ P1r+bX~HFL'R=OV*-2Y Tq 6G`(d>*Z[ٯ?1HbK.LP%fR+heDWKսJW1XҐk(eL}b<;~yrxp^ubX?r\<˹J!V.zQ/vJqKċfdUqkRܩq$elu֩aL|rZ ' Wz1Id@̠iD"Bxs43<(1$5݇-Ss~]6˂JRmUEOWoן.C1 ~W"C]JtKz{zP(Ժ{ק/_u~rtű1^+=T(8]/l֪F_֫ōzH#U2˅t;mKkţFVخwz.jzЦόiб3p1R]l*Ydmi! M2ɩű1!8-BrY<ը7V\ʆZB__΋nu#==KsVO͞+w{zāu._&9\@'Jյ0Md~Y[vf63QM-k&4Mf`|Fy@N53j*]R'TNt Ú~[%&Bg2 BVxyO߾~w~\W^[+14- /R PvFm^i֪jyR[z5q* D+wfAwgt3{ItQiR9ȵ)3E -ULXrǨp,/$ȓSQJb;q_ "Z]yKR>[JqphP}?OϿ>Oo߽۷naSئrV %e=V"Tut$畷o9Ɖ؉x3bfiLffPKjn13cW}5IvsU3>ﭮ*_Toy;Oǯo߾ N971%5+;'+##!>.HCUw>DGkajbobhnX]]Yji:[B\5ml'}igddgm1TWpẗO(Ns+t u rϟi;874t555w6׷5jkhilnok,,H qsxzGF8YGeG$%Ufg$$@bRJRѹԈ@`GGuF|qBTj[ujHibH{S4&?;37++.$ %Ⱦ1#.3<#;+5(36#D49$q4PU~X~Oջ/>{<٩01HXHXĠւĆgv!TP#3>zkBuVTj럾W~_J'DB#N'+ܳ,-b귟|Ϳo?_o{;;Xi}WsJr v8)2PyXjژYژ[:ii?S76t37U4P61p71syojjai;ZYC ͝ LlU^h{?WT_YY+2'{ҙWuAz1D繱# g-ԽmCBC5m t̽-u][:* cb}|m|mB"l"# r2ۚ{ۛz;:z:z[[6VdF88YDe$E9EyfD&@K33*rJ2J2RӓrJҒb2bB2bC#bBBJ"2ýb|bJӠIqe%Ue-Yi=婯jSj7޵43փh>{ॊ# C?_ uڋ"SK"3_eD5D{B!/zjg~7?ك?ᓿ~{j?|ZoaySY^o/?˗ه?|?zf'TfA3#|c|]|,~=DDWT幞K5Cz*߶9hZ뙩i;ʼnЀWQiUIMY+ګ_ Ty]\UG_'|{*>y\KPzjzC5oF_ee&ąTVF䧿I{m/OL/O~_O~>xǏW'>_OߏUɋiM}~໇}= =~_}zwZilblegfnnifR;'ښZ@RSTCc=C[#uC{#WG@)jzOj<{H?ײT71 42wU}G~y~Y[S'&"37#157(+.0>.3>3.9<۶836/llHm@LvMwwwu4wyTRZnoigel[bjfQ^]0"+,#4+"/( ZMȍɂgǼʊύi+NHMh)--Ϋ*)UU[\Ԙ:+1,(TOFʳ_~x?t?i>@/;$CK>?xWOL M^RKQzMnJcQFgijgMy7y?=ӧݿoW?Ϟ~?j?YG?~ǮU~ӗAC?>~Kc#CC}SU-myH'7iʟ[ؙ9ZFx:jhi@##||L FFv3c{Ss'}c;U]33G-=+ kw;[/5ut :3 W--3m}>Mu5Mu~OkZYjik=~:_X@Jb^e+ ZYRs1 ts4q4։t~ilѐ93ڇBzƆF::zz{{jKʪs]!F1qI)%Y i!Pop貜ܜ̴Ԅ4hQj\iF\^bHnBXv|pj_^|pUzT]NrcnBc^|cn|KqJkE^[IJآʌx?G33m ??~o>yF/4T}HC]}_{}{_|X幭FY\PMqmzBmzDCAZSaBG+k/?zg~~/꽰W3U{l OMu^Z?YMƦ63=S'ɓ^k4ղ27207QC͛X/@Gwpw8_8W;_M<2C}|l] ut!N&6F:zV67gƪ&]}.=YGs]#[;5msm=gj4 t,g/t, ,,}_P1US5W{􉁊 Ī27yMNwEruNLaR\nRr7XU^Vo1*ɿ<% ;̣ ''º6u*2747ļ&u) 3ڃG wɑ֖ښҪLo_kSGKHhzLR48585#36*><"*:?»*=6?*7%;.(9(5 9 )098%*#<= > 1,P_\QXR_P:^uQrlYroVTPދ_T3S36t|B?z6V6Vꏾ))/ϬN/-rq΃^~7_k|O?xZ|'_WbkoaohkadBE_ßR}]R 54 @[S=:+cCS]mM M#CgϞDG{&;G{G=LhmglkYcbghg`eog`mLHSSEC`iiټTt_6зR2Q1S11vuSP{j˧6zxsqKIf>n`|=˲;*ʒC J;kմ܉RDlth>HDM#cёΎ֮ښ⢊4hUrd|ajf~bFIFlh4-80&ϡ>;lupCY`ʴغԚWiQʼniQІ„꬈ȢPp_PיA^NfF&N!n6nv*u4Y vp'g 5i֊יΖFVښ{}>BS/񇿾⻯_hk7z}wkoKկ?6xԾُښ.6nv6FvPoy!j*F/""]~vZ/ m >V9A^q~ʟ.[Dy{;9i5nK쫭H23{amehhk`jok`hfdnjmikakg`kigdohr5u wt w2v4T1S6gmjfhe`1߾LGt Qg S$WKMHR@`Fx`iZɊئd8J.nt7†5SFkvf!#GQ l G &FP h___wOw{k{놊ܲh'GW{sIF\JQZFU^qU^ʬ̂XS$"UbD}1n31 rU4YG:'In,ΩI/HL(M/Dgĕg$TdĖg'䔤%ą%D懸uƏfvfAcC<}<QޗVzO~CcMClC}M;TEb k*C<+|cj˒k Jc##|uT5\, #3"CCc"\ :^!MEi^g%V;;;Am,-l= :Ǝ6[_ g{SS#GCSGUmsswGPgP[p'`Gm3+S7=3[UM:FVvQѵs4$RhWcXeKGgjs.1fF&&6N 2|o@0q~Iq<|==AL!arb>1ioommm.rvr12eƥgU(_TSRZ[\R F;GźY5d ΁w"QȞ&dYJ.Tcxu6'ٴ${g7gƥ9$x%{@B\=B=# Ai3 ij>UQBazdaG.;'1M$:;2,y>4>;2MnDrӛ_Tsul kI r0101t4P ȉHʋ K pˎN &'@| DG+%hebSْ?:2\ rpws qtti(UY[Zkci`kaalqq trp pr vs 0w2wP310qĎ6|2*Ĕ 1}RLQ'I!eJL#;֌ DX/CqԮ*ǎGK}y,d,ida'YifQ$5O0,| NMa1p`w_Wgm团ذ(wGg{S K}ʺʊľLGs%btُWp_o!S.HWda[a3YWⲇ.]=xuj}^.;jהrCtswT 13PS{\uqP7%汔Gms 5[mf+3.G&: :wpBX7ݞ<\֑>Mq1ѯKşЪ޺(/'_{;?W g[sJN[QJYSgYF\N:i?Vѷ?fzudNB_5eU&%w.k)i(l+OM.Iωs1313 qKLM-LK-/{SQU[^RZXY^ uqvsrwwrrq uvps V~#+?һu620L2&eL6!Mi01mJDR'Q yd- `żrSJ'ϓ'yđYg,4 ?Mx8 b$ &$c'0ScpGogGܰ gynrfenQuA뢲Wo*+3e`g; ꝍkf {,Z2Wpx$9zDrlň7դ??9ZWW$),uωNTy ë2^'7dE򂝬U :u=HXDpHgH{I,hwc@C~sQFkcej\bhpzB\4 έ"9':;3D07@iXpDhhb|Z4)?3GW~oGիbƌ҄ĆꌾڜڬRhuVhm~LsM+!c`mEY)}RƘ1J&e 1-g¥i &e%tRt:R@Ep;D8d Cy @ 볓{"􁄰/& 1b+­<Ԗ-@ Pۂy.1\bE6BΚ^`9&l _dERJ1R\@HH!O Y*jJ`3d0&NH2MB3 HyWQtR VjV!V*SePYY& ` p 35*FW5JV(*vrH]",u׆U\#)Vp \!۔s}mݖ:Kv;ىX@;O/ yo=U2jzM*7+%ک'"Ȼ颉Ц|/X{"mDX-PdE‘/"Rҡ/"69ì"汛|69ޜC"7Y>X8pe3\ 8ez=Ȇ/͠YrZ`1Q&j6=OCQ3d8GY͐l%!D %cLf G1qHNG+ @NvԔWgŤ{ٙ9YY9YYgA 22*󪋋^Tfeg'#&[23!Z N /dxVxwX^y `ZL;c?CcLF*FJb+SU#cea|} -^: ] rAy)t>3p-F.o(K`ǹp Q5b ((Ie2 XKeo 9Fn嘛ܵ w%]q72f , ]I8#2rC^,E"b|.#gR™p.#gbw"|HY"\򁘼3Ę=a_@ܙcw-|ٚlͣw1;|μy6S6sȭ9RYop .rto]VfK36BFXH)#)>yGQ%MrCq)Y*N68!#gh ɥg)hã(. 9CFrH]elG0qN"h$ MONvՔDƺ޽bd NLJMK).ɮ*,.(̍ . lMt9-p Gp WKy7pN9c7l띊VPVJ[?.~BZ5ZF|iH&J|U]2*s"}*r6ؔL`w/ 'P2WWi}Xtp2:BWi*EB]&+ "QH]@,o7 Jn9zA\/`od%]ȰrܵtL% )\J8/s9L;N31D9N$S1D>E# P;DC@>DCP`}!f_۟ؽy>jwCP;|6L=a79̝uu.rZޅR*+Ki #O4RPwwx |*OS1|E4`fɨ;HD) PwMF;{jJ"C,, vf 11 IɥeٙUy9YЬPrh`[X(vx{ 7G!xsr8g 8{ ^/†?= 89I # $\N.Fr:Bk{C3:[ 7Sɣ5I#ձȆ$D[,77OeO7uN v! xp|}pS,EbX +9FplrVae+9Rd BiBa/3 \;c$o{w&%HJS1=s,b̡p$pýy<@ٟG GQ|`[s>vknֹ2[3`y\@%Մ:=OJi>Ӧi!%d4W6h3OCӱ:V@iX +ftPy+TpB:O92j\"CDq:EF#pɑƎHk;[S g3>.4<%&>#1)/10-27<;2;45!?:,!%={5[nLx{ *2 j \.DJNgcg0: +>3bBʺ@q;kYU7ĜYo>Q3\=P5*q"U) *iO,J)KJLo-Nl)żɍHySV0PS_6&& %S Ut6k9<` NK1Z^(KZN^ _-r K9BFŘ )\?`Os)LL9`ND!X9ީ%Ĝ"̱},ͣ#fgv,.C;-:gj=_-4%ꨈ2, )88*L̓q!mRH i"LL "ߪ":B@p!41B:1+c% 3qR6A 'bb,('~S140 $`(ozӒhimonecbdeMOKH,H/JM/̬)NI,J+59o#ad9o)x{P!p\r b9_qIr ޟgp_ng`V%nP ;N-9:2089 )i-*OLi/k/n/*/, .( i. j) n mIi+~6Rym$ZR*YܡWZx+wUZ Y{ǜp♄t$&J'ұp"& JS!L?*Z}n!6Lr갔6ŴHbR- tKHbB<]\'" I#8,Vj6&Ni0嘋F^b:\@P^"\@) )% 1r/cLbZJYX9'cadoNIX K)Mpb6^!YgLTִ39}f6ur\ΕsIL@; y4= n .`@Ҧw.P :@~8:vp4^˶sSq $~W?am"c[zL~GxNEUTtX2Y2?73̢u[|{29ݚkJ4a&_L{;:ܧ:xM` $<:<,v>s9o1wl[)nϧJiMC"%J99,g"Y& 9y 6&x ONwE%ٹ;X؛[;[98yEeGJ 푒)7p \ñs>QnҮCw@lp /QwZ$ǀ!p\Y $ a+ l ^'0us opvg^q:2zi]ǴCjҼK#wQwHm;䷴n7Ė RiԶJl]'mW+UB n_L[ĵHDU+DNU`5z;]7#-Bt$6mʌwK=b+) >9_Bꔒe>)_N!)y-2$ K(Cb<$ʩcrڸ:.O09}ZJ3 Ȃ/L%K, Fp+ fuFy\ůrq\*k9ie2G^%-ΑL[Q3d)*T!GN64 Wl++#R?ح` w^n7du2;nX]Kz%qFk=OGԎZJ.}ܺCn$lQZ։- b&uܼNiZ'7mZV M5B q WAhXկ⛖ mĖ%|"mعD\&v.z =KߐH}>9WNY$/{Hr/',҆ËEꈲ,Fh#K%2cb>š\aN-3&WYU2sj5Ɯ^c95ECH 17p<&ͧlɛ|:'͑5uGYQ%>myy4M:K\x3 >>˦dLcӨњȸ\g?B-oĠ԰ȘԴ܄d{2Q+Vog{2ǀ뷎ճ7+)9xrv\(.d8 <'mO2C2Gr".Ke9LeXt*HƢqѲT{OKKSGrH4 $3*6'..'609UAfrcvly%:\U(. 9_Aݩ@q*3m.7ub8_N8#6ph.h`lI`u XF`q^@2Jq? ox= G1 p;nb-l%7V s`0zX}SF)wL?f2={}z>kֳOۧR{h][wh};j.}p6۴mZ>MߢmیcPYY#[fd5Llwٓ; %ݙ{j;ˁv{;3S\,b|;C1{b 5p=bleU>d )a+a G8c#g=r>=pܩC,`v`vpvhnpV<Lyp $ "򁘲/"ڮ-Ǝ-anI؛b֦!ᬉث"*欈fD3rK.9b>[gx?ϰ8LΠHH 424734334770@̬m |\|O$GD@zZ*t̎q;ے^ݞ(.W[ %o?Nps\oվBh;5rXWK8B3bأ;4&[D&(` u XR,O˓80Gr#l(QHF@4) 0 PVp~c *w r*fn+w䎜]̎q13t>99*ّS̈S)vƒ榎y>hq88⡎yz" 'i ^9# H?EC1HL9S$ u_Bۓ0}{Oړd=̖-lI9[tfC2.]̬gV%;Ǹ +ψgg~͛aqLAR1vdiCܒV˃}Z+ρq%۝coNnE)Cx^4l8[OD #!p4<`doFV2]&M6 |Xǂ; u`,#%88 ,E8(i@>9 P"$SxJ!Tտ©;&o0%[ZN߈7"hJ!.Bĥv%V^Wr%_"ĕu!F^(+\`NŘSL?$sTJ<ϤS)XJ:Od)DF9O#Mq(g-0 xs ,/-pwfwܽٝm9w{anS[cu&+Rފ(]9'Dyǝΰ9lɢQD<"NWTEhڸ?~ 5U5Fzz/T7t0x;x;9zBC^>`itC||uus{{qtֱ39S6JǮN; ʥi[ { 0+m;ܙdǍ,[C b0qY535Kjfb:u>{V[NgeW5ѫo))Et,HED̏EH̏Nx 91MQv¥9cc`1|ں' 3ʷŸc;bL[m1 h4A5MP1qj1A0 {' nuX}aQZC@(!4[ǭQi4jmCƐQq uiFGp % .FPp >m{aA3vѮ$zxd }AbGA/1#}Gyj7qNR"uNR #6\ piD5BUZEo1jFѠ:ZҨ==-]խy[߯~`UV]zp-[6m,۲zɁoڲ5aބOt.$ eConvg # `,2m4 m,6[ߎLOn#7:;'"X1B6@1?1JY' 16L1.TO851:p 1c [;wG M1e@bt+jbd+jQ-1%J4JFɶ ?J8QEbkacx+ܱvx{6BtD!!]a+wFH]!'Hv 'dW>jG aQ7ZuQ:sRz'epRzpL " @z7$1#HԈZh5,E3u:F k4C޾֞GMSý]G^~%-_z|cÖ76n[y[,ޱ~];O}/Js^Lkyw4}͌iM5 #nn4y#ͦ9D'i6uzcf~x`Ӂ]ܳ&욘]1Q=!-[ &m(& ńAP~(F?Arc?0qc78ʂ30 CcXpCP CavX"Īì&hœ.iC6ꃜ>g~g>eVc,.XI[I[YL" d@y’&0@0 ̂Z͈h&h0^k!m_p[g_kg]K~î3,_:ks͛z5˖]lͲoXvt w]:7/uįn{I_?(vw#L7`Cun񐃎xl~h5EHp|ZREG18$h(:P|0G#?44sM4ch ~v&#'D\6Hfy epD̡ ޷ߺٵMLNژ4&fBFMԦ )4S1A3fӌQ^;kfӌp 0gsg$A L~^, `LN⤭.qd3,ea p YpԌaf "@3}RUޡ΁EmsFaouGKn_`,?{9.ذbٺXlݲ .~;y2듏s?uޗ/ˌC]Im' ^ ة0P3?HHh<|b L4Hl$_勍c#c>Y=ǂ3q"(F(4-\M$7KMx 76Ƣ,*х\$8N3a/uaqqn8&DØM #6M?j/k8b3ڌa !PAMAa[Բ9zx#. `'`qV;k)HY H+KZYJ2$BV 1!Vb20jzFQ=]MM=5M=y_*-\t+\>w93-Yzf[h}t%?K/3>c=KY'ʌ/˳2neU쾶:T;ȣZg xݼh=*i DGQ`Ztxd}Z3,6,P34=#rBΉs"챠=m Qo OȘyNBx̍G] p.4DbRu"Q5 *a[q'ఌ;ynjGD4j7Q W@<<:@uÜ08XΠvȠ6ш@T!4P8B`Z fl1F$uz֠ ԝmMmՍ]wkIX%3_Zh-ںEsWΝvu fn\`Rr/J?sa鏊2K2ʲ+ꪍݤiH$M#D|b z4D蕠cFB9|d!['N" Y,쎆Ѱ$pDɮ1р-b~>'||ƼDC{q/ MJBb܃wb8Q>]:q2D@$Ș en$F얈-aְh ّm kP$ >Pxm׆ylG@18TšNw8pE "Em SO!4Ɛ(h PY1ԊlX`'i j^6 ukpsࣆ"Ugi_|}˖ꊹ]8k-zk~cu^_`VyvfenZeNcY yZ\Q\^V!kQUT+[,^;h 96sDѠ4Md&:x D#^I0Pch {baw,슅]Ѡ3rBh N,`jAĨ_ ~@gkQ;}Q/z(q71wnjE17>Au.lԉ*8','q #$bG#,b"v4lGT XP"P v0 W=7H0Ld8y vbTpAy3O"Q@Hqtad0zZՆ!]w{'%_HWy}WWyEΟn fm\2{W{u9K Ue劦 ESJRSXlV5W+T]5}Ym#,nȀ W9Gg4EX{E1`W`<w,z8q T\q7|q/7E츇0Ӡ$Ԙ.Fcp qFĨ 1$GdI88`uav!J ;tA;Բ;~qp/kü" pHt 'p urDCD`cpx1tI0BH8jEPAd2 &ΨuoPӧWw w Uw+ʚW}˯9|ao,~kX77޸hK箛[@]?FJTjT)ʕMUUsuykmy[JRlPT+U Օuki~:xň;$F¾w4GaEq%^ɱg<䉆} X 6` G{ۨ#~+k(qsvÎ'q17;EEGL̈́$LT 9,!>hNWĽP* "rS$\6).IOJ9vȒ6_68e!# +IA$]88A1jEAY 1,iPc殡⚎;i_gRK\6)Pnij9y)vv Eyf4ɱ$ a(X)) p$PG +"Ċ̨h5yXk]5m׶hۺu[3*[ť⷏8[`הWBqO1$qō !A'=EAtI S~f|vvc'a\6- (tr F;x%BDqg(Xi"qFQ #0+Z̊`f bEP3֙u`!}{_ѥini.I/kR{ _vŦnY>k{-ٵf^e;W۹zs.u圵s_ܴxX\ޠT<6+*TJ++-U*07WW6WWV7T7VU4gKc`?a6`); ,=:%٦|l#nfq"g s#qZ~qg=J`([:F ,Lg!qHcWk6w7vu]iO2?|ҧ۶]M^ھb֮-%;Vݳn5,yM^ٰ卋_]7Ge ydWsN!7-dysueS0R^W):ۍa1`p؀?t,ඇ=ΐ$ٞYFM$z:CӰO#^ۈJ@<”{!7>#@xI i+1.V K 4Dq^3YRjκ@"Y'W @E9e#Y4բ8`E #H#P`z3=Yzk{ޯkӴ;k[Kvv~YǷn}ux W-/o[>{۲YV۱r5 .g ^ٶb7.xi͜7-XV򰴤N!$+k,W6 *˕u*eSeECUeJU_YPYQR)Uƚu@cEh8q>wn1䲇aMZ^?}p KkM3 Z$8^= $Hd+BͅܒTOb.L` ;Ւ`"#e I"#-6W,mS=Oyx]EEHj4 B(L0+nF+3!lXgZƞA}ǀOҧnw Vu*[>z|7~q%3[5mŬ+f蕷sK^ݲdƎs7i゗7qLMY#JH)W*+++M*UsU#QeumyÊjUEEZxTY688DL)nf>u~-N1T뜮SLJH&x;B^D~#vM3-sN[%]bmL NtdF!/@ʱϓx!X^{LpBq6nV)S sP-Nc嶳n}u[8N!64Dkv?zK_?]3_qeqauYq\V^\X%+UWYVQY*/TTVT55*\^JeEeJUe}sk_ b498R9jiSM!I8 'd6#Di?o~p ptM&HO}NA&^G\-7djvNAND!̀i'ytFhc @3ڢ{fAӓ pPQb if4@ Ai@kXM^msSS2TQ[VՕY~/o>/9Hxk+潽bEm\/~x `[ڏeUVUUȊTereRYP+JEUF^V./SU**yBV(*˕UM ը0 Kb" ӌg6&LXqӦmʽ$SO=v8"&t<8`"%` \")(uFsڸg@'&`byv삹N'X)h`0웎VBpʂQ4J-BH 3=#ZKﰩgoh׷:5چUŏ:2ͷwo^qռVݺb36s[3E/|o_.x;cs_ÅF.VU*e eD^,W*yJ^Z^*U(KзrYDiQYAnANfNFjfNnJQҥfF1m a(i?lS|[鋧zPo/_Ƿmx{ߖ-{zceV-ڹv[Kgtƛ _]=f<뼟~gO}3ߝf_<ҲLVPU2ELQRVˊ(QʊUrYEJUV.+eKI{p?;+[n3j㈍agIOl> hdѿUTVk*_@3S@j@:Cp+P'RIkicxjWxQ`Emlq`Cdl7q4 ̴.bh&) bB8/ BLoufTofDuHګ3:zvu}˰Qo^U[V;9;v}{Ӿn^mҭ떼jų7,z kg=̿ѿѿѿɿTdUJUB,JRX./Q(ʊE"eiLY%JeR reiyq^q^f;߾w{E }Ciʑ87c[4A8ϴaf~NŧfvrKR=N x%\"t.@@^IRM gJ90ð:xb))0+N?!)N_ g0-(aDp#BQ҄F3z 5`[1ڣv ;}nmSSu~+Kv'k?qCǎwtߞ;ۺau[/߽iu+6,qM^^=_gk/|\^)).%rV )J *8zɋbUEYH*WȔҒԯSu3fțuh:n2S8O'Wi=@SA,V%.Gj|VN^ z%a90@}X%5AH\'c%-Nű, `e2h(K,I10hpEIƊSAKтRF0#% Vd% Bguf\cDztPi^k Z{Al?T״T j;[?-/{L'=vs'N8pxwvn9]oݱq͞Mk^xӊo,a%hߟw^Te*mTVɊBTYZ$+/-+*0*fdfde2rҳ󲊊d MQg-$je TqC33NA 4NҴ&թpݛm:lLWI vC1}SFOD.rXEp1RkZRIݐσy4҃T,ҋa. Sj` hdFo(;G+iU/` փ8A4 ;=nm}Ej({UZўZ{S[>ʹsN'9x'O?vS9g;m߲cn]j㒅]pҙy?f?W}>[^P*Zeee2yHYW*9Ve2y]4$8/+('87(;$('+W77uij^OX,M , .p hdGJt{7qÖ?v|Ov.BD'uzߓȳ F8K<|G34B h&.8ۃ,B2(b4/iRFś#5a>huH C~c瀹mܭmlW7tkk*;K~OooII\pҥ^M~9)򅤋ΞO8vS߷]wm۵-kyͷV,_p9dz_W<B9XQZPYPWYP_ZZ(*-.-(&ƶBEIX)+䪲"Y~na^nqff~znQIymKK`ߠnhlQC``l6h =lmTve6ί"߽֯|?~˗?zׯ^~))K&&>sc8wnڸs֬ذtΚy/-/य़ ?܌l܌ܼ̼œœœ)ǔ yQ8DQPVՕ(UbE^nqvf~jJNN^\;<7,V3ZQΑIۧg:18oڹ/.Q2Gp 8᡺ vw 5o|SOYtz: L-Rg9,/$EO5ie`q$83‰A.EP̂f 9`% 0i0!֯G{uhՀ4z GM}EY|N%x͋ONuI7.^\|ʅWoLvkg/]8uLBB‰#sygo߰l9̝?Y/nvJVnZnAVaNznaNaQnanFnvZVaN~^fnNz.'? NERUT* Jr3sKdJyBV%+PkJ Jss23RdddM-Fތh e0q$(FCX1"K ==&/pi$Vb*DO" g#=.;Kݐp2 "]4qQ Aq HMuF3FxoR31j3Czd@pL [m}^mC5̓e]%]J[𷷫_?uĩ+^?w[n]kݸW?~[޻~߻v3I玟3f ,Q{NFIp.Q cE1 Ilp<@Lz(P'O'4h~L<$ɋ;#,<3+Zjqt+?JY ʊ,hF0eRz <0O f‡ ZO j>M<n}sCmXԣj?)Sud5}gS~wNÇ?| tI ߿t񽫗߻~w+GW\x$%M:sdӧ8woڼq6Zf{٩-efg=LH 35=+53/377#'? | ?03#/==7%57=0',#8#(-%;; ' + ^fݬO?OW_gW)jڻ`5VXq9"X(FN*GÈm,ccf60=7ᙩoKGWu@^{%fJg)I&R+V E^:#F{a6L`1ƈx4a@H4i`C|@ ?k= N*M-=Uʶ̂/2_sm?v;g=yӇ;|#g>w"ґcIN_>}/޼ލK\Ku7/{ j .K8{ةΞ{ݻnolXreփ;iYS3 sedeYbE^VazZ{ifܻYQQY r7O}E]-ڡNk1-f3+B V C鲑 x(HA$l5dx/-OΥt)%πkRVrSJ3jJ*ROӓjI{øW[ B.P F\f0A1ڌHgq#=/Jnԙ IT0"ZOk!s琹5m|ܮnQW5U vTw(ZZ_$+{vܿG8upɣo}ux9}Lx睓O&9{ g^JJ|fRҵ7$߼y[~!K7_I<}1S=p#}oૻiw$2geg eyY.蘅E9Rgˀ'E9eY2|y?~ﳯ~qrJM+HIz?ݬ/?+ǎLH8 C6&b6"V3Sp3FX=0  $R԰z@jM6OиHߒE_&*NBˈ(8(+-MH"e'z37S.##4Fb@ A6z`6uY:M^C]MjTkJrTm_e}o2]ݮ=I;vٱbtb&SՌf M`" (G(ZtEDjL䰙6CZzl^ ' 6dZ .}m_QWR%*w/l$O}|wo/>.no{Z;Ё?șGϜ8q>!!ijg/%ttSgN''tʅko\_prҙĤg?q"p^_K}?Njʝ윴윴܂cyyYyYywS}uҾNKv7=NZڽ_e^UV 53Ow>o/8u]{wdJ|WyP𨦮Khfl2"f0 f4J Lcifz;dXCIJDQ$G M%}@dV$$heG!AHWQ4)DpEIa'բMoVRgRc&Jc&Eh䠉mрpx {!=dj3t:5u>EUw%Eyf_}i_|Dm7uώ};ܻ{о>|cga=v̙3Opϝ9}ܙ ^pN_8{BK]<6J/_Nz╋KJi)*>;)@^<#6\&@V:˲b4 a+᥼2# ,__$ɖ^pH$˖–aX{O@O33sw133dUeUVs53OO43U54ÌGVϼ]'U?8w=7\aO}7_.o>u$.Shg|8N?cwV<K%skK{s{uW߲9VD;j\q~yeIEiQY9cUu%Ս5 M---6*_m8\7 ;X,eTaH$<Miouwɝ*E1d&L9,Kpx\{v`q`x#!w( u8þ@Fa$ G|Q#B7 #'{{ݮt͠b@T%H+~fg{[]\Q^mz?ҿ8p{'y>?K]&ɻt&s_me |~~9~(/3SS>#)]?ߧnjFLS/[§/iԷk[_}ʱ/gTn?o$3|y,cs,x~M>ڕxS˱fj3vv^9HnϬ,-gw%82o&%?0':1]],πLc;LtupXJ[+!3(l£94#y2O(L|NP!r. => E4yi m+|' k.G٬~֩ _EÐ~~ܷ?g-}]_P^SNKT^[y8y|8?OM*ys}us~ !"#zc?O_o~O_ܑfi_^TW/-gR7_Ӏ\T9-1"nEss)q!WO@.GtØCnvv'~KǮVRK~jtdhb!6awjkhb7طftMjx:"' XIuUiMSmscMSK}k[cw[3ю ER2@gY 2T\70hģoh4"r.+`9$"WHywBPBX7 yaߋ8C_ F=1xAgc;` 8b"va3Pm4,,o~{cޛKsK몪+*;h,vKOgWWM"yJ^|BgϧKǓ!j]ޡc;~ju/i|vxr-6|816<{?\ , we Jsr *K**3準ƚ準ֆ6|Wӎ'dL0$ɤ ]D&NQb7!3F#3iDP9bX˄ P4"#&F {!w( ޠu0wCj#PO_/ ]AAh/p9ċ+l\FNePU, 7y_{] ,\˓y:MnST>i(no>>=Wx!#z}|@W.Pp.ʼr{|n_c/4{A5"R7XgtlQj?_\y-R#NnQjůcW۱~re'qt~xv%f&w{}wdEUQ}޽}[_RTRQ\PTWR݊jc:.2@#aTMc3(T.a04:De4Il*J'9t2x, ]*bPu A @^2rC|^n:nw. E|Q]6 b6,Fԙv8s<Έ걚Tb-twe-z]mYʂҺꢢvM\_ևA,?>?Lޝ_$R7#Zoon_ QXg 3j4e/ [X :5}R_pi_Or,ħ:k}~j=&?PS8cv/39n;vs|u!T1X WDr@I2E:\mQmF"à%? 6f7@~qwpBވ9^Yd4X6zW z\!bPY,ZB!ua+*rK{S]*?*?"7]veN^uvvy~aUI Kz}[>m_%o/o/o/]2uLݧWW׏7O7h}C+O2Te)#Jw/o^]lMhKKW_ՋRes)}~N\Չ[/6ZiɧX80>d8w'׻Gvį6SR|z1>>w04u3^y'^٭4:XV]QW^WT\^Wm'bZȄ:æ$I K'D\H&VĮڕrpbxtpb, 9IL PCZ] P类}w_7.}en3ob*:e=rAk>0CIH>ƓEO<Ш*S?G+Tb魣^bjurelfdt96Y<?" s0j !<%$7 u J rܬ+jVD-oQj]0(kQϬ~ azФՊ5˫ ТzvX'~dRYd#ŤM= fluZMvAКTjqC#>0;Havx>7=!,AoA`]/E}drQmщAO%ݘʼ윟9 ߼*}υo*OEE%uMX&Slپn"qwyx|H&ӏC"~!T!uLH__ ͋tI^?P L(4}>gZO맯/3Yn\W/SωuzL?9&I8,Nx2]oŮ+;˅aAtf7:\_Y 8zO?l!PUZOEj== jHM ) 5̈6gcYzWU.9r.]r O_n$aFTի0nm{փAhТWrF4&@M:}6 rZ-e9]Zv h"bs;`kz@m)Z eDtNwcScYiy_s,`YSMqQ]IqmQqkuUCeeGK'(抜&h*ܿ:3|{uxqpߜݟ]]$..SeH^=&hM^=7<'25#GO WQ:VC)vnE e ey2s@]ɧ bwueT uPwnǷGWŭӹ~pr=Egh? "1qʩth'iz!qsƧ|3\x. g's(\Belze:T-v@ u3`1ifj4l:2ۍlljQ5E1tԪ@#`ʴ'[;*+s}%Y?e{_/~sIr4\YXQQ_ZRU^So漣"e }=S>n%Џ6NO/nO/n片ˇyz|"y*S2FDW"B SgY 5KOR_xung7;hzv'~ylӫ{zmtntSlclhhp0:Z.#%9u 9n˴8ŐcHXWz^rԺ/GmKRԶ4/GmBJĶEkQZԲ6i5[ kףƍj5oעhgв5mTh*  .GGcٞ񇞣ǞA%0|IA Z:͠52F)Al|lZ^ZI-h`Pg2 `2 ު+El.[[So~}[WSSUS~얪ʖڢƲ׭5ULSs{s%FYp8vKR'ױq YiEI2Y=$^nezvwx_{7̓~z}re|qlnǣÁþȶh>ڼ3 Vbvi&Yvί&]~݌G=Vϸqƭq>M9/2ahgZVæEn)d\ W"yǼvug?b޸`|/?G'O'> LG㳡`ŧNm4jXPԀl0bgfR(uvanޢV2 PUJZediV3bC3lm&I+W TRcccq~iΛrꋲ[+ޕdPUϿ/~]W\P_ZT^VSSSUUSU]onn'5׷V`[Z;0$" #&kr|qt}7=HcM&~.n/'gh;{DkݣKܟft4uz:N>b5\'cY&z'7{q;G׻l+ɕ凵s'K G؞pYGzVi9z|folt| N:TٔS1x1j Q;䣰d $lQN:5N݌[?R4snG;EAp%j^ﵮF}Axg8vAxwȾ;؛pOzb3ét86OG3=ޣپu4<Nǜ^hɤ_̤jdq^wzQ!ni 6،fZVѪיe2\(FڨR hF \k9! iOu֕懊wyo˳~(~C*߷TU4j(l)`mmbKݒ:r^ّ)obl~|ubc'qpK҇'7'G7G7m6~vw|v g2I2$~AFn^ngdF,zW[G~w+[ɏskgS'Kbldhp(23stlڢKH`GTH:|Dt^(̒^`*#rQ V$3-#oQZ0Oڕn,:ia4iD|1dQ6urBN3`f ЫzѨ5Y@ԙdӨ@TQ%"TVu2V.rNk04!BVKA Gv՗~ۢw?T復yPSWMmk חk,k*鮭ķ4[mԎVl]XEoc<;2 ~\۝Z8Y=^ܸXL\n__bW㫃_e c㫣ÓÓ۽5ʨ㯷Rͣ!@]?H]&[s3ks+''Xt 4o#HߪceL:RN!4BZTpZA^|ЬTCvUgPcEC$T68S8,ErΫ]>KarԺm+= 5h?u ;[Cascuo 9Vl=u}^Į3XZJ 4"Ae4 jJ% O)RNKTzdЛjLK[ڻX=[ݽ8Lw/[ݣQj'b(9J۱~je/vZ>LWvk;˕͋O['K[k+gs'N>G}3ӻё]G*2n .JǤ47~V Pŗ|lP!([d,i*_' ~"*z,AcY$ J:I ڨYk5]9(>`>hXCs>ǐy!lY"K=ǐSԲ,>Z5Y¶~'0:X<mwfxb,; x=@ub0 N(B51Jq2@-B)+dqB\ k ZU|\pERqX"P(bX" 'cj U)rrX) ^6kS-pn *LU2UrFnkǼ0<M45IekG2{]tRmzMqؠ/0a7@v{쐊1ȕ@ Tr1xR@#i%RP$lL ՀN ZTe\=vq#k' v~1r:z~1|2r:r2[<^.ćCsG;}[э2 nU[T'4QaMgiT /&)LbqLc.6&`v+v)Xx925|GhZ>"X"BHW/siNȥB^D~61>89>OMNw=#-ٿf .AwA᝕:fqnAFCdK, DN&uupHD"y22&Q"x-Z>,ce<6lJ[+vE.Q zK+ ~4hV Q(|q(A*d (b YT@7}f suvɠt*A fȊb1k5VΪ V8}>G( 9AH aq@zZ(0 G!Ұ|*U#tGtK|/sX$@YB:Cr!_HF\sgWSmf2*OHSs]oZ Rx6V{_[YKj՗ "\C%PNi**o-TuV`kJ5 jK5AoW0&>,bZLmT$U~W~߼~(6dPJK='ݡ9w`&]-y#Mwdݳ#Zк+}2:1gO?yA'wc6,Ì4&b)v, C<g(6 Hd |2QH%8'ge,IVsz!QbK1I69q"ZS+ui%n$dBoDE zaϮYcLYzCauAaCV]<MD`鲃&  d3BlPvXtZ"X2H)7dFjԚ>_dĤalԚM 3pX'$r6WH˘HlT%l6AQiB:GpL:Ñ:j:j;mj`JtT}k$dQݭFvg<PNl"֑ 52jK R)Ubu帆 J[-NALK%Iµv%ߩ@R>$[e^&ϬC:A!ϮkF<^XgׅLQ6 * [ @`6 8=[n!!-zQViud./샍Mg nXmvQ#kRZU,`U&H w")_*H an !ӕ\/4ɕR:SLk";hi@B⋸dJI$ ىinl.onim(+)k(oa5\J8M?қް;iFrS5[S^Ŗ:|c[S-%ԗZkh-U*B] W[JlppM\B1 f!&eQVg?W6׭@PTUdExLP$ o*R+bDr8z]KD@PZ<^D$)T)"<vK b:.C$t1T$| M h 0c 1Y<+DVgT;5bZ2ĥ"Z + z! !pZƂ29 aHC\:T@hpNo1L:? DH$ Z : Z#9ݰ߃ CVͪ@iAIoӨJ)hP] X<#Y]I$,%4FSxZPe29[(2x"@r(%l'82D",*F#v3HXil+-*|:Oy!`2)ʯ3@j,m/.D6B|]^jV*-UZFw)tkdOJ9Qa(ں_O럾?/?ZRFU(Ö+tdXJ)f)lAwCEOchE#8|؍'bN,C a.*Ga,M#bDd:ơ3F_Y*L> endobj 13 0 obj <>>> /BBox [0 0 206 79] /Group <> /Filter /FlateDecode /Length 472>> stream xuSKn1 \JYW0d,(ĩ3 Ky:ALLl=B!ߟg.HezL0DV0nCe:4(@# >xk"OtчJ>e>hFJJUK-H%TOzegh}P8rb,h -gǔd&5<ୡF6{;bIFO3fQ]*iTjBjWs{r/#hee25Ws酠9mikrQV釆6˗mHrj endstream endobj 15 0 obj <> endobj 16 0 obj <> endobj 17 0 obj <> endobj 18 0 obj <> endobj 19 0 obj <> endobj 20 0 obj <> stream x @IYW6 kхiLmk.<ɀha&*]{3=j ;{Rxl0 j)rVh4t=י[DJ`G}<"<(3&c̯99E'T%NΕOۅw;V1iF5tH]tIl{Syr| endstream endobj 21 0 obj <> stream xiTWSN㴵SjkGq,REEdM @$!}C HB›Ȟ'XQjۃ̴Zf+HV !!9s:9~97Wǿp{ҩ"xt^p_gҜEĭk^ 8le@z #KCL& Jmj.GXzbbr8>>t::asc3sZnpBTpvs௶y9rCCCw 555H8s΍ ^QfI/A%)".Zv\z v\\D"ccc&)TWWG"۟ CgoY[W>c ݵdgC:\8§9?QD_S(~v ZwEa/=lfl]8uφy1-ʲjl 3RX~wo߾wߍ1SSS ԩSW2 Awo-mQH߲|&ΡmJh (̎@IRX/0a{s<_… Q"*ƫJـ]R9P(vxe^ Z09|T`?8PAa 7C5>qTotwNؾ{=v3_H8ּ:EX P h{D2|́_< 7:F _4}w۞zް~zb'xΥ5HX 33aI2`v1d|YyUwM;ҡi :nuscSFn9fDt&1dZcu>v/iuWv48njxxIaU ԭУf~sR" ǝ <)P= 㐒{uʏuC뾦y|GkuA֦d`$0CSJ|uJ=Ӡ|?j/ ;CM=?Zkm: Vl F=֪Os.y+YJR( *N%ūD'FY ({Qv 7HO eo>5]ͳUqFd`2 ѽu"\C+):.Ӌm|LUI罩S1Jj\]oUPJaؤ~{c($\y65Ue B -/9ɌèD,+(86}&egpW%㒬JYk&}sF37/|C#oMlb dSmN#—tR@OCU& -\&[LTr@jS16jv6|pD*1&.\bGumrSHГK}bZ+`baڤGmU۪$mUw%׭`9ffy^̈́#sz#``fGh`W)$9v[Nka"rqq>Cp n)Mșas7jn(03=ph -$tI)^)KBnXhcrOXfGA;fuH\; |C7NMOGi6UHQP{NO5S\|TN9Q9bwJ.!&6K'w\ѿ; {MUnd n+!ht?15^O%=2*Jz-zGL{20=;akfӟn2.UMB*P9Ģ&z{䤣Uv`P,rȵByH?;>fiG,\KPa݂rmbZh;MJqb|U xd@ҪSP049p$f~h(qiE. "@TqiSbJvܝwG"P$<Zh%j1z/7Z"@mnJjX8hӇ/{05 }p 83q_CCH#@Jp3،*1bJX &&إ޻bg=)jYn%H% ^GkEZ2\G.k:@6 lSУH܁EfK*|A=pPnEZ5pzK3s!mEJ&0J%iJbn~yKJmK h%NJmu؅ @؜z|'CtDRՄ~YW((^ܪm3G#k?Ĭ%EiļҷRPbi$.2G1Xl'~xvᅵ룗,Y`amoR ɅICqe6nĦn0;ԓK[HS]v}'Yv$** c6=x+YEDh ^.dJ3#,T>P?nK,HI71?šKk_|OC;v+am',vIϤ3l2᤭[,{ad&$'?r2iOG?/ي,_,e׭& 调 v$#)3aSj3K!'~7o}?e+腏-DŬ^ǭ]yEkʌm3c7bߥ> endobj 23 0 obj <> endobj 24 0 obj <> /StructParent 100001>> endobj 25 0 obj <> /StructParent 100002>> endobj 26 0 obj <> /StructParent 100003>> endobj 27 0 obj <> /StructParent 100004>> endobj 28 0 obj <> /StructParent 100005>> endobj 29 0 obj <> /StructParent 100006>> endobj 30 0 obj <> /StructParent 100007>> endobj 31 0 obj <> /StructParent 100008>> endobj 32 0 obj <> /StructParent 100009>> endobj 33 0 obj <> /StructParent 100010>> endobj 34 0 obj <> /StructParent 100011>> endobj 35 0 obj <> /StructParent 100012>> endobj 36 0 obj <> /StructParent 100013>> endobj 37 0 obj <> /StructParent 100014>> endobj 38 0 obj <> /StructParent 100015>> endobj 39 0 obj <> endobj 40 0 obj <> /StructParent 100017>> endobj 41 0 obj <> /StructParent 100018>> endobj 42 0 obj <> /StructParent 100019>> endobj 43 0 obj <> /StructParent 100020>> endobj 44 0 obj <> /StructParent 100021>> endobj 45 0 obj <> /StructParent 100022>> endobj 46 0 obj <> /StructParent 100023>> endobj 47 0 obj <> /StructParent 100024>> endobj 48 0 obj <> /StructParent 100025>> endobj 49 0 obj <> /StructParent 100026>> endobj 50 0 obj <> /StructParent 100027>> endobj 51 0 obj <> /StructParent 100028>> endobj 52 0 obj <> /StructParent 100029>> endobj 53 0 obj <> /StructParent 100030>> endobj 54 0 obj <> /StructParent 100031>> endobj 55 0 obj <> /StructParent 100032>> endobj 56 0 obj <> /StructParent 100033>> endobj 57 0 obj <> endobj 58 0 obj <> /StructParent 100035>> endobj 59 0 obj <> /StructParent 100036>> endobj 60 0 obj <> /StructParent 100037>> endobj 61 0 obj <> /StructParent 100038>> endobj 62 0 obj <> endobj 63 0 obj <> /StructParent 100040>> endobj 64 0 obj <> /StructParent 100041>> endobj 65 0 obj <> endobj 66 0 obj <> /StructParent 100043>> endobj 67 0 obj <> endobj 68 0 obj <> /StructParent 100045>> endobj 69 0 obj <> endobj 70 0 obj <> /StructParent 100047>> endobj 71 0 obj <> stream x[&m%E>7T0q ґeC߫iw_f\HEeWwwsSק/EݭszRUr׻&pxHO_/z?O )E%y\KZ=ZGO U/˟unb_h,SUd\:Yۻ¿w|y?J?~o~#\m{-?}J)ՑRM)ՒR*)՞R՞Yk?ǟ^/di-ڬ uTBGs{tԝ5ɷJKRە? rw_ussǤvSJUzO웺wT# #_v'mc$~藧9#g9wrKg-%) }Ӂuwr%Ϸ C]y?{?̽+vϮ>rr-)}Ǽy29F(k}˝(xܩ͢W$I,>)g0[)'1LJ25+4> Y/#IzX2ʝrݮir6;FSQv"xGGQ{woƶ 8DwL^#KYN rO`DAfKE ,sUrzk-,9r8%5Ί-y>{ֻR)5Lty̩nM8s=wvrId/!c+%þ)nWw10¢p3lZJ+Ь4rxDNCX,*x[&!RA4>/]DG=+f+GaBLR CRgG='8U2I0+U1+e=|zaǕs7p-j*Q_6iYw h bFUFN[dQ}|3*Ehtq3ø]YLXt5ȡ/5G\Ú;^g "fJSVóp')>s_^6sܒԫջ4lwoIuؤrx\qS_V۫̔k5evMY52Nɽ{}ւ4'o $=wjթӋzBݫE!5u#ImٵnZtYsN;91|pP@X@=8hMnKDef9ckw-#5RkqpjDžψ:{5gg{D(mܞQj-t+ǮWJ(+O;{`QH#w..{lqrY 򷤕Ry/똕5<:FNZkzݩJ.3RYq+]zWjt^rݹ6-K]{PP;˝(NwKc:*6qMs|qNiZ |{ )Y%w Աy/wUeK٥dFŞ.ZDMby` hxz(PWEF]PتZUZ*Z2G2S:.ی%.SRQWO/zΜjW5Qݮe,Wg4@^̌ +:UU% GXH;~P'{`$gЊ @F0 c(@e'  ?W‡B#[C0P7 a8q88'8`\۬|w~1E|#R֣8|zR}yc̏y fPV{=I9{'npA5S LB Q=m1, hȠ6.= o%E ]QcΧ'PsӋw}v~jsJn;JhVׇijoA7 _fȗtǶG@@ʝKky&-gܰI+2ЩS8cVri4![n!{5SgR@ũ}n]Ng!(cHWRG jcBaɩYڠpn8E$Sܚ(=ՊM&sv靰 HZ }) zP Ce*}akZgގzHڨJA3iCyݽȔlWIXjs :J^2(<ێf͹8c{޵fDv[67u{&d՛oz3ٙx`fCǟ,Cu?&`NM3'SJyZ-ɓn@>Y[d֌h{=4r=~317}8~(kW>=IGQETڙGٹg+ŭ(4\nJƝg ˊ@Sv{q`W~4}ؽRר Y<$wF;wEgsdx}ĺwAb϶E|<ߠς"sAs[G~z}MpO_knj6.-lTMh s0jvQof )h<--H/u3hKw=iA%Gq#q|;ܐUf08dO#`s%OwAHLh($1Gt~n*wϢ+L :ts uBܛ[7 -#g.jY+ԗ宥0-\+lٻ\g$Dg;ݤX`ǹi=5ҕmgTټ"&]6(6[ǿwv\c\h.>D>ajab)&aXԛ~,vɐުlG0ofUYx|.{Ҏ@+1i/ Ep;8s>@®%M!{J1]!܀t=+QFQ~ Ȯ5*,` lX6p*Β7\sDe9%jթw `ku-=c~UHI9:^-R%ޱfDT, h#k\Dmj^ۇ-wHlt҉T$X[[9:J.fS>uC(~7G5Q .P5cm\1ƺ2`%`Xj>֤#a:3INai˫OиT%;LKƙf @hfXJHk@#l0>@HQ_B8l*tʿ_,idڿ֧<8ةU 1uVeozS?=&踘%JЊ}΢a\=怟Ea[x]A[.luv.nZlwS Ԥ5d7@Eؚ0Oxn6谏JDJ3X' :em ЭPjр+HW\-9yDyUCZئK8,Lkק*LZ5`*pks)o`GM1̓FeꜴ}H2/y$MG̈ɚA !R55uJy4[.wn8゙DnR"$=1ޜos9"Bb%@WڿrfNk :$Źmݚʩ4%⼊|TVit' x_nfq>2 \C9%viK ۇ-Cw3viX6=XnfӍ6wEb1}q:" CbY;N)Aw/(TҎ=}mIƮ -AYVL"kj,qtj>6 ^cOV`C SeoSVw2vb0#%nc ^Pֲ)&QL9&Xp $ /y%f ~T`/3[q}b1,M" < - |Ш[v][7 >azXr:y+s- i2da 㺛vsyjo1sb|69h3iݼ4}DF nˤ?9n^"F| ռRp܂5q风?]q.(+ݐ(_p Si13-',#kBjK\{4*,t<}` @Z ,w3'3ۼg逝+,#K:0RM?SlqVh8T/ leܵ2. ^H."쏝;C#W}fD)}jN\ >|޹G>:o{A4KL#ZA6hQb!C _ )_-ţ_N0Fl ǃ2WPp :h/qӃ&pöWoRTVn&K޳)`E:mpVԇispuvkM٭Ѷ{5ZpG(S}+'0evv>닿a:]s(gp~v9nisv;"7^׍s?fFnk Ér9ANxgQ`f%  ?D%:Gb;F%~O81|) l>}Rzo_$82vXzj(AG?4VO0’4Y{ߨ_4&;s,;U!:g.3 s7R5ۆs?;>I 5}j( NjPݩRG,Ά N[{rNeH t[kH[ey;{ǼoP׻OY>/z(=3G>&Fξ4h?)ۛm6۬ƥ #J.ӊӉmY!؜~DwQI8LNwmn.%kcl\{7gQ!n@F7&LZezբzv:GQx}~.y2^)R`rWzKR:U,k]Q!6`tX85l~8_iH)AhT[R-%ڍy-ܭhP|>hٿ7y}hP6䶞p"zSn4-n8"לqIpsHV$w({sb!&aS?A5zڲy+ bA;ux@{ߥ51O,0Я{=c/sپR:P&l[:T$V3M)c7vς"^9.gױ݇W&[V].B٤i },t/ b@/U b/"kS_;.ERc?${DK3fkw8[@dk}}%[=5ݍ'[wW{j_\v0U:W4_A†8T=*ďl#x~>ɛ$$#KTė5P[5(σo}Zj|< )5Ɠ@ė򤾄9%-ۇZg΁Ǡ|? >M+YR7-Z`H%k‚V @q߳>D)_q7 ] ޤ?=  )LDQpGoᬗՙS4*nM8v8 oZ*Imn9,6R0}o=QyãReWMv3q0'1Չ ym]g}s8AiLkzEEv:[WDZƾ=NwbSoPgXG6w^;8;G(6:'n;1 h{۝ 1ү3(!Qu([G1{Y;t<x!‡g t<8yr'w<9g#xb:,7Єt=>btq`QpT9d9x~)7`{bn{g Dgb44MtP@طMjit"6fV (V+iU0Ai/neܵK{j@SFQ!V sX i*QV(:O=)gv*#S@fvrgv*~D;D* .Q9v4̍.R{-_j !U!R*SlEsC=Tpo]QN {F"pZgoPn΍y&L3;ʦ3FP:)9e9f7]) T\" z< 6;k1' XZ s#Dĕuk\pȂ?8؝ ƀػکQooVs7-<2e?6_⃖~`ZM;}h/c7h9fdC_5Iɝ8iiSL\;cYsmbǸ-OFD$daNMozeI(-sm%1BZRY҉#ALVq\qS>yktD{:<'%i]R G`g"&<ÕB cd3@-a@є( zAx4&D!D#b\.ׁ9{]J674#T`GjQL0OE}{#>TY wiۃAJyZd]HS9 4Z*Š{cK6tE댝IIuaw a =ra$\@W:iAd:١$p Ù"̤,}/U#B\,wxa%#NA CU@spaID ]-%#/N~ d8rp:z("e K#/S{4 ~*/ W|+e˜K:Hy!'A7C ?VҟȩލW95><]e?pEwzTUulKc{ gN4 &Xؚ-7"@GY)ȓ؈^¸-sQ}߭h@eڴ-:9+B[ˍ l%@*&ւs85L  &{f 3G-sz \b#}p\͑]H|gcevF]\.%wYu̹upx 8{^? Yg 欎qfe4LA.gB˞x^إq邘 -كmb;81ⷠ͝QWHmFYJq<h3Vj,ĐT;T2"ꗙ "M-w}Lp>VR{X;\w٘wǕ!j&;% @2@Yi5K3woyeor9ܛ X;G y ucٝ~yt.Ds2Gs{k7x8$(b]Bd#>HsD )o~QA8ȩ1ANY_ǃ3 RN8Ha,K` s!ղRs9H UUUʝ(:wC-ZH tdDM ̾ +l2nAdV&X3,\1B|M@a`C` twd`D㤯r< t ݃j c$e/riů>yE xzXoOXD%zo$P%TUWPM N{.EahNwwO0W A=zv&>9^_qQ6Qq< rj{ o.qTXG|bϫ[2vM`U12nyZo`L*y>+"j eC >/7^,U.}{1ŋ0+1xuy_Z/G0uP@{mTIB$Ќ3^1DP:5kJ/De(.{GL86Q#!Ύ]RolxMok 5yw{Gj{;D)e3Cy=F!F3 Bޒ\x#08 &]z6A3.L8gRM{H:.Qrn663(]q7IjF V^.bJ1Uf= յ")!pc)ؕa.z]1ӭr\"4:iZnYXϋ4 v}GIϦgUb'ӈC)tI-QG'cLmg gQ2d ]&v}.9݇a<# B{M06 t3>|yLt`j+&dǕ+"\>/aTW! \\dIbSx9 J;STN&ЌBW,;0HS=DUZp3.F=`FB}b`n!|(+1dp|>PQG[<,j:U+^90,T 3fہEi2c$N3\"ȫK1SO# ހsxb2#Y:лqܭ:1`[RKr~3(۱Y#=AƬaYpE nq6/&xVyi19/A *.tEX\RB!QAQ+2jl)Ux *}TkF 8ܒ$.̻O7  \nVU'\1`uG17ӧEn}ߣȩ ?u1z %z+P`N=_θ ef>, LZlzaB '>*.Vq`ln] x`G`!"͓Io w/g -U&L(^XSH뙢CK](=>~w4ijLbwΉ>9ƣ"= ;AE3 L;zޣ]r\#HYd!g ַ0KJ^ miKN[wKW6Ywa #ny=WwO;Q`]ō¹_25s0{^OLuEb{y1n;r 3l{ajC֔-Ulqw3\T 0=!촢ve+`{xw KZ'0x`zoKzaCO4oER@*gۀI]/-LSpF&`jf2}/* [}Y-1Y2GGZ[zv{;3M3!"Lȃ{A0*[bD(֋5?+yx]\{[|bm[vB{ oǐτ9'LMn;t|9{?7&=Zcl3|HU7MbxLpNb9$b6 q=Sp2C85uEjBDgIV]-O@=gz0Jx"K9l]Y{gMg\GN w b5v0dlEYhL*)-IW%]Q3;E [# n&H& 'rϜyܝW$ 3pV{B)Y2t2Z\п9h d/ 1V^b~ '2h(2MFoLs-orp3Bg x[`geUr`!o@[ x[gʌǜB٢',Pd 8-5&6Pzb?3ʥM30_71I6UBmWUۼoo\v۸d:ؑɐيMJ/w\$XHoolj̔օՅEiDJ:)e:> ")@NR)KSK ˟7`zBݫE! r~g$ഄ)XNaO-+?5ϊa}pp%8Wf06U]}l8="u>X#h;{D(mܞ0ףZW]'zecHXէHȝ=(q=8A`Kż:[NfUx"3kC;Ֆz }ThԉwM&2D[Szϋ|Glu\#9JܧኤZ-:,K$@(ۻ@J=س6#nG lD!ΙVd0nsIZGqƃ4\M3fprZPjU4']GF2]DX}y`dTDuJTEol|uX2Z #H@sֱ d 2 ޅLbbAW‡B#[C;z&A Hs9Ff哿{Få#R֣8؞R}d.{.1?&PAqZ cfn&=O=ߟ̏HO10zzb4YPoG=AАAmF]z+8Jz@Fsyu}v~jsJn;JhVׇijoA7 _fȗtǶG@@ʝKky詟[/P6B10_ W Kh-7*uq7 Hڙ.4cv5[b @4xs .S2X0&4BzGt&DbC5DS81>f?p˷ 3~+毉 F#}0CeR6P saJj[Ģ p '{aJj^8@ZvpQh"/o#f͹8c{޵fD1ћ:FNoBY֥fPmف?_9:ml?d/p8Tgc< Tܤ}{q1aO.n:9\F)9i$Ov:#&/yD{=4r=~317}zy脣( eڕ](tU^Apԟ{R܊2*OS-N{]%SO#a硘]nh81{nQ[v8ӑhٹl oXn1[>oPg Z~?ug+9+ zEDꂶ+ER|oo] m 3vMKWVZU T`@(Xa R]G4mP;B~ , Wc\c8$e"7 _ -V'p )W! i`w{N EhZe^;'/Ϗ32}4|BW(o@O@xF~KIwoZ ]ɦA؉H.BL`s5;#0U6g`އ="@q觼:VE ɓPzzI!SZ4᱘_;୑emh w5twt~!^ib ;AI9/As=oť4{~#R#'O7'O.ꇫho\y.B oa[+ _6^ \{e8nm'䔐<^BOrc]rZ3yȶn]'07-ء>C>>$2:*cd3fXԙju:#4+*}ءw&IjΝ21ZC,Gi6a2 X#Ԇ01Dp"V,^BIF&B0K{Ü`VTL"B4JArn?Ama֙e>hպd[3B !EDn!|jbC$$a^U3f&xI 7-sοV8ѭ{NM2B/waw%k[wYfG=D ED^*3wG( v `HDkZ2A9&LAï,ޣ4H OQ֙G.> #*2ΈIJ;,܇\()aAr) YX4l @Ζ.enFnFCHۛw>xT+?G} 1jb=5hZ*!F2jẆtɔh*4oUhZ:?ThZ:tƓW]N:]̹qiZԕ@+)\D\cŒ7%ԍXf.=T:䇎9҃=vi FjEcI@kIa79!($\.'睯9TC1sIFp=9ڹ8Y-:BUa<>^tU9BȈ9KH:}2],f^u3J=Sl؞;9 9[{6߈P ~;yz?̨ Jk'kW3QCGSȵgݽe46HϥX)ˆhغl*+H" ^Fhhؖv+FHs+/ Ql1N%~`[a.#{Lu&#Y ٛF'̱HHXM" K` F$JN9m#p"}3EHwkBc[^D[XEv_"B"c .(},-d|(jW!xc=1;"EUA:iǝqK QVX7HUVl'5ΣGAyPTn{BXV/fWcW ŗa ՖqOhe&.Teya. BD uE`Hl5XAfQe&BC.. 9VXŦ4*]bTyo@t I%KlwL~N'5N0gY*4J{R|Jsμ;%z/C wEEc>Onm*˪`TK$~D_J0TwC<їuuFKvhg봬_eʳ+W)+>~Sae5̲~9#9V/#/V֯jMɐ?mze!\J;ݒM'һ2OVRV֭;~ƲT!vƝʞ?{:]X3_ =n޻"p"_VV} {3L_ (҅!L$ѡ!?˽0'H#AJV]0w"˹K)\B\l1m;VȷqڦZܱQ˔y>[q13۹3a]"ͽkDƐE&g)W^dKS`sJLtQp߲VH: #\MU:}&LVKVa= 5M@6`> =`D77b0O4ufKCN&R'HZDh@n<4c}dX gJ+)>5-z;@:; *C}z 4kT1QY"K_T > p`O6y2kl6kS~ZX❡nrYlpnPZV 앲Js+!U>2:pu(z$E B ddCڨQR^bX5fN&e&D}7h"nFNPf<'x!ϛȴЂXs[?fo.8axe/.W>;iQד̴eǩ4|;*s[vHSCeQ^J-k8 W,Hxs0x\f_e)`JF(Mv1_鋷"PIA'O, 1|6v_y{"a3~ۗU}ʖݧԽ݆ 0ܮh\XC?XtsG/N۹5|RChXZW? Ņ%31\?8{_8{gS)^*]Ph.}uexKUiBY VjyqSٛ?yVpOxAc1C.l&V y@󤒑3dPB^:?2{(~үX Rf9>L"ټe 1J}Dc:BQdW~z2k ЌW3CviO4<(F+cʌYTVfl+ݕsf4$!P3orm(Ciυf!Jac|Sy}eʡiz,g w-L9cmЪxydd'ɇ!t#M]:t*ga 8֊#IaYB аV$>>AZS)qڅ5اhX}2EM_-}J6VZ/0!* .nU1+ف4j!P:;ɊߐLFTl蠍ެ kHY+/E^bxVz^|qEy-!bKhrHp( a65b$xy)Kg|Cpٯ)^o>'C,=Y-Aҕ% pԩ[؇ b;XRX0#tS hӟszǫ6\Mm "!㐢ꄖ߉/SclB2HŮ~Պ0mZck".Ӈʿwv\Pc\.g>G"-|69|9u}zF><> |H]x(RTzpm^Dظ_yԮqzWK ??.?|C^:SKZZ<ñ;`jZV] W6iT*|HEQ]a0ZDKi1-0Z"H*V} ;8.2brfiO:763}s_{K59G1d$b :|#eL٭g1ƒ8L gJ/)̈N3umL]VjbRni@1%< u_;邙x#^mX\ 1!حn̊,L/y=vn>t /w1cbVҤ+pZ|2+/;/L(yy'mkVQH !xޣw@Ss.R%Ԯ{Y|>Ca:'-ەd04WwzS*.0Z<-@;#ݭ02o;y,ēYhC\`Frb AR2n\;6zJ$ PH/ ǁG jֻgbK& H?] qAd\˪ wV}f\録w$?2Fe ]F x!DcAA[h -wecipP<}HQ%>EM--;(BQGn}+BWi7E; ]%21&BU Rt;Nanç_|t""o6w'{} .N<> y:x;HZ'`4=HR}g` ʔX*ʌqm{%M  O |cyW]XD`PyoSn׼(7EӪZ]74꽱 uIBPuo,ebݼM(h]pPRi"Pև…vQX+x; z{Y#F!>HCM 89)(<(Q6f:x}yesБ!T\N (c YU?In»i`zkљ-,1P:ȲL<\Y/ hx4~R}~3VC7X9 ƬZ-lpk0g%q$1sZc*6&\Rۙ>CyTpZXm6x"]Q[1\Wb0M,-~W/ux0@o7t+ԉK>B^)=X SP7rI+2O%keNn|BrL.$ցE\ba΅,*#*UXGi9p JHX:Vw 3h3/oz3ʩ' 0JFc0xbt5$ڗҙn߶e±yPr|'I |^E?,b}%k=ko"XlBak(7T{ooXfj;L }}"s;HL*uԯt,T Xzw&i_AGV0AڒI+U,rqgv` _I[׋_SoQC%߱֍A)k5sw)_b5uKtSxed,U _/Oށ,vkiA4g/T[0}{źtͰ$i-i72.#yҽ1V[N㭾 J[MJ^-!|P+&$l q< ~=j N@np0@ٶ uiAMoژS+pR,`[Rdm,k|2|eN-7`63Poݵ%lQ"`]&Ŗ?9̽U,Qzbg @ b#iGElAQ h`p *,2>p%VYZ5͹FD)XT=*hVKڣ?27~<cI<4O)!s഍q{fё1ٚonٜHo CP~Bf>IDB>Cޡ/D'@"4-cIR)MO .z[ZUV&|1Cl#2pUlN|[^ZB#EGll>͆2[Fc K R൯{Zb ـf6*-7TKq;>#hPp|~غ% 7.~j%jf[pqٓ}yH0xƳ(RnT21.y#"F0X yh-/(R|ll6d{;6Fuߑn8-Aq"lq[/dM ҵLD@[gZzWV.QtYMZGVM3Y_I2lwNo,ăC>pco9~No2R27(`1x 0i2o]pc*!1 < qoE^-,@+2Z|JXK@VZ{^RQ.RG^h'1WxyX/;D􎭉!a6Ƃxv$fYhY h5]*Hړ6 yfS!Au]Byc6/dl()ُ9dl:R l:yveޣEdsxѽLi)Mg/ydJ.*[DƹVJ96IE]$@ƩSshC5w91m3g[JAjMUҢef}AHP%hu~xR+go_z?|3$.nsF\8Mᵸ%[vMط6Z#+ԯ2יlMgkR۲m+uo[-Ӭ\I懮PmE!? ܏0CM:c'#V=G.cOv5ܔW.fhl<'Kt9$nJtX(j7.9i'Xu~po_f_xѠKND̺UЫ놖D5y-dUv qRW6aa(gKp[8P8c(& + "]1%/R D;\SVjUGD!DAO(Wk\j}ʼn?&SnGX|_]Db~JhlLfvX@CZ̀Y$-,2&,oYfZhS,9{-V _ߠOǏl0H~9\Ih /EdǨ_Ev P3Z. k@x$ІY,ƍ>2y|Ȍ%2e΢ 8U,2Sl '-a=гtѺHxR|"`B]^l5=0e>s =Gr%>dX;^30"µ6f l a~ԚpD-a$_Jퟋ׈ʀDM4 bC]bkb"1-*1-wnb8w)ܮv-k]r-c q:\L/Ȅ)T:^puhjB cdyo+rYs5 F1~ഞǼplv1_:{D{ 8|O^Vp79>4ԕ˜E7wB6Ŗbu[2b[ӆ?]4:V3Vg(]_~J+Ndޤ2 BSȪA5Ju )e _rK+R%N1 oIsZh'q`@Э€`mF%Tz6 7Ci4s6 &]SY _#[oq.+"͐3FNwMyt&:Gn|riLueIپYS%UM L3@DLDVda9HGY;!kME|ǽeDs;\`KR Bf,Lj7v12[mRr#sl&dΒzMɳTΪf}'B .v\y }+x}C_'4{N3(NЋy%`{#L. b-G?qer.@n&p^8j8 +abGzf u4hGS <`}  x͏Sd2gQ>c1Ht@xJ`7% 㗐T L&|8zJKڀғ t_&uLu@C; KLX4DjK|ሷV?ڳUV1ب665is>b1H,HjY26^~ _}9 O5.'~OP@<;)nS}vx'T=ԣ7v1OLx/_l(&pۦ8!6K?T36EDj@r[en|)vkL$; xqlwH0Ee|:d9m\e#%F_B @ݏ]|GJE3bM+jXf+ll3)CL> Ml9SJz12g:{RrQa,Eڇϯw,'?DS5p2̸X{{J?)%YLvT-٪#475oҨB-=>9Tщd$ȗA%=~ \Ԅy?o>a;-á,YOڎJmsrQN)\24вw#V@K<E0b{%#ܒDmܒVM:&gY_Etd oo?qW^0O6#ol{y6-:J~O4!kfjJަq=e)CgH\T>gѪMtxiE:2>Z~Vt0(ZDakTÜѳn`L=B3OJmE?Y\gvd趧xKz^ ;{w;{w;{|9 ׼0XG?C*yi(-5p̗{bJt4-qOPu/4H<^h>RP:gN:uZ,VbVeUZ,ȗb^J}-PEʙRoX cJ]YRS,k6ԣVlSVlhO<ָiOO꣄RI9&WR,f""-+)2-XlkQ,vԛkXmbhkQk;kQk{E.>עk-*v\ syE=ע(jQ&1LK-jsuK4e?MtJ+ڷG(Zg",s \[~mɈun NZT`E-X?"K-j'_4﭅x/D5R{#>[j)[9,I!%,z!JaOhp%_ M+̫RM &:#nVs3*@u9fѥHhY_|!Ucy%0[F+SI\(*)ւki#yrȝWTY/T vK`Jʣv=oz-DMM_ `MƵ8S !;jA-1[fC5)uwP%#V>Kaj"C0vyN ŏI M/jr ^ sHad6&]! yKK]@ wv.Q~yʣ#A~Al;A A&LXv B= id0cg͘ua;ܨU?A]&QwYEq{ ABP7}c7co -uo [o 1r7-uA=Y !W0MUM1Aer^oA[?;b*& 759_>0rnq3 5iOWv^U|SS }MCYadL3ۼ5ӜBx¡^һ;_nrۿ{7w2THLa3sVp c w\?ZQg )PF'i#F^(8t)ۈ2쯾<9|w1mdl.fDGޏjeHg E<~ d~Z99`yGsw4gZyG{wA]& wТaO ϗK_|UzxQeOyO=/w9Uj-P6%= m_Kl$C> CoMNK̔#4ǰr\IY`[G+7lVug&J<ܟm> wG?߮1,0s HC'pfX.Krm1A6hOoJzJúJKMzN $Оq@C&B6\$!N(z$CS4AǨcTKбXȒH%dPR&i.3Ő둡c-XI*plu9RtR%E'"cO|)sp#7?~0}7㩄9:q'?y>jxl쟋׈3Gg]RtDbLgbtbS ^st\9odn's;u2ߛ%f&RbjH%]Xc+?)vIrR[ϒݲFΏHu5fV5Ҳb(xG& \5f^4qhH~{%qmPL$N,Is;\hYmr%G$ԞA|$@h^pAsS'W9sj+I50w91c.h +!90}̹uΙ8h4g9_tmBcG8?agqt?9 h \L\NE.<ʺU\Q12O(Ds̝yuƫCTyLd"ܻ$ɿ8I3 ]#Le/.{쥒^JzaH55D~G2J|^*]R/K =g/mڑGҦJ~d/ɀ,f\p %_GX!=i+K"*-XS*pd/mu9jz^5{ κ yd/bs1I_j~A1?"H+UHr9w ܥI{]T]?IKOǀAT=?b3ٖ;w ]bn}.{#WOFHź2%ˏ?Gs~dI#K|͏ٚVDs~$h3?W~$qG" xi'=BI34A$nHbG %qERFN$$k|NN4?\( Y;DsdM 5K$ YIs$h Y$H -:*&#3MMl.ln l d }ID&2,U6bɺ&T:=Ǖ^٬*)TWx÷CƘL؇;N!d;N!d;N!d;N!d;N!dHI ^BX/WKc'9ūlF`֥mN7|Őt,҇|@nJGg[2:1[%˴"sʓd\ϩ U$OxO}.4#v7stI$O㺴 \ƕՉwwI̿{qjDqvh  ֦"O+z懗;? ̂Jz}my3Zj|UQc.ۣ:O=m/?͉ܥ|<ms 8}@)$uZZp;kfp3i!wFَmtAm뽴('NWCz hH -ۤ6h^utQ|(س+rpQH)(]%T.w_!ņh7'G n#SH#%u!%<߲ƃl.Yv.Ug $pe34 wI7g-Eh[lBSQ 8凨C;":1$cIa:{紊(3h)sYLJG ,6$|Ҳ8!0$ 6;>Lzi|;=ە؈7͋7m_r?%Y$+{뀹)k%HJɚO֖ :z_ֵm )ZNi{ŝً-Z}\DZy"qɜ{W{W{W{W4g5xZ|ۚ3KJf)Ox!jwqw~ܝwqw~ܝwqw~ܝwqd~\D"WWޡ 5˖RCsKT:rKk {͜R]!^JBL 0sͻxPXҦ}E`h3VIEp.1@@'&'m}7:11luIa6S' #k in-gj֪qJ~erpO%˙t6ҸVQ/h)аckcf$C˾qi{`k!ΓtQA(B-)TjϬP|=><=\{|Mcq~`fJa x=,%P]|sx@/t$%ڂu?/m*mm~B9kC,3'=¾=UʤCG=2/Ɇ8KGrVkjql3ɜ9Gz`}xEE~=W$⻱dWܖLdo6/IoIv NHK 1Γ\cQ:' 58:"@ȵ<(() #Orσԫ՜zB/[?=2əy 2s! Go)1FT].O:s5wki5Ćs6Sk薮OqW7b;SKd]3 t[CP{OsFVƯCmcaM[xZ :p:2i21w)q04aazZk/Aۛt~6 zy87ngƈ?m yK {eA40AKbKwC).cJE KyKKW ?_4|tDHI+à,܎E(%UJ7kT\~Ю=BC +ZZrT(%{RWpt1Fj5PuBsL{n1ފm.Ke\/_9];k}bnNǻ \|ຶ6RFy&lp#<Q&M6[xD\atI{"޼>7P~+{|0,< *}8c+|9˅71!Xp 8KXjZ"A뇘{K!yCqb y,n+o((ͮT*UzRߘ/Pqm|z_5c~%^@1.+Mm|(ڱ 96w= C)W |!>$aX% v#h%造'3-Y%%hpRc]A&ZE=[-ܯFV87f܎ꂬ6X^)LseGMEBJ9NӹrS#%@-+8 aNٷ /ύZL\l4*M( qn 2QXZu-Q3s%ʙ~)ba- E"A"dGT9H[UIo[*kI"ri휓W}X@ YHmTm626"N?EQowWك-I'.l3B\f8Ea-q[XM⸷o5@IwlUHX֫mO Hmj.{Tݯ}Im ʘ#W%Z#@/ Bj{F;:EpscDX9-6'䱉W,=籋qFD kz\ŎWɼ- GRd5;3KAcg5IcZg=:RT{ޥ#\k$6zL Ѱ^F6&ґ! h~&Ǐ73|`Fh>^\18&C,H|.MsJy;^A3F1gbJ$k+HQX_TYT-W>Aޮɨ۴d#a\ᔍZ;فG\._Juy?g[~q`ZFZW$Do-j7jō;J]GmmzX[k/D4*}< {\Ѱ(Nu_(edGEiRiM˥"唯R>2z\o#8[wq90? µMV4KZw#07ך\ɐ(u ~ȍ0j%i`|k{T}6[{pWGvp#wվ z,JpR!3^W=bu7\/JC\+՜ʈQMG<=ySvZ&)ZVT|kQAB%:_򬟫ר:ڀTqUj3ij[kR+KuKzI׆w-c4@ȇ-nFHJ^_ dWmO}ۿuA|4{ALO\]e5;JqJHsԋjmOp}vhóxyHz>zڨ^U*e=z,2q*}w;؜#[gy |#7!J} tOI&=ZǠыr{D-bX}#@r(D&[HDHd9L;^nK1еSZ󘽹ڃS+/*{QEZ=GŖիzUN4UCrN/F;ό˘btkQG ymgG,?!ѿ?^}p.̦̓ĄJ#״ L~5IM>>jU%<I[PҎӝ?l.N.P{s%;#JȰoS?uCp%;LsTJn܁؛gCpHAv{8j)7F|5 8#! a !T4Pp}>BD +<1VFwr)!5bQTb9|d79⊻n)xY?2>fuz) göeeY foYSjGC%աPs~Mu9ա)ա%T 䀧TTPG{E1,C5*a04ס"7.@ 4ZJ4z y8vO(ւ@{9\Ϲ>:s>6Uo]!~xݾɕ_֩-1n7ZZl&6ٍ M )%;jY)7]j0KvP<3=g0ǑPXP>APۑOi2 yvBdkSh5t^jJ/=;wY0EIh57>;kCt +l9<s‘0.l٧l8-+q&T[㷖j $;vy.DCLee[K.tQ 0,7WG6W{fgjF6wLHwHo@խ+UoJuqp>\D-ūj4첏$ETZ.>OEneҒ##u -Ibtc#mߌǕ$!Z7ӿ 49cBqCkRD?f;8y4xEe#WB_g]3!`apm0"G492|EU@U3{회jM[ma1HmX?OCbgAP5 ,Yu|FV aSB chTv꾕ZZϼ~.DGs Dov>潣9_ S; ϞC[Ejh`<#ipR,m~P$TFlkQQ6J;^ j-%^m( !4@kvL 9"Glֆ4^ ]@y56;~3}&V`@Ѫ48\U!UdH*~؁RB|]M+Q?=j;5i+L8p+(l!"R6O 34x`5i>VE q8NVCJg]I#`MeBh=eDA-5#߬^61A@-@giK"4B·tAsYzZ-%zr(|`h h@tE  "mhp\z@M iӻ/48?2K q7 ؐ3 !Y.b]B3ЙB6ҰJFVEi1 ‚HhvuX<<%FbEA\y"YQ9Ч+P+1xnjʈŊv@ m|"G(Gt,}*QHG,0 deA'sCo`tȢ"7¹ ۰~z.޼1'iLr=\I3PB]q [--424ӄ;izn=?ԭ4_y'=3~ D~+6|Oj{a!|T@M5!]6'X ie;á$L"S?$b?w"{<$ܞQ `;}:K~=B X)~K`{cth,3BjZt))oK)fzdO.su=Z qD ‘w, ^ dљ2! h\P,p (٧g$OH&"t=!dk|d3 hD2H&"`Q!/=<D`lDfvdEI&| {mb@T3pp6Zj:LHG@hB+whxJ3 ՄXp64ILMi d~VdRy#|@'|$ J3>hp  Z]]H V B@H5"'I׆{|EH ! g$^ j1@CtBhi D"eHH" g)?  6${$ ɆeI6|Hy>1q,6$$m@ L iXh $ Bi!$ND)H21$&H23$ODa"iWDۊ ]=c4V u FMC[FM+!Yn!8zY0ț[(O>%NnC?[_셧-8v7hc[OS9{os|Cy4=T 'a!xꙅl  q+[Uw { D .g7W4 1t +!7ـ(H|5/HB$ Ap0< `B$? yNWD"}Ȼ:!񇼫ĜZT. X WKEYh0/>ptx2j 7EmhcBD7@c0cgT`"' @P^zF#i 00,$ 23ףBFPQn%!fXe-I"0?Nx;E gՏ *$kIU;t%\8L)J}VWFѰD 5e2k3<T%AH0C2PM%se)JPEJѷSs_*l)/9a(z2y rN6񯙒;wD4 wbv ̕esbR̀ X|>m'I'~k* |lPE(_rDU:ukQD9<qJWm kUO6Bl{N| <>4ջ_ͭ<k6!/qpLsPaW=X=eyXL6 u$-Ezޏ6ǽ=/%ʋC<!FhJ̸:iK? \T1!ûYLIJ͌@`LKL]$1tbQtg?PL^-)z'#nVSXQYlT2.Ѩ. _&ߗ|:?g[~q`9ZKW-$wŒMhz4cSLooll0Ew+3R_cg _'t 6^S G RN(gH"1x"Y tN|hC80aT,#e.,vheR3`r 8a7InbLDP7,Yѻcƕs{+11=F:W~x0QSƞTD-!6 ıxbnf0WyJ7k71[j_/ eCƼg/U6N=PqR{Wji 9H= ,%x *aop 6o$+2{@c@/O|m25XFbAϙc1@u3l|Ix!5Cc2YgCefDžߞ\ LߓFvKPLǿ[9٥[#<7gWE,STF' Qs? +Zׯ_>{~Ac~qmrHn& PRH,FaO`a>PW${ %QbY(; z gIQ.,R% [ 7$/|hIrhK^kF=ӡwzGhI;ޕ%~5NoflOȒޕ4o僯0~6='ŚIrR99)\^N5bIrRecP w'g[ZD =ko%K9)0rR,׃bsb a`BvRg2qN,S9T9'vvN9Q^'=09' 9Q*9&.)QX,- 9%n!BkǍv*bǗU8#.3T팵5ߎbf vhSS8\=#^Έ5S(QΣ% ,3bMXV“D9,jKדxMt(&J:f9#䎢MS('j%Xc9$|HXc{9$|H!hqH$ ~h.B_acNgZܓLOf㐸X{h,R߽/.~,CNSSQ=%Nm~:%ʶC@$]-8 )b{:|:|:|:{)ߌ@#"|Hљ( t+4V#0~3A!PDTIL,`yrf<MjKGd} xYҞ]*u> e#z]9Ǫl$#G|y5@X[ غqZ=𗀛Cˏ ] 0jƢSZÀ#"kDZg-I 8PR@6͆j=1o|xu|=QG vq_n*A/*_qb YɞP8zDךV4qQBz"'%skJq,kS-*tBs/ 3q;zf>b5;Ϊ JWD6#Xvɘn(: UZ_P#X#MX]B>ن"pwyHH`%uGg!R*x F8@J# ۮj'BΫ 1־'bo5jC?qSs7t5] 73Ӯ[D 25[qlk GTbMa85VǕs RYE0GWA'ح]ڰ=KKn{qm *_@(b~$.J6\K7}Gb~ -F`߽FY cN7xn1/8Pp3H  "M7 ~^skL0߆f([TӎtHpV]A+k O 8G(xgO eAmwl0ˀ BWpa;9v<SPZ$-Ԅ/^ŠQK6.Jytw\i04{r>.,Z2x)/Mñ@;tȻR4sINC!D;H| w @<ޣS!cH1?ﳗ>hӎډNhG?iہ8dOaQvٱWDi'Cv SE-D6Ҟ3ټMt8r4EnKgC5^F͉/p yk (8 8}8!=|um6Su).7Գ o^S.E`k.Ck0*42懮W[ummep[.ۆtq{Ӆxۦ.ۊX w::::o;w6qITU2YdG&kLVɯ32?~w2/u[5+_Ee]?(|g-qG~)cqN;/erdam.nx lHJՑy&kk'hcOF[3^k9VJn`;Pk (f :i<JVc MI5>/ _^ CjTq u9 )N ZbZ1RfhVad#@RJ=ѩCo\}5yg_p괈ozxtf_E"6ZmtΛmjM`bpVGtTr$# 扛-WP/[.Fi]]9"N /1>헷a`ߨi\zPpfKa R2I6Ͼ&KEF: ҆ة-v !8_Gs;j x@M7Fm;˥{MƵ"Ió~D/eDa0`Le-[fQ40MU;ӒôƟ/CӐaˎ4))|Nc687ƶƾX~p7aB,>8p\֌KٯXD- c/վ34ΫT:YbSY:Jh3ěu lB!b] *p[z'`[ࣳAܸ{8Uޫ6;Uw"o."nXzoEx# "uȂzpGGo"go;HR606nX?P?Bq%3fDcc1]ez~5ZYc 1r,*X*d=? endstream endobj 73 0 obj <> stream xeuPUk(www&7"a" ("! JwJH HwJl:>7f~Ĭ>kI0$^^Z[Y_XXzj~ea՚ǍK֗|yt·+{;qg0'S&zvp,QbI<o.---.?}z`WSoKPg@g'?_޿ۍkYEo޿^Z]XXחKK/_]zn%'3AAZIˆЩ<*:'!Rih,#1fymiN啹CCͽ-u]m/>Ƿ~ۗo}(]L/,/̬.ͬ-O̬̬,~msm~yaWl.m/o,|EcQ*@a$qD&$$TBx9```oK_{HwPWg?݇߾c],Ϯ. ֖gW+3,-Ϯ.ͼ\yj77WzK- h4Fǡcq,Q)"Rx"dR\Pmo{pP_kGhwpw䓟Ƿm^07?70/X\]^[Y[] 67gg\y:~,^3ܿGA"aD   #"XGcIT*L'R0e اlN,- f^ OLoh~׿_?ӗ?~zM007062*XX~jmsceqaO/g08`<F ! [H!aH q>HR*GOܹd|ѭ;}M#=[y~l߾~mss sss sKs++[2I@"0X  0Xabt&@EtKx4:,*(K%D9*%.#cX_gO{'~~o?ջ6m~aՅdiiY*A@C E@$4"˰pI$"Ơ ,$O\F\ľގg?_?}?ʜ`fiQ<828>ڛ}\! ed P$Sİxe6Gcà8,DbPt(` x 2b|@oTtHaQn}M`Og{Sót_?~ۥ߿Ͼ|.^\̾\^.,XXY}j{k N$E$D@4-"lt`>9MQm<6GH琅i4&Q!yU%=-͍۷֗V޼[~>0˧Kե7 _>n|9gA WRcò|OYܹ]I" -DVQ#J>s+ˊngoFou}ὗ6ֶܬloyZ7o_o cQ *A"b){xǓ|=*.ֆ]jޛ{;7aq«c9)'*VZiq591yiaQcԤҢ궦'}G#C#>;-;vde|kl:|. D4 1a)9_U7ty$!r"'I^{J2geƍdv9@UĄtTŹ۔d/߸P|Խ/_y``^Z|Ԙ䚲ٝ7+:+"(@@(v\iӉ"gЋBodž>IOL$ 2S?Mw-'8G]Vct-'f]Ҳۏ/iﮫ/|-XۘlklLzFQbd@~FtWcy͒ 1&MB@KsRY2|͑\M>gF#'̊Oļȹ2[?_4S sZMڪmvC!]n}UK~jy|991G _VF?rᬉ"/."{>Ս-Q~nZkW fgoȗTr0b4"A%Nik:ĚGߙx,^agR>-}^7U=вo1%.6^NOҚ\,:u-%ɖ 2_FARQ+iy^;1!Յ e Rnf%26VWRڭC`a0 ǣt<Р3 =]:\8~8Փ[=].K ?Pǭ6 \K}ǽŒܿ6~>{cDOWNTOS1K+Y9'tvsunQV^W~5:0$TRV@hF@y'[G=0$}jlAN}G"}e|zrIsS> t3sm:{ԉ'mkۣ}Ʋ+$*;(8JW%$SŐ#$=aZi:c=sIqtNךҤw]տ_[h-%f1RP_Y'GoB+G v74VW\?|WHt\f P$$ȸSG꼝B}&^$ͧGOŇ9Rfsi0q6Ps5ق72,zV؝|Qގiq/U x;i=4f}+0ᤓK 8p Ecp(?X<~'ittBqA^\mU<22[*S/{m.[k4k~PW\)/'̴#}&suimpp7;sGSC Ph$ bNPns~w}_( =u?Уݾf,g<{w揍yӹQ#ok2_-"^52\{yx6*6,yiQ@DB`P,z| ϳ]~c/Nz9 {xu*eA_ꊾ6}SXv/-yYGsqҡnn aa7z[F2nԗv6 uUt%4\J n޸*"hOF@CH8hiV?p .zصi29jt1üǣ..&o g +Mޥ%\qΎ¬̖v9]BbZ:+sOkU" hd|ÉK~ax x8t[jJjU6؛;X $Zn._h|##^,s͈MNji58<;[YQw-=>5kIQCa3K*I u;Lcp$p|k xO]_[_ۑ~cO:\mQÑ.SV\`>}XYFSMk9d'Vun5M4Uz0 D BB;, {88y;ƄFDED9m93'k谬@fI y `a[ (b-] nPpV3Co{lhl{ン:zʒ<1vng]㮈p%$T:J㲄b4`[n*lGbA\Ոݿ+^ O`2wG}P#8)imuU w14ڵwgke}N2*8t&ɔ(D* 1 H0@@!Pj;f#/ww" R wDkkgq!!8*BT V[YE]N^KIYSQINDHWTHYJ^QB^.tQ ӃĤe$d8Ŗa0˗F( Ia!dc#¡8$ (g@jtjF.N N5ztxP P "_R/,%KEtմW˪ʨp)B:66Vv퐓Q Щ 6SAcR G$:̠3&"Qd<FHĭk .ɤVOtw L|<ЛS|ЀD# X*($+JQ9 9UyUmUmeuEo>mݲ "> stream x%gTRHh9ֿ^tHRAXV" F@hCH r]皽g53w~-n⺻?jQ%ǽ2݊ʨ[U1y qqyʘY}KL,IjARlګI9/3r\]ډבW3Ss`n!,:Km`veHnmPNU|9_E~XWF+ǗWSWSOԐUU?$U0^V4'WS/p J+b3J- B̨T R2TWȟwXyJFt;Fx\@ΩI]BAYM&qId\K*Mcgzc[\;\;\G:3m} /75=*>|vǶd>[_q-i֔o5t {m+}g>ԥ*h_u0LbJJGM4jۦ4J_:'ܟAˤ)dV&i 4EfeR3h}DW7He,:KxoOwQz7lfimtILC*=uSZ`N\[}c~u q!­ڨМ/年?i;cy9Z<keЇrhYl`NP]HǿRYMƙl*#;H({>G5ڧ(ym#*{i;]']<?*J)`B>f?5~2#mmm#m#-LV?ޗAͤ}&w}n"vg?`6jlM$5$1+i2 g,gQf~tSOhV2:jUӠ'_9sC YE}'qySϴM-GJ{rˇD{"Rb)iw8'"#ܒAj$7gt{wMX/skpl}6ko9׷?eis-6Y;K" KneS@6%;ɡ^u8RGH'7'33_=_t .a WT pu#Uqa3>;ڛm=ѵu?}K&΁  H^>ĜZgLlP9)CZ.Zm?? (HuX5Q5\=R7^˩cMFQ^82.$"6crx1n>m'3L:#((~p7U fd?xvI?ZYs 3UfFMǮsC`"b.yMw[9M sq#ɥ5j nl 7.$pVMkM+ڤ:!dL-"-RؙE,{bxNN':b{W5 r7 n?~Kn1=zHۣ&qP _MS;V0BБ8[3&ᗍKGEł!nᰠ`x1e}l~MyI|ؒg5?ŗcj#*(MVD /Inf i5ul K PGЗ9g&sn v1.4?CǧbW__纼Ϸ}aU 7/3}_ɮr(.t*9z1p2hh?xߓ,*Ol*q=iӿΘHW {9FᲖiCbtdYOK \{> pD-wžyաkҿݮ '[Sݟۆ :'Eya7#])s78쿔o5>p~D>k )CZW>T1Sk l~xZ6U+ 8i ?m#~yU^ 2*M;r &y)AJzϸק1A" !b:Wezx8FhMq5 IO˃4oBR cGm&iY?-LmW\TLStHk×}9[.6:ˆ+Fg+'+&+9#9*u&a^Hgy9ArjWPrp *vѬ{A1e )MWy蓹݋53[:aOU,@JjzH\>epD `PvSk*g֌LU*Gg |Zi&wea4>'k*g(NZ!yQVSR([z6AlrOٮnhKx:&}ZmZTvkM{4abN@2"1bg5wp{?vvi1"'6/,j_^_ r +P{JN@uIi;uoYp^eU,11h0i>pEjى9t:WPi: l-/85=5EaB+_س!Z\V,KSe*jOe6SsSvEALYR(]9ju} ] ~R2"jYC"tP^(/rаJ0 OL\.,X+KK=k[Âkʼn$ gmV3W!ؔ&hƟv 7bDi{U3g5(J`uj8141 @Hubʮ? a !M.- څcBOiԹhT~.mEI۲k(]Zmr,#"ҽ` \ttQM ̨ @??8`BDkH=OIإ0qkL0 h1;>3 UJ9 ٘EQM=# 4 <` \C7 |_q&tRXT:px"u"0u`3 E[:35=PAQ|[F:iO (/"#Ps@ym± [lIpIv,u%=[2"{wo>oQAbp&ߪbwG0FaC'ֳ9>3P?P5:\43 "qR Swf+}(Ǿ @zg"Kp~(6}<\~Dg'#C Lrv} :. 0u&X\'{Ǹr@gW5kȾxZ\D"sBeb:Z ~eBA\Ɨ]WĬB@ D\$_>l2CsE9ܐmVFWbA \-e$|Z@@,T(i IES˻<cJTQ"UkiPy4%GoAp*nw.3 W%V:t>޿1x:m?CV((:rϏP$À8'qd? MzS UXR=-A֓=-c;[ynMZEr@M,O-.,Aeha{i{F0-օM*48߄| Cq0h?o+9?9)lix*BRx4ex7ݲ^%j7P)G0A#mÐ Vvj)8i"ct]L #Dp2y<)L}CVAFQgn{o*c$PJv7/,.7Eق!ZzA=Ѐepkmf-`gv p8bNJKWv^q>8n4EܑO}Hn/+}Pk s$Ŭ/@p%CW o g6Hk] 4 neӷ09Hn/6mhL+FJ'kߐ<V!ZmM/oV֙kJ 6YkP i(ϥ=X:Bě#؜^n,̯O7GEWDJ5mMlM.C}Kal( ̍)H`Gu9uԖ 9?q(&ђfa8J[T6 Sx6~_ϿҊi/ߗ'DxkiޟSnHN[}'Au)~ }i8D0x6Yا%G*ȝܮ#e,&h[M8{v3FkH}Ioru| <-={Q+.SEBf5{E4$-67yv8DA|aA8t< N6f;T& BC6 jJK@7 0aO`}t|KsILc}FݤQV8&UwKCslXK%[ \ \b-@dѬoVm56_wf*pӪq5Eح9k0qk8`pG;Ô-v_Ls*K7Ωy,|s'2#vx :D-sBڔ:D,&DσSϺ ;#mcAzT/2]gpȝ/MIVURM0@]AUGI$b_jjoΪOWVAv/9dbvC?5Y6e8y(y0k|x5?qx:56ߓt }_dSzi"XO۠e.yц @+hug9gH꧴R" /(YCt>Vbe]{XO+TI+6)kjl 5cՔgH_;w$g@QOeyJs\ ;lԟ꾩I->5Ifguw ?]':L&\ dTmnj]TvW'-U\=8ᏩC۷ZԻrs~V6a vaZAO߼]zn@u endstream endobj 75 0 obj <> stream xM @KwExZ"!1-F#kCio'Ad[d v/a6X; ` 6ưUE#-4+"SK'E~D)Q0ln+Viy&Q:`'ɩ+5qyl` 6>9> stream xAP1 AE?n)3oi~O[%8 Knp@~:.u]rwɭ[%8 Knp@~:.u]rwɭ[%8 Knp@~:.u]rwɭ[%8 Knp@~:.u]rwɭ[%8 Knp@~:.u]rwɭ[%8 Knp@~:.u]rwɭ[%8 Knp@~:.u]rwɭ[%8 Knp@~:.u]rwɭ[%8 Knp@~:.u]rI8-),;Ӳ|>NyJ8-),;Ӳ|>NyJ8-),;Ӳ|>NyJ8-),;Ӳ|>NyJ8-),;Ӳ|>NyJ8-),;Ӳ|>NyJ8-),;Ӳ|>NyJ8-),;Ӳ|>NyJ8-),;Ӳ|>NyJ8-),;Ӳ|>NyJ8-),;Ӳ|>NyJ8-),;Ӳ|>NyJ8-),;Ӳ|>NyJ8-),;Ӳ|>NyJ8-),;Ӳ|>NyJ8-),;Ӳ|>NyJ8-),;Ӳ|>NyJ8-),;Ӳ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|Tɲ|ވ;}x@ѧ|ވ;}x@ѧ|ވ;}x@ѧ|ވ;}x@ѧ|ވ;}x@ѧ|ވ;}x@ѧ|ވ;}x@ѧ|ވ;}x@ѧ|ވ;}x@ѧ|ވ;}x@ѧ|ވ;}x@ѧ|ވ;}x@ѧ|ވ;}x@ѧ|ވ;}x@ѧ|ވ;}x@ѧ|ވ;}x@ѧ|ވ;}x@ѧ|ވ;}x@ѧ|ވ;}x@ѧ|ވ;}x@ѧ|ވ;}x@ѧ|ވ;}x@ѧ|ވ;}x@ѧ|ވ;}x@ѧ|ވ;}x@ѧ|ވ;}x@ѧ|ވ;}x@ѧ|ވ;}x@ѧ|ވ;}x@ѧ|ވ;}x@ѧ|ވ;}x@ѧ|ވ;}x@ѧ|ވ;}x@ѧ|ވ;}x@ѧ|ވ;}x@o2d endstream endobj 77 0 obj <> stream xPQ #mL 9+po~z&=b=e|2yOXd'_gLޓ/3Y&,L{z&=b=e|2yOXd'_gLޓ/3Y&,L{z&=b=e|2yOXd'_gLޓ/3Y&,L{z&=b=e|2yOXd'_gLޓ/3Y&,L{z&=b=e|2yOXd'_gLޓ/3Y&,L{z&=b=e|2yOXd'_gLޓ/3Y&,L{z&=b=e|2yOXd'_gLޓ/3Y&,L{z&=b=e|2yOXd'_gLޓ/3Y&,L{z&=b=e|2yOXd'_gLޓ/3Y&,L{z&=b=e|2yOXd'_gLޓ/3Y&,L{z&=b=e|2yOXd'_gLޓ/3Y&,L{z&=b=e|2yOXd'_gLޓ/3Y&,L{z&=b=e|2yOXd'_gLޓ/3Y&,L{z&=b=e|2yOXd'_gLޓ/3Y&,L{z&=b=e|2yOXd'_gLޓ/3Y&,L{z&=b=e|2yOXd'_gLޓ/3Y&,L{z&=b=e|2yOXd'_gLޓ/3Y&,L{z&=b=e|2yOXd'oZ?' Myz8Gy޴>Αo7sMyz8Gy޴>Αo7sMyz8Gy޴>Αo7sMyz8Gy޴>Αo7sMyz8Gy޴>Αo7sMyz8Gy޴>Αo7sMyz8Gy޴>Αo7sMyz8Gy޴>Αo7sMyz8Gy޴>Αo7sMyz8Gy޴>Αo7sMyz8Gy޴>Αo7sMyz8Gy޴>Αo7sMyz8Gy޴>Αo7sMyz8Gy޴>Αo7sMyz8Gy޴>Αo7sMyz8Gy޴>Αo7sMyz8Gy޴>Αo7sMc _oZ?e$i{sZ&Ii'oZ?e$i{sZ&Ii'oZ?e$i{sZ&Ii'oZ?e$i{sZ&Ii'oZ?e$i{sZ&Ii'oZ?e$i{sZ&Ii'oZ?e$i{sZ&Ii'oZ?e$i{sZ&Ii'oZ?e$i{sZ&Ii'oZ?e$i{sZ&Ii'oZ?e$i{sZ&Ii'oZ?e$i{sZ&Ii'oZ?e$i{sZ&Ii'oZ?e$i{sZ&Ii'oZ?e$i{sZ&Ii'oZ?e$i{sZ&Ii'oZ?e$i{sZ&Ii'oZ?e$i{s@޴>Αo7sMyz8Gy޴>Αo7sMyz8Gy޴>Αo7sMyz8Gy޴>Αo7sMyz8Gy޴>Αo7sMyz8Gy޴>Αo7sMyz8Gy޴>Αo7sMyz8Gy޴>Αo7sMyz8Gy޴>Αo7sMyz8Gy޴>Αo7sMyz8Gy޴>Αo7sMyz8Gy޴>Αo7sMyz8Gy޴>Αo7sMyz8Gy޴>Αo7sMyz8Gy޴>Αo7sMyz8Gy޴>Αo7sMyz8Gy޴>Αo7sMyz8Gy޴>sZ&F#yO7{HӍFn4t=h$F#yO7{HӍFn4t=h$F#yO7{HӍFn4t=h$F#yO7{HӍFn4t=h$F#yO7{HӍFn4t=h$F#yO7{HӍFn4t=h$F#yO7{HӍFn4t=h$F#yO7{HӍFn4t=h$F#yO7{HӍFn4t=h$F#yO7{HӍFn4t=h$F#yO7{HӍFn4t=h$F#yO7{HӍFn4t=h$F#yO7{HӍFn4t=h$F#yO7{HӍFn4t=h$F#yO7{HӍFn4t=h$F#yO7{HӍFn4t=h$F#yO7{HӍFn4t=h$F#yO7{HӍFn4t=h$F#yO7{HӍFn4t=h$F#yO7{HӍFn4t=h$F#yO7{HӍFn4t=h$F#yO7{HӍFn4t=h$F#yO7{HӍFn4t=h$F#yO7{HӍFn4t=h$F#yO7{HӍFn4t=h$F#yO7{HӍFn4t=h$F#yO7UZ endstream endobj 80 0 obj <> stream x%gTo{w{lnv7͚[D`zg*Sއޫ&%&*( T=~U2.?FbQ>>>n8H4R" NDKx#gLt&zzuvڌOZQZPΝgѮ7:s wAnyϽ۳ڊ +OTt4rnݍZLO #p@Ǒ8 F㨔x:Ig&tɆ $#iNePir3rBV($2 j {߶N-<_8s⫯> *J3t^ʗ @pLn4T#IdR.&)d&NAQ/DðTDŒ)^^ FBFxc04$ƒXNJe_-)4RϪlyxsĢ$ !c xDG %c1)o~>{#__|GCCjA^X PD$a8GĠQ`XzB0p.S1Vf* &kF^@LSմd4< b%,K%HbT$cF.>_ ߭NjA{[C]H4&ֺHN+UD}c|g`냵C7溯=Mi/Ս+xXA`[:jW. ޞr{v2ұsnciсGv=}q¨trE{|}n pћx/eshS%2SOuM[gV`e4x{qma]KFzGG<#DHhf,_;3ϷM7}oz7tppᦝ緶7o=on}sckkkTsb"R_f`ýÝkW [S/W/?9?:[z=GK=KK}o,=7 홟G-c54iY}qnOp[ˡ&J'v?>zp7:۵^8ښ?ژ=Z>Z6~usz9vm׬sN˜48?31>dؘY𰭥έG;+wov߿{v?o[ǻmpvvfzݴf]3Z5m6Mӊd.Z͋ SS#Mw4>lj|׶;s/wםo^mmmmmnZ;Yyv{͖cӾa]ٶletX6ټ4=0<6hD- t:߹oomn}ݶvκsokm{?^{jù^sl96W+U:6j2[SK#}/KotOד]>;MM7n5lnih,Y6W;˯6V^mnnXsgce{}yk͹Xul:VˎeaVl.3 扏x rϿnTߨ^W}fS'lUucپ\unnsuycŹ\_q8V+NDztfX&md[̛_N/=_lzLbL @ygŕ*K*oTV-L&Ͳb8+NӾXq/lvcl-mKEerb446dS%b4&Ǧq (jyq~yDC&42*%ҢbX-6f,b7&mqun:`5N^.={E@,G!d"#ʦyW J ˲ rK DP?(ݬ^3[, E܂uv23o3OΚg,c g3zo?*ȯ%`cQ@2g0Br bQN$de$'edHH@ߕPoO$kF_ΏM,O-MLƧM/?>st4<4bǓw/-kh(jӵk[ tW]U)O66%ԉjA1jB@~ /h*<ѐwdTTG=cMCF,OpDyEZ1_VKYz[e΍[E׋ ()1ōAx `02$ ca"S((B6f_Mˬ%k%"UGay *mq(YSPf,N5eg'd&gtIY B\ endstream endobj 81 0 obj <> /StructParent 100048>> endobj 82 0 obj <> /StructParent 100049>> endobj 83 0 obj <> /StructParent 100050>> endobj 84 0 obj <> /StructParent 100051>> endobj 85 0 obj <> /StructParent 100052>> endobj 86 0 obj <> /StructParent 100053>> endobj 87 0 obj <> /StructParent 100054>> endobj 88 0 obj <> /StructParent 100055>> endobj 89 0 obj <> /StructParent 100056>> endobj 90 0 obj <> /StructParent 100057>> endobj 91 0 obj <> endobj 92 0 obj <> /StructParent 100059>> endobj 93 0 obj <> /StructParent 100060>> endobj 94 0 obj <> endobj 95 0 obj <> /StructParent 100062>> endobj 96 0 obj <> /StructParent 100063>> endobj 97 0 obj <> /StructParent 100064>> endobj 98 0 obj <> endobj 99 0 obj <> /StructParent 100066>> endobj 100 0 obj <> /StructParent 100067>> endobj 101 0 obj <> /StructParent 100068>> endobj 102 0 obj <> /StructParent 100069>> endobj 103 0 obj <> stream xYnq%~~\@Q$#8Tj@?e z.hd`SƊxξ7SʴԶ݇b"c1 Y+k #_o)Pk-cYK"%i(1yۿc4U~Bh%?oE|S_=Wz ]k}^Q|O|KʫJ!FrʱEi\E!%irP?o?_woyۯ~^)OoY^^.Ƭ1171vԿ~x[mJWHI;ԝevGR%]]ש֛.λe6oQxIu 1lb/A ~ޯ)1ȯj Mc~[C*,2~mҴw0FR-!\8RryBx#TP=]߽nMS+AGфrZCІo{jA+2ڗ0JVzR<)M@OozhŇ2 MHWMKz 1vgC.T >.*hdIL/T&Fk]<ИKJY&$bЪxT4DOӭ[O'{ #7 KU5^Cmׇ@ qkI!#ڋ8341ڋIUel5sdtevue{җEKm/-H y_^74' & ݔUlR t zHI:4X:-9&Di.!ǖ:B=dդdUR]A 2*%\$WV1֪9Vз1ҷ )i%Kz .Kz X {yBk#^iڡDtTfmPrAmQÅ6zV*m{Ll]er~sqYnG#]Q(I1DGC o4)˸.]Fv˷ɿ[ؾJeg;1_UHH.y r+<~kɗRf75RZksu:b6Z ]ϱ?+P“zQR:#r^HKX"ˮ tiU]fҫD4ƿ҂:K͡z/T=RmXvZK:-RlRn!a[X ј+z ﳗ! )Њ{(LQ_9EVl-j^n )uScRv9^FQAa wXQ:TrHW48PgAa,TcWk RVp (cu Ih=]ՁFC)|Вz )|9b8n"`^ʡt,BϽ\H|/z3Q갆WbS IdwπZÀ0.os q6i+dc7Hf#!vFɵ_#U6.^S*Bv7fMS'L`򰏐3:2.Ynz1[">h5O~bK*Oc/`)&BshG2<' ᧦ 1C5+pC+M͇S2ԐcxB(k!&їP5ti`K53W7gڅ@ PgC v"/iBPs}IE[ѾU5ɩ9K8$ |Q|j ф*!2^r%yY) 2k4eMhhp$0o7H^MԢ֐kS#-id :Rz%T͚ڐddQ ֫(S,sޓ9(q!^sr+@z qIjA,8wjZ[" M5Z0\œJhIF> sՈQƥKpX.i{G=SqU:¹`zMth׫7i3:j R1@v*UD;R mbJ”tDslh4L`RP{l~Ƃ!_ [Ԥ&$c|sW/1P}z H ő KĞmN%]9阚H]Q{cZ6]no6Tgl-A4[F2]esfw 1KػkVprTKxYB3ґgtgãN g/L, |a,y@b6/fzK"e~/cD(!jYReȨA_$a6`sfE/M~6tWj/%<%<#LDƭ0DpR-bVBV0m0-+ks=a{aQ}}9kmrmm nO>0 S*֫fL :.NW$P˒{ܔquA6=;V3@RF@J>C-ec0`S-$SW8\oZ<@0e7U v!VT}`#(77Dcx&N"3''Rn$s&Yݨ=m>@!eoѕ3%:l}]Zhzqfrв*_P@yZ|`Xz,` g)7R6B:,EJdcp`:eu E6m`li\.&Y]"{Z?,#6,<;,Id'6Gy^Z2ҍΥoXM:|A.%䱲]дl{pھeQRM7@k z1~Q;`KKB:Z-3ȂsIwvt3~,#P2*\ү%Уﶭ^Jt,!֝3j,>(}$i"h ^m(.3FԫJ<\eݢtqyY ",=Q&DYe!jزQbO.h,,M]# iBYXf}Pփl4kc,b^كR?s9gWPcKWvn*sqӵ"hzx@&aһEт~T Lj J ڲIAWD$~LtE$[U|Ћ; OMO\ f+<0rȸ&W1 \aN̄9}Av3[ +upE%t[P` |]ʈAepeH(c" \5D :NX_/8!%ёſUV.NK$f7nteq0XҨI>[[aXęJEWRJXPضLJX]P!XI+ >-(~HxBZ2 wGD :0P[2 c:WqNX jjӯq0]4O_R/|N }~O?~3lw&Ńvd^5G15ߍ|GP\FviC njm03pKh7X9!İ>q_GlG#zKvBiUcK//̐0M,>.: YhuЁ.E  `eYXT|#/~ ?a EeyJ>epa;fu{0{0"1ʗ@/냣]DR\~Hîee F|h7#8 JV-@*A)c'3DLHd-*ujf!b]cǍ z{cXF{ f MуvEG[KMq$Hv kN^Xcf|p7c2G-L03)̢粘0l> ~ͮL؅l`!0-W!ۨF>O_G.|)-h_s@oKq:|QiaԸp#*JI[TbH}^b,YB^ h/L0Y 3q*(+$zqUpъ8EmFڑȄYkEc=ٛ Q,fG7ܥ]BI sk(ڱYvC p0A`V'YX.QH>6nUtdfQEjH eF#<켧n)J /:`R of?u%Y̭L__ 9JAL¤ށK67"΁àcK=8<+R)%Z0YaH%% ҍȤ@>`2)=AJAކX&%ws1UR~IIALѝ\x˔86;oB |h#ʼnp\FbR7H\^CP w84NvfzE&J$f>;>:!\vK0p'.q?Hƥ h#nG4sA.Z}?e߳neg#Fce7#ps6Λ L 6~37~CSΖM8Ʃ0Nyq/[=w*w@Bqg%_8Dyq@+dŽ+HHq*!,@;K*]K Ĩt2k Gt ?=9Jq)u'4W>!9:]{^p#]" 9w&o}SZPyBq1Pd2` C/xq" yBqőX$7{Pv)PqTa"zS&J#6jsF ْF Xx7TArN>!8<*xK'7Êk?M߳~Q#`F-OMB6Dn6/ a#N.O N}qsN}qSAN'>ԧԿ 3z(3Kʪkwi-sRyp62)q o 76krFa,pK~$gH2v&a\ BpXCzҖMVoH6~Cz) }77?QzșDJ LߞD+̗%Dԕz&zdS.L,y/$J$~sp=PgƘF[ww MKze}ѺX`aNH'FH2aFĪ5[`q|SɖN5\PrIpOj$e`NDŽDr $BO0(w$9iy",$jIXtX v;gD%hXpP?oc)Q0F5(~P~Z:2*4lEL vh $Êb'Kf߫Y~%/u@U/:҈Jgד?c+eF)b;haoUxظ 1\4j za5lשʢtPlܢ^r}=ߝj{7k&pOǩNWOشJ͈ˤ_Xtfa/[v ׳Lu :]>౭F!z-S~z,5gUHr i?!_7\Fs@Zj#ZFbn 0u 'hedWI3V[U,P/Ԝʵ";H LJMئRbCBʉX$=˖xrH<0W:Ws9(Fz _>VgݩWJFEU r vŞó3t% [h a:≌ $ecd{pgeȥ;u]]=T*߬!@ jH-kazۜ- ^~:6mjB %Gz8@Ba9Vi2c8/Xj4|j `2[Q89M^G#=TJg:(fQi$1PG&b5"⢰DŽK#p5ZEt3 踼(t͘?yK} =%>##U`*ڒ22XsXMps+t,1}(<`FӨ|Oe땹4Br^s7&QF̷(YT#bݚv#'"j~ 2ߍ!cP&-JvƦ]X'RRC8RwM Uk,dڋEzov`C/{mpkib]R)]C)bI0g`]+DoW0e<nm,h(~^9̑F"ӵb.J,}Fxm*k8s*ϊ;XJDn cnhڎg+K-jDq)g x$?? RGK\.Wq)?S3K6'&P7Gmdbd0AE.lwKDq{y*sl$?XeHۏ4(_n0U[֒G0h7Ki[o:TyxWr_!H;6(m aSx&58y̺~T=zw_}o>DzGDX:rӀ6 Ƿ%޵Mjt@ M֡eYM\!%ӎ}Q~d ?Gްʴ<?GގEЈK !٤}EK>Y!{Oi(HԘF/M7yp͊7ͨNÅNLfíu^-XNU׾c9Jt@\ ,y|n(fA%; 3-Y8.b|CkT5#rswʪo(*;j\U⼑rUGN?Cё`yOA֋] qU=ݾ8j'#2U-jQub 6,rV-fVHXjDFgFIqAFȒ%]=;`"@i5m1_r$*YK_dX@ѬZ2fwJX(IZOZϏ bZ_WMc 0!hC[h, քǍt@&NE#%ͦ#W!4x4x17BFoj^LZ\p<ࠒsٲ'^hB಻Ĵ!hbn5}W,Nj( v8G)u_BI١~GU[cƭ/W6;f\Wɘ pnz:[nn$͢B9ICש"Lfp )?MGVhJ9REK TGZiN;rM͕G_Τzkοtg꭯{n_Z}&_f||x̓ -?F&,4Qk}X*}³"Dd?gOkw=pΔsvKYi<w̄EY,^#g^g_yePOPyer%W{%:@1nf,EA=r;E'cyjhp']NqXWk i1ky:}dzb))⎘\n#f6'*7]>LGB'9/|;b11GX^r1C#&戉w8j'KEEnE[ *XPAbM$ *&ᆴ1k6V&OH,08 ر-h@@ /d@HV Xmh`PR͍IJ8/M :WW{,lhl`nZq%^ b{9ɶ/(ʳQ0_sk\Jr͘d{B\xi5g/}>:儳#KwEsE"\|>W+?~5 D.hvA2jzͭb ˈ3gڷϴoi>Ӿ}}L=mNxZ:tX.ܤ1pLdƜ&bO{ZqIH dF Rָ3ve טg+]Lq^ vߐKƄš+K$aԊA*lAPB9 -2,+|裍. Yq-Rm 8nYfb,"TܔhZ+ZaI*.m] #nR',E,n&H\qqd.5[@fS.l-6sS2G\>]#6A|1maN+EHYu79>ܜfF>.>^7{H=[ s_2{$+?\Yy|p7^+g$Ad a@{Aq(+.*ܣX.V-mAKW{9DZŻO{CmȈ-13TY,=E.&/Uw{m&[Ҭ@:q} ~N1HksizW"N ѫ ¯6}w&MgjD/`H4\ݺ:Rִ] ܛh^#tTHnZ0ne6WjޥX! qv@lW ,Da%r/ے=* nrujC ƪ*l7Naˣ{Zp:حxwfwpdnRak,?dIrzCޛ8< jÊD]Z`r U/OvAͬ$-VhY^ƒڝm\Cmco)ցnڈ[[-K2xI([\U\ƮzWR Sh0hZ!ɆoqK}޺[r78=sXdUuq'dm6 n\FAp8Sǔw˔UG6xhf_'y\47PoQmy3߫~&O 1l7@Pc)6 VZ\L)a(cJyݓ!jЕ*n?LZQm""hWǪVqw,fH(AZio਄}q15Ue.[)C[Cn˙V%xE|=g6}Q u;:iWEC5鰆lKEѡU5%=t:6wup^Aa"niW2DB} -5EFwӧ%Ӧz};j̞xP6-*5j~9;52^SӇkqarČ4@l͜\k{Tm]}V k}qm?#Hچ$Z aۢi'-I%U($$%;-sN*kgm5W2w0Y"n2Ue'( ?$-7NyF]6.- =?$Ǖ֋(꩏rζ'=gDGO^(')eS+J{:֖$'-DJb[hU;NP'T"NbIlq$(|Hb[pY$(1_l:r-v7.{fjs+yEkbH}`eޣb5 ljrm". 4|؃D:&}Z0ɖDUv`HJ' T O/$)R$D ۙ_߸QK Ԩ^ ~_sJ_9_>XGƦ ١V 5* u106f_p4ZKY(Thp] w# ).BՑY1t-$vH+ܙp+9~/ ӽ=FvW + w#R" ۝z3sr9ۦm.xSfSA ZGCԦSM~>\\RZr%Bi0$rFCzEb>i\еnjΝ0pq=-߿04N2d4-D[md  6zZa skGiRIq-2'6R4/~l3:q5p:zݧʒѴ)po~@/$_̼ pUܳ mc%OBͭgvBƦ7VK q^s_ߠ3ȝU1\RCmMI44)t{| {xFGS^za$%t|eey*^&,o;%de2SNOSG~}Vs3fH iF)JU)BV~_zlV1ӧM)Q&&sl?\Mg^ ek»㼪dV(p5ddV'A/hpBɸMFJsq-<lA0 jUtMB3Bn|'нTnڽ]}QEaewOC<ӥC~r6RvMPEm5dF]oS1i4 jQ(w_G!oI3 uqH1#]`xJölWWϾܓ?j'MW" gxVL%$O4>gOf'RRH}5>Jleѣc̕Y$%Hw Oؚ)G귔^yb->3jcf%3x]uCΘ6?;+^Zm}O({OkF09+lB|^cFR5oR_c@jE0ݍoȚm N L{je.^Gs~x1mY˲Vcx͎NK8``UT*x(S=Ӽ{|D/FM]D7'm^<'#mnd>9vDfnpXFxv5~oWHT>-f,~y>+Aѷ([OKOnWn#f :| [8> ;/8jv7R]р?)WF}d,pDu蘥("xp PTލiT9X(BZ2ٴC#kG"q>Z(ۍBAVkVA5d *vH##vBPq~b77~/ 1@$Jh-4ʺ]agIxZN<\![aIz-7 e`6QN,*3Qu'!)]Y3Y҄tKq'$!-v.oIQXR/%I7)IAV!uB!vt3 eƻ)t5Yg!a:F:u>6)C2|dYd[>#μY`MG~hj(\"ә~MK3 tH=Dt󚲗VrP~~<9<mz~:u#ՁA$22!p[,"|_3xl Ʊ#PfzY4C"kˎc忷 fKShief|Baj>1WCW@m9G?jD1ƕOZj,x2Ӡ/GD 8ۼ e&}wbkdX!*I0Gpg)J}&!>c0VVarЇ'BKV(d? IţɧJ) ?dX:{~cZ # XX@kmtu"$8vb2FDf$pf=dfxŮN-W׭k$fx -P-ÆtbIoID&Zٲ=#"c`Fё02YG pFA-8ގ(a Y<:c'uGz¡uLa2O3cN/ Z"oq ٠A|!8$Vk[R(d^hH PhG1 WM,U=WKWnFAͷm /pDV ZAo!$N $!a" qz"(=5툤ACɲY؉"It%ؗ6pBuW0a +TMBc'&pnً[Rv1ôW cؚk,cuRJ0ctbFRTĎ DЮ0F]48AhmU0"a7Э"r-NE=Ҙ31?mi㞺eFL ̂;}~3 S;~d ;xc[&xfJ#%R~NY]8ZMv#->rJ1re5)!pvLt+ "`kzfGtxÄ;ߧ=hw@O2LxйbUgiL Iq6ʉYb@d3>USe,$9;/ kHy8 )jm/gC)q}EPn&"+TF݊qXst] 6L 7Dfhw >7*M6l]ؖ- A2l `Д%g65g"Hrs˰k~sy44nYskϰp<o {o,h9@9#l?[׿<|qDAe\WbZjzv`27jC#\腘;:8m~ABĝ{FV4Pw̒_I9|3FbC0+%-?X2f2phX"` ljfmXc7X7c,ѧ4FHWx%V-m"}[/8c`oŪ~iq4:gqt:ź.ة@W Υa^ꈶS;suA]^D;RnC`jb^+eԏ/aTŻn1 W 2E=\.-BҰyXQ@ ގm1!݁.-bsA䜽`bmܢ 4q Dh5ϋN(icZD;z6O-g}Wٳ+evi BAv_@TPY|㰖`jqA%.>E\-.rB@ST+e*SCYedꙦ^,w8aR{0;vl>A,#㾧Mcb3!,F\]O)pQ[6LWjp `nwJm;ņ5'+sT;q.xW*n+(|^A5Wt;ST7DtSkqyg±~|H5\cK}}[%:%$<li…'%Գd_sTk[sMd>}N%l[E6ѝ}` -KR -EjÚ)YN- PjWX(X%ˉF-FV Gm2B7T3;UK "XrQ$N-Xce{bvNE@  X6 0:P3, [bP!CM85,;6c)nkIN% ^SZYJ#j3lgzCk;-ͺbn+Pfތ‘Z(k0(߁ZE]!5MҹHRBO&a%Zdd}s;> /XObject <> /Font <>>> /MediaBox [0 0 594.95996 841.91998] /Annots [23 0 R 24 0 R 25 0 R 26 0 R 27 0 R 28 0 R 29 0 R 30 0 R 31 0 R 32 0 R 33 0 R 34 0 R 35 0 R 36 0 R 37 0 R 38 0 R 39 0 R 40 0 R 41 0 R 42 0 R 43 0 R 44 0 R 45 0 R 46 0 R 47 0 R 48 0 R 49 0 R 50 0 R 51 0 R 52 0 R 53 0 R 54 0 R 55 0 R 56 0 R 57 0 R 58 0 R 59 0 R 60 0 R 61 0 R 62 0 R 63 0 R 64 0 R 65 0 R 66 0 R 67 0 R 68 0 R 69 0 R 70 0 R] /Contents 71 0 R /StructParents 0 /Parent 104 0 R>> endobj 72 0 obj <> /XObject <> /Font <>>> /MediaBox [0 0 594.95996 841.91998] /Annots [81 0 R 82 0 R 83 0 R 84 0 R 85 0 R 86 0 R 87 0 R 88 0 R 89 0 R 90 0 R 91 0 R 92 0 R 93 0 R 94 0 R 95 0 R 96 0 R 97 0 R 98 0 R 99 0 R 100 0 R 101 0 R 102 0 R] /Contents 103 0 R /StructParents 1 /Parent 104 0 R>> endobj 104 0 obj <> endobj 105 0 obj <> endobj 112 0 obj <>] /ID (node00026598)>> endobj 114 0 obj <>] /ID (node00026602)>> endobj 115 0 obj <>] /ID (node00026603)>> endobj 117 0 obj <>] /ID (node00026604)>> endobj 116 0 obj <> endobj 113 0 obj <> endobj 118 0 obj <>] /ID (node00026607)>> endobj 123 0 obj <>] /ID (node00026612)>> endobj 122 0 obj <>] /ID (node00026610)>> endobj 121 0 obj <> endobj 126 0 obj <>] /ID (node00026616)>> endobj 128 0 obj <>] /ID (node00026618)>> endobj 127 0 obj <> endobj 125 0 obj <>] /ID (node00026613)>> endobj 124 0 obj <> endobj 131 0 obj <>] /ID (node00026621)>> endobj 133 0 obj <>] /ID (node00026623)>> endobj 132 0 obj <> endobj 130 0 obj <>] /ID (node00026619)>> endobj 129 0 obj <> endobj 136 0 obj <>] /ID (node00026626)>> endobj 135 0 obj <>] /ID (node00026624)>> endobj 134 0 obj <> endobj 139 0 obj <>] /ID (node00026629)>> endobj 138 0 obj <>] /ID (node00026627)>> endobj 137 0 obj <> endobj 142 0 obj <>] /ID (node00026632)>> endobj 141 0 obj <>] /ID (node00026630)>> endobj 140 0 obj <> endobj 145 0 obj <>] /ID (node00026635)>> endobj 144 0 obj <>] /ID (node00026633)>> endobj 143 0 obj <> endobj 147 0 obj <>] /ID (node00026636)>> endobj 146 0 obj <> endobj 120 0 obj <> endobj 119 0 obj <> endobj 111 0 obj <> endobj 110 0 obj <> endobj 155 0 obj <>] /ID (node00026639)>> endobj 154 0 obj <> <>] /ID (node00026638)>> endobj 158 0 obj <>] /ID (node00026576)>> endobj 157 0 obj <>] /ID (node00026575)>> endobj 156 0 obj <> endobj 160 0 obj <>] /ID (node00026577)>> endobj 161 0 obj <>] /ID (node00026578)>> endobj 162 0 obj <>] /ID (node00026579)>> endobj 159 0 obj <> endobj 164 0 obj <>] /ID (node00026583)>> endobj 163 0 obj <> endobj 165 0 obj <>] /ID (node00026585)>> endobj 168 0 obj <>] /ID (node00026587)>> endobj 167 0 obj <>] /ID (node00026586)>> endobj 169 0 obj <>] /ID (node00026588)>> endobj 171 0 obj <>] /ID (node00026589)>> endobj 170 0 obj <> endobj 172 0 obj <>] /ID (node00026590)>> endobj 166 0 obj <> endobj 153 0 obj <> endobj 173 0 obj <>] /ID (node00026591)>> endobj 175 0 obj <>] /ID (node00026593)>> endobj 174 0 obj <>] /ID (node00026592)>> endobj 177 0 obj <>] /ID (node00026595)>> endobj 176 0 obj <>] /ID (node00026594)>> endobj 183 0 obj <>] /ID (node00026668)>> endobj 182 0 obj <> endobj 187 0 obj <>] /ID (node00026647)>> endobj 186 0 obj <>] /ID (node00026645)>> endobj 188 0 obj <>] /ID (node00026648)>> endobj 189 0 obj <>] /ID (node00026649)>> endobj 192 0 obj <>] /ID (node00026650)>> endobj 191 0 obj <> endobj 190 0 obj <>] /ID (node00026646)>> endobj 193 0 obj <>] /ID (node00026652)>> endobj 197 0 obj <>] /ID (node00026669)>> endobj 196 0 obj <> endobj 195 0 obj <> endobj 194 0 obj <> endobj 185 0 obj <> endobj 184 0 obj <> endobj 202 0 obj <>] /ID (node00026657)>> endobj 204 0 obj <>] /ID (node00026658)>> endobj 203 0 obj <>] /ID (node00026654)>> endobj 205 0 obj <>] /ID (node00026659)>> endobj 207 0 obj <>] /ID (node00026660)>> endobj 206 0 obj <>] /ID (node00026655)>> endobj 208 0 obj <>] /ID (node00026661)>> endobj 210 0 obj <>] /ID (node00026662)>> endobj 209 0 obj <>] /ID (node00026656)>> endobj 211 0 obj <>] /ID (node00026663)>> endobj 201 0 obj <> endobj 214 0 obj <>] /ID (node00026673)>> endobj 216 0 obj <>] /ID (node00026676)>> endobj 217 0 obj <>] /ID (node00026677)>> endobj 215 0 obj <> <>] /ID (node00026671)>> endobj 218 0 obj <>] /ID (node00026678)>> endobj 220 0 obj <>] /ID (node00026681)>> endobj 221 0 obj <>] /ID (node00026682)>> endobj 219 0 obj <> <>] /ID (node00026672)>> endobj 222 0 obj <>] /ID (node00026683)>> endobj 213 0 obj <> endobj 224 0 obj <>] /ID (node00026685)>> endobj 226 0 obj <>] /ID (node00026688)>> endobj 227 0 obj <>] /ID (node00026689)>> endobj 225 0 obj <> <>] /ID (node00026684)>> endobj 228 0 obj <>] /ID (node00026690)>> endobj 223 0 obj <> endobj 230 0 obj <>] /ID (node00026692)>> endobj 232 0 obj <> <>] /ID (node00026695)>> endobj 233 0 obj <>] /ID (node00026696)>> endobj 231 0 obj <> <> <>] /ID (node00026691)>> endobj 234 0 obj <>] /ID (node00026697)>> endobj 229 0 obj <> endobj 236 0 obj <>] /ID (node00026699)>> endobj 238 0 obj <>] /ID (node00026702)>> endobj 239 0 obj <>] /ID (node00026703)>> endobj 237 0 obj <> <>] /ID (node00026698)>> endobj 240 0 obj <>] /ID (node00026704)>> endobj 235 0 obj <> endobj 242 0 obj <>] /ID (node00026706)>> endobj 244 0 obj <>] /ID (node00026709)>> endobj 245 0 obj <>] /ID (node00026710)>> endobj 243 0 obj <> <>] /ID (node00026705)>> endobj 246 0 obj <>] /ID (node00026711)>> endobj 241 0 obj <> endobj 212 0 obj <> endobj 200 0 obj <> <>] /ID (node00026970)>> endobj 199 0 obj <> endobj 198 0 obj <> endobj 250 0 obj <>] /ID (node00026665)>> endobj 249 0 obj <> endobj 251 0 obj <>] /ID (node00026666)>> endobj 248 0 obj <> endobj 247 0 obj <> endobj 181 0 obj <> endobj 180 0 obj <> endobj 179 0 obj <> endobj 255 0 obj <>] /ID (node00026722)>> endobj 254 0 obj <>] /ID (node00026721)>> endobj 257 0 obj <>] /ID (node00026724)>> endobj 256 0 obj <>] /ID (node00026719)>> endobj 258 0 obj <>] /ID (node00026725)>> endobj 260 0 obj <>] /ID (node00026727)>> endobj 259 0 obj <>] /ID (node00026726)>> endobj 262 0 obj <>] /ID (node00026730)>> endobj 261 0 obj <>] /ID (node00026729)>> endobj 263 0 obj <>] /ID (node00026731)>> endobj 266 0 obj <>] /ID (node00026732)>> endobj 265 0 obj <> endobj 264 0 obj <>] /ID (node00026720)>> endobj 253 0 obj <> endobj 252 0 obj <> endobj 270 0 obj <>] /ID (node00026737)>> endobj 269 0 obj <>] /ID (node00026736)>> endobj 272 0 obj <>] /ID (node00026739)>> endobj 271 0 obj <>] /ID (node00026734)>> endobj 273 0 obj <>] /ID (node00026740)>> endobj 276 0 obj <>] /ID (node00026741)>> endobj 275 0 obj <> endobj 274 0 obj <>] /ID (node00026735)>> endobj 268 0 obj <> endobj 267 0 obj <> endobj 283 0 obj <>] /ID (node00026748)>> endobj 282 0 obj <>] /ID (node00026746)>> endobj 284 0 obj <>] /ID (node00026749)>> endobj 285 0 obj <>] /ID (node00026750)>> endobj 288 0 obj <>] /ID (node00026751)>> endobj 287 0 obj <> endobj 286 0 obj <>] /ID (node00026747)>> endobj 281 0 obj <> endobj 280 0 obj <> endobj 293 0 obj <> <>] /ID (node00026752)>> endobj 292 0 obj <> endobj 291 0 obj <> <>] /ID (node00026995)>> endobj 290 0 obj <> endobj 289 0 obj <> endobj 297 0 obj <>] /ID (node00026754)>> endobj 296 0 obj <> endobj 298 0 obj <>] /ID (node00026755)>> endobj 295 0 obj <> endobj 294 0 obj <> endobj 279 0 obj <> endobj 278 0 obj <> endobj 277 0 obj <> endobj 305 0 obj <>] /ID (node00026763)>> endobj 304 0 obj <>] /ID (node00026761)>> endobj 306 0 obj <>] /ID (node00026764)>> endobj 307 0 obj <>] /ID (node00026765)>> endobj 310 0 obj <>] /ID (node00026766)>> endobj 309 0 obj <> endobj 308 0 obj <>] /ID (node00026762)>> endobj 303 0 obj <> endobj 302 0 obj <> endobj 315 0 obj <>] /ID (node00026767)>> endobj 314 0 obj <> endobj 313 0 obj <> <>] /ID (node00027005)>> endobj 312 0 obj <> endobj 311 0 obj <> endobj 319 0 obj <>] /ID (node00026769)>> endobj 318 0 obj <> endobj 320 0 obj <>] /ID (node00026770)>> endobj 317 0 obj <> endobj 316 0 obj <> endobj 301 0 obj <> endobj 300 0 obj <> endobj 299 0 obj <> endobj 324 0 obj <>] /ID (node00026776)>> endobj 323 0 obj <>] /ID (node00026775)>> endobj 326 0 obj <>] /ID (node00026778)>> endobj 325 0 obj <>] /ID (node00026773)>> endobj 327 0 obj <>] /ID (node00026779)>> endobj 330 0 obj <>] /ID (node00026780)>> endobj 329 0 obj <> endobj 328 0 obj <>] /ID (node00026774)>> endobj 322 0 obj <> endobj 333 0 obj <>] /ID (node00027015)>> endobj 334 0 obj <>] /ID (node00027016)>> endobj 332 0 obj <> <>] /ID (node00027014)>> endobj 331 0 obj <> endobj 336 0 obj <>] /ID (node00027018)>> endobj 335 0 obj <> endobj 321 0 obj <> endobj 341 0 obj <>] /ID (node00027023)>> endobj 340 0 obj <> endobj 345 0 obj <>] /ID (node00027027)>> endobj 344 0 obj <>] /ID (node00027026)>> endobj 346 0 obj <>] /ID (node00026859)>> endobj 347 0 obj <>] /ID (node00027028)>> endobj 350 0 obj <>] /ID (node00027031)>> endobj 349 0 obj <> endobj 348 0 obj <>] /ID (node00027029)>> endobj 343 0 obj <> endobj 342 0 obj <> endobj 355 0 obj <>] /ID (node00027035)>> endobj 357 0 obj <>] /ID (node00027037)>> endobj 356 0 obj <>] /ID (node00027036)>> endobj 354 0 obj <> endobj 359 0 obj <> <> <> <>] /ID (node00027038)>> endobj 358 0 obj <> endobj 353 0 obj <> <>] /ID (node00026534)>> endobj 352 0 obj <> endobj 351 0 obj <> endobj 363 0 obj <>] /ID (node00027043)>> endobj 362 0 obj <> endobj 364 0 obj <>] /ID (node00027044)>> endobj 361 0 obj <> endobj 360 0 obj <> endobj 339 0 obj <> endobj 338 0 obj <> endobj 337 0 obj <> endobj 371 0 obj <>] /ID (node00027051)>> endobj 370 0 obj <> endobj 373 0 obj <>] /ID (node00027053)>> endobj 372 0 obj <> endobj 369 0 obj <> endobj 368 0 obj <> endobj 367 0 obj <> endobj 366 0 obj <> endobj 365 0 obj <> endobj 377 0 obj <>] /ID (node00027056)>> endobj 376 0 obj <>] /ID (node00027055)>> endobj 378 0 obj <>] /ID (node00027057)>> endobj 381 0 obj <>] /ID (node00027060)>> endobj 380 0 obj <> endobj 379 0 obj <>] /ID (node00027058)>> endobj 385 0 obj <>] /ID (node00027064)>> endobj 384 0 obj <>] /ID (node00027063)>> endobj 383 0 obj <> endobj 382 0 obj <> endobj 388 0 obj <>] /ID (node00027067)>> endobj 387 0 obj <>] /ID (node00027066)>> endobj 390 0 obj <>] /ID (node00027069)>> endobj 389 0 obj <> endobj 386 0 obj <> endobj 393 0 obj <>] /ID (node00027072)>> endobj 392 0 obj <>] /ID (node00027071)>> endobj 391 0 obj <> endobj 375 0 obj <> endobj 374 0 obj <> endobj 397 0 obj <>] /ID (node00027076)>> endobj 396 0 obj <>] /ID (node00027075)>> endobj 398 0 obj <>] /ID (node00027077)>> endobj 401 0 obj <>] /ID (node00027080)>> endobj 400 0 obj <> endobj 399 0 obj <>] /ID (node00027078)>> endobj 405 0 obj <>] /ID (node00027084)>> endobj 404 0 obj <>] /ID (node00027083)>> endobj 403 0 obj <> endobj 402 0 obj <> endobj 408 0 obj <>] /ID (node00027087)>> endobj 407 0 obj <>] /ID (node00027086)>> endobj 410 0 obj <>] /ID (node00027089)>> endobj 409 0 obj <> endobj 406 0 obj <> endobj 413 0 obj <>] /ID (node00027092)>> endobj 412 0 obj <>] /ID (node00027091)>> endobj 411 0 obj <> endobj 395 0 obj <> endobj 394 0 obj <> endobj 417 0 obj <>] /ID (node00027097)>> endobj 416 0 obj <> endobj 418 0 obj <>] /ID (node00027098)>> endobj 415 0 obj <> endobj 420 0 obj <>] /ID (node00027100)>> endobj 419 0 obj <> endobj 422 0 obj <>] /ID (node00027102)>> endobj 421 0 obj <>] /ID (node00027101)>> endobj 424 0 obj <>] /ID (node00027104)>> endobj 423 0 obj <>] /ID (node00027103)>> endobj 427 0 obj <>] /ID (node00027106)>> endobj 426 0 obj <> endobj 428 0 obj <>] /ID (node00027108)>> endobj 425 0 obj <> endobj 431 0 obj <>] /ID (node00027110)>> endobj 430 0 obj <> endobj 432 0 obj <>] /ID (node00027111)>> endobj 429 0 obj <> endobj 435 0 obj <>] /ID (node00027113)>> endobj 434 0 obj <> endobj 437 0 obj <>] /ID (node00027115)>> endobj 436 0 obj <> endobj 433 0 obj <> endobj 440 0 obj <>] /ID (node00027118)>> endobj 439 0 obj <> endobj 442 0 obj <>] /ID (node00026480)>> endobj 441 0 obj <>] /ID (node00027119)>> endobj 444 0 obj <>] /ID (node00026481)>> endobj 443 0 obj <>] /ID (node00027120)>> endobj 446 0 obj <>] /ID (node00026482)>> endobj 445 0 obj <>] /ID (node00027121)>> endobj 448 0 obj <>] /ID (node00027123)>> endobj 447 0 obj <>] /ID (node00027122)>> endobj 450 0 obj <>] /ID (node00027125)>> endobj 449 0 obj <>] /ID (node00027124)>> endobj 438 0 obj <> endobj 414 0 obj <> endobj 178 0 obj <> endobj 152 0 obj <> endobj 151 0 obj <> endobj 150 0 obj <> endobj 149 0 obj <> endobj 148 0 obj <> endobj 109 0 obj <> endobj 108 0 obj <> endobj 107 0 obj <> endobj 451 0 obj [158 0 R 160 0 R 161 0 R 162 0 R 164 0 R 165 0 R 168 0 R 169 0 R 171 0 R 172 0 R 173 0 R 175 0 R 177 0 R 114 0 R 115 0 R 117 0 R 123 0 R 126 0 R 128 0 R 131 0 R 133 0 R 136 0 R 139 0 R 142 0 R 145 0 R 154 0 R 155 0 R 187 0 R 188 0 R 189 0 R 192 0 R 193 0 R 202 0 R 204 0 R 205 0 R 207 0 R 208 0 R 210 0 R 211 0 R 250 0 R 251 0 R 183 0 R 197 0 R 214 0 R 216 0 R 217 0 R 218 0 R 220 0 R 221 0 R 222 0 R 224 0 R 226 0 R 227 0 R 228 0 R 230 0 R 232 0 R 232 0 R 233 0 R 234 0 R 236 0 R 238 0 R 239 0 R 240 0 R 242 0 R 244 0 R 245 0 R 246 0 R 255 0 R 257 0 R 258 0 R 260 0 R 262 0 R 263 0 R 266 0 R 270 0 R 272 0 R 273 0 R 276 0 R 283 0 R 284 0 R 285 0 R 288 0 R 293 0 R 293 0 R 297 0 R 298 0 R 305 0 R 306 0 R 307 0 R 310 0 R 315 0 R 319 0 R 320 0 R 324 0 R 326 0 R 327 0 R 330 0 R] endobj 452 0 obj [417 0 R 418 0 R 420 0 R 422 0 R 424 0 R 427 0 R 428 0 R 431 0 R 432 0 R 435 0 R 437 0 R 440 0 R 442 0 R 444 0 R 446 0 R 448 0 R 450 0 R 333 0 R 334 0 R 336 0 R 345 0 R 346 0 R 347 0 R 350 0 R 355 0 R 357 0 R 359 0 R 359 0 R 359 0 R 359 0 R 363 0 R 364 0 R 341 0 R 371 0 R 373 0 R 377 0 R 378 0 R 381 0 R 388 0 R 393 0 R 390 0 R 397 0 R 398 0 R 401 0 R 408 0 R 413 0 R 410 0 R 385 0 R 405 0 R] endobj 453 0 obj <> endobj 454 0 obj <> endobj 455 0 obj <> endobj 106 0 obj <> endobj 456 0 obj <> /StructTreeRoot 106 0 R>> endobj 457 0 obj <> stream x xE?螙+3ɐpL #i@KA\ *]Ͳ.\Ԭx' *"(,ת.??lM[U]=[ ppI^H 6,iX `{^:y~n8/S,o|̹_r鈡o^_2y|BGdeQ`@dإWdyy Pp͘69vlS@3MvYM7b=f\ ?S ^3ow}^H󥓯/j9L/6ދfB>E\r><{xa] 6Or;aa\VXo?`#ؾ91K{b$7Mu둭lgd }[91v[< p>"b//a:0,r'p߮T;GJb 8?N-2(\٨. ~@1:"LR܃UnG_a4Ʋ~ ue/NAϤXyZN^&q[νşo wď;?8ian4o103gn6MUcTy|RyyaaB m/pg8;Of>vOr)mPgޖtOҧ€TT@E}a2?Se[^XSe V0 `XEncYbd,8%(F JG-fb*`bc<,|'cQj"1s07`aajlK0 134LL|4E=0K1s010Kk,܋a46ɘ?c2gLTߑñ1qzL˜8~Tb&`̨cϙFY7f1"ƨ"`uzF쾹p)0jf2..ƒ/d,D NcaxYG~ZnҺv'-d' uB u uh0O:LO7tmXEsw7(މ v1Q|;vr%b'd]<eka7v  }ѻ8&soEMBM5(e뱉->?ʛD8}460ێp=n_U|^?`:khr<*7KB?4A1#Lz& ʐ(z,¦ ~*IO~N]'W?4=H׏Ë 8ґ #9~ ǐ\ӿG聞C/;䣷zz!(пE" PBտAJof(AkD0@0P (ӿB ҿ_a e8W0XBŹԏb0GQj(4T_`__ /0#QsQZF|FN?я`QaF~0p~cpƢA ?C=p&p!."L(&b<&bc~1􃘄'h%'Ԃ` S1K1?Z1WǘG0 0 0K<\~a!`!2Wb1+?++}X_p%˰Z߇pq+pW}/VbA~X_`5nǵIf}\[qc ~fܪAkq.~wq6f`zܩ.܊o6ܫq6~oa#ZЂ?ol&~ x@ ܋o>>ן Q_؇/a?wC}>·.|]]8cSp'ѡ?# ~]_?ė? '-1O;bԟĤ?cĬ&' 8Ilz;:#NzM^2F; : %pgPYP: Bg,+ &< ~Q`||Ws >nfpO2 >`rf[| `3kW3\r0Xp|043mR4O櫯y2][vUK/y2\ɼt~'sμ4Ois^h˝y,;sL;s oڌk/H_veUz`iUz2!TaxNx1"N9 ߃`/~6Lkm]e;vmܲ!,| 6Y-+~\}%~ۆ9! }ޡ2hέJ=zѼb[A8{2i~*>}RPT},srv-`L{wqc\-e;GB'͡s>Ņ=eBmz}C˴=Bp6zFs\V&5Fs莍.ԲA {+l:5gZ Bh݆9BM/>ܶKvؐ׫lsپ |A\Hk#[sz|m[͇^l#%ڛt6aӓye֞UGٞ<;,{iVҎʖC+PE<ąZ+6{ģ={$a Bڭfvg5By9tj>t$|Z:))I$tjv5 Z->]դjwKݎ~n[ĭM}RQOFQGF`> Bs`#I?+d2琁,2sHL C%@sȰ#1J$b21bD߉#N#$Č Č<\^iVolAk-;ϱq* ?KccX[IۇC9Q{h=`S,+pJ#_wp6O'mWHkȰU!,a)(Sޫ I!Zn5<`g1ͩꅩ|6˰Sβ}l،unZ3oXDb/hY)`$cCnAt~8B O \+1WT5F`m|=z܈{p;y1vBJR1 L<+0[l; \K~ySq;_\} XQaeHW2 {`2v0ODGbjǥK_ODŽ|LH\\du;Va'nŭޒ b%&܌kq-.f+[4`B far'b؇рv c];f U >Ae/)[.*,ݫg~^`nHz.îڬE6IxxުYTqep_ hGTYw5l60Bwԯq8j}긐#'6뾮h Q\^|X\kV3"m Fj;i&%jh-PݎD^8QΞpgkpxzށ?Aج`ulf<*tG c_ &]zL\fU`Y Vɴ"o!` R=h  ӭYqƦ8 S-mzM;B%gD\όkѿym)M!%M!OlW=>YS7!Uo ?eP(3mFS LQ}lƴ&*&)8 nj>;CqKphr\駗i0z MC gURƤqD1Gq?rʬM^)f5|e1EX,:Y)ճ7Nce>KoWqA[5zFԀd;@ 767W)NU$O? _ĹV23TUxzmi|qCbQLhȋBj@aA{aA؆>}j8w$ZXPSUM5cG|IՌ ֌IJNTT`@4՟=u׷'ZX0,8yX?yrrJЯ(J&?|2MF_|h\mA [w@3?crXT}{OjNYP5 JUCFK~t/jゆ6S209q qG5U"/)0IF C7iRXӐco+p(hK{gڲ`KOgl:eaFfnc6q`ΪǥJ%s($+Ԭ/j(.V5ʣ~ćpy݄N8)4Zg0{ƉKxM)VjiB+ 9fR:o%_ cd4n8n=@aAW8ư?2;o@׽M45KuԗdK}kFg *,k}8ibRߐ@_JX#(*?nbg3[Snϥ B>7>,y!_5lFGP}?גU5c G* chqpܡrjnAnӰh^jH؆ЀU`zj3vLmujr|6Sۄd[6cn%c.45pηЪf|&m ߖ\XVFVn1id0-9.85)hX2U %Jqn_Ju<&#jg-,ؒGnqW 8xZ @y-/H]+ IA9嶊 A x`0`M=h,ml< ȋgaap&Rr'vl(<,Е$ ċF fFP`0JF`La4E*jfx%^%cWbx`I, Y6d46 FdMFA0d%h)4 _jx SW,(˂d2BQL0-C'&A0 VzdMF`x _]Q N`)0*(X0L5h6f3f6͒A2?g.PTg*ςQ0D_dUl6c0&,ɲ(DUe`d"KPx]V@Ί($&bj"d٠(h(A1(4 3"MSDR4&KWbxȰf%UabA f(Vj1ZHnj5V.+g{:?g.Dn]䨬KT%Ym]QBv',NZr٠Z@z12Z`<6UUMfq)_|C|NE.*ϒ"jWbxXm4ۭHKSa_1 lvfՐvbVn㳱̅݀'ŃʳbP]Q 7\iP<&inS@uڜva4L锭>~t60$Tg)<,Q<@QΚ2M+1J8CFYٲBߋ4g1vӝit6𦧧V+:ݓ,m?gL@Q(XfGzWbp#~KCn0^/J= Z}{e|>եfig{r̞( BRvN_Wb0 ~aqdyl_N=ƍ,OV(J(3++gz{xg{:~ׁ~pxWK@7!l @]_GYx{*-=vn{Hq[9Y/ 9&'<oyjQ ~ghnHphAW++CE^ń~#%inD.w^h(2Rl9q\kEX&$<Ͷy$J> ofɘnde4eW-[1YA%~d $!à8H =jEItX4IpJ1$;H7(+ Cv Ag`@}#| A>"I đ_^8"s~E կ;YJ,$Y`YK;㗲x{Ho1:%1TP6B$J"\3]G!!1~~tLjѦd06_@m1B6D:$et];=u+x,!ߒ;7g)ֲxRiV~EE/YJNCe 1 2BPCmNR~.rp 9m喁Grd\|_O 7n -&}.7_?D,ddjvH pJ*VB×CEo|@U$\YVYTTUUTT  5@QKͅè2j$$HŽ܃b˿n OV=ýF3ۜ-QADtފ38G'I|W~',۶`ΟW\䟛%Bқ{ġǧNNL$NsupXY,4@,EE,!#"}A7DW[#&L+tξ}MHEuRR/nEk5PF {f*DTxT:qt)[Lq\+g(?R͹]V`w`n`z4Xp܊_1fڪ7xÜ35[9e?H:/2 ?hhtoλx>}&;ĭڐ517׈52g[ o%t:ZN9H`T~#oFhNF-#T ;Gea1s{EJsj Xr IUѝ;F\=KfE/#S_5_?,U#w_6xt|AI~ؒ+F%>#4\bf9̓l͒Z%1 F%j"v&Y%)%HΟxÎ2{$v-ڃ [y~l[}'?!A>n\dmȘf}yNrz~3h?w-bVٜ$igqDsr^oc+9(H =D9*~kw.|z7wnҴsrw|C_YYĢϽpkbǗϻr ~p&J_3[6es1.lԪ%*sE)/ټ6eCJ1ܮlb'^i.pq[Bf>gzMCʦՄS=+]Uƽv u.7q7L. _z B#R,AZIU ĻʱmM?LSNgNe)KW/y8+4֮*s/ipU\ Q =/⇮Ez6KT^&J¾œ&6&tBR:*]i>g~iT.D7Y#Əi?]uu;#@ Kn[d ,I6%G.\?n|D_ rE~?0}!^ bIUPMf^ !*Oh-di>L J 2}L-Y-& ʊ"*#m"iFuQMh)2YMY\$WmA*+/a{$ 56:dTb!TvZuj5fV"Uj3 ژN1,R. "H5hJi&BF?XPX)/&$w6!ΰ!5^\Y8nᬎ-*f.k~%ĖpM5˧T;c]-KVe]SJFaydh& jP+j)E.TPkgQxWfz"o_i]+ȥT˥Υ]tZW@ h]r5,6A&b2 Ƥb$XnIWF}`ϤH=cslO"gv'\ٜyi 켚_5 pW'_s/߻naMmsmznlF]9.ȏMq98/\XI%0UئUv)d9A|!*42f8,o+q69%}5] u=TaIʨiD|(%IA/Udo7$Jͯjf/d,cO/X4;zw bsSWc.*vʩP;Dx7q45BqU(*oj1R#C-CjsA;V3-SujOjmC/E.-41/Nz[傹| qhUXS9zßoU<\' =,7櫷x'& ?Ek <1m 7Qx mCԨ¯Z@,9Y/iOu袞*(m֨s E¡nno1]`.J!e\7-$/Y~떄#YvH}{(b~PPS\ChGL9LVUw/c)=az)^wjJr؝幋,[")!撈F>ɾ$+UX?>!x&umÍkxpqIMܕ'>?Ė=X ^8j3UP$" tf6DMi QzҨFg0`Er3e6EJ0B \W) \,9qOK86۶R&F3Q([:Flw\ŢY2x: tצ辤8мޮ -7bQ6D-6! hA"ZM-ED26Y']53ɦin6Ri+|4\;y,?=zƚb[w=_vӽwP&U‹<MQ+)iDDwOx-Y^i3ن?efevvMN_!Y;}l4kRk3̫h(RdjHz47TTГ~O!2ؓMىt*T:󪙿itVҗfޙ`?ˍuqM:I&&uI[ͱ9f[)}l9)6'e ݼN5'ړ/wт±!4Iӹ[( $]m̅Q/]QUɨ]zQOǧ(!1,v\/Jsc?L|I2~DHj{λxKr&>>m-~n_~@eG޾lRyvhwvVNocgw;6o<>+z3A+Mǧc͒r-vNs쉜sڿnA0|JSp޴&#:馎=V<ο~*NPZOmf0~zЦYiP.uOIIR- V!xKTv=W,Rk1C?/pn'|M 18QJ-%@e BO+}CԥOx'|!!Z^e*zQM,9Q,2Sv4pٮd̫q2ѭv$(KlluWqAߡT+ڙhdiV9zW__wW^|- N߀sϫ/4ҝ_տO+c@A)q׈apvϤrp5 VI6 Q h4$Y$xzX} 0^:]WvmIᴝy؉(ۋr :o%\"1lBp/MKrٛ? }{#$2B"1E"n^sh#gJ6bAdd꽐Ll67f߼`J+ U w0k]K"RQԶ#Va?v=Bb;̍Cg,,K#u9!KzWiNSԴEjD xdJ*jE @ |*̇C=d+ 7BݎHlbƽ&BA0UI=v0G1Z>r,Q23YD@5l2}sꚣ }E)!;Ǡ%#2 |=TZu(}]TQU$JY 'jM> endobj 459 0 obj <> /W [0 [645.50781 0 0 273.92578 284.17969 0 590.82031 0 0 0 229.98047 301.75781 301.75781 0 0 216.79688 399.90234 216.79688 389.64844] 19 28 539.0625 29 [216.79688] 34 [448.24219 0 645.01953 0 619.14063 701.17188 0 488.28125 686.03516 709.96094 266.11328 356.93359 580.07813 470.70313 0 748.04688 753.90625 560.05859 0 598.14453 531.25 523.92578 0 0 934.08203] 66 [415.03906 0 508.78906 587.89063 461.91406 588.86719 522.94922 312.98828 588.86719 565.91797 242.1875 242.1875 497.07031 242.1875 861.32813 565.91797 585.9375 587.89063 588.86719 347.65625 424.31641 338.86719 565.91797 479.00391 722.65625 458.98438 483.88672] 135 [406.25] 163 [273.92578] 195 [216.79688]] /DW 0>> endobj 460 0 obj <> stream x]n0E /EdL*!$E*{AY=4(l^eanV  bt0ќuq06HQP>aЋ+Ujžwj3E{<QNʒ* ֍@Yi.}t|38pi`; 3sKZu]w~Bյߝ yI ǁ) F*Pv bgcI=UI8x | y6{Gll'XDk^X5k q49",fXDys%C<n/NެC koif/c$ endstream endobj 4 0 obj <> endobj 461 0 obj <> stream xW |MyK-"HmlRҰ0LzVTRPoN2oOsSOs xV |OR}Ozs;R0h[')]\@R4?V ﭝjr^e[MY)@*V(3q1m!(~nuKңIdQud̀$ Tc<^֍gè_w[0CR^I:Ic}L&+>V5ZR$I2BёcTct6LÇץ0A˘K__F :+Oda!xJ3Wbf? ~' 7Zo~U7ݲᾏPc4@.W܂8)AeuTU`2\J@4h9aj^tRNtΠ(ƣ A4 1 M0kQPEXh,Tsc$f eGذveXJZv{Y2ڽ&{ o6 'lKRC 31=ӵ;lJӹ+뱝}wwu}N{vj"z=c;sԗ~e}G<}'v;qչK6x=w^/=6^zlx=hIRIᄋG ɮe7C7f].9ؚ-nuAy1_!i^66ci`_lY=Wމ~_>Xl =KU/>ukUk_K鈼P|ݹ\Cқah63&Á+Kϋwش6wmVo&Є~vYaP.,wVdIn̜.ּHTE%c;.B| 30 FE"($H(RBHEu# t 0%`K0B] O`R#.bD'<] \E`07jWF`a a(]a5A_Cp#\C17c:kE0t?H:,YdcEFY:\p-h3qtN\Ggp-W< p=}0xyNzDq4&f:Q@pSpM_fӗ(DЗ(B }7n/PRQF_It%Nx$JQA'Q :I(G x1N?㨄c2t\ca*Lc 1p}jsL8 t?EtQ܆tA̤#ӑF`-n#tX{a@޳t hChĝtc.!<:٘O$pڛN,{[s:yc>~An>,?x~IsMx;}l.z~>>ڈ-KFl~ڈm8@a;{=|>ڀp6`qڀ]8Nb7Nһ؃/]t ܋S48Cq@A8sq.zZqh <ĕPuB OWLLR T*¯*"5𓂟$xp!='[Ui*n^)'mIɅjarN65js&&mZZ.;ܡ:𻋬v{ 'E„B y4jcҖ*Ä`VJZr(ݑCܜGE|fdyZYZiG쵊_:Y-זm1htw¨~k, ;aTUhzRu`ք'8Lj7EϬ#(Wk-/D3h"gB('[:O0du#uUj@mP֦GHbwyRfdsKz8ڷ|{Ew%=f%bTK'Gj< (nxU> endobj 463 0 obj <> /W [0 [645.50781] 6 [604.00391] 19 24 515.13672] /DW 0>> endobj 464 0 obj <> stream x]Ok0s=,ږ$P\C~6P'!ƃ߾$zHǛ7x#8cђ 5h'K(XʿgD;k]bb܀g߃`iӭό?8#ELJ082޼*fm E˭&6Pf.4\Mj!PmJdk yIB-DYDE;Zuh;=džt!5qb+GNa-Q|r 0wA endstream endobj 5 0 obj <> endobj 465 0 obj <> stream x|yxU{Uҝ&aN҄!!h\;(Q!#h`38:VP1; (.%MUwBЙyo{=޳sNUu@"L-p h8{KWu`ƅy%˂3Y̞Yg_x{!tveg9@a? 9M^6域B sǜMⓃrC̙H=~s.\v7ȂE3/ /[̵Z ™bDx_h2: \_dioXC˃  $D1`4zgiBn{|U}žAo=m+C@ެчBs?Ѯf0r2!m| ԕ} 3f1ðCg jI*0Aq۴1x0Htwub>H`!":\qWP SB$0 h<9B?9\+-s.j7jr/9Da\>\ ww:~?L(,6 2Y,&-Mi&6[;͟[ZXްz5֋Yc=BfbZ-(fE8-G-wsJ]۹K1趷 s]Fvf ~nv!v)܃iha!77-\!j>)^LlG޾/aM6q`Ic&v)a>E{9;.}}-Mg=EG|=5w083i޸=Y@~i'X 6 +@YYzZb˥[X_G[X ^"s?>Nz x-x4I r1*f`Cys}<|>310S0zBt,4l]Ab0XgNW܏ JP XEXEe ;Fg` Zl2,{35\h10јXALbBr8=X`f1cI^^ڋC2t4bcF,טiܱX9Fb4yY/陥#,F]ZgQӠX:=RTז ѤK/ec t-;\?St:]v^uR]sW'ƗsK1HLǛ>7x3/ͼpǛ`Ǜ9'0UK2]rgΞrgΚrgΜ ̜sE+˫D2atL22 F #D&`d ECxgZ&R1 *fs동ȳ13fkm:)&Tj.OBdzAI;~D63[㟯d"E-i(b+sö~a{v-cӤ)Fk7H(L:0A%-wW?.l x c2s֗cg+YN|Fݕ㊺bS YV!ꖼVFbPŀ~@]ᨰW+ cuDqԠn$5n@+}밑p}C}7 }.nŝt?ZqݏݏMgn=^nfзGG;}w[ox{NĽz[ o>}A|Gw;~;щs8ssB@^;%!tBWkpY|KxݎHb#1g1g3gpX38AtDAkJd-Q4mjvYՌ3QU#HT~Za򲡥Cb%EA s2~v9dY-fQ4<2ħ)c PXƢ4G8kv$ʓ%Y '}RV+\66)jCa@x2YXdTՇBS1 ycM4> 1 &kqy(< (W{?#qng ڱr(PD&ORPB\_+ĩxSЦ('2nnNXJ`K^B!IfSUj)YXv*\e%XN'zTkg Z Fn$nhPP(TX8OtmAqDzZT+E"T)JQ m-:$LoXM+lcl^:%fzͫ־ sGꕦ``Kx66Aa#5o3A3YXm (9X#ؖjܠmi>5hHɤ R0zM%^8IWNƠj5PXBPHS>1-ʦy56[nNg- Ծ`)jj}p -Ơrn(#ĖjƦ)$ڙDU)::]j%82jӴd(w6/-ڊ<B;B jjGt._+YXP3L|5-Ѯ@JF55RV0jK`WP2؝,,2*AWMpKҲ!|A!ZT9dXaAPQ5s4M=sS΢2*d5>gJs"),P,U@p^:"k4`J}U N ̫;9-@`47) MB#!eդT?-HD#IiFh#zFz7C>t_{nÎ`<_wMʶc"gLXe`5("-R8'HH%Y(#کa=;RS!Kg qO!m]}J97˓Š@ _v5_]ZSR Tl?VlG@ TP`VhV #u7 w #5WPiNR [[s(A‚`BRWRy }h:+_K^uh*"=KgF}1uX^0 (7p[D  ի a1gyoIzEA4rA04z sk"ZhhxQL"S5hDe EEx`)Hyzfm~"p(Q]IVf$fI$,&7׃L'zq l1X$$ɒԋt8ܰܢa x<2}F5m$ˢh3dYVlf|sS`huXZq;]^H꒲>'\N(btZl`7)n&Izizm>=.g Tz]av9F٘t\_OQ~Kz vRҋ{83fב껠#{\VdrBcg& n1sSG6^y2pgX w`Џ>9g6{y~/9~wn&bpAfg3##ы_7kudz"pY~}LX|@f0Na?/3%EAeqg2323{rsγr|`F/; ggYւlǑ)L-j?/~/5󗀅 X7rvģ](&伐~pb+{,-rgA G1e|T&Ѯ""ezy7Zp%L $EHq -0dڻs? GA!6څHq77tX~8mτ&K ,`QTF vFw˄5`p[`y VM-)`oK|fti,!%AY 3q"@Q{G=NpGd9;ު^tbPl Xp%E0ܖ2S;)2fvg-;??(JN!Ԧ!~ QDh`mCxʳc[ 6̫hci -=7\hs;g5CSYCRlƭ pقx49eJ辒v[?û*V"kmBd4ے$(L>t8) mɠeoK i iG_4GQkGIqQY'V2tH(\  Ju;xvq+){@amKmIpQw:)pr C8ocn.'>uk,;۸wS)]07߂0pF"׉~&L9ےivO[ncmI EtO#q٘p`tcFםε1f +p\}Lv@lYMMa睿iϳ'+*Uq^"^?<^36ɐ= <2\3kO[z3 2jj46>>hL00D4ڋ]lKY;dKF8J %`KbB+ 5z@+5uģ^J*q_4nH;R"šthB -1n> d 2n!p.+])sW^wGJ,k}r]}KDm!sHRVoVO'%dy-Zxq WzAf}̴}pdDݧnmK:HYH>VOU_e+>yr- k6`ى"nrdy I]0LV7Ϸ\ia,shv8q9$cQG<.k 7/6ĆH Q_r'MPo;Tdu[η/r0:/dٷ!)~$Dڐ$oYůpC%]%x+㧺!GO=Nu\C=ߴ\qk-w]^ŷmp#rs.}:lo#aus}qL,l"+5N?2t(O-B5/jV?$vVԑ GVK&=~NZy 5듄VXQ&th4 RMw=uxۺG ="m1 F Md1!faDC$"qVRjES9z!!˲uw(+p{I/vǷ` %~ >9ftR^[2H+x"˒G)C M_H+)C!^:vKCdܗӃ'޾u L#x{)/ %oE %)O + J>m1TVVVjFBaY/;z |[4h;wMI[ J= ti'oNAYq}uYJfSAeZ,wg¹#1f͉+SeOKRqG6H(HxM6pf px]r,43L{?ZFB;Z3Q!y=ii6$l[8y61- uQo;M@A *8d2,UZ)Gmv{) C‚5=n>IHxj=d#+%H{ג{x|7 p'm'},mmpb`ms3X#c,ͼҘ&+CN_*ݓ3dA `Y8 o_ Je(K d9EWW~#2A]]:IK=K"n>ߦg  8X$VHBV2!"D;TiIO&wt Ov=J7]ݍ6d擽٢!),sֆ%& d22ƕhWD_DP̆t'vg^"k9᧍.l"o3 '_y״KoNRIf]GJQ bfp~)o'e5?#~n6&gc. Xtd%JdljѤ_ ݣlgC=t,tDm%)T>V #(N]`BMb 0Z-I&`"~;ی&ǭXI,Fb"&Ivùnw9\yъvu>w]GO߰Vvw?# |!uCk4֤㵻YIĹFc.ZJQor V'&(u//wB}ȅϞ<[s~7w\7;|d曺]gpyZFDFsIdfNl o=yΉbA5kܲ)ktۮ^6Cu.$ Hf N,V, ԅhtIS-Ikk;;Ň?>ZfYCE"duHZv=lMRi:-l2ewq;oZٿ 7S}ưK4:FN_/$SWzp9$Ia 8r01QxݞgY[Y>i7IDl.ЎR((oPK"=*+PޘnZ6^q-:-vο[Ƽ;|LjyUo2gZ&7 {=6q:B Mwr0($˻;8u;~z ;q&,IA22տ8sQ*!Vy"Ϝץ$>F,ꇇqukoGrCrC?^_:[zf'nrv!9Sq􍛧 -no߷cqOԽ둗գQ/3qSoai'$#nMG.lcO\د̸O=x\^z_ .J7ԽyQ3-ma [EU [8YӒ畔D+t~xЄ-\Tp艻T\8v9k,?͹ %Vw[.Id,a dnǀ<_L6.ݐә'V?\ǽNY;꒍oZ`]%eKF;`e<[33Vh|Ȯ`a 48%@wߍ?_1T,iv-8W'7sڹow?AaQJFF3jq ,ffhLEK'ԻSKvrFuqdy p2a f+9mVvɬ'ˬ=A%$~lxr+',H/U_?5Ww9cݪlP;{4P٠"@w \c@P9, .sol`f-.cZ5_k1ܢRdΦܬS\VxMZKȷn>Xuvlbsc# 'c80o/QPaaEZEdm z=e%qSDz8nVCCw{dgxv?=$ yŁ~nW~.w~<+[/tt endstream endobj 466 0 obj <> endobj 467 0 obj <> /W [0 [645.50781 0 0 274.90234] 10 [258.30078] 16 [401.85547 241.21094 413.57422 555.17578 402.34375 555.17578 555.17578 576.17188 555.17578 558.10547] 35 [954.58984 671.38672 604.00391 621.09375 717.28516 0 502.44141 697.26563 735.35156 291.50391 396.48438 610.83984 488.76953 924.31641 767.08984 755.85938 584.47266 0 622.55859 544.43359 551.75781] 68 [521.97266 602.53906 470.21484 602.53906 531.25 344.72656 602.53906 582.03125 261.23047 261.23047 524.90234 261.23047 885.74219 583.49609 597.16797 602.53906 602.53906 370.11719 431.15234 361.32813 583.49609 507.32422 756.34766 0 508.30078] 163 [274.90234] 172 [813.47656]] /DW 0>> endobj 468 0 obj <> stream x]QM0WJbԖb<h25K&]7ޛ [k-OGmuy8 tIO{KX޺m0f\HQP>`ҫw=TjH؛Sങ^wGº0񔓲 F޾3PSxӽ*'(Xm/fRpyIiQyT Ӓ ^"" kD+*2ȬBNpq*O}o&(JZV O E111`E{='b尚}ib*\ endstream endobj 7 0 obj <> endobj 469 0 obj <> stream xM1 0 C]!O)) UM=aFKQcq"61a\&[մrb"} endstream endobj 470 0 obj <>>> /BBox [0 0 1591 2023] /Group <> /Filter /FlateDecode /Length 1762>> stream x]I#7Wp/40=a)JedEpc@?|xoo~2˜2̌$:ߋ=i[D ?^Hol2qz33%}M@ҕ"m2'xP`ˈo-r< ^$Wd⊺.W8W>`-'1<$2fVAfc6BUr#؏|OJ"1C,zc1,[ޚ,)jxi;[Gô<`ø|aBSLU )[&k8~p<:ׁi%o :9Y!m6с+.V*BMbAN[ˆX*"Vqcw$V)byM  @Ɗh_AoDFԋH'`{ 9J^O:*:!OejV:M8א踟N3WZ;}+ eXw ;tA@W D+ R9%PG ٦H> `}*X!Rq⍐t;ЙJRAhY-JwB*:Kb)%!UB$b~ O@%d21٭Hv!GHGWɇclkdLq;/b}W(:o 4Ʈ<*cK4]+ih3sCjc:u>:PybVZ`{8[g`Sw 7*OMlqz݆Ѩح"YE`B_NG"i8Ϟފz <_pR'o C:g<2,6;~PS|.O<4_-p( NxSK•p谫ǵфٯ3 +Ѐ|.C*F61P*jUPr4i3PCNc3I#V,%OGԨCV:RcVf;TB!Mr€ɺ'?hDWi ^ 'K`dN;ݹzl;s̼ .Kmg7RI4ṕAdǨuk>=oT}lJǪFfeOϷ۲ W+c>zdC8τm4lSCNeqr#}}|Cz|FYݤIs{uo$+zv"1u+72)3Yi?r,7󜋾gƷxM;z=؍Cڻ\_>YDsT㍠zΌ\fW BIx"SPUqz{^Xe\Jm GT Vs;EeS6TN B8;cS 7ϥzϳ{M>t,cZLu\] krWgoV`vTԮEۯ?P oSpDx$mn}ɬp˜nzfʪl Rdp7*^U}rɾnCx朿hq-=L5?utJ(B7Fh׶MDFiu.v:HI`H]79> stream 2812 0 d0 1 0 0 1 0 0 cm /Xg4A8 Do endstream endobj 472 0 obj <> stream x]j0D=& '!YZ;z%d/RM =°3vjuK>HvaaI;y7ULd\[SKC`BO =OvwqB0)z3f&^c!e]u5">pb24"M#A\!-a%A׳EWv).)!ZA(R o> endstream endobj 473 0 obj <> endobj 14 0 obj <>>> /FirstChar 0 /LastChar 172 /FontBBox [102 431 2193 -1740] /CIDToGIDMap /Identity /ToUnicode 472 0 R /FontDescriptor 473 0 R /Widths [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2812] /Encoding <> /CharProcs <>>> endobj 474 0 obj <> stream xZ |EWw}L23L& Izr9B2$`D<@a<*ѕs]e]wWQ@DQ!J{&@_WUT'7 z~=Ph_Nf$W.Ϯ!<̊þ@;%lIOҾ97|#'702 LCH͈׋ݧdǟdNW`AF};)F\SלG-xFң{?MtnU N+#!0IxcOFz/=4'ɭ=F~^|T%;3`V%;׳Kg|R=1"3|锹}n}v?/;3^o] LO`1}WbSmdb2eSZZnN^7guWqxzezʶ$Wm=YOīqz"|='~̂]fO*KQvn,B;[`G}\*MBIfRJ`c )Gs cH)fRhq'X`&jE_G-0=f=6=XnbizHsHKh^sגn-]rT>#ѕqWgF`TkFSAc:%]&[*]&$M;M6.T&܊슬BEZ"^aT*l*-D5ZJ hZ-ņ^VhI83#_kz Z$^-fp/q @"*u4L KkS#RLlNA*njq8,SвAnڞrC/U{:C Z{[K1>K^2ZD{IKK44+~0DRT0Gܮ\ i$mL)[ jnJgJFoM@dh)蠧+Fz &)a~V=`C" N~;I8섋DIBE2Rp#~o ~4x7H dЯQdүEIF&WB #KB6D%r_"K('C!=<G1=bE(_ QF((AG)F(C=r0~Ѩc 8z cQMD~qgA= @?E駨C1~zLh?&MDb2QLA =0E#ΧGфG0z-A?4̤|̢`:fOVpsǘV1f*xG#\`=(F۱F1釘%CK~Nt+!,JzK!tRzR>.},SrcЃX+~q p)~Fe {X =U5Z.֡a}?u]l]\;;7wp-noз=ml­-\[ӷpз[~܈_ wwow7q+~MmJ/n lo%7p~G_:@_]݇_>lş>}ka} NNt/Ńt/^D/}>GlWN=WgO O} >)|S8oS'1N' O∂} >O!q|NX8+ qchchcc8IQ|GLQ|O,O0`JU>34S3PFVj*j8 ɨ7kҨ|L)Ni J ?-}F[L̾v(j- LZ-pia :htZ@A N*CJ䆛IН˾E/רcxf_?V *F6 n3˅aO;2:٪Q=lFl_c@ }PFo2&5LN5)vZW7`>h1 LpZ̀ޠ @+aX.-g3Ym#a"PU=czn9l=iWSxA_㭙]oddvm'J14z;)'dwCP nJL3^ڷl$8H%ĨFĜHV M<ڢ:+,IWl5CULZt!7JZ lwՂtWSlGƑH$)'thm/Z^˦deq[imXnO7/=G^e`<х [i *SݤLq -BII53¡Nono z-mH| r57H M3:[cESX#}ϥיJuG|&q uK%\.SA´p/v%g*ajXbrЂ= #{Mqi$57kYsn3-7/K"/]Y͚D _*<hPXۼ%?wBu MrQYGk|')/39hXoB%[?dΨTjn%Mm;pk31^d|nW?U7𪣧2o(=U{aG.tâ 3d*-Kju<'RJۡ7lU+Ji967nWisj'O9Z}=&QuFFNvnh TUYm@Q!!^͜q[&OI eFzI=mdG̦z|u;gXȢq(G ̯Vk%iS z`.{ pYMǏ/vՍl2~L~Ѷ;Yޥ2.e଱9uصkZknW4oE93M9Zi٣gg*[ p΅> endobj 476 0 obj <> /W [0 [645.50781 0 0 274.90234] 17 [217.77344] 55 [525.87891] 68 [541.99219 0 436.03516 541.99219 486.81641 0 0 557.12891 258.78906 0 490.23438 0 857.91016 562.01172 535.15625 0 0 354.98047 395.01953 323.24219 558.10547 0 720.21484]] /DW 0>> endobj 477 0 obj <> stream x]Mo0 9*ᣥ"q؇hbX yvlQ֗ښŻUwj8{,6*<o54`m7<\|@o9[&޼ol72}6pɊk(_ZvLXv\9nԨarX.ϫ V{?ީctR\X+E)ɐ)R""+iB2Ȟz0,=7LgKPR {ɞŏb~뺓 =؀c3u[]P endstream endobj 78 0 obj <> endobj 478 0 obj <> stream x |SEsNNn͵Mi9' 4Z(W چ(i)h "*E@/^N[^pEX/xYuY*몀ஈ@7s&"<>|ޏ'M33$:hj˧ddo mچuZoz<7ܴ;3eLiSC+H2R g0'i;Xc@nssc@``E7|Ѹ@ @-ZF5j03}~ͭ ?Uoeu%- P2>ߺ53  jPC (@ڍFd @2`f=bj]8u`.^@dMWׅ*yקv1 sfG*xg!'7yxPJ˚F`@<ĸKH M(UT\EQ2TOrLq)j(O>0f3bN&28(dpȃ(a"L 7@+,O,)`,$)>W@*~5 jRq+d*&`bDSM"ZvM>Z.OFXm0Z`p0B&d$ Z Z HHLcPmFŸ} 8ȆLȂB*H-phE&MM< &@\u^h6Ͱ >@JB V/pQ m }B1߆Nj}r>}cV&w1D_j4O3 @t>8n{ ~ 'H< {@Hb'9ggp A8ϋR܋p4&8 18o >{xޅ?{b#+ |)7;| g|\pBpE;9Q4JD)Ȇ\(g&Eգ7K!EcV3c}jQh(2 D19f[}{A%7b.4WWM<=Z<< Ҩ4Q|SSC3>dY-L=ybM'/إ<]kF_F$mלk/DCeMQeM82&fEw˚`uyp| f$ Ț _5w~=~=~=wȚk]&XHw5A{Em olmY0?0sٳf̘UWMVVO43a|ٸҒw1G1<7'c3}6К&6JR*䌌XKk9^+ֲ2'[8^wMDqBO\iJw'4]MRS"7F;ӹ+'(rA4gV?'$Qb@[l[,t+Ih.T˕75w;QgZԨvC:ZLa DA .IRVm%uPQ+)6[,~1IJy::3HA:4 tߙAtt!Z,y3QHk3$06Tk={1u`M4"Agຬ ޙn+}$A @3G3Lt?{ՂMUR9Ah.Z Z\L']ikIgfFV@sq7T k`Jm0wO&m2JqbRA\w\}v.~\!'$f^j8"[}~l%AHl?Kf+.\aSr>L+d6khAa3r-dBڧXMmEe-~ 9*#ubl cU#qҸk*BH#r=)7L:E8AfS LVL|F nkѾ)VOth(IABXn݈at+iG ns'S/;Va;;T9QZZg \iG]h-mL:h6-6ABgz'VӍN;hV(D;[p,pI^_ӛų21B 7qJ)AC"qFv@ACPFθ2h*I\;I=8Z A>s(Y7>IN]V3n[PZ܉pTVB*Ev+FQ{m>(䍤lqqA pk ICV؂n hY|p$4[=x)x<"o7w?8 ::Qr6 QBI+CtZk3]P|`FdѸH.W峜0[Fۦ m ZAn'7z@U7e6^PjUAa+վ_g`~ogA2HAn'e2vFhk6Am[M`ĘtB#0 5rdLY"ˇLb+}(>I͢mQZ*(pXG ^)~Ry1&@P BMPٯHAilq]m zKRjI(Am2+[q*p5m ֺrL?0paÙ>V+Fwt(RO15uBlx+uB'5!`-ʆu@y}TV*D_&B$ XxaB1f0`)~ 2Pdvk};`p:Ҋ_V`~r8i8_dڎimt[䝄iT 7Ghj\m-'Jbg/=K]7[fAQqeik R;^s05MuS7yK;4sk(ؗ2;4t-Z،\^4 SkV ^8ufwxr*NH|GLA+R9>BJ"',ntT;')_ nbƹ9E#%lTq ̯NZ[qT#$z3; 81pR;򩝀Vj #j!pR[8ާJ@ EII"I"$^I\eI K^%$)H[I\yI|#s8+3Z_IKI]_Ho8-%$*I|*O$Iğ%$$$GI|(@K=IAJI-$qBoJ I.${I1I*xE˒8"$$^8,C8($I>ItKK$WJb$ӒxJOJⷒ%'$$vJ1IvI<*G$$VIlă,$q$Ľ$ {$^Kk%FwJb$VIb$VHb$nmU$T7Kb$n"IIb$Z$@%n fS'-@lj)|B- nՀ_@5%QK܋m T;\=TuٵYS?NMuVWW*)]:++խ(m/CeHj)C2T,.vU: AjAJ_z PYw'PM*M;M؝5nJ)k@*(ԕ2 R z \JvAtK\$] 6A-#8Kpk$;#8M9gJQ >&G$$ו8 ?Ko x ^#=qc%xw/!xE'8Lp A+ 'GMEI %C,ng&xI"xq$x`vmϐ=U=ENa{oÞ{oÞ{3z~_= Þ{3=zEaO=c~{~{:/}Weyٷu^-=o:/˾y:/{Le_y٣:/Ne_yY#:/˾/:/{XeA s:/{@e>y.ֳݫghgnm=}Z[>gֳֳzqm=m=S[>gwhzv}T[>gֳAjIkaҴ[5-M ݬiaдkZ4-콚vݨia7hZ{:QQ! &'QTFB~BygSx3[~?]6BTy=b )]9]z _'BO#G ^R =B_cGJ#cvkBַM>5c 6gS ljiGtu{u^K:%ۺOt[7ѶhqbGŋsmmm9m-v,r-?hgc-8q|TGSQ(<]]<<xtx]}<:<: <:<xK߁G_<: <xѧOGx1OG}<: <x>=G ѽM {GGGkGkGwVVVVܖN:wi䟩T*Pƣl>F.hJY@BY*@ӑ!/ Fh$~n~)A%:*b3fF>8j8['WE pvd狣Yr"cAޣu)[y՘-[_B1f` 0[HN"F' z*@~s^~jcr *X/7JULO@L?Ek5Zbj5sKo?vgjZSq ['QewG;GfC|INt[k?0[c+4 g c)TQܾ(WLĥ;hcdE$bt_qgԎ:j֪މ赤̢!)9i YO2bSF{A rIWd:+Xd8~ިaI}/%}eTa;­R8/,?hwһ'ZWuݐ9z,Jy۫wO1B5N)[yUrb*GMv}ػmM_hmC<. "[\?DU@)kMA)Ii/|_\$bu@C "EH.huܚ 9/qvox.7C׎-XSVdGǭkKJDԥ%%Je]8`>j0jDhTcmTIlFU1x86ɓF8ZƐp9@1wByY]b"u6Nm[2g:>"tԕһWhvݳkFv]^ Me+tߴjq9< U :Ʀɂ9wlɆ |7BFq%{DND&V=Ɇ$ |7T~~{{HbXib'ȍ <-jpWU23 b7cA6뢢4 ꘋQzҨEcqC. u6Nqpc(N\ DJŀ /d 6e؊79KvQt(::ieMF[7F7vK!&TZV}C94VB)*U*rG?܊w|伌H.53IrW2),Yl::&Aˉ.-k4-4~4Rzp\zgdK'h Iʛg+NB^USn, ]89aS$ҳ3s'qM٬=RSYcn;dv.@Gf|A 3>5ʎS\5+o3Q q8h6bk=yQ_@gVCُt꣰n=$+)QG<\ 'Iϗjf'܊=<^b{UZNv#O+/o~Z-&bto:4g[VѐD_2@)W<z Cn J S]TTh[mrLe&.q luCBd ŀDrLtxjxޕ\cb{E*}W?FƤdbcm)5>il{l=;9%[2TC73 `9i bPs6 1H_A>5N|Ro@N3UdQR?S97ZwixU9hWvnђk']67M<.#d\7Uߴ4'2$E6MWlDOHm!iIqQxi(4\QTuKgdґ Õ;Vx2 +ҽMNC9d`Ԋn$ۥLM P7`vՃWX/1ā'W0K&uf'ۿD܂t'Suc%&/2Β61PB_Y7#-~yݤGV\73cLӚ 3wg&2uNV)j;X֮I5ThUHE=\pBCRo$eI'ڝZ.}ٳjY{<ӭZ ;(坿_Uքj;KL)Z8èStT1&ʨTBL # Ld#i͕?Rdd)Hym;crRa3վ~|ՒS.@90\jFupd onɞ;*sЬ78{_nxBl^D Ω*:@mڑTov b6JgS󴆇M1&kٜW}-xe^wZP ě.ёǷl";X}@VkJ 6]q'J:!zcq/m oDѯC/PJhL[k±:NJs/29C/g &@ux b5 I.~+bk<:ߘ]FY㢏?"wVVT:޶g7hRR{o"&b g;'s'Mf/`ttK=z8.kHHOR'pzH28qW:/0JfӓhhſiJHp鉉"" 4tbphTѯ63#3ƄTS=8R1;yyy2\l;xe@-ݱ)q.o`RF~!)>>us,e3ţ╸L7}Kᘥb ~hCzF4pZκC{6_+"/ 5[ xy;6muUI-\2 X@f,&ׯrQ 2 Qr^EQR'ɝ:|2\=GO?laP֫@|]dwN_}Uю <9#AP'[,?dJ05P\; ;cx؞~ZII h&K\1CxˢPXWSGr6v64 \VuZseN+O6yְ{k+;G͘ I;IIQDژԸsɩ J;GtQIՉ>9\ 995|!P<bt#c'ץ7ﰗ ߮R s׍hKԑZWvhsӌ\Mk̿zdKhSjYwNbr&q6%/ʵM?4XJJn"s!>x,:%-SdR)L1LkfnYuGrŊ{Ԝ֑I^_ŻUmx!@مɞ㚋f Bۦo[\TOheDF9rƺuE6]"t[l0s4 }L='K}4 g `ruǩޱ"+kdKw>wq ȧ2ry/.2lAt;&nXݐcQ77(.y<=gKw7̺3mr,ss\q! ?)Ltm,5|Oork?O6gV?^۰!p.C#f NS[h+es_ 2qLfl[\9h\4h.t@Pcd2 ?DA[#4ZBK!dNf= P+2uor#$doˢCKvvfe z 4!~ endstream endobj 479 0 obj <> endobj 480 0 obj <> /W [0 683 549.80469] /DW 0>> endobj 481 0 obj <> stream x]n0E /EG BJ Cb8 “Rx;3LUw?m{k> endobj xref 0 482 0000000000 65535 f 0000000015 00000 n 0000226042 00000 n 0000000262 00000 n 0000296243 00000 n 0000301917 00000 n 0000000299 00000 n 0000315514 00000 n 0000000375 00000 n 0000000416 00000 n 0000000456 00000 n 0000000497 00000 n 0000108739 00000 n 0000108780 00000 n 0000318393 00000 n 0000109519 00000 n 0000109558 00000 n 0000109597 00000 n 0000109638 00000 n 0000109725 00000 n 0000109808 00000 n 0000110182 00000 n 0000113353 00000 n 0000113430 00000 n 0000113593 00000 n 0000113789 00000 n 0000114020 00000 n 0000114265 00000 n 0000114458 00000 n 0000114665 00000 n 0000114876 00000 n 0000115093 00000 n 0000115310 00000 n 0000115529 00000 n 0000115749 00000 n 0000115965 00000 n 0000116185 00000 n 0000116402 00000 n 0000116631 00000 n 0000116826 00000 n 0000116987 00000 n 0000117209 00000 n 0000117431 00000 n 0000117632 00000 n 0000117854 00000 n 0000118075 00000 n 0000118295 00000 n 0000118514 00000 n 0000118735 00000 n 0000118957 00000 n 0000119179 00000 n 0000119401 00000 n 0000119624 00000 n 0000119846 00000 n 0000120068 00000 n 0000120287 00000 n 0000120508 00000 n 0000120705 00000 n 0000120867 00000 n 0000121063 00000 n 0000121307 00000 n 0000121536 00000 n 0000121733 00000 n 0000121895 00000 n 0000122092 00000 n 0000122295 00000 n 0000122464 00000 n 0000122673 00000 n 0000122841 00000 n 0000123054 00000 n 0000123220 00000 n 0000123432 00000 n 0000226830 00000 n 0000171769 00000 n 0000179862 00000 n 0000187996 00000 n 0000188385 00000 n 0000191503 00000 n 0000328040 00000 n 0000341089 00000 n 0000195393 00000 n 0000200248 00000 n 0000200478 00000 n 0000200722 00000 n 0000200924 00000 n 0000201130 00000 n 0000201327 00000 n 0000201531 00000 n 0000201740 00000 n 0000201962 00000 n 0000202184 00000 n 0000202385 00000 n 0000202555 00000 n 0000202777 00000 n 0000202980 00000 n 0000203144 00000 n 0000203428 00000 n 0000203712 00000 n 0000203915 00000 n 0000204079 00000 n 0000204340 00000 n 0000204602 00000 n 0000204805 00000 n 0000205008 00000 n 0000227387 00000 n 0000227451 00000 n 0000278604 00000 n 0000268156 00000 n 0000268066 00000 n 0000267968 00000 n 0000232380 00000 n 0000232260 00000 n 0000228174 00000 n 0000228757 00000 n 0000228295 00000 n 0000228417 00000 n 0000228661 00000 n 0000228539 00000 n 0000228869 00000 n 0000232164 00000 n 0000232020 00000 n 0000229241 00000 n 0000229112 00000 n 0000228990 00000 n 0000229801 00000 n 0000229664 00000 n 0000229330 00000 n 0000229574 00000 n 0000229452 00000 n 0000230361 00000 n 0000230224 00000 n 0000229890 00000 n 0000230134 00000 n 0000230012 00000 n 0000230701 00000 n 0000230572 00000 n 0000230450 00000 n 0000231041 00000 n 0000230912 00000 n 0000230790 00000 n 0000231381 00000 n 0000231252 00000 n 0000231130 00000 n 0000231721 00000 n 0000231592 00000 n 0000231470 00000 n 0000231931 00000 n 0000231810 00000 n 0000267872 00000 n 0000267782 00000 n 0000267692 00000 n 0000267602 00000 n 0000267480 00000 n 0000234712 00000 n 0000232592 00000 n 0000232470 00000 n 0000233005 00000 n 0000232876 00000 n 0000232755 00000 n 0000233458 00000 n 0000233095 00000 n 0000233216 00000 n 0000233337 00000 n 0000233684 00000 n 0000233563 00000 n 0000233774 00000 n 0000234598 00000 n 0000234016 00000 n 0000233895 00000 n 0000234145 00000 n 0000234387 00000 n 0000234266 00000 n 0000234477 00000 n 0000234842 00000 n 0000235086 00000 n 0000234964 00000 n 0000235337 00000 n 0000235215 00000 n 0000267310 00000 n 0000244314 00000 n 0000244224 00000 n 0000244110 00000 n 0000235588 00000 n 0000235466 00000 n 0000237170 00000 n 0000237040 00000 n 0000235800 00000 n 0000235678 00000 n 0000235929 00000 n 0000236051 00000 n 0000236385 00000 n 0000236295 00000 n 0000236173 00000 n 0000236514 00000 n 0000236944 00000 n 0000236848 00000 n 0000236758 00000 n 0000236636 00000 n 0000243480 00000 n 0000243384 00000 n 0000243225 00000 n 0000238500 00000 n 0000237259 00000 n 0000237503 00000 n 0000237381 00000 n 0000237632 00000 n 0000237876 00000 n 0000237754 00000 n 0000238005 00000 n 0000238249 00000 n 0000238127 00000 n 0000238378 00000 n 0000243105 00000 n 0000239840 00000 n 0000238636 00000 n 0000239002 00000 n 0000238758 00000 n 0000238880 00000 n 0000239177 00000 n 0000239543 00000 n 0000239299 00000 n 0000239421 00000 n 0000239718 00000 n 0000240624 00000 n 0000239961 00000 n 0000240327 00000 n 0000240083 00000 n 0000240205 00000 n 0000240502 00000 n 0000241464 00000 n 0000240729 00000 n 0000241129 00000 n 0000240851 00000 n 0000241007 00000 n 0000241342 00000 n 0000242232 00000 n 0000241569 00000 n 0000241935 00000 n 0000241691 00000 n 0000241813 00000 n 0000242110 00000 n 0000243000 00000 n 0000242337 00000 n 0000242703 00000 n 0000242459 00000 n 0000242581 00000 n 0000242878 00000 n 0000244014 00000 n 0000243910 00000 n 0000243698 00000 n 0000243576 00000 n 0000243788 00000 n 0000246140 00000 n 0000246002 00000 n 0000244535 00000 n 0000244404 00000 n 0000244786 00000 n 0000244664 00000 n 0000244915 00000 n 0000245159 00000 n 0000245037 00000 n 0000245410 00000 n 0000245288 00000 n 0000245539 00000 n 0000245873 00000 n 0000245783 00000 n 0000245661 00000 n 0000247318 00000 n 0000247204 00000 n 0000246361 00000 n 0000246230 00000 n 0000246612 00000 n 0000246490 00000 n 0000246741 00000 n 0000247075 00000 n 0000246985 00000 n 0000246863 00000 n 0000249764 00000 n 0000249674 00000 n 0000249568 00000 n 0000248358 00000 n 0000248244 00000 n 0000247530 00000 n 0000247408 00000 n 0000247659 00000 n 0000247781 00000 n 0000248115 00000 n 0000248025 00000 n 0000247903 00000 n 0000248938 00000 n 0000248842 00000 n 0000248691 00000 n 0000248603 00000 n 0000248447 00000 n 0000249472 00000 n 0000249368 00000 n 0000249156 00000 n 0000249034 00000 n 0000249246 00000 n 0000252176 00000 n 0000252086 00000 n 0000251980 00000 n 0000250804 00000 n 0000250690 00000 n 0000249976 00000 n 0000249854 00000 n 0000250105 00000 n 0000250227 00000 n 0000250561 00000 n 0000250471 00000 n 0000250349 00000 n 0000251350 00000 n 0000251254 00000 n 0000251103 00000 n 0000251015 00000 n 0000250893 00000 n 0000251884 00000 n 0000251780 00000 n 0000251568 00000 n 0000251446 00000 n 0000251658 00000 n 0000254095 00000 n 0000253255 00000 n 0000252412 00000 n 0000252266 00000 n 0000252663 00000 n 0000252541 00000 n 0000252792 00000 n 0000253126 00000 n 0000253036 00000 n 0000252914 00000 n 0000253792 00000 n 0000253615 00000 n 0000253369 00000 n 0000253492 00000 n 0000254005 00000 n 0000253882 00000 n 0000257338 00000 n 0000257248 00000 n 0000257134 00000 n 0000254324 00000 n 0000254201 00000 n 0000255370 00000 n 0000255256 00000 n 0000254537 00000 n 0000254414 00000 n 0000254667 00000 n 0000254790 00000 n 0000255126 00000 n 0000255036 00000 n 0000254913 00000 n 0000256502 00000 n 0000256406 00000 n 0000256247 00000 n 0000255835 00000 n 0000255459 00000 n 0000255705 00000 n 0000255582 00000 n 0000256159 00000 n 0000255931 00000 n 0000257038 00000 n 0000256934 00000 n 0000256721 00000 n 0000256598 00000 n 0000256811 00000 n 0000258233 00000 n 0000258143 00000 n 0000258053 00000 n 0000257957 00000 n 0000257853 00000 n 0000257551 00000 n 0000257428 00000 n 0000257763 00000 n 0000257640 00000 n 0000260533 00000 n 0000260403 00000 n 0000258446 00000 n 0000258323 00000 n 0000258576 00000 n 0000258912 00000 n 0000258822 00000 n 0000258699 00000 n 0000259400 00000 n 0000259310 00000 n 0000259179 00000 n 0000259042 00000 n 0000259962 00000 n 0000259613 00000 n 0000259490 00000 n 0000259866 00000 n 0000259743 00000 n 0000260313 00000 n 0000260183 00000 n 0000260060 00000 n 0000262834 00000 n 0000262704 00000 n 0000260746 00000 n 0000260623 00000 n 0000260876 00000 n 0000261212 00000 n 0000261122 00000 n 0000260999 00000 n 0000261700 00000 n 0000261610 00000 n 0000261479 00000 n 0000261342 00000 n 0000262262 00000 n 0000261913 00000 n 0000261790 00000 n 0000262166 00000 n 0000262043 00000 n 0000262614 00000 n 0000262483 00000 n 0000262360 00000 n 0000267164 00000 n 0000263258 00000 n 0000263046 00000 n 0000262924 00000 n 0000263136 00000 n 0000263484 00000 n 0000263362 00000 n 0000263696 00000 n 0000263574 00000 n 0000263948 00000 n 0000263826 00000 n 0000264412 00000 n 0000264200 00000 n 0000264078 00000 n 0000264290 00000 n 0000264850 00000 n 0000264638 00000 n 0000264516 00000 n 0000264728 00000 n 0000265377 00000 n 0000265076 00000 n 0000264954 00000 n 0000265289 00000 n 0000265166 00000 n 0000267034 00000 n 0000265604 00000 n 0000265481 00000 n 0000265831 00000 n 0000265694 00000 n 0000266102 00000 n 0000265961 00000 n 0000266364 00000 n 0000266232 00000 n 0000266632 00000 n 0000266494 00000 n 0000266904 00000 n 0000266762 00000 n 0000268262 00000 n 0000269057 00000 n 0000269468 00000 n 0000270585 00000 n 0000278567 00000 n 0000278715 00000 n 0000278848 00000 n 0000294713 00000 n 0000294956 00000 n 0000295832 00000 n 0000296384 00000 n 0000301087 00000 n 0000301336 00000 n 0000301598 00000 n 0000302064 00000 n 0000314044 00000 n 0000314296 00000 n 0000315140 00000 n 0000315664 00000 n 0000315816 00000 n 0000317866 00000 n 0000317951 00000 n 0000318254 00000 n 0000319798 00000 n 0000326965 00000 n 0000327220 00000 n 0000327668 00000 n 0000328189 00000 n 0000340197 00000 n 0000340440 00000 n 0000340669 00000 n trailer <> startxref 341232 %%EOF hardinfo2-hardinfo2-1331e88/tools/LICENSES/github_com_lpereira_hardinfo_issues_707.pdf000066400000000000000000027407771474767047500305000ustar00rootroot00000000000000%PDF-1.4 % 1 0 obj <> endobj 3 0 obj <> endobj 6 0 obj <> endobj 8 0 obj <> endobj 9 0 obj <> endobj 10 0 obj <> endobj 11 0 obj <> stream xk.h;2nKc890]H4A®roR^ԋ .ctJQl,ZHƱ| Gh%8D| M@gp!!3xd:GSiGб8OHHԌAT6W՗זl**(ߴlú e֕o\_U`cŦ6.XWR@VV`kI utD5I( $ ,E&0JvĮ!K]rӡhzAcǼh6Xg haJJjT)1˥4B!bD`qM͸B+F*@#8d LS%J&+\ZVzj  Z4Q32!:WP@ʯ"fVu'Ҡ^#҃1&StʤU7Ci>m799!i:uvMtN` C)6˩.]K7wﺵ;{tgtnA~.m۬ڍ Cuf\Н;2~֘?g<זvSsmIٍQƯUxa_+V$jL$e,F12VH HX%X$ e`,E hT!S8<f)3qOB 8$#\C#lKC͛7*^uk7|Qዲ_Tܸb5 7T-.h(RPZ+'6Vѵtd=RIšC|^1VآY1/?snY>e4lNZTTJbP*V2Ge4΢ӨD ZMئfLc#ҌG"IXOR<*Gt%I Y-3$nڭc=zeȪ [noP`!YA/ 4V$ HZ5I6lVm$miYv's.]ޱb'Sε?jWW{_x3ofwn7 l Iʶȹ`eL|E01-lΟ/pߗntձtS?=O~~<ϫZ8͟ m{g>oGvM^&8 ꁰ I' ;C7jxpˑ:s-\pGwO?>ló}x_ϯ?<_bo/?Xʯ___=_^bgS<tMy;z©䗁S}#[~]KI+z\ IjMJHl&@hi"#[I2 I`( x, "# Ahm6Z ՘<`L(\T[\Pu%_|V~MrúʍkVSjڲUo^WUhm]M 6"k*:&oZ%4IP X EBP  eǓ^_&a=px&ⷚ-(RbJ|&MaidLŢx4قC&b+&BFayT&DQ2G.BJӫzܪQ` )\Z £W5J(kԧQ@_ W`A+sxWx1Ͽp$|y㛃on{ _4~uoOf?W߮ν~<3VfV秖,ݻ|nܣ枮>]{2ѽ<~ҷ_-r忿Yß߬ϯy?㱟o}wwJ|Xxdrjj_a`IH/*9Z!Q#(Y$% BE(flS-Ԁoi4SQH `h4Z)HAjm%"ȺRdm%xseᦪ UlZ[`}/j 7~ѸySKiQCц-%+ klh(hڲUSFldzU@FIx𨐐iR Xd[2:"x,%s9w;l!ͫ׆z^mRKDD$stFfRtFR0("I !VEX KfB:[`J8,bF!5*RnB pXNXѪ\ܠȽ0i:e l|#m}vywS'߻=㙏}ѽ_,=[[78wC7FG\:4zoMNLLOLLZ;9wݕ{3yVZ|uͳw~7~x׫?^^-|g?s?"O;&veF)E&FD4QKFb+Pu?t YWMhiĖ& HCpMP5գjPu5抲-M%E 6Un\Wu)Z_ᳪMk6ol.+-\Z*n(m)+DהjJZ+ cjKѵ͕E-jrK5 Ƶ( #a K̬ gx=P '}:N[j !o,`P-HL)cPT'cQ4,>G D4,"KѰ&deμ{Ͽ|8tivea;&Gǯ ]z}+/]pgN:scO?tо'>i;{7\>t#s SSSg}xoу{O>x÷ϖ={WK߿\_o_WO w>ۯUjiN dc F:TkBU`u՘:\cHli7mUWon77aj1؆rDuysŖ₆†M*֯/XimMK6k-/n-ی-GW ѵ--r\}9YU+˓VUSo֐[jظGAɘ)f\zW<Wg4ҝuH>7O=h~uqni;c÷Gn^~3:SNsخ}G}ٿ@ޭ;;{wwtHwlOv숵o"m{8ЩS^>wmݱ{㳷oݟ0{wnݹwgL/M//?^|7O|x/zs?oK0BxjP{>밑B[Y&Rk@חVV 0Uj\c]Won4ԣjkUJtmlsŦ5E j 6mP[Q[S(ߌނ-#5V *|cTEm+5rk= PAC6R Td1 BNg̞d/D㱞D3F=hw2u;52+02R=ׂ@זJQ5-K [KеJtM-S_56 ʛJʷԗ7To(-*\WqMsYQ"dEqӖdfDeIC-KH-5 JK4ZX)@i'ԑ[iz*\KG5-lB+3":A-d$cPw4ړHt'H:WD;ꋇ"kz9-aǬIը=(% bd'a8P"z.Xjk IzT'Mƺ㑁lj ؑ';Rx'krnkfLXq!U`V|Jlr!!CL' dL'x,tAq(ye%eLU R.[!I,IDL N*0%f@5{k{Mχw;s͏?~ޟ0737y{jC7]>{ԅ'qve⑾t7$L?؞M&3l/M"!gm[ i5ltV8RZ1ub,L*aydJa\*EsD>"f2|"  >A @+LP$0(>/~hw[z继s}|ʽŻSSS#7_vs'>wo& K"50b,B8 S¤K 1-ԂǢr461y\:2,6 394P| GlHI%+j1W")J$ڷ 8}sg_8{ǎ޸xgN+->/65Tnr_j6lXlW]Li6Wqэ d-]4|"JB X9bdTOd9 r(jINéD5dLI12&Q΢(t9. p5"@65؞zx7ND^o&{d2#K{bmawk͸i5n5uP: Z\U\:$`)xL1.f24&]9l@ PiXK"(2$"F*0+F'i0^?N}x͓+/ޙ~…:x|/];2hΑ|C(y>rU'*t.bBK㈄yQHR>+ +䱹|.)!ˡ941W$2_JJH)jD %ZJR;116>>vshڥkǏ[ft)2R&R @ :)ae+RIrH*JBT&BX(2X&RrF(Ћ*.(J ! A0d:Bt43xș/^>w9˽}{{ܱc[#;Os'y430|yͣ{}⏯W~{뛅^Lkoϻ:81&l(gşG?-ʯBdu RMEPl\ G@()/a`D IMy,XTsZW+D\q0fbhDL5Xj>S# 2V,Igx&ޓ ڶXx KEg;3خlzW.՟tG}Bޮ'5F_rJl bQ&(\F*V 9K52y RW *Y) i]ͩԋ]޻'=y20?7;=;15>2:tơ 8}t/_dM!ȓr=)\\,T!#B.RRN:=V:* jP,pR" rH&rP0ZeZ |\Q(nPu$Y 16! l Q*dVqrSv;g#;ue:9sC.85~ꃻcfo=[z8ѽoZ۫߬vWzzKx}R{2EJGY?6}^q_6!*-եĖZ j."GD! 'd`!!5NKtbY&1J1,j,gṈ(EzJV,0(}6ݓK'ҽxo*37;`[?䛑h#yl 90GMA4rZf$"LRF"BRi6#4&@aTf :ңiȣ=N|\o->]<79u{tlKWΞH|ֽXh<lN( _ qK!)|RV5a3L:Qc5* - *Z*U2P%k eRX,@AA2? J!Hrfyph;v~[w8L 3ݰj:ӹ;::uwޑۚNv粝==g94u҃3&ݿܻNj|OoW~}˫<c켷GG?՗m*T\mPPZQ@r H) \ b P2*D:LJQ!T*Q&6EfĬBZbP rQ!JyfĤdbJn Y!іfR;;ruؚoKw%smt:9ؖH'w}*bXWud< ƣ]:jEǕ2LT&ȪRZ Ba+CTGz j^6+wųmGv'w߮~|oenfnkn=tgֽphu>)`F*|1$jD2P %zڪ lFl:H5i&5S,l!D\Q5JTUrԫJTrXhV):uXDu^72fi;y0dm[愲N] f[EܶL[&KFc~/Lۡsw uL|xgle>ׯ>_>?_sotJ/?Gb76˱4lYKˏOߗ8N[aMa>dڀQ:GAoD,nx__߽'LNMܾxƱӗرDWpfJء TA V%hQrV l3SW.{1o0\췘6K猺m5궄&A6\zZS : U11EN jMx,l)F|E+TC`]i{qѬxyf[XLj_VŞе]]9}[7bϺ Q6bhh"]r#WO_Z}m~ݱ;&Ϗ<˥z,?C%FwbZR/ pq FBNji9`S|&$d,% *^"h!Ri:`2{tk!:5'-k&[vk~֣`SnƮ\5n%zst/˵dݩԎm}\_6;D&ӟt%pG8-kBwX^wMI5b5O4>o5zMVceޞq]t|L^07q{lbhS>{ɾ:FNo;lu.@5Nޣ8!ȪY 6}-I!=햄qZkn XMQ-:I2zGE-Cns.7be??.jOK?O>:|0bQwaG+7A1W~'^7{pdj5N8yۃכckiM1-vmvXn{mY9;j?224w7)52'‰L"$bD7=E=ٶd3Jg{ҹd;sd#s`g4-m ~_]q+r$}qg:mq#ݧGƏ?w&Yj[#7/_>#jmf[Rkj2}6{b L>o5:556θ ٻwk?k ۳>sک ~sʥלqR.}mzM)>u})GOֵ;;Φ )NLC+R+D4ټiMk l*-+*-++++.)n-jmkjD7k(uHFJQ6U"{2Lgy6הؙrѶt+V*"1 @3$2o?y/~~~ܭkK+wWnLx2;liwO}+]xoc['*F.(+y 5bV3dTYԪ|l.d׀.g1,FQiZحZ!Gqka^!+rj*7Ye.ƪh$"`""X&MDztg'ޕu%}ٶL'mG#H4 uDP0x3`;I'rd 4/wA@n0<{z#~2fS7^~ţ9|~߾}{O:s[DjM~%rD|HN{Pl:Cn<:;>poTpwOα- z'bii{+m {m1G_ʻ=ӓNl;d(KhR A %% EKʋ7Um.*)kAPںʪƦƆV, E 1H$Ah*DǐIX*D@Rh q!̖jJ6!_bp$2@HlOgIY"@j̞hs׾]Ξ}KcWOXssyrxirhe>_}tr闷+~o^ijǃ~CӋz)_+ JA)jJVHmfʮصAgAu @;kGVJe+,JI&3zD/9]1'}hOSQ,Lƃx &SDG=i%ҙ\8֕Hwx{4&=`=)/zq'e|p-k yn5}ľw{8j;7.]:uW{ϩ.O[gtF xc`:KQ3 N5Ƿ/ﻶm/SweSΞ'b폚m=i灎\xw[h_Ghg{4Ē@H EL LXTcS}EUsM]cm}cM=ߌ@77675#[x4`dKksS JP@cL LJ~S|*Eb,!eLϗq8:Ue,-2E,J(qyRG*+~SO ]roWW<Y~4s{u~⫕w?>Ww><2\TbVJr `V ЬVY T[`AP1pn]6E4)&ҬTrLHb^*ՉWf z<1'qXcP2%bx&Ip=툥#l0`=#)0_6D=I-[#}mɫ{:^tػő'/]v}ؙ O;z<ݵ+9\I-r'T2}ޔVkbAQA3bS'O\}Ž'ܝ Qmoֱ;M#r&G#X H b1\Z"Iz 7|k}M6;v'N옆G0bf3v0x3fff1ŻU}NSjJ?Ώ<xb6]gKL%B*^&6(d&\b+x,tF*vXxo۶ٿWO9gNuݫg޼K_߹WhOg6ã=K[ned-W-෋fXg2R2R(Ԉ%ZT'ZaQ*2YXdU($f2iPr5O竅"DR^&7*dzH/RTjJ\F Wd1`$TznVdp^t+`5y\V 9mﴡ,~g0!Or vO;+y{ qz2T;v;ɥC7}j҅m}`-#GtmT'#7pCT4` Ėuq8!ekʹڙS;`:0ZbxgX\\" }ТtnيEV/hOVƴhtޡQA6gNkC&&ntg:sOyȝ '̜y?NxwW<8ңsZ| |Ǖqj@+%zZWjyh@sJ.WdX /g2$Bܶ6.ҹj[{Ws ^)`{MM^mG5s!ue;~ pZGmy-z[3ۺѧWOݽtٲ؆M;Ƕ_eԎh&ݍiX:` nuDjumm^׶GǑ`嵍S+K3[Om1Lt&}åH5]H'ܤ>>n}Ȫ'^ufɲ[W~A[FLNĒ0<"FΡ9 ^Ԉ| -JJd*Q'DZXrsfhoWȌ*]kT+Uۨq5m4 BakӬ=6.[4>q=Eg1]vNi >*C{i XkԁfmnuS'wtԎ-cۦ&w mOsH>Jf$6OF<{3Qkcb hdg;pms֎Ϋ:l90;[Ġ|,'z0A4嗋/H58:Uի0uk+W6ԭZĬ F ᚕbwF#piD6Q ;>G@f.k3"W]F=@Mz] {]^ɩׂN46Ah׹˞>o5<.{+p0f[̤ cǁ@ #~`tnb.o5 ݠ X͐#O$EIrvO,KB 8,Y![` t^wv.ar'vЍӇo;cw/ssտ>g7ͭ^ool~r44e "QƔ0:C-c2Ũҩ*ID8݆c1-mWjb%am=K`L|+6F[r@nJ"M,U.ʣR{d \-*KکPURZ4:R}=6V{dã\9N?{Бڽkvo=6wC$bA89)%XHS):ĠT"Fa҈T"UƲ aubhjO6I]M ķ 1D#6f:kZX5688FMؓ Ӑ/x~?09-\6볱h`v>w dBpsv;o6V3`16r2/귥_=K@vS Cx(wgP:fP,]!+5p'@~=@x`#uL>_ꦑ gr3n=z/}97~^'(?Zl/7B*P ј"*SHgr%y$BQHLZ[ՑkVaVlO/m'T)4D&BiB#[b,#2$!DrLBMJvҩ8*\ck*I1{-txv}ă{_>~٫Ο;sؽcwl78\Je BG*UDv &"#"@W(8ssO;om6mezrjeT+ @N숲~rdF!hDfPil>OpdGbSV ‘" KD>"hH<*]Ԅ6kHֵ}\bFJP˄ʉpW.SjT%˄|JBR)%b݅|&Nh(!8@%J4`9p&,,Y #nKoOB,܉aΐ۝hBLJ#`Q C)ğ \(D=18 I}afT~Y=D[6n?{3oE/{ޙ|tϏϳƏ__х<Ǡ[*YxH擩L\H%cDi0m lݺֵk1kaVi]qg?mly']pݢk}jB]wžD_+:**[AcIIdfBIdɣQ\E*U*[J. dHI*MFbSJi26X b1YI!X 2r\xh0ʉxE!7ǼӊXU 8r;pބްU z#~{l`۳` f`X7 i8@x cpP!%@>I#p..Cx  E8ʱ@v90X.Uvv:{O߿r_߿׿yt㯏o㳙?9<4GO>^Gk/^xɚ%W/s?U, ex@h2EqT.DZPrѤEW t.gt73FH| a u2 tzk{ҡ?9}ɃN`ޝn,J`mGj\GlZڈ4&B㵑dS|S@rt+͓19R9B 扴dH"`(T.2Od`L:3õl%]I p.3l)F\<s$ Ch8R2XPp!W&HyЕ\yȝC}1yI# 9S# b;6Aw G|WG Ϡ*B ЗCIȟAGTN P.L\$ciΆCRK;Láߌ@4 V)޲sOܽtΥw/z0sɝ+w7[}gwWw}}sG,[t<%ZpfLkC3:ì[ŪU/_>Z?\`.Z/ޟw{kwZIExCb)RSJi+"R%mT)*ǒeDW)VPRX*4F+~x/}GNڿ][wn>41R.w ]'RfR&(×2XBG hL>+frtœ%3!%bD"i;I L,]H  CHe4. YGhm'zkjw6YHR*憻ʕta0 ۧXxw>֒4䮥ÅHWZě[*o FEWBğyğҐ#@ 8 qi,FBIȏB.T,%#xgf@ _2eH)%y"Hc  !?u}$%8ǐZmΝWϞ~t+g^;ܹ{~_|v|;=horp)Vb3W߂oik_auXɧkOV}u`/X`ҷ~2o7?gۄbI",I! d $MDQE\ǐX*[I,IBJZۄ8H*2MAItT͂}ck?x;Μ9|Omz;=]##cҐp!&Ƨ1OX(F˙#p>,DBb2 ?`A1YDx  $P 30"@ AA-ٻЗNߟ>Օ_]='7/]տ<׿__<7vJ.o[[Z׮\Ub埭K?ZO>\lႏ?т,}%sf/ڢ7_[4&<K5ŒMxA#ABb&m"[ɢVGH"AG;"A@d1HxNngN:u]{׏m*TFzF֯/TG d &JA"1Y|:O!st>-P84JڨdDI *E.W\XB%+1T]6i&bw:0]ƻ\.r2_+twtU]屾jK,<\M&6G'{CU/P ΰ@W) 2쭆/ y:pW*TB)@)!@F+z (RIDS &`>$φB(dWSr"VX9+DÕT*FrpH"j*V%OuѻO}9}yW[sc>?s_?FS؈on\[װjMիQZb.E`y|`;js ߜxΛ gz(ls1DfJe$Q#BMDaK(j! QD xH \:C3'<{==Αўɱɉ 1;!2 tQxtTN_b B%b0t:BR\*M$&äsl!ɧ3l@d1BRWd Y27E2F`dٰsl+$:j*QME{JV,:*=Lg.[KVl͗ ]tgGw}"l,tWlC@gݓ3\'#ؕUp% 쏃 6tj,\8֕A C(\JQZp\NDKx%xR-~+DW>W~\8 #Lr2[.l>shGM?s̩<}wڟ^'׾c/x6Hޠ]kXaVdʥKhŒ_KߛdEo7ϙ7>ƒ9/~~(5y8 yNh6&f AԈ7`9xn#J66A+Z1LVʕ{`v;g?w=<{Ʃm#=}-cSLJ2voIV@G)O) TᰅT"V9B&Oql)`R9&8BS|/eT*QX*K@爘#e%lH,f)$.iѪP-SKF3H(3h)RMes|>_,dRG)ZNX BH8$ɔz':c̱q^ -fjEB9WD0 y1/`g`!)&0\PN*x9GÙ\I%*D1̦Jj2VI%jTG&ёIdT}bO1W.H)db\/kHGe|y'O|xӛ翾}᫙<'3|6Ó?>uqsN6nͺ~ٚO-pg \/wY̙}8xmᛯʯni78 fKni5 F oeiakecMx.V.'L.7MugL>7N9w`{6m^9X+uW =ɑ6+OF5jH 8kW +I2Z8"_KDB9͊T d䂞8PK|7з~hj{w?tbOiz;2y֥w/xpëhbߛベ>Tf wؽͩTW׸W}dɧ P-~wޒy>xk·?X8fW_~ﵗ0l,ITlƳ[XN]+gu kֈ4๫??6c8-X~k+HLA/w?kέSS=BG:݁D0IvFN_Lg*NXZ2 I&Rie"B,%_ d\H.)bPiLiX ^$0"@*Dv:GHY'3\9 SL$К_`@e˄@銂X5fO)g^h v OF 8)D[LVсjnU.wr;w#C[uhCW(/kF`i_P q$*PwGnE<֐C;`: "H)ǎLT#̦+|J`2P-`)WL3HgmRF: z{ܱ{W<9/w_ 1Q5O/}wu Z5X|hEKs̛lEU蝷?|{{ޫ/y_E6~#ֵ݄~~ mr[mM {] `X K&uÁ囇婽O>whǁ=Ol:28!=`&F0[%VZHLݚF ^;TXEB R>_Y,-'VEP-Ŋv) @t'TE*\*D"@$ "J]Ĥ(T6nlc Cjl8K#`O" >K =)vӐ/s"(܎MB2Q ݥRO)_Mg>$F87>y-G]]3zzز=)!`F7o]ءO"@GXǂ.C1`d#pAH!&LteTNUSBn6X uTJaZ(vU*i[ ߚ7{g{w_zد~#Zq6mrW) U# ]X^DGsVV+q,nٓg3{{Ԟc;Oݱ{CkBf}} :]8F禋- NC>H :@\ 'rDT"RHJ@*"9/籥<6W+X(ER\mJQ&J%*\D*bJ$T8R>W ?Xֹ䞝gxewǸ!9 q)}n9!YAW6DГ O" bj:^+sbTUzK=pHwms:_) JcݵѮXO-SgO}y7.>u7]*LOp}ǟN]eU^~%K[K0+@/rk/_/1x8^%[Yր崠ь`J;;mO}jc޹w-h6ۓ#rz6A‰V7QHr/ y(XL rFY6K 2D9q<pb._I,!' 2yNgj-:`:Q2$ZB/JB˕ DBD-@iwd{S08Usx3'{ !{Ӱ nK*>W tH.r׊b& "n `1@ŖrG}=up܁ۓۋjH7kk;bQ:yt"#`Շvm{)A Nr` r2[* T?r_45Y0?_- pWx_@xo׎6]8ws]x|ҳۗbW(̷OP*n<6i[hҥޞb潷>|ߘ?^8z?F,E-nkMxnӈe53 ˯C$ e JW>=7>;7o_?0U p( "7` !#(4,y3ـ7z9u>dmrVZ@ p8TNnoml`5amJmڴg;fum HoM M;PŅב˚lzA t"NZS?(pgm399717۽cjojgSw޼p On^F1vMտ<3?<3?}u;~t\Gh9E[襄g>Wz}}ŷ_՜_b ݈61/jha׵ie&z536[y Vv}3m3zX%ty'v>Ɖ7>oǞ&7lˑh6 P|!Jx}1/7A4a;Bi1Z0t,#bN&כZR\*Q*`uFL͗Tv D:D'D$ T.jJqV3dżÐ} vHh*=즞|_>֓fD  OT@)aOGJW`t% Ao> \-A lHy^͈Yrn,2cMvٽ؞[-]`{ʩGZwm M1 kmǁ)('|-U@`gmkg V_XOXO񾞉#;7 8t/]|%4%oL?<ۣy4py;5=à 'K/\Œ.;wܷ}^z9/__B51f,CC$݌ַ2f ]D_UOkfkfi"rԿs0{/Oqbc.~zN esX X$ `,΀@uE9X,èo♫ZI]7wvcQYt^a[:BT5vc֠PhR`* R\'M*Qk> V3$i˅Q3hB1dzDnI5RʕC#}8Cʈ+[u]q/tec(R)YS>[)teb8d)F4(ELGkhĝG}>fƱ v?zq{WN5f|6۬Y~ qa>4"mi \I,DL%]DW1W-G{FQ_ۍblw û&xW=y^]>Oɦpo_]Am͞|ҏWon+؈5Ν|\g֯_xW/_|/Q^j 0m5M V]3h]JoIJ$0Ot.vbǍS;/|;7ݵkӆ-Cù|G4P"MŢYŃlibxV}3FavvMN4m}o!9X V*q )GֈӘp*a_.ABЍq~k8!X"%YS)ulЗ ) s:NX.e:UkY,@ =ZgG_.ݑ( wB o%&LQ(XeH>FBa3-"KyD":`y<@)ӵihrj랍'Lwn2&pd2BtcdzDOk"?GO+ÝCRPaٖtYӼEsf5@&ΤuOn_޹{?y2x|ՑP1[6ooًޞpΛg>_ҋ++N}+o Ti]3OiԷ25ӚpM-uzs ]]o~x w:q|tblwZJ'x..DÉD,e $cp\-#QmD.%dDH`I<p3 0z / foZIl9=hǑQY]s0HI6Cӈ JpLƒo.X<IiGOߓb3*őR,RKKH&^rN/`9Vhk*]Uz @~Rtj,җvg,ғzS"ˢ,),HBst|Îx;Ag2C;h[ujOQ/m0wǖ[r'CIȢvi.ĩzР:i%żA[{㈁t4 A\NwKݵj_:1;1зqlxۆGwNغ3{6ڷ7.G+3;~7o=Ŀo^؜M+-^g7ߟ=7^{^¯x/o} ۂ6cXnkրan ׷26Q^JS+Uo-36OpqF{k=Bg"&H2&cP4 ;&&3$D/։TfD`4)QOf2P8 ʾ`ƇLN ̰V뵛n8j XM8$ :E5RjLI)4<۔Y>K"C|ߓ JL!PWmkrh`jdpMrl/t#[9pg䃛޾7_]K{t韏.>:|s?M<8ػsK`%zW_~fY/r_x_6A&ĐM8n} nsZXfфamai,eҗ;{#ۯtyφS7Z?;68_.t3\ISl:wiG4!q2Mw VDOȩlO=B)_ x@>$cszD0kr$r\!<-$|1#z㧫?|t#dcOzku/G; 8:.3 C!$E!$q>irZ N0AhZlf`ѫB_%kԳ)ald:{\'͆B/J9*d,I3P.CLzVmWΥ5̡h=6g齃+ڵ8 aIʭ+]IWWW9Z-s3L ̐  k&_W-:{tlvj!̼Ɇe=cq&hzL*p#4&,ݤ0tN_2ʤBvRXΧffme|r{;מ:tɍ綮?s'|{]k{޸o_;W?yw.ֳ_~[zŕX./ng?aQyown߼[q~c`5@# s=^"# R:(m."'ƣOmxrիמZZhl.,7t>[LƲx.*©x4F;EySS|D+R 2(;GjTJ{mZa/d X&Q3h9P<Kdc"0lX Rs[".D#F~&y=99:Gh [BֿVLTd*0x&8->k6zmwhׁzI'q4;w|׳KQdzvZOa[!h9ߝp6Vq  6 )1@bb^"rX(a%bcymc50z,׊PfdAM6KaBqP^ f X%bp5'7.ھ̑8+Oq;_5~k|߹{W/޽oC~n;B5>w}ˏ~ˏow;~7;7}?|O Ü"c`7`vDWd[?4J&apxx3\vbэcZa}1߬glN3B:IrfK+92 APem$*\ On ^8>;_BXbxڟZblXSB.[eI|'i F.7AZG"*GHJt:-fkV-9Ϧ#Kt"4 Uj&%R\&SyV$q<;pq6Qgp.rYs=w?Äݏw>Xc<#;wѦAܩꙅ@)Ő;#+vqiuJ9`,ʬjP'@uf,zya:Xlf3~{9Ny,d#DAbq16C0OeޖE*B)9W5BfZ\<}gOܙׯ> ~s~ߴ>?}Oo_W/޻[|ڱ]lb 7}wǏpwy{woǏ[7 {? O}M8؁^{FF\'㳟/tzO^=tnk\e+t![ʦt-bِ?i4hbV49de|Q C'R쬬^^]nT*W(UiJ] @<ÒHD'p W(PpX\W,j8,B+2N*&3oK` +N=yZ$|%NEH"~_Ii?^o(; +xzyh}{wxxdncm-pҙf|9ZUJz)16* bZV JL@Z(ϨThVf@e1WR).' ⑅?cm{{&{c8Ke''I)@cC|le:P,V2BQH͗k33ۋgNt׮}ٯ+"Ÿ}ル_^򍓟t..q8v?ownwo߼ߺoowR#OcLxf1@ghUC7ڸvrڱg7fN,Vt5r._.VB>WN& hх'lc6s!v2J:T0.rM E'PRp,oToWV}prw&U #*!G)\W%B|>W"KdŶ@JyjF ? ~'\ԳZ jv沇g sLRD$HdY;bN'ݡ\,]E p \buc:gp/ }K! r}}}:QX֕3f§#j6q7Rrw}Ĭ 5`$PaT 2I-uRbZ7 9oh&$DcqLOQC==nHc`k28I&&Qu*61_VfJLjvZiL[=yKϾ7_yW>~znڧ_݋__on^G}?n]|[{/n彷󳟴_ -źaVo3H꧴wHtۋ]=t-ۚ>Vݞ)3t4ٙLR&?%иJ~7pFa,*S[dj @nPĝV.:V$\iAXgD`!3 (5J RWop&0;lw@v=yt5[ZO/tid2h0vxZgڼ&a󺾶M yRpO ehL;8kS$*@&Y':~hL#UHdWѹ!ZEf3s:l˻ y6ЏVoGʴCuaG#ggRZeva025 BX ?B O2H\*}jbq6 /kj-WDV1_v+'VΜ8rS_{7/syߺwny勵ww//>k;Wo/{~Ƚ~}`=bʢ{EVre%ุZ+'.]~v~d9SX-3LuiJdctlqruQ7 PK+dt|),@Ѐ-V]2LjTzĬ^/C4\D*S"W* 2[&<[:4_YwRP(sT.ʔt2ļ-/PGp4{;{'z;nc 2 %R 08f) gCr15 ϦC.OK>c#,t-noCӱP3]YhT+JI&ר5A 2>168NSGhlGa3Sd ,D.ɔjfs,V [F'f Fi^؞)X?6Ջ^pϟK߷0ZC{?޽{>^?ٍ?ɚKuߝwG~]ă|Oj?{{)a׊ľAzg;%( ijw ǖ/\|lcKg7-w7rphi~}~qzz&/YQPg @{jK ѥ58@M;DA@P@ Q UQm9c:nVԈ0 @@b֙yU̺= gq\1NTypO{ 턀zr3=2_<<8V[iTR-[̥d)/vX6Dt K0p<ٵI"("2D: $Ii#ast)# 0* ֩ATP񧌮fWN/gOTGbl6h|dWîrU8>G1* ΤW㱢0QP5a3Y2Ab![$dT3bO)r\xzYٜ). tnn/<6wf{+Oz܉˿{y+Z_yӗ7|qݓsM讻=wm mJ>Jo]Ih};?hם/<|뗏^9zSkc3k3za{ij֌ƋJQ!b- ֪آ%`05S5+`L *3_ fDr1fm}6$>fAif@ViX)RTR4mէ]dKe|^Q]Gww"ի+zn{6Xʅ|Q,7˅fTNҁ@" W M8/AN:h o[W S>(<B $CBL`ZШMjANTHxRz6O7R!Hqw3KRZLP3(1o1yTdym(P3f"FԔN0b@ 92!GP"e"ҙ`$.VV\KLPpry͹xcK/?3v^W>?>x}ůzW?xX敥z%|⡽݄{c}ɑ60j1cC>J`}fvfI MY]=l҉W;|qgf̑Cs 7.:NJ +AdUvcBqށ]I֨3F\; nХ|ɀ/h|θOGA'wؼtNg\rСU<\n'^ly1V:J G Ic`${"@* {}:c@-]cG<eBlē@>r2K,\.srMLdpE)|pUST05&t&(I%SLH*,Ds~c{gc͙gwOبWvVgե: f4h!V90M!⸍5-FRa71ڤi5*AZhU P&xX3{왋O/r8tӻ m˅b&6̷SF¿ ϥl 53a rѵVg0:pd"!a=˜Z ;T:;fӣ63MT7WNm>{y|){d.ltze͹ j\=7osK-On|>w}=W}xCb.0{ۇ'F)T&NAŏ[E S]]=]d6_`,Xg͟۞}j~lyfQܨwf3͘Ɍ*:9%(j9TΤsx+0g.e:̄)"3H=k B56_+5%|͓)ܑI>ix%iftt6(ƂTd&IP&T))*HB 1">)sG';<*vnEfm09@<ֹS'.ͤ=킽&nP`M/^.35-NՅ1Vffb6 FA2%$ʩ gY~zq.r:3BGꉓ+i+XQĎ6;C@.Cntayl\10Mx란>bt( Gnkpo)3pÇ.޹xrgwVm/\Y||ک嗞\ͷ~_;ǷK}t_gg H]l-Fidx``4b0BL,Tɥo79E$L eZۨ]9qn{3/n^m}:G\hL&'F&VS#*2VoA~'aD#S㾵Jr4jzm2__/7rs҂ҙ(JV.Q DR>_aXckQtu4_.OWd#dM D^٬fلx)JoYG CAmOIbzCmwOvhɣMjbuY=FukHh,dCm>3n,=(7T:v+nzp v7 FɀMwX`TرC3C'|-.@2[&b17X/ AA0rR%jFqZ6vSøB!omDRmf~ya{keggmzz.\=מ]OgOӏ^k_w7־ V~I,b :EeRZZx^jw/@&Lv(}Q27jK;vN.W/j^:rʅgάNX.W2e dBAKh2豠@ l]Q[BW&lGpUBsŠ526U)ANЈErPfX̦xbeP|h~\-\m<,@ڮB!+E}>O16ڶ6A!9 uL ā!O G(D"P,-էB0Z آVGUN3,Z$ B:q9N< ex$t{m(MNł :dp3 cZ5CRY qD)*7.TV8M+aRc*J(BZanUp`S<?%e4-A4J!bQ`0aODLk3œ+է7,=lᥧ^{v \Z |{\hc=;^i ܕ#Ӎl֪8lV6LI(JgO `]=G{Ȭ)viyri٭+V/ 'V,^i<RͱmX$Z%mBSJD t*Ѐ  Hf٬=}v404Qߙckgm/?ܑW/,תBV-NdHx\I_S2"a?>:8ƞxBPdr"HJL 1ؓ$pGO'|?z'l-cr :+5AVbL hֶCDJΨ38$cH"X^Wed9} ]]#Cdž&F}=#đ^Bg_OG$I &IAJ&pe77dB2}S" +@!;]Fe2[ ømE^0챚LZY^ FLMM/R+Dȕ$A:ՒQ̥oiqGS+0O e vP0np7w;P),%?dCRCz_|7Ǜ~lW//_Ed%ӬPDbPzK[=ɝnrg5==>Fb8ԪLsK綗hlG,}xb xpAL38F^w9Ȇ@,I-ԘzK Tb5$:1982ApG$B´^Р-vVD8,:<.5avTjH %*>|L*Y4+ \DR/aVGwlҾ?綻xT-Sx1a6fTkRIM0:Th0hJ9`<:ԙӇVNl.om4ז֗W暅l<VTɐEgKu*PT\4d2CZA+f:\1w$ Rm uq>l1TB޹ra94X+5fL$F&܋JH(d\$^+F~jwgJ/|٥m|yҧZ^_־ZIϛMh˓;0b6 3&BVjlk`X[X[qHf5Q,H0[}uՐt`[,j^Hy;1 QݤR0V|2msqhP'j#&!!6XdY{hw0QRH.)rYk!q́Z̰C-:p th G~3"T d $$"L(D(Q 2D%i\11E '|e>K$?~vB\aNp!@PADT@‰Յ\V/Hqpkx81۬TRN qjH G4&[bXlQG(MŸ5kK+˳L& Awp{Ia;2DЗH1gRtd.Xki|Rjv3[++}?/^Zߎ_*JmJJȴnz\ŎY6{&r=dB?tc@Ⱦ6ba<:iK~l.g$nN׫APF$sj-`'fQK 3 N(jبK[kkkK\OJ>LJNO2р7H$B|,E9d+Xi ֨^ᵔk>^xtWjg֧~r}/ LEeBnŊ}X8G?>Xh+skd0Uτ |>VKGPnt!פZv;\?G -\T*9ܢDT&㩄|5%  W8G⾙ByV߬?T섺ycMVn'j0W"#zK ;-J6vabuG%<.4ӳ+ ++-nYJӡpw@( '|D(Fd*UzLJ$JT0N<. h5RiR>8g.Ƨ,ri{UqA>]%ufAM08 }̮VOj99E!*>4FOtA텍>#j8+p6T:\PGϹo,}ʧ7r>ttK ΘJ@J:܊ VEk[Wiuw:NxWX[CT)AtŐQ͕sKR% δG3[,ۜ[^RL1U|GB4bкTEAŵr_hz{bn$ tz`0ixJ1#4g`9/Uv;i]̶DŽcG+">Уs;o^TlgldƝ6扅|. 5ѢP$|T S\zo] T"\ԮJ[+r$~ܥyu z QPJE Lj ^,fR z$?= cG&crHG)ԞN$2LI,[XÒ,G`iř0"PB2RW0˵BR[i4 J2p;e!w(c(4,MbR12c& upܻoA#&m7C\].T~c!9O|R̀ P!nwvu vwv MNPUbAԊCޙ|byfzqRLD6K}F<0l6f6jb7rDbƵaCͣJ&Sdg|b̐0j:OA?x6XdmzV vw1ˇNfl,S)a+,T3AdDa=`ZHPPmwsG4mVG'sE.9P^̣~ҠMЊ2z$OYi~t4Pq+=vp׮}{z L&Sl*922<426e"9oBmUj0JK w&:jfΕ-z0`X׾>iw=;D&OЩL[bp̖EK2R9Jd$aǻv!F2>!`7ڌS(l۽Gzw?=≟vO_F5FUsTA֍itT,z= fČP ~;o'7}kګbQA #^1A2a>4q)c`%h{WBפ{ݷmor89D$(4 I[T5J,yq q F9QN-',hbH&1":GPP:7=u_:q(ELSCP~@xo'm5N!CD(Db1BD -%ӅdB-Oyq:u]gRag6{=}v~h|nO<нOv?pw#'hLjjrxj*0}?}wےd>jU1"B(aVUS10E1MGckyUis#iN; 17NO%OSI:Ky iƔRF3 fņ8 :fhL0d&ѻKDZ*W)ˍ!flVF՛4^*%J1BAp6ɽ!Z:*:Bܻn(:i#.ym{| ;yyӲ >)BfRՈpXTW81MpXP2i6C2%BL*s^G#ZFP%\a܍i2qed*Q_|J7k5vGG)r?:G*U X|[$Xz65ґ"Es&H93@9G(1A9|Ϲi;M7؞_S./\y7.o\^=@8`Al6{0 #9-hש AK+-WζO67WpI(|WB7r$I>q7lW3N )\\g#p%ɢ)H[tHijwxꯗcga=vLV%U>eZӕax-/;Nr~/7'Wͤ"^4)j6EL'43`vi %\2A(OƱ$rl#S-Hp E|n {njn×/VVRb2,]|-D*KgV]׹cȰۋRnq+bn췛ȫfU µ8^4Hy<.jv9\19 Gq1a\0싕o_7I4 ]0,%"+NجWRU0)AhA\TQ!̸ Bիj]!u4&L'D|kM2^,% ˆBpA>]H >/9qZf-|gX]s)EPqBQ@6HjzvB=wxV8h\`L0fMNOO O?AfJᤕ>jN:v[ܩ&vjz?h;nxμޮoVk6Z$ Hs>%hd\es\<"?uVW,nb$yf4qyZ&X$N^4S*R2L\UoVY6`w[9HַN֏wVjrTr:ESLV]*W;R>S6e'ۦmV+cnU6(`z;Fle߶9šD;)Ģy ͢Zd4LQRSvW%Z+gV郵뽭Nnui$pZۤ : mr0uzuR]%캠U)C6}Ъ(e*B4:t&FjWjSu.ѢT|Td LWviU6 T.Aq 01s. fYġ*y*>cjչ;GgϞ<}ɩ'S3s#COG?xٓAHN|m^OWJ'+q5[kӕJl~\|8]iZouSh$PYmP+B& C@,ZXKvgOsI$:4;6#(43\2M2L n{>ݪVF OnsPѓl:xԨ7ZM站R1]bAZ`7*3>K#jĂ_t]XJэrj]Y)?ۜV)S2&KdJ|T1(Zaoϯ_:>Z(ymg1uj^kFEjgP jФM)=d7| Ye>oTFM@ :֠1kVȼCv,T |6H8 p(a>8HբL-WnN|]E" J1(&IkVct7>|pgލޯ =|û "~ۏ?<05<9686202ld鳁?ps~QۭQr|)w+g˥jdtY=[\),꩷;v%$P©d\"pwP̢d O]$MDߌj6&.&=^:,ak%r P-@[lm,*եҺfXlve|VCH 9&e솠wY]tSyڭ'WrH;~̿4se,!aԙB\,TlU2bOnP`j%ծ]log)$&cA]֐嵘:lq]dL:YeAqw h [ja.d#6#0EV`KMRQ̷Dv,|Zp(Y\^nUkL>xLՠprBc|jw|>|hvZDBB.cṕ)ݫ]2ܓ}8{[޾?7153:152>92>>8J&& йγWo~fËzlv^;vx|Tkf Jvln~w,^7Y+ގ04nF65#wK3CC>SId&i~aMͱlȢt$ E? ‘|ǃH (1"UD'PYd%z 'JN\9-O Od52Э{ 9eFX3U|ERW**d"Z@RhVkk%tk#0lfFEF(B ˿SfX;hfSFZV+J2`G.\lNzϠ:Q `99Lq4j:B&c0Ǽ6b,ERdWIlJ])3+D -tZ-[T)xnnw^o}xywyަA5`R* Z៚{rjKc_ߜ3rwnߺ޾=W)~}gvtxvxt8~f[}8lX蜾9ij}Z:^>Ǐvlx?_mT^n?|^WgZu,gk[/4wNYq1Az1(?&~rA36$f*Xd 7gPL!jn[.%P!Nˆ@p( >oha#0L>a26S"*ZѫY}ͣtE 5O˚WdB ,^^%ɥBc֪vO0jva5M\8g742D Y,Òҩ<:E(Ɍ=RjiӍ\v\>ݽvzz^_jT5(&XB7;<&+d5d"{mjA.d&]ֈE4( A{(: b"Rb zHӋ 8i" 3ntK|웗[jGq7wR:hgooo|{'nV($Ow׾?XyT@l;3:;8==5LBa~aL!9b2i"]&=\:QO&X&"SL78:ϓjV3|FL}xwflD +T9!i4ilMtT75J'rl(* +˕N"cnc&~դId>`3 EbGlШLx6NFv˛o?lg|,. x<ivE\H3'zb_ez+: .N(ԭ:BЬ`JC@f IOԖ7[?_wg|zͫޝ?ƒ,KE" +fLbgqO&;Э_˗^Օ+7/]3䂠;?58036276NOqHeS4E/M >sHdKݽwN;a#Hk|y;?x)3\$Klfzk?.}[x\;l/w٦{`tj%0? }7e}4zZP@<ѩB&5hT&-hDuAkGT@F96|吳3A_>o~UBrX,d< ]F??7?`?vfϥ\|˗{ ߾J'O'FscOx M-p"1WJ'1iDhߓ;_ݻrrύKOLSX?~tlSsḍx486DRnN7=Z^~{|[D\n7gdžP5)%QE&  %T*E >W*x xԳ,YI:ˠrB\'a$0-,ؤ̠AXK pH(ApA汛v;D  G~^#0 }N^eRBBX42I1< _쵙XKF1tB֫b,/oofdÇZ[̧`,bo6ӿ>mYi׊2Cr9̐E4)`!2sT V@ $zywi7mDuR0ӯOW_ۿwBpAD-cR2QJR(€i '5v7n|}ڥKVڥKW{zOЦyE~j2[$-TMXBO*IHg~uͻO^G3TĨG,2Z6I|J~ 0-׸3Wd{}ۣomnVK_9>Ze0tw~g>J˸\X*RHRX)IxL>eJZ!VEb)0#.z23cqIPX'>xf)'pO'19e*&ܠ^1!yS(. $^p`8Fbp( x~'rGA !îU2!c0xĠ G!{-|$L'Jh8z,T$*B:J&㧛?~z_~ϯ?mUӏn1ɥH( WڅL-D`sY~KrΈC͙'BVk>4kQ]%/׃8p;ݓ6G_?ϗH8X49,VHPkv Κ}`΍'7}ʵK w=7,Pqc<G LGWB6S@#3Dpoh_v;Tq#})Xx#{:D 8 jIͥ( 9 '?Z曝˽tVsӅr|OVFX FV+JE\1uQʄBȴJ0],xjFN&WK_K3顾޻^3`vT8cW s1=qG}fdF-5r!# #0DpC`|t; c15jB.p @%itK+bQ_c$ aźJT)eTjwbr}mky ,ZS1T d2BnCgHH%j*q, ۃٵQ6Yag3XCV7pR=zh 8Zq}0&?- \OAl)~!1a7rBNG2cr"^Ϥґp, E]SYR&>31p/zl+|"93Xa~9~~o~~|YyD‘b.#ITR%ennYzznܜ]зd]142dLg4G^5/lW`]q7  :/V d[dĂB`CHo @15vϖ.h4up|wrʉ9ܢbHӒi7/~]g\-tM0i d~-*`2NgBP a`0 G`Wo FDlT*urA*VG7{ڍoȋb/0 "&_$Hs"L8OZӳ 'f~MN4S5346H޾ L褜ybVW;~w_^s"?l{Wg/mVNkpO. <@) Z*U؊XkW]힞G==_ƅqmV 4шP sJJD+X8 7x` Nΐi,j3J:ưDK\N7+R1QJXp=&Й4"B|Wfs>aI4(za䲙VGO7Z_t>7VSH#BZ2u~%aO>.U˫ZOsǍȧԷۯALq&\~"o6~WK+V>U ai*6ּe8sTEE KY&)DAk` FkU3b.$X9ZkV6[R2\XtY<&B Y:N B>K(J - i$c&`HCt,CZ-7[_/z^wU:nߟCPL*zQjeN [C/E*VѩY6XBx:Ψ gH{}3\IV9,AslFSsDqa@'d* l*ID' S H%I%婘D1ud ώ<^"lI3`FS Zv@G$7{$hd嚵Yv(WjDJLa2 S(ReunZaRrC*2g_K7{.߾|mjpJL8%TK:q(O]p0`2p0n ?:69>F'SrQbg3r{lt2W yJÊ`";$ )Ϣ0T-rj*`p* `"Gsx {NpKkB\9Z٭5Y,D_p @Yit˥B#͹И $a[t>n7j JLϒlO;9qT9ͮKJ~WX,#.=|<34,fQelV(X"wk;\fmZK : aQegw.̘Dh \ƠH$?H#P,<:G(ԀӘA|^}iG%U4ZjSjOnݾs͞ϦT|!U fMȤJz-)#pB, b,.Dˆ˪`i,ʔJKJaT\*rnծnwkt#*%` :A) %/οRhX$p1&r]Ri,0K/UZڀz"ZЙCf r@: 1-rn^mb.O` j3 08< "LI9j"E6 *G&y-[M-jآD06T,U!ͱ FPr-VҥdB :ma1ڥB!ϧ^wW<]42Wl 'bS)bC%tXĤHE) 7;&(Rfy V-%N~tk7g`F]ρY؟CBRh!B 0&DHQ&"D3gsx iJ+kz-A|Pt:M\$<O.RErL1Y XƐz:Z+T+b6HY.R4*]n7ڱdVlJK mJ$ؽ (a"4 f]vkRr^hDE&Q[)oUs RPIb"Hx::tҀ˽B&ZC;qC#9oH`+ GO9m*l2(vhUKEj)W+8":lٽ١J8ZZ"TK*@)8boqzϡ558}w~cw-ܞIıV{za!WDzB@bN Kou^gT(.ynK>z6㩑g}#Oܾ~>ISt\&f3R ɽ cv Y$c޿~uoDxT !_o µ$Z8KrFDWpbI&*E:N*I'bNbmhsRr,@ZT$P"P&ɅRH8S@-㻭Rw^ =(eKZ\-kJT #|)Sls44KiCQFB]-mtj'Lx (pMo,c \5iȣ Vd,G S>d.`ˈzm(r\0n>%QV+9u(&4FMZU% q|\l 9,RMbBS(trf!dL"^_%]Wp|pP߽'\œ3S;X;k|YhW](P7ൻ]]-HF#AGv18vFe(LRȦ,'7w_.(64l5C^2~M""nsbZ@+xak6x:j;,I(pD<ԤN.`ĐP(:i Ky*ah ӳC|Ҩ^N ٕHRA(̄R`VƼU[ԀQ4Ymt<.,}|ʢbiT[ d LeQi8~|d@1bԻş_Ka;lQ;5t%ydg8 ǣN>Fѽ^ y- F`P>oV:$\MayME09^-`(4^p:ZT j~-rۧG{/v7j2&B&Q*R+VjE JRĪq4EdA![ʯ7jr`~XQ e1a~HBq<N]Z4HzC\-(6I ]lRu E! >aRZrU[I:BG?|~v-P1 TPo6taZ| >7K b:V a0沀9D L?Cjt> !qYU3sSs|R=)g`T"U#QJ.E™ab P 6b b#NU-4H$H:Bvl72X`ә΀HcZdr,_brd2D QY b)d ȋ9nf4c vfǃ:=u#<]aС(hA*fǑ#J* z#$ZM% 1,FKȢ\D$єYr@!~MUr])bBgVZYbrO* h/Vޝ|svɫ/_||iiTbk\^vѦl_&۩fjb,ZE:|=^*d;[_l5f1^Ha 9t&xIp1qsji42h 2(PIǓ(a1/I O0a JSD(h@^ƣ"4N_'@UvN|tQL< Qq9<:Ϩwə+ka+٫rj{Z}(jPk,Ko2 LC, ʐ 9L!.$6kb˕r `w1ɇQcPl|s]_-Z_k9{ݻNߝySXhJTmQ6pL>z)Z,K|+N>Z-4˫NtةukL;*J\6Km"IQ Q%9m)ȓC<Ř,#f_!rh\"L!&vp@2. jmҤ[I"7M[ӿo?}<~ra%Ǒ|--S&!e~biq^Ȧ22ǪFLk֚~iIh,cC$ 'A`(6eAs;۝j-X0 :qur \)+\x\ P1r+bX~HFL'R=OV*-2Y Tq 6G`(d>*Z[ٯ?1HbK.LP%fR+heDWKսJW1XҐk(eL}b<;~yrxp^ubX?r\<˹J!V.zQ/vJqKċfdUqkRܩq$elu֩aL|rZ ' Wz1Id@̠iD"Bxs43<(1$5݇-Ss~]6˂JRmUEOWoן.C1 ~W"C]JtKz{zP(Ժ{ק/_u~rtű1^+=T(8]/l֪F_֫ōzH#U2˅t;mKkţFVخwz.jzЦόiб3p1R]l*Ydmi! M2ɩű1!8-BrY<ը7V\ʆZB__΋nu#==KsVO͞+w{zāu._&9\@'Jյ0Md~Y[vf63QM-k&4Mf`|Fy@N53j*]R'TNt Ú~[%&Bg2 BVxyO߾~w~\W^[+14- /R PvFm^i֪jyR[z5q* D+wfAwgt3{ItQiR9ȵ)3E -ULXrǨp,/$ȓSQJb;q_ "Z]yKR>[JqphP}?OϿ>Oo߽۷naSئrV %e=V"Tut$畷o9Ɖ؉x3bfiLffPKjn13cW}5IvsU3>ﭮ*_Toy;Oǯo߾ N971%5+;'+##!>.HCUw>DGkajbobhnX]]Yji:[B\5ml'}igddgm1TWpẗO(Ns+t u rϟi;874t555w6׷5jkhilnok,,H qsxzGF8YGeG$%Ufg$$@bRJRѹԈ@`GGuF|qBTj[ujHibH{S4&?;37++.$ %Ⱦ1#.3<#;+5(36#D49$q4PU~X~Oջ/>{<٩01HXHXĠւĆgv!TP#3>zkBuVTj럾W~_J'DB#N'+ܳ,-b귟|Ϳo?_o{;;Xi}WsJr v8)2PyXjژYژ[:ii?S76t37U4P61p71syojjai;ZYC ͝ LlU^h{?WT_YY+2'{ҙWuAz1D繱# g-ԽmCBC5m t̽-u][:* cb}|m|mB"l"# r2ۚ{ۛz;:z:z[[6VdF88YDe$E9EyfD&@K33*rJ2J2RӓrJҒb2bB2bC#bBBJ"2ýb|bJӠIqe%Ue-Yi=婯jSj7޵43փh>{ॊ# C?_ uڋ"SK"3_eD5D{B!/zjg~7?ك?ᓿ~{j?|ZoaySY^o/?˗ه?|?zf'TfA3#|c|]|,~=DDWT幞K5Cz*߶9hZ뙩i;ʼnЀWQiUIMY+ګ_ Ty]\UG_'|{*>y\KPzjzC5oF_ee&ąTVF䧿I{m/OL/O~_O~>xǏW'>_OߏUɋiM}~໇}= =~_}zwZilblegfnnifR;'ښZ@RSTCc=C[#uC{#WG@)jzOj<{H?ײT71 42wU}G~y~Y[S'&"37#157(+.0>.3>3.9<۶836/llHm@LvMwwwu4wyTRZnoigel[bjfQ^]0"+,#4+"/( ZMȍɂgǼʊύi+NHMh)--Ϋ*)UU[\Ԙ:+1,(TOFʳ_~x?t?i>@/;$CK>?xWOL M^RKQzMnJcQFgijgMy7y?=ӧݿoW?Ϟ~?j?YG?~ǮU~ӗAC?>~Kc#CC}SU-myH'7iʟ[ؙ9ZFx:jhi@##||L FFv3c{Ss'}c;U]33G-=+ kw;[/5ut :3 W--3m}>Mu5Mu~OkZYjik=~:_X@Jb^e+ ZYRs1 ts4q4։t~ilѐ93ڇBzƆF::zz{{jKʪs]!F1qI)%Y i!Pop貜ܜ̴Ԅ4hQj\iF\^bHnBXv|pj_^|pUzT]NrcnBc^|cn|KqJkE^[IJآʌx?G33m ??~o>yF/4T}HC]}_{}{_|X幭FY\PMqmzBmzDCAZSaBG+k/?zg~~/꽰W3U{l OMu^Z?YMƦ63=S'ɓ^k4ղ27207QC͛X/@Gwpw8_8W;_M<2C}|l] ut!N&6F:zV67gƪ&]}.=YGs]#[;5msm=gj4 t,g/t, ,,}_P1US5W{􉁊 Ī27yMNwEruNLaR\nRr7XU^Vo1*ɿ<% ;̣ ''º6u*2747ļ&u) 3ڃG wɑ֖ښҪLo_kSGKHhzLR48585#36*><"*:?»*=6?*7%;.(9(5 9 )098%*#<= > 1,P_\QXR_P:^uQrlYroVTPދ_T3S36t|B?z6V6Vꏾ))/ϬN/-rq΃^~7_k|O?xZ|'_WbkoaohkadBE_ßR}]R 54 @[S=:+cCS]mM M#CgϞDG{&;G{G=LhmglkYcbghg`eog`mLHSSEC`iiټTt_6зR2Q1S11vuSP{j˧6zxsqKIf>n`|=˲;*ʒC J;kմ܉RDlth>HDM#cёΎ֮ښ⢊4hUrd|ajf~bFIFlh4-80&ϡ>;lupCY`ʴغԚWiQʼniQІ„꬈ȢPp_PיA^NfF&N!n6nv*u4Y vp'g 5i֊יΖFVښ{}>BS/񇿾⻯_hk7z}wkoKկ?6xԾُښ.6nv6FvPoy!j*F/""]~vZ/ m >V9A^q~ʟ.[Dy{;9i5nK쫭H23{amehhk`jok`hfdnjmikakg`kigdohr5u wt w2v4T1S6gmjfhe`1߾LGt Qg S$WKMHR@`Fx`iZɊئd8J.nt7†5SFkvf!#GQ l G &FP h___wOw{k{놊ܲh'GW{sIF\JQZFU^qU^ʬ̂XS$"UbD}1n31 rU4YG:'In,ΩI/HL(M/Dgĕg$TdĖg'䔤%ą%D懸uƏfvfAcC<}<QޗVzO~CcMClC}M;TEb k*C<+|cj˒k Jc##|uT5\, #3"CCc"\ :^!MEi^g%V;;;Am,-l= :Ǝ6[_ g{SS#GCSGUmsswGPgP[p'`Gm3+S7=3[UM:FVvQѵs4$RhWcXeKGgjs.1fF&&6N 2|o@0q~Iq<|==AL!arb>1ioommm.rvr12eƥgU(_TSRZ[\R F;GźY5d ΁w"QȞ&dYJ.Tcxu6'ٴ${g7gƥ9$x%{@B\=B=# Ai3 ij>UQBazdaG.;'1M$:;2,y>4>;2MnDrӛ_Tsul kI r0101t4P ȉHʋ K pˎN &'@| DG+%hebSْ?:2\ rpws qtti(UY[Zkci`kaalqq trp pr vs 0w2wP310qĎ6|2*Ĕ 1}RLQ'I!eJL#;֌ DX/CqԮ*ǎGK}y,d,ida'YifQ$5O0,| NMa1p`w_Wgm团ذ(wGg{S K}ʺʊľLGs%btُWp_o!S.HWda[a3YWⲇ.]=xuj}^.;jהrCtswT 13PS{\uqP7%汔Gms 5[mf+3.G&: :wpBX7ݞ<\֑>Mq1ѯKşЪ޺(/'_{;?W g[sJN[QJYSgYF\N:i?Vѷ?fzudNB_5eU&%w.k)i(l+OM.Iωs1313 qKLM-LK-/{SQU[^RZXY^ uqvsrwwrrq uvps V~#+?һu620L2&eL6!Mi01mJDR'Q yd- `żrSJ'ϓ'yđYg,4 ?Mx8 b$ &$c'0ScpGogGܰ gynrfenQuA뢲Wo*+3e`g; ꝍkf {,Z2Wpx$9zDrlň7դ??9ZWW$),uωNTy ë2^'7dE򂝬U :u=HXDpHgH{I,hwc@C~sQFkcej\bhpzB\4 έ"9':;3D07@iXpDhhb|Z4)?3GW~oGիbƌ҄ĆꌾڜڬRhuVhm~LsM+!c`mEY)}RƘ1J&e 1-g¥i &e%tRt:R@Ep;D8d Cy @ 볓{"􁄰/& 1b+­<Ԗ-@ Pۂy.1\bE6BΚ^`9&l _dERJ1R\@HH!O Y*jJ`3d0&NH2MB3 HyWQtR VjV!V*SePYY& ` p 35*FW5JV(*vrH]",u׆U\#)Vp \!۔s}mݖ:Kv;ىX@;O/ yo=U2jzM*7+%ک'"Ȼ颉Ц|/X{"mDX-PdE‘/"Rҡ/"69ì"汛|69ޜC"7Y>X8pe3\ 8ez=Ȇ/͠YrZ`1Q&j6=OCQ3d8GY͐l%!D %cLf G1qHNG+ @NvԔWgŤ{ٙ9YY9YYgA 22*󪋋^Tfeg'#&[23!Z N /dxVxwX^y `ZL;c?CcLF*FJb+SU#cea|} -^: ] rAy)t>3p-F.o(K`ǹp Q5b ((Ie2 XKeo 9Fn嘛ܵ w%]q72f , ]I8#2rC^,E"b|.#gR™p.#gbw"|HY"\򁘼3Ę=a_@ܙcw-|ٚlͣw1;|μy6S6sȭ9RYop .rto]VfK36BFXH)#)>yGQ%MrCq)Y*N68!#gh ɥg)hã(. 9CFrH]elG0qN"h$ MONvՔDƺ޽bd NLJMK).ɮ*,.(̍ . lMt9-p Gp WKy7pN9c7l띊VPVJ[?.~BZ5ZF|iH&J|U]2*s"}*r6ؔL`w/ 'P2WWi}Xtp2:BWi*EB]&+ "QH]@,o7 Jn9zA\/`od%]ȰrܵtL% )\J8/s9L;N31D9N$S1D>E# P;DC@>DCP`}!f_۟ؽy>jwCP;|6L=a79̝uu.rZޅR*+Ki #O4RPwwx |*OS1|E4`fɨ;HD) PwMF;{jJ"C,, vf 11 IɥeٙUy9YЬPrh`[X(vx{ 7G!xsr8g 8{ ^/†?= 89I # $\N.Fr:Bk{C3:[ 7Sɣ5I#ձȆ$D[,77OeO7uN v! xp|}pS,EbX +9FplrVae+9Rd BiBa/3 \;c$o{w&%HJS1=s,b̡p$pýy<@ٟG GQ|`[s>vknֹ2[3`y\@%Մ:=OJi>Ӧi!%d4W6h3OCӱ:V@iX +ftPy+TpB:O92j\"CDq:EF#pɑƎHk;[S g3>.4<%&>#1)/10-27<;2;45!?:,!%={5[nLx{ *2 j \.DJNgcg0: +>3bBʺ@q;kYU7ĜYo>Q3\=P5*q"U) *iO,J)KJLo-Nl)żɍHySV0PS_6&& %S Ut6k9<` NK1Z^(KZN^ _-r K9BFŘ )\?`Os)LL9`ND!X9ީ%Ĝ"̱},ͣ#fgv,.C;-:gj=_-4%ꨈ2, )88*L̓q!mRH i"LL "ߪ":B@p!41B:1+c% 3qR6A 'bb,('~S140 $`(ozӒhimonecbdeMOKH,H/JM/̬)NI,J+59o#ad9o)x{P!p\r b9_qIr ޟgp_ng`V%nP ;N-9:2089 )i-*OLi/k/n/*/, .( i. j) n mIi+~6Rym$ZR*YܡWZx+wUZ Y{ǜp♄t$&J'ұp"& JS!L?*Z}n!6Lr갔6ŴHbR- tKHbB<]\'" I#8,Vj6&Ni0嘋F^b:\@P^"\@) )% 1r/cLbZJYX9'cadoNIX K)Mpb6^!YgLTִ39}f6ur\ΕsIL@; y4= n .`@Ҧw.P :@~8:vp4^˶sSq $~W?am"c[zL~GxNEUTtX2Y2?73̢u[|{29ݚkJ4a&_L{;:ܧ:xM` $<:<,v>s9o1wl[)nϧJiMC"%J99,g"Y& 9y 6&x ONwE%ٹ;X؛[;[98yEeGJ 푒)7p \ñs>QnҮCw@lp /QwZ$ǀ!p\Y $ a+ l ^'0us opvg^q:2zi]ǴCjҼK#wQwHm;䷴n7Ė RiԶJl]'mW+UB n_L[ĵHDU+DNU`5z;]7#-Bt$6mʌwK=b+) >9_Bꔒe>)_N!)y-2$ K(Cb<$ʩcrڸ:.O09}ZJ3 Ȃ/L%K, Fp+ fuFy\ůrq\*k9ie2G^%-ΑL[Q3d)*T!GN64 Wl++#R?ح` w^n7du2;nX]Kz%qFk=OGԎZJ.}ܺCn$lQZ։- b&uܼNiZ'7mZV M5B q WAhXկ⛖ mĖ%|"mعD\&v.z =KߐH}>9WNY$/{Hr/',҆ËEꈲ,Fh#K%2cb>š\aN-3&WYU2sj5Ɯ^c95ECH 17p<&ͧlɛ|:'͑5uGYQ%>myy4M:K\x3 >>˦dLcӨњȸ\g?B-oĠ԰ȘԴ܄d{2Q+Vog{2ǀ뷎ճ7+)9xrv\(.d8 <'mO2C2Gr".Ke9LeXt*HƢqѲT{OKKSGrH4 $3*6'..'609UAfrcvly%:\U(. 9_Aݩ@q*3m.7ub8_N8#6ph.h`lI`u XF`q^@2Jq? ox= G1 p;nb-l%7V s`0zX}SF)wL?f2={}z>kֳOۧR{h][wh};j.}p6۴mZ>MߢmیcPYY#[fd5Llwٓ; %ݙ{j;ˁv{;3S\,b|;C1{b 5p=bleU>d )a+a G8c#g=r>=pܩC,`v`vpvhnpV<Lyp $ "򁘲/"ڮ-Ǝ-anI؛b֦!ᬉث"*欈fD3rK.9b>[gx?ϰ8LΠHH 424734334770@̬m |\|O$GD@zZ*t̎q;ے^ݞ(.W[ %o?Nps\oվBh;5rXWK8B3bأ;4&[D&(` u XR,O˓80Gr#l(QHF@4) 0 PVp~c *w r*fn+w䎜]̎q13t>99*ّS̈S)vƒ榎y>hq88⡎yz" 'i ^9# H?EC1HL9S$ u_Bۓ0}{Oړd=̖-lI9[tfC2.]̬gV%;Ǹ +ψgg~͛aqLAR1vdiCܒV˃}Z+ρq%۝coNnE)Cx^4l8[OD #!p4<`doFV2]&M6 |Xǂ; u`,#%88 ,E8(i@>9 P"$SxJ!Tտ©;&o0%[ZN߈7"hJ!.Bĥv%V^Wr%_"ĕu!F^(+\`NŘSL?$sTJ<ϤS)XJ:Od)DF9O#Mq(g-0 xs ,/-pwfwܽٝm9w{anS[cu&+Rފ(]9'Dyǝΰ9lɢQD<"NWTEhڸ?~ 5U5Fzz/T7t0x;x;9zBC^>`itC||uus{{qtֱ39S6JǮN; ʥi[ { 0+m;ܙdǍ,[C b0qY535Kjfb:u>{V[NgeW5ѫo))Et,HED̏EH̏Nx 91MQv¥9cc`1|ں' 3ʷŸc;bL[m1 h4A5MP1qj1A0 {' nuX}aQZC@(!4[ǭQi4jmCƐQq uiFGp % .FPp >m{aA3vѮ$zxd }AbGA/1#}Gyj7qNR"uNR #6\ piD5BUZEo1jFѠ:ZҨ==-]խy[߯~`UV]zp-[6m,۲zɁoڲ5aބOt.$ eConvg # `,2m4 m,6[ߎLOn#7:;'"X1B6@1?1JY' 16L1.TO851:p 1c [;wG M1e@bt+jbd+jQ-1%J4JFɶ ?J8QEbkacx+ܱvx{6BtD!!]a+wFH]!'Hv 'dW>jG aQ7ZuQ:sRz'epRzpL " @z7$1#HԈZh5,E3u:F k4C޾֞GMSý]G^~%-_z|cÖ76n[y[,ޱ~];O}/Js^Lkyw4}͌iM5 #nn4y#ͦ9D'i6uzcf~x`Ӂ]ܳ&욘]1Q=!-[ &m(& ńAP~(F?Arc?0qc78ʂ30 CcXpCP CavX"Īì&hœ.iC6ꃜ>g~g>eVc,.XI[I[YL" d@y’&0@0 ̂Z͈h&h0^k!m_p[g_kg]K~î3,_:ks͛z5˖]lͲoXvt w]:7/uįn{I_?(vw#L7`Cun񐃎xl~h5EHp|ZREG18$h(:P|0G#?44sM4ch ~v&#'D\6Hfy epD̡ ޷ߺٵMLNژ4&fBFMԦ )4S1A3fӌQ^;kfӌp 0gsg$A L~^, `LN⤭.qd3,ea p YpԌaf "@3}RUޡ΁EmsFaouGKn_`,?{9.ذbٺXlݲ .~;y2듏s?uޗ/ˌC]Im' ^ ة0P3?HHh<|b L4Hl$_勍c#c>Y=ǂ3q"(F(4-\M$7KMx 76Ƣ,*х\$8N3a/uaqqn8&DØM #6M?j/k8b3ڌa !PAMAa[Բ9zx#. `'`qV;k)HY H+KZYJ2$BV 1!Vb20jzFQ=]MM=5M=y_*-\t+\>w93-Yzf[h}t%?K/3>c=KY'ʌ/˳2neU쾶:T;ȣZg xݼh=*i DGQ`Ztxd}Z3,6,P34=#rBΉs"챠=m Qo OȘyNBx̍G] p.4DbRu"Q5 *a[q'ఌ;ynjGD4j7Q W@<<:@uÜ08XΠvȠ6ш@T!4P8B`Z fl1F$uz֠ ԝmMmՍ]wkIX%3_Zh-ںEsWΝvu fn\`Rr/J?sa鏊2K2ʲ+ꪍݤiH$M#D|b z4D蕠cFB9|d!['N" Y,쎆Ѱ$pDɮ1р-b~>'||ƼDC{q/ MJBb܃wb8Q>]:q2D@$Ș en$F얈-aְh ّm kP$ >Pxm׆ylG@18TšNw8pE "Em SO!4Ɛ(h PY1ԊlX`'i j^6 ukpsࣆ"Ugi_|}˖ꊹ]8k-zk~cu^_`VyvfenZeNcY yZ\Q\^V!kQUT+[,^;h 96sDѠ4Md&:x D#^I0Pch {baw,슅]Ѡ3rBh N,`jAĨ_ ~@gkQ;}Q/z(q71wnjE17>Au.lԉ*8','q #$bG#,b"v4lGT XP"P v0 W=7H0Ld8y vbTpAy3O"Q@Hqtad0zZՆ!]w{'%_HWy}WWyEΟn fm\2{W{u9K Ue劦 ESJRSXlV5W+T]5}Ym#,nȀ W9Gg4EX{E1`W`<w,z8q T\q7|q/7E츇0Ӡ$Ԙ.Fcp qFĨ 1$GdI88`uav!J ;tA;Բ;~qp/kü" pHt 'p urDCD`cpx1tI0BH8jEPAd2 &ΨuoPӧWw w Uw+ʚW}˯9|ao,~kX77޸hK箛[@]?FJTjT)ʕMUUsuykmy[JRlPT+U Օuki~:xň;$F¾w4GaEq%^ɱg<䉆} X 6` G{ۨ#~+k(qsvÎ'q17;EEGL̈́$LT 9,!>hNWĽP* "rS$\6).IOJ9vȒ6_68e!# +IA$]88A1jEAY 1,iPc殡⚎;i_gRK\6)Pnij9y)vv Eyf4ɱ$ a(X)) p$PG +"Ċ̨h5yXk]5m׶hۺu[3*[ť⷏8[`הWBqO1$qō !A'=EAtI S~f|vvc'a\6- (tr F;x%BDqg(Xi"qFQ #0+Z̊`f bEP3֙u`!}{_ѥini.I/kR{ _vŦnY>k{-ٵf^e;W۹zs.u圵s_ܴxX\ޠT<6+*TJ++-U*07WW6WWV7T7VU4gKc`?a6`); ,=:%٦|l#nfq"g s#qZ~qg=J`([:F ,Lg!qHcWk6w7vu]iO2?|ҧ۶]M^ھb֮-%;Vݳn5,yM^ٰ卋_]7Ge ydWsN!7-dysueS0R^W):ۍa1`p؀?t,ඇ=ΐ$ٞYFM$z:CӰO#^ۈJ@<”{!7>#@xI i+1.V K 4Dq^3YRjκ@"Y'W @E9e#Y4բ8`E #H#P`z3=Yzk{ޯkӴ;k[Kvv~YǷn}ux W-/o[>{۲YV۱r5 .g ^ٶb7.xi͜7-XV򰴤N!$+k,W6 *˕u*eSeECUeJU_YPYQR)Uƚu@cEh8q>wn1䲇aMZ^?}p KkM3 Z$8^= $Hd+BͅܒTOb.L` ;Ւ`"#e I"#-6W,mS=Oyx]EEHj4 B(L0+nF+3!lXgZƞA}ǀOҧnw Vu*[>z|7~q%3[5mŬ+f蕷sK^ݲdƎs7i゗7qLMY#JH)W*+++M*UsU#QeumyÊjUEEZxTY688DL)nf>u~-N1T뜮SLJH&x;B^D~#vM3-sN[%]bmL NtdF!/@ʱϓx!X^{LpBq6nV)S sP-Nc嶳n}u[8N!64Dkv?zK_?]3_qeqauYq\V^\X%+UWYVQY*/TTVT55*\^JeEeJUe}sk_ b498R9jiSM!I8 'd6#Di?o~p ptM&HO}NA&^G\-7djvNAND!̀i'ytFhc @3ڢ{fAӓ pPQb if4@ Ai@kXM^msSS2TQ[VՕY~/o>/9Hxk+潽bEm\/~x `[ڏeUVUUȊTereRYP+JEUF^V./SU**yBV(*˕UM ը0 Kb" ӌg6&LXqӦmʽ$SO=v8"&t<8`"%` \")(uFsڸg@'&`byv삹N'X)h`0웎VBpʂQ4J-BH 3=#ZKﰩgoh׷:5چUŏ:2ͷwo^qռVݺb36s[3E/|o_.x;cs_ÅF.VU*e eD^,W*yJ^Z^*U(KзrYDiQYAnANfNFjfNnJQҥfF1m a(i?lS|[鋧zPo/_Ƿmx{ߖ-{zceV-ڹv[Kgtƛ _]=f<뼟~gO}3ߝf_<ҲLVPU2ELQRVˊ(QʊUrYEJUV.+eKI{p?;+[n3j㈍agIOl> hdѿUTVk*_@3S@j@:Cp+P'RIkicxjWxQ`Emlq`Cdl7q4 ̴.bh&) bB8/ BLoufTofDuHګ3:zvu}˰Qo^U[V;9;v}{Ӿn^mҭ떼jų7,z kg=̿ѿѿѿɿTdUJUB,JRX./Q(ʊE"eiLY%JeR reiyq^q^f;߾w{E }Ciʑ87c[4A8ϴaf~NŧfvrKR=N x%\"t.@@^IRM gJ90ð:xb))0+N?!)N_ g0-(aDp#BQ҄F3z 5`[1ڣv ;}nmSSu~+Kv'k?qCǎwtߞ;ۺau[/߽iu+6,qM^^=_gk/|\^)).%rV )J *8zɋbUEYH*WȔҒԯSu3fțuh:n2S8O'Wi=@SA,V%.Gj|VN^ z%a90@}X%5AH\'c%-Nű, `e2h(K,I10hpEIƊSAKтRF0#% Vd% Bguf\cDztPi^k Z{Al?T״T j;[?-/{L'=vs'N8pxwvn9]oݱq͞Mk^xӊo,a%hߟw^Te*mTVɊBTYZ$+/-+*0*fdfde2rҳ󲊊d MQg-$je TqC33NA 4NҴ&թpݛm:lLWI vC1}SFOD.rXEp1RkZRIݐσy4҃T,ҋa. Sj` hdFo(;G+iU/` փ8A4 ;=nm}Ej({UZўZ{S[>ʹsN'9x'O?vS9g;m߲cn]j㒅]pҙy?f?W}>[^P*Zeee2yHYW*9Ve2y]4$8/+('87(;$('+W77uij^OX,M , .p hdGJt{7qÖ?v|Ov.BD'uzߓȳ F8K<|G34B h&.8ۃ,B2(b4/iRFś#5a>huH C~c瀹mܭmlW7tkk*;K~OooII\pҥ^M~9)򅤋ΞO8vS߷]wm۵-kyͷV,_p9dz_W<B9XQZPYPWYP_ZZ(*-.-(&ƶBEIX)+䪲"Y~na^nqff~znQIymKK`ߠnhlQC``l6h =lmTve6ί"߽֯|?~˗?zׯ^~))K&&>sc8wnڸs֬ذtΚy/-/य़ ?܌l܌ܼ̼œœœ)ǔ yQ8DQPVՕ(UbE^nqvf~jJNN^\;<7,V3ZQΑIۧg:18oڹ/.Q2Gp 8᡺ vw 5o|SOYtz: L-Rg9,/$EO5ie`q$83‰A.EP̂f 9`% 0i0!֯G{uhՀ4z GM}EY|N%x͋ONuI7.^\|ʅWoLvkg/]8uLBB‰#sygo߰l9̝?Y/nvJVnZnAVaNznaNaQnanFnvZVaN~^fnNz.'? NERUT* Jr3sKdJyBV%+PkJ Jss23RdddM-Fތh e0q$(FCX1"K ==&/pi$Vb*DO" g#=.;Kݐp2 "]4qQ Aq HMuF3FxoR31j3Czd@pL [m}^mC5̓e]%]J[𷷫_?uĩ+^?w[n]kݸW?~[޻~߻v3I玟3f ,Q{NFIp.Q cE1 Ilp<@Lz(P'O'4h~L<$ɋ;#,<3+Zjqt+?JY ʊ,hF0eRz <0O f‡ ZO j>M<n}sCmXԣj?)Sud5}gS~wNÇ?| tI ߿t񽫗߻~w+GW\x$%M:sdӧ8woڼq6Zf{٩-efg=LH 35=+53/377#'? | ?03#/==7%57=0',#8#(-%;; ' + ^fݬO?OW_gW)jڻ`5VXq9"X(FN*GÈm,ccf60=7ᙩoKGWu@^{%fJg)I&R+V E^:#F{a6L`1ƈx4a@H4i`C|@ ?k= N*M-=Uʶ̂/2_sm?v;g=yӇ;|#g>w"ґcIN_>}/޼ލK\Ku7/{ j .K8{ةΞ{ݻnolXreփ;iYS3 sedeYbE^VazZ{ifܻYQQY r7O}E]-ڡNk1-f3+B V C鲑 x(HA$l5dx/-OΥt)%πkRVrSJ3jJ*ROӓjI{øW[ B.P F\f0A1ڌHgq#=/Jnԙ IT0"ZOk!s琹5m|ܮnQW5U vTw(ZZ_$+{vܿG8upɣo}ux9}Lx睓O&9{ g^JJ|fRҵ7$߼y[~!K7_I<}1S=p#}oૻiw$2geg eyY.蘅E9Rgˀ'E9eY2|y?~ﳯ~qrJM+HIz?ݬ/?+ǎLH8 C6&b6"V3Sp3FX=0  $R԰z@jM6OиHߒE_&*NBˈ(8(+-MH"e'z37S.##4Fb@ A6z`6uY:M^C]MjTkJrTm_e}o2]ݮ=I;vٱbtb&SՌf M`" (G(ZtEDjL䰙6CZzl^ ' 6dZ .}m_QWR%*w/l$O}|wo/>.no{Z;Ё?șGϜ8q>!!ijg/%ttSgN''tʅko\_prҙĤg?q"p^_K}?Njʝ윴윴܂cyyYyYywS}uҾNKv7=NZڽ_e^UV 53Ow>o/8u]{wdJ|WyP𨦮Khfl2"f0 f4J Lcifz;dXCIJDQ$G M%}@dV$$heG!AHWQ4)DpEIa'բMoVRgRc&Jc&Eh䠉mрpx {!=dj3t:5u>EUw%Eyf_}i_|Dm7uώ};ܻ{о>|cga=v̙3Opϝ9}ܙ ^pN_8{BK]<6J/_Nz╋KJi)*>;)@^<#6\&@V:˲b4 a+᥼2# ,__$ɖ^pH$˖–aX{O@O33sw133dUeUVs53OO43U54ÌGVϼ]'U?8w=7\aO}7_.o>u$.Shg|8N?cwV<K%skK{s{uW߲9VD;j\q~yeIEiQY9cUu%Ս5 M---6*_m8\7 ;X,eTaH$<Miouwɝ*E1d&L9,Kpx\{v`q`x#!w( u8þ@Fa$ G|Q#B7 #'{{ݮt͠b@T%H+~fg{[]\Q^mz?ҿ8p{'y>?K]&ɻt&s_me |~~9~(/3SS>#)]?ߧnjFLS/[§/iԷk[_}ʱ/gTn?o$3|y,cs,x~M>ڕxS˱fj3vv^9HnϬ,-gw%82o&%?0':1]],πLc;LtupXJ[+!3(l£94#y2O(L|NP!r. => E4yi m+|' k.G٬~֩ _EÐ~~ܷ?g-}]_P^SNKT^[y8y|8?OM*ys}us~ !"#zc?O_o~O_ܑfi_^TW/-gR7_Ӏ\T9-1"nEss)q!WO@.GtØCnvv'~KǮVRK~jtdhb!6awjkhb7طftMjx:"' XIuUiMSmscMSK}k[cw[3ю ER2@gY 2T\70hģoh4"r.+`9$"WHywBPBX7 yaߋ8C_ F=1xAgc;` 8b"va3Pm4,,o~{cޛKsK몪+*;h,vKOgWWM"yJ^|BgϧKǓ!j]ޡc;~ju/i|vxr-6|816<{?\ , we Jsr *K**3準ƚ準ֆ6|Wӎ'dL0$ɤ ]D&NQb7!3F#3iDP9bX˄ P4"#&F {!w( ޠu0wCj#PO_/ ]AAh/p9ċ+l\FNePU, 7y_{] ,\˓y:MnST>i(no>>=Wx!#z}|@W.Pp.ʼr{|n_c/4{A5"R7XgtlQj?_\y-R#NnQjůcW۱~re'qt~xv%f&w{}wdEUQ}޽}[_RTRQ\PTWR݊jc:.2@#aTMc3(T.a04:De4Il*J'9t2x, ]*bPu A @^2rC|^n:nw. E|Q]6 b6,Fԙv8s<Έ걚Tb-twe-z]mYʂҺꢢvM\_ևA,?>?Lޝ_$R7#Zoon_ QXg 3j4e/ [X :5}R_pi_Or,ħ:k}~j=&?PS8cv/39n;vs|u!T1X WDr@I2E:\mQmF"à%? 6f7@~qwpBވ9^Yd4X6zW z\!bPY,ZB!ua+*rK{S]*?*?"7]veN^uvvy~aUI Kz}[>m_%o/o/o/]2uLݧWW׏7O7h}C+O2Te)#Jw/o^]lMhKKW_ՋRes)}~N\Չ[/6ZiɧX80>d8w'׻Gvį6SR|z1>>w04u3^y'^٭4:XV]QW^WT\^Wm'bZȄ:æ$I K'D\H&VĮڕrpbxtpb, 9IL PCZ] P类}w_7.}en3ob*:e=rAk>0CIH>ƓEO<Ш*S?G+Tb魣^bjurelfdt96Y<?" s0j !<%$7 u J rܬ+jVD-oQj]0(kQϬ~ azФՊ5˫ ТzvX'~dRYd#ŤM= fluZMvAКTjqC#>0;Havx>7=!,AoA`]/E}drQmщAO%ݘʼ윟9 ߼*}υo*OEE%uMX&Slپn"qwyx|H&ӏC"~!T!uLH__ ͋tI^?P L(4}>gZO맯/3Yn\W/SωuzL?9&I8,Nx2]oŮ+;˅aAtf7:\_Y 8zO?l!PUZOEj== jHM ) 5̈6gcYzWU.9r.]r O_n$aFTի0nm{փAhТWrF4&@M:}6 rZ-e9]Zv h"bs;`kz@m)Z eDtNwcScYiy_s,`YSMqQ]IqmQqkuUCeeGK'(抜&h*ܿ:3|{uxqpߜݟ]]$..SeH^=&hM^=7<'25#GO WQ:VC)vnE e ey2s@]ɧ bwueT uPwnǷGWŭӹ~pr=Egh? "1qʩth'iz!qsƧ|3\x. g's(\Belze:T-v@ u3`1ifj4l:2ۍlljQ5E1tԪ@#`ʴ'[;*+s}%Y?e{_/~sIr4\YXQQ_ZRU^So漣"e }=S>n%Џ6NO/nO/n片ˇyz|"y*S2FDW"B SgY 5KOR_xung7;hzv'~ylӫ{zmtntSlclhhp0:Z.#%9u 9n˴8ŐcHXWz^rԺ/GmKRԶ4/GmBJĶEkQZԲ6i5[ kףƍj5oעhgв5mTh*  .GGcٞ񇞣ǞA%0|IA Z:͠52F)Al|lZ^ZI-h`Pg2 `2 ު+El.[[So~}[WSSUS~얪ʖڢƲ׭5ULSs{s%FYp8vKR'ױq YiEI2Y=$^nezvwx_{7̓~z}re|qlnǣÁþȶh>ڼ3 Vbvi&Yvί&]~݌G=Vϸqƭq>M9/2ahgZVæEn)d\ W"yǼvug?b޸`|/?G'O'> LG㳡`ŧNm4jXPԀl0bgfR(uvanޢV2 PUJZediV3bC3lm&I+W TRcccq~iΛrꋲ[+ޕdPUϿ/~]W\P_ZT^VSSSUUSU]onn'5׷V`[Z;0$" #&kr|qt}7=HcM&~.n/'gh;{DkݣKܟft4uz:N>b5\'cY&z'7{q;G׻l+ɕ凵s'K G؞pYGzVi9z|folt| N:TٔS1x1j Q;䣰d $lQN:5N݌[?R4snG;EAp%j^ﵮF}Axg8vAxwȾ;؛pOzb3ét86OG3=ޣپu4<Nǜ^hɤ_̤jdq^wzQ!ni 6،fZVѪיe2\(FڨR hF \k9! iOu֕懊wyo˳~(~C*߷TU4j(l)`mmbKݒ:r^ّ)obl~|ubc'qpK҇'7'G7G7m6~vw|v g2I2$~AFn^ngdF,zW[G~w+[ɏskgS'Kbldhp(23stlڢKH`GTH:|Dt^(̒^`*#rQ V$3-#oQZ0Oڕn,:ia4iD|1dQ6urBN3`f ЫzѨ5Y@ԙdӨ@TQ%"TVu2V.rNk04!BVKA Gv՗~ۢw?T復yPSWMmk חk,k*鮭ķ4[mԎVl]XEoc<;2 ~\۝Z8Y=^ܸXL\n__bW㫃_e c㫣ÓÓ۽5ʨ㯷Rͣ!@]?H]&[s3ks+''Xt 4o#HߪceL:RN!4BZTpZA^|ЬTCvUgPcEC$T68S8,ErΫ]>KarԺm+= 5h?u ;[Cascuo 9Vl=u}^Į3XZJ 4"Ae4 jJ% O)RNKTzdЛjLK[ڻX=[ݽ8Lw/[ݣQj'b(9J۱~je/vZ>LWvk;˕͋O['K[k+gs'N>G}3ӻё]G*2n .JǤ47~V Pŗ|lP!([d,i*_' ~"*z,AcY$ J:I ڨYk5]9(>`>hXCs>ǐy!lY"K=ǐSԲ,>Z5Y¶~'0:X<mwfxb,; x=@ub0 N(B51Jq2@-B)+dqB\ k ZU|\pERqX"P(bX" 'cj U)rrX) ^6kS-pn *LU2UrFnkǼ0<M45IekG2{]tRmzMqؠ/0a7@v{쐊1ȕ@ Tr1xR@#i%RP$lL ՀN ZTe\=vq#k' v~1r:z~1|2r:r2[<^.ćCsG;}[э2 nU[T'4QaMgiT /&)LbqLc.6&`v+v)Xx925|GhZ>"X"BHW/siNȥB^D~61>89>OMNw=#-ٿf .AwA᝕:fqnAFCdK, DN&uupHD"y22&Q"x-Z>,ce<6lJ[+vE.Q zK+ ~4hV Q(|q(A*d (b YT@7}f suvɠt*A fȊb1k5VΪ V8}>G( 9AH aq@zZ(0 G!Ұ|*U#tGtK|/sX$@YB:Cr!_HF\sgWSmf2*OHSs]oZ Rx6V{_[YKj՗ "\C%PNi**o-TuV`kJ5 jK5AoW0&>,bZLmT$U~W~߼~(6dPJK='ݡ9w`&]-y#Mwdݳ#Zк+}2:1gO?yA'wc6,Ì4&b)v, C<g(6 Hd |2QH%8'ge,IVsz!QbK1I69q"ZS+ui%n$dBoDE zaϮYcLYzCauAaCV]<MD`鲃&  d3BlPvXtZ"X2H)7dFjԚ>_dĤalԚM 3pX'$r6WH˘HlT%l6AQiB:GpL:Ñ:j:j;mj`JtT}k$dQݭFvg<PNl"֑ 52jK R)Ubu帆 J[-NALK%Iµv%ߩ@R>$[e^&ϬC:A!ϮkF<^XgׅLQ6 * [ @`6 8=[n!!-zQViud./샍Mg nXmvQ#kRZU,`U&H w")_*H an !ӕ\/4ɕR:SLk";hi@B⋸dJI$ ىinl.onim(+)k(oa5\J8M?қް;iFrS5[S^Ŗ:|c[S-%ԗZkh-U*B] W[JlppM\B1 f!&eQVg?W6׭@PTUdExLP$ o*R+bDr8z]KD@PZ<^D$)T)"<vK b:.C$t1T$| M h 0c 1Y<+DVgT;5bZ2ĥ"Z + z! !pZƂ29 aHC\:T@hpNo1L:? DH$ Z : Z#9ݰ߃ CVͪ@iAIoӨJ)hP] X<#Y]I$,%4FSxZPe29[(2x"@r(%l'82D",*F#v3HXil+-*|:Oy!`2)ʯ3@j,m/.D6B|]^jV*-UZFw)tkdOJ9Qa(ں_O럾?/?ZRFU(Ö+tdXJ)f)lAwCEOchE#8|؍'bN,C a.*Ga,M#bDd:ơ3F_Y*L>>> /BBox [0 0 111 79] /Group <> /Filter /FlateDecode /Length 889>> stream xVn$7 +x "%~7| >x@ uψ}Y,vс` UUg{a|Gt|+E+ko\ʎ*6`EJ"];UaJ +U&aá2u="u2# Q7.[n%K$^vc>zԦo"ŪnʟrU$j_J}b /%p Lܚ_2cUٌUnV0;,bv+ąK{3Ĕjbխ?Uhb$TS l B`3v|\~0OVEA0xwVA*NN2Anp+ZUdziDgcpJ^DZ`VXbFX[%؈/ R}bhԙMtf- 6 9GtݕUT*k=zf6z]rbH#W0fz-U[XCusBk:faoʓgk=Q2QzhP!346y#MICTMӘĒ 7_ĜcVQ pR`^8%/Rʊ4Z[)%䓠sI4&ODe1}6a++>YyXy 4, Ezkc8Ôewl: 3<ҵ=y oz8Ÿ#;^ҼȦu/ڼN;;xUj>e}qZi kv<,ol=W3꧞OX2Onu֍z˺XVu蹝5uqvm w;s\_,~_| l>n:_S endstream endobj 13 0 obj <> endobj 14 0 obj <>>> /BBox [0 0 206 79] /Group <> /Filter /FlateDecode /Length 470>> stream xuS1n1 ̈_!  >dXiq_MyE:݃LgCK{#]/#ws E?scQqbGғC0YRu{s+VaXW#/$֓$ugwA>Xԗ'0z_CW0;]vLLbrclR + }A+y*tAy|G "_ xXFsiWiЗ n" I*}/2MehԿ $twF&'UUhvrYi`!۽kG`[T97SOm㳀b!<&"0l}g`qktN;#^\ݕe42'Tt8J%ࣣ.q*#t,V/yTfI=?e( endstream endobj 15 0 obj <> endobj 16 0 obj <>>> /BBox [0 0 2158 2405] /Group <> /Filter /FlateDecode /Length 217>> stream xR;nC1 u ]ْN9]z͒W %@f&EҺ쁤ҫ LY\D *:[e$r (%I%22Nffdm\L7(~=p= ф1zb/#? 56ur_wIz.Ҍn-J-awgz7䠏+Kǡ1+~ endstream endobj 17 0 obj <> /XObject <>>> /BBox [0 0 2158 2405] /Group <> /Filter /FlateDecode /Length 270>> stream xu=O1 w H+#unOP%;A o Je ɝ̴pE UN>AM3 ^pq$#GT%F%Ľ%^6T$2:V" ? HS >G&IDi$ΠIaؼ;D7+Y A{Ĩq¤zۼԔoONbKmǿ9<=;2WLTY?_~l endstream endobj 18 0 obj <>>> /BBox [0 0 2152 62] /Group <> /Filter /FlateDecode /Length 379>> stream x1n\1 D{ue4"OirEbv;7 Tz@y5)Sn/%I+9Cίor ޟ%de?x m~椼\vnѾcF봪uAMfvb-!M3T`GԚ)aVwk)e#!/5f6%]?ЙB\$՜KL( AJJDj!\vFpP#<,iwg_B1*y0hp+]^RHui(PW^8fOã> endobj 20 0 obj <> /StructParent 100001>> endobj 21 0 obj <> /StructParent 100002>> endobj 22 0 obj <> /StructParent 100003>> endobj 23 0 obj <> /StructParent 100004>> endobj 24 0 obj <> /StructParent 100005>> endobj 25 0 obj <> /StructParent 100006>> endobj 26 0 obj <> /StructParent 100007>> endobj 27 0 obj <> /StructParent 100008>> endobj 28 0 obj <> /StructParent 100009>> endobj 29 0 obj <> /StructParent 100010>> endobj 30 0 obj <> /StructParent 100011>> endobj 31 0 obj <> /StructParent 100012>> endobj 32 0 obj <> /StructParent 100013>> endobj 33 0 obj <> endobj 34 0 obj <> /StructParent 100015>> endobj 35 0 obj <> /StructParent 100016>> endobj 36 0 obj <> /StructParent 100017>> endobj 37 0 obj <> /StructParent 100018>> endobj 38 0 obj <> stream x[%9r&Ÿ7/%;3 sVXdj0=Og$xDTfJ- ΋h] ?.q~}?_bwtǔ=r.!^_t|Iw=ٹO_^t_ !%+~گvXuw{ ]n_uY߆\uK{o_5//????~Ï_\Q?KTPƫ|._Q// !B!B!Bi!Rm?|ӟ_b[XNU㫉F7Tcϰ B:q ?僶GUBs~37[{q5fs>T}xMNJ5{, ㄙ̹a{zFm‹Rz{yTbn!s(A=6"(كW|QAkC1s-nRuP&E?6TpXo /{څ?H+~&F]{ _QsRh+;Gb[Tj;ԑJEzWwFRwұSJhKw >wmʸRw$J)D4RKsMb/\I}`fpf=]IsMsU+Ma H+m SvN m# :KW+;ր*|Tgzr(ǘ!Л]Cѯ{XKsnkAz[J+%#I q5Ē$Ia;A+jF{o /{-%'dS{P/ŎIq(w  rۛe;[FM?JӾ#s 556QhUeOMׯa}#Jhg9QSsنkI41څ-*w/^{o:^:tLÍ˞cC{-a٢m88/n9.m|Sr`$Mvlu#nw]`+DtksFۻ}o/=!;6ݱA !]~ M<&5r}yw}خA w!TmI cs/=6$w+F5]?+H!f`ܡZO/q}m滖`*WvCí5& nIe4{RNRH-ݡdՌ Z@V:(>ջF]^[KZkqS`{EYͭHh"h6':yy%?UEQεt~;V?PZyZs`_Y Dk7*0XkњIRy^Ǯ,0)%uPb#RCKIp'-& ʈ5_w*5]ZU 6(?;(5Qs!>kCh=x;*wHhғæSW+>ߩ\-k@(\ƕ4p<3h,Wc쵵Zb+%_.Hn!|GKܻb!KpuY^"$J*W%%&r$._% 83&n/0Xsn-Q[#hވ_Hd`d`w^+ã;7"@IMtO-X "Ä#k '~ʈ7UN$EJˢJ['ek>A~[vؙ I|aqt!"{\C:yfxf<"py=p]O/6Cm m0s^,7 Ն_)o|?ώ ͠/ݞïmm6^\GÌp"T!b2eȈ\r> eT{JUZ0b0rPzhDxK1{Mp's{>b9}]k)TT*]54A )Di[$2 (hEذ%wlU( $W4hXȈkQ%Z* @ ]b% :=d;X{V J>F츘ջ8bRJ 8PB$ ϖSy[nfͰlx65f[Z4=t0{d) ꡪ7qlvt>?4|c,0~N/Ր~l` 3X\5d~;d9ޤs#H듞zOҧV|mQ6x65dz6?o0`.qy|pO'ո{MzW=iiZ7i09ַGAl(a<]0V|ۘ޶T {mWL&6bfqd́=B[&^"'1j] vt:;%p )+뛄w9eMk䖸;Mz5cE;w1܁oBYW?)3Xի3M[bV|a}:2x ÚCp51^Ks | FQi8>Au-+J]DZtw+A,HTntUjUu6RM5AH5tE8?N/E'6)B˧]"'ui"]ڴ; dcq=X˚@B^6洗@PP׼ &'%D: `7 q\d,hLJZY{,{e1$ڲ`cFu j!iL攕qpڔ@>ҹ |CTi`v_w\18- i#x}zG|n:0m= g٥DcҞL"^koPZ`r/)WR7sڇv}vD|ϛ$%[Sk!7 $1 c,w)I?PR[Bc:o@sLʐAsq;;ݳkE\;Cǔa%M |qrI}&FY59r,RwZ:d6X' ZWq !KaK}F9@w Z(r$0gqͪ':r-kNK`Z ^j+ByX`'PxL-,P0o J`N ny#7,otKG=)4P7jy 8S6XK5TK WQ#h+Y:vhg{m}mԍt:gg8Ur xm3t DDPg6$I~o#&7 ~̩u?][\^?7e3* ؙ"JC' G&t6AQh:Wa)~m1l-}l6ۀ)F'?dy<'rG}`Ϳm ;ŷz v6zYcܭu|pPpC*I,hPzz2kt ҩ\o$C&X ="SWg7!Fwmb6kMf]5wWl{6WMϡn~X,|xP|7u)ؿʧo[uupʜ(d1/;(ؠTkfQs/b}~svÞps|JYq=E6E"^fCƝˤtVKl$kؓF^[ G4)εp-k`=q0*-GĮuJu\))T'宾[[5u"l{A}{Y=ll^sYY_p0xxuoڲy\o,x<&Fjj;R+G{D:0~7X-Ly^65 4r,P*V( I.u ֈw%iqhޛRj;*\#5<#&D~o|?fAbs(z{˺?2K&D2l2CW7"w 0H?rujZ^a=+,ss pe#ǜhH5diV )w1E7oSY\g뷑mt{[-ڞlzllfk~ AD61 ~d Ðǚar/E16eyp{"#}Dm88H5^V[jRWtG_yC<*kꙗ" ;C4 ӯ 5}@ShjN;~hpx?{Z{bt>^9.g\׶ݻWGf_A.~\^hrstl껼VzU㥢eA$@u-CY>$}yHqI-6 xhmmhm,h]sXmmbXm  Y]gXĪ:+ܙuݐ^ps] sHG+քYAv~cz8TsO<$jRqgPo=!A3CrcMu7w&*]kҁ vK =3Hvhx,~XZG/T<aHZy\&ݩ(yjmq#J9"1:!)@9% Hd[jv)tMUNWn<5$];o&Տ׀@΂>snp :]. A +{Ku, BUh|,$DՙU66zL{DEjGft ҢqRئaNXbSd\Mڮ ΘR7L{U̸dچ":8-}<2Щ<0`1I ʎ,qD{{d @N(|(T#x据*s% ac8:Ѝ::7j:$qC^ٝ 4i:#F»Ѫ|0oiЫSG{E cF"U|YB̩O:ց!{`S ۉ]xpBeVx8ϝ{ƹ {=йoXl=׻oDg=ֻo*8d|E`$jbE-pvȬ倸ܩh{!p}'WuoPEZ->lOq<#yz Άpf==cUKhزmFS)v鍏֔==&W~VQ!:K7`.hm*{'rHш j0OO40.<=PIa=Gc/W$V=NO9w ,`##CuMXͱh#ҼG>r9YrōӣOwK9- ѲH*:THG|$RW'Gj+-> 7h킦c_é";ہ<~_T[ϝ{˹z0'`˹ ̱ۜnȶJl0fyOxx*̧Pf׆\md`F.m=č͗h|΍omsbbW? j~ؽ;7rf9q7q3ȭd-h6#t ,f- ;mv} z3vGpGE(sǷQ:އsf~gcmA{Aޖ"Y)u"yvDŽl11[#>qyq;q{;ѻCn li㎹<8C(wnOPqn{B 9%:'|P{=qYHY^DSc=gy+9|}Xܘuخh= }Xdh 6t85flvPi{wߎۛ\+@wmwmwts>NB{XvsVR9'ċ1K%ѩ% dpPAzJ/yq%y 9y 9-s܆u{vQn0s[sQ7/|o1|CyooWyKё7sܔiدx{xP]pN|L[R_{p鯼Ao=z=p8#kgV."3uFo'HUEowH Px5oPko{BDxSoy "i<.INH 74>zDwݣsc {"OA?< )pc>hy(QDojponq=n;ޤf_;l>V_f10g fk$fJRnBQ/H9rsE ;kH##jEJNgLg R l" ә}g="tMjfV0㞺,9:Ll4rӡZ32!|ub5<] 8\ -Ixh`6Xz43{bCz u,yJ9DiHc%BfI+Dd Saz?琢-@ܲ߳y=OFC̳{ADX`@ͦeLBi0p<"R4(ppq/u9;pp aY|XfE3Si}}zA~άWL#0;%T#d:vA" >.ʭS{XIU +<2pDT|dkl{a Dz LgrYIǣ1ܟmM՞Br}܆cI`U൞%SEXt,K9E97hq eCuUfR䱂1{S"]/f H{6C|2`})߬f'*DD26 =#+#aCDQxG+r#R teOwSCh;kՎ4Zw,pt94n'u)[YkA]9@)7'D7t_aha;ocQ>Se}N9jz{XH(

    %s%s
    %s
    %s
    %s%s%s
    %s%s%s
    %s%s%s
    %s%s%s