CI: Add python wheel release (#929)

* Add python release

* Add pyd as nncase-runtime component

* Fix setup.py

* Support publish

* CI: Fix

* Fix

* Fix

* Disable linux

* Update ortki

* Fix test_targets

* Test

* Update

* Remove usage of tensorflow

* Fix test_targets

* Fix load_compiler_c_api_initializer

* Fix evaluator of OneHotMode.Normal

* Enable manylinux2014

* Fix

* Fix

* Fix

* Apply code-format changes

* Fix build

---------

Co-authored-by: sunnycase <sunnycase@users.noreply.github.com>
pull/930/head
sunnycase 2023-05-17 12:24:21 +08:00 committed by GitHub
parent bda457a5de
commit 8f1d325049
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
61 changed files with 352 additions and 7652 deletions

View File

@ -0,0 +1,100 @@
name: compiler-python-release
on: [push, pull_request]
jobs:
build-compiler:
name: build-${{matrix.config.name}}
runs-on: ${{matrix.config.os}}
strategy:
matrix:
dotnet-version: ['7.0']
config:
- {name: x86_64-macos, os: macos-latest, shell: bash, rid: osx-x64, buildType: Release}
- {name: x86_64-linux, os: ubuntu-latest, shell: bash, rid: linux-x64, buildType: Release}
- {name: x86_64-windows, os: windows-latest, shell: bash, rid: win-x64, buildType: Release}
steps:
- uses: actions/checkout@v2
- name: Setup .NET
uses: actions/setup-dotnet@v1
with:
dotnet-version: ${{matrix.dotnet-version}}
- name: Cache NuGet packages
uses: actions/cache@v3
with:
path: ${{ github.workspace }}/.nuget/packages
key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }}
restore-keys: |
${{ runner.os }}-nuget-
- name: Build
run: |
dotnet restore -r ${{matrix.config.rid}}
dotnet publish src/Nncase.Compiler -c ${{matrix.config.buildType}} --no-restore --sc false -r ${{matrix.config.rid}}
- name: Upload nncase Build Artifact
uses: actions/upload-artifact@v3
with:
name: nncase-${{matrix.config.name}}
path: ${{github.workspace}}/src/Nncase.Compiler/bin/${{matrix.config.buildType}}/net${{matrix.dotnet-version}}/${{matrix.config.rid}}/publish
if-no-files-found: error
build-native:
needs: [build-compiler]
name: build-native-${{matrix.config.name}}
runs-on: ${{matrix.config.os}}
strategy:
matrix:
dotnet-version: ['7.0']
config:
- {name: x86_64-macos, os: macos-latest}
- {name: x86_64-linux, os: ubuntu-latest}
- {name: x86_64-windows, os: windows-latest, arch: x64}
env:
VULKANSDK_VER: 1.2.182.0
steps:
- uses: actions/checkout@v3
- uses: seanmiddleditch/gha-setup-ninja@master
- name: Setup .NET
uses: actions/setup-dotnet@v1
with:
dotnet-version: ${{matrix.dotnet-version}}
- name: Install nncase
uses: actions/download-artifact@v3
with:
name: nncase-${{matrix.config.name}}
path: ${{github.workspace}}/install
- name: Set up build environment (Windows, Visual Studio)
uses: ilammy/msvc-dev-cmd@v1
with:
arch: ${{matrix.config.arch}}
if: runner.os == 'Windows'
- name: Set up build environment (Macos)
run: |
brew install sunnycase/core/libomp@11.1.0
if: runner.os == 'Macos'
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: 3.7
- name: Install cibuildwheel
run: pip install cibuildwheel
- name: Build wheel
run: python -m cibuildwheel --output-dir wheelhouse
- name: Upload nncase-python Build Artifact
uses: actions/upload-artifact@v3
with:
name: nncase-python-${{matrix.config.name}}
path: ${{github.workspace}}/wheelhouse
if-no-files-found: error

View File

@ -3,7 +3,7 @@
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/cmake/Modules)
if(NOT DEFINED NNCASE_VERSION)
set(NNCASE_VERSION "1.0.0")
set(NNCASE_VERSION "2.0.0")
endif()
if(DEFINED ENV{NNCASE_VERSION_SUFFIX})
@ -31,6 +31,7 @@ project(nncase
option(ENABLE_OPENMP "OpenMP support" ON)
option(ENABLE_HALIDE "halide kernels support" ON)
option(DOTNET_INIT_FOR_CONFIG "Initialize dotnet from runtimeconfig" OFF)
option(BUILD_PYTHON_BINDING "Build python binding" ON)
option(BUILD_CSHARP_BINDING "Build csharp binding" ON)
option(BUILD_BENCHMARK "Build benchmark programs" ON)

File diff suppressed because it is too large Load Diff

View File

@ -1,14 +1,35 @@
[project]
name = "nncase"
version = "2.0.0"
requires-python = ">=3.6"
dynamic = ["version"]
requires-python = ">=3.7"
authors = [{ name = "sunnycase" }, { email = "sunnycase@live.cn" }]
maintainers = [{ name = "sunnycase" }, { email = "sunnycase@live.cn" }]
readme = "README.md"
description = "A neural network compiler for AI accelerators"
license = { file = "LICENSE" }
classifiers = [
"Programming Language :: C++",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"License :: OSI Approved :: Apache Software License",
"Operating System :: OS Independent",
]
keywords = ["kendryte", "nn", "compiler", "k210", "k510", "k230"]
dependencies = ["numpy"]
[project.urls]
homepage = "https://github.com/kendryte/nncase"
[build-system]
requires = ["setuptools>=42", "wheel", "conan==1.59", "ninja"]
requires = ["setuptools>=42", "wheel", "conan<=1.59", "ninja"]
[tool.cibuildwheel]
build = "cp3*"
manylinux-x86_64-image = "sunnycase/manylinux_2_24_x86_64:version1.0"
build = ["cp37*", "cp38*", "cp39*", "cp310*"]
skip = "*musllinux*"
manylinux-x86_64-image = "sunnycase/manylinux2014_x86_64:1.0"
test-requires = "pytest"
test-command = [
"pytest {project}/tests/other"
@ -23,11 +44,14 @@ archs = ["AMD64"]
[tool.cibuildwheel.linux]
archs = ["x86_64"]
before-all = [
"pip install conan",
"pip install conan==1.59",
"conan profile new default --detect",
"conan profile update settings.compiler.libcxx=libstdc++11 default"
"conan profile update settings.compiler.libcxx=libstdc++11 default",
"curl -L https://sdk.lunarg.com/sdk/download/1.2.182.0/linux/vulkansdk-linux-x86_64-1.2.182.0.tar.gz --output vulkansdk.tar.gz",
"tar xf vulkansdk.tar.gz",
"cp -P 1.2.182.0/x86_64/lib/libvulkan.so* /usr/local/lib/"
]
before-build = "pip install https://github.com/sunnycase/auditwheel/releases/download/4.0.0-nncase-2/auditwheel-0.0.0-py3-none-any.whl"
before-build = "pip install auditwheel"
repair-wheel-command = "LD_LIBRARY_PATH=/usr/lib64 auditwheel repair -w {dest_dir} {wheel} --exclude libvulkan.so.1,libgomp.so.1"
[tool.cibuildwheel.macos]

View File

@ -34,19 +34,12 @@ import _nncase
from _nncase import RuntimeTensor, TensorDesc, Simulator
def _check_env():
env = os.environ
errors = []
if not "NNCASE_COMPILER" in env:
errors.append("NNCASE_COMPILER not found")
return errors
def _initialize():
errors = _check_env()
if len(errors) > 0:
raise Exception("check failed:\n" + str.join('\n', errors))
_nncase.initialize(os.getenv("NNCASE_COMPILER"))
compiler_path = os.getenv("NNCASE_COMPILER")
if not compiler_path:
compiler_path = os.path.join(os.path.dirname(_nncase.__file__),
"nncase", "Nncase.Compiler.dll")
_nncase.initialize(compiler_path)
_initialize()

View File

@ -10,4 +10,6 @@ target_link_libraries(nncase_python PRIVATE nncaseruntime)
target_include_directories(nncase_python PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../common)
set_target_properties(nncase_python PROPERTIES
OUTPUT_NAME _nncase)
install(TARGETS nncase_python DESTINATION lib)
install(TARGETS nncase_python
COMPONENT nncase-runtime
DESTINATION lib)

View File

@ -7,6 +7,7 @@ from setuptools.command.install_lib import install_lib
from setuptools.command.install_scripts import install_scripts
import shutil
import os
import platform
import sys
import io
import re
@ -77,14 +78,25 @@ class InstallCMakeLibs(install_lib):
# your files are moved to the appropriate location when the installation
# is run
sharp_libs = [os.path.join(root, _lib) for root, _, files in
os.walk(os.path.join(bin_dir, 'sharplibs')) for _lib in files if
os.path.isfile(os.path.join(root, _lib)) and
os.path.splitext(_lib)[-1] in [".dll", ".so", ".dylib", ".json"]
and not _lib.endswith(".deps.json")]
for lib in sharp_libs:
shutil.move(lib, os.path.join(self.build_dir,
'nncase',
os.path.basename(lib)))
libs = [os.path.join(root, _lib) for root, _, files in
os.walk(bin_dir) for _lib in files if
'sharplibs' not in root and
os.path.isfile(os.path.join(root, _lib)) and
os.path.splitext(_lib)[1] in [".dll", ".so", ".dylib"]
os.path.splitext(_lib)[-1] in [".dll", ".so", ".dylib", ".json"]
and not (_lib.startswith("python") or _lib.startswith("_nncase"))]
for lib in libs:
shutil.move(lib, os.path.join(self.build_dir,
os.path.basename(lib)))
@ -105,9 +117,14 @@ class InstallCMakeLibs(install_lib):
# step; depending on the files that are generated from your cmake
# build chain, you may need to modify the below code
self.distribution.data_files = [os.path.join(self.install_dir,
os.path.basename(lib))
for lib in libs]
data_files = [os.path.join(self.install_dir,
os.path.basename(lib))
for lib in libs]
data_files += [os.path.join(self.install_dir,
'nncase',
os.path.basename(lib))
for lib in sharp_libs]
self.distribution.data_files = data_files
# Must be forced to run after adding the libs to data_files
@ -184,10 +201,10 @@ class BuildCMakeExt(build_ext):
extdir += os.path.sep
bin_dir = os.path.abspath(os.path.join(self.build_temp, 'install'))
cmake_args = ['-G', 'Ninja']
if os.getenv('AUDITWHEEL_PLAT') != None:
cmake_args += ['-DCMAKE_C_COMPILER=gcc-10']
cmake_args += ['-DCMAKE_CXX_COMPILER=g++-10']
cmake_args = ['-G', 'Ninja', '-DDOTNET_INIT_FOR_CONFIG=ON']
if platform.system() == 'Windows':
cmake_args += ['-DCMAKE_C_COMPILER=clang-cl']
cmake_args += ['-DCMAKE_CXX_COMPILER=clang-cl']
cmake_args += ['-DPython3_ROOT_DIR=' + os.path.dirname(sys.executable)]
cfg = 'Debug' if self.debug else 'Release'
@ -228,6 +245,17 @@ class BuildCMakeExt(build_ext):
shutil.move(pyd_path, extpath)
# copy nncase publish
nncase_libs = [os.path.join(root, _lib) for root, _, files in
os.walk(os.path.join(ext.sourcedir, 'install')) for _lib in files if
os.path.isfile(os.path.join(root, _lib)) and
os.path.splitext(_lib)[-1] in [".dll", ".so", ".dylib", ".json"]]
sharp_libs_dir = os.path.join(bin_dir, 'sharplibs')
os.makedirs(sharp_libs_dir)
for lib in nncase_libs:
shutil.copy(lib, os.path.join(sharp_libs_dir, os.path.basename(lib)))
# After build_ext is run, the following commands will run:
#
# install_lib
@ -251,33 +279,11 @@ def find_version():
raise RuntimeError("Unable to find version string.")
requirements = ["numpy"]
setup(name='nncase',
version=find_version(),
author="sunnycase",
author_email="sunnycase@live.cn",
maintainer="sunnycase",
packages=['nncase'],
package_dir={'': 'python'},
python_requires=">=3.6",
install_requires=requirements,
ext_modules=[CMakeExtension(name="_nncase", sourcedir='.')],
description="A neural network compiler for AI accelerators",
url='https://github.com/kendryte/nncase',
long_description=open("README.md", 'r', encoding='utf8').read(),
long_description_content_type="text/markdown",
keywords="kendryte, nn, compiler, k210, k510",
classifiers=[
"Programming Language :: C++",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"License :: OSI Approved :: Apache Software License",
"Operating System :: OS Independent", ],
license='Apache-2.0',
cmdclass={
'build_ext': BuildCMakeExt,
'install_data': InstallCMakeLibsData,

View File

@ -1,12 +1,16 @@
cmake_minimum_required (VERSION 3.13)
cmake_minimum_required (VERSION 3.21)
set(SRCS compiler.cpp)
if (NOT BUILDING_RUNTIME)
add_library(compiler OBJECT ${SRCS})
target_include_directories(compiler PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
target_link_libraries(compiler PUBLIC gsl::gsl-lite mpark_variant::mpark_variant)
target_link_libraries(compiler PUBLIC gsl::gsl-lite)
target_link_libraries(compiler PRIVATE nethost::nethost absl::absl)
target_compile_definitions(compiler PUBLIC -DNNCASE_DLL -DNNCASE_SIMULATOR)
set_property(TARGET compiler PROPERTY POSITION_INDEPENDENT_CODE ON)
if (DOTNET_INIT_FOR_CONFIG)
target_compile_definitions(compiler PRIVATE -DNNCASE_DOTNET_INIT_FOR_CONFIG)
endif ()
endif()

View File

@ -30,9 +30,11 @@
#include <dlfcn.h>
#endif
#define THROW_IF_NOT(x, err) \
#define THROW_IF_NOT(x, format, ...) \
if (!(x)) { \
throw std::system_error(make_error_code(err)); \
char msg[256]; \
std::snprintf(msg, std::size(msg), format, __VA_ARGS__); \
throw std::runtime_error(msg); \
}
#define UNMANAGEDCALLERSONLY_METHOD ((const char_t *)-1)
@ -45,6 +47,11 @@ typedef int (*get_function_pointer_fn)(const char_t *type_name,
void *load_context, void *reserved,
/*out*/ void **delegate);
typedef int (*load_assembly_and_get_function_pointer_fn)(
const char_t *assembly_path, const char_t *type_name,
const char_t *method_name, const char_t *delegate_type_name, void *reserved,
/*out*/ void **delegate);
typedef void (*c_api_initialize_fn)(nncase_api_mt_t *mt);
#ifdef WIN32
@ -194,43 +201,76 @@ struct premain {
} premain_v;
#endif
c_api_initialize_fn
load_compiler_c_api_initializer(const char *root_assembly_path) {
std::basic_string<char_t> get_hostfxr_path_wrapper() {
size_t path_length;
if (get_hostfxr_path(nullptr, &path_length, nullptr) != 0x80008098)
throw std::runtime_error("Failed to get hostfxr path.");
std::basic_string<char_t> path(path_length, '\0');
if (get_hostfxr_path(path.data(), &path_length, nullptr))
std::basic_string<char_t> hostfxr_path(path_length, '\0');
if (get_hostfxr_path(hostfxr_path.data(), &path_length, nullptr))
throw std::runtime_error("Failed to get hostfxr path.");
return hostfxr_path;
}
auto hostfxr_mod = load_library(path.c_str());
c_api_initialize_fn
load_compiler_c_api_initializer(const char *root_assembly_path) {
auto hostfxr_mod = load_library(get_hostfxr_path_wrapper().c_str());
hostfxr_handle handle = nullptr;
std::filesystem::path compiler_path(root_assembly_path);
#ifdef NNCASE_DOTNET_INIT_FOR_CONFIG
auto hostfxr_initialize =
(hostfxr_initialize_for_runtime_config_fn)load_symbol(
hostfxr_mod, "hostfxr_initialize_for_runtime_config");
auto hr = hostfxr_initialize(
compiler_path.replace_extension(".runtimeconfig.json").c_str(), nullptr,
&handle);
#else
const char_t *args[] = {compiler_path.c_str()};
auto hostfxr_initialize =
(hostfxr_initialize_for_dotnet_command_line_fn)load_symbol(
hostfxr_mod, "hostfxr_initialize_for_dotnet_command_line");
auto hr = hostfxr_initialize(1, args, nullptr, &handle);
#endif
hostfxr_handle handle;
std::filesystem::path compiler_path(root_assembly_path);
const char_t *args[] = {compiler_path.c_str()};
hostfxr_initialize(1, args, nullptr, &handle);
THROW_IF_NOT(handle, nncase::runtime::nncase_errc::runtime_not_found);
THROW_IF_NOT(handle, "Failed to initialize hostfxr: 0x%x.", hr);
auto hostfxr_get_delegate = (hostfxr_get_runtime_delegate_fn)load_symbol(
hostfxr_mod, "hostfxr_get_runtime_delegate");
get_function_pointer_fn hostfxr_get_fn_ptr;
hostfxr_get_delegate(handle, hdt_get_function_pointer,
(void **)&hostfxr_get_fn_ptr);
#ifdef NNCASE_DOTNET_INIT_FOR_CONFIG
load_assembly_and_get_function_pointer_fn hostfxr_get_fn_ptr = nullptr;
hr =
hostfxr_get_delegate(handle, hdt_load_assembly_and_get_function_pointer,
(void **)&hostfxr_get_fn_ptr);
THROW_IF_NOT(hostfxr_get_fn_ptr,
nncase::runtime::nncase_errc::runtime_not_found);
"Failed to initialize "
"hdt_load_assembly_and_get_function_pointer: 0x%x.",
hr);
#else
get_function_pointer_fn hostfxr_get_fn_ptr = nullptr;
hr = hostfxr_get_delegate(handle, hdt_get_function_pointer,
(void **)&hostfxr_get_fn_ptr);
THROW_IF_NOT(hostfxr_get_fn_ptr,
"Failed to initialize hdt_get_function_pointer: 0x%x.", hr);
#endif
c_api_initialize_fn c_api_initialize = nullptr;
#ifdef NNCASE_DOTNET_INIT_FOR_CONFIG
hr = hostfxr_get_fn_ptr(compiler_path.c_str(),
_T("Nncase.Compiler.Interop.CApi, Nncase.Compiler"),
_T("Initialize"), UNMANAGEDCALLERSONLY_METHOD,
nullptr, (void **)&c_api_initialize);
#else
hr = hostfxr_get_fn_ptr(_T("Nncase.Compiler.Interop.CApi, Nncase.Compiler"),
_T("Initialize"), UNMANAGEDCALLERSONLY_METHOD,
nullptr, nullptr, (void **)&c_api_initialize);
#endif
c_api_initialize_fn c_api_initialize;
hostfxr_get_fn_ptr(_T("Nncase.Compiler.Interop.CApi, Nncase.Compiler"),
_T("Initialize"), UNMANAGEDCALLERSONLY_METHOD, nullptr,
nullptr, (void **)&c_api_initialize);
THROW_IF_NOT(c_api_initialize,
nncase::runtime::nncase_errc::runtime_not_found);
"Failed to initialize Nncase.Compiler.Interop.CApi: 0x%x.",
hr);
return c_api_initialize;
}

View File

@ -82,7 +82,9 @@ else()
DESTINATION lib/cmake/nncase)
if (WIN32)
install(FILES ${CONAN_NETHOST_ROOT}/bin/nethost.dll DESTINATION bin)
install(FILES ${CONAN_NETHOST_ROOT}/bin/nethost.dll
COMPONENT nncase-runtime
DESTINATION bin)
endif()
configure_file(${CMAKE_CURRENT_LIST_DIR}/../../../../cmake/nncaseConfig.cmake.in nncaseConfig.cmake @ONLY)

View File

@ -312,213 +312,16 @@
"resolved": "1.1.0",
"contentHash": "aOZA3BWfz9RXjpzt0sRJJMjAscAUm3Hoa4UWAfceV9UTYxgwZ1lZt5nO2myFf+/jetYQo4uTP7zS8sJY67BBxg=="
},
"Microsoft.Win32.Primitives": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "9ZQKCWxH7Ijp9BfahvL2Zyf1cJIk8XYLF6Yjzr2yi0b2cOut/HQ31qf1ThHAgCc3WiZMdnWcfJCgN82/0UunxA==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
}
},
"NetFabric.Hyperlinq.Abstractions": {
"type": "Transitive",
"resolved": "1.3.0",
"contentHash": "WXnEcGwmXfa8gW9N2MlcaPNUzM3NLMwnAhacbtH554F8YcoXbIkTB+uGa1Aa+9gyb/9JZgYVHnmADgJUKP52nA=="
},
"NETStandard.Library": {
"type": "Transitive",
"resolved": "1.6.1",
"contentHash": "WcSp3+vP+yHNgS8EV5J7pZ9IRpeDuARBPN28by8zqff1wJQXm26PVU8L3/fYLBJVU7BtDyqNVWq2KlCVvSSR4A==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.Win32.Primitives": "4.3.0",
"System.AppContext": "4.3.0",
"System.Collections": "4.3.0",
"System.Collections.Concurrent": "4.3.0",
"System.Console": "4.3.0",
"System.Diagnostics.Debug": "4.3.0",
"System.Diagnostics.Tools": "4.3.0",
"System.Diagnostics.Tracing": "4.3.0",
"System.Globalization": "4.3.0",
"System.Globalization.Calendars": "4.3.0",
"System.IO": "4.3.0",
"System.IO.Compression": "4.3.0",
"System.IO.Compression.ZipFile": "4.3.0",
"System.IO.FileSystem": "4.3.0",
"System.IO.FileSystem.Primitives": "4.3.0",
"System.Linq": "4.3.0",
"System.Linq.Expressions": "4.3.0",
"System.Net.Http": "4.3.0",
"System.Net.Primitives": "4.3.0",
"System.Net.Sockets": "4.3.0",
"System.ObjectModel": "4.3.0",
"System.Reflection": "4.3.0",
"System.Reflection.Extensions": "4.3.0",
"System.Reflection.Primitives": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Runtime.InteropServices.RuntimeInformation": "4.3.0",
"System.Runtime.Numerics": "4.3.0",
"System.Security.Cryptography.Algorithms": "4.3.0",
"System.Security.Cryptography.Encoding": "4.3.0",
"System.Security.Cryptography.Primitives": "4.3.0",
"System.Security.Cryptography.X509Certificates": "4.3.0",
"System.Text.Encoding": "4.3.0",
"System.Text.Encoding.Extensions": "4.3.0",
"System.Text.RegularExpressions": "4.3.0",
"System.Threading": "4.3.0",
"System.Threading.Tasks": "4.3.0",
"System.Threading.Timer": "4.3.0",
"System.Xml.ReaderWriter": "4.3.0",
"System.Xml.XDocument": "4.3.0"
}
},
"Protobuf.Text": {
"type": "Transitive",
"resolved": "0.5.0",
"contentHash": "GVu3Y7hyybXv8nmKp9HtSzj1g0+rmNSZ4brM5t0auqpwYFYi5lL02UX9Nu9355DgPQbALLWUnjx+h2PttUNieg==",
"dependencies": {
"Google.Protobuf": "3.11.3"
}
},
"runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "HdSSp5MnJSsg08KMfZThpuLPJpPwE5hBXvHwoKWosyHHfe8Mh5WKT0ylEOf6yNzX6Ngjxe4Whkafh5q7Ymac4Q=="
},
"runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "+yH1a49wJMy8Zt4yx5RhJrxO/DBDByAiCzNwiETI+1S4mPdCu0OY4djdciC7Vssk0l22wQaDLrXxXkp+3+7bVA=="
},
"runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "c3YNH1GQJbfIPJeCnr4avseugSqPrxwIqzthYyZDN6EuOyNOzq+y2KSUfRcXauya1sF4foESTgwM5e1A8arAKw=="
},
"runtime.native.System": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "c/qWt2LieNZIj1jGnVNsE2Kl23Ya2aSTBuXMD6V7k9KWr6l16Tqdwq+hJScEpWER9753NWC8h96PaVNY5Ld7Jw==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0"
}
},
"runtime.native.System.IO.Compression": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "INBPonS5QPEgn7naufQFXJEp3zX6L4bwHgJ/ZH78aBTpeNfQMtf7C6VrAFhlq2xxWBveIOWyFzQjJ8XzHMhdOQ==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0"
}
},
"runtime.native.System.Net.Http": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "ZVuZJqnnegJhd2k/PtAbbIcZ3aZeITq3sj06oKfMBSfphW3HDmk/t4ObvbOk/JA/swGR0LNqMksAh/f7gpTROg==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0"
}
},
"runtime.native.System.Security.Cryptography.Apple": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "DloMk88juo0OuOWr56QG7MNchmafTLYWvABy36izkrLI5VledI0rq28KGs1i9wbpeT9NPQrx/wTf8U2vazqQ3Q==",
"dependencies": {
"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": "4.3.0"
}
},
"runtime.native.System.Security.Cryptography.OpenSsl": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "NS1U+700m4KFRHR5o4vo9DSlTmlCKu/u7dtE5sUHVIPB+xpXxYQvgBgA6wEIeCz6Yfn0Z52/72WYsToCEPJnrw==",
"dependencies": {
"runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
"runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
"runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
"runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
"runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
"runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
"runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
"runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
"runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
}
},
"runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "b3pthNgxxFcD+Pc0WSEoC0+md3MyhRS6aCEeenvNE3Fdw1HyJ18ZhRFVJJzIeR/O/jpxPboB805Ho0T3Ul7w8A=="
},
"runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "KeLz4HClKf+nFS7p/6Fi/CqyLXh81FpiGzcmuS8DGi9lUqSnZ6Es23/gv2O+1XVGfrbNmviF7CckBpavkBoIFQ=="
},
"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "kVXCuMTrTlxq4XOOMAysuNwsXWpYeboGddNGpIgNSZmv1b6r/s/DPk0fYMB7Q5Qo4bY68o48jt4T4y5BVecbCQ=="
},
"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "X7IdhILzr4ROXd8mI1BUCQMSHSQwelUlBjF1JyTKCjXaOGn2fB4EKBxQbCK2VjO3WaWIdlXZL3W6TiIVnrhX4g=="
},
"runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "nyFNiCk/r+VOiIqreLix8yN+q3Wga9+SE8BCgkf+2BwEKiNx6DyvFjCgkfV743/grxv8jHJ8gUK4XEQw7yzRYg=="
},
"runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "ytoewC6wGorL7KoCAvRfsgoJPJbNq+64k2SqW6JcOAebWsFUvCCYgfzQMrnpvPiEl4OrblUlhF2ji+Q1+SVLrQ=="
},
"runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "I8bKw2I8k58Wx7fMKQJn2R8lamboCAiHfHeV/pS65ScKWMMI0+wJkLYlEKvgW1D/XvSl/221clBoR2q9QNNM7A=="
},
"runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "VB5cn/7OzUfzdnC8tqAIMQciVLiq2epm2NrAm1E9OjNRyG4lVhfR61SMcLizejzQP8R8Uf/0l5qOIbUEi+RdEg=="
},
"Serilog": {
"type": "Transitive",
"resolved": "2.10.0",
"contentHash": "+QX0hmf37a0/OZLxM3wL7V6/ADvC1XihXN4Kq/p6d8lCPfgkRdiuhbWlMaFjR9Av0dy5F0+MBeDmDdRZN/YwQA=="
},
"Serilog.Sinks.Console": {
"type": "Transitive",
"resolved": "4.0.1",
"contentHash": "apLOvSJQLlIbKlbx+Y2UDHSP05kJsV7mou+fvJoRGs/iR+jC22r8cuFVMjjfVxz/AD4B2UCltFhE1naRLXwKNw==",
"dependencies": {
"Serilog": "2.10.0"
}
},
"StyleCop.Analyzers.Unstable": {
"type": "Transitive",
"resolved": "1.2.0.435",
"contentHash": "ouwPWZxbOV3SmCZxIRqHvljkSzkCyi1tDoMzQtDb/bRP8ctASV/iRJr+A2Gdj0QLaLmWnqTWDrH82/iP+X80Lg=="
},
"System.AppContext": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "fKC+rmaLfeIzUhagxY17Q9siv/sPrjjKcfNg1Ic8IlQkZLipo8ljcaZQu4VtI4Jqbzjc2VTjzGLF6WmsRXAEgA==",
"dependencies": {
"System.Runtime": "4.3.0"
}
},
"System.Buffers": {
"type": "Transitive",
"resolved": "4.5.1",
@ -534,23 +337,6 @@
"System.Runtime": "4.3.0"
}
},
"System.Collections.Concurrent": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "ztl69Xp0Y/UXCL+3v3tEU+lIy+bvjKNUmopn1wep/a291pVPK7dxBd6T7WnlQqRog+d1a/hSsgRsmFnIBKTPLQ==",
"dependencies": {
"System.Collections": "4.3.0",
"System.Diagnostics.Debug": "4.3.0",
"System.Diagnostics.Tracing": "4.3.0",
"System.Globalization": "4.3.0",
"System.Reflection": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Threading": "4.3.0",
"System.Threading.Tasks": "4.3.0"
}
},
"System.CommandLine": {
"type": "Transitive",
"resolved": "2.0.0-beta1.21216.1",
@ -560,18 +346,6 @@
"system.memory": "4.5.4"
}
},
"System.Console": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "DHDrIxiqk1h03m6khKWV2X8p/uvN79rgSqpilL6uzpmSfxfU5ng8VcPtW4qsDsQDHiTv6IPV9TmD5M/vElPNLg==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.IO": "4.3.0",
"System.Runtime": "4.3.0",
"System.Text.Encoding": "4.3.0"
}
},
"System.Diagnostics.Contracts": {
"type": "Transitive",
"resolved": "4.3.0",
@ -603,26 +377,6 @@
"resolved": "6.0.0",
"contentHash": "lcyUiXTsETK2ALsZrX+nWuHSIQeazhqPphLfaRxzdGaG93+0kELqpgEHtwWOlQe7+jSFnKwaCAgL4kjeZCQJnw=="
},
"System.Diagnostics.Tools": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "UUvkJfSYJMM6x527dJg2VyWPSRqIVB0Z7dbjHst1zmwTXz5CcXSYJFWRpuigfbO1Lf7yfZiIaEUesfnl/g5EyA==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
}
},
"System.Diagnostics.Tracing": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "rswfv0f/Cqkh78rA5S8eN8Neocz234+emGCtTF3lxPY96F+mmmUen6tbn0glN6PMvlKQb9bPAY5e9u7fgPTkKw==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
}
},
"System.Globalization": {
"type": "Transitive",
"resolved": "4.3.0",
@ -633,30 +387,6 @@
"System.Runtime": "4.3.0"
}
},
"System.Globalization.Calendars": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "GUlBtdOWT4LTV3I+9/PJW+56AnnChTaOqqTLFtdmype/L500M2LIyXgmtd9X2P2VOkmJd5c67H5SaC2QcL1bFA==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Globalization": "4.3.0",
"System.Runtime": "4.3.0"
}
},
"System.Globalization.Extensions": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "FhKmdR6MPG+pxow6wGtNAWdZh7noIOpdD5TwQ3CprzgIE1bBBoim0vbR1+AWsWjQmU7zXHgQo4TWSP6lCeiWcQ==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"System.Globalization": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.InteropServices": "4.3.0"
}
},
"System.IO": {
"type": "Transitive",
"resolved": "4.3.0",
@ -669,67 +399,6 @@
"System.Threading.Tasks": "4.3.0"
}
},
"System.IO.Compression": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "YHndyoiV90iu4iKG115ibkhrG+S3jBm8Ap9OwoUAzO5oPDAWcr0SFwQFm0HjM8WkEZWo0zvLTyLmbvTkW1bXgg==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"System.Buffers": "4.3.0",
"System.Collections": "4.3.0",
"System.Diagnostics.Debug": "4.3.0",
"System.IO": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Text.Encoding": "4.3.0",
"System.Threading": "4.3.0",
"System.Threading.Tasks": "4.3.0",
"runtime.native.System": "4.3.0",
"runtime.native.System.IO.Compression": "4.3.0"
}
},
"System.IO.Compression.ZipFile": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "G4HwjEsgIwy3JFBduZ9quBkAu+eUwjIdJleuNSgmUojbH6O3mlvEIme+GHx/cLlTAPcrnnL7GqvB9pTlWRfhOg==",
"dependencies": {
"System.Buffers": "4.3.0",
"System.IO": "4.3.0",
"System.IO.Compression": "4.3.0",
"System.IO.FileSystem": "4.3.0",
"System.IO.FileSystem.Primitives": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Text.Encoding": "4.3.0"
}
},
"System.IO.FileSystem": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "3wEMARTnuio+ulnvi+hkRNROYwa1kylvYahhcLk4HSoVdl+xxTFVeVlYOfLwrDPImGls0mDqbMhrza8qnWPTdA==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.IO": "4.3.0",
"System.IO.FileSystem.Primitives": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Text.Encoding": "4.3.0",
"System.Threading.Tasks": "4.3.0"
}
},
"System.IO.FileSystem.Primitives": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "6QOb2XFLch7bEc4lIcJH49nJN2HV+OC3fHDgsLVsBVBk3Y4hFAnOBGzJ2lUu7CyDDFo9IBWkSsnbkT6IBwwiMw==",
"dependencies": {
"System.Runtime": "4.3.0"
}
},
"System.Linq": {
"type": "Transitive",
"resolved": "4.3.0",
@ -786,63 +455,6 @@
"resolved": "4.5.4",
"contentHash": "1MbJTHS1lZ4bS4FmsJjnuGJOu88ZzTT2rLvrhW7Ygic+pC0NWA+3hgAen0HRdsocuQXCkUTdFn9yHJJhsijDXw=="
},
"System.Net.Http": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "sYg+FtILtRQuYWSIAuNOELwVuVsxVyJGWQyOnlAzhV4xvhyFnON1bAzYYC+jjRW8JREM45R0R5Dgi8MTC5sEwA==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"System.Collections": "4.3.0",
"System.Diagnostics.Debug": "4.3.0",
"System.Diagnostics.DiagnosticSource": "4.3.0",
"System.Diagnostics.Tracing": "4.3.0",
"System.Globalization": "4.3.0",
"System.Globalization.Extensions": "4.3.0",
"System.IO": "4.3.0",
"System.IO.FileSystem": "4.3.0",
"System.Net.Primitives": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Security.Cryptography.Algorithms": "4.3.0",
"System.Security.Cryptography.Encoding": "4.3.0",
"System.Security.Cryptography.OpenSsl": "4.3.0",
"System.Security.Cryptography.Primitives": "4.3.0",
"System.Security.Cryptography.X509Certificates": "4.3.0",
"System.Text.Encoding": "4.3.0",
"System.Threading": "4.3.0",
"System.Threading.Tasks": "4.3.0",
"runtime.native.System": "4.3.0",
"runtime.native.System.Net.Http": "4.3.0",
"runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
}
},
"System.Net.Primitives": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "qOu+hDwFwoZPbzPvwut2qATe3ygjeQBDQj91xlsaqGFQUI5i4ZnZb8yyQuLGpDGivEPIt8EJkd1BVzVoP31FXA==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0",
"System.Runtime.Handles": "4.3.0"
}
},
"System.Net.Sockets": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "m6icV6TqQOAdgt5N/9I5KNpjom/5NFtkmGseEH+AK/hny8XrytLH3+b5M8zL/Ycg3fhIocFpUMyl/wpFnVRvdw==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.IO": "4.3.0",
"System.Net.Primitives": "4.3.0",
"System.Runtime": "4.3.0",
"System.Threading.Tasks": "4.3.0"
}
},
"System.ObjectModel": {
"type": "Transitive",
"resolved": "4.3.0",
@ -966,198 +578,6 @@
"System.Runtime": "4.3.0"
}
},
"System.Runtime.Handles": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "OKiSUN7DmTWeYb3l51A7EYaeNMnvxwE249YtZz7yooT4gOZhmTjIn48KgSsw2k2lYdLgTKNJw/ZIfSElwDRVgg==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
}
},
"System.Runtime.InteropServices": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "uv1ynXqiMK8mp1GM3jDqPCFN66eJ5w5XNomaK2XD+TuCroNTLFGeZ+WCmBMcBDyTFKou3P6cR6J/QsaqDp7fGQ==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Reflection": "4.3.0",
"System.Reflection.Primitives": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Handles": "4.3.0"
}
},
"System.Runtime.InteropServices.RuntimeInformation": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "cbz4YJMqRDR7oLeMRbdYv7mYzc++17lNhScCX0goO2XpGWdvAt60CGN+FHdePUEHCe/Jy9jUlvNAiNdM+7jsOw==",
"dependencies": {
"System.Reflection": "4.3.0",
"System.Reflection.Extensions": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Threading": "4.3.0",
"runtime.native.System": "4.3.0"
}
},
"System.Runtime.Numerics": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "yMH+MfdzHjy17l2KESnPiF2dwq7T+xLnSJar7slyimAkUh/gTrS9/UQOtv7xarskJ2/XDSNvfLGOBQPjL7PaHQ==",
"dependencies": {
"System.Globalization": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0"
}
},
"System.Security.Cryptography.Algorithms": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "W1kd2Y8mYSCgc3ULTAZ0hOP2dSdG5YauTb1089T0/kRcN2MpSAW1izOFROrJgxSlMn3ArsgHXagigyi+ibhevg==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"System.Collections": "4.3.0",
"System.IO": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Runtime.Numerics": "4.3.0",
"System.Security.Cryptography.Encoding": "4.3.0",
"System.Security.Cryptography.Primitives": "4.3.0",
"System.Text.Encoding": "4.3.0",
"runtime.native.System.Security.Cryptography.Apple": "4.3.0",
"runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
}
},
"System.Security.Cryptography.Cng": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "03idZOqFlsKRL4W+LuCpJ6dBYDUWReug6lZjBa3uJWnk5sPCUXckocevTaUA8iT/MFSrY/2HXkOt753xQ/cf8g==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"System.IO": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Security.Cryptography.Algorithms": "4.3.0",
"System.Security.Cryptography.Encoding": "4.3.0",
"System.Security.Cryptography.Primitives": "4.3.0",
"System.Text.Encoding": "4.3.0"
}
},
"System.Security.Cryptography.Csp": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "X4s/FCkEUnRGnwR3aSfVIkldBmtURMhmexALNTwpjklzxWU7yjMk7GHLKOZTNkgnWnE0q7+BCf9N2LVRWxewaA==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"System.IO": "4.3.0",
"System.Reflection": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Security.Cryptography.Algorithms": "4.3.0",
"System.Security.Cryptography.Encoding": "4.3.0",
"System.Security.Cryptography.Primitives": "4.3.0",
"System.Text.Encoding": "4.3.0",
"System.Threading": "4.3.0"
}
},
"System.Security.Cryptography.Encoding": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "1DEWjZZly9ae9C79vFwqaO5kaOlI5q+3/55ohmq/7dpDyDfc8lYe7YVxJUZ5MF/NtbkRjwFRo14yM4OEo9EmDw==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"System.Collections": "4.3.0",
"System.Collections.Concurrent": "4.3.0",
"System.Linq": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Security.Cryptography.Primitives": "4.3.0",
"System.Text.Encoding": "4.3.0",
"runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
}
},
"System.Security.Cryptography.OpenSsl": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "h4CEgOgv5PKVF/HwaHzJRiVboL2THYCou97zpmhjghx5frc7fIvlkY1jL+lnIQyChrJDMNEXS6r7byGif8Cy4w==",
"dependencies": {
"System.Collections": "4.3.0",
"System.IO": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Runtime.Numerics": "4.3.0",
"System.Security.Cryptography.Algorithms": "4.3.0",
"System.Security.Cryptography.Encoding": "4.3.0",
"System.Security.Cryptography.Primitives": "4.3.0",
"System.Text.Encoding": "4.3.0",
"runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
}
},
"System.Security.Cryptography.Primitives": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "7bDIyVFNL/xKeFHjhobUAQqSpJq9YTOpbEs6mR233Et01STBMXNAc/V+BM6dwYGc95gVh/Zf+iVXWzj3mE8DWg==",
"dependencies": {
"System.Diagnostics.Debug": "4.3.0",
"System.Globalization": "4.3.0",
"System.IO": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Threading": "4.3.0",
"System.Threading.Tasks": "4.3.0"
}
},
"System.Security.Cryptography.X509Certificates": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "t2Tmu6Y2NtJ2um0RtcuhP7ZdNNxXEgUm2JeoA/0NvlMjAhKCnM1NX07TDl3244mVp3QU6LPEhT3HTtH1uF7IYw==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"System.Collections": "4.3.0",
"System.Diagnostics.Debug": "4.3.0",
"System.Globalization": "4.3.0",
"System.Globalization.Calendars": "4.3.0",
"System.IO": "4.3.0",
"System.IO.FileSystem": "4.3.0",
"System.IO.FileSystem.Primitives": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Runtime.Numerics": "4.3.0",
"System.Security.Cryptography.Algorithms": "4.3.0",
"System.Security.Cryptography.Cng": "4.3.0",
"System.Security.Cryptography.Csp": "4.3.0",
"System.Security.Cryptography.Encoding": "4.3.0",
"System.Security.Cryptography.OpenSsl": "4.3.0",
"System.Security.Cryptography.Primitives": "4.3.0",
"System.Text.Encoding": "4.3.0",
"System.Threading": "4.3.0",
"runtime.native.System": "4.3.0",
"runtime.native.System.Net.Http": "4.3.0",
"runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
}
},
"System.Text.Encoding": {
"type": "Transitive",
"resolved": "4.3.0",
@ -1168,17 +588,6 @@
"System.Runtime": "4.3.0"
}
},
"System.Text.Encoding.Extensions": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "YVMK0Bt/A43RmwizJoZ22ei2nmrhobgeiYwFzC4YAN+nue8RF6djXDMog0UCn+brerQoYVyaS+ghy9P/MUVcmw==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0",
"System.Text.Encoding": "4.3.0"
}
},
"System.Text.Encodings.Web": {
"type": "Transitive",
"resolved": "6.0.0",
@ -1196,14 +605,6 @@
"System.Text.Encodings.Web": "6.0.0"
}
},
"System.Text.RegularExpressions": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "RpT2DA+L660cBt1FssIE9CAGpLFdFPuheB7pLpKpn6ZXNby7jDERe8Ua/Ne2xGiwLVG2JOqziiaVCGDon5sKFA==",
"dependencies": {
"System.Runtime": "4.3.0"
}
},
"System.Threading": {
"type": "Transitive",
"resolved": "4.3.0",
@ -1228,62 +629,11 @@
"resolved": "4.5.4",
"contentHash": "zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg=="
},
"System.Threading.Timer": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "Z6YfyYTCg7lOZjJzBjONJTFKGN9/NIYKSxhU5GRd+DTwHSZyvWp1xuI5aR+dLg+ayyC5Xv57KiY4oJ0tMO89fQ==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
}
},
"System.ValueTuple": {
"type": "Transitive",
"resolved": "4.5.0",
"contentHash": "okurQJO6NRE/apDIP23ajJ0hpiNmJ+f0BwOlB/cSqTLQlw5upkf+5+96+iG2Jw40G1fCVCyPz/FhIABUjMR+RQ=="
},
"System.Xml.ReaderWriter": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "GrprA+Z0RUXaR4N7/eW71j1rgMnEnEVlgii49GZyAjTH7uliMnrOU3HNFBr6fEDBCJCIdlVNq9hHbaDR621XBA==",
"dependencies": {
"System.Collections": "4.3.0",
"System.Diagnostics.Debug": "4.3.0",
"System.Globalization": "4.3.0",
"System.IO": "4.3.0",
"System.IO.FileSystem": "4.3.0",
"System.IO.FileSystem.Primitives": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Text.Encoding": "4.3.0",
"System.Text.Encoding.Extensions": "4.3.0",
"System.Text.RegularExpressions": "4.3.0",
"System.Threading.Tasks": "4.3.0",
"System.Threading.Tasks.Extensions": "4.3.0"
}
},
"System.Xml.XDocument": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "5zJ0XDxAIg8iy+t4aMnQAu0MqVbqyvfoUVl1yDV61xdo3Vth45oA2FoY4pPkxYAH5f8ixpmTqXeEIya95x0aCQ==",
"dependencies": {
"System.Collections": "4.3.0",
"System.Diagnostics.Debug": "4.3.0",
"System.Diagnostics.Tools": "4.3.0",
"System.Globalization": "4.3.0",
"System.IO": "4.3.0",
"System.Reflection": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Text.Encoding": "4.3.0",
"System.Threading": "4.3.0",
"System.Xml.ReaderWriter": "4.3.0"
}
},
"nncase.codegen": {
"type": "Project",
"dependencies": {
@ -1343,9 +693,6 @@
"nncase.evaluator": {
"type": "Project",
"dependencies": {
"AnyTensorFlow.NET": "[0.70.1, )",
"MagicalTensorflowLib": "[0.0.2, )",
"MagicalTensorflowLibOSX-ARM64": "[0.0.4, )",
"Nncase.Core": "[1.0.0, )",
"OrtKISharp": "[0.0.2, )"
}
@ -1427,17 +774,6 @@
"Nncase.FlatBuffers": "[2.0.0, )"
}
},
"AnyTensorFlow.NET": {
"type": "CentralTransitive",
"requested": "[0.70.1, )",
"resolved": "0.70.1",
"contentHash": "uUXNveJhZuvBue8ixPXKkMwYUeKBeVNVqptNlhmTe+YhIwn6xke1WSg3EfUJrjmmF6xkJtAYhE4H0Ejj/+H0aA==",
"dependencies": {
"MethodBoundaryAspect.Fody": "2.0.144",
"Protobuf.Text": "0.5.0",
"Serilog.Sinks.Console": "4.0.1"
}
},
"DryIoc.dll": {
"type": "CentralTransitive",
"requested": "[5.3.1, )",
@ -1460,12 +796,6 @@
"resolved": "1.2.12",
"contentHash": "D4mn5Cab4ztPLJ0V8uMErDrO/Y61098nwrvyIOLZymVAYOQcwP1vomVWKbTagf1aPU3cX5Q7adZtQEQwOy6XEg=="
},
"Fody": {
"type": "CentralTransitive",
"requested": "[6.6.4, )",
"resolved": "6.0.5",
"contentHash": "xfz4NwIIPs2xtfvpPlXz49cHYPeWBl/bnvlpW6OSpxKFAujAm7vLQ8Ma7aX3GYVjc/czn5+58QNUnDyb4gxiKA=="
},
"GiGraph.Dot": {
"type": "CentralTransitive",
"requested": "[2.0.0, )",
@ -1496,28 +826,6 @@
"System.ValueTuple": "4.5.0"
}
},
"MagicalTensorflowLib": {
"type": "CentralTransitive",
"requested": "[0.0.2, )",
"resolved": "0.0.2",
"contentHash": "77rldBcc11n69dhtdbJUw3aDxBfVkr5a5raA5gY7sRrDbgJ00/4whx3XLnhn6uBzRsKlpm6jDdYG2fcDUZPfkQ=="
},
"MagicalTensorflowLibOSX-ARM64": {
"type": "CentralTransitive",
"requested": "[0.0.4, )",
"resolved": "0.0.4",
"contentHash": "nycg8x7AMPaQrjF0vvwhL6idLLb/IWIMad7UbEO0btIz6dyNIZI3drYefSM8pzV5lOweoyj0zDr98YfsxbxG8Q=="
},
"MethodBoundaryAspect.Fody": {
"type": "CentralTransitive",
"requested": "[2.0.148, )",
"resolved": "2.0.144",
"contentHash": "L4r4Dt+Q9/pwp1aAGn94V5PmcTa0nygJE1PXrCIHSiFaVA/vhDuo6I1qQCU9J7VF0V/HNcM8sI17gJiTNz8FXQ==",
"dependencies": {
"Fody": "6.0.5",
"NETStandard.Library": "1.6.1"
}
},
"Microsoft.Extensions.Hosting.Abstractions": {
"type": "CentralTransitive",
"requested": "[6.0.0, )",

View File

@ -318,213 +318,16 @@
"resolved": "1.1.0",
"contentHash": "aOZA3BWfz9RXjpzt0sRJJMjAscAUm3Hoa4UWAfceV9UTYxgwZ1lZt5nO2myFf+/jetYQo4uTP7zS8sJY67BBxg=="
},
"Microsoft.Win32.Primitives": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "9ZQKCWxH7Ijp9BfahvL2Zyf1cJIk8XYLF6Yjzr2yi0b2cOut/HQ31qf1ThHAgCc3WiZMdnWcfJCgN82/0UunxA==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
}
},
"NetFabric.Hyperlinq.Abstractions": {
"type": "Transitive",
"resolved": "1.3.0",
"contentHash": "WXnEcGwmXfa8gW9N2MlcaPNUzM3NLMwnAhacbtH554F8YcoXbIkTB+uGa1Aa+9gyb/9JZgYVHnmADgJUKP52nA=="
},
"NETStandard.Library": {
"type": "Transitive",
"resolved": "1.6.1",
"contentHash": "WcSp3+vP+yHNgS8EV5J7pZ9IRpeDuARBPN28by8zqff1wJQXm26PVU8L3/fYLBJVU7BtDyqNVWq2KlCVvSSR4A==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.Win32.Primitives": "4.3.0",
"System.AppContext": "4.3.0",
"System.Collections": "4.3.0",
"System.Collections.Concurrent": "4.3.0",
"System.Console": "4.3.0",
"System.Diagnostics.Debug": "4.3.0",
"System.Diagnostics.Tools": "4.3.0",
"System.Diagnostics.Tracing": "4.3.0",
"System.Globalization": "4.3.0",
"System.Globalization.Calendars": "4.3.0",
"System.IO": "4.3.0",
"System.IO.Compression": "4.3.0",
"System.IO.Compression.ZipFile": "4.3.0",
"System.IO.FileSystem": "4.3.0",
"System.IO.FileSystem.Primitives": "4.3.0",
"System.Linq": "4.3.0",
"System.Linq.Expressions": "4.3.0",
"System.Net.Http": "4.3.0",
"System.Net.Primitives": "4.3.0",
"System.Net.Sockets": "4.3.0",
"System.ObjectModel": "4.3.0",
"System.Reflection": "4.3.0",
"System.Reflection.Extensions": "4.3.0",
"System.Reflection.Primitives": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Runtime.InteropServices.RuntimeInformation": "4.3.0",
"System.Runtime.Numerics": "4.3.0",
"System.Security.Cryptography.Algorithms": "4.3.0",
"System.Security.Cryptography.Encoding": "4.3.0",
"System.Security.Cryptography.Primitives": "4.3.0",
"System.Security.Cryptography.X509Certificates": "4.3.0",
"System.Text.Encoding": "4.3.0",
"System.Text.Encoding.Extensions": "4.3.0",
"System.Text.RegularExpressions": "4.3.0",
"System.Threading": "4.3.0",
"System.Threading.Tasks": "4.3.0",
"System.Threading.Timer": "4.3.0",
"System.Xml.ReaderWriter": "4.3.0",
"System.Xml.XDocument": "4.3.0"
}
},
"Protobuf.Text": {
"type": "Transitive",
"resolved": "0.5.0",
"contentHash": "GVu3Y7hyybXv8nmKp9HtSzj1g0+rmNSZ4brM5t0auqpwYFYi5lL02UX9Nu9355DgPQbALLWUnjx+h2PttUNieg==",
"dependencies": {
"Google.Protobuf": "3.11.3"
}
},
"runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "HdSSp5MnJSsg08KMfZThpuLPJpPwE5hBXvHwoKWosyHHfe8Mh5WKT0ylEOf6yNzX6Ngjxe4Whkafh5q7Ymac4Q=="
},
"runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "+yH1a49wJMy8Zt4yx5RhJrxO/DBDByAiCzNwiETI+1S4mPdCu0OY4djdciC7Vssk0l22wQaDLrXxXkp+3+7bVA=="
},
"runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "c3YNH1GQJbfIPJeCnr4avseugSqPrxwIqzthYyZDN6EuOyNOzq+y2KSUfRcXauya1sF4foESTgwM5e1A8arAKw=="
},
"runtime.native.System": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "c/qWt2LieNZIj1jGnVNsE2Kl23Ya2aSTBuXMD6V7k9KWr6l16Tqdwq+hJScEpWER9753NWC8h96PaVNY5Ld7Jw==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0"
}
},
"runtime.native.System.IO.Compression": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "INBPonS5QPEgn7naufQFXJEp3zX6L4bwHgJ/ZH78aBTpeNfQMtf7C6VrAFhlq2xxWBveIOWyFzQjJ8XzHMhdOQ==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0"
}
},
"runtime.native.System.Net.Http": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "ZVuZJqnnegJhd2k/PtAbbIcZ3aZeITq3sj06oKfMBSfphW3HDmk/t4ObvbOk/JA/swGR0LNqMksAh/f7gpTROg==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0"
}
},
"runtime.native.System.Security.Cryptography.Apple": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "DloMk88juo0OuOWr56QG7MNchmafTLYWvABy36izkrLI5VledI0rq28KGs1i9wbpeT9NPQrx/wTf8U2vazqQ3Q==",
"dependencies": {
"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": "4.3.0"
}
},
"runtime.native.System.Security.Cryptography.OpenSsl": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "NS1U+700m4KFRHR5o4vo9DSlTmlCKu/u7dtE5sUHVIPB+xpXxYQvgBgA6wEIeCz6Yfn0Z52/72WYsToCEPJnrw==",
"dependencies": {
"runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
"runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
"runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
"runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
"runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
"runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
"runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
"runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
"runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
}
},
"runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "b3pthNgxxFcD+Pc0WSEoC0+md3MyhRS6aCEeenvNE3Fdw1HyJ18ZhRFVJJzIeR/O/jpxPboB805Ho0T3Ul7w8A=="
},
"runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "KeLz4HClKf+nFS7p/6Fi/CqyLXh81FpiGzcmuS8DGi9lUqSnZ6Es23/gv2O+1XVGfrbNmviF7CckBpavkBoIFQ=="
},
"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "kVXCuMTrTlxq4XOOMAysuNwsXWpYeboGddNGpIgNSZmv1b6r/s/DPk0fYMB7Q5Qo4bY68o48jt4T4y5BVecbCQ=="
},
"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "X7IdhILzr4ROXd8mI1BUCQMSHSQwelUlBjF1JyTKCjXaOGn2fB4EKBxQbCK2VjO3WaWIdlXZL3W6TiIVnrhX4g=="
},
"runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "nyFNiCk/r+VOiIqreLix8yN+q3Wga9+SE8BCgkf+2BwEKiNx6DyvFjCgkfV743/grxv8jHJ8gUK4XEQw7yzRYg=="
},
"runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "ytoewC6wGorL7KoCAvRfsgoJPJbNq+64k2SqW6JcOAebWsFUvCCYgfzQMrnpvPiEl4OrblUlhF2ji+Q1+SVLrQ=="
},
"runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "I8bKw2I8k58Wx7fMKQJn2R8lamboCAiHfHeV/pS65ScKWMMI0+wJkLYlEKvgW1D/XvSl/221clBoR2q9QNNM7A=="
},
"runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "VB5cn/7OzUfzdnC8tqAIMQciVLiq2epm2NrAm1E9OjNRyG4lVhfR61SMcLizejzQP8R8Uf/0l5qOIbUEi+RdEg=="
},
"Serilog": {
"type": "Transitive",
"resolved": "2.10.0",
"contentHash": "+QX0hmf37a0/OZLxM3wL7V6/ADvC1XihXN4Kq/p6d8lCPfgkRdiuhbWlMaFjR9Av0dy5F0+MBeDmDdRZN/YwQA=="
},
"Serilog.Sinks.Console": {
"type": "Transitive",
"resolved": "4.0.1",
"contentHash": "apLOvSJQLlIbKlbx+Y2UDHSP05kJsV7mou+fvJoRGs/iR+jC22r8cuFVMjjfVxz/AD4B2UCltFhE1naRLXwKNw==",
"dependencies": {
"Serilog": "2.10.0"
}
},
"StyleCop.Analyzers.Unstable": {
"type": "Transitive",
"resolved": "1.2.0.435",
"contentHash": "ouwPWZxbOV3SmCZxIRqHvljkSzkCyi1tDoMzQtDb/bRP8ctASV/iRJr+A2Gdj0QLaLmWnqTWDrH82/iP+X80Lg=="
},
"System.AppContext": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "fKC+rmaLfeIzUhagxY17Q9siv/sPrjjKcfNg1Ic8IlQkZLipo8ljcaZQu4VtI4Jqbzjc2VTjzGLF6WmsRXAEgA==",
"dependencies": {
"System.Runtime": "4.3.0"
}
},
"System.Buffers": {
"type": "Transitive",
"resolved": "4.5.1",
@ -540,35 +343,6 @@
"System.Runtime": "4.3.0"
}
},
"System.Collections.Concurrent": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "ztl69Xp0Y/UXCL+3v3tEU+lIy+bvjKNUmopn1wep/a291pVPK7dxBd6T7WnlQqRog+d1a/hSsgRsmFnIBKTPLQ==",
"dependencies": {
"System.Collections": "4.3.0",
"System.Diagnostics.Debug": "4.3.0",
"System.Diagnostics.Tracing": "4.3.0",
"System.Globalization": "4.3.0",
"System.Reflection": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Threading": "4.3.0",
"System.Threading.Tasks": "4.3.0"
}
},
"System.Console": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "DHDrIxiqk1h03m6khKWV2X8p/uvN79rgSqpilL6uzpmSfxfU5ng8VcPtW4qsDsQDHiTv6IPV9TmD5M/vElPNLg==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.IO": "4.3.0",
"System.Runtime": "4.3.0",
"System.Text.Encoding": "4.3.0"
}
},
"System.Diagnostics.Contracts": {
"type": "Transitive",
"resolved": "4.3.0",
@ -600,26 +374,6 @@
"resolved": "6.0.0",
"contentHash": "lcyUiXTsETK2ALsZrX+nWuHSIQeazhqPphLfaRxzdGaG93+0kELqpgEHtwWOlQe7+jSFnKwaCAgL4kjeZCQJnw=="
},
"System.Diagnostics.Tools": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "UUvkJfSYJMM6x527dJg2VyWPSRqIVB0Z7dbjHst1zmwTXz5CcXSYJFWRpuigfbO1Lf7yfZiIaEUesfnl/g5EyA==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
}
},
"System.Diagnostics.Tracing": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "rswfv0f/Cqkh78rA5S8eN8Neocz234+emGCtTF3lxPY96F+mmmUen6tbn0glN6PMvlKQb9bPAY5e9u7fgPTkKw==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
}
},
"System.Globalization": {
"type": "Transitive",
"resolved": "4.3.0",
@ -630,30 +384,6 @@
"System.Runtime": "4.3.0"
}
},
"System.Globalization.Calendars": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "GUlBtdOWT4LTV3I+9/PJW+56AnnChTaOqqTLFtdmype/L500M2LIyXgmtd9X2P2VOkmJd5c67H5SaC2QcL1bFA==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Globalization": "4.3.0",
"System.Runtime": "4.3.0"
}
},
"System.Globalization.Extensions": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "FhKmdR6MPG+pxow6wGtNAWdZh7noIOpdD5TwQ3CprzgIE1bBBoim0vbR1+AWsWjQmU7zXHgQo4TWSP6lCeiWcQ==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"System.Globalization": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.InteropServices": "4.3.0"
}
},
"System.IO": {
"type": "Transitive",
"resolved": "4.3.0",
@ -666,67 +396,6 @@
"System.Threading.Tasks": "4.3.0"
}
},
"System.IO.Compression": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "YHndyoiV90iu4iKG115ibkhrG+S3jBm8Ap9OwoUAzO5oPDAWcr0SFwQFm0HjM8WkEZWo0zvLTyLmbvTkW1bXgg==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"System.Buffers": "4.3.0",
"System.Collections": "4.3.0",
"System.Diagnostics.Debug": "4.3.0",
"System.IO": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Text.Encoding": "4.3.0",
"System.Threading": "4.3.0",
"System.Threading.Tasks": "4.3.0",
"runtime.native.System": "4.3.0",
"runtime.native.System.IO.Compression": "4.3.0"
}
},
"System.IO.Compression.ZipFile": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "G4HwjEsgIwy3JFBduZ9quBkAu+eUwjIdJleuNSgmUojbH6O3mlvEIme+GHx/cLlTAPcrnnL7GqvB9pTlWRfhOg==",
"dependencies": {
"System.Buffers": "4.3.0",
"System.IO": "4.3.0",
"System.IO.Compression": "4.3.0",
"System.IO.FileSystem": "4.3.0",
"System.IO.FileSystem.Primitives": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Text.Encoding": "4.3.0"
}
},
"System.IO.FileSystem": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "3wEMARTnuio+ulnvi+hkRNROYwa1kylvYahhcLk4HSoVdl+xxTFVeVlYOfLwrDPImGls0mDqbMhrza8qnWPTdA==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.IO": "4.3.0",
"System.IO.FileSystem.Primitives": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Text.Encoding": "4.3.0",
"System.Threading.Tasks": "4.3.0"
}
},
"System.IO.FileSystem.Primitives": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "6QOb2XFLch7bEc4lIcJH49nJN2HV+OC3fHDgsLVsBVBk3Y4hFAnOBGzJ2lUu7CyDDFo9IBWkSsnbkT6IBwwiMw==",
"dependencies": {
"System.Runtime": "4.3.0"
}
},
"System.Linq": {
"type": "Transitive",
"resolved": "4.3.0",
@ -783,63 +452,6 @@
"resolved": "4.5.4",
"contentHash": "1MbJTHS1lZ4bS4FmsJjnuGJOu88ZzTT2rLvrhW7Ygic+pC0NWA+3hgAen0HRdsocuQXCkUTdFn9yHJJhsijDXw=="
},
"System.Net.Http": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "sYg+FtILtRQuYWSIAuNOELwVuVsxVyJGWQyOnlAzhV4xvhyFnON1bAzYYC+jjRW8JREM45R0R5Dgi8MTC5sEwA==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"System.Collections": "4.3.0",
"System.Diagnostics.Debug": "4.3.0",
"System.Diagnostics.DiagnosticSource": "4.3.0",
"System.Diagnostics.Tracing": "4.3.0",
"System.Globalization": "4.3.0",
"System.Globalization.Extensions": "4.3.0",
"System.IO": "4.3.0",
"System.IO.FileSystem": "4.3.0",
"System.Net.Primitives": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Security.Cryptography.Algorithms": "4.3.0",
"System.Security.Cryptography.Encoding": "4.3.0",
"System.Security.Cryptography.OpenSsl": "4.3.0",
"System.Security.Cryptography.Primitives": "4.3.0",
"System.Security.Cryptography.X509Certificates": "4.3.0",
"System.Text.Encoding": "4.3.0",
"System.Threading": "4.3.0",
"System.Threading.Tasks": "4.3.0",
"runtime.native.System": "4.3.0",
"runtime.native.System.Net.Http": "4.3.0",
"runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
}
},
"System.Net.Primitives": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "qOu+hDwFwoZPbzPvwut2qATe3ygjeQBDQj91xlsaqGFQUI5i4ZnZb8yyQuLGpDGivEPIt8EJkd1BVzVoP31FXA==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0",
"System.Runtime.Handles": "4.3.0"
}
},
"System.Net.Sockets": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "m6icV6TqQOAdgt5N/9I5KNpjom/5NFtkmGseEH+AK/hny8XrytLH3+b5M8zL/Ycg3fhIocFpUMyl/wpFnVRvdw==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.IO": "4.3.0",
"System.Net.Primitives": "4.3.0",
"System.Runtime": "4.3.0",
"System.Threading.Tasks": "4.3.0"
}
},
"System.ObjectModel": {
"type": "Transitive",
"resolved": "4.3.0",
@ -963,198 +575,6 @@
"System.Runtime": "4.3.0"
}
},
"System.Runtime.Handles": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "OKiSUN7DmTWeYb3l51A7EYaeNMnvxwE249YtZz7yooT4gOZhmTjIn48KgSsw2k2lYdLgTKNJw/ZIfSElwDRVgg==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
}
},
"System.Runtime.InteropServices": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "uv1ynXqiMK8mp1GM3jDqPCFN66eJ5w5XNomaK2XD+TuCroNTLFGeZ+WCmBMcBDyTFKou3P6cR6J/QsaqDp7fGQ==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Reflection": "4.3.0",
"System.Reflection.Primitives": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Handles": "4.3.0"
}
},
"System.Runtime.InteropServices.RuntimeInformation": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "cbz4YJMqRDR7oLeMRbdYv7mYzc++17lNhScCX0goO2XpGWdvAt60CGN+FHdePUEHCe/Jy9jUlvNAiNdM+7jsOw==",
"dependencies": {
"System.Reflection": "4.3.0",
"System.Reflection.Extensions": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Threading": "4.3.0",
"runtime.native.System": "4.3.0"
}
},
"System.Runtime.Numerics": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "yMH+MfdzHjy17l2KESnPiF2dwq7T+xLnSJar7slyimAkUh/gTrS9/UQOtv7xarskJ2/XDSNvfLGOBQPjL7PaHQ==",
"dependencies": {
"System.Globalization": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0"
}
},
"System.Security.Cryptography.Algorithms": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "W1kd2Y8mYSCgc3ULTAZ0hOP2dSdG5YauTb1089T0/kRcN2MpSAW1izOFROrJgxSlMn3ArsgHXagigyi+ibhevg==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"System.Collections": "4.3.0",
"System.IO": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Runtime.Numerics": "4.3.0",
"System.Security.Cryptography.Encoding": "4.3.0",
"System.Security.Cryptography.Primitives": "4.3.0",
"System.Text.Encoding": "4.3.0",
"runtime.native.System.Security.Cryptography.Apple": "4.3.0",
"runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
}
},
"System.Security.Cryptography.Cng": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "03idZOqFlsKRL4W+LuCpJ6dBYDUWReug6lZjBa3uJWnk5sPCUXckocevTaUA8iT/MFSrY/2HXkOt753xQ/cf8g==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"System.IO": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Security.Cryptography.Algorithms": "4.3.0",
"System.Security.Cryptography.Encoding": "4.3.0",
"System.Security.Cryptography.Primitives": "4.3.0",
"System.Text.Encoding": "4.3.0"
}
},
"System.Security.Cryptography.Csp": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "X4s/FCkEUnRGnwR3aSfVIkldBmtURMhmexALNTwpjklzxWU7yjMk7GHLKOZTNkgnWnE0q7+BCf9N2LVRWxewaA==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"System.IO": "4.3.0",
"System.Reflection": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Security.Cryptography.Algorithms": "4.3.0",
"System.Security.Cryptography.Encoding": "4.3.0",
"System.Security.Cryptography.Primitives": "4.3.0",
"System.Text.Encoding": "4.3.0",
"System.Threading": "4.3.0"
}
},
"System.Security.Cryptography.Encoding": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "1DEWjZZly9ae9C79vFwqaO5kaOlI5q+3/55ohmq/7dpDyDfc8lYe7YVxJUZ5MF/NtbkRjwFRo14yM4OEo9EmDw==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"System.Collections": "4.3.0",
"System.Collections.Concurrent": "4.3.0",
"System.Linq": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Security.Cryptography.Primitives": "4.3.0",
"System.Text.Encoding": "4.3.0",
"runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
}
},
"System.Security.Cryptography.OpenSsl": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "h4CEgOgv5PKVF/HwaHzJRiVboL2THYCou97zpmhjghx5frc7fIvlkY1jL+lnIQyChrJDMNEXS6r7byGif8Cy4w==",
"dependencies": {
"System.Collections": "4.3.0",
"System.IO": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Runtime.Numerics": "4.3.0",
"System.Security.Cryptography.Algorithms": "4.3.0",
"System.Security.Cryptography.Encoding": "4.3.0",
"System.Security.Cryptography.Primitives": "4.3.0",
"System.Text.Encoding": "4.3.0",
"runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
}
},
"System.Security.Cryptography.Primitives": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "7bDIyVFNL/xKeFHjhobUAQqSpJq9YTOpbEs6mR233Et01STBMXNAc/V+BM6dwYGc95gVh/Zf+iVXWzj3mE8DWg==",
"dependencies": {
"System.Diagnostics.Debug": "4.3.0",
"System.Globalization": "4.3.0",
"System.IO": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Threading": "4.3.0",
"System.Threading.Tasks": "4.3.0"
}
},
"System.Security.Cryptography.X509Certificates": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "t2Tmu6Y2NtJ2um0RtcuhP7ZdNNxXEgUm2JeoA/0NvlMjAhKCnM1NX07TDl3244mVp3QU6LPEhT3HTtH1uF7IYw==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"System.Collections": "4.3.0",
"System.Diagnostics.Debug": "4.3.0",
"System.Globalization": "4.3.0",
"System.Globalization.Calendars": "4.3.0",
"System.IO": "4.3.0",
"System.IO.FileSystem": "4.3.0",
"System.IO.FileSystem.Primitives": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Runtime.Numerics": "4.3.0",
"System.Security.Cryptography.Algorithms": "4.3.0",
"System.Security.Cryptography.Cng": "4.3.0",
"System.Security.Cryptography.Csp": "4.3.0",
"System.Security.Cryptography.Encoding": "4.3.0",
"System.Security.Cryptography.OpenSsl": "4.3.0",
"System.Security.Cryptography.Primitives": "4.3.0",
"System.Text.Encoding": "4.3.0",
"System.Threading": "4.3.0",
"runtime.native.System": "4.3.0",
"runtime.native.System.Net.Http": "4.3.0",
"runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
}
},
"System.Text.Encoding": {
"type": "Transitive",
"resolved": "4.3.0",
@ -1165,17 +585,6 @@
"System.Runtime": "4.3.0"
}
},
"System.Text.Encoding.Extensions": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "YVMK0Bt/A43RmwizJoZ22ei2nmrhobgeiYwFzC4YAN+nue8RF6djXDMog0UCn+brerQoYVyaS+ghy9P/MUVcmw==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0",
"System.Text.Encoding": "4.3.0"
}
},
"System.Text.Encodings.Web": {
"type": "Transitive",
"resolved": "6.0.0",
@ -1193,14 +602,6 @@
"System.Text.Encodings.Web": "6.0.0"
}
},
"System.Text.RegularExpressions": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "RpT2DA+L660cBt1FssIE9CAGpLFdFPuheB7pLpKpn6ZXNby7jDERe8Ua/Ne2xGiwLVG2JOqziiaVCGDon5sKFA==",
"dependencies": {
"System.Runtime": "4.3.0"
}
},
"System.Threading": {
"type": "Transitive",
"resolved": "4.3.0",
@ -1225,62 +626,11 @@
"resolved": "4.5.4",
"contentHash": "zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg=="
},
"System.Threading.Timer": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "Z6YfyYTCg7lOZjJzBjONJTFKGN9/NIYKSxhU5GRd+DTwHSZyvWp1xuI5aR+dLg+ayyC5Xv57KiY4oJ0tMO89fQ==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
}
},
"System.ValueTuple": {
"type": "Transitive",
"resolved": "4.5.0",
"contentHash": "okurQJO6NRE/apDIP23ajJ0hpiNmJ+f0BwOlB/cSqTLQlw5upkf+5+96+iG2Jw40G1fCVCyPz/FhIABUjMR+RQ=="
},
"System.Xml.ReaderWriter": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "GrprA+Z0RUXaR4N7/eW71j1rgMnEnEVlgii49GZyAjTH7uliMnrOU3HNFBr6fEDBCJCIdlVNq9hHbaDR621XBA==",
"dependencies": {
"System.Collections": "4.3.0",
"System.Diagnostics.Debug": "4.3.0",
"System.Globalization": "4.3.0",
"System.IO": "4.3.0",
"System.IO.FileSystem": "4.3.0",
"System.IO.FileSystem.Primitives": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Text.Encoding": "4.3.0",
"System.Text.Encoding.Extensions": "4.3.0",
"System.Text.RegularExpressions": "4.3.0",
"System.Threading.Tasks": "4.3.0",
"System.Threading.Tasks.Extensions": "4.3.0"
}
},
"System.Xml.XDocument": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "5zJ0XDxAIg8iy+t4aMnQAu0MqVbqyvfoUVl1yDV61xdo3Vth45oA2FoY4pPkxYAH5f8ixpmTqXeEIya95x0aCQ==",
"dependencies": {
"System.Collections": "4.3.0",
"System.Diagnostics.Debug": "4.3.0",
"System.Diagnostics.Tools": "4.3.0",
"System.Globalization": "4.3.0",
"System.IO": "4.3.0",
"System.Reflection": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Text.Encoding": "4.3.0",
"System.Threading": "4.3.0",
"System.Xml.ReaderWriter": "4.3.0"
}
},
"nncase.codegen": {
"type": "Project",
"dependencies": {
@ -1321,9 +671,6 @@
"nncase.evaluator": {
"type": "Project",
"dependencies": {
"AnyTensorFlow.NET": "[0.70.1, )",
"MagicalTensorflowLib": "[0.0.2, )",
"MagicalTensorflowLibOSX-ARM64": "[0.0.4, )",
"Nncase.Core": "[1.0.0, )",
"OrtKISharp": "[0.0.2, )"
}
@ -1391,29 +738,12 @@
"Nncase.FlatBuffers": "[2.0.0, )"
}
},
"AnyTensorFlow.NET": {
"type": "CentralTransitive",
"requested": "[0.70.1, )",
"resolved": "0.70.1",
"contentHash": "uUXNveJhZuvBue8ixPXKkMwYUeKBeVNVqptNlhmTe+YhIwn6xke1WSg3EfUJrjmmF6xkJtAYhE4H0Ejj/+H0aA==",
"dependencies": {
"MethodBoundaryAspect.Fody": "2.0.144",
"Protobuf.Text": "0.5.0",
"Serilog.Sinks.Console": "4.0.1"
}
},
"Extension.Mathematics": {
"type": "CentralTransitive",
"requested": "[1.2.12, )",
"resolved": "1.2.12",
"contentHash": "D4mn5Cab4ztPLJ0V8uMErDrO/Y61098nwrvyIOLZymVAYOQcwP1vomVWKbTagf1aPU3cX5Q7adZtQEQwOy6XEg=="
},
"Fody": {
"type": "CentralTransitive",
"requested": "[6.6.4, )",
"resolved": "6.0.5",
"contentHash": "xfz4NwIIPs2xtfvpPlXz49cHYPeWBl/bnvlpW6OSpxKFAujAm7vLQ8Ma7aX3GYVjc/czn5+58QNUnDyb4gxiKA=="
},
"GiGraph.Dot": {
"type": "CentralTransitive",
"requested": "[2.0.0, )",
@ -1444,28 +774,6 @@
"System.ValueTuple": "4.5.0"
}
},
"MagicalTensorflowLib": {
"type": "CentralTransitive",
"requested": "[0.0.2, )",
"resolved": "0.0.2",
"contentHash": "77rldBcc11n69dhtdbJUw3aDxBfVkr5a5raA5gY7sRrDbgJ00/4whx3XLnhn6uBzRsKlpm6jDdYG2fcDUZPfkQ=="
},
"MagicalTensorflowLibOSX-ARM64": {
"type": "CentralTransitive",
"requested": "[0.0.4, )",
"resolved": "0.0.4",
"contentHash": "nycg8x7AMPaQrjF0vvwhL6idLLb/IWIMad7UbEO0btIz6dyNIZI3drYefSM8pzV5lOweoyj0zDr98YfsxbxG8Q=="
},
"MethodBoundaryAspect.Fody": {
"type": "CentralTransitive",
"requested": "[2.0.148, )",
"resolved": "2.0.144",
"contentHash": "L4r4Dt+Q9/pwp1aAGn94V5PmcTa0nygJE1PXrCIHSiFaVA/vhDuo6I1qQCU9J7VF0V/HNcM8sI17gJiTNz8FXQ==",
"dependencies": {
"Fody": "6.0.5",
"NETStandard.Library": "1.6.1"
}
},
"Microsoft.Extensions.Hosting.Abstractions": {
"type": "CentralTransitive",
"requested": "[6.0.0, )",

View File

@ -15,7 +15,6 @@ using Nncase.Diagnostics;
using Nncase.IR;
using Nncase.PatternMatch;
using Nncase.Utilities;
using Tensorflow;
namespace Nncase.Passes;

File diff suppressed because it is too large Load Diff

View File

@ -30,11 +30,6 @@ public static class EvaluateContextExtensions
var tensor = context.GetArgumentValue(op, parameter).AsTensor().Cast<long>();
return tensor.Shape.IsScalar ? tensor.ScalarToOrtTensor() : tensor.ToOrtTensor();
}
public static Tensorflow.Tensor GetTFArgumentValue(this IEvaluateContext context, Op op, ParameterInfo parameter)
{
return context.GetArgumentValue(op, parameter).AsTensor().ToTFTensor();
}
}
/// <summary>

View File

@ -12,7 +12,6 @@ using NetFabric.Hyperlinq;
using Nncase.Diagnostics;
using Nncase.IR;
using Nncase.TIR;
using Tensorflow.Contexts;
namespace Nncase.Evaluator;

View File

@ -1,98 +0,0 @@
// Copyright (c) Canaan Inc. All rights reserved.
// Licensed under the Apache license. See LICENSE file in the project root for full license information.
using System;
using System.Buffers;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using Google.Protobuf.WellKnownTypes;
using NetFabric.Hyperlinq;
using Nncase.IR;
using Tensorflow;
using Tensorflow.NumPy;
using static Tensorflow.c_api;
using Shape = Tensorflow.Shape;
namespace Nncase.Evaluator;
/// <summary>
/// TensorFlow extension.
/// </summary>
public static class TensorflowExtension
{
private static readonly Dictionary<DataType, TF_DataType> _dataTypesToTorchType = new()
{
{ DataTypes.Boolean, TF_DataType.TF_BOOL },
{ DataTypes.Int8, TF_DataType.TF_INT8 },
{ DataTypes.Int16, TF_DataType.TF_INT16 },
{ DataTypes.Int32, TF_DataType.TF_INT32 },
{ DataTypes.Int64, TF_DataType.TF_INT64 },
{ DataTypes.UInt8, TF_DataType.TF_UINT8 },
{ DataTypes.Float16, TF_DataType.TF_HALF },
{ DataTypes.BFloat16, TF_DataType.TF_BFLOAT16 },
{ DataTypes.Float32, TF_DataType.TF_FLOAT },
{ DataTypes.Float64, TF_DataType.TF_DOUBLE },
};
private static readonly Dictionary<TF_DataType, DataType> _TorchTypeTodataTypes = new()
{
{ TF_DataType.TF_BOOL, DataTypes.Boolean },
{ TF_DataType.TF_INT8, DataTypes.Int8 },
{ TF_DataType.TF_INT16, DataTypes.Int16 },
{ TF_DataType.TF_INT32, DataTypes.Int32 },
{ TF_DataType.TF_INT64, DataTypes.Int64 },
{ TF_DataType.TF_UINT8, DataTypes.UInt8 },
{ TF_DataType.TF_HALF, DataTypes.Float16 },
{ TF_DataType.TF_BFLOAT16, DataTypes.BFloat16 },
{ TF_DataType.TF_FLOAT, DataTypes.Float32 },
{ TF_DataType.TF_DOUBLE, DataTypes.Float64 },
};
/// <summary>
/// Convert <see cref="Tensorflow.Tensor"/> to <see cref="Tensor"/>.
/// </summary>
/// <param name="tensor">Tensorflow tensor.</param>
/// <returns>Converted tensor.</returns>
public static Tensor ToTensor(this Tensorflow.Tensor tensor)
{
var memory = tensor.BufferToArray().AsMemory();
return Tensor.FromBytes(ToDataType(tensor.dtype), memory, tensor.shape.as_int_list());
}
/// <summary>
/// Convert <see cref="Tensorflow.Tensor"/> to <see cref="TensorValue"/>.
/// </summary>
/// <param name="tensor">Tensorflow tensor.</param>
/// <returns>Converted value.</returns>
public static TensorValue ToValue(this Tensorflow.Tensor tensor)
{
return tensor.ToTensor();
}
/// <summary>
/// Convert <see cref="Tensor"/> to <see cref="Tensorflow.Tensor"/>.
/// </summary>
/// <param name="tensor">Tensor.</param>
/// <returns>Converted torch tensor.</returns>
public static unsafe Tensorflow.Tensor ToTFTensor(this Tensor tensor)
{
// TODO: Fix null reference exception
#if false
var dtype = tensor.ElementType.ToTFType();
var bufferHandle = tensor.PinBuffer();
c_api.Deallocator deallocator = (IntPtr data, IntPtr size, ref c_api.DeallocatorArgs args) =>
{
bufferHandle.Dispose();
};
var handle = c_api.TF_NewTensor(dtype, tensor.Dimensions.ToLongs(), tensor.Rank, (IntPtr)bufferHandle.Pointer, (ulong)tensor.Length * (ulong)tensor.ElementType.SizeInBytes, deallocator, (IntPtr)_deallocatorArgs);
return new Tensorflow.Tensor(handle);
#else
return new NDArray(tensor.BytesBuffer.ToArray(), tensor.Dimensions.ToArray(), tensor.ElementType.ToTFType());
#endif
}
public static TF_DataType ToTFType(this DataType dt) => _dataTypesToTorchType[dt];
public static DataType ToDataType(this TF_DataType dt) => _TorchTypeTodataTypes[dt];
}

View File

@ -1,2 +0,0 @@
// Copyright (c) Canaan Inc. All rights reserved.
// Licensed under the Apache license. See LICENSE file in the project root for full license information.

View File

@ -4,18 +4,15 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using NetFabric.Hyperlinq;
using Nncase.CostModel;
using Nncase.IR;
using Nncase.IR.Imaging;
using Nncase.IR.Tensors;
using OrtKISharp;
using Tensorflow;
using Tensorflow.NumPy;
using static Nncase.PatternMatch.F.Math;
using static Nncase.PatternMatch.Utility;
using static Tensorflow.Binding;
namespace Nncase.Evaluator.Imaging;
@ -27,54 +24,7 @@ public class ResizeImageEvaluator : IEvaluator<ResizeImage>, ITypeInferencer<Res
/// <inheritdoc/>
public IValue Visit(IEvaluateContext context, ResizeImage target)
{
return target.IsTFResize
? TFResize(context, target)
: OnnxResize(context, target);
}
public IValue TFResize(IEvaluateContext context, ResizeImage target)
{
var input = context.GetTFArgumentValue(target, ResizeImage.Input);
// when HasBindedMixQuantInfo is true, eval will do simulation of quant/dequant for some inputs, this is used for evaluate accumulated quant error for layers.
if (context.CurrentCall.EnodeBestQuantConfigWithCosine != null)
{
var pattern = IsRangeOfMarker(IsWildcard(), IsWildcard());
if (pattern.MatchLeaf(context.CurrentCall.Arguments.ToArray()[0]) && ((Nncase.IR.Marker)context.CurrentCall.Arguments.ToArray()[0]).MixQuantInfo?.HasBindedMixQuantInfo == true)
{
var quantParam = ((Nncase.IR.Marker)context.CurrentCall.Arguments.ToArray()[0]).MixQuantInfo!.QuantParameter;
// input feature map quantParam count should be 1 since input feature map quant is by tensor.
Trace.Assert(quantParam.Count == 1);
var inputFloat = input.ToArray<float>();
for (var i = 0; i < inputFloat.Length; i++)
{
var inputBufQuant = (double)((inputFloat[i] / (double)quantParam[0].Scale) + quantParam[0].ZeroPoint);
if (!(quantParam[0].Scale == 1.0f && quantParam[0].ZeroPoint == 0))
{
inputBufQuant = System.Math.Round((double)(float)inputBufQuant);
}
var inputBufDeQuant = (float)((inputBufQuant - quantParam[0].ZeroPoint) * (double)quantParam[0].Scale);
inputFloat[i] = (float)inputBufDeQuant;
}
input = tf.constant(inputFloat, TF_DataType.TF_FLOAT, input.shape);
}
}
input = tf.transpose(input, new[] { 0, 2, 3, 1 });
var sizes = context.GetArgumentValueAsArray<int>(target, ResizeImage.NewSize);
var halfPixelCenter = target.TransformationMode == ImageResizeTransformationMode.HalfPixel;
var alignCorners = target.TransformationMode == ImageResizeTransformationMode.AlignCorners;
var size = new NDArray(new[] { sizes[2], sizes[3] }, new[] { 2 });
var output = target.ResizeMode switch
{
ImageResizeMode.Bilinear => tf.image.resize_bilinear(input, size, alignCorners, halfPixelCenter),
ImageResizeMode.NearestNeighbor => tf.image.resize_nearest_neighbor(input, size, alignCorners, string.Empty, halfPixelCenter),
_ => throw new NotSupportedException($"TFResize Not suppoprted {target.ResizeMode}"),
};
return tf.transpose(output, new[] { 0, 3, 1, 2 }).ToValue();
return OnnxResize(context, target);
}
public IValue OnnxResize(IEvaluateContext context, ResizeImage target)
@ -82,7 +32,7 @@ public class ResizeImageEvaluator : IEvaluator<ResizeImage>, ITypeInferencer<Res
var input = context.GetOrtArgumentValue(target, ResizeImage.Input);
var roi = context.GetOptionalOrtArgumentValue(target, ResizeImage.Roi, Array.Empty<float>());
var sizes = context.GetInt64OrtTensorArgumentValue(target, ResizeImage.NewSize);
var cubicCoeffA = context.GetOptionArgumentValueAsScalar<float>(target, ResizeImage.CubicCoeffA, -0.75f);
var cubicCoeffA = context.GetOptionArgumentValueAsScalar<float>(target, ResizeImage.CubicCoeffA, target.IsTFResize ? -0.5f : -0.75f);
var excludeOutside = context.GetOptionArgumentValueAsScalar<long>(target, ResizeImage.ExcludeOutside, 0);
var extrapolationValue = context.GetOptionArgumentValueAsScalar<float>(target, ResizeImage.ExtrapolationValue, 0f);
@ -113,16 +63,48 @@ public class ResizeImageEvaluator : IEvaluator<ResizeImage>, ITypeInferencer<Res
}
}
return OrtKI.ResizeWithSizes(
input,
roi,
sizes,
ResizeModeHelper.ToString(target.TransformationMode),
cubicCoeffA,
excludeOutside,
extrapolationValue,
ResizeModeHelper.ToString(target.ResizeMode),
ResizeModeHelper.ToString(target.NearestMode)).ToValue();
if (target.IsTFResize)
{
var transformationMode = "asymmetric";
var nearestMode = "floor";
if (target.TransformationMode == ImageResizeTransformationMode.AlignCorners)
{
transformationMode = "align_corners";
nearestMode = "round_prefer_ceil";
}
else if (target.TransformationMode == ImageResizeTransformationMode.HalfPixel)
{
transformationMode = target.ResizeMode switch
{
ImageResizeMode.NearestNeighbor => "tf_half_pixel_for_nn",
_ => "half_pixel",
};
}
return OrtKI.ResizeWithSizes(
input,
roi.Cast(OrtDataType.Float),
sizes,
transformationMode,
cubicCoeffA,
excludeOutside,
extrapolationValue,
ResizeModeHelper.ToString(target.ResizeMode),
nearestMode).ToValue();
}
else
{
return OrtKI.ResizeWithSizes(
input,
roi,
sizes,
ResizeModeHelper.ToString(target.TransformationMode),
cubicCoeffA,
excludeOutside,
extrapolationValue,
ResizeModeHelper.ToString(target.ResizeMode),
ResizeModeHelper.ToString(target.NearestMode)).ToValue();
}
}
/// <inheritdoc/>

View File

@ -6,7 +6,6 @@ using Nncase.CostModel;
using Nncase.IR;
using Nncase.IR.Math;
using OrtKISharp;
using Tensorflow;
namespace Nncase.Evaluator.Math;

View File

@ -3,14 +3,10 @@
using System;
using System.Linq;
using NetFabric.Hyperlinq;
using Nncase.CostModel;
using Nncase.IR;
using Nncase.IR.NN;
using OrtKISharp;
using Tensorflow;
using Tensorflow.NumPy;
using static Tensorflow.Binding;
namespace Nncase.Evaluator.NN;
@ -22,9 +18,7 @@ public class OneHotEvaluator : IEvaluator<OneHot>, ITypeInferencer<OneHot>, ICos
/// <inheritdoc/>
public IValue Visit(IEvaluateContext context, OneHot oneHot)
{
return oneHot.OneHotMode == OneHotMode.ProcessNeg
? OnnxOneHot(context, oneHot)
: TFOneHot(context, oneHot);
return OnnxOneHot(context, oneHot);
}
/// <inheritdoc/>
@ -45,57 +39,23 @@ public class OneHotEvaluator : IEvaluator<OneHot>, ITypeInferencer<OneHot>, ICos
};
}
private static IValue TF_OneHot(
Tensorflow.Tensor indices,
Tensorflow.Tensor depth,
Tensorflow.Tensor on_value,
Tensorflow.Tensor off_value,
TF_DataType dtype = TF_DataType.DtInvalid,
int axis = -1,
string name = "")
{
return tf_with(
ops.name_scope(name, nameof(TF_OneHot), new
{
indices,
depth,
dtype,
}),
scope =>
{
if (dtype == TF_DataType.DtInvalid)
{
dtype = TF_DataType.TF_FLOAT;
}
on_value = ops.convert_to_tensor(on_value, dtype, nameof(on_value));
off_value = ops.convert_to_tensor(off_value, dtype, name = nameof(off_value));
return gen_array_ops.one_hot(indices, depth, on_value, off_value, axis: axis, name: name);
}).ToValue();
}
private IValue OnnxOneHot(IEvaluateContext context, OneHot oneHot)
{
var indices = context.GetArgumentValueAsTensor<long>(oneHot, OneHot.Indices);
var indices = context.GetArgumentValueAsTensor<long>(oneHot, OneHot.Indices).ToOrtTensor();
var depth = context.GetInt64OrtTensorArgumentValue(oneHot, OneHot.Depth);
var values = context.GetOrtArgumentValue(oneHot, OneHot.Values);
var values = context.GetArgumentValueAsTensor(oneHot, OneHot.Values);
var axis = context.GetArgumentValueAsScalar<long>(oneHot, OneHot.Axis);
return OrtKI.OneHot(indices.ToOrtTensor(), depth, values, axis).ToValue();
}
private IValue TFOneHot(IEvaluateContext context, OneHot oneHot)
{
var depth = context.GetArgumentValueAsScalar<int>(oneHot, OneHot.Depth);
var indices = context.GetTFArgumentValue(oneHot, OneHot.Indices);
var values = context.GetTFArgumentValue(oneHot, OneHot.Values);
var axis = context.GetArgumentValueAsScalar<int>(oneHot, OneHot.Axis);
return TF_OneHot(
indices,
ops.convert_to_tensor(depth),
values[1],
values[0],
TF_DataType.TF_FLOAT,
axis);
var onnxValues = values.ElementType == DataTypes.Float32 ? values.ToOrtTensor()
: values.Cast<float>().ToOrtTensor();
// Set negative indices to depth + 1.
if (oneHot.OneHotMode == OneHotMode.Normal)
{
indices = OrtKI.Where(OrtKI.Less(indices, 0L), depth, indices);
}
return new TensorValue(OrtKI.OneHot(indices, depth, onnxValues, axis).ToTensor().CastTo(values.ElementType));
}
private IRType Visit(ITypeInferenceContext context, OneHot target, TensorType indices, TensorType values)

View File

@ -2,19 +2,16 @@
// Licensed under the Apache license. See LICENSE file in the project root for full license information.
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using NetFabric.Hyperlinq;
using Nncase.CostModel;
using Nncase.IR;
using Nncase.IR.NN;
using OrtKISharp;
using Tensorflow;
using Tensorflow.NumPy;
using static Nncase.Evaluator.EvaluatorUtil;
using static Nncase.PatternMatch.F.Math;
using static Nncase.PatternMatch.Utility;
using static Tensorflow.Binding;
namespace Nncase.Evaluator.NN;
@ -29,16 +26,12 @@ public class PadEvaluator : IEvaluator<Pad>, ITypeInferencer<Pad>, ICostEvaluato
var input = context.GetOrtArgumentValue(pad, Pad.Input);
var pads = context.GetInt64OrtTensorArgumentValue(pad, Pad.Pads);
var constValue = context.GetOrtArgumentValue(pad, Pad.Value);
if (pad.PadMode == PadMode.Symmetric)
{
var result = SymmetricPad(context, pad);
return result;
}
var mode = pad.PadMode switch
{
PadMode.Constant => "constant",
PadMode.Reflect => "reflect",
PadMode.Symmetric => "reflect",
PadMode.Edge => "edge",
_ => throw new ArgumentOutOfRangeException(nameof(pad)),
};
@ -70,47 +63,14 @@ public class PadEvaluator : IEvaluator<Pad>, ITypeInferencer<Pad>, ICostEvaluato
}
}
return OrtKI.Pad(input, ToOnnxPadFormat(pads), constValue, mode).ToValue();
}
public IValue SymmetricPad(IEvaluateContext context, Pad pad)
{
var input = context.GetTFArgumentValue(pad, Pad.Input);
var pads = context.GetTFArgumentValue(pad, Pad.Pads);
var mode = "SYMMETRIC";
// when HasBindedMixQuantInfo is true, eval will do simulation of quant/dequant for some inputs, this is used for evaluate accumulated quant error for layers.
if (context.CurrentCall.EnodeBestQuantConfigWithCosine != null)
if (pad.PadMode == PadMode.Symmetric)
{
var pattern = IsRangeOfMarker(IsWildcard(), IsWildcard());
if (pattern.MatchLeaf(context.CurrentCall.Arguments.ToArray()[0]) && ((Nncase.IR.Marker)context.CurrentCall.Arguments.ToArray()[0]).MixQuantInfo?.HasBindedMixQuantInfo == true)
{
var quantParam = ((Nncase.IR.Marker)context.CurrentCall.Arguments.ToArray()[0]).MixQuantInfo!.QuantParameter;
// input feature map quantParam count should be 1 since input feature map quant is by tensor.
Trace.Assert(quantParam.Count == 1);
var inputFloat = input.ToArray<float>();
for (var i = 0; i < inputFloat.Length; i++)
{
var inputBufQuant = (double)((inputFloat[i] / (double)quantParam[0].Scale) + quantParam[0].ZeroPoint);
if (!(quantParam[0].Scale == 1.0f && quantParam[0].ZeroPoint == 0))
{
inputBufQuant = System.Math.Round((double)(float)inputBufQuant);
}
var inputBufDeQuant = (float)((inputBufQuant - quantParam[0].ZeroPoint) * (double)quantParam[0].Scale);
inputFloat[i] = (float)inputBufDeQuant;
}
input = tf.constant(inputFloat, TF_DataType.TF_FLOAT, input.shape);
}
return SymmetricPad(input, ToOnnxPadFormat(pads), constValue).ToValue();
}
else
{
return OrtKI.Pad(input, ToOnnxPadFormat(pads), constValue, mode).ToValue();
}
var result = tf.Context.ExecuteOp(
"MirrorPad",
null!,
new ExecuteOpArgs(input, pads).SetAttributes(new { mode }))[0];
return result.ToValue();
}
/// <inheritdoc/>
@ -134,4 +94,35 @@ public class PadEvaluator : IEvaluator<Pad>, ITypeInferencer<Pad>, ICostEvaluato
[CostFactorNames.MemoryStore] = outputType is TensorType outT ? CostUtility.GetMemoryAccess(outT) : CostUtility.GetMemoryAccess(inputType),
};
}
private OrtKISharp.Tensor SymmetricPad(OrtKISharp.Tensor input, long[] pads, OrtKISharp.Tensor constValue)
{
// Currently there isn't a symmetric padding mode in ONNX so we add a dummy row then use the reflect mode
// and remove the dummy row with compress.Ex: 1234-> 012340-> 2101234043-> 21123443.Only do this to
// dims with non - zero pads(if pads are constant)
var rank = input.Rank;
var nonZeroAxes = new List<int>();
var incPads = new long[rank * 2];
for (int i = 0; i < rank; i++)
{
if (pads[i] != 0 || pads[i + rank] != 0)
{
nonZeroAxes.Add(i);
incPads[i] = 1;
incPads[i + rank] = 1;
}
}
var paddedInput = OrtKI.Pad(input, incPads, constValue, "constant");
var output = OrtKI.Pad(paddedInput, pads, constValue, "reflect");
foreach (var axis in nonZeroAxes)
{
var originLen = (int)input.Shape[axis];
var leftPad = (int)pads[axis];
var indices = Enumerable.Range(0, leftPad).Concat(Enumerable.Range(leftPad + 1, originLen)).Concat(Enumerable.Range(leftPad + originLen + 2, (int)pads[axis + rank])).ToArray();
output = OrtKI.Gather(output, indices, axis);
}
return output;
}
}

View File

@ -7,9 +7,6 @@
<ItemGroup>
<PackageReference Include="OrtKISharp" />
<PackageReference Include="MagicalTensorflowLib" />
<PackageReference Include="MagicalTensorflowLibOSX-ARM64" />
<PackageReference Include="AnyTensorFlow.NET" />
</ItemGroup>
<ItemGroup>

View File

@ -9,11 +9,8 @@ using Nncase.CostModel;
using Nncase.IR;
using Nncase.IR.Tensors;
using OrtKISharp;
using Tensorflow;
using Tensorflow.NumPy;
using static Nncase.PatternMatch.F.Math;
using static Nncase.PatternMatch.Utility;
using static Tensorflow.Binding;
namespace Nncase.Evaluator.Tensors;

File diff suppressed because it is too large Load Diff

View File

@ -14,7 +14,6 @@ using System.Text.RegularExpressions;
using System.Threading.Tasks;
using Nncase.IR;
using Nncase.Utilities;
using Tensorflow.Contexts;
namespace Nncase.PatternMatch;

File diff suppressed because it is too large Load Diff

View File

@ -11,7 +11,6 @@ using Nncase.IR.Math;
using Nncase.IR.NN;
using Nncase.Passes.Analysis;
using Nncase.PatternMatch;
using Tensorflow;
using static Nncase.IR.F.Math;
using static Nncase.IR.F.NN;
using static Nncase.IR.F.Tensors;

View File

@ -13,7 +13,6 @@ using Nncase.IR.NN;
using Nncase.IR.Tensors;
using Nncase.PatternMatch;
using Nncase.Utilities;
using Tensorflow;
using static Nncase.IR.F.Math;
using static Nncase.IR.F.NN;
using static Nncase.IR.F.Tensors;

View File

@ -10,7 +10,6 @@ using Nncase.IR;
using Nncase.IR.Math;
using Nncase.IR.NN;
using Nncase.PatternMatch;
using Tensorflow;
using static Nncase.IR.F.Math;
using static Nncase.IR.F.NN;
using static Nncase.IR.F.Tensors;

View File

@ -12,7 +12,6 @@ using Nncase.IR.Math;
using Nncase.IR.Tensors;
using Nncase.PatternMatch;
using Nncase.Utilities;
using Tensorflow;
using static Nncase.IR.F.Math;
using static Nncase.IR.F.Tensors;
using static Nncase.IR.TypePatternUtility;

View File

@ -4,7 +4,6 @@
using Nncase.IR;
using Nncase.IR.Math;
using Nncase.PatternMatch;
using Tensorflow.Operations.Activation;
using static Nncase.PatternMatch.F.Math;
using static Nncase.PatternMatch.F.NN;
using static Nncase.PatternMatch.Utility;

View File

@ -5,11 +5,9 @@ using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Linq;
using NetFabric.Hyperlinq;
using Nncase.IR;
using Nncase.IR.NN;
using Nncase.PatternMatch;
using Tensorflow;
using static Nncase.IR.F.NN;
using static Nncase.IR.F.Tensors;
using static Nncase.PatternMatch.F.NN;

View File

@ -8,7 +8,6 @@ using System.Linq;
using Nncase.IR;
using Nncase.IR.Tensors;
using Nncase.PatternMatch;
using Tensorflow;
using static Nncase.IR.F.NN;
using static Nncase.IR.F.Tensors;
using static Nncase.IR.TypePatternUtility;

View File

@ -7,7 +7,6 @@ using System.Collections.Immutable;
using System.Linq;
using Nncase.IR;
using Nncase.PatternMatch;
using Tensorflow;
using static Nncase.IR.F.NN;
using static Nncase.IR.F.Tensors;
using static Nncase.IR.TypePatternUtility;

View File

@ -12,7 +12,6 @@ using Nncase.IR.Math;
using Nncase.IR.NN;
using Nncase.IR.Tensors;
using Nncase.PatternMatch;
using Tensorflow;
using static Nncase.IR.F.Tensors;
using static Nncase.IR.TypePatternUtility;
using static Nncase.PatternMatch.F.Math;

File diff suppressed because it is too large Load Diff

View File

@ -8,7 +8,6 @@ using System.Text;
using System.Threading.Tasks;
using Nncase.Evaluator;
using Nncase.Passes;
using Tensorflow;
namespace Nncase.Quantization;

View File

@ -8,7 +8,6 @@ using System.Text;
using System.Threading.Tasks;
using Nncase.Evaluator;
using Nncase.Passes;
using Tensorflow;
namespace Nncase.Quantization;

View File

@ -8,7 +8,6 @@ using System.Text;
using System.Threading.Tasks;
using Nncase.Evaluator;
using Nncase.Passes;
using Tensorflow;
namespace Nncase.Quantization;

File diff suppressed because it is too large Load Diff

View File

@ -3,7 +3,6 @@
using Nncase.IR;
using Nncase.Utilities;
using static Tensorflow.tensorflow;
namespace Nncase.Tests;

View File

@ -262,14 +262,6 @@
"System.Xml.XDocument": "4.0.11"
}
},
"Protobuf.Text": {
"type": "Transitive",
"resolved": "0.5.0",
"contentHash": "GVu3Y7hyybXv8nmKp9HtSzj1g0+rmNSZ4brM5t0auqpwYFYi5lL02UX9Nu9355DgPQbALLWUnjx+h2PttUNieg==",
"dependencies": {
"Google.Protobuf": "3.11.3"
}
},
"runtime.native.System": {
"type": "Transitive",
"resolved": "4.0.0",
@ -306,19 +298,6 @@
"Microsoft.NETCore.Targets": "1.0.1"
}
},
"Serilog": {
"type": "Transitive",
"resolved": "2.10.0",
"contentHash": "+QX0hmf37a0/OZLxM3wL7V6/ADvC1XihXN4Kq/p6d8lCPfgkRdiuhbWlMaFjR9Av0dy5F0+MBeDmDdRZN/YwQA=="
},
"Serilog.Sinks.Console": {
"type": "Transitive",
"resolved": "4.0.1",
"contentHash": "apLOvSJQLlIbKlbx+Y2UDHSP05kJsV7mou+fvJoRGs/iR+jC22r8cuFVMjjfVxz/AD4B2UCltFhE1naRLXwKNw==",
"dependencies": {
"Serilog": "2.10.0"
}
},
"StyleCop.Analyzers.Unstable": {
"type": "Transitive",
"resolved": "1.2.0.435",
@ -1101,9 +1080,6 @@
"nncase.evaluator": {
"type": "Project",
"dependencies": {
"AnyTensorFlow.NET": "[0.70.1, )",
"MagicalTensorflowLib": "[0.0.2, )",
"MagicalTensorflowLibOSX-ARM64": "[0.0.4, )",
"Nncase.Core": "[1.0.0, )",
"OrtKISharp": "[0.0.2, )"
}
@ -1140,17 +1116,6 @@
"Nncase.Core": "[1.0.0, )"
}
},
"AnyTensorFlow.NET": {
"type": "CentralTransitive",
"requested": "[0.70.1, )",
"resolved": "0.70.1",
"contentHash": "uUXNveJhZuvBue8ixPXKkMwYUeKBeVNVqptNlhmTe+YhIwn6xke1WSg3EfUJrjmmF6xkJtAYhE4H0Ejj/+H0aA==",
"dependencies": {
"MethodBoundaryAspect.Fody": "2.0.144",
"Protobuf.Text": "0.5.0",
"Serilog.Sinks.Console": "4.0.1"
}
},
"DryIoc.dll": {
"type": "CentralTransitive",
"requested": "[5.3.1, )",
@ -1169,27 +1134,6 @@
"resolved": "2.0.0",
"contentHash": "ThvS2mQVveSkTMUm04tMbRYzu1XFPV8xBHISrUMp02APjhv9IRbLu3v3upTPCywORx2Ds/c6AqEUL1WU6kPfuQ=="
},
"Google.Protobuf": {
"type": "CentralTransitive",
"requested": "[3.19.4, )",
"resolved": "3.11.3",
"contentHash": "PNbDbGVo75AHZYLlIFjtEbxcZ2x5VxbOihix8oz0YXJ9hf1unDwZ2tOolRQLr6UqLAVC+MedOFnYLCBj+BrZwA==",
"dependencies": {
"System.Memory": "4.5.2"
}
},
"MagicalTensorflowLib": {
"type": "CentralTransitive",
"requested": "[0.0.2, )",
"resolved": "0.0.2",
"contentHash": "77rldBcc11n69dhtdbJUw3aDxBfVkr5a5raA5gY7sRrDbgJ00/4whx3XLnhn6uBzRsKlpm6jDdYG2fcDUZPfkQ=="
},
"MagicalTensorflowLibOSX-ARM64": {
"type": "CentralTransitive",
"requested": "[0.0.4, )",
"resolved": "0.0.4",
"contentHash": "nycg8x7AMPaQrjF0vvwhL6idLLb/IWIMad7UbEO0btIz6dyNIZI3drYefSM8pzV5lOweoyj0zDr98YfsxbxG8Q=="
},
"Microsoft.Extensions.Hosting": {
"type": "CentralTransitive",
"requested": "[6.0.0, )",

View File

@ -420,7 +420,7 @@ public class UnitTestEvaluatorNN : TestClassBase
var a = new int[] { 1, 2, 0, 3 };
var indices = Tensor.From(a, new[] { 4 });
var depth = 5;
var values = Tensor.From(new int[] { 0, 1 }, new Shape(new[] { 2 }));
var values = Tensor.From(new float[] { 0, 1 }, new Shape(new[] { 2 }));
var axis = 0L;
var b = new float[] { 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 };

View File

@ -2,7 +2,7 @@
"profiles": {
"Nncase.Tests": {
"commandName": "Project",
"nativeDebugging": false
"nativeDebugging": true
}
}
}

View File

@ -15,7 +15,6 @@ using Nncase.IR.Tensors;
using Nncase.Passes;
using Nncase.Passes.Rules.Neutral;
using Nncase.PatternMatch;
using Tensorflow;
using Xunit;
using static Nncase.IR.F.NN;
using ITuple = Nncase.IR.ITuple;

View File

@ -13,7 +13,6 @@ using Nncase.Passes;
using Nncase.Passes.Rules.Neutral;
using Nncase.PatternMatch;
using Nncase.Tests.TestFixture;
using Tensorflow.Sessions;
using Xunit;
using static Nncase.IR.F.NN;
using Math = Nncase.IR.F.Math;

View File

@ -13,7 +13,6 @@ using Nncase.Passes;
using Nncase.Passes.Rules.Neutral;
using Nncase.PatternMatch;
using Nncase.Tests.TestFixture;
using Tensorflow.Sessions;
using Xunit;
using static Nncase.IR.F.NN;
using Math = Nncase.IR.F.Math;

View File

@ -15,7 +15,6 @@ using Nncase.IR.Tensors;
using Nncase.Passes;
using Nncase.Passes.Rules.Neutral;
using Nncase.PatternMatch;
using Tensorflow;
using Xunit;
using static Nncase.IR.F.NN;
using ITuple = Nncase.IR.ITuple;

View File

@ -11,7 +11,6 @@ using System.Threading.Tasks;
using Nncase.IR;
using Nncase.Passes;
using Nncase.Passes.Rules.Neutral;
using Tensorflow;
using Xunit;
using Dimension = Nncase.IR.Dimension;
using Math = Nncase.IR.F.Math;

View File

@ -10,7 +10,6 @@ using System.Text;
using System.Threading.Tasks;
using Nncase.Passes;
using Nncase.Passes.Rules.Neutral;
using Tensorflow;
using Xunit;
using Math = Nncase.IR.F.Math;
using Random = Nncase.IR.F.Random;

View File

@ -14,7 +14,6 @@ using Nncase.IR.Math;
using Nncase.IR.NN;
using Nncase.Passes;
using Nncase.Passes.Rules.Neutral;
using Tensorflow.Operations.Initializers;
using Xunit;
using Math = Nncase.IR.F.Math;
using Random = Nncase.IR.F.Random;

View File

@ -13,7 +13,6 @@ using Nncase.IR.F;
using Nncase.Passes;
using Nncase.Passes.Rules.Neutral;
using Nncase.Tests.TestFixture;
using Tensorflow.Sessions;
using Xunit;
using Math = Nncase.IR.F.Math;
using Random = Nncase.IR.F.Random;

View File

@ -16,7 +16,6 @@ using Nncase.IR.Tensors;
using Nncase.Passes.Rules.Neutral;
using Nncase.Passes.Transforms;
using Nncase.Tests.TestFixture;
using Tensorflow.Operations.Initializers;
using Xunit;
using Math = Nncase.IR.F.Math;
using Random = Nncase.IR.F.Random;

View File

@ -14,7 +14,6 @@ using Nncase.IR.Math;
using Nncase.IR.NN;
using Nncase.Passes;
using Nncase.Passes.Rules.Neutral;
using Tensorflow.Operations.Initializers;
using Xunit;
using Math = Nncase.IR.F.Math;
using Random = Nncase.IR.F.Random;

View File

@ -10,7 +10,6 @@ using System.Text;
using System.Threading.Tasks;
using Nncase.Passes;
using Nncase.Passes.Rules.Neutral;
using Tensorflow;
using Xunit;
using Math = Nncase.IR.F.Math;
using Random = Nncase.IR.F.Random;

View File

@ -13,7 +13,6 @@ using Nncase.Passes;
using Nncase.Passes.Rules.Neutral;
using Nncase.PatternMatch;
using Nncase.Tests.TestFixture;
using Tensorflow.Sessions;
using Xunit;
using static Nncase.IR.F.NN;
using Math = Nncase.IR.F.Math;

View File

@ -12,7 +12,6 @@ using Nncase.Diagnostics;
using Nncase.Passes;
using Nncase.Passes.Rules.Neutral;
using Nncase.Tests.TestFixture;
using Tensorflow;
using Xunit;
using Math = Nncase.IR.F.Math;
using Random = Nncase.IR.F.Random;

View File

@ -10,7 +10,6 @@ using System.Text;
using System.Threading.Tasks;
using Nncase.Passes;
using Nncase.Passes.Rules.Neutral;
using Tensorflow;
using Xunit;
using Math = Nncase.IR.F.Math;
using Random = Nncase.IR.F.Random;

View File

@ -515,14 +515,6 @@
"resolved": "5.0.0",
"contentHash": "c5JVjuVAm4f7E9Vj+v09Z9s2ZsqFDjBpcsyS3M9xRo0bEdm/LVZSzLxxNvfvAwRiiE8nwe1h2G4OwiwlzFKXlA=="
},
"Protobuf.Text": {
"type": "Transitive",
"resolved": "0.5.0",
"contentHash": "GVu3Y7hyybXv8nmKp9HtSzj1g0+rmNSZ4brM5t0auqpwYFYi5lL02UX9Nu9355DgPQbALLWUnjx+h2PttUNieg==",
"dependencies": {
"Google.Protobuf": "3.11.3"
}
},
"runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
"type": "Transitive",
"resolved": "4.3.0",
@ -630,19 +622,6 @@
"resolved": "4.3.0",
"contentHash": "VB5cn/7OzUfzdnC8tqAIMQciVLiq2epm2NrAm1E9OjNRyG4lVhfR61SMcLizejzQP8R8Uf/0l5qOIbUEi+RdEg=="
},
"Serilog": {
"type": "Transitive",
"resolved": "2.10.0",
"contentHash": "+QX0hmf37a0/OZLxM3wL7V6/ADvC1XihXN4Kq/p6d8lCPfgkRdiuhbWlMaFjR9Av0dy5F0+MBeDmDdRZN/YwQA=="
},
"Serilog.Sinks.Console": {
"type": "Transitive",
"resolved": "4.0.1",
"contentHash": "apLOvSJQLlIbKlbx+Y2UDHSP05kJsV7mou+fvJoRGs/iR+jC22r8cuFVMjjfVxz/AD4B2UCltFhE1naRLXwKNw==",
"dependencies": {
"Serilog": "2.10.0"
}
},
"StyleCop.Analyzers.Unstable": {
"type": "Transitive",
"resolved": "1.2.0.435",
@ -1504,9 +1483,6 @@
"nncase.evaluator": {
"type": "Project",
"dependencies": {
"AnyTensorFlow.NET": "[0.70.1, )",
"MagicalTensorflowLib": "[0.0.2, )",
"MagicalTensorflowLibOSX-ARM64": "[0.0.4, )",
"Nncase.Core": "[1.0.0, )",
"OrtKISharp": "[0.0.2, )"
}
@ -1589,17 +1565,6 @@
"Nncase.FlatBuffers": "[2.0.0, )"
}
},
"AnyTensorFlow.NET": {
"type": "CentralTransitive",
"requested": "[0.70.1, )",
"resolved": "0.70.1",
"contentHash": "uUXNveJhZuvBue8ixPXKkMwYUeKBeVNVqptNlhmTe+YhIwn6xke1WSg3EfUJrjmmF6xkJtAYhE4H0Ejj/+H0aA==",
"dependencies": {
"MethodBoundaryAspect.Fody": "2.0.144",
"Protobuf.Text": "0.5.0",
"Serilog.Sinks.Console": "4.0.1"
}
},
"DryIoc.dll": {
"type": "CentralTransitive",
"requested": "[5.3.1, )",
@ -1652,18 +1617,6 @@
"System.ValueTuple": "4.5.0"
}
},
"MagicalTensorflowLib": {
"type": "CentralTransitive",
"requested": "[0.0.2, )",
"resolved": "0.0.2",
"contentHash": "77rldBcc11n69dhtdbJUw3aDxBfVkr5a5raA5gY7sRrDbgJ00/4whx3XLnhn6uBzRsKlpm6jDdYG2fcDUZPfkQ=="
},
"MagicalTensorflowLibOSX-ARM64": {
"type": "CentralTransitive",
"requested": "[0.0.4, )",
"resolved": "0.0.4",
"contentHash": "nycg8x7AMPaQrjF0vvwhL6idLLb/IWIMad7UbEO0btIz6dyNIZI3drYefSM8pzV5lOweoyj0zDr98YfsxbxG8Q=="
},
"Microsoft.Extensions.Hosting.Abstractions": {
"type": "CentralTransitive",
"requested": "[6.0.0, )",

View File

@ -18,9 +18,9 @@ import nncase
def test_targets(request):
assert nncase.test_target("cpu")
assert nncase.test_target("k210")
#assert nncase.test_target("vulkan")
assert nncase.check_target("cpu")
#assert nncase.check_target("k210")
#assert nncase.check_target("vulkan")
if __name__ == "__main__":